首页
社区
课程
招聘
RSA算法的一些猜想
2006-12-26 14:09 6161

RSA算法的一些猜想

2006-12-26 14:09
6161
RSA算法的一些猜想

RSA算法描述:
1)任意选定大素数p和q,计算n=p*q和r=(p-1)*(q-1)。
2)任意选定大整数e,使得(r,e)=1且1<e<r。
3)计算d,使得e*d=1 mod r,即d=e^-1 mod r。
4)公钥对(e,n),加密 c=m^e mod n。
5)私钥对(d,n),解密 m=c^d mod n。
注意:大数p、q、r在生成公钥对和私钥对后抛弃,私钥对要保密。

现在的问题是:已知 c=m^e mod n ,如何解密?

1)首先判断是否是标准RSA加密算法。
   分解n,看是否能够分解为两个素数的乘积。
   如果n能够分解为两个素数的乘积,计算r,看e是否满足1<e<r。
   如果是标准RSA加密算法,只要计算出d就可解密了。
   
2)如果n是素数,不能进行分解。
   可看成是RSA算法的特例,此时p=n,q=1,r=p-1,d=e^-1 mod p-1。
   
3)如果n可以分解为多个素数的乘积。
   可看成是RSA算法的推广形式。
   例如,若n=p*q*s*t,则r=(p-1)*(q-1)*(s-1)*(t-1),d=e^-1 mod r。
   
4)如果2和3中的e不满足(r,e)=1且1<e<r的条件。
   如果(r,e)!=1,则显然不存在d使得e*d=1 mod r,这里的方法都不适用。
   对于e>r,经试验上述1、2、3的方法往往还是可行的,不过需要证明。
   (在讲RSA算法时,有的书特意提到1<e<r这个条件,有的书根本没提,不知为何!个人暂时觉得这个条件有点多余。)

注意:n能分解的素数因子的个数越多,其分解的难度越低。如果位数相同,标准RSA算法中n的分解难度最大。
  
以上结论只经过粗略试验,未经严格证明,所以只是猜想。

现在来看最近的3个CrackMe。
对于Happytown CrackMe_0040,n是512位的大数,试了下,分解不出来,又按情况2验证了下,也不是素数,故放弃。
对于Happytown CrackMe_0035,n是素数,显然就是情况2,很简单。
对于Happytown CrackMe_0029,n可以分解为两个大素数,所以是情况1,应该按照标准RSA算法来处理。
只是由于后一个模n'=q刚好能够整除n,从而将问题简化为情况2。假若后一个模n'不能整除n,那么只能按照标准RSA算法来处理。

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

收藏
免费 7
打赏
分享
最新回复 (2)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhucheba 2006-12-27 15:52
2
0
继续关注
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
fonge 5 2006-12-27 20:40
3
0
关注……中
游客
登录 | 注册 方可回帖
返回