RFC 5767 INFORMATIONAL SIP · PRIVACY · ANONYMITY

User-Agent-Driven Privacy Mechanism for SIP

How a SIP phone can hide its user's identity without needing a privacy service.

On rfc-editor.org ↗
PUBLISHED
April 2010
AUTHORS
M. Munakata, S. Schubert, T. Ohba
STREAM
IETF
REQUIRED FOR ANONYMITY
Temporary GRUU and TURN IP address
FROM HEADER URIS FOR ANONYMITY
sip:anonymous@anonymous.invalid or sip:anonymous@domain.com
DOMAIN NAME VISIBILITY
Always visible in Contact header via GRUU
VIA HEADER ANONYMIZATION
Requires TURN relay server
SIP-IDENTITY COMPATIBILITY
Requires domain name in From header; breaks sip:anonymous@anonymous.invalid approach
DOI
10.17487/RFC5767

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                       M. Munakata
Request for Comments: 5767                                   S. Schubert
Category: Informational                                          T. Ohba
ISSN: 2070-1721                                                      NTT
                                                              April 2010


              User-Agent-Driven Privacy Mechanism for SIP

Abstract

   This document defines a guideline for a User Agent (UA) to generate
   an anonymous Session Initiation Protocol (SIP) message by utilizing
   mechanisms such as Globally Routable User Agent URIs (GRUUs) and
   Traversal Using Relays around NAT (TURN) without the need for a
   privacy service defined in RFC 3323.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Not all documents
   approved by the IESG are 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/rfc5767.

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.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction ....................................................2
   2. Terminology .....................................................3
   3. Concept of Privacy ..............................................3
   4. Treatment of Privacy-Sensitive Information ......................3
      4.1. Obtaining a Functional Anonymous URI Using the GRUU
           Mechanism ..................................................4
      4.2. Obtaining a Functional Anonymous IP Address Using
           the TURN Mechanism .........................................5
   5. UA Behavior .....................................................6
      5.1. Critical Privacy-Sensitive Information .....................6
           5.1.1. Contact Header Field ................................6
           5.1.2. From Header Field in Requests .......................7
           5.1.3. Via Header Field in Requests ........................8
           5.1.4. IP Addresses in SDP .................................8
      5.2. Non-Critical Privacy-Sensitive Information .................8
           5.2.1. Host Names in Other SIP Header Fields ...............8
           5.2.2. Optional SIP Header Fields ..........................9
   6. Security Considerations .........................................8
   7. References ......................................................9
      7.1. Normative References .......................................9
      7.2. Informative References ....................................10

1.  Introduction

   [RFC3323] defines a privacy mechanism for the Session Initiation
   Protocol (SIP) [RFC3261], based on techniques available at the time
   of its publication.  This mechanism relies on the use of a separate
   privacy service to remove privacy-sensitive information from SIP
   messages sent by a User Agent (UA) before forwarding those messages
   to the final destination.  Since then, numerous SIP extensions have
   been proposed and standardized.  Some of those enable a UA to
   withhold its user's identity and related information without the need
   for privacy services, which was not possible when RFC 3323 was
   defined.

   The purpose of this document is not to obsolete RFC 3323, but to
   enhance the overall privacy mechanism in SIP by allowing a UA to take
   control of its privacy, rather than being completely dependent on an
   external privacy service.

   The UA-driven privacy mechanism defined in this document will not
   eliminate the need for the RFC 3323 usage defined in [RFC3325], which
   instructs a privacy service not to forward a P-Asserted-Identity
   header field outside the Trust Domain.  In order to prevent
   forwarding a P-Asserted-Identity header field outside the Trust
   Domain, a UA needs to include the Privacy header field with value
   'id' (Privacy:id) in the request, even when the UA is utilizing this
   specification.

   This document defines a guideline in which a UA controls all the
   privacy functions on its own utilizing SIP extensions such as
   Globally Routable User Agent URIs (GRUUs) [RFC5627] and Traversal
   Using Relays around NAT (TURN) [RFC5766].

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].

   privacy-sensitive information:
                                   The information that identifies a
                                   user who sends the SIP message, as
                                   well as other information that can be
                                   used to guess the user's identity.

3.  Concept of Privacy

   The concept of privacy in this document is the act of concealing
   privacy-sensitive information.  The protection of network privacy
   (e.g., topology hiding) is outside the scope of this document.
   Privacy-sensitive information includes display-name and Uniform
   Resource Identifier (URI) in a From header field that can reveal the
   user's name and affiliation (e.g., company name), and IP addresses or
   host names in a Contact header field, a Via header field, a Call-ID
   header field, or a Session Description Protocol (SDP) [RFC4566] body
   that might reveal the location of a UA.

