rfc9427xml2.original.xml | rfc9427.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="utf-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!DOCTYPE rfc [ | |||
C.2119.xml"> | <!ENTITY nbsp " "> | |||
<!ENTITY RFC3748 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY zwsp "​"> | |||
C.3748.xml"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY RFC5216 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | <!ENTITY wj "⁠"> | |||
C.5216.xml"> | ||||
<!ENTITY RFC5705 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5705.xml"> | ||||
<!ENTITY RFC7170 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7170.xml"> | ||||
<!ENTITY RFC8126 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8126.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8174.xml"> | ||||
<!ENTITY RFC8446 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.8446.xml"> | ||||
<!ENTITY RFC9190 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.9190.xml"> | ||||
<!ENTITY I-D.josefsson-pppext-eap-tls-eap SYSTEM "https://xml2rfc.ietf.org/publi | ||||
c/rfc/bibxml3/reference.I-D.josefsson-pppext-eap-tls-eap.xml"> | ||||
<!ENTITY RFC1994 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.1994.xml"> | ||||
<!ENTITY RFC2433 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2433.xml"> | ||||
<!ENTITY RFC2759 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.2759.xml"> | ||||
<!ENTITY RFC4137 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.4137.xml"> | ||||
<!ENTITY RFC4851 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.4851.xml"> | ||||
<!ENTITY RFC5281 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5281.xml"> | ||||
<!ENTITY RFC5422 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.5422.xml"> | ||||
<!ENTITY RFC7542 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7542.xml"> | ||||
<!ENTITY RFC7585 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
C.7585.xml"> | ||||
]> | ]> | |||
<rfc submissionType="IETF" docName="draft-ietf-emu-tls-eap-types-13" category="s | ||||
td" updates="4851, 5281, 7170" ipr="trust200902"> | ||||
<!-- Generated by id2xml 1.5.0 on 2023-03-01T23:53:37Z --> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc text-list-symbols="o*+-"?> | ||||
<?rfc toc="yes"?> | ||||
<front> | ||||
<title>TLS-based EAP types and TLS 1.3</title> | ||||
<author fullname="Alan DeKok" initials="A." surname="DeKok"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
<organization>The FreeRADIUS Server Project</organization> | std" consensus="true" docName="draft-ietf-emu-tls-eap-types-13" number="9427" up | |||
dates="4851, 5281, 7170" ipr="trust200902" obsoletes="" xml:lang="en" symRefs="t | ||||
rue" sortRefs="true" tocInclude="true" version="3"> | ||||
<front> | ||||
<title abbrev="TLS-Based EAP Types for Use with TLS 1.3">TLS-Based Extensibl | ||||
e Authentication Protocol (EAP) Types for Use with TLS 1.3</title> | ||||
<seriesInfo name="RFC" value="9427"/> | ||||
<author fullname="Alan DeKok" initials="A." surname="DeKok"> | ||||
<organization abbrev="FreeRADIUS">The FreeRADIUS Server Project</organizat | ||||
ion> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<city></city> | <city/> | |||
<region></region> | <region/> | |||
<country></country> | <country/> | |||
</postal> | </postal> | |||
<email>aland@freeradius.org</email> | <email>aland@freeradius.org</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2023" month="March"/> | <date year="2023" month="June"/> | |||
<abstract><t> | <area>sec</area> | |||
EAP-TLS (RFC 5216) has been updated for TLS 1.3 in RFC 9190. Many | <workgroup>emu</workgroup> | |||
other EAP types also depend on TLS, such as EAP-FAST (RFC 4851), EAP- | ||||
TTLS (RFC 5281), TEAP (RFC 7170), and possibly many vendor specific | ||||
EAP methods. This document updates those methods in order to use the | ||||
new key derivation methods available in TLS 1.3. Additional changes | ||||
necessitated by TLS 1.3 are also discussed.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section title="Introduction" anchor="sect-1"><t> | ||||
EAP-TLS has been updated for TLS 1.3 in <xref target="RFC9190"/>. Many other | ||||
EAP | ||||
types also depend on TLS, such as EAP-FAST <xref target="RFC4851"/>, EAP-TTLS | ||||
<xref target="RFC5281"/>, TEAP <xref target="RFC7170"/>, and possibly many ve | ||||
ndor specific EAP | ||||
methods such as PEAP <xref target="I-D.josefsson-pppext-eap-tls-eap"/>. All | ||||
of these methods use key derivation | ||||
functions which are no longer applicable to TLS 1.3. As such, all of | ||||
those methods are incompatible with TLS 1.3.</t> | ||||
<t> | <abstract> | |||
This document updates those methods in order to be used with TLS 1.3. | <t> | |||
The Extensible Authentication Protocol-TLS (EAP-TLS) (RFC 5216) has been upda | ||||
ted for TLS | ||||
1.3 in RFC 9190. Many other EAP Types | ||||
also depend on TLS, such as EAP-Flexible Authentication via Secure Tunneling | ||||
(EAP-FAST) (RFC 4851), EAP-Tunneled TLS (EAP-TTLS) (RFC 5281), the Tunnel Extens | ||||
ible Authentication Protocol (TEAP) (RFC 7170). It is possible that many vendor- | ||||
specific EAP methods, such as the Protected Extensible Authentication Protocol ( | ||||
PEAP), depend on TLS as well. This document | ||||
updates those methods in order to use the new key derivation methods | ||||
available in TLS 1.3. Additional changes necessitated by TLS 1.3 are also | ||||
discussed.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="sect-1" numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t> | ||||
EAP-TLS has been updated for TLS 1.3 in <xref target="RFC9190" format="defaul | ||||
t"/>. Many other EAP | ||||
Types also depend on TLS, such as EAP-FAST <xref target="RFC4851" format="def | ||||
ault"/>, EAP-TTLS | ||||
<xref target="RFC5281" format="default"/>, and TEAP <xref target="RFC7170" fo | ||||
rmat="default"/>. It is possible that many vendor-specific EAP | ||||
methods, such as PEAP <xref target="I-D.josefsson-pppext-eap-tls-eap" format= | ||||
"default"/>, depend on TLS as well. All of these methods use key derivation | ||||
functions that are no longer applicable to TLS 1.3; thus, these methods are i | ||||
ncompatible with TLS 1.3.</t> | ||||
<t> | ||||
This document updates these methods in order to be used with TLS 1.3. | ||||
These changes involve defining new key derivation functions. We also | These changes involve defining new key derivation functions. We also | |||
discuss implementation issues in order to highlight differences | discuss implementation issues in order to highlight differences | |||
between TLS 1.3 and earlier versions of TLS.</t> | between TLS 1.3 and earlier versions of TLS.</t> | |||
<section anchor="sect-1.1" numbered="true" toc="default"> | ||||
<name>Requirements Language</name> | ||||
<t> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | ||||
IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="sect-2" numbered="true" toc="default"> | ||||
<name>Using TLS-Based EAP Methods with TLS 1.3</name> | ||||
<section title="Requirements Language" anchor="sect-1.1"><t> | <t> | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | In general, all of the requirements in <xref target="RFC9190" format="default | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "/> apply to other EAP | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | ||||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, the | ||||
y appear in all | ||||
capitals, as shown here.</t> | ||||
</section> | ||||
</section> | ||||
<section title="Using TLS-based EAP methods with TLS 1.3" anchor="sect-2" | ||||
><t> | ||||
In general, all of the requirements of <xref target="RFC9190"/> apply to othe | ||||
r EAP | ||||
methods that wish to use TLS 1.3. Unless otherwise required herein, | methods that wish to use TLS 1.3. Unless otherwise required herein, | |||
implementations of EAP methods that wish to use TLS 1.3 MUST follow | implementations of EAP methods that wish to use TLS 1.3 <bcp14>MUST</bcp14> f | |||
the guidelines in <xref target="RFC9190"/>.</t> | ollow | |||
the guidelines in <xref target="RFC9190" format="default"/>.</t> | ||||
<t> | <t> | |||
There remain some differences between EAP-TLS and other TLS-based EAP | There remain some differences between EAP-TLS and other TLS-based EAP | |||
methods which are addressed by this document. The main difference is | methods that are addressed by this document. The main difference is | |||
that <xref target="RFC9190"/> uses the EAP-TLS Type (value 0x0D) in a number | that <xref target="RFC9190" format="default"/> uses the EAP-TLS Type (value 0 | |||
of | x0D) in a number of | |||
calculations, whereas other method types will use their own Type | calculations, whereas other method types will use their own Type | |||
value instead of the EAP-TLS Type value. This topic is discussed | value instead of the EAP-TLS Type value. This topic is discussed | |||
further below in <xref target="sect-2.1"/>.</t> | further in <xref target="sect-2.1" format="default"/>.</t> | |||
<t> | ||||
<t> | An additional difference is that <xref target="RFC9190" sectionFormat="comma" | |||
An additional difference is that <xref target="RFC9190"/> <xref target="sect- | section="2.5"/> requires the EAP server to send a | |||
2.5"/> requires that | protected success result indication | |||
once the EAP-TLS handshake has completed, the EAP server sends a | once the EAP-TLS handshake has completed. This indication is composed of | |||
protected success result indication. This indication is composed of | ||||
one octet (0x00) of application data. Other TLS-based EAP methods | one octet (0x00) of application data. Other TLS-based EAP methods | |||
also use this result indication, but only during resumption. When | also use this result indication, but only during resumption. When | |||
other TLS-based EAP methods use full authentication, the result | other TLS-based EAP methods use full authentication, the result | |||
indication is not needed, and is not used. This topic is explained | indication is not needed or used. This topic is explained | |||
in more detail below, in <xref target="sect-3"/> and <xref target="sect-4"/>. | in more detail in Sections <xref target="sect-3" format="counter"/> and <xref | |||
</t> | target="sect-4" format="counter"/>.</t> | |||
<t> | ||||
<t> | Finally, this document includes clarifications on how various TLS- | |||
Finally, the document includes clarifications on how various TLS- | ||||
based parameters are calculated when using TLS 1.3. These parameters | based parameters are calculated when using TLS 1.3. These parameters | |||
are different for each EAP method, so they are discussed separately.</t> | are different for each EAP method, so they are discussed separately.</t> | |||
<section anchor="sect-2.1" numbered="true" toc="default"> | ||||
<section title="Key Derivation" anchor="sect-2.1"><t> | <name>Key Derivation</name> | |||
<t> | ||||
The key derivation for TLS-based EAP methods depends on the value of | The key derivation for TLS-based EAP methods depends on the value of | |||
the EAP Type as defined by <xref target="IANA"/> in the Extensible Authentica | the EAP Type as defined by <xref target="IANA" format="default"/> in the "Ext | |||
tion | ensible Authentication | |||
Protocol (EAP) Registry. The most important definition is of the | Protocol (EAP) Registry". The most important definition is of the | |||
Type field, as first defined in <xref target="RFC3748"/> Section 2:</t> | Type field, as first defined in <xref target="RFC3748" sectionFormat="comma" | |||
section="2"/>:</t> | ||||
<figure><artwork><![CDATA[ | <t indent="3">Type = value of the EAP Method type</t> | |||
Type = value of the EAP Method type | <t> | |||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
For the purposes of this specification, when we refer to logical | For the purposes of this specification, when we refer to logical | |||
Type, we mean that the logical Type is defined to be 1 octet for | Type, we mean that the logical Type is defined as one octet for | |||
values smaller than 254 (the value for the Expanded Type), and when | values smaller than 254 (the value for the Expanded Type). When | |||
Expanded EAP Types are used, the logical Type is defined to be the | Expanded EAP Types are used, the logical Type is defined as the | |||
concatenation of the fields required to define the Expanded Type, | concatenation of the fields required to define the Expanded Type, | |||
including the Type with value 0xfe, Vendor-Id (in network byte order) | including the Type with value 0xfe, Vendor-Id (in network byte order), | |||
and Vendor-Type fields (in network byte order) defined in <xref target="RFC37 | and Vendor-Type fields (in network byte order) defined in <xref target="R | |||
48"/> | FC3748" sectionFormat="comma" section="5.7"/>, as given below:</t> | |||
Section 5.7, as given below:</t> | ||||
<figure><artwork><![CDATA[ | <artwork name="" type=""><![CDATA[ | |||
Type = 0xFE || Vendor-Id || Vendor-Type | Type = 0xFE || Vendor-Id || Vendor-Type | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | This definition does not alter the meaning of Type in <xref target="RFC3748" | |||
This definition does not alter the meaning of Type in <xref target="RFC3748"/ | format="default"/> or | |||
>, or | ||||
change the structure of EAP packets. Instead, this definition allows | change the structure of EAP packets. Instead, this definition allows | |||
us to simplify references to EAP Types, by using a logical "Type" | us to simplify references to EAP Types by using a logical "Type" | |||
instead of referring to "the Type field or the Type field with value 0xfe, pl us the Vendor-ID and Vendor-Type". For example, the value of | instead of referring to "the Type field or the Type field with value 0xfe, pl us the Vendor-ID and Vendor-Type". For example, the value of | |||
Type for PEAP is simply 0x19.</t> | Type for PEAP is simply 0x19.</t> | |||
<t> | ||||
<t> | Note that unlike TLS 1.2 and earlier, the calculation of the TLS-Exporter fun | |||
Note that unlike TLS 1.2 and earlier, the calculation of TLS-Exporter | ction | |||
depends on the length passed to it. Implementations therefore MUST | depends on the length passed to it. Therefore, implementations <bcp14>MUST</ | |||
bcp14> | ||||
pass the correct length instead of passing a large length and | pass the correct length instead of passing a large length and | |||
truncating the output. Any output calculated using a larger length | truncating the output. Any output calculated using a larger length | |||
value, and which is then truncated, will be different from the output | value, which is then truncated, will be different from the output | |||
which was calculated using the correct length.</t> | that was calculated using the correct length.</t> | |||
<t> | ||||
<t> | ||||
Unless otherwise discussed below, the key derivation functions for | Unless otherwise discussed below, the key derivation functions for | |||
all TLS-based EAP Types are defined in <xref target="RFC9190"/> <xref target= "sect-2.3"/>, and | all TLS-based EAP Types are defined in <xref target="RFC9190" sectionFormat=" comma" section="2.3"/> and | |||
reproduced here for clarity. These definitions include ones for the | reproduced here for clarity. These definitions include ones for the | |||
Master Session Key (MSK) and the Extended Master Session Key (EMSK):</t> | Master Session Key (MSK) and the Extended Master Session Key (EMSK):</t> | |||
<artwork name="" type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | 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 | MSK = Key_Material(0, 63) | |||
MSK = Key_Material(0, 63) | EMSK = Key_Material(64, 127) | |||
EMSK = Key_Material(64, 127) | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | We note that these definitions reuse the EAP-TLS exporter labels | |||
We note that these definitions re-use the EAP-TLS exporter labels, | ||||
and change the derivation only by adding a dependency on the logical | and change the derivation only by adding a dependency on the logical | |||
Type. The reason for this change is simplicity. The inclusion of | Type. The reason for this change is simplicity. The inclusion of | |||
the EAP type makes the derivation method-specific. There is no need | the EAP Type makes the derivation method specific. There is no need | |||
to use different labels for different EAP types, as was done earlier.</t> | to use different labels for different EAP Types as was done earlier.</t> | |||
<t> | ||||
<t> | These definitions apply in their entirety to EAP-TTLS <xref target="RFC5281" | |||
These definitions apply in their entirety to EAP-TTLS <xref target="RFC5281"/ | format="default"/> and | |||
> and | PEAP as defined in <xref target="I-D.josefsson-pppext-eap-tls-eap" format="de | |||
PEAP as defined in <xref target="I-D.josefsson-pppext-eap-tls-eap"/> and <xre | fault"/> and <xref target="MSPEAP" format="default"/>. Some definitions apply t | |||
f target="MSPEAP"/>. Some definitions apply to | o | |||
EAP-FAST and TEAP, with exceptions as noted below.</t> | EAP-FAST and TEAP with exceptions as noted below.</t> | |||
<t> | ||||
<t> | It is <bcp14>RECOMMENDED</bcp14> that vendor-defined and TLS-based EAP method | |||
It is RECOMMENDED that vendor-defined TLS-based EAP methods use the | s use the | |||
above definitions for TLS 1.3. There is no compelling reason to use | above definitions for TLS 1.3. There is no compelling reason to use | |||
different definitions.</t> | different definitions.</t> | |||
</section> | ||||
</section> | <section anchor="sect-2.2" numbered="true" toc="default"> | |||
<name>TEAP</name> | ||||
<section title="TEAP" anchor="sect-2.2"><t> | <t> | |||
TEAP previously used a Protected Access Credential (PAC), which is | TEAP previously used a Protected Access Credential (PAC), which is | |||
functionally equivalent to session tickets provided by TLS 1.3 which | functionally equivalent to session tickets provided by TLS 1.3 that | |||
contain a pre-shared key (PSK) along with other data. As such, the | contain a pre-shared key (PSK) along with other data. As such, the | |||
use of a PAC is deprecated for TEAP in TLS 1.3. PAC provisioning as | use of a PAC is deprecated for TEAP in TLS 1.3. PAC provisioning, as | |||
defined in <xref target="RFC7170"/> Section 3.8.1 is also no longer part of T | defined in <xref target="RFC7170" sectionFormat="comma" section="3.8.1"/>, is | |||
EAP | also no longer part of TEAP | |||
when TLS 1.3 is used.</t> | when TLS 1.3 is used.</t> | |||
<t> | ||||
<t> | <xref target="RFC7170" sectionFormat="comma" section="5.2"/> gives a definiti | |||
<xref target="RFC7170"/> Section 5.2 gives a definition for the Inner Method | on for the Inner Method Session | |||
Session | Key (IMSK), which depends on the TLS Pseudorandom Function (PRF) (also known | |||
Key (IMSK), which depends on the TLS-PRF. When the j'th inner method | as TLS-PRF). When the j'th inner method | |||
generates an EMSK, we update that definition for TLS 1.3 as:</t> | generates an EMSK, we update that definition for TLS 1.3 as:</t> | |||
<artwork name="" type=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | IMSK[j] = TLS-Exporter("TEAPbindkey@ietf.org", secret, 32) | |||
IMSK[j] = TLS-Exporter("TEAPbindkey@ietf.org", secret, 32) | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | ||||
The secret is the EMSK or MSK from the j'th inner method. When an | The secret is the EMSK or MSK from the j'th inner method. When an | |||
inner method does not provide an EMSK or MSK, IMSK[j] is 32 octets of | inner method does not provide an EMSK or MSK, IMSK[j] is 32 octets of | |||
zero.</t> | zero.</t> | |||
<t> | ||||
<t> | ||||
The other key derivations for TEAP are given here. All derivations | The other key derivations for TEAP are given here. All derivations | |||
not given here are the same as given above in the previous section. | not given here are the same as given above in the previous section. | |||
These derivations are also used for EAP-FAST, but using the EAP-FAST | These derivations are also used for EAP-FAST, but using the EAP-FAST | |||
Type.</t> | Type.</t> | |||
<t> | ||||
The derivation of the IMSKs, Inner Method | ||||
Compound Keys (IMCKs), and Compound Session Keys (CMKs) is given below.</t> | ||||
<artwork name="" type=""><![CDATA[ | ||||
session_key_seed = TLS-Exporter("EXPORTER: teap session key seed", | ||||
Type, 40) | ||||
<t> | S-IMCK[0] = session_key_seed | |||
The derivation of the Inner Method Session Keys (IMSK), Inner Method | For j = 1 to n-1 do | |||
Compound Keys (IMCK), and Compound Session Keys (CMK) is given below.</t> | IMCK[j] = TLS-Exporter("EXPORTER: Inner Methods Compound Keys", | |||
S-IMCK[j-1] || IMSK[j], 60) | ||||
<figure><artwork><![CDATA[ | S-IMCK[j] = first 40 octets of IMCK[j] | |||
session_key_seed = TLS-Exporter("EXPORTER: teap session key seed", | CMK[j] = last 20 octets of IMCK[j] | |||
Type, 40) | ||||
S-IMCK[0] = session_key_seed | ||||
For j = 1 to n-1 do | ||||
IMCK[j] = TLS-Exporter("EXPORTER: Inner Methods Compound Keys", | ||||
S-IMCK[j-1] || IMSK[j], 60) | ||||
S-IMCK[j] = first 40 octets of IMCK[j] | ||||
CMK[j] = last 20 octets of IMCK[j] | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | <t indent="3"> | |||
<t> | Note: In these definitions, || denotes concatenation.</t> | |||
In these definitions, || denotes concatenation.</t> | <t> | |||
In TLS 1.3, the derivation of IMCK[j] uses both a different label | ||||
<t> | and a different order of concatenating fields than what was used by TEAP | |||
In TLS 1.3, the derivation of IMCK[j] uses both a different label, | ||||
and a different order of concatenating fields, than was used by TEAP | ||||
with TLS 1.2. Similarly, the session_key_seed in TLS 1.3 uses the | with TLS 1.2. Similarly, the session_key_seed in TLS 1.3 uses the | |||
Type as the context, where in TLS 1.2 the context was a zero-length | Type as the context. In TLS 1.2, the context was a zero-length | |||
field.</t> | field.</t> | |||
<t> | ||||
<t> | ||||
The outer MSK and EMSK are then derived from the final ("n"th) inner | The outer MSK and EMSK are then derived from the final ("n"th) inner | |||
method, as follows:</t> | method, as follows:</t> | |||
<figure><artwork><![CDATA[ | <artwork name="" type=""><![CDATA[ | |||
MSK = TLS-Exporter("EXPORTER: Session Key Generating Function", | MSK = TLS-Exporter( | |||
S-IMCK[n], 64) | "EXPORTER: Session Key Generating Function", | |||
S-IMCK[n], 64) | ||||
EMSK = TLS-Exporter("EXPORTER: Extended Session Key Generating Function", | EMSK = TLS-Exporter( | |||
S-IMCK[n], 64) | "EXPORTER: Extended Session Key Generating Function", | |||
S-IMCK[n], 64) | ||||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | The TEAP Compound Message Authentication Code (MAC) defined in <xref target=" | |||
The TEAP Compound MAC defined in <xref target="RFC7170"/> Section 5.3 remains | RFC7170" sectionFormat="comma" section="5.3"/> remains the | |||
the | same, but the MAC for TLS 1.3 is | |||
same, but the message authentication code (MAC) for TLS 1.3 is | computed with the Hashed Message Authentication Code (HMAC) algorithm negotia | |||
computed with the HMAC algorithm negotiated for HKDF in the key | ted for the HMAC-based Key Derivation Function (HKDF) in the key | |||
schedule, as per section 7.1 of RFC 8446. That is, the MAC used is | schedule, as per <xref target="RFC8446" sectionFormat="comma" section="7.1"/> | |||
the MAC derived from the TLS handshake.</t> | . That is, the MAC used is | |||
the MAC derived from the TLS handshake:</t> | ||||
<figure><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
Compound-MAC = MAC( CMK[n], BUFFER ) | Compound-MAC = MAC( CMK[n], BUFFER ) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | where we define CMK[n] as the CMK taken from the final ("n"th) inner | |||
Where we define CMK[n] as the CMK taken from the final ("n"th) inner | ||||
method.</t> | method.</t> | |||
<t> | ||||
For TLS 1.3, the MAC is computed with | ||||
the HMAC algorithm negotiated for HKDF in the key schedule, as per <xref targ | ||||
et="RFC8446" sectionFormat="comma" section="7.1"/>. | ||||
<t> | That is, the MAC used is the MAC derived | |||
For TLS 1.3, the message authentication code (MAC) is computed with | ||||
the HMAC algorithm negotiated for HKDF in the key schedule, as per | ||||
section 7.1 of RFC 8446. That is, the MAC used is the MAC derived | ||||
from the TLS handshake.</t> | from the TLS handshake.</t> | |||
<t> | ||||
<t> | The definition of BUFFER is unchanged from <xref target="RFC7170" sectionForm | |||
The definition of BUFFER is unchanged from <xref target="RFC7170"/> Section 5 | at="comma" section="5.3"/>.</t> | |||
.3.</t> | <section anchor="sect-2.2.1" numbered="true" toc="default"> | |||
<name>Client Certificates</name> | ||||
<section title="Client Certificates" anchor="sect-2.2.1"><t> | <t> | |||
The use of client certificates is still permitted when using TEAP | The use of client certificates is still permitted when using TEAP | |||
with TLS 1.3. However, if the client certificate is accepted, then | with TLS 1.3. However, if the client certificate is accepted, then | |||
the EAP peer MUST proceed with additional authentication of Phase 2, | the EAP peer <bcp14>MUST</bcp14> proceed with additional authentication of Ph | |||
as per <xref target="RFC7170"/> Section 7.6. If there is no Phase 2 data, th | ase 2, | |||
en the EAP server MUST reject the session.</t> | as per <xref target="RFC7170" sectionFormat="comma" section="7.6"/>. If ther | |||
e is no Phase 2 data, then the EAP server <bcp14>MUST</bcp14> reject the session | ||||
<t> | .</t> | |||
That is, while <xref target="RFC7170"/> Section 7.6 permits "Authentication o | <t> | |||
f the client via client certificate during phase 1, with no additional authentic | While <xref target="RFC5281" sectionFormat="comma" section="7.6"/> permits "a | |||
ation or information exchange required.", this practice is | uthentication of the client via client certificate during phase 1, with no addit | |||
ional authentication or information exchange required," this practice is | ||||
forbidden when TEAP is used with TLS 1.3. If there is a requirement | forbidden when TEAP is used with TLS 1.3. If there is a requirement | |||
to use client certificates with no inner tunnel methods, then EAP-TLS | to use client certificates with no inner tunnel methods, then EAP-TLS | |||
should be used instead of TEAP.</t> | should be used instead of TEAP.</t> | |||
<t> | ||||
<t> | <xref target="RFC7170" sectionFormat="comma" section="7.4.1"/> suggests that | |||
<xref target="RFC7170"/> Section 7.4.1 suggest that client certificates shoul | client certificates should be | |||
d be | sent in Phase 2 of the TEAP exchange "since TLS client certificates are sent | |||
sent in Phase 2 of the TEAP exchange, "since TLS client certificates are sent | in the clear". While TLS 1.3 no longer sends client | |||
in the clear". While TLS 1.3 no longer sends client | ||||
certificates in the clear, TEAP implementations need to distinguish | certificates in the clear, TEAP implementations need to distinguish | |||
identities for both User and Machine using the Identity-Type TLV | identities for both User and Machine using the Identity-Type TLV | |||
(with values 1 and 2, respectively). When a client certificate is | (with values 1 and 2, respectively). When a client certificate is | |||
sent outside of the TLS tunnel, it MUST include Identity-Type as an | sent outside of the TLS tunnel, it <bcp14>MUST</bcp14> include Identity-Type | |||
outer TLV, in order to signal the type of identity which that client | as an | |||
outer TLV in order to signal the type of identity which that client | ||||
certificate is for.</t> | certificate is for.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-2.3" numbered="true" toc="default"> | ||||
</section> | <name>EAP-FAST</name> | |||
<t> | ||||
<section title="EAP-FAST" anchor="sect-2.3"><t> | For EAP-FAST, the session_key_seed is also part of the key_block as | |||
For EAP-FAST, the session_key_seed is also part of the key_block, as | defined in <xref target="RFC4851" sectionFormat="comma" section="5.1"/>.</t> | |||
defined in <xref target="RFC4851"/> Section 5.1.</t> | <t> | |||
The definitions of S-IMCK[n], MSK, and EMSK are the same as given | ||||
<t> | ||||
The definition of S-IMCK[n], MSK, and EMSK are the same as given | ||||
above for TEAP. We reiterate that the EAP-FAST Type must be used | above for TEAP. We reiterate that the EAP-FAST Type must be used | |||
when deriving the session_key_seed, and not the TEAP Type.</t> | when deriving the session_key_seed and not the TEAP Type.</t> | |||
<t> | ||||
<t> | Unlike <xref target="RFC4851" sectionFormat="comma" section="5.2"/>, the defi | |||
Unlike <xref target="RFC4851"/> Section 5.2, the definition of IMCK[j] places | nition of IMCK[j] places the | |||
the | reference to S-IMCK after the textual label and then concatenates the | |||
reference to S-IMCK after the textual label, and the concatenates the | IMSK instead of the MSK.</t> | |||
IMSK instead of MSK.</t> | <t> | |||
EAP-FAST previously used a PAC that is functionally equivalent to | ||||
<t> | session tickets provided by TLS 1.3, which contain a PSK along with other dat | |||
EAP-FAST previously used a PAC, which is functionally equivalent to | a. As such, the use of a PAC is deprecated | |||
session tickets provided by TLS 1.3 which contain a pre-shared key | for EAP-FAST in TLS 1.3. PAC provisioning <xref target="RFC5422" format="defa | |||
(PSK) along with other data. As such, the use of a PAC is deprecated | ult"/> is also no longer | |||
for EAP-FAST in TLS 1.3. PAC provisioning <xref target="RFC5422"/> is also no | ||||
longer | ||||
part of EAP-FAST when TLS 1.3 is used.</t> | part of EAP-FAST when TLS 1.3 is used.</t> | |||
<t> | ||||
<t> | The T-PRF given in <xref target="RFC4851" sectionFormat="comma" section="5.5" | |||
The T-PRF given in <xref target="RFC4851"/> Section 5.5 is not used for TLS 1 | /> is not used for TLS 1.3. | |||
.3. | ||||
Instead, it is replaced with the TLS 1.3 TLS-Exporter function.</t> | Instead, it is replaced with the TLS 1.3 TLS-Exporter function.</t> | |||
<section anchor="sect-2.3.1" numbered="true" toc="default"> | ||||
<section title="Client Certificates" anchor="sect-2.3.1"><t> | <name>Client Certificates</name> | |||
<t> | ||||
The use of client certificates is still permitted when using EAP-FAST | The use of client certificates is still permitted when using EAP-FAST | |||
with TLS 1.3. However, if the client certificate is accepted, then | with TLS 1.3. However, if the client certificate is accepted, then | |||
the EAP peer MUST proceed with additional authentication of Phase 2, | the EAP peer <bcp14>MUST</bcp14> proceed with additional authentication of Ph | |||
as per <xref target="RFC4851"/> Section 7.4.1. If there is no Phase 2 data, | ase 2, | |||
then | as per <xref target="RFC4851" sectionFormat="comma" section="7.4.1"/>. If th | |||
the EAP server MUST reject the session.</t> | ere is no Phase 2 data, then | |||
the EAP server <bcp14>MUST</bcp14> reject the session.</t> | ||||
<t> | <t> | |||
That is, while <xref target="RFC4851"/> implicitly permits the use of client | While <xref target="RFC4851" format="default"/> implicitly permits the use of | |||
client | ||||
certificates without proceeding to Phase 2, this practice is | certificates without proceeding to Phase 2, this practice is | |||
forbidden when EAP-FAST is used with TLS 1.3. If there is a | forbidden when EAP-FAST is used with TLS 1.3. If there is a | |||
requirement to use client certificates with no inner tunnel methods, | requirement to use client certificates with no inner tunnel methods, | |||
then EAP-TLS should be used instead of EAP-FAST.</t> | then EAP-TLS should be used instead of EAP-FAST.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-2.4" numbered="true" toc="default"> | ||||
</section> | <name>EAP-TTLS</name> | |||
<t> | ||||
<section title="EAP-TTLS" anchor="sect-2.4"><t> | <xref target="RFC5281" sectionFormat="comma" section="11.1"/> defines an impl | |||
<xref target="RFC5281"/> Section 11.1 defines an implicit challenge when the | icit challenge when the inner | |||
inner | methods of the Challenge Handshake Authentication Protocol (CHAP) <xref targe | |||
methods of CHAP <xref target="RFC1994"/>, MS-CHAP <xref target="RFC2433"/>, o | t="RFC1994" format="default"/>, Microsoft CHAP (MS-CHAP) <xref target="RFC2433" | |||
r MS-CHAPv2 <xref target="RFC2759"/> | format="default"/>, or MS-CHAPv2 <xref target="RFC2759" format="default"/> | |||
are used. The derivation for TLS 1.3 is instead given as</t> | are used. The derivation for TLS 1.3 is instead given as:</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<figure><artwork><![CDATA[ | ||||
EAP-TTLS_challenge = TLS-Exporter("ttls challenge",, n) | EAP-TTLS_challenge = TLS-Exporter("ttls challenge",, n) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | <t> | |||
<t> | There is no "context_value" (<xref target="RFC8446" sectionFormat="comma" sec | |||
There is no "context_value" (<xref target="RFC8446"/> Section 7.5) passed to | tion="7.5"/>) passed to the | |||
the | ||||
TLS-Exporter function. The value "n" given here is the length of the | TLS-Exporter function. The value "n" given here is the length of the | |||
data required, which <xref target="RFC5281"/> requires it to be 17 octets for | data required; <xref target="RFC5281" format="default"/> requires it to be 17 | |||
CHAP | octets for CHAP | |||
(Section 11.2.2) and MS-CHAPv2 (Section 11.2.4), and to be 9 octets | (<xref target="RFC5281" sectionFormat="comma" section="11.2.2"/>) and MS-CHAP | |||
for MS-CHAP (Section 11.2.3).</t> | v2 (<xref target="RFC5281" sectionFormat="comma" section="11.2.4"/>), and 9 octe | |||
ts | ||||
<t> | for MS-CHAP (<xref target="RFC5281" sectionFormat="comma" section="11.2.3"/>) | |||
When PAP, CHAP, or MS-CHAPv1 are used as inner authentication | .</t> | |||
<t> | ||||
When the Password Authentication Protocol (PAP), CHAP, or MS-CHAPv1 are used | ||||
as inner authentication | ||||
methods, there is no opportunity for the EAP server to send a | methods, there is no opportunity for the EAP server to send a | |||
protected success indication, as is done in <xref target="RFC9190"/> <xref ta rget="sect-2.5"/>. | protected success indication, as is done in <xref target="RFC9190" sectionFor mat="comma" section="2.5"/>. | |||
Instead, when TLS session tickets are disabled, the response from the | Instead, when TLS session tickets are disabled, the response from the | |||
EAP server MUST be either EAP-Success or EAP-Failure. These | EAP server <bcp14>MUST</bcp14> be either EAP-Success or EAP-Failure. These | |||
responses are unprotected, and can be forged by a skilled attacker.</t> | responses are unprotected and can be forged by a skilled attacker.</t> | |||
<t> | ||||
<t> | ||||
Where TLS session tickets are enabled, the response from the EAP | Where TLS session tickets are enabled, the response from the EAP | |||
server may also continue TLS negotiation with a TLS NewSessionTicket | server may also continue TLS negotiation with a TLS NewSessionTicket | |||
message. Since this message is protected by TLS, it can serve as the | message. Since this message is protected by TLS, it can serve as the | |||
protected success indication.</t> | protected success indication.</t> | |||
<t> | ||||
<t> | Therefore, it is <bcp14>RECOMMENDED</bcp14> that EAP servers always send a TL | |||
It is therefore RECOMMENDED that EAP servers always send a TLS | S | |||
NewSessionTicket message, even if resumption is not configured. When | NewSessionTicket message, even if resumption is not configured. When | |||
the EAP peer attempts to use the ticket, the EAP server can instead | the EAP peer attempts to use the ticket, the EAP server can instead | |||
request a full authentication. As noted earlier, implementations | request a full authentication. As noted earlier, implementations | |||
SHOULD NOT send TLS NewSessionTicket messages until the "inner tunnel" authen tication has completed, in order to take full advantage | <bcp14>SHOULD NOT</bcp14> send TLS NewSessionTicket messages until the "inner tunnel" authentication has completed in order to take full advantage | |||
of the message as a protected success indication.</t> | of the message as a protected success indication.</t> | |||
<t> | ||||
<t> | ||||
When resumption is not used, the TLS NewSessionTicket message is not | When resumption is not used, the TLS NewSessionTicket message is not | |||
available, and some authentication methods will not have a protected | available and some authentication methods will not have a protected | |||
success indication. While we would like to always have a protected | success indication. While we would like to always have a protected | |||
success indication, limitations of the underlying protocols, | success indication, limitations of the underlying protocols, | |||
implementations, and deployment requirements make that impossible.</t> | implementations, and deployment requirements make that impossible.</t> | |||
<t> | ||||
<t> | EAP peers <bcp14>MUST</bcp14> continue running their EAP state machine until | |||
EAP peers MUST continue running their EAP state machine until they | they | |||
receive either an EAP-Success, or an EAP-Failure. Receiving a TLS | receive either an EAP-Success or an EAP-Failure. Receiving a TLS | |||
NewSessionTicket message in response to inner method PAP, CHAP, or | NewSessionTicket message in response to inner method PAP, CHAP, or | |||
MS-CHAP authentication is normal, and MUST NOT be treated as a | MS-CHAP authentication is normal and <bcp14>MUST NOT</bcp14> be treated as a | |||
failure.</t> | failure.</t> | |||
<section anchor="sect-2.4.1" numbered="true" toc="default"> | ||||
<section title="Client Certificates" anchor="sect-2.4.1"><t> | <name>Client Certificates</name> | |||
<xref target="RFC5281"/> Section 7.6 permits "Authentication of the client vi | <t> | |||
a client certificate during phase 1, with no additional authentication or inform | <xref target="RFC5281" sectionFormat="comma" section="7.6"/> permits "authent | |||
ation exchange required.". This practice is forbidden when | ication of the client via client certificate during phase 1, with no additional | |||
authentication or information exchange required." This practice is forbidden whe | ||||
n | ||||
EAP-TTLS is used with TLS 1.3. If there is a requirement to use | EAP-TTLS is used with TLS 1.3. If there is a requirement to use | |||
client certificates with no inner tunnel methods, then EAP-TLS should | client certificates with no inner tunnel methods, then EAP-TLS should | |||
be used instead of EAP-TTLS.</t> | be used instead of EAP-TTLS.</t> | |||
<t> | ||||
<t> | ||||
The use of client certificates is still permitted when using EAP-TTLS | The use of client certificates is still permitted when using EAP-TTLS | |||
with TLS 1.3. However, if the client certificate is accepted, then | with TLS 1.3. However, if the client certificate is accepted, then | |||
the EAP peer MUST proceed with additional authentication of Phase 2, | the EAP peer <bcp14>MUST</bcp14> proceed with additional authentication of Ph | |||
as per <xref target="RFC5281"/> Section 7.2 and following. If there is no Ph | ase 2, | |||
ase 2 | as per <xref target="RFC5281" sectionFormat="comma" section="7.2"/>. If ther | |||
data, then the EAP server MUST reject the session.</t> | e is no Phase 2 | |||
data, then the EAP server <bcp14>MUST</bcp14> reject the session.</t> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section anchor="sect-2.5" numbered="true" toc="default"> | |||
<name>PEAP</name> | ||||
<section title="PEAP" anchor="sect-2.5"><t> | <t> | |||
When PEAP uses crypto binding, it uses a different key calculation | When PEAP uses crypto binding, it uses a different key calculation | |||
defined in <xref target="PEAP-MPPE"/> which consumes inner EAP method keying | defined in <xref target="PEAP-MPPE" format="default"/> that consumes inner EA | |||
material. The pseudo-random function (PRF+) used in <xref target="PEAP-MPPE" | P method keying | |||
/> is | material. The PRF+ function used in <xref target="PEAP-MPPE" format="default" | |||
not taken from the TLS exporter, but is instead calculated via a | /> is | |||
different method which is given in <xref target="PEAP-PRF"/>. That derivatio | not taken from the TLS exporter but is instead calculated via a | |||
n | different method that is given in <xref target="PEAP-PRF" format="default"/>. | |||
That derivation | ||||
remains unchanged in this specification.</t> | remains unchanged in this specification.</t> | |||
<t> | ||||
<t> | ||||
Note that the above derivation uses SHA-1, which may be formally | Note that the above derivation uses SHA-1, which may be formally | |||
deprecated in the near future.</t> | deprecated in the near future.</t> | |||
<t> | ||||
However, the PRF+ calculation uses a PEAP | ||||
Tunnel Key (TK), which is defined in <xref target="PEAP-TK" format="default"/ | ||||
> as: | ||||
<t> | </t> | |||
However, the pseudo-random function (PRF+) calculation uses a PEAP | <blockquote>... the TK is the first 60 octets of the Key_Material, as | |||
Tunnel Key which is defined in <xref target="PEAP-PRF"/> as: | specified in <xref target="RFC5216" format="default"/>: TLS-PRF-128 (maste | |||
r secret, "client EAP encryption", client.random || server.random).</blockquote> | ||||
<list> | <t> | |||
<t>... the TK is the first 60 octets of the Key_Material, as | We note that the text in <xref target="PEAP-PRF" format="default"/> does not | |||
specified in <xref target="RFC5216"/>: TLS-PRF-128 (master secret, "client | define Key_Material. | |||
EAP encryption", client.random || server.random).</t> | Instead, it defines TK as the first octets of Key_Material and gives | |||
</list></t> | a definition of Key_Material that is appropriate for TLS versions | |||
<t> | ||||
We note that the text in <xref target="PEAP-PRF"/> does not define Key_Materi | ||||
al. | ||||
Instead, it defines TK as the first octets of Key_Material, and gives | ||||
a definition of Key_Material which is appropriate for TLS versions | ||||
before TLS 1.3.</t> | before TLS 1.3.</t> | |||
<t> | ||||
<t> | ||||
For TLS 1.3, the TK should be derived from the Key_Material defined | For TLS 1.3, the TK should be derived from the Key_Material defined | |||
here in <xref target="sect-2.1"/>, instead of using the TLS-PRF-128 derivatio | here in <xref target="sect-2.1" format="default"/> instead of using the TLS-P | |||
n | RF-128 derivation | |||
given in <xref target="PEAP-PRF"/>. The method defined in <xref target="PEAP | given in <xref target="PEAP-PRF" format="default"/>. The method defined in < | |||
-TK"/> MUST NOT be | xref target="PEAP-TK" format="default"/> <bcp14>MUST NOT</bcp14> be | |||
used.</t> | used.</t> | |||
<section anchor="sect-2.5.1" numbered="true" toc="default"> | ||||
<section title="Client Certificates" anchor="sect-2.5.1"><t> | <name>Client Certificates</name> | |||
As with EAP-TTLS, <xref target="I-D.josefsson-pppext-eap-tls-eap"/> permits t | <t> | |||
he use of client certificates in | As with EAP-TTLS, <xref target="I-D.josefsson-pppext-eap-tls-eap" format="def | |||
ault"/> permits the use of client certificates in | ||||
addition to inner tunnel methods. The practice of using client | addition to inner tunnel methods. The practice of using client | |||
certificates with no "inner method" is forbidden when PEAP is used | certificates with no "inner method" is forbidden when PEAP is used | |||
with TLS 1.3. If there is a requirement to use client certificates | with TLS 1.3. If there is a requirement to use client certificates | |||
with no inner tunnel methods, then EAP-TLS should be used instead of | with no inner tunnel methods, then EAP-TLS should be used instead of | |||
PEAP.</t> | PEAP.</t> | |||
<t> | ||||
<t> | ||||
The use of client certificates is still permitted when using PEAP | The use of client certificates is still permitted when using PEAP | |||
with TLS 1.3. However, if the client certificate is accepted, then | with TLS 1.3. However, if the client certificate is accepted, then | |||
the EAP peer MUST proceed with additional authentication of the inner | the EAP peer <bcp14>MUST</bcp14> proceed with additional authentication of th e inner | |||
tunnel. If there is no inner tunnel authentication data, then the | tunnel. If there is no inner tunnel authentication data, then the | |||
EAP server MUST reject the session.</t> | EAP server <bcp14>MUST</bcp14> reject the session.</t> | |||
</section> | ||||
</section> | </section> | |||
</section> | ||||
</section> | <section anchor="sect-3" numbered="true" toc="default"> | |||
<name>Application Data</name> | ||||
</section> | <t> | |||
<section title="Application Data" anchor="sect-3"><t> | ||||
Unlike previous TLS versions, TLS 1.3 can continue negotiation after | Unlike previous TLS versions, TLS 1.3 can continue negotiation after | |||
the initial TLS handshake has been completed, which TLS 1.3 calls the | the initial TLS handshake has been completed; TLS 1.3 calls this the | |||
"CONNECTED" state. Some implementations use receipt of a Finished | "CONNECTED" state. Some implementations use receipt of a Finished | |||
message as an indication that TLS negotiation has completed, and that | message as an indication that TLS negotiation has completed and that | |||
an "inner tunnel" session can now be negotiated. This assumption is | an "inner tunnel" session can now be negotiated. This assumption is | |||
not always correct with TLS 1.3.</t> | not always correct with TLS 1.3.</t> | |||
<t> | ||||
<t> | ||||
Earlier TLS versions did not send application data along with the | Earlier TLS versions did not send application data along with the | |||
Finished message. It was then possible for implementations to assume | Finished message. It was then possible for implementations to assume | |||
that a receipt of a Finished message also meant that there was no | that a receipt of a Finished message also meant that there was no | |||
application data available, and that another round trip was required.</t> | application data available and that another round trip was required.</t> | |||
<t> | ||||
<t> | ||||
This assumption is not true with TLS 1.3, and applications relying on | This assumption is not true with TLS 1.3, and applications relying on | |||
that behavior will not operate correctly with TLS 1.3.</t> | that behavior will not operate correctly with TLS 1.3.</t> | |||
<t> | ||||
<t> | As a result, implementations <bcp14>MUST</bcp14> check for application data o | |||
As a result, implementations MUST check for application data once the | nce the | |||
TLS session has been established. This check MUST be performed | TLS session has been established. This check <bcp14>MUST</bcp14> be performe | |||
d | ||||
before proceeding with another round trip of TLS negotiation. TLS- | before proceeding with another round trip of TLS negotiation. TLS- | |||
based EAP methods such as EAP-TTLS, PEAP, and EAP-FAST each have | based EAP methods, such as EAP-TTLS, PEAP, and EAP-FAST, each have | |||
method-specific application data which MUST be processed according to | method-specific application data that <bcp14>MUST</bcp14> be processed accord | |||
the EAP type.</t> | ing to | |||
the EAP Type.</t> | ||||
<t> | <t> | |||
TLS 1.3 in <xref target="RFC8446"/> Section 4.6.1 also permits NewSessionTick | TLS 1.3 in <xref target="RFC8446" sectionFormat="comma" section="4.6.1"/> als | |||
et | o permits NewSessionTicket | |||
messages to be sent after the server has received the client Finished | messages to be sent after the server has received the client Finished | |||
message, which is a change from earlier TLS versions. This change | message, which is a change from earlier TLS versions. This change | |||
can cause implementations to fail in a number of different ways, due | can cause implementations to fail in a number of different ways due | |||
to a reliance on implicit behavior seen in earlier TLS versions.</t> | to a reliance on implicit behavior seen in earlier TLS versions.</t> | |||
<t> | ||||
<t> | In order to correct this failure, we require that implementations | |||
In order to correct this failure, we require that if the underlying | <bcp14>MUST NOT</bcp14> send or expect to receive application data in the TLS | |||
TLS connection is still performing negotiation, then implementations | session if the underlying | |||
MUST NOT send, or expect to receive application data in the TLS | TLS connection is still performing negotiation. Implementations <bcp14>MUST< | |||
session. Implementations MUST delay processing of application data | /bcp14> delay processing of application data | |||
until such time as the TLS negotiation has finished. If the TLS | until such time as the TLS negotiation has finished. If the TLS | |||
negotiation is successful, then the application data can be examined. | negotiation is successful, then the application data can be examined. | |||
If the TLS negotiation is unsuccessful, then the application data is | If the TLS negotiation is unsuccessful, then the application data is | |||
untrusted, and therefore MUST be discarded without being examined.</t> | untrusted; therefore, it <bcp14>MUST</bcp14> be discarded without being exami | |||
ned.</t> | ||||
<t> | <t> | |||
The default for many TLS library implementations is to send a | The default for many TLS library implementations is to send a | |||
NewSessionTicket message immediately after, or along with, the | NewSessionTicket message immediately after or along with the | |||
Finished message. This ticket could be used for resumption, even if | Finished message. This ticket could be used for resumption, even if | |||
the "inner tunnel" authentication has not been completed. If the | the "inner tunnel" authentication has not been completed. If the | |||
ticket could be used, then it could allow a malicious EAP peer to | ticket could be used, then it could allow a malicious EAP peer to | |||
completely bypass the "inner tunnel" authentication.</t> | completely bypass the "inner tunnel" authentication.</t> | |||
<t> | ||||
<t> | Therefore, the EAP server <bcp14>MUST NOT</bcp14> permit any session ticket t | |||
Therefore, the EAP server MUST NOT permit any session ticket to | o | |||
successfully resume authentication, unless the inner tunnel | successfully resume authentication unless the inner tunnel | |||
authentication has completed successfully. The alternative would | authentication has completed successfully. The alternative would | |||
allow an attacker to bypass authentication by obtaining a session | allow an attacker to bypass authentication by obtaining a session | |||
ticket, and then immediately closing the current session, and | ticket, immediately closing the current session, and | |||
"resuming" using the session ticket.</t> | "resuming" using the session ticket.</t> | |||
<t> | ||||
<t> | To protect against that attack, implementations <bcp14>SHOULD NOT</bcp14> sen | |||
To protect against that attack, implementations SHOULD NOT send | d | |||
NewSessionTicket messages until the "inner tunnel" authentication has | NewSessionTicket messages until the "inner tunnel" authentication has | |||
completed. There is no reason to send session tickets which will | completed. There is no reason to send session tickets that will | |||
later be invalidated or ignored. However, we recognize that this | later be invalidated or ignored. However, we recognize that this | |||
suggestion may not always be possible to implement with some | suggestion may not always be possible to implement with some | |||
available TLS libraries. As such, EAP servers MUST take care to | available TLS libraries. As such, EAP servers <bcp14>MUST</bcp14> take care | |||
either invalidate or discard session tickets which are associated | to | |||
either invalidate or discard session tickets that are associated | ||||
with sessions that terminate in EAP Failure.</t> | with sessions that terminate in EAP Failure.</t> | |||
<t> | ||||
<t> | The NewSessionTicket message <bcp14>SHOULD</bcp14> also be sent along with ot | |||
The NewSessionTicket message SHOULD also be sent along with other | her | |||
application data, if possible. Sending that message alone prolongs | application data, if possible. Sending that message alone prolongs | |||
the packet exchange to no benefit. In addition to prolonging the | the packet exchange to no benefit. In addition to prolonging the | |||
packet exchange, using a separate NewSessionTicket message can lead | packet exchange, using a separate NewSessionTicket message can lead | |||
to non-interoperable implementations.</t> | to non-interoperable implementations.</t> | |||
<t> | ||||
<t> | <xref target="RFC9190" sectionFormat="comma" section="2.5"/> requires a prote | |||
<xref target="RFC9190"/> <xref target="sect-2.5"/> requires a protected resul | cted result indication, which indicates that TLS negotiation has finished. Meth | |||
t indication which | ods that use | |||
indicates that TLS negotiation has finished. Methods which use | "inner tunnel" methods <bcp14>MUST</bcp14> instead begin their "inner tunnel" | |||
"inner tunnel" methods MUST instead begin their "inner tunnel" | ||||
negotiation by sending Type-specific application data.</t> | negotiation by sending Type-specific application data.</t> | |||
<section anchor="sect-3.1" numbered="true" toc="default"> | ||||
<section title="Identities" anchor="sect-3.1"><t> | <name>Identities</name> | |||
For EAP-TLS, <xref target="RFC9190"/> Sections 2.1.3 and 2.1.7 recommend the | <t> | |||
use of | For EAP-TLS, Sections <xref target="RFC9190" sectionFormat="bare" section="2. | |||
anonymous Network Access Identifiers (NAIs) <xref target="RFC7542"/> in the E | 1.3"/> and <xref target="RFC9190" sectionFormat="bare" section="2.1.7"/> of <xre | |||
AP | f target="RFC9190"/> recommend the use of | |||
anonymous Network Access Identifiers (NAIs) <xref target="RFC7542" format="de | ||||
fault"/> in the EAP | ||||
Response/Identity packet. However, as EAP-TLS does not send | Response/Identity packet. However, as EAP-TLS does not send | |||
application data inside of the TLS tunnel, that specification does | application data inside of the TLS tunnel, that specification does | |||
not address the subject of "inner" identities in tunneled EAP | not address the subject of "inner" identities in tunneled EAP | |||
methods. This subject must, however, be addressed for the tunneled | methods. However, this subject must be addressed for the tunneled | |||
methods.</t> | methods.</t> | |||
<t> | ||||
<t> | Using an anonymous NAI for the outer identity as per <xref target="RFC7542" s | |||
Using an anonymous NAI for the outer identity as per <xref target="RFC7542"/> | ectionFormat="comma" section="2.4"/> has a few benefits. An NAI allows the EAP | |||
<xref target="sect-2.4"/> has a few benefits. An NAI allows the EAP session | session to be | |||
to be | routed in a AAA framework as described in <xref target="RFC7542" sectionForma | |||
routed in an AAA framework as described in <xref target="RFC7542"/> <xref tar | t="comma" section="3"/>. | |||
get="sect-3"/>. | ||||
Using an anonymous realm also ensures that user identifiers are kept | Using an anonymous realm also ensures that user identifiers are kept | |||
private.</t> | private.</t> | |||
<t> | ||||
<t> | ||||
As for the inner identity, we define it generically as the | As for the inner identity, we define it generically as the | |||
identification information carried inside of the TLS tunnel. For | identification information carried inside of the TLS tunnel. For | |||
PEAP, that identity may be an EAP Response/Identity. For EAP-TTLS, | PEAP, that identity may be an EAP Response/Identity. For EAP-TTLS, | |||
it may be the User-Name attribute. Vendor-specific EAP methods which | it may be the User-Name attribute. Vendor-specific EAP methods that | |||
use TLS will generally also have an inner identity. This identity is | use TLS will generally also have an inner identity. | |||
carried inside of the TLS tunnel, and is therefore both routed to the | This identity is | |||
correct destination by the outer identity, and kept private by the | carried inside of the TLS tunnel and is therefore both routed to the | |||
correct destination by the outer identity and kept private by the | ||||
use of TLS.</t> | use of TLS.</t> | |||
<t> | ||||
<t> | ||||
In other words, we can view the outer TLS layer of tunneled EAP | In other words, we can view the outer TLS layer of tunneled EAP | |||
methods as a secure transport layer which is responsible for getting | methods as a secure transport layer that is responsible for getting | |||
the actual (inner) authentication credentials securely from the EAP | the actual (inner) authentication credentials securely from the EAP | |||
peer to the EAP server. The EAP server then uses the inner identity | peer to the EAP server. The EAP server then uses the inner identity | |||
and inner authentication data to identify and authenticate a | and inner authentication data to identify and authenticate a | |||
particular user.</t> | particular user.</t> | |||
<t> | ||||
<t> | ||||
As the authentication data is routed to the correct destination, | As the authentication data is routed to the correct destination, | |||
there is little reason for the inner identity to also contain a | there is little reason for the inner identity to also contain a | |||
realm. We therefore have a few recommendations on the inner and | realm. Therefore, we have a few recommendations on the inner and | |||
outer identities, along with their relationship to each other.</t> | outer identities, along with their relationship to each other.</t> | |||
<t> | ||||
<t> | The outer identity <bcp14>SHOULD</bcp14> use an anonymous NAI realm that allo | |||
The outer identity SHOULD use an anonymous NAI realm, which allows | ws | |||
for both user privacy, and for the EAP session to be routed in an AAA | for both user privacy and for the EAP session to be routed in a AAA | |||
framework as described in <xref target="RFC7542"/> <xref target="sect-3"/>. | framework as described in <xref target="RFC7542" sectionFormat="comma" sectio | |||
Where NAI realms are | n="3"/>. Where NAI realms are | |||
not used, packets will not be routable outside of the local | not used, packets will not be routable outside of the local | |||
organization.</t> | organization.</t> | |||
<t> | ||||
<t> | The inner identity <bcp14>MUST NOT</bcp14> use an anonymous NAI realm. If an | |||
The inner identity MUST NOT use an anonymous NAI realm. If anonymous | onymous | |||
network access is desired, EAP peers MUST use EAP-TLS without peer | network access is desired, EAP peers <bcp14>MUST</bcp14> use EAP-TLS without | |||
authentication, as per <xref target="RFC9190"/> section 2.1.5. EAP servers M | peer | |||
UST | authentication, as per <xref target="RFC9190" sectionFormat="comma" section=" | |||
2.1.5"/>. EAP servers <bcp14>MUST</bcp14> | ||||
cause authentication to fail if an EAP peer uses an anonymous "inner" | cause authentication to fail if an EAP peer uses an anonymous "inner" | |||
identity for any TLS-based EAP method.</t> | identity for any TLS-based EAP method.</t> | |||
<t> | ||||
<t> | Implementations <bcp14>SHOULD NOT</bcp14> use inner identities that contain a | |||
Implementations SHOULD NOT use inner identities which contain an NAI | n NAI | |||
realm. Many organizations typically use only one realm for all user | realm. Many organizations typically use only one realm for all user | |||
accounts.</t> | accounts.</t> | |||
<t> | ||||
<t> | ||||
However, there are situations where it is useful for an inner | However, there are situations where it is useful for an inner | |||
identity to contain a realm. For example, an organization may have | identity to contain a realm. For example, an organization may have | |||
multiple independent sub-organizations, each with a different and | multiple independent sub-organizations, each with a different and | |||
unique realm. These realms may be independent of one another, or the | unique realm. These realms may be independent of one another, or the | |||
realms may be a subdomain (or subdomains) of the public outer realm.</t> | realms may be a subdomain (or subdomains) of the public outer realm.</t> | |||
<t> | ||||
<t> | ||||
In that case, an organization can configure one public "routing" | In that case, an organization can configure one public "routing" | |||
realm, and multiple separate "inner" realms. This separation of | realm and multiple separate "inner" realms. This separation of | |||
realms also allows an organization to split users into logical groups | realms also allows an organization to split users into logical groups | |||
by realm, where the "user" portion of the NAI may otherwise conflict. | by realm, where the "user" portion of the NAI may otherwise conflict. | |||
For example, "user@example.com" and "user@example.org" are different | For example, "user@example.com" and "user@example.org" are different | |||
NAIs which can both be used as inner identities.</t> | NAIs that can both be used as inner identities.</t> | |||
<t> | ||||
<t> | Using only one public realm both keeps internal information private | |||
Using only one public realm both keeps internal information private, | and simplifies realm management for external entities by | |||
and also simplifies realm management for external entities by | minimizing the number of realms that have to be tracked by them.</t> | |||
minimizing the number of realms which have to be tracked by them.</t> | <t> | |||
<t> | ||||
In most situations, routing identifiers should be associated with the | In most situations, routing identifiers should be associated with the | |||
authentication data that they are routing. For example, if a user | authentication data that they are routing. For example, if a user | |||
has an inner identity of "user@example.com", then it generally makes | has an inner identity of "user@example.com", then it generally makes | |||
little sense to have an outer identity of "@example.org". The | little sense to have an outer identity of "@example.org". The | |||
authentication request would then be routed to the "example.org" | authentication request would then be routed to the "example.org" | |||
domain, which may have no idea what to do with the credentials for | domain, which may have no idea what to do with the credentials for | |||
"user@example.com". At best, the authentication request would be | "user@example.com". At best, the authentication request would be | |||
discarded. At worst, the "example.org" domain could harvest user | discarded. At worst, the "example.org" domain could harvest user | |||
credentials for later use in attacks on "example.com".</t> | credentials for later use in attacks on "example.com".</t> | |||
<t> | ||||
<t> | When an EAP server receives an inner identity for a realm which it | |||
Where an EAP server receives an inner identity for a realm which it | is not authoritative, it <bcp14>MUST</bcp14> reject the authentication. | |||
is not authoritative, it MUST reject the authentication. There is no | There is no | |||
reason for one organization to authentication users from a different | reason for one organization to authenticate users from a different | |||
(and independent) organization.</t> | (and independent) organization.</t> | |||
<t> | ||||
<t> | ||||
In addition, associating inner/outer identities from different | In addition, associating inner/outer identities from different | |||
organizations in the same EAP authentication session means that | organizations in the same EAP authentication session means that | |||
otherwise unrelated realms are tied together, which can make networks | otherwise unrelated realms are tied together, which can make networks | |||
more fragile.</t> | more fragile.</t> | |||
<t> | ||||
<t> | For example, an organization that uses a "hosted" AAA provider may | |||
For example, an organization which uses a "hosted" AAA provider may | ||||
choose to use the realm of the AAA provider as the outer identity for | choose to use the realm of the AAA provider as the outer identity for | |||
user authentication. The inner identity can then be fully-qualified: | user authentication. The inner identity can then be fully qualified: | |||
user name plus realm of the organization. This practice may result | username plus realm of the organization. This practice may result | |||
in successful authentications, but it has practical difficulties.</t> | in successful authentications, but it has practical difficulties.</t> | |||
<t> | ||||
<t> | Additionally, an organization may host their own AAA servers but use | |||
For example, an organization may host their own AAA servers, but use | ||||
a "cloud" identity provider to hold user accounts. In that | a "cloud" identity provider to hold user accounts. In that | |||
situation, the organizations could see try to use their own realm as | situation, the organizations could try to use their own realm as | |||
the outer (routing) identity, then use an identity from the "cloud" | the outer (routing) identity and then use an identity from the "cloud" | |||
provider as the inner identity.</t> | provider as the inner identity.</t> | |||
<t> | ||||
<t> | This practice is <bcp14>NOT RECOMMENDED</bcp14>. User accounts for an organi | |||
This practice is NOT RECOMMENDED. User accounts for an organization | zation | |||
should be qualified as belonging to that organization, and not to an | should be qualified as belonging to that organization and not to an | |||
unrelated third party. There is no reason to tie the configuration | unrelated third party. | |||
of user systems to public realm routing, that configuration more | There is no reason to tie the configuration | |||
of user systems to public realm routing; that configuration more | ||||
properly belongs in the network.</t> | properly belongs in the network.</t> | |||
<t> | ||||
<t> | ||||
Both of these practices mean that changing "cloud" providers is | Both of these practices mean that changing "cloud" providers is | |||
difficult. When such a change happens, each individual EAP peer must | difficult. When such a change happens, each individual EAP peer must | |||
be updated with a different outer identity which points to the new | be updated with a different outer identity that points to the new | |||
"cloud" provider. This process can be expensive, and some EAP peers | "cloud" provider. This process can be expensive, and some EAP peers | |||
may not be online when this changeover happens. The result could be | may not be online when this changeover happens. The result could be | |||
devices or users who are unable to obtain network access, even if all | devices or users who are unable to obtain network access, even if all | |||
relevant network systems are online and functional.</t> | relevant network systems are online and functional.</t> | |||
<t> | ||||
<t> | Further, standards such as <xref target="RFC7585" format="default"/> allow fo | |||
Further, standards such as <xref target="RFC7585"/> allow for dynamic discove | r dynamic discovery of | |||
ry of | home servers for authentication. This specification has been widely | |||
home servers for authentication. That specification has been widely | deployed and means that there is minimal cost to routing | |||
deployed, and means that there is minimal cost to routing | ||||
authentication to a particular domain. The authentication can also | authentication to a particular domain. The authentication can also | |||
be routed to a particular identity provider, and changed at will, | be routed to a particular identity provider and changed at will | |||
with no loss of functionality. That specification is also scalable, | with no loss of functionality. That specification is also scalable | |||
in that it does not require changes to many systems when a domain | since it does not require changes to many systems when a domain | |||
updates its configuration. Instead, only one thing has to change: | updates its configuration. Instead, only one thing has to change: | |||
the configuration of that domain. Everything else is discovered | the configuration of that domain. Everything else is discovered | |||
dynamically.</t> | dynamically.</t> | |||
<t> | ||||
<t> | ||||
That is, changing the configuration for one domain is significantly | That is, changing the configuration for one domain is significantly | |||
simpler and more scalable than changing the configuration for | simpler and more scalable than changing the configuration for | |||
potentially millions of end-user devices.</t> | potentially millions of end-user devices.</t> | |||
<t> | ||||
<t> | We recognize that there may be existing use cases where the inner and | |||
We recognize that there may be existing use-cases where the inner and | ||||
outer identities use different realms. As such, we cannot forbid | outer identities use different realms. As such, we cannot forbid | |||
that practice. We hope that the discussion above shows not only why | that practice. We hope that the discussion above shows not only why | |||
such practices are problematic, but also that it shows how | such practices are problematic, but how | |||
alternative methods are more flexible, more scalable, and are easier | alternative methods are more flexible, more scalable, and are easier | |||
to manage.</t> | to manage.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-4" numbered="true" toc="default"> | ||||
</section> | <name>Resumption</name> | |||
<t> | ||||
<section title="Resumption" anchor="sect-4"><t> | <xref target="RFC9190" sectionFormat="comma" section="2.1.3"/> defines the pr | |||
<xref target="RFC9190"/> Section 2.1.3 defines the process for resumption. T | ocess for resumption. This | |||
his | process is the same for all TLS-based EAP Types. The only practical | |||
process is the same for all TLS-based EAP types. The only practical | difference is that the value of the Type field is different. The | |||
difference is that the value of the Type field is different. The | requirements on identities, use of TLS cipher suites, resumption, etc. remain | |||
requirements on identities, etc. remain unchanged from that document.</t> | unchanged from that document.</t> | |||
<t> | ||||
<t> | Note that if resumption is performed, then the EAP server <bcp14>MUST</bcp14> | |||
Note that if resumption is performed, then the EAP server MUST send | send | |||
the protected success result indication (one octet of 0x00) inside | the protected success result indication (one octet of 0x00) inside | |||
the TLS tunnel as per <xref target="RFC9190"/>. The EAP peer MUST in turn ch | the TLS tunnel, as per <xref target="RFC9190" format="default"/>. | |||
eck for | ||||
the existence the protected success result indication (one octet of | ||||
0x00), and cause authentication to fail if that octet is not | ||||
received. If either peer or server instead initiates an inner tunnel | ||||
method, then that method MUST be followed, and inner authentication | ||||
MUST NOT be skipped.</t> | ||||
<t> | The EAP peer <bcp14>MUST</bcp14> in turn check for | |||
the existence of the protected success result indication (one octet of | ||||
0x00) and cause authentication to fail if that octet is not | ||||
received. If either the peer or the server initiates an inner tunnel | ||||
method instead, then that method <bcp14>MUST</bcp14> be followed, and inner a | ||||
uthentication | ||||
<bcp14>MUST NOT</bcp14> be skipped.</t> | ||||
<t> | ||||
All TLS-based EAP methods support resumption, as it is a property of | All TLS-based EAP methods support resumption, as it is a property of | |||
the underlying TLS protocol. All EAP servers and peers MUST support | the underlying TLS protocol. All EAP servers and peers <bcp14>MUST</bcp14> s upport | |||
resumption for all TLS-based EAP methods. We note that EAP servers | resumption for all TLS-based EAP methods. We note that EAP servers | |||
and peers can still choose to not resume any particular session. For | and peers can still choose to not resume any particular session. For | |||
example, EAP servers may forbid resumption for administrative, or | example, EAP servers may forbid resumption for administrative or | |||
other policy reasons.</t> | other policy reasons.</t> | |||
<t> | ||||
<t> | It is <bcp14>RECOMMENDED</bcp14> that EAP servers and peers enable resumption | |||
It is RECOMMENDED that EAP servers and peers enable resumption, and | and | |||
use it where possible. The use of resumption decreases the number of | use it where possible. The use of resumption decreases the number of | |||
round trips used for authentication. This decrease leads to lower | round trips used for authentication. This decrease leads to lower | |||
latency for authentications, and less load on the EAP server. | latency for authentications and less load on the EAP server. | |||
Resumption can also lower load on external systems, such as databases | Resumption can also lower load on external systems, such as databases | |||
which contain user credentials.</t> | that contain user credentials.</t> | |||
<t> | ||||
<t> | ||||
As the packet flows for resumption are essentially identical across | As the packet flows for resumption are essentially identical across | |||
all TLS-based EAP types, it is technically possible to authenticate | all TLS-based EAP Types, it is technically possible to authenticate | |||
using EAP-TLS (Type 13), and then perform resumption using another | using EAP-TLS (Type 13) and then perform resumption using another | |||
EAP type, such as with EAP-TTLS (Type 21). However, there is no | EAP Type, such as with EAP-TTLS (Type 21). However, there is no | |||
practical benefit to doing so. It is also not clear what this | practical benefit to doing so. It is also not clear what this | |||
behavior would mean, or what (if any) security issues there may be | behavior would mean or what (if any) security issues there may be | |||
with it. As a result, this behavior is forbidden.</t> | with it. As a result, this behavior is forbidden.</t> | |||
<t> | ||||
<t> | EAP servers therefore <bcp14>MUST NOT</bcp14> resume sessions across differen | |||
EAP servers therefore MUST NOT resume sessions across different EAP | t EAP | |||
Types, and EAP servers MUST reject resumptions in which the EAP Type | Types, and EAP servers <bcp14>MUST</bcp14> reject resumptions in which the EA | |||
P Type | ||||
value is different from the original authentication.</t> | value is different from the original authentication.</t> | |||
</section> | ||||
</section> | <section anchor="sect-7" numbered="true" toc="default"> | |||
<name>Security Considerations</name> | ||||
<section title="Implementation Status" anchor="sect-5"><t> | <t> | |||
RFC Editor: Please remove this section before publication.</t> | <xref target="RFC9190" sectionFormat="comma" section="5"/> is included here b | |||
y reference.</t> | ||||
<t> | <t> | |||
EAP-TTLS and PEAP are implemented and tested to be interoperable with | ||||
wpa_supplicant 2.10 and Windows 11 as EAP peers, and FreeRADIUS | ||||
3.0.26 and Radiator as RADIUS / EAP servers.</t> | ||||
<t> | ||||
The wpa_supplicant implementation requires that a configuration flag | ||||
be set "tls_disable_tlsv1_3=0", and describes the flag as "enable TLSv1.3 (ex | ||||
perimental - disabled by default)". However, | ||||
interoperability testing shows that PEAP and EAP-TTLS both work with | ||||
Radiator and FreeRADIUS.</t> | ||||
<t> | ||||
Implementors have demonstrated significant interest in getting PEAP | ||||
and EAP-TTLS working for TLS 1.3, but less interest in EAP-FAST and | ||||
TEAP. As such, there is no implementation experience with EAP-FAST | ||||
or TEAP. However, we believe that the definitions described above | ||||
are correct, and are workable.</t> | ||||
</section> | ||||
<section title="Security Considerations" anchor="sect-6"><t> | ||||
<xref target="RFC9190"/> <xref target="sect-5"/> is included here by referenc | ||||
e.</t> | ||||
<t> | ||||
Updating the above EAP methods to use TLS 1.3 is of high importance | Updating the above EAP methods to use TLS 1.3 is of high importance | |||
for the Internet Community. Using the most recent security protocols | for the Internet community. Using the most recent security protocols | |||
can significantly improve security and privacy of a network.</t> | can significantly improve security and privacy of a network.</t> | |||
<t> | ||||
<t> | For PEAP, some derivations use HMAC-SHA1 <xref target="PEAP-MPPE" format="def | |||
For PEAP, some derivations use HMAC-SHA1 <xref target="PEAP-MPPE"/>. In the | ault"/>. In the | |||
interests of interoperability and minimal changes, we do not change | interests of interoperability and minimal changes, we do not change | |||
that derivation, as there are no known security issues with HMAC- | that derivation, as there are no known security issues with HMAC- | |||
SHA1. Further, the data derived from the HMAC-SHA1 calculations is | SHA1. Further, the data derived from the HMAC-SHA1 calculations is | |||
exchanged inside of the TLS tunnel, and is visible only to users who | exchanged inside of the TLS tunnel and is visible only to users who | |||
have already successfully authenticated. As such, the security risks | have already successfully authenticated. As such, the security risks | |||
are minimal.</t> | are minimal.</t> | |||
<section anchor="sect-7.1" numbered="true" toc="default"> | ||||
<section title="Handling of TLS NewSessionTicket Messages" anchor="sect-6 | <name>Handling of TLS NewSessionTicket Messages</name> | |||
.1"><t> | <t> | |||
In some cases, client certificates are not used for TLS-based EAP | In some cases, client certificates are not used for TLS-based EAP | |||
methods. In those cases, the user is authenticated only after | methods. In those cases, the user is authenticated only after | |||
successful completion of the inner tunnel authentication. However, | successful completion of the inner tunnel authentication. | |||
[RFC84346] Section 4.6.1 allows that "At any time after the server has receiv | However, <xref target="RFC8446" sectionFormat="comma" section="4.6.1"/> states | |||
ed the client Finished message, it MAY send a NewSessionTicket message." This m | that "at any time after the server has received the client Finished message, it | |||
essage is sent by the server before | <bcp14>MAY</bcp14> send a NewSessionTicket message." This message is sent by th | |||
the inner authentication method has been run, and therefore before | e server before | |||
the inner authentication method has been run and therefore before | ||||
the user has been authenticated.</t> | the user has been authenticated.</t> | |||
<t> | ||||
<t> | ||||
This separation of data allows for a "time of use, time of check" | This separation of data allows for a "time of use, time of check" | |||
security issue. Malicious clients can begin a session and receive a | security issue. Malicious clients can begin a session and receive a | |||
NewSessionTicket message. The malicious client can then abort the | NewSessionTicket message. The malicious client can then abort the | |||
authentication session, and use the obtained NewSessionTicket to | authentication session and use the obtained NewSessionTicket to | |||
"resume" the previous session. If the server allows the session to | "resume" the previous session. | |||
If the server allows the session to | ||||
resume without verifying that the user had first been authenticated, | resume without verifying that the user had first been authenticated, | |||
the malicious client can then obtain network access without ever | the malicious client can then obtain network access without ever | |||
being authenticated network access without ever being authenticated.</t> | being authenticated.</t> | |||
<t> | ||||
<t> | As a result, EAP servers <bcp14>MUST NOT</bcp14> assume that a user has been | |||
As a result, EAP servers MUST NOT assume that a user has been | ||||
authenticated simply because a TLS session is being resumed. Even if | authenticated simply because a TLS session is being resumed. Even if | |||
a session is being resumed, an EAP server MAY have policies which | a session is being resumed, an EAP server <bcp14>MAY</bcp14> have policies th at | |||
still force the inner authentication methods to be run. For example, | still force the inner authentication methods to be run. For example, | |||
the users password may have expired in the time interval between | the user's password may have expired in the time interval between | |||
first authenticaction, and session resumption.</t> | first authentication and session resumption.</t> | |||
<t> | ||||
<t> | Therefore, the guidelines given here describe situations where an EAP | |||
The guidelines given here therefore describe situations where an EAP | server is permitted to allow session resumption rather than where an EAP serv | |||
server is permitted to allow session resumption, not where it is | er is | |||
required to allow session resumption. An EAP server could simply | required to allow session resumption. An EAP server could simply | |||
refuse to issue session tickets, or could run the full inner | refuse to issue session tickets or could run the full inner | |||
authentication even if a session was resumed.</t> | authentication, even if a session was resumed.</t> | |||
<t> | ||||
<t> | Where session tickets are used, the EAP server <bcp14>SHOULD</bcp14> track th | |||
Where session tickets are used, the EAP server SHOULD track the | e | |||
successful completion of an inner authentication, and associate that | successful completion of an inner authentication and associate that | |||
status with any session tickets issued for that session. This | status with any session tickets issued for that session. This | |||
requirement can be met in a number of different ways.</t> | requirement can be met in a number of different ways.</t> | |||
<t> | ||||
<t> | ||||
One way is for the EAP server to simply not send any TLS | One way is for the EAP server to simply not send any TLS | |||
NewSessionTicket messages until the inner authentication has | NewSessionTicket messages until the inner authentication has | |||
completed successfully. The EAP server then knows that the existence | completed successfully. The EAP server then knows that the existence | |||
of a session ticket is proof that a user was authenticated, and the | of a session ticket is proof that a user was authenticated, and the | |||
session can be resumed.</t> | session can be resumed.</t> | |||
<t> | ||||
<t> | Another way is for the EAP server to simply discard or invalidate any | |||
Another way is for the EAP server to simple discard or invalidate any | ||||
session tickets until after the inner authentication has completed | session tickets until after the inner authentication has completed | |||
successfully. When the user is authenticated, a new TLS | successfully. When the user is authenticated, a new TLS | |||
NewSessionTicket message can be sent to the client, and the new | NewSessionTicket message can be sent to the client, and the new | |||
ticket cached and/or validated.</t> | ticket can be cached and/or validated.</t> | |||
<t> | ||||
<t> | ||||
Another way is for the EAP server to associate the inner | Another way is for the EAP server to associate the inner | |||
authentication status with each session ticket. When a session | authentication status with each session ticket. When a session | |||
ticket is used, the authentication status is checked. When a session | ticket is used, the authentication status is checked. When a session | |||
ticket shows that the inner authentication did not succeed, the EAP | ticket shows that the inner authentication did not succeed, the EAP | |||
server MUST run the inner authentication method(s) in the resumed | server <bcp14>MUST</bcp14> run the inner authentication method(s) in the resu | |||
tunnel, and grant only access based on the success or failure of | med | |||
those inner methods/</t> | tunnel and only grant access based on the success or failure of | |||
those inner methods.</t> | ||||
<t> | <t> | |||
However, the interaction between EAP implementations and any | However, the interaction between EAP implementations and any | |||
underlying TLS library may be complex, and the EAP server may not be | underlying TLS library may be complex, and the EAP server may not be | |||
able to make the above guarantees. Where the EAP server is unable to | able to make the above guarantees. Where the EAP server is unable to | |||
determine the users authentication status from the session ticket, it | determine the user's authentication status from the session ticket, it | |||
MUST assume that inner authentication has not completed, and it MUST | <bcp14>MUST</bcp14> assume that inner authentication has not completed, and i | |||
t <bcp14>MUST</bcp14> | ||||
run the inner authentication method(s) successfully in the resumed | run the inner authentication method(s) successfully in the resumed | |||
tunnel before granting access.</t> | tunnel before granting access.</t> | |||
<t> | ||||
<t> | ||||
This issue is not relevant for EAP-TLS, which only uses client | This issue is not relevant for EAP-TLS, which only uses client | |||
certificates for authentication in the TLS handshake. It is only | certificates for authentication in the TLS handshake. It is only | |||
relevant for TLS-based EAP methods which do not use the TLS layer to | relevant for TLS-based EAP methods that do not use the TLS layer to | |||
authenticate</t> | authenticate.</t> | |||
</section> | ||||
</section> | <section anchor="sect-7.2" numbered="true" toc="default"> | |||
<name>Protected Success and Failure Indications</name> | ||||
<section title="Protected Success and Failure indications" anchor="sect-6 | <t> | |||
.2"><t> | <xref target="RFC9190" format="default"/> provides for protected success and | |||
<xref target="RFC9190"/> provides for protected success and failure indicatio | failure indications as | |||
ns as | discussed in <xref target="RFC4137" sectionFormat="comma" section="4.1.1"/>. | |||
discussed in Section 4.1.1 of <xref target="RFC4137"/>. These result indicat | These result indications | |||
ions | are provided for both full authentication and resumption.</t> | |||
are provided for both full authentication, and for resumption.</t> | <t> | |||
<t> | ||||
Other TLS-based EAP methods provide these result indications only for | Other TLS-based EAP methods provide these result indications only for | |||
resumption.</t> | resumption.</t> | |||
<t> | ||||
<t> | ||||
For full authentication, the other TLS-based EAP methods do not | For full authentication, the other TLS-based EAP methods do not | |||
provide for protected success and failure indications as part of the | provide for protected success and failure indications as part of the | |||
outer TLS exchange. That is, the protected result indication is not | outer TLS exchange. That is, the protected result indication is not | |||
used, and there is no TLS-layer alert sent when the inner | used, and there is no TLS-layer alert sent when the inner | |||
authentication fails. Instead, there is simply either an EAP-Success | authentication fails. Instead, there is simply either an EAP-Success | |||
or EAP-Failure sent. This behavior is the same as for previous TLS | or an EAP-Failure sent. This behavior is the same as for previous TLS | |||
versions, and therefore introduces no new security issues.</t> | versions; therefore, it introduces no new security issues.</t> | |||
<t> | ||||
<t> | ||||
We note that most TLS-based EAP methods provide for success and | We note that most TLS-based EAP methods provide for success and | |||
failure indications as part of the authentication exchange performed | failure indications as part of the authentication exchange performed | |||
inside of the TLS tunnel. These result indications are therefore | inside of the TLS tunnel. These result indications are therefore | |||
protected, as they cannot be modified or forged.</t> | protected, as they cannot be modified or forged.</t> | |||
<t> | ||||
<t> | ||||
However, some inner methods do not provide for success or failure | However, some inner methods do not provide for success or failure | |||
indications. For example, the use of EAP-TTLS with inner PAP, CHAP, | indications. For example, the use of EAP-TTLS with inner PAP, CHAP, | |||
or MS-CHAP. Those methods send authentication credentials to the EAP | or MS-CHAP. Those methods send authentication credentials to the EAP | |||
server via the inner tunnel, with no method to signal success or | server via the inner tunnel with no method to signal success or | |||
failure inside of the tunnel.</t> | failure inside of the tunnel.</t> | |||
<t> | ||||
<t> | There are functionally equivalent authentication methods that can be | |||
There are functionally equivalent authentication methods which can be | ||||
used to provide protected result indications. PAP can often be | used to provide protected result indications. PAP can often be | |||
replaced with EAP-GTC, CHAP with EAP-MD5, and MS-CHAPv1 with MS- | replaced with EAP-Generic Token Card (EAP-GTC), CHAP with EAP-MD5, and MS-CHA | |||
CHAPv2 or EAP-MSCHAPv2. All of the replacement methods provide for | Pv1 with | |||
similar functionality, and have protected success and failure | MS-CHAPv2 or EAP-MSCHAPv2. All of the replacement methods provide for | |||
similar functionality and have protected success and failure | ||||
indication. The main cost to this change is additional round trips.</t> | indication. The main cost to this change is additional round trips.</t> | |||
<t> | ||||
<t> | It is <bcp14>RECOMMENDED</bcp14> that implementations deprecate inner tunnel | |||
It is RECOMMENDED that implementations deprecate inner tunnel methods | methods | |||
which do not provide protected success and failure indications when | that do not provide protected success and failure indications when | |||
TLS session tickets cannot be used. Implementations SHOULD use EAP- | TLS session tickets cannot be used. Implementations <bcp14>SHOULD</bcp14> us | |||
GTC instead of PAP, and EAP-MD5 instead of CHAP. Implementations | e EAP- | |||
SHOULD use MS-CHAPv2 or EAP-MSCHAPv2 instead of MS-CHAPv1. New TLS- | GTC instead of PAP and EAP-MD5 instead of CHAP. Implementations | |||
based EAP methods MUST provide protected success and failure | <bcp14>SHOULD</bcp14> use MS-CHAPv2 or EAP-MSCHAPv2 instead of MS-CHAPv1. Ne | |||
w TLS- | ||||
based EAP methods <bcp14>MUST</bcp14> provide protected success and failure | ||||
indications inside of the TLS tunnel.</t> | indications inside of the TLS tunnel.</t> | |||
<t> | ||||
<t> | ||||
When the inner authentication protocol indicates that authentication | When the inner authentication protocol indicates that authentication | |||
has failed, then implementations MUST fail authentication for the | has failed, then implementations <bcp14>MUST</bcp14> fail authentication for the | |||
entire session. There may be additional protocol exchanges in order | entire session. There may be additional protocol exchanges in order | |||
to exchange more detailed failure indications, but the final result | to exchange more detailed failure indications, but the final result | |||
MUST be a failed authentication. As noted earlier, any session | <bcp14>MUST</bcp14> be a failed authentication. As noted earlier, any sessio | |||
tickets for this failed authentication MUST be either invalidated or | n | |||
tickets for this failed authentication <bcp14>MUST</bcp14> be either invalida | ||||
ted or | ||||
discarded.</t> | discarded.</t> | |||
<t> | ||||
<t> | ||||
Similarly, when the inner authentication protocol indicates that | Similarly, when the inner authentication protocol indicates that | |||
authentication has succeeded, then implementations SHOULD cause | authentication has succeeded, implementations <bcp14>SHOULD</bcp14> cause | |||
authentication to succeed for the entire session. There MAY be | authentication to succeed for the entire session. There <bcp14>MAY</bcp14> b | |||
additional protocol exchanges which could still cause failure, so we | e | |||
additional protocol exchanges that could still cause failure, so we | ||||
cannot mandate sending success on successful authentication.</t> | cannot mandate sending success on successful authentication.</t> | |||
<t> | ||||
<t> | In both of these cases, the EAP server <bcp14>MUST</bcp14> send an EAP-Failur | |||
In both of these cases, the EAP server MUST send an EAP-Failure or | e or | |||
EAP-Success message, as indicated by <xref target="sect-2"/>, item 4 of <xref | EAP-Success message, as indicated by Step 4 in <xref target="RFC3748" section | |||
target="RFC3748"/>. | Format="of" section="2"/>. | |||
Even though both parties have already determined the final | Even though both parties have already determined the final | |||
authentication status, the full EAP state machine must still be | authentication status, the full EAP state machine must still be | |||
followed.</t> | followed.</t> | |||
</section> | ||||
</section> | </section> | |||
<section anchor="sect-6" numbered="true" toc="default"> | ||||
</section> | <name>IANA Considerations</name> | |||
<t> | ||||
<section title="IANA Considerations" anchor="sect-7"><t> | ||||
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 TLS- | Authority (IANA) regarding the registration of values related to the | |||
based EAP methods for TLS 1.3 protocol in accordance with <xref target="RFC81 | TLS-based EAP methods for the TLS 1.3 protocol in accordance w | |||
26"/>.</t> | ith <xref target="RFC8126" | |||
format="default"/>.</t> | ||||
<t> | <t> | |||
This memo requires IANA to add the following labels to the TLS | IANA has added the following labels to the "TLS | |||
Exporter Label Registry defined by <xref target="RFC5705"/>. These labels ar | Exporter Label" registry defined by <xref target="RFC5705" format="default"/> | |||
e used | . These labels are used | |||
in the derivation of Key_Material and Method-Id as defined above in | in the derivation of Key_Material and Method-Id as defined above in | |||
<xref target="sect-2"/>.</t> | <xref target="sect-2" format="default"/>, and they are used only for TEAP.</t | |||
> | ||||
<t> | ||||
The labels below need to be added to the "TLS Exporter Labels" | ||||
registry as "Value", with this specification as "Reference". For all | ||||
of these labels the "DTLS-OK" field should be "N", and the | ||||
"Recommended" field should be "Y".</t> | ||||
<t> | <table anchor="IANA_table"> | |||
These labels are used only for TEAP.</t> | <name>TLS Exporter Labels Registry</name> | |||
<thead> | ||||
<tr> | ||||
<th>Value</th> | ||||
<th>DTLS-OK</th> | ||||
<th>Recommended</th> | ||||
<th>Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>EXPORTER: teap session key seed</td> | ||||
<td align="center">N</td> | ||||
<td align="center">Y</td> | ||||
<td align="center">RFC 9427</td> | ||||
</tr> | ||||
<tr> | ||||
<td>EXPORTER: Inner Methods Compound Keys</td> | ||||
<td align="center">N</td> | ||||
<td align="center">Y</td> | ||||
<td align="center">RFC 9427</td> | ||||
</tr> | ||||
<tr> | ||||
<td>EXPORTER: Session Key Generating Function</td> | ||||
<td align="center">N</td> | ||||
<td align="center">Y</td> | ||||
<td align="center">RFC 9427</td> | ||||
</tr> | ||||
<tr> | ||||
<td>EXPORTER: Extended Session Key Generating Function</td> | ||||
<td align="center">N</td> | ||||
<td align="center">Y</td> | ||||
<td align="center">RFC 9427</td> | ||||
</tr> | ||||
<tr> | ||||
<td>TEAPbindkey@ietf.org</td> | ||||
<td align="center">N</td> | ||||
<td align="center">Y</td> | ||||
<td align="center">RFC 9427</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<figure><artwork><![CDATA[ | </middle> | |||
* EXPORTER: teap session key seed | <back> | |||
* EXPORTER: Inner Methods Compound Keys | ||||
* EXPORTER: Session Key Generating Function | ||||
* EXPORTER: Extended Session Key Generating Function | ||||
* TEAPbindkey@ietf.org | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
</middle> | <displayreference target="I-D.josefsson-pppext-eap-tls-eap" to="PEAP"/> | |||
<back> | <references> | |||
<references title="Normative References"> | <name>References</name> | |||
&RFC2119; | <references> | |||
&RFC3748; | <name>Normative References</name> | |||
&RFC5216; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
&RFC5705; | 119.xml"/> | |||
&RFC7170; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | |||
&RFC8126; | 748.xml"/> | |||
&RFC8174; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
&RFC8446; | 216.xml"/> | |||
&RFC9190; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
<reference anchor="IANA" target="https://www.iana.org/assignments/eap-num | 705.xml"/> | |||
bers/eap-numbers.xhtml#eap-numbers-4"><front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
<title>Method Types</title> | 170.xml"/> | |||
<author> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
</author> | 126.xml"/> | |||
<date/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
</front> | 174.xml"/> | |||
</reference> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
</references> | 446.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
190.xml"/> | ||||
<references title="Informative References"> | <reference anchor="IANA" target="https://www.iana.org/assignments/eap-nu | |||
<reference anchor="MSPEAP" target="https://msdn.microsoft.com/en-us/libra | mbers/"> | |||
ry/cc238354.aspx"><front> | <front> | |||
<title>[MS-PEAP]: Protected Extensible Authentication Protocol (PEAP)</ti | <title>Method Types</title> | |||
tle> | <author> | |||
<author> | <organization>IANA</organization> | |||
</author> | </author> | |||
<date/> | </front> | |||
</front> | </reference> | |||
</reference> | </references> | |||
<references> | ||||
<name>Informative References</name> | ||||
&I-D.josefsson-pppext-eap-tls-eap; | <reference anchor="MSPEAP" target="https://msdn.microsoft.com/en-us/libr | |||
ary/cc238354.aspx"> | ||||
<front> | ||||
<title>[MS-PEAP]: Protected Extensible Authentication Protocol (PEAP | ||||
)</title> | ||||
<author> | ||||
<organization>Microsoft Corporation</organization> | ||||
</author> | ||||
<date month="June" year="2021"/> | ||||
</front> | ||||
<refcontent>Protocol Revision 31.0</refcontent> | ||||
</reference> | ||||
<reference anchor="PEAP-MPPE" target="https ://docs.microsoft.com/en-us/o | <!-- [I-D.josefsson-pppext-eap-tls-eap] IESG state Expired. Changed to long way | |||
penspecs/windows_protocols/MS-PEAP/e75b0385-915a-4fc3-a549-fd3d06b995b0"> | to include 2 missing authors. --> | |||
<reference anchor="I-D.josefsson-pppext-eap-tls-eap" target="https://datatracker | ||||
.ietf.org/doc/html/draft-josefsson-pppext-eap-tls-eap-10"> | ||||
<front> | ||||
<title>Protected EAP Protocol (PEAP) Version 2</title> | ||||
<author initials="A." surname="Palekar" fullname="Ashwin Palekar"> | ||||
<organization>Microsoft Corporation</organization> | ||||
</author> | ||||
<author initials="S." surname="Josefsson" fullname="Simon Josefsson"> | ||||
<organization>Extundo</organization> | ||||
</author> | ||||
<author initials="D." surname="Simon" fullname="Daniel Simon"> | ||||
<organization>Microsoft Corporation</organization> | ||||
</author> | ||||
<author initials="G." surname="Zorn" fullname="Glen Zorn"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<author initials="J." surname="Salowey" fullname="Joe Salowey"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<author initials="H." surname="Zhou" fullname="Hao Zhou"> | ||||
<organization>Cisco Systems</organization> | ||||
</author> | ||||
<date month="October" day="15" year="2004"/> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-josefsson-pppext-eap-tls-eap-10"/ | ||||
> | ||||
</reference> | ||||
<reference anchor="PEAP-MPPE" target="https://learn.microsoft.com/en-us/ | ||||
openspecs/windows_protocols/ms-peap/e75b0385-915a-4fc3-a549-fd3d06b995b0"> | ||||
<front> | <front> | |||
<title>PEAP Key Management</title> | <title>Key Management</title> | |||
<author></author> | <author> | |||
<date></date> | <organization>Microsoft Corporation</organization> | |||
</author> | ||||
<date month="October" year="2020"/> | ||||
</front> | </front> | |||
<refcontent>Section 3.1.5.7</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="PEAP-PRF" target="https://docs.microsoft.com/en-us/ope nspecs/windows_protocols/MS-PEAP/0de54161-0bd3-424a-9b1a-854b4040a6df"> | <reference anchor="PEAP-PRF" target="https://docs.microsoft.com/en-us/op enspecs/windows_protocols/MS-PEAP/0de54161-0bd3-424a-9b1a-854b4040a6df"> | |||
<front> | <front> | |||
<title>PEAP Intermediate PEAP MAC Key (IPMK) and Compound MAC Key (C | <title>Intermediate PEAP MAC Key (IPMK) and Compound MAC Key (CMK)</ | |||
MK)</title> | title> | |||
<author></author> | <author> | |||
<date></date> | <organization>Microsoft Corporation</organization> | |||
</author> | ||||
<date month="February" year="2019"/> | ||||
</front> | </front> | |||
<refcontent>Section 3.1.5.5.2.2</refcontent> | ||||
</reference> | </reference> | |||
<reference anchor="PEAP-TK" target="https://docs.microsoft.com/en-us/open specs/windows_protocols/MS-PEAP/41288c09-3d7d-482f-a57f-e83691d4d246"> | <reference anchor="PEAP-TK" target="https://docs.microsoft.com/en-us/ope nspecs/windows_protocols/MS-PEAP/41288c09-3d7d-482f-a57f-e83691d4d246"> | |||
<front> | <front> | |||
<title>PEAP Tunnel Key (TK)</title> | <title>PEAP Tunnel Key (TK)</title> | |||
<author></author> | <author> | |||
<date></date> | <organization>Microsoft Corporation</organization> | |||
</author> | ||||
<date month="April" year="2021"/> | ||||
</front> | </front> | |||
<refcontent>Section 3.1.5.5.2.1</refcontent> | ||||
</reference> | </reference> | |||
&RFC1994; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1 | |||
&RFC2433; | 994.xml"/> | |||
&RFC2759; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
&RFC4137; | 433.xml"/> | |||
&RFC4851; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
&RFC5281; | 759.xml"/> | |||
&RFC5422; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
&RFC7542; | 137.xml"/> | |||
&RFC7585; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
</references> | 851.xml"/> | |||
<section title="Acknowledgments" numbered="no" anchor="acknowledgments">< | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
t> | 281.xml"/> | |||
Thanks to Jorge Vergara for a detailed review of the requirements for | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
various EAP types.</t> | 422.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
<t> | 542.xml"/> | |||
Thanks to Jorge Vergara, Bruno Periera Vidal, Alexander Clouter, | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
Karri Huhtanen, and Heikki Vatiainen for reviews of this document, | 585.xml"/> | |||
</references> | ||||
</references> | ||||
<section numbered="false" anchor="acknowledgments" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t> | ||||
Thanks to <contact fullname="Jorge Vergara"/> for a detailed review of the re | ||||
quirements for | ||||
various EAP Types.</t> | ||||
<t> | ||||
Thanks to <contact fullname="Jorge Vergara"/>, <contact fullname="Bruno Perie | ||||
ra Vidal"/>, <contact fullname="Alexander Clouter"/>, | ||||
<contact fullname="Karri Huhtanen"/>, and <contact fullname="Heikki Vatiainen | ||||
"/> for reviews of this document | ||||
and for assistance with interoperability testing.</t> | and for assistance with interoperability testing.</t> | |||
</section> | ||||
<t> | </back> | |||
Authors' Addresses</t> | </rfc> | |||
</section> | ||||
</back> | ||||
</rfc> | ||||
End of changes. 190 change blocks. | ||||
822 lines changed or deleted | 833 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |