基于数论的RSA算法研究

来源 :课程教育研究·中 | 被引量 : 0次 | 上传用户:game780
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
   【摘要】基于数论的公钥密码体制的RSA算法是最完善的加密算法. 通过RSA算法基本原理可以将大数的幂模运算转换为小数幂模运算,并对一些模块进行适当的改进,从而提出快速求解加密和解密的计算方法,提高RSA的运算速度。
   【关键词】公钥密码算法RSA算法幂模运算
   【基金项目】河南省教育厅科学技术研究重点项目资助计划(14A110016)。
   【中图分类号】O29 【文献标识码】A 【文章编号】2095-3089(2014)05-0137-02
   1.前言
  RSA公钥密码算法是美国麻省理工学院的三位学者Rivest、Shamir和Adleman在1978年提出的[1],既可以用于加密,又可用于数字签名,它安全,易懂,易实现,是目前广泛应用的一种密码算法。其理论基础是数论中的大合数因子分解困难性,即求两个大素数之积,在计算机上很容易实现。但是要将一个大合数分解成两个素数的乘积,在计算机上很难实现。 由于RSA算法采用的幂模运算耗时太多,大量的数据处理时速度很慢,所以提高RSA的运算效率便成为非常重要的研究内容[4]。
  2.基本定义与定理
  定义1:若a,b,c都是整数,且a|b,a|c,那么a就是b和c的公因数。在所有公因数中最大一个,称为最大公因数,并记为gcd(b,c)[3]。
  定义2:若a和b的最大公因数是1,即gcd(b,c)=1,则称a和b互素[2]。
  定义3:设a,b∈Z,n≠0如果n|(a-b),则称a和b模n同余,记为a≡b(modn),整数n称为模数[3]。
  定义4:元素x∈Zn有乘法逆元x-1,当且仅当x和n的最大公因子是1,即gcd(x,n=1),即x和n互质。如果x的逆元存在,必定满足x×x-1modn=1[3]。
  定理1:若a和n互素,则aφ(n)=1modn,称为欧拉定理(简称Euler定理)。
  证明:设Zn={a1,a2,...aφ(n)}是模n的一个群集,由于gcd(a,n)=1,根据同余性质ab=a1b1(modn),故aZn={aa1,aa2,...aaφ(n)}也是模n的一个群集,即■a1≡■(aa1)(modn)。因此aφ(n)≡1modn。
  定理2:若是p素数,a是正整数且gcd(a,p)=1则ap-1≡1modp,称为费尔玛定理。(简称Fermat定理)[1]。
  定理3:设n是一正整数,小于n且与n互质的正整数的个数称为n的欧拉函数,记为φ(n),若n是素数,则显然有φ(n)=n-1[1]。
  推论1:若n是两个素数p和q的乘积,则φ(n)=φ(p)×φ(q)=(p-1)×(q-1)
  推论2:对任意非负整数a和正整数b有gcd(a,b)=gcd(b,amodb)。
  证明:因为b是正整数,所以可将a表示为a=kb+r≡rmodb,amodb=r,其中为k一整数,所以amodb=a-kb,设d是a,b的公因子,即d|a,d|b,所以d|kb,由d|a和d|kb得d|(amodb),因此a是b和amodb的公因子。所以得出a,b的公因子集合与b,amodb的公因子集合相等,两个集合的最大值也相等。
  3.RSA公钥算法描述
  3.1密钥选择
  RSA加密算法的密钥选择方法是该算法的核心,RSA密钥的选择和生成方法保证了RSA公钥加密算法的安全性。先选择两个素数p和q。这两个素数的乘积就是RSA密钥中的正整数n,即n=p×q,如果p和q足够大,那么乘积n也就足够大,如再分解p和q困难性极大,这样就可以满足了公钥密码系统的要求,根据欧拉函数计算出φ(n)=(p-1)(q-1)。然后,随机选取整数e,满足1<e<φ(n),并且gcd(e,φ(n))=1,作为加密密钥。最后求出d=e-1modφ(n),作为解密密钥。则(e,n)为公钥,d为私钥,p和q为秘密参数,需要做保密处理。
   3.2加密运算
  加密消息时,先将它分成比n小的数据分组,采用二进制数,选取小于n的2的最大次幂,也就是说,如果p和q为200位素数,那么n将400有位,每个消息分组mi小于400位长,加密后的密文将由相同长度的分组组成ci, 加密公式为c=memodn 如果需要对密文c进行解密,则只需要c对进行d次乘法运算,然后再对乘积取n的模,得到明文m。
   3.3解密运算
  解密公式为m=cdmodn,因为d=e-1modφ(n),等式两边同乘以e将等式转化为d×e=1modφ(n)。根据模运算性质可知d×e=kφ(n)+1,其中k是一个大于等于的整数。根据加密公式和模运算性质可知cdmodn=(me)dmodn=mkφ(n)+1modn,利用指数运算性质m×mkφ(n)modn=m×1modn=m。
  3.4 计算问题
  通过分析RSA算法的求解过程,可知RSA通过乘法与除法加以实现的。可想而知,RSA算法将执行大量的乘除法运算,从而导致RSA算法的加密与解密速度十分慢[6]。因此,大整数的乘除法成为影响RSA算法速度的重要因素。利用模运算的性质:(a×b)modn+[(amodn)×(bmodn)]modn可以大大减少中间运算环节,提高运算速度。例如求am,其中a和m是正整数, m表示为二进制形式bk,bk-1,bk-2,…b0即m=bk2k+bk-12k-1+…+b12+b0。
  4.RSA算法的安全性分析
  4.1欧几里得(Euclid)算法[2]
  歐几里得算法是基于推论2作为求两个正整数的最大公因子的简化过程,是数论中的一个基本算法理论。当两个正整数互素时,可以求出其中一个数关于另一个数的乘法逆元。设输入两个正整数为b,a并设a>b. ①x←b;y←a;②ifY=0then returnX=gcd(b,a);③R=XmodY;④X=Y;⑤Y=R;⑥goto
  4.2由n破译p和q
  RSA算法安全性是建立在大数的因数分解基础上,下面解决大数的分解。若n=p×q被因子分解,则RSA便被攻破,因为在p和q已知的情况下,则利用欧拉函数可以解出φ(n)=(p-1)×(q-1),再利用欧几里得算法求出以φ(n)为模的公钥的e乘逆元d,就可以破译出RSA的秘密私钥。
  若n无法分解时,如果破译者知道φ(n)的值也能够进行破译。已知n=p×q,φ(n)=(p-1)(q-1)=n-p-q+1,p+q=n-φ(n)+1,利用配方法得(p+q)2-4n=(p+q)2-4p×q=(p-q)2,即p-q=■联立方程组(p+q)和(p-q)可得p=■,q=■ ,d也可以很容易地得到。也就是说,如果能够以一种可行的方法直接得到φ(n),破译者就可以对其进行破译。
  4.3 合理选定参数
  在设计RSA算法时,应使分解n=p×q的上不可行,对p和q的主要限制是:第一,p和q足够大,这样可以基本保证不会在有效时间内被破译者破译。 第二:差值|p-q|不宜太小,最好与p,q数位接近,如果p和q的数值相当接近,则(p+q)≈2■,并且■(p-q)是一个相当小的数,因此等式■■-n=■■等式右边为平方数,因此可进行因子分解。第三:d=gcd(p-1,q-1)应尽量小,这样可以减小将n因数分解的可能性。第四:p-1与q-1都应该至少含有一个大素数因子,p+1与q-1也至少含有一个大素数因子,否则就可能利用重复加密攻击的方法求出n的真因数。
  4.4参数e和d选择原则
  在选好p和q后,要选取满足gcd(e,φ(n))的e值是很容易的,因为两个随机数互素的概率为0.6,若采用小的e,可加快加密的速度,但e太小时易遭加密指数的攻击。 这是因为第一:当e过小时,对小的m,可能出现的me<n情况,此时c=memodn=me即未取模,由c直接开e次方就可求出明文m。 第二:加密指数的攻击,令网中有3个用户为加快速度,均选用e=3,而有不同的模n1,n2,n3,一般情况下其模n1,n2,n3是互素,否则可求出构成n1,n2,n3的两个因子p和q中的1个,进而导致解密密钥被破解。 若有1用户要将明文n传给这3个用户,其密文分别为:c1=m3modn1,c2=m3modn2,c3=modn3 ,令设c=m3mod(n1×n2×n3)利用中国剩余定理可以求出c,故c=m3,m=■即失密。
  5.结语
  RSA公钥密码算法是迄今为止在求解密码问题中最为成熟理论之一,RSA的基础是数论的欧拉定理,它的安全性依赖于大数的因数分解困难性。RSA算法不仅可用于加密/解密,还可以运于数字签名,密钥交换等方面。本文通过对RSA公钥密码算法分析,在RSA公钥密码算法安全性上做出具体的分析并给出较为合理参数体系结构,对进行密钥设计与求解私钥具有一定的借鉴作用[7]。
  参考文献:
   [1]陈波,于泠,肖军模.计算机系统安全原理与技术[M]. 北京:机械工业出版社2006. 1
   [2]凌捷,谢赞福.信息安全概论[M].广州:华南理工大学出版社2005. 8
   [3]杨波.现代密码学[M].北京:清华大学出版社2003. 7
   [4]殷彬,陶安等. RSA算法的一种高效软件实现方法[J]. 微计算机信息. 2006(33):258-259
   [5]鄢喜爱,杨金民等.RSA公钥密码算法的分析[J].长春工业大学学报. 2006(27):142-144
   [6]滕济凯. 基于RSA的公钥叛逆追踪方案[J].计算机工程. 2008(13):152-153
   [7]宋晓莉,李敬兆等.RSA算法及其一种简单实现方法的设计[J].电子工程师.2004(30):35-37
