定义
理解
在这个实验中, 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
显然,任何确定性加密无法通过本实验,它只需要通过访问预言机就可以知道哪条消息被加密了
定义
对称密钥加密方案 Π = ( 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}∗→{ 0,1}∗是有效的、长度保留的、带密钥的函数。如果对所有多项式时间区分器 D D D,存在一个可忽略的函数 n e g l negl negl,满足
∣ P r [ D F k ( ⋅ ) ( 1 n ) = 1 ] − P r [ D f ( ⋅ ) ( 1 n ) = 1 ] ∣ ≤ n e g l ( n ) |Pr[D^{F_k(\cdot)}(1^n) = 1] - Pr[D^{f(\cdot)}(1^n) = 1]| \le negl(n) ∣Pr[DFk(⋅)(1n)=1]−Pr[Df(⋅)(1n)=1]∣≤negl(n)
则称 F F F是一个伪随机函数,其中 k ← { 0 , 1 } n k \leftarrow \{0, 1\}^n k←{ 0,1}n是均匀随机选择的, f f f是真随机选择函数
理解
有效的:其计算在多项式时间内完成
长度保留:密钥、输入、输出等长
带密钥:顾名思义
也就是说,任何多项式 D D D无法分辨出 F F F和真随机函数
构造
令 F F F是伪随机函数,定义一个消息长度为 n n n的对称密钥加密方案 Π \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 } n m \in \{0, 1\}^n m∈{ 0,1}n,均匀随机的选择 r ← { 0 , 1 } n r \leftarrow \{0, 1\}^n r←{ 0,1}n,并输出密文
c : = ⟨ r , F k ( r ) ⊕ m ⟩ c := \lang r, F_k(r) \oplus m \rang c:=⟨r,Fk(r)⊕m⟩
D e c Dec Dec:输入密钥 k ∈ { 0 , 1 } n k \in \{0, 1\}^n k∈{ 0,1}n,密文 c = ⟨ r , s ⟩ c = \lang r, s \rang c=⟨r,s⟩,输出明文消息
m : = F k ( r ) ⊕ s m := F_k(r) \oplus s m:=Fk(r)⊕s
理解
在确定密钥的情况下, r r r为密文的生成提供了额外的随机性,因此同样的明文会被加密为不同的密文
r r r是作为密文的一部分发送出去的,因为 r r r本身也是随机的,所以不会泄露任何信息
证明
若 F F F是伪随机函数,则 Π \Pi Π是CPA不可区分的
区分器 D D D被指定输入 1 n 1^n 1n,以及随时访问预言机 O : { 0 , 1 } n → { 0 , 1 } n \Omicron : \{0, 1\}^n \rightarrow \{0, 1\}^n O:{ 0,1}n→{ 0,1}n
运行 A ( 1 n ) \Alpha(1^n) A(1n),无论何时 A \Alpha A向其加密预言机询问消息 m m m,按以下方式回答:
( a ) (a) (a) 均匀随机选择 r ← { 0 , 1 } n r \leftarrow \{0, 1\}^n r←{ 0,1}n
( b ) (b) (b) 询问 O ( r ) \Omicron(r) O(r),获得 s ′ s^{\\'} s′
( c ) (c) (c) 返回密文 ⟨ r , s ′ ⊕ m b ⟩ \lang r, s^{\\'} \oplus m_b \rang ⟨r,s′⊕mb⟩给 A \Alpha A
当 A \Alpha A输出消息 m 0 , m 1 ∈ { 0 , 1 } n m_0, m_1 \in \{0, 1\}^n m0,m1∈{ 0,1}n时,随机选择一个比特 b ← { 0 , 1 } b \leftarrow \{0, 1\} b←{ 0,1},之后:
( a ) (a) (a) 均匀随机选择 r ← { 0 , 1 } n r \leftarrow \{0, 1\}^n r←{ 0,1}n
( b ) (b) (b) 询问 O ( r ) \Omicron(r) O(r),获得 s ′ s^{\\'} s′
( c ) (c) (c) 返回挑战密文 ⟨ r , s ′ ⊕ m b ⟩ \lang r, s^{\\'} \oplus m_b \rang ⟨r,s′⊕mb⟩给 A \Alpha A
对最终 A \Alpha A的输出 b ′ b^{\\'} b′,如果 b ′ = b b^{\\'} = b b′=b, D D D输出 1 1 1,否则输出 0 0 0
如果 D D D面对的是一个真随机函数,那么 A A A面对的是 Π ~ \tilde{\Pi} Π~
P r [ D f ( ⋅ ) ( n ) = 1 ] = P r [ P r i v K A , Π ~ c p a ( n ) = 1 ] ≤ 1 2 + q ( n ) 2 n Pr[D^{f(\cdot)}(n) = 1] = Pr[PrivK_{\Alpha, \tilde{\Pi}}^{cpa}(n) = 1] \le \frac{1}{2} + \frac{q(n)}{2^n} Pr[Df(⋅)(n)=1]=Pr[PrivKA,Π~cpa(n)=1]≤21+2nq(n)
如果 D D D面对的是一个伪随机函数,那么 A \Alpha A面对的是 Π \Pi Π
P r [ D F k ( ⋅ ) ( n ) = 1 ] = P r [ P r i v K A , Π c p a ( n ) = 1 ] = 1 2 + ε ( n ) Pr[D^{F_k(\cdot)}(n) = 1] = Pr[PrivK_{\Alpha, \Pi}^{cpa}(n) = 1] = \frac{1}{2} + \varepsilon(n) Pr[DFk(⋅)(n)=1]=Pr[PrivKA,Πcpa(n)=1]=21+ε(n)
因此
P r [ D F k ( ⋅ ) ( n ) = 1 ] − P r [ D f ( ⋅ ) ( n ) = 1 ] ≥ ε ( n ) − q ( n ) 2 n Pr[D^{F_k(\cdot)}(n) = 1] - Pr[D^{f(\cdot)}(n) = 1] \ge \varepsilon(n) - \frac{q(n)}{2^n} Pr[DFk(⋅)(n)=1]−Pr[Df(⋅)(n)=1]≥ε(n)−2nq(n)
由于
n e g l ≥ P r [ D F k ( ⋅ ) ( n ) = 1 ] − P r [ D f ( ⋅ ) ( n ) = 1 ] negl \ge Pr[D^{F_k(\cdot)}(n) = 1] - Pr[D^{f(\cdot)}(n) = 1] negl≥Pr[DFk(⋅)(n)=1]−Pr[Df(⋅)(n)=1]
则
ε ( n ) ≤ n e g l + q ( n ) 2 n \varepsilon(n) \le negl + \frac{q(n)}{2^n} ε(n)≤negl+2nq(n)
所以 ε ( n ) \varepsilon(n) ε(n)可忽略, Π \Pi Π是CPA不可区分的
D D D接受一个输入 h h h,判断其是真随机函数,还是伪随机函数,并可以访问随机预言机
A \Alpha A可以通过访问 D D D( D D D再访问随机预言机)得到它选择的任何明文的密文,运行 A 1 n \Alpha^{1^n} A1n输出 m 0 , m 1 m_0, m_1 m0,m1,交给 D D D
随机选择 b ← { 0 , 1 } b \leftarrow \{0, 1\} b←{ 0,1},计算 c : = h ( m b ) c := h(m_b) c:=h(mb),交给 A \Alpha A
A \Alpha A可以继续访问 D D D,输出 b ′ b^{\\'} b′
如果 b ′ = b b^{\\'} = b b′=b, D D D输出 1 1 1,否则 D D D输出 0 0 0
若 h h h为真随机函数,
P r [ D f ( ⋅ ) ( 1 n ) = 1 ] = P r [ P r i v K A , Π ∼ c p a ( n ) = 1 ] ≤ 1 2 + q ( n ) 2 n Pr[D^{f(\cdot)}(1^n) = 1] = Pr[PrivK_{\Alpha, \overset{\sim}{\Pi}}^{cpa}(n) = 1] \le \frac{1}{2} + \frac{q(n)}{2^n} Pr[Df(⋅)(1n)=1]=Pr[PrivKA,Π∼cpa(n)=1]≤21+2nq(n)
若 h h h为伪随机函数,
P r [ D F k ( ⋅ ) ( 1 n ) = 1 ] = P r [ P r i v K A , Π c p a ( n ) = 1 ] = 1 2 + ε ( n ) Pr[D^{F_k(\cdot)}(1^n) = 1] = Pr[PrivK_{\Alpha, \Pi}^{cpa}(n) = 1] = \frac{1}{2} + \varepsilon(n) Pr[DFk(⋅)(1n)=1]=Pr[PrivKA,Πcpa(n)=1]=21+ε(n)
因此,
P r [ D F k ( ⋅ ) ( 1 n ) = 1 ] − P r [ D F k ( ⋅ ) ( 1 n ) = 1 ] ≥ ε ( n ) − q ( n ) 2 n Pr[D^{F_k(\cdot)}(1^n) = 1] - Pr[D^{F_k(\cdot)}(1^n) = 1] \ge \varepsilon(n) - \frac{q(n)}{2^n} Pr[DFk(⋅)(1n)=1]−Pr[DFk(⋅)(1n)=1]≥ε(n)−2nq(n)
因为 F k ( ⋅ ) F_k(\cdot) Fk(⋅)为伪随机函数,所以
ε ( n ) ≤ n e g l ( n ) + q ( n ) 2 n \varepsilon(n) \le negl(n) + \frac{q(n)}{2^n} ε(n)≤negl(n)+2nq(n)
则 ε ( n ) \varepsilon(n) ε(n)可忽略