RFC 9427: TLS-Based Extensible Authentication Protocol (EAP) Types for Use with TLS 1.3
- A. DeKok
This RFC was updated
Abstract
The Extensible Authentication Protocol-TLS (EAP-TLS) (RFC 5216) has been updated for TLS 1.3 in RFC 9190. Many other EAP Types also depend on TLS, such as EAP-Flexible Authentication via Secure Tunneling (EAP-FAST) (RFC 4851), EAP-Tunneled TLS (EAP-TTLS) (RFC 5281), the Tunnel Extensible Authentication Protocol (TEAP) (RFC 7170). It is possible that many vendor-specific EAP methods, such as the Protected Extensible Authentication Protocol (PEAP), depend on TLS as well. This document updates those methods in order to use the new key derivation methods available in TLS 1.3. Additional changes necessitated by TLS 1.3 are also discussed.¶
Status of This Memo
This is an Internet Standards Track document.¶
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
EAP-TLS has been updated for TLS 1.3 in [RFC9190]. Many other EAP Types also depend on TLS, such as EAP-FAST [RFC4851], EAP-TTLS [RFC5281], and TEAP [RFC7170]. It is possible that many vendor-specific EAP methods, such as PEAP [PEAP], depend on TLS as well. All of these methods use key derivation functions that are no longer applicable to TLS 1.3; thus, these methods are incompatible with TLS 1.3.¶
This document updates these methods in order to be used with TLS 1.3. These changes involve defining new key derivation functions. We also discuss implementation issues in order to highlight differences between TLS 1.3 and earlier versions of TLS.¶
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
2. Using TLS-Based EAP Methods with TLS 1.3
In general, all of the requirements in [RFC9190] apply to other EAP methods that wish to use TLS 1.3. Unless otherwise required herein, implementations of EAP methods that wish to use TLS 1.3 MUST follow the guidelines in [RFC9190].¶
There remain some differences between EAP-TLS and other TLS-based EAP methods that are addressed by this document. The main difference is that [RFC9190] uses the EAP-TLS Type (value 0x0D) in a number of calculations, whereas other method types will use their own Type value instead of the EAP-TLS Type value. This topic is discussed further in Section 2.1.¶
An additional difference is that [RFC9190], Section 2.5 requires the EAP server to send a protected success result indication once the EAP-TLS handshake has completed. This indication is composed of one octet (0x00) of application data. Other TLS-based EAP methods also use this result indication, but only during resumption. When other TLS-based EAP methods use full authentication, the result indication is not needed or used. This topic is explained in more detail in Sections 3 and 4.¶
Finally, this document includes clarifications on how various TLS- based parameters are calculated when using TLS 1.3. These parameters are different for each EAP method, so they are discussed separately.¶
2.1. Key Derivation
The key derivation for TLS-based EAP methods depends on the value of the EAP Type as defined by [IANA] in the "Extensible Authentication Protocol (EAP) Registry". The most important definition is of the Type field, as first defined in [RFC3748], Section 2:¶
Type = value of the EAP Method type¶
For the purposes of this specification, when we refer to logical Type, we mean that the logical Type is defined as one octet for values smaller than 254 (the value for the Expanded Type). When Expanded EAP Types are used, the logical Type is defined as the concatenation of the fields required to define the Expanded Type, including the Type with value 0xfe, Vendor-Id (in network byte order), and Vendor-Type fields (in network byte order) defined in [RFC3748], Section 5.7, as given below:¶
This definition does not alter the meaning of Type in [RFC3748] or change the structure of EAP packets. Instead, this definition allows us to simplify references to EAP Types by using a logical "Type" instead of referring to "the Type field or the Type field with value 0xfe, plus the Vendor-ID and Vendor-Type". For example, the value of Type for PEAP is simply 0x19.¶
Note that unlike TLS 1.2 and earlier, the calculation of the TLS-Exporter function depends on the length passed to it. Therefore, implementations MUST pass the correct length instead of passing a large length and truncating the output. Any output calculated using a larger length value, which is then truncated, will be different from the output that was calculated using the correct length.¶
Unless otherwise discussed below, the key derivation functions for all TLS-based EAP Types are defined in [RFC9190], Section 2.3 and reproduced here for clarity. These definitions include ones for the Master Session Key (MSK) and the Extended Master Session Key (EMSK):¶
We note that these definitions reuse the EAP-TLS exporter labels and change the derivation only by adding a dependency on the logical Type. The reason for this change is simplicity. The inclusion of the EAP Type makes the derivation method specific. There is no need to use different labels for different EAP Types as was done earlier.¶
These definitions apply in their entirety to EAP-TTLS [RFC5281] and PEAP as defined in [PEAP] and [MSPEAP]. Some definitions apply to EAP-FAST and TEAP with exceptions as noted below.¶
It is RECOMMENDED that vendor-defined and TLS-based EAP methods use the above definitions for TLS 1.3. There is no compelling reason to use different definitions.¶
2.2. TEAP
TEAP previously used a Protected Access Credential (PAC), which is functionally equivalent to session tickets provided by TLS 1.3 that contain a pre-shared key (PSK) along with other data. As such, the use of a PAC is deprecated for TEAP in TLS 1.3. PAC provisioning, as defined in [RFC7170], Section 3.8.1, is also no longer part of TEAP when TLS 1.3 is used.¶
[RFC7170], Section 5.2 gives a definition for the Inner Method Session Key (IMSK), which depends on the TLS Pseudorandom Function (PRF) (also known as TLS-PRF). When the j'th inner method generates an EMSK, we update that definition for TLS 1.3 as:¶
The secret is the EMSK or MSK from the j'th inner method. When an inner method does not provide an EMSK or MSK, IMSK[j] is 32 octets of zero.¶
The other key derivations for TEAP are given here. All derivations not given here are the same as given above in the previous section. These derivations are also used for EAP-FAST, but using the EAP-FAST Type.¶
The derivation of the IMSKs, Inner Method Compound Keys (IMCKs), and Compound Session Keys (CMKs) is given below.¶
Note: In these definitions, || denotes concatenation.¶
In TLS 1.3, the derivation of IMCK[j] uses both a different label
and a different order of concatenating fields than what was used by TEAP
with TLS 1.2. Similarly, the session
The outer MSK and EMSK are then derived from the final ("n"th) inner method, as follows:¶
The TEAP Compound Message Authentication Code (MAC) defined in [RFC7170], Section 5.3 remains the same, but the MAC for TLS 1.3 is computed with the Hashed Message Authentication Code (HMAC) algorithm negotiated for the HMAC-based Key Derivation Function (HKDF) in the key schedule, as per [RFC8446], Section 7.1. That is, the MAC used is the MAC derived from the TLS handshake:¶
where we define CMK[n] as the CMK taken from the final ("n"th) inner method.¶
For TLS 1.3, the MAC is computed with the HMAC algorithm negotiated for HKDF in the key schedule, as per [RFC8446], Section 7.1. That is, the MAC used is the MAC derived from the TLS handshake.¶
The definition of BUFFER is unchanged from [RFC7170], Section 5.3.¶
2.2.1. Client Certificates
The use of client certificates is still permitted when using TEAP with TLS 1.3. However, if the client certificate is accepted, then the EAP peer MUST proceed with additional authentication of Phase 2, as per [RFC7170], Section 7.6. If there is no Phase 2 data, then the EAP server MUST reject the session.¶
While [RFC5281], Section 7.6 permits "authentication of the client via client certificate during phase 1, with no additional authentication or information exchange required," this practice is forbidden when TEAP is used with TLS 1.3. If there is a requirement to use client certificates with no inner tunnel methods, then EAP-TLS should be used instead of TEAP.¶
[RFC7170], Section 7.4.1 suggests that client certificates should be sent in Phase 2 of the TEAP exchange "since TLS client certificates are sent in the clear". While TLS 1.3 no longer sends client certificates in the clear, TEAP implementations need to distinguish identities for both User and Machine using the Identity-Type TLV (with values 1 and 2, respectively). When a client certificate is sent outside of the TLS tunnel, it MUST include Identity-Type as an outer TLV in order to signal the type of identity which that client certificate is for.¶
2.3. EAP-FAST
For EAP-FAST, the session
The definitions of S-IMCK[n], MSK, and EMSK are the same as given
above for TEAP. We reiterate that the EAP-FAST Type must be used
when deriving the session
Unlike [RFC4851], Section 5.2, the definition of IMCK[j] places the reference to S-IMCK after the textual label and then concatenates the IMSK instead of the MSK.¶
EAP-FAST previously used a PAC that is functionally equivalent to session tickets provided by TLS 1.3, which contain a PSK along with other data. As such, the use of a PAC is deprecated for EAP-FAST in TLS 1.3. PAC provisioning [RFC5422] is also no longer part of EAP-FAST when TLS 1.3 is used.¶
The T-PRF given in [RFC4851], Section 5.5 is not used for TLS 1.3. Instead, it is replaced with the TLS 1.3 TLS-Exporter function.¶
2.3.1. Client Certificates
The use of client certificates is still permitted when using EAP-FAST with TLS 1.3. However, if the client certificate is accepted, then the EAP peer MUST proceed with additional authentication of Phase 2, as per [RFC4851], Section 7.4.1. If there is no Phase 2 data, then the EAP server MUST reject the session.¶
While [RFC4851] implicitly permits the use of client certificates without proceeding to Phase 2, this practice is forbidden when EAP-FAST is used with TLS 1.3. If there is a requirement to use client certificates with no inner tunnel methods, then EAP-TLS should be used instead of EAP-FAST.¶
2.4. EAP-TTLS
[RFC5281], Section 11.1 defines an implicit challenge when the inner methods of the Challenge Handshake Authentication Protocol (CHAP) [RFC1994], MS-CHAP [RFC2433], or MS-CHAPv2 [RFC2759] are used. The derivation for TLS 1.3 is instead given as:¶
There is no "context_value" ([RFC8446], Section 7.5) passed to the TLS-Exporter function. The value "n" given here is the length of the data required; [RFC5281] requires it to be 17 octets for CHAP ([RFC5281], Section 11.2.2) and MS-CHAPv2 ([RFC5281], Section 11.2.4), and 9 octets for MS-CHAP ([RFC5281], Section 11.2.3).¶
When the Password Authentication Protocol (PAP), CHAP, or MS-CHAPv1 are used as inner authentication methods, there is no opportunity for the EAP server to send a protected success indication, as is done in [RFC9190], Section 2.5. Instead, when TLS session tickets are disabled, the response from the EAP server MUST be either EAP-Success or EAP-Failure. These responses are unprotected and can be forged by a skilled attacker.¶
Where TLS session tickets are enabled, the response from the EAP
server may also continue TLS negotiation with a TLS New
Therefore, it is RECOMMENDED that EAP servers always send a TLS
New
When resumption is not used, the TLS New
EAP peers MUST continue running their EAP state machine until they
receive either an EAP-Success or an EAP-Failure. Receiving a TLS
New
2.4.1. Client Certificates
[RFC5281], Section 7.6 permits "authentication of the client via client certificate during phase 1, with no additional authentication or information exchange required." This practice is forbidden when EAP-TTLS is used with TLS 1.3. If there is a requirement to use client certificates with no inner tunnel methods, then EAP-TLS should be used instead of EAP-TTLS.¶
The use of client certificates is still permitted when using EAP-TTLS with TLS 1.3. However, if the client certificate is accepted, then the EAP peer MUST proceed with additional authentication of Phase 2, as per [RFC5281], Section 7.2. If there is no Phase 2 data, then the EAP server MUST reject the session.¶
2.5. PEAP
When PEAP uses crypto binding, it uses a different key calculation defined in [PEAP-MPPE] that consumes inner EAP method keying material. The PRF+ function used in [PEAP-MPPE] is not taken from the TLS exporter but is instead calculated via a different method that is given in [PEAP-PRF]. That derivation remains unchanged in this specification.¶
Note that the above derivation uses SHA-1, which may be formally deprecated in the near future.¶
However, the PRF+ calculation uses a PEAP Tunnel Key (TK), which is defined in [PEAP-TK] as:¶
... the TK is the first 60 octets of the Key_Material, as specified in [RFC5216]: TLS-PRF-128 (master secret, "client EAP encryption", client.random || server.random).¶
We note that the text in [PEAP-PRF] does not define Key_Material. Instead, it defines TK as the first octets of Key_Material and gives a definition of Key_Material that is appropriate for TLS versions before TLS 1.3.¶
For TLS 1.3, the TK should be derived from the Key_Material defined here in Section 2.1 instead of using the TLS-PRF-128 derivation given in [PEAP-PRF]. The method defined in [PEAP-TK] MUST NOT be used.¶
2.5.1. Client Certificates
As with EAP-TTLS, [PEAP] permits the use of client certificates in addition to inner tunnel methods. The practice of using client certificates with no "inner method" is forbidden when PEAP is used with TLS 1.3. If there is a requirement to use client certificates with no inner tunnel methods, then EAP-TLS should be used instead of PEAP.¶
The use of client certificates is still permitted when using PEAP with TLS 1.3. However, if the client certificate is accepted, then the EAP peer MUST proceed with additional authentication of the inner tunnel. If there is no inner tunnel authentication data, then the EAP server MUST reject the session.¶
3. Application Data
Unlike previous TLS versions, TLS 1.3 can continue negotiation after the initial TLS handshake has been completed; TLS 1.3 calls this the "CONNECTED" state. Some implementations use receipt of a Finished message as an indication that TLS negotiation has completed and that an "inner tunnel" session can now be negotiated. This assumption is not always correct with TLS 1.3.¶
Earlier TLS versions did not send application data along with the Finished message. It was then possible for implementations to assume that a receipt of a Finished message also meant that there was no application data available and that another round trip was required.¶
This assumption is not true with TLS 1.3, and applications relying on that behavior will not operate correctly with TLS 1.3.¶
As a result, implementations MUST check for application data once the TLS session has been established. This check MUST be performed before proceeding with another round trip of TLS negotiation. TLS- based EAP methods, such as EAP-TTLS, PEAP, and EAP-FAST, each have method-specific application data that MUST be processed according to the EAP Type.¶
TLS 1.3 in [RFC8446], Section 4.6.1 also permits New
In order to correct this failure, we require that implementations MUST NOT send or expect to receive application data in the TLS session if the underlying TLS connection is still performing negotiation. Implementations MUST delay processing of application data until such time as the TLS negotiation has finished. If the TLS negotiation is successful, then the application data can be examined. If the TLS negotiation is unsuccessful, then the application data is untrusted; therefore, it MUST be discarded without being examined.¶
The default for many TLS library implementations is to send a
New
Therefore, the EAP server MUST NOT permit any session ticket to successfully resume authentication unless the inner tunnel authentication has completed successfully. The alternative would allow an attacker to bypass authentication by obtaining a session ticket, immediately closing the current session, and "resuming" using the session ticket.¶
To protect against that attack, implementations SHOULD NOT send
New
The New
[RFC9190], Section 2.5 requires a protected result indication, which indicates that TLS negotiation has finished. Methods that use "inner tunnel" methods MUST instead begin their "inner tunnel" negotiation by sending Type-specific application data.¶
3.1. Identities
For EAP-TLS, Sections 2.1.3 and 2.1.7 of [RFC9190] recommend the use of
anonymous Network Access Identifiers (NAIs) [RFC7542] in the EAP
Response
Using an anonymous NAI for the outer identity as per [RFC7542], Section 2.4 has a few benefits. An NAI allows the EAP session to be routed in a AAA framework as described in [RFC7542], Section 3. Using an anonymous realm also ensures that user identifiers are kept private.¶
As for the inner identity, we define it generically as the
identification information carried inside of the TLS tunnel. For
PEAP, that identity may be an EAP Response
In other words, we can view the outer TLS layer of tunneled EAP methods as a secure transport layer that is responsible for getting the actual (inner) authentication credentials securely from the EAP peer to the EAP server. The EAP server then uses the inner identity and inner authentication data to identify and authenticate a particular user.¶
As the authentication data is routed to the correct destination, there is little reason for the inner identity to also contain a realm. Therefore, we have a few recommendations on the inner and outer identities, along with their relationship to each other.¶
The outer identity SHOULD use an anonymous NAI realm that allows for both user privacy and for the EAP session to be routed in a AAA framework as described in [RFC7542], Section 3. Where NAI realms are not used, packets will not be routable outside of the local organization.¶
The inner identity MUST NOT use an anonymous NAI realm. If anonymous network access is desired, EAP peers MUST use EAP-TLS without peer authentication, as per [RFC9190], Section 2.1.5. EAP servers MUST cause authentication to fail if an EAP peer uses an anonymous "inner" identity for any TLS-based EAP method.¶
Implementations SHOULD NOT use inner identities that contain an NAI realm. Many organizations typically use only one realm for all user accounts.¶
However, there are situations where it is useful for an inner
identity to contain a realm. For example, an organization may have
multiple independent sub
In that case, an organization can configure one public "routing"
realm and multiple separate "inner" realms. This separation of
realms also allows an organization to split users into logical groups
by realm, where the "user" portion of the NAI may otherwise conflict.
For example, "user
Using only one public realm both keeps internal information private and simplifies realm management for external entities by minimizing the number of realms that have to be tracked by them.¶
In most situations, routing identifiers should be associated with the
authentication data that they are routing. For example, if a user
has an inner identity of "user
When an EAP server receives an inner identity for a realm which it is not authoritative, it MUST reject the authentication. There is no reason for one organization to authenticate users from a different (and independent) organization.¶
In addition, associating inner/outer identities from different organizations in the same EAP authentication session means that otherwise unrelated realms are tied together, which can make networks more fragile.¶
For example, an organization that uses a "hosted" AAA provider may
choose to use the realm of the AAA provider as the outer identity for
user authentication. The inner identity can then be fully qualified:
username plus realm of the organization. This practice may result
in successful authentications
Additionally, an organization may host their own AAA servers but use a "cloud" identity provider to hold user accounts. In that situation, the organizations could try to use their own realm as the outer (routing) identity and then use an identity from the "cloud" provider as the inner identity.¶
This practice is NOT RECOMMENDED. User accounts for an organization should be qualified as belonging to that organization and not to an unrelated third party. There is no reason to tie the configuration of user systems to public realm routing; that configuration more properly belongs in the network.¶
Both of these practices mean that changing "cloud" providers is difficult. When such a change happens, each individual EAP peer must be updated with a different outer identity that points to the new "cloud" provider. This process can be expensive, and some EAP peers may not be online when this changeover happens. The result could be devices or users who are unable to obtain network access, even if all relevant network systems are online and functional.¶
Further, standards such as [RFC7585] allow for dynamic discovery of home servers for authentication. This specification has been widely deployed and means that there is minimal cost to routing authentication to a particular domain. The authentication can also be routed to a particular identity provider and changed at will with no loss of functionality. That specification is also scalable since it does not require changes to many systems when a domain updates its configuration. Instead, only one thing has to change: the configuration of that domain. Everything else is discovered dynamically.¶
That is, changing the configuration for one domain is significantly simpler and more scalable than changing the configuration for potentially millions of end-user devices.¶
We recognize that there may be existing use cases where the inner and outer identities use different realms. As such, we cannot forbid that practice. We hope that the discussion above shows not only why such practices are problematic, but how alternative methods are more flexible, more scalable, and are easier to manage.¶
4. Resumption
[RFC9190], Section 2.1.3 defines the process for resumption. This process is the same for all TLS-based EAP Types. The only practical difference is that the value of the Type field is different. The requirements on identities, use of TLS cipher suites, resumption, etc. remain unchanged from that document.¶
Note that if resumption is performed, then the EAP server MUST send the protected success result indication (one octet of 0x00) inside the TLS tunnel, as per [RFC9190]. The EAP peer MUST in turn check for the existence of the protected success result indication (one octet of 0x00) and cause authentication to fail if that octet is not received. If either the peer or the server initiates an inner tunnel method instead, then that method MUST be followed, and inner authentication MUST NOT be skipped.¶
All TLS-based EAP methods support resumption, as it is a property of the underlying TLS protocol. All EAP servers and peers MUST support resumption for all TLS-based EAP methods. We note that EAP servers and peers can still choose to not resume any particular session. For example, EAP servers may forbid resumption for administrative or other policy reasons.¶
It is RECOMMENDED that EAP servers and peers enable resumption and use it where possible. The use of resumption decreases the number of round trips used for authentication. This decrease leads to lower latency for authentications and less load on the EAP server. Resumption can also lower load on external systems, such as databases that contain user credentials.¶
As the packet flows for resumption are essentially identical across all TLS-based EAP Types, it is technically possible to authenticate using EAP-TLS (Type 13) and then perform resumption using another EAP Type, such as with EAP-TTLS (Type 21). However, there is no practical benefit to doing so. It is also not clear what this behavior would mean or what (if any) security issues there may be with it. As a result, this behavior is forbidden.¶
EAP servers therefore MUST NOT resume sessions across different EAP Types, and EAP servers MUST reject resumptions in which the EAP Type value is different from the original authentication.¶
5. Security Considerations
[RFC9190], Section 5 is included here by reference.¶
Updating the above EAP methods to use TLS 1.3 is of high importance for the Internet community. Using the most recent security protocols can significantly improve security and privacy of a network.¶
For PEAP, some derivations use HMAC-SHA1 [PEAP-MPPE]. In the
interests of interoperabilit
5.1. Handling of TLS NewSessionTicket Messages
In some cases, client certificates are not used for TLS-based EAP
methods. In those cases, the user is authenticated only after
successful completion of the inner tunnel authentication.
However, [RFC8446], Section 4.6.1 states that "at any time after the server has received the client Finished message, it MAY send a New
This separation of data allows for a "time of use, time of check"
security issue. Malicious clients can begin a session and receive a
New
As a result, EAP servers MUST NOT assume that a user has been authenticated simply because a TLS session is being resumed. Even if a session is being resumed, an EAP server MAY have policies that still force the inner authentication methods to be run. For example, the user's password may have expired in the time interval between first authentication and session resumption.¶
Therefore, the guidelines given here describe situations where an EAP server is permitted to allow session resumption rather than where an EAP server is required to allow session resumption. An EAP server could simply refuse to issue session tickets or could run the full inner authentication, even if a session was resumed.¶
Where session tickets are used, the EAP server SHOULD track the successful completion of an inner authentication and associate that status with any session tickets issued for that session. This requirement can be met in a number of different ways.¶
One way is for the EAP server to simply not send any TLS
New
Another way is for the EAP server to simply discard or invalidate any
session tickets until after the inner authentication has completed
successfully. When the user is authenticated, a new TLS
New
Another way is for the EAP server to associate the inner authentication status with each session ticket. When a session ticket is used, the authentication status is checked. When a session ticket shows that the inner authentication did not succeed, the EAP server MUST run the inner authentication method(s) in the resumed tunnel and only grant access based on the success or failure of those inner methods.¶
However, the interaction between EAP implementations and any underlying TLS library may be complex, and the EAP server may not be able to make the above guarantees. Where the EAP server is unable to determine the user's authentication status from the session ticket, it MUST assume that inner authentication has not completed, and it MUST run the inner authentication method(s) successfully in the resumed tunnel before granting access.¶
This issue is not relevant for EAP-TLS, which only uses client certificates for authentication in the TLS handshake. It is only relevant for TLS-based EAP methods that do not use the TLS layer to authenticate.¶
5.2. Protected Success and Failure Indications
[RFC9190] provides for protected success and failure indications as discussed in [RFC4137], Section 4.1.1. These result indications are provided for both full authentication and resumption.¶
Other TLS-based EAP methods provide these result indications only for resumption.¶
For full authentication, the other TLS-based EAP methods do not provide for protected success and failure indications as part of the outer TLS exchange. That is, the protected result indication is not used, and there is no TLS-layer alert sent when the inner authentication fails. Instead, there is simply either an EAP-Success or an EAP-Failure sent. This behavior is the same as for previous TLS versions; therefore, it introduces no new security issues.¶
We note that most TLS-based EAP methods provide for success and failure indications as part of the authentication exchange performed inside of the TLS tunnel. These result indications are therefore protected, as they cannot be modified or forged.¶
However, some inner methods do not provide for success or failure indications. For example, the use of EAP-TTLS with inner PAP, CHAP, or MS-CHAP. Those methods send authentication credentials to the EAP server via the inner tunnel with no method to signal success or failure inside of the tunnel.¶
There are functionally equivalent authentication methods that can be used to provide protected result indications. PAP can often be replaced with EAP-GTC, CHAP with EAP-MD5, and MS-CHAPv1 with MS-CHAPv2 or EAP-MSCHAPv2. All of the replacement methods provide for similar functionality and have protected success and failure indication. The main cost to this change is additional round trips.¶
It is RECOMMENDED that implementations deprecate inner tunnel methods that do not provide protected success and failure indications when TLS session tickets cannot be used. Implementations SHOULD use EAP- GTC instead of PAP and EAP-MD5 instead of CHAP. Implementations SHOULD use MS-CHAPv2 or EAP-MSCHAPv2 instead of MS-CHAPv1. New TLS- based EAP methods MUST provide protected success and failure indications inside of the TLS tunnel.¶
When the inner authentication protocol indicates that authentication has failed, then implementations MUST fail authentication for the entire session. There may be additional protocol exchanges in order to exchange more detailed failure indications, but the final result MUST be a failed authentication. As noted earlier, any session tickets for this failed authentication MUST be either invalidated or discarded.¶
Similarly, when the inner authentication protocol indicates that authentication has succeeded, implementations SHOULD cause authentication to succeed for the entire session. There MAY be additional protocol exchanges that could still cause failure, so we cannot mandate sending success on successful authentication.¶
In both of these cases, the EAP server MUST send an EAP-Failure or EAP-Success message, as indicated by Step 4 in Section 2 of [RFC3748]. Even though both parties have already determined the final authentication status, the full EAP state machine must still be followed.¶
6. IANA Considerations
This section provides guidance to the Internet Assigned Numbers Authority (IANA) regarding the registration of values related to the TLS-based EAP methods for the TLS 1.3 protocol in accordance with [RFC8126].¶
IANA has added the following labels to the "TLS Exporter Label" registry defined by [RFC5705]. These labels are used in the derivation of Key_Material and Method-Id as defined above in Section 2, and they are used only for TEAP.¶
7. References
7.1. Normative References
- [IANA]
-
IANA, "Method Types", <https://
www >..iana .org /assignments /eap -numbers / - [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC3748]
-
Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. Levkowetz, Ed., "Extensible Authentication Protocol (EAP)", RFC 3748, DOI 10
.17487 , , <https:///RFC3748 www >..rfc -editor .org /info /rfc3748 - [RFC5216]
-
Simon, D., Aboba, B., and R. Hurst, "The EAP-TLS Authentication Protocol", RFC 5216, DOI 10
.17487 , , <https:///RFC5216 www >..rfc -editor .org /info /rfc5216 - [RFC5705]
-
Rescorla, E., "Keying Material Exporters for Transport Layer Security (TLS)", RFC 5705, DOI 10
.17487 , , <https:///RFC5705 www >..rfc -editor .org /info /rfc5705 - [RFC7170]
-
Zhou, H., Cam-Winget, N., Salowey, J., and S. Hanna, "Tunnel Extensible Authentication Protocol (TEAP) Version 1", RFC 7170, DOI 10
.17487 , , <https:///RFC7170 www >..rfc -editor .org /info /rfc7170 - [RFC8126]
-
Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10
.17487 , , <https:///RFC8126 www >..rfc -editor .org /info /rfc8126 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8446]
-
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10
.17487 , , <https:///RFC8446 www >..rfc -editor .org /info /rfc8446 - [RFC9190]
-
Preuß Mattsson, J. and M. Sethi, "EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3", RFC 9190, DOI 10
.17487 , , <https:///RFC9190 www >..rfc -editor .org /info /rfc9190
7.2. Informative References
- [MSPEAP]
-
Microsoft Corporation, "[MS-PEAP]: Protected Extensible Authentication Protocol (PEAP)", Protocol Revision 31.0, , <https://
msdn >..microsoft .com /en -us /library /cc238354 .aspx - [PEAP]
-
Palekar, A., Josefsson, S., Simon, D., Zorn, G., Salowey, J., and H. Zhou, "Protected EAP Protocol (PEAP) Version 2", Work in Progress, Internet-Draft, draft
-josefsson , , <https://-pppext -eap -tls -eap -10 datatracker >..ietf .org /doc /html /draft -josefsson -pppext -eap -tls -eap -10 - [PEAP-MPPE]
-
Microsoft Corporation, "Key Management", Section 3.1.5.7, , <https://
learn >..microsoft .com /en -us /openspecs /windows _protocols /ms -peap /e75b0385 -915a -4fc3 -a549 -fd3d06b995b0 - [PEAP-PRF]
-
Microsoft Corporation, "Intermediate PEAP MAC Key (IPMK) and Compound MAC Key (CMK)", Section 3.1.5.5.2.2, , <https://
docs >..microsoft .com /en -us /openspecs /windows _protocols /MS -PEAP /0de54161 -0bd3 -424a -9b1a -854b4040a6df - [PEAP-TK]
-
Microsoft Corporation, "PEAP Tunnel Key (TK)", Section 3.1.5.5.2.1, , <https://
docs >..microsoft .com /en -us /openspecs /windows _protocols /MS -PEAP /41288c09 -3d7d -482f -a57f -e83691d4d246 - [RFC1994]
-
Simpson, W., "PPP Challenge Handshake Authentication Protocol (CHAP)", RFC 1994, DOI 10
.17487 , , <https:///RFC1994 www >..rfc -editor .org /info /rfc1994 - [RFC2433]
-
Zorn, G. and S. Cobb, "Microsoft PPP CHAP Extensions", RFC 2433, DOI 10
.17487 , , <https:///RFC2433 www >..rfc -editor .org /info /rfc2433 - [RFC2759]
-
Zorn, G., "Microsoft PPP CHAP Extensions, Version 2", RFC 2759, DOI 10
.17487 , , <https:///RFC2759 www >..rfc -editor .org /info /rfc2759 - [RFC4137]
-
Vollbrecht, J., Eronen, P., Petroni, N., and Y. Ohba, "State Machines for Extensible Authentication Protocol (EAP) Peer and Authenticator", RFC 4137, DOI 10
.17487 , , <https:///RFC4137 www >..rfc -editor .org /info /rfc4137 - [RFC4851]
-
Cam-Winget, N., McGrew, D., Salowey, J., and H. Zhou, "The Flexible Authentication via Secure Tunneling Extensible Authentication Protocol Method (EAP-FAST)", RFC 4851, DOI 10
.17487 , , <https:///RFC4851 www >..rfc -editor .org /info /rfc4851 - [RFC5281]
-
Funk, P. and S. Blake-Wilson, "Extensible Authentication Protocol Tunneled Transport Layer Security Authenticated Protocol Version 0 (EAP-TTLSv0)", RFC 5281, DOI 10
.17487 , , <https:///RFC5281 www >..rfc -editor .org /info /rfc5281 - [RFC5422]
-
Cam-Winget, N., McGrew, D., Salowey, J., and H. Zhou, "Dynamic Provisioning Using Flexible Authentication via Secure Tunneling Extensible Authentication Protocol (EAP-FAST)", RFC 5422, DOI 10
.17487 , , <https:///RFC5422 www >..rfc -editor .org /info /rfc5422 - [RFC7542]
-
DeKok, A., "The Network Access Identifier", RFC 7542, DOI 10
.17487 , , <https:///RFC7542 www >..rfc -editor .org /info /rfc7542 - [RFC7585]
-
Winter, S. and M. McCauley, "Dynamic Peer Discovery for RADIUS/TLS and RADIUS/DTLS Based on the Network Access Identifier (NAI)", RFC 7585, DOI 10
.17487 , , <https:///RFC7585 www >..rfc -editor .org /info /rfc7585
Acknowledgments
Thanks to Jorge Vergara for a detailed review of the requirements for various EAP Types.¶
Thanks to Jorge Vergara, Bruno Periera Vidal, Alexander Clouter,
Karri Huhtanen, and Heikki Vatiainen for reviews of this document
and for assistance with interoperabilit