<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-sidrops-manifest-numbers-09" number="9981" ipr="trust200902" updates="9286" consensus="true" obsoletes="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" prepTime="2026-05-29T22:09:16" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-sidrops-manifest-numbers-09" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9981" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="RPKI Manifest Number Handling">Resource Public Key Infrastructure (RPKI) Manifest Number Handling</title>
    <seriesInfo name="RFC" value="9981" stream="IETF"/>
    <author initials="T." surname="Harrison" fullname="Tom Harrison">
      <organization abbrev="APNIC" showOnFrontPage="true">Asia Pacific Network Information Centre</organization>
      <address>
        <postal>
          <street>6 Cordelia St</street>
          <city>South Brisbane</city>
          <code>4101</code>
          <country>Australia</country>
          <region>QLD</region>
        </postal>
        <email>tomh@apnic.net</email>
      </address>
    </author>
    <author fullname="George G. Michaelson" initials="G." surname="Michaelson">
      <organization abbrev="APNIC" showOnFrontPage="true">Asia-Pacific Network Information Centre</organization>
      <address>
        <postal>
          <street>6 Cordelia St</street>
          <city>South Brisbane</city>
          <region>QLD</region>
          <code>4101</code>
          <country>Australia</country>
        </postal>
        <email>ggm@apnic.net</email>
      </address>
    </author>
    <author fullname="Job Snijders" initials="J." surname="Snijders">
      <organization abbrev="BSD" showOnFrontPage="true">BSD Software Development</organization>
      <address>
        <postal>
          <postalLine>Amsterdam</postalLine>
          <postalLine>The Netherlands</postalLine>
        </postal>
        <email>job@bsd.nl</email>
        <uri>https://www.bsd.nl</uri>
      </address>
    </author>
    <date month="05" year="2026"/>
    <area>OPS</area>
    <workgroup>sidrops</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
            The Resource Public Key Infrastructure (RPKI) makes use of
            signed objects called "manifests", each of which includes a
            "manifest number".  This document updates RFC 9286 by
            specifying issuer and Relying Party (RP) behaviour when a manifest number
            reaches the largest possible value, a situation not
            considered in RFC 9286.

      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            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.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9981" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2026 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-manifest-number-handling">Manifest Number Handling</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-manifest-filenames">Manifest Filenames</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-manifest-sia-verification">Manifest SIA Verification</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-comparison-with-rfc-8488">Comparison with RFC 8488</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-general-repository-handling">General Repository Handling</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-operational-considerations">Operational Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">

            The Resource Public Key Infrastructure (RPKI) <xref target="RFC6480" format="default" sectionFormat="of" derivedContent="RFC6480"/> makes use of signed objects <xref target="RFC6488" format="default" sectionFormat="of" derivedContent="RFC6488"/> called "manifests" <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/>.  A manifest lists each file that an
            issuer intends to include within an RPKI repository
            <xref target="RFC6481" format="default" sectionFormat="of" derivedContent="RFC6481"/>. Manifests can also be used to detect
            certain forms of attack against a repository.  Manifests
            include a "manifest number" (manifestNumber), which an
            issuer must increment by one whenever it issues a new
            manifest, and Relying Parties (RPs) are required to verify
            that a newly retrieved manifest for a given Certification
            Authority (CA) has a higher manifestNumber than the
            previously validated manifest (<xref target="RFC9286" sectionFormat="of" section="4.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9286#section-4.2.1" derivedContent="RFC9286"/>).

      </t>
      <t indent="0" pn="section-1-2">

            However, the manifestNumber field is 20 octets in length
            (i.e., bounded), and no behaviour is specified for
            when a manifestNumber reaches the largest possible value
            (2<sup>159</sup>-1).  When that value is reached, some RP
            implementations will accept a new manifest for the CA only
            once the current manifest has expired, while others will
            not accept a new manifest at all.

      </t>
      <t indent="0" pn="section-1-3">

            While it is practically impossible for an issuer to reach
            the largest possible value under normal operating
            conditions (it would require that the issuer issue one
            manifest per second for 23,171,956,451,847,141,650,870
            quintillion years), there is still a chance that it could
            be reached due to bugs in the issuance or publication
            systems or incorrect/inadvertent use of those systems.
            For example:

      </t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-1-4">
        <li pn="section-1-4.1">Incrementing by large values when issuing
                manifests, such that the time to reach that largest
                value is reduced.</li>
        <li pn="section-1-4.2">Reissuing new manifests in an infinite delay-free
                loop, such that the manifestNumber increases by a
                large value in a comparatively short period of
                time.</li>
        <li pn="section-1-4.3">Inadvertently setting the manifestNumber to the
                largest possible value, such that the issuer will
                no longer be able to publish usable manifests for that
                repository.</li>
      </ul>
      <t indent="0" pn="section-1-5">

            These scenarios might also arise in combination and be more
            severe as a result.  For example, a CA might increase the
            manifestNumber by a large value on reissuance and also
            reissue the manifest more frequently than is necessary.

      </t>
      <t indent="0" pn="section-1-6">

            For a subordinate CA, the risk of repository invalidation
            due to such a problem can be addressed by the issuer
            using the key rollover process <xref target="RFC6489" format="default" sectionFormat="of" derivedContent="RFC6489"/>
            to get a new CA certificate.  RPs will treat this new certificate
            as though it represents a distinct CA; the manifestNumber
            can be reset at that point.

      </t>
      <t indent="0" pn="section-1-7">

            However, this option is not available for RPKI Trust
            Anchors (TAs).  If a TA publishes a manifest with the
            largest-possible manifestNumber value, then it is
            difficult to rely on the TA after that point, since
            (as described previously) some RPs will not accept a new manifest
            until the current one has expired, while others will
            reject all new manifests indefinitely.  Particularly in
            the case of TAs, the manifest validity period may be quite
            long, too.  Issuing a new TA and distributing the
            associated Trust Anchor Locator (TAL) <xref target="RFC8630" format="default" sectionFormat="of" derivedContent="RFC8630"/>
            to clients would involve a large amount of work for TA operators
            and RPs.  Additionally, depending on the RP implementation being used,
            there would be a limited degree of RPKI protection by way of that TA for
            the time between the issuance of the problematic manifest
            and the installation of the new TAL.

      </t>
      <t indent="0" pn="section-1-8">

            In order to avoid these problems, this document updates <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/>
            by defining how issuers and RPs can handle this scenario in order
            to facilitate ongoing use of an affected repository.

      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="manifest-number-handling" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-manifest-number-handling">Manifest Number Handling</name>
      <t indent="0" pn="section-2-1">

            For a given CA, an RP <bcp14>MUST NOT</bcp14> reject a new manifest
            issued by that CA on the basis of it not having a higher
            manifestNumber than a previously validated manifest if the
            new manifest has a different filename from that of the
            previously validated manifest.  In other words, an RP has to
            reset its stored manifestNumber for a given CA if the CA
            changes the filename of its manifest.  This is an update
            to the requirements set out in <xref target="RFC9286" sectionFormat="of" section="4.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9286#section-4.2.1" derivedContent="RFC9286"/>.

      </t>
      <t indent="0" pn="section-2-2">

            With this behaviour, it is possible for a CA to be
            configured such that, any time it issues a new manifest, it
            uses a new filename for that manifest.  If a CA were
            configured in this way, the manifestNumber validation set
            out in <xref target="RFC9286" sectionFormat="of" section="4.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9286#section-4.2.1" derivedContent="RFC9286"/> would have no purpose.  To avoid this
            outcome, CAs <bcp14>SHOULD NOT</bcp14> use new filenames for manifests
            except in situations where such a change is necessary to
            address the invalidity problem described in this document.
            Similarly, an RP <bcp14>MUST</bcp14> alert its operators when a
            manifest filename changes for a given CA.

      </t>
      <t anchor="replay" indent="0" pn="section-2-3">

            <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/> requires that RPs perform two
      replay-related checks on newly retrieved manifests:</t>
      <ol indent="adaptive" spacing="normal" start="1" type="1" pn="section-2-4">
	<li pn="section-2-4.1" derivedCounter="1.">Check that the purported new manifest has a greater
        manifestNumber than the cached manifest, and</li>
        <li pn="section-2-4.2" derivedCounter="2.">Check that the purported new manifest has a more recent
        thisUpdate than the cached manifest.</li>
      </ol>
      <t indent="0" pn="section-2-5">An RP that
            implements the behaviour in this section will momentarily
            omit the manifestNumber check following a manifest
            filename change.  So long as the RP still performs the
            second check described above, it will be protected against
            replay attacks.

      </t>
    </section>
    <section anchor="manifest-filenames" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-manifest-filenames">Manifest Filenames</name>
      <t indent="0" pn="section-3-1">

            A CA specifies its manifest URI by way of a Subject Information Access (SIA) entry
            with an accessMethod of id-ad-rpkiManifest (<xref target="RFC6487" section="4.8.8.1" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc6487#section-4.8.8.1" derivedContent="RFC6487"/>).  For the purposes of this document,
            the manifest filename is the final segment of the path of
            the accessLocation URI from that SIA entry.

      </t>
      <t indent="0" pn="section-3-2">

            <xref target="RFC6487" sectionFormat="of" section="4.8.8.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6487#section-4.8.8.1" derivedContent="RFC6487"/> states that a CA may include in its
            certificate multiple id-ad-rpkiManifest SIA entries.  For
            comparisons, an RP may use the filename from any one of
            the id-ad-rpkiManifest SIA entries in the
            previously validated CA certificate.  If that filename
            does not appear in any of the id-ad-rpkiManifest SIA
            entries in the CA certificate that is currently being
            validated, then the manifest filename has changed for the
            purposes of this document.

      </t>
      <t indent="0" pn="section-3-3">

            The corollary of the behaviour defined in the previous
            paragraph is that a CA that includes multiple
            id-ad-rpkiManifest SIA entries in its certificate and
            wants to rely on the behaviour defined in this document
            <bcp14>MUST</bcp14> ensure that none of the manifest filenames in the
            previous CA certificate appear in the newly issued CA
            certificate.  If one of the manifest filenames from the
            previous CA certificate appears in the newly issued CA
            certificate, then an RP that is using that manifest
            filename for comparisons will determine that the manifest
            filename for the CA has not changed and will therefore
            not reset its stored manifestNumber for the CA. 

      </t>
    </section>
    <section anchor="manifest-sia-check" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-manifest-sia-verification">Manifest SIA Verification</name>
      <t indent="0" pn="section-4-1">

            To avoid certain forms of replay attack, RPs <bcp14>MUST</bcp14> verify
            that the URI in the accessLocation in one of the
            id-ad-signedObject accessMethod instances in the
            manifest's SIA extension
            exactly matches the URI presented in the RPKI Repository
            Delta Protocol (RRDP) <xref target="RFC8182" format="default" sectionFormat="of" derivedContent="RFC8182"/> "publish"
            element or the path presented by remote rsync servers.  If
            this verification check is unsuccessful, then the fetch
            has failed, and the RP <bcp14>MUST</bcp14> proceed per <xref target="RFC9286" sectionFormat="of" section="6.6" format="default" derivedLink="https://rfc-editor.org/rfc/rfc9286#section-6.6" derivedContent="RFC9286"/>.

      </t>
    </section>
    <section anchor="rfc8488" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-comparison-with-rfc-8488">Comparison with RFC 8488</name>
      <t indent="0" pn="section-5-1">

            <xref target="RFC8488" sectionFormat="of" section="3.2.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8488#section-3.2.1" derivedContent="RFC8488"/> describes a manifest-selection approach
            for RPs that involves collecting all unexpired valid
            manifests for a CA and then selecting from that
            collection the manifest that has the highest
            manifestNumber.  The approach set out in this document is
            different from that approach.

      </t>
    </section>
    <section anchor="general-repository-handling" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-general-repository-handling">General Repository Handling</name>
      <t indent="0" pn="section-6-1">

            <xref target="manifest-number-handling" format="default" sectionFormat="of" derivedContent="Section 2"/> contains a
            specific update to <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/> for the
            handling of manifest numbers, in order to address one
            potential permanent invalidity scenario.  RPs that
            encounter other permanent invalidity scenarios should also
            consider how those can be addressed such that the scenario
            does not require the relevant CA or TA to perform a key
            rollover operation.  For example, in the event that an RP
            recognises that a permanent invalidity scenario has
            occurred, the RP could alert the operator and provide an
            option to the operator to stop relying on cached data for
            the affected repository so that the CA can rectify the
            problem.

      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-operational-considerations">Operational Considerations</name>
      <t indent="0" pn="section-7-1">

            CA software may opt to support the manifest number reset
            functionality in various ways.  For example, it could
            change the manifest filename when the manifestNumber
            reaches a certain threshold, or it could alert the
            operator in this scenario and request confirmation that
            the filename should be changed.

      </t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">

            The RPKI primarily exists to support and improve security
            of the global Internet routing system.  Reliability
            improvements to the RPKI itself, such as outlined in this
            document, strengthen its dependability (see <xref target="RFC6480" section="8" format="default" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc6480#section-8" derivedContent="RFC6480"/>).

      </t>
      <t indent="0" pn="section-8-2">

            See <xref target="replay" format="default" sectionFormat="of" derivedContent="Section 2, Paragraph 3"/> regarding the effect of
            skipping the manifestNumber check with respect to replay
            attacks.  To protect against replay attacks in the absence
            of this check, RPs should ensure that they are verifying
            the thisUpdate value per the requirements of <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/>.

      </t>
      <t indent="0" pn="section-8-3">

            <xref target="manifest-sia-check" format="default" sectionFormat="of" derivedContent="Section 4"/> describes an
            additional protection against certain forms of replay
            attack.

      </t>
      <t indent="0" pn="section-8-4">

            Although this document updates <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/>,
            the security considerations from <xref target="RFC9286" format="default" sectionFormat="of" derivedContent="RFC9286"/>
            remain relevant.

      </t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-9-1">
This document has no IANA actions.      </t>
    </section>
  </middle>
  <back>
    <references pn="section-10">
      <name slugifiedName="name-references">References</name>
      <references pn="section-10.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC6487" target="https://www.rfc-editor.org/info/rfc6487" quoteTitle="true" derivedAnchor="RFC6487">
          <front>
            <title>A Profile for X.509 PKIX Resource Certificates</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <author fullname="R. Loomans" initials="R." surname="Loomans"/>
            <date month="February" year="2012"/>
            <abstract>
              <t indent="0">This document defines a standard profile for X.509 certificates for the purpose of supporting validation of assertions of "right-of-use" of Internet Number Resources (INRs). The certificates issued under this profile are used to convey the issuer's authorization of the subject to be regarded as the current holder of a "right-of-use" of the INRs that are described in the certificate. This document contains the normative specification of Certificate and Certificate Revocation List (CRL) syntax in the Resource Public Key Infrastructure (RPKI). This document also specifies profiles for the format of certificate requests and specifies the Relying Party RPKI certificate path validation procedure. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6487"/>
          <seriesInfo name="DOI" value="10.17487/RFC6487"/>
        </reference>
        <reference anchor="RFC6488" target="https://www.rfc-editor.org/info/rfc6488" quoteTitle="true" derivedAnchor="RFC6488">
          <front>
            <title>Signed Object Template for the Resource Public Key Infrastructure (RPKI)</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="A. Chi" initials="A." surname="Chi"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="February" year="2012"/>
            <abstract>
              <t indent="0">This document defines a generic profile for signed objects used in the Resource Public Key Infrastructure (RPKI). These RPKI signed objects make use of Cryptographic Message Syntax (CMS) as a standard encapsulation format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6488"/>
          <seriesInfo name="DOI" value="10.17487/RFC6488"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8182" target="https://www.rfc-editor.org/info/rfc8182" quoteTitle="true" derivedAnchor="RFC8182">
          <front>
            <title>The RPKI Repository Delta Protocol (RRDP)</title>
            <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
            <author fullname="O. Muravskiy" initials="O." surname="Muravskiy"/>
            <author fullname="B. Weber" initials="B." surname="Weber"/>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <date month="July" year="2017"/>
            <abstract>
              <t indent="0">In the Resource Public Key Infrastructure (RPKI), Certificate Authorities (CAs) publish certificates, including end-entity certificates, Certificate Revocation Lists (CRLs), and RPKI signed objects to repositories. Relying Parties retrieve the published information from those repositories. This document specifies a new RPKI Repository Delta Protocol (RRDP) for this purpose. RRDP was specifically designed for scaling. It relies on an Update Notification File which lists the current Snapshot and Delta Files that can be retrieved using HTTPS (HTTP over Transport Layer Security (TLS)), and it enables the use of Content Distribution Networks (CDNs) or other caching infrastructures for the retrieval of these files.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8182"/>
          <seriesInfo name="DOI" value="10.17487/RFC8182"/>
        </reference>
        <reference anchor="RFC9286" target="https://www.rfc-editor.org/info/rfc9286" quoteTitle="true" derivedAnchor="RFC9286">
          <front>
            <title>Manifests for the Resource Public Key Infrastructure (RPKI)</title>
            <author fullname="R. Austein" initials="R." surname="Austein"/>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <date month="June" year="2022"/>
            <abstract>
              <t indent="0">This document defines a "manifest" for use in the Resource Public Key Infrastructure (RPKI). A manifest is a signed object (file) that contains a listing of all the signed objects (files) in the repository publication point (directory) associated with an authority responsible for publishing in the repository. For each certificate, Certificate Revocation List (CRL), or other type of signed objects issued by the authority that are published at this repository publication point, the manifest contains both the name of the file containing the object and a hash of the file content. Manifests are intended to enable a relying party (RP) to detect certain forms of attacks against a repository. Specifically, if an RP checks a manifest's contents against the signed objects retrieved from a repository publication point, then the RP can detect replay attacks, and unauthorized in-flight modification or deletion of signed objects. This document obsoletes RFC 6486.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9286"/>
          <seriesInfo name="DOI" value="10.17487/RFC9286"/>
        </reference>
      </references>
      <references pn="section-10.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC6480" target="https://www.rfc-editor.org/info/rfc6480" quoteTitle="true" derivedAnchor="RFC6480">
          <front>
            <title>An Infrastructure to Support Secure Internet Routing</title>
            <author fullname="M. Lepinski" initials="M." surname="Lepinski"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="February" year="2012"/>
            <abstract>
              <t indent="0">This document describes an architecture for an infrastructure to support improved security of Internet routing. The foundation of this architecture is a Resource Public Key Infrastructure (RPKI) that represents the allocation hierarchy of IP address space and Autonomous System (AS) numbers; and a distributed repository system for storing and disseminating the data objects that comprise the RPKI, as well as other signed objects necessary for improved routing security. As an initial application of this architecture, the document describes how a legitimate holder of IP address space can explicitly and verifiably authorize one or more ASes to originate routes to that address space. Such verifiable authorizations could be used, for example, to more securely construct BGP route filters. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6480"/>
          <seriesInfo name="DOI" value="10.17487/RFC6480"/>
        </reference>
        <reference anchor="RFC6481" target="https://www.rfc-editor.org/info/rfc6481" quoteTitle="true" derivedAnchor="RFC6481">
          <front>
            <title>A Profile for Resource Certificate Repository Structure</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="R. Loomans" initials="R." surname="Loomans"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <date month="February" year="2012"/>
            <abstract>
              <t indent="0">This document defines a profile for the structure of the Resource Public Key Infrastructure (RPKI) distributed repository. Each individual repository publication point is a directory that contains files that correspond to X.509/PKIX Resource Certificates, Certificate Revocation Lists and signed objects. This profile defines the object (file) naming scheme, the contents of repository publication points (directories), and a suggested internal structure of a local repository cache that is intended to facilitate synchronization across a distributed collection of repository publication points and to facilitate certification path construction. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6481"/>
          <seriesInfo name="DOI" value="10.17487/RFC6481"/>
        </reference>
        <reference anchor="RFC6489" target="https://www.rfc-editor.org/info/rfc6489" quoteTitle="true" derivedAnchor="RFC6489">
          <front>
            <title>Certification Authority (CA) Key Rollover in the Resource Public Key Infrastructure (RPKI)</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="February" year="2012"/>
            <abstract>
              <t indent="0">This document describes how a Certification Authority (CA) in the Resource Public Key Infrastructure (RPKI) performs a planned rollover of its key pair. This document also notes the implications of this key rollover procedure for relying parties (RPs). In general, RPs are expected to maintain a local cache of the objects that have been published in the RPKI repository, and thus the way in which a CA performs key rollover impacts RPs. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="174"/>
          <seriesInfo name="RFC" value="6489"/>
          <seriesInfo name="DOI" value="10.17487/RFC6489"/>
        </reference>
        <reference anchor="RFC8488" target="https://www.rfc-editor.org/info/rfc8488" quoteTitle="true" derivedAnchor="RFC8488">
          <front>
            <title>RIPE NCC's Implementation of Resource Public Key Infrastructure (RPKI) Certificate Tree Validation</title>
            <author fullname="O. Muravskiy" initials="O." surname="Muravskiy"/>
            <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
            <date month="December" year="2018"/>
            <abstract>
              <t indent="0">This document describes an approach to validating the content of the Resource Public Key Infrastructure (RPKI) certificate tree, as it is implemented in the RIPE NCC RPKI Validator. This approach is independent of a particular object retrieval mechanism, which allows it to be used with repositories available over the rsync protocol, the RPKI Repository Delta Protocol (RRDP), and repositories that use a mix of both.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8488"/>
          <seriesInfo name="DOI" value="10.17487/RFC8488"/>
        </reference>
        <reference anchor="RFC8630" target="https://www.rfc-editor.org/info/rfc8630" quoteTitle="true" derivedAnchor="RFC8630">
          <front>
            <title>Resource Public Key Infrastructure (RPKI) Trust Anchor Locator</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="G. Michaelson" initials="G." surname="Michaelson"/>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="T. Bruijnzeels" initials="T." surname="Bruijnzeels"/>
            <date month="August" year="2019"/>
            <abstract>
              <t indent="0">This document defines a Trust Anchor Locator (TAL) for the Resource Public Key Infrastructure (RPKI). The TAL allows Relying Parties in the RPKI to download the current Trust Anchor (TA) Certification Authority (CA) certificate from one or more locations and verify that the key of this self-signed certificate matches the key on the TAL. Thus, Relying Parties can be configured with TA keys but can allow these TAs to change the content of their CA certificate. In particular, it allows TAs to change the set of IP Address Delegations and/or Autonomous System Identifier Delegations included in the extension(s) (RFC 3779) of their certificate.</t>
              <t indent="0">This document obsoletes the previous definition of the TAL as provided in RFC 7730 by adding support for Uniform Resource Identifiers (URIs) (RFC 3986) that use HTTP over TLS (HTTPS) (RFC 7230) as the scheme.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8630"/>
          <seriesInfo name="DOI" value="10.17487/RFC8630"/>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1"> The authors would like to thank <contact fullname="Theo Buehler"/>,
      <contact fullname="Ben Maddison"/>, <contact fullname="Rob Austein"/>,
      <contact fullname="Tim Bruijnzeels"/>, <contact fullname="Russ       Housley"/>, <contact fullname="Mohamed Boucadair"/>, <contact fullname="Luigi Iannone"/>, <contact fullname="Daniele Ceccarelli"/>,
      <contact fullname="Darren Dukes"/>, <contact fullname="Maria Ines Robles"/>,
      <contact fullname="Barry Leiba"/>, <contact fullname="Éric Vyncke"/>,
      <contact fullname="Gorry Fairhurst"/>, <contact fullname="Andy       Newton"/>, <contact fullname="Roman Danyliw"/>, <contact fullname="Mike       Bishop"/>, and <contact fullname="Deb Cooley"/> for their review and
      feedback on this document.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="T." surname="Harrison" fullname="Tom Harrison">
        <organization abbrev="APNIC" showOnFrontPage="true">Asia Pacific Network Information Centre</organization>
        <address>
          <postal>
            <street>6 Cordelia St</street>
            <city>South Brisbane</city>
            <code>4101</code>
            <country>Australia</country>
            <region>QLD</region>
          </postal>
          <email>tomh@apnic.net</email>
        </address>
      </author>
      <author fullname="George G. Michaelson" initials="G." surname="Michaelson">
        <organization abbrev="APNIC" showOnFrontPage="true">Asia-Pacific Network Information Centre</organization>
        <address>
          <postal>
            <street>6 Cordelia St</street>
            <city>South Brisbane</city>
            <region>QLD</region>
            <code>4101</code>
            <country>Australia</country>
          </postal>
          <email>ggm@apnic.net</email>
        </address>
      </author>
      <author fullname="Job Snijders" initials="J." surname="Snijders">
        <organization abbrev="BSD" showOnFrontPage="true">BSD Software Development</organization>
        <address>
          <postal>
            <postalLine>Amsterdam</postalLine>
            <postalLine>The Netherlands</postalLine>
          </postal>
          <email>job@bsd.nl</email>
          <uri>https://www.bsd.nl</uri>
        </address>
      </author>
    </section>
  </back>
</rfc>
