
不可被破解的密码(多表替换密码)
正如玛丽女王的悲剧和爱伦·坡的挑战所揭示的,单表替换密码有一个根本性的弱点:字母频率特征。
凯撒密码
凯撒密码是单表替换密码中最简单、最古老的一种形式。
核心机制: 将整个明文字母表固定地向右平移 N
个位置(N
就是密钥),得到密文字母表。
例如,密钥 N=3
:
一个字母平移了几个位置密钥就是多少,加密后即可得出密文
可以看到,凯撒密码根本不需要密码本,但依旧过不了频率分析
数学描述:
-
加密:
E(X) = (X + N) mod 26
(X
是明文序号,mod 26
保证结果在字母表范围内循环) -
解密:
D(X) = (X - N) mod 26
优势与劣势: 它不需要厚厚的密码本,密钥(位移量 N
)简单易记。然而,它完全无法抵御频率分析!因为它只是单表替换的一个特例,明文字母的频率特征在密文中原封不动地保留了下来。
维吉尼亚密码
在凯撒密码的基础上,为每个字母单独加密,它诞生于玛丽女王密码刚被沃尔辛厄姆破解的 1586 年,遗憾的是那时它并不为人所知,否则玛丽女王的断头台结局将很有可能被改写。
核心思想: 不再使用一张固定的替换表,而是使用一个密钥单词(如 HOWEVER
)来为明文中的每一个字母选择不同的替换规则(本质上是不同的凯撒位移)。
加密过程:
-
将密钥单词重复书写,直到其长度与明文一致(如
HOWEVERHOWEVERHOW...
)。 -
对于明文中的第
i
个字母:-
找到它对应的密钥字母(第
i
个)。 -
在维吉尼亚方阵(一个 26x26 的字母表矩阵)中,以密钥字母所在行作为替换表,对明文字母进行替换。
-
( 等效理解:密钥字母决定了该位置明文字母的凯撒位移量
N
。N
等于密钥字母在字母表中的序号(A=0, B=1, ..., Z=25)
。使用公式E(X_i) = (X_i + N_i) mod 26
加密,其中N_i
由第i
个密钥字母决定 )
-
示例 - 加密玛丽遗言片段:
-
明文:
I forgive you with all my heart for now wihope you shall make an end of all my troubles
(注意:原文可能有笔误,按示例密文反推) -
密钥:
HOWEVER
(循环使用) -
加密片段:
-
明文
I
(8) + 密钥H
(7) = 15 ->P
-
明文 (忽略空格) -> 空格
-
明文
f
(5) + 密钥O
(14) = 19 ->T
-
...
-
明文
v
(21) + 密钥R
(17) = 38 mod 26 = 12 ->M
-
...
-
-
密文:
P T K V B M M L M K Y R M K O O H P H C Y L O N X A S I U C S M C S G L M K Y N L R S Z I E F I R U S J H J J R S Z I C O V F B P H I N
现在明文中的 e 就被加密成了 L L L I S I
,其他字母也一样,这样维吉尼亚密码就混淆了字母的频率,弥补了单表替换密码的不足。
事实上用多套密码本加密的思路并不新鲜,但使用厚厚的密码本加密根本就不实用,维吉尼亚密码的优势就是方便,密钥单词可以任意选择,庞大的密钥空间和频率分析法的失效,让人们在几个世纪中都束手无策因此维吉尼亚密码一度被称为——不可破解的密码。
维吉尼亚的破绽
但任何密码都是有破绽的,只要仔细观察总能发现端倪
比如明文的 you
被加密成了 MKY
,两个 you
之间隔了 28 个字母
密钥 HOWEVER
加密完第一个 you
之后,经过四次循环加密,刚好在第四次加密时,再次将 you
加密成了 MKY
维吉尼亚密码可以混淆单个字母的出现频率,但无法掩盖明文的结构规律
找到密文中相同的字母组合,通过其间隔位置,可以判断出密钥的长度
简单理解,间隔出的某个公约数就可能是密钥长度,密文越长这种字母组合出现的可能就越多
这就是维吉尼亚密码的破绽,当我们猜出密钥的长度,就可以将维吉尼亚密码的问题,转变为多个凯撒密码的问题
比如在这里,我们猜测密钥的长度为 4,但不知道具体单词是什么
我们将密钥的位置进行编号,找出密钥 1-4 加密的密文,提出来就是 4 个凯撒密码,而凯撒密码是单表替换密码,用频率分析法就能轻易破解
其实就 5 步:
-
找出重复的密文,猜测密钥单词。
-
将密文按每个密钥字母提出来,得到多个凯撒密码。
-
对每个凯撒密码进行频率分析,找出其中可能对应着明文 E 的密文。
-
根据密文和明文 E ,再结合维吉尼亚加密表格,得到密钥字母。
-
用密钥字母对密文解密,看得出的明文是否有意义。
总结
安全性的局限: 维吉尼亚密码并非真正「不可破」。其安全性严重依赖于:
-
密钥长度 >> 明文结构特征: 密钥越长,周期性越不明显,重复片段间隔是密钥倍数的概率越低,破译难度越高。但过长的密钥难以记忆和使用。
-
密文长度: 如果密文长度远小于密钥长度,或者密钥是真正随机且与明文等长(即「一次一密」),那么上述方法将完全失效,理论上达到无条件安全(Unconditional Security)。
历史意义: 维吉尼亚密码代表了古典密码学对抗频率分析的智慧巅峰。它的出现标志着密码学从依赖单表替换的「易破」时代,迈向了利用多表替换混淆统计特征的新阶段。然而,其周期性密钥的破绽最终也被发现和利用,推动了密码学向更复杂、更安全的方向发展(如更长的密钥、无周期性的滚动密钥、一次一密)。
核心教训: 维吉尼亚密码的兴衰史再次证明,在密码学的攻防战中,没有永恒的「不可破译」。新的密码设计总会带来新的挑战,而新的分析方法也总会应运而生。真正的安全,往往在于对密码原理的深刻理解和对潜在破绽的持续警惕。
🧸 参考文献
本文基于基本操作发行的《成为一名密码朋克》项目