rfc9190.original | rfc9190.txt | |||
---|---|---|---|---|
Network Working Group J. Preuß Mattsson | Internet Engineering Task Force (IETF) J. Preuß Mattsson | |||
Internet-Draft M. Sethi | Request for Comments: 9190 M. Sethi | |||
Updates: 5216 (if approved) Ericsson | Updates: 5216 Ericsson | |||
Intended status: Standards Track 20 October 2021 | Category: Standards Track February 2022 | |||
Expires: 23 April 2022 | ISSN: 2070-1721 | |||
Using EAP-TLS with TLS 1.3 (EAP-TLS 1.3) | EAP-TLS 1.3: Using the Extensible Authentication Protocol with TLS 1.3 | |||
draft-ietf-emu-eap-tls13-21 | ||||
Abstract | Abstract | |||
The Extensible Authentication Protocol (EAP), defined in RFC 3748, | The Extensible Authentication Protocol (EAP), defined in RFC 3748, | |||
provides a standard mechanism for support of multiple authentication | provides a standard mechanism for support of multiple authentication | |||
methods. This document specifies the use of EAP-Transport Layer | methods. This document specifies the use of EAP-TLS with TLS 1.3 | |||
Security (EAP-TLS) with TLS 1.3 while remaining backwards compatible | while remaining backwards compatible with existing implementations of | |||
with existing implementations of EAP-TLS. TLS 1.3 provides | EAP-TLS. TLS 1.3 provides significantly improved security and | |||
significantly improved security and privacy, and reduced latency when | privacy, and reduced latency when compared to earlier versions of | |||
compared to earlier versions of TLS. EAP-TLS with TLS 1.3 (EAP-TLS | TLS. EAP-TLS with TLS 1.3 (EAP-TLS 1.3) further improves security | |||
1.3) further improves security and privacy by always providing | and privacy by always providing forward secrecy, never disclosing the | |||
forward secrecy, never disclosing the peer identity, and by mandating | peer identity, and by mandating use of revocation checking when | |||
use of revocation checking, when compared to EAP-TLS with earlier | compared to EAP-TLS with earlier versions of TLS. This document also | |||
versions of TLS. This document also provides guidance on | provides guidance on authentication, authorization, and resumption | |||
authentication, authorization, and resumption for EAP-TLS in general | for EAP-TLS in general (regardless of the underlying TLS version | |||
(regardless of the underlying TLS version used). This document | used). This document updates RFC 5216. | |||
updates RFC 5216. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 23 April 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9190. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Simplified BSD License text | to this document. Code Components extracted from this document must | |||
as described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Simplified BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Requirements and Terminology . . . . . . . . . . . . . . 4 | 1.1. Requirements and Terminology | |||
2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Protocol Overview | |||
2.1. Overview of the EAP-TLS Conversation . . . . . . . . . . 5 | 2.1. Overview of the EAP-TLS Conversation | |||
2.1.1. Authentication . . . . . . . . . . . . . . . . . . . 6 | 2.1.1. Authentication | |||
2.1.2. Ticket Establishment . . . . . . . . . . . . . . . . 7 | 2.1.2. Ticket Establishment | |||
2.1.3. Resumption . . . . . . . . . . . . . . . . . . . . . 9 | 2.1.3. Resumption | |||
2.1.4. Termination . . . . . . . . . . . . . . . . . . . . . 11 | 2.1.4. Termination | |||
2.1.5. No Peer Authentication . . . . . . . . . . . . . . . 14 | 2.1.5. No Peer Authentication | |||
2.1.6. Hello Retry Request . . . . . . . . . . . . . . . . . 15 | 2.1.6. Hello Retry Request | |||
2.1.7. Identity . . . . . . . . . . . . . . . . . . . . . . 16 | 2.1.7. Identity | |||
2.1.8. Privacy . . . . . . . . . . . . . . . . . . . . . . . 17 | 2.1.8. Privacy | |||
2.1.9. Fragmentation . . . . . . . . . . . . . . . . . . . . 18 | 2.1.9. Fragmentation | |||
2.2. Identity Verification . . . . . . . . . . . . . . . . . . 18 | 2.2. Identity Verification | |||
2.3. Key Hierarchy . . . . . . . . . . . . . . . . . . . . . . 19 | 2.3. Key Hierarchy | |||
2.4. Parameter Negotiation and Compliance Requirements . . . . 20 | 2.4. Parameter Negotiation and Compliance Requirements | |||
2.5. EAP State Machines . . . . . . . . . . . . . . . . . . . 21 | 2.5. EAP State Machines | |||
3. Detailed Description of the EAP-TLS Protocol . . . . . . . . 22 | 3. Detailed Description of the EAP-TLS Protocol | |||
4. IANA considerations . . . . . . . . . . . . . . . . . . . . . 22 | 4. IANA Considerations | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | 5. Security Considerations | |||
5.1. Security Claims . . . . . . . . . . . . . . . . . . . . . 22 | 5.1. Security Claims | |||
5.2. Peer and Server Identities . . . . . . . . . . . . . . . 23 | 5.2. Peer and Server Identities | |||
5.3. Certificate Validation . . . . . . . . . . . . . . . . . 23 | 5.3. Certificate Validation | |||
5.4. Certificate Revocation . . . . . . . . . . . . . . . . . 23 | 5.4. Certificate Revocation | |||
5.5. Packet Modification Attacks . . . . . . . . . . . . . . . 24 | 5.5. Packet Modification Attacks | |||
5.6. Authorization . . . . . . . . . . . . . . . . . . . . . . 25 | 5.6. Authorization | |||
5.7. Resumption . . . . . . . . . . . . . . . . . . . . . . . 26 | 5.7. Resumption | |||
5.8. Privacy Considerations . . . . . . . . . . . . . . . . . 28 | 5.8. Privacy Considerations | |||
5.9. Pervasive Monitoring . . . . . . . . . . . . . . . . . . 29 | 5.9. Pervasive Monitoring | |||
5.10. Discovered Vulnerabilities . . . . . . . . . . . . . . . 29 | 5.10. Discovered Vulnerabilities | |||
5.11. Cross-Protocol Attacks . . . . . . . . . . . . . . . . . 30 | 5.11. Cross-Protocol Attacks | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 30 | 6. References | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 30 | 6.1. Normative References | |||
6.2. Informative references . . . . . . . . . . . . . . . . . 31 | 6.2. Informative references | |||
Appendix A. Updated References . . . . . . . . . . . . . . . . . 36 | Appendix A. Updated References | |||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 36 | Acknowledgments | |||
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | Contributors | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The Extensible Authentication Protocol (EAP), defined in [RFC3748], | The Extensible Authentication Protocol (EAP), defined in [RFC3748], | |||
provides a standard mechanism for support of multiple authentication | provides a standard mechanism for support of multiple authentication | |||
methods. EAP-Transport Layer Security (EAP-TLS) [RFC5216] specifies | methods. EAP-TLS [RFC5216] specifies an EAP authentication method | |||
an EAP authentication method with certificate-based mutual | with certificate-based mutual authentication utilizing the TLS | |||
authentication utilizing the TLS handshake protocol for cryptographic | handshake protocol for cryptographic algorithms and protocol version | |||
algorithms and protocol version negotiation and establishment of | negotiation and establishment of shared secret keying material. EAP- | |||
shared secret keying material. EAP-TLS is widely supported for | TLS is widely supported for authentication and key establishment in | |||
authentication and key establishment in IEEE 802.11 [IEEE-802.11] | IEEE 802.11 [IEEE-802.11] (Wi-Fi) and IEEE 802.1AE [IEEE-802.1AE] | |||
(Wi-Fi) and IEEE 802.1AE [IEEE-802.1AE] (MACsec) networks using IEEE | (MACsec) networks using IEEE 802.1X [IEEE-802.1X] and it's the | |||
802.1X [IEEE-802.1X] and it's the default mechanism for certificate | default mechanism for certificate-based authentication in 3GPP 5G | |||
based authentication in 3GPP 5G [TS.33.501] and MulteFire [MulteFire] | [TS.33.501] and MulteFire [MulteFire] networks. Many other EAP | |||
networks. Many other EAP methods such as EAP-FAST [RFC4851], EAP- | methods such as Flexible Authentication via Secure Tunneling (EAP- | |||
TTLS [RFC5281], TEAP [RFC7170], and PEAP [PEAP] depend on TLS and | FAST) [RFC4851], Tunneled Transport Layer Security (EAP-TTLS) | |||
EAP-TLS. | [RFC5281], the Tunnel Extensible Authentication Protocol (TEAP) | |||
[RFC7170], as well as vendor-specific EAP methods such as the | ||||
Protected Extensible Authentication Protocol (PEAP) [PEAP], depend on | ||||
TLS and EAP-TLS. | ||||
EAP-TLS [RFC5216] references TLS 1.0 [RFC2246] and TLS 1.1 [RFC4346], | EAP-TLS [RFC5216] references TLS 1.0 [RFC2246] and TLS 1.1 [RFC4346] | |||
but can also work with TLS 1.2 [RFC5246]. TLS 1.0 and 1.1 are | but can also work with TLS 1.2 [RFC5246]. TLS 1.0 and 1.1 are | |||
formally deprecated and prohibited to negotiate and use [RFC8996]. | formally deprecated and prohibited from being negotiated or used | |||
Weaknesses found in TLS 1.2, as well as new requirements for | [RFC8996]. Weaknesses found in TLS 1.2 as well as new requirements | |||
security, privacy, and reduced latency have led to the specification | for security, privacy, and reduced latency have led to the | |||
of TLS 1.3 [RFC8446], which obsoletes TLS 1.2 [RFC5246]. TLS 1.3 is | specification of TLS 1.3 [RFC8446], which obsoletes TLS 1.2 | |||
in large parts a complete remodeling of the TLS handshake protocol | [RFC5246]. TLS 1.3 is in large part a complete remodeling of the TLS | |||
including a different message flow, different handshake messages, | handshake protocol including a different message flow, different | |||
different key schedule, different cipher suites, different resumption | handshake messages, different key schedule, different cipher suites, | |||
mechanism, different privacy protection, and different record | different resumption mechanism, different privacy protection, and | |||
padding. This means that significant parts of the normative text in | different record padding. This means that significant parts of the | |||
the previous EAP-TLS specification [RFC5216] are not applicable to | normative text in the previous EAP-TLS specification [RFC5216] are | |||
EAP-TLS with TLS 1.3. Therefore, aspects such as resumption, privacy | not applicable to EAP-TLS with TLS 1.3. Therefore, aspects such as | |||
handling, and key derivation need to be appropriately addressed for | resumption, privacy handling, and key derivation need to be | |||
EAP-TLS with TLS 1.3. | appropriately addressed for EAP-TLS with TLS 1.3. | |||
This document updates [RFC5216] to define how to use EAP-TLS with TLS | This document updates [RFC5216] to define how to use EAP-TLS with TLS | |||
1.3. When older TLS versions are negotiated, RFC 5216 applies to | 1.3. When older TLS versions are negotiated, RFC 5216 applies to | |||
maintain backwards compatibility. However, this document does | maintain backwards compatibility. However, this document does | |||
provide additional guidance on authentication, authorization, and | provide additional guidance on authentication, authorization, and | |||
resumption for EAP-TLS regardless of the underlying TLS version used. | resumption for EAP-TLS regardless of the underlying TLS version used. | |||
This document only describes differences compared to [RFC5216]. When | This document only describes differences compared to [RFC5216]. When | |||
EAP-TLS is used with TLS 1.3, some references are updated as | EAP-TLS is used with TLS 1.3, some references are updated as | |||
specified in Appendix A. All message flow are example message flows | specified in Appendix A. All message flows are example message flows | |||
specific to TLS 1.3 and do not apply to TLS 1.2. Since EAP-TLS | specific to TLS 1.3 and do not apply to TLS 1.2. Since EAP-TLS | |||
couples the TLS handshake state machine with the EAP state machine it | couples the TLS handshake state machine with the EAP state machine, | |||
is possible that new versions of TLS will cause incompatibilities | it is possible that new versions of TLS will cause incompatibilities | |||
that introduce failures or security issues if they are not carefully | that introduce failures or security issues if they are not carefully | |||
integrated into the EAP-TLS protocol. Therefore, implementations | integrated into the EAP-TLS protocol. Therefore, implementations | |||
MUST limit the maximum TLS version they use to 1.3, unless later | MUST limit the maximum TLS version they use to 1.3, unless later | |||
versions are explicitly enabled by the administrator. | versions are explicitly enabled by the administrator. | |||
This document specifies EAP-TLS 1.3 and does not specify how other | This document specifies EAP-TLS 1.3 and does not specify how other | |||
TLS-based EAP methods use TLS 1.3. The specification for how other | TLS-based EAP methods use TLS 1.3. The specification for how other | |||
TLS-based EAP methods use TLS 1.3 is left to other documents such as | TLS-based EAP methods use TLS 1.3 is left to other documents such as | |||
[I-D.ietf-emu-tls-eap-types]. | [TLS-EAP-TYPES]. | |||
In addition to the improved security and privacy offered by TLS 1.3, | In addition to the improved security and privacy offered by TLS 1.3, | |||
there are other significant benefits of using EAP-TLS with TLS 1.3. | there are other significant benefits of using EAP-TLS with TLS 1.3. | |||
Privacy, which in EAP-TLS means that no information about the | Privacy, which in EAP-TLS means that no information about the | |||
underlying peer identity is disclosed, is mandatory and achieved | underlying peer identity is disclosed, is mandatory and achieved | |||
without any additional round-trips. Revocation checking is mandatory | without any additional round trips. Revocation checking is mandatory | |||
and simplified with OCSP stapling, and TLS 1.3 introduces more | and simplified with Online Certificate Status Protocol (OCSP) | |||
possibilities to reduce fragmentation when compared to earlier | stapling, and TLS 1.3 introduces more possibilities to reduce | |||
versions of TLS. | fragmentation when compared to earlier versions of TLS. | |||
1.1. Requirements and Terminology | 1.1. Requirements and Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
Readers are expected to be familiar with the terms and concepts used | Readers are expected to be familiar with the terms and concepts used | |||
in EAP-TLS [RFC5216] and TLS [RFC8446]. The term EAP-TLS peer is | in EAP-TLS [RFC5216] and TLS [RFC8446]. The term EAP-TLS peer is | |||
used for the entity acting as EAP peer and TLS client. The term EAP- | used for the entity acting as EAP peer and TLS client. The term EAP- | |||
TLS server is used for the entity acting as EAP server and TLS | TLS server is used for the entity acting as EAP server and TLS | |||
server. | server. | |||
This document follows the terminology from [I-D.ietf-tls-rfc8446bis] | This document follows the terminology from [TLS-bis] where the master | |||
where the master secret is renamed to the main secret and the | secret is renamed to the main secret and the exporter_master_secret | |||
exporter_master_secret is renamed to the exporter_secret. | is renamed to the exporter_secret. | |||
2. Protocol Overview | 2. Protocol Overview | |||
2.1. Overview of the EAP-TLS Conversation | 2.1. Overview of the EAP-TLS Conversation | |||
This section updates Section 2.1 of [RFC5216] by amending it in | This section updates Section 2.1 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
If the TLS implementation correctly implements TLS version | If the TLS implementation correctly implements TLS version | |||
negotiation, EAP-TLS will automatically leverage that capability. | negotiation, EAP-TLS will automatically leverage that capability. | |||
skipping to change at page 5, line 27 ¶ | skipping to change at line 202 ¶ | |||
TLS 1.3 changes both the message flow and the handshake messages | TLS 1.3 changes both the message flow and the handshake messages | |||
compared to earlier versions of TLS. Therefore, much of Section 2.1 | compared to earlier versions of TLS. Therefore, much of Section 2.1 | |||
of [RFC5216] does not apply for TLS 1.3. Except for Sections 2.2 and | of [RFC5216] does not apply for TLS 1.3. Except for Sections 2.2 and | |||
5.7, this update applies only when TLS 1.3 is negotiated. When TLS | 5.7, this update applies only when TLS 1.3 is negotiated. When TLS | |||
1.2 is negotiated, then [RFC5216] applies. | 1.2 is negotiated, then [RFC5216] applies. | |||
TLS 1.3 introduces several new handshake messages including | TLS 1.3 introduces several new handshake messages including | |||
HelloRetryRequest, NewSessionTicket, and KeyUpdate. In general, | HelloRetryRequest, NewSessionTicket, and KeyUpdate. In general, | |||
these messages will be handled by the underlying TLS libraries and | these messages will be handled by the underlying TLS libraries and | |||
are not visible to EAP-TLS, however, there are a few things to note: | are not visible to EAP-TLS; however, there are a few things to note: | |||
* The HelloRetryRequest is used by the server to reject the | * The HelloRetryRequest is used by the server to reject the | |||
parameters offered in the ClientHello and suggest new parameters. | parameters offered in the ClientHello and suggest new parameters. | |||
When this message is encountered it will increase the number of | When this message is encountered, it will increase the number of | |||
round trips used by the protocol. | round trips used by the protocol. | |||
* The NewSessionTicket message is used to convey resumption | * The NewSessionTicket message is used to convey resumption | |||
information and is covered in Sections 2.1.2 and 2.1.3. | information and is covered in Sections 2.1.2 and 2.1.3. | |||
* The KeyUpdate message is used to update the traffic keys used on a | * The KeyUpdate message is used to update the traffic keys used on a | |||
TLS connection. EAP-TLS does not encrypt significant amounts of | TLS connection. EAP-TLS does not encrypt significant amounts of | |||
data so this functionality is not needed. Implementations SHOULD | data so this functionality is not needed. Implementations SHOULD | |||
NOT send this message, however some TLS libraries may | NOT send this message; however, some TLS libraries may | |||
automatically generate and process this message. | automatically generate and process this message. | |||
* Early Data MUST NOT be used in EAP-TLS. EAP-TLS servers MUST NOT | * Early Data MUST NOT be used in EAP-TLS. EAP-TLS servers MUST NOT | |||
send an early_data extension and clients MUST NOT send an | send an early_data extension and clients MUST NOT send an | |||
EndOfEarlyData message. | EndOfEarlyData message. | |||
* Post-handshake authentication MUST NOT be used in EAP-TLS. | * Post-handshake authentication MUST NOT be used in EAP-TLS. | |||
Clients MUST NOT send a "post_handshake_auth" extension and | Clients MUST NOT send a "post_handshake_auth" extension and | |||
Servers MUST NOT request post-handshake client authentication. | Servers MUST NOT request post-handshake client authentication. | |||
After receiving an EAP-Request packet with EAP-Type=EAP-TLS as | After receiving an EAP-Request packet with EAP-Type=EAP-TLS as | |||
described in [RFC5216] the conversation will continue with the TLS | described in [RFC5216], the conversation will continue with the TLS | |||
handshake protocol encapsulated in the data fields of EAP-Response | handshake protocol encapsulated in the data fields of EAP-Response | |||
and EAP-Request packets. When EAP-TLS is used with TLS version 1.3, | and EAP-Request packets. When EAP-TLS is used with TLS version 1.3, | |||
the formatting and processing of the TLS handshake SHALL be done as | the formatting and processing of the TLS handshake SHALL be done as | |||
specified in version 1.3 of TLS. This update only lists additional | specified in version 1.3 of TLS. This update only lists additional | |||
and different requirements, restrictions, and processing compared to | and different requirements, restrictions, and processing compared to | |||
[RFC8446] and [RFC5216]. | [RFC8446] and [RFC5216]. | |||
2.1.1. Authentication | 2.1.1. Authentication | |||
This section updates Section 2.1.1 of [RFC5216] by amending it in | This section updates Section 2.1.1 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
The EAP-TLS server MUST authenticate with a certificate and SHOULD | The EAP-TLS server MUST authenticate with a certificate and SHOULD | |||
require the EAP-TLS peer to authenticate with a certificate. | require the EAP-TLS peer to authenticate with a certificate. | |||
Certificates can be of any type supported by TLS including raw public | Certificates can be of any type supported by TLS including raw public | |||
keys. Pre-Shared Key (PSK) authentication SHALL NOT be used except | keys. Pre-Shared Key (PSK) authentication SHALL NOT be used except | |||
for resumption. The full handshake in EAP-TLS with TLS 1.3 always | for resumption. The full handshake in EAP-TLS with TLS 1.3 always | |||
provides forward secrecy by exchange of ephemeral "key_share" | provides forward secrecy by exchange of ephemeral "key_share" | |||
extensions in the ClientHello and ServerHello (e.g., containing | extensions in the ClientHello and ServerHello (e.g., containing | |||
ephemeral ECDHE public keys). SessionID is deprecated in TLS 1.3, | Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) public keys). | |||
see Sections 4.1.2 and 4.1.3 of [RFC8446]. TLS 1.3 introduced early | SessionID is deprecated in TLS 1.3; see Sections 4.1.2 and 4.1.3 of | |||
application data which like all application data (other than the | [RFC8446]. TLS 1.3 introduced early application data that like all | |||
protected success indication described below) is not used in EAP-TLS; | application data (other than the protected success indication | |||
see Section 4.2.10 of [RFC8446] for additional information on the | described below) is not used in EAP-TLS; see Section 4.2.10 of | |||
"early_data" extension. Resumption is handled as described in | [RFC8446] for additional information on the "early_data" extension. | |||
Section 2.1.3. As a protected success indication [RFC3748] the EAP- | Resumption is handled as described in Section 2.1.3. As a protected | |||
TLS server always sends TLS application data 0x00, see Section 2.5. | success indication [RFC3748], the EAP-TLS server always sends TLS | |||
Note that a TLS implementation MAY not allow the EAP-TLS layer to | application data 0x00; see Section 2.5. Note that a TLS | |||
control in which order things are sent and the application data MAY | implementation MAY not allow the EAP-TLS layer to control in which | |||
therefore be sent before a NewSessionTicket. TLS application data | order things are sent and the application data MAY therefore be sent | |||
0x00 is therefore to be interpreted as success after the EAP-Request | before a NewSessionTicket. TLS application data 0x00 is therefore to | |||
that contains TLS application data 0x00. After the EAP-TLS server | be interpreted as success after the EAP-Request that contains TLS | |||
has sent an EAP-Request containing the TLS application data 0x00 and | application data 0x00. After the EAP-TLS server has sent an EAP- | |||
received an EAP-Response packet of EAP-Type=EAP-TLS and no data, the | Request containing the TLS application data 0x00 and received an EAP- | |||
EAP-TLS server sends EAP-Success. | Response packet of EAP-Type=EAP-TLS and no data, the EAP-TLS server | |||
sends EAP-Success. | ||||
Figure 1 shows an example message flow for a successful EAP-TLS full | Figure 1 shows an example message flow for a successful EAP-TLS full | |||
handshake with mutual authentication (and neither HelloRetryRequest | handshake with mutual authentication (and neither HelloRetryRequest | |||
nor post-handshake messages are sent). | nor post-handshake messages are sent). | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
<-------- Identity | <-------- Identity | |||
EAP-Response/ | EAP-Response/ | |||
skipping to change at page 7, line 37 ¶ | skipping to change at line 301 ¶ | |||
(TLS Certificate, | (TLS Certificate, | |||
TLS CertificateVerify, | TLS CertificateVerify, | |||
TLS Finished) --------> | TLS Finished) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
<-------- (TLS Application Data 0x00) | <-------- (TLS Application Data 0x00) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS --------> | EAP-Type=EAP-TLS --------> | |||
<-------- EAP-Success | <-------- EAP-Success | |||
Figure 1: EAP-TLS mutual authentication | Figure 1: EAP-TLS Mutual Authentication | |||
2.1.2. Ticket Establishment | 2.1.2. Ticket Establishment | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
To enable resumption when using EAP-TLS with TLS 1.3, the EAP-TLS | To enable resumption when using EAP-TLS with TLS 1.3, the EAP-TLS | |||
server MUST send one or more post-handshake NewSessionTicket messages | server MUST send one or more post-handshake NewSessionTicket messages | |||
(each associated with a PSK, a PSK identity, a ticket lifetime, and | (each associated with a PSK, a PSK identity, a ticket lifetime, and | |||
other parameters) in the initial authentication. Note that TLS 1.3 | other parameters) in the initial authentication. Note that TLS 1.3 | |||
[RFC8446] limits the ticket lifetime to a maximum of 604800 seconds | [RFC8446] limits the ticket lifetime to a maximum of 604800 seconds | |||
(7 days) and EAP-TLS servers MUST respect this upper limit when | (7 days) and EAP-TLS servers MUST respect this upper limit when | |||
issuing tickets. The NewSessionTicket is sent after the EAP-TLS | issuing tickets. The NewSessionTicket is sent after the EAP-TLS | |||
server has received the client Finished message in the initial | server has received the client Finished message in the initial | |||
authentication. The NewSessionTicket can be sent in the same flight | authentication. The NewSessionTicket can be sent in the same flight | |||
as the TLS server Finished or later. The PSK associated with the | as the TLS server Finished or later. The PSK associated with the | |||
ticket depends on the client Finished and cannot be pre-computed (so | ticket depends on the client Finished and cannot be pre-computed (so | |||
as to be sent in the same flight as the TLS server Finished) in | as to be sent in the same flight as the TLS server Finished) in | |||
handshakes with client authentication. The NewSessionTicket message | handshakes with client authentication. The NewSessionTicket message | |||
MUST NOT include an "early_data" extension. If the "early_data" | MUST NOT include an "early_data" extension. If the "early_data" | |||
extension is received then it MUST be ignored. Servers should take | extension is received, then it MUST be ignored. Servers should take | |||
into account that fewer NewSessionTickets will likely be needed in | into account that fewer NewSessionTickets will likely be needed in | |||
EAP-TLS than in the usual HTTPS connection scenario. In most cases a | EAP-TLS than in the usual HTTPS connection scenario. In most cases, | |||
single NewSessionTicket will be sufficient. A mechanism by which | a single NewSessionTicket will be sufficient. A mechanism by which | |||
clients can specify the desired number of tickets needed for future | clients can specify the desired number of tickets needed for future | |||
connections is defined in [I-D.ietf-tls-ticketrequests]. | connections is defined in [TICKET-REQUESTS]. | |||
Figure 2 shows an example message flow for a successful EAP-TLS full | Figure 2 shows an example message flow for a successful EAP-TLS full | |||
handshake with mutual authentication and ticket establishment of a | handshake with mutual authentication and ticket establishment of a | |||
single ticket. | single ticket. | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
<-------- Identity | <-------- Identity | |||
EAP-Response/ | EAP-Response/ | |||
skipping to change at page 9, line 5 ¶ | skipping to change at line 365 ¶ | |||
TLS CertificateVerify, | TLS CertificateVerify, | |||
TLS Finished) --------> | TLS Finished) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
(TLS NewSessionTicket, | (TLS NewSessionTicket, | |||
<-------- (TLS Application Data 0x00) | <-------- (TLS Application Data 0x00) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS --------> | EAP-Type=EAP-TLS --------> | |||
<-------- EAP-Success | <-------- EAP-Success | |||
Figure 2: EAP-TLS ticket establishment | Figure 2: EAP-TLS Ticket Establishment | |||
2.1.3. Resumption | 2.1.3. Resumption | |||
This section updates Section 2.1.2 of [RFC5216] by amending it in | This section updates Section 2.1.2 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
EAP-TLS is typically used with client authentication and typically | EAP-TLS is typically used with client authentication and typically | |||
fragments the TLS flights into a large number of EAP requests and EAP | fragments the TLS flights into a large number of EAP-requests and | |||
responses. Resumption significantly reduces the number of round- | EAP-responses. Resumption significantly reduces the number of round | |||
trips and enables the EAP-TLS server to omit database lookups needed | trips and enables the EAP-TLS server to omit database lookups needed | |||
during a full handshake with client authentication. TLS 1.3 replaces | during a full handshake with client authentication. TLS 1.3 replaces | |||
the session resumption mechanisms in earlier versions of TLS with a | the session resumption mechanisms in earlier versions of TLS with a | |||
new PSK exchange. When EAP-TLS is used with TLS version 1.3, EAP-TLS | new PSK exchange. When EAP-TLS is used with TLS version 1.3, EAP-TLS | |||
SHALL use a resumption mechanism compatible with version 1.3 of TLS. | SHALL use a resumption mechanism compatible with version 1.3 of TLS. | |||
For TLS 1.3, resumption is described in Section 2.2 of [RFC8446]. If | For TLS 1.3, resumption is described in Section 2.2 of [RFC8446]. If | |||
the client has received a NewSessionTicket message from the EAP-TLS | the client has received a NewSessionTicket message from the EAP-TLS | |||
server, the client can use the PSK identity associated with the | server, the client can use the PSK identity associated with the | |||
ticket to negotiate the use of the associated PSK. If the EAP-TLS | ticket to negotiate the use of the associated PSK. If the EAP-TLS | |||
server accepts it, then the resumed session has been deemed to be | server accepts it, then the resumed session has been deemed to be | |||
authenticated, and securely associated with the prior authentication | authenticated and securely associated with the prior authentication | |||
or resumption. It is up to the EAP-TLS peer to use resumption, but | or resumption. It is up to the EAP-TLS peer to use resumption, but | |||
it is RECOMMENDED that the EAP-TLS peer use resumption if it has a | it is RECOMMENDED that the EAP-TLS peer use resumption if it has a | |||
valid ticket that has not been used before. It is left to the EAP- | valid ticket that has not been used before. It is left to the EAP- | |||
TLS server whether to accept resumption, but it is RECOMMENDED that | TLS server whether to accept resumption, but it is RECOMMENDED that | |||
the EAP-TLS server accept resumption if the ticket which was issued | the EAP-TLS server accept resumption if the ticket that was issued is | |||
is still valid. However, the EAP-TLS server MAY choose to require a | still valid. However, the EAP-TLS server MAY choose to require a | |||
full handshake. In the case a full handshake is required, the | full handshake. In the case a full handshake is required, the | |||
negotiation proceeds as if the session was a new authentication, and | negotiation proceeds as if the session was a new authentication, and | |||
the resumption attempt is ignored. The requirements of Sections | the resumption attempt is ignored. The requirements of Sections | |||
2.1.1 and 2.1.2 then apply in their entirety. As described in | 2.1.1 and 2.1.2 then apply in their entirety. As described in | |||
Appendix C.4 of [RFC8446], reuse of a ticket allows passive observers | Appendix C.4 of [RFC8446], reuse of a ticket allows passive observers | |||
to correlate different connections. EAP-TLS peers and EAP-TLS | to correlate different connections. EAP-TLS peers and EAP-TLS | |||
servers SHOULD follow the client tracking preventions in Appendix C.4 | servers SHOULD follow the client tracking preventions in Appendix C.4 | |||
of [RFC8446]. | of [RFC8446]. | |||
It is RECOMMENDED to use a Network Access Identifiers (NAIs) with the | It is RECOMMENDED to use Network Access Identifiers (NAIs) with the | |||
same realm during resumption and the original full handshake. This | same realm during resumption and the original full handshake. This | |||
requirement allows EAP packets to be routed to the same destination | requirement allows EAP packets to be routed to the same destination | |||
as the original full handshake. If this recommendation is not | as the original full handshake. If this recommendation is not | |||
followed, resumption is likely impossible. When NAI reuse can be | followed, resumption is likely impossible. When NAI reuse can be | |||
done without privacy implications, it is RECOMMENDED to use the same | done without privacy implications, it is RECOMMENDED to use the same | |||
NAI in the resumption, as was used in the original full handshake | NAI in the resumption as was used in the original full handshake | |||
[RFC7542]. For example, the NAI @realm can safely be reused since it | [RFC7542]. For example, the NAI @realm can safely be reused since it | |||
does not provide any specific information to associate a user's | does not provide any specific information to associate a user's | |||
resumption attempt with the original full handshake. However, | resumption attempt with the original full handshake. However, | |||
reusing the NAI P2ZIM2F+OEVAO21nNWg2bVpgNnU=@realm enables an on-path | reusing the NAI P2ZIM2F+OEVAO21nNWg2bVpgNnU=@realm enables an on-path | |||
attacker to associate a resumption attempt with the original full | attacker to associate a resumption attempt with the original full | |||
handshake. The TLS PSK identity is typically derived by the TLS | handshake. The TLS PSK identity is typically derived by the TLS | |||
implementation and may be an opaque blob without a routable realm. | implementation and may be an opaque blob without a routable realm. | |||
The TLS PSK identity on its own is therefore unsuitable as a NAI in | The TLS PSK identity on its own is therefore unsuitable as an NAI in | |||
the Identity Response. | the Identity Response. | |||
Figure 3 shows an example message flow for a subsequent successful | Figure 3 shows an example message flow for a subsequent successful | |||
EAP-TLS resumption handshake where both sides authenticate via a PSK | EAP-TLS resumption handshake where both sides authenticate via a PSK | |||
provisioned via an earlier NewSessionTicket and where the server | provisioned via an earlier NewSessionTicket and where the server | |||
provisions a single new ticket. | provisions a single new ticket. | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
skipping to change at page 10, line 44 ¶ | skipping to change at line 453 ¶ | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
(TLS Finished) --------> | (TLS Finished) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
<-------- (TLS Application Data 0x00) | <-------- (TLS Application Data 0x00) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS --------> | EAP-Type=EAP-TLS --------> | |||
<-------- EAP-Success | <-------- EAP-Success | |||
Figure 3: EAP-TLS resumption | Figure 3: EAP-TLS Resumption | |||
As specified in Section 2.2 of [RFC8446], the EAP-TLS peer SHOULD | As specified in Section 2.2 of [RFC8446], the EAP-TLS peer SHOULD | |||
supply a "key_share" extension when attempting resumption, which | supply a "key_share" extension when attempting resumption, which | |||
allows the EAP-TLS server to potentially decline resumption and fall | allows the EAP-TLS server to potentially decline resumption and fall | |||
back to a full handshake. If the EAP-TLS peer did not supply a | back to a full handshake. If the EAP-TLS peer did not supply a | |||
"key_share" extension when attempting resumption, the EAP-TLS server | "key_share" extension when attempting resumption, the EAP-TLS server | |||
needs to send HelloRetryRequest to signal that additional information | needs to send a HelloRetryRequest to signal that additional | |||
is needed to complete the handshake, and the EAP-TLS peer needs to | information is needed to complete the handshake, and the EAP-TLS peer | |||
send a second ClientHello containing that information. Providing a | needs to send a second ClientHello containing that information. | |||
"key_share" and using the "psk_dhe_ke" pre-shared key exchange mode | Providing a "key_share" and using the "psk_dhe_ke" pre-shared key | |||
is also important in order to limit the impact of a key compromise. | exchange mode is also important in order to limit the impact of a key | |||
When using "psk_dhe_ke", TLS 1.3 provides forward secrecy meaning | compromise. When using "psk_dhe_ke", TLS 1.3 provides forward | |||
that compromise of the PSK used for resumption does not compromise | secrecy meaning that compromise of the PSK used for resumption does | |||
any earlier connections. The "psk_dh_ke" key-exchange mode MUST be | not compromise any earlier connections. The "psk_dh_ke" key exchange | |||
used for resumption unless the deployment has a local requirement to | mode MUST be used for resumption unless the deployment has a local | |||
allow configuration of other mechanisms. | requirement to allow configuration of other mechanisms. | |||
2.1.4. Termination | 2.1.4. Termination | |||
This section updates Section 2.1.3 of [RFC5216] by amending it in | This section updates Section 2.1.3 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
TLS 1.3 changes both the message flow and the handshake messages | TLS 1.3 changes both the message flow and the handshake messages | |||
compared to earlier versions of TLS. Therefore, some normative text | compared to earlier versions of TLS. Therefore, some normative text | |||
in Section 2.1.3 of [RFC5216] does not apply for TLS 1.3. The two | in Section 2.1.3 of [RFC5216] does not apply for TLS 1.3. The two | |||
paragraphs below replace the corresponding paragraphs in | paragraphs below replace the corresponding paragraphs in | |||
skipping to change at page 11, line 44 ¶ | skipping to change at line 501 ¶ | |||
If the EAP-TLS server authenticates successfully, the EAP-TLS peer | If the EAP-TLS server authenticates successfully, the EAP-TLS peer | |||
MUST send an EAP-Response message with EAP-Type=EAP-TLS containing | MUST send an EAP-Response message with EAP-Type=EAP-TLS containing | |||
TLS records conforming to the version of TLS used. | TLS records conforming to the version of TLS used. | |||
Figures 4, 5, and 6 illustrate message flows in several cases where | Figures 4, 5, and 6 illustrate message flows in several cases where | |||
the EAP-TLS peer or EAP-TLS server sends a TLS Error alert message. | the EAP-TLS peer or EAP-TLS server sends a TLS Error alert message. | |||
In earlier versions of TLS, error alerts could be warnings or fatal. | In earlier versions of TLS, error alerts could be warnings or fatal. | |||
In TLS 1.3, error alerts are always fatal and the only alerts sent at | In TLS 1.3, error alerts are always fatal and the only alerts sent at | |||
warning level are "close_notify" and "user_canceled", both of which | warning level are "close_notify" and "user_canceled", both of which | |||
indicate that the connection is not going to continue normally, see | indicate that the connection is not going to continue normally; see | |||
[RFC8446]. | [RFC8446]. | |||
In TLS 1.3 [RFC8446], error alerts are not mandatory to send after a | In TLS 1.3 [RFC8446], error alerts are not mandatory to send after a | |||
fatal error condition. Failure to send TLS Error alerts means that | fatal error condition. Failure to send TLS Error alerts means that | |||
the peer or server would have no way of determining what went wrong. | the peer or server would have no way of determining what went wrong. | |||
EAP-TLS 1.3 strengthens this requirement. Whenever an implementation | EAP-TLS 1.3 strengthens this requirement. Whenever an implementation | |||
encounters a fatal error condition, it MUST send an appropriate TLS | encounters a fatal error condition, it MUST send an appropriate TLS | |||
Error alert. | Error alert. | |||
Figure 4 shows an example message flow where the EAP-TLS server | Figure 4 shows an example message flow where the EAP-TLS server | |||
rejects the ClientHello with an error alert. The EAP-TLS server can | rejects the ClientHello with an error alert. The EAP-TLS server can | |||
also partly reject the ClientHello with a HelloRetryRequest, see | also partly reject the ClientHello with a HelloRetryRequest; see | |||
Section 2.1.6. | Section 2.1.6. | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
<-------- Identity | <-------- Identity | |||
EAP-Response/ | EAP-Response/ | |||
Identity (Privacy-Friendly) --------> | Identity (Privacy-Friendly) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
skipping to change at page 12, line 36 ¶ | skipping to change at line 535 ¶ | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
(TLS ClientHello) --------> | (TLS ClientHello) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
<-------- (TLS Error Alert) | <-------- (TLS Error Alert) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS --------> | EAP-Type=EAP-TLS --------> | |||
<-------- EAP-Failure | <-------- EAP-Failure | |||
Figure 4: EAP-TLS server rejection of ClientHello | Figure 4: EAP-TLS Server Rejection of ClientHello | |||
Figure 5 shows an example message flow where EAP-TLS server | Figure 5 shows an example message flow where EAP-TLS server | |||
authentication is unsuccessful and the EAP-TLS peer sends a TLS Error | authentication is unsuccessful and the EAP-TLS peer sends a TLS Error | |||
alert. | alert. | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
<-------- Identity | <-------- Identity | |||
EAP-Response/ | EAP-Response/ | |||
skipping to change at page 13, line 31 ¶ | skipping to change at line 567 ¶ | |||
TLS CertificateRequest, | TLS CertificateRequest, | |||
TLS Certificate, | TLS Certificate, | |||
TLS CertificateVerify, | TLS CertificateVerify, | |||
<-------- TLS Finished) | <-------- TLS Finished) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
(TLS Error Alert) | (TLS Error Alert) | |||
--------> | --------> | |||
<-------- EAP-Failure | <-------- EAP-Failure | |||
Figure 5: EAP-TLS unsuccessful EAP-TLS server authentication | Figure 5: EAP-TLS Unsuccessful EAP-TLS Server Authentication | |||
Figure 6 shows an example message flow where the EAP-TLS server | Figure 6 shows an example message flow where the EAP-TLS server | |||
authenticates to the EAP-TLS peer successfully, but the EAP-TLS peer | authenticates to the EAP-TLS peer successfully, but the EAP-TLS peer | |||
fails to authenticate to the EAP-TLS server and the server sends a | fails to authenticate to the EAP-TLS server and the server sends a | |||
TLS Error alert. | TLS Error alert. | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
<-------- Identity | <-------- Identity | |||
skipping to change at page 14, line 37 ¶ | skipping to change at line 606 ¶ | |||
(TLS Certificate, | (TLS Certificate, | |||
TLS CertificateVerify, | TLS CertificateVerify, | |||
TLS Finished) --------> | TLS Finished) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
<-------- (TLS Error Alert) | <-------- (TLS Error Alert) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS --------> | EAP-Type=EAP-TLS --------> | |||
<-------- EAP-Failure | <-------- EAP-Failure | |||
Figure 6: EAP-TLS unsuccessful client authentication | Figure 6: EAP-TLS Unsuccessful Client Authentication | |||
2.1.5. No Peer Authentication | 2.1.5. No Peer Authentication | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
Figure 7 shows an example message flow for a successful EAP-TLS full | Figure 7 shows an example message flow for a successful EAP-TLS full | |||
handshake without peer authentication (e.g., emergency services, as | handshake without peer authentication (e.g., emergency services, as | |||
described in [RFC7406]). | described in [RFC7406]). | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
skipping to change at page 15, line 34 ¶ | skipping to change at line 645 ¶ | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
(TLS Finished) --------> | (TLS Finished) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
<-------- (TLS Application Data 0x00) | <-------- (TLS Application Data 0x00) | |||
EAP-Response/ | EAP-Response/ | |||
EAP-Type=EAP-TLS --------> | EAP-Type=EAP-TLS --------> | |||
<-------- EAP-Success | <-------- EAP-Success | |||
Figure 7: EAP-TLS without peer authentication | Figure 7: EAP-TLS without Peer Authentication | |||
2.1.6. Hello Retry Request | 2.1.6. Hello Retry Request | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
As defined in TLS 1.3 [RFC8446], EAP-TLS servers can send a | As defined in TLS 1.3 [RFC8446], EAP-TLS servers can send a | |||
HelloRetryRequest message in response to a ClientHello if the EAP-TLS | HelloRetryRequest message in response to a ClientHello if the EAP-TLS | |||
server finds an acceptable set of parameters but the initial | server finds an acceptable set of parameters but the initial | |||
ClientHello does not contain all the needed information to continue | ClientHello does not contain all the needed information to continue | |||
the handshake. One use case is if the EAP-TLS server does not | the handshake. One use case is if the EAP-TLS server does not | |||
support the groups in the "key_share" extension (or there is no | support the groups in the "key_share" extension (or there is no | |||
"key_share" extension), but supports one of the groups in the | "key_share" extension) but supports one of the groups in the | |||
"supported_groups" extension. In this case the client should send a | "supported_groups" extension. In this case, the client should send a | |||
new ClientHello with a "key_share" that the EAP-TLS server supports. | new ClientHello with a "key_share" that the EAP-TLS server supports. | |||
Figure 8 shows an example message flow for a successful EAP-TLS full | Figure 8 shows an example message flow for a successful EAP-TLS full | |||
handshake with mutual authentication and HelloRetryRequest. Note the | handshake with mutual authentication and HelloRetryRequest. Note the | |||
extra round-trip as a result of the HelloRetryRequest. | extra round trip as a result of the HelloRetryRequest. | |||
EAP-TLS Peer EAP-TLS Server | EAP-TLS Peer EAP-TLS Server | |||
EAP-Request/ | EAP-Request/ | |||
<-------- Identity | <-------- Identity | |||
EAP-Response/ | EAP-Response/ | |||
Identity (Privacy-Friendly) --------> | Identity (Privacy-Friendly) --------> | |||
EAP-Request/ | EAP-Request/ | |||
EAP-Type=EAP-TLS | EAP-Type=EAP-TLS | |||
<-------- (TLS Start) | <-------- (TLS Start) | |||
skipping to change at page 17, line 8 ¶ | skipping to change at line 717 ¶ | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
It is RECOMMENDED to use anonymous NAIs [RFC7542] in the Identity | It is RECOMMENDED to use anonymous NAIs [RFC7542] in the Identity | |||
Response as such identities are routable and privacy-friendly. While | Response as such identities are routable and privacy-friendly. While | |||
opaque blobs are allowed by [RFC3748], such identities are NOT | opaque blobs are allowed by [RFC3748], such identities are NOT | |||
RECOMMENDED as they are not routable and should only be considered in | RECOMMENDED as they are not routable and should only be considered in | |||
local deployments where the EAP-TLS peer, EAP authenticator, and EAP- | local deployments where the EAP-TLS peer, EAP authenticator, and EAP- | |||
TLS server all belong to the same network. Many client certificates | TLS server all belong to the same network. Many client certificates | |||
contain an identity such as an email address, which is already in NAI | contain an identity such as an email address, which is already in NAI | |||
format. When the client certificate contains a NAI as subject name | format. When the client certificate contains an NAI as subject name | |||
or alternative subject name, an anonymous NAI SHOULD be derived from | or alternative subject name, an anonymous NAI SHOULD be derived from | |||
the NAI in the certificate, see Section 2.1.8. More details on | the NAI in the certificate; see Section 2.1.8. More details on | |||
identities are described in Sections 2.1.3, 2.1.8, 2.2, and 5.8. | identities are described in Sections 2.1.3, 2.1.8, 2.2, and 5.8. | |||
2.1.8. Privacy | 2.1.8. Privacy | |||
This section updates Section 2.1.4 of [RFC5216] by amending it in | This section updates Section 2.1.4 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
EAP-TLS 1.3 significantly improves privacy when compared to earlier | EAP-TLS 1.3 significantly improves privacy when compared to earlier | |||
versions of EAP-TLS. EAP-TLS 1.3 forbids cipher suites without | versions of EAP-TLS. EAP-TLS 1.3 forbids cipher suites without | |||
confidentiality which means that TLS 1.3 is always encrypting large | confidentiality, which means that TLS 1.3 is always encrypting large | |||
parts of the TLS handshake including the certificate messages. | parts of the TLS handshake including the certificate messages. | |||
EAP-TLS peer and server implementations supporting TLS 1.3 MUST | EAP-TLS peer and server implementations supporting TLS 1.3 MUST | |||
support anonymous Network Access Identifiers (NAIs) (Section 2.4 in | support anonymous Network Access Identifiers (NAIs) (Section 2.4 of | |||
[RFC7542]) and a client supporting TLS 1.3 MUST NOT send its username | [RFC7542]). A client supporting TLS 1.3 MUST NOT send its username | |||
in cleartext in the Identity Response. Following [RFC7542], it is | (or any other permanent identifiers) in cleartext in the Identity | |||
RECOMMENDED to omit the username (i.e., the NAI is @realm), but other | Response (or any message used instead of the Identity Response). | |||
constructions such as a fixed username (e.g., anonymous@realm) or an | Following [RFC7542], it is RECOMMENDED to omit the username (i.e., | |||
encrypted username (e.g., | the NAI is @realm), but other constructions such as a fixed username | |||
(e.g., anonymous@realm) or an encrypted username (e.g., | ||||
xCZINCPTK5+7y81CrSYbPg+RKPE3OTrYLn4AQc4AC2U=@realm) are allowed. | xCZINCPTK5+7y81CrSYbPg+RKPE3OTrYLn4AQc4AC2U=@realm) are allowed. | |||
Note that the NAI MUST be a UTF-8 string as defined by the grammar in | Note that the NAI MUST be a UTF-8 string as defined by the grammar in | |||
Section 2.2 of [RFC7542]. | Section 2.2 of [RFC7542]. | |||
The HelloRequest message used for privacy in EAP-TLS 1.2 does not | The HelloRequest message used for privacy in EAP-TLS 1.2 does not | |||
exist in TLS 1.3 but as the certificate messages in TLS 1.3 are | exist in TLS 1.3 but as the certificate messages in TLS 1.3 are | |||
encrypted, there is no need to send an empty certificate_list and | encrypted, there is no need to send an empty certificate_list and | |||
perform a second handshake for privacy (as needed by EAP-TLS with | perform a second handshake for privacy (as needed by EAP-TLS with | |||
earlier versions of TLS). When EAP-TLS is used with TLS version 1.3 | earlier versions of TLS). When EAP-TLS is used with TLS version 1.3, | |||
the EAP-TLS peer and EAP-TLS server SHALL follow the processing | the EAP-TLS peer and EAP-TLS server SHALL follow the processing | |||
specified by version 1.3 of TLS. This means that the EAP-TLS peer | specified by version 1.3 of TLS. This means that the EAP-TLS peer | |||
only sends an empty certificate_list if it does not have an | only sends an empty certificate_list if it does not have an | |||
appropriate certificate to send, and the EAP-TLS server MAY treat an | appropriate certificate to send, and the EAP-TLS server MAY treat an | |||
empty certificate_list as a terminal condition. | empty certificate_list as a terminal condition. | |||
EAP-TLS with TLS 1.3 is always used with privacy. This does not add | EAP-TLS with TLS 1.3 is always used with privacy. This does not add | |||
any extra round-trips and the message flow with privacy is just the | any extra round trips and the message flow with privacy is just the | |||
normal message flow as shown in Figure 1. | normal message flow as shown in Figure 1. | |||
2.1.9. Fragmentation | 2.1.9. Fragmentation | |||
This section updates Section 2.1.5 of [RFC5216] by amending it in | This section updates Section 2.1.5 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
Including ContentType (1 byte), ProtocolVersion (2 bytes), and length | Including ContentType (1 byte), ProtocolVersion (2 bytes), and length | |||
(2 bytes) headers a single TLS record may be up to 16645 octets in | (2 bytes) headers, a single TLS record may be up to 16645 octets in | |||
length. EAP-TLS fragmentation support is provided through addition | length. EAP-TLS fragmentation support is provided through addition | |||
of a flags octet within the EAP-Response and EAP-Request packets, as | of a flags octet within the EAP-Response and EAP-Request packets, as | |||
well as a (conditional) TLS Message Length field of four octets. | well as a (conditional) TLS Message Length field of four octets. | |||
Implementations MUST NOT set the L bit in unfragmented messages, but | Implementations MUST NOT set the L bit in unfragmented messages, but | |||
MUST accept unfragmented messages with and without the L bit set. | they MUST accept unfragmented messages with and without the L bit | |||
set. | ||||
Some EAP implementations and access networks may limit the number of | Some EAP implementations and access networks may limit the number of | |||
EAP packet exchanges that can be handled. To avoid fragmentation, it | EAP packet exchanges that can be handled. To avoid fragmentation, it | |||
is RECOMMENDED to keep the sizes of EAP-TLS peer, EAP-TLS server, and | is RECOMMENDED to keep the sizes of EAP-TLS peer, EAP-TLS server, and | |||
trust anchor certificates small and the length of the certificate | trust anchor certificates small and the length of the certificate | |||
chains short. In addition, it is RECOMMENDED to use mechanisms that | chains short. In addition, it is RECOMMENDED to use mechanisms that | |||
reduce the sizes of Certificate messages. For a detailed discussion | reduce the sizes of Certificate messages. For a detailed discussion | |||
on reducing message sizes to prevent fragmentation, see | on reducing message sizes to prevent fragmentation, see [RFC9191]. | |||
[I-D.ietf-emu-eaptlscert]. | ||||
2.2. Identity Verification | 2.2. Identity Verification | |||
This section updates Section 2.2 of [RFC5216] by amending it in | This section replaces Section 2.2 of [RFC5216] with the following | |||
accordance with the following discussion. The guidance in this | discussion. The guidance in this section is relevant for EAP-TLS in | |||
section is relevant for EAP-TLS in general (regardless of the | general (regardless of the underlying TLS version used). | |||
underlying TLS version used). | ||||
The EAP peer identity provided in the EAP-Response/Identity is not | The EAP peer identity provided in the EAP-Response/Identity is not | |||
authenticated by EAP-TLS. Unauthenticated information MUST NOT be | authenticated by EAP-TLS. Unauthenticated information MUST NOT be | |||
used for accounting purposes or to give authorization. The | used for accounting purposes or to give authorization. The | |||
authenticator and the EAP-TLS server MAY examine the identity | authenticator and the EAP-TLS server MAY examine the identity | |||
presented in EAP-Response/Identity for purposes such as routing and | presented in EAP-Response/Identity for purposes such as routing and | |||
EAP method selection. EAP-TLS servers MAY reject conversations if | EAP method selection. EAP-TLS servers MAY reject conversations if | |||
the identity does not match their policy. Note that this also | the identity does not match their policy. Note that this also | |||
applies to resumption, see Sections 2.1.3, 5.6, and 5.7. | applies to resumption; see Sections 2.1.3, 5.6, and 5.7. | |||
The EAP server identity in the TLS server certificate is typically a | The EAP server identity in the TLS server certificate is typically a | |||
fully qualified domain name (FQDN) in the SubjectAltName (SAN) | fully qualified domain name (FQDN) in the SubjectAltName (SAN) | |||
extension. Since EAP-TLS deployments may use more than one EAP | extension. Since EAP-TLS deployments may use more than one EAP | |||
server, each with a different certificate, EAP peer implementations | server, each with a different certificate, EAP peer implementations | |||
SHOULD allow for the configuration of one or more trusted root | SHOULD allow for the configuration of one or more trusted root | |||
certificates (CA certificate) to authenticate the server certificate | certificates (CA certificate) to authenticate the server certificate | |||
and one or more server names to match against the SubjectAltName | and one or more server names to match against the SubjectAltName | |||
(SAN) extension in the server certificate. If any of the configured | (SAN) extension in the server certificate. If any of the configured | |||
names match any of the names in the SAN extension then the name check | names match any of the names in the SAN extension, then the name | |||
passes. To simplify name matching, an EAP-TLS deployment can assign | check passes. To simplify name matching, an EAP-TLS deployment can | |||
a name to represent an authorized EAP server and EAP Server | assign a name to represent an authorized EAP server and EAP Server | |||
certificates can include this name in the list of SANs for each | certificates can include this name in the list of SANs for each | |||
certificate that represents an EAP-TLS server. If server name | certificate that represents an EAP-TLS server. If server name | |||
matching is not used, then it degrades the confidence that the EAP | matching is not used, then it degrades the confidence that the EAP | |||
server with which it is interacting is authoritative for the given | server with which it is interacting is authoritative for the given | |||
network. If name matching is not used with a public root CA, then | network. If name matching is not used with a public root CA, then | |||
effectively any server can obtain a certificate which will be trusted | effectively any server can obtain a certificate that will be trusted | |||
for EAP authentication by the Peer. While this guidance to verify | for EAP authentication by the peer. While this guidance to verify | |||
domain names is new, and was not mentioned in [RFC5216], it has been | domain names is new, and was not mentioned in [RFC5216], it has been | |||
widely implemented in EAP-TLS peers. As such, it is believed that | widely implemented in EAP-TLS peers. As such, it is believed that | |||
this section contains minimal new interoperability or implementation | this section contains minimal new interoperability or implementation | |||
requirements on EAP-TLS peers and can be applied to earlier versions | requirements on EAP-TLS peers and can be applied to earlier versions | |||
of TLS. | of TLS. | |||
The process of configuring a root CA certificate and a server name is | The process of configuring a root CA certificate and a server name is | |||
non-trivial and therefore automated methods of provisioning are | non-trivial; therefore, automated methods of provisioning are | |||
RECOMMENDED. For example, the eduroam federation [RFC7593] provides | RECOMMENDED. For example, the eduroam federation [RFC7593] provides | |||
a Configuration Assistant Tool (CAT) to automate the configuration | a Configuration Assistant Tool (CAT) to automate the configuration | |||
process. In the absence of a trusted root CA certificate (user | process. In the absence of a trusted root CA certificate (user | |||
configured or system-wide), EAP peers MAY implement a trust on first | configured or system-wide), EAP peers MAY implement a trust on first | |||
use (TOFU) mechanism where the peer trusts and stores the server | use (TOFU) mechanism where the peer trusts and stores the server | |||
certificate during the first connection attempt. The EAP peer | certificate during the first connection attempt. The EAP peer | |||
ensures that the server presents the same stored certificate on | ensures that the server presents the same stored certificate on | |||
subsequent interactions. Use of a TOFU mechanism does not allow for | subsequent interactions. Use of a TOFU mechanism does not allow for | |||
the server certificate to change without out-of-band validation of | the server certificate to change without out-of-band validation of | |||
the certificate and is therefore not suitable for many deployments | the certificate and is therefore not suitable for many deployments | |||
skipping to change at page 19, line 41 ¶ | skipping to change at line 843 ¶ | |||
availability. TOFU mechanisms increase the susceptibility to traffic | availability. TOFU mechanisms increase the susceptibility to traffic | |||
interception attacks and should only be used if there are adequate | interception attacks and should only be used if there are adequate | |||
controls in place to mitigate this risk. | controls in place to mitigate this risk. | |||
2.3. Key Hierarchy | 2.3. Key Hierarchy | |||
This section updates Section 2.3 of [RFC5216] by replacing it in | This section updates Section 2.3 of [RFC5216] by replacing it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
TLS 1.3 replaces the TLS pseudorandom function (PRF) used in earlier | TLS 1.3 replaces the TLS pseudorandom function (PRF) used in earlier | |||
versions of TLS with HKDF and completely changes the Key Schedule. | versions of TLS with the HMAC-based Key Derivation Function (HKDF) | |||
The key hierarchies shown in Section 2.3 of [RFC5216] are therefore | and completely changes the key schedule. The key hierarchies shown | |||
not correct when EAP-TLS is used with TLS version 1.3. For TLS 1.3 | in Section 2.3 of [RFC5216] are therefore not correct when EAP-TLS is | |||
the key schedule is described in Section 7.1 of [RFC8446]. | used with TLS version 1.3. For TLS 1.3 the key schedule is described | |||
in Section 7.1 of [RFC8446]. | ||||
When EAP-TLS is used with TLS version 1.3 the Key_Material and | When EAP-TLS is used with TLS version 1.3, the Key_Material and | |||
Method-Id SHALL be derived from the exporter_secret using the TLS | Method-Id SHALL be derived from the exporter_secret using the TLS | |||
exporter interface [RFC5705] (for TLS 1.3 this is defined in | exporter interface [RFC5705] (for TLS 1.3, this is defined in | |||
Section 7.5 of [RFC8446]). Type is the value of the EAP Type field | Section 7.5 of [RFC8446]). Type is the value of the EAP Type field | |||
defined in Section 2 of [RFC3748]. For EAP-TLS the Type field has | defined in Section 2 of [RFC3748]. For EAP-TLS, the Type field has | |||
value 0x0D. | value 0x0D. | |||
Type = 0x0D | Type = 0x0D | |||
Key_Material = TLS-Exporter("EXPORTER_EAP_TLS_Key_Material", | Key_Material = TLS-Exporter("EXPORTER_EAP_TLS_Key_Material", | |||
Type, 128) | Type, 128) | |||
Method-Id = TLS-Exporter("EXPORTER_EAP_TLS_Method-Id", | Method-Id = TLS-Exporter("EXPORTER_EAP_TLS_Method-Id", | |||
Type, 64) | Type, 64) | |||
Session-Id = Type || Method-Id | Session-Id = Type || Method-Id | |||
The MSK and EMSK are derived from the Key_Material in the same manner | The MSK and EMSK are derived from the Key_Material in the same manner | |||
as with EAP-TLS [RFC5216], Section 2.3. The definitions are repeated | as with EAP-TLS [RFC5216], Section 2.3. The definitions are repeated | |||
below for simplicity: | below for simplicity: | |||
MSK = Key_Material(0, 63) | MSK = Key_Material(0, 63) | |||
EMSK = Key_Material(64, 127) | EMSK = Key_Material(64, 127) | |||
Other TLS based EAP methods can use the TLS exporter in a similar | Other TLS-based EAP methods can use the TLS exporter in a similar | |||
fashion, see [I-D.ietf-emu-tls-eap-types]. | fashion; see [TLS-EAP-TYPES]. | |||
[RFC5247] deprecates the use of IV. Thus, RECV-IV and SEND-IV are | [RFC5247] deprecates the use of an Initialization Vector (IV). Thus, | |||
not exported in EAP-TLS with TLS 1.3. As noted in [RFC5247], lower | RECV-IV and SEND-IV are not exported in EAP-TLS with TLS 1.3. As | |||
layers use the MSK in a lower-layer-dependent manner. EAP-TLS with | noted in [RFC5247], lower layers use the MSK in a lower-layer- | |||
TLS 1.3 exports the MSK and does not specify how it is used by lower | dependent manner. EAP-TLS with TLS 1.3 exports the MSK and does not | |||
layers. | specify how it is used by lower layers. | |||
Note that the key derivation MUST use the length values given above. | Note that the key derivation MUST use the length values given above. | |||
While in TLS 1.2 and earlier it was possible to truncate the output | While in TLS 1.2 and earlier it was possible to truncate the output | |||
by requesting less data from the TLS-Exporter function, this practice | by requesting less data from the TLS-Exporter function, this practice | |||
is not possible with TLS 1.3. If an implementation intends to use | is not possible with TLS 1.3. If an implementation intends to use | |||
only a part of the output of the TLS-Exporter function, then it MUST | only a part of the output of the TLS-Exporter function, then it MUST | |||
ask for the full output and then only use the desired part. Failure | ask for the full output and then only use the desired part. Failure | |||
to do so will result in incorrect values being calculated for the | to do so will result in incorrect values being calculated for the | |||
above keying material. | above keying material. | |||
By using the TLS exporter, EAP-TLS can use any TLS 1.3 implementation | By using the TLS exporter, EAP-TLS can use any TLS 1.3 implementation | |||
which provides a public API for the exporter. Note that when TLS 1.2 | that provides a public API for the exporter. Note that when TLS 1.2 | |||
is used with the EAP-TLS exporter [RFC5705] it generates the same key | is used with the EAP-TLS exporter [RFC5705] it generates the same key | |||
material as in EAP-TLS [RFC5216]. | material as in EAP-TLS [RFC5216]. | |||
2.4. Parameter Negotiation and Compliance Requirements | 2.4. Parameter Negotiation and Compliance Requirements | |||
This section updates Section 2.4 of [RFC5216] by amending it in | This section updates Section 2.4 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
TLS 1.3 cipher suites are defined differently than in earlier | TLS 1.3 cipher suites are defined differently than in earlier | |||
versions of TLS (see Section B.4 of [RFC8446]), and the cipher suites | versions of TLS (see Appendix B.4 of [RFC8446]), and the cipher | |||
discussed in Section 2.4 of [RFC5216] can therefore not be used when | suites discussed in Section 2.4 of [RFC5216] can therefore not be | |||
EAP-TLS is used with TLS version 1.3. | used when EAP-TLS is used with TLS version 1.3. | |||
When EAP-TLS is used with TLS version 1.3, the EAP-TLS peers and EAP- | When EAP-TLS is used with TLS version 1.3, the EAP-TLS peers and EAP- | |||
TLS servers MUST comply with the compliance requirements (mandatory- | TLS servers MUST comply with the compliance requirements (mandatory- | |||
to-implement cipher suites, signature algorithms, key exchange | to-implement cipher suites, signature algorithms, key exchange | |||
algorithms, extensions, etc.) defined in Section 9 of [RFC8446]. In | algorithms, extensions, etc.) defined in Section 9 of [RFC8446]. In | |||
EAP-TLS with TLS 1.3, only cipher suites with confidentiality SHALL | EAP-TLS with TLS 1.3, only cipher suites with confidentiality SHALL | |||
be supported. | be supported. | |||
While EAP-TLS does not protect any application data except for the | While EAP-TLS does not protect any application data except for the | |||
0x00 byte that serves as protected success indication, the negotiated | 0x00 byte that serves as protected success indication, the negotiated | |||
skipping to change at page 21, line 40 ¶ | skipping to change at line 938 ¶ | |||
To provide a protected success result indication and to decrease the | To provide a protected success result indication and to decrease the | |||
uncertainty for the EAP-TLS peer, the following procedure MUST be | uncertainty for the EAP-TLS peer, the following procedure MUST be | |||
followed: | followed: | |||
When an EAP-TLS server has successfully processed the TLS client | When an EAP-TLS server has successfully processed the TLS client | |||
Finished and sent its last handshake message (Finished or a post- | Finished and sent its last handshake message (Finished or a post- | |||
handshake message), it sends an encrypted TLS record with application | handshake message), it sends an encrypted TLS record with application | |||
data 0x00. The encrypted TLS record with application data 0x00 is a | data 0x00. The encrypted TLS record with application data 0x00 is a | |||
protected success result indication, as defined in [RFC3748]. After | protected success result indication, as defined in [RFC3748]. After | |||
sending an EAP-Request that contains the protected success result | sending an EAP-Request that contains the protected success result | |||
indication, the EAP-TLS server must not send any more EAP-Request and | indication, the EAP-TLS server must not send any more EAP-Requests | |||
may only send an EAP-Success. The EAP-TLS server MUST NOT send an | and may only send an EAP-Success. The EAP-TLS server MUST NOT send | |||
encrypted TLS record with application data 0x00 alert before it has | an encrypted TLS record with application data 0x00 before it has | |||
successfully processed the client finished and sent its last | successfully processed the client Finished and sent its last | |||
handshake message. | handshake message. | |||
TLS Error alerts SHOULD be considered a failure result indication, as | TLS Error alerts SHOULD be considered a failure result indication, as | |||
defined in [RFC3748]. Implementations following [RFC4137] set the | defined in [RFC3748]. Implementations following [RFC4137] set the | |||
alternate indication of failure variable altReject after sending or | alternate indication of failure variable altReject after sending or | |||
receiving an error alert. After sending or receiving a TLS Error | receiving an error alert. After sending or receiving a TLS Error | |||
alert, the EAP-TLS server may only send an EAP-Failure. Protected | alert, the EAP-TLS server may only send an EAP-Failure. Protected | |||
TLS Error alerts are protected failure result indications, | TLS Error alerts are protected failure result indications, and | |||
unprotected TLS Error alerts are not. | unprotected TLS Error alerts are not. | |||
The keying material can be derived after the TLS server Finished has | The keying material can be derived after the TLS server Finished has | |||
been sent or received. Implementations following [RFC4137] can then | been sent or received. Implementations following [RFC4137] can then | |||
set the eapKeyData and aaaEapKeyData variables. | set the eapKeyData and aaaEapKeyData variables. | |||
The keying material can be made available to lower layers and the | The keying material can be made available to lower layers and the | |||
authenticator after the authenticated success result indication has | authenticator after the authenticated success result indication has | |||
been sent or received. Implementations following [RFC4137] can set | been sent or received. Implementations following [RFC4137] can set | |||
the eapKeyAvailable and aaaEapKeyAvailable variables. | the eapKeyAvailable and aaaEapKeyAvailable variables. | |||
3. Detailed Description of the EAP-TLS Protocol | 3. Detailed Description of the EAP-TLS Protocol | |||
No updates to Section 3 of [RFC5216]. | There are no updates to Section 3 of [RFC5216]. | |||
4. IANA considerations | 4. IANA Considerations | |||
This section provides guidance to the Internet Assigned Numbers | This section provides guidance to the Internet Assigned Numbers | |||
Authority (IANA) regarding registration of values related to the EAP- | Authority (IANA) regarding registration of values related to EAP-TLS | |||
TLS 1.3 protocol in accordance with [RFC8126]. | 1.3 in accordance with [RFC8126]. | |||
This document requires IANA to add the following labels to the TLS | Per this document, IANA has added the following labels to the "TLS | |||
Exporter Label Registry defined by [RFC5705]. These labels are used | Exporter Labels" registry defined by [RFC5705]. These labels are | |||
in derivation of Key_Material and Method-Id as defined in | used in derivation of Key_Material and Method-Id as defined in | |||
Section 2.3: | Section 2.3: | |||
+===============================+=========+=============+======+ | +===============================+=========+=============+======+ | |||
| Value | DTLS-OK | Recommended | Note | | | Value | DTLS-OK | Recommended | Note | | |||
+===============================+=========+=============+======+ | +===============================+=========+=============+======+ | |||
| EXPORTER_EAP_TLS_Key_Material | N | Y | | | | EXPORTER_EAP_TLS_Key_Material | N | Y | | | |||
+-------------------------------+---------+-------------+------+ | ||||
+-------------------------------+---------+-------------+------+ | +-------------------------------+---------+-------------+------+ | |||
| EXPORTER_EAP_TLS_Method-Id | N | Y | | | | EXPORTER_EAP_TLS_Method-Id | N | Y | | | |||
+-------------------------------+---------+-------------+------+ | +-------------------------------+---------+-------------+------+ | |||
Table 1: TLS Exporter Label Registry | Table 1: TLS Exporter Labels | |||
5. Security Considerations | 5. Security Considerations | |||
The security considerations of TLS 1.3 [RFC8446] apply to EAP-TLS 1.3 | The security considerations of TLS 1.3 [RFC8446] apply to EAP-TLS | |||
1.3. | ||||
5.1. Security Claims | 5.1. Security Claims | |||
Using EAP-TLS with TLS 1.3 does not change the security claims for | Using EAP-TLS with TLS 1.3 does not change the security claims for | |||
EAP-TLS as given in Section 5.1 of [RFC5216]. However, it | EAP-TLS as given in Section 5.1 of [RFC5216]. However, it | |||
strengthens several of the claims as described in the following | strengthens several of the claims as described in the following | |||
updates to the notes given in Section 5.1 of [RFC5216]. | updates to the notes given in Section 5.1 of [RFC5216]. | |||
[1] Mutual authentication: By mandating revocation checking of | [1] Mutual authentication: By mandating revocation checking of | |||
certificates, the authentication in EAP-TLS with TLS 1.3 is stronger | certificates, the authentication in EAP-TLS with TLS 1.3 is | |||
as authentication with revoked certificates will always fail. | stronger as authentication with revoked certificates will always | |||
fail. | ||||
[2] Confidentiality: The TLS 1.3 handshake offers much better | [2] Confidentiality: The TLS 1.3 handshake offers much better | |||
confidentiality than earlier versions of TLS. EAP-TLS with TLS 1.3 | confidentiality than earlier versions of TLS. EAP-TLS with TLS | |||
mandates use of cipher suites that ensure confidentiality. TLS 1.3 | 1.3 mandates use of cipher suites that ensure confidentiality. | |||
also encrypts certificates and some of the extensions. When using | TLS 1.3 also encrypts certificates and some of the extensions. | |||
EAP-TLS with TLS 1.3, the use of privacy is mandatory and does not | When using EAP-TLS with TLS 1.3, the use of privacy is mandatory | |||
cause any additional round-trips. | and does not cause any additional round trips. | |||
[3] Cryptographic strength: TLS 1.3 only defines strong algorithms | [3] Cryptographic strength: TLS 1.3 only defines strong algorithms | |||
without major weaknesses and EAP-TLS with TLS 1.3 always provides | without major weaknesses and EAP-TLS with TLS 1.3 always provides | |||
forward secrecy, see [RFC8446]. Weak algorithms such as 3DES, CBC | forward secrecy; see [RFC8446]. Weak algorithms such as 3DES, | |||
mode, RC4, SHA-1, MD5, P-192, and RSA-1024 have not been registered | CBC mode, RC4, SHA-1, MD5, P-192, and RSA-1024 have not been | |||
for use in TLS 1.3. | registered for use in TLS 1.3. | |||
[4] Cryptographic Negotiation: The TLS layer handles the negotiation | [4] Cryptographic negotiation: The TLS layer handles the negotiation | |||
of cryptographic parameters. When EAP-TLS is used with TLS 1.3, EAP- | of cryptographic parameters. When EAP-TLS is used with TLS 1.3, | |||
TLS inherits the cryptographic negotiation of AEAD algorithm, HKDF | EAP-TLS inherits the cryptographic negotiation of the AEAD | |||
hash algorithm, key exchange groups, and signature algorithm, see | algorithm, HKDF hash algorithm, key exchange groups, and | |||
Section 4.1.1 of [RFC8446]. | signature algorithm; see Section 4.1.1 of [RFC8446]. | |||
5.2. Peer and Server Identities | 5.2. Peer and Server Identities | |||
No updates to section 5.2 of [RFC5216]. Note that Section 2.2 has | No updates to Section 5.2 of [RFC5216]. Note that Section 2.2 has | |||
additional discussion on identities. | additional discussion on identities. | |||
5.3. Certificate Validation | 5.3. Certificate Validation | |||
No updates to section 5.3 of [RFC5216]. In addition to section 5.3 | No updates to Section 5.3 of [RFC5216]. In addition to Section 5.3 | |||
of [RFC5216], guidance on server certificate validation can be found | of [RFC5216], guidance on server certificate validation can be found | |||
in [RFC6125]. | in [RFC6125]. | |||
5.4. Certificate Revocation | 5.4. Certificate Revocation | |||
This section updates Section 5.4 of [RFC5216] by amending it in | This section updates Section 5.4 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
There are a number of reasons (e.g., key compromise, CA compromise, | There are a number of reasons (e.g., key compromise, CA compromise, | |||
privilege withdrawn, etc.) why EAP-TLS peer, EAP-TLS server, or sub- | privilege withdrawn, etc.) why EAP-TLS peer, EAP-TLS server, or sub- | |||
CA certificates have to be revoked before their expiry date. | CA certificates have to be revoked before their expiry date. | |||
Revocation of the EAP-TLS server's certificate is complicated by the | Revocation of the EAP-TLS server's certificate is complicated by the | |||
fact that the EAP-TLS peer may not have Internet connectivity until | fact that the EAP-TLS peer may not have Internet connectivity until | |||
authentication completes. | authentication completes. | |||
When EAP-TLS is used with TLS 1.3, the revocation status of all the | When EAP-TLS is used with TLS 1.3, the revocation status of all the | |||
certificates in the certificate chains MUST be checked (except the | certificates in the certificate chains MUST be checked (except the | |||
trust anchor). An implementation may use Certificate Revocation List | trust anchor). An implementation may use the Certificate Revocation | |||
(CRL), Online Certificate Status Protocol (OSCP), or other | List (CRL), Online Certificate Status Protocol (OSCP), or other | |||
standardized/proprietary methods for revocation checking. Examples | standardized/proprietary methods for revocation checking. Examples | |||
of proprietary methods are non-standard formats for distribution of | of proprietary methods are non-standard formats for distribution of | |||
revocation lists as well as certificates with very short lifetime. | revocation lists as well as certificates with very short lifetime. | |||
EAP-TLS servers supporting TLS 1.3 MUST implement Certificate Status | EAP-TLS servers supporting TLS 1.3 MUST implement Certificate Status | |||
Requests (OCSP stapling) as specified in [RFC6066] and | Requests (OCSP stapling) as specified in [RFC6066] and | |||
Section 4.4.2.1 of [RFC8446]. It is RECOMMENDED that EAP-TLS peers | Section 4.4.2.1 of [RFC8446]. It is RECOMMENDED that EAP-TLS peers | |||
and EAP-TLS servers use OCSP stapling for verifying the status of the | and EAP-TLS servers use OCSP stapling for verifying the status of the | |||
EAP-TLS server's certificate chain. When an EAP-TLS peer uses | EAP-TLS server's certificate chain. When an EAP-TLS peer uses | |||
Certificate Status Requests to check the revocation status of the | Certificate Status Requests to check the revocation status of the | |||
EAP-TLS server's certificate chain it MUST treat a CertificateEntry | EAP-TLS server's certificate chain, it MUST treat a CertificateEntry | |||
(except the trust anchor) without a valid CertificateStatus extension | (but not the trust anchor) without a valid CertificateStatus | |||
as invalid and abort the handshake with an appropriate alert. The | extension as invalid and abort the handshake with an appropriate | |||
OCSP status handling in TLS 1.3 is different from earlier versions of | alert. The OCSP status handling in TLS 1.3 is different from earlier | |||
TLS, see Section 4.4.2.1 of [RFC8446]. In TLS 1.3 the OCSP | versions of TLS; see Section 4.4.2.1 of [RFC8446]. In TLS 1.3, the | |||
information is carried in the CertificateEntry containing the | OCSP information is carried in the CertificateEntry containing the | |||
associated certificate instead of a separate CertificateStatus | associated certificate instead of a separate CertificateStatus | |||
message as in [RFC6066]. This enables sending OCSP information for | message as in [RFC6066]. This enables sending OCSP information for | |||
all certificates in the certificate chain (except the trust anchor). | all certificates in the certificate chain (except the trust anchor). | |||
To enable revocation checking in situations where EAP-TLS peers do | To enable revocation checking in situations where EAP-TLS peers do | |||
not implement or use OCSP stapling, and where network connectivity is | not implement or use OCSP stapling, and where network connectivity is | |||
not available prior to authentication completion, EAP-TLS peer | not available prior to authentication completion, EAP-TLS peer | |||
implementations MUST also support checking for certificate revocation | implementations MUST also support checking for certificate revocation | |||
after authentication completes and network connectivity is available. | after authentication completes and network connectivity is available. | |||
An EAP peer implementation SHOULD NOT trust the network (and any | An EAP peer implementation SHOULD NOT trust the network (and any | |||
skipping to change at page 24, line 50 ¶ | skipping to change at line 1090 ¶ | |||
5.5. Packet Modification Attacks | 5.5. Packet Modification Attacks | |||
This section updates Section 5.5 of [RFC5216] by amending it in | This section updates Section 5.5 of [RFC5216] by amending it in | |||
accordance with the following discussion. | accordance with the following discussion. | |||
As described in [RFC3748] and Section 5.5 of [RFC5216], the only | As described in [RFC3748] and Section 5.5 of [RFC5216], the only | |||
information that is integrity and replay protected in EAP-TLS are the | information that is integrity and replay protected in EAP-TLS are the | |||
parts of the TLS Data that TLS protects. All other information in | parts of the TLS Data that TLS protects. All other information in | |||
the EAP-TLS message exchange including EAP-Request and EAP-Response | the EAP-TLS message exchange including EAP-Request and EAP-Response | |||
headers, the identity in the identity response, EAP-TLS packet header | headers, the identity in the Identity Response, EAP-TLS packet header | |||
fields, Type, and Flags, EAP-Success, and EAP-Failure can be | fields, Type, Flags, EAP-Success, and EAP-Failure can be modified, | |||
modified, spoofed, or replayed. | spoofed, or replayed. | |||
Protected TLS Error alerts are protected failure result indications | Protected TLS Error alerts are protected failure result indications | |||
and enables the EAP-TLS peer and EAP-TLS server to determine that the | and enable the EAP-TLS peer and EAP-TLS server to determine that the | |||
failure result was not spoofed by an attacker. Protected failure | failure result was not spoofed by an attacker. Protected failure | |||
result indications provide integrity and replay protection but MAY be | result indications provide integrity and replay protection but MAY be | |||
unauthenticated. Protected failure results do not significantly | unauthenticated. Protected failure results do not significantly | |||
improve availability as TLS 1.3 treats most malformed data as a fatal | improve availability as TLS 1.3 treats most malformed data as a fatal | |||
error. | error. | |||
5.6. Authorization | 5.6. Authorization | |||
This is a new section when compared to [RFC5216]. The guidance in | This is a new section when compared to [RFC5216]. The guidance in | |||
this section is relevant for EAP-TLS in general (regardless of the | this section is relevant for EAP-TLS in general (regardless of the | |||
underlying TLS version used). | underlying TLS version used). | |||
EAP servers will usually require the EAP peer to provide a valid | EAP servers will usually require the EAP peer to provide a valid | |||
certificate and will fail the connection if one is not provided. | certificate and will fail the connection if one is not provided. | |||
Some deployments may permit no peer authentication for some or all | Some deployments may permit no peer authentication for some or all | |||
connections. When peer authentication is not used, EAP-TLS server | connections. When peer authentication is not used, EAP-TLS server | |||
implementations MUST take care to limit network access appropriately | implementations MUST take care to limit network access appropriately | |||
for unauthenticated peers and implementations MUST use resumption | for unauthenticated peers, and implementations MUST use resumption | |||
with caution to ensure that a resumed session is not granted more | with caution to ensure that a resumed session is not granted more | |||
privilege than was intended for the original session. An example of | privilege than was intended for the original session. An example of | |||
limiting network access would be to invoke a vendor's walled garden | limiting network access would be to invoke a vendor's walled garden | |||
or quarantine network functionality. | or quarantine network functionality. | |||
EAP-TLS is typically encapsulated in other protocols, such as PPP | EAP-TLS is typically encapsulated in other protocols such as PPP | |||
[RFC1661], RADIUS [RFC2865], Diameter [RFC6733], or PANA [RFC5191]. | [RFC1661], RADIUS [RFC2865], Diameter [RFC6733], or the Protocol for | |||
The encapsulating protocols can also provide additional, non-EAP | Carrying Authentication for Network Access (PANA) [RFC5191]. The | |||
encapsulating protocols can also provide additional, non-EAP | ||||
information to an EAP-TLS server. This information can include, but | information to an EAP-TLS server. This information can include, but | |||
is not limited to, information about the authenticator, information | is not limited to, information about the authenticator, information | |||
about the EAP-TLS peer, or information about the protocol layers | about the EAP-TLS peer, or information about the protocol layers | |||
above or below EAP (MAC addresses, IP addresses, port numbers, Wi-Fi | above or below EAP (MAC addresses, IP addresses, port numbers, Wi-Fi | |||
SSID, etc.). EAP-TLS servers implementing EAP-TLS inside those | Service Set Identifiers (SSIDs), etc.). EAP-TLS servers implementing | |||
protocols can make policy decisions and enforce authorization based | EAP-TLS inside those protocols can make policy decisions and enforce | |||
on a combination of information from the EAP-TLS exchange and non-EAP | authorization based on a combination of information from the EAP-TLS | |||
information. | exchange and non-EAP information. | |||
As noted in Section 2.2, the identity presented in EAP-Response/ | As noted in Section 2.2, the identity presented in EAP-Response/ | |||
Identity is not authenticated by EAP-TLS and is therefore trivial for | Identity is not authenticated by EAP-TLS and is therefore trivial for | |||
an attacker to forge, modify, or replay. Authorization and | an attacker to forge, modify, or replay. Authorization and | |||
accounting MUST be based on authenticated information such as | accounting MUST be based on authenticated information such as | |||
information in the certificate or the PSK identity and cached data | information in the certificate or the PSK identity and cached data | |||
provisioned for resumption as described in Section 5.7. Note that | provisioned for resumption as described in Section 5.7. Note that | |||
the requirements for Network Access Identifiers (NAIs) specified in | the requirements for Network Access Identifiers (NAIs) specified in | |||
Section 4 of [RFC7542] still apply and MUST be followed. | Section 4 of [RFC7542] still apply and MUST be followed. | |||
EAP-TLS servers MAY reject conversations based on non-EAP information | EAP-TLS servers MAY reject conversations based on non-EAP information | |||
provided by the encapsulating protocol, for example, if the MAC | provided by the encapsulating protocol, for example if the MAC | |||
address of the authenticator does not match the expected policy. | address of the authenticator does not match the expected policy. | |||
In addition to allowing configuration of one or more trusted root | In addition to allowing configuration of one or more trusted root | |||
certificates (CA certificate) to authenticate the server certificate | certificates (CA certificate) to authenticate the server certificate | |||
and one or more server names to match against the SubjectAltName | and one or more server names to match against the SubjectAltName | |||
(SAN) extension, EAP peer implementations MAY allow binding the | (SAN) extension, EAP peer implementations MAY allow binding the | |||
configured acceptable SAN to a specific CA (or CAs) that should have | configured acceptable SAN to a specific CA (or CAs) that should have | |||
issued the server certificate to prevent attacks from rogue or | issued the server certificate to prevent attacks from rogue or | |||
compromised CAs. | compromised CAs. | |||
5.7. Resumption | 5.7. Resumption | |||
This is a new section when compared to [RFC5216]. The guidance in | This is a new section when compared to [RFC5216]. The guidance in | |||
this section is relevant for EAP-TLS in general (regardless of the | this section is relevant for EAP-TLS in general (regardless of the | |||
underlying TLS version used). | underlying TLS version used). | |||
There are a number of security issues related to resumption that are | There are a number of security issues related to resumption that are | |||
not described in [RFC5216]. The problems, guidelines, and | not described in [RFC5216]. The problems, guidelines, and | |||
requirements in this section therefore applies to EAP-TLS when it is | requirements in this section therefore apply to EAP-TLS when it is | |||
used with any version of TLS. | used with any version of TLS. | |||
When resumption occurs, it is based on cached information at the TLS | When resumption occurs, it is based on cached information at the TLS | |||
layer. To perform resumption securely, the EAP-TLS peer and EAP-TLS | layer. To perform resumption securely, the EAP-TLS peer and EAP-TLS | |||
server need to be able to securely retrieve authorization information | server need to be able to securely retrieve authorization information | |||
such as certificate chains from the initial full handshake. This | such as certificate chains from the initial full handshake. This | |||
document uses the term "cached data" to describe such information. | document uses the term "cached data" to describe such information. | |||
Authorization during resumption MUST be based on such cached data. | Authorization during resumption MUST be based on such cached data. | |||
The EAP-TLS peer and EAP-TLS server MAY perform fresh revocation | The EAP-TLS peer and EAP-TLS server MAY perform fresh revocation | |||
checks on the cached certificate data. Any security policies for | checks on the cached certificate data. Any security policies for | |||
authorization MUST be followed also for resumption. The certificates | authorization MUST be followed also for resumption. The certificates | |||
may have been revoked since the initial full handshake and the | may have been revoked since the initial full handshake and the | |||
authorizations of the other party may have been reduced. If the | authorizations of the other party may have been reduced. If the | |||
cached revocation data is not sufficiently current, the EAP-TLS peer | cached revocation data is not sufficiently current, the EAP-TLS peer | |||
or EAP-TLS server MAY force a full TLS handshake. | or EAP-TLS server MAY force a full TLS handshake. | |||
There are two ways to retrieve the cached data from the original full | There are two ways to retrieve the cached data from the original full | |||
handshake. The first method is that the EAP-TLS server and client | handshake. The first method is that the EAP-TLS server and client | |||
cache the information locally. The cached information is identified | cache the information locally. The cached information is identified | |||
by an identifier. For TLS versions before 1.3, the identifier can be | by an identifier. For TLS versions before 1.3, the identifier can be | |||
the session ID, for TLS 1.3, the identifier is the PSK identity. The | the session ID; for TLS 1.3, the identifier is the PSK identity. The | |||
second method for retrieving cached information is via [RFC5077] or | second method for retrieving cached information is via [RFC5077] or | |||
[RFC8446], where the EAP-TLS server avoids storing information | [RFC8446], where the EAP-TLS server avoids storing information | |||
locally and instead encapsulates the information into a ticket which | locally and instead encapsulates the information into a ticket that | |||
is sent to the client for storage. This ticket is encrypted using a | is sent to the client for storage. This ticket is encrypted using a | |||
key that only the EAP-TLS server knows. Note that the client still | key that only the EAP-TLS server knows. Note that the client still | |||
needs to cache the original handshake information locally and will | needs to cache the original handshake information locally and will | |||
obtain it while determining the session ID or PSK identity to use for | obtain it while determining the session ID or PSK identity to use for | |||
resumption. However, the EAP-TLS server is able to decrypt the | resumption. However, the EAP-TLS server is able to decrypt the | |||
ticket or PSK to obtain the original handshake information. | ticket or PSK to obtain the original handshake information. | |||
The EAP-TLS server or EAP client MUST cache data during the initial | The EAP-TLS server or EAP client MUST cache data during the initial | |||
full handshake sufficient to allow authorization decisions to be made | full handshake sufficient to allow authorization decisions to be made | |||
during resumption. If cached data cannot be retrieved securely, | during resumption. If cached data cannot be retrieved securely, | |||
resumption MUST NOT be done. | resumption MUST NOT be done. | |||
The above requirements also apply if the EAP-TLS server expects some | The above requirements also apply if the EAP-TLS server expects some | |||
system to perform accounting for the session. Since accounting must | system to perform accounting for the session. Since accounting must | |||
be tied to an authenticated identity, and resumption does not supply | be tied to an authenticated identity, and resumption does not supply | |||
such an identity, accounting is impossible without access to cached | such an identity, accounting is impossible without access to cached | |||
data. Therefore, systems which expect to perform accounting for the | data. Therefore, systems that expect to perform accounting for the | |||
session SHOULD cache an identifier which can be used in subsequent | session SHOULD cache an identifier that can be used in subsequent | |||
accounting. | accounting. | |||
As suggested in [RFC8446], EAP-TLS peers MUST NOT store resumption | As suggested in [RFC8446], EAP-TLS peers MUST NOT store resumption | |||
PSKs or tickets (and associated cached data) for longer than 604800 | PSKs or tickets (and associated cached data) for longer than 604800 | |||
seconds (7 days), regardless of the PSK or ticket lifetime. The EAP- | seconds (7 days) regardless of the PSK or ticket lifetime. The EAP- | |||
TLS peer MAY delete them earlier based on local policy. The cached | TLS peer MAY delete them earlier based on local policy. The cached | |||
data MAY also be removed on the EAP-TLS server or EAP-TLS peer if any | data MAY also be removed on the EAP-TLS server or EAP-TLS peer if any | |||
certificate in the certificate chain has been revoked or has expired. | certificate in the certificate chain has been revoked or has expired. | |||
In all such cases, an attempt at resumption results in a full TLS | In all such cases, an attempt at resumption results in a full TLS | |||
handshake instead. | handshake instead. | |||
Information from the EAP-TLS exchange (e.g., the identity provided in | Information from the EAP-TLS exchange (e.g., the identity provided in | |||
EAP-Response/Identity) as well as non-EAP information (e.g., IP | EAP-Response/Identity) as well as non-EAP information (e.g., IP | |||
addresses) may change between the initial full handshake and | addresses) may change between the initial full handshake and | |||
resumption. This change creates a "time-of-check time-of-use" | resumption. This change creates a "time-of-check time-of-use" | |||
skipping to change at page 27, line 50 ¶ | skipping to change at line 1235 ¶ | |||
information that has changed between the initial full handshake and | information that has changed between the initial full handshake and | |||
resumption, and if change may lead to a different decision, such | resumption, and if change may lead to a different decision, such | |||
decisions MUST be reevaluated. It is RECOMMENDED that authorization, | decisions MUST be reevaluated. It is RECOMMENDED that authorization, | |||
accounting, and policy decisions are reevaluated based on the | accounting, and policy decisions are reevaluated based on the | |||
information given in the resumption. EAP-TLS servers MAY reject | information given in the resumption. EAP-TLS servers MAY reject | |||
resumption where the information supplied during resumption does not | resumption where the information supplied during resumption does not | |||
match the information supplied during the original authentication. | match the information supplied during the original authentication. | |||
If a safe decision is not possible, EAP-TLS servers SHOULD reject the | If a safe decision is not possible, EAP-TLS servers SHOULD reject the | |||
resumption and continue with a full handshake. | resumption and continue with a full handshake. | |||
Section 2.2 and 4.2.11 of [RFC8446] provides security considerations | Sections 2.2 and 4.2.11 of [RFC8446] provide security considerations | |||
for TLS 1.3 resumption. | for TLS 1.3 resumption. | |||
5.8. Privacy Considerations | 5.8. Privacy Considerations | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
TLS 1.3 offers much better privacy than earlier versions of TLS as | TLS 1.3 offers much better privacy than earlier versions of TLS as | |||
discussed in Section 2.1.8. In this section, we only discuss the | discussed in Section 2.1.8. In this section, we only discuss the | |||
privacy properties of EAP-TLS with TLS 1.3. For privacy properties | privacy properties of EAP-TLS with TLS 1.3. For privacy properties | |||
of TLS 1.3 itself, see [RFC8446]. | of TLS 1.3 itself, see [RFC8446]. | |||
EAP-TLS sends the standard TLS 1.3 handshake messages encapsulated in | EAP-TLS sends the standard TLS 1.3 handshake messages encapsulated in | |||
EAP packets. Additionally, the EAP-TLS peer sends an identity in the | EAP packets. Additionally, the EAP-TLS peer sends an identity in the | |||
first EAP-Response. The other fields in the EAP-TLS Request and the | first EAP-Response. The other fields in the EAP-TLS Request and the | |||
EAP-TLS Response packets do not contain any cleartext privacy- | EAP-TLS Response packets do not contain any cleartext privacy- | |||
sensitive information. | sensitive information. | |||
Tracking of users by eavesdropping on identity responses or | Tracking of users by eavesdropping on Identity Responses or | |||
certificates is a well-known problem in many EAP methods. When EAP- | certificates is a well-known problem in many EAP methods. When EAP- | |||
TLS is used with TLS 1.3, all certificates are encrypted, and the | TLS is used with TLS 1.3, all certificates are encrypted, and the | |||
username part of the identity response is not revealed (e.g., using | username part of the Identity Response is not revealed (e.g., using | |||
anonymous NAIs). Note that even though all certificates are | anonymous NAIs). Note that even though all certificates are | |||
encrypted, the server's identity is only protected against passive | encrypted, the server's identity is only protected against passive | |||
attackers while the client's identity is protected against both | attackers while the client's identity is protected against both | |||
passive and active attackers. As with other EAP methods, even when | passive and active attackers. As with other EAP methods, even when | |||
privacy-friendly identifiers or EAP tunneling is used, the domain | privacy-friendly identifiers or EAP tunneling is used, the domain | |||
name (i.e., the realm) in the NAI is still typically visible. How | name (i.e., the realm) in the NAI is still typically visible. How | |||
much privacy-sensitive information the domain name leaks is highly | much privacy-sensitive information the domain name leaks is highly | |||
dependent on how many other users are using the same domain name in | dependent on how many other users are using the same domain name in | |||
the particular access network. If all EAP-TLS peers have the same | the particular access network. If all EAP-TLS peers have the same | |||
domain, no additional information is leaked. If a domain name is | domain, no additional information is leaked. If a domain name is | |||
used by a small subset of the EAP-TLS peers, it may aid an attacker | used by a small subset of the EAP-TLS peers, it may aid an attacker | |||
in tracking or identifying the user. | in tracking or identifying the user. | |||
Without padding, information about the size of the client certificate | Without padding, information about the size of the client certificate | |||
is leaked from the size of the EAP-TLS packets. The EAP-TLS packets | is leaked from the size of the EAP-TLS packets. The EAP-TLS packets | |||
sizes may therefore leak information that can be used to track or | sizes may therefore leak information that can be used to track or | |||
identify the user. If all client certificates have the same length, | identify the user. If all client certificates have the same length, | |||
no information is leaked. EAP-TLS peers SHOULD use record padding, | no information is leaked. EAP-TLS peers SHOULD use record padding; | |||
see Section 5.4 of [RFC8446] to reduce information leakage of | see Section 5.4 of [RFC8446] to reduce information leakage of | |||
certificate sizes. | certificate sizes. | |||
If anonymous NAIs are not used, the privacy-friendly identifiers need | If anonymous NAIs are not used, the privacy-friendly identifiers need | |||
to be generated with care. The identities MUST be generated in a | to be generated with care. The identities MUST be generated in a | |||
cryptographically secure way so that it is computationally infeasible | cryptographically secure way so that it is computationally infeasible | |||
for an attacker to differentiate two identities belonging to the same | for an attacker to differentiate two identities belonging to the same | |||
user from two identities belonging to different users in the same | user from two identities belonging to different users in the same | |||
realm. This can be achieved, for instance, by using random or | realm. This can be achieved, for instance, by using random or | |||
pseudo-random usernames such as random byte strings or ciphertexts | pseudo-random usernames such as random byte strings or ciphertexts | |||
and only using the pseudo-random usernames a single time. Note that | and only using the pseudo-random usernames a single time. Note that | |||
the privacy-friendly usernames also MUST NOT include substrings that | the privacy-friendly usernames also MUST NOT include substrings that | |||
can be used to relate the identity to a specific user. Similarly, | can be used to relate the identity to a specific user. Similarly, | |||
privacy-friendly username MUST NOT be formed by a fixed mapping that | privacy-friendly usernames MUST NOT be formed by a fixed mapping that | |||
stays the same across multiple different authentications. | stays the same across multiple different authentications. | |||
An EAP-TLS peer with a policy allowing communication with EAP-TLS | An EAP-TLS peer with a policy allowing communication with EAP-TLS | |||
servers supporting only TLS 1.2 without privacy and with a static RSA | servers supporting only TLS 1.2 without privacy and with a static RSA | |||
key exchange is vulnerable to disclosure of the EAP-TLS peer | key exchange is vulnerable to disclosure of the EAP-TLS peer | |||
username. An active attacker can in this case make the EAP-TLS peer | username. An active attacker can in this case make the EAP-TLS peer | |||
believe that an EAP-TLS server supporting TLS 1.3 only supports TLS | believe that an EAP-TLS server supporting TLS 1.3 only supports TLS | |||
1.2 without privacy. The attacker can simply impersonate the EAP-TLS | 1.2 without privacy. The attacker can simply impersonate the EAP-TLS | |||
server and negotiate TLS 1.2 with static RSA key exchange and send an | server and negotiate TLS 1.2 with static RSA key exchange and send a | |||
TLS alert message when the EAP-TLS peer tries to use privacy by | TLS alert message when the EAP-TLS peer tries to use privacy by | |||
sending an empty certificate message. Since the attacker | sending an empty certificate message. Since the attacker | |||
(impersonating the EAP-TLS server) does not provide a proof-of- | (impersonating the EAP-TLS server) does not provide a proof-of- | |||
possession of the private key until the Finished message when a | possession of the private key until the Finished message when a | |||
static RSA key exchange is used, an EAP-TLS peer may inadvertently | static RSA key exchange is used, an EAP-TLS peer may inadvertently | |||
disclose its identity (username) to an attacker. Therefore, it is | disclose its identity (username) to an attacker. Therefore, it is | |||
RECOMMENDED for EAP-TLS peers to not use EAP-TLS with TLS 1.2 and | RECOMMENDED for EAP-TLS peers to not use EAP-TLS with TLS 1.2 and | |||
static RSA based cipher suites without privacy. This implies that an | static RSA-based cipher suites without privacy. This implies that an | |||
EAP-TLS peer SHOULD NOT continue the EAP authentication attempt if a | EAP-TLS peer SHOULD NOT continue the EAP authentication attempt if a | |||
TLS 1.2 EAP-TLS server sends an EAP-TLS/Request with a TLS alert | TLS 1.2 EAP-TLS server sends an EAP-TLS/Request with a TLS alert | |||
message in response to an empty certificate message from the peer. | message in response to an empty certificate message from the peer. | |||
5.9. Pervasive Monitoring | 5.9. Pervasive Monitoring | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
Pervasive monitoring refers to widespread surveillance of users. In | Pervasive monitoring refers to widespread surveillance of users. In | |||
the context of EAP-TLS, pervasive monitoring attacks can target EAP- | the context of EAP-TLS, pervasive monitoring attacks can target EAP- | |||
TLS peer devices for tracking them (and their users) as and when they | TLS peer devices for tracking them (and their users) when they join a | |||
join a network. By encrypting more information, mandating the use of | network. By encrypting more information, mandating the use of | |||
privacy, and always providing forward secrecy, EAP-TLS with TLS 1.3 | privacy, and always providing forward secrecy, EAP-TLS with TLS 1.3 | |||
offers much better protection against pervasive monitoring. In | offers much better protection against pervasive monitoring. In | |||
addition to the privacy attacks discussed above, surveillance on a | addition to the privacy attacks discussed above, surveillance on a | |||
large scale may enable tracking of a user over a wide geographical | large scale may enable tracking of a user over a wide geographical | |||
area and across different access networks. Using information from | area and across different access networks. Using information from | |||
EAP-TLS together with information gathered from other protocols | EAP-TLS together with information gathered from other protocols | |||
increases the risk of identifying individual users. | increases the risk of identifying individual users. | |||
In TLS 1.3, the post-handshake key update mechanism provides forward | ||||
secrecy for the traffic secrets. EAP-TLS 1.3 does not provide a | ||||
similar mechanism for MSK and EMSK. Implementation using the | ||||
exported MSK and EMSK can achieve forward secrecy by frequently | ||||
deriving new keys in a similar way as described in Section 7.2 of | ||||
[RFC8446]. | ||||
5.10. Discovered Vulnerabilities | 5.10. Discovered Vulnerabilities | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
Over the years, there have been several serious attacks on earlier | Over the years, there have been several serious attacks on earlier | |||
versions of Transport Layer Security (TLS), including attacks on its | versions of Transport Layer Security (TLS), including attacks on its | |||
most commonly used ciphers and modes of operation. [RFC7457] | most commonly used ciphers and modes of operation. [RFC7457] | |||
summarizes the attacks that were known at the time of publishing and | summarizes the attacks that were known at the time of publishing, and | |||
BCP 195 [RFC7525] [RFC8996] provides recommendations and requirements | BCP 195 [RFC7525] [RFC8996] provides recommendations and requirements | |||
for improving the security of deployed services that use TLS. | for improving the security of deployed services that use TLS. | |||
However, many of the attacks are less serious for EAP-TLS as EAP-TLS | However, many of the attacks are less serious for EAP-TLS as EAP-TLS | |||
only uses the TLS handshake and does not protect any application | only uses the TLS handshake and does not protect any application | |||
data. EAP-TLS implementations MUST mitigate known attacks. EAP-TLS | data. EAP-TLS implementations MUST mitigate known attacks. EAP-TLS | |||
implementations need to monitor and follow new EAP and TLS related | implementations need to monitor and follow new EAP- and TLS-related | |||
security guidance and requirements such as [RFC8447] and | security guidance and requirements such as [RFC8447] and [RFC9155]. | |||
[I-D.ietf-tls-md5-sha1-deprecate]. | ||||
5.11. Cross-Protocol Attacks | 5.11. Cross-Protocol Attacks | |||
This is a new section when compared to [RFC5216]. | This is a new section when compared to [RFC5216]. | |||
Allowing the same certificate to be used in multiple protocols can | Allowing the same certificate to be used in multiple protocols can | |||
potentially allow an attacker to authenticate via one protocol, and | potentially allow an attacker to authenticate via one protocol and | |||
then "resume" that session in another protocol. Section 2.2 above | then "resume" that session in another protocol. Section 2.2 suggests | |||
suggests that certificates typically have one or more FQDNs in the | that certificates typically have one or more FQDNs in the SAN | |||
SAN extension. However, those fields are for EAP validation only, | extension. However, those fields are for EAP validation only and do | |||
and do not indicate that the certificates are suitable for use on WWW | not indicate that the certificates are suitable for use with HTTPS or | |||
(or other) protocol server on the named host. | other protocols on the named host. | |||
Section 2.1.3 above suggests that authorization rules should be re- | Section 2.1.3 suggests that authorization rules should be reapplied | |||
applied on resumption, but does not mandate this behavior. As a | on resumption but does not mandate this behavior. As a result, this | |||
result, this cross-protocol resumption could allow the attacker to | cross-protocol resumption could allow the attacker to bypass | |||
bypass authorization policies, and to obtain undesired access to | authorization policies and to obtain undesired access to secured | |||
secured systems. Along with making sure that appropriate | systems. Along with making sure that appropriate authorization | |||
authorization information is available and used during resumption, | information is available and used during resumption, using different | |||
using different certificates and resumption caches for different | certificates and resumption caches for different protocols is | |||
protocols is RECOMMENDED to help keep different protocol usages | RECOMMENDED to help keep different protocol usages separate. | |||
separate. | ||||
6. References | 6. References | |||
6.1. Normative References | 6.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 31, line 40 ¶ | skipping to change at line 1423 ¶ | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
6.2. Informative references | 6.2. Informative references | |||
[IEEE-802.1X] | ||||
Institute of Electrical and Electronics Engineers, "IEEE | ||||
Standard for Local and metropolitan area networks -- Port- | ||||
Based Network Access Control", IEEE Standard 802.1X-2020 , | ||||
February 2020. | ||||
[IEEE-802.11] | [IEEE-802.11] | |||
Institute of Electrical and Electronics Engineers, "IEEE | IEEE, "IEEE Standard for Information technology- | |||
Standard for Information technology—Telecommunications and | Telecommunications and information exchange between | |||
information exchange between systems Local and | systems Local and metropolitan area networks-Specific | |||
metropolitan area networks—Specific requirements - Part | requirements - Part 11: Wireless LAN Medium Access Control | |||
11: Wireless LAN Medium Access Control (MAC) and Physical | (MAC) and Physical Layer (PHY) Specifications", IEEE | |||
Layer (PHY) Specifications", IEEE Standard 802.11-2020 , | Std. 802.11-2020, DOI 10.1109/IEEESTD.2016.7786995, | |||
February 2021. | February 2021, | |||
<https://doi.org/10.1109/IEEESTD.2016.7786995>. | ||||
[IEEE-802.1AE] | [IEEE-802.1AE] | |||
Institute of Electrical and Electronics Engineers, "IEEE | IEEE, "IEEE Standard for Local and metropolitan area | |||
Standard for Local and metropolitan area networks -- Media | networks -- Media Access Control (MAC) Security", IEEE | |||
Access Control (MAC) Security", IEEE Standard | Std. 802.1AE-2018, DOI 10.1109/IEEESTD.2018.8585421, | |||
802.1AE-2018 , December 2018. | December 2018, | |||
<https://doi.org/10.1109/IEEESTD.2018.8585421>. | ||||
[TS.33.501] | [IEEE-802.1X] | |||
3GPP, "Security architecture and procedures for 5G | IEEE, "IEEE Standard for Local and Metropolitan Area | |||
System", 3GPP TS 33.501 17.3.0, September 2021. | Networks--Port-Based Network Access Control", IEEE Std. | |||
802.1X-2020, DOI 10.1109/IEEESTD.2020.9018454, February | ||||
2020, <https://doi.org/10.1109/IEEESTD.2020.9018454>. | ||||
[MulteFire] | [MulteFire] | |||
MulteFire, "MulteFire Release 1.1 specification", 2019. | MulteFire Alliance, "MulteFire Release 1.1 Specification", | |||
2019. | ||||
[PEAP] Microsoft Corporation, "[MS-PEAP]: Protected Extensible | [PEAP] Microsoft Corporation, "[MS-PEAP]: Protected Extensible | |||
Authentication Protocol (PEAP)", June 2021. | Authentication Protocol (PEAP)", June 2021. | |||
[RFC1661] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)", | [RFC1661] Simpson, W., Ed., "The Point-to-Point Protocol (PPP)", | |||
STD 51, RFC 1661, DOI 10.17487/RFC1661, July 1994, | STD 51, RFC 1661, DOI 10.17487/RFC1661, July 1994, | |||
<https://www.rfc-editor.org/info/rfc1661>. | <https://www.rfc-editor.org/info/rfc1661>. | |||
[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | |||
RFC 2246, DOI 10.17487/RFC2246, January 1999, | RFC 2246, DOI 10.17487/RFC2246, January 1999, | |||
skipping to change at page 35, line 18 ¶ | skipping to change at line 1578 ¶ | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8447] Salowey, J. and S. Turner, "IANA Registry Updates for TLS | [RFC8447] Salowey, J. and S. Turner, "IANA Registry Updates for TLS | |||
and DTLS", RFC 8447, DOI 10.17487/RFC8447, August 2018, | and DTLS", RFC 8447, DOI 10.17487/RFC8447, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8447>. | <https://www.rfc-editor.org/info/rfc8447>. | |||
[RFC8996] Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS | [RFC8996] Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS | |||
1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, March 2021, | 1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, March 2021, | |||
<https://www.rfc-editor.org/info/rfc8996>. | <https://www.rfc-editor.org/info/rfc8996>. | |||
[I-D.ietf-tls-md5-sha1-deprecate] | [RFC9155] Velvindron, L., Moriarty, K., and A. Ghedini, "Deprecating | |||
Velvindron, L., Moriarty, K., and A. Ghedini, "Deprecating | MD5 and SHA-1 Signature Hashes in TLS 1.2 and DTLS 1.2", | |||
MD5 and SHA-1 signature hashes in (D)TLS 1.2", Work in | RFC 9155, DOI 10.17487/RFC9155, December 2021, | |||
Progress, Internet-Draft, draft-ietf-tls-md5-sha1- | <https://www.rfc-editor.org/info/rfc9155>. | |||
deprecate-09, 20 September 2021, | ||||
<https://www.ietf.org/archive/id/draft-ietf-tls-md5-sha1- | ||||
deprecate-09.txt>. | ||||
[I-D.ietf-emu-eaptlscert] | [RFC9191] Sethi, M., Preuß Mattsson, J., and S. Turner, "Handling | |||
Sethi, M., Mattsson, J., and S. Turner, "Handling Large | Large Certificates and Long Certificate Chains in TLS- | |||
Certificates and Long Certificate Chains in TLS-based EAP | Based EAP Methods", RFC 9191, DOI 10.17487/RFC9191, | |||
Methods", Work in Progress, Internet-Draft, draft-ietf- | February 2022, <https://www.rfc-editor.org/rfc/rfc9191>. | |||
emu-eaptlscert-08, 20 November 2020, | ||||
<https://www.ietf.org/archive/id/draft-ietf-emu- | ||||
eaptlscert-08.txt>. | ||||
[I-D.ietf-tls-ticketrequests] | [TICKET-REQUESTS] | |||
Pauly, T., Schinazi, D., and C. A. Wood, "TLS Ticket | Pauly, T., Schinazi, D., and C. A. Wood, "TLS Ticket | |||
Requests", Work in Progress, Internet-Draft, draft-ietf- | Requests", Work in Progress, Internet-Draft, draft-ietf- | |||
tls-ticketrequests-07, 3 December 2020, | tls-ticketrequests-07, 3 December 2020, | |||
<https://www.ietf.org/archive/id/draft-ietf-tls- | <https://datatracker.ietf.org/doc/html/draft-ietf-tls- | |||
ticketrequests-07.txt>. | ticketrequests-07>. | |||
[I-D.ietf-emu-tls-eap-types] | [TLS-bis] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", Work in Progress, Internet-Draft, draft- | ||||
ietf-tls-rfc8446bis-03, 25 October 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-tls- | ||||
rfc8446bis-03>. | ||||
[TLS-EAP-TYPES] | ||||
DeKok, A., "TLS-based EAP types and TLS 1.3", Work in | DeKok, A., "TLS-based EAP types and TLS 1.3", Work in | |||
Progress, Internet-Draft, draft-ietf-emu-tls-eap-types-03, | Progress, Internet-Draft, draft-ietf-emu-tls-eap-types-04, | |||
22 June 2021, <https://www.ietf.org/archive/id/draft-ietf- | 21 January 2022, <https://datatracker.ietf.org/doc/html/ | |||
emu-tls-eap-types-03.txt>. | draft-ietf-emu-tls-eap-types-04>. | |||
[I-D.ietf-tls-rfc8446bis] | [TS.33.501] | |||
Rescorla, E., "The Transport Layer Security (TLS) Protocol | 3GPP, "Security architecture and procedures for 5G | |||
Version 1.3", Work in Progress, Internet-Draft, draft- | system", Release 17, TS 33.501, January 2022. | |||
ietf-tls-rfc8446bis-02, 23 August 2021, | ||||
<https://www.ietf.org/archive/id/draft-ietf-tls- | ||||
rfc8446bis-02.txt>. | ||||
Appendix A. Updated References | Appendix A. Updated References | |||
All the following references in [RFC5216] are updated as specified | The following references in [RFC5216] are updated as specified below | |||
below when EAP-TLS is used with TLS 1.3. | when EAP-TLS is used with TLS 1.3. | |||
All references to [RFC2560] are updated to refer to [RFC6960]. | * All references to [RFC2560] are updated to refer to [RFC6960]. | |||
All references to [RFC3280] are updated to refer to [RFC5280]. | * All references to [RFC3280] are updated to refer to [RFC5280]. | |||
References to Section 4.2.1.13 of [RFC3280] are updated to refer to | References to Section 4.2.1.13 of [RFC3280] are updated to refer | |||
Section 4.2.1.12 of [RFC5280]. | to Section 4.2.1.12 of [RFC5280]. | |||
All references to [RFC4282] are updated to refer to [RFC7542]. | * All references to [RFC4282] are updated to refer to [RFC7542]. | |||
References to Section 2.1 of [RFC4282] are updated to refer to | References to Section 2.1 of [RFC4282] are updated to refer to | |||
Section 2.2 of [RFC7542]. | Section 2.2 of [RFC7542]. | |||
Acknowledgments | Acknowledgments | |||
The authors want to thank Bernard Aboba, Jari Arkko, Terry Burton, | The authors want to thank Bernard Aboba, Jari Arkko, Terry Burton, | |||
Alan DeKok, Ari Keraenen, Benjamin Kaduk, Jouni Malinen, Oleg Pekar, | Alan DeKok, Ari Keränen, Benjamin Kaduk, Jouni Malinen, Oleg Pekar, | |||
Eric Rescorla, Jim Schaad, Joseph Salowey, Martin Thomson, Vesa | Eric Rescorla, Jim Schaad, Joseph Salowey, Martin Thomson, Vesa | |||
Torvinen, Hannes Tschofenig, and Heikki Vatiainen for comments and | Torvinen, Hannes Tschofenig, and Heikki Vatiainen for comments and | |||
suggestions on the draft. Special thanks to the document shepherd | suggestions on this document. Special thanks to the Document | |||
Joseph Salowey. | Shepherd Joseph Salowey. | |||
Contributors | Contributors | |||
Alan DeKok, FreeRADIUS | Alan DeKok, FreeRADIUS | |||
Authors' Addresses | Authors' Addresses | |||
John Preuß Mattsson | John Preuß Mattsson | |||
Ericsson | Ericsson | |||
SE-164 40 Stockholm | SE-164 40 Kista | |||
Sweden | Sweden | |||
Email: john.mattsson@ericsson.com | Email: john.mattsson@ericsson.com | |||
Mohit Sethi | Mohit Sethi | |||
Ericsson | Ericsson | |||
FI-02420 Jorvas | FI-02420 Jorvas | |||
Finland | Finland | |||
Email: mohit@piuha.net | Email: mohit@iki.fi | |||
End of changes. 127 change blocks. | ||||
366 lines changed or deleted | 370 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |