用数域筛法分解大整数

合集下载

数域筛法研究综述

数域筛法研究综述

数域筛法研究综述李翊谁;穆雨桐;迟利华;刘杰;孙扬;包为民;龚春叶【摘要】数域筛法(NFS)是目前大数分解效果最好的算法,它的研究对于当前的公钥密码体系有着重要的意义.对数域筛法进行了综述,尤其是多项式选择、数对筛选、矩阵生成、矩阵求解、平方根求解和大整数运算等关键步骤,同时介绍了数域筛法中五个步骤计算量的示例、RSA-240最新的多项式和多项式选择对数对筛选效率的影响,指出低复杂度算法、与体系结构相适应的算法、海量大整数协同分解、高效的数对筛选和高效大整数运算等技术是未来值得关注的方向.【期刊名称】《计算机应用》【年(卷),期】2018(038)0z1【总页数】4页(P104-107)【关键词】数域筛法;信息安全;多项式选择;数对筛选;RSA公钥加密算法;大整数分解【作者】李翊谁;穆雨桐;迟利华;刘杰;孙扬;包为民;龚春叶【作者单位】国防科技大学并行与分布处理重点实验室,长沙410073;国防科技大学并行与分布处理重点实验室,长沙410073;湖南交通工程学院高科技研究院,湖南湘阴414600;国防科技大学并行与分布处理重点实验室,长沙410073;中国人民解放军72465部队,济南250022;中国航天科技集团,北京100048;国防科技大学并行与分布处理重点实验室,长沙410073【正文语种】中文【中图分类】TP3090 引言随着现代科技的发展,人类从工业文明逐步进化到信息文明,社会逐渐进化为信息社会。

信息社会的信任基础是密码,公钥体系是信息社会常用的密码体系,RSA是目前最常用的公钥密码体系。

为防止传输过程中信息被窃取或者破坏,信息交换通常采用加密的形式进行。

RSA公钥密码体制[1]由Rivest、Shamir和Adleman在1977年提出,可以用于数据加密和数字签名等,广泛应用于电子商务、互联网金融和网络通信等领域。

尽管Google证明存在使用人工智能开展密码体系设计的可能,但是RSA等实际使用的算法的破解难度具有非常坚实的数学理论基础,经过实践检验具有较高的安全性。

ECM整数分解方法的流水线结构硬件实现

