ElGamal 在 DDH下的 IND-CPA 安全性
有关DDH和ElGamal
Diffie-Hellman Protocol
有限循环群 G (e.gG=(Zp)∗),其阶数为n
在G中取生成元g: <g>={1,g,g2,g3,…,gn−1},那么Diffie-Hellman Protocol如下图所示:
通过图述方式,Alice和Bob可以共享**kAB。
ElGamal*
ElGamal是基于Diffie-Hellman Protocal的公钥加密方案。其同样基于有限循环群G和群中一固定的生成元g,那么ElGamal可由下图描述:
(个人认为这个图比我在很多地方看到的文字叙述更容易理解。)
其中Enc,Dec是认证加密系统的加密和解密算法(比如对称加密方法),Gen是**生成算法。在实际应用时,Gen一般为一个Hashing Function(哈希函数),即k←Hash(gb,gab)
Compute Diffie-Hellman Assumption
在上图,pk为我们选择的公钥,而其实你会发现ga.gb都是明文形式给出的。基于g,ga,gb,得到gab是计算困难的, 这就是Compute Diffie-Hellman Assumption(CDH)。
Decision Diffie-Hellman Assumption
考虑阶数为q的有限循环群G和群中一固定的生成元g,已知ga,gb(a,b∈Zq, 独立随机选取),若DDH Assumption成立,那么gab应与G中的随机元素不可区分。
如果DDH在群G中是困难的,那么对于所有概率多项式时间算法A都应存在可忽略的函数negl,其满足:
∣∣Pr[A(G,q,g,ga,gb,gc)=1]−Pr[A(G,q,g,ga,gb,gab)=1]∣∣≤negl(n)
其中a,b,c是在Zq中随机选取的。可以看出,DDH是强于CDH的假设。
ElGamal在DDH下的CPA安全性证明
由于ElGamal是一种公共**加密方案,因此,如果它对单个查询是安全的,则它对q个查询也是安全的。因此,我们可以假设对手A恰好进行了一次查询。
我们假设攻击者攻击ElGamal时具有优势AdvA。
构建攻击实验D如下:
Require:G,q,g,ga,gb,gz,Challenger, Adversary A,El Gamal scheme Π
- 挑战者生成公钥pk=⟨G,q,g,ga⟩,发送给攻击者A
- 攻击者选择希望被加密的明文m0,m1∈G
- 挑战者随机生成b,向攻击者A发送gb以及挑战密文Enc(mb,gz)(b=0或b=1)
- 攻击者A判断密文是由哪条明文加密的,如果攻击者认为b′=b则输出b′=1,反之输出0。
当z=rand时,由于其是均匀随机选择的,所以A以1/2的概率输出1,即:
Pr[D(G,q,g,ga,gb,gz)=1]=Pr[PubKA,Πeav(n)=1]=21
当z=ab时,此时为IND-CPA实验,由于x,y是随机选择的,那么攻击者在实验中具有优势AdvA(假设):
Pr[D(G,q,g,ga,gb,gab)=1]=Pr[PubKA,Πeav(n)=1]=21+AdvA
由于DDH在群G中是困难的,因此有:
∣∣Pr[A(G,q,g,ga,gb,gz)=1]−Pr[A(G,q,g,ga,gb,gab)=1]∣∣≤negl(n)
也即
AdvA≤negl(n)
从而我们证明了:如果 DDH 问题是困难的, ElGamal加密方案在IND-CPA 安全模型下是安全的。
关于ElGamal、CDH、DDH
对于ElGamal的安全性分析有两种:一种是基于Random Oracle模型,使用了CDH假设;另一种,没有Random Oracle模型,但是使用更强的DDH假设。
Random Oracle
由此:如果DDH假设在G中为假,则假设CDH在G中成立,该方案仍然是安全的,但限制在在较弱的Random Oracle语义安全(Semantic Secure)模型中。事实上,我们拥有其它避开RandomOracle的方法:可以通过强于CDH,但弱于DDH的hash Diffie-Hellman (HDH)假设,来实现IND-CPA安全。
有关HDH及其安全性证明,有时间再写吧,先复习期末了~