1. 介绍
传输层安全性协议(TLS)的目标是在两个通信应用之间提供隐私和数据完整性。
TLS 协议由两层组成:TLS 记录协议(TLS Record Protocol)和 TLS 握手协议(TLS Handshake Protocol)。最低层是 TLS 记录协议,它被封装在某个可靠的传输协议(例如 TCP)[RFC793] 中。
TLS 记录协议提供的连接安全具有两个基本属性:
- 连接是私有的。使用对称密码学(例如 DES [DES]、RC4 [SCH] 等)对数据进行加密。由于在 TLS 记录协议中没有使用流加密,因此可以通过生成密钥的密码块链接(CBC)模式来隐藏记录的密文,从而防止填充攻击。附录 A.1 描述了该模型,并在附录 E 中讨论了新的 IV 攻击(例如 [CBCATT])以及如何避免。对称加密密钥为每个连接生成,且基于另一协议(如 TLS 握手协议)协商的秘密。记录协议也可以在不加密的情况下使用,但很少使用;参见第 10 章。
- 连接是可靠的。使用消息传输中包含的密钥消息认证码(MAC)对消息传输进行完整性检查。消息传输构建时使用安全哈希函数(例如 SHA、MD5 等)。记录协议在没有 MAC 的情况下也可以使用,但很少使用;参见第 10 章。在一些较旧的 OKAM 实现中可能存在一个脆弱的数据完整性检查(使用 MAC 写入连接状态而不是预期使用情况),在这种情况下,接收方可以禁用序列化;参见附录 E。
TLS 记录协议还可用于封装更高层协议,例如 TLS 握手协议。TLS 握手协议允许客户端和服务器相互进行身份验证,并就加密算法和加密密钥协商达成一致的参数。
TLS 握手协议提供的连接安全具有三个基本属性:
- 对等方的身份可以使用非对称密码学(例如 RSA [RSA]、DSA [DSS] 等)的公钥方法进行认证。该认证可以可选;但通常至少需要一方(通常是服务器)进行认证。
- 协商的秘密是安全的。协商的秘密不太可能被窃听者获取。请注意,只有在用公钥方法认证通信者身份时,才应信任此类密钥协商免受中间人攻击。
- 协商是可靠的。在没有被检测到的攻击者的干扰下,协商的通信者不可能协商出不同的参数集。
TLS 的一个优势是它与应用协议无关。高层协议可以透明地分层在 TLS 协议之上。然而,TLS 标准并未指定如何增强 TLS 的安全性,如何发起 TLS 握手以及如何定义交换的认证证书的含义:这些决策留给运行在 TLS 之上的协议的设计者和实现者。
1.1. 术语
本文件中使用的术语如下表所示。
| 术语 | 定义 |
|---|---|
| 应用协议 | 一种协议,位于 TLS 之上,负责定义正在传输的数据的语义。 |
| 客户端 | 建立连接的端点。 |
| 连接 | 由对等方之间的唯一会话和(在连接层)当前密钥集定义的对等方之间的传输。 |
| 端点 | 连接的客户端或服务器。 |
| 握手 | 协商安全参数(如密钥和加密算法)的 initial 协商过程。 |
| 对端 | 连接的远程端点。当我们想强调另一方的角色(而非特定端点)时使用。 |
| 会话 | 客户端和服务器之间的关联。由握手协议创建。定义了一组加密安全参数,可用于创建多个连接。 |
| 服务器 | 接受客户端连接的端点。 |
注意:本译文由 AI 翻译,可能包含错误。请参考 RFC 5246 官方英文原文进行核对。