数字签名技术概览

引用本文:程朝辉.数字签名技术概览[J].信息安全与通信保密,2020(7):48-62.
摘 要
本文对数字签名技术进行概览综述 , 以便读者对该技术有一个比较全面的了解 。 文章首先介绍数字签名技术的基本原理 , 然后回顾数字签名技术四十年发展的历程以及期间发生的一些具有标志性的事件 。 另外针对特殊功能需求 , 学术界提出了许多具有附加属性的数字签名技术 , 本文对这类技术进行一个梳理和概览 。 文章最后对一些重要的数字签名技术标准进行汇总 。
关键词:数字签名技术;数字签名算法标准;带属性的数字签名;公钥密码内容目录:1 数字签名原理2 数字签名技术发展历程3 具备附加属性的数字签名技术4 数字签名算法标准5 结 语
01
数字签名原理
人类在很长时间都是以手写签名、印章或指模等来确认作品、文件等的真实性 , 包括认定作品的创作者、文件签署者的身份 , 推定作品的真伪或者文件内容的真实性 。 数字签名技术用于在数字社会中实现类似于手写签名或者印章的功能 , 即实现对数字文档进行签名 。 数字签名技术实际上能够提供比手写签名或印章更多的安全保障 。 一个有效的数字签名能够确保签名确实由认定的签名人完成 , 即签名人身份的真实性(authentication);被签名的数字内容在签名后没有发生任何的改变 , 即被签名数据(也称签名消息或简称消息)的完整性(integrity);接收人一旦获得签名人的(包括被签名数据的) 有效签名后 , 签名人无法否认其签名行为 , 即不可抵赖性(non-repudiation) 。
本文中的数字签名技术特指采用非对称密码机制来实现的签名技术 。 一个签名人具有一对密钥 , 包括一个公钥和一个私钥 。 签名人公开其公钥 , 签名验证人(简称验签人)需要在验证签名前获取签名人的真实公钥 。 如果验签人需验证多个签名人的签名 , 则必须预先知道每个签名人和其公钥的对应关系 。 在满足以上前提的情况下 , 签名人就可以使用其私钥对任意消息进行签名操作 , 生成签名值;任意知道公钥的验签人都可以通过验签操作验证对消息的签名值相对于某公钥是否有效 。 若待签名消息过大时 , 可以先采用杂凑算法生成消息的摘要(类似于数据的指纹)后再对摘要进行数字签名 。 为了实现真实性、完整性和不可抵赖性功能 , 数字签名机制需要满足一定的安全需求 。 简单地讲 , 安全的数字签名机制要求:1)在没有私钥的情况下 , 生成某个消息的有效签名在计算上是不可行的;2)根据公钥和消息/ 签名对 ,计算出签名私钥是不可行的 。 更加严格的数字签名机制安全定义是在选择消息攻击下具有不可伪造性(Existential Unforgeability under Adaptive Chosen Message Attack: EUF-CMA) , 即攻击者可任意选择多项式个消息请签名人生成并获得对应的签名 , 仍然无法生成一个新消息的合法签名 。 更高安全性的定义是选择消息攻击强不可伪造性(Strong Existential Unforgeability under Adaptive Chosen Message Attack: SUF-CMA) , 即攻击者可任意选择多项式个消息请签名人生成并获得对应的签名 , 仍然无法生成一个新消息的合法签名或者一个已签名消息的新合法签名 。
02
数字签名技术发展历程
从 Whitfield Diffie 和 Martin Hellman 在 1976 年发表历史性的论文《密码学的新方向》提出数字签名的概念到今天 , 数字签名技术经过了四十多年的发展 。 这四十多年中 , 数字签名技术在理论研究上经历了从一个可能的数学概念 , 发展到基于计算复杂性问题的具体实现、到扎实的安全模型定义、到安全性可证明的高效构造、再到满足各类差异化需求的特性签名技术 。 数字签名技术在应用上从小规模的商业和个人数据保护开始 , 伴随着互联网和电子商务的发展 , 到今天已经发展成为数字社会的安全基石之一 。
作为一个相对全面的概览 , 下面列出数字签名技术发展过程中的一些重要学术工作和重大事件 。 这个列表无意列出过去四十年所有重要的工作和事件 。 未出现在列表中的学术工作或相关事件并不表示其重要性比列出的低 。 (1)1976 年 Whitfield Diffie 和 Martin Hellman 在《密码学的新方向》一文中提出数字签名的概念 。
(2)1978 年 Ronald Rivest, Adi Shamir和Len Adleman发表RSA数字签名算法 。
(3)1978 年 Michael O. Rabin 发表一次数字签名(one-time digital signature)算法Rabin 。
(4)1979 年 Ralph Merkle 发 表 Merkle 数字签名算法 。 该算法也是一种一次数字签名算法 , 但和 Rabin 算法有重要区别 。 该算法成为一类基于杂凑的数字签名(hash-based digital signature)算法(例如 XMSS)的基础 。 这类算法在后量子计算时代可能依然安全 。 算法中的Merkle 树具有众多应用 , 如区块链使用 Merkle 树存储交易记录 。