关于安全证明, 目前主流的方法有安全归约证明 (由 single game 实现) 和 Game Hopping (由 game sequence 实现) 两种。
注意这篇博客是基于Douglas Stebila的论文An Introduction to Provable Security的部分3.3中书写的,通过这个链接下载论文:https://www.douglas.stebila.ca/files/teaching/amsi-winter-school/Lecture-2-3-Provable-security.pdf。
回顾公钥密码学中IND-CCA安全定义。如果一个人从攻击者处移除了解密问询,那么我们就得到了CPA安全概念。注意:移除加密问询不能改变攻击者的能力,因为攻击者一开始就有公钥,所以他可以自己进行加密。
在早期的博客中,我们描述了一个DDH问题。在这篇博客中,我们继续讨论一个叫‘game hopping’的技术,来证明如果DDH是难的,那么ElGamal加密方案是IND-CPA安全的。从广义上讲,我们将对ElGamal的IND-CPA博弈转换成DDH的博弈来证明攻击者的在第一个游戏的概率不会超过第二个。因此如果第二个的概率是非常小的,那么第一个博弈获胜的概率也会是非常小的。(证明加密方案是IND-CPA安全的)
首先,让我们描述一下ElGamal加密方案。我们预先给定一个交换群G,G的阶是素数q,生成器是g。(这里隐式的选择了安全参数 \(\lambda\)。当我们说一个变量是可忽略的时候,我们指的是对安全参数的一个可忽略函数。我们不在这里讨论细节。)明文和密文都是群中的元素。私钥是一个秘密的指数\(x \in Z_q\),公钥是\(X = g^x\)。加密消息\(M \in G\),应该先随机的选择一个\(y \in Z_q\),计算\(c_1 = g^y,c_2=MX^y\)。然后密文就是\((c_1,c_2)\) 。为了解密,我们知道\(c_2 = MX^y = M(g^x)^y = M(g^y)^x = Mc_1^x\)。因此使用私钥\(x\),我们能计算\(M = c_2c_1^{-x}\)。
现在考虑下面的博弈,\(A\)是一个PPT(概率多项式时间)攻击者。
如果上述博弈返回1,我们说\(\mathcal{A}\)获胜。从Ana的博客来看,如果\(\mathcal{A}\)的概率\(2|Pr[\mathcal{A} \space wins \space Game_0]-1/2|\)。
接下来,考虑一个新博弈\(Game_1\)。唯一和\(Game_0\)不同的是它把第四步替换了,从
\[Z \leftarrow X^y
\]
变成了
\[z \overset{\$}{\leftarrow} Z_q,Z \leftarrow g^z
\]
。
因此新的密码就变成了\((c_1, c_2) = (g^y, M_bg^z)\)。
我们观看第二个博弈,我们发现z是随机选择的,我们攻击者就不知道关于b的任何信息,于是他猜测成功的概率是1/2。
我们对比两个博弈,观察其中的不同。一个用的是\(g^{xy}\),一个用的是\(g^z\)。很容易发现问题和DDH问题相关。攻击者必须分区\(g^x,g^y,g^{xy}\)和\(g^x,g^y,g^z\)。为了保证两个博弈的链接,我们使用\(\mathcal{A}\)来构造一个攻击者\(\mathcal{B}\),来对抗DDH:
如果\(B\) 被给定的三元组是\((g^x,g^y,g^{xy})\),那么上述就是一个\(A\) 的完美的模拟。因此之前两个博弈的差距完全在于B和DDH对抗的概率。
结合上面的分析,我们可以很容易地得到A对ElGamal的IND-CPA安全性的优势并不大于B对DDH的优势。因此,如果DDH对于所有多项式时间的对手都是困难的(这意味着它们的优势可以忽略不计),那么ElGamal必须是IND-CPA安全的。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章