4.  Treatment of Privacy-Sensitive Information

   Some fields of a SIP message potentially contain privacy-sensitive
   information but are not essential for achieving the intended purpose
   of the message and can be omitted without any side effects.  Other
   fields are essential for achieving the intended purpose of the
   message and need to contain anonymized values in order to avoid
   disclosing privacy-sensitive information.  Of the privacy-sensitive
   information listed in Section 3, URIs, host names, and IP addresses
   in Contact, Via, and SDP are required to be functional (i.e.,
   suitable for purpose) even when they are anonymized.

   With the use of GRUU [RFC5627] and TURN [RFC5766], a UA can obtain
   URIs and IP addresses for media and signaling that are functional yet
   anonymous, and do not identify either the UA or the user.

   Instructions on how to obtain a functional anonymous URI and IP
   address are given in Section 4.1 and 4.2, respectively.

   Host names need to be concealed because the user's identity can be
   guessed from them, but they are not always regarded as critical
   privacy-sensitive information.

   In addition, a UA needs to be careful not to include any information
   that identifies the user in optional SIP header fields such as
   Subject and User-Agent.

4.1.  Obtaining a Functional Anonymous URI Using the GRUU Mechanism

   A UA wanting to obtain a functional anonymous URI MUST support and
   utilize the GRUU mechanism unless it is able to obtain a functional
   anonymous URI through other means outside the scope for this
   document.  By sending a REGISTER request requesting GRUU, the UA can
   obtain an anonymous URI, which can later be used for the Contact
   header field.

   The detailed process on how a UA obtains a GRUU is described in
   [RFC5627].

   In order to use the GRUU mechanism to obtain a functional anonymous
   URI, the UA MUST request GRUU in the REGISTER request.  If a "temp-
   gruu" SIP URI parameter and value are present in the REGISTER
   response, the user agent MUST use the value of the "temp-gruu" as an
   anonymous URI representing the UA.  This means that the UA MUST use
   this URI as its local target and that the UA MUST place this URI in
   the Contact header field of subsequent requests and responses that
   require the local target to be sent.

   If there is no "temp-gruu" SIP URI parameter in the 200 (OK) response
   to the REGISTER request, a UA SHOULD NOT proceed with its
   anonymization process, unless something equivalent to "temp-gruu" is
   provided through some administrative means.

   It is RECOMMENDED that the UA consult the user before sending a
   request without a functional anonymous URI when privacy is requested
   from the user.

   Due to the nature of how GRUU works, the domain name is always
   revealed when GRUU is used.  If revealing the domain name in the
   Contact header field is a concern, use of a third-party GRUU server
   is a possible solution, but this is outside the scope of this
   document.  Refer to the Security Considerations section for details.

4.2.  Obtaining a Functional Anonymous IP Address Using the TURN
      Mechanism

   A UA that is not provided with a functional anonymous IP address
   through some administrative means MUST obtain a relayed address (IP
   address of a relay) if anonymity is desired for use in SDP and in the
   Via header field.  Such an IP address is to be derived from a Session
   Traversal Utilities of NAT (STUN) relay server through the TURN
   mechanism, which allows a STUN server to act as a relay.

   Anonymous IP addresses are needed for two purposes.  The first is for
   use in the Via header field of a SIP request.  By obtaining an IP
   address from a STUN relay server, using that address in the Via
   header field of the SIP request, and sending the SIP request to the
   STUN relay server, the IP address of the UA will not be revealed
   beyond the relay server.

   The second is for use in SDP as an address for receiving media.  By
   obtaining an IP address from a STUN relay server and using that
   address in SDP, media will be received via the relay server.  Also,
   media can be sent via the relay server.  In this way, neither SDP nor
   media packets reveal the IP address of the UA.

   It is assumed that a UA is either manually or automatically
   configured through means such as the configuration framework
   [SIPPING-CONFIG] with the address of one or more STUN (Session
   Traversal Utilities for NAT) [RFC5766] relay servers to obtain
   anonymous IP address.

5.  UA Behavior

   This section describes how to generate an anonymous SIP message at a
   UA.

   A UA fully compliant with this document MUST obscure or conceal all
   the critical UA-inserted privacy-sensitive information in SIP
   requests and responses as shown in Section 5.1 when user privacy is
   requested.  In addition, the UA SHOULD conceal the non-critical
   privacy-sensitive information as shown in Section 5.2.

   Furthermore, when a UA uses a relay server to conceal its identity,
   the UA MUST send requests to the relay server to ensure request and
   response follow the same signaling path.

