一种三个世纪里被认为“不可破译”的多表代换密码——它改变了密码学的进程
想象你是爱丽丝,一位文艺复兴时期的外交官。你需要给鲍勃送去一条秘密消息,但邮路并不安全——信件会被截获、拆开、抄录。
简单的代换密码(A→X、B→C 等)很容易用频率分析破解:在任何一种语言中,某些字母出现得比其他字母频繁得多——所以密文中最常见的符号,很可能就是字母表中最常见的字母。
维吉尼亚密码解决了这个问题。它不只用一个字母表,而是使用多个字母表,并按照关键词在它们之间切换。同一个明文字母会因位置不同而被加密成不同的字母——于是频率分析失效了。
这种方法被认为如此可靠,以至于人们称它为“le chiffre indéchiffrable”——“不可破译的密码”。直到 1863 年,弗里德里希·卡西斯基才发表了破解它的方法。
这种密码的核心是维吉尼亚表:一个 33×33 的方阵(俄文字母表),每一行都是比上一行多移一位的字母表。表格是按字母表构造的,所以汉字无法这样加密——游戏中的消息和关键词都请用俄文或英文字母。
第一行是原始的字母表。之后的每一行都向左移动一位。第 K 行从字母表的第 K 个字母开始。
以英文为例(前 3 行):
爱丽丝和鲍勃商定一个关键词,例如 KEY。这个词在消息下方循环重复:
对消息中的每个字母:
公式:C = (P + K) mod N
其中 P 是明文位置,K 是密钥位置,N 是字母表的大小,C 是密文。
鲍勃使用同一张表,但反向操作:
公式:P = (C − K + N) mod N
К 加密 ПЪК 解密 ЪП在模拟中,你实际上会做什么?
在游戏中,你不只是阅读关于维吉尼亚密码的内容——而是亲身经历整个流程:从输入消息到传输成功。你会看到抽象的公式变成生动的动画,并理解为什么这种密码在当时是一次突破。
这种密码最早由吉奥万·巴蒂斯塔·贝拉索(Giovan Battista Bellaso)于 1553 年描述,却被误归于 1586 年描述过它的布莱斯·德·维吉尼亚(Blaise de Vigenère)。这个名字就这样沿用下来,至今我们仍称它为“维吉尼亚密码”。
1863 年,普鲁士军官弗里德里希·卡西斯基(Friedrich Kasiski)发表了一种利用密文中重复片段的方法。如果同一个明文短语被密钥的同一片段加密,密文中就会出现相同的序列。这种重复之间的距离往往是密钥长度的倍数。
一旦知道了密钥长度,密码分析者就把密文分成若干组(所有用第一个密钥符号加密的字母、用第二个的,依此类推),并对每一组分别进行频率分析。
如果你想更深入地了解密码学,这里有一些关键主题:
语言统计如何帮助破解密码:字母、双字母组合和三字母组合的频率
根据密文中的重复找出密钥长度的算法
弗里德曼用来确定密钥长度的统计检验
唯一在理论上不可破译的密码:密钥长度 = 消息长度,且只使用一次
多表代换密码背后的思想如何演变成 AES、ChaCha20 和其他算法
用于频率分析和攻击维吉尼亚密码的实用脚本
虽然维吉尼亚密码已不再用于保护真实数据,但它仍然是:
现在你已经了解了基础知识,正是动手实践、看看这个密码如何运作的好时机!
在交互式模拟中,你可以加密自己的消息,并观察过程中的每一步。