一个简单的数字签名系统的实现.DOC

上传人:国*** 文档编号:2973061 上传时间:2019-05-13 格式:DOC 页数:28 大小:419KB
下载 相关 举报
一个简单的数字签名系统的实现.DOC_第1页
第1页 / 共28页
一个简单的数字签名系统的实现.DOC_第2页
第2页 / 共28页
一个简单的数字签名系统的实现.DOC_第3页
第3页 / 共28页
一个简单的数字签名系统的实现.DOC_第4页
第4页 / 共28页
一个简单的数字签名系统的实现.DOC_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、1一个简单的数字签名系统的实现专业班级:姓 名:指导教师:计算机科学与技术学院装订线2内 容 摘 要计算机和网络技术的发展将人类带入信息化社会,随之而来的是倍受关注的信息安全问题。现代密码学已成为信息安全技术的核心,数字签名是现代密码学主要研究的内容之一。数字签名技术在身份识别和认证、数据完整性、抗抵赖等方面具有其它技术所无法替代的作用,它在电子商务和电子政务等领域有着极广泛的应用。本论文首先介绍了数字签名的研究背景和意义。接着系统介绍了数字签名的原理及其相关技术,包括密码技术、签名算法、单向散列函数和数字证书等。然后通过使用Windows 和 Java 安全的相关内容实现数字签名在单机上的模

2、拟来更加深刻地了解其过程。最后是对本论文的总结。关键字:数字签名;Java 安全;数字证书3ABSTRACTHuman beings have entered into the information era with the development of computer and network technologies;Thus, the security problem of information has become the fundamental matter. The modern cryptography is the kernel technique of informati

3、on security. The digital signature is one of main researches in modern cryptography, and it cannot be substituted by other techniques in information security, including authentication, data integrity, and non-repudiation. Digital signatures have many applications in electronic commerce and electroni

4、c government, etc.First, this paper introduces the research background and meaning of the digital signature. Then it introduces systematically the principle of the digital signature and relevant technology, including cryptography technology, signature algorithm, one-way Hash Function and digital cer

5、tification etc. To understand the course of the digital signature more profound, it realize the simulation of the digital signature under the environment of PC by using the relevant contents of Windows and Java security. Finally, it is the summarization of the paper.Key Words: digital signature ; Ja

6、va security; digital certification4目 录1 前 言 .21.1 数字签名的研究背景及意义 .22 了解数字签名的原理 .22.1 什么是数字签名 .22.2 数字签名的原理 .32.3 数字签名的过程 .32.4 数字签名的作用 .43 数字签名相关技术介绍 .43.1 密码技术 .43.2 签名算法 .53.3 单向散列函数 .73.4 数字证书 .84 一个简单的数字签名系统的实现 .84.1 开发工具选择 .84.1.1 关于 Java.84.1.2 Java 的安全机制 .94.2 用 Java 实现一个简单的数字签名系统 .94.2.1 创建 CA

7、 .94.2.2 创建代 表用户 A 的证书 .134.2.3 用 CA 签发 A 的证书 .144.2.4 用户 A 发布签名了的 证书 .174.2.5 用户 B 收到后验证证书 .184.2.6 用户 A 发送签名后的信息 .194.2.7 用户 B 验证签名 .205 总结 .22致 谢 .23参考文献 .245一个简单的数字签名系统的实现1 前 言1.1 数字签名的研究背景及意义我们知道,一般的书信或者文件等纸质文档是根据亲笔签名或印章来证明其真实性的。当今社会,电子文档将逐步代替纸质的文件成为信息交流的主体。证明某一个电子文件是某作者所作的有效办法是模拟普通的手写签名在电子文档上进

8、行电子签名,即在电子化文件中添加可以标记自己的一段特征数据来实现签名。作者可以通过数字签名表明目己的身份,读者可以通过数字签名验证作者的身份。电子邮件是互联网上最重要的应用之一,传统的电子邮件都是明文传输,并且发送方可以轻松地伪造自己的身份。随着电子邮件的应用扩展到各种信息敏感领域,如:政府间来往、商业谈判等,电子邮件的内容保密和发送方身份确认的重要性便逐步凸现出来。数字签名能很好地解决电子邮件的身份确认问题。电子商务是互联网上发展最快的应用方向,它是借助于互联网的快速信息传输能力来完成各种商务活动,包括电子数据交换、在线交易系统、网上银行、商业增值网等。互联网是一个开放的空问,任何人都可以进

