<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ECH on 飞鸽跳转</title><link>https://feige301.com/zh-cn/tags/ech/</link><description>Recent content in ECH on 飞鸽跳转</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 05 May 2026 17:30:55 +0800</lastBuildDate><atom:link href="https://feige301.com/zh-cn/tags/ech/index.xml" rel="self" type="application/rss+xml"/><item><title>Cloudflare ECH：加密SNI如何终结域名握手阻断？</title><link>https://feige301.com/zh-cn/posts/2026/cloudflare-ech-encrypted-sni-how-it-ends-domain-handshake-blocking.html</link><pubDate>Tue, 05 May 2026 17:30:55 +0800</pubDate><guid>https://feige301.com/zh-cn/posts/2026/cloudflare-ech-encrypted-sni-how-it-ends-domain-handshake-blocking.html</guid><description>&lt;p>在当前数字化浪潮席卷全球的背景下，互联网已经渗透到我们日常生活的方方面面。无论是企业运营、数字娱乐还是个人通信，稳定的网络连通性都显得至关重要。然而，即使我们已经广泛部署了HTTPS，保障了数据传输内容的加密，但表面的安全之下，仍存在着一些根深蒂固的问题，影响着网站的全球可达性与用户体验。&lt;/p>
&lt;p>&lt;strong>问题的背景与困境&lt;/strong>&lt;/p>
&lt;p>随着网络安全的意识日益增强，TLS（传输层安全协议）与HTTPS的普及率达到了前所未有的高度。我们普遍认为，一旦网站启用了HTTPS，其通信内容就得到了端到端的加密保护，中间的监听者无法窥探传输的实际数据。这在很大程度上是正确的，它有效阻止了中间人窃听敏感信息，如登录凭据、交易数据等。&lt;/p>
&lt;p>然而，网络通信并非仅仅是数据的传输，它首先需要建立连接。在这个连接建立的过程中，即使是HTTPS，也存在着一些“元数据”的泄露，这些元数据虽然不是实际的业务内容，但却能透露出客户端试图访问的具体域名信息。其中最典型的就是SNI（Server Name Indication）字段。&lt;/p>
&lt;p>正是这种SNI明文泄露，在某些“局部局域网环境”或“特定网络区域”中，被一些“中间设备”或“流量网关”所利用。它们能够识别出用户试图访问的特定域名，并基于此信息对连接进行干预，导致所谓的“域名握手阻断”或“连接阻断”。对于网站管理员、运维人员和开发者而言，这无疑是一个巨大的困境。网站明明部署了HTTPS，服务器运行正常，但在某些区域用户却无法访问，表现为浏览器显示“无法连接到服务器”、“连接被重置”等错误，业务因此受损，用户体验大打折扣，而问题的根源却难以准确定位。&lt;/p>
&lt;p>在这样的背景下，我们不禁要问：有没有一种技术，能够从根本上解决这种基于元数据泄露的连接阻断问题，真正实现端到端的隐私保护，即便是域名本身也无法被窥探？答案是肯定的，这就是我们今天要深入探讨的——Cloudflare ECH（Encrypted Client Hello）。&lt;/p>
&lt;h3 id="sni透明的信封与脆弱性">
 SNI：透明的信封与脆弱性
 &lt;a class="anchor" href="#sni%e9%80%8f%e6%98%8e%e7%9a%84%e4%bf%a1%e5%b0%81%e4%b8%8e%e8%84%86%e5%bc%b1%e6%80%a7">#&lt;/a>
