二战初期的德国军力强盛,众多严谨凶狠的作战计划被素质极高的军官们变成现实,多数情况下人们容易将这些成就归因于装甲部队的狂飙突进,但事实上情报机构在当中发挥的作用更为关键。情报的本质在于安全及时地传递信息,为了避免遭到对方的截取,双方都会使用密码进行通信,由此便催生出一门崭新的科学——密码学。

最早计算机怎么破译情报(详解恩尼格码机)(1)

密码的使用时间很早,甚至可以追溯至罗马帝国时期,前线的凯撒在向后方写信催要补给的过程中,为了防止信件落入敌手,首次采用了字母替换的方法。比如收寄双方约定所有的字母向后推4位,明文中的“hello”就变成了密文“lipps”,后方收到信件之后只需要反过来向前推4位便可以得到明文,这可以说是最原始的加密方法。随着科学技术的进步,密码在军事领域的应用更加频繁,而加密的方法也越来越复杂,到二战爆发前德国天才发明家谢尔比乌斯已经制造出了恩尼格码机。

恩尼格玛机与上文提到的“凯撒加密法”没有本质区别,但过程更复杂,破译难度更大。这种机器在由明文变为密文的过程中最大的创新是引入了“转子”,也就是并排3个转轮,而这也是恩尼格玛机最核心和最关键的部位。简而言之,每一个转子上都对应有26个字母(如果是德文的话,换成德语字母就是),当加密的人每输入一个字母时,其中一个转子便转动一下,这样如果你输入的是A,那么显现出来的结果就可能是B。不过由于并排安装有3个转子,第一个转子影响第二个转子,第二个转子影响第三个,所以最终的结果很有可能是D。

最早计算机怎么破译情报(详解恩尼格码机)(2)

这样一来,任意一个字母对应的密文都有26×26×26等于17576种结果,尽管数目庞大,但如果一种情况一种情况地尝试的话,破译出来也不是什么难事。而且如果考虑到同时使用几台,甚至几十台恩尼格玛机的话,破解的过程可能更快,这种地毯式的“暴力破解”方法是不是与现代计算机的理念相似?事实上最早的机械式计算机正是发源于此,当然其中的过程更为艰辛和曲折,因为德国人不会简单到只使用3个转子,到战争后期德国海军使用的恩尼格玛机常常有4个转子。

每添加一个转子,对应的可能结果就乘以26,面对这样呈指数级增长的难度,你以为就此结束了吗?没有,转子与转子之间的相对位置可以互换,以3个转子为例,如果是1号、2号、3号的话,就有“1-2-3,1-3-2,2-1-3,2-3-2,3-1-2,3-2-1”共6种情况,每种情况又对应17576种结果。不过这还不是最要命的,在转子与转子的每个字母之间,德国人又设置了连接板,可以在发报的瞬间将两个字母进行互换,这样又多出100391791500种情况。所以综合下来,即使只使用3个转子,最后的结果也有17576×6×100391791500,即大约1亿亿种可能。

最早计算机怎么破译情报(详解恩尼格码机)(3)

如果使用现代计算机进行“暴力破解”,这个数目只需要13分钟就能搞定,但在上世纪四十年代,这种量级的操作是不可想象的。不过这个世界的奇妙之处就在于“有矛必有盾”,就在谢尔比乌斯发明出恩尼格玛机的同时,波兰人雷耶夫斯基和他的两个学生敏锐地捕捉到这种机器的军事潜力,因此在二战爆发之间就致力于破解这种机械。作为纳粹眼中的劣等民族,波兰被攻破之后,雷耶夫斯基随即流亡英国,在这里他遇到了包括图灵在内的一大批顶尖人才,而恩尼格码机最终正是由这些“最强智库”破解完成。

面对恩尼格玛机令人瞠目的可能情况,雷耶夫斯基明白靠“暴力破解”几乎是不可能的,不过他们很快就发现了恩尼格玛机的漏洞,即一个字母可以被加密成任意一个字母,但不会被加密成它本身,而正是这个漏洞大大降低了破解的难度。尽管从1亿亿种可能结果中排除其中一种,剩下的数目依然庞大,但图灵他们很快又发现了一个新的BUG,那就是德国的密码明文中经常出现同一句话,诸如“第三帝国万岁”之类的。你说你说事就说事吧,非要喊两句口号,最终的结果就是为这些最强大脑提供了“已知明文攻击”的依据。

最早计算机怎么破译情报(详解恩尼格码机)(4)

在一次次破译与反破译的较量中,人们逐渐发现靠天才发现漏洞的方法有着太大的不确定性,最保险同时也最笨的方法实际上就是地毯式的“暴力破解”,而要达成这样一个结果必须能够实现短时间内的海量运算,于是世界上第一台机械式计算机由此诞生。

,