一种基于穷举碰撞的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.穷举实现
- 一种基于穷举碰撞的RSA降维破解算法
- 暴力破解穷举算法的改进
- 像素级碰撞的一种算法
- 像素级碰撞的一种算法
- 像素级碰撞的一种算法
- RSA算法的一种实现方式!
- 基于递归的穷举
- 基于穷举法的24点游戏算法(tcl版本)
- 基于JAVA的RSA算法详解
- 基于JDK的RSA算法实现数字签名
- 基于python的简单 RSA算法实现
- 密码学:基于python的rsa算法
- 基于分离轴定理的二维游戏碰撞检测算法
- 一种基于回溯的路径寻找算法
- 一种基于喊话模式的排序算法
- PersonalRank:一种基于图的推荐算法
- 穷举所有子集的算法
- 勤劳的算法-穷举法
- TRIZ随记(2)
- UIReferenceLibraryViewController的使用(调用系统词典)
- Emacs markdown mode C-c C-c p预览中文乱码
- HDU 1596 find the safest road
- Codeforces Round #291 (Div. 2)C.Watto and Mechanism——字典树+dfs
- 一种基于穷举碰撞的RSA降维破解算法
- Android 自己试验Ip地址的时候,不要用localhost 要用ipconfig 进行查 IPV4
- POJ3905 Perfect Election【2-SAT】【Tarjan】
- Android Studio(01)——导入外部引用Library
- C# 深入理解按位异或运算符^
- ScrollView嵌套ListView只显示一行的问题
- 获取UIView所在的视图控制器(UIViewController)
- 中国:阿里、腾讯与微博:移动支付的新三国演义,美国:三星收购美移动支付服务LoopPay与苹果争抢未来移动支付市场
- POJ 1679 The Unique MST