网络的隐私问题一直是人们关心的焦点。随着技术的进步,保护个人信息和在线活动变得越来越重要。Cloudflare 最近推出的 Encrypted Client Hello (ECH) 技术,为我们打开了通往更安全网络世界的新门户。那么,ECH 到底是什么?它又如何改变了我们的网络体验?让我们简单了解一下。

回望过去:隐私的保护

有哪些技术在保护我们的网络安全?

  • SSL (安全套接层)TLS (传输层安全): 这两种协议为我们的网络通信提供了基本的加密保护。它们确保了数据在传输过程中的安全,防止中间人攻击和数据泄露。

  • HTTPS (超文本传输安全协议): HTTPS 是在 HTTP 上加入 SSL/TLS 加密层的协议,它为网站和用户之间的通信提供了加密保护,确保了数据的私密性和完整性。

  • DNS over HTTPS (DoH): 传统的 DNS 查询是明文的,任何人都可以看到你正在访问哪个网站。DoH 通过加密 DNS 查询来提高用户的网络隐私。

  • ESNI (Encrypted Server Name Indication): 在 ECH 出现之前,ESNI 是一个尝试保护 SNI 数据的技术,但它并没有得到广泛的支持和采用。

SSL/TLS、HTTPS:基本的加密保护

什么是SSL?

安全套接字层(SSL)是一种安全加密协议,由 Netscape 在 1995 年创立,目的是保障 Internet 通信的隐私、身份验证和数据完整性。SSL 可视为现今广泛使用的传输层安全(TLS)加密技术的前身。

采用 SSL/TLS 技术的网站的 URL 会显示为“https”,而非“http”。

HTTP 与 HTTPS

什么是TLS?

传输层安全(TLS)是一种被广泛采纳的安全协议,其主要目的是确保互联网通信的私密性和数据安全。TLS 主要应用于加密 web 应用程序和服务器之间的通信(例如,web 浏览器加载网站时),同时也可以用于加密其他类型的通信,如电子邮件、消息传送和 IP 语音 (VoIP) 等。

TLS 是由互联网工程任务组(Internet Engineering Task Force, IETF)所提出,协议的首个版本于 1999 年发布,而最新的版本,TLS 1.3,则于 2018 年发布。

TLS 和 SSL 有什么区别?

TLS 实际上是由 Netscape 最初开发的安全套接字层(SSL)协议所演变而来的。TLS 1.0 版本最初作为 SSL 3.1 版本开发,但在发布前更名,以表明它不再与 Netscape 有关联。由于这个历史背景,人们有时会交替使用 TLS 和 SSL 这两个术语。

林恩:简单来说,要快速判断一个网站是否采用了SSL/TLS加密技术,你只需查看浏览器地址栏左侧是否有一个小锁图标。如果有,那就表示该网站启用了安全连接。

什么是HTTPS?

超文本传输协议安全(HTTPS)是 HTTP 的安全版,而 HTTP 是用于在 Web 浏览器和网站之间传输数据的主要协议。HTTPS 提供加密服务,以增强数据传输的安全性,这在用户传输敏感数据(例如登录银行账户、电子邮件服务或健康保险提供商时)尤为重要。

所有网站都应使用 HTTPS,特别是那些需要用户登录的网站。在现代的 Web 浏览器(如 Chrome)中,使用 HTTPS 的网站和未使用 HTTPS 的网站在显示上有所区别。如果 URL 栏显示有锁图标,那就表示该网页是安全的。Web 浏览器非常重视 HTTPS;例如,Google Chrome 和其他浏览器会将所有未启用 HTTPS 的网站标记为不安全

HTTPS、SSL/TLS 之间的关系是什么?

技术上讲,HTTPS 不是一个独立于 HTTP 的协议,而是在 HTTP 协议基础上应用了 TLS/SSL 加密。HTTPS 的传输依赖于 TLS/SSL 证书,该证书验证了特定提供者的身份就是他们所声称的身份。

林恩:可能很多人不理解为什么需要用到HTTPS技术,我在这里举一个简单的例子:

加密前:

这是完全可读的文本字符串

加密后:

ITM0IRyiEhVpa6VnKyExMiEgNveroyWBPlgGyfkflYjDaaFf/Kn3bo3OfghBPDWo6AfSHlNtL8N7ITEwIXc1gU5X73xMsJormzzX

