一篇文章带你了解Https加密

很多人都知道Https是经过加密的通信协议,相对于Http是安全的,今天这篇文章带大家了解一下Https是怎么加密的。

首先我们知道的是,Http直接通过明文在浏览器和服务器之间传递消息,很容易被别人监听抓取到通信内容。

这就是Https诞生的原因,Https采用对称加密和非对称加密结合的方式来保护浏览器和服务端之间的通信安全。

下面我们先来了解一下对称加密和非对称加密:

对称加密:加密和解密都是用同一个密匙

非对称加密:密匙成对出现,分为公匙和私匙,公匙和私匙之间不能互相推导,公钥加密需要私钥解密,私钥加密需要公钥解密

下面说一下两种加密算法的优缺点

对称加密速度快,非对称加密速度慢

对称加密相对非对称加密不安全,只要密匙暴露,和明文传递没有区别;非对称加密可以将公匙暴露,供客户端加密,服务端使用私匙解密

对称加密速度快,很适合作为Https的加密算法,但是服务器和浏览器之间怎么传递这个密匙是一个很大的问题,如果传递密匙的过程被别人监听,那么就相当于明文传递,所以显然对称加密不适合作为Https加密的算法。

那么再考虑一下非对称加密,服务器端只要把公匙暴露出来,让浏览器端使用公匙对消息进行非对称加密,服务器端使用私匙对消息进行解密,就可以实现浏览器端到服务端的消息传递。

但是服务端向浏览器端回复消息的时候,只能使用私匙进行加密,让浏览器端使用公匙对消息进行解密,问题就出现了,网站的公匙是所有人都知道的,那么所有人都可以对服务端回复的消息使用公匙进行解密,这样消息被别人拦截后就可以跟明文一样解读了,所以服务端向浏览器传递消息的问题就解决不了了。

既然对称加密和非对称加密都实现不了,那么一种对称加密和非对称加密相结合的加密方式就应运而生,下面详细说一下整个加密流程

1.浏览器使用Https的URL访问服务器,要求建立SSL链接

2.服务器接收到SSL链接后,发送非对称加密的公匙A给浏览器

3.浏览器生成随机数,作为对称加密的密匙B

4.浏览器使用服务器返回的公匙A,对自己生成的对称加密密匙B进行加密,得到密匙C

5.浏览器将第4步生成的密匙C发送给服务器

6.服务器使用自己的私匙D对接收到的密匙C进行解密,得到对称加密密匙B

7.浏览器和服务器之间使用密匙B作为对称加密密匙进行通信

这样浏览器和服务器之间就共享了一个对称加密的密匙B,而且不会被任何人监听和拦截到。之后浏览器和服务器之间的消息传递,使用密匙B来进行对称加密就好了。

这种加密方式不仅安全,而且非对称加密只使用了一次,后续所有通信消息都是用对称加密,效率也会比非对称加密高。

当然了,Https的加密远比这一篇文章说的复杂很多,还要涉及到证书以及证书的颁发等等,这里也只是简单的做出了Https加密的介绍,希望对大家有所帮助。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G1GQMC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券