密码学简史(一)--- 谍战中的古典密码学

文章目录

  • 1. 隐藏法
  • 2. 移位法与替代法
  • 3. 维吉尼亚加密法
    • 3.1 维吉尼亚加密法的破解
    • 3.2 维吉尼亚加密法2.0版
    • 3.3 维吉尼亚加密法3.0版
  • 4. 恩尼格玛密码机(Enigma)
    • 4.1 第一代恩尼格玛机的破解
    • 4.2 第二代恩尼格玛机的破解
  • 更多文章:

密码学数千年的发展史,加密与解密双方一次次的对立搏杀,就是一场旷日持久,没有终点的智力追逐,没有永远的胜者,也不存在终极解决方案。你的敌人永远不会睡着,即便你现在占尽优势,他们也不会认输,而是会暗中进化,直到变强的那一天再来击败你。在加密与解密的千年对抗中,无数天才投身其中,了解它就如同置身一场顶尖的智力追逐赛,数千年来,人类最顶尖的头脑如何相互提防、彼此碰撞,又如何在击败眼前的敌人后,被身后的对手击倒……

古典密码学,在加密和解密的过程中,最小操作单位都是单个字符或者符号。现代密码学,把研究对象用数来描述,再对数进行运算,不但突破了字母作为最小变化单位的限制,还可以使用更高等的数学工具做运算,因此破译就变得越来越困难。可以说,加密时所用的数学工具,决定了一个密码能否被破译。

把研究对象用数来描述,主要是伴随着计算机出现的,计算机要想处理字符或符号信息,需要把所有字符或符号编码为二进制的0和1,才能使用更高等的数学工具对这些数进行运算处理。因此,可以把计算机出现之前的密码学叫做古典密码学,之后的叫做现代密码学。

1. 隐藏法

最原始的第一代加密法说起来很简单,就是把信息隐藏起来,因此称为隐藏法。从有文字出现,一直到现在都在用,破解方法就是认真搜找。

史上第一个加密法的记载,是古希腊历史学家希罗多德记录的一个加密术的故事,发生在他出生前三百多年。当时,强大的波斯帝国计划入侵希腊,斯巴达曾经的老国王得知后,偷偷把这个消息写在木板上又涂了一层蜡。这片木板成功躲过沿路卫兵的检查,到达斯巴达,收信人刮开表面的那层蜡,就发现了下面的密报。公元前480年,波斯舰队以为对方毫无准备,结果自己一天之内200多艘战舰被击沉,五年多的准备毁于一旦。可以说,这次密报挽救了雅典和斯巴达,其实也等于挽救了现代文明(现代文明有两个思想根源:一个是公元前5世纪巅峰时期的古希腊思想;另一个是后来的基督教思想)。

类似的隐藏法在希罗多德的记录中还有更高级的形式,比如先把送信人的头发剃光,然后把保密消息写在那人的头皮上,等他头发长出来后,让送信人出发,到了目的地再把头发剃光,保密消息就读出来了。再比如在熟鸡蛋壳上用一种药水(明矾和醋)写密文,之后蛋壳上不会有痕迹,只能剥了皮才能看到蛋白上有字。

这些隐藏法对付完全小白的人还可以,对付稍加提防的卫兵就不灵了,让他们留意一下蜡板、头发颜色,见到熟鸡蛋就剥皮检查等,保密信息就全部暴露了。但自从有了文字后人们就一直在用,直到今天人们藏私房钱时用的还是这个套路。

2. 移位法与替代法

有很多家长爱翻孩子的日记,但假如孩子们使用移位法或替代法对文字进行简单加密,就完全可以把日记本摆在桌上,任凭家长怎么看也不知道写了什么。

移位与替代加密法是大约五千年前出现的,直到9世纪才被阿拉伯人发明的频率分析法破解,中间隔了足足有四千年。在另一边的欧洲,直到16世纪都没掌握这种破解方法,由此可以感受到阿拉伯文明曾经的辉煌。