在不使用 HTTPS 的网站中,Internet 服务提供商(ISP)或其他中间人有可以在未经网站所有者批准的情况下将内容注入网页。这通常采用广告形式,希望增加收入的 ISP 将付费广告注入其客户的网页中。毋庸置疑,当这种情况发生时,绝不会与网站所有者共享广告的利润和这些广告的质量控制。HTTPS 杜绝了未经审核的第三方将广告注入Web 内容的可能。

摘自 Cloudflare2

DNS over HTTPS 技术:加密的DNS

DNS over HTTPS(DoH)是一种用于加密DNS查询的技术。在传统的DNS查询中,通信是明文的,这使得可能对用户的DNS流量进行监视和操纵。为了提高安全性和隐私性,DoH引入了加密来保护DNS查询的隐私。

实际上前段时间出现的Minecraft验证服务器无法访问,被强制跳转到国家反诈中心这种情况,根据其表现出来的特征,我们可以认为出现了DNS污染,强制将Minecraft域名解析到国家反诈中心的地址而导致无法访问。

如果使用了DoH技术,可以一定程度上避免这个问题。

DoH和DoT的区别?

DoH (DNS over HTTPS) 和 DoT (DNS over TLS) 都是将DNS查询加密的技术,以提高安全性和隐私保护。

  1. DoH (DNS over HTTPS):

    • 它通过HTTPS(一个安全的网页访问协议)来发送和接收DNS查询和回应,就像你安全地浏览网站一样。

  2. DoT (DNS over TLS):

    • 它使用TLS(传输层安全协议)来加密DNS的通信,这是另一种常用的安全协议。

两者的目的都是为了保护你的DNS查询不被窃听或篡改,但它们使用不同的方法来实现这一点。DoH更像是在安全的网页环境中进行DNS查询,而DoT则是直接在传输层提供加密保护。

SNI技术13

SNI(Server Name Indication)是TLS的一个扩展,它允许客户端在握手过程开始时告知服务器它想要连接的主机名称。这主要解决了一个服务器拥有多个域名时的问题。在TLS握手期间,通过在第一阶段的ClientHello报文中添加主机名称,服务器能识别客户端想要连接的虚拟主机,从而选择正确的证书进行通信。这与HTTP协议中通过请求头的Host字段指定想要访问的域名的方法相似。

ESNI: SNI的加密保护

以下内容译自Cloudflare Blog,仅摘录部分内容。2

ECH的前身是加密SNI(ESNI)扩展。顾名思义,ESNI的目标是提供SNI的机密性。为此,客户端将在服务器的公钥下加密其SNI扩展名,并将密文发送到服务器。服务器将尝试使用与其公钥对应的密钥解密密文。如果解密成功,则服务器将使用解密的SNI继续连接。否则,它只会中止握手。这个简单协议的高级流程如图所示。

使用 ESNI 扩展的 TLS 1.3 握手。它与TLS 1.3握手相同,只是SNI扩展已替换为ESNI。

ECH技术:姗姗来迟的大修

什么是ECH?

The goal of ECH is to encrypt the entire ClientHello, thereby closing the gap left in TLS 1.3 and ESNI by protecting all privacy-sensitive handshake-parameters. Similar to ESNI, the protocol uses a public key, distributed via DNS and obtained using DoH, for encryption during the client's first flight. But ECH has improvements to key distribution that make the protocol more robust to DNS cache inconsistencies. Whereas the ESNI server aborts the connection if decryption fails, the ECH server attempts to complete the handshake and supply the client with a public key it can use to retry the connection.

ECH 的目标是加密整个 ClientHello,以此来填补 TLS 1.3 和 ESNI 留下的空白,保护所有隐私敏感的握手参数。与 ESNI 类似,该协议利用一个公钥,在客户端的首次通信(first flight)期间进行加密,该公钥通过 DNS 分发并利用 DoH(DNS over HTTPS)获取。但是,ECH 在密钥分发方面做了改进,使得该协议对 DNS 缓存不一致的情况具有更强的适应性。与在解密失败时会中止连接的 ESNI 服务器不同,ECH 服务器会尝试完成握手,并向客户端提供一个可用于重新尝试连接的公钥。

摘自Cloudflare2

