浅析HTTPS加密传输协议的基本原理

百度百科摘要:   HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
PS:HTTP 三次握手相对简单,只确认网络联通,即可通过常规流程进行数据传输,具体详情不过赘述。

1. HTTPS & HTTP

HTTPS 是具有安全性的 SSL 加密传输协议 ,HTTP是超文本传输协议,信息是明文传输 HTTPS 浏览器显示绿色安全锁,HTTP 无显示或显示不安全 HTTPS 标准端口443 ,HTTP 标准端口80 HTTPS 基于传输层,HTTP 基于应用层 HTTPS 比 HTTP更加安全搜索引擎更友好

2. HTTPS的握手过程相对比较复杂

原因:他需要有加密传输的一个过程,并且要确定最后我们数据传输的时候要用到的真正的密钥

3. 公钥 & 私钥

私钥:存放在服务器上的解密工具 公钥:都能拿到的一串加密的字符串 原理:公钥与私钥主要用于握手时的传输,即待传输的数据先通过公钥加密,传输到服务器后再由私钥解密 。因此即使有抓包截取,也无私钥解密。

4. HTTPS的握手详解:

流程: 在这个传输的过程当中客户端会先生成一个随机数,然后传输到服务端,同时中间还会带上客户端这边支持的一个加密套件(有很多不同的加密套件)。 然后服务端拿到这个随机数之后会先存着,同时服务端也生成一个随机数,这个随机数会伴随服务端的证书,也就是公钥,一起传输给客户端。 客户端拿到了服务端的随机数之后也先存着,接下来通过服务端传给他的这个公钥,会生成一个预主秘钥。 生成预主秘钥过程中也会有生成一个随机数(所以总共是有三个随机数产生)。然后生成这个随机数之后,再用公钥加密了,传输给服务器这边。 这个数据传输到服务器之后,服务器通过私钥解密拿到了预主秘钥,就是随机字符串,然后客户端和服务端同时对这三个随机数进行一个算法的操作,就生成一个主秘钥。 有了主秘钥之后,那么,后期数据的传输,则全部是通过主秘钥进行过加密的。
要点: 这个过程就是一个没有办法被中间人解释的一个过程。因为他使用的是公钥进行加密的数据,只有服务端这边有私钥进行解密。 由于会涉及到一个加密套件,因为最终服务端会选择一个加密套件,要客户端这边支持的,然后两边确定同时使用这同一个加密套件,对这三个随机数进行一个算法的操作,生成一个主秘钥。 因为最后一个随机数是只有客户端和服务端他们自己知道的。中间人是根本拿不到的,所以,他们生产的这个主秘钥也是中间人没有办法破解的。 因为两边主秘钥是一样的,所以两边都能够对数据加密之后进行一个解密,那么中间人因为没有办法知道这个主秘钥,即没有办法对数据进行解密。
至此,这中间的一个数据传输即变成了一个安全的传输!

5. 图解

6. HTTPS的应用面

目前互联网极度开放的时代下,为确保数据传输,防止劫持,HTTPS极为重要。

HTTPS 安全性相对 HTTP是有巨大提升的,但是互联网的安全永远是相对的,绝对安全是不存在的。

经验分享 程序员 微信小程序 职场和发展