网络与信息安全学报, 2018, 4(12): 62-66 doi: 10.11959/j.issn.2096-109x.2018101

学术论文

将椭圆曲线分解算法扩展为三阶段的方案

罗贵文,1,2

1 中国科学院大学网络空间安全学院,北京 100049

2 中国科学院信息工程研究所信息安全国家重点实验室,北京 100093

Scheme of extending elliptic curve method to three phases

LUO Guiwen,1,2

1 School of Cyber Security,University of Chinese Academy of Sciences,Beijing 100049,China

2 State Key Laboratory of Information Security,Institute of Information Engineering,Chinese Academy of Sciences,Beijing 100093,China

通讯作者: 罗贵文,louguiwen@iie.ac.cn

修回日期: 2018-11-28   网络出版日期: 2018-12-15

基金资助: 国防科技创新特区基金资助项目.  Y7H0041102

Revised: 2018-11-28   Online: 2018-12-15

Fund supported: The National Defense Science and Technology Innovation Foundation.  Y7H0041102

作者简介 About authors

罗贵文(1993-),男,重庆人,中国科学院大学硕士生,主要研究方向为椭圆曲线密码学。 E-mail:louguiwen@iie.ac.cn

摘要

椭圆曲线法是目前使用最广泛的整数分解算法之一,最早由Lenstra于1985年提出,原始的算法只有第一阶段。自其提出以来,围绕算法和实现的研究层出不穷,最重要的改进是 Brent 和 Montgomery 提出椭圆曲线法的第二阶段,这极大地提升了椭圆曲线算法的分解能力和效率。将椭圆曲线法扩展为三阶段,采用的方法是将第一阶段和第二阶段进行“融合”。对比目前流行的两阶段椭圆曲线法,改进后的算法有两方面的优点:一是在保持同两阶段椭圆曲线法参数相同的情况下,通过增加微不足道的消耗,提升找到因子的概率;二是在搜寻同一个因子时,可以使用较小的“光滑参数”。

关键词: 整数分解 ; 快速分解 ; 椭圆曲线法 ; 光滑参数

Abstract

Elliptic curve method for integer factorization (ECM) is one of the most popular integer factorization algorithms,and it was firstly proposed by Lenstra in 1985.The original ECM contained just first phase.Since its invention,researches about the algorithm and implementation emerged up,among which the most important improvement is the extension to two phases proposed by Brent and Montgomery.This improvement tremendously strengthened ECM's capacity and efficiency.Elliptic curve method was extended to three phases.Extension method is kind of like “mixing together” the first phase and second phase.Compared to the best current two phases ECM,the new algorithm shows 2 advantages.First,under the same factorization parameters,the proposed algorithm improves the probability of finding out prime factor at the expense of negligible increasement of time.Second,when searching the same prime factor,the proposed algorithm can utilize smaller “smoothness parameters”.

Keywords: integer factorization ; fast factorization ; elliptic curve method ; smoothness parameter

