破解RSA的一些技术

来源:互联网 发布:尿不湿淘宝网 编辑:程序博客网 时间:2024/06/05 10:29

RSA简介:

取一个大数 n=p*q,p,q为大素数.

设n的欧拉函数为 f(n) = (p-1)(q-1);

 

则取一个公钥为e,相应密钥为d.

ed + x * f(n) = 1

要求: e*d = 1 (mod f(n))

原文为m:

密文为c = m^e (mod n)

因为: m ^ f(n) = 1 (mod n)

解密: c^d = m^(e*d)  = m*( (m^f(n)) ^(-x)) (mod n)

 

破密:

1,因子分解法:

破解意向:若知道 p-1 , q-1 ,就知道了 f(n), 则就很容易破解了.

 

由于 p*q = n, p+q = n - f(n) +1

p,q 是 x^2 + (f(n)-n-1)x + n = 0 的根.

 

进而只要试出n的因子分解,就可以破解,因此n的分子分解决定了安全性.

如:

当p 和 q 很接近时,

因为 n = p*q =  ((p + q)/2)^2 -  ((p - q)/2)^2

当 (p - q)/2 接近于 0 时 ,  t = (p + q)/2 接近于 n^(1/2)

只要枚举大于 n^(1/2) 的 t 很快就可以找出满足

t^2 - n 为平方数的 t

使得 t^2 - n = s^2

则 n = (t+s) * (t-s)

至此就求出了 p 和  q.

 

2,阶乘法

意向:

黑客可能会利用阶乘法不断地递增 t 来求出 m 如:

 

因为 c^(e^t) = c  (mod n), 就有 c^(e^(t-1)) = m (mod n)

而 c^(e^(t-1)) = m  (mod n) 就是 m^(e^t) = m (mod n)

即 n |  ( m^(e^t -1) - 1 )

若 m mod n 的阶为k,则

e^t = 1 (mod k)

取 t 的最小值就是 e mod k 的阶,

而 e mod k 的阶,是 f(k) 在因子,又 k 是 m mod n 阶,

即 k 是 f(n) 的因子,求出 k 就容易破解了.

所以 最好使 f(n)  中的两个因子 p-1 , q-1 ,它们的因子中出现的素因子都要为大素数因子,

才能不容易被破解.

原创粉丝点击