数字签名
数字签名(Digital Signature)(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,背后的思想是模仿传统手写签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签名的技术流程描述如下:
- 发送方使用摘要算法对原文HASH生成信息摘要;
- 发送方使用自己的私钥对信息摘要进行签名(加密);
- 发送方将原文本身和已签名的信息摘要一起发送出去;
- 接收方使用相同的摘要算法对接收的原文本身生成新的信息摘要;
- 接收方使用发送方的公钥对已签名的信息摘要进行验签(解密),获得信息发送者的信息摘要;
- 接收方比较这两个信息摘要是否相同,如果相同则确认信息发送者的身份和信息没有被修改过;否则,则表示被修改过。
数字信封
数字信封用于通信双方交换数据。发送方生成一个随机的报文密钥,使用报文密钥对发送内容进行加密(对称算法),再用接收方的公钥对报文密钥加密,最后将加密的报文密钥和加密的发送内容按PKCS#7标准,编码组成一个“数字信封”。发送方还可以为发送内容附加签名。
数字信封机制的具体流程如下:
- 消息发送方需要预先获得消息接收方的公钥。
- 消息发送方随机产生对称密钥,并用该密钥和对称算法对消息进行加密形成密文。
- 消息发送方用消息接收方的公钥和非对称算法对上述的对称密钥进行加密
- 消息发送方将消息密文和对称密钥密文形成数字信封一起发送给消息接收方
- 消息接收方收到数字信封(消息密文和对称密钥密文)
- 消息接收方使用自己的私钥和非对称算法对对称密钥密文进行解密后获得对称密钥明文
- 消息接收方使用上述对称密钥和对称算法对消息密文解密后获得消息明文