一种基于穷举碰撞的RSA降维破解算法

来源:互联网 发布:知乎女神王珏 编辑:程序博客网 时间:2024/05/19 20:39

1.前言

  RSA是一种非对称加密算法,常用于数字签名及电子政务。与对称加密算法不同,RSA算法的密钥有两个,公钥用于加密,由发信人持有,私钥用于解密,由收信人持有。公钥与私钥由积密钥(n)和素密钥(e或d)两部分组成,其中积密钥公用,素密钥不同,因此实际保密的只有素密钥d,也就是说,只要令积密钥失效,或者对积密钥进行降格,就可大大降低有效密钥长度。此外,虽然素密钥d的长度较长,但由于素数并不占满密钥的整个长度空间,因此实际的保密长度要小于密钥长度。越着计算机运算速度的提高,素数表越来越大,素密钥d很大程度决定了RSA 算法的保密程度。

  攻击积密钥n利用的是RSA算法的基本原理;攻击素密钥d则需要用到素数表以及素密钥e。

  利用素数表对素密钥d进行穷举碰撞,可有效降低素密钥d的保密长度。当素密钥不在素数表时,可继续以素数表外的奇数对素密钥d进行穷举碰撞。

  通过对积密钥和素密钥的同时攻击,可大大降低RSA算法的保密程度,在密钥较长时可将计算分配给多台计算设备,进行并行计算。

 

2.RSA算法的实现与遍历

  积密钥由两个大质数产生n=pq

  φn=(p-1)(q-1) ……(1)

  ed=kφn-1 ……(2)

  一般地,要得到φn需要知道p和q的准确数值,然而由于n的公开以及e和d的有限取值,我们可以通过对φn和d进行的联合遍历,减小运算范围,实现算法的降维破解。

 

2.1 积密钥的展开式

  对φn的表达式展开之后,我们可以发现,φn的值存在下限。

  φn的展开式如下:

  φn=pq-(p+q)+1=(n+1)-(p+q)  ……(3)

  根据算法的定义,以及几何平均值、平方平均值与算术平均值的关系,得:

  φn<n ……(4)

  2*sqrt(pq) ≤ p+q ≤ sqrt(2(p^2+q^2)) ……(5)

  通过以上关系,设i=n-φn,则:可知i的上下限为:

  2*sqrt(pq)-1 ≤ i ≤ sqrt(2(p^2+q^2))-1 ……(6)

 

2.2 积密钥到素密钥的变换

  通过对RSA算法的定义,可知:

  d=(kφn-1)/e ……(7)

  由于e是公开的已知条件,因此只要拿到了φn,就得到了私钥。

 

2.3 对积密钥与素密钥的联合遍历

  在遍历积密钥φn的同时,我们可以对素密钥d同时进行遍历,将(φn,d)密钥对代入公式(7),得到疑似密钥对。也可通过对一定范围内k的遍历,计算出素密钥d。对φn和d的联合遍历回避了质数分解,使破解RSA算法的复杂度及运算量可以预测,将穷举获得的φn,d密钥对代入解密算法,可验证所得φn,d密钥对的正确性。

  由前述2.1可知,对积密钥进行遍历,所需的字长为:

  length(i)=length[sqrt(2(p^2+q^2))-2sqrt(pq)] ……(8)

  又由前述2.1可知,当p<>2且q<>2时,p+q必为偶数,遍历步进为2,因此实际遍历所需的字长为:

  length(i)=length[sqrt(2(p^2+q^2))-2sqrt(pq)]-1 ……(9)  

  在不对素密钥进行验证的情况下,遍历所需的字长为(设d为奇数):

  length(d)=sizeof(d)-1 ……(10)

 

3.穷举实现


0 0
原创粉丝点击