伪随机性及基于伪随机性的窃听不可区分私钥加密方案

伪随机性

意义
  • 通过相对短的随机种子,生成一个相对长的伪随机串
  • 一个短的密钥就可以被用来加密长消息,突破了完善保密的限制
伪随机发生器
  • 定义

    G G G为确定性多项式时间算法, l ( ⋅ ) l(\cdot) l()为多项式, G G G的输出以及满足的条件:
    ∀ s ∈ { 0 , 1 } n , G ( s ) = { 0 , 1 } l ( n ) \forall s \in \{0, 1\}^n, G(s) = \{0, 1\}^{l(n)} s{ 0,1}n,G(s)={ 0,1}l(n)

    1. 扩展性: ∀ n , l ( n ) > n \forall n, l(n) \gt n n,l(n)>n

    2. 伪随机性:对任意多项式时间区分器 D D D,存在可忽略的 n e g l negl negl,满足
      ∣ P r [ D ( r ) = 1 ] − P r [ D ( G ( s ) ) = 1 ] ∣ ≤ n e g l ( n ) |Pr[D(r) = 1] - Pr[D(G(s)) = 1]| \le negl(n) Pr[D(r)=1]Pr[D(G(s))=1]negl(n)
      r r r是从 { 0 , 1 } l ( n ) \{0, 1\}^{l(n)} { 0,1}l(n)中均匀随机选择的, s s s是从 { 0 , 1 } n \{0, 1\}^n { 0,1}n均匀随机选择的

    G G G为伪随机发生器, l ( ⋅ ) l(\cdot) l() G G G的扩展系数

  • 理解

    1. G G G为什么是确定性算法?

      我们使用伪随机发生器的目的是由一个短的密钥产生长的伪随机串来加密信息。这样就不需要保留一个很长的密钥,而只需要保留短的密钥。因此,我们实际使用 G ( k ) ⊕ m G(k) \oplus m G(k)m来加解密信息。显然,如果 G G G是非确定的,在加密和解密时产生了不同的 G ( k ) G(k) G(k),就违背了加密方案的基本正确性要求

    2. 伪随机性

      任意区分器无法在多项式时间内有效的区别真随机串 r r r和伪随机串 G ( s ) G(s) G(s)

构造安全加密方案

