rfc-3323

A Privacy Mechanism for the Session Initiation Protocol (SIP)

J. Peterson
date2002-12 streamIETF arearai wgsip statusPROPOSED STANDARD pages22 canonicalhttps://www.rfc-editor.org/rfc/rfc3323 doi10.17487/RFC3323 errataview
This document defines new mechanisms for the Session Initiation Protocol (SIP) in support of privacy. Specifically, guidelines are provided for the creation of messages that do not divulge personal identity information. A new 'privacy service' logical role for intermediaries is defined to answer some privacy requirements that user agents cannot satisfy themselves. Finally, means are presented by which a user can request particular functions from a privacy service.

Extracted elements (30)

design-rationale §4.2

The 'none' priv-value allows users to explicitly opt out of pre-provisioned privacy profiles when routing through a privacy service that would otherwise apply privacy functions by default. This gives users positive control over privacy application.

sip, privacy

design-rationale §4.2

The 'user' privacy level is typically set only by intermediaries to communicate that user-level privacy functions must be provided by the network because the user agent is unable to provide them itself (e.g., legacy clients). User agents MAY set it for REGISTER requests but SHOULD NOT set it for other requests.

sip, privacy

design-rationale §1

Two complementary principles guided the design: users are empowered to hide their identity and related personal information when issuing requests, but intermediaries and designated recipients are entitled to reject requests whose originator cannot be identified. This prevents anonymous privacy from being an unconditional right.

sip, privacy

design-rationale §4.1.1.3

Using an IP address rather than a hostname in Contact/Via URIs is not recommended for privacy: reverse-resolving such addresses is generally trivial, and substituting an IP address could introduce complications for NAT/firewall traversal and DNS-dependent services.

sip, privacy, nat, dns

interoperability-note §5.3

Some legacy SIP clients might consider it an error condition if the URI value in the From header is altered between a request and its response, even though current SIP dialog matching uses only the tags rather than whole header field values. Privacy services performing user-level privacy SHOULD act as a B2BUA to account for this.

sip, privacy

normative-requirement §5.1 SHOULD

For header privacy, a privacy service SHOULD remove all Via headers added prior to the request's arrival (Via stripping) and add a single Via header representing itself. It SHOULD replace the Contact header value with a URI that dereferences to the privacy service, and that replacement URI MUST dereference to the privacy service.

sip, privacy

normative-requirement §5.3 MUST

For user-level privacy, the privacy service MUST remove non-essential informational headers added by the user agent, including Subject, Call-Info, Organization, User-Agent, Reply-To, and In-Reply-To.

sip, privacy

normative-requirement §4.3 SHOULD

If a user agent believes it is sending a request directly to a privacy service, it SHOULD include a Proxy-Require header containing the option-tag 'privacy', especially when the 'critical' priv-value is present in the Privacy header.

sip, privacy

normative-requirement §4.3 RECOMMENDED

It is highly RECOMMENDED that user agents use network or transport layer security such as TLS when contacting a privacy service. Users SHOULD establish a direct (single pre-loaded Route header) connection to a privacy service to allow certificate inspection and reduce exposure of private information.

sip, privacy, tls, security

normative-requirement §4.1.1.1 RECOMMENDED

It is RECOMMENDED that user agents seeking anonymity use a display-name of "Anonymous" in the From header field.

sip, privacy

normative-requirement §5 MUST

Privacy services MUST implement support for the 'none' and 'critical' privacy tokens. If the 'critical' privacy level is present and the privacy service cannot fulfill all requested privacy levels, it MUST fail the request with a 500 (Server Error) response.

sip, privacy

normative-requirement §5 MUST NOT

Privacy services MUST NOT perform any privacy function and MUST NOT remove or modify the Privacy header if the Privacy header value of 'none' is specified in a message.

sip, privacy

normative-requirement §5.2 RECOMMENDED

Requesting session-level privacy without end-to-end security for session traffic (e.g., SRTP for RTP media) is NOT RECOMMENDED, because the anonymizer itself becomes party to the communications.

sip, privacy, security, rtp

normative-requirement §4.1.1.3 SHOULD NOT

The host portion of URIs used in routing subsequent requests (e.g., Contact header) SHOULD NOT be altered by the user agent for privacy reasons. If these headers require anonymization, the user should request that service from a privacy service intermediary.

