跳到主要内容

3. 下层行为

3. 下层行为

3.1. 下层要求 (Lower Layer Requirements)

EAP 对下层做出以下假设:

[1] 不可靠传输。在 EAP 中,认证器重传尚未收到响应的请求,因此 EAP 不假定下层是可靠的。由于 EAP 定义了自己的重传行为,当 EAP 在可靠的下层上运行时,下层和 EAP 层都可能发生重传(尽管这是不希望的)。

请注意,EAP Success 和 Failure 数据包不会被重传。在没有可靠下层的情况下,并且在错误率不可忽略的情况下,这些数据包可能会丢失,导致超时。因此,如第 4.2 节所述,实现应该提高对 EAP Success 或 Failure 数据包丢失的弹性。

[2] 下层错误检测。虽然 EAP 不假定下层是可靠的,但它确实依赖于下层错误检测(例如 CRC、校验和、MIC 等)。EAP 方法可能不包括 MIC,或者如果包括,它可能不会在 EAP 数据包的所有字段上计算,例如 Code、Identifier、Length 或 Type 字段。因此,如果没有下层错误检测,未检测到的错误可能会渗入 EAP 层或 EAP 方法层头字段,导致认证失败。

例如,EAP TLS [RFC2716] 仅在 Type-Data 字段上计算其 MIC,将 MIC 验证失败视为致命错误。如果没有下层错误检测,此方法以及类似方法将无法可靠地执行。

[3] 下层安全性。EAP 不要求下层提供安全服务,例如每数据包机密性、认证、完整性和重放保护。但是,在这些安全服务可用的情况下,支持密钥派生的 EAP 方法(参见第 7.2.1 节)可用于提供动态密钥材料。这使得可以将 EAP 认证绑定到后续数据,并防止数据修改、欺骗或重放。有关详细信息,请参见第 7.1 节。

[4] 最小 MTU。EAP 能够在提供 1020 个八位字节或更大 EAP MTU 大小的下层上运行。

EAP 不支持路径 MTU 发现,EAP 不支持分片和重组,本规范中定义的方法也不支持:Identity (1)、Notification (2)、Nak Response (3)、MD5-Challenge (4)、One Time Password (5)、Generic Token Card (6) 和 expanded Nak Response (254) 类型。

通常,EAP 对等体从下层获取有关 EAP MTU 的信息,并将 EAP 帧大小设置为适当的值。当认证器以透传模式运行时,认证服务器没有直接确定 EAP MTU 的方法,因此依赖于认证器向其提供此信息,例如通过 Framed-MTU 属性,如 [RFC3579] 第 2.4 节所述。

虽然 EAP-TLS [RFC2716] 等方法支持分片和重组,但最初设计用于 PPP 的 EAP 方法(其中控制帧保证 1500 个八位字节的 MTU(参见 [RFC1661] 第 6.1 节))可能缺少分片和重组功能。

在没有其他信息的情况下,EAP 方法可以假定最小 EAP MTU 为 1020 个八位字节。如果 EAP 方法的有效负载可能大于此最小 EAP MTU,则应该 (SHOULD) 包括对分片和重组的支持。

EAP 是一个锁步协议,这意味着在处理分片和重组时会有一定的低效率。因此,如果下层支持分片和重组(例如 EAP 通过 IP 传输的情况),则在下层而不是在 EAP 中进行分片和重组可能更可取。这可以通过向 EAP 提供人为大的 EAP MTU 来实现,从而导致在下层内处理分片和重组。

[5] 可能的重复。当下层可靠时,它将向 EAP 层提供非重复的数据包流。但是,虽然下层提供非重复是可取的,但这不是必需的。Identifier 字段为对等体和认证器提供了检测重复的能力。

[6] 顺序保证。EAP 不要求 Identifier 单调递增,因此依赖于下层顺序保证才能正确操作。EAP 最初被定义为在 PPP 上运行,[RFC1661] 第 1 节有顺序要求:

"点对点协议设计用于在两个对等体之间传输数据包的简单链路。这些链路提供全双工同时双向操作,并假定按顺序传递数据包。"

