密码学可分为密码编码学和密码分析学。
密码分析,也称为密码攻击、密码破译。
不同密码算法有不同的分析方法,在此整理一下4种基本的密码分析方法。
大多数情况下,加密算法是公开的。
唯密文攻击(COA)
Ciphtext Only Attack
攻击者具备条件:
- 密文
目标:求解明文、密钥。
方法:穷举
已知明文攻击(KPA)
Known Plaintext Attack
攻击者具备条件:
- 部分明文和对应密文
目标:推出密钥
选择明文攻击(CPA)
Chosen Plaintext Attack
攻击者具备条件:
- 加密流程可控,选定明文消息,从而得到加密后的密文
目标:推出密钥
攻击方法:
- 碰撞攻击
- 差分攻击
场景描述
攻击者拿到加密机器,但加密密钥被嵌入在设备中无法得到,可以通过加密大量的明文来推测密钥。
选择密文攻击(CCA)
Chosen Ciphertext Attack
CCA主要应用于分析公钥密钥体制,尤其是攻击数字签名。
攻击者具备条件:
- 解密流程可控,即选定密文,得到明文。
目标:推出密钥
场景描述
攻击者拿到解密机器,但解密密钥被安全嵌入在设备中无法得到,可以通过解密大量的密文来推测密钥。
选择文本攻击
CPA+CCA
威胁最大
总结
破解难度由难到易:
- 唯密文攻击COA(知道的信息最少)
- 已知明文攻击KPA
- 选择明文攻击CPA
- 选择密文攻击CCA
- 选择文本攻击
实现难度则是反过来(要尽可能获取信息)。
密码系统只有承受住选择明文攻击和选择密文攻击,才能算是安全的,也就是说,即使攻击者拿到了加解密程序,他也破解不出密钥。