引言
唯密文攻击(Ciphertext Only, COA)是密码分析里“最难啃的骨头”——攻击者手里只有两样东西:一是加密的方法(比如AES、RSA这些公开算法),二是一堆加密后的乱码(密文),完全没有原文(明文)或加密钥匙(密钥)的线索。

这种场景在生活中很常见:监听手机支付加密数据、破解多年前的加密日记、分析物联网设备匿名信号等。它就像密码系统的“压力测试”——连最苛刻的COA都能防住,应对其他攻击自然更有底气。本文用通俗语言,从基础到实战,拆解唯密文攻击的技术体系。
一、唯密文攻击基础理论
1.1 定义与模型
COA是密码分析四大“攻击场景”之一,另外三个分别是已知明文攻击(KPA)、选择明文攻击(CPA)、选择密文攻击(CCA)。
COA模型通俗解释:假设明文“苹果”加密后变成“&%@”(密文),攻击者只知道“文字变乱码的规则”和一堆“&%@”,要反推“苹果”或加密钥匙。
从数学角度看,加密就是用“密钥”将“明文”送入“加密机器”生成“密文”。攻击者的目标,就是靠密文和机器规则,猜出钥匙或明文。COA难在“线索太少”,但这也让它成为检验密码安全性的黄金标准。
1.2 假设与边界
COA攻击需基于4个合理假设,这些是攻击的前提条件:
-
算法已知:遵循Kerckhoffs原则——加密方法公开检验。就像锁厂不保密锁结构,靠钥匙难配保安全。AES、RSA等标准算法的每一步计算都公开;
-
明文统计已知:攻击者懂原文“说话习惯”。比如中文“的”字频率最高,英语“e”最多;XML文件开头必是“<?xml>”,这些规律是突破口;
-
密文独立:乱码由同一把钥匙加密,原文无关联。攻击者可凑多组密文规律,减少偶然误差;
-
密钥固定:攻击期间钥匙不变。钥匙用得越久,密文越多,越易找规律;一次一密则COA失效。
COA的“底线”很明确:攻击者只能“被动看乱码”,不能主动搞事情——不能要原文、不能自己编个句子看加密结果、也不能拿乱码去问“这解密后是啥”。就像侦探只能靠现场留下的脚印(密文)破案,不能去问嫌疑人“你怎么作案的”(要明文),所以只能死磕脚印的特征(密文规律)和作案工具的习性(加密算法)。
1.3 与其他攻击模型对比
|
攻击场景 |
手里有啥 |
难度 |
生活例子 |
|
COA |
加密方法、一堆乱码(密文) |
最高 |
捡到一张写满乱码的纸,知道是用某款加密软件弄的,要猜原文 |
|
KPA |
加密方法、乱码、部分原文+对应乱码 |
较高 |
知道某加密文件里有“新年快乐”,也有对应的乱码,要解整个文件 |
|
CPA |
加密方法、乱码、能自己写句子看加密后的乱码 |
较低 |
能随便输入文字到某加密APP,看输出的乱码,再解目标乱码 |
|
CCA |
加密方法、乱码、能自己写乱码看解密后的文字 |
最低 |
能把自己编的乱码输入解密APP,看输出啥,再解目标乱码 |
二、核心技术原理
2.1 密码体制数学基础与攻击切入点
2.1.1 对称密码体制
对称密码是“一把钥匙开一把锁”,加密解密用同一密钥,核心是三种基础操作:
|
操作类型 |
通俗解释 |
示例 |
|
置换 |
打乱字符顺序 |
1234→2413 |
|
代换 |
替换字符本身 |
a→F、b→G |
|
异或 |
逐位对比翻转 |
1⊕1=0、1⊕0=1 |
对称密码分两类,各自有不同的COA攻击切入点:
流密码:逐字加密的“伪随机钥匙串”
生成和原文等长的“伪随机钥匙串”,原文与钥匙串逐位异或得密文(如原文1010⊕钥匙串0110=密文1100)。弱点是钥匙串不够随机,比如RC4算法开头16字符中“00”出现概率1/16,远高于随机的1/256,攻击者靠统计偏差抓规律。
分组密码:分段加密的“块处理”
将原文切成固定长度块(如AES切128位),每块独立加密。常见结构有Feistel网络(分两半互相折腾)和SP网络(先代换再置换)。弱点藏在多轮加密的规律中,比如某几轮操作可近似成线性关系,攻击者反推密钥。
2.1.2 非对称密码体制
非对称密码(公钥密码)是“两把钥匙配套用”:公钥像“信箱钥匙”,可公开给人锁信;私钥像“开箱钥匙”,仅自己能取信。安全靠三大数学难题:
-
大整数分解:把超大数拆成两个大素数相乘(RSA基础);
-
离散对数:找一个数的多少次方等于另一个数(ECC、DSA基础);
-
格最短向量:在多维格中找最短的向量(后量子密码基础)。
虽安全性更高,但COA仍可通过这些漏洞突破:
-
参数不当:RSA用小加密指数e=3,短明文加密后仍是m³,直接开方得原文;
-
曲线缺陷:ECC选的曲线“阶”含小因子,用Pollard's Rho算法快速算私钥;
-
冗余泄露:密文藏算法标识、参数长度等信息,缩小密钥搜索范围。
2.2 熵与冗余度:信息论基础
熵是“不确定性”的量化指标,熵越高越难猜。比如抛硬币(2种结果)熵比掷骰子(6种)低,因为更易预测。
香农熵公式:H(X)=-Σpᵢlog₂pᵢ,核心是“概率×对数”的累加。密码中密钥熵越高越好:
-
128位随机密钥:熵=128比特,2^128种可能,超级计算机算10^27年也试不完;
-
弱密码“123456”:熵=0比特,只有1种可能,一猜就中。
完美保密:只有“一次一密”能实现——密钥和原文等长且仅用一次。比如原文“苹果”用密钥“香蕉”加密得“&%”,下次换密钥“橘子”加密得“#$”,攻击者拿“&%”无法确定原文。但现实密码(如AES)密钥长度固定,原文可无限长,密文必漏原文“影子”,这是COA能成功的根源。
冗余度是“信息里的废话”,是COA的核心突破口。比如“今天天气真好”中重复的“天”,去掉也能懂,这就是冗余。
自然语言冗余度极高:
|
语言类型 |
高频特征 |
冗余度 |
|
英语 |
字母“e”占12.7%,单词“the”最常见 |
≈3.2比特/字母 |
|
中文 |
汉字“的”出现频率最高,“你好”“谢谢”常用 |
≈2.5比特/汉字 |
冗余让原文有规律,加密后规律会部分保留:
-
单表代换密码:a→F、b→G,但“e”对应F的频率仍最高,统计密文频率就能破解;
-
AES-ECB模式:相同原文块加密成相同密文块,图片纯色块加密后会出现重复乱码块。
2.3 攻击复杂度分析
攻击复杂度分三类,三者此消彼长,决定攻击可行性:
|
复杂度类型 |
通俗解释 |
实例对比 |
|
时间复杂度 |
要算多久 |
AES-128暴力破解需10^27年;DES需56小时 |
|
空间复杂度 |
要占多少存储 |
差分分析需TB级存储;Kasiski检验仅需KB级 |
|
数据复杂度 |
要多少密文样本 |
维吉尼亚密码需数百字符;DES线性分析需8TB密文 |
比如用“彩虹表”(预存钥匙-密文对应关系),虽占TB级空间(高空间复杂度),但能把破解时间从年级降到秒级(低时间复杂度)。
这三个“复杂度”是“此消彼长”的关系。比如你存储够大,就能先算好一堆钥匙和乱码的对应表(彩虹表),以后破解时直接查表格,省时间;如果能收集到很多乱码样本,就能靠统计规律减少计算量。就像破案:如果监控录像多(数据多),就算侦探脑子慢点(时间少)也能找到线索;如果有现成的罪犯特征库(空间多),就算录像少点也能快速比对。
三、主要攻击方法分类
3.1 古典攻击方法
3.1.1 频率分析
频率分析是破解单表代换密码(如凯撒密码)的经典方法,核心是“抓字符频率规律”。
攻击三步法
-
统计密文频率:数密文中每个字符出现次数,比如密文“XAYBXC”中X出现2次,A、Y、B、C各1次;
-
匹配明文频率:查英语字母频率表(e:12.7%、t:9.06%),猜密文高频字符对应明文高频字符;
-
验证调整:用猜测解密片段,看是否符合语言习惯。比如解密出“teXt”,X是e则为“text”,通顺即正确。
中文同样适用:统计密文汉字频率,猜高频字是“的”“是”,再结合语义调整。
3.1.2 Kasiski与Friedman检验
多表代换密码(如维吉尼亚密码)用多套规则轮流加密,同一字母在不同位置对应不同密文,打乱频率分布,需先确定密钥长度再破解。
两种核心密钥长度估计方法:
|
方法名称 |
核心原理 |
操作步骤 |
|
Kasiski检验 |
重复密文片段的间隔是密钥长度倍数 |
1.找2-3位重复密文;2.算间隔距离;3.求间隔GCD即为密钥长度 |
|
Friedman检验 |
单表加密的重合指数接近0.0667(英语) |
1.假设密钥长度k;2.密文分k组;3.算每组重合指数,平均接近0.0667则k正确 |
确定密钥长度后,破解就简单了。比如密钥长3,密文分成3组,每组都是一个凯撒密码。对第一组做频率分析,发现高频字符是“X”,猜是“e”,那这组的移位值就是X到e的距离;同理算出第二组、第三组的移位值,合起来就是密钥。比如移位值是10、4、24,对应字母K、E、Y,密钥就是“KEY”,再用它解密整个密文就行。
-
Kasiski检验:靠“重复的乱码片段”猜密钥长度。比如原文里“the”经常出现,如果它的位置间隔是密钥长度的倍数(比如密钥长3,间隔就是3、6、9...),那加密后“the”会变成相同的乱码片段。比如密文里“ABF”出现了两次,位置在第1位和第6位,间隔5,那密钥长度可能是5(因为5的公约数只有1和5,试5更可能);如果还有“CDE”间隔10,那公约数是5,基本就能确定密钥长5了;
-
Friedman检验:靠“字符重复概率”猜密钥长度。英语正常文本里,随便挑两个字符相同的概率约0.0667(重合指数),随机乱码只有0.0385。如果假设密钥长3,就把密文分成3组(第1、4、7...位一组,第2、5、8...位一组,第3、6、9...位一组),每组算重合指数。如果这3组的平均重合指数接近0.0667,说明每组都是单表加密的,密钥长3就对了;如果接近0.0385,就换个长度试试。
确定密钥长度后,破解就简单了。比如密钥长3,密文分成3组,每组都是一个凯撒密码。对第一组做频率分析,发现高频字符是“X”,猜是“e”,那这组的移位值就是X到e的距离;同理算出第二组、第三组的移位值,合起来就是密钥。比如移位值是10、4、24,对应字母K、E、Y,密钥就是“KEY”,再用它解密整个密文就行。
3.2 现代对称密码攻击方法
3.2.1 线性密码分析
线性密码分析是破解现代分组密码的“利器”,核心是“用简单线性关系近似复杂加密过程”。
比如AES、DES的加密过程虽复杂,但能找到“近似规律”:明文第1、3位异或 + 密钥第5、7位异或 ≈ 密文第2、4位异或,这个规律成立概率不是50%(随机),而是56%,有6%的偏差——攻击者就靠这个偏差抓密钥。
COA攻击四步流程
-
找线性近似式:分析算法轮函数,比如DES的3轮加密可找到概率0.56的近似式;
-
收集密文样本:需大量密文(如2^43个),样本越多偏差越明显;
-
统计偏差:数近似式成立次数,偏离50%越多,假设的密钥片段越可能正确;
-
凑出密钥:迭代验证多个密钥片段,组合后验证解密正确性。
1993年Matsui用此方法破解了DES,证明现代密码也难逃COA攻击。
3.2.2 差分密码分析
差分密码分析和线性分析类似,也是抓“规律偏差”,但聚焦“差分传播”——两个明文的异或结果(Δm)在加密后变成特定密文异或结果(Δc)的概率。
比如明文对差分Δm=1010,加密后密文对差分Δc=1100的概率是1/4,这就是“差分特征”,攻击者靠它反推密钥。
COA攻击关键步骤
-
找高概率差分特征(如DES的2轮特征概率1/4);
-
收集大量密文对(如2^47个),筛选符合特征的对;
-
统计符合特征的密文对对应的密钥片段,出现最多的即为候选;
-
组合密钥片段并验证。
虽最初是选择明文攻击,但攻击者可猜原文差分规律(如相邻原文差分常为1010),适配COA场景。
3.2.3 代数攻击
代数攻击是“用数学方程解密钥”——把加密过程转化为多元方程组,解出“密钥变量”。
比如流密码常用“线性反馈移位寄存器”(LFSR),其加密过程可写成线性方程;非线性部分也能近似成多项式方程。攻击者列方程后,用XL算法、Groebner基算法求解。
这种方法适合破解流密码和轻量级分组密码,因它们的方程复杂度较低。比如破解某LFSR流密码,列对10个方程就能解出8位密钥。
四、典型案例与防御策略
4.1 典型案例分析
4.1.1 恩尼格玛密码机破解
二战德军恩尼格玛密码机是当时最先进的多表代换密码,却因两个“致命习惯”被盟军用COA思路破解:
-
明文冗余:每天早上气象报告开头固定为“Wettervorhersage”(天气预报);
-
密钥固定:每天只换一次密钥,密文可收集一整天。
盟军截到密文后,找重复片段(大概率对应“Wetter”),再结合转子转动规律,由图灵设计“Bombe机”模拟转子运动,快速搜索密钥。
这是“明文冗余+密文规律”的COA混合攻击,不仅帮盟军扭转战局,更推动了现代计算机和密码分析学的诞生。
4.1.2 RC4流密码COA攻击
RC4流密码曾广泛用于WiFi的WEP协议,但其密钥流有致命统计偏差:开头256字节中“00”出现概率1/16,是正常随机的16倍。
攻击者的COA攻击流程:
-
收集几万到几十万WEP加密数据包;
-
统计每个数据包密钥流开头“00”的位置;
-
通过偏差恢复初始密钥流,反推加密密钥。
2001年该攻击成功破解WEP,直接促使WiFi升级为更安全的WPA协议。这说明现代密码若有统计缺陷,COA仍能轻松突破。
4.2 防御策略
针对COA攻击,可从5个维度构建防御体系:
|
防御维度 |
具体措施 |
核心目标 |
|
算法选择 |
用AES-256、RSA-2048+,弃用DES、RC4 |
消除算法固有漏洞 |
|
密钥管理 |
TLS每次连接换新密钥,量子密钥分发一次一密 |
减少密文样本积累 |
|
冗余消除 |
加密前用ZIP、7Z压缩文件 |
破坏明文规律传播 |
|
随机增强 |
AES-CBC/GCM模式加随机初始化向量(IV) |
避免重复密文块 |
|
参数配置 |
RSA不用e=3,ECC选标准曲线,防侧信道攻击 |
堵上参数和实现漏洞 |
五、未来研究趋势
未来COA研究聚焦三大方向,应对新技术挑战:
1. 后量子密码抗性分析
量子计算机可能破解RSA、ECC,需研究格基、哈希基等抗量子密码的密文统计规律,确保在量子时代仍能抵御COA。
2. AI辅助COA攻击
用深度学习挖掘密文隐藏规律——让AI学海量密文-明文对,自动识别加密算法漏洞,突破传统分析方法的局限。
3. 物联网轻量级密码防护
物联网设备计算能力弱,只能用简化密码。需平衡“安全”与“省电”,研究轻量级密码的COA漏洞,设计更健壮的方案。
总之,密码系统的“规律”与COA的“找规律”是永恒的博弈,只要有规律可寻,COA的研究就不会止步。
1356

被折叠的 条评论
为什么被折叠?



