流密码及多消息窃听不可区分

流密码
  • 定义

    生成伪随机流的算法

  • 理解

    流密码本质上不是一个加密方案,而是构造加密方案的工具

多消息窃听不可区分实验 P r i v K A , Π m u l t ( n ) PrivK_{\Alpha, \Pi}^{mult}(n) PrivKA,Πmult(n)
  • 定义

    1. A \Alpha A被给定输入 1 n 1^n 1n,输出一对消息向量 M 0 ⃗ = ( m 0 1 , m 0 2 , ⋯   , m 0 t ) , M 1 ⃗ = ( m 1 1 , m 1 2 , ⋯   , m 1 t ) \vec{M_0} = (m_0^1, m_0^2, \cdots, m_0^t), \vec{M_1} = (m_1^1, m_1^2, \cdots, m_1^t) M0 =(m01,m02,,m0t),M1 =(m11,m12,,m1t),对于所有 i i i,满足 ∣ m 0 i ∣ = ∣ m 1 i ∣ |m_0^i| = |m_1^i| m0i=m1i
    2. 运行 G e n ( 1 n ) Gen(1^n) Gen(1n)生成密钥 k k k,选择一个随机比特 b ← { 0 , 1 } b \leftarrow \{0, 1\} b{ 0,1},对于所有 i i i,计算 c i ← E n c k ( m b i ) c_i \leftarrow Enc_k(m_b^i) ciEnck(mbi),将密文向量 C ⃗ = ( c 1 , c 2 , ⋯   , c t ) \vec{C} = (c_1, c_2, \cdots, c_t) C =(c1,c2,,ct) A \Alpha A
    3. A \Alpha A输出一个比特 b ′ b^{\\'} b
    4. 如果 b ′ = b b^{\\'} = b b=b,实验输出 1 1 1,否则输出 0 0 0
  • 理解

    此实验的变化在于,使用相同密钥加密了一组消息;加密方案能否在这种情况下依旧保持不泄露任何有关明文的信息?

    显然,如果在一组消息中有两个相同的消息,而且它们加密后的密文也是相同的,那么窃听者就能够知道,该组消息中有至少两个相同的明文,从写泄露了明文的信息

    也就是说,任何确定性的加密方案都无法通过这个实验

窃听者存在下的多消息不可区分性
  • 定义

    对称加密方案 Π = ( G e n , E n c , D e c ) \Pi = (Gen, Enc, Dec) Π=(Gen,Enc,Dec),对所有概率多项式时间敌手 A \Alpha A,存在一个可忽略函数 n e g l negl negl,满足
    P r [ P r i v K A , Π m u l t ( n ) = 1 ] ≤ 1 2 + n e g l Pr[PrivK_{\Alpha, \Pi}^{mult}(n) = 1] \le \frac{1}{2} + negl Pr[PrivKA,Πmult(n)=1]21+negl
    则称 Π \Pi Π具备窃听者存在下的多消息不可区分性

使用流密码的安全多次加密
同步模式
  • 其本质也是一次一密,通信双方使用一个持续流来加密它们的消息,因此没有任何一段密钥被使用超过一次
非同步式
  • 根据其定义,它几乎就是一个使用伪随机函数的加密方案
    E n c k ( m ) : = ⟨ I V , G ( k , I V ) ⊕ m ⟩ Enc_k(m) := \lang IV, G(k, IV) \oplus m\rang Enck(m):=IV,G(k,IV)m

你可能感兴趣的:(现代密码学导论,概率论,线性代数,密码学)