RFC 5002
The Session Initiation Protocol (SIP) P-Profile-Key Private Header (P-Header)
RFC 5002: The Session Initiation Protocol (SIP) P-Profile-Key Private Header (P-Header) ๐
Okay bestie, this is RFC 5002 ๐ It was written by G. Camarillo and G. Blanco, both at Ericsson, in August 2007. The category is Informational, so it's here to give the Internet community information and doesn't specify an Internet standard of any kind ๐ฆ The title block doesn't list anything this document obsoletes or updates, so it's just vibing on its own โจ
Status of This Memo ๐
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited ๐
Abstract ๐ธ
Okay so this document specifies the SIP P-Profile-Key P-header ๐ It's used in the 3rd-Generation Partnership Project (3GPP) IMS (IP Multimedia Subsystem) to give SIP registrars and SIP proxy servers the key of the profile that matches the destination SIP URI of a particular SIP request. Iconic behaviour ๐
Table of Contents ๐ง
1. Introduction ....................................................2
2. Terminology .....................................................2
3. Scenario ........................................................2
4. Requirements ....................................................3
5. P-Profile-Key Header Field Definition ...........................3
6. Applicability ...................................................4
7. IANA Considerations .............................................4
8. Security Considerations .........................................5
9. Acknowledgements ................................................5
10. References .....................................................5
10.1. Normative References ......................................5
10.2. Informative References ....................................6
1. Introduction โจ
The 3rd-Generation Partnership Project (3GPP) IMS (IP Multimedia Subsystem) uses SIP [RFC3261] as its main signalling protocol ๐ For more info on the IMS, check out 3GPP TS 23.228 [3GPP.23.228] and 3GPP TS 24.229 [3GPP.24.229]. 3GPP identified a set of requirements that can be met by defining a new SIP P-header, following the procedures in [RFC3427] ๐ฆ
The rest of this doc is laid out like this. Section 3 describes the scenario 3GPP cares about, and Section 4 talks about the requirements that come out of that scenario ๐ Section 5 defines the P-Profile-Key header field, which meets those requirements, and Section 6 covers its applicability and scope ๐ Section 7 registers the P-Profile-Key header field with IANA, and Section 8 talks about the security properties of the environment where this header field is meant to be used ๐ฅ
2. Terminology ๐
- HSS: Home Subscriber Server.
- I-CSCF: Interrogating - Call/Session Control Function.
- Public Service Identity: A SIP URI that refers to a service instead of a user.
- S-CSCF: Serving - Call/Session Control Function.
- Wildcarded Public Service Identity: A set of Public Service Identities that match a regular expression and share the same profile.
3. Scenario ๐ธ
In the 3GPP IMS, there are scenarios where a set of proxies handling a request need to consult the same user database, as described in [RFC4457] ๐ซถ Those proxies usually use the destination SIP URI of the request as the key for their database queries. BUT, when a proxy handles a Wildcarded Public Service Identity, the key it uses for its database query is not the destination SIP URI. It's a regular expression instead ๐ญ
Public Service Identities are SIP URIs that refer to services instead of users. In other words, they address a specific application in an Application Server โจ Wildcarded Public Service Identities are a set of Public Service Identities that match a regular expression and share the same profile. For example, the Public Service Identities 'sip:chatroom-12@example.com' and 'sip:chatroom-657@example.com' would both match the Wildcarded Public Service Identity 'sip:chatroom-!.*!@example.com' ๐ For a description of Wildcarded Public Service Identities, see 3GPP TS 23.003 [3GPP.23.003].
Now here's the tricky part ๐ When a proxy queries the user database for a Public Service Identity that has no profile in the user database, the user database needs to find its matching Wildcarded Public Service Identity. For example, if the user database gets a query for 'sip:chatroom-657@example.com', it has to go through every Wildcarded Public Service Identity it has until it finds a match, which in this case is 'sip:chatroom-!.*!@example.com'. Finding that match can be computationally expensive, time consuming, or both ๐
When two proxies query the user database for the same Public Service Identity, and that identity matches a Wildcarded Public Service Identity, the user database has to do the matching process twice. Doing it twice can be avoided if the first proxy gets the Wildcarded Public Service Identity from the user database and passes it along, piggy-backed in the SIP message, to the second proxy. That way, the second proxy can query the user database using the Wildcarded Public Service Identity directly ๐ง Main character energy for the second proxy, ngl ๐
There's also an alternative, but it's undesirable ๐ โโ๏ธ It would have the user database store every Public Service Identity along with its matching Wildcarded Public Service Identity. The scalability and manageability properties of this approach are considerably worse than those of the approach described earlier ๐
4. Requirements ๐
This section lists the requirements derived from the previous scenario:
- It is necessary to optimize the response time for session establishment in the 3GPP IMS.
- It is necessary to keep the user database's size and maintenance manageable (e.g., storing individual Public Service Identities matching a Wildcarded Public Service Identity in the user database is not believed to be an acceptable solution).
5. P-Profile-Key Header Field Definition ๐
This document defines the SIP P-Profile-Key P-header. The P-Profile-Key P-header contains the key that a proxy uses to query the user database for a given profile ๐
The augmented Backus-Naur Form (BNF) [RFC4234] syntax of the P-Profile-Key header field is the following:
P-Profile-Key = "P-Profile-Key" HCOLON (name-addr / addr-spec)
*( SEMI generic-param )
The format of HCOLON, name-addr, addr-spec, and generic-param is defined in [RFC3261]. The format of Wildcarded Public Service Identities is defined in 3GPP TS 23.003 [3GPP.23.003]. They take the form of Extended Regular Expressions (ERE) as defined in Chapter 9 of IEEE 1003.1-2004 Part 1 [IEEE.1003.1-2004] ๐ค
Here's an example of a P-Profile-Key header field that contains a Wildcarded Public Service Identity:
P-Profile-Key: <sip:chatroom-!.*!@example.com>
6. Applicability ๐ฆ
According to [RFC3427], P-headers have limited applicability. Specs for P-headers like this RFC need to clearly document the useful scope of the proposal, and explain its limitations and why it isn't suitable for general use of SIP on the Internet ๐
The P-Profile-Key header field is meant to be used in 3GPP IMS networks. This header field carries the key of a service profile, which is stored in a user database called the HSS, between two proxies, called the I-CSCF and the S-CSCF. The I-CSCF and the S-CSCF belong to the same administrative domain and share a common frame of reference to the user database. The I-CSCF inserts the P-Profile-Key header field into a SIP request, and the S-CSCF removes it before routing the request further. (For a description of how an I-CSCF and an S-CSCF query the same user database for a single request, see [RFC4457].) ๐ซถ
Typically, when SIP is used on the Internet, there are not multiple proxies with a trust relationship between them querying the same user database. So the P-Profile-Key header field doesn't seem useful in a general Internet environment ๐
7. IANA Considerations ๐ธ
This document defines a new SIP header field: P-Profile-Key. IANA has registered this header field in the SIP Parameters registry, under the Header Fields subregistry โจ
8. Security Considerations ๐ฅ
Okay, this section is serious, so read it carefully bestie ๐จ
The P-Profile-Key defined in this document is meant to be used in an environment where elements are trusted and where attackers are not supposed to have access to the protocol messages between those elements. Traffic protection between network elements is sometimes done with IPsec and sometimes by physically protecting the network. In any case, the environment where the P-Profile-Key header field will be used ensures the integrity and the confidentiality of the contents of this header field. The P-Profile-Key header field MUST NOT be used in environments that do not have these characteristics ๐ญ
The P-Profile-Key header field needs integrity protection so attackers can't modify its contents. An attacker who could modify the contents of this header field could make the network apply a different service than the one that corresponds to the request carrying the P-Profile-Key header field ๐
The contents of the P-Profile-Key field need to be kept confidential. An attacker who could access the contents of this header field would gain certain knowledge about the way services are structured in a given domain ๐
Authors' Addresses โจ
Okay, meet the two bestie-level engineers behind this doc ๐ Both of them work at Ericsson, which is giving serious Nordic and Spanish energy ๐ซ๐ฎ๐ช๐ธ
Gonzalo Camarillo
Ericsson
Hirsalantie 11
Jorvas 02420
Finland
EMail: Gonzalo.Camarillo@ericsson.com
German Blanco
Ericsson
Via de los Poblados 13
Madrid 28033
Spain
EMail: German.Blanco@ericsson.com
Their emails are Gonzalo.Camarillo@ericsson.com and German.Blanco@ericsson.com ๐ฌ Slide into their DMs if you have questions, periodt ๐
Full Copyright Statement ๐
Copyright (C) The IETF Trust (2007) ๐ธ
This document is subject to the rights, licenses and restrictions contained in BCP 78 ๐ Except for what BCP 78 sets out, the authors keep all of their rights, so no copying their work and calling it yours, bestie ๐
The document and the info in it are provided on an "AS IS" basis ๐ซถ THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED ๐ญ That includes, but isn't limited to, any warranty that using the info won't infringe any rights, and any implied warranty of merchantability or fitness for a particular purpose. Legally speaking, nobody is promising this is perfect ๐
Intellectual Property ๐ฆ
The IETF doesn't take a position on whether any Intellectual Property Rights or other rights that someone might claim over the tech in this document are valid or how far they reach ๐ง It also doesn't say whether licenses for those rights are available, and it hasn't independently gone looking for any such rights, so no promises there ๐ For how rights work with RFC documents, check out BCP 78 and BCP 79 ๐
Copies of IPR disclosures sent to the IETF Secretariat are a thing โจ So are any assurances of licenses that might be offered, along with the results of any attempt to get a general license or permission to use those proprietary rights by implementers or users of this specification. You can find all of that in the IETF online IPR repository at http://www.ietf.org/ipr ๐
The IETF invites anyone who's interested to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard ๐ Send that info to the IETF at ietf-ipr@ietf.org ๐จ Thanks for keeping the internet honest, besties ๐ซถโจ
๐ฆ where this page comes from
- ietf: rfc5002 2007-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms