完美安全性(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
安全性定義: