一文彻底让你明白https是如何加密的

Posted 我想月薪过万

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文彻底让你明白https是如何加密的相关的知识,希望对你有一定的参考价值。

http和https之间的关系

由于http是明文传输,对数据安全没有保障。为了保证数据传输的安全性,https诞生了。

https是在应用层和传输层之间,增加了一层ssl加密。对于如何加密的,是本篇博客的重点。

对称加密

(1)在发送数据之前,服务器先生成一把密钥

(2)然后先通过明文传输的方式将密钥传递给客户端

(3)之后服务器给客户端传送数据的时候,会用这把密钥 对数据进行加密

(4)客户端收到加密数据之后,用刚刚收到的密钥对数据进行解密

缺点:因为密钥是明文传输,所以容易被人截获

非对称加密

客户端和服务器各自都拥有两把钥匙,一把钥匙是公开的,称为公钥;一把是保密的,称为私钥。用公钥加密的数据,只有对应的私钥才能解密。

(1)服务器给客户端传送数据的时候,会用客户端明文传输的公钥 对数据进行加密

(2)客户端收到加密数据之后,用自己的私钥对数据进行解密

缺点:耗时长,非对称加密的加密时间是对称加密的上百倍。

对称加密 + 非对称加密结合

(1)客户端先把非对称加密的公钥,明文传输给服务器。

(2)服务端在接收到公钥之后,会生成一把用于对称加密的密钥。

(3)服务端用之前接收到的公钥对刚刚生成的密钥进行加密,然后传输给客户端。

(4)客户端通过自己的私钥对服务器传过来的被公钥加密过的密钥进行解密。

缺点:如果在步骤一的时候,公钥被第三方截取,之后客户端与第三方走完了上述的四个步骤,建立了对称加密的传输。第三方再和服务器走完上面的四步。如此,第三方拥有了和客户端进行对称传输的密钥,以及和服务器传输的密钥。而这个第三方的存在,服务器和客户端都没办法察觉到。

关键性问题

关键问题就是客户端不知道和自己建立连接的是不是真的目标服务器。

服务器不知道和自己建立连接的是不是真的目标客户端。

https加密过程

数字证书:大家都认可的认证中心(CA)

服务器产生数字证书的过程:

1、服务器在给客户端传送公钥的过程中,会把公钥以及服务器的个人信息通过哈希算法生成信息摘要

2、之后服务器利用CA提供的私钥对信息摘要进行加密,来形成数字签名

3、将没有经过哈希算法处理的个人信息以及公钥,和数字签名合并在一起,形成数字证书

客户端拿到数字证书之后:

1、就会利用CA提供的公钥对数字证书里面的数字签名进行解密来得到信息摘要

2、然后对数组证书里面的服务器公钥以及服务器的个人信息进行hash得到另一份信息摘要

3、最后把两份信息摘要进行对比,如果一样,则证明是服务器。

以上是关于一文彻底让你明白https是如何加密的的主要内容,如果未能解决你的问题,请参考以下文章

一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC

一文让你彻底搞懂 WebSocket 的原理

一文彻底明白linux中的selinux到底是什么

一文彻底明白linux中的selinux到底是什么

让你彻底搞明白项目中如何接入读写分离

一文带你彻底明白如何实现动态添加子节点及修改子节点属性