第二次世界大战中,正面战场的烽火备受瞩目,似乎后人的目光都放在了波澜壮阔的战争中。然而在秘密战线上,同盟国和轴心国围绕着情报所展开的较量也一点不比正面战场差。今天笔者就给大家讲述,有关恩尼格玛密码机和“炸弹”的故事。
一.天书一样的恩尼格玛密码机
密码,这个词大家一定很熟悉,我们在影视剧里常常听到这个词。在战争中,无线电报要不被人解读,就得在无线电发报时,按照密码本来发报。因为无线电的坏处是,你能接收,别人也可以。在第一次世界大战和此后的一段时间里,英国对于德国的无线电破译一向是精准而高效。但到了1926年,英国收到的德国无线电报突然都成了一份份天书,根本无法破译,这是怎么回事呢?
原因就在于这个小盒子,就是图里的,这个东西叫做恩尼格玛密码机,名字有点绕口,它的原理一样绕口。在它的内部有叫做转子的零件,这个转子才是关键。看到这个图里的恩尼格玛密码机没有,很像是我们现在用的键盘吧?其实也就是这么一回事。它的特点在于,你第一次按下A键,上面对应的灯泡亮起来的,却可能是B灯,这就是转子的作用。
同一个字母在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,又可以代表明文中的不同字母,这种加密方式在密码学上被称为“复式替换密码”。但是,这样很容易被发现规律,所以德国又加了两个转子,当第一个转子转动整整一圈以后,它上面有一个齿轮拨动第二个转子,使得它的方向转动一个字母的位置。
假设第一个转子已经整整转了一圈,按A键时显示器上D灯泡亮;当放开A键时第一个转子上的齿轮也带动第二个转子同时转动一格,于是第二次键入A时,加密的字母可能为E;再次放开键A时,就只有第一个转子转动了,于是第三次键入A时,与之相对应的字母就可能是F了。如此一来,重复的概率就达到26x26x26=17576个字母之后,想要抓住规律,谈何容易?
而在它的内部,还有反射器,这张恩尼格玛密码机的原理图显示了,恩尼格玛密码机的运作原理——按下A键后机器是如何将它显示成D键的(灯D发亮),而按下D键的同时灯A也会发亮,但是按下A键是永远不会使灯A发亮的,这是因为恩尼格玛密码机安装有反射器。换句话说,在这种设计下,反射器虽然没有像转子那样增加不重复的方向,但是它可以使解码过程完全重现编码过程。而这个过程就导致了,破解电码的难度大大增加。
二.恩尼格玛密码机的弱点
然而天下没有不会被破解的密码,恩尼格玛密码机也一样,波兰人是第一个破解了它的人。很诧异吧,第一个破解它的竟然是波兰人?这是怎么回事呢?这还要归功于一个叛变的德国情报人员,汉斯·提罗·施密特。他当时实在是穷的不行了,换句话,揭不开锅了。于是这个德国通讯部门密码处的负责人,在1931年11月8日,竟然拿着一份有关恩尼格玛密码机的情报去找了法国人。
这些关于恩尼格玛密码机的转子和操作方式的资料,让他赚了一万马克,在当时这可是巨款。不过法国人根本没有重视,他们认为恩尼格玛密码机根本无法破解,所以没有在意。但是这份情报,却被转赠给了波兰人,波兰人决定破解它。
当时波兰人已经设法搞到了恩尼格玛密码机的复制品,说起来很搞笑。当时一个恩尼格玛密码机的商用版本送到了德国驻波兰大使馆,不过那一天是周六,大使馆没有人。波兰人就趁机把这个密码机拆了,然后挨个零件拍照,测绘,最后把它装回去,装作什么也没有发生。自己偷偷地复制了一个,但很可惜,这是民用的,不是军用的。波兰人还是犯愁。
不过这份情报来了,现在就可以按着这个,逆向推出军用版本是怎么样的,波兰人还真的仿造了一个军用版出来。而当时负责破译的是号称“波兰三杰”的三位数学家:马里安·雷耶夫斯基、杰尔兹·罗佐基和亨里克·佐加尔斯基。这三个人可了不得,因为就是他们破解了恩尼格密码机和其密码体系。
他明白,重复乃是密码的大敌。所以他注意接收每一份德国加密通讯,他发现每一份通讯,都有字母重复,这就是恩尼格玛密码机的弱点了。如图所示,四封电报里,有四个字母是反复使用的,这就让他发现了规律,从而可以破解恩尼格玛密码。当然这只是个范例,因为这和转子的数量有关,当年波兰三杰面对的是三转子的密码机,和后来的恩尼格玛密码机升级版本有所区别,不过大意如此。
根据这个规律,他们摸索出了另一个规律:虽然这些循环圈是由当日密钥,也就是转子的位置,它们的初始方向以及连接板上字母置换造成的,但是每组循环圈的个数和每个循环圈的长度,却仅仅是由转子的位置和它们的初始方向决定的,和连接板上字母交换的情况无关!也就是说,恩尼格密码机实际上是26x26x26=17576,然后17576x6=105456,所以实际上是105456个密钥。波兰三杰现在终于知道了,德国人的恩尼格玛密码机是怎么一回事了。
三.“炸弹”的传奇
如果按照原来的办法,一个一个去测试,怕是要累死,因为会有上亿个密钥等着他们。但是恩尼格密码机的数量巨大的密钥主要是由连接板来提供的,如果只考虑转子的位置和它们的初始方向,只有105456种可能性。虽然这还是一个很大的数字,但是把所有的可能性都试验一遍,已经是一件可以做到的事情了。
1933年开始,波兰三杰根据置换矩阵的方程式,开始不断地破译德国人的情报。德国人做梦都想不到,牢不可破的恩尼格玛密码机,竟然就这样被破解了。这期间还发生了一个搞笑的事情,1934年,赫尔曼·戈林和一批德国高级官员来波兰华沙的无名战士墓献花,很凑巧的是,这里紧紧挨着波兰密码处,波兰三杰正透过办公室,看着戈林呢,而戈林呢?做梦也想不到,他距离波兰密码处只有咫尺之遥。
尽管这之后德国人对恩尼格机的转子连线做了一点小小的改动,以至于破译工作一度停顿。但是波兰三杰早有对策,他们根据规律,制造了一个机器,这个机器可以自己自动验证26x26x26=17576个转子方向的机器,为了同时验证三个转子所有可能的位置排列,就需要六台同样的机器,这样就可以测试105456个排列。
按照这个思路,六个机器就排列成了一个巨大的机器,有一米高,能在两个小时内就破解出当日的密钥。波兰三杰给它起了一个很狂野的名字,叫做炸弹,因为它是如此巨大,以至于运作起来发出的声音震耳欲聋。这个名字也名副其实,因为炸弹确实轰开了德国人那几乎牢不可破的密码体系。
在1933年1月至1938年末,波兰人破译了德国十万条情报,可以说对于波兰起到了许多帮助。那段日子里,波兰的高级军官们会收到标有“维奇尔”(Wicher,破译恩尼格玛密码行动的代号)的情报,他们被告知这些情报绝对可靠,但来源绝密。然而很不幸的,在1938年末,德国在密码机里新装了两个转子,连线也变成了16根,现在炸弹失效了,因为密钥的总数已经是原来的一万五千倍了,这种几何级的增长彻底让波兰三杰的工作打了水漂,而正是这时候,德国人发动了闪电战,波兰沦陷了。
结语
然而没有人知道的,波兰三杰已经带着炸弹的图纸,和他们的工作资料离开了。他们把资料交给了英国和法国的同行,这让英法密码专家目瞪口呆。当然法国情报人员没能搞出什么,因为法国也步了波兰的后尘。但是在英国,一个叫做艾伦·麦席森·图灵的人却得到了这些资料,他将续写炸弹的传奇。
参考文献:《密码故事》
《二战时期密码决战中的数学故事》
《不折之鹰》