Cloudflare近日通过博客宣布更新了多项网络架构重大改进。加密客户端问候 (ECH) 是 ESNI 的后继者,可屏蔽用于协商 TLS 握手的服务器名称指示 (SNI),防止中间人窥探用户正在访问的网站。每当用户访问启用了 ECH 的 Cloudflare 网站时,除了用户、Cloudflare 和网站所有者之外,没有人能够确定访问了哪个网站。Cloudflare 称其弥补了互联网隐私最后的重大缺陷。该特性于2023年9月首次启用,数星期后因兼容性问题而被全局禁用。在与浏览器厂商合作解决该问题后,今天该特性已开始重新开始推出,默认对所有免费用户启用,付费用户可以从控制面板手动启用。
Cloudflare 还为所有用户启用了 Zstandard (zstd) 压缩算法,其数据压缩速度比 Brotli 快 42%,同时保持几乎相同的压缩级别。与 GZIP 相比,Zstandard 还将文件大小减少了 11.3%,同时保持了相当的速度。在第四季度,Cloudflare 将启用 HTTP/3 优先级支持。HTTP/3 优先级旨在通过智能管理向用户提供 Web 资源的顺序来提高网页加载的效率和速度。
加密客户端问候 (ECH)
虽然性能对于提供快速的用户体验至关重要,但在当今的互联网环境中,确保隐私同样重要。在我们利用 Zstandard 优化速度的同时,Cloudflare 也在努力保护用户的敏感信息,以免在数据传输过程中被泄露。随着网络流量变得越来越复杂和互联,保持性能和隐私的平衡至关重要。这就是加密客户端问候 (ECH) 等技术发挥作用的地方,它们可以在不牺牲速度的情况下保护连接。
十年前,我们开始着手创建更安全、加密的网络。当时,互联网的大部分内容仍未加密,用户数据容易被拦截。2014 年 9 月 27 日,我们向前迈出了重要一步,为所有 Cloudflare 客户免费提供 HTTPS。一夜之间,加密网络的规模翻了一番。这为更安全的互联网奠定了基础,确保加密不再是受预算限制的特权,而是人人享有的权利。
自那时起,Cloudflare 和更广泛的社区都帮助加密了更多的互联网。Let's Encrypt等项目启动,让每个人都可以免费使用证书。Cloudflare 投资加密更多的连接,并为量子计算机等新兴技术提供未来加密保障。我们始终坚信,无论预算多少,每个人都有权免费享受加密的互联网。
最后一个主要挑战是保护 SNI(服务器名称标识符),它在 TLS 握手期间以明文形式暴露。这就是加密客户端问候 (ECH) 的作用所在,今天,我们自豪地宣布我们正在弥补这一差距。
Cloudflare 于 2023 年宣布支持加密客户端问候 (ECH),并与我们的互联网浏览器合作伙伴继续合作增强其实施。在 TLS 握手期间,交换的关键信息之一是服务器名称指示 (SNI),它用于启动安全连接。不幸的是,SNI 是以纯文本形式发送的,这意味着任何人都可以阅读它。想象一下亲手递送一封信——任何跟踪你的人都可以看到你把信送到哪里,即使他们不知道内容。使用 ECH,就像将同一封机密信件寄到邮政信箱一样。你将敏感信件放在一个密封的内部信封中,并写上实际地址。然后,你将那个信封放进一个更大的标准信封中,寄往一个公共邮政信箱,信任它可以安全地转发你的预期收件人。包含非敏感信息的较大信封对所有人都是可见的,而内部信封则包含机密详细信息,例如实际地址和收件人。就像邮政信箱保持真实收件人地址的匿名性一样,ECH 确保 SNI 保持受保护。
虽然加密 SNI 是 ECH 的主要动机,但其好处不止于此。ECH 加密整个客户端问候,确保用户隐私,并使 TLS 能够在不暴露敏感连接数据的情况下发展。通过确保整个握手的安全,ECH 允许灵活、面向未来的加密设计,在互联网不断发展的同时保护隐私。
Zstandard的优势
Zstandard 的压缩率可与 GZIP 媲美,但压缩和解压速度却比 Brotli 快得多。这使其成为需要速度和相对较高压缩率的实时应用程序的理想选择。
要了解 Zstandard 的优势,了解Zlib会很有帮助。Zlib 是在 20 世纪 90 年代中期基于DEFLATE压缩算法开发的,该算法结合了LZ77 和 Huffman 编码来减小文件大小。虽然 Zlib 自 20 世纪 90 年代中期以来一直是压缩标准,并用于 Cloudflare 的开源GZIP 实现,但其设计受到 32 KB 滑动窗口的限制——这是当时内存限制的约束。这使得 Zlib 在可以访问更多内存的现代硬件上效率较低。
Zstandard 利用现代创新和硬件功能增强了 Zlib。与 Zlib 的固定 32 KB 窗口不同,Zstandard 没有严格的内存限制,理论上可以处理 TB 级的内存。然而,在实践中,它通常使用的内存要少得多,在较低的压缩级别下大约为 1 MB。这种灵活性使 Zstandard 能够缓冲大量数据,使其能够更有效地识别和压缩重复模式。Zstandard 还采用repcode 建模来高效压缩具有重复序列的结构化数据,进一步减小文件大小并增强其对现代压缩需求的适用性。
Zstandard 针对现代 CPU 进行了优化,可以使用用于执行数学任务的多个算术逻辑单元 (ALU) 同时执行多个任务。Zstandard 通过并行处理数据流来实现这一点,将其分成多个部分并同时处理。Huffman解码器 Huff0可以在单个 CPU 核心上并行解码多个符号,当与多线程结合使用时,这可以显着提高压缩和解压缩过程中的速度。
Zstandard 的无分支设计是一项关键创新,可提高 CPU 效率,尤其是在现代处理器中。要了解其重要性,请考虑 CPU 如何执行指令。
现代 CPU 使用流水线技术,即一条指令的不同阶段同时处理(就像一条生产线),从而使处理器的所有部分都保持忙碌状态。但是,当 CPU 遇到分支(例如“if-else”决策)时,它们必须进行分支预测以猜测下一步。如果预测错误,则必须清除并重新启动流水线,从而导致速度变慢。
Zstandard 通过消除条件分支来避免此问题。它不依赖分支预测,可确保 CPU 能够连续执行指令,从而保持管道满负荷并避免性能瓶颈。
Zstandard 的一个主要特性是使用有限状态熵 (FSE),这是一种基于概率更有效地对数据进行编码的高级压缩方法。FSE 建立在非对称数字系统 (ANS) 的基础上,允许 Zstandard 使用小数位进行编码,而传统的 Huffman 编码则只使用整数位。这样就可以更紧密地压缩大量重复的数据,而不会牺牲效率。
HTTP/3优先级和QUIC拥塞控制
为了提高所有客户的性能,我们正在投资的另外两个领域是HTTP/3 优先级和 QUIC 拥塞控制。
HTTP/3 优先级专注于有效管理 Web 资源的加载顺序,从而通过确保更快地交付关键资源来提高 Web 性能。HTTP/3 优先级使用可扩展优先级通过两个参数简化优先级:紧急程度(范围从 0-7)和一个真/假值,表示是否可以逐步处理资源。这允许根据重要性对 HTML、CSS 和图像等资源进行优先级排序。
另一方面,QUIC 拥塞控制旨在优化数据流,防止网络瓶颈,并确保即使在流量繁忙的情况下也能实现顺畅、可靠的传输。
这两项改进都极大地影响了 Cloudflare 网络向客户端提供请求的方式。在我们在全球网络(每秒处理超过 8000 万个请求的峰值流量)部署这些技术之前,我们首先开发了一种可靠的方法,通过严格的实验来衡量它们的影响。
总结
Cloudflare称,互联网的未来依赖于持续创新,以满足对速度、安全性和可扩展性日益增长的需求。Zstandard 等压缩技术、BBR 拥塞控制技术、HTTP/3 优先级和加密客户端 Hello 等技术正在为性能和隐私设定新的标准。通过实施这些协议,Web 服务可以实现更快的页面加载时间、更高效的带宽使用以及对用户数据的更强保护。
这些进步不仅带来了渐进式的改进,还在优化用户体验和保障在线互动方面实现了重大飞跃。Cloudflare称,该公司致力于让每个人都能使用这些技术,使企业能够提供更好、更快、更安全的服务。