RFC 9448

TNAuthList Profile of Automated Certificate Management Environment (ACME) Authority Token

πŸ“… published September 2023, from ietf

RFC 9448: TNAuthList Profile of ACME Authority Token πŸ’–

Okay bestie, let's get into this one. RFC 9448 is a Standards Track document from September 2023 (ISSN 2070-1721) πŸ“…. The authors are C. Wendt and D. Hancock from Somos Inc., and M. Barnes and J. Peterson from Neustar Inc. It's an IETF product, and the title block doesn't list anything it obsoletes or updates, so it's standing on its own πŸ‘‘.

Abstract ✨

Okay so this doc defines a profile of the Automated Certificate Management Environment (ACME) Authority Token πŸŽ€. The point is to let VoIP telephone providers get certificates automatically, but only when they're actually authorized to do it. It supports Secure Telephone Identity (STI) by using the TNAuthList that STI certificates carry πŸ“ž.

Status of This Memo πŸ“œ

This is an Internet Standards Track document, bestie πŸ’….

It's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG). If you want more on Internet Standards, check out Section 2 of RFC 7841 🧚.

Info about the current status of this document, any errata, and how to send feedback lives at https://www.rfc-editor.org/info/rfc9448 πŸ”—.

Copyright (c) 2023 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), as in effect on the date of publication. Please read these carefully, because they describe your rights and restrictions for this document πŸ™ˆ. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they're provided without warranty as described in the Revised BSD License βš–οΈ.

Table of Contents πŸ“

   1.  Introduction
   2.  Requirements Language
   3.  ACME New-Order Identifiers for TNAuthList
   4.  TNAuthList Identifier Authorization
   5.  TNAuthList Authority Token
     5.1.  "iss" Claim
     5.2.  "exp" Claim
     5.3.  "jti" Claim
     5.4.  "atc" Claim
     5.5.  Acquiring the Token from the Token Authority
     5.6.  Token Authority Responsibilities
     5.7.  Scope of the TNAuthList
   6.  Validating the TNAuthList Authority Token
   7.  Using ACME-Issued Certificates with JSON Web Signature
   8.  Usage Considerations
     8.1.  Large Number of Noncontiguous TNAuthList Values
   9.  IANA Considerations
   10. Security Considerations
   11. References
     11.1.  Normative References
     11.2.  Informative References
   Acknowledgements
   Authors' Addresses

1. Introduction πŸ¦‹

[RFC8555] describes how to automate certificate management on the Internet πŸ€–. It lets administrative entities prove they really control resources like domain names, and it automates generating and issuing certificates. [RFC9447] extends ACME with a general way to extend the authority and authorization of entities that control a resource, through a third-party Token Authority, beyond the certification authority (CA) 🌸.

This document is a profile that uses the Authority Token mechanism from [RFC9447] πŸ’…. It specifically tackles the Secure Telephone Identity Revisited (STIR) problem statement in [RFC7340]. That statement says we need Internet credentials that can attest to the authority of whoever originates a VoIP call, so impersonation can be detected. Impersonation is currently what fuels attacks like illegal robocalling, voicemail hacking, and swatting 😭. These credentials sign Personal Assertion Tokens (PASSporTs) [RFC8225], which can be carried in protocols like SIP [RFC8224]. Right now, the only defined credentials for this are the certificates specified in [RFC8226] using the TNAuthList πŸ”. This document defines how the TNAuthList Authority Token gets used in the ACME challenge to prove authoritative use of the TNAuthList contents. That covers a Service Provider Code (SPC), a telephone number, or a set of telephone numbers or telephone number blocks πŸ“ž.

This document also describes how a telephone authority can authorize the creation of CA-type certificates for delegation, as defined in [RFC9060] πŸ‘‘.

2. Requirements Language πŸ’œ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here ✨.

3. ACME New-Order Identifiers for TNAuthList πŸŽ€

