diff options
Diffstat (limited to 'doc/rfc/rfc8946.txt')
-rw-r--r-- | doc/rfc/rfc8946.txt | 881 |
1 files changed, 881 insertions, 0 deletions
diff --git a/doc/rfc/rfc8946.txt b/doc/rfc/rfc8946.txt new file mode 100644 index 0000000..a5de86e --- /dev/null +++ b/doc/rfc/rfc8946.txt @@ -0,0 +1,881 @@ + + + + +Internet Engineering Task Force (IETF) J. Peterson +Request for Comments: 8946 Neustar +Updates: 8224 February 2021 +Category: Standards Track +ISSN: 2070-1721 + + + Personal Assertion Token (PASSporT) Extension for Diverted Calls + +Abstract + + The Personal Assertion Token (PASSporT) is specified in RFC 8225 to + convey cryptographically signed information about the people involved + in personal communications. This document extends PASSporT to + include an indication that a call has been diverted from its original + destination to a new one. This information can greatly improve the + decisions made by verification services in call forwarding scenarios. + Also specified here is an encapsulation mechanism for nesting a + PASSporT within another PASSporT that assists relying parties in some + diversion scenarios. + + This document updates RFC 8224. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc8946. + +Copyright Notice + + Copyright (c) 2021 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. The "div" PASSporT Type and Claim + 4. Using "div" in SIP + 4.1. Authentication Service Behavior + 4.2. Verification Service Behavior + 5. The "div-o" PASSporT Type + 5.1. Processing "div-o" PASSporTs + 6. Definition of "opt" + 7. "div" and Redirection + 8. Extending "div" to Work with Service Logic Tracking + 9. IANA Considerations + 9.1. JSON Web Token Claims Registrations + 9.1.1. "div" registration + 9.1.2. "opt" registration + 9.2. PASSporT Type Registrations + 10. Privacy Considerations + 11. Security Considerations + 12. References + 12.1. Normative References + 12.2. Informative References + Appendix A. Keys for Examples + Acknowledgments + Author's Address + +1. Introduction + + A Personal Assertion Token (PASSporT) [RFC8225] is a token format + based on the JSON Web Token (JWT) [RFC7519] for conveying + cryptographically signed information about the people involved in + personal communications; it is used by the Secure Telephone Identity + Revisited (STIR) protocol [RFC8224] to convey a signed assertion of + the identity of the participants in real-time communications + established via a protocol like SIP. This specification extends + PASSporT to include an indication that a call has been diverted from + its original destination to a new one. + + Although the STIR problem statement [RFC7340] is focused on + preventing the impersonation of the caller's identity, which is a + common enabler for threats such as robocalling and voicemail hacking + on the telephone network today, it also provides a signature over the + called number at the time that the authentication service sees it. + As [RFC8224], Section 12.1 describes, this protection over the + contents of the To header field is intended to prevent a class of + cut-and-paste attacks. If Alice calls Bob, for example, Bob might + attempt to cut and paste the Identity header field in Alice's INVITE + into a new INVITE that Bob sends to Carol, and thus be able to fool + Carol into thinking the call came from Alice and not Bob. With the + signature over the To header field value, the INVITE Carol sees will + clearly have been destined originally for Bob, and thus Carol can + view the INVITE as suspect. + + However, as [RFC8224], Section 12.1.1 points out, it is difficult for + Carol to confirm or reject these suspicions based on the information + she receives from the baseline PASSporT object. The common "call + forwarding" service serves as a good example of the reality that the + original called party number is not always the number to which a call + is delivered. There are a number of potential ways for + intermediaries to indicate that such a forwarding operating has taken + place. The address in the To header field value of SIP requests is + not supposed to change, according to baseline SIP behavior [RFC3261]; + instead, it is the Request-URI that is supposed to be updated when a + call is retargeted. Practically speaking, however, many operational + environments do alter the To header field. The History-Info header + field [RFC7044] was created to store the Request-URIs that are + discarded by a call in transit. The SIP Diversion header field + [RFC5806], though historic, is still used for this purpose by some + operators today. Neither of these header fields provide any + cryptographic assurance of secure redirection, and they both record + entries for minor syntactical changes in URIs that do not reflect a + change to the actual target of a call. + + Therefore, this specification extends PASSporT with an explicit + indication that the original called number in PASSporT no longer + reflects the destination to which a call is intended to be delivered. + For this purpose, it specifies a Divert PASSporT type ("div") for use + in common SIP retargeting cases; it is expected that in this case, + SIP INVITE requests will carry multiple Identity header fields, each + containing its own PASSporT. Throughout this document, PASSporTs + that contain a "div" element will be referred to as "div" PASSporTs. + Verification services and the relying parties who make authorization + decisions about communications may use this diversion indication to + confirm that a legitimate retargeting of the call has taken place, + rather than a cut-and-paste attack. For out-of-band use cases + [RFC8816] and other non-SIP applications of PASSporT, a separate + "div-o" PASSporT type is also specified, which defines an "opt" + PASSporT element for carrying nested PASSporTs within a PASSporT. + These shall in turn be referred to in this document as "div-o" + PASSporTs. + +2. Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +3. The "div" PASSporT Type and Claim + + This specification defines a PASSporT [RFC8225] type called "div", + which may be employed by authentication services located at + retargeting entities. All "div" PASSporTs MUST contain a new JSON + Web Token "div" claim, also specified in this document, which + indicates a previous destination for a call during its routing + process. When a retargeting entity receives a call signed with a + PASSporT, it may act as an authentication service and create a new + PASSporT containing the "div" claim to attach to the call. + + Note that a new PASSporT is only necessary when the canonical form of + the "dest" identifier (per the canonicalization procedures in + [RFC8224], Section 8.3) changes due to this retargeting. If the + canonical form of the "dest" identifier is not changed during + retargeting, then a new PASSporT with a "div" claim MUST NOT be + produced. + + The headers of the new PASSporTs generated by retargeting entities + MUST include the "div" PASSporT type and an "x5u" field pointing to a + credential that the retargeting entity controls. "div" PASSporTs MUST + use full form instead of compact form. The new PASSporT header will + look as follows: + + { "typ":"passport", + "ppt":"div", + "alg":"ES256", + "x5u":"https://www.example.com/cert.cer" } + + A "div" PASSporT claims set is populated with elements drawn from the + PASSporT(s) received for a call by the retargeting entity; at a high + level, the original identifier for the called party in the "dest" + object will become the "div" claim in the new PASSporT. If the + "dest" object of the original PASSporT contains multiple identifiers, + because it contains one or more name/value pairs with an array as its + value, the retargeting entity MUST select only one identifier from + the value(s) of the "dest" object to occupy the value of the "div" + field in the new PASSporT. Moreover, it MUST select an identifier + that is within the scope of the credential that the retargeting + entity will specify in the "x5u" of the PASSporT header (as described + below). + + The new target for the call selected by the retargeting entity + becomes the value of the "dest" object of the new PASSporT. The + "orig" object MUST be copied into the new PASSporT from the original + PASSporT received by the retargeting entity. The retargeting entity + SHOULD retain the "iat" object from the original PASSporT, though if + in the underlying signaling protocol (e.g., SIP) the retargeting + entity changes the date and time information in the retargeted + request, the new PASSporT should instead reflect that date and time. + No other claims or extensions are to be copied from the original + PASSporT to the "div" PASSporT. + + So, for an original PASSporT claims set of the form: + + { "dest":{"tn":["12155551213"]}, + "iat":1443208345, + "orig":{"tn":"12155551212"} } + + If the retargeting entity is changing the target from 12155551213 to + 12155551214, the claims set of a "div" PASSporT generated by the + retargeting entity would look as follows: + + { "dest":{"tn":["12155551214"]}, + "div":{"tn":"121555551213"}, + "iat":1443208345, + "orig":{"tn":"12155551212"} } + + The combined full form PASSporT (with a signature covered by the + ES256 keys given in Appendix A) would look as follows: + + eyJhbGciOiJFUzI1NiIsInBwdCI6ImRpdiIsInR5cCI6InBhc3Nwb3J0IiwieDV1Ij \ + oiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vY2VydC5jZXIifQ.eyJkZXN0Ijp7InRuI \ + jpbIjEyMTU1NTUxMjE0Il19LCJkaXYiOnsidG4iOiIxMjE1NTU1NTEyMTMifSwiaWF \ + 0IjoxNDQzMjA4MzQ1LCJvcmlnIjp7InRuIjoiMTIxNTU1NTEyMTIifX0.xBHWipDEE \ + J8a6TsdX6xUXAnblsFiGUiAxwLiv0HLC9IICj6eG9jQd6WzeSSjHRBwxmChHhVIiMT \ + SqIlk3yCNkg + + The same "div" PASSporT would result if the "dest" object of the + original PASSporT contained an array value, such as + {"tn":["12155551213","19995551234"]}, and the retargeting entity + chose to retarget from the first telephone number in the array. + Every "div" PASSporT is diverting from only one identifier. + + Note that the "div" element may contain other name/value pairs than + just a destination, including a History-Info indicator (see + Section 8). After the PASSporT header and claims have been + constructed, their signature is generated per the guidance in + [RFC8225] -- except for the credential required to sign it. While in + the ordinary construction of a PASSporT, the credential used to sign + will have authority over the identity in the "orig" claim (for + example, a certificate with authority over the telephone number in + "orig" per [RFC8226]), for all PASSporTs using the "div" type the + signature MUST be created with a credential with authority over the + identity present in the "div" claim. So for the example above, where + the original "dest" is "12155551213", the signer of the new PASSporT + object MUST have authority over that telephone number and need not + have any authority over the telephone number present in the "orig" + claim. + + Note that Identity header fields are not ordered in a SIP request, + and in a case where there is a multiplicity of Identity header fields + in a request, some sorting may be required to match "div" PASSporTs + to their originals. + + PASSporTs of type "div" MUST NOT contain an "opt" (see Section 6) + element in their payload. + +4. Using "div" in SIP + + This section specifies SIP-specific usage for the "div" PASSporT type + and its handling in the SIP Identity header field "ppt" parameter + value. Other protocols using PASSporT may define behavior specific + to their use of the "div" claim. + +4.1. Authentication Service Behavior + + An authentication service only adds an Identity header field value + containing the "div" PASSporT type to a SIP request that already + contains at least one Identity header field value; it MUST NOT add a + "div" PASSporT to an INVITE that contains no Identity header field. + The retargeting entity SHOULD act as a verification service and + validate the existing Identity header field value(s) in the request + before proceeding; in some high-volume environments, it may instead + put that burden of validating the chain entirely on the terminating + verification service. As the authentication service will be adding a + new PASSporT that refers to an original, it MUST NOT remove the + original request's Identity header field value before forwarding. + + As was stated in Section 3, the authentication service MUST sign any + "div" PASSporT with a credential that has a scope of authority + covering the identity it populates in the "div" element value. Note + that this is a significant departure from baseline STIR + authentication service behavior, in which the PASSporT is signed by a + credential with authority over the "orig" field. The "div" value + reflects the URI that caused the call to be routed to the retargeting + entity, so in ordinary operations, it would already be the STIR + entity holding the appropriate private keying material for calls + originating from that identity. + + A SIP authentication service typically will derive the "dest" element + value of a "div" PASSporT from a new Request-URI that is set for the + SIP request before it is forwarded. Older values of the Request-URI + may appear in header fields like Diversion or History-Info; this + document specifies an optional interaction with History-Info below in + Section 8. Note as well that because PASSporT operates on + canonicalized telephone numbers and normalized URIs, many smaller + changes to the syntax of identifiers that might be captured by other + mechanisms that record retargeting (like History-Info) will likely + not require a "div" PASSporT. + + When adding an Identity header field with a PASSporT claims set + containing a "div" claim, SIP authentication services MUST also add a + "ppt" parameter to that Identity header with a value of "div". For + the example PASSporT given in Section 3, the new Identity header + added after retargeting might look as follows: + + Identity:eyJhbGciOiJFUzI1NiIsInBwdCI6ImRpdiIsInR5cCI6InBhc3Nwb3J0I \ + iwieDV1IjoiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vY2VydC5jZXIifQ.eyJkZXN0 \ + Ijp7InRuIjpbIjEyMTU1NTUxMjE0Il19LCJkaXYiOnsidG4iOiIxMjE1NTU1NTEyMT \ + MifSwiaWF0IjoxNDQzMjA4MzQ1LCJvcmlnIjp7InRuIjoiMTIxNTU1NTEyMTIifX0. \ + xBHWipDEEJ8a6TsdX6xUXAnblsFiGUiAxwLiv0HLC9IICj6eG9jQd6WzeSSjHRBwxm \ + ChHhVIiMTSqIlk3yCNkg; \ + info=<https://www.example.com/cert.cer>;ppt="div" + + Note that in some deployments, an authentication service will need to + generate "div" PASSporTs for a request that contains multiple + non-"div" Identity header field values. For example, a request + arriving at a retargeting entity might contain, in different Identity + header fields, a baseline [RFC8224] PASSporT and a PASSporT of type + "rph" [RFC8443] signed by a separate authority. Provided that these + PASSporTs share the same "orig" and "dest" values, the retargeting + entity's authentication service SHOULD generate only one "div" + PASSporT. If the "orig" or "dest" of these PASSporTs differ, + however, one "div" PASSporT SHOULD be generated for each non-"div" + PASSporT. Note that this effectively creates multiple chains of + "div" PASSporTs in a single request, which complicates the procedures + that need to be performed at verification services. + + Furthermore, a request may also be retargeted a second time, at which + point the subsequent retargeting entity SHOULD generate one "div" + PASSporT for each previous "div" PASSporT in the request that + contains a "dest" object with the value of the current target -- but + not for "div" PASSporTs with earlier targets. Ordinarily, the + current target will be readily identifiable, as it will be in the + last "div" PASSporT in each chain, and in SIP cases, it will + correspond to the Request-URI received by the retargeting entity. + Moreover, the current target will be an identifier that the + retargeting entity possesses a credential to sign for, which may not + be true for earlier targets. Ultimately, on each retargeting, the + number of PASSporTs added to a request will be equal to the number of + non-"div" PASSporTs that do not share the same "orig" and "dest" + object values. + +4.2. Verification Service Behavior + + [RFC8224], Section 6.2, Step 5 requires that specifications defining + "ppt" values describe any additional or alternative verifier + behavior. The job of a SIP verification service handling one or more + "div" PASSporTs is very different from that of a traditional + verification service. At a high level, the immediate responsibility + of the verification service is to extract all PASSporTs from the two + or more Identity header fields in a request, identify which are "div" + PASSporTs and which are not, and then order and link the "div" + PASSporTs to the original PASSporT(s) in order to build one or more + chains of retargeting. + + In order to validate a SIP request using the "div" PASSporT type, a + verification service needs to inspect all of the valid Identity + header field values associated with a request, as an Identity header + field value containing "div" necessarily refers to an earlier + PASSporT already in the message. For each "div" PASSporT, the + verification service MUST find an earlier PASSporT that contains a + "dest" claim with a value equivalent to the "div" claim in each "div" + PASSporT. It is possible that this earlier PASSporT will also + contain a "div" and that it will in turn chain to a still earlier + PASSporT stored in a different Identity header field value. If a + complete chain cannot be constructed, the verification service cannot + complete "div" validation; it MAY still validate any non-"div" + PASSporTs in the request per the normal procedures in [RFC8224]. If + a chain has been successfully constructed, the verification service + extracts from the outermost (that is, the most recent) PASSporT in + the chain a "dest" field; this will be a "div" PASSporT that no other + "div" PASSporT in the SIP request refers to. Its "dest" element + value will be referred to in the procedures that follow as the value + of the "outermost "dest" field". + + Ultimately, by looking at this chain of transformations and + validating the associated signatures, the verification service will + be able to ascertain that the appropriate parties were responsible + for the retargeting of the call to its current destination. This can + help the verification service to determine that the original PASSporT + in the call was not simply used in a cut-and-paste attack and inform + any associated authorization decisions in terms of how the call will + be treated -- though, per [RFC8224], Section 6.2.1, that decision is + a matter of local policy and is thus outside the scope of this + specification. + + A verification service parses a chain of PASSporTs as follows: + + 1. The verification service MUST compare the value in the outermost + "dest" field to the target of the call. As it is anticipated + that SIP authentication services that create "div" PASSporTs will + populate the "dest" header from the retargeted Request-URI (see + Section 4.1), in ordinary SIP operations, the Request-URI is + where verification services will find the latest call target. + Note, however, that after a "div" PASSporT has been added to a + SIP request, the Request-URI may have been updated during normal + call processing to an identifier that no longer contains the + logical destination of a call; in this case, the verification + service MAY compare the "dest" field to a provisioned telephone + number for the recipient. + + 2. The verification service MUST validate the signature over the + outermost "div" PASSporT and establish that the credential that + signed the "div" PASSporT has the authority to attest for the + identifier in the "div" element of the PASSporT (per [RFC8224], + Section 6.2, Step 3). + + 3. The verification service MUST validate that the "orig" field of + the innermost PASSporT of the chain (the only PASSporT in the + chain that will not be of PASSporT type "div") is equivalent to + the "orig" field of the outermost "div" PASSporT; in other words, + that the original calling identifier has not been altered by + retargeting authentication services. If the "orig" value has + changed, the verification service MUST treat the entire PASSporT + chain as invalid. The verification service MUST also verify that + all other "div" PASSporTs in the chain share the same "orig" + value. Then, the verification service validates the relationship + of the "orig" field to the SIP-level call signaling per the + guidance in [RFC8224], Section 6.2, Step 2. + + 4. The verification service MUST check the date freshness in the + outermost "div" PASSporT, per [RFC8224], Section 6.2, Step 4. + Furthermore, it is RECOMMENDED that the verification service + check that the "iat" field of the innermost PASSporT is also + within the date freshness interval; otherwise, the verification + service could allow attackers to replay an old, stale PASSporT + embedded in a fresh "div". However, note that in some use cases, + including certain ways that call transfers are implemented, it is + possible that an established call will be retargeted long after + it has originally been placed, and verification services may want + to allow a longer window for the freshness of the innermost + PASSporT if the call is transferred from a trusted party (as an + upper bound, a freshness window on the order of three hours might + suffice). + + 5. The verification service MUST inspect and validate the signatures + on each and every PASSporT object in the chain between the + outermost "div" PASSporT and the innermost PASSporT. Note that + (per Section 4.1) a chain may terminate at more than one + innermost PASSporT, in cases where a single "div" is used to + retarget from multiple innermost PASSporTs. Also note that + [RFC8224], Section 6.2, Step 1 applies to the chain validation + process; if the innermost PASSporT contains an unsupported "ppt", + its chain MUST be ignored. + + Note that the To header field is not used in the first step above. + Optionally, the verification service MAY verify that the To header + field value of the received SIP signaling is equal to the "dest" + value in the innermost PASSporT; however, as has been observed in + some deployments, the original To header field value may be altered + by intermediaries to reflect changes of target. Deployments that + change the original To header field value to conceal the original + destination of the call from the ultimate recipient should note that + the original destination of a call may be preserved in the innermost + PASSporT. Future work on "div" might explore methods to implement + that sort of policy while retaining a secure chain of redirection. + +5. The "div-o" PASSporT Type + + This specification defines a "div-o" PASSporT type that uses the + "div" claim element in conjunction with the "opt" (Section 6) claim + element. As is the case with "div" PASSporT type, a "div-o" PASSporT + is created by an authentication service acting for a retargeting + entity, but instead of generating a separate "div" PASSporT to be + conveyed alongside an original PASSporT, the authentication service + in this case embeds the original PASSporT inside the "opt" element of + the "div-o" PASSporT. The "div-o" extension is designed for use in + non-SIP or gatewayed SIP environments where the conveyance of + PASSporTs in separate Identity header fields in impossible, such as + out-of-band STIR scenarios [RFC8816]. + + The syntax of "div-o" PASSporTs is very similar to "div". A "div-o" + PASSporT header object might look as follows: + + { "typ":"passport", + "ppt":"div-o", + "alg":"ES256", + "x5u":"https://www.example.com/cert.cer" } + + Whereas a "div" PASSporT claims set contains only the "orig", "dest", + "iat", and "div" elements, the "div-o" additionally MUST contain an + "opt" element (see Section 6), which encapsulates the full form of + the previous PASSporT from which the call was retargeted, triggering + the generation of this "div-o". The format of the "opt" element is + identical to the encoded PASSporT format given in Appendix A of + [RFC8225]. + + So, for an original PASSporT claims set of the form: + + { "orig":{"tn":"12155551212"}, + "dest":{"tn":["12155551213"]}, + "iat":1443208345 } + + If the retargeting entity is changing the target from 12155551213 to + 12155551214, the new PASSporT claims set for "div-o" would look as + follows: + + { "orig":{"tn":"12155551212"}, + "dest":{"tn":["12155551214"]}, + "iat":1443208345, + "div":{"tn":"121555551213"}, + "opt":"eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0c \ + HM6Ly93d3cuZXhhbXBsZS5jb20vY2VydC5jZXIifQ.eyJkZXN0Ijp7InRuIjpbIj \ + EyMTU1NTUxMjEzIl19LCJpYXQiOjE0NDMyMDgzNDUsIm9yaWciOnsidG4iOiIxMj \ + E1NTU1MTIxMiJ9fQ.1bEzkzcNbKvgz4QoMx0_DJ2T8qFMDC1sPqHPXl1WvbauzRJ \ + RvYlZqQ0qgGTlS8tJ_wXjVe07Z3wvDrdApHhhYw" } + + While in ordinary operations, it is not expected that SIP would carry + a "div-o" PASSporT, it might be possible in some gatewaying + scenarios. The resulting full form Identity header field with a + "div-o" PASSporT would look as follows: + + Identity:eyJhbGciOiJFUzI1NiIsInBwdCI6ImRpdi1vIiwidHlwIjoicGFzc3Bvc \ + nQiLCJ4NXUiOiJodHRwczovL3d3dy5leGFtcGxlLmNvbS9jZXJ0LmNlciJ9.eyJkZX \ + N0Ijp7InRuIjoiMTIxNTU1NTEyMTQifSwiZGl2Ijp7InRuIjoiMTIxNTU1NTUxMjEz \ + In0sImlhdCI6MTQ0MzIwODM0NSwib3B0IjoiZXlKaGJHY2lPaUpGVXpJMU5pSXNJbl \ + I1Y0NJNkluQmhjM053YjNKMElpd2llRFYxSWpvaWFIUjBjSE02THk5M2QzY3VaWGho \ + YlhCc1pTNWpiMjB2WTJWeWRDNWpaWElpZlEuZXlKa1pYTjBJanA3SW5SdUlqcGJJak \ + V5TVRVMU5UVXhNakV6SWwxOUxDSnBZWFFpT2pFME5ETXlNRGd6TkRVc0ltOXlhV2Np \ + T25zaWRHNGlPaUl4TWpFMU5UVTFNVEl4TWlKOWZRLjFiRXpremNOYkt2Z3o0UW9NeD \ + BfREoyVDhxRk1EQzFzUHFIUFhsMVd2YmF1elJKUnZZbFpxUTBxZ0dUbFM4dEpfd1hq \ + VmUwN1ozd3ZEcmRBcEhoaFl3Iiwib3JpZyI6eyJ0biI6IjEyMTU1NTUxMjEyIn19.C \ + HeA9wRnthl7paMe6rP0TARpmFCXjmi_vF_HRz2O_oulB_R-G9xZNiLVvmvHv4gk6LI \ + LaDV2y2VtHTLIEgmHig; \ + info=<https://www.example.com/cert.cer>;ppt="div-o" + +5.1. Processing "div-o" PASSporTs + + The authentication and verification service procedures required for + "div-o" closely follow the guidance given in Sections 4.1 and 4.2, + with the major caveats being, first, that they do store or retrieve + PASSporTs via the Identity header field values of SIP requests and, + second, that they process nested PASSporTs in the "opt" claim + element. But transposing the rest of the behaviors described above + to creating and validating "div-o" PASSporTs is straightforward. + + For the "div-o" PASSporT type, retargeting authentication services + that handle calls with one or more existing PASSporTs will create a + corresponding "div-o" PASSporT for each received PASSporT. Each + "div-o" PASSporT MUST contain an "opt" claim set element with the + value of the original PASSporT from which the "div-o" was created; as + specified in Section 4.1, the authentication service MUST populate + the "div" claim set element of the "div-o" PASSporT with the "dest" + field of the original PASSporT. Each received PASSporT may in turn + contain its own "opt" claim set element if the retargeting + authentication service is not the first in its chain. Note that if + the retargeting authentication service is handling a call with + multiple PASSporTs, which in ordinary SIP operation would result in + the construction of multiple "div" chains, it will in effect be + generating one "div-o" PASSporT per chain. + + The job of a verification service is in many ways easier for "div-o" + than for "div", as the verification service has no need to correlate + the PASSporTs it receives and assemble them into chains, as any + chains in "div-o" will be nested through the "opt" element. + Nonetheless, the verification services MUST perform the same chain + validation described in Section 4.2 to validate that each nested + PASSporT shares the same "orig" field as its enclosing PASSporT and + that the "dest" field of each nested PASSporT corresponds to the + "div" field of its enclosing PASSporT. The same checks MUST also be + performed for freshness, signature validation, and so on. It is + similarly OPTIONAL for the verification service to determine that the + "dest" claims element of the outermost PASSporT corresponds to the + called party indication of receive telephone signaling, where such + indication would vary depending on the using protocol. + + How authentication services or verification services receive or + transport PASSporTs for "div-o" is outside the scope of this document + and dependent on the using protocol. + +6. Definition of "opt" + + The presence of an "Original PASSporT" ("opt") claims set element + signifies that a PASSporT encapsulates another entire PASSporT within + it, typically a PASSporT that was transformed in some way to create + the current PASSporT. Relying parties may need to consult the + encapsulated PASSporT in order to validate the identity of a caller. + "opt", as defined in this specification, may be used by future + PASSporT extensions as well as in conjunction with "div-o". + + "opt" MUST contain a quoted full-form PASSporT, as specified by + [RFC8225], Appendix A; it MUST NOT contain a compact form PASSporT. + For an example of a "div-o" PASSporT containing "opt", see Section 5. + +7. "div" and Redirection + + The "div" mechanism exists primarily to prevent false negatives at + verification services when an arriving SIP request, due to + intermediary retargeting, does not appear to be intended for its + eventual recipient, because the original PASSporT "dest" value + designates a different destination. + + Any intermediary that assigns a new target to a request can, instead + of retargeting and forwarding the request, redirect with a 3xx + response code. In ordinary operations, a redirection poses no + difficulties for the operations of baseline STIR: when the user agent + client (UAC) receives the 3xx response, it will initiate a new + request to the new target (typically the target carried in the + Contact header field value of the 3xx), and the "dest" of the + PASSporT created for the new request will match that new target. As + no impersonation attack can arise from this case, it creates no new + requirements for STIR. + + However, some UACs record the original target of a call with + mechanisms like History-Info [RFC7044] or Diversion [RFC5806] and may + want to leverage STIR to demonstrate to the ultimate recipient that + the call has been redirected securely, that is, that the original + destination was the one that sent the redirection message that led to + the recipient receiving the request. The semantics of the PASSporT + necessary for that assertion are the same as those for the "div" + retargeting cases above. The only wrinkle is that the PASSporT needs + to be generated by the redirecting entity and sent back to the + originating user agent client within the 3xx response. + + This introduces more complexity than might immediately be apparent. + In the first place, a 3xx response can convey multiple targets + through the Contact header field value; to accommodate this, the + "div" PASSporT MAY include one "dest" object array value per Contact, + but if the retargeting entity wants to keep the Contact list private + from targets, it may need to generate one PASSporT per Contact. Bear + in mind as well that the original SIP request could have carried + multiple Identity header field values that had been added by + different authentication services in the request path, so a + redirecting entity might need to generate one "div" PASSporT for each + PASSporT in the original request. Often, this will mean just one + "div" PASSporT, but for some deployment scenarios, it could require + an impractical number of combinations. But in very complex call + routing scenarios, attestation of source identity would only add + limited value anyway. + + Therefore, STIR-aware SIP intermediaries that redirect requests MAY + convey one or more PASSporTs in the backwards direction within + Identity header fields. These redirecting entities will act as + authentication services for "div" as described in Section 4.1. This + document consequently updates [RFC8224] to permit carrying Identity + header fields in SIP 300-class responses. It is left to the + originating user agent to determine which Identity header fields + should be copied from the 3xx into any new requests resulting from + the redirection, if any; use of these Identity header fields by + entities receiving a 3xx response is OPTIONAL. + + Finally, note that if an intermediary in the response path consumes + the 3xx and explores new targets itself while performing sequential + forking, it will effectively retarget the call on behalf of the + redirecting server, and this will create the same need for "div" + PASSporTs as any other retargeted call. These intermediaries MAY + also copy PASSporTs from the 3xx response and insert them into + sequential forking requests, if appropriate. + +8. Extending "div" to Work with Service Logic Tracking + + It is anticipated that "div" may be used in concert with History-Info + [RFC7044] in some deployments. It may not be clear from the "orig" + and "dest" values which History-Info header a given PASSporT + correlates to, especially because some of the target changes tracked + by History-Info will not be reflected in a "div" PASSporT (see + Section 1). Therefore, an "hi" element as defined here may appear in + "div" corresponding to the History-Info header field index parameter + value. So for a History-Info header field with an index value of + "1.2.1", the claims set of the corresponding PASSporT with "div" + might look like: + + { "orig":{"tn":"12155551212"}, + "dest":{"tn":["12155551214"]}, + "iat":1443208345, + "div":{"tn":"121555551213", + "hi":"1.2.1"} } + + Past experience has shown that there may be additional information + about the motivation for retargeting, which relying parties might + consider when making authorization decisions about a call; see, for + example, the "reason" associated with the SIP Diversion header field + [RFC5806]. Future extensions to this specification might incorporate + reasons into "div". + +9. IANA Considerations + +9.1. JSON Web Token Claims Registrations + + Per this specification, IANA has added two new claims to the "JSON + Web Token Claims" registry as defined in [RFC7519]. + +9.1.1. "div" registration + + Claim Name: div + + Claim Description: Diverted Target of a Call + + Change Controller: IESG + + Reference: RFC 8946 + +9.1.2. "opt" registration + + Claim Name: opt + + Claim Description: Original PASSporT (in Full Form) + + Change Controller: IESG + + Reference: RFC 8946 + +9.2. PASSporT Type Registrations + + This specification defines two new PASSporT types for the "Personal + Assertion Token (PASSporT) Extensions" registry defined in [RFC8225], + which resides at <https://www.iana.org/assignments/passport>. They + are: + + * "div", as defined in Section 3. + + * "div-o", as defined in Section 5. + + +10. Privacy Considerations + + There is an inherent trade-off in any mechanism that tracks, in SIP + signaling, how calls are routed through a network, as routing + decisions may expose policies set by users for how calls are + forwarded, potentially revealing relationships between different + identifiers representing the same user. Note, however, that in + ordinary operations, this information is revealed to the user agent + service of the called party, not the calling party. It is usually + the called party who establishes these forwarding relationships, and + if indeed some other party is responsible for calls being forwarded + to the called party, many times the called party should likely be + entitled to information about why they are receiving these calls. + Similarly, a redirecting entity who sends a 3xx in the backwards + direction knowingly shares information about service logic with the + caller's network. However, as there may be unforeseen circumstances + where the revelation of service logic to the called party poses a + privacy risk, implementers and users of this or similar diversion- + tracking techniques should understand the trade-off. + + Furthermore, it is a general privacy risk of identity mechanisms + overall that they do not interface well with anonymization services; + the interaction of STIR with anonymization services is detailed in + [RFC8224], Section 11. Any forwarding service that acts as an + anonymizing proxy may not be able to provide a secure chain of + retargeting due to the obfuscation of the originating identity. + + Also see [RFC8224], Section 11 for further considerations on the + privacy of using PASSporTs in SIP. + +11. Security Considerations + + This specification describes a security feature and is primarily + concerned with increasing security when calls are forwarded. + Including information about how calls were retargeted during the + routing process can allow downstream entities to infer particulars of + the policies used to route calls through the network. However, + including this information about forwarding is at the discretion of + the retargeting entity, so if there is a requirement to keep an + intermediate called number confidential, no PASSporT should be + created for that retargeting -- the only consequence will be that + downstream entities will be unable to correlate an incoming call with + the original PASSporT without access to some prior knowledge of the + policies that could have caused the retargeting. + + Any extension that makes PASSporTs larger creates a potential + amplification mechanism for SIP-based DDoS attacks. Since diversion + PASSporTs are created as a part of normal forwarding activity, this + risk arises at the discretion of the retargeting domain; simply using + 3xx response redirections rather than retargeting (by supplying a + "div" per Section 7) mitigates the potential impact. Under unusual + traffic loads, even domains that might ordinarily retarget requests + can switch to redirection. + + SIP has an inherent capability to redirect requests, including + forking them to multiple parties -- potentially, a very large number + of parties. The use of the "div" PASSporT type does not grant any + additional powers to attackers who hope to place bulk calls; if + present, the "div" PASSporT instead identifies the party responsible + for the forwarding. As such, senders of bulk unsolicited traffic are + unlikely to find the use of "div" attractive. + +12. References + +12.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, + A., Peterson, J., Sparks, R., Handley, M., and E. + Schooler, "SIP: Session Initiation Protocol", RFC 3261, + DOI 10.17487/RFC3261, June 2002, + <https://www.rfc-editor.org/info/rfc3261>. + + [RFC7044] Barnes, M., Audet, F., Schubert, S., van Elburg, J., and + C. Holmberg, "An Extension to the Session Initiation + Protocol (SIP) for Request History Information", RFC 7044, + DOI 10.17487/RFC7044, February 2014, + <https://www.rfc-editor.org/info/rfc7044>. + + [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token + (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, + <https://www.rfc-editor.org/info/rfc7519>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, + "Authenticated Identity Management in the Session + Initiation Protocol (SIP)", RFC 8224, + DOI 10.17487/RFC8224, February 2018, + <https://www.rfc-editor.org/info/rfc8224>. + + [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion + Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, + <https://www.rfc-editor.org/info/rfc8225>. + + [RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity + Credentials: Certificates", RFC 8226, + DOI 10.17487/RFC8226, February 2018, + <https://www.rfc-editor.org/info/rfc8226>. + +12.2. Informative References + + [RFC5806] Levy, S. and M. Mohali, Ed., "Diversion Indication in + SIP", RFC 5806, DOI 10.17487/RFC5806, March 2010, + <https://www.rfc-editor.org/info/rfc5806>. + + [RFC7340] Peterson, J., Schulzrinne, H., and H. Tschofenig, "Secure + Telephone Identity Problem Statement and Requirements", + RFC 7340, DOI 10.17487/RFC7340, September 2014, + <https://www.rfc-editor.org/info/rfc7340>. + + [RFC8443] Singh, R., Dolly, M., Das, S., and A. Nguyen, "Personal + Assertion Token (PASSporT) Extension for Resource Priority + Authorization", RFC 8443, DOI 10.17487/RFC8443, August + 2018, <https://www.rfc-editor.org/info/rfc8443>. + + [RFC8816] Rescorla, E. and J. Peterson, "Secure Telephone Identity + Revisited (STIR) Out-of-Band Architecture and Use Cases", + RFC 8816, DOI 10.17487/RFC8816, February 2021, + <https://www.rfc-editor.org/info/rfc8816>. + +Appendix A. Keys for Examples + + The following EC256 keys are used in the signing examples given in + this document. WARNING: Do not use this key pair in production + systems. + + -----BEGIN PUBLIC KEY----- + MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmzGM1VsO+3IqbMF54rQMaYKQftO4 + hUYm9wv5wutLgEd9FsiTy3+4+Wa2O7pffOXPC0QzO+yD8hGEXGP/2mZo6w== + -----END PUBLIC KEY----- + + -----BEGIN EC PRIVATE KEY----- + MHcCAQEEIFKCsFZ4Wsw3ZpBxgc4Z0sOjaXDdMk07Ny1fKg6OntAkoAoGCCqGSM49 + AwEHoUQDQgAEmzGM1VsO+3IqbMF54rQMaYKQftO4hUYm9wv5wutLgEd9FsiTy3+4 + +Wa2O7pffOXPC0QzO+yD8hGEXGP/2mZo6w== + -----END EC PRIVATE KEY----- + +Acknowledgments + + We would like to thank Ning Zhang, Dave Hancock, Chris Wendt, Sean + Turner, Russ Housley, Ben Campbell, Eric Burger, and Robert Sparks + for contributions to this document. + +Author's Address + + Jon Peterson + Neustar, Inc. + 1800 Sutter St., Suite 570 + Concord, CA 94520 + United States of America + + Email: jon.peterson@team.neustar |