diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6124.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6124.txt')
-rw-r--r-- | doc/rfc/rfc6124.txt | 1851 |
1 files changed, 1851 insertions, 0 deletions
diff --git a/doc/rfc/rfc6124.txt b/doc/rfc/rfc6124.txt new file mode 100644 index 0000000..baba624 --- /dev/null +++ b/doc/rfc/rfc6124.txt @@ -0,0 +1,1851 @@ + + + + + + +Internet Engineering Task Force (IETF) Y. Sheffer +Request for Comments: 6124 Independent +Category: Informational G. Zorn +ISSN: 2070-1721 Network Zen + H. Tschofenig + Nokia Siemens Networks + S. Fluhrer + Cisco + February 2011 + + + An EAP Authentication Method Based on + the Encrypted Key Exchange (EKE) Protocol + +Abstract + + The Extensible Authentication Protocol (EAP) describes a framework + that allows the use of multiple authentication mechanisms. This + document defines an authentication mechanism for EAP called EAP-EKE, + based on the Encrypted Key Exchange (EKE) protocol. This method + provides mutual authentication through the use of a short, easy to + remember password. Compared with other common authentication + methods, EAP-EKE is not susceptible to dictionary attacks. Neither + does it require the availability of public-key certificates. + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Not all documents + approved by the IESG are a candidate for any level of Internet + Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6124. + + + + + + + + + + + +Sheffer, et al. Informational [Page 1] + +RFC 6124 The EAP-EKE Method February 2011 + + +Copyright Notice + + Copyright (c) 2011 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + + + + + + + + + + + + + + + + + + + + + + + + + +Sheffer, et al. Informational [Page 2] + +RFC 6124 The EAP-EKE Method February 2011 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 3.1. Message Flows . . . . . . . . . . . . . . . . . . . . . . 4 + 4. Message Formats . . . . . . . . . . . . . . . . . . . . . . . 7 + 4.1. EAP-EKE Header . . . . . . . . . . . . . . . . . . . . . . 7 + 4.2. EAP-EKE Payloads . . . . . . . . . . . . . . . . . . . . . 8 + 4.2.1. The EAP-EKE-ID Payload . . . . . . . . . . . . . . . . 8 + 4.2.2. The EAP-EKE-Commit Payload . . . . . . . . . . . . . . 10 + 4.2.3. The EAP-EKE-Confirm Payload . . . . . . . . . . . . . 11 + 4.2.4. The EAP-EKE-Failure Payload . . . . . . . . . . . . . 12 + 4.3. Protected Fields . . . . . . . . . . . . . . . . . . . . . 13 + 4.4. Encrypted Fields . . . . . . . . . . . . . . . . . . . . . 14 + 4.5. Channel Binding Values . . . . . . . . . . . . . . . . . . 14 + 5. Protocol Sequence . . . . . . . . . . . . . . . . . . . . . . 15 + 5.1. EAP-EKE-Commit/Request . . . . . . . . . . . . . . . . . . 15 + 5.2. EAP-EKE-Commit/Response . . . . . . . . . . . . . . . . . 17 + 5.3. EAP-EKE-Confirm/Request . . . . . . . . . . . . . . . . . 18 + 5.4. EAP-EKE-Confirm/Response . . . . . . . . . . . . . . . . . 18 + 5.5. MSK and EMSK . . . . . . . . . . . . . . . . . . . . . . . 19 + 6. Cryptographic Details . . . . . . . . . . . . . . . . . . . . 19 + 6.1. Generating Keying Material . . . . . . . . . . . . . . . . 19 + 6.2. Diffie-Hellman Groups . . . . . . . . . . . . . . . . . . 20 + 6.3. Mandatory Algorithms . . . . . . . . . . . . . . . . . . . 20 + 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 + 8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 + 8.1. Cryptographic Analysis . . . . . . . . . . . . . . . . . . 27 + 8.2. Diffie-Hellman Group Considerations . . . . . . . . . . . 28 + 8.3. Resistance to Active Attacks . . . . . . . . . . . . . . . 28 + 8.4. Identity Protection, Anonymity, and Pseudonymity . . . . . 28 + 8.5. Password Processing and Long-Term Storage . . . . . . . . 29 + 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 29 + 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 29 + 10.1. Normative References . . . . . . . . . . . . . . . . . . . 29 + 10.2. Informative References . . . . . . . . . . . . . . . . . . 31 + +1. Introduction + + The predominant access method for the Internet today is that of a + human using a username and password to authenticate to a computer + enforcing access control. Proof of knowledge of the password + authenticates the human to the computer. + + Typically, these passwords are not stored on a user's computer for + security reasons and must be entered each time the human desires + network access. Therefore, the passwords must be ones that can be + + + +Sheffer, et al. Informational [Page 3] + +RFC 6124 The EAP-EKE Method February 2011 + + + repeatedly entered by a human with a low probability of error. They + will likely not possess high entropy and it may be assumed that an + adversary with access to a dictionary will have the ability to guess + a user's password. It is therefore desirable to have a robust + authentication method that is secure even when used with a weak + password in the presence of a strong adversary. + + EAP-EKE is an EAP method [RFC3748] that addresses the problem of + password-based authenticated key exchange, using a possibly weak + password for authentication and to derive an authenticated and + cryptographically strong shared secret. This problem was first + described by Bellovin and Merritt in [BM92] and [BM93]. + Subsequently, a number of other solution approaches have been + proposed, for example [JAB96], [LUC97], [BMP00], and others. + + This proposal is based on the original Encrypted Key Exchange (EKE) + proposal, as described in [BM92]. Some of the variants of the + original EKE have been attacked, see e.g., [PA97], and improvements + have been proposed. None of these subsequent improvements have been + incorporated into the current protocol. However, we have used only + the subset of [BM92] (namely the variant described in Section 3.1 of + that paper) that has withstood the test of time and is believed + secure as of this writing. + +2. Terminology + + This document uses Encr(Ke, ...) to denote encrypted information, and + Prot(Ke, Ki, ...) to denote encrypted and integrity protected + information. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + +3. Protocol + + EAP is a two-party protocol spoken between an EAP peer and an EAP + server (also known as "authenticator"). An EAP method defines the + specific authentication protocol being used by EAP. This memo + defines a particular method and therefore defines the messages sent + between the EAP server and the EAP peer for the purpose of + authentication and key derivation. + +3.1. Message Flows + + A successful run of EAP-EKE consists of three message exchanges: an + Identity exchange, a Commit exchange, and a Confirm exchange. This + is shown in Figure 1. + + + +Sheffer, et al. Informational [Page 4] + +RFC 6124 The EAP-EKE Method February 2011 + + + The peer and server use the EAP-EKE Identity exchange to learn each + other's identities and to agree upon a ciphersuite to use in the + subsequent exchanges. In the Commit exchange, the peer and server + exchange information to generate a shared key and also to bind each + other to a particular guess of the password. In the Confirm + exchange, the peer and server prove liveness and knowledge of the + password by generating and verifying verification data (note that the + second message of the Commit exchange already plays an essential part + in this liveness proof). + + +--------+ +--------+ + | | EAP-EKE-ID/Request | | + | EAP |<------------------------------------| EAP | + | peer | | server | + | (P) | EAP-EKE-ID/Response | (S) | + | |------------------------------------>| | + | | | | + | | EAP-EKE-Commit/Request | | + | |<------------------------------------| | + | | | | + | | EAP-EKE-Commit/Response | | + | |------------------------------------>| | + | | | | + | | EAP-EKE-Confirm/Request | | + | |<------------------------------------| | + | | | | + | | EAP-EKE-Confirm/Response | | + | |------------------------------------>| | + | | | | + | | EAP-Success | | + | |<------------------------------------| | + +--------+ +--------+ + + Figure 1: A Successful EAP-EKE Exchange + + Schematically, the original exchange as described in [BM92] (and with + the roles reversed) is: + + Server Peer + ------ ---- + + Encr(Password, y_s) -> + + <- Encr(Password, y_p), Encr(SharedSecret, Nonce_P) + + Encr(SharedSecret, Nonce_S | Nonce_P) -> + + <- Encr(SharedSecret, Nonce_S) + + + +Sheffer, et al. Informational [Page 5] + +RFC 6124 The EAP-EKE Method February 2011 + + + Where: + + o Password is a typically short string, shared between the server + and the peer. In other words, the same password is used to + authenticate the server to the peer, and vice versa. + + o y_s and y_p are the server's and the peer's, respectively, + ephemeral public key, i.e., y_s = g ^ x_s (mod p) and + y_p = g ^ x_p (mod p). + + o Nonce_S, Nonce_P are random strings generated by the server and + the peer as cryptographic challenges. + + o SharedSecret is the secret created by the Diffie-Hellman + algorithm, namely SharedSecret = g^(x_s * x_p) (mod p). This + value is calculated by the server as: SharedSecret = y_p ^ x_s + (mod p), and by the peer as: SharedSecret = y_s ^ x_p (mod p). + + The current protocol extends the basic cryptographic protocol, and + the regular successful exchange becomes: + + Message Server Peer + --------- -------- ------ + ID/Request ID_S, CryptoProposals -> + + ID/Response <- ID_P, CryptoSelection + + Commit/Request Encr(Password, y_s) -> + + Commit/Response <- Encr(Password, y_p), Prot(Ke, Ki, Nonce_P) + + Confirm/Request Prot(Ke, Ki, Nonce_S | Nonce_P), Auth_S -> + + Confirm/Response <- Prot(Ke, Ki, Nonce_S), Auth_P + + + Where, in addition to the above terminology: + + o Encr means encryption only, and Prot is encryption with integrity + protection. + + o Ke is an encryption key, and Ki is an integrity-protection key. + + Section 5 explains the various cryptographic values and how they are + derived. + + + + + + +Sheffer, et al. Informational [Page 6] + +RFC 6124 The EAP-EKE Method February 2011 + + + As shown in the exchange above, the following information elements + have been added to the original protocol: identity values for both + protocol parties (ID_S, ID_P), negotiation of cryptographic + protocols, and signature fields to protect the integrity of the + negotiated parameters (Auth_S, Auth_P). In addition, the shared + secret is not used directly. In this initial exposition, a few + details were omitted for clarity. Section 5 should be considered as + authoritative regarding message and field details. + +4. Message Formats + + EAP-EKE defines a small number of message types, each message + consisting of a header followed by a payload. This section defines + the header, several payload formats, as well as the format of + specific fields within the payloads. + + As usual, all multi-octet strings MUST be laid out in network byte + order. + +4.1. EAP-EKE Header + + The EAP-EKE header consists of the standard EAP header (see Section 4 + of [RFC3748]), followed by an EAP-EKE exchange type. The header has + the following structure: + + 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 | EKE-Exch | Data ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 2: EAP-EKE Header + + The Code, Identifier, Length, and Type fields are all part of the EAP + header as defined in [RFC3748]. The Type field in the EAP header is + 53 for EAP-EKE Version 1. + + The EKE-Exch (EKE Exchange) field identifies the type of EAP-EKE + payload encapsulated in the Data field. This document defines the + following values for the EKE-Exch field: + + o 0x00: Reserved + + o 0x01: EAP-EKE-ID exchange + + o 0x02: EAP-EKE-Commit exchange + + + +Sheffer, et al. Informational [Page 7] + +RFC 6124 The EAP-EKE Method February 2011 + + + o 0x03: EAP-EKE-Confirm exchange + + o 0x04: EAP-EKE-Failure message + + Further values of this EKE-Exch field are available via IANA + registration (Section 7.7). + +4.2. EAP-EKE Payloads + + EAP-EKE messages all contain the EAP-EKE header and information + encoded in a single payload, which differs for the different + exchanges. + +4.2.1. The EAP-EKE-ID Payload + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | NumProposals | Reserved | Proposal ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ... Proposal | IDType | Identity ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 3: EAP-EKE-ID Payload + + The EAP-EKE-ID payload contains the following fields: + + NumProposals: + + The NumProposals field contains the number of Proposal fields + subsequently contained in the payload. In the EAP-EKE-ID/Request + message, the NumProposals field MUST NOT be set to zero (0), and + in the EAP-EKE-ID/Response message, the NumProposals field MUST be + set to one (1). The offered proposals in the Request are listed + contiguously in priority order, most preferable first. The + selected proposal in the Response MUST be fully identical with one + of the offered proposals. + + Reserved: + + This field MUST be sent as zero, and MUST be ignored by the + recipient. + + + + + + + + + +Sheffer, et al. Informational [Page 8] + +RFC 6124 The EAP-EKE Method February 2011 + + + Proposal: + + Each proposal consists of four one-octet fields, in this order: + + Group Description: + + This field's value is taken from the IANA registry for Diffie- + Hellman groups defined in Section 7.1. + + Encryption: + + This field's value is taken from the IANA registry for + encryption algorithms defined in Section 7.2. + + PRF: + + This field's value is taken from the IANA registry for pseudo- + random functions defined in Section 7.3. + + MAC: + + This field's value is taken from the IANA registry for keyed + message digest algorithms defined in Section 7.4. + + IDType: + + Denotes the Identity Type. This is taken from the IANA registry + defined in Section 7.5. The server and the peer MAY use different + identity types. All implementations MUST be able to receive two + identity types: ID_NAI and ID_FQDN. + + Identity: + + The meaning of the Identity field depends on the values of the + Code and IDType fields. + + * EAP-EKE-ID/Request: server ID + + * EAP-EKE-ID/Response: peer ID + + The length of the Identity field is computed from the Length field + in the EAP header. Specifically, its length is + + eap_header_length - 9 - 4 * number_of_proposals. + + This field, like all other fields in this specification, MUST be + octet-aligned. + + + + +Sheffer, et al. Informational [Page 9] + +RFC 6124 The EAP-EKE Method February 2011 + + +4.2.2. The EAP-EKE-Commit Payload + + This payload allows both parties to send their encrypted ephemeral + public key, with the peer also including a Challenge. + + In addition, a small amount of data can be included by the server + and/or the peer, and used for channel binding. This data is sent + here unprotected, but is verified later, when it is signed by the + Auth_S/Auth_P payloads of the EAP-EKE-Confirm exchange. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DHComponent_S/DHComponent_P ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | PNonce_P ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CBValue (zero or more occurrences) ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 4: EAP-EKE-Commit Payload + + DHComponent_S/DHComponent_P: + + This field contains the password-encrypted Diffie-Hellman public + key, which is generated as described in Section 5.1. Its size is + determined by the group and the encryption algorithm. + + PNonce_P: + + This field only appears in the response, and contains the + encrypted and integrity-protected challenge value sent by the + peer. The field's size is determined by the encryption and MAC + algorithms being used, since this protocol mandates a fixed nonce + size for a given choice of algorithms. See Section 5.2. + + + + + + + + + + +Sheffer, et al. Informational [Page 10] + +RFC 6124 The EAP-EKE Method February 2011 + + + CBValue: + + This structure MAY be included both in the request and in the + response, and MAY be repeated multiple times in a single payload. + See Section 4.5. Each structure contains its own length. The + field is neither encrypted nor integrity protected, instead it is + protected by the AUTH payloads in the Confirm exchange. + +4.2.3. The EAP-EKE-Confirm Payload + + Using this payload, both parties complete the authentication by + generating a shared temporary key, authenticating the entire + protocol, and generating key material for the EAP consumer protocol. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | PNonce_PS/PNonce_S ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Auth_S/Auth_P ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 5: EAP-EKE-Confirm Payload + + PNonce_PS/PNonce_S: + + This field ("protected nonce") contains the encrypted and + integrity-protected response to the other party's challenge; see + Sections 5.3 and 5.4. Similarly to the PNonce_P field, this + field's size is determined by the encryption and MAC algorithms. + + Auth_S/Auth_P: + + This field signs the preceding messages, including the Identity + and the negotiated fields. This prevents various possible + attacks, such as algorithm downgrade attacks. See Section 5.3 and + Section 5.4. The size is determined by the pseudo-random function + negotiated. + + + + + + + + + +Sheffer, et al. Informational [Page 11] + +RFC 6124 The EAP-EKE Method February 2011 + + +4.2.4. The EAP-EKE-Failure Payload + + The EAP-EKE-Failure payload format 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Failure-Code | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 6: EAP-EKE-Failure Payload + + The payload's size is always exactly 4 octets. + + The following Failure-Code values are defined: + + +------------+----------------+-------------------------------------+ + | Value | Name | Meaning | + +------------+----------------+-------------------------------------+ + | 0x00000000 | Reserved | | + | 0x00000001 | No Error | This code is used for failure | + | | | acknowledgement, see below. | + | 0x00000002 | Protocol Error | A failure to parse or understand a | + | | | protocol message or one of its | + | | | payloads. | + | 0x00000003 | Password Not | A password could not be located for | + | | Found | the identity presented by the other | + | | | protocol party, making | + | | | authentication impossible. | + | 0x00000004 | Authentication | Failure in the cryptographic | + | | Failure | computation, most likely caused by | + | | | an incorrect password or an | + | | | inappropriate identity type. | + | 0x00000005 | Authorization | While the password being used is | + | | Failure | correct, the user is not authorized | + | | | to connect. | + | 0x00000006 | No Proposal | The peer is unwilling to select any | + | | Chosen | of the cryptographic proposals | + | | | offered by the server. | + +------------+----------------+-------------------------------------+ + + Additional values of this field are available via IANA registration, + see Section 7.8. + + When the peer encounters an error situation, it MUST respond with + EAP-EKE-Failure. The server MUST reply with an EAP-Failure message + to end the exchange. + + + + + +Sheffer, et al. Informational [Page 12] + +RFC 6124 The EAP-EKE Method February 2011 + + + When the server encounters an error situation, it MUST respond with + EAP-EKE-Failure. The peer MUST send back an EAP-EKE-Failure message + containing a "No Error" failure code. Then the server MUST send an + EAP-Failure message to end the exchange. + + Implementation of the "Password Not Found" code is not mandatory. + For security reasons, implementations MAY choose to return + "Authentication Failure" also in cases where the password cannot be + located. + +4.3. Protected Fields + + Several fields are encrypted and integrity-protected. They are + denoted Prot(...). Their general structure is 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Initialization Vector (IV) (optional) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Encrypted Data ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ ~ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ~ | Random Padding | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Integrity Check Value (ICV) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 7: Protected Field Structure + + The protected field is a concatenation of three octet strings: + + o An optional IV, required when the encryption algorithm/mode + necessitates it, e.g., for CBC encryption. The content and size + of this field are determined by the selected encryption algorithm. + In the case of CBC encryption, this field is a random octet string + having the same size as the algorithm's block size. + + o The original data, followed if necessary by random padding. This + padding has the minimal length (possibly zero) required to + complete the length of the encrypted data to the encryption + algorithm's block size. The original data and the padding are + encrypted together. + + + + + + + +Sheffer, et al. Informational [Page 13] + +RFC 6124 The EAP-EKE Method February 2011 + + + o ICV, a Message Authentication Code (MAC) cryptographic checksum of + the encrypted data, including the padding. The checksum is + computed over the encrypted, rather than the plaintext, data. Its + length is determined by the MAC algorithm negotiated. + + We note that because of the requirement for an explicit ICV, this + specification does not support authenticated encryption algorithms. + Such algorithms may be added by a future extension. + +4.4. Encrypted Fields + + Two fields are encrypted but are not integrity protected. They are + denoted Encr(...). Their format is identical to a protected field + (Section 4.3), except that the Integrity Check Value is omitted. + +4.5. Channel Binding Values + + This protocol allows higher-level protocols to transmit limited + opaque information between the peer and the server. This information + is integrity protected but not encrypted, and may be used to ensure + that protocol participants are identical at different protocol + layers. See Section 7.15 of [RFC3748] for more information on the + rationale behind this facility. + + EAP-EKE neither validates nor makes any use of the transmitted + information. The information MUST NOT be used by the consumer + protocol until it is verified in the EAP-EKE-Confirm exchange + (specifically, until it is integrity protected by the Auth_S, Auth_P + payloads). Consequently, it MUST NOT be relied upon in case an error + occurs at the EAP-EKE level. + + An unknown Channel Binding Value SHOULD be ignored by the recipient. + + Some implementations may require certain values to be present, and + will abort the protocol if they are not. Such policy is out of scope + of the current protocol. + + + + + + + + + + + + + + + +Sheffer, et al. Informational [Page 14] + +RFC 6124 The EAP-EKE Method February 2011 + + + Each Channel Binding Value is encoded using a TLV structure: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CBType | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Value ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 8: Channel Binding Value + + CBType: + + This is the Channel Binding Value's type. This document defines + the value 0x0000 as reserved. Other values are available for IANA + allocation, see Section 7.6. + + Length: + + This field is the total length in octets of the structure, + including the CBType and Length fields. + + This facility should be used with care, since EAP-EKE does not + provide for message fragmentation. EAP-EKE is not a tunneled method + and should not be used as a generic transport; specifically, + implementors should refrain from using the Channel Binding facility + to transmit posture information, in the sense of [RFC5209]. + +5. Protocol Sequence + + This section describes the sequence of messages for the Commit and + Confirm exchanges, and lists the cryptographic operations performed + by the server and the peer. + +5.1. EAP-EKE-Commit/Request + + The server computes: + + y_s = g ^ x_s (mod p), + + where x_s is a randomly chosen number in the range 2 .. p-1. The + randomly chosen number is the ephemeral private key, and the + calculated value is the corresponding ephemeral public key. The + server and the peer MUST both use a fresh, random value for x_s and + the corresponding x_p on each run of the protocol. + + + + + +Sheffer, et al. Informational [Page 15] + +RFC 6124 The EAP-EKE Method February 2011 + + + The server computes and transmits the encrypted field (Section 4.4) + + temp = prf(0+, password) + + key = prf+(temp, ID_S | ID_P) + + DHComponent_S = Encr(key, y_s). + + See Section 6.1 for the prf+ notation. The first argument to "prf" + is a string of zero octets whose length is the output size of the + base hash algorithm, e.g., 20 octets for HMAC-SHA1; the result is of + the same length. The first output octets of prf+ are used as the + encryption key for the negotiated encryption algorithm, according to + that algorithm's key length. + + Since the PRF function is required to be an application of the HMAC + operator to a hash function, the above construction implements HKDF + as defined in [RFC5869]. + + When using block ciphers, it may be necessary to pad y_s on the + right, to fit the encryption algorithm's block size. In such cases, + random padding MUST be used, and this randomness is critical to the + security of the protocol. Randomness recommendations can be found in + [RFC4086]; also see [NIST.800-90.2007] for additional recommendations + on cryptographic-level randomness. When decrypting this field, the + real length of y_s is determined according to the negotiated Diffie- + Hellman group. + + If the password needs to be stored on the server, it is RECOMMENDED + to store a randomized password value as a password-equivalent, rather + than the cleartext password. We note that implementations may choose + the output of either of the two steps of the password derivation. + Using the output of the second step, where the password is salted by + the identity values, is more secure; however, it may create an + operational issue if identities are likely to change. See also + Section 8.5. + + This protocol supports internationalized, non-ASCII passwords. The + input password string SHOULD be processed according to the rules of + the [RFC4013] profile of [RFC3454]. A password SHOULD be considered + a "stored string" per [RFC3454], and unassigned code points are + therefore prohibited. The output is the binary representation of the + processed UTF-8 [RFC3629] character string. Prohibited output and + unassigned code points encountered in SASLprep preprocessing SHOULD + cause a preprocessing failure and the output SHOULD NOT be used. + + + + + + +Sheffer, et al. Informational [Page 16] + +RFC 6124 The EAP-EKE Method February 2011 + + +5.2. EAP-EKE-Commit/Response + + The peer computes: + + y_p = g ^ x_p (mod p) + + Then computes: + + temp = prf(0+, password) + + key = prf+(temp, ID_S | ID_P) + + DHComponent_P = Encr(key, y_p) + + formatted as an encrypted field (Section 4.4). + + Both sides calculate + + SharedSecret = prf(0+, g ^ (x_s * x_p) (mod p)) + + The first argument to "prf" is a string of zero octets whose length + is the output size of the base hash algorithm, e.g., 20 octets for + HMAC-SHA1; the result is of the same length. This extra application + of the pseudo-random function is the "extraction step" of [RFC5869]. + Note that the peer needs to compute the SharedSecret value before + sending out its response. + + The encryption and integrity protection keys are computed: + + Ke | Ki = prf+(SharedSecret, "EAP-EKE Keys" | ID_S | ID_P) + + And the peer generates the Protected Nonce: + + PNonce_P = Prot(Ke, Ki, Nonce_P), + + where Nonce_P is a randomly generated binary string. The length of + Nonce_P MUST be the maximum of 16 octets, and half the key size of + the negotiated prf (rounded up to the next octet if necessary). The + peer constructs this value as a protected field (Section 4.3), + encrypted using Ke and integrity protected using Ki with the + negotiated encryption and MAC algorithm. + + The peer now sends a message that contains the two generated fields. + + The server MUST verify the correct integrity protection of the + received nonce, and MUST abort the protocol if it is incorrect, with + an "Authentication Failure" code. + + + + +Sheffer, et al. Informational [Page 17] + +RFC 6124 The EAP-EKE Method February 2011 + + +5.3. EAP-EKE-Confirm/Request + + The server constructs: + + PNonce_PS = Prot(Ke, Ki, Nonce_P | Nonce_S), + + as a protected field, where Nonce_S is a randomly generated string, + of the same size as Nonce_P. + + It computes: + + Ka = prf+(SharedSecret, "EAP-EKE Ka" | ID_S | ID_P | Nonce_P | + Nonce_S) + + whose length is the preferred key length of the negotiated prf (see + Section 5.2). It then constructs: + + Auth_S = prf(Ka, "EAP-EKE server" | EAP-EKE-ID/Request | EAP-EKE- + ID/Response | EAP-EKE-Commit/Request | EAP-EKE-Commit/Response). + + The messages are included in full, starting with the EAP header, and + including any possible future extensions. + + This construction of the Auth_S (and Auth_P) value implies that any + future extensions MUST NOT be added to the EAP-EKE-Confirm/Request or + EAP-EKE-Confirm/Response messages themselves, unless these extensions + are integrity-protected in some other manner. + + The server now sends a message that contains the two fields. + + The peer MUST verify the correct integrity protection of the received + nonces and the correctness of the Auth_S value, and MUST abort the + protocol if either is incorrect, with an "Authentication Failure" + code. + +5.4. EAP-EKE-Confirm/Response + + The peer computes Ka, and generates: + + PNonce_S = Prot(Ke, Ki, Nonce_S) + + as a protected field. It then computes: + + Auth_P = prf(Ka, "EAP-EKE peer" | EAP-EKE-ID/Request | EAP-EKE-ID/ + Response | EAP-EKE-Commit/Request | EAP-EKE-Commit/Response) + + The peer sends a message that contains the two fields. + + + + +Sheffer, et al. Informational [Page 18] + +RFC 6124 The EAP-EKE Method February 2011 + + + The server MUST verify the correct integrity protection of the + received nonce and the correctness of the Auth_P value, and MUST + abort the protocol if either is incorrect, with an "Authentication + Failure" code. + +5.5. MSK and EMSK + + Following the last message of the protocol, both sides compute and + export the shared keys, each 64 bytes in length: + + MSK | EMSK = prf+(SharedSecret, "EAP-EKE Exported Keys" | ID_S | + ID_P | Nonce_P | Nonce_S) + + When the RADIUS attributes specified in [RFC2548] are used to + transport keying material, then the first 32 bytes of the MSK + correspond to MS-MPPE-RECV-KEY and the second 32 bytes to MS-MPPE- + SEND-KEY. In this case, only 64 bytes of keying material (the MSK) + are used. + + At this point, both protocol participants MUST discard all + intermediate cryptographic values, including x_p, x_s, y_p, y_s, Ke, + Ki, Ka, and SharedSecret. Similarly, both parties MUST immediately + discard these values whenever the protocol terminates with a failure + code or as a result of timeout. + +6. Cryptographic Details + +6.1. Generating Keying Material + + Keying material is derived as the output of the negotiated pseudo- + random function (prf) algorithm. Since the amount of keying material + needed may be greater than the size of the output of the prf + algorithm, we will use the prf iteratively. We denote by "prf+" the + function that outputs a pseudo-random stream based on the inputs to a + prf as follows (where "|" indicates concatenation): + + prf+ (K, S) = T1 | T2 | T3 | T4 | ... + + where: + + T1 = prf(K, S | 0x01) + + T2 = prf(K, T1 | S | 0x02) + + T3 = prf(K, T2 | S | 0x03) + + T4 = prf(K, T3 | S | 0x04) + + + + +Sheffer, et al. Informational [Page 19] + +RFC 6124 The EAP-EKE Method February 2011 + + + continuing as needed to compute all required keys. The keys are + taken from the output string without regard to boundaries (e.g., if + the required keys are a 256-bit Advanced Encryption Standard (AES) + key and a 160-bit HMAC key, and the prf function generates 160 bits, + the AES key will come from T1 and the beginning of T2, while the HMAC + key will come from the rest of T2 and the beginning of T3). + + The constant concatenated to the end of each string feeding the prf + is a single octet. In this document, prf+ is not defined beyond 255 + times the size of the prf output. + +6.2. Diffie-Hellman Groups + + Many of the commonly used Diffie-Hellman groups are inappropriate for + use in EKE. Most of these groups use a generator that is not a + primitive element of the group. As a result, an attacker running a + dictionary attack would be able to learn at least 1 bit of + information for each decrypted password guess. + + Any MODP Diffie-Hellman group defined for use in this protocol MUST + have the following properties to ensure that it does not leak a + usable amount of information about the password: + + 1. The generator is a primitive element of the group. + + 2. The most significant 64 bits of the prime number are 1. + + 3. The group's order p is a "safe prime", i.e., (p-1)/2 is also + prime. + + The last requirement is related to the strength of the Diffie-Hellman + algorithm, rather than the password encryption. It also makes it + easy to verify that the generator is primitive. + + Suitable groups are defined in Section 7.1. + +6.3. Mandatory Algorithms + + To facilitate interoperability, the following algorithms are + mandatory to implement: + + o ENCR_AES128_CBC (encryption algorithm) + + o PRF_HMAC_SHA1 (pseudo-random function) + + o MAC_HMAC_SHA1 (keyed message digest) + + o DHGROUP_EKE_14 (DH-group) + + + +Sheffer, et al. Informational [Page 20] + +RFC 6124 The EAP-EKE Method February 2011 + + +7. IANA Considerations + + IANA has allocated the EAP method type 53 from the range 1-191, for + "EAP-EKE Version 1". + + Per this document, IANA created the registries described in the + following sub-sections. Values (other than private-use ones) can be + added to these registries per Specification Required [RFC5226], with + two exceptions: the Exchange and Failure Code registries can only be + extended per RFC Required [RFC5226]. + +7.1. Diffie-Hellman Group Registry + + This section defines an IANA registry for Diffie-Hellman groups. + + This table defines the initial contents of this registry. The Value + column is used when negotiating the group. Additional groups may be + defined through IANA allocation. Any future specification that + defines a non-MODP group MUST specify its use within EAP-EKE and MUST + demonstrate the group's security in this context. + + +-----------------+---------+---------------------------------------+ + | Name | Value | Description | + +-----------------+---------+---------------------------------------+ + | Reserved | 0 | | + | DHGROUP_EKE_2 | 1 | The prime number of the 1024-bit | + | | | Group 2 [RFC5996], with the generator | + | | | 5 (decimal) | + | DHGROUP_EKE_5 | 2 | The prime number of the 1536-bit | + | | | Group 5 [RFC3526], g=31 | + | DHGROUP_EKE_14 | 3 | The prime number of the 2048-bit | + | | | Group 14 [RFC3526], g=11 | + | DHGROUP_EKE_15 | 4 | The prime number of the 3072-bit | + | | | Group 15 [RFC3526], g=5 | + | DHGROUP_EKE_16 | 5 | The prime number of the 4096-bit | + | | | Group 16 [RFC3526], g=5 | + | Available for | 6-127 | | + | allocation via | | | + | IANA | | | + | Reserved for | 128-255 | | + | Private Use | | | + +-----------------+---------+---------------------------------------+ + + + + + + + + + +Sheffer, et al. Informational [Page 21] + +RFC 6124 The EAP-EKE Method February 2011 + + +7.2. Encryption Algorithm Registry + + This section defines an IANA registry for encryption algorithms: + + +-----------------+---------+-----------------------------------+ + | Name | Value | Definition | + +-----------------+---------+-----------------------------------+ + | Reserved | 0 | | + | ENCR_AES128_CBC | 1 | AES with a 128-bit key, CBC mode | + | | 2-127 | Available for allocation via IANA | + | | 128-255 | Reserved for Private Use | + +-----------------+---------+-----------------------------------+ + +7.3. Pseudo-Random Function Registry + + This section defines an IANA registry for pseudo-random function + algorithms: + + +-------------------+---------+-------------------------------------+ + | Name | Value | Definition | + +-------------------+---------+-------------------------------------+ + | Reserved | 0 | | + | PRF_HMAC_SHA1 | 1 | HMAC SHA-1, as defined in [RFC2104] | + | PRF_HMAC_SHA2_256 | 2 | HMAC SHA-2-256 [SHA] | + | | 3-127 | Available for allocation via IANA | + | | 128-255 | Reserved for Private Use | + +-------------------+---------+-------------------------------------+ + + A pseudo-random function takes two parameters K and S (the key and + input string respectively), and, to be usable in this protocol, must + be defined for all lengths of K between 0 and 65,535 bits + (inclusive). + + Any future pseudo-random function MUST be based on the HMAC + construct, since the security of HKDF is only known for such + functions. + + + + + + + + + + + + + + + +Sheffer, et al. Informational [Page 22] + +RFC 6124 The EAP-EKE Method February 2011 + + +7.4. Keyed Message Digest (MAC) Registry + + This section defines an IANA registry for keyed message digest + algorithms: + + +-------------------+---------+--------------+----------------------+ + | Name | Value | Key Length | Definition | + | | | (Octets) | | + +-------------------+---------+--------------+----------------------+ + | Reserved | 0 | | | + | MAC_HMAC_SHA1 | 1 | 20 | HMAC SHA-1, as | + | | | | defined in [RFC2104] | + | MAC_HMAC_SHA2_256 | 2 | 32 | HMAC SHA-2-256 | + | Reserved | 3-127 | | Available for | + | | | | allocation via IANA | + | Reserved | 128-255 | | Reserved for Private | + | | | | Use | + +-------------------+---------+--------------+----------------------+ + +7.5. Identity Type Registry + + This section defines an IANA registry for identity types: + + +-----------+---------+---------------------------------------------+ + | Name | Value | Definition | + +-----------+---------+---------------------------------------------+ + | Reserved | 0 | | + | ID_OPAQUE | 1 | An opaque octet string | + | ID_NAI | 2 | A Network Access Identifier, as defined in | + | | | [RFC4282] | + | ID_IPv4 | 3 | An IPv4 address, in binary format | + | ID_IPv6 | 4 | An IPv6 address, in binary format | + | ID_FQDN | 5 | A fully qualified domain name, see note | + | | | below | + | ID_DN | 6 | An LDAP Distinguished Name formatted as a | + | | | string, as defined in [RFC4514] | + | | 7-127 | Available for allocation via IANA | + | | 128-255 | Reserved for Private Use | + +-----------+---------+---------------------------------------------+ + + An example of an ID_FQDN is "example.com". The string MUST NOT + contain any terminators (e.g., NULL, CR, etc.). All characters in + the ID_FQDN are ASCII; for an internationalized domain name, the + syntax is as defined in [RFC5891], for example + "xn--tmonesimerkki-bfbb.example.net". + + + + + + +Sheffer, et al. Informational [Page 23] + +RFC 6124 The EAP-EKE Method February 2011 + + +7.6. EAP-EKE Channel Binding Type Registry + + This section defines an IANA registry for the Channel Binding Type + registry, a 16-bit long code. The value 0x0000 has been defined as + Reserved. All other values up to and including 0xfeff are available + for allocation via IANA. The remaining values up to and including + 0xffff are available for Private Use. + +7.7. Exchange Registry + + This section defines an IANA registry for the EAP-EKE Exchange + registry, an 8-bit long code. Initial values are defined in + Section 4.1. All values up to and including 0x7f are available for + allocation via IANA. The remaining values up to and including 0xff + are available for private use. + +7.8. Failure-Code Registry + + This section defines an IANA registry for the Failure-Code registry, + a 32-bit long code. Initial values are defined in Section 4.2.4. + All values up to and including 0xfeffffff are available for + allocation via IANA. The remaining values up to and including + 0xffffffff are available for private use. + +8. Security Considerations + + Any protocol that claims to solve the problem of password- + authenticated key exchange must be resistant to active, passive, and + dictionary attack and have the quality of forward secrecy. These + characteristics are discussed further in the following paragraphs. + + Resistance to Passive Attack: A passive attacker is one that merely + relays messages back and forth between the peer and server, + faithfully, and without modification. The contents of the + messages are available for inspection, but that is all. To + achieve resistance to passive attack, such an attacker must not be + able to obtain any information about the password or anything + about the resulting shared secret from watching repeated runs of + the protocol. Even if a passive attacker is able to learn the + password, she will not be able to determine any information about + the resulting secret shared by the peer and server. + + Resistance to Active Attack: An active attacker is able to modify, + add, delete, and replay messages sent between protocol + participants. For this protocol to be resistant to active attack, + the attacker must not be able to obtain any information about the + password or the shared secret by using any of its capabilities. + In addition, the attacker must not be able to fool a protocol + + + +Sheffer, et al. Informational [Page 24] + +RFC 6124 The EAP-EKE Method February 2011 + + + participant into thinking that the protocol completed + successfully. It is always possible for an active attacker to + deny delivery of a message critical in completing the exchange. + This is no different than dropping all messages and is not an + attack against the protocol. + + Resistance to Dictionary Attack: For this protocol to be resistant + to dictionary attack, any advantage an adversary can gain must be + directly related to the number of interactions she makes with an + honest protocol participant and not through computation. The + adversary will not be able to obtain any information about the + password except whether a single guess from a single protocol run + is correct or incorrect. + + Forward Secrecy: Compromise of the password must not provide any + information about the secrets generated by earlier runs of the + protocol. + + [RFC3748] requires that documents describing new EAP methods clearly + articulate the security properties of the method. In addition, for + use with wireless LANs, [RFC4017] mandates and recommends several of + these. The claims are: + + 1. Mechanism: password. + + 2. Claims: + + * Mutual authentication: the peer and server both authenticate + each other by proving possession of a shared password. This + is REQUIRED by [RFC4017]. + + * Forward secrecy: compromise of the password does not reveal + the secret keys (MSK and EMSK) from earlier runs of the + protocol. + + * Replay protection: an attacker is unable to replay messages + from a previous exchange either to learn the password or a key + derived by the exchange. Similarly, the attacker is unable to + induce either the peer or server to believe the exchange has + successfully completed when it hasn't. + + * Key derivation: a shared secret is derived by performing a + group operation in a finite cyclic group (e.g., + exponentiation) using secret data contributed by both the peer + and server. An MSK and EMSK are derived from that shared + secret. This is REQUIRED by [RFC4017]. + + + + + +Sheffer, et al. Informational [Page 25] + +RFC 6124 The EAP-EKE Method February 2011 + + + * Dictionary attack resistance: an attacker can only make one + password guess per active attack, and the protocol is designed + so that the attacker does not gain any confirmation of her + guess by observing the decrypted y_s or y_p value (see below). + The advantage she can gain is through interaction not through + computation. This is REQUIRED by [RFC4017]. + + * Session independence: this protocol is resistant to active and + passive attacks and does not enable compromise of subsequent + or prior MSKs or EMSKs from either passive or active attacks. + + * Denial-of-service resistance: it is possible for an attacker + to cause a server to allocate state and consume CPU. Such an + attack is gated, though, by the requirement that the attacker + first obtain connectivity through a lower-layer protocol + (e.g., 802.11 authentication followed by 802.11 association, + or 802.3 "link-up") and respond to two EAP messages: the + EAP-ID/Request and the EAP-EKE-ID/Request. + + * Man-in-the-Middle Attack resistance: this exchange is + resistant to active attack, which is a requirement for + launching a man-in-the-middle attack. This is REQUIRED by + [RFC4017]. + + * Shared state equivalence: upon completion of EAP-EKE, the peer + and server both agree on the MSK and EMSK values. The peer + has authenticated the server based on the Server_ID and the + server has authenticated the peer based on the Peer_ID. This + is due to the fact that Peer_ID, Server_ID, and the generated + shared secret are all combined to make the authentication + element that must be shared between the peer and server for + the exchange to complete. This is REQUIRED by [RFC4017]. + + * Fragmentation: this protocol does not define a technique for + fragmentation and reassembly. + + * Resistance to "Denning-Sacco" attack: learning keys + distributed from an earlier run of the protocol, such as the + MSK or EMSK, will not help an adversary learn the password. + + 3. Key strength: the strength of the resulting key depends on the + finite cyclic group chosen. Sufficient key strength is REQUIRED + by [RFC4017]. Clearly, "sufficient" strength varies over time, + depending on computation power assumed to be available to + potential attackers. + + + + + + +Sheffer, et al. Informational [Page 26] + +RFC 6124 The EAP-EKE Method February 2011 + + + 4. Key hierarchy: MSKs and EMSKs are derived from the secret values + generated during the protocol run, using a negotiated pseudo- + random function. + + 5. Vulnerabilities (note that none of these are REQUIRED by + [RFC4017]): + + * Protected ciphersuite negotiation: the ciphersuite proposal + made by the server is not protected from tampering by an + active attacker. However, if a proposal was modified by an + active attacker, it would result in a failure to confirm the + message sent by the other party, since the proposal is bound + by each side into its Confirm message, and the protocol would + fail as a result. Note that this assumes that none of the + proposed ciphersuites enables an attacker to perform real-time + cryptanalysis. + + * Confidentiality: none of the messages sent in this protocol + are encrypted, though many of the protocol fields are. + + * Integrity protection: protocol messages are not directly + integrity protected; however, the ID and Commit exchanges are + integrity protected through the Auth payloads exchanged in the + Confirm exchange. + + * Channel binding: this protocol enables the exchange of + integrity-protected channel information that can be compared + with values communicated via out-of-band mechanisms. + + * Fast reconnect: this protocol does not provide a fast + reconnect capability. + + * Cryptographic binding: this protocol is not a tunneled EAP + method and therefore has no cryptographic information to bind. + + * Identity protection: the EAP-EKE-ID exchange is not protected. + An attacker will see the server's identity in the EAP-EKE-ID/ + Request and see the peer's identity in EAP-EKE-ID/Response. + See also Section 8.4. + +8.1. Cryptographic Analysis + + When analyzing the Commit exchange, it should be noted that the base + security assumptions are different from "normal" cryptology. + Normally, we assume that the key has strong security properties, and + that the data may have few or none. Here, we assume that the key has + weak security properties (the attacker may have a list of possible + keys), and hence we need to ensure that the data has strong + + + +Sheffer, et al. Informational [Page 27] + +RFC 6124 The EAP-EKE Method February 2011 + + + properties (indistinguishable from random). This difference may mean + that conventional wisdom in cryptology might not apply in this case. + This also imposes severe constraints on the protocol, e.g., the + mandatory use of random padding and the need to define specific + finite groups. + +8.2. Diffie-Hellman Group Considerations + + It is fundamental to the dictionary attack resistance that the + Diffie-Hellman public values y_s and y_p are indistinguishable from a + random string. If this condition is not met, then a passive attacker + can do trial-decryption of the encrypted DHComponent_P or + DHComponent_S values based on a password guess, and if they decrypt + to a value that is not a valid public value, they know that the + password guess was incorrect. + + For MODP groups, Section 6.2 gives conditions on the group to make + sure that this criterion is met. For other groups (for example, + Elliptic Curve groups), some other means of ensuring this must be + employed. The standard way of expressing Elliptic Curve public + values does not meet this criterion, as a valid Elliptic Curve X + coordinate can be distinguished from a random string with probability + of approximately 0.5. + + A future document might introduce a group representation, and/or a + slight modification of the password encryption scheme, so that + Elliptic Curve groups can be accommodated. [BR02] presents several + alternative solutions for this problem. + +8.3. Resistance to Active Attacks + + An attacker, impersonating either the peer or the server, can always + try to enumerate all possible passwords, for example by using a + dictionary. To counter this likely attack vector, both peer and + server MUST implement rate-limiting mechanisms. We note that locking + out the other party after a small number of tries would create a + trivial denial-of-service opportunity. + +8.4. Identity Protection, Anonymity, and Pseudonymity + + By default, the EAP-EKE-ID exchange is unprotected, and an + eavesdropper can observe both parties' identities. A future + extension of this protocol may support anonymity, e.g., by allowing + the server to send a temporary identity to the peer at the end of the + exchange, so that the peer can use that identity in subsequent + exchanges. + + + + + +Sheffer, et al. Informational [Page 28] + +RFC 6124 The EAP-EKE Method February 2011 + + + EAP-EKE differs in this respect from tunneled methods, which + typically provide unconditional identity protection to the peer by + encrypting the identity exchange, but reveal information in the + server certificate. It is possible to use EAP-EKE as the inner + method in a tunneled EAP method in order to achieve this level of + identity protection. + +8.5. Password Processing and Long-Term Storage + + This document recommends that a password-equivalent (a hash of the + password) be stored instead of the cleartext password. While this + solution provides a measure of security, there are also tradeoffs + related to algorithm agility: + + o Each stored password must identify the hash function that was used + to compute the stored value. + + o Complex deployments and migration scenarios might necessitate + multiple stored passwords, one per each algorithm. + + o Changing the algorithm can require, in some cases, that the users + manually change their passwords. + + The reader is referred to Section 10 of [RFC3629] for security + considerations related to the parsing and processing of UTF-8 + strings. + +9. Acknowledgements + + Much of this document was unashamedly picked from [RFC5931] and + [EAP-SRP], and we would like to acknowledge the authors of these + documents: Dan Harkins, Glen Zorn, James Carlson, Bernard Aboba, and + Henry Haverinen. We would like to thank David Jacobson, Steve + Bellovin, Russ Housley, Brian Weis, Dan Harkins, and Alexey Melnikov + for their useful comments. Lidar Herooty and Idan Ofrat implemented + this protocol and helped us improve it by asking the right questions, + and we would like to thank them both. + +10. References + +10.1. Normative References + + [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: + Keyed-Hashing for Message Authentication", + RFC 2104, February 1997. + + + + + + +Sheffer, et al. Informational [Page 29] + +RFC 6124 The EAP-EKE Method February 2011 + + + [RFC2119] Bradner, S., "Key words for use in RFCs to + Indicate Requirement Levels", BCP 14, RFC 2119, + March 1997. + + [RFC2548] Zorn, G., "Microsoft Vendor-specific RADIUS + Attributes", RFC 2548, March 1999. + + [RFC3454] Hoffman, P. and M. Blanchet, "Preparation of + Internationalized Strings ("stringprep")", + RFC 3454, December 2002. + + [RFC3526] Kivinen, T. and M. Kojo, "More Modular + Exponential (MODP) Diffie-Hellman groups for + Internet Key Exchange (IKE)", RFC 3526, May 2003. + + [RFC3629] Yergeau, F., "UTF-8, a transformation format of + ISO 10646", STD 63, RFC 3629, November 2003. + + [RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson, + J., and H. Levkowetz, "Extensible Authentication + Protocol (EAP)", RFC 3748, June 2004. + + [RFC4013] Zeilenga, K., "SASLprep: Stringprep Profile for + User Names and Passwords", RFC 4013, + February 2005. + + [RFC4282] Aboba, B., Beadles, M., Arkko, J., and P. Eronen, + "The Network Access Identifier", RFC 4282, + December 2005. + + [RFC4514] Zeilenga, K., "Lightweight Directory Access + Protocol (LDAP): String Representation of + Distinguished Names", RFC 4514, June 2006. + + [RFC5891] Klensin, J., "Internationalized Domain Names in + Applications (IDNA): Protocol", RFC 5891, + August 2010. + + [RFC5996] Kaufman, C., Hoffman, P., Nir, Y., and P. Eronen, + "Internet Key Exchange Protocol Version 2 + (IKEv2)", RFC 5996, September 2010. + + [SHA] National Institute of Standards and Technology, + U.S. Department of Commerce, "Secure Hash + Standard", NIST FIPS 180-3, October 2008. + + + + + + +Sheffer, et al. Informational [Page 30] + +RFC 6124 The EAP-EKE Method February 2011 + + +10.2. Informative References + + [BM92] Bellovin, S. and M. Merritt, "Encrypted Key + Exchange: Password-Based Protocols Secure Against + Dictionary Attacks", Proc. IEEE Symp. on Research + in Security and Privacy , May 1992. + + [BM93] Bellovin, S. and M. Merritt, "Augmented Encrypted + Key Exchange: A Password-Based Protocol Secure + against Dictionary Attacks and Password File + Compromise", Proc. 1st ACM Conference on Computer + and Communication Security , 1993. + + [BMP00] Boyko, V., MacKenzie, P., and S. Patel, "Provably + Secure Password Authenticated Key Exchange Using + Diffie-Hellman", Advances in Cryptology, + EUROCRYPT 2000 , 2000. + + [BR02] Black, J. and P. Rogaway, "Ciphers with Arbitrary + Finite Domains", Proc. of the RSA Cryptographer's + Track (RSA CT '02), LNCS 2271 , 2002. + + [EAP-SRP] Carlson, J., Aboba, B., and H. Haverinen, "EAP + SRP-SHA1 Authentication Protocol", Work + in Progress, July 2001. + + [JAB96] Jablon, D., "Strong Password-Only Authenticated + Key Exchange", ACM Computer Communications + Review Volume 1, Issue 5, October 1996. + + [LUC97] Lucks, S., "Open Key Exchange: How to Defeat + Dictionary Attacks Without Encrypting Public + Keys", Proc. of the Security Protocols + Workshop LNCS 1361, 1997. + + [NIST.800-90.2007] National Institute of Standards and Technology, + "Recommendation for Random Number Generation + Using Deterministic Random Bit Generators + (Revised)", NIST SP 800-90, March 2007. + + [PA97] Patel, S., "Number Theoretic Attacks On Secure + Password Schemes", Proceedings of the 1997 IEEE + Symposium on Security and Privacy , 1997. + + [RFC4017] Stanley, D., Walker, J., and B. Aboba, + "Extensible Authentication Protocol (EAP) Method + Requirements for Wireless LANs", RFC 4017, + March 2005. + + + +Sheffer, et al. Informational [Page 31] + +RFC 6124 The EAP-EKE Method February 2011 + + + [RFC4086] Eastlake, D., Schiller, J., and S. Crocker, + "Randomness Requirements for Security", BCP 106, + RFC 4086, June 2005. + + [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, + K., and J. Tardo, "Network Endpoint Assessment + (NEA): Overview and Requirements", RFC 5209, + June 2008. + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for + Writing an IANA Considerations Section in RFCs", + BCP 26, RFC 5226, May 2008. + + [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract- + and-Expand Key Derivation Function (HKDF)", + RFC 5869, May 2010. + + [RFC5931] Harkins, D. and G. Zorn, "Extensible + Authentication Protocol (EAP) Authentication + Using Only a Password", RFC 5931, August 2010. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sheffer, et al. Informational [Page 32] + +RFC 6124 The EAP-EKE Method February 2011 + + +Authors' Addresses + + Yaron Sheffer + Independent + + EMail: yaronf.ietf@gmail.com + + + Glen Zorn + Network Zen + 227/358 Thanon Sanphawut + Bang Na, Bangkok 10260 + Thailand + + Phone: +66 (0) 87-040-4617 + EMail: gwz@net-zen.net + + + Hannes Tschofenig + Nokia Siemens Networks + Linnoitustie 6 + Espoo 02600 + Finland + + Phone: +358 (50) 4871445 + EMail: Hannes.Tschofenig@gmx.net + URI: http://www.tschofenig.priv.at + + + Scott Fluhrer + Cisco Systems. + 1414 Massachusetts Ave. + Boxborough, MA 01719 + USA + + EMail: sfluhrer@cisco.com + + + + + + + + + + + + + + + +Sheffer, et al. Informational [Page 33] + |