河南省防火墙

河南省部署了基于TLS SNI和HTTP Host的审查中间设备，用于检测和封锁离开该省的流量。
河南省防火墙（Henan Firewall，HFW），是河南省部署的地区性审查系统，它对离开该省的流量实施基于 HTTP Host 和 TLS SNI的审查。

**历史**
长期以来，中国的审查系统一直被认为在政策和实现两方面都相对集中化。实证测量揭示了中国对审查策略 、软件更新和基础设施进行统一的协调与管理。审查设备部署在国家网络边界 ，检测并过滤进出国家的流量。因此，早期在中国国内交换的流量不会受到GFW的检测或封锁。
2023年8月Github匿名河南省用户向斯坦福大学、科罗拉多大学博尔德分校GFW Report的反审查团队报告一些在中国其他地区可以访问的网站，在当地却无法访问。

**架构**
河南的中间设备位于第 5 跳（中国联通省级网络），而 GFW 出现在更深的第 7 跳（中国联通骨干网）。这些结果证实了两个审查实体都作为中间设备运行，其中河南设备距离客户端更近。这一证据有力表明，河南的地区性审查是独立于GFW部署的，并且这些审查设备位于河南省境内

**主要技术**

**TCP重置攻击**
重置（reset）是传输控制协议（TCP）的一种消息，例如服务器端在没有客户端请求的端口或者其它连接信息不符时，系统的TCP协议栈就会给客户端回复一个重置通知消息，该功能本来用于应对例如服务器意外重启等情况，而河南防火墙河南地区性防火墙会针对某些服务器名称指示（SNI）和 HTTP Host 值封锁 TLS 和 HTTP 连接，但其运作方式与GFW不同。最显着的区别是，河南的地区性防火墙通过向客户端注入一个包含固定 10 字节载荷的 TCP RST+ACK 数据包来封锁 TCP 连接。这种独特的 TCP RST 数据包载荷将河南防火墙与 GFW 注入的所有三种类型的数据包区分开来。

**HTTP Host和TLS SNI黑名单**
河南防火墙对基于 HTTP Host 和基于 TLS SNI 的审查使用同一个封锁列表，在 2025 年 3 月 4 日之前，河南防火墙的封锁列表一直远大于 GFW 的封锁列表。河南防火墙使用的封锁列表也针对与其他国家相关的州或市政府网站。例如，美国的大多数州政府网站，如 texas.gov、seattle.gov、alabama.gov、nc.gov 都在河南被封锁，但未被 GFW 封锁。与 GFW 封锁列表中出现的 83 个 *.gov* 域名相比，河南防火墙封锁了 1,002 个 *.gov* 域名，这表明其倾向于封锁任何展示来自世界各地的治理数据或新闻内容。事实上，河南防火墙比 GFW 更倾向于针对国家代码顶级域名（ccTLD）。其中一些封锁范围很广：2024 年，河南在1月19日，和2月1日至2月2日封锁了测试的所有 5,334 个 *.com.au 域名，在 2 月 15 日至 3 月 4 日封锁了所有 2,075 个 *.co.za 域名，在 2 月 8 日至 3 月 4 日封锁了所有 1,547 个 *.org.uk 域名。这些可能是过度封锁的实际例子，即防火墙包含过于宽泛的规则。目前不清楚河南防火墙为何会重复封锁和解封这些国家代码二级域名。

**与防火长城的区别和联系**

**单向封锁**
从中国境外发送探测不会触发河南防火墙，因为河南的防火墙只审查离开河南的流量，只有离开河南的流量被河南防火墙封锁。

**流量解析逻辑**
河南防火墙似乎是无状态的，并且在应对不同网络流量时不如 GFW 健壮。

**TCP 握手完整性要求**
网络中间设备的设计者通常需要在流量解析逻辑的健壮性和效率之间进行权衡。例如，由于互联网的非对称路由特性，以及河南防火墙和 GFW 并非总是客户端或服务器的直接邻居（如表所示），网络中间设备可能只能观察到单向的流量。这种特性常常使得中间设备的设计者放弃使用完整的 TCP 三次握手来追踪 TCP 连接并进行审查。

**TCP 分片**
TCP分片能够将较大的 TCP 载荷分割成较小的载荷。在规避审查的背景下，将 TLS ClientHello 消息分割成多个 TCP 分段已被用于绕过不对数据包进行重组的无状态审查者。然而，GFW 执行TCP重组，因此是有状态的。另一方面，河南防火墙不进行 TCP 重组，因此可以通过将 ClientHello 的 TCP 载荷分割成多个 TCP 分段（SNI 分布在这些分段之间）来绕过它。

