ImageVerifierCode 换一换
格式:DOCX , 页数:52 ,大小:501.86KB ,
资源ID:5428980      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5428980.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于RSA算法的数字签名的实现毕业论文.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于RSA算法的数字签名的实现毕业论文.docx

1、基于RSA算法的数字签名的实现毕业论文 基于RSA算法的数字签名的实现毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。 论文作者签名: 日期: 年 月 日摘 要随着Internet的发展,电子商务已经逐渐成为人们进行商务活动的新模式,越来越多的人通过Internet进行商务活动。电子商务的发展前景十分诱人,而其安全问题也变得越来越突出,如何建立一个安全、便捷的

2、电子商务应用环境,对信息提供足够的保护,已经成为商家和用户都十分关心的话题。系统综合运用了RSA算法原理,散列函数以及C#和.NET编程技术,实现了基于RSA算法的数字签名系统。经过测试表明,系统运行可靠稳定,实现了保证信息完整性、鉴别发送者的身份真实性与不可否认性目标。本文基于数字签名技术在电子商务中的应用,对公钥密码体制中的广泛流行的RSA算法做了深入的研究并主要阐述了利用C#语言实现基于RSA算法的数字签名方法。从两大基本模块签名系统和认证系统着手,对数字签名进行了详细的说明和分析。关键词:数字签名;公钥密码体制;RSA;电子商务;加解密ABSTRACTWith the developm

3、ent of Internet,E-commerce has gradually become a new model of business activities,more and more people take up business affairs through the Internet. Prospects for the development of e-commerce is very tempting,and the security issues are becoming increasingly prominent.Many technologies have been

4、adopted in the system, such as algorithm RSA, hash function, C# and .NET programming technology. And the Digital Signature system is based on algorithm RSA. The tests of application show that this system is reliable and achieves the design object of the integrity of information, identification of th

5、e senders identity and the authenticity of the undeniable.Based on digital signature technology in the application of e-commerce,we conduct a study about the algorithm RSA which is very popular in the public-key cryptosystem,and we mainly explain the implementation of the Digital Signature based on

6、algorithm RSA in C#. From the two basic systems - the signature system and the authentication system, we did the detailed description and analysis of digital signature.Key words: digital signature; public-key cryptosystem; RSA; Eletronic Commerce; encryption and decryption第一章 概述 11.1课题背景 11.2数字签名及其应

7、用 11.2.1数字签名概述 11.2.2数字签名的应用 21.3 课题内容 3第二章 数字签名软件的技术支撑 42.1 RSA加密算法 42.1.1 公钥和私钥的产生 42.1.2 加密消息 52.1.3 解密消息 52.1.4 安全 52.1.5 实现细节 62.2 数字签名原理 72.3 散列函数 72.3.1散列函数的性质 82.3.2 散列函数的应用 82.3.3 MD5算法 102.3.4 SHA-1算法 112.4 C#和.NET 11第三章 系统的分析与设计 133.1需求分析 133.2 总体设计 133.3 功能模块的划分 153.4 各功能模块的介绍 16第四章 系统的实

8、现 184.1 RSA加密算法的实现 184.1.1 公私密钥的生成 194.1.2 使用私钥加密 204.1.3 使用公钥解密 214.1.4 其他 214.2 散列函数 214.3 数字签名的实现 224.3.1 设计思想 224.3.2 系统实现 244.4 本章小结 33结束语 34致 谢 35第一章 概述1.1课题背景随着Internet和计算机网络技术的蓬勃发展,连通全世界的电子信息通道已经形成,应用Internet网开展电子商务业务也开始具备实用的条件,电子商务获得长足发展的时机已经成熟。专家认为,作为21世纪重要经济增长点的电子商务,其作用不亚于200年前的工业革命。随着世界经