&lt;/h3>
&lt;p>要理解ECH的价值，我们首先需要回顾一下传统HTTPS通信中的SNI（Server Name Indication）是如何工作的，以及它为何成为被利用的突破口。&lt;/p>
&lt;p>&lt;strong>SNI的工作原理&lt;/strong>&lt;/p>
&lt;p>在HTTP/1.1时代，一个IP地址通常只对应一个域名。但随着虚拟主机技术的发展，一台服务器能够托管成百上千个域名，它们共享同一个IP地址。当客户端发起TLS握手请求时，服务器需要知道客户端想要访问哪个域名，才能为其提供正确的TLS证书。如果服务器上有多个域名（例如&lt;code>example.com&lt;/code>和&lt;code>anothersite.com&lt;/code>），而客户端不告知目标域名，服务器就无法知道应该返回哪个域名的证书。&lt;/p>
&lt;p>为了解决这个问题，TLS协议在2003年引入了SNI扩展。SNI允许客户端在TLS握手的第一条消息，即&lt;code>Client Hello&lt;/code>消息中，以明文形式包含其要连接的域名。这就好比你去一家大型酒店办理入住手续。前台（服务器）有很多房间（虚拟主机上的网站），你要告诉前台你的预订信息（SNI），比如你预订的是“A房间”（&lt;code>example.com&lt;/code>），前台才能找到对应的房间钥匙（TLS证书）给你。虽然你拿到钥匙后会用它打开一个加密的门（建立加密连接），但你预订的房间号，在办理手续时是公开透明的。&lt;/p>
&lt;p>&lt;strong>SNI带来的脆弱性&lt;/strong>&lt;/p>
&lt;p>SNI解决了虚拟主机环境下证书选择的问题，极大地提高了服务器资源的利用率。然而，它的“明文传输”特性也留下了一个安全与隐私的隐患。在TLS握手过程中，&lt;code>Client Hello&lt;/code>消息是未加密的，因此其中的SNI字段可以被网络路径上的任何“中间设备”或“流量网关”轻易读取。&lt;/p>
&lt;p>这些设备，如“DPI（深度包检测）设备”，能够对流经其网络的数据包进行深入分析。当它们检测到特定SNI字段时，就可以识别出用户正在尝试访问的具体域名。这种识别能力，在某些“局部局域网环境”或“特定网络区域”中，被用于实施精确的网络干预。&lt;/p>
&lt;h3 id="域名握手阻断的原理与影响">
 域名握手阻断的原理与影响
 &lt;a class="anchor" href="#%e5%9f%9f%e5%90%8d%e6%8f%a1%e6%89%8b%e9%98%bb%e6%96%ad%e7%9a%84%e5%8e%9f%e7%90%86%e4%b8%8e%e5%bd%b1%e5%93%8d">#&lt;/a>
