ElGamal密码、DDH、CDH简介及ElGamal在DDH下的IND-CPA 的安全性证明

时间:2024-04-12 07:03:42

ElGamal 在 DDH下的 IND-CPA 安全性

有关DDH和ElGamal

Diffie-Hellman Protocol

有限循环群 G\mathbb{G} (e.gG=(Zp))\left(e.g\quad G=\left(Z_{p}\right)^{*}\right),其阶数为nn

GG中取生成元gg: <g>={1,g,g2,g3,,gn1}<g>=\left\{1, \mathrm{g}, \mathrm{g}^{2}, \mathrm{g}^{3}, \ldots, \mathrm{g}^{\mathrm{n}-1}\right\},那么Diffie-Hellman Protocol如下图所示:

ElGamal密码、DDH、CDH简介及ElGamal在DDH下的IND-CPA 的安全性证明

通过图述方式,Alice和Bob可以共享**kABk_{AB}

ElGamal*

ElGamal是基于Diffie-Hellman Protocal的公钥加密方案。其同样基于有限循环群G\mathbb{G}和群中一固定的生成元gg,那么ElGamal可由下图描述:

ElGamal密码、DDH、CDH简介及ElGamal在DDH下的IND-CPA 的安全性证明

(个人认为这个图比我在很多地方看到的文字叙述更容易理解。)

其中Enc,Dec是认证加密系统的加密和解密算法(比如对称加密方法),Gen是**生成算法。在实际应用时,Gen一般为一个Hashing Function(哈希函数),即kHash(gb,gab)k←Hash(g^b,g^{ab})

Compute Diffie-Hellman Assumption

在上图,pk为我们选择的公钥,而其实你会发现gag^a.gbg^b都是明文形式给出的。基于g,gagbg, g^a,g^b,得到gabg^{ab}是计算困难的, 这就是Compute Diffie-Hellman Assumption(CDH)。

Decision Diffie-Hellman Assumption

考虑阶数为qq的有限循环群G\mathbb{G}和群中一固定的生成元gg,已知gag^a,gbg^ba,bZqa, b \in \mathbb{Z}_{q}, 独立随机选取),若DDH Assumption成立,那么gabg^{ab}应与G\mathbb{G}中的随机元素不可区分。

如果DDH在群G\mathbb{G}中是困难的,那么对于所有概率多项式时间算法A\mathcal{A}都应存在可忽略的函数neglnegl,其满足:
Pr[A(G,q,g,ga,gb,gc)=1]Pr[A(G,q,g,ga,gb,gab)=1]negl(n) \left|\operatorname{Pr}\left[\mathcal{A}\left(\mathbb{G}, q, g, g^{a}, g^{b}, g^{c}\right)=1\right]-\operatorname{Pr}\left[\mathcal{A}\left(\mathbb{G}, q, g, g^{a}, g^{b}, g^{ab}\right)=1\right]\right| \leq \operatorname{negl}(n)
其中a,b,ca,b,c是在Zq\mathbb{Z}_{q}中随机选取的。可以看出,DDH是强于CDH的假设。

ElGamal在DDH下的CPA安全性证明

由于ElGamal是一种公共**加密方案,因此,如果它对单个查询是安全的,则它对qq个查询也是安全的。因此,我们可以假设对手A恰好进行了一次查询。

我们假设攻击者攻击ElGamal时具有优势AdvAAdv\mathcal{A}

构建攻击实验D如下:

RequireG,q,g,ga,gb,gz\mathbb{G}, q, g, g^{a}, g^{b}, g^{z},Challenger, Adversary A\mathcal{A},El Gamal scheme Π\Pi

  1. 挑战者生成公钥pk=G,q,g,gap k=\left\langle\mathbb{G}, q, g,g^{a}\right\rangle,发送给攻击者A\mathcal{A}
  2. 攻击者选择希望被加密的明文m0,m1Gm_{0}, m_{1} \in \mathbb{G}
  3. 挑战者随机生成bb,向攻击者A\mathcal{A}发送gbg^{b}以及挑战密文Enc(mb,gz)(b=0b=1)Enc(m_b, g^{z})\quad(b=0或b=1)
  4. 攻击者A\mathcal{A}判断密文是由哪条明文加密的,如果攻击者认为b=bb'=b则输出b=1b'=1,反之输出0。

z=randz=rand时,由于其是均匀随机选择的,所以A\mathcal{A}以1/2的概率输出1,即:
Pr[D(G,q,g,ga,gb,gz)=1]=Pr[PubKA,Πeav(n)=1]=12 \operatorname{Pr}\left[D\left(\mathbb{G}, q, g, g^{a}, g^{b}, g^{z}\right)=1\right]=\operatorname{Pr}\left[\operatorname{Pub} K_{\mathcal{A}, \Pi}^{\operatorname{eav}}(n)=1\right]=\frac{1}{2}
z=abz=ab时,此时为IND-CPA实验,由于x,yx,y是随机选择的,那么攻击者在实验中具有优势AdvAAdv\mathcal{A}(假设):
Pr[D(G,q,g,ga,gb,gab)=1]=Pr[PubKA,Πeav(n)=1]=12+AdvA \operatorname{Pr}\left[D\left(\mathbb{G}, q, g, g^{a}, g^{b}, g^{ab}\right)=1\right]=\operatorname{Pr}\left[\operatorname{Pub} K_{\mathcal{A}, \Pi}^{\operatorname{eav}}(n)=1\right]=\frac{1}{2}+Adv\mathcal{A}
由于DDH在群G\mathbb{G}中是困难的,因此有:
Pr[A(G,q,g,ga,gb,gz)=1]Pr[A(G,q,g,ga,gb,gab)=1]negl(n) \left|\operatorname{Pr}\left[\mathcal{A}\left(\mathbb{G}, q, g, g^{a}, g^{b}, g^{z}\right)=1\right]-\operatorname{Pr}\left[\mathcal{A}\left(\mathbb{G}, q, g, g^{a}, g^{b}, g^{ab}\right)=1\right]\right| \leq \operatorname{negl}(n)
也即
AdvAnegl(n) Adv\mathcal{A} \leq \operatorname{negl}(n)
从而我们证明了:如果 DDH 问题是困难的, ElGamal加密方案在IND-CPA 安全模型下是安全的。

关于ElGamal、CDH、DDH

对于ElGamal的安全性分析有两种:一种是基于Random Oracle模型,使用了CDH假设;另一种,没有Random Oracle模型,但是使用更强的DDH假设。

Random Oracle

ElGamal密码、DDH、CDH简介及ElGamal在DDH下的IND-CPA 的安全性证明由此:如果DDH假设在G中为假,则假设CDH在G中成立,该方案仍然是安全的,但限制在在较弱的Random Oracle语义安全(Semantic Secure)模型中。事实上,我们拥有其它避开RandomOracle的方法:可以通过强于CDH,但弱于DDH的hash Diffie-Hellman (HDH)假设,来实现IND-CPA安全。

有关HDH及其安全性证明,有时间再写吧,先复习期末了~