Section 7 of [RFC8555] defines the procedure an ACME client uses to order a new certificate from a CA 🧾. The new-order request has an identifier field that says which identifier objects the order is for. This document defines a new identifier object type called TNAuthList. A TNAuthList identifier holds the identity information that goes into the TNAuthList of the new certificate. For a TNAuthList identifier, the new-order request includes a type set to the string "TNAuthList". The value of the TNAuthList identifier MUST be set to the details of the TNAuthList requested πŸ’–.

The string that represents the TNAuthList MUST be constructed using base64url encoding, as described in Section 5 of [RFC4648] and as defined in Section 2 of JSON Web Signature [RFC7515] πŸ¦„. The base64url encoding MUST NOT include any padding characters, and the TNAuthList ASN.1 object MUST be encoded using DER encoding rules πŸ”₯.

Here's an example of an ACME order object "identifiers" field holding a TNAuthList certificate πŸ“:

"identifiers": [{"type":"TNAuthList","value":"F83n2a...avn27DN3"}]

The "value" object string stands for the arbitrary-length base64url-encoded string 🧚.

Here's what a full new-order request looks like πŸ‘€:

POST /acme/new-order HTTP/1.1
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "5XJ1L3lEkMG7tR6pA00clA",
    "url": "https://example.com/acme/new-order"
  }),
  "payload": base64url({
    "identifiers": [{"type":"TNAuthList","value":"F83n...n27DN3"}],
    "notBefore": "2021-01-01T00:00:00Z",
    "notAfter": "2021-01-08T00:00:00Z"
  }),
  "signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g"
}

When the ACME server gets a valid new-order request, it creates an authorization object ([RFC8555], Section 7.1.4). That object contains the challenge the ACME client must satisfy to prove authority over the identifiers in the new order, which in this case is the TNAuthList identifier πŸ”‘. The CA adds the authorization object URL to the "authorizations" field of the order object, then sends the order object back to the ACME client in the body of a 201 (Created) response βœ….

HTTP/1.1 201 Created
Content-Type: application/json
Replay-Nonce: MYAuvOpaoIiywTezizk5vw
Location: https://example.com/acme/order/1234

{
  "status": "pending",
  "expires": "2022-01-08T00:00:00Z",

  "notBefore": "2022-01-01T00:00:00Z",
  "notAfter": "2022-01-08T00:00:00Z",
  "identifiers":[{"type":"TNAuthList",
                 "value":"F83n2a...avn27DN3"}],

  "authorizations": [
   "https://example.com/acme/authz/1234"
  ],
  "finalize": "https://example.com/acme/order/1234/finalize"
}

4. TNAuthList Identifier Authorization πŸ’…

Once the new-order response arrives, the ACME client queries the referenced authorization object to get the challenges for the identifier in the new-order request πŸ”. Here's an example request and response:

POST /acme/authz/1234 HTTP/1.1
    Host: example.com
    Content-Type: application/jose+json

    {
      "protected": base64url({
        "alg": "ES256",
        "kid": " https://example.com/acme/acct/evOfKhNU60wg",
        "nonce": "uQpSjlRb4vQVCjVYAyyUWg",
        "url": "https://example.com/acme/authz/1234"
      }),
      "payload": "",
      "signature": "nuSDISbWG8mMgE7H...QyVUL68yzf3Zawps"
    }

HTTP/1.1 200 OK
Content-Type: application/json
Link: <https://example.com/acme/some-directory>;rel="index"

{
  "status": "pending",
  "expires": "2022-01-08T00:00:00Z",

  "identifier": {
    "type":"TNAuthList",
    "value":"F83n2a...avn27DN3"
  },

  "challenges": [
    {
      "type": "tkauth-01",
      "tkauth-type": "atc",
      "token-authority": "https://authority.example.org",
      "url": "https://example.com/acme/chall/prV_B7yEyA4",
      "token": "IlirfxKKXAsHtmzK29Pj8A"
    }
  ]
}

When a CA processes a certificate order containing an identifier of type "TNAuthList", it uses the Authority Token challenge type "tkauth-01" with a "tkauth-type" of "atc" from [RFC9447]. That's how it verifies that the requesting ACME client has authenticated and has authorized control over the requested resources represented by the "TNAuthList" value 🫢.

