恩尼格玛机还结合了机械系统和电子系统。机械系统包括一系列名为转子的键盘,包含字母和数字,相邻地排列在轴上 旋转盘还有一个装置,每次按钮后旋转一个或多个转子。恩尼格玛机上的机械系统各不相同,但它们之间最大的共同点是按钮后最右边的转子都会旋转,有时一些相邻的转子也会旋转。每次按键后,转子的连续旋转会导致加密字母不同。
机械系统运行的原因是产生不同的电流通路,字母的加密由机器自动完成。按键时,电流会流过各种线路,最后点亮其中一盏灯,显示加密字母。例如,如果你想发送一个ANX在信息的开头,操作员会先按A键,然后灯Z就会变亮,Z是加密信息的第一个字母。操作员将继续按照相同的步骤输入信息。
工作图,连续按两次A键后,电流会流经所有转子,通过反射器分别流向G灯和C灯。注:转子上的灰线代表其他可能的线,它们与转子硬连接。连续按两次A键会得到不同的结果,第一次得到的是G,第二次是C。这是因为最右边的转子在第一次按下A键后会旋转一点,这将A键发出的电流发送到完全不同的路线上。
恩尼格玛机的工作原理,只显示4个键、灯等元件。事实上,恩尼格玛机有26个显示灯、按钮、插孔和线路。电流从电池开始①流向双向开关②,再流到接线板③。接线板的作用是键盘②与固定接口④连接起来。接下来,电流将流向固定接口④,然后流经3个(德国国防军)M3)或4(德国海军)M转子4版和德国阿博维尔情报局版 ⑤,然后进入反射器⑥。反射器将电流从另一条线向相反方向导出,电流将再次通过转子⑤和固定接口④,然后到达插孔S,通过另一条电线⑧流到插孔D,最后,通过另一个双向开关⑨去点亮显示灯。
转子
转子是恩尼格玛机的核心部分。每个转子的直径约为10厘米,形状为圆盘形,由硬橡胶或电木制成。一系列由弹簧承载的黄铜管脚在一侧环形排列,另一侧对应于圆形金属触点。管脚和触点代表字母表上的所有字母,典型的排列是A-Z。当两个转子相邻时,一个管脚接触另一个金属接触,形成一个通道。在转子内部,有26条金属线将一个管脚与另一个接触点连接起来,这些金属线在每个转子列方式。
单个转子的加密方法非常简单,它只使用初级替换密码。E键对应的管脚可能会连接到同一转子另一侧的T触点。同时使用多个转子使恩尼格玛机的加密变得复杂。一般来说,一台恩尼格玛机有三个或四个转子转子在输入信息时会旋转,这产生了更安全的加密方法。
当被放进恩尼格玛机后,一个转子可以有26种排列方法。它可以通过操作员旋转。为了让操作员知道转子的旋转,每个转子在转盘外面都有一个刻有字母或数字的环;其中一个字母可以通过一个小窗口看到,并向操作员显示转子的旋转。在早期模型中,字母环固定在转子上,但在后期模型中,操作员可以通过调整字母环的位置来调整转子中的线路。
每个转子上都有V形痕迹(有时有多个),用来控制转子的旋转。这些痕迹位于军用恩尼格玛机的字母环上。
为了避免产生简单(易于破译)的加密信息,一些转子在操作员连续按下同一键时也会旋转。这确保每个按钮的结果不同,并产生难以破译的复式密码。
为了达到这一效果,最常见的布局是使用防倒转齿和防倒转爪系统。每个转子都有26个防倒转齿,一组防倒转爪与这些齿相连。这些爪子每次按钮后都会向前推。如果防倒转爪与防倒转齿相连,转子会稍微旋转。
在德国国防军恩尼格玛机中,每个转子都有一个带缺口的可调外环。五个最基本的转子(I-V)每个都有一个缺口,附加转子VI。VII,和 VIII各有两个缺口。当转子转动到某一点时,第二个转子的倒转爪正好位于其间隙内,这使得第二转子在下一个按钮后也会转动。当防倒转爪位于缺口外时,它只会沿着另一个转子外环的光滑边缘滑动。在所有转子只有一个缺口的系统中,第一个转子每26次旋转一次,第二个转子每26次旋转一次。第三个转子旋转,第二个转子旋转。
注:恩尼格玛机转子的转动示意图。防倒转装置为绿色。第一转子(1)防倒转齿总是与防倒转爪相连,所以每次按钮后都会旋转。由于防倒转爪位于第一转子的缺口内,第二转子(2)的防倒转齿现在与防倒转爪相连。第三转子(3)的防倒转齿与防倒转爪没有连接,因为防倒转爪位于第二转子上的间隙之外,只会沿着第二转子光滑的外缘滑动。
这种两个转子同时旋转的现象使它与计程器不同。这种现象发生在以下情况下:第一个转子驱动第二个转子稍微旋转,如果第三个转子的反转爪刚刚落入第二个转子外环的间隙,那么在下一个按钮中,第三个转子会旋转一点,其反转爪也会推动第二个转子的外环,使第二个转子连续旋转两次。
当有三个转子,第一个和第二个转子的外环有一个缺口时,恩尼格玛机会有26个 × 25 × 26 = 16、900个组合(不是26 X 26 X 因为第二个转子会和第三个转子一起旋转)。
(rotor 转子;pawl;防倒转爪;ratchet 棘轮;notch 刻痕)
在历史上,每个信息的长度限制在数百个字母以内,因此在同一信息中输入相同字母产生相同密码的概率非常小。
为了腾出1942年海军使用的第四个转子的空间,反射器变得非常薄,额外的空间可以放入第四个特殊的转子。转子系统的其余部分没有改变。由于整个系统由于整个系统只有三个反向旋转爪,第四个转子从不自动旋转,但其位置可以手动调整。
按下一个键后,转子将在电路连接前旋转。
各种转子映射关系
除了早期的A型和B型,恩尼格玛机的最后一个转子后面还有一个反射器,这是当时恩尼格玛机和其他转子机械最明显的区别。它连接了最后一个转子的两个触点,并沿着不同的路线导回电流。这使得加密过程与解密过程一致。但是,反射器也使恩尼格玛具有了如下性质:加密后得到的字母与输入的字母永远不会相同。这是一个严重的概念和密码错误,最终被盟军解码人员利用。
恩尼格玛机商用(C反射器可以有两种不同的安装方法。D型有26种方法。在军用恩尼格玛机中,反射器可以像转子一样旋转。
在德国陆军和空军版恩尼格玛机中,反射器是固定的,不会旋转;他们使用的恩尼格玛机有四个版本。1937年11月1日,最初的版本被标记为A型,它被B型取代。第三种型号,C1940年40年短暂使用,最终被木屋6号破解。D1944年1月2日,该版本允许操作员调整接线模式,该型号有一个可重新接线的反射器。
上图显示了U型潜艇使用的U型潜艇M4型,如图左侧为反射器(C型),右侧为4个转子,下方为代表26个字母的加密/解密灯泡。
接线板
接线板允许操作员设置不同的线路。它首先在1930年被用于德国陆军,很快德国海军就开始使用它。接线板大大提高了恩尼格玛机的保密性,相当于多了一个转子。没有接线板的恩尼格玛机很容易手动破解,但加上接线板后,盟军密码专家需要使用特殊机器。
接线板上的每条线都连接到一对字母。这些线的功能是在电流进入转子之前改变方向。为了解释它的原理,我们连接了E插座和Q插座。当操作员按下E键时,电流将流向Q插座(相当于按下Q键),然后流过转子。接线板上最多可同时连接13条线。
电流从键盘流过接线板,然后进入转子。接线板上的每个插座都有两个插孔。当插入插头时,上插孔(连接到键盘)和下插孔(连接到转子)之间的连接将被切断。另一个插座中的上插孔将与插座中的下插孔连接,下插座将与插座中的上插孔连接,从而完成两个插座之间的连接。
数学描述
从数学的角度来看,恩尼格玛对每个字母的加密过程可以看作是一个组合过程。假设有军/空军版的3转子恩尼格玛机,让P表示接线板的连接,U表示反射器,L,M,R表示左、中、右转子。然后加密信息 E 可以表示成
E=PRMLUL? 1M? 1R? 1P? 1
操作步骤
德国各支部队使用不同的通信网络,每个网络中的恩尼格玛机都有不同的设置。为了正确加密和解密信息,发送信息必须与接收信息的恩尼格玛机相同;转子必须完全相同,其排列顺序、起始位置和接线板连接必须相同。所有这些设置都需要在使用前确定,并将记录在密码簿中。
恩尼格玛机的设置包括以下几个方面:
转子:转子的结构和顺序。
起始位置:由操作员决定,每条消息发送时都不一样。
字母环:字母环与转子线的相对位置。
接线板:接线板的连接。
反射器的线路也包含在最终版本中。
尽管德军在实际使用中尽最大努力防止线路设置泄漏,但恩尼格玛机被设计成即使敌人知道转子的线路设置也是安全的。如果线路设置未知,最多需要尝试10114种情况来计算恩尼格玛的密码;当线路和其他设置已知时,最多需要尝试1023次。恩尼格玛的用户对它的保密性非常有信心,因为敌人不可能用穷举法找到密码。
h3>指示器恩尼格玛的大部分设置都会在一段时间(一般为一天)以后被更换。但是,转子的起始位置却是每发送一条信息就要更换的,因为如果一定数量的文件都按照相同的加密设置来加密的话,密码学家就会从中得到一些信息,并且有可能利用频率分析来破解这个密码。为了防止这种事情发生,转子的起始位置在每次发送信息之前都会被改变。这个方法被称作“指示器步骤”。
在这个步骤中,操作员会先按照密码本中的记录来设置机器,我们假设这时的转子位置为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分别表示两个,三个和四个零。
The Kriegsmarine used the following abbreviations before enciphering their text: X = Period Y = Comma UD = Question Mark XX = Colon YY = Dash/Hyphen/Slant KK*****KK = Parenthesis J*****J = Stress Mark Numbers are written out as words. The Wehrmacht used other abbreviations: KLAM = Parenthesis ZZ = Comma X = Full stop (end of sentence) YY = Point or dot X****X = Inverted commas Question mark ( Fragezeichen in German) is usually abbreviated to one of the three following forms: FRAGE, FRAGEZ or FRAQ Foreign names, places etc. twice delimited by "X", e.g. XPARISXPARISX The letters CH is written as Q, e.g. ACHT was written as AQT, RICHTUNG as RIQTUNG It was prohibited to encipher the word "null" several times in succession. For several nulls these abbreviations are used: 00 = CENTA 000 = MILLE 0000 = MYRIA Examples: 200 = ZWO CENTA, 00780 = CENTA SIEBEN AQT NULL
德国陆军和空军将每条信息都翻译成5个字母的代码。使用四转子恩尼格玛机的德国海军则将信息翻译成4字母代码。经常用到的词语代码与原词语的差别越大越好。Minensuchboot(意为“扫雷艇”)这样的词语可以被表示为MINENSUCHBOOT, MINBOOT, MMMBOOT 或MMM354。比较长的信息会被分成几个部分来发送。
“Here is an example of how the German Luftwaffe sent messages that were encrypted using Enigma. The operators never used or '' that was chosen by the operator. This message-key was used to encrypt the rest of the message. With this procedure they avoided excessive use of the secret daily key,. During the war, different systems like this were implemented to use the codebooks. In general, a codebook contained all the settings, per day, for a whole month.”
以下是一个密码本的选段 31日传送来的密码: “EHZ”(the trigram)为当日查密码本得的daily Key(转子初始位置)
1.按31日要求,选择转子(Walzen /rotors)并校正 转子内的字母环 (Ringstellung)连接接线板(plugs / 'Stecker' )
2.将起始位置设置为“EHZ”,
3.键入所收信息的trigram,即TBS,应得到译码XWB,这就是消息的密钥(message-key)
4.设置XWB为转子位置
5.译码其余部分
It's a message from the SS-Totenkopf Division and is from the campaign against Russia, operation Barbarossa.
密码本获得设置:
3-rotor model UKW: B (reflector) Walzenlage: 245 Ringstellung: BUL Stecker: AV BS CG DL FU HZ IN KM OW RX
注意:不要忘记通过daily key(trigram)获得加密员随机确定的message-key
RFUGZ及FNJAU是密码本中Kenngruppen项确定密码被使用的,译码时要跳过。
译码原文(德语)
AUFKL.ABTEILUNG.VON.KURTINOWA.KURTINOWA.NORDWESTL.SEBEZ.SEBEZ.UAFFLIEGERSTRASZERIQTUNG.DUBROWKI.DUBROWKI.OPOTSCHKA.OPOTSCHKA.UM.EINSAQTDREINULL.UHRANGETRETEN.ANGRIFF.INF.RGT.DREIGEHTLANGSAMABERSIQERVORWAERTS.EINSSIEBENNULLSEQS.UHR.ROEM.EINS.INFRGT.DREI.AUFFLIEGERSTRASZEMITANFANG.EINSSEQS.KM.KM.OSTW.KAMENEC.KAMENEC.DIV.KDR.
注:该处的X已被替换为"."方便阅读
翻译成英文即:
Reconnaissance unit from KURTINOWA north-west of SEBEZ on the flight corridor in direction DUBROWKI, OPOTSCHKA. Started to move at 18:30. Attack. Infantry Regiment 3 goes slowly but surely forwards. Time: 17:06. I (Roman number 1). Infantry Regiment 3 on the flight corridor starting 16 km east-west of KAMENEC. Division Commander.
转载自: 恩尼格玛密码机原理解析(Enigma principle ) | 学步园