一个安全的定长加密方案
  • 构造

    G G G是扩展因子为 l l l的伪随机发生器。则一个消息长度为 l l l的对称密钥加密方案 Π \Pi Π

    • G e n Gen Gen:输入 1 n 1^n 1n,输出随机密钥 k ← { 0 , 1 } n k \leftarrow \{0, 1\}^n k{ 0,1}n
    • E n c Enc Enc:输入密钥 k ∈ { 0 , 1 } n k \in \{0, 1\}^n k{ 0,1}n,消息 m ∈ { 0 , 1 } l ( n ) m \in \{0, 1\}^{l(n)} m{ 0,1}l(n),输出密文 c : = G ( k ) ⊕ m c := G(k) \oplus m c:=G(k)m
    • D e c Dec Dec:输入密钥 k ∈ { 0 , 1 } n k \in \{0, 1\}^n k{ 0,1}n,密文 c ∈ { 0 , 1 } l ( n ) c \in \{0, 1\}^{l(n)} c{ 0,1}l(n),输出明文 m : = G ( k ) ⊕ c m := G(k) \oplus c m:=G(k)c
  • 证明

    G G G是伪随机发生器,则 Π \Pi Π是窃听不可区分的

    P r [ P r i v K A , Π e a v ( n ) = 1 ] = 1 2 + ε ( n ) Pr[PrivK_{\Alpha, \Pi}^{eav}(n) = 1] = \frac{1}{2} + \varepsilon(n) Pr[PrivKA,Πeav(n)=1]=21+ε(n),即证 ε ( n ) \varepsilon(n) ε(n)可忽略; D D D为多项式时间伪随机区分器

    1. D D D接受 w w w作为输入, w ∈ { 0 , 1 } l ( n ) w \in \{0, 1\}^{l(n)} w{ 0,1}l(n),且 w ∈ { r i } w \in \{r_i\} w{ ri} w ∈ G ( s ) w \in G(s) wG(s),即 w w w是真随机串或伪随机串

    2. D D D w w w作为 P r i v K A , Π e a v ( n ) PrivK_{\Alpha, \Pi}^{eav}(n) PrivKA,Πeav(n)中的密钥参与 A \Alpha A的窃听不可区分实验中

      w ∈ { r i } w \in \{r_i\} w{ ri} A \Alpha A面对的是完美保密 Π ∼ \overset{\sim}{\Pi} Π
      P r [ P r i v K A , Π ∼ e a v ( n ) = 1 ] = 1 2 Pr[PrivK_{\Alpha, \overset{\sim}{\Pi}}^{eav}(n) = 1] = \frac{1}{2} Pr[PrivKA,Πeav(n)=1]=21

      w ∈ G ( s ) w \in G(s) wG(s) A \Alpha A面对的是加密方案 Π \Pi Π
      P r [ P r i v K A , Π e a v ( n ) = 1 ] = 1 2 + ε ( n ) Pr[PrivK_{\Alpha, \Pi}^{eav}(n) = 1] = \frac{1}{2} + \varepsilon (n) Pr[PrivKA,Πeav(n)=1]=21+ε(n)

    3. A \Alpha A在窃听不可区分实验中成功时, D D D输出 1 1 1,否则输出 0 0 0

      w ∈ { r i } w \in \{r_i\} w{ ri}
      P r [ D ( w ) = 1 ] = P r [ P r i v K A , Π ∼ e a v ( n ) = 1 ] = 1 2 Pr[D(w) = 1] = Pr[PrivK_{\Alpha, \overset{\sim}{\Pi}}^{eav}(n) = 1] = \frac{1}{2} Pr[D(w)=1]=Pr[PrivKA,Πeav(n)=1]=21

      w ∈ G ( s ) w \in G(s) wG(s)
      P r [ D ( G ( s ) ) = 1 ] = P r [ P r i v K A , Π e a v ( n ) = 1 ] = 1 2 + ε ( n ) Pr[D(G(s)) = 1] = Pr[PrivK_{\Alpha, \Pi}^{eav}(n) = 1] = \frac{1}{2} + \varepsilon (n) Pr[D(G(s))=1]=Pr[PrivKA,Πeav(n)=1]=21+ε(n)

    4. 因此有
      P r [ D ( w ) = 1 ] − P r [ D ( G ( s ) ) = 1 ] = ε ( n ) Pr[D(w) = 1] - Pr[D(G(s)) = 1] = \varepsilon(n) Pr[D(w)=1]Pr[D(G(s))=1]=ε(n)

    5. 因为 G G G是伪随机发生器,所以
      ε ( n ) ≤ n e g l ( n ) \varepsilon(n) \le negl(n) ε(n)negl(n)
      即, ε ( n ) \varepsilon(n) ε(n)可忽略

      所以,该加密方案是窃听不可区分的

