公钥加密技术的原理和RSA算法分析院系:计算机与信息工程学院专业:信息管理与信息系统姓名:张欢学号:20084070321Email:ahuanmagic@126.com-1-摘要网络安全从本质上来讲,就是网络上的信息安全,就是指网络系统中流动和保存的数据,不受到偶然的或者恶意的破坏、泄露、更改,系统连续正常的工作,网络服务不中断。从广义上来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全所要研究的领域。在这样一个全球电子互联,电脑病毒和电子黑客充斥,电子窃听和电子欺诈肆虐的时代,安全不再是问题的时代已经过去。随着社会的发展,如何保证计算机数据安全一直是研究的热点。信息安全的关键技术是密码技术,密码技术有对称加密技术和非对称加密技术之分。本文主要阐述公钥加密技术的原理,并对RSA公钥加密算法进行具体分析。关键词:公钥非对称加密RSA公钥加密-2-一、加密的概念数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示明文,通过这种途径来达到保护数据不被非法窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程【1】。二、公钥加密的方法计算机加密技术主要分为两大类:“对称式”和“非对称式”。对称式加密就是加密和解密使用同一个密钥,通常称之为“SessionKey”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法。非对称式加密算法就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,两个必需配对使用,缺一不可以打开加密文件。“公钥”以对外公布,“私钥”由持有人一个人秘密保存。因为对称式的加密方法假如是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被别窃听到。而非对称式的加密方法有两个密钥,且其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题【2】。在1976年,Diffie和Hellman首次公开提出了公钥加密思想。公钥算法基于数学函数,而不像对称加密算法那样是基于比特模式的简单操作。更为重要的是公钥加密系统是非对称的,它使用两个单独-3-的密钥。与此相比,对称的传统加密只使用一个密钥。使用两个密钥对于保密性、密钥分发和认证都产生了意义深远的影响。假如用户重复使用同样密钥,那么密钥同其它密码一样存在安全性的问题。即使用户私钥不对外公开也很难保证私钥长期的保密性。另外使用一个特定密钥加密的信息越多,提供给窃听者的材料也就越多,从某种意义上来讲也就越不安全了。因此,一般强调仅将一个对话密钥用于一条信息的传输中,或者建立定时更换密钥的机制以减小密钥泄漏的可能性【3】。公钥加密方案由6个部分组成:明文、加密算法、公钥、私钥、密文和解密算法。密钥对中的公钥是公开供其他人使用的,而只有自己知道私钥。通常的公钥加密算法根据一个密钥进行加密,根据另一个不同但相关的密钥进行解密。基本步骤如下:(1)每个用户都生成一对密钥用来对消息进行加密和解密。(2)每个用户把两个密钥中的一个放在公共寄存器或其他可访问的文件里,这个密钥便是公钥,另一个密钥自己保存。每个用户都收藏别人的公钥。(3)如果Bob希望给Alice发送私人消息,则他用Alice的公钥加密消息。(4)当Alice收到这条消息,她用私钥进行解密。因为只有Alice知道她自己的私钥,其他收到消息的人无法解密消息【4】。RSA和Diffie-Hellman是使用量最大的两种公钥算法,另外已被-4-商业接受的两种其他公钥算法是DSS和椭圆曲线密码。三、公钥加密算法举例——RSA公钥加密RSA公钥加密算法是目前使用最广泛的公钥加密算法。对于某一明文块M和密文块C,加密和解密有如下的形式:发送者和接收者都必须知道n和e的值,并且只有接收者知道d的值。RSA公钥加密算法的公钥KU={e,n},私钥KR={d,n}。该算法的步骤如下表:生成密钥选择p、qp和q都是素数,且p≠q计算φ(n)=(p-1)(q-1)选择整数egcd(φ(n),e)=1;1eφ(n)计算ddemodφ(n)=1公钥KU={e,n}私钥KR={d,n}加密明文Mn密文C=Memodn解密密文C明文M=Cdmodn开始时选择两个素数p和q,计算它们的积n作为加密和解密时的模。接着计算n的欧拉函数值φ(n)。φ(n)表示小于n且与n互素的正整数的个数。然后选择与φ(n)互素的整数e。最后,计算e关于模φ(n)的乘法逆元d。C=MemodnM=Cdmodn=(Me)dmodn=Medmodn-5-举例:假设用户A已经公布了他的公钥,且用户B希望给A发送消息M。那么B计算C=Me(modn)并且发送C。当接收到密文时,用户A通过计算M=Cd(modn)解密密文。按下列步骤生成密钥(1)选择两个素数:p=17和q=11。(2)计算n=pq=17*11=187。(3)计算φ(n)=(p-1)(q-1)=16*10=160。(4)选择e,使得e与φ(n)=160互素且小于φ(n),我们选择e=7。(5)计算d,使得demod160=1且d160。正确的值是d=23,这是因为23*7=161=10*16+1。这样我们就得到公钥PU={7,187},私钥PR={23,187}。下面说明输入明文M=88时密钥的使用情况。对于加密,计算C=887mod187=11。对于解密,计算M=1123mod187=88【4】。四、结束语计算机网络在全球范围内得到了迅速发展,其应用几乎包括了人类生活工作的全部领域,它在带给我们前所未有的方便的同时,也给我们制造了大量的难题。为保证计算机网络系统的安全,应混合使用多种安全防护策略,同时也会发展出越来越多的安全解决技术,从而使得网络安全防范及管理水平不断提高。通过上述对加密技术的讨论,让我们了解并掌握一些方法,为自己创造一个相对更安全的环境来使用互联网。而现代科技飞速发展,-6-加密技术不断推陈出新,必定会有更多更完善的加密技术为我们服务。参考文献:【1】贾义、赵楠:《信息安全和RSA》,《教育理论与实践》,2009年第36期。【2】李兴明、何宏、王成友:《对我国信息安全的几点思考》,重庆工业高等专科学校学报》,2004年第5期。【3】杨海东、安宗旭:《加强全民动员,确保信息安全》,安徽电子信息职业技术学院学报》,2005年第2期。【4】WilliamStallings:《网络安全基础应用与标准》(第四版),2011年第1版。