HTTPS实现原理

32 阅读2分钟

前言

HTTPS的实现原理,其实就是S的实现原理,在HTTP协议的基础上,安全到底是怎么实现的,我们接下来就要围绕这个问题研究一下。

HTTPS与HTTP的区别

image.png

先来看这张图,无论是国际标准OSI七层协议还是其他标准,SSL/TLS都处于会话层部分,为了管理会话,实现可靠传输,保证数据交互的可靠性。

HTTPSHTTP
安全性高,加密传输(SSL/TSL,混合加密 对称+非对称)、身份认证、保证完整性、不可否认/抵赖安全性低, 明文传输、身份冒充、传输过程可能被篡改、无法保证事务真实性
端口:443端口:80
灵活性:低灵活性:高
访问速度:慢访问速度:快
经济适用度:收费(CA机构证书)经济适用度:免费

HTTPS工作流程

TCP工作流程(3次握手)

image.png

HTTPS工作流程(TLS1.3)

  1. Client发起请求(端口443)
  2. Server返回公钥证书(Server中有公钥和私钥,只发送公钥给Client)
  3. Client验证证书
  4. Client生成对称密钥,用公钥加密后发给Server
  5. Server使用私钥解密,得到对称密钥
  6. C/S双方使用对称密钥:
    • 加密明文并发送
    • 解密密文得到明文

总结:C/S两端一开始会使用非对称加密,最后都会用对称密钥进行数据传输

image.png

HTTPS的工作流程

image.png

如图,TCP三次握手后,开始执行TLS的4次握手过程:

  1. 客户端发送请求,建立TLS连接
  2. 服务端制定密码套件规则,将公钥传回到客户端
  3. 客户端根据服务端给定参数(算法ECDHE)生成对称密钥,加密后返回给服务端
  4. 服务端告诉客户端交互完成(finished)

更详细的握手过程

image.png

TLS1.3版本 image.png

image.png

TLS1.3 比TLS1.2进行了性能优化处理 3次握手

  1. Clien携带公钥发起请求(端口443)
  2. server计算出对称密钥,用client公钥加密服务端参数并返回
  3. client验证证书、私钥解密服服务端参数
  4. client生成对称密钥
  5. C/S双方使用对称密钥

HTTPS实现原理:机密性

image.png

HTTPS实现原理:完整性

image.png

HTTPS实现原理:身份认证和不可否认

image.png

HTTPS应用

HTTPS性能优化

HTTPS相比于HTTP更加的安全,当然效率也会略低一些,我们既然选择了安全,就要接受性能方面的损失,所以我们在使用HTTPS的同时,也要不断进行性能优化处理。