平方逼近法破解RSA

上文RSA破解中提到一种方法为平方逼近法破解RSA,本文针对平方逼近法进行讨论。

平方逼近法

传统平方逼近法使用的实际上平方差公式。若一个数字可以表示成 n = p × q n=p\times q n=p×q,那么根据平方差公式,一定可以表示为 n = ( p + q 2 ) 2 − ( p − q 2 ) 2 n = \displaystyle(\frac{p+q}{2})^2-(\frac{p-q}2)^2 n=(2p+q)2(2pq)2的形式。根据上式的规则 ,我们可也要判断出 ( p + q 2 ) 2 ≥ n \displaystyle(\frac{p+q}{2})^2\ge n (2p+q)2n。也正是这种原因,我们可以从 n \sqrt{n} n 开始测试,直到计算出符合上式的平方差数字。

传统平方逼近法

针对RSA中的模数 n n n进行传统平方逼近法进行分解。我们使用以下流程方式:

  1. 计算出初始值数 s s s,该值以计算的初始值,其值为 n \sqrt{n} n 且为整数。
  2. 计算初始值 s s s的平方与 n n n的差, t = s 2 − n t = s^2 - n t=s2n
  3. 检查计算结果 t t t是否为平方数,若不为平方数则 s s s增加1,返回2计算。
  4. t t t为平方数,计算出 t t t的开方数 t 1 = t t^1 = \sqrt{t} t1=t
  5. 事实上此时求出的 s s s是两因素数之和的一半,而 t 1 t^1 t1则是两因素之差的一半。可以顺利求出 p = s + t 1 p = s+t^1 p=s+t1 q = s − t 1 q=s-t^1 q=st1

传统的平方逼近法要测试的数值个数,也是计算的时间代价为 p + q 2 − n \displaystyle\frac{p+q}2-\sqrt{n} 2p+qn

事实上,为了防止这种传统的平方逼法,在RSA体系生成超大素数时,其两者的差进行了一定的控制。也就是两个数字不可能过近,从而增加了破解的难度。

在实际使用中的RSA的1024bit类型中,该值基本上接近 2 512 2^{512} 2512。换句话来说,计算这个的时间长度很长,按每秒计算 2 20 2^{20} 220测试,该时间仍然是上亿年。

改进平方逼近法

根据欧拉定理,我们可以对传统的平方逼近法进行改进,使其计算速度上进行提升,同时减少计算的时间代价。

根据欧拉定理,我们知道 a φ ( n ) ≡ 1 m o d    n a^{\varphi(n)}\equiv1\mod n aφ(n)1modn
这个定理我们少加推论, a φ ( n ) 2 ≡ 1 m o d    n \displaystyle a^{\frac{\varphi(n)}2}\equiv1\mod n

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值