《模仿游戏》中图灵如何破解恩格玛密码机

故事发生在二战时期,那时候纳粹德国发出的战争指令是通过无线电报在空中加密发出的,每个突然袭击,每次秘密护航,大西洋上每个潜水艇的细节,这些信息都是通过恩格玛密码机加密发出的,只要有一台AM设备,小学生都会截获这些信息,可惜这些信息是加密的,而图灵做的事就是破解密码。

如果用人工去暴力破解密文,尝试每一种组合,就算不休息,花费的时间都是以年为单位的,甚至是以万年为单位。

图灵就设计机器来对付恩格玛密码机,机器的运算速度远快于人。

只有机器才能打败另一架机器

在一次朋友聚会中,图灵问一个女生为什么她怀疑他暗恋的德国男士有女朋友,她说因为每条信息的开头都是一样的CIILY,所以她就想Cilly肯定是他喜欢的女孩子。突然启发了图灵,不用每次都检索完所有的设定,如果每次只检索特定的一部分呢,根据我们已知的会出现在情报里的部分,比如说重复的部分,可预料的部分,他们猜测信息里肯定有希特勒万岁。

受时代技术的限制,恩格玛密码本质还是替换加密。

恺撒密码

明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

上面的偏移设置将会将markbuid 将会被加密成ftkdunbw

单表替换

明文字母:	ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母:	ZEBRASCDFGHIJKLMNOPQTUVWXY
维基百科: 26个字母在普通的英文文本中出现的概率

截获大量密文,统计其中每个字母出现的频率,直接用统计出来的结果和这张图对应就能得到替换表,然后用替换表就能解密了。

多表替换

明文字母:	ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文表一:	ZEBRASCDFGHIJKLMNOPQTUVWXY
密文表二:	GHIJEBRASCDKFPQTLMNOZUVWXY

明文第一个字母在第一张表查,第二个字母在第二张表查,第三个字母又在第一张表中查。上面的设置可以将markbuild加密成jgodezfkr。

但是密文足够长时and the这种常用词就会有很多相同的,比如上面的设置会把the 加密成qaa或者ode这两种情况,同样可以从常用词出现频率的方向解密。

两个表还不够复杂,然后就有了维热纳尔方阵(Vigenère square)。

上面的设置可以将markbuild加密成lyogwobdu。
Rotors

恩格玛密码机的工作原理

恩格玛机主要由转子(Rotors)、灯盘(Lampboard)、键盘(Keyboard)、插线板(Plugboard)组成

每个转子有26格,代表A-Z,每输入一个字母,第一个转子就会自动转一格,当第一个转子转完一圈时,会带动第二个转子转动一格。同理,第二个转子转动一圈时会带动第三个转子转一格,这个和钟表上秒针、分针、时针的转动关系是类似的。

三个转子串联,第一个转子的输出作为第二个转子的输入,第二个转子的输出作为第三个转子的输入。所以三个转子一共可以提供26*26*26=17576个不同的密码表。这个数字已经相当可观了,但德国人还是不满足,又把三个转子设计成可以互相交换位置的形式。三个转子有六种不同的排列方式,所以密码表的数量又增加到了17576*6=105456,也就是大约十万个。德国人还是不满足,又增加了上面图片中的插线板,将密码数量进一步增大了1000亿倍

在插线板上刻有26个字母,如果操作员用一条线将其中两个字母连接起来,那么这两个字母在加密过程中会被互换。

体验一下:在线恩格玛机

加密流程:
Keyboard Input: W
Rotors Position: AAB
Plugboard Encryption: D
Wheel 3 Encryption: G
Wheel 2 Encryption: R
Wheel 1 Encryption: U
Reflector Encryption: C
Wheel 1 Encryption: Y
Wheel 2 Encryption: V
Wheel 3 Encryption: D
Plugboard Encryption: D
Output (Lampboard): D

反射器设置让加解密可逆,只要把机器调到初始配置再将密文输入,输出的结果将直接就是原文,这就是对称加密

图灵炸弹

体验一下:在线图灵炸弹

Leave a Reply

Your email address will not be published. Required fields are marked *