首页/我的作品/密码学/3.3 频率分析:古人如何破解单表替换
密码学:守护数字世界的秘密

3.3 频率分析:古人如何破解单表替换

第 18 / 78 篇 · Crazy Boy

在上一节,我们见识了单表替换密码的威力——它的密钥空间大得惊人,理论上无法暴力破解。然而,历史告诉我们,这种密码早在公元9世纪就被阿拉伯学者攻破了。破解的方法不是靠蛮力,而是靠一种巧妙的统计技巧:频率分析。

语言的指纹

你有没有注意过,我们说话时用的每个字母,出现的频率其实不一样?

以英文为例,随便找一段文章统计一下,你会发现:

  • 字母 E 出现的次数最多,约占12.7%
  • 其次是 T(9.1%)、A(8.2%)、O(7.5%)、I(7.0%)、N(6.7%)
  • 而 Z、Q、X 则少得可怜,加起来不到1%

这就是语言的“指纹”——每种语言都有自己的频率分布。法语中E也最多,但后面跟着的是A、I、S等;德语中E同样领先,但C、Y等出现较少;中文虽然不适用字母统计,但汉字的出现频率同样不均匀(比如“的”字远多于其他字)。

这个规律,在单表替换密码中会原封不动地保留下来。

为什么保留?

回想一下单表替换的规则:每个明文字母都被固定替换成另一个密文字母。比如:

  • 明文 E → 密文 X
  • 明文 T → 密文 Q
  • 明文 A → 密文 M

那么,如果明文中E出现了100次,密文中X就一定会出现100次。换句话说,明文的频率分布,只是换了个“外衣”,完完整整地转移到了密文身上。

这就是单表替换的致命伤。

第一次破解

频率分析最早是谁发明的?历史学家认为,它很可能诞生在9世纪的阿拉伯世界。

当时,阿拉伯帝国是数学和科学的中心,学者们对数学、统计学有着浓厚的兴趣。一位名叫肯迪(Al-Kindi)的学者,写了一本名为《关于破译加密消息的手稿》的书。书中详细描述了如何利用字母频率破解密码。这本书被认为是世界上最早的密码分析著作。

肯迪在书中写道:

“破解加密消息的一种方法是,如果你知道消息所用的语言,那么就找到这种语言中每个字母出现的频率。然后,统计密文中每个字母出现的次数,把出现次数最多的字母替换成语言中最常见的字母,以此类推……”

这段话,就是频率分析的核心思想。

实战演练:破解一封密信

让我们亲手体验一下频率分析的威力。假设你截获了这样一封密信(为了方便阅读,我们保留了单词间的空格,但在实际破解中,空格往往是未知的):

GSV ZXG HXG LM GSV NXG

你的任务是把它还原成英文。

第一步:观察密文结构

密文由6个“单词”组成,长度分别为3、3、3、2、3、3。英文中常见的三字母词有THE、AND、FOR等,两字母词有ON、IN、AT等。这暗示可能是一个简单的句子。

第二步:统计字母频率

将密文所有字母列出(忽略空格):

G S V Z X G H X G L M G S V N X G

统计每个字母出现次数:

  • G: 4次
  • X: 3次
  • S: 2次
  • V: 2次
  • H: 1次
  • Z: 1次
  • L: 1次
  • M: 1次
  • N: 1次

按照英文频率,最常见的字母是E(约12%),其次是T、A、O等。这里G出现4次,很可能是E或T。我们暂设G = T(因为T也很常见)。

第三步:猜测常见单词

密文中有一个重复出现的三字母词 GSV,出现了两次(第一个和第五个单词)。如果G = T,那么GSV很可能是 THE(英文中最常见的三字母词)。假设GSV = THE,则:

  • G → T
  • S → H
  • V → E

这个映射看起来合理,而且没有冲突。我们先采用这个假设。

第四步:继续推导

现在看第二个单词 ZXG。已知G = T,X未知,Z未知。如果ZXG是一个常见的三字母词,可能是 CAT、HAT、BAT 等。假设它是 CAT,那么:

  • Z → C
  • X → A
  • G → T

这样,X = A,Z = C 就确定了。而且CAT确实是一个常见词。

第三个单词 HXG,已知X = A,G = T,所以HXG = H A T,很可能是 HAT。那么H → H(即密文H对应明文H自身)。这没有问题。

第四单词 LM,是两个字母。常见的两字母词有ON、IN、AT等。我们稍后确定。

第五单词 GSV 已经是THE。

第六单词 NXG,已知X = A,G = T,所以NXG = N A T,可能是 MAT、BAT、CAT 等。我们已经有了CAT和HAT,这里可能是 MAT,即N → M。那么N对应明文M。

现在回到第四单词 LM。如果LM是 ON,则L → O,M → N;如果LM是 IN,则L → I,M → N。注意,我们已经有N → M(密文N对应明文M),所以密文M不能同时对应明文N(除非M = N,但那是同一个字母,不行)。所以我们需要检查一致性。

如果LM是ON,则L → O,M → N。那么密文M对应明文N,而之前N → M,正好是一对互换,这很合理(A↔Z式的替换)。如果LM是IN,则L → I,M → N,那么密文M对应N,而N → M,也是一对互换,同样可能。哪个更可能?ON比IN在英语中更常见一些,尤其作为介词。我们暂时假设LM = ON,即L → O,M → N。

至此,我们得到了完整的映射表:

密文字母 G S V Z X H N L M
明文字母 T H E C A H M O N

注意H映射到H自身,这允许。

第五步:还原整句

现在把映射应用到整个密文:

  • GSV → T H E → THE
  • ZXG → C A T → CAT
  • HXG → H A T → HAT
  • LM → O N → ON
  • GSV → THE
  • NXG → M A T → MAT

得到句子:THE CAT HAT ON THE MAT

这个句子在语法上成立(“猫的帽子在地垫上”),虽然不太常见,但每个单词都是正确的英文单词。更重要的是,它展示了频率分析和单词模式如何一步步揭开密文的面纱。

为什么这个例子有效?

在这个例子中,我们利用了:

  1. 高频字母:G出现最多,被猜为T(实际也正确)。
  2. 常见单词模式:GSV是重复的三字母词,被猜为THE。
  3. 上下文一致性:一旦确定部分映射,其他单词的猜测就变得容易。

当然,实际破解中可能需要处理更长的文本、更多的试错,但原理完全一样。

频率分析的局限性

频率分析虽然强大,但也有弱点:

  • 短文本:如果密文只有几十个字母,统计频率可能不准。比如一封只有几个词的短信,可能恰好没有E,或者某个低频字母出现很多次。
  • 故意干扰:发信人可以故意删除所有空格、混用大小写、插入无意义字符,增加分析难度。
  • 语言变体:如果明文是其他语言,或者刻意模仿另一种语言的频率,也会增加难度。

但在16世纪,当一封密信长达几百个词时,频率分析几乎百发百中。

历史的回响

频率分析的发现,彻底改变了密码学的格局。从此,密码设计师不得不思考:如何让密文不泄露明文的统计特征?

这个挑战,最终催生了下一节要讲的维吉尼亚密码——它试图用“多表替换”的方式,让同一个字母在不同位置有不同的替身,从而抹平频率分布。

但那是后话了。现在,你已经掌握了古人破解单表替换的秘密武器。下次看到一封神秘的密信,不妨自己动手试试——你可能会发现,自己也能当一回古代的密码分析师。


你知道吗? 爱德华·爱伦·坡的小说《金甲虫》中,主人公就是利用频率分析破解了一份藏宝图密文。这是文学作品中最早出现密码分析的情节之一。