The challenge "token-authority" parameter only gets used when the VoIP telephone network needs the CA to identify the Token Authority πŸ€”. Right now that isn't the case for the Signature-based Handling of Asserted information using toKENs (SHAKEN) [ATIS-1000080] certificate framework governance, but other frameworks might use it. If a "token-authority" parameter is present, the ACME client MAY use the "token-authority" value to identify the URL for the Token Authority that will provide the TNAuthList Authority Token response to the challenge. If the "token-authority" parameter is not present, the ACME client MUST identify the Token Authority based on locally configured information or local policies 🌈.

The ACME client responds to the challenge by posting the TNAuthList Authority Token to the challenge URL in the returned ACME authorization object. Here's an example:

POST /acme/chall/prV_B7yEyA4 HTTP/1.1
Host: boulder.example.com
Content-Type: application/jose+json

{
  "protected": base64url({
  "alg": "ES256",
  "kid": "https://example.com/acme/acct/evOfKhNU60wg",
  "nonce": "Q_s3MWoqT05TrdkM2MTDcw",
  "url": "https://boulder.example.com/acme/authz/asdf/0"
  }),
  "payload": base64url({
  "tkauth": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"
  }),
  "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ"
}

The "tkauth" field is a new field in the challenge object, specific to the tkauth-01 challenge type. It should contain the TNAuthList Authority Token defined in the next section πŸŽ€.

5. TNAuthList Authority Token πŸ”

The TNAuthList Authority Token is a profile instance of the ACME Authority Token defined in [RFC9447] πŸ’–.

The TNAuthList Authority Token protected header MUST comply with "Request Authentication" (Section 6.2 of [RFC8555]) ✨.

The TNAuthList Authority Token Payload MUST include the mandatory claims "exp", "jti", and "atc", and it MAY include the optional claims defined for the Authority Token in the next subsections πŸ¦‹.

5.1. "iss" Claim πŸŽ€

okay so the "iss" claim is optional 🫢 it's defined in [RFC7519], Section 4.1.1. it can be a URL that tells everyone which Token Authority issued the TNAuthList Authority Token. that's extra helpful on top of the "x5u" or other header claims that point to the certificate or certificate chain of the Token Authority you use to validate the token ✨

5.2. "exp" Claim πŸ’–

the "exp" claim is defined in [RFC7519], Section 4.1.4, and it MUST be included πŸ’… it holds the DateTime value for when the TNAuthList Authority Token expires. that's the ending date and time, no cap.

5.3. "jti" Claim πŸ¦‹

the "jti" claim is defined in [RFC7519], Section 4.1.7, and it MUST be included πŸ”₯ it carries a unique identifier for this specific TNAuthList Authority Token transaction, so every token gets its own ID. iconic.

5.4. "atc" Claim πŸ‘‘

the "atc" claim MUST be included 😭 it's defined in [RFC9447]. it's a JSON object with these elements:

  • a "tktype" key with the string value "TNAuthList". this is how you say "this is the TNAuthList profile of the Authority Token [RFC9447] defined by this document." "tktype" is a required key and MUST be included πŸ’œ
  • a "tkvalue" key with a string value equal to the base64url encoding of the TNAuthList certificate extension ASN.1 object, using DER encoding rules. "tkvalue" is a required key and MUST be included 🌸
  • a "ca" key with a boolean value. true means the requested certificate is allowed to be a CA cert for delegation uses. false means it's not meant to be a CA cert and is only an end-entity certificate. "ca" is optional, and if it's not included, the "ca" value is considered false by default 🧚
  • a "fingerprint" key constructed as defined in [RFC8555], Section 8.1, matching the computation of the "Thumbprint" step using the ACME account key credentials. "fingerprint" is a required key and MUST be included ✨

here's an example of the TNAuthList Authority Token, bestie πŸ“

{
  "protected": base64url({
    "typ":"JWT",
    "alg":"ES256",
    "x5u":"https://authority.example.org/cert"
  }),
  "payload": base64url({
    "iss":"https://authority.example.org",
    "exp":1640995200,
    "jti":"id6098364921",
    "atc":{"tktype":"TNAuthList",
      "tkvalue":"F83n2a...avn27DN3",
      "ca":false,
      "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"}
  }),
  "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ"
}