sip, privacy

normative-requirement §4.1.1.3 SHOULD

The hostname value 'anonymous.invalid' SHOULD be used for anonymous URIs. The full recommended form of the anonymous From header is: From: "Anonymous" <sip:[email protected]>;tag=1928301774, and this From header MUST contain a valid and unique 'tag=' parameter.

sip, privacy, dns

normative-requirement §4.2 SHOULD

User agents SHOULD include a Privacy header when network-provided privacy is required. Intermediaries SHOULD only add Privacy headers if operating at a user's behest. An intermediary MUST NOT modify the Privacy header in any way if the 'none' priv-value is already specified.

sip, privacy

normative-requirement §4.1 SHOULD

User agents SHOULD not include optional headers that might divulge personal information (e.g., Call-Info). Users SHOULD populate URIs in accordance with anonymization guidelines and SHOULD create an anonymous From header field for requests seeking privacy.

sip, privacy

normative-requirement §4.1 SHOULD

User agents SHOULD substitute the IP address or hostname frequently appended to Call-ID values with a suitably long random value, as the Call-ID header is frequently constructed in a manner that reveals the originating client's IP address or hostname.

sip, privacy

normative-requirement §4.2 MUST

When a Privacy header is constructed, it MUST consist of either the value 'none', or one or more of the values 'user', 'header', and 'session' (each appearing at most once), which MAY in turn be followed by the 'critical' indicator. User agents MUST NOT populate any other priv-values in a Privacy header that contains a value of 'none'.

sip, privacy

normative-requirement §5 MUST

When a privacy service performs a function corresponding to a privacy level, it SHOULD remove that priv-value from the Privacy header. When the last priv-value (not counting 'critical') is removed, the entire Privacy header MUST be removed from the message.

sip, privacy

normative-requirement §5.1 MUST

When further requests or responses associated with a dialog reach the privacy service, it MUST restore values for the Via, Record-Route/Route, or Contact headers that it previously removed for privacy purposes.

sip, privacy

normative-requirement §4.2 MUST NOT

When session privacy is requested, user agents MUST NOT encrypt SDP bodies in messages, because the privacy service acting as a B2BUA needs to access and modify the SDP to anonymize session traffic.

sip, privacy

normative-requirement §5 MUST

When the privacy service removes the entire Privacy header from a request, it MUST also remove any 'privacy' option-tag from the Proxy-Require header field of the request.

sip, privacy

normative-requirement §5.3 MUST

When user-level privacy functions require modification of dialog-matching headers, the privacy service SHOULD act as a transparent back-to-back user agent and MUST persist the former values of dialog-matching headers, restoring them in messages sent to the originating user agent.

sip, privacy

privacy-consideration §6

Authentication mechanisms such as SIP Digest authentication are outside the scope of the privacy considerations in this document. Users that do not wish to reveal their identity to servers issuing authentication challenges MAY elect not to respond to such challenges.

sip, privacy, security

protocol-element §4.2

The Privacy header field is defined to allow user agents to request specific privacy handling for SIP requests and responses. Its syntax is: Privacy-hdr = 'Privacy' HCOLON priv-value *(";" priv-value), where priv-value = "header" / "session" / "user" / "none" / "critical" / token.

sip, privacy

registry §7

This document creates an IANA registry for Privacy header priv-value tokens, indexed by token name with a short semantic description. Initial values are: user, header, session, none, and critical. New values require IETF Consensus including RFC publication per RFC 2434.

sip, privacy, registry

registry §7

This document registers a new SIP header field 'Privacy' (no compact form defined) in the IANA SIP parameters header sub-registry, and defines a new SIP option-tag 'privacy' representing support for the extensions defined in this document.

sip, privacy, registry

security-consideration §6

Messages requesting privacy require both confidentiality and integrity. Without integrity, privacy functions could be downgraded or eliminated; without confidentiality, eavesdroppers could see the personal information the user asked the privacy service to obscure. Users should only trust privacy services that are accountable to them.

sip, privacy, security

security-consideration §6

Operators of privacy services should be aware that in the eyes of downstream entities, a privacy service will be the only source to which anonymous messages can be traced, placing legal and operational accountability on the privacy service operator.

sip, privacy, security