恩尼格玛密码机原理解析(Enigma principle )

 恩尼格玛机也结合了机械系统与电子系统。机械系统包括了一个包含了字母与数字的键盘,相邻地排列在一个轴上的一系列名为“转子” 的旋转圆盘,还有一个在每次按键后就使一个或几个转子旋转的装置。各种恩尼格玛机上的机械系统都各为不同,但是,但是它们之间最大的共同点就是在每次按键后最右边的转子都会旋转,并且有些时候与它相邻的一些转子也会旋转。转子持续的旋转会造成每次按键后得到的加密字母都会不一样。

机械系统这样运行的原因是要产生不同的电流通路,字母的加密由机器自动完成。当一个键被按下后,电流就会流过各种线路,最终点亮其中一个灯,这个灯显示的就是加密后的字母。举例来说,如果想要发送一条以ANX开头的信息,操作员会先按下A键,这时灯Z就可能变亮,Z就是加密后的信息的第一个字母。操作员之后会按同样的步骤继续输入信息。

恩尼格玛密码机原理解析(Enigma principle )_第1张图片

工作图,连续按两次A键后,电流会流经所有转子,通过反射器后分别向反方向流到G灯和C灯。注意:转子上的灰色线条代表了其它可能的线路,这些线条与转子以硬接连方式连接起来。连续按两次A键会得到不同的结果,第一次得到的是G,第二次是C。这是因为最右边的转子在第一次按下A键后会旋转一点点,这就将A键发出的电流送到了一个完全不同的路线上。

恩尼格玛密码机原理解析(Enigma principle )_第2张图片


恩尼格玛机的工作原理,在此只显示4个键及灯和其它元件。实际上,恩尼格玛机拥有显示灯,按键,插孔和线路各26个。电流首先从电池①流到双向开关②,再流到接线板③。接线板的作用是将键盘②与固定接口④连接起来。接下来,电流会流到固定接口④,然后流经3个(德国国防军M3)或4个(德国海军M4版和德国阿博维尔情报局版)转子 ⑤,之后进入反射器⑥。反射器将电流从另一条线路向反方向导出,电流会再一次通过转子⑤和固定接口④,之后到达插孔S,又通过一条电线⑧流到插孔D,最后通过另一个双向开关⑨去点亮显示灯。

三大灵魂部件——转子、反射器、接线板

转子

转子组成了恩尼格玛机的核心部分。每个转子的直径大约为10厘米,形状为圆盘形,由硬质橡胶或电木制成,一系列由弹簧承载的黄铜管脚呈环形排列于其中一面,而另一面相对应的则是圆形的金属触点。管脚与触点代表的是字母表上的全部字母,典型的排列就是A-Z。当两个转子的位置相邻时,其中一个的管脚就会接触另外一个的金属触点,这就形成了一个通路。在转子内部,有26条金属线将一面的管脚与另一面的触点连接起来,这些金属线的排列方式在每个转子内都有所不同。

单一的一个转子的加密方式是很简单的,它只使用了一种初级的替换式密码。比如说,E键对应的管脚可能会连到同一个转子另一面的T触点。使恩尼格玛机的加密变得复杂的是多个转子的同时使用,一般在一台恩尼格玛机内有3个或4个转子,在输入信息的同时转子还会转动,这就产生了一种安全得多的加密方式。

当被放进恩尼格玛机后,一个转子可以有26种排列方法。它可以通过操作员来转动,为了使操作员知道转子的转动情况,每个转子在转盘外部都有一个刻着字母或数字的环;其中一个字母可以通过一个小窗看见,同时将转子的转动情况显示给操作员。在早期的型号中,这个字母环是固定于转子上的,但在后来的型号当中,操作员可以通过调整字母环的位置而调整转子内的线路。

每个转子上都有一个V形刻痕(有时有多个),这些刻痕是用来控制转子的转动的。在军用恩尼格玛机中,这些刻痕位于字母环上。

恩尼格玛密码机原理解析(Enigma principle )_第3张图片

为了避免产生简单(并且容易破译)的加密信息,有一些转子在操作员连续按下同一个键时也会转动。这就保证了每次按键得到的结果都不一样,也就会产生很难破译的复式密码。

为了达到这个效果,最常见的布局就是使用一个防倒转齿和防倒转爪系统。每个转子都有26个防倒转齿,一组防倒转爪与这些齿相接。这些爪在每次按键后都会向前推,如果防倒转爪与防倒转齿相接的话,转子就会旋转一点。

在德国国防军恩尼格玛机中,每个转子都有一个可调节的带缺口的外环。5个最基本的转子(I-V)各有一个缺口,而附加的转子VI。VII,和 VIII各有两个缺口。在转子转动到某一点时,第二个转子的防倒转爪正好位于它的缺口之内,这就使第二个转子在下一次按键后也会转动。当防倒转爪位于缺口之外时,它就只会沿着另一个转子外环的光滑边缘滑动。在所有转子都只有一个缺口的系统中,第一个转子每转26次就会使第二个转子转动一次,同样的,第二个转子每转动26次就会使第三个转子转动一次。第三个转子转动的同时第二个转子也会转动。

注:恩尼格玛机转子的转动示意图。绿色的为防倒转装置。第一个转子(1)的防倒转齿总是与防倒转爪相接,所以在每一次按键后都会转动。第二个转子(2)的防倒转齿现在与防倒转爪相接,因为防倒转爪位于第一个转子上的缺口内。而第三个转子(3)的防倒转齿没有与防倒转爪相接,因为防倒转爪位于第二个转子上的缺口以外,所以它只会沿着第二个转子的光滑外缘滑动。

