(5) 防抵赖:在现实生活中,当发送方对文件进行签名后,就不能对自己签名的文件抵赖。但如果接收方在接收被签名文件后,否认自己接收到发送方发送的文件。这样对其中一方就是伤害。在数字签名体制中,要求接收方在接收被签名文件后需要返回一个接收方进行签名的文件,给对方或者第三方,这样就能有效的防止接收方抵赖。
(6) 机密性:在现实生活中,手工签名后的文件如果丢失,文件的信息有可能泄漏或者被篡改。在数字签名的体制中,可以对需要保密的内容进行加密,如果文件的机密性不高,也可以不用加密[8]。
3.非对称数字签名算法的技术介绍
本论文主要介绍数字签名算法(Digital Signature Algorithm ,DSA),它也是一种非对称加密算法,被美国 NIST 作为数字签名标准(Digital Signature Standard, DSS)。被广泛的应用于需要数字签名的行业中。
非对称密钥加密也称为公开密钥加密,或者叫做公钥加密算法。使用公开密钥密码的每一个用户都分别拥有两个密钥:加密密钥和解密密钥,它们两者并不相同,并且由加密密钥得到解密密钥在计算机上是不可行的。每一个用户的解密密钥都是公开的。所有用户的公开密钥都将记录在作用类似于电话号码薄的密钥本上,而它可以被所有用户访问,这样每一个用户都可以得到其他所有用户的公开密钥。同时,每一个用户的加密密钥将由用户保存并严格保密(因此,解密密钥也称为私有密钥)[9]。
非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。公钥加密算法一般是将对密钥的求解转化为对数学上的困难问题的求解。非对称密码技术最具代表性的算法是DSA算法,其特点是1.运算速度较快;2.数据安全性高;3.易于接受者的验证操作。
4.数字签名实现
4.1 数字签名实现过程
在数字签名方面,目前应用比较广泛的是利用 DSA 计算签名和数字签名标准 DSS。其中,利用 DSA方法进行数字签名得到了广泛的应用。该方法的过程如下:
(1) 产生信息摘要。就是将需要被签名的文件输入一个散列函数中,生成一个固定的安全散列码。
(2) 发送方使用自己的私有密钥对需要被签名的文件进行签名,之后将签名好的文件发送给接收方。
(3) 接收方根据接收到的文件产生一个消息摘要,在使用发送方公布的公钥对签名文件进行验证。
(4) 接收方计算得到的消息摘要和使用公钥解密后的消息摘要相匹配,也就是说这个签名是有效的。
(5) 因为私有密钥只有发送方自己持有,所以也只有发送方能够产生有效的签名[10]。
4.2 数字签名实现过程流程图
数字签名实现过程如图1所示。
图1 数字签名流程图
5.数字签名在电子政务系统的设计
这是代码实现数字签名系统的过程,也是论文的核心。
5.1 JAVA环境介绍
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
Java具有最突出的特点:
(1) Java语言是简单的。
(2) Java语言是面向对象的。
(3) Java语言是分布式的。 数字签名在电子政务系统中的实现(3):http://www.youerw.com/jisuanji/lunwen_3073.html