&lt;/h3>
&lt;p>基于SNI的域名握手阻断是一种常见的网络干预手段。它的原理相对直观，但对网站的可用性却有着灾难性的影响。&lt;/p>
&lt;p>&lt;strong>阻断机制解析&lt;/strong>&lt;/p>
&lt;p>当客户端向服务器发起TLS连接时，首先发送&lt;code>Client Hello&lt;/code>消息。这个消息包含了SNI字段，明确指出了客户端期望访问的域名。如果网络路径上的“中间设备”或“流量网关”（例如“某地区运营商”部署的DPI设备）被配置为监控并阻止对特定域名的访问，一旦它们在&lt;code>Client Hello&lt;/code>消息中检测到匹配的SNI，便会立即采取行动。&lt;/p>
&lt;p>常见的阻断方式包括：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>发送TCP RST（Reset）包：&lt;/strong> 这是最常见也是最直接的阻断方式。DPI设备在检测到目标SNI后，会立即伪造一个TCP RST包，发送给客户端和服务器。客户端和服务器接收到这个RST包后，会认为连接被对方强制关闭，从而中断TLS握手过程。用户在浏览器中看到的是“连接被重置”或“无法连接到服务器”的错误。&lt;/li>
&lt;li>&lt;strong>直接丢弃数据包：&lt;/strong> DPI设备也可以选择静默地丢弃包含特定SNI的&lt;code>Client Hello&lt;/code>消息，或者后续的TLS握手数据包。这会导致客户端一直等待服务器响应，最终因超时而失败。用户体验可能是页面加载缓慢，最终显示“连接超时”或“无法访问此网站”。&lt;/li>
&lt;li>&lt;strong>流量重定向/劫持：&lt;/strong> 在更复杂的情况下，DPI设备可能将流量重定向到另一个地址，或者注入虚假信息，虽然这更接近于DNS劫持或HTTP劫持，但核心仍是利用了明文SNI对流量路径的控制。&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>案例植入：韩国等区域的SNI阻断事件&lt;/strong>&lt;/p>
&lt;p>我们曾观察到，在一些“特定网络区域”，特别是像韩国这样的局部局域网环境，一些“某地区运营商”为了实施网络管理策略，曾利用SNI明文传输的特性，对访问某些“高并发商业站点”或“数字娱乐平台”的流量进行连接阻断。&lt;/p>
&lt;p>&lt;strong>技术细节分析：&lt;/strong> 在这一案例中，“某地区运营商”的网络中部署的“DPI设备”扮演了关键角色。当用户尝试访问特定的“高并发商业站点”时，其浏览器发出的&lt;code>Client Hello&lt;/code>消息中包含了这些站点的明文域名（SNI）。这些“DPI设备”在识别到这些预设的SNI模式后，会立刻向用户的设备和目标服务器发送伪造的TCP RST包。这些伪造的RST包会使得正常的TCP连接在TLS握手阶段就被强制中断，从而阻止用户与目标网站建立起安全的通信通道。&lt;/p>
&lt;p>&lt;strong>造成的影响：&lt;/strong> 这种技术性的阻断行为直接导致了：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>用户无法访问：&lt;/strong> 终端用户无法正常加载这些“高并发商业站点”或“数字娱乐平台”，浏览器通常会显示“连接已重置”或“无法访问此站点”等错误信息。&lt;/li>
&lt;li>&lt;strong>业务中断与流失：&lt;/strong> 对于依赖这些平台提供服务的企业而言，这意味着大量用户无法触达其服务，导致用户流失、广告收入下降、交易中断等一系列严重的业务损失。&lt;/li>
&lt;li>&lt;strong>用户体验受损：&lt;/strong> 用户在尝试访问合法网站时，反复遇到连接失败，严重损害了用户的网络体验和对互联网服务的信任度。&lt;/li>
&lt;/ul>
&lt;p>值得注意的是，这一事件纯粹是技术层面的操作，即利用了网络协议本身的特性（SNI明文）来实现流量控制。我们聚焦于“怎么封的”（基于SNI明文）以及“后果是什么”（网站无法访问，业务受影响），而不涉及任何监管政策或其正当性评价。这清晰地展现了SNI明文在网络连通性上带来的脆弱性，并促使行业思考更深层次的隐私保护技术。&lt;/p>
&lt;h3 id="ech登场加密的信封">
 ECH登场：加密的信封
 &lt;a class="anchor" href="#ech%e7%99%bb%e5%9c%ba%e5%8a%a0%e5%af%86%e7%9a%84%e4%bf%a1%e5%b0%81">#&lt;/a>
&lt;/h3>
&lt;p>正是为了解决SNI明文泄露带来的问题，IETF（互联网工程任务组）在TLS 1.3的基础上，提出了一个关键的扩展：ECH（Encrypted Client Hello），即加密客户端Hello。这项技术旨在从根本上消除SNI泄露的风险，为用户提供更强大的隐私保护和网络连通性。&lt;/p>
&lt;p>&lt;strong>ECH的核心原理&lt;/strong>&lt;/p>
&lt;p>ECH的核心思想非常直接：将TLS握手阶段的&lt;code>Client Hello&lt;/code>消息中的敏感信息，包括SNI以及其他可能被用于指纹识别的数据，在发送前就进行加密。这就好比你给酒店前台递交入住申请，但这次，你的预订房间号（域名）不是写在明信片上，而是写在一个加密的信封里。前台（中间设备）只能看到这个信封是发给他们酒店的，但无法得知信封里的具体内容（你预订的是哪个具体房间）。只有酒店的后台系统（目标服务器）才能解开这个信封，获取真正的预订信息。&lt;/p>
&lt;p>&lt;strong>双层&lt;code>Client Hello&lt;/code>结构&lt;/strong>&lt;/p></description></item><item><title>TLS的最后一块拼图：ECH（加密SNI）</title><link>https://feige301.com/zh-cn/posts/2026/tls-final-puzzle-piece-ech-encrypted-sni-preventing-domain-blocking.html</link><pubDate>Thu, 05 Feb 2026 01:19:55 +0800</pubDate><guid>https://feige301.com/zh-cn/posts/2026/tls-final-puzzle-piece-ech-encrypted-sni-preventing-domain-blocking.html</guid><description>&lt;p>今天，我们来聊一个看似深奥，实则与每一位网站管理员、运维工程师和开发者息息相关的技术话题：TLS的最后一块拼图——ECH（Encrypted Client Hello），即加密SNI。&lt;/p>
&lt;h3 id="背景日益复杂的网络连通性挑战">
 背景：日益复杂的网络连通性挑战
 &lt;a class="anchor" href="#%e8%83%8c%e6%99%af%e6%97%a5%e7%9b%8a%e5%a4%8d%e6%9d%82%e7%9a%84%e7%bd%91%e7%bb%9c%e8%bf%9e%e9%80%9a%e6%80%a7%e6%8c%91%e6%88%98">#&lt;/a>