PDF (517KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

罗贵文. 将椭圆曲线分解算法扩展为三阶段的方案. 网络与信息安全学报[J], 2018, 4(12): 62-66 doi:10.11959/j.issn.2096-109x.2018101

LUO Guiwen. Scheme of extending elliptic curve method to three phases. Chinese Journal of Network and Information Security[J], 2018, 4(12): 62-66 doi:10.11959/j.issn.2096-109x.2018101

1 引言

众所周知,整数分解在密码学中扮演着举足轻重的角色。已知的整数分解算法众多,包括经典的试除法、Pollard’s rho算法、Pollard' s p− 1算法、Williams'p+1算法、椭圆曲线法,一般数域筛法,以及适用于量子计算机的Shor算法等。在这些算法中,椭圆曲线法是应用最广泛的快速整数分解算法之一,它的运行时间取决于待搜寻的因子大小,因此常常部署在一般数域筛法之前,用以移除待分解整数的较小因子。

自 Lenstra 提出只含有第一阶段的椭圆曲线法以来[1],针对它最重要的改进是将其扩展为两阶段,这极大地提升了算法搜寻大素因子的能力。截至目前,利用椭圆曲线法搜寻到的最大素因子是一个83十进制位素数,它是由Propper于2013年分解7337+1 时得到的。原始的椭圆曲线法只包含“第一阶段”。在文献[2]中,Brent 提出了2 种将椭圆曲线法扩展为两阶段的方法:一种是“p−1第二阶段”;另一种是“生日悖论第二阶段”,他也提到了Brent-Suyama扩展以及在第二阶段利用快速多项式求值算法的可能性,这些改进目前已经被广泛应用。在文献[3]中, Montgomery 对p−1法、p+1法以及椭圆曲线法进行了统一阐释,并提出在第二阶段使用FFT扩展,随后,他在文献[4]中对FFT扩展做了进一步改进,极大地提升了第二阶段的速度。自此,椭圆曲线法的基本框架已经建立,发展日趋完善。

2005 年,Zimmermann 等在文献[5]中总结了20年来椭圆曲线法的发展,并在文末提出一个开放问题:是否有可能设计“第三阶段”,进一步提升椭圆曲线法的分解能力?可惜的是,目前并没有发现这一方向的进展。本文通过将第一阶段和第二阶段进行“融合”,把椭圆曲线法扩展为三阶段,以期提升椭圆曲线法搜寻大素因子的能力。文中提出的新算法可以从两方面加以利用:一是在保持同两阶段椭圆曲线法参数相同的情况下,通过增加少许计算量,提升算法找到因子的概率;二是在搜寻同一个因子时,可以减小“光滑参数”的值。

2 椭圆曲线分解算法

假设本文致力于找出n的某个素因子p。任意选取 a,b,方程 y2=x3+ax+b mod n也蕴含着 y2=x3+ax+b mod p,且后者在椭圆曲线上定义的加法意义下形成群,而前者则不然。这是因为Zn不是域,在进行椭圆曲线加法的运算过程中,求两点连线的斜率时需要求逆,这一步有可能失效。但恰恰是这点为利用椭圆曲线法分解整数提供了机遇。在mod n的情形下,按照椭圆曲线定义的加法意义进行计算。若求斜率时,分母在Zn中的逆元不存在,意味着分母和n的最大公因数不为1,该最大公因数是n的非平凡因子(该最大公因数可能为平凡因子 n,但这样的概率很小,并且可以重新选择参数再次进行分解,因此不予考虑)。

由于p是未知的,运算只能在mod n下进行,根据前面的分析,为了找出n的非平凡因子,构造逆元不存在的情形。任选椭圆曲线上一点P0,设在 mod p 下椭圆曲线群的阶为Np,那么Np⋅P0=O,这里O表示无穷远点。在利用仿射坐标计算Np⋅P0时会出现mod n时逆元不存在的情形。由Hasse定理,群的阶

Np=p+1+t,|t|2p

虽然Np未知,但如果Np是“光滑的”,那么最终就能找出 p。不是每一条椭圆曲线的阶都是“光滑的”,椭圆曲线法是概率算法,光滑参数选取越大,测试的曲线越多,找出因子 p 的概率越大。

如算法1所示,目前的椭圆曲线法需要2个“光滑参数”B1、B2,(B1<B2)。如果N p最大的素因子不超过B2,并且其余的素因子不超过B1,就称N p为(B1,B2)“光滑的”。在实际实现椭圆曲线法时,为了提升速度,避免每次运算都计算最大公因数和逆元,一般采用 Montgomery 形式下的齐次射影坐标进行运算。算法1中的步骤1)~步骤4)称为第一阶段(first step或first phase),也是 Lenstra 提出椭圆曲线法的最初版本;步骤 5)~步骤8)称为第二阶段。根据该算法,结合上文的分析,如果

Np|({pB1}p{log(B1)log(p)})q1,B1<q1B2

那么算法1能够找到n的素因子(这只是充分条件),这里所有的p和q1均为素数。

算法1 两阶段的椭圆曲线分解算法

输入 既不能被2整除又不能被3整除的整数n,以及光滑参数B1≤B2

输出 n的因子或FAIL

1) 任选椭圆曲线 E mod n 及该曲线上一点P0=(x0:y0:z0)

2) 在曲线E mod n 上计算

Q={pB1}p{log(B1)log(p)}P0

3) 设Q=(xQ:yQ:zQ),计算g=gcd(n,xQ)

4) 如果g≠1,输出g并终止,否则继续

5) 对每个素数p(B1<p≤B2)

6) 计算(xP:yP:zP)=p·Q