5.5. Acquiring the Token from the Token Authority 🌈

okay so, following [RFC9447], Section 5, the Authority Token should be acquired with a RESTful HTTP POST transaction, like this πŸ’Œ

POST /at/account/:id/token HTTP/1.1
Host: authority.example.org
Content-Type: application/json

the request passes the account identifier as a string in the request parameter "id" πŸŽ€ that string is managed as an identifier specific to the Token Authority's relationship with a Communications Service Provider (CSP). there's also assumed to be a matching authentication procedure that can be verified for the transaction to succeed. for example, that could be an HTTP authorization header with valid credentials, as defined in [RFC9110], Section 11.6.2 πŸ”

the body of the POST request MUST contain a JSON object with key value pairs for the values you're asking to have in the claims of the issued token. as an example, the body SHOULD contain a JSON object like this 🫧

{
  "tktype":"TNAuthList",
  "tkvalue":"F83n2a...avn27DN3",
  "ca":false,
  "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"
}

if it works, the response comes back as a 200 (OK) with a JSON body that has, at minimum, the TNAuthList Authority Token as a JSON object under a "token" key. the value is the base64url-encoded string for the atc token πŸ₯Ή JSON is super extensible, so you can pass along other info that's relevant to your app too ✨

example of a successful response:

HTTP/1.1 200 OK
Content-Type: application/json