ECM整数分解方法的流水线结构硬件实现
a d ta so m h o n a d to o M o to r c r e o itt e i ei e a c ie tr n r n f r t e p i t d iin n n g me y u v t f h p p ln r h tcu e, wh c n ih e ・
的模 逆运 算 。并 且 只需要 计算 和 z的坐标 即可 , 免 了 Y的计算 。 避 设 b 0 4 ≠0 贝 y= + X。 。 ( 一 ) ,0b = a, +
椭 圆曲线 的算术 算法 如下 :
算 法 2 Moto r 曲线 的 点加 和倍 点运 算 ngme y
过程 中有 大量 中等 规模 的数 ( 0 bt 2 0 i 需 要 分解 。尽 管分 解 这 样规 模 的 数难 度 不大 , 其 数 量 多 , 1 0 i一 0 bt ) 但
例如 分解 规模 在 10 4 i的数 时需 要分解 1 “ 15 i的数 。椭 圆曲线 方法 ( C 就是 一个 有效 的 中等 2 bt 0 个 2 bt E M)
[] 6.
Ke y wor ds: GFNS; ECM ;pi ln r h tc u e; M o t o r o u a li lc to pei e a c ie t r n g me m d l rmu tp ia in; CS y A
0 引 言
公 钥 密码 广泛 应用 于数 字签 名 、 钥 交 换 和管 理协 议 等 现 代 信 息安 全 领 域 中。而 在 1 7 密 9 7由 Rvs、 iet
Xp_ z )( p一 ) 2+ ( P+ P _
Z , ( xz ) ( P一 P + 2( x ) 。 2 - 4 PP [ ) 口4 4 PP ] p-

ctf rsa题

ctf rsa题

CTF RSA题简介CTF(Capture The Flag)是一种网络安全竞赛,旨在测试参与者在信息安全领域的技能和知识。

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于数据传输和信息保护中。

在CTF竞赛中,RSA题目常常出现,要求参与者破解RSA算法的密钥或解密给定的密文。

这类题目既考察了参与者对RSA算法的理解和应用能力,也考验了其数学推理和计算能力。

本文将详细介绍RSA算法的原理、加密过程和破解方法,并提供一些实际例子来帮助读者更好地理解与解决CTF RSA题。

RSA算法原理RSA算法是一种非对称加密算法,使用两个不同的密钥:公钥(public key)和私钥(private key)。

公钥用于加密数据,私钥用于解密数据。

RSA算法基于数论中的两个重要问题:大整数分解和模幂运算。

其中大整数分解问题是指将一个大整数分解成两个较小的质数因子的问题;模幂运算则是指求一个数对另一个数取模后的幂运算结果。

具体来说,RSA算法的原理如下:1.选择两个不同的质数p和q,并计算它们的乘积n=p*q。

2.计算欧拉函数φ(n)=(p-1)*(q-1)。

3.选择一个与φ(n)互质的整数e作为公钥,其中1<e<φ(n)。

4.计算整数d,使得(d*e)%φ(n)=1,d即为私钥。

5.公钥为(n,e),私钥为(n,d)。

6.加密数据m时,使用公式c=m^e mod n进行加密操作,得到密文c。

7.解密密文c时,使用公式m=c^d mod n进行解密操作,得到原始数据m。

RSA加密过程RSA加密过程可以分为以下几个步骤:1.首先需要生成一对公钥和私钥。

选择两个较大的质数p和q,并计算它们的乘积n=p q。

然后计算欧拉函数φ(n)=(p-1)(q-1)。

选择一个与φ(n)互质且小于φ(n)的整数e作为公钥。

计算整数d,使得(d*e)%φ(n)=1,并将d 作为私钥。

最后得到公钥为(n,e),私钥为(n,d)。

rsa公钥密码体制

rsa公钥密码体制

rsa公钥密码体制RSA公钥密码体制是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman三位数学家于1977年提出。

它是目前最广泛使用的公钥密码体制之一,被广泛应用于网络通信、电子商务和数字签名等领域。

RSA公钥密码体制的核心思想是利用两个大素数的乘积作为公钥,而这两个大素数的乘积的因数则作为私钥。

在加密过程中,发送方使用接收方的公钥对明文进行加密,而接收方则使用自己的私钥对密文进行解密。

由于公钥和私钥是成对出现的,因此只有拥有私钥的接收方才能解密密文,确保了通信的安全性。

RSA公钥密码体制的安全性基于两个数论问题:大整数的质因数分解和模幂运算。

质因数分解是指将一个大整数分解为两个素数的乘积,这个问题在目前的计算机技术下是非常困难的。

而模幂运算是指对一个大整数进行指数幂运算后取模,这个问题在计算机中可以通过快速幂算法高效解决。

RSA公钥密码体制的加密过程如下:首先,接收方生成两个大素数p和q,并计算它们的乘积n=p*q。

然后,接收方选择一个整数e,使得e与(p-1)*(q-1)互质。

接收方将n和e作为公钥公开,而将p、q和d=(e的模(p-1)*(q-1)的逆元)作为私钥保密。

发送方获取接收方的公钥后,将明文m进行加密得到密文c,加密过程为c=m^e mod n。

接收方收到密文后,使用私钥d对密文进行解密得到明文,解密过程为m=c^d mod n。

RSA公钥密码体制的安全性主要依赖于大整数的质因数分解问题的困难性。

目前,最好的质因数分解算法是基于数域筛法和大整数分解算法,但是对于非常大的整数,这些算法的时间复杂度仍然非常高,因此RSA公钥密码体制在实际应用中仍然是安全可靠的。

总之,RSA公钥密码体制是一种非常重要的加密算法,它通过利用两个大素数的乘积作为公钥,确保了通信的安全性。

它的安全性基于大整数的质因数分解问题的困难性,目前仍然是一种安全可靠的加密算法。

大整数分解

大整数分解

大整数分解在数学中,整数分解又称素因数分解(prime factorization),是将一个正整数写成几个约数的乘积。

例如,给出54这个数,它可以分解成9×6。

根据算术基本定理,这样的分解结果应该是独一无二的。

这个问题在代数学、密码学、计算复杂性理论和量子计算机等领域中有重要意义。

完整的因子列表可以根据约数分解推导出,将幂从零不断增加直到等于这个数。

例如,因为54=3的平方×6,54可以被30×50,30×61,31×60,31×61,32×60,和32×61,或者1,6,3,9,16,和54整除。

相对应的,约数分解只包括约数因子。

给出两个大约数,很容易就能将它们两个相乘。

但是,给出它们的乘积,找出它们的因子就显得不是那么容易了。

这就是许多现代密码系统的关键所在。

如果能够找到解决整数分解问题的快速方法,几个重要的密码系统将会被攻破,包括RSA公钥算法和Blum Blum Shub随机数发生器。

尽管快速分解是攻破这些系统的方法之一,仍然会有其它的不涉及到分解的其它方法。

所以情形完全可能变成这样:整数分解问题仍然是非常困难,这些密码系统却是能够很快攻破。

有的密码系统则能提供更强的保证:如果这些密码系统被快速破解(即能够以多项式时间复杂度破解),则可以利用破解这些系统的算法来快速地(以多项式时间复杂度)分解整数。

换句话说,破解这样的密码系统不会比整数分解更容易。

这样的密码系统包括Rabin 密码系统(RSA的一个变体)以及Blum Blum Shub随机数发生器。

当今的新进展2005年,作为公共研究一部分的有663个二进制数位之长的RSA-200已经被一种一般用途的方法所分解。

如果一个大的,有n个二进制数位长度的数是两个差不多大小相等的约数的乘积,还没有很好的算法来以多项式时间复杂度分解它。

这就意味着没有已知算法可以在O(n)(k为常数)的时间内分解它。

number field sieve算法

number field sieve算法

number field sieve算法(实用版)目录1.number field sieve 算法简介2.number field sieve 算法的原理3.number field sieve 算法的具体步骤4.number field sieve 算法的优化与应用正文【number field sieve 算法简介】umber field sieve 算法,即数域筛法,是一种用于求解数域中素数数量的算法。

在代数数论中,筛法是一种有效的计算方法,可以用来估计某个区域内素数的数量。

数域筛法主要应用于计算有理数域中素数的分布情况,其原理可以追溯到古希腊时代的欧几里得。

经过数百年的发展,该算法在数论研究中取得了举足轻重的地位。

【number field sieve 算法的原理】umber field sieve 算法的基本思想是将有理数域中的整数分解成若干个互质的整数乘积,然后通过这些互质整数的组合来估计素数的数量。

具体来说,假设我们要研究一个整数 n,首先将其分解成若干个互质的整数对 (a, b),然后通过计算这些整数对的乘积来估计 n 以内的素数数量。

【number field sieve 算法的具体步骤】1.确定研究的整数 n,并初始化一个空列表 l。

2.对 n 进行质因数分解,将质因数对 (a, b) 加入列表 l。

3.遍历列表 l 中的整数对 (a, b),计算它们的乘积 ab,并将其加入一个新的列表。

4.对新列表中的整数进行去重,并将结果存储在一个集合中。

5.集合中的元素个数即为 n 以内的素数数量。

【number field sieve 算法的优化与应用】在实际应用中,为了提高算法的效率,通常会对 number field sieve 算法进行优化。

例如,在第 2 步中,可以只将质因数对 (a, b) 的乘积 ab 的个位数加入列表,以减少计算量。

此外,数域筛法还可以与其他算法相结合,如大素数测试算法,以提高求解效率。

RSA公钥密码体制简介

RSA公钥密码体制简介
当要对明文进行加密时,可先进行预处理, 计算出m2、m3等,这种方法我们称之为窗口法。
32
例:
计算: 152013(mod 2539) 13 23 1 22 0 2 1 1101 B
(e3 , e2 , e1, e0 ) (1,1,0,1)
152013 mod2539
(((1520e3 )2 1520e2 )2 1520e1 )2 1520e0 (mod 2539) ((15202 1520)2 15200 )2 1520 (mod 2539)
14
RSA算法论证
假设截获密文C,从中求出明文M。他知道 M≡Cd mod n ,
因为n是公开的,要从C中求出明文M,必须先求 出d,而d是保密的。但他知道,
ed≡1 mod φ(n), e是公开的,要从中求出d,必须先求出φ(n),而 φ(n)是保密的。但他又知道,
φ(n)=(p-1)(q-1),
9
RSA算法论证
于是,M tφ(n) =bq+1,其中b为某整数。 两边同乘M, M tφ(n)+1 =bqM+M 。 因为M=ap,故 M tφ(n)+1 =bqap+M =abn+M 。 取模n得, M φ(n)+1 =M mod n 。
10
RSA算法论证
第二种情况:M=0 当M=0时,直接验证,可知命题成立。
加密过程:c=me mod n 解密过程:m=cd mod n
3
2、工作原理
定义:任给一个正整数m,如果用m去除任意两个整 数a、b所得的余数相同,称a、b对模m同余。记 为: a bmodm,若余数不同,则a、b对模m不同余。 记为: a b modm。
定理: a bmodm ,当且仅当m|(a-b)。

二次筛法分解大整数

二次筛法分解大整数

二次筛法是一种用于分解大整数的算法,它基于二次筛原理,通过逐步缩小可能的大素数范围,最终找到分解大整数的素因子。

以下是二次筛法分解大整数的具体过程和说明:一、算法原理二次筛法基于二次筛原理,即对于任意一个正整数n,如果它不是素数,那么它的因子一定在某个区间内。

具体来说,对于一个合数n=ab,其中a和b都是大于√n的数,那么a和b 中一定存在一个数小于或等于√(n/a)。

因此,可以通过对每个因子进行筛选,逐步缩小可能的大素数范围,最终找到分解大整数的素因子。

二、算法步骤1. 初始化:将待分解的大整数n作为初始值,将一个足够大的数设为p(即第一个筛过的素数),将一个足够大的数设为q(即第二个筛过的素数)。

2. 筛选p:从p开始,依次判断每个小于或等于√(n/p)的数是否为p的因子。

如果是,则将该数加入结果中;否则,继续下一个数的筛选。

3. 筛选q:从q开始,重复上述筛选p的过程,直到无法找到新的因子为止。

此时,将结果中的第一个数作为第一个素数,第二个数作为第二个素数,继续进行下一步的筛选。

4. 重复上述过程:根据当前两个素数的范围,继续进行下一轮的筛选,直到无法找到新的素数为止。

三、注意事项1. 在筛选过程中,需要不断地更新p和q的值,以确保筛选的准确性。

2. 对于某些大整数,可能需要多次迭代才能找到分解结果。

因此,需要耐心地执行算法,直到无法再找到新的素数为止。

3. 二次筛法的时间复杂度较高,对于某些大整数可能需要较长的时间才能得到分解结果。

因此,在实际应用中需要根据具体情况选择合适的算法或优化方法。

总之,二次筛法是一种常用的分解大整数的算法,它通过逐步缩小可能的大素数范围,最终找到分解大整数的素因子。

在执行过程中需要注意更新变量、多次迭代以及优化算法的时间复杂度等问题。

一个可行的RSA密码破译方法

一个可行的RSA密码破译方法

一个可行的RSA密码破译方法杜立智【摘要】It gets a fast algorithm on the Hamilton path. It transforms the3SAT to the Hamilton path by a polynomial transform. Though there has been some methods to transform 3SAT to Hamilton path, that is only for NPC proof. It is polynomial but not the most efficient. In order to get the most efficient transform from 3SAT to Hamilton path, so as to calculate3SAT efficiently by calculating the Hamilton path in a possibly good way, this paper uses two vertices to denote a variable in 3SAT, uses a good graph structure which contains 13 vertices to denote a clause in 3SAT, then realizes the above goal. It needs the least number of vertices and edges. It transforms the problem of large number of qualitative factors to 3SAT. So at last, it can decode the RSA by calculating the Hamilton path.%通过长年研究得到了快速高效的Hamilton路算法。

利用椭圆曲线方法和GMP 库分解大整数

利用椭圆曲线方法和GMP 库分解大整数

利用椭圆曲线方法和GMP 库分解大整数郭汝廷1 引言随着RSA 公钥密码体制的广泛应用,整数分解问题受到了数学家和密码学家的普遍关注。

近些年来,一些新的因子分解方法相继被提出。

比如 p-1 方法,椭圆曲线方法,连分数方法,二次筛法,和的数域筛法。

第七个Fermat 数在1970年由Morrison 和Brillhart用连分数方法分解。

第八个Fermat 数 在1980年由Brent 和Pollard 用“rho” 方法分解,第九个Fermat 数 在1990年由Lenstra 用数域筛法分解,第十个Fermat 数 在1995年由Brent 用椭圆曲线方法分解。

利用数域筛法,Lenstra 等人在2010年分解了RSA-768。

目前来讲,量子计算机还不能应用于大整数分解。

最好的整数分解方法当属数域筛法和椭圆曲线方法。

这两种方法各有优势,数域筛法可用于分解没有小的素因子的大合数。

但此方法的运算时间受整数本身位数的限制。

椭圆曲线方法执行时间主要取决于大合数的素因子的长度。

所以可以分解位数超过300位的整数。

本文介绍椭圆曲线因子分解方法。

2 椭圆曲线因子分解方法介绍。

1985年 H.W .Lenstra 创造了椭圆曲线因子分解方法。

该方法是在Pollard p-1 方法的基础上发展而成。

如果整数 N 有素因子 p ,p-1 是光滑数。

用 p-1 方法就可以找到这个素因子。

但当p 比较大时 p-1 光滑的概率比较小。

所以该方法不易找到大的素因子(比如40位以上)。

设K 特征大于3的一个域,域K 上的椭圆曲线为满足方程(1)的点集,其中且此点集加上无穷远点在定义加法运算后构成一个Abel 群。

椭圆曲线上点的加法运算定义如下: 给定椭圆曲线E 上的两个点和椭圆曲线用下面的公式计算:其中如果为一素数,Helmut Hasse 证明了群 G 的阶介于和之间。

通过改变a,b 的值可以得到阶不同的群。

如果该群的阶光滑,就可以找到素因子 p 。

RSA密码分析中分解大整数的判定算法

RSA密码分析中分解大整数的判定算法

是否为是 n 的素因子;而该算法是直接用这个数试除 n,只 要能整除 n,该数即是 n 的素因子,与试除法相比省去了判 定素数的运算,大大降低了算法的复杂度。另外,使用该算 法可以在有可能存在 n 的素因子的任意区间上构造,使得寻 找 n 的素因子概率大大增加。但是,从算法设计角度,如果 每次试除都用模运算,则每次试除的算法复杂度为 O((logn)2),那么,使用该算法并不能从根本上降低复杂度。 下面就给出该算法的一种设计,除个别运算外,尽量避免使 用模运算。
证明:如果 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 试除,判断
第 36 卷 第 15 期 Vol.36 No.15
计算机工程 Computer Engineering
2010 年 8 月 August 2010
·安全技术·
文章编号:1000—3428(2010)15—0142—03 文献标识码:A
中图分类号:TP309
RSA 密码分析中分解大整数的判定算法
孙克泉
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,…,

广义数域筛法对公钥加密算法的攻击

广义数域筛法对公钥加密算法的攻击
作者简介 : 侯方 天( 9 7一 ) 男 ( 18 , 汉族) 中国传媒 大学硕士研究生 . — alhua ̄ a8 @16 cm , Em i:ofn in7 2 .o
中 国传 媒 大学 学 报 自然 科 学 版
第 1 9卷
广义数域筛法 ( N S 是一种很好 的因式分解 G F) 的方 法 , 目前 为 止 , 效 的 因式 分 解 方 法 还 有 很 到 有
<10 i 1bt
< 1 0bi 1 t
表 2 (1的取 值 结果 f r)
> 1 0bt 1 i
O(x ( 6 / ) ep (4 9
(n ) (nI) ) 1p I n ) ) /
, ) (
, (
r )一n 一4 2 一 8
, )一 ( n
的 质 因 数
中 图 分 类 号 :N 1. 文 献 标 识 码 : 文 章 编 号 :6 3— 73 2 1 )3—04 0 T 984 A 17 4 9 (0 2 0 0 5— 6
Th e GNFS Ata ks t h b i —k y En r p i n t c o t e Pu lc・ e c y to -
第 l 9卷 , 3期 第
21年 9 02 月
中国传媒 大学学报 自然科学版
V0 .9. 11 No. 3
J U N LO O O R A FC MMU IA I N U I E ST FC I A ( CE C N E H O O Y) NC TO NV R IY O H N S I N EA D T C N L G
种 重要 的算法 —— 广义 数域 筛法 ( N S 。 G F ) 广义 数域 筛法 ( N S 是 数 域 筛 法 ( F ) GF) N S 的一

第九章大整数因子分解算法

第九章大整数因子分解算法

(Ai
pek k
)
(Bi
p
e j
j
)
(mod
N)
(2.2)
将这样一些同余式相乘以便在同余号两边都产生平方项。
▪ 基于这种思想,CFRAC、QS和NFS共有的诀窍就是找出 以下形式的同余式(也叫关系式):
x
2 k
(1)e 0 k
p p e1 k e2 k 12
pemk m
(mod N)
(2.3)
Lehman方法,最坏情况下运行时间的界为O(N1/ 3 ) Shanks的平方因子分解方法SQUFOF,具有期望
运行时间O(N1/ 4 ) Shanks的类群法,具有运行时间 O(N1/ 5 ) 连分数(CFRAC)方法,在合理假设下具有期望运行时间
O(exp(c logNloglogN)) O(Nc ) loglogN/ logN
3. 将f和N/f的素数幂分解合在一起得到N的素 数幂分解
▪ 数论里能应用计算机的所有问题中,可能没有比 整数因子分解更具影响力的问题了。 ——Hugh C. Williams
▪ 大整数分解是许多密码学算法和协议的安全依据, 如RSA密码体制。 方法:(1)穷举法; (2)分解算法。
▪ 找出N的素因子或判定N是否为素数都不是 一件容易的事情,因此,只要可能的话我 们都应当尽可能的避免分解大整数。
通常取c数域筛法nfs在合理假设下具有期望运行时间若用gnfsnfs的一个普通版本来分解任意整数n时若用snfsnfs的一个普通版本来分解一个特殊的整数n时其中r和s很小r1且e很大实质上和渐进上这个算法的运行速度比已知的任何分解因子的方法都快pollards方法也被称为pollardsrho算法在合理假设下具有期望运行时间lenstra的椭圆曲线方法ecm在合理假设下具有期望运行时间其中c为常数依赖于算法的细节

大整数分解算法的设计与实现

大整数分解算法的设计与实现

2020.36科学技术创新表2算法的优缺点大整数分解算法的设计与实现刘莺迎(河南牧业经济学院信息工程学院,河南郑州450000)1整数分解理论1.1试除法对于一般的合数而言,试除是非常有效的,因为大部分数都含有小的素因子。

有88%的正整数有小于100的素因子,有92%的素因子有小于1000的素因子。

所以在实际的应用中,如果不知道关于n 的因子的任何信息,通常会先用小规模的试除找出可能存在的小因子。

试除法先建立一个素数表,然后从小到大,依次用素数试除,直到p 出现时,n 将会被分解,此时一共做了π(p )(π(p )是不大于p 的素数个数)次试除。

由于π(p )≈p/1np ,寻找到素因子大约需要π(p )次试除。

1.2Pol l ar d r ho 方法Pol l ar d r ho 方法[1,2],也叫蒙特卡罗方法,是Pol l ar d 于1975年提出的一种分解算法,Br ent 于1980年对其进行了改进,该算法适用于分解10-20di gi t 的n 的素因子。

1.3P-1方法Pol l ar d 在提出了Pol l ar d r ho 方法之后不久,还提出了另一种方法,称为P-1方法[2,3]。

假设当n 有素因子p ,并且p-1是一个光滑数时,使用这种方法比较有效。

1.4椭圆曲线分解算法椭圆曲线分解算法(Lens t r a el l i pt i c-cur ve f act or i z at i on ,ECM )是在1985年由Lens t r a 提出的[4],目前通常用来寻找1010到1060之间的素因子。

1.5数域筛法数域筛法涉及到较为深刻的数学理论,同时又是一个耗资巨大的计算工程项目。

G N FS 分为五个主要步骤:多项式选择、筛取关系、数据过滤、解大型稀疏线性方程组和代数平方根求解。

1.6算法优缺点比较根据对大数分解算法的总结,我们将各算法的时间复杂度、适用范围以及优缺点[5]进行比较,为下一阶段分解策略和算法选择提供依据。

用数域筛法分解大整数

用数域筛法分解大整数

Ξ用数域筛法分解大整数倪谷炎(国防科技大学系统工程与数学系 长沙 410073)摘 要 随着 F e r m a t 数 F 7 和 F 9 被分解, 一个新的算法被提了出来, 那就是 J. Po lla r d 提出的“数域筛 法”(N F S ). A. K. L en st r a 等人对数域筛法进行了深入的研究, 已经使数域筛法从原来对一些特殊整数的 分解发展到对一般整数的分解。

本文试图对数域筛法理论及其运行作简要的论述。

关键词 整数分解, 算法, 代数数域 分类号 O 15612Fa c t or in g L a rge I n teger s w ith the Nu m ber F ie l d S ieveN i G u ya n(D ep a r t m en t o f Sy s tem s E n g i n e e r i n g an d M a t h e m a t i c s , N U D T , C h a n g s h a , 410073)A bs tra c t W ith th e F e rm a t n um b e r s F 7 an d F 9 b e i n g fac to red i n to p r i m e s , a n ew a l go r i thm , th e n um b e r f i e ld s i eve , is g i ven , w h i ch w a s p ropo sed b y Po lla rd . M an a sse an d Po lla rd i n ve s t i ga te th i s a l go 2 r i thm tho ro u g h ly , an d deve l op it f rom th e sp e c i a l n u m b e r f i e l d s i eve (SN F S ) to th e gen e r a l n u m b e r f i e l d s i eve (GN F S ). In th is p a p e r , w e de s c r i b e th e n e w a l go r i thm an d exp la i n th e N F S i m p lem en t a t i o nKey word s fac t o r i n g i n t ege r s , a lgo r i thm , a l geb ra i c n u m b e r f i e ld众所周知, 早期的公开密钥 R SA 系统之所以流行, 是因为它是建立在大整数的分解极其困难的理 论基础之上, 因而使 R SA 系统有很大的安全性。

针对小规模整数的MPQS算法

针对小规模整数的MPQS算法

f a c t o r i s a t i o n m e t h o d f o r f a c t o r n u m b e r s l e s s t h a n 1 1 0 一 d i g i t s .H o w e v e r , . e x i s t i n g MP Q S s o f t w a r e p a c k a g e s a r e n o t f u l l y o p t i m i s e d o f r i n t e g e r s
s e l e c t i o n s c h e me ,w o r k i n g i n c o n c e t r wi t h p ra a me t e r s e l e c t i o n a n d mi d ge — r e s u l t s s c a l e c o n t r o l ,c a n a v o i d t h e mu l t i p l e — p r e c i s i o n f u n c t i o n s i n
明, 两种 优 化 方 法 可 使 MP Q S性 能提 高 3 0 % 以上 。
关 键词
中图分类号
MP Q S 筛法 多项 式系数
T P 3 0 1 . 6
循环拷贝筛 神威


文献标识码
D O I : 1 0 . 3 9 6 9 / j . i s s n . 1 0 0 0 - 3 8 6 x . 2 0 1 5 . 0 4 . 0 6 1
A b s t r a c t
N F S( n u m b e r i f e l d s i e v e )i s t h e m o s t e f f i c i e n t a l g o i r t h m i n l a r g e n u mb e r f a c t o i r s a t i o n ,i n w h i c h t h e f a c t o r i s a t i o n n e e d s t o b e

用数域筛法分解大整数

用数域筛法分解大整数

用数域筛法分解大整数
倪谷炎
【期刊名称】《国防科技大学学报》
【年(卷),期】1998(020)004
【摘要】随着Fermat数F7和F9被分解,一个新的算法被提了出来,那就是J.Pollard提出的“数域筛法”(NFS).A.K.Lenstra等人对数域筛法进行了深入的研究,已经使数域筛法从原来对一些特殊整数的分解发展到对一般整数的分解。

本文试图对数域筛法理论及其运行作简要的论述。

【总页数】6页(P103-108)
【作者】倪谷炎
【作者单位】国防科技大学系统工程与数学系;国防科技大学系统工程与数学系【正文语种】中文
【中图分类】O156.2
【相关文献】
1.数域筛法分解re±s型大整数时多项式的选取 [J], 张鹏;李超
2.大整数因子分解中的二次筛法优化 [J], 戴阔斌;陈建华
3.大整数分解多个多项式二次筛法及微机实现 [J], 童丽;蒋增荣;成礼智
4.大整数分解的二次筛法及其微机实现 [J], 周敏;蒋增荣
5.大整数分解的多个多项式二次筛法及其微机实现 [J], 朱桂华
因版权原因,仅展示原文概要,查看原文内容请购买。

用数域筛法分解大整数

用数域筛法分解大整数

用数域筛法分解大整数
数域筛法是一种数学方法,用于将大整数分解为质数的乘积。

它是一种数论算法,可以用来解决大整数的因式分解问题。

数域筛法的基本思想是:从2开始,依次把质数的倍数从序列中筛除,最后剩下的就是质数。

首先,从2开始,将2的倍数从序列中筛除;接着,从3开始,将3的倍数从序列中
筛除;依次类推,直到把所有的质数的倍数都筛除掉为止。

要用数域筛法分解大整数,首先要把大整数分解成一系列的质数的乘积。

然后,从2开始,把大整数除以2,如果余数为0,那么2就是这个大整数的一个因子,然后再将大整数除
以2,如果余数不为0,则把2换成3,再将大整数除以3,如果余数为0,则3就是这个
大整数的一个因子,依次类推,直到把所有的质数都检查完为止。

最后,将所有的质数相乘,就可以得到大整数的因式分解式。

数域筛法是一种有效的分解大整数的方法,它可以有效地减少计算量,提高计算效率。

它的实现要求只需要简单的几步操作,因此它在数学中得到了广泛的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用数域筛法分解大整数黄敬腾(北京师范大学珠海分校信息技术与软件工程学院0401010050)摘要:数域筛法是目前最快的(渐进意义下) 整数分解方法。

多项式选择则是该算法中的一个重要环节,它关系到整个算法的运算速度及所耗时间。

而影响多项式选择的两大因素———大小和根的属性,是多项式选择的关键。

本文对数域筛法中多项式大小进行了深入的分析,并通过严密的计算给出了不同情况下,多项式次数的取值范围。

关键词:整数分解;数域筛法;多项式的大小Polynomial Selection in the NumberField SieveJingteng Huang(Information Science & Technology Beijing normal university Zhuhai campus 0401010050) Abstract:The number field sieve (NFS) is the asymptotically fastest method known thus far. Polynomialselection is one important part in the number field sieve. It affects the speed and consuming time of thewhole algorithm. The key in the polynomial selection is the size of the polynomial . In this paper ,the authors analysis the size of the polynomial in detail , and present a way of choosing the degree of the polyno2mial .Key words :facting algorithm;number field sieve ;the size of polynomial一:引言众所周知, 早期的公开密钥RSA 系统之所以流行, 是因为它是建立在大整数的分解极其困难的理论基础之上, 因而使RSA 系统有很大的安全性。

然而, 随着整数分解算法的不断改进和计算机运算速度的加快, 人们对RSA 系统的安全性又产生了怀疑。

在二战期间, 英国间谍运用古老的大型计算机成功地破译了大量的德国军事情报, 为盟军战胜法西斯赢的了主动。

正是由于计算机的迅猛发展, 加密与解密的对抗和数论自身理论的提高, 整数分解的研究也就变得特别地活跃, 算法不断地得到改进。

攻击RSA 加密算法的一种主要手段是大整数分解。

为了校验当前大整数分解的能力(包括算法和计算机的计算能力) ,选择安全的RSA 参数,RSA公司从1991 年初开始,陆续公布了一系列关于大整数分解的挑战。

为此,计算数论专家发展了许多大整数分解算法, 例如: p + 1 方法、p - 1 方法、Pomerance 的二次筛法、Lenstra 的椭圆曲线分解方法、Pollard 和Pomerance 等数域筛法。

其中广义数域筛法是目前最有效的算法。

RSA 挑战的进展情况如表1 所示。

目前国际上最新的大数分解理论与技术,包括多项式选取、筛法、过滤、大规模稀疏线性方程组求解和代数数的平方根求解5 个步骤。

二:RSA算法简介1.RSA算法公钥,私钥产生a)随机选取的在素数P和Q,还有N ,其中N = P * Q ,P和Q保密,N公开。