9、济一体化的发展,资金流动越来越快,市场变化也越来越快,各国间经济依存关系更加紧密,发展电子商务的重要性也日益突出。而且凭借其在增加贸易机会、降低贸易成本、简化贸易流程、提高贸易效率等方面的优势,电子商务也越来越得到全球各个国家的重视和支持。众所周知,在Internet上的电子商务交易过程中,最核心和最关键的问题就是交易的安全性。电子商务主要的安全要素包括:(1)有效性,保证电子形式的贸易信息的有效性是开展电子商务的前提;(2)机密性,电子商务建立在一个较为开放的网络环境上,维护商业机密是其全面推广应用的重要保障;(3)完整性,由于数据输入时的意外差错或欺诈行为,可能导致贸易各方信息的差异。此外

10、,数据传输过程中信息的丢失、信息重复或信息传送的次序差异也会导致贸易各方信息的不同。贸易各方信息的完整性将影响到贸易各方的交易和经营策略,保持贸易各方信息的完整性是EC(Eletronic Commerce 电子商务)应用的基础;(4)可靠性/不可抵赖性/鉴别,在无纸化的EC方式下,通过手写签名和印章进行贸易方的鉴别是不可能的。因此,要在交易信息的传输过程中为参与交易的个人、企业或国家提供可靠的标识;(5)审查能力,根据机密性和完整性的要求,应对数据审查的结果进行记录。所以为了保证电子商务的健康快速发展,上述的安全性必须得到满足。然而,随着网络的复杂性,网络安全面临着诸多的威胁,如破坏信息的完

11、整性、冒充、抵赖等。这对电子商务的发展也带了许多不安全的因素。因此,必须有一个保密完善的机制运用在电子商务中,才可能保证电子商务的安全。而数字签名便是一个在电子商务交易中维护交易安全的工具。1.2数字签名及其应用1.2.1数字签名概述数字签名是在公钥加密系统的基础上建立起来的,这里首先讲述一下公钥密码的原理:公钥密码算法使用两个密钥,使用其中一个密钥(称为加密密钥)用于加密,另外一个密钥(称为解密密钥)用于解密。公钥密码算法具有如下特征:(1)加密密钥与解密密钥是本质上不同的,也就是说如果仅仅知道密码算法和加密密钥,而要确定解密密钥,在计算上不可行的;(2)大多数公钥密码算法的加密密钥与解密密

12、钥具有互换的性质。如RSA算法,密钥对中的一个用于加密,另外一个就用于解密。数字签名过程一般对于数据摘要信息进行处理,所谓数据摘要就是散列函数对消息处理产生的散列值,也称其为消息的散列值。摘要信息在数字签名中应用过程可以概述为:首先使用某种散列算法,对要发送的数据进行处理,生成数据摘要信息;然后采用公钥密码算法,用私钥加密数据摘要信息。加密后的数据摘要信息就相当于用户的签名,类似于现实生活中的签名和印章。接收方可以对接收到的签名结果进行验证,以判断签名的有效性。数字签名在具体实施时,首先发送方对信息施以数学变换,所得到的信息与源信息唯一地对应;在接收方进行逆变换,得到原始信息。只要数学变换方法

13、优良,变换后的信息在传输中就具有很强的安全性,很难被破译、篡改。这个发送方的变换过程就是签名,通常是一种加密措施;对应的逆变换过程就是对签名的认证,通常是一种解密措施。数字签名与传统签字或印章有根本不同,数字签名的基础是公钥密码学,通过数学的手段来达到传统签字的功能。简单地说,在公钥密码体制中,仅仅签名者自己掌握私钥,而其对应的公钥是公开的,那么签名者用自己的私钥变换数据(加密),其他人就可以利用签名者的公钥来逆变换数据(解密),因为利用其他任何公钥都无法正确逆变换出该私钥变换后的数据,从而就可以鉴别该数据是谁进行的变换处理,亦即是谁的签名。数字签名具有许多传统签名所不具备的优点,如签名因消息

