idnits 2.17.00 (12 Aug 2021) /tmp/idnits51091/draft-jennings-stir-rfc4474bis-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 2 instances of too long lines in the document, the longest one being 12 characters in excess of 72. -- The document has examples using IPv4 documentation addresses according to RFC6890, but does not use any IPv6 documentation addresses. Maybe there should be IPv6 examples, too? Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 947 has weird spacing: '... where prox...' == Line 955 has weird spacing: '... where prox...' == Line 963 has weird spacing: '... where prox...' == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). == The document seems to contain a disclaimer for pre-RFC5378 work, but was first submitted on or after 10 November 2008. The disclaimer is usually necessary only for documents that revise or obsolete older RFCs, and that take significant amounts of text from those RFCs. If you can contact all authors of the source material and they are willing to grant the BCP78 rights to the IETF Trust, you can and should remove the disclaimer. Otherwise, the disclaimer is needed and you can ignore this comment. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (October 21, 2013) is 3133 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Looks like a reference, but probably isn't: '12' on line 279 -- Looks like a reference, but probably isn't: '15' on line 505 == Missing Reference: 'RFC2392' is mentioned on line 698, but not defined == Missing Reference: 'TBD' is mentioned on line 757, but not defined -- Looks like a reference, but probably isn't: '6' on line 824 -- Looks like a reference, but probably isn't: '1' on line 824 == Unused Reference: 'I-D.cooper-iab-secure-origin-00' is defined on line 2005, but no explicit reference was found in the text == Unused Reference: 'I-D.peterson-sipping-retarget' is defined on line 2016, but no explicit reference was found in the text == Unused Reference: 'I-D.rescorla-callerid-fallback' is defined on line 2021, but no explicit reference was found in the text == Unused Reference: 'RFC3761' is defined on line 2047, but no explicit reference was found in the text == Unused Reference: 'RFC4475' is defined on line 2058, but no explicit reference was found in the text ** Downref: Normative reference to an Informational RFC: RFC 2818 ** Obsolete normative reference: RFC 3280 (Obsoleted by RFC 5280) ** Obsolete normative reference: RFC 3548 (Obsoleted by RFC 4648) ** Obsolete normative reference: RFC 4234 (Obsoleted by RFC 5234) == Outdated reference: A later version (-02) exists of draft-peterson-secure-origin-ps-00 -- No information found for draft-rescorla-callerid-fallback - is the name correct? -- Obsolete informational reference (is this intentional?): RFC 2234 (Obsoleted by RFC 4234) -- Obsolete informational reference (is this intentional?): RFC 3761 (Obsoleted by RFC 6116, RFC 6117) -- Obsolete informational reference (is this intentional?): RFC 4474 (Obsoleted by RFC 8224) Summary: 5 errors (**), 0 flaws (~~), 14 warnings (==), 10 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group J. Peterson 3 Internet-Draft NeuStar 4 Intended status: Standards Track C. Jennings 5 Expires: April 24, 2014 Cisco 6 E. Rescorla 7 RTFM, Inc. 8 October 21, 2013 10 Authenticated Identity Management in the Session Initiation Protocol 11 (SIP) 12 draft-jennings-stir-rfc4474bis-00 14 Abstract 16 The baseline security mechanisms in the Session Initiation Protocol 17 (SIP) are inadequate for cryptographically assuring the identity of 18 the end users that originate SIP requests, especially in an 19 interdomain context. This document defines a mechanism for securely 20 identifying originators of SIP requests. It does so by defining new 21 SIP header fields for conveying a signature used for validating the 22 identity, and for conveying a reference to the credentials of the 23 signer. 25 Status of This Memo 27 This Internet-Draft is submitted in full conformance with the 28 provisions of BCP 78 and BCP 79. 30 Internet-Drafts are working documents of the Internet Engineering 31 Task Force (IETF). Note that other groups may also distribute 32 working documents as Internet-Drafts. The list of current Internet- 33 Drafts is at http://datatracker.ietf.org/drafts/current/. 35 Internet-Drafts are draft documents valid for a maximum of six months 36 and may be updated, replaced, or obsoleted by other documents at any 37 time. It is inappropriate to use Internet-Drafts as reference 38 material or to cite them other than as "work in progress." 40 This Internet-Draft will expire on April 24, 2014. 42 Copyright Notice 44 Copyright (c) 2013 IETF Trust and the persons identified as the 45 document authors. All rights reserved. 47 This document is subject to BCP 78 and the IETF Trust's Legal 48 Provisions Relating to IETF Documents 49 (http://trustee.ietf.org/license-info) in effect on the date of 50 publication of this document. Please review these documents 51 carefully, as they describe your rights and restrictions with respect 52 to this document. Code Components extracted from this document must 53 include Simplified BSD License text as described in Section 4.e of 54 the Trust Legal Provisions and are provided without warranty as 55 described in the Simplified BSD License. 57 This document may contain material from IETF Documents or IETF 58 Contributions published or made publicly available before November 59 10, 2008. The person(s) controlling the copyright in some of this 60 material may not have granted the IETF Trust the right to allow 61 modifications of such material outside the IETF Standards Process. 62 Without obtaining an adequate license from the person(s) controlling 63 the copyright in such materials, this document may not be modified 64 outside the IETF Standards Process, and derivative works of it may 65 not be created outside the IETF Standards Process, except to format 66 it for publication as an RFC or to translate it into languages other 67 than English. 69 Table of Contents 71 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 72 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 73 3. Background . . . . . . . . . . . . . . . . . . . . . . . . . 4 74 3.1. Intermediary Authentication Services . . . . . . . . . . 6 75 4. Overview of Operations . . . . . . . . . . . . . . . . . . . 6 76 5. Signature Generation and Validation . . . . . . . . . . . . . 7 77 5.1. Authentication Service Behavior . . . . . . . . . . . . . 7 78 5.1.1. Identity within a Dialog and Retargeting . . . . . . 10 79 5.2. Verifier Behavior . . . . . . . . . . . . . . . . . . . . 11 80 6. Credentials . . . . . . . . . . . . . . . . . . . . . . . . . 13 81 6.1. Credential Use by the Authentication Service . . . . . . 13 82 6.2. Credential Use by the Verification Service . . . . . . . 14 83 6.3. Handling Identity-Info URIs . . . . . . . . . . . . . . . 14 84 7. Identity and Telephone Numbers . . . . . . . . . . . . . . . 16 85 8. Considerations for User Agents . . . . . . . . . . . . . . . 17 86 9. Considerations for Proxy Servers . . . . . . . . . . . . . . 18 87 10. Header Syntax . . . . . . . . . . . . . . . . . . . . . . . . 18 88 11. Compliance Tests and Examples . . . . . . . . . . . . . . . . 22 89 11.1. Identity-Info with a Singlepart MIME body . . . . . . . 22 90 11.2. Identity for a Request with No MIME Body or Contact . . 25 91 12. Privacy Considerations . . . . . . . . . . . . . . . . . . . 28 92 13. Security Considerations . . . . . . . . . . . . . . . . . . . 28 93 13.1. Handling of digest-string Elements . . . . . . . . . . . 29 94 13.2. Display-Names and Identity . . . . . . . . . . . . . . . 31 95 13.3. Securing the Connection to the Authentication Service . 32 96 13.4. Domain Names, Certificates and Subordination . . . . . . 33 97 13.5. Authorization and Transitional Strategies . . . . . . . 35 98 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36 99 14.1. Header Field Names . . . . . . . . . . . . . . . . . . . 36 100 14.2. 428 'Use Identity Header' Response Code . . . . . . . . 36 101 14.3. 436 'Bad Identity-Info' Response Code . . . . . . . . . 37 102 14.4. 437 'Unsupported Certificate' Response Code . . . . . . 37 103 14.5. 438 'Invalid Identity Header' Response Code . . . . . . 37 104 14.6. Identity-Info Parameters . . . . . . . . . . . . . . . . 37 105 14.7. Identity-Info Algorithm Parameter Values . . . . . . . . 38 106 15. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 38 107 16. Original RFC 4474 Requirements . . . . . . . . . . . . . . . 38 108 17. Changes from RFC4474 . . . . . . . . . . . . . . . . . . . . 39 109 17.1. Motivation for Changes . . . . . . . . . . . . . . . . . 39 110 17.2. Changes to the Identity-Info Header . . . . . . . . . . 41 111 17.3. Changes to the Identity Header . . . . . . . . . . . . . 42 112 18. References . . . . . . . . . . . . . . . . . . . . . . . . . 43 113 18.1. Normative References . . . . . . . . . . . . . . . . . . 43 114 18.2. Informative References . . . . . . . . . . . . . . . . . 43 115 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 45 117 1. Introduction 119 This document provides enhancements to the existing mechanisms for 120 authenticated identity management in the Session Initiation Protocol 121 (SIP, RFC 3261 [RFC3261]). An identity, for the purposes of this 122 document, is defined as either a SIP URI, commonly a canonical 123 address-of-record (AoR) employed to reach a user (such as 124 'sip:alice@atlanta.example.com'), or a telephone number, which can be 125 represented as either a TEL URI or as the user portion of a SIP URI. 127 RFC 3261 [RFC3261] stipulates several places within a SIP request 128 where a user can express an identity for themselves, notably the 129 user-populated From header field. However, the recipient of a SIP 130 request has no way to verify that the From header field has been 131 populated appropriately, in the absence of some sort of cryptographic 132 authentication mechanism. 134 RFC 3261 [RFC3261] specifies a number of security mechanisms that can 135 be employed by SIP user agents (UAs), including Digest, Transport 136 Layer Security (TLS), and S/MIME (implementations may support other 137 security schemes as well). However, few SIP user agents today 138 support the end-user certificates necessary to authenticate 139 themselves (via S/MIME, for example), and furthermore Digest 140 authentication is limited by the fact that the originator and 141 destination must share a prearranged secret. It is desirable for SIP 142 user agents to be able to send requests to destinations with which 143 they have no previous association -- just as in the telephone network 144 today, one can receive a call from someone with whom one has no 145 previous association, and still have a reasonable assurance that the 146 person's displayed calling party number (and/or Caller-ID) is 147 accurate. A cryptographic approach, like the one described in this 148 document, can provide a much stronger and less spoofable assurance of 149 identity than the telephone network provides today. 151 2. Terminology 153 In this document, the key words "MUST", "MUST NOT", "REQUIRED", 154 "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT 155 RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as 156 described in RFC 2119 [RFC2119] and RFC 6919 [RFC6919]. 158 3. Background 160 The usage of many SIP applications and services is governed by 161 authorization policies. These policies may be automated, or they may 162 be applied manually by humans. An example of the latter would be an 163 Internet telephone application that displays the calling party number 164 (and/or Caller-ID) of a caller, which a human may review (making a 165 policy decision) before answering a call. An example of the former 166 would be a voicemail service that compares the identity of the caller 167 to a whitelist before determining whether it should allow the caller 168 access to recorded messages. In both of these cases, attackers might 169 attempt to circumvent these authorization policies through 170 impersonation. Since the primary identifier of the sender of a SIP 171 request, the From header field, can be populated arbitrarily by the 172 controller of a user agent, impersonation is very simple today. The 173 mechanism described in this document provides a strong identity 174 system for SIP requests in which authorization policies cannot be 175 circumvented by impersonation. 177 This document proposes an authentication architecture for SIP in 178 which requests are processed by a logical authentication service that 179 may be implemented as part of a user agent or as a proxy server. 180 Once a message has been authenticated, the service then adds new 181 cryptographic information to requests to communicate to other SIP 182 entities that the sending user has been authenticated and its use of 183 the From header field has been authorized. 185 But authorized by whom? Identities are issued to users by 186 authorities. When a new user becomes associated with example.com, 187 the administrator of the SIP service for that domain will issue them 188 an identity in that namespace, such as alice@example.com. Alice may 189 then send REGISTER requests to example.com that make her user agents 190 eligible to receive requests for sip:alice@example.com. In some 191 cases, Alice may be the owner of the domain herself, and may issue 192 herself identities as she chooses. But ultimately, it is the 193 controller of the SIP service at example.com that must be responsible 194 authorizing the use of names in the example.com domain. Therefore, 195 the credentials needed to prove this authorization must ultimately 196 derive from the domain owner: either a user agent gives requests to 197 the domain name owner in order for them to be signed by the domain 198 owner's credentials, or the user agent must possess credentials that 199 prove in some fashion that the domain owner has given the user agent 200 the right to a name. 202 The situation is however more complicated for telephone numbers. 203 Authority over telephone numbers does not correspond directly to 204 Internet domains. While a user could register at a SIP domain with a 205 username that corresponds to a telephone number, any connection 206 between the administrator of that domain and the assignment of 207 telephone numbers is not reflected on the Internet. Telephone 208 numbers do not share the domain-scope property described above, as 209 they are dialed without any domain component. This document thus 210 assumes the existence of a separate means of establishing authority 211 over telephone numbers, for cases where the telephone number is the 212 identity of the user. As with SIP URIs, the necessary credentials to 213 prove authority for a name might reside either in the endpoint or at 214 some intermediary. 216 This document specifies a means of sharing a cryptographic assurance 217 of end-user SIP identity in an interdomain or intradomain context 218 that is based on the authentication service adding a SIP header, the 219 Identity header. In order to assist in the validation of this 220 assurance, this specification also describes an Identity-Info header 221 that can be used by the recipient of a request to recover the 222 credentials of the signer. Note that the scope of this document is 223 limited to providing this identity assurance for SIP requests; 224 solving this problem for SIP responses is outside the scope of this 225 work. 227 This specification allows either a user agent or a proxy server to 228 provide identity services and to verify identities. To maximize end- 229 to-end security, it is obviously preferable for end-users to acquire 230 their own credentials; if they do, they can act as an authentication 231 service. However, end-user credentials may be neither practical nor 232 affordable, given the potentially large number of SIP user agents 233 (phones, PCs, laptops, PDAs, gaming devices) that may be employed by 234 a single user. In such environments, synchronizing keying material 235 across multiple devices may be very complex and requires quite a good 236 deal of additional endpoint behavior. Managing several credentials 237 for the various devices could also be burdensome. This trade-off 238 needs to be understood by implementers of this specification. 240 3.1. Intermediary Authentication Services 242 In cases where a user agent does not possess its own credentials to 243 sign an Identity header, the user agent must send its request through 244 an intermediary that will provide a signed Identity header based on 245 the contents of the request. This requires, among other things, that 246 intermediaries have some means of authenticating the user agents 247 sending requests. 249 All RFC 3261 [RFC3261] compliant user agents support Digest 250 authentication, which utilizes a shared secret, as a means for 251 authenticating themselves to a SIP registrar. Registration allows a 252 user agent to express that it is an appropriate entity to which 253 requests should be sent for a particular SIP AoR URI (e.g., 254 'sip:alice@atlanta.example.com'). For such SIP URIs, by the 255 definition of identity used in this document, registration proves the 256 identity of the user to a registrar. Similar checks might be 257 performed for telephone numbers as identities. This is of course 258 only one manner in which a domain might determine how a particular 259 user is authorized to populate the From header field; as an aside, 260 for other sorts of URIs in the From (like anonymous URIs), other 261 authorization policies would apply. 263 RFC 3261 [RFC3261] already describes an intermediary architecture 264 very similar to the one proposed in this document in 265 Section 26.3.2.2, in which a user agent authenticates itself to a 266 local proxy server, which in turn authenticates itself to a remote 267 proxy server via mutual TLS, creating a two-link chain of transitive 268 authentication between the originator and the remote domain. While 269 this works well in some architectures, there are a few respects in 270 which this is impractical. For one, transitive trust is inherently 271 weaker than an assertion that can be validated end-to-end. It is 272 possible for SIP requests to cross multiple intermediaries in 273 separate administrative domains, in which case transitive trust 274 becomes even less compelling. 276 One solution to this problem is to use 'trusted' SIP intermediaries 277 that assert an identity for users in the form of a privileged SIP 278 header. A mechanism for doing so (with the P-Asserted-Identity 279 header) is given in [12]. However, this solution allows only hop- 280 by-hop trust between intermediaries, not end-to-end cryptographic 281 authentication, and it assumes a managed network of nodes with strict 282 mutual trust relationships, an assumption that is incompatible with 283 widespread Internet deployment. 285 4. Overview of Operations 286 This section provides an informative (non-normative) high-level 287 overview of the mechanisms described in this document. 289 Imagine the case where Alice, who has the home proxy of example.com 290 and the address-of-record sip:alice@example.com, wants to communicate 291 with sip:bob@example.org. 293 Alice generates an INVITE and places her identity in the From header 294 field of the request. She then sends an INVITE over TLS to an 295 authentication service proxy for her domain. 297 The authentication service authenticates Alice (possibly by sending a 298 Digest authentication challenge) and validates that she is authorized 299 to assert the identity that is populated in the From header field. 300 This value may be Alice's AoR, or it may be some other value that the 301 proxy server has authority over, such as a telephone number. It then 302 computes a hash over some particular headers, including the From 303 header field (and, optionally the body) in the message. This hash is 304 signed with the appropriate credential (example.com, in the 305 sip:alice@example.com case) and inserted in a new header field in the 306 SIP message, the 'Identity' header. 308 The proxy, as the holder of the private key for its domain, is 309 asserting that the originator of this request has been authenticated 310 and that she is authorized to claim the identity (the SIP address- 311 of-record) that appears in the From header field. The proxy also 312 inserts a companion header field, Identity-Info, that tells Bob how 313 to acquire keying material necessary to validate its credentials, if 314 he doesn't already have it. 316 When Bob's domain receives the request, it verifies the signature 317 provided in the Identity header, and thus can validate that the 318 authority over the identity in the From header field authenticated 319 the user, and permitted the user to assert that From header field 320 value. This same validation operation may be performed by Bob's user 321 agent server (UAS). 323 5. Signature Generation and Validation 325 5.1. Authentication Service Behavior 327 This document defines a role for SIP entities called an 328 authentication service. The authentication service role can be 329 instantiated by a proxy server or a user agent. Any entity that 330 instantiates the authentication service role MUST possess the private 331 key of one or more credentials that can be used to sign for a domain 332 or a telephone number (see Section 6.1). Intermediaries that 333 instantiate this role MUST be capable of authenticating one or more 334 SIP users who can register for that identity. Commonly, this role 335 will be instantiated by a proxy server, since these entities are more 336 likely to have a static hostname, hold corresponding credentials, and 337 have access to SIP registrar capabilities that allow them to 338 authenticate users. It is also possible that the authentication 339 service role might be instantiated by an entity that acts as a 340 redirect server, but that is left as a topic for future work. 342 SIP entities that act as an authentication service MUST add a Date 343 header field to SIP requests if one is not already present (see 344 Section 10 for information on how the Date header field assists 345 verifiers). Similarly, authentication services MUST add a Content- 346 Length header field to SIP requests if one is not already present; 347 this can help verifiers to double-check that they are hashing exactly 348 as many bytes of message-body as the authentication service when they 349 verify the message. 351 Entities instantiating the authentication service role perform the 352 following steps, in order, to generate an Identity header for a SIP 353 request: 355 Step 1: 357 The authentication service MUST extract the identity of the sender 358 from the request. The authentication service takes this value from 359 the From header field; this AoR will be referred to here as the 360 'identity field'. If the identity field contains a SIP or SIP Secure 361 (SIPS) URI, and the user portion is not a telephone number, the 362 authentication service MUST extract the hostname portion of the 363 identity field and compare it to the domain(s) for which it is 364 responsible (following the procedures in RFC 3261 [RFC3261], 365 Section 16.4), used by a proxy server to determine the domain(s) for 366 which it is responsible). If the identity field uses the TEL URI 367 scheme, or the identity field is a SIP or SIPS URI with a telephone 368 number in the user portion, the authentication service determines 369 whether or not it is responsible for this telephone number; see 370 Section 7 for more information. If the authentication service is not 371 authoritative for the identity in question, it SHOULD process and 372 forward the request normally, but it MUST NOT add an Identity header; 373 see below for more information on authentication service handling of 374 an existing Identity header. 376 Step 2: 378 The authentication service MUST determine whether or not the sender 379 of the request is authorized to claim the identity given in the 380 identity field. In order to do so, the authentication service MUST 381 authenticate the sender of the message. Some possible ways in which 382 this authentication might be performed include: 384 If the authentication service is instantiated by a SIP 385 intermediary (proxy server), it may challenge the request with a 386 407 response code using the Digest authentication scheme (or 387 viewing a Proxy-Authentication header sent in the request, which 388 was sent in anticipation of a challenge using cached credentials, 389 as described in RFC 3261 [RFC3261], Section 22.3). Note that if 390 that proxy server is maintaining a TLS connection with the client 391 over which the client had previously authenticated itself using 392 Digest authentication, the identity value obtained from that 393 previous authentication step can be reused without an additional 394 Digest challenge. 396 If the authentication service is instantiated by a SIP user agent, 397 a user agent can be said to authenticate its user on the grounds 398 that the user can provision the user agent with the private key of 399 the credential, or preferably by providing a password that unlocks 400 said private key. 402 Authorization of the use of a particular username or telephone number 403 in the user part of the From header field is a matter of local policy 404 for the authentication service, see Section 6.1 for more information. 406 Note that this check is performed on the addr-spec in the From header 407 field (e.g., the URI of the sender, like 408 'sip:alice@atlanta.example.com'); it does not convert the display- 409 name portion of the From header field (e.g., 'Alice Atlanta'). 410 Authentication services MAY check and validate the display-name as 411 well, and compare it to a list of acceptable display-names that may 412 be used by the sender; if the display-name does not meet policy 413 constraints, the authentication service MUST return a 403 response 414 code. The reason phrase should indicate the nature of the problem; 415 for example, "Inappropriate Display Name". However, the display-name 416 is not always present, and in many environments the requisite 417 operational procedures for display-name validation may not exist. 418 For more information, see Section 13.2. 420 Step 3: 422 The authentication service SHOULD ensure that any preexisting Date 423 header in the request is accurate. Local policy can dictate 424 precisely how accurate the Date must be; a RECOMMENDED maximum 425 discrepancy of ten minutes will ensure that the request is unlikely 426 to upset any verifiers. If the Date header contains a time different 427 by more than ten minutes from the current time noted by the 428 authentication service, the authentication service SHOULD reject the 429 request. This behavior is not mandatory because a user agent client 430 (UAC) could only exploit the Date header in order to cause a request 431 to fail verification; the Identity header is not intended to provide 432 a source of non-repudiation or a perfect record of when messages are 433 processed. Finally, the authentication service MUST verify that the 434 Date header falls within the validity period of its credential. For 435 more information on the security properties associated with the Date 436 header field value, see Section 10. 438 [TBD: Should consider a lower threshold than ten minutes? With the 439 removal of other elements from the sig, that's a lot of leeway.] 441 Step 4: 443 The authentication service MAY form an identity-reliance signature 444 and add an Identity-Reliance header to the request containing this 445 signature. The Identity-Reliance header provides body security 446 properties that are useful for non-INVITE transactions, and in 447 environments where body security of INVITE transactions is necessary. 448 Details on the generation of this header is provided in Section 10. 450 Step 5: 452 The authentication service MUST form the identity signature and add 453 an Identity header to the request containing this signature. After 454 the Identity header has been added to the request, the authentication 455 service MUST also add an Identity-Info header. The Identity-Info 456 header contains a URI from which its credential can be acquired; see 457 Section 6.3 for more on credential acquisition. Details on the 458 syntax of both of these headers are provided in Section 10. 460 Finally, the authentication service MUST forward the message 461 normally. 463 5.1.1. Identity within a Dialog and Retargeting 465 Retargeting is broadly defined as the alteration of the Request-URI 466 by intermediaries. More specifically, retargeting supplants the 467 original target URI with one that corresponds to a different user, a 468 user that is not authorized to register under the original target 469 URI. By this definition, retargeting does not include translation of 470 the Request-URI to a contact address of an endpoint that has 471 registered under the original target URI, for example. 473 When a dialog-forming request is retargeted, this can cause a few 474 wrinkles for the Identity mechanism when it is applied to requests 475 sent in the backwards direction within a dialog. This section 476 provides some non-normative considerations related to this case. 478 When a request is retargeted, it may reach a SIP endpoint whose user 479 is not identified by the URI designated in the To header field value. 480 The value in the To header field of a dialog-forming request is used 481 as the From header field of requests sent in the backwards direction 482 during the dialog, and is accordingly the header that would be signed 483 by an authentication service for requests sent in the backwards 484 direction. In retargeting cases, if the URI in the From header does 485 not identify the sender of the request in the backwards direction, 486 then clearly it would be inappropriate to provide an Identity 487 signature over that From header. As specified above, if the 488 authentication service is not responsible for the domain in the From 489 header field of the request, it MUST NOT add an Identity header to 490 the request, and it should process/forward the request normally. 492 Any means of anticipating retargeting, and so on, is outside the 493 scope of this document, and likely to have equal applicability to 494 response identity as it does to requests in the backwards direction 495 within a dialog. Consequently, no special guidance is given for 496 implementers here regarding the 'connected party' problem; 497 authentication service behavior is unchanged if retargeting has 498 occurred for a dialog-forming request. Ultimately, the 499 authentication service provides an Identity header for requests in 500 the backwards dialog when the user is authorized to assert the 501 identity given in the From header field, and if they are not, an 502 Identity header is not provided. 504 For further information on the problems of response identity and the 505 potential solution spaces, see [15]. 507 5.2. Verifier Behavior 509 This document introduces a new logical role for SIP entities called a 510 verification service or verifier. When a verifier receives a SIP 511 message containing an Identity header, it may inspect the signature 512 to verify the identity of the sender of the message. Typically, the 513 results of a verification are provided as input to an authorization 514 process that is outside the scope of this document. If an Identity 515 header is not present in a request, and one is required by local 516 policy (for example, based on a per-sending-domain policy, or a per- 517 sending-user policy), then a 428 'Use Identity Header' response MUST 518 be sent. 520 In order to verify the identity of the sender of a message, an entity 521 acting as a verifier MUST perform the following steps, in the order 522 here specified. 524 Step 1: 526 In order to determine whether the signature for the URI in the From 527 header field value should be over the entire URI or just a 528 canonicalized telephone number, the verification service must follow 529 the process described in Section 7. That section also describes the 530 procedures the verification service must follow to determine if the 531 signer is authoritative for a telephone number. For domains, the 532 verifier MUST follow the process described in Section 13.4 to 533 determine if the signer is authoritative for the URI in the From 534 header field. 536 Step 2: 538 The verifier must first ensure that it possesses the proper keying 539 material to validate the signature in the Identity header field. See 540 Section 6.2 for more information on these procedures. 542 Step 3: 544 The verifier MUST verify the signature in the Identity header field, 545 following the procedures for generating the hashed digest-string 546 described in Section 10. If a verifier determines that the signature 547 on the message does not correspond to the reconstructed digest- 548 string, then a 438 'Invalid Identity Header' response MUST be 549 returned. 551 Step 4: 553 If the request contains an Identity-Reliance header, the verifier 554 SHOULD verify the signature in the Identity-Reliance header field, 555 following the procedures for generating the hashed reliance-digest- 556 string described in Section 10. If a verifier determines that the 557 signature on the message does not correspond to the reconstructed 558 digest-string, then a 438 'Invalid Identity Header' response SHOULD 559 be returned. 561 Step 5: 563 The verifier MUST validate the Date header in the manner described in 564 Section 13.1; recipients that wish to verify Identity signatures MUST 565 support all of the operations described there. It must furthermore 566 ensure that the value of the Date header falls within the validity 567 period of the certificate whose corresponding private key was used to 568 sign the Identity header. 570 6. Credentials 572 SIP entities cannot reliably predict where SIP requests will 573 terminate. When choosing a credential scheme for deployments of this 574 specification, it is therefore essential that the trust anchor(s) for 575 credentials be widely trusted, or that deployments restrict the use 576 of this mechanism to environments where the reliance on particular 577 trust anchors is assured by business arrangements or similar 578 constraints. 580 For more on the use of certificates for domain names as a credential 581 system, see Section 13.4. 583 6.1. Credential Use by the Authentication Service 585 In order to act as an authentication service, a SIP entity must have 586 access to the private keying material of one or more credentials that 587 cover URIs, domain names or telephone numbers. These credentials may 588 represent authority over only a single name (such as 589 alice@example.com), an entire domain (such as example.com), or 590 potentially a set of domains. Similarly, a credential may represent 591 authority over a single telephone number or a range of telephone 592 numbers. The way that the scope of a credential is expressed is 593 specific to the credential mechanism. 595 Authorization of the use of a particular username or telephone number 596 in the user part of the From header field is a matter of local policy 597 for the authentication service, one that depends greatly on the 598 manner in which authentication is performed. For non-telephone 599 number user parts, one policy might be as follows: the username given 600 in the 'username' parameter of the Proxy-Authorization header MUST 601 correspond exactly to the username in the From header field of the 602 SIP message. However, there are many cases in which this is too 603 limiting or inappropriate; a realm might use 'username' parameters in 604 Proxy-Authorization that do not correspond to the user-portion of SIP 605 From headers, or a user might manage multiple accounts in the same 606 administrative domain. In this latter case, a domain might maintain 607 a mapping between the values in the 'username' parameter of Proxy- 608 Authorization and a set of one or more SIP URIs that might 609 legitimately be asserted for that 'username'. For example, the 610 username can correspond to the 'private identity' as defined in Third 611 Generation Partnership Project (3GPP), in which case the From header 612 field can contain any one of the public identities associated with 613 this private identity. In this instance, another policy might be as 614 follows: the URI in the From header field MUST correspond exactly to 615 one of the mapped URIs associated with the 'username' given in the 616 Proxy-Authorization header. This is a suitable approach for 617 telephone numbers in particular. Various exceptions to such policies 618 might arise for cases like anonymity; if the AoR asserted in the From 619 header field uses a form like 'sip:anonymous@example.com', then the 620 'example.com' proxy should authenticate that the user is a valid user 621 in the domain and insert the signature over the From header field as 622 usual. 624 6.2. Credential Use by the Verification Service 626 In order to act as a verification service, a SIP entity must have a 627 way to acquire and retain credentials for authorities over particular 628 URIs, domain names and/or telephone numbers. The Identity-Info 629 header (as described in the next section) is supported by all 630 verification service implementations to create a baseline means of 631 credential acquisition. Provided that the credential used to sign a 632 message is not previously known to the verifier, SIP entities SHOULD 633 discover this credential by dereferencing the Identity-Info header, 634 unless they have some more efficient implementation-specific way of 635 acquiring certificates. If the URI scheme in the Identity-Info 636 header cannot be dereferenced, then a 436 'Bad Identity-Info' 637 response MUST be returned. 639 In the case the credential is a certificate, the verifier processes 640 this certificate in the usual ways, including checking that it has 641 not expired, that the chain is valid back to a trusted certificate 642 authority (CA), and that it does not appear on revocation lists. 643 Once the certificate is acquired, it MUST be validated following the 644 procedures in RFC 3280 [RFC3280]. If the certificate cannot be 645 validated (it is self-signed and untrusted, or signed by an untrusted 646 or unknown certificate authority, expired, or revoked), the verifier 647 MUST send a 437 'Unsupported Certificate' response. 649 Verification service implementations supporting this specification 650 SHOULD have some means of retaining credentials (in accordance with 651 normal practices for credential lifetimes and revocation) in order to 652 prevent themselves from needlessly downloading the same credential 653 every time a request from the same identity is received. Credentials 654 cached in this manner SHOULD be indexed by their scope, or the URI 655 given in the Identity-Info header field value. 657 6.3. Handling Identity-Info URIs 658 A URI in an Identity-Info header MUST contain a URI which 659 dereferences to a resource containing the credential used by the 660 authentication service to sign a request. Much as is the case with 661 the trust anchor(s) required for deployments of this specification, 662 it is essential that a URI in the Identity-Info header be 663 dereferencable by any entity that can receive the request. For 664 common cases, this means that the URI must be dereferencable by any 665 entity on the public Internet. In constrained deployment 666 environments, a service private to the environment might be used 667 instead. 669 Beyond providing a means of accessing credentials for an identity, 670 the Identity-Info header further services a means of differentiating 671 which particular credential was used to sign a request, when there 672 are potentially multiple authorities eligible to sign. For example, 673 imagine a case where a domain implements the authentication service 674 role for example.com, and a user agent belonging to Alice has 675 acquired a credential for alice@example.com. Either would be 676 eligible to sign a SIP request from alice@example.com. Verification 677 services however need a means to differentiate which one performed 678 the signature. The Identity-Info header performs that function. 680 All implementations of this specification MUST support the use of 681 HTTP and HTTPS URIs in the Identity-Info header. Such HTTP and HTTPS 682 URIs MUST follow the conventions of RFC 2585 [RFC2585], and for those 683 URIs the indicated resource MUST be of the form 'application/pkix- 684 cert' described in that specification. Note that this introduces key 685 lifecycle management concerns; were a domain to change the key 686 available at the Identity-Info URI before a verifier evaluates a 687 request signed by an authentication service, this would cause obvious 688 verifier failures. When a rollover occurs, authentication services 689 SHOULD thus provide new Identity-Info URIs for each new certificate, 690 and SHOULD continue to make older key acquisition URIs available for 691 a duration longer than the plausible lifetime of a SIP message (an 692 hour would most likely suffice). 694 Beyond HTTP, implementations may support any of several alternative 695 mechanism for acquiring credentials. When implemented as part of a 696 user agent, for example, an authentication service might include its 697 credential as an additional MIME body in the SIP request, and refer 698 to the certificate with a CID URI (per [RFC2392]). Uses of SIP 699 outside of the request transaction may be suitable for transmitting 700 certificates in some environments, such as through a SUBSCRIBE/NOTIFY 701 exchange. As DANE deployment increases with the widespread adoption 702 of DNSSEC, implementations may want to rely on keying material stored 703 in the DNS. The Identity-Info headers may use the DNS URL scheme to 704 indicate keys in the DNS. 706 [TBD: Should we add some kind of hash or similar indication to the 707 Identity-Info header to make it easier for verifiers to ascertain 708 that they already possess a credential without dereferencing the 709 URI?] 711 7. Identity and Telephone Numbers 713 Since many SIP applications provide a Voice over IP (VoIP) service, 714 telephone numbers are commonly used as identities in SIP deployments. 715 In order for telephone numbers to be used with the mechanism 716 described in this document, authentication services must enroll with 717 an authority that issues credentials for telephone numbers or 718 telephone number ranges, and verification services must trust the 719 authority employed by the authentication service that signs a 720 request. 722 Given the existence of such authorities, authentication and 723 verification services must furthermore identify when a request should 724 be signed by an authority for a telephone number, and when it should 725 be signed by an authority for a domain. Telephone numbers most 726 commonly appear in SIP requests in the username portion of a SIP URI 727 (e.g., 'sip:+17005551008@chicago.example.com;user=phone'). The user 728 part of that URI conforms to the syntax of the TEL URI scheme (RFC 729 3966 [RFC3966]). It is also possible for a TEL URI to appear in the 730 SIP To or From header field outside the context of a SIP or SIPS URI 731 (e.g., 'tel:+17005551008'). In both of these cases, it's clear that 732 the signer must have authority over the telephone number, not the 733 domain name of the SIP URI. It is also possible, however, for 734 requests to contain a URI like 'sip:7005551000@chicago.example.com'. 735 It may be non-trivial for a service to ascertain in this case whether 736 the URI contains a telephone number or not. 738 To address this problem, the authentication service and verification 739 service both must perform the following canonicalization procedure on 740 any SIP URI they inspect which contains a wholly numeric user part. 741 [TBD: the algorithm] If the result of this procedure forms a complete 742 telephone number, that number is used for the purpose of creating and 743 signing the digest-string at the authentication service and 744 verification service. If the result does not form a complete 745 telephone number, the authentication service and verification service 746 should treat the entire URI as a SIP URI, and apply a domain 747 signature per the procedures in Section 13.4. 749 This specification assumes that UACs will have an appropriate means 750 to discover an authentication service that can sign with a telephone 751 number certificate corresponding to the UAC's telephone number. Most 752 likely, this information will simply be provisioned in UACs. 754 Certificates that prove authority over telephone numbers should 755 contain the telephone number, or number range, in the [TBD] field of 756 the certificate. Verification services must compare the 757 canonicalized telephone number to the contents of the [TBD] field in 758 order to establish that the proper authority has signed the request. 759 [TBD: This would refer to an external specification, most likely] 761 In the longer term, it is possible that some directory or other 762 discovery mechanism may provide a way to determine which 763 administrative domain is responsible for a telephone number, and this 764 may aid in the signing and verification of SIP identities that 765 contain telephone numbers. This is a subject for future work. 767 8. Considerations for User Agents 769 This mechanism can be applied opportunistically to existing SIP 770 deployments; accordingly, it requires no change to SIP user agent 771 behavior in order for it to be effective. However, because this 772 mechanism does not provide integrity protection between the UAC and 773 the authentication service, a UAC SHOULD implement some means of 774 providing this integrity. TLS would be one such mechanism, which is 775 attractive because it MUST be supported by SIP proxy servers, but is 776 potentially problematic because it is a hop-by-hop mechanism. See 777 Section 13.3 for more information about securing the channel between 778 the UAC and the authentication service. 780 When a UAC sends a request, it MUST accurately populate the From 781 header field with a value corresponding to an identity that it 782 believes it is authorized to claim. In a request, it MUST set the 783 URI portion of its From header to match a SIP, SIPS, or TEL URI AoR 784 that it is authorized to use in the domain (including anonymous URIs, 785 as described in RFC 3323 [RFC3323]). 787 Note that this document defines a number of new 4xx response codes. 788 If user agents support these response codes, they will be able to 789 respond intelligently to Identity-based error conditions. 791 The UAC MUST also be capable of sending requests, including mid-call 792 requests, through an 'outbound' proxy (the authentication service). 793 The best way to accomplish this is using pre-loaded Route headers and 794 loose routing. For a given domain, if an entity that can instantiate 795 the authentication service role is not in the path of dialog-forming 796 requests, identity for mid-dialog requests in the backwards direction 797 cannot be provided. 799 As a recipient of a request, a user agent that can verify signed 800 identities should also support an appropriate user interface to 801 render the validity of identity to a user. User agent 802 implementations SHOULD differentiate signed From header field values 803 from unsigned From header field values when rendering to an end-user 804 the identity of the sender of a request. 806 9. Considerations for Proxy Servers 808 Domain policy may require proxy servers to inspect and verify the 809 identity provided in SIP requests. A proxy server may wish to 810 ascertain the identity of the sender of the message to provide spam 811 prevention or call control services. Even if a proxy server does not 812 act as an verification service, it MAY validate the Identity header 813 before it makes a forwarding decision for a request. Compliant proxy 814 servers MUST NOT remove or modify an existing Identity or Identity- 815 Info header in a request. 817 10. Header Syntax 819 This document specifies three SIP headers: Identity, Identity- 820 Reliance and Identity- Info. Each of these headers can appear only 821 once in a SIP request; Identity-Reliance is OPTIONAL, while Identity 822 and Identity-Info are REQUIRED for securing requests with this 823 specification. The grammar for these three headers is (following the 824 ABNF [6] in RFC 3261 [1]): 826 Identity = "Identity" HCOLON signed-identity-digest 827 signed-identity-digest = LDQUOT 32LHEX RDQUOT 829 Identity-Reliance = "Identity-Reliance" HCOLON signed-identity-reliance-digest 830 signed-identity-reliance-digest = LDQUOT 32LHEX RDQUOT 832 Identity-Info = "Identity-Info" HCOLON ident-info 833 *( SEMI ident-info-params ) 834 ident-info = LAQUOT absoluteURI RAQUOT 835 ident-info-params = ident-info-alg / ident-info-extension 836 ident-info-alg = "alg" EQUAL token 837 ident-info-extension = generic-param 839 [TBD: The version has the Identity-Reliance header covered under the 840 Identity signature. It is also possible to do this the other way 841 around, where the base Identity signature is generated first, and 842 Identity-Reliance would cover both the Identity header and the body. 843 This is a trade-off of whether the authentication service should 844 decide whether Identity-Reliance is needed or if the verification 845 service should decide. These have different properties, and some 846 investigation would be needed to decide between them.] 847 The signed-identity-reliance-digest is a signed hash of a canonical 848 string generated from certain components of a SIP request. Creating 849 this hash and the Identity-Reliance header field to contain it is 850 OPTIONAL, and its usage is a matter of policy for authentication 851 services. To create the contents of the signed-identity-digest, the 852 following element of a SIP message MUST be placed in a bit-exact 853 string: 855 The body content of the message with the bits exactly as they are 856 in the message (in the ABNF for SIP, the message-body). This 857 includes all components of multipart message bodies. Note that 858 the message-body does NOT include the CRLF separating the SIP 859 headers from the message-body, but does include everything that 860 follows that CRLF. 862 [TBD: Explore alternatives to including the whole body for INVITE 863 requests] 865 The signed-identity-digest is a signed hash of a canonical string 866 generated from certain components of a SIP request. To create the 867 contents of the signed-identity-digest, the following elements of a 868 SIP message MUST be placed in a bit-exact string in the order 869 specified here, separated by a vertical line, "|" or %x7C, character: 871 First, the identity. If the user part of the AoR in the From 872 header field of the request contains a telephone number, then the 873 canonicalization of that number goes into the first slot (see 874 Section 7). Otherwise, the first slot contains the AoR of the UA 875 sending the message, or addr-spec of the From header field. 877 Second, the target. If the user part of the AoR in the To header 878 field of the request contains a telephone number, then the 879 canonicalization of that number goes into the second slot (see 880 Section 7). Otherwise, the second slot contains the addr-spec 881 component of the To header field, which is the AoR to which the 882 request is being sent. 884 Third, the request method. 886 Fourth, the Date header field, with exactly one space each for 887 each SP and the weekday and month items case set as shown in BNF 888 in RFC 3261 [RFC3261]. RFC 3261 specifies that the BNF for 889 weekday and month is a choice amongst a set of tokens. The RFC 890 2234 [RFC2234] rules for the BNF specify that tokens are case 891 sensitive. However, when used to construct the canonical string 892 defined here, the first letter of each week and month MUST be 893 capitalized, and the remaining two letters must be lowercase. 894 This matches the capitalization provided in the definition of each 895 token. All requests that use the Identity mechanism MUST contain 896 a Date header. 898 Fifth, the Identity-Reliance header field value, if there is an 899 Identity-Reliance field in the request. If the message has no 900 body, or no Identity-Reliance header, then the fifth slot will be 901 empty, and the final "|" will not be followed by any additional 902 characters. 904 [TBD: Should there be a special case for security parameters that 905 would appear in SDP?] 907 For more information on the security properties of these headers, and 908 why their inclusion mitigates replay attacks, see Section 13 and 909 [RFC3893]. The precise formulation of this digest-string is, 910 therefore (following the ABNF[RFC4234] in RFC 3261 [RFC3261]): 912 digest-string = addr-spec / tn-spec "|" addr-spec / tn-spec "|" 913 Method "|" SIP-date "|" [ signed-identity-reliance-digest ] 915 For the definition of 'tn-spec' see Section 7. 917 After the digest-string or reliance-digest-string is formed, each 918 MUST be hashed and signed with the certificate of authority over the 919 identity. The hashing and signing algorithm is specified by the 920 'alg' parameter of the Identity-Info header (see below for more 921 information on Identity-Info header parameters). This document 922 defines only one value for the 'alg' parameter: 'rsa-sha1'; further 923 values MUST be defined in a Standards Track RFC, see Section 14.7 for 924 more information. All implementations of this specification MUST 925 support 'rsa-sha1'. When the 'rsa-sha1' algorithm is specified in 926 the 'alg' parameter of Identity-Info, the hash and signature MUST be 927 generated as follows: compute the results of signing this string with 928 sha1WithRSAEncryption as described in RFC 3370 [RFC3370] and base64 929 encode the results as specified in RFC 3548 [RFC3548]. A 1024-bit or 930 longer RSA key MUST be used. The result of the digest-string hash is 931 placed in the Identity header field; the optional reliance-digest- 932 string hash goes in the Identity-Reliance header. For detailed 933 examples of the usage of this algorithm, see Section 11. 935 The 'absoluteURI' portion of the Identity-Info header MUST contain a 936 URI; see Section 6.3 for more on choosing how to advertise 937 credentials through Identity-Info. 939 The Identity-Info header field MUST contain an 'alg' parameter. No 940 other parameters are defined for the Identity-Info header in this 941 document. Future Standards Track RFCs may define additional 942 Identity-Info header parameters. 944 This document adds the following entries to Table 2 of RFC 3261 945 [RFC3261] (this repeats the registrations of RFC4474): 947 Header field where proxy ACK BYE CAN INV OPT REG 948 ------------ ----- ----- --- --- --- --- --- --- 949 Identity R a o o - o o o 951 SUB NOT REF INF UPD PRA 952 --- --- --- --- --- --- 953 o o o o o o 955 Header field where proxy ACK BYE CAN INV OPT REG 956 ------------ ----- ----- --- --- --- --- --- --- 957 Identity-Info R a o o - o o o 959 SUB NOT REF INF UPD PRA 960 --- --- --- --- --- --- 961 o o o o o o 963 Header field where proxy ACK BYE CAN INV OPT REG 964 ------------ ----- ----- --- --- --- --- --- --- 965 Identity-Reliance R a o o - o o o 967 SUB NOT REF INF UPD PRA 968 --- --- --- --- --- --- 969 o o o o o o 971 Note, in the table above, that this mechanism does not protect the 972 CANCEL method. The CANCEL method cannot be challenged, because it is 973 hop-by-hop, and accordingly authentication service behavior for 974 CANCEL would be significantly limited. The Identity and Identity- 975 Info header MUST NOT appear in CANCEL. Note as well that the use of 976 Identity with REGISTER is consequently a subject for future study, 977 although it is left as optional here for forward-compatibility 978 reasons. 980 11. Compliance Tests and Examples 982 [TBD: Need to fix examples for RFC4474bis] 984 The examples in this section illustrate the use of the Identity 985 header in the context of a SIP transaction. Implementers are advised 986 to verify their compliance with the specification against the 987 following criteria: 989 Implementations of the authentication service role MUST generate 990 identical base64 identity strings to the ones shown in the 991 Identity headers in these examples when presented with the source 992 message and utilizing the appropriate supplied private key for the 993 domain in question. 995 Implementations of the verifier role MUST correctly validate the 996 given messages containing the Identity header when utilizing the 997 supplied certificates (with the caveat about self-signed 998 certificates below). 1000 Note that the following examples use self-signed certificates, rather 1001 than certificates issued by a recognized certificate authority. The 1002 use of self-signed certificates for this mechanism is NOT 1003 RECOMMENDED, and it appears here only for illustrative purposes. 1004 Therefore, in compliance testing, implementations of verifiers SHOULD 1005 generate appropriate warnings about the use of self-signed 1006 certificates. Also, the example certificates in this section have 1007 placed their domain name subject in the subjectAltName field; in 1008 practice, certificate authorities may place domain names in other 1009 locations in the certificate (see Section 13.4 for more information). 1011 Note that all examples in this section use the 'rsa-sha1' algorithm. 1013 Bit-exact reference files for these messages and their various 1014 transformations are supplied in Appendix B. 1016 11.1. Identity-Info with a Singlepart MIME body 1018 Consider the following private key and certificate pair assigned to 1019 'atlanta.example.com' (rendered in OpenSSL format). 1021 -----BEGIN RSA PRIVATE KEY----- 1022 MIICXQIBAAKBgQDPPMBtHVoPkXV+Z6jq1LsgfTELVWpy2BVUffJMPH06LL0cJSQO 1023 aIeVzIojzWtpauB7IylZKlAjB5f429tRuoUiedCwMLKblWAqZt6eHWpCNZJ7lONc 1024 IEwnmh2nAccKk83Lp/VH3tgAS/43DQoX2sndnYh+g8522Pzwg7EGWspzzwIDAQAB 1025 AoGBAK0W3tnEFD7AjVQAnJNXDtx59Aa1Vu2JEXe6oi+OrkFysJjbZJwsLmKtrgtt 1026 PXOU8t2mZpi0wK4hX4tZhntiwGKkUPC3h9Bjp+GerifP341RMyMO+6fPgjqOzUDw 1027 +rPjjMpwD7AkcEcqDgbTrZnWv/QnCSaaF3xkUGfFkLx5OKcRAkEA7UxnsE8XaT30 1028 tP/UUc51gNk2KGKgxQQTHopBcew9yfeCRFhvdL7jpaGatEi5iZwGGQQDVOVHUN1H 1029 0YLpHQjRowJBAN+R2bvA/Nimq464ZgnelEDPqaEAZWaD3kOfhS9+vL7oqES+u5E0 1030 J7kXb7ZkiSVUg9XU/8PxMKx/DAz0dUmOL+UCQH8C9ETUMI2uEbqHbBdVUGNk364C 1031 DFcndSxVh+34KqJdjiYSx6VPPv26X9m7S0OydTkSgs3/4ooPxo8HaMqXm80CQB+r 1032 xbB3UlpOohcBwFK9mTrlMB6Cs9ql66KgwnlL9ukEhHHYozGatdXeoBCyhUsogdSU 1033 6/aSAFcvWEGtj7/vyJECQQCCS1lKgEXoNQPqONalvYhyyMZRXFLdD4gbwRPK1uXK 1034 Ypk3CkfFzOyfjeLcGPxXzq2qzuHzGTDxZ9PAepwX4RSk 1035 -----END RSA PRIVATE KEY----- 1037 -----BEGIN CERTIFICATE----- 1038 MIIC3TCCAkagAwIBAgIBADANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJVUzEL 1039 MAkGA1UECAwCR0ExEDAOBgNVBAcMB0F0bGFudGExDTALBgNVBAoMBElFVEYxHDAa 1040 BgNVBAMME2F0bGFudGEuZXhhbXBsZS5jb20wHhcNMDUxMDI0MDYzNjA2WhcNMDYx 1041 MDI0MDYzNjA2WjBZMQswCQYDVQQGEwJVUzELMAkGA1UECAwCR0ExEDAOBgNVBAcM 1042 B0F0bGFudGExDTALBgNVBAoMBElFVEYxHDAaBgNVBAMME2F0bGFudGEuZXhhbXBs 1043 ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM88wG0dWg+RdX5nqOrU 1044 uyB9MQtVanLYFVR98kw8fTosvRwlJA5oh5XMiiPNa2lq4HsjKVkqUCMHl/jb21G6 1045 hSJ50LAwspuVYCpm3p4dakI1knuU41wgTCeaHacBxwqTzcun9Ufe2ABL/jcNChfa 1046 yd2diH6DznbY/PCDsQZaynPPAgMBAAGjgbQwgbEwHQYDVR0OBBYEFNmU/MrbVYcE 1047 KDr/20WISrG1j1rNMIGBBgNVHSMEejB4gBTZlPzK21WHBCg6/9tFiEqxtY9azaFd 1048 pFswWTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkdBMRAwDgYDVQQHDAdBdGxhbnRh 1049 MQ0wCwYDVQQKDARJRVRGMRwwGgYDVQQDDBNhdGxhbnRhLmV4YW1wbGUuY29tggEA 1050 MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEADdQYtswBDmTSTq0mt211 1051 7alm/XGFrb2zdbU0vorxRdOZ04qMyrIpXG1LEmnEOgcocyrXRBvq5p6WbZAcEQk0 1052 DsE3Ve0Nc8x9nmvljW7GsMGFCnCuo4ODTf/1lGdVr9DeCzcj10YUQ3MRemDMXhY2 1053 CtDisLWl7SXOORcZAi1oU9w= 1054 -----END CERTIFICATE----- 1056 A user of atlanta.example.com, Alice, wants to send an INVITE to 1057 bob@biloxi.example.org. She therefore creates the following INVITE 1058 request, which she forwards to the atlanta.example.org proxy server 1059 that instantiates the authentication service role: 1061 INVITE sip:bob@biloxi.example.org SIP/2.0 1062 Via: SIP/2.0/TLS pc33.atlanta.example.com;branch=z9hG4bKnashds8 1063 To: Bob 1064 From: Alice ;tag=1928301774 1065 Call-ID: a84b4c76e66710 1066 CSeq: 314159 INVITE 1067 Max-Forwards: 70 1068 Date: Thu, 21 Feb 2002 13:02:03 GMT 1069 Contact: 1070 Content-Type: application/sdp 1071 Content-Length: 147 1073 v=0 1074 o=UserA 2890844526 2890844526 IN IP4 pc33.atlanta.example.com 1075 s=Session SDP 1076 c=IN IP4 pc33.atlanta.example.com 1077 t=0 0 1078 m=audio 49172 RTP/AVP 0 1079 a=rtpmap:0 PCMU/8000 1081 When the authentication service receives the INVITE, it authenticates 1082 Alice by sending a 407 response. As a result, Alice adds an 1083 Authorization header to her request, and resends to the 1084 atlanta.example.com authentication service. Now that the service is 1085 sure of Alice's identity, it calculates an Identity header for the 1086 request. The canonical string over which the identity signature will 1087 be generated is the following (note that the first line wraps because 1088 of RFC editorial conventions): 1090 sip:alice@atlanta.example.com|sip:bob@biloxi.example.org| 1091 INVITE|Thu, 21 Feb 2002 13:02:03 GMT| 1093 The resulting signature (sha1WithRsaEncryption) using the private RSA 1094 key given above, with base64 encoding, is the following: 1096 ZYNBbHC00VMZr2kZt6VmCvPonWJMGvQTBDqghoWeLxJfzB2a1pxAr3VgrB0SsSAa 1097 ifsRdiOPoQZYOy2wrVghuhcsMbHWUSFxI6p6q5TOQXHMmz6uEo3svJsSH49thyGn 1098 FVcnyaZ++yRlBYYQTLqWzJ+KVhPKbfU/pryhVn9Yc6U= 1100 Accordingly, the atlanta.example.com authentication service will 1101 create an Identity header containing that base64 signature string 1102 (175 bytes). It will also add an HTTPS URL where its certificate is 1103 made available. With those two headers added, the message looks like 1104 the following: 1106 INVITE sip:bob@biloxi.example.org SIP/2.0 1107 Via: SIP/2.0/TLS pc33.atlanta.example.com;branch=z9hG4bKnashds8 1108 To: Bob 1109 From: Alice ;tag=1928301774 1110 Call-ID: a84b4c76e66710 1111 CSeq: 314159 INVITE 1112 Max-Forwards: 70 1113 Date: Thu, 21 Feb 2002 13:02:03 GMT 1114 Contact: 1115 Identity: 1116 "ZYNBbHC00VMZr2kZt6VmCvPonWJMGvQTBDqghoWeLxJfzB2a1pxAr3VgrB0SsSAa 1117 ifsRdiOPoQZYOy2wrVghuhcsMbHWUSFxI6p6q5TOQXHMmz6uEo3svJsSH49thyGn 1118 FVcnyaZ++yRlBYYQTLqWzJ+KVhPKbfU/pryhVn9Yc6U=" 1120 Identity-Info: ;alg=rsa-sha1 1121 Content-Type: application/sdp 1122 Content-Length: 147 1123 v=0 1124 o=UserA 2890844526 2890844526 IN IP4 pc33.atlanta.example.com 1125 s=Session SDP 1126 c=IN IP4 pc33.atlanta.example.com 1127 t=0 0 1128 m=audio 49172 RTP/AVP 0 1129 a=rtpmap:0 PCMU/8000 1131 atlanta.example.com then forwards the request normally. When Bob 1132 receives the request, if he does not already know the certificate of 1133 atlanta.example.com, he dereferences the URL in the Identity-Info 1134 header to acquire the certificate. Bob then generates the same 1135 canonical string given above, from the same headers of the SIP 1136 request. Using this canonical string, the signed digest in the 1137 Identity header, and the certificate discovered by dereferencing the 1139 Identity-Info header, Bob can verify that the given set of headers 1140 and the message body have not been modified. 1142 11.2. Identity for a Request with No MIME Body or Contact 1144 Consider the following private key and certificate pair assigned to 1145 "biloxi.example.org". 1147 -----BEGIN RSA PRIVATE KEY----- 1148 MIICXgIBAAKBgQC/obBYLRMPjskrAqWOiGPAUxI3/m2ti7ix4caqCTAuFX5cLegQ 1149 7nmquLOHfIhxVIqT2f06UA0lOo2NVofK9G7MTkVbVNiyAlLYUDEj7XWLDICf3ZHL 1150 6Fr/+CF7wrQ9r4kv7XiJKxodVCCd/DhCT9Gp+VDoe8HymqOW/KsneriyIwIDAQAB 1151 AoGBAJ7fsFIKXKkjWgj8ksGOthS3Sn19xPSCyEdBxfEm2Pj7/Nzzeli/PcOaic0k 1152 JALBcnqN2fHEeIGK/9xUBxTufgQYVJqvyHERs6rXX/iT4Ynm9t1905EiQ9ZpHsrI 1153 /AMMUYA1QrGgAIHvZLVLzq+9KLDEZ+HQbuCLJXF+6bl0Eb5BAkEA636oMANp0Qa3 1154 mYWEQ2utmGsYxkXSfyBb18TCOwCty0ndBR24zyOJF2NbZS98Lz+Ga25hfIGw/JHK 1155 nD9bOE88UwJBANBRSpd4bmS+m48R/13tRESAtHqydNinX0kS/RhwHr7mkHTU3k/M 1156 FxQtx34I3GKzaZxMn0A66KS9v/SHdnF+ePECQQCGe7QshyZ8uitLPtZDclCWhEKH 1157 qAQHmUEZvUF2VHLrbukLLOgHUrHNa24cILv4d3yaCVUetymNcuyTwhKj24wFAkAO 1158 z/jx1EplN3hwL+NsllZoWI58uvu7/Aq2c3czqaVGBbb317sHCYgKk0bAG3kwO3mi 1159 93/LXWT1cdiYVpmBcHDBAkEAmpgkFj+xZu5gWASY5ujv+FCMP0WwaH5hTnXu+tKe 1160 PJ3d2IJZKxGnl6itKRN7GeRh9PSK0kZSqGFeVrvsJ4Nopg== 1161 -----END RSA PRIVATE KEY----- 1163 -----BEGIN CERTIFICATE----- 1164 MIIC1jCCAj+gAwIBAgIBADANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJVUzEL 1165 MAkGA1UECAwCTVMxDzANBgNVBAcMBkJpbG94aTENMAsGA1UECgwESUVURjEbMBkG 1166 A1UEAwwSYmlsb3hpLmV4YW1wbGUuY29tMB4XDTA1MTAyNDA2NDAyNloXDTA2MTAy 1167 NDA2NDAyNlowVzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAk1TMQ8wDQYDVQQHDAZC 1168 aWxveGkxDTALBgNVBAoMBElFVEYxGzAZBgNVBAMMEmJpbG94aS5leGFtcGxlLmNv 1169 bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAv6GwWC0TD47JKwKljohjwFMS 1170 N/5trYu4seHGqgkwLhV+XC3oEO55qrizh3yIcVSKk9n9OlANJTqNjVaHyvRuzE5F 1171 W1TYsgJS2FAxI+11iwyAn92Ry+ha//ghe8K0Pa+JL+14iSsaHVQgnfw4Qk/RqflQ 1172 6HvB8pqjlvyrJ3q4siMCAwEAAaOBsTCBrjAdBgNVHQ4EFgQU0Z+RL47W/APDtc5B 1173 fSoQXuEFE/wwfwYDVR0jBHgwdoAU0Z+RL47W/APDtc5BfSoQXuEFE/yhW6RZMFcx 1174 CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNUzEPMA0GA1UEBwwGQmlsb3hpMQ0wCwYD 1175 VQQKDARJRVRGMRswGQYDVQQDDBJiaWxveGkuZXhhbXBsZS5jb22CAQAwDAYDVR0T 1176 BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBiyKHIt8TXfGNfpnJXi5jCizOxmY8Y 1177 gln8tyPFaeyq95TGcvTCWzdoBLVpBD+fpRWrX/II5sE6VHbbAPjjVmKbZwzQAtpp 1178 P2Fauj28t94ZeDHN2vqzjfnHjCO24kG3Juf2T80ilp9YHcDwxjUFrt86UnlC+yid 1179 yaTeusW5Gu7v1g== 1180 -----END CERTIFICATE----- 1182 Bob (bob@biloxi.example.org) now wants to send a BYE request to Alice 1183 at the end of the dialog initiated in the previous example. He 1184 therefore creates the following BYE request, which he forwards to the 1185 'biloxi.example.org' proxy server that instantiates the 1186 authentication service role: 1188 BYE sip:alice@pc33.atlanta.example.com SIP/2.0 1189 Via: SIP/2.0/TLS 192.0.2.4;branch=z9hG4bKnashds10 1190 Max-Forwards: 70 1191 From: Bob ;tag=a6c85cf 1192 To: Alice ;tag=1928301774 1193 Call-ID: a84b4c76e66710 1194 CSeq: 231 BYE 1195 Content-Length: 0 1197 When the authentication service receives the BYE, it authenticates 1198 Bob by sending a 407 response. As a result, Bob adds an 1199 Authorization header to his request, and resends to the 1200 biloxi.example.org authentication service. Now that the service is 1201 sure of Bob's identity, it prepares to calculate an Identity header 1202 for the request. Note that this request does not have a Date header 1203 field. Accordingly, the biloxi.example.org will add a Date header to 1204 the request before calculating the identity signature. If the 1205 Content-Length header were not present, the authentication service 1206 would add it as well. The baseline message is thus: 1208 BYE sip:alice@pc33.atlanta.example.com SIP/2.0 1209 Via: SIP/2.0/TLS 192.0.2.4;branch=z9hG4bKnashds10 1210 Max-Forwards: 70 1211 From: Bob ;tag=a6c85cf 1212 To: Alice ;tag=1928301774 1213 Date: Thu, 21 Feb 2002 14:19:51 GMT 1214 Call-ID: a84b4c76e66710 1215 CSeq: 231 BYE 1216 Content-Length: 0 1218 [TBD: Fix example.] Also note that this request contains no Contact 1219 header field. Accordingly, biloxi.example.org will place no value in 1220 the canonical string for the addr-spec of the Contact address. Also 1221 note that there is no message body, and accordingly, the signature 1222 string will terminate, in this case, with two vertical bars. The 1223 canonical string over which the identity signature will be generated 1224 is the following (note that the first line wraps because of RFC 1225 editorial conventions): 1227 sip:bob@biloxi.example.org|sip:alice@atlanta.example.com| 1228 a84b4c76e66710|231 BYE|Thu, 21 Feb 2002 14:19:51 GMT|| 1230 The resulting signature (sha1WithRsaEncryption) using the private RSA 1231 key given above for biloxi.example.org, with base64 encoding, is the 1232 following: 1234 sv5CTo05KqpSmtHt3dcEiO/1CWTSZtnG3iV+1nmurLXV/HmtyNS7Ltrg9dlxkWzo 1235 eU7d7OV8HweTTDobV3itTmgPwCFjaEmMyEI3d7SyN21yNDo2ER/Ovgtw0Lu5csIp 1236 pPqOg1uXndzHbG7mR6Rl9BnUhHufVRbp51Mn3w0gfUs= 1238 Accordingly, the biloxi.example.org authentication service will 1239 create an Identity header containing that base64 signature string. 1240 It will also add an HTTPS URL where its certificate is made 1241 available. With those two headers added, the message looks like the 1242 following: 1244 BYE sip:alice@pc33.atlanta.example.com SIP/2.0 1245 Via: SIP/2.0/TLS 192.0.2.4;branch=z9hG4bKnashds10 1246 Max-Forwards: 70 1247 From: Bob ;tag=a6c85cf 1248 To: Alice ;tag=1928301774 1249 Date: Thu, 21 Feb 2002 14:19:51 GMT 1250 Call-ID: a84b4c76e66710 1251 CSeq: 231 BYE 1252 Identity: 1253 "sv5CTo05KqpSmtHt3dcEiO/1CWTSZtnG3iV+1nmurLXV/HmtyNS7Ltrg9dlxkWzo 1254 eU7d7OV8HweTTDobV3itTmgPwCFjaEmMyEI3d7SyN21yNDo2ER/Ovgtw0Lu5csIp 1255 pPqOg1uXndzHbG7mR6Rl9BnUhHufVRbp51Mn3w0gfUs=" 1256 Identity-Info: ;alg=rsa-sha1 1257 Content-Length: 0 1258 biloxi.example.org then forwards the request normally. 1260 12. Privacy Considerations 1262 The identity mechanism presented in this document is compatible with 1263 the standard SIP practices for privacy described in RFC 3323 1264 [RFC3323]. A SIP proxy server can act both as a privacy service and 1265 as an authentication service. Since a user agent can provide any 1266 From header field value that the authentication service is willing to 1267 authorize, there is no reason why private SIP URIs that contain 1268 legitimate domains (e.g., sip:anonymous@example.com) cannot be signed 1269 by an authentication service. The construction of the Identity 1270 header is the same for private URIs as it is for any other sort of 1271 URIs. 1273 Note, however, that for using anonymous SIP URIs, an authentication 1274 service must possess a certificate corresponding to the host portion 1275 of the addr-spec of the From header field of the request; 1276 accordingly, using domains like 'anonymous.invalid' will not be 1277 possible for privacy services that also act as authentication 1278 services. The assurance offered by the usage of anonymous URIs with 1279 a valid domain portion is "this is a known user in my domain that I 1280 have authenticated, but I am keeping its identity private". The use 1281 of the domain 'anonymous.invalid' entails that no corresponding 1282 authority for the domain can exist, and as a consequence, 1283 authentication service functions are meaningless. 1285 RFC 3325 [RFC3325] defines the "id" priv-value token, which is 1286 specific to the P-Asserted-Identity header. The sort of assertion 1287 provided by the P-Asserted-Identity header is very different from the 1288 Identity header presented in this document. It contains additional 1289 information about the sender of a message that may go beyond what 1290 appears in the From header field; P-Asserted-Identity holds a 1291 definitive identity for the sender that is somehow known to a closed 1292 network of intermediaries that presumably the network will use this 1293 identity for billing or security purposes. The danger of this 1294 network-specific information leaking outside of the closed network 1295 motivated the "id" priv-value token. The "id" priv-value token has 1296 no implications for the Identity header, and privacy services MUST 1297 NOT remove the Identity header when a priv-value of "id" appears in a 1298 Privacy header. 1300 Finally, note that unlike RFC 3325 [RFC3325], the mechanism described 1301 in this specification adds no information to SIP requests that has 1302 privacy implications. 1304 13. Security Considerations 1305 13.1. Handling of digest-string Elements 1307 This document describes a mechanism that provides a signature over 1308 the Date header field, and either the whole or part of the To and 1309 From header fields of SIP requests, as well as optional protections 1310 for the message body. While a signature over the From header field 1311 would be sufficient to secure a URI alone, the additional headers 1312 provide replay protection and reference integrity necessary to make 1313 sure that the Identity header will not be used in cut-and-paste 1314 attacks. In general, the considerations related to the security of 1315 these headers are the same as those given in RFC 3261 [RFC3261] for 1316 including headers in tunneled 'message/sip' MIME bodies (see 1317 Section 23 in particular). The following section details the 1318 individual security properties obtained by including each of these 1319 header fields within the signature; collectively, this set of header 1320 fields provides the necessary properties to prevent impersonation. 1322 The From header field indicates the identity of the sender of the 1323 message, and the SIP address-of-record URI, or an embedded telephone 1324 number, in the From header field is the identity of a SIP user, for 1325 the purposes of this document. The To header field provides the 1326 identity of the SIP user that this request targets. Providing the To 1327 header field in the Identity signature serves two purposes: first, it 1328 prevents cut-and-paste attacks in which an Identity header from 1329 legitimate request for one user is cut-and-pasted into a request for 1330 a different user; second, it preserves the starting URI scheme of the 1331 request, which helps prevent downgrade attacks against the use of 1332 SIPS. 1334 The Date header field provides replay protection, as described in RFC 1335 3261 [RFC3261], Section 23.4.2. Implementations of this 1336 specification MUST NOT deem valid a request with an outdated Date 1337 header field (the RECOMMENDED interval is that the Date header must 1338 indicate a time within 3600 seconds of the receipt of a message). 1339 The result of this is that if an Identity header is replayed within 1340 the Date interval, verifiers will recognize that it is invalid; if an 1341 Identity header is replayed after the Date interval, verifiers will 1342 recognize that it is invalid because the Date is stale. 1344 Without the method an INVITE request could be cut- and-pasted by an 1345 attacker and transformed into a MESSAGE request without changing any 1346 fields covered by the Identity header, and moreover requests within a 1347 certain transaction could be replayed in potentially confusing or 1348 malicious ways. 1350 RFC4474 had protections for the Contact, Call-ID and CSeq. These are 1351 removed from RFC4474bis. The absence of these header values creates 1352 some opportunities for determined attackers to impersonate based on 1353 cut-and-paste attacks; however, the absence of these headers does not 1354 seem impactful to preventing against the simple unauthorized claiming 1355 of a From header field value. 1357 It might seem attractive to provide a signature over some of the 1358 information present in the Via header field value(s). For example, 1359 without a signature over the sent-by field of the topmost Via header, 1360 an attacker could remove that Via header and insert its own in a cut- 1361 and-paste attack, which would cause all responses to the request to 1362 be routed to a host of the attacker's choosing. However, a signature 1363 over the topmost Via header does not prevent attacks of this nature, 1364 since the attacker could leave the topmost Via intact and merely 1365 insert a new Via header field directly after it, which would cause 1366 responses to be routed to the attacker's host "on their way" to the 1367 valid host, which has exactly the same end result. Although it is 1368 possible that an intermediary-based authentication service could 1369 guarantee that no Via hops are inserted between the sending user 1370 agent and the authentication service, it could not prevent an 1371 attacker from adding a Via hop after the authentication service, and 1372 thereby preempting responses. It is necessary for the proper 1373 operation of SIP for subsequent intermediaries to be capable of 1374 inserting such Via header fields, and thus it cannot be prevented. 1375 As such, though it is desirable, securing Via is not possible through 1376 the sort of identity mechanism described in this document; the best 1377 known practice for securing Via is the use of SIPS. 1379 This mechanism also provides an optional signature over the bodies of 1380 SIP requests. This can help to protect non-INVITE transactions such 1381 as MESSAGE or NOTIFY, as well as INVITEs in those environments where 1382 intermediaries do not change SDP. While this is not strictly 1383 necessary to prevent the impersonation attacks, there is little 1384 purpose in establishing the identity of the user that originated a 1385 SIP request if this assurance is not coupled with a comparable 1386 assurance over the contents of the message. There are furthermore 1387 some baiting attacks (where the attacker receives a request from the 1388 target and reoriginates it to a third party) that might not be 1389 prevented by only a signature over the From, To and Date, but could 1390 be prevented by securing SDP. Note, however, that this is not 1391 perfect end-to-end security. The authentication service itself, when 1392 instantiated at an intermediary, could conceivably change the body 1393 (and SIP headers, for that matter) before providing a signature. 1394 Thus, while this mechanism reduces the chance that a replayer or man- 1395 in-the-middle will modify bodies, it does not eliminate it entirely. 1396 Since it is a foundational assumption of this mechanism that the 1397 users trust their local domain to vouch for their security, they must 1398 also trust the service not to violate the integrity of their message 1399 without good reason. 1401 In the end analysis, the Identity, Identity-Reliance and Identity- 1402 Info headers cannot protect themselves. Any attacker could remove 1403 these headers from a SIP request, and modify the request arbitrarily 1404 afterwards. However, this mechanism is not intended to protect 1405 requests from men-in-the- middle who interfere with SIP messages; it 1406 is intended only to provide a way that the originators of SIP 1407 requests can prove that they are who they claim to be. At best, by 1408 stripping identity information from a request, a man-in-the-middle 1409 could make it impossible to distinguish any illegitimate messages he 1410 would like to send from those messages sent by an authorized user. 1411 However, it requires a considerably greater amount of energy to mount 1412 such an attack than it does to mount trivial impersonations by just 1413 copying someone else's From header field. This mechanism provides a 1414 way that an authorized user can provide a definitive assurance of his 1415 identity that an unauthorized user, an impersonator, cannot. 1417 One additional respect in which the Identity-Info header cannot 1418 protect itself is the 'alg' parameter. The 'alg' parameter is not 1419 included in the digest-string, and accordingly, a man-in-the-middle 1420 might attempt to modify the 'alg' parameter. However, it is 1421 important to note that preventing men-in-the-middle is not the 1422 primary impetus for this mechanism. Moreover, changing the 'alg' 1424 would at worst result in some sort of bid-down attack, and at best 1425 cause a failure in the verifier. Note that only one valid 'alg' 1426 parameter is defined in this document and that thus there is 1427 currently no weaker algorithm to which the mechanism can be bid down. 1428 'alg' has been incorporated into this mechanism for forward- 1429 compatibility reasons in case the current algorithm exhibits 1430 weaknesses, and requires swift replacement, in the future. 1432 13.2. Display-Names and Identity 1434 As a matter of interface design, SIP user agents might render the 1435 display-name portion of the From header field of a caller as the 1436 identity of the caller; there is a significant precedent in email 1437 user interfaces for this practice. As such, it might seem that the 1438 lack of a signature over the display-name is a significant omission. 1440 However, there are several important senses in which a signature over 1441 the display-name does not prevent impersonation. In the first place, 1442 a particular display-name, like "Jon Peterson", is not unique in the 1443 world; many users in different administrative domains might 1444 legitimately claim that name. Furthermore, enrollment practices for 1445 SIP-based services might have a difficult time discerning the 1446 legitimate display-name for a user; it is safe to assume that 1447 impersonators will be capable of creating SIP accounts with arbitrary 1448 display-names. The same situation prevails in email today. Note 1449 that an impersonator who attempted to replay a message with an 1450 Identity header, changing only the display-name in the From header 1451 field, would be detected by the other replay protection mechanisms 1452 described in Section 13.1. 1454 Of course, an authentication service can enforce policies about the 1455 display-name even if the display-name is not signed. The exact 1456 mechanics for creating and operationalizing such policies is outside 1457 the scope of this document. The effect of this policy would not be 1458 to prevent impersonation of a particular unique identifier like a SIP 1459 URI (since display-names are not unique identifiers), but to allow a 1460 domain to manage the claims made by its users. If such policies are 1461 enforced, users would not be free to claim any display-name of their 1462 choosing. In the absence of a signature, man-in-the-middle attackers 1463 could conceivably alter the display-names in a request with impunity. 1464 Note that the scope of this specification is impersonation attacks, 1465 however, and that a man-in-the-middle might also strip the Identity 1466 and Identity-Info headers from a message. 1468 There are many environments in which policies regarding the display- 1469 name aren't feasible. Distributing bit-exact and internationalizable 1470 display-names to end-users as part of the enrollment or registration 1471 process would require mechanisms that are not explored in this 1472 document. In the absence of policy enforcement regarding domain 1473 names, there are conceivably attacks that an adversary could mount 1474 against SIP systems that rely too heavily on the display-name in 1475 their user interface, but this argues for intelligent interface 1476 design, not changes to the mechanisms. Relying on a non-unique 1477 identifier for identity would ultimately result in a weak mechanism. 1479 13.3. Securing the Connection to the Authentication Service 1481 The assurance provided by this mechanism is strongest when a user 1482 agent forms a direct connection, preferably one secured by TLS, to an 1483 intermediary-based authentication service. The reasons for this are 1484 twofold: 1486 If a user does not receive a certificate from the authentication 1487 service over this TLS connection that corresponds to the expected 1488 domain (especially when the user receives a challenge via a 1489 mechanism such as Digest), then it is possible that a rogue server 1490 is attempting to pose as an authentication service for a domain 1491 that it does not control, possibly in an attempt to collect shared 1492 secrets for that domain. A similar practice could be used for 1493 telephone numbers, though the application of certificates for 1494 telephone numbers to TLS is left as a matter for future study. 1496 Without TLS, the various header field values and the body of the 1497 request will not have integrity protection when the request 1498 arrives at an authentication service. Accordingly, a prior 1499 legitimate or illegitimate intermediary could modify the message 1500 arbitrarily. 1502 Of these two concerns, the first is most material to the intended 1503 scope of this mechanism. This mechanism is intended to prevent 1504 impersonation attacks, not man-in-the-middle attacks; integrity over 1505 the header and bodies is provided by this mechanism only to prevent 1506 replay attacks. However, it is possible that applications relying on 1507 the presence of the Identity header could leverage this integrity 1508 protection, especially body integrity, for services other than replay 1509 protection. 1511 Accordingly, direct TLS connections SHOULD be used between the UAC 1512 and the authentication service whenever possible. The opportunistic 1513 nature of this mechanism, however, makes it very difficult to 1514 constrain UAC behavior, and moreover there will be some deployment 1515 architectures where a direct connection is simply infeasible and the 1516 UAC cannot act as an authentication service itself. Accordingly, 1517 when a direct connection and TLS are not possible, a UAC should use 1518 the SIPS mechanism, Digest 'auth-int' for body integrity, or both 1519 when it can. The ultimate decision to add an Identity header to a 1520 request lies with the authentication service, of course; domain 1521 policy must identify those cases where the UAC's security association 1522 with the authentication service is too weak. 1524 13.4. Domain Names, Certificates and Subordination 1526 When a verifier processes a request containing an Identity-Info 1527 header with a domain signature, it must compare the domain portion of 1528 the URI in the From header field of the request with the domain name 1529 that is the subject of the certificate acquired from the Identity- 1530 Info header. While it might seem that this should be a 1531 straightforward process, it is complicated by two deployment 1532 realities. In the first place, certificates have varying ways of 1533 describing their subjects, and may indeed have multiple subjects, 1534 especially in 'virtual hosting' cases where multiple domains are 1535 managed by a single application. Secondly, some SIP services may 1536 delegate SIP functions to a subordinate domain and utilize the 1537 procedures in RFC 3263 [RFC3263] that allow requests for, say, 1538 'example.com' to be routed to 'sip.example.com'. As a result, a user 1539 with the AoR 'sip:jon@example.com' may process requests through a 1540 host like 'sip.example.com', and it may be that latter host that acts 1541 as an authentication service. 1543 To meet the second of these problems, a domain that deploys an 1544 authentication service on a subordinate host MUST be willing to 1545 supply that host with the private keying material associated with a 1546 certificate whose subject is a domain name that corresponds to the 1547 domain portion of the AoRs that the domain distributes to users. 1548 Note that this corresponds to the comparable case of routing inbound 1549 SIP requests to a domain. When the NAPTR and SRV procedures of RFC 1550 3263 are used to direct requests to a domain name other than the 1551 domain in the original Request-URI (e.g., for 'sip:jon@example.com', 1552 the corresponding SRV records point to the service 1553 'sip1.example.org'), the client expects that the certificate passed 1554 back in any TLS exchange with that host will correspond exactly with 1555 the domain of the original Request-URI, not the domain name of the 1556 host. Consequently, in order to make inbound routing to such SIP 1557 services work, a domain administrator must similarly be willing to 1558 share the domain's private key with the service. This design 1559 decision was made to compensate for the insecurity of the DNS, and it 1560 makes certain potential approaches to DNS-based 'virtual hosting' 1561 unsecurable for SIP in environments where domain administrators are 1562 unwilling to share keys with hosting services. 1564 A verifier MUST evaluate the correspondence between the user's 1565 identity and the signing certificate by following the procedures 1566 defined in RFC 2818 [RFC2818], Section 3.1. While RFC 2818 [RFC2818] 1567 deals with the use of HTTP in TLS, the procedures described are 1568 applicable to verifying identity if one substitutes the "hostname of 1569 the server" in HTTP for the domain portion of the user's identity in 1570 the From header field of a SIP request with an Identity header. 1572 Because the domain certificates that can be used by authentication 1573 services need to assert only the hostname of the authentication 1574 service, existing certificate authorities can provide adequate 1575 certificates for this mechanism. However, not all proxy servers and 1576 user agents will be able to support the root certificates of all 1577 certificate authorities, and moreover there are some significant 1578 differences in the policies by which certificate authorities issue 1579 their certificates. This document makes no recommendations for the 1580 usage of particular certificate authorities, nor does it describe any 1581 particular policies that certificate authorities should follow, but 1582 it is anticipated that operational experience will create de facto 1583 standards for authentication services. Some federations of service 1584 providers, for example, might only trust certificates that have been 1585 provided by a certificate authority operated by the federation. It 1586 is strongly RECOMMENDED that self-signed domain certificates should 1587 not be trusted by verifiers, unless some previous key exchange has 1588 justified such trust. 1590 [TBD: DANE?] 1591 For further information on certificate security and practices, see 1592 RFC 3280 [RFC3280]. The Security Considerations of RFC 3280 1593 [RFC3280] are applicable to this document. 1595 13.5. Authorization and Transitional Strategies 1597 Ultimately, the worth of an assurance provided by an Identity header 1598 is limited by the security practices of the domain that issues the 1599 assurance. Relying on an Identity header generated by a remote 1600 administrative domain assumes that the issuing domain used its 1601 administrative practices to authenticate its users. However, it is 1602 possible that some domains will implement policies that effectively 1603 make users unaccountable (e.g., ones that accept unauthenticated 1604 registrations from arbitrary users). The value of an Identity header 1605 from such domains is questionable. While there is no magic way for a 1606 verifier to distinguish "good" from "bad" domains by inspecting a SIP 1607 request, it is expected that further work in authorization practices 1608 could be built on top of this identity solution; without such an 1609 identity solution, many promising approaches to authorization policy 1610 are impossible. That much said, it is RECOMMENDED that 1611 authentication services based on proxy servers employ strong 1612 authentication practices such as token-based identifiers. 1614 One cannot expect the Identity and Identity-Info headers to be 1615 supported by every SIP entity overnight. This leaves the verifier in 1616 a compromising position; when it receives a request from a given SIP 1617 user, how can it know whether or not the sender's domain supports 1618 Identity? In the absence of ubiquitous support for identity, some 1619 transitional strategies are necessary. 1621 A verifier could remember when it receives a request from a domain 1622 that uses Identity, and in the future, view messages received from 1623 that domain without Identity headers with skepticism. 1625 A verifier could query the domain through some sort of callback 1626 system to determine whether or not it is running an authentication 1627 service. There are a number of potential ways in which this could 1628 be implemented; use of the SIP OPTIONS method is one possibility. 1629 This is left as a subject for future work. 1631 In the long term, some sort of identity mechanism, either the one 1632 documented in this specification or a successor, must become 1633 mandatory-to-use for the SIP protocol; that is the only way to 1634 guarantee that this protection can always be expected by verifiers. 1636 Finally, it is worth noting that the presence or absence of the 1637 Identity headers cannot be the sole factor in making an authorization 1638 decision. Permissions might be granted to a message on the basis of 1639 the specific verified Identity or really on any other aspect of a SIP 1640 request. Authorization policies are outside the scope of this 1641 specification, but this specification advises any future 1642 authorization work not to assume that messages with valid Identity 1643 headers are always good. 1645 14. IANA Considerations 1647 [TBD: update for rfc4474bis or remove?] 1649 This document requests changes to the header and response-code sub- 1650 registries of the SIP parameters IANA registry, and requests the 1651 creation of two new registries for parameters for the Identity-Info 1652 header. 1654 14.1. Header Field Names 1656 This document specifies two new SIP headers: Identity and Identity- 1657 Info. Their syntax is given in Section 10. These headers are 1658 defined by the following information, which has been added to the 1659 header sub-registry under http://www.iana.org/assignments/sip- 1660 parameters 1662 Header Name: Identity 1663 Compact Form: y 1664 Header Name: Identity-Info 1665 Compact Form: n 1667 14.2. 428 'Use Identity Header' Response Code 1669 This document registers a new SIP response code, which is described 1670 in Section 5.2. It is sent when a verifier receives a SIP request 1671 that lacks an Identity header in order to indicate that the request 1672 should be re-sent with an Identity header. This response code is 1673 defined by the following information, which has been added to the 1674 method and response-code sub-registry under http://www.iana.org/ 1675 assignments/sip-parameters 1677 Response Code Number: 428 1678 Default Reason Phrase: Use Identity Header 1680 14.3. 436 'Bad Identity-Info' Response Code 1682 This document registers a new SIP response code, which is described 1683 in Section 5.2. It is used when the Identity-Info header contains a 1684 URI that cannot be dereferenced by the verifier (either the URI 1685 scheme is unsupported by the verifier, or the resource designated by 1686 the URI is otherwise unavailable). This response code is defined by 1687 the following information, which has been added to the method and 1688 response-code sub-registry under http://www.iana.org/assignments/sip- 1689 parameters 1691 Response Code Number: 436 1692 Default Reason Phrase: Bad Identity-Info 1694 14.4. 437 'Unsupported Certificate' Response Code 1696 This document registers a new SIP response code, which is described 1697 in Section 5.2. It is used when the verifier cannot validate the 1698 certificate referenced by the URI of the Identity-Info header, 1699 because, for example, the certificate is self-signed, or signed by a 1700 root certificate authority for whom the verifier does not possess a 1701 root certificate. This response code is defined by the following 1702 information, which has been added to the method and response-code 1703 sub-registry under http://www.iana.org/assignments/sip-parameters 1705 Response Code Number: 437 1706 Default Reason Phrase: Unsupported Certificate 1708 14.5. 438 'Invalid Identity Header' Response Code 1710 This document registers a new SIP response code, which is described 1711 in Section 5.2. It is used when the verifier receives a message with 1712 an Identity signature that does not correspond to the digest-string 1713 calculated by the verifier. This response code is defined by the 1714 following information, which has been added to the method and 1715 response-code sub-registry under http://www.iana.org/assignments/sip- 1716 parameters 1718 Response Code Number: 438 1719 Default Reason Phrase: Invalid Identity Header 1721 14.6. Identity-Info Parameters 1723 The IANA has created a new registry for Identity-Info headers. This 1724 registry is to be prepopulated with a single entry for a parameter 1725 called 'alg', which describes the algorithm used to create the 1726 signature that appears in the Identity header. Registry entries must 1727 contain the name of the parameter and the specification in which the 1728 parameter is defined. New parameters for the Identity-Info header 1729 may be defined only in Standards Track RFCs. 1731 14.7. Identity-Info Algorithm Parameter Values 1733 The IANA has created a new registry for Identity-Info 'alg' parameter 1734 values. This registry is to be prepopulated with a single entry for 1735 a value called 'rsa-sha1', which describes the algorithm used to 1736 create the signature that appears in the Identity header. Registry 1737 entries must contain the name of the 'alg' parameter value and the 1738 specification in which the value is described. New values for the 1739 'alg' parameter may be defined only in Standards Track RFCs. 1741 15. Acknowledgements 1743 The authors would like to thank the many commentators on this 1744 document. 1746 16. Original RFC 4474 Requirements 1748 The following requirements were crafted throughout the development of 1749 the mechanism described in this document. They are preserved here 1750 for historical reasons. 1752 The mechanism must allow a UAC or a proxy server to provide a 1753 strong cryptographic identity assurance in a request that can be 1754 verified by a proxy server or UAS. 1756 User agents that receive identity assurances must be able to 1757 validate these assurances without performing any network lookup. 1759 User agents that hold certificates on behalf of their user must be 1760 capable of adding this identity assurance to requests. 1762 Proxy servers that hold certificates on behalf of their domain 1763 must be capable of adding this identity assurance to requests; a 1764 UAC is not required to support this mechanism in order for an 1765 identity assurance to be added to a request in this fashion. 1767 The mechanism must prevent replay of the identity assurance by an 1768 attacker. 1770 In order to provide full replay protection, the mechanism must be 1771 capable of protecting the integrity of SIP message bodies (to 1772 ensure that media offers and answers are linked to the signaling 1773 identity). 1775 It must be possible for a user to have multiple AoRs (i.e., 1776 accounts or aliases) that it is authorized to use within a domain, 1777 and for the UAC to assert one identity while authenticating itself 1778 as another, related, identity, as permitted by the local policy of 1779 the domain. 1781 17. Changes from RFC4474 1783 17.1. Motivation for Changes 1785 The original sip-identity drafts that lead to RFC 4474 [RFC4474] were 1786 first published in 2002. Since that point many things have changed 1787 that impact the design. 1789 o The DNS root has been signed. 1791 o SPAM continues to be a problem. 1793 o It has become clear that B2BUAs will continue to be a major factor 1794 in SIP deployments. 1796 o Multipart MIME has failed as a SIP extension mechanism. 1798 o Widespread identity providers such as Facebook have emerged. 1800 o Techniques for non-carrier entities to verify phone numbers and 1801 then use them for addressing (such as Apple's iMessage) have been 1802 shown to be commercially feasible. 1804 o Substantial portions of commercial, government, and personal voice 1805 communications rely on SIP at some stage in the communications. 1807 o The cost of operating large databases has fallen and outsourced 1808 versions of these databases have become cheaply available. 1810 o Extensive experience and user research has improved our 1811 understanding of how to present security information to users. 1813 o The world is in the middle of a huge transition to mobile devices. 1814 Even the most limited modern mobile devices have user interface 1815 and computational capabilities that greatly exceed a 2002-era SIP 1816 phone. 1818 The authors believe that the confluence of changing technology, the 1819 evolution of mobile devices and internet, and a political will to 1820 change make this the right time to consider an change of the scope of 1821 4474 to solve the following problems: 1823 o Assert strong identity for E.164 numbers such as +1 408 555-1212 1825 o Continue to assert strong identity for domain scoped names such as 1826 alice@example.com 1828 o Work for calls crossing even the most adverse networks such as the 1829 PSTN. 1831 o Provide reliable information about who is calling before the call 1832 is answered to help stop SPAM. 1834 o Provide reliable information about who you are talking to. 1836 o Work with evolving non SIP based communications systems such as 1837 WebRTC. 1839 o Potentially, as future work explore organization attributes (e.g., 1840 "this is a Bank"). 1842 We believe it is possible to solve all of these in a way that is 1843 commercially viable, deployable, and provides a delightful user 1844 experience. 1846 The core problem in a global identity system with delegated names is 1847 understanding who is authorized to make assertions about a given 1848 name. The proposal is to solve that problem with a two pronged 1849 approach. The design of such a system is outside the scope of this 1850 draft, and perhaps of the IETF, but we believe it will have a twofold 1851 character: 1853 First, it will delegate responsibility for a number down from a root 1854 in a series of delegation sub delegation towards the user. For 1855 example, the North American Numbering Plan Administrator assigns a 1856 portion of the +1 space to a service provider. That service provider 1857 may assign a sub space to a company and that company may assign a 1858 number to a user. At each level of delegation, cryptographic 1859 credentials could be provided that allow the user to prove the space 1860 was delegated to them given some common trust root. This approach is 1861 referred to as "delegation" and effectively works from the top down. 1863 The other prong to solving the problem is called "claims" and works 1864 via a bottom up approach. The end user of a number basically claims 1865 it and some trusted system validates this claim. The validation may 1866 be as simple as sending a SMS to the number or more complicated such 1867 as the VIPR system. 1869 The delegation approach creates an easier user experience but is 1870 harder to deploy from a business incentive point of view so our 1871 approach is to do both and work down from the top and up from the 1872 bottom with a meet in the middle approach to coverage of the full 1873 name space. For the purposes of the current work, it is envisioned 1874 that a certificate authority could encompass both approaches. 1876 Authentication services that possess a credential (whether of the 1877 delegation or claim variety) for a telephone number or domain name 1878 can, in this mechanism, create one of two types of assertions: basic 1879 assertions and reliance assertions. The basic assertion provides 1880 replay protection, whereas the reliance assertion provides a broader 1881 body protection. Some networks might modify the signaling in ways 1882 that impact the reliance assertions but not the other, and thus the 1883 reliance assertion is optional. 1885 As in RFC4474, identity assertions are passed in-band in SIP from the 1886 caller to the callee for verification. There are however some cases 1887 where in-band signaling cannot survive the call path, such as when 1888 the call passes through a gateway to the PSTN. This specification 1889 assumes that other, out-of-band mechanisms may be used in cases where 1890 in-band identity is not carried end-to-end, but those mechanisms are 1891 outside the scope of this document. 1893 17.2. Changes to the Identity-Info Header 1895 RFC4474 restricted the subject of the certificate to a domain name, 1896 and accordingly the RFC4474 Identity-Info header contains a URI which 1897 designates a certificate whose subject (more precisely, 1898 subjectAltName) must correspond to the domain of the URI in the From 1899 header field value of the SIP request. Per the analysis in 1900 [I-D.peterson-secure-origin-ps], this document relaxes that 1901 constraint to allow designating an alternative authority for 1902 telephone numbers, when telephone numbers appear in the From header 1903 field value. 1905 These changes will allow the Identity-Info URI to point to the 1906 certificate with authority over the calling telephone number. A 1907 verification service will therefore authorize a SIP request when the 1908 telephone number in the From header field value agrees with the 1909 subject of the certificate. Verification services must of course 1910 trust the certificate authority that issued the certificate in 1911 question. To implement this change to the Identity-Info header, we 1912 must allow for two possibilities for the conveyance of a telephone 1913 number in a request: appearing within a tel URI or appearing as the 1914 user portion of a SIP URI. Therefore, we must prescribe the 1915 verification service behind in the case where the From header field 1916 value URI contains a telephone user part followed by a domain -- 1917 which should the verification service expect to find in a 1918 certificate? 1920 Future version of this document may explore alternate ways of 1921 acquiring credentials, including the use of credentials other than 1922 certificates. This might include implementing enough flexibility in 1923 the URI to allow a model more like the IdP model described in 1924 [I-D.rescorla-rtcweb-generic-idp]; this could be useful as RTCWeb 1925 sees increasing deployment. We also should consider any implications 1926 of the signing of the DNSSEC root and the DANE specifications to the 1927 existing Identity-Info uses with domain name. At a high level, it is 1928 not expected that the proposed changes will radically alter the 1929 semantics of Identity-Info. 1931 17.3. Changes to the Identity Header 1933 Per the analysis in [I-D.peterson-secure-origin-ps], this document 1934 changes the signature mechanism that RFC44474 specified for the 1935 Identity header: in particular, to replace this signature mechanism 1936 with one that is more likely to survive end-to-end in SIP networks 1937 where intermediaries act as back-to-back user agents rather than 1938 proxy servers. 1940 To accomplish this, we here create two distinct signatures within SIP 1941 requests: a basic assurance and a reliance assurance. The basic 1942 assurance prevents impersonation attacks by providing a signature 1943 over the From header field value and certain other headers which will 1944 allow a verification service to detect some cut-and-paste attacks. 1945 The reliance assurance protects against attackers changing other 1946 parameters of the call: these include the entirely of the messaging 1947 body, including the target IP address and ports in SDP which, if 1948 unprotected, can allow an attacker to succeed with more sophisticated 1949 cut-and-paste attacks. Authentication services behavior would change 1950 to allow them to decide, based on their policy in a deployment 1951 environment, whether only the basic assurance can realistically 1952 survive network transit, or if the reliance assurance should be 1953 available. There are several similar design choices in this space to 1954 consider, and some analysis will be required to identify the best 1955 option. 1957 In cases where the From header field value of a SIP request contains 1958 a SIP URI with a telephone number user part, we will also consider 1959 replay assurance canonicalizations that do not cover the domain 1960 portion of the URI. 1962 [TBD: in order to preserve critical security parameters even in 1963 adverse network conditions, should the basic assurance integrity 1964 protection must always cover security parameters of the SDP required 1965 to negotiate media-level security? There may be other exception 1966 cases, or extensibility mechanisms, worth considering here. ] 1968 18. References 1970 18.1. Normative References 1972 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1973 Requirement Levels", BCP 14, RFC 2119, March 1997. 1975 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. 1977 [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, 1978 A., Peterson, J., Sparks, R., Handley, M., and E. 1979 Schooler, "SIP: Session Initiation Protocol", RFC 3261, 1980 June 2002. 1982 [RFC3280] Housley, R., Polk, W., Ford, W., and D. Solo, "Internet 1983 X.509 Public Key Infrastructure Certificate and 1984 Certificate Revocation List (CRL) Profile", RFC 3280, 1985 April 2002. 1987 [RFC3323] Peterson, J., "A Privacy Mechanism for the Session 1988 Initiation Protocol (SIP)", RFC 3323, November 2002. 1990 [RFC3370] Housley, R., "Cryptographic Message Syntax (CMS) 1991 Algorithms", RFC 3370, August 2002. 1993 [RFC3548] Josefsson, S., "The Base16, Base32, and Base64 Data 1994 Encodings", RFC 3548, July 2003. 1996 [RFC3893] Peterson, J., "Session Initiation Protocol (SIP) 1997 Authenticated Identity Body (AIB) Format", RFC 3893, 1998 September 2004. 2000 [RFC4234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 2001 Specifications: ABNF", RFC 4234, October 2005. 2003 18.2. Informative References 2005 [I-D.cooper-iab-secure-origin-00] 2006 Cooper, A., Tschofenig, H., Peterson, J., and B. Aboba, 2007 "Secure Call Origin Identification", draft-cooper-iab- 2008 secure-origin-00 (work in progress), November 2012. 2010 [I-D.peterson-secure-origin-ps] 2011 Peterson, J., Schulzrinne, H., and H. Tschofenig, "Secure 2012 Origin Identification: Problem Statement, Requirements, 2013 and Roadmap", draft-peterson-secure-origin-ps-00 (work in 2014 progress), May 2013. 2016 [I-D.peterson-sipping-retarget] 2017 Peterson, J., "Retargeting and Security in SIP: A 2018 Framework and Requirements", draft-peterson-sipping- 2019 retarget-00 (work in progress), February 2005. 2021 [I-D.rescorla-callerid-fallback] 2022 Rescorla, E., "Secure Caller-ID Fallback Mode", draft- 2023 rescorla-callerid-fallback-00 (work in progress), May 2024 2013. 2026 [I-D.rescorla-rtcweb-generic-idp] 2027 Rescorla, E., "RTCWEB Generic Identity Provider 2028 Interface", draft-rescorla-rtcweb-generic-idp-01 (work in 2029 progress), March 2012. 2031 [RFC2234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax 2032 Specifications: ABNF", RFC 2234, November 1997. 2034 [RFC2585] Housley, R. and P. Hoffman, "Internet X.509 Public Key 2035 Infrastructure Operational Protocols: FTP and HTTP", RFC 2036 2585, May 1999. 2038 [RFC3263] Rosenberg, J. and H. Schulzrinne, "Session Initiation 2039 Protocol (SIP): Locating SIP Servers", RFC 3263, June 2040 2002. 2042 [RFC3325] Jennings, C., Peterson, J., and M. Watson, "Private 2043 Extensions to the Session Initiation Protocol (SIP) for 2044 Asserted Identity within Trusted Networks", RFC 3325, 2045 November 2002. 2047 [RFC3761] Faltstrom, P. and M. Mealling, "The E.164 to Uniform 2048 Resource Identifiers (URI) Dynamic Delegation Discovery 2049 System (DDDS) Application (ENUM)", RFC 3761, April 2004. 2051 [RFC3966] Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 2052 3966, December 2004. 2054 [RFC4474] Peterson, J. and C. Jennings, "Enhancements for 2055 Authenticated Identity Management in the Session 2056 Initiation Protocol (SIP)", RFC 4474, August 2006. 2058 [RFC4475] Sparks, R., Hawrylyshen, A., Johnston, A., Rosenberg, J., 2059 and H. Schulzrinne, "Session Initiation Protocol (SIP) 2060 Torture Test Messages", RFC 4475, May 2006. 2062 [RFC6919] Barnes, R., Kent, S., and E. Rescorla, "Further Key Words 2063 for Use in RFCs to Indicate Requirement Levels", RFC 6919, 2064 April 1 2013. 2066 Authors' Addresses 2068 Jon Peterson 2069 NeuStar 2071 Email: jon.peterson@neustar.biz 2073 Cullen Jennings 2074 Cisco 2075 400 3rd Avenue SW, Suite 350 2076 Calgary, AB T2P 4H2 2077 Canada 2079 Email: fluffy@iii.ca 2081 Eric Rescorla 2082 RTFM, Inc. 2083 2064 Edgewood Drive 2084 Palo Alto, CA 94303 2085 USA 2087 Phone: +1 650 678 2350 2088 Email: ekr@rtfm.com