其他分享
首页 > 其他分享> > 后端原理篇 -- 【非对称加密、数字签名、数字证书】

后端原理篇 -- 【非对称加密、数字签名、数字证书】

作者:互联网

非对称加密、数字签名和数字证书这三个名词,在对数据传输,特别是安全性要求高的场景中是很常见的。文章主要介绍这三者的原理和使用场景。

待解决问题

A给B发了一条短信,A如何保证信息不被窃听?B怎么确认信息是A发来的?如果信息是A发来的,怎么知道信息有没有被篡改过?
下面将通过非对称加密、数字签名和数字证书逐步解决问题。

非对称加密:

把秘钥分为公钥私钥。公钥是公开所有人都可以认领的,但私钥只有一个人知道。利用这个规则,通常有以下两种用法:

case 一:下图可以保证A发送的数据,只有B可以解密。防止报文被窃听
在这里插入图片描述

存在问题:B无法知道数据是A发送的。
case 二:对case一进行完善。下图可以保证只有B可以解密,也可以证明数据来源是A的。
在这里插入图片描述

存在问题:涉及到对整个报文进行两次加解密(加解密是个耗时的过程)。其中证明数据来源可以使用“数字签名”进行优化。

数字签名

利用摘要算法非对称加密算法,使接收者可以验证数据来源数据完整性
发送方对报文进行数字签名过程如下:

  1. 对数据原文进行hash运算,得到摘要。
  2. 对摘要进行私钥加密,得到签名。

通常会对数据原文和数字签名一起进行公钥加密,防止报文被窃听。
在这里插入图片描述

接收方接收到报文后,先用私钥解密得到明文A,再对明文A进行验签:

  1. 对明文A中的数据原文进行hash,得到摘要。
  2. 对摘要进行公钥解密 ,等到签名。
  3. 判断得到的签名跟明文A中的签名是否相等。

存在问题:数字签名验签过程用到发送方的公钥,如果此公钥被黑客的公钥替换了,那么黑客私钥加密过的报文,依然可以通过验签,接收方无法察觉

数字证书

针对数字签名存在发送方公钥容易被替换的问题,数字证书是怎么解决问题的呢?

  1. 发送方找“证书中心”(certificate authority),为公钥做认证,拿到“数字证书”。
  2. 发送方的请求报文,除了原文数据和“数字签名”,还会加上“数字证书
  3. 接收方接收数据后,用“证书中心”的公钥对数字证书进行数字签名验签,拿到发送方的公钥,再进行数字签名验证。
    在这里插入图片描述
    在这里插入图片描述

存在问题:
如何保证CA公钥的可靠性?
如果有多个发送方要发给同一个接收方,那接收方是不是需要存放多个数字证书?
以上两个问题可以通过“根证书”解决。通常接收方只需要存放CA给的一份“根证书”就够了。“根证书”存放CA公钥来验证所有CA颁发的“数字证书”。而“根证书”是自验证证书,绝对可靠的。

标签:公钥,私钥,数字签名,报文,--,原理篇,加密,数字证书
来源: https://blog.csdn.net/weixin_39805244/article/details/114241368