14、而异,同一个人对不同的消息,其签名结果两者是一个混合的不可分割的整体等。所以,数字签名比传统签名更具可靠性。由上述介绍可知,一个签名体制一般包括两个部分:一个是发送方的签名部分,对消息M签名,可以记作S=Sig(K,M),签字算法使用的密钥是秘密的,即是签字者的私钥。二是接受方的认证部分,对签名S的验证可以记作Ver(M,S,K)=真,假,认证算法使用的密钥是发送方(即签名者)的公钥。1.2.2数字签名的应用数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题。数学签名的目的之一,就是在网络环境中代替传统的手工签字与印章,那么数字签名可以抵御那些网络攻击?(1)防冒充

15、(伪造)。其他人不能伪造对消息的签名,因为私有密钥只有签名者自己知道,所以其他人不可能构造出正确的签名结果数据。显然自己的私有密钥是一定要保存好的。(2)可鉴别身份。由于传统的手工签字一般是双方直接见面的,身份自可一清二楚;在网络环境中,接收方必须能够鉴别发送方所宣传的身份。即接收方使用发送方的公开密钥对签名报文对签名报文进行解密运算,如其结果为明文,则签名有效,证明对方身份是真实的。(3)防篡改(防破坏信息的完整性)。传统的手工签字,假如要签署一本200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?不然,对方会不会偷换其中几页?这些都是问题所在。而数字签名,签名与原有文件已经形成了一

16、个混合的整体数据,不可能篡改,从而保证了数据的完整性。(4)防抵赖。前面讲了,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保存好签名的报文,就好似保存了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。以上是签名者不能抵赖,那如果接收方确已收到对方的签名报文,却抵赖没有收到呢?要防接收方的抵赖,在数字签名体制中,要求接收方返回一个自己签名的表示收到的报文,给对方或者是第三者,或者引入第三方机制。如此操作,双方都不可抵赖。(5)机密性。有了机密性保证,截收攻击也就失效了。手工签字的文件是不具备保密性的,文件一旦丢失,文件信息就极可能泄露。数字签名可以加密要签名的信息,一串密文是不可理解

17、的。综上所述,对于之前提到的电子商务的安全性因素,数字签名都可以得到保证。利用数字签名,电子商务可以安全地完成企业之间、企业与消费者之间在网上的商业交换活动。网上证券也能安全地完成股票交易、网上银行证券转账业务等。数字签名为这些业务提供了身份鉴别、防抵赖、防篡改等保证,是网上业务可以顺利安全地进行。1.3 课题内容数字签名是当前网络安全领域的研究热点。特别是在电子商务、电子银行、电子政务等应用领域,数字签名是其关键技术之一,在社会生活的各个领域也有极其广阔的应用前景。密码技术是信息安全的核心技术。公钥密码在信息安全中担负起密钥协商、数字签名、消息认证等重要角色,已成为最核心的密码。要求在了解了

18、数字签名技术的基本功能、原理的基础上,设计并实现基于RSA的数字签名算法。利用RSA算法实现数字签名软件,要求软件可用性强,且操作简便。它应具有的功能如(1)对文件所生成的签名进行认证,即提供身份认证;(2)防止签名方的抵赖,保证签名的不可否认性;(3)防止签名文件的篡改,即保证数据的完整性。本文将从RSA算法和数字签名的原理开始,详细叙述RSA数字签名的完整过程,以及软件的对改系统的具体实现。分别是系统的技术支撑,系统的分析与设计以及系统实现。第二章 数字签名软件的技术支撑本章主要介绍系统开发过程中所需要的软件开发技术和算法原理。主要RSA算法原理,数字签名原理,C# 编程技术,以及Visu

19、al Studio中的.NET平台。2.1 RSA加密算法RSA加密算法是一种非对称加密算法。在公钥加密标准和电子商业中RSA被广泛使用。RSA是1977年由罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。1973年,在英国政府通讯总部工作的数学家克利福德柯克斯(Clifford Cocks)在一个内部文件中提出了一个相应的算法,但他的发现被列入机密,一直到1997年才被发表。对极大整数做因数分解的难度决定了RSA算法的可靠性。换

