PPPEXT Working Group Ashwin Palekar INTERNET-DRAFT Dan Simon Category: Standards Track Microsoft<draft-josefsson-pppext-eap-tls-eap-06.txt>Corporation <draft-josefsson-pppext-eap-tls-eap-07.txt> Glen Zorn22 March26 October 2003 Joe Salowey Hao Zhou Cisco Systems S. JosefssonExtundoExundo Protected EAP Protocol (PEAP) Version 2 This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC 2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Copyright Notice Copyright (C) The Internet Society(2002).(2003). All Rights Reserved. Abstract The Extensible Authentication Protocol(EAP), defined in RFC 2284,(EAP) provides for support of multiple authentication methods.While EAP was originally created for use with PPP, it has since been adopted for use with IEEE 802.1X "Network Port Authentication". Since its deployment, a number of weaknesses in EAP or some EAP protocols have become apparent. These include no per packet confidentiality and integrity protection;This document defines the Protected Extensible Authentication Protocol (PEAP) Version 2, whichresults in lack of protection to user identity, notification messages or EAP negotiation; and sequencing of EAP methods. In addition, there is no standardized mechanism for key exchange; no built-in support for fragmentation and reassembly; no support for acknowledged success/failure indications;provides an encrypted andno support for fast reconnect. In addition, someauthenticated tunnel based on transport layer security (TLS) that encapsulates EAPprotocols (e.g. like EAP-MD5) are susceptible to dictionary and brute force attacks; do not provide confidentiality; do not support serverauthenticationrequiredmechanisms. PEAPv2 uses TLS toprevent spoofing byprotect against rogueservers (gateways), and do not supportauthenticators, protect against various attacks on thegenerationconfidentiality and integrity ofkey strength required for 802.11i. By wrappingthe inner EAPprotocol within TLS, Protected EAP (PEAP) addresses these deficiencies in EAP or EAP protocols.method exchange and provide EAPmethod(s) running within PEAP are provided with built-inpeer identity privacy. PEAPv2 also provides support forPrivacy of user identity. Protection to individual EAP methods. For example, protection can provide dictionary attack resistance to protocols susceptible to that attack. Protected EAP notification. Protected sequencing ofchaining multiple EAPmethods. Protected negotiation. Protectedmechanisms, cryptographic binding between authentications performed by inner EAPheader. Protectedmechanisms and the tunnel, exchange of arbitrary parameters(TLVs) between client and server. Standardized mechanism for key exchange. Proven key derivation and management. Session resumption. Server authentication. Protected Acknowledged(TLVs), optimized session resumption, andresult exchange. Fragmentationfragmentation and reassembly. Table of ContentsProtected EAP Protocol (PEAP)......................................11.Introduction.................................................3 1.1.Introduction .......................................... 4 1.1 Requirementslanguage.......................................5 1.2. Terminology.................................................5 1.3.language ........................... 6 1.2 Terminology ..................................... 6 1.3 Operationalmodel...........................................6model ............................... 8 2. Protocoloverview............................................7 2.1. PEAPoverview ..................................... 11 2.1 PEAPv2 Part1.................................................8 2.2. PEAP1 .................................. 11 2.2 PEAPv2 Part2................................................11 2.3. Version negotiation........................................12 2.4. Termination................................................12 2.5.2 .................................. 16 2.3 Errorhandling.............................................14 2.6. Retry behavior.............................................15 2.7. Session resumption.........................................15 2.8. Fragmentation..............................................16 2.9.handling ................................. 19 2.4 Fragmentation .................................. 21 2.5 Keyderivation.............................................17 2.10.derivation ................................. 22 2.6 Ciphersuitenegotiation....................................18negotiation ........................ 24 3. Detailed description of thePEAP protocol...................18 3.1. PEAPPEAPv2 protocol .......... 25 3.1 PEAPv2 PacketFormat.........................................18 3.2. PEAPFormat ........................... 25 3.2 PEAPv2 RequestPacket........................................20Packet .......................... 26 3.3 PEAPv2 Response Packet ......................... 28 3.4 PEAPv2 Part 2 Packet Format ................... 29 4. EAP TLVmethod..............................................23 4.1. Protected success/failure..................................23 4.2.method ....................................... 30 4.1 EAP-TLV RequestPacket.....................................25 4.3.packet ......................... 30 4.2 EAP-TLV ResponsePacket....................................25 4.4. EAP-TLVpacket ......,,................ 31 4.3 TLVformat.........................................26 4.5.format ..................................... 32 4.4 ResultTLV.................................................27 4.6.TLV ..................................... 33 4.5 NAKTLV....................................................28TLV ........................................ 34 4.6 Crypto-Binding TLV ............................. 35 4.7 Connection-Binding TLV ......................... 37 4.8 Vendor-Specific TLV ............................ 38 4.9 URI TLV ........................................ 39 4.10 EAP Payload TLV ................................ 40 4.11 Intermediate Result TLV ........................ 41 4.12 TLV Rules ...................................... 42 5. SecurityConsiderations.....................................28 5.1.considerations .............................. 43 5.1 Authentication and integrityprotection....................28 5.2.protection ........ 43 5.2 Methodnegotiation.........................................29 5.3.negotiation ............................. 44 5.3 TLS session cachehandling.................................29 5.4.handling ..................... 44 5.4 Certificaterevocation.....................................30 5.5.revocation ......................... 45 5.5 Separation oftheEAP server andthe authenticator.........31 5.6.authenticator ..... 46 5.6 Separation ofPEAPPEAPv2 Part 1 and Part 2Servers...............31 5.7.Servers . 47 5.7 Identityverification......................................32 5.8.verification .......................... 48 5.8 Man-in-the-middleprotection...............................34attack protection ............ 50 5.9 Cleartext forgeries ............................ 50 5.10 TLS Ciphersuites ............................... 51 5.11 Denial of service attacks ...................... 51 5.12 Security Claims ................................ 52 6. IANAConsiderations.........................................35 6.1.Considerations ................................. 53 6.1 Definition ofTerms........................................35 6.2.Terms ............................ 53 6.2 Recommended RegistrationPolicies..........................35Policies .............. 53 7. References .......................................... 53 7.1 Normativereferences........................................35 8.references ........................... 53 7.2 Informativereferences......................................36 9.references ......................... 54 Appendix A -Examples.......................................37 10. and Contributions..........................................49 11.Examples ........................................ 56 Acknowledgments .............................................. 70 Author's Addresses ........................................... 70 Intellectual PropertyStatement.............................50 12.Statement .............................. 71 Full CopyrightStatement....................................51Statement ..................................... 72 1. Introduction The Extensible Authentication Protocol (EAP),describeddefined in[RFC2284],[RFC2284bis], providesa standard mechanismfor support of multiple authentication methods.Through the use of EAP, support for a number of authentication schemes may be added, including smart cards, Kerberos, Public Key, One Time Passwords, and others.EAP was developedorfor use on wired networks, where physical security was presumed. EAP over PPP, defined in[RFC2284],[RFC2284bis], is typically deployed with leased lines or modem connections, requiring an attacker to gain access to the telephone network in order to snoop on the conversation or inject packets. [IEEE8021X] defines EAP over IEEE 802 local area networks(EAPOL), presuming the existence of switched media; in order to snoop or inject packets, an attacker would need to gain administrative access to the switch. Due to the presumption of physical security, facilities for protection of the EAP conversation were not provided. Where an attacker can easily gain access to the medium (such as on a wireless network or where EAP is run over IP), the presumption of physical security is no longer valid. Sincetheits deployment, a number of weaknesses in EAP framework have become apparent. These include lack of: identity protection protected method negotiationis unprotected, an attacker can inject packets in order to cause the negotiation of a method with lesser security. Denialprotected notification messages protected termination messages support for sequences ofservice attacks are also possible. Since the initialEAPIdentity Request/Responsemethods support for fragmentation and reassembly support for a generic way to exchangeis sentarbitrary parameters inthe clear, an attacker snooping on the conversation can collect user identitiesa secure channel support foruse in subsequent attacks.generic optimized re-authentication In addition many EAP methods lack the following features: mutual authentication resistance to dictionary attacks adequate key generation Byinitially negotiating a TLS channel, and then conductingwrapping the EAPconversationprotocol withinit, PEAPTLS, Protected EAP (PEAP) Version 2 addresses these deficiencies in EAP or EAP methods. TLS providesforper-packet encryption, authentication, integrity and replay protection of the EAP conversation. Benefits of PEAP Version 2 include: Identity protection By encrypting the identity exchange, and allowing clientcredentialscertificates to be provided after negotiation of the TLS channel,PEAPPEAPv2 provides for identity protection. Dictionary attack resistance By conducting the EAP conversation within a TLS channel,PEAPPEAPv2 protects EAP methods that might be subject to an offline dictionary attack were they to be conducted in the clear. Protected negotiation Since withinPEAP,PEAPv2, the EAP conversation is authenticated, integrity and replay protected on a per-packet basis, the EAP method negotiation that occurs withinPEAPPEAPv2 is protected, as are error messages sent within the TLS channel (TLS alerts or EAP Notification packets). EAP negotiation outside of PEAPv2 is not protected. Header protection WithinPEAP,PEAPv2, the EAP conversation is conducted within a TLS channel. As a result, the Type-Data field within PEAPv2 (including the EAP header of the EAP method within PEAPv2) is protected against modification. However, the EAP header of PEAPv2 itself is not protected against modification, including the Code, Identifier and Type fields. Protected termination By sending success/failure indications within the TLS channel,PEAPPEAPv2 provides support for protected termination of the EAP conversation. This prevents an attacker from carrying out denial of service attacks by spoofing EAP Failure messages, or fooling the EAP peer into accepting a rogue NAS, by spoofing EAP Success messages. Fragmentation and Reassembly Since EAP does not include support for fragmentation and reassembly, individual methods need to include this capability. By including support for fragmentation and reassembly withinPEAP,methodsPEAPv2, methods leveragingPEAPPEAPv2 do not need to support this on their own. Fast reconnect Where EAP is used for authentication in wireless networks, the authentication latency is a concern. As a result, it is valuable to be able to do a quick re-authentication on roaming between access points.PEAPPEAPv2 supports this capability by leveraging the TLS session resumption facility, and any EAP method running underPEAPPEAPv2 can take advantage of it.Proven and Method independentStandard keymanagementestablishment In order to provide keying material for a wide range of link layer ciphersuites, EAP methods need to providea key hierarchy generating authentication and encryption keys, as well as initialization vectors. Development of a secure key hierarchykeying material. Key derivation iscomplex, and not easy to generalizecomplex. PEAPv2 provides forall EAP methods. Bykey establishment by relying on the widely implemented and well-reviewed TLS [RFC2246] key derivationmethod, PEAPmechanism. PEAPv2 providesthe requiredkeying material for any EAP method running within it.This frees EAP method developments from creating keying material with key strength required for 802.11i wireless LAN.If EAP methods will also be deployed withouttheexternal protectionof PEAP(e.g PEAPv2 orIPSEC,IPSec), then the EAP methods shouldderive key material of sufficient strengthfollow the guidelines in section 6.8 to preventa Man-in-the- middle attack described inthecompound binding draft [CompoundBinding].man-in-the-middle attacks. Sequencing of multiple EAP methods In order to enhance security, PEAPv2 implementations may choose to provide multi-factor authentication that validates different identities (for example user and machine identities) and/or uses different credentials of the same or different identities of the peer (e.g. user password and machine cert). PEAPv2 provides a standard way to chain different types of authentication mechanisms supporting different types of credentials. Protected exchange of arbitrary parameters (TLVs) Type-Length-Value (TLV) tuples provide a way to exchange arbitrary information between peer and EAP server within a secure channel. This information can include signaling parameters for EAP protocol, provisioning parameters, media specific and environment specific data, and authorization parameters. The advantage of using PEAP TLVs is that every EAP method does not have to be modified. 1.1. Requirements language In this document, the key words "MAY", "MUST, "MUST NOT", "OPTIONAL", "RECOMMENDED", "SHOULD", and "SHOULD NOT", are to be interpreted as described in [RFC2119]. 1.2. Terminology This document frequently uses the following terms: Access Point A Network Access Server implementing 802.11. Authenticator The end of the linkrequiring theinitiating EAP authentication. This term is also used in [IEEE8021X] and has the same meaning in this document. Backend Authentication ServerAn Authentication ServerA backend authentication server is an entity that provides anAuthentication Serviceauthentication service to anNAS. This service verifies from the credentials provided by the peer, the claim of identity made byAuthenticator. When used, this server typically executes EAP methods for thepeer.Authenticator. This terminology is also used in [IEEE8021X]. EAP server TheEAP server is theentity that terminates the EAPconversationauthentication method with the peer.TheIn the case where no backend authentication server is used, the EAP servermay resideis part of the Authenticator. In the case where the authenticator operates in pass-through mode, the EAP server is located on theNAS, or alternatively within abackend authentication server. Link layer ciphersuite The ciphersuite negotiated for use at the link layer.Master key The key derived between the EAP client and EAP server during the EAP authentication process. Master session key The keys derived from the master key are subsequently used in generation of the transient session keys for authentication, encryption, binding exchange, and IV-generation.NAS Short for "Network Access Server". Peer Theotherend of thepoint-to-pointlink(PPP), point-to-point LAN segment (IEEE 802.1X) or 802.11 wireless link, which is being authenticated bythat responds to theNAS.authenticator. InIEEE 802.1X,[IEEE8021X], this end is known as the Supplicant. TLS Ciphersuite The ciphersuite negotiated for protection of thePEAPPEAPv2 Part 2 conversation. EAP Master key (MK) A key derived between the PEAPv2 client and server during the authentication conversation, and that is kept local to PEAPv2 and not exported or made available to a third party. Master Session Key (MSK) Keying material (64 octets) that is derived between the PEAPv2 client and server and exported by the PEAPv2 implementation. AAA-Key Where a backend authentication server is present, acting as an EAP server, keying material known as the AAA-Key is transported from the authentication server to the authenticator. The AAA-Key is used by the EAP peer and authenticator in the derivation of Transientsession keysSession Keys (TSKs) for the ciphersuite negotiated between the EAP peer and authenticator. As a result, the AAA-Key is typically known by all parties in the EAP exchange: the peer, authenticator and the authentication server (if present). Extended Master Session Key (EMSK) Additional keying material (64 octets) derived between the EAP client and server that is exported by the EAP method. Thetransient session keys areEMSK is known only to the EAP peer and server and is not provided to a third party. Initialization Vector (IV) A 64 octet quantity, suitable for use in an initialization vector field, that is derivedfrombetween themaster session keys,EAP client and server. Since the IV is a known value in PEAPv2, it cannot be used by itself for computation of any quantity that needs to remain secret. As a result, PEAPv2 implementations are not required to generate it. Pairwise Master Key (PMK) The AAA-Key is divided into two halves, the "Peer to Authenticator Encryption Key" (Enc-RECV-Key) and "Authenticator to Peer Encryption Key" (Enc-SEND-Key) (reception is defined from the point of view of theappropriate sizeauthenticator). Within [IEEE80211i] Octets 0-31 of the AAA-Key (Enc-RECV-Key) are known as the Pairwise Master Key (PMK). Transient EAP Keys (TEKs) Session keys which are used to establish a protected channel between the EAP peer andtypeserver during the EAP authentication exchange. The TEKs are appropriate for use with thechosen link layer ciphersuite.ciphersuite negotiated between EAP peer and server for use in protecting the EAP conversation. Note that the ciphersuite used to set up the protected channel between the EAP peer and server during EAP authentication is unrelated to the ciphersuite used to subsequently protect data sent between the EAP peer and Authenticator. TLV TLV standards for objects of format Type-Length-Value. The TLV format is defined in Section 4 of this document. 1.3. Operational model In EAP, the EAP server may be implemented either within a Network Access Server (NAS) or on a backend authentication server. Where the EAP server resides on a NAS, the NAS is required to implement the desired EAP methods, and therefore needs to be upgraded to support each new EAP method. One of the goals of EAP is to enable development of new authentication methods without requiring deployment of new code on the Network Access Server (NAS). Where a backend authentication server is deployed, the NAS acts as a "passthrough" and need not understand specific EAP methods. This allows new EAP methods to be deployed on the EAP peer and backend authentication server, without the need to upgrade code residing on the NAS. Figure 1 describes the relationship between the EAP peer, NAS and EAP server. As described in the figure, the EAP conversation occurs between the EAP peer and EAP server, "passing through" the NAS. In order for the conversation to proceed in the case where the NAS and EAP server reside on separate machines, the NAS and EAP server need to establish trust beforehand.In PEAP, the conversation between the EAP peer and the EAP server is encrypted, authenticated, integrity and replay protected within a TLS channel, and mutual authentication is required between the EAP peer and the EAP server. As a result, where the NAS acts as a "passthrough" it does not have knowledge of the TLS master secret derived between the EAP Peer and the EAP server. In order to provide keying material for link-layer ciphersuites, the NAS obtains the master session keys, which are derived from the TLS master secret via a one-way function. This enables the NAS and EAP peer to derive keys suitable for encrypting, authenticating and integrity protecting session data. However, the NAS cannot decrypt the PEAP conversation or spoof session resumption, since this requires knowledge of the TLS master secret.+-+-+-+-+-+ +-+-+-+-+-+ | | | | | Link | | Link | | Layer | | Layer | | Cipher- | | Cipher- | | Suite | | Suite | | | | | +-+-+-+-+-+ +-+-+-+-+-+ ^ ^ | | | | | | V V +-+-+-+-+-+ +-+-+-+-+-+ Trust +-+-+-+-+-+ | | EAP | |<======>| | | | Conversation | | | | | EAP |<================================>| EAP | | Peer | (over PPP, | NAS | | Server | | | 802.11,etc.) | |<=======| | | | | | Keys | | | | | | | | +-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+ ^ ^ | | | EAP API | EAP API | | V V +-+-+-+-+-+ +-+-+-+-+-+ | | | | | | | | | EAP | | EAP | | Method | | Method | | | | | +-+-+-+-+-+ +-+-+-+-+-+ Figure 1 - Relationship between EAP client, backend authentication server and NAS. In PEAPv2, the conversation between the EAP peer and the EAP server is encrypted, authenticated, integrity and replay protected within a TLS channel. As a result, where the NAS acts as a "passthrough" it does not have knowledge of the TLS master secret derived between the peer and the EAP server. In order to provide keying material for link-layer ciphersuites, the NAS obtains the master session key, which is derived from a one-way function of the TLS master secret as well as keying material provided by EAP methods protected within a TLS channel. This enables the NAS and EAP peer to subsequently derive transient session keys suitable for encrypting, authenticating and integrity protecting session data. However, the NAS cannot decrypt the PEAPv2 conversation or spoof session resumption, since this requires knowledge of the TLS master secret. 1.3.1. Sequences EAP [RFC2284bis] prohibits use of multiple authentication methods within a single EAP conversation, except when tunneled methods such as PEAPv2 are used. This restriction was imposed in order to limit vulnerabilities to man-in-the-middle attacks as well as to ensure compatibility with existing EAP implementations. Within PEAP these concerns are addressed since PEAPv2 includes support for cryptographic binding to address man-in-the-middle attacks, as well as version negotiation so as to enable backward compatibility with prior versions of PEAP. Within this document, the term "sequence" refers to a series of EAP authentication methods run in sequence. The methods need not be distinct - for example, EAP-TLS could be run initially with machine credentials followed by the same protocol authenticating with user credentials. PEAPv2 supports two types of sequences: [1] Serial authentication. Initiating additional EAP method(s) after a first successful authentication. In this case the sequence is successful if each of the EAP authentication methods completes successfully. For example, successful authentication might require a successful machine authentication followed by a successful user authentication. [2] Parallel authentication. Initiating an alternative EAP method after failure of one or more initial methods. In this case the overall authentication is successful if any of the methods is successful. For example, if machine authentication fails, then user authentication can be attempted. 2. Protocol overview Protected EAP (PEAP) Version 2 is comprised of a two-part conversation: [1] In Part 1, a TLS session is negotiated, with server authenticating to the client and optionally the client to the server. The negotiated key is then used to encrypt the rest of the conversation. [2] In Part 2, within the TLS session,a completezero or more EAPconversation ismethods are carriedout, unless part 1 provided client authentication.out. Part 2 completes with a success/failure indication protected by the TLS session or a protected error (TLS alert). In the next two sections, we provide an overview of each of the parts of thePEAPPEAPv2 conversation. 2.1.PEAPPEAPv2 Part 1 2.1.1. Initial identity exchange The PEAP conversation typically begins with an optional identity exchange. The authenticator will typically send an EAP- Request/Identity packet to the peer, and the peer will respond with an EAP-Response/Identity packet to theauthenticator, containing the peer's EAP-ID. Since theauthenticator. The initial identity exchange is used primarily to route the EAP conversation to the EAPserver, ifserver. Since the initial identity exchange is in the clear, the peer MAY decide to place a routing realm instead of its real name in the EAP-Response/Identity. The real identity of the peer can be established later in PEAPv2 part 2. If the EAP server is known in advance (such as when all users authenticate against the same backend server infrastructure and roaming is not supported), or if the identity is otherwise determined (such as from the dialing phone number or client MAC address), then theidentityEAP-Request/Response-identity exchange MAY be omitted. Once the optional initial Identity Request/Response exchange is completed, while nominally the EAP conversation occurs between the authenticator and the peer, the authenticator MAY act as a passthrough device, with the EAP packets received from the peer being encapsulated for transmission to a backend authentication server. However, PEAP does not require a backend authentication server; if the authenticator implementsPEAP and is provisioned with the appropriate certificates,PEAP, then it can authenticate local users. In the discussion that follows, we will use the term "EAP server" to denote the ultimate endpoint conversing with the peer. 2.1.2. TLS Session Establishment In this section, the protocol is described assuming a certificate based ciphersuite is negotiated in TLS. The conversation may slightly differ if other TLS ciphersuites are used. Once having received the peer's Identity, and determined that PEAP authentication is to occur, the EAP server MUST respond with a PEAP/Start packet, which is an EAP-Request packet withEAP- Type=PEAP,theEAP-Type=PEAP, the Start (S) bit set, the PEAP version as specified in Section 2.1.5, and no data. Assuming that the peer supports PEAP, the PEAP conversation will then begin, with the peer sending an EAP-Response packet with EAP-Type=PEAP. The data field of the EAP-Response packet will encapsulate one or more TLS records in TLS record layer format, containing a TLS client_hello handshake message. The current cipher spec for the TLS records will be TLS_NULL_WITH_NULL_NULL and null compression. This current cipher spec remains the same until the change_cipher_spec message signals that subsequent records will have the negotiated attributes for the remainder of the handshake. The client_hello message contains the client's TLS version number, a sessionId, a random number, and a set of TLS ciphersuites supported by the client. The version offered by the client MUST correspond to TLS v1.0 or later. The EAP server will then respond with an EAP-Request packet withEAP-Type=PEAP.EAP- Type=PEAP. The data field of this packet will encapsulate one or more TLS records. These will contain a TLS server_hello handshake message, possibly followed by TLS certificate, server_key_exchange, certificate_request, server_hello_done and/or finished handshake messages, and/or a TLS change_cipher_spec message. Since after the TLS session is established, another complete EAP negotiation will occur and the peer will authenticate using a secondary mechanism, withPEAPPEAPv2 the client need not authenticate as part of TLS session establishment. As a result, although the EAP- Request packet sent by the EAP Server MAY contain a certificate_request message, this is not required. The certificate_request message indicates that the server desires the client to authenticate itself via public key.Typically when the EAP server sends a certificate_request message, the intent is to complete the PEAP authentication without requiring negotiation of an additional EAP method. However, itIt is valid for the server to request a certificate in the server_hello and for the client refuse to provide one.In this case, the EAP server MUST require that PEAP Part 2 be completed.Note that since TLS client certificates are sent in the clear, if identity protection is required, then it is possible for the TLS authentication to be re-negotiated after the first server authentication. To accomplish this, the server will typically not request a certificate in the server_hello, then after the server_finished message is sent, and before PEAP part 2, the server MAY send a TLS hello_request. This allows the client to perform client authentication by sending a client_hello if it wants to, or send a no_renegotiation alert to the server indicating that it wants to continue with PEAP part 2 instead. Assuming that the client permits renegotiation by sending a client_hello, then the server will respond with server_hello, a certificate and certificate_request messages. The client replies with certificate, client_key_exchange and certificate_verify messages. Since thisre- negotiationre-negotiation occurs within the encrypted TLS channel, it does not reveal client certificate details. The server_hello handshake message contains a TLS version number, another random number, a sessionId, and a TLS ciphersuite. The version offered by the server MUST correspond to TLS v1.0 or later.In order to provide confidentiality, integrity and replay protection, and authentication, the negotiated TLS ciphersuite MUST provide all of these security services.If the client's sessionId is null or unrecognized by the server, the server MUST choose the sessionId to establish a new session; otherwise, the sessionId will match that offered by the client, indicating a resumption of the previously established session with that sessionId. The server will also choose a TLS ciphersuite from those offered by the client; if the session matches the client's, then the TLS ciphersuite MUST match the one negotiated during the handshake protocol execution that established the session. PEAP implementations need not necessarily support all TLS ciphersuites listed in [RFC2246]. Not all TLS ciphersuites are supported by available TLS tool kits and licenses may be required to support some TLS ciphersuites (e.g. TLS ciphersuites utilizing the IDEA encryption algorithm). To ensure interoperability, PEAP peers andAuthenticatorsEAP servers MUST support and be able to negotiate the following TLS ciphersuites: TLS_RSA_WITH_3DES_EDE_CBC_SHA In addition, PEAP peers and EAP servers SHOULD support and be able to negotiate the following TLS ciphersuites. TLS_RSA_WITH_AES_128_CBC_SHA TLS_RSA_WITH_RC4_128_MD5 TLS_RSA_WITH_RC4_128_SHATLS_RSA_WITH_3DES_EDE_CBC_SHA (FIPS compliant)TLS as described in [RFC2246] supports compression as well as ciphersuite negotiation. Therefore during thePEAPPEAPv2 Part 1 conversation the EAP endpoints MAY request or negotiate TLS compression. 2.1.3. Full handshake If the EAP server is not resuming a previously established session, and if a ciphersuite based on certificates is used, then it MUST include a TLS server_certificate handshake message, and a server_hello_done handshake message MUST be the last handshake message encapsulated in this EAP-Request packet. The certificate message contains a public key certificate chain for either a key exchange public key (such as an RSA or Diffie-Hellman key exchange public key) or a signature public key (such as an RSA or DSS signature public key). In the latter case, a TLS server_key_exchange handshake message MUST also be included to allow the key exchange to take place.TheIf the preceding server_hello message sent by the EAP server in the preceding EAP-Request packet did not indicate the resumption of a previous session, then the peer MUST respond to the EAP-Request with an EAP-Response packet of EAP-Type=PEAP. The data field of this packet will encapsulate one or more TLS records containing a TLS change_cipher_spec message and finished handshake message, and possibly certificate, certificate_verify and/or client_key_exchange handshake messages.If the preceding server_hello message sent by theThe EAP serverin the precedingMUST then respond with an EAP-Request packetindicatedwith EAP- Type=PEAP, which includes, in the case of a new TLS session, one or more TLS records containing TLS change_cipher_spec, finished handshake messages; and the first payload of PEAPv2 part 2. The first payload of PEAPv2 part 2 is sent along with finished handshake message to reduce number of round trips. 2.1.4. Session resumption The purpose of the sessionId within the TLS protocol is to allow for improved efficiency in the case where a client repeatedly attempts to authenticate to an EAP server within a short period of time. This capability is particularly useful for support of wireless roaming. It is left up to the peer whether to attempt to continue a previous session, thus shortening the PEAP Part 1 conversation. Typically the peer's decision will be made based on the time elapsed since the previous authentication attempt to that EAP server. Based on the sessionId chosen by the peer, and the time elapsed since the previous authentication, the EAP server will decide whether to allow the continuation, or whether to choose a new session. In the case where the EAP server and the authenticator reside on the same device, then the client will only be able to continue sessions when connecting to the same NAS or channel server. Should these devices be set up in a rotary or round-robin then it may not be possible for the peer to know in advance the authenticator it will be connecting to, and therefore which sessionId to attempt to reuse. As a result, it is likely that the continuation attempt will fail. In the case where the EAP authentication is remoted then continuation is much more likely to be successful, since multiple NAS devices and channel servers will remote their EAP authentications to the same backend authentication server. If the EAP server is resuming a previously established session, then it MUSTsendinclude onlythea TLS change_cipher_spec message and a TLS finished handshakemessages.message after the server_hello message. The finished message contains thepeer'sEAP server's authentication response to theEAP server.peer. If the preceding server_hello message sent by the EAP server in the preceding EAP-Request packetdid not indicateindicated the resumption of a previous session, then the peer MUSTsend, in addition tosend only the change_cipher_spec and finishedmessages, a client_key_exchange message, which completes the exchange of a shared master secret betweenhandshake messages. The finished message contains thepeer andpeer's authentication response to the EAP server. TheEAP server MUST then respond with an EAP-Request packet with EAP-Type=PEAP, which includes, in the case of a new TLS session, one or more TLS records containing TLS change_cipher_spec and finished handshake messages. Thelatter contains the EAP server's authentication response to the peer. The peer willthenverify the hash in order to authenticate the EAP server. Ifthe EAP server authenticates unsuccessfully,authentication fails, then the peerMAY send an EAP-Response packet of EAP-Type=PEAP containing a TLS Alert message identifyingand EAP-server MUST follow thereason forerror handling behavior specified in section 2.3. Even if thefailed authentication. The peer MAY send a TLS alert message rather than immediately terminatingsession is successfully resumed with theconversation so as to allowsame EAP server, the peer and EAP server MUST not assume that either will skip inner EAP methods. The peer may have roamed tologa network which may use thecausesame EAP server, but may require conformance with a different authentication policy. 2.1.5. Version negotiation PEAP packets contain a three bit version field, which enables PEAP implementations to be backward compatible with previous versions of theerror for examination byprotocol. This specification documents thesystem administrator. To ensure thatPEAP version 2 protocol; implementations of this specification MUST use a version field set to 2. Version negotiation proceeds as follows: [1] In the first EAP-Request sent with EAPServer receives the TLS alert message,type=PEAP, thepeerEAP server MUSTwait forset theEAP-Serverversion field toreply before terminatingtheconversation. Thehighest supported version number. [2] If the EAPServerpeer supports this version of the protocol, it MUSTreplyrespond with anEAP-Failure packet since server authentication failure is a terminal condition. IfEAP-Response of EAP type=PEAP, and the version number proposed by the EAPserver authenticates successfully,server. [3] If the EAP peerMUST senddoes not support this version, it responds with an EAP-ResponsepacketofEAP-Type=PEAP,EAP type=PEAP andno data.the highest supported version number. [4] If the PEAP server does not support the version number proposed by the PEAP peer, it terminates the conversation, as described in Section 2.2.2. TheEAP-Serverversion negotiation procedure guarantees that the EAP peer and server will agree to the latest version supported by both parties. If version negotiation fails, thencontinues with Part 2use of PEAP will not be possible, and another mutually acceptable EAP method will need to be negotiated if authentication is to proceed. The PEAP version field is not protected by TLS and therefore can be modified in transit. In order to detect modification of the PEAPconversation.version which could occur as part of a "downgrade" attack, the PEAPv2 peer and server MUST exchange information on the highest supported versions proposed by the peers using the crypto-binding- TLV. 2.2.PEAPPEAPv2 Part 2 The second portion of thePEAPPEAPv2 conversation typically consists ofanothera complete EAP conversation occurring within the TLS session negotiated inPEAPPEAPv2 Part1. It1; ending with protected termination using the Result- TLV. PEAPv2 part 2 willthereforeoccur only if establishment of a new TLS session in Part 1 is successful or a TLS session is successfully resumed in Part 1.ItIn cases where a new TLS session is established in PEAPv2 part 1, the first payload of the part 2 conversation is sent by the EAP server along with the finished message to save a round-trip. Part 2 MUST NOT occur if the EAP Server authenticates unsuccessfully or if an EAP-Failure has been sent by the EAPServerserver to the peer, terminating the conversation. Since all packets sent within thePEAPPEAPv2 Part 2 conversation occur after TLS session establishment, they are protected using the negotiated TLS ciphersuite. All EAP packets of the EAP conversation in part 2 including the EAP header of the inner EAP method are protected using the negotiated TLS ciphersuite. Part 2 MAY NOT always include a EAP conversation within the TLS session, referred to in this document as inner EAP methods. However, Part 2 MUST always end with either protected termination or protected error termination. Within Part 2, protected EAP conversation and protected termination packets are always carried within an EAP-TLV packet. The EAP-TLV packet does not include an EAP header. There are TLVs defined for specific purposes such as carrying EAP-authentication messages and carrying cryptographic binding. New TLVs may be developed for other purposes. 2.2.1. Protected conversation Part 2 of the PEAP conversation typically begins with theAuthenticatorEAP server sending an optional EAP-Request/Identity packet to the peer, protected by the TLS ciphersuite negotiated in PEAP Part 1. The peer responds with an EAP-Response/Identity packet to theauthenticator,EAP server, containing the peer's userId. Since this Identity Request/Response exchange is protected by the ciphersuite negotiated in TLS, it isprotected againstnot vulnerable to snooping or packet modification attacks. After the TLS session-protected Identity exchange, the EAP server will then select authentication method(s) for the peer, and will send an EAP-Request with theEAP-TypeType field set to the initial method. As described in[RFC2284],[RFC2284BIS], the peer can NAK the suggested EAP method, suggesting an alternative. Since the NAK will be sent within the TLS channel, it is protected from snooping or packet modification. As a result, an attacker snooping on the exchange will be unable to inject NAKs in order to "negotiate down" the authentication method. An attacker will also not be able to determine which EAP method was negotiated.2.3. Version negotiation PEAP packets contain a three bit version field, which enables PEAP implementations to be backward compatible with previous versions of the protocol. Implementations of this specification MUST use a version field set to 2. This specification documents the protocol for version 2. Version negotiation proceeds as follows: [1] In the first EAP-Request sent withThe EAPtype=PEAP,conversation within the TLS protected session may involve a sequence of zero or more EAPserver MUST set the version field toauthentication methods; it completes with thehighest supported version number. [2] Ifprotected termination described in section 2.2.2. Several EAP-TLVs may be included in each Request and Response. EAP-methods (except if the type is EAP-TLV) are always encapsulated within EAPclient supports this version ofPayload-TLV. In a typical EAP conversation, theprotocol, it MUST respond with an EAP-Responseresult ofEAP type=PEAP, andtheversion number proposedconversation is communicated bythesending EAPserver. [3] IfSuccess or EAP Failure packets after the EAPclient does not support this version, it responds with an EAP-Response ofmethod is complete. The EAPtype=PEAP andSuccess or Failure packet is considered thehighest supported version number. [4] Iflast packet of the EAPserver supports the version proposed by the client, then all future EAP-Request packetsconversation; and therefore cannot be used when sequences need to be supported. Hence, instead of using the EAP-success or EAP-failure packet, both peer and EAPtype=PEAPserver MUSTincludeuse theversion field setIntermediate Result TLV to communicate theagreed upon version number. Similarly,result. In a typical EAP conversation, the EAPclient MUST includeSuccess or EAP Failure is considered theagreed upon version number in all EAP-Response packetslast packet of the EAPtype=PEAP. [5] Ifconversation. Within PEAP, thePEAPEAP serverdoes not supportcan start another EAP method after success or failure of theversion number proposed byprevious EAP method inside thePEAP client, it terminatesprotected session. In a sequence of more than one EAP authentication method, to make sure theconversation, as describedsame parties are involved inSection 2.4. This versiontunnel establishment and successful completion of previous inner EAP methods, before completing negotiationprocedure guarantees thatof the next EAPclientmethod, both peer and EAP serverwill agree to the latest version supported by both parties. If version negotiation fails, thenMUST useof PEAP will not be possible, and another mutually acceptablecrypto binding (Crypto-Binding TLV). If no EAPmethod will need to bemethods have been negotiatedif authentication is to proceed. In order to protect against a downgrade version attack between PEAP versions support byinside thepeers,tunnel or no EAP methods have been successfully completed inside thepeers MUST exchange information ontunnel, thehighest version number supported duringcrypto-binding TLV MUST NOT be used. The Crypto-Binding TLV and thebinding exchange. 2.4. Termination As described in [RFC2284],Intermediate-Result TLV MUST be sent after each successful EAPSuccess and Failure packetsmethod (except for type EAP-TLV). If these TLVs are notauthenticated, so that they maysent, it should beforgedconsidered as tunnel compromise error byan attacker without fear of detection. Forgedpeer and EAPFailure packetsserver. Both TLVs can beused to convincesent in an EAP-TLV packet. Alternatively, if a subsequent EAPpeerconversation is being attempted, then in order todisconnect. Forged EAP Success packets mayreduce round trips, both TLVs SHOULD beused by a rogue NAS to convince a peer to let itself access the network, even thoughsent in theNAS has not authenticated itself. By requiring mutual authentication and by supporting encrypted, authenticated and integrity protected success/failure indications, (described below as "protected" indications) PEAP provides protection against these attacks. Within PEAP, protected success/failure indications are supported by sending these indications withinEAP-Payload of theTLS channel. PEAP support for protected success/failure indications is constrained byfirst EAP packet of the[RFC2284] and [IEEE8021X] specifications. In [IEEE8021X],next EAP conversation (for example, EAP- Identity or EAP-packet of theauthenticator "manufactures" cleartextEAPSuccess and Failure packets based onmethod). Alternatively, if theresult indicated bynext packet is thebackend authentication server. As a result, were aPEAPservertermination packet, then in order tosend a protected EAP Success or EAP Failure packet asreduce round trips, both TLVs SHOULD be sent with thefinal packet withintermination packet. If the EAPexchange, authenticators compliant with [IEEE8021X] would silently discardserver sends a valid Crypto-Binding-TLV to thepacket, and replace itpeer, the peer MUST respond with acleartext EAP Success or Failure. SinceCrypto-Binding TLV. If theclient will discard these unprotected indications, where an authenticator compliant with [IEEE8021X]Crypto-Binding- TLV ispresent,invalid, itis notshould bepossible to conclude a successful authentication. Asconsidered aresult, this approachtunnel compromise error by the peer. If the peer does notprovide reliable authenticated success/failure indications on all media. In addition, [RFC2284] states that an EAP Success or EAP Failurerespond with a EAP-TLV packetterminates the EAP conversation, so that no response is possible. Since EAP Success and EAP Failure packets are not retransmitted, ifcontaining thefinal packet is lost, then authentication will fail. Ascrypto-binding TLV, it should be considered aresult, where packet losstunnel compromise error by the EAP server. 2.2.2. Protected Termination The PEAPv2 part 2 conversation isexpected to be non- negligible, unacknowledgedcompleted by an exchange of success/failure indicationslack robustness. As a result, a PEAP server SHOULD NOT send(Result-TLV) within aprotected EAP Success or EAP FailureEAP-TLV packetasprotected by thefinal packet within a PEAP conversation. However, inTLS session. If thespirit of being "conservative in what you send, liberal in what you receive", a PEAP client SHOULD acceptCrypto-Binding TLV andprocess such a packet if it is received. This behavior makes it possible for implementations to save a round-trip (improving the performance of fast reconnect), assuming thattheauthentication occurs within a low packet loss environmentIntermediate-Result TLV have NOT been exchanged inwhich "manufacture" of packets is guaranteed not to occur. Instead, EAP servers MUST utilizetheacknowledged and protected success/failure indications definedprevious conversation, then they MUST be present inSection 4. In this approach,thePEAP server sends the success/failure indication as an EAP- Request with type=33 (EAP TLV),protected indication packet. Otherwise, it should be considered a tunnel compromise error by the peer and EAP server. The Result TLV is sent within the TLS channel. The PEAP client then replies with aprotected success/failure indication as an EAP-Response with type=33 (EAP TLV).Result-TLV. The conversation concludes with the PEAP server sending a cleartext success/failure indication.Since both sides have already concluded a protected termination conversation, this final packetThe only outcome which should be considered as successful authentication isceremonial. Usewhen an EAP Request ofaType=EAP-TLVs with Result TLV of Status=Success, is answered by an EAP Response of Type=EAP- TLVs with Result TLV of Status=Success. All other combinations (EAP-TLVs Failure, EAP-TLVs Success), (EAP- TLVs Failure, EAP-TLVs Failure), (no EAP-TLVs exchange or no protectedand acknowledged success/failure indication providesEAP Success or Failure) should be considered failed authentications, both by the PEAPprotocol immunity againstpeer and EAP server. Once the PEAPv2 peer and PEAPv2 server considers them as failed authentications, they are the last packets inside the"manufacture"protected tunnel. These are considered failed authentications regardless of whether a cleartextsuccess/failure indications mandated by [IEEE8021X]. It also enables both sides ofEAP Success or EAP Failure packet is subsequently sent. After theconversation to communicatePEAPv2 server has sent theoutcome of PEAP mutual authentication, althoughsuccess indication, theTLS alert mechanism already provides this capabilitypeer is allowed tosome extent. Onrefuse to accept a Success message from theother hand, this approach requires an extra round-trip, which affectsPEAPv2 server since theperformanceclient's policy may require completion offast reconnect. Once PEAP has been selected ascertain EAP methods. If theauthentication method, compliant PEAP implementationspeer wants the server to negotiate EAP methods, it MUSTsilently discard unprotectedsend the EAP-TLV packet with Result-TLV with Status=Failure. If the successindications (e.g. cleartext EAP Success) unless bothindication from thePEAP peer andEAP serverhave indicated a successful authentication exchange viacontains themechanism described in Section 4. Similarly, oncecrypto- binding TLV, then theTLS channel has been set up, compliant PEAP implementationspeer MUSTsilently discard unprotected failure indications (e.g. cleartext EAP Failure) unless they are proceeded by a protected failure indication. Protected failure indicationsinclude a crypto-binding TLV in theTLS alert mechanism, as wellEAP-TLV response. If theindication mechanism described in Section 4. For example, if a PEAPpeerhas previously received a protected EAP-Request of Type=33 (EAP TLV)does not respond withResult=Failure,a EAP-TLV packet containing the crypto-binding TLV or if the crypto-binding TLV is invalid, ithas receivedshould be considered as aprotected EAP-Request of Type=33 (EAP-TLV)tunnel compromise error by the EAP server. If the EAP server has set Result-TLV withResult=Success,Status=Success; andresponded with athe response from the peer is Status=Failure, then the EAP server MUST either start another EAP conversation inside the protectedEAP-Response of Type=33 (EAP-TLV)channel or return Result=TLV withResult=Failure, then it will acceptStatus=Failure without a crypto-binding TLV andprocessIntermediate Result TLV. A PEAPv2 tunnel may be nested inside another tunnel, for example, PEAPv2 may be negotiated as acleartextEAPFailure. However, if a PEAP peer has previously receivedmethod inside a PEAPv2 tunnel. In this case, each tunnel MUST use protectedEAP- Request of Type=33 (EAP-TLV)termination. 2.3. Error handling Once the peer responds withResult=Success,the first PEAP packet andhas responded withthe EAP server receives the first PEAP packet from the peer, both MUST silently discard all clear text EAP messages unless both the PEAP peer and server have indicated success or failure or an error using a protectedEAP-Request of Type=33 (EAP-TLV) with Result=Success,error or protected termination mechanism. If the PEAPv2 tunnel is nested inside another tunnel, thenan unprotected failure indication MUSTthe clear text EAP messages should besilently discarded. Prior to establishmentaccepted after protected termination of all theTLS channel, no keying material exists, so that protected success/failure indications are not possible. However, within PEAPtunnels. After afailure to establish the TLS channel (e.g. failure to verifyFatal alert is received or after protected termination is complete, the peer or EAP servercertificate) is considered an unrecoverable error, so that where this failure has occurred, an unprotected failure indication can be safely accepted. 2.5. Error handlingshould accept clear text EAP messages. Other than supporting TLS alert messages,PEAPPEAPv2 does not have its own error message capabilities. This is unnecessary since errors in thePEAPPEAPv2 Part 1 conversation are communicated via TLS alert messages, and errors in thePEAPPEAPv2 Part 2 conversation are expected to be handled by individual EAP methods. If an error occurs at any point in thePEAP conversation,TLS layer, the EAP server SHOULD send a TLS alert message instead of the next EAP-request packet to the peer. The EAP server SHOULD send an EAP-Request packet with EAP-Type=PEAP, encapsulating a TLS record containing the appropriate TLS alert message. The EAP server SHOULD send a TLS alert message rather than immediately terminating the conversation so as to allow the peer to inform the user of the cause of the failure and possibly allow for a restart of the conversation. To ensure that the peer receives the TLS alert message, the EAP server MUST wait for the peer to reply with an EAP-Response packet.2.6. Retry behavior As with other EAP protocols,The EAP-Response packet sent by theEAP server is responsible for retry behavior. This means that ifpeer MAY encapsulate a TLS client_hello handshake message, in which case the EAP serverdoes not receive a reply from the peer, it MUST resendMAY allow theEAP-Request for whichPEAPv2 conversation to be restarted, or ithas not yet receivedMAY contain anEAP-Response. However,EAP-Response packet with EAP-Type=PEAP and no data, in which case thepeerPEAPv2 server MUSTNOT resend EAP- Response packets without first being prompted bysend an EAP-Failure packet, and terminate the conversation. It is up to the EAPserver. For example,server whether to allow restarts, and if so, how many times theinitial PEAP start packet sent by theconversation can be restarted. An EAP serverwereimplementing restart capability SHOULD impose a limit on the number of restarts, so as tobe lost, thenprotect against denial of service attacks. If an error occurs at any point in the TLS layer, the peerwould not receive this packet, and would not respond to it. AsSHOULD send aresult,TLS alert message instead of thePEAP startnext EAP-response packetwould be resent byto the EAP server.Once theThe peerreceived the PEAP start packet, it wouldSHOULD send an EAP-Response packet with EAP-Type=PEAP, encapsulating a TLS record containing theclient_helloappropriate TLS alert message.If the EAP-Response were to be lost, then theThe EAP serverwould resend the initial PEAP start, and the peer would resend the EAP-Response. As a result, it is possible that a peer will receive duplicate EAP- Request messages, andmaysend duplicate EAP-Responses. Both the peer and the EAP Server should be engineered to handle this possibility. 2.7. Session resumption The purpose ofrestart thesessionId withinconversation by sending a EAP-Request packet encapsulating the TLSprotocol is to allow for improved efficiencyhello_request_handshake message, inthewhich casewhere a client repeatedly attempts to authenticate to an EAP server within a short period of time. This capability is particularly useful for support of wireless roaming. It is left up tothe peerwhether to attempt to continue a previous session, thus shortening the PEAP Part 1 conversation. Typically the peer's decision will be made based on the time elapsed sinceMAY allow theprevious authentication attemptPEAPv2 conversation tothat EAP server. Based on the sessionId chosen by the peer, and the time elapsed since the previous authentication,be restarted; or the EAP serverwill decide whether to allowcan response with EAP Failure. Any time thecontinuation,peer orwhether to choose a new session. In the case wherethe EAP serverand the authenticator reside on the same device, then the client will only be able to continue sessionsfinds an error whenconnecting toprocessing thesame NAS or channel server. Should these devices be set up insequence of exchanges, such arotary or round-robin then it may not be possible for the peer to know in advance the authenticatorviolation of TLV rules, itwill be connecting to, and therefore which sessionId to attempt to reuse. Asshould send aresult, it is likely that the continuation attempt will fail. In the case whereResult TLV of failure and terminate theEAP authentication is remoted then continuationtunnel. This ismuch more likelyusually due tobe successful, since multiple NAS devicesan implementation problem andchannel servers will remote their EAP authentications to the same backend authentication server. If the EAP serverisresuming a previously established session, then it MUST include onlyconsidered an fatal error. If aTLS change_cipher_spec message andtunnel compromise error (see Section 2.2) is detected by the peer, the peer SHOULD send a TLSfinished handshake message after the server_hello message. The finishedInternal Error alert (a Fatal error) messagecontainsinstead of theEAP server's authentication responsenext EAP-response packet to thepeer. AfterEAP server. Similarly, if asessiontunnel compromise error issuccessfully resumed, the EAP-Server starts with Part 2 ofdetected by thePEAP conversation. The peer may have roamed to a different network and successfully resumed with sameEAPserver. The peer andserver, the EAP serverMUST not assume thatSHOULD send asession resume implies eitherTLS Internal error alert (a Fatal error) message instead ofthem will skip inner EAP methods. 2.8.the next EAP-response packet to the peer. 2.4. Fragmentation A single TLS record may be up to 16384 octets in length, but a TLS message may span multiple TLS records, and a TLS certificate message may in principle be as long as 16MB. The group of PEAP messages sent in a single round may thus be larger than the PPP MTU size, the maximum RADIUS packet size of 4096 octets, or even the Multilink Maximum Received Reconstructed Unit (MRRU). As described in[2],[RFC1990], the multilink MRRU is negotiated via the Multilink MRRU LCP option, which includes an MRRU length field of two octets, and thus can support MRRUs as large as 64 KB. However, note that in order to protect against reassembly lockup and denial of service attacks, it may be desirable for an implementation to set a maximum size for one such group of TLS messages. Since a typical certificate chain is rarely longer than a few thousand octets, and no other field is likely to be anywhere near as long, a reasonable choice of maximum acceptable message length might be 64 KB. If this value is chosen, then fragmentation can be handled via the multilink PPP fragmentation mechanisms described in [RFC1990]. While this is desirable, EAP methods are used in other applications such as [IEEE80211] and there may be cases in which multilink or the MRRU LCP option cannot be negotiated. As a result, aPEAPPEAPv2 implementation MUST provide its own support for fragmentation and reassembly. Since EAP is an ACK-NAK protocol, fragmentation support can be added in a simple manner. In EAP, fragments that are lost or damaged in transit will be retransmitted, and since sequencing information is provided by the Identifier field in EAP, there is no need for a fragment offset field as is provided in IPv4.PEAPPEAPv2 fragmentation support is provided through addition of flag bits within the EAP-Response and EAP-Request packets, as well as a TLS Message Length field of four octets. Flags include the Length included (L), More fragments (M), and PEAP Start (S) bits. The L flag is set to indicate the presence of the four octet TLS Message Length field, and MUST be set only for the first fragment of a fragmented TLS message or set of messages. The TLS Message Length field in the PEAPv2 header is not protected; and hence can be modified by a attacker. The TLS record length in the TLS data is protected. Hence, if TLS Message length received in the first packet (with L bit set) is greater or less than the total size of TLS data received including multiple fragments, then the TLS message length should be ignored. A single TLS record may be up to 16384 octets in length, but a TLS message may span multiple TLS records, and a TLS certificate message may in principle be as long as 16MB. However, note that in order to protect against reassembly lockup and denial of service attacks, it may be desirable for an implementation to set a maximum size for one such group of TLS messages. Since a typical certificate chain is rarely longer than a few thousand octets, and no other field is likely to be anywhere near as long, a reasonable choice of maximum acceptable message length might be 64 KB. The M flag is set on all but the last fragment. The S flag is set only within the PEAP start message sent from the EAP server to the peer. The TLS Message Length field is four octets, and provides the total length of the TLS message or set of messages that is being fragmented; this simplifies buffer allocation. When aPEAPPEAPv2 peer receives an EAP-Request packet with the M bit set, it MUST respond with an EAP-Response with EAP-Type=PEAP and no data. This serves as a fragment ACK. The EAP server MUST wait until it receives the EAP-Response before sending another fragment. In order to prevent errors in processing of fragments, the EAP server MUST increment the Identifier field for each fragment contained within an EAP-Request, and the peer MUST include this Identifier value in the fragment ACK contained within the EAP-Response. Retransmitted fragments will contain the same Identifier value. Similarly, when the EAP server receives an EAP-Response with the M bit set, it MUST respond with an EAP-Request with EAP-Type=PEAP and no data. This serves as a fragment ACK. The EAP peer MUST wait until it receives the EAP-Request before sending another fragment. In order to prevent errors in the processing of fragments, the EAP server MUST increment the Identifier value for each fragment ACK contained within an EAP-Request, and the peer MUST include this Identifier value in the subsequent fragment contained within an EAP- Response.2.9.2.5. Key derivation Since the normal TLS keys are used in the handshake, and therefore should not be used in a different context, new keys must be derived from the TLS master secret for use with the selected link layer ciphersuites.In the most general case, keying material must be provided for authentication, encryption and initialization vectors (IVs) in each direction. Since EAP methods may not know the link layer ciphersuite that has been negotiated, it may not be possible for themInstead of deriving keys specific toprovidelink layerciphersuite-specific keys. In addition, attempting to provide such keys is undesirable, since it would require theciphersuites EAPmethodmethods provides a Master Session Key (MSK) used tobe revised each timederive keys in anewlink layerciphersuitespecific manner. The method used to extract ciphering keys from the MSK isdeveloped. As a result, PEAPbeyond the scope of this document. PEAPv2 also derivesmaster session keysan Extended Master Session Key (EMSK) whichcan subsequently be truncatedis reserved for usewith a particular link layer ciphersuite. Since the truncation algorithms are ciphersuite-specific, they are not discussed here; examples of such algorithms are providedin[RFC3079].deriving keys in other ciphering applications. This draft also does not discuss the format of the attributes used to communicate the master session keys from the backend authentication server to the NAS; examples of such attributes are provided in [RFC2548]. PEAPv2 combines key material from the TLS exchange with key material from inner key generating EAP methods to provide stronger keys and to bind inner authentication mechanisms to the TLS tunnel. Both the peer and EAP server MUST derivemastercompound MAC and compound session keys using the procedure described below. The input for the cryptographic binding includes the following: [a] The PEAPv2 tunnel key (TK) is calculated using the first 64 octets of the (secret) key material generated as described in thecompound Session Key derivationEAP-TLS algorithm (RFC2716 section(section 4.2) of3.5) [b] The MSK provided by each successful inner EAP method (should not include thedraft Compound Authentication Binding Problem [compoundbinding]. Algorithms64 octets of EMSK); for each successful EAP method completed within thetruncation of these encryption and authentication master session keystunnel. ISK1..ISKn arespecificthe MSK portion of the EAP keying material obtained from methods 1 toeach link layer ciphersuite. Link layer ciphersuites in use with PPP include DESEbis [RFC2419], 3DES [RFC2420] and MPPE [RFC3078]. IEEE 802.11 ciphersuites are describedn. In some cases (except in[IEEE80211]. An examplethe case ofhow encryption keysthe EAP- TLV method), where the inner EAP method does not provide keys: ISKi, foruse with MPPE [RFC3078] are derived fromsome i, may be the null string (""). The algorithm uses P_SHA-1 PRF specified in the TLSmasterspecification [RFC2246] ("|" denotes concatenation). The intermediate combined key is generated after each successful EAP method inside the tunnel. Generating the intermediate combined key: Take the second 32 octets of TK IPMK0 = TK for j = 1 to k do IPMKj = P_SHA1(IPMK(j-1),"Intermediate PEAP MAC key" | ISKj); k = the last successful EAP method inside the tunnel at the point where the combined MAC key is derived. Each IPMKj output is 32 octets. IPMKn is the intermediate combined key used to derive combined session and combined MAC keys. Compound MAC Key derivation: The Compound MAC Key for the server (the B1_MAC) is derived CMK_B1 CMK_B1 = P_SHA1(IPMKn,"PEAP Server B1 MAC key" | S_NONCE) The Compound MAC Key for the client (the B2_MAC) is derived from MAC key called CMK B2. CMK_B2 = P_SHA1(IPMKn,"PEAP Client B2 MAC key" | C_NONCE | S_NONCE) The compound MAC keys (CMK_B1 and CMK_B2) are each 20 octets long. Compound Session Key derivation: The compound session key (CSK) isgivenderived on both the peer and EAP server after successful completion of protected termination. CSK = P_SHA1 (IPMKn, "PEAP compound session key" | C_NONCE | S_NONCE | OutputLength) The output length of the CSK must be at least 128 bytes. The first 64 octets are taken and the MSK and the second 64 octets are taken as the EMSK. The MSK and EMSK are described in[RFC3079]. 2.10.[RFC2284bis]. 2.6. Ciphersuite negotiation Since TLS supports TLS ciphersuite negotiation, peers completing the TLS negotiation will also have selected a TLS ciphersuite, which includes key strength, encryption and hashing methods. However, unlike in [RFC2716], withinPEAP,PEAPv2, the negotiated TLS ciphersuite relates only to the mechanism by which thePEAPPEAPv2 Part 2 conversation will be protected, and has no relationship to link layer security mechanisms negotiated within the PPP Encryption Control Protocol (ECP) [RFC1968] or within IEEE 802.11 [IEEE80211]. As a result, this specification currently does not support secure negotiation of link layer ciphersuites, although this capability may be added in future by addition of TLVs to the EAP TLV method defined in Section 4. 3. Detailed description of thePEAPPEAPv2 protocol 3.1.PEAPPEAPv2 Packet Format A summary of thePEAPPEAPv2 Request/Response packet format is shown below. The fields are transmitted from left to right. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Flags | Ver | Data... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Code 1 - Request 2 - Response Identifier The Identifier field is one octet and aids in matching responses with requests. Length The Length field is two octets and indicates the length of the EAP packet including the Code, Identifier, Length, Type, and Data fields. Octets outside the range of the Length field should be treated as Data Link Layer padding and should be ignored on reception. Type 25 - PEAP Flags 0 1 2 3 4 +-+-+-+-+-+ |L M S R R| +-+-+-+-+-+ L = Length included M = More fragments S = PEAP start R = Reserved (must be zero) The L bit (length included) is set to indicate the presence of the four octet TLS Message Length field, and MUST be set for the first fragment of a fragmented TLS message or set of messages. The L bit MUST NOT be set for other fragments of the same set of messages. The M bit(more fragments) is set on all but the last fragment. The S bit (PEAP start) is set in a PEAP Start message. This differentiates the PEAP Start message from a fragment acknowledgment. Version 0 1 2 +-+-+-+ |R|1|0| +-+-+-+ R = Reserved (must be zero) Data The format of the Data field is determined by the Code field. 3.2.PEAPPEAPv2 Request Packet A summary of thePEAPPEAPv2 Request packet format is shown below. The fields are transmitted from left to right. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Flags | Ver | TLS Message Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TLS Message Length | TLS Data... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Code 1 Identifier The Identifier field is one octet and aids in matching responses with requests. The Identifier field MUST be changed on each Request packet. Length The Length field is two octets and indicates the length of the EAP packet including the Code, Identifier, Length, Type, Flags, TLS message length and TLSResponsedata fields. Type 25 - PEAP Flags 0 1 2 3 4 +-+-+-+-+-+ |L M S R R| +-+-+-+-+-+ L = Length included M = More fragments S = PEAP start R = Reserved (must be zero) The L bit (length included) is set to indicate the presence of the four octet TLS Message Length field, and MUST be set for the first fragment of a fragmented TLS message or set of messages. The M bit(more fragments) is set on all but the last fragment. The S bit (PEAP start) is set in a PEAP Start message. This differentiates the PEAP Start message from a fragment acknowledgment. Version 0 1 2 +-+-+-+ |R|1|0| +-+-+-+ R = Reserved (must be zero) TLS Message Length The TLS Message Length field is four octets, and is present only if the L bit is set. This field provides the total length of the TLS message or set of messages that is being fragmented. TLS data The TLS data consists of the encapsulated packet in TLS record format. 3.3.PEAPPEAPv2 Response Packet A summary of thePEAPPEAPv2 Response packet format is shown below. The fields are transmitted from left to right. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Flags |Ver| TLS Message Length +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TLS Message Length | TLS Data... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Code 2 Identifier The Identifier field is one octet and MUST match the Identifier field from the corresponding request. Length The Length field is two octets and indicates the length of the EAP packet including the Code, Identifier, Length, Type, Flags, Ver, TLS message length, and TLS data fields. Type 25 - PEAP Flags 0 1 2 3 4 +-+-+-+-+-+ |L M S R R| +-+-+-+-+-+ L = Length included M = More fragments S = PEAP start R = Reserved (must be zero) The L bit (length included) is set to indicate the presence of the four octet TLS Message Length field, and MUST be set for the first fragment of a fragmented TLS message or set of messages. The M bit (more fragments) is set on all but the last fragment. The S bit (PEAP start) is set in a PEAP Start message. This differentiates the PEAP Start message from a fragment acknowledgment. Version 0 1 2 +-+-+-+ |R|1|0| +-+-+-+ R = Reserved (must be zero) TLS Message Length The TLS Message Length field is four octets, and is present only if the L bit is set. This field provides the total length of the TLS message or set of messages that is being fragmented. TLS data The TLS data consists of the encapsulated TLS packet in TLS record format.4.3.4. PEAPv2 Part 2 Packet Format The PEAPv2 Part 2 packet format is the same as the PEAPv2 Request and Response packet formats described in Sections 3.1 and 3.2, except that the TLS Data field encapsulates TLS packets in TLS record format, representing encrypted EAP-TLVs. Although the EAP-TLV method has been allocated an EAP Type, use of this method is prohibited outside of a tunnel by [RFC2284bis]. Since EAP-TLVs are self-describing, when transmitted within PEAPv2, the EAP header portion of the EAP-TLV packet is absent (including the Code, Identifier, Length and Type fields), leaving only a list of TLVs as the payload. Within PEAPv2, all inner EAP method packets are encapsulated in EAP- TLV format. The EAP-Payload is an (optional) TLV which encapsulates EAP packets (including all EAP header fields) and in addition carries TLVs associated with them. PEAP Part 2 packet format = EAP-TLV [EAP-Payload TLV [[EAP packet], TLVs, ...], TLVs, ...] OR TLS Alert The EAP-TLV packet is included without the EAP header fields (Code, Identifier, Length, Type) 4. EAP-TLV method The EAP-TLV method is a payload with standard Type-Length-Value (TLV) objects. The TLV objects could be used to carry arbitrary parameters between EAP peer and EAP server. Possible uses for TLV objects include: language and character set for Notification messages; cryptographic binding;IPv6MIPv6 Binding Update. The EAP peer may not necessarily implement all the TLVs supported by the EAP server; and hence to allow for interoperability, the TLV method allows a EAP server to discover if a TLV is supported by the EAP peer, using the NAK TLV. The mandatory bit in a TLV indicates that if the peerMUST understand the TLV. A peer can determine that a TLV is unknown when itdoes not support theTLV; or when the TLV is corrupted. The mandatory bit does not indicate that the peer successfully applied the value of the TLV. The specification of a TLV could define additional conditions under which the TLV can be determined to be unknown. If an EAP peer finds an unknown TLV which is marked as mandatory;TLV, it MUSTindicatesend afailure to the EAP server using theNAKTLV;TLV in response; and all the other TLVs in the message MUST be ignored. If an EAP peer finds anunknownunsupported TLV which is marked asoptional; thenoptional, it MUSTignore theNOT send an NAK TLV. TheEAPmandatory bit does not imply that the peer isnotrequired toinformunderstand theEAP servercontents ofunknown TLVs which are marked as optional.the TLV. The appropriate response to a supported TLV with content that is not understood is defined by the TLV specification. If the EAP peer finds that the packet has no TLVs, then it MUST send a response with EAP-TLV Response Packet. TheResponse packet may contain no TLVs.mandatory bit in a TLV indicates that if the EAP server does not support the TLV, it MUST send a NAK TLV in response; otherwise it MUST send a protected termination message. If an EAP server finds anunknownunsupported TLV which is marked as mandatory; the other TLVs in the message MUST be ignored.TheAn EAP-TLV packet is a EAPservermethod and within a PEAPv2 tunnel, it candrop the connectionbe sequenced before orsend aafter any other EAP method. An EAP-TLVrequestpacketwith NAK-TLVdoes not have tothe EAP client. Compliant PEAPcontain any TLVs nor need it contain any mandatory TLVs. PEAPv2 implementations MUST support the EAP TLV method, as well as processing of mandatory/optional settings on theTLV, the NAKTLV.TLVs can be contained/nested in other TLVs.4.1. EAP-TLV Request Packet A summary of the EAP-TLV Request packet format isa EAP method;shown below. The fields are transmitted from left to right. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Data.... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Code 1 Identifier The Identifier field is one octet andit canaids in matching responses with requests. The Identifier field MUST besequenced before or after any otherchanged on each Request packet. Length The Length field is two octets and indicates the length of the EAPmethod.packet including the Code, Identifier, Length, Type, and Data fields. Type 33 - EAP-TLV Data The Data field is of variable length, and contains Type-Length- Value tuples (TLVs). 4.2. EAP-TLV Response Packet A summary of the Extension Response packetdoes not haveformat is shown below. The fields are transmitted from left tocontain anyright. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Code | Identifier | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Data.... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Code 2 Identifier The Identifier field is one octet and aids in matching responses with requests. The Identifier field MUST be changed on each Request packet. Length The Length field is two octets and indicates the length of the EAP packet including the Code, Identifier, Length, Type, and Data fields. Type 33 - EAP-TLV Data The Data field is of variable length, and contains Type-Length- Value tuples (TLVs). 4.3. TLV format EAP-TLV TLVsorare defined as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Value... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 0 - Non-mandatory TLV 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type A 14-bit field, denoting the TLV type. Allocated Types include: 0 - Reserved 1 - Reserved 2 - Reserved 3 - RESULT_TLV - Acknowledged Result 4 - NAK_TLV 5 - Crypto-Binding TLV 6 - Connection-Binding TLV 7 - Vendor-Specific TLV 8 - URI TLV 9 - EAP Payload TLV 10 - Intermediate Result TLV Length The length of the Value field in octets. Value The value of the TLV. 4.4. Result TLV The Result TLV provides support for acknowledged success and failure messages within PEAPv2. PEAPv2 implementations MUST support this TLV, which cannot be responded to with a NAK TLV. If the Status field does nothavecontain one of the known values, then the peer or EAP server MUST drop the connection. The Result TLV is defined as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Status | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type 3 Length 2 Status The Status field is two octets. Values include: 1 - Success 2 - Failure 4.5. NAK TLV The NAK TLV allows a peer to detect TLVs that are not supported by the other peer. An EAP-TLV packet can containany mandatory0 or more NAK TLVs.4.1. Protected success/failure Compliant PEAPPEAPv2 implementations MUST supportacknowledged protected success/failure togetherthis TLV and this TLV cannot be responded to with a NAK TLV. The NAK TLV is defined as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Vendor-Id | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NAK-Type | TLVs.... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type 4 Length >=6 Vendor-Id The Vendor-Id field is four octets, and contains the Vendor-Id of the TLV that was not supported. The high-order octet is 0 and the low-order 3 octets are the SMI Network Management Private Enterprise Code of the Vendor in network byte order. The Vendor- Id field MUST be zero for TLVs that are not Vendor-Specific TLVs. For Vendor-Specific TLVs, the Vendor-ID MUST be set to the SMI code. NAK-Type The NAK-Type field is two octets. The field contains the Type of the TLV that was not supported. A TLV of this Type MUST have been included in the previous packet. TLVs This field contains a list of TLVs, each of which MUST NOT have the mandatory bit set. These optional TLVs can be used in the future to communicate why the offending TLV was determined to be unsupported. 4.6. Crypto-binding TLV The Crypto-Binding TLV is used prove that both peers participated in the sequence of authentications (specifically the TLS session and inner EAP methods that generate keys). Both the Bindingexchange.Request (B1) and Binding Response (B2) use the same packet format. However the Sub-Type indicates whether it is B1 or B2. TheResultCrypto-Binding TLVisMUST be used toindicate success or failureperform Cryptographic Binding after each successful EAP method (except EAP-TLV) in a sequence ofthe PEAP tunnel.EAP methods is complete in PEAPv2 part 2. ThePEAP tunnel success/failure packet MUST contain a Result TLV along with the Cryto-Binding TLV.Crypto-Binding TLVmaycan also be used during Protected Termination. The crypto-binding TLV must have the version number received during the PEAP version negotiation. The receiver of the crypto binding TLV must verify that the version inother EAP-TLV packets. Resultthe crypto binding TLVMUST NOT bematches the version it sentin packets other thanduring theprotected success/failure indication.PEAP version negotiation. Ifa CRYPTO BINDING TLV does not exist in a packet that contains Result TLV,this check fails then theEAP peerTLV is invalid. The receiver of the crypto binding TLV mustdisconnectverify that theconnection.subtype is not set to any value other than the ones allowed. Ifa CRYPTO BINDING TLVthis check failsvalidation,thenpeer must disconnecttheconnection. Implementations that can deleteTLV is invalid. This message format is used for theTLS handle MUST deleteBinding Request (B1) and also theTLS handle. Implementations that keep track of session stateBinding Response. This uses TLV type CRYPTO_BINDING_TLV. PEAPv2 implementations MUSTensure that the session handlesupport this TLV and this TLV cannot beusedresponded toskip stage2 authentication. When using the Result-TLV, the only outcome which should be consideredwith a NAK TLV. The format is assuccessful authenticationgiven below. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version |Received Ver. | Sub-Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Nonce ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ~ Compound MAC ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type 5 Length 52 Version The Version field iswhen an EAP Requesta single octet, which is set to the version ofType=EAP-TLVs with Resultcrypto binding TLV. For the crypto-binding TLVof Status=Successdefined in this specification, It isanswered by an EAP Responseset to zero (0). Received Version The Received Version field is a single octet and MUST be set to the PEAP version number received during version negotiation. Note that this field only provides protection against downgrade attacks where a version ofType=EAP-TLVs with ResultPEAP requiring support for this TLVof Status=Success. Ifis required on both sides (such as PEAPv2 or a more recent version). Sub-Type The Sub-Type field is two octets. Possible values include: 0 - Binding Request 1 - Binding Response Nonce The Nonce field is 32 octets. It contains a 256 bit nonce that is temporally unique, used for compound MAC key derivation at each end. This is theEAP server has set Result-TLV with Status=Success;S_NONCE for the B1 message and a C_NONCE for theresponse fromB2 message. Compound MAC The Compound MAC field is 16 octets. This can be theEAP peerServer MAC (B1_MAC) or the Client MAC (B2_MAC). It isStatus=Failure, thencomputed over theserver MUST either continue EAP conversationentire Crypto-Binding TLV attribute using the HMAC-SHA1-128 that provides 128 bits of output using the CMK_B1 orreturn Result=TLVCMK_B2 withStatus=Failure. Thisthe MAC field zeroed out. 4.7. Connection-Binding TLV The Connection-Binding TLV allowsEAP peerfor connection specific information toindicate that it refusesbe sent by the peer toaccepttheauthentication without negotiating certain auth methods as per its policy. All other combinations (EAP-TLVs Failure, EAP-TLVs Success), (EAP- TLVs Failure, EAP-TLVs Failure), (no EAP-TLVs exchange or no protected EAP Success or Failure, no Crypto-Binding TLVs, crypto- bindingAAA server. This TLVvalidation is not successful)should beconsidered failed authentications, bothlogged by thePEAP peer and authenticator. Once the PEAP peer and authenticator considers them as failed authentications, they are the last packets inside the protected tunnel. These are considered failed authentications regardless of whether a cleartextEAPSuccessor AAA server. The AAA or EAPFailure packet is subsequently sent. Becauseserver should not deny access if there i s a mismatch between theEAP-TLVs method is protected withinvalue sent through theTLS channel, these packets cannot be spoofed, whereas cleartext EAP SuccessAAA protocol andEAP Failure messages can be sent by an attacker. In orderthis TLV. The format of this TLV is defined for thevalidationlayer that defines the parameters. The format ofcrypto-binding TLVthe value sent by the peer tobe successful,the EAP serverand EAP peer shouldmay bein-sync on which EAP methods inside the tunnel have been successful. If any or all EAP methods insidedifferent from thetunnels have failed as per EAP server or EAP peer, then that does not meanformat of theResult will always be set to failure. In a successful authentication for a tunnel,corresponding value sent through thelast packet exchange (both request and response) insideAAA protocol. For example, thetunnel MUST always contain a valid Crypto-Bindingconnection binding TLV may contain 802.11 MAC Address andResult-TLV=Success. CompliantSSID. PEAP implementationsMUSTMAY supportthe EAPthis TLVmethod, processing of mandatory/optional settings on the TLV, theand this TLV MUST NOT be responded to with a NAKTLV, Result-TLV, Method-Identity-TLV, Crypto-Binding-TLV. 4.2. EAP-TLV Request Packet A summary of the EAP EAP-TLVs Request packet formatTLV. It isshown below. The fields are transmitted from left to right.defined as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Code | Identifier|M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type | Data....TLVs... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Code 1 IdentifierM 0 - Optional TLV R Reserved, set to zero (0) TLV Type 6 Length >=0 TLVs... TheIdentifierfieldis one octet and aidscontains a list of TLVs, each inmatching responsesthe same format defined in Section 4.3, withrequests. The Identifier field MUST be changedthe optional bit set. These TLVs contain information oneach Request packet. Length The Length field is two octets and indicatesthelengthidentity of theEAP packet includingpeer and authenticator (layer 2 or IP addresses); theCode, Identifier, Length, Type,media used to connect the peer andData fields. Type 33 - EAP-TLV Dataauthenticator (NAS-Port-Type); and/or the service the client is trying to access on the gateway (SSID). TheData fieldformat of these TLVs will be defined in a separate draft. 4.8. Vendor-Specific TLV The Vendor-Specific TLV is available to allow vendors to support their own extended attributes not suitable for general usage. A Vendor-Specific-TLV attribute can contain one or more TLVs, referred to as Vendor-TLVs. The TLV-type ofvariable length,the Vendor-TLV will be defined by the vendor. All the Vendor-TLVs inside a single Vendor- Specific TLV belong to the same vendor. PEAPv2 implementations MUST support the Vendor-Specific TLV; andcontains EAP-TLV TLVs. 4.3. EAP-TLV Response Packetthis TLV cannot be responded to with a NAK TLV. PEAPv2 implementations MAY NOT support the Vendor-TLVs included in the Vendor-Specific TLV and can respond with a NAK TLV. Vendor-TLVs may be optional or mandatory. Vendor-TLVs sent in the protected success and failure packets MUST be marked as optional. If Vendor-TLVs sent in protected success/failure packets are marked as Mandatory, then the peer or EAP server MUST drop the connection. A summary of theEAP-TLV Response packetVendor-Specific Attribute format is shown below. The fields are transmitted from left to right. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Code | Identifier|M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |TypeVendor-Id |Data....+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Code 2 Identifier| Vendor-TLVs.... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type 7 Length >=4 Vendor-Id TheIdentifierVendor-Id field isonefour octets. The high-order octet is 0 andaidsthe low-order 3 octets are the SMI Network Management Private Enterprise Code of the Vendor inmatching responses with requests.network byte order. TheIdentifier fieldVendor- Id MUST bechanged on each Request packet. Length The Lengthzero for TLVs that are not Vendor-Specific TLVs. For Vendor-Specific TLVs, the Vendor-ID MUST be set to the SMI code. Vendor-TLVs This field istwo octets and indicates the lengthof indefinite length. It contains vendor-specific TLVs, in a format defined by theEAPvendor. 4.9. URI TLV The URI TLV allows a server to send a URI to the client to refer it to a resource. The TLV contains a URI in the format specified in RFC2396 with UTF-8 encoding. If a packetincludingcontains multiple URI TLVs, then theCode, Identifier, Length, Type,client SHOULD select the first TLV it can implement, andData fields. Type 33 - EAP EAP-TLV Data The Data fieldignore the others. If the client is unable to implement any ofvariable length,the URI TLVs, then it MAY ignore the error. PEAP implementations MAY support this TLV; andcontains Attribute- Value Pairs (TLVs). 4.4. EAP-TLVthis TLVformat EAP-TLV TLVs are defined as follows:cannot be responded to with a NAK TLV. A summary of this field is shown below: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Value...URI... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 0 -Non-mandatory TLV 1 - MandatoryOptional TLV R Reserved, set to0.zero (0) TLV TypeA 14-bit field, denoting the attribute type. Allocated TLV Types include: 0 - Reserved 1 - Reserved 2 - Reserved 3 - - RESULT_TLV - Acknowledged Result 4 - NAK_TLV 5 - CRYPTO_BINDING TLV 6 - METHOD_IDENTITY TLV8 LengthThe length of the Value>=0 URI This fieldin octets. Value The valueis ofthe attribute. CRYPTO_BINDING_TLVindefinite length, andMETHOD_IDENTITY_TLV are definedconforms to the format specified in [RFC2396]. 4.10. EAP-Payload TLV To allow piggybacking EAP request and response with other TLVs, thedraft Compound Authentication Binding Problem[CompoundBinding]. 4.5. ResultEAP Payload TLV is defined, which includes an encapsulated EAP packet and 0 or more TLVs. PEAPv2 implementations MUST support this TLV, which cannot be responded to with a NAK TLV. TheResultEAP-Payload TLVprovides support for acknowledged Success and Failure messages within PEAP. Itis defined as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |StatusEAP packet... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+TLVs... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type3 - Success/Failure8 Length2 Status>=0 EAP packet This field contains a complete EAP packet, including the EAP header (Code, Identifier, Length, Type) fields. Thestatuslength of this field istwo octets. Values include: 1 - Success 2 - - Failure 4.6. NAKdetermined by the Length field of the encapsulated EAP packet. TLVs... This (optional) field contains a list of TLVs associated with the EAP packet field. The TLVs utilize the same format described Section 4.3, and MUST NOT have the mandatory bit set. The total length of this field is equal to the Length field of the EAP- Payload-TLV, minus the Length field in the EAP header of the EAP packet field. 4.11. Intermediate Result TLV TheNAKIntermediate Result TLVallows a peerprovides support for acknowledged intermediate Success and Failure messages within EAP. PEAPv2 implementations MUST support this TLV, which cannot be responded todetect when TLVs that are not supported by the other peer. Itwith a NAK TLV. This TLV is defined as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |M|R| TLV Type | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |TLV Type number | TLVsàStatus | TLVs... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ M 1 - Mandatory TLV R Reserved, set to zero (0) TLV Type4 -10 Length<tbd> TLV Type number.>=2 Status The Status field is two octets. Values include: 1 - Success 2 - Failure TLVs This (optional) field is of indeterminate length, and contains the TLVs associated with the Intermediate Result TLV, in the same format as described in Section 4.3. The TLVs in this field MUST NOT have the mandatory bit set. 4.12. TLVtype thatRules To save round trips, multiple TLVs can be sent in the single PEAPv2 packet. However, multiple EAP Payload TLVs within one single PEAPv2 packet is notsupported. TLVs..supported in this version and MUST NOT be sent. If the peer or EAP server receives multiple EAP Payload TLVs, then it MUST drop the connection. Thefield containsfollowing table provides alistguide to which TLVs may be found in which kind ofoptional TLVs. These couldpackets, and in which quantity: Request Response Success Failure TLV 0-1 0-1 0-1 0-1 Intermediate Result TLV 0-1 0-1 0 0 EAP Payload TLV 0-1 0-1 1 1 Result TLV 0-1 0-1 0-1 0-1 Crypto-Binding TLV 0+ 0+ 0 0 NAK TLV 0-1 0-1 0-1 0-1 Connection-Binding TLV 0+ 0+ 0+ 0+ Vendor-Specific TLV 0+ 0 0+ 0-1 URI TLV The following table defines the meaning of the above table entries. 0 This TLV MUST NOT beusedpresent infuture to send information on whythefield was determinedpacket. 0+ Zero or more instances of this TLV MAY be present in packet. 0-1 Zero or one instance of this TLV MAY be present in packet. 1 Exactly one instance of this TLV MUST be present in packet. Packet type Description ---------------------------- Request - EAP-TLV request packet sent by EAP server to peer. Response - EAP-TLV response packet sent by peer to EAP server. Success - EAP-TLV packet sent by Peer or EAP server as protected success Failure - EAP-TLV packet sent by Peer or EAP server as protected failure. The EAP-Payload TLV can contain other TLVs. The table below defines which TLVs can be contained inside the EAP-Payload TLV and how many such TLVs can beunknown.included. EAP-Payload-TLV TLV 0 Intermediate Result TLV 0 EAP Payload TLV 0 Result TLV 0 Crypto-Binding TLV 0+ NAK TLV 0 Connection-Binding TLV 0+ Vendor-Specific TLV 0 URI TLV 5. Security Considerations 5.1. Authentication and integrity protectionThe EAP-TLV method is presumed to run before or after an EAP method that supports mutual authentication and establishesPEAPv2 provides a server authenticated, encrypted and integrity protectedchannel. PEAP istunnel. All data within the tunnel has these properties. Data outside the tunnel sucha method, andasa result the acknowledged Success and Failure messages are always protected. Note however, that [IEEE8021X] manufactures cleartextEAP Success andEAP Failure messages, so that even thoughFailure, authentication methods negotiated outside of PEAPv2 and theResult TLV will be protected, this will be followedPEAPv2 headers themselves are not protected bya cleartext EAP Success or EAP Failure packet.this tunnel. In addition, the crypto-binding TLV can reveal man-in-the-middle attack described in section 6.8. Hence, the server should not reveal any sensitive data to the client until after the Crypto-Binding TLV has been properly verified. 5.2. Method negotiation If the peer does not supportPEAP,PEAPv2, or does not wish to utilizePEAPPEAPv2 authentication, it MUST respond to the initialEAP-Request/PEAP- StartEAP- Request/PEAP-Start with a NAK, suggesting an alternate authentication method. Since the NAK is sent in cleartext with no integrity protection or authentication, it is subject to spoofing.UnauthenticInauthentic NAK packets can be used to trick the peer andAuthenticatorauthenticator into "negotiating down" to a weaker form of authentication, such asEAP-MD5EAP- MD5 (which only provides one way authentication and does not derive a key). Since a subsequent protected EAP conversation can take place within the TLS session, selection ofPEAPPEAPv2 as an authentication method does not limit the potential secondary authentication methods. As a result, the only legitimate reason for a peer to NAKPEAPPEAPv2 as an authentication method is that it does not support it. Where the additional security ofPEAPPEAPv2 is required, server implementations SHOULD respond to a NAK with an EAP-Failure, terminating the authentication conversation. Since method negotiation outside of PEAP is not protected, if the peer is configured to allow PEAP and other EAP methods at the same time, the negotiation is subject to downgrade attacks. Since method negotiation outside of PEAP is not protected, if the peer is configured to allow PEAP version 2; and previous PEAP versions at the same time, the negotiation is subject to negotiation downgrade attacks. However, peers configured to allow PEAPv2 and later PEAP versions may not be subject to downgrade negotiation attack since the highest version supported by both peers is checked within the protected tunnel. If peer implementations select incorrect methods or credentials with EAP servers, then attacks are possible on the credentials. Hence, a PEAPv2 peer implementation should preferably be configured with a set of credentials and methods that may be used with a specific PEAPv2 Server. The peer implementation may be configured to use different methods and/or credentials based on the PEAPv2 server. 5.3. TLS session cache handling In cases where a TLS session has been successfully resumed, in some circumstances, it is possible for the EAP server to skip thePEAPPEAPv2 Part 2 conversation, and successfully conclude the conversationas described in Section 2.4. PEAPwith a protected termination. PEAPv2 "fast reconnect" is desirable in applications such as wireless roaming, since it minimizes interruptions in connectivity. It is also desirable when the "inner" EAP mechanism used is such that it requires user interaction. The user should not be required to re- authenticate herself, using biometrics, token cards or similar, every time the radio connectivity is handed over between access points in wireless environments. However, there are issues that need to be understood in order to avoid introducing security vulnerabilities. SincePEAPPEAPv2 Part 1 may not provide client authentication, establishment of a TLS session (and an entry in the TLS session cache) does not by itself provide an indication of the peer's authenticity.The peer's authenticity is only proven after successful completion of the protected acknowledge exchange in PEAP part 2.SomePEAPPEAPv2 implementations may not be capable of removing TLS session cache entries established inPEAPPEAPv2 Part 1 after an unsuccessfulPEAPPEAPv2 Part 2 authentication. In such implementations, the existence of a TLS session cache entry provides no indication that the peer has previously been authenticated. As a result, implementations that do not remove TLS session cache entries after a failedPEAPPEAPv2 Part 2 authentication or failed protectedacktermination MUST use other means than successful TLS resumption as the indicator of whether the client is authenticated or not. The implementation MUST determine that the client is authenticated only after the completion of protectedacknowledge has been successfully exchanged.termination. Failing to do this would enable a peer to gain access by completingPEAPPEAPv2 Part 1, tearing down the connection, re-connecting and resumingPEAPPEAPv2 Part 1, thereby proving herself authenticated. Thus, TLS resumption MUST only be enabled if the implementation supports TLS session cache removal. If an EAP server implementingPEAPPEAPv2 removes TLS session cache entries of peers failingPEAPPEAPv2 Part 2 authentication, then it MAY skip thePEAPPEAPv2 Part 2 conversation entirely after a successful session resumption, successfully terminating thePEAPPEAPv2 conversation as described in Section 2.4. 5.4. Certificate revocation Since the EAP server is on the Internet during the EAP conversation, the server is capable of following a certificate chain or verifying whether the peer's certificate has been revoked. In contrast, the peer may or may not have Internet connectivity, and thus while it can validate the EAP server's certificate based on a pre-configured set of CAs, it may not be able to follow a certificate chain or verify whether the EAP server's certificate has been revoked. In the case where the peer is initiating a voluntary Layer 2 channel using PPTP or L2TP, the peer will typically already have Internet connectivity established at the time of channel initiation. As a result, during the EAP conversation it is capable of checking for certificate revocation. As part of the TLS negotiation, the server presents a certificate to the peer. The peer SHOULD verify the validity of the EAP server certificate, and SHOULD also examine the EAP server name presented in the certificate, in order to determine whether the EAP server can be trusted. Please note that in the case where the EAP authentication is remoted, the EAP server will not reside on the same machine as the authenticator, and therefore the name in the EAP server's certificate cannot be expected to match that of the intended destination. In this case, a more appropriate test might be whether the EAP server's certificate is signed by a CA controlling the intended destination and whether the EAP server exists within a target sub-domain. In the case where the peer is attempting to obtain network access, it will not have Internet connectivity. The TLS Extensions[TLSEXT][RFC3546] support piggybacking of an Online Certificate Status Protocol (OCSP) response within TLS, therefore can be utilized by the peer in order to verify the validity of server certificate. However, since not all TLS implementationsdo notimplement the TLS extensions, it may be necessary for the peer to wait to check for certificate revocation until after Internet access has been obtained. In this case, the peer SHOULD conduct the certificate status check immediately upon going online and SHOULD NOT send data until it has received a positive response to the status request. If the server certificate is found to beinvalid,invalid as per client policy, then the peer SHOULD disconnect. If the client has a policy to require checking certificate revocation and it cannot obtain revocation information then it may need to disallow the use of all or some of the inner methods since some methods may reveal some sensitive information. 5.5. Separation of the EAP server and the authenticator As a result of a completePEAPPEAPv2 Part 1 and Part 2 conversation, the EAP endpoints will mutually authenticate, and derive a session key for subsequent use in link layer security. Since the peer and EAP client reside on the same machine, it is necessary for the EAP client module to pass the session key to the link layer encryption module. The situation may be more complex on the Authenticator, which may or may not reside on the same machine as the EAP server. In the case where the EAP server and the Authenticator reside on different machines, there are several implications for security. Firstly, the mutual authentication defined in PEAP will occur between the peer and the EAP server, not between the peer and the authenticator. This means that as a result of the PEAP conversation, it is not possible for the peer to validate the identity of the NAS or channel server that it is speaking to. The second issue is that the session key negotiated between the peer and EAP server will need to be transmitted to the authenticator. Therefore a secure mechanism needs to be provided to transmit the session key from the EAP server to the authenticator or channel server that needs to use the key. The specification of this transit mechanism is outside the scope of this document. 5.6. Separation ofPEAPPEAPv2 Part 1 and Part 2 Servers The EAP server involved inPEAPPEAPv2 Part 2 need not necessarily be the same as the EAP server involved inPEAPPEAPv2 Part 1. For example, a local authentication server or proxy might serve as the endpoint for the Part 1 conversation, establishing the TLS channel. Subsequently, once the EAP-Response/Identity has been received within the TLS channel, it can be decrypted and forwarded in cleartext to the destination realm EAP server. The rest of the conversation will therefore occur between the destination realm EAP server and the peer, with the local authentication server or proxy acting as an encrypting/decrypting gateway. This permits a non-TLS capable EAP server to participate in thePEAPPEAPv2 conversation. Note however that such an approach introduces security vulnerabilities. Since the EAP Response/Identity is sent in the clear between the proxy and the EAP server, this enables an attacker to snoop the user's identity. It also enables a remote environments, which may be public hot spots or Internet coffee shops, to gain knowledge of the identity of their users. Since one of the potential benefits of PEAP is identity protection, this is undesirable. If the EAP method negotiated duringPEAPPEAPv2 Part 2 does not support mutual authentication, then if the Part 2 conversation is proxied to another destination, the PEAP peer will not have the opportunity to verify the secondary EAP server's identity. Only the initial EAP server's identity will have been verified asPartpart of TLS session establishment. Similarly, if the EAP method negotiated duringPEAPPEAPv2 Part 2 is vulnerable to dictionary attack, then an attacker capturing the cleartext exchange will be able to mount an offline dictionary attack on the password. Finally, when a Part 2 conversation is terminated at a different location than the Part 1 conversation, the Part 2 destination is unaware that the EAP client has negotiatedPEAP.PEAPv2. As a result, it is unable to enforce policies requiring PEAP. Since some EAP methods requirePEAPPEAPv2 in order to generate keys or lessen security vulnerabilities, where such methods are in use, such a configuration may be unacceptable. In summary,PEAPPEAPv2 encrypting/decrypting gateway configurations are vulnerable to attack and SHOULD NOT be used. Instead, the entirePEAPPEAPv2 connection SHOULD be proxied to the final destination, and the subsequently derived master session keys need to be transmitted back.ThisT his provides end to end protection ofPEAP.PEAPv2. The specification of this transit mechanism is outside the scope of this document, but mechanisms similar to [RFC2548] can be used. These stepsprotectsprotect the client from revealing her identity to the remote environment. In order to find the proper PEAP destination, the EAP client SHOULD place a Network Access Identifier (NAI) conforming to [RFC2486] in the Identity Response. There may be cases where a natural trust relationship exists between the (foreign) authentication server and final EAP server, such as on a campus or between two offices within the same company, where there is no danger in revealing the identity of the station to the authentication server. In these cases,usinga proxy solution without end to end protection ofPEAPPEAPv2 MAY be used.The PEAPIf RADIUS is used to communicate between gateway and EAP server, then the PEAPv2 encrypting/decrypting gateway SHOULD provide support for IPsec protection of RADIUS in order to provide confidentiality for the portion of the conversation between the gateway and the EAP server, as described in[RFC3162].[RFC3579]. 5.7. Identity verification Since the TLS session has not yet been negotiated, the initial Identity request/response occurs in the clear without integrity protection or authentication. It is therefore subject to snooping and packet modification. In configurations where all users are required to authenticate withPEAPPEAPv2 and the first portion of thePEAPPEAPv2 conversation is terminated at a local backend authentication server, without routing by proxies, the initial cleartext Identity Request/Response exchange is not needed in order to determine the required authentication method(s) or route the authentication conversation to its destination. As a result, the initial Identity and Request/Response exchange MAY NOT be present, and a subsequent Identity Request/Response exchange MAY occur after the TLS session is established. If the initial cleartext Identity Request/Response has been tampered with, after the TLS session is established, it is conceivable that the EAP Server will discover that it cannot verify the peer's claim of identity. For example, the peer's userID may not be valid or may not be within a realm handled by the EAP server. Rather than attempting to proxy the authentication to the server within the correct realm, the EAP server SHOULD terminate the conversation. ThePEAPPEAPv2 peer can present the server with multiple identities. This includes the claim of identity within the initial EAP-Response/Identity(MyID)Response/Identity (MyID) packet, which is typically used to route the EAP conversation to the appropriate home backend authentication server. There may also be subsequent EAP-Response/Identity packets sent by the peer once the TLS channel has been established. Note that since thePEAPPEAPv2 peer may not present a certificate, it is not always possible to check the initial EAP-Response/Identity against the identity presented in the certificate, as is done in [RFC2716]. Moreover, it cannot be assumed that the peer identities presented within multiple EAP-Response/Identity packets will be the same. For example, the initial EAP-Response/Identity might correspond to a machine identity, while subsequent identities might be those of the user. Thus,PEAPPEAPv2 implementations SHOULD NOT abort the authentication just because the identities do not match. However, since the initial EAP-Response/Identity will determine the EAP server handling the authentication, if this or any other identity is inappropriate for use with the destination EAP server, there is no alternative but to terminate thePEAPPEAPv2 conversation. The protected identity or identities presented by the peer withinPEAPPEAPv2 Part 2 may not be identical to the cleartext identity presented inPEAPPEAPv2 Part 1, for legitimate reasons. In order to shield the userID from snooping, the cleartext Identity may only provide enough information to enable routing of the authentication request to the correct realm. For example, the peer may initially claim the identity of "nouser@bigco.com" in order to route the authentication request to the bigco.com EAP server. Subsequently, once the TLS session has been negotiated, inPEAPPEAPv2 Part 2, the peer may claim the identity of "fred@bigco.com". Thus,PEAPPEAPv2 can provide protection for the user's identity, though not necessarily the destination realm, unless thePEAPPEAPv2 Part 1 conversation terminates at the local authentication server. As a result,PEAPPEAPv2 implementations SHOULD NOT attempt to compare the Identities claimed with Parts 1 and 2 of thePEAPPEAPv2 conversation. Similarly, if multiple Identities are claimed withinPEAPPEAPv2 Part 2, these SHOULD NOT be compared. An EAP conversation may involve more than one EAP authentication method, and the identities claimed for each of these authentications could be different (e.g. a machine authentication, followed by a user authentication). 5.8. Man-in-the-middle attack protectionIf anTLS protection can address a number of weaknesses in the EAP method; as well as EAP protocol weaknesses listed in the abstract and introduction sections in this document. Hence, the recommended solution is to always deploy authentication methods with protection of PEAPv2. if a deployment chooses to allow a EAP method protected by PEAPis also deployedwithout protection(fromof PEAP orIPSEC), and ifIPsec at the samecredential is allowed in both cases,time, then this opens up a possibility of a man-in-the-middleattack is possible.attack. A man-in-the-middle can spoof the client to authenticate to it instead of the real EAP server; and forward the authentication to the real server over a protected tunnel. Since the attacker has access to the keys derived from the tunnel, it can gain access to the network.The compound binding draft [CompoundBinding] identifies a number of solutions toPEAP version 2 prevents thisattack. The preferred solutionattack by using the keys generated by the inner EAP method in the crypto-binding exchange described in protected termination section. This attack isto deploynot prevented if theauthenticationinner EAP methodwith protection from PEAPdoes not generate keys orIPSEC. Protectionif the keys generated by the inner EAP method canaddressbe compromised. Alternatively, theman-in- the-middle attack; and in additionattack canaddressalso be thwarted if the inner EAP methodand EAP protocol weaknesses listed incan signal to theabstract and introduction sections inpeer that the packets are being sent within the tunnel. In most cases thisdocument. Another solutionmay require modification to the inner EAP method. In order to allow for these implementations, PEAPv2 implementations should inform inner EAP methods that the EAP method is being protected by a PEAPv2 tunnel. Since all sequence negotiations and exchanges are protected by TLS channel, they are immune to snooping and MITM attacks with the useknowledge known onlyof Crypto-Binding TLV. To make sure the same parties are involved tunnel establishment and previous inner method, before engaging the next method to sent more sensitive information, both peer and server MUST use thereal peersCrypto-Binding TLV between methods toverifycheck the tunnel integrity. If the Crypto-Binding TLV failed validation, they SHOULD stop the sequence and terminate the tunnel connection, to prevent more sensitive information being sent in subsequent methods. 5.9. Cleartext forgeries As described in [RFC2284bis], EAP Success and Failure packets are not authenticated, so thattherethey may be forged by an attacker without fear of detection. Forged EAP Failure packets can be used to convince an EAP peer to disconnect. Forged EAP Success and Failure packets may be used to convince a peer to disconnect; or convince a peer to access the network even before authentication isno man-in-the-middle. A numbercomplete, resulting in denial ofprotocols derive keysservice forencryption,the peer. By supporting encrypted, authenticated and integrity protected success/failure indications, PEAPv2 provides protection against thesekeysattacks. When the peer responds with the first PEAP packet; and the EAP server receives the first PEAPv2 packet from the peer, both MUST silently discard all clear text EAP messages unless both the PEAPv2 peer and server have indicated success or failure or error using a protected error or protected termination mechanism. The success/failure decisions sent by a protected mechanism indicate the final decision of the EAP authentication conversation. After success/failure has been indicated by a protected mechanism, the PEAPv2 client can process unprotected EAP success and EAP failure message; however MUST ignore any unprotected EAP success or failure messages where the decision does not match the decision of the protected mechanism. [RFC2284bis] states that an EAP Success or EAP Failure packet terminates the EAP conversation, so that no response is possible. Since EAP Success and EAP Failure packets are notknownretransmitted, if the final packet is lost, then authentication will fail. As a result, where packet loss is expected to be non-negligible, unacknowledged success/failure indications lack robustness. As a result, a EAP server SHOULD send a clear text EAP success or EAP-failure packet after theman- in-the-middle. These keys canprotected success or failure packet or TLS alert. The peer MUST NOT require the clear text EAP Success or EAP Failure if it has received the protected success or failure or TLS alert. For more details, refer to [RFC228bis], Section 4.2. 5.10. TLS Ciphersuites Anonymous ciphersuites are vulnerable to man-in-the-middle attacks, and SHOULD NOT be used with PEAPv2, unless the EAP methods inside PEAPv2 can address the man-in-the-middle attack or unless the man-in- the-middle attack can be addressed by mechanisms external to PEAPv2. 5.11. Denial of service attacks Denial of service attacks are possible if the attacker can insert or modify packets in thebinding phase exchange describedauthentication channel. The attacker can modify unprotected fields incompound binding [compoundbinding] draft to detect man- in-the-middle. PEAP implementations MUST supportthebinding phase exchange using compound MACsPEAP packet such asdescribed inthesection 4.2EAP protocol or PEAP version number. This can result in a denial ofthe compound binding draft[CompoundBinding]. Another solutionservice attack. It is also possible forEAP methodsthe attacker tosecurely signalmodify protected fields in a packet to cause decode errors resulting in a denial of service. In these ways the attacker can prevent access for peersthat theyconnecting to the network. Denial of service attacks with multiplier impacts areinsidemore interesting than theprotected channel. This may require changesones above. It is possible to multiply the impact by creating a large number of TLS sessions with the EAPprotocol. In order to allowserver. 5.12. Security Claims Intended use: Wireless or Wired networks, and over the Internet, where physical security cannot be assumed. Auth. mechanism: Use arbitrary EAPmethods to implement secure signaling, PEAP implementations SHOULD informand TLS authentication mechanisms for authentication of the client and server. Ciphersuite negotiation: Yes. Mutual authentication: Yes. Depends on the type of EAPmethodsmethod used within the tunnel and the type of authentication used within TLS. Integrity protection: Yes Replay protection: Yes Confidentiality: Yes Key derivation: Yes Key strength: Variable Dictionary attack prot: Not susceptible. Fast reconnect: Yes Crypt. binding: Yes. Acknowledged S/F: Yes Session independence: Yes. Fragmentation: Yes PEAPv2 derives keys by combining keys from TLS and the inner EAP methods. It should be noted that the use of TLS ciphersuites with a particular key lengths does not guarantee that the key strength of the keys will be equivalent to the length. The key exchange mechanisms (eg. RSA or Diffie-Hellman) used must provide sufficient security or theyare being protected by PEAP.will be the weakest link. For example RSA key sizes with a modulus of 1024 bits provides less than 128 bits of security, this may provide sufficient key strength for some applications and not for others. See [PKLENGTH] for a detailed analysis of determining the public key strengths used to exchange symmetric keys. 6. IANA Considerations This section provides guidance to the Internet Assigned Numbers Authority (IANA) regarding registration of values related to the EAP protocol, in accordance with BCP 26, [RFC2434]. There is one name space in EAP-TLV thatrequirerequires registration:TLV- Types.PEAPv2 TLV-Types. 6.1. Definition of Terms The following terms are used here with the meanings defined in BCP 26: "name space", "assigned value", "registration". The following policies are used here with the meanings defined in BCP 26: "Private Use", "First Come First Served", "Expert Review", "Specification Required", "IETF Consensus", "Standards Action". 6.2. Recommended Registration Policies Forregistration requests where a Designated Expert should be consulted, the responsible IESG area director should appoint the Designated Expert. For Designated"Designated Expert with SpecificationRequired,Required", the request is posted to the EAP WG mailing list (or, if it has been disbanded, a successor designated by the Area Director) for comment and review, and MUST include a pointer to a public specification. Before a period of 30 days has passed, the Designated Expert will either approve or deny the registration request and publish a notice of the decision to the EAP WG mailing list or its successor. A denial notice must be justified by an explanation and, in the cases where it is possible, concrete suggestions on how the request can be modified so as to become acceptable.For registration requests requiring Expert Review, the EAP mailing list should be consulted. If the EAP mailing list is no longer operational, an alternative mailing list may be designated by the responsible IESG Area Director.EAP-TLVs have a 14-bit field, of which1-60-10 have been allocated. Additional EAP-TLV type codes may be allocated following Designated Expert with Specification Required [RFC2434]. 7. References 7.1. Normative references [RFC1321] Rivest,R.,R. and S. Dusse,S.,"The MD5 Message-Digest Algorithm", RFC 1321, April 1992.[RFC1570] Simpson, W., Editor, "PPP LCP Extensions", RFC 1570, January 1994. [RFC1661] Simpson, W., Editor, "The Point-to-Point Protocol (PPP)", STD 51, RFC 1661, July 1994. [RFC1962] D. Rand. "The PPP Compression Control Protocol", RFC 1962, Novell, June 1996. [RFC1968] Meyer, G., "The PPP Encryption Protocol (ECP)", RFC 1968, June 1996. [RFC1990] Sklower, K., Lloyd, B., McGregor, G., Carr, D., and T. Coradetti, "The PPP Multilink Protocol (MP)", RFC 1990, August 1996.[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC2246] Dierks,T.,T. and C. Allen,C.,"The TLS Protocol Version 1.0", RFC 2246, November 1998.[RFC2284] Blunk, L., Vollbrecht, J., "PPP Extensible Authentication Protocol (EAP)", RFC 2284, March 1998.[RFC2486] Aboba,B.,B. and M. Beadles,M.,"The Network Access Identifier", RFC 2486, January 1999.[TLSEXT][RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998. [RFC3546] Blake-Wilson, S., et al. "TLS Extensions", RFC 3546, June 2003. [RFC2284bis] Blunk, L. et al., "Extensible Authentication Protocol (EAP)", draft-ietf-eap-rfc2284bis-06.txt, Internet draft (work in progress),draft-ietf-tls-extensions-06.txt, FebOctober 2003.[IEEE8021X] IEEE Standards for Local and Metropolitan Area Networks: Port based Network Access Control, IEEE Std 802.1X-2001, June 2001. [CompoundBinding] Puthenkulam, J., Lortz, V., Palekar, A., Simon, D., "The Compound Authentication Binding Problem", March 2003; draft-puthenkulam-eap-binding-02.txt. 8.7.2. Informative references[RFC2419][RFC1968] Meyer, G., "The PPP Encryption Protocol (ECP)", RFC 1968, June 1996. [RFC1990] Sklower, K.,Meyer,Lloyd, B., McGregor, G., Carr, D. and T. Coradetti, "The PPP Multilink Protocol (MP)", RFC 1990, August 1996. [RFC2419] Sklower, K. and G. Meyer, "The PPP DES Encryption Protocol, Version 2 (DESE-bis)", RFC 2419, September 1998. [RFC2420] Hummert, K., "The PPP Triple-DES Encryption Protocol (3DESE)", RFC 2420, September 1998. [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. [RFC2548] Zorn, G., "Microsoft Vendor-specific RADIUS Attributes", RFC2548, March 1999. [RFC2716] Aboba,B.,B. and D. Simon,D.,"PPP EAP TLS Authentication Protocol", RFC 2716, October 1999. [RFC3078] Pall,G.,G. and G. Zorn,G.,"Microsoft Point-to-Point Encryption (MPPE) Protocol", RFC 3078, March 2001. [RFC3079] Zorn, G., "Deriving Keys for use with MicrosoftPoint-to- PointPoint-to-Point Encryption (MPPE)", RFC 3079, March 2001. [FIPSDES] National Bureau of Standards, "Data Encryption Standard", FIPS PUB 46 (January 1977). [IEEE80211] Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Specific Requirements Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, IEEE Std. 802.11-1999, 1999. [MODES] National Bureau of Standards, "DES Modes of Operation", FIPS PUB 81 (December 1980).[PEAP version 0][PEAPv0] Kamath, V., Palekar,A.,A. and M. Wodrich,M.,"Microsoft's PEAP version 0 (Implementation in Windows XP SP1)",draft-kamath-pppext-peapv0-00.txt. 9.draft-kamath- pppext-peapv0-00.txt, Internet draft (work in progress), July 2002. [PKLENGTH] H. Orman and P. Hoffman, "Determining Strengths For Public Keys Used For Exchanging Symmetric Keys", draft-orman-public- key-lengths-05.txt, Internet Draft (work in progress), December 2002. [RFC3579] Aboba, B. and P. Calhoun, "RADIUS Support for EAP", RFC 3579, September 2003. [CompoundBinding] Puthenkulam, J., Lortz, V., Palekar, A. and D. Simon, "The Compound Authentication Binding Problem", draft-puthenkulam- eap-binding-03.txt, Internet Draft (work in progress), May 2003. [IEEE8021X] IEEE Standards for Local and Metropolitan Area Networks: Port based Network Access Control, IEEE Std 802.1X-2001, June 2001. Appendix A - Examples A.1 Cleartext Identity Exchange In the case where an identity exchange occurs withinPEAPPEAPv2 Part 1, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID1) -> // Identity sent in the clear. May be a hint to help route the authentication request to EAP server, instead of the full user identity. <- EAP-Request/ EAP-Type=PEAP, V=2 (PEAP Start, S bit set) EAP-Response/ EAP-Type=PEAP,V=1V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished) EAP-Response/ EAP-Type=PEAP ->finished, EAP-Request/EAP-Type=EAP-TLV [EAP-Payload-TLV[EAP-Request/ Identity]]) // identity protected by TLS. EAP-TLV packet does not include an EAP- header. TLS channel established(messages(EAP messages sent withintheTLSchannel) <- EAP-Request/ Identity EAP-Response/ Identity (MyID2) -> <- EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=X or NAK ->channel encapsulated in EAP-TLV packets without EAP header) EAP-TLV [EAP-Payload-TLV [EAP-Response/Identity (MyID2)]]]-> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [EAP-Payload-TLV [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload-TLV [EAP-Response/EAP-Type=X]] -> // Protected termination <-EAP-Request/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=1, ResultEAP-TLV [Result TLV (Success),Method_Identity_TLV (EAP-Type=X, EAP-Type-Version=0, keylengthusedforderivation, ClientIdentityLength= sizeof(MyID2), MyID2, ServerIdentityLength=0, Media-type=19), Method_Identity_TLV (EAP-Type=PEAP, EAP-Type- Version=2, keylengthusedforderivation, ClientIdentityLength= sizeof(MyID1), MyID1, ServerIdentityLength=0, Media-type=19), CompoundMAC (over entire EAP TLV inside the tunnel including EAP- header)) EAP-Response/ EAP-Type=EAP-TLV Result=Success Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=1, Result TLVCrypto-Binding-TLV (Version=0, received-version=2, Nonce, B1_MAC), Intermediate-Result-TLV (Success)] EAP-TLV [Result-TLV (Success),Method_Identity_TLV (EAP-Type=X, EAP-Type-Version=0, keylengthusedforderivation, ClientIdentityLength= sizeof(MyID2), MyID2, ServerIdentityLength=0, Media-type=19), Method_Identity_TLV (EAP-Type=PEAP, EAP-Type- Version=2, keylengthusedforderivation, ClientIdentityLength= sizeof(MyID1), MyID1, ServerIdentityLength=0, Media-type=19), CompoundMAC (over entire EAP TLV inside the tunnel including EAP- header)) ->Intermediate-Result-TLV (Success), Crypto-Binding-TLV (Version=0, received-version=2,Nonce, B2_MAC)]-> TLS channel torn down (messages sent in cleartext) <- EAP-Success A.2 No cleartext Identity Exchange Where all peers are known to supportPEAP,PEAPv2, a non-certificate authentication is desired for the client and the PEAP Part 1 conversation is carried out between the peer and a local EAP server, the cleartext identity exchange may be omitted and the conversation appears as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ EAP-Type=PEAP,V=1V=2 (PEAP Start, S bit set) EAP-Response/ EAP-Type=PEAP,V=1V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished) EAP-Response/ EAP-Type=PEAP, V=2 ->finished, EAP-TLV [EAP-Payload-TLV (EAP-Request/Identity)]) TLS channel established (messages sent within the TLS channel)<- EAP-Request/ Identity EAP-Response/ Identity (MyID)EAP-TLV [EAP-Payload-TLV [EAP-Response/Identity (MyID)]] -> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [EAP-Payload-TLV [EAP-Type=EAP-Request/ EAP-Type=X]] EAP-TLV [EAP-Payload-TLV [EAP-Response/EAP-Type=X orNAKNAK] -> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [EAP-Payload-TLV [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload-TLV [EAP-Response/ EAP-Type=X]] -> // Protected success <-EAP-Request/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=<number>,EAP-TLV [Crypto-Binding-TLV= (Version=0, Received-version=2, Nonce, B1_MAC), Intermediate-Result-TLV(Success), Result TLV (Success)] EAP-TLV [Crypto-Binding-TLV= (Version=0,Received-version=2, Nonce, B2_MAC), Intermediate-Result-TLV (Success),Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header)) EAP-Response/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=<number>,Result TLV(Success), Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header))(Success)]-> TLS channel torn down (messages sent in cleartext) <- EAP-Success A.3 Client certificate authentication with identity privacy Where all peers are known to supportPEAP,PEAPv2, where client certificate authentication is desired and thePEAPPEAPv2 Part 1 conversation is carried out between the peer and a local EAP server, the cleartext identity exchange may be omitted and the conversation appears as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ EAP-Type=PEAP, V=2 (PEAP Start, S bit set) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_key_exchange, TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished)finished,TLS Hello-Request) EAP-Response/ EAP-Type=PEAP, V=2->(TLS client_hello)-> TLS channel established (messages sent within the TLS channel) <- EAP-Request/ EAP-Type=PEAP, V=2 (TLShello_request) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLSserver_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished) EAP-Response/ EAP-Type=PEAP, V=2 -> <- EAP-Request/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=<number>, Result TLV (Success), Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLVfinished, EAP-TLV [Crypto-binding-TLV (version=0, Received-version=2, Nonce, B1_MAC), Result-TLV (Success)]) // packetinsideformat within thetunnel including EAP-header)) EAP-Response/ EAP-Type=EAP-TLVTLS channel EAP-TLV [ Crypto-Binding-TLV=(Version=0,Nounce, Number of inner EAP methods=<number>,Received-version=2, Nonce, B2_MAC), Result TLV(Success), Method_Identity_TLV (for each successful EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header))(Success)] TLS channel torn down (messages sent in cleartext) <- EAP-Success A.4 Fragmentation and Reassembly In the case where the PEAP fragmentation is required, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (PEAP Start, S bit set) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) (Fragment 1: L, M bits set) EAP-Response/ EAP-Type=PEAP, V=2 -> <- EAP-Request/ EAP-Type=PEAP, V=2 (Fragment 2: M bit set) EAP-Response/ EAP-Type=PEAP, V=2 -> <- EAP-Request/ EAP-Type=PEAP, V=2 (Fragment 3) EAP-Response/ EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) (Fragment 1: L, M bits set)-> <- EAP-Request/ EAP-Type=PEAP, V=2 EAP-Response/ EAP-Type=PEAP, V=2 (Fragment 2)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished) EAP-Response/ EAP-Type=PEAP, V=2 ->finished, EAP-TLV [EAP-Payload-TLV[ EAP-Request/Identity]]) TLS channel established (messages sent within the TLS channel)<- EAP-Request/ Identity EAP-Response/ Identity (MyID)EAP-TLV [EAP-Payload-TLV [EAP-Response/Identity(myID)]] -> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [ EAP-Payload-TLV [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload-TLV [EAP-Response/EAP-Type=X orNAK ->NAK]]-> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [ EAP-Payload-TLV [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload-TLV [EAP-Response/EAP-Type=X] -> <-EAP-Request/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=<number>,EAP-TLV [Crypto-Binding-TLV =(Version=0, Received-Version=2, Nonce, B1_MAC), Intermediate-Result-TLV(Success), Result TLV(Success), Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header)) EAP-Response/ EAP-Type=EAP-TLV(Success)] EAP-TLV [ Crypto-Binding-TLV=(Version=0,Nounce, Number of inner EAP methods=<number>,Received-Version=2,Nonce, B2_MAC), Result TLV (Success),Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header))Intermediate-Result-TLV (Success)] -> TLS channel torn down (messages sent in cleartext) <- EAP-Success A.5 Server authentication fails in Part 2 In the case where the server authenticates to the client successfully inPEAPPEAPv2 Part 1, but the client fails to authenticate to the server inPEAPPEAPv2 Part 2, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (PEAP Start, S bit set) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished) EAP-Response/ EAP-Type=PEAP, V=2 ->finished, EAP-TLV [EAP-Payload-TLV [EAP-Request/Identity]]) TLS channel established (messages sent within the TLS channel)<- EAP-Request/ Identity EAP-Response/ Identity (MyID)EAP-TLV [EAP-Payload-TLV [EAP-Response/Identity (MyID)]] -> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [EAP-Payload-TLV [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload [EAP-Response/EAP-Type=X orNAKNAK]] -> <-EAP-Request/ EAP-Type=X EAP-Response/ EAP-Type=XEAP-TLV [EAP-Payload [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload [EAP-Response/ EAP-Type=X]] -> <-EAP-Request/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=<number>, Result TLVEAP-TLV [Crypto-Binding-TLV (Version=0, Received-Version=2, Nonce, B1_MAC), Intermediate-Result-TLV (Failure),Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAPResult TLVpacket inside the tunnel including EAP-header)) // Compound MAC calculated using TLS key material only. EAP-Response/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=<number>,(Failure)] EAP-TLV [Crypto-Binding-TLV (Version=0, Received-version=2, Nonce, B2_MAC), Result TLV (Failure),Method_Identity_TLV (for each EAP-Type inside PEAP), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header)) Result=Failure ->Intermediate-Result-TLV (Failure)] (TLS session cache entry flushed) TLS channel torn down (messages sent in cleartext) <- EAP-Failure A.6 Server authentication fails in Part 1 In the case where server authentication is unsuccessful in PEAP Part 1, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (PEAP Start) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLSfinished) EAP-Response/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLS finished) <- EAP-Request/ EAP-Type=PEAP, V=2finished, EAP-TLV [EAP-Payload-TLV [ EAP-Request/Identity]]) EAP-Response/ EAP-Type=PEAP, V=2 (TLS Alert message) -> <- EAP-Failure (TLS session cache entry flushed) A.7 Session resume success In the case where a previously established session is being resumed, the EAP server supports TLS session cache flushing for unsuccessfulPEAPPEAPv2 Part 2 authentications and both sides authenticate successfully, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Type=PEAP,V=2 (PEAP Start) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS change_cipher_spec TLS finished) EAP-Response/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=EAP-TLVCrypto-Binding-TLV=(Version=0, Nounce, Number of inner EAP methods=0,Result TLV(Success), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header))(Success) // Compound MAC calculated using TLS keys since there were no inner EAP methods. EAP-Response/ EAP-Type=EAP-TLV Crypto-Binding-TLV=(Version=0,Nounce, Number of inner EAP methods=0,Nonce, B2_MAC), Result TLV(Success), Method_Identity_TLV (for PEAP), CompoundMAC (over entire EAP TLV packet inside the tunnel including EAP-header)) . ->(Success)-> TLS channel torn down (messages sent in cleartext) <- EAP-Success A.8 Session resume failure In the case where a previously established session is being resumed, and the server authenticates to the client successfully but the client fails to authenticate to the server, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Request/ EAP-Type=PEAP, V=2(TLS(PEAP Start) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello) -> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS change_cipher_spec, TLS finished) EAP-Response/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLS finished) -> <- EAP-Request EAP-Type=PEAP, V=2 (TLS Alert message) EAP-Response EAP-Type=PEAP, V=2 -> <- EAP-Failure (TLS session cache entry flushed) A.9 Session resume failure In the case where a previously established session is being resumed, and the server authentication is unsuccessful, the conversation will appear as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Request/ EAP-Type=PEAP, V=2(TLS(PEAP Start) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS change_cipher_spec, TLS finished) EAP-Response/ EAP-Type=PEAP, V=2 (TLS change_cipher_spec, TLS finished) <- EAP-Request/ EAP-Type=PEAP, V=2 EAP-Response/ EAP-Type=PEAP, V=2 (TLS Alert message) -> (TLS session cache entry flushed) <- EAP-Failure A.10 PEAP version negotiation In the case where the peer and authenticator have mismatched PEAP versions (e.g. the peer has a pre-standard implementation with version 0, and the authenticator has an implementation compliant with this specification), thesession is being resumed, but the authentication is unsuccessful, theconversation will occur as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID) -> <- EAP-Request/ EAP-Request/ EAP-Type=PEAP, V=2(TLS(PEAP Start) EAP-Response/ EAP-Type=PEAP, V=0 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=0 (TLS server_hello, TLS change_cipher_spec, TLS finished) //conversation continued using pre-standard PEAP version 0 A.11 Sequences of EAP methods Where PEAPv2 is negotiated, with a sequence of EAP method X followed by method Y, the conversation will occur as follows: Authenticating Peer Authenticator ------------------- ------------- <- EAP-Request/ Identity EAP-Response/ Identity (MyID1) -> <- EAP-Request/ EAP-Type=PEAP,V=0V=2 (PEAP Start, S bit set) EAP-Response/ EAP-Type=PEAP, V=2 (TLS client_hello)-> <- EAP-Request/ EAP-Type=PEAP, V=2 (TLS server_hello, TLS certificate, [TLS server_key_exchange,] [TLS certificate_request,] TLS server_hello_done) EAP-Response/ EAP-Type=PEAP, V=2 ([TLS certificate,] TLS client_key_exchange, [TLS certificate_verify,] TLS change_cipher_spec, TLS finished) -> <- EAP-Request/ EAP-Type=PEAP,V=0 EAP-Response/ EAP-Type=PEAP, V=0V=2 (TLSAlert message)change_cipher_spec, TLS finished, EAP-TLV [EAP-Payload-TLV[ EAP-Request/Identity]]) TLS channel established (messages sent within the TLS channel) EAP-TLV [EAP-Payload-TLV [EAP-Response/Identity]] ->(TLS session cache entry flushed)<-EAP-Failure 10. AcknowledgmentsEAP-TLV [EAP-Payload-TLV [EAP-Request/EAP-Type=X]]] EAP-TLV [EAP-Payload-TLV [EAP-Response/EAP-Type=X]] -> <- EAP-TLV [ EAP-Payload-TLV [EAP-Request/EAP-Type=X]] EAP-TLV [EAP-Payload-TLV [EAP-Response/EAP-Type=X]]-> <- EAP-TLV [EAP Payload TLV [EAP-Type=Y], (Intermediate Result TLV (Success), Crypto-Binding-TLV (Version=0, Received-version=2, Nonce, B1_MAC))] // Next EAP conversation started after successful completion of previous method X. The intermediate-status and crypto-binding TLVs are sent in next packet to minimize round-trips. In this example, identity request is not sent before negotiating EAP-Type=Y. EAP-TLV [EAP-Payload-TLV [EAP-Type=Y], (Intermediate Result TLV (Success), Crypto-Binding-TLV (Version=0, Received-version=2, Nonce, B2_MAC))]-> // Compound MAC calculated using Keys generated from EAP methods X and the TLS tunnel. <- EAP-TLV [EAP Payload TLV [ EAP-Type=Y]] EAP-TLV[EAP Payload TLV [EAP-Type=Y]] -> <- EAP-TLV [Result-TLV (Success), Intermediate Result TLV (Success), Crypto-Binding-TLV (Version=0, Received-version=2, Nonce, B1_MAC))] EAP-TLV [(Result-TLV (Success), Intermediate Result TLV (Success), Crypto-Binding-TLV (Version=0, Received-version=2, Nonce, B2_MAC))]-> // Compound MAC calculated using Keys generated from EAP methods X and Y and the TLS tunnel. // Compound Keys generated using Keys generated from EAP methods X andContributionsY; and the TLS tunnel. TLS channel torn down (messages sent in cleartext) <- EAP-Success Acknowledgments Thanks to Hakan Andersson, Jan-OveLarsson,Larsson and Magnus Nystrom of RSA Security; Bernard Aboba, Vivek Kamath, StephenBensley,Bensley and Narendra Gidwani of Microsoft;Joe Salowey, Hao Zhou,IlanFrenkel,Frenkel and Nancy Cam-Winget of Cisco;Hakan Andersson of RSA;Jose Puthenkulam of Intel for their contributions and critiques. The compound binding exchange to address man-in-the-middle attack is based on the draft "The Compound Authentication Binding Problem"[CompoundBinding]. The vast majority of the work by Simon Josefsson and Hakan Andersson was done whilehe wasthey were employed at RSA Laboratories. Author Addresses Ashwin Palekar Microsoft Corporation One Microsoft Way Redmond, WA 98052 Phone: +1 425 882 8080 EMail: ashwinp@microsoft.com Dan Simon Microsoft Corporation One Microsoft Way Redmond, WA 98052 Phone: +1 425 706 6711 EMail: dansimon@microsoft.com Glen Zorn Cisco Systems 500 108th Avenue N.E. Suite 500 Bellevue, Washington 98004USAPhone: + 1 425 438 8210 Fax: + 1 425 438 1848 EMail: gwz@cisco.com Simon JosefssonDrottningholmsv„genDrottningholmsvagen 70 112 42 Stockholm Sweden Phone: +46 8 619 04 22 EMail: jas@extundo.com11.Hao Zhou Cisco Systems, Inc. 4125 Highlander Parkway Richfield, OH 44286 Phone: +1 330 523 2132 Fax: +1 330 523 2239 EMail: hzhou@cisco.com Joseph Salowey Cisco Systems 2901 3rd Ave Seattle, WA 98121 Phone: +1 206 256 3380 EMail: jsalowey@cisco.com Intellectual Property Statement The IETF takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on the IETF's procedures with respect to rights in standards-track andstandards-relatedstandards- related documentation can be found in BCP-11. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementors or users of this specification can be obtained from the IETF Secretariat. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights which may cover technology that may be required to practice this standard. Please address the information to the IETF Executive Director.12.Full Copyright Statement Copyright (C) The Internet Society(2002).(2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULARPURPOSE."PURPOSE. Expiration Date This memo is filed as<draft-josefsson-pppext-eap-tls-eap-06.txt>,<draft-josefsson-pppext-eap-tls-eap-07.txt>, and expiresafter six months.April 22, 2004.