Network Working Group J. Peterson
Internet-Draft Neustar Inc.
Intended status: Standards Track C. Wendt
Expires: August 22, 2019 Comcast
February 18, 2019

PASSporT Extension for Rich Call Data
draft-ietf-stir-passport-rcd-02

Abstract

This document extends PASSporT, a token for conveying cryptographically-signed information about personal communications, to include rich data that can be rendered to users, such as a human-readable display name comparable to the “Caller ID” function common on the telephone network. The element defined for this purpose is extensible to include related information about calls that helps people decide whether to pick up the phone.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on August 22, 2019.

Copyright Notice

Copyright (c) 2019 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

PASSporT [RFC8225] is a token format based on JWT [RFC7519] for conveying cryptographically-signed information about the people involved in personal communications; it is used to convey a signed assertion of the identity of the participants in real-time communications established via a protocol like SIP [RFC8224]. The STIR problem statement [RFC7340] declared securing the display name of callers outside of STIR’s initial scope, so baseline STIR provides no features for caller name. This specification documents an optional mechanism for PASSporT and the associated STIR mechanisms which extends PASSporT to carry additional elements conveying richer information: information that is intended to be rendered to an end user to assist a called party in determining whether to accept or trust incoming communications. This includes the name of the person on one side of a communications session, the traditional “Caller ID” of the telephone network, along with related display information that would be rendered to the called party during alerting, or potentially used by an automaton to determine whether and how to alert a called party.

In the traditional telephone network, the display name associated with a call is typically provided in one of three ways: by a third-party service queried at the terminating side, by the originator of the call, or through a local address book maintained by a device on the terminating side. The STIR architecture lends itself especially to the first of these approaches, as it assumes that an authority on the originating side of the call provides a cryptographic assurance of the validity of the calling party number in order to prevent impersonation attacks. That same authority could sign for a display name associated with that number, which the terminating side could render to the user when the call is alerting. Even when the originating side does not provide a display name for the caller, the cryptographic attestation of the validity of the calling number provided by STIR still allows the terminating side to query a local or remote service for a name associated with that number without fear that the number has been impersonated by the caller; STIR thus makes “Caller ID” more secure even when there is no first-party attestation of a display name. For these cases, this specification outlines various ways that a display name for a calling party could be determined at the terminating side in a secure fashion.

2. Terminology

In this document, the key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” are to be interpreted as described in [RFC2119] and [RFC6919].

3. PASSporT ‘rcd’ Claim

This specification defines a new JSON Web Token claim for ‘rcd’, Rich Call Data, the value of which is a JSON object that can contain one or more key value pairs. This document defines a default set of three key values one being mandatory, the others are optional.

3.1. ‘nam’ key

The ‘nam’ key value is a display name, associated with the originator of personal communications, which may for example derive from the display-name component of the From header field value of a SIP request, or a similar field in other PASSporT using protocols. This key is mandatory and MUST be included as as part of the ‘rcd’ claim value JSON object.

3.2. ‘jcd’ key

The ‘jcd’ key value is defined to contain a value of a jCard [RFC7095] JSON object. This jCard object is intended to be an extensible object that the calling party of personal communications can provide both the types of information defined in jCard or can use the built in extensibility of the jCard specification to add additional information. The ‘jcd’ is optional. If included, this key MUST only be included once in the ‘rcd’ JSON object and SHOULD NOT be included if there is a ‘jcl’ key included. The ‘jcd’ and ‘jcl’ keys should be mutually exclusive.

3.3. ‘jcl’ key

The ‘jcl’ key value is defined to contain a HTTPS URL that refers the recipient to a jCard [RFC7095] JSON object hosted on a HTTPS enabled web server. This link is intended to be an external reference to a JSON file with the same intended use of the ‘jcd’ jCard object and has the same intended properties. The ‘jcl’ key is optional. If included, this key MUST only be included once in the ‘rcd’ JSON object and SHOULD NOT be included if there is a ‘jcd’ key included. The ‘jcd’ and ‘jcl’ keys should be mutually exclusive.

3.4. ‘rcd’ Usage

The ‘rcd’ claim may appear in any PASSporT claims object as an optional element. The creator of a PASSporT MAY however add a ‘ppt’ value of ‘rcd’ to the header of a PASSporT as well, in which case the PASSporT claims MUST contain a ‘rcd’ claim, and any entities verifying the PASSporT object will be required to understand the ‘ppt’ extension in order to process the PASSporT in question. A PASSporT header with the ‘ppt’ included will look as follows:

