数字签名必须保证能够实现以下三点功能:
- 报文鉴别:接收者能够核实发送者对报文的签名。
- 报文的完整性:接收者确信所收到的数据和发送者发送的完全一样而没有被篡改过。
- 不可否认:发送者事后不能抵赖对报文的签名。
采用公钥算法要比采用对称密钥算法更容易实现数字签名。
1 数字签名的实现
- 签名:A 用私钥对明文 X 进行 D 运算得到某种不可解读的密文
- 核实签名:B 用 A 的公钥对密文进行 E 运算,还原出明文 X
- “报文鉴别”的实现:除 A 外没有别人持有 A 的私钥,所以除 A 外没有别人能产生密文
- “报文的完整性”的实现:如果其他人篡改过报文,因为无法得到 A 的私钥进行加密,B 对篡改过的报文解密后会得到不可读的明文,就知道被篡改过。
- “不可否认”的实现:将明文 X 和密文传给第三方公证者,公证者用 A 的公钥可证实。
2 具有保密性的数字签名
上述过程仅对报文进行了签名,对报文 X 本身却未保密。
用接收方的密钥进行加密,可以同时实现秘密通信和数字签名