按下键盘上的一个字母,电流先过插线板(把字母两两对调),再从右到左穿过三个转子, 在反射器处折返,原路从三个转子身上再过一遍,最后经过插线板点亮一盏灯。整个过程没有一处是随机的—— 它是一台纯粹的机械置换机,所以它可逆,所以它也必然可以被算出来。右边那条链子会随每一次按键逐格亮起,把一个字母的旅程完整走给你看。
提示:键盘可以直接用电脑键盘打字(只认 A–Z)。密文与明文共用同一台机器——同一组设置下,把密文再敲一遍就还原成明文,这是反射器带来的对称性。
1940 年 3 月 14 日,布莱奇利园六号小屋的第一台 Bombe 转了起来,代号 Victory。它不是更快的 Enigma, 而是一台反驳机器:它不猜答案,它负责成千上万次地证明「这个假设不可能」——剩下的那一个,就是答案。 下面这段密文是凭空造的,但攻击方法与 1940 年一模一样。
德国气象站每天清晨向 KAIA(Kaya)发同一句开场白:WETTERVORHERSAGE——「天气预报」。这十六个字母,就是波兰人与英国人手里最锋利的一把刀。
每一条边都是一个约束:「这个明文字母,在这个位置上,被机器变成了那个密文字母」。Bombe 的转鼓正是把这张图上的约束 串成回路去检验——回路越多,谎言死得越快。菜单里没有回路,Bombe 就无从下手(这也是当年选 crib 的经验:要挑字母重复多的句子)。
真实的密文还有十对插线板接线,我们并不知道。Bombe 的绝招是先把插线板假设掉: 随便挑菜单里的一个字母,假定它接到了 A、B、C……共 26 种,然后沿着菜单一条边一条边地推—— 每推一步,机器的置换就规定了下一条边上的接线必须是什么。推着推着,总有一处前后矛盾。矛盾,就淘汰。 下面是起点 XKM(正确答案)上的完整账目:二十六种假设,二十五种当场阵亡,只活下来一种。
| 假设 W 接到 | 结果 | 在哪条边上崩掉 |
|---|
幸存的那一种(W 接到 W)说明:W 在插线板上是空的,于是整条回路的接线被唯一确定下来。真实 Bombe 用 36 个转鼓 并排模拟 36 台 Enigma,一次把 26 种假设、多个起点同时试完——所以它每分钟做的,正是上面这张表的上万倍。
海军 Enigma 有八个转子,选哪三个也未知。图灵用顺序统计做概率判决:把两段密文的字母频次叠在一张 Banbury 长纸上, 对齐打孔,用「同字母重合数」的对数优势(权重以 ban 计)判断两段是否同一密钥。它不破译,它只负责把 336 种转子组合砍到几种。
Welchman 把图灵的「逻辑矛盾机」变成可制造的机电装置:转鼓模拟 Enigma 的串接,电流在回路里走,一遇矛盾即断开、 该假设作废、转鼓前进一步。它检验的是「不可能」,而不是「可能」——这是它比穷举快千万倍的原因。
1942 年图灵转向更凶的 Lorenz(Tunny):不是 Enigma,是 12 个轮的在线加密打字机。他发明的统计破译法 (后称 Turingery)直接反推轮位;由此才有 1943 年的 Colossus——世界上第一台电子计算机,专破 Lorenz。
Enigma 的故事有三个主角:一个以为自己在卖保险的德国工程师,一个 27 岁的波兰数学家,和一个在乡间庄园里 被同事称作「教授」的英国人。三段时间,刚好接得上。
Arthur Scherbius 为「可旋转滚筒的密码机」申请专利。他原本想卖给商业客户保护电报,生意清淡;1923 年柏林国际邮政博览会上的展品, 后来成了德国军方的制式装备。到二战,德军各军种共用了十余年、数十万台改进型。
德国海军先采用,两年后陆军跟进。军用型加了插线板,把三个转子的机器硬生生撑出十万亿量级的额外密钥—— 这一步让所有靠「猜接线」的旧办法失效。
12 月,波兹南数学系出身、在密码局工作的 Marian Rejewski(25 岁)用置换群理论解出了转子内部接线: 他不猜字母,他比较「置换的轮换结构」——这是纯代数,不是运气。他的两位同事 Różycki 与 Zygalski 随后补全了缺口与环设置的算法。
德军加强密钥流程,人力算不过来了。Rejewski 设计了一台由六个 Enigma 转子并联的机器,反复旋转直至找到一致解—— 波兰人管它叫 bomba(大约取「冰淇淋炸弹」的甜点名)。这个名字,后来被英国人借用。
距战争爆发只剩五周,波兰密码局在华沙郊外的小楼里,把全部成果摊在英法代表面前:一台重建的 Enigma、完整的破译方法、穿孔目录。 英国代表 Dilly Knox 后来说,他们原本预计要再花一年才能走到这一步。9 月 1 日,德军入侵波兰。
图灵与 Welchman 设计的首台 Bombe 在布莱奇利园六号小屋运转成功,代号 Victory。它一天能清算的假设, 超过此前所有人力之和。Alan Turing 时年 27 岁,两年前刚在普林斯顿拿到博士学位,论文题目是可计算数与判定问题。
英国驱逐舰逼降德国潜艇 U-110,抢在沉没前取出 Enigma M3 与整套密钥表。八号小屋(海军)从此有了稳定供给, 大西洋护航线的转向开始跟着德军的狼群走。同年图灵向美方移交 Bombe 技术,美国随后造了一百多台。
2 月 1 日,德国海军换用四转子的 Triton(英方代号 Shark)。八号小屋整整十个月读不出潜艇电报, 大西洋战局随之恶化。12 月密码再度被破,转折点来自一次缴获与一次气象报的重复利用。
图灵 1942 年转向 Lorenz(德军最高统帅部用的 12 轮打字机密码,英方代号 Tunny)。他给出的统计破译法, 催生了 1943 年 12 月的 Colossus——世界第一台可编程电子计算机。它不破 Enigma: 它破的是比 Enigma 更高级的另一种密码。
Ultra 情报让盟军对德军在法国的部署、预备队位置与反应速度有近乎实时的掌握。战后评估普遍认为, 这类情报使战争缩短了大约两年——这个数字是估计,不是账目。
欧洲战事结束时,布莱奇利园已有近九千人(多数是女性),英美两国的 Bombe 合计近四百台。 随后所有设备被拆散、文件被封存,参与者签下终身保密承诺——许多人连配偶都不知道自己战时做了什么。
因同性恋被英国法院定罪,被迫接受化学阉割,安全许可被撤销。1954 年 6 月 7 日,他死于氰化物中毒,41 岁。 他的工作在此时仍是机密,讣告里没有一句话提到 Enigma。
前皇家空军军官 Frederick Winterbotham 出版《The Ultra Secret》,Ultra 第一次进入公众视野。 波兰人的贡献、图灵的具体角色,还要再等几十年才被完整承认。
英国女王颁布皇家赦免;同年 GCHQ 解密一批战时文件,明确写下图灵对 Bombe 设计的决定性贡献。 2021 年,他的头像出现在 50 英镑纸币上——旁边是那句被反复引用的话的另一种表达:这只是一个开始。
每个转子是一圈 26 根线的置换。转子边缘有个缺口(notch):右转子转到缺口,中转子被推一格;中转子转到缺口,左转子被推一格。 缺口的字母位置固定(I 型是 Q),所以转子的进位周期是 26 而不是 26²——这是可被利用的规律性。
Ringstellung 把缺口与接线相对外壳转过若干格:它不改变接线,只改变「何时进位」。 所以环设置与起始位置在数学上高度纠缠,历史密钥表里两者常一起给出。
中转子自己正卡在缺口上时,它的爪子既推动左转子,也把自己再推一格——于是出现连续两个字母中轮都在动。 这不是设计者的意图,是棘轮结构的副作用。它缩小了实际可能的转子状态,是破译者手里的一个额外约束。
反射器把出口的 26 根线两两短接,让电流原路返回。好处:加密解密同一台机器。代价:任何字母都不可能加密成它自己。 这一条「绝不自映射」的禁忌,后来成了 crib 检验的第一道筛子,也是 Bombe 全部逻辑的落脚点。
十对字母两两对调,把密钥空间乘上 150,738,274,937,250。但它是静态的:与转子位置无关。 图灵抓住了这一点——插线板可以在回路里被「假设掉」,而转子位置必须实打实地试。
每天一张密钥表定转子顺序、环设置与插线板;每份电报再随机选三个字母作报文密钥,加密后前置发送。 报务员的偷懒(用 AAA、用女友缩写、重复使用同一密钥)与固定的报文格式,是被破译的另一半原因——机器没有输给人,人输给了自己。
接线读法:转子在环设置 A、窗口 A 时,右端触点 A 接到左端 E,B 接到 K,依此类推。 这张表 1932 年被 Rejewski 用纯数学复原出来时,波兰人手里只有截获的密文与一份偷拍的说明书。
前三关请你亲自当一次报务员与破译者,第四关交给 Bombe,第五关考的是眼力,第六关是史识。 每关都有解释,答错不扣分——但解释值得读。
机器现在停在出厂设置:转子 I-II-III、环 A A A、起始 A A A、反射器 B、插线板空。请在机器上连按五个 A, 然后看密文栏出现了什么。(历史文献里这条测试向量被反复引用,它是检验任何一台 Enigma 模拟器是否算对的第一道门。)
把机器设成:转子 I-II-III、环 A A A、起始位置 A E A(左 A、中 E、右 A),按一次键。三个窗口会显示什么?
缴获的密钥卡:转子 II · IV · I,环 B · L · Q,起始 H · U · N,反射器 B,插线板 AT BL CX DQ。 密文如下,请把它解出来(把密文敲进机器,灯上亮出的就是明文)。
回到第 ② 节,对那段二十六字母的密文跑一次 Bombe。它清算完 17,576 个起点后,报出的起始位置是哪三个字母?
下面三段密文各配了一次 crib 放置。破译员上机前要先做一道小学问的检查:Enigma 绝不会把字母加密成它自己, 所以只要有任何一个位置「猜的明文」与「密文」同字母,这次放置直接作废。请问哪一行不可能是真的?
三件不能记错的事。
这台机器在数学上只有一句话:它是一个已知的置换,而密钥只是这个置换的一个参数。 Enigma 的悲剧不在于它的转子不够多,而在于它的参数空间可以被「检验」——一旦你能高效地判定某个参数不可能,剩下的空间就会塌缩。 图灵做的不是魔法,是把「猜」换成了「否证」。
本实验室为教学用简化实现:转子接线、缺口位置、反射器与双步进均依 Enigma I 制式;为便于观察,界面保留完整的 26 路信号路径, 密文长度不受当时 250 字符限制。历史叙述中的数字(战争缩短年数、破译规模)为史学界通行估计,非精确账目。