1. 简介 (Introduction)
TLS protocol 的主要目标是在两个通信应用之间提供隐私和数据完整性. 该协议由两层组成: TLS Record Protocol 和 TLS Handshake Protocol. 最底层位于某个可靠 transport protocol 之上, 例如 TCP [TCP], 即 TLS Record Protocol. TLS Record Protocol 提供具有两个基本属性的 connection security:
- connection 是私有的. 数据加密使用 symmetric cryptography, 例如 AES [AES], RC4 [SCH]. 用于该对称加密的 key 对每个 connection 唯一生成, 并基于由另一个协议协商出的 secret, 例如 TLS Handshake Protocol. Record Protocol 也可以在无加密情况下使用.
- connection 是可靠的. message transport 包含使用 keyed MAC 的 message integrity check. MAC 计算使用 secure hash function, 例如 SHA-1 等. Record Protocol 可以不使用 MAC, 但通常只在另一个协议使用 Record Protocol 作为协商 security parameter 的传输时采用这种模式.
TLS Record Protocol 用于封装各种更高层协议. 其中一个被封装的协议是 TLS Handshake Protocol, 它允许 server 和 client 在 application protocol 传输或接收第一个数据 byte 之前相互认证, 并协商 encryption algorithm 和 cryptographic key. TLS Handshake Protocol 提供具有三个基本属性的 connection security:
- peer identity 可以使用 asymmetric 或 public key cryptography 认证, 例如 RSA [RSA], DSA [DSS]. 该认证可以是可选的, 但通常至少对一个 peer 是必需的.
- shared secret 的协商是安全的: 被协商出的 secret 对窃听者不可用, 且对任何已认证 connection, 即使攻击者能置身 connection 中间, 也无法获得该 secret.
- 协商是可靠的: 攻击者无法修改协商通信而不被通信双方检测到.
TLS 的一个优势是它独立于 application protocol. 更高层协议可以透明地构建在 TLS protocol 之上. 但是, TLS 标准不规定协议如何使用 TLS 添加安全性. 如何启动 TLS handshaking, 以及如何解释交换的 authentication certificate, 留给运行在 TLS 之上的协议设计者和实现者判断.
1.1. 需求术语 (Requirements Terminology)
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和 "OPTIONAL" 按 RFC 2119 [REQ] 的说明解释.
1.2. 相对 TLS 1.1 的主要差异 (Major Differences from TLS 1.1)
本文档是 TLS 1.1 [TLS1.1] protocol 的修订版, 提升了灵活性, 尤其是 cryptographic algorithm 协商方面. 主要变更包括:
- pseudorandom function (PRF) 中的 MD5/SHA-1 组合被替换为 cipher-suite 指定的 PRF. 本文档中的所有 cipher suite 都使用 P_SHA256.
- digitally-signed element 中的 MD5/SHA-1 组合被替换为单一 hash. signed element 现在包含一个显式指定所用 hash algorithm 的字段.
- 清理 client 和 server 指定其可接受 hash 和 signature algorithm 的能力. 这也放宽了先前 TLS 版本对 signature 和 hash algorithm 的一些约束.
- 添加对 authenticated encryption with additional data mode 的支持.
- TLS Extensions 定义和 AES Cipher Suites 从外部 [TLSEXT] 和 [TLSAES] 合并进来.
- 更严格地检查 EncryptedPreMasterSecret version number.
- 收紧若干 requirement.
- verify_data length 现在取决于 cipher suite, 默认仍为 12.
- 清理 Bleichenbacher/Klima attack 防护描述.
- 许多情况下现在必须发送 alert.
- certificate_request 之后, 如果没有可用 certificate, client 现在必须发送空 certificate list.
- TLS_RSA_WITH_AES_128_CBC_SHA 现在是 mandatory-to-implement cipher suite.
- 添加 HMAC-SHA256 cipher suite.
- 移除 IDEA 和 DES cipher suite. 它们现在已弃用, 并将由单独文档记录.
- SSLv2 backward-compatible hello 的支持现在是可以, 不再是应该, 且发送它是不应该.
- presentation language 添加有限 "fall-through", 允许多个 case arm 具有相同编码.
- 添加 Implementation Pitfalls section.
- 常规澄清和编辑性工作.