数学应用-谈谈密码学的数学原理

发表者:Google(谷歌)研究员 吴军

前一阵子看了电视剧《暗算》,蛮喜欢它的构思和里面的表演。其中有一个故事 提到了密码学,故事本身不错,但是有点故弄玄虚。不过有一点是对的,就是当 今的密码学是以为基础的。(没有看过暗算的读者可以看一下介绍, 因为我们后面要多次提到这部电视剧。)

密码学的历史大致可以推早到两千年前,相传名将凯撒为了防止敌方截获情报, 用密码传送情报。凯撒的做法很简单,就是对二十几个罗马字母建立一张对应表, 比如说

这 样,如果不知道密码本,即使截获一段信息也看不懂,比如收到一个的消息 是 EBKTBP,那么在敌人看来是毫无意义的字,通过密码本解破出来就是 CAESAR 一词,即凯撒的名字。这种编码方法史称凯撒大帝。当然,学过信息论的人都知 道,只要多截获一些情报,统计一下字母的频率,就可以解破出这种密码。柯蓝 道尔 在他的“福尔摩斯探案集”中“跳舞的小人”的故事里已经介绍了这种小 技巧。在很长里,人们试图找到一些好的编码方法使得解密者无法从密码中 统计出明码 的统计信息,但是,基本上靠经验。有经验的编码者会把常用的词 对应成多个密码, 使得破译者很难统计出任何规律。比如,如果将汉语中的 “是”一词对应于唯一一个编码 0543,那么破译者就会发现 0543 出现的特别 多。但如果将它对应成十个密码 0543,3737,2947 等等,每次随机的挑一个使 用,每个密码出现的次数就不会太多,而且破译者也无从知道这些密码其实对应 一个字。这里面虽然包含着朴素的概率论的原理,但是并 不科学化。另外,好 的密码必须做到不能根据已知的明文和密文的对应推断出新的密文的内容。历史 上有很多在这方面设计得不周到的密码的例子。在第二次世界大 战中,日本军 方的密码设计就很成。美军破获了日本很多密码。在中途岛海战前,美军截 获的日军密电经常出现 AF 这样一个地名,应该是太平洋的某个岛屿,但是美军

无从知道是哪个。于是,美军就逐个发表自己控制的每个岛屿上的假。当美 军发出“中途岛供水系统坏了” 这条假新闻后,从截获的日军情报中又看到 AF 供水出来的电文,美军就断定中途岛就是 AF。事实证明判断正确,美军在 那里成功地伏击了日本主力舰队。

事实上,在第二次世界大战中,很多顶尖的科学家包括提出信息论的香农都在 为 美军情报部门工作,而信息论实际上就是情报学的直接产物。香农提出信息论后, 为密码学的发展带来了新气象。根据信息论,密码的最高境界是使得敌人在截获 密码后,对我方的所知没有任何增加,用信息论的专业术语讲,就是信息量没有 增加。一般来讲,当密码之间分布均匀并且统计独立时,提供的信息最少。均匀 分布 使得敌人无从统计,而统计独立能保证敌人即使看到一段密码和明码后, 不能破译另一段密码。这也是《暗算》里传统的破译员老陈破译的一份密报后, 但无法推广 的原因,而家黄依依预见到了这个结果,因为她知道敌人新的 密码系统编出的密文是统计独立的。有了信息论后,密码的设计就有了理论基础, 现在通用的公开 密钥的方法,包括《暗算》里的“光复一号”密码,就是基于 这个理论。

公开密钥的原理其实很简单,我们以给上面的单词 Caesar 加解密来说明它的原 理。我们先把它变成一组数,比如它的 Ascii 代码 X=099097101115097114(每 三位代表一个字母)做明码。现在我们来设计一个密码系统,对这个明码加密。

1,找两个很大的素数(质数)P 和 Q,越大越好,比如 100 位长的, 然后计算 它们的乘积 N=P×Q,M=(P-1)×(Q-1)。

2,找一个和 M 互素的整数 E,也就是说 M 和 E 除了 1 以外没有公约数。

3,找一个整数 D,使得 E×D 除以 M 余 1,即 E×D mod M = 1。

现在,世界上先进的、最常用的密码系统就设计好了,其中 E 是公钥谁都可以 用来加密,D 是私钥用于解密,一定要自己保存好。乘积 N 是公开的,即使敌 人知道了也没关系。

现在,我们用下面的公式对 X 加密,得到密码 Y。

好了,现在没有密钥 D,神仙也无法从 Y 中恢复 X。如果知道 D,根据费尔马 小定理,则只要按下面的公式就可以轻而易举地从 Y 中得到 X。

这个过程大致可以概况如下:

公开密钥的好处有:

1.简单。

2. 可靠。公开密钥方法保证产生的密文是统计独立而分布均匀的。也就是说, 不论给出多少份明文和对应的密文,也无法根据已知的明文和密文的对应来破译 下一份密 文。更重要的是 N,E 可以公开给任何人加密用,但是只有掌握密钥 D 的人才可以解密, 即使加密者自己也是无法解密的。这样,即使加密者被抓住叛 变了,整套密码系统仍然是安全的。(而凯撒大帝的加密方法有一个知道密码本 的人泄密,整个密码系 统就公开了。)

3.灵活,可以产生很多的公开密钥E和私钥D的组合给不同的加密者。

最后让我们看看破解这种密码的难度。 首先,要声明,世界上没有永远破不了 的密码,关键是它能有多长的有效期。要破公开密钥的加密方式,至今的研 究结果表明最好的办法还是对大字 N 进行因数分解,即通过 N 反过来找到 P 和 Q,这样密码就被破了。而找 P 和 Q 目前只有用计算机把所有的数字试一遍 这种笨办法。这实际上是在拼计算机的速度,这也就是为什么 P 和 Q 都需要非 常大。一种加密方法只有保证 50 年计算机破不了也就可以满意了。前几年破解 的 RSA-158 密码是这样因数分解的

395058745832651445264197678006144819960207764603049364541393760515793 556265294

506836097278424682195350935443058704902519956553357102097992264849779 49442955603 =

338849583746672139436839320467218152281583036860499304808492584055528 1177

×1165882340667125990314837655838327081813101225814639260043952099413 1344334162924536139

现 在,让我们回到《暗算》中,黄依依第一次找的结果经过一系列计算发现无 法归零,也就是说除不尽,我猜她可能试图将一个大数 N 做分解,没成功。第 二次计算的结果是归零了,说明她找到的 N=P×Q 的分解方法。当然,这件事能 不能用算盘完成,我就不知道了,但我觉得比较夸张。另外我对该电视剧还有一

个搞不懂的就是里面提到的“光复一号”密码的误 差。一个密码是不 能有误差的,否则就是有的密钥也无法解码了。我想可能是指在构造密码时,P 和 Q 之一没找对,其中一个(甚至两个都)不小心找成了合数,这时密码的保密性 就差了很多。如果谁知道电视剧里面讲的“误差”是指什么请告诉我。另外,电 视剧里 提到冯 · 诺依曼,说他是现代密码学的祖宗,我想是弄错了,应该是香农。 冯 · 诺依曼的贡献在发明计算机和提出博弈论(game theory)。

不管怎么样,我们今天用的所谓最可靠的加密方法的原理其实就这么简单, 一点也不神秘,无非是找几个大素数做一些乘除和乘方运算就可以了。

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《数学应用-谈谈密码学的数学原理
本文地址:https://www.zhiletu.com/archives-2816.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微