当前位置:
文档之家› RSA密码分析中分解大整数的判定算法
RSA密码分析中分解大整数的判定算法
由 n−( x −2)( y + 2) = n −( xy −2y +2x −4) = n− xy +2( y − x) + 4 及 r = n–xy,得 n = ( x − 2)( y + 2) + r + 2( y − x) + 4 。
第 36 卷 第 15 期 Vol.36 No.15
计算机工程 Computer Engineering
2010 年 8 月 August 2010
·安全技术·
文章编号:1000—3428(2010)15—0142—03 文献标识码:A
中图分类号:TP309
RSA 密码分析中分解大整数的判定算法
孙克泉
Determine Algorithm of Large Integer Decomposition on RSA Cryptanalysis
SUN Ke-quan
(Computer Department, Nankai Community College, Tianjin 300100)
【Abstract】The security of RSA is designed based on the difficulty of large integer decomposition. In the RSA cryptanalysis, according to RSA public key encryption characteristics that the public key n as the product of two large prime numbers, contrary to the form n=pq(in which p, q as large prime numbers) of the large integer n decomposition. A determine algorithm of large integer decomposition on RSA cryptanalysis is given. The decomposition algorithm is proved by mathematical method, the corresponding algorithm design is given, the complexity of the algorithm is made below O(plogn), n prime factor characteristics and the relationship between the effectiveness of the decomposition, as well as RSA safety impacts are analyzed. 【Key words】RSA cryptanalysis; factorization; public-key encryption; complexity
2 RSA密码体制与整数分解算法
2.1 RSA的算法描述及安全性分析 RSA 算法基本思想是,首先选取 2 个大素数 p 与 q,然
后算出 n=pq, φ(n)=(p–1)(q–1),再选取一个正整数 e,使得 满足 gcd(e,φ(n))=1, 1<e<φ(n),再求出正整数 d,使之满足 1<d<φ(n),且使 de≡1 mod φ( n)。用{e, n}作为公钥,用{d, n}
作者简介:孙克泉(1961-),男,副教授、硕士,主研方向:信息
安全
收稿日期:2010-03-01 E-mail:SKQ1000@
和椭圆曲线法等试图用这些方法解决减小 n 的因式分解算法 的复杂度问题。以下是这些算法的时间复杂度[4]:
试除法:O(p(logn)2);
( ) Pollard’s rho 分解法: O p (log n)2 ;
—142—
作为私钥。明文 m 以分组的方式被加密,其中每个分组是一 个小于 n 的二进数,即分组的长度必须小于或等于 lbn;实际 上,分组长度 k 满足 2k<n≤2=me mod n m=cd mod n=(me)d mod n=mcd mod n RSA 算法须满足以下要求: (1)对于所有 m<n,找到 e、d、n,满足 mcd mod n 是可 能的;(2)对于 m<n,求 me、cd 在计算上是容易的;(3)给定 e 和 n,求 d 是计算上不可行的。 RSA 的安全性是基于分解大整数的困难性假定,这种假 定是因为至今还未能证明分解大整数 n 的问题。如果 RSA 的 模数 n 被成功地分解为 p 和 q,则立即获得φ(n)=(p–1)(q–1), 从而能够确定 e 模φ(n)的乘法逆元 d,即 d≡e–1 mod φ(n), 攻击成功。如果给定 n,φ(n)等价于对 n 的分解;在给定 e 和 n 的情况下,确定 d 的计算量至少等价于整数分解问题[3]。 因此,只有分解 n 才能从 c 和 e 中计算出明文 m。 2.2 整数分解算法及复杂度分析 在对 n 的因式分解方法中,通常的方法是采用数论中的 因式分解方法。目前,比较常用的因子分解方法有试除法、 Pollard’s rho 分解法、Pollard’s P-1 分解法、Dixon 分解法、 连分数分解法、二次筛法、多多项式二次筛法、数域筛法(NFS)
理 1,得 p≤ ⎡⎣ n ⎤⎦ ≤ n 。又因为 p≠2,ki=3,5,…, ⎡⎣ n ⎤⎦ 为大 于 3 到 ⎡⎣ n ⎤⎦ 的所有奇数的集合。因此,存在唯一的 kj,使 kj=p。
定理 2 从 ki=3,5,…, ⎡⎣ n ⎤⎦ 集合中任意取一个数,若 n mod ki=0,则 ki=p,并有 q=n/p。
(南开社区学院计算机系,天津 300100)
摘 要:RSA 的安全性是依据大整数分解的困难性而设计的。在 RSA 的密码分析中,根据 RSA 公钥加密体制中的公开密钥 n 为 2 个大素 数乘积的特性,针对形如 n=pq(其中,p、q 为大素数)的大整数 n 分解,提出一种分解 n 的判定算法,并对 n 的素因子特征与该算法的有效 性关系进行分析。经过数学证明和相应算法设计证实,该算法的复杂度低于 O(plogn)。 关键词:RSA 密码分析;因式分解;公钥加密;复杂度
证明:如果 n mod ki=0,可以写成 n =hki,即 ki|n、ki 为 n 的因子。由引理 2,得 ki=p。由 n=pq,得 q=n/p。 3.2 判定算法的基本思想
由定理 1 和定理 2 得出,在小于或等于 ⎡⎣ n ⎤⎦ 的所有奇数 中,必含有 n 的素因子 p。用不大于 ⎡⎣ n ⎤⎦ 的奇数去除 n,只 要 n 能被该数整除,这个数就是 n 的一个素因子 p,进而利 用 q=n/p 求得另一个素因子 q。这就是判定算法的基本思想。 该算法与通常的试除法的区别在于,试除法的思想是先确定 一个数是否为素数,当这个数为素数时,再与 n 试除,判断
Step2 求模运算 r=n mod x,如果 r=0,x 即为 n 的素因 子;否则,再求出 y=(n–r)/x。
这样就构造出 n=xy+r。其中,0<r<x。 Step3 将 x 递减 2,y 递增 2,然后对 r 进行判定,一旦 r 为 0,x 即为 n 的素因子。 为了优化算法,具体说明如下:
Pollard’s P–1 分解法:O(BlogB(logn)2),其中,B 为设 定的光滑界;
椭圆曲线法:O(exp(( 2 + o(1))(lnp)1/ 2(lnlnp)1/ 2)) 基于完全平方数的分解算法(Dixon 分解法、连分数分解 法、二次筛法、多多项式二次筛法、数域筛法(NFS)的最小复 杂度为:O(exp((64/9)1/3(lnp)1/ 3(lnlnp)2/3))。 其中,试除法、Pollard’s rho 分解法、Pollard’s P-1 分解 法和椭圆曲线法对于分解相对较小的素因子效率较高。基于 完全平方数的分解算法对于分解大整数 n 的效率相对较高。 当前使用数域筛法(NFS)分解 n 的最好结果是分解 RSA-200, 该数具有 200 个十进制位,663 个二进位。 实际上,在对这些算法进行相应的算法设计时,对 n 的 素因子特征都有一定的针对性,如 Pollard’s rho 分解法、 Pollard’s P-1 分解法等,如果 n 的素因子是强素数时,就会增 加分解的难度。而其他算法也对 n 的不同素因子特征和不同 类型的 n,分解效率差别也很大。另外,一些算法的构造对 于分解效率具有不确定性,如果构造方法不当,就会影响其 分解效率。 本文给出一种分解 n 的算法——判定算法。对该算法进 行相应的数学证明和算法设计,计算算法的时间复杂度,并 对 n 的不同素因子特征与分解效率的关系进行分析研究。
3 分解n的判定算法
3.1 定理的证明 设 n 为正整数,n=pq,p 和 q 为素数,且 p≤q, p≠2。 定理 1 设 n=pq,p 和 q 为素数,且 p≤q, p≠2, ki=3,5,…,
⎡⎣ n ⎤⎦ 为大于 3 到 ⎡⎣ n ⎤⎦ 的奇数的集合,3≤i≤ ⎡⎣ n ⎤⎦ /2,则存 在一个 j,使 kj=p。
1 概述
RSA 算法是一种用数论构造的、被认为理论上相当成熟 的公钥密码体制,并广泛地应用于密钥管理、数字签名等方 面。基于数论中 2 个大素数乘积所得整数 n 和选取满足一定 条件的整数 e 组成公开密钥(e, n),并选取特定私钥 d 组成私 有密钥对(d, n)。RSA 算法的安全性是基于数论中大整数分解 的困难性[1]。对 RSA 加密体制的攻击来自多方面,主要有因 式分解和旁路攻击方法等[2],而对加密算法的攻击是检验算 法安全性的标志。在对 n 的因式分解方法中,在给定 e 和 n 的情况下,确定 d 的计算量至少等价于整数分解问题[3]。目 前,比较常用的因式分解方法有试除法、Fermat 分解法、 Pollard’s rho 分解法、Pollard’s P-1 分解法、Dixon 分解法、 连分数分解法、二次筛法、多多项式二次筛法、数域筛法(NFS) 和椭圆曲线分解法等。其中,数域筛法被认为是当前最有效 的大数分解算法。在这些算法中,大多是基于求同余式 x2 ≡ y2(mod n) 且 x ≠ ± y(mod n) 所构成的完全平方数 x 和 y,只 要求出 x 和 y,即可通过求 gcd(x+y, n)和 gcd(x–y, n)达到分 解 n 的目的。它们的分解效率取决于构造的算法技巧。而随 着密钥 n 增大到 1 024 位以上,分解难度大大地增大。