跳转到正文

恩尼格玛机模拟器

设置一台 Enigma I——从五个转子中选三个、反射器 B 或 C、环设置、起始位置以及最多十根接线——然后开始输入:转子步进,灯亮起,每次按键都会被完整追踪。该机器是自反的,因此使用相同设置即可解密。

加载示例

机器设置

反射器

最多十对字母,以空格分隔,例如 AV BS CG。每个字母只能出现在一对中。

该机器只有 26 个字母键,因此空格、数字和标点无法输入。操作员会把数字拼写出来,并用 X 代替句号。

机器

转子窗口

左

左窗口显示 A

I

中

中窗口显示 A

II

右

右窗口显示 F

III

上一次按键之后的状态。每次按键都会先使右侧转子前进,然后电流才通过,因此第一个字母是在起始位置之后一步才被加密的。

灯板

键盘

上一次按键的路径

  1. 按键A
  2. 接线板A
  3. III(右)G
  4. II(中)R
  5. I(左)U
  6. 反射器 BC
  7. I(左)Y
  8. II(中)V
  9. III(右)O
  10. 灯O

经过接线板、从右到左经过转子、经过反射器,再经过转子和接线板返回,点亮一盏灯。

输出

输出格式为

BDZGO

已输入 5 个字母

要解密,请设置相同的转子、环、接线板和起始位置,然后输入密文——Enigma 的加密与解密互逆。

按键记录

#窗口按键灯
1AABAB
2AACAD
3AADAZ
4AAEAG
5AAFAO

如何使用恩尼格玛机模拟器

  1. 1. 设置机器。 选择反射器,然后为每个位置——左、中、右——选择转子、其环设置以及开始时窗口中显示的字母。
  2. 2. 插上接线板。 输入最多十对字母,例如 AV BS CG;每一对在输入和输出时都会互换这两个字母。
  3. 3. 输入报文, 可在输入框中输入,也可直接按键。该机器只有 26 个字母键,因此空格、数字和标点会被跳过——操作员会把数字拼写出来,并用 X 代替句号。
  4. 4. 观察它的运作。 窗口显示上一次按键之后的转子位置,灯板点亮最后输入的字母,信号路径和日志会追踪每一次按键。
  5. 5. 使用相同设置解密。 设置相同的转子、环、接线板和起始位置,然后输入密文。三个示例会加载已公布的测试案例。

Enigma I 的工作原理

按下一个键时会依次发生两件事。首先是转子步进:最右侧的转子总是前进一个位置,其环上的凹口每转一圈便带动中间转子前进一位。然后电流从按键出发,依次经过接线板、从右到左的三个转子、反射器、再从左到右经过转子,最后再经过接线板,点亮一盏灯。

每个转子都是对字母表的一种固定打乱,转子步进会使它相对于字母转动,因此同一个键每次点亮的灯都不同。反射器将字母两两配对,这使机器成为自反的:加密与解密使用同一套过程,而且任何字母都不会被加密成它自己。使用转子 I、II、III,反射器 B,环 AAA 与起始位置 AAA 时,输入 AAAAA 会依次点亮 B、D、Z、G 和 O:这是任何 Enigma 模拟器的标准首个检验。

Enigma I 的转子与反射器
部件A → Z 的接线转位点投入使用
转子 IEKMFLGDQVZNTOWYHXUSPAIBRCJQ → R1930 年
转子 IIAJDKSIRUXBLHWTMCQGZNPYFVOEE → F1930 年
转子 IIIBDFHJLCPRTXVZNYEIWGAKMUSQOV → W1930 年
转子 IVESOVPZJAYQUIRHXLNFTGKDCMWBJ → K1938 年 12 月
转子 VVZBRGITYUPSDNHLXAWMJQOFECKZ → A1938 年 12 月
反射器 BYRUHQSLDPXNGOKMIEBFZCWVJAT—1937 年 11 月
反射器 CFVPJIAOYEDRZXWGCTKUQSBNMHL—1940 年,短暂使用

转位点:转子窗口从第一个字母步进到第二个字母时(例如 Q → R),会带动其左侧的转子前进一位。

环设置与双步进

环设置 (Ringstellung) 使接线相对于带字母的环转动,而凹口仍与字母保持对应。若环设为 BBB 而非 AAA,同样的五次按键会得到 EWTYX。

中间转子有一个著名的特性:当它到达自己的转位位置时,在下一次按键时会再次步进,并带动左侧转子一起前进。从 ADU 开始,使用转子 I、II、III,窗口依次显示 ADV、AEW,然后是 BFX——中间转子从 D 走到 E,接着又直接走到 F。加载 双步进 示例即可观察。