20、言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的 算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到 2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算技术和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。1983年麻省理工学院在美国为RSA算法申请了专利。这个专利2000年9月21日失效。由于该算法在申请专利前就已经被发表了,在世界上大多数其它地区这个专利权不被承认。2.

21、1.1 公钥和私钥的产生假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个私钥:(1)随意选择两个大的质数p和q,p不等于q,计算N=pq。(2)根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)(3)选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)(4)用以下这个公式计算d:d e 1 (mod (p-1)(q-1)(5)将p和q的记录销毁。(N,e)是公钥,(N,d)是私钥。(N,d)是秘密的。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。2.1.2 加密消息假设Bob想给A

22、lice送一个消息m,他知道Alice产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c:计算c并不复杂。Bob算出c后就可以将它传递给Alice。2.1.3 解密消息Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n:得到n后,她可以将原来的信息m重新复原。解码的原理是以及ed 1 (mod p-1)和ed 1 (mod q-1)。由费

23、马小定理可证明(因为p和q是质数)和 这说明(因为p和q是不同的质数,所以p和q互质)2.1.4 安全假设偷听者乙获得了甲的公钥N和e以及丙的加密消息c,但她无法直接获得甲的密钥d。要获得d,最简单的方法是将N分解为p和q,这样她可以得到同余方程d e 1 (mod (p-1)(q-1)并解出d,然后代入解密公式导出n(破密)。但至今为止还没有人找到一个多项式时间的算法来分解一个大的整数的因子,同时也还没有人能够证明这种算法不存在(见因数分解)。至今为止也没有人能够证明对N进行因数分解是唯一的从c导出n的方法,但今天还没有找到比它更简单的方法。(至少没有公开的方法。)因此今天一般认为只要N足够

24、大,那么黑客就没有办法了。假如N的长度小于或等于256位,那么用一台个人电脑在几个小时内就可以分解它的因子了。1999年,数百台电脑合作分解了一个512位长的N。今天对N的要求是它至少要1024位长。1994年彼得秀尔(Peter Shor)证明一台量子计算机可以在多项式时间内进行因数分解。假如量子计算机有朝一日可以成为一种可行的技术的话,那么秀尔的算法可以淘汰RSA和相关的衍生算法(即依赖于分解大整数困难性的加密算法)。假如有人能够找到一种有效的分解大整数的算法的话,或者假如量子计算机可行的话,那么在解密和制造更长的钥匙之间就会展开一场竞争。但从原理上来说RSA在这种情况下是不可靠的。2.1

25、.5 实现细节1.密钥生成首先要使用概率算法来验证随机产生的大的整数是否质数,这样的算法比较快而且可以消除掉大多数非质数。假如有一个数通过了这个测试的话,那么要使用一个精确的测试来保证它的确是一个质数。除此之外这样找到的p和q还要满足一定的要求,首先它们不能太靠近,此外p-1或q-1的因子不能太小,否则的话N也可以被很快地分解。此外寻找质数的算法不能给攻击者任何信息,这些质数是怎样找到的,尤其产生随机数的软件必须非常好。要求是随机和不可预测。这两个要求并不相同。一个随机过程可能可以产生一个不相关的数的系列,但假如有人能够预测出(或部分地预测出)这个系列的话,那么它就已经不可靠了。比如有一些非常

26、好的随机数算法,但它们都已经被发表,因此它们不能被使用,因为假如一个攻击者可以猜出p和q一半的位的话,那么他们就已经可以轻而易举地推算出另一半。此外密钥d必须足够大,1990年有人证明假如p大于q而小于2q(这是一个很经常的情况)而d N1/4/3,那么从N and e可以很有效地推算出d。此外e = 2永远不应该被使用。 2.速度比起DES和其它对称算法来说,RSA要慢得多。实际上Bob一般使用一种对称算法来加密他的信息,然后用RSA来加密他的比较短的对称密码,然后将用RSA加密的对称密码和用对称算法加密的消息送给Alice。这样一来对随机数的要求就更高了,尤其对产生对称密码的要求非常高,因

27、为否则的话可以越过RSA来直接攻击对称密码。3.密钥分配和其它加密过程一样,对RSA来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡一个从中取代的攻击。假设蛋蛋交给阿庆一个公钥,并使阿 庆相信这是小Q的公钥,并且她可以截下小Q和阿庆之间的信息传递,那么她可以将她自己的公钥传给阿庆,阿庆以为这是小Q的公钥。可以将所有阿庆传递给小Q 的消息截下来,将这个消息用她自己的密钥解密,读这个消息,然后将这个消息再用小Q的公钥加密后传给小Q。理论上小Q和阿庆都不会发现蛋蛋在偷听他们的消 息。今天人们一般用数字认证来防止这样的攻击。2.2 数字签名原理 用RSA算法做数字签名,总的来说,就是签名者用

28、私钥参数d加密,也就是签名;验证者用签字者的公钥参数e解密来完成认证。下面简要描述数字签名和认证的过程。1、生成密钥为用户随机生成一对密钥:公钥(e,n)和私钥(d,n).2、签名过程(1)计算消息的散列值H(M).(2)用私钥(d,n)加密散列值:s=(H(M) mod n,签名结果就是s.(3)发送消息和签名(M,s).3、认证过程(1)取得发送方的公钥(e,n).(2)解密签名s:h=smod n.(3)计算消息的散列值H(M).(4)比较,如果h=H(M),表示签名有效;否则,签名无效。根据上面的过程,我们可以得到RSA数字签名的框图如图2-1:Hash连接消息Hash解密比较加密相等

29、,真不等,假发送方私钥(d,n)发送方公钥(e,n)签名过程认证过程图 2-1 RSA数字签名框图2.3 散列函数散列函数(或散列算法,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表一个短的随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。2.3.1散列函数的性质所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确

30、定性的 结果。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的。但也可能不同,这种情况称为“散列碰撞”, 这通常是两个不同长度的散列值,刻意计算出相同的输出值。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不 同的散列值。典型的散列函数都有无限定义域,比如任意长度的字节字符串,和有限的值域,比如固定长度的比特串。在某些情况下,散列函数可以设计成具有相同大小的定义域和值域间的一一对应。一一对应的散列函数也称为排列。可逆性可以通过使用一系列的对于输入值的可逆“混合”运算而得到。2.3.2 散列函数的应用由于散

31、列函数的应用的多样性,它们经常是专为某一应用而设计的。例如,加密散列函数假设存在一个要找到具有相同散列值的原始输入的敌人。一个设计优秀的加密散列函数是一个“单向”操作:对于给定的散列值,没有实用的方法可以计算出一个原始输入,也就是说很难伪造。为加密散列为目的设计的函数,如MD5,被广泛的用作检验散列函数。这样软件下载的时候,就会对照验证代码之后才下载正确的文件部分。此代码有可能因为环境因素的变化,如机器配置或者IP地址的改变而有变动。以保证源文件的安全性。错误监测和修复函数主要用于辨别数据被随机的过程所扰乱的事例。当散列函数被用于校验和的时候,可以用相对较短的散列值来验证任意长度的数据是否被更改过。1.加密一个典型的加密单向函数是“非对称”的,并且由一个高效的散列函数构成;一个典型的加密暗门函数是“对称”的,并且由一个高效的随机函数构成。2.散列表散列表是散列函数的一个主要应用,使用散列表能够快速的按照关键字查找数据记录。(注意:关键字不是像在加密中所使用的那样是秘密的,但它们都是用来“解锁”或者访问数据的。)例如,在英语字典中的关键字是英文单词,和它们相关的记录包含这些单词的定义。在这种情况下,散列函数必须把按照字母顺序排列的字符串映射到为散列表的内部数组所创建的索引上。散列表散列函数的几乎不可能/不切实际的理想是把每个关键字映射到唯一的索引上(参考完美散列),

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1