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

能链科技
个人专栏
热度 : 45817

数字签名(Digital Signature),一般是附加在某一电子文档中的一组特定的符号或代码。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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