&lt;/h3>
&lt;p>在当今数字时代，网站的连通性是其生命线。然而，随着网络环境的复杂化，网站运营者常常面临各种意想不到的连接障碍。这些障碍不仅影响用户体验，更直接损害业务连续性和数据安全。其中，尤为突出的挑战来自以下几个方面：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>区域性网络封锁：&lt;/strong> 特定网络区域内的用户可能无法访问某些域名，这并非因为服务器故障，而是由于网络路径中的“中间设备”对流量进行了识别和阻断。&lt;/li>
&lt;li>&lt;strong>ISP劫持：&lt;/strong> 某些“某地区运营商”可能会在用户访问特定域名时，未经授权地将流量重定向到其他页面，甚至篡改内容，严重侵犯了用户和网站所有者的权益。&lt;/li>
&lt;li>&lt;strong>域名污染：&lt;/strong> 这是指DNS解析结果被篡改，导致用户请求的域名被解析到错误的IP地址，从而无法正常访问目标网站。&lt;/li>
&lt;/ol>
&lt;p>这些问题的根源，往往在于当前网络协议设计中某些“明文”元数据的暴露。尽管我们普遍采用TLS（传输层安全协议）来加密传输内容，确保数据在传输过程中的机密性和完整性，但在TLS握手阶段，一些关键信息却依然以明文形式传输，成为了“中间设备”进行识别和干预的突破口。&lt;/p>
&lt;h3 id="困境与痛点明文sni的阿喀琉斯之踵">
 困境与痛点：明文SNI的阿喀琉斯之踵
 &lt;a class="anchor" href="#%e5%9b%b0%e5%a2%83%e4%b8%8e%e7%97%9b%e7%82%b9%e6%98%8e%e6%96%87sni%e7%9a%84%e9%98%bf%e5%96%80%e7%90%89%e6%96%af%e4%b9%8b%e8%b8%b5">#&lt;/a>
&lt;/h3>
&lt;p>想象一下，你正在给远方的朋友寄送一封加密的信件。信件内容被严密包裹，无人能窥视。但信封上，你却不得不清晰地写上收件人的姓名和地址。对于网络流量而言，TLS协议在加密数据内容方面做得非常出色，但它在握手阶段，尤其是早期版本中，却暴露了一个“信封上的地址”——这就是我们今天要重点讨论的SNI（Server Name Indication，服务器名称指示）字段。&lt;/p>
&lt;p>在TLS 1.2及更早版本中，客户端在发起TLS握手时，会在&lt;code>ClientHello&lt;/code>消息中包含一个SNI字段，明确告知服务器它希望访问哪个域名。这个设计是为了解决虚拟主机（Virtual Hosting）的问题：一台服务器上可能托管着成百上千个不同的网站，服务器需要知道客户端请求的是哪个域名，才能提供正确的TLS证书并建立连接。&lt;/p>
&lt;p>然而，SNI的明文传输，成为了“中间设备”进行流量过滤和阻断的关键依据。这些“流量网关”或“DPI（深度包检测）设备”能够轻易地读取到用户正在尝试访问的域名。一旦某个域名被列入“关注列表”，这些设备便可以根据明文SNI信息，对相应的连接进行阻断、重置或重定向。&lt;/p>
&lt;p>&lt;strong>这给网站运营者带来了巨大的痛点：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>业务中断与用户流失：&lt;/strong> 对于“高并发商业站点”、“数字娱乐平台”等依赖稳定连接的业务而言，基于SNI的阻断意味着用户无法访问，直接导致流量损失、交易中断，甚至品牌声誉受损。&lt;/li>
&lt;li>&lt;strong>安全隐患：&lt;/strong> ISP劫持者可以利用明文SNI来识别目标网站，进而实施各种中间人攻击或流量篡改，危及用户数据安全。&lt;/li>
&lt;li>&lt;strong>运维成本增加：&lt;/strong> 为了应对这些阻断，网站管理员可能需要投入大量资源寻找替代域名、配置复杂的跳转规则，甚至部署昂贵的“隧道传输技术”，但这些方案往往治标不治本，且维护成本高昂。&lt;/li>
&lt;li>&lt;strong>隐私泄露：&lt;/strong> 即使内容被加密，但用户访问了哪个网站这一元数据仍然对网络路径上的监听者可见，这严重侵犯了用户的上网隐私。&lt;/li>
&lt;/ul>
&lt;p>现有的解决方案，如DNS over HTTPS (DoH) 或 DNS over TLS (DoT)，虽然能够加密DNS查询，防止DNS污染，但它们并不能解决SNI明文传输的问题。用户在进行DNS查询后，依然会在TLS握手时暴露目标域名。因此，我们需要一个更根本的解决方案，来加密这“TLS的最后一块明文拼图”。&lt;/p>
&lt;h3 id="正文echtls的最后一块拼图">
 正文：ECH——TLS的最后一块拼图
 &lt;a class="anchor" href="#%e6%ad%a3%e6%96%87echtls%e7%9a%84%e6%9c%80%e5%90%8e%e4%b8%80%e5%9d%97%e6%8b%bc%e5%9b%be">#&lt;/a>
