ElGamal 在 DDH下的 IND-CPA 安全性
有关DDH和ElGamal
Diffie-Hellman Protocol
有限循环群 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 } <g>=\left\{1, \mathrm{g}, \mathrm{g}^{2}, \mathrm{g}^{3}, \ldots, \mathrm{g}^{\mathrm{n}-1}\right\} <g>={ 1,g,g2,g3,…,gn−1},那么Diffie-Hellman Protocol如下图所示:
通过图述方式,Alice和Bob可以共享密钥 k A B k_{AB} kAB。
ElGamal体制
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)
Compute Diffie-Hellman Assumption
在上图,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)。
Decision Diffie-Hellman Assumption
考虑阶数为 q q