RSA密码体制的实现及数字签名技术的应用_第1页
RSA密码体制的实现及数字签名技术的应用_第2页
RSA密码体制的实现及数字签名技术的应用_第3页
RSA密码体制的实现及数字签名技术的应用_第4页
RSA密码体制的实现及数字签名技术的应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RSA密码体制的实现及数字签名技术的应用摘要随着计算机网络和信息技术的发展,信息安全在各领域发挥着越来越重要的作用,其中密码学已成为信息安全技术的核心,本文主要介绍了信息加密技术的应用。 RSA算法是目前公认的在理论和实际应用中最为成熟和完善的一种公钥密码体制,它是第一个既能用于数据加密也能用于数字签名的算法,是公钥密码体制的代表。数字签名是起到身份认证、核准数据完整性的一种信息安全技术。它通过认证技术来辨认真伪。RSA数字签名体制使用的是RSA公开密钥密码算法进行数字签名。关键词:RSA算法;加密; 解密; RSA数字签名AbstractWith the development of the

2、 computer network and information technology, information security plays more and more important role in every field. Cryptography has become the core of information security technology. This thesis mainly introduces the application of information encryption technology.RSA algorithm is considered as

3、 a public-key cryptosystem of the most fully developed and complete in theory and practice application at present. It is the first algorithm for both data encryption and digital signature. Digital signature is an information security technology used to check authentication and data integrity. It ide

4、ntifies true or false by the authentication technology. RSA digital signature system carries on digital signature by using RSA public-key cipher algorithm.Key Words: RSA algorithm; encryption; decryption; RSA digital signature1引言1.1密码学应用的相关背景现代密码学已成为信息安全技术的核心,密码学是以研究通信安全保密的学科,即研究对传输信息采用何种秘密的变换以防止第三者

5、对信息的窃取。密码学包括两个分支:密码编码学和密码分析学。密码编码学主要研究对信息进行交换,以保护信息在信道的传递过程中不被他人窃取、解密和利用的方法,而密码分析学则与密码编码学相反,它主要研究如何分析和破译密码。两者之间既相互对立又相互促进。密码体制的分类有很多,其中一种是根据加密算法和解密算法所使用的密钥是否相同,可以将密码体制分为对称密钥密码体制(单钥密码体制)和非对称密钥密码体制(公钥密码体制),这两种密码体制各有自己的长处和短处,因此现在采用了两种的混合体。 公钥密码体制的特点是:接收方B产生一对密钥(PK和);公开,保密;从推出是很困难的;、双方通信时,通过任何途径取得的公钥,用的

