有限循环群 G \mathbb{G} G ( e . g G = ( Z p ) ∗ ) \left(e.g\quad G=\left(Z_{p}\right)^{*}\right) (e.gG=(Zp)∗),其阶数为 n n n
在 G G G中取生成元 g g g: < g > = { 1 , g , g 2 , g 3 , … , g n − 1 }
通过图述方式,Alice和Bob可以共享密钥 k A B k_{AB} kAB。
ElGamal是基于Diffie-Hellman Protocal的公钥加密方案。其同样基于有限循环群 G \mathbb{G} G和群中一固定的生成元 g g g,那么ElGamal可由下图描述:
(个人认为这个图比我在很多地方看到的文字叙述更容易理解。)
其中Enc,Dec是认证加密系统的加密和解密算法(比如对称加密方法),Gen是密钥生成算法。在实际应用时,Gen一般为一个Hashing Function(哈希函数),即 k ← H a s h ( g b , g a b ) k←Hash(g^b,g^{ab}) k←Hash(gb,gab)
在上图,pk为我们选择的公钥,而其实你会发现 g a g^a ga. g b g^b gb都是明文形式给出的。基于 g , g a , g b g, g^a,g^b g,ga,gb,得到 g a b g^{ab} gab是计算困难的, 这就是Compute Diffie-Hellman Assumption(CDH)。
考虑阶数为 q q q的有限循环群 G \mathbb{G} G和群中一固定的生成元 g g g,已知 g a g^a ga, g b g^b gb( a , b ∈ Z q a, b \in \mathbb{Z}_{q} a,b∈Zq, 独立随机选取),若DDH Assumption成立,那么 g a b g^{ab} gab应与 G \mathbb{G} G中的随机元素不可区分。
如果DDH在群 G \mathbb{G} G中是困难的,那么对于所有概率多项式时间算法 A \mathcal{A} A都应存在可忽略的函数 n e g l negl negl,其满足:
∣ Pr [ A ( G , q , g , g a , g b , g c ) = 1 ] − Pr [ A ( G , q , g , g a , g b , g a b ) = 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) ∣∣Pr[A(G,q,g,ga,gb,gc)=1]−Pr[A(G,q,g,ga,gb,gab)=1]∣∣≤negl(n)
其中 a , b , c a,b,c a,b,c是在 Z q \mathbb{Z}_{q} Zq中随机选取的。可以看出,DDH是强于CDH的假设。
由于ElGamal是一种公共密钥加密方案,因此,如果它对单个查询是安全的,则它对 q q q个查询也是安全的。因此,我们可以假设对手A恰好进行了一次查询。
我们假设攻击者攻击ElGamal时具有优势 A d v A Adv\mathcal{A} AdvA。
构建攻击实验D如下:
Require: G , q , g , g a , g b , g z \mathbb{G}, q, g, g^{a}, g^{b}, g^{z} G,q,g,ga,gb,gz,Challenger, Adversary A \mathcal{A} A,El Gamal scheme Π \Pi Π
当 z = r a n d z=rand z=rand时,由于其是均匀随机选择的,所以 A \mathcal{A} A以1/2的概率输出1,即:
Pr [ D ( G , q , g , g a , g b , g z ) = 1 ] = Pr [ Pub K A , Π eav ( n ) = 1 ] = 1 2 \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} Pr[D(G,q,g,ga,gb,gz)=1]=Pr[PubKA,Πeav(n)=1]=21
当 z = a b z=ab z=ab时,此时为IND-CPA实验。
由于 x , y x,y x,y是随机选择的,那么攻击者在实验中具有优势 A d v A Adv\mathcal{A} AdvA(假设):
Pr [ D ( G , q , g , g a , g b , g a b ) = 1 ] = Pr [ Pub K A , Π eav ( n ) = 1 ] = 1 2 + A d v A \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} Pr[D(G,q,g,ga,gb,gab)=1]=Pr[PubKA,Πeav(n)=1]=21+AdvA
由于DDH在群 G \mathbb{G} G中是困难的,因此有:
∣ Pr [ A ( G , q , g , g a , g b , g z ) = 1 ] − Pr [ A ( G , q , g , g a , g b , g a b ) = 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) ∣∣Pr[A(G,q,g,ga,gb,gz)=1]−Pr[A(G,q,g,ga,gb,gab)=1]∣∣≤negl(n)
也即
A d v A ≤ negl ( n ) Adv\mathcal{A} \leq \operatorname{negl}(n) AdvA≤negl(n)
从而我们证明了:如果 DDH 问题是困难的, ElGamal加密方案在IND-CPA 安全模型下是安全的。
对于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安全。
2001,Abdalla, Bellare, Rogway.提出的DHIES,将ElGamal加密转化为IND-CCA2,其效率非常高,不需要Random Oracle,其安全性基于 Oracle Diffie-Hellman假设。