QUIC 协议暂时不支持解密 — 阻断让应用回退到 TLS
什么是 QUIC
QUIC 是基于 UDP 的新传输层协议,是 HTTP/3 的底层实现。Google Chrome、Google 全家桶(YouTube、Gmail、搜索)、Facebook 等已经全面迁移到 QUIC,很多新 App 也开始使用。
| 对比 | TLS 1.3 + TCP | QUIC |
|---|---|---|
| 传输层 | TCP(可靠、保序) | UDP(自研可靠层) |
| 握手延迟 | 3 RTT | 1 RTT(支持 0-RTT 恢复) |
| 多路复用 | 需要 HTTP/2 | 内建流级多路复用 |
| 连接迁移 | IP 变化断连接 | 支持(Connection ID 机制) |
为什么 PCAPdroid 解不了
PCAPdroid 的 TLS 解密基于 mitmproxy 中间件库。mitmproxy 的 QUIC 支持目前仍未完成(2024 年仍在开发中),详见 mitmproxy 官方 issue #4170。PCAPdroid 也只能等底层支持到位再跟进。
Connections 里遇到 QUIC 连接时,锁图标会显示橙色(不支持解密)。
临时解决:主动阻断 QUIC 让应用回退
PCAPdroid 设置里有一个主动阻断 QUIC的开关,开启后:
- PCAPdroid 检测到目标应用发起 QUIC 连接时直接阻断
- 应用发现 QUIC 走不通,按标准协议行为自动回退到传统 TLS 1.3
- 回退成功后 TLS 解密就能正常生效(绿色锁)
这是目前 PCAPdroid 侧唯一可行的变通方案。
局限:强制 QUIC 的应用
某些应用强制 QUIC——发现 QUIC 被阻断后直接拒绝联网、不做 TLS 回退(比如某些 Google 服务的特定端点)。遇到这种情况:
- 这个连接在 PCAPdroid 里会一直是橙色锁
- 应用的这个功能会报错或无法使用
- 暂时没有好办法,只能等 mitmproxy 或 PCAPdroid 底层支持
怎么识别哪些应用用了 QUIC
Connections 里用协议筛选(Edit Filter → Protocol → QUIC)就能列出所有 QUIC 连接。配合应用筛选一起看,可以快速识别哪些应用大量使用 QUIC。
未来展望
mitmproxy 一直在开发 QUIC 支持,PCAPdroid 会在底层到位后跟进。届时 PCAPdroid 的 TLS 解密能力会覆盖 QUIC,橙色锁连接会变成绿色锁,临时的阻断+回退方案就可以去掉了。