变长伪随机发生器
  • 定义

    确定的多项式算法 G G G,满足

    1. G ( s , 1 l ) G(s, 1^l) G(s,1l)输出一个长度为 l l l的字符串
    2. ∀ s , l , l ′ \forall s, l, l^{\\'} s,l,l l < l ′ l \lt l^{\\'} l<l G ( s , 1 l ) G(s, 1^l) G(s,1l) G ( s , 1 l ′ ) G(s, 1^{l^{\\'}}) G(s,1l)的前缀
    3. 定义 G l ( s ) = d e f G ( s , 1 l ( ∣ s ∣ ) ) G_l(s) \overset{def}{=} G(s, 1^{l(|s|)}) Gl(s)=defG(s,1l(s)),对于每个多项式 l ( ⋅ ) l(\cdot) l() G l G_l Gl是扩展因子为 l l l的(定长)伪随机发生器
  • 理解

    即为 G G G增加了一个参数 l l l,生成对应长度 l l l的伪随机串,且满足对于同一个 s s s,生成的短随机串是长随机串的前缀

一个安全的变长加密方案
  • 构造

    G G G是一个变长伪随机发生器,则一个消息长度可变的加密方案 Π \Pi Π

    • G e n Gen Gen,输入安全参数 1 n 1^n 1n,输出随机密钥 k ← { 0 , 1 } n k \leftarrow \{0, 1\}^n k{ 0,1}n
    • E n c Enc Enc,输入密钥 k ∈ { 0 , 1 } n k \in \{0, 1\}^n k{ 0,1}n,明文 m ∈ { 0 , 1 } ∗ m \in \{0, 1\}^* m{ 0,1},输出密文 c : = G ( k , 1 ∣ m ∣ ) ⊕ m c := G(k, 1^{|m|}) \oplus m c:=G(k,1m)m
    • D e c Dec Dec,输入密钥 k ∈ { 0 , 1 } n k \in \{0, 1\}^n k{ 0,1}n,密文 c ∈ { 0 , 1 } ∗ c \in \{0, 1\}^* c{ 0,1},输出明文 m : = G ( k , 1 ∣ c ∣ ) ⊕ c m := G(k, 1^{|c|}) \oplus c m:=G(k,1c)c
  • 证明

    G G G是变长伪随机发生器, Π \Pi Π是窃听不可区分的

    P r [ P r i v K A , π e a v ( n ) = 1 ] = 1 2 + ε ( n ) Pr[PrivK_{\Alpha, \pi}^{eav}(n) = 1] = \frac{1}{2} + \varepsilon(n) Pr[PrivKA,πeav(n)=1]=21+ε(n),即证 ε ( n ) \varepsilon(n) ε(n)可忽略; D D D为多项式时间伪随机区分器

    1. D D D接受一个字符串 w ∈ { 0 , 1 } ∗ w \in \{0, 1\}^* w{ 0,1}作为输入

    2. 运行 A ( 1 n ) \Alpha(1^n) A(1n)生成一对消息的 m 0 , m 1 ∈ { 0 , 1 } ∣ w ∣ m_0, m_1 \in \{0, 1\}^{|w|} m0,m1{ 0,1}w

    3. 随机选择一个比特 b ← { 0 , 1 } b \leftarrow \{0, 1\} b{ 0,1},令 c : = w ⊕ m b c := w \oplus m_b c:=wmb

    4. A \Alpha A得到 c c c,输出 b ′ b^{\\'} b。若 b ′ = b b^{\\'} = b b=b,则 D D D输出 1 1 1,否则输出 0 0 0

      w w w为真随机串,
      x P r [ D ( r ) = 1 ] = P r [ P r i v K A , Π ∼ e a v ( n ) = 1 ] = 1 2 xPr[D(r) = 1] = Pr[PrivK_{\Alpha, \overset{\sim}{\Pi}}^{eav}(n) = 1] = \frac{1}{2} xPr[D(r)=1]=Pr[PrivKA,Πeav(n)=1]=21
      w w w为伪随机生成器生成的串,即 w ∈ G ( s , 1 ∣ w ∣ ) w \in G(s, 1^{|w|}) wG(s,1w)

    P r [ D ( G ( s , 1 ∣ w ∣ ) ) = 1 ] = P r [ P r i v K A , Π e a v ( n ) = 1 ] = 1 2 + ε ( n ) Pr[D(G(s, 1^{|w|})) = 1] = Pr[PrivK_{\Alpha, \Pi}^{eav}(n) = 1] = \frac{1}{2} + \varepsilon(n) Pr[D(G(s,1w))=1]=Pr[PrivKA,Πeav(n)=1]=21+ε(n)

    1. 因此有
      P r [ D ( r ) = 1 ] − P r [ D ( G ( s , 1 ∣ w ∣ ) ) = 1 ] = ε ( n ) Pr[D(r) = 1] - Pr[D(G(s, 1^{|w|})) = 1] = \varepsilon(n) Pr[D(r)=1]Pr[D(G(s,1w))=1]=ε(n)

    2. 因为 G ( s , 1 ∣ w ∣ ) G(s, 1^{|w|}) G(s,1w)为伪随机发生器,所以
      ε ( n ) ≤ n e g l ( n ) \varepsilon(n) \le negl(n) ε(n)negl(n)
      即, ε ( n ) \varepsilon(n) ε(n)可忽略,

      所以,该加密方案是窃听不可区分的

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