“这正是破解Enigma密码机的关键之处!”宋鸿飞道,说着他一边在黑板上写下了两行字:
第一个字母(明文):ABCDE FGHIJ KLMNO PQRST UVWXYZ
第四个字母(密文):FQHPL WOGBM VRXUY CZITN JEASDK
“把一天中截获的大量密电前6个密文的一组配对组合写成这样一张对应表,直到26个字母都齐全,(f1)(f4)代表的就是这样的字母替换关系。”
“嗯,为了方便演示,这里我就用几个字母举例好了,假设有这样的一个完整的替换密码表。”宋鸿飞又写下:
明文:ABCDEFGH
密文:CHEFABDG
“我们发现A(f1)(f4)=C,C(f1)(f4)=E,E(f1)(f4)=A,记作A->C->E->A ,这样可得一条首尾闭合的字母环,同样还可得另一条B ->H ->G -> D -> F ->B。直到把这份密码表的所有其他未列入环中的字母都能列入一个字母环。”
“写成另一种更直观的形式:(A,C,E)、 (B,H,G,D,F),可很直观地表示这个密码表的一个内在的特征值,即表示这个密码表的字母环的个数和长度的特征值,它是由这样两条长度分别为3和5的字母环组成,替换关系是A替换成C,C替换成E,E替换成A,以此类推。”
“上面列举的第一个和第四个字母的组合,其完整26个字母的对应关系表可写成:(A,F,W),(B,Q,Z,K,V,E,L,R,I),(C,H,G,O,Y,D,P),(J,M,X,S,T,N,U)。
同样的,第二和第五、第三和第六的字母组合所形成的链条环对应表都可以写成这样的形式。可以验证,不同的每日密钥所得到的链条环的环数和长度这个‘特征值’也各不相同!”
“之所以出现这些字母环,是因为三个扰码转子周期性循环转动导致。”宋鸿飞接着道,“这些环的个数、长度、字母次序是由‘当日密钥’,即三个转子的顺序、初始位置和插线板的设置决定的。”
“Enigma机的结构设计,键入的信号路径是插线板 ->转子 ->插线板,可见插线板的替换设置影响进入转子和变化完成后转子输出的信号,并不影响转子的周期性变化。因此,就体现在字母环的一部分字母会因插线板两两替换而改变,但无论怎么替换环的长度和环的个数都不变,环的特征值能得到最大程度的保留!”
宋鸿飞掷地有声:“也就是说每组对应表的环数和长度,仅仅是由转子的顺序和初始位置决定的,和插线板上字母替换的设置无关!”
宋鸿飞又道:“我建立了几个矩阵置换的数学模型,可以从数学上证明这一点对于任何的替换变化都是成立的,并且已经编制程序在弹道所的计算机上验证。”
宋鸿飞思索了一下,又道:“从中我隐隐觉得,甚至还可以从密文和密钥倒推出转子内部的电路连接状态,因为它们本质上也是替换而已。但是过于匆忙,总感觉理论证明不够充分严密,俞长官是数理逻辑的专家,还请给我审查下。”
俞大维心神激荡,内心的震撼早已是无以复加,整个人都怔住了,张大了嘴巴愣愣地望着黑板上的推演过程。
他沉思了半晌,仿佛才回过神来,惊呼道:“我的天啊!我真想不出你是怎么能想出这么绝妙的方法的!”
“这样一来,插线板的一千亿个密钥就不起作用了!”俞大维聚精会神,思维在飞速运转着,“只需要一个接一个地试验转子的不同顺序和设置,然后就可产生相应的字母环,再和当日截获电文的6个密钥构成的对应表的字母环相对照,就可得出转子的顺序和初始设置!”
“这样就从一亿亿种变成只有十万种可能性了!不,根据字母环的个数和长度这些特征值比对,是一个比十万小得多的数量!把所有的可能性都试验一遍,就是一件可以做到的事情了!”
宋鸿飞道:“破译者可以事先将所有十万种转子的顺序和初始位置的组合所产生的子母环进行编类都记录下来,这样就形成一本特征值字典,然后从这个字典中检索,就可更快速得出转子的设置,这种方式在破解密码上称作‘字典攻击’。”
“得到转子的设置后,插线板先不接线,按这个设置将截获的密文输入,得到被打乱的明文——因为信息中6对字母被随机对换了。但仍然会得到很多可辨的词语,而这种字母对换只是一种非常简单的替换加密,很容易被破解,像‘herro’就可以合理推测它应该是‘hello’,这样就能得到插线板的设置。”
俞大维已是无比的叹服。
他看了看宋鸿飞,问道:“嗯,方才你说验证过?这些天你跑来弹道所,说是用计算机,但总感觉有些神神秘秘的,不单是在计算弹道力学,原来还用来干了这个?”