跳到主要内容

2. 协议概述 (Protocol Overview)

初始 EAP Identity 请求/响应交换完成后, TEAP 认证分两个阶段进行. 在第一阶段, TEAP 使用 TLS [RFC8446] 握手提供经过认证的密钥交换, 并建立受保护隧道. 隧道建立后, 第二阶段开始, 对等方和服务器继续交互, 以建立所需的认证和授权策略. TEAP 使用 TLV 对象执行内部认证, 传递认证结果以及其他信息, 例如信道绑定信息.

如 [RFC9190] 第 2.1.7 节和 [RFC9427] 第 3.1 节所述, 外层 EAP Identity SHOULD 是匿名网络访问标识符 (Network Access Identifier, NAI), 其形式见 [RFC7542] 第 2.4 节. 虽然 [RFC3748] 第 5.1 节未限制 Identity 字段的内容, 但 [RFC7542] 第 2.6 节指出, 不遵循 NAI 格式的 Identity 不能在认证, 授权和计费 (Authentication, Authorization, and Accounting, AAA) 代理网络中传输. 因此, 非 NAI 形式的 Identity 很可能只能在受限的本地网络中工作.

任何内部身份 (EAP 或其他形式) SHOULD 也遵循 [RFC9427] 第 3.1 节关于内部身份的建议.

[RFC7170] 定义了受保护访问凭证 (Protected Access Credential, PAC), 以对应 EAP-FAST [RFC4851]. 然而, 实现经验和分析表明 PAC 并非必要. TEAP 改为使用 [RFC9190] 第 2.1.2 节和第 2.1.3 节定义的 NewSessionTicket 消息执行会话恢复. 因此, PAC 已被废弃.

TEAP 会话用于建立或恢复既有会话, 通常目的是在对等方和网络之间建立网络连通性. TEAP 成功执行后, EAP 对等方和 EAP 服务器都会派生强会话密钥材料, 即主会话密钥 (Master Session Key) [RFC3748]. 随后该密钥材料可传递给网络接入服务器 (Network Access Server, NAS), 用于建立链路层安全关联.

2.1. 架构模型 (Architectural Model)

TEAP 使用的网络架构模型如下:

 +----------+      +----------+      +----------+      +----------+
| | | | | | | Inner |
| Peer |<---->| Authen- |<---->| TEAP |<---->| Method |
| | | ticator | | server | | server |
| | | | | | | |
+----------+ +----------+ +----------+ +----------+

Figure 1: TEAP Architectural Model

Peer 和 Authenticator 在 [RFC3748] 第 1.2 节中定义. TEAP server 是 [RFC3748] 第 1.2 节定义的 "backend authentication server". "Inner Method server" 通常是 TEAP server 的一部分, 负责处理 TLS 隧道内的应用数据, 例如 Inner Methods, EAP, 密码等.

上图中的实体是逻辑实体, 可能对应也可能不对应独立的网络组件. 例如, TEAP server 和 Inner Method server 可以是同一实体. authenticator 和 TEAP server 可以是同一实体. authenticator, TEAP server 和 Inner Method server 的功能也可以合并到同一个物理设备中. 例如, 典型 IEEE 802.11 部署会把 authenticator 放在接入点 (Access Point, AP) 中, 同时由 RADIUS 服务器提供 TEAP 和内部方法服务器组件. 上图以通用方式展示实体之间的分工, 并说明分布式系统可以如何构建. 但是, 实际系统可能以更简单的方式实现. 第 8.3 节的安全考虑进一步讨论了将 TEAP server 与 Inner Method server 分离所带来的影响.

2.2. 协议分层模型 (Protocol-Layering Model)

TEAP 数据包封装在 EAP 内. EAP 又需要一种传输协议. TEAP 数据包封装 TLS, TLS 随后用于封装用户认证信息. 因此, 可以使用分层模型描述 TEAP 消息, 其中每一层都封装其上一层. 下图说明各协议之间的关系:

 +------------------------------------------+
| Inner EAP Method | Other TLV information |
|------------------------------------------|
| TLV Encapsulation (TLVs) |
|------------------------------------------+---------------------+
| TLS | Optional Outer TLVs |
|----------------------------------------------------------------|
| TEAP |
|----------------------------------------------------------------|
| EAP |
|----------------------------------------------------------------|
| Carrier Protocol (EAP over LAN, RADIUS, Diameter, etc.) |
+----------------------------------------------------------------+

Figure 2: Protocol-Layering Model

TLV 层是由第 4.2 节定义的 TLV 对象组成的负载. TLV 对象用于在 EAP 对等方和 EAP 服务器之间携带任意参数. TEAP 保护隧道中的所有数据交换都封装在 TLV 层中.

用于在承载协议中封装 EAP 的方法已经定义. 例如, IEEE 802.1X [IEEE.802-1X.2020] 可用于在对等方和 authenticator 之间传输 EAP. RADIUS [RFC3579] 或 Diameter [RFC4072] 可用于在 authenticator 和 EAP 服务器之间传输 EAP.

2.3. 外部 TLV 与内部 TLV (Outer TLVs Versus Inner TLVs)

TEAP 数据包可以在 TLS 隧道内外包含 TLV, 定义如下:

Outer TLVs : 该术语指 TLS 隧道外的可选 TLV. 它们只允许出现在 TEAP 中的前两条消息里, 即第一条 EAP-server-to-peer 消息和第一条 peer-to-EAP-server 消息. 如果消息被分片, 整组分片计为一条消息.

Inner TLVs : 该术语指在 TLS 隧道内发送的 TLV. 在 TEAP Phase 1 中, Outer TLVs 用于帮助建立 TLS 隧道, 但不使用 Inner TLVs. 在 TEAP Phase 2 中, TLS 记录可以封装零个或多个 Inner TLVs, 但不使用 Outer TLVs.