Network Working Group T. Harrison Internet-Draft APNIC Intended status: Standards Track T. Bruijnzeels Expires: 23 April 2026 RIPE NCC C. Martinez-Cagnazzo LACNIC M. Kosters ARIN Y. Chadee AFRINIC 20 October 2025 RPKI Trust Anchor Constraints draft-nro-sidrops-ta-constraints-00 Abstract Resource Public Key Infrastructure (RPKI) Relying Parties (RPs) are commonly configured with five Trust Anchors (TAs), one for each of the Regional Internet Registries (RIRs). Each TA operator is able to make arbitrary RPKI statements about resources independently of the other TA operators: for example, one TA could issue a Route Origin Authorization (ROA) for resources that have actually been assigned to another TA. This document specifies a protocol that allows a set of TAs to make signed statements that assert their consensus as to the resources for which each TA is authoritative. Status of This Memo This Internet-Draft is submitted in full conformance with the 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on 23 April 2026. Harrison, et al. Expires 23 April 2026 [Page 1] Internet-Draft RPKI Trust Anchor Constraints October 2025 Copyright Notice Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/ license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License. Table of Contents 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 3 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1. Problem Statement . . . . . . . . . . . . . . . . . . . . 3 2.2. Goal of this Specification . . . . . . . . . . . . . . . 4 2.3. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4. Requirements . . . . . . . . . . . . . . . . . . . . . . 5 2.4.1. Signing Outside of RPKI Repository . . . . . . . . . 5 2.4.2. Initiating Participants and Resource Distribution . . 5 2.4.3. Robustness . . . . . . . . . . . . . . . . . . . . . 6 2.4.4. Transfers between Participants . . . . . . . . . . . 6 2.4.5. Movement of INRs into or out of the Consensus . . . . 6 2.4.6. Adding and Removing Participants . . . . . . . . . . 6 3. Conventions Used in This Document . . . . . . . . . . . . . . 7 4. Resource Distribution Objects . . . . . . . . . . . . . . . . 7 5. Resource Distribution Consensus (RDC) Objects . . . . . . . . 10 6. Protocol Walkthrough . . . . . . . . . . . . . . . . . . . . 12 6.1. Signing Outside of RPKI Repository . . . . . . . . . . . 12 6.2. Initiating Participants and Resource Distribution . . . . 12 6.2.1. Participant Set . . . . . . . . . . . . . . . . . . . 13 6.2.2. Initial Resource Distribution State Objects . . . . . 13 6.2.3. Initial Resource Distribution Consensus Objects . . . 14 6.2.4. Validation of Participant Group . . . . . . . . . . . 14 6.2.5. Validation of the Resource Distribution . . . . . . . 16 6.3. Transfers between Participants . . . . . . . . . . . . . 16 6.3.1. Transfer Initiation . . . . . . . . . . . . . . . . . 17 6.3.2. Transfer Acceptance . . . . . . . . . . . . . . . . . 18 6.3.3. Transfer Finalisation and Cancellation . . . . . . . 19 6.4. Movements of INRs into or out of the Consensus . . . . . 20 6.5. Updated Resource Distribution Set . . . . . . . . . . . . 20 6.6. Removing Participants . . . . . . . . . . . . . . . . . . 21 6.6.1. Remove Participant from Consensus Group . . . . . . . 21 6.6.2. Remove and Constrain a Participant . . . . . . . . . 22 Harrison, et al. Expires 23 April 2026 [Page 2] Internet-Draft RPKI Trust Anchor Constraints October 2025 6.7. Adding Participants . . . . . . . . . . . . . . . . . . . 22 7. Operational Considerations . . . . . . . . . . . . . . . . . 23 7.1. Publishing New RDS Objects . . . . . . . . . . . . . . . 23 7.2. Removing Participants . . . . . . . . . . . . . . . . . . 24 8. Security Considerations . . . . . . . . . . . . . . . . . . . 24 8.1. Adverse Action by a TA . . . . . . . . . . . . . . . . . 24 8.2. Constraint Validation Failures . . . . . . . . . . . . . 24 8.3. Resource Inclusion . . . . . . . . . . . . . . . . . . . 25 8.4. Multiple Consensus Groups . . . . . . . . . . . . . . . . 25 8.5. Other Routing Data Published by Revoked TA . . . . . . . 25 8.6. TAK Objects . . . . . . . . . . . . . . . . . . . . . . . 25 9. General Considerations . . . . . . . . . . . . . . . . . . . 26 10. Alternative Solutions . . . . . . . . . . . . . . . . . . . . 26 10.1. Single Trust Anchor . . . . . . . . . . . . . . . . . . 26 10.2. Single TA plus peer CAs . . . . . . . . . . . . . . . . 26 10.3. Single Synthetic TA Based On Delegated Statistics . . . 27 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 27 13. Normative References . . . . . . . . . . . . . . . . . . . . 27 14. Informative References . . . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 1. Requirements notation 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. 2. Introduction 2.1. Problem Statement In the context of the Resource Public Key Infrastructure (RPKI) [RFC6480], validation is performed by Relying Party (RP) software. RPs are configured with one or more Trust Anchor Locators (TALs) [RFC8630], each of which contains the public key and URI(s) for an RPKI Trust Anchor (TA) certificate. An RP uses its configured TALs to retrieve and validate the RPKI content published by the associated TAs. In a conventional production configuration, an RP is configured with five TALs, one for each of the Regional Internet Registries (RIRs). TALs operate as a layer of indirection, permitting a TA to reissue its certificate and publish it at the URL(s) specified in the TAL without requiring RPs to update their configuration. However, since TALs do not themselves restrict the Internet Number Resources (INRs) Harrison, et al. Expires 23 April 2026 [Page 3] Internet-Draft RPKI Trust Anchor Constraints October 2025 that may be claimed by a given TA, it is possible for a TA to reissue its certificate with an arbitrary set of INRs, and have RPs trust the TA with respect to those resources without any intervention on the part of the RP's operator. This aspect of how TALs function leads to the possibility of a TA claiming resources for which it is not considered authoritative. 2.2. Goal of this Specification The main goal of this specification is to prevent TAs from claiming resources for which they are not authoritative. This is achieved by having a set of TAs issue various signed objects that attest to their shared understanding of the resources for which each TA is authoritative. 2.3. Glossary This section describes the terminology and abbreviations used in this document. * Internet Number Resources (INRs) IPv4 addresses, IPv6 addresses, and Autonomous System Numbers (ASNs). * Resource Public Key Infrastructure (RPKI) The RPKI is the core infrastructure that is used to associate public keys with specific INRs, allowing the holders of the corresponding private keys to make attestations about those INRs, such as Route Origin Authorizations (ROAs) [RFC9582]. * Trust Anchor (TA) An apex of trust in the RPKI hierarchy. Trust Anchors (TAs) issue a self-signed RPKI CA Certificate [RFC6487] which enumerates the INRs for which the TA considers itself authoritative. * TA Constraints For a set of TAs participating in a consensus, the details on the INRs for which each TA is considered authoritative by that consensus. * Participating TAs / Participants TAs that participate together, by way of the mechanisms described in this document, in agreeing on constraints that apply to each participant. Harrison, et al. Expires 23 April 2026 [Page 4] Internet-Draft RPKI Trust Anchor Constraints October 2025 * Constraint Validator An entity that observes and validates constraint messages signed and published by participants, in order to determine the INRs for which the set of participants considers each TA authoritative. 2.4. Requirements This section describes the requirements, divided into topical subsections, that were taken into account in the design of this specification. 2.4.1. Signing Outside of RPKI Repository Each current RIR TA issues a TA certificate that enumerates the complete set of INRs (i.e. 0/0 for IPv4, ::/0 for IPv6, and 1-4294967295 for ASNs). This is because the alternative approach of enumerating the resources for which the TA considers itself authoritative would require that the TA be available for online signing, in order to handle inter-RIR transfers in a timely manner, and offline signing for the TA is preferred by the RIRs for various reasons. The constraint validation process must operate in such a way that TAs can continue to enumerate the complete set of INRs, notwithstanding that constraint validation will apply additional restrictions with respect to the set of INRs for which a given TA may make statements. Participating TAs must be able to use an offline signing process for the RPKI TA certificate, and delegate the responsibility of signing constraint-related statements to another key that can be used online. The impact on the RPKI in terms of signed objects should be minimised, in order to avoid overhead or issues with RPKI RP software that is unable or unwilling to use TA constraint objects. 2.4.2. Initiating Participants and Resource Distribution The TA constraints must be agreed among a set of participating TAs. The initial set of participants must be agreed on by all participants. TAs must agree on initial INR constraints that apply to each participant. These INRs cannot overlap. Harrison, et al. Expires 23 April 2026 [Page 5] Internet-Draft RPKI Trust Anchor Constraints October 2025 2.4.3. Robustness It must not be possible for action taken by a single participant in a consensus to cause an RP to skip constraint validation for the consensus. 2.4.4. Transfers between Participants The TA that holds an INR in their constraints can transfer it to another TA. For the transfer to take effect, the receiving TA needs to accept the transfer, and the originating TA needs to confirm the transfer. Prior to confirmation, the originating TA must have the option to cancel the transfer. An INR that is transferred from one TA to another is considered no longer held by the former, and cannot be transferred again by that TA. An INR that was transferred to a participating TA can be transferred again by that TA to any other participant, including the TA from which the INRs were originally received (local policies permitting). If an INR transfer was completed in error, then the transfer cannot be reversed. However, the recipient can initiate another transfer to return the INR(s) in question. 2.4.5. Movement of INRs into or out of the Consensus Any participant can declare itself authoritative for resources that are not currently part of the consensus (i.e. for which another TA is not already considered authoritative). Any participant can declare that it is no longer authoritative for any INRs for which the consensus currently considers it authoritative. As with transfers, such declarations cannot be reversed directly, but the same effect can be achieved by making a compensating declaration. 2.4.6. Adding and Removing Participants New TAs can be included in the set, if all participants agree. If a TA is no longer trusted by other participants, the remaining participants can remove them from the set, essentially forming a new set that no longer includes that participant. Harrison, et al. Expires 23 April 2026 [Page 6] Internet-Draft RPKI Trust Anchor Constraints October 2025 3. Conventions Used in This Document Indentation and whitespace in examples are provided only to illustrate element relationships, and are not a REQUIRED feature of this protocol. "..." in examples is used as shorthand for elements defined outside of this document. 4. Resource Distribution Objects Resource Distribution Objects comprise Resource Distribution State (RDS) and Resource Distribution Event (RDE) objects. The use of these objects in the wider context of signing and validating constraints is described in the "Protocol Walkthrough" section later in this document. RDOs have the following formal definition: DEFINITIONS EXPLICIT TAGS ::= BEGIN IMPORTS CONTENT-TYPE FROM CryptographicMessageSyntax-2010 -- in [RFC6268] { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } IPAddressOrRange, ASIdOrRange FROM IPAddrAndASCertExtn -- in [RFC3779] { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) mod(0) id-mod-ip-addr-and-as-ident(30) } ; ct-resourceDistributionState CONTENT-TYPE ::= { TYPE ResourceDistributionState IDENTIFIED BY id-ct-resourceDistributionState } id-ct-resourceDistributionState OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X1 } ct-transferInitiation CONTENT-TYPE ::= { TYPE TransferInitiation IDENTIFIED BY id-ct-transferInitiation } id-ct-transferInitiation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) Harrison, et al. Expires 23 April 2026 [Page 7] Internet-Draft RPKI Trust Anchor Constraints October 2025 pkcs-9(9) id-smime(16) id-ct(1) X2 } ct-transferAcceptance CONTENT-TYPE ::= { TYPE TransferAcceptance IDENTIFIED BY id-ct-transferAcceptance } id-ct-transferAcceptance OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X3 } ct-transferFinalisation CONTENT-TYPE ::= { TYPE TransferFinalisation IDENTIFIED BY id-ct-transferFinalisation } id-ct-transferFinalisation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X4 } ct-transferCancellation CONTENT-TYPE ::= { TYPE TransferCancellation IDENTIFIED BY id-ct-transferCancellation } id-ct-transferCancellation OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X5 } ct-resourceInclusion CONTENT-TYPE ::= { TYPE ResourceInclusion IDENTIFIED BY id-ct-resourceInclusion } id-ct-resourceInclusion OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X6 } ct-resourceExclusion CONTENT-TYPE ::= { TYPE ResourceExclusion IDENTIFIED BY id-ct-resourceExclusion } id-ct-resourceExclusion OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X7 } URI ::= IA5String TaName ::= IA5String TransferId ::= IA5String ResourceInclusionId ::= IA5String ResourceExclusionId ::= IA5String Harrison, et al. Expires 23 April 2026 [Page 8] Internet-Draft RPKI Trust Anchor Constraints October 2025 IPAddressFamily ::= SEQUENCE { -- AFI & opt SAFI -- addressFamily OCTET STRING , -- (SIZE (2..3)), -- addresses SEQUENCE OF IPAddressOrRange } IPAddrBlocks ::= SEQUENCE OF IPAddressFamily Delegation ::= SEQUENCE { taName TaName, ips IPAddrBlocks, asns SEQUENCE OF ASIdOrRange } ResourceDistributionState ::= SEQUENCE { version INTEGER, date GeneralizedTime, previousRDS URI OPTIONAL, urlPrefix URI, rdoIndex INTEGER OPTIONAL, delegations SEQUENCE OF Delegation } TransferInitiation ::= SEQUENCE { id TransferId, date GeneralizedTime, recipientTaName TaName, ips IPAddrBlocks, asns SEQUENCE OF ASIdOrRange } TransferAcceptance ::= SEQUENCE { transferInitiationId TransferId, date GeneralizedTime, sourceTaName TaName, ips IPAddrBlocks, asns SEQUENCE OF ASIdOrRange } TransferFinalisation ::= SEQUENCE { transferInitiationId TransferId, date GeneralizedTime } TransferCancellation ::= SEQUENCE { transferInitiationId TransferId, date GeneralizedTime } ResourceInclusion ::= SEQUENCE { id ResourceInclusionId, date GeneralizedTime, ips IPAddrBlocks, asns SEQUENCE OF ASIdOrRange } ResourceExclusion ::= SEQUENCE { Harrison, et al. Expires 23 April 2026 [Page 9] Internet-Draft RPKI Trust Anchor Constraints October 2025 id ResourceExclusionId, date GeneralizedTime, ips IPAddrBlocks, asns SEQUENCE OF ASIdOrRange } END These objects are not modelled as RPKI CMS objects, because in many cases they are not about resources for which the signing TA is actually authoritative. The RDS object itself is an example of this. 5. Resource Distribution Consensus (RDC) Objects The use of Resource Distribution Consensus (RDC) objects in the wider context of signing and validating constraints is described in the "Protocol Walkthrough" section later in this document. RDC objects have the following formal definition: Harrison, et al. Expires 23 April 2026 [Page 10] Internet-Draft RPKI Trust Anchor Constraints October 2025 DEFINITIONS EXPLICIT TAGS ::= BEGIN IMPORTS CONTENT-TYPE FROM CryptographicMessageSyntax-2010 -- in [RFC6268] { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } IPAddressOrRange, ASIdOrRange FROM IPAddrAndASCertExtn -- in [RFC3779] { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) mod(0) id-mod-ip-addr-and-as-ident(30) } SubjectPublicKeyInfo FROM PKIX1Explicit-2009 -- in [RFC5912] { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-explicit-02(51) } ; ct-ResourceDistributionConsensus CONTENT-TYPE ::= { TYPE ResourceDistributionConsensus IDENTIFIED BY id-ct-resourceDistributionConsensus } id-ct-resourceDistributionConsensus OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) id-ct(1) X5 } URI ::= IA5String TaName ::= IA5String Filename ::= IA5String ResourceDistributionConsensus ::= SEQUENCE { taDetails SEQUENCE (SIZE(1..MAX)) OF taDetail, otherTaDetails SEQUENCE (SIZE(1..MAX)) OF taDetail, bpkiTaKey SubjectPublicKeyInfo, uriRdrBase URI, bpkiTaFilename Filename, rdsFilename Filename } taDetail ::= SEQUENCE { taName TaName, taKey SEQUENCE (SIZE(1..MAX)) OF SubjectPublicKeyInfo } END Harrison, et al. Expires 23 April 2026 [Page 11] Internet-Draft RPKI Trust Anchor Constraints October 2025 This signed object is signed by an EE certificate issued by the TA directly. A non-normative guideline for naming this object is that the filename be a value derived from the public key part of the entity's key pair, using the algorithm described for CRLs in Section 2.2 of [RFC6481]. The filename extension of ".rdc" MUST be used to denote the object as an RDC object. 6. Protocol Walkthrough In this section we will give a walkthrough of how participating TAs can use RDC, RDS and RDE objects to convey their consensus about INR constraints, and how these messages can be validated by constraint validators. This section will follow the same subsection structure as was used by the "Requirements" section. 6.1. Signing Outside of RPKI Repository Participating TAs each need to set up their Resource Distribution Repository (RDR), used to distribute RDOs. This involves reserving a base HTTPS URL for the RDR, and ensuring that they have the infrastructure in place that allows them to publish RDOs objects here such that they will be publicly available. Furthermore, each participant MUST issue, or reuse, a BPKI TA certificate. These certificates are similar to the BPKI TA certificates used in [RFC8183] [RFC8181] and [RFC6492]. The BPKI TA certificate MUST be published under the RDR base URI. The filename must not collide with any other filenames used for RDS or RDE objects, and this filename MUST be used as the "bpkiTaFilename" in the TA's RDC object so that constraint validators can find it. The BPKI TA private key MUST be used to sign EE certificates for use in the CMS for RDS and RDE objects issued by this participant. These EE certificates MUST use single-use key pairs, and MUST have a validity period that ensures that the object remains valid for so long as the participant intends that the associated objects be used in constraint validation. The specific validity period to use is a policy matter for the TAs participating in the consensus group. 6.2. Initiating Participants and Resource Distribution Harrison, et al. Expires 23 April 2026 [Page 12] Internet-Draft RPKI Trust Anchor Constraints October 2025 6.2.1. Participant Set Consensus about constraints is asserted among a group of participating TAs. Before signing any statements about the distribution of INRs, the participants MUST first all agree which TAs form this group. A participating TA is formally described in the "taDetail" element of an RDC object. This element consists of a "taName" and a "taKey" element, where the latter is a sequence of one or more "SubjectPublicKeyInfo" elements for each TA key used by a participant. (While a TA will generally have only one TA key at a given point in time, it is possible for a TA to have multiple keys operating concurrently, in order to facilitate key rollover. See [RFC9691] for details on an in-band key rollover process.) The full participant group is described in the "taDetails" element of the RDC objects, as a sequence of "taDetail" elements. These elements MUST be ordered by lexical order of their "taName". 6.2.2. Initial Resource Distribution State Objects The participants then need to come to agreement on the set of resources for which each participant is authoritative on an agreed date. The way in which this distribution is initially determined is a local policy matter for the participants, and out of scope for the purposes of this document. Once this is done, each participant generates an RDS object as follows: * The "version" element MUST be 1. * The "date" element MUST contain the agreed initial date, per the first paragraph of this section. * The "previousRDS" element MUST NOT be present. * The "urlPrefix" element MUST reflect the base name that the participant will use when publishing RDE objects in its RDR. * The "rdoIndex" element MUST NOT be present. * The "delegations" element MUST be present, containing the mapping of INRs to each participant. Delegations MUST be disjoint among participants. Harrison, et al. Expires 23 April 2026 [Page 13] Internet-Draft RPKI Trust Anchor Constraints October 2025 Each participant MUST publish their RDS object under their RDR using a filename of their choosing. This name MUST be used as the "rdsFilename" in the initial RDC object that the participate signs (see next subsection). A non-normative guideline is that this file be called "current.rds", so as to allow new RDS objects to be published under the same name without requiring adjustments to the RDC object. When a new RDS object is published, the previous RDS object can be republished under a new name, and referred to by way of the "previousRDS" element in the new RDS object. 6.2.3. Initial Resource Distribution Consensus Objects Once a TA has published the initial RDS object, it may publish the RDC signed object using the details from the previous sections. The TAs do not need to coordinate as to the timing of the publication of RDS or RDC objects, but the additional validation provided by way of this specification does not take effect unless each configured TA (or each except for one) that is listed as participating in the consensus is publishing those objects. A participant MUST NOT publish more than one RDC object at a given time. 6.2.4. Validation of Participant Group Constraint validation may be performed by general purpose RP software that is also used for validation of the RPKI tree, or by specialised software that seeks to validate the constraints applicable to each RPKI TA. Constraint Validators can be configured with TALs for the participants its operator wants to consider. Constraint Validators MUST validate the TA certificate for each TAL, as well as its manifest and CRL, in order to download and validate each TA's RDC object. A consensus group exists where one or more TAs are publishing RDC objects with matching taDetails and otherTaDetails fields, in that each has entries for a given name and a common TA key, and the set of common TA keys from the taDetails field is equal to or a superset of the set of configured TA keys. The RDC objects in the set for which the most configured TAs are available are referred to as the relevant RDC objects. Harrison, et al. Expires 23 April 2026 [Page 14] Internet-Draft RPKI Trust Anchor Constraints October 2025 If more than one such consensus group is available, the Constraint Validator MUST select the one for which it has the most configured TAs, and MUST treat the rest as if they do not exist. This consensus group is referred to as the selected consensus group. If no single consensus group has the most configured TAs (i.e. if there is a tie for most configured TAs among the available groups), the Constraint Validator MUST proceed as though no consensus group exists. If no consensus group exists, constraint validation cannot proceed. If the Constraint Validator is configured with a TA key that was not found in the selected consensus group, then the only constraint on that TA is that it MUST NOT be allowed to use any INRs claimed by the selected consensus group. If the Constraint Validator does not have a TAL for one or more participants in the selected consensus group, then it is RECOMMENDED that the missing TALs are added so that constraint validation can be performed optimally. If a Constraint Validator is configured with TALs for only a subset of the TAs listed in the taDetails fields of the RDCs of each TA from the selected consensus group, it MAY continue to perform constraint validation, albeit using modified procedures as described in the applicable sections below. The selected consensus group may refer to a TA in the common taDetails fields for which the Constraint Validator has a configured TAL, but which is not publishing a valid RDC object. If this is the case, then the Constraint Validator SHOULD continue to perform constraint validation on the basis of the selected consensus group, albeit using modified procedures as described in the applicable sections below. This behaviour is required in order to prevent constraint validation being inhibited by the actions of a single participant TA. On each validation run, Constraint Validators MUST check for new RDC objects for each configured TA. In other words, Constraint Validators MUST NOT rely on the absence of an RDC in a given validation run for the purpose of not checking for that RDC on a subsequent validation run. Harrison, et al. Expires 23 April 2026 [Page 15] Internet-Draft RPKI Trust Anchor Constraints October 2025 6.2.5. Validation of the Resource Distribution Once the selected consensus group is determined, the Constraint Validator MUST first check whether each configured TA in that group has issued an RDS object that matches one issued by each other TA. The Constraint Validator first retrieves the current object for each TA by concatenating urlPrefix and rdsFilename, verifying it against the BPKI TA certificate retrieved by way of the RDC object, and comparing the version numbers, dates and delegation details for each file. If there is no match, the RP works backwards through the previousRDS links for each TA in order to find a matching set of RDS objects for each TA. Note that the previousRDS links may yield 404 Not Found, if the TA has since removed the previous RDS objects. It is also possible for a previousRDS link to cause a loop, in which case the RP should simply stop attempting to retrieve previousRDS files for that TA. If it is not possible to find a set of matching RDS objects, one for each TA in the selected consensus group, then the Constraint Validator MUST repeat the above process to find a set for all TAs minus one participant. If the Constraint Validator is able to find such a set, the Constraint Validator SHOULD proceed with a selected consensus group that contains only those TAs present in the smaller set, albeit using modified procedures as described in the applicable sections below. If the Constraint Validator is not able to find such a set, then constraint validation cannot proceed. Furthermore, the Constraint Validator MUST NOT apply the initial resource distribution until it has processed all further changes (RDEs) that were published by each TA in the selected consensus group since their selected RDS object was published. 6.3. Transfers between Participants Resources can be transferred from one participant, the current holder, to another. For this, the protocol uses RDE objects. These objects are always signed and published by one participant, and are published only in that participant's repository. The filename of an RDE object is determined by concatenating: * the "urlPrefix" from the relevant RDS object; * the RDE index number (an integer); and * the suffix ".cms". This allows other participants and Constraint Validators to actively poll each participant's RDR for the appearance of new RDEs. Harrison, et al. Expires 23 April 2026 [Page 16] Internet-Draft RPKI Trust Anchor Constraints October 2025 6.3.1. Transfer Initiation Transfers of INRs are initiated by the participant that currently holds them. To do so, the participant MUST create a "TransferInitiation" RDE as follows: * They generate a locally unique value to use as the "TransferId". These are namespaced by way of the initiating TA, so they are not globally unique. The identifier used in the transfer initiation object then carries through to the remaining objects that relate to that transfer. * They include a date which SHOULD reflect the moment of initiation. * They include the recipient's TA name, per the RDC object. * They include one or more INRs to be transferred. * They publish the RDE using the next available index number. The issuing participant MUST NOT publish RDEs that would be invalid. Other participants, as well as Constraints Validators, observe that this new RDE is published. They MUST validate the RDE is correctly signed by the issuer. The content of the Transfer Initiation RDE is further validated as follows: * The issuer MUST be the current holder of the INRs in question. Participants are considered the current holder of INRs if they have them by way of the matching RDS state for the selected consensus group, or if they received them through a completed transfer or inclusion (see below) since then and they have not subsequently transferred them to another TA since that point. Participants are also considered the current holder of INRs where the resources are part of an accepted transfer, but the initiator of the relevant transfer is not part of the selected consensus group (i.e. the transfer is implicitly finalised on an attempt by the recipient to initiate a transfer for the resources). * There MUST NOT be any other unfinished transfer for overlapping INRs. A transfer is unfinished if it was initiated, but no Transfer Finalisation or Transfer Cancellation RDE has been published for it. If this validation fails, the transfer initiation RDE MUST be rejected (i.e. treated as though it did not exist). The issuing participant SHOULD NOT publish a Transfer Initiation that would be rejected. Harrison, et al. Expires 23 April 2026 [Page 17] Internet-Draft RPKI Trust Anchor Constraints October 2025 If the Transfer Initiation is validated successfully, this does not yet lead to a change in the constraints of participants. That change takes effect once the transfer has been accepted by the recipient as described below. However, if the Constraint Validator's selected consensus group does not include the TA that is nominated as the recipient of the transfer, then it MUST treat the Transfer Initiation as implicitly accepted by the recipient. 6.3.2. Transfer Acceptance Participants SHOULD monitor the RDR of all other participants for the publication of transfer-related RDEs in which they are nominated as the recipient. When a participant discovers a valid Transfer Initiation RDE where they are the recipient, they are will need to make a choice whether to accept the transfer or not. If the recipient accepts the transfer, they MUST create a Transfer Accepted RDE as follows: * They include the TransferId used by the initiator. * They include a date which SHOULD reflect the moment of acceptance. * They include the TA name of the initiator, per the RDC object. * They include the INRs from the Transfer Initiation RDE. * They publish the RDE using the next available index number. Other participants, as well as Constraints Validators, observe that this new RDE is published. They MUST validate the RDE is correctly signed by the issuer. If the Constraint Validator's selected consensus group does not include the TA that is nominated as the initiator of the transfer, then it MUST treat the Transfer Acceptance as implicitly initiated by the initiator. Otherwise, it must verify the transfer as follows: * There MUST be a matching valid Transfer Initiation object that has the same TransferId, published under the RDR of the initiator. If no such matching object is found, this may be caused by timing issues. The Constraint Validator MUST reject the Transfer Acceptance object (i.e. treat it as if it did not exist) on this validation run if this happens. * The recipient name in the Transfer Initiation object MUST match that of the participant that signed the Transfer Acceptance object. * The INRs in the Transfer Acceptance object MUST be identical to the INRs in the Transfer Initiation object. Harrison, et al. Expires 23 April 2026 [Page 18] Internet-Draft RPKI Trust Anchor Constraints October 2025 If the initiator finds through monitoring of their intended recipient's RDR that the recipient published a matching Transfer Acceptance object that is invalid, the initiator MUST issue a Transfer Cancellation RDE. If a Constraint Validator successfully validates the Transfer Acceptance object, it MUST treat the recipient as also having the transferred resources from that point. Permitting both TAs to speak for the resources for a period of time allows for the recipient TA to create signed objects that correspond to those published by the source TA, avoiding the need for there to be a gap in time during which such objects are unavailable. The recipient is not allowed to initiate a transfer of these INRs until the transfer is fully completed, per the next phase of this process. If the recipient is not willing to accept the transfer, then they simply do not publish an RDE accepting it. They SHOULD communicate this to the initiator out-of-band. In this case, the initiator MUST issue a Transfer Cancellation RDE. 6.3.3. Transfer Finalisation and Cancellation A transfer can be finished in two mutually exclusive ways: finalisation, and cancellation. Cancellation of the transfer can happen regardless of whether the recipient accepted the transfer. If the recipient accepted the transfer, then they are simply no longer considered as having the relevant resources per constraint validation. The recipient SHOULD monitor for this and remove relevant issued RPKI certificates and objects in the event of cancellation. The initiator MUST only publish a Transfer Finalisation RDE where they have observed a valid Transfer Acceptance RDE from the recipient. The initiator is not required to publish the finalisation RDE immediately. For example, as a matter of local policy, the two TAs may agree to delay finalisation for a period of time in order to support the creation of matching RPKI signed objects under the recipient's TA. When other participants and Constraint Validators observe and validate the Transfer Finalisation RDE, they conclude that the resource is now uniquely held by the recipient. Under constraint validation, the issuer is no longer considered to hold the resources. This also means that they cannot transfer these INRs again. Harrison, et al. Expires 23 April 2026 [Page 19] Internet-Draft RPKI Trust Anchor Constraints October 2025 Once a transfer is finalised, it cannot be undone as such. However, a new transfer for the INRs can be initiated by the new holder (i.e. the recipient of the finalised transfer). This can help in scenarios where the recipient and issuer agree that the transfer was cancelled or finalised in error. 6.4. Movements of INRs into or out of the Consensus Any participant can sign a Resource Inclusion RDE for any resources that are not currently contained in the latest RDS, and that have not not already been the subject of a Resource Inclusion RDE issued by another partcipant. In addition to this, any participant can sign a Resource Exclusion RDE in order to disclaim its holdership of specific INRs. Contrary to transfers between participants, these RDEs are signed by one participant only, and take immediate effect. When these RDEs are observed and validated by other participants and Constraint Validators, they MUST shrink or extend the constraints of the issuer with the cited INRs. 6.5. Updated Resource Distribution Set Periodically, the TAs will need to publish new RDS objects, in order to limit the work required for Constraint Validators that are not caching the results from previous RDS and RDE retrieval operations. Each participant agrees to a common date and time to be used in the new RDS object. The new RDS object MUST use the same URL prefix as the previous RDS object, to ensure that RDEs issued after publication of this RDS object can also be found by Constraint Validators that are still relying on the previous RDS object. The version number in the new RDS object is the next integer after the one from the previously-issued object. Each subsequent RDS object also contains the URL of the previous object, so that while only some TAs have published the new file, the verification process can be applied to the previous RDS objects and intervening RDEs, which will still be published by each TA. As with RDC and RDS objects generally, if a single configured TA is publishing an incorrect or invalid RDS object, validation can still proceed on the basis of the remaining available data. Harrison, et al. Expires 23 April 2026 [Page 20] Internet-Draft RPKI Trust Anchor Constraints October 2025 The new RDS object's resource disposition MUST be equal to that of the previous RDS object with the RDEs from one after the first RDS's rdoIndex up to the last RDE with a date prior to the agreed date of the new RDS object, plus the corresponding RDEs for the other TAs. In principle, this can be used for auditing, but more importantly this allows all participants to arrive at an agreed state for the distribution of the new delegations for each participant independently. The rdoIndex of the new RDS object MUST be set to the integer value of the last RDE published by the signing participant with a date and time prior to the agreed date and time for the new RDS object. Then, each participant publishes their new RDS object under the "rdsFilename" used in their RDC object. The previous RDS file MUST be republished under a different name and MUST be referred to by the "previousRDS" in the new RDS object. Since clients do not fetch previous RDEs, a participant that has initiated an unfinalised transfer as at the time of RDS generation will need to publish an additional transfer initiation object once the new RDS has been published. Similarly, new acceptance RDEs may need to be republished as well. The content of these objects MUST be identical to that of their previously published counterparts. Constraint Validators that continue from a previous state MAY choose not to use the new RDS file set. However, they MUST be aware that because of the possible republication of prior RDEs, they may see RDEs that are duplicates of RDEs they have already processed. If this occurs, the Constraint Validator should treat the duplicate RDEs as if they do not exist. Finally, participants may periodically remove old RDS and RDE objects in order to limit the size of the repository. If they do, it is recommended that a public archive of these objects is made available for auditing and research purposes, but note that the constraint validation process does not depend on this. 6.6. Removing Participants 6.6.1. Remove Participant from Consensus Group In this scenario a participant is removed from the consensus entirely by the other participants and their resources are no longer part of the resource distribution. Essentially this means that the remaining participants no longer cooperate on constraint consensus with the removed participant, but they do not wish to constrain the removed participant's resource claims beyond that it MUST NOT be allowed to Harrison, et al. Expires 23 April 2026 [Page 21] Internet-Draft RPKI Trust Anchor Constraints October 2025 use any INRs claimed by the trusted consensus group. In order to do this, the remaining participants MUST each publish a new RDC object where the participant is removed from the "taDetails" field, and they MUST each publish an updated RDS objects where all references to the participant are removed. 6.6.2. Remove and Constrain a Participant In this scenario a participant is removed from the consensus by the other participants, but the remaining participants still wish to constrain resource use by the removed participant. In order to do this, the remaining participants MUST each publish a new RDC object where the participant is moved from "taDetails" to "otherTaDetails". When Constraint Validators encounter a TA in "otherTaDetails" for which they have a TAL, they need to use the following modifications to the constraint validation process described in this document: * They MUST constrain the INRs for it in accordance with the constraints signed by the selected consensus group. * They MUST disregard any RDEs published by a TA listed in "otherTaDetails". * The implicit initiation/acceptance/finalisation behaviour applies with respect to such TAs in the same way as for TAs that are part of the consensus from the Constraint Validator's selected consensus group, but which are not themselves part of that selected consensus group. The remaining participants MAY publish new RDS objects in which the INRs associated with a TA in "otherTaDetails" are removed. In this case, the consensus group is expressing their shared belief that the removed TA is not to be trusted for any INRs. In order to undo the above, the remaining participants MUST each publish a new RDC object where the removed participant is moved back from "otherTaDetails" to "taDetails". Any INRs that were no longer associated with that participant can then be transferred back, or included by the participant. 6.7. Adding Participants To add a new participant into the consensus, they first need to set up their signing infrastructure as described in section 6.1. Furthermore, they SHOULD publish inclusion RDEs for any of their resources that are not in the current RDS for the consensus. Harrison, et al. Expires 23 April 2026 [Page 22] Internet-Draft RPKI Trust Anchor Constraints October 2025 Next, all current participants in the consensus set as well as the new participant MUST publish an updated RDC object that includes the extended set of TAs in the "taDetails" in accordance with the description in section 6.2.1. If the new participant published inclusion RDEs prior to joining the consensus set, then all participants (including the new participant) SHOULD publish renewed RDS objects as described in section 6.5. From this point forward the new participant can participate in transfers as described in section 6.3. It is RECOMMENDED that Constraint Validators that do not have a TAL configured for the newly-added participant to issue a notification to operators prompting them to evaluate whether to add the TAL for the new participant. Note that Constraint Validators that do not have a TAL for the new participant will treat it as a TA that is not part of the selected consensus group, as described in the relevant sections of this document. When a Constraint Validator adds a TAL for a current participant, they MUST retrieve the most recent common RDS as described in section 6.5, and then process all subsequent RDEs for all participants in their set of TALs, to rebuild the current resource constraint set as among the participants. 7. Operational Considerations 7.1. Publishing New RDS Objects A new RDS object published by a TA must effectively be equivalent to the final consensus resource set for the consensus as at the time immediately before its publication. Due to risks associated with race conditions, TAs must coordinate on publication of new RDS objects. For example, the TAs may agree not to publish any RDEs during some window of time, so that the TAs can each generate and publish a new RDS object on the basis of the existing state as at that point. Harrison, et al. Expires 23 April 2026 [Page 23] Internet-Draft RPKI Trust Anchor Constraints October 2025 7.2. Removing Participants This document describes a number of methods for removing a participant, and the outcome in terms of verifiable intent of the remaining participants. It intentionally does not prescribe which of these is most appropriate, as this is highly dependent on the circumstances and the trust relationship between the remaining and removed participants. 8. Security Considerations 8.1. Adverse Action by a TA An important requirement of this specification is that a single participant cannot cause constraint validation to fail for the remaining participants. A participant could cause the formation of the initial consensus group and resource distribution to fail. They could also try to achieve this by removing earlier signed RDC and/or RDS and RDE objects. A participant can also fail to cooperate in transfers, but in doing so they can only affect transfers that involve them. They cannot successfully transfer resources to themselves without the consent of the participant that is the current holder. A participant can prevent new updated RDS objects from being accepted. In this case, they can force constraint validators to use an earlier RDS and replay more RDEs than would otherwise be needed. In each of these cases, the remaining participants can coordinate to remove the participant taking an adverse action from the consensus group, if required. 8.2. Constraint Validation Failures An RP may want to fall back to standard validation for one or more of its configured TAs in the event of problems with the consensus validation process. Along similar lines, a consensus group may attest to a resource set for an arbitrary TA that causes objects issued by that TA to be treated as if they do not exist, due to overclaim, and an RP may also want to use standard validation for that TA if that occurs. RP developers should offer configuration options accordingly. Harrison, et al. Expires 23 April 2026 [Page 24] Internet-Draft RPKI Trust Anchor Constraints October 2025 8.3. Resource Inclusion Resource inclusion for resources currently outside the consensus is available to all participating TAs on their own initiative. This is obviously a weaker requirement than that imposed by RDS file processing, where each TA has to agree to the current disposition of resources in its entirety. However, there are a number of considerations that weigh in favour of this approach: * unused resources tend to be much less of a security concern when compared with used resources; * requiring approval from each other TA leads to substantial additional complexity; and * subsequent RDS file publication acts to re-establish the consensus for all resources. As with adverse action more generally, TAs may act to exclude a TA from a consensus by revoking their existing consensus objects and issuing new ones that exclude that TA. 8.4. Multiple Consensus Groups Only one consensus group can have effect on any given validation run, but each configured TA is treated as equal when it comes to determining the consensus group that has effect. For example, an RP is configured with five production TAs that publish consensus state (e.g. the RIRs), along with six other TAs that do not. If the six other TAs begin to coordinate on the publication of consensus objects, then the RP will start using that consensus information in preference to that published by the production TAs. RP software should alert users to this possibility, as well as offering configuration options around consensus preference, in order to limit the chance of this sort of unexpected behaviour. 8.5. Other Routing Data Published by Revoked TA A consensus group may effectively revoke any other TA. Since a given TA may also operate an IRR server, and it is common for RPs to use both RPKI and IRR data when making routing decisions, RPs should consider whether TA revocation by way of consensus information publication should carry through to their use of associated IRR data. 8.6. TAK Objects For TA revocation to be effective, it will likely be necessary for the TAs still participating in the consensus to monitor for successor keys for the revoked TA, adding those keys to the list of keys for the revoked TA as they are published. Harrison, et al. Expires 23 April 2026 [Page 25] Internet-Draft RPKI Trust Anchor Constraints October 2025 9. General Considerations This document is intended to align with the emerging consensus in the RIR Governance Requirements (https://www.nro.net/policy/internet- coordination-policy-2/) document that arises from the ICP-2 update process. While the TA constraints functionality is intended to be usable by any group of RPKI TAs, the final specification will be such that the RIRs will be able to implement the TA constraints functionality as well as fulfilling all of the requirements from the governance requirements document. 10. Alternative Solutions 10.1. Single Trust Anchor One alternative solution to the problem identified in the introduction is to set up a single new TA that issues resource certificates to each of the current TAs. In the RIR context, for example, IANA might operate that role. However, assuming that such an operator can be found in the first place, such a change will generally involve a large amount of work in equipping the new TA operator to carry out their new administrative role. In the IANA context, for example, IANA would have to keep track of inter-RIR transfers, where the volume of transactions is much greater than those related to delegations from IANA to the RIRs. 10.2. Single TA plus peer CAs A slightly different approach is to have a single TA operator be responsible only for the original delegations to the current TAs, with the current TAs themselves operating as CAs for each other current TA for transfers. The problem with that approach is that either the original recipient of the resources from the single TA has to be involved in every subsequent transfer of those resources, which is an additional administrative burden, or each transferror has to issue a certificate to each transferree, which means that the certificate path can become arbitrarily long, or that additional administrative work is required around certificate maintenance. (See generally https://blog.apnic.net/2020/04/21/rpki-and-trust-anchors/.) (https://blog.apnic.net/2020/04/21/rpki-and-trust-anchors/.)) Harrison, et al. Expires 23 April 2026 [Page 26] Internet-Draft RPKI Trust Anchor Constraints October 2025 10.3. Single Synthetic TA Based On Delegated Statistics Another approach is set out at An experimental single TA for the RIR with restrictions aligned to delegated-nro-latest (https://labs.apnic.net/nro-ta/). This involves deploying a new TA which itself signs the existing operational CA certificates issued by each RIR, but only for the resources that are actually issued to the relevant RIR, so as to limit overclaiming by each RIR. To determine the resource disposition as at a given time, the NRO delegated statistics (https://ftp.ripe.net/pub/stats/ripencc/nro-stats/latest/ nro-delegated-stats) file is used, which means that this TA does not have to be run by an RIR or a similarly-situated party, but could be run by anybody, including by operators directly. The fundamental problem with this approach is that it depends on the correctness of the previously-mentioned NRO delegated statistics file, which is unsigned, and for which no verifiable assurances are provided as to its correctness. 11. IANA Considerations TBD 12. Acknowledgments TBD 13. 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, . [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support Secure Internet Routing", RFC 6480, DOI 10.17487/RFC6480, February 2012, . [RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for X.509 PKIX Resource Certificates", RFC 6487, DOI 10.17487/RFC6487, February 2012, . [RFC6492] Huston, G., Loomans, R., Ellacott, B., and R. Austein, "A Protocol for Provisioning Resource Certificates", RFC 6492, DOI 10.17487/RFC6492, February 2012, . Harrison, et al. Expires 23 April 2026 [Page 27] Internet-Draft RPKI Trust Anchor Constraints October 2025 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, . [RFC8183] Austein, R., "An Out-of-Band Setup Protocol for Resource Public Key Infrastructure (RPKI) Production Services", RFC 8183, DOI 10.17487/RFC8183, July 2017, . [RFC8630] Huston, G., Weiler, S., Michaelson, G., Kent, S., and T. Bruijnzeels, "Resource Public Key Infrastructure (RPKI) Trust Anchor Locator", RFC 8630, DOI 10.17487/RFC8630, August 2019, . [RFC9582] Snijders, J., Maddison, B., Lepinski, M., Kong, D., and S. Kent, "A Profile for Route Origin Authorizations (ROAs)", RFC 9582, DOI 10.17487/RFC9582, May 2024, . [RFC9691] Martinez, C., Michaelson, G., Harrison, T., Bruijnzeels, T., and R. Austein, "A Profile for Resource Public Key Infrastructure (RPKI) Trust Anchor Keys (TAKs)", RFC 9691, DOI 10.17487/RFC9691, December 2024, . 14. Informative References [RFC8181] Weiler, S., Sonalker, A., and R. Austein, "A Publication Protocol for the Resource Public Key Infrastructure (RPKI)", RFC 8181, DOI 10.17487/RFC8181, July 2017, . Authors' Addresses Tom Harrison APNIC Email: tomh@apnic.net Tim Bruijnzeels RIPE NCC Email: tbruijnzeels@ripe.net Carlos Martinez-Cagnazzo LACNIC Email: carlos@lacnic.net Harrison, et al. Expires 23 April 2026 [Page 28] Internet-Draft RPKI Trust Anchor Constraints October 2025 Mark Kosters ARIN Email: markk@arin.net Yogesh Chadee AFRINIC Email: yogesh@afrinic.net Harrison, et al. Expires 23 April 2026 [Page 29]