Mathematicians go to war: crypto warfare escalates acr
讲了恩尼格玛机的加密原理,这节来说说恩尼格玛机是怎么被破解的。
这是密码学史上最著名的攻防战。
很多人都知道,恩尼格玛机最终是被图灵破解的,电影《模仿游戏》说的就是这件事。
所以在大众心中,自然会觉得:
恩尼格玛机是图灵在战争胶着状态下,凭一己之力攻破的,从此图灵的人生就升了一级。
其实这样的理解,有两个错误:
第一,恩尼格玛机的破解难度极高,它并不是一道难解的数学题,而是一套由情报部分负责运转的复杂的机械电子设备,所以光有脑子是不够的。准确来说,它是各国科学家和军人通力合作才破解的,图灵只是完成了最后一步。
前面至少有5个关键性的突破,如果没有它们,图灵是没法破解恩尼格玛机的。
这五个突破分别是:
1. 波兰密码学家与法国间谍合力搞清了机器的内部结构;
2. 波兰政府把密码学家破译的成果分享给了英国和法国;
3. 英国海军成功捕获了德国的一艘舰艇,从上面得到了一台真实的恩尼格玛机和一本钥匙簿;
4. 德军士兵在使用恩尼格玛机时,经常不按规范操作;
5. 盟军采用诱骗战术让德军故意发送特定词语。
有了上面5个前人做出的突破,在破解恩尼格玛机“万事俱备,只欠东风”的时候,图灵正好出现在正确的时间、正确的地点,最终发挥出常人难以想象的智力破解了它。
第二,图灵完全没有因为破解恩尼格玛机而受到应有的嘉奖。
图灵和那个年代所有在英国密码部门工作的同事直到去世,都不知道自己的成果具体被用在了哪场战斗,破译的消息挽救了谁,也不知道自己的工作对后世产生了什么影响。
图灵破译恩尼格玛机是多么耀眼,多么有价值的结论,都是在他去世后20年才为人所知的。
知道这两个典型误读后,我们再来看恩尼格玛机是怎么一步步被破解的。
其实破解的最大动力,就是威胁下的恐惧感。
一战后世界处于暂时的停火状态,英法虽然知道德国开始启用恩尼格玛机,也发现自己没有能力破解,但因为有《凡尔赛条约》限制德国军力发展,英法的密码局就没有特别重视破解方法。
当时对恩尼格玛机最重视的国家,你可能想不到,是波兰。
这个国家东边经常被苏联渗透,西边的德国又谋划着收复失地,所以波兰的警惕性极高,总感觉随时会被两边的强敌攻陷,从没放松过密码学研究。
他们先是弄到了一台商用恩尼格玛机,不过马上就意识到军用版的和商用版内部结构不一样。
后来听说法国间谍从德国的叛徒手里,弄到了军用版的《使用说明书》和《钥匙指南》两份重要资料,就强烈要求分享。法国密码局自己试了试破解不了,就转手把材料给了波兰人。
波兰密码学家分析后发现,说明书只能帮他们搞懂军用版的内部结构,但还是破解不了。因为当初德军就是假设敌人也有一模一样的机器,还是不能破解的情况下,才批准使用恩尼格玛机的。
那破解的关键是什么呢?
是要知道每次加密前人工设定的初始状态。
这个初始状态,包括3部分:
1. 设置接线板,要从26个字母中任意挑出6对儿接好;
2. 设置编码器中三套齿轮的前后顺序;
3. 设置每个齿轮的第一个字母是什么。
操作员每个月都会收到一本新的密码簿,上面记录着每天的初始设定。
但德国人并不会整整一天所有信息都使用密码簿上的这一把钥匙,这太危险了。因为当信息量足够多的时候,钥匙是很容易被猜中的。就算没有被猜中,比如说密码簿被特工截获了,那也是巨大的损失。
为了堵上这个漏洞,德国人其实是每发一条信息,都单独使用一把钥匙。
或许你马上就感觉这不太可能,因为要发那么多信息,还要单独约定每条信息的钥匙,这不又变得繁琐的过程了吗?传递钥匙的过程又是怎么实现呢?
德国人当时是这样做的:
这个机器每天的初始状态里,需要设置的3个部分中,有两个全天都是不变的。唯独一个变的,就是这三个齿轮每个齿轮的第一个字母是什么。
假设那本密码簿里,当天对应的3个字母是QCW,这并不是说今天所有消息都用它当钥匙,实际上当天每条消息都有一把小钥匙,QCW只是用来给当天无数把小钥匙加密的总钥匙。
具体的技术细节,下面我详细说说:
发信息前,先把齿轮的初始状态设为QCW,然后脑子里随意想3个字母,比如说ABC,用设置成QCW状态的机器给ABC加密,比如说加密后ABC变成了BMW。但一次还不够,还要再加密一次,比如第二次ABC又变成了NBA。然后把两次加密的结果并列写一起,形成BMWNBA。
这六个字母形成之后,这段信息真正的消息主体是从第七个字母才开始的。
那你可能要问,干嘛要加密两次呢?有两个功能。
1. 让对方知道对应当前这条信息的小钥匙到底是什么。
收信方如果收到了以BMWNBA六个字母开头的密文后,他怎么做呢?他也要查一下当天的密码簿,一看当天要设置成QCW,那他就也这样设置。用QCW去解码刚才这六个字母,就会发现是ABCABC。
他就会知道,对应这条消息的后面内容主体的小钥匙是用ABC解密,然后再把ABC当做齿轮的初始值,去解码后面消息的主体,就知道说的是什么了。
2. 确认信号在传输中没有被干扰,或者对方操作没有失误。
因为任何失误和干扰都会导致解码后,信息的前六位不是两次重复的样子。所以只要收信方发现不是两次重复的格式,就会丢弃掉这段,让对方重新发。
所以,密码簿里写的当日钥匙QCW,其实只是给当天成千上万条小钥匙加密的总钥匙,是钥匙的钥匙。
这样一来,就安全多了。
面对复杂的恩尼格玛机,单纯依靠语言专家不行了,波兰找来了20位数学家。这是密码学有史以来,第一次把数学提到这么重要的位置。在短期高强度培训后,又从中选出3位在破解上能力最强的。
就是他们,找到了第一代恩尼格玛机的破解方法。
具体的破解过程,大概是这样:
因为之前间谍透露的消息,数学家们知道每条消息的头部都是6个字母。它的样式是什么呢?就是ABCXYZ的样式。这些,就是破解的关键。
所以说,数学家们面临的难题就是:
有一堆6个6个的字段,比如说ABCXYZ,现在我们知道,A和X对应同一个原文,B和Y对应同一个原文,C和Z对应同一个原文,而ABC和XYZ又是由同一个钥匙加密而来的。
现在的问题是,求这个钥匙是什么?
数学家的方法很复杂,省略不讲,直接给你说结果——把当天截获的信息中,所有可以对应的字母都找出来。
比如在ABCXYZ中,A和X是对应的,但是又在某些六位中,X还能跟F对应;可是在其它的对应中,又能找到F又对应回A。你看,从A出发,又绕回了A,正好凑成一个环。
那我们数一下,形成这个环涉及了3个字母——AXF。所以在这个环上,连接数就是3。
而且A可不止有这一种方式可以绕回A,当天那么多条消息中,A还有其他方式也能绕回A,但可能需要的连接数比较多。
没关系,把它们都总结出来。
这样,数学家就总结出钥匙字段中第1个字母有几种可能能形成环,每个环上又涉及到几个连接数。同样的,第2个字母也能找出有多少条环,也能找出有多少个连接数……
每个字母分别会出现几条环,每个环上有几个连接数。直到把所有的规律和对应的初始值做成一本大字典,这个工作才算结束。
这个收集整理工作一共进行了一年多的时间,然后就发现:
环的数量、连接数的数量,是由恩尼格玛机初始设定决定的。
最后的破解任务就是查表——先截获当天的密文,统计这6个字母一共形成了几种环,每种环里又有多少个连接数。这些特征掌握之后,再去查查字典里满足这些环和连接数的条件的初始值对应的是哪个,就能知道敌人当天的初始值是怎么设定的了。
所以第一代的恩尼格玛机,就这样被破解了。
最后,我们再从数学的角度,看看恩尼格玛机的破解。
这个破解方法是到现在为止,让人听了最费解的。这不只是因为破解的细节比较多,还是因为我们使用了数学工具。
你可能会说,破解第二代的移位法和替代法,不也用了数学的频率分析吗?
没错。虽然频率分析法也是数学工具,但频率分析中字母出现的概率有特定值这种想法,依然有着浓重的猜字谜的成分。这就意味着,数学参与的计算过程和破解原理之间的对应关系非常浅显。
但到了恩尼格玛机,这种浅显的对应关系就不再有了。
我们可以想想,破解恩尼格玛机时我们在做的运算动作是什么?
对,就是去数截获的信息里字母环的数量和每个环上的连接数量。这个计算过程非常简单,就是数一数嘛。但环的数量和连接数,与恩尼格玛机的内部结构是怎么对应的呢?就不容易想了。
但经过详细统计后,机械电子结构和背后的数学描述却精确的吻合,每个齿轮的动作都和环与连接数,有逻辑关系。这就是数学方法,超越头脑风暴式猜字谜的最好例证。
虽然之前说过,恩尼格玛机彻底破解有很多因素,还包含了不少间谍伎俩,但起最重要作用的,就是数学。
在解密中,数学所占的成分会越来越重。
网友评论