Theorem.
使用 Dolev-Dwork-Naor 构造的 PKE’ 具有 CCA2 安全。
【证明】
Game 0. 即 ExpPKE′,ACCA2-0(κ).
Game 1. 修改 Game 0,先生成签名密钥 vk∗;同时,若解密时出现了 vk=vk∗,则不给解密(返回 ⊥)。
- 对于挑战者来说 SigGen 只运行一次,在开头运行还是在加密时运行是一样的,在证明过程中我们想让他在开头就确定下来,这样允许我们在后续的证明中直接使用 vk∗。
接下来,我们定义 Forgei 表示在 Game i 中敌手 A 询问密文 (vk,c,π,σ),使得 vk=vk∗ 但是 Vrfy(vk,(c,π),σ)=1∧V(r,c,π)=1(验证的两关都通过了),即该事件发生等价于 vk=vk∗∧Vrfy(vk,(c,π),σ)=1∧V(r,c,π)=1。
- 如果 Forge 事件发生:
- Game 0 和 Game 1 就不一样了,因为 Game 1 的时候如果 vk=vk∗ 就直接拒绝了;而 Game 0 会继续走流程。
- 对于 Game 0 和 Game 1 来说,反正 vk∗ 只生成一次,在哪生成都是一样的,从敌手的层面完全看不出来区别,所以 Forge0 和 Forge1 发生的概率是一样的,即 Pr[Forge0]=Pr[Forge1]
- 如果 Forge 事件不发生:
- 要么 vk=vk∗,要么验证的两关有没通过的。
- Game 0 和 Game 1 完全相同,即 Game 0∣¬Forge0=Game 1∣¬Forge1,从而 Game 0=1∣¬Forge0=Game 1=1∣¬Forge1。
于是,根据 Lecture 4 中 lemma 的推论,有
如果敌手能够在 Game 0 中以不可忽略的概率产生 vk=vk∗∧Vrfy(vk,(c,π),σ)=1 的密文,我们就可以利用其能力打破数字签名的 SOT-UF-CMA 安全(这相当于,我们已经伪造了一个签名)。因此规约如下,
于是,
Game 2. 如果 vk=vk∗,那么我们选择其中不同的那一比特(假设第 j 比特),使用那一比特代表的钥匙 skj,vkj 进行解密。于是修改 Game 1 如下:
下面我们定义 Fakei 事件:在 Game i 中敌手 A 询问的密文 (vk,c,π,σ) 通过了检测(即Vrfy(vk,(c,π),σ)=1∧V(r,c,π)=1),但是 ∃i,j∈[k],Dec(ski,vki,ci)=Dec(skj,vkj,cj)。
- 如果 Fake 事件发生,
- 有两个比特 i,j 解密出来的明文不一样。于是,这个 c 就一定不在 aNIZK 语言 L 中,但是其能通过 V(r,c,π) 验证,这就违背了 aNIZK 的 adaptive soundness。
- 对于 Game 1 和 Game 2 来说,从敌手的层面完全看不出来 Fake 事件在 Game 1 中发生和在 Game 2 中发生的区别,因此 Pr[Fake1]=Pr[Fake2]。
- 如果 Fake 事件不发生,
- 对于任意合法的密文 c∈L,每个比特解密出来的都是相同的明文。
- 如果 Fake 事件不发生,即对于所有通过检测的密文,都能保证 ∀i,j∈[k],Dec(ski,vki,ci)=Dec(skj,vkj,cj),令 i=1,即 Dec(sk1,vk1,c1)=Dec(skj,vkj,cj),于是 Game 1 和 Game 2 完全一样。故 Game 1∣¬Fake1=Game 2∣¬Fake2,即 Game 1=1∣¬Fake1=Game 2=1∣¬Fake2。
于是,根据 Lecture 4 中 lemma 的推论,有
Game 3. 将 Game 2 中的 aNIZK 换成仿真器 Sim。
用 Lecture 4 中 NY-PKE 的 CCA1 安全性证明的 Game 0 到 Game 1 一步完全相同的方法,我们可以得到:
Game 4. 将 m0 替换成 m1。