EAP 的下层传输必须 (MUST) 在给定优先级级别上保持源和目标之间的顺序([IEEE-802] 提供的顺序保证)。

如果发生重新排序,通常会导致 EAP 认证失败,从而导致重新运行 EAP 认证。在可能发生重新排序的环境中,因此预期 EAP 认证失败将很常见。建议 (RECOMMENDED) 仅在提供顺序保证的下层上运行 EAP;不建议 (NOT RECOMMENDED) 在原始 IP 或 UDP 传输上运行 EAP。RADIUS [RFC3579] 中 EAP 的封装满足顺序要求,因为 RADIUS 是一个按顺序传递数据包的"锁步"协议。

3.2. PPP 中的 EAP 使用 (EAP Usage Within PPP)

为了通过点对点链路建立通信,PPP 链路的每一端首先在链路建立阶段发送 LCP 数据包以配置数据链路。链路建立后,在进入网络层协议阶段之前,PPP 提供可选的认证阶段。

默认情况下,认证不是强制性的。如果需要链路认证,实现必须 (MUST) 在链路建立阶段指定认证协议配置选项。

如果在认证阶段已经确定对等体的身份,服务器可以在以下网络层协商中使用该身份来选择选项。

当在 PPP 中实现时,EAP 不在 PPP 链路控制阶段选择特定的认证机制,而是将此推迟到认证阶段。这允许认证器在确定特定认证机制之前请求更多信息。这也允许使用实际实现各种机制的"后端"服务器,而 PPP 认证器仅传递认证交换。PPP 链路建立和认证阶段以及认证协议配置选项在点对点协议 (PPP) [RFC1661] 中定义。

3.2.1. PPP 配置选项格式 (PPP Configuration Option Format)

用于协商 EAP 的 PPP 认证协议配置选项格式摘要如下。字段从左到右传输。

恰好一个 EAP 数据包封装在 PPP 数据链路层帧的信息字段中,其中协议字段指示类型十六进制 C227 (PPP EAP)。

    0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type (类型)

3

Length (长度)

4

Authentication Protocol (认证协议)

C227 (十六进制) 用于可扩展认证协议 (EAP)

3.3. IEEE 802 中的 EAP 使用 (EAP Usage Within IEEE 802)

EAP 在 IEEE 802 上的封装在 [IEEE-802.1X] 中定义。EAP 的 IEEE 802 封装不涉及 PPP,IEEE 802.1X 不包括对链路或网络层协商的支持。因此,在 IEEE 802.1X 中,无法协商非 EAP 认证机制,例如 PAP 或 CHAP [RFC1994]。

3.4. 下层指示 (Lower Layer Indications)

下层指示的可靠性和安全性取决于下层。由于 EAP 是介质独立的,在处理 EAP 消息时不考虑下层安全性的存在或缺失。

为了提高可靠性,如果对等体收到第 7.2 节中定义的下层成功指示,它可以 (MAY) 得出 Success 数据包已丢失的结论,并表现得好像它实际上收到了 Success 数据包。这包括在第 4.2 节所述的某些情况下选择忽略 Success。

关于 PPP、IEEE 802 有线网络和 IEEE 802.11 无线 LAN 中下层指示的一些可靠性和安全性问题的讨论可以在安全考虑第 7.12 节中找到。

EAP 认证完成后,对等体通常会通过认证器传输和接收数据。希望确保传输数据的实体与成功完成 EAP 认证的实体相同。为了实现这一点,下层有必要提供每数据包完整性、认证和重放保护,并将这些每数据包服务绑定到 EAP 认证期间派生的密钥。否则,后续数据流量可能会被修改、欺骗或重放。

当下层密码套件的密钥材料本身由 EAP 提供时,密码套件协商和密钥激活由下层控制。在 PPP 中,密码套件在 ECP 内协商,因此在 ECP 完成之前无法使用从 EAP 认证派生的密钥。因此,初始 EAP 交换不能受 PPP 密码套件保护,尽管 EAP 重新认证可以受到保护。

在 IEEE 802 介质中,初始密钥激活通常也在 EAP 认证完成后发生。因此,初始 EAP 交换通常不能受下层密码套件保护,尽管 EAP 重新认证或预认证交换可以受到保护。