{ "typ":"passport",
  "ppt":"rcd",
  "alg":"ES256",
  "x5u":"https://www.example.com/cert.cer" }

The PASSporT claims object will then contain the “rcd” key with its corresponding value. The value of “rcd” is an array of JSON objects, of which one, the “nam” object, is mandatory. The key syntax of “nam” follows the display-name ABNF given in [RFC3261].

After the header and claims PASSporT objects have been constructed, their signature is generated normally per the guidance in [RFC8225].

3.5. Example ‘rcd’ PASSporTs

An example of a ‘nam’ only PASSporT claims obejct is shown next (with line breaks for readability only).

{  "orig":{"tn":"12025551000"},
   "dest":{"tn":"12025551001"},
   "iat":1443208345,
   "rcd":{"nam":"James Bond"} }

An example of a PASSporT claims object that includes the “jcd” which is optional, but will also include the mandatory “nam” object is shown next (with line breaks for readability only).

{  "orig":{"tn":"12025551000"},
   "dest":{"tn":"12155551001"},
   "iat":1443208345,
   "rcd":{"nam":"James Bond","jcd":["vcard",[["version",{},"text","4.0"],
       ["fn",{},"text", "James Bond"],
       ["n",{},"text",["Bond","James","","","Mr."]],
       ["adr",{"type":"work"},"text",
         ["","","3100 Massachusetts Avenue NW","Washington","DC","20008","USA"]
       ],
       ["email",{},"text","007@mi6-hq.com"],
       ["tel",{"type":["voice","text","cell"],"pref":"1"},"uri",
        "tel:+1-202-555-1000"],
       ["tel",{"type":["fax"]},"uri","tel:+1-202-555-1001"],
       ["bday",{},"date","19241116"],
       ["logo",{},"uri",
       "https://upload.wikimedia.org/wikipedia/en/c/c5/Fleming007impression.jpg"
       ]]]}}

In an example PASSporT where a jCard is linked via HTTPS URL and ‘jcl’ a jCard file served at a particular URL will be created.

An example jCard JSON file is shown as follows:

["vcard",
  [
    ["version", {}, "text", "4.0"],
    ["fn", {}, "text", "James Bond"],
    ["n", {}, "text", ["Bond", "James", "", "", "Mr."]],
    ["adr", {"type":"work"}, "text",
      ["", "", "3100 Massachusetts Avenue NW", "Washington", "DC", "20008",
      "USA"]
    ],
    ["email", {}, "text", "007@mi6-hq.com"],
    ["tel", { "type": ["voice", "text", "cell"], "pref": "1" }, "uri",
      "tel:+1-202-555-1000"],
    ["tel", { "type": ["fax"] }, "uri", "tel:+1-202-555-1001"],
    ["bday", {}, "date", "19241116"]
    ["logo", {}, "uri",
    "https://upload.wikimedia.org/wikipedia/en/c/c5/Fleming007impression.jpg"]
  ]
]

If that jCard is hosted at the example address of “https://example.org/james_bond.json”, the cooresponding PASSporT claims object would be as follows (with line breaks for readability only):

{  "orig":{"tn":"12025551000"},
   "dest":{"tn":"12155551001"},
   "iat":1443208345,
   "rcd":{"nam":"James Bond","jcl":"https://example.org/james_bond.json"}
   }

4. Further Information Associated with Callers

Beyond naming information and the information that can be contained in a jCard [RFC7095] object, there may be additional human-readable information about the calling party that should be rendered to the end user in order to help the called party decide whether or not to pick up the phone. This is not limited to information about the caller, but includes information about the call itself, which may derive from analytics that determine based on call patterns or similar data if the call is likely to be one the called party wants to receive. Such data could include:

All of these data elements would benefit from the secure attestations provided by the STIR and PASSporT frameworks. A new IANA registry has been defined to hold potential values of the “rcd” array; see Section 10.3. Specific extensions to the “rcd” PASSporT claim are left for future specification.

While in the traditional telephone network, the business relationship between calling customers and their telephone service providers is the ultimate root of information about a calling party’s name, some other forms of data like crowdsourced reputation scores might derive from third parties. It is more likely that when those elements are present, they will be in a third-party “rcd” PASSporT.

5. Third-Party Uses

While rich data about the call can be provided by an originating authentication service, the terminating side or an intermediary in the call path could also acquire rich call data by querying a third-party service. In telephone operations today, a third-party information service is commonly queried with the calling party’s number in order to learn the name of the calling party, and potentially other helpful information could also be passed over that interface. The value of using a PASSporT to convey this information from third parties lies largely in the preservation of the original authority’s signature over the data, and the potential for the PASSporT to be conveyed from intermediaries to endpoint devices. Effectively, these use cases form of subcase of out-of-band [I-D.ietf-stir-oob] use cases. The manner in which third-party services are discovered is outside the scope of this document.

An intermediary use case might look as follows: a SIP INVITE carries a display name in its From header field value and an initial PASSporT object without the “rcd” claim. When the a terminating verification service implemented at a SIP proxy server receives this request, and determines that the signature is valid, it might query a third-party service that maps telephone numbers to calling party names. Upon receiving the PASSport in a response from that third-party service, the terminating side could add a new Identity header field to the request for the “rcd” PASSporT object provided by the third-party service. It would then forward the INVITE to the terminating user agent. If the display name in the “rcd” PASSporT object matches the display name in the INVITE, then the name would presumably be rendered to the end user by the terminating user agent.

A very similar flow could be followed by an intermediary closer to the origination of the call. Presumably such a service could be implemented at an originating network in order to decouple the systems that sign for calling party numbers from the systems that provide rich data about calls.

In an alternative use case, the terminating user agent might query a third-party service. In this case, no new Identity header field would be generated, though the terminating user agent might receive a PASSporT object in return from the third-party service, and use the “rcd” field in the object as a calling name to render to users while alerting.

5.1. Signing as a Third Party

When a third party issues a PASSporT with an “rcd” claim, the PASSporT MUST contain the “rcd” “ppt” type in its header object. It moreover MUST include an “iss” claim as defined in [RFC7519] to indicate the source of this PASSporT; that field SHOULD be populated with the subject of the credential used to sign the PASSporT.

A PASSporT with a “ppt” of “rcd” MAY be signed with credentials that do not have authority over the identity that appears in the “orig” element of the PASSporT claims. Relying parties in STIR have always been left to make their own authorization decisions about whether or not the trust the signers of PASSporTs, and in the third-party case, where an entity has explicitly queried a service to acquire the PASSporT object, it may be some external trust or business relationship that induces the relying party to trust a PASSporT.

An example of a Third Party issued PASSporT claims object is as follows.

{  "orig":{"tn":"12025551000"},
   "dest":{"tn":"12025551001"},
   "iat":1443208345,
   "iss":"Example, Inc.",
   "rcd":{"nam":"James Bond"} }

6. Levels of Assurance

As “rcd” can be provided by either first or third parties, relying parties could benefit from an additional claim that indicates the relationship of the attesting party to the caller. Even in first party cases, this admits of some complexity: the Communications Service Provider (CSP) to which a number was assigned might in turn delegate the number to a reseller, who would then sell the number to an enterprise, in which case the CSP might have little insight into the caller’s name. In third party cases, a caller’s name could derive from any number of data sources, on a spectrum between public data scraped from web searches to a direct business relationship to the caller. As multiple PASSporTs can be associated with the same call, potentially a verification service could receive attestations of the caller name from multiple sources, which have different levels of granularity or accuracy.

Therefore PASSporTs that carry “rcd” data SHOULD also carry an indication of the relationship of the generator of the PASSporT to the caller. [TBD claim - take from SHAKEN?]

7. Using ‘rcd’ in SIP

This section specifies SIP-specific usage for the “rcd” claim in PASSporT, and in the SIP Identity header field value. Other using protocols of PASSporT may define their own usages for the “rcd” claim.

7.1. Authentication Service Behavior

An authentication service creating a PASSporT containing a “rcd” claim MAY include a “ppt” for “rcd” or not. Third-party authentication services following the behavior in Section 5.1 MUST include a “ppt” of “rcd”. If “ppt” does contain a “rcd”, then any SIP authentication services MUST add a “ppt” parameter to the Identity header containing that PASSporT with a value of “rcd”. The resulting Identity header might look as follows:

