凯撒密码有个致命的弱点——不管你怎么偏移,同一个明文字母永远只对应同一个密文字母。这就让频率分析有机可乘:只要统计密文中字母的出现频率,就能猜出偏移量,整个密码就破了。
16世纪的欧洲密码学家们当然也意识到了这个问题。他们在凯撒密码的基础上,开发了一种更巧妙的机制——用一串密钥词来控制每个字母的具体偏移量。这就是维吉尼亚密码(Vigenère Cipher),由法国密码学家布莱斯·德·维吉尼亚(Blaise de Vigenère)在1586年正式提出。
维吉尼亚方阵:加密的视觉工具
理解维吉尼亚密码,最好的方式是从维吉尼亚方阵(Vigenère Square)入手。这是一个由26×26个字母组成的表格,每一行都是字母表的凯撒偏移版本:第0行不偏移,第1行偏移1位,第2行偏移2位……以此类推。
加密时,发送方和接收方首先约定一个密钥词(比如"KEY")。加密"HELLO WORLD"的过程是这样的:
- 先把明文和密钥词对齐,密钥词循环重复:KEY KEY KEY K
- 明文:HELLOWORLD
- 密钥:KEYKEYKEYK
- 第一个字母H,用K行(偏移10位)加密,得到R
- 第二个字母E,用E行(偏移4位)加密,得到I
- 第三个字母L,用Y行(偏移24位)加密,得到……J?没错,算一下:L(11)+24=35 mod 26 = 9 = J
- 依此类推
整个加密结果是"RIJVS AMVBP"。
为什么比凯撒密码强?
关键在于:同一明文字母可能加密成不同的密文字母。在上面的例子里,"L"出现了两次——但第一次被加密成了"J",第二次被加密成了"R"。这不是因为明文不同,而是因为密钥词在循环。
这个特性让频率分析变得非常困难。因为频率分析依赖于"同一密文字母总是来自同一明文字母"的假设,而在维吉尼亚密码中,这个假设不成立了。
维吉尼亚密码在19世纪之前一直没有被广泛破解,一度被称为"不可破解的密码"。法国人甚至叫它"le chiffre indéchiffrable"(无法破译的密码)。
如何破解维吉尼亚密码?
破解维吉尼亚密码的关键是两步:找出密钥词的长度,然后找出密钥词本身。
Kasiski检验法
1863年,普鲁士军官Friedrich Kasiski提出了一个巧妙的破解思路:观察密文中重复出现的字母序列。
在维吉尼亚加密中,如果明文中有重复出现的单词(比如"THE"),而这两个重复之间的间距恰好是密钥词长度的整数倍,它们就会被加密成相同的密文序列。
Kasiski检验法就是:找出密文中所有重复的字母序列,记录每对重复之间的间距,然后计算这些间距的最大公约数——这个公约数很可能就是密钥词的长度。
Friedman检验
还有一种更"数学"的方法。1920年,William Friedman引入了重合指数(Index of Coincidence)的概念:在一个文本中随机抽取两个字母,它们恰好相同的概率。
英文文本的重合指数约为0.065,而随机字符串的重合指数约为0.0385。通过计算密文重合指数并与这两个值比较,可以估计密钥词的长度。这种方法不需要依赖密文中的重复序列,对短密文特别有效。
频率分析破解单表
一旦知道了密钥词长度,把密文分成对应数量的组,每组内的字母实际上都是用同一个偏移量(对应密钥词中的同一个字母)加密的。对每组分别做频率分析,就可以逐个字母地破解出密钥词。
整个过程比较繁琐,手工做起来费时费力。但现在有专门的工具,输进去密文,几秒钟就能出结果。你可以在我们的维吉尼亚密码工具页面上验证这个过程。
维吉尼亚密码的弱点
虽然维吉尼亚密码比凯撒密码强多了,但它仍然不是完美的加密方案。主要弱点有:
- 短密钥词:如果密钥词很短(比如只有两三个字母),分组数就少,破解难度大大降低。
- 已知明文攻击:如果攻击者猜到了明文的某个部分,可以直接推导出对应的密钥片段。
- 密钥词选择不当:如果密钥词是常见单词、书名或短语,攻击者可以尝试字典攻击。
- 长密文更容易被破解:密文越长,统计分析就越准确,Kasiski检验的效果就越好。
实际应用与历史趣闻
维吉尼亚密码在历史上被广泛使用,尤其是在美国内战期间。南方邦联用的就是维吉尼亚密码,密钥词通常是"Manchester Bluff"、"Complete Victory"之类。
有趣的是,南方邦联的密码本后来被北方缴获了,但即使有了密码本,解密仍然费了一番功夫——因为邦联经常更换密钥词。
现代计算机出现后,维吉尼亚密码彻底退出了安全通信领域——因为用穷举法直接尝试所有可能的密钥词(即使用粗糙的字典),在现代计算能力面前也就是几分钟的事情。但作为密码学教学工具和学习对象,它依然很有价值。
维吉尼亚密码的变体
后来人们在维吉尼亚的基础上又发展出了几种变体:
- Beaufort密码:使用维吉尼亚方阵的"倒序"——不是"明文字母+密钥字母",而是"密文字母-明文字母",最后查出的行号就是结果。它的好处是加密和解密操作完全对称,接收方用同样的操作就能解密。
- 自动密钥密码(Autokey Cipher):用明文本身作为密钥的一部分来扩展密钥词,安全性更高但实现更复杂。
- N-Gram分析:现代破解方法使用字母组合频率(如di-gram、tri-gram)而不是单个字母的频率,准确度更高。
总结
维吉尼亚密码是密码学发展史上的一块重要里程碑。它第一次用简单的机制有效对抗了单字母频率分析,展示了"密钥设计"在加密中的核心价值——这为后来更复杂的加密系统奠定了思想基础。
想亲手体验维吉尼亚密码的加密和解密过程?去我们的维吉尼亚密码工具试试看,输入任意文本和密钥,观察密文如何生成,再试试自己破解。
学完维吉尼亚密码之后,下一步可以了解它的"升级版"——也就是现代的分组加密和流加密。这些概念虽然比古典密码复杂得多,但底层思想是一脉相承的。