这种两个转子同时转动的现象使它与计程器区别开来。这个现象出现于下述情况:第一个转子转动完之后带动了第二个转子转动一点,如果这时第三个转子的防倒转爪正好落入第二个转子外环的缺口内,那么在下一次按键时,第三个转子就会转动一点,同时它的防倒转爪也会推动第二个转子的外环,这样就使第二个转子连续两次转动。

当拥有三个转子,并且第一和第二个转子的外环各有一个缺口时,一台恩尼格玛机就会拥有26 × 25 × 26 = 16,900个组合(不是26 X 26 X 26,因为第二个转子会与第三个转子一起转动)。



(rotor 转子;pawl;防倒转爪;ratchet 棘轮;notch 刻痕)

在历史上,每条信息的长度都被限制在几百个字母以内,所以在同一条信息中输入同样的字母产生同样的密码的几率是很小的。

为了给1942年启用的海军用第四个转子腾出空间,反射器经过了改造变得非常薄,多出来的空间就可以放入第四个特殊的转子。转子系统的其余部分不做改变。因为整个系统中只有三个防倒转爪,所以第四个转子从来都不会自动转动,但是它的位置可以手动调节。

当按下一个键后,转子会在电路接通之前转动。

各型的转子映射关系


反射器

除了早期的A型和B型之外,恩尼格玛机的最后一个转子之后都有一个反射器,反射器是恩尼格玛机与当时其它转子机械之间最显著的区别。它将最后一个转子的其中两个触点连接起来,并将电流沿一个不同的路线导回。这就使加密过程与解密过程变得一致。但是,反射器也使恩尼格玛具有了如下性质:加密后得到的字母与输入的字母永远不会相同。这在概念上和密码学上都是一个严重的错误,这个错误最终被盟军解码人员利用。

在商业用恩尼格玛机(C型)中,反射器可以有两种不同的安装方式。在D型中它可以有26种方式。而在军用恩尼格玛机中,反射器可以像转子一样转动。

在德国陆军和空军版恩尼格玛机中,反射器是固定的,并且不会旋转;他们用的恩尼格玛机一共有4个版本。最初的版本被标记为A型,1937年11月1日它被B型取代。第三种型号,C型,在1940年被短暂地使用过,它最终被木屋6号破解。D型拥有一个可以重新接线的反射器,首次测试于1944年1月2日,这个版本允许操作员来调整接线方式。

上图,为U型潜艇使用的M4型,如图左侧为反射器(该图中为C型)向右依次为4个转子,下方为经加密/解密的代表二十六个字母的灯泡。

接线板 
 

接线板允许操作员设置各种不同的线路。它首先在1930年被用于德国陆军,很快地,德国海军也开始使用它。接线板极大地增强了恩尼格玛机的保密性,它的使用相当于多了不止一个转子。没有接线板的恩尼格玛机可以被很容易地用人工方法破解,但是加上接线板后,盟军的密码专家就需要使用特殊的机器了。

接线板上的每条线都会连接一对字母。这些线的作用就是在电流进入转子前改变它的方向。为了解释它的原理,我们把E插口和Q插口连接起来。当操作员按下E键时,电流就会先流到Q插口(相当于按下Q键)再流经转子。接线板上最多可以同时接13条线。

电流会从键盘流经接线板,之后进入转子。接线板上的每个插口内都有两个插孔,当将插头插入时,上插孔(连到键盘)与下插孔(连到转子)之间的连接就会被断开。另外一个插口内的上插孔会与此插口内的下插孔连接起来,而下插孔会与此插口内的上插孔连接起来,这样就完成了两个插口之间的连接。

数学描述

恩尼格玛对每个字母的加密过程可以以数学的角度看作为一个组合过程。假设有一台德国陆军/空军版3转子恩尼格玛机,让P表示接线板的连线,U表示反射器,L,M,R表示左,中,右转子。那么加密后的信息 E 就可以表示成

E = PRMLUL − 1M − 1R −
1P − 1

操作步骤

德军的各支部队使用一些不同的通讯网络,每个网络中的恩尼格玛机都有不同的设置。为了使一条信息能够正确地被加密及解密,发送信息与接收信息的恩尼格玛机的设置必须相同;转子必须一模一样,而且它们的排列顺序,起始位置和接线板的连线也必须相同。所有这些设置都需要在使用之前确定下来,并且会被记录在密码本中。

恩尼格玛机的设置包含了以下几个方面:

转子:转子的结构及顺序。

起始位置:由操作员决定,发送每条消息时都不一样。

字母环:字母环与转子线路的相对位置。

接线板:接线板的连线。

在末期版本中还包括了反射器的线路。

恩尼格玛机被设计成即使在转子的线路设置被敌人知道时仍然会很安全,尽管在实际使用中德军尽了全力来防止线路设置被泄露出去。如果线路设置为未知,那么最多需要尝试10114种情况才可能推算出恩尼格玛机的密码;当线路和其它一些设置已知时,也最多需要尝试1023次。恩尼格玛的使用者对它的保密性很有信心,因为敌人不可能使用穷举法来找出密码。

指示器

恩尼格玛的大部分设置都会在一段时间(一般为一天)以后被更换。但是,转子的起始位置却是每发送一条信息就要更换的,因为如果一定数量的文件都按照相同的加密设置来加密的话,密码学家就会从中得到一些信息,并且有可能利用频率分析来破解这个密码。为了防止这种事情发生,转子的起始位置在每次发送信息之前都会被改变。这个方法被称作“指示器步骤”。

在这个步骤中,操作员会先按照密码本中的记录来设置机器,我们假设这时的转子位置为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 the secret daily key to encrypt the message but used this key only to encrypt a
randomly chosen message-key
 or 'trigram' 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,
and each message on that day was encrypted with another randomly chosen 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 ) | 学步园

你可能感兴趣的:(密码学)