5.1.  Critical Privacy-Sensitive Information

5.1.1.  Contact Header Field

   When using this header field in a dialog-forming request or response
   or in a mid-dialog request or response, this field contains the local
   target, i.e., a URI used to reach the UA for mid-dialog requests and
   possibly out-of-dialog requests, such as a REFER request [RFC3515].
   The Contact header field can also contain a display-name.  Since the
   Contact header field is used for routing further requests to the UA,
   the UA MUST include a functional URI even when it is anonymized.

   When using this header field in a dialog-forming request or response
   or in a mid-dialog request or response, the UA MUST anonymize the
   Contact header field using an anonymous URI ("temp-gruu") obtained
   through the GRUU mechanism, unless an equivalent functional anonymous
   URI is provided by some other means.  For other requests and
   responses, with the exception of 3xx responses, REGISTER requests and
   200 (OK) responses to a REGISTER request, the UA MUST either omit the
   Contact header field or use an anonymous URI.

   Refer to Section 4.1 for details on how to obtain an anonymous URI
   through GRUU.

   The UA MUST omit the display-name in a Contact header field or set
   the display-name to "Anonymous".

5.1.2.  From Header Field in Requests

   Without privacy considerations, this field contains the identity of
   the user, such as display-name and URI.

   RFCs 3261 and 3323 recommend setting
   "sip:anonymous@anonymous.invalid" as a SIP URI in a From header field
   when user privacy is requested.  This raises an issue when the SIP-
   Identity mechanism [RFC4474] is applied to the message, because SIP-
   Identity requires an actual domain name in the From header field.

   A UA generating an anonymous SIP message supporting this
   specification MUST anonymize the From header field in one of the two
   ways described below.

   Option 1:

   A UA anonymizes a From header field using an anonymous display-name
   and an anonymous URI following the procedure noted in Section 4.1.1.3
   of RFC 3323.

   The example form of the From header field of option 1 is as follows:

      From: "Anonymous" <sip:anonymous@anonymous.invalid>;tag=1928301774

   Option 2:

   A UA anonymizes a From header field using an anonymous display-name
   and an anonymous URI with user's valid domain name instead of
   "anonymous.invalid".

   The example form of the From header field of option 2 is as follows:

      From: "Anonymous" <sip:anonymous@example.com>;tag=1928301774

   A UA SHOULD go with option 1 to conceal its domain name in the From
   header field.  However, SIP-Identity cannot be used with a From
   header field in accordance with option 1, because the SIP-Identity
   mechanism uses authentication based on the domain name.

   If a UA expects the SIP-Identity mechanism to be applied to the
   request, it is RECOMMENDED to go with option 2.  However, the user's
   domain name will be revealed from the From header field of option 2.

   If the user wants both anonymity and strong identity, a solution
   would be to use a third-party anonymization service that issues an
   Address of Record (AoR) for use in the From header field of a request
   and that also provides a SIP-Identity Authentication Service.  Third-
   party anonymization service is out of scope for this document.

5.1.3.  Via Header Field in Requests

   Without privacy considerations, the bottommost Via header field added
   to a request by a UA contains the IP address and port or hostname
   that are used to reach the UA for responses.

   A UA generating an anonymous SIP request supporting this
   specification MUST anonymize the IP address in the Via header field
   using an anonymous IP address obtained through the TURN mechanism,
   unless an equivalent functional anonymous IP address is provided by
   some other means.

   The UA SHOULD NOT include a host name in a Via header field.

5.1.4.  IP Addresses in SDP

   A UA generating an anonymous SIP message supporting this
   specification MUST anonymize IP addresses in SDP, if present, using
   an anonymous IP address obtained through the TURN mechanism, unless
   an equivalent functional anonymous IP address is provided by some
   other means.

   Refer to Section 4.2 for details on how to obtain an IP address
   through TURN.

5.2.  Non-Critical Privacy-Sensitive Information

5.2.1.  Host Names in Other SIP Header Fields

   A UA generating an anonymous SIP message supporting this
   specification SHOULD conceal host names in any SIP header fields,
   such as Call-ID and Warning header fields, if considered privacy-
   sensitive.

