1. 频率测试的基本概念
频率测试(Frequency Test)是密码分析中最基础也最重要的统计测试方法之一。它的核心思想是通过分析密文中各个字符或字符组合出现的频率分布特征,来判断加密文本是否具有自然语言的统计特性。
在实际操作中,我们会先统计密文中每个字母出现的次数,然后计算其相对频率。以英语为例,正常情况下字母'e'的出现频率约为12.7%,而字母'z'仅有0.07%左右。如果加密后的文本中所有字母频率趋于平均(比如每个字母都接近3.85%),这可能表明加密算法有效地破坏了语言的统计特征。
注意:频率测试不仅适用于单字母,对双字母组合(digraph)、三字母组合(trigraph)同样有效。例如英语中"th"、"he"等组合出现频率显著高于其他组合。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 语言"口音"的密码学含义
这里的"口音"(Accent)是一个形象比喻,指的是加密文本在频率分布上表现出的特殊"腔调"或特征模式。就像人类语言口音会暴露说话者的地域背景一样,加密算法的"口音"也会泄露其设计特点。
典型的加密"口音"包括:
- 替换密码会保留原始语言的字母频率特征
- 置换密码会保留字母频率但打乱组合规律
- 现代分组密码(如AES)理想情况下应该消除所有可识别的频率模式
我曾在分析一个自定义加密算法时,发现其输出密文中元音字母频率异常偏低。进一步研究发现这是因其S盒设计时无意中引入了元音字母的偏置特性,这种"口音"最终成为破解的关键突破口。
3. 频率测试的数学基础
频率测试的核心数学工具是卡方检验(Chi-Square Test)。具体计算步骤如下:
- 统计样本中每个字符的实际出现次数Oi
- 计算每个字符的期望出现次数Ei = 总字符数 × 该字符在语言中的标准频率
- 计算卡方统计量:χ² = Σ[(Oi - Ei)² / Ei]
- 对比临界值判断是否拒绝零假设(即文本符合自然语言分布)
例如分析1000个字母的英语密文:
- 字母'e'期望出现约127次
- 若实际出现150次,则该项贡献为:(150-127)²/127 ≈ 4.17
- 所有26个字母的χ²值之和若大于临界值(如自由度为25时95%分位数为37.65),则认为频率分布异常
4. 实际应用中的改进方法
基础频率测试有几个明显局限:
- 对短文本
