信息安全案例教程:技术与应用(第2版)
上QQ阅读APP看书,第一时间看更新

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

微课视频3-8

保护数据的不可否认性和可认证性

数据在存储、传输和处理中可能遭遇否认或伪造,这就破坏

了数据的不可否认性和可认证性。确保信息的不可否认性,就是要确保信息的发送者无法否认已发出的信息或信息的部分内容,信息的接收者无法否认已经接收的信息或信息的部分内容。确保信息的可认证性,除了要确保信息的发送者和接收者的真实身份,防止冒充和重放,还要确保信息内容的真实性。实现不可否认性和可认证性的措施主要有数字签名、消息认证、可信第三方认证技术等。本节将介绍数字签名与消息认证的相关技术和方法,可信第三方认证技术将在第4章介绍。

3.4.1 数字签名

1.数字签名的概念

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

数字签名是一种以电子形式存在于数据信息之中的或作为附件或逻辑上与之有关联的数据,可用于接收者验证数据的完整性和数据发送者的身份,也可用于第三方验证签名和所签名数据的真实性。

2.数字签名的特性

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

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

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

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

3.数字签名的实现

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

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

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

2)A将签名S发给B。

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

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

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

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

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

基于公钥密码和哈希函数的数字签名如图3-13所示,步骤如下。

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

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

3)B用A的公钥PKAS解密,验证签名,获得原始摘要,表示为,同时对明文计算哈希值,记作h'=H(M),如果h=h',则验证签名成功,否则失败。

图3-13 基于RSA和哈希函数的数字签名

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

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

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

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

图3-14 基于公钥密码和哈希函数的数字签名和加密

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

4.数字签名的应用

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

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

● 对压缩消息的签名,它是附加在被签名消息之后或某一特定位置上的一段签名信息。

若按明文和密文的对应关系划分,以上每一种又可以分为两个子类。

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

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

比特币区块链中,每个交易都需要用户使用私钥签名,只有采用该用户公钥验证通过的交易,比特币网络才会承认。

由于数字签名的应用涉及法律问题,我国已于 2005 年正式实施《中华人民共和国电子签名法》,并于 2019 年修正。读者可以完成课后思考与实践第 28 题,进一步了解《电子签名法》。

3.4.2 常用数字签名算法

目前主要采用基于公钥密码体制的数字签名,包括普通数字签名和特殊数字签名。

1.普通数字签名

1991年,NIST公布了数字签名标准(Digital Signature Standard,DSS),该标准于1994年底正式成为美国联邦信息处理标准FIPS 186。

DSS最初只包括数字签名算法(Digital Signature Algorithm,DSA),后来经过一系列修改,目前的标准为2013年公布的扩充版FIPS 186-4,其中还包含了基于RSA的数字签名算法和基于ECC的椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)。

2.特殊数字签名

特殊数字签名有盲签名、代理签名、群签名等。

1)盲签名(Blind Signature)是指,消息拥有者的目的是让签名人对该消息进行签名,但又不想让签名人知道该消息的具体内容;而签名人并不关心消息中说些什么,只是保证自己可以在某一时刻以公证人的资格证实这个消息的存在。盲签名在保证参与者密码协议的匿名性方面,具有其他技术无法替代的作用。

2)代理签名(Proxy Signature)是指,原始签名人授权他的签名权给代理签名人,然后让代理签名人代表原始签名人生成有效的签名。

3)群签名(Group Signature)是指,在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。

3.4.3 消息认证

1.消息认证的概念

在信息安全领域中,常见的信息保护手段大致可以分为保密和认证两大类。目前的认证技术分为对用户的认证和对消息的认证两种方式。用户认证用于鉴别用户的身份是否合法,本书将在第4章中介绍。消息认证主要是指接收方能验证消息的完整性及消息发送方的真实性(可认证性),也可以验证消息的顺序和及时性。消息认证可以应对网络通信中存在的针对消息内容的攻击,如伪造消息、篡改消息内容、改变消息顺序、消息重放或者延迟。

当收发者之间没有利害冲突时,消息认证确保完整性对于防止第三者的破坏来说是足够了。但当收者和发者之间有利害冲突时,消息认证就不仅要确保完整性,也要确保可认证性了,此时需借助满足前述要求的数字签名技术。

2.消息认证码

消息认证过程中,产生消息认证码(Message Authentication Code,MAC)是消息认证的关键。为了实现消息认证的完整性和可认证性功能,消息认证码通常可以通过常规加密和哈希函数产生。

图3-8中,用对称密钥加密消息得到的密文C可以作为消息认证码。因为,消息的发送方和接收方共享一个密钥,对于接收方而言,只有消息的发送者才能够成功将消息加密。当然,这种方式下的消息认证码无法将消息与任何一方关联,也就是发送方可以否认消息的发送,因为密钥由双方共享。

图3-12中,发送方用自己的私钥对消息加密得到的签名S也可作为消息认证码。但是前面分析过,对整个消息内容进行加密,在实际应用中代价过高、不可行。

图3-13和图3-14中,通过哈希函数对明文消息计算得到的消息摘要可以作为消息认证码。目前,基于哈希函数的消息认证码(HMAC)是常用的生成方式,HMAC已被用于安全套接字层/传输层安全(SSL/TLS)和安全电子交易(SET)等协议标准中。

小结

消息认证码通常有以下几种方法。

1)用对称密钥对消息及附加在其后的哈希值进行加密。

2)用对称密钥仅对哈希值进行加密。对于不要求保密性的应用,这种方法能够减少处理代价。

3)用公钥密码中发送方的私钥仅对哈希值进行加密(签名)。这种方式不仅可以提供认证,还可以提供数字签名。

4)先用公钥密码中发送方的私钥对哈希值加密(签名),再用接收方的公钥对明文消息和签名进行加密。图3-14已经展示了该方案。这种方式比较常用,既能保证保密性,又具有可认证性和不可否认性。

拓展阅读

读者要想了解密码的历史以及密码学原理与技术,可以阅读以下书籍资料。

[1] 鲍尔. 密码历史与传奇 [M]. 徐秋亮,蒋瀚,译. 北京:人民邮电出版社,2019.

[2] 文仲慧. 密码学浅谈 [M]. 北京:电子工业出版社,2019.

[3] 彭长根. 现代密码学趣味之旅 [M]. 北京:金城出版社,2015.

[4] 王善平. 古今密码学趣谈 [M]. 北京:电子工业出版社,2012.

[5] 结城浩. 图解密码技术 [M]. 3版. 周自恒,译. 北京:人民邮电出版社,2016.

微课视频3-9

保护数据的存在性