数字签名技术概览( 五 )


(19)基于属性的签名(attribute-based signature):2011年 Hemanta K. Maji, Manoj Prabhakaran 和 Mike Rosulek提出基于属性的签名的概念 。 基于属性的签名允许一个从权威机构获得一系列属性的签名人能够创建依赖于其属性的某个断言的消息签名 , 即验签人根据消息签名的合法性可以判断签名人是否具有一系列属性的组合 。 相关的概念还有基于策略的签名(policy-based signature) 。 基于策略的签名机制中签名人只有在满足权威机构指定的策略的情况下才生成对消息的签名 , 且签名不泄露策略信息 。 这类签名可以简洁地实现细粒度的身份认证、策略控制等 。
(20)功能签名 (functional signature): 2014 年 Elette Boyle, Shafi Goldwasser 和 Ioana Ivan 提出功能签名的概念 。 功能签名机制中除了有一个主签名密钥可以签名任意消息外 ,还有函数签名密钥 。 对应某个函数 f 的函数签名密钥只能用于对函数计算结果数据 f(m) 生成签名 。 功能签名可用于构建单轮代理机制 , 允许客户方将函数计算外包给服务方 , 而客户方可以验证计算的正确性 。
04
数字签名算法标准
伴随着数字签名技术应用的发展 , 数字签名算法标准也逐步形成 。 1991 年美国 NIST 公布DSA 数字签名算法并在 1994 年正式将 DSA 纳入FIPS 186 中成为数字签名标准 DSS 。 基于椭圆曲线的 DSA 算法(ECDSA)在 1995 年被提交到 IEEE P1363 工作组并在 2000 年被纳入 FIPS 186-280 。 为了加强 RSA 算法的安全性 , RSA 公司在 1993 年发布 PKCS #1 版本1.5 , 其中包括了使用消息填充机制(EMSA-PKCS1-v1_5)的RSA 签名算法(RSASSA-PKCS1-v1_5) 。 该版本在 1998 年被重新发布为 RFC 2313 。 这两个签名算法成为了产业界的事实标准 , 例如互联网广泛使用的 SSL/TLS 协议(在 2018 年 TLS1.3 发布以前)只支持以上两种签名算法 。 伴随可证明安全性的理念逐步被业界接受 , 2002 年RSA 公司发布 PKCS #1 版本 2.2 , 纳入了签名算法 RSA-PSS , 该版本在 2016 年被重新发布为RFC 8017 。 Schnorr 算法也具有安全性易于证明的优势 。 Daniel J. Bernstein 等根据 Schnorr 算法在爱德华椭圆曲线上(Edwards-curve)设计了数字签名算法 EdDSA 并在 2017 年发布 RFC8032 Edwards-Curve Digital Signature Algorithm (EdDSA)。 2018 年新制定的 TLS 协议 1.3 版目前只支持以下数字签名算法:RSASSA-PKCS1-v1_5、RSA-PSS、ECDSA、EdDSA 。 除美国外 , 俄罗斯在1994年发布数字签名算法标准 GOST R 34.10-94 , 并在2001年发布椭圆曲线数字签名算法标准GOST R34.10- 2001 。 GOST R34.10-2001在2012年更新为 GOST R34.10-2012 。 韩国在1998年发表韩国基于证书的数字签名算法 KCDSA 和 EC- KCDA , 对应标准发布于[88,89] 。 德国在 2005 年发布德国椭圆曲线数字签名算法标准 EC- GDSA 。 中国在 2012 年发布 SM2 椭圆曲线数字签名算法标准 , 在 2016 年发布 SM9 标识密码数字签名算法标准 。 作为重要的国际标准化组织 , ISO/IEC发布了一系列的数字签名算法标准 。 标准系列包括:
(1)带消息恢复的数字签名算法标准系列ISO/IEC 9796 , 包括基于大数分解的 9796-2、基于离散对数的 9796-3 。
(2)带附录的数字签名算法标准系列 ISO/ IEC 14888 , 包括基于大数分解的 14888-2、基于离散对数的14888-3 。
(3)匿名签名算法标准系列 ISO/IEC 20008 , 包括基于群公钥签名的 20008-2 。
(4)盲签名算法标准系列 ISO/IEC 18370 , 包括基于离散对数的 18370-2 。
(5)可修订的签名算法系列 ISO/IEC 23264 , 包括基于非对称技术的可修订签名23264-2(正在制定中) 。 ISO/IEC14888 系列标准包含着一系列广泛使用的通用数字签名算法:(1)14888-2 收录了7个基于大数分解的数字签名算法 , 包括:RSA、RW(Rabin-Williams)、 GQ1、GQ2、GPS1、GPS2、ESIGN 。 其中RSA和 RW 算法使用 PSS 消息编码 , GQ1是基于标识的签名算法 。
(2)14888-3 收录了 14 个基于离散对数的数字签名算法 , 其中:①基于素域上离散对数的签名算法有:DSA、KCDSA、SDSA(Schnorr-DSA)、Pointcheval/ Vaudenay 算法;②基于椭圆曲线上离散对数的签名算法有 EC-DSA(美国)、EC-KCDSA(韩国)、EC-GDSA( 德国)、EC-RDSA(俄罗斯 GOSTR34.10-2012)、EC-SDSA(Schnorr 签名算法)、EC-FSDA(完整Schnorr 签名算法)、SM2(中国);③采用双线性对的基于标识的签名算法有IBS1(Cha-Cheon-IBS)、IBS2(Hess-IBS)、Chinese IBS(SM9) 。
这里顺带提及另外一个和数字签名密切相关的技术:不可否认(non-repudiation)技术 。 ISO/IEC 制定了系列的不可否认技术标准 ISO/ IEC13888 , 包括:基于对称密钥机制的 13888-2、基于非对称密钥机制的 13888-3 。 13888-2 标准包括基于对称密码的不可否认机制、源不可否认机制、投递不可否认机制、时间戳令牌机制;13888-3 标准包括基于非对称密钥的源不可否认机制、投递不可否认机制、提交不可否认机制以及传输不可否认机制 。