diff options
| author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 | 
|---|---|---|
| committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 | 
| commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
| tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8225.txt | |
| parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) | |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8225.txt')
| -rw-r--r-- | doc/rfc/rfc8225.txt | 1403 | 
1 files changed, 1403 insertions, 0 deletions
| diff --git a/doc/rfc/rfc8225.txt b/doc/rfc/rfc8225.txt new file mode 100644 index 0000000..ec0ffd3 --- /dev/null +++ b/doc/rfc/rfc8225.txt @@ -0,0 +1,1403 @@ + + + + + + +Internet Engineering Task Force (IETF)                          C. Wendt +Request for Comments: 8225                                       Comcast +Category: Standards Track                                    J. Peterson +ISSN: 2070-1721                                             Neustar Inc. +                                                           February 2018 + + +                   PASSporT: Personal Assertion Token + +Abstract + +   This 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. + +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/rfc8225. + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                    [Page 1] + +RFC 8225                        PASSporT                   February 2018 + + +Copyright Notice + +   Copyright (c) 2018 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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                    [Page 2] + +RFC 8225                        PASSporT                   February 2018 + + +Table of Contents + +   1. Introduction ....................................................4 +   2. Terminology .....................................................4 +   3. PASSporT Overview ...............................................5 +   4. PASSporT Header .................................................6 +      4.1. "typ" (Type) Header Parameter ..............................6 +      4.2. "alg" (Algorithm) Header Parameter .........................6 +      4.3. "x5u" (X.509 URL) Header Parameter .........................6 +      4.4. Example PASSporT Header ....................................7 +   5. PASSporT Payload ................................................7 +      5.1. JWT-Defined Claims .........................................7 +           5.1.1. "iat" (Issued At) Claim .............................7 +      5.2. PASSporT-Specific Claims ...................................8 +           5.2.1. Originating and Destination Identity Claims .........8 +           5.2.2. "mky" (Media Key) Claim ............................10 +   6. PASSporT Signature .............................................11 +   7. Compact Form of PASSporT .......................................12 +      7.1. Example Compact Form of PASSporT ..........................13 +   8. Extending PASSporT .............................................13 +      8.1. "ppt" (PASSporT) Header Parameter .........................13 +      8.2. Example Extended PASSporT Header ..........................14 +      8.3. Extended PASSporT Claims ..................................14 +   9. Deterministic JSON Serialization ...............................15 +      9.1. Example PASSporT Deterministic JSON Form ..................16 +   10. Security Considerations .......................................17 +      10.1. Avoidance of Replay and Cut-and-Paste Attacks ............17 +      10.2. Solution Considerations ..................................18 +   11. IANA Considerations ...........................................18 +      11.1. Media Type Registration ..................................18 +      11.2. Registrations in "JSON Web Token Claims" .................19 +      11.3. Registration in "JSON Web Signature and +            Encryption Header Parameters" ............................20 +      11.4. PASSporT Extensions Registry .............................20 +   12. References ....................................................20 +      12.1. Normative References .....................................20 +      12.2. Informative References ...................................22 +   Appendix A. Example ES256-Based PASSporT JWS Serialization and +               Signature .............................................23 +     A.1. X.509 Private Key in PKCS #8 Format for ES256 Example ......24 +     A.2. X.509 Public Key for ES256 Example .........................25 +   Acknowledgments ...................................................25 +   Authors' Addresses ................................................25 + + + + + + + + +Wendt & Peterson             Standards Track                    [Page 3] + +RFC 8225                        PASSporT                   February 2018 + + +1.  Introduction + +   In today's IP-enabled telecommunications world, there is a growing +   concern about the ability to trust incoming invitations for +   communications sessions, including video, voice, and messaging +   [RFC7340].  As an example, modern telephone networks provide the +   ability to spoof the calling party's telephone number for many +   legitimate purposes, including providing network features and +   services on behalf of a legitimate telephone number.  However, as we +   have seen, bad actors have taken advantage of this ability for +   illegitimate and fraudulent purposes meant to trick telephone users +   into believing that they are someone they are not.  This problem can +   be extended to many emerging forms of personal communications. + +   This 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.  Through the extensions defined in Section 8 +   of this document, other information relevant to the personal +   communications can also be added to the token.  The goal of PASSporT +   is to provide a common framework for signing information related to +   the originating identity in an extensible way.  Additionally, this +   functionality is independent of any specific call logic for +   personal-communications signaling, so that the assertion of +   information related to the originating identity can be implemented in +   a flexible way and can be used in such applications as end-to-end +   applications that require different signaling protocols or gateways +   between different communications systems.  It is anticipated that +   guidance specific to the signaling protocol will be provided in other +   related documents and specifications to specify how to use and +   transport PASSporTs; however, this is intentionally out of scope for +   this document. + +   [RFC8224] provides details of the use of PASSporT within the SIP +   [RFC3261] signaling protocol for the signing and verification of +   telephone numbers and SIP URIs. + +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. + + + + + + + +Wendt & Peterson             Standards Track                    [Page 4] + +RFC 8225                        PASSporT                   February 2018 + + +3.  PASSporT Overview + +   "JSON Web Token (JWT)" [RFC7519], "JSON Web Signature (JWS)" +   [RFC7515], and other related specifications define a standard token +   format that can be used as a way of encapsulating claimed or asserted +   information with an associated digital signature using X.509-based +   certificates.  JWT provides a set of claims in JSON format that can +   conveniently accommodate asserted originating-identity information +   and that are easily extensible for use in the extension mechanisms +   defined below.  Additionally, JWS provides a path for updating +   methods and cryptographic algorithms used for the associated digital +   signatures. + +   JWS defines the use of JSON data structures in a specified canonical +   format for signing data corresponding to the JSON Object Signing and +   Encryption (JOSE) Header, JWS Payload, and JWS Signature.  JWT +   defines a set of claims that are represented by specified JSON +   objects that can be extended with custom keys for specific +   applications.  The next sections define the header and claims that +   MUST be minimally used with JWT and JWS for PASSporT. + +   PASSporT specifically uses this token format and defines claims that +   convey the identity of the origination and destination of personal +   communications.  The primary value asserted in a PASSporT object is +   the originating identity representing the identity of the calling +   party or the initiator of a personal-communications session.  The +   signer of a PASSporT object may or may not correspond to the +   originating identity.  For a given application's use or using +   protocol of PASSporT, the creation of the PASSporT object is +   performed by an entity that is authoritative to assert the caller's +   identity.  This authority is represented by the certificate +   credentials and the signature, and the PASSporT object is created and +   initiated to the destination(s) per the application's choice of +   authoritative point(s) in the network.  For example, the PASSporT +   object could be created at a device that has authenticated with a +   user or at a network entity with an authenticated trust relationship +   with that device and its user.  Destination identities represent the +   intended destination of the personal communications, i.e., the +   identity(s) being called by the caller.  The destination point or +   points determined by the application need to have the capability to +   verify the PASSporT and the digital signature.  The PASSporT- +   associated certificate is used to validate the authority of the +   originating signer, generally via a certificate chain to the trust +   anchor for that application. + + + + + + + +Wendt & Peterson             Standards Track                    [Page 5] + +RFC 8225                        PASSporT                   February 2018 + + +4.  PASSporT Header + +   The JWS token header is a JOSE Header ([RFC7515], Section 4) that +   defines the type and encryption algorithm used in the token. + +   The PASSporT header should include, at a minimum, the Header +   Parameters defined in the next three subsections. + +4.1.  "typ" (Type) Header Parameter + +   The "typ" (Type) Header Parameter is defined in JWS ([RFC7515], +   Section 4.1.9) to declare the media type of the complete JWS. + +   For the PASSporT, the "typ" header MUST be the string "passport". +   This signifies that the encoded token is a JWT of type "passport". + +4.2.  "alg" (Algorithm) Header Parameter + +   The "alg" (Algorithm) Header Parameter is defined in JWS ([RFC7515], +   Section 4.1.1).  This definition includes the ability to specify the +   use of a cryptographic algorithm for the signature part of the JWS. +   It also refers to a list of defined "alg" values as part of a +   registry established by JSON Web Algorithms (JWA) ([RFC7518], +   Section 3.1). + +   For the creation and verification of PASSporTs and their digital +   signatures, implementations MUST support ES256 as defined in JWA +   ([RFC7518], Section 3.4).  Implementations MAY support other +   algorithms registered in the "JSON Web Signature and Encryption +   Algorithms" registry created by [RFC7518].  The contents of that +   registry may be updated in the future, depending on cryptographic +   strength requirements guided by current security best practices.  The +   mandatory-to-support algorithm for PASSporTs may likewise be updated +   in future updates to this document. + +   Implementations of PASSporT digital signatures using ES256 as defined +   above SHOULD use the deterministic Elliptic Curve Digital Signature +   Algorithm (ECDSA) if or when supported for the reasons stated in +   [RFC6979]. + +4.3.  "x5u" (X.509 URL) Header Parameter + +   As defined in JWS ([RFC7515], Section 4.1.5), the "x5u" Header +   Parameter defines a URI [RFC3986] referring to the resource for the +   X.509 public key certificate or certificate chain [RFC5280] +   corresponding to the key used to digitally sign the JWS.  Generally, +   as defined in JWS ([RFC7515], Section 4.1.5), this would correspond +   to an HTTPS or DNSSEC resource using integrity protection. + + + +Wendt & Peterson             Standards Track                    [Page 6] + +RFC 8225                        PASSporT                   February 2018 + + +4.4.  Example PASSporT Header + +   An example of the header would be the following, including the +   specified passport type, ES256 algorithm, and a URI referencing the +   network location of the certificate needed to validate the PASSporT +   signature. + +   { +     "typ":"passport", +     "alg":"ES256", +     "x5u":"https://cert.example.org/passport.cer" +   } + +5.  PASSporT Payload + +   The token claims consist of the information that needs to be verified +   at the destination party.  These claims follow the definition of a +   JWT claim ([RFC7519], Section 4) and are encoded as defined by the +   JWS Payload ([RFC7515], Section 3). + +   PASSporT defines the use of a standard JWT-defined claim as well as +   custom claims corresponding to the two parties associated with +   personal communications -- the originator and destination, as +   detailed below. + +   For PASSporT, any claim names MUST use the ASCII character set.  Any +   claim values can contain characters that are outside the ASCII range, +   consistent with the rules of creating a JWT Claims Set as defined in +   [RFC7519], Section 7.1. + +5.1.  JWT-Defined Claims + +5.1.1.  "iat" (Issued At) Claim + +   The JSON claim MUST include the "iat" (Issued At) claim ([RFC7519], +   Section 4.1.6).  As defined, the "iat" claim should be set to the +   date and time of issuance of the JWT and MUST indicate the date and +   time of the origination of the personal communications.  The time +   value should be of the NumericDate format as defined in [RFC7519], +   Section 2.  This is included for securing the token against replay +   and cut-and-paste attacks, as explained further in Section 10 +   ("Security Considerations"). + + + + + + + + + +Wendt & Peterson             Standards Track                    [Page 7] + +RFC 8225                        PASSporT                   February 2018 + + +5.2.  PASSporT-Specific Claims + +5.2.1.  Originating and Destination Identity Claims + +   The originating identity and the destination identity are represented +   by two claims that are required for PASSporT -- the "orig" and "dest" +   claims.  Both "orig" and "dest" MUST contain claim values that are +   identity claim JSON objects where the child claim name represents an +   identity type and the claim value is the identity string, both +   defined in subsequent subsections.  Currently, these identities can +   be represented as either telephone numbers or Uniform Resource +   Indicators (URIs). + +   The "orig" claim is a JSON object with the claim name of "orig" and a +   claim value that is a JSON object representing the asserted identity +   of any type (currently either "tn" or "uri") of the originator of the +   personal-communications signaling.  There MUST be exactly one "orig" +   claim with exactly one identity claim object in a PASSporT object. + +   Note: As explained in Section 3, the originating identity represents +   the calling party and may or may not correspond to the authoritative +   signer of the token. + +   The "dest" claim is a JSON object with the claim name of "dest" and +   MUST have at least one identity claim object.  The "dest" claim value +   is an array containing one or more identity claim JSON objects +   representing the destination identities of any type (currently "tn" +   or "uri").  If the "dest" claim value array contains both "tn" and +   "uri" claim names, the JSON object should list the "tn" array first +   and the "uri" array second.  Within the "tn" and "uri" arrays, the +   identity strings should be put in lexicographical order, including +   the scheme-specific portion of the URI characters. + +   Note: As explained in Section 3, the destination identity represents +   the called party and may or may not correspond to the authoritative +   party verifying the token signature. + +5.2.1.1.  "tn" (Telephone Number) Identity + +   If the originating or destination identity is a telephone number, the +   claim name representing the identity MUST be "tn". + +   The claim value for the "tn" claim is the telephone number and MUST +   be canonicalized according to the procedures specified in [RFC8224], +   Section 8.3. + + + + + + +Wendt & Peterson             Standards Track                    [Page 8] + +RFC 8225                        PASSporT                   February 2018 + + +5.2.1.2.  "uri" (URI) Identity + +   If any of the originating or destination identities is in the form of +   a URI as defined in [RFC3986], the claim name representing the +   identity MUST be "uri", and the claim value is the URI form of the +   identity. + +5.2.1.3.  Future Identity Forms + +   We recognize that in the future there may be other standard +   mechanisms for representing identities.  The "orig" and "dest" claims +   currently support "tn" and "uri" but could be extended in the future +   to allow for other identity types with new IANA-registered unique +   types to represent these forms. + +5.2.1.4.  Examples + +   The following is an example of a single originator with telephone +   number identity +12155551212, to a single destination with URI +   identity "sip:alice@example.com": + +   { +     "dest":{"uri":["sip:alice@example.com"]}, +     "iat":1443208345, +     "orig":{"tn":"12155551212"} +   } + +   The following is an example of a single originator with telephone +   number identity +12155551212, to multiple destination identities with +   telephone number identity +12125551212 and two URI identities -- +   "sip:alice@example.com" and "sip:bob@example.com": + +   { +     "dest":{ +       "tn":["12125551212"], +       "uri":["sip:alice@example.com", +         "sip:bob@example.net"] +     }, +     "iat":1443208345, +     "orig":{"tn":"12155551212"} +   } + + + + + + + + + + +Wendt & Peterson             Standards Track                    [Page 9] + +RFC 8225                        PASSporT                   February 2018 + + +5.2.2.  "mky" (Media Key) Claim + +   Some protocols that use PASSporT may also want to protect media +   security keys delivered within their signaling in order to bind those +   keys to the identities established in the signaling layers.  The +   "mky" claim is an optional PASSporT claim defining the assertion of +   media key fingerprints carried in the Session Description Protocol +   (SDP) [RFC4566] via the "a=fingerprint" attribute ([RFC4572], +   Section 5).  This claim can support either a single fingerprint or +   multiple fingerprints appearing in a single SDP body corresponding to +   one or more media streams offered as defined in [RFC8122]. + +   The "mky" claim MUST be formatted as a JSON object with an array that +   includes the "alg" and "dig" claims with the corresponding algorithm +   and hexadecimal values.  If there is more than one fingerprint value +   associated with different media streams in SDP, the fingerprint +   values MUST be constructed as a JSON array denoted by square brackets +   ("[" and "]").  For the "dig" claim, the claim value MUST be the hash +   of the hexadecimal value without any colons. + +   The "mky" claim is a JSON object with a claim name of "mky" and a +   claim value of a JSON array denoted by brackets.  The "mky" claim +   value JSON array MUST be constructed as follows: + +   1.  Take each "a=fingerprint" line carried in the SDP. + +   2.  Sort the lines based on the UTF-8 [RFC3629] encoding of the +       concatenation of the "alg" and "dig" claim value strings. + +   3.  Encode the array in the order of the sorted lines, where each +       "mky" array element is a JSON object with two elements +       corresponding to the "alg" and "dig" objects, with "alg" first +       and "dig" second. + + + + + + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 10] + +RFC 8225                        PASSporT                   February 2018 + + +   An example claim with the "mky" claim is as follows: + +   For an SDP offer that includes the following fingerprint values, + +   a=fingerprint:sha-256 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E: +   5D:49:6B:19:E5:7C:AB:3E:4B:65:2E:7D:46:3F:54:42:CD:54:F1 +   a=fingerprint:sha-256 02:1A:CC:54:27:AB:EB:9C:53:3F:3E:4B:65 +   :2E:7D:46:3F:54:42:CD:54:F1:7A:03:A2:7D:F9:B0:7F:46:19:B2 + +   the PASSporT Payload object would be: + +   { +     "dest":{"uri":["sip:alice@example.com"]}, +     "iat":1443208345, +     "mky":[ +       { +         "alg":"sha-256", +         "dig":"021ACC5427ABEB9C533F3E4B652E7D463F5442CD54 +           F17A03A27DF9B07F4619B2" +       }, +       { +         "alg":"sha-256", +         "dig":"4AADB9B13F82183B540212DF3E5D496B19E57C +           AB3E4B652E7D463F5442CD54F1" +       } +     ], +     "orig":{"tn":"12155551212"} +   } + +6.  PASSporT Signature + +   The signature of the PASSporT is created as specified by JWS +   ([RFC7515], Section 5.1, Steps 1 through 6).  PASSporT MUST use the +   JWS Protected Header.  For the JWS Payload and the JWS Protected +   Header, however, the lexicographic ordering and whitespace rules +   described in Sections 4 and 5 of this document, and the JSON +   serialization rules in Section 9 of this document, MUST be followed. + +   Appendix A of this document has a detailed example of how to follow +   the steps to create the JWS Signature. + +   Step 7 of the JSON serialization procedure in [RFC7515], Section 5.1 +   is not supported for PASSporT. + +   [RFC7515], Section 5.1, Step 8 describes the method to create the +   final JWS Compact Serialization form of the PASSporT. + + + + + +Wendt & Peterson             Standards Track                   [Page 11] + +RFC 8225                        PASSporT                   February 2018 + + +7.  Compact Form of PASSporT + +   For a using protocol of PASSporT, the PASSporT claims as well as the +   PASSporT header may include redundant or default information that +   could be reconstructed at the destination based on information +   provided in the signaling protocol transporting the PASSporT object. +   In this case, it may be advantageous to have a more compact form of +   PASSporT to save the transmission of the bytes needed to represent +   the header and claims. + +   This specification defines the compact form of the PASSporT, in the +   spirit of the form defined in [RFC7515], Appendix F, with the use of +   two periods ("..") to represent the header and claim objects being +   removed, followed by the PASSporT signature as defined in Section 6, +   and the need for the destination to reconstruct the header and claim +   objects in order to verify the signature. + +   In order to construct the compact form of the PASSporT string, the +   procedure described in Section 6 MUST be used, with the exception of +   [RFC7515], Section 5.1, Step 8.  This step would be replaced by the +   following construction of the compact form of PASSporT, ".." || +   BASE64URL(JWS Signature). + +   The using protocol of the compact form of PASSporT MUST be +   accompanied by a specification for how the header and claims objects +   can be reconstructed from information in the signaling protocol being +   used. + +   Note that the full form of the PASSporT, containing the entire +   header, payload, and signature, should also use the lexicographic +   ordering and whitespace serialization rules, particularly in the case +   where some using protocols or interworking between protocols may +   require switching between full and compact forms and maintaining the +   integrity of the signature. + + + + + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 12] + +RFC 8225                        PASSporT                   February 2018 + + +7.1.  Example Compact Form of PASSporT + +   The compact form of the following example token (with line breaks +   between periods used for readability purposes only) + +   eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9j +   ZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9 +   . +   eyJkZXN0Ijp7InVyaSI6WyJzaXA6YWxpY2VAZXhhbXBsZS5jb20iXX0sImlhdCI +   6IjE0NDMyMDgzNDUiLCJvcmlnIjp7InRuIjoiMTIxNTU1NTEyMTIifX0 +   . +   rq3pjT1hoRwakEGjHCnWSwUnshd0-zJ6F1VOgFWSjHBr8Qjpjlk-cpFYpFYsojN +   CpTzO3QfPOlckGaS6hEck7w + +   would be as follows: + +   ..rq3pjT1hoRwakEGjHCnWSwUnshd0-zJ6F1VOgFWSjHBr8Qjpjlk-cpFYpFYsojN +   CpTzO3QfPOlckGaS6hEck7w + +8.  Extending PASSporT + +   PASSporT includes the bare-minimum set of claims needed to securely +   assert the originating identity and support the secure properties +   discussed in various parts of this document.  JWT supports a +   straightforward way to add additional asserted or signed information +   by simply adding new claims.  PASSporT can be extended beyond the +   defined base set of claims to represent other information requiring +   assertion or validation beyond the originating identity itself as +   needed. + +8.1.  "ppt" (PASSporT) Header Parameter + +   Any using protocol can extend the payload of PASSporT with additional +   JWT claims.  JWT claims are managed by the "JSON Web Token Claims" +   IANA registry as defined in [RFC7519], Section 10.1.  Implementations +   of PASSporT MUST support the baseline claims defined in Section 5.2 +   and MAY support extended claims.  If it is necessary for an extension +   to PASSporT to require that a relying party support a particular +   extended claim or set of claims in the PASSporT object, it can do so +   by specifying a "ppt" element for the PASSporT JOSE Header.  All +   values of "ppt" need to be defined in a specification that associates +   the new value of the "ppt" element with the required claims and +   behaviors.  Relying parties MUST fail to validate PASSporT objects +   containing an unsupported "ppt". + + + + + + + +Wendt & Peterson             Standards Track                   [Page 13] + +RFC 8225                        PASSporT                   February 2018 + + +   Using protocols MUST explicitly define how they carry each claim and +   the rules for how the header and payload objects are constructed +   beyond the lexicographical and serialization rules defined in this +   document. + +   Using protocols that carry the compact form of PASSporT (Section 7) +   instead of the full form MUST use only mandatory extensions signaled +   with "ppt" -- if a using protocol were to add additional optional +   claims to a PASSporT object it carried in compact form, relying +   parties would have no way to reconstruct the token.  Moreover, using +   protocols that support the compact form of PASSporT MUST have some +   field to signal "ppt" to relying parties, as the compact form of +   PASSporT omits the JOSE Header. + +8.2.  Example Extended PASSporT Header + +   An example header with a PASSporT extension type of "foo" is as +   follows: + +   { +     "alg":"ES256", +     "ppt":"foo", +     "typ":"passport", +     "x5u":"https://tel.example.org/passport.cer" +   } + +8.3.  Extended PASSporT Claims + +   Specifications that define extensions to the PASSporT mechanism MUST +   explicitly specify what claims they include beyond the base set of +   claims from this document, the order in which they will appear, and +   any further information necessary to implement the extension.  All +   extensions MUST include the baseline PASSporT claim elements +   specified in Section 5; claims may only be appended to the claims +   object specified; they can never be removed or reordered.  Specifying +   new claims follows the baseline JWT procedures ([RFC7519], +   Section 10.1).  Understanding an extension or new claims defined by +   the extension on the destination verification of the PASSporT is +   optional.  The creator of a PASSporT object cannot assume that +   destination systems will understand any given extension. +   Verification of PASSporTs by destination systems that do support an +   extension may then trigger appropriate application-level behavior in +   the presence of an extension; authors of extensions should provide +   appropriate extension-specific guidance to application developers on +   this point. + + + + + + +Wendt & Peterson             Standards Track                   [Page 14] + +RFC 8225                        PASSporT                   February 2018 + + +   An example set of extended claims, extending the first example in +   Section 5.2.1.4 using "bar" as the newly defined claim, would be as +   follows: + +   { +     "bar":"beyond all recognition" +     "dest":{"uri":["sip:alice@example.com"]}, +     "iat":1443208345, +     "orig":{"tn":"12155551212"} +   } + +9.  Deterministic JSON Serialization + +   JSON objects can include spaces and line breaks, and key value pairs +   can occur in any order.  It is therefore a non-deterministic string +   format.  In order to make the digital signature verification work +   deterministically, the JSON representation of the JWS Protected +   Header object and JWS Payload object MUST be computed as follows. + +   The JSON object MUST follow the following rules.  These rules are +   based on the thumbprint of a JSON Web Key (JWK) as defined in +   Section 3 Step 1 of [RFC7638]. + +   1.  The JSON object MUST contain no whitespace or line breaks before +       or after any syntactic elements. + +   2.  JSON objects MUST have the keys ordered lexicographically by the +       Unicode [UNICODE] code points of the member names. + +   3.  JSON value literals MUST be lowercase. + +   4.  JSON numbers are to be encoded as integers unless the field is +       defined to be encoded otherwise. + +   5.  Encoding rules MUST be applied recursively to member values and +       array values. + +   Note: For any PASSporT extension claims, member names within the +   scope of a JSON object MUST NOT be equal to other member names; +   otherwise, serialization will not be deterministic. + + + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 15] + +RFC 8225                        PASSporT                   February 2018 + + +9.1.  Example PASSporT Deterministic JSON Form + +   This section demonstrates the deterministic JSON serialization for +   the example PASSporT Payload shown in Section 5.2.1.4. + +   The initial JSON object is shown here: + +   { +     "dest":{"uri":["sip:alice@example.com"]}, +     "orig":{"tn":"12155551212"} +     "iat":1443208345, +     "mky":[ +       { +         "alg":"sha-256", +         "dig":"021ACC5427ABEB9C533F3E4B652E7D463F5442CD54 +           F17A03A27DF9B07F4619B2" +       }, +       { +         "alg":"sha-256", +         "dig":"4AADB9B13F82183B540212DF3E5D496B19E57C +           AB3E4B652E7D463F5442CD54F1" +       } +     ], +   } + +   The parent members of the JSON object are as follows: + +   o  "dest" + +   o  "orig" + +   o  "iat" + +   o  "mky" + +   Their lexicographic order is: + +   o  "dest" + +   o  "iat" + +   o  "mky" + +   o  "orig" + + + + + + + +Wendt & Peterson             Standards Track                   [Page 16] + +RFC 8225                        PASSporT                   February 2018 + + +   The final constructed deterministic JSON serialization +   representation, with whitespace and line breaks removed (with line +   breaks used for display purposes only), is: + +   {"dest":{"uri":["sip:alice@example.com"],"iat":1443208345,"mky": +   [{"alg":"sha-256","dig":"021ACC5427ABEB9C533F3E4B652E7D463F5442CD5 +   4F17A03A27DF9B07F4619B2"},{"alg":"sha-256","dig":"4AADB9B13F82183B5 +   40212DF3E5D496B19E57CAB3E4B652E7D463F5442CD54F1"}], +   "orig":{"tn":"12155551212"}} + +10.  Security Considerations + +10.1.  Avoidance of Replay and Cut-and-Paste Attacks + +   There are a number of security considerations regarding the use of +   the token for the avoidance of replay and cut-and-paste attacks. +   PASSporTs SHOULD only be sent with application-level protocol +   information (e.g., for SIP, an INVITE as defined in [RFC3261]) +   corresponding to the required fields in the token.  A unique set of +   token claims and token signature is constructed using the originating +   identity being asserted with the "orig" claim along with the +   following two claims: + +   o  The "iat" claim should correspond to a date/time that the message +      was originated.  It should also be within a relative time that is +      reasonable for clock drift and transmission time characteristics +      associated with the application using the PASSporT.  Therefore, +      validation of the token should consider date and time correlation, +      which could be influenced by usage specific to the signaling +      protocol and by network time differences. + +   o  The "dest" claim is included to further restrict the use of a +      valid PASSporT being sent as a replay attack to other destination +      parties.  The verification of the PASSporT at the destination +      should verify that the "dest" claim matches the destination party +      as the intended recipient of the message. + + + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 17] + +RFC 8225                        PASSporT                   February 2018 + + +10.2.  Solution Considerations + +   The use of PASSporTs based on the validation of the digital signature +   and the associated certificate requires consideration of the +   authentication and authority or reputation of the signer to attest to +   the identity being asserted.  The following considerations should be +   recognized when using PASSporT: + +   o  The use of this token should not, in its own right, be considered +      a full solution for absolute non-repudiation of the identity being +      asserted. + +   o  In many applications, the signer and the end user represented by +      the asserted identity may not be one and the same.  For example, +      when a service provider signs and validates the token on behalf of +      the user consuming the service, the provider MUST have an +      authenticated and secure relationship with the end user or the +      device initiating and terminating the communications signaling. + +   o  Applications that use PASSporT should ensure that the verification +      of the signature includes a means for verifying that the signer is +      authoritative through the use of an application-specific or +      service-specific set of common trust anchors for the application. + +11.  IANA Considerations + +11.1.  Media Type Registration + +   This section registers the "application/passport" media type (see +   [RFC2046] for the definition of "media type") in the "Media Types" +   registry in the manner described in [RFC6838], to indicate that the +   content is a PASSporT-defined JWT. + +   o  Type name: application + +   o  Subtype name: passport + +   o  Required parameters: N/A + +   o  Optional parameters: N/A + +   o  Encoding considerations: 8bit; application/passport values are +      encoded as a series of base64url-encoded values (some of which may +      be the empty string) separated by period (".") characters. + +   o  Security considerations: See the Security Considerations section +      of [RFC7515]. + + + + +Wendt & Peterson             Standards Track                   [Page 18] + +RFC 8225                        PASSporT                   February 2018 + + +   o  Interoperability considerations: N/A + +   o  Published specification: RFC 8225 + +   o  Applications that use this media type: Secure Telephone Identity +      Revisited (STIR) and other applications that require +      identity-related assertion + +   o  Fragment identifier considerations: N/A + +   o  Additional information: + +         Magic number(s): N/A + +         File extension(s): N/A + +         Macintosh file type code(s): N/A + +   o  Person & email address to contact for further information: Chris +      Wendt, chris-ietf@chriswendt.net + +   o  Intended usage: COMMON + +   o  Restrictions on usage: none + +   o  Author: Chris Wendt <chris-ietf@chriswendt.net> + +   o  Change Controller: IESG + +   o  Provisional registration?  No + +11.2.  Registrations in "JSON Web Token Claims" + +   Claim Name: "orig" +   Claim Description: Originating Identity String +   Change Controller: IESG +   Reference: Section 5.2.1 of RFC 8225 + +   Claim Name: "dest" +   Claim Description: Destination Identity String +   Change Controller: IESG +   Reference: Section 5.2.1 of RFC 8225 + +   Claim Name: "mky" +   Claim Description: Media Key Fingerprint String +   Change Controller: IESG +   Reference: Section 5.2.2 of RFC 8225 + + + + +Wendt & Peterson             Standards Track                   [Page 19] + +RFC 8225                        PASSporT                   February 2018 + + +11.3.  Registration in "JSON Web Signature and Encryption Header +       Parameters" + +   Header Parameter Name: "ppt" +   Header Parameter Description: PASSporT extension identifier +   Header Parameter Usage Location(s): JWS +   Change Controller: IESG +   Reference: Section 8.1 of RFC 8225 + +11.4.  PASSporT Extensions Registry + +   The IANA has created a new PASSporT Type registry for "ppt" parameter +   values.  That parameter and its values are defined in Section 8.1. +   New registry entries must contain the name of the "ppt" parameter +   value and the specification in which the value is described.  The +   policy for this registry is Specification Required [RFC8126]. + +12.  References + +12.1.  Normative References + +   [RFC2046]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail +              Extensions (MIME) Part Two: Media Types", RFC 2046, +              DOI 10.17487/RFC2046, November 1996, +              <https://www.rfc-editor.org/info/rfc2046>. + +   [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>. + +   [RFC3629]  Yergeau, F., "UTF-8, a transformation format of +              ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, +              November 2003, <https://www.rfc-editor.org/info/rfc3629>. + +   [RFC3986]  Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform +              Resource Identifier (URI): Generic Syntax", STD 66, +              RFC 3986, DOI 10.17487/RFC3986, January 2005, +              <https://www.rfc-editor.org/info/rfc3986>. + +   [RFC4566]  Handley, M., Jacobson, V., and C. Perkins, "SDP: Session +              Description Protocol", RFC 4566, DOI 10.17487/RFC4566, +              July 2006, <https://www.rfc-editor.org/info/rfc4566>. + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 20] + +RFC 8225                        PASSporT                   February 2018 + + +   [RFC4572]  Lennox, J., "Connection-Oriented Media Transport over the +              Transport Layer Security (TLS) Protocol in the Session +              Description Protocol (SDP)", RFC 4572, +              DOI 10.17487/RFC4572, July 2006, +              <https://www.rfc-editor.org/info/rfc4572>. + +   [RFC6838]  Freed, N., Klensin, J., and T. Hansen, "Media Type +              Specifications and Registration Procedures", BCP 13, +              RFC 6838, DOI 10.17487/RFC6838, January 2013, +              <https://www.rfc-editor.org/info/rfc6838>. + +   [RFC6979]  Pornin, T., "Deterministic Usage of the Digital Signature +              Algorithm (DSA) and Elliptic Curve Digital Signature +              Algorithm (ECDSA)", RFC 6979, DOI 10.17487/RFC6979, +              August 2013, <https://www.rfc-editor.org/info/rfc6979>. + +   [RFC7515]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web +              Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, +              May 2015, <https://www.rfc-editor.org/info/rfc7515>. + +   [RFC7518]  Jones, M., "JSON Web Algorithms (JWA)", RFC 7518, +              DOI 10.17487/RFC7518, May 2015, +              <https://www.rfc-editor.org/info/rfc7518>. + +   [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>. + +   [RFC7638]  Jones, M. and N. Sakimura, "JSON Web Key (JWK) +              Thumbprint", RFC 7638, DOI 10.17487/RFC7638, +              September 2015, <https://www.rfc-editor.org/info/rfc7638>. + +   [RFC8122]  Lennox, J. and C. Holmberg, "Connection-Oriented Media +              Transport over the Transport Layer Security (TLS) Protocol +              in the Session Description Protocol (SDP)", RFC 8122, +              DOI 10.17487/RFC8122, March 2017, +              <https://www.rfc-editor.org/info/rfc8122>. + +   [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>. + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 21] + +RFC 8225                        PASSporT                   February 2018 + + +   [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>. + +   [UNICODE]  The Unicode Consortium, "The Unicode Standard", +              <http://www.unicode.org/versions/latest/>. + +12.2.  Informative References + +   [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>. + +   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S., +              Housley, R., and W. Polk, "Internet X.509 Public Key +              Infrastructure Certificate and Certificate Revocation List +              (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, +              <https://www.rfc-editor.org/info/rfc5280>. + +   [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>. + +   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for +              Writing an IANA Considerations Section in RFCs", BCP 26, +              RFC 8126, DOI 10.17487/RFC8126, June 2017, +              <https://www.rfc-editor.org/info/rfc8126>. + + + + + + + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 22] + +RFC 8225                        PASSporT                   February 2018 + + +Appendix A.  Example ES256-Based PASSporT JWS Serialization and +             Signature + +   For PASSporT, there will always be a JWS with the following members: + +   o  "protected", with the value BASE64URL(UTF8(JWS Protected Header)) + +   o  "payload", with the value BASE64URL(JWS Payload) + +   o  "signature", with the value BASE64URL(JWS Signature) + +   This example will follow the steps in JWS ([RFC7515], Section 5.1, +   Steps 1-6 and 8); it incorporates the additional serialization steps +   required for PASSporT. + +   Step 1 for JWS references the JWS Payload.  An example PASSporT +   Payload is as follows: + +   { +     "dest":{"uri":["sip:alice@example.com"]} +     "iat":1471375418, +     "orig":{"tn":"12155551212"} +   } + +   This would be serialized to the following form (with line break used +   for display purposes only): + +   {"dest":{"uri":["sip:alice@example.com"]},"iat":1471375418, +   "orig":{"tn":"12155551212"}} + +   Step 2 computes the BASE64URL(JWS Payload), producing this value +   (with line break used for display purposes only): + +   eyJkZXN0Ijp7InVyaSI6WyJzaXA6YWxpY2VAZXhhbXBsZS5jb20iXX0sImlhdCI +   6MTQ3MTM3NTQxOCwib3JpZyI6eyJ0biI6IjEyMTU1NTUxMjEyIn19 + +   For Step 3, an example PASSporT Protected Header constructed as a +   JOSE Header is as follows: + +   { +     "alg":"ES256", +     "typ":"passport", +     "x5u":"https://cert.example.org/passport.cer" +   } + + + + + + + +Wendt & Peterson             Standards Track                   [Page 23] + +RFC 8225                        PASSporT                   February 2018 + + +   This would be serialized to the following form (with line break used +   for display purposes only): + +   {"alg":"ES256","typ":"passport","x5u":"https://cert.example.org +     /passport.cer"} + +   Step 4 performs the BASE64URL(UTF8(JWS Protected Header)) operation +   and encoding, producing this value (with line break used for display +   purposes only): + +   eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9j +   ZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9 + +   Steps 5 and 6 perform the computation of the digital signature of the +   PASSporT Signing Input ASCII(BASE64URL(UTF8(JWS Protected Header)) || +   "." || BASE64URL(JWS Payload)), using ES256 as the algorithm and the +   BASE64URL(JWS Signature). + +   VLBCIVDCaeK6M4hLJb6SHQvacAQVvoiiEOWQ_iUkqk79UD81fHQ0E1b3_GluIkb +   a7UWYRM47ZbNFdOJquE35cw + +   Step 8 describes how to create the final PASSporT, concatenating the +   values in the order Header.Payload.Signature with period (".") +   characters.  For the above example values, this would produce the +   following (with line breaks between periods used for readability +   purposes only): + +   eyJhbGciOiJFUzI1NiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cHM6Ly9j +   ZXJ0LmV4YW1wbGUub3JnL3Bhc3Nwb3J0LmNlciJ9 +   . +   eyJkZXN0Ijp7InVyaSI6WyJzaXA6YWxpY2VAZXhhbXBsZS5jb20iXX0sImlhdCI +   6MTQ3MTM3NTQxOCwib3JpZyI6eyJ0biI6IjEyMTU1NTUxMjEyIn19 +   . +   VLBCIVDCaeK6M4hLJb6SHQvacAQVvoiiEOWQ_iUkqk79UD81fHQ0E1b3_GluIkb +   a7UWYRM47ZbNFdOJquE35cw + +A.1.  X.509 Private Key in PKCS #8 Format for ES256 Example + +   -----BEGIN PRIVATE KEY----- +   MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgi7q2TZvN9VDFg8Vy +   qCP06bETrR2v8MRvr89rn4i+UAahRANCAAQWfaj1HUETpoNCrOtp9KA8o0V79IuW +   ARKt9C1cFPkyd3FBP4SeiNZxQhDrD0tdBHls3/wFe8++K2FrPyQF9vuh +   -----END PRIVATE KEY----- + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 24] + +RFC 8225                        PASSporT                   February 2018 + + +A.2.  X.509 Public Key for ES256 Example + +   -----BEGIN PUBLIC KEY----- +   MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8HNbQd/TmvCKwPKHkMF9fScavGeH +   78YTU8qLS8I5HLHSSmlATLcslQMhNC/OhlWBYC626nIlo7XeebYS7Sb37g== +   -----END PUBLIC KEY----- + +Acknowledgments + +   Particular thanks to members of the ATIS and SIP Forum NNI Task +   Group, including Jim McEachern, Martin Dolly, Richard Shockey, John +   Barnhill, Christer Holmberg, Victor Pascual Avila, Mary Barnes, and +   Eric Burger, for their review, ideas, and contributions.  Thanks also +   to Henning Schulzrinne, Russ Housley, Alan Johnston, Richard Barnes, +   Mark Miller, Ted Hardie, Dave Crocker, Robert Sparks, and Jim Schaad +   for valuable feedback on the technical and security aspects of the +   document.  Additional thanks to Harsha Bellur for assistance in +   coding the example tokens. + +Authors' Addresses + +   Chris Wendt +   Comcast +   One Comcast Center +   Philadelphia, PA  19103 +   United States of America + +   Email: chris-ietf@chriswendt.net + + +   Jon Peterson +   Neustar Inc. +   1800 Sutter St. Suite 570 +   Concord, CA  94520 +   United States of America + +   Email: jon.peterson@neustar.biz + + + + + + + + + + + + + + +Wendt & Peterson             Standards Track                   [Page 25] + |