首页/安全/加密与证书速查/TLS 压缩与 CRIME 类风险
TLS 与 HTTPS60 条

TLS 压缩与 CRIME 类风险

TLS 层压缩(DEFLATE)会因压缩率随明文变化而泄露信息,CRIME 类攻击即由此而来;TLS 1.3 已移除压缩,1.2 也应保持禁用。

加密与证书速查安全更新于 2026-10-13

TLS 压缩与 CRIME 风险

TLS 层压缩(DEFLATE)会因压缩率随明文变化而泄露信息,CRIME 类攻击正是通过观察压缩后的长度推断出令牌等内容。TLS 1.3 已移除压缩,TLS 1.2 也应保持禁用。要注意 HTTP 层的 gzip 与 brotli 属于另一个层面的压缩,同样可能引出 BREACH 类问题,两者的排查不能互相替代。

基本信息

现状TLS 1.3 不提供压缩;主流服务端默认不启用 TLS 压缩
历史TLS 1.0 与 1.1 时代存在压缩扩展,因 CRIME 被广泛关闭
HTTP 层gzip 与 brotli 仍可能引发 BREACH 类问题,属于不同层面
缓解思路含敏感反射内容的响应避免压缩,或做随机化处理
验证方式用 s_client 观察 Compression 字段

典型使用场景

  • 安全测评中确认 TLS 压缩已关闭
  • 排查 BREACH 类风险:响应压缩与反射内容同时存在
  • 评估为性能开启压缩的收益与风险
  • 检查老服务端配置模板是否仍保留压缩选项
  • 分析抓包中出现的压缩相关扩展

检查两个层面的压缩

检查两个层面的压缩
# TLS 层(TLS 1.2 及以下)
openssl s_client -connect example.com:443 -tls1_2 </dev/null 2>&1 | grep -i 'Compression'
# HTTP 层压缩
curl -sI -H 'Accept-Encoding: gzip' https://example.com/ | grep -i 'content-encoding'
# 同一次响应里同时观察两者的组合情况

两类压缩对比

层面机制风险
TLS 压缩握手协商的压缩扩展CRIME 类攻击
HTTP 压缩gzip 或 brotli 编码BREACH 类攻击
触发前提明文可被攻击者部分控制需存在反射内容与敏感信息
缓解方向关闭压缩分级处理与随机化
排查 BREACH 类风险时关注三点:响应是否压缩、是否包含攻击者可注入并反射的内容、是否包含 CSRF 令牌等敏感片段。三者同时具备才构成可利用链路,缓解措施可以按这个前提逐项处理,而不必全局关闭压缩。
补充:压缩策略可以按响应内容分级——静态资源照常压缩,包含令牌或用户输入反射的动态页面关闭压缩。这种分级做法在多数业务上能兼顾带宽与风险,但前提是先明确哪些路径属于敏感响应,并把清单维护起来。

易错点

  • 只检查 TLS 压缩而忽略 HTTP 压缩 → 漏掉风险的实际来源
  • 为缓解风险全局关闭 gzip → 带宽与延迟明显上升,代价可能难以接受
  • 认为 TLS 1.3 已解决所有压缩问题 → 它只移除了 TLS 层压缩,HTTP 层风险依然存在
  • 忽略老配置模板中的压缩选项 → 上线新节点后风险重新出现

数据来源与参考

  • RFC 8446 §1.2(移除压缩)
  • RFC 7457(已知攻击与缓解)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