题记:破解恩尼格码,先从给图灵提供肩膀的巨人—马里安.雷杰夫斯基讲起。上一期我们介绍了恩尼格码机的原理及其在商业及军事方面的运用。那么如此周密的加密系统最后是如何被科学家们破解的呢?本期我们先从1932年波兰人最开始尝试破解商用恩尼格码的时候讲起。早在第二次世界大战开始之前,德国便在商业情报交换上使用了恩尼格码机。
当时在德国密码处工作的施密特非常厌恶纳粹专制,便向法国情报人员提供了有关恩尼格码机的操作和设计的资料。但法国并没有重视这件事,毕竟当时德法两国国力还是存在相当的差距,法国人觉得即便是没有破解这种密码也不会对战争造成太大的影响,便在提出德军密码无法破解之后草草放弃对恩尼格玛机的研究。然而当时波兰的处境却远远比法国危险。由于凡尔赛条约将德国的大片领土划归给波兰,波兰便是德国发动战争的第一目标国家。
这样险峻的形势促使了波兰密码学的大跃进。在波兰的要求下,法国把从施密特那里得来的情报交给了波兰人。波兰人通过恩尼格码设计和使用上的缺陷破译了商用恩尼格码机。当时的商用恩尼格码机上只有三个转子。每封电文的密钥(转子起始位置)由电报发送方随机选取,并重复两次输入并由当日密钥加密后在电报最开始的地方发给接收方。
例如发送方选取ABC作为该电文的密钥,操作人员会在恩尼格码机上连续输入两次ABC,并由当日密钥加密成为六个字母。该六个字母便被放到了每封电文的最前面。接收方在接到电文之后由当日密钥解密最开始的六个字母,并按照解密后的信息将转子位置设为ABC,并开始解密电文。
这种商用恩尼格玛机在设计和操作上存在着致命的缺点。在设计上,首先无论一个字母被加密多少次,都不会得到同样的字母。也就是说字母A无论被加密多少次都不可能得到字母A。其次,恩尼格玛机毕竟是机械产品,其转子总会有规律地周期循环。在操作上,每封电文最开始的六个字母也是由循环所得。基于这些缺陷,波兰数学家马里安.雷杰夫斯基在每天截获的大量电文中找出了判断转子初始位子的方法。
然而波兰人对恩尼格码的破解在1938年结束。为了战争准备,德国人同时在几个方面加强了恩尼格码的加密能力。首先,德国军方将原来的3个转子增加到了5个,使用时随机在5个转子中选3个。这意味着光这点改变波兰然便需要5 x 4 x 3 = 60台原先的“炸弹”才能破译恩尼格码。这已经大大超出了波兰当时的预算。其次,德国人在恩尼格码机上加入了接线板,允许6组字母交换,并最终增加到允许10组字母交换。
从上期内容我们知道,接线板的加入大大增加了密钥的总数。最后,德国意识到了重复操作的隐患,取消了每封电文开头用当日密钥加密电文密钥的方式,取而代之的是一张密码纸,列出一个月内每天的密钥。每天的密钥在密码纸的设定下于第二天更新,而这张密码纸每月更新。为了增加保密性,密码纸经过特殊处理,纸上的内容遇水即消失。同时更新如此多的加密方式大大的超出了波兰的预期。
由于时间的紧迫以及预算的短缺,波兰不得不放弃了对军用恩尼格码的继续研究。
1939年9月,德国闪袭波兰占领华沙,波兰灭亡。所幸的是对恩尼格码的研究成果并未随着波兰的灭亡而消失。波兰在战前已将波兰制造的恩尼格码机以及“炸弹”的设计图纸交给了英国和法国。恩尼格码便这样度过了英吉利海峡来到了英国。在那里等待它的将是最后的灭亡。
经过上述一系列的改进,商用恩尼格码机的缺陷基本上已经不存在了。转子的增加及接线板的设计使得转子机械运动所带来的周期循环的缺陷变得微不足道。改变后的操作方法也杜绝了之前每封电文开头所出现的规律性重复。在本文开头中提到的种种缺陷,如今仅剩的便是恩尼格玛机不会用一个字母加密其本身这一特性了。那么英国的科学家们又是如何在波兰人研究的基础上,从这个仅剩的缺陷中撕开一条口子破解了恩尼格码呢?且看下回分解。