b)F(N) = (P-1) * (Q-1)。

c)随机E,E满足(2<=E<=F(N)), E作为公钥公开。

d)计算D, 使E*D=1(mod F(N)),称D为E对模F(N)的逆,D作为私钥保密。

2.RSA算法的加密解密(m为明文,c为密文)a)加密算法c=E(m)=m E(mod N)b)解密算法m=D(c)=c D(mod N)3.RSA算法的特点a)RSA算法的特点是非对称加密算法,通过两个素数P和Q产生公钥(E, N)公开和产生死钥(D, N)保密。

b)通过公钥加密的密文只有私钥可以解密,而通过私钥加密的密文只有公钥可以解迷。

加密解密是非对称的。

c)正是因为RSA算法的特点,因此他可以用于数字签字,防欺骗,防抵赖,在电子商务领域被广泛使用。

4.RSA算法的不足。

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。

速度一直是RSA的缺陷。

一般来说只用于少量数据加密。

三:数域筛选的思想一般来说, 要把整数n 进行分解通常是找到两个整数x 和y , 满足x2≡y2 (mod n)。

然后计算gcd (x - y , n) , 如果gcd (x - y , n) = 1, 表示分解失败, 否则就找到了n 的两个真因子。

各种筛法所不同的是x ,y 的找法不一样。