9、入,而重要的商务信息具有敏感性和保密性,所以通常的商务信息在传输中要进行加密,同时,为了进一步防止欺骗性的篡改,数字签名是必不可少的。电子商务活动中的电子订单、电子帐单、电子收据、电子合同等电子文档都需要作数字签名以确保真实性。网页数据是互联网上传输量最大的数据,网页已成为发布新闻、广告、招标、招聘等各种信息的重要媒体,己经开始对社会、经济、生活产生出一定的影响。这些信息来源的可靠性对相关人员来说极为重要。随着数字化时代的到来,作为一种重要且有效的信息安全技术数字签名将应用到社会的各个领域。2 了解数字签名的原理2.1 什么是数字签名数字签名是由 Diffie 和 Hellman 在他们的著名

10、的论文“New Direction in Cryptography”中第一次提出来的。数字签名是指附加在数据单元上的一些数据,或是对6数据单元所作的密码变换,这种数据或变换能使数据单元的接收者确认数据单元的来源和数据的完整性,并保护数据,防止被人(如接收者)进行伪造。签名机制的本质特征是该签名只有通过签名者的私有信息才能产生,也就是说,一个签名者的签名只能唯一地由他自己产生。当收发双方发生争议时,第三方(仲裁机构)就能够根据消息上的数字签名来裁定这条消息是否确实由发送方发出,从而实现抵赖性安全服务。数字签名是认证技术中的一种,数字签名可以用来进行下列认证:(1)实体认证 在报文通信之前,采用可

