凯撒密码虽然简单,但它有一个明显的限制:移位必须是统一的,A往后移3位变成D,那B就一定变成E,C一定变成F……这种“线性”的对应关系,让密钥只有25种可能,敌人一试便知。
那么,如果我们打破这个限制呢?不再规定每个字母必须向后移动相同的位置,而是允许任意地、随机地把每个字母替换成另一个字母——这就是单表替换密码。
一张神秘的对照表
想象你有一张神秘的对照表,上面写着:
- A → Q
- B → Z
- C → L
- D → X
- ……
只要26个字母每个都对应一个不同的密文字母,而且没有重复(这样才能解密),你就拥有了一张独一无二的“密表”。有了它,你可以把任何信息加密成别人看不懂的乱码。
举个例子,假设我们有这样一张密表(部分):
| 明文 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 密文 | Q | Z | L | X | T | P | H | Y | M | K | F | D | S | N | B | O | R | G | W | C | J | A | E | V | I | U |
现在加密一句话:HELLO WORLD。
- H → Y
- E → T
- L → D(注意L映射到D)
- 第二个L也是D
- O → B
- 空格保留
- W → E
- O → B
- R → G
- L → D
- D → X
结果就是:YT D B E B G D X(去掉空格是YTDBEBGDX)。如果你不知道这张对照表,看到这串字母只会一头雾水。
密钥空间:大得惊人
凯撒密码的密钥只有25种,而单表替换密码的密钥有多少种?
答案是:26!(26的阶乘),也就是 26 × 25 × 24 × … × 1。这个数字有多大呢?大约是4×10^26,或者说:
403,291,461,126,605,635,584,000,000
这是400亿亿亿的数量级。如果用超级计算机暴力尝试,就算每秒尝试一万亿种,也需要几十亿年才能穷举完。单从密钥空间来看,单表替换密码几乎牢不可破——至少在纸笔时代是这样。
看似无敌,实则脆弱
然而,这么庞大的密钥空间,却没能挡住密码分析师的脚步。为什么?
因为密文里隐藏着语言的“指纹”。任何一种自然语言,字母出现的频率都不是均匀的。以英文为例,字母E出现的频率最高,约为12.7%;其次是T、A、O、I、N等。而Z、Q等则出现极少。
在单表替换中,这个频率特性会被完整地保留下来——因为每个明文字母都固定映射到一个密文字母。如果明文中E出现最多,那么它所对应的密文字母在密文中也会出现最多。
于是,破解者只需要统计密文里每个字母出现的次数,然后把频率最高的密文字母猜成E,次高的猜成T,再结合常见的单词模式(比如“the”是英文中最常见的三字母组合),就能逐步还原出整张对照表。
这就是频率分析,我们将在3.3节中亲手体验它的威力。
与凯撒密码的区别
凯撒密码是单表替换的一个特例——它的映射是有序的、线性的。而真正的单表替换可以是完全随机的,没有规律可循。所以,凯撒密码用暴力破解就能攻破,而单表替换则必须依靠频率分析这类更聪明的统计方法。
历史的影子
单表替换密码曾在欧洲中世纪和文艺复兴时期广泛使用。各国宫廷、外交官、甚至一些早期科学家都用它来保护通信。比如,英国女王玛丽一世在被囚禁期间,就曾用单表替换密码与外界密谋推翻伊丽莎白一世。可惜,她的密信被破译,最终被送上断头台。
这个故事告诉我们:再大的密钥空间,也敌不过语言的统计规律。
小结
单表替换密码是凯撒密码的“升级版”,它用一张任意的映射表取代了固定的移位,使得密钥空间大到无法暴力破解。但它仍然无法隐藏语言的频率特性,为频率分析留下了致命漏洞。
下一节,我们将化身为十六世纪的密码分析师,亲自用频率分析破解一封密信——你会发现,原来破译密码并不需要超级计算机,只需要耐心和一点点数学。