数域筛法的思想是:1. 构造代数数域。

找一个次数为d > 1的首1不可约多项式f 和整数m , 使f (m ) ≡0 (mod n)。

设A是f 的一个根, 于是得到扩域K = Q (A) , 作映射U: Z [A]—→Z/n Z , 由A—→(m mod n)诱导出来。

2.找一个数对(a, b) 的非空集合S , 满足以下条件:i) 对所有(a, b) ∈S , gcd (a, b) = 1;ii) Π(a, b) ∈S (a+ bm )是Z 中的平方数;iii) Π(a, b) ∈S (a+ bA)是Z [A]中的平方数。

3.令x ∈Z 是ii) 中数的平方根, B∈Z [A]是iii) 中数的平方根, 令y∈Z 适合(y mod n) = U(B) , 那么我们得到y2≡x2mod n于是, 算出n 的因子gcd (x - y , n)。

四:数域的构造数域的构造实际上是不可约多项式f ∈Z [ x ]的构造。

在实践中, 对于十进制字节在110~160之间的数n, 宜取d = 5。

理论上d = ( (31/3 + o (1) ) logn / loglogn) 1/3 , n > 22d*d> 1.下面就介绍构造f 的两种方法:方法1如果存在一个比较小的整数a 可以表示为an= r e- s 的形式, 这里r, | s | 都是比较小的整数, 那么可以令k 是满足k * d >= e 的最小正整数, t= s*r k*d - e, 则得到多项式f = x d - t, 取m = r k满足f (m ) ≡0 mod n。

