流密码

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

  1. Bias in initial output:等于0的概率本该是1/256,但实际比1/256大。因此,在使用RC4时,会舍弃前256 bytes。
  2. 00出现的概率比随机出现的概率大
  3. 对WEP的相关密钥攻击

CSS(基于LFSR,已被完全攻破)

  • 应用:DVD(硬件)

  • 一些基于LFSR的算法(基于硬件,全被攻破)

  1. DVD Encryption(CSS) 2 LFSRs
  2. GSM Encryption(A5/1,2)3 LFSRs
  3. Bluetooch(E0): 4 LFSR
  • 算法描述

现代流密码,(eStream,2008年)

seed+nonce
要求:(k,nonce)不重复使用

Salsa20

  • 优点:软硬件实现很快
  • 安全性:128 bit
  • 与其它算法性能对比(Crypto++ 5.6.0):

流密码算法的安全性

PRG Security Definitions

安全性定义:

原文地址:https://www.cnblogs.com/rookieveteran/p/12775360.html