added missing EAP-AKA RFC
authorMartin Willi <martin@strongswan.org>
Thu, 16 Oct 2008 07:21:30 +0000 (07:21 -0000)
committerMartin Willi <martin@strongswan.org>
Thu, 16 Oct 2008 07:21:30 +0000 (07:21 -0000)
doc/standards/rfc4187.txt [new file with mode: 0644]

diff --git a/doc/standards/rfc4187.txt b/doc/standards/rfc4187.txt
new file mode 100644 (file)
index 0000000..913f917
--- /dev/null
@@ -0,0 +1,4427 @@
+
+
+
+
+
+
+Network Working Group                                           J. Arkko
+Request for Comments: 4187                                      Ericsson
+Category: Informational                                     H. Haverinen
+                                                                   Nokia
+                                                            January 2006
+
+
+      Extensible Authentication Protocol Method for 3rd Generation
+               Authentication and Key Agreement (EAP-AKA)
+
+Status of This Memo
+
+   This memo provides information for the Internet community.  It does
+   not specify an Internet standard of any kind.  Distribution of this
+   memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2006).
+
+IESG Note
+
+   The EAP-AKA protocol was developed by 3GPP.  The documentation of
+   EAP-AKA is provided as information to the Internet community.  While
+   the EAP WG has verified that EAP-AKA is compatible with EAP as
+   defined in RFC 3748, no other review has been done, including
+   validation of the security claims.  The IETF has also not reviewed
+   the security of the underlying UMTS AKA algorithms.
+
+Abstract
+
+   This document specifies an Extensible Authentication Protocol (EAP)
+   mechanism for authentication and session key distribution that uses
+   the Authentication and Key Agreement (AKA) mechanism.  AKA is used in
+   the 3rd generation mobile networks Universal Mobile
+   Telecommunications System (UMTS) and CDMA2000.  AKA is based on
+   symmetric keys, and typically runs in a Subscriber Identity Module,
+   which is a UMTS Subscriber Identity Module, USIM, or a (Removable)
+   User Identity Module, (R)UIM, similar to a smart card.
+
+   EAP-AKA includes optional identity privacy support, optional result
+   indications, and an optional fast re-authentication procedure.
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 1]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+Table of Contents
+
+   1. Introduction and Motivation .....................................4
+   2. Terms and Conventions Used in This Document .....................5
+   3. Protocol Overview ...............................................9
+   4. Operation ......................................................15
+      4.1. Identity Management .......................................15
+           4.1.1. Format, Generation, and Usage of Peer Identities ...15
+           4.1.2. Communicating the Peer Identity to the Server ......21
+           4.1.3. Choice of Identity for the EAP-Response/Identity ...23
+           4.1.4. Server Operation in the Beginning of
+                  EAP-AKA Exchange ...................................23
+           4.1.5. Processing of EAP-Request/AKA-Identity by
+                  the Peer ...........................................24
+           4.1.6. Attacks against Identity Privacy ...................25
+           4.1.7. Processing of AT_IDENTITY by the Server ............26
+      4.2. Message Sequence Examples (Informative) ...................27
+           4.2.1. Usage of AT_ANY_ID_REQ .............................27
+           4.2.2. Fall Back on Full Authentication ...................28
+           4.2.3. Requesting the Permanent Identity 1 ................29
+           4.2.4. Requesting the Permanent Identity 2 ................30
+           4.2.5. Three EAP/AKA-Identity Round Trips .................30
+   5. Fast Re-Authentication .........................................32
+      5.1. General ...................................................32
+      5.2. Comparison to AKA .........................................33
+      5.3. Fast Re-Authentication Identity ...........................33
+      5.4. Fast Re-Authentication Procedure ..........................35
+      5.5. Fast Re-Authentication Procedure when Counter is
+           Too Small .................................................37
+   6. EAP-AKA Notifications ..........................................38
+      6.1. General ...................................................38
+      6.2. Result Indications ........................................39
+      6.3. Error Cases ...............................................40
+           6.3.1. Peer Operation .....................................41
+           6.3.2. Server Operation ...................................41
+           6.3.3. EAP-Failure ........................................42
+           6.3.4. EAP-Success ........................................42
+   7. Key Generation .................................................43
+   8. Message Format and Protocol Extensibility ......................45
+      8.1. Message Format ............................................45
+      8.2. Protocol Extensibility ....................................47
+   9. Messages .......................................................48
+      9.1. EAP-Request/AKA-Identity ..................................48
+      9.2. EAP-Response/AKA-Identity .................................48
+      9.3. EAP-Request/AKA-Challenge .................................49
+      9.4. EAP-Response/AKA-Challenge ................................49
+      9.5. EAP-Response/AKA-Authentication-Reject ....................50
+      9.6. EAP-Response/AKA-Synchronization-Failure ..................50
+
+
+
+Arkko & Haverinen            Informational                      [Page 2]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+      9.7. EAP-Request/AKA-Reauthentication ..........................50
+      9.8. EAP-Response/AKA-Reauthentication .........................51
+      9.9. EAP-Response/AKA-Client-Error .............................52
+      9.10. EAP-Request/AKA-Notification .............................52
+      9.11. EAP-Response/AKA-Notification ............................52
+   10. Attributes ....................................................53
+      10.1. Table of Attributes ......................................53
+      10.2. AT_PERMANENT_ID_REQ ......................................54
+      10.3. AT_ANY_ID_REQ ............................................54
+      10.4. AT_FULLAUTH_ID_REQ .......................................54
+      10.5. AT_IDENTITY ..............................................55
+      10.6. AT_RAND ..................................................55
+      10.7. AT_AUTN ..................................................56
+      10.8. AT_RES ...................................................56
+      10.9. AT_AUTS ..................................................57
+      10.10. AT_NEXT_PSEUDONYM .......................................57
+      10.11. AT_NEXT_REAUTH_ID .......................................58
+      10.12. AT_IV, AT_ENCR_DATA, and AT_PADDING .....................58
+      10.13. AT_CHECKCODE ............................................60
+      10.14. AT_RESULT_IND ...........................................62
+      10.15. AT_MAC ..................................................63
+      10.16. AT_COUNTER ..............................................64
+      10.17. AT_COUNTER_TOO_SMALL ....................................64
+      10.18. AT_NONCE_S ..............................................65
+      10.19. AT_NOTIFICATION .........................................65
+      10.20. AT_CLIENT_ERROR_CODE ....................................66
+   11. IANA and Protocol Numbering Considerations ....................66
+   12. Security Considerations .......................................68
+      12.1. Identity Protection ......................................69
+      12.2. Mutual Authentication ....................................69
+      12.3. Flooding the Authentication Centre .......................69
+      12.4. Key Derivation ...........................................70
+      12.5. Brute-Force and Dictionary Attacks .......................70
+      12.6. Protection, Replay Protection, and Confidentiality .......70
+      12.7. Negotiation Attacks ......................................71
+      12.8. Protected Result Indications .............................72
+      12.9. Man-in-the-Middle Attacks ................................72
+      12.10. Generating Random Numbers ...............................73
+   13. Security Claims ...............................................73
+   14. Acknowledgements and Contributions ............................74
+   15. References ....................................................74
+      15.1. Normative References .....................................74
+      15.2. Informative References ...................................76
+   Appendix A.  Pseudo-Random Number Generator .......................77
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 3]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+1.  Introduction and Motivation
+
+   This document specifies an Extensible Authentication Protocol (EAP)
+   mechanism for authentication and session key distribution that uses
+   the 3rd generation Authentication and Key Agreement mechanism,
+   specified for Universal Mobile Telecommunications System (UMTS) in
+   [TS33.102] and for CDMA2000 in [S.S0055-A].  UMTS and CDMA2000 are
+   global 3rd generation mobile network standards that use the same AKA
+   mechanism.
+
+   2nd generation mobile networks and 3rd generation mobile networks use
+   different authentication and key agreement mechanisms.  The Global
+   System for Mobile communications (GSM) is a 2nd generation mobile
+   network standard, and EAP-SIM [EAP-SIM] specifies an EAP mechanism
+   that is based on the GSM authentication and key agreement primitives.
+
+   AKA is based on challenge-response mechanisms and symmetric
+   cryptography.  AKA typically runs in a UMTS Subscriber Identity
+   Module (USIM) or a CDMA2000 (Removable) User Identity Module
+   ((R)UIM).  In this document, both modules are referred to as identity
+   modules.  Compared to the 2nd generation mechanisms such as GSM AKA,
+   the 3rd generation AKA provides substantially longer key lengths and
+   mutual authentication.
+
+   The introduction of AKA inside EAP allows several new applications.
+   These include the following:
+
+   o  The use of the AKA also as a secure PPP authentication method in
+      devices that already contain an identity module.
+   o  The use of the 3rd generation mobile network authentication
+      infrastructure in the context of wireless LANs
+   o  Relying on AKA and the existing infrastructure in a seamless way
+      with any other technology that can use EAP.
+
+   AKA works in the following manner:
+
+   o  The identity module and the home environment have agreed on a
+      secret key beforehand.  (The "home environment" refers to the home
+      operator's authentication network infrastructure.)
+   o  The actual authentication process starts by having the home
+      environment produce an authentication vector, based on the secret
+      key and a sequence number.  The authentication vector contains a
+      random part RAND, an authenticator part AUTN used for
+      authenticating the network to the identity module, an expected
+      result part XRES, a 128-bit session key for integrity check IK,
+      and a 128-bit session key for encryption CK.
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 4]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   o  The RAND and the AUTN are delivered to the identity module.
+   o  The identity module verifies the AUTN, again based on the secret
+      key and the sequence number.  If this process is successful (the
+      AUTN is valid and the sequence number used to generate AUTN is
+      within the correct range), the identity module produces an
+      authentication result RES and sends it to the home environment.
+   o  The home environment verifies the correct result from the identity
+      module.  If the result is correct, IK and CK can be used to
+      protect further communications between the identity module and the
+      home environment.
+
+   When verifying AUTN, the identity module may detect that the sequence
+   number the network uses is not within the correct range.  In this
+   case, the identity module calculates a sequence number
+   synchronization parameter AUTS and sends it to the network.  AKA
+   authentication may then be retried with a new authentication vector
+   generated using the synchronized sequence number.
+
+   For a specification of the AKA mechanisms and how the cryptographic
+   values AUTN, RES, IK, CK and AUTS are calculated, see [TS33.102] for
+   UMTS and [S.S0055-A] for CDMA2000.
+
+   In EAP-AKA, the EAP server node obtains the authentication vectors,
+   compares RES and XRES, and uses CK and IK in key derivation.
+
+   In the 3rd generation mobile networks, AKA is used for both radio
+   network authentication and IP multimedia service authentication
+   purposes.  Different user identities and formats are used for these;
+   the radio network uses the International Mobile Subscriber Identifier
+   (IMSI), whereas the IP multimedia service uses the Network Access
+   Identifier (NAI) [RFC4282].
+
+2.  Terms and Conventions Used in 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 [RFC2119].
+
+   The terms and abbreviations "authenticator", "backend authentication
+   server", "EAP server", "peer", "Silently Discard", "Master Session
+   Key (MSK)", and "Extended Master Session Key (EMSK)" in this document
+   are to be interpreted as described in [RFC3748].
+
+   This document frequently uses the following terms and abbreviations.
+   The AKA parameters are specified in detail in [TS33.102] for UMTS and
+   [S.S0055-A] for CDMA2000.
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 5]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   AAA protocol
+
+         Authentication, Authorization and Accounting protocol
+
+   AKA
+
+         Authentication and Key Agreement
+
+   AuC
+
+         Authentication Centre.  The mobile network element that can
+         authenticate subscribers in the mobile networks.
+
+   AUTN
+
+         AKA parameter.  AUTN is an authentication value generated by
+         the AuC, which, together with the RAND, authenticates the
+         server to the peer, 128 bits.
+
+   AUTS
+
+         AKA parameter.  A value generated by the peer upon
+         experiencing a synchronization failure, 112 bits.
+
+   EAP
+
+         Extensible Authentication Protocol [RFC3748]
+
+   Fast Re-Authentication
+
+         An EAP-AKA authentication exchange that is based on keys
+         derived upon a preceding full authentication exchange.  The
+         3rd Generation AKA is not used in the fast re-authentication
+         procedure.
+
+   Fast Re-Authentication Identity
+
+         A fast re-authentication identity of the peer, including an
+         NAI realm portion in environments where a realm is used.
+         Used on re-authentication only.
+
+   Fast Re-Authentication Username
+
+         The username portion of fast re-authentication identity,
+         i.e., not including any realm portions.
+
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 6]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Full Authentication
+
+         An EAP-AKA authentication exchange that is based on the
+         3rd Generation AKA procedure.
+
+   GSM
+
+         Global System for Mobile communications.
+
+   NAI
+
+         Network Access Identifier [RFC4282]
+
+   Identity Module
+
+         Identity module is used in this document to refer to the
+         part of the mobile device that contains authentication and
+         key agreement primitives.  The identity module may be an
+         integral part of the mobile device or it may be an application
+         on a smart card distributed by a mobile operator.  USIM and
+         (R)UIM are identity modules.
+
+   Nonce
+
+         A value that is used at most once or that is never repeated
+         within the same cryptographic context.  In general, a nonce can
+         be predictable (e.g., a counter) or unpredictable (e.g., a
+         random value).  Because some cryptographic properties may
+         depend on the randomness of the nonce, attention should be paid
+         to whether a nonce is required to be random or not.  In this
+         document, the term nonce is only used to denote random nonces,
+         and it is not used to denote counters.
+
+   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, i.e., not including
+         any realm portions.
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 7]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Pseudonym Identity
+
+         A pseudonym identity of the peer, including an NAI realm
+         portion in environments where a realm is used.  Used on full
+         authentication only.
+
+   Pseudonym Username
+
+         The username portion of pseudonym identity, i.e., not including
+         any realm portions.
+
+   RAND
+
+         An AKA parameter.  Random number generated by the AuC,
+         128 bits.
+
+   RES
+
+         Authentication result from the peer, which, together with
+         the RAND, authenticates the peer to the server,
+         128 bits.
+
+   (R)UIM
+
+         CDMA2000 (Removable) User Identity Module.  (R)UIM is an
+         application that is resident on devices such as smart cards,
+         which may be fixed in the terminal or distributed by CDMA2000
+         operators (when removable).
+
+   SQN
+
+         An AKA parameter.  Sequence number used in the authentication
+         process, 48 bits.
+
+   SIM
+
+         Subscriber Identity Module.  The SIM is traditionally a smart
+         card distributed by a GSM operator.
+
+   SRES
+
+         The authentication result parameter in GSM, corresponds to
+         the RES parameter in 3G AKA, 32 bits.
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 8]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   UAK
+
+         UIM Authentication Key, used in CDMA2000 AKA.  Both the
+         identity module and the network can optionally generate the UAK
+         during the AKA computation in CDMA2000.  UAK is not used in
+         this version of EAP-AKA.
+
+   UIM
+
+         Please see (R)UIM.
+
+   USIM
+
+         UMTS Subscriber Identity Module.  USIM is an application that
+         is resident on devices such as smart cards distributed by UMTS
+         operators.
+
+3.  Protocol Overview
+
+   Figure 1 shows the basic, successful full authentication exchange in
+   EAP-AKA, when optional result indications are not used.  The
+   authenticator typically communicates with an EAP server that is
+   located on a backend authentication server using an AAA protocol.
+   The authenticator shown in the figure is often simply relaying EAP
+   messages to and from the EAP server, but these backend AAA
+   communications are not shown.  At the minimum, EAP-AKA uses two
+   roundtrips to authenticate and authorize the peer and generate
+   session keys.  As in other EAP schemes, an identity request/response
+   message pair is usually exchanged first.  On full authentication, the
+   peer's identity response includes either the user's International
+   Mobile Subscriber Identity (IMSI), or a temporary identity
+   (pseudonym) if identity privacy is in effect, as specified in
+   Section 4.1.  (As specified in [RFC3748], 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 Section 4.1.2 for specification
+   of how to obtain the identity via EAP AKA messages.)
+
+   After obtaining the subscriber identity, the EAP server obtains an
+   authentication vector (RAND, AUTN, RES, CK, IK) for use in
+   authenticating the subscriber.  From the vector, the EAP server
+   derives the keying material, as specified in Section 6.4.  The vector
+   may be obtained by contacting an Authentication Centre (AuC) on the
+   mobile network; for example, per UMTS specifications, several vectors
+   may be obtained at a time.  Vectors may be stored in the EAP server
+   for use at a later time, but they may not be reused.
+
+
+
+
+
+Arkko & Haverinen            Informational                      [Page 9]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   In CDMA2000, the vector may include a sixth value called the User
+   Identity Module Authentication Key (UAK).  This key is not used in
+   EAP-AKA.
+
+   Next, the EAP server starts the actual AKA protocol by sending an
+   EAP-Request/AKA-Challenge message.  EAP-AKA packets encapsulate
+   parameters in attributes, encoded in a Type, Length, Value format.
+   The packet format and the use of attributes are specified in
+   Section 8.  The EAP-Request/AKA-Challenge message contains a RAND
+   random number (AT_RAND), a network authentication token (AT_AUTN),
+   and a message authentication code (AT_MAC).  The EAP-Request/
+   AKA-Challenge message MAY optionally contain encrypted data, which is
+   used for identity privacy and fast re-authentication support, as
+   described in Section 4.1.  The AT_MAC attribute contains a message
+   authentication code covering the EAP packet.  The encrypted data is
+   not shown in the figures of this section.
+
+   The peer runs the AKA algorithm (typically using an identity module)
+   and verifies the AUTN.  If this is successful, the peer is talking to
+   a legitimate EAP server and proceeds to send the EAP-Response/
+   AKA-Challenge.  This message contains a result parameter that allows
+   the EAP server, in turn, to authenticate the peer, and the AT_MAC
+   attribute to integrity protect the EAP message.
+
+   The EAP server verifies that the RES and the MAC in the EAP-Response/
+   AKA-Challenge packet are correct.  Because protected success
+   indications are not used in this example, the EAP server sends the
+   EAP-Success packet, indicating that the authentication was
+   successful.  (Protected success indications are discussed in
+   Section 6.2.)  The EAP server may also include derived keying
+   material in the message it sends to the authenticator.  The peer has
+   derived the same keying material, so the authenticator does not
+   forward the keying material to the peer along with EAP-Success.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 10]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+       Peer                                             Authenticator
+          |                      EAP-Request/Identity             |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/Identity                                 |
+          | (Includes user's NAI)                                 |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server runs AKA algorithms,  |
+          |                            | generates RAND and AUTN.     |
+          |                            +------------------------------+
+          |                         EAP-Request/AKA-Challenge     |
+          |                         (AT_RAND, AT_AUTN, AT_MAC)    |
+          |<------------------------------------------------------|
+      +-------------------------------------+                     |
+      | Peer runs AKA algorithms,           |                     |
+      | verifies AUTN and MAC, derives RES  |                     |
+      | and session key                     |                     |
+      +-------------------------------------+                     |
+          | EAP-Response/AKA-Challenge                            |
+          | (AT_RES, AT_MAC)                                      |
+          |------------------------------------------------------>|
+          |                          +--------------------------------+
+          |                          | Server checks the given RES,   |
+          |                          | and MAC and finds them correct.|
+          |                          +--------------------------------+
+          |                                          EAP-Success  |
+          |<------------------------------------------------------|
+
+              Figure 1: EAP-AKA full authentication procedure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 11]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Figure 2 shows how the EAP server rejects the Peer due to a failed
+   authentication.
+
+       Peer                                              Authenticator
+          |                      EAP-Request/Identity             |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/Identity                                 |
+          | (Includes user's NAI)                                 |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server runs AKA algorithms,  |
+          |                            | generates RAND and AUTN.     |
+          |                            +------------------------------+
+          |                      EAP-Request/AKA-Challenge        |
+          |                      (AT_RAND, AT_AUTN, AT_MAC)       |
+          |<------------------------------------------------------|
+      +-------------------------------------+                     |
+      | Peer runs AKA algorithms,           |                     |
+      | possibly verifies AUTN, and sends an|                     |
+      | invalid response                    |                     |
+      +-------------------------------------+                     |
+          | EAP-Response/AKA-Challenge                            |
+          | (AT_RES, AT_MAC)                                      |
+          |------------------------------------------------------>|
+          |              +------------------------------------------+
+          |              | Server checks the given RES and the MAC, |
+          |              | and finds one of them incorrect.         |
+          |              +------------------------------------------+
+          |                      EAP-Request/AKA-Notification     |
+          |<------------------------------------------------------|
+          | EAP-Response/AKA-Notification                         |
+          |------------------------------------------------------>|
+          |                                          EAP-Failure  |
+          |<------------------------------------------------------|
+
+                    Figure 2: Peer authentication fails
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 12]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Figure 3 shows the peer rejecting the AUTN of the EAP server.
+
+   The peer sends an explicit error message (EAP-Response/
+   AKA-Authentication-Reject) to the EAP server, as usual in AKA when
+   AUTN is incorrect.  This allows the EAP server to produce the same
+   error statistics that AKA generally produces in UMTS or CDMA2000.
+
+        Peer                                             Authenticator
+          |                      EAP-Request/Identity             |
+          |<------------------------------------------------------|
+          | EAP-Response/Identity                                 |
+          | (Includes user's NAI)                                 |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server runs AKA algorithms,  |
+          |                            | generates RAND and a bad AUTN|
+          |                            +------------------------------+
+          |                         EAP-Request/AKA-Challenge     |
+          |                         (AT_RAND, AT_AUTN, AT_MAC)    |
+          |<------------------------------------------------------|
+      +-------------------------------------+                     |
+      | Peer runs AKA algorithms            |                     |
+      | and discovers AUTN that can not be  |                     |
+      | verified                            |                     |
+      +-------------------------------------+                     |
+          | EAP-Response/AKA-Authentication-Reject                |
+          |------------------------------------------------------>|
+          |                                          EAP-Failure  |
+          |<------------------------------------------------------|
+
+                  Figure 3: Network authentication fails
+
+   The AKA uses shared secrets between the Peer and the Peer's home
+   operator, together with a sequence number, to actually perform an
+   authentication.  In certain circumstances, shown in Figure 4, it is
+   possible for the sequence numbers to get out of sequence.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 13]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+        Peer                                             Authenticator
+          |                      EAP-Request/Identity             |
+          |<------------------------------------------------------|
+          | EAP-Response/Identity                                 |
+          | (Includes user's NAI)                                 |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server runs AKA algorithms,  |
+          |                            | generates RAND and AUTN.     |
+          |                            +------------------------------+
+          |                         EAP-Request/AKA-Challenge     |
+          |                         (AT_RAND, AT_AUTN, AT_MAC)    |
+          |<------------------------------------------------------|
+      +-------------------------------------+                     |
+      | Peer runs AKA algorithms            |                     |
+      | and discovers AUTN that contains an |                     |
+      | inappropriate sequence number       |                     |
+      +-------------------------------------+                     |
+          | EAP-Response/AKA-Synchronization-Failure              |
+          | (AT_AUTS)                                             |
+          |------------------------------------------------------>|
+          |                              +---------------------------+
+          |                              | Perform resynchronization |
+          |                              | Using AUTS and            |
+          |                              | the sent RAND             |
+          |                              +---------------------------+
+          |                                                       |
+
+                 Figure 4: Sequence number synchronization
+
+   After the resynchronization process has taken place in the server and
+   AAA side, the process continues by the server side sending a new
+   EAP-Request/AKA-Challenge message.
+
+   In addition to the full authentication scenarios described above,
+   EAP-AKA includes a fast re-authentication procedure, which is
+   specified in Section 5.  Fast re-authentication is based on keys
+   derived on full authentication.  If the peer has maintained state
+   information for re-authentication and wants to use fast
+   re-authentication, then the peer indicates this by using a specific
+   fast re-authentication identity instead of the permanent identity or
+   a pseudonym identity.
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 14]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+4.  Operation
+
+4.1.  Identity Management
+
+4.1.1.  Format, Generation, and Usage of Peer Identities
+
+4.1.1.1.  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
+   [RFC3748].
+
+   Subscribers of mobile networks are identified with the International
+   Mobile Subscriber Identity (IMSI) [TS23.003].  The IMSI is a string
+   of not more than 15 digits.  It is composed of a Mobile Country Code
+   (MCC) of 3 digits, a Mobile Network Code (MNC) of 2 or 3 digits, and
+   a Mobile Subscriber Identification Number (MSIN) of not more than 10
+   digits.  MCC and MNC uniquely identify the GSM 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
+   Identifier (NAI) [RFC4282].  When used in a roaming environment, the
+   NAI is composed of a username and a realm, separated with "@"
+   (username@realm).  The username portion identifies the subscriber
+   within the realm.
+
+   This section specifies the peer identity format used in EAP-AKA.  In
+   this document, the term identity or peer identity refers to the whole
+   identity string that is used to identify the peer.  The peer identity
+   may include a realm portion.  "Username" refers to the portion of the
+   peer identity that identifies the user, i.e., the username does not
+   include the realm portion.
+
+4.1.1.2.  Identity Privacy Support
+
+   EAP-AKA includes optional identity privacy (anonymity) support that
+   can be used to hide the cleartext permanent identity and thereby make
+   the subscriber's EAP exchanges untraceable to eavesdroppers.  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 be used in other contexts as well.  Identity privacy
+   is based on temporary identities, or pseudonyms, which are equivalent
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 15]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   to but separate from the Temporary Mobile Subscriber Identities
+   (TMSI) that are used on cellular networks.  Please see Section 12.1
+   for security considerations regarding identity privacy.
+
+4.1.1.3.  Username Types in EAP-AKA Identities
+
+   There are three types of usernames in EAP-AKA peer identities:
+
+   (1) Permanent usernames.  For example,
+   0123456789098765@myoperator.com might be a valid permanent identity.
+   In this example, 0123456789098765 is the permanent username.
+
+   (2) Pseudonym usernames.  For example, 2s7ah6n9q@myoperator.com might
+   be a valid pseudonym identity.  In this example, 2s7ah6n9q is the
+   pseudonym username.
+
+   (3) Fast re-authentication usernames.  For example,
+   43953754@myoperator.com might be a valid fast re-authentication
+   identity.  In this case, 43953754 is the fast re-authentication
+   username.  Unlike permanent usernames and pseudonym usernames, fast
+   re-authentication usernames are one-time identifiers, which are not
+   re-used across EAP exchanges.
+
+   The first two types of identities are used only on full
+   authentication, and the last type only on fast re-authentication.
+   When the optional identity privacy support is not used, the
+   non-pseudonym permanent identity is used on full authentication.  The
+   fast re-authentication exchange is specified in Section 5.
+
+4.1.1.4.  Username 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 an 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 that
+   the peer includes in EAP-Response/Identity, and although 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.
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 16]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+4.1.1.5.  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 subscriber's home
+   operator and it MAY be a configurable parameter in the EAP-AKA 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 an AKA subscriber.  Such a reserved
+   NAI realm may be useful as a hint of 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 to how it selects 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
+   way to derive the realm from the IMSI, using the realm
+   3gppnetwork.org, will be specified in [TS23.003].
+
+   Some old implementations derive the realm name from the IMSI by
+   concatenating "mnc", the MNC digits of IMSI, ".mcc", the MCC digits
+   of IMSI, and ".owlan.org".  For example, if the IMSI is
+   123456789098765, and the MNC is three digits long, then the derived
+   realm name is "mnc456.mcc123.owlan.org".  As there are no DNS servers
+   running at owlan.org, these realm names can only be used with
+   manually configured AAA routing.  New implementations SHOULD use the
+   mechanism specified in [TS23.003] instead of owlan.org.
+
+   The IMSI is a string of digits without any explicit structure, so the
+   peer may not be able to determine the length of the MNC portion.  If
+   the peer is not able to determine whether the MNC is two or three
+   digits long, the peer MAY use a 3-digit MNC.  If the correct length
+   of the MNC is two, then the MNC used in the realm name includes the
+   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.1.1.6.  Format of the Permanent Username
+
+   The non-pseudonym permanent username SHOULD be derived from the IMSI.
+   In this case, the permanent username MUST be of the format "0" |
+   IMSI, where the character "|" denotes concatenation.  In other words,
+   the first character of the username is the digit zero (ASCII value 30
+   hexadecimal), followed by the IMSI.  The IMSI is an ASCII string that
+   consists of not more than 15 decimal digits (ASCII values between 30
+
+
+
+Arkko & Haverinen            Informational                     [Page 17]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   and 39 hexadecimal), one character per IMSI digit, in the order as
+   specified in [TS23.003].  For example, a permanent username derived
+   from the IMSI 295023820005424 would be encoded as the ASCII string
+   "0295023820005424" (byte values in hexadecimal notation: 30 32 39 35
+   30 32 33 38 32 30 30 30 35 34 32 34)
+
+   The EAP server MAY use the leading "0" as a hint to try EAP-AKA as
+   the first authentication method during method negotiation, rather
+   than using, for example, EAP-SIM.  The EAP-AKA server MAY propose
+   EAP-AKA even if the leading character was not "0".
+
+   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.
+
+4.1.1.7.  Generating Pseudonyms and Fast Re-Authentication Identities by
+          the Server
+
+   Pseudonym usernames and fast re-authentication identities are
+   generated by the EAP server.  The EAP server produces pseudonym
+   usernames and fast 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 fast re-authentication identity.
+
+   EAP-AKA includes no provisions to ensure that the same EAP server
+   that generated a pseudonym username will be used on the
+   authentication exchange when the pseudonym username is used.  It is
+   recommended that the EAP servers implement some centralized mechanism
+   to allow all EAP servers of the home operator to map pseudonyms
+   generated by other severs to the permanent identity.  If no such
+   mechanism is available, then the EAP server, failing to understand a
+   pseudonym issued by another server, can request the peer to send the
+   permanent identity.
+
+   When issuing a fast re-authentication identity, the EAP server may
+   include a realm name in the identity that will cause the fast
+   re-authentication request to be forwarded to the same EAP server.
+
+   When generating fast re-authentication identities, the server SHOULD
+   choose a fresh, new fast re-authentication identity that is different
+   from the previous ones that were used after the same full
+   authentication exchange.  A full authentication exchange and the
+   associated fast re-authentication exchanges are referred to here as
+   the same "full authentication context".  The fast re-authentication
+   identity SHOULD include a random component.  The random component
+
+
+
+Arkko & Haverinen            Informational                     [Page 18]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   works as a full authentication context identifier.  A context-
+   specific fast re-authentication identity can help the server to
+   detect whether its fast re-authentication state information matches
+   the peer's fast re-authentication state information (in other words,
+   whether the state information is from the same full authentication
+   exchange).  The random component also makes the fast re-
+   authentication identities unpredictable, so an attacker cannot
+   initiate a fast re-authentication exchange to get the server's
+   EAP-Request/AKA-Reauthentication packet.
+
+   Transmitting pseudonyms and fast re-authentication identities from
+   the server to the peer is discussed in Section 4.1.1.8.  The
+   pseudonym is transmitted as a username, without an NAI realm, and the
+   fast re-authentication identity is transmitted as a complete NAI,
+   including a realm portion if a realm is required.  The realm is
+   included in the fast re-authentication identity in order to allow the
+   server to include a server-specific realm.
+
+   Regardless of construction method, the pseudonym username MUST
+   conform to the grammar specified for the username portion of an NAI.
+   Also, the fast re-authentication identity 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 fast re-authentication identities that they generate are
+   unique.
+
+   In any case, it is necessary that permanent usernames, pseudonym
+   usernames, and fast re-authentication usernames 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 to the
+   server when deciding which method to offer.
+
+   In general, it is the task of the EAP server and the policies of its
+   administrator to ensure sufficient separation of the usernames.
+   Pseudonym usernames and fast re-authentication usernames are both
+   produced and used by the EAP server.  The EAP server MUST compose
+   pseudonym usernames and fast re-authentication usernames so that it
+   can recognize if an NAI username is an EAP-AKA pseudonym username or
+   an EAP-AKA fast 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 fast
+   re-authentication usernames (e.g., the pseudonym could begin with a
+   leading "2" character).  When mapping a fast re-authentication
+   identity to a permanent identity, the server SHOULD only examine the
+   username portion of the fast re-authentication identity and ignore
+   the realm portion of the identity.
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 19]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Because the peer may fail to save a pseudonym username that was sent
+   in an EAP-Request/AKA-Challenge (for example, due to malfunction),
+   the EAP server SHOULD maintain, at least, the most recently used
+   pseudonym username in addition to the most recently issued pseudonym
+   username.  If the authentication exchange is not completed
+   successfully, then the server SHOULD NOT overwrite the pseudonym
+   username that was issued during the most recent successful
+   authentication exchange.
+
+4.1.1.8.  Transmitting Pseudonyms and Fast Re-Authentication Identities
+          to the Peer
+
+   The server transmits pseudonym usernames and fast 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 fast re-authentication
+   identity in the value field of the AT_ENCR_DATA attribute.  Because
+   identity privacy support and fast re-authentication are optional to
+   implement, the peer MAY ignore the AT_ENCR_DATA attribute and always
+   use the permanent identity.  On fast re-authentication (discussed in
+   Section 5), the server MAY include a new, encrypted fast 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 fast re-authentication identity is
+   included, then the peer MAY save it together with other fast re-
+   authentication state information, as discussed in Section 5, for the
+   next fast 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 fast re-authentication
+   identities are one-time usernames, which the peer MUST NOT re-use.
+   When the peer uses a fast re-authentication identity in an EAP
+   exchange, the peer MUST discard the fast re-authentication identity
+   and not re-use it in another EAP authentication exchange, even if the
+   authentication exchange was not completed.
+
+4.1.1.9.  Usage of the Pseudonym by the Peer
+
+   When the optional identity privacy support is used on full
+   authentication, the peer MAY use a pseudonym username received as
+   part of a previous full authentication sequence as the username
+
+
+
+Arkko & Haverinen            Informational                     [Page 20]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   portion of the NAI.  The peer MUST NOT modify the pseudonym username
+   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 an NAI realm portion.  The
+   selection of the NAI realm is discussed above.  The peer can select
+   the realm portion similarly, regardless of whether it uses the
+   permanent username or a pseudonym username.
+
+4.1.1.10.  Usage of the Fast Re-Authentication Identity by the Peer
+
+   On fast re-authentication, the peer uses the fast re-authentication
+   identity received as part of the previous authentication sequence.  A
+   new fast re-authentication identity may be delivered as part of both
+   full authentication and fast re-authentication.  The peer MUST NOT
+   modify the username part of the fast re-authentication identity
+   received in AT_NEXT_REAUTH_ID, except in cases when username
+   decoration is required.  Even in these cases, the "root" fast
+   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
+
+4.1.2.1.  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 fast 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 fast re-authentication identity, and
+   if the fast re-authentication identity matches with a valid fast
+   re-authentication identity maintained by the server, then a fast
+   re-authentication exchange is performed, as described in Section 5.
+
+   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
+
+
+
+Arkko & Haverinen            Informational                     [Page 21]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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 that the
+   peer send its permanent identity.  The EAP-Request/AKA-Challenge,
+   EAP-Response/AKA-Challenge, or the packets used on fast 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 10.13.
+
+   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 fast re-authentication identity.
+
+   Please note that only the EAP-AKA peer and the EAP-AKA server process
+   the AT_IDENTITY attribute and entities that pass through; EAP packets
+   do not process this attribute.  Hence, 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 unless the identity authenticated in the
+   AT_IDENTITY attribute is communicated to them in another way within
+   the AAA protocol.
+
+4.1.2.2.  Relying on EAP-Response/Identity Discouraged
+
+   The EAP-Response/Identity packet is not method specific; therefore,
+   in many implementations it may be handled by an EAP Framework.  This
+   introduces an additional layer of processing between the EAP peer and
+   EAP server.  The extra layer of processing may cache identity
+   responses or add decorations to the identity.  A modification of the
+   identity response will cause the EAP peer and EAP server to use
+   different identities in the key derivation, which will cause the
+   protocol to fail.
+
+   For this reason, it is RECOMMENDED that the EAP peer and server use
+   the method-specific identity attributes in EAP-AKA, and the server is
+   strongly discouraged from relying upon the EAP-Response/Identity.
+
+   In particular, if the EAP server receives a decorated identity in
+   EAP-Response/Identity, then the EAP server MUST use the
+   identity-requesting attributes to request the peer to send an
+   unmodified and undecorated copy of the identity in AT_IDENTITY.
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 22]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+4.1.3.  Choice of Identity for the EAP-Response/Identity
+
+   If EAP-AKA peer is started upon receiving an EAP-Request/Identity
+   message, then the peer MAY use an EAP-AKA identity in the EAP-
+   Response/Identity packet.  In this case, the peer performs the
+   following steps.
+
+   If the peer has maintained fast re-authentication state information
+   and if the peer wants to use fast re-authentication, then the peer
+   transmits the fast 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.
+
+4.1.4.  Server Operation in the Beginning of EAP-AKA Exchange
+
+   As discussed in Section 4.1.2.2, the server SHOULD NOT rely on an
+   identity string received in EAP-Response/Identity.  Therefore, the
+   RECOMMENDED way to start an EAP-AKA exchange is to ignore any
+   received identity strings.  The server SHOULD begin the EAP-AKA
+   exchange by issuing the EAP-Request/AKA-Identity packet with an
+   identity-requesting attribute to indicate that the server wants the
+   peer to include an identity in the AT_IDENTITY attribute of the EAP-
+   Response/AKA-Identity message.  Three methods to request an identity
+   from the peer are discussed below.
+
+   If the server chooses to not ignore the contents of
+   EAP-Response/Identity, then the server may already receive an EAP-AKA
+   identity in this packet.  However, if the EAP server has not received
+   any EAP-AKA peer identity (permanent identity, pseudonym identity, or
+   fast re-authentication identity) from the peer when sending the first
+   EAP-AKA request, or if the EAP server has received an
+   EAP-Response/Identity packet but the contents do not appear to be a
+   valid permanent identity, pseudonym identity, or a re-authentication
+   identity, then the server MUST request an identity from the peer
+   using one of the methods below.
+
+   The server sends the EAP-Request/AKA-Identity message with the
+   AT_PERMANENT_ID_REQ attribute to indicate that the server wants the
+   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:
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 23]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   o  The server does not support fast re-authentication or identity
+      privacy.
+   o  The server decided to process a received identity, and the server
+      recognizes the received identity as a pseudonym identity, but the
+      server is not able to map the pseudonym identity to a permanent
+      identity.
+
+   The server issues the EAP-Request/AKA-Identity packet with the
+   AT_FULLAUTH_ID_REQ attribute to indicate that the server wants the
+   peer to include a full authentication identity (pseudonym identity or
+   permanent identity) in the AT_IDENTITY attribute of the
+   EAP-Response/AKA-Identity message.  This is done in the following
+   cases:
+
+   o  The server does not support fast re-authentication and the server
+      supports identity privacy
+   o  The server decided to process a received identity, and the server
+      recognizes the received identity as a re-authentication identity
+      but the server is not able to map the re-authentication identity
+      to a permanent identity
+
+   The server issues the EAP-Request/AKA-Identity packet with the
+   AT_ANY_ID_REQ attribute to indicate that the server wants the peer to
+   include an identity in the AT_IDENTITY attribute of the
+   EAP-Response/AKA-Identity message, and the server does not indicate
+   any preferred type for the identity.  This is done in other cases,
+   such as when the server ignores a received EAP-Response/Identity,
+   when the server does not have any identity, or when the server does
+   not recognize the format of a received identity.
+
+4.1.5.  Processing of EAP-Request/AKA-Identity by the Peer
+
+   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, and if
+   the peer does not have a pseudonym available, then the peer MUST
+   respond with EAP-Response/AKA-Identity and include the permanent
+   identity in AT_IDENTITY.  If the peer has a pseudonym available, then
+   the peer MAY refuse to send the permanent identity; hence, in this
+   case 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".
+
+   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 include the pseudonym identity in
+
+
+
+Arkko & Haverinen            Informational                     [Page 24]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   AT_IDENTITY.  If the peer does not have a pseudonym when it receives
+   this message, then the peer MUST respond with EAP-Response/
+   AKA-Identity and include the permanent identity in AT_IDENTITY.  The
+   Peer MUST NOT use a fast 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 fast re-authentication state information and
+   wants to use fast re-authentication, then the peer responds with
+   EAP-Response/AKA-Identity and includes the fast 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, so the peer MUST NOT respond to more than three
+   EAP-Request/AKA-Identity messages within an EAP exchange.  The peer
+   MUST verify that the sequence of EAP-Request/AKA-Identity packets the
+   peer receives comply with the sequencing rules defined in this
+   document.  That is, 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 or an
+   unexpected message, is specified in Section 6.3.1.
+
+4.1.6.  Attacks against Identity Privacy
+
+   The section above specifies two possible ways the peer can operate
+   upon receipt of AT_PERMANENT_ID_REQ because a received
+   AT_PERMANENT_ID_REQ does not necessarily originate from the valid
+   network.  However, 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,
+
+
+
+Arkko & Haverinen            Informational                     [Page 25]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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
+   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.
+
+4.1.7.  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 an
+   EAP-Request/AKA-Notification packet with AT_NOTIFICATION code
+   "General failure" (16384) to terminate the EAP exchange.  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
+   fast re-authentication identity and the server agrees on using
+   re-authentication, then the server proceeds with fast
+   re-authentication by sending EAP-Request/AKA-Reauthentication
+   (Section 5).
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 26]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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 fast 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
+   fast re-authentication identity, which the server is able to map to a
+   permanent identity, and if the server does not want to use fast
+   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
+   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.2.  Message Sequence Examples (Informative)
+
+   This section contains non-normative message sequence examples to
+   illustrate how the peer identity can be communicated to the server.
+
+4.2.1.  Usage of AT_ANY_ID_REQ
+
+   Obtaining the peer identity with EAP-AKA attributes is illustrated in
+   Figure 5 below.
+
+       Peer                                             Authenticator
+          |                                                       |
+          |                            +------------------------------+
+          |                            | Server does not have any     |
+          |                            | Subscriber identity available|
+          |                            | When starting EAP-AKA        |
+          |                            +------------------------------+
+          |          EAP-Request/AKA-Identity                     |
+          |          (AT_ANY_ID_REQ)                              |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY)                                         |
+          |------------------------------------------------------>|
+          |                                                       |
+                     Figure 5: Usage of AT_ANY_ID_REQ
+
+
+
+Arkko & Haverinen            Informational                     [Page 27]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+4.2.2.  Fall Back on Full Authentication
+
+   Figure 6 illustrates the case when the server does not recognize the
+   fast re-authentication identity the peer used in AT_IDENTITY.
+
+       Peer                                             Authenticator
+          |                                                       |
+          |                            +------------------------------+
+          |                            | Server does not have any     |
+          |                            | Subscriber identity available|
+          |                            | When starting EAP-AKA        |
+          |                            +------------------------------+
+          |        EAP-Request/AKA-Identity                       |
+          |        (AT_ANY_ID_REQ)                                |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY containing a fast re-auth. identity)     |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server does not recognize    |
+          |                            | The fast re-auth.            |
+          |                            | Identity                     |
+          |                            +------------------------------+
+          |     EAP-Request/AKA-Identity                          |
+          |     (AT_FULLAUTH_ID_REQ)                              |
+          |<------------------------------------------------------|
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY with a full-auth. Identity)              |
+          |------------------------------------------------------>|
+          |                                                       |
+
+                Figure 6: Fall back on full authentication
+
+   If the server recognizes the fast re-authentication identity, but
+   still wants to fall back on full authentication, the server may issue
+   the EAP-Request/AKA-Challenge packet.  In this case, the full
+   authentication procedure proceeds as usual.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 28]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+4.2.3.  Requesting the Permanent Identity 1
+
+   Figure 7 illustrates the case when the EAP server fails to decode a
+   pseudonym identity included in the EAP-Response/Identity packet.
+
+       Peer                                             Authenticator
+          |                               EAP-Request/Identity    |
+          |<------------------------------------------------------|
+          | EAP-Response/Identity                                 |
+          | (Includes a pseudonym)                                |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server fails to decode the   |
+          |                            | Pseudonym.                   |
+          |                            +------------------------------+
+          |  EAP-Request/AKA-Identity                             |
+          |  (AT_PERMANENT_ID_REQ)                                |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY with permanent identity)                 |
+          |------------------------------------------------------>|
+          |                                                       |
+
+               Figure 7: Requesting the permanent identity 1
+
+   If the server recognizes the permanent identity, then the
+   authentication sequence proceeds as usual with the EAP Server issuing
+   the EAP-Request/AKA-Challenge message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 29]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+4.2.4.  Requesting the Permanent Identity 2
+
+   Figure 8 illustrates the case when the EAP server fails to decode the
+   pseudonym included in the AT_IDENTITY attribute.
+
+       Peer                                             Authenticator
+          |                                                       |
+          |                            +------------------------------+
+          |                            | Server does not have any     |
+          |                            | Subscriber identity available|
+          |                            | When starting EAP-AKA        |
+          |                            +------------------------------+
+          |        EAP-Request/AKA-Identity                       |
+          |        (AT_ANY_ID_REQ)                                |
+          |<------------------------------------------------------|
+          |                                                       |
+          |EAP-Response/AKA-Identity                              |
+          |(AT_IDENTITY with a pseudonym identity)                |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server fails to decode the   |
+          |                            | Pseudonym in AT_IDENTITY     |
+          |                            +------------------------------+
+          |                EAP-Request/AKA-Identity               |
+          |                (AT_PERMANENT_ID_REQ)                  |
+          |<------------------------------------------------------|
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY with permanent identity)                 |
+          |------------------------------------------------------>|
+          |                                                       |
+
+               Figure 8: Requesting the permanent identity 2
+
+4.2.5.  Three EAP/AKA-Identity Round Trips
+
+   Figure 9 illustrates the case with three EAP/AKA-Identity round
+   trips.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 30]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+       Peer                                             Authenticator
+          |                                                       |
+          |                            +------------------------------+
+          |                            | Server does not have any     |
+          |                            | Subscriber identity available|
+          |                            | When starting EAP-AKA        |
+          |                            +------------------------------+
+          |        EAP-Request/AKA-Identity                       |
+          |        (AT_ANY_ID_REQ)                                |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY with fast re-auth. identity)             |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server does not accept       |
+          |                            | The fast re-authentication   |
+          |                            | Identity                     |
+          |                            +------------------------------+
+          |                                                       |
+          :                                                       :
+          :                                                       :
+
+
+          :                                                       :
+          :                                                       :
+          |     EAP-Request/AKA-Identity                          |
+          |     (AT_FULLAUTH_ID_REQ)                              |
+          |<------------------------------------------------------|
+          |EAP-Response/AKA-Identity                              |
+          |(AT_IDENTITY with a pseudonym identity)                |
+          |------------------------------------------------------>|
+          |                            +------------------------------+
+          |                            | Server fails to decode the   |
+          |                            | Pseudonym in AT_IDENTITY     |
+          |                            +------------------------------+
+          |           EAP-Request/AKA-Identity                    |
+          |           (AT_PERMANENT_ID_REQ)                       |
+          |<------------------------------------------------------|
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY with permanent identity)                 |
+          |------------------------------------------------------>|
+          |                                                       |
+
+                   Figure 9: Three EAP-AKA Start rounds
+
+   After the last EAP-Response/AKA-Identity message, the full
+   authentication sequence proceeds as usual.
+
+
+
+Arkko & Haverinen            Informational                     [Page 31]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+5.  Fast Re-Authentication
+
+5.1.  General
+
+   In some environments, EAP authentication may be performed frequently.
+   Because the EAP-AKA full authentication procedure uses the AKA
+   algorithms, and therefore requires fresh authentication vectors from
+   the Authentication Centre, the full authentication procedure may
+   result in many network operations when used very frequently.
+   Therefore, EAP-AKA includes a more inexpensive fast re-authentication
+   procedure that does not make use of the AKA algorithms and does not
+   need new vectors from the Authentication Centre.
+
+   Fast re-authentication is optional to implement for both the EAP-AKA
+   server and peer.  On each EAP authentication, either one of the
+   entities may fall back on full authentication if is does not want to
+   use fast re-authentication.
+
+   Fast re-authentication is based on the keys derived on the preceding
+   full authentication.  The same K_aut and K_encr keys used in full
+   authentication are used to protect EAP-AKA packets and attributes,
+   and the original Master Key from full authentication is used to
+   generate a fresh Master Session Key, as specified in Section 7.
+
+   The fast re-authentication exchange makes use of an unsigned 16-bit
+   counter, included in the AT_COUNTER attribute.  The counter has three
+   goals: 1) it can be used to limit the number of successive
+   reauthentication exchanges without full-authentication 2) it
+   contributes to the keying material, and 3) it protects the peer and
+   the server from replays.  On full authentication, both the server and
+   the peer initialize the counter to one.  The counter value of at
+   least one is used on the first fast re-authentication.  On subsequent
+   fast re-authentications, the counter MUST be greater than on any of
+   the previous fast re-authentications.  For example, on the second
+   fast re-authentication, counter value is two or greater, etc.  The
+   AT_COUNTER attribute is encrypted.
+
+   Both the peer and the EAP server maintain a copy of the counter.  The
+   EAP server sends its counter value to the peer in the fast
+   re-authentication request.  The peer MUST verify that its counter
+   value is less than or equal to the value sent by the EAP server.
+
+   The server includes an encrypted server random nonce (AT_NONCE_S) in
+   the fast re-authentication request.  The AT_MAC attribute in the
+   peer's response is calculated over NONCE_S to provide a
+   challenge/response authentication scheme.  The NONCE_S also
+   contributes to the new Master Session Key.
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 32]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Both the peer and the server SHOULD have an upper limit for the
+   number of subsequent fast re-authentications allowed before a full
+   authentication needs to be performed.  Because a 16-bit counter is
+   used in fast re-authentication, the theoretical maximum number of
+   re-authentications is reached when the counter value reaches FFFF
+   hexadecimal.  In order to use fast re-authentication, the peer and
+   the EAP server need to store the following values: Master Key, latest
+   counter value and the next fast re-authentication identity.  K_aut
+   and K_encr may either be stored or derived again from MK.  The server
+   may also need to store the permanent identity of the user.
+
+5.2.  Comparison to AKA
+
+   When analyzing the fast re-authentication exchange, it may be helpful
+   to compare it with the 3rd generation Authentication and Key
+   Agreement (AKA) exchange used on full authentication.  The counter
+   corresponds to the AKA sequence number, NONCE_S corresponds to RAND,
+   the AT_MAC in EAP-Request/AKA-Reauthentication corresponds to AUTN,
+   the AT_MAC in EAP-Response/AKA-Reauthentication corresponds to RES,
+   AT_COUNTER_TOO_SMALL corresponds to AUTS, and encrypting the counter
+   corresponds to the usage of the Anonymity Key.  Also, the key
+   generation on fast re-authentication, with regard to random or fresh
+   material, is similar to AKA -- the server generates the NONCE_S and
+   counter values, and the peer only verifies that the counter value is
+   fresh.
+
+   It should also be noted that encrypting the AT_NONCE_S, AT_COUNTER,
+   or AT_COUNTER_TOO_SMALL attributes is not important to the security
+   of the fast re-authentication exchange.
+
+5.3.  Fast Re-Authentication Identity
+
+   The fast re-authentication procedure makes use of separate
+   re-authentication user identities.  Pseudonyms and the permanent
+   identity are reserved for full authentication only.  If a fast
+   re-authentication identity is lost and the network does not recognize
+   it, the EAP server can fall back on full authentication.  If the EAP
+   server supports fast re-authentication, it MAY include the skippable
+   AT_NEXT_REAUTH_ID attribute in the encrypted data of EAP- Request/-
+   AKA-Challenge message.  This attribute contains a new
+   re-authentication identity for the next fast re-authentication.  The
+   attribute also works as a capability flag that indicates that the
+   server supports fast re-authentication and that the server wants to
+   continue using fast re-authentication within the current context.
+   The peer MAY ignore this attribute, in which case it will use full
+   authentication next time.  If the peer wants to use fast
+   re-authentication, it uses this fast re-authentication identity on
+   next authentication.  Even if the peer has a fast re-authentication
+
+
+
+Arkko & Haverinen            Informational                     [Page 33]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   identity, the peer MAY discard the re-authentication identity and use
+   a pseudonym or the permanent identity instead, in which case full
+   authentication MUST be performed.  If the EAP server does not include
+   the AT_NEXT_REAUTH_ID in the encrypted data of
+   EAP-Request/AKA-Challenge or EAP-Request/AKA-Reauthentication, then
+   the peer MUST discard its current fast re-authentication state
+   information and perform a full authentication next time.
+
+   In environments where a realm portion is needed in the peer identity,
+   the fast re-authentication identity received in AT_NEXT_REAUTH_ID
+   MUST contain both a username portion and a realm portion, as per the
+   NAI format.  The EAP Server can choose an appropriate realm part in
+   order to have the AAA infrastructure route subsequent fast
+   re-authentication-related requests to the same AAA server.  For
+   example, the realm part MAY include a portion that is specific to the
+   AAA server.  Hence, it is sufficient to store the context required
+   for fast re-authentication in the AAA server that performed the full
+   authentication.
+
+   The peer MAY use the fast re-authentication identity in the
+   EAP-Response/Identity packet or, in response to the server's
+   AT_ANY_ID_REQ attribute, the peer MAY use the fast re-authentication
+   identity in the AT_IDENTITY attribute of the EAP-Response/
+   AKA-Identity packet.
+
+   The peer MUST NOT modify the username portion of the fast
+   re-authentication identity, but the peer MAY modify the realm portion
+   or replace it with another realm portion.  The peer might need to
+   modify the realm in order to influence the AAA routing, for example,
+   to make sure that the correct server is reached.  It should be noted
+   that sharing the same fast re-authentication key among several
+   servers may have security risks, so changing the realm portion of the
+   NAI in order to change the EAP server is not desirable.
+
+   Even if the peer uses a fast re-authentication identity, the server
+   may want to fall back on full authentication, for example, because
+   the server does not recognize the fast re-authentication identity or
+   does not want to use fast re-authentication.  If the server was able
+   to decode the fast re-authentication identity to the permanent
+   identity, the server issues the EAP-Request/AKA-Challenge packet to
+   initiate full authentication.  If the server was not able to recover
+   the peer's identity from the fast re-authentication identity, the
+   server starts the full authentication procedure by issuing an
+   EAP-Request/AKA-Identity packet.  This packet always starts a full
+   authentication sequence if it does not include the AT_ANY_ID_REQ
+   attribute.
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 34]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+5.4.  Fast Re-Authentication Procedure
+
+   Figure 10 illustrates the fast re-authentication procedure.  In this
+   example, the optional protected success indication is not used.
+   Encrypted attributes are denoted with '*'.  The peer uses its fast
+   re-authentication identity in the EAP-Response/Identity packet.  As
+   discussed above, an alternative way to communicate the fast
+   re-authentication identity to the server is for the peer to use the
+   AT_IDENTITY attribute in the EAP-Response/AKA-Identity message.  This
+   latter case is not illustrated in the figure below, and it is only
+   possible when the server requests that the peer send its identity by
+   including the AT_ANY_ID_REQ attribute in the EAP-Request/AKA-Identity
+   packet.
+
+   If the server recognizes the identity as a valid fast
+   re-authentication identity, and if the server agrees to use fast
+   re-authentication, then the server sends the EAP- Request/AKA-
+   Reauthentication packet to the peer.  This packet MUST include the
+   encrypted AT_COUNTER attribute, with a fresh counter value, the
+   encrypted AT_NONCE_S attribute that contains a random number chosen
+   by the server, the AT_ENCR_DATA and the AT_IV attributes used for
+   encryption, and the AT_MAC attribute that contains a message
+   authentication code over the packet.  The packet MAY also include an
+   encrypted AT_NEXT_REAUTH_ID attribute that contains the next fast
+   re-authentication identity.
+
+   Fast re-authentication identities are one-time identities.  If the
+   peer does not receive a new fast re-authentication identity, it MUST
+   use either the permanent identity or a pseudonym identity on the next
+   authentication to initiate full authentication.
+
+   The peer verifies that AT_MAC is correct and that the counter value
+   is fresh (greater than any previously used value).  The peer MAY save
+   the next fast re-authentication identity from the encrypted
+   AT_NEXT_REAUTH_ID for next time.  If all checks are successful, the
+   peer responds with the EAP-Response/AKA-Reauthentication packet,
+   including the AT_COUNTER attribute with the same counter value and
+   the AT_MAC attribute.
+
+   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-Reauthentication packet.  If these checks are
+   successful, the fast re-authentication has succeeded and the server
+   sends the EAP-Success packet to the peer.
+
+   If protected success indications (Section 6.2) were used, the
+   EAP-Success packet would be preceded by an EAP-AKA notification
+   round.
+
+
+
+Arkko & Haverinen            Informational                     [Page 35]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+        Peer                                             Authenticator
+          |                                                       |
+          |                               EAP-Request/Identity    |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/Identity                                 |
+          | (Includes a fast re-authentication identity)          |
+          |------------------------------------------------------>|
+          |                          +--------------------------------+
+          |                          | Server recognizes the identity |
+          |                          | and agrees on using fast       |
+          |                          | re-authentication              |
+          |                          +--------------------------------+
+          |  EAP-Request/AKA-Reauthentication                     |
+          |  (AT_IV, AT_ENCR_DATA, *AT_COUNTER,                   |
+          |   *AT_NONCE_S, *AT_NEXT_REAUTH_ID, AT_MAC)            |
+          |<------------------------------------------------------|
+          |                                                       |
+          :                                                       :
+          :                                                       :
+
+
+          :                                                       :
+          :                                                       :
+          |                                                       |
+     +-----------------------------------------------+            |
+     | Peer verifies AT_MAC and the freshness of     |            |
+     | the counter. Peer MAY store the new re-       |            |
+     | authentication identity for next re-auth.     |            |
+     +-----------------------------------------------+            |
+          |                                                       |
+          | EAP-Response/AKA-Reauthentication                     |
+          | (AT_IV, AT_ENCR_DATA, *AT_COUNTER with same value,    |
+          |  AT_MAC)                                              |
+          |------------------------------------------------------>|
+          |                          +--------------------------------+
+          |                          | Server verifies AT_MAC and     |
+          |                          | the counter                    |
+          |                          +--------------------------------+
+          |                                          EAP-Success  |
+          |<------------------------------------------------------|
+          |                                                       |
+
+                        Figure 10: Reauthentication
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 36]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+5.5.  Fast 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 by including the encrypted AT_COUNTER_TOO_SMALL in
+   EAP-Response/AKA-Reauthentication.  The server responds with
+   EAP-Request/AKA-Challenge to initiate a normal full authentication
+   procedure.  This is illustrated in Figure 11.  Encrypted attributes
+   are denoted with '*'.
+
+        Peer                                             Authenticator
+          |          EAP-Request/AKA-Identity                     |
+          |          (AT_ANY_ID_REQ)                              |
+          |<------------------------------------------------------|
+          |                                                       |
+          | EAP-Response/AKA-Identity                             |
+          | (AT_IDENTITY)                                         |
+          | (Includes a fast re-authentication identity)          |
+          |------------------------------------------------------>|
+          |                                                       |
+          |  EAP-Request/AKA-Reauthentication                     |
+          |  (AT_IV, AT_ENCR_DATA, *AT_COUNTER,                   |
+          |   *AT_NONCE_S, *AT_NEXT_REAUTH_ID, AT_MAC)            |
+          |<------------------------------------------------------|
+     +-----------------------------------------------+            |
+     | AT_MAC is valid but the counter is not fresh. |            |
+     +-----------------------------------------------+            |
+          | EAP-Response/AKA-Reauthentication                     |
+          | (AT_IV, AT_ENCR_DATA, *AT_COUNTER_TOO_SMALL,          |
+          |  *AT_COUNTER, AT_MAC)                                 |
+          |------------------------------------------------------>|
+          |            +----------------------------------------------+
+          |            | Server verifies AT_MAC but detects           |
+          |            | That peer has included AT_COUNTER_TOO_SMALL|
+          |            +----------------------------------------------+
+          |                        EAP-Request/AKA-Challenge      |
+          |<------------------------------------------------------|
+     +---------------------------------------------------------------+
+     |                Normal full authentication follows.            |
+     +---------------------------------------------------------------+
+          |                                                       |
+
+            Figure 11: Fast re-authentication counter too small
+
+   In the figure above, the first three messages are similar to the
+   basic fast re-authentication case.  When the peer detects that the
+   counter value is not fresh, it includes the AT_COUNTER_TOO_SMALL
+   attribute in EAP-Response/AKA-Reauthentication.  This attribute
+
+
+
+Arkko & Haverinen            Informational                     [Page 37]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   doesn't contain any data but it is a request for the server to
+   initiate full authentication.  In this case, the peer MUST ignore the
+   contents of the server's AT_NEXT_REAUTH_ID attribute.
+
+   On receipt of AT_COUNTER_TOO_SMALL, the server verifies AT_MAC and
+   verifies that AT_COUNTER contains the same counter value as in the
+   EAP-Request/AKA-Reauthentication packet.  If not, the server
+   terminates the authentication exchange by sending the
+   EAP-Request/AKA-Notification packet with AT_NOTIFICATION code
+   "General failure" (16384).  If all checks on the packet are
+   successful, the server transmits an EAP-Request/AKA-Challenge packet
+   and the full authentication procedure is performed as usual.  Because
+   the server already knows the subscriber identity, it MUST NOT use the
+   EAP-Request/AKA-Identity packet to request the identity.
+
+   It should be noted that in this case, peer identity is only
+   transmitted in the AT_IDENTITY attribute at the beginning of the
+   whole EAP exchange.  The fast re-authentication identity used in this
+   AT_IDENTITY attribute will be used in key derivation (see Section 7).
+
+6.  EAP-AKA Notifications
+
+6.1.  General
+
+   EAP-AKA does not prohibit the use of the EAP Notifications as
+   specified in [RFC3748].  EAP Notifications can be used at any time in
+   the EAP-AKA exchange.  It should be noted that EAP-AKA does not
+   protect EAP Notifications.  EAP-AKA also specifies method-specific
+   EAP-AKA notifications, which are protected in some cases.
+
+   The EAP server can use EAP-AKA notifications to convey notifications
+   and result indications (Section 6.2) to the peer.
+
+   The server MUST use notifications in cases discussed in
+   Section 6.3.2.  When the EAP server issues an
+   EAP-Request/AKA-Notification packet to the peer, the peer MUST
+   process the notification packet.  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.
+
+   An EAP-AKA full authentication exchange or a fast re-authentication
+   exchange MUST NOT include more than one EAP-AKA notification round.
+
+   The notification code is a 16-bit number.  The most significant bit
+   is called the Success bit (S bit).  The S bit specifies whether the
+   notification implies failure.  The code values with the S bit set to
+   zero (code values 0...32767) are used on unsuccessful cases.  The
+
+
+
+Arkko & Haverinen            Informational                     [Page 38]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   receipt of a notification code from this range implies failed EAP
+   exchange, 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.
+
+   The receipt of a notification code with the S bit set to one (values
+   32768...65536) does not imply failure.  Notification code "Success"
+   (32768) has been reserved as a general notification code to indicate
+   successful authentication.
+
+   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 a successful EAP/AKA-
+   Challenge round in full authentication or a successful EAP/AKA-
+   Reauthentication round in re-authentication.  A re-authentication
+   round is considered successful only if the peer has successfully
+   verified AT_MAC and AT_COUNTER attributes, and does not include the
+   AT_COUNTER_TOO_SMALL attribute in EAP-Response/AKA-Reauthentication.
+
+   If the P bit is set to one, the notification can only by used before
+   the EAP/AKA-Challenge round in full authentication or before the
+   EAP/AKA-Reauthentication round in reauthentication.  These
+   notifications can only be used to indicate various failure cases.  In
+   other words, if the P bit is set to one, then the S bit MUST be set
+   to zero.
+
+   Section 9.10 and Section 9.11 specify what other attributes must be
+   included in the notification packets.
+
+   Some of the notification codes are authorization related and hence
+   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.
+
+6.2.  Result Indications
+
+   As discussed in Section 6.3, the server and the peer use explicit
+   error messages in all error cases.  If the server detects an error
+   after successful authentication, the server uses an EAP-AKA
+   notification to indicate failure to the peer.  In this case, the
+   result indication is integrity and replay protected.
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 39]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   By sending an EAP-Response/AKA-Challenge packet or an
+   EAP-Response/AKA-Reauthentication packet (without
+   AT_COUNTER_TOO_SMALL), the peer indicates that it has successfully
+   authenticated the server and that the peer's local policy accepts the
+   EAP exchange.  In other words, these packets are implicit success
+   indications from the peer to the server.
+
+   EAP-AKA also supports optional protected success indications from the
+   server to the peer.  If the EAP server wants to use protected success
+   indications, it includes the AT_RESULT_IND attribute in the
+   EAP-Request/AKA-Challenge or the EAP-Request/AKA-Reauthentication
+   packet.  This attribute indicates that the EAP server would like to
+   use result indications in both successful and unsuccessful cases.  If
+   the peer also wants this, the peer includes AT_RESULT_IND in
+   EAP-Response/AKA-Challenge or EAP-Response/AKA-Reauthentication.  The
+   peer MUST NOT include AT_RESULT_IND if it did not receive
+   AT_RESULT_IND from the server.  If both the peer and the server used
+   AT_RESULT_IND, then the EAP exchange is not complete yet, but an
+   EAP-AKA notification round will follow.  The following EAP-AKA
+   notification may indicate either failure or success.
+
+   Success indications with the AT_NOTIFICATION code "Success" (32768)
+   can only be used if both the server and the peer indicate they want
+   to use them with AT_RESULT_IND.  If the server did not include
+   AT_RESULT_IND in the EAP-Request/AKA-Challenge or
+   EAP-Request/AKA-Reauthentication packet, or if the peer did not
+   include AT_RESULT_IND in the corresponding response packet, then the
+   server MUST NOT use protected success indications.
+
+   Because the server uses the AT_NOTIFICATION code "Success" (32768) to
+   indicate that the EAP exchange has completed successfully, the EAP
+   exchange cannot fail when the server processes the EAP-AKA response
+   to this notification.  Hence, the server MUST ignore the contents of
+   the EAP-AKA response it receives to the EAP-Request/AKA-Notification
+   with this code.  Regardless of the contents of the EAP-AKA response,
+   the server MUST send EAP-Success as the next packet.
+
+6.3.  Error Cases
+
+   This section specifies the operation of the peer and the server in
+   error cases.  The subsections below require the EAP-AKA peer and
+   server to send an error packet (EAP-Response/AKA-Client-Error,
+   EAP-Response/AKA-Authentication-Reject or
+   EAP-Response/AKA-Synchronization-Failure from the peer and
+   EAP-Request/AKA-Notification from the server) in error cases.
+   However, implementations SHOULD NOT rely upon the correct error
+   reporting behavior of the peer, authenticator, or server.  It is
+   possible for error messages and other messages to be lost in transit,
+
+
+
+Arkko & Haverinen            Informational                     [Page 40]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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.
+
+6.3.1.  Peer Operation
+
+   Two special error messages have been specified for error cases that
+   are related to the processing of the AKA AUTN parameter, as described
+   in Section 3: (1) if the peer does not accept AUTN, the peer responds
+   with EAP-Response/AKA-Authentication-Reject (Section 9.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 9.6), and the
+   server proceeds with a new EAP-Request/AKA-Challenge.
+
+   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.
+
+   By default, the peer uses the client error code 0, "unable to process
+   packet".  This error code is used in the following cases:
+
+   o  EAP exchange is not acceptable according to the peer's local
+      policy.
+   o  The peer is not able to parse the EAP request, i.e., the EAP
+      request is malformed.
+   o  The peer encountered a malformed attribute.
+   o  Wrong attribute types or duplicate attributes have been included
+      in the EAP request.
+   o  A mandatory attribute is missing.
+   o  Unrecognized non-skippable attribute.
+   o  Unrecognized or unexpected EAP-AKA Subtype in the EAP request.
+   o  Invalid AT_MAC.  The peer SHOULD log this event.
+   o  Invalid AT_CHECKCODE.  The peer SHOULD log this event.
+   o  Invalid pad bytes in AT_PADDING.
+   o  The peer does not want to process AT_PERMANENT_ID_REQ.
+
+6.3.2.  Server Operation
+
+   If an EAP-AKA server detects an error in a received EAP-AKA response,
+   the server MUST issue the EAP-Request/AKA-Notification packet with an
+   AT_NOTIFICATION code that implies failure.  By default, the server
+   uses one of the general failure codes ("General failure after
+   authentication" (0) or "General failure" (16384)).  The choice
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 41]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   between these two codes depends on the phase of the EAP-AKA exchange,
+   see Section 6.  The error cases when the server issues an
+   EAP-Request/AKA-Notification that implies failure include the
+   following:
+
+   o  The server is not able to parse the peer's EAP response.
+   o  The server encounters a malformed attribute, a non-recognized
+      non-skippable attribute, or a duplicate attribute.
+   o  A mandatory attribute is missing or an invalid attribute was
+      included.
+   o  Unrecognized or unexpected EAP-AKA Subtype in the EAP Response.
+   o  Invalid AT_MAC.  The server SHOULD log this event.
+   o  Invalid AT_CHECKCODE.  The server SHOULD log this event.
+   o  Invalid AT_COUNTER.
+
+6.3.3.  EAP-Failure
+
+   The EAP-AKA server sends EAP-Failure in three cases:
+
+   1.  In response to an EAP-Response/AKA-Client-Error packet the server
+       has received from the peer, or
+
+   2.  In response to an EAP-Response/AKA-Authentication-Reject packet
+       the server has received from the peer, or
+
+   3.  Following an EAP-AKA notification round, when the AT_NOTIFICATION
+       code implies failure.
+
+   The EAP-AKA server MUST NOT send EAP-Failure in other cases than
+   these three.  However, it should be noted that even though the
+   EAP-AKA server would not send an EAP-Failure, an authorization
+   decision that happens outside EAP-AKA, such as in the AAA server or
+   in an intermediate AAA proxy, may result in a failed exchange.
+
+   The peer MUST accept the EAP-Failure packet in case 1), case 2), and
+   case 3) above.  The peer SHOULD silently discard the EAP-Failure
+   packet in other cases.
+
+6.3.4.  EAP-Success
+
+   On full authentication, the server can only send EAP-Success after
+   the EAP/AKA-Challenge round.  The peer MUST silently discard any
+   EAP-Success packets if they are received before the peer has
+   successfully authenticated the server and sent the
+   EAP-Response/AKA-Challenge packet.
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 42]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   If the peer did not indicate that it wants to use protected success
+   indications with AT_RESULT_IND (as discussed in Section 6.2) on full
+   authentication, then the peer MUST accept EAP-Success after a
+   successful EAP/AKA-Challenge round.
+
+   If the peer indicated that it wants to use protected success
+   indications with AT_RESULT_IND (as discussed in Section 6.2), then
+   the peer MUST NOT accept EAP-Success after a successful EAP/
+   AKA-Challenge round.  In this case, the peer MUST only accept
+   EAP-Success after receiving an EAP-AKA Notification with the
+   AT_NOTIFICATION code "Success" (32768).
+
+   On fast re-authentication, EAP-Success can only be sent after the
+   EAP/AKA-Reauthentication round.  The peer MUST silently discard any
+   EAP-Success packets if they are received before the peer has
+   successfully authenticated the server and sent the
+   EAP-Response/AKA-Reauthentication packet.
+
+   If the peer did not indicate that it wants to use protected success
+   indications with AT_RESULT_IND (as discussed in Section 6.2) on fast
+   re-authentication, then the peer MUST accept EAP-Success after a
+   successful EAP/AKA-Reauthentication round.
+
+   If the peer indicated that it wants to use protected success
+   indications with AT_RESULT_IND (as discussed in Section 6.2), then
+   the peer MUST NOT accept EAP-Success after a successful EAP/AKA-
+   Reauthentication round.  In this case, the peer MUST only accept
+   EAP-Success after receiving an EAP-AKA Notification with the
+   AT_NOTIFICATION code "Success" (32768).
+
+   If the peer receives an EAP-AKA notification (Section 6) that
+   indicates failure, then the peer MUST no longer accept the
+   EAP-Success packet, even if the server authentication was
+   successfully completed.
+
+7.  Key Generation
+
+   This section specifies how keying material is generated.
+
+   On EAP-AKA full authentication, a Master Key (MK) is derived from the
+   underlying AKA values (CK and IK keys), and the identity, as follows.
+
+   MK = SHA1(Identity|IK|CK)
+
+   In the formula above, the "|" character denotes concatenation.
+   Identity denotes the peer identity string without any terminating
+   null characters.  It is the identity from the last AT_IDENTITY
+   attribute sent by the peer in this exchange, or, if AT_IDENTITY was
+
+
+
+Arkko & Haverinen            Informational                     [Page 43]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   not used, the identity from the EAP-Response/Identity packet.  The
+   identity string is included as-is, without any changes.  As discussed
+   in Section 4.1.2.2, relying on EAP-Response/Identity for conveying
+   the EAP-AKA peer identity is discouraged, and the server SHOULD use
+   the EAP-AKA method-specific identity attributes.  The hash function
+   SHA-1 is specified in [SHA-1].
+
+   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 fast 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 from new values exchanged in the fast
+   re-authentication.
+
+   EAP-AKA requires two TEKs for its own purposes: the authentication
+   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
+   K_aut and K_encr keys are used in full authentication and subsequent
+   fast re-authentications.
+
+   Key derivation is based on the random number generation specified in
+   NIST Federal Information Processing Standards (FIPS) Publication
+   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.
+
+   160-bit XKEY and XVAL values are used, so b = 160.  On each full
+   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 set
+   to zero.
+
+   On full authentication, 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).
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 44]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   On fast 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 fast 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 fast re-authentication, it
+   denotes the identity string from the EAP-Response/Identity packet.
+   The counter denotes the counter value from the 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 random
+   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.
+
+   On fast re-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.  Note that because K_encr
+   and K_aut are not derived on fast re-authentication, the Master
+   Session Key and the Extended Master Session key are obtained from the
+   beginning of the key stream x_0, x_1, ....
+
+   The first 32 bytes of the MSK can be used as the Pairwise Master Key
+   (PMK) for IEEE 802.11i.
+
+   When the RADIUS attributes specified in [RFC2548] are used to
+   transport keying material, then the first 32 bytes of the MSK
+   correspond to MS-MPPE-RECV-KEY and the second 32 bytes to
+   MS-MPPE-SEND-KEY.  In this case, only 64 bytes of keying material
+   (the MSK) are used.
+
+8.  Message Format and Protocol Extensibility
+
+8.1.  Message Format
+
+   As specified in [RFC3748], 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 [RFC3748].  In EAP-AKA, the Type field is set to 23.
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 45]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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 11.  The
+   formats of the EAP header and the EAP-AKA header are 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
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |     Code      |  Identifier   |            Length             |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |     Type      |    Subtype    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   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.
+
+    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...
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   Attribute Type
+
+         Indicates the particular type of attribute.  The attribute type
+         values are listed in Section 11.
+
+   Length
+
+         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.
+
+   Value
+
+         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.
+
+   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 EAP-Request/AKA-Notification packet with an
+
+
+
+Arkko & Haverinen            Informational                     [Page 46]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   AT_NOTIFICATION code that implies general failure ("General failure
+   after authentication" (0), or "General failure" (16384), depending on
+   the phase of the exchange), and the authentication exchange
+   terminates.
+
+   When an attribute numbered in the range 128 through 255 is
+   encountered but not recognized, that particular attribute is ignored,
+   but the rest of the attributes and message data MUST still be
+   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.
+
+   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 will be used.
+
+   Attributes can be encapsulated within other attributes.  In other
+   words, the value field of an attribute type can be specified to
+   contain other attributes.
+
+8.2.  Protocol Extensibility
+
+   EAP-AKA can be extended by specifying new attribute types.  If
+   skippable attributes are used, it is possible to extend the protocol
+   without breaking old implementations.  As specified in Section 10.13,
+   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.
+
+   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 [RFC3748],
+   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.
+
+   EAP-AKA packets do not include a version field.  However, should
+   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.
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 47]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+9.  Messages
+
+   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 8.1.
+
+9.1.  EAP-Request/AKA-Identity
+
+   The EAP/AKA-Identity roundtrip MAY be used for obtaining the peer
+   identity from the server.  As discussed in Section 4.1, several
+   AKA-Identity rounds may be required in order to obtain a valid peer
+   identity.
+
+   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.
+
+   If the server has previously issued an EAP-Request/AKA-Identity
+   message with the AT_PERMANENT_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.
+
+   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.
+
+   If the server has previously issued an EAP-Request/AKA-Identity
+   message with the AT_ANY_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.
+
+   This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA.
+
+9.2.  EAP-Response/AKA-Identity
+
+   The peer sends EAP-Response/AKA-Identity in response to a valid
+   EAP-Request/AKA-Identity from the server.
+
+   The peer MUST include the AT_IDENTITY attribute.  The usage of
+   AT_IDENTITY is defined in Section 4.1.
+
+   This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA.
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 48]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+9.3.  EAP-Request/AKA-Challenge
+
+   The server sends the EAP-Request/AKA-Challenge on full authentication
+   after successfully obtaining the subscriber identity.
+
+   The AT_RAND attribute MUST be included.
+
+   AT_MAC MUST be included.  In EAP-Request/AKA-Challenge, there is no
+   message-specific data covered by the MAC, see Section 10.15.
+
+   The AT_RESULT_IND attribute MAY be included.  The usage of this
+   attribute is discussed in Section 6.2.
+
+   The AT_CHECKCODE attribute MAY be included, and in certain cases
+   specified in Section 10.13, it MUST be included.
+
+   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 10.12).
+
+   The plaintext of the AT_ENCR_DATA value field consists of nested
+   attributes.  The nested attributes MAY include AT_PADDING (as
+   specified in Section 10.12).  If the server supports identity privacy
+   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 fast 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.
+
+   When processing this message, the peer MUST process AT_RAND and
+   AT_AUTN before processing other attributes.  Only if these attributes
+   are verified to be valid, the peer derives keys and verifies AT_MAC.
+   The operation in case an error occurs is specified in Section 6.3.1.
+
+9.4.  EAP-Response/AKA-Challenge
+
+   The peer sends EAP-Response/AKA-Challenge in response to a valid
+   EAP-Request/AKA-Challenge.
+
+   Sending this packet indicates that the peer has successfully
+   authenticated the server and that the EAP exchange will be accepted
+   by the peer's local policy.  Hence, if these conditions are not met,
+   then the peer MUST NOT send EAP-Response/AKA-Challenge, but the peer
+   MUST send EAP-Response/AKA-Client-Error.
+
+
+
+Arkko & Haverinen            Informational                     [Page 49]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   The AT_MAC attribute MUST be included.  In
+   EAP-Response/AKA-Challenge, there is no message-specific data covered
+   by the MAC, see Section 10.15.
+
+   The AT_RES attribute MUST be included.
+
+   The AT_CHECKCODE attribute MAY be included, and in certain cases
+   specified in Section 10.13, it MUST be included.
+
+   The AT_RESULT_IND attribute MAY be included, if it was included in
+   EAP-Request/AKA-Challenge.  The usage of this attribute is discussed
+   in Section 6.2.
+
+   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.
+
+9.5.  EAP-Response/AKA-Authentication-Reject
+
+   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.
+
+   The AT_MAC, AT_ENCR_DATA, or AT_IV attributes MUST NOT be used in
+   this message.
+
+9.6.  EAP-Response/AKA-Synchronization-Failure
+
+   The peer sends the EAP-Response/AKA-Synchronization-Failure, when the
+   sequence number in the AUTN parameter is incorrect.
+
+   The peer MUST include the AT_AUTS attribute.  Future versions of the
+   protocol MAY specify other additional attributes for this message.
+
+   The AT_MAC, AT_ENCR_DATA, or AT_IV attributes MUST NOT be used in
+   this message.
+
+9.7.  EAP-Request/AKA-Reauthentication
+
+   The server sends the EAP-Request/AKA-Reauthentication message if it
+   wants to use fast re-authentication, and if it has received a valid
+   fast re-authentication identity in EAP-Response/Identity or
+   EAP-Response/AKA-Identity.
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 50]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   The AT_MAC attribute MUST be included.  No message-specific data is
+   included in the MAC calculation, see Section 10.15.
+
+   The AT_RESULT_IND attribute MAY be included.  The usage of this
+   attribute is discussed in Section 6.2.
+
+   The AT_CHECKCODE attribute MAY be included, and in certain cases
+   specified in Section 10.13, it MUST be included.
+
+   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.
+
+9.8.  EAP-Response/AKA-Reauthentication
+
+   The client sends the EAP-Response/AKA-Reauthentication packet in
+   response to a valid EAP-Request/AKA-Reauthentication.
+
+   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 8.1.  It is followed by the
+   16-byte NONCE_S value from the server's AT_NONCE_S attribute.
+
+   The AT_CHECKCODE attribute MAY be included, and in certain cases
+   specified in Section 10.13, it MUST be included.
+
+   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 5.  The AT_PADDING attribute MAY be included.
+
+   The AT_RESULT_IND attribute MAY be included, if it was included in
+   EAP-Request/AKA-Reauthentication.  The usage of this attribute is
+   discussed in Section 6.2.
+
+   Sending this packet without AT_COUNTER_TOO_SMALL indicates that the
+   peer has successfully authenticated the server and that the EAP
+   exchange will be accepted by the peer's local policy.  Hence, if
+   these conditions are not met, then the peer MUST NOT send
+   EAP-Response/AKA-Reauthentication, but the peer MUST send
+   EAP-Response/ AKA-Client-Error.
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 51]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+9.9.  EAP-Response/AKA-Client-Error
+
+   The peer sends EAP-Response/AKA-Client-Error in error cases, as
+   specified in Section 6.3.1.
+
+   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.
+
+9.10.  EAP-Request/AKA-Notification
+
+   The usage of this message is specified in Section 6.
+
+   The AT_NOTIFICATION attribute MUST be included.
+
+   The AT_MAC attribute MUST be included if the P bit of the
+   AT_NOTIFICATION code is set to zero, and MUST NOT be included if the
+   P bit is set to one.  The P bit is discussed in Section 6.
+
+   No message-specific data is included in the MAC calculation.  See
+   Section 10.15.
+
+   If EAP-Request/AKA-Notification is used on a fast re-authentication
+   exchange, and if the P bit in AT_NOTIFICATION is set to zero, then
+   AT_COUNTER is used for replay protection.  In this case, the
+   AT_ENCR_DATA and AT_IV attributes MUST be included, and the
+   encapsulated plaintext attributes MUST include the AT_COUNTER
+   attribute.  The counter value included in AT_COUNTER MUST be the same
+   as in the EAP-Request/AKA-Reauthentication packet on the same fast
+   re-authentication exchange.
+
+9.11.  EAP-Response/AKA-Notification
+
+   The usage of this message is specified in Section 6.  This packet is
+   an acknowledgement of EAP-Request/AKA-Notification.
+
+   The AT_MAC attribute MUST be included in cases when the P bit of the
+   notification code in AT_NOTIFICATION of EAP-Request/AKA-Notification
+   is set to zero, and MUST NOT be included in cases when the P bit is
+   set to one.  The P bit is discussed in Section 6.
+
+   If EAP-Request/AKA-Notification is used on a fast re-authentication
+   exchange, and if the P bit in AT_NOTIFICATION is set to zero, then
+   AT_COUNTER is used for replay protection.  In this case, the
+   AT_ENCR_DATA and AT_IV attributes MUST be included, and the
+   encapsulated plaintext attributes MUST include the AT_COUNTER
+   attribute.  The counter value included in AT_COUNTER MUST be the same
+   as in the EAP-Request/AKA-Reauthentication packet on the same fast
+   re-authentication exchange.
+
+
+
+Arkko & Haverinen            Informational                     [Page 52]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+10.  Attributes
+
+   This section specifies the format of message attributes.  The
+   attribute type numbers are specified in Section 11.
+
+10.1.  Table of Attributes
+
+   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-Reauthentication, (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.
+
+   "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.
+
+              Attribute (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)(11) E
+    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_IV  0   0  0-1  0* 0-1 0-1  0   1   1   0   0   N
+           AT_ENCR_DATA  0   0  0-1  0* 0-1 0-1  0   1   1   0   0   N
+             AT_PADDING  0   0  0-1  0* 0-1 0-1  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_RESULT_IND  0   0  0-1 0-1  0   0   0  0-1 0-1  0   0   N
+                 AT_MAC  0   0   1   1  0-1 0-1  0   1   1   0   0   N
+             AT_COUNTER  0   0   0   0  0-1 0-1  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
+
+
+
+Arkko & Haverinen            Informational                     [Page 53]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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 or AT_ENCR_DATA is included, then both of the
+   attributes MUST be included.
+
+10.2.  AT_PERMANENT_ID_REQ
+
+   The format of the AT_PERMANENT_ID_REQ 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_PERM..._REQ | Length = 1    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   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.
+
+10.3.  AT_ANY_ID_REQ
+
+   The format of the AT_ANY_ID_REQ 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_ANY_ID_REQ  | Length = 1    |           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.
+
+10.4.  AT_FULLAUTH_ID_REQ
+
+   The format of the AT_FULLAUTH_ID_REQ 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_FULLAUTH_...| Length = 1    |           Reserved            |
+   +---------------+---------------+-------------------------------+
+
+   The use of the AT_FULLAUTH_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.
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 54]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+10.5.  AT_IDENTITY
+
+   The format of the AT_IDENTITY 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_IDENTITY   | Length        | Actual Identity Length        |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   .                       Identity                                .
+   .                                                               .
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The use of the AT_IDENTITY is defined in Section 4.1.  The value
+   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
+   fast 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.
+
+10.6.  AT_RAND
+
+   The format of the AT_RAND 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_RAND    | Length = 5    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   |                             RAND                              |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute contains two reserved bytes
+   followed by the AKA RAND parameter, 16 bytes (128 bits).  The
+   reserved bytes are set to zero when sending and ignored on reception.
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 55]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+10.7.  AT_AUTN
+
+   The format of the AT_AUTN 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_AUTN    | Length = 5    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   |                        AUTN                                   |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   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.
+
+10.8.  AT_RES
+
+   The format of the AT_RES 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_RES    |    Length     |          RES Length           |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
+   |                                                               |
+   |                             RES                               |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute begins with the 2-byte RES Length,
+   which identifies the exact length of the RES in bits.  The RES length
+   is followed by the AKA RES parameter.  According to [TS33.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.
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 56]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+10.9.  AT_AUTS
+
+   The format of the AT_AUTS 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_AUTS    | Length = 4    |                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
+   |                                                               |
+   |                             AUTS                              |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute contains the AKA AUTS parameter,
+   112 bits (14 bytes).
+
+10.10.  AT_NEXT_PSEUDONYM
+
+   The format of the AT_NEXT_PSEUDONYM 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_NEXT_PSEU..| Length        | Actual Pseudonym Length       |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   .                          Next Pseudonym                       .
+   .                                                               .
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute begins with a 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 [RFC3629].  This attribute MUST always be
+   encrypted by encapsulating it within the AT_ENCR_DATA attribute.
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 57]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+10.11.  AT_NEXT_REAUTH_ID
+
+   The format of the AT_NEXT_REAUTH_ID 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_NEXT_REAU..| Length        | Actual Re-Auth Identity Length|
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   .              Next Fast Re-Authentication Username             .
+   .                                                               .
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute begins with a 2-byte actual
+   re-authentication identity length which specifies the length of the
+   following fast re-authentication identity in bytes.  This field is
+   followed by a fast re-authentication identity that the peer can use
+   in the next fast re-authentication, as described in Section 5.  In
+   environments where a realm portion is required, the fast
+   re-authentication identity includes both a username portion and a
+   realm name portion.  The fast 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 fast
+   re-authentication identity with zero bytes when necessary.  The
+   identity encoding MUST follow the UTF-8 transformation format
+   [RFC3629].  This attribute MUST always be encrypted by encapsulating
+   it within the AT_ENCR_DATA attribute.
+
+10.12.  AT_IV, AT_ENCR_DATA, and AT_PADDING
+
+   AT_IV and AT_ENCR_DATA attributes can be used to transmit encrypted
+   information between the EAP-AKA peer and server.
+
+   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 6.3 specifies the operation if a
+   packet that does not meet this condition is encountered.
+
+   The sender of the AT_IV attribute chooses the initialization vector
+   at random.  The sender MUST NOT reuse the initialization vector value
+   from previous EAP-AKA packets.  The sender SHOULD use a good source
+   of randomness to generate the initialization vector.  Please see
+   [RFC4086] for more information about generating random numbers for
+   security applications.  The format of AT_IV is shown below.
+
+
+
+Arkko & Haverinen            Informational                     [Page 58]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+    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_IV     | Length = 5    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   |                 Initialization Vector                         |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of the AT_ENCR_DATA attribute consists of two
+   reserved bytes followed by cipher text bytes.  The cipher text bytes
+   are encrypted using the Advanced Encryption Standard (AES) [AES] with
+   a 128-bit key in the Cipher Block Chaining (CBC) mode of operation,
+   which uses 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            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   .                    Encrypted Data                             .
+   .                                                               .
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The derivation of the encryption key (K_encr) is specified in
+   Section 7.
+
+   The plaintext consists of nested EAP-AKA attributes.
+
+   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 (00 hexadecimal) on sending.  The recipient of the
+   message MUST verify that the pad bytes are set to zero.  If this
+
+
+
+Arkko & Haverinen            Informational                     [Page 59]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   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 the
+   EAP-Response/AKA-Notification packet with an AT_NOTIFICATION code
+   that implies failure to terminate the authentication exchange.  The
+   format of the AT_PADDING 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_PADDING   | Length        | Padding...                    |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+10.13.  AT_CHECKCODE
+
+   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 fast re-authentication.
+
+   The AT_CHECKCODE attribute MAY be used to protect the EAP/
+   AKA-Identity messages.  In full authentication, the server MAY
+   include the AT_CHECKCODE in EAP-Request/AKA-Challenge, and the peer
+   MAY include AT_CHECKCODE in EAP-Response/AKA-Challenge.  In fast
+   re-authentication, the server MAY include AT_CHECKCODE in
+   EAP-Request/ AKA-Reauthentication, and the peer MAY include
+   AT_CHECKCODE in EAP-Response/AKA-Reauthentication.  The fact that the
+   peer receives an EAP-Request with AT_CHECKCODE does not imply that
+   the peer would have to include AT_CHECKCODE in the corresponding
+   response.  The peer MAY include AT_CHECKCODE even if the server did
+   not include AT_CHECKCODE in the EAP request.  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.
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 60]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+    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)                 |
+   |                                                               |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   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 fast re-authentication.  The reserved bytes are
+   set to zero when sending and ignored on reception.
+
+   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 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
+   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,
+   padding, or any other framing are included between the EAP packets
+   when calculating the checkcode.
+
+   Messages are included in request/response pairs; in other words, only
+   full "round trips" are included.  Packets that are silently discarded
+   are not included, and retransmitted packets (that have the same
+   Identifier value) are only included once.  (The base EAP protocol
+   [RFC3748] ensures that requests and responses "match".)  The EAP
+   server must only include an EAP-Request/AKA-Identity in the
+   calculation after it has received a corresponding response with the
+   same Identifier value.
+
+   The peer must include the EAP-Request/AKA-Identity and the
+   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 a different Identifier value than in the first
+   EAP-Request/AKA-Identity.
+
+
+
+Arkko & Haverinen            Informational                     [Page 61]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   The AT_CHECKCODE attribute is optional to implement.  It is specified
+   in order to allow protection of the EAP/AKA-Identity messages and any
+   future extensions to them.  The implementation of AT_CHECKCODE is
+   RECOMMENDED.
+
+   If the receiver of AT_CHECKCODE implements this attribute, then the
+   receiver MUST check that the checkcode is correct.  If the checkcode
+   is invalid, the receiver must operate as specified in Section 6.3.
+
+   If the EAP/AKA-Identity messages are extended with new attributes,
+   then AT_CHECKCODE MUST be implemented and used.  More specifically,
+   if the server includes any attributes other 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 peer
+   includes any attributes other than 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.
+
+   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 attribute other than AT_IDENTITY in the
+   EAP-Response/AKA-Identity message, then the server MUST check that
+   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 6.3.
+
+   Similarly, if the peer implements the processing of any attribute
+   other 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 attribute other
+   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 6.3.
+
+10.14.  AT_RESULT_IND
+
+   The format of the AT_RESULT_IND 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_RESULT_...| Length = 1    |           Reserved            |
+    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 62]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   The value field of this attribute consists of two reserved bytes,
+   which are set to zero upon sending and ignored upon reception.  This
+   attribute is always sent unencrypted, so it MUST NOT be encapsulated
+   within the AT_ENCR_DATA attribute.
+
+10.15.  AT_MAC
+
+   The AT_MAC attribute is used for EAP-AKA message authentication.
+   Section 9 specifies in which messages AT_MAC MUST be included.
+
+   The value field of the AT_MAC attribute contains two reserved bytes
+   followed by a keyed message authentication code (MAC).  The MAC is
+   calculated over the whole EAP packet and 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 8.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 9.
+
+   The format of the AT_MAC 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_MAC    | Length = 5    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   |                           MAC                                 |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The MAC algorithm is HMAC-SHA1-128 [RFC2104] keyed hash value.  (The
+   HMAC-SHA1-128 value is obtained from the 20-byte HMAC-SHA1 value by
+   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
+   the calculation of the MAC is specified in Section 7.
+
+   When the AT_MAC attribute is included in an EAP-AKA message, the
+   recipient MUST process the AT_MAC attribute before looking at any
+   other attributes, except when processing EAP-Request/AKA-Challenge.
+   The processing of EAP-Request/AKA-Challenge is specified in
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 63]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   Section 9.3.  If the message authentication code is invalid, then the
+   recipient MUST ignore all other attributes in the message and operate
+   as specified in Section 6.3.
+
+10.16.  AT_COUNTER
+
+   The format of the AT_COUNTER 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_COUNTER   | Length = 1    |           Counter             |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of the AT_COUNTER attribute consists of a 16-bit
+   unsigned integer counter value, represented in network byte order.
+   This attribute MUST always be encrypted by encapsulating it within
+   the AT_ENCR_DATA attribute.
+
+10.17.  AT_COUNTER_TOO_SMALL
+
+   The format of the AT_COUNTER_TOO_SMALL 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_COUNTER...| Length = 1    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute consists of two reserved bytes,
+   which are set to zero upon sending and ignored upon reception.  This
+   attribute MUST always be encrypted by encapsulating it within the
+   AT_ENCR_DATA attribute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 64]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+10.18.  AT_NONCE_S
+
+   The format of the AT_NONCE_S 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_NONCE_S    | Length = 5    |           Reserved            |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+   |                                                               |
+   |                                                               |
+   |                            NONCE_S                            |
+   |                                                               |
+   |                                                               |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of the AT_NONCE_S attribute contains two reserved
+   bytes followed by a random number (16 bytes) that is freshly
+   generated by the server for this EAP-AKA fast re-authentication.  The
+   random number is used as challenge for the peer and also as a seed
+   value for the new keying material.  The reserved bytes are set to
+   zero upon sending and ignored upon reception.  This attribute MUST
+   always be encrypted by encapsulating it within the AT_ENCR_DATA
+   attribute.
+
+   The server MUST NOT reuse the NONCE_S value from a previous EAP-AKA
+   fast re-authentication exchange.  The server SHOULD use a good source
+   of randomness to generate NONCE_S.  Please see [RFC4086] for more
+   information about generating random numbers for security
+   applications.
+
+10.19.  AT_NOTIFICATION
+
+   The format of the AT_NOTIFICATION 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_NOTIFICATION| Length = 1    |S|P|  Notification Code        |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute contains a two-byte notification
+   code.  The first and second bit (S and P) of the notification code
+   are interpreted as described in Section 6.
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 65]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   The notification code values listed below have been reserved.  The
+   descriptions below illustrate the semantics of the notifications.
+   The peer implementation MAY use different wordings when presenting
+   the notifications to the user.  The "requested service" depends on
+   the environment where EAP-AKA is applied.
+
+   0 - General failure after authentication.  (Implies failure, used
+   after successful authentication.)
+
+   16384 - General failure.  (Implies failure, used before
+   authentication.)
+
+   32768 - Success.  User has been successfully authenticated.  (Does
+   not imply failure, used after successful authentication.)  The usage
+   of this code is discussed in Section 6.2.
+
+   1026 - User has been temporarily denied access to the requested
+   service.  (Implies failure, used after successful authentication.)
+
+   1031 - User has not subscribed to the requested service.  (Implies
+   failure, used after successful authentication.)
+
+10.20.  AT_CLIENT_ERROR_CODE
+
+   The format of the AT_CLIENT_ERROR_CODE 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_CLIENT_ERR..| Length = 1    |     Client Error Code         |
+   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+   The value field of this attribute contains a two-byte client error
+   code.  The following error code values have been reserved.
+
+   0 "unable to process packet": a general error code
+
+11.  IANA and Protocol Numbering Considerations
+
+   IANA has assigned the EAP type number 23 for EAP-AKA authentication.
+
+   EAP-AKA shares most of the protocol design, such as attributes and
+   message Subtypes, with EAP-SIM [EAP-SIM].  EAP-AKA protocol numbers
+   should be administered in the same IANA registry with EAP-SIM.  This
+   document establishes the registries and lists the initial protocol
+   numbers for both protocols.
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 66]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   EAP-AKA and EAP-SIM messages include a Subtype field.  The Subtype is
+   a new numbering space for which IANA administration is required.  The
+   Subtype is an 8-bit integer.  The following Subtypes are specified in
+   this document and in [EAP-SIM]:
+
+        AKA-Challenge...................................1
+        AKA-Authentication-Reject.......................2
+        AKA-Synchronization-Failure.....................4
+        AKA-Identity....................................5
+        SIM-Start......................................10
+        SIM-Challenge..................................11
+        AKA-Notification and SIM-Notification..........12
+        AKA-Reauthentication and SIM-Reauthentication..13
+        AKA-Client-Error and SIM-Client-Error..........14
+
+   The messages are composed of attributes, which have 8-bit attribute
+   type numbers.  Attributes numbered within the range 0 through 127 are
+   called non-skippable attributes, and attributes within the range of
+   128 through 255 are called skippable attributes.  The EAP-AKA and
+   EAP-SIM attribute type number is a new numbering space for which IANA
+   administration is required.  The following attribute types are
+   specified in this document in [EAP-SIM]:
+
+        AT_RAND.........................................1
+        AT_AUTN.........................................2
+        AT_RES..........................................3
+        AT_AUTS.........................................4
+        AT_PADDING......................................6
+        AT_NONCE_MT.....................................7
+        AT_PERMANENT_ID_REQ............................10
+        AT_MAC.........................................11
+        AT_NOTIFICATION................................12
+        AT_ANY_ID_REQ..................................13
+        AT_IDENTITY....................................14
+        AT_VERSION_LIST................................15
+        AT_SELECTED_VERSION............................16
+        AT_FULLAUTH_ID_REQ.............................17
+        AT_COUNTER.....................................19
+        AT_COUNTER_TOO_SMALL...........................20
+        AT_NONCE_S.....................................21
+        AT_CLIENT_ERROR_CODE...........................22
+        AT_IV.........................................129
+        AT_ENCR_DATA..................................130
+        AT_NEXT_PSEUDONYM.............................132
+        AT_NEXT_REAUTH_ID.............................133
+        AT_CHECKCODE..................................134
+        AT_RESULT_IND.................................135
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 67]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   The AT_NOTIFICATION attribute contains a 16-bit notification code
+   value.  The most significant bit of the notification code is called
+   the S bit (success) and the second most significant bit is called the
+   P bit (phase).  If the S bit is set to zero, then the notification
+   code indicates failure; notification codes with the S bit set to one
+   do not indicate failure.  If the P bit is set to zero, then the
+   notification code can only be used before authentication has
+   occurred.  If the P bit is set to one, then the notification code can
+   only be used after authentication.  The notification code is a new
+   numbering space for which IANA administration is required.  The
+   following values have been specified in this document and in
+   [EAP-SIM].
+
+        General failure after authentication......................0
+        User has been temporarily denied access................1026
+        User has not subscribed to the requested service.......1031
+        General failure.......................................16384
+        Success...............................................32768
+
+   The AT_VERSION_LIST and AT_SELECTED_VERSION attributes, specified in
+   [EAP-SIM], contain 16-bit EAP method version numbers.  The EAP method
+   version number is a new numbering space for which IANA administration
+   is required.  Value 1 for "EAP-SIM Version 1" has been specified in
+   [EAP-SIM].  Version numbers are not currently used in EAP-AKA.
+
+   The AT_CLIENT_ERROR_CODE attribute contains a 16-bit client error
+   code.  The client error code is a new numbering space for which IANA
+   administration is required.  Values 0, 1, 2, and 3 have been
+   specified in this document and in [EAP-SIM].
+
+   All requests for value assignment from the various number spaces
+   described in this document require proper documentation, according to
+   the "Specification Required" policy described in [RFC2434].  Requests
+   must be specified in sufficient detail so that interoperability
+   between independent implementations is possible.  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.
+
+12.  Security Considerations
+
+   The EAP specification [RFC3748] describes the security
+   vulnerabilities of EAP, which does not include its own security
+   mechanisms.  This section discusses the claimed security properties
+   of EAP-AKA as well as vulnerabilities and security recommendations.
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 68]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+12.1.  Identity Protection
+
+   EAP-AKA includes optional Identity privacy support that protects the
+   privacy of the subscriber identity against passive eavesdropping.
+   This document only specifies a mechanism to deliver pseudonyms from
+   the server to the peer as part of an EAP-AKA exchange.  Hence, a peer
+   that has not yet performed any EAP-AKA exchanges does not typically
+   have a pseudonym available.  If the peer does not have a pseudonym
+   available, then the privacy mechanism cannot be used, and the
+   permanent identity will have to be sent in the clear.  The terminal
+   SHOULD store the pseudonym in non-volatile memory so that it can be
+   maintained across reboots.  An active attacker that impersonates the
+   network may use the AT_PERMANENT_ID_REQ attribute (Section 4.1.2) to
+   learn the subscriber's IMSI.  However, as discussed in Section 4.1.2,
+   the terminal can refuse to send the cleartext IMSI if it believes
+   that the network should be able to recognize the pseudonym.
+
+   If the peer and server cannot guarantee that the pseudonym will be
+   maintained reliably, and Identity privacy is required then additional
+   protection from an external security mechanism (such as Protected
+   Extensible Authentication Protocol (PEAP) [PEAP]) may be used.  The
+   benefits and the security considerations of using an external
+   security mechanism with EAP-AKA are beyond the scope of this
+   document.
+
+12.2.  Mutual Authentication
+
+   EAP-AKA provides mutual authentication via the 3rd generation AKA
+   mechanisms [TS33.102] and [S.S0055-A].
+
+   Note that this mutual authentication is with the EAP server.  In
+   general, EAP methods do not authenticate the identity or services
+   provided by the EAP authenticator (if distinct from the EAP server)
+   unless they provide the so-called channel bindings property.  The
+   vulnerabilities related to this have been discussed in [RFC3748],
+   [EAPKeying], [ServiceIdentity].
+
+   EAP-AKA does not provide the channel bindings property, so it only
+   authenticates the EAP server.  However, ongoing work such as
+   [ServiceIdentity] may provide such support as an extension to popular
+   EAP methods such as EAP-TLS, EAP-SIM, or EAP-AKA.
+
+12.3.  Flooding the Authentication Centre
+
+   The EAP-AKA server typically obtains authentication vectors from the
+   Authentication Centre (AuC).  EAP-AKA introduces a new usage for the
+   AuC.  The protocols between the EAP-AKA server and the AuC are out of
+   the scope of this document.  However, it should be noted that a
+
+
+
+Arkko & Haverinen            Informational                     [Page 69]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   malicious EAP-AKA peer may generate a lot of protocol requests to
+   mount a denial-of-service attack.  The EAP-AKA server implementation
+   SHOULD take this into account and SHOULD take steps to limit the
+   traffic that it generates towards the AuC, preventing the attacker
+   from flooding the AuC and from extending the denial-of-service attack
+   from EAP-AKA to other users of the AuC.
+
+12.4.  Key Derivation
+
+   EAP-AKA supports key derivation with 128-bit effective key strength.
+   The key hierarchy is specified in Section 7.
+
+   The Transient EAP Keys used to protect EAP-AKA packets (K_encr,
+   K_aut), the Master Session Keys, and the Extended Master Session Keys
+   are cryptographically separate.  An attacker cannot derive any
+   non-trivial information about any of these keys based on the other
+   keys.  An attacker also cannot calculate the pre-shared secret from
+   AKA IK, AKA CK, EAP-AKA K_encr, EAP-AKA K_aut, the Master Session
+   Key, or the Extended Master Session Key.
+
+12.5.  Brute-Force and Dictionary Attacks
+
+   The effective strength of EAP-AKA values is 128 bits, and there are
+   no known, computationally feasible brute-force attacks.  Because AKA
+   is not a password protocol (the pre-shared secret is not a
+   passphrase, or derived from a passphrase), EAP-AKA is not vulnerable
+   to dictionary attacks.
+
+12.6.  Protection, Replay Protection, and Confidentiality
+
+   AT_MAC, AT_IV, AT_ENCR_DATA, and AT_COUNTER attributes are used to
+   provide integrity, replay, and confidentiality protection for EAP-AKA
+   Requests and Responses.  Integrity protection with AT_MAC includes
+   the EAP header.  Integrity protection (AT_MAC) is based on a keyed
+   message authentication code.  Confidentiality (AT_ENCR_DATA and
+   AT_IV) is based on a block cipher.
+
+   Because keys are not available in the beginning of the EAP methods,
+   the AT_MAC attribute cannot be used for protecting EAP/AKA-Identity
+   messages.  However, the AT_CHECKCODE attribute can optionally be used
+   to protect the integrity of the EAP/AKA-Identity roundtrip.
+
+   Confidentiality protection is applied only to a part of the protocol
+   fields.  The table of attributes in Section 10.1 summarizes which
+   fields are confidentiality protected.  It should be noted that the
+   error and notification code attributes AT_CLIENT_ERROR_CODE and
+   AT_NOTIFICATION are not confidential, but they are transmitted in the
+   clear.  Identity protection is discussed in Section 12.1.
+
+
+
+Arkko & Haverinen            Informational                     [Page 70]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   On full authentication, replay protection of the EAP exchange is
+   provided by RAND and AUTN values from the underlying AKA scheme.
+   Protection against replays of EAP-AKA messages is also based on the
+   fact that messages that can include AT_MAC can only be sent once with
+   a certain EAP-AKA Subtype, and on the fact that a different K_aut key
+   will be used for calculating AT_MAC in each full authentication
+   exchange.
+
+   On fast re-authentication, a counter included in AT_COUNTER and a
+   server random nonce is used to provide replay protection.  The
+   AT_COUNTER attribute is also included in EAP-AKA notifications, if
+   they are used after successful authentication in order to provide
+   replay protection between re-authentication exchanges.
+
+   The contents of the user identity string are implicitly integrity
+   protected by including them in key derivation.
+
+   Because EAP-AKA is not a tunneling method, EAP-Request/Notification,
+   EAP-Response/Notification, EAP-Success, or EAP-Failure packets are
+   not confidential, integrity protected, or replay protected.  On
+   physically insecure networks, this may enable an attacker to mount
+   denial-of-service attacks by spoofing these packets.  As discussed in
+   Section 6.3, the peer will only accept EAP-Success after the peer
+   successfully authenticates the server.  Hence, the attacker cannot
+   force the peer to believe successful mutual authentication has
+   occurred before the peer successfully authenticates the server or
+   after the peer failed to authenticate the server.
+
+   The security considerations of EAP-AKA result indications are covered
+   in Section 12.8
+
+   An eavesdropper will see the EAP Notification, EAP_Success and
+   EAP-Failure packets sent in the clear.  With EAP-AKA, confidential
+   information MUST NOT be transmitted in EAP Notification packets.
+
+12.7.  Negotiation Attacks
+
+   EAP-AKA does not protect the EAP-Response/Nak packet.  Because
+   EAP-AKA does not protect the EAP method negotiation, EAP method
+   downgrading attacks may be possible, especially if the user uses the
+   same identity with EAP-AKA and other EAP methods.
+
+   As described in Section 8, EAP-AKA allows the protocol to be extended
+   by defining new attribute types.  When defining such attributes, it
+   should be noted that any extra attributes included in
+   EAP-Request/AKA-Identity or EAP-Response/AKA-Identity packets are not
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 71]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   included in the MACs later on, and thus some other precautions must
+   be taken to avoid modifications to them.
+
+   EAP-AKA does not support ciphersuite negotiation or EAP-AKA protocol
+   version negotiation.
+
+12.8.  Protected Result Indications
+
+   EAP-AKA supports optional protected success indications, and
+   acknowledged failure indications.  If a failure occurs after
+   successful authentication, then the EAP-AKA failure indication is
+   integrity and replay protected.
+
+   Even if an EAP-Failure packet is lost when using EAP-AKA over an
+   unreliable medium, then the EAP-AKA failure indications will help
+   ensure that the peer and EAP server will know the other party's
+   authentication decision.  If protected success indications are used,
+   then the loss of Success packet will also be addressed by the
+   acknowledged, integrity, and replay protected EAP-AKA success
+   indication.  If the optional success indications are not used, then
+   the peer may end up believing the server completed successful
+   authentication, when actually it failed.  Because access will not be
+   granted in this case, protected result indications are not needed
+   unless the client is not able to realize it does not have access for
+   an extended period of time.
+
+12.9.  Man-in-the-Middle Attacks
+
+   In order to avoid man-in-the-middle attacks and session hijacking,
+   user data SHOULD be integrity protected on physically insecure
+   networks.  The EAP-AKA Master Session Key or keys derived from it MAY
+   be used as the integrity protection keys, or, if an external security
+   mechanism such as PEAP is used, then the link integrity protection
+   keys MAY be derived by the external security mechanism.
+
+   There are man-in-the-middle attacks associated with the use of any
+   EAP method within a tunneled protocol.  For instance, an early
+   version of PEAP [PEAP-02] was vulnerable to this attack.  This
+   specification does not address these attacks.  If EAP-AKA is used
+   with a tunneling protocol, there should be cryptographic binding
+   provided between the protocol and EAP-AKA to prevent
+   man-in-the-middle attacks through rogue authenticators being able to
+   setup one-way authenticated tunnels.  For example, newer versions of
+   PEAP include such cryptographic binding.  The EAP-AKA Master Session
+   Key MAY be used to provide the cryptographic binding.  However, the
+   mechanism that provides the binding depends on the tunneling protocol
+   and is beyond the scope of this document.
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 72]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+12.10.  Generating Random Numbers
+
+   An EAP-AKA implementation SHOULD use a good source of randomness to
+   generate the random numbers required in the protocol.  Please see
+   [RFC4086] for more information on generating random numbers for
+   security applications.
+
+13.  Security Claims
+
+   This section provides the security claims required by [RFC3748].
+
+   Auth.  Mechanism: EAP-AKA is based on the AKA mechanism, which is an
+   authentication and key agreement mechanism based on a symmetric
+   128-bit pre-shared secret.
+
+   Ciphersuite negotiation: No
+
+   Mutual authentication: Yes (Section 12.2)
+
+   Integrity protection: Yes (Section 12.6)
+
+   Replay protection: Yes (Section 12.6)
+
+   Confidentiality: Yes, except method-specific success and failure
+   indications (Section 12.1, Section 12.6)
+
+   Key derivation: Yes
+
+   Key strength: EAP-AKA supports key derivation with 128-bit effective
+   key strength.
+
+   Description of key hierarchy: Please see Section 7.
+
+   Dictionary attack protection: N/A (Section 12.5)
+
+   Fast reconnect: Yes
+
+   Cryptographic binding: N/A
+
+   Session independence: Yes (Section 12.4)
+
+   Fragmentation: No
+
+   Channel binding: No
+
+   Indication of vulnerabilities.  Vulnerabilities are discussed in
+   Section 12.
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 73]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+14.  Acknowledgements and Contributions
+
+   The authors wish to thank Rolf Blom of Ericsson, Bernard Aboba of
+   Microsoft, Arne Norefors of Ericsson, N.Asokan of Nokia, Valtteri
+   Niemi of Nokia, Kaisa Nyberg of Nokia, Jukka-Pekka Honkanen of Nokia,
+   Pasi Eronen of Nokia, Olivier Paridaens of Alcatel, and Ilkka
+   Uusitalo of Ericsson for interesting discussions in this problem
+   space.
+
+   Many thanks to Yoshihiro Ohba for reviewing the document.
+
+   This protocol has been partly developed in parallel with EAP-SIM
+   [EAP-SIM], and hence this specification incorporates many ideas from
+   EAP-SIM, and many contributions from the reviewer's of EAP-SIM.
+
+   The attribute format is based on the extension format of Mobile IPv4
+   [RFC3344].
+
+15.  References
+
+15.1.  Normative References
+
+   [TS33.102]        3rd Generation Partnership Project, "3GPP Technical
+                     Specification 3GPP TS 33.102 V5.1.0: "Technical
+                     Specification Group Services and System Aspects; 3G
+                     Security; Security Architecture (Release 5)"",
+                     December 2002.
+
+   [S.S0055-A]       3rd Generation Partnership Project 2, "3GPP2
+                     Enhanced Cryptographic Algorithms", September 2003.
+
+   [RFC4282]         Aboba, B., Beadles, M., Arkko, J., and P. Eronen,
+                     "The Network Access Identifier", RFC 4282, December
+                     2005.
+
+   [RFC3748]         Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J.,
+                     and H.  Levkowetz, "Extensible Authentication
+                     Protocol (EAP)", RFC 3748, June 2004.
+
+   [RFC2119]         Bradner, S., "Key words for use in RFCs to Indicate
+                     Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+   [TS23.003]        3rd Generation Partnership Project, "3GPP Technical
+                     Specification 3GPP TS 23.003 V6.8.0: "3rd
+                     Generation Parnership Project; Technical
+                     Specification Group Core Network; Numbering,
+                     addressing and identification (Release 6)"",
+                     December 2005.
+
+
+
+Arkko & Haverinen            Informational                     [Page 74]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+   [RFC2104]         Krawczyk, H., Bellare, M. and R. Canetti, "HMAC:
+                     Keyed-Hashing for Message Authentication",
+                     RFC 2104, February 1997.
+
+   [AES]             National Institute of  Standards and Technology,
+                     "Federal Information Processing Standards (FIPS)
+                     Publication 197, "Advanced Encryption Standard
+                     (AES)"", November 2001,
+                     http://csrc.nist.gov/publications/fips/fips197/
+                     fips-197.pdf.
+
+   [CBC]             National Institute of Standards and Technology,
+                     "NIST Special Publication 800-38A, "Recommendation
+                     for Block Cipher Modes of Operation - Methods and
+                     Techniques"", December 2001,
+                     http://csrc.nist.gov/publications/
+                     nistpubs/800-38a/sp800-38a.pdf.
+
+   [SHA-1]           National Institute of Standards and Technology,
+                     U.S.  Department of Commerce, "Federal Information
+                     Processing Standard (FIPS) Publication 180-1,
+                     "Secure Hash Standard"", April 1995.
+
+   [PRF]             National Institute of Standards and Technology,
+                     "Federal Information Processing Standards (FIPS)
+                     Publication  186-2 (with change notice); Digital
+                     Signature Standard (DSS)", January 2000,
+                     http://csrc.nist.gov/publications/
+                     fips/fips186-2/fips186-2-change1.pdf.
+
+   [TS33.105]        3rd Generation Partnership Project, "3GPP Technical
+                     Specification 3GPP TS 33.105 4.1.0: "Technical
+                     Specification Group Services and System Aspects; 3G
+                     Security; Cryptographic Algorithm Requirements
+                     (Release 4)"", June 2001.
+
+   [RFC3629]         Yergeau, F., "UTF-8, a transformation format of ISO
+                     10646", STD 63, RFC 3629, November 2003.
+
+   [RFC2434]         Narten, T. and H. Alvestrand, "Guidelines for
+                     Writing an IANA Considerations Section in RFCs",
+                     BCP 26, RFC 2434, October 1998.
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 75]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+15.2.  Informative References
+
+   [RFC2548]         Zorn, G., "Microsoft Vendor-specific RADIUS
+                     Attributes", RFC 2548, March 1999.
+
+   [PEAP]            Palekar, A., Simon, D., Zorn, G., Salowey, J.,
+                     Zhou, H., and S. Josefsson, "Protected EAP Protocol
+                     (PEAP) Version 2", work in progress, October 2004.
+
+   [PEAP-02]         Anderson, H., Josefsson, S., Zorn, G., Simon, D.,
+                     and A.  Palekar, "Protected EAP Protocol (PEAP)",
+                     work in progress, February 2002.
+
+   [EAPKeying]       Aboba, B., Simon, D., Arkko, J., Eronen, P., and H.
+                     Levkowetz, "Extensible Authentication Protocol
+                     (EAP) Key Management Framework", work in progress,
+                     October 2005.
+
+   [ServiceIdentity] Arkko, J. and P. Eronen, "Authenticated Service
+                     Information for the Extensible Authentication
+                     Protocol (EAP)", Work in Progress, October 2004.
+
+   [RFC4086]         Eastlake, D., Schiller, J., and S. Crocker,
+                     "Randomness Requirements for Security", BCP 106,
+                     RFC 4086, June 2005.
+
+   [RFC3344]         Perkins, C., "IP Mobility Support for IPv4",
+                     RFC 3344, August 2002.
+
+   [EAP-SIM]         Haverinen, H., Ed. and J. Salowey, Ed., "Extensible
+                     Authentication Protocol Method for Global System
+                     for Mobile Communications (GSM) Subscriber Identity
+                     Modules (EAP-SIM)", RFC 4186, January 2006.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 76]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+Appendix A.  Pseudo-Random Number Generator
+
+   The "|" character denotes concatenation, and "^" denotes
+   exponentiation.
+
+   Step 1: Choose a new, secret value for the seed-key, XKEY
+
+   Step 2: In hexadecimal notation let
+       t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
+       This is the initial value for H0|H1|H2|H3|H4
+       in the FIPS SHS [SHA-1]
+
+   Step 3: For j = 0 to m - 1 do
+         3.1.  XSEED_j = 0 /* no optional user input */
+         3.2.  For i = 0 to 1 do
+               a.  XVAL = (XKEY + XSEED_j) mod 2^b
+               b.  w_i = G(t, XVAL)
+               c.  XKEY = (1 + XKEY + w_i) mod 2^b
+         3.3.  x_j = w_0|w_1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 77]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+Authors' Addresses
+
+   Jari Arkko
+   Ericsson
+   FIN-02420 Jorvas
+   Finland
+
+   EMail: jari.Arkko@ericsson.com
+
+
+   Henry Haverinen
+   Nokia Enterprise Solutions
+   P.O. Box 12
+   FIN-40101 Jyvaskyla
+   Finland
+
+   EMail: henry.haverinen@nokia.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 78]
+\f
+RFC 4187                 EAP-AKA Authentication             January 2006
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2006).
+
+   This document is subject to the rights, licenses and restrictions
+   contained in BCP 78, and except as set forth therein, the authors
+   retain all their rights.
+
+   This document and the information contained herein are provided on an
+   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
+   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
+   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
+   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
+   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
+   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Intellectual Property
+
+   The IETF takes no position regarding the validity or scope of any
+   Intellectual Property Rights or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; nor does it represent that it has
+   made any independent effort to identify any such rights.  Information
+   on the procedures with respect to rights in RFC documents can be
+   found in BCP 78 and BCP 79.
+
+   Copies of IPR disclosures made to the IETF Secretariat and any
+   assurances of licenses to be made available, or the result of an
+   attempt made to obtain a general license or permission for the use of
+   such proprietary rights by implementers or users of this
+   specification can be obtained from the IETF on-line IPR repository at
+   http://www.ietf.org/ipr.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights that may cover technology that may be required to implement
+   this standard.  Please address the information to the IETF at
+   ietf-ipr@ietf.org.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is provided by the IETF
+   Administrative Support Activity (IASA).
+
+
+
+
+
+
+
+Arkko & Haverinen            Informational                     [Page 79]
+\f