5.2.2.  Optional SIP Header Fields

   Other optional SIP header fields (such as Call-Info, In-Reply-To,
   Organization, Referred-By, Reply-To, Server, Subject, User-Agent, and
   Warning) can contain privacy-sensitive information.

   A UA generating an anonymous SIP message supporting this
   specification SHOULD NOT include any information that identifies the
   user in such optional header fields.

6.  Security Considerations

   This specification uses GRUU and TURN and inherits any security
   considerations described in these documents.

   Furthermore, if the provider of the caller intending to obscure its
   identity consists of a small number of people (e.g., small
   enterprise, Small Office, Home Office (SOHO)), the domain name alone
   can reveal the identity of the caller.

   The same can be true when the provider is large but the receiver of
   the call only knows a few people from the source of call.

   There are mainly two places in the message, the From header field and
   Contact header field, where the domain name is expected to be
   functional.

   The domain name in the From header field can be obscured as described
   in Section 5.1.2, whereas the Contact header field needs to contain a
   valid domain name at all times in order to function properly.

   Note: Generally, a device will not show the contact address to the
   receiver, but this does not mean that one cannot find the domain name
   in a message.  In fact, as long as this specification is used to
   obscure identity, the message will always contain a valid domain name
   as it inherits key characteristics of GRUU.

   Note: For UAs that use a temporary GRUU, confidentiality does not
   extend to parties that are permitted to register to the same AoR or
   are permitted to obtain temporary GRUUs when subscribed to the 'reg'
   event package [RFC3680] for the AoR.  To limit this, it is suggested
   that the authorization policy for the 'reg' event package permit only
   those subscribers authorized to register to the AoR to receive
   temporary GRUUs.  With this policy, the confidentiality of the
   temporary GRUU will be the same whether or not the 'reg' event
   package is used.

   If one wants to assure anonymization, it is suggested that the user
   seek and rely on a third-party anonymization service, which is
   outside the scope of this document.

   A third-party anonymization service provides registrar and TURN
   service that have no affiliation with the caller's provider, allowing
   caller to completely withhold its identity.

7.  References

7.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.

   [RFC4566]         Handley, M., Jacobson, V., and C. Perkins, "SDP:
                     Session Description Protocol", RFC 4566, July 2006.

   [RFC5627]         Rosenberg, J., "Obtaining and Using Globally
                     Routable User Agent URIs (GRUUs) in the Session
                     Initiation Protocol (SIP)", RFC 5627, October 2009.

   [RFC5766]         Mahy, R., Matthews, P., and J. Rosenberg,
                     "Traversal Using Relays around NAT (TURN): Relay
                     Extensions to Session Traversal Utilities for NAT
                     (STUN)", RFC 5766, April 2010.

