RFC 8630
Resource Public Key Infrastructure (RPKI) Trust Anchor Locator
RFC 8630: Resource Public Key Infrastructure (RPKI) Trust Anchor Locator β¨
Okay bestie, the title block is giving a lot of info, so here it is. This is RFC 8630 π¦, published by the Internet Engineering Task Force (IETF) in August 2019. It's a Standards Track document (the IETF's real, official standards lane) and its ISSN is 2070-1721. The authors are G. Huston (APNIC), S. Weiler (W3C/MIT), G. Michaelson (APNIC), S. Kent (Unaffiliated), and T. Bruijnzeels (NLnet Labs). It obsoletes RFC 7730 and has no Updates entry, so that's the whole family tree π³.
Abstract
Okay, so this doc defines a Trust Anchor Locator (TAL) for the Resource Public Key Infrastructure (RPKI) πβ¨. The TAL lets Relying Parties in the RPKI download the current Trust Anchor (TA) Certification Authority (CA) certificate from one or more locations, then check that the key on that self-signed certificate matches the key on the TAL. The main vibe: Relying Parties can be set up with TA keys, but the TAs are still allowed to change the content of their CA certificate π . Specifically, a TA can change the set of IP Address Delegations and/or Autonomous System Identifier Delegations in the extension(s) (RFC 3779) of its certificate. Iconic behaviour, honestly.
This document also obsoletes the earlier TAL definition from RFC 7730. The upgrade is that it adds support for Uniform Resource Identifiers (URIs) (RFC 3986) that use HTTP over TLS (HTTPS) (RFC 7230) as the scheme πΈ.
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.
Info about the current status of this document, any errata, and how to send feedback on it can be found at https://www.rfc-editor.org/info/rfc8630 π.
Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved π.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, bestie, because they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License π.
Table of Contents
1. Introduction ....................................................2
1.1. Terminology ................................................3
1.2. Changes from RFC 7730 ......................................3
2. Trust Anchor Locator ............................................3
2.1. Trust Anchor Locator Motivation ............................3
2.2. Trust Anchor Locator File Format ...........................4
2.3. TAL and TA Certificate Considerations ......................4
2.4. Example ....................................................6
3. Relying Party Use ...............................................6
4. URI Scheme Considerations .......................................7
5. Security Considerations .........................................8
6. IANA Considerations .............................................8
7. References ......................................................8
7.1. Normative References .......................................8
7.2. Informative References ....................................10
Acknowledgements ..................................................10
Authors' Addresses ................................................11
1. Introduction β¨
So this doc defines a Trust Anchor Locator (TAL) for the RPKI [RFC6480] π. The format can be used to hand out Trust Anchor (TA) material using a mix of out-of-band and online methods. Procedures that Relying Parties (RPs) use to verify RPKI signed objects SHOULD support this format, because it helps creators of TA material and RPs actually interoperate π«Ά. This document obsoletes [RFC7730] by adding support for Uniform Resource Identifiers (URIs) [RFC3986] that use HTTP over TLS (HTTPS) [RFC7230] as the scheme.
1.1. 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 π.
1.2. Changes from RFC 7730
The TAL format in this document is different from the one in [RFC7730] in these ways π :
- it allows for the use of the HTTPS scheme in URIs [RFC7230], and
- it allows for the inclusion of an optional comment section.
Heads up though: current RPs may not support this new format yet π. So it is RECOMMENDED that a TA operator keeps maintaining a TAL file as defined in [RFC7730] for a while too, until they're satisfied that their RP tooling has been updated.
2. Trust Anchor Locator π
2.1. Trust Anchor Locator Motivation
This document doesn't propose a new format for TA material, lowkey on purpose π. A TA in the RPKI is represented by a self-signed X.509 Certification Authority (CA) certificate, which is a format commonly used in PKIs and widely supported by RP software. What this document does specify is a format for the data used to retrieve and verify the authenticity of a TA in a very simple way. That data is called the TAL.
The whole motivation for the TAL is to let selected data in the TA change without having to redistribute the TA itself π¦.
In the RPKI, certificates can contain one or more extensions [RFC3779] that hold a set of IP Address Delegations and/or Autonomous System Identifier Delegations. This document calls these delegations the Internet Number Resources (INRs) in an RPKI certificate πΈ.
The set of INRs for an entity acting as a TA will probably change over time. So if you used the usual PKI approach of distributing a TA to RPs securely, that whole procedure would need repeating every time the INR set for that TA changed, which is a lot π. By distributing the TAL securely instead of the TA, that problem goes away. The TAL stays constant as long as the TA's public key and its location don't change β¨.
The TAL is analogous to the TrustAnchorInfo data structure specified in [RFC5914], which is on the Standards Track. That spec could be used to represent the TAL if someone defined an rsync or HTTPS URI extension for that data structure. However, the TAL format was adopted by RPKI implementors before the PKIX TA work, and the RPKI implementor community chose to keep using the TAL format rather than define the extension it would need. The community also likes the simplicity of the ASCII encoding of the TAL, compared with the binary (ASN.1) encoding used for TrustAnchorInfo π.
2.2. Trust Anchor Locator File Format
In this document, a TA URI is a URI that can be used to retrieve a current TA certificate π§. This URI MUST be either an rsync URI [RFC5781] or an HTTPS URI [RFC7230].
The TAL is an ordered sequence of these four parts π:
- an optional comment section made of one or more lines that each start with the
"#"character, followed by human-readable informational UTF-8 text that follows the restrictions defined in Section 2 of [RFC5198], and ending with a line break, - a URI section made of one or more ordered lines, where each line contains a TA URI and ends with a line break,
- a line break, and
- a subjectPublicKeyInfo [RFC5280] in DER format [X.509], encoded in base64 (see Section 4 of [RFC4648]). To avoid long lines, line breaks MAY be inserted into the base64-encoded string.
Note that line breaks in this file can be either "<CRLF>" or "<LF>" π.
2.3. TAL and TA Certificate Considerations
Each TA URI in the TAL MUST reference a single object π―. It MUST NOT reference a directory or any other kind of collection of objects. The referenced object MUST be a self-signed CA certificate that conforms to the RPKI certificate profile [RFC6487]. This certificate is the TA in certification path discovery [RFC4158] and validation [RFC5280] [RFC3779].
The validity interval of this TA is chosen so that (1) the "notBefore" time comes before the moment this certificate is published, and (2) the "notAfter" time is after the planned time of reissuance of this certificate β°.
The INR extension(s) of this TA MUST contain a non-empty set of number resources. It MUST NOT use the "inherit" form of the INR extension(s). The INR set in this certificate is the set of number resources the issuing entity is offering itself up for as a putative TA in the RPKI [RFC6480] πΌ.
The public key used to verify the TA MUST be the same as the subjectPublicKeyInfo in the CA certificate and in the TAL π.
The TA MUST contain a stable key that does not change when the certificate is reissued because of changes in the INR extension(s), or when the certificate is renewed before it expires π.
Because the public key in the TAL and the TA MUST be stable, this pushes the CA to operate in an offline mode. In that case, a subordinate CA certificate containing the same INRs (or, in theory, any subset of INRs) can be issued for online operations. This lets the entity that issues the TA keep the matching private key offline while issuing all the relevant child certificates under the immediate subordinate CA π. It also means the Certificate Revocation List (CRL) that entity issues can revoke the subordinate CA certificate if the online operational key pair, which is potentially more vulnerable, is suspected of being compromised π¨.
The TA MUST be published at a stable URI. When the TA is reissued for any reason, the replacement CA certificate MUST be accessible using the same URI π¦.
Because the TA is a self-signed certificate, there is no corresponding CRL that can revoke it, and there's no manifest [RFC6486] listing this certificate either π.
If an entity wants to withdraw a self-signed CA certificate as a putative TA, for any reason (including key rollover), the entity MUST remove the object from the location referenced in the TAL π§Ή.
When the TAL contains two or more TA URIs, the same self-signed CA certificate MUST be found at each referenced location. To boost operational resilience, it is RECOMMENDED that (1) the domain name parts of each of these URIs resolve to distinct IP addresses used by a diverse set of repository publication points, and (2) these IP addresses be included in distinct Route Origin Authorization (ROA) objects signed by different CAs πΈ.
Part 2 picks up with Section 2.4 (Example) and carries on from there β¨π
2.4. Example β¨
okay so here's a totally real-looking TAL π (it's for docs only, bestie, don't ship it π):
# This TAL is intended for documentation purposes only.
# Do not attempt to use this in a production setting.
rsync://rpki.example.org/rpki/hedgehog/root.cer
https://rpki.example.org/rpki/hedgehog/root.cer
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAovWQL2lh6knDx
GUG5hbtCXvvh4AOzjhDkSHlj22gn/1oiM9IeDATIwP44vhQ6L/xvuk7W6
Kfa5ygmqQ+xOZOwTWPcrUbqaQyPNxokuivzyvqVZVDecOEqs78q58mSp9
nbtxmLRW7B67SJCBSzfa5XpVyXYEgYAjkk3fpmefU+AcxtxvvHB5OVPIa
BfPcs80ICMgHQX+fphvute9XLxjfJKJWkhZqZ0v7pZm2uhkcPx1PMGcrG
ee0WSDC3fr3erLueagpiLsFjwwpX6F+Ms8vqz45H+DKmYKvPSstZjCCq9
aJ0qANT9OtnfSDOS+aLRPjZryCNyvvBHxZXqj5YCGKtwIDAQAB
3. Relying Party Use π¦
okay so, when a Relying Party (RP) wants to use the TAL to grab and check a (putative) TA, it SHOULD run through these steps:
- Retrieve the object referenced by (one of) the TA URI(s) contained in the TAL.
- Confirm that the retrieved object is a current, self-signed RPKI CA certificate that conforms to the profile as specified in [RFC6487].
- Confirm that the public key in the TAL matches the public key in the retrieved object.
- Perform other checks, as deemed appropriate (locally), to make sure the RP is willing to accept the entity publishing this self-signed CA certificate as a TA. These tests apply to the validity of attestations made in the context of the RPKI relating to all resources described in the INR extension(s) of this certificate.
An RP SHOULD perform these functions for each instance of a TAL that it is holding for this purpose every time it does a resynchronization across the local repository cache. In any case, an RP also SHOULD perform these functions before the locally cached copy of the retrieved TA referenced by the TAL expires. π
If a TAL has multiple TA URIs, an RP MAY use a locally defined preference rule to pick which URI to use for retrieving the self-signed RPKI CA certificate that will be used as a TA. Some examples are:
- Using the order provided in the TAL
- Selecting the TA URI randomly from the available list
- Creating a prioritized list of URIs based on RP-specific parameters, such as connection establishment delay
If the connection to the preferred URI fails, or the retrieved CA certificate public key does not match the TAL public key, the RP SHOULD retrieve the CA certificate from the next URI, according to the local preference ranking of URIs. Main character fallback energy π«Ά
4. URI Scheme Considerations π
okay real talk, the RSYNC protocol provides neither transport security nor any way for the RP to check that it's connected to the proper host π¬. So it is RECOMMENDED that HTTPS be used as the preferred scheme π.
Note that, although a Man in the Middle (MITM) cannot produce a CA certificate that would be considered valid according to the process described in Section 3, this type of attack can stop the RP from finding out about an updated CA certificate. Not ideal, not me π.
RPs MUST do TLS certificate and host name validation when they fetch a CA certificate using an HTTPS URI on a TAL. RPs SHOULD log any TLS certificate or host name validation issues they find, so an operator can investigate the cause π΅οΈββοΈ.
It is RECOMMENDED that RPs and Repository Servers follow the Best Current Practices outlined in [RFC7525] on the use of HTTPS [RFC7230]. RPs SHOULD do TLS certificate and host name validation using subjectAltName dNSName identities as described in [RFC6125]. The rules and guidelines defined in [RFC6125] apply here, with these extra considerations:
- RPs and Repository Servers SHOULD support the DNS-ID identifier type. The DNS-ID identifier type SHOULD be present in Repository Server certificates.
- DNS names in Repository Server certificates SHOULD NOT contain the wildcard character "*".
- This protocol does not require the use of SRV-IDs.
- This protocol does not require the use of URI-IDs.
5. Security Considerations π
Okay bestie, this part is serious, so listen up π«’. Compromise of a TA private key lets unauthorized parties pretend to be a TA, and the consequences can be severe. Relying on an inappropriate or incorrect TA has similarly potentially severe consequences. Yikes π.
This TAL does not directly provide a list of the resources covered by the referenced self-signed CA certificate. Instead, the RP is pointed to the TA itself and the INR extension(s) within this certificate. This gives necessary operational flexibility, but it also lets the certificate issuer claim to be authoritative for any resource. So RPs should either (1) have great confidence in the issuers of the certificates they're configuring as TAs, or (2) issue their own self-signed certificate as a TA and, in doing so, impose constraints on the subordinate certificates. Choose wisely, queen π.
6. IANA Considerations π§
This document has no IANA actions. Nothing to see here, just vibes πΈ.
7. References π
7.1. Normative References
Here are the normative refs, the ones you absolutely need to read to get the full picture π€:
[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>.
[RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP
Addresses and AS Identifiers", RFC 3779,
DOI 10.17487/RFC3779, June 2004,
<https://www.rfc-editor.org/info/rfc3779>.
[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>.
[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>.
[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network
Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008,
<https://www.rfc-editor.org/info/rfc5198>.
[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>.
[RFC5781] Weiler, S., Ward, D., and R. Housley, "The rsync URI
Scheme", RFC 5781, DOI 10.17487/RFC5781, February 2010,
<https://www.rfc-editor.org/info/rfc5781>.
[RFC6125] Saint-Andre, P. and J. Hodges, "Representation and
Verification of Domain-Based Application Service Identity
within Internet Public Key Infrastructure Using X.509
(PKIX) Certificates in the Context of Transport Layer
Security (TLS)", RFC 6125, DOI 10.17487/RFC6125,
March 2011, <https://www.rfc-editor.org/info/rfc6125>.
[RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support
Secure Internet Routing", RFC 6480, DOI 10.17487/RFC6480,
February 2012, <https://www.rfc-editor.org/info/rfc6480>.
[RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for
X.509 PKIX Resource Certificates", RFC 6487,
DOI 10.17487/RFC6487, February 2012,
<https://www.rfc-editor.org/info/rfc6487>.
[RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer
Protocol (HTTP/1.1): Message Syntax and Routing",
RFC 7230, DOI 10.17487/RFC7230, June 2014,
<https://www.rfc-editor.org/info/rfc7230>.
[RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre,
"Recommendations for Secure Use of Transport Layer
Security (TLS) and Datagram Transport Layer Security
(DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525,
May 2015, <https://www.rfc-editor.org/info/rfc7525>.
[RFC7730] Huston, G., Weiler, S., Michaelson, G., and S. Kent,
"Resource Public Key Infrastructure (RPKI) Trust Anchor
Locator", RFC 7730, DOI 10.17487/RFC7730, January 2016,
<https://www.rfc-editor.org/info/rfc7730>.
[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>.
[X.509] ITU-T, "Information technology - Open Systems
Interconnection - The Directory: Public-key and attribute
certificate frameworks", ITU-T Recommendation X.509,
October 2016, <https://www.itu.int/rec/T-REC-X.509>.
7.2. Informative References
And these are the informative refs, nice extra reading if you're feeling nerdy π€π«Ά:
[RFC4158] Cooper, M., Dzambasow, Y., Hesse, P., Joseph, S., and R.
Nicholas, "Internet X.509 Public Key Infrastructure:
Certification Path Building", RFC 4158,
DOI 10.17487/RFC4158, September 2005,
<https://www.rfc-editor.org/info/rfc4158>.
[RFC5914] Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor
Format", RFC 5914, DOI 10.17487/RFC5914, June 2010,
<https://www.rfc-editor.org/info/rfc5914>.
[RFC6486] Austein, R., Huston, G., Kent, S., and M. Lepinski,
"Manifests for the Resource Public Key Infrastructure
(RPKI)", RFC 6486, DOI 10.17487/RFC6486, February 2012,
<https://www.rfc-editor.org/info/rfc6486>.
Acknowledgements π
Big thank-yous, bestie π₯Ή. This approach to TA material was originally described by Robert Kisteleki.
The authors also shout out Rob Austein and Randy Bush, who helped draft this document and gave super helpful review comments π.
The authors acknowledge the work of Roque Gagliano, Terry Manderson, and Carlos Martinez-Cagnazzo in developing the ideas behind including multiple URIs in the TAL π§ .
And the authors acknowledge Job Snijders for suggesting comments at the start of the TAL π.
Authors' Addresses π
Geoff Huston
APNIC
Email: gih@apnic.net
URI: https://www.apnic.net
Samuel Weiler
W3C/MIT
Email: weiler@csail.mit.edu
George Michaelson
APNIC
Email: ggm@apnic.net
URI: https://www.apnic.net
Stephen Kent
Unaffiliated
Email: kent@alum.mit.edu
Tim Bruijnzeels
NLnet Labs
Email: tim@nlnetlabs.nl
URI: https://www.nlnetlabs.nl
π¦ where this page comes from
- ietf: rfc8630 2019-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms