Android 17 最重要的网络隐私变化之一,是在系统层面支持 Encrypted Client Hello(ECH,加密客户端问候)。这是 TLS 1.3 的扩展协议,能够加密安全连接建立初期通常会暴露的网站主机名。
这意味着,对于支持 ECH 的连接,Wi-Fi 网络运营者、互联网服务提供商(ISP)以及其他网络观察者将更难直接判断某个应用正在访问哪个具体网站或服务。不过,ECH 并不等于完全匿名,也不是 VPN。 46
ECH 到底隐藏了什么?
在传统 TLS 连接中,客户端会通过 Server Name Indication(SNI,服务器名称指示) 发送目标主机名。这个信息出现在 TLS 握手最开始的 ClientHello 中,网络路径上的观察者可能据此知道应用要访问的域名。
ECH 会使用目标服务发布的配置和密钥材料,加密 ClientHello 中这部分敏感信息。目标服务器能够解密受保护的内容,而网络观察者看到的则是外层握手,而不是客户端真正请求的主机名。 416
HTTPS 原本已经会加密网页内容,但“正在访问哪个服务”这一层元数据并不一定会被隐藏。ECH 针对的正是这类域名泄露:在客户端和服务器都支持的情况下,减少 TLS 握手阶段暴露网站名称的风险。 56
哪些信息仍然可能被看到?
ECH 只保护连接中的一部分信息。根据观察者所处的位置和网络配置,以下数据仍可能可见:
- 设备的源 IP 地址;
- 目标 IP 地址,它可能指向某个 CDN、云服务商,甚至在部分情况下指向具体服务;
- 连接时间、数据包大小和流量总量;
- 如果 DNS 查询没有单独加密,DNS 请求本身也可能暴露域名。
因此,把 ECH 描述成“隐身上网”并不准确。Google 将 ECH 与 Private DNS(专用 DNS)视为互补措施:ECH 负责隐藏 TLS 握手中的主机名,经过加密的 DNS 则帮助保护单独发生的域名解析过程。两者都不会单独隐藏设备的 IP 地址。 612
如果用户还需要隐藏 IP 地址,仍需使用 VPN、代理或 Tor 等独立方案。
Android 17 中 ECH 的启用条件
Android 17 提供了网络库实现 ECH 所需的系统支持和 API,包括查询包含 ECH 配置的 HTTPS DNS 记录的能力。 4
但平台支持并不意味着每个应用都会自动获得保护。ECH 真正生效需要同时满足三个条件:
- 设备运行 Android 17 或更高版本。
- 应用使用的网络栈支持 ECH。 Android 文档列举的相关网络组件包括 HttpEngine、WebView 和 OkHttp,但系统支持本身不会自动让所有网络库具备 ECH 能力。 23
- 目标服务器已经部署 ECH。 如果服务端没有完成配置,客户端就无法加密发往该服务的网站主机名。 25
对于目标版本为 Android 17 或更高版本的应用,只要网络库和远程服务器都支持该协议,TLS 连接就会使用 ECH。如果 ECH 无法使用,应用配置的域名加密策略将决定连接是继续回退,还是直接失败、拒绝建立不安全的连接。 12
ECH GREASE 是什么?
Android 的域名加密策略并不是简单的“开”或“关”。当域名加密已启用、但目标服务器尚未支持真正的 ECH 时,Android 可以发送 ECH GREASE。
GREASE 扩展本身无法提供真正的主机名加密,但它会模拟 ECH 流量的外观。这样做有两个目的:提升兼容性,并降低网络系统通过“是否出现 ECH”这一简单特征对流量进行分类的可能性。
换句话说,ECH GREASE 不是成功 ECH 的替代品,也不会像真正的 ECH 那样隐藏目标主机名;它更像是一种为协议演进和兼容性服务的机制。 1
如果应用关闭域名加密,Android 的 NetworkSecurityPolicy 文档指出,ECH 和 GREASE 都不应被使用。该 API 还提供了包括“启用”和“必须启用”在内的域名加密模式。 1
开发者需要做什么?
Android 17 的系统能力不会自动保护所有应用的网络流量。开发者需要重点检查以下事项:
- 确认应用使用的网络库已经集成 ECH 支持。 235
- 在 Network Security Config 或等效配置中设置应用的域名加密策略。 15
- 确保网络库能够获取并使用目标服务发布的 ECH 配置。Android 已提供查询包含 ECH 配置的 HTTPS DNS 记录的系统 API。 4
- 分别测试支持和不支持 ECH 的服务器,并明确应用在无法使用 ECH 时是允许回退,还是要求 ECH、以“失败即关闭”的方式终止连接。 1
服务端同样必须部署 ECH,并发布客户端所需的配置。这一服务端依赖,是 Android 17 不会立即为所有应用隐藏所有访问域名的主要原因。 516
Google 表示,正在与 Jigsaw、业内参与者、服务提供商和应用开发者合作,推动 ECH 的普及。更长期的目标,是通过通用网络基础设施,让普通应用也能获得主机名保护,而不只是经过特殊配置的浏览器。 46
Google 还建议应用开发者采用支持 ECH 的现代网络库,并在相关配置中启用该功能;Google 博文提到 OkHttp 5.5.0 及 ECH 配置作为实践方向。 6
Android 17 还有哪些网络安全变化?
访问局域网需要运行时权限
面向 Android 17 或更高版本的应用,在发现或连接局域网设备前,必须请求 ACCESS_LOCAL_NETWORK 运行时权限。该权限属于现有的 NEARBY_DEVICES(附近设备)权限组,因此,已经授予该组其他权限的用户可能不会再次看到单独的组级提示。 217
这一变化旨在减少应用在用户不知情的情况下扫描本地网络,从而降低跟踪、设备指纹识别以及探测易受攻击设备的风险。智能家居设备、投屏接收器或其他局域网设备的合法控制应用,则需要声明并申请这一权限。 1719
默认启用 Certificate Transparency
Android 17 默认对 TLS 连接启用 Certificate Transparency(CT,证书透明度)。CT 要求公开证书出现在可审计的公开日志中,有助于发现错误签发或不当签发的公钥证书。
应用可以通过网络安全配置,在全局范围或针对特定域名选择退出 CT。 3
运营商可以限制不安全的 2G 连接
Android 17 还加入了针对 2G 网络安全弱点的保护。在设备和运营商支持的情况下,运营商可以默认限制或关闭 2G 连接,从而降低用户遭遇伪基站和“SMS Blaster”短信劫持攻击的风险。具体行为取决于运营商和设备支持情况。 8
实际隐私效果:有明显改善,但不是完全隐身
ECH 的价值在于:当客户端和服务器都支持这一标准时,它能从 TLS 握手的关键位置移除网站主机名,减少网络观察者直接读取访问域名的机会。
但 DNS 配置、目标 IP 地址、连接时间、数据包大小和流量规模仍可能提供线索。ECH 最适合与加密 DNS 配合使用;如果目标是隐藏 IP 地址,则还需要 VPN、代理或 Tor 等独立工具。
对 Android 17 这项变化最准确的概括是:它让网络观察者更难读取你正在访问的网站或服务名称,但并没有隐藏连接的全部元数据,也没有让用户自动获得匿名上网能力。