| rfc9448.original | rfc9448.txt | |||
|---|---|---|---|---|
| Network Working Group C. Wendt | Internet Engineering Task Force (IETF) C. Wendt | |||
| Internet-Draft Somos Inc. | Request for Comments: 9448 D. Hancock | |||
| Intended status: Standards Track D. Hancock | Category: Standards Track Somos Inc. | |||
| Expires: 11 August 2023 Comcast | ISSN: 2070-1721 M. Barnes | |||
| M. Barnes | ||||
| J. Peterson | J. Peterson | |||
| Neustar Inc. | Neustar Inc. | |||
| 7 February 2023 | September 2023 | |||
| TNAuthList profile of ACME Authority Token | TNAuthList Profile of Automated Certificate Management Environment | |||
| draft-ietf-acme-authority-token-tnauthlist-13 | (ACME) Authority Token | |||
| Abstract | Abstract | |||
| This document defines a profile of the Automated Certificate | This document defines a profile of the Automated Certificate | |||
| Management Environment (ACME) Authority Token for the automated and | Management Environment (ACME) Authority Token for the automated and | |||
| authorized creation of certificates for VoIP Telephone Providers to | authorized creation of certificates for Voice over IP (VoIP) | |||
| support Secure Telephony Identity (STI) using the TNAuthList defined | telephone providers to support Secure Telephone Identity (STI) using | |||
| by STI certificates. | the TNAuthList defined by STI certificates. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| 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 | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 11 August 2023. | 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/rfc9448. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements Language | |||
| 3. ACME new-order identifiers for TNAuthList . . . . . . . . . . 3 | 3. ACME New-Order Identifiers for TNAuthList | |||
| 4. TNAuthList Identifier Authorization . . . . . . . . . . . . . 5 | 4. TNAuthList Identifier Authorization | |||
| 5. TNAuthList Authority Token . . . . . . . . . . . . . . . . . 7 | 5. TNAuthList Authority Token | |||
| 5.1. "iss" claim . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.1. "iss" Claim | |||
| 5.2. "exp" claim . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.2. "exp" Claim | |||
| 5.3. "jti" claim . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.3. "jti" Claim | |||
| 5.4. "atc" claim . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.4. "atc" Claim | |||
| 5.5. Acquiring the token from the Token Authority . . . . . . 8 | 5.5. Acquiring the Token from the Token Authority | |||
| 5.6. Token Authority Responsibilities . . . . . . . . . . . . 10 | 5.6. Token Authority Responsibilities | |||
| 5.7. Scope of the TNAuthList . . . . . . . . . . . . . . . . . 10 | 5.7. Scope of the TNAuthList | |||
| 6. Validating the TNAuthList Authority Token . . . . . . . . . . 10 | 6. Validating the TNAuthList Authority Token | |||
| 7. Using ACME-issued Certificates with JSON Web Signature . . . 11 | 7. Using ACME-Issued Certificates with JSON Web Signature | |||
| 8. Usage Considerations . . . . . . . . . . . . . . . . . . . . 13 | 8. Usage Considerations | |||
| 8.1. Large number of Non-contiguous TNAuthList values . . . . 13 | 8.1. Large Number of Noncontiguous TNAuthList Values | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | 9. IANA Considerations | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 10. Security Considerations | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | 11. References | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 11.1. Normative References | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 11.2. Informative References | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 16 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| [RFC8555] is a mechanism for automating certificate management on the | [RFC8555] describes a mechanism for automating certificate management | |||
| Internet. It enables administrative entities to prove effective | on the Internet. It enables administrative entities to prove | |||
| control over resources like domain names, and automates the process | effective control over resources like domain names, and it automates | |||
| of generating and issuing certificates. | the process of generating and issuing certificates. [RFC9447] | |||
| [I-D.ietf-acme-authority-token] extends ACME to provide a general | extends ACME to provide a general method of extending the authority | |||
| method of extending the authority and authorization of entities to | and authorization of entities to control a resource via a third party | |||
| control a resource via a third party Token Authority beyond the | Token Authority beyond the certification authority (CA). | |||
| Certification Authority (CA). | ||||
| This document is a profile document using the Authority Token | This document is a profile document using the Authority Token | |||
| mechanism defined in [I-D.ietf-acme-authority-token]. It is a | mechanism defined in [RFC9447]. It is a profile that specifically | |||
| profile that specifically addresses the STIR problem statement | addresses the Secure Telephone Identity Revisited (STIR) problem | |||
| [RFC7340] which identifies the need for Internet credentials that can | statement described in [RFC7340], which identifies the need for | |||
| attest authority for the originator of VoIP calls in order to detect | Internet credentials that can attest authority for the originator of | |||
| impersonation, which is currently an enabler for common attacks | VoIP calls in order to detect impersonation, which is currently an | |||
| associated with illegal robocalling, voicemail hacking, and swatting. | enabler for common attacks associated with illegal robocalling, | |||
| voicemail hacking, and swatting. These credentials are used to sign | ||||
| These credentials are used to sign PASSporTs [RFC8225], which can be | Personal Assertion Tokens (PASSporTs) [RFC8225], which can be carried | |||
| carried in using protocols such as SIP [RFC8224]. Currently, the | in using protocols such as SIP [RFC8224]. Currently, the only | |||
| only defined credentials for this purpose are the certificates | defined credentials for this purpose are the certificates specified | |||
| specified in [RFC8226] using the TNAuthList. This document defines | in [RFC8226] using the TNAuthList. This document defines the use of | |||
| the use of the TNAuthList Authority Token in the ACME challenge to | the TNAuthList Authority Token in the ACME challenge to prove the | |||
| proof the authoritative use of the contents of the TNAuthList, | authoritative use of the contents of the TNAuthList, including a | |||
| including a Service Provider Token (SPC), a Telephone Number, or a | Service Provider Code (SPC), a telephone number, or a set of | |||
| set of telephone numbers or telephone number blocks. | telephone numbers or telephone number blocks. | |||
| This document also describes the ability for a telephone authority to | This document also describes the ability for a telephone authority to | |||
| authorize the creation of CA types of certificates for delegation as | authorize the creation of CA types of certificates for delegation, as | |||
| defined in [RFC9060]. | defined in [RFC9060]. | |||
| 2. Terminology | 2. Requirements Language | |||
| The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. ACME new-order identifiers for TNAuthList | 3. ACME New-Order Identifiers for TNAuthList | |||
| In [RFC8555], Section 7 defines the procedure that an ACME client | Section 7 of [RFC8555] defines the procedure that an ACME client uses | |||
| uses to order a new certificate from a CA. The new-order request | to order a new certificate from a CA. The new-order request contains | |||
| contains an identifier field that specifies the identifier objects | an identifier field that specifies the identifier objects the order | |||
| the order corresponds to. This draft defines a new type of | corresponds to. This document defines a new type of identifier | |||
| identifier object called TNAuthList. A TNAuthList identifier | object called TNAuthList. A TNAuthList identifier contains the | |||
| contains the identity information to be populated in the TN | identity information to be populated in the TNAuthList of the new | |||
| Authorization List of the new certificate. For the TNAuthList | certificate. For the TNAuthList identifier, the new-order request | |||
| identifier, the new-order request includes a type set to the string | includes a type set to the string "TNAuthList". The value of the | |||
| "TNAuthList". The value of the TNAuthList identifier MUST be set to | TNAuthList identifier MUST be set to the details of the TNAuthList | |||
| the details of the TNAuthList requested. | requested. | |||
| The format of the string that represents the TNAuthList MUST be | The string that represents the TNAuthList MUST be constructed using | |||
| constructed using base64url encoding, as per [RFC8555] base64url | base64url encoding, as described in Section 5 of [RFC4648] and as | |||
| encoding described in Section 5 of [RFC4648] according to the profile | defined in Section 2 of JSON Web Signature [RFC7515]. The base64url | |||
| specified in JSON Web Signature in Section 2 of [RFC7515]. The | encoding MUST NOT include any padding characters, and the TNAuthList | |||
| base64url encoding MUST NOT include any padding characters and the | ASN.1 object MUST be encoded using DER encoding rules. | |||
| TNAuthList ASN.1 object MUST encoded using DER encoding rules. | ||||
| An example of an ACME order object “identifiers” field containing a | An example of an ACME order object "identifiers" field containing a | |||
| TNAuthList certificate would look as follows, | TNAuthList certificate is as follows: | |||
| "identifiers": [{"type":"TNAuthList","value":"F83n2a...avn27DN3"}] | "identifiers": [{"type":"TNAuthList","value":"F83n2a...avn27DN3"}] | |||
| where the "value" object string represents the arbitrary length | where the "value" object string represents the arbitrary length of | |||
| base64url encoded string. | the base64url-encoded string. | |||
| A full new-order request would look as follows, | A full new-order request would look as follows: | |||
| POST /acme/new-order HTTP/1.1 | POST /acme/new-order HTTP/1.1 | |||
| Host: example.com | Host: example.com | |||
| Content-Type: application/jose+json | Content-Type: application/jose+json | |||
| { | { | |||
| "protected": base64url({ | "protected": base64url({ | |||
| "alg": "ES256", | "alg": "ES256", | |||
| "kid": "https://example.com/acme/acct/evOfKhNU60wg", | "kid": "https://example.com/acme/acct/evOfKhNU60wg", | |||
| "nonce": "5XJ1L3lEkMG7tR6pA00clA", | "nonce": "5XJ1L3lEkMG7tR6pA00clA", | |||
| skipping to change at page 4, line 27 ¶ | skipping to change at line 164 ¶ | |||
| }), | }), | |||
| "payload": base64url({ | "payload": base64url({ | |||
| "identifiers": [{"type":"TNAuthList","value":"F83n...n27DN3"}], | "identifiers": [{"type":"TNAuthList","value":"F83n...n27DN3"}], | |||
| "notBefore": "2021-01-01T00:00:00Z", | "notBefore": "2021-01-01T00:00:00Z", | |||
| "notAfter": "2021-01-08T00:00:00Z" | "notAfter": "2021-01-08T00:00:00Z" | |||
| }), | }), | |||
| "signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g" | "signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g" | |||
| } | } | |||
| On receiving a valid new-order request, the ACME server creates an | On receiving a valid new-order request, the ACME server creates an | |||
| authorization object, [RFC8555] Section 7.1.4, containing the | authorization object ([RFC8555], Section 7.1.4), containing the | |||
| challenge that the ACME client must satisfy to demonstrate authority | challenge that the ACME client must satisfy to demonstrate authority | |||
| for the identifiers specified by the new order (in this case, the | for the identifiers specified by the new order (in this case, the | |||
| TNAuthList identifier). The CA adds the authorization object URL to | TNAuthList identifier). The CA adds the authorization object URL to | |||
| the "authorizations" field of the order object, and returns the order | the "authorizations" field of the order object and returns the order | |||
| object to the ACME client in the body of a 201 (Created) response. | object to the ACME client in the body of a 201 (Created) response. | |||
| HTTP/1.1 201 Created | HTTP/1.1 201 Created | |||
| Content-Type: application/json | Content-Type: application/json | |||
| Replay-Nonce: MYAuvOpaoIiywTezizk5vw | Replay-Nonce: MYAuvOpaoIiywTezizk5vw | |||
| Location: https://example.com/acme/order/1234 | Location: https://example.com/acme/order/1234 | |||
| { | { | |||
| "status": "pending", | "status": "pending", | |||
| "expires": "2022-01-08T00:00:00Z", | "expires": "2022-01-08T00:00:00Z", | |||
| skipping to change at page 5, line 9 ¶ | skipping to change at line 195 ¶ | |||
| "authorizations": [ | "authorizations": [ | |||
| "https://example.com/acme/authz/1234" | "https://example.com/acme/authz/1234" | |||
| ], | ], | |||
| "finalize": "https://example.com/acme/order/1234/finalize" | "finalize": "https://example.com/acme/order/1234/finalize" | |||
| } | } | |||
| 4. TNAuthList Identifier Authorization | 4. TNAuthList Identifier Authorization | |||
| On receiving the new-order response, the ACME client queries the | On receiving the new-order response, the ACME client queries the | |||
| referenced authorization object to obtain the challenges for the | referenced authorization object to obtain the challenges for the | |||
| identifier contained in the new-order request as shown in the | identifier contained in the new-order request, as shown in the | |||
| following example request and response. | following example request and response. | |||
| POST /acme/authz/1234 HTTP/1.1 | POST /acme/authz/1234 HTTP/1.1 | |||
| Host: example.com | Host: example.com | |||
| Content-Type: application/jose+json | Content-Type: application/jose+json | |||
| { | { | |||
| "protected": base64url({ | "protected": base64url({ | |||
| "alg": "ES256", | "alg": "ES256", | |||
| "kid": " https://example.com/acme/acct/evOfKhNU60wg", | "kid": " https://example.com/acme/acct/evOfKhNU60wg", | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at line 236 ¶ | |||
| "challenges": [ | "challenges": [ | |||
| { | { | |||
| "type": "tkauth-01", | "type": "tkauth-01", | |||
| "tkauth-type": "atc", | "tkauth-type": "atc", | |||
| "token-authority": "https://authority.example.org", | "token-authority": "https://authority.example.org", | |||
| "url": "https://example.com/acme/chall/prV_B7yEyA4", | "url": "https://example.com/acme/chall/prV_B7yEyA4", | |||
| "token": "IlirfxKKXAsHtmzK29Pj8A" | "token": "IlirfxKKXAsHtmzK29Pj8A" | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| When processing a certificate order containing an identifier of type | When processing a certificate order containing an identifier of type | |||
| "TNAuthList", a CA uses the Authority Token challenge type of | "TNAuthList", a CA uses the Authority Token challenge type of | |||
| "tkauth-01" with a "tkauth-type" of "atc" in | "tkauth-01" with a "tkauth-type" of "atc" in [RFC9447] to verify that | |||
| [I-D.ietf-acme-authority-token] to verify that the requesting ACME | the requesting ACME client has authenticated and authorized control | |||
| client has authenticated and authorized control over the requested | over the requested resources represented by the "TNAuthList" value. | |||
| resources represented by the "TNAuthList" value. | ||||
| The challenge "token-authority" parameter is only used in cases where | The challenge "token-authority" parameter is only used in cases where | |||
| the VoIP telephone network requires the CA to identify the Token | the VoIP telephone network requires the CA to identify the Token | |||
| Authority. This is currently not the case for the SHAKEN | Authority. This is currently not the case for the Signature-based | |||
| [ATIS-1000080] certificate framework governance, but may be used by | Handling of Asserted information using toKENs (SHAKEN) [ATIS-1000080] | |||
| other frameworks. If a "token-authority" parameter is present, then | certificate framework governance but may be used by other frameworks. | |||
| the ACME client MAY use the "token-authority" value to identify the | If a "token-authority" parameter is present, then the ACME client MAY | |||
| URL representing the Token Authority that will provide the TNAuthList | use the "token-authority" value to identify the URL representing the | |||
| Authority Token response to the challenge. If the "token-authority" | Token Authority that will provide the TNAuthList Authority Token | |||
| parameter is not present, then the ACME client MUST identify the | response to the challenge. If the "token-authority" parameter is not | |||
| Token Authority based on locally configured information or local | present, then the ACME client MUST identify the Token Authority based | |||
| policies. | on locally configured information or local policies. | |||
| The ACME client responds to the challenge by posting the TNAuthList | The ACME client responds to the challenge by posting the TNAuthList | |||
| Authority Token to the challenge URL identified in the returned ACME | Authority Token to the challenge URL identified in the returned ACME | |||
| authorization object, an example of which follows. | authorization object, an example of which follows: | |||
| POST /acme/chall/prV_B7yEyA4 HTTP/1.1 | POST /acme/chall/prV_B7yEyA4 HTTP/1.1 | |||
| Host: boulder.example.com | Host: boulder.example.com | |||
| Content-Type: application/jose+json | Content-Type: application/jose+json | |||
| { | { | |||
| "protected": base64url({ | "protected": base64url({ | |||
| "alg": "ES256", | "alg": "ES256", | |||
| "kid": "https://example.com/acme/acct/evOfKhNU60wg", | "kid": "https://example.com/acme/acct/evOfKhNU60wg", | |||
| "nonce": "Q_s3MWoqT05TrdkM2MTDcw", | "nonce": "Q_s3MWoqT05TrdkM2MTDcw", | |||
| skipping to change at page 7, line 7 ¶ | skipping to change at line 282 ¶ | |||
| }), | }), | |||
| "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ" | "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ" | |||
| } | } | |||
| The "tkauth" field is defined as a new field in the challenge object | The "tkauth" field is defined as a new field in the challenge object | |||
| specific to the tkauth-01 challenge type that should contain the | specific to the tkauth-01 challenge type that should contain the | |||
| TNAuthList Authority Token defined in the next section. | TNAuthList Authority Token defined in the next section. | |||
| 5. TNAuthList Authority Token | 5. TNAuthList Authority Token | |||
| The Telephone Number Authority List Authority Token (TNAuthList | The TNAuthList Authority Token is a profile instance of the ACME | |||
| Authority Token) is a profile instance of the ACME Authority Token | Authority Token defined in [RFC9447]. | |||
| defined in [I-D.ietf-acme-authority-token]. | ||||
| The TNAuthList Authority Token Protected header MUST comply with the | The TNAuthList Authority Token protected header MUST comply with | |||
| Authority Token Protected header as defined in | "Request Authentication" (Section 6.2 of [RFC8555]). | |||
| [I-D.ietf-acme-authority-token]. | ||||
| The TNAuthList Authority Token Payload MUST include the mandatory | The TNAuthList Authority Token Payload MUST include the mandatory | |||
| claims "exp", "jti", and "atc", and MAY include the optional claims | claims "exp", "jti", and "atc" and MAY include the optional claims | |||
| defined for the Authority Token detailed in the next subsections. | defined for the Authority Token detailed in the next subsections. | |||
| 5.1. "iss" claim | 5.1. "iss" Claim | |||
| The "iss" claim is an optional claim defined in [RFC7519] | The "iss" claim is an optional claim defined in [RFC7519], | |||
| Section 4.1.1. It can be used as a URL identifying the Token | Section 4.1.1. It can be used as a URL identifying the Token | |||
| Authority that issued the TNAuthList Authority Token beyond the "x5u" | Authority that issued the TNAuthList Authority Token beyond the "x5u" | |||
| or other Header claims that identify the location of the certificate | or other header claims that identify the location of the certificate | |||
| or certificate chain of the Token Authority used to validate the | or certificate chain of the Token Authority used to validate the | |||
| TNAuthList Authority Token. | TNAuthList Authority Token. | |||
| 5.2. "exp" claim | 5.2. "exp" Claim | |||
| The "exp" claim, defined in [RFC7519] Section 4.1.4, MUST be included | The "exp" claim, defined in [RFC7519], Section 4.1.4, MUST be | |||
| and contains the DateTime value of the ending date and time that the | included and contains the DateTime value of the ending date and time | |||
| TNAuthList Authority Token expires. | that the TNAuthList Authority Token expires. | |||
| 5.3. "jti" claim | 5.3. "jti" Claim | |||
| The "jti" claim, defined in [RFC7519] Section 4.1.7, MUST be included | The "jti" claim, defined in [RFC7519], Section 4.1.7, MUST be | |||
| and contains a unique identifier for this TNAuthList Authority Token | included and contains a unique identifier for this TNAuthList | |||
| transaction. | Authority Token transaction. | |||
| 5.4. "atc" claim | 5.4. "atc" Claim | |||
| The "atc" claim MUST be included and is defined in | The "atc" claim MUST be included and is defined in [RFC9447]. It | |||
| [I-D.ietf-acme-authority-token]. It contains a JSON object with the | contains a JSON object with the following elements: | |||
| following elements: | ||||
| * a "tktype" key with a string value equal to "TNAuthList" to | * a "tktype" key with a string value equal to "TNAuthList" to | |||
| represent a TNAuthList profile of the authority token | represent a TNAuthList profile of the Authority Token [RFC9447] | |||
| [I-D.ietf-acme-authority-token] defined by this document. "tktype" | defined by this document. "tktype" is a required key and MUST be | |||
| is a required key and MUST be included. | included. | |||
| * a "tkvalue" key with a string value equal to the base64url | * a "tkvalue" key with a string value equal to the base64url | |||
| encoding of the TN Authorization List certificate extension ASN.1 | encoding of the TNAuthList certificate extension ASN.1 object | |||
| object using DER encoding rules. "tkvalue" is a required key and | using DER encoding rules. "tkvalue" is a required key and MUST be | |||
| MUST be included. | included. | |||
| * a "ca" key with a boolean value set to either true when the | * a "ca" key with a boolean value set to either true when the | |||
| requested certificate is allowed to be a CA cert for delegation | requested certificate is allowed to be a CA cert for delegation | |||
| uses or false when the requested certificate is not intended to be | uses or false when the requested certificate is not intended to be | |||
| a CA cert, only an end-entity certificate. "ca" is an optional | a CA cert, only an end-entity certificate. "ca" is an optional | |||
| key, if not included the "ca" value is considered false by | key; if not included, the "ca" value is considered false by | |||
| default. | default. | |||
| * a "fingerprint" key is constructed as defined in [RFC8555] | * a "fingerprint" key constructed as defined in [RFC8555], | |||
| Section 8.1 corresponding to the computation of the "Thumbprint" | Section 8.1, corresponding to the computation of the "Thumbprint" | |||
| step using the ACME account key credentials. "fingerprint" is a | step using the ACME account key credentials. "fingerprint" is a | |||
| required key and MUST be included. | required key and MUST be included. | |||
| An example of the TNAuthList Authority Token is as follows: | An example of the TNAuthList Authority Token is as follows: | |||
| { | { | |||
| "protected": base64url({ | "protected": base64url({ | |||
| "typ":"JWT", | "typ":"JWT", | |||
| "alg":"ES256", | "alg":"ES256", | |||
| "x5u":"https://authority.example.org/cert" | "x5u":"https://authority.example.org/cert" | |||
| skipping to change at page 8, line 43 ¶ | skipping to change at line 361 ¶ | |||
| "jti":"id6098364921", | "jti":"id6098364921", | |||
| "atc":{"tktype":"TNAuthList", | "atc":{"tktype":"TNAuthList", | |||
| "tkvalue":"F83n2a...avn27DN3", | "tkvalue":"F83n2a...avn27DN3", | |||
| "ca":false, | "ca":false, | |||
| "fingerprint":"SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71: | "fingerprint":"SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71: | |||
| D3:BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3"} | D3:BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3"} | |||
| }), | }), | |||
| "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ" | "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ" | |||
| } | } | |||
| 5.5. Acquiring the token from the Token Authority | 5.5. Acquiring the Token from the Token Authority | |||
| Following [I-D.ietf-acme-authority-token] Section 5, the authority | Following [RFC9447], Section 5, the Authority Token should be | |||
| token should be acquired using a RESTful HTTP POST transaction as | acquired using a RESTful HTTP POST transaction as follows: | |||
| follows: | ||||
| POST /at/account/:id/token HTTP/1.1 | POST /at/account/:id/token HTTP/1.1 | |||
| Host: authority.example.org | Host: authority.example.org | |||
| Content-Type: application/json | Content-Type: application/json | |||
| The request will pass the account id as a string in the request | The request will pass the account identifier as a string in the | |||
| parameter "id". This string will be managed as an identifier | request parameter "id". This string will be managed as an identifier | |||
| specific to the Token Authority's relationship with a communications | specific to the Token Authority's relationship with a Communications | |||
| service provider (CSP). There is assumed to also be a corresponding | Service Provider (CSP). There is assumed to also be a corresponding | |||
| authentication procedure that can be verified for the success of this | authentication procedure that can be verified for the success of this | |||
| transaction. For example, an HTTP authorization header containing a | transaction, for example, an HTTP authorization header containing | |||
| valid authorization credentials as defined in [RFC7231] Section 14.8. | valid authorization credentials, as defined in [RFC9110], | |||
| Section 11.6.2. | ||||
| The body of the POST request MUST contain a JSON object with key | The body of the POST request MUST contain a JSON object with key | |||
| value pairs corresponding to values that are requested as the content | value pairs corresponding to values that are requested as the content | |||
| of the claims in the issued token. As an example, the body SHOULD | of the claims in the issued token. As an example, the body SHOULD | |||
| contain a JSON object as follows: | contain a JSON object as follows: | |||
| { | { | |||
| "tktype":"TNAuthList", | "tktype":"TNAuthList", | |||
| "tkvalue":"F83n2a...avn27DN3", | "tkvalue":"F83n2a...avn27DN3", | |||
| "ca":false, | "ca":false, | |||
| "fingerprint":"SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71:D3 | "fingerprint":"SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71:D3 | |||
| :BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3" | :BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3" | |||
| } | } | |||
| The response to the POST request if successful returns a 200 OK with | If successful, the response to the POST request returns a 200 (OK) | |||
| a JSON body that contains, at a minimum, the TNAuthList Authority | with a JSON body that contains, at a minimum, the TNAuthList | |||
| Token as a JSON object with a key of "token" and the base64url | Authority Token as a JSON object with a key of "token" and the | |||
| encoded string representing the atc token. JSON is easily | base64url-encoded string representing the atc token. JSON is easily | |||
| extensible, so users of this specification may want to pass other | extensible, so users of this specification may want to pass other | |||
| pieces of information relevant to a specific application. | pieces of information relevant to a specific application. | |||
| An example successful response would be as follows: | An example of a successful response would be as follows: | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/json | Content-Type: application/json | |||
| {"token": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"} | {"token": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"} | |||
| If the request is not successful, the response should indicate the | If the request is not successful, the response should indicate the | |||
| error condition. Specifically, for the case that the authorization | error condition. Specifically, for the case that the authorization | |||
| credentials are invalid or if the Account ID provided does not exist, | credentials are invalid or if the account identifier provided does | |||
| the response code MUST be 403 - Forbidden. Other 4xx and 5xx | not exist, the response code MUST be 403 (Forbidden). Other 4xx and | |||
| responses MUST follow standard [RFC7231] HTTP error condition | 5xx responses MUST follow standard HTTP error condition conventions | |||
| conventions. | [RFC9110]. | |||
| 5.6. Token Authority Responsibilities | 5.6. Token Authority Responsibilities | |||
| When creating the TNAuthList Authority Token, the Token Authority | When creating the TNAuthList Authority Token, the Token Authority | |||
| MUST validate that the information contained in the ASN.1 TNAuthList | MUST validate that the information contained in the ASN.1 TNAuthList | |||
| accurately represents the service provider code (SPC) or telephone | accurately represents the service provider code (SPC) or telephone | |||
| number (TN) resources the requesting party is authorized to represent | number (TN) resources the requesting party is authorized to represent | |||
| based on their pre-established and verified secure relationship | based on their pre-established, verified, and secure relationship | |||
| between the Token Authority and the requesting party. Note that the | between the Token Authority and the requesting party. Note that the | |||
| fingerprint in the token request is not meant to be verified by the | fingerprint in the token request is not meant to be verified by the | |||
| Token Authority, but rather is meant to be signed as part of the | Token Authority but rather is meant to be signed as part of the token | |||
| token so that the party that requests the token can, as part of the | so that the party that requests the token can, as part of the | |||
| challenge response, allow the ACME server to validate the token | challenge response, allow the ACME server to validate that the token | |||
| requested and used came from the same party that controls the ACME | requested and used came from the same party that controls the ACME | |||
| client. | client. | |||
| 5.7. Scope of the TNAuthList | 5.7. Scope of the TNAuthList | |||
| Because this specification specifically involves the TNAuthList | Because this specification specifically involves the TNAuthList | |||
| defined in [RFC8226] which involves SPC, TNBlock, and individual TNs, | defined in [RFC8226], which involves SPC, telephone number ranges, | |||
| the client may also request an Authority Token with some subset of | and individual telephone numbers, the client may also request an | |||
| its own authority as the TNAuthList provided in the "tkvalue" element | Authority Token with some subset of its own authority as the | |||
| in the "atc" JSON object. Generally, the scope of authority | TNAuthList provided in the "tkvalue" element in the "atc" JSON | |||
| representing a communications service provider is represented by a | object. Generally, the scope of authority representing a CSP is | |||
| particular SPC (e.g. in North America, an operating company number | represented by a particular SPC (e.g., in North America, an operating | |||
| (OCN) or service provider identifier (SPID)). That provider is also | company number (OCN) or service provider identifier (SPID)). Based | |||
| generally associated, based on number allocations, with a particular | on number allocations, that provider is also generally associated | |||
| set of different TN Blocks and/or TNs. TNAuthList can be constructed | with a particular set of different telephone number ranges and/or | |||
| to define a limited scope of the TNBlocks or TNs either associated | telephone numbers. The TNAuthList can be constructed to define a | |||
| with an SPC or with the scope of TN Blocks or TNs the client has | limited scope of the TelephoneNumberRanges or TelephoneNumbers | |||
| ([RFC8226], Section 9) either associated with an SPC or with the | ||||
| scope of telephone number ranges or telephone numbers the client has | ||||
| authority over. | authority over. | |||
| As recommended in [I-D.ietf-acme-authority-token] security | As recommended in the Security Considerations section in [RFC9447], | |||
| considerations, an Authority Token can either have a scope that | an Authority Token can either have a scope that attests all of the | |||
| attests all of the resources which a client is eligible to receive | resources that a client is eligible to receive certificates for or | |||
| certificates for, or potentially a more limited scope that is | potentially a more limited scope that is intended to capture only | |||
| intended to capture only those resources for which a client will | those resources for which a client will receive a certificate from a | |||
| receive a certificate from a particular certification authority. Any | particular certification authority. Any certification authority that | |||
| certification authority that sees an Authority Token can learn | sees an Authority Token can learn information about the resources a | |||
| information about the resources a client can claim. In cases where | client can claim. In cases where this incurs a privacy risk, | |||
| this incurs a privacy risk, Authority Token scopes should be limited | Authority Token scopes should be limited to only the resources that | |||
| to only the resources that will be attested by the requested ACME | will be attested by the requested ACME certificate. | |||
| certificate. | ||||
| 6. Validating the TNAuthList Authority Token | 6. Validating the TNAuthList Authority Token | |||
| Upon receiving a response to the challenge, the ACME server MUST | Upon receiving a response to the challenge, the ACME server MUST | |||
| perform the following steps to determine the validity of the | perform the following steps to determine the validity of the | |||
| response. | response. | |||
| * Verify that the value of the "atc" claim is a well-formed JSON | 1. Verify that the value of the "atc" claim is a well-formed JSON | |||
| object containing the mandatory key values. | object containing the mandatory key values. | |||
| * If there is an "x5u" parameter verify the "x5u" parameter is a | 2. If there is an "x5u" parameter, verify the "x5u" parameter is an | |||
| HTTPS URL with a reference to a certificate representing the | HTTPS URL with a reference to a certificate representing the | |||
| trusted issuer of authority tokens for the eco-system. | trusted issuer of Authority Tokens for the ecosystem. | |||
| * If there is an "x5c" parameter verify the certificate array | 3. If there is an "x5c" parameter, verify the certificate array | |||
| contains a certificate representing the trusted issuer of | contains a certificate representing the trusted issuer of | |||
| authority tokens for the eco-system. | Authority Tokens for the ecosystem. | |||
| * Verify the TNAuthList Authority Token signature using the public | 4. Verify the TNAuthList Authority Token signature using the public | |||
| key of the certificate referenced by the token's "x5u" or "x5c" | key of the certificate referenced by the token's "x5u" or "x5c" | |||
| parameter. | parameter. | |||
| * Verify that "atc" claim contains a "tktype" identifier with the | 5. Verify that "atc" claim contains a "tktype" identifier with the | |||
| value "TNAuthList". | value "TNAuthList". | |||
| * Verify that the "atc" claim "tkvalue" identifier contains the | 6. Verify that the "atc" claim "tkvalue" identifier contains the | |||
| equivalent base64url encoded TNAuthList certificate extension | equivalent base64url-encoded TNAuthList certificate extension | |||
| string value as the Identifier specified in the original | string value as the identifier specified in the original | |||
| challenge. | challenge. | |||
| * Verify that the remaining claims are valid (e.g., verify that | 7. Verify that the remaining claims are valid (e.g., verify that | |||
| token has not expired) | token has not expired). | |||
| * Verify that the "atc" claim "fingerprint" is valid and matches the | 8. Verify that the "atc" claim "fingerprint" is valid and matches | |||
| account key of the client making the request | the account key of the client making the request. | |||
| * Verify that the "atc" claim "ca" identifier boolean corresponds to | 9. Verify that the "atc" claim "ca" identifier boolean corresponds | |||
| the CA boolean in the Basic Constraints extension in the CSR for | to the CA boolean in the Basic Constraints extension in the | |||
| either CA certificate or end-entity certificate | Certificate Signing Request (CSR) for either CA certificate or | |||
| end-entity certificate. | ||||
| If all steps in the token validation process pass, then the ACME | If all steps in the token validation process pass, then the ACME | |||
| server MUST set the challenge object "status" to "valid". If any | server MUST set the challenge object "status" to "valid". If any | |||
| step of the validation process fails, the "status" in the challenge | step of the validation process fails, the "status" in the challenge | |||
| object MUST be set to "invalid". | object MUST be set to "invalid". | |||
| 7. Using ACME-issued Certificates with JSON Web Signature | 7. Using ACME-Issued Certificates with JSON Web Signature | |||
| JSON Web Signature (JWS, [RFC7515]) objects can include an "x5u" | JSON Web Signature (JWS) [RFC7515] objects can include an "x5u" | |||
| header parameter to refer to a certificate that is used to validate | header parameter to refer to a certificate that is used to validate | |||
| the JWS signature. For example, the STIR PASSporT framework | the JWS signature. For example, the STIR PASSporT framework | |||
| [RFC8225] uses "x5u" to indicate the STIR certificate used to | [RFC8225] uses "x5u" to indicate the STIR certificate used to | |||
| validate the PASSporT JWS object. The URLs used in "x5u" are | validate the PASSporT JWS object. The URLs used in "x5u" are | |||
| expected to provide the required certificate in response to a GET | expected to provide the required certificate in response to a GET | |||
| request, not a POST-as-GET as required for the "certificate" URL in | request, not a POST-as-GET, as required for the "certificate" URL in | |||
| the ACME order object. Thus the current mechanism generally requires | the ACME order object. Thus, the current mechanism generally | |||
| the ACME client to download the certificate and host it on a public | requires the ACME client to download the certificate and host it on a | |||
| URL to make it accessible to relying parties. This section defines | public URL to make it accessible to relying parties. This section | |||
| an optional mechanism for the Certificate Authority (CA) to host the | defines an optional mechanism for the certification authority (CA) to | |||
| certificate directly and provide a URL that the ACME client owner can | host the certificate directly and provide a URL that the ACME client | |||
| directly reference in the "x5u" of their signed PASSporTs. | owner can directly reference in the "x5u" of their signed PASSporTs. | |||
| As described in Section 7.4 of [RFC8555] when the certificate is | As described in Section 7.4 of [RFC8555], when the certificate is | |||
| ready for making a finalize request, the server will return a 200 | ready for making a "finalize" request, the server will return a 200 | |||
| (OK) with the updated order object. In this response, an ACME Server | (OK) with the updated order object. In this response, an ACME server | |||
| can add a newly defined field called "x5u" that can pass this URL to | can add a newly defined field called "x5u" that can pass this URL to | |||
| the ACME client for usage in generated PASSporTs as a publically | the ACME client for usage in generated PASSporTs as a publicly | |||
| available URL for PASSporT validation. | available URL for PASSporT validation. | |||
| x5u (optional, string): A URL that can be used to reference the | x5u (optional, string): a URL that can be used to reference the | |||
| certificate in the "x5u" parameter of a JWS object [RFC7515] | certificate in the "x5u" parameter of a JWS object [RFC7515] | |||
| The publishing of the certificates at the new "x5u" URL should follow | The publishing of the certificates at the new "x5u" URL should follow | |||
| the GET request requirement as mentioned above and should be | the GET request requirement as mentioned above and should be | |||
| consistent with the timely publication according to the durations of | consistent with the timely publication according to the durations of | |||
| the certificate lifecycle. | the certificate life cycle. | |||
| The following is an example of the use of "x5u" in the response when | The following is an example of the use of "x5u" in the response when | |||
| the certificate status is "valid". | the certificate status is "valid". | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/json | Content-Type: application/json | |||
| Replay-Nonce: CGf81JWBsq8QyIgPCi9Q9X | Replay-Nonce: CGf81JWBsq8QyIgPCi9Q9X | |||
| Link: <https://example.com/acme/directory>;rel="index" | Link: <https://example.com/acme/directory>;rel="index" | |||
| Location: https://example.com/acme/order/TOlocE8rfgo | Location: https://example.com/acme/order/TOlocE8rfgo | |||
| skipping to change at page 13, line 34 ¶ | skipping to change at line 565 ¶ | |||
| "finalize": "https://example.com/acme/order/TOlocE8rfgo/finalize", | "finalize": "https://example.com/acme/order/TOlocE8rfgo/finalize", | |||
| "certificate": "https://example.com/acme/cert/mAt3xBGaobw", | "certificate": "https://example.com/acme/cert/mAt3xBGaobw", | |||
| "x5u": "https://example.com/cert-repo/giJI53km23.pem" | "x5u": "https://example.com/cert-repo/giJI53km23.pem" | |||
| } | } | |||
| 8. Usage Considerations | 8. Usage Considerations | |||
| 8.1. Large number of Non-contiguous TNAuthList values | 8.1. Large Number of Noncontiguous TNAuthList Values | |||
| There are many scenarios and reasons to have various combinations of | There are many scenarios and reasons to have various combinations of | |||
| SPCs, TNs, and TN Ranges. [RFC8226] has provided a somewhat | SPCs, TNs, and TN ranges. [RFC8226] has provided a somewhat | |||
| unbounded set of combinations. It's possible that a complex non- | unbounded set of combinations. It's possible that a complex | |||
| contiguous set of telephone numbers are being managed by a CSP. Best | noncontiguous set of telephone numbers are being managed by a CSP. | |||
| practice may be simply to split a set of non-contiguous numbers under | Best practice may be simply to split a set of noncontiguous numbers | |||
| management into multiple STI certificates to represent the various | under management into multiple STI certificates to represent the | |||
| contiguous parts of the greater non-contiguous set of TNs, | various contiguous parts of the greater noncontiguous set of TNs, | |||
| particularly if length of the set of values in identifier object | particularly if the length of the set of values in an identifier | |||
| grows to be too large. | object grows to be too large. | |||
| 9. Security Considerations | 9. IANA Considerations | |||
| Per this document, IANA has added a new identifier object type to the | ||||
| "ACME Identifier Types" registry defined in Section 9.7.7 of | ||||
| [RFC8555]. | ||||
| +============+===========+ | ||||
| | Label | Reference | | ||||
| +============+===========+ | ||||
| | TNAuthList | RFC 9448 | | ||||
| +------------+-----------+ | ||||
| Table 1 | ||||
| 10. Security Considerations | ||||
| The token represented by this document has the credentials to | The token represented by this document has the credentials to | |||
| represent the scope of a telephone number, a block of telephone | represent the scope of a telephone number, a block of telephone | |||
| numbers, or an entire set of telephone numbers represented by an SPC. | numbers, or an entire set of telephone numbers represented by an SPC. | |||
| The creation, transport, and any storage of this token MUST follow | The creation, transport, and any storage of this token MUST follow | |||
| the strictest of security best practices beyond the recommendations | the strictest of security best practices beyond the recommendations | |||
| of the use of encrypted transport protocols in this document to | of the use of encrypted transport protocols in this document to | |||
| protect it from getting in the hands of bad actors with illegitimate | protect it from getting in the hands of bad actors with illegitimate | |||
| intent to impersonate telephone numbers. | intent to impersonate telephone numbers. | |||
| This document inherits the security properties of | This document inherits the security properties of [RFC9447]. | |||
| [I-D.ietf-acme-authority-token]. Implementations should follow the | Implementations should follow the best practices identified in | |||
| best practices identified in [RFC8725]. | [RFC8725]. | |||
| This document only specifies SHA256 for the fingerprint hash. | This document only specifies SHA256 for the fingerprint hash. | |||
| However, the syntax of the fingerprint object would permit other | However, the syntax of the fingerprint object would permit other | |||
| algorithms if, due to concerns about algorithmic agility, a more | algorithms if, due to concerns about algorithmic agility, a more | |||
| robust algorithm were required at a future time. Future | robust algorithm were required at a future time. Future | |||
| specifications can define new algorithms for the fingerprint object | specifications can define new algorithms for the fingerprint object | |||
| as needed. | as needed. | |||
| 10. IANA Considerations | 11. References | |||
| This document requests the addition of a new identifier object type | ||||
| to the "ACME Identifier Types" registry defined in Section 9.7.7 of | ||||
| [RFC8555]. | ||||
| +------------+-----------+ | ||||
| | Label | Reference | | ||||
| +------------+-----------+ | ||||
| | TNAuthList | RFCThis | | ||||
| +------------+-----------+ | ||||
| 11. Acknowledgements | ||||
| We would like to thank Richard Barnes and Russ Housley for valuable | ||||
| contributions to this document. | ||||
| 12. References | ||||
| 12.1. Normative References | ||||
| [I-D.ietf-acme-authority-token] | 11.1. Normative References | |||
| Peterson, J., Barnes, M., Hancock, D., and C. Wendt, "ACME | ||||
| Challenges Using an Authority Token", Work in Progress, | ||||
| Internet-Draft, draft-ietf-acme-authority-token-09, 24 | ||||
| October 2022, <https://www.ietf.org/archive/id/draft-ietf- | ||||
| acme-authority-token-09.txt>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
| Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | |||
| <https://www.rfc-editor.org/info/rfc4648>. | <https://www.rfc-editor.org/info/rfc4648>. | |||
| [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
| Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | ||||
| DOI 10.17487/RFC7231, June 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7231>. | ||||
| [RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | [RFC7515] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | |||
| Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May | Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May | |||
| 2015, <https://www.rfc-editor.org/info/rfc7515>. | 2015, <https://www.rfc-editor.org/info/rfc7515>. | |||
| [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | [RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token | |||
| (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7519>. | <https://www.rfc-editor.org/info/rfc7519>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| skipping to change at page 16, line 9 ¶ | skipping to change at line 657 ¶ | |||
| [RFC8725] Sheffer, Y., Hardt, D., and M. Jones, "JSON Web Token Best | [RFC8725] Sheffer, Y., Hardt, D., and M. Jones, "JSON Web Token Best | |||
| Current Practices", BCP 225, RFC 8725, | Current Practices", BCP 225, RFC 8725, | |||
| DOI 10.17487/RFC8725, February 2020, | DOI 10.17487/RFC8725, February 2020, | |||
| <https://www.rfc-editor.org/info/rfc8725>. | <https://www.rfc-editor.org/info/rfc8725>. | |||
| [RFC9060] Peterson, J., "Secure Telephone Identity Revisited (STIR) | [RFC9060] Peterson, J., "Secure Telephone Identity Revisited (STIR) | |||
| Certificate Delegation", RFC 9060, DOI 10.17487/RFC9060, | Certificate Delegation", RFC 9060, DOI 10.17487/RFC9060, | |||
| September 2021, <https://www.rfc-editor.org/info/rfc9060>. | September 2021, <https://www.rfc-editor.org/info/rfc9060>. | |||
| 12.2. Informative References | [RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | ||||
| DOI 10.17487/RFC9110, June 2022, | ||||
| <https://www.rfc-editor.org/info/rfc9110>. | ||||
| [RFC9447] Peterson, J., Barnes, M., Hancock, D., and C. Wendt, | ||||
| "Automated Certificate Management Environment (ACME) | ||||
| Challenges Using an Authority Token", RFC 9447, | ||||
| DOI 10.17487/RFC9447, August 2023, | ||||
| <https://www.rfc-editor.org/info/rfc9447>. | ||||
| 11.2. Informative References | ||||
| [ATIS-1000080] | [ATIS-1000080] | |||
| ATIS/SIP Forum NNI Task Group, "Signature-based Handling | ATIS, "Signature-based Handling of Asserted information | |||
| of Asserted information using toKENs (SHAKEN) Governance | using toKENs (SHAKEN): Governance Model and Certificate | |||
| Model and Certificate Management | Management", ATIS-1000080.v005, December 2022, | |||
| <https://access.atis.org/apps/group_public/ | <https://access.atis.org/apps/group_public/ | |||
| download.php/32237/ATIS-1000080.pdf>", July 2017. | download.php/69428/ATIS-1000080.v005.pdf>. | |||
| [RFC7340] Peterson, J., Schulzrinne, H., and H. Tschofenig, "Secure | [RFC7340] Peterson, J., Schulzrinne, H., and H. Tschofenig, "Secure | |||
| Telephone Identity Problem Statement and Requirements", | Telephone Identity Problem Statement and Requirements", | |||
| RFC 7340, DOI 10.17487/RFC7340, September 2014, | RFC 7340, DOI 10.17487/RFC7340, September 2014, | |||
| <https://www.rfc-editor.org/info/rfc7340>. | <https://www.rfc-editor.org/info/rfc7340>. | |||
| [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, | [RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, | |||
| "Authenticated Identity Management in the Session | "Authenticated Identity Management in the Session | |||
| Initiation Protocol (SIP)", RFC 8224, | Initiation Protocol (SIP)", RFC 8224, | |||
| DOI 10.17487/RFC8224, February 2018, | DOI 10.17487/RFC8224, February 2018, | |||
| <https://www.rfc-editor.org/info/rfc8224>. | <https://www.rfc-editor.org/info/rfc8224>. | |||
| [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion | [RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion | |||
| Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, | Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, | |||
| <https://www.rfc-editor.org/info/rfc8225>. | <https://www.rfc-editor.org/info/rfc8225>. | |||
| Acknowledgements | ||||
| We would like to thank Richard Barnes and Russ Housley for valuable | ||||
| contributions to this document. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Chris Wendt | Chris Wendt | |||
| Somos Inc. | Somos Inc. | |||
| United States of America | United States of America | |||
| Email: chris-ietf@chriswendt.net | Email: chris-ietf@chriswendt.net | |||
| David Hancock | David Hancock | |||
| Comcast | Somos Inc. | |||
| United States of America | United States of America | |||
| Email: davidhancock.ietf@gmail.com | Email: davidhancock.ietf@gmail.com | |||
| Mary Barnes | Mary Barnes | |||
| Neustar Inc. | Neustar Inc. | |||
| United States of America | United States of America | |||
| Email: mary.ietf.barnes@gmail.com | Email: mary.ietf.barnes@gmail.com | |||
| Jon Peterson | Jon Peterson | |||
| Neustar Inc. | Neustar Inc. | |||
| 1800 Sutter St Suite 570 | Suite 570 | |||
| Concord, CA 94520, | 1800 Sutter St | |||
| Concord, CA 94520 | ||||
| United States of America | United States of America | |||
| Email: jon.peterson@neustar.biz | Email: jon.peterson@neustar.biz | |||
| End of changes. 85 change blocks. | ||||
| 287 lines changed or deleted | 284 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||