购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 数字签名与数据不可否认性和可认证性

数据在存储、传输和处理中可能遭遇否认或伪造,这就破坏了数据的不可否认性和可认证性。确保信息的不可否认性,就是要确保信息的发送者无法否认已发出的信息或信息的部分内容,信息的接收者无法否认已经接收的信息或信息的部分内容。确保信息的可认证性,就是要确保信息的发送者和接收者的真实身份,防止冒充和重放。实现不可否认性和可认证性的措施主要有数字签名,可信第三方认证技术等。本节将介绍数字签名相关的技术和方法,可信第三方认证技术将在第4章介绍。

3.3.1 数字签名

1.数字签名的概念

在传统的以书面文件为基础的日常事务处理中,通常采用书面签名的形式(如手写签名、印章、手印等),来确保当事人的身份真实和信息的不可否认。这样的书面签名具有一定的法律意义。在以计算机为基础的数字信息处理过程中,应当采用电子形式的签名,即数字签名(Digital Signature)。

数字签名是一种以电子形式存在于数据信息之中的,或作为附件,或逻辑上与之有关联的数据,可用于辨别签署人的真实身份,并标明签署人对数据信息内容认可的技术。

2.数字签名的特性

数字签名主要有以下特性。

●不可否认。签署人不能否认自己的签名。

●不可伪造。任何人不能伪造数字签名。

●可认证。签名接收者可以验证签名的真伪,也可以通过第三方仲裁来解决争议和纠纷;签名接收者还可通过验证签名,确保信息未被篡改。

3.数字签名的实现

根据数字签名的特性,数字签名可用于接收者验证数据的完整性和数据发送者的身份,也可用于第三方验证签名和签名数据的真实性。

(1)基于公钥密码体制的数字签名

图3-12展示了公钥密码体制用于数字签名的过程。步骤如下:

1)A用自己的私钥 SK A 对明文 M 进行加密,形成数字签名,表示为

2)A将密文C发送给B。

3)B用A的公钥 PK A C 进行解密,验证签名,表示为

图3-12 基于公钥密码的数字签名

因为从 M C 是经过 A 的私钥加密,只有 A 才能做到,因此 C 可当作 A M 的数字签名。任何人只要得不到A的 SK A 就不能篡改M,因此以上过程获得了对消息来源的认证功能,发送方也不能否认发送的信息。

上述这种方案存在着一定的问题,特别是信息处理和通信的成本过高,因为加密和解密是对整个信息内容进行的。实际应用中若是再传送明文消息,那么发送的数据量至少是原始信息的两倍。我们可以运用散列函数来对此方案进行改进。

(2)基于公钥密码体制和散列函数的数字签名

基于公钥密码和散列函数的数字签名方案如图3-13所示。步骤如下:

1)A用散列函数对发送的明文计算散列值,即消息摘要,记作 H M ),再用自己的私钥 SK A 对消息摘要进行加密,形成数字签名,表示为

2)A将明文M和签名C发给B。

3)B用A的公钥PK A 对签名C解密,验证签名,获得原始摘要,表示为 ,同时对明文计算散列值,记做 h ′= H M ),如果 h h ′,则验证签名成功,否则失败。

图3-13 基于RSA和散列函数的数字签名

如果第三方冒充发送方发出了一个明文,因为接收方在对数字签名进行验证时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的,这样就能确保发送方身份的真实性。

请注意,图3-12和图3-13与图3-9中加密、解密时运用公钥、私钥的不同。在数据加密过程中,发送者使用接收者的公钥加密所发送的数据,接收者使用自己的私钥来解密数据,目的是保证数据的机密性;在数字签名过程中,签名者使用自己的私钥签名关键性信息(如信息摘要)发送给接收者,接收者使用签名者的公钥来验证签名信息的真实性。

(3)基于公钥密码和散列函数进行数字签名和加密

在上述的数字签名方案中,对于发送信息的不可否认性和可认证性是有保障的,但不能保证机密性,即使是图3-12中对整个明文进行加密的情况,因为任何截取到信息的第三方都可以用发送方的公钥解密。如图3-14所示,是同时进行数字签名和加密的方案。

图3-14 基于RSA和散列函数的数字签名

上面介绍的数字签名过程都涉及密钥分发中心(Key Distribution Center,KDC),这是通信双方均信任的实体,必要时可为双方提供仲裁。

4.数字签名的应用

按照对消息的处理方式,数字签名的实际应用可以分为两类。

●直接对消息的签名,它是消息经过密码变换后被签名的消息整体。

●对压缩消息的签名,它是附加在被签名消息之后或某一特定位置上的一段签名信息。若按明文和密文的对应关系划分,以上每一种又可以分为两个子类。

●确定性(Deterministic)数字签名。明文与密文一一对应,对一个特定消息的签名,签名保持不变,如基于RSA算法的签名。

●随机化(Randomized)或概率式数字签名。它对同一消息的签名是随机变化的,取决于签名算法中随机参数的取值。一个明文可能有多个合法的数字签名,如ElGamal签名。

由于数字签名的应用涉及法律问题,我国已于2005年正式实施电子签名法。读者可以在完成本章思考与实践中的第20题时,进一步了解电子签名法。

3.3.2 常用数字签名算法

目前主要采用基于公钥密码体制的数字签名,包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、椭圆曲线数字签名算法等。特殊数字签名有盲签名、代理签名、群签名等。

1993年,NIST公布了数字签名标准(Digital Signature Standard,DSS),从而使公钥加密技术得到广泛应用。DSS最初只支持DSA(Digital Signature Algorithm)的数字签名算法,它是ElGamal签名方案的改进。该标准后来经过一系列修改,目前的标准为2013年公布的该标准的扩充版FIPS PUB 186-4,其中包含了基于RSA和ECC的数字签名算法。

DSA算法属于公开密钥算法,但不能用于加密,也不能用于密钥分配,可用于接收者验证数据的完整性和数据发送者的身份,也可用于第三方验证签名和所签名数据的真实性。

DSA是ELGamal签名方案的一个变形,所有有关ElGamal签名方案的一些攻击方法也可能对DSA有效。DSA算法的安全性基于解离散对数问题的困难性,该签名算法具有较强的兼容性和适用性。

DSA算法的速度比RSA算法慢,两者签名计算时间大致相同,但验证签名的速度DSA是RSA的10~100倍。 3fPevx182M2as99+iGqUercbCpZlrstJwYLZcNhCW5/hOFub6dmiH5D1XdCRd7Dz

点击中间区域
呼出菜单
上一章
目录
下一章
×