其他文献
【摘要】近年来,国家的新课程教育已越来越推广,也不斷的对其进行了一系列的改革,而如何提高数学教学质量已成为新课程数学教学中急需加强的问题。本文主要是通过在初中数学教学中,结合一些实际情况,对如何提高初中数学教学质量进行了探究,提出了提高教师自身素质、明确教学过程中的培养目标和以学生为主的教育理念等三方面的想法,从而以实现素质教育,使得初中数学教学质量得到提高。  【关键词】初中数学教学教学质量探讨
会议
【中图分类号】G623.5【文献标识码】A 【文章编号】2095-3089(2014)05-0138-01  小组合作学习是新课程倡导的一种学习方式,对于当前的数学课堂教学而言,小组合作学习的意义相当巨大:它使得学生真正从以前被动的知识接受者而转变为主动的知识探求者、学习者,每个学生都参与讨论,在讨论中充分享有发言权,它给学生提供了一个充分展示自己的舞台。我在多年的数学教学实践中发现:在数学课堂上
随着中职数学教学实践的不断发展,以生为本、因材施教的分层教学理念逐渐受到重视。本文结合教学经验,主要从增强数学备课分层力度、提升数学目标分层水平、设置数学分层课堂
【摘要】创设问题情景是《数学课程标准》所倡导的一个重要理念,它指出:“数学教学应从学生实际出发,创设有助于学生自主学习的问题情景,引导学生通过实践、探索、交流等活动方式获得知识,形成技能发展思维、学会学习”。如何在初中数学教学中有效的开展创设问题教学,本文提出应充分利用数学典故、生活及实践例子等方式创设问题情境,让数学教学更生动,让学生学习更具主动性。  【关键词】新课标数学教学问题情境  【中图
煤田水文测井和矿区供水水源勘探测井工作是个较簿弱环节。为模索出适合云南地质情况的水文测井方法,解决地质勘探中含水层层位,分布情况,含水性以及各含水层之间的相互关系等问