数字签名原理

数字签名
2004年8月28日,第十届全国人民代表大会常务委员会第十一次会议通过了《中华人民共和国电子签名法》,并于2005年4月1日开始施行 。
数字签名( )是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果 。该结果只能使用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性 。数字签名的目的是通过网络信息安全技术手段实现传统的纸面签字或者盖章的功能,以确认交易当事人的真实身份,以保证交易的安全性、真实性和不抗抵赖性 。数字签名具有与手写签名一样的特点,是可信的、不可伪造的、不可重用的、不可抵赖的以及不可修改的 。数字签名至少应满足以下三个条件:
数字签名就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明 。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证 。
一个数字签名方案一般由签名验签算法、签名密钥以及验签密钥组成 。签名密钥是秘密的,只有签名者掌握;而签名算法、验证密钥是公开的,以便于他人验证 。典型的数字签名方案有RSA签名体制、Rabin签名体制、签名体制、DSS标准和SM2签名体制 。
数字签名原理
数字签名是对非对称加密技术与数字摘要技术的综合运用,指的是将通信内容的摘要信息H(M)使用发送者的私钥进行加密,然后将密文与原文一起传输给信息的接收者,接收者通过发送者的公钥信息来解密被加密的摘要作息,然后使用与发送者相同的摘要算法,对接收到的内容采用相同的方式产生摘要H‘(M),与解密的摘要H(M)进行对比,如果相同,则说明接收到的内容是完整的,在传输过程中没有受到第三方的篡改,否则说明通信内容已被第三方修改 。
【数字签名原理】数字签名是通过一个单项函数(Hash函数)对要传送的信息进行处理,得到一个用于认证信息来源并核实信息在传递过程中是否发生变化的一个字符串;数字签名提供了对信息来源的确定并能检测信息是否被篡改 。
数字签名过程
每个人都有其特有的私钥,且都是对外界保密的,而通过私钥加密的信息,只能通过其对应的公钥来进行解密 。因此,私钥可以代表私钥持有者的身份,可以通过私钥对应的公钥来对私钥拥有者的身份进行校验 。
通过数字签名,能够确认消息是消息发送方签名并发送过来的,因为其他人根本假冒不了消息发送方的签名,他们没有消息发送者的私钥 。而不同的内容,摘要信息千差万别,通过数字摘要算法,可以确保传输内容的完整性,如果传输内容在中途被篡改了,对应的数字签名的值也将发生改变 。
数字签名的产生过程:

数字签名原理

文章插图
数字签名的验证过程:
举例说明如下:
假设Alice要发送一份电子合同文件给Bob,Alice签名步骤如下:
Bob收到Alice发送的电子合同文件以及数字签名后,为确信电子合同文件是Alice认可的,验证步骤如下:
Bob使用与Alice相同的Hash算法,计算收到电子文件的消息摘要;
Bob使用Alice的公钥解密来自Alice的加密消息摘要,恢复Alice原来的消息摘要;
Bob比较自己产生的消息摘要和恢复出来的消息摘要之间的异同 。若两者相同,则表明电子合同文件来自Alice;反之,则表示电子合同文件已被修改 。
不同的摘要算法以及不同的非对称加密方式,数字签名的算法也不尽相同 。