密码学/恩尼格玛密码机
恩尼格玛是一种机电转子密码机,用于加密和解密,从 20 世纪 20 年代初开始在欧洲的各种形式中被广泛使用。它最著名的是从 1930 年左右开始被大多数德国军队采用。易于使用和据称牢不可破的密码是它被广泛使用的主要原因。该机器有两个固有的弱点:它保证字母永远不会被加密成自身,并且最右侧的转子在下一个转子旋转之前会旋转一定数量的位置(最初版本为 26)。在德国的使用中,多年来没有更换转子以及消息中的模式进一步削弱了该系统。密码被破译,解读它没有保护的信息有时被认为至少提前一年结束了第二次世界大战。
英国的对应加密机器Typex和几种美国的加密机器,例如 SIGABA(或军队使用的 M-134-C),在原理上与恩尼格玛相似,但安全性更高。第一个现代转子密码机是由爱德华·赫伯恩发明的,它的安全性要低得多,威廉·F·弗里德曼在它被提供给美国政府时就注意到了这一点。
恩尼格玛是由阿瑟·谢尔比乌斯开发的,它有多个版本,可以追溯到 1919 年。他成立了一家柏林公司生产这种机器,第一款商用版本(恩尼格玛-A)于 1923 年开始销售。随后出现了另外三种商用版本,恩尼格玛-D 在 1926 年被帝国海军购买了多台后,成为最重要的版本。基本设计随后在 1929 年被陆军采用,此后几乎所有德国军事组织以及纳粹阶层的许多部门都采用了该设计。在德国海军中,它被称为“M”机器。
恩尼格玛的各种版本在整个战争中几乎用于所有德国(以及许多其他欧洲轴心国)的无线电,以及通常的电报通信;甚至天气预报也用恩尼格玛密码机加密。据说西班牙(在内战期间)和意大利(在第二次世界大战期间)在军事通信中使用了一种未经修改的商用模型。这样做是不明智的,因为英国(以及可以推测的其他人)已经成功地破译了普通商用版本(或其等效版本)。这导致英国在马塔潘战役中击败了大部分意大利舰队。
恩尼格玛密码机是一种机电设备,这意味着它结合了电气和机械部件。该机制主要由一个打字机风格的键盘组成,该键盘操作电气开关以及齿轮机构。
电气部分由一个通过按键连接到灯泡的电池组成。一般来说,当按下键盘上的一个键时,灯泡中的一个会由电池点亮。在右边的图片中,你可以看到机器前面打字机键,灯泡是小而几乎看不见的圆圈,位于机器中间的键盘“上方”。
基本机器的核心是机械的,由几个连接的转子组成。大多数版本中的恩尼格玛转子由扁平的圆盘组成,每个圆盘两侧有 26 个触点,以圆形方式排列在圆盘外表面周围。每个圆盘一侧的每个触点都连接到另一侧的不同触点。例如,在一个特定的转子中,转子一侧的第 1 个触点可能连接到另一侧的第 14 个触点,第一侧的第 2 个触点连接到另一侧的第 22 个触点,依此类推。恩尼格玛配备的每个转子的布线都不同于其他转子,德国军队/政党模型使用的转子布线与任何商用模型不同。
机器内部有三个插槽(在大多数变体中),可以将转子放置在其中。转子以这种方式“堆叠”在插槽中,即一个转子的“输出”侧的触点与下一个转子的“输入”触点接触。大多数版本中的第三个转子连接到一个反射器(在恩尼格玛家族中是独一无二的,与那个时期设计的其他转子机器不同),它被硬连线以将第三个转子的输出反馈回第三个转子的不同触点,然后反馈回第一个转子,但通过不同的路径。在图片中,你可以看到机器顶部的三个堆叠的转子,面板表面突出着齿,这些齿允许手动转动转子。
当按下键盘上的一个键时,来自电池的电流会从该键控制的开关,例如 A,流入第一个转子的一个位置。它会通过转子内部的布线传送到,例如,另一侧的 J 位置。然后它会进入下一个转子,也许会转动,使得第一个转子的 J 与第二个的 X 对齐。从那里它会传送到第二个转子的另一侧,依此类推。由于信号已通过转子并返回,因此灯泡阵列中会点亮一个字母而不是 A,从而用一个字母代替另一个字母,这是所有替换密码系统的基本机制。
由于转子随着每次按键都会改变位置(有点像汽车里程表),所以 A 这次可能是 Q,但下一个 A 会是其他东西,可能是 T。按下 26 个字母后,转子上的一个凸轮会将下一个插槽中的转子向前移动一个位置。因此,替换字母表会随着每个明文字母而改变,并且会在很长一段时间内随着每个明文字母而不断改变。
更重要的是,由于每个转子的布线“随机”,因此这些替换字母表的精确序列会根据转子的初始位置、它们的安装顺序以及机器中安装了哪些转子而有所不同。这些设置被称为初始设置,并被记录在每月(一开始)出版的书籍中——后来它们变得更频繁了。
该机器最常见的版本是对称的,从某种意义上说,解密的方式与加密的方式相同:输入密文,点亮的灯泡序列将对应于明文。但是,这只有在解密机器具有与加密机器相同的配置(即初始设置)时才有效(转子顺序、布线、字母环设置和初始位置);这些设置会定期更改(最初每月一次,然后每周一次,然后每天一次,甚至在战争结束时更频繁地发生在某些网络上),并指定在分发给恩尼格玛用户的密钥表中。