RSA密码体制的实现及数字签名技术的应用

RSA密码体制的实现及数字签名技术的应用
RSA密码体制的实现及数字签名技术的应用

RSA密码体制的实现及数字签名技术的应用

摘要

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

关键词:RSA算法;加密;解密;RSA数字签名

Abstract

With the development of the 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 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 identifies 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 signature

1引言

1.1密码学应用的相关背景

现代密码学已成为信息安全技术的核心,密码学是以研究通信安全保密的学科,即研究对传输信息采用何种秘密的变换以防止第三者对信息的窃取。密码学包括两个分支:密码编

码学和密码分析学。密码编码学主要研究对信息进行交换,以保护信息在信道的传递过程中不被他人窃取、解密和利用的方法,而密码分析学则与密码编码学相反,它主要研究如何分析和破译密码。两者之间既相互对立又相互促进。密码体制的分类有很多,其中一种是根据加密算法和解密算法所使用的密钥是否相同,可以将密码体制分为对称密钥密码体制(单钥密码体制)和非对称密钥密码体制(公钥密码体制),这两种密码体制各有自己的长处和短处,因此现在采用了两种的混合体。公钥密码体制的特点是:接收方B产生一对密钥(PK 和SK);PK公开,SK保密;从PK推出SK是很困难的;A、B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息,加密后的信息可通过任何不安全信道发送。B收到密文信息后,用自己私钥解密恢复出明文。公钥密码体制已成为确保信息的安全性的关键技术。RSA公钥密码体制到目前为止还是一种被认可为安全的体制。【3】RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(Secure Electronic Transactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动电话和存储卡的验证功能芯片等,大多数使用RSA技术。【6】

1.2使用RSA加密的意义

随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗成为非常重要的问题。在计算机通信系统中,维护电子文档的安全也成为至关重要和非常敏感的问题。为保护信息的安全,数字签名应运而生,它是现代密码学主要研究的内容之一。目

【4】在公钥密码体制中,前关于数字签名的研究主要集中点是基于公钥密码体制的数字签名。

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

1.21什么是RSA加密

RSA(Rivest-Shamir-Adelman)加密体制是一种公开的密码体制。【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:欧拉系数Q(r)定义为Q(r)=r(1—1/p1)(1—1/p2)(1—1/p2)(1—1/pn)(p1,p2……pn是r的公约数)欧拉函数是用来计算1,2,3……r中有多少个数中与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+2

c、n被所有小于等于的素数整除

若不存在被整除的数则n为奇数

2.22求最大公约数

设b,c为整数b>0,c>0,b>c,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 b j=bj-2-b j-1g j 其中j为整数从开始g j是r j/a j的整数部分当r j/a j的余数为1时,a的乘逆b=|b j|。

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)(q-1),同时对p, q严加保密,不让任何人知道。

(3)找一个与f(n)互质的数e,且1

(4)计算d,使得de≡1 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。若明文较长,可先分割成适当的组,然后再进行交换。设密文为C,则加密过程为:。

(7)解密过程为:。

实例描述

通过一个简单的例子来理解RSA的工作原理。为了便于计算。在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:3.2设计公私密钥(e,n)和(d,n)。

令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3与20互质)则e×d≡1 mod f(n),即3×d≡1 mod 20。

d怎样取值呢?可以用试算的办法来寻找。试算结果见下表:

