3、古典密码:凯撒密码、维吉尼亚密码、置换密码、频率分析攻击方法及破解案例

古典密码是密码学发展的起点,虽然其安全性在现代计算能力面前已不堪一击,但其中蕴含的置换、替换、密钥编排等核心思想,至今仍是分组密码、流密码设计的基石。理解古典密码的构造与破解方法,是建立密码分析思维的第一步。本章将系统讲解凯撒密码、维吉尼亚密码、置换密码的数学原理,并重点剖析频率分析攻击的统计逻辑与实战破解流程。

古典密码体系与频率分析攻击知识框架 凯撒密码 单表替换·移位3 密钥空间仅25 暴力穷举即可破 → 频率特征完全保留 维吉尼亚密码 多表替换·周期密钥 密钥长度d 卡西斯基测试求d → 按列拆分为凯撒密码 置换密码 位置换·不改变字母 密钥为置换规则 频率分布不变 → 需用模式词/二重图分析 频率分析攻击核心流程 统计密文字母频率 → 对比自然语言分布 → 假设替换关系 → 验证与迭代 实战案例:维吉尼亚密码破解 密文长度200+ → 卡西斯基测试得密钥长度d=5 按列拆分 → 每列频率分析 → 恢复密钥"CRYPT" → 还原明文

3.1 凯撒密码:单表替换的起点

3.1.1 核心原理

凯撒密码是最古老的对称加密算法之一,其本质是单表替换密码。加密时,将明文中的每个字母按照字母表顺序向后(或向前)移动固定的位数 k(0 ≤ k ≤ 25),解密时反向移动相同的位数。数学表达式为:

加密:C = (P + k) mod 26
解密:P = (C - k) mod 26
其中 P 为明文字母编号(A=0, B=1, ..., Z=25),C 为密文字母编号。

例如,使用密钥 k=3 加密明文 "HELLO":H→K,E→H,L→O,L→O,O→R,得到密文 "KHOOR"。由于密钥空间仅有 25 种可能(k=0 无意义),攻击者只需尝试所有可能的移位值,即可在极短时间内暴力破解。

3.1.2 频率分析攻击方法

频率分析的核心思想是:自然语言中字母的出现频率具有统计规律。在英语中,字母 "E" 的出现频率约为 12.7%,"T" 约为 9.1%,"A" 约为 8.2%,而 "Z" 仅占 0.07%。由于凯撒密码是单表替换,明文字母的频率特征会完整地映射到密文中。攻击者只需统计密文中各字母的出现次数,将最高频的字母假设为 "E",即可推算出移位量 k。

步骤操作示例(密文长度 200)
1统计密文字母频率字母 "X" 出现 28 次(14%)
2假设最高频字母对应 "E"X → E,则 k = (X - E) mod 26 = 19
3用 k=19 解密全部密文得到可读明文,验证假设
4若结果不通顺,尝试次高频字母假设 "X" → "T",k=4,重新解密

3.1.3 案例拆解:短密文破解

假设截获密文 "WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ"。统计频率发现 "W" 出现 3 次,"K" 出现 2 次,"H" 出现 2 次。初步假设 "W" 对应 "E",则 k=18,解密得到 "EQB FQZ...",明显不通顺。改假设 "W" 对应 "T",则 k=3,解密得到 "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG",成功还原。此案例说明:频率分析需要结合上下文语义进行验证,不能机械套用最高频假设。

经验提醒:凯撒密码的破解门槛极低,即使没有计算机,手工尝试 25 种移位也只需几分钟。在实际安全场景中,凯撒密码仅用于教学演示或混淆非敏感数据,绝不能用于真实加密。

3.2 维吉尼亚密码:多表替换的突破

3.2.1 核心原理

维吉尼亚密码通过引入密钥词,将单表替换扩展为多表替换。设密钥词长度为 d,则加密时明文中第 i 个字母使用第 (i mod d) 个密钥字母对应的凯撒移位量。例如密钥词 "KEY"(K=10, E=4, Y=24),加密明文 "HELLO":

H(7) + K(10) = R(17)
E(4) + E(4)  = I(8)
L(11) + Y(24) = J(9)  (11+24=35 mod 26 = 9)
L(11) + K(10) = V(21)
O(14) + E(4)  = S(18)
密文:RIJVS

由于同一明文字母在不同位置可能被不同密钥字母加密,频率分布被"抹平",直接统计全密文字母频率无法还原明文。这正是维吉尼亚密码在 16 世纪被视为"不可破解"的原因。

3.2.2 卡西斯基测试与频率分析结合

破解维吉尼亚密码的关键在于确定密钥长度 d。卡西斯基测试基于一个观察:如果明文中出现重复的字母组合(如 "THE"),且两次出现的位置间隔恰好是密钥长度的整数倍,则密文中对应的片段也会重复。攻击者找出所有重复的密文片段,计算其起始位置之差,取这些差值的最大公约数,即可推断出 d。

  1. 寻找重复片段:扫描密文,找出长度 ≥ 3 的重复子串,记录其起始位置。
  2. 计算间距:对每个重复片段,计算两次出现位置的差值。
  3. 求最大公约数:所有差值的 GCD 即为最可能的密钥长度 d。
  4. 按列拆分:将密文按位置 mod d 分成 d 组,每组相当于一个凯撒密码。
  5. 逐列频率分析:对每一列独立进行频率分析,恢复该列的移位量,组合得到完整密钥。

