PASSporT Extension for Rich Call DataNeustar Inc.1800 Sutter St Suite 570Concord, CA 94520USjon.peterson@neustar.bizComcastComcast Technology CenterPhiladelphia, PA 19103USAchris-ietf@chriswendt.net
art
IdentityThis document extends PASSporT, a token for conveying cryptographically-signed call information about personal communications, to include rich meta-data about a call and caller that can be signed and integrity protected, transmitted, and subsequently rendered to users. This framework is intended to extend caller and call specific information beyond human-readable display name comparable to the “Caller ID” function common on the telephone network. The JSON element defined for this purpose, Rich Call Data (RCD), is an extensible object defined to either be used as part of STIR or with SIP Call-Info to include related information about calls that helps people decide whether to pick up the phone. This signing of the RCD information is also enhanced with a integrity mechanism that is designed to protect the authoring and transport of this information between authoritative and non-authoritative parties authoring and signing the Rich Call Data for support of different usage and content policies.PASSporT is a token format based on JWT 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 . The STIR problem statement 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 procedures which extend PASSporT objects 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.Traditional telephone network signaling protocols have long supported delivering a ‘calling name’ from the originating side, though in practice, the terminating side is often left to derive a name from the calling party number by consulting a local address book or an external database. SIP similarly can carry this information in a ‘display-name’ in the From header field value from the originating to terminating side, or alternatively in the Call-Info header field. However, both are unsecured fields that really can not be trusted in most interconnected SIP deployments, and therefore is a good starting point for a framework that utilizes STIR techniques and procedures for protecting call related information including but not limited to calling name.As such, the baseline use-case for this document will be extending PASSporT to provide cryptographic protection for the “display-name” field of SIP requests as well as further “rich call data” (RCD) about the caller, which includes the contents of the Call-Info header field or other data structures that can be added to the PASSporT. This document furthermore specifies a third-party profile that would allow external authorities to convey rich information associated with a calling number via a new type of PASSporT. Finally, this document describes how to preserve the integrity of the RCD in scenarios where there may be non-authoritative users that may be initiating and signing RCD and therefore a constraint on the RCD data that a PASSporT can attest via certificate-level controls.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 and .The main intended use of the signing of Rich Call Data (RCD) using STIR and as a PASSporT extension is from an entity that is associated with the origination of a call. Either directly the caller themselves, if they are authoritative, or a service provider or third-party service that may be authoritative over the rich call data on behalf of the caller.The RCD described in this document is of two main categories. The first data is a more traditional set of info about a caller associated with “display-name” in SIP and typically is the calling name that is a textual description of the caller. The second data is a set of RCD that is defined as part of the jCard definitions or extensions to that data. describes the optional use of jCard in Call-Info header field as RCD with the “jcard” Call-Info purpose token. Either or both of these two types of data can be incorporated into a “rcd” claim defined in this document.Additionally, also describes a “reason” parameter intended for description of the intent or reason for a particular call. A new claim “crn”, or call reason, can contain the string or object that describes the intent of the call. This claim is intentionally kept separate from the “rcd” claim because it is envisioned that call reason is not the same as information associated with the caller and may change on a more frequent, per call, type of basis.In addition to the type of RCD that can be signed, there are three modes of use of the signing of Rich Call Data (RCD). The first and simplest mode is exclusively for when all RCD content is directly included as part of the claims (i.e. no URIs are included in the content). In this mode the set of claims is signed via standard PASSporT and SIP identity header procedures. The second mode is an extension of the first where a “rcd” claim is included and the content includes a URI identifying external resources. In this mode, a “rcdi” integrity claim MUST be included. This integrity claim is defined later in this document and provides a digest of the content so that, particularly for the case where there is URI references in the RCD, the content of that RCD can be comprehensively validated that it was received as intended by the signer of the PASSporT. The third mode is an extension to both the first and second modes and incorporates the ability to include the digest of the integrity claim as a required value, using JWT Constraints as defined in , in the certificate used to create the PASSporT digital signature. This mode allows for cases where there is a different authoritative entity responsible for the content of the RCD, separate from the signer of the PASSporT itself allowing the ability to have policy around the content and potential review or pre-determination of allowed RCD content.More generally, either of the claims defined in this or future specifications content can be protected by the authoritative certificate creators by inclusion in the defined certificate’s JWT Constraints.When incorporating call data that represents a user, even in traditional calling name services today, often there is policy and restrictions around what data is allowed to be used. Whether preventing offensive language or icons or enforcing uniqueness, potential copyright violations or other policy enforcement, there will likely be the desire to pre-certify the specific use of rich call data. This document defines a mechanism that allows for an indirect party that controls the policy to approve or certify the content, create a cryptographic digest that can be used to validate that data and applies a constraint in the certificate to allow the recipient and verifier to validate that the specific content of the RCD is as intended at its creation and approval or certification.The integrity mechanism is a process of generating a sufficiently strong cryptographic digest for both the “rcd” claim contents (e.g. “nam” and “jcd”) defined below and the resources defined by one or more globally unique HTTPS URLs referenced by the contents (e.g. an image file referenced by “jcd”). This mechanism is inspired and based on the W3C Subresource Integrity specification (http://www.w3.org/TR/SRI/). This mechanism additionally defines the ability to constrain the digest and RCD integrity mechanism to be mandatory without modification using JWT Constraints defined in .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 key values.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 alternatively from the P-Asserted-Identity header field value, or a similar field in other PASSporT using protocols. This key MUST be included once and MUST be included as part of the “rcd” claim value JSON object. If there is no string associated with a display name, the claim value SHOULD then be an empty string.The “jcd” key value is defined to contain a value of a jCard JSON object. This jCard object is intended to represent and derives from the Call-Info header field value defined in with a type of “jcard”. As also defined in , format of the jCard and properties used should follow the normative usage and formatting rules and procedures. It is an extensible object where the calling party can provide both the standard 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.Note: even though we refer to as the definition of the jcard properties for usage in a “rcd” PASSporT, other protocols can be adapted for use of “jcd” (or similarly “jcl” below) key beyond SIP and Call-Info.The “jcl” key value is defined to contain a HTTPS URL that refers the recipient to a jCard JSON object hosted on a HTTPS enabled web server. The web server MUST use the MIME media type for JSON text as application/json with a default encoding of UTF-8 . This link may derive from the Call-Info header field value defined in with a type of “jcard”. As also defined in , format of the jCard and properties used should follow the normative usage and formatting rules and procedures. The “jcl” key is optional. If included, this key MUST only be included once in the “rcd” JSON object and MUST NOT be included if there is a “jcd” key included. The “jcd” and “jcl” keys MUST be used mutually exclusively.The “rcdi” claim is an optional claim that SHOULD be included if the application requires integrity to be applied to the content of the “rcd” claim and if included MUST be included only once with a corresponding “rcd” claim. The value of the “rcdi” key pair should contain a string that is defined as follows.The first part of the string should define the crypto algorithm used to generate the digest. For RCD, implementations MUST support the following hash algorithms, “SHA256”, “SHA384”, or “SHA512”. The SHA-256, SHA-384, and SHA-512 are part of the SHA-2 set of cryptographic hash functions defined by the NIST. Implementations MAY support additional algorithms, but MUST NOT support known weak algorithms such as MD5 or SHA-1. In the future, the list of algorithms may re-evaluated based on security best practices. The algorithms MUST be represented in the text by “sha256”, “sha384”, or “sha512”. The character following the algorithm string MUST be a minus character, “-“. The subsequent characters MUST be the base64 encoded digest of a canonicalized and concatenated string based on the “rcd” claim and the URLs contained in the claim. The details of the creation of this string are defined in the next section.In order to facilitate proper verification of the digest and whether the “rcd” content was modified, the input to the digest must be completely deterministic at three points in the process. First, at the certification point where the content is evaluated to conform to the application policy and the JWT Claim Constraints is applied to the certificate containing the digest. Second, when the call is signed at the Authentication Service, there may be a local policy to verify that the provided “rcd” claim corresponds to the digest. Third, when the “rcd” data is verified at the Verification Service, it MUST verify the digest by constructing the “rcd” input digest string.The procedures for the creation of the “rcd” input digest string is as follows.Arrange the keys in the “rcd” claim value to be in lexicographic order.Serialize the resulting “rcd” claim value JSON object to remove all white space and line breaks. The procedures of this deterministic JSON serialization is defined in , Section 9.Identify, in order of where they appear in the serialized string, all of the URLs referencing external resource files.Construct the “rcd” input string by first inserting the serialized “rcd” claim value.If there is at least one URL identified, insert a semicolon character at the end of the “rcd” serialized string.Follow the semicolon with the Base64 encoded contents of resource file referenced by the first URL.Repeat steps 5 and 6 for any additionally identified corresponding URLs including URLs contained in resources referenced by other URLs. When or if these nested URLs occur in the contents referred to by a parent URL, the insertion of the Base64 encoded contents should be included for all child URLs before moving to any subsequent parent URL.Once the input serialized string has been created, use this string to create the base64 encoded digest output that can be inserted into the “rcdi” claim as discussed in the last section.Once both the contents of the “rcd” claim is certified and the construction of the “rcdi” claim is complete, the “rcdi” digest is linked to the STIR certificate associated with the signature in the PASSporT via JWT Claim Constraints as defined in Section 8.The certificate JWT Claims Constraint MUST include both of the following:a “mustInclude” for the “rcd” claima “mustInclude” for the “rcdi” claim and a “permittedValues” equal to the created “rcdi” claim value string.The “permitedValues” for the “rcdi” claim may contain multiple entries, to support the case where the certificate holder is authorized to use different sets of rich call data.This specification defines a new JSON Web Token claim for “crn”, Call Reason, the value of which is a single string or object that can contains information as defined in corresponding to the “reason” parameter for the Call-Info header. This claim is optional.The integrity of the “crn” claim can optionally be protected by the authoritative certificate creator using JWT Constraints in the certificate.Either the “rcd” or “crn” claim may appear in any PASSporT claims object as an optional element. The creator of a PASSporT MAY also add a “ppt” value of “rcd” to the header of a PASSporT as well, in which case the PASSporT claims MUST contain either a “rcd” or “crn” 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: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 .After the header and claims PASSporT objects have been constructed, their signature is generated normally per the guidance in .An example of a “nam” only PASSporT claims obejct is shown next (with line breaks for readability only).An example of a “nam” only PASSporT claims object with an “rcdi” claim is shown next (with line breaks for readability only).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).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:If that jCard is hosted at the example address of “https://example.org/james_bond.json”, the corresponding PASSporT claims object would be as follows (with line breaks for readability only):If we were to add a “rcdi” integrity claim to the last example, the corresponding PASSporT claims object would be as follows (with line breaks for readability only):Compact form of an “rcd” PASSporT claim has some restrictions but mainly follows standard PASSporT compact form procedures. For re-construction of the “nam” claim the string for the display-name in the From header field. For re-construction of the “jcl”, the Call-Info header as with purpose “jcard” defined in MUST be used. “jcd” claim MAY NOT be used as part of compact form.Compact form of an “rcdi” PASSPorT claim shall be re-constructed following the same “rcdi” defined digest procedures in this document of all of the content and referenced URI content once downloaded.Compact form of a “crn” PASSporT claim shall be re-constructed using the “reason” parameter of a Call-Info header as defined by .Beyond naming information and the information that can be contained in a jCard 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:information related to the location of the caller, orany organizations or institutions that the caller is associated with, or even categories of institutions (is this a government agency, or a bank, or what have you), orhyperlinks to images, such as logos or pictures of faces, or to similar external profile information, orinformation that will be processed by an application before rendering it to a user, like social networking data that shows that an unknown caller is a friend-of-a-friend, or reputation scores derived from crowdsourcing, or confidence scores based on broader analytics about the caller and callee.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 . 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.While rich data about the call can be provided by an originating authentication service, an intermediary in the call path could also acquire rich call data by querying a third-party service. Such a service effectively acts as a STIR Authentication Service, generating its own PASSporT, and that PASSporT could be attached to a SIP call by either the originating or terminating side. This third-party PASSporT attests information about the calling number, rather than the call or caller itself, and as such its RCD MUST NOT be used when a call lacks a first-party PASSporT that assures verification services that the calling party number is not spoofed. It is intended to be used in cases when the originating side does not supply a display-name for the caller, so instead some entity in the call path invokes a third-party service to provide rich caller data for a call.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 a sub-case of out-of-band 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.A third-party PASSporT, which contains such an “iss” element, will necessarily be signed with credentials that do not have authority over the identity that appears in the “orig” element of the PASSporT claims. The presence of “iss” signifies that a different category of credential is being used to sign a PASSporT than the certificates used to sign STIR calls; it is instead a certificate that identifies the source of the “rcd” data. How those credentials are issued and managed is outside the scope of this specification; the value of “iss” however MUST reflect the Subject Name field of the certificate used to sign a third-party PASSporT. 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.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. As stated in the previous section, the use of “iss” MUST reflect the Organization (O) field of the certificate used to sign a third-party PASSporT to represent that relationship.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.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 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: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. 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 “nam” key when it recomputes the header and claims of the PASSporT object. Optionally, if there exists a Call-Info header field as defined in , the “jcard” value can be derived to determine the “jcd” 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. Similarly, the “jcd” or linked “jcl” jcard information and “crn” can be optionally, based on local policy for devices that support it, used to populate a Call-Info header field following the format of .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 . 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.Rich Call Data, including calling name information, for example, 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 . 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.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.In the case of which is the PASSporT extension supporting the SHAKEN specification , 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: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.We would like to thank David Hancock, Robert Sparks, Russ Housley, and Eric Burger for helpful suggestions and comments.This specification requests that the IANA add three new claims to the JSON Web Token Claims registry as defined in .Claim Name: “rcd”Claim Description: Rich Call Data InformationChange Controller: IESGSpecification Document(s): [RFCThis]Claim Name: “rcdi”Claim Description: Rich Call Data Integrity InformationChange Controller: IESGSpecification Document(s): [RFCThis]Claim Name: “crn”Claim Description: Call ReasonChange Controller: IESGSpecification Document(s): [RFCThis]This specification requests that the IANA add a new entry to the PASSporT Types registry for the type “rcd” which is specified in [RFCThis].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 three values, “nam”, “jcd”, and “jcl”, which are specified in [RFCThis].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.STIR Out-of-Band Architecture and Use CasesThe PASSporT format defines a token that can be carried by signaling protocols, including SIP, to cryptographically attest the identify of callers. Not all telephone calls use Internet signaling protocols, however, and some calls use them for only part of their signaling path, or cannot reliably deliver SIP header fields end-to-end. This document describes use cases that require the delivery of PASSporT objects outside of the signaling path, and defines architectures and semantics to provide this functionality.SIP Call-Info Parameters for Rich Call DataThis document describes a SIP Call-Info header field usage defined to include rich data associated with the identity of the calling party that can be rendered to called party for providing more useful information about the caller or the specific reason for the call. This includes extended comprehensive information about the caller such as what a jCard object can represent for describing the calling party or other call specific information such as describing the reason or intent of the call. The elements defined for this purpose are intended to be extensible to accommodate related information about calls that helps people decide whether to pick up the phone and additionally, with the use of jCard and other elements, to be compatible with the STIR/PASSporT Rich Call Data framework.SIP: Session Initiation ProtocolThis document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences. [STANDARDS-TRACK]The application/json Media Type for JavaScript Object Notation (JSON)JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data. This memo provides information for the Internet community.Further Key Words for Use in RFCs to Indicate Requirement LevelsRFC 2119 defines a standard set of key words for describing requirements of a specification. Many IETF documents have found that these words cannot accurately capture the nuanced requirements of their specification. This document defines additional key words that can be used to address alternative requirements scenarios. Authors who follow these guidelines should incorporate this phrase near the beginning of their document:The key words "MUST (BUT WE KNOW YOU WON\'T)", "SHOULD CONSIDER", "REALLY SHOULD NOT", "OUGHT TO", "WOULD PROBABLY", "MAY WISH TO", "COULD", "POSSIBLE", and "MIGHT" in this document are to be interpreted as described in RFC 6919.jCard: The JSON Format for vCardThis specification defines "jCard", a JSON format for vCard data. The vCard data format is a text format for representing and exchanging information about individuals and other entities, for example, telephone numbers, email addresses, structured names, and delivery addresses. JSON is a lightweight, text-based, language- independent data interchange format commonly used in Internet applications.Secure Telephone Identity Problem Statement and RequirementsOver the past decade, Voice over IP (VoIP) systems based on SIP have replaced many traditional telephony deployments. Interworking VoIP systems with the traditional telephone network has reduced the overall level of calling party number and Caller ID assurances by granting attackers new and inexpensive tools to impersonate or obscure calling party numbers when orchestrating bulk commercial calling schemes, hacking voicemail boxes, or even circumventing multi-factor authentication systems trusted by banks. Despite previous attempts to provide a secure assurance of the origin of SIP communications, we still lack effective standards for identifying the calling party in a VoIP session. This document examines the reasons why providing identity for telephone numbers on the Internet has proven so difficult and shows how changes in the last decade may provide us with new strategies for attaching a secure identity to SIP sessions. It also gives high-level requirements for a solution in this space.JSON Web Token (JWT)JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.Authenticated Identity Management in the Session Initiation Protocol (SIP)The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context. This document defines a mechanism for securely identifying originators of SIP requests. It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.This document obsoletes RFC 4474.PASSporT: Personal Assertion TokenThis document defines a method for creating and validating a token that cryptographically verifies an originating identity or, more generally, a URI or telephone number representing the originator of personal communications. The Personal Assertion Token, PASSporT, is cryptographically signed to protect the integrity of the identity of the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal-communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.Secure Telephone Identity Credentials: CertificatesIn order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.Personal Assertion Token (PaSSporT) Extension for Signature-based Handling of Asserted information using toKENs (SHAKEN)This document extends the Personal Assertion Token (PASSporT), which is a token object that conveys cryptographically signed information about the participants involved in communications. The extension is defined based on the "Signature-based Handling of Asserted information using toKENs (SHAKEN)" specification by the ATIS/SIP Forum IP-NNI Task Group. It provides both (1) a specific set of levels of confidence in the correctness of the originating identity of a call originated in a SIP-based telephone network as well as (2) an identifier that allows the Service Provider (SP) to uniquely identify the origin of the call within its network.Signature-based Handling of Asserted information using toKENs (SHAKEN) <https://access.atis.org/apps/group_public/download.php/32237/ATIS-1000074.pdf>ATIS/SIP Forum NNI Task GroupKey words for use in RFCs to Indicate Requirement LevelsIn many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.