我试图证明El Gamal加密不是CCA安全的。
如果对手对m=1的加密技术提出质疑,他将得到一对(c_1,c_2)=(g^y,g^{xy}\cdot m)=(g^y,g^{xy}\cdot 1)=(g^y,g^{xy}).,然后计算g^{-xy}。然后他给挑战者发了一对(m_0,m_1)。当他得到挑战密文(c_1^*,c_2^*),他可以解密它,并发现哪条消息已被加密。因此,对手以不可忽视的概率赢得了实验.
这证明是合理的,还是我错过了什么?
提前谢谢。
这个解决方案不起作用,因为y的值不属于密钥,但是它是为每个加密随机生成的。
正确的解决办法如下:
对手选择了一些消息m_0=x\ and\ m_1=y。然后,他将这两条消息(m_0,m_1)发送给挑战者,并得到其中一条<c_1,c_2>的加密。然后,他选择一些z,并将其与c_2相乘,从而得到一个新的密文<c_1, c_2 . z> 。然后,他询问解密神谕是否解密新的密文。因此,生成的明文要么是x . z,要么是y . z。因此,他可以知道哪条信息被加密了。
发布于 2019-08-16 15:37:04
不,正如所写的,您的技术不起作用(因为加密甲骨文使用与挑战密文相同的y没有具体的原因)。
你需要一种不同的方法。首先,对手不需要依赖加密预言;如果他拥有公钥,那么他可以加密他想要的任何东西。他需要做的是使用解密甲骨文(因为它执行的是对手自己无法执行的操作)。
那么,对手如何才能创建一个与挑战密文不同的密文,但当提交给解密神谕时,会告诉他答案呢?
https://crypto.stackexchange.com/questions/72625
复制相似问题