1、数学与统计学院 2012 届毕业论文1RSA 公钥密码体制中的素性检测问题赵文科(天水师范学院 数学与统计学院 甘肃 天水 741000)摘 要:RSA 公钥密码体制的安全性是基于具有两个素因子的大数分解难题,生成两个安全大素数是保密系统安全的保证,目前要确定生成一个安全大素数是很难的,通常采用的方法是,生成随机数,再对其作素性检测.本文首先介绍了几种主要的素性检测算法,在分析其优缺点的基础上提出了一种生成安全大素数的新方法,分析表明,新方法更适合于实际应用.关键词:大素数, 素性检测, RSA 公钥密码 The Primality Testing Problem of the RSA Pub
2、lic Key CryptosystemZhao Wenke(School of Mathematics and statistics Tianshui Normal University,Tianshui Gansu 741000)Abstract:The safety of the RSA public key cryptography system is based on the two element factor decomposition of large problem,generating two safety big prime is the safety guarantee
3、 of secret system . At present,it is very difficulty in generating a safety big prime, The actual method is that generating random numbers and then detecting primality in general.The paper introduces several main primality testing algorithm and puts forward a new method of generating safety big prim
4、e,based on the analysis of their advantages and disadvan- tages. The analysis shows that the new method is more suitable for the practical application. Key words:big prime ,primality test ,RSA public-key cryptosystem数学与统计学院 2012 届毕业论文21 引言密码学是一门研究加密与解密技术的科学,也是一门既古老又年轻的学科,其研究可以追溯到几千年以前战争出现的时候.古典的密码技术
5、主要应用于政治、军事以及外交等领域,随着全球信息基础设施和各个国家信息基础的逐渐形成,计算机网络已经成为信息化社会发展的重要保证,大量的敏感信息常通过公共通信设施或计算机网络进行交换,或以数字的形式存放在计算机系统里.现代密码技术作为实现网络信息安全的核心技术,是保护数据安全的最重要工具之一,其社会价值和商用价值已经得到了充分的肯定.公钥密码 是产生于 20 世纪 70 年代的一类新的密码体制.A 和 B 要进行保密通信,1A 使用 B 的公钥将明文加密后得到的密文发送给 B,B 使用自己的私钥将密文解成明文的过程即为一次基于公钥密码技术的保密通信,在这个过程中,通信信道是可以公开的.计算机网
6、络的高速发展,为公钥密码的发展提供了很好的环境,公钥密码学诞生 余年来,30在众多的公钥密码体制中,基于 RSA 算法的公钥密码体制是唯一被广泛接受并技术实2现的公钥密码体制,目前已成为公钥密码的国际标准 .RSA 公钥密码体制具有密钥管理3方便、破译难度大等优点,其公钥和私钥是一对足够大的素数.RSA 公钥密码体制的算法可以描述为:(1)生成一对安全大素数 (保密)qp,(2)计算 (公开), 依据 Euler 定理 得到 (保密)pn41qpn(3)随机生成正整数 满足 , 是公开的加密密钥,ene,gcd1e(4)计算 满足 解密密钥,dmo是对明文 和密文 ,加密算法和解密算法分别为:
7、CP加密算法:对明文 ,密文为 nCed解密算法:对密文 ,明文为 oRSA 算法的数学基础是数论中的 Euler 定理,其安全性 极大地依赖于模数 的素5 n因子分解难度,如果 被成功分解为 的乘积,那么就能计算出 也nq和p,1qpn就是说任何人都可以根据公钥 计算出私钥 这就要求 必须要足够大,使得edqp在有效时间内不可分解.所以只有选择合适的安全大素数因子 ,才能保证密码系n 和统的安全,因此 RSA 公钥密码的发展离不开对素数的研究.而素数研究的一个基本问题就是如何快速有效地判别一个整数是否是素数,即素性检测问题.因此,本文将主要讨论数学与统计学院 2012 届毕业论文3RSA 公
8、钥密码体制中的素性检测问题,在研究几主要的素性检测算法优缺点的基础上,提出一种新的素数生成方法,即以 Miller-Rabin 算法为基础算法,在将待测数送入检测程序之前先对其作预处理生成伪素数,通过 Miller-Rabin 检测算法生成强伪素数,最后采用Pocklington 定理 对生成的强伪素数进行确定性验证,新的素数生成方法对提高 RSA 密6钥的产生速度具有现实意义.2 素数定理素数,就是除了 和它自身以外再不能被其它数整除的数.素数在整数中的分布 是1 7极不规律的,素数越大,其分布越稀疏.定理 1 素数的个数是无限的证明 假设正整数中只 个素数, , . 为素k有 ,21kp
9、121kpn令 n则 若数, 与 都不相等 ,这与只 个素数的假设相矛盾. 不是素数, 一n则 kp,21与 有 若 则定存在一个素数因子 , ,否则由 ,以及 ,所 ,ki且 k21|于 |及 1|p以这 是素数相矛盾, 都不相等,这与只 个素数的假设相矛盾.p与 故 kp,21与 有因此,存在无穷多个素数,即素数的个数是无限的.尽管素数的分布极不规律,但素数分布函数却有着如下的良好性质.定义 1 是大于 的正整数, 素数,则称x设 1是p(1)x1为素数分布函数.依据定义 1 可知, 不大于正整数 的所有素数的个数 ,通过 的渐进性研是x x对究,得到如下定理:定理 2(素数定理) 素数分
10、布函数 渐进, 即是x的ln(2)1limx依据定理 2,当 足够大时, .xln有定理 3 大于 的正整数 是素数的充分必要条件是:1n(3)1nxod数学与统计学院 2012 届毕业论文4在整系数多项式 中成立.由 是个环,故 (3)式也可表示为:x集 合 x于(4)xqnn 1证明 必要性: ,且 是一个素数,由二项式定理得2设(5)1!)1(1rnnrnxx因 ,所以(5)式中 不会缺项,且各项系数均为正整数.又由于1n为 rnnr1!的是素数,所以在系数 !1!rnrn中,必有 ,从而上式可写 , 因此,式(5)可写为:1!|rnr rC为 . (6)xqxxn1故必要性得证.充分性
11、: 是一个合数,存 的一个幂 的素数因 ,其 , 取出式(5)右n设 在 k为 p子 1k中 .p端的一项 pnxpn!1除以 ,余数分别为 所以 的素因子分解中只能出现1,pn因 为 时 ,而不能 整除.从而它不能 为 0,又因为式(5)右端各项对 的幂不1kp被 x在 nmod中 x同且不能相消,所以 01n中不能成立 .故充分性得证 .x在3 素性检测算法由于目前的水平在有效时间 内确定地生成符合 RSA 算法要求的安全大素数是不8可实现的,因此实际应用中都是对生成的随机大整数进行素性检测确定安全大素数的.目前的素数生成流程图可以表示为如图 1.其关键环节就是快速有效地判断一个随机生成的
12、整数 是否是素数,即素性检测过程.n数学与统计学院 2012 届毕业论文5随机整数 nn 是否是素数? 是 输出 n图 1一般地,素性检测算法可分为两类,即确定性素性检测算法和概率性素性检测算法;确定性素性检测算法的判断精度很高,但算法的执行效率很低;概率性素性检测算法的执行效率比较高,但是存在着将一部分合数误判为素数的风险.3.1 确定性素性检测算法确定性素性检测 算法总是能输出一个素数,但生成素数的效率很低 ,一般认为此算9法在有效时间内生成满足 RSA 算法要求的大素数是不可能的.3.1.1 试除法试除法是素性检测算法最原始的方法,假设 是待检测数,算法过程如下:n(1)从 2 开始试除
13、 ,若 2| ,则 不是素数,否则转(2)n(2)用 3 试除 ,若 3| ,则 不是素数,否则转(3)(3)用 4 试除 ,若 4| ,则 不是素数,否则转(4)(4) ( ) 试除 , 则 不是素数,否则 是素数;退出检测kp用 n,且 |np若 n虽然这种算法可以通过只检测奇数,或者通过运用一个从 之间的素数表得到2到改进,但是其计算复杂度 仍然是指数增长的,也就是说,如果 非常大,此算法在有2nOn效时间内是不可能实现的.3.1.2 Lucus 素性检测法,存在一个正整数 且 若对 每一个素数因子Nn设 ,a,1n,mod1na的1都有 这样的 素数.p,mod1ap是此算法需要知道
14、所有素因子 ,因此算法执行效率也很低 .的n否数学与统计学院 2012 届毕业论文63.2 概率性素性检测算法概率性素性检测 算法生成的数是素数的概率为 其中 为素性检测方法中可10 ,1控制的任意小但不为 的数.在 RSA 公钥密码体制中,合数被误判为素数实施加密和解密时,对数据的安全性威胁是可以接受的,因此当前广泛采用并被深入研究的是概率性素性检测算法.3.2.1 Solovag-Strassen 算法生成随机整数 ,使得 若 则 不是素数 ;否则计算 若a,0n,1gcdan,4naJ则 通过检测,可能是素数;否则 不是素数.当通过 次检测后,被检mod,21nnaJ t测数是合数的概率
15、不超过 因此,这个算法的正确性至少为 当 足够大时, 一个.21t 21是t21很小的数.此算法的时间复杂度 .32lognO为3.2.2 Miller-Rabin 素性检测算法设待检测数为 计算 ( 是 2 整除 的最大次数),然后由 计算,pb1p mpb21公 式出 进入检测.m(1)输入:一个小 且大于 1 的随机于 a数输出: 是素数或 不是素数p(2)设 ,0jpazmod计 算(3)若 与 1 同余, 通过检测,可能是素数z或 则(4) 且 ,则 不是素数j若(5)令 且 不同余,则计算 然后回到步骤(4).如bj如 果 z1p与 ,mod2pz果 同余 , 通过检测,可能是素数
16、z1p与 则(6) 且 与 不同余,则 不是素数bj若 z1p(7)退出该检测算法是一个多项式时间算法,执行效率较高,当被检测数通过 次检测时,被检t测数不是素数的概率不超过 当通过检测的次数 足够大时, 不是素数是一件小概率.41t tn事件,此算法的算法复杂度和 Solovag-Strassen 算法一样为 但其每次检测过程,log32O数学与统计学院 2012 届毕业论文7中的误判率仅 .41为4 生成素数的新方法在传统的试除法、Lucas 算法、 MillerRabin 算法和 Solovag-Strassen 算法的基础上,本文提出了一种新的素数生成、检测方法.先对随机产生的大整数用
17、素数筛法进行预处理生成伪素数,再用基于 MillerRabin 检测算法的优化算法进行多次检测生成强伪素数,最后将生成的强伪素数用 Pocklington 定理进行素数确定性验证,通过这样的确定性验证的强伪素数必定是素数.4.1 预处理生成伪素数对随机产生的大整数,如果直接进入后面的素性检测会比较耗时,所以在把大整数送入到素性检测程序前,先将其中的合数和以 5 为个位的数过滤掉.然后再选取一组小素数,采用素数筛选的方法生成伪素数 ,算法为:s(1)输入:随机产生预处理后的大整数 n输出:伪素数 s(2)选取一组小素 ia数(3) 0i(4) inymod计 算(5)若 则 可能是素数, 转至(
18、4);否则,转至 (6)1i(6) 通过所有 的筛选,则 是伪素数;否则, 转至(1)若 ian,2n4.2 强伪素数的生成对于 4.1 节中生成的伪素数,可以根据下面的基于 MillerRabin 检测算法的优化算法生成强伪素数 ,算法如下 :p(1)输入:4.1 节中生成的伪素数 s输出:强伪素数(2) 12sr(3)将 进入 MillerRabin 检测,若 能通过 次检测,则 是伪素数,转至(6)r20Kr(4) sr(5)若 的二进制长度大于要生成的素数 的二进制长度 ,则 是伪素数,转至(1);否则,转pr数学与统计学院 2012 届毕业论文8至(3)(6) 12rp(7) 能通过
19、 次 MillerRabin 检测, 是强伪素数;否则,转至(1)若 20Kp则(8)退出4.3 素数的确定性验证这里采用 Pocklington 定理对 4.2 节生成的强伪素数进行验证,由于基于 Pocklington定理的素数生成方法是确定性素数生成方法,所以通过验证的强伪素数必定是素数,但是验证中需要已知 的部分素数因子.算法如下:1p(1)输入:输出:安全大素数 q(2)分解 使得 ,其中,1pFRp(3)分解 使得 ,其 为不同的素数,Frjx1rj,21中(4) 1a(5) (6)若 ,则转至(8)1mod1pp(7)转至(5);否则 可能不是素数,转至(9)(8)若对任意的 则
20、 是素数,否则转至(5),2,rj1),gcd(1pajq(9)退出在生成安全大素数的新方法中,由于预处理阶段只是选用了一部分小素数进行过滤筛选,因此不能说未被这些小素数整除的就一定是素数,因而应继续执行接下来的MillerRabin 检测,这种算法效率的提高完全依赖于小素数对大部分合数的过滤作用,但对于不含有小素数组中素因子的素数来说,过滤是一种浪费,因此总的来说速度的提升与小素数组元素的个数成正相关,但当元素个数达到某个值的时候,也就是小素数组因子的过滤效果达到最佳状态的时候,再增加元素个数,就只能使检测时间增加.5 结束语数学与统计学院 2012 届毕业论文9大素数的生成是构造 RSA
21、密钥的关键,因此大素数的生成和检测一直都是公钥密码学中的一个重要领域.本文主要探讨了 RSA 公钥密码体制中安全大素数的生成和检测的基本原理及其算法,在分析传统检测算法的优缺点的基础之上,提出了一种新的素数生成方法,为安全大素数的产生提供了一条新的途径,强化了素性检测算法的预处理过程之后,使用基于 Miller-Rabin 的优化算法进行素性检测 ,最后 ,为生成确定性安全大素数,又对生成的强伪素数作了基于 Pocklington 定理的素数确定性验证,新的素数生成、检测方法为RSA 公钥密码体制的加密技术提供了新的素材,具有一定的实际应用价值.在提高素性检测速度及效率方面还有很多问题需要在接
22、下来的工作中研究:(1)大数的存储问题,由于待检测和要生成的数都很大,如果采用数组存储的方式会使得内存开销很大,可以考虑采用其他存储形式.(2)可以考虑将 Miller-Rabin 算法改成更加先进的算法,从而加快素数检测算法的执行效率.参考文献1 Diffie W,Hellman M.A new direction in cryptographyJ.IEEE TransonInfotheory,1976,22(6):644-654.数学与统计学院 2012 届毕业论文102 Rivest RI,Shamir A,Adleman L.A method for obtaining digital
23、 signatures and public-key Crypto systemJ.Comm ACM,1978,21(2):120-126.3 陈少真.密码学基础M.北京:科学出版社,2008:177-184.4 颜松远.计算数论M.北京:清华大学出版社,2008:121-125. 5 孙淑玲.应用密码学M.北京:清华大学出版社,2004:46-48.6 陈鲁生,沈世镒.现代密码学M.北京:科学出版社,2002:87-90.7 刘学军.Miller-Rabin 素性检测优化算法研究与实现J.信息技术,2008,12:141-147.8 王萍 ,廖芳燕.RSA 算法中快速生成大素数方法的改进J.
24、重庆文理学院学报(自然科学版),2009,6:9-11.9 雷文,邱玲,张弘.一种大素数快速生成算法设计与实现J.四川理工学院学报(自然科学版),2011,6:313-316.10 李 彪,左黎明,谢 环.素数确定性算法分析J.计算机技术与发展,2011,8:26-29.11 刘明华,余启港.RSA 公钥密码算法中大素数的生成及素性检测J.中南民族大学学报(自然科学版),2004,12:94-96.致 谢数学与统计学院 2012 届毕业论文11在经过将近半年的努力后,本毕业论文即将告以尾声 ,本文从选题到资料的收集以及撰写过程都经过精心地考虑、仔细地查阅和细心的修改. 在此, 我首先要感谢我的
25、指导教师左为平老师, 不管是论文的选题还是撰写,以及资料的查阅等方面,他都给了我莫大的帮助与启发, 尤其是在论文的几次修改过程中,左老师以他广博的学识、严谨的治学精神和耐心的指导态度才使我的论文顺利完成.再次谨向左老师致以诚挚的谢意和崇高的敬意 .同时,我要对编撰本论文参考文献的所有学术专家和老师致以真挚的谢意 ,是他们出版的书籍与发表的学术论文给了我很大的启示与指导,才将论文完成 .其次,我在即将毕业之前要感谢数学与统计学院所有的老师四年来对我的细心教育与培养,让我在四年的学习生涯中不仅学到了扎实的专业知识 ,而且他们的言传身教使我受益非浅,他们严谨的治学态度和耐心教导学生的精神也是我永远学习的榜样,并将积极影响着我今后的学习和工作.最后我还要感谢我的学校天水师范学院四年来对我的栽培.