简单来说,ECH 是一个新的网络技术,它的目标是保护用户的网络隐私,特别是在访问不同网站时。在之前,当你访问一个网站时,你的浏览器会通过一个叫做 TLS 握手的过程与网站的服务器建立安全连接。然而,在这个过程中,你正在访问的网站的名称(被称为服务器名称指示或 SNI)是可见的,这意味着网络中间人(比如你的网络服务提供商)可以看到你正在访问哪个网站。ECH 的出现,使得这一信息得以加密,从而保护了你的网络隐私。

划重点:

  • ECH 是一个旨在保护用户隐私的新技术,它能隐藏用户在访问哪些网站的信息。

  • ECH 是 ESNI(Encrypted Server Name Indication)的继承者,专注于在 TLS 握手过程中保护服务器名指示(SNI)。

ECH 是如何工作的?

林恩:ECH 通过加密 SNI 来保护你的网络隐私。具体来说,它将原来的 ClientHello 消息分为两部分:一个外部部分和一个内部部分。外部部分包含一些非敏感信息,而内部部分(被加密)包含你想要访问的网站的实际名称。这样,即使网络中间人可以看到 TLS 握手的过程,他们也无法确定你正在访问哪个网站。

img

ECH 带来了什么变化?

Ultimately, the goal of ECH is to ensure that TLS connections made to different origin servers behind the same ECH service provider are indistinguishable from one another. In other words, when you connect to an origin behind, say, Cloudflare, no one on the network between you and Cloudflare should be able to discern which origin you reached, or which privacy-sensitive handshake-parameters you and the origin negotiated. Apart from an immediate privacy boost, this property, if achieved, paves the way for the deployment of new features for TLS without compromising privacy.

Encrypting the ClientHello is an important step towards achieving this goal, but we need to do a bit more. An important attack vector we haven't discussed yet is traffic analysis.This refers to the collection and analysis of properties of the communication channel that betray part of the ciphertext's contents, but without cracking the underlying encryption scheme. For example, the length of the encrypted ClientHello might leak enough information about the SNI for the adversary to make an educated guess as to its value (this risk is especially high for domain names that are either particularly short or particularly long). It is therefore crucial that the length of each ciphertext is independent of the values of privacy-sensitive parameters. The current ECH specification provides some mitigations, but their coverage is incomplete. Thus, improving ECH's resistance to traffic analysis is an important direction for future work.

摘自Cloudflare 2

ECH的最终目标是确保与同一ECH服务提供商后面的不同源服务器建立的TLS连接彼此不可区分。换句话说,当你连接到一个在Cloudflare后面的源时,你和Cloudflare之间的网络上的任何人都不能分辨出你到达的是哪个源,以及你和源之间协商的哪些涉及隐私的握手参数。除了立即提升隐私外,如果实现这个目标,它还为TLS的部署新功能铺平了道路,而不会损害隐私。

加密ClientHello是实现这一目标的重要步骤,但我们还需要做更多工作。我们尚未讨论的一个重要攻击媒介是流量分析。这指的是收集和分析通信通道的属性,这些属性透露了一部分密文的内容,但不会破解基础加密方案。例如,加密的ClientHello的长度可能泄漏足够的关于SNI的信息,使得攻击者可以对其值做出有根据的猜测(对于特别短或特别长的域名,这种风险尤其高)。因此,每个密文的长度独立于涉及隐私的参数值是至关重要的。当前的ECH规范提供了一些缓解措施,但覆盖范围不完全。因此,改进ECH对抗流量分析的能力是未来工作的一个重要方向。

林恩:从我们普通人的角度来看,ECH技术给我们带来的体验很可能是无缝的,ECH就像是一座摩天大厦的基石,他给我们带来了更好的网络隐私保护。同时也大大降低了因为网络攻击/运营商审查而导致的网页无法访问等问题出现的概率。

扩展阅读

