RFC 8465

Using the Mobile Equipment Identity (MEID) URN as an Instance ID

πŸ“… published September 2018, from ietf

RFC 8465: Using the Mobile Equipment Identity (MEID) URN as an Instance ID πŸŽ€

Okay bestie, here's the header info. It's from the Internet Engineering Task Force (IETF) and it's Request for Comments: 8465 πŸ“œ. The editor is R. Atarius, Ed. πŸ–ŠοΈ and the date is September 2018 πŸ—“οΈ. The category is Informational πŸ’… and the ISSN is 2070-1721 πŸ”’. The title block doesn't list any Obsoletes or Updates, so this one doesn't replace or change any other RFCs πŸ™Œ.

Abstract πŸ’œ

So this doc explains how the URN namespace that's reserved for 3GPP2 identities can be used as an Instance ID ✨. It focuses on the Namespace Specific String (NSS) for the Mobile Equipment Identity (MEID) πŸ“±. The whole point is to meet the requirement for how a specific URN has to be built and used in the "+sip.instance" Contact header field parameter for outbound behavior πŸ¦‹.

Status of This Memo 🌸

This document is not an Internet Standards Track spec. It's published just for information 🧠.

It's a product of the IETF, so it reflects the consensus of the IETF community 🫢. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) βœ…. Not every IESG-approved document is a candidate for any level of Internet Standard, so check Section 2 of RFC 7841 for that πŸ‘€.

For the current status, any errata, and how to give feedback, go to https://www.rfc-editor.org/info/rfc8465 πŸ”—.

Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved ©️.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which you can find at https://trustee.ietf.org/license-info as they stood on the publication date πŸ“š. Please read those carefully, because they spell out your rights and restrictions for this document πŸ™. Code Components pulled out of this document must include the Simplified BSD License text described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License ⚠️.

Table of Contents 🧚

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
3.  Background  . . . . . . . . . . . . . . . . . . . . . . . . .   3
4.  3GPP2 Use Cases . . . . . . . . . . . . . . . . . . . . . . .   4
5.  User Agent Client Procedures  . . . . . . . . . . . . . . . .   5
6.  User Agent Server Procedures  . . . . . . . . . . . . . . . .   5
7.  3GPP/3GPP2 SIP Registrar Procedures . . . . . . . . . . . . .   5
8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
9.  Security Considerations . . . . . . . . . . . . . . . . . . .   6
10. References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
  10.1.  Normative References . . . . . . . . . . . . . . . . . .   7
  10.2.  Informative References . . . . . . . . . . . . . . . . .   8
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .   8
Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   8

1. Introduction πŸ¦‹

Okay so this doc says how the URN namespace for Third Generation Partnership Project 2 (3GPP2) identities can be used as an Instance ID πŸ’–. The Namespace Specific String (NSS) for the MEID is defined in RFC 8464 [10], and the Instance ID stuff comes from RFC 5626 [4] and is also used by RFC 5627 [5] πŸŽ€.

RFC 5626 [4] defines the "+sip.instance" Contact header field parameter, which holds a URN as specified in RFC 8141 [6] πŸ’…. The Instance ID uniquely identifies one specific User Agent (UA) instance 🫢. It's used as RFC 5626 [4] describes so that a Session Initiation Protocol (SIP) registrar (the one from RFC 3261 [2]) can tell that contacts from several registrations belong to the same UA πŸ‘€. RFC 5627 [5] also uses the Instance ID to make Globally Routable User Agent URIs (GRUUs), which let you uniquely address a UA when multiple UAs are registered with the same Address of Record (AoR) ✨.

RFC 5626 [4] says a UA SHOULD create a Universally Unique Identifier (UUID) URN, as specified in RFC 4122 [9], for its Instance ID, but other URN schemes are allowed too 🌸.

RFC 5626 [4] states:

If a URN scheme other than UUID is used, the UA MUST only use URNs
for which an RFC (from the IETF stream) defines how the specific
URN needs to be constructed and used in the "+sip.instance"
Contact header field parameter for outbound behavior.

This spec meets that requirement by saying how the 3GPP2 MEID URN gets used in the "+sip.instance" Contact header field parameter for outbound behavior πŸ“. RFC 8464 [10] is where the 3GPP2 MEID URN is actually constructed 🧠.