方法2以“基m n的方法找f 。

取r 是一个比较小的正整数,m = [ ( rn) 1/d ], 然后把rn 表示成m 进制R*n = c d m d + c d - 1m d - 1 + ⋯+ c0, 0 <= c i < m于是得到f = c d x d+ ⋯+ c0, 并且f (m ) ≡0 mod n。

选取Σd i= 0c i2比较小的作为我们的f 。

四:数域筛选的多项式时间分析定义1 若一整数的最大素因子小于或等于B ( B 为预先给定的整数) , 则称此整数为平滑B 数。

令F i ( x , y) = y d f i ( x/ y) , d = deg( f i) 。

在数域筛法中最关键的问题就是如何建立集合S ,我们的方法是通过收集Fi 的平滑值从而构建集合S :对于某个给定的平滑界B , 我们收集互素的整数对( a , b) , 使之满足: F1 ( a , b) 和F2 ( a ,b) 为平滑B 数。

这时我们称这样的整数对为一个关系。

通过线形代数的扩张,在这许多的关系中找出( a , b) ∈S ,使得Π( a , b ∈S) , F i ( a , b)在Z 中为一平方数。

而且由上式为一平方数可得到Π( a , b ∈S) , ( a - bαi )在Z[αi ]中也为一平方数β2 (证明方法见参考文献1 中2. 1. 2) 。

事实上,数域筛法中筛的过程就是确定整数对是否是关系的过程。

因为我们需要大量的平滑数, 而平滑数又非常的稀少,所以筛的过程在数域筛法中消耗了大部分的时间。

因此选择好的多项式,使之能产生大量平滑数,对于数域筛法来说是至关重要的。

下面我们介绍一种生成满足上述要求的多项式的方法。

(Montgomery)M- 基方法将大整数n 用m ( m ∈Z) 作为基分解为n = Σd i = 0a i(m) m i ,其中0 ≤a i( m) < m ,构建f ( x) :f ( x) = Σa i( m) x i则在数域筛法中, F1 ( x) = y d f ( x/ y) , F2 ( x) = x -my ,为所选择的多项式。

五:影响数域筛法中多项式大小的因素在数域筛法中,影响其中多项式的两个因素分别是:多项式的大小及它根的属性。

在此我们着重对多项式的大小进行讨论。

定义2 多项式的大小是指多项式取值的绝对值的大小。

数域筛法中,当多项式值为平滑数时,则满足F1 ( a , b)·F2 ( a , b) ≤( d + 1) m2 U d + 1≤2 d m2 U d + 1(1) 其中, d 是F1 的次数; U 是在筛的步骤中, 所定义的| a| 和b 的上界。