Identity: "sv5CTo05KqpSmtHt3dcEiO/1CWTSZtnG3iV+1nmurLXV/HmtyNS7Ltrg9dlxkWzo
    eU7d7OV8HweTTDobV3itTmgPwCFjaEmMyEI3d7SyN21yNDo2ER/Ovgtw0Lu5csIp
    pPqOg1uXndzHbG7mR6Rl9BnUhHufVRbp51Mn3w0gfUs="; \
    info=<https://biloxi.example.org/biloxi.cer>;alg=ES256;ppt="rcd"

This specification assumes that by default, a SIP authentication service will derive the value of “rcd”, specifically only for the ‘nam’ key value, from the display-name component of the From header field value of the request, alternatively for some calls this may come from the P-Asserted-ID header. It is however a matter of authentication service policy to decide how it populates the value of “rcd” and ‘nam’ key, which MAY also derive from other fields in the request, from customer profile data, or from access to external services. If the authentication service generates a PASSporT object containing “rcd” with a value that is not equivalent to the From header field display-name value, it MUST use the full form of the PASSporT object in SIP.

7.2. Verification Service Behavior

[RFC8224] Section 6.2 Step 5 requires that specifications defining “ppt” values describe any additional verifier behavior. The behavior specified for the “ppt” values of “rcd” is as follows. If the PASSporT is in compact form, then the verification service SHOULD extract the display-name from the From header field value, if any, and use that as the value for the “rcd” key when it recomputes the header and claims of the PASSporT object. If the signature validates over the recomputed object, then the verification should be considered successful.

However, if the PASSport is in full form with a “ppt” value of “rcd”, then the verification service MUST extract the value associated with the “rcd” “nam” key in the object. If the signature validates, then the verification service can use the value of the “rcd” “nam” key as the display name of calling party, which would in turn be rendered to alerted users or otherwise leveraged in accordance with local policy. This will allow SIP networks that convey the display name through a field other than the From header field to interoperate with this specification.

The third-party “rcd” PASSporT cases presents some new challenges, as an attacker could attempt to cut-and-paste such a third-party PASSporT into a SIP request in an effort to get the terminating user agent to render the display name or confidence values it contains to a call that should have no such assurance. A third-party “rcd” PASSporT provides no assurance that the calling party number has not been spoofed: if it is carried in a SIP request, for example, then some other PASSporT in another Identity header field value would have to carry a PASSporT attesting that. A verification service MUST determine that the calling party number shown in the “orig” of the “rcd” PASSporT corresponds to the calling party number of the call it has received, and that the “iat” field of the “rcd” PASSporT is within the date interval that the verification service would ordinarily accept for a PASSporT.

Verification services may alter their authorization policies for the credentials accepted to sign PASSporTs when third parties generate PASSporT objects, per Section 5.1. This may include accepting a valid signature over a PASSporT even if it is signed with a credential that does not attest authority over the identity in the “orig” claim of the PASSporT, provided that the verification service has some other reason to trust the signer. No further guidance on verification service authorization policy is given here.

The behavior of a SIP UAS upon receiving an INVITE containing a PASSporT object with a “rcd” claim will largely remain a matter of implementation policy. In most cases, implementations would render this calling party name information to the user while alerting. Any user interface additions to express confidence in the veracity of this information are outside the scope of this specification.

8. Using ‘rcd’ as additional claims to other PASSporT extensions

Rich Call Data, including, for example, calling name information, is often data that is additive data to the personal communications information defined in the core PASSporT data required to support the security properties defined in [RFC8225]. For cases where the entity that is originating the personal communications and additionally is supporting the authentication service and also is the authority of the Rich Call Data, rather than creating multiple identity headers with multiple PASSporT extensions or defining multiple combinations and permutations of PASSporT extension definitions, the authentication service can alternatively directly add the ‘rcd’ claims to the PASSporT it is creating, whether it is constructed with a PASSporT extension or not.

8.1. Procedures for applying ‘rcd’ as claims only

For a given PASSporT using some other extension than ‘rcd,’ the Authentication Service MAY additionally include the ‘rcd’ claim as defined in this document. This would result in a set of claims that correspond to the original intended extension with the addition of the ‘rcd’ claim.

The Verification service that receives the PASSporT, if it supports this specification and chooses to, should interpret the ‘rcd’ claim as simply just an additional claim intended to deliver and/or validate delivered Rich Call Data.

8.2. Example for applying ‘rcd’ as claims only

In the case of [I-D.ietf-stir-passport-shaken] which is the PASSporT extension supporting the SHAKEN specification [ATIS-1000074], a common case for an Authentication service to co-exist in a CSP network along with the authority over the calling name used for the call. Rather than require two identity headers, the CSP Authentication Service can apply both the SHAKEN PASSporT claims and extension and simply add the ‘rcd’ required claims defined in this document.

For example, the PASSporT claims for the ‘shaken’ PASSporT with ‘rcd’ claims would be as follows:

Protected Header
{
   "alg":"ES256",
   "typ":"passport",
   “ppt”:”shaken”,
   "x5u":"https://cert.example.org/passport.cer"
}
Payload
{
   “attest”:”A”,
   "dest":{“tn”:["12025551001"]},
   "iat":1443208345,
   "orig":{“tn”:"12025551000"},
   “origid”:”123e4567-e89b-12d3-a456-426655440000”,
   "rcd":{"nam":"James Bond"}
}

A Verification Service that supports ‘rcd’ and ‘shaken’ PASSporT extensions will be able to receive the above PASSporT and interpret both the ‘shaken’ claims as well as the ‘rcd’ defined claim.

If the Verification Service only understands the ‘shaken’ extension claims but doesn’t support ‘rcd’, the ‘rcd’ can simply be ignored and disregarded.

9. Acknowledgements

We would like to thank Robert Sparks for helpful suggestions.

10. IANA Considerations

10.1. JSON Web Token Claim

This specification requests that the IANA add a new claim to the JSON Web Token Claims registry as defined in [RFC7519].

Claim Name: “rcd”

Claim Description: Caller Name Information

Change Controller: IESG

Specification Document(s): [RFCThis]

10.2. PASSporT Types

This specification requests that the IANA add a new entry to the PASSporT Types registry for the type “rcd” which is specified in [RFCThis].

10.3. PASSporT RCD Types

This document requests that the IANA create a new registry for PASSporT RCD types. Registration of new PASSporT RCD types shall be under the Specification Required policy.

This registry is to be initially populated with a single value for “nam” which is specified in [RFCThis].

11. Security Considerations

Revealing information such as the name, location, and affiliation of a person necessarily entails certain privacy risks. Baseline PASSporT has no particular confidentiality requirement, as the information it signs over in a using protocol like SIP is all information that SIP carries in the clear anyway. Transport-level security can hide those SIP fields from eavesdroppers, and the same confidentiality mechanisms would protect any PASSporT(s) carried in SIP.

More TBD.

12. References

12.1. Normative References

[I-D.ietf-stir-oob] Rescorla, E. and J. Peterson, "STIR Out-of-Band Architecture and Use Cases", Internet-Draft draft-ietf-stir-oob-03, July 2018.
[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.
[RFC6919] Barnes, R., Kent, S. and E. Rescorla, "Further Key Words for Use in RFCs to Indicate Requirement Levels", RFC 6919, DOI 10.17487/RFC6919, April 2013.
[RFC7095] Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, DOI 10.17487/RFC7095, January 2014.
[RFC7340] Peterson, J., Schulzrinne, H. and H. Tschofenig, "Secure Telephone Identity Problem Statement and Requirements", RFC 7340, DOI 10.17487/RFC7340, September 2014.
[RFC7519] Jones, M., Bradley, J. and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015.
[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.
[RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion Token", RFC 8225, DOI 10.17487/RFC8225, February 2018.

12.2. Informative References

[ATIS-1000074] ATIS/SIP Forum NNI Task Group, "Signature-based Handling of Asserted information using toKENs (SHAKEN) <https://access.atis.org/apps/group_public/download.php/32237/ATIS-1000074.pdf>", January 2017.
[I-D.ietf-stir-passport-shaken] Wendt, C. and M. Barnes, "PASSporT SHAKEN Extension (SHAKEN)", Internet-Draft draft-ietf-stir-passport-shaken-07, January 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.

Authors' Addresses

Jon Peterson Neustar Inc. 1800 Sutter St Suite 570 Concord, CA 94520, US EMail: jon.peterson@neustar.biz
Chris Wendt Comcast Comcast Technology Center Philadelphia, PA 19103, USA EMail: chris-ietf@chriswendt.net