数字签名的使用

李盛老师

数字签名的使用

  1概述

  1.1概念与功能

  数字签名是防止他人对传输的文件进行破坏.以及确定发信人的身份的手段该技术在数据单元上附加数据,或对数据单元进行秘密变换.这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,从而达到保护数据,防止被人进行伪造的目的。简单说来,数字签名是指用密码算法,对待发的数据进行加密处理,生成一段数据摘要信息附在原文上一起发送,接受方对其进行验证,判断原文真伪其签名思想是签名只能南一个人(个体)创建,但可以被任何人校验.

  数字签名技术可以解决数据的否认、伪造、篡改及冒充等问题,满足上述要求的数字签名技术有如下主要功能:(1)发送者事后不能否认自己发送的签名;(2)接收者能够核实发送者发送的签名;(3)接收者不能伪造发送者的签名;(4)接收者不能对发送者的原文进行篡改;(5)数据交换中的某一用户不能冒充另一用户作为发送者或接收者

  1.2数字签名与传统手写签名差别

  (1)签署文件方面:一个手写签名是所签文件的物理部分,而数字签名不是,所以要使用其他的办法将数字签名与所签文件“绑定”。

  (2)验证方面:一个手写签名是通过和一个真实的手写签名相比较来验证的而数字签名是通过一个公开的验证算法来验证:

  (3)签名的复制:一个手写签名不容易被复制,因为复制品通常比较容易被鉴别来:而数字签名很容易被复制,因为一个文件的数字签名的复制品和原文件是一样的:所以要使用数字时问戳等特殊的技术避免数字签名的重复使用。

  (4)手书签名是模拟的,且因人而异。数字签名是0和1的数字串,因人和消息而异。

  一个安全有效的签名方案必须满足以下要求:1)任何人都可以验证签名的有效性;2)除了合法的签名者外,其他人伪造签名是困难的;3)对一个消息的签名不可复制为另一个消息的签名;4)签名的消息不可被篡改,一旦被篡改,则任何人都可以发现消息与签名的不一致;5)签名者事后不能否认自己的签名。

  安全的数字签名实现的条件:发方必须向收方提供足够的非保密信息,以便使其能验证消息的签名,但又不能泄露用于产生签名的机密信息,以防止他人伪造签名。此外,还有赖于仔细设计的通信协议:

  2原理

  数字签名有两种:一种是对整体消息的签名,一种是对压缩消息的签名。每一种又可分为两个子类:一类是确定性(Deterministi)数字签名,其明文与密文是一一对应的`,它对特定消息的签名不变化;一类是随机化的(Randomized)或概率式数字签名。

  目前的数字签名技术大多是建立在公共密钥体制的基础上,其工作原理是:

  (1)签名:发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,将原文与数字签名一起发送给接受方。

  签名体制=(M,S,K,v),其中M:明文空间,S:签名的集合,K:密钥空间,V:证实函数的值域,由真、伪组成。

  签名算法:对每一m∈M和每一k∈K,易于计算对m的签名s=Sigk(M)∈S

  签名算法或签名密钥是秘密的,只有签名人掌握。

  (2)验证:收方验证签名时,用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果二者匹配,说明经签名的电子文件传输成功。

  验证算法:

  Verk(S,M)∈{真,伪}={0,l1

  3基于身份的数字签名

  3.1优势

  1984年Shamir提出基于身份的加密、签名、认证的设想,其中身份可以是用户的姓名、身份证号码、地址、电子邮件地址等。系统中每个用户都有一个身份,用户的公钥就是用户的身份,或者是可以通过一个公开的算法根据用户的身份可以容易地计算出来,而私钥则是由可信中心统一生成。在基于身份的密码系统中,任意两个用户都可以安全通信,不需要交换公钥证书,不必保存公钥证书列表,也不必使用在线的第三方,只需一个可信的密钥发行中心为每个第一次接入系统的用户分配一个对应其公钥的私钥就可以了。基于身份的密码系统不存在传统CA颁发证书所带来的存储和管理开销问题。

  3.2形式化定义

  基于身份的数字签名由以下4个算法组成,

  Setup(系统初始化):输入一个安全参数k,输出系统参数param、和系统私钥mk,该算法由密钥产生机构PKG运行,最后PKG公开params,保存mk。Extract(用户密钥生成):输入params、mk和用户的身份ID,输出用户的私钥diD,该算法由PKG完成,PKG用安全的信道将diD返回给用户。Sign(签名):输入一个安全参数r、params、diD以及消息M,输出对}肖息M的签名盯,该算法由用户实现。Verify(验证):输入params、签名人身份ID、消息m和签名,输出签名验证结果1或0,代表真和伪,该算法由签名的验证者完成。其中,签名算法和验证算法与一般签名方案形式相同。

  4数字签名在电子政务中的应用

  4.1意义

  数字签名的过程和政务公文的加密/解密过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也各不相同。数字签名使用的是发送方的密钥对,发送方用自己的私钥进行加密,接收方用发送方的公钥进行解密。这是一个一对多的关系,即任何拥有发送方公钥的人都可以验证数字签名的正确性。政务公文的加密/解密则使用接收方的密钥对,这是多对一的关系,即任何知道接收方公钥的人都可以向接收方发送加密公文,只有唯一拥有接收方私钥的人才能对公文解密。在实际应用过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密,解密;另一个密钥对用来对公文进行加密懈密,这种方式提供了更高的安全性。

  4.2形式

  4.2.1个人单独签名

  由于政务公文的文件相对来说都比较大,所以一般需要先对所要传输的原文进行加密压缩后形成一个文件摘要,然后对这个文件摘要进行数字签名。一般由两个阶段组成:对原文的数字签名和对数字签名的验证。

  (1)对原文的数字签名

  先采用单向散列哈希算法对所要传输的政务公文x进行加密计算和压缩,推算出一个文件摘要z。然后,公文的发送方用自己的私钥SKA对其加密后形成数字签名Y,并将该数字签名附在所要传送的政务公文后形成一个完整的信息包(X+Y)。再用接收方的公钥PKB对该信息包进行加密后,通过网络传输给接收方。

  (2)对数字签名的验证

  接收方收到该信息包后,首先用自己的私钥SKB对整个信息包进行解密,得到两部分信息:数字签名部分Y和政务公文原文部分x;其次,接收方利用发送方的公钥PKA对数字签名部分进行解密,得到一个文件摘要Z;接着,接收方也采用单向散列哈希算法对所收到的政务公文原文部分进行加密压缩,推算出另外一个文件摘要z1。由于原文的任何改动都会使推算出的文件摘要发生变化,所以只要比较两个文件摘要z和z1就可以知道公文在传输途中是否被篡改以及公文的来源所在。如果两个文件摘要相同,那么接收方就能确认该数字签名是发送方的,并且说明文件在传输过程中没有被破坏。通过数字签名能够实现对原始报文的鉴别。

  4.2.2多重数字签名

  在电子政务的应用中,有时也需要多个人批阅同一份文件,这就需要用到多重数字签名,多重数字签名与现实环境中多人书面签名的最大区别在于书面签名的长度与签名人数成正比,而多重数字签名的长度与个人单独签名长度相同。根据签名顺序和过程的不同,又可分为有序多重签名和广播多重签名。

  有序多重数字签名是由文件的发送者规定好签名的顺序,每一位签名者只要验证前一位签名者的签名信息,如果通过验证,就在原来的基础上加上自己的数字签名后把文件发送给下一位签名者,如果验证失败则终止签名过程。最后一名签名者要负责把文件和最终的签名传输给接收者。多重数字签名的实现可以与电子政务的实际工作流程结合应用,以达到简单实用的目的。