二战前,德国、美国等国家就开始了密码学的研究,后来美国及其他国家都放弃了,只有德国人真正发展了密码学上的成果。1918年,一个叫亚瑟·谢尔比乌斯的德国工程师发明了一种商用机电转子密码机,由于他非常喜欢《谜之伴奏曲》,所以他给这个密码机起了个名字叫“恩尼格玛”,意思是“谜”,作为给商人用于保护商业秘密的工具。德国海军于1923年开始使用恩尼格玛密码机,可惜的是谢尔比乌斯于1929年逝世了,他不知道他的密码机在30年代中期会成为德国各军种的标配,更无法预知他的密码机在二战中引发了绝密级密码战。军用恩尼格玛密码机是世界上最复杂的密码机之一,依靠机械设计和线路设计所形成的加密复杂度使其在2015年的拍卖标价高达36.5万美元。宇宙中恒星的数量是2000亿,而军用恩尼格玛密码机对一条信息加密后形成的报文的可能性是恒星数量多达五万倍。当时为了破解纳粹德军的加密报文,波兰政府成立了保密局,英国政府建立了一个新机构:英国代码加密学校,也就是英国密码局。在德国与盟国之间的绝密级密码战中,连语言大师、象棋大师等领域的顶尖人才都参与了破解恩尼格玛密码机的工作,最终是四位数学家解决了这一能够拯救无数生命的难题,他们是“波兰三杰”和英国的阿顿·图灵。他们的天才智慧扭转了盟军的战争局势并将战争的进程缩短了3年。
商用恩尼格玛密码机原型
德军正在使用恩尼格玛密码机
大西洋战争是二战中维持时间最长的战争。狼群战是第二次世界大战中德军对大西洋上的盟军商船所使用的潜艇战术,战术是以多艘潜艇集结攻击,使得通商破坏战的成果大幅提升,这套战术由二战德军潜艇指挥司令卡尔·邓尼茨提出,在战略部署上要求3至5艘潜艇集结成队统一行动,当一艘潜艇发现船只后并不马上做出攻击,而是尾随,并将信息回传给总指挥部,再由总指挥部统一部署,调集周边的潜艇协同作战,于是无线电通信的作用至关重要,无线电的弊端就是德国能收听,英国也能收听,但是德国人不担心被破解,因为他们有恩尼格玛密码机。正是由恩尼格玛密码机组成的快速安全的情报系统成就了德国潜艇战的成功。
军用恩尼格玛密码机
恩尼格玛密码机外形看起来像打字机,用电池驱动,不需要任何纸张,尺寸是34cm×28cm×15cm,由一个键盘、一个灯板、一个线路连接板和三个转子组成。机器本身的复杂性保证了信息安全,在键盘上输入同一字母,加密后在灯板上会显示出不同字母,像一个随机字母生成器。你的每一次输入,加密后输出的可能都不一样。这个密码机的高明之处就在于转子内线路的精巧设计和线路连接板的连线设计。每个转子上都有26个英文字母触点。发报员按动一个键,密码机内部就会发出一个电磁脉冲,这个脉冲通过线路连接板变更路线转送到3个转子中最右边的那个,这个转子就向前移动一个触点,当转子转满一圈时就推动其左边的转子向前移动一个触点,当这个转子转满一圈时又会推动其左边的转子向前移动一个触点,然后电磁脉冲通过反射器又从左至右流经三个转子,将最终变换成的字母显示在灯板上。最厉害的设计在于每个转子左侧小窗上的字母可选,选择后也就确定了所对应转子的初始触点位置。线路接线板用来交换2个字母,上面有20根线和26个插孔,线路连接板上的插孔连线可以随意更换,大概有1亿种接线方式。经过这样的设计,使得每条信息经过加密后最后所生成信息的可能性多达数亿。
转子和线路接线板
最后,通过密码机加密后的报文用纸记下来,把密文交给通信兵,由通信兵用摩尔斯码通过无线电发送出去,接收方也使用同样的密码机才能解码,但接收方密码机的接线设置和转子初始位置设置必须与发送方完全一致。德军使用恩尼格玛密码机的部门每个月都会收到一个用可溶性墨水印刷的绝密级小册子,这个册子上注明每天机器的设置,发报员每天就按照这个册子来设置机器。如果不幸被俘,那么就把小册子扔进水中,上面的内容就会消失。
密码册封皮
密码页
战时每8小时就更换一次三个转子的初始位置。更牛的地方还在于有5个备用转子,也就是说密码机上可以放3到8个转子,那么最后生成密文的可能性就更多了。二战时德国潜艇部队就使用了有4个转子的恩尼伯格密码机。如果要破译,仅仅知道密码机是怎样工作的是不够的,必须要知道密码机的设置。密码机设置一天更换三次,每次都要重新破译。因为编码无穷无尽,而且可以经常更改,德国人自然坚信他们的密码机绝对安全,盟军是根本不可能破译的。然而,波兰和英国最终依靠数学家解决了这个难题。
上个世纪20年代末商用恩尼格玛密码机仍在销售,军方知道密码机商业版的存在,所以不断改进编码加密程序 。波兰最开始成立破译小组,他们早就意识到破解密码是数学问题,所以找来了后来被称为“波兰三杰”的三位数学家进行破译,其中最杰出的就是马里安·雷耶夫斯基。他们见过密码机的照片,用数学方式推断密码机到底在使用哪个转子的方法,但是无法破译情报,因为不了解转子内部的线路。1931年11月8日,一个叫汉斯·德罗斯密特的德国情报人员将密码机插线图和密码本卖给了法国,法国破译不了,向英国求助,英法两国找来了语言学家进行破译,仍然没有破译出来,最后向波兰求助。波兰三杰早就开始破译了,可他们并不顺利,因为波兰得到的密码机是民用密码机,与军用的内部接线上有本质不同,这样一来波兰三杰就知道密码机内部的配线了。雷耶夫斯基制作出了可以验证所有转子触点位置的机器,他用6台同样的机器模拟出转子所有可能的排列,把它们组成大约1米高的机器,并取名为“炸弹”。从1933年1月到1938年12月,在这6年的时间里,波兰破译了近10万条德方的信息。1938年12月,德军增加了2个转子,并且连接线也增加到10根,组合性是原来的一万多倍,波兰开始向英国求助。1939年7月,波兰、法国、英国三国的译码专家在华沙会晤,波兰送给英国两台自己组装的密码机及炸弹的图纸。波兰被德国占领后,波兰三杰开始流亡,英国只能独自破译。到目前为止,德国还不知道密码被波兰破译过。
马里安·雷耶夫斯基
德国间谍卖给法国的图纸
为攻克难关,英国召集了剑桥大学数学家和国际象棋大师,数学家是艾伦·麦席森··图灵,他在1936年就阐述了通用计算机的原理。1938年夏末,英国开始了破译工作,1939年8月16日,英国情报中心拿到了德国绝密级密码机的布局图。图灵在寻找到密码机加密方法的缺陷后,在波兰解码机“炸弹”的基础上,和另一位叫Grodon Welchman的密码学家一起设计了一台叫做Bombe Machine的巨大机器,这台机器可以在20分钟内破解密码,图灵的机器是在做排除法。1941年5月,英国俘获了德军U110潜艇,从该潜艇中不仅获得了密码机,还获得了每日设置的密码。1941年6月,由于英国破译了德国潜艇密码,商船损失从二十八万两千吨减少到两万六千吨。1942年初,德国潜艇上的密码机增加了第四个转子,图灵一个人破解了第四个转子。由于英国破解了恩尼格玛密码机,抗击潜艇狼队的战斗局势才得以扭转,体现出了破译密码工作的重要性。丘吉尔称破译密码工作的部门为:“我从不咯咯叫的鹦鹉”。
图灵
图灵设计的炸弹
图灵1912年出生,1931年进入剑桥大学的国王学院,他提出了日后以他名字命名的虚拟计算机器,即图灵机。在他不到30岁的时候就破解了史上最复杂的密码机之一—恩尼格玛密码机,可惜的是图灵41岁就离世了。同样,波兰三杰也是在二十几岁时就用纯数学方法破解了恩尼格玛密码机。他们的数学智慧拯救了战争。
有意思的是,英国搞懂恩尼格玛密码机的原理后,对缺陷进行了改进,做了一个密码机叫“Typex Machine”。
20年代初的商用~恩尼格玛密码机