基于RSA加密算法本科毕业设计论文.doc_第1页
基于RSA加密算法本科毕业设计论文.doc_第2页
基于RSA加密算法本科毕业设计论文.doc_第3页
基于RSA加密算法本科毕业设计论文.doc_第4页
基于RSA加密算法本科毕业设计论文.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

桂林理工大学本科毕业设计论文桂林理工大学guilin university of technology本科毕业设计(论文)题目: 数据通信中的rsa加密算法的设计与实现 摘 要数据通信是依照一定的通信协议,利用数据传输技术在两个终端之间传递数据信息的一种通信方式和通信业务。随着数据通信的迅速发展而带来了数据失密问题。信息被非法截取和数据库资料被窃的事例经常发生,在日常生活中信用卡密码被盗是常见的例子。所以数据加密成为十分重要的问题,它能保证数据的安全性和不可篡改性。 rsa加密算法以它难以破译的优点,被广泛的使用在电子商务和vpn中。 本文针对非对称性加密rsa算法,采用软件visual c+6.0进行程序编写。根据模乘法运算和模指数运算的数学原理所编写的程序在进行测试后,能够通过输入两个素数进行运算从而实现明文与密文之间的转换,然后通过对公钥和私钥的管理,对所传输的数据进行保护,让数据只能由发送者和接收者阅读,以达到数据通信中数据无法被他人破译的目的。关键词:rsa算法,数据通信,加密, 解密。data communication of the rsa encryption algorithm in the design and implementationteacher:chen fei student:lu huiabstractdata communications in accordance with certain communication protocols, the use of data transmission technology in the transmission of data between two terminals as a means of communication of information and communication business. with the rapid development of data communications and has brought the issue of data compromise. unlawful interception of information and database information on frequent instances of theft, credit card in their daily lives stolen passwords is a common example. therefore, data encryption has become a very important issue, it can ensure data security and can not be tamper with nature. rsa encryption algorithm to the merits of it difficult to decipher, was widely used in the e-commerce and vpn. in this paper, asymmetric rsa encryption algorithm, the use of software for visual c + +6.0 programming. according to die multiplication and modular exponentiation by the mathematical principles in the preparation of test procedures can be adopted for the importation of two prime numbers and computing in order to achieve explicit conversion between the ciphertext, and then through a public key and private key management, for the transmission of data protection, so that data can only be made by the sender and the recipient to read, in order to achieve data communications data can not be the purpose of deciphering the others.keywords: rsa algorithms, data communication, encryption, decryption.目录摘 要iabstractii第1章 引言11.1题目背景11.2国内外现状11.3本课题的主要工作2第2章 数据通信中的加密技术32.1数据加密技术的起源和发展32.2数据加密的方法32.3密钥的管理52.4数据加密的标准52.5数据加密的应用62.6本章小结6第3章 数据加密中的rsa算法83.1 rsa公钥密码体制概述83.2 rsa公钥密码体制安全性分析93.3 rsa算法的缺点103.4 本章小结10第4章 rsa数据加密中的实现114.1随机大素数的产生114.1.1素数的分布114.1.2大素数生成的方法124.1.3 miller rabin素性测试法124.1.4基于miller rabin素性测试法的新的素数生成方法134.2密钥的生成及加密和解密144.2.1最大公因子gcd运算144.2.2模n求逆元运算164.2.3模n的大数幂乘运算174.2.4模n的大数幂乘运算174.3 rsa算法分析184.3.1 rsa安全性分析184.3.2 rsa时间复杂度分析194.4本章小结19第5章 rsa算法的实现215.1选定组合算法的准则215.2模幂组合算法的实现215.3试验与运行结果22总结24参考文献25致谢26附录2726第1章 引言1.1题目背景 在当今的信息社会中,每天都有大量的信息在传输、交换、存储和处理,而这些处理过程几乎都要依赖强大的计算机系统来完成。一旦计算机系统发生安全问题,就可能造成信息的丢失、篡改、伪造、假冒,以及系统遭受破坏等严重后果。因此,如何保证计算机系统的安全,是当前一个需要立即解决的十分严峻的问题。 通常保障网络信息安全的方法有两大类:一是以防火墙技术为代表的被动防卫型,二是建立在数据加密,用户授权确认机制上的开放型网络安全保障技术。 防火墙技术,就是在局域网与外部网络之间设立一个服务器,将它们之间隔离开来,建立起一个安全网关,从而保护内部网免受非法用户的侵入。 数据加密技术是可以与防火墙配合使用的一种安全技术,这种技术可以提高信息系统及数据的安全性和保密性、防止秘密数据被外部破解所采用的主要技术手段之一。按其不同的作用,数据加密技术主要分为数据传输、数据存储、数据完整性的鉴别以及密钥管理技术四种。加密技术是通过计算机网络中的加密机构,把网络中的各种原始数字信息(明文)按照某种特定的加密算法变换成与明文完全不同的数字信息,即转换成密文。计算机网络中的加密技术主要采用链路加密和端对端加密等两种方式。通常情况是将这两种加密模式结合起来共同使用,即可保证网内用户的数据安全,又可提供用户之间的身份鉴别与认证。1.2国内外现状rsa被广泛应用于各种安全或认证领域,如web服务器和浏览器信息安全、email的安全和认证、对远程登录的安全保证和各种电子信用卡系统的核心。硬件上,如安全电话、以太网卡和智能卡也多采用rsa技术。而几乎所internet安全协议如s/mime,ssl和s/wan都引入了rsa加密方法。is09796标准把rsa列为一种兼容的加密算法,使得rsa的应用目前非常广泛。rsa模数n=pq是rsa算法的安全性的核心。如果模数n被分解,则rsa体制立刻被攻破。如果rsa算法是安全的,那么n=pq必须足够大,使得因式分解模数n在计算上不可行的。基于安全性考虑,实际应用中所选择的素数p和q至少应该为100位以上的十进制数,相应的模数n=pq将是200位的十进制数。c e shannon建议使用至少100位长度的大素数,从而得到长度为200位以上的大整数模数n。rsa算法的缺点是加密速度慢,模数n的长度越大,加/解密运算所需要的时间就越长,算法实现的速度也就越慢。为了尽可能使用大的模数而又不影响系统实现的速度,实际应用中通常使用专门的硬件实现rsa算法。最重要的影响速度的实现细节是加/解密中的大数运算。大数模幂乘运算是rsa算法的核心运算,也是运算速度提高的关键。高效的大数模幂乘算法可以有效提高系统速度。需要每做一次平方或乘法运算后,就要作一次模运算,当n的值很大时,做一次模运算所需的时间比做一次平方或一次乘法所需的时间更多,是影响算法实现速度的关键。但在实际加密解密过程中,n可能是几个数的乘积,如rsa算法中,n是两个大素数的乘积。这时可通过中国剩余定理进行变换,降低指数的数量级.1.3本课题的主要工作 本文选择rsa数字加密体制为研究对象,讨论了rsa实现过程中,每一步的具体实现算法。rsa加密算法是第一个成熟的、迄今为止理论上最成功的公开钥密系统。它的安全性基础是数论和计算复杂性理论中的下述论断:求两个大素数的乘积在计算上是容易的,但若要分解两个大素数的积而求出它的素因子则在计算上是困难的。但是,在进行加密和解密运算时的整数求幂运算耗时很大,影响了运算速度,因此,人们提出了多种实现算法,以加快运算速度,例如本文提到的smm算法和指数2k进制化法等。这些算法都是从某一方面入手,在一定程度上加快了运算速度。本文通过分析这些算法的特点,提出了一种综合性的组合方法,在原有算法的基础上更进一步地加快了运算速度。 本文首先介绍了加密算法的数学基础,从数学理论上分析了rsa算法的原理;然后通过c+程序进行实现。 第2章 数据通信中的加密技术随着信息化的应用水平不断提高,尤其是电子政务和电子商务的蓬勃发展,互联网络的信息安全问题越来越引起全社会的重视。数字化办公和生活面临一系列的严重“威胁”。由于互联网的开放性,我们面临各种各样的安全威胁。网上传输的邮件可能被截取,信息的内容可能被篡改;电子商务过程中,信用卡帐号和密码可能暴露在第二者面前;一些人可能会假冒合法用户身份或者假冒网站来用于一些非法目的,而事后又对自己的行为进行抵赖:系统可能由于黑客的攻击而无法提供有效的服务。这些问题给计算机从业人员揭示信息安全问题的严重性。 因此如何保证信息的机密性、完整性、不可抵赖性、有效性,成为网络安全关注的核心问题。人们由此采用防火墙和数据加密等技术来保障网络本身的安全。2.1数据加密技术的起源和发展 早在互联网出现之前,密码技术已经广泛应用于军事和民用方面。有记载的最早的密码系统可能是希一腊历史学家polybios发明的polvbios格板,它是一种替换密码系统。人们很早以前将密码系统分为代替和换位密码两种。 从密码史的发展来看,1949年,信息论的创始人仙农(c. e.shannon)发表了一篇著名的文章,论证了一般经典加密方法都是可以破解的。到了60年代,随着电子技术、信息技术的发展及结构代数、可计算性理论和复杂度理论的研究,密码学又进入了一个新的时期。我们当前所应用的密码体制,都是属于近代非经典的密码体制。70年代后期出现的数据加密标准des(datafncryptionstandard)和公开密钥密码(非对称密码)体制(publickeycrypto一system)是近代密码学发展史上的两个重要里程碑。目前,最著名公开密钥密码体制是rsa体制,它是由美国mit的二位科学家rivest, shamir不ii adleman于1976年提出的,是一种基于数论中大数分解的理论。由于rsa的安全性和实用性,它是当前使用最广泛的公钥密码系统,即可以进行加密,也可以进行数字签名。保障了数据的完整性、机密性,解决了身份认证问题和不可抵赖性问题.2.2数据加密的方法 数据加密的方法通常分为两大类:对称式加密体制 (常规密钥密码体制)和非对称式加密体制(公开密钥密码体制)。对称式加密就是加密和解密使用同一个密钥,通常称之为session key”这种加密技术曾经被广泛采用,其原理如图2-1所示。如美国政府所采用的des加密标准就是一种典型的“对称式”加密法,它的session key长度为56位。发送者加 密相同的密钥加密的信息接受者解 密明文明 文2-1 对称密码算法示意图非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥夕,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。它的优越性就在这里,因为对称式的加密方法如果是在网络上传输加密文件就很难把密钥告诉对方,不管用什么方法都有可能被他人窃听到。而非对称式的加密方法有两个密钥,目_其中的“公钥”是可以公开的,也就不怕别人知道,收件人解密时只要用自己的私钥即可以,这样就很好地避免了密钥的传输安全性问题。非对称加密工作原理如图2-2所示。加密密钥eb明 文明文解 密接受者加密的信息加密密钥eb(公开)加 密发送者解密密钥db(保密)ebdbdb2-2 非对称性密码算法示意图2.3密钥的管理密钥既然要求保密,这就涉及到密钥的管理问题,密钥的管理涉及到以下几个方面:(1)密钥使用的时效和次数如果用户使用同样密钥多次与其他用户交换信息,那么密钥也同其它任何密码一样存在着一定的安全性。虽然用户的私钥是不对外公开的,但是也很难保证私钥长期的保密性,很难保证长期以来不被泄漏。如果入侵者偶然地知道了用户的密钥,那么用户曾经和其他用户交换的每一条消息都不再是保密的。另外使用一个特定密钥加密的信息越多,提供给窃听者的材料也就越多,从某种意义上来讲也就越不安全了。因此,一般强调仅将一个对话密钥用于一条信息中或一次对话中,或者建立一种按时更换密钥的机制以减小密钥暴露的可能性。(2)多密钥的管理假设在某机构中有100用户,如果任意两个用户之间可以进行秘密对话,那么总共需要多少密钥呢?每个人需要知道多少密钥呢? 如果任何两个用户之间通信需要不同的密钥,则总共需要4950个密钥,而且每个人应记住99个密钥。如果机构的用户更多,这种办法就显然过于平庸。kerberos提供了一种解决这个较好方案,它是由mit发明的,使保密密钥的管理和分发变得十分容易,但这种方法本身还存在一定的缺点。为能在互联网上提供一个实用的解决方案,kerberos建立了一个安全的、可信任的密钥分发中心(key distribution center,kdc),每个用户只要知道一个和kdc进行会话的密钥就可以了,而不需要知道成百上千个不同的密钥。2.4数据加密的标准对称密钥加密算法des (data encryption standard)是由工bm公司在70年代发展起来的,并经政府的加密标准筛选后,于1977年被正式批准并作为美国联邦信息处理标准。des使用64位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。64位密钥中,有8位奇偶校验位,实际密钥长度只有56位。每轮编码时,一个48位的“每轮”密钥值由_5 6位的完整密钥得出来。des用软件进行解码需用很长时间,而用硬件解码速度非常快。对于des的最后一次评估是在1994年,美国己决定1998开始,不在使用des。目前,新的加密标准aes正在征集、评估和制定中。尽管如此,des对于推动密码理论的发展和应用起了重大作用。rsa是另外一种非常著名的公钥加密体制,由ron rivest, adishami:以及leonard adleman于1978年提出,一该体制至今仍被公认为是一个安全性能良好的密码体制。该算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开的为“公钥”(public key),另一个不告诉任何人,称为“私钥”(private key)。这两个密钥是互补的,也就是说用公钥加密的密文可以用私钥解密,反过来也一样。des被公认为世界上第一个实用的密码算法标准。它的出现适应了电子化和信息化的要求,是一种加/解密标准,适合于硬件实现,因此它的算法被制成专门的芯片,应用于加密机中。des现在仍被广泛应用于金融和商业领域。rsa则是非对称密钥的实际标准。在实际应用中,通常是des和rsa加密算法同时使用。由于des加确牟密速度上的优势,因此数据的加/解密通常是用des完成的,而 des使用的密钥是通过应用rsa算法生成的数字信封来传递的,保障了密钥传递的安全性。2.5数据加密的应用 数据加密技术的应用是多方面的,但最为广泛的还是在电子商务和vpn上的应用。 (1)在电子商务方面的应用 电子商务(e-business)允许顾客和商家可以在网上进行各种商务活动,同时不必担心相应的商务信息被盗用,比如信用卡号码、商品报价等。rsa的出现,提高网上交易的安全性,从而使电子商务走向实用成为可能。 netscape公司提供了一种基于rsa的安全套接层协议ssl(secure sockets layer)即为数据加密技术在电子商务方面应用的一个典型案例。 ssl2. 0用电子证书(electric certificate)来实行身份进行验证后,双方就可以用保密密钥进行安全的会话了。它同时使用“对称”和“非对称”加密方法,在客户与电子商务的服务器进行沟通的过程中,客户会产生一个session key,然后客户用服务器端的公钥将session key进行加密,再传给服务器端,在双方都知道session key后,传输的数据都是以session key进行加密与解密的,但服务器端发给用户的公钥必需先向有关发证机关中请,以得到公证。 ssl协议是一个比较优秀而久经考验的网络安全协议,一般情况下能够抵抗窃听、篡改、会话劫持、中间人等多种攻击手段。协议的设计模式为“契入式”,与高层应用协议和低层网络协议无关,可以方便地集成到多种网络环境中去,可根据不同的安全需求,选择协议提供得多种密码算法和密钥交换协议。ssl目前在web和电子商务中的应用相当广泛。(2)加密技术在vpn中的应用 目前,跨地域国际化的机构越来越多。一个机构在多个城市、国家设有分支机构。每一个机构都有自己的局域网lan (local areanetwork)。事实上,很多机构一般租用专用线路来连结这些虚拟的局域网。这种情况下,机构内部的重要文件、数据是通过广域网进行传输,因此网络的安全问题最为重要。具有加密/解密功能的路由器等设备的出现,使通过广域网组成局域网成为可能,即所谓的的虚拟专用网(virtual private network, vpn)。当数据离开发送者所在的局域网时,该数据首先被用户湍连接到互联网上的路由器进行硬件加密,数据在互联网上是以加密的形式传送的,当达到目的lan的路由器时,该路由器就会对数据进行解密,这样目的lan中的用户就可以看到真正的信息了。而加密解密过程对于普通的非网络管理用户来说,是透明的,既普通用户无需考虑vpn及加密解密的相关问题。因此,对普通用户来说, vpn在使用过程中和一般lan没有任何区别。2.6本章小结本章对数据加密技术作了简要的介绍,其中包括数据加密技术的起源、发展,数据加密技术的概念,密钥管理等密码技术各方面的内容。此外还对数字签名技术作了介绍。数字签名技术实际上是数据加密技术在应用上的延伸,是目前网上交易活动中,身份验证技术的重要组成部分。而基于公开密钥机制的数字签名技术在应用中,占有统治地位,尤其是基于rsa公钥的数字签名体制在应用中更为广泛。在接下来的一章,就将详细介绍基于rsa的数字签名体制。第3章 数据加密中的rsa算法目前企业面临的计算环境和过去有很大的变化,许多数据资源能够依靠网络来远程存取,而且越来越多的通讯依赖于公共网络公共网络(如 internet),而这些环境并不保证实体间的安全通信,数据在传输过程可能被其它人读取或篡改。加密将防止数据被查看或修改,并在原本不安全的信道上提供安全的通信信道,它达到以下目的:保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。3.1 rsa公钥密码体制概述 rsa公钥密码体制于1978年,由美国麻省理工学院rivest,shami:和adleman二人提出的,至今为止仍被公认为是公钥密码体制中最优秀的加密算法,被认为是密码学发展史上的第二个里程碑.它是一种特殊的可逆摸指数运算的加密体制,其理论基础是数论中的一条重要论断:求两个大素数之积是容易的,而将一个具有大素数因子的合数进行分解却是非常困难的。除了用于加密之外,它还能用于数字签名和身份认证。rsa公钥密码体制过程描述如下:(1)选取两个大素数和.(2)计算(公开),欧拉函数)。(3)随机选取正整数e, ,满足, e是公开的加密密钥。(4)计算d,满足. d是保密的解密密钥。(5)加密变换:对明文,明文为(zn为明文空间)(6)解密变换:对密文,明文为可以证明,解密变换是加密变换的逆变换。例:(1)生成密钥:选择两个互质的质数; 取 ;由,得d=147;所以,保密的解密密钥为d=147,公开的加密密钥公钥为e=3,n=253;明文空间为(2)加密原文:假设原文m的数字为16_5,用公钥加密原文。(3)解码密文: a=c,由此可以看出rsa算法的一般过程。3.2 rsa公钥密码体制安全性分析rsa体制中,加密密钥e与大整数n是公开的,而解密密钥d与大素数p和q是保密的。虽然在rsa的加密与解密密钥建立后,p和q不再需要,但p和q也绝不能泄露。若n被分解,则也就不保密,e公开,d就可以计算出来,rsa便被破译。己知n,求得,则p和q可以求得。因为根据欧拉定理,又有据此列出方程:由以上方程组,可以求得p和q。因为p和q都是大素数,根据现在已知的结果,因子分解n是最好的算法,此时复杂性为:若n为200位于进制数,则用每秒107次运算的高速计算机,也要108年才能得到计算结果。可见,rsa的素数分解确实存在一定的难度。为安全起见,对p和q要求:p和q的相差不大;(p-1)和(q-1)有大素数因子;很小,满足这样条件的素数称做安全素数。rsa的出现使得大整数分解因式这一古老的问题再次被重视,近些年来出现的不少比较高级的因数分解方法使“安全素数”的概念也在不停的演化。所以,选择传统上认为是“安全素数”并不一定有效的增加安全性,比较保险的方法就是选择足够大的素数。因为数越大,对其分解因式的难度也就越大!对n和密钥长度的选择取决于用户保密的需要。密钥长度越大,安全性也就越高,但是相应的计算速度也就越慢。由于高速计算机的出现,以前认为己经很具安全性的512位密钥长度己经不再满足人们的需要。1997年,rsa组织公布当时密钥长度的标准:个人使用768位密钥,公司使用1024位密钥,而一些非常重要的机构使用2048位密钥。3.3 rsa算法的缺点rsa的缺点主要有: a)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。b)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。3.4 本章小结rsa算法在理论上的重大缺陷就是并不能证明分解因数绝对是困难的。rsa方法既可用于保密、也能用于签名和认证,许多流行的操作系统如微软、apple, sun和novell都在其产品上融入了rsa。同时,rsa也被广泛应用于各种安全或认证领域,如web服务器和浏览器信息安全、email的安全和认证、对远程登录的安全保证和各种电子信用卡系统的核心。硬件上,如安全电话、以太网卡和i智能卡也多采用rsa技术。而且几乎所有internet安全协议如smme, ssl不ii swan都引入了rsa加密方法。is09796标准把rsa列为一种兼容的加密算法,使得rsa的应用目前非常广泛。任何一种事物有出现、繁荣,也不可避免的会走向灭亡。在没有找到快速进行大整数分解因式方法的时候,rsa显示了不可比拟的优点。而当分解因式不再是难题的时候,rsa算法也就将失去存在的价值。第4章 rsa数据加密中的实现rsa算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字就是发明者的名字:ron rivest, adishamir 和leonard adleman, 但rsa的安全性一直未能得到理论上的证明, rsa的安全性依赖于大数的因子分解,但并没有从理论上证明破译rsa的难度与大数分解难度等价。即rsa的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是npc问题, rsa算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。rsa是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。rsa算法实现数据加密的主要步骤分为:1、获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥。2、加密。3、解密。4.1随机大素数的产生 公钥密码学需要大素数,因此,大素数的快速有效随机生成方法是公钥密码学中的一个重要问题,具有非常显著的实用价值。显然,通过对一个随机数进行因子分解,我们可以判断这个随机数是否为素数。如果这个随机数能被因子分解,则它不是素数,否则它一定是素数。但是,大素数的因子分解是一个复杂的问题,到现在还没有找到一个快速有效的算法来对大整数进行因子分解。因此,不能试图通过对随机数进行因子分解来生成大素数。正确的生成大素数的方法是对生成的随机数先测试它是否为素数,而不是对它进行因子分解。这种素性测试比因子分解要容易得多,己经有许多素性测试方法能够确定一个随机数是否为素数。如果合数通过一个素性测试的概率足够小,则这个素性测试就是很可靠的。实际上,对于许多素性测试方法,合数通过测试的概率可以受到人为的控制,即是可以把合数通过测试的概率设定的足够小。4.1.1素数的分布 要讨论素数的生成问题,首先要讨论素数的分布。素数的分布是极不均匀的,素数越大,分布也就越稀疏。 首先,存在无穷多个素数。对此,我们可以证明。假设正整数中只有k个素数,设为。令,则n1。如果n是素数,则显然n与都不相同,这与只有k个素数的假设相矛后。如果n不是素数,则n一定有一个素数因子, ,否则由于以及,所以,这与p是素数相矛盾。故p与都不相同,这与只有k个素数的假设想矛盾。因此素数有无穷多个。其次,我们可以根据素数定理,发现素数的分布情况。素数定理的描述为:设, 为不大于x的整数的个数,则根据素数定理,可以估计出长度为t位的素数大约有个。例如,一个长度为256位的随机数的素数的概率为而一个长度为64位的随机数的素数的概率为由此可见,位数越多,素数的分布越为稀疏。4.1.2大素数生成的方法产生素数的一般方法可以分为两类,即确定性素数产生方法和概率性素数产生方法。(1)确定性素数产生方法确定性素数产生方法产生的数必然是素数。然而其产生的素数却带有一定的限制。假若算法设计不佳,便容易构造出带有规律性的素数,使密码分析者能够分析出素数的变化,进而可以猜到该系统中使用的素数。此类方法主要有两类,即基于lucas定理和基于pocklington定理的确定性素数产生方法。这里简单介绍基于lucas定理的确定性素数产生方法。此方法需要求得素数n-1的全部素因子。lucas定理:设,存在一个正整数且,且对于n-1的每一个素q,均满足a,则n为素数。(2)概率性素数产生方法概率性素数产生方法产生的数仅仅是伪素数。其缺点在于,尽管其产生合数的可能性很小,但是这种可能性仍然存在:其优点是产生的伪素数没有规律性,而且产生的速度也比较快。此类方法是生成大素数的主要方法,其中著名有:miller rabin与solovay strassen算法等。本文讨论mill rabin算法。4.1.3 miller rabin素性测试法miller rabin素性测试法是在实际中应用非常广的一种素性测试方案,可以用来判定某随机数是否为素数。其定义如下:设是一个奇数,设,其中s是非负整数,是奇数,设,如果,或者存在一个r,,使得则称n通过以b为基的miller-rabin测试。下面是miller-rabin素性测试的依据,包括两个定理:定理一:设p是一个素数,对任意整数b,如果 ,则p一定可以通过以b为基的miller-rabin测试。定理二:如果n2是一个奇合数,则至多有个b,0b30)次miller rabin检测,则可以人为p是一个素数。大素数的选取对rsa系统的安全而言至关重要。一个直接方法是分解n,求出因子p与q,进而求得解前的分解能力大约为130位十进制数,但512比特(154位于进制数)模长的rsa体制的安全性已经受到一定的威胁。专家建比特(308位十进制数)模长。由于密码长度直接影响系统运行的速度,所以对要不是特别高的系统,可以适当的减少密码的长度。4.2密钥的生成及加密和解密为了建立密码系统,用户a需要完成以下各步骤(1)a产生两个大素数p和q; (2)a计算n=pq和;(3)a选择一个随机数,使得;(4)a计算;(5)a将n和a作为他的公钥直接公开;(6)加密变换和解密变换。由上述过程,我们可以看出rsa加密系统的主要工作为大素数的生成、最大公因子gcd、模n求逆和模n的大数幂乘的算法。上一节,已经讨论了大素数的生成算法,这里主要讨论最大公因子gcd、模n求逆和模n的大数幂乘的算法。4.2.1最大公因子gcd运算这里采用经典的euclid算法为基础进行运算c。这个算法就是公元前300年,欧几里德在其著作几何原本)中所阐述的求两个数的最大公约数的过程(即辗转相除法)。设定n和u两个正整数,则一定存在整数q和r使得n=qu+r,其中,不难看出,由此,我们得到求两个正整数的最大公因子的euclid算法如下:(1);(2)(3)如r=0,则;(4)如果r0,则,转第(2)步。以下对这一算法稍作改进:令为euclid算法中第i次对赋值后的值,为euclid算法中第i次对赋值后的值,,规定。利用数学归纳法容易证明:对任意,存在整数使得 事实上,当时,取则显然有假设i=j时,式(4-15)和(4-16)成立,则当i=j+l时, 其中q(j)为euclid算法中第i次对q赋值后q的值,规定,因此从上面的讨论可知,存在整数a和b使得.可以对euclid算法做一点修改,使之可以同时求出gcd(n,u)和满足上式的整数a和b,称之扩展euclid算法,此算法描述如下:(1)(2) (3)如果r=0,则;(4)如果r0,则,则转(2)步。以上即为扩展的euclid算法,该算法在计算模n求逆时,颇有用处。4.2.2模n求逆元运算这里来讨论模n求逆元的算法。设n和u都是正整数,模n的逆就是满足的整数v,。可以证明,对于正整数,对于,存在。使得的充分必要条件是。证明必要性:对于任意,存在整数q使得,假设。因为,所以,即对任意,都有,因此,如果存在,使得,则必然有。证明充分性:假设,则存在整数a和b使于是令,则。由上述定理的充要性证明可以得知,利用扩展的euclid算法可以求得u模n的逆,以扩展的euclid算法为基础,可以得到模n求逆的算法如下:(1);(2);(3)如果r0,则;(4)如果1,则u模n不存在逆元;(5)如果=1,则u模n逆元为。举例说明上述算法,求13模35的逆元:35=213+9,9=135-213,13=19+4,4=113-19=-135+39=24+1,1=19-24=335-813,所以13模35的逆元为4.2.3模n的大数幂乘运算rsa公钥密码体制中,加密和解密时都要进行运算,下面给出一个计算的快速算法。(1)ax,br,c1;(2)如果b=0,则输出结果c,结束;(3)如果b mod 20,则转到第(5)步;(4)转第(3)步:,(5),转第(2)步。举例说明上述算法,求13模35的逆元:35=213+9,9=135-213,13=19+4,4=113-19=-135+313,9=24+1,1=19-24=335-813,所以13模35的逆元为(-8)mod 35=2704.2.4模n的大数幂乘运算rsa公钥密码体制中,加密和解密时都要进行xrmod n的运算,下面给出一个计算xrmod n的快速算法。(1)ax,br,c1;(2)如果b=0,则输出结果c,结束;(3)如果,则转到第(5)步;(4)bb/2,转第(3)步:,(5),转第(2)步。例如:计算322mod 12 以上主要介绍了rsa数字签名过程中,每个密钥和加密解密过程中所涉及到的相关的算法。以上算法,均从数论的角度加以论证,在理论上切实可行。当然,在实际项目中,根据要求,某些步骤还尚需要做相应的调整。4.3 rsa算法分析rsa公钥密码体制是目前常用的一种密码体制,无论从数论的角度,还是从实践的角度,都己经证明了rsa的正确性。虽然到目前为止,还没有足够的证据其安全性,但是依照目前的计算机运算能力,要破译rsa密钥是有相当难度的,所以rsa完全可以应用于普通的电子商务和电子政务工作之中。4.3.1 rsa安全性分析rsa的安全性,是基于大整数的素分解问题的难解性,即把n分解为p、q的困难程度。攻击者破译rsa公钥密码体制的步骤为:(1)分解n求出p、q;(2)由,求出由(3)由,求出d。为了更好地防范分解攻击,rsa体制的发明者认为要仔细地选择素数p和q,在选择p和q时还要注意以下方面:(1)p和q在位数上要相差几位数字;(2)(p-1)和(q-1)都应含有大的素数因子,以增加加攻击者猜算出的困难性;(3)都应当小。使用rsa公钥密码体制,要求用户选择两个素数p和q,其中p和q是保密的,并要求p与q不相等,对p和q的乘积可以公开。实际上,所谓攻击者破译rsa密码体制,指的是由e,n来推算d, 。若pq,则可按以下步骤分解n:(1)因和由求得;(2)因,得到(3)由求出p;(4)q=r/p;这样求得了p和q,完成了对r的因子分解。从数学上讲,求一个对n不互素的数x就等价于破译了算法。这是因为:x和r的gcd可能等于p或者q,而其值可以用欧几里德算法计算出来。实际上,若r足够大,则没必要担心由x这个数来破译算法。在的区间中有个与r互素的数,且有个与r非互素的数。所以偶然出现含有p或q作为因子的一个数的概率等于:对于数值很大的p和q,这个概率是非常小的。以目前的常规个人计算机为工具来进行因子分解,其工作量是非线性增长的,分析见表4-l: n的位数所需时间503.9小时75104天10074年2003.8109年3004.01015年5004.21025年因此,在安全性要求不是特别高的系统中,可以认为rsa是安全的。4.3.2 rsa时间复杂度分析rsa运算过程涉及到大量的计算,所需时间相对于des等加密算法来说,运算时间较长。但由于其良好的安全性和成熟的密钥管理机制,rsa在实际工作中,被广泛采用。4.4本章小结rsa从20世纪80年代产生至今,始终以其成熟的工作体制和良好的安全性而被广泛的应用于实际项目之中。rsa的安全性虽然没有通过数学上的论证,因此,其安全性主要体现在大素数的分解这一复杂问题上。通过实践证明,rsa在目前的计算机运行能力下,还是相对安全的。rsa在未来的很长一段时间中,必将保持旺盛的生命力。近年来,随着电子商务、电子政务等网上行为的增加,对于加密技术的研究日趋活跃。而对于rsa的研究,同样处于活跃的状态。由于rsa本身框架的成熟,因此,对于rsa的研究主要体现在,对其子步骤算法的改进和研究,比如对于模n求逆算法的改进、最大公因子算法的改进;将rsa和其他算法、体制结合应用,比如目前在各计算机科技期刊上经常见到的关于门限rsa体制的研究成果。本章主要讨论了rsa内部各步骤的算法实现。第5章 rsa算法的实现基于前面的分析,本章给出了一种实现rsa的快速高效算法,并介绍了利用组合算法实现大整数快速模幂乘运算的具体实现过程,以及在实现过程中所遇到的关键问题及解决方法。5.1选定组合算法的准则1.准确性原则一个算法必须满足它自身是正确的,即可以得到想要的计算结果。2.高效性原则算法必须是有效的,即是高效的算法。3.简单性原则简单性原则不仅要使算法要尽量的容易实现,而且要尽量使程序容易被用户使用。4.实用性原则要求算法确实可行,不仅是在理论上是正确的,还要求在实际上也能达到预期的效果。5.2模幂组合算法的实现本文前面介绍了一系列大数模幂运算及其改进算法,具体的实现方法步骤如下:(1)任意选取两个不同的大质数p和q,计算乘积;(2)任意选取一个大整数d,d与互质,整数d用做加密密钥。注重d的选取是很轻易的,例如所有大于p和q的质数都可用.;(3)确定解密密钥n,由,根据d,p和q可以轻易地计算出n,即为逆元;(4)公开整数r和d,但是不公开n;(5)规定明文动态分布空间l,输入明文,通过计算成为密文;(6)将密文c解密为明文;具体程序见附录。5.3试验与运行结果开发环境:p43.0cpu,512m内存,80g硬盘,17寸显示器操作系统:windows xp开发工具:visusl c+6.0仿真结果:其中p,q为2位素数,计算p与q的乘积,输入整数d,d可以取大于p,q的素数小于p,q乘积,要求与(p1)*(q1)互质,计算d的逆元,输入明文动态空间l,要求明文字节数不得超过l,否则任务终止。系统计算密文,然后计算明文举例如图:输入2个素数:p=11,q=311,当输入不是素数时会提示如下计算出p与q的乘积r为3421,(p-1)于(q-1)乘积为3100,输入随机大整数例如353,与3100仅有公约数1,如输入错误时会有如下提示计算353的逆元,由n*d=1mod(p1)*(q1)可得逆元为2617,规定明文动态分配空间,此时我规定的是64个字节,输入明文12345678,通过c = pe modulo r计算将会转化为密文:1268 2307 116 838 323 692 440 2366,再通过将其转换回来就为12345678在实际生活中,取素数p=11,q=311,公

温馨提示

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

评论

0/150

提交评论