So, the 3GPP2 MEID URN is a URN for the MEID, which is a globally unique identifier for mobile devices on 3GPP2 networks πŸ“±. 3GPP2 manages MEID allocation to keep MEID values globally unique 🌍. The details of how the MEID is formatted as a URN are in RFC 8464 [10], and the definition of the MEID itself is in 3GPP2 S.R0048-A [13] πŸ’œ.

2. Terminology πŸ“–

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [1] [7] when, and only when, they appear in all capitals, as shown here πŸ™Œ. So if they're not in all caps, they're just regular words, no cap πŸ’….

3. Background 🌷

Mobile comms went from low-bit-rate circuit-switched systems to higher-data-rate packet-switched systems πŸ“Ά. The packet-switched side added IP connectivity for mobile, so the IP Multimedia Subsystem (IMS) made SIP-based calls and IP multimedia sessions possible on phones ✨.

3GPP2 defines High Rate Packet Data (HRPD), which has high data rates, and it drops the 1x Circuit Switched (1xCS) infrastructure 😭. That means voice calls on HRPD networks have to run over IP and IMS 🎧. But SIP-based IMS networks are going to take a great many years, from when this was written, to move fully to all-IP 🐒. So mobile devices need to work in both IP/SIP/IMS mode and circuit-switched mode πŸ”„. Calls and sessions will have to be handed over between those modes mid-call or mid-session, so the mobile device has to talk over the IP/SIP/IMS domain and the circuit-switched domain at the same time πŸ’«.

To cover that, 3GPP2 specified how to keep voice-session continuity between the IP/SIP/IMS domain and the circuit-switched domain in 3GPP2 S.X0042-A [14] πŸ¦‹.

For a mobile device to reach SIP/IMS voice service over the circuit-switched domain, 3GPP2 says a Mobile Switching Center (MSC) server controls mobile voice call setup over the circuit-switched radio access, and sets up the matching voice session in the core network with SIP/IMS πŸ—οΈ. The MSC server works either through an IMS Media Gateway Control Function (MGCF) or directly, if it has a SIP interface built in πŸ”§. To make this work, the mobile device MUST be identified in both the 1xCS and IP/SIP/IMS domains πŸͺͺ. The only mobile device identifier that can be carried in 1xCS signaling is the MEID, so the Instance ID included by the MGCF or the MSC server, and the Instance ID the mobile device includes directly, both need to be based on the MEID 🫠.

On top of that, the same MEID that the MSC server gets from circuit-switched signaling also has to be obtainable from SIP signaling 🀝. That's how you can tell the SIP signaling and the circuit-switched signaling both came from the same mobile device πŸ”.

4. 3GPP2 Use Cases 🚨

  1. The mobile device puts its MEID in the SIP REGISTER request, so the SIP registrar can check the Equipment Identity Register (EIR) to see whether this device is allowed or barred from non-emergency services (for example, because it was stolen) 🚫. If the device isn't allowed on the network for non-emergency services, the SIP registrar can reject the registration πŸ™…β€β™€οΈ. So a barred device gets kept off the network for non-emergency services πŸ”’.
  2. The mobile device includes its MEID in SIP INVITE requests that set up emergency sessions πŸ†˜. That way the Public Safety Answering Point (PSAP) can get the device's MEID for identification if regulations require it πŸš“.
  3. Including the MEID in SIP INVITE requests for emergency sessions also covers unauthenticated emergency sessions, so the network can still identify the device πŸ•΅οΈβ€β™€οΈ. This matters a lot when an unauthenticated emergency session gets handed over from the packet-switched domain to the circuit-switched domain 😱. In that case the MEID is the only identifier common to both domains πŸ’Ž. The Emergency Access Transfer Function (EATF), which coordinates the call transfer between domains, can use the MEID to confirm that the circuit-switched call comes from the same mobile device that was in the packet-switched emergency session 🧩.

5. User Agent Client Procedures πŸ’…

A single mode 3GPP2 User Agent Client (UAC), which only uses 3GPP2 technology to send and receive voice or data, has an MEID as specified in 3GPP2 S.R0048-A [13] πŸ“². When a single mode 3GPP2 UAC registers with a 3GPP2 IMS network, it puts the 3GPP2 MEID URN in the "sip.instance" media feature tag, following the syntax in RFC 8464 [10] πŸŽ€. It does this during the registration procedures in RFC 5626 [4] or RFC 5627 [5], or any other procedure that needs the "sip.instance" media feature tag πŸ’–.

A UAC MUST NOT use the 3GPP2 MEID URN as an Instance ID except when registering with a 3GPP2 IMS network. 🚫

When a UAC is in IMS mode, it figures out which domain of the carrier's IMS network to register with. It can get that from the Universal Integrated Circuit Card (UICC), from preconfiguration, or from the network when it sets up the Packet Data Protocol (PDP) context πŸͺ„. All three methods are carrier specific and only carrier IMS networks do them πŸ“‘. The UAC also gets the address of the IMS edge proxy to send the REGISTER request with the MEID, using information elements in the Attach response when it connects to the carrier's packet data network πŸ›°οΈ. When registering with a non-3GPP or non-3GPP2 IMS network, a UAC SHOULD use a UUID as an Instance ID, as specified in RFC 5626 [4] 🌈.

A UAC MUST NOT include the "sip.instance" media feature tag containing the 3GPP2 MEID URN in the Contact header field of non-REGISTER requests, except when the request is related to an emergency session πŸ†˜. Regulations can require that the MEID be given to the PSAP πŸš‘. Any future exceptions to this prohibition require an RFC that explains how privacy isn't violated by that usage πŸ”.

6. User Agent Server Procedures πŸ’Œ

Okay bestie, the UAS is the one answering the door πŸšͺ and it has a strict rule: it MUST NOT put its sip.instance media feature tag with the 3GPP2 MEID URN in the Contact header field of responses. The only exception is when the response is related to an emergency session 🚨. Regulations can require the MEID to be given to the PSAP, so that's the one time it's allowed. Any future exceptions to this prohibition need an RFC that explains how privacy isn't violated by that usage πŸ”’.

7. 3GPP/3GPP2 SIP Registrar Procedures πŸ›οΈ

In 3GPP/3GPP2 IMS, the SIP Registrar is the gatekeeper πŸ’…. When it gets a sip.instance media feature tag in the Contact header field that contains the 3GPP2 MEID URN (following the syntax from RFC 8464 [10]), it follows the procedures in RFC 5626 [4]. The MEID URN MAY be validated as described in RFC 8464 [10] 🧐.

Here's the fun part πŸŽ€. If the UA says it supports the extension in RFC 5627 [5], and the SIP Registrar allocates a GRUU using the procedures in RFC 5627 [5], then the Instance ID MUST be obfuscated when it creates the gr parameter. That way the MEID isn't revealed to other UAs when the public GRUU shows up in non-REGISTER requests and responses 🫣. 3GPP TS 24.229 [11] subclause 5.4.7A.2 explains the mechanism for obfuscating the MEID when creating the gr parameter 🧩.

8. IANA Considerations 🌸

This document has no IANA actions. Nothing to register here, bestie πŸ€·β€β™€οΈβœ¨

9. Security Considerations πŸš¨πŸ”

Okay, this section is SO important, so pay attention πŸ‘€πŸ’–. MEIDs are like other Instance IDs, which means they can be correlated to a user. That makes them personally identifiable information, and they MUST be treated as such 😭. Specifically, the sip.instance media feature tag with the 3GPP2 MEID URN MUST NOT be included in requests or responses meant to convey any level of anonymity, because that could violate the user's privacy πŸ™ˆ.

RFC 5626 [4] says this, and I'm quoting it exactly because it's a whole mood:

   One case where a UA could prefer to omit the "sip.instance" media
   feature tag is when it is making an anonymous request or some
   other privacy concern requires that the UA not reveal its
   identity.

The same concerns apply when you use the 3GPP2 MEID URN as an Instance ID πŸ’…. Publishing the 3GPP2 MEID URN to networks that the UA isn't attached to, or that it doesn't have a service relationship with, is a security breach 🚩. So the sip.instance media feature tag MUST NOT be forwarded by the service provider's network elements when they forward requests or responses toward the destination UA πŸ›‘. The 3GPP2 MEID URN also MUST NOT accidentally leak in other contexts. The big example here is when application servers subscribe to user registration state using the event package in RFC 3680 [3] πŸ‘€.

Also, an Instance ID with the 3GPP2 MEID URN identifies a mobile device, NOT a user πŸ“±. So it MUST NOT be used alone as an address for a user, or as an identification credential for a user πŸ™…β€β™€οΈ. If you need a URI that reaches the user at a specific device or UA, the GRUU mechanism in RFC 5627 [5] does that job πŸ¦‹.

Entities that log the Instance ID need to protect it as personally identifiable information πŸ”. Regulations can require carriers to log SIP MEIDs too, so keep that in mind πŸ“.

