密语 · CIPHER | 目录 CH.04 / 26
绝密
Phase 1 · 古典时代

维吉尼亚与恩尼格玛

"不可破译的密码"是如何被造出来,又是如何被数学、被机器、被人类的懒惰一次次击穿的。

阅读 ~15 分钟 前置 第 3 章 Demo 维吉尼亚 + 重合指数分析

频率分析击溃了单表替换,原因是"一个明文字母永远对应同一个密文字母"。那如果我们让同一个字母每次都变成不同的密文呢?这个念头催生了维吉尼亚密码——它顶着"不可破译"(le chiffre indéchiffrable)的名号活了三百年,直到统计学再次出手。

一、多表替换:让频率消失

维吉尼亚密码的想法是:不用一张替换表,而用一串凯撒密码轮流上阵。选一个关键词(比如 LEMON),把它循环写在明文上方,每个明文字母就按它头顶那个关键词字母的值做移位:

明文  A T T A C K A T D A W N
密钥  L E M O N L E M O N L E
密文  L X F O P V E F R N H R

注意明文里三个 A 分别变成了 LOE——同一个字母,不同的密文。频率分析这下傻眼了:密文的字母分布被抹平,趋近于均匀。这正是第 3 章要求的"抹平统计结构",维吉尼亚在 1553 年就朴素地做到了一部分。

DEMO 维吉尼亚加解密
加密后再用同一关键词解密即可还原。观察直方图:密钥越长、越随机,分布越接近平坦——这正是频率分析失效的原因。

二、破绽:密钥太短,而且会重复

维吉尼亚的"不可破译"神话有个致命前提:密钥要足够长、足够随机。但现实中人们用的是短短几个字母的单词,并且循环重复使用。这留下两道裂缝,19 世纪的密码分析家 Kasiski 和 Friedman 分别捅了进去。

裂缝一:重合指数(Index of Coincidence)

Friedman 的思路很妙。重合指数(IC)衡量的是:从一段文本里随机抽两个字母,它们相同的概率有多大。

关键洞察来了:如果我们猜对了密钥长度 n,那么把密文每隔 n 个字母取一列(第 1、n+1、2n+1……个),这一列其实是被同一个凯撒密钥加密的——也就是一段单表移位文本,它的 IC 会接近英文的 0.0667。如果密钥长度猜错,各列就是不同凯撒的混合,IC 会塌向 0.0385 的随机值。

于是破解密钥长度变成了:依次假设密钥长度为 1、2、3……,算每种假设下各列的平均 IC,哪个最接近 0.0667,哪个就最可能是真正的密钥长度。一旦知道了密钥长度,问题就分解成 n 个独立的凯撒密码——而凯撒,我们第 2 章就秒破了。

DEMO 重合指数密钥长度分析
越接近 0.0667(英文)的越可能是真实密钥长度;越接近 0.0385 说明该假设下各列仍是随机混合。文本越长,判断越准。默认框里的短文本只是占位——请从上方 Demo 加密一段较长文字再贴进来。
Kasiski 检验:另一把钥匙

Friedman 之前,Kasiski 已经发现:如果明文里某个常见词(如 the)恰好落在密钥的相同相位上,它会被加密成相同的密文片段。测量这些重复片段之间的距离,取它们的最大公约数,往往就是密钥长度的倍数。两种方法殊途同归,都在利用"密钥重复"这个结构性弱点。

三、一次一密:唯一的例外

维吉尼亚的问题全出在"密钥短且重复"。那把它推到极限——密钥和明文一样长、完全随机、只用一次——会怎样?答案是:你得到了一次一密(One-Time Pad),人类唯一被严格证明"完美保密"的密码。IC 分析和 Kasiski 检验此时全部失效,因为密钥不再重复,没有任何统计结构可供攻击。

听起来是终极答案,但它有个让它几乎无法实用的致命缺陷。这个"完美却没人用"的悖论,值得单开一章——那就是第 5 章的主角。

四、恩尼格玛:机器时代的维吉尼亚

二战中的德军密码机恩尼格玛(Enigma),本质上是维吉尼亚思想的机械化怪兽。它用几个旋转的转子,让替换表每敲一个键就变一次,周期长达 17000 多——相当于一个密钥超长的多表密码。理论上的密钥空间高达约 10²³,德军坚信它牢不可破。

但它最终被攻破,靠的不只是数学,更是工程与人性的漏洞:

图灵与"接缝"

破解恩尼格玛的故事,完美呼应了第 1 章那条暗线:错的往往不是算法,而是使用方式与接缝。算法(恩尼格玛)本身相当强,真正致命的是可预测的报文格式、重复的日密钥、以及"字母不映射到自身"的设计瑕疵。这也是密码学史上第一次,计算机成为破译的主角——图灵为了破译密码而思考的"通用机器",顺手为整个计算机科学奠了基。

古典密码的谢幕

到这里,Phase 1 的全部古典密码——凯撒、替换、维吉尼亚、恩尼格玛——都倒下了。它们的共同死因是:都在字母层面操作,都残留可被统计利用的结构。现代密码学从此换了赛道:在比特层面工作,用数学难题(而非机械巧思)构筑安全,并要求"密文与随机不可区分"这一严格标准。翻过这一页,我们就正式进入现代密码学。

本章要点

  • 维吉尼亚用循环关键词做多表替换,抹平了单字母频率,曾被誉为"不可破译"。
  • 它的死因是密钥短且重复:重合指数(IC)与 Kasiski 检验都能借此先破出密钥长度,再逐列当凯撒破解。
  • 把密钥推到"等长、随机、一次性"就得到一次一密——唯一完美,但几乎不实用(第 5 章)。
  • 恩尼格玛是机械化的多表密码,败于结构缺陷 + 可预测报文 + 图灵的 Bombe。错的多是接缝,不是算法。