数字签名综述

发布时间 : 星期六 文章数字签名综述更新完毕开始阅读

数字签名综述

摘 要 本文从数字签名的定义以及作用出发,详细分析了数字签名的各种实现方法,并指

出了数字签名目前面临的一些安全威胁,同时对它未来的发展提出了一些展望。

关键词 数字签名 电子商务 对称加密 非对称加密 公钥/私钥

引 言 电子商务,电子政务的快速发展,对网络信息安全提出了越来越高的要求,如何保障信息的安全性与可靠性,是一个非常重要的问题。数字签名技术正是为了满足网络信息安全的需求而产生的,它是一种用来保证用户发送消息的安全性与可靠性的身份验证技术,数字签名技术的应用与发展,为建立安全可信的电子交易环境提供了强有力的技术支持,为电子商务的进一步发展奠定了坚实的基础。

1、数字签名的定义

早在2001年7月,联合国贸易法委员会就通过了《电子签名示范法》,对数字签名的定义做了如下表述:“指在数据电文中以电子形式所含、所附或在逻辑上与数据电文有联系的数据,可用于鉴别与数据电文相关的签名人和表明签名人认可数据电文所包含的信息。”[1]

数字签名与手写签名一样,主要目的是证明消息发送者的身份。但是,与手写签名不同的是,数字签名是在计算机上实现的,黑客很容易通过剪裁和粘贴的方法对签名进行伪造。所以数字签名体系,必须采用一些加密算法来确保所发信息的安全。

数字签名是以加密技术为实现基础,通过一种单向函数对要传送的报文进行处理,得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串。

2、数字签名的作用

数字签名是随着信息时代的到来应运而生的,作为保障网络信息安全的重要技术手段之一,它与传统的手工签名或印章一样,保障了数据的完整性、真实性和不可抵赖性,数字签名作为一种身份验证技术,其作用主要有:

1)防冒充(防伪造)。签名应是独一无二的。签名过程必须由签名者本人(消息的发送者)用自己的私钥来完成,而这个私钥只有签名者自己拥有,因此,可以防止签名被他人假冒,但这要求用户必须保管好自己的私钥。

2)身份鉴别。传统的手工签名,通信双方可以直接见面,各自的身份也就一清二楚;但是在网络环境下,接收方必须能够验证发送方所宣称的身份。

3)防篡改 (防破坏信息的完整性)。传统的手工签字,对于一份300页的合同,我们会

面临这样的问题:我们只需在合同末尾签字,还是要在合同的每一页上都要签?如果只是在合同末签,对方是否会偷换其中的几页?对于数字签名,则不存在这一问题,数字签名与原始文件是一个统一的整体,不可能被篡改,从而保证了数据的完整性。

4)防重放。在日常生活中,A向 B借钱,会给B打一张欠条,当A把钱还给B后会把这张欠条收回,防止A日后再次向自己索要已归还的钱。从这个例子,我们可以简单的理解重放攻击,重放攻击就是防止文件被重用。在数字签名中,可以采用对签名报文添加流水号,时间戳等技术,防止重放攻击。

5)防抵赖。防抵赖包括两个方面,一是签名者事后不能否认自己签过的文件,二是信息接收者不能否认自己确实已收到文件。接收者只要保存好签名的报文,签名者就无法抵赖;要防止接收者的抵赖,只要求接收者返回一个自己签名的表示收到的报文给对方,或者是第三方,或者引入第三方机制。这样,双方就均无法抵赖了。

6)机密性 (保密性)。数字签名对信息进行了加密,使得黑客难以窃取或窃取后由于没有密钥进行解密而无法得到原始数据,因此,数字签名具有机密性。当然,签名的数据如果不要求机密性,也可以不用加密。

3、数字签名的基本原理

数字签名实际上是在原始数据之后附加的一些数据或是对原始数据所做的密码变换。数字签名应是所发送数据的函数,他与原始数据相关。

其原理是:发送者用Hash函数对原文进行加密,产生一个128bit的数字摘要,发送者再用自己的私钥对摘要进行加密,这样就形成了数字签名,将原文和数字签名一并传给报文的接收者,接收者用发送者的公钥对报文附加的电子签名解密,得到一个摘要,同时对收到的原文用Hash函数加密产生有一个摘要,这两个摘要相互对比,如果相同,说明原文件是完整的,在传输过程中没有被破坏。通过数字签名可实现对原始报文的验证和防抵赖。

