HTTP 向 HTTPS 演化的过程

367 阅读3分钟

一、http存在的缺点

  1. 传输文明,内容可能被窃听。
  2. 不验证通信方的身份,因此有可能遭遇伪装
  3. 无法证明明文的完整性,所以有可能被篡改。
上述问题都是没有加密的协议所存在的问题。
为了解决这些问题,HTTPS诞生了!

二、如何解决HTTP的安全问题?

HTTP协议本身的没有加密机制,但我们可以用 SSL (Secure Socket Layer 安全套接层,大概在传输层吧?) 建立安全通信线路。HTTP所传输的报文通过这条线路就能进行安全传输。改进过后的协议称之为 HTTPS (HTTP secure) , 意为 HTTP + SSL = HTTPS ,或 HTTP over SSL

SLL不仅提供加密处理,而且还使用数字证书的手段,可以用于确定通信方。证书由值得信赖的第三方机构颁发,是通过第三机构的私钥进行加密的,难以伪造。可以通过证书确认服务器和客户端的真实存在性。

HTTPS并非新的协议,只是引入了安全层SSL,演变成 HTTP 先和 SLL 通信,再由 SSLTCP通信。所谓的HTTPS,其实是身披SSL协议这层外壳的HTTP。 http vs https.png

图一 http vs https

三、加密方式 一般的加密方式有 对称加密非对称加密

对称加密 :若使用对称加密

  1. 一般先由客户端发起请求,向服务器发送 clientRandom + 加密套件列表
  2. 服务器接受到请求,向客户端发送 serverRandom + 选择的套件加密
  3. 客户端 clientRandom + serverRandom合成加密密钥,使用该密钥对http传输内容进行加密,并进行传输
  4. 由于 服务器 也知道加密方式和随机数,也可合成密钥,对加密过的密文进行解密

但这种加密方式,不可行。窃取者也知道 加密方式 和 随机数 ,也可以进行攻击、窃听、篡改

对称加密.png

图一 对称加密

非对称加密:若使用对称加密

  1. 一般先由客户端发起请求,向服务器发送 加密套件列表
  2. 服务器接受到请求,向客户端发送 选择的套件加密+公钥
  3. 客户端用公钥加密数据,并进行传输
  4. 服务器用私钥解密

这种加密方式也不太可行。1.非对称加密效率太低,花费时间多,影响用户的使用体验。2.无法保证服务器发给客户端的数据安全,因为服务器使用私钥进行加密,黑客也可以截取公钥,并对内容进行窃听。

非对称加密.png

图三 非对称加密.

那咋办呢???

组合呗! 在数据传输阶段仍然使用对称加密,但是对称加密的密钥我们采用非对称加密进程传输

终极组合!

  1. 一般先由客户端发起请求,向服务器发送 对称加密套件列表+加密套件列表+clientRandom
  2. 服务器接受到请求,向客户端发送 非对称加密套件+加密套件+serverRandom+数字证书,而数字证书内含公钥
  3. 客户端使用 clientRandom+serverRandom+暗藏的加密方式 生成随机数 pre-master客户端用公钥加密随机数 pre-master,并进行传输
  4. clientRandom+serverRandom+pre-master 合成对称加密密钥 master secret,使用密钥对数据进行对称加密,并传输数据。

这样,传输的数据就安全了!因为黑客无法 用截取的公钥 对 pre-master进行解密,从而保证了 pre-master的安全,从而保证了对称加密的安全。

完整的http请求流程.png

图四 最终的混合加密流程

推荐课程 极客时间的《浏览器工作原理与实践》