&lt;/h3>
&lt;p>为了解决明文SNI带来的隐私和连通性问题，互联网工程任务组（IETF）一直在努力推进一项新技术：&lt;strong>Encrypted Client Hello (ECH)&lt;/strong>。ECH是ESNI（Encrypted SNI）的演进版本，旨在将整个&lt;code>ClientHello&lt;/code>消息（包括SNI）进行加密，从而彻底消除TLS握手阶段的明文元数据泄露。&lt;/p>
&lt;h4 id="1-tls握手与sni的运作原理回顾">
 1. TLS握手与SNI的运作原理回顾
 &lt;a class="anchor" href="#1-tls%e6%8f%a1%e6%89%8b%e4%b8%8esni%e7%9a%84%e8%bf%90%e4%bd%9c%e5%8e%9f%e7%90%86%e5%9b%9e%e9%a1%be">#&lt;/a>
&lt;/h4>
&lt;p>在深入ECH之前，我们先快速回顾一下TLS握手的核心流程，以便更好地理解ECH所解决的问题：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>ClientHello (客户端问候)：&lt;/strong> 客户端向服务器发送一个&lt;code>ClientHello&lt;/code>消息，其中包含客户端支持的TLS版本、密码套件、随机数等信息。在TLS 1.2及更早版本中，这个消息中还会包含明文的SNI字段，告诉服务器它想要访问哪个域名。在TLS 1.3中，SNI仍是明文。&lt;/li>
&lt;li>&lt;strong>ServerHello (服务器问候)：&lt;/strong> 服务器收到&lt;code>ClientHello&lt;/code>后，从中选择一个TLS版本和密码套件，并回复&lt;code>ServerHello&lt;/code>消息，其中也包含服务器的随机数。&lt;/li>
&lt;li>&lt;strong>证书交换：&lt;/strong> 服务器发送其数字证书给客户端，客户端验证证书的有效性。&lt;/li>
&lt;li>&lt;strong>密钥交换：&lt;/strong> 客户端和服务器通过密钥交换算法（如Diffie-Hellman）协商出一个共享的会话密钥。&lt;/li>
&lt;li>&lt;strong>加密通信：&lt;/strong> 双方使用协商出的会话密钥对后续的应用层数据进行加密和解密。&lt;/li>
&lt;/ol>
&lt;p>从上述流程可以看出，&lt;code>ClientHello&lt;/code>是整个TLS会话的起点，也是唯一在加密通信开始前，包含敏感域名信息（SNI）的明文消息。这就是“中间设备”进行识别和阻断的绝佳时机。&lt;/p></description></item></channel></rss>