移位法很简单,举个例子,比如我的车牌号是1874,把每个数字都在数列中往后加1,那么1874就变成了2985。因为都是数字你可能觉得反差不大,但如果字母也这样变化,看起来就很不一样了。字母顺序改变也是一样,从a排列到z,比如我要对hello world加密,加密规则是每个字母都向后移动两位,“hello world”就变成了“jgnnq yqtnf”,这就是移位加密法。

替代法也很好理解,就是把文中一部分字母用其它字母代替。比如“For man is man and master of his fate”,如果把其中的a都用z代替,o用y代替,e用w代替,i用x代替,就成了一段谁都看不出来的文字“Fyr mzn xs mzn znd mzstwr yf hxs fztw”。

大约在距今五千多年前,古埃及人就在文字中使用了移位和替代法,这个方法广泛运用了接近四千年时间。在漫长的时间里也出现了很多变种,比如顺序倒着写,奇数位与偶数位的变化不一样,把奇数和偶数位的字母拆分后首位相连等。因为这种加密法涉及的排列组合数量非常多,想用穷举试错法破解几乎是不可能的,所以在这种加密法出现后的四千年内都没有有效的破解方法。

第二代的移位法和替换法的安全性很好,也比较好用,但到了16世纪这个局面扭转了,因为概率论的出现,这两种加密法可以破解了,破解方法叫做“频率分析法”。它的原理很简单,英文中字母出现的频率是不一样的,比如字母e是出现频率最高的占12.7%;其次是t占9.1%;然后是a、o、i、n等,最少的是z只占0.1%。
密码学简史(一)--- 谍战中的古典密码学_第1张图片
如果使用移位或替换法加密的字符总量足够多,全部搜集到一起统计哪个符号出现的比例最高,那个字符大概就是字母e。当然有些字母出现的频率极为接近,比如h、r、s分别是6.09%、5.98%、6.32%,但只要稍微留意字母前后的关联,就可以区分出来。比如t几乎不可能出现在b、d、g、j、k、m、q这些字母的旁边,h和e经常连在一起,ee一起出现的频率远比aa一起出现高得多等等。

频率分析法的实质,就是大幅度降低字母排列组合的可能性。从前我们假设每个符文都可能使26个字母的任意一个,有多少个替代符号出现,就有26的多少次方种可能。但频率分析法把很多符号的可能性大大降低,有的降低为只有1种可能,有的降低为只有2-3种可能。这样一来,即便第一步统计各种符号出现的频率时并不完全确定,但只要再根据拼写规律筛选一下,替代符号对应的真实字母就确定了。

解密方法公布后,替代法就不再有效了,加密一方当然不甘落败,很快就出现了另一种叫做“同音替代法”的方法。比如说字母a可以用11、23、41三个数字替代,这三个数字翻译过来都是a,越常用的字母比如e,就用越多的符号替代它。这种想法的终极目标就是让每个数字出现的频率都大致相等,频率特征没有了,密码就不容易破解了。不过这种方法的解密法马上也出现了,就是通过字母前后顺序关系来猜,比如q后面出现的最大可能就是u,而q又是一个不常用的字母,有很大概率猜出来,有了突破口,其它字母猜出来也就没那么困难了。

3. 维吉尼亚加密法

前面介绍的移位法与替代法是在概率论出现之后被破解的,维吉尼亚加密法就是为了对抗频率分析法出现的,使用这套加密方法之后,字母的频率特征会消失。

为了掩盖字母使用中暴露的频率特征,解决方法就是用多套符号代替原来的文字。比如原文的字母是A,从前只把它替换成F,现在把它替换成F或G这两个,那什么时候用F什么时候用G呢?可以自行规定,比如字母在奇数位时用F代替,在偶数位时用G代替。从前单套符号替代的时候,凡是文字中频率为7.63%的符号差不多就代表A了,但现在A由F和G混合在一起,7.63%的特征不再出现,哪个符号代表A就没人知道了,频率分析法就暂时失效了。

