diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc5379.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc5379.txt')
-rw-r--r-- | doc/rfc/rfc5379.txt | 1291 |
1 files changed, 1291 insertions, 0 deletions
diff --git a/doc/rfc/rfc5379.txt b/doc/rfc/rfc5379.txt new file mode 100644 index 0000000..346e2ae --- /dev/null +++ b/doc/rfc/rfc5379.txt @@ -0,0 +1,1291 @@ + + + + + + +Independent Submission M. Munakata +Request for Comments: 5379 S. Schubert +Category: Informational T. Ohba +ISSN: 2070-1721 NTT + February 2010 + + + Guidelines for Using the Privacy Mechanism for SIP + +Abstract + + This is an informational document that provides guidelines for using + the privacy mechanism for the Session Initiation Protocol (SIP) that + is specified in RFC 3323 and subsequently extended in RFCs 3325 and + 4244. It is intended to clarify the handling of the target SIP + headers/parameters and the Session Description Protocol (SDP) + parameters for each of the privacy header values (priv-values). + +Status of This Memo + + This document is not an Internet Standards Track specification; it is + published for informational purposes. + + This is a contribution to the RFC Series, independently of any other + RFC stream. The RFC Editor has chosen to publish this document at + its discretion and makes no statement about its value for + implementation or deployment. Documents approved for publication by + the RFC Editor are not a candidate for any level of Internet + Standard; see Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc5379. + +Copyright Notice + + Copyright (c) 2010 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 + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. + + + + + + +Munakata Informational [Page 1] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +Table of Contents + + 1. Introduction ....................................................3 + 2. Terminology .....................................................3 + 3. Semantics of Existing priv-values ...............................4 + 4. Target for Each priv-value ......................................5 + 4.1. Target SIP Headers for Each priv-value .....................5 + 4.2. Target SDP Parameters for Each priv-value ..................6 + 4.3. Treatment of priv-value Not Supported by the + Privacy Service ............................................7 + 5. Recommended Treatment of User-Privacy-Sensitive Information .....7 + 5.1. Target SIP Headers .........................................7 + 5.1.1. Call-ID .............................................7 + 5.1.2. Call-Info ...........................................8 + 5.1.3. Contact .............................................8 + 5.1.4. From ................................................9 + 5.1.5. History-Info .......................................10 + 5.1.6. In-Reply-To ........................................10 + 5.1.7. Organization .......................................11 + 5.1.8. P-Asserted-Identity ................................11 + 5.1.9. Record-Route .......................................12 + 5.1.10. Referred-By .......................................13 + 5.1.11. Reply-To ..........................................14 + 5.1.12. Server ............................................14 + 5.1.13. Subject ...........................................15 + 5.1.14. User-Agent ........................................15 + 5.1.15. Via ...............................................15 + 5.1.16. Warning ...........................................16 + 5.2. Target SDP Parameters .....................................16 + 5.2.1. c/m Lines ..........................................16 + 5.2.2. o Line .............................................17 + 5.2.3. i/u/e/p Lines ......................................17 + 5.3. Considerations for Non-Target SIP Headers/Parameters ......17 + 5.3.1. Identity/Identity-Info .............................17 + 5.3.2. Path ...............................................18 + 5.3.3. Replaces Header/Parameter ..........................18 + 5.3.4. Route ..............................................21 + 5.3.5. Service-Route ......................................21 + 5.3.6. Target-Dialog ......................................21 + 6. Security Considerations ........................................21 + 7. Acknowledgements ...............................................22 + 8. References .....................................................22 + 8.1. Normative References ......................................22 + 8.2. Informative References ....................................22 + + + + + + + +Munakata Informational [Page 2] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +1. Introduction + + This document clarifies the privacy mechanism for the Session + Initiation Protocol (SIP) [RFC3261] defined in [RFC3323], which was + later extended in [RFC3325] and [RFC4244]. This document describes + the practical manner of operations of the privacy mechanism as a + guideline and does not change the existing privacy mechanism. + + In RFC 3323, the semantics of the basic set of priv-values (header, + session, user, none, and critical) is defined, but there are some + ambiguities in regards to the target information to be obscured per + priv-value, which are not explicitly specified. An ambiguity such as + this could result in different interpretations of privacy handling + for each of the priv-values defined, both at an entity setting a + Privacy header and at an entity processing a Privacy header, which + could have an adverse impact on interoperability. + + Additional priv-values "id" and "history" are defined in RFCs 3325 + and 4244, respectively. + + In RFC 4244, the priv-value "history" is defined in order to request + privacy for History-Info headers, and the target to be obscured for + "history" priv-value is specified as only the History-Info headers. + In addition, the RFC clearly describes that History-Info headers are + also the target when "header"- and "session"-level privacy are + requested. + + On the other hand, RFC 3325 defines the P-Asserted-Identity header + and a priv-value "id", which is used to request privacy for only the + P-Asserted-Identity header, but it does not specify how other priv- + values may impact the privacy handling of the P-Asserted-Identity + header. Because of this lack of specification, it has been observed + that some implementations are suffering from the inability to achieve + the intended privacy due to discrepancies in interpretations. + + This document tries to clarify the SIP headers and SDP parameters to + be obscured for each of the priv-values to alleviate the potential + interoperability issues already seen due to a lack of explicit text. + +2. Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + + + + + + + +Munakata Informational [Page 3] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + Note: This document is informational; therefore, it does not specify + any new normative behaviors of privacy mechanism. All the RFC + 2119 language in this document is derived from the normative + text in the existing RFCs, such as RFC 3323. + + priv-value: + Values registered with IANA to be used in the Privacy header. + Registered priv-values are "header", "session", "user", "none", + and "critical" defined in [RFC3323]; "id" defined in [RFC3325]; + and "history" defined in [RFC4244]. + + privacy service: + A network entity that executes privacy functions before + forwarding messages to the next hop. It is sometimes + abbreviated to PS in this document. + + user-level privacy: + Privacy for user-inserted information that can be anonymized by + the user agent itself. + +3. Semantics of Existing priv-values + + This section provides the semantics of each priv-value defined in + RFCs 3323, 3325, and 4244. The descriptions are taken from the IANA + registration. + + Privacy Type Description Reference + ------------- ---------------------------------- ---------- + user Request that privacy services [RFC3323] + provide a user-level privacy function + + header Request that privacy services modify [RFC3323] + headers that cannot be set arbitrarily + by the user (Contact/Via). + + session Request that privacy services provide [RFC3323] + privacy for session media + + none Privacy services must not perform any [RFC3323] + privacy function + + critical Privacy service must perform the [RFC3323] + specified services or fail the request + + id Privacy requested for Third-Party [RFC3325] + Asserted Identity + + + + + +Munakata Informational [Page 4] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + history Privacy requested for [RFC4244] + History-Info header(s) + +4. Target for Each priv-value + + Tables in this section show the recommended treatment of SIP headers + and SDP parameters per priv-value. SIP headers and SDP parameters + not shown in the tables are regarded as non-targets of these priv- + values. Some non-target SIP headers/SDP parameters may carry + privacy-sensitive information that may need privacy treatment + regardless of the privacy level requested. This is further described + in 5.3. + + The way in which SIP headers and SDP parameters listed here are + obscured may depend on the implementation and network policy. This + document does not prevent different variations that may exist based + on local policy but tries to provide recommendations for how a + privacy service treats SIP headers and SDP parameters. + + Note: The scope of these tables is SIP headers and related parameters + specified in RFCs. + +4.1. Target SIP Headers for Each priv-value + + Table 1 below shows a recommended treatment of each SIP header for + each priv-value. Detailed descriptions of the recommended treatment + per SIP header are covered in Section 5. + + The "where" column describes the request and response types in which + the header needs the treatment to maintain privacy. Values in this + column are: + + R: The header needs the treatment when it appears in a request. + + r: The header needs the treatment when it appears in a response. + + The next five columns show the recommended treatment for each priv- + value: + + delete: The header is recommended to be deleted at a privacy + service. + + not add: The header is recommended not to be added at a privacy + service. + + anonymize: The header is recommended to be anonymized at a privacy + service. How to anonymize the header depends on the header. + Details are given in Section 5. + + + +Munakata Informational [Page 5] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + anonymize*: An asterisk indicates that the involvement of a + privacy service and treatment of the relevant header depend on + the circumstance. Details are given in Section 5. + + Target headers where user header session id history + -------------------------------------------------------------------- + Call-ID (Note) R anonymize - - - - + Call-Info Rr delete not add - - - + Contact R - anonymize - - - + From R anonymize - - - - + History-Info Rr - delete delete - delete + In-Reply-To R delete - - - - + Organization Rr delete not add - - - + P-Asserted-Identity Rr - delete - delete - + Record-Route Rr - anonymize - - - + Referred-By R anonymize* - - - - + Reply-To Rr delete - - - - + Server r delete not add - - - + Subject R delete - - - - + User-Agent R delete - - - - + Via R - anonymize - - - + Warning r anonymize - - - - + + Table 1: Recommended PS behavior for each SIP header + + Note: Any time a privacy service modifies a Call-ID, it MUST retain + the former and modified values as indicated in Section 5.3 in + RFC 3323. It MUST then restore the former value in a Call-ID + header and other corresponding headers and parameters (such as + In-Reply-To, Replaces, and Target-Dialog) in any messages that + are sent using the modified Call-ID to the originating user + agent. It should also modify a Call-ID header and other + corresponding headers/parameters (such as Target-Dialog and + "replaces" parameter) in any further relevant messages that are + sent by the originating user agent. Refer to Section 5.1.1 + (Call-ID) for the detailed behavior. + + Identity/Identity-Info, Path, Replaces, Route, Service-Route, and + Target-Dialog headers are not targets of these priv-values (and + should not be anonymized or modified by a privacy service based on a + priv-value in a Privacy header). Refer to Section 5.3 for details. + +4.2. Target SDP Parameters for Each priv-value + + The recommended PS behaviors for each SDP parameters are simple. The + c, m, o, i, u, e, and p lines in SIP request/response are recommended + to be anonymized when user privacy is requested with Privacy:session. + + + + +Munakata Informational [Page 6] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +4.3. Treatment of priv-value Not Supported by the Privacy Service + + As specified in RFC 3323, if the priv-value of "critical" is present + in the Privacy header of a request, and if the privacy service is + incapable of performing all of the levels of privacy specified in the + Privacy header, it MUST fail the request with a 500 (Server Error) + response code as indicated in Section 5 in RFC 3323. + + Since the protection of privacy is important, even if the priv-value + "critical" is not present in the Privacy header, the privacy service + should fail the request with a 500 response code when it is incapable + of performing all of the levels of privacy specified in the Privacy + header. + +5. Recommended Treatment of User-Privacy-Sensitive Information + + The following SIP headers and related parameters may concern privacy. + This section describes what kind of user-privacy-sensitive + information may be included in each SIP header/parameter, and how to + maintain privacy for such information at a user agent or a privacy + service when the information is indeed privacy-sensitive. + +5.1. Target SIP Headers + + This section describes privacy considerations and recommended + treatment for each SIP header that may reveal user-privacy-sensitive + information. This section goes into details about how each header + affects privacy, the desired treatment of the value by the user agent + and privacy service, and other instructions/additional notes + necessary to provide privacy. + +5.1.1. Call-ID + + This field frequently contains an IP address or hostname of a UAC + (User Agent Client) appended to the Call-ID value. + + A user agent executing a user-level privacy function on its own + SHOULD substitute for the IP address or hostname that is frequently + appended to the Call-ID value a suitably long random value (the value + used as the 'tag' for the From header of the request might even be + reused) as indicated in Section 4.1 in RFC 3323. + + A privacy service MAY anonymize the Call-ID header when the request + contains Privacy:user by substituting for the IP address or hostname + in the Call-ID a suitably long random value (such as a From tag + value) so that it is sufficiently unique as indicated in Section 5.3 + in RFC 3323. + + + + +Munakata Informational [Page 7] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + Call-ID is essential to dialog matching, so any time a privacy + service modifies this field, it MUST retain the former value and + restore it in a Call-ID header in any messages that are sent to/by + the originating user agent inside the dialog as indicated in Section + 5.3 in RFC 3323. A privacy service should be prepared to receive a + request outside the dialog containing the value of the Call-ID set by + the PS in other SIP headers (e.g., In-Reply-To/Replaces/ + Target-Dialog), at least while the dialog state is active for the + dialog whose Call-ID was modified by that PS. When such a request is + received, the Call-ID value contained in the relevant headers + indicated above should be replaced by the retained value. + + Note: This is possible only if the privacy service maintains the + state and retains all the information it modified to provide + privacy. Some PSs are known to encrypt information prior to + obfuscation in the Via header, etc. In this case, the PS + cannot correlate the modified Call-ID value with the original + Call-ID. Further challenges are imposed when the PS needs to + stay on a signaling path to ensure that it receives all the + messages targeted towards the caller for which a PS provides + privacy, especially when the request is out-of-dialog. + + Refer to the corresponding sections, 5.1.6 (In-Reply-To), 5.3.3 + (Replaces Header/Parameter), and 5.3.6 (Target-Dialog), for detailed + discussion. + +5.1.2. Call-Info + + This field contains additional information about the user. + + A user agent executing a user-level privacy function on its own + SHOULD NOT add a Call-Info header as indicated in Section 4.1 in RFC + 3323. + + A privacy service MUST delete a Call-Info header if one exists when + user privacy is requested with Privacy:user as indicated in Section + 5.3 in RFC 3323. A privacy service SHOULD NOT add a Call-Info header + when user privacy is requested with Privacy:header as indicated in + Section 5.1 in RFC 3323. + +5.1.3. Contact + + This field contains a URI used to reach the user agent for mid-dialog + requests and possibly out-of-dialog requests, such as REFER + [RFC3315]. Since the Contact header is essential for routing further + requests to the user agent, it must include a functional URI even + when it is anonymized. + + + + +Munakata Informational [Page 8] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + A user agent MUST NOT anonymize a Contact header, unless it can + obtain an IP address or contact address that is functional yet has a + characteristic of anonymity as indicated in Section 4.1.1.3 in RFC + 3323. + + Since RFC 3323 was published, there have been proposals that allow + UAs to obtain an IP address or contact address with a characteristic + of anonymity. + + The mechanisms that are discussed at the time of this writing are + Globally Routable User Agent URIs (GRUU) [SIPGRUU], which provides a + functional Contact address with a short life span, making it ideal + for privacy sensitive calls, and Traversal Using Relays around NAT + (TURN) [TURN], through which an IP address of a relay can be obtained + for use in a Contact header. + + A privacy service SHOULD anonymize a Contact header by replacing the + existing Contact header field value with the URI that dereferences to + the privacy service when user privacy is requested with + Privacy:header, as indicated in Section 5.1 in RFC 3323. This is + generally done by replacing the IP address or hostname with that of + the privacy service. + +5.1.4. From + + This field contains the identity of the user, such as display-name + and URI. + + A user agent executing a user-level privacy function on its own + SHOULD anonymize a From header using an anonymous display-name and an + anonymous URI as indicated in Section 4.1 in RFC 3323. + + A privacy service should anonymize a From header when user privacy is + requested with Privacy:user. + + Note: This does not prevent a privacy service from anonymizing the + From header based on local policy. + + The anonymous display-name and anonymous URI mentioned in this + section use display-name "Anonymous", a URI with "anonymous" in the + user portion of the From header, and the hostname value + "anonymous.invalid" as indicated in Section 4.1.1.3 in RFC 3323. + + The recommended form of the From header for anonymity is: + + From: "Anonymous" <sip:anonymous@anonymous.invalid>;tag=1928301774 + + + + + +Munakata Informational [Page 9] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + The tag value varies from dialog to dialog, but the rest of this + header form is recommended as shown. + +5.1.5. History-Info + + History-Info [RFC4244] header URIs to which the request was forwarded + or retargeted can reveal general routing information. + + A user agent executing a user-level privacy function on its own + SHOULD NOT add a History-Info header as indicated in Section 3.3 in + RFC 4244. + + A privacy service SHOULD delete the History-Info headers when user + privacy is requested with Privacy:header, Privacy:session, or + Privacy:history as indicated in Section 3.3 in RFC 4244. + + The privacy could be also expressed for a specific History-Info entry + by inserting "privacy=history" in the History-Info header. In such a + case, a privacy service SHOULD delete the History-Info entry as + indicated in Section 4.3.3.1.1 in RFC 4244. + + Refer to [RFC4244] for detailed behavior for dealing with History- + Info headers. + +5.1.6. In-Reply-To + + The In-Reply-To header contains a Call-ID of the referenced dialog. + The replying user may be identified by the Call-ID in an In-Reply-To + header. + + Alice > INV(Call-ID:C1) > Bob + Bob > INV(In-Reply-To:C1) > Alice + + In this case, unless the In-Reply-To header is deleted, Alice might + notice that the replying user is Bob because Alice's UA knows that + the Call-ID relates to Bob. + + A user agent executing a user-level privacy function on its own + should not add an In-Reply-To header as implied in Section 4.1 in RFC + 3323. + + A privacy service MUST delete the In-Reply-To header when user + privacy is requested with Privacy:user as indicated in Section 5.3 in + RFC 3323. + + In addition, since an In-Reply-To header contains the Call-ID of the + dialog to which it is replying, special attention is required, as + described in Section 5.1.1 (Call-ID), regardless of the priv-value or + + + +Munakata Informational [Page 10] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + presence of a Privacy header. Once a privacy service modifies a + Call-ID in the request, a privacy service should restore the former + value in an In-Reply-To header, if present in the INVITE request + replying to the original request, as long as the privacy service + maintains the dialog state. + + Example: + Alice > INV(Call-ID:C1, Privacy:user) > PS > INV(Call-ID:C2) > Bob + Bob > INV(In-Reply-To:C2, Privacy:none) > PS > + INV(In-Reply-To:C1) > Alice + + Note: This is possible only if the privacy service maintains the + state and retains all the information that it modified to + provide privacy even after the dialog has been terminated, + which is unlikely. Call-back is difficult to achieve when a + privacy service is involved in forming the dialog to be + referenced. + +5.1.7. Organization + + This field contains additional information about the user. + + A user agent executing a user-level privacy function on its own + should not add an Organization header as implied in Section 4.1 in + RFC 3323. + + A privacy service MUST delete the Organization header if one exists + when user privacy is requested with Privacy:user as indicated in + Section 5.3 in RFC 3323. A privacy service SHOULD NOT add an + Organization header when user privacy is requested with Privacy: + header as indicated in Section 5.1 in RFC 3323. + +5.1.8. P-Asserted-Identity + + This header contains a network-verified and network-asserted identity + of the user sending a SIP message. + + A privacy service MUST delete the P-Asserted-Identity headers when + user privacy is requested with Privacy:id as indicated in Section 7 + in RFC 3325 and should delete the P-Asserted-Identity headers when + user privacy is requested with Privacy:header before it forwards the + message to an entity that is not trusted. + + It is recommended for a privacy service to remove the P-Asserted- + Identity header if user privacy is requested with Privacy:id or + Privacy:header even when forwarding to a trusted entity, unless it + can be confident that the message will not be routed to an untrusted + entity without going through another privacy service. + + + +Munakata Informational [Page 11] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +5.1.9. Record-Route + + This field may reveal information about the administrative domain of + the user. + + In order to hide Record-Route headers while keeping routability to + the sender, privacy services can execute a practice referred to as + "stripping". Stripping means removing all the Record-Route headers + that have been added to the request prior to its arrival at the + privacy service and then adding a single Record-Route header + representing itself. In this case, the privacy service needs to + retain the removed headers and restore them in a response. + + Alternatively, privacy services can remove the Record-Route headers + and encrypt them into a single Record-Route header field. In this + case, the privacy service needs to decrypt the header and restore the + former values in a response. + + A privacy service SHOULD strip or encrypt any Record-Route headers + that have been added to a message before it reaches the privacy + service when user privacy is requested with Privacy:header as + indicated in Section 5.1 in RFC 3323. + + As in the case of a Call-ID, if a privacy service modifies the + Record-Route headers, it MUST be able to restore Route headers with + retained values as indicated in Section 5.1 in RFC 3323. Some + examples where the restoration of the Route headers is necessary and + unnecessary are given below. + + When a UAC (Alice) requires privacy for a request, a privacy service + does not have to restore the Route headers in the subsequent request + (see Example 1). + + On the other hand, when a UAS (User Agent Server) (Bob) requires + privacy for a response, a privacy service has to restore the Route + headers in the subsequent request (see Example 2). + + Example 1: + Restoration of Route header is UNNECESSARY when UAC requires privacy + Alice > INV(Privacy:header) > P1 > + INV(Record-Route:P1, Privacy:header) > PS > + INV(Record-Route:PS) > P2 > + INV(Record-Route:P2,PS) > Bob + Bob > 200(Record-Route:P2,PS) > P2 > PS > + 200(Record-Route:P2,PS,P1) > P1 > Alice + Alice > re-INV(Route:P2,PS,P1, Privacy:header) > P1 > + re-INV(Route:P2,PS, Privacy:header) > PS > + re-INV(Route:P2) > P2 > re-INV > Bob + + + +Munakata Informational [Page 12] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + Alice P1 PS P2 Bob + | | | | | + | INV Priv |INV Priv RR:P1 | INV RR:PS | INV RR:P2,PS | + |---------------->|---------------->|---------------->|-------------->| + | | | | | + | 200 RR:P2,PS,P1 | 200 RR:P2,PS,P1 | 200 RR:P2,PS | 200 RR:P2,PS | + |<----------------|<----------------|<----------------|<--------------| + | | | | | + | INV R:P2,PS,P1 | INV R:P2,PS | INV R:P2 | INV | + |---------------->|---------------->|---------------->|-------------->| + | | | | | + + Figure 1: Example when restoration of Route header is UNNECESSARY + + Example 2: + Restoration of Route header is NECESSARY when UAS requires privacy + Alice > INV > P1 > INV(Record-Route:P1) > P2 > + INV(Record-Route:P2,P1) > Bob + Bob > 200(Record-Route:P2,P1, Privacy:header) > P2 > PS' > + 200(Record-Route:PS',P1) > P1 > Alice + Alice > re-INV(Route:PS',P1) > P1 > re-INV(Route:PS') > PS' > + re-INV(Route:P2) > P2 > Bob + + Alice P1 PS' P2 Bob + | | | | | + | INV |INV RR:P1 | | INV RR:P2,P1 | + |-------------->|---------------------------------->|---------------->| + | | | | | + | 200 RR:PS',P1 | 200 RR:PS',P1 |200 Priv RR:P2,P1|200 Priv RR:P2,P1| + |<--------------|<----------------|<----------------|<----------------| + | | | | | + | INV R:PS',P1 | INV R:PS' | INV R:P2 | INV | + |-------------->|---------------->|---------------->|---------------->| + | | | (Restored) | | + + Figure 2: Example when restoration of Route header is NECESSARY + + Note: In Figures 1 and 2, Priv means Privacy:header, RR means Record- + Route header, and R means Route header. + +5.1.10. Referred-By + + The Referred-By [RFC3892] header carries a SIP URI representing the + identity of the referrer. + + The Referred-By header is an anonymization target when the REFER + request with the Referred-By header is sent by the user (referrer) + whose privacy is requested to be processed in the privacy service. + + + +Munakata Informational [Page 13] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + A user agent that constructs REFER requests executing a user-level + privacy function on its own should anonymize a Referred-By header by + using an anonymous URI. + + A privacy service should anonymize a Referred-By header in a REFER + request by using an anonymous URI when user privacy is requested with + Privacy:user. + + On the other hand, the Referred-By header is not an anonymization + target when it appears in a request other than REFER (e.g., INVITE) + because the URI in the Referred-By header does not represent the + sender of the request. + + Example 1: + Referrer requests no privacy and referee requests privacy + Alice > REF(Referred-By:Alice) > Bob + Bob > INV(Referred-By:Alice, Privacy:user) > PS > + INV(Referred-By:Alice) > Carol + + Example 2: + Referrer requests privacy and referee requests privacy + Alice > REF(Referred-By:Alice, Privacy:user) > PS > + REF(Referred-By:X) > Bob + Bob > INV(Referred-By:X, Privacy:user) > PS > + INV(Referred-By:X) > Carol + +5.1.11. Reply-To + + This field contains a URI that can be used to reach the user on + subsequent call-backs. + + A user agent executing a user-level privacy function on its own + should not add a Reply-To header in the message as implied in Section + 4.1 in RFC 3323. + + A privacy service MUST delete a Reply-To header when user privacy is + requested with Privacy:user as indicated in Section 5.3 in RFC 3323. + +5.1.12. Server + + This field contains information about the software used by the UAS to + handle the request. + + A user agent executing a user-level privacy function on its own + should not add a Server header in the response as implied in Section + 4.1 in RFC 3323. + + + + + +Munakata Informational [Page 14] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + A privacy service must delete a Server header in a response when user + privacy is requested with Privacy:user. A privacy service SHOULD NOT + add a Server header in a response when user privacy is requested with + Privacy:header as indicated in Section 5.1 in RFC 3323. + +5.1.13. Subject + + This field contains free-form text about the subject of the call. It + may include text describing something about the user. + + A user agent executing a user-level privacy function on its own + should not include any information identifying the caller in a + Subject header. + + A privacy service MUST delete a Subject header when user privacy is + requested with Privacy:user as indicated in Section 5.3 in RFC 3323. + +5.1.14. User-Agent + + This field contains the UAC's information. + + A user agent executing a user-level privacy function on its own + should not add a User-Agent header as implied in Section 4.1 in RFC + 3323. + + A privacy service MUST delete a User-Agent header when user privacy + is requested with Privacy:user as indicated in Section 5.3 in RFC + 3323. + +5.1.15. Via + + The bottommost Via header added by a user agent contains the IP + address and port or hostname that are used to reach the user agent + for responses. Via headers added by proxies may reveal information + about the administrative domain of the user. + + A user agent MUST NOT anonymize a Via header as indicated in Section + 4.1.1.3 in RFC 3323, unless it can obtain an IP address that is + functional yet has a characteristic of anonymity. This may be + possible by obtaining an IP address specifically for this purpose + either from the service provider or through features such as TURN. + + A privacy service SHOULD strip or encrypt any Via headers that have + been added prior to reaching the privacy service when user privacy is + requested with Privacy:header as indicated in Section 5.1 in RFC + 3323. Refer to Section 5.1.9 (Record-Route) for details of stripping + and encryption. + + + + +Munakata Informational [Page 15] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + A privacy service MUST restore the original values of Via headers + when handling a response in order to route the response to the + originator as indicated in Section 5.1 in RFC 3323. + + No Via stripping is required when handling responses. + +5.1.16. Warning + + This field may contain the hostname of the UAS. + + A user agent executing a user-level privacy function on its own + should not include the hostname representing its identity in a + Warning header. + + A privacy service should anonymize a Warning header by deleting the + hostname portion (if it represents a UAS's identity) from the header + when user privacy is requested with Privacy:user. + +5.2. Target SDP Parameters + + This section describes privacy considerations for each SDP [RFC4566] + parameter that may reveal information about the user. + + When privacy functions for user-inserted information are requested to + be executed at a privacy service, user agents MUST NOT encrypt SDP + bodies in messages as indicated in Section 4.2 in RFC 3323. + +5.2.1. c/m Lines + + The c and m lines in the SDP body convey the IP address and port for + receiving media. + + A user agent must not anonymize the IP address and port in the c and + m lines, unless it can obtain an IP address that is functional yet + has a characteristic of anonymity as implied in Section 4.1.1.3 in + RFC 3323. This may be possible by obtaining an IP address + specifically for this purpose either from the service provider or + through features such as TURN. + + A privacy service must anonymize the IP address and port in c and m + lines using a functional anonymous IP address and port when user + privacy is requested with Privacy:session. This is generally done by + replacing the IP address and port present in the SDP with that of a + relay server. + + + + + + + +Munakata Informational [Page 16] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +5.2.2. o Line + + The username and IP address in this parameter may reveal information + about the user. + + A user agent may anonymize the username in an o line by setting + username to "-" and anonymize the IP address in the o line by + replacing it with a value so that it is sufficiently unique. + + A privacy service must anonymize the username and IP address in the o + line by setting the username to "-" and replacing the IP address with + a value so that it is sufficiently unique when user privacy is + requested with Privacy:session. + +5.2.3. i/u/e/p Lines + + These lines may contain information about the user. + + A user agent executing a session-level privacy function on its own + should not include user's information in the i, u, e, and p lines. + + A privacy service should modify the i, u, e, and p lines to delete + the user's identity information when user privacy is requested with + Privacy:session. + +5.3. Considerations for Non-Target SIP Headers/Parameters + +5.3.1. Identity/Identity-Info + + The Identity [RFC4474] header field contains a signature used for + validating the identity. The Identity-Info header field contains a + reference to the certificate of the signer of Identity headers. An + Identity-Info header may reveal information about the administrative + domain of the user. + + The signature in an Identity header provides integrity protection + over the From, To, Call-ID, Cseq, Date, and Contact headers and over + the message body. The integrity protection is violated if a privacy + service modifies these headers and/or the message body for the + purpose of user privacy protection. + + Once those integrity-protected headers (such as From and Call-ID) are + modified, the Identity/Identity-Info header fields are not valid any + more. Thus, a privacy service acting on a request for Privacy:user, + Privacy:header, or Privacy:session can invalidate integrity + protection provided by an upstream authentication service that has + inserted Identity/Identity-Info header fields. The use of such a + privacy service should be avoided if integrity protect needs to be + + + +Munakata Informational [Page 17] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + retained. Otherwise, if the privacy service invalidates the + integrity protection, it should remove the Identity/Identity-Info + header fields. + + An authentication service downstream of the privacy service may add + Identity/Identity-Info header fields if the domain name of the From + header field URI has not been anonymized (e.g., + 'sip:anonymous@example.com'), which makes it possible for the service + to authenticate the UAC. This authenticated yet anonymous From + header means "this is a known user in my domain that I have + authenticated, but I am keeping its identity private" as indicated in + Section 12 in RFC 4474. + + The desired deployment will have a privacy service located before or + co-located with the identity service; thus, integrity and privacy can + both be provided seamlessly. + +5.3.2. Path + + This field may contain information about the administrative domain + and/or the visited domain of the user agent. However, the Path + header is not the target of any priv-values. + + Given that the Path header [RFC3327] only appears in REGISTER + requests/responses and is essential for a call to reach the + registered UA in the visited domain, it serves no purpose to withhold + or hide the information contained in the Path header; rather, it is + harmful. + + The only reason privacy may be considered desirable is if the visited + domain wants to withhold its topology from the home domain of the + user. In doing so, the domain withholding the topology needs to + ensure that it provides sufficient information so that the home + domain can route the call to the visited domain, thus reaching the + UA. + + However, anonymization of network-privacy-sensitive information is + out of scope. + +5.3.3. Replaces Header/Parameter + + The Replaces [RFC3891] header and the "replaces" parameter contain + identifiers of a dialog to be replaced, which are composed of Call- + ID, local tag, and remote tag. + + + + + + + +Munakata Informational [Page 18] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + The sender of the INVITE with a Replaces header is usually not the + originating user agent or terminating user agent of the target dialog + to be replaced. Therefore, the Call-ID within the Replaces header is + unlikely to be generated by the sender, and thus this header is + outside the anonymization target per priv-value. + + The "replaces" parameter, which appears in a Refer-To header in a + REFER request, is not the target of any particular priv-values + either. As described in Section 5.1.1 (Call-ID), regardless of the + priv-value or the presence of a Privacy header, once a privacy + service modifies a Call-ID in the request, it should monitor headers + that may contain Call-ID and restore the portion of the value + representing the modified Call-ID to the original Call-ID value in a + Replaces header received. + + The main challenge for this to function properly is that a privacy + service has to be on a signaling path to the originator for every + dialog. This is generally not possible and results in REFER requests + not functioning at all times. This is a trade-off that is + anticipated when privacy is imposed. + + The privacy requirements mentioned in Section 5.1.1 will cause the + Replaces header and "replaces" parameter to contain values that will + fail the resulting dialog establishment in some situations. This + loss of functionality is allowed and/or intended as illustrated above + (i.e., it is not the responsibility of a privacy service to ensure + that these features always work). + + The functionality of the Replaces header/parameter when anonymized + depends on the circumstances in which it is used. REFER may work or + may not work depending on the following three criteria. + + 1. Who generated the Call-ID. + 2. Where the privacy service is on the signaling path. + 3. Who initiates the REFER with the "replaces" parameter. + + A few examples that explore when the Replaces header/parameter works + or fails are given below. + + Example 1: + Transfer initiated by the originator, PS added for first INV and REF + Alice > INV(Call-ID:C1, Privacy:user) > PS > INV(Call-ID:C2) > Bob + Alice > REF(Refer-To:Bob?Replaces=C1, Privacy:user) > PS > + REF(Refer-To:Bob?Replaces=C2) > Carol + Carol > INV(Replaces:C2) > Bob (SUCCEED) + + + + + + +Munakata Informational [Page 19] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + Example 2: + Transfer initiated by the originator, PS added only for first INV + Alice > INV(Call-ID:C1, Privacy:user) > PS > INV(Call-ID:C2) > Bob + Alice > REF(Refer-To:Bob?Replaces=C1) > Carol + Carol > INV(Replaces:C1) > Bob (FAIL) + + Note: Example 2 would succeed if the same PS (that modifies the Call- + ID in the INVITE from Alice) is also added for REFER and + modifies the value in the "replaces" parameter from C1 to C2 + even if there is no Privacy header in the REFER. + + Example 3: + Transfer initiated by the originator, PS added only for REF + Alice > INV(Call-ID:C1) > INV(Call-ID:C1) > Bob + Alice > REF(Refer-To:Bob?Replaces=C1, Privacy:user) > PS > + REF(Refer-To:Bob?Replaces=C1) > Carol + Carol > INV(Replaces:C1, Privacy:user) > PS' > + INV(Replaces:C1) > Bob (SUCCEED) + + Example 4: + Transfer initiated by the terminating party, PS added for both INV + Alice > INV(Call-ID:C1, Privacy:user) > PS > INV(Call-ID:C2) > Bob + Bob > REF(Refer-To:Alice?Replaces=C2) > Carol + Carol > INV(Replaces:C2) > PS > INV(Replaces:C1) > Alice (SUCCEED) + + Note: Example 4 succeeds because the same PS (that modifies the Call- + ID in the INVITE from Alice) checks the incoming requests and + modifies the value in a Replaces header in the INVITE from + Carol to the former value of Call-ID (C1). + + Example 5: + Hold, PS added only for first INV + Alice > INV(Call-ID:C1, Privacy:user) > PS > INV(Call-ID:C2) > Bob + Alice > REF(Refer-To:Bob?Replaces=C1) > Music-Server + Music-Server > INV(Replaces:C1) > Bob (FAIL) + + Note: Example 5 would succeed if the same PS (that modifies the Call- + ID in the INVITE from Alice) is added for the INVITE from the + Music-Server and modifies the value in a Replaces header from + C1 to C2. + + As the above examples show, in some scenarios, information carried in + the Replaces header/parameter would result in failure of the REFER. + This will not happen if the Call-ID is not modified at a privacy + service. + + + + + + +Munakata Informational [Page 20] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +5.3.4. Route + + This field may contain information about the administrative domain of + the user agent, but the Route header is not the target of any priv- + values. + + Route headers appear only in SIP requests to force routing through + the listed set of proxies. If a privacy service anonymizes the Route + header, the routing does not function. Furthermore, there is no risk + in revealing the information in the Route headers to further network + entities, including the terminating user agent, because a proxy + removes the value from the Route header when it replaces the value in + the Request-URI as defined in RFC 3261. + + A privacy service that modifies Record-Route headers may need to + restore the values in Route headers as necessary. As indicated in + Section 5.1 in RFC 3323, if a privacy service modifies the Record- + Route headers, it MUST be able to restore Route headers with retained + values. Please refer to Section 5.1.9 (Record-Route) for further + detail and examples. + +5.3.5. Service-Route + + Service-Route headers [RFC3608] appear only in 200 OK responses to + REGISTER requests and contain information about the registrar. The + purpose of the privacy mechanism defined in RFC 3323 is to secure the + user's privacy, so the case where a registrar sets a Privacy header + is not considered here. Therefore, the Service-Route header is not + the target of any priv-values. + +5.3.6. Target-Dialog + + The Target-Dialog [RFC4538] header faces exactly the same issues as + seen for the Replaces header. Please refer to Section 5.3.3 + (Replaces Header/Parameter) for why this is not a target for any + particular priv-values and how a privacy service still needs to + evaluate and modify the value contained, even if no privacy is + requested. + +6. Security Considerations + + This guideline document adds no new security considerations to those + discussed in [RFC3323], [RFC3325], and [RFC4244]. + + + + + + + + +Munakata Informational [Page 21] + +RFC 5379 SIP Privacy Guidelines February 2010 + + +7. Acknowledgements + + The authors would like to thank John Elwell, Jon Peterson, Jonathan + Rosenberg, Mary Barnes, Paul Kyzivat, and Roland Jesske for their + reviews and comments. + +8. References + +8.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, + A., Peterson, J., Sparks, R., Handley, M., and E. + Schooler, "SIP: Session Initiation Protocol", RFC 3261, + June 2002. + + [RFC3323] Peterson, J., "A Privacy Mechanism for the Session + Initiation Protocol (SIP)", RFC 3323, November 2002. + + [RFC3325] Jennings, C., Peterson, J., and M. Watson, "Private + Extensions to the Session Initiation Protocol (SIP) for + Asserted Identity within Trusted Networks", RFC 3325, + November 2002. + + [RFC4244] Barnes, M., Ed., "An Extension to the Session Initiation + Protocol (SIP) for Request History Information", RFC 4244, + November 2005. + +8.2. Informative References + + [TURN] Rosenberg, J., Mahy, R., and P. Matthews, "Traversal Using + Relays around NAT (TURN): Relay Extensions to Session + Traversal Utilities for NAT (STUN)", Work in Progress, + July 2008. + + [SIPGRUU] Rosenberg, J., "Obtaining and Using Globally Routable User + Agent URIs (GRUUs) in the Session Initiation Protocol + (SIP)", RFC 5627, October 2009. + + [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, + C., and M. Carney, "Dynamic Host Configuration Protocol + for IPv6 (DHCPv6)", RFC 3315, July 2003. + + [RFC3327] Willis, D. and B. Hoeneisen, "Session Initiation Protocol + (SIP) Extension Header Field for Registering Non-Adjacent + Contacts", RFC 3327, December 2002. + + + +Munakata Informational [Page 22] + +RFC 5379 SIP Privacy Guidelines February 2010 + + + [RFC3608] Willis, D. and B. Hoeneisen, "Session Initiation Protocol + (SIP) Extension Header Field for Service Route Discovery + During Registration", RFC 3608, October 2003. + + [RFC3891] Mahy, R., Biggs, B., and R. Dean, "The Session Initiation + Protocol (SIP) "Replaces" Header", RFC 3891, September + 2004. + + [RFC3892] Sparks, R., "The Session Initiation Protocol (SIP) + Referred-By Mechanism", RFC 3892, September 2004. + + [RFC4474] Peterson, J. and C. Jennings, "Enhancements for + Authenticated Identity Management in the Session + Initiation Protocol (SIP)", RFC 4474, August 2006. + + [RFC4538] Rosenberg, J., "Request Authorization through Dialog + Identification in the Session Initiation Protocol (SIP)", + RFC 4538, June 2006. + + [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session + Description Protocol", RFC 4566, July 2006. + +Authors' Addresses + + Mayumi Munakata + NTT Corporation + + Phone: +81 422 36 7502 + EMail: munakata.mayumi@lab.ntt.co.jp + + + Shida Schubert + NTT Corporation + + EMail: shida@ntt-at.com + + + Takumi Ohba + NTT Corporation + 9-11, Midori-cho 3-Chome + Musashino-shi, Tokyo 180-8585 + Japan + + Phone: +81 422 59 7748 + EMail: ohba.takumi@lab.ntt.co.jp + + + + + + +Munakata Informational [Page 23] + |