RFC 6678
Requirements for a Tunnel-Based Extensible Authentication Protocol (EAP) Method
RFC 6678: Requirements for a Tunnel-Based EAP Method ๐
Title block, the tea โ: This one is RFC 6678, titled Requirements for a Tunnel-Based Extensible Authentication Protocol (EAP) Method. It was published in July 2012 by K. Hoeper (Motorola Solutions, Inc.), S. Hanna (Juniper Networks), H. Zhou and J. Salowey, Ed. (both Cisco Systems, Inc.). It's Informational, which means it's published for information and is not a standards track spec ๐ฆ. Its ISSN is 2070-1721. The title block doesn't list any RFCs it obsoletes or updates, so it's standing on its own ๐ .
Abstract ๐ธ
Okay so this doc lays out the requirements for a tunnel-based EAP method ๐ซถ. The tunnel uses Transport Layer Security (TLS) to set up a secure tunnel. Once that tunnel exists, it can support password authentication, EAP authentication, and carrying extra data for other purposes. It's giving full toolkit โจ.
Status of This Memo ๐ง
This document is not an Internet Standards Track specification. It's published for informational purposes, so no pressure ๐.
This is an IETF product. It reflects the consensus of the IETF community, got public review, and was approved for publication by the Internet Engineering Steering Group (IESG). Not every IESG-approved doc is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 if you want the details ๐.
Info about the current status, errata, and how to send feedback lives at http://www.rfc-editor.org/info/rfc6678. Bookmark it, bestie ๐.
Copyright Notice ๐
Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully, because they spell out your rights and restrictions for this document ๐. Code Components pulled from this document must include the Simplified BSD License text described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as the Simplified BSD License describes.
Some material in this document may come from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The people who control the copyright in some of that material may not have granted the IETF Trust the right to allow modifications outside the IETF Standards Process. Unless you get a proper license from those copyright holders, this document may not be modified outside the IETF Standards Process, and derivative works may not be made outside it either. The exceptions are formatting it for publication as an RFC and translating it into languages other than English ๐.
Table of Contents ๐
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Conventions Used in This Document . . . . . . . . . . . . . . 4
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. Password Authentication . . . . . . . . . . . . . . . . . 5
3.2. Protection of Weak EAP Methods . . . . . . . . . . . . . . 5
3.3. Chained EAP Methods . . . . . . . . . . . . . . . . . . . 6
3.4. Identity Protection . . . . . . . . . . . . . . . . . . . 6
3.5. Anonymous Service Access . . . . . . . . . . . . . . . . . 7
3.6. Network Endpoint Assessment . . . . . . . . . . . . . . . 7
3.7. Client Authentication during Tunnel Establishment . . . . 7
3.8. Extensibility . . . . . . . . . . . . . . . . . . . . . . 8
3.9. Certificate-Less Authentication and Generic EAP Method
Extension . . . . . . . . . . . . . . . . . . . . . . . . 8
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1. General Requirements . . . . . . . . . . . . . . . . . . . 9
4.1.1. RFC Compliance . . . . . . . . . . . . . . . . . . . . 9
4.2. Tunnel Requirements . . . . . . . . . . . . . . . . . . . 10
4.2.1. TLS Requirements . . . . . . . . . . . . . . . . . . . 10
4.2.1.1. Cipher Suites . . . . . . . . . . . . . . . . . . 10
4.2.1.1.1. Cipher Suite Negotiation . . . . . . . . . . . 10
4.2.1.1.2. Tunnel Data Protection Algorithms . . . . . . 10
4.2.1.1.3. Tunnel Authentication and Key Establishment . 11
4.2.1.2. Tunnel Replay Protection . . . . . . . . . . . . . 11
4.2.1.3. TLS Extensions . . . . . . . . . . . . . . . . . . 11
4.2.1.4. Peer Identity Privacy . . . . . . . . . . . . . . 11
4.2.1.5. Session Resumption . . . . . . . . . . . . . . . . 12
4.2.2. Fragmentation . . . . . . . . . . . . . . . . . . . . 12
4.2.3. Protection of Data External to Tunnel . . . . . . . . 12
4.3. Tunnel Payload Requirements . . . . . . . . . . . . . . . 12
4.3.1. Extensible Attribute Types . . . . . . . . . . . . . . 12
4.3.2. Request/Challenge Response Operation . . . . . . . . . 13
4.3.3. Indicating Criticality of Attributes . . . . . . . . . 13
4.3.4. Vendor-Specific Support . . . . . . . . . . . . . . . 13
4.3.5. Result Indication . . . . . . . . . . . . . . . . . . 13
4.3.6. Internationalization of Display Strings . . . . . . . 13
4.4. EAP Channel Binding Requirements . . . . . . . . . . . . . 14
4.5. Requirements Associated with Carrying Username and
Passwords . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5.1. Security . . . . . . . . . . . . . . . . . . . . . . . 14
4.5.1.1. Confidentiality and Integrity . . . . . . . . . . 14
4.5.1.2. Authentication of Server . . . . . . . . . . . . . 14
4.5.1.3. Server Certificate Revocation Checking . . . . . . 14
4.5.2. Internationalization . . . . . . . . . . . . . . . . . 15
4.5.3. Metadata . . . . . . . . . . . . . . . . . . . . . . . 15
4.5.4. Password Change . . . . . . . . . . . . . . . . . . . 15
4.6. Requirements Associated with Carrying EAP Methods . . . . 15
4.6.1. Method Negotiation . . . . . . . . . . . . . . . . . . 16
4.6.2. Chained Methods . . . . . . . . . . . . . . . . . . . 16
4.6.3. Cryptographic Binding with the TLS Tunnel . . . . . . 16
4.6.4. Peer-Initiated EAP Authentication . . . . . . . . . . 17
4.6.5. Method Metadata . . . . . . . . . . . . . . . . . . . 17
5. Security Considerations . . . . . . . . . . . . . . . . . . . 18
5.1. Cipher Suite Selection . . . . . . . . . . . . . . . . . . 18
5.2. Tunneled Authentication . . . . . . . . . . . . . . . . . 19
5.3. Data External to Tunnel . . . . . . . . . . . . . . . . . 19
5.4. Separation of TLS Tunnel and Inner Authentication
Termination . . . . . . . . . . . . . . . . . . . . . . . 19
6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1. Normative References . . . . . . . . . . . . . . . . . . . 20
6.2. Informative References . . . . . . . . . . . . . . . . . . 21
1. Introduction ๐ฆ
Okay so an EAP tunnel method is an EAP method that sets up a secure tunnel and then runs other EAP methods inside that protected tunnel ๐. It can be used over any lower-layer protocol that supports EAP authentication. There are already a few EAP tunnel methods that use TLS to build the tunnel, like Protected EAP [PEAP], Tunneled Transport Layer Security EAP (TTLS) [RFC5281], and EAP Flexible Authentication via Secure Tunneling (EAP-FAST) [RFC4851]. TLS has worked really well, so the consensus is to keep using it as the base for a tunnel method ๐ .
People want a protected tunnel for EAP for lots of reasons. It protects weak authentication exchanges, like username and password. It can also give peer identity protection and EAP method chaining. And honestly, systems have found it super useful to carry other kinds of data inside the protected tunnel too โจ.
This document lays out the requirements for an EAP tunnel method, plus a password protocol that supports legacy password verification inside that tunnel method ๐ธ.
2. Conventions Used in This Document ๐
Capitalized words in this doc carry specific meanings during the EAP Method Update (EMU) WG's method selection process. Here's the vibe:
- MUST - indicates an absolute requirement
- MUST NOT - indicates something absolutely prohibited
- SHOULD - indicates a strong recommendation of a desired result
- SHOULD NOT - indicates a strong recommendation against a result
- MAY - indicates a willingness to allow an optional outcome
Lowercase uses of "MUST", "MUST NOT", "SHOULD", "SHOULD NOT" and "MAY" just mean what they normally mean and are not subject to these definitions. So no sneaky lowercase requirements, lol ๐.
3. Use Cases ๐ง
To motivate and explain the requirements, here's a representative set of use cases for the EAP tunnel method. A candidate tunnel method MUST support all of the use cases marked below as "MUST". No skipping the MUST ones, periodt ๐.
3.1. Password Authentication ๐
Lots of legacy systems only support user authentication with passwords. Some of them need the actual username and password sent to the authentication server. That's the case when the auth server doesn't have the cleartext password, or a consistent transform of it. Examples include some one-time password (OTP) systems, and other systems where the username and password get submitted to an external party for validation ๐.
The tunnel method MUST support transporting the cleartext username and password to the EAP server. It MUST NOT reveal information about the username and password to parties in the communication path between the peer and the EAP server, so keep that privacy locked in ๐. Any advantage an attacker gets against the tunnel method when a username and password are used for authentication MUST be gained through interaction and not computation. The tunnel MUST support protection from man-in-the-middle attacks ๐ก๏ธ. And the combo of tunnel authentication and password authentication MUST enable mutual authentication, so both sides get verified ๐ซถ.
Since EAP authentication happens before network access is granted, the tunnel method SHOULD enable an inner exchange for minimal password management tasks. That includes password change, "new PIN mode", and "next token mode", which some systems require ๐ง.
3.2. Protection of Weak EAP Methods โจ
okay so some existing EAP methods have holes ๐ณ๏ธ that can be patched up, or at least shrunk, by running them inside a protected tunnel ๐. EAP-MD5 is the classic example, bestie: it doesn't give you mutual authentication OR protection from dictionary attacks ๐. without extra protection, EAP tunnel methods are vulnerable to a special kind of tunnel man-in-the-middle (MitM) attack [TUNNEL-MITM] ๐. for the rest of this doc we'll just call it "tunnel MitM attack" ๐.
how much protection you need to stop tunnel MitM attacks depends on the inner method running inside the tunnel ๐ง. when the method is weak, you can handle it with security policies that say the method can ONLY be used inside a tunnel ๐ก๏ธ. on the other hand, there's a technical fix called cryptographic bindings ๐, and it works whenever the inner method derives key material and isn't vulnerable to attacks outside a tunnel. the bindings are the only one of these two options that can be made an actual requirement for EAP tunnel methods (see Section 4.6.3) ๐. security policies are out of scope for this requirement doc, so they don't get a requirement here ๐.
if you want the deep dive on security policies and full solutions for stopping tunnel MitM attacks, check out the NIST "Recommendation for EAP Methods Used in Wireless Network Access Authentication" [NIST-SP-800-120] and [LCN-2010] ๐๐ค.
so the actual rules are:
The tunnel method MUST support protection of weak EAP methods. Cryptographic protection from tunnel MitM attacks MUST be provided for all key-generating methods. Combine that with an appropriate security policy and it'll thwart MitM attacks against inner methods ๐โจ.
3.3. Chained EAP Methods
okay this one is giving multi-step authentication ๐. sometimes it's best to chain EAP methods together, like when you want to authenticate the user AND the device they're using ๐ฑ๐ค. the catch? chained EAP methods from different conversations can get redirected into the same conversation by an attacker ๐ฑ. the attacker makes the authenticator think both conversations end at the same endpoint ๐ฅท. the fix is cryptographic binding, which can tie the results of chained key-generating methods together, or tie them to an encompassing tunnel ๐๐ .
so the tunnel method MUST support chained EAP methods AND include protection against attacks on method chaining ๐.
3.4. Identity Protection
when the peer runs an EAP authentication, it might want to keep its identity private ๐ฅน. it should only reveal that identity to an EAP server it trusts ๐ซถ. this helps keep the peer's privacy intact ๐ธ.
the tunnel method MUST support identity protection, so the identity of the peer used for authentication MUST NOT be obtainable by any entity OTHER than the EAP server that terminates the tunnel method ๐๐. the identity protection the tunnel method gives applies to the identities specific to the tunnel method and the inner method being used ๐. also, in a roaming situation, the peer might have to expose the realm part of the EAP outer identity in the Network Access Identifier (NAI) [RFC4282] so it can reach the right authentication server ๐บ๏ธ. it's a tradeoff, bestie, but a necessary one ๐.
3.5. Anonymous Service Access
sometimes a network offers service where users need access to limited stuff, like emergency calls or troubleshooting info ๐จ๐งฐ. so the user gets network access without fully authenticating ๐ซ . but to avoid eavesdropping, it's best to negotiate link-layer security, just like with any other authentication ๐๐.
so the tunnel method SHOULD allow anonymous peers or server-only authentication, while still deriving keys that can be used for link-layer security ๐ฆ. it MAY also allow the client to bypass server authentication processing ๐.
skipping user or server authentication makes man-in-the-middle and other attacks more likely, and those attacks can compromise the keys used for link-layer security ๐ฌ. so passwords and other sensitive info MUST NOT be disclosed to an unauthenticated server, or to a server that isn't authorized to authenticate the user ๐ซ๐. not me clinging to my passwords like that ๐ .
3.6. Network Endpoint Assessment
the Network Endpoint Assessment (NEA) protocols and reference model in [RFC5209] give you a standard way to check the health ("posture") of a device when it connects to a network, or after ๐ฉบโจ. if the device doesn't meet the network's requirements, it can be denied access, or given limited access so it can fix itself ๐ ๏ธ. EAP is a super convenient place to run an NEA exchange ๐.
the tunnel method SHOULD support carrying NEA protocols, like a Posture Broker protocol compatible with Trusted Network Connect (PB-TNC) [RFC5793] ๐. depending on the specifics of the tunnel method, these protocols might have to be carried in an EAP method ๐คทโโ๏ธ.
3.7. Client Authentication during Tunnel Establishment
sometimes the peer already has credentials that let it authenticate while the tunnel is being set up ๐๏ธ. those credentials might only partly authenticate the peer's identity, so extra authentication could still be needed INSIDE the tunnel ๐งฉ. like, a communication device could get authenticated during tunnel setup, and then user authentication might still be needed to meet the authentication policy ๐ฉโ๐ปโจ.
the tunnel method MUST be capable of providing client-side authentication during tunnel establishment ๐ช.
3.8. Extensibility
the tunnel method MUST provide extensibility, so extra data about authentication, authorization, and network access can be carried inside the tunnel in the future ๐ฎ. this means nobody has to build a brand-new tunneling method for every specific purpose ๐. iconic efficiency ๐.
one app of extensibility is credential provisioning ๐๏ธ. once a peer has authenticated with EAP, that's the perfect moment to hand it credentials for later authentication exchanges ๐. for example, the authentication server can give the peer a private key or shared key that the peer can use for rapid re-authentication or roaming ๐โโ๏ธ๐จ. there have also been proposals to do enrollment within EAP, like [EAP-ENROLL] ๐. and another use for extensibility is supporting alternate authentication frameworks inside the tunnel ๐งโโ๏ธ.
3.9. Certificate-Less Authentication and Generic EAP Method Extension
sometimes the peer can't verify a server certificate, and sometimes the server doesn't even have one ๐๐ โโ๏ธ. so it's desirable to support certificate-less authentication ๐ซง. one example is credential provisioning, where the peer and server authenticate each other with a shared password, and then credentials for later authentication (like a key pair and certificate, or a shared key) get passed inside the tunnel ๐๐. another example is extending existing EAP methods with new features, like EAP channel bindings โญ.
โ ๏ธ Great care must be taken when using tunnels with no server authentication to protect an inner method. the client might not have the right trust roots to fully authenticate the server, but it can still set up the tunnel to run an inner EAP method for mutual authentication and key derivation ๐ฅบ. in these cases, the inner EAP method MUST provide resistance to dictionary attack, and a cryptographic binding between the inner method and the tunnel method MUST be established ๐. on top of that, the cipher suite used to set up the tunnel MUST derive the master key using contributions from both client and server, like ephemeral Diffie-Hellman cipher suites do ๐.
the tunnel method MAY allow for certificate-less authentication ๐ซ.
4. Requirements ๐
4.1. General Requirements
4.1.1. RFC Compliance
the tunnel method MUST include a Security Claims section with all the security claims specified in Section 7.2 in RFC 3748 [RFC3748] ๐งพ. it also MUST meet the requirement in Sections 2.1 and 7.4 of RFC 3748 that tunnel methods MUST support protection against man-in-the-middle attacks ๐ก๏ธ. and the tunnel method MUST support identity protection as specified in Section 7.3 of RFC 3748 ๐ซถ.
the tunnel method MUST be unconditionally compliant with RFC 4017 [RFC4017] (using the definition of "unconditionally compliant" in Section 1.1 of RFC 4017). this means the method MUST satisfy all the "MUST", "MUST NOT", "SHOULD", and "SHOULD NOT" requirements in RFC 4017 ๐ .
the tunnel method MUST meet all the "MUST" and "SHOULD" requirements relevant to EAP methods in the EAP key management framework [RFC5247] or any successor ๐๏ธ. this includes generating the Master Session Key (MSK), Extended Master Session Key (EMSK), Peer-Id, Server-Id, and Session-Id ๐. these requirements let the tunnel method fit properly into the EAP key management framework, keeping all of that framework's security properties and guarantees ๐ธโจ.
the tunnel method MUST NOT be tied to any single cryptographic algorithm ๐ โโ๏ธ. instead, it MUST support run-time negotiation to select among an extensible set of cryptographic algorithms, like the algorithms used with certificates presented during tunnel establishment ๐. this "cryptographic algorithm agility" has some major perks ๐ฆ. most importantly, when a weakness in an algorithm is discovered, or increased processing power overtakes an algorithm, users can easily switch to a new one ๐โโ๏ธ๐จ. users can also pick whichever algorithm best meets their needs ๐.
the tunnel method MUST meet the SHOULD and MUST requirements pertinent to EAP methods in Section 3 of RFC 4962 [RFC4962] ๐ง . this includes cryptographic algorithm independence; strong, fresh session keys; replay detection; keying material confidentiality and integrity; and confirmation of cipher suite selection ๐๐.
4.2. Tunnel Requirements
okay so this section talks about requirements for TLS tunnel establishment ๐๐.
4.2.1. TLS Requirements
the tunnel-based method MUST support TLS version 1.2 [RFC5246] ๐. it may support earlier versions greater than SSL 2.0 so backwards compatibility is possible ๐ฐ๏ธ.
4.2.1.1. Cipher Suites
4.2.1.1.1. Cipher Suite Negotiation
okay bestie, cipher suite negotiations ALWAYS suffer from downgrading attacks when they aren't secured by some kind of integrity protection ๐ญ. the common fix is a post-negotiation integrity check ๐. as soon as they're available, the established keys (here, the tunnel key) get used to derive integrity keys ๐๏ธ. then the peer and authentication server use those integrity keys to verify whether someone maliciously changed the cipher suite negotiation ๐ต๏ธโโ๏ธ.
integrity checks only prevent downgrading attacks if the derived integrity keys and the integrity algorithms can't be broken in real time ๐ฐ๏ธ. see Section 5.1 or [HC07] for more on this ๐. so the tunnel method MUST provide integrity-protected cipher suite negotiation with secure integrity algorithms and integrity keys ๐ซถโจ.
TLS provides protected cipher suite negotiation as long as all the cipher suites supported provide authentication, key establishment, and data integrity protection, as discussed in Section 5.1 ๐๐ .
4.2.1.1.2. Tunnel Data Protection Algorithms โจ
Okay bestie, this one is about keeping the inner auth methods safe from crypto attacks ๐ก๏ธ. The tunnel's protection needs a basic level of algorithm strength, or the inner methods' algorithms are fair game for attackers ๐. So the tunnel method MUST provide at least one mandatory-to-implement cipher suite that gives the equivalent security of 128-bit AES for encryption and message authentication ๐. If you want the lowdown on how the common algorithms stack up, check out Part 1 of the NIST "Recommendation for Key Management" [NIST-SP-800-57] ๐๐ธ.
4.2.1.1.3. Tunnel Authentication and Key Establishment ๐
This is the part where the tunnel has to prove itself ๐ . A tunnel method MUST provide unidirectional authentication from the authentication server to the EAP peer, AND mutual authentication between the authentication server and the EAP peer ๐ซถ. The tunnel method MUST also provide at least one mandatory-to-implement cipher suite that gives certificate-based authentication of the server, and it provides optional certificate-based authentication of the client ๐. Other types of authentication MAY be supported too ๐ฆ.
At least one mandatory-to-implement cipher suite MUST be approved by the NIST "Draft Recommendation for Key Management", Part 3 [NIST-SP-800-57p3]. In other words, the cipher suite MUST be listed in Table 4-1, 4-2, or 4-3 in that document ๐โจ.
The mandatory-to-implement cipher suites MUST only include cipher suites that use strong cryptographic algorithms ๐ช. They MUST NOT include cipher suites that provide mutually anonymous authentication, and they MUST NOT include static Diffie-Hellman cipher suites ๐ โโ๏ธ. No weak sauce allowed, periodt ๐ฅ.
Other cipher suites MAY be selected, as long as they follow the security requirements for tunnel protocols in the NIST "Recommendation for EAP Methods Used in Wireless Network Access Authentication" [NIST-SP-800-120] ๐.
4.2.1.2. Tunnel Replay Protection ๐
Replay attacks are so not it ๐ โโ๏ธ. To stop them, the message authentication MUST be generated using a time-variant input, like timestamps, sequence numbers, nonces, or a combo of these ๐ง. That way, any reuse of the authentication data can be caught and marked as invalid ๐ซ. TLS gives sufficient replay protection to meet this requirement, as long as the weak cipher suites discussed in Section 5.1 are avoided ๐.
4.2.1.3. TLS Extensions ๐งฉ
To meet the requirements in this document, TLS extensions MAY be used โจ. For example, TLS extensions can be useful for providing certificate revocation information through the TLS Online Certificate Status Protocol (OCSP) extension [RFC6066], which meets the requirement in Section 4.5.1.3 ๐.
4.2.1.4. Peer Identity Privacy ๐
A tunnel protocol MUST support peer privacy, and honestly this one is huge ๐ญ. It means the username and other attributes tied to the peer are NOT sent in the clear, and they're also not sent to an unauthenticated, unauthorized party ๐. Peer identity protection from the tunnel method covers both setting up the tunnel and protecting inner-method-specific identities ๐ซฃ. If it applies, the peer certificate is sent confidentially, which means encrypted ๐คซ๐.
4.2.1.5. Session Resumption ๐ธ
The tunnel method MUST support TLS session resumption as defined in [RFC5246] ๐ . The tunnel method MAY also support other session resumption methods, like the ones defined in [RFC5077] ๐ฆ.
4.2.2. Fragmentation ๐ง
Sometimes tunnel establishment needs to exchange more info than fits in a single EAP message ๐ฆ. Plus, the info carried inside the tunnel can be too big too ๐ฉ. So a tunnel method MUST support fragmentation and reassembly ๐งฉโจ.
4.2.3. Protection of Data External to Tunnel ๐ก๏ธ
A man-in-the-middle attacker can modify cleartext values outside the TLS tunnel, like protocol version and type code info ๐. So the tunnel method MUST provide implicit or explicit protection of the protocol version and type code ๐. If modifying other info outside the tunnel could cause exploitable vulnerabilities, the tunnel method MUST provide protection against modification of that additional data too ๐จ.
4.3. Tunnel Payload Requirements ๐
This section is all about what goes INSIDE the tunnel ๐. These requirements mostly describe features a candidate protocol has to be able to offer, so a deployer can decide whether to use each one ๐ . This section does NOT say which features of each protocol must be used during a deployment ๐ โโ๏ธ.
4.3.1. Extensible Attribute Types ๐ง
The payload MUST be extensible ๐. Some standard payload attribute types will be defined to meet known requirements, like password authentication, inner EAP method, vendor-specific attributes, and result indication ๐. Additional payload attributes MAY be defined in the future for new features and data types ๐ฎ.
4.3.2. Request/Challenge Response Operation ๐
The payload MUST support the request and response type of half-duplex operation that's typical of EAP ๐. Multiple attributes can be sent in a single payload โจ. The payload MAY also support transporting multiple authentications in a single payload packet ๐ฆ.
4.3.3. Indicating Criticality of Attributes ๐ฉ
New attributes are expected to be defined for the tunnel method ๐ฑ. Sometimes the sender needs to know if the receiver didn't understand an attribute ๐ค. So there MUST be a way for the sender to mark attributes so the receiver will indicate when an attribute is not understood ๐ฃ.
4.3.4. Vendor-Specific Support ๐ท๏ธ
The payload MUST support communication of an extensible set of vendor-specific attributes ๐. These attributes get segmented into uniquely identified vendor-specific namespaces ๐๏ธ. They can be used for experiments or vendor-specific features ๐งช.
4.3.5. Result Indication โ
The payload MUST support result indication and its acknowledgement, so the EAP peer and server both end up with a synchronized state ๐ซถ. Result indication is needed after each chained inner authentication method and at the end of the whole authentication, so separate result indications for intermediate and final results MUST be supported ๐.
4.3.6. Internationalization of Display Strings ๐
The payload MAY provide a standard attribute format that supports international strings ๐บ๏ธ. This attribute format MUST support encoding strings in UTF-8 [RFC3629] format ๐. Any strings the server sends for display to the user MUST be sent in UTF-8 format and SHOULD be able to be marked with language information and adapted to the user's language preference, as indicated by RFC 5646 [RFC5646] ๐ธ. Note that in some cases, like transmitting error codes, it's totally fine to exchange numeric codes that the client can translate into the local language ๐. Those numeric codes are NOT subject to internationalization during transmission ๐ข.
4.4. EAP Channel Binding Requirements ๐
The tunnel method MUST be capable of meeting the EAP channel binding requirements described in [RFC6677] ๐ . As discussed in [RFC5056], EAP channel bindings are different from the channel bindings discussed in other contexts ๐ง. Cryptographic binding between the TLS tunnel and the inner method, discussed in Section 4.6.3, relates directly to the non-EAP channel binding concepts in RFC 5056 ๐ฆโจ.
4.5. Requirements Associated with Carrying Username and Passwords ๐
This section covers the requirements for tunneled password authentication ๐. The password authentication here means user or machine auth using a legacy password database or verifier, like the Lightweight Directory Access Protocol (LDAP) [RFC4511], OTP, and so on ๐๏ธ. These usually need the password in its original text form to authenticate the peer ๐ฌ. That means the peer has to send the cleartext username and password to the EAP server ๐ซฃ.
4.5.1. Security ๐ก๏ธ
Lots of internal EAP methods have the peer send its password in the clear to the EAP server ๐ฑ. Other methods, like challenge-response ones, are vulnerable to attacks if an eavesdropper can intercept the traffic ๐. For any of these methods, the security measures in the following sections MUST be met ๐จ.
4.5.1.1. Confidentiality and Integrity ๐
The cleartext password exchange MUST be integrity and confidentiality protected ๐. As long as the password exchange happens inside an authenticated and encrypted tunnel, this requirement is met โจ.
4.5.1.2. Authentication of Server ๐ซถ
The EAP server MUST be authenticated BEFORE the peer sends the cleartext password to it ๐. No handing your password to a stranger, bestie ๐ .
4.5.1.3. Server Certificate Revocation Checking ๐
When certificate authentication is used during tunnel establishment, the EAP peer may need to present its password to the server BEFORE it has network access to check the revocation status of the server's credentials ๐ฉ. So the tunnel method MUST support mechanisms to check the revocation status of a credential ๐. The tunnel method SHOULD make use of the Online Certificate Status Protocol (OCSP) [RFC2560] or the Server-based Certificate Validation Protocol (SCVP) [RFC5055] to get the revocation status of the EAP server certificate ๐.
4.5.2. Internationalization ๐
The password authentication exchange MUST support usernames and passwords in international languages ๐ฃ๏ธ. It MUST support encoding of username and password strings in UTF-8 [RFC3629] format ๐. The method MUST specify how username and password normalizations and/or comparisons are performed, in reference to SASLprep [RFC4013], Net-UTF-8 [RFC5198], or their replacements ๐.
Any strings the server sends for display to the user MUST be sent in UTF-8 format and SHOULD be able to be marked with language information and adapted to the user's language preference, as indicated by RFC 5646 [RFC5646] ๐ธ. Note that, in some cases like transmitting error codes, it's acceptable to exchange numeric codes that the client can translate into the local language ๐. These numeric codes are NOT subject to internationalization during transmission ๐ข.
4.5.3. Metadata ๐ท๏ธ
The password authentication exchange SHOULD support additional associated metadata that can indicate whether the authentication is for a user or a machine ๐งโ๐ป๐ฅ๏ธ. This lets the EAP server and peer request and negotiate authentication specifically for a user or a machine ๐ค. It's super useful when there are multiple inner authentications and both the user and the machine need to be authenticated ๐ .
4.5.4. Password Change ๐
The password authentication exchange MUST support password change ๐. The exchange SHOULD be extensible to support other "housekeeping" functions, like managing PINs or other data that some systems need ๐งนโจ.
4.6. Requirements Associated with Carrying EAP Methods ๐ฆ
The tunnel method MUST be able to carry inner EAP methods WITHOUT modifying them ๐. EAP methods MUST NOT be redefined inside the tunnel ๐ โโ๏ธ.
4.6.1. Method Negotiation ๐ค
The tunnel method MUST support the protected negotiation of the inner EAP method ๐. It MUST NOT allow intermediaries to manipulate the inner EAP method negotiation ๐ซ๐ง.
4.6.2. Chained Methods ๐
The tunnel method SHOULD support chaining multiple EAP methods together ๐. The tunnel method MUST allow for the communication of intermediate results and for verification of compound binding between executed inner methods when chained methods are used ๐ซถโจ.
4.6.3. Cryptographic Binding with the TLS Tunnel โจ
Okay bestie, the tunnel method MUST provide a mechanism to bind the tunnel protocol and the inner EAP method, and that's called cryptographic binding ๐. Bindings are a huge tool for stopping tunnel MitM attacks [TUNNEL-MITM] ๐. Cryptographic bindings can fully prevent tunnel MitM attacks without extra security policies, as long as the inner method derives keys and isn't vulnerable to attacks outside a protected tunnel [LCN-2010]. Weak or non-key-deriving inner methods may still be permitted, though ๐. So security policies that prevent tunnel MitM attacks are still needed, and the tunnel method MUST provide cryptographic bindings, because that's what lets you move to more secure, policy-independent implementations ๐.
Cryptographic bindings usually happen by securely mixing the keying material from the tunnel protocol (like tunnel key TK) with the keying material from the inner authentication method(s) (like method key MK), which gives you fresh keying material ๐งช. If chained EAP methods run inside the tunnel, all the derived inner keys get combined with the tunnel key into a new compound tunnel key (CTK) ๐. CTK is then used to derive the EAP MSK, EMSK and other transient keys (shown as "TEK" below), like transient encryption keys and integrity protection keys ๐๏ธ. Figure 1 shows the key hierarchy for tunnel method executions that derive compound keys for binding ๐ธ.
For sequential executions of n inner methods, a chained compound key CTK_i MUST be computed when each inner method i completes, so that it contains the compound key of all previous inner methods: CTK_i=f(CTK_i-1, MK_i) with 0 < i <= n and CTK_0=TK. Here f() is a key derivation function, such as one that complies with NIST's "Recommendation for Key Derivation Using Pseudorandom Functions" [NIST-SP-800-108] ๐ค. CTK_n SHOULD serve as the key to derive further keys. Figure 1 depicts the key hierarchy for a single inner method. Transient keys derived from the compound key CTK are used in a cryptographic protocol to verify the integrity of the tunnel and the inner authentication method ๐ก๏ธ.
-----------
| TK | MK |
-----------
| |
v v
--------
| CTK |
--------
|
v
----------------
| | |
v v v
------- ------ -------
| TEK | | MSK | | EMSK |
------- ------- --------
Figure 1: Compound Keys
Furthermore, all compound keys CTK_i and all keys derived from them SHOULD follow the recommendations for key derivations and key hierarchies in [NIST-SP-800-108] ๐. In particular, every derived key MUST have a lifetime that doesn't exceed the lifetime of any key higher up the hierarchy โณ. The derivation MUST prevent a compromise in one part of the system from leading to compromises in other parts that rely on keys at the same or higher level in the hierarchy ๐ซ.
4.6.4. Peer-Initiated EAP Authentication ๐
The tunnel method SHOULD allow the peer to start an inner EAP authentication, so it can meet its policy requirements for authenticating the server ๐.
4.6.5. Method Metadata ๐ท๏ธ
The tunnel method SHOULD allow additional data associated with an EAP method to be communicated. This can indicate whether the authentication is for a user or a machine ๐งโ๐ป๐ฅ๏ธ. That way, the EAP server and peer can request and negotiate authentication specifically for a user or for a machine. It's super useful when there are multiple inner EAP authentications and both the user and the machine need to be authenticated ๐ฏ.
5. Security Considerations โจ
A tunnel method is often deployed to provide mutual authentication between EAP Peer and EAP Server and to generate key material for protecting lower-layer protocols ๐. The tunnel also protects other data, including peer identity, between EAP Peer and EAP Server from disclosure to or modification by an attacker ๐ซฃ. These sections cover the considerations that affect whether a method can actually reach these goals ๐ฏ.
5.1. Cipher Suite Selection ๐งฉ
TLS supports a wide range of cipher suites with different security properties, so picking one is critical to the security of the tunnel method ๐. Choosing a cipher suite with weak or no authentication, like an anonymous Diffie-Hellman-based cipher suite, will greatly increase the risk of system compromise ๐. Since a tunnel method uses the TLS tunnel to transport data, picking a cipher suite with weak data encryption and integrity algorithms also makes the method more vulnerable to attacks ๐ญ.
A tunnel protocol is prone to downgrading attacks if it supports any key establishment algorithm that can be broken on-line. In a successful downgrading attack, an adversary breaks the selected "weak" key establishment algorithm and optionally the "weak" authentication algorithm without being detected. Here, "weak" refers to a key establishment algorithm that can be broken in real time, and to an authentication scheme that can be broken off-line, respectively ๐ต๏ธ. See [HC07] for more details. The requirements in this document disapprove the use of key establishment algorithms that can be broken on-line ๐ โโ๏ธ.
Mutually anonymous tunnel protocols are prone to man-in-the-middle attacks described in [HC07]. During such an attack, an adversary establishes one tunnel with the peer and one with the authentication server, while the peer and server believe they've built a tunnel with each other ๐ฑ. Once both tunnels are up, the adversary can eavesdrop on all communications within the tunnels, i.e., the execution of the inner authentication method(s). That means the adversary can eavesdrop on the identifiers exchanged as part of the EAP method, so the privacy of the peer and/or authentication server is compromised, along with any other data sent inside the tunnels ๐ซ . This document requires server authentication to avoid the risks associated with anonymous cipher suites ๐ก๏ธ.
5.2. Tunneled Authentication ๐ญ
In many cases, a tunnel method provides mutual authentication by authenticating the server during tunnel establishment and then authenticating the peer inside the tunnel using an EAP method. As [TUNNEL-MITM] describes, this mode of operation can let tunnel man-in-the-middle attackers authenticate to the server as the peer, by tunneling the inner EAP protocol messages to and from a peer that's running the method outside a tunnel or with an untrustworthy server ๐ซฃ. Cryptographic binding between the established keying material from the inner authentication method(s) and the tunnel protocol verifies that the endpoints of the tunnel and the inner authentication method(s) are the same. This can thwart the attack if the inner-method-derived keys are strong enough that they can't be broken in real time ๐ช.
In cases where the inner authentication method doesn't generate any key material or only weak key material, security policies MUST be enforced so the peer can't execute the inner method with the same credentials outside a protective tunnel or with an untrustworthy server ๐จ
5.3. Data External to Tunnel ๐ฆ
The tunnel method will use data that sits outside the TLS tunnel, like the EAP type code or version numbers. If an attacker can compromise the protocol by modifying these values, the tunnel method MUST protect this data from modification. In some cases, external data may not need extra protection, because it's implicitly verified during protocol operation โ .
5.4. Separation of TLS Tunnel and Inner Authentication Termination ๐ช
Terminating the inner method at a different location than the outer tunnel needs careful consideration ๐ค. The inner method data may be vulnerable to modification and eavesdropping between the server that terminates the tunnel and the server that terminates the inner method. For example, if a cleartext password is used, it may be sent to the inner method server in a RADIUS password attribute, which uses weak encryption that may not be suitable protection for many environments ๐.
In some cases, terminating the tunnel at a different location may make it difficult for a peer to authenticate the server and trust it for further communication. For example, if the TLS tunnel is terminated by a different organization, the peer needs to be able to authenticate and authorize the tunnel server to handle secret credentials that the peer shares with the home server that terminates the inner method. This may not meet the security policy of many environments ๐ฌ.
6. References ๐
6.1. Normative References
[RFC2560] Myers, M., Ankney, R., Malpani, A., Galperin, S., and
C. Adams, "X.509 Internet Public Key Infrastructure
Online Certificate Status Protocol - OCSP", RFC 2560,
June 1999.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, November 2003.
[RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and
H. Levkowetz, "Extensible Authentication Protocol
(EAP)", RFC 3748, June 2004.
[RFC4017] Stanley, D., Walker, J., and B. Aboba, "Extensible
Authentication Protocol (EAP) Method Requirements for
Wireless LANs", RFC 4017, March 2005.
[RFC4962] Housley, R. and B. Aboba, "Guidance for Authentication,
Authorization, and Accounting (AAA) Key Management",
BCP 132, RFC 4962, July 2007.
[RFC5055] Freeman, T., Housley, R., Malpani, A., Cooper, D., and
W. Polk, "Server-Based Certificate Validation Protocol
(SCVP)", RFC 5055, December 2007.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer
Security (TLS) Protocol Version 1.2", RFC 5246, August
2008.
[RFC5247] Aboba, B., Simon, D., and P. Eronen, "Extensible
Authentication Protocol (EAP) Key Management
Framework", RFC 5247, August 2008.
[RFC6677] Hartman, S., Ed., Clancy, T., and K. Hoeper, "Channel
Binding Support for Extensible Authentication Protocol
(EAP) Methods", RFC 6677, July 2012.
6.2. Informative References ๐โจ
okay so these are the "for your reading list" ones, bestie ๐ง nothing here is a MUST-read, but they're the receipts behind the whole spec. the vibe is research-girlie, and every single entry stays exactly as written ๐
[EAP-ENROLL] Mahy, R., "An Extensible Authentication Protocol (EAP)
Enrollment Method", Work in Progress, March 2006.
[HC07] Hoeper, K. and L. Chen, "Where EAP Security Claims
Fail", Institute for Computer Sciences, Social
Informatics and Telecommunications Engineering (ICST),
The Fourth International Conference on Heterogeneous
Networking for Quality, Reliability, Security and
Robustness (QShine 2007), August 2007.
[LCN-2010] Hoeper, K. and L. Chen, "An Inconvenient Truth about
Tunneled Authentications", Proceedings of 35th Annual
IEEE Conference on Local Computer Networks (LCN 2010),
September 2009.
[NIST-SP-800-108]
Chen, L., "Recommendation for Key Derivation Using
Pseudorandom Functions", Draft NIST Special Publication
800-108, April 2008.
[NIST-SP-800-120]
Hoeper, K. and L. Chen, "Recommendation for EAP Methods
Used in Wireless Network Access Authentication", NIST
Special Publication 800-120, September 2009.
[NIST-SP-800-57]
Barker, E., Barker, W., Burr, W., Polk, W., and M.
Smid, "Recommendation for Key Management - Part 1:
General (Revised)", NIST Special Publication 800-57,
part 1, March 2007.
[NIST-SP-800-57p3]
Barker, E., Burr, W., Jones, A., Polk, W., Rose, S.,
and M. Smid, "Recommendation for Key Management, Part 3
Application-Specific Key Management Guidance", Draft
NIST Special Publication 800-57, part 3, October 2008.
[PEAP] Microsoft Corporation, "[MS-PEAP]: Protected Extensible
Authentication Protocol (PEAP) Specification", August
2009, <http:// download.microsoft.com/download/9/5/E/
95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-
PEAP%5D.pdf>.
[RFC4013] Zeilenga, K., "SASLprep: Stringprep Profile for User
Names and Passwords", RFC 4013, February 2005.
[RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, "The
Network Access Identifier", RFC 4282, December 2005.
[RFC4511] Sermersheim, J., "Lightweight Directory Access Protocol
(LDAP): The Protocol", RFC 4511, June 2006.
[RFC4851] Cam-Winget, N., McGrew, D., Salowey, J., and H. Zhou,
"The Flexible Authentication via Secure Tunneling
Extensible Authentication Protocol Method (EAP-FAST)",
RFC 4851, May 2007.
[RFC5056] Williams, N., "On the Use of Channel Bindings to Secure
Channels", RFC 5056, November 2007.
[RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig,
"Transport Layer Security (TLS) Session Resumption
without Server-Side State", RFC 5077, January 2008.
[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for
Network Interchange", RFC 5198, March 2008.
[RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and
J. Tardo, "Network Endpoint Assessment (NEA): Overview
and Requirements", RFC 5209, June 2008.
[RFC5281] Funk, P. and S. Blake-Wilson, "Extensible
Authentication Protocol Tunneled Transport Layer
Security Authenticated Protocol Version 0 (EAP-
TTLSv0)", RFC 5281, August 2008.
[RFC5646] Phillips, A. and M. Davis, "Tags for Identifying
Languages", BCP 47, RFC 5646, September 2009.
[RFC5793] Sahita, R., Hanna, S., Hurst, R., and K. Narayan,
"PB-TNC: A Posture Broker (PB) Protocol Compatible with
Trusted Network Connect (TNC)", RFC 5793, March 2010.
[RFC6066] Eastlake, D., "Transport Layer Security (TLS)
Extensions: Extension Definitions", RFC 6066, January
2011.
[TUNNEL-MITM] Asokan, N., Niemi, V., and K. Nyberg, "Man-in-the-
Middle in Tunnelled Authentication Protocols",
Cryptology ePrint Archive: Report 2002/163, November
2002.
Authors' Addresses ๐
and last but not least, the squad that made this happen ๐ซถ here are the contact details, copied exactly:
Katrin Hoeper
Motorola Solutions, Inc.
1301 E. Algonquin Road
Schaumburg, IL 60196
USA
EMail: khoeper@motorolasolutions.com
Stephen Hanna
Juniper Networks
3 Beverly Road
Bedford, MA 01730
USA
EMail: shanna@juniper.net
Hao Zhou
Cisco Systems, Inc.
4125 Highlander Parkway
Richfield, OH 44286
USA
EMail: hzhou@cisco.com
Joseph Salowey (editor)
Cisco Systems, Inc.
2901 3rd. Ave
Seattle, WA 98121
USA
EMail: jsalowey@cisco.com
that's the whole document, bestie ๐๐ literally iconic work from these four ๐
๐ฆ where this page comes from
- ietf: rfc6678 2012-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms