完美安全性(perfect secrecy)
一个定义在((K,M,C))上的算法((E,D))具有完美安全性,如果(forall m_0,m_1 in M, |m_0|=|m_1|), (forall c in C), (Pr[E(k,m_0)=c]=Pr[E(k,m_1)=c]), 其中(k in K)。
-
随机选择(m_0)或(m_1)进行加密得到密文,无法根据得到的密文判断出是由哪个明文加密;
-
最强大的攻击者无法由密文获得明文的任何信息;
-
不存在唯密文攻击(但是可能存在其它攻击)。
一次一密具有完美安全性(不适合实际应用);完美安全性要求(|K| ge |M|)。
流密码和伪随机数生成器
-
目的: making OTP practical
-
Idea: replace “random” key by “pseudorandom” key
-
流密码不具备完美安全性
-
安全性新定义-密钥流不可预测性(已知前面部分密钥无法推测出之后的密钥流),否则当加密明文消息头为一些公开消息时,容易泄露后面的明文消息。
PRG is unpredictable if it is not predictable ⇒ ∀i: no “eff” adv. can predict bit (i+1) for “non-neg” ε (ε: 攻击者相对随机猜测的优势)
对OTP、PRG的攻击
攻击一:Two time pad(密钥重用)
(c_1 = m_1 oplus PRG(k))
(c_2 = m_2 oplus PRG(k))
则:(c_1 oplus c_2 = m_1 oplus m_2),英文的ASCII编码存在较大冗余,由可能由此恢复明文消息
现实生活中的例子:
-
Project Venona(1940年早期,俄-美)
-
MS-PPTP (windows NT)
-
802.11b WEP
-
磁盘加密(仅修改部分消息->只有部分密文不同)
启发:
-
Network traffic: negotiate new key for every session (e.g. TLS)
-
Disk encryption: typically do not use a stream cipher
攻击二: OTP(或流密码)不具备完整性(OTP is malleable 可延展的)
Modifications to ciphertext are undetected and have predictable impact on plaintext
对密码的修改会直接影响明文
Real-World Stream Ciphers
传统流密码
RC4(1987,有缺陷)
注意:seed可以任意长
-
应用:Https,WEP(使用方法不安全)
-
一些weakness:
- Bias in initial output:等于0的概率本该是1/256,但实际比1/256大。因此,在使用RC4时,会舍弃前256 bytes。
- 00出现的概率比随机出现的概率大
- 对WEP的相关密钥攻击
CSS(基于LFSR,已被完全攻破)
-
应用:DVD(硬件)
-
一些基于LFSR的算法(基于硬件,全被攻破)
- DVD Encryption(CSS) 2 LFSRs
- GSM Encryption(A5/1,2)3 LFSRs
- Bluetooch(E0): 4 LFSR
- 算法描述
现代流密码,(eStream,2008年)
seed+nonce
要求:(k,nonce)不重复使用
Salsa20
- 优点:软硬件实现很快
- 安全性:128 bit
- 与其它算法性能对比(Crypto++ 5.6.0):
流密码算法的安全性
PRG Security Definitions
安全性定义: