| rfc9678v1.txt | rfc9678.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) J. Arkko | Internet Engineering Task Force (IETF) J. Arkko | |||
| Request for Comments: 9678 K. Norrman | Request for Comments: 9678 K. Norrman | |||
| Updates: 5448, 9048 J. Preuß Mattsson | Updates: 5448, 9048 J. Preuß Mattsson | |||
| Category: Standards Track Ericsson | Category: Standards Track Ericsson | |||
| ISSN: 2070-1721 October 2024 | ISSN: 2070-1721 February 2025 | |||
| Forward Secrecy for the Extensible Authentication Protocol Method for | Forward Secrecy Extension to the Improved Extensible Authentication | |||
| Authentication and Key Agreement (EAP-AKA' FS) | Protocol Method for Authentication and Key Agreement (EAP-AKA' FS) | |||
| Abstract | Abstract | |||
| This document updates RFC 9048, which details the improved Extensible | This document updates RFC 9048, "Improved Extensible Authentication | |||
| Authentication Protocol Method for 3GPP Mobile Network Authentication | Protocol Method for 3GPP Mobile Network Authentication and Key | |||
| and Key Agreement (EAP-AKA'), with an optional extension providing | Agreement (EAP-AKA')", and its predecessor RFC 5448 with an optional | |||
| ephemeral key exchange. Similarly, this document also updates the | extension providing ephemeral key exchange. The extension EAP-AKA' | |||
| earlier version of the EAP-AKA' specification in RFC 5448. The | Forward Secrecy (EAP-AKA' FS), when negotiated, provides forward | |||
| extension EAP-AKA' Forward Secrecy (EAP-AKA' FS), when negotiated, | secrecy for the session keys generated as a part of the | |||
| provides forward secrecy for the session keys generated as a part of | authentication run in EAP-AKA'. This prevents an attacker who has | |||
| the authentication run in EAP-AKA'. This prevents an attacker who | gained access to the long-term key from obtaining session keys | |||
| has gained access to the long-term key from obtaining session keys | established in the past. In addition, EAP-AKA' FS mitigates passive | |||
| established in the past, assuming these have been properly deleted. | attacks (e.g., large-scale pervasive monitoring) against future | |||
| In addition, EAP-AKA' FS mitigates passive attacks (e.g., large-scale | sessions. This forces attackers to use active attacks instead. | |||
| pervasive monitoring) against future sessions. This forces attackers | ||||
| to use active attacks instead. | ||||
| Status of This Memo | Status of This Memo | |||
| This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
| This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
| (IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
| received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
| Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
| Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
| https://www.rfc-editor.org/info/rfc9678. | https://www.rfc-editor.org/info/rfc9678. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
| Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
| skipping to change at line 111 ¶ | skipping to change at line 109 ¶ | |||
| associated with pervasive surveillance. Some of the reported attacks | associated with pervasive surveillance. Some of the reported attacks | |||
| involved compromising the Universal Subscriber Identity Module (USIM) | involved compromising the Universal Subscriber Identity Module (USIM) | |||
| card supply chain. Attacks revealing the AKA long-term key may | card supply chain. Attacks revealing the AKA long-term key may | |||
| occur, for instance: | occur, for instance: | |||
| * during the manufacturing process of USIM cards, | * during the manufacturing process of USIM cards, | |||
| * during the transfer of the cards and associated information to the | * during the transfer of the cards and associated information to the | |||
| operator, and | operator, and | |||
| * when a system is running. | * when the system is running. | |||
| Since the publication of reports about such attacks (see | Since the publication of reports about such attacks (see | |||
| [Heist2015]), manufacturing and provisioning processes have gained | [Heist2015]), manufacturing and provisioning processes have gained | |||
| much scrutiny and have improved. | much scrutiny and have improved. | |||
| However, the danger of resourceful attackers attempting to gain | However, the danger of resourceful attackers attempting to gain | |||
| information about long-term keys is still a concern because these | information about long-term keys is still a concern because these | |||
| keys are high-value targets. Note that the attacks are largely | keys are high-value targets. Note that the attacks are largely | |||
| independent of the used authentication technology; the issue is not | independent of the used authentication technology; the issue is not | |||
| vulnerabilities in algorithms or protocols, but rather the | vulnerabilities in algorithms or protocols, but rather the | |||
| skipping to change at line 234 ¶ | skipping to change at line 232 ¶ | |||
| It is based on challenge-response mechanisms and symmetric | It is based on challenge-response mechanisms and symmetric | |||
| cryptography. In contrast to its earlier GSM counterparts, AKA | cryptography. In contrast to its earlier GSM counterparts, AKA | |||
| provides long key lengths and mutual authentication. The phone | provides long key lengths and mutual authentication. The phone | |||
| typically executes AKA in a USIM. A USIM is technically just an | typically executes AKA in a USIM. A USIM is technically just an | |||
| application that can reside on a removable Universal Integrated | application that can reside on a removable Universal Integrated | |||
| Circuit Card (UICC), an embedded UICC, or integrated in a Trusted | Circuit Card (UICC), an embedded UICC, or integrated in a Trusted | |||
| Execution Environment (TEE). In this document, we use the term "USIM | Execution Environment (TEE). In this document, we use the term "USIM | |||
| card" to refer to any Subscriber Identity Module (SIM) capable of | card" to refer to any Subscriber Identity Module (SIM) capable of | |||
| running AKA. | running AKA. | |||
| The goal of AKA is to mutually authenticate the USIM and the so- | The goals of AKA are to mutually authenticate the USIM and the so- | |||
| called home environment, which is the authentication server in the | called home environment, which is the authentication Server in the | |||
| subscribers home operator's network. | subscriber's home operator's network, and to establish key material | |||
| between the two. | ||||
| AKA works in the following manner: | AKA works in the following manner: | |||
| * The USIM and the home environment have agreed on a long-term | * The USIM and the home environment have agreed on a long-term | |||
| symmetric key beforehand. | symmetric key beforehand. | |||
| * The actual authentication process starts by having the home | * The actual authentication process starts by having the home | |||
| environment produce an authentication vector, based on the long- | environment produce an authentication vector, based on the long- | |||
| term key and a sequence number. The authentication vector | term key and a sequence number. The authentication vector | |||
| contains a random part RAND, an authenticator part AUTN used for | contains a random part RAND, an authenticator part AUTN used for | |||
| authenticating the network to the USIM, an expected result part | authenticating the network to the USIM, an expected result part | |||
| XRES, a 128-bit session key for integrity check IK, and a 128-bit | XRES, a 128-bit session key for the integrity check IK, and a | |||
| session key for encryption CK. | 128-bit session key for the encryption CK. | |||
| * The authentication vector is passed to the serving network, which | * The authentication vector is passed to the serving network, which | |||
| uses it to authenticate the device. | uses it to authenticate the device. | |||
| * The RAND and the AUTN are delivered to the USIM. | * The RAND and the AUTN are delivered to the USIM. | |||
| * The USIM verifies the AUTN, again based on the long-term key and | * The USIM verifies the AUTN, again based on the long-term key and | |||
| the sequence number. If this process is successful (the AUTN is | the sequence number. If this process is successful (the AUTN is | |||
| valid and the sequence number used to generate AUTN is within the | valid and the sequence number used to generate the AUTN is within | |||
| correct range), the USIM produces an authentication result RES and | the correct range), the USIM produces an authentication result RES | |||
| sends it to the serving network. | and sends it to the serving network. | |||
| * The serving network verifies that the result from the USIM matches | * The serving network verifies that the result from the USIM matches | |||
| the expected value in the authentication vector. If it does, the | the expected value in the authentication vector. If it does, the | |||
| USIM is considered authenticated, and IK and CK can be used to | USIM is considered authenticated, and the IK and CK can be used to | |||
| protect further communications between the USIM and the home | protect further communications between the USIM and the home | |||
| environment. | environment. | |||
| 4.2. EAP-AKA' Protocol | 4.2. EAP-AKA' Protocol | |||
| When AKA is embedded into EAP, the authentication processing on the | When AKA is embedded into EAP, the authentication processing on the | |||
| network side is moved to the home environment. The 3GPP | network side is moved to the home environment. The 3GPP | |||
| Authentication Database (AD) generates authentication vectors. The | Authentication Database (AD) generates authentication vectors. The | |||
| 3GPP authentication server takes the role of EAP server. The USIM | 3GPP authentication Server takes the role of EAP Server. The USIM | |||
| combined with the mobile phone takes the role of client. The | combined with the mobile phone takes the role of client. The | |||
| difference between EAP-AKA [RFC4187] and EAP-AKA' [RFC9048] is that | difference between EAP-AKA [RFC4187] and EAP-AKA' [RFC9048] is that | |||
| EAP-AKA' binds the derived keys to the name of the access network. | EAP-AKA' binds the derived keys to the name of the access network. | |||
| Figure 1 describes the basic flow in the EAP-AKA' authentication | Figure 1 describes the basic flow in the EAP-AKA' authentication | |||
| process. The definition of the full protocol behavior, along with | process. The definition of the full protocol behavior, along with | |||
| the definition of the attributes AT_RAND, AT_AUTN, AT_MAC, and AT_RES | the definition of the attributes AT_RAND, AT_AUTN, AT_MAC, and AT_RES | |||
| can be found in [RFC9048] and [RFC4187]. Note the use of EAP | can be found in [RFC9048] and [RFC4187]. Note the use of EAP | |||
| terminology from hereon. That is, the 3GPP serving network takes on | terminology from hereon. That is, the 3GPP serving network takes on | |||
| the role of an EAP access network. | the role of an EAP access network. | |||
| Peer Server | Peer Server | |||
| | | | | | | |||
| | EAP-Request/Identity | | | EAP-Request/Identity | | |||
| |<-----------------------------------------------------------+ | |<-----------------------------------------------------------+ | |||
| | | | | | | |||
| | EAP-Response/Identity | | | EAP-Response/Identity | | |||
| | (Includes user's Network Access Identifier (NAI)) | | | (Includes user's Network Access Identifier (NAI)) | | |||
| +----------------------------------------------------------->| | +----------------------------------------------------------->| | |||
| | +-----------------------------------------------------+--+ | | +-------------------------------------------------------+--+ | |||
| | | Server determines the network name and ensures that | | | | The Server determines the network name and ensures that | | |||
| | | the given access network is authorized to use the | | | | the given access network is authorized to use the | | |||
| | | claimed name. The server then runs the AKA' algorithms | | | | claimed name. The Server then runs the EAP-AKA' | | |||
| | | generating RAND and AUTN, derives session keys from | | | | algorithms generating RAND and AUTN, and derives session | | |||
| | | CK' and IK'. RAND and AUTN are sent as AT_RAND and | | | | keys from CK' and IK'. RAND and AUTN are sent as | | |||
| | | AT_AUTN attributes, whereas the network name is | | | | AT_RAND and AT_AUTN attributes, whereas the network name | | |||
| | | transported in the AT_KDF_INPUT attribute. AT_KDF | | | | is transported in the AT_KDF_INPUT attribute. AT_KDF | | |||
| | | signals the used key derivation function. The session | | | | signals the used key derivation function. The session | | |||
| | | keys are used to create the AT_MAC attribute. | | | | keys are used to create the AT_MAC attribute. | | |||
| | +-----------------------------------------------------+--+ | | +-------------------------------------------------------+--+ | |||
| | | | | | | |||
| | EAP-Request/AKA'-Challenge | | | EAP-Request/AKA'-Challenge | | |||
| | (AT_RAND, AT_AUTN, AT_KDF, AT_KDF_INPUT, AT_MAC) | | | (AT_RAND, AT_AUTN, AT_KDF, AT_KDF_INPUT, AT_MAC) | | |||
| |<-----------------------------------------------------------+ | |<-----------------------------------------------------------+ | |||
| +--+-----------------------------------------------------+ | | +--+------------------------------------------------------+ | | |||
| | The peer determines what the network name should be, | | | | The Peer determines what the network name should be, | | | |||
| | based on, e.g., what access technology it is using. | | | | based on, e.g., what access technology it is using. | | | |||
| | The peer also retrieves the network name sent by the | | | | The Peer also retrieves the network name sent by the | | | |||
| | network from the AT_KDF_INPUT attribute. The two names | | | | network from the AT_KDF_INPUT attribute. The two names | | | |||
| | are compared for discrepancies, and if they do not | | | | are compared for discrepancies, and if they do not | | | |||
| | match, the authentication is aborted. Otherwise, the | | | | match, the authentication is aborted. Otherwise, the | | | |||
| | network name from AT_KDF_INPUT attribute is used in | | | | network name from the AT_KDF_INPUT attribute is used | | | |||
| | running the AKA' algorithms, verifying AUTN from | | | | in running the EAP-AKA' algorithms, verifying AUTN from | | | |||
| | AT_AUTN and MAC from AT_MAC attributes. The peer then | | | | AT_AUTN and Message Authentication Code (MAC) from the | | | |||
| | generates RES. The peer also derives session keys from | | | | AT_MAC attributes. The Peer then generates RES. The | | | |||
| | CK'/IK'. The AT_RES and AT_MAC attributes are | | | | Peer also derives session keys from CK'/IK. The AT_RES | | | |||
| | constructed. | | | | and AT_MAC attributes are constructed. | | | |||
| +--+-----------------------------------------------------+ | | +--+------------------------------------------------------+ | | |||
| | | | | | | |||
| | EAP-Response/AKA'-Challenge | | | EAP-Response/AKA'-Challenge | | |||
| | (AT_RES, AT_MAC) | | | (AT_RES, AT_MAC) | | |||
| +----------------------------------------------------------->| | +----------------------------------------------------------->| | |||
| | +-----------------------------------------------------+--+ | | +-----------------------------------------------------+--+ | |||
| | | Server checks the RES and MAC values received in | | | | The Server checks the RES and MAC values received in | | |||
| | | AT_RES and AT_MAC, respectively. Success requires both | | | | AT_RES and AT_MAC, respectively. Success requires | | |||
| | | compared values match, respectively. | | | | both compared values match, respectively. | | |||
| | +-----------------------------------------------------+--+ | | +-----------------------------------------------------+--+ | |||
| | | | | | | |||
| | EAP-Success | | | EAP-Success | | |||
| |<-----------------------------------------------------------+ | |<-----------------------------------------------------------+ | |||
| | | | | | | |||
| Figure 1: EAP-AKA' Authentication Process | Figure 1: EAP-AKA' Authentication Process | |||
| 4.3. Attacks Against Long-Term Keys in Smart Cards | 4.3. Attacks Against Long-Term Keys in Smart Cards | |||
| The general security properties and potential vulnerabilities of AKA | The general security properties and potential vulnerabilities of AKA | |||
| and EAP-AKA' are discussed in [RFC9048]. | and EAP-AKA' are discussed in [RFC9048]. | |||
| An important question in that discussion relates to the potential | An important question in that discussion relates to the potential | |||
| compromise of long-term keys, as discussed earlier. Attacks on long- | compromise of long-term keys, as discussed earlier. Attacks on long- | |||
| term keys are not specific to AKA or EAP-AKA', and all security | term keys are not specific to AKA or EAP-AKA', and all security | |||
| systems fail, at least to some extent, if key material is stolen. | systems fail, at least to some extent, if key material is stolen. | |||
| However, it would be preferable to retain some security even in the | However, it would be preferable to retain some security even in the | |||
| face of such attacks. This document specifies a mechanism that | face of such attacks. This document specifies a mechanism that | |||
| reduces risks to compromise of key material belonging to previous | reduces the risks of compromising key material belonging to previous | |||
| sessions, before the long-term keys were compromised. It also forces | sessions, before the long-term keys were compromised. It also forces | |||
| attackers to be active even after the compromise. | attackers to be active even after the compromise. | |||
| 5. Protocol Overview | 5. Protocol Overview | |||
| Forward Secrecy (FS) for EAP-AKA' is achieved by using an Elliptic | Forward Secrecy (FS) for EAP-AKA' is achieved by using an Elliptic | |||
| Curve Diffie-Hellman (ECDH) exchange [RFC7748]. To provide FS, the | Curve Diffie-Hellman (ECDH) exchange [RFC7748]. To provide FS, the | |||
| exchange must be run in an ephemeral manner, i.e., both sides | exchange must be run in an ephemeral manner, i.e., both sides | |||
| generate temporary keys according to the negotiated ciphersuite. For | generate temporary keys according to the negotiated ciphersuite. For | |||
| example, for X25519, this is done as specified in [RFC7748]. This | example, for X25519, this is done as specified in [RFC7748]. This | |||
| skipping to change at line 371 ¶ | skipping to change at line 370 ¶ | |||
| wire formats are chosen to align with the elliptic curves and formats | wire formats are chosen to align with the elliptic curves and formats | |||
| specified for Subscription Concealed Identifier (SUCI) encryption in | specified for Subscription Concealed Identifier (SUCI) encryption in | |||
| Appendix C.3.4 of 3GPP [TS.33.501]. | Appendix C.3.4 of 3GPP [TS.33.501]. | |||
| The enhancements in the EAP-AKA' FS protocol are compatible with the | The enhancements in the EAP-AKA' FS protocol are compatible with the | |||
| signaling flow and other basic structures of both AKA and EAP-AKA'. | signaling flow and other basic structures of both AKA and EAP-AKA'. | |||
| The intent is to implement the enhancement as optional attributes | The intent is to implement the enhancement as optional attributes | |||
| that legacy implementations ignore. | that legacy implementations ignore. | |||
| The purpose of the protocol is to achieve mutual authentication | The purpose of the protocol is to achieve mutual authentication | |||
| between the EAP server and peer and to establish keying material for | between the EAP Server and Peer and to establish key material for | |||
| secure communication between the two. This document specifies the | secure communication between the two. This document specifies the | |||
| calculation of key material, providing new properties that are not | calculation of key material, providing new properties that are not | |||
| present in key material provided by EAP-AKA' in its original form. | present in key material provided by EAP-AKA' in its original form. | |||
| Figure 2 describes the overall process. Since the goal has been to | Figure 2 describes the overall process. Since the goal has been to | |||
| not require new infrastructure or credentials, the flow diagrams also | not require new infrastructure or credentials, the flow diagrams also | |||
| show the conceptual interaction with the USIM card and the home | show the conceptual interaction with the USIM card and the home | |||
| environment. Recall that the home environment represents the 3GPP | environment. Recall that the home environment represents the 3GPP | |||
| Authentication Database (AD) and server. The details of those | Authentication Database (AD) and Server. The details of those | |||
| interactions are outside the scope of this document, however, and the | interactions are outside the scope of this document; however, and the | |||
| reader is referred to the 3GPP specifications. For 5G, this is | reader is referred to the 3GPP specifications (for 5G, this is | |||
| specified in 3GPP [TS.33.501]. | specified in 3GPP [TS.33.501]). | |||
| USIM Peer Server AD | USIM Peer Server AD | |||
| | | | | | | | | | | |||
| | | EAP-Req/Identity | | | | | EAP-Req/Identity | | | |||
| | |<---------------------------+ | | | |<---------------------------+ | | |||
| | | | | | | | | | | |||
| | | EAP-Resp/Identity | | | | | EAP-Resp/Identity | | | |||
| | | (Privacy-Friendly) | | | | | (Privacy-Friendly) | | | |||
| | +--------------------------->| | | | +--------------------------->| | | |||
| | +-------+----------------------------+----------------+--+ | | +-------+----------------------------+----------------+----+ | |||
| | | Server now has an identity for the peer. The server | | | | The Server now has an identity for the Peer. The Server | | |||
| | | then asks the help of AD to run AKA algorithms, | | | | then asks the help of the AD to run EAP-AKA algorithms, | | |||
| | | generating RAND, AUTN, XRES, CK, IK. Typically, the | | | | generating RAND, AUTN, XRES, CK, and IK. Typically, the | | |||
| | | AD performs the first part of key derivations so that | | | | AD performs the first part of derivations so that the | | |||
| | | the authentication server gets the CK' and IK' keys | | | | authentication Server gets the CK' and IK' keys already | | |||
| | | already tied to a particular network name. | | | | tied to a particular network name. | | |||
| | +-------+----------------------------+----------------+--+ | | +-------+----------------------------+----------------+----+ | |||
| | | | | | | | | | | |||
| | | | ID, key deriv. | | | | | ID, key deriv. | | |||
| | | | function, | | | | | function, | | |||
| | | | network name | | | | | network name | | |||
| | | +--------------->| | | | +--------------->| | |||
| | | | | | | | | | | |||
| | | | RAND, AUTN, | | | | | RAND, AUTN, | | |||
| | | | XRES, CK', IK' | | | | | XRES, CK', IK' | | |||
| | | |<---------------+ | | | |<---------------+ | |||
| | +-------+----------------------------+----------------+--+ | | +-------+----------------------------+----------------+----+ | |||
| | | Server now has the needed authentication vector. It | | | | The Server now has the needed authentication vector. It | | |||
| | | generates an ephemeral key pair, sends the public key | | | | generates an ephemeral key pair, and sends the public | | |||
| | | of that key pair and the first EAP method message to | | | | key of that key pair and the first EAP method message to | | |||
| | | the peer. In the message the AT_PUB_ECDHE attribute | | | | the Peer. In the message the AT_PUB_ECDHE attribute | | |||
| | | carries the public key and the AT_KDF_FS attribute | | | | carries the public key and the AT_KDF_FS attribute | | |||
| | | carries other FS-related parameters. Both of these are | | | | carries other FS-related parameters. Both of these are | | |||
| | | skippable attributes that can be ignored if the peer | | | | skippable attributes that can be ignored if the Peer | | |||
| | | does not support this extension. | | | | does not support this extension. | | |||
| | +-------+----------------------------+----------------+--+ | | +-------+----------------------------+----------------+----+ | |||
| | | | | | | | | | | |||
| | | EAP-Req/AKA'-Challenge | | | | | EAP-Req/AKA'-Challenge | | | |||
| | | AT_RAND, AT_AUTN, AT_KDF, | | | | | AT_RAND, AT_AUTN, AT_KDF, | | | |||
| | | AT_KDF_FS, AT_KDF_INPUT, | | | | | AT_KDF_FS, AT_KDF_INPUT, | | | |||
| | | AT_PUB_ECDHE, AT_MAC | | | | | AT_PUB_ECDHE, AT_MAC | | | |||
| | |<---------------------------+ | | | |<---------------------------+ | | |||
| +--+--------------+----------------------------+---------+ | | +--+--------------+----------------------------+---------+ | | |||
| | The peer checks if it wants to do the FS extension. If | | | | The Peer checks if it wants to do the FS extension. | | | |||
| | yes, it will eventually respond with AT_PUB_ECDHE and | | | | If yes, it will eventually respond with AT_PUB_ECDHE | | | |||
| | AT_MAC. If not, it will ignore AT_PUB_ECDHE and | | | | and AT_MAC. If not, it will ignore AT_PUB_ECDHE and | | | |||
| | AT_KDF_FS and base all calculations on basic EAP-AKA' | | | | AT_KDF_FS and base all calculations on basic EAP-AKA' | | | |||
| | attributes, continuing just as in EAP-AKA' per RFC | | | | attributes, continuing just as in EAP-AKA' per RFC | | | |||
| | 9048 rules. In any case, the peer needs to query the | | | | 9048 rules. In any case, the Peer needs to query the | | | |||
| | auth parameters from the USIM card. | | | | auth parameters from the USIM card. | | | |||
| +--+--------------+----------------------------+---------+ | | +--+--------------+----------------------------+---------+ | | |||
| | | | | | | | | | | |||
| | RAND, AUTN | | | | | RAND, AUTN | | | | |||
| |<-------------+ | | | |<-------------+ | | | |||
| | | | | | | | | | | |||
| | CK, IK, RES | | | | | CK, IK, RES | | | | |||
| +------------->| | | | +------------->| | | | |||
| +--+--------------+----------------------------+---------+ | | +--+--------------+----------------------------+---------+ | | |||
| | The peer now has everything to respond. If it wants to | | | | The Peer now has everything to respond. If it wants | | | |||
| | participate in the FS extension, it will then generate | | | | to participate in the FS extension, it will then | | | |||
| | its key pair, calculate a shared key based on its key | | | | generate its key pair, calculate a shared key based on | | | |||
| | pair and the server's public key. Finally, it proceeds | | | | its key pair and the Server's public key. Finally, it | | | |||
| | to derive all EAP-AKA' key values and constructs a | | | | proceeds to derive all EAP-AKA' key values and | | | |||
| | full response. | | | | constructs a full response. | | | |||
| +--+--------------+----------------------------+---------+ | | +--+--------------+----------------------------+---------+ | | |||
| | | | | | | | | | | |||
| | | EAP-Resp/AKA'-Challenge | | | | | EAP-Resp/AKA'-Challenge | | | |||
| | | AT_RES, AT_PUB_ECDHE, | | | | | AT_RES, AT_PUB_ECDHE, | | | |||
| | | AT_MAC | | | | | AT_MAC | | | |||
| | +--------------------------->| | | | +--------------------------->| | | |||
| | +-------+----------------------------+----------------+--+ | | +-------+----------------------------+----------------+--+ | |||
| | | The server now has all the necessary values. It | | | | The Server now has all the necessary values. It | | |||
| | | generates the ECDHE shared secret and checks the RES | | | | generates the ECDHE shared secret and checks the RES | | |||
| | | and MAC values received in AT_RES and AT_MAC, | | | | and MAC values received in AT_RES and AT_MAC, | | |||
| | | respectively. Success requires both to be found | | | | respectively. Success requires both to be found | | |||
| | | correct. Note that when this document is used, | | | | correct. Note that when this document is used, | | |||
| | | the keys generated from EAP-AKA' are based on CK, IK, | | | | the keys generated from EAP-AKA' are based on CK, IK, | | |||
| | | and the ECDHE value. Even if there was an attacker who | | | | and the ECDHE value. Even if there was an attacker | | |||
| | | held the long-term key, only an active attacker could | | | | who held the long-term key, only an active attacker | | |||
| | | have determined the generated session keys; in basic | | | | could have determined the generated session keys; in | | |||
| | | EAP-AKA' the generated keys are only based on CK and | | | | basic EAP-AKA' the generated keys are only based on CK | | |||
| | | IK. | | | | and IK. | | |||
| | +-------+----------------------------+----------------+--+ | | +-------+----------------------------+----------------+--+ | |||
| | | | | | | | | | | |||
| | | EAP-Success | | | | | EAP-Success | | | |||
| | |<---------------------------+ | | | |<---------------------------+ | | |||
| | | | | | | | | | | |||
| Figure 2: EAP-AKA' FS Authentication Process | Figure 2: EAP-AKA' FS Authentication Process | |||
| 6. Extensions to EAP-AKA' | 6. Extensions to EAP-AKA' | |||
| 6.1. AT_PUB_ECDHE | 6.1. AT_PUB_ECDHE | |||
| The AT_PUB_ECDHE attribute carries an ECDHE value. | The AT_PUB_ECDHE attribute carries an ECDHE value. | |||
| The format of the AT_PUB_ECDHE attribute is shown below. | The format of the AT_PUB_ECDHE attribute is shown below. | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_PUB_ECDHE | Length | Value | | | AT_PUB_ECDHE | Length | Value | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The fields are as follows: | The fields are as follows: | |||
| AT_PUB_ECDHE: | AT_PUB_ECDHE: | |||
| This is set to 152 by IANA. | This is set to 152. | |||
| Length: | Length: | |||
| This is the length of the attribute, set as other attributes in | This is the length of the attribute, set as other attributes in | |||
| EAP-AKA [RFC4187]. The length is expressed in multiples of 4 | EAP-AKA [RFC4187]. The length is expressed in multiples of 4 | |||
| bytes. The length includes the attribute type field, the Length | bytes. The length includes the attribute type field, the Length | |||
| field itself, and the Value field (along with any padding). | field itself, and the Value field (along with any padding). | |||
| Value: | Value: | |||
| This value is the sender's ECDHE public key. The value depends on | This value is the sender's ECDHE public key. The value depends on | |||
| the AT_KDF_FS attribute and is calculated as follows: | the AT_KDF_FS attribute and is calculated as follows: | |||
| skipping to change at line 521 ¶ | skipping to change at line 520 ¶ | |||
| To retain the security of the keys, the sender SHALL generate a | To retain the security of the keys, the sender SHALL generate a | |||
| fresh value for each run of the protocol. | fresh value for each run of the protocol. | |||
| 6.2. AT_KDF_FS | 6.2. AT_KDF_FS | |||
| The AT_KDF_FS attribute indicates the used or desired FS key | The AT_KDF_FS attribute indicates the used or desired FS key | |||
| generation function, if the FS extension is used. It will also | generation function, if the FS extension is used. It will also | |||
| indicate the used or desired ECDHE group. A new attribute is needed | indicate the used or desired ECDHE group. A new attribute is needed | |||
| to carry this information, as AT_KDF carries the basic KDF value that | to carry this information, as AT_KDF carries the basic KDF value that | |||
| is still used together with the FS KDF value. The basic KDF value is | is still used together with the FS KDF value. The basic KDF value is | |||
| also used by those EAP peers that cannot or do not want to use this | also used by those EAP Peers that cannot or do not want to use this | |||
| extension. | extension. | |||
| This document only specifies the behavior relating to the following | This document only specifies the behavior relating to the following | |||
| combinations of basic KDF values and FS KDF values: | combinations of basic KDF values and FS KDF values: | |||
| * the basic KDF value in AT_KDF is 1, as specified in [RFC5448] and | * the basic KDF value in AT_KDF is 1, as specified in [RFC5448] and | |||
| [RFC9048] and | [RFC9048] and | |||
| * the FS KDF values in AT_KDF_FS are 1 or 2, as specified below and | * the FS KDF values in AT_KDF_FS are 1 or 2, as specified below and | |||
| in Section 6.3. | in Section 6.3. | |||
| skipping to change at line 549 ¶ | skipping to change at line 548 ¶ | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | AT_KDF_FS | Length | FS Key Derivation Function | | | AT_KDF_FS | Length | FS Key Derivation Function | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| The fields are as follows: | The fields are as follows: | |||
| AT_KDF_FS: | AT_KDF_FS: | |||
| This is set to 153 by IANA. | This is set to 153. | |||
| Length: | Length: | |||
| This is the length of the attribute; it MUST be set to 1. | This is the length of the attribute; it MUST be set to 1. | |||
| FS Key Derivation Function: | FS Key Derivation Function: | |||
| This is an enumerated value representing the FS KDF that the | This is an enumerated value representing the FS Key Derivation | |||
| server (or peer) wishes to use. See Section 6.3 for the functions | Function (KDF) that the Server (or Peer) wishes to use. See | |||
| specified in this document. Note: this field has a different name | Section 6.3 for the functions specified in this document. Note: | |||
| space than the similar field in the AT_KDF attribute KDF defined | this field has a different name space than the similar field in | |||
| in [RFC9048]. | the AT_KDF attribute KDF defined in [RFC9048]. | |||
| Servers MUST send one or more AT_KDF_FS attributes in the EAP- | Servers MUST send one or more AT_KDF_FS attributes in the EAP- | |||
| Request/AKA'-Challenge message. These attributes represent the | Request/AKA'-Challenge message. These attributes represent the | |||
| desired functions ordered by preference, with the most preferred | desired functions ordered by preference, with the most preferred | |||
| function being the first attribute. The most preferred function is | function being the first attribute. The most preferred function is | |||
| the only one that the server includes a public key value for, | the only one that the Server includes a public key value for, | |||
| however. So, for a set of AT_KDF_FS attributes, there is always only | however. So, for a set of AT_KDF_FS attributes, there is always only | |||
| one AT_PUB_ECDHE attribute. | one AT_PUB_ECDHE attribute. | |||
| Upon receiving a set of these attributes: | Upon receiving a set of these attributes: | |||
| * If the peer supports and is willing to use the FS KDF indicated by | * If the Peer supports and is willing to use the FS KDF indicated by | |||
| the first AT_KDF_FS attribute, and is willing and able to use the | the first AT_KDF_FS attribute, and is willing and able to use the | |||
| extension defined in this document, the function is taken into use | extension defined in this document, the function will be used | |||
| without any further negotiation. | without any further negotiation. | |||
| * If the peer does not support this function or is unwilling to use | * If the Peer does not support this function or is unwilling to use | |||
| it, it responds to the server with an indication that a different | it, it responds to the Server with an indication that a different | |||
| function is needed. Similarly, with the negotiation process | function is needed. Similarly, with the negotiation process | |||
| defined in [RFC9048] for AT_KDF, the peer sends an EAP-Response/ | defined in [RFC9048] for AT_KDF, the Peer sends an EAP-Response/ | |||
| AKA'-Challenge message that contains only one attribute, | AKA'-Challenge message that contains only one attribute, | |||
| AT_KDF_FS, with the value set to the desired alternative function | AT_KDF_FS, with the value set to the desired alternative function | |||
| from among the ones suggested by the server earlier. If there is | from among the ones suggested by the Server earlier. If there is | |||
| no suitable alternative, the peer has a choice of either falling | no suitable alternative, the Peer has a choice of either falling | |||
| back to EAP-AKA' or behaving as if AUTN had been incorrect and | back to EAP-AKA' or behaving as if the AUTN had been incorrect and | |||
| failing authentication (see Figure 3 of [RFC4187]). The peer MUST | failing authentication (see Figure 3 of [RFC4187]). The Peer MUST | |||
| fail the authentication if there are any duplicate values within | fail the authentication if there are any duplicate values within | |||
| the list of AT_KDF_FS attributes (except where the duplication is | the list of AT_KDF_FS attributes (except where the duplication is | |||
| due to a request to change the key derivation function; see below | due to a request to change the KDF; see below for further | |||
| for further information). | information). | |||
| * If the peer does not recognize the extension defined in this | * If the Peer does not recognize the extension defined in this | |||
| document or is unwilling to use it, it ignores the AT_KDF_FS | document or is unwilling to use it, it ignores the AT_KDF_FS | |||
| attribute. | attribute. | |||
| Upon receiving an EAP-Response/AKA'-Challenge message with an | Upon receiving an EAP-Response/AKA'-Challenge message with an | |||
| AT_KDF_FS attribute from the peer, the server checks that the | AT_KDF_FS attribute from the Peer, the Server checks that the | |||
| suggested AT_KDF_FS value was one of the alternatives in its offer. | suggested AT_KDF_FS value was one of the alternatives in its offer. | |||
| The first AT_KDF_FS value in the message from the server is not a | The first AT_KDF_FS value in the message from the Server is not a | |||
| valid alternative. If the peer has replied with the first AT_KDF_FS | valid alternative. If the Peer has replied with the first AT_KDF_FS | |||
| value, the server behaves as if the AT_MAC of the response had been | value, the Server behaves as if the AT_MAC of the response had been | |||
| incorrect and fails the authentication. For an overview of the | incorrect and fails the authentication. For an overview of the | |||
| failed authentication process in the server side, see Section 3 and | failed authentication process in the Server side, see Section 3 and | |||
| Figure 2 in [RFC4187]. Otherwise, the server re-sends the EAP- | Figure 2 in [RFC4187]. Otherwise, the Server re-sends the EAP- | |||
| Response/AKA'-Challenge message, but adds the selected alternative to | Response/AKA'-Challenge message, but adds the selected alternative to | |||
| the beginning of the list of AT_KDF_FS attributes and retains the | the beginning of the list of AT_KDF_FS attributes and retains the | |||
| entire list following it. Note that this means that the selected | entire list following it. Note that this means that the selected | |||
| alternative appears twice in the set of AT_KDF values. Responding to | alternative appears twice in the set of AT_KDF values. Responding to | |||
| the peer's request to change the FS KDF is the only valid situation | the Peer's request to change the FS KDF is the only valid situation | |||
| where such duplication may occur. | where such duplication may occur. | |||
| When the peer receives the new EAP-Request/AKA'-Challenge message, it | When the Peer receives the new EAP-Request/AKA'-Challenge message, it | |||
| MUST check that the requested change, and only the requested change, | MUST check that the requested change, and only the requested change, | |||
| occurred in the list of AT_KDF_FS attributes. If so, it continues. | occurred in the list of AT_KDF_FS attributes. If so, it continues. | |||
| If not, it behaves as if AT_MAC were incorrect and fails the | If not, it behaves as if AT_MAC were incorrect and fails the | |||
| authentication. If the peer receives multiple EAP-Request/AKA'- | authentication. If the Peer receives multiple EAP-Request/AKA'- | |||
| Challenge messages with differing AT_KDF_FS attributes without having | Challenge messages with differing AT_KDF_FS attributes without having | |||
| requested negotiation, the peer MUST behave as if AT_MAC were | requested negotiation, the Peer MUST behave as if AT_MAC were | |||
| incorrect and fail the authentication. | incorrect and fail the authentication. | |||
| 6.3. Forward Secrecy Key Derivation Functions | 6.3. Forward Secrecy Key Derivation Functions | |||
| Two new FS KDF types are defined for "EAP-AKA' with ECDHE and | Two new FS KDF types are defined for "EAP-AKA' with ECDHE and | |||
| X25519", represented by value 1, and "EAP-AKA' with ECDHE and P-256", | X25519", represented by value 1, and "EAP-AKA' with ECDHE and P-256", | |||
| represented by value 2. These values represent a particular choice | represented by value 2. These values represent a particular choice | |||
| of KDF and, at the same time, select an ECDHE group to be used. | of KDF and, at the same time, select an ECDHE group to be used. | |||
| The FS KDF type value is only used in the AT_KDF_FS attribute. When | The FS KDF type value is only used in the AT_KDF_FS attribute. When | |||
| skipping to change at line 645 ¶ | skipping to change at line 644 ¶ | |||
| Key derivation in this extension produces exactly the same keys for | Key derivation in this extension produces exactly the same keys for | |||
| internal use within one authentication run as EAP-AKA' [RFC9048] | internal use within one authentication run as EAP-AKA' [RFC9048] | |||
| does. For instance, the K_aut that is used in AT_MAC is still | does. For instance, the K_aut that is used in AT_MAC is still | |||
| exactly as it was in EAP-AKA'. The only change to key derivation is | exactly as it was in EAP-AKA'. The only change to key derivation is | |||
| in the re-authentication keys and keys exported out of the EAP | in the re-authentication keys and keys exported out of the EAP | |||
| method, MSK and EMSK. As a result, EAP-AKA' attributes such as | method, MSK and EMSK. As a result, EAP-AKA' attributes such as | |||
| AT_MAC continue to be usable even when this extension is in use. | AT_MAC continue to be usable even when this extension is in use. | |||
| When the FS KDF field in the AT_KDF_FS attribute is set to 1 or 2 and | When the FS KDF field in the AT_KDF_FS attribute is set to 1 or 2 and | |||
| the Key Derivation Function field in the AT_KDF attribute is set to | the KDF field in the AT_KDF attribute is set to 1, the MK and | |||
| 1, the MK and accompanying keys are derived as follows: | accompanying keys are derived as follows: | |||
| MK = PRF'(IK'|CK',"EAP-AKA'"|Identity) | MK = PRF'(IK'|CK',"EAP-AKA'"|Identity) | |||
| MK_ECDHE = PRF'(IK'|CK'|SHARED_SECRET,"EAP-AKA' FS"|Identity) | MK_ECDHE = PRF'(IK'|CK'|SHARED_SECRET,"EAP-AKA' FS"|Identity) | |||
| K_encr = MK[0..127] | K_encr = MK[0..127] | |||
| K_aut = MK[128..383] | K_aut = MK[128..383] | |||
| K_re = MK_ECDHE[0..255] | K_re = MK_ECDHE[0..255] | |||
| MSK = MK_ECDHE[256..767] | MSK = MK_ECDHE[256..767] | |||
| EMSK = MK_ECDHE[768..1279] | EMSK = MK_ECDHE[768..1279] | |||
| An explanation of the notation used above is copied here: | ||||
| * [n..m] denotes the substring from bit n to m. | ||||
| * PRF' is a new pseudorandom function specified in [RFC9048]. | ||||
| * K_encr is the encryption key (128 bits). | ||||
| * K_aut is the authentication key (256 bits). | ||||
| * K_re is the re-authentication key (256 bits). | ||||
| * MSK is the Master Session Key (512 bits). | ||||
| * EMSK is the Extended Master Session Key (512 bits). | ||||
| Note: MSK and EMSK are outputs from a successful EAP method run | ||||
| [RFC3748]. | ||||
| The CK and IK are produced by the AKA algorithm. The IK' and CK' are | ||||
| derived as specified in [RFC9048] from the IK and CK. | ||||
| The value "EAP-AKA'" is an ASCII string that is 8 characters long. | ||||
| It is used as is, without any trailing NUL characters. Similarly, | ||||
| "EAP-AKA' FS" is an ASCII string that is 11 characters long, also | ||||
| used as is. | ||||
| Requirements for how to securely generate, validate, and process the | Requirements for how to securely generate, validate, and process the | |||
| ephemeral public keys depend on the elliptic curve. | ephemeral public keys depend on the elliptic curve. | |||
| For P-256, the SHARED_SECRET is the shared secret computed as | For P-256, the SHARED_SECRET is the shared secret computed as | |||
| specified in Section 5.7.1.2 of [SP-800-56A]. Public key validation | specified in Section 5.7.1.2 of [SP-800-56A]. Requirements are | |||
| requirements are defined in Section 5 of [SP-800-56A]. At least | defined in Section 5 of [SP-800-56A], in particular, Sections | |||
| partial public key validation MUST be done for the ephemeral public | 5.6.2.3.4, 5.6.3.1, and 5.6.3.3. At least partial public key | |||
| keys. The uncompressed y-coordinate can be computed as described in | validation MUST be done for the ephemeral public keys. The | |||
| uncompressed y-coordinate can be computed as described in | ||||
| Section 2.3.4 of [SEC1]. | Section 2.3.4 of [SEC1]. | |||
| For X25519, the SHARED_SECRET is the shared secret computed as | For X25519, the SHARED_SECRET is the shared secret computed as | |||
| specified in Section 6.1 of [RFC7748]. Both the peer and the server | specified in Section 6.1 of [RFC7748]. Both the Peer and the Server | |||
| MAY check for the zero-value shared secret as specified in | MAY check for the zero-value shared secret as specified in | |||
| Section 6.1 of [RFC7748]. | Section 6.1 of [RFC7748]. | |||
| | Note: If performed inappropriately, the way that the shared | | Note: If performed inappropriately, the way that the shared | |||
| | secret is tested for zero can provide an ability for attackers | | secret is tested for zero can provide an ability for attackers | |||
| | to listen to CPU power usage side channels. Refer to [RFC7748] | | to listen to CPU power usage side channels. Refer to [RFC7748] | |||
| | for a description of how to perform this check in a way that it | | for a description of how to perform this check in a way that it | |||
| | does not become a problem. | | does not become a problem. | |||
| If validation of the other party's ephemeral public key or the shared | If validation of the other party's ephemeral public key or the shared | |||
| secret fails, a party MUST behave as if the current EAP-AKA' | secret fails, a party MUST behave as if the current EAP-AKA' process | |||
| authentication process starts again from the beginning. | starts again from the beginning. | |||
| The rest of the computation proceeds as defined in Section 3.3 of | The rest of the computation proceeds as defined in Section 3.3 of | |||
| [RFC9048]. | [RFC9048]. | |||
| For readability, an explanation of the notation used above is copied | ||||
| here: [n..m] denotes the substring from bit n to m. PRF' is a new | ||||
| pseudorandom function specified in [RFC9048]. K_encr is the | ||||
| encryption key, 128 bits, K_aut is the authentication key, 256 bits, | ||||
| K_re is the re-authentication key, 256 bits, MSK is the Master | ||||
| Session Key, 512 bits, and EMSK is the Extended Master Session Key, | ||||
| 512 bits. MSK and EMSK are outputs from a successful EAP method run | ||||
| [RFC3748]. | ||||
| CK and IK are produced by the AKA algorithm. IK' and CK' are derived | ||||
| as specified in [RFC9048] from IK and CK. | ||||
| The value "EAP-AKA'" is an ASCII string that is 8 characters long. | ||||
| It is used as is, without any trailing NUL characters. Similarly, | ||||
| "EAP-AKA' FS" is an ASCII string that is 11 characters long, also | ||||
| used as is. | ||||
| Identity is the peer identity as specified in Section 7 of [RFC4187]. | ||||
| A privacy-friendly identifier [RFC9048] SHALL be used. | ||||
| 6.4. ECDHE Groups | 6.4. ECDHE Groups | |||
| The selection of suitable groups for the elliptic curve computation | The selection of suitable groups for the elliptic curve computation | |||
| is necessary. The choice of a group is made at the same time as the | is necessary. The choice of a group is made at the same time as the | |||
| decision to use a particular KDF in the AT_KDF_FS attribute. | decision to use a particular KDF in the AT_KDF_FS attribute. | |||
| For "EAP-AKA' with ECDHE and X25519", the group is the Curve25519 | For "EAP-AKA' with ECDHE and X25519", the group is the Curve25519 | |||
| group specified in [RFC7748]. The support for this group is | group specified in [RFC7748]. The support for this group is | |||
| REQUIRED. | REQUIRED. | |||
| skipping to change at line 734 ¶ | skipping to change at line 741 ¶ | |||
| this extension is used in EAP-AKA'. It specifies when a message may | this extension is used in EAP-AKA'. It specifies when a message may | |||
| be transmitted or accepted, which attributes are allowed in a | be transmitted or accepted, which attributes are allowed in a | |||
| message, which attributes are required in a message, and other | message, which attributes are required in a message, and other | |||
| message-specific details, where those details are different for this | message-specific details, where those details are different for this | |||
| extension than the base EAP-AKA' or EAP-AKA protocol. Unless | extension than the base EAP-AKA' or EAP-AKA protocol. Unless | |||
| otherwise specified here, the rules from [RFC9048] or [RFC4187] | otherwise specified here, the rules from [RFC9048] or [RFC4187] | |||
| apply. | apply. | |||
| 6.5.1. EAP-Request/AKA'-Identity | 6.5.1. EAP-Request/AKA'-Identity | |||
| No changes, except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST | There are no changes for the EAP-Request/AKA'-Identity, except that | |||
| NOT be added to this message. The appearance of these attributes in | the AT_KDF_FS or AT_PUB_ECDHE attributes MUST NOT be added to this | |||
| a received message MUST be ignored. | message. The appearance of these attributes in a received message | |||
| MUST be ignored. | ||||
| 6.5.2. EAP-Response/AKA'-Identity | 6.5.2. EAP-Response/AKA'-Identity | |||
| No changes, except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST | There are no changes for the EAP-Response/AKA'-Identity, except that | |||
| NOT be added to this message. The appearance of these attributes in | the AT_KDF_FS or AT_PUB_ECDHE attributes MUST NOT be added to this | |||
| a received message MUST be ignored. The peer identifier SHALL comply | message. The appearance of these attributes in a received message | |||
| with the privacy-friendly requirements of [RFC9190]. An example of a | MUST be ignored. The Peer identifier SHALL comply with the privacy- | |||
| compliant way of constructing a privacy-friendly peer identifier is | friendly requirements of [RFC9190]. An example of a compliant way of | |||
| using a non-NULL SUCI [TS.33.501]. | constructing a privacy-friendly Peer identifier is using a non-null | |||
| SUCI [TS.33.501]. | ||||
| 6.5.3. EAP-Request/AKA'-Challenge | 6.5.3. EAP-Request/AKA'-Challenge | |||
| The server sends the EAP-Request/AKA'-Challenge on full | The Server sends the EAP-Request/AKA'-Challenge on full | |||
| authentication as specified by [RFC4187] and [RFC9048]. The | authentication as specified by [RFC4187] and [RFC9048]. The | |||
| attributes AT_RAND, AT_AUTN, and AT_MAC MUST be included and checked | attributes AT_RAND, AT_AUTN, and AT_MAC MUST be included and checked | |||
| on reception as specified in [RFC4187]. They are also necessary for | on reception as specified in [RFC4187]. They are also necessary for | |||
| backwards compatibility. | backwards compatibility. | |||
| In the EAP-Request/AKA'-Challenge, there is no message-specific data | In the EAP-Request/AKA'-Challenge, there is no message-specific data | |||
| covered by the MAC for the AT_MAC attribute. The AT_KDF_FS and | covered by the MAC for the AT_MAC attribute. The AT_KDF_FS and | |||
| AT_PUB_ECDHE attributes MUST be included. The AT_PUB_ECDHE attribute | AT_PUB_ECDHE attributes MUST be included. The AT_PUB_ECDHE attribute | |||
| carries the server's public Diffie-Hellman key. If either AT_KDF_FS | carries the Server's public Diffie-Hellman key. If either AT_KDF_FS | |||
| or AT_PUB_ECDHE is missing on reception, the peer MUST treat it as if | or AT_PUB_ECDHE is missing on reception, the Peer MUST treat it as if | |||
| neither one was sent and assume that the extension defined in this | neither one was sent and assume that the extension defined in this | |||
| document is not in use. | document is not in use. | |||
| The AT_RESULT_IND, AT_CHECKCODE, AT_IV, AT_ENCR_DATA, AT_PADDING, | The AT_RESULT_IND, AT_CHECKCODE, AT_IV, AT_ENCR_DATA, AT_PADDING, | |||
| AT_NEXT_PSEUDONYM, AT_NEXT_REAUTH_ID, and other attributes may be | AT_NEXT_PSEUDONYM, AT_NEXT_REAUTH_ID, and other attributes may be | |||
| included as specified in Section 9.3 of [RFC4187]. | included as specified in Section 9.3 of [RFC4187]. | |||
| When processing this message, the peer MUST process AT_RAND, AT_AUTN, | When processing this message, the Peer MUST process AT_RAND, AT_AUTN, | |||
| AT_KDF_FS, and AT_PUB_ECDHE before processing other attributes. The | AT_KDF_FS, and AT_PUB_ECDHE before processing other attributes. The | |||
| peer derives keys and verifies AT_MAC only if these attributes are | Peer derives keys and verifies AT_MAC only if these attributes are | |||
| verified to be valid. If the peer is unable or unwilling to perform | verified to be valid. If the Peer is unable or unwilling to perform | |||
| the extension specified in this document, it proceeds as defined in | the extension specified in this document, it proceeds as defined in | |||
| [RFC9048]. Finally, if there is an error, see Section 6.3.1 of | [RFC9048]. Finally, if there is an error, see Section 6.3.1 of | |||
| [RFC4187]. | [RFC4187]. | |||
| 6.5.4. EAP-Response/AKA'-Challenge | 6.5.4. EAP-Response/AKA'-Challenge | |||
| The peer sends an EAP-Response/AKA'-Challenge in response to a valid | The Peer sends an EAP-Response/AKA'-Challenge in response to a valid | |||
| EAP-Request/AKA'-Challenge message, as specified by [RFC4187] and | EAP-Request/AKA'-Challenge message, as specified by [RFC4187] and | |||
| [RFC9048]. If the peer supports and is willing to perform the | [RFC9048]. If the Peer supports and is willing to perform the | |||
| extension specified in this protocol, and the server had made a valid | extension specified in this protocol, and the Server had made a valid | |||
| request involving the attributes specified in Section 6.5.3, the peer | request involving the attributes specified in Section 6.5.3, the Peer | |||
| responds per the rules specified below. Otherwise, the peer responds | responds per the rules specified below. Otherwise, the Peer responds | |||
| as specified in [RFC4187] and [RFC9048] and ignores the attributes | as specified in [RFC4187] and [RFC9048] and ignores the attributes | |||
| related to this extension. If the peer has not received attributes | related to this extension. If the Peer has not received attributes | |||
| related to this extension from the Server, and has a policy that | related to this extension from the Server, and has a policy that | |||
| requires it to always use this extension, it behaves as if AUTN were | requires it to always use this extension, it behaves as if the AUTN | |||
| incorrect and fails the authentication. | were incorrect and fails the authentication. | |||
| The AT_MAC attribute MUST be included and checked as specified in | The AT_MAC attribute MUST be included and checked as specified in | |||
| [RFC9048]. In the EAP-Response/AKA'-Challenge, there is no message- | [RFC9048]. In the EAP-Response/AKA'-Challenge, there is no message- | |||
| specific data covered by the MAC. The AT_PUB_ECDHE attribute MUST be | specific data covered by the MAC. The AT_PUB_ECDHE attribute MUST be | |||
| included and carries the peer's public Diffie-Hellman key. | included and carries the Peer's public Diffie-Hellman key. | |||
| The AT_RES attribute MUST be included and checked as specified in | The AT_RES attribute MUST be included and checked as specified in | |||
| [RFC4187]. When processing this message, the Server MUST process | [RFC4187]. When processing this message, the Server MUST process | |||
| AT_RES before processing other attributes. The Server derives keys | AT_RES before processing other attributes. The Server derives keys | |||
| and verifies AT_MAC only when this attribute is verified to be valid. | and verifies AT_MAC only when this attribute is verified to be valid. | |||
| If the Server has proposed the use of the extension specified in this | If the Server has proposed the use of the extension specified in this | |||
| protocol, but the peer ignores and continues the basic EAP-AKA' | protocol, but the Peer ignores and continues the basic EAP-AKA' | |||
| authentication, the Server makes a policy decision of whether this is | authentication, the Server makes a policy decision of whether this is | |||
| allowed. If this is allowed, it continues the EAP-AKA' | allowed. If this is allowed, it continues the EAP-AKA' | |||
| authentication to completion. If it is not allowed, the Server MUST | authentication to completion. If it is not allowed, the Server MUST | |||
| behave as if authentication failed. | behave as if authentication failed. | |||
| The AT_CHECKCODE, AT_RESULT_IND, AT_IV, AT_ENCR_DATA, and other | The AT_CHECKCODE, AT_RESULT_IND, AT_IV, AT_ENCR_DATA, and other | |||
| attributes may be included as specified in Section 9.4 of [RFC4187]. | attributes may be included as specified in Section 9.4 of [RFC4187]. | |||
| 6.5.5. EAP-Request/AKA'-Reauthentication | 6.5.5. EAP-Request/AKA'-Reauthentication | |||
| No changes, but note that the re-authentication process uses the keys | There are no changes for the EAP-Request/AKA'-Reauthentication, but | |||
| generated in the original EAP-AKA' authentication, which employs key | note that the re-authentication process uses the keys generated in | |||
| material from the Diffie-Hellman procedure if the extension specified | the original EAP-AKA' authentication, which employs key material from | |||
| in this document is in use. | the Diffie-Hellman procedure if the extension specified in this | |||
| document is in use. | ||||
| 6.5.6. EAP-Response/AKA'-Reauthentication | 6.5.6. EAP-Response/AKA'-Reauthentication | |||
| No changes, but as discussed in Section 6.5.5, re-authentication is | There are no changes for the EAP-Response/AKA'-Reauthentication, but | |||
| based on the key material generated by EAP-AKA' and the extension | as discussed in Section 6.5.5, re-authentication is based on the key | |||
| defined in this document. | material generated by EAP-AKA' and the extension defined in this | |||
| document. | ||||
| 6.5.7. EAP-Response/AKA'-Synchronization-Failure | 6.5.7. EAP-Response/AKA'-Synchronization-Failure | |||
| No changes, except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST | There are no changes for the EAP-Response/AKA'-Synchronization- | |||
| Failure, except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST | ||||
| NOT be added to this message. The appearance of these attributes in | NOT be added to this message. The appearance of these attributes in | |||
| a received message MUST be ignored. | a received message MUST be ignored. | |||
| 6.5.8. EAP-Response/AKA'-Authentication-Reject | 6.5.8. EAP-Response/AKA'-Authentication-Reject | |||
| No changes, except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST | There are no changes for the EAP-Response/AKA'-Authentication-Reject, | |||
| NOT be added to this message. The appearance of these attributes in | except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST NOT be | |||
| a received message MUST be ignored. | added to this message. The appearance of these attributes in a | |||
| received message MUST be ignored. | ||||
| 6.5.9. EAP-Response/AKA'-Client-Error | 6.5.9. EAP-Response/AKA'-Client-Error | |||
| No changes, except that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST | There are no changes for the EAP-Response/AKA'-Client-Error, except | |||
| NOT be added to this message. The appearance of these attributes in | that the AT_KDF_FS or AT_PUB_ECDHE attributes MUST NOT be added to | |||
| a received message MUST be ignored. | this message. The appearance of these attributes in a received | |||
| message MUST be ignored. | ||||
| 6.5.10. EAP-Request/AKA'-Notification | 6.5.10. EAP-Request/AKA'-Notification | |||
| No changes. | There are no changes for the EAP-Request/AKA'-Notification. | |||
| 6.5.11. EAP-Response/AKA'-Notification | 6.5.11. EAP-Response/AKA'-Notification | |||
| No changes. | There are no changes for the EAP-Response/AKA'-Notification. | |||
| 7. Security Considerations | 7. Security Considerations | |||
| This section deals only with the changes to security considerations | This section deals only with changes to security considerations for | |||
| as they differ from EAP-AKA', or as new information has been gathered | EAP-AKA' or new information that has been gathered since the | |||
| since the publication of [RFC9048]. | publication of [RFC9048]. | |||
| As discussed in Section 1, FS is an important countermeasure against | As discussed in Section 1, FS is an important countermeasure against | |||
| adversaries who gain access to long-term keys. The long-term keys | adversaries who gain access to long-term keys. The long-term keys | |||
| can be best protected with good processes, e.g., restricting access | can be best protected with good processes, e.g., restricting access | |||
| to the key material within a factory or among personnel, etc. Even | to the key material within a factory or among personnel, etc. Even | |||
| so, not all attacks can be entirely ruled out. For instance, well- | so, not all attacks can be entirely ruled out. For instance, well- | |||
| resourced adversaries may be able to coerce insiders to collaborate, | resourced adversaries may be able to coerce insiders to collaborate, | |||
| despite any technical protection measures. The zero trust principles | despite any technical protection measures. The zero trust principles | |||
| suggest that we assume that breaches are inevitable or have | suggest that we assume that breaches are inevitable or have | |||
| potentially already occurred and that we need to minimize the impact | potentially already occurred and that we need to minimize the impact | |||
| skipping to change at line 879 ¶ | skipping to change at line 893 ¶ | |||
| establishment, for the control plane and the user plane, and for both | establishment, for the control plane and the user plane, and for both | |||
| directions: | directions: | |||
| 1. An attacker can decrypt 5G communication that they previously | 1. An attacker can decrypt 5G communication that they previously | |||
| recorded. | recorded. | |||
| 2. A passive attacker can eavesdrop (decrypt) all future 5G | 2. A passive attacker can eavesdrop (decrypt) all future 5G | |||
| communication. | communication. | |||
| 3. An active attacker can impersonate the User Equipment (UE) or the | 3. An active attacker can impersonate the User Equipment (UE) or the | |||
| Network and inject messages in an ongoing 5G connection between | network and inject messages in an ongoing 5G connection between | |||
| the real UE and the real network. | the real UE and the real network. | |||
| At the time of writing, best practice security is to mandate FS (as | At the time of writing, best practice security is to mandate FS (as | |||
| is done in Wi-Fi Protected Access 3 (WPA3), EAP-TLS 1.3, EAP-TTLS | is done in Wi-Fi Protected Access 3 (WPA3), EAP-TLS 1.3, EAP-TTLS | |||
| 1.3, Internet Key Exchange Protocol Version 2 (IKEv2), Secure Shell | 1.3, Internet Key Exchange Protocol Version 2 (IKEv2), Secure Shell | |||
| (SSH), QUIC, WireGuard, Signal, etc.). In deployments, it is | (SSH), QUIC, WireGuard, Signal, etc.). In deployments, it is | |||
| recommended that EAP-AKA methods without FS be phased out in the long | recommended that EAP-AKA methods without FS be phased out in the long | |||
| term. | term. | |||
| The FS extension provides assistance against passive attacks from | The FS extension provides assistance against passive attacks from | |||
| attackers that have compromised the key material on USIM cards. | attackers that have compromised the key material on USIM cards. | |||
| Passive attacks are attractive for attackers performing large-scale | Passive attacks are attractive for attackers performing large-scale | |||
| pervasive monitoring as they require far fewer resources and are much | pervasive monitoring as they require far fewer resources and are much | |||
| harder to detect. The extension also provides protection against | harder to detect. The extension also provides protection against | |||
| active attacks as the attacker is forced to be on-path during the AKA | active attacks as the attacker is forced to be on-path during the AKA | |||
| run and subsequent communication between the parties. Without FS, an | run and subsequent communication between the parties. Without FS, an | |||
| active attacker that has compromised the long-term key can inject | active attacker that has compromised the long-term key can inject | |||
| messages in a connection between the real Peer and the real server | messages in a connection between the real Peer and the real Server | |||
| without being on-path. This extension is most useful when | without being on-path. This extension is most useful when | |||
| implemented in a context where the MSK/EMSK are used in protocols not | implemented in a context where the MSK or EMSK are used in protocols | |||
| providing FS. For instance, if used with IKEv2 [RFC7296], the | not providing FS. For instance, if used with IKEv2 [RFC7296], the | |||
| session keys produced by IKEv2 have this property, so better | session keys produced by IKEv2 will in any case have this property, | |||
| characteristics of the MSK and EMSK is not that useful. However, | so the improvements from the use of EAP-AKA' FS are not that useful. | |||
| typical link-layer usage of EAP does not involve running another, | However, typical link-layer usage of EAP does not involve running | |||
| forward secure, key exchange. Therefore, using EAP to authenticate | another key exchange with forward secrecy. Therefore, using EAP to | |||
| access to a network is one situation where the extension defined in | authenticate access to a network is one situation where the extension | |||
| this document can be helpful. | defined in this document can be helpful. | |||
| The FS extension generates keying material using the ECDHE exchange | The FS extension generates key material using the ECDHE exchange in | |||
| in order to gain the FS property. This means that once an EAP-AKA' | order to gain the FS property. This means that once an EAP-AKA' | |||
| authentication run ends, the session that it was used to protect is | authentication run ends, the session that it was used to protect is | |||
| closed, and the corresponding keys are destroyed. Even someone who | closed, and the corresponding keys are destroyed. Even someone who | |||
| has recorded all of the data from the authentication run and session | has recorded all of the data from the authentication run and session | |||
| and gets access to all of the AKA long-term keys cannot reconstruct | and gets access to all of the AKA long-term keys cannot reconstruct | |||
| the keys used to protect the session or any previous session, without | the keys used to protect the session or any previous session, without | |||
| doing a brute-force search of the session key space. | doing a brute-force search of the session key space. | |||
| Even if a compromise of the long-term keys has occurred, FS is still | Even if a compromise of the long-term keys has occurred, FS is still | |||
| provided for all future sessions, as long as the attacker does not | provided for all future sessions, as long as the attacker does not | |||
| become an active attacker. | become an active attacker. | |||
| The extension does not provide protection against active attackers | The extension does not provide protection against active attackers | |||
| with access to the long-term key that mount an on-path attack on | that mount an on-path attack on future EAP-AKA' runs and have access | |||
| future EAP-AKA' runs will be able to eavesdrop on the traffic | to the long-term key. They will be able to eavesdrop on the traffic | |||
| protected by the resulting session key(s). Still, past sessions | protected by the resulting session key(s). Still, past sessions | |||
| where FS was in use remain protected. | where FS was in use remain protected. | |||
| Using EAP-AKA' FS once provides FS. FS limits the effect of key | Using EAP-AKA' FS once provides FS. FS limits the effect of key | |||
| leakage in one direction (compromise of a key at time T2 does not | leakage in one direction (compromise of a key at time T2 does not | |||
| compromise some key at time T1 where T1 < T2). Protection in the | compromise some key at time T1 where T1 < T2). Protection in the | |||
| other direction (compromise at time T1 does not compromise keys at | other direction (compromise at time T1 does not compromise keys at | |||
| time T2) can be achieved by rerunning ECDHE frequently. If a long- | time T2) can be achieved by rerunning ECDHE frequently. If a long- | |||
| term authentication key has been compromised, rerunning EAP-AKA' FS | term authentication key has been compromised, rerunning EAP-AKA' FS | |||
| gives protection against passive attackers. Using the terms in | gives protection against passive attackers. Using the terms in | |||
| skipping to change at line 973 ¶ | skipping to change at line 987 ¶ | |||
| EAP-AKA' has a negotiation mechanism for selecting the KDFs, and | EAP-AKA' has a negotiation mechanism for selecting the KDFs, and | |||
| this mechanism has been extended by the extension specified in | this mechanism has been extended by the extension specified in | |||
| this document. The resulting mechanism continues to be secure | this document. The resulting mechanism continues to be secure | |||
| against bidding-down attacks. | against bidding-down attacks. | |||
| There are two specific needs in the negotiation mechanism: | There are two specific needs in the negotiation mechanism: | |||
| Negotiating KDFs within the extension: | Negotiating KDFs within the extension: | |||
| The negotiation mechanism allows changing the offered KDF, but | The negotiation mechanism allows changing the offered KDF, but | |||
| the change is visible in the final EAP-Request/AKA'-Challenge | the change is visible in the final EAP-Request/AKA'-Challenge | |||
| message that the server sends to the peer. This message is | message that the Server sends to the Peer. This message is | |||
| authenticated via the AT_MAC attribute, and carries both the | authenticated via the AT_MAC attribute, and carries both the | |||
| chosen alternative and the initially offered list. The peer | chosen alternative and the initially offered list. The Peer | |||
| refuses to accept a change it did not initiate. As a result, | refuses to accept a change it did not initiate. As a result, | |||
| both parties are aware that a change is being made and what the | both parties are aware that a change is being made and what the | |||
| original offer was. | original offer was. | |||
| Negotiating the use of this extension: | Negotiating the use of this extension: | |||
| This extension is offered by the server through presenting the | This extension is offered by the Server through presenting the | |||
| AT_KDF_FS and AT_PUB_ECDHE attributes in the EAP-Request/AKA'- | AT_KDF_FS and AT_PUB_ECDHE attributes in the EAP-Request/AKA'- | |||
| Challenge message. These attributes are protected by AT_MAC, | Challenge message. These attributes are protected by AT_MAC, | |||
| so attempts to change or omit them by an adversary will be | so attempts to change or omit them by an adversary will be | |||
| detected. | detected. | |||
| Except of course, if the adversary holds the long-term key and | These attempts will be detected, except of course, if the | |||
| is willing to engage in an active attack. For instance, such | adversary holds the long-term key and is willing to engage in | |||
| an attack can forge the negotiation process so that no FS will | an active attack. For instance, such an attack can forge the | |||
| be provided. However, as noted above, an attacker with these | negotiation process so that no FS will be provided. However, | |||
| capabilities will, in any case, be able to impersonate any | as noted above, an attacker with these capabilities will, in | |||
| party in the protocol and perform on-path attacks. That is not | any case, be able to impersonate any party in the protocol and | |||
| a situation that can be improved by a technical solution. | perform on-path attacks. That is not a situation that can be | |||
| However, as discussed in the Introduction, even an attacker | improved by a technical solution. However, as discussed in the | |||
| with access to the long-term keys is required to be on-path on | Introduction, even an attacker with access to the long-term | |||
| each AKA run and subsequent communication, which makes mass | keys is required to be on-path on each AKA run and subsequent | |||
| surveillance more laborious. | communication, which makes mass surveillance more laborious. | |||
| The security properties of the extension also depend on a | The security properties of the extension also depend on a | |||
| policy choice. As discussed in Section 6.5.4, both the peer | policy choice. As discussed in Section 6.5.4, both the Peer | |||
| and the server make a policy decision of what to do when it was | and the Server make a policy decision of what to do when it was | |||
| willing to perform the extension specified in this protocol, | willing to perform the extension specified in this protocol, | |||
| but the other side does not wish to use the extension. | but the other side does not wish to use the extension. | |||
| Allowing this has the benefit of allowing backwards | Allowing this has the benefit of allowing backwards | |||
| compatibility to equipment that did not yet support the | compatibility to equipment that did not yet support the | |||
| extension. When the extension is not supported or negotiated | extension. When the extension is not supported or negotiated | |||
| by the parties, no FS can obviously be provided. | by the parties, no FS can obviously be provided. | |||
| If turning off the extension specified in this protocol is not | If turning off the extension specified in this protocol is not | |||
| allowed by policy, the use of legacy equipment that does not | allowed by policy, the use of legacy equipment that does not | |||
| support this protocol is no longer possible. This may be | support this protocol is no longer possible. This may be | |||
| skipping to change at line 1032 ¶ | skipping to change at line 1046 ¶ | |||
| properties related to re-authentication. No new Diffie-Hellman | properties related to re-authentication. No new Diffie-Hellman | |||
| run is performed during the re-authentication allowed by EAP-AKA'. | run is performed during the re-authentication allowed by EAP-AKA'. | |||
| However, if this extension was in use when the original EAP-AKA' | However, if this extension was in use when the original EAP-AKA' | |||
| authentication was performed, the keys used for re-authentication | authentication was performed, the keys used for re-authentication | |||
| (K_re) are based on the Diffie-Hellman keys; hence, they continue | (K_re) are based on the Diffie-Hellman keys; hence, they continue | |||
| to be equally safe against exposure of the long-term key as the | to be equally safe against exposure of the long-term key as the | |||
| original authentication. | original authentication. | |||
| 7.3. Denial of Service | 7.3. Denial of Service | |||
| In addition, it is worthwhile to discuss Denial-of-Service (DoS) | It is worthwhile to discuss Denial-of-Service (DoS) attacks and their | |||
| attacks and their impact on this protocol. The calculations involved | impact on this protocol. The calculations involved in public key | |||
| in public key cryptography require computing power, which could be | cryptography require computing power, which could be used in an | |||
| used in an attack to overpower either the peer or the server. While | attack to overpower either the Peer or the Server. While some forms | |||
| some forms of DoS attacks are always possible, the following factors | of DoS attacks are always possible, the following factors help | |||
| help mitigate the concerns relating to public key cryptography and | mitigate the concerns relating to public key cryptography and EAP- | |||
| EAP-AKA' FS. | AKA' FS. | |||
| * In a 5G context, other parts of the connection setup involve | * In a 5G context, other parts of the connection setup involve | |||
| public key cryptography, so while performing additional operations | public key cryptography, so while performing additional operations | |||
| in EAP-AKA' is an additional concern, it does not change the | in EAP-AKA' is an additional concern, it does not change the | |||
| overall situation. As a result, the relevant system components | overall situation. As a result, the relevant system components | |||
| need to be dimensioned appropriately, and detection and management | need to be dimensioned appropriately, and detection and management | |||
| mechanisms to reduce the effect of attacks need to be in place. | mechanisms to reduce the effect of attacks need to be in place. | |||
| * This specification is constructed so that a separation between the | * This specification is constructed so that it is possible to have a | |||
| USIM and Peer on the client side and the Server and AD on the | separation between the USIM and Peer on the client side and | |||
| network side is possible. This ensures that the most sensitive | between the Server and AD on the network side. This ensures that | |||
| (or legacy) system components cannot be the target of the attack. | the most sensitive (or legacy) system components cannot be the | |||
| For instance, EAP-AKA' and public key cryptography takes place in | target of the attack. For instance, EAP-AKA' and public key | |||
| the phone and not the low-power USIM card. | cryptography both take place in the phone and not the low-power | |||
| USIM card. | ||||
| * EAP-AKA' has been designed so that the first actual message in the | * EAP-AKA' has been designed so that the first actual message in the | |||
| authentication process comes from the Server, and that this | authentication process comes from the Server, and that this | |||
| message will not be sent unless the user has been identified as an | message will not be sent unless the user has been identified as an | |||
| active subscriber of the operator in question. While the initial | active subscriber of the operator in question. While the initial | |||
| identity can be spoofed before authentication has succeeded, this | identity can be spoofed before authentication has succeeded, this | |||
| reduces the efficiency of an attack. | reduces the efficiency of an attack. | |||
| * Finally, this memo specifies an order in which computations and | * Finally, this memo specifies an order in which computations and | |||
| checks must occur. For instance, when processing the EAP-Request/ | checks must occur. For instance, when processing the EAP-Request/ | |||
| AKA'-Challenge message, the AKA authentication must be checked and | AKA'-Challenge message, the AKA authentication must be checked and | |||
| succeed before the peer proceeds to calculating or processing the | succeed before the Peer proceeds to calculating or processing the | |||
| FS-related parameters (see Section 6.5.4). The same is true of an | FS-related parameters (see Section 6.5.4). The same is true of an | |||
| EAP-Response/AKA'-Challenge (see Section 6.5.4). This ensures | EAP-Response/AKA'-Challenge (see Section 6.5.4). This ensures | |||
| that the parties need to show possession of the long-term key in | that the parties need to show possession of the long-term key in | |||
| some way, and only then will the FS calculations become active. | some way, and only then will the FS calculations become active. | |||
| This limits the DoS to specific, identified subscribers. While | This limits the DoS to specific, identified subscribers. While | |||
| botnets and other forms of malicious parties could take advantage | botnets and other forms of malicious parties could take advantage | |||
| of actual subscribers and their key material, at least such | of actual subscribers and their key material, at least such | |||
| attacks are: | attacks are: | |||
| a. limited in terms of subscribers they control, and | a. limited in terms of subscribers they control, and | |||
| b. identifiable for the purposes of blocking the affected | b. identifiable for the purposes of blocking the affected | |||
| subscribers. | subscribers. | |||
| 7.4. Identity Privacy | 7.4. Identity Privacy | |||
| As specified in Section 6.5, the peer identity sent in the Identity | As specified in Section 6.5, the Peer identity sent in the Identity | |||
| Response message needs to follow the privacy-friendly requirements in | Response message needs to follow the privacy-friendly requirements in | |||
| [RFC9190]. | [RFC9190]. | |||
| 7.5. Unprotected Data and Privacy | 7.5. Unprotected Data and Privacy | |||
| Unprotected data and metadata can reveal sensitive information and | Unprotected data and metadata can reveal sensitive information and | |||
| need to be selected with care. In particular, this applies to | need to be selected with care. In particular, this applies to | |||
| AT_KDF, AT_KDF_FS, AT_PUB_ECDHE, and AT_KDF_INPUT. AT_KDF, | AT_KDF, AT_KDF_FS, AT_PUB_ECDHE, and AT_KDF_INPUT. AT_KDF, | |||
| AT_KDF_FS, and AT_PUB_ECDHE reveal the used cryptographic algorithms; | AT_KDF_FS, and AT_PUB_ECDHE reveal the used cryptographic algorithms; | |||
| if these depend on the peer identity, they leak information about the | if these depend on the Peer identity, they leak information about the | |||
| peer. AT_KDF_INPUT reveals the network name, although that is done | Peer. AT_KDF_INPUT reveals the network name, although that is done | |||
| on purpose to bind the authentication to a particular context. | on purpose to bind the authentication to a particular context. | |||
| An attacker observing network traffic may use the above types of | An attacker observing network traffic may use the above types of | |||
| information for traffic flow analysis or to track an endpoint. | information for traffic flow analysis or to track an endpoint. | |||
| 7.6. Forward Secrecy within AT_ENCR | 7.6. Forward Secrecy within AT_ENCR | |||
| The keys K_encr and K_aut are calculated and used before the shared | The keys K_encr and K_aut are calculated and used before the shared | |||
| secret from the ephemeral key exchange is available. | secret from the ephemeral key exchange is available. | |||
| K_encr and K_aut are used to encrypt and MAC data in the EAP-Req/ | K_encr and K_aut are used to encrypt and calculate a MAC in the EAP- | |||
| AKA'-Challenge message, especially the DH g^x ephemeral pub key. At | Req/AKA'-Challenge message, especially the DH g^x ephemeral pub key. | |||
| that point, the server does not yet have the corresponding g^y from | At that point, the Server does not yet have the corresponding g^y | |||
| the peer and cannot compute the shared secret. K_aut is then used as | from the Peer and cannot compute the shared secret. K_aut is then | |||
| the authentication key for the shared secret. | used as the authentication key for the shared secret. | |||
| However, for K_encr, none of the encrypted data sent in the EAP-Req/ | However, for K_encr, none of the encrypted data sent in the EAP-Req/ | |||
| AKA'-Challenge message in the AT_ENCR attribute will be a forward | AKA'-Challenge message in the AT_ENCR attribute will be a forward | |||
| secret. That data may include re-authentication pseudonyms, so an | secret. That data may include re-authentication pseudonyms, so an | |||
| adversary compromising the long-term key would be able to link re- | adversary compromising the long-term key would be able to link re- | |||
| authentication protocol runs when pseudonyms are used, within a | authentication protocol runs when pseudonyms are used, within a | |||
| sequence of runs followed after a full EAP-AKA' authentication. No | sequence of runs followed after a full EAP-AKA' authentication. No | |||
| such linking would be possible across different full authentication | such linking would be possible across different full authentication | |||
| runs. If the pseudonym linkage risk is not acceptable, one way to | runs. If the pseudonym linkage risk is not acceptable, one way to | |||
| avoid the linkage is to always require full EAP-AKA' authentication. | avoid the linkage is to always require full EAP-AKA' authentication. | |||
| skipping to change at line 1137 ¶ | skipping to change at line 1152 ¶ | |||
| limitations compared to ECC, and the data sizes could be problematic | limitations compared to ECC, and the data sizes could be problematic | |||
| for some constrained systems. If a Cryptographically Relevant | for some constrained systems. If a Cryptographically Relevant | |||
| Quantum Computer (CRQC) is built, it could recover the SHARED_SECRET | Quantum Computer (CRQC) is built, it could recover the SHARED_SECRET | |||
| from the ECDHE public keys. | from the ECDHE public keys. | |||
| However, this would not affect the ability of EAP-AKA', with or | However, this would not affect the ability of EAP-AKA', with or | |||
| without this extension, to authenticate properly. As symmetric key | without this extension, to authenticate properly. As symmetric key | |||
| cryptography is safe even if CRQCs are built, an adversary still will | cryptography is safe even if CRQCs are built, an adversary still will | |||
| not be able to disrupt authentication as it requires computing a | not be able to disrupt authentication as it requires computing a | |||
| correct AT_MAC value. This computation requires the K_aut key, which | correct AT_MAC value. This computation requires the K_aut key, which | |||
| is based on MK, CK', and IK', but not SHARED_SECRET. | is based on the MK, CK', and IK', but not SHARED_SECRET. | |||
| Other output keys do include SHARED_SECRET via MK_ECDHE, but they | Other output keys do include SHARED_SECRET via MK_ECDHE, but they | |||
| still include CK' and IK', which are entirely based on symmetric | still include the CK' and IK', which are entirely based on symmetric | |||
| cryptography. As a result, an adversary with a quantum computer | cryptography. As a result, an adversary with a quantum computer | |||
| still cannot compute the other output keys either. | still cannot compute the other output keys either. | |||
| However, if the adversary has also obtained knowledge of the long- | However, if the adversary has also obtained knowledge of the long- | |||
| term key, they could then compute CK', IK', SHARED_SECRET, and any | term key, they could then compute the CK', IK', SHARED_SECRET, and | |||
| derived output keys. This means that the introduction of a powerful | any derived output keys. This means that the introduction of a | |||
| enough quantum computer would disable this protocol extension's | powerful enough quantum computer would disable this protocol | |||
| ability to provide the forward security capability. This would make | extension's ability to provide the forward secrecy capability. This | |||
| it necessary to update the current ECC algorithms in this document to | would make it necessary to update the current ECC algorithms in this | |||
| PQC algorithms. This document does not add such algorithms, but a | document to PQC algorithms. This document does not add such | |||
| future update can do that. | algorithms, but a future update can do that. | |||
| Symmetric algorithms used in EAP-AKA' FS, such as HMAC-SHA-256 and | Symmetric algorithms used in EAP-AKA' FS, such as HMAC-SHA-256 and | |||
| the algorithms used to generate AT_AUTN and AT_RES, are practically | the algorithms used to generate AT_AUTN and AT_RES, are practically | |||
| secure against even large, robust quantum computers. EAP-AKA' FS is | secure against even large, robust quantum computers. EAP-AKA' FS is | |||
| currently only specified for use with ECDHE key exchange algorithms, | currently only specified for use with ECDHE key exchange algorithms, | |||
| but use of any Key Encapsulation Method (KEM), including PQC KEMs, | but use of any Key Encapsulation Method (KEM), including PQC KEMs, | |||
| can be specified in the future. While the key exchange is specified | can be specified in the future. While the key exchange is specified | |||
| with terms of the Diffie-Hellman protocol, the key exchange adheres | with terms of the Diffie-Hellman protocol, the key exchange adheres | |||
| to a KEM interface. AT_PUB_ECDHE would then contain either the | to a KEM interface. AT_PUB_ECDHE would then contain either the | |||
| ephemeral public key of the server or the SHARED_SECRET encapsulated | ephemeral public key of the Server or the SHARED_SECRET encapsulated | |||
| with the server's public key. Note that the use of a KEM might | with the Server's public key. Note that the use of a KEM might | |||
| require other changes, such as including the ephemeral public key of | require other changes, such as including the ephemeral public key of | |||
| the server in the key derivation to retain the property that both | the Server in the key derivation to retain the property that both | |||
| parties contribute randomness to the session key. | parties contribute randomness to the session key. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| This extension of EAP-AKA' shares its attribute space and subtypes | This extension of EAP-AKA' shares its attribute space and subtypes | |||
| with the "Extensible Authentication Protocol Method for Global System | with the following: | |||
| for Mobile Communications (GSM) Subscriber Identity Modules (EAP- | ||||
| SIM)" [RFC4186], EAP-AKA [RFC4187], and EAP-AKA' [RFC9048]. | * "Extensible Authentication Protocol Method for Global System for | |||
| Mobile Communications (GSM) Subscriber Identity Modules (EAP-SIM)" | ||||
| [RFC4186], | ||||
| * "Extensible Authentication Protocol Method for 3rd Generation | ||||
| Authentication and Key Agreement (EAP-AKA)" [RFC4187], and | ||||
| * "Improved Extensible Authentication Protocol Method for 3GPP | ||||
| Mobile Network Authentication and Key Agreement (EAP-AKA')" | ||||
| [RFC9048]. | ||||
| IANA has assigned two new values in the "Attribute Types (Skippable | IANA has assigned two new values in the "Attribute Types (Skippable | |||
| Attributes 128-255)" registry under the "EAP-AKA and EAP-SIM | Attributes 128-255)" registry under the "EAP-AKA and EAP-SIM | |||
| Parameters" group as follows: | Parameters" group as follows: | |||
| 152: AT_PUB_ECDHE (Section 6.1) | 152: AT_PUB_ECDHE (Section 6.1) | |||
| 153: AT_KDF_FS (Section 6.2) | 153: AT_KDF_FS (Section 6.2) | |||
| IANA has also created the "EAP-AKA' AT_KDF_FS Key Derivation Function | IANA has also created the "EAP-AKA' AT_KDF_FS Key Derivation Function | |||
| skipping to change at line 1294 ¶ | skipping to change at line 1318 ¶ | |||
| Codes and Cryptography, vol. 2, pp. 107-125, | Codes and Cryptography, vol. 2, pp. 107-125, | |||
| DOI 10.1007/BF00124891, June 1992, | DOI 10.1007/BF00124891, June 1992, | |||
| <https://doi.org/10.1007/BF00124891>. | <https://doi.org/10.1007/BF00124891>. | |||
| [Heist2015] | [Heist2015] | |||
| Scahill, J. and J. Begley, "The Great SIM Heist", February | Scahill, J. and J. Begley, "The Great SIM Heist", February | |||
| 2015, | 2015, | |||
| <https://theintercept.com/2015/02/19/great-sim-heist/>. | <https://theintercept.com/2015/02/19/great-sim-heist/>. | |||
| [NIST-ZT] National Institute of Standards and Technology, | [NIST-ZT] National Institute of Standards and Technology, | |||
| "Implementing a Zero Trust Architecture", NIST SP | "Implementing a Zero Trust Architecture", NIST SP 1800-35, | |||
| 1800-35B, December 2022, | July 2024, <https://www.nccoe.nist.gov/sites/default/ | |||
| <https://www.nccoe.nist.gov/sites/default/files/2022-12/ | files/2024-07/zta-nist-sp-1800-35-preliminary-draft- | |||
| zta-nist-sp-1800-35b-preliminary-draft-2.pdf>. | 4.pdf>. | |||
| [NSA-ZT] National Security Agency, "Embracing a Zero Trust Security | [NSA-ZT] National Security Agency, "Embracing a Zero Trust Security | |||
| Model", February 2021, <https://media.defense.gov/2021/ | Model", February 2021, <https://media.defense.gov/2021/ | |||
| Feb/25/2002588479/-1/-1/0/ | Feb/25/2002588479/-1/-1/0/ | |||
| CSI_EMBRACING_ZT_SECURITY_MODEL_UOO115131-21.PDF>. | CSI_EMBRACING_ZT_SECURITY_MODEL_UOO115131-21.PDF>. | |||
| [RFC4186] Haverinen, H., Ed. and J. Salowey, Ed., "Extensible | [RFC4186] Haverinen, H., Ed. and J. Salowey, Ed., "Extensible | |||
| Authentication Protocol Method for Global System for | Authentication Protocol Method for Global System for | |||
| Mobile Communications (GSM) Subscriber Identity Modules | Mobile Communications (GSM) Subscriber Identity Modules | |||
| (EAP-SIM)", RFC 4186, DOI 10.17487/RFC4186, January 2006, | (EAP-SIM)", RFC 4186, DOI 10.17487/RFC4186, January 2006, | |||
| skipping to change at line 1338 ¶ | skipping to change at line 1362 ¶ | |||
| [TrustCom2015] | [TrustCom2015] | |||
| Arkko, J., Norrman, K., Näslund, M., and B. Sahlin, "A | Arkko, J., Norrman, K., Näslund, M., and B. Sahlin, "A | |||
| USIM Compatible 5G AKA Protocol with Perfect Forward | USIM Compatible 5G AKA Protocol with Perfect Forward | |||
| Secrecy", IEEE International Conference on Trust, Security | Secrecy", IEEE International Conference on Trust, Security | |||
| and Privacy in Computing and Communications (TrustCom), | and Privacy in Computing and Communications (TrustCom), | |||
| DOI 10.1109/Trustcom.2015.506, August 2015, | DOI 10.1109/Trustcom.2015.506, August 2015, | |||
| <https://doi.org/10.1109/Trustcom.2015.506>. | <https://doi.org/10.1109/Trustcom.2015.506>. | |||
| [TS.33.501] | [TS.33.501] | |||
| 3GPP, "Security architecture and procedures for 5G | 3GPP, "Security architecture and procedures for 5G | |||
| System", Version 18.1.0, 3GPP TS 33.501, March 2023. | System", Version 19.0.0, 3GPP TS 33.501, September 2024. | |||
| Acknowledgments | Acknowledgments | |||
| The authors would like to note that the technical solution in this | The authors would like to note that the technical solution in this | |||
| document came out of the TrustCom paper [TrustCom2015], whose authors | document came out of the TrustCom paper [TrustCom2015], whose authors | |||
| were J. Arkko, K. Norrman, M. Näslund, and B. Sahlin. This document | were J. Arkko, K. Norrman, M. Näslund, and B. Sahlin. This document | |||
| also uses a lot of material from [RFC4187] by J. Arkko and | also uses a lot of material from [RFC4187] by J. Arkko and | |||
| H. Haverinen, as well as [RFC5448] by J. Arkko, V. Lehtovirta, and | H. Haverinen, as well as [RFC5448] by J. Arkko, V. Lehtovirta, and | |||
| P. Eronen. | P. Eronen. | |||
| End of changes. 87 change blocks. | ||||
| 325 lines changed or deleted | 349 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||