11、鉴别协议来认证通信是否在议定的通信实体之间进行。(2)报文认证 经实体认证后,双方通信实体便可进行报文通信。为了保证数据的真实性,应对报文进行认证,即接收实体应能验证报文的来源、时间性与目的地的真实性。通常也采用数字签名等技术来实现。(3)身份认证 用户的身份认证是许多应用系统的第一道防线,目的是防止数据被非法用户访问。除了口令控制之外,在身份认证环节采用数字签名技术无疑大大提高了访问控制的力度。2.2 数字签名的原理手写签名一直是纸介质文件签发者的身份证明,而数字签名则是电子信息世界中信息签发者不可否认的标记。数字签名通过单向散列(HASH)函数对要传送的消息 M 进行处理得到消息摘要(Me

12、ssage Digest) H(M),然后使用消息发送者的私有密钥 D 对摘要加密得到签名 D(H(M)。数字签名中的 HASH 函数是一类特殊的散列函数,具有以下特点:(1)对接受的输入消息数据没有长度限制。(2)对输入任何长度的消息数据能够生成固定长度的消息摘要 H(M)。(3)易于计算,对于给定的任何消息 M 将能够快速地得出 H(M)。(4)单向函数,即给出一 HASH 值 h,难以计算出一特定输人 M,使得 h=H(M)。(5)免冲突,又可分为弱免冲突和强免冲突两种。弱免冲突指给出一消息 M1,找出一消息 M2 与 M1 相似且 H(M1)=H(M2)是计算不可行的,而强免冲突指找出

13、任意两条消息M1、M2 使 H(M1)=H(M2)也是计算不可行的。满足上述条件的 HASH 函数作用于一长文档上时,可以产生该文档的一个“数字指纹”(Digital Fingerprint),可以用这个结果来判断该文档没有被修改过。统计表明,如果消息摘要长度为 128 位时,则任意两个消息 M1、M2 具有完全相同摘要的概率为 10 负 24 次方,即近于零的重复概率。如果取 H(M)为 384 位或 512 位时,重复概率则更小。我们知道,如果消息 M1 与 M2 相同,则有 H(M1)= H(M2),改变 M1 或 M2 中的任意一位,其结果将导致H(M1)与 H(M2)中有一半左右对应

14、位的值都不相同。通过数字签名的发散特性就可以很容易地发现消息是否被篡改。2.3 数字签名的过程数字签名的流程如下:(1)采用散列函数对原始报文进行运算,得到一个固定长度的数字串,即消息摘要。不同的报文所得到的消息摘要各不相同。但对相同的报文,它的消息摘要却是唯一的。在数学上保证,只要改动任何一位,重新计算出来的摘要值就会与原先的值不相符,这样就7保证了报文的不可更改性。(2)发送方生成消息摘要,用自己的私存密钥对摘要进行加密来形成发送方的数字签名。(3)这个数字签名将作为报文的附件和报文一起发给接收方。(4)接收方首先从接收到的原始报文中用同样的算法计算出新的消息摘要,再用发送方的公开密钥对报

15、文附件的数字签名进行解密,比较两个消息摘要。如果相同,接收方就能确认数字签名是发送方的,否则就可断定收到的报文是伪造的或者中途被篡改了。例如:假设 Alice 要发送一份带有自己签名的消息 M 给别人时,她首先对消息 M 通过HASH 函数进行消息摘要得到 H(M),再用自己的私有密钥 Da 对该值加密,得到对 M 的签名Sa(M)后,有 Sa(M)=Da(H(M)。接收方收到消息 M 及签名 Sa(M)后,先计算 H(M),然后使用Alice 的公开密钥 Ea 解密签名,如消息是完整的,应有 H(M)=Ea(Sa(M)=Ea(Da(H(M)=H(M)。2.4 数字签名的作用数字签名提供了一种

16、安全的保障数据完整性和真实性的机制,可以检验数据从数据源到目的地的传输过程中是否被篡改以及数据的真实来源。因此,它能够防止下面所示的四类问题:(1)否认或抵赖:发送(接收)者事后不承认已发送(或接收)过这样一份文件。(2)伪造:接收者伪造一份来自发送者的文件。(3)篡改:接收者对接收者的信息进行部分篡改。(4)冒充:网中的某一用户冒充另一用户作为发送者或接收者。3 数字签名相关技术介绍3.1 密码技术信息安全技术是一门综合性学科,它涉及信息论、计算机科学和密码学等多方面知识,它的主要任务是研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。其中,信息安全的核心是密

17、码技术。 随着计算机网络不断渗透到各个领域,密码学的应用也随之扩大。数字签名、身份鉴别等都是由密码学派生出来的新技术和应用。在计算机上实现的数据加密,其加密或解密变换是由密钥控制实现的。密钥(Keyword)是用户按照一种密码体制随机选取,它通常是一随机字符串,是控制明文和密文变换的唯一参数。根据密钥类型不同将现代密码技术分为两类:一类是对称加密(秘密钥匙加密)系统,另一类是公开密钥加密(非对称加密)系统。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 对称密码系统的安全性依赖于以下两个因素。第一,加密算法必须是足够强的,仅仅基于密文本身

18、去解密信息在实践上是不可能的;第二,加密方法的安全性依赖于密钥的秘8密性,而不是算法的秘密性,因此,我们没有必要确保算法的秘密性,而需要保证密钥的秘密性。对称加密系统的算法实现速度极快,从高级加密标准(AES)候选算法的测试结果看,软件实现的速度都达到了每秒数兆或数十兆比特。对称密码系统的这些特点使其有着广泛的应用。因为算法不需要保密,所以制造商可以开发出低成本的芯片以实现数据加密。这些芯片有着广泛的应用,适合于大规模生产。 对称加密系统最大的问题是密钥的分发和管理非常复杂、代价高昂。比如对于具有 n个用户的网络,需要 n(n1)/2 个密钥,在用户群不是很大的情况下,对称加密系统是有效的。但

19、是对于大型网络,当用户群很大,分布很广时,密钥的分配和保存就成了大问题。对称加密算法另一个缺点是不能实现数字签名。公开密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。由于加密钥匙是公开的,密钥的分配和管理就很简单,比如对于具有 n 个用户的网络,仅需要 2n 个密钥。公开密钥加密系统还能够很容易地实现数字签名。因此,最适合于电子商务应用需要。在实际应用中,公开密钥加密系统并没有完全取代对称密钥加密系统,这是因为公开密钥加密系统是基于尖端的数学难题,计算非常复杂,它的安全性更高,但它实现速度却远赶不上对称密钥加密系统。在实际应用中可利用二者的各自优点,采用对称加密系统加密文件,采用

20、公开密钥加密系统加密“加密文件”的密钥(会话密钥) ,这就是混合加密系统,它较好地解决了运算速度问题和密钥分配管理问题。因此,公钥密码体制通常被用来加密关键性的、核心的机密数据,而对称密码体制通常被用来加密大量的数据。3.2 签名算法数字签名算法有映象式和印记式两类。由于印记式的签名速度和验证速度比映象式快得多,因此印记式数字签名算法更为实用。下面对几种实用的印记式数字签名算法及其应用进行论述。(1)RSA 数字签名算法产生签名与验证参数:Stepl 签名人 A 选择两个大素数 p、q,计算 n=pq 及 fi(n) = (p-1)(q-1);Step2 寻找 e、d 属于 Zn 使满足(e,

21、fi(n)=1 及 ed=1(mod fi(n);Step3 公开验证参数n,e, A 保存p,q,d,fi(n)作为秘密的签名参数;Step4 选用一通用的散列函数 h( )。签名算法:Stepl A 将需签名的文件 m(含接收人、内容、签名人、日期等)编码后映射成 h(m);Step2 计算 c1=(h(m)的 d 次方 mod p, c2=(h(m)的 d 次方 mod q 及印记 Sa(m)=(c1q1q+c2p1p) mod n,其中 q1q=1 mod p,p1p=1 mod q;Step3 将m, Sa(m)发送至文件接收人 B 或仲裁人 T(A、 B、T 的含义下同)。验证算法

22、:B(或 T)检验(Sa(m)的 e 次方=h(m) mod n 是否成立,若成立则接收此文件及签名,否则拒绝接收或宣布无效。(2)Rabin 数字签名算法产生签名与验证参数:Step1 A 选择两个大素数 p、q,并计算 n=pq;Step2 公开验证参数 n,A 保存p,q作为秘密的签名参数;9Step3 选用一通用的散列函数 h( )。签名算法:Step1 A 将需签名的文件 m 编码后映射成 h(m),选取 a=bh(m)使满足(a/p)=( b/q)=1, b 属于1,-1,2,-2,其中(/)为 Legendre 符号;Step2 计算 c1=+a 的(p+1)/4 次方 mod

23、p,c2=+a 的(q+1)/4 次方 mod q 及印记Sa(m)=(c1q1q+c2p1p) mod n。其中 c1、c2 固定一种取法,p1、p2 满足 q1q=1 mod p,p1p= 1 mod q;Step3 将m,Sa(m),b发送至 B 或 T。验证算法:B(或 T)检验(Sa(m)的二次方=bh(m) mod n 是否成立,若成立则接收此文件及签名,否则拒绝接收或宣布无效。(3)DSS 数字签名算法产生签名与验证参数:Stepl A 选择一个大素数 p, p-1 应具有大素数因子 q,选择一个 g 属于 Zp 使 g 的次数为 q,再选择一个 x 属于 Zp,并计算 y=g

24、的 x 次方 mod p;Step2 公开验证参数p, q, g, y), A 保存x作为秘密的签名参数;Step3 选用一通用的散列函数 h( )。签名算法:Stepl A 将需签名的文件 m 编码后映射成 h(m),任意选择 k 属于 Zp,计算 k 的-1次方使 k 的-1 次方 k=1 mod q;Step2 计算 r=(g 的 k 次方 mod p) mod q 及 s=k 的-1 次方(h(m)+xr) mod q;Step3 将m, r, s)发送至 B 或 T。验证算法:Stepl B(或 T)先计算 u=h(m)s 的-1 次方 mod q 及 v=rs 的-1 次方 mod

25、 q;Sten2 检验(g 的 u 次方 y 的 v 次方 mod p) mod q=r 是否成立,若成立则接收此文件及签名,否则拒绝接收或宣布无效。签名算法的比较:(1)安全性由于求解 mod n (n = pq)的平方根问题以高概率等价于 n 的整数分解问题(Rabin 定理),所以 Rabin 算法的安全性与 RSA 大体相当。DSS 的安全性是建立在求离散对数问题上,至今虽未证明破解 DSS 与求解 q 阶乘法群的离散对数等价,但也未找到其他可绕开求离散对数的解法。整数分解与求离散对数的计算复杂度是近似的,因而上述三种签名算法的安全性大体相当。(2)参数选择DSS 算法参数的选择比前两

26、种算法要容易。RSA 算法出于安全性考虑,对参数 p、q 的选择有一些较严格的要求,如 p-kq(k 为较小自然数)应足够大、gcd(p-1,q-1)应比较小、p+1 和 q+1 都应至少含有一个充分大的素数因子等;Rabin 算法对参数 p、q 的要求与 RSA算法大体相同,但为了达到与 RSA 相当的安全性,其参数 p、q 应比 RSA 算法中稍大;DSS算法安全性的关键参数是 q,可比前两种算法中的 n 值略小,但应远大于单独的 p 和 q,其他参数虽多但都不难选取。(3)参数共享性RSA 算法和 Rabin 算法都无法共享参数:因为 DSS 算法可以对 k 有不同选择,所以可10以共享

27、参数 p、q、g,参数共享时至今尚未发现用户之间可以互相伤害的途径。(4)签名速度DSS 算法签名速度较慢。RSA 算法和 Rabin 算法签名时耗费时间的主要部分都是 mod p、mod q 的指数运算,这两种算法签名速度大体相同:DSS 算法签名时 mod p(pq)的指数运算所耗费的时间要比前两种算法长。(5)验证速度DSS 算法验证速度较慢。Rabin 算法验证时需进行一次 mod n 的平方运算,而 RSA 算法验证时需进行一次 mod n 的 e 次指数运算,因此 RSA 算法比 Rabin 算法要稍慢;DSS 算法验证时需要进行 2 次 mod p 的指数运算,因此 DSS 算法

28、验证速度较前两种算法慢,而Rabin算法验证速度最快。(6)签名印记长度DSS 算法签名印记较长。RSA 算法和 Rabin 算法的签名印记都是一个 mod n 数 Sa(m),只是 Rabin 算法多了 1 个很小的数 b;DSS 算法的签名印记是两个 mod q 数 r、s,比起前两种算法的印记 Sa(m)要长一些。(7)签名印记的重复性DSS 算法签名印记具有不重复特性。文件 m 和 h(m)完全相同时,用 DSS 算法签名时因每次可以选择不同的 k 产生签名印记,故 DSS 算法的签名印记每次可以不同;RSA 算法和Rabin 算法无此特性,但可以对算法作适当改进,以增加 1 个随机数

29、加长传送的数据为代价,使算法具有签名印记不重复的特性。Java 类库中已包含了实现一些著名签名算法(如 RSA、DSA 等)的类库,可以直接使用,这也是算法公开的好处。3.3 单向散列函数密码学中使用的单向散列函数将任意长度的消息压缩到某一固定长度的消息摘要。单向散列函数又称为单向 Hash 函数,它不是加密算法,却在密码学中有着广泛的应用,与各种加密算法有着密切的关系。它的模型为:=()其中,是待处理的明文,可以为任意长度;是单向散列函数,是生成的报文摘要,它具有固定的长度,并且和的长度无关。其中具有以下的单向性质:(1)给定和,很容易计算;(2)给定和,很难计算,甚至得不到的任何消息;(3

30、)给定,要找两个不同的1 和2,使得(1)=(2)在计算上是不可行的。根据单向散列函数的安全水平,可以将单向散列函数分成两类:强碰撞自由的单向散列函数和弱碰撞自由的单向散列函数。上面描述的是强碰撞自由的单向散列函数的性质。如果将第(3)条改为:给定和一个已知的消息,找另外一个不同的消息1,使得()=(1)在计算上是不可行的,就叫做弱碰撞自由的单向散列函数。显然强碰撞自由的单向散列函数比弱碰撞自由的单向散列函数安全性要高。因为弱碰撞自由的单向散列函数随着重复使用次数的增加安全性逐渐降低,强碰撞自由的单向散列函数则不会因其重复使用而降低安全性。因此在实际中要求使用强碰撞自由的单向散列函数。除此之外,在实际应用中还要求单向散列函数具有如下特点:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 医药卫生

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。