浅议加密系统中的RSA算法

时间:2022-07-14 04:29:31

浅议加密系统中的RSA算法

【摘 要】RSA算法是第一个能同时用于加密和数字签名的算法,算法原理容易理解和对明文进行操作也比较方便。作为公开密钥密码体制的RSA算法,从提出到现在已近二十年,是被研究得最广泛的公钥算法,经历各种的考验,被认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。RSA算法解决了大量网络用户密钥管理的难题,能更好适应计算机网络环境,这是公钥密码系统相对于对称密码系统最突出的优点。

【关键词】RSA算法;加密算法;解密算法;公钥密码

一、密码系统原理

密码系统的工作过程是,发送方使用加密密钥Ke和加密算法E对明文M进行加密,得到密文C=E(Ke,M),然后进行传送密文C,接收方使用解密密钥Kd(与加密密钥Ke成对)和解密算法D对密文进行解密,得到原来的明文M=D(Kd,C)。对于不知道Kd的第三方,由密文C破解出明文M(解密),在实际操作上市很难的。公开密钥密码体制的加密密钥Ke与解密密钥Kd是不同的,只有解密密钥是保密的,我们可以称之为私人密钥,而加密密钥是完全公开的,我们可以称之为公共密钥,这样的密码系统就是我们要讲道德非对称密码体制。由于我们只对私人密钥保密,所以对于从加密密钥破解出密钥的过程必须设计足够复杂,难以实现破解,这样才可以保证我们的密码体制是安全。使用RSA加密系统,可以解决通用密钥系统密钥管理的问题,即对应于各个使用者的加密密钥(公共密钥)是公开的,可以像我们使用的电话薄一样,把它记录在文件里面,文件保存在密钥中心。各使用者只需要保存一个只有自己使用的解密密钥(私人密钥),这样就很方便的解决了密钥管理的问题,通过计算机网络,与其他用户对象进行通信时,为了保密,就可以显示出公开密钥密码体制的优越性。例如:与A秘密通信时,可以使用A的公共密钥Kea进行生成密文C=E(Kea,M),传输给A,A收到密文C以后,使用只有自己知道的私人密钥Kda,通过RSA解密算法,计算出明文M=(Kda,C)。通过使用这样的方式,可以与任何对象进行秘密通信。RSA算法作为最早公开密钥密码的代表是如何实现的?RSA算法的密码体制安全是怎么体现的?我来看RSA算法的加密和解密原理。

二、RSA算法加密和解密原理

RSA算法是利用质因数分解的困难性实现加密的一种的算法.在RSA算法中,分别使用两个正整数作为加密密钥和解密密钥。

现在假设加密密钥为e和n;解密密钥为d和n,其中,e和n的值是公开的,而d的值是保密的。加密实现:对文件进行加密时,首先将明文转换成0到(n-1)之间的整数M,若明文比较长,可以进行适当的分割,把分割的每个块再进行转换。从明文到密文的加密过程和从密文到明文的解密过程。RSA算法是使用下面的公式完成:加密:C=E(M)=Me mod n;解密:M=D?=Cd mod n;加密和解密公式的含义就是,求M的e次幂被n除得到余数和C的d次幂被n除得到余数。

1.加密密钥和解密密钥生成:

选定两个充分大的素数p与q,其乘机为n,此处的素数p与q必须保密,获取n的值:n=p*q;

2.解密密钥d,可以通过公式gcd

(d,(p-1)*(q-1))=1获取,d的选取是很容易的,例如,所有大于p和q的质数都可用。即求出S=(p-1)*(q-1)的乘机,在找出与S互为质数的数值,此值为解密密钥(d,n)。

3.加密密钥e,可以通过公式e*d=1mod

(p-1)*(q-1),即e与d的乘积以(p-1)*(q-1)作除数整除,余数等于1.这样就可以得到加密密钥(e,n)。

4.RSA加密原理实例演示:选定两个的素数值,假设p=47,q=59,n=p*q=47×59=2773;

S=(p-1)*(q-1)=46×58=2668,任取一个与S互为质数的整数157,获得解密密钥为(157,2773)求出满足公式e×157=1(mod2668)的整数,求得e=17,加密密钥为(17,2773)从而可以得出:加密密钥(公共密钥):e=17,n=2773

解密密钥(公共密钥):e=17,n=277

三、明文加密演示

为了实现对明文进行加密,我还需要对字符进行编码,可以按英文字母排列顺序进行编码,现在我们假设编码分别为:空格键=00,A=01,B=02,C=03,…,Z=26。现在有下列明文:ITS ALL GREEK TO ME,使用上述编码方案写出明文代码,并按2个字符(4位数值)进行分组,结果为:0920 1900 0112 1200 0718 0505 1100 2015 0013 0500,按照上述给出的加密密钥进行加密,对每一个4位数进行加密,按照上述的加密原理,对上述明文进行加密,获取第一个4位数加密的密文:C=E(M)=Me mod n=(0920)17=0948mod 2773,即得到0920的密文是0948,使用同样的方法依次对上面明文进行加密,得出的密文如下:0948 2342 1084 1444 2663 2390 0778 0774 0219 1655。密文传送完成后,接收方如何进行解密呢?我们上述解密原理,根据上述给出的解密密钥,可以按照公式M=D?=Cd mod n,然后再对每一个4位数进行解密,得到第一个4位数密文的明文:M=D?=Cd mod n=(0948)157=0920mod 2773,按照此法依次解密就可以得到原来的明文,从而可以完成明文加密和解密的过程。完成数据信息通过网络传输,对数据信息提供安全保障,保护了电子商务安全交易安全。

四、RSA优点和缺点

在RSA算法中,作为加密密钥一部分的n是公开的,对n进行质因数分解,就可以获取p与q的值,从而破解出解密密钥d,但是,当n的数值大到一定程度,从n分解质因数获取p与q的值,计算量很大。以至于不可以实现。实际操作时,对n的数值进行质因数分解,我没使用目前知道比较快速的算法(步数=exp{ln(n)*ln[ln(n)]}0.5)进行分解,所需要时间也很庞大,现在假设计算一步所需要时间为1?s,质因数分解所需要的时间,见下表:

通过上面的表格可以看出,考虑到现在计算机速度快的因素,当n的数值达到200位时,依靠质因数分解进行破解出p与q的值,是不可能的了,我们可以看出使用RSA密码体制是非常安全的。RSA除了非常安全的优点外,另外RSA算法进行操作十分简单,可以将加密密钥用电话簿的方式印出,如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发出即可。

在RSA算法的使用中也有一定的缺点,其表现为:

1.产生密钥很麻烦,受质数产生技术的限制,很难做到一次一密的效果。

2.速度太慢,由于RSA的分组长度太大,为保证安全性,n至少也要600bits以上,使运算代价很高,尤其是速度较慢,况且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化,因此,使用RSA只能加密少量数据。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。

五、概述

公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,该算法也已经在互联网的许多方面得以广泛应用,包括在安全接口层(SSL)标准,方面的应用。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。

参考文献:

[1]曹衍龙,王杰.UML2.0基础与RSA建模实例教程[M].人民邮电出版社,2011.

[2]段刚.加密与解密[M].电子工业出版社,2008(3).

上一篇:普通物理教学中学生学习兴趣的激发 下一篇:日本绿色贸易壁垒对我国农产品出口的影响及对...