4、数字签名的实现方法

实现数字签名的方法有很多种,目前采用较多的是对称加密技术和非对称加密技术。对称加密是消息的发送者和接收者拥有共同的密钥,通常运用于孤立的环境中;非对称加密,密钥是由公开密钥和私有密钥组成的密钥对,利用私钥进行加密,用公开密钥进行解密。公开密钥无需保密,可以公开传播,但私钥必须保密,丢失时须向鉴定中心进行报告。

(1)使用对称加密和仲裁者实现数字签名。例如,发送方A跟接收方B进行通讯,A要对自己发送给B的文件进行数字签名,以向B证明是自己发送的,并防止他人伪造。A与仲裁者C拥有一个共同的密钥记为KAC,同样,B与仲裁者共有的密钥为KBC,实现过程如图1

所示(其中S表示第三方的证明)

原文 S KBC加密 S KAC解密 原文 KAC加密 密文 密文 密文 密文 KBC解密 原文 发送方A 仲裁者C 发送方B 图1 使用对称加密和仲裁的数字签名机制

1)A用自己的密钥对原文进行加密,并将它发给仲裁者C。 2)仲裁者用与A同样的密钥对消息进行解密。

3)仲裁者把这个解密的消息及自己的证明S(证明消息来自于A)用KBC加密。 4)仲裁者把加密的消息送给B。

5)B用与仲裁者共享的密钥KBC对收到的信息进行解密,得到原始来自A的消息和仲裁者的证明S。

这种签名方法是否安全呢?首先,仲裁者是通信双方A,B都信赖的;第二,KAC是A与仲裁者才有的,别人无法获得,所以签名不可伪造;第三,如果A不承认自己发送的消息,仲裁者的证明S可以证明消息的来源就是A。所以,这种签名过程是不可抵赖的。 (2)使用公开密钥体制进行数字签名。与对称加密相比,公开密钥加密体制不再需要第三方去签名和验证。整个数字签名过程更加简单,具体过程如图2。

原文 发送方A 发送者的私钥加密 发送者的公钥解密 原文 接收方B 图2 使用公开密钥的数字签名机制

1)A用他的私钥加密消息,从而对文件签名。

2)A将签名的消息发送给B。

3)B用A的公开密钥解密,从而验证消息。

A的私钥只有他自己知道,别人是无法伪造的,B只有用A的公钥才能对收到的文件进行解密,这证明消息确实是由A发送的,A无法否认自己的签名:同样,此种签名也是不可重用的,因为签名是消息的函数,它无法用到其他消息上。我们知道对称加密算法有它自己的缺点,那就是加密速度较慢,如果要对较大的信息进行签名,效率会比较低。因此,我们可以采用对称加密算法和非对称加密算法两者相结合的方式,具体方案如下。

(3)使用公开密钥体制与Hash函数进行数字签名,利用Hash函数对原文加密,产生信息摘要,发送者用自己的私钥加密此摘要,形成数字签名。如图3所示。

Hash 算法 摘要 发送者 私钥加密 数字 签名 Internet 原文 原文 Hash算法 发送者 数字 公钥解密 签名 对比? 摘要 摘要 发送方A 接收方B

图3 使用公开密钥与Hash函数的数字签名机制

1)A用Hash函数加密原文,产生信息摘要。

2)A使用私人密钥对生成的摘要进行加密,形成数字签名。 3)A把消息与数字签名一起发送给B。

4)B收到消息和签名后,用A的公开密钥解密数字签名;再用同样的算法对消息运算生成信息摘要。

5)B把自己生成的摘要与解密的数字签名相比较,看是否匹配,从而验证签名。 在上面所述的签名方案中,不仅可以实现数字签名的可信、不可重用、不可抵赖、不可伪造等目的,而且由于签名是从消息的摘要产生的,可以实现对消息的完整性验证。

(4)加时间戳的签名。加时间戳可以解决签名和文件被一起重用的问题。比如:A在一张数字支票上签名,然后交给B;B去银行验证支票后把钱从A的账号转到自己账号上。一次完整的交易看似完成了,但是,如果一旦B是一个贪得无厌的不法之徒,他就会拿着这

联系合同范文客服:xxxxx#qq.com(#替换为@)