HTTPS 的端到端加密为什么可靠,为什么必要

HTTPS 问题作为一个面试重点相信大家已经非常熟悉了,但个人觉得大部分相关文章都忽略了一些关键点,希望本文能抛砖引玉,帮助您更深入的理解它。

先决条件

先熟悉以下内容后本文才可能对你有所帮助。

  • HTTPS 认证基本流程
  • 证书机构(CA)、证书、数字签名、私钥、公钥之间的关系
  • 中间人攻击

为什么可靠

信任链的起点:本地根证书

大部分相关文章都没有强调“本地”这一点,个人认为这才是 TLS 的精髓。我们从中间人攻击的角度反向来看 TLS 为什么可靠。

Chales 工具的原理为典型的中间人攻击:

可以看出,任何经网络获取的内容都可能已然被中间人替换。真正可以信任的只有本地的东西,即内置在操作系统或浏览器的根证书。

信任链为:本地根证书 => 证明远程获取的域名证书未被替换 => 证明服务端公钥未被替换 => 之后是 HTTPS 其他流程。

对于上图中的 Charles 中间人而言它已经暴露,本地无法验证 Charles 提供的证书(发现伪造),识别并阻断了中间人攻击。因而使用 Charles 或其他代理工具前,我们需要手动信任它提供的证书,才能让中间人正常工作。

为什么不可靠:手动信任证书

我们立马能看到它的不可靠性,Chales 就是活例子,抓包工具已然解密了我全部 HTTPS 请求(同时也能篡改),达成了中间人攻击。手动信任不可靠的证书就能破坏证书信任链。

因此,我们需要手动清理系统中不安全的证书。许多证书可能是预装的,我们并不知道已然信任它们。

一般网站证书只作用于特定域名,如果被替换也危害有限

假如操作系统信任了不安全的【根证书】,它可能让任意域名的中间人攻击成为可能! Windows 可能接收虚假的更新包,登录 Google 时也可能被窃取全部的账户信息。Panic!

谁是内鬼:如何用根证书实现 WFG

想象一种场景:许多设备因为不可抗力系统内置了不可信任的根证书。这个根证书可能签发某些域名的虚假证书用来窥探流量,比如 google.com 这个域名。

图片[1]-HTTPS 的端到端加密为什么可靠,为什么必要-烟雨网

这是一个真实世界的案例,且这个根证书已然暴露。对我们来说一个有用的关键问题是:根证书的这个操作是如何暴露的?HTTPS 流程中我们并不验证根证书,实际上是无条件信任的。

这个问题的解答至关重要,它反向解答了虽然手动信任证书可能破除信任链,但为什么 HTTPS 依然是可靠的。

内鬼的内鬼:客户端

什么阻止了根证书滥发其他域名的虚假证书?个人能想到的只有客户端逻辑。

客户端逻辑极有可能校验特定域名的证书真实性。比如根证书伪造 microsoft 域名证书,则 windows 大概知道。同理对 google 域名,Chrome 也大概知道,即使本地无法验证,也极有可能发送某些打点远程验证。

这一点在根本上限制了滥发其他域名的虚假证书的行为,因为客户端是内鬼,这种行为会立马暴露,毫无持续性。客户端也勉强可以说是去中心化的(Decentralization),我们无法完全控制装了内鬼证书的设备装了什么软件以及网络连通性。假如某一台带内鬼证书的设备装了正版 Chrome 并连通了 google 域名,内鬼证书立马就会暴露。而一旦暴露,对内鬼证书的签发机构也是灭顶之灾。

综上,对权威域名的证书伪造非常容易被发现,也因此这种伪造完全无可持续性。同时对权威域名的所有者公司而言,向第三方暴露自身的证书,代价也是高的不能承受。对商业公司来说,暴露特定域名的证书实属灭顶之灾。

因而我们可以说权威域名的 HTTPS 的确是可靠的。虽然在一些情况下,如 SNI 版本老旧时,依然会明文暴露请求的目标域名(从而导致 WFG),但至少传输内容的加密是绝对可靠的。

如果用户信息被泄露,内鬼只会存在于客户端和服务端,最常见的还是数据库泄露。

为什么必要

HTTPS 的推广的主要动力也不是为了实现网络隐私等昭昭天命,而是因为中间人攻击实际上无处不在且在不断发展,有了 HTTPS 才能保障通信的基本功能。

比如在 为什么那么多公司做前后端分离项目后端响应的 HTTP 状态一律 200? 这个问题里提到,在 HTTPS 未普及时,路由器,国产浏览器,甚至运营商都会亲自来劫持流量(中间人攻击)。

时至今日上述三者至少不会主动劫持流量,但中间人攻击的相关技术同样也是螺旋上升的。这个例子里的前端网页在某些边缘地区被随机劫持,它真实的原因其实是 某些 CDN 服务商没有全链路的保持 HTTPS (全链路成本高), 极有可能在 CDN 回源时的某个边缘链路用了 http 从而导致了劫持。

思考

  • 非对称加密中私钥可以证明对某个公钥的所有权。比如对客户端A/B,有公共信息数字签名和公钥。客户端A用私钥加密数字签名并提供,客户端B 能用公钥解密数字签名,则直接证明了客户端 A 对这个公钥的【所有权】。这也是区块链身份态的基本逻辑。
  • HTTPS 的可信决定了直接监听流量窥探业务逻辑是行不通的。我们时常听过的都市传说如公司直接获取 WX 聊天记录这种操作,内鬼应该是客户端,比如系统预装了截图软件,或 WX 自身。
  • 目前 ESNI 可以加密通讯目标域名,同时 FWG 封禁了 TLS 1.3 流量,侧面证明目前 FWG 运作主要还是靠 SNI ,则通信内容的加密还是有保证的,无需担心泄露。社工才是个人隐私的最大威胁。

结语

写文章本身也是一个学习的过程,也请读者能指出文章中的疏忽错漏之处。如果本文对你有所帮助,欢迎点赞收藏。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容