而且,多套符号加密法并没有满足于2-3套,后来典型使用的是26套,这个用26套字符的加密方法就是第三代密码—维吉尼亚加密法。它是一个表格,第一行代表原文的字母,下面每一横行代表原文分别由哪些字母代替,每一竖列代表我们要用第几套字符来替换原文,一共26个字母,一共26套代替法,所以这个表是一个26*26的表。
密码学简史(一)--- 谍战中的古典密码学_第2张图片
怎么用上面的维吉尼亚密码表进行加密呢?假设我要给“hello”加密,原文第一个字母用第8套密码代替,第二个字母用第12套密码代替,第三个字母用第5套密码代替等等,具体每个字母移动多少位单独指定也太麻烦太混乱了吧?

第三代维吉尼亚加密法在真实使用时,人们事先规定每个字母用了哪套移位法时,并不是毫无规律的瞎指定,而是要约定一个规则,这个规则就叫做“钥匙”。比如钥匙是yes,那怎么加密呢?原文字母作为上表的行号,密钥字母作为上表的列号,行列交叉的字母便是加密后的密文字符。钥匙的长度不够,可以按照规则不断循环下去,原文“hello”使用密钥“yes”加密后的密文如下:

原文 h e l l o
钥匙 y e s y e s
密文 F I D J S

这样的好处是,原文里同一个字母会被加密成不同字符,hello中的两个‘l’分别变成了D和J,而且密文中同样的字符也可能代表不同的原文,谁和谁都不对应。

1586年,维吉尼亚把这个想法写在了《密码论》种发表,但它在出现后的两百年里,几乎没有人使用。原因很简单,太复杂了,真正好用的密码,是在安全性和效率上找到了平衡点。

直到1861年到1865年美国南北战争时期,维吉尼亚加密法才被广泛使用。因为1860年代,不但已经有了蒸汽机,也有了电动机,这种有规律的体力活机器是最擅长干的,既不会抱怨累,也不太会出错,加密与解密的工作正好可以由机器来完成。

3.1 维吉尼亚加密法的破解

维吉尼亚加密法看起来很强大,该怎么破解呢?重点就是维吉尼亚加密法中新提出的“钥匙”的概念,钥匙规定了每个字母由哪套密码来加密,通常原文很长钥匙很短,为了让原文和钥匙一一对应,就反复使用钥匙。假如钥匙泄露或者被破解了,使用这个加密法加密的密文自然也就被破解了。

由于钥匙反复循环使用,钥匙中的每个字母表示一套密码,钥匙中不同字母的个数表示使用的密码套数。假如我们能把使用同一套密码加密的密文区分开,就可以使用前面介绍的频率分析法进行破解。使用同一套密码加密也就对应钥匙中的同一个字母,钥匙反复循环使用,使用钥匙中的同一个字母加密的密文同样很多。假如我们直到钥匙的循环周期,也即钥匙的长度,每间隔钥匙长度个字符都会使用同一套密码加密。所以,我们只要能获知钥匙长度,就可以把维吉尼亚加密法拆分为第二代的移位替代法,可以直接使用频率分析法破解。

怎么获知钥匙长度呢?先来看一个例子,原文、钥匙、密文分别如下:

原文 t h e s u n a n d t h e m a n i n t h e m o o n
钥匙 K I N G K I N G K I N G K I N G K I N G K I N G
密文 D P R Y E V N Y N B U K W I A O X B U K W W B T

原文的内容中,有三个定冠词the,变成密文后,the变成了两种样子,第二个和第三个the竟然加密成了相同的密文。也就是说,正好在KING这个钥匙循环到整数倍的时候,如果也正好赶上出现了同样的原文,那巧合就出现了,原文就会被加密成相同的密文。这一点,就是找到钥匙长度的关键,也即破解维吉尼亚密码的关键。