7) 计算g=gcd(n,xP)

8) 如果g≠1,输出g并终止

9) 输出FAIL

实现时,需要进行快速标量乘运算。因为算法中并没有使用y坐标,所以使用Weierstrass形式并不是最佳选择,常采用齐次的Montgomery形式进行计算,这样的好处是在计算倍点时,可以只计算x坐标和z坐标[13,14],相比较 Montgomery 形式和Weierstrass形式而言,使用Edwards曲线可以减少模乘运算,而且找到因子的概率更高。此外,最近有研究提出算法1的量子计算版本[15]

3 椭圆曲线法扩展为三阶段

本节提出一种算法1的改进算法,将椭圆曲线法扩展为三阶段。通过增加较小的计算量,提高椭圆曲线分解算法做出分解的可能性。如算法2所示,使用3个“光滑参数”B1、B2、B3(B1<B2≤B3)。算法2的步骤1)~步骤4)称为第一阶段,步骤5)~步骤7)称为第二阶段,步骤8)~步骤11)称为第三阶段。

与算法 1对比,算法2的第一阶段与第三阶段分别相当于算法1的第一阶段和第二阶段。若

Np|({pB1}p{log(B1)log(p)})q1q2,B1<q1B2,B2<q2B3

那么算法2有一定概率找出n的素因子,这里所有的p和q1、q2均为素数。

算法2 扩展到三阶段的椭圆曲线分解算法

输入 既不能被2整除又不能被3整除的整数n,以及光滑参数B1、B2、B3

输出 n的因子,或FAIL

1) 任选椭圆曲线 E mod n 及该曲线上一点P0=(x0:y0:z0)

2) 在曲线E mod n 上计算

Q={pB1}p{log(B1)log(p)}P0

3) 设Q=(xQ:yQ:zQ),计算g=gcd(n,xQ)

4) 如果g≠1,输出g并终止,否则继续

5) 随机选取 r 个素数p1,p2,",pr,B1≤pi≤B 2,i≤r,计算 Q1=(i=1rpi)Q

6) 设Q1=(xQ1:yQ1:zQ1),计算g=gcd(n,xQ)1

7) 如果g≠1,输出g并终止,否则继续

8) 对每个素数p(B1<p≤B3)

9) 计算(xP:yP:zP)=p·Q1

10) 计算g=gcd(n,xP)

11) 如果g≠1,输出g并终止

12) 输出FAIL

预先取定整数B1、B2,将算法1中的“光滑参数”取为B1、B2,将算法2中的“光滑参数”取为B1、B2、B3,算法2的第一阶段与第三阶段分别等同于算法1的第一阶段和第二阶段。如果Np最大的素因子不超过B2,并且第二大的素因子不超过B1,那么算法1可以找出n的素因子p;如果 Np最大的素因子不超过 B2,第二大的素因子不超过B2,并且第三大的素因子不超过B1,此时算法1便束手无策,但算法2却有可能找出n的素因子 p。因此算法 2 新设计的第二阶段增大了椭圆曲线法成功分解的概率,增加的消耗是r个椭圆曲线标量乘运算。

若Np的第二大素因子落在B1,B2间,假设B1、B2间的素数个数为m,算法2新设计的第二阶段“击中”Np的第二大素因子的概率为(在rm的情况下)。

Prob=1j=1r(1jm)~1exp(1r22m)

要使Prob12,只需要r2mln2。实践中,这样的消耗增加是微不足道的。举例来讲,如果要搜寻一个规模约为 60 十进制位的素因子,GMP-ECM 7.0.4[6]推荐使用B1=2.6 ×10812B2=3.2 ×10,此时,算法2第一阶段中需要的椭圆曲线标量乘运算超过π(B1)=14 195 860个, π表示素数计数函数。而

r=2mln2<2Li(B2)ln24.0×105

Li表示对数积分函数。在这种情况下r(B1)

4 实践

第3节阐述了算法2在增加少许计算量的情况下,相比算法1提高了成功分解的概率。从另外一个角度考虑,在搜寻同一个素因子时,算法2可以适当减小“光滑参数”。下面以具体实践来阐述这一论断。

2018年“第三届全国高校密码数学挑战赛”赛题二要求参赛选手分解一个432十进制位的大整数,在将所有小素因子找出后,最困难的部分是分解一个116十进制位的整数n=183114226666 135858918346357409973966780454691208352147 034008159867395391585822600511889005020602 68468088445260535641。

