共模攻击的大前提就是,RSA体系在生成密钥的过程中使用了相同的模数n。
假设有一个通信系统中用RSA加密消息。首先生成了两个大质数P,Q,取得PQ乘积N。并且以N为模数,生成多对不同的公钥及其相应的私钥。将所有公钥公开,不同的人获得自己的私钥,比如,A获得了私钥d1,B获得了私钥d2.
某次用所有公钥加密了同一条信息M,也就是
c1 = m^e1%n
c2 = m^e2%n
此时A拥有密钥d1,他可以通过m = c1^d1%n解密得到消息m
同时B拥有密钥d2,他可以通过m = c2^d2%n解密得到消息m
如果此时有一个攻击者,同时获得了c1,c2,因为模数不变,以及所有公钥都是公开的,那么利用同模攻击,他就可以在不知道d1,d2的情况下解密得到消息m。
数学解析:
首先假设,e1,e2互质
即
gcd(e1,e2)=1
此时则有
e1s1+e2s2 = 1
式中,s1、s2皆为整数,但是一正一负。
通过扩展欧几里德算法,我们可以得到该式子的一组解(s1,s2),假设s1为正数,s2为负数.
因为
c1 = me1%n c2 = me2%n
所以
(c1s1 * c2s2)%n = ((me1%n)s1 *(me2%n)s2)%n
根据模运算性质,可以化简为
(c1s1c2s2)%n = ((me1 )^ s1 (m ^e2) s2)%n
即
(c1s1*c2s2)%n = (m<

本文详细介绍了RSA加密体系中的共模攻击,重点阐述了攻击的前提条件和数学解析。当多个用户使用相同模数n的RSA密钥对进行加密时,攻击者可以利用这种攻击方式,在不掌握私钥的情况下解密信息。通过扩展欧几里德算法,攻击者可以找到一组解,从而恢复原始消息。提供了一个例题来进一步说明这一过程。


被折叠的 条评论
为什么被折叠?



