|
数字签名(Digital Signature)是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。数字签名的目的是通过网络信息安全技术手段实现传统的纸面签字或者盖章的功能,以确认交易当事人的真实身份,保证交易的安全性、真实性和不可抵赖性。数字签名具有与手写签名一样的特点,是可信的、不可伪造的、不可重用的、不可抵赖的以及不可修改的。数字签名至少应满足以下三个条件:
|
|
|
|
(2)真实性。接收者能验证签名,而任何其他人都不能伪造签名。
|
|
|
(3)可鉴别性。当双方关于签名的真伪发生争执时,第三方能解决双方之间发生的争执。
|
|
|
一个数字签名方案一般由签名算法和验证算法组成。签名算法密钥是秘密的,只有签名的人掌握;而验证算法则是公开的,以便他人验证。典型的数字签名方案有RSA签名体制、Rabin签名体制、ElGamal签名体制和DSS(Data Signature Standard)标准。签名与加密很相似,一般是签名者利用秘密密钥(私钥)对需签名的数据进行加密,验证方利用签名者的公开密钥(公钥)对签名数据做解密运算。签名与加密的不同之处在于,加密的目的是保护信息不被非授权用户访问,而签名是使消息接收者确信信息的发送者是谁,信息是否被他人篡改。
|
|
|
下面我们给出数字签名工作的基本流程,假设Alice需要签名发送一份电子合同文件给Bob。Alice的签名步骤如下:
|
|
|
第一步,Alice使用Hash函数将电子合同文件生成一个消息摘要;
|
|
|
第二步,Alice使用自己的私钥,把消息摘要加密处理,形成一个数字签名;
|
|
|
第三步,Alice把电子合同文件和数字签名一同发送给Bob。Alice的签名过程如下图所示。
|
|
|
|
|
Bob收到Alice发送的电子合同文件及数字签名后,为确信电子合同文件是Alice所认可的,验证步骤如下:
|
|
|
第一步,Bob使用与Alice相同的Hash算法,计算所收到的电子合同文件的消息摘要;
|
|
|
第二步,Bob使用Alice的公钥,解密来自Alice的加密消息摘要,恢复Alice原来的消息摘要;
|
|
|
第三步,Bob比较自己产生的消息摘要和恢复出来的消息摘要之间的异同。若两个消息摘要相同,则表明电子合同文件来自Alice。如果两个消息摘要的比较结果不一致,则表明电子合同文件已被篡改。
|
|
|
|
|
|