也会转动。这就保证了每次按键得到的结果都不一样,也就会产生很难破译的复式密码。
为了达到这个效果,最常见的布局就是使用一个防倒转齿和防倒转爪系统。每个转子都有26个防倒转齿,一组防倒转爪与这些齿相接。这些爪在每次按键后都会向前推,如果防倒转爪与防倒转齿相接的话,转子就会旋转一点。
在德国防卫军恩尼格玛机中,每个转子都有一个可调节的带缺口的外环。5个最基本的转子(I-V)各有一个缺口,而附加的转子VI。VII,和VIII各有两个缺口。在转子转动到某一点时,第二个转子的防倒转爪正好位于它的缺口之内,这就使第二个转子在下一次按键后也会转动。当防倒转爪位于缺口之外时,它就只会沿着另一个转子外环的光滑边缘滑动。在所有转子都只有一个缺口的系统中,第一个转子每转26次就会使第二个转子转动一次,同样的,第二个转子每转动26次就会使第三个转子转动一次。第三个转子转动的同时第二个转子也会转动。[6]
这种两个转子同时转动的现象使它与计程器区别开来。这个现象出现于下述情况:第一个转子转动完之后带动了第二个转子转动一点,如果这时第三个转子的防倒转爪正好落入第二个转子外环的缺口内,那么在下一次按键时,第三个转子就会转动一点,同时它的防倒转爪也会推动第二个转子的外环,这样就使第二个转子连续两次转动。
当拥有三个转子,并且第一和第二个转子的外环各有一个缺口时,一台恩尼格玛机就会拥有26 × 25 × 26 = 16,900个组合(不是26 X 26 X 26,因为第二个转子会与第三个转子一起转动,参看参考资料中的一个PDF文件,它解释了这个现象)。在历史上,每条信息的长度都被限制在几百个字母以内,所以在同一条信息中输入同样的字母产生同样的密码的几率是很小的。
为了给1942年启用的海军用第四个转子腾出空间,反射器经过了改造变得非常薄,多出来的空间就可以放入第四个特殊的转子。转子系统的其余部分不做改变。因为整个系统中只有三个防倒转爪,所以第四个转子从来都不会自动转动,但是它的位置可以手动调节。
当按下一个键后,转子会在电路接通之前转动。
这是恩尼格玛机转子组。三个转子位于右边的固定接口和左边(标着B)的反射器两个装置之间。
[编辑] 固定接口
固定接口,又称作定子,是将插销或键盘与显示灯连接起来的装置。尽管固定接口中的线路分布对于密码的安全性影响很小,但是这还是阻碍了波兰密码学家马里安·雷耶夫斯基对恩尼格玛机密码的破译过程。商业恩尼格玛机的键盘上,Q键代表A,W键代表B,E键代表C,依此类推,而军用恩尼格玛机的键对应的就是键上的字母。
[编辑] 反射器
除了早期的A型和B型之外,恩尼格玛机的最后一个转子之后都有一个反射器,反射器是恩尼格玛机与当时其它转子机械之间最显著的区别。它将最后一个转子的其中两个触点连接起来,并将电流沿一个不同的路线导回。这就使加密过程与解密过程变得一致。但是,反射器也使恩尼格玛具有了如下性质:加密后得到的字母与输入的字母永远不会相同。这在概念上和密码学上都是一个严重的错误,这个错误最终被盟军解码人员利用。
在商业用恩尼格玛机(C型)中,反射器可以有两种不同的安装方式。在D型中它可以有26种方式。而在军用恩尼格玛机中,反射器可以像转子一样转动。
在德国陆军和空军版恩尼格玛机中,反射器是固定的,并且不会旋转;他们用的恩尼格玛机一共有4个版本。最初的版本被标记为A型,1937年11月1日它被B型取代。第三种型号,C型,在1940年被短暂地使用过,它最终被木屋6号破解。[7]D型拥有一个可以重新接线的反射器,首次测试于1944年1月2日,这个版本允许操作员来调整接线方式。
[编辑] 接线板
接线板位于恩尼格玛机前部键盘的下方。当用到接线板时,操作员最多可以在上面接13条线。在此图中,接线板上共有两对字母被连接起来(S-O和J-A)。
接线板允许操作员设置各种不同的线路。它首先在1930年被用于德国陆军,很快地,德国海军也开始使用它。接线板极大地增强了恩尼格玛机的保密性,它的使用相当于多了不止一个转子。没有接线板的恩尼格玛机可以被很容易地用人工方法破解,但是加上接线板后,盟军的密码专家就需要使用特殊的机器了。
接线板上的每条线都会连接一对字母。这些线的作用就是在电流进入转子前改变它的方向。为了解释它的原理,我们把E插口和Q插口连接起来。当操作员按下E键时,电流就会先流到Q插口(相当于按下Q键)再流经转子。接线板上最多可以同时接13条线。
电流会从键盘流经接线板,之后进入转子。接线板上的每个插口内都有两个插孔,当将插头插入时,上插孔(连到键盘)与下插孔(连到转子)之间的连接就会被断开。另外一个插口内的上插孔会与此插口内的下插孔连接起来,而下插孔会与此插口内的上插孔连接起来,这样就完成了两个插口之间的连接。
Schreibmax是一种可以与恩尼格玛机连接的打印装置,有了它,操作员就不用辛苦地抄下显示板上的字母了。
[编辑] 附件 Uhr配件
M4版恩尼格玛机配备的一个很有用的附件就是Schreibmax,这是一台小型打印机,它可以将字母打在一张纸条上。这就使德军不用再使用第二个操作员来记下显示板上的字母了。Schreibmax位于恩尼格玛机的顶部并与显示板连接。为了安装Schreibmax,显示板的盖子与里面的所有灯泡都需要被拆下。Schreibmax除了使用方便之外还可以提高保密性,因为它可以放置在离恩尼格玛机很远的地方,这样就不会有第三者看见未加密的原文了。
另外一个附件就是独立式显示板。如果恩尼格玛机配备了一个附加的显示板,那么装它的木盒就会更宽。安装独立式显示板也要求将显示板的盖子与里面的灯泡拆下。
1944年德国空军启用了Uhr(钟)系统。这是一个包含了一个旋钮的盒子,这个旋钮有40种位置。这个盒子的功能相当于接线板。
[编辑] 数学描述
恩尼格玛对每个字母的加密过程可以以数学的角度看作为一个组合过程。假设我们有一台德国陆军/空军版3转子恩尼格玛机,让P表示接线板的连线,U表示反射器,L,M,R表示左,中,右转子。那么加密后的信息 E 就可以表示成
E = PRMLUL ? 1M ? 1R ? 1P ? 1E0
[编辑] 操作步骤
在使用中,恩尼格玛机每天都需要一份键盘设置清单和一些附加文件。德国海军用恩尼格玛机的操作步骤比其它军种使用的更复杂并且更安全。海军的密码本也是用水溶性的红色墨水在粉色纸上印制而成的,这样己方人员就可以在它可能被敌人缴获的时候轻松地将它销毁。图中的密码本是盟军从U-505号潜艇上缴获的。
德军的各支部队使用一些不同的通讯线路,每条线路中的恩尼格玛机都有不同的设置。为了使一条信息能够正确地被加密及解密,发送信息与接收信息的恩尼格玛机的设置必须相同;转子必须一模一样,而且它们的排列顺序,起始位置和接线板的连线也必须相同。所有这些设置都需要在使用之前确定下来,并且会被记录在密码本中。
恩尼格玛机的设置包含了以下几个方面:
?转子:转子的结构及顺序。
?起始位置:由操作员决定,发送每条消息时都不一样。 ?字母环:字母环与转子线路的相对位置。 ?接线板:接线板的连线。
?在末期版本中还包括了反射器的线路。
恩尼格玛机被设计成即使在转子的线路设置被敌人知道时仍然会很安全,尽管在实际使用中德军尽了全力来防止线路设置被泄露出去。如果线路设置为未知,那么最多需要尝试10114种情况才可能推算出恩尼格玛机的密码;当线路和其它一些设置已知时,也最多需要尝试1023次。[8]恩尼格玛的使用者对它的保密性很有信心,因为敌人不可能使用穷举法来找出密码。
[编辑] 指示器
恩尼格玛的大部分设置都会在一段时间(一般为一天)以后被更换。但是,转子的起始位置却是每发送一条信息就要更换的,因为如果一定数量的文件都按照相同的加密设置来加密的话,密码学家就会从中得到一些信息,并且有可能利用频率分析来破解这个密码。为了防止这种事情发生,转子的起始位置在每次发送信息之前都会被改变。这个方法被称作“指示器步骤”。
图2。当盖子盖上后,恩尼格玛就可以开始使用了。转子的外缘从盖子内伸出,使操作员能够改变它的位置,而且这些转子现在的位置(RDKP)可以通过一系列小窗让操作员看见。
最早期的指示器步骤成为了波兰密码学家破译恩尼格玛机密码的突破口。在这个步骤中,操作员会先按照密码本中的记录来设置机器,我们假设这时的转子位置为AOH,之后他会随意打三个字母,假设为EIN,接着为了保险起见,他会将这三个字母重新打一遍。这六个字母会被转换成其它六个字母,这里假设为XHTLOA。最后,操作员会将转子重新设置为EIN,即他一开始打的三个字母,之后输入密电原文。
在接收方将信息解密时,他会使用相反的步骤。首先,他也会将转子按照密码本中的记录设置好,然后他就会打入密文中的头六个字母,即XHTLOA,如果发送方操作正确的话,显示
板上就会显示EINEIN。这时接收方就会将转子设置为EIN,之后他就可将密电打入而得到原文了。
这个步骤的保密性差主要有两个原因。首先,操作员将转子的设置打到了密电中,这就使第三方能够得知转子设置。第二,这个步骤中出现了重复输入,而这是一个严重的错误。这个弱点使波兰密码局早在1932年就破解了二战之前的德军恩尼格玛系统。但是从1940年开始,德国改变了这个步骤,它的安全性也就提高了。
这个步骤只被用于德国陆军和空军。德国海军发送信息的步骤要复杂的多。在被恩尼格玛机发送之前,信息会先被Kurzsignalheft密码本进行加密。这个密码本将一个句子替换为了四个字母。它转化的句子包括了补给,位置,港湾名称,国家。武器,天气,敌人位置,日期和时间等内容。
[编辑] 缩写与指导
德国陆军的恩尼格玛机的键盘上只有26个字母。标点符号由字母组合来代替。X相当于空格。在各军种的恩尼格玛机中,X都相当于句号。有一些标点符号在不同军种的密码系统中被不同的字母组合代替。陆军的系统使用ZZ来表示逗号,FRAGE或FRAQ则表示问号。但是德国海军用来表示逗号及问号的则分别为Y和UD。Acht(意为“八”)和Richtung(意为“方向”)中的字母组合CH则由Q来代替。CENTA,MILLE和MYRIA分别表示两个,三个和四个零。
德国陆军和空军将每条信息都翻译成5个字母的代码。使用四转子恩尼格玛机的德国海军则将信息翻译成4字母代码。经常用到的词语代码与原词语的差别越大越好。Minensuchboot(意为“扫雷艇”)这样的词语可以被表示为MINENSUCHBOOT, MINBOOT, MMMBOOT 或MMM354。比较长的信息会被分成几个部分来发送。[9][10]
[编辑] 恩尼格玛的破译
主条目:恩尼格玛的破译
一台接近完成的“炸弹”机复制品
1931年11月8日,法国情报人员与德军通讯部门长官(就是他下令德军使用恩尼格玛机的)