(证明方法见参考文献1 中2. 2)5.1F1为首一情况时的讨论在数域筛法中, 当F1 为首一时, 由m - 基方法有m≈N1/ d ,因此F1 ( a , b) ·F2 ( a , b) ≤2 d N2/ d U d + 1(2) 在参考文献2 中,选择最优的U 和平滑界B ,确保数域筛法的运行时间不超过:exp((1+o(1))(dlogd+((dlogd)2+4log(N1/ d)loglog(N1/d))1/2)) (3) 式中, 我们计算d , 来减少数域筛法所耗的时间。

可以看到计算(3) 式的最小值时,应有( dlog d) 2 =O(log( N1/ d) loglog( N1/ d) ) (4) 因此d 应有形式O(log( N) j loglog( N) k) ) (5)(4) 式中, d 的形式应和等式的右边对应,在忽略隐含系数的情况下我们得到( dlog d) 2≈log( N) 2 j loglog( N) 2 ( k + 1)(6) log( N1/ d) loglog( N1/ d) ≈log ( N) 1 - j loglog( N) 1 – k(7)在(6) 式和(7) 式中, 当N →∞时, 可得d 的渐进值为d = (31/ 3 + o (1) ) (logN/loglogN)1/ 3(8)5.2 F1不为首一情况时的讨论上面给出了F1 为首一时, 其最高次项的次数d 的取值,当F1 不为首一时,满足F1 ( a , b) ·F2 ( a , b) ≤2 dN2/ ( d + 1) U d + 1(9)同讨论F1 为首一时一样, 我们可得当F1 不为首一时数域筛法的运行时间不超过exp ( (1 + o (1) ) ( dlog d +(( dlog d) 2 + 4log( N1/ ( d + 1) )loglog( N1/ ( d + 1) ))1/2 ) ) (10)我们分解N 时,可由(10) 式看出,当上式取得最小值时 d 的取值等价于下式取得最小值时d 的取值ε(d,N)=dlogd +((dlogd)2+4log(N1/ ( d + 1))loglog(N1/ ( d + 1)))1/2 (11) 表 2 给出了当 d 选取不同值时,ε( d , N) 的变化情况。

相关文档
最新文档