大整数分解
1977 年,基于大整数分解难题的密码体系 RSA 诞生,命名自 Ron Rivest、Adi Shamir 和 Leonard Adleman 三位提出者姓氏的首字母。RSA 算法在公钥密码学上作出重要贡献并对全世界产生重要影响,三位提出者于 2002 年获该年度图灵奖。整数分解问题是当今几乎所有公钥密码安全性领域中最重要的课题之一。
RSA 算法的安全性依赖于大整数分解难题,即
将一个大整数分解成若干大素因子的乘积。
有意思的是,虽然这是实践证明的一个「公认」难题,但现在仍无法证明其为
针对小因子的几种典型的大整数分解算法有:
Pollard's rho 算法
Pollard’s p-1 算法
ECM 算法(Lenstra elliptic curve factorization/elliptic-curve factorization method )
此次我们将介绍 Pollard’s p-1 算法、ECM 算法与 ECM 算法的一个具体实践 —— GMP-ECM。
Pollard’s p-1 算法
Powersmooth:如果一个数
Pollard’s p-1 算法是 John Pollard 在 1974 年设计的一种利用费马小定理的整数分解算法。根据费马小定理,
对于数据的选取,Pollard p-1 算法采用随机数的策略。如果随机不出结果,那么就从小于
输入:
输出:
STEP
1
选择一个平滑边界
STEP
2
定义:
STEP
3
随机选择一个和
STEP
4
计算:
STEP
5
如果
如果
如果
ECM 算法
Pollard’s p-1 方法要求
对于这个方法的改进,ECM 方法在 Pollard’s p-1 的基础上引入了随机的椭圆曲线,将原本的乘法群转换为椭圆曲线的点构成的群。椭圆曲线方法是一种基于数论的算法,利用椭圆曲线上的点的性质和运算规则,寻找满足一定条件的因子。
算法概述
假设
利用 ECM 算法寻找
STEP
1
选择
STEP
2
在
STEP
3
计算
ECM 算法能够找到
一种 ECM 实现 —— GMP-ECM
GMP-ECM 的实现基于原有的 ECM 方法进行了优化。
首先是对整体的算法过程进行的优化。在 GMP-ECM 中计算因子分为两个步骤,每一个步骤选取两个
算法分为两个阶段,分别使用
Stage 1
首先计算在椭圆曲线
在 Stage 1 的计算中,GMP-ECM 优化了椭圆曲线的选取与计算。
随机的椭圆曲线生成
在计算因子的过程中,当随机生成的椭圆曲线的阶在
Suyama's form:保证椭圆曲线的阶
Montgomery's form:保证椭圆曲线的阶
椭圆曲线运算
在 GMP-ECM 中使用 Montgomery's 形式的椭圆曲线,在求点的乘法或加法过程遵循如下规则:
计算:
计算:
计算:
计算:
Stage 2
GMP-ECM 的第一阶段主要计算椭圆曲线
Stage 2 的主要思想为中间相遇(meet-in-the-middle)策略:
在 Stage 2 计算一个
若
算法复杂度
ECM 方法找到一个数
在实际的运算过程中,由于算法存在随机性,找到数
示例
以大整数
N = 0xA2862FB145AC7CE580E0BFF3CEFF42646050F8C611D36A3026E6EFB433B5CDD9EEFBA893E3F25C23A4951BA20992680162934CBDB6876CC791738C140C6EA6EC82938F7E18C5F0760367CF20883DCAB1D6885E222BBC7A1B5D434FD9FC148E387FA9AD69CE708FDDDE3E963F9AB2AF2046A37D7DBA21BC92E6F2A631C3E7770C77C95FAD6F1DC60D9F0645AEF2CC5D03D2151E35443FE0F90F1E2EAE58489C4450C8281EDCC58DDB409C306797C616954ACABCE4881E40ABDD2689A9F7596F29CD5CB42C752DA9306E7DB87CAC8957E3CA165421CF9E1B7220759A10588B386E33FD8E762E92C9F79D50150EF5FCA5F411DE23B8DFFE47A95D48ADDCF4797565
调用解析工具(https://github.com/Safeheron/integer-factorization)使用 GMP-ECM 方法分解:
ecm -c 2 25e4 1.3e8 -mpzmod threads: 2 mod: 1
A2862FB145AC7CE580E0BFF3CEFF42646050F8C611D36A3026E6EFB433B5CDD9EEFBA893E3F25C23A4951BA20992680162934CBDB6876CC791738C140C6EA6EC82938F7E18C5F0760367CF20883DCAB1D6885E222BBC7A1B5D434FD9FC148E387FA9AD69CE708FDDDE3E963F9AB2AF2046A37D7DBA21BC92E6F2A631C3E7770C77C95FAD6F1DC60D9F0645AEF2CC5D03D2151E35443FE0F90F1E2EAE58489C4450C8281EDCC58DDB409C306797C616954ACABCE4881E40ABDD2689A9F7596F29CD5CB42C752DA9306E7DB87CAC8957E3CA165421CF9E1B7220759A10588B386E33FD8E762E92C9F79D50150EF5FCA5F411DE23B8DFFE47A95D48ADDCF4797565
********** Factor found in step 2: 1021791499165844943393503 21 52761ms
成功找到素因子 1021791499165844943393503。
Safeheron 将持续输出更多技术内容,希望伴随传统行业以及区块链行业用户前行,提供有价值的参考。
Keep Your Funds
Safe From Here On
Twitter|@Safeheron
LinkedIn|Safeheron
公众号|安全鹭
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。