Theorem. 使用 Noar-Yung 构造的 PKE’ 具有 CCA1 安全。
【证明】
Game 0. 即 ExpPKE′,ACCA1-0(κ)。在游戏中我们对 Noar-Yung 构造进行了展开(小字体)。
Game 1. 修改 Game 0 中的 Gen′ 和 Enc′,使用仿真器 Sim。
接下来,我们假设敌手 A 拥有区分 Game 0 和 Game 1 的能力(返回 1 的概率不可忽略的不同),我们运用其打破 aNIZK 的 Zero-Knowledge 性质。
于是,
Game 2. 修改 Game 1 中的 c2∗,加密 m1。
- 我们要逐渐把 m0 改成 m1,因此这里我们先改变一个。
如果存在敌手 A 拥有区分 Game 1 和 Game 2 的能力(返回 1 的概率不可忽略的不同),那么我们可以利用其打破 PKE 的 CPA 安全性(挑战者接手 (pk2,sk2) 这对公私钥,中间敌手模拟 (pk1,sk1) 这对公私钥的结果,给敌手 A 创造环境,即可打破 CPA 安全性),即
当 b=0 时,模拟的即为 Game 1;当 b=1 时,模拟的是 Game 2。因此,
Game 3. 交换 Game 2 中的密钥,使用 sk2。
定义 Fakei 表示 Game i 中,敌手 A 提交了 (c1,c2,π),该密文通过了 Verifier V 的检测,但是用两把私钥解出来的结果不同;也就是说 (c1,c2) 不在语言里,Verifier V 却输出了 1 的情况;即
如果这个事件不发生(也就是说,不存在通过了 Verifier V 的检测,但是用两把私钥解出来的结果不同的情况),那么 Game 2 和 Game 3 就完全一样,即 (Game 3=1∣¬Fake3)=(Game 2=1∣¬Fake2).
那么,我们知道,对于 Game 2 和 Game 3 来说,Fake 事件发生的概率完全一样(因为只是换了两个一模一样的加密方法的钥匙,从敌手层面完全看不出来区别),即 Pr[Fake2]=Pr[Fake3],那么根据上述 lemma 的推论,我们知道
∣Pr[Game 3=1]−Pr[Game 2=1]∣≤Pr[Fake2]=Pr[Fake3] 对于 Game 2 和 Game 1 来说,因为 Fake 事件发生在第一阶段 (Decryption Phase I),而这两个游戏的第一阶段完全一样,因此
Pr[Fake2]=Pr[Fake1] 对于 Game 1 和 Game 0 来说,两个游戏的第一阶段的区别就是把 CRS 生成器换成了仿真的生成器,因此 Fake 事件发生的概率之差由 adaptive zero-knowledge 性质保证,即
∣Pr[Fake1]−Pr[Fake0]∣≤AdvaNIZKZK(κ) 对于 Game 0 来说,Fake 事件发生的概率由 adaptive soundness 性质保证,即
Pr[Fake0]≤AdvaNIZKsound(κ) 综上,
∣Pr[Game 3=1]−Pr[Game 2=1]∣≤Pr[Fake2]=Pr[Fake1]≤Pr[Fake0]+∣Pr[Fake1]−Pr[Fake0]∣≤AdvaNIZKZK(κ)+AdvaNIZKsound(κ)
Game 4. 类似 Game 2,把另一个 m0 改成 m1。
C(pk,sk)←Gen′(1κ)r←Sim1(1κ);(pk1,sk1)←Gen(1κ);(pk2,sk2)←Gen(1κ);pk:=(pk1,pk2,r);sk:=sk2m/⊥←Dec′(sk,c)if V(r,(c1,c2),π)=0,m:=⊥else,m←Dec(sk2,c2)c∗←Enc′(pk,m1;w∗)c1∗←Enc(pk1,m1;w1∗);c2∗←Enc(pk2,m1;w2∗);π∗←Sim2(r,(c1∗,c2∗))return b′⟶pk⟵c=(c1,c2,π)⟶m/⊥⟵(m0,m1)⟶c∗=(c1∗,c2∗,π∗)⟵b′Adecryption querieschoose m0,m1compute b′ 类似从 Game 1 到 Game 2 的推导,有
∣Pr[Game 4=1]−Pr[Game 3=1]∣≤AdvPKECPA(κ)
Game 5. 类似 Game 1 的逆操作,将仿真器变回原始情况。
C(pk,sk)←Gen′(1κ)r←{0,1}poly(κ);(pk1,sk1)←Gen(1κ);(pk2,sk2)←Gen(1κ);pk:=(pk1,pk2,r);sk:=sk2m/⊥←Dec′(sk,c)if V(r,(c1,c2),π)=0,m:=⊥else,m←Dec(sk2,c2)c∗←Enc′(pk,m1;w∗)c1∗←Enc(pk1,m1;w1∗);c2∗←Enc(pk2,m1;w2∗);π∗←P(r,(c1∗,c2∗),(m1,w1∗,w2∗))return b′⟶pk⟵c=(c1,c2,π)⟶m/⊥⟵(m0,m1)⟶c∗=(c1∗,c2∗,π∗)⟵b′Adecryption querieschoose m0,m1compute b′ 类似从 Game 0 到 Game 1 的推导,有
∣Pr[Game 5=1]−Pr[Game 4=1]∣≤AdvaNIZKZK(κ)
Game 6. 交换 Game 5 中的密钥,用回 sk1;即为 ExpPKE′,ACCA1-1(κ)。
C(pk,sk)←Gen′(1κ)r←{0,1}poly(κ);(pk1,sk1)←Gen(1κ);(pk2,sk2)←Gen(1κ);pk:=(pk1,pk2,r);sk:=sk1m/⊥←Dec′(sk,c)if V(r,(c1,c2),π)=0,m:=⊥else,m←Dec(sk1,c1)c∗←Enc′(pk,m1;w∗)c1∗←Enc(pk1,m1;w1∗);c2∗←Enc(pk2,m1;w2∗);π∗←P(r,(c1∗,c2∗),(m1,w1∗,w2∗))return b′⟶pk⟵c=(c1,c2,π)⟶m/⊥⟵(m0,m1)⟶c∗=(c1∗,c2∗,π∗)⟵b′Adecryption querieschoose m0,m1compute b′ 类似 Game 3 中的推导,我们有
∣Pr[Game 6=1]−Pr[Game 5=1]∣≤Pr[Fake6]=Pr[Fake5] 在 Game 6 中,Fake 事件发生的概率由 aNIZK 的 adaptive soundness 保证,因此
∣Pr[Game 6=1]−Pr[Game 5=1]∣≤Pr[Fake6]≤AdvaNIZKsound(κ)
综上
= = ≤ ≤ = = = AdvPKE′,ACCA-1(κ)∣∣Pr[ExpPKE′,ACCA1-1(κ)=1]−Pr[ExpPKE′,ACCA1-0(κ)=1]∣∣∣Pr[Game 6=1]−Pr[Game 0=1]∣i=0∑5∣Pr[Game i+1=1]−Pr[Game i=1]∣AdvaNIZKZK(κ)+AdvPKECPA(κ)+(AdvaNIZKZK(κ)+AdvaNIZKsound(κ))+AdvPKECPA(κ)+AdvaNIZKZK(κ)+AdvaNIZKsound(κ)2AdvPKECPA(κ)+2AdvaNIZKsound(κ)+3AdvaNIZKZK(κ)7negl(κ)negl(κ) 于是,使用 Noar-Yung 构造的 PKE’ 具有 CCA1 安全。
一些疑问与解答:
- 为什么要先在 Game 1 转换成仿真器,再在 Game 5 转换回来?因为不用仿真器的话, π∗←P(r,(c1∗,c2∗),(m0,w1∗,w2∗)) 会用到 m0,没法直接替换成 m1;而仿真器允许我们在不用到 m0 的时候生成 π∗,即 π∗←Sim2(r,(c1∗,c2∗)),方便后续替换。
- 为什么要两把钥匙?因为在 Game 1 规约 Game 2 的时候,如果没有两把钥匙,没办法通过另一把已知的钥匙来回答 CCA1 的问题。因此规约无法进行下去。