通过试算我们找到,当d=7时,e×d≡1 mod f(n)同余等式成立。因此,可令d=7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU =(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。

3.3英文数字化。

将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:

则得到分组后的key的明文信息为:11,05,25。

3.4明文加密

用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由C≡Me(mod n)得:

因此,得到相应的密文信息为:11,31,16。

3.5密文解密。

用户B收到密文,若将其解密,只需要计算,即:

用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。

4数字签名技术

4.1什么是数字签名

数字签名只有信息的发送者才能产生,别人无法伪造的一段数字串,它同时也是对发送

者发送的信息的真实性的一个证明。ISO 7498-2标准对数字签名是这样定义的:附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据或变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(如接收者)伪造。

4.2数字签名的特征

(1)、任何人都可以利用签名方的公匙验证签名的有效性。

(2)、签名都具有不可伪造性,除了合法的签名方之外,任何人伪造其签名是困难的,由于只有签名方自己知道的私匙,只有签名方能用自己的私匙生成签名,因此签名具有不可否认,签名方事后不能否认自己的签名。【1】

3数字签名的原理

为了实现网络环境下的身份鉴别、数据完整性认证和抗否认的功能,数字签名应满足以下要求:

(1)签名者发出签名的消息后,就不能再否认自己所签发的消息;

(2)接收者能够确认或证实签名者的签名,但不能否认;

(3)任何人都不能伪造签名;

(4)第三方可以确认收发双方之间的消息传送,但不能伪造这一过程,这样,当通信的双方关于签名的真伪发生争执时,可由第三方来解决双方的争执。

对于一个典型的数字签名体系而言,它必须包含2个重要的组成部分:即签名算法(Signature Algorithm)和验证算法(V erification Algorithm)。为了满足上述4点要求,数字签名体系必须满足2条基本假设:

(1)签名密钥是安全的,只有其拥有者才能使用;

(2)使用签名密钥是产生数字签名的唯一途径【5】

4.3签名过程

4.31.发送方签名过程

发送方A创建数字签名的过程如下:

(1)为保证签名的速度,A先将原文进行单向HASH运算生成定长的消息摘要A

(2)利用自己的私钥加密消息摘要得到数字签名A,并将数字签名附在原消息后面

(3)通讯时用户A将自己的原文和签名文一起通过网络送给通讯对方即用户B

4.32.接收方验证过程

接收方B接收到发送方A的签名消息后,对A的签名消息进行验证的过程如下:

(1)将消息中的原消息与数字签名分离出来

(2)使用A的公钥解密数字签名得到摘要

(3)利用与发送方A相同的散列函数重新计算原消息的摘要

(4)比较解密后获得的消息摘要A与重新计算产生的消息摘要B,若相等则说明消息在传输过程中没有被篡改,否则消息不可靠。

4.4 数字签名的算法。

Digital Signature Algorithm(DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST 作为DSS(Digital SignatureStandard)数字签名标准。DSS是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。【7】算法中应用了下述参数:p:L bits长的素数。L是64的倍数,范围是512到1024;

q:是p - 1的160bits的素因子;

g:g = h^((p-1)/q) mod p,h满足h < p - 1, h^((p-1)/q) mod p > 1;

x:秘密密钥,正整数,x < q;

y:y = g^x mod p ,( p, q, g, y )为公钥;

k为随机数,0〈k〈q;

H( x ):One-Way Hash函数。

DSS中选用SHA( Secure Hash Algorithm )。p, q, g可由一组用户共享,但在实际应用中,使用公共模数可能会带来一定的威胁。签名过程如下:

1. P产生随机数k,k < q;

2. P计算r = ( g^k 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 = (( g^u1 * y^u2 ) mod p ) mod q

若v = r,则认为签名有效。

5RSA性能的分析

5.1RSA的优点

5.11RSA的速度

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右。

5.12RSA的选择密文攻击

RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装( Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )^d = X^d *M^d mod n

5.13RSA的公共模数攻击

若系统中共有一个模数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那么该信息无需私钥就可得到恢复。设P为信息明文,两个加密密钥为e1和e2,公共模数是n,则:C1 = P^e1 mod n C2 = P^e2 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) * C2^s = P mod n 另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有利于攻击者计算出其它成对的e’和d’,而无需分解模数。解决办法只有一个,那就是不要共享模数n。RSA的小指数攻击。有一种提高RSA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值【8】。

5.2RSA 加密算法的缺点

(1)RSA的安全在理论上存在一个空白,即不能确切的知道他的安全性能如何。人们能得出的结论是:对RSA的攻击的困难程度不比大数分解更高,因为一旦分解出n的因子p、q,就可以攻破RSA的密码体制。【1】

(2)安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。3)速度太慢,由于RSA的分组长度太大,为保证安全性,n 至少也要600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA 来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。【8】

参考文献

1计算机系统安(全第二版)曹天杰张永平毕方明编著2信息技术安全导论陈克飞黄征编著

3应用密码学(美)Bruce Schneir 著

4信息安全原理与应用(第四版)(美)Charles P.Pfleeger 著5网络安全技术实用教程谭方勇编著

6https://www.360docs.net/doc/7116507588.html,/computer/other/200912/5051.html

7 https://www.360docs.net/doc/7116507588.html,/A/2003-12-03/64189.html

8 https://www.360docs.net/doc/7116507588.html,/view/7520.htm

相关主题
相关文档
最新文档