7.2.  Informative References

   [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.

   [RFC3515]         Sparks, R., "The Session Initiation Protocol (SIP)
                     Refer Method", RFC 3515, April 2003.

   [RFC3680]         Rosenberg, J., "A Session Initiation Protocol (SIP)
                     Event Package for Registrations", RFC 3680,
                     March 2004.

   [RFC4474]         Peterson, J. and C. Jennings, "Enhancements for
                     Authenticated Identity Management in the Session
                     Initiation Protocol (SIP)", RFC 4474, August 2006.

   [SIPPING-CONFIG]  Channabasappa, S., "A Framework for Session
                     Initiation Protocol User Agent Profile Delivery",
                     Work in Progress, September 2009.

Authors' Addresses

   Mayumi Munakata
   NTT Corporation

   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
   URI:   http://www.ntt.co.jp

AI ELI5

On this page
PROBLEMRFC 3323 defined SIP privacy using an external privacy service that strips identifying information from messages. New SIP features (GRUU and TURN) let a phone do this itself.
MECHANISMA user agent requests a temporary Globally Routable User Agent URI (GRUU) from its SIP server to anonymize its contact address, and obtains a relay IP address from a TURN server to hide its real network location. The phone then makes calls using these anonymous addresses.
UA-CONTROLLED PRIVACYA SIP user agent can now withhold its own identity using extensions that were not available in 2002, giving it more control over privacy without depending on a separate network service.

§1Privacy Without a Privacy Service

RFC 3323 defined SIP privacy by routing calls through a separate privacy service that removed identifying information from messages before forwarding them. This worked, but required infrastructure outside the user agent itself. Since 2002, new SIP extensions have emerged that let a user agent (UA) handle privacy directly: GRUU (Globally Routable User Agent URIs, RFC 5627) allows a UA to obtain an anonymous contact address from its registrar, and TURN (Traversal Using Relays Around NAT, RFC 5766) lets it obtain an IP address from a relay server. RFC 5767 explains how a UA can combine these to create anonymous SIP messages without needing an external privacy service.

This approach does not obsolete RFC 3323 entirely. When a SIP request carries a P-Asserted-Identity header (used in trusted networks to assert the caller's real identity), the RFC 3323 privacy service may still be needed to prevent that header from leaking outside the trust domain. But for user-controlled anonymity, a UA can now act independently.

New tools let your phone hide its own identity. You do not need a helper on the network anymore.

§2Getting Anonymous Addresses: GRUU and TURN

The Contact header of a SIP request or response tells the other party where to send future messages. Without privacy, this header reveals the user's device address. A UA wanting anonymity must obtain a temporary GRUU (temp-gruu) by sending a REGISTER request asking for it. If the SIP registrar supports GRUU, it responds with a temporary URI that is functional—other UAs can route calls to it—but does not identify the user or device. The UA then uses this temporary GRUU in its Contact header for all dialog-forming requests and mid-dialog requests.

IP addresses can also reveal identity. The Via header in a SIP request lists the IP address and port where the sender is listening for responses. The SDP body in a SIP INVITE can include the sender's IP address for media. To hide these, a UA must obtain an anonymous IP address from a STUN relay server (TURN). The UA sends media and signals through the relay, so only the relay's IP appears in Via and SDP. The RFC assumes a UA is configured with one or more TURN server addresses, either manually or through a configuration framework.

You ask your phone company for a fake address to use instead of your real address, and you ask a relay for a fake IP so your phone's location is hidden.

§3What Information Is Critical to Hide

Not all privacy-sensitive information is equally critical. The From header in a SIP request contains the caller's identity (display name and SIP URI). For anonymity, the UA must set this to "Anonymous" and either use "sip:anonymous@anonymous.invalid" (which hides the domain but breaks SIP-Identity signing) or use "sip:anonymous@real.domain" (which reveals the domain but allows SIP-Identity). The RFC recommends the first approach for true anonymity, but acknowledges the trade-off.

Optional headers like Subject, User-Agent, and Call-Info can leak identity. A UA should omit these or set them to generic values. The hostname in a Call-ID header can reveal a device; a UA should hide or randomize it. However, GRUU necessarily reveals the domain name in the Contact header—if that domain is small or unique, the caller's affiliation may still be guessed. For complete anonymity, the RFC suggests using a third-party anonymization service outside the scope of this document.

Hide your name and your device address. Some headers are less critical, but a domain name always leaks which company you work for.

§4Building and Sending an Anonymous SIP Message

A UA compliant with RFC 5767 must follow these steps when privacy is requested. First, anonymize the Contact header using a temp-GRUU if available; otherwise, omit the Contact header or use a generic value. Second, anonymize the From header by setting the display-name to "Anonymous" and the URI to either sip:anonymous@anonymous.invalid (true anonymity) or sip:anonymous@yourdom.com (SIP-Identity compatible). Third, anonymize the Via header by obtaining an anonymous IP from a TURN relay and placing that IP in the Via header; route the request to the TURN relay itself so the relay sees the request and routes it onward. Fourth, anonymize IP addresses in SDP by using the anonymous TURN-derived address for media.

Additionally, the UA should conceal hostnames in Call-ID, Warning, and other optional headers. It must not include information identifying the user in optional headers such as Subject, User-Agent, Server, Organization, or Referred-By. When using a relay, the UA must send requests through the relay to ensure request and response follow the same path, maintaining the appearance of anonymity.

When making a call, use the fake address in all the places your real address would appear. Route the call through a relay so the network cannot see where it came from.

§5Trade-offs and Limitations

True anonymity via GRUU always leaks the domain name, since GRUU requires a valid domain for routing to work. If a receiver knows the caller's company or organization, the domain alone may be enough to identify them. A compromised registrar or TURN server can reveal the caller's identity to the service provider. If many users share a GRUU registrar, the temporary GRUU provides no confidentiality against peers authorized to obtain temporary GRUUs for the same address of record.

The RFC emphasizes that RFC 5767 offers privacy from the remote party, not from intermediate network equipment or malicious insiders. For users who need strong anonymity, a third-party anonymization service—a registrar and TURN provider with no affiliation to the caller's regular provider—is suggested. This is outside the scope of the RFC, but it is the only way to achieve anonymity that even the caller's own SIP server provider cannot penetrate. The RFC recommends that users concerned with privacy consult their provider or seek such a third-party service.

Your company's domain name is always visible, so people still know who you work for. A real privacy expert would use a service completely separate from your company.

§6References