Hero Image
恩尼格玛:1.59×10²⁰ 个密钥和一个缺陷

一台三转子的恩尼格玛,陈列于美国国家安全局的国家密码学博物馆。上部是转子,中间是灯板,下面是键盘,最前面是接线板。National Security Agency · Wikimedia Commons · 公有领域 恩尼格玛看上去像一台装在木箱里的打字机。操作员在键盘上按下一个字母,灯板上就亮起另一个字母。第二个操作员记下亮起的字母,这串字母再用摩尔斯电码通过无线电发出去。在另一端,一名操作员用一台同样设置的同型机器,敲入密文,就能在灯板上读出原文。 在键与灯之间,电流穿过一座迷宫:接线板、三个内部交叉布线的转子、一个把电流送回去的反射器,再经过三个转子,再经过接线板。而且每按一次键,第一个转子就转一格,整座迷宫随之改变。 数一数密钥 德国人信任恩尼格玛,是因为可能的设置数量庞大。我们用帕斯卡教给我们的组合数学,为 1939 年的陆军型号数一数。 转子。 从一盒 5 个转子中选出 3 个,顺序有关: $$5\cdot4\cdot3=60.$$初始位置。 每个转子从 26 个字母中的某一个开始: $$26^3=17\,576.$$接线板。 十根连线把字母两两相连,互相交换。用 26 个字母组成 10 对,有多少种方法?把 26 个字母排成一排,有 $26!$ 种排法,用前 20 个字母两两配对。最后 6 个不接线,它们的顺序无关紧要:除以 $6!$。10 对之间的顺序无关紧要:除以 $10!$。每对内部的顺序无关紧要:除以 $2^{10}$。结果是 $$\frac{26!}{6!\cdot10!\cdot2^{10}}=150\,738\,274\,937\,250.$$总数。 相乘: $$60\cdot17\,576\cdot150\,738\,274\,937\,250\approx1.59\times10^{20}.$$大约 1.59×10²⁰ 个密钥,还没算转子的字母环。每秒试一百万个密钥,也要大约五百万年才能全部试完。 缺陷 反射器有一个实际的好处:同一种设置下,机器既能加密也能解密。但它也带来了一个先天缺陷:由于电流总是从不同的路径返回,没有一个字母能被加密成它自己。A 永远不会变成 A。 这看起来微不足道,却是决定性的。密码分析员知道,许多电报含有可以预料的词,他们称之为 crib,“提示词”:早上 6 点的天气预报以 WETTERVORHERSAGE 开头,许多报告写着 KEINE BESONDEREN EREIGNISSE,“无事可报”。要找出提示词在密文中的位置,只需把它沿着密文滑动,凡是某个字母与它下方密文字母相同的位置,统统排除。 Q F Z W R W I K T Y R E S X B F O G K U H Q W E T T E R V O R H E R S A G E ← S 对 S:不可能 W E T T E R V O R H E R S A G E ← 没有重合:可能 在第一个位置,提示词中的 S 会落在密文的 S 上,而恩尼格玛从不这样做:这个位置被排除。往后四格,没有字母重合,这个位置仍是候选。

Hero Image
班伯里法:用分班衡量证据

炸弹机很快,但还不够快,无法测试海军恩尼格玛的每一种转子顺序。1940 年,图灵发明了一种纸笔方法,在开动机器之前就排除掉大部分顺序。由于这种方法用的纸张印制于班伯里镇,同事们把它命名为班伯里法(Banburismus)。 这是一种统计方法。为了设计它,图灵重新发明了现代统计学的一个核心思想。 重复出现的字母 把两份德文电报上下对齐,数一数两者在同一位置有相同字母的地方。由于德语大量使用 E、N、R 和 I,重合会比字母随机抽取时频繁得多。在德文文本中,对齐的两个字母相同的概率约为 $\frac1{17}$;如果字母是随机的,这个概率是 $\frac1{26}$。 恩尼格玛以一种奇特的方式保留了这个性质:如果两份电报是用同一串转子位置加密的,原文中的重合在密文中仍然是重合,因为同一位置上的相同字母会变成相同的字母。如果位置不同,比率就降到 $\frac1{26}$。所以,数重合的次数就为“两份电报是否对齐”提供了证据,从而透露出转子位置的信息。 一次重合值多少 图灵问:一次重合应该使我对“电报已对齐”的信心增加多少?答案是似然比,即在一种情况下看到重合的可能性是另一种情况的多少倍: $$\frac{\text{对齐时重合的概率}}{\text{未对齐时的概率}}=\frac{1/17}{1/26}=\frac{26}{17}\approx1.53.$$一个没有重合的位置则是相反方向的证据,弱得多: $$\frac{16/17}{25/26}=\frac{416}{425}\approx0.979.$$按照贝叶斯定理,每条证据都把几率(一个假设的概率与另一个假设的概率之比)乘以它的似然比。位置多了,乘法就多,而手算乘法很慢。 用加法代替乘法 图灵做了纳皮尔三个世纪前做过的事:改用对数,把乘法变成加法。他把似然比的常用对数称为班(ban),把它的十分之一称为分班(deciban): $$\text{以分班计的权重}=10\log_{10}(\text{似然比}).$$现在,每次重合值 $$10\log_{10}\frac{26}{17}\approx+1.8\ \text{分班},$$每个没有重合的位置值 $$10\log_{10}\frac{416}{425}\approx-0.09\ \text{分班}.$$第 8 号营房的操作员只需计数和相加。总计 $+20$ 分班,意味着证据使这个假设的几率变成原来的 $10^2=100$ 倍。 能察觉到的最小证据 在布莱切利园与图灵共事的统计学家 I. J. 古德回忆说,选择分班,是因为它大致是人的直觉能察觉到的证据权重的最小变化,就像分贝是耳朵能察觉到的最小音量变化一样。战后,古德发展了这些思想,帮助奠定了现代贝叶斯统计学。他使用的“证据权重”这套语言,来自图灵。 练习:把证据加起来两份电报对齐了 200 个位置,有 14 处重合。总权重是多少分班?对齐的假设变得更可能了吗? 有 14 处重合和 186 个无重合的位置:$14\cdot1.8+186\cdot(-0.09)\approx25.2-16.7=8.5$ 分班。是正的:支持对齐的几率大约乘以 $10^{0.85}\approx7$。如果字母随机,预期的重合是 $200/26\approx7.7$ 次;如果对齐,是 $200/17\approx11.8$ 次。14 次更符合对齐。 练习:多少次重合打成平手?在 100 个位置中,多少次重合 $k$ 会使总权重为零? $1.8k-0.09(100-k)=0$,即 $1.89k=9$,$k\approx4.8$。在 100 个位置中有 5 次或更多重合,证据就已偏向对齐。这个数介于随机预期 $100/26\approx3.8$ 和对齐预期 $100/17\approx5.9$ 之间。