**TLS 分片**
虽然 TCP 分片长期以来被用来绕过无状态审查者，但 TLS 分片的使用直到最近才由 Niere 等人  分析并在他们的 DPYProxy 工具中实现。鉴于 TLS 消息的最大大小超过了 TLS 记录的最大允许大小，TLS 标准允许将 TLS 消息分割到多个 TLS 记录中。Niere 等人发现 GFW 不执行 TLS 重组，因此可以通过将 TLS ClientHello 消息分片到多个 TLS 记录中（其中 SNI 被分割到同一 TCP 载荷内的多个 TLS 分段中）来绕过它。
截至 2024 年 4 月 4 日，河南防火墙和 GFW 都不执行 TLS 重组，因此可以通过 TLS ClientHello 分片来绕过它们。

**TCP 头部长度必须为 20 字节**
TCP头部的第 13 个字节的前四个有效位表示 TCP 数据偏移量，它指定了 TCP 头部的长度（以 32 位字为单位）。当没有 TCP 选项存在时，TCP 数据偏移字段的最小值为 5 个字（20 字节），最大值为 15 个字（60 字节）。
河南防火墙确实解析了 TCP 头部中的 TCP 头部长度字段，但有一个条件，即仅在 TCP 头部长度为 20 字节时才封锁连接。这一结果表明，河南防火墙可能只能审查大约 20% 的目标连接。

**不封锁IPV6和UDP连接**
据github匿名用户的分析，所有tor中继的IPv6地址都没有被GFW封禁。
河南省防火墙也不以网络层的IP为阻断依据。

**封锁列表**
河南防火墙封锁的国家代码顶级域名（ccTLD）多于 GFW，据GFWreport分析，河南防火墙的封锁列表比 GFW 的封锁列表更不稳定，主要是由于频繁添加和删除通用二级域名封锁规则所致。
河南防火墙在封锁域名方面，就其流行度而言，表现得更为同质化，而 GFW 的封锁列表则呈现出更异构的分布。虽然 GFW 防火墙针对更流行的网站，但河南防火墙更均匀地针对网站。
在 2023 年 12 月 26 日至 2025 年 3 月 31 日期间，每周测试 2.27 亿个域名。在实验期间，河南防火墙封锁了 4,196,532 个域名——是 GFW 曾封锁的 741,542 个域名的五倍多。有 479,247 个域名同时被两个防火墙封锁。两个封锁列表之间的 Jaccard 指数约为 0.0885，表明它们的相似度低于 9%，因此在覆盖范围上很大程度上是独立的，但又互为补充。
河南防火墙比 GFW 更倾向于针对商业、经济、计算机和互联网信息领域的域名。河南防火墙封锁列表上出现的总域名中，超过 35% 来自这两个类别。另一方面，GFW 则更多地针对新闻和媒体以及成人内容域名。

**封锁规则**
河南防火墙和 GFW 使用的最流行的封锁正则表达式模式是 ^(.*\.)?keyword$。此模式旨在用于封锁域名及其子域名。GFW 使用的第二种最流行的封锁正则表达式模式是 ^keyword$，仅用于封锁域名本身，而不封锁其子域名。GFW 使用的第三种最流行的封锁正则表达式模式是 ^(.*\.)?keyword，这很可能是在正则表达式模式中未包含结束锚点的错误。
与 GFW 有时采用没有结束锚点的正则表达式模式不同，河南防火墙总是在其正则表达式模式中包含结束锚点。这一结果可能是由于封锁列表维护得更仔细、更一致，或者可能是审查软件本身强制使用以结束锚点结尾的正则表达式模式，以防止人为错误。

**评价**
2025年来自 GFWreport认为：对中国七个不同城市和省份的测量表明河南省存在一个全新的地区性防火墙。这个河南防火墙对离开该省的流量实施基于 HTTP Host 和 TLS SNI 的审查。与 GFW 相比，它展现出独特的特征，包括独特的数据包注入行为和指纹、不同的连接追踪、解析和封锁逻辑、一个一度比GFW大十倍且更动态的封锁列表，以及更靠近客户端的网络位置。这种本地化的审查表明中国可能正在偏离其集中化的审查体系，允许地方当局在各自区域内施加更大程度的控制。预计未来中国其他地区可能也会进行类似部署，因此需持续监控区域审查的发展，并鼓励开发者利用公开资源改进翻墙工具，进一步探索审查技术的演变及其对全球互联网生态的影响。

**参见**
 长城防火墙（Great Firewall）- 大炮（Great Canon）