解决HTTPS握手过程中的隐私泄漏问题(ECH)

TanHaX
2023-08-09 / 0 评论 / 238 阅读 / 正在检测是否收录...
在现代网络环境中,虽然我们的大部分网络通信都被加密,但是在某些情况下,我们的访问信息可能会被间接暴露。这是因为,即使是HTTPS传输,也有可能发生隐私泄露。那么,我们如何保护自己的访问隐私呢?本文将为您介绍一种加强隐私保护的新方法:Encrypted ClientHello。

HTTPS

在深入讨论问题之前,我们先来了解一下HTTPS协议的基本概念。HTTPS实际上就是HTTP + SSL/TLS,通过SSL/TLS对HTTP协议传输的数据进行加密,确保数据在传输过程中的隐私性和完整性。虽然发生在‘客户端’和‘服务器’之间的数据交换是被加密的,但是在TLS建立连接的过程却并不一定是加密的。

TLS握手的过程

TLS握手是在建立HTTPS连接之前进行的一系列交互过程,它有三个目的:

  1. 协商协议和加密套件:通信的两端确认接下来使用的TLS版本和加密套件。
  2. 验证身份:为了防止中间人攻击,服务器会向客户端发送证书,证书包含服务器的公钥和证书授权中心(CA)签名的身份信息,客户端可以用这些信息来验证服务器的身份。
  3. 生成会话密钥:生成用于加密后续数据传输的密钥。

握手过程中,有一个隐私泄漏的风险,就是SNI(Server Name Indication,服务器名称指示)的信息泄漏。TLS握手过程是TLS协议为保护通讯隐私而建立私钥和公钥的步骤。握手过程中,客户端会向服务器发送一个叫做 “ClientHello” 的消息,其中包括客户端支持的TLS版本和加密算法、一串随机字节串以及SNI等一些服务器信息。

但是,"ClientHello"消息中的SNI包含了访问的网站域名信息,而这个消息是明文传输的,所以如果被"中间人"监听,就会暴露你正在访问哪个网站。这样做的可能是你的ISP,公司,或者学校等,他们可以通过监视网络流量来获取这些信息。

TLS 1.3 握手

那么,面对这种情况,我们应该如何保护个人隐私呢?

Encrypted ClientHello(ECH)的解决方案

为了解决TLS握手中的隐私泄漏问题,TLS1.3引入了Encrypted ClientHello(ECH)的扩展机制。

ECH可以用于加密Client Hello消息中的SNI等敏感信息。当用户访问一个启用ECH的服务器时,网管无法通过观察SNI来窥探域名信息。只有目标服务器才能解密ECH中的SNI,从而保护用户隐私。

要启用ECH,需要满足以下两个条件:

  1. 服务器支持TLS的ECH扩展。
  2. 客户端支持ECH。
解决方法:

- Google Chrome 中开启ECH支持:

  1. 打开Chrome
  2. 在地址栏输入并访问:chrome://flags/#encrypted-client-hello
  3. 将“Encrypted Client Hello”选项置为“Enabled”启用ECH的支持。
  4. 关闭浏览器并重新启动Chrome,使更改生效。

- Mozilla Firefox:

  1. 打开Firefox
  2. 在地址栏输入并访问:about:config
  3. 在警告页面上,点击 "接受风险并继续"。
  4. 在搜索框中输入 "ech" 来筛选相关选项。
  5. 右键点击 "network.http.enforce-framing.http-equivalent-eom" 选项,并选择 "Toggle" 将其设置为 "true"。
  6. 关闭浏览器,并重新启动Firefox,使更改生效。
参考资料:
5

打赏

评论 (0)

取消