破解维吉尼亚加密法的方法就是:

  1. 从密文中找出拼写完全相同的字母串,尤其是那些长度大于4的重复出现的密文,比如我们找到重复出现的字母串共4种分别叫做甲乙丙丁;
  2. 数一数,这些重复出现的字母串第一次出现到第二次出现,中间隔了多少个字母。比如甲字符串重复间隔了20个字母,那就代表这段密文对应的钥匙,在这20个字母中正好反复使用了若干次(钥匙长度可能是2、4、5、10、20);
  3. 找到在所有重复出现的字符串甲乙丙丁中,钥匙可能长度的交集,也即该长度k在所有重复出现的字符串中都是其中一种可能长度,该长度k就是钥匙的实际长度。

猜中钥匙长度就等于,把维吉尼亚加密法简化为N套最基础的移位加密法了,使用频率分析法即可破解。由此可见,维吉尼亚加密法的缺陷在于钥匙的循环。

3.2 维吉尼亚加密法2.0版

怎样才能补上维吉尼亚加密法钥匙循环的缺陷呢?答案可能你已经想到了—增加钥匙的长度。对于频率分析法来说,要想把字母出现的频率统计准确,有一个必要条件—字母足够多才行。比如一篇包含1000个字母的文章,如果钥匙的长度为5,则每套加密法会匀到200个字母,可以使用频率分析法分析,如果把钥匙长度增加到50个,每套加密法匀到的字母只有20个,连26个字母都凑不齐自然不会表现出字母的频率特征。

这时候钥匙应该怎么设计呢?一般是用一首诗或者一篇其它文章当作钥匙,这样方便大家约定规则。这种加密法,可以把它称作维吉尼亚加密法的2.0版本。

不过2.0版也是可以破解的,因为钥匙和原文等长时,为了方便,人们往往会使用一首诗或者一篇文章当钥匙,而一首诗或一篇文章都是有意义的单词组成的,它们的字母排列一定是符合拼读规律的,有规律可循,就可能被破解。

破解的方法是,先假设原文中一定会出现常用的单词,比如定冠词the、at、in这些总会用到的单词,然后拿它去和密文对照,倒推钥匙的单词是什么。如果倒推出的钥匙部分符合单词拼写规律,很可能这部分钥匙字段你猜对了,继续倒推其余的钥匙部分,如果不符合单词拼写规律,就说明猜的不对。

这种破解方法完全避开使用频率分析法,不需要有足够大量的字母出现,就可以分析出原文,只是除了规定步骤外,还要有很好的猜字谜功底,总体来说属于体力活。

3.3 维吉尼亚加密法3.0版

维吉尼亚加密法2.0版的漏洞是:钥匙是一段完全符合拼写规律的文字。如果钥匙根本不是一首诗、一篇文章,而是一大段完全随机的字母,那么上面的方法就无能为力了。这个加密法在第一次世界大战后出现,后来被叫做”单次钥匙簿密码法“,也可以称为维吉尼亚加密法3.0版本。

有数学家证明了这种把钥匙编成随机字母的方法,在理论上是不可破解的。但这种加密法几乎从没在实战中规范使用过,原因你可能也猜到了—它的效率异常的低,根本就无法用在需要大量通信的领域。

除了操作层面效率异常低,更大的门槛在于—产生随机字母排序,是一件几乎不可能的事,我们平时使用的随机算法产生的都是伪随机数。可以这样说,凡是通过软件制造的随机都是伪随机,只有在大自然中,一些已经被证明是随机的量子物理过程,才是真的随机。比如一种半导体管叫齐纳管,它被电流击穿后产生的白噪音是真随机;或者有些放射性原子衰变时,向外辐射出的alpha粒子的间隔时间是真随机的。所以对于人来说,真随机是一个很难获得的东西。

所以,虽然理论上说单次钥匙簿密码法是不可破解的,安全性没有破绽,但真的随机是很难轻易获得的,而获得了以后又很难大规模使用,效率极为低下。所以这种加密法,几乎没有在真正的战场上使用过。

4. 恩尼格玛密码机(Enigma)

Enigma使用的加密方式本质上还是第二代加密法—移位和替代,但因为可以切换无穷多种加密配套组合,所以在对抗频率分析法上极其有效。

