数字签名是指通过某种密码运算生成一系列符号及代码组成电子密码进行签名的过程。数字签名是一种认证机制,以公钥技术和单向散列函数为基础,使得消息的产生都可以添加一个起签名作用的标识。数字签名是目前电子商务中应用最普遍、可操作性最强、技术最成熟的一种电子签名方法,采用规范化的程序和科学的方法,用于鉴定签名人的身份以及对一项电子签名内容的认证。签名保证了消息的来源和完整性,即数字签名能验证出数据在传输过程中有无改变,确保传输电子文件的完整性、真实性和不可替代性。数字签名的过程如图1-4所示。
图1-4
数字签名的实现有下列几个步骤:
(1)发送方使用摘要函数(如MD5)对信息M生成消息摘要MD5(M)。
(2)发送方使用自己的私钥,用某种数字签名算法来签名消息摘要(用私钥对摘要进行加密),得到数字签名。
(3)发送方把消息M和数字签名一起发送给接收方。
(4)接收方通过使用与发送方同一个摘要函数对接收的消息生成新的摘要。与第一步中生成的摘要进行对比,如果一致,就说明收到的消息没有被修改过;再使用发送方的公钥对数字签名解密来验证发送方的签名。
由数字签名的过程可以看出,数字签名很好地保证了如下几个方面的安全性:
(1)完整性:摘要函数算法实现的是不可逆的过程,如果消息在传输过程中遭到破坏或被窃取,接收方根据接收到的报文还原出来的消息摘要不同于用公钥解密得出来的摘要,这样保证了数据在传输过程中的安全性。
(2)不可否认性:由于公钥与私钥是一一对应的关系,发送方的私钥只有自己知道,因此它不能否认已发送的消息。
(3)认证:由于公钥和私钥是一一对应的关系,因此接收方用发送方的公钥计算出来的摘要跟发送方生成的摘要是一致的,这样就能证明消息一定是该发送方发送出来的。