把一段英文用凯撒密码加密,位移量选 3,得到一串看不懂的字母。看起来像是加密了,但任何有经验的攻击者可以在几秒内还原明文——甚至不需要工具。原因很简单:这个密码的密钥只有 25 种可能。
密钥空间是什么
密钥空间指一个加密方案中所有可能密钥的数量。
对于凯撒密码,密钥就是位移量。字母表有 26 个字母,位移量可以从 1 到 25(位移 0 和 26 相当于没加密)。
所以密钥空间是 25。
衡量一个密码是否安全,密钥空间是一个基础指标。安全方案要求密钥空间大到无法穷举——比如 AES-128 的密钥空间是 2 的 128 次方,这个数字大到任何算力都不可能穷举完。
25 这个数字,用纸笔几分钟就能试完,用程序瞬间就能穷举。所以凯撒密码在密钥空间这一项上就彻底不合格。
穷举的具体过程
穷举攻击的流程很直接:把密文用 1 到 25 每一个位移量分别解密一次,得到 25 个候选结果,然后从中找出读得通的那一个。
密文:KHOOR
位移 1 → JGNNQ
位移 2 → IFMMP
位移 3 → HELLO ← 读得通,答案
位移 4 → GDKKN
...
只要其中一个结果是正常的英文单词或句子,就能确定位移量。
这个方法的妙处在于不需要判断标准有多精确。攻击者不需要知道原文内容,只要能分辨「这是一段正常的英文」就够了——而有意义的文本和无意义的字母串在视觉上差别很明显。
频率分析:更省力的方法
如果不想穷举 25 次,还有一种更聪明的方法:频率分析。
英文有一个稳定的统计特征——字母 E 出现的频率最高,其次是 T、A、O 等。这个特征在加密后不会改变,因为凯撒密码只是平移字母,不改变字母之间的相对关系。
所以攻击者可以统计密文里各字母的出现次数,找出出现最多的那个。假设密文里出现最多的是 H,而英文里出现最多的是 E,那么位移量就是 H 减 E,也就是 3。
用这个方法,攻击者只需要统计一次字母频率就能推断出密钥,比穷举 25 次更省力。而且这个方法可以推广到任何「单表替换密码」——只要替换规则是一一对应的,字母频率特征就会被保留。
为什么不能通过「更复杂」来补救
有人会想:如果不用固定位移,而是用某种更复杂的规则,是不是就安全了?
这个方向确实有进展,但复杂度需要达到质变的程度才有意义。
比如把位移量按位置变化——第 1 个字母移 1 位、第 2 个移 2 位、第 3 个移 3 位。这种方案叫维吉尼亚密码,它确实能抵抗频率分析,因为同一个明文字母在不同位置会被加密成不同的密文。
但即使是维吉尼亚密码,如果密钥太短或者密钥被重复使用,也能通过更高级的统计方法(如卡西斯基测试)破解。所以「稍微复杂一点」不足以带来安全性。
现代密码学的共识是:不要自己设计加密算法。安全的算法需要经过公开的、长期的、由大量专家参与的密码分析,才能获得信任。个人设计的方案几乎不可能通过这种检验。
那它还有什么用
凯撒密码在今天仍然有它的位置,只是位置不在安全领域。
教学。它是理解替换密码、密钥空间、频率分析这些概念的最简单例子。用几十行代码就能实现,用几分钟就能破解,非常适合作为密码学的入门教具。
解谜与游戏。CTF 比赛里的入门题、寻宝游戏的线索、谜题设计中的一层编码,凯撒密码经常出现。因为它的破解门槛低,玩家能自己解出来。
轻度遮挡。在论坛里遮挡剧透、在文档里放一个需要「转一下」才能看的内容,这类场景不涉及安全,只是防止一眼看到。
判断标准很清楚:如果场景里有一个有动机、有能力的攻击者,就不能用凯撒密码;如果只是防止「不小心看到」,那可以用。
检查清单
- 凯撒密码的密钥空间只有 25 种,穷举瞬间完成
- 穷举攻击利用「有意义的文本看起来不一样」这个特点,不需要精确判断标准
- 频率分析更省力:英文里最高频字母通常是 E,据此推断位移量
- 频率分析适用于所有单表替换密码,因为字母频率特征被保留
- 「稍微复杂一点」不足以带来安全性,维吉尼亚密码也能被破解
- 现代实践是不自己设计算法,安全算法需要长期公开的密码分析检验
- 凯撒密码的现代用途是教学、解谜和轻度遮挡,不是安全