恩尼格码机又叫英格玛机、哑谜机器或者奇谜机,它在二战中大放异彩。它使用的本质还是第二代机密法----替代和移位。但因为可以切换无穷种加密配套组合,所以在对抗频率分析上极为有效。
恩尼格玛机是一种机械电子式的加密机,由一堆齿轮、电线、灯泡、转盘、摇杆组成。其实使用机器做反锁的加密工作在之前也有过,只是因为它们都没有量产,所以也没有流行。而恩尼格玛机,是第一个大规模量产的加密机。
恩尼格玛机由德国人发明,主要包含了3部分,3部分之间由齿轮和电线相连:
操作员只要做好设定,在键盘上敲入原文,经过编码器编码,密文显示板会按规则点亮密文字母,抄写员把点亮字母的顺序记录下来,加密过程就完成了。
这其中最重要的是编码器,下面详细整理编码器的工作原理:
编码器由一堆可以手工设置的机械部件组成,任何地方的调整都会改变加密的结果。其中最大的部件是齿轮式的字母盘,它前后通过导线与敲原文用的键盘,以及密文显示板相连。键盘那边敲一个字母,信号通过导线传给齿轮上的触点,在通过导线传到密文显示板上,原文就这样被加密成另一个字母了。
键盘没敲一个字母,字母盘中的齿轮会往下转一格,齿轮的转动导致线路连接的变化,而连接线一变,又导致了加密结果的不同。所以同一个字母敲入第二次、第三次,输出到密文显示板的结果也都不一样。总之,齿轮能转多少格,就意味着有几套加密法等着轮替。
最早齿轮一圈只有6格,也就是只有6套加密法,后来增加到了26个格。再后来,单套齿轮个数不在增加,而是增加了第2套齿轮,上面也有26个格。只有在第1套齿轮转完一圈后,第2套齿轮才前进一格。这样就相当于26*26套密码。下图是一个3组齿轮的恩尼格码机:
每组齿轮正上方都留有一个小窗口,在使用时,双方约定一个共同的钥匙,比如说yes,然后把这3个窗口在初始时各显示那3个字母。然后他们按照这个顺序编码、解码信息,相互之间就可以通信了。
在通信时,发送端按照约定好的钥匙进行初始设定,然后输入原文,产生一串密文,接收端收到信息之后,把机器设定成约定好的钥匙,输入密文,输出的就是原文。
通过上面的介绍,我们可以知道 恩尼格玛机实际上还是维吉尼亚加密法的改进,优势就是它的钥匙看似可以随意设定。
但是这种方法可以通过穷举法暴力破解。比如我们使用3组齿轮的机器进行加密,初始钥匙就262626 = 17576种可能。我买100台这样的设备,每个机器尝试其中的175种,说不准几个小时就能破解。
设计者早就考虑到暴力破解的问题,所以他们在键盘和编码器之间又增加了一个叫“接线板”的结构,可以调换6对字母的线路。比如你在键盘上按的是a,但电流信号却是沿着b的线路输出到编码器上的。通过调换26个字母中随意的6对,组合一下子就增多到了1000多亿种,增加了破解的难度。如下图:
德国在二战期间在 每发一条信息时,都单独使用一把钥匙 。但是这样需要厚厚的密码薄,德国人就想出了以下的一个方法。
德国每个月都会发一本新的密码薄,里面记录着 每天接线板的状态和初始值的设定,但这个初始值并不是对原文进行加密的,而是对钥匙进行加密 ,然后写到用实际钥匙加密之后的密文前面。具体操作分为几个步骤:
1、假设齿轮的初始状态为QCW,然后钥匙为ABC,用设置成QCW状态的机器给ABC加密,假设变成了BMW,然后输入第二次ABC,加密后变成NBA。然后把两次的结果拼到一起,形成BMWNBA。
2、把机器初始状态设为ABC,然后对原文进行加密, 形成一串密文,然后把BMWNBA加到密文的前面。
3、解密时把机器初始状态设为QCW,然后对开头的六个字母进行解密,发现是ABCABC。然后在把机器的初始值设为ABC,在对剩余的密文进行解密。
这里为什么要对钥匙加密两次呢?是为了确认信号在传输中没有被干扰,或者对方操作没有失误。因为任何失误和干扰都会导致解码后,信息的前六位不是两次重复的样子,这样消息就会丢掉。
很多人都知道,恩尼格码机最终是在二战中被 图灵 破解的,其实这样理解是错误的。恩尼格码机是各国科学家和军人通力合作才破解的,图灵只是完成了最后一步。
破解的过程可以分为5个关键性突破,分别是:
1、波兰密码学家与法国间谍合力搞清了机器的内部结构
2、波兰政府把密码学家破译的成果分享给了英国和法国
3、英国海军成功捕获了德国的一艘舰艇,从上面得到了一台真实的恩尼格码机和一本钥匙薄
4、德军士兵在使用恩尼格码机时,经常不按规范操作
5、盟军采用诱骗战术让德军故意发送特定词语
一战之后,德国虽然战败,但不是完全意义上的战败,虽然对胜利国进行了赔款,但是德国一直憋着一口气,我个人觉得就是这样让德国走上了纳粹的道路。波兰因为跟德国交界,有一些领土争端,而且还很弱小,所以一直防着德国。他们通过和法国的合作,搞到了德国军用版恩尼格玛机的《使用说明书》和《钥匙指南》两份资料。通过这两份资料,他们搞懂了恩尼格玛机的内部结构,但前期没有办法破译它们。
后来波兰找来一些数学家,对每天的信息进行整理、分析、寻找规律,经过一年多的工作。把所有的规律和对应的初始值做成了一本字典,这样破解了恩尼格码机。有点像现在的大数据,经过大量数据的分析,找通性,建模。
但是在二战开打前的一年,德国把恩尼格码机编辑器的齿轮增加到5个,接线板的数量同时也增加了,之前的字典就无效了。1939年德国撕毁了和波兰的互不侵犯条约,波兰坐不住了,赶紧把军用恩尼格码机的结构、破解方法等信息,公布给了盟友。英国对波兰提供的信息非常重视,扩充了密码队伍,把密码局40号房换到了 布莱切利园。
英国刚开始靠堆机器、对人力,在摸透了德军的不规范操作的情况下也 勉强破解 了密码。比如:设定的初始值,按操作规范应该是随机设定,但实际上德军操作员根本做不到这一点,类似QWE、ASD、IOP这样键盘上相邻的字母经常出现。就算3个字母 不连着,但手指的活动总是有规律的,3个字母在键盘上的位置总会趋向于集中,所以这些组合在解码时优先尝试。甚至还有用女朋友名字的前三个字母的。
另外操作指南也有漏洞,比如,当天的齿轮设定,同一个齿轮不能在同一个位置连续出现2次。听上去好像避免了重复,但其实减少了齿轮组合的一半可能性。还有,接线板对调字母不能对调相邻的两个字母,比如B不能和A对调,也不能和C对调,结果这样可能性的总数又锐减。
但这种水平的破译,是远远不够的。一旦德国发现,每条信息的前6位是破译者可以抓住的漏洞的话,就会改变钥匙的传递方式。那样的话英国就没办法了。所以,图灵的任务就是找到一种全新的破解法,完完全全的猜透恩尼格玛机。
图灵从一些军事规律导致的漏洞中破解了密码。比如,德军消息中类似的,“无特殊情况”、“希特勒万岁”这样的词经常出现。还有 “天气” 这个词,每天早上6点到6:05分必然出现,而且大都出现在信息的开头。还有英军对特定地点布置水雷,这些水雷是信息诱饵。德军发现水雷后,肯定会发这样的电报:在东经XXXX,北纬XXXX水域,发现大量水雷。这样一来,原文中很多的词就可以确定了。**图灵就是通过手头已有的少量原文和密文,想出了一种方法,建立了它们之间的对应关系,把钥匙的可能性减少到105万种。**然后通过一个叫“炸弹”的破解机,对着105万种可能进行暴力破解,到1942年的时候,破解德国陆军恩尼格玛机当天的钥匙,大约只需要1小时的时间。
密码学因为涉及到国家安全,所以很多密码学家没有受到应有嘉奖(和我国的核物理学家一样),但是他们对于国家的贡献是不言而喻的。
到这我们发现“如何加密”已经不那么重要了,在隐藏法的世代,如何加密是绝对的机密。而替代法和移位法,大部分原理人们都知道,只是不知道具体移动了几位。但到了机械电子加密的世代,加密设备的工作原理,不论是理论还是技术细节,双方都了如指掌,密码的安全性全部落在钥匙上,而不再依赖加密的过程。
感谢大家,我是假装很努力的YoungYangD(小羊)。
参考资料:
《卓克的密码学课》