使用算法2对n进行分解,分别取3个“光滑参数”,B1=3×106,B2=B3=1×109,取

r=8396>2mln2

利用Suyama参数σ表示Montgomery形式的椭圆曲线。在使用σ=22 824 341 所对应的椭圆曲线进行分解时,成功地搜寻出n的58十进制位素因子 p=345764579608668445952537219644694 7094107078575533908472103。

该椭圆曲线的阶为Np

Np=25·3·5·7·353·1439·4231·20929·28753·144553 3·1533487·2283881·306842093·512194063

若按照 GMP-ECM 7.0.4推荐的搜寻60十进制位素因子的参数设定,B1=2.6×108,B2=3.2×1012,并利用算法 1,使用该椭圆曲线无法成功分解出这一58十进制位素因子p。

5 结束语

本文将目前流行的两阶段椭圆曲线法扩展为三阶段,并通过理论分析和实践,从两方面阐述了改进后算法的优点,一是在保持同两阶段椭圆曲线法参数相同的情况下,通过增加微不足道的消耗,提升找到因子的概率;二是在搜寻同一个因子时,可以使用较小的“光滑参数”。此外,改进后的算法可能有能力搜寻更大的素因子。椭圆曲线法的瓶颈主要在第一阶段消耗过大,利用算法 2,可以适当减小 B1,增大B2与B3,从而增强使用椭圆曲线法搜寻更大素因子的能力。

致谢

感谢吴宝峰、吕丽君在成文过程中和我进行诸多有益讨论,并提出宝贵意见。

The authors have declared that no competing interests exist.
作者已声明无竞争性利益关系。

参考文献

LENSTRA H .

Factoring integer with elliptic curves

[J]. Ann of Math, 1987:126.

[本文引用: 1]

BRENT R P .

Some integer factorization algorithms using elliptic curves

[J]. Australian National University Technical Report, 1985,8: 149-163.

[本文引用: 1]

MONTGOMERY P L .

Speeding the pollard and elliptic curve methods of factorization

[J]. Mathematics of Computation, 1987,48(177): 243-264.

[本文引用: 1]

MONTGOMERY P L .

An FFT extension of the elliptic curve method of factorization

[M]. University of California at Los Angeles, 1992.

[本文引用: 1]

ZIMMERMANN P , DODSON B .

20 years of ECM

[C]// International Algorithmic Number Theory Symposium. 2006: 525-542.

[本文引用: 1]

The gmp-ecm development team,GMP-ECM,an implementation of the elliptic curve method algorithm,release 7.0.4

[R]. 2017.

[本文引用: 1]

OKEYA K , KURUMATANI H , SAKURAI K .

Elliptic curves with the montgomery-form and their cryptographic applications

[C]// International Workshop on Practice & Theory in Public Key Cryptography:Public Key Cryptography. 2000.

MONTGOMERY P L .

Evaluating recurrences of form xm+n=f(xm,xn,xm−n)via Lucas chains

[M]. 1983.

TALL A .

A generalization of the Lucas addition chains

[J]. Bulletin mathématique de la Société des Sciences Mathématiques de Roumanie, 2012: 79-93.

MONTGOMERY P L .

An FFT extension of the elliptic curve method of factorization

[D]. Los Angeles:University of California, 1992.

JOACHIM V Z G , GERHARD J .

Modern computer algebra

[M]. Modern Computer Algebra. 2001.

HANROT G , QUERCIA M , ZIMMERMANN P .

The middle product algorithm I

[J]. Applicable Algebra in Engineering,Communication and Computing, 2004,14(6): 415-438.

BERNSTEIN D , BIRKNER P , LANGE T ,et al.

ECM using edwards curves

[J]. Mathematics of Computation, 2012,82(282):16.

[本文引用: 1]

BERNSTEIN D J , BIRKNER P , JOYE M ,et al.

Twisted edwards curves

[J]. Lecture Notes in Computer Science, 2008,5023: 389-405.

[本文引用: 1]

BERNSTEIN D J , HENINGER N , LOU P ,et al.

Post-quantum RSA

[C]// International Workshop on Post-Quantum Cryptography. 2017: 311-329.

[本文引用: 1]

/