密码学基础
破解的两种方法
- 密码学分析
- 穷举
传统密码
Caesar密码
单表代替密码: 用字母表的置换作为密钥,密钥空间从26变到26!
破解: Frequency Analysis
Vigenere密码
\(C_i=(p_i+k_{i\bmod m})\bmod 26\)
多表代替密码
破解: 1. 计算重复密文序列间距的公约数,猜测密钥词的长度m 2. 如果密钥词的长度是m,那么密码实际上是m个单表密码组成(如1,1+m,1+2m...位置上的加密) 对指定位置进行频率分析
book cipher
Enigma
轮子的初始位置是密钥 多表加密 26^3才会重复
day key/message key
对称密钥密码学
对称|共享|保密 密钥加密: 加密者和解密者共用同一个密钥
block ciphers
- 将明文分成多个大小为n bit的块
- 对每个块: each output bit is a function of all n input bits and k key bits.
Feistel
雪崩效应
- Diffusion 扩散:使得明文和密文的关系更复杂(迭代交换左右两半
- Confusion 扰乱: 使得密文和密钥的统计关系更复杂(增大block size, 密钥长度,迭代轮数,sub-key generation algorithm,轮函数
DES
n=64, k=56
破解: 密钥长度不够, 穷举
triple DES: \(C=E_{K3}[D_{K2}[E_{K1}]]\) 其中\(E\)代表加密,\(D\)代表解密,K1~K3是3个Key. 当K1=K2时就是普通DES(为了兼容性)
AES
n=128,k=128/192/256
Mode of Operation
如何把大的明文分成长度为n的block
- ECB(块之间是独立的, 所以相同的明文块会产生相同的密文)
- CBC
Stream cipher
不分块。用key生成一个伪随机数序列,用随机数序列和明文的每一位XOR