{"token": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"}

if the request doesn't work, the response should say what went wrong πŸ’€ specifically, if the authorization credentials are invalid or the account identifier doesn't exist, the response code MUST be 403 (Forbidden). every other 4xx and 5xx response MUST follow the standard HTTP error condition conventions [RFC9110] πŸ™ˆ

5.6. Token Authority Responsibilities πŸ’…

when the Token Authority creates the TNAuthList Authority Token, it MUST validate that the information in the ASN.1 TNAuthList accurately represents the service provider code (SPC) or telephone number (TN) resources the requesting party is authorized to represent. that's based on their pre-established, verified, and secure relationship with the Token Authority πŸ”’

also, the fingerprint in the token request is NOT meant to be verified by the Token Authority. it's meant to be signed as part of the token. that way, the party requesting the token can, as part of the challenge response, let the ACME server confirm the token was requested and used by the same party that controls the ACME client. main character energy for security πŸ¦‹

5.7. Scope of the TNAuthList 🌸

this spec is all about the TNAuthList defined in [RFC8226], which covers SPCs, telephone number ranges, and individual telephone numbers. so the client may also request an Authority Token covering just a subset of its own authority, put in the "tkvalue" element of the "atc" JSON object πŸ’œ

usually a CSP's scope of authority is tied to a particular SPC (for example, in North America, an operating company number (OCN) or service provider identifier (SPID)). based on number allocations, that provider is also generally linked to a particular set of telephone number ranges and/or telephone numbers. the TNAuthList can be built to define a limited scope of TelephoneNumberRanges or TelephoneNumbers ([RFC8226], Section 9), either tied to an SPC or to the telephone number ranges or numbers the client has authority over 🧚

as recommended in the Security Considerations section of [RFC9447], an Authority Token can either have a scope that attests to all the resources a client is eligible to get certificates for, or a more limited scope that only captures the resources a client will get a certificate for from a particular certification authority. any certification authority that sees an Authority Token can learn about the resources a client can claim. if that creates a privacy risk, Authority Token scopes should be limited to only the resources the requested ACME certificate will attest 🫣


6. Validating the TNAuthList Authority Token πŸ”

upon receiving a response to the challenge, the ACME server MUST perform the following steps to figure out whether the response is valid ✨

  1. verify that the value of the "atc" claim is a well-formed JSON object containing the mandatory key values.
  2. if there is an "x5u" parameter, verify that the "x5u" parameter is an HTTPS URL referencing a certificate that represents the trusted issuer of Authority Tokens for the ecosystem.
  3. if there is an "x5c" parameter, verify that the certificate array contains a certificate representing the trusted issuer of Authority Tokens for the ecosystem.
  4. verify the TNAuthList Authority Token signature using the public key of the certificate referenced by the token's "x5u" or "x5c" parameter.
  5. verify that the "atc" claim contains a "tktype" identifier with the value "TNAuthList".
  6. verify that the "atc" claim "tkvalue" identifier contains the equivalent base64url-encoded TNAuthList certificate extension string value as the identifier specified in the original challenge.
  7. verify that the remaining claims are valid (for example, verify that the token has not expired).
  8. verify that the "atc" claim "fingerprint" is valid and matches the account key of the client making the request.
  9. verify that the "atc" claim "ca" identifier boolean corresponds to the CA boolean in the Basic Constraints extension in the Certificate Signing Request (CSR), for either a CA certificate or an end-entity certificate.

if every step passes, the ACME server MUST set the challenge object "status" to "valid" πŸŽ‰ if any step fails, the "status" in the challenge object MUST be set to "invalid" πŸ’€


7. Using ACME-Issued Certificates with JSON Web Signature 🌈

okay so JSON Web Signature (JWS) [RFC7515] objects can include an "x5u" header parameter that points to a certificate used to validate the JWS signature. for example, the STIR PASSporT framework [RFC8225] uses "x5u" to point to the STIR certificate used to validate the PASSporT JWS object πŸ“œ

the URLs used in "x5u" are expected to return the required certificate in response to a GET request. they are NOT a POST-as-GET, which is what the "certificate" URL in the ACME order object requires. so right now, the ACME client usually has to download the certificate and host it on a public URL so relying parties can reach it 😀 this section defines an optional mechanism for the certification authority (CA) to host the certificate directly and provide a URL that the ACME client owner can reference in the "x5u" of their signed PASSporTs. galaxy brain move 🧠

as described in Section 7.4 of [RFC8555], when the certificate is ready for a "finalize" request, the server returns a 200 (OK) with the updated order object. in that response, an ACME server can add a newly defined field called "x5u" that passes this URL to the ACME client. the client can then use it in generated PASSporTs as a publicly available URL for PASSporT validation πŸ¦‹

the field is defined like this:

  • x5u (optional, string): a URL that can be used to reference the certificate in the "x5u" parameter of a JWS object [RFC7515]

publishing the certificates at the new "x5u" URL should follow the GET request requirement mentioned above, and should be consistent with timely publication according to the durations of the certificate life cycle ⏰

here's an example of "x5u" in the response when the certificate status is "valid" πŸ’–

HTTP/1.1 200 OK
Content-Type: application/json
Replay-Nonce: CGf81JWBsq8QyIgPCi9Q9X
Link: <https://example.com/acme/directory>;rel="index"
Location: https://example.com/acme/order/TOlocE8rfgo

{
  "status": "valid",
  "expires": "2016-01-20T14:09:07.99Z",

  "notBefore": "2016-01-01T00:00:00Z",
  "notAfter": "2016-01-08T00:00:00Z",

  "identifiers": [
    "type":"TNAuthList",
    "value":"F83n2a...avn27DN3"
  ],

  "authorizations": ["https://sti-ca.com/acme/authz/1234"],

  "finalize": "https://example.com/acme/order/TOlocE8rfgo/finalize",

  "certificate": "https://example.com/acme/cert/mAt3xBGaobw",

  "x5u": "https://example.com/cert-repo/giJI53km23.pem"
}

8. Usage Considerations ✨

8.1. Large Number of Noncontiguous TNAuthList Values ✨

okay so, there are SO many ways to mix up SPCs, TNs, and TN ranges 🌸 [RFC8226] basically gave us a pretty much endless buffet of combos. πŸ’… It's totally possible a CSP is managing a messy, noncontiguous pile of telephone numbers. The lowkey best practice is to split that pile into multiple STI certificates, one for each contiguous chunk. 🧚 This is especially useful if the list of values in an identifier object gets too big, bestie. Keep it organized! πŸŽ€

9. IANA Considerations πŸ¦‹

per this document, IANA added a brand new identifier object type to the "ACME Identifier Types" registry. That registry is defined in Section 9.7.7 of [RFC8555]. ✨ Here's the new entry:

                        +============+===========+
                        | Label      | Reference |
                        +============+===========+
                        | TNAuthList | RFC 9448  |
                        +------------+-----------+

Table 1

10. Security Considerations πŸ”₯

okay this section is SERIOUS, bestie 😭 The token this document represents holds the credentials for a single telephone number, a block of numbers, or an entire set of numbers covered by an SPC. That's a LOT of power. πŸ‘‘ The creation, transport, and any storage of this token MUST follow the strictest of security best practices, on top of the encrypted transport recommendations already in this document. The whole point is to keep it out of the hands of bad actors who want to impersonate telephone numbers. πŸ’€

This document inherits the security properties of [RFC9447]. Implementations should follow the best practices identified in [RFC8725]. 🫢

This document only specifies SHA256 for the fingerprint hash. Still, the syntax of the fingerprint object would allow other algorithms, just in case concerns about algorithmic agility ever meant a more robust algorithm was needed in the future. 🌈 Future specifications can define new algorithms for the fingerprint object as needed. Future-proofing is iconic. πŸ“

11. References

11.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, https://www.rfc-editor.org/info/rfc2119.

[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, https://www.rfc-editor.org/info/rfc4648.

[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.

[RFC7519] Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, https://www.rfc-editor.org/info/rfc7519.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/info/rfc8174.

[RFC8226] Peterson, J. and S. Turner, "Secure Telephone Identity Credentials: Certificates", RFC 8226, DOI 10.17487/RFC8226, February 2018, https://www.rfc-editor.org/info/rfc8226.

[RFC8555] Barnes, R., Hoffman-Andrews, J., McCarney, D., and J. Kasten, "Automatic Certificate Management Environment (ACME)", RFC 8555, DOI 10.17487/RFC8555, March 2019, https://www.rfc-editor.org/info/rfc8555.

[RFC8725] Sheffer, Y., Hardt, D., and M. Jones, "JSON Web Token Best Current Practices", BCP 225, RFC 8725, DOI 10.17487/RFC8725, February 2020, https://www.rfc-editor.org/info/rfc8725.

[RFC9060] Peterson, J., "Secure Telephone Identity Revisited (STIR) Certificate Delegation", RFC 9060, DOI 10.17487/RFC9060, September 2021, https://www.rfc-editor.org/info/rfc9060.

[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, September 2023, https://www.rfc-editor.org/info/rfc9447.

11.2. Informative References

[ATIS-1000080] ATIS, "Signature-based Handling of Asserted information using toKENs (SHAKEN): Governance Model and Certificate Management", ATIS-1000080.v005, December 2022, https://access.atis.org/apps/group_public/download.php/69428/ATIS-1000080.v005.pdf.

[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.

[RFC8224] Peterson, J., Jennings, C., Rescorla, E., and C. Wendt, "Authenticated Identity Management in the Session Initiation Protocol (SIP)", RFC 8224, DOI 10.17487/RFC8224, February 2018, https://www.rfc-editor.org/info/rfc8224.

[RFC8225] Wendt, C. and J. Peterson, "PASSporT: Personal Assertion Token", RFC 8225, DOI 10.17487/RFC8225, February 2018, https://www.rfc-editor.org/info/rfc8225.

Acknowledgements πŸ™ˆ

we want to give a huge thank you to Richard Barnes and Russ Housley for their valuable contributions to this document. πŸ«ΆπŸ’œ

Authors' Addresses πŸ¦‹

Chris Wendt Somos Inc. United States of America Email: chris-ietf@chriswendt.net

David Hancock Somos Inc. United States of America Email: davidhancock.ietf@gmail.com

Mary Barnes Neustar Inc. United States of America Email: mary.ietf.barnes@gmail.com

Jon Peterson Neustar Inc. Suite 570 1800 Sutter St Concord, CA 94520 United States of America Email: jon.peterson@neustar.biz

πŸ“¦ where this page comes from