Enigma是一种机械电子式的加密机,由一堆齿轮、电线、灯泡、转盘、摇杆组成,恩尼格玛机是一个大规模量产的机械电子式加密机,也正是从它开始,密码学不再依赖纸和笔的运算,使用机械和电子加密的时代正式到来,所以它是第四代加密法。改编自《艾伦–图灵传》的电影《模仿游戏》主要讲述了图灵破解恩尼格玛机的过程。

第一台恩尼格玛机是一战刚结束时由德国发明家雪毕伍斯和里特制造出来的,机器主要分3部分,3部分之间由齿轮和电线相连:

  • 第一部分,是敲原文的键盘;
  • 第二部分,是把原文加工成密文的编码器;
  • 第三部分,是密文的显示板。

操作员只要做好设定,在键盘上敲入原文,经过编码器编码,密文显示板会按规则点亮密文字母,抄写员把点亮的字母的顺序记录下来,加密过程就完成了。
密码学简史(一)--- 谍战中的古典密码学_第3张图片
这其中重点就是编码器,编码器的工作原理有点复杂,下面简单介绍下:编码器由一堆可以手工设置的机械部件组成,任何地方的调整都会改变加密的结果。其中最大的部件是齿轮式的字母盘,它前后通过导线与敲原文用的键盘,以及密文显示板相连。键盘那边敲一个字母,信号通过导线传给齿轮上的触点,再通过导线传到密文显示板上,原文就这样被加密成另一个字母了。

听起来好像没什么,但恩尼格玛机的真正高明之处在于:每敲一个字母,齿轮会往下转一格,齿轮的转动导致线路连接的变化,而连接线一变,又直接导致加密结果的不同。所以同一个字母敲入第二次、第三次,输出结果都是不一样的,齿轮能转多少格,就意味着有几套加密法等着轮替。

更高明的是,恩尼格玛机的加密可能性,理论上是无限多的。最早齿轮一圈只有6格,也就是6套加密法,后来感觉不够用就增加到26个格。再后来,单套齿轮格数不再增加,而是增加第2套齿轮,上面也有26个格,只有在第一套齿轮转完一圈后,第2套齿轮才前进一格,这样一来,有两套齿轮的恩尼格玛机就相当于拥有26 * 26 = 676套密码。如果觉得不妥,还可以继续增加齿轮的套数,用于商业领域的恩尼格玛机一般有3套齿轮(德军在二战中使用的最高水准加密机有8套齿轮):
密码学简史(一)--- 谍战中的古典密码学_第4张图片
机械加电子的方式让加密解密错误大大降低,效率也高了很多,关键是设计规范,可以量产。恩尼格玛机的方便之处还在于,几组齿轮的初始值是可以随意设置的,比如封装好后三组齿轮各自露出一个小窗口,收发双方约定好,这3个窗口在初始时各显示哪3个字母,然后他们按照这个顺序编码信息、解码信息,互相之间就可以通信了。为了更安全,可以每天更换一次3组齿轮的初始设定,非常方便。

恩尼格玛机通过齿轮生成的钥匙,只是看上去很随机,它内在还是有规律可循的,这个规律就是它会按次序转动,只要敌方手里有一台一模一样的密码机,再获知齿轮的初始设定就可以解密了。

既然有3个齿轮,每个提供26个字符,那钥匙的初始值可以出现的最大组合就是26 * 26 * 26 = 17576种,多个人使用穷举法说不准几个小时就把初始钥匙碰对了。设计者早就考虑到暴力破解的问题了,所以他们在键盘和编码器之间又增加了一个叫”接线板“的结构,可以调换6对字母的线路。比如你在键盘上按的是a,但电流信号确实沿着b的线路输出到编码器上的,通过调换26个字母中随意的6对,组合一下就增加到了1000多亿种,所以恩尼格玛机是可以扛住暴力破解的。

正是恩尼格玛机的诞生,使密码学彻底进入了机械电子时代。也就是说,在1918年后,任何一个人通过纸和笔的运算,都无法和那时候的加密法抗衡了,谁想破解,也只能借助机械电子化的设备才可以。

4.1 第一代恩尼格玛机的破解

