一文看懂数字签名的概念及其原理

转载
1597 天前
8511
能链科技

文章来源:能链科技

在数字时代中,数字化文档的认证性、完整性和不可否认性,是实现信息化安全的基本要求。数字签名则是满足上述要求的主要方式之一,亦是现代密码学的研究内容之一。

数字签名有哪些形式?基于密码学的数字签名优势几何?有哪些常用的数字签名实现方案?这些都是理解数字签名的关键问题,我们将为大家带来系列介绍。


一、 数字签名的概念

小到一张试卷的签名,大到商业合同的签署,签名某种程度上是社会经济活动中“契约确认”的核心方式,从而确保契约的合法性和有效性。

在实际生活和工作中,手写签名是一种传统的文件确认方式,如签订协议、支付确认、批复文件等,其表明签名人对文件内容认可,并愿意承担与之相关的责任。

而在数字化应用系统中,发送者同样希望对数字消息进行签名,从而使消息的接收者可以识别伪造信息,更重要的是事后可以追踪到消息发送者来承担相关责任。但是数字信息和传统文件有着显著区别,也导致数字签名技术和传统签名技术有许多不同之处,主要体现在:

首先,传统的手写签名与对应文件通过物理(例如纸张)绑定,而数字信息没有确定的物理载体,所以需要使用算法将签名与消息绑定在一起,可认证。

其次,在签名验证的方法上,传统的手写签名是由消息接收者用眼分辨签名的特征是否相符,结果受验证者主观思想影响,而数字信息通常由电子设备处理,故而签名验证结果依赖于数学算法,较客观。

最后,传统手写签名复制(字体模仿)相对数字信息的复制(粘贴)来说较为困难,因此数字签名需要有更好的方法实现签名的不可重用,防伪造。

简单来说,数字签名(Digital Signature),一般是附加在某一电子文档中的一组特定的符号或代码,用于表示签发者的身份以及签发者对电子文档的认可,并能被接收者用来验证该电子文档在传输过程中是否被篡改或伪造。因此,基于密码学的数字签名有着如下的优势:

- 消息源认证性:数字签名可以表示签发者的身份,也就是说具有消息源认证性。

- 不可否认性:数字签名生成时需要输入签名者私钥。换句话说,数字签名对应唯一签名主体,并且签名者需要承担不可推卸的责任,即数字签名可以实现不可否认性。

- 消息完整性:数字签名可以检查电子文档在传输过程中是否被篡改或伪造,即保障消息完整性。


二、数字签名原理

从上述定义表明,一个完整的数字签名方案由三部分组成:密钥生成算法、签名算法和验证算法。

密钥生成算法:是根据系统参数为签名者生成公钥和私钥,并用于加解密;

签名算法:是产生数字签名的某种算法,一般是使用签名主体的私钥,对数据摘要进行运算,生成数字签名;

验证算法则是检验一个数字签名是否有效(即是否由指定实体生成)的某种算法,基于公钥进行数字签名验证。


上述图示便描述了数字签名验证的完整过程:

发送方A将消息用Hash算法产生一个消息摘要,这个消息摘要有两个重要特性:抗碰撞性(指找到散列值相同的两条不同的消息是非常困难的)和摘要长度固定(MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节),使得任何消息产生的签名值长度是一样的。

发送方A产生消息摘要后,用自己的私钥对摘要进行加密,这个加密后的消息摘要就是数字签名,随后发送方A将消息与签名发给接受方B。在这里有人会疑问,为什么对是对消息摘要进行加密签名?对于较大文件而言,消息摘要即可将消息转换成简短的信息摘要,用以验证信息的完整性,还可压缩信息长度提高签名效率。

B接受到消息及其签名后,用发送方A的公钥解密这个签名,获得由发送A生成的消息摘要,接着用发送A所用的Hash算法重新生成所获得的消息的摘要,并对比这两个摘要。如果相同,说明这个签名是发送A针对这个消息的有效签名;如果不相同,则签名无效。

基于上述数字签名的基本原理,人们设计出了众多不同种类的数字签名方案,接下来我们将就基于RSA的签名方案、基于离散对数的签名方案、基于椭圆曲线的签名方案为代表,陆续为大家介绍这些常用的实现方案。