实例:带环与接线板的报文

一条完整报文 加载的是德文维基百科 Enigma 条目中的示例:反射器 B,转子 I IV III,环 16 26 08 (P Z H),接线 AD CN ET FL GI JV KZ PU QY WX。操作员选择起始位置 QWE,键入报文密钥 RTZ,看到 EWG,并以明文发送 QWE EWG。

接收方设置 QWE,键入 EWG,并从灯上读出 RTZ。设置为 RTZ 后,密文 EJZLB SYEQP DWDUE EJJOU PSOFL B… 会解出 XAACH ENXAA CHENX ISTGE RETTE T…:Aachen ist gerettet,即“亚琛已获救”——空格和句号以 X 表示,地名重复出现,CH 写作 Q,这些都是德国军方报文的惯例。

破解 Enigma:雷耶夫斯基、布莱切利园与图灵

阿图尔·谢尔比乌斯 (Arthur Scherbius) 于 1918 年申请了转子机的专利,并于 1923 年售出第一台商用 Enigma。德国海军于 1926 年采用了改进版本,陆军于 1928 年加入了接线板,而 Enigma I 自 1930 年起投入使用。最先破解它的是波兰数学家:大约在 1932 年 12 月,波兰密码局的马里安·雷耶夫斯基运用置换理论,借助法国人从一名德国间谍汉斯-蒂洛·施密特那里获得的每日密钥,推算出转子的接线。他与耶尔齐·罗日茨基、亨里克·济加尔斯基一道制作了济加尔斯基纸片,并造出机电装置 bomba 来查找每日设置;1939 年 7 月,在华沙附近的皮雷,波兰人把这一切都与法国和英国的密码学家共享。

在布莱切利园,艾伦·图灵设计了英国炸弹机 (British bombe),它用 crib(已知明文,即破译人员预计报文中会出现的明文)来检验转子设置;戈登·威尔奇曼的对角线接线板使其效率大增,第一台炸弹机于 1940 年 3 月安装。由于任何字母都不会被加密成它自己,猜测的单词就不能放在会使某个字母与自身对应的位置上,这有助于确定 crib 的位置。来自 Enigma 及其他密码的情报(代号 Ultra)对盟军是重要的帮助。

Enigma 安全吗?

纸面上看,它相当坚固:从五个转子中选三个并排序、它们的起始位置以及十对接线,共得到 158,962,555,217,826,360,000 种设置——约 1.6 × 10²⁰,即 67 比特——尚未计入环设置。它的失守源于设计与使用方式:没有字母会变成它自己,操作员发送可预测的短语,并且直到 1940 年 5 月,他们都会把每个报文密钥连打两遍。如今计算机仅凭密文即可恢复 Enigma 的设置,因此本模拟器用于学习,而不用于保密。

常见问题

恩尼格玛机如何工作?
每次按键时,转子先步进,然后电流依次经过接线板、三个转子、反射器、再以反向经过转子,最后经过接线板,点亮一盏灯。由于转子在每次按键时都会移动,每个字母都用不同的字母表加密,因此报文中重复的字母在密文中不会重复。
Enigma 的双步进异常是什么?
当中间转子到达自己的转位位置时,它会在连续两次按键中步进:第一次是右侧转子带动它到达那里,第二次是在下一次按键时,它带动左侧转子一起前进。使用转子 I、II、III 从 ADU 开始,窗口依次显示 ADV、AEW、BFX。许多模拟器在这一点上出错;本模拟器已针对它进行了测试。
为什么 Enigma 不能把字母加密成它自己?
这是反射器的作用:它总是把一个字母与另一个不同的字母配对,因此电流会沿另一根线返回,点亮的灯永远不会是所按的那个键。这使机器成为自反的,但也告诉破译人员:一个猜测的单词不可能出现在哪些位置。
如何解密 Enigma 报文?
设置发送方所用的同一反射器、转子顺序、环设置、接线板和起始位置,然后输入密文:灯会拼出明文。战时的报文还附带经加密的报文密钥,因此接收方要先解密该密钥,再把转子设置为该密钥。
谁破解了 Enigma 密码?
最早的破解来自波兰:大约在 1932 年 12 月,马里安·雷耶夫斯基重建了转子接线,并与耶尔齐·罗日茨基、亨里克·济加尔斯基一道,在战前多年间读取 Enigma 的通信。从 1939 年起,这项工作在布莱切利园继续进行,艾伦·图灵、戈登·威尔奇曼以及成千上万的人——其中许多是操作炸弹机的女性——把它变成了一项工业化的行动。

相关工具

编码与密码中的更多工具