SIP WG J. Peterson
Internet-Draft NeuStar
Expires: November 15, 2004 C. Jennings
Cisco Systems
May 17, 2004
Enhancements for Authenticated Identity Management in the Session
Initiation Protocol (SIP)
draft-ietf-sip-identity-02
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on November 15, 2004.
Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract
The existing security mechanisms in the Session Initiation Protocol
are inadequate for cryptographically assuring the identity of the end
users that originate SIP requests and responses, especially in an
interdomain context. This document recommends practices and
conventions for identifying end users in SIP messages, and proposes a
way to distribute cryptographically secure authenticated identities.
Peterson & Jennings Expires November 15, 2004 [Page 1]
Internet-Draft SIP Identity May 2004
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. Overview of Operations . . . . . . . . . . . . . . . . . . . . 6
6. User Agent Behavior: Sending Messages . . . . . . . . . . . . 7
7. Authentication Service Behavior . . . . . . . . . . . . . . . 7
7.1 UAs acting as an Authentication service . . . . . . . . . . . 9
8. Verifying Identity . . . . . . . . . . . . . . . . . . . . . . 9
9. Proxy Server Behavior . . . . . . . . . . . . . . . . . . . . 10
10. Header Syntax . . . . . . . . . . . . . . . . . . . . . . . . 12
11. Security Considerations . . . . . . . . . . . . . . . . . . . 13
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 17
A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17
Normative References . . . . . . . . . . . . . . . . . . . . . 16
Informative References . . . . . . . . . . . . . . . . . . . . 16
B. Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Full Copyright Statement . . . . . . . . . . . . . . . . . . . 19
Peterson & Jennings Expires November 15, 2004 [Page 2]
Internet-Draft SIP Identity May 2004
1. Introduction
This document provides enhancements to the existing mechanisms for
authenticated identity management in the Session Initiation Protocol
(SIP [1]). An identity, for the purposes of this document, is
defined as a canonical SIP address-of-record URI employed to reach a
user (such as 'sip:alice@atlanta.com').
RFC3261 enumerates a number of places within a SIP request that a
user can express an identity for themselves, notably the user-
populated From header field. However, the recipient of a SIP request
has no way to verify that the From header field has been populated
accurately, in the absence of some sort of cryptographic
authentication mechanism.
RFC3261 specifies a number of security mechanisms that can be
employed by SIP UAs, including Digest, TLS and S/MIME
(implementations may support other security schemes as well).
However, few SIP user agents today support the end-user certificates
necessary to authenticate themselves via TLS or S/MIME, and
furthermore Digest authentication is limited by the fact that the
originator and destination must share a pre-arranged secret. It is
desirable for SIP user agents to be able to send requests to
destinations with they have no previous association - just as in the
telephone network today, one can receive a call from someone with
whom one has no previous association, and still have a reasonable
assurance that their displayed Caller-ID is accurate.
2. Terminology
In this document, the key words "MUST", "MUST NOT", "REQUIRED",
"SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as
described in RFC2119 [2] and indicate requirement levels for
compliant SIP implementations.
3. Background
All RFC3261-compliant SIP user agents support a means of
authenticating themselves to a SIP registrar - commonly with a shared
secret (Digest authentication, which MUST be supported by SIP user
agents, is typically used for this purpose). Registration allows a
user agent to express that it is the proper entity to which requests
should be sent for a particular address-of-record SIP URI.
Coincidentally, the address-of-record URI of a SIP user is also the
URI with which a user commonly populates the From header of requests
- in other words, the address-of-record is an identity. So in this
Peterson & Jennings Expires November 15, 2004 [Page 3]
Internet-Draft SIP Identity May 2004
context, users already have a means of providing their identity,
which makes good sense: since the contents of a From header field are
essentially a 'return address' for SIP requests, being able to prove
that you are eligible to receive requests for that 'return address'
should be identical to proving that you are authorized to assert this
identity.
However, the credentials with which a user agent proves their
identity to a registrar cannot be validated by a user agent or proxy
server outside your local domain - these credentials are currently
only useful for registration. For the purposes of determining
whether or not the 'return address' of a request can legitimately be
asserted as the identity of the user, SIP entities in other domains
require an assurance that the sender of a message is capable of
authenticating themselves to a registrar in their own domain.
Ideally, then, SIP user agents should have some way of proving to
recipients of SIP messages that their local domain has authenticated
them. In the absence of end-user certificates in user agents, it is
possible to implement a mediated authentication architecture for SIP
in which requests are sent to a server in the user's local domain
which authenticates such requests (using the same practices by which
the domain would authenticate REGISTER requests). Once a message has
been authenticated, the local domain then needs some way to
communicate to other SIP entities the sending user has been
authenticated. This draft addresses how that imprimatur of
authentication can be shared.
RFC3261 already describes an architecture very similar to this in
Section 26.3.2.2, in which a user agent authenticates itself to a
local proxy server which in turn authenticates itself to a remote
proxy server via mutual TLS, creating a two-link chain of transitive
authentication between the originator and the remote domain. While
this works well in some architectures, there are a few respects in
which this is impractical. For one, transitive trust in inherently
weaker than an assertion that can be validated end-to-end. It is
possible for SIP requests to cross multiple intermediaries in
separate administrative domains, in which case transitive trust
becomes even less compelling. It also requires intermediaries to act
as proxies, rather than redirecting requests to their destinations
(redirection lightens loads on SIP intermediaries).
One solution to this problem is to use 'trusted' SIP intermediaries
that assert an identity for users in the form of a privileged SIP
header. A mechanism for doing so (with the P-Asserted-Identity
header) is given in [6]. However, this solution allows only hop-by-
hop trust between intermediaries, not end-to-end cryptographic
authentication, and it assumes a managed network of nodes with strict
Peterson & Jennings Expires November 15, 2004 [Page 4]
Internet-Draft SIP Identity May 2004
mutual trust relationships, an assumption that is incompatible with
widespread Internet deployment.
Accordingly, a new tactic is required for sharing a cryptographic
assurance of end-user identity in an intradomain context.
Furthermore, this new mechanism must work for both SIP requests and
responses. However, there is an additional wrinkle specific to
providing identity in a response. While the original address-of-
record to which a request is sent is stored in the To header field of
the request, it is possible, due to retargeting at intermediaries, it
is possible that the request will be forwarded to an entity that has
a different AoR (i.e. identity). Since the To header is not changed
in responses to a SIP request, the UAC has no way of discovering that
new AoR. This is generally known as the "response identity" or
"connected party" problem.
4. Requirements
This draft addresses the following requirements:
The mechanism must allow a UAC to provide a strong cryptographic
identity assurance to the UAS in a request.
The mechanism must allow a UAS to provide a strong cryptographic
identity assurance to the UAC in a response.
User agents that receive identity assurances must be able to
validate these assurances without performing any network lookup.
Proxy servers must be capable of adding this identity assurance to
requests or responses.
The mechanism must prevent replay of the identity assurance by an
attacker.
The mechanism must be capable of protecting the integrity of SIP
message bodies (to ensure that media offers and answers are linked
to the signaling identity).
It must be possible for a user to have multiple AoRs (i.e.
accounts or aliases) under which it is known at a domain, and for
the UAC to assert one identity while authenticating itself as
another, related, identity, as permitted by the local policy of
the domain.
It must be possible, in cases where a request has been retargeted
to a different AoR than the one designated in the To header field,
for the UAC to ascertain the AoR to which the request has been
Peterson & Jennings Expires November 15, 2004 [Page 5]
Internet-Draft SIP Identity May 2004
sent.
5. Overview of Operations
This section provides an informative (non-normative) high-level
overview of the mechanisms described in this document.
Imagine the case where Alice, who has the home proxy of example.com
and the address-of-record sip:alice@example.com, wants to communicate
with sip:bob@example.org.
Alice generates an INVITE and places her identity in the From header
field of the request. She then sends an INVITE over TLS to an
authentication service proxy for her domain.
The authentication service authenticates Alice (possibly by sending a
Digest authentication challenge) and validates that she is authorized
to populate the value of the From header field (which may be Alice's
AoR, or it may be some other value that the policy of the proxy
server permits her to use). It then computes a hash over some
particular headers, including the From header field and the bodies in
the message. This hash is signed with the certificate for the domain
(example.com, in Alice's case) and inserted in a header field (the
new Identity header) in the SIP message. The proxy, as the holder
the private key of its domain, is asserting that the originator of
this request has been authenticated and that she is authorized to
claim the identity (the SIP address-of-record) which appears in the
From header field. The proxy also inserts a companion header field
that tells Bob how to acquire its certificate, if he doesn't already
have it.
When Bob returns a response to the INVITE (such as a 200 OK), a
similar set of steps happen. Bob's home proxy asserts his identity
in the response. In this instance, the proxy has to insert the
header directly into the request - redirection of responses is not
possible. When Alice receives the response, she verifies Bob's
identity.
If Alice's request for Bob were retargeted, one of two things might
happened. If it were retargeted to a domain that was also the
responsibility of Bob's home proxy (for example, retargeted from
sip:bob@example.com to sip:carol@example.com), then the request would
proceed normally and receive an Identity. If Bob's home proxy would
retarget the request to some other domain (e.g.
sip:bob@example.ORG), then his home proxy would redirect the request
rather than proxying it, and Alice would send a new request that
could receive a response with an Identity from the new domain.
Peterson & Jennings Expires November 15, 2004 [Page 6]
Internet-Draft SIP Identity May 2004
6. User Agent Behavior: Sending Messages
This mechanism requires one important change to existing user agent
behavior for sending requests and responses: user agents using this
mechanism to send requests or responses MUST support TLS; moreover,
they MUST be capable of establishing a persistent TLS connection with
a proxy server that acts as an authentication service. Additionally,
there are several practices that should be highlighted in the context
of this identity solution.
When a UAC sends a request, it MUST accurately populate the header
field that asserts its identity (for a SIP request, this is the From
header field). In a request it MUST set the URI portion of its From
header to match a SIP, SIPS or TEL URI AoR under which the UAC can
register (including anonymous URIs, as described in RFC 3323 [3]).
The UAC MUST also be capable of sending requests through an
'outbound' proxy (the authentication service), and of course MUST
support the Digest authentication mechanism described in RFC3261.
Because this mechanism does not provide integrity protection for the
first hop to the authentication service, the UAC MUST send requests
to an authentication service only over a TLS connection.
Additionally, in order to provide identity for responses, user agents
MUST form a persistent TLS connection to a proxy server when a
REGISTER is sent.
Since a UAS cannot send a response that does not replicate the
contents of the To and From header fields in the corresponding
request, UAS response-sending behavior is unchanged. Again, because
this mechanism does not provide integrity protection for the first
hop of the response path, the UAS SHOULD send responses only over a
TLS connection.
7. Authentication Service Behavior
The authentication service authenticates the identity of the message
sender and validates that the identity given in the message can
legitimately be asserted by the sender. Then it computes a signature
over the canonical form of several headers and all the bodies, and
inserts this signature into the message.
First, an authentication service MUST extract the identity of the
sender. For requests, it inspects the From header field; for
responses, the To header field (henceforth the result of this
inspection will be referred to as the "identity field). If the
identity field contains a SIP or SIPS URI, the authentication service
MUST extract the hostname portion of the URI in that header field,
and compare this to the domain(s) for which it is responsible. If
the identity field uses the TEL URI scheme, the policy of the
Peterson & Jennings Expires November 15, 2004 [Page 7]
Internet-Draft SIP Identity May 2004
authentication service determines whether or not it is responsible
for this identity. Some example policies are described in [TODO].
If the authentication service is not responsible for the identity in
question, it MAY handle the request as a normal proxy server; see
below for more information on authentication service handling of an
existing Identity header.
Second, the authentication service must determine whether or not the
sender of the request is authorized to claim the identity given in
the identity field. In order to do so, the authentication service
MUST authenticate the sender of the message. Some possible ways in
which this authentication might be performed include:
For requests, challenging the request with a 407 response code
using the Digest authentication scheme (or viewing a Proxy-
Authentication header sent in the request which was sent in
anticipation of a challenge using cached credentials, as described
in RFC 3261 Section 22.3)
For requests and responses that are sent over a persistent TLS
connection, relying on some prior authentication that was
performed at the formation of the connection (most likely, the
authentication service previously challenged a REGISTER request
sent after the TLS connection was formed, or possibly a prior
challenged INVITE that was sent over the TLS connection)
Authorization of the assertion of a particular username in the From
header field of a SIP message is a matter of local policy for the
authorization service which depends greatly on the manner in which
authentication is performed. A RECOMMENDED policy is as follows: the
username asserted during Digest authentication MUST correspond
exactly to the username in the From header field of the SIP message.
However, there are many cases in which a user might manage multiple
accounts in the same administrative domain. Accordingly, provided
the authentication service is aware of the relationships between
these accounts, it might allow a user providing credentials for one
account to assert a username associated with another account
controlled by the user name. Furthermore, if the AoR asserted in the
From header field is anonymous (per RFC3323), then the proxy should
authenticate that the user is any valid user in the domain and insert
the signature over the From header field as usual.
Third, the authentication service MUST form the identity signature,
as described in Section 10, and add an Identity header to the request
containing this signature. After the Identity header has been added
to the request, the authentication service MUST also add an Identity-
Info header. The Identity-Info header contains a URI from which its
certificate can be acquired. Details are provided in section Section
Peterson & Jennings Expires November 15, 2004 [Page 8]
Internet-Draft SIP Identity May 2004
10.
Finally, the authentication service MUST forward the message
normally.
7.1 UAs acting as an Authentication service
There are some instances in which a user agent may hold the private
key of the domain Certificate for its address-of-record. In these
cases, the UA MAY perform the services, and add the headers, that the
authentication service would normally add.
8. Verifying Identity
When a user agent or proxy server receives a SIP message containing
an Identity header, it can inspect the signature to verify the
identity of the sender of the message. If an Identity header is not
present in a request, and one is required by local policy, then a 428
Use Identity response is sent. If an Identity header is not present
in a response, and one is required by local policy, then the
recipient of the response MUST communicate this lapse to its user,
and MAY immediately terminate any created dialog or ignore
transactions, as policy dictates.
In order to verify the identity of the sender of a message, the user
agent or proxy server MUST first acquire the certificate for the
signing domain. Implementations supporting this specification should
have some means of retaining domain certificates (in accordance with
normal practices for certificate lifetimes and revocation) in order
to prevent themselves from needlessly downloading the same
certificate every time a request from the same domain is received.
Certificates retained in this manner should be indexed by the URI
given in the Identity-Info header field value.
Provided that the domain certificate used to sign this message is
unknown, SIP entities discover this certificate by dereferencing the
Identity-Info header. The client processes this certificate in the
usual ways including checking that it has not expired, that the chain
is valid back to a trusted CA, and that it does not appear on
revocation lists.
Subsequently, the recipient MUST verify the signature in the Identity
header, and compare the identity of the signer (the subjectAltName of
the certificate) with the domain portion of the URI in the From
header field of the request as described in Section 11.
Additionally, the Date, Contact and Call-ID headers MUST be analyzed
in the manner described in Section 11; recipients that wish to verify
Identity signatures MUST support all of the operations described
Peterson & Jennings Expires November 15, 2004 [Page 9]
Internet-Draft SIP Identity May 2004
there. Any discrepancies or violations MUST be reported to the user.
When the originating user agent of a request receives a response
containing an Authenticated Identity Body (AIB, see [4]), it SHOULD
compare the identity in the From header field of the AIB of the
response with the original value of the To header field in the
request. If these represent different identities, the user agent
SHOULD render the identity in the AIB of the response to its user.
Note that a discrepancy in these identity fields is not necessary an
indication of a security breach; normal retargeting may simply have
directed the request to a different final destination. Implementers
therefore may consider it unnecessary to alert the user of a security
violation in this case.
9. Proxy Server Behavior
In most respects, a proxy server behaves normally when it receives a
SIP request or response containing an Identity header. This
mechanism is fully backwards-compatible with existing RFC3261 proxy
behavior. However, if a proxy intends to act as an authentication
service for responses to requests it receives, it must exhibit some
additional behavior to ensure that retargeting requests are handled
properly. Essentially, a proxy server MUST NOT provide an Identity
header for a request that it retargets to a different administrative
domain. It is the responsibility of that administrative domain to
provide its own identity assertion, if it can. However, proxying the
request to a remote domain where identity services may be provided
has its own problems - the originator of the request has no way to
know whether the request was legitimately retargeted, or if any
responses it receives from the new domain are spoofed or otherwise
illegitimate. It is thus much more secure for the proxy server to
redirect in cases where it might otherwise retarget.
If a proxy server intends to act as an authentication service for a
response to a SIP request that it is forwarding, it MUST do ALL of
the following:
Ascertain if it is responsible for the domain indicated in the
Request-URI field of the request. If not, it MUST forward the
request normally. If so, it must then:
Determine the route set of targets to which this request might be
forwarded. From that target list, the proxy must determine which
contact addresses are associated with persistent TLS connections
that have been established to the proxy server. It places all
such targets (if any) into a primary route set for the call, and
places remaining targets into a secondary route set for the call.
It performs this operations irrespective of any qvalues associated
Peterson & Jennings Expires November 15, 2004 [Page 10]
Internet-Draft SIP Identity May 2004
with the contact addresses.
The proxy then MUST follow normal administrative policies for
forwarding the request to any targets in the primary route set
(which may involve qvalue calculations or any other behaviors
described in RFC3261). Before the proxy forwards any responses to
this request upstream, the proxy server MUST act as an
authentication service (as described in Section 7), adding an
Identity and Identity-Info header.
If there are no appropriate responses from the primary route set
for the proxy server to forward upstream, it moves on to the
secondary route set (essentially, the proxy server forks
sequentially, exploring the primary route set as one cluster, and
then moves on to the secondary set). The proxy server is unable
to act as an authentication service for those contact addresses.
Accordingly, the proxy server MUST NOT explore these route targets
itself; instead, it MUST redirect the request with a 3xx class
response containing the contact addresses that constitute the
secondary route set.
In order to build the primary route set for the call, the location
service associated with the domain of the proxy server MUST implement
additional intelligence to determine which contact addresses are
associated with a persistent TLS connection - this is used to
determine when the server should act as a proxy and when it should
redirect. When the SIP registrar receives a REGISTER request over a
persistent TLS connection, it MUST compare any contact addresses
appearing in Contact header fields to the topmost Via header field in
the REGISTER request. If the host portion of a contact address
matches the hostname given in the topmost Via header field, then that
contact address is said to be "associated" with the persistent TLS
connection over which the REGISTER was received. Location services
must mark or flag these contact addresses accordingly, and remember
the identity that the user provided when they were authenticated
during registration. Only these contact addresses are added to the
primary route set by a proxy server that wishes to act as an
authentication service for responses.
Additionally, domain policy may require proxy servers to inspect and
verify the identity provided in SIP requests. The proxy server may
wish to ascertain the identity of the sender of the message to
provide spam prevention or call control services. Even if a proxy
server does not act as an authentication service, it MAY verify the
signature present in an Identity header before it makes a forwarding
decision for a request. Proxy servers MUST NOT remove or modify the
Identity or Identity-Info headers.
Peterson & Jennings Expires November 15, 2004 [Page 11]
Internet-Draft SIP Identity May 2004
10. Header Syntax
This document specifies two new SIP headers: Identity and Identity-
Info. Each of these headers can appear only once in a SIP message.
Identity = "Identity" HCOLON signed-identity-digest
signed-identity-digest = LDQUOT 32LHEX RDQUOT
Identity-Info = "Identity-Info" HCOLON ident-info
Ident-info = LAQUOT absoluteURI RAQUOT
To create the contents of the signed-identity-digest, the following
elements of a SIP message MUST placed in the string in the order
specified here, separated by a colon:
The AoR of the UA sending the message, or the 'identity field'.
For a request, this is the addr-spec from the From header field;
for responses, the addr-spec of the To header field. This needs
to be in lower case and to be represented as a SIP URI.
The callid from Call-Id header field.
The Date header field, with exactly one space each for each SP and
the weekday and month items case set as shown in BNF in 3261. The
first letter is upper case and the rest of the letters are lower
case.
The addr-spec component of the Contact header field value.
The body content of the message with the bits exactly as they are
in the message.
For more information on the security properties of these headers, and
why their inclusion mitigates replay attacks, see [4]. The precise
formulation of this digest-string is, therefore:
digest-string = addr-spec HCOLON callid HCOLON SIP-Date
HCOLON addr-spec HCOLON message-body
Note again that the first addr-spec MUST be taken from the From
header field value, and the second addr-spec from the Contact header
field value.
After the digest-string is formed, it MUST be hashed and signed with
the certificate for the domain, as follows: compute the results of
signing this string with sha1WithRSAEncryption as described in RFC
3370 and base64 encode the results as specified in RFC 3548. Put the
result in the Identity header.
Peterson & Jennings Expires November 15, 2004 [Page 12]
Internet-Draft SIP Identity May 2004
Note on this choice: Assuming a 1024 bit RSA key, the raw signature
will result in about 170 octets of base64 encoded data. For
comparison's sake, a typical HTTP Digest Authorization header (such
as those used in RFC3261) with no cnonce is around 180 octets. From
a speed point of view, a 2.8GHz Intel processor does somewhere in the
range of 250 RSA 1024 bits signs per second or 1200 RSA 512 bits
signs; verifies are roughly 10 times faster. Hardware accelerator
cards are available that speed this up.
The Identity-Info header MUST contain either an HTTPS URI or a SIPS
URI. If it contains an HTTPS URI, the URI must dereference to a
resource that contains a single MIME body containing the certificate
of the authentication service. If it is a SIPS URI, then the
authentication service intends for a user agent that wishes to fetch
the certificate to form a TLS connection to that URI, acquire the
certificate during normal TLS negotiation, and close the connection.
This document adds the following entries to Table 2 of [1]:
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
Identity a - o - o o -
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
o o o - - -
Identity-Info a - o - o o -
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
o o o - - -
11. Security Considerations
This document describes a mechanism which provides a signature over
the Contact, Date, Call-ID, and 'identity fields' (addr-spec of the
From header field for requests, and To header field for responses) of
SIP messages. While a signature over the identity field alone would
be sufficient to secure a URI alone, the additional headers provide
replay protection and reference integrity necessary to make sure that
the Identity header will not be used in cut-and-paste attacks. In
general, the considerations related to the security of these headers
are the same as those given in RFC3261 for including headers in
tunneled 'message/sip' MIME bodies (see Section 23 in particular).
Peterson & Jennings Expires November 15, 2004 [Page 13]
Internet-Draft SIP Identity May 2004
The identity field indicates the identity of the sender of the
message. The Date and Contact headers provide reference integrity
and replay protection, as described in RFC3261 Section 23.4.2.
Implementations of this specification MUST NOT consider valid a
request with an outdated Date header field (the RECOMMENDED interval
is that the Date header must indicate a time within 3600 seconds of
the receipt of a message). Implementations MUST also record Call-IDs
received in valid requests containing an Identity header, and MUST
remember those Call-IDs for at least the duration of a single Date
interval (i.e. 3600 seconds). Accordingly, if an Identity header is
replayed within the Date interval, receivers will recognize that it
is invalid because of a Call-ID duplication; if an Identity header is
replayed after the Date interval, receivers will recognize that it is
invalid because the Date is stale. The Contact header field is
included to tie the Identity header to a particular device instance
that generated the request. Were an active attacker to intercept a
request containing an Identity header, and cut-and-paste the Identity
header field into their own request (reusing the identity fields,
Contact, Date and Call-ID fields that appear in the original
message), they would not be eligible to receive SIP requests from the
called user agent, since those requests are routed to the URI
identified in the Contact header field.
This mechanism also provides a signature over the bodies of SIP
requests. The most important reason for doing so is to protect SDP
bodies carried in SIP requests. There is little purpose in
establishing the identity of the user agent that provided the
signaling if a man-in-the-middle can change the SDP and direct media
to an alternate address. Note however that this is not perfect end-
to-end security. The authentication service itself, when
instantiated at a intermediary, can change the SDP (and SIP headers,
for that matter) before providing a signature. Thus, while this
mechanism reduces the chance that a man-in-the-middle will interfere
with sessions, it does not eliminate it entirely. Since it is
assumed that the user trusts their local domain to vouch for their
security, they must also trust the service not to violate the
integrity of their message bodies without good reason.
Users SHOULD NOT provide credentials to an authentication service to
which they cannot initiate a direct connection, preferably one
secured by TLS. If a user does not receive a certificate from the
authentication service over this TLS that corresponds to the expected
domain (especially when they receive a challenge via a mechanism such
as Digest), then it is possible that a rogue server is attempting to
pose as a authentication service for a domain that it does not
control, possibly in an attempt to collect shared secrets for that
domain. If a user cannot connect directly to the desired
authentication service, the user SHOULD at least use a SIPS URI to
Peterson & Jennings Expires November 15, 2004 [Page 14]
Internet-Draft SIP Identity May 2004
ensure that mutual TLS authentication will be used to reach the
remote server.
Relying on an Identity header generated by a remote administrative
domain assumes that the issuing domain uses some trustworthy practice
to authenticate its users. However, it is possible that some domains
will implement policies that effectively make users unaccountable
(such as accepting unauthenticated registrations from arbitrary
users). The value of an Identity header for such domains is
questionable.
Since a domain certificate is used by an authentication service
(rather than individual certificates for each identity), certain
problems can arise with name subordination. For example, if an
authentication service holds a common certificate for the hostname
'sip.atlanta.com', can it legitimately sign a token containing an
identity of 'sip:alice@atlanta.com'? It is difficult for the
recipient of a request to ascertain whether or not 'sip.atlanta.com'
is authoritative for the 'atlanta.com' domain unless the recipient
has some foreknowledge of the administration of 'atlanta.com'.
Therefore, it is RECOMMENDED that user agent recipients of
authentication tokens notify end users if there is ANY discrepancy
between the subjectAltName of the signers certificate and the
identity within the authentication token. Minor discrepancies MAY be
characterized as such. Additionally, relying parties MAY follow the
procedures in RFC3264 to look up on the domain portion of the
identity in the From header field in the DNS, and compare the SIP
services listed for that domain with the subjectAltName of the
certificate; this can give the relying party a better sense of the
canonical SIP services for that domain.
Because the domain certificates that can be used by authentication
services need to assert only the hostname of the authentication
service, existing certificate authorities can provide adequate
certificates for this mechanism. However, not all proxy servers and
user agents will be able support the root certificates of all
certificate authorities, and moreover there are some significant
differences in the policies by which certificate authorities issue
their certificates. This document makes no recommendations for the
usage of particular certificate authorities, nor does it describe any
particular policies that certificate authorities should follow, but
it is anticipated that operational experience will create de facto
standards for the purposes of authentication services. Some
federations of service providers, for example, might only trust
certificates that have been provided by a certificate authority
operated by the federation.
Peterson & Jennings Expires November 15, 2004 [Page 15]
Internet-Draft SIP Identity May 2004
12. IANA Considerations
This document specifies two new SIP headers: Identity and Identity-
Info. Their syntax is given in Section 10. This document requests
that IANA add these headers to the SIP header registry.
This document also defines a new SIP response code, 428 "Use
Identity", as described in Section 8.
Normative References
[1] 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.
[2] Bradner, S., "Key words for use in RFCs to indicate requirement
levels", RFC 2119, March 1997.
[3] Peterson, J., "A Privacy Mechanism for the Session Initiation
Protocol (SIP)", RFC 3323, November 2002.
[4] Peterson, J., "SIP Authenticated Identity Body (AIB) Format",
draft-ietf-sip-authid-body-01 (work in progress), October 2002.
Informative References
[5] Kohl, J. and C. Neumann, "The Kerberos Network Authentication
Service (V5)", RFC 1510, September 1993.
[6] 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.
[7] Sparks, R., "Internet Media Type message/sipfrag", RFC 3420,
November 2002.
[8] Olson, S., "A Mechanism for Content Indirection in SIP
Messages", draft-ietf-sip-content-indirect-mech-01 (work in
progress), August 2002.
[9] Freed, N., "Definition of the URL MIME External-Body Access-
Type", RFC 2017, November 1996.
Peterson & Jennings Expires November 15, 2004 [Page 16]
Internet-Draft SIP Identity May 2004
Authors' Addresses
Jon Peterson
NeuStar, Inc.
1800 Sutter St
Suite 570
Concord, CA 94520
US
Phone: +1 925/363-8720
EMail: jon.peterson@neustar.biz
URI: http://www.neustar.biz/
Cullen Jennings
Cisco Systems
170 West Tasman Drive
MS: SJC-21/2
San Jose, CA 95134
USA
Phone: +1 408 902-3341
EMail: fluffy@cisco.com
Appendix A. Acknowledgments
The authors would like to thank Eric Rescorla, Rohan Mahy, Robert
Sparks, Jonathan Rosenberg, Mark Watson and Patrik Faltstrom for
their comments.
Appendix B. Changelog
Changes from draft-ietf-sip-identity-01:
- Completely changed underlying mechanism - instead of using an
AIB, the mechanism now recommends the use of the Identity header
and Identity-Info header
- Numerous other changes resulting from the above
- Various other editorial corrections
Changes from draft-peterson-sip-identity-01:
- Split off child draft-ietf-sip-authid-body-00 for defining of
the AIB
- Clarified scope in introduction
Peterson & Jennings Expires November 15, 2004 [Page 17]
Internet-Draft SIP Identity May 2004
- Removed a lot of text that was redundant with RFC3261
(especially about authentication practices)
- Added mention of content indirection mechanism for adding token
to requests and responses
- Improved Security Considerations (added piece about credential
strength)
Changes from draft-peterson-sip-identity-00:
- Added a section on authenticated identities in responses
- Removed hostname convention for authentication services
- Added text about using 'message/sip' or 'message/sipfrag' in
authenticated identity bodies, also RECOMMENDED a few more headers
in sipfrags to increase reference integrity
- Various other editorial corrections
Peterson & Jennings Expires November 15, 2004 [Page 18]
Internet-Draft SIP Identity May 2004
Full Copyright Statement
Copyright (C) The Internet Society (2004). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Peterson & Jennings Expires November 15, 2004 [Page 19]