南京邮电大学2011届本科生毕业设计(论文)
第一章 概述
1.1课题背景
随着Internet和计算机网络技术的蓬勃发展,连通全世界的电子信息通道已经形成,应用Internet网开展电子商务业务也开始具备实用的条件,电子商务获得长足发展的时机已经成熟。专家认为,作为21世纪重要经济增长点的电子商务,其作用不亚于200年前的工业革命。随着世界经济一体化的发展,资金流动越来越快,市场变化也越来越快,各国间经济依存关系更加紧密,发展电子商务的重要性也日益突出。而且凭借其在增加贸易机会、降低贸易成本、简化贸易流程、提高贸易效率等方面的优势,电子商务也越来越得到全球各个国家的重视和支持。
众所周知,在Internet上的电子商务交易过程中,最核心和最关键的问题就是交易的安全性。电子商务主要的安全要素包括:
(1) 有效性,保证电子形式的贸易信息的有效性是开展电子商务的前提; (2) 机密性,电子商务建立在一个较为开放的网络环境上,维护商业机密是其全面推广应用的重要保障;
(3) 完整性,由于数据输入时的意外差错或欺诈行为,可能导致贸易各方信息的差异。此外,数据传输过程中信息的丢失、信息重复或信息传送的次序差异也会导致贸易各方信息的不同。贸易各方信息的完整性将影响到贸易各方的交易和经营策略,保持贸易各方信息的完整性是EC(Eletronic Commerce 电子商务)应用的基础;
(4) 可靠性/不可抵赖性/鉴别,在无纸化的EC方式下,通过手写签名和印章进行贸易方的鉴别是不可能的。因此,要在交易信息的传输过程中为参与交易的个人、企业或国家提供可靠的标识;
(5) 审查能力,根据机密性和完整性的要求,应对数据审查的结果进行记录。 所以为了保证电子商务的健康快速发展,上述的安全性必须得到满足。然而,随着网络的复杂性,网络安全面临着诸多的威胁,如破坏信息的完整性、冒充、抵赖等。这对电子商务的发展也带了许多不安全的因素。因此,必须有一个保密完善的机制运用在电子商务中,才可能保证电子商务的安全。而数字签名便是一个在电子商务交易中维护交易安全的工具。
1.2数字签名及其应用 1.2.1数字签名概述
数字签名是在公钥加密系统的基础上建立起来的,这里首先讲述一下公钥密码的原理:
1
南京邮电大学2011届本科生毕业设计(论文)
公钥密码算法使用两个密钥,使用其中一个密钥(称为加密密钥)用于加密,另外一个密钥(称为解密密钥)用于解密。公钥密码算法具有如下特征:
(1)加密密钥与解密密钥是本质上不同的,也就是说如果仅仅知道密码算法和加密密钥,而要确定解密密钥,在计算上不可行的;
(2)大多数公钥密码算法的加密密钥与解密密钥具有互换的性质。如RSA算法,密钥对中的一个用于加密,另外一个就用于解密。
数字签名过程一般对于数据摘要信息进行处理,所谓数据摘要就是散列函数对消息处理产生的散列值,也称其为消息的散列值。摘要信息在数字签名中应用过程可以概述为:首先使用某种散列算法,对要发送的数据进行处理,生成数据摘要信息;然后采用公钥密码算法,用私钥加密数据摘要信息。加密后的数据摘要信息就相当于用户的签名,类似于现实生活中的签名和印章。接收方可以对接收到的签名结果进行验证,以判断签名的有效性。
数字签名在具体实施时,首先发送方对信息施以数学变换,所得到的信息与源信息唯一地对应;在接收方进行逆变换,得到原始信息。只要数学变换方法优良,变换后的信息在传输中就具有很强的安全性,很难被破译、篡改。这个发送方的变换过程就是签名,通常是一种加密措施;对应的逆变换过程就是对签名的认证,通常是一种解密措施。
数字签名与传统签字或印章有根本不同,数字签名的基础是公钥密码学,通过数学的手段来达到传统签字的功能。简单地说,在公钥密码体制中,仅仅签名者自己掌握私钥,而其对应的公钥是公开的,那么签名者用自己的私钥变换数据(加密),其他人就可以利用签名者的公钥来逆变换数据(解密),因为利用其他任何公钥都无法正确逆变换出该私钥变换后的数据,从而就可以鉴别该数据是谁进行的变换处理,亦即是谁的签名。数字签名具有许多传统签名所不具备的优点,如签名因消息而异,同一个人对不同的消息,其签名结果两者是一个混合的不可分割的整体等。所以,数字签名比传统签名更具可靠性。
由上述介绍可知,一个签名体制一般包括两个部分:一个是发送方的签名部分,对消息M签名,可以记作S=Sig(K,M),签字算法使用的密钥是秘密的,即是签字者的私钥。二是接受方的认证部分,对签名S的验证可以记作Ver(M,S,K)={真,假},认证算法使用的密钥是发送方(即签名者)的公钥。
1.2.2数字签名的应用
数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题。
数学签名的目的之一,就是在网络环境中代替传统的手工签字与印章,那么数字签名可以抵御那些网络攻击?
(1)防冒充(伪造)。其他人不能伪造对消息的签名,因为私有密钥只有签名者自己知道,所以其他人不可能构造出正确的签名结果数据。显然自己的私有密钥是一定要保存
2
南京邮电大学2011届本科生毕业设计(论文)
好的。
(2)可鉴别身份。由于传统的手工签字一般是双方直接见面的,身份自可一清二楚;在网络环境中,接收方必须能够鉴别发送方所宣传的身份。即接收方使用发送方的公开密钥对签名报文对签名报文进行解密运算,如其结果为明文,则签名有效,证明对方身份是真实的。
(3)防篡改(防破坏信息的完整性)。传统的手工签字,假如要签署一本200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?不然,对方会不会偷换其中几页?这些都是问题所在。而数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能篡改,从而保证了数据的完整性。
(4)防抵赖。前面讲了,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保存好签名的报文,就好似保存了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。以上是签名者不能抵赖,那如果接收方确已收到对方的签名报文,却抵赖没有收到呢?要防接收方的抵赖,在数字签名体制中,要求接收方返回一个自己签名的表示收到的报文,给对方或者是第三者,或者引入第三方机制。如此操作,双方都不可抵赖。
(5)机密性。有了机密性保证,截收攻击也就失效了。手工签字的文件是不具备保密性的,文件一旦丢失,文件信息就极可能泄露。数字签名可以加密要签名的信息,一串密文是不可理解的。
综上所述,对于之前提到的电子商务的安全性因素,数字签名都可以得到保证。利用数字签名,电子商务可以安全地完成企业之间、企业与消费者之间在网上的商业交换活动。网上证券也能安全地完成股票交易、网上银行证券转账业务等。数字签名为这些业务提供了身份鉴别、防抵赖、防篡改等保证,是网上业务可以顺利安全地进行。
1.3 课题内容
数字签名是当前网络安全领域的研究热点。特别是在电子商务、电子银行、电子政务等应用领域,数字签名是其关键技术之一,在社会生活的各个领域也有极其广阔的应用前景。密码技术是信息安全的核心技术。公钥密码在信息安全中担负起密钥协商、数字签名、消息认证等重要角色,已成为最核心的密码。要求在了解了数字签名技术的基本功能、原理的基础上,设计并实现基于RSA的数字签名算法。
利用RSA算法实现数字签名软件,要求软件可用性强,且操作简便。它应具有的功能如
(1)对文件所生成的签名进行认证,即提供身份认证; (2)防止签名方的抵赖,保证签名的不可否认性;
(3)防止签名文件的篡改,即保证数据的完整性。
本文将从RSA算法和数字签名的原理开始,详细叙述RSA数字签名的完整过程,以及软件的对改系统的具体实现。分别是系统的技术支撑,系统的分析与设计以及系统实现。
3
南京邮电大学2011届本科生毕业设计(论文)
第二章 数字签名软件的技术支撑
本章主要介绍系统开发过程中所需要的软件开发技术和算法原理。主要RSA算法原理,数字签名原理,C# 编程技术,以及Visual Studio中的.NET平台。
2.1 RSA加密算法
RSA加密算法是一种非对称加密算法。在公钥加密标准和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中提出了一个相应的算法,但他的发现被列入机密,一直到1997年才被发表。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的 算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到 2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算技术和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。
1983年麻省理工学院在美国为RSA算法申请了专利。这个专利2000年9月21日失效。由于该算法在申请专利前就已经被发表了,在世界上大多数其它地区这个专利权不被承认。
2.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)藏起来。
4
南京邮电大学2011届本科生毕业设计(论文)
2.1.2 加密消息
假设Bob想给Alice送一个消息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)。由费马小定理可证明(因为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足够大,那么黑客就没有办法了。假如N的长度小于或等于256位,那么用一台个人电脑在几个小时内就可以分解它的因子了。1999年,数百台电脑合作分解了一个512位长的N。今天对N的要求是它至少要1024位长。1994年彼得·秀尔(Peter Shor)证明一台量子计算机可以在多项式时间内进行因数分
5