从前面的分析可以看出,破解恩尼格玛机的关键是要知道每次加密前人工设定的初始状态,这个初始状态包括3部分:

  • 设置接线板,要从26个字母中任意挑出6对接好;
  • 设置编码器中三组齿轮的前后顺序;
  • 设置每个齿轮的第一个字母是什么。

操作员每个月都会收到一本新的密码簿,上面记录着每天的初始设定。但德国人并不会整整一天所有信息都使用密码簿上这一把钥匙,因为当信息量足够多时,钥匙很容易被猜中。为了堵上这个漏洞,德国人其实是每发一条信息,都单独使用一把钥匙。你可能会问传递钥匙的过程是怎么实现的呢?

德国人当时是这样做的:这个机器每天的初始状态里,需要设置的3个部分中,有两个全天都是不变的,唯独一个变的,就是这三个齿轮每个齿轮的第一个字母是什么。假设那本密码簿里,当天对应的3个字母是QCW,这并不是说今天所有消息都用它当钥匙,实际上当天每条消息都有一把小钥匙,QCW只是用来给当天无数把小钥匙加密的总钥匙。

小钥匙的产生与传递过程:发信息前,先把齿轮的初始状态设为QCW,然后脑子里随意想3个字母,比如说ABC,用设置成QCW状态的机器给ABC加密,比如说加密后ABC变成了BMW,但一次还不够,还要再加密一次,比如第二次ABC又变成了NBA,然后把两次加密的结果并列写一起,形成BMWNBA就是这条消息的小钥匙,放到这条消息的前面,这段信息真正的消息主体从第七个字母才开始。

收信方如果收到了以BMWNBA六个字母开头的密文后,他先查一下当天的密码簿,一看当天要设置成QCW,那他也这样设置,用QCW去解码刚才这六个字母,就会发现是ABCABC,他就会知道对应这条消息的后面内容主体的小钥匙是用ABC解密,然后再把ABC当做齿轮的初始值,去解码后面消息的主体,就知道消息原文是什么了。因为任何失误或干扰都会导致解码后,信息的前六位不是两次重复的样子,所以只要收信方发现不是两次重复的格式,就会丢弃掉这段,让对方重新发送。

面对复杂的恩尼格玛机,单纯靠语言学家已经不行了,波兰找来20位数学家,这是密码学有史以来,第一次把数学提到这么重要的位置,正式这些数学家找到了第一代恩尼格玛机的破解方法。

第一代恩尼格玛机的破解过程大概如下:因为之前间谍透露的消息,数学家们知道每条消息的头部都是6个字母,就是ABCXYZ样式,这些就是破解的关键。数学家面临的难题是:有一堆6个6个的字段,比如说ABCXYZ,现在我们知道A和X对应同一个原文,B和Y对应同一个原文,C和Z对应同一个原文,而ABC和XYZ又是由同一个钥匙加密而来的,求这个钥匙是什么?

数学的方法很复杂,这里直接说结果—把当天截获的信息中,所有可以对应的字母都找出来。比如在ABCXYZ中,A和X是对应的,但是又在某些六位中,X还能跟F对应;可是在其它的对应中,又能找到F又对应回A,从A出发又绕回A,正好凑成一个环。这个环涉及了3个字母—AXF,所以在这个环上连接数就是3。而且A可不止有这一种方式可以绕回A,当天那么多条消息中,A还有其它方式也能绕回A,但可能需要的连接数比较多,把它们都总结出来。

这样,数学家就总结出钥匙字段中第一个字母有几种可能形成环,每个环上又涉及到几个连接数。同样的,第2个字母也能找出有多少条环,也能找出有多少个连接数。经过详细统计后发现,机械电子结构和背后的数学描述精确的吻合,每个齿轮的动作都和环与连接数有逻辑关系。

每个字母分别会出现几条环,每个环上有几个连接数,直到把所有的规律和对应的初始值做成一本大字典,这个工作才算结束。这个收集整理工作一共进行了一年多的时间,然后发现:环的数量、连接数的数量,是由恩尼格玛机初始设定决定的

