CPA不可区分实验 P r i v K A , Π c p a ( n ) PrivK_{\Alpha, \Pi}^{cpa}(n) PrivKA,Πcpa(n)
-
定义
- 生成密钥 k ← G e n ( 1 n ) k \leftarrow Gen(1^n) k←Gen(1n)
- 输入 1 n 1^n 1n给 A \Alpha A, A \Alpha A可以访问 E n c k ( ⋅ ) Enc_k(\cdot) Enck(⋅)预言机(即它可以加密任何它选择的消息),输出一对等长的消息 m 0 , m 1 m_0, m_1 m0,m1
- 选择一个随机比特 b ← { 0 , 1 } b \leftarrow \{0, 1\} b←{ 0,1},计算密文 c ← E n c k ( m b ) c \leftarrow Enc_k(m_b) c←Enck(mb),交给 A \Alpha A
- A \Alpha A依然可以访问 E n c k ( ⋅ ) Enc_k(\cdot) Enck(⋅)预言机,(在多项式时间内)加密任何它选择的消息,输出一个比特 b ′ b^{\\'} b′
- 如果 b ′ = b b^{\\'} = b b′=b,实验输出 1 1 1,否则输出 0 0 0。如果 P r i v K A , Π c p a ( n ) = 1 PrivK_{\Alpha, \Pi}^{cpa}(n) = 1 PrivKA,Πcpa(n)=1,则 A \Alpha A成功
-
理解
在这个实验中, A \Alpha A被赋予了更强的能力:它可以加密任何它希望的明文
注意到生成密钥是本实验的第一步,这也是为 A \Alpha A提供的,它可以根据 A E n c k ( ⋅ ) \Alpha^{Enc_k(\cdot)} AEnck(⋅)来选择它输出的消息 m 0 , m 1 m_0, m_1 m0,m1
显然,任何确定性加密无法通过本实验,它只需要通过访问预言机就可以知道哪条消息被加密了
CPA不可区分性
-
定义
对称密钥加密方案 Π = ( 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 , Π c p a ( n ) = 1 ] ≤ 1 2 + n e g l Pr[PrivK_{\Alpha, \Pi}^{cpa}(n) = 1] \le \frac{1}{2} + negl Pr[PrivKA,Πcpa(n)=1]≤21+negl
则称 Π \Pi Π具备CPA条件下的不可区分性
伪随机函数
-
定义
令 F : { 0 , 1 } ∗ × { 0 , 1 } ∗ → { 0 , 1 } ∗ F: \{0, 1\}^* \times \{0, 1\}^* \rightarrow \{0, 1\}^* F:{ 0,1}∗×{ 0,1}