非对称加密

非对称加密有两个密钥:公钥和私钥。

特点:如果用公钥进行加密,只有用对应的私钥才能解密;如果用私钥进行加密,只有用对应的公钥才能解密。

最有名的非对称加密算法:RSA 算法

主要的应用场景:

  • 加密数据

  • 数字签名

  • 身份认证

加密

通信双方把自己的公钥发送给对方,发送方发送消息时使用自己的私钥加密,接收方使用对应的公钥解密。

真实的应用场景

服务端把公钥发送给用户,用户使用公钥加密,发送密文给服务端,服务端通过私钥解密。

HTTPS 中,只在建立安全连接阶段使用非对称 RSA 加密,用于安全的协商一个对称加密密钥,之后全程使用对称加密通信,这是由于非对称加密效率低。

数字签名

用于校验身份。

由于每个人的私钥是保密且独一无二的,这就非常适合用来作为自己的身份ID。自己使用自己的私钥,别人通过公钥验签。

签名:正文 —-> hash值 —-> 使用私钥加密hash值 —-> 生成签名

验签:

签名 —-> 使用公钥解密签名 —-> hash值

正文 —-> hash值

判断两个 hash 值是否一致,一致就表示正文没有被修改,且是公钥对应的人发送的。

数字证书

数字证书用来保证公钥是可信的,防止公钥被冒充。公钥是公开的,很容易被冒充,不能随便使用别人提供的公钥,此时,需要引入第三方作为担保 CA。最终,形成了一整套数字证书体系。

公钥提供者(一般是网站)把自己的公钥提交到 CA 机构,机构把它封装成数字证书,交给网站,网站把自己的证书发送给用户,用户校验提取里面的公钥使用。

CA 使用自己的私钥对网站的公钥进行签名,防止篡改。

CA 是分级的,上级对下级签名,根证书机构是自签名的。只要根证书是可信的,后续就都可信。根证书由操作系统和浏览器预装。

想让网站使用 HTTPS 协议,需要申请数字证书。

参考

一文彻底搞懂加密、数字签名、数字证书! - 掘金 (juejin.cn)