术语表

SSL 3.0 (SSLv3)

最后核实

定义

SSL 3.0 是 Netscape 设计的安全套接层协议的最后一个版本,1996 年发布,2014 年被 POODLE 攻破,2015 年被 RFC 7568 废弃。

SSL 3.0 是 Netscape 设计的安全套接层协议的最后一个版本,1996 年发布,后来作为历史文档整理为 RFC 6101。TLS 1.0 正是在它的基础上制定的,记录层和握手的基本结构一直延续到今天的 TLS。

为什么重要

2014 年 10 月公布的 POODLE 攻击表明,SSL 3.0 的 CBC 填充无法修补:填充字节不受 MAC 保护,内容也没有规定,攻击者只要能让浏览器反复发请求,就能逐字节还原 Cookie 等敏感数据。SSL 3.0 里唯一不用 CBC 的选择是 RC4,而 RC4 本身也有缺陷,后来被 RFC 7465 禁用,所以 SSL 3.0 根本不存在安全配置。当年很多客户端握手失败后会自动用更低版本重试,攻击者可借此强制降级到 SSL 3.0。RFC 7568 于 2015 年 6 月正式废弃 SSL 3.0。

例子

确认服务器已不再提供 SSLv3:

nmap --script ssl-enum-ciphers -p 443 example.com

输出中不应出现 SSLv3 一节。目前大多数 OpenSSL 版本连发起 SSL 3.0 握手的能力都已去掉。

常见误区

  • 叫"SSL 证书",说明网站用的是 SSL 协议。 证书与协议版本无关,今天所谓的 SSL 证书实际都通过 TLS 1.2 或 1.3 使用,"SSL"只是沿用下来的叫法。
  • POODLE 只影响主动选择 SSL 3.0 的客户端。 攻击者可以人为触发版本回退,所以服务器必须彻底关闭 SSL 3.0;RFC 7507 定义的 TLS_FALLBACK_SCSV 就是为阻止这类强制降级而加的。
  • SSL 3.0 配 RC4 就没问题。 RC4 自身存在可被利用的偏差,两条路都不安全。

延伸阅读