| < draft-arkko-pppext-eap-aka-10.txt | draft-arkko-pppext-eap-aka-11.txt > | |||
|---|---|---|---|---|
| J. Arkko | Network Working Group J. Arkko | |||
| Internet Draft Ericsson | Internet Draft Ericsson | |||
| Document: draft-arkko-pppext-eap-aka-10.txt H. Haverinen | Document: draft-arkko-pppext-eap-aka-11.txt H. Haverinen | |||
| Expires: December 2003 Nokia | Expires: 27 April, 2004 Nokia | |||
| June 2003 | 27 October, 2003 | |||
| EAP AKA Authentication | EAP AKA Authentication | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft and is subject to all provisions | This document is an Internet-Draft and is subject to all provisions | |||
| of Section 10 of RFC2026. | of Section 10 of RFC2026. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| skipping to change at page 1, line 31 ¶ | skipping to change at page 1, line 31 ¶ | |||
| Internet-Drafts are draft documents valid for a maximum of six | Internet-Drafts are draft documents valid for a maximum of six | |||
| months and may be updated, replaced, or obsoleted by other documents | months and may be updated, replaced, or obsoleted by other documents | |||
| at any time. It is inappropriate to use Internet-Drafts as | at any time. It is inappropriate to use Internet-Drafts as | |||
| reference material or to cite them other than as "work in progress." | reference material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| Comments should be submitted to the eap@frascone.com mailing list. | ||||
| Abstract | Abstract | |||
| This document specifies an Extensible Authentication Protocol (EAP) | This document specifies an Extensible Authentication Protocol (EAP) | |||
| mechanism for authentication and session key distribution using the | mechanism for authentication and session key distribution using the | |||
| Universal Mobile Telecommunications System (UMTS) Authentication and | Universal Mobile Telecommunications System (UMTS) Authentication and | |||
| Key Agreement (AKA) mechanism. UMTS AKA is based on symmetric keys, | Key Agreement (AKA) mechanism. UMTS AKA is based on symmetric keys, | |||
| and runs typically in a UMTS Subscriber Identity Module, a smart | and runs typically in a UMTS Subscriber Identity Module, a smart | |||
| card like device. | card like device. | |||
| EAP AKA includes optional identity privacy support and an optional | EAP AKA includes optional identity privacy support and an optional | |||
| re-authentication procedure. | re-authentication procedure. | |||
| Table of Contents | Table of Contents | |||
| Status of this Memo................................................1 | Status of this Memo................................................1 | |||
| Abstract...........................................................1 | Abstract...........................................................1 | |||
| 1. Introduction and Motivation.....................................2 | 1. Introduction and Motivation.....................................3 | |||
| 2. Terms and Conventions Used in This Document.....................4 | 2. Terms and Conventions Used in This Document.....................4 | |||
| 3. Protocol Overview...............................................6 | 3. Protocol Overview...............................................6 | |||
| 4. Identity Management............................................10 | 4. Operation......................................................11 | |||
| 4.1. User Identity in EAP-Response/Identity.......................10 | ||||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| 4.2. Obtaining Subscriber Identity via EAP AKA Messages...........12 | 4.1. Identity Management..........................................11 | |||
| 4.3. Identity Privacy Support.....................................15 | 4.2. Re-authentication............................................25 | |||
| 5. Re-authentication..............................................21 | 4.3. EAP/AKA Notifications........................................31 | |||
| 6. Message Format.................................................26 | 4.4. Error Cases..................................................32 | |||
| 7. Message Authentication and Encryption..........................27 | 4.5. Key Generation...............................................34 | |||
| 7.1. AT_MAC Attribute.............................................27 | 5. Message Format and Protocol Extensibility......................35 | |||
| 7.2. AT_CHECKCODE Attribute.......................................28 | 5.1. Message Format...............................................35 | |||
| 7.3. AT_IV, AT_ENCR_DATA and AT_PADDING Attributes................30 | 5.2. Protocol Extensibility.......................................37 | |||
| 8. Messages.......................................................31 | 6. Messages.......................................................37 | |||
| 8.1. EAP-Request/AKA-Challenge....................................31 | 6.1. EAP-Request/AKA-Identity.....................................37 | |||
| 8.2. EAP-Response/AKA-Challenge...................................35 | 6.2. EAP-Response/AKA-Identity....................................38 | |||
| 8.3. EAP-Response/AKA-Authentication-Reject.......................36 | 6.3. EAP-Request/AKA-Challenge....................................38 | |||
| 8.4. EAP-Response/AKA-Synchronization-Failure.....................37 | 6.4. EAP-Response/AKA-Challenge...................................39 | |||
| 8.5. EAP-Request/AKA-Identity.....................................38 | 6.5. EAP-Response/AKA-Authentication-Reject.......................39 | |||
| 8.6. EAP-Response/AKA-Identity....................................39 | 6.6. EAP-Response/AKA-Synchronization-Failure.....................39 | |||
| 8.7. EAP-Request/AKA-Reauthentication.............................41 | 6.7. EAP-Request/AKA-Reauthentication.............................39 | |||
| 8.8. EAP-Response/AKA-Reauthentication............................43 | 6.8. EAP-Response/AKA-Reauthentication............................40 | |||
| 8.9. EAP/AKA Notifications........................................46 | 6.9. EAP-Response/AKA-Client-Error................................40 | |||
| 9. Error Cases and the Usage of EAP-Failure and EAP-Success.......49 | 6.10. EAP-Request/AKA-Notification................................40 | |||
| 9.1. Processing Erroneous Packets.................................49 | 6.11. EAP-Response/AKA-Notification...............................41 | |||
| 9.2. EAP-Failure..................................................49 | 7. Attributes.....................................................41 | |||
| 9.3. EAP-Success..................................................50 | 7.1. Table of Attributes..........................................41 | |||
| 10. Key Derivation................................................50 | 7.2. AT_MAC.......................................................42 | |||
| 11. IANA and Protocol Numbering Considerations....................52 | 7.3. AT_IV, AT_ENCR_DATA and AT_PADDING...........................43 | |||
| 12. Security Considerations.......................................53 | 7.4. AT_CHECKCODE.................................................45 | |||
| 12.1. Identity Protection.........................................53 | 7.5. AT_PERMANENT_ID_REQ..........................................47 | |||
| 12.2. Mutual Authentication.......................................53 | 7.6. AT_ANY_ID_REQ................................................47 | |||
| 12.3. Key Derivation..............................................53 | 7.7. AT_FULLAUTH_ID_REQ...........................................47 | |||
| 12.4. Brute-Force and Dictionary Attacks..........................53 | 7.8. AT_IDENTITY..................................................48 | |||
| 12.5. Integrity Protection, Replay Protection and Confidentiality.54 | 7.9. AT_RAND......................................................48 | |||
| 12.6. Negotiation Attacks.........................................54 | 7.10. AT_AUTN.....................................................49 | |||
| 12.7. Fast Reconnect..............................................55 | 7.11. AT_RES......................................................49 | |||
| 12.8. Acknowledged Result Indications.............................55 | 7.12. AT_AUTS.....................................................49 | |||
| 12.9. Man-in-the-middle Attacks...................................55 | 7.13. AT_NEXT_PSEUDONYM...........................................50 | |||
| 12.10. Generating Random Numbers..................................55 | 7.14. AT_NEXT_REAUTH_ID...........................................50 | |||
| 13. Security Claims...............................................55 | 7.15. AT_COUNTER..................................................51 | |||
| 14. Intellectual Property Right Notices...........................56 | 7.16. AT_COUNTER_TOO_SMALL........................................51 | |||
| Acknowledgements and Contributions................................56 | 7.17. AT_NONCE_S..................................................51 | |||
| Authors' Addresses................................................56 | 7.18. AT_NOTIFICATION.............................................52 | |||
| Annex A. Pseudo-Random Number Generator...........................57 | 7.19. AT_CLIENT_ERROR_CODE........................................53 | |||
| 8. IANA and Protocol Numbering Considerations.....................53 | ||||
| 9. Security Considerations........................................54 | ||||
| 9.1. Identity Protection..........................................55 | ||||
| 9.2. Mutual Authentication........................................55 | ||||
| 9.3. Key Derivation...............................................55 | ||||
| 9.4. Brute-Force and Dictionary Attacks...........................55 | ||||
| 9.5. Integrity Protection, Replay Protection and Confidentiality..55 | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| 9.6. Negotiation Attacks..........................................56 | ||||
| 9.7. Fast Reconnect...............................................56 | ||||
| 9.8. Acknowledged Result Indications..............................56 | ||||
| 9.9. Man-in-the-middle Attacks....................................57 | ||||
| 9.10. Generating Random Numbers...................................57 | ||||
| 10. Security Claims...............................................57 | ||||
| 11. Intellectual Property Right Notices...........................58 | ||||
| Acknowledgements and Contributions................................58 | ||||
| Authors' Addresses................................................58 | ||||
| Annex A. Pseudo-Random Number Generator...........................59 | ||||
| 1. Introduction and Motivation | 1. Introduction and Motivation | |||
| This document specifies an Extensible Authentication Protocol (EAP) | This document specifies an Extensible Authentication Protocol (EAP) | |||
| mechanism for authentication and session key distribution using the | mechanism for authentication and session key distribution using the | |||
| UMTS AKA authentication mechanism [1]. UMTS is a global third | UMTS AKA authentication mechanism [TS 33.102]. UMTS is a global | |||
| generation mobile network standard. | third generation mobile network standard. | |||
| EAP AKA Authentication June 2003 | ||||
| AKA is based on challenge-response mechanisms and symmetric | AKA is based on challenge-response mechanisms and symmetric | |||
| cryptography. AKA typically runs in a UMTS Subscriber Identity | cryptography. AKA typically runs in a UMTS Subscriber Identity | |||
| Module (USIM). Compared to the GSM mechanism, UMTS AKA provides | Module (USIM). Compared to the GSM mechanism, UMTS AKA provides | |||
| substantially longer key lengths and mutual authentication. | substantially longer key lengths and mutual authentication. | |||
| The introduction of AKA inside EAP allows several new applications. | The introduction of AKA inside EAP allows several new applications. | |||
| These include the following: | These include the following: | |||
| - The use of the AKA also as a secure PPP authentication method in | - The use of the AKA also as a secure PPP authentication method in | |||
| devices that already contain an USIM. | devices that already contain an USIM. | |||
| - The use of the third generation mobile network authentication | - The use of the third generation mobile network authentication | |||
| infrastructure in the context of wireless LANs and IEEE 802.1x | infrastructure in the context of wireless LANs | |||
| technology through EAP over Wireless [2, 3]. | ||||
| - Relying on AKA and the existing infrastructure in a seamless way | - Relying on AKA and the existing infrastructure in a seamless way | |||
| with any other technology that can use EAP. | with any other technology that can use EAP. | |||
| AKA works in the following manner: | AKA works in the following manner: | |||
| - The USIM and the home environment have agreed on a secret key | - The USIM and the home environment have agreed on a secret key | |||
| beforehand. | beforehand. | |||
| - The actual authentication process starts by having the home | - The actual authentication process starts by having the home | |||
| skipping to change at page 3, line 42 ¶ | skipping to change at page 4, line 4 ¶ | |||
| key and a sequence number. The authentication vector contains a | key and a sequence number. The authentication vector contains a | |||
| random part RAND, an authenticator part AUTN used for | random part RAND, an authenticator part AUTN used for | |||
| authenticating the network to the USIM, an expected result part | authenticating the network to the USIM, an expected result part | |||
| XRES, a session key for integrity check IK, and a session key for | XRES, a session key for integrity check IK, and a session key for | |||
| encryption CK. | encryption CK. | |||
| - The RAND and the AUTN are delivered to the USIM. | - The RAND and the AUTN are delivered to the USIM. | |||
| - The USIM verifies the AUTN, again based on the secret key and the | - The USIM verifies the AUTN, again based on the secret key and the | |||
| sequence number. If this process is successful (the AUTN is valid | sequence number. If this process is successful (the AUTN is valid | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| and the sequence number used to generate AUTN is within the | and the sequence number used to generate AUTN is within the | |||
| correct range), the USIM produces an authentication result, RES | correct range), the USIM produces an authentication result, RES | |||
| and sends this to the home environment. | and sends this to the home environment. | |||
| - The home environment verifies the correct result from the USIM. If | - The home environment verifies the correct result from the USIM. If | |||
| the result is correct, IK and CK can be used to protect further | the result is correct, IK and CK can be used to protect further | |||
| communications between the USIM and the home environment. | communications between the USIM and the home environment. | |||
| When verifying AUTN, the USIM may detect that the sequence number | When verifying AUTN, the USIM may detect that the sequence number | |||
| the network uses is not within the correct range. In this case, the | the network uses is not within the correct range. In this case, the | |||
| USIM calculates a sequence number synchronization parameter AUTS and | USIM calculates a sequence number synchronization parameter AUTS and | |||
| sends it to the network. AKA authentication may then be retried with | sends it to the network. AKA authentication may then be retried with | |||
| a new authentication vector generated using the synchronized | a new authentication vector generated using the synchronized | |||
| sequence number. | sequence number. | |||
| For a specification of the AKA mechanisms and how the cryptographic | For a specification of the AKA mechanisms and how the cryptographic | |||
| values AUTN, RES, IK, CK and AUTS are calculated, see reference [1]. | values AUTN, RES, IK, CK and AUTS are calculated, see [TS 33.102]. | |||
| EAP AKA Authentication June 2003 | ||||
| It is also possible that the home environment delegates the actual | In EAP AKA, the EAP server node obtains the authentication vectors, | |||
| authentication task to an intermediate node. In this case the | compares RES and XRES, and uses CK and IK in key derivation. | |||
| authentication vector or parts of it are delivered to the | ||||
| intermediate node, enabling it to perform the comparison between RES | ||||
| and XRES, and possibly also use CK and IK. Such delivery MUST be | ||||
| done in a secure manner. In EAP AKA, the EAP server node is such an | ||||
| intermediate node. | ||||
| In the third generation mobile networks, AKA is used both for radio | In the third generation mobile networks, AKA is used both for radio | |||
| network authentication and IP multimedia service authentication | network authentication and IP multimedia service authentication | |||
| purposes. Different user identities and formats are used for these; | purposes. Different user identities and formats are used for these; | |||
| the radio network uses the International Mobile Subscriber | the radio network uses the International Mobile Subscriber | |||
| Identifier (IMSI), whereas the IP multimedia service uses the | Identifier (IMSI), whereas the IP multimedia service uses the | |||
| Network Access Identifier (NAI) [4]. | Network Access Identifier (NAI) [RFC 2486]. | |||
| 2. Terms and Conventions Used in This Document | 2. Terms and Conventions Used in This Document | |||
| The following terms will be used through this document: | 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 [RFC 2119]. | ||||
| AAA protocol | The terms and abbreviations "authenticator", "backend authentication | |||
| server", "EAP server", "Silently Discard", "Master Session Key | ||||
| (MSK)", and "Extended Master Session Key (EMSK)" in this document | ||||
| are to be interpreted as described in [EAP]. | ||||
| Authentication, Authorization and Accounting protocol | This document frequently uses the following terms and abbreviations: | |||
| AAA server | AAA protocol | |||
| The AAA server is responsible for storing shared secrets and | Authentication, Authorization and Accounting protocol | |||
| other credential information necessary for the authentication of | ||||
| users. Cf. EAP server | ||||
| AKA | AKA | |||
| Authentication and Key Agreement | Authentication and Key Agreement | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| AuC | AuC | |||
| Authentication Centre. The mobile network element that can | Authentication Centre. The mobile network element that can | |||
| authenticate subscribers either in GSM or in UMTS networks. | authenticate subscribers either in GSM or in UMTS networks. | |||
| Authenticator | ||||
| The entity that terminates the protocol carrying EAP used by the | ||||
| client, such as a Network Access Server (NAS) terminating the PPP | ||||
| link. The EAP server may be co-located in the Authenticator. In | ||||
| this case, the Authenticator may actually authenticate the user | ||||
| based on information received from the AAA server. | ||||
| EAP | EAP | |||
| Extensible Authentication Protocol [5]. | Extensible Authentication Protocol [EAP]. | |||
| EAP AKA Authentication June 2003 | ||||
| EAP server | ||||
| The network element that terminates the EAP protocol. Typically, | ||||
| the EAP server functionality is implemented in a AAA server. | ||||
| GSM | GSM | |||
| Global System for Mobile communications. | Global System for Mobile communications. | |||
| NAI | NAI | |||
| Network Access Identifier [4]. | Network Access Identifier [RFC 2486]. | |||
| AUTN | AUTN | |||
| Authentication value generated by the AuC which together with the | Authentication value generated by the AuC which together with the | |||
| RAND authenticates the server to the client, 128 bits [1]. | RAND authenticates the server to the peer, 128 bits [TS 33.102]. | |||
| AUTS | AUTS | |||
| A value generated by the client upon experiencing a | A value generated by the peer upon experiencing a synchronization | |||
| synchronization failure, 112 bits. | failure, 112 bits. | |||
| Permanent Identity | ||||
| The permanent identity of the peer, including an NAI realm | ||||
| portion in environments where a realm is used. The permanent | ||||
| identity is usually based on the IMSI. Used on full | ||||
| authentication only. | ||||
| Permanent Username | ||||
| The username portion of permanent identity, ie. not including any | ||||
| realm portions. | ||||
| Pseudonym Identity | ||||
| A pseudonym identity of the peer, including an NAI realm portion | ||||
| in environments where a real is used. Used on full authentication | ||||
| only. | ||||
| Pseudonym Username | ||||
| The username portion of pseudonym identity, ie. not including any | ||||
| realm portions. | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| Re-authentication Identity | ||||
| A re-authentication identity of the peer, including an NAI realm | ||||
| portion in environments where a real is used. Used on re- | ||||
| authentication only. | ||||
| Re-authentication Username | ||||
| The username portion of re-authentication identity, ie. not | ||||
| including any realm portions. | ||||
| RAND | RAND | |||
| Random number generated by the AuC, 128 bits [1]. | Random number generated by the AuC, 128 bits [TS 33.102]. | |||
| RES | RES | |||
| Authentication result from the client, which together with the | Authentication result from the peer, which together with the RAND | |||
| RAND authenticates the client to the server, 128 bits [1]. | authenticates the peer to the server, 128 bits [TS 33.102]. | |||
| SQN | SQN | |||
| Sequence number used in the authentication process, 48 bits [1]. | Sequence number used in the authentication process, 48 bits [TS | |||
| 33.102]. | ||||
| SIM | SIM | |||
| Subscriber Identity Module. The SIM is an application | Subscriber Identity Module. The SIM is an application | |||
| traditionally resident on smart cards distributed by GSM | traditionally resident on smart cards distributed by GSM | |||
| operators. | operators. | |||
| SRES | SRES | |||
| The authentication result parameter in GSM, corresponds to the | The authentication result parameter in GSM, corresponds to the | |||
| RES parameter in UMTS aka, 32 bits. | RES parameter in UMTS aka, 32 bits. | |||
| USIM | USIM | |||
| UMTS Subscriber Identity Module. USIM is an application that is | UMTS Subscriber Identity Module. USIM is an application that is | |||
| resident e.g. on smart cards distributed by UMTS operators. | resident e.g. on smart cards distributed by UMTS operators. | |||
| EAP AKA Authentication June 2003 | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | |||
| this document are to be interpreted as described in RFC 2119 [6] | this document are to be interpreted as described in [RFC 2119] | |||
| 3. Protocol Overview | 3. Protocol Overview | |||
| In this document, the term EAP Server refers to the network element | ||||
| that terminates the EAP protocol. Usually the EAP server is separate | ||||
| from the authenticator device, which is the network element closest | ||||
| to the client, such as a Network Access Server (NAS) or an IEEE | ||||
| 802.1X bridge. Alternatively, the EAP server functionality may be | ||||
| co-located in the authenticator although typically, the EAP server | ||||
| functionality is implemented on a separate AAA server with whom the | ||||
| authenticator communicates using an AAA protocol. (The exact AAA | ||||
| communications are outside the scope of this document, however.) | ||||
| The message flow below shows the basic successful full | The message flow below shows the basic successful full | |||
| authentication case with the EAP AKA. The EAP AKA uses two | authentication exchange in EAP AKA. At the minimum, EAP AKA uses two | |||
| roundtrips to authorize the user and generate session keys. As in | roundtrips to authorize the user and generate session keys. As in | |||
| other EAP schemes, first an identity request/response message pair | other EAP schemes, an identity request/response message pair is | |||
| is exchanged. (As specified in [5], the initial identity request is | usually exchanged first. On full authentication, the peer's identity | |||
| not required, and MAY be bypassed in cases where the authenticator | response includes either the user's International Mobile Subscriber | |||
| can presume the identity, such as when using leased lines, dedicated | ||||
| dial-ups, etc. Please see also Section 4.2 for specification how to | EAP AKA Authentication 27 October, 2003 | |||
| obtain the identity via EAP AKA messages.) | ||||
| Identity (IMSI), or a temporary identity (pseudonym) if identity | ||||
| privacy is in effect, as specified in Section 4.1. (As specified in | ||||
| [EAP], the initial identity request is not required, and MAY be | ||||
| bypassed in cases where the network can presume the identity, such | ||||
| as when using leased lines, dedicated dial-ups, etc. Please see also | ||||
| Section 4.1.2 for specification how to obtain the identity via EAP | ||||
| AKA messages.) | ||||
| Next, the EAP server starts the actual AKA protocol by sending an | Next, the EAP server starts the actual AKA protocol by sending an | |||
| EAP-Request/AKA-Challenge message. EAP AKA packets encapsulate | EAP-Request/AKA-Challenge message. EAP AKA packets encapsulate | |||
| parameters in attributes, encoded in a Type, Length, Value format. | parameters in attributes, encoded in a Type, Length, Value format. | |||
| The packet format and the use of attributes are specified in Section | The packet format and the use of attributes are specified in Section | |||
| 6. The EAP-Request/AKA-Challenge message contains a random number | 5. The EAP-Request/AKA-Challenge message contains a random number | |||
| (AT_RAND) and an authorization vector (AT_AUTN), and a message | (AT_RAND) and a network authentication token (AT_AUTN), and a | |||
| authentication code AT_MAC. The EAP-Request/AKA-Challenge message | message authentication code AT_MAC. The EAP-Request/AKA-Challenge | |||
| MAY optionally contain encrypted data, which is used for Identity | message MAY optionally contain encrypted data, which is used for | |||
| privacy support, as described in Section 4.3. The AT_MAC attribute | identity privacy and re-authentication support, as described in | |||
| contains a message authentication code covering the EAP packet. The | Section 4.1. The AT_MAC attribute contains a message authentication | |||
| encrypted data is not shown in the figures of this section. | code covering the EAP packet. The encrypted data is not shown in the | |||
| figures of this section. | ||||
| The client runs the AKA algorithm (perhaps inside an USIM) and | The peer runs the AKA algorithm (typically using a USIM) and | |||
| verifies the AUTN. If this is successful, the client is talking to a | verifies the AUTN. If this is successful, the peer is talking to a | |||
| legitimate EAP server and proceeds to send the EAP-Response/AKA- | legitimate EAP server and proceeds to send the EAP-Response/AKA- | |||
| Challenge. This message contains a result parameter that allows the | Challenge. This message contains a result parameter that allows the | |||
| EAP server in turn to authenticate the client, and the AT_MAC | EAP server in turn to authenticate the peer, and the AT_MAC | |||
| attribute to integrity protect the EAP message. | attribute to integrity protect the EAP message. | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes user's NAI) | | | (Includes user's NAI) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server runs UMTS algorithms, | | | | Server runs UMTS algorithms, | | |||
| | | generates RAND and AUTN. | | | | generates RAND and AUTN. | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Challenge | | | EAP-Request/AKA-Challenge | | |||
| | (AT_RAND, AT_AUTN, AT_MAC) | | | (AT_RAND, AT_AUTN, AT_MAC) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | Client runs UMTS algorithms on USIM,| | | | Peer runs UMTS algorithms on USIM, | | | |||
| | verifies AUTN and MAC, derives RES | | | | verifies AUTN and MAC, derives RES | | | |||
| | and session key | | | | and session key | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA-Challenge | | | EAP-Response/AKA-Challenge | | |||
| | (AT_RES, AT_MAC) | | | (AT_RES, AT_MAC) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +--------------------------------+ | | +--------------------------------+ | |||
| | | Server checks the given RES, | | | | Server checks the given RES, | | |||
| | | and MAC and finds them correct.| | | | and MAC and finds them correct.| | |||
| | +--------------------------------+ | | +--------------------------------+ | |||
| | | | | | | |||
| | EAP-Success | | | EAP-Success | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| The second message flow shows how the EAP server rejects the Client | The second message flow shows how the EAP server rejects the Peer | |||
| due to a failed authentication. The same flow is also used in the | due to a failed authentication. The same flow is also used in the | |||
| GSM compatible mode, except that the AT_AUTN attribute and AT_MAC | GSM compatible mode, except that the AT_AUTN attribute and AT_MAC | |||
| attribute are not used in the messages. | attribute are not used in the messages. | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes user's NAI) | | | (Includes user's NAI) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server runs UMTS algorithms, | | | | Server runs UMTS algorithms, | | |||
| | | generates RAND and AUTN. | | | | generates RAND and AUTN. | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Challenge | | | EAP-Request/AKA-Challenge | | |||
| | (AT_RAND, AT_AUTN, AT_MAC) | | | (AT_RAND, AT_AUTN, AT_MAC) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | Client runs UMTS algorithms on USIM,| | | | Peer runs UMTS algorithms on USIM, | | | |||
| | possibly verifies AUTN, and sends an| | | | possibly verifies AUTN, and sends an| | | |||
| | invalid response | | | | invalid response | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA-Challenge | | | EAP-Response/AKA-Challenge | | |||
| | (AT_RES, AT_MAC) | | | (AT_RES, AT_MAC) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +------------------------------------------+ | | +------------------------------------------+ | |||
| | | Server checks the given RES and the MAC, | | | | Server checks the given RES and the MAC, | | |||
| | | and finds one of them incorrct. | | | | and finds one of them incorrct. | | |||
| | +------------------------------------------+ | | +------------------------------------------+ | |||
| | | | | | | |||
| | EAP-Failure | | | EAP-Failure | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| The next message flow shows the client rejecting the AUTN of the EAP | The next message flow shows the peer rejecting the AUTN of the EAP | |||
| server. | server. | |||
| The client sends an explicit error message (EAP-Response/AKA- | The peer sends an explicit error message (EAP-Response/AKA- | |||
| Authentication-Reject) to the Authenticator, as usual in AKA when | Authentication-Reject) to the EAP server, as usual in AKA when AUTN | |||
| AUTN is incorrect. This allows the EAP server to produce the same | is incorrect. This allows the EAP server to produce the same error | |||
| error statistics as AKA in general produces in UMTS. Please note | statistics as AKA in general produces in UMTS. | |||
| that this behavior is different from other EAP/AKA error cases, such | ||||
| as when encountering an incorrect AT_MAC attribute, the client | ||||
| silently discards the EAP/AKA message. | ||||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes user's NAI) | | | (Includes user's NAI) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server runs UMTS algorithms, | | | | Server runs UMTS algorithms, | | |||
| | | generates RAND and a bad AUTN| | | | generates RAND and a bad AUTN| | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Challenge | | | EAP-Request/AKA-Challenge | | |||
| | (AT_RAND, AT_AUTN, AT_MAC) | | | (AT_RAND, AT_AUTN, AT_MAC) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | Client runs UMTS algorithms on USIM | | | | Peer runs UMTS algorithms on USIM | | | |||
| | and discovers AUTN that can not be | | | | and discovers AUTN that can not be | | | |||
| | verified | | | | verified | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA-Authentication-Reject | | | EAP-Response/AKA-Authentication-Reject | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | | | | | | |||
| | EAP-Failure | | | EAP-Failure | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| The AKA uses shared secrets between the Client and the Client's home | The AKA uses shared secrets between the Peer and the Peer's home | |||
| operator together with a sequence number to actually perform an | operator together with a sequence number to actually perform an | |||
| authentication. In certain circumstances it is possible for the | authentication. In certain circumstances it is possible for the | |||
| sequence numbers to get out of sequence. Here's what happens then: | sequence numbers to get out of sequence. Here's what happens then: | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes user's NAI) | | | (Includes user's NAI) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server runs UMTS algorithms, | | | | Server runs UMTS algorithms, | | |||
| | | generates RAND and AUTN. | | | | generates RAND and AUTN. | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Challenge | | | EAP-Request/AKA-Challenge | | |||
| | (AT_RAND, AT_AUTN, AT_MAC) | | | (AT_RAND, AT_AUTN, AT_MAC) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | Client runs UMTS algorithms on USIM | | | | Peer runs UMTS algorithms on USIM | | | |||
| | and discovers AUTN that contains an | | | | and discovers AUTN that contains an | | | |||
| | inappropriate sequence number | | | | inappropriate sequence number | | | |||
| +-------------------------------------+ | | +-------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA-Synchronization-Failure | | | EAP-Response/AKA-Synchronization-Failure | | |||
| | (AT_AUTS) | | | (AT_AUTS) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +---------------------------+ | | +---------------------------+ | |||
| | | Perform resynchronization | | | | Perform resynchronization | | |||
| skipping to change at page 10, line 48 ¶ | skipping to change at page 11, line 48 ¶ | |||
| | | the sent RAND | | | | the sent RAND | | |||
| | +---------------------------+ | | +---------------------------+ | |||
| | | | | | | |||
| After the resynchronization process has taken place in the server | After the resynchronization process has taken place in the server | |||
| and AAA side, the process continues by the server side sending a new | and AAA side, the process continues by the server side sending a new | |||
| EAP-Request/AKA-Challenge message. | EAP-Request/AKA-Challenge message. | |||
| In addition to the full authentication scenarios described above, | In addition to the full authentication scenarios described above, | |||
| EAP AKA includes a re-authentication procedure, which is specified | EAP AKA includes a re-authentication procedure, which is specified | |||
| in Section 5. | in Section 4.2. Re-authentication is based on keys derived on full | |||
| authentication. If the peer has maintained state information for re- | ||||
| authentication and wants to use re-authentication, then the peer | ||||
| indicates this by using a specific re-authentication identity | ||||
| instead of the permanent identity or a pseudonym identity. The re- | ||||
| authentication procedure is described in Section 4.2. | ||||
| 4. Identity Management | 4. Operation | |||
| This section specifies user identity management and identity privacy | 4.1. Identity Management | |||
| support. | ||||
| 4.1. User Identity in EAP-Response/Identity | 4.1.1. Format, Generation and Usage of Peer Identities | |||
| In the beginning of an EAP authentication, the Authenticator issues | EAP AKA Authentication 27 October, 2003 | |||
| the EAP-Request/Identity packet to the client. The client responds | ||||
| with EAP-Response/Identity, which contains the user's identity. The | ||||
| formats of these packets are specified in [5]. | ||||
| EAP AKA Authentication June 2003 | General | |||
| In the beginning of EAP authentication, the Authenticator or the EAP | ||||
| server usually issues the EAP-Request/Identity packet to the peer. | ||||
| The peer responds with EAP-Response/Identity, which contains the | ||||
| user's identity. The formats of these packets are specified in | ||||
| [EAP]. | ||||
| UMTS subscribers are identified with the International Mobile | UMTS subscribers are identified with the International Mobile | |||
| Subscriber Identity (IMSI) [7]. The IMSI is composed of a three | Subscriber Identity (IMSI) [TS 23.003]. The IMSI is composed of a | |||
| digit Mobile Country Code (MCC), a two or three digit Mobile Network | three digit Mobile Country Code (MCC), a two or three digit Mobile | |||
| Code (MNC) and a not more than 10 digit Mobile Subscriber | Network Code (MNC) and a not more than 10 digit Mobile Subscriber | |||
| Identification Number (MSIN). In other words, the IMSI is a string | Identification Number (MSIN). In other words, the IMSI is a string | |||
| of not more than 15 digits. MCC and MNC uniquely identify the | of not more than 15 digits. MCC and MNC uniquely identify the GSM | |||
| operator. | operator and help identify the AuC from which the authentication | |||
| vectors need to be retrieved for this subscriber. | ||||
| Internet AAA protocols identify users with the Network Access | Internet AAA protocols identify users with the Network Access | |||
| Identifier (NAI) [4]. When used in a roaming environment, the NAI is | Identifier (NAI) [RFC 2486]. When used in a roaming environment, the | |||
| composed of a username and a realm, separated with "@" | NAI is composed of a username and a realm, separated with "@" | |||
| (username@realm). The username portion identifies the subscriber | (username@realm). The username portion identifies the subscriber | |||
| within the realm. The AAA nodes use the realm portion of the NAI to | within the realm. | |||
| route AAA requests to the correct AAA server. The realm name used in | ||||
| this protocol MAY be chosen by the operator and it MAY be a | ||||
| configurable parameter in the EAP/AKA client implementation. In this | ||||
| case, the client is typically configured with the NAI realm of the | ||||
| home operator. Operators MAY reserve a specific realm name for | ||||
| EAP/AKA users. This convention makes it easy to recognize that the | ||||
| NAI identifies a subscriber that uses EAP/AKA. Such a reserved NAI | ||||
| realm may be a useful hint to the first authentication method to use | ||||
| during method negotiation. | ||||
| There are three types of NAI username portions in EAP/AKA: non- | This section specifies the peer identity format used in EAP/AKA. In | |||
| pseudonym permanent usernames, pseudonym usernames and re- | this document, the term identity or peer identity refers to the | |||
| authentication usernames. The first two are only used on full | whole identity string that is used to identify the peer. The peer | |||
| authentication and the last one only on re-authentication. When the | identity may include a realm portion. "Username" refers to the | |||
| optional identity privacy support is not used, the non-pseudonym | portion of the peer identity that identifies the user, i.e. the | |||
| permanent username is used. | username does not include the realm portion. | |||
| The non-pseudonym permanent username MAY be derived from the IMSI. | Identity Privacy Support | |||
| In this case, the permanent username MUST be of the format "0imsi". | ||||
| In other words, the first character of the username is the digit | ||||
| zero (ASCII value 0x30), followed by the IMSI. The IMSI is an ASCII | ||||
| string that consists of not more than 15 decimal digits (ASCII | ||||
| values between 0x30 and 0x39) as specified in [7] | ||||
| The EAP server MAY use the leading "0" as a hint to try EAP/AKA as | EAP/AKA includes optional identity privacy (anonymity) support that | |||
| the first authentication method during method negotiation. The | can be used to hide the cleartext permanent identity and thereby to | |||
| EAP/AKA server MAY propose EAP/AKA even if the leading character was | make the subscriber's EAP exchanges untraceable to eavesdroppers. | |||
| not "0". | Because the permanent identity never changes, revealing it would | |||
| help observers to track the user. The permanent identity is usually | ||||
| based on the IMSI, which may further help the tracking, because the | ||||
| same identifier may used in other contexts as well. Identity privacy | ||||
| is based on temporary identities, or pseudonyms, which are | ||||
| equivalent to but separate from the Temporary Mobile Subscriber | ||||
| Identities (TMSI) that are used on cellular networks. Please see | ||||
| Section 9.1 for security considerations regarding identity privacy. | ||||
| Alternatively, an implementation may choose a permanent username | Username Types in EAP/AKA Identities | |||
| that is not based on the IMSI. In this case the selection of the | ||||
| username, its format, and its processing is a local matter. In this | ||||
| case, the client implementation MUST NOT prepend any leading | ||||
| characters to the username. | ||||
| When the optional identity privacy support is used on full | There are three types of usernames in EAP/AKA peer identities: | |||
| authentication, the client MAY use the pseudonym received upon the | ||||
| previous full authentication sequence as the username portion of the | ||||
| NAI, as specified in Section 4.3. The client MUST NOT modify the | ||||
| EAP AKA Authentication June 2003 | (1) Permanent usernames. For example, | |||
| 0123456789098765@myoperator.com might be a valid permanent identity. | ||||
| In this example, 0123456789098765 is the permanent username. | ||||
| pseudonym received in AT_NEXT_PSEUDONYM. For example, the client | EAP AKA Authentication 27 October, 2003 | |||
| MUST NOT prepend any leading characters in the pseudonym. | ||||
| On re-authentication, the client uses the re-authentication identity | (2) Pseudonym usernames. For example, 2s7ah6n9q@myoperator.com might | |||
| received upon the previous authentication sequence as the NAI. A new | be a valid pseudonym identity. In this example, 2s7ah6n9q is the | |||
| re-authentication identity may be delivered as part of both full | pseudonym username. | |||
| authentication and re-authentication. The client MUST NOT modify the | ||||
| re-authentication identity received in AT_NEXT_REAUTH_ID but the | ||||
| client must use the re-authentication identity as it is. For | ||||
| example, the client MUST NOT prepend any leading characters in the | ||||
| re-authentication identity. | ||||
| If no configured realm name is available, the client MAY derive the | (3) Re-authentication usernames. For example, | |||
| 43953754a@myoperator.com might be a valid re-authentication | ||||
| identity. In this case, 43953754 is the re-authentication username. | ||||
| The first two types of identities are only used on full | ||||
| authentication and the last one only on re-authentication. When the | ||||
| optional identity privacy support is not used, the non-pseudonym | ||||
| permanent identity is used on full authentication. The re- | ||||
| authentication exchange is specified in Section 4.2. | ||||
| sername Decoration | ||||
| In some environments, the peer may need to decorate the identity by | ||||
| prepending or appending the username with a string, in order to | ||||
| indicate supplementary AAA routing information in addition to the | ||||
| NAI realm. (The usage of a NAI realm portion is not considered to be | ||||
| decoration.) Username decoration is out of the scope of this | ||||
| document. However, it should be noted that username decoration might | ||||
| prevent the server from recognizing a valid username. Hence, | ||||
| although the peer MAY use username decoration in the identities the | ||||
| peer includes in EAP-Response/Identity, and the EAP server MAY | ||||
| accept a decorated peer username in this message, the peer or the | ||||
| EAP server MUST NOT decorate any other peer identities that are used | ||||
| in various EAP/AKA attributes. Only the identity used in EAP- | ||||
| Response/Identity may be decorated. | ||||
| NAI Realm Portion | ||||
| The peer MAY include a realm portion in the peer identity, as per | ||||
| the NAI format. The use of a realm portion is not mandatory. | ||||
| If a realm is used, the realm MAY be chosen by the operator and it | ||||
| MAY a configurable parameter in the EAP/SIM peer implementation. In | ||||
| this case, the peer is typically configured with the NAI realm of | ||||
| the home operator. Operators MAY reserve a specific realm name for | ||||
| EAP/AKA users. This convention makes it easy to recognize that the | ||||
| NAI identifies a UMTS subscriber. Such reserved NAI realm may be | ||||
| useful as a hint as to the first authentication method to use during | ||||
| method negotiation. When the peer is using a pseudonym username | ||||
| instead of the permanent username, the peer selects the realm name | ||||
| portion similarly as it select the realm portion when using the | ||||
| permanent username. | ||||
| If no configured realm name is available, the peer MAY derive the | ||||
| realm name from the MCC and MNC portions of the IMSI. A recommended | realm name from the MCC and MNC portions of the IMSI. A recommended | |||
| way to derive the realm from the IMSI will be specified in [8]. | way to derive the realm from the IMSI using the realm | |||
| 3gppnetwork.org will be specified in [Draft 3GPP TS 23.234]. | ||||
| Alternatively, the realm name may be obtained by concatenating | Alternatively, the realm name may be obtained by concatenating | |||
| "mnc", the MNC digits of IMSI, ".mcc", the MCC digits of IMSI and | "mnc", the MNC digits of IMSI, ".mcc", the MCC digits of IMSI and | |||
| ".owlan.org". For example, if the IMSI is 123456789098765, and the | ".owlan.org". For example, if the IMSI is 123456789098765, and the | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| MNC is three digits long, then the derived realm name is | MNC is three digits long, then the derived realm name is | |||
| "mnc456.mcc123.owlan.org". | "mnc456.mcc123.owlan.org". | |||
| If the client is not able to determine whether the MNC is two or | The IMSI is a string of digits without any explicit structure, so | |||
| three digits long, the client MAY use a 3-digit MNC. If the correct | the peer may not be able to determine the length of the MNC portion. | |||
| length of the MNC is two, then the MNC used in the realm name will | If the peer is not able to determine whether the MNC is two or three | |||
| include the first digit of MSIN. Hence, when configuring AAA | digits long, the peer MAY use a 3-digit MNC. If the correct length | |||
| networks for operators that have 2-digit MNCs, the network SHOULD | of the MNC is two, then the MNC used in the realm name includes the | |||
| also be prepared for realm names with incorrect 3-digit MNCs. | first digit of MSIN. Hence, when configuring AAA networks for | |||
| operators that have 2-digit MNC's, the network SHOULD also be | ||||
| prepared for realm names with incorrect 3-digit MNC's. | ||||
| 4.2. Obtaining Subscriber Identity via EAP AKA Messages | Format of the Permanent Username | |||
| It may be useful to obtain the identity of the subscriber through | The non-pseudonym permanent username SHOULD be derived from the | |||
| means other than EAP Request/Identity. This can eliminate the need | IMSI. In this case, the permanent username MUST be of the format "0" | |||
| for an identity request when using EAP method negotiation. If this | | IMSI, where the character "|" denotes concatenation. In other | |||
| was not possible then it might not be possible to negotiate EAP/AKA | words, the first character of the username is the digit zero (ASCII | |||
| as the second method since not all EAP implementations support | value 0x30), followed by the IMSI. The IMSI is an ASCII string that | |||
| multiple EAP Identity requests. | consists of not more than 15 decimal digits (ASCII values between | |||
| 0x30 and 0x39) as specified in [TS 23.003]. | ||||
| EAP-Request/AKA-Identity and EAP-Response/AKA-Identity packets may | The EAP server MAY use the leading "0" as a hint to try EAP/AKA as | |||
| be used for obtaining the subscriber identity. The EAP-Request/AKA- | the first authentication method during method negotiation, rather | |||
| Challenge, EAP-Response/AKA-Challenge, or the packets used on re- | than for example EAP/SIM. The EAP/AKA server MAY propose EAP/AKA | |||
| authentication may optionally include the AT_CHECKCODE attribute, | even if the leading character was not "0". | |||
| which enables the protocol peers to ensure the integrity of the AKA- | ||||
| Identity packets. AT_CHECKCODE is specified in Section 7.2. | Alternatively, an implementation MAY choose a permanent username | |||
| that is not based on the IMSI. In this case the selection of the | ||||
| username, its format, and its processing is out of the scope of this | ||||
| document. In this case, the peer implementation MUST NOT prepend any | ||||
| leading characters to the username. | ||||
| Generating Pseudonyms and Re-authentication Identities by the Server | ||||
| Pseudonym usernames and re-authentication identities are generated | ||||
| by the EAP server. The EAP server produces pseudonym usernames and | ||||
| re-authentication identities in an implementation-dependent manner. | ||||
| Only the EAP server needs to be able to map the pseudonym username | ||||
| to the permanent identity, or to recognize a re-authentication | ||||
| identity. Regardless of construction method, the pseudonym username | ||||
| MUST conform to the grammar specified for the username portion of an | ||||
| NAI. The re-authentication identity also MUST conform to the NAI | ||||
| grammar. The EAP servers that the subscribers of an operator can use | ||||
| MUST ensure that the pseudonym usernames and the username portions | ||||
| used in re-authentication identities they generate are unique. | ||||
| In any case, it is necessary that permanent usernames, pseudonym | ||||
| usernames and re-authentication usernames are separate and | ||||
| recognizable from each other. It is also desirable that EAP SIM and | ||||
| EAP AKA user names be recognizable from each other as an aid for the | ||||
| server to which method to offer. | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| In general, it is the task of the EAP server and the policies of its | ||||
| administrator to ensure sufficient separation in the usernames. | ||||
| Pseudonym usernames and re-authentication usernames are both | ||||
| produced and used by the EAP server. The EAP server MUST compose | ||||
| pseudonym usernames and re-authentication usernames so that it can | ||||
| recognize if a NAI username is an EAP AKA pseudonym username or an | ||||
| EAP AKA re-authentication username. For instance, when the usernames | ||||
| have been derived from the IMSI, the server could use different | ||||
| leading characters in the pseudonym usernames and re-authentication | ||||
| usernames (e.g. the pseudonym could begin with a leading "2" | ||||
| character). When mapping a re-authentication identity to a permanent | ||||
| identity, the server SHOULD only examine the username portion of the | ||||
| re-authentication identity and ignore the realm portion of the | ||||
| identity. | ||||
| Because the peer may fail to save a pseudonym username sent to in an | ||||
| EAP-Request/AKA-Challenge, for example due to malfunction, the EAP | ||||
| server SHOULD maintain at least one old pseudonym username in | ||||
| addition to the most recent pseudonym username. | ||||
| Transmitting Pseudonyms and Re-authentication Identities to the Peer | ||||
| The server transmits pseudonym usernames and re-authentication | ||||
| identities to the peer in cipher, using the AT_ENCR_DATA attribute. | ||||
| The EAP-Request/AKA-Challenge message MAY include an encrypted | ||||
| pseudonym username and/or an encrypted re-authentication identity in | ||||
| the value field of the AT_ENCR_DATA attribute. Because identity | ||||
| privacy support and re-authentication are optional to implement, the | ||||
| peer MAY ignore the AT_ENCR_DATA attribute and always use the | ||||
| permanent identity. On re-authentication (discussed in Section 4.2), | ||||
| the server MAY include a new encrypted re-authentication identity in | ||||
| the EAP-Request/AKA-Reauthentication message. | ||||
| On receipt of the EAP-Request/AKA-Challenge, the peer MAY decrypt | ||||
| the encrypted data in AT_ENCR_DATA and if a pseudonym username is | ||||
| included, the peer may use the obtained pseudonym username on the | ||||
| next full authentication. If a re-authentication identity is | ||||
| included, then the peer MAY save it and other re-authentication | ||||
| state information, as discussed in Section 4.2, for the next re- | ||||
| authentication. | ||||
| If the peer does not receive a new pseudonym username in the EAP- | ||||
| Request/AKA-Challenge message, the peer MAY use an old pseudonym | ||||
| username instead of the permanent username on next full | ||||
| authentication. The username portions of re-authentication | ||||
| identities are one-time usernames, which the peer MUST NOT re-use. | ||||
| Usage of the Pseudonym by the Peer | ||||
| When the optional identity privacy support is used on full | ||||
| authentication, the peer MAY use the pseudonym username received as | ||||
| part of the previous full authentication sequence as the username | ||||
| portion of the NAI. The peer MUST NOT modify the pseudonym username | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| received in AT_NEXT_PSEUDONYM. However, as discussed above, the peer | ||||
| MAY need to decorate the username in some environments by appending | ||||
| or prepending the username with a string that indicates | ||||
| supplementary AAA routing information. | ||||
| When using a pseudonym username in an environment where a realm | ||||
| portion is used, the peer concatenates the received pseudonym | ||||
| username with the "@" character and a NAI realm portion. The | ||||
| selection of the NAI realm is discussed above. | ||||
| Usage of the Re-authentication Identity by the Peer | ||||
| On re-authentication, the peer uses the re-authentication identity, | ||||
| received as part of the previous authentication sequence. A new re- | ||||
| authentication identity may be delivered as part of both full | ||||
| authentication and re-authentication. The peer MUST NOT modify the | ||||
| username part of the re-authentication identity received in | ||||
| AT_NEXT_REAUTH_ID, except in cases when username decoration is | ||||
| required. Even in these cases, the "root" re-authentication username | ||||
| must not be modified, but it may be appended or prepended with | ||||
| another string. | ||||
| 4.1.2. Communicating the Peer Identity to the Server | ||||
| General | ||||
| The peer identity MAY be communicated to the server with the EAP- | ||||
| Response/Identity message. This message MAY contain the permanent | ||||
| identity, a pseudonym identity, or a re-authentication identity. If | ||||
| the peer uses the permanent identity or a pseudonym identity, which | ||||
| the server is able to map to the permanent identity, then the | ||||
| authentication proceeds as discussed in the overview of Section 3. | ||||
| If the peer uses a re-authentication identity, and the server | ||||
| recognized the identity and agrees on using re-authentication, then | ||||
| a re-authentication exchange is performed, as described in Section | ||||
| 4.2. | ||||
| The peer identity can also be transmitted from the peer to the | ||||
| server using EAP/AKA messages instead of EAP-Response/Identity. In | ||||
| this case, the server includes an identity requesting attribute | ||||
| (AT_ANY_ID_REQ, AT_FULLAUTH_ID_REQ or AT_PERMANENT_ID_REQ) in the | ||||
| EAP-Request/AKA-Identity message, and the peer includes the | ||||
| AT_IDENTITY attribute, which contains the peer's identity, in the | ||||
| EAP-Response/AKA-Identity message. The AT_ANY_ID_REQ attribute is a | ||||
| general identity requesting attribute, which the server uses if it | ||||
| does not specify which kind of an identity the peer should return in | ||||
| AT_IDENTITY. The server uses the AT_FULLAUTH_ID_REQ attribute to | ||||
| request either the permanent identity or a pseudonym identity. The | ||||
| server uses the AT_PERMANENT_ID_REQ attribute to request the peer to | ||||
| send its permanent identity. The EAP-Request/AKA-Challenge, EAP- | ||||
| Response/AKA-Challenge, or the packets used on re-authentication may | ||||
| optionally include the AT_CHECKCODE attribute, which enables the | ||||
| protocol peers to ensure the integrity of the AKA-Identity packets. | ||||
| AT_CHECKCODE is specified in Section 0. | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| The identity format in the AT_IDENTITY attribute is the same as in | ||||
| the EAP-Response/Identity packet (except that identity decoration is | ||||
| not allowed). The AT_IDENTITY attribute contains a permanent | ||||
| identity, a pseudonym identity or a re-authentication identity. | ||||
| Obtaining the subscriber identity via EAP/AKA messages is useful if | ||||
| the server does not have any EAP/AKA peer identity at the beginning | ||||
| of the EAP/AKA exchange or does not recognize the identity the peer | ||||
| used in EAP-Response/Identity. This may happen if, for example, the | ||||
| EAP-Response/Identity has been issued by some EAP method other than | ||||
| EAP/AKA or if intermediate entities or software layers in the peer | ||||
| have modified the identity string in the EAP-Response/Identity | ||||
| packet. Also, some EAP layer implementations may cache the identity | ||||
| string from the first EAP authentication and do not obtain a new | ||||
| identity string from the EAP method implementation on subsequent | ||||
| authentication exchanges. | ||||
| As the identity string is used in key derivation, any of these cases | ||||
| will result in failed authentication unless the EAP server uses | ||||
| EAP/AKA attributes to obtain an unmodified copy of the identity | ||||
| string. Therefore, unless the EAP server can be certain that no | ||||
| intermediate element or software layer has modified the EAP- | ||||
| Response/Identity packet, the EAP server SHOULD always use the | ||||
| EAP/AKA attributes to obtain the identity, even if the identity | ||||
| received in EAP-Response/Identity was valid. | ||||
| Please note that the EAP/AKA peer and the EAP/AKA server only | ||||
| process the AT_IDENTITY attribute and entities that only pass | ||||
| through EAP packets do not process this attribute. Hence, if the EAP | ||||
| server is not co-located in the authenticator, then the | ||||
| authenticator and other intermediate AAA elements (such as possible | ||||
| AAA proxy servers) will continue to refer to the peer with the | ||||
| original identity from the EAP-Response/Identity packet regardless | ||||
| of whether the AT_IDENTITY attribute is used in EAP/AKA to transmit | ||||
| another identity. | ||||
| Choice of Identity for the EAP-Response/Identity | ||||
| If EAP/AKA peer is started upon receiving an EAP-Request/Identity | ||||
| message, then the peer performs the following steps. | ||||
| If the peer has maintained re-authentication state information and | ||||
| if the peer wants to use re-authentication, then the peer transmits | ||||
| the re-authentication identity in EAP-Response/Identity. | ||||
| Else, if the peer has a pseudonym username available, then the peer | ||||
| transmits the pseudonym identity in EAP-Response/Identity. | ||||
| In other cases, the peer transmits the permanent identity in EAP- | ||||
| Response/Identity. | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| Server Operation in the Beginning of EAP/AKA Exchange | ||||
| If the EAP server has not received any identity (permanent identity, | If the EAP server has not received any identity (permanent identity, | |||
| pseudonym or re-authentication identity) from the client when | pseudonym identity or re-authentication identity) from the peer when | |||
| sending the first EAP/AKA request, then the EAP server SHOULD issue | sending the first EAP/AKA request, or if the EAP server has received | |||
| the EAP-Request/AKA-Identity packet and includes the AT_ANY_ID_REQ | an EAP-Response/Identity packet but the contents do not appear to be | |||
| attribute (specified in Section 8.5). This attribute does not | a valid permanent identity, pseudonym identity or a re- | |||
| contain any data. | authentication identity, then the server MUST request an identity | |||
| from the peer using one of the methods below. | ||||
| If the EAP server has received an EAP-Response/Identity packet but | The server sends the EAP-Request/AKA-Identity message with the | |||
| the contents do not appear to be a valid permanent identity, | AT_PERMANENT_ID_REQ message to indicate that the server wants the | |||
| pseudonym or a re-authentication identity, the EAP server SHOULD | peer to include the permanent identity in the AT_IDENTITY attribute | |||
| of the EAP-Response/AKA-Identity message. This is done in the | ||||
| following cases: | ||||
| EAP AKA Authentication June 2003 | - The server does not support re-authentication or identity privacy. | |||
| issue an EAP-Request/AKA-Identity packet with the AT_ANY_ID_REQ | - The server received an identity that it recognizes as a pseudonym | |||
| attribute. | identity but the server is not able to map the pseudonym identity to | |||
| a permanent identity. | ||||
| In some environments the intermediate entities or software layers in | The server issues the EAP-Request/AKA-Identity packet with the | |||
| the client may modify the identity string in the EAP- | AT_FULLAUTH_ID_REQ attribute to indicate that the server wants the | |||
| Response/Identity packet. For example, some EAP layer | peer to include a full authentication identity (pseudonym identity | |||
| implementations may cache the identity string from the first | or permanent identity) in the AT_IDENTITY attribute of the EAP- | |||
| authentication and do not obtain a new identity string from the EAP | Response/AKA-Identity message. This is done in the following cases: | |||
| method implementation on subsequent authentication exchanges. | ||||
| Because the identity string is used in key derivation, such | ||||
| modifications will result in failed authentication unless the EAP | ||||
| server uses the AT_ANY_ID_REQ attribute to obtain an unmodified copy | ||||
| of the identity string. Therefore, in cases when there is a | ||||
| possibility that an intermediate element or software layer may | ||||
| modify the EAP-Response/Identity packet, the EAP server SHOULD | ||||
| always use the EAP-Request/AKA-Identity packet with the | ||||
| AT_ANY_ID_REQ attribute, even if the identity received in EAP- | ||||
| Response/Identity was valid. | ||||
| The AT_ANY_ID_REQ attribute requests the client to include the | - The server does not support re-authentication and the server | |||
| AT_IDENTITY attribute (specified in Section 8.6) in the EAP- | supports identity privacy | |||
| Response/AKA-Identity packet. The identity format in the AT_IDENTITY | ||||
| attribute is the same as in the Type-Data field of the EAP- | ||||
| Response/Identity packet. The AT_IDENTITY attribute contains a | ||||
| permanent identity, a pseudonym identity or a re-authentication | ||||
| identity. If the server does not support re-authentication, it uses | ||||
| the AT_FULLAUTH_ID_REQ attribute instead of the AT_ANY_ID_REQ | ||||
| attribute to directly request for a full authentication identity | ||||
| (either the permanent identity or a pseudonym identity). If the | ||||
| server uses the AT_FULLAUTH_ID_REQ attribute, the client MUST NOT | ||||
| use a re-authentication identity in the AT_IDENTITY attribute. | ||||
| The use of pseudonyms for anonymity is specified in Section 4.3. The | - The server received an identity that it recognizes as a re- | |||
| use of re-authentication identities is specified in Section 5. | authentication identity but the server is not able to map the re- | |||
| authentication identity to a permanent identity | ||||
| The full authentication case is illustrated in the figure below. In | The server issues the EAP-Request/AKA-Identity packet with the | |||
| this case, AT_IDENTITY contains either the permanent identity or a | AT_ANY_ID_REQ attribute to indicate that the server wants the peer | |||
| pseudonym identity. The same sequence is also used in case the | to include an identity in the AT_IDENTITY attribute of the EAP- | |||
| server uses the AT_FULLAUTH_ID_REQ in EAP-Request/AKA-Identity | Response/SIM/Start message, and the server does not indicate any | |||
| preferred type for the identity. This is done in other cases, such | ||||
| as when the server does not have any identity, or the server does | ||||
| not recognize the format of a received identity. | ||||
| EAP AKA Authentication June 2003 | Processing of EAP-Request/AKA-Identity by the Peer | |||
| Client Authenticator | Upon receipt of an EAP-Request/AKA-Identity message, the peer MUST | |||
| perform the following steps. | ||||
| If the EAP-Request/AKA-Identity includes AT_PERMANENT_ID_REQ the | ||||
| peer MUST either respond with EAP-Response/AKA-Identity and include | ||||
| the permanent identity in AT_IDENTITY or respond with EAP- | ||||
| Response/AKA-Client-Error packet with code "unable to process | ||||
| packet". | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| If the EAP-Request/AKA-Identity includes AT_FULL_AUTH_ID_REQ, and if | ||||
| the peer has a pseudonym available, then the peer SHOULD respond | ||||
| with EAP-Response/AKA-Identity and includes the pseudonym identity | ||||
| in AT_IDENTITY. If the peer does not have a pseudonym when it | ||||
| receives this message, then the peer MUST either respond with EAP- | ||||
| Response/AKA-Identity and include the permanent identity in | ||||
| AT_IDENTITY or respond with EAP-Response/AKA-Client-Error packet | ||||
| with code "unable to process packet." The Peer MUST NOT use a re- | ||||
| authentication identity in the AT_IDENTITY attribute. | ||||
| If the EAP-Request/AKA-Identity includes AT_ANY_ID_REQ, and if the | ||||
| peer has maintained re-authentication state information and the peer | ||||
| wants to use re-authentication, then the peer responds with EAP- | ||||
| Response/AKA-Identity and includes the re-authentication identity in | ||||
| AT_IDENTITY. Else, if the peer has a pseudonym identity available, | ||||
| then the peer responds with EAP-Response/AKA-Identity and includes | ||||
| the pseudonym identity in AT_IDENTITY. Else, the peer responds with | ||||
| EAP-Response/AKA-Identity and includes the permanent identity in | ||||
| AT_IDENTITY. | ||||
| An EAP/AKA exchange may include several EAP/AKA-Identity rounds. The | ||||
| server may issue a second EAP-Request/AKA-Identity, if it was not | ||||
| able to recognize the identity the peer used in the previous | ||||
| AT_IDENTITY attribute. At most three EAP/AKA-Identity rounds can be | ||||
| used. AT_ANY_ID_REQ can only be used in the first EAP-Request/AKA- | ||||
| Identity, in other words AT_ANY_ID_REQ MUST NOT be used in the | ||||
| second or third EAP-Request/AKA-Identity. AT_FULLAUTH_ID_REQ MUST | ||||
| NOT be used if the previous EAP-Request/AKA-Identity included | ||||
| AT_PERMANENT_ID_REQ. The peer operation in cases when it receives an | ||||
| unexpected attribute is specified in Section 4.4.1. | ||||
| Attacks against Identity Privacy | ||||
| The section above specifies two possible ways the peer can operate | ||||
| upon receipt of AT_PERMANENT_ID_REQ. This is because a received | ||||
| AT_PERMANENT_ID_REQ does not necessarily originate from the valid | ||||
| network, but an active attacker may transmit an EAP-Request/AKA- | ||||
| Identity packet with an AT_PERMANENT_ID_REQ attribute to the peer, | ||||
| in an effort to find out the true identity of the user. If the peer | ||||
| does not want to reveal its permanent identity, then the peer sends | ||||
| the EAP-Response/AKA-Client-Error packet with the error code "unable | ||||
| to process packet", and the authentication exchange terminates. | ||||
| Basically, there are two different policies that the peer can employ | ||||
| with regard to AT_PERMANENT_ID_REQ. A "conservative" peer assumes | ||||
| that the network is able to maintain pseudonyms robustly. Therefore, | ||||
| if a conservative peer has a pseudonym username, the peer responds | ||||
| with EAP-Response/AKA-Client-Error to the EAP packet with | ||||
| AT_PERMANENT_ID_REQ, because the peer believes that the valid | ||||
| network is able to map the pseudonym identity to the peer's | ||||
| permanent identity. (Alternatively, the conservative peer may accept | ||||
| AT_PERMANENT_ID_REQ in certain circumstances, for example if the | ||||
| pseudonym was received a long time ago.) The benefit of this policy | ||||
| is that it protects the peer against active attacks on anonymity. On | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| the other hand, a "liberal" peer always accepts the | ||||
| AT_PERMANENT_ID_REQ and responds with the permanent identity. The | ||||
| benefit of this policy is that it works even if the valid network | ||||
| sometimes loses pseudonyms and is not able to map them to the | ||||
| permanent identity. | ||||
| Processing of AT_IDENTITY by the Server | ||||
| When the server receives an EAP-Response/AKA-Identity message with | ||||
| the AT_IDENTITY (in response to the server's identity requesting | ||||
| attribute), the server MUST operate as follows. | ||||
| If the server used AT_PERMANENT_ID_REQ, and if the AT_IDENTITY does | ||||
| not contain a valid permanent identity, then the server sends EAP | ||||
| Failure and the EAP exchange terminates. If the server recognizes | ||||
| the permanent identity and is able to continue, then the server | ||||
| proceeds with full authentication by sending EAP-Request/AKA- | ||||
| Challenge. | ||||
| If the server used AT_FULLAUTH_ID_REQ, and if AT_IDENTITY contains a | ||||
| valid permanent identity or a pseudonym identity that the server can | ||||
| map to a valid permanent identity, then the server proceeds with | ||||
| full authentication by sending EAP-Request/AKA-Challenge. If | ||||
| AT_IDENTITY contains a pseudonym identity that the server is not | ||||
| able to map to a valid permanent identity, or an identity that the | ||||
| server is not able to recognize or classify, then the server sends | ||||
| EAP-Request/ AKA-Identity with AT_PERMANENT_ID_REQ. | ||||
| If the server used AT_ANY_ID_REQ, and if the AT_IDENTITY contains a | ||||
| valid permanent identity or a pseudonym identity that the server can | ||||
| map to a valid permanent identity, then the server proceeds with | ||||
| full authentication by sending EAP-Request/ AKA-Challenge. | ||||
| If the server used AT_ANY_ID_REQ, and if AT_IDENTITY contains a | ||||
| valid re-authentication identity and the server agrees on using re- | ||||
| authentication, then the server proceeds with re-authentication by | ||||
| sending EAP-Request/ AKA-Reauthentication (Section 4.2). | ||||
| If the server used AT_ANY_ID_REQ, and if the peer sent an EAP- | ||||
| Response/AKA-Identity with AT_IDENTITY that contains an identity | ||||
| that the server recognizes as a re-authentication identity, but the | ||||
| server is not able to map the identity to a permanent identity, then | ||||
| the server sends EAP-Request/AKA-Identity with AT_FULLAUTH_ID_REQ. | ||||
| If the server used AT_ANY_ID_REQ, and if AT_IDENTITY contains a | ||||
| valid re-authentication identity, which the server is able to map to | ||||
| a permanent identity, and if the server does not want to use re- | ||||
| authentication, then the server proceeds with full authentication by | ||||
| sending EAP-Request/AKA-Challenge. | ||||
| If the server used AT_ANY_ID_REQ, and AT_IDENTITY contains an | ||||
| identity that the server recognizes as a pseudonym identity but the | ||||
| server is not able to map the pseudonym identity to a permanent | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| identity, then the server sends EAP-Request/AKA-Identity with | ||||
| AT_PERMANENT_ID_REQ. | ||||
| If the server used AT_ANY_ID_REQ, and AT_IDENTITY contains an | ||||
| identity that the server is not able to recognize or classify, then | ||||
| the server sends EAP-Request/AKA-Identity with AT_FULLAUTH_ID_REQ. | ||||
| 4.1.3. Message Sequence Examples (Informative) | ||||
| This section contains non-normative message sequence examples to | ||||
| illustrate how the peer identity can be communicated to the server. | ||||
| sage of AT_ANY_ID_REQ | ||||
| Obtaining the peer identity with EAP/AKA attributes is illustrated | ||||
| in the figure below. | ||||
| Peer Authenticator | ||||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server does not have any | | | | Server does not have any | | |||
| | | Subscriber identity available| | | | Subscriber identity available| | |||
| | | When starting EAP/AKA | | | | When starting EAP/AKA | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Identity | | | EAP-Request/AKA-Identity | | |||
| | (AT_ANY_ID_REQ) | | | (AT_ANY_ID_REQ) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| | EAP-Response/AKA-Identity | | | EAP-Response/AKA-Identity | | |||
| | (AT_IDENTITY) | | | (AT_IDENTITY) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| If the client wants to perform full authentication, it includes the | all Back on Full Authentication | |||
| permanent identity or a pseudonym identity in the AT_IDENTITY | ||||
| attribute. The client may use these identities in response to either | ||||
| AT_ANY_ID_REQ or AT_FULLAUTH_ID_REQ. If the server uses the | ||||
| AT_ANY_ID_REQ and the client wants to perform re-authentication, | ||||
| then the client includes a re-authentication identity in the | ||||
| AT_IDENTITY attribute. | ||||
| If the client uses its full authentication identity and the | ||||
| AT_IDENTITY attribute contains a valid permanent identity or a valid | ||||
| pseudonym identity that the EAP server is able to decode to the | ||||
| permanent identity, then the full authentication sequence proceeds | ||||
| as usual with the EAP Server issuing the EAP-Request/AKA-Challenge | ||||
| message. | ||||
| On re-authentication, if the AT_IDENTITY attribute contains a valid | The figure below illustrates the case when the server does not | |||
| re-authentication identity and the server agrees on using re- | recognize the re-authentication identity the peer used in | |||
| authentication, then the server proceeds with the re-authentication | AT_IDENTITY. | |||
| sequence and issues the EAP-Request/AKA-Reauthentication packet, as | ||||
| specified in Section 5. If the server does not recognize the re- | ||||
| authentication identity, then it issues a second EAP-Request/AKA- | ||||
| Identity message and includes the AT_FULLAUTH_ID_REQ attribute. In | ||||
| this case, a second EAP/AKA-Identity round trip is required. The | ||||
| messages used on the first roundtrip are ignored. (However all AKA- | ||||
| Identity round trips are included in the calculation of the | ||||
| AT_CHECKCODE attribute, as specified in Section 7.2). This is | ||||
| illustrated below. | ||||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server does not have any | | | | Server does not have any | | |||
| | | Subscriber identity available| | | | Subscriber identity available| | |||
| | | When starting EAP/AKA | | | | When starting EAP/AKA | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Identity | | | EAP-Request/AKA-Identity | | |||
| | (AT_ANY_ID_REQ) | | | (AT_ANY_ID_REQ) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| skipping to change at page 15, line 45 ¶ | skipping to change at page 22, line 45 ¶ | |||
| | EAP-Response/AKA-Identity | | | EAP-Response/AKA-Identity | | |||
| | (AT_IDENTITY with a full-auth. Identity) | | | (AT_IDENTITY with a full-auth. Identity) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| If the server recognizes the re-authentication identity, but still | If the server recognizes the re-authentication identity, but still | |||
| wants to fall back on full authentication, the server may issue the | wants to fall back on full authentication, the server may issue the | |||
| EAP-Request/AKA-Challenge packet. In this case, the full | EAP-Request/AKA-Challenge packet. In this case, the full | |||
| authentication procedure proceeds as usual. | authentication procedure proceeds as usual. | |||
| An extra EAP/AKA-Identity round trip is also required in cases when | Requesting the Permanent Identity 1 | |||
| the AT_IDENTITY attribute contains a pseudonym identity that the EAP | ||||
| server fails to decode. The operation in this case is specified in | ||||
| Section 4.3. | ||||
| 4.3. Identity Privacy Support | ||||
| EAP/AKA includes optional identity privacy (anonymity) support that | ||||
| can be used to hide the cleartext permanent identity and to make the | ||||
| subscriber's connections unlinkable to eavesdroppers. Identity | ||||
| privacy is based on temporary identities, or pseudonyms, which are | ||||
| equivalent to but separate from the Temporary Mobile Subscriber | ||||
| Identities (TMSI) that are used on cellular networks. Please see | ||||
| Section 12.1 for security considerations concerning identity | ||||
| privacy. | ||||
| EAP AKA Authentication June 2003 | ||||
| If identity privacy is not used or if the client does not have any | ||||
| pseudonyms or re-authentication identities available, the client | ||||
| transmits the permanent identity in the EAP-Response/Identity packet | ||||
| or in the AT_IDENTITY attribute. | ||||
| The EAP-Request/AKA-Challenge message MAY include an encrypted | ||||
| pseudonym in the value field of the AT_ENCR_DATA attribute. The | ||||
| AT_IV and AT_MAC attributes are also used to transport the pseudonym | ||||
| to the client, as described in Section 8.1. Because the identity | ||||
| privacy support is optional to implement, the client MAY ignore the | ||||
| AT_IV and AT_ENCR_DATA attributes and always transmit the permanent | ||||
| identity in the EAP-Response/Identity packet and in the AT_IDENTITY | ||||
| attribute. | ||||
| On receipt of the EAP-Request/AKA-Challenge, the client verifies the | ||||
| AT_MAC attribute before looking at the AT_ENCR_DATA attribute. If | ||||
| the AT_MAC is invalid, then the client MUST silently discard the EAP | ||||
| packet. If the AT_MAC attribute is valid, then the client MAY | ||||
| decrypt the encrypted data in AT_ENCR_DATA and use the obtained | ||||
| pseudonym on the next full authentication. | ||||
| If the client does not receive a new pseudonym in the EAP- | ||||
| Request/AKA-Challenge message, the client MAY use an old pseudonym | ||||
| instead of the permanent identity on next full authentication. | ||||
| The EAP server produces pseudonyms in an implementation-dependent | ||||
| manner. Only the EAP server needs to be able to map the pseudonym to | ||||
| the permanent identity. Regardless of construction method, the | ||||
| pseudonym MUST conform to the grammar specified for the username | ||||
| portion of an NAI. | ||||
| In any case, it is necessary that permanent usernames and pseudonyms | ||||
| are separate and recognizable from each other. It is also desirable | ||||
| that EAP SIM and EAP AKA usernames be recognizable from each other | ||||
| as an aid for the server to which method to offer. | ||||
| In general, it is the task of the EAP server and the policies of its | ||||
| administrator to ensure sufficient separation in the usernames. | ||||
| Pseudonyms, for instance, are both produced and used by the EAP | ||||
| server. The EAP server MUST compose pseudonyms so that it can | ||||
| recognize if a NAI username is an EAP AKA pseudonym. For instance, | ||||
| when the usernames have been derived from the IMSI, the pseudonym | ||||
| could begin with a leading "2" character. | ||||
| The client MAY transmit the received pseudonym in the first EAP- | ||||
| Response/Identity packet of the next full authentication with the | ||||
| EAP server. The client concatenates the received pseudonym with the | ||||
| "@" character and the NAI realm portion. The client selects the | ||||
| realm name portion similarly as it select the realm name portion | ||||
| when using the permanent identity. If the EAP server successfully | ||||
| decodes the pseudonym received in the EAP-Response/Identity packet | ||||
| to a known client permanent identity, the authentication proceeds | ||||
| with the EAP-Request/AKA-Challenge message as usual. | ||||
| EAP AKA Authentication June 2003 | ||||
| Because the client may fail to save a pseudonym sent to in an EAP- | ||||
| Request/AKA-Challenge, for example due to malfunction, the EAP | ||||
| server SHOULD maintain at least one old pseudonym in addition to the | ||||
| most recent pseudonym. | ||||
| If the EAP server requests the client to include its identity in the | ||||
| EAP-Response/AKA-Identity packet, as specified in Section 4.2, the | ||||
| client MAY transmit the received pseudonym in the AT_IDENTITY | ||||
| attribute. If the EAP server successfully decodes the pseudonym to a | ||||
| known identity, then the authentication proceeds with the EAP- | ||||
| Request/AKA-Challenge packet as usual. | ||||
| If the EAP server fails to decode the pseudonym to a known identity, | ||||
| then the EAP server requests the permanent identity (non-pseudonym | ||||
| identity) by including the AT_PERMANENT_ID_REQ attribute (Section | ||||
| 8.5) in the EAP-Request/AKA-Identity message. Because another EAP | ||||
| server may have generated the pseudonym using a different coding | ||||
| scheme, the EAP server SHOULD use AT_PERMANENT_ID_REQ also in cases | ||||
| when it does not recognize the format of the client identity. | ||||
| The EAP server issues the EAP-Request/AKA-Identity message also in | ||||
| the case when it received the undecodable pseudonym in AT_IDENTITY | ||||
| included in the EAP-Response/AKA-Identity packet. In this case, a | ||||
| second EAP/AKA-Identity round trip is required. | ||||
| A received AT_PERMANENT_ID_REQ does not necessarily originate from | ||||
| the valid network, but an active attacker may transmit an EAP- | ||||
| Request/AKA-Identity packet with an AT_PERMANENT_ID_REQ attribute to | ||||
| the client, in an effort to find out the true identity of the user. | ||||
| The client MAY silently discard any EAP-Request/AKA-Identity | ||||
| messages that include AT_PERMANENT_ID_REQ for a while in order to | ||||
| wait for an EAP-Request/AKA-Identity packet without | ||||
| AT_PERMANENT_ID_REQ. If the valid network sent the message, the | ||||
| message will be retransmitted, so the client can reconsider replying | ||||
| to the message when it receives a retransmission. | ||||
| Basically, there are two different policies that the client can | ||||
| employ with regard to AT_PERMANENT_ID_REQ. A "conservative" client | ||||
| assumes that the network is able to maintain pseudonyms robustly. | ||||
| Therefore, if a conservative client has a pseudonym, the client | ||||
| silently ignores the EAP packet with AT_PERMANENT_ID_REQ, because | ||||
| the client believes that the valid network is able to decode the | ||||
| pseudonym. (Alternatively, the conservative client may respond to | ||||
| AT_PERMANENT_ID_REQ in certain circumstances, for example if the | ||||
| pseudonym was received a long time ago.) The benefit of this policy | ||||
| is that it protects the client against active attacks on anonymity. | ||||
| On the other hand, a "liberal" client always accepts the | ||||
| AT_PERMANENT_ID_REQ and responds with the permanent identity. The | ||||
| benefit of this policy is that it works even if the valid network | ||||
| sometimes loses pseudonyms and is not able to decode them to the | ||||
| permanent identity. | ||||
| The value field of the AT_PERMANENT_ID_REQ does not contain any data | ||||
| but the attribute is included to request the client to include the | ||||
| AT_IDENTITY attribute (Section 8.6) with the permanent | ||||
| EAP AKA Authentication June 2003 | ||||
| authentication identity in the EAP-Response/AKA-Identity message. In | ||||
| this case, the AT_IDENTITY attribute contains the client's permanent | ||||
| identity in the clear. | ||||
| Please note that the EAP/AKA client and the EAP/AKA server only | ||||
| process the AT_IDENTITY attribute. Entities that only pass EAP | ||||
| packets through do not process this attribute. Hence, if the EAP | ||||
| server is not co-located in the authenticator, then the | ||||
| authenticator and other intermediate AAA elements (such as possible | ||||
| AAA proxy servers) will continue to refer to the client with the | ||||
| original identity from the EAP-Response/Identity packet regardless | ||||
| if the decoding fails in the EAP server. | ||||
| The figure below illustrates the case when the EAP server fails to | The figure below illustrates the case when the EAP server fails to | |||
| decode the pseudonym included in the EAP-Response/Identity packet. | decode a pseudonym identity included in the EAP-Response/Identity | |||
| packet. | ||||
| Client Authenticator | EAP AKA Authentication 27 October, 2003 | |||
| Peer Authenticator | ||||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes a pseudonym) | | | (Includes a pseudonym) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server fails to decode the | | | | Server fails to decode the | | |||
| skipping to change at page 18, line 51 ¶ | skipping to change at page 23, line 35 ¶ | |||
| | | | | | | |||
| | EAP-Response/AKA-Identity | | | EAP-Response/AKA-Identity | | |||
| | (AT_IDENTITY with permanent identity) | | | (AT_IDENTITY with permanent identity) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| If the server recognizes the permanent identity, then the | If the server recognizes the permanent identity, then the | |||
| authentication sequence proceeds as usual with the EAP Server | authentication sequence proceeds as usual with the EAP Server | |||
| issuing the EAP-Request/AKA-Challenge message. | issuing the EAP-Request/AKA-Challenge message. | |||
| If the server does not recognize the permanent identity, or if the | Requesting the Permanent Identity 2 | |||
| server is not able to continue the authentication exchange with the | ||||
| client after receiving the permanent identity, then the server | ||||
| issues the EAP Failure packet and the authentication exchange | ||||
| terminates. | ||||
| The figure below illustrates the case when the EAP server fails to | The figure below illustrates the case when the EAP server fails to | |||
| decode the pseudonym included in the AT_IDENTITY attribute. | decode the pseudonym included in the AT_IDENTITY attribute. | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server does not have any | | | | Server does not have any | | |||
| | | Subscriber identity available| | | | Subscriber identity available| | |||
| | | When starting EAP/AKA | | | | When starting EAP/AKA | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Identity | | | EAP-Request/AKA-Identity | | |||
| | (AT_ANY_ID_REQ) | | | (AT_ANY_ID_REQ) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| skipping to change at page 19, line 40 ¶ | skipping to change at page 24, line 40 ¶ | |||
| | EAP-Request/AKA-Identity | | | EAP-Request/AKA-Identity | | |||
| | (AT_PERMANENT_ID_REQ) | | | (AT_PERMANENT_ID_REQ) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| | EAP-Response/AKA-Identity | | | EAP-Response/AKA-Identity | | |||
| | (AT_IDENTITY with permanent identity) | | | (AT_IDENTITY with permanent identity) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| In the worst case, there are three EAP/AKA-Identity round trips | Three EAP/AKA-Identity Round Trips | |||
| before the server has obtained an acceptable identity: on the first | ||||
| round, the client sends its re-authentication identity in | ||||
| AT_IDENTITY. The server fails to accept it and request a full | ||||
| authentication identity with a second EAP-Request/AKA-Identity. The | ||||
| client responds with a pseudonym identity in AT_IDENTITY. The server | ||||
| fails to decode the pseudonym and has to issue a third EAP- | ||||
| Request/AKA-Identity, including AT_PERMANENT_ID_REQ. Finally, the | ||||
| server accepts the client's EAP-Response/AKA-Identity with the | ||||
| AT_IDENTITY attribute and proceeds with full authentication. This is | ||||
| illustrated in the figure below. | ||||
| EAP AKA Authentication June 2003 | The figure below illustrates the case with three EAP/AKA-Identity | |||
| round trips. | ||||
| Client Authenticator | EAP AKA Authentication 27 October, 2003 | |||
| Peer Authenticator | ||||
| | | | | | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | Server does not have any | | | | Server does not have any | | |||
| | | Subscriber identity available| | | | Subscriber identity available| | |||
| | | When starting EAP/AKA | | | | When starting EAP/AKA | | |||
| | +------------------------------+ | | +------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Identity | | | EAP-Request/AKA-Identity | | |||
| | (AT_ANY_ID_REQ) | | | (AT_ANY_ID_REQ) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| skipping to change at page 20, line 53 ¶ | skipping to change at page 25, line 53 ¶ | |||
| | (AT_PERMANENT_ID_REQ) | | | (AT_PERMANENT_ID_REQ) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| | EAP-Response/AKA-Identity | | | EAP-Response/AKA-Identity | | |||
| | (AT_IDENTITY with permanent identity) | | | (AT_IDENTITY with permanent identity) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| After the last EAP-Response/AKA-Identity message, the full | After the last EAP-Response/AKA-Identity message, the full | |||
| authentication sequence proceeds as usual. If the EAP Server | authentication sequence proceeds as usual. | |||
| recognizes the permanent identity and is able to proceed, the server | ||||
| issues the EAP-Request/AKA-Challenge message. If the server does not | ||||
| recognize the permanent identity, or if the server is not able to | ||||
| continue the authentication exchange with the client after receiving | ||||
| the permanent identity, then the server issues the EAP Failure | ||||
| packet and the authentication exchange terminates. | ||||
| EAP AKA Authentication June 2003 | 4.2. Re-authentication | |||
| 5. Re-authentication | 4.2.1. General | |||
| In some environments, EAP authentication may be performed | In some environments, EAP authentication may be performed | |||
| frequently. Because the EAP AKA full authentication procedure makes | frequently. Because the EAP AKA full authentication procedure makes | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| use of the UMTS AKA algorithms, and it therefore requires fresh | use of the UMTS AKA algorithms, and it therefore requires fresh | |||
| authentication vectors from the Authentication Centre, the full | authentication vectors from the Authentication Centre, the full | |||
| authentication procedure may result in many network operations when | authentication procedure may result in many network operations when | |||
| used very frequently. Therefore, EAP AKA includes a more inexpensive | used very frequently. Therefore, EAP AKA includes a more inexpensive | |||
| re-authentication procedure that does not make use of the UMTS AKA | re-authentication procedure that does not make use of the UMTS AKA | |||
| algorithms and does not need new vectors from the Authentication | algorithms and does not need new vectors from the Authentication | |||
| Centre. | Centre. | |||
| Re-authentication is optional to implement for both the EAP AKA | Re-authentication is optional to implement for both the EAP AKA | |||
| server and client. On each EAP authentication, either one of the | server and peer. On each EAP authentication, either one of the | |||
| entities may also fall back on full authentication if they do not | entities may also fall back on full authentication if they do not | |||
| want to use re-authentication. | want to use re-authentication. | |||
| Re-authentication is based on the keys derived on the preceding full | Re-authentication is based on the keys derived on the preceding full | |||
| authentication. The same K_aut and K_encr keys as in full | authentication. The same K_aut and K_encr keys as in full | |||
| authentication are used to protect EAP AKA packets and attributes, | authentication are used to protect EAP AKA packets and attributes, | |||
| and the original Master Key from full authentication is used to | and the original Master Key from full authentication is used to | |||
| generate a fresh Master Session Key, as specified in Section 10. | generate a fresh Master Session Key, as specified in Section 4.5. | |||
| On re-authentication, the client protects against replays with an | On re-authentication, the peer protects against replays with an | |||
| unsigned 16-bit counter, included in the AT_COUNTER attribute. On | unsigned 16-bit counter, included in the AT_COUNTER attribute. On | |||
| full authentication, both the server and the client initialize the | full authentication, both the server and the peer initialize the | |||
| counter to one. The counter value of at least one is used on the | counter to one. The counter value of at least one is used on the | |||
| first re-authentication. On subsequent re-authentications, the | first re-authentication. On subsequent re-authentications, the | |||
| counter MUST be greater than on any of the previous re- | counter MUST be greater than on any of the previous re- | |||
| authentications. For example, on the second re-authentication, | authentications. For example, on the second re-authentication, | |||
| counter value is two or greater etc. The AT_COUNTER attribute is | counter value is two or greater etc. The AT_COUNTER attribute is | |||
| encrypted. | encrypted. | |||
| The server includes an encrypted server nonce (AT_NONCE_S) in the | The server includes an encrypted server nonce (AT_NONCE_S) in the | |||
| re-authentication request. The AT_MAC attribute in the client's | re-authentication request. The AT_MAC attribute in the peer's | |||
| response is calculated over NONCE_S to provide a challenge/response | response is calculated over NONCE_S to provide a challenge/response | |||
| authentication scheme. The NONCE_S also contributes to the new | authentication scheme. The NONCE_S also contributes to the new | |||
| Master Session Key. | Master Session Key. | |||
| As discussed in Section 4.3, in some environments the client may | Both the peer and the server SHOULD have an upper limit for the | |||
| assume that the network can reliably store pseudonyms and therefore | number of subsequent re-authentications allowed before a full | |||
| the client may fail to respond to the AT_PERMANENT_ID_REQ attribute. | authentication needs to be performed. Because a 16-bit counter is | |||
| The network SHOULD store pseudonyms on a reliable database. Because | used in re-authentication, the theoretical maximum number of re- | |||
| one of the objectives of the re-authentication procedure is to | authentications is reached when the counter value reaches 0xFFFF. | |||
| reduce load on the network, the re-authentication procedure does not | In order to use re-authentication, the peer and the EAP server need | |||
| require the EAP server to contact a reliable database. Therefore, | to store the following values: Master Key, latest counter value and | |||
| the re-authentication procedure makes use of separate re- | the next re-authentication identity. K_aut, K_encr may either be | |||
| stored or derived again from MK. The server may also need to store | ||||
| the permanent identity of the user. | ||||
| 4.2.2. Re-authentication Identity | ||||
| The re-authentication procedure makes use of separate re- | ||||
| authentication user identities. Pseudonyms and the permanent | authentication user identities. Pseudonyms and the permanent | |||
| identity are reserved for full authentication only. The network does | identity are reserved for full authentication only. If a re- | |||
| not need to store re-authentication identities as carefully as | authentication identity is lost and the network does not recognize | |||
| pseudonyms. If a re-authentication identity is lost and the network | it, the EAP server can fall back on full authentication. | |||
| does not recognize it, the EAP server can fall back on full | ||||
| authentication. | ||||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| If the EAP server supports re-authentication, it MAY include the | If the EAP server supports re-authentication, it MAY include the | |||
| skippable AT_NEXT_REAUTH_ID attribute in the encrypted data of EAP- | skippable AT_NEXT_REAUTH_ID attribute in the encrypted data of EAP- | |||
| Request/AKA-Challenge message. This attribute contains a new re- | Request/AKA-Challenge message. This attribute contains a new re- | |||
| authentication identity for the next re-authentication. The client | authentication identity for the next re-authentication. The peer MAY | |||
| MAY ignore this attribute, in which case it will use full | ignore this attribute, in which case it will use full authentication | |||
| authentication next time. If the client wants to use re- | next time. If the peer wants to use re-authentication, it uses this | |||
| authentication, it uses this re-authentication identity on next | re-authentication identity on next authentication. Even if the peer | |||
| authentication. Even if the client has a re-authentication identity, | has a re-authentication identity, the peer MAY discard the re- | |||
| the client MAY discard the re-authentication identity and use a | authentication identity and use a pseudonym or the permanent | |||
| pseudonym or the permanent identity instead, in which case full | identity instead, in which case full authentication MUST be | |||
| authentication will be performed. | performed. | |||
| The re-authentication identity received in AT_NEXT_REAUTH_ID | In environments where a real portion is needed in the peer identity, | |||
| contains both the username portion and the realm portion of the | the re-authentication identity received in AT_NEXT_REAUTH_ID MUST | |||
| Network Access Identifier. The EAP Server can choose an appropriate | contain both a username portion and a realm portion, as per the NAI | |||
| realm part in order to have the AAA infrastructure route subsequent | format. The EAP Server can choose an appropriate realm part in order | |||
| re-authentication related requests to the same AAA server. For | to have the AAA infrastructure route subsequent re-authentication | |||
| example, the realm part MAY include a portion that is specific to | related requests to the same AAA server. For example, the realm part | |||
| the AAA server. Hence, it is sufficient to store the context | MAY include a portion that is specific to the AAA server. Hence, it | |||
| required for re-authentication in the AAA server that performed the | is sufficient to store the context required for re-authentication in | |||
| full authentication. | the AAA server that performed the full authentication. | |||
| The client MAY use the re-authentication identity in the EAP- | The peer MAY use the re-authentication identity in the EAP- | |||
| Response/Identity packet or, in response to server's AT_ANY_ID_REQ | Response/Identity packet or, in response to server's AT_ANY_ID_REQ | |||
| attribute, the client MAY use the re-authentication identity in the | attribute, the peer MAY use the re-authentication identity in the | |||
| AT_IDENTITY attribute of the EAP-Response/AKA-Identity packet. | AT_IDENTITY attribute of the EAP-Response/AKA-Identity packet. The | |||
| peer MUST NOT modify the username portion of the re-authentication | ||||
| identity, but the peer MAY modify the realm portion or replace it | ||||
| with another realm portion. | ||||
| Even if the client uses a re-authentication identity, the server may | Even if the peer uses a re-authentication identity, the server may | |||
| want to fall back on full authentication, for example because the | want to fall back on full authentication, for example because the | |||
| server does not recognize the re-authentication identity or does not | server does not recognize the re-authentication identity or does not | |||
| want to use re-authentication. If the server was able to decode the | want to use re-authentication. If the server was able to decode the | |||
| re-authentication identity to the permanent identity, the server | re-authentication identity to the permanent identity, the server | |||
| issues the EAP-Request/AKA-Challenge packet to initiate full | issues the EAP-Request/AKA-Challenge packet to initiate full | |||
| authentication. If the server was not able to recover the client's | authentication. If the server was not able to recover the peer's | |||
| identity from the re-authentication identity, the server starts the | identity from the re-authentication identity, the server starts the | |||
| full authentication procedure by issuing an EAP-Request/AKA-Identity | full authentication procedure by issuing an EAP-Request/AKA-Identity | |||
| packet. This packet always starts a full authentication sequence if | packet. This packet always starts a full authentication sequence if | |||
| it does not include the AT_ANY_ID_REQ attribute. (As specified in | it does not include the AT_ANY_ID_REQ attribute. | |||
| Sections 4.2 and 4.3, the server MAY use AT_ANY_ID_REQ, | ||||
| AT_FULLAUTH_ID_REQ or AT_PERMANENT_ID_REQ attributes if it does not | ||||
| know the client's identity.) | ||||
| Both the client and the server SHOULD have an upper limit for the | ||||
| number of subsequent re-authentications allowed before a full | ||||
| authentication needs to be performed. Because a 16-bit counter is | ||||
| used in re-authentication, the theoretical maximum number of re- | ||||
| authentications is reached when the counter value reaches 0xFFFF. | ||||
| In order to use re-authentication, the client and the server need to | 4.2.3. Re-authentication Procedure | |||
| store the following values: original Master Key, K_aut, K_encr, | ||||
| latest counter value and the next re-authentication identity. | ||||
| The following figure illustrates the re-authentication procedure. | The following figure illustrates the re-authentication procedure. | |||
| Encrypted attributes are denoted with '*'. The client uses its re- | Encrypted attributes are denoted with '*'. The peer uses its re- | |||
| EAP AKA Authentication June 2003 | ||||
| authentication identity in the EAP-Response/Identity packet. As | authentication identity in the EAP-Response/Identity packet. As | |||
| discussed above, an alternative way to communicate the re- | discussed above, an alternative way to communicate the re- | |||
| authentication identity to the server is for the client to use the | authentication identity to the server is for the peer to use the | |||
| AT_IDENTITY attribute in the EAP-Response/AKA-Identity message. This | AT_IDENTITY attribute in the EAP-Response/AKA-Identity message. This | |||
| latter case is not illustrated in the figure below, and it is only | latter case is not illustrated in the figure below, and it is only | |||
| possible when the server requests the client to send its identity by | possible when the server requests the peer to send its identity by | |||
| including the AT_ANY_ID_REQ attribute in the EAP-Request/AKA- | including the AT_ANY_ID_REQ attribute in the EAP-Request/AKA- | |||
| Identity packet. | Identity packet. | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| If the server recognizes the re-authentication identity and agrees | If the server recognizes the re-authentication identity and agrees | |||
| on using re-authentication, then the server sends the EAP- | on using re-authentication, then the server sends the EAP- | |||
| Request/AKA-Reauthentication packet to the client. This packet MUST | Request/AKA-Reauthentication packet to the peer. This packet MUST | |||
| include the encrypted AT_COUNTER attribute, with a fresh counter | include the encrypted AT_COUNTER attribute, with a fresh counter | |||
| value, the encrypted AT_NONCE_S attribute that contains a random | value, the encrypted AT_NONCE_S attribute that contains a random | |||
| number chosen by the server, the AT_ENCR_DATA and the AT_IV | number chosen by the server, the AT_ENCR_DATA and the AT_IV | |||
| attributes used for encryption, and the AT_MAC attribute that | attributes used for encryption, and the AT_MAC attribute that | |||
| contains a message authentication code over the packet. The packet | contains a message authentication code over the packet. The packet | |||
| MAY also include an encrypted AT_NEXT_REAUTH_ID attribute that | MAY also include an encrypted AT_NEXT_REAUTH_ID attribute that | |||
| contains the next re-authentication identity. | contains the next re-authentication identity. | |||
| Re-authentication identities are one-time identities. If the client | Re-authentication identities are one-time identities. If the peer | |||
| does not receive a new re-authentication identity, it MUST use | does not receive a new re-authentication identity, it MUST use | |||
| either the permanent identity or a pseudonym identity on the next | either the permanent identity or a pseudonym identity on the next | |||
| authentication to initiate full authentication. | authentication to initiate full authentication. | |||
| The client verifies that the counter value is fresh (greater than | The peer verifies that the counter value is fresh (greater than any | |||
| any previously used value). The client also verifies that AT_MAC is | previously used value). The peer also verifies that AT_MAC is | |||
| correct. The client MAY save the next re-authentication identity | correct. The peer MAY save the next re-authentication identity from | |||
| from the encrypted AT_NEXT_REAUTH_ID for next time. If all checks | the encrypted AT_NEXT_REAUTH_ID for next time. If all checks are | |||
| are successful, the client responds with the EAP-Response/AKA- | successful, the peer responds with the EAP-Response/AKA- | |||
| Reauthentication packet, including the AT_COUNTER attribute with the | Reauthentication packet, including the AT_COUNTER attribute with the | |||
| same counter value and the AT_MAC attribute. | same counter value and the AT_MAC attribute. | |||
| The server verifies the AT_MAC attribute and also verifies that the | The server verifies the AT_MAC attribute and also verifies that the | |||
| counter value is the same that it used in the EAP-Request/AKA- | counter value is the same that it used in the EAP-Request/AKA- | |||
| Reauthentication packet. If these checks are successful, the re- | Reauthentication packet. If these checks are successful, the re- | |||
| authentication has succeeded and the server sends the EAP-Success | authentication has succeeded and the server sends the EAP-Success | |||
| packet to the client. | packet to the peer. | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes a re-authentication identity) | | | (Includes a re-authentication identity) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +--------------------------------+ | | +--------------------------------+ | |||
| | | Server recognizes the identity | | | | Server recognizes the identity | | |||
| skipping to change at page 24, line 29 ¶ | skipping to change at page 29, line 29 ¶ | |||
| | | re-authentication | | | | re-authentication | | |||
| | +--------------------------------+ | | +--------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Reauthentication | | | EAP-Request/AKA-Reauthentication | | |||
| | (AT_IV, AT_ENCR_DATA, *AT_COUNTER, | | | (AT_IV, AT_ENCR_DATA, *AT_COUNTER, | | |||
| | *AT_NONCE_S, *AT_NEXT_REAUTH_ID, AT_MAC) | | | *AT_NONCE_S, *AT_NEXT_REAUTH_ID, AT_MAC) | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | | | | | | |||
| +-----------------------------------------------+ | | +-----------------------------------------------+ | | |||
| | Client verifies AT_MAC and the freshness of | | | | Peer verifies AT_MAC and the freshness of | | | |||
| | the counter. Client MAY store the new re- | | | | the counter. Peer MAY store the new re- | | | |||
| | authentication identity for next re-auth. | | | | authentication identity for next re-auth. | | | |||
| +-----------------------------------------------+ | | +-----------------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA-Reauthentication | | | EAP-Response/AKA-Reauthentication | | |||
| | (AT_IV, AT_ENCR_DATA, *AT_COUNTER with same value, | | | (AT_IV, AT_ENCR_DATA, *AT_COUNTER with same value, | | |||
| | AT_MAC) | | | AT_MAC) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +--------------------------------+ | | +--------------------------------+ | |||
| | | Server verifies AT_MAC and | | | | Server verifies AT_MAC and | | |||
| | | the counter | | | | the counter | | |||
| | +--------------------------------+ | | +--------------------------------+ | |||
| | | | | | | |||
| | EAP-Success | | | EAP-Success | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| If the client does not accept the counter value of EAP-Request/AKA- | 4.2.4. Re-authentication Procedure when Counter is Too Small | |||
| If the peer does not accept the counter value of EAP-Request/AKA- | ||||
| Reauthentication, it indicates the counter synchronization problem | Reauthentication, it indicates the counter synchronization problem | |||
| by including the encrypted AT_COUNTER_TOO_SMALL in EAP-Response/AKA- | by including the encrypted AT_COUNTER_TOO_SMALL in EAP-Response/AKA- | |||
| Reauthentication. The server responds with EAP-Request/AKA-Challenge | Reauthentication. The server responds with EAP-Request/AKA-Challenge | |||
| to initiate a normal full authentication procedure. This is | to initiate a normal full authentication procedure. This is | |||
| illustrated in the following figure. Encrypted attributes are | illustrated in the following figure. Encrypted attributes are | |||
| denoted with '*'. | denoted with '*'. | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Client Authenticator | Peer Authenticator | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes a re-authentication identity) | | | (Includes a re-authentication identity) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | EAP-Request/AKA-Reauthentication | | | EAP-Request/AKA-Reauthentication | | |||
| | (AT_IV, AT_ENCR_DATA, *AT_COUNTER, | | | (AT_IV, AT_ENCR_DATA, *AT_COUNTER, | | |||
| skipping to change at page 25, line 32 ¶ | skipping to change at page 30, line 32 ¶ | |||
| | AT_MAC is valid but the counter is not fresh. | | | | AT_MAC is valid but the counter is not fresh. | | | |||
| +-----------------------------------------------+ | | +-----------------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA-Reauthentication | | | EAP-Response/AKA-Reauthentication | | |||
| | (AT_IV, AT_ENCR_DATA, *AT_COUNTER_TOO_SMALL, | | | (AT_IV, AT_ENCR_DATA, *AT_COUNTER_TOO_SMALL, | | |||
| | *AT_COUNTER, AT_MAC) | | | *AT_COUNTER, AT_MAC) | | |||
| |------------------------------------------------------>| | |------------------------------------------------------>| | |||
| | | | | | | |||
| | +----------------------------------------------+ | | +----------------------------------------------+ | |||
| | | Server verifies AT_MAC but detects | | | | Server verifies AT_MAC but detects | | |||
| | | That client has included AT_COUNTER_TOO_SMALL| | | | That peer has included AT_COUNTER_TOO_SMALL| | |||
| | +----------------------------------------------+ | | +----------------------------------------------+ | |||
| | | | | | | |||
| | EAP-Request/AKA-Challenge | | | EAP-Request/AKA-Challenge | | |||
| |<------------------------------------------------------| | |<------------------------------------------------------| | |||
| | | | | | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | Normal full authentication follows. | | | Normal full authentication follows. | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| | | | | | | |||
| In the figure above, the first three messages are similar to the | In the figure above, the first three messages are similar to the | |||
| basic re-authentication case. When the client detects that the | basic re-authentication case. When the peer detects that the counter | |||
| counter value is not fresh, it includes the AT_COUNTER_TOO_SMALL | value is not fresh, it includes the AT_COUNTER_TOO_SMALL attribute | |||
| attribute in EAP-Response/AKA-Reauthentication. This attribute | in EAP-Response/AKA-Reauthentication. This attribute doesn't contain | |||
| doesn't contain any data but it is a request for the server to | any data but it is a request for the server to initiate full | |||
| initiate full authentication. In this case, the client MUST ignore | authentication. In this case, the peer MUST ignore the contents of | |||
| the contents of the server's AT_NEXT_REAUTH_ID attribute. | the server's AT_NEXT_REAUTH_ID attribute. | |||
| On receipt of AT_COUNTER_TOO_SMALL, the server verifies AT_MAC and | On receipt of AT_COUNTER_TOO_SMALL, the server verifies AT_MAC and | |||
| verifies that AT_COUNTER contains the same as in the EAP- | verifies that AT_COUNTER contains the same as in the EAP- | |||
| Request/AKA-Reauthentication packet. If not, the server silently | Request/AKA-Reauthentication packet. If not, the server silently | |||
| discards the EAP-Response/AKA-Reauthentication packet. If all checks | discards the EAP-Response/AKA-Reauthentication packet. If all checks | |||
| on the packet are successful, the server transmits a EAP- | on the packet are successful, the server transmits a EAP- | |||
| Request/AKA-Challenge packet and the full authentication procedure | Request/AKA-Challenge packet and the full authentication procedure | |||
| is performed as usual. Since the server already knows the subscriber | is performed as usual. Since the server already knows the subscriber | |||
| identity, it MUST NOT use the EAP-Request/AKA-Identity packet to | identity, it MUST NOT use the EAP-Request/AKA-Identity packet to | |||
| request the identity. | request the identity. | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| 6. Message Format | ||||
| The Type-Data of the EAP AKA packets begins with a 1-octet Subtype | 4.3. EAP/AKA Notifications | |||
| field, which is followed by a 2-octet reserved field. The rest of | ||||
| the Type-Data consists of attributes that are encoded in Type, | ||||
| Length, Value format. The figure below shows the generic format of | ||||
| an attribute. | ||||
| 0 1 2 3 | The EAP-Request/Notification, specified in [EAP], can be used to | |||
| 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 | convey a displayable message from the EAP server to the peer. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Because these messages are textual messages, it may be hard for the | |||
| |Attribute Type | Length | Value... | peer to present them in the user's preferred language. Therefore, | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EAP/AKA uses a separate EAP/AKA message subtype to transmit | |||
| localizable notification codes instead of the EAP- | ||||
| Request/Notification packet. | ||||
| Attribute Type | The EAP server MAY issue an EAP-Request/AKA-Notification packet to | |||
| the peer. The peer MAY show a notification message to the user and | ||||
| the peer MUST respond to the EAP server with an EAP-Response/AKA- | ||||
| Notification packet, even if the peer did not recognize the | ||||
| notification code. | ||||
| Indicates the particular type of attribute. The attribute type | The notification code is a 16-bit number. The most significant bit | |||
| values are listed in Section 11. | is called the Failure bit (F bit). The F bit specifies whether the | |||
| notification implies failure. The code values with the F bit set to | ||||
| zero (code values 0...32767) are used on unsuccessful cases. The | ||||
| receipt of a notification code from this range implies failed | ||||
| authentication, so the peer can use the notification as a failure | ||||
| indication. After receiving the EAP-Response/AKA-Notification for | ||||
| these notification codes, the server MUST send the EAP-Failure | ||||
| packet. | ||||
| Length | The receipt of a notification code with the F bit set to one (values | |||
| 32768...65536) does not imply failure, so the peer MUST NOT change | ||||
| its state when it receives such a notification. (This version of the | ||||
| protocol does not specify any notification codes with the F bit set | ||||
| to one.) | ||||
| Indicates the length of this attribute in multiples of 4 bytes. | The second most significant bit of the notification code is called | |||
| The maximum length of an attribute is 1024 bytes. The length | the Phase bit (P bit). It specifies at which phase of the EAP/AKA | |||
| includes the Attribute Type and Length bytes. | exchange the notification can be used. If the P bit is set to zero, | |||
| the notification can only be used after the EAP/AKA-Challenge round | ||||
| in full authentication or the EAP/AKA-Reauthentication round in | ||||
| reautentication. For these notifications, the AT_MAC attribute MUST | ||||
| be included in both EAP-Request/AKA-Notification and EAP- | ||||
| Response/AKA-Notification. | ||||
| Value | If the P bit is set to one, the notification can only by used before | |||
| the EAP/AKA-Challenge round in full authentication or the EAP/AKA- | ||||
| Reauthentication round in reauthentication. For these notifications, | ||||
| the AT_MAC attribute MUST NOT be included in either EAP-Request/AKA- | ||||
| Notification or EAP-Response/AKA-Notification. (This version of the | ||||
| protocol does not specify any notification codes with the P bit set | ||||
| to one.) | ||||
| The particular data associated with this attribute. This field is | Some of the notification codes are authorization related and hence | |||
| always included and it is two or more bytes in length. The type | not usually considered as part of the responsibility of an EAP | |||
| and length fields determine the format and length of the value | method. However, they are included as part of EAP/AKA because there | |||
| field. | are currently no other ways to convey this information to the user | |||
| When an attribute numbered within the range 0 through 127 is | EAP AKA Authentication 27 October, 2003 | |||
| encountered but not recognized, the EAP/AKA message containing that | ||||
| attribute MUST be silently discarded. These attributes are called | ||||
| non-skippable attributes. | ||||
| When an attribute numbered in the range 128 through 255 is | in a localizable way, and the information is potentially useful for | |||
| encountered but not recognized that particular attribute is ignored, | the user. An EAP/AKA server implementation may decide never to send | |||
| but the rest of the attributes and message data MUST still be | these EAP/AKA notifications. | |||
| processed. The Length field of the attribute is used to skip the | ||||
| attribute value when searching for the next attribute. These | ||||
| attributes are called skippable attributes. | ||||
| EAP/AKA packets do not include a version field. However, should | 4.4. Error Cases | |||
| there be a reason to revise this protocol in the future, new non- | ||||
| skippable or skippable attributes could be specified in order to | ||||
| implement revised EAP/AKA versions in a backward-compatible manner. | ||||
| Unless otherwise specified, the order of the attributes in an EAP | This section specifies the operation of the peer and the server in | |||
| AKA message is insignificant, and an EAP AKA implementation should | error cases. The subsections below require the EAP/AKA peer and | |||
| not assume a certain order to be used. | server to send an error packet (EAP-Response/AKA-Client-Error or EAP | |||
| Failure) in error cases. However, implementations SHOULD NOT rely | ||||
| upon the correct error reporting behavior of the peer, | ||||
| authenticator, or the server. It is possible for error and other | ||||
| messages to be lost in transit or for a malicious participant to | ||||
| attempt to consume resources by not issuing error messages. Both | ||||
| the peer and the EAP server SHOULD have a mechanism to clean up | ||||
| state even if an error message or EAP Success is not received after | ||||
| a timeout period. | ||||
| EAP AKA Authentication June 2003 | 4.4.1. Peer Operation | |||
| Attributes can be encapsulated within other attributes. In other | Two special error messages have been specified for error cases that | |||
| words, the value field of an attribute type can be specified to | are related to the processing of the UMTS AKA AUTN parameter, as | |||
| contain other attributes. | described in Section 3: (1) if the peer does not accept AUTN, the | |||
| peer responds with EAP-Response/AKA-Authentication-Reject (Section | ||||
| 6.5), and the server issues EAP Failure, and (2) if the peer detects | ||||
| that the sequence number in AUTN is not correct, the peer responds | ||||
| with EAP-Response/AKA-Synchronization-Failure (Section 6.6), and the | ||||
| server proceeds with a new EAP-Request/AKA-Challenge. | ||||
| 7. Message Authentication and Encryption | In other error cases, when an EAP/AKA peer detects an error in a | |||
| received EAP/AKA packet, the EAP/AKA peer responds with the EAP- | ||||
| Response/AKA-Client-Error packet. In response to the EAP- | ||||
| Response/AKA-Client-Error, the EAP server MUST issue the EAP Failure | ||||
| packet and the authentication exchange terminates. | ||||
| This section specifies EAP/AKA attributes for attribute encryption | By default, the peer uses the client error code 0, "unable to | |||
| and EAP/AKA message authentication. | process packet". This error code is used in the following cases: | |||
| Encryption and integrity protection are based on the AKA session | - the peer is not able to parse the EAP request, i.e. the EAP | |||
| keys CK and IK. Because the CK and IK keys are derived from the RAND | request is malformed | |||
| challenge, these attributes can only be used in the EAP-Request/AKA- | ||||
| Challenge message and any EAP/AKA messages sent after it. For | ||||
| example, these attributes cannot be used in EAP-Request/AKA- | ||||
| Identity, because the RAND challenge has not yet been transmitted at | ||||
| that point. Integrity protection with AT_MAC MUST be used in all | ||||
| messages when keys have been derived. | ||||
| 7.1. AT_MAC Attribute | - the peer encountered a malformed attribute | |||
| The AT_MAC attribute can be used for EAP/AKA message integrity | - wrong attribute types or duplicate attributes have been included | |||
| protection. Whenever AT_ENCR_DATA (Section 7.3) is included in an | in the EAP request | |||
| EAP message, it MUST be followed (not necessarily immediately) by an | ||||
| AT_MAC attribute. Messages that do not meet this condition MUST be | ||||
| silently discarded. | ||||
| The value field of the AT_MAC attribute contains two reserved bytes | - a mandatory attribute is missing | |||
| followed by a message authentication code (MAC). The MAC is | ||||
| calculated over the whole EAP packet, concatenated with optional | ||||
| message-specific data, with the exception that the value field of | ||||
| the MAC attribute is set to zero when calculating the MAC. The | ||||
| reserved bytes are set to zero when sending and ignored on | ||||
| reception. | ||||
| The contents of the message-specific data, if present, are specified | - unrecognized non-skippable attribute | |||
| separately for each EAP/AKA message. The message-specific data is | ||||
| included in order to protect data that is not transmitted with the | ||||
| EAP packet. | ||||
| The format of the AT_MAC attribute is shown below. | - unrecognized or unexpected EAP/AKA Subtype in the EAP request | |||
| 0 1 2 3 | - invalid AT_MAC | |||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The MAC algorithm is HMAC-SHA1-128 [9] keyed hash value. (The HMAC- | EAP AKA Authentication 27 October, 2003 | |||
| SHA1-128 value is obtained from the 20-byte HMAC-SHA1 value by | ||||
| EAP AKA Authentication June 2003 | - invalid AT_CHECKCODE | |||
| truncating the output to 16 bytes. Hence, the length of the MAC is | - invalid pad bytes in AT_PADDING | |||
| 16 bytes.) The message authentication key (K_aut) used in the | ||||
| calculation of the MAC is derived from the AKA integrity key (IK) | ||||
| and cipher key (CK), as specified in Section 10. | ||||
| 7.2. AT_CHECKCODE Attribute | - the peer does not want to process AT_PERMANENT_ID_REQ | |||
| The AT_MAC attribute is not used in the very first EAP/AKA messages, | 4.4.2. Server Operation | |||
| because keying material has not been derived yet. The client and the | ||||
| server may exchange one or more pairs of EAP/AKA messages of the | ||||
| Subtype AKA-Identity before keys are derived and before the AT_MAC | ||||
| attribute can be applied. The EAP/AKA-Identity messages may also be | ||||
| used upon re-authentication. | ||||
| The AT_CHECKCODE attribute MAY be used to protect the EAP/AKA- | If an EAP/AKA server detects an error in a received EAP/AKA | |||
| Identity messages. AT_CHECKCODE is included in EAP-Request/AKA- | response, the server MUST issue the EAP Failure packet and the | |||
| Challenge and/or EAP-Response/AKA-Challenge upon full | authentication exchange terminates. The errors cases when the server | |||
| authentication. In re-authentication, AT_CHECKCODE can be included | issues an EAP Failure include the following: | |||
| in EAP-Request/AKA-Reauthentication and/or EAP-Response/AKA- | ||||
| Reauthentication. Because the AT_MAC attribute is used in these | ||||
| messages, AT_CHECKCODE will be integrity protected with AT_MAC. | ||||
| The format of the AT_CHECKCODE attribute is shown below. | ||||
| 0 1 2 3 | - the server is not able to parse the peer's EAP response | |||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_CHECKCODE | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Checkcode (0 or 20 bytes) | | ||||
| | | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The value field of AT_CHECKCODE begins with two reserved bytes, | - the server encounters a malformed attribute, a non-recognized non- | |||
| which may be followed by a 20-byte checkcode. If the checkcode is | skippable attribute, or a duplicate attribute | |||
| not included in AT_CHECKCODE, then the attribute indicates that no | ||||
| EAP/AKA-Identity messages were exchanged. This may occur in both | ||||
| full authentication and re-authentication. The reserved bytes are | ||||
| set to zero when sending and ignored on reception. | ||||
| The checkcode is a hash value, calculated with SHA1 [10], over all | - a mandatory attribute is missing or an invalid attribute was | |||
| EAP-Request/AKA-Identity and EAP-Response/ AKA-Identity packets | included | |||
| exchanged in this authentication exchange. The packets are included | ||||
| in the order that they were transmitted, that is, starting with the | ||||
| first EAP-Request/ AKA-Identity message, followed by the | ||||
| corresponding EAP-Response/ AKA-Identity, followed by the second | ||||
| EAP-Request/ AKA-Identity (if used) etc. | ||||
| EAP packets are included in the hash calculation "as-is", as they | - unrecognized or unexpected EAP/AKA Subtype in the EAP Response | |||
| were transmitted or received. All reserved bytes, padding bytes etc. | ||||
| that are specified for various attributes are included as such, and | ||||
| the receiver must not reset them to zero. No delimiter bytes, | ||||
| EAP AKA Authentication June 2003 | - invalid AT_MAC | |||
| padding or any other framing are included between the EAP packets | - invalid AT_CHECKCODE | |||
| when calculating the checkcode. | ||||
| Messages are included in request/response pairs; in other words only | - invalid AT_COUNTER | |||
| full "round trips" are included. Packets that are silently discarded | ||||
| are not included. The EAP server must only include an EAP- | ||||
| Request/AKA-Identity in the calculation once it has received a | ||||
| corresponding response, with the same Identifier value. | ||||
| Retransmissions or requests to which the server does not receive | ||||
| response are not included. | ||||
| The client must include the EAP-Request/AKA-Identity and the | 4.4.3. Failure | |||
| corresponding response in the calculation only if the client | ||||
| receives a subsequent EAP-Request/AKA-Challenge, or a follow-up EAP- | ||||
| Request/AKA-Identity with different attributes (attribute types) | ||||
| than in the first EAP-Request/AKA-Identity. After sending EAP- | ||||
| Response/AKA-Identity, if the client receives another EAP- | ||||
| Request/AKA-Identity with the same attributes as in the previous | ||||
| request, then the client's response to the first request must have | ||||
| been lost. In this case the client must not include the first | ||||
| request and its response in the calculation of the checkcode. | ||||
| The AT_CHECKCODE attribute is optional to implement. It is specified | As normally in EAP, the EAP server sends the EAP-Failure packet to | |||
| in order to allow protecting the EAP/ AKA-Identity messages and any | the peer when the authentication procedure fails on the EAP Server. | |||
| future extensions to them. The implementation of AT_CHECKCODE is | In EAP/AKA, this may occur for example if the EAP server does not | |||
| recommended. | recognize the peer identity, or if the EAP server is not able to | |||
| obtain the authentication vectors for the subscriber or the | ||||
| authentication exchange times out. The server may also send EAP | ||||
| Failure if there is an error in the received EAP/AKA response, as | ||||
| discussed in Section 4.4.2. | ||||
| If the receiver of AT_CHECKCODE implements this attribute, then the | The server can send EAP-Failure at any time in the EAP exchange. The | |||
| receiver MUST check that the checkcode is correct. If the checkcode | peer MUST process EAP-Failure. | |||
| is invalid, the receiver must terminate the authentication exchange. | ||||
| If the EAP/AKA-Identity messages are extended with new attributes | 4.4.4. EAP Success | |||
| then AT_CHECKCODE must be implemented and used. More specifically, | ||||
| if the server includes any other attributes than | ||||
| AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ or AT_ANY_ID_REQ in the EAP- | ||||
| Request/AKA-Identity packet, then the server MUST include | ||||
| AT_CHECKCODE in EAP-Request/AKA-Challenge or EAP-Request/AKA- | ||||
| Reauthentication. If the client includes any other attributes than | ||||
| AT_IDENTITY in the EAP-Response/AKA-Identity message, then the | ||||
| client MUST include AT_CHECKCODE in EAP-Response/AKA-Challenge or | ||||
| EAP-Response/AKA-Reauthentication. | ||||
| If the server implements the processing of any other attribute than | On full authentication, the server can only send EAP-Success after | |||
| AT_IDENTITY for the EAP-Response/AKA-Identity message, then the | the EAP/AKA-Challenge round. The peer MUST silently discard any EAP- | |||
| server MUST implement AT_CHECKCODE. In this case, if the server | Success packets if they are received before the peer has | |||
| receives any other attribute than AT_IDENTITY in the EAP- | successfully authenticated the server and sent the EAP-Response/AKA- | |||
| Response/AKA-Identity message, then the server MUST check that | Challenge packet. | |||
| AT_CHECKCODE is present in EAP-Response/AKA-Challenge or EAP- | ||||
| Response/AKA-Reauthentication. If AT_CHECKCODE is not included, the | ||||
| server must terminate the authentication exchange. | ||||
| Similarly, if the client implements the processing of any other | On re-authentication, EAP-Success can only be sent after the | |||
| attribute than AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ or | EAP/AKA-Reauthentication round. The peer MUST silently discard any | |||
| AT_ANY_ID_REQ for the EAP-Request/AKA-Identity packet, then the | EAP-Success packets if they are received before the peer has | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| client MUST implement AT_CHECKCODE. In this case, if the client | successfully authenticated the server and sent the EAP-Response/AKA- | |||
| receives any other attribute than AT_PERMANENT_ID_REQ, | Reauthentication packet. | |||
| AT_FULLAUTH_ID_REQ or AT_ANY_ID_REQ in the EAP-Request/AKA-Identity | ||||
| packet, then the client MUST check that AT_CHECKCODE is present in | ||||
| EAP-Request/AKA-Challenge or EAP-Request/AKA-Reauthentication. If | ||||
| the attribute was not included, the client must terminate the | ||||
| authentication exchange. | ||||
| 7.3. AT_IV, AT_ENCR_DATA and AT_PADDING Attributes | If the peer receives an EAP/AKA notification (section 4.3) that | |||
| indicates failure, then the peer MUST no longer accept the EAP- | ||||
| Success packet even if the server authentication was successfully | ||||
| completed. | ||||
| AT_IV and AT_ENCR_DATA attributes can be optionally used to transmit | 4.5. Key Generation | |||
| encrypted information between the EAP/AKA client and server. | ||||
| The value field of AT_IV contains two reserved bytes followed by a | This section specifies how keying material is generated. | |||
| 16-byte initialization vector required by the AT_ENCR_DATA | ||||
| attribute. The reserved bytes are set to zero when sending and | ||||
| ignored on reception. The AT_IV attribute MUST be included if and | ||||
| only if the AT_ENCR_DATA is included. Messages that do not meet this | ||||
| condition MUST be silently discarded. | ||||
| The sender of the AT_IV attribute chooses the initialization vector | On EAP AKA full authentication, a Master Key (MK) is derived from | |||
| by random. The sender MUST NOT reuse the initialization vector value | the underlying UMTS AKA values (CK and IK keys), and the identity as | |||
| from previous EAP AKA packets but the sender MUST choose it freshly | follows. | |||
| for each AT_IV attribute. The sends SHOULD use a good source of | ||||
| randomness to generate the initialization vector. The format of | ||||
| AT_IV is shown below. | ||||
| 0 1 2 3 | MK = SHA1(Identity|IK|CK) | |||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_IV | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Initialization Vector | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The value field of the AT_ENCR_DATA attribute consists of two | In the formula above, the "|" character denotes concatenation. | |||
| reserved bytes followed by bytes encrypted using the Advanced | Identity denotes the peer identity string without any terminating | |||
| Encryption Standard (AES) [11] in the Cipher Block Chaining (CBC) | null characters. It is the identity from the AT_IDENTITY attribute | |||
| mode of operation, using the initialization vector from the AT_IV | from the last EAP-Response/AKA-Identity packet, or, if AT_IDENTITY | |||
| attribute. The reserved bytes are set to zero when sending and | was not used, the identity from the EAP-Response/Identity packet. | |||
| ignored on reception. Please see [12] for a description of the CBC | The identity string is included as-is, without any changes and | |||
| mode. The format of the AT_ENCR_DATA attribute is shown below. | including the possible identity decoration. The hash function SHA-1 | |||
| is specified in [SHA-1]. | ||||
| EAP AKA Authentication June 2003 | The Master Key is fed into a Pseudo-Random number Function (PRF), | |||
| which generates separate Transient EAP Keys (TEKs) for protecting | ||||
| EAP AKA packets, as well as a Master Session Key (MSK) for link | ||||
| layer security and an Extended Master Session Key (EMSK) for other | ||||
| purposes. On re-authentication, the same TEKs MUST be used for | ||||
| protecting EAP packets, but a new MSK and a new EMSK MUST be derived | ||||
| from the original MK and new values exchanged in the re- | ||||
| authentication. | ||||
| 0 1 2 3 | EAP AKA requires two TEKs for its own purposes, the authentication | |||
| 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 | key K_aut to be used with the AT_MAC attribute, and the encryption | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | key K_encr, to be used with the AT_ENCR_DATA attribute. The same | |||
| | AT_ENCR_DATA | Length | Reserved | | K_aut and K_encr keys are used in full authentication and subsequent | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | re-authentications. | |||
| | | | ||||
| . Encrypted Data . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The encryption key (K_encr) is derived is derived from the AKA | Key derivation is based on the random number generation specified in | |||
| integrity key (IK) and cipher key (CK), as specified in Section10. | NIST Federal Information Processing Standards (FIPS) Publication | |||
| The plaintext consists of nested EAP/AKA attributes. | 186-2 [PRF]. The pseudo-random number generator is specified in the | |||
| change notice 1 (2001 October 5) of [PRF] (Algorithm 1). As | ||||
| specified in the change notice (page 74), when Algorithm 1 is used | ||||
| as a general-purpose pseudo-random number generator, the "mod q" | ||||
| term in step 3.3 is omitted. The function G used in the algorithm is | ||||
| constructed via Secure Hash Standard as specified in Appendix 3.3 of | ||||
| the standard. It should be noted that the function G is very similar | ||||
| to SHA-1, but the message padding is different. Please refer to | ||||
| [PRF] for full details. For convenience, the random number algorithm | ||||
| with the correct modification is cited in Annex A. | ||||
| The encryption algorithm requires the length of the plaintext to be | EAP AKA Authentication 27 October, 2003 | |||
| a multiple of 16 bytes. The sender may need to include the | ||||
| AT_PADDING attribute as the last attribute within AT_ENCR_DATA. The | ||||
| AT_PADDING attribute is not included if the total length of other | ||||
| nested attributes within the AT_ENCR_DATA attribute is a multiple of | ||||
| 16 bytes. As usual, the Length of the Padding attribute includes the | ||||
| Attribute Type and Attribute Length fields. The Length of the | ||||
| Padding attribute is 4, 8 or 12 bytes. It is chosen so that the | ||||
| length of the value field of the AT_ENCR_DATA attribute becomes a | ||||
| multiple of 16 bytes. The actual pad bytes in the value field are | ||||
| set to zero (0x00) on sending. The recipient of the message MUST | ||||
| verify that the pad bytes are set to zero, and silently drop the | ||||
| message if this verification fails. The format of the AT_PADDING | ||||
| attribute is shown below. | ||||
| 0 1 2 3 | 160-bit XKEY and XVAL values are used, so b = 160. On each full | |||
| 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 | authentication, the Master Key is used as the initial secret seed- | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | key XKEY. The optional user input values (XSEED_j) in step 3.1 are | |||
| | AT_PADDING | Length | Padding... | | set to zero. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| 8. Messages | The resulting 320-bit random numbers x_0, x_1, ..., x_m-1 are | |||
| concatenated and partitioned into suitable-sized chunks and used as | ||||
| keys in the following order: K_encr (128 bits), K_aut (128 bits), | ||||
| Master Session Key (64 bytes), Extended Master Session Key (64 | ||||
| bytes). | ||||
| 8.1. EAP-Request/AKA-Challenge | On re-authentication, the same pseudo-random number generator can be | |||
| used to generate a new Master Session Key and new Initialization | ||||
| Vectors. The seed value XKEY' is calculated as follows: | ||||
| XKEY' = SHA1(Identity|counter|NONCE_S| MK) | ||||
| The format of the EAP-Request/AKA-Challenge packet is shown below. | In the formula above, the Identity denotes the re-authentication | |||
| identity, without any terminating null characters, from the | ||||
| AT_IDENTITY attribute of the EAP-Response/AKA-Identity packet, or, | ||||
| if EAP-Response/AKA-Identity was not used on re-authentication, the | ||||
| identity string from the EAP-Response/Identity packet. The counter | ||||
| denotes the counter value from AT_COUNTER attribute used in the EAP- | ||||
| Response/AKA-Reauthentication packet. The counter is used in network | ||||
| byte order. NONCE_S denotes the 16-byte NONCE_S value from the | ||||
| AT_NONCE_S attribute used in the EAP-Request/AKA-Reauthentication | ||||
| packet. The MK is the Master Key derived on the preceding full | ||||
| authentication. The pseudo-random number generator is run with the | ||||
| new seed value XKEY', and the resulting 320-bit random numbers x_0, | ||||
| x_1, ..., x_m-1 are concatenated and partitioned into 64-byte chunks | ||||
| and used as the new 64-byte Master Session Key and the new 64-byte | ||||
| Extended Master Session Key. | ||||
| EAP AKA Authentication June 2003 | The first 32 bytes of the MSK can be used as the Pairwise Master Key | |||
| (PMK) for IEEE 802.11i. | ||||
| 0 1 2 3 | When the RADIUS attributes specified in [RFC 2548] are used to | |||
| 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 | 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- | |||
| | Code | Identifier | Length | | SEND-KEY. In this case, only 64 bytes of keying material (the MSK) | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | are used. | |||
| | Type | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_RAND | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | RAND | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_AUTN | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | AUTN | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_IV | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Initialization Vector (optional) | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_ENCR_DATA | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Encrypted Data (optional) | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_CHECKCODE | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Checkcode (optional) | | ||||
| | | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The semantics of the fields is described below: | 5. Message Format and Protocol Extensibility | |||
| EAP AKA Authentication June 2003 | 5.1. Message Format | |||
| Code | As specified in [EAP], EAP packets begin with the Code, Identifiers, | |||
| Length, and Type fields, which are followed by EAP method specific | ||||
| Type-Data. The Code field in the EAP header is set to 1 for EAP | ||||
| requests, and to 2 for EAP Responses. The usage of the Length and | ||||
| Identifier fields in the EAP header is also specified in [EAP]. In | ||||
| EAP/AKA, the Type field is set to 23. | ||||
| 1 for Request | EAP AKA Authentication 27 October, 2003 | |||
| Identifier | In EAP/AKA, the Type-Data begins with an EAP/AKA header that | |||
| consists of a 1-octet Subtype field, and a 2-octet reserved field. | ||||
| The Subtype values used in EAP/AKA are defined in Section 8. The | ||||
| formats of the EAP header and the EAP/AKA header are shown below. | ||||
| See [5] | 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 | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Length | The rest of the Type-Data, immediately following the EAP/AKA header, | |||
| consists of attributes that are encoded in Type, Length, Value | ||||
| format. The figure below shows the generic format of an attribute. | ||||
| The length of the EAP Request packet. | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |Attribute Type | Length | Value... | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type | Attribute Type | |||
| 23 | Indicates the particular type of attribute. The attribute type | |||
| values are listed in Section 8. | ||||
| Subtype | Length | |||
| 1 for AKA-Challenge | Indicates the length of this attribute in multiples of 4 bytes. | |||
| The maximum length of an attribute is 1024 bytes. The length | ||||
| includes the Attribute Type and Length bytes. | ||||
| Reserved | Value | |||
| Set to zero when sending, ignored on reception. | The particular data associated with this attribute. This field is | |||
| always included and it is two or more bytes in length. The type | ||||
| and length fields determine the format and length of the value | ||||
| field. | ||||
| AT_RAND | Attributes numbered within the range 0 through 127 are called non- | |||
| skippable attributes. When an EAP/AKA peer encounters a non- | ||||
| skippable attribute type that the peer does not recognize, the peer | ||||
| MUST send the EAP-Response/AKA-Client-Error packet, and the | ||||
| authentication exchange terminates. If an EAP/AKA server encounters | ||||
| a non-skippable attribute that the server does not recognize, then | ||||
| the server sends the EAP Failure packet and the authentication | ||||
| exchange terminates. | ||||
| The value field of this attribute contains two reserved bytes | When an attribute numbered in the range 128 through 255 is | |||
| followed by the AKA RAND parameter, 16 bytes (128 bits). The | encountered but not recognized that particular attribute is ignored, | |||
| reserved bytes are set to zero when sending and ignored on | ||||
| reception. The AT_RAND attribute MUST be present in EAP- | ||||
| Request/AKA-Challenge. | ||||
| AT_AUTN | EAP AKA Authentication 27 October, 2003 | |||
| The value field of this attribute contains two reserved bytes | but the rest of the attributes and message data MUST still be | |||
| followed by the AKA AUTN parameter, 16 bytes (128 bits). The | processed. The Length field of the attribute is used to skip the | |||
| reserved bytes are set to zero when sending and ignored on | attribute value when searching for the next attribute. These | |||
| reception. The AT_AUTN attribute MUST be included. | attributes are called skippable attributes. | |||
| AT_IV | Unless otherwise specified, the order of the attributes in an EAP | |||
| AKA message is insignificant, and an EAP AKA implementation should | ||||
| not assume a certain order to be used. | ||||
| See Section 7.3. | Attributes can be encapsulated within other attributes. In other | |||
| words, the value field of an attribute type can be specified to | ||||
| contain other attributes. | ||||
| AT_ENCR_DATA | 5.2. Protocol Extensibility | |||
| See Section 7.3. The nested attributes that are included in the | EAP/AKA can be extended by specifying new attribute types. If | |||
| plaintext of AT_ENCR_DATA are described below. | skippable attributes are used, it is possible to extend the protocol | |||
| without breaking old implementations. As specified in Section 7.4, | ||||
| if new attributes are specified for EAP-Request/AKA-Identity or EAP- | ||||
| Response/AKA-Identity, then the AT_CHECKCODE MUST be used to | ||||
| integrity protect the new attributes. | ||||
| AT_CHECKCODE | When specifying new attributes, it should be noted that EAP/AKA does | |||
| not support message fragmentation. Hence, the sizes of the new | ||||
| extensions MUST be limited so that the maximum transfer unit (MTU) | ||||
| of the underlying lower layer is not exceeded. According to [EAP], | ||||
| lower layers must provide an EAP MTU of 1020 bytes or greater, so | ||||
| any extensions to EAP/AKA SHOULD NOT exceed the EAP MTU of 1020 | ||||
| bytes. | ||||
| The AT_CHECKCODE attribute is optional to include. See section | EAP/AKA packets do not include a version field. However, should | |||
| 7.2 | there be a reason to revise this protocol in the future, new non- | |||
| skippable or skippable attributes could be specified in order to | ||||
| implement revised EAP/AKA versions in a backward-compatible manner. | ||||
| It is possible to introduce version negotiation in the EAP- | ||||
| Request/AKA-Identity and EAP-Response/AKA-Identity messages by | ||||
| specifying new skippable attributes. | ||||
| EAP AKA Authentication June 2003 | 6. Messages | |||
| AT_MAC | This section specifies the messages used in EAP/AKA. It specifies | |||
| when a message may be transmitted or accepted, which attributes are | ||||
| allowed in a message, which attributes are required in a message, | ||||
| and other message specific details. Message format is specified in | ||||
| Section 5.1. | ||||
| AT_MAC MUST be included. In EAP-Request/AKA-Challenge, there is | 6.1. EAP-Request/AKA-Identity | |||
| no message-specific data covered by the MAC. See Section 7.1. | ||||
| In the EAP-Request/AKA-Challege message, the AT_IV, AT_ENCR_DATA and | The EAP/AKA-Identity roundtrip MAY used for obtaining the peer | |||
| AT_MAC attributes are used for Identity privacy and for | identity to the server. As discussed in Section 4.1, several AKA- | |||
| communicating the next re-authentication identity. The plaintext of | Identity rounds may be required in order to obtain a valid peer | |||
| the AT_ENCR_DATA value field consists of nested attributes, which | identity. | |||
| are shown below. Later versions of this protocol MAY specify | ||||
| additional attributes to be included within the encrypted data. | ||||
| 0 1 2 3 | EAP AKA Authentication 27 October, 2003 | |||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_NEXT_PS... | Length | Actual Pseudonym Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Next Pseudonym . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_NEXT_REAU..| Length | Actual Re-Auth Identity Length| | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Next Re-authentication Username . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_PADDING | Length | Padding... | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| AT_NEXT_PSEUDONYM | The server MUST include one of the following identity requesting | |||
| attributes: AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ, AT_ANY_ID_REQ. | ||||
| These three attributes are mutually exclusive, so the server MUST | ||||
| NOT include more than one of the attributes. | ||||
| This attribute is optional. The value field of this attribute | If the server has previously issued an EAP-Request/AKA-Identity | |||
| begins with a 2-byte actual pseudonym length, which specifies the | message with the AT_PERMANENT_ID_REQ attribute, and if the server | |||
| length of the pseudonym in bytes. This field is followed by a | has received a response from the peer, then the server MUST NOT | |||
| pseudonym user name, of the indicated actual length, that the | issue a new EAP-Request/AKA-Identity packet. | |||
| client can use in the next authentication, as described in | ||||
| Section 4.3. The user name does not include any terminating null | ||||
| characters. Because the length of the attribute must be a | ||||
| multiple of 4 bytes, the sender pads the pseudonym with zero | ||||
| bytes when necessary. | ||||
| AT_NEXT_REAUTH_ID | If the server has previously issued an EAP-Request/AKA-Identity | |||
| message with the AT_FULLAUTH_ID_REQ attribute, and if the server has | ||||
| received a response from the peer, then the server MUST NOT issue a | ||||
| new EAP-Request/AKA-Identity packet with the AT_ANY_ID_REQ or | ||||
| AT_FULLAUTH_ID_REQ attributes. | ||||
| The AT_NEXT_REAUTH_ID attribute is optional to include. The value | If the server has previously issued an EAP-Request/AKA-Identity | |||
| field of this attribute begins with a 2-byte actual re- | message with the AT_ANY_ID_REQ attribute, and if the server has | |||
| authentication identity length, which specifies the length of the | received a response from the peer, then the server MUST NOT issue a | |||
| re-authentication identity in bytes. This field is followed by a | new EAP-Request/AKA-Identity packet with the AT_ANY_ID_REQ. | |||
| re-authentication identity, of the indicated actual length, that | ||||
| EAP AKA Authentication June 2003 | This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA. | |||
| the client can use in the next re-authentication, as described in | 6.2. EAP-Response/AKA-Identity | |||
| Section 5. The re-authentication identity includes both a | ||||
| username portion and a realm name portion. The re-authentication | ||||
| identity does not include any terminating null characters. | ||||
| Because the length of the attribute must be a multiple of 4 | ||||
| bytes, the sender pads the re-authentication identity with zero | ||||
| bytes when necessary. | ||||
| AT_PADDING | The peer sends EAP-Response/AKA-Identity in response to a valid EAP- | |||
| Request/AKA-Identity from the server. | ||||
| AT_PADDING is optional to include. See Section 7.3. | The peer MUST include the AT_IDENTITY attribute. The usage of | |||
| AT_IDENITY is defined in Section 4.1. | ||||
| 8.2. EAP-Response/AKA-Challenge | This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA. | |||
| The format of the EAP-Response/AKA-Challenge packet is shown below. | 6.3. EAP-Request/AKA-Challenge | |||
| Later versions of this protocol MAY make use of the AT_ENCR_DATA and | The server sends the EAP-Request/AKA-Challenge on full | |||
| AT_IV attributes in this message to include encrypted (skippable) | authentication after successfully obtaining the subscriber identity. | |||
| attributes. AT_MAC, AT_ENCR_DATA and AT_IV attributes are not shown | ||||
| in the figure below. If present, they are processed as in EAP- | ||||
| Request/AKA-Challenge packet. The EAP server MUST process EAP- | ||||
| Response/AKA-Challenge messages that include these attributes even | ||||
| if the server did not implement these optional attributes. | ||||
| 0 1 2 3 | The AT_RAND attribute MUST be included. | |||
| 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 | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_RES | Length | RES Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | ||||
| | | | ||||
| | RES | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_CHECKCODE | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Checkcode (optional) | | ||||
| | | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| EAP AKA Authentication June 2003 | AT_MAC MUST be included. In EAP-Request/AKA-Challenge, there is no | |||
| message-specific data covered by the MAC, see Section 7.2. | ||||
| The semantics of the fields is described below: | The AT_CHECKCODE attribute MAY be included, and in certain cases | |||
| specified in Section 7.4, it MUST be included. | ||||
| Code | The EAP-Request/AKA-Challenge packet MAY include encrypted | |||
| attributes for identity privacy and for communicating the next re- | ||||
| authentication identity. In this case, the AT_IV and AT_ENCR_DATA | ||||
| attributes are included (Section 7.3). | ||||
| 2 for Response | The plaintext of the AT_ENCR_DATA value field consist of nested | |||
| attributes. The nested attributes MAY include AT_PADDING (as | ||||
| specified in Section 7.3). If the server supports identity privacy | ||||
| Identifier | EAP AKA Authentication 27 October, 2003 | |||
| See [5] | and wants to communicate a pseudonym to the peer for the next full | |||
| authentication, then the nested encrypted attributes include the | ||||
| AT_NEXT_PSEUDONYM attribute. If the server supports re- | ||||
| authentication and wants to communicate a re-authentication identity | ||||
| to the peer, then the nested encrypted attributes include the | ||||
| AT_NEXT_REAUTH_ID attribute. Later versions of this protocol MAY | ||||
| specify additional attributes to be included within the encrypted | ||||
| data. | ||||
| Length | 6.4. EAP-Response/AKA-Challenge | |||
| The length of the EAP Response packet. | The peer sends EAP-Response/AKA-Challenge in response to a valid | |||
| EAP-Request/AKA-Challenge. | ||||
| Type | The AT_MAC attribute MUST be included. In EAP-Response/AKA- | |||
| Challenge, there is no message-specific data covered by the MAC, see | ||||
| Section 7.2. | ||||
| 23 | The AT_RES attribute MUST be included. | |||
| Subtype | The AT_CHECKCODE attribute MAY be included, and in certain cases | |||
| specified in Section 7.4, it MUST be included. | ||||
| 1 for AKA-Challenge | Later versions of this protocol MAY make use of the AT_ENCR_DATA and | |||
| AT_IV attributes in this message to include encrypted (skippable) | ||||
| attributes. The EAP server MUST process EAP-Response/AKA-Challenge | ||||
| messages that include these attributes even if the server did not | ||||
| implement these optional attributes. | ||||
| Reserved | 6.5. EAP-Response/AKA-Authentication-Reject | |||
| Set to zero when sending, ignored on reception. | The peer sends the EAP-Response/AKA-Authentication-Reject packet if | |||
| it does not accept the AUTN parameter. This version of the protocol | ||||
| does not specify any attributes for this message. Future versions of | ||||
| the protocol MAY specify attributes for this message. | ||||
| AT_RES | The AT_MAC, AT_ENCR_DATA, or AT_IV attributes MUST NOT be used in | |||
| this message. | ||||
| This attribute MUST be included in EAP-Response/AKA-Challenge. | 6.6. EAP-Response/AKA-Synchronization-Failure | |||
| The value field of this attribute begins with the 2-byte RES | ||||
| Length, which is identifies the exact length of the RES in bits. | ||||
| The RES length is followed by the UMTS AKA RES parameter. | ||||
| According to the specification [13] the length of the AKA RES can | ||||
| vary between 32 and 128 bits. Because the length of the AT_RES | ||||
| attribute must be a multiple of 4 bytes, the sender pads the RES | ||||
| with zero bits where necessary. | ||||
| AT_CHECKCODE | The peer sends the EAP-Response/AKA-Synchronization-Failure, when | |||
| the sequence number in the AUTN parameter is incorrect. | ||||
| The AT_CHECKCODE attribute is optional to include. See section | The peer MUST include the AT_AUTS attribute. Future versions of the | |||
| 7.2 | protocol MAY specify other additional attributes for this message. | |||
| AT_MAC | The AT_MAC, AT_ENCR_DATA, or AT_IV attributes MUST NOT be used in | |||
| this message. | ||||
| AT_MAC MUST be included. In EAP-Response/AKA-Challenge, there is | 6.7. EAP-Request/AKA-Reauthentication | |||
| no message-specific data covered by the MAC. See Section 7.1. | ||||
| 8.3. EAP-Response/AKA-Authentication-Reject | EAP AKA Authentication 27 October, 2003 | |||
| The format of the EAP-Response/AKA-Authentication-Reject packet is | The server sends the EAP-Request/AKA-Reauthentication message if it | |||
| shown below. | wants to use re-authentication, and if it has received a valid re- | |||
| authentication identity in EAP-Response/Identity or EAP- | ||||
| Response/AKA-Identity. | ||||
| EAP AKA Authentication June 2003 | The AT_MAC attribute MUST be included. No message-specific data is | |||
| included in the MAC calculation, see Section 7.2. | ||||
| 0 1 2 3 | The AT_CHECKCODE attribute MAY be included, and in certain cases | |||
| 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 | specified in Section 7.4, it MUST be included. | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Code | Identifier | Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The semantics of the fields is described below: | The AT_IV and AT_ENCR_DATA attributes MUST be included. The | |||
| plaintext consists of the following nested encrypted attributes, | ||||
| which MUST be included: AT_COUNTER and AT_NONCE_S. In addition, the | ||||
| nested encrypted attributes MAY include the following attributes: | ||||
| AT_NEXT_REAUTH_ID and AT_PADDING. | ||||
| Code | 6.8. EAP-Response/AKA-Reauthentication | |||
| 2 for Response | The client sends the EAP-Response/AKA-Reauthentication packet in | |||
| response to a valid EAP-Request/AKA-Reauthentication. | ||||
| Identifier | The AT_MAC attribute MUST be included. For EAP-Response/AKA- | |||
| Reauthentication, the MAC code is calculated over the following | ||||
| data: EAP packet| NONCE_S. The EAP packet is represented as | ||||
| specified in Section 5.1. It is followed by the 16-byte NONCE_S | ||||
| value from the server's AT_NONCE_S attribute. | ||||
| See [5] | The AT_CHECKCODE attribute MAY be included, and in certain cases | |||
| specified in Section 7.4, it MUST be included. | ||||
| Length | The AT_IV and AT_ENCR_DATA attributes MUST be included. The nested | |||
| encrypted attributes MUST include the AT_COUNTER attribute. The | ||||
| AT_COUNTER_TOO_SMALL attribute MAY be included in the nested | ||||
| encrypted attributes, and it is included in cases specified in | ||||
| Section 4.2. The AT_PADDING attribute MAY be included. | ||||
| The length of the EAP Response packet. | 6.9. EAP-Response/AKA-Client-Error | |||
| Type | The peer sends EAP-Response/AKA-Client-Error in error cases, as | |||
| specified in Section 4.4.1. | ||||
| 23 | The AT_CLIENT_ERROR_CODE attribute MUST be included. | |||
| The AT_MAC, AT_IV, or AT_ENCR_DATA attributes MUST NOT be used with | ||||
| this packet. | ||||
| Subtype | 6.10. EAP-Request/AKA-Notification | |||
| 2 for AKA-Authentication-Reject | The usage of this message is specified in Section 4.3. | |||
| Reserved | The AT_NOTIFICATION attribute MUST be included. | |||
| Set to zero on sending, ignored on reception. | EAP AKA Authentication 27 October, 2003 | |||
| 8.4. EAP-Response/AKA-Synchronization-Failure | The AT_MAC attribute is included in cases discussed in Section 4.3. | |||
| No message-specific data is included in the MAC calculation. See | ||||
| Section 7.2. | ||||
| The format of the EAP-Response/AKA-Synchronization-Failure packet is | Later versions of this protocol MAY make use of the AT_ENCR_DATA and | |||
| shown below. | AT_IV attributes in this message to include encrypted (skippable) | |||
| attributes. These attributes MAY be included only if the P bit of | ||||
| the notification code in AT_NOTIFICATION is set to zero. | ||||
| 0 1 2 3 | 6.11. EAP-Response/AKA-Notification | |||
| 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 | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| | ||||
| | AT_AUTS | Length = 4 | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | ||||
| | AUTS | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| EAP AKA Authentication June 2003 | The usage of this message is specified in Section 4.3. Because this | |||
| packet is only an acknowledgement of EAP-Request/AKA-Notification, | ||||
| it does not contain any mandatory attributes. | ||||
| The semantics of the fields is described below: | The AT_MAC attribute is included in cases described in Section 4.3. | |||
| No message-specific data is included in the MAC calculation. See | ||||
| Section 7.2. | ||||
| Code | Later versions of this protocol MAY make use of the AT_ENCR_DATA and | |||
| AT_IV attributes in this message to include encrypted (skippable) | ||||
| attributes. These attributes MAY be included only if the P bit of | ||||
| the notification code in the AT_NOTIFICATION attribute of the | ||||
| server's EAP-Request/AKA-Notification packet is set to zero. | ||||
| 2 for Response | 7. Attributes | |||
| Identifier | This section specifies the format of message attributes. The | |||
| attribute type numbers are specified in Section 8. | ||||
| See [5] | 7.1. Table of Attributes | |||
| Length | The following table provides a guide to which attributes may be | |||
| found in which kinds of messages, and in what quantity. Messages are | ||||
| denoted with numbers in parentheses as follows: (1) EAP-Request/AKA- | ||||
| Identity, (2) EAP-Response/AKA-Identity, (3) EAP-Request/AKA- | ||||
| Challenge, (4) EAP-Response/AKA-Challenge, (5) EAP-Request/AKA- | ||||
| Notification, (6) EAP-Response/AKA-Notification, (7) EAP- | ||||
| Response/AKA-Client-Error (8) EAP-Request/AKA-Reauthentication, (9) | ||||
| EAP-Response/AKA-Re-authentication, (10) EAP-Response/AKA- | ||||
| Authentication-Reject, and (11) EAP-Response/AKA-Synchronization- | ||||
| Failure. The column denoted with "E" indicates whether the attribute | ||||
| is a nested attribute that MUST be included within AT_ENCR_DATA. | ||||
| The length of the EAP Response packet, 20. | "0" indicates that the attribute MUST NOT be included in the | |||
| message, "1" indicates that the attribute MUST be included in the | ||||
| message, "0-1" indicates that the attribute is sometimes included in | ||||
| the message, and "0*" indicates that the attribute is not included | ||||
| in the message in cases specified in this document, but MAY be | ||||
| included in the future versions of the protocol. | ||||
| Type | EAP AKA Authentication 27 October, 2003 | |||
| 23 | Attribute (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)(11) E | |||
| AT_MAC 0 0 1 1 0-1 0-1 0 1 1 0 0 N | ||||
| AT_IV 0 0 0-1 0* 0* 0* 0 1 1 0 0 N | ||||
| AT_ENCR_DATA 0 0 0-1 0* 0* 0* 0 1 1 0 0 N | ||||
| AT_PADDING 0 0 0-1 0* 0* 0* 0 0-1 0-1 0 0 Y | ||||
| AT_CHECKCODE 0 0 0-1 0-1 0 0 0 0-1 0-1 0 0 N | ||||
| AT_PERMANENT_ID_REQ 0-1 0 0 0 0 0 0 0 0 0 0 N | ||||
| AT_ANY_ID_REQ 0-1 0 0 0 0 0 0 0 0 0 0 N | ||||
| AT_FULLAUTH_ID_REQ 0-1 0 0 0 0 0 0 0 0 0 0 N | ||||
| AT_IDENTITY 0 0-1 0 0 0 0 0 0 0 0 0 N | ||||
| AT_RAND 0 0 1 0 0 0 0 0 0 0 0 N | ||||
| AT_AUTN 0 0 1 0 0 0 0 0 0 0 0 N | ||||
| AT_RES 0 0 0 1 0 0 0 0 0 0 0 N | ||||
| AT_AUTS 0 0 0 0 0 0 0 0 0 0 1 N | ||||
| AT_NEXT_PSEUDONYM 0 0 0-1 0 0 0 0 0 0 0 0 Y | ||||
| AT_NEXT_REAUTH_ID 0 0 0-1 0 0 0 0 0-1 0 0 0 Y | ||||
| AT_COUNTER 0 0 0 0 0 0 0 1 1 0 0 Y | ||||
| AT_COUNTER_TOO_SMALL 0 0 0 0 0 0 0 0 0-1 0 0 Y | ||||
| AT_NONCE_S 0 0 0 0 0 0 0 1 0 0 0 Y | ||||
| AT_NOTIFICATION 0 0 0 0 1 0 0 0 0 0 0 N | ||||
| AT_CLIENT_ERROR_CODE 0 0 0 0 0 0 1 0 0 0 0 N | ||||
| Subtype | It should be noted that attributes AT_PERMANENT_ID_REQ, | |||
| AT_ANY_ID_REQ and AT_FULLAUTH_ID_REQ are mutually exclusive, so that | ||||
| only one of them can be included at the same time. If one of the | ||||
| attributes AT_IV and AT_ENCR_DATA is included, then both of the | ||||
| attributes MUST be included. | ||||
| 4 for AKA-Synchronization-Failure | 7.2. AT_MAC | |||
| AT_AUTS | The AT_MAC attribute is used for EAP/AKA message authentication. | |||
| Section 6 specifies which messages AT_MAC MUST be included. | ||||
| This attribute MUST be included in EAP-Response/AKA- | The value field of the AT_MAC attribute contains two reserved bytes | |||
| Synchronization-Failure. The value field of this attribute | followed by a keyed message authentication code (MAC). The MAC is | |||
| contains the AKA AUTS parameter, 112 bits (14 bytes). | calculated over the whole EAP packet, concatenated with optional | |||
| message-specific data, with the exception that the value field of | ||||
| the MAC attribute is set to zero when calculating the MAC. The EAP | ||||
| packet includes the EAP header that begins with the Code field, the | ||||
| EAP/AKA header that begins with the Subtype field, and all the | ||||
| attributes, as specified in Section 5.1. The reserved bytes in | ||||
| AT_MAC are set to zero when sending and ignored on reception. The | ||||
| contents of the message-specific data that may be included in the | ||||
| MAC calculation are specified separately for each EAP/AKA message in | ||||
| Section 6. | ||||
| 8.5. EAP-Request/AKA-Identity | The format of the AT_MAC attribute is shown below. | |||
| The format of the EAP-Request/AKA-Identity packet is shown below. | EAP AKA Authentication 27 October, 2003 | |||
| 0 1 2 3 | 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 | 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 | | | AT_MAC | Length = 5 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |AT_PERM..._REQ | Length = 1 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |AT_FULL..._REQ | Length = 1 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |AT_ANY_ID_REQ | Length = 1 | Reserved | | | | | |||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The semantics of the fields is described below: | The MAC algorithm is HMAC-SHA1-128 [RFC 2104] keyed hash value. (The | |||
| HMAC-SHA1-128 value is obtained from the 20-byte HMAC-SHA1 value by | ||||
| Code | truncating the output to 16 bytes. Hence, the length of the MAC is | |||
| 16 bytes.) The derivation of the authentication key (K_aut) used in | ||||
| 1 for Request | the calculation of the MAC is specified in Section 4.5. | |||
| EAP AKA Authentication June 2003 | ||||
| Identifier | ||||
| See [5] | ||||
| Length | ||||
| The length of the EAP Request packet. | ||||
| Type | ||||
| 23 | ||||
| Subtype | ||||
| 5 for AKA-Identity | ||||
| Reserved | ||||
| Set to zero on sending, ignored on reception. | ||||
| AT_PERMANENT_ID_REQ | ||||
| The AT_PERMANENT_ID_REQ attribute is optional to include and it | ||||
| is included in the cases defined in Section 4.3. It MUST NOT be | ||||
| included if AT_ANY_ID_REQ or AT_FULLAUTH_ID_REQ is included. The | ||||
| value field only contains two reserved bytes, which are set to | ||||
| zero on sending and ignored on reception. | ||||
| AT_FULLAUTH_ID_REQ | ||||
| The AT_FULLAUTH_ID_REQ attribute is optional to include and it is | When the AT_MAC attribute is included in an EAP/AKA message, the | |||
| included in the cases defined in Section 4.2. It MUST NOT be | recipient MUST process the AT_MAC attribute before looking at any | |||
| included if AT_ANY_ID_REQ or AT_PERMANENT_ID_REQ is included. The | other attributes. If the message authentication code is invalid, | |||
| value field only contains two reserved bytes, which are set to | then the recipient MUST ignore all other attributes in the message | |||
| zero on sending and ignored on reception. | and operate as specified in Section 4.4. | |||
| AT_ANY_ID_REQ | 7.3. AT_IV, AT_ENCR_DATA and AT_PADDING | |||
| The AT_ANY_ID_REQ attribute is optional and it is included in the | AT_IV and AT_ENCR_DATA attributes can be used to transmit encrypted | |||
| cases defined in Section 4.2. It MUST NOT be included if | information between the EAP/SIM peer and server. | |||
| AT_PERMANENT_ID_REQ or AT_FULLAUTH_ID_REQ is included. The value | ||||
| field only contains two reserved bytes, which are set to zero on | ||||
| sending and ignored on reception. | ||||
| 8.6. EAP-Response/AKA-Identity | The value field of AT_IV contains two reserved bytes followed by a | |||
| 16-byte initialization vector required by the AT_ENCR_DATA | ||||
| attribute. The reserved bytes are set to zero when sending and | ||||
| ignored on reception. The AT_IV attribute MUST be included if and | ||||
| only if the AT_ENCR_DATA is included. Section 4.4 specifies the | ||||
| operation if a packet that does not meet this condition is | ||||
| encountered. | ||||
| The format of the EAP-Response/AKA-Identity packet is shown below. | The sender of the AT_IV attribute chooses the initialization vector | |||
| by random. The sender MUST NOT reuse the initialization vector value | ||||
| from previous EAP AKA packets and the sender MUST choose it freshly | ||||
| for each AT_IV attribute. The sender SHOULD use a good source of | ||||
| randomness to generate the initialization vector. Please see [RFC | ||||
| 1750] for more information about generating random numbers for | ||||
| security applications. The format of AT_IV is shown below. | ||||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| 0 1 2 3 | 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 | 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 | | | AT_IV | Length = 5 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Subtype | Reserved | | | | | |||
| | Initialization Vector | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_IDENTITY | Length | Actual Identity Length | | ||||
| The value field of the AT_ENCR_DATA attribute consists of two | ||||
| reserved bytes followed by cipher text bytes encrypted using the | ||||
| Advanced Encryption Standard (AES) [AES] in the Cipher Block | ||||
| Chaining (CBC) mode of operation using the initialization vector | ||||
| from the AT_IV attribute. The reserved bytes are set to zero when | ||||
| sending and ignored on reception. Please see [CBC] for a description | ||||
| of the CBC mode. The format of the AT_ENCR_DATA attribute 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_ENCR_DATA | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . Current Identity . | . Encrypted Data . | |||
| . . | . . | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The semantics of the fields is described below: | The derivation of the encryption key (K_encr) is specified in | |||
| Section 4.5. | ||||
| Code | ||||
| 2 for Response | The plaintext consists of nested EAP/AKA attributes. | |||
| Identifier | The encryption algorithm requires the length of the plaintext to be | |||
| a multiple of 16 bytes. The sender may need to include the | ||||
| AT_PADDING attribute as the last attribute within AT_ENCR_DATA. The | ||||
| AT_PADDING attribute is not included if the total length of other | ||||
| nested attributes within the AT_ENCR_DATA attribute is a multiple of | ||||
| 16 bytes. As usual, the Length of the Padding attribute includes the | ||||
| Attribute Type and Attribute Length fields. The length of the | ||||
| Padding attribute is 4, 8 or 12 bytes. It is chosen so that the | ||||
| length of the value field of the AT_ENCR_DATA attribute becomes a | ||||
| multiple of 16 bytes. The actual pad bytes in the value field are | ||||
| set to zero (0x00) on sending. The recipient of the message MUST | ||||
| verify that the pad bytes are set to zero. If this verification | ||||
| fails on the peer, then it MUST send the EAP-Response/AKA-Client- | ||||
| Error packet with the error code "unable to process packet" to | ||||
| terminate the authentication exchange. If this verification fails on | ||||
| the server, then the server sends EAP Failure, and the | ||||
| authentication exchange terminates. The format of the AT_PADDING | ||||
| attribute is shown below. | ||||
| See [5] | EAP AKA Authentication 27 October, 2003 | |||
| Length | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_PADDING | Length | Padding... | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The length of the EAP Response packet. | 7.4. AT_CHECKCODE | |||
| Type | The AT_MAC attribute is not used in the very first EAP/AKA messages | |||
| during the AKA-Identity round, because keying material has not been | ||||
| derived yet. The peer and the server may exchange one or more pairs | ||||
| of EAP/AKA messages of the Subtype AKA-Identity before keys are | ||||
| derived and before the AT_MAC attribute can be applied. The EAP/AKA- | ||||
| Identity messages may also be used upon re-authentication. | ||||
| 23 | The AT_CHECKCODE attribute MAY be used to protect the EAP/AKA- | |||
| Identity messages. AT_CHECKCODE is included in EAP-Request/AKA- | ||||
| Challenge and/or EAP-Response/AKA-Challenge upon full | ||||
| authentication. In re-authentication, AT_CHECKCODE MAY be included | ||||
| in EAP-Request/AKA-Reauthentication and/or EAP-Response/AKA- | ||||
| Reauthentication. Because the AT_MAC attribute is used in these | ||||
| messages, AT_CHECKCODE will be integrity protected with AT_MAC. | ||||
| The format of the AT_CHECKCODE attribute is shown below. | ||||
| Subtype | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_CHECKCODE | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Checkcode (0 or 20 bytes) | | ||||
| | | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| 5 for AKA-Identity | The value field of AT_CHECKCODE begins with two reserved bytes, | |||
| which may be followed by a 20-byte checkcode. If the checkcode is | ||||
| not included in AT_CHECKCODE, then the attribute indicates that no | ||||
| EAP/AKA-Identity messages were exchanged. This may occur in both | ||||
| full authentication and re-authentication. The reserved bytes are | ||||
| set to zero when sending and ignored on reception. | ||||
| Reserved | The checkcode is a hash value, calculated with SHA1 [SHA-1], over | |||
| all EAP-Request/AKA-Identity and EAP-Response/ AKA-Identity packets | ||||
| exchanged in this authentication exchange. The packets are included | ||||
| in the order that they were transmitted, that is, starting with the | ||||
| first EAP-Request/ AKA-Identity message, followed by the | ||||
| Set to zero on sending, ignored on reception. | EAP AKA Authentication 27 October, 2003 | |||
| AT_IDENTITY | corresponding EAP-Response/ AKA-Identity, followed by the second | |||
| EAP-Request/ AKA-Identity (if used) etc. | ||||
| The AT_IDENTITY attribute is optional to include and it is | EAP packets are included in the hash calculation "as-is", as they | |||
| included in cases defined in Section 4.2 and 4.3. The value field | were transmitted or received. All reserved bytes, padding bytes etc. | |||
| of this attribute begins with 2-byte actual identity length, | that are specified for various attributes are included as such, and | |||
| which specifies the length of the identity in bytes. This field | the receiver must not reset them to zero. No delimiter bytes, | |||
| is followed by the subscriber identity of the indicated actual | padding or any other framing are included between the EAP packets | |||
| length, in the same Network Access Identifier format that is used | when calculating the checkcode. | |||
| in EAP-Response/Identity, i.e. including the NAI realm portion. | ||||
| The identity is the permanent identity, a pseudonym identity or a | ||||
| re-authentication identity. The identity format is specified in | ||||
| Section 4.1. The identity does not include any terminating null | ||||
| characters. Because the length of the attribute must be a | ||||
| EAP AKA Authentication June 2003 | Messages are included in request/response pairs; in other words only | |||
| full "round trips" are included. Packets that are silently discarded | ||||
| are not included. The EAP server must only include an EAP- | ||||
| Request/AKA-Identity in the calculation once it has received a | ||||
| corresponding response, with the same Identifier value. | ||||
| Retransmissions or requests to which the server does not receive | ||||
| response are not included. | ||||
| multiple of 4 bytes, the sender pads the identity with zero bytes | The peer must include the EAP-Request/AKA-Identity and the | |||
| when necessary. | corresponding response in the calculation only if the peer receives | |||
| a subsequent EAP-Request/AKA-Challenge, or a follow-up EAP- | ||||
| Request/AKA-Identity with different attributes (attribute types) | ||||
| than in the first EAP-Request/AKA-Identity. After sending EAP- | ||||
| Response/AKA-Identity, if the peer receives another EAP-Request/AKA- | ||||
| Identity with the same attributes as in the previous request, then | ||||
| the peer's response to the first request must have been lost. In | ||||
| this case the peer must not include the first request and its | ||||
| response in the calculation of the checkcode. | ||||
| 8.7. EAP-Request/AKA-Reauthentication | The AT_CHECKCODE attribute is optional to implement. It is specified | |||
| in order to allow protecting the EAP/ AKA-Identity messages and any | ||||
| future extensions to them. The implementation of AT_CHECKCODE is | ||||
| RECOMMENDED. | ||||
| The format of the EAP-Request/AKA-Reauthentication packet is shown | If the receiver of AT_CHECKCODE implements this attribute, then the | |||
| below. | receiver MUST check that the checkcode is correct. If the checkcode | |||
| is invalid, the receiver must operate as specified in Section 4.4. | ||||
| 0 1 2 3 | If the EAP/AKA-Identity messages are extended with new attributes | |||
| 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 | then AT_CHECKCODE MUST be implemented and used. More specifically, | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | if the server includes any other attributes than | |||
| | Code | Identifier | Length | | AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ or AT_ANY_ID_REQ in the EAP- | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request/AKA-Identity packet, then the server MUST include | |||
| | Type | Subtype | Reserved | | AT_CHECKCODE in EAP-Request/AKA-Challenge or EAP-Request/AKA- | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reauthentication. If the peer includes any other attributes than | |||
| | AT_IV | Length = 5 | Reserved | | AT_IDENTITY in the EAP-Response/AKA-Identity message, then the peer | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MUST include AT_CHECKCODE in EAP-Response/AKA-Challenge or EAP- | |||
| | | | Response/AKA-Reauthentication. | |||
| | Initialization Vector | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_ENCR_DATA | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Encrypted Data . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_CHECKCODE | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Checkcode (optional) | | ||||
| | | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Code | If the server implements the processing of any other attribute than | |||
| AT_IDENTITY for the EAP-Response/AKA-Identity message, then the | ||||
| server MUST implement AT_CHECKCODE. In this case, if the server | ||||
| receives any other attribute than AT_IDENTITY in the EAP- | ||||
| Response/AKA-Identity message, then the server MUST check that | ||||
| 1 for Request | EAP AKA Authentication 27 October, 2003 | |||
| Identifier | AT_CHECKCODE is present in EAP-Response/AKA-Challenge or EAP- | |||
| Response/AKA-Reauthentication. The operation when a mandatory | ||||
| attribute is missing is specified in Section 4.4. | ||||
| See [5]. | Similarly, if the peer implements the processing of any other | |||
| attribute than AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ or | ||||
| AT_ANY_ID_REQ for the EAP-Request/AKA-Identity packet, then the peer | ||||
| MUST implement AT_CHECKCODE. In this case, if the peer receives any | ||||
| other attribute than AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ or | ||||
| AT_ANY_ID_REQ in the EAP-Request/AKA-Identity packet, then the peer | ||||
| MUST check that AT_CHECKCODE is present in EAP-Request/AKA-Challenge | ||||
| or EAP-Request/AKA-Reauthentication. The operation when a mandatory | ||||
| attribute is missing is specified in Section 4.4. | ||||
| EAP AKA Authentication June 2003 | 7.5. AT_PERMANENT_ID_REQ | |||
| Length | The format of the AT_PERMANENT_ID_REQ attribute is shown below. | |||
| The length of the EAP packet. | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |AT_PERM..._REQ | Length = 1 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type | The use of the AT_PERMANENT_ID_REQ is defined in Section 4.1. The | |||
| value field only contains two reserved bytes, which are set to zero | ||||
| on sending and ignored on reception. | ||||
| 23 | 7.6. AT_ANY_ID_REQ | |||
| Subtype | The format of the AT_ANY_ID_REQ attribute is shown below. | |||
| 13 | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |AT_ANY_ID_REQ | Length = 1 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Reserved | The use of the AT_ANY_ID_REQ is defined in Section 4.1. The value | |||
| field only contains two reserved bytes, which are set to zero on | ||||
| sending and ignored on reception. | ||||
| Set to zero when sending, ignored on reception. | 7.7. AT_FULLAUTH_ID_REQ | |||
| AT_IV | The format of the AT_FULLAUTH_ID_REQ attribute is shown below. | |||
| The AT_IV attribute is MUST be included. See Section 7.3. | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |AT_ANY_ID_REQ | Length = 1 | Reserved | | ||||
| +---------------+---------------+-------------------------------+ | ||||
| AT_ENCR_DATA | EAP AKA Authentication 27 October, 2003 | |||
| The AT_ENCR_DATA attribute MUST be included. See Section 7.3. The | The use of the AT_FULLAUTH_ID_REQ is defined in Section 4.1. The | |||
| plaintext consists of nested attributes as described below. | value field only contains two reserved bytes, which are set to zero | |||
| on sending and ignored on reception. | ||||
| AT_CHECKCODE | 7.8. AT_IDENTITY | |||
| The AT_CHECKCODE attribute is optional to include. See section | The format of the AT_IDENTITY attribute is shown below. | |||
| 7.2 | ||||
| AT_MAC | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_IDENTITY | Length | Actual Identity Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Identity . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| AT_MAC MUST be included. No message-specific data is included in | The use of the AT_IDENTITY is defined in Section 4.1. The value | |||
| the MAC calculation. See Section 7.1. | field of this attribute begins with 2-byte actual identity length, | |||
| which specifies the length of the identity in bytes. This field is | ||||
| followed by the subscriber identity of the indicated actual length. | ||||
| The identity is the permanent identity, a pseudonym identity or a | ||||
| re-authentication identity. The identity format is specified in | ||||
| Section 4.1.1. The same identity format is used in the AT_IDENTITY | ||||
| attribute and the EAP-Response/Identity packet, with the exception | ||||
| that the peer MUST NOT decorate the identity it includes in | ||||
| AT_IDENTITY. The identity does not include any terminating null | ||||
| characters. Because the length of the attribute must be a multiple | ||||
| of 4 bytes, the sender pads the identity with zero bytes when | ||||
| necessary. | ||||
| The AT_IV and AT_ENCR_DATA attributes are used for communicating | 7.9. AT_RAND | |||
| encrypted attributes. The plaintext of the AT_ENCR_DATA value field | ||||
| consists of nested attributes, which are shown below. | ||||
| EAP AKA Authentication June 2003 | The format of the AT_RAND attribute is shown below. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_COUNTER | Length = 1 | Counter | | | AT_RAND | Length = 5 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_NONCE_S | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | | | ||||
| | NONCE_S | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_NEXT_REAU..| Length | Actual Re-Auth Identity Length| | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . Next Re-authentication Username . | | RAND | | |||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_PADDING | Length | Padding... | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | | | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| AT_COUNTER | The value field of this attribute contains two reserved bytes | |||
| followed by the AKA RAND parameter, 16 bytes (128 bits). The | ||||
| The AT_COUNTER attribute MUST be included. The value field | reserved bytes are set to zero when sending and ignored on | |||
| consists of a 16-bit unsigned integer counter value, represented | reception. | |||
| in network byte order. | ||||
| AT_NONCE_S | EAP AKA Authentication 27 October, 2003 | |||
| The AT_NONCE_S attribute MUST be included. The value field | 7.10. AT_AUTN | |||
| contains two reserved bytes followed by a random number generated | ||||
| by the server (16 bytes) freshly for this EAP/AKA re- | ||||
| authentication. The random number is used as challenge for the | ||||
| client and also a seed value for the new keying material. The | ||||
| reserved bytes are set to zero upon sending and ignored upon | ||||
| reception. | ||||
| AT_NEXT_REAUTH_ID | The format of the AT_AUTN attribute is shown below. | |||
| The AT_NEXT_REAUTH_ID attribute is optional to include. The | 0 1 2 3 | |||
| attribute is described in Section 8.1. | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_AUTN | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | AUTN | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| AT_PADDING | The value field of this attribute contains two reserved bytes | |||
| followed by the AKA AUTN parameter, 16 bytes (128 bits). The | ||||
| reserved bytes are set to zero when sending and ignored on | ||||
| reception. | ||||
| The AT_PADDING attribute is optional to include. See section 7.3 | 7.11. AT_RES | |||
| 8.8. EAP-Response/AKA-Reauthentication | The format of the AT_RES attribute is shown below. | |||
| EAP AKA Authentication June 2003 | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_RES | Length | RES Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | ||||
| | | | ||||
| | RES | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The format of the EAP-Response/AKA-Reauthentication packet is shown | The value field of this attribute begins with the 2-byte RES Length, | |||
| below. | which is identifies the exact length of the RES in bits. The RES | |||
| length is followed by the UMTS AKA RES parameter. According to [TS | ||||
| 33.105] the length of the AKA RES can vary between 32 and 128 bits. | ||||
| Because the length of the AT_RES attribute must be a multiple of 4 | ||||
| bytes, the sender pads the RES with zero bits where necessary. | ||||
| 0 1 2 3 | 7.12. AT_AUTS | |||
| 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 | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_IV | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Initialization Vector | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_ENCR_DATA | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Encrypted Data . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_CHECKCODE | Length | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | Checkcode (optional) | | ||||
| | | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Code | The format of the AT_AUTS attribute is shown below. | |||
| 2 for Response | EAP AKA Authentication 27 October, 2003 | |||
| Identifier | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| | ||||
| | AT_AUTS | Length = 4 | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | | ||||
| | AUTS | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| See [5]. | The value field of this attribute contains the AKA AUTS parameter, | |||
| 112 bits (14 bytes). | ||||
| Length | 7.13. AT_NEXT_PSEUDONYM | |||
| The length of the EAP packet. | The format of the AT_NEXT_PSEUDONYM attribute is shown below. | |||
| EAP AKA Authentication June 2003 | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_NEXT_PSEU..| Length | Actual Pseudonym Length | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Next Pseudonym . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type | The value field of this attribute begins with 2-byte actual | |||
| pseudonym length which specifies the length of the following | ||||
| pseudonym in bytes. This field is followed by a pseudonym username | ||||
| that the peer can use in the next authentication. The username MUST | ||||
| NOT include any realm portion. The username does not include any | ||||
| terminating null characters. Because the length of the attribute | ||||
| must be a multiple of 4 bytes, the sender pads the pseudonym with | ||||
| zero bytes when necessary. The username encoding MUST follow the | ||||
| UTF-8 transformation format [RFC2279]. | ||||
| 23 | 7.14. AT_NEXT_REAUTH_ID | |||
| Subtype | The format of the AT_NEXT_REAUTH_ID attribute is shown below. | |||
| 13 | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_NEXT_REAU..| Length | Actual Re-Auth Identity Length| | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| . Next Re-authentication Username . | ||||
| . . | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Reserved | EAP AKA Authentication 27 October, 2003 | |||
| Set to zero when sending, ignored on reception. | The value field of this attribute begins with 2-byte actual re- | |||
| authentication identity length which specifies the length of the | ||||
| following re-authentication identity in bytes. This field is | ||||
| followed by a re-authentication identity that the peer can use in | ||||
| the next re-authentication, as described in Section 4.2. In | ||||
| environments where a realm portion is required, the re- | ||||
| authentication identity includes both a username portion and a realm | ||||
| name portion. The re-authentication identity does not include any | ||||
| terminating null characters. Because the length of the attribute | ||||
| must be a multiple of 4 bytes, the sender pads the re-authentication | ||||
| identity with zero bytes when necessary. The identity encoding MUST | ||||
| follow the UTF-8 transformation format [RFC2279]. | ||||
| AT_IV | 7.15. AT_COUNTER | |||
| The AT_IV attribute is MUST be included. See Section 7.3. | The format of the AT_COUNTER attribute is shown below. | |||
| AT_ENCR_DATA | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_COUNTER | Length = 1 | Counter | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| The AT_ENCR_DATA attribute MUST be included. See Section 7.3. The | The value field of the AT_COUNTER attribute consists of a 16-bit | |||
| plaintext consists of nested attributes as described below. | unsigned integer counter value, represented in network byte order. | |||
| AT_CHECKCODE | 7.16. AT_COUNTER_TOO_SMALL | |||
| The AT_CHECKCODE attribute is optional to include. See section | The format of the AT_COUNTER_TOO_SMALL attribute is shown below. | |||
| 7.2 | ||||
| AT_MAC | 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_COUNTER...| Length = 1 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| For EAP-Response/AKA-Reauthentication, the MAC code is calculated | The value field of this attribute consists of two reserved bytes, | |||
| over the following data: | which are set to zero upon sending and ignored upon reception. | |||
| EAP packet| NONCE_S | 7.17. AT_NONCE_S | |||
| The EAP packet is represented as specified in Section 7.1. It is | The format of the AT_NONCE_S attribute is shown below. | |||
| followed by the 16-byte NONCE_S value from the server's | ||||
| AT_NONCE_S attribute. | ||||
| The AT_IV and AT_ENCR_DATA attributes are used for communicating | EAP AKA Authentication 27 October, 2003 | |||
| encrypted attributes. The plaintext of the AT_ENCR_DATA value field | ||||
| consists of nested attributes, which are shown below. | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_COUNTER | Length = 1 | Counter | | | AT_COUNTER | Length = 1 | Counter | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_COUNTER...| Length = 1 | Reserved | | | AT_NONCE_S | Length = 5 | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_PADDING | Length | Padding... | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | |||
| | NONCE_S | | ||||
| | | | | | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| EAP AKA Authentication June 2003 | The value field of the AT_NONCE_S attribute contains two reserved | |||
| bytes followed by a random number generated by the server (16 bytes) | ||||
| AT_COUNTER | freshly for this EAP/AKA re-authentication. The random number is | |||
| used as challenge for the peer and also a seed value for the new | ||||
| The AT_COUNTER attribute MUST be included. The format of this | keying material. The reserved bytes are set to zero upon sending and | |||
| attribute is specified in Section 8.7. | ignored upon reception. | |||
| AT_COUNTER_TOO_SMALL | ||||
| The AT_COUNTER_TOO_SMALL attribute is optional to include, and it | ||||
| is included in cases specified in Section 5. | ||||
| AT_PADDING | ||||
| The AT_PADDING attribute is optional to include. See section 7.3 | ||||
| 8.9. EAP/AKA Notifications | ||||
| The EAP-Request/Notification, specified in [5], can be used to | ||||
| convey a displayable message from the authenticator to the client. | ||||
| Because these messages are textual messages, it may be hard for the | ||||
| client to present them in the user's preferred language. Therefore, | ||||
| EAP/AKA uses a separate EAP/AKA message subtype to transmit | ||||
| localizable notification codes instead of the EAP- | ||||
| Request/Notification packet. | ||||
| The EAP server MAY issue an EAP-Request/AKA-Notification packet to | ||||
| the client. The client MAY show a notification message to the user | ||||
| and the client MUST respond to the EAP server with an EAP- | ||||
| Response/AKA-Notification packet, even if the client did not | ||||
| recognize the notification code. | ||||
| The notification code is a 16-bit number. The most significant bit | ||||
| is called the Failure bit (F bit). The F bit specifies whether the | ||||
| notification implies failure. The code values with the F bit set to | ||||
| zero (code values 0...32767) are used on unsuccessful cases. The | ||||
| receipt of a notification code from this range implies failed | ||||
| authentication, so the client can use the notification as a failure | ||||
| indication. After receiving the EAP-Response/AKA-Notification for | ||||
| these notification codes, the server MUST send the EAP-Failure | ||||
| packet. | ||||
| The receipt of a notification code with the F bit set to one (values | ||||
| 32768...65536) does not imply failure, so the client MUST NOT change | ||||
| its state when it receives such a notification. | ||||
| The second most significant bit of the notification code is called | ||||
| the Phase bit (P bit). It specifies at which phase of the EAP/AKA | ||||
| exchange the notification can be used. If the P bit is set to zero, | ||||
| the notification can only be used after the EAP/AKA-Challenge round | ||||
| in full authentication or the EAP/AKA-Reauthentication round in re- | ||||
| autentication. For these notifications, the AT_MAC attribute MUST be | ||||
| included in both EAP-Request/AKA-Notification and EAP-Response/AKA- | ||||
| Notification. | ||||
| EAP AKA Authentication June 2003 | ||||
| If the P bit of the notification code is set to one, the | The server MUST choose the NONCE_S value freshly for each EAP/AKA | |||
| notification can only by used before the EAP/AKA-Challenge round in | re-authentication exchange. The server SHOULD use a good source of | |||
| full authentication or the EAP/AKA-Reauthentication round in | randomness to generate NONCE_S. Please see [RFC 1750] for more | |||
| reauthentication. For these notifications, the AT_MAC attribute MUST | information about generating random numbers for security | |||
| NOT be included in either EAP-Request/AKA-Notification or EAP- | applications. | |||
| Response/AKA-Notification. | ||||
| Some of the notification codes are authorization related and hence | 7.18. AT_NOTIFICATION | |||
| not usually considered as part of the responsibility of an EAP | ||||
| method. However, they are included as part of EAP/AKA because there | ||||
| are currently no other ways to convey this information to the user | ||||
| in a localizable way, and the information is potentially useful for | ||||
| the user. An EAP/AKA server implementation may decide never to send | ||||
| these EAP/AKA notifications. | ||||
| The format of the EAP-Request/AKA-Notification packet is shown | The format of the AT_NOTIFICATION attribute is shown below. | |||
| below. | ||||
| 0 1 2 3 | 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 | 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 | | |AT_NOTIFICATION| Length = 1 |F|P| Notification Code | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |AT_NOTIFICATION| Length = 1 |F|P| Notification Code | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Code | The value field of this attribute contains a two-byte notification | |||
| code. The first and second bit (F and P) of the notification code | ||||
| 1 for Request | are interpreted as described in Section 4.3. | |||
| Identifier | ||||
| See [5]. | ||||
| Length | ||||
| The length of the EAP packet. | ||||
| Type | ||||
| 23 | ||||
| EAP AKA Authentication June 2003 | ||||
| Subtype | ||||
| 12 | ||||
| Reserved | ||||
| Set to zero when sending, ignored on reception. | ||||
| AT_NOTIFICATION | ||||
| The AT_NOTIFICATION attribute MUST be included. The value field | ||||
| of this attribute contains a two-byte notification code. The | ||||
| first and second bit (F and P) of the notification code are | ||||
| interpreted as described above. | ||||
| The following code values have been reserved. The descriptions | The notification code values listed below have been reserved. The | |||
| below illustrate the semantics of the notifications. The client | descriptions below illustrate the semantics of the notifications. | |||
| implementation MAY use different wordings when presenting the | The peer implementation MAY use different wordings when presenting | |||
| notifications to the user. The "requested service" depends on the | the notifications to the user. The "requested service" depends on | |||
| environment where EAP/AKA is applied. | the environment where EAP/AKA is applied. | |||
| 1026 - User has been temporarily denied access to the requested | 1026 - User has been temporarily denied access to the requested | |||
| service (Implies failure, used after the challenge round) | service. (Implies failure, used after the challenge round) | |||
| 1031 - User has not subscribed to the requested service (Implies | 1031 - User has not subscribed to the requested service (implies | |||
| failure, used after the challenge round) | failure, used after the challenge round) | |||
| AT_MAC | EAP AKA Authentication 27 October, 2003 | |||
| AT_MAC is included in cases described above. No message-specific | 7.19. AT_CLIENT_ERROR_CODE | |||
| data is included in the MAC calculation. See Section 7.1. | ||||
| The format of the EAP-Response/AKA-Notification packet is shown | The format of the AT_CLIENT_ERROR_CODE attribute is shown below. | |||
| below. Because this packet is only an acknowledgement of EAP- | ||||
| Request/AKA-Notification, it does not contain any mandatory | ||||
| attributes. | ||||
| 0 1 2 3 | 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 | 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 | | |AT_CLIENT_ERR..| Length = 1 | Client Error Code | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Type | Subtype | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | AT_MAC | Length = 5 | Reserved | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | | ||||
| | | | ||||
| | MAC | | ||||
| | | | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| EAP AKA Authentication June 2003 | The value field of this attribute contains a two-byte client error | |||
| code. The following error code values have been reserved. | ||||
| Code | ||||
| 2 for Response | ||||
| Identifier | ||||
| See [5]. | ||||
| Length | ||||
| The length of the EAP packet. | ||||
| Type | ||||
| 23 | ||||
| Subtype | ||||
| 12 | ||||
| Reserved | ||||
| Set to zero when sending, ignored on reception. | ||||
| AT_MAC | ||||
| AT_MAC is included in cases described above. No message-specific | ||||
| data is included in the MAC calculation. See Section 7.1. | ||||
| 9. Error Cases and the Usage of EAP-Failure and EAP-Success | ||||
| 9.1. Processing Erroneous Packets | ||||
| In general, if an EAP/AKA client or server implementation detects an | ||||
| error in a received EAP/AKA packet, the EAP/AKA implementation | ||||
| silently ignores the EAP packet, does not change its state and does | ||||
| not send any EAP messages to its peer. Examples of such errors, | ||||
| specified in detail elsewhere in this document, are an invalid | ||||
| AT_MAC value, a mandatory attribute is missing, illegal attributes | ||||
| included and an unrecognized non-skippable attribute. If no valid | ||||
| packets are received, the authentication exchange will eventually | ||||
| time out. | ||||
| If the EAP/AKA client receives an EAP/AKA Request of an unrecognized | ||||
| subtype, the EAP/AKA client MUST silently discard the EAP request. | ||||
| 9.2. EAP-Failure | ||||
| As normally in EAP, the EAP server sends the EAP-Failure packet to | ||||
| the client when the authentication procedure fails on the EAP | ||||
| Server. In EAP/AKA, this may occur for example if the EAP server | ||||
| does not recognize the user identity, or if the EAP server is not | ||||
| EAP AKA Authentication June 2003 | ||||
| able to obtain authentication vectors for the subscriber or the | ||||
| authentication exchange times out. | ||||
| The server can send EAP-Failure at any time in the EAP exchange. The | ||||
| client MUST process EAP-Failure. | ||||
| 9.3. EAP-Success | ||||
| On full authentication, the server can only send EAP-Success after | ||||
| the EAP/AKA-Challenge round. The client MUST silently discard any | ||||
| EAP-Success packets if they are received before the client has | ||||
| successfully authenticated the server and sent the EAP-Response/AKA- | ||||
| Challenge packet. | ||||
| On re-authentication, EAP-Success can only be sent after the | ||||
| EAP/AKA-Reauthentication round. The client MUST silently discard any | ||||
| EAP-Success packets if they are received before the client has | ||||
| successfully authenticated the server and sent the EAP-Response/AKA- | ||||
| Reauthentication packet. | ||||
| If the client receives an EAP/AKA notification (section 8.9) that | ||||
| indicates failure, then the client MUST no longer accept the EAP- | ||||
| Success packet even if the server authentication was successfully | ||||
| completed. | ||||
| 10. Key Derivation | ||||
| This section specifies how EAP AKA keying material is derived. | ||||
| On EAP AKA full authentication, a Master Key (MK) is derived from | ||||
| the underlying UMTS AKA values (IK and CK keys) and the Identity as | ||||
| follows. | ||||
| MK = SHA1(Identity|IK|CK) | ||||
| The hash function SHA1 is specified in [10]. In the formula above, | ||||
| the "|" character denotes concatenation. Identity denotes the user | ||||
| identity string without any terminating null characters. It is the | ||||
| identity from the AT_IDENTITY attribute from the last EAP- | ||||
| Response/AKA-Identity packet, or, if AT_IDENTITY was not used, the | ||||
| identity from the EAP-Response/Identity packet. | ||||
| The Master Key is fed into a Pseudo-Random number Function (PRF), | ||||
| which generates separate Transient EAP Keys (TEKs) for protecting | ||||
| EAP AKA packets, as well as a Master Session Key (MSK) for link | ||||
| layer security and an Extended Master Session Key (EMSK) for other | ||||
| purposes. On re-authentication, the same TEKs will be used for | ||||
| protecting EAP packets, but a new MSK and a new EMSK will be derived | ||||
| from the original MK and new values exchanged in the re- | ||||
| authentication. | ||||
| EAP AKA requires two TEKs for its own purposes, a message | ||||
| authentication key K_aut and an encryption key K_encr, to be used | ||||
| EAP AKA Authentication June 2003 | ||||
| with the AT_MAC and AT_ENCR_DATA attributes. The same K_aut and | ||||
| K_encr keys are used in full authentication and subsequent re- | ||||
| authentications. | ||||
| Key derivation is based on the pseudo-random number generator | ||||
| specified in NIST Federal Information Processing Standards | ||||
| Publication 186-2 [14]. The pseudo-random number generator is | ||||
| specified in the change notice 1 (2001 October 5)of [14] (Algorithm | ||||
| 1). As specified in the change notice (page 74), when Algorithm 1 is | ||||
| used as a general-purpose random number generator, the "mod q" term | ||||
| in step 3.2 is omitted. The function G used in the algorithm is | ||||
| constructed via Secure Hash Standard as specified in Appendix 3.3 of | ||||
| the standard. For convenience, the pseudo-random number algorithm | ||||
| with the correct modification is cited in Annex A. | ||||
| 160-bit XKEY and XVAL values are used, so b = 160. On full | ||||
| authentication, the Master Key is used as the initial secret seed | ||||
| value XKEY | ||||
| The optional user input values (XSEED_j) in Step 3.1 are set to | ||||
| zero. | ||||
| The resulting 320-bit random numbers x_0, x_1, ..., x_m-1 are | ||||
| concatenated and partitioned into suitable-sized chunks and used as | ||||
| keys in the following order: K_encr (128 bits), K_aut (128 bits), | ||||
| Master Session Key (64 bytes), Extended Master Session Key (64 | ||||
| bytes). | ||||
| On re-authentication, the same pseudo-random number generator can be | ||||
| used to generate a new Master Session Key and a new Extended Master | ||||
| Session Key. The seed value XKEY' is calculated as follows: | ||||
| XKEY' = SHA1(Identity|counter|NONCE_S|MK) | ||||
| In the formula above, the Identity denotes the re-authentication | ||||
| user identity, without any terminating null characters, from the | ||||
| AT_IDENTITY attribute of the EAP-Response/AKA-Identity packet, or, | ||||
| if EAP-Response/AKA-Identity was not used on re-authentication, the | ||||
| identity string from the EAP-Response/Identity packet. The counter | ||||
| denotes the counter value from AT_COUNTER attribute used in the EAP- | ||||
| Response/AKA-Reauthentication packet. The counter is used in network | ||||
| byte order. NONCE_S denotes the 16-byte NONCE_S value from the | ||||
| AT_NONCE_S attribute used in the EAP-Request/AKA-Reauthentication | ||||
| packet. The MK is the Master Key from the preceding full | ||||
| authentication. The pseudo-random number generator is run with the | ||||
| new seed value XKEY', and the resulting 320-bit random numbers x_0, | ||||
| x_1, ..., x_m-1 are concatenated and partitioned into 64-byte chunks | ||||
| and used as the new Master Session Key and the new Extended Master | ||||
| Session Key. | ||||
| The first 32 bytes of the MSK can be used as the Pairwise Master Key | ||||
| (PMK) for IEEE 802.11i. | ||||
| EAP AKA Authentication June 2003 | ||||
| When the RADIUS attributes specified in [16] are used to transport | 0 "unable to process packet": a general error code | |||
| 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 are used. | ||||
| 11. IANA and Protocol Numbering Considerations | 8. IANA and Protocol Numbering Considerations | |||
| The realm name "owlan.org" has been reserved for NAI realm names | The realm name "owlan.org" has been reserved for NAI realm names | |||
| generated from the IMSI. | generated from the IMSI. | |||
| IANA has assigned the number 23 for EAP AKA authentication. | IANA has assigned the number 23 for EAP AKA authentication. | |||
| EAP AKA messages include a Subtype field. The following Subtypes are | EAP AKA messages include a Subtype field. The following Subtypes are | |||
| specified: | specified: | |||
| AKA-Challenge...................................1 | AKA-Challenge...................................1 | |||
| AKA-Authentication-Reject.......................2 | AKA-Authentication-Reject.......................2 | |||
| AKA-Synchronization-Failure.....................4 | AKA-Synchronization-Failure.....................4 | |||
| AKA-Identity....................................5 | AKA-Identity....................................5 | |||
| AKA-Notification...............................12 | AKA-Notification...............................12 | |||
| AKA-Reauthentication...........................13 | AKA-Reauthentication...........................13 | |||
| AKA-Client-Error...............................14 | ||||
| EAP AKA Authentication 27 October, 2003 | ||||
| The Subtype-specific data is composed of attributes, which have | The Subtype-specific data is composed of attributes, which have | |||
| attribute type numbers. The following attribute types are specified: | attribute type numbers. The following attribute types are specified: | |||
| AT_RAND.........................................1 | AT_RAND.........................................1 | |||
| AT_AUTN.........................................2 | AT_AUTN.........................................2 | |||
| AT_RES..........................................3 | AT_RES..........................................3 | |||
| AT_AUTS.........................................4 | AT_AUTS.........................................4 | |||
| AT_PADDING......................................6 | AT_PADDING......................................6 | |||
| AT_PERMANENT_ID_REQ............................10 | AT_PERMANENT_ID_REQ............................10 | |||
| AT_MAC.........................................11 | AT_MAC.........................................11 | |||
| AT_NOTIFICATION................................12 | ||||
| AT_ANY_ID_REQ..................................13 | AT_ANY_ID_REQ..................................13 | |||
| AT_IDENTITY....................................14 | AT_IDENTITY....................................14 | |||
| AT_FULLAUTH_ID_REQ.............................17 | AT_FULLAUTH_ID_REQ.............................17 | |||
| AT_COUNTER.....................................19 | AT_COUNTER.....................................19 | |||
| AT_COUNTER_TOO_SMALL...........................20 | AT_COUNTER_TOO_SMALL...........................20 | |||
| AT_NONCE_S.....................................21 | AT_NONCE_S.....................................21 | |||
| AT_CLIENT_ERROR_CODE...........................22 | ||||
| AT_IV.........................................129 | AT_IV.........................................129 | |||
| AT_ENCR_DATA..................................130 | AT_ENCR_DATA..................................130 | |||
| AT_NEXT_PSEUDONYM.............................132 | AT_NEXT_PSEUDONYM.............................132 | |||
| AT_NEXT_REAUTH_ID.............................133 | AT_NEXT_REAUTH_ID.............................133 | |||
| AT_CHECKCODE..................................134 | AT_CHECKCODE..................................134 | |||
| The AT_NOTIFICATION attribute contains a notification code value. | ||||
| Values 1024, 1026 and 1031 have been specified in Section 7.18 of | ||||
| this document. | ||||
| The AT_CLIENT_ERROR_CODE attribute contains a client error code. | ||||
| Value 0 has been specified in Section 7.19 of this document. | ||||
| All requests for value assignment from the various number spaces | All requests for value assignment from the various number spaces | |||
| described in this document require proper documentation, according | described in this document require proper documentation, according | |||
| to the "Specification Required" policy described in [17]. Requests | to the "Specification Required" policy described in [RFC 2434]. | |||
| must be specified in sufficient detail so that interoperability | Requests must be specified in sufficient detail so that | |||
| between independent implementations is possible. Possible forms of | interoperability between independent implementations is possible. | |||
| documentation include, but are not limited to, RFCs, the products of | Possible forms of documentation include, but are not limited to, | |||
| RFCs, the products of another standards body (e.g. 3GPP), or | ||||
| permanently and readily available vendor design notes. | ||||
| EAP AKA Authentication June 2003 | EAP AKA and EAP SIM [EAP SIM] are "sister" protocols with similar | |||
| message structure and protocol numbering spaces. Many attributes and | ||||
| message Subtypes have the same protocol numbers in these two | ||||
| protocols. Hence, it is recommended that the same protocol number | ||||
| value SHOULD NOT be allocated for two different purposes in EAP AKA | ||||
| and EAP SIM. | ||||
| another standards body (e.g. 3GPP), or permanently and readily | 9. Security Considerations | |||
| available vendor design notes. | ||||
| 12. Security Considerations | The EAP base protocol specification [EAP] highlights several attacks | |||
| that are possible against the EAP protocol. This section discusses | ||||
| The revised EAP base protocol [18] highlights several attacks that | EAP AKA Authentication 27 October, 2003 | |||
| are possible against the EAP protocol. This section discusses the | ||||
| claimed security properties of EAP AKA as well as vulnerabilities | ||||
| and security recommendations. | ||||
| 12.1. Identity Protection | the claimed security properties of EAP AKA as well as | |||
| vulnerabilities and security recommendations. | ||||
| 9.1. Identity Protection | ||||
| EAP/AKA includes optional Identity privacy support that protects the | EAP/AKA includes optional Identity privacy support that protects the | |||
| privacy of the subscriber identity against passive eavesdropping. | privacy of the subscriber identity against passive eavesdropping. | |||
| The mechanism cannot be used on the first connection with a given | The mechanism cannot be used on the first exchange with a given | |||
| server, when the IMSI will have to be sent in the clear. The | server, when the IMSI will have to be sent in the clear. The | |||
| terminal SHOULD store the pseudonym in a non-volatile memory so that | terminal SHOULD store the pseudonym in a non-volatile memory so that | |||
| it can be maintained across reboots. An active attacker that | it can be maintained across reboots. An active attacker that | |||
| impersonates the network may use the AT_PERMANENT_ID_REQ attribute | impersonates the network may use the AT_PERMANENT_ID_REQ attribute | |||
| (Section 4.3) to learn the subscriber's IMSI. However, as discussed | (Section 1.1) to learn the subscriber's IMSI. However, as discussed | |||
| in Section 4.3, the terminal can refuse to send the cleartext IMSI | in Section 1.1, the terminal can refuse to send the cleartext IMSI | |||
| if it believes that the network should be able to recognize the | if it believes that the network should be able to recognize the | |||
| pseudonym. | pseudonym. | |||
| If the client and server cannot guarantee that the pseudonym will be | If the peer and server cannot guarantee that the pseudonym will be | |||
| maintained reliably and Identity privacy is required then additional | maintained reliably and Identity privacy is required then additional | |||
| protection from an external security mechanism such as Protected | protection from an external security mechanism such as Protected | |||
| Extensible Authentication Protocol (PEAP) [19] may be used. The | Extensible Authentication Protocol (PEAP) [PEAP] may be used. The | |||
| benefits and the security considerations of using an external | benefits and the security considerations of using an external | |||
| security mechanism with EAP/AKA are beyond the scope of this | security mechanism with EAP/AKA are beyond the scope of this | |||
| document. | document. | |||
| 12.2. Mutual Authentication | 9.2. Mutual Authentication | |||
| EAP/AKA provides mutual authentication via the UMTS AKA mechanisms. | EAP/AKA provides mutual authentication via the UMTS AKA mechanisms. | |||
| 12.3. Key Derivation | 9.3. Key Derivation | |||
| EAP/AKA supports key derivation with 128-bit effective key strength. | EAP/AKA supports key derivation with 128-bit effective key strength. | |||
| The key hierarchy is specified in Section 10. | The key hierarchy is specified in Section 0. | |||
| The Transient EAP Keys used to protect EAP AKA packets (K_encr, | The Transient EAP Keys used to protect EAP AKA packets (K_encr, | |||
| K_aut) and the Master Session Keys are cryptographically separate. | K_aut) and the Master Session Keys are cryptographically separate. | |||
| An attacker cannot derive any non-trivial information from K_encr or | An attacker cannot derive any non-trivial information from K_encr or | |||
| K_aut based on the Master Session Key or vice versa. An attacker | K_aut based on the Master Session Key or vice versa. An attacker | |||
| also cannot calculate the pre-shared secret from the UMTS AKA IK, | also cannot calculate the pre-shared secret from the UMTS AKA IK, | |||
| UMTS AKA CK, EAP AKA K_encr, EAP AKA K_aut or from the Master | UMTS AKA CK, EAP AKA K_encr, EAP AKA K_aut or from the Master | |||
| Session Key. | Session Key. | |||
| 12.4. Brute-Force and Dictionary Attacks | 9.4. Brute-Force and Dictionary Attacks | |||
| The effective strength of EAP/AKA values is 128 bits, and there are | The effective strength of EAP/AKA values is 128 bits, and there are | |||
| no known computationally feasible brute-force attacks. Because UMTS | no known computationally feasible brute-force attacks. Because UMTS | |||
| EAP AKA Authentication June 2003 | ||||
| AKA is not a password protocol (the pre-shared secret must not be a | AKA is not a password protocol (the pre-shared secret must not be a | |||
| weak password), EAP/AKA is not vulnerable to dictionary attacks. | weak password), EAP/AKA is not vulnerable to dictionary attacks. | |||
| 12.5. Integrity Protection, Replay Protection and Confidentiality | 9.5. Integrity Protection, Replay Protection and Confidentiality | |||
| AT_MAC, AT_IV and AT_ENCR_DATA attributes are used to provide | AT_MAC, AT_IV and AT_ENCR_DATA attributes are used to provide | |||
| integrity, replay and confidentiality protection for EAP/AKA | integrity, replay and confidentiality protection for EAP/AKA | |||
| Requests and Responses. Integrity protection includes the EAP | Requests and Responses. Integrity protection includes the EAP | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| header. Integrity protection (AT_MAC) is based on a keyed message | header. Integrity protection (AT_MAC) is based on a keyed message | |||
| authentication code. Confidentiality (AT_ENCR_DATA and AT_IV) is | authentication code. Confidentiality (AT_ENCR_DATA and AT_IV) is | |||
| based on a block cipher. | based on a block cipher. | |||
| Because keys are not available in the beginning of the EAP methods, | Because keys are not available in the beginning of the EAP methods, | |||
| the AT_MAC attribute cannot be used for protecting EAP/AKA-Identity | the AT_MAC attribute cannot be used for protecting EAP/AKA-Identity | |||
| messages. However, the AT_CHECKCODE attribute can optionally be used | messages. However, the AT_CHECKCODE attribute can optionally be used | |||
| to protect the integrity of the EAP/AKA-Identity roundtrip. | to protect the integrity of the EAP/AKA-Identity roundtrip. | |||
| On full authentication, replay protection is provided by the | On full authentication, replay protection is provided by RAND and | |||
| underlying UMTS AKA scheme, which makes use of the RAND and AUTN | AUTN values from the underlying UMTS AKA scheme. On re- | |||
| values. On re-authentication, a counter and a server nonce is used | authentication, a counter and a server nonce is used to provide | |||
| to provide replay protection. | replay protection. | |||
| The contents of the EAP-Response/Identity packet are implicitly | The contents of the EAP-Response/Identity packet are implicitly | |||
| integrity protected by including them in key derivation. | integrity protected by including them in key derivation. | |||
| Because EAP/AKA is not a tunneling method, EAP Notification, EAP | Because EAP/AKA is not a tunneling method, EAP Notification, EAP | |||
| Success or EAP Failure packets are not confidential, integrity | Success or EAP Failure packets are not confidential, integrity | |||
| protected or replay protected. On physically insecure networks, this | protected or replay protected. On physically insecure networks, this | |||
| may enable an attacker to mount denial of service attacks by sending | may enable an attacker to mount denial of service attacks by sending | |||
| false EAP Notification, EAP Success or EAP Failure packets. However, | false EAP Notification, EAP Success or EAP Failure packets. However, | |||
| the attacker cannot force the peers to believe successful | the attacker cannot force the peers to believe successful | |||
| authentication has occurred when mutual authentication failed or has | authentication has occurred when mutual authentication failed or has | |||
| not happened yet. | not happened yet. | |||
| An eavesdropper will see the EAP Notification, EAP Success and EAP | An eavesdropper will see the EAP Notification, EAP Success and EAP | |||
| Failure packets sent in the clear. With EAP AKA, confidential | Failure packets sent in the clear. With EAP AKA, confidential | |||
| information MUST NOT be transmitted in EAP Notification packets. | information MUST NOT be transmitted in EAP Notification packets. | |||
| 12.6. Negotiation Attacks | 9.6. Negotiation Attacks | |||
| EAP/AKA does not protect the EAP-Response/Nak packet. Because | EAP/AKA does not protect the EAP-Response/Nak packet. Because | |||
| EAP/AKA does not protect the EAP method negotiation, EAP method | EAP/AKA does not protect the EAP method negotiation, EAP method | |||
| downgrading attacks may be possible, especially if the user uses the | downgrading attacks may be possible, especially if the user uses the | |||
| same identity with EAP/AKA and other EAP methods. | same identity with EAP/AKA and other EAP methods. | |||
| As described in Section 6, EAP/AKA allows the protocol to be | As described in Section 5, EAP/AKA allows the protocol to be | |||
| extended by defining new attribute types. When defining such | extended by defining new attribute types. When defining such | |||
| attributes, it should be noted that any extra attributes included in | attributes, it should be noted that any extra attributes included in | |||
| EAP-Request/AKA-Identity or EAP-Response/AKA-Identity packets are | EAP-Request/AKA-Identity or EAP-Response/AKA-Identity packets are | |||
| not included in the MACs later on, and thus some other precautions | not included in the MACs later on, and thus some other precautions | |||
| must be taken to avoid modifications to them. | must be taken to avoid modifications to them. | |||
| EAP/AKA does not support ciphersuite negotiation or EAP/AKA protocol | EAP/AKA does not support ciphersuite negotiation or EAP/AKA protocol | |||
| version negotiation. | version negotiation. | |||
| EAP AKA Authentication June 2003 | 9.7. Fast Reconnect | |||
| 12.7. Fast Reconnect | ||||
| EAP/AKA includes an optional re-authentication ("fast reconnect") | EAP/AKA includes an optional re-authentication ("fast reconnect") | |||
| procedure, as recommended in [18] for EAP types that are intended | procedure, as recommended in [EAP] for EAP types that are intended | |||
| for physically insecure networks. | for physically insecure networks. | |||
| 12.8. Acknowledged Result Indications | 9.8. Acknowledged Result Indications | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| EAP/AKA does not provide acknowledged or integrity protected Success | EAP/AKA does not provide acknowledged or integrity protected Success | |||
| or Failure indications. | or Failure indications. | |||
| If an EAP Success or an EAP Failure packet is lost when using | If an EAP Success or an EAP Failure packet is lost when using | |||
| EAP/AKA over an unreliable medium, and if the protocol over which | EAP/AKA over an unreliable medium, and if the protocol over which | |||
| EAP/AKA is transported does not address the possible loss of Success | EAP/AKA is transported does not address the possible loss of Success | |||
| or Failure, then the peer and authenticator may end up having a | or Failure, then the peer and EAP server may end up having a | |||
| different interpretation of the state of the authentication | different interpretation of the state of the authentication | |||
| conversation. | conversation. | |||
| On physically insecure networks, an attacker may mount denial of | On physically insecure networks, an attacker may mount denial of | |||
| service attacks by sending false EAP Success or EAP Failure | service attacks by sending false EAP Success or EAP Failure | |||
| indications. However, the attacker cannot force the client or the | indications. However, the attacker cannot force the peer or the EAP | |||
| authenticator to believe successful authentication has occurred when | server to believe successful authentication has occurred when mutual | |||
| mutual authentication failed or has not happened yet. | authentication failed or has not happened yet. | |||
| 12.9. Man-in-the-middle Attacks | 9.9. Man-in-the-middle Attacks | |||
| In order to avoid man-in-the-middle attacks and session hijacking, | In order to avoid man-in-the-middle attacks and session hijacking, | |||
| user data SHOULD be integrity protected on physically insecure | user data SHOULD be integrity protected on physically insecure | |||
| networks. The EAP/AKA Master Session Key or keys derived from it MAY | networks. The EAP/AKA Master Session Key or keys derived from it MAY | |||
| be used as the integrity protection keys, or, if an external | be used as the integrity protection keys, or, if an external | |||
| security mechanism such as PEAP is used, then the link integrity | security mechanism such as PEAP is used, then the link integrity | |||
| protection keys MAY be derived by the external security mechanism. | protection keys MAY be derived by the external security mechanism. | |||
| There are man-in-the-middle attacks associated with the use of any | There are man-in-the-middle attacks associated with the use of any | |||
| EAP method within a tunneled protocol such as PEAP, or within a | EAP method within a tunneled protocol such as PEAP, or within a | |||
| sequence of EAP methods followed by each other. This specification | sequence of EAP methods followed by each other. This specification | |||
| does not address these attacks. If EAP/AKA is used with a tunneling | does not address these attacks. If EAP/AKA is used with a tunneling | |||
| protocol or as part of a sequence of methods, there should be | protocol or as part of a sequence of methods, there should be | |||
| cryptographic binding provided between the protocols and EAP/AKA to | cryptographic binding provided between the protocols and EAP/AKA to | |||
| prevent man-in-the-middle attacks through rogue authenticators being | prevent man-in-the-middle attacks through rogue authenticators being | |||
| able to setup one-way authenticated tunnels. EAP/AKA Master Session | able to setup one-way authenticated tunnels. EAP/AKA Master Session | |||
| Key MAY be used to provide the cryptographic binding. However the | Key MAY be used to provide the cryptographic binding. However the | |||
| mechanism how the binding is provided depends on the tunneling or | mechanism how the binding is provided depends on the tunneling or | |||
| sequencing protocol, and it is beyond the scope of this document. | sequencing protocol, and it is beyond the scope of this document. | |||
| 12.10. Generating Random Numbers | 9.10. Generating Random Numbers | |||
| An EAP/AKA implementation SHOULD use a good source of randomness to | An EAP/AKA implementation SHOULD use a good source of randomness to | |||
| generate the random numbers required in the protocol. Please see | generate the random numbers required in the protocol. Please see | |||
| [20] for more information on generating random numbers for security | [RFC 1750] for more information on generating random numbers for | |||
| applications. | security applications. | |||
| 13. Security Claims | ||||
| EAP AKA Authentication June 2003 | 10. Security Claims | |||
| This section provides the security claims required by [18]. | This section provides the security claims required by [EAP]. | |||
| [a] Intended use. EAP AKA is intended for use over both physically | [a] Intended use. EAP AKA is intended for use over both physically | |||
| insecure networks and physically or otherwise secure networks. | insecure networks and physically or otherwise secure networks. | |||
| Applicable media include but are not limited to PPP, IEEE 802 wired | Applicable media include but are not limited to PPP, IEEE 802 wired | |||
| networks and IEEE 802.11. | networks and IEEE 802.11. | |||
| EAP AKA Authentication 27 October, 2003 | ||||
| [b] Mechanism. EAP AKA is based on the UMTS AKA mechanism, which is | [b] Mechanism. EAP AKA is based on the UMTS AKA mechanism, which is | |||
| an authentication and key agreement mechanism based on a symmetric | an authentication and key agreement mechanism based on a symmetric | |||
| 128-bit pre-shared secret. | 128-bit pre-shared secret. | |||
| [c] Security claims. The security properties of the method are | [c] Security claims. The security properties of the method are | |||
| discussed in Section 12. | discussed in Section 9. | |||
| [d] Key strength. EAP/AKA supports key derivation with 128-bit | [d] Key strength. EAP/AKA supports key derivation with 128-bit | |||
| effective key strength. | effective key strength. | |||
| [e] Description of key hierarchy. Please see Section 10. | [e] Description of key hierarchy. Please see Section 0. | |||
| [f] Indication of vulnerabilities. Vulnerabilities are discussed in | [f] Indication of vulnerabilities. Vulnerabilities are discussed in | |||
| Section 12. | Section 9. | |||
| 14. Intellectual Property Right Notices | 11. Intellectual Property Right Notices | |||
| On IPR related issues, Nokia and Ericsson refer to the their | On IPR related issues, Nokia and Ericsson refer to the their | |||
| respective statements on patent licensing. Please see | respective statements on patent licensing. Please see | |||
| http://www.ietf.org/ietf/IPR/NOKIA and | http://www.ietf.org/ietf/IPR/NOKIA and | |||
| http://www.ietf.org/ietf/IPR/ERICSSON-General | http://www.ietf.org/ietf/IPR/ERICSSON-General | |||
| Acknowledgements and Contributions | Acknowledgements and Contributions | |||
| The authors wish to thank Rolf Blom of Ericsson, Bernard Aboba of | The authors wish to thank Rolf Blom of Ericsson, Bernard Aboba of | |||
| Microsoft, Arne Norefors of Ericsson, N.Asokan of Nokia, Valtteri | Microsoft, Arne Norefors of Ericsson, N.Asokan of Nokia, Valtteri | |||
| Niemi of Nokia, Kaisa Nyberg of Nokia, Jukka-Pekka Honkanen of | Niemi of Nokia, Kaisa Nyberg of Nokia, Jukka-Pekka Honkanen of | |||
| Nokia, Pasi Eronen of Nokia, Olivier Paridaens of Alcatel and Ilkka | Nokia, Pasi Eronen of Nokia, Olivier Paridaens of Alcatel and Ilkka | |||
| Uusitalo of Ericsson for interesting discussions in this problem | Uusitalo of Ericsson for interesting discussions in this problem | |||
| space. | space. | |||
| The attribute format is based on the extension format of Mobile IPv4 | The attribute format is based on the extension format of Mobile IPv4 | |||
| [21]. | [RFC 3344]. | |||
| Authors' Addresses | Authors' Addresses | |||
| Jari Arkko | Jari Arkko | |||
| Ericsson | Ericsson | |||
| 02420 Jorvas Phone: +358 40 5079256 | 02420 Jorvas Phone: +358 40 5079256 | |||
| Finland Email: jari.arkko@ericsson.com | Finland Email: jari.arkko@ericsson.com | |||
| Henry Haverinen | Henry Haverinen | |||
| Nokia Mobile Phones | Nokia Mobile Phones | |||
| P.O. Box 88 | P.O. Box 88 | |||
| 33721 Tampere Phone: +358 50 594 4899 | 33721 Tampere Phone: +358 50 594 4899 | |||
| Finland E-mail: henry.haverinen@nokia.com | Finland E-mail: henry.haverinen@nokia.com | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| Annex A. Pseudo-Random Number Generator | Annex A. Pseudo-Random Number Generator | |||
| The "|" character denotes concatenation, and "^" denotes involution. | The "|" character denotes concatenation, and "^" denotes involution. | |||
| Step 1: Choose a new, secret value for the seed-key, XKEY | Step 1: Choose a new, secret value for the seed-key, XKEY | |||
| Step 2: In hexadecimal notation let | Step 2: In hexadecimal notation let | |||
| t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0 | t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0 | |||
| This is the initial value for H0|H1|H2|H3|H4 | This is the initial value for H0|H1|H2|H3|H4 | |||
| in the FIPS SHS [10] | in the FIPS SHS [SHA-1] | |||
| Step 3: For j = 0 to m - 1 do | Step 3: For j = 0 to m - 1 do | |||
| 3.1 XSEED_j = optional user input | 3.1 XSEED_j = 0 /* no optional user input */ | |||
| 3.2 For i = 0 to 1 do | 3.2 For i = 0 to 1 do | |||
| a. XVAL = (XKEY + XSEED_j) mod 2^b | a. XVAL = (XKEY + XSEED_j) mod 2^b | |||
| b. w_i = G(t, XVAL) | b. w_i = G(t, XVAL) | |||
| c. XKEY = (1 + XKEY + w_i) mod 2^b | c. XKEY = (1 + XKEY + w_i) mod 2^b | |||
| 3.3 x_j = w_0|w_1 | 3.3 x_j = w_0|w_1 | |||
| EAP AKA Authentication June 2003 | EAP AKA Authentication 27 October, 2003 | |||
| References | ||||
| [1] 3GPP Technical Specification 3GPP TS 33.102 V5.1.0: "Technical | ||||
| Specification Group Services and System Aspects; 3G Security; | ||||
| Security Architecture (Release 5)", 3rd Generation Partnership | ||||
| Project, December 2002. (NORMATIVE) | ||||
| [2] IEEE P802.1X/D11, "Standards for Local Area and Metropolitan | ||||
| Area Networks: Standard for Port Based Network Access | ||||
| Control", March 2001. (INFORMATIVE) | ||||
| [3] IEEE Draft 802.11eS/D1, "Draft Supplement to STANDARD FOR | Normative References | |||
| Telecommunications and Information Exchange between Systems - | ||||
| LAN/MAN Specific Requirements - Part 11: Wireless Medium | ||||
| Access Control (MAC) and physical layer (PHY) specifications: | ||||
| Specification for Enhanced Security", March 2001. | ||||
| (INFORMATIVE) | ||||
| [4] Aboba, B. and M. Beadles, "The Network Access Identifier", RFC | [TS 33.102] 3GPP Technical Specification 3GPP TS 33.102 V5.1.0: | |||
| 2486, January 1999. (NORMATIVE) | "Technical Specification Group Services and System Aspects; 3G | |||
| Security; Security Architecture (Release 5)", 3rd Generation | ||||
| Partnership Project, December 2002. | ||||
| [5] L. Blunk, J. Vollbrecht, "PPP Extensible Authentication | [RFC 2486] Aboba, B. and M. Beadles, "The Network Access | |||
| Protocol (EAP)", RFC 2284, March 1998. (NORMATIVE) | Identifier", RFC 2486, January 1999. | |||
| [6] S. Bradner, "Key words for use in RFCs to indicate Requirement | [EAP] L. Blunk et al., "Extensible Authentication Protocol (EAP)", | |||
| Levels", RFC 2119, March 1997. (NORMATIVE) | draft-ietf-eap-rfc2284bis-05.txt, work-in-progress, September 2003. | |||
| [7] 3GPP Technical Specification 3GPP TS 23.003 V5.5.1: "3rd | [RFC 2119] S. Bradner, "Key words for use in RFCs to indicate | |||
| Generation Parnership Project; Technical Specification Group | Requirement Levels", RFC 2119, March 1997. | |||
| Core Network; Numbering, addressing and identification | ||||
| (Release 5)", 3rd Generation Parnership Project, January 2003 | ||||
| (NORMATIVE) | ||||
| [8] Draft 3GPP Technical Specification 3GPP TS 23.234 V 1.4.0: | [TS 23.003] 3GPP Technical Specification 3GPP TS 23.003 V5.5.1: "3rd | |||
| "Technical Specification Group Services and System Aspects; | Generation Parnership Project; Technical Specification Group Core | |||
| 3GPP system to Wireless Local Area Network (WLAN) | Network; Numbering, addressing and identification (Release 5)", 3rd | |||
| Interworking; System Description", 3rd Generation Partnership | Generation Partnership Project, January 2003 | |||
| Project, work in progress, January 2003. (INFORMATIVE) | ||||
| [9] H. Krawczyk, M. Bellare, R. Canetti, "HMAC: Keyed-Hashing for | [RFC 2104] H. Krawczyk, M. Bellare, R. Canetti, "HMAC: Keyed-Hashing | |||
| Message Authentication", RFC2104, February 1997. (NORMATIVE) | for Message Authentication", RFC2104, February 1997. | |||
| [10] Federal Information Processing Standard (FIPS) Publication | [SHA-1] Federal Information Processing Standard (FIPS) Publication | |||
| 180-1, "Secure Hash Standard," National Institute of Standards | 180-1, "Secure Hash Standard," National Institute of Standards and | |||
| and Technology, U.S. Department of Commerce, April 17, 1995. | Technology, U.S. Department of Commerce, April 17, 1995. | |||
| (NORMATIVE) | ||||
| [11] Federal Information Processing Standard (FIPS) draft standard, | [AES] Federal Information Processing Standards (FIPS) Publication | |||
| "Advanced Encryption Standard (AES)", | 197, "Advanced Encryption Standard (AES)", National Institute of | |||
| Standards and Technology, November 26, 2001. | ||||
| http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf | ||||
| EAP AKA Authentication June 2003 | [CBC] NIST Special Publication 800-38A, "Recommendation for Block | |||
| Cipher Modes of Operation - Methods and Techniques", National | ||||
| Institute of Standards and Technology, December 2001. | ||||
| http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf | ||||
| http://csrc.nist.gov/publications/drafts/dfips-AES.pdf, | [TS 33.105] 3GPP Technical Specification 3GPP TS 33.105 4.1.0: | |||
| September 2001. (NORMATIVE) | "Technical Specification Group Services and System Aspects; 3G | |||
| Security; Cryptographic Algorithm Requirements (Release 4)", 3rd | ||||
| Generation Partnership Project, June 2001 | ||||
| [12] US National Bureau of Standards, "DES Modes of Operation", | [PRF] Federal Information Processing Standards (FIPS) Publication | |||
| Federal Information Processing Standard (FIPS) Publication 81, | 186-2 (with change notice), "Digital Signature Standard (DSS)", | |||
| December 1980. (NORMATIVE) | National Institute of Standards and Technology, January 27, 2000 | |||
| Available on-line at: | ||||
| http://csrc.nist.gov/publications/fips/fips186-2/fips186-2- | ||||
| change1.pdf | ||||
| [13] 3GPP Technical Specification 3GPP TS 33.105 4.1.0: "Technical | EAP AKA Authentication 27 October, 2003 | |||
| Specification Group Services and System Aspects; 3G Security; | ||||
| Cryptographic Algorithm Requirements (Release 4)", 3rd | ||||
| Generation Partnership Project, June 2001 (NORMATIVE) | ||||
| [14] Federal Information Processing Standards (FIPS) Publication | [RFC 2434] T. Narten, H. Alvestrand, "Guidelines for Writing an IANA | |||
| 186-2 (with change notice), "Digital Signature Standard | Considerations Section in RFCs", RFC 2434, October 1998. | |||
| (DSS)", National Institute of Standards and Technology, | ||||
| January 27, 2000, (NORMATIVE) | ||||
| Available on-line at: | ||||
| http://csrc.nist.gov/publications/fips/fips186-2/ | ||||
| fips186-2-change1.pdf | ||||
| [15] B. Aboba, D. Simon, "PPP EAP TLS Authentication Protocol", RFC | Informative References | |||
| 2716, October 1999 (INFORMATIVE) | ||||
| [16] G. Zorn, "Microsoft Vendor-specific RADIUS Attributes", RFC | [RFC 2548] G. Zorn, "Microsoft Vendor-specific RADIUS Attributes", | |||
| 2548, March 1999 (INFORMATIVE) | RFC 2548, March 1999 | |||
| [17] T. Narten, H. Alvestrand, "Guidelines for Writing an IANA | [PEAP] H. Andersson, S. Josefsson, G. Zorn, D. Simon, A. Palekar, | |||
| Considerations Section in RFCs", RFC 2434, October 1998. | "Protected EAP Protocol (PEAP)", draft-josefsson-pppext-eap-tls-eap- | |||
| (NORMATIVE) | 05.txt, work-in-progress, September 2002. | |||
| [18] L. Blunk, J. Vollbrecht, B. Aboba, "Extensible Authentication | [RFC 1750] D. Eastlake, 3rd, S. Crocker, J. Schiller, "Randomness | |||
| Protocol (EAP)", draft-ietf-pppext-rfc2284bis-07.txt, work-in- | Recommendations for Security", RFC 1750 (Informational), December | |||
| progress, October 2002. (NORMATIVE) | 1994. | |||
| [19] H. Andersson, S. Josefsson, G. Zorn, D. Simon, A. Palekar, | [RFC 3344] C. Perkins (editor), "IP Mobility Support", RFC 3344, | |||
| "Protected EAP Protocol (PEAP)", draft-josefsson-pppext-eap- | August 2002. | |||
| tls-eap-05.txt, work-in-progress, September 2002. | ||||
| (IMFORMATIVE) | ||||
| [20] D. Eastlake, 3rd, S. Crocker, J. Schiller, "Randomness | [EAP SIM] H. Haverinen, J. Salowey, "EAP SIM Authentication", draft- | |||
| Recommendations for Security", RFC 1750 (Informational), | haverinen-pppext-eap-sim-12.txt, October 2003, work in progress | |||
| December 1994. (INFORMATIVE) | ||||
| [21] C. Perkins (editor), "IP Mobility Support", RFC 3344, August | [TS 23.234] Draft 3GPP Technical Specification 3GPP TS 23.234 V | |||
| 2002. (INFORMATIVE) | 1.4.0: "Technical Specification Group Services and System Aspects; | |||
| 3GPP system to Wireless Local Area Network (WLAN) Interworking; | ||||
| System Description", 3rd Generation Partnership Project, work in | ||||
| progress, January 2003. | ||||
| End of changes. 468 change blocks. | ||||
| 1809 lines changed or deleted | 1814 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||