前两次作业时间太久了,找不到了(
所以只放了最后一次大作业上来,附件都在github上
题目:RSA大礼包 |
摘要: RSA算法是现在使用最广泛的公钥密码体制之一,其体制基于大数分解的困难性而设计,以安全性高独树一帜。本文通过对21个加密数据进行数据分类和分析,采用了共计五种方法成功解出大部分密文,并通过英语语义分析猜测并验证了剩下的明文,实现了对明文信息的破译。本文用到的破解方法基本上都是RSA密文破解的常规思路,将在正文中逐个分析。 |
题目描述 题目是2016年全国高校密码数学挑战赛的赛题三——RSA加密体制破译。RSA算法只需要选择5个参数(N,p,q,e,d),简单且易于实现,而且破解难度比较大。1024bit的N理论上是安全的,但其他参数可能会带来安全隐患。题目大致为一个RSA加解密软件,已知该软件发送某个明文的所有参数和加密过程全部数据,并给出了21个Frame,挑战者要通过加密数据恢复这21个帧,并得到通关密语。 |
过程 根据对密文的分析,我们可以通过以下几个步骤解密: 首先遍历所有帧的N,如果有相同N的情况且加密片段相同,则使用共模攻击; 再遍历所有帧N的公因数,若不为1则可以将这两个N成功分解(因数碰撞); 遍历e,检测是否存在低指数广播攻击 对剩下的帧再使用费马分解和P-1分解,看是否能解密。 分析后可得: Frame0与4的N和加密片段均相同,可以共模攻击; Frame1和18的N有公因子,可以因数碰撞 Frame7,11,15的e=3,Frame3,8,12,16,20的e=5,均可以使用低指数广播攻击进行破解。 Frame10可以用费马分解法破解 Frame2,6,19可以用p-1分解法破解 并可以对剩余帧进行语义分析,从而得出结果。 共模攻击原理(0,4): 显然,Frame0和4是由同一个明文m的经过两个公钥e1,e2加密的密文c1,c2,并且有c1=pow(m,e1,n);c2=pow(m,e2,n) 那么,若e1,e2互素,由扩展欧几里得算法,存在e1*s1+e2*s2==1。 |