Netexpert FAQ 网络分析专家学习建议入口 @netexpert成员申请指南
网络分析时代 netexpert积分规则的说明 Netis招贤纳士(2007年12月2日更新)
发新话题
打印

在RSA对于大数无需分解就可以找到私钥的部分特例

在RSA对于大数无需分解就可以找到私钥的部分特例

最近有一个程序的注册码用到rsa需要分解数据,因为是256位
他们用了1个多小时就分解开了,后来发现不分解这个数据也可以
算出他的私钥。
http://blog.sina.com.cn/u/4bd62ac4010007zi

生成私要一般需要分解大数n为两个大素数p,q
生成私钥需要计算 (p-1)*(q-1)
对于一些特定的大数是无须分解的。
现说明如下:
假设n满足如下:条件就无须分解。
设 n^(1/2)+1 为 x。
如果能找到合适一个数 y 且
x+y=q x-y=p                    [经scz指出与原来地方已修改]
且(x-1)^2 < n

如果数据满足上述条件则:无须分解此大数
可以看出: (q-1)*(p-1) = n - 2x + 1            [经scz指出与原来地方已修改]
我们看出计算 n的平方根应该比较简单.

但我们是否发现,没有分解大数,怎么知道是否满足上述条件.
其实我们可以先假设n满足条件,计算出它的平方根,就可以得到
(q-1)*(p-1) = n - 2x + 1。然后计算出私钥 d,
然后用他加密一段明文,然后用共钥看能否解开就可以了;
也可以用这个方式检测,算出它的平方根整数后
作n - x^2,如果此数正好是等于一个数的平方。也不用分解此数
如果此数不满足上面的任何一个再分解大数n也不迟.

另外昨天写一个求大数平方根的子程序思路如下:
http://blog.sina.com.cn/u/4bd62ac40100080m
对于给定数据位数[表示成32dword进位],可以先在合适的x位置1,其他低位全都清零,
算他的平方,如果大于给定数据n,则清掉该位,再对x-1位置1,重复直到0,就可以得到
这个数最近平方根整数

主要是让大家记住下面的结论:
所以找大素数作共钥与私钥时,不要选择两个数很相近。也就是两个相邻近的大素数的积n,有
共钥d后,是不用分解这个n的

下面是当时要分解的大数:
ADD1D47967E6ED701852554F88EEE22C416B71A26F3961AE922CFD6ECEC39D73=N
它的平方根用我写的程序求得
D2F1F1429A4A565657B25A75341392CD
也就是在这里x为:
D2F1F1429A4A565657B25A75341392CE

另给出当时从网上下载得程序分解后数据是:
D2F1F1429A4A565657B25A75341392C5=Q
D2F1F1429A4A565657B25A75341392D7=P

[ 本帖最后由 softice_debug 于 2007-1-7 20:29 编辑 ]

TOP

> 设 n^(1/2)+1 为 x。

是说n的平方根的整数部分等于x-1吧。

> x+y=q[p] x-y=p[q]

这里的[]是什么意思?
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

引用:
原帖由 scz 于 2007-1-5 14:08 发表
> 设 n^(1/2)+1 为 x。

是说n的平方根的整数部分等于x-1吧。
是的,老大果然是搞学术啊,细致啊,当时是想求 X^2>N
结果写程序发现求的x是  x^2<n<(x+1)^2
也没有改

> x+y=q x-y=p

这里的[]是什么意思?
这里是或者,看来当时我想的多了
把一个简单的问题搞复杂了。

TOP

我没看明白啊。

(x-1)^2<n<x^2
x+y=p
x-y=q
x^2-y^2=pq=n

无论如何无法直接得出下面这个结论啊

d=(p-1)(q-1)=n-x
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

引用:
原帖由 scz 于 2007-1-5 18:10 发表
我没看明白啊。

(x-1)^2<n<x^2
x+y=p
x-y=q
x^2-y^2=pq=n

无论如何无法直接得出下面这个结论啊

d=(p-1)(q-1)=n-x
晕啊又写错了。
d=(p-1)(q-1)=p*q-q-q+1=n-(q+p)+1=n-2x+1  

[ 本帖最后由 softice_debug 于 2007-1-5 21:44 编辑 ]

TOP

今天又思考一下,发现后面的检测部分,也可以改为,算出它的平方根整数x后
作n-(x+1)^2,如果此数正好是等于一个数的平方就可以了。

TOP

你改一下你最上面的那篇吧。把那些变量统一到一个上下文中,别人好看一些。
说了世上一无牵挂为何有悲喜
说了朋友相交如水为何重别离
说了少年笑看将来为何常回忆
说了青春一去无悔为何还哭泣

TOP

发新话题
版块跳转