最后的破解任务就是查表—先截获当天的密文,统计这6个字母一共形成了几种环,每种环又有多少个连接数。这些特征掌握之后,再去查前面整理的字典里满足这些环和连接数的条件的初始值对应的是哪个,就能知道敌人当天的初始值是怎么设定的了。第一代恩尼格玛机,就这样被破解了。

4.2 第二代恩尼格玛机的破解

在二战开打的前一年,德国把恩尼格玛机的编码器齿轮增加到了5个,接线板的数量同时也增加了,破解难度自然大大提升。

第一代恩尼格玛机的破解是由波兰数学家完成的,德国撕毁和波兰的互不侵犯条约后,波兰把第一代恩尼格玛机的结构和破解方法公布给了盟友。英国对波兰提供的方案很重视,为了信息安全扩充了密码队伍,办公地点换到了布莱切利园面积扩大几十倍,工作人员扩增到近万人,破解密码的主力换成了数学家,这就到了《模仿游戏》中图灵的工作了。

图灵破解恩尼格玛机,是从一些军事规律导致的漏洞入手的,比如德军消息里类似”无特殊情况“、”希特勒万岁“这样的词语会经常出现,图灵还分析出了一个更好用的词”天气(wetter)”,这个词每天早上6点到6:05必然出现,而且大都出现在信息的开头,此外这个词里出现了两个t挨着的情况。图灵拿着wetter这个字段当作原文,对照着密文一位一位的挪动,排除掉那些不符合规律的方案,又因为wetter很高概率出现在信息最开头,所以只要试几次,就能发现wetter对应的密文是哪几个字母了。

到这儿,只是成功的第一步,图灵现在得到的题目是:已经知道了6个原文和它对应的6个密文,求出恩尼格玛机的初始设定。军用版恩尼格玛机的初始值有1.6 * 1020那么多种,所以不可能用暴力去尝试。可用的方法只有一个—在手头已有的少量原文和密文之间,想办法建立它们对应的数学关系,来反映出恩尼格玛机的内部结构。这个想法,和波兰破解第一版军用恩尼格玛机有点像。

图灵把原文写一行,密文写在下一行,排成两排,他管这个叫做“对照文(Crib)”。然后也建立了环,环上也有连接数的概念,图灵通过数学过程的转换,军用版恩尼格玛机1.6 * 1020这么多种可能性,一下被缩减到了105万种,减少为原来的百亿分之一。

这个105万的计算过程,肯定也不能由人来做,而是用一种机器来破解,这个破解机被起名叫“炸弹”。炸弹机体积挺大,有2米见方,炸弹机越多破解就越快,在之后2年里,有50台炸弹机投入使用,到1942年,破解德国陆军恩尼格玛机当天的钥匙,大约只需要1小时的时间。
密码学简史(一)--- 谍战中的古典密码学_第5张图片
即便有了炸弹机,破译也不轻松,德国加密水平最高的是海军,他们甚至在通讯中都不使用格式化语言,所以就没有固定的原文可以参考。但英军也有办法,就是在特定地点布置水雷,这些水雷其实是信息诱饵。德军发现水雷后,肯定会发送这样的电报:在东经XXX,北纬XXX水域,发现大量水雷,这样一来,原文中很多词就可以确定了。利用这套破解装置,也成功搞定了日本和意大利的密码系统。

回头看密码学的发展,你会发现有一个东西的神秘感在逐渐褪去,那就是关于“如何加密”的操作过程。在隐藏法的年代,如何加密的细节绝对属于核心机密;而在替代法和移位法中,大部分操作原理人们都知道,只是不知道具体移动了几位;但到了机械电子加密时代,加密设备的工作原理,不论是理论还是技术细节,敌我双方都了如指掌,密码的安全性全部落在钥匙上,而不再依赖于加密的操作细节,这个趋势在之后还会更加明显。

更多文章:

  • 《密码学简史(二)— 区块链中的现代密码学》

你可能感兴趣的:(流云的博客,密码学)