3.2.3 实战案例:完整破解流程

假设截获一段 200 字符的英文密文,使用卡西斯基测试发现重复片段 "VFG" 出现在位置 12 和 62,间距 50;"RTH" 出现在位置 28 和 78,间距 50;"KLM" 出现在位置 45 和 95,间距 50。所有间距的 GCD 为 50,但考虑到密钥长度通常不会超过 20,进一步分析发现 50 的因子有 1,2,5,10,25,50,其中 5 和 10 是合理候选。通过尝试 d=5 和 d=10,分别按列统计频率:

列号最高频字母假设对应明文 "E"移位量
0H (15%)H→E3
1Q (13%)Q→E12
2Z (14%)Z→E21
3M (12%)M→E8
4W (11%)W→E18

将移位量转换为密钥字母(3→D, 12→M, 21→V, 8→I, 18→S),得到密钥 "DMVIS"。用该密钥解密后,明文仍不通顺,说明 d=5 的假设有误。改用 d=10 重新分组,发现第 0 列和第 5 列频率分布相似,第 1 列和第 6 列相似……最终确定密钥长度为 5,但密钥应为 "CRYPT"(C=2, R=17, Y=24, P=15, T=19)。重新解密后得到完整明文。此案例说明:卡西斯基测试给出的是候选值,必须通过频率分析验证;密钥长度错误时,解密结果会出现明显的字母分布异常。

风险提示:维吉尼亚密码的密钥长度 d 不能过短(否则退化为凯撒密码),也不能使用有意义的单词作为密钥(易被字典攻击)。现代密码学中,维吉尼亚密码的思想被流密码(如 RC4)继承,但后者使用更长的伪随机密钥流。

3.3 置换密码:打乱顺序的另一种思路

3.3.1 核心原理

置换密码(又称转置密码)不改变明文字母本身,而是重新排列字母的位置。最简单的形式是列置换:将明文按固定宽度 w 写成矩阵,然后按列读出。例如明文 "WE ARE DISCOVERED FLEE AT ONCE",去掉空格后为 "WEAREDISCOVEREDFLEEATONCE"(22 个字符),按宽度 w=5 排列:

W E A R E
D I S C O
V E R E D
F L E E A
T O N C E

按列读出得到密文 "WDVFT EIELO ASREN RECEE OEDAE"。解密时,接收方按相同的列数重新排列,按行读出即可。密钥就是列宽 w 和列的读取顺序(若列序也打乱,则密钥空间更大)。

3.3.2 频率分析的特殊性

置换密码的显著特征是:密文的字母频率分布与明文完全一致。因此,直接统计单字母频率无法破解。攻击者需要利用以下线索:

  • 字母频率不变:确认是置换而非替换。
  • 二重图/三重图分析:统计相邻字母对(如 "TH"、"HE")的频率,置换后这些组合会被拆散,但重新排列后可能恢复。
  • 模式词匹配:若已知明文可能包含特定单词(如 "ATTACK"),可在密文中寻找该单词的字母模式(如 "ATTACK" 的模式为 A T T A C K,其中第 1、4 位相同),通过模式匹配定位。

3.3.3 案例拆解:列置换的破解

截获密文 "TGEHNI ECDKOA RYREOS IMSUCN TAEHWT",共 30 个字符。统计频率发现各字母分布与英语常规分布一致,确认是置换密码。尝试列宽 w=5,将密文按 5 列重新排列为矩阵,按行读出得到 "TGEHN IECDK OARYR EOSIM SUCNT AEHWT",无意义。尝试 w=6,排列为 6 列 5 行:

T G E H N I
E C D K O A
R Y R E O S
I M S U C N
T A E H W T

按列读出得到 "TERIT GCYMA EDRSE HKEUH NOOCW IASNT",仍不通顺。尝试 w=3,排列为 3 列 10 行,按列读出得到 "TRAIL...",继续调整列序,最终发现按列序 [2,0,1] 读取时得到明文 "THE GREAT ESCAPE IS NOW UNDERWAY"。此案例说明:置换密码的破解需要结合列宽猜测、列序排列和语义验证,计算量远大于凯撒密码,但仍可通过手工或脚本穷举。

总结复盘:古典密码的三大类型——替换(凯撒、维吉尼亚)、置换(列置换)——分别对应了混淆与扩散的雏形。凯撒密码的弱点在于单表替换保留频率特征;维吉尼亚密码通过多表替换抹平频率,但密钥周期暴露了结构;置换密码不改变频率,却破坏了字母间的相邻关系。频率分析攻击的本质是利用统计偏差:只要密文中残留任何与明文相关的统计规律,攻击者就能以此为突破口。现代密码学通过分组迭代、S 盒非线性替换、P 盒扩散等手段,彻底消除了这些统计特征,但"分析-假设-验证"的破解方法论至今仍是密码分析的核心范式。