日常bb

日常bb

HTTPS加密解析

135
2023-07-24
HTTPS加密解析

HTTPS 加密解析

带着问题学习。

  1. 为什么用了 HTTPS 就是安全的?
  2. HTTPS 底层原理如何实现?
  3. 用了 HTTPS 就一定安全吗?

HTTPS 实现原理

HTTPS 在内容传输上使用的是对称加密,在证书验证阶段是非对称加密。

HTTPS 交互过程

证书校验阶段:

  1. 客户端发起 HTTPS 请求。
  2. 服务器返回 HTTPS 证书。
  3. 客户端验证证书是否合法,不合法提示告警。

数据传输阶段:

  1. 当证书验证通过后,在客户端本地生成随机对称密钥。
  2. 通过公钥加密随机对称密钥,并把加密后的随机数传输到服务器端。
  3. 服务器端通过私钥对随机对称密钥进行解密。
  4. 服务器端通过客户端传入的随机对称密钥构造对称加密算法,对返回结果内容加密后进行传输。

HTTPS 交互过程

问题

如何验证证书是否合法?

  1. 验证证书链。

客户端会验证服务器证书的有效性和合法性。首先,它会检查证书的签名是否有效,以确保证书未被篡改。然后,它会验证证书链,即证书链中的每个证书都应该是由受信任的根证书颁发机构签发的,以确保其受信任。

  1. 检查证书信任。

客户端使用内置的根证书颁发机构(CA)公钥来验证证书是否被受信任的颁发机构所签发。客户端会比对证书链中的每个证书的公钥,以确保其与内置的根证书颁发机构的公钥匹配。

  1. 检查证书有效期。

检查证书的有效期,确保证书在当前时间范围内有效。证书通常包含了一个开始和结束的有效期限。

  1. 验证域名匹配。

客户端会检查证书中所列的域名与服务器的域名是否匹配。这个验证步骤被称为“主机名验证”,它确保服务器证书只能用于指定的域名,防止中间人攻击。

为什么数据传输使用对称加密?

因为非对称加密的效率非常低,在 HTTP 的应用场景下端对端之间存在大量的交互,所以非对称加密的效率是不适用的。

为什么需要CA认证机构颁发证书?

为了防止中间人攻击。

中间人攻击

用了HTTPS会被抓包吗?

HTTPS 只防护用户在不知情的情况下通信被监听,主动安装证书授权可以进行解密抓包。

HTTPS 的数据是加密的常规下抓包工具代理请求后抓到的包内容是加密状态无法直接查看。

解决方法:使用抓包工具生成一个证书安装到客户端中模拟中间人攻击。

要防止被抓包需要采用应用级的安全防护。例如采用私有对称加密,同时做好移动端的反编译加固,防止本地算法被破解。

参考

胡凯莉-HTTPS加密解析

顾伊凡-彻底搞懂HTTPS的加密原理