ECH技术的影响和重要性的关键点

  1. 增强隐私

    • ECH加密了TLS握手过程的某些部分,从而掩盖了服务器名称指示(SNI)。SNI是客户端与哪个服务器通信的明确信号,加密SNI对于保护用户隐私至关重要。

    • 该技术加密了以前明文协商的TLS连接的隐私敏感参数,从而防止网络观察者访问大量元数据,包括端点的身份和它们如何使用连接。

  2. 为未来的安全功能奠定基础

    • ECH为在最小化对终端用户隐私影响的同时向TLS添加未来的安全功能和性能增强奠定了基础。

  3. 合作努力

    • ECH的开发是学术界和技术产业领袖之间在IETF(互联网工程任务组)的协助下进行紧密合作的产物,包括Cloudflare、Fastly和Mozilla等。

  4. 对TLS的重大升级

    • ECH代表了对TLS协议的重大升级,构建了像DNS-over-HTTPS这样的新技术。然而,据指出,该协议尚未准备好进行互联网规模的部署。

  5. 解决其他隐私敏感的握手参数问题

    • 除了SNI,ECH还旨在保护客户端和服务器协商的其他隐私敏感的握手参数,例如用于决定TLS连接建立后使用哪个应用层协议的ALPN扩展。

  6. 握手加密

    • ECH朝着完全握手加密的方向迈进,这对解决与握手过程相关的各种隐私泄漏至关重要。握手加密确保除了完成密钥交换所必需的参数外,所有握手参数都被加密。

  7. 协议扩展

    • ECH作为传输层安全协议(TLS)的协议扩展,强调了其在增强现有协议以实现更好的隐私和安全措施方面的作用。

  8. 客户端-浏览器交互

    • 使用ECH时,浏览器将与Cloudflare执行TLS握手,而不是特定于客户的主机名,这进一步使客户端与服务器之间的交互更为匿名。

我的浏览器是否支持ECH技术?

你可以访问这个页面来验证你的浏览器是否ECH技术。链接:https://defo.ie/ech-check.php

同时你可以参考本文脚注4和5的链接来设置你的浏览器。45

专有名词一览

  1. SSL (Secure Sockets Layer) / 安全套接字层: 提供用户浏览器和网站之间数据传输的加密的安全协议。

  2. TLS (Transport Layer Security) / 传输层安全: SSL 的后继者,是一种确保互联网通信隐私的协议。

  3. HTTPS (Hypertext Transfer Protocol Secure) / 超文本传输协议安全: 是 HTTP 的安全版本,用于计算机网络,特别是互联网上的安全通信。

  4. DNS over HTTPS (DoH) / HTTPS 上的 DNS 查询: 通过 HTTPS 协议执行 DNS 解析的协议,以提高隐私和安全性。

  5. ESNI (Encrypted Server Name Indication) / 加密的服务器名称指示: 旨在保护 TLS 中的服务器名称指示(SNI)数据以增强隐私的技术。

  6. SNI (Server Name Indication) / 服务器名称指示: TLS 的扩展,允许客户端在握手过程开始时指示它要连接的主机名。

  7. ECH (Encrypted Client Hello) / ECH: Cloudflare 推出的一项新技术,用于在 TLS 握手过程中加密整个 ClientHello,以保护所有涉及隐私的握手参数。

  8. IETF (Internet Engineering Task Force) / 互联网工程任务组: 开发和推广自愿互联网标准的组织。

  9. ALPN (Application-Layer Protocol Negotiation) / 应用层协议协商: TLS 的扩展,允许客户端和服务器就加密连接的协议达成协议。

  10. TLS 握手: 客户端和服务器建立安全通信通道的过程。

  11. DoT (DNS over TLS) / TLS 上的 DNS 查询: 与 DoH 类似,是通过 TLS 协议执行 DNS 解析以提高安全性的协议。

  12. ECH Check / ECH 技术检测: 用于检测浏览器是否支持 ECH 技术的工具或方法。

后记

本篇文章到这里就结束了,如果你仍然对文章提到的技术感兴趣,你可以尝试阅读一下扩展内容和参考资料。

如果你喜欢我的文章,可以考虑在爱发电赞助我,这会激励我更有动力地写更多的文章。

个人博客:https://blog.lynn6.cn

爱发电:https://afdian.net/a/lynnguo666

[1]  https://www.ssltrust.com.au/blog/what-is-sni "What Is SNI? Encrypted SNI (ESNI and ECH)"

[2]  https://blog.cloudflare.com/encrypted-client-hello/ "Cloudflare Blog - Good-bye ESNI, hello ECH!"

[3]  https://www.cnblogs.com/pam-sh/p/13409492.html "什么是 SNI? - PamShao"

[4]  https://chromestatus.com/feature/6196703843581952 "Feature: TLS Encrypted Client Hello (ECH)"

[5]  https://techcommunity.microsoft.com/t5/discussions/you-can-now-enable-encrypted-client-hello-encrypted-sni-or-esni/m-p/3600372 "You can now Enable Encrypted Client Hello (Encrypted SNI or ESNI/ECH) in Microsoft Edge - 微软技术社区"