人性弱点:图灵破解恩尼格玛机的关键Human frailty: Turing's key to unlocking the e
恩尼格玛机的破译一共有两次:
第一次是上节讲的波兰数学家做出来的,
第二次是图灵做出来的,这也是本章的重点。
为什么要破解两次呢?因为这两次使用的恩尼格玛机,结构上不一样。
如果第一次破解难度是65的话,第二次破解难度就要到95了。这还只是难度对比,如果从必要性上对比,第一次破解甚至都是不必要的。
因为波兰情报局在那7年时间里,一直能通过德国间谍搞到每天的钥匙。
情报局只是担心万一今后恩尼格玛机改版,自己没有B方案,所以希望密码学家提前动手。那几年,当那帮密码学家每天埋头破解的时候,情报局高层其实早就提前知道每天的结果了。
可就在二战开打前一年,两个破解渠道一起断掉了:
首先,德国把恩尼格玛机的编码器齿轮增加到了5个,接线板的数量同时也增加了;
其次,那个长期提供当日钥匙的间谍,也突然消失了。
恩尼格玛机接线板(其中接好了2根)
1939年4月,德国撕毁和波兰的互不侵犯条约。所有人都能预见到,德军马上要打来了。波兰坐不住了,赶紧把至今为止其他国家都还不清楚的第一版军用恩尼格玛机的结构、破解方法,公布给了盟友。
英国对波兰提供的方案很重视,甚至为了信息安全扩充了密码队伍。
从从前的密码局40号房换到了布莱切利园(Bletchley Park),面积扩大了几十倍;工作人员从最初的20多人,扩增到五年后的9000多人。
与此同时,员工的结构也有变化。从前主要是语言学家,现在的主力是数学家。大量招募数学家,这是波兰人特地嘱咐英国人的。
英国的资源比波兰丰富得多,所以虽然恩尼格玛机升级过,但靠着堆人力、堆机器的方法,在战争初期,英国竟然可以勉强应付新版恩尼格玛机。
但这时候的破解,可以说是在摸透了人性规律的情况下做出来的,比如:
设定那3个初始值时,按操作规范应该是随机设置,但实际上德军操作员根本做不到这一点。类似QWE、ADS、JKL这样键盘上3个相邻字母的情况,经常出现。操作员就是懒,随手摁出来。
就算3个字母不连着,但手指的活动总是有规律的。3个字母在键盘上的位置总会趋向于集中,所以这些组合总是解码者优先尝试的。
甚至还有用女朋友名字的前三个字母的,以至于后来英国的密码专家每次都先试女人名字。
除此之外,德军的恩尼格玛机操作指南也有漏洞。
比如,5组齿轮中选3组作为当天的编码器,但却有一个规定——不能让同一个齿轮在同一位置连续出现2次。听上去好像是避免了重复,但其实减少了齿轮组合一半的可能性。
还有,接线板对调字母时不能对调相邻的两个字母,比如B不能和A对调,也不能和C对调,理由是这样对调太容易被识别出来。结果这样一规定,可能性的总数又锐减。
所以,英国最初就是利用一切可利用的人性的漏洞、规则的漏洞,外加灵活运用波兰的老方法,勉强支撑着对恩尼格玛机的破译工作。
但这种水平的破译,是远远不够的。一旦德国发现,每条信息的前6位是破译者可以抓住的漏洞的话,就会改变钥匙的传递方式。那样的话英国就没办法了。
所以,图灵的任务就是找到一种全新的破解法,完完全全的猜透恩尼格玛机。
图灵是怎么做的呢?简单说,他也是从一些军事规律导致的漏洞入手的。
比如,德军消息里类似——
无特殊情况(Keine besonderen Ereignisse)
(Heil Hitler)……
这样的词语,会经常出现。
图灵还分析出了一个更好用的词——“天气”(wetter)。这个词每天早上6点到6:05必然出现,而且大都出现在信息的开头,此外这个词里出现了两个t挨着的情况。
根据我们之前讲过的:
恩尼格玛机对同一个字母连续加密的话,是不会加密成相同字母的,而且这个字母也不会被加密成它本身。
根据这两个规则,图灵就可以拿着wetter这个字段当作原文,对照着密文一位一位的挪动,排除掉那些不符合刚刚两个规律的方案。
又因为wetter很高概率出现在信息最开头,所以只要试几次,就能发现wetter对应的密文到底是哪几个字母。
到了这儿,只是成功的第一步。
因为现在图灵得到的题目就相当于说:已经知道了6个原文和它对应的6个密文,让你求出恩尼格玛机的初始设定。
说这个问题怎么解决呢?
最直接的方法,就是用恩尼格玛机所有的初始设定,一个一个去试。把原文wetter输入,看看密文和我们截获的一样不一样。如果一样,那就说明初始值找对了。
但是,军用版恩尼格玛机的初始值有1.6×10^20那么多种,是不可能用暴力去试的。
所以,可用的方法只有一个——
在手头已有的少量原文和密文之间,想办法建立它们对应的数学关系,来反映出恩尼格玛机的内部结构。
其实这个想法,和波兰破解第一版军用恩尼格玛机有点像。
图灵把原文写一行,密文写在下一行,排成两排,他管这个叫“对照文”(Crib)。然后也建立了环,环上也有连接数的概念。具体细节在这里没法说了,因为非常繁琐,而且和密码学知识的逻辑没太大关系。
我们知道结果就行——图灵通过数学过程的转换,军用版恩尼格玛机1.6×10^20这么多可能性,一下被缩减到了105万种。
可能有人说“这也不少啊”,但这已经是所有可能性的一百万亿分之一了。
这个105万的计算过程,肯定也不能由人来做了,而是用一种机器来破解。这个破解机,就被起名叫“炸弹”。炸弹体积挺大,有2米见方,炸弹机越多破解就越快。
炸弹机(一台)
1940年5月10日,德军也不知是察觉到了什么,突然改变了交换钥匙的方式。每条信息开头的6位,不再是从前的格式了。英国情报部门从此,完全失去了破解德军恩尼格玛机的能力。
好在这个空窗期并不久,3个月后,依照图灵方法制造的第一台炸弹机投入使用。在之后2年里,有50台炸弹机投入使用,英国又能破解德军的密码了。
到1942年的时候,破解德国陆军恩尼格玛机当天的钥匙,大约只需要1小时的时间。
即便有了炸弹机,破译也不轻松。德国加密水平最高的是海军,他们甚至在通讯中都不使用格式化的语言,所以就没有固定的原文可以参考。
但英军也有办法,就是在特定地点布水雷,这些水雷其实是信息诱饵。德军发现水雷后,肯定会发这样的电报:在东经xxx,北纬xxxx水域,发现大量水雷。这样一来,原文中很多的词就可以确定了。
不过为了防止德军起疑,这招不能用得太频繁。
英国很重视来之不易的破解,所以尽量装成什么都不知道。比如说已经知道德国军舰的位置,准备去偷袭,却要先派出侦察机像模像样的巡航一番。好像德军舰艇的位置是通过侦察机捕捉到的,而不是破解密码得到的。
图灵破解海军版恩尼格玛机的实际效果怎样呢?我给你两组数据你就知道了:
1. 破解之后,盟军全年被击沉船只的吨位下降了60%。
2. 德军潜艇的损失率,从破译前的不到7%,猛增到50%。
利用这套破解装置,也成功搞定了日本和意大利的密码系统。
虽然有些人评论得比较夸张,说“破译了恩尼格玛机,盟军才最终胜利”。但公平的说,如果恩尼格玛机没被破解,二战至少要延续到1948年以后。所以你看,全世界至少有上千万的家庭受惠于密码学家。
可密码学家大都没有受到什么嘉奖,因为保密法涉及国家安全。
二战结束后,布莱切利园就彻底解散,炸弹机也拆解了。少部分密码学家进入改制后的政府通讯总部做公务员,大部分人又回到了从前的生活中。而且他们必须严守秘密,否则就会被判刑坐牢。
其他军人都能谈论自己的英雄事迹,而密码学家只能默不作声。
根据《保密法》的限制,二战中的密码学资料在1970年才公布,第一本专门写布莱切利园的书在1974年才出版。而这时,很多当年参战的密码学家已经去世了。
图灵就是这样,他一辈子也不知道自己的破解对战争具体产生了什么效果,战后继续从事数学研究。
1952年时,因为被发现有同性恋行为,被强迫执行了化学阉割。后来在雌激素的作用下,身材发胖,胸部变大,精神更是遭到折磨。最终在1954年的夏天,吃下氰化物浸泡过的苹果自杀了。
图灵在破解恩尼格玛机上所有的成就,都是在他去世以后20年才为人所知的。
回头看密码学的发展,你会发现有一个东西的神秘感在逐渐褪去,那就是关于“如何加密”的操作过程。
在隐藏法的年代,如何加密的细节绝对属于核心机密;
而在替代法和移位法中,大部分操作原理人们都知道,只是不知道具体移动了几位;
但到了机械电子加密的时代,加密设备的工作原理,不论是理论还是技术细节,敌我双方都了如指掌,密码的安全性全部落在钥匙上,而不再依赖于加密的操作细节。
这个趋势在之后还会更明显,在后面还会讲到。
图灵破解了恩尼格玛机后,在加密解密的对抗中,解密一方又暂时占据了上风。
下一节,讲讲加密一方的反击——诞生在计算机时代的第五代加密法