恩尼格玛密码机
无线电报谁都能收到,要让它只有自己人读得懂。恩尼格玛是一台电动机械的转子密码机:按下一个键,转子先转一格,电流走过一条每次都不一样的路线,灯板上亮起另一个字母。这里的模型是德军从 1930 年起使用的恩尼格玛 I 型:橡木箱,黑色皱纹漆,三个转子、反射器 B 和带十根线的插线板。可以直接用键盘打字。
向下滚动
谁都能听到的电报
无线电让部队之间不用拉线就能通信,可是电波向四面八方传,对方也在听。电报只能先加密再发出去,收到后再解密。
手工查密码本又慢又容易出错,密码本一旦落到对方手里就全部作废。二十世纪二十年代出现了用机器加密的办法:每打一个字母,机器内部的线路就变一次,同一个字母这一次和下一次会变成不同的字母。恩尼格玛 I 型从 1930 年起在德国陆军使用,后来空军也用,一共造了两万多台。
按一个键,亮一盏灯
恩尼格玛没有打印机。操作员按下一个键,灯板上就有一个字母亮起来,旁边的人把它记下来。整条消息打完,再用莫尔斯电码发出去。
按键的同时,最右边的转子先转过一格,然后电路才接通。所以连按五次 A,五次亮的灯各不相同,而且没有一次是 A。
电流走的路
一节 4.5 伏电池供电。电流从按下的键出发,先经过插线板,进入入口轮,再依次穿过右、中、左三个转子,到达反射器。反射器把它从另一个触点送回来,反向再穿过三个转子、入口轮和插线板,最后点亮一盏灯。
每个转子两面各有 26 个触点,里面用 26 根导线把两面的触点打乱连起来。转子转一格,整条路线就跟着变。
电流的路线:键 → 插线板 → 入口轮 → 右 → 中 → 左 → 反射器 → 左 → 中 → 右 → 入口轮 → 插线板 → 灯
转子像里程表一样走
右转子每按一次键走一格。每个转子的字母环上有一个缺口,右转子转过缺口时,带着中转子走一格;中转子转过自己的缺口时,再带左转子走一格。转子 I 到 V 的进位点分别在 Q、E、V、J、Z。
它和里程表有一处不同:中转子走到自己的缺口时,下一次按键它会和左转子一起再走一格,这叫双步进。转子 I、II、III 时,窗口里的位置是 ADU、ADV、AEW、BFX:中转子在 E 只停了一下。所以三个转子转一整圈要 26 × 25 × 26 = 16,900 次按键,而不是 17,576 次。
陆军的恩尼格玛 I 型字母环上印的是数字 01–26,窗口里读到的数字对应字母 A–Z
插线板
机器前面的木盖翻下来,是插线板。每根双芯线插在两个字母的插孔上,把这两个字母对调:电流进转子之前换一次,出来以后再换一次。战争期间通常插十根线,二十个字母被两两对调,剩下六个不变。
插线板不随按键改变,但它让转子里的线路对破译的人来说多了一层未知。每个插孔有一粗一细两个孔,插头只能按一个方向插进去。
同一组设置,加密也解密
反射器把每个触点和另一个触点成对连在一起。所以在同一个位置上,A 变成 B,B 也一定变成 A。收报的人把转子、字母环、起始位置和插线设得和发报的人一样,把密文敲进去,灯上亮的就是原文。加密和解密用的是同一台机器、同一个操作。
同一个原因带来一个弱点:电流不能原路返回同一个触点,所以没有任何一个字母会被加密成它自己。这看起来无关紧要,后来却成了破译的人手里的工具。
一共有多少种设置
每天的密钥规定:从五个转子里选三个排好顺序,60 种;三个起始位置,26 × 26 × 26 = 17,576 种;十根线的插法,150,738,274,937,250 种。三者相乘约 1.59 × 10²⁰。
字母环也算进来时,只有中、右两个环会改变进位的时机,再乘 676,约 1.07 × 10²³,相当于 77 位左右的二进制密钥。左环只相当于换了一个起始位置,不增加新的设置。各处常引用的数字不同,是因为算进去的东西不同。这个数字假定对方已经知道转子的接线,而他们确实知道。
60 × 17,576 × 150,738,274,937,250 × 676 ≈ 1.07 × 10²³
拆开来看
最上面是转子盖,盖上三个小窗口显示转子的位置,三个滚花拇指轮从缝里伸出来,用手就能拨。盖子下面从左到右是反射器、左中右三个转子和入口轮,最右边是装 4.5 伏电池的小盒子。
中间是灯板和 26 只小灯泡,前面是 26 个键,最前面翻下的木盖后面是插线板和插线。外面是带铰链盖子的橡木箱,盖子里放着备用灯泡、插线和一块绿色滤光片。
剖开一个转子
转子的胶木芯里埋着 26 根导线。一面是 26 根带弹簧的黄铜触针,另一面是 26 片平的黄铜触点,每根导线把一面的某个触针接到另一面的某个触点上,顺序是打乱的。五个转子接法各不相同。
字母环可以相对芯子转动,这就是环设置:它改变窗口里的字母和内部接线的对应关系,也改变进位缺口的时机。剖面里高亮的那根线,是此刻电流经过的那一根。
它是怎么被破译的
1932 年起,波兰密码局的三位数学家 Marian Rejewski、Jerzy Różycki 和 Henryk Zygalski 开始攻恩尼格玛。Rejewski 用置换群的方法,加上法国情报部门从一名德国线人 Hans-Thilo Schmidt 那里得到的操作说明和几个月的密钥表,推出了转子的接线,波兰随后造出了复制机。他们又发明了周期测量器、Zygalski 的打孔纸片,1938 年造出了叫 bomba 的机器,用来找每天的设置。
1938 年 12 月德军加了转子 IV 和 V,可能的转子顺序从 6 种变成 60 种。1939 年 7 月,波兰人在华沙附近的皮雷把全部成果和复制机交给了法国和英国。在英国布莱切利园,Alan Turing 设计了英国的 bombe,Gordon Welchman 加上了对角板;第一台在 1940 年 3 月运到,到战争结束时有两百多台,大多由女性操作。
Bombe 靠「明文猜测」:天气报告、固定格式的开头,常常可以猜到电文里的一段原文。把这段猜测沿着密文滑动,凡是有一个字母对上它自己的位置都可以排除,因为恩尼格玛不会把字母加密成自己。剩下的位置交给 bombe,它飞快地试转子顺序和起始位置,排除自相矛盾的插线假设。
把猜测的原文沿密文滑动:红色的位置有字母对上了自己,可以直接排除
它改变了什么
破译得到的情报在英国叫 Ultra。它帮助大西洋上的护航船队绕开潜艇,在北非和诺曼底登陆前后提供了德军的部署。这些工作在战后保密了近三十年,直到 1970 年代才公开,波兰人的贡献也是那时才为人所知。
Ultra 对战争的影响有多大,历史学家的估计不一样。英国情报战史的官方作者 Harry Hinsley 认为,没有它,诺曼底登陆可能要推迟到 1946 年,战争会长得多;也有人认为影响小一些。这类「如果没有」的问题本来就无法验证。比较确定的是:bombe 把破译变成了工业化的流程;恩尼格玛也提醒后来的密码设计者,机器本身迟早会被对方知道,安全只能靠密钥。
自己加密一段话
选三个转子,设好字母环、起始位置和插线,然后用键盘打字,或点模型上的键。点「解密」,机器回到起始位置,把刚才的密文再敲一遍。
试一试用同一组设置把一句话加密,再把密文敲回去。为什么出来的是原文?
模型省略了什么
加密完全按真机:转子 I–V 和反射器 B 的公开接线、字母环、插线板和双步进,都用公开的测试数据(例如转子 I、II、III,环和起始位置都在 01,不插线时,AAAAA 加密为 BDZGO)和 1930 年德军说明书里的测试电报检查过。页面上的机器默认插着十根线。模型的外形照恩尼格玛 I 型做,尺寸按约 34 × 28 × 15 厘米估计;箱子、键和灯的细节是简化的,没有任何铭牌或标志。真机字母环上是数字 01–26,页面上的读数同时写出对应的字母。没有画出推动转子的棘爪和棘轮、键下的开关、灯板下的配线、电池盒的开关触点和外接电源的插座。转子剖面里导线的走向是示意的,只有两端的连接是真的。信号路径里转子被拉开、变淡,是为了看清电流;真机里转子紧紧挨在一起。
几个常见的误解
恩尼格玛不是被某一个人破解的:波兰密码局在 1932 年就读懂了它,英国和后来的美国在此基础上建了成百台 bombe,几千人参与。设置的数量大,不等于安全:已知转子接线、字母不会变成自己、电文开头的固定格式和操作员的习惯,都让破译的工作量小了很多个数量级。德国海军用的是另一种型号(M3,后来是四转子的 M4),破译它要难得多。Ultra 让战争缩短了几年,是一种估计,不是测量出来的事实。
资料来源
- Crypto Museum:恩尼格玛的接线(转子 I–V、入口轮、反射器 A/B/C、进位字母)
- Crypto Museum:恩尼格玛 I 型(1930 年 6 月 1 日启用、12 根插线用 10 根、1938 年 12 月 15 日加转子 IV 与 V、4.5 伏电池、两万多台)
- Crypto Museum:恩尼格玛的历史(1918 年 2 月 23 日专利、1939 年 7 月 25–26 日皮雷会议、1942 年 2 月 1 日启用 M4)
- Frode Weierud,Cryptocellar:1930 年《恩尼格玛 I 型密钥说明》中的测试电报(反射器 A,转子 II I III,环 24 13 22)
- 计算机历史博物馆:恩尼格玛 I 型(约 34 × 28 × 15 厘米,约 11.8 千克)
- 转子细节:双步进的例子 ADU、ADV、AEW、BFX;测试 AAAAA → BDZGO
- 布莱切利园:恩尼格玛(波兰 1932 年破译、1939 年告知英国、1940 年 1 月首次破译战时电文)
- 布莱切利园:关于 bombe 的六件事(Turing 设计、多数由皇家海军女子勤务队操作)
- 英格兰历史建筑委员会:bombe 复制品(第一台 1940 年 3 月到达;Welchman、Turing、Harold Keen)
- bombe.org.uk:战争结束时共 211 台 bombe
- Virtual Bletchley Park(Tony Sale):波兰人的工作(Schmidt 提供的文件、周期测量器、Zygalski 纸片、bomba、皮雷会议交出的复制机)
- 圣安德鲁斯大学数学史档案:Marian Rejewski 传(1932 年 9 月 1 日进入密码局、1932–33 年用置换理论破译)
- Philip Marks、Frode Weierud:Recovering the wiring of Enigma’s Umkehrwalze A
- Harry Hinsley:The Influence of ULTRA in the Second World War(1992 年 2 月 18 日,伦敦国王学院演讲)
- 英国政府历史博客:1939 年 7 月 26 日,波兰密码学家公开破译恩尼格玛