Last but definitely not least, the sip.instance media feature tag containing the 3GPP2 MEID URN needs protection from tampering πŸ›‘οΈ. So any REGISTER requests containing the 3GPP2 MEID URN MUST be sent using a security mechanism such as Transport Layer Security (TLS) from RFC 8446 [8], or any other security mechanism that provides equivalent protection, such as hop-by-hop security based on IP Security (IPsec) πŸ”’πŸ’œ.

10. References πŸ“š

10.1. Normative References

   [1]  Bradner, S., "Key words for use in RFCs to Indicate Requirement
        Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997,
        <https://www.rfc-editor.org/info/rfc2119>.

   [2]  Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
        Peterson, J., Sparks, R., Handley, M., and E.  Schooler, "SIP:
        Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261,
        June 2002, <https://www.rfc-editor.org/info/rfc3261>.

   [3]  Rosenberg, J., "A Session Initiation Protocol (SIP) Event
        Package for Registrations", RFC 3680, DOI 10.17487/RFC3680,
        March 2004, <https://www.rfc-editor.org/info/rfc3680>.

   [4]  Jennings, C., Ed., Mahy, R., Ed., and F. Audet, Ed., "Managing
        Client-Initiated Connections in the Session Initiation Protocol
        (SIP)", RFC 5626, DOI 10.17487/RFC5626, October 2009,
        <https://www.rfc-editor.org/info/rfc5626>.

   [5]  Rosenberg, J., "Obtaining and Using Globally Routable User Agent
        URIs (GRUUs) in the Session Initiation Protocol (SIP)",
        RFC 5627, DOI 10.17487/RFC5627, October 2009,
        <https://www.rfc-editor.org/info/rfc5627>.

   [6]  Saint-Andre, P. and J. Klensin, "Uniform Resource Names (URNs)",
        RFC 8141, DOI 10.17487/RFC8141, April 2017,
        <https://www.rfc-editor.org/info/rfc8141>.

   [7]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key
        Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017,
        <https://www.rfc-editor.org/info/rfc8174>.

   [8]  Rescorla, E., "The Transport Layer Security (TLS) Protocol
        Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
        <https://www.rfc-editor.org/info/rfc8446>.

   [9]  Leach, P., Mealling, M., and R. Salz, "A Universally Unique
        IDentifier (UUID) URN Namespace", RFC 4122,
        DOI 10.17487/RFC4122, July 2005,
        <https://www.rfc-editor.org/info/rfc4122>.

   [10] Atarius, R., "A URN Namespace for Device Identity and Mobile
        Equipment Identity (MEID)", RFC 8464, DOI 10.17487/RFC8464,
        September 2018, <https://www.rfc-editor.org/info/rfc8464>.

   [11] 3GPP, "IP multimedia call control protocol based on Session
        Initiation Protocol (SIP) and Session Description Protocol
        (SDP); Stage 3", 3GPP 24.229, Version 10.13.0, Release 10,
        September 2013,
        <ftp://ftp.3gpp.org/Specs/archive/24_series/24.229/>.

10.2. Informative References

   [12] Allen, A., Ed., "Using the International Mobile station
        Equipment Identity (IMEI) Uniform Resource Name (URN) as an
        Instance ID", RFC 7255, DOI 10.17487/RFC7255, May 2014,
        <https://www.rfc-editor.org/info/rfc7255>.

   [13] 3GPP2, "3G Mobile Equipment Identifier (MEID) - Stage 1, Version
        4.0", Stage 1, Version 4.0, 3GPP2 S.R0048-A, June 2005.

   [14] 3GPP2, "Voice Call Continuity between IMS and Circuit Switched
        Systems - Version 1.0", Version 1.0, 3GPP2 S.X0042-A 1.0, August
        2008, <https://www.3gpp2.org/Public_html/Specs/
        X.S0042-A_v1.0_080904.pdf>.

Acknowledgments 🫢

This document draws heavily on RFC 8464 [10] πŸ™Œ, and also on the style and structure used in RFC 7255 [12] πŸ“.

The author thanks Andrew Allen for the detailed comments πŸ’œ.

Author's Address πŸ¦‹

   Roozbeh Atarius (editor)

   Email: ratarius@motorola.com

That's the whole thing, bestie! πŸŒˆπŸ’… Go read it with your own eyes, and remember: an MEID is personal info, so don't leak it 🫢✨

πŸ“¦ where this page comes from