6、公钥加密信息,加密后的信息可通过任何不安全信道发送。收到密文信息后,用自己私钥解密恢复出明文。公钥密码体制已成为确保信息的安全性的关键技术。RSA公钥密码体制到目前为止还是一种被认可为安全的体制。【3】RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(Secure Electronic Transactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。

7、网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动电话和存储卡的验证功能芯片等,大多数使用RSA技术。【6】1.2使用RSA加密的意义随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗成为非常重要的问题。在计算机通信系统中,维护电子文档的安全也成为至关重要和非常敏感的问题。为保护信息的安全,数字签名应运而生,它是现代密码学主要研究的内容之一。目前关于数字签名的研究主要集中点是基于公钥密码体制的数字签名。【4】在公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,因此它较好地解决了传统密码体制在网络通信中出

8、现的问题。手写签名的每一项业务都是数字签名的潜在用场。数字签名可以提供数据完整性、真实性和不可否认性。因而当需要对某一实体进行认证、传输具有有效性的密钥以及进行密钥分配时,便可以借助数字签名来完成任务。数字签名技术在身份识别和认证、数据完整性、抵赖等方面具有其它技术无法替代的作用,它在军事、电子商务和电子政务等领域有着极广泛的应用。而在公钥体制中,RSA是一个较为完善的公钥密码算法,不仅能够同时用于加密和数字签名,而且易于理解和操作,是被广泛研究的公钥密码算法。因此,基于RSA的数字签名具有较强的研究性和实际应用意义。【6】1.21什么是RSA加密RSA(Rivest-Shamir-Adelm

9、an)加密体制是一种公开的密码体制。【4】RSA公匙密码体制是又R.L.Rivest,A.Shamir和L.Adelman于1978年提出的。由于RSA算法很完善,即可用于数据加密,又可用于数字签名,安全性良好,易于实现和理解,所以已经成为一种应用极广的公匙密码算法,目前,RSA在许多场合有广泛的应用。【2】2 RSA相关理论知识2.1RSA算法的的数学基础定义1:对于自然数P,如果P只能被1和本身除尽,则P为素数或质数,否则为合数定义2:如果整数a和整数b的最大公约数是1,则a和b互为质数。欧拉定理:若n,a为正整数,且n,a互素,(a,n) = 1,则 a(n) 1 (mod n)定义3:

10、欧拉系数Q(r)定义为Q(r)=r(11/p1)(11/p2)(11/p2)(11/pn)(p1,p2pn是r的公约数)欧拉函数是用来计算1,2,3r中有多少个数中与r互为质数。定义4:两个数a,b分别被m除,如果所得的余数相同则a和b对于模m是同余的记作a=a(modm)。2.2 RSA算法基础2.21产生素数(1)反素数n必不能被2- (实际上一个数最大公约数小于或等于 )之间所有素数的整数。(2)除2以外所有素数为奇数,有素数的定义来决定算法a、令n从3开始(3是素数)b、每次增加2 n=n+2c、n被所有小于等于 的素数整除若不存在被整除的数则n为奇数2.22求最大公约数设b,c为整数

11、b0,c0,bc,c的最大公约数记作gcd(b,c)可以利用欧几里得算法:每次余数为除数除以上一次的除数直到余数为0为止,则上次的余数为最大公约数,可以现设b为上次的除数,c为余数,按欧几里得算法求出gcd(b,c)。2.23求素数运算法设a.b=1(modr)即a=吧(modr)已知a求b称求a对于模r的乘运b,并称a与b对r互为求逆,写成b=modr/a。在求乘逆运算时可以利用欧几里得算法,即重新使用带余数出发但求最大公约数不同,即每次的余数为除数,除以上次的除数直到除到1为止。先令a位余数,r作为上次的除数,根据欧几里得算法,由数字归纳可以证明求a的乘逆b的公式为:b-1=0 b0=1

12、bj=bj-2-bj-1gj 其中j为整数从开始gj是rj/aj的整数部分当rj/aj的余数为1时,a的乘逆b=|bj|。3RSA的具体算法过程3.1模指数运算指数运算谁都懂,不必说了,先说说模运算。模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。 模指数运算就是先做指数运算,取其结果再做模运算。如好,现在开始正式讲解RSA加密算法。RSA的算法过程选择一对不同的、足够大的素数p,q。(1)计算n=pq。(2)计算f(n)=(p-1)

13、(q-1),同时对p, q严加保密,不让任何人知道。(3)找一个与f(n)互质的数e,且1ef(n)。(4)计算d,使得de1 mod f(n)。这个公式也可以表达为d e-1 mod f(n)这里要解释一下,是数论中表示同余的符号。公式中,符号的左边必须和符号右边同余,也就是两边模运算结果相同。显而易见,不管f(n)取什么值,符号右边1 mod f(n)的结果都等于1;符号的左边d与e的乘积做模运算后的结果也必须等于1。这就需要计算出d的值,让这个同余等式能够成立。(5)公钥KU=(e,n),私钥KR=(d,n)。(6)加密时,先将明文变换成0至n-1的一个整数M。若明文较长,可先分割成适当

14、的组,然后再进行交换。设密文为C,则加密过程为:。(7)解密过程为:。实例描述通过一个简单的例子来理解RSA的工作原理。为了便于计算。在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:3.2设计公私密钥(e,n)和(d,n)。令p=3,q=11,得出n=pq=311=33;f(n)=(p-1)(q-1)=210=20;取e=3,(3与20互质)则ed1 mod f(n),即3d1 mod 20。d怎样取值呢?可以用试算的办法来寻找。试算结果见下表:通过试算我们找到,当d=7时,ed1 mod f(n)同余等式成立。因此,可令d=

15、7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU =(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。3.3英文数字化。将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:则得到分组后的key的明文信息为:11,05,25。3.4明文加密 用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由CMe(mod n)得:因此,得到相应的密文信息为:11,31,16。3.5密文解密。用户B收到密文,若将其解密,只需要计算,即:用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的

16、原文“key”。4数字签名技术4.1什么是数字签名数字签名只有信息的发送者才能产生,别人无法伪造的一段数字串,它同时也是对发送者发送的信息的真实性的一个证明。 ISO 7498-2标准对数字签名是这样定义的:附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(如接收者)伪造。4.2数字签名的特征(1)、任何人都可以利用签名方的公匙验证签名的有效性。(2)、签名都具有不可伪造性,除了合法的签名方之外,任何人伪造其签名是困难的,由于只有签名方自己知道的私匙,只有签名方能用自己的私匙生成签名,因此签

17、名具有不可否认,签名方事后不能否认自己的签名。【1】3数字签名的原理为了实现网络环境下的身份鉴别、数据完整性认证和抗否认的功能,数字签名应满足以下要求:(1)签名者发出签名的消息后,就不能再否认自己所签发的消息;(2)接收者能够确认或证实签名者的签名,但不能否认;(3)任何人都不能伪造签名;(4)第三方可以确认收发双方之间的消息传送,但不能伪造这一过程,这样,当通信的双方关于签名的真伪发生争执时,可由第三方来解决双方的争执。对于一个典型的数字签名体系而言,它必须包含2个重要的组成部分:即签名算法(Signature Algorithm)和验证算法(Verification Algorithm)

18、。为了满足上述4点要求,数字签名体系必须满足2条基本假设:(1)签名密钥是安全的,只有其拥有者才能使用;(2)使用签名密钥是产生数字签名的唯一途径【5】4.3签名过程4.31.发送方签名过程发送方创建数字签名的过程如下:(1)为保证签名的速度,A先将原文进行单向HASH运算生成定长的消息摘要A (2)利用自己的私钥加密消息摘要得到数字签名A,并将数字签名附在原消息后面 (3)通讯时用户A将自己的原文和签名文一起通过网络送给通讯对方即用户B 4.32.接收方验证过程接收方B接收到发送方的签名消息后,对的签名消息进行验证的过程如下:(1)将消息中的原消息与数字签名分离出来 (2)使用A的公钥解密数

19、字签名得到摘要 (3)利用与发送方A相同的散列函数重新计算原消息的摘要 (4)比较解密后获得的消息摘要A与重新计算产生的消息摘要B,若相等则说明消息在传输过程中没有被篡改,否则消息不可靠。4.4 数字签名的算法。 Digital Signature Algorithm(DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(Digital SignatureStandard)数字签名标准。DSS是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何

20、削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。【7】算法中应用了下述参数: p:L bits长的素数。L是64的倍数,范围是512到1024; q:是p - 1的160bits的素因子; g:g = h(p-1)/q) mod p,h满足h 1; x:秘密密钥,正整数,x q; y:y = gx mod p ,( p, q, g, y )为公钥; k为随机数,0kq; H( x ):One-Way Hash函数。 DSS中选用SHA( Secure Hash Algorithm )。 p, q, g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。 签名过程如下:1

21、. P产生随机数k,k q; 2. P计算 r = ( gk mod p ) mod q s = ( k(-1) (H(m) + xr) mod q 验证过程: 签名结果是( m, r, s )。 3. 验证时计算 w = s(-1)mod q u1 = ( H( m ) * w ) mod q u2 = ( r * w ) mod q v = ( gu1 * yu2 ) mod p ) mod q 若v = r,则认为签名有效。5RSA性能的分析5.1RSA的优点5.11RSA的速度由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺

22、陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。5.12RSA的选择密文攻击RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装( Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构: ( XM )d = Xd *Md mod n 5.13RSA的公共模数攻击若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那么该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则: C1 = Pe1 mod n C2 = Pe2 mod n 密码分析者知道n、e1、e2、C1和C2,就能得到P。 因为e1和e2互质,故用Euclidean算法能找到r和s,满足: r * e1 + s * e2 = 1 假设r为负数,需再用Euclidean算法计算C1(-1),则 ( C1(-1) )(-r) * C2s = P mod n 另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e和d,而无需分解模数。解决办法只

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论