<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2560 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2560.xml">
<!ENTITY rfc3779 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3779.xml">
<!ENTITY rfc4193 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4193.xml">
<!ENTITY rfc5006 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5006.xml">
<!ENTITY rfc5280 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY rfc5781 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5781.xml">
<!ENTITY rfc6481 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6481.xml">
<!ENTITY rfc6484 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6484.xml">
<!ENTITY rfc6485 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6485.xml">
<!ENTITY rfc6489 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6489.xml">
<!ENTITY rfc6490 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6490.xml">
<!ENTITY rfc6492 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6492.xml">
<!ENTITY rfc6493 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6493.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<rfc category="std" docName="draft-ietf-sidr-algorithm-agility-08"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="RPKI Algorithm Agility">Algorithm Agility Procedure for
    RPKI.</title>

    <author fullname="Roque Gagliano" initials="R.G.M." surname="Gagliano">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>Avenue des Uttins 5</street>

          <city>Rolle</city>

          <region/>

          <code>1180</code>

          <country>Switzerland</country>
        </postal>

        <email>rogaglia@cisco.com</email>
      </address>
    </author>

    <author fullname="Stephen Kent" initials="S.K." surname="Kent">
      <organization>BBN Technologies</organization>

      <address>
        <postal>
          <street>10 Moulton St.</street>

          <city>Cambridge</city>

          <region>MA</region>

          <code>02138</code>

          <country>USA</country>
        </postal>

        <email>kent@bbn.com</email>
      </address>
    </author>

    <author fullname="Sean Turner" initials="S.T." surname="Turner">
      <organization>IECA, Inc.</organization>

      <address>
        <postal>
          <street>3057 Nutley Street, Suite 106</street>

          <city>Fairfax</city>

          <region>VA</region>

          <code>22031</code>

          <country>USA</country>
        </postal>

        <email>turners@ieca.com</email>
      </address>
    </author>

    <date month="October" year="2012"/>

    <abstract>
      <t>This document specifies the process that Certification Authorities
      (CAs) and Relying Parties (RPs) participating in the Resource Public Key
      Infrastructure (RPKI) will need to follow to transition to a new (and
      probably cryptographically stronger) algorithm set. The process is
      expected to be completed in a time scale of months or years.
      Consequently, no emergency transition is specified. The transition
      procedure defined in this document supports only a top-down migration
      (parent migrates before children).</t>
    </abstract>
  </front>

  <middle>
    <section title="Requirements notation">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"/>.</t>
    </section>

    <section title="Introduction">
      <t>The RPKI must accommodate transitions between the public keys used by
      CAs. Transitions of this sort are usually termed &ldquo;key
      rollover&rdquo;. Planned key rollover will occur at regular intervals
      throughout the life of the RPKI, as each CA changes its public keys, in
      a non-coordinated fashion. (By non-coordinated we mean that the time at
      which each CA elects to change its keys is locally determined, not
      coordinated across the RPKI.) Moreover, because a key change might be
      necessitated by suspected private key compromise, one can never assume
      coordination of these events among all of the CAs in the RPKI. In an
      emergency key rollover, the old certificate is revoked and a new
      certificate with a new key is issued. The mechanisms to perform a key
      rollover in RPKI (either planned or in an emergency), while maintaining
      the same algorithm suite, are covered in <xref target="RFC6489"/>.</t>

      <t>This document describes the mechanism to perform a key rollover in
      RPKI due to the migration to a new signature algorithm suite. A
      signature algorithm suite encompasses both a signature algorithm (with a
      specified key size range) and a one-way hash algorithm. It is
      anticipated that the RPKI will require the adoption of updated key sizes
      and/or different algorithm suites over time. This document treats the
      adoption of a new hash algorithm while retaining the current signature
      algorithm as equivalent to an algorithm migration, and requires the CA
      to change its key. Migration to a new algorithm suite will be required
      in order to maintain an acceptable level of cryptographic security and
      protect the integrity of certificates, CRLs and signed objects in the
      RPKI. All of the data structures in the RPKI explicitly identify the
      signature and hash algorithms being used. However, experience has
      demonstrated that the ability to represent algorithm IDs is not
      sufficient to enable migration to new algorithm suites (algorithm
      agility). One also must ensure that protocols, infrastructure elements,
      and operational procedures also accommodate the migration from one
      algorithm suite to another. Algorithm migration is expected to be very
      infrequent and it will require support of a &ldquo;current&rdquo; and
      &ldquo;next&rdquo; suite for a prolonged interval, probably several
      years.</t>

      <t>This document defines how entities in the RPKI execute (planned) CA
      key rollover when the algorithm suite changes. The description covers
      actions by CAs, repository operators, and RPs. It describes the behavior
      required of both CAs and RPs to make such key changes work in the RPKI
      context, including how the RPKI repository system is used to support key
      rollover.</t>

      <t>This document does not specify any algorithm suite per se.&nbsp;The
      RPKI Certificate Policy (CP) <xref target="RFC6484"/> mandates the use
      of the algorithms defined in <xref target="RFC6485"/> by CAs and RPs.
      When an algorithm transition is initiated, <xref target="RFC6485"/> will
      be updated (as defined in Section 4.1 of this document) redefining the
      required algorithm(s) for compliant RPKI CAs and RPs under the CP. The
      CP will not change as a side effect of algorithm transition (and thus
      the policy OID in RPKI certificates will not change.)</t>

      <t>An additional document, the algorithm transition timetable, will be
      published (as an IETF BCP) to define the dates for each milestone
      defined in this document. It will define dates for the phase
      transitions, consistent with the descriptions provided in Section 4. It
      also will describe how the RPKI community will measure the readiness of
      CAs and RPs to transition to each phase. CAs publish certificates, CRLs,
      and other signed objects under the new algorithm suite as the transition
      progresses. This provides visibility into the deployment of the new
      algorithm suite, enabling the community to evaluate deployment progress.
      The transition procedure allows CAs to remove old certificates, CRLs,
      and signed products, after the twilight date. This provides an ability
      to observe and measure the withdrawal of the old algorithm suite. Thus
      the phases defined in this document enable the community to evaluate the
      progress of the transition. The timetable document will also describe
      procedures to amend the timetable if problems arise in implementing
      later phases of the transition. It is RECOMMENDED that the timetable
      document be developed by representatives of the RPKI community, e.g.,
      IANA, Internet Registries, and network operators.</t>
    </section>

    <section title="Terminology">
      <t>This document assumes that the reader is familiar with the terms and
      concepts described in "Internet X.509 Public Key Infrastructure
      Certificate and Certificate Revocation List (CRL) Profile" <xref
      target="RFC5280"/>, "X.509 Extensions for IP Addresses and AS
      Identifiers" <xref target="RFC3779"/>, and &ldquo;A Profile for Resource
      Certificate Repository Structure&rdquo; <xref target="RFC6481"/>.
      Additional terms and conventions used in examples are provided
      below.</t>

      <t><list hangIndent="12" style="hanging">
          <t hangText="Algorithm migration:">A planned transition from one
          signature and hash algorithm to a new signature and hash
          algorithm.</t>

          <t hangText="Algorithm Suite A:">The &ldquo;current&rdquo; algorithm
          suite used for hashing and signing, in examples in this document</t>

          <t hangText="Algorithm Suite B:">The &ldquo;next&rdquo; algorithm
          suite used for hashing and signing, used in examples in this
          document</t>

          <t hangText="Algorithm Suite C:">The &ldquo;old&rdquo; algorithm
          suite used for hashing and signing, used in examples in this
          document</t>

          <t hangText="CA X:">The CA that issued CA Y&rsquo;s certificate
          (i.e., CA Y&rsquo;s parent), used in examples in this document.</t>

          <t hangText="CA Y:">The non-leaf CA used in examples this
          document</t>

          <t hangText="CA Z:">A CA that is a &rdquo;child&rdquo; of CA Y, used
          in examples this document</t>

          <t hangText="Non-Leaf CA:">A CA that issues certificates to other
          CAs is a non-leaf CA.</t>

          <t hangText="Leaf CA:">A leaf CA is a CA that issues only EE
          certs.</t>

          <t hangText="PoP (proof of possession):">Execution of a protocol
          that demonstrates to an issuer that a subject requesting a
          certificate possesses the private key corresponding to the public
          key in the certificate request submitted by the subject.</t>

          <t hangText="Signed Product Set (or Set or Product Set):">A
          collection of certificates, signed objects, a CRL and a manifest
          that are associated by virtue of being verifiable under the same
          parent CA certificate</t>

          <t hangText="Correspond:">Two certificates, issued under different
          Algorithm Suites correspond to one another if they are issued to the
          same entity by the same CA and bind identical Internet Number
          Resoureces (INRs) to that entity. Two CRLs correspond if they are
          issued by the same CA and enumerate corresponding certificates. Two
          signed objects (other than manifests) correspond if they are
          verified using corresponding EE certificates and they contain the
          same encapsulated Context Info field. Two manifests correspond if
          they encompass corresponding certificates, ROAs, CRLs, and (other)
          signed objects (the term &ldquo;equivalent&rdquo; is used
          synonymously when referring to such RPKI signed products.)</t>
        </list></t>
    </section>

    <section anchor="KRsetp"
             title="Key Rollover steps for algorithm migration">
      <t>The &ldquo;current&rdquo; RPKI algorithm suite (Suite A) is defined
      in the RPKI CP document, by reference to <xref target="RFC6485"/>. When
      a migration of the RPKI algorithm suite is needed, the first step MUST
      be an update of <xref target="RFC6485"/> to define the new algorithm
      suite. The algorithm transition timeline document MUST also be published
      (as a BCP), to inform the community of the dates selected for milestones
      in the transition process, as described in <xref
      target="milestones"/>.</t>

      <section anchor="milestones" title="Milestones definition">
        <t><list hangIndent="12" style="hanging">
            <t hangText="CA Ready Algorithm B Date:">After this date, all
            (non-leaf) CAs MUST be ready to process a request from a child CA
            to issue a certificate under the Algorithm Suite B. All CAs
            publishing an <xref target="RFC6490"/> Trust Anchor Locator (TAL)
            for Algorithm Suite A, MUST also publish the correspondent TAL for
            Algorithm Suite B.</t>

            <t hangText="CA Go Algorithm B Date:">After this date, all CAs
            MUST have reissued all of their signed product sets under the
            Algorithm Suite B.</t>

            <t hangText="RP Ready Algorithm B Date:">After this date, all RPs
            MUST be prepared to process signed material issued under the
            Algorithm Suite B.</t>

            <t hangText="Twilight Date:">After this date, a CA MAY cease
            issuing signed products under the Algorithm Suite A. Also, after
            this date, a RP MAY cease to validate signed materials issued
            under the Algorithm Suite A.</t>

            <t hangText="End Of Life (EOL) Date:">After this date, the
            Algorithm Suite C is MUST be deprecated using the process in <xref
            target="deprecate"/> and all Algorithm Suite C TALs MUST be
            removed from their publication points.</t>
          </list></t>
      </section>

      <section title="Process overview">
        <t>The migration process described in this document involves a series
        of steps that MUST be executed in chronological order by CAs and RPs.
        The only milestone at which both CAs and RPs take action at the same
        time is the EOL Date. Due to the decentralized nature of the RPKI
        infrastructure, it is expected that an algorithm transition will span
        several years.</t>

        <t>In order to facilitate the transition, CAs will start issuing
        certificates using the Algorithm B in a hierarchical top-down fashion.
        In our example, CA Y will issue certificates using the Algorithm Suite
        B only after CA X has started to do so (CA Y Ready Algorithm B Date
        &gt; CA X Ready Algorithm B Date). This ordered transition avoids
        issuance of "mixed" suite CA certificates, e.g., a CA certificate
        signed using Suite A, containing a key from Suite B. In the RPKI, a CA
        MUST NOT sign a CA certificate carrying a subject key that corresponds
        to an algorithm suite that differs from the one used to sign the
        certificate. (X.509 accommodates such mixed algorithm certificates,
        but this process avoids using that capability.) A not top-down
        transition approach would require use of such mixed mode certificates,
        and would lead to exponential growth of the RPKI repository. Also,
        because the RPKI CP mandates Proof of Possession (PoP) for certificate
        requests, it is not possible for a CA to request a certificate for
        Algorithm Suite B, until its parent CA supports that Suite. (See
        Section 5 for more details.)</t>

        <t>The algorithm agility model described here does not prohibit a CA
        from issuing an EE certificate with a subject public key from a
        different algorithm suite, if that certificate is not used to verify
        repository objects. This exception to the mixed algorithm suite
        certificate rule is allowed because an EE certificate that is not used
        to verify repository objects does not interfere with the ability of
        RPs to download and verify repository content. As noted above, every
        CA in the RPKI is required to perform a PoP check for the subject
        public key when issuing a certificate. In general a subject cannot
        assume that a CA is capable of supporting a different algorithm.
        However, if the subject is closely affiliated with the CA, it is
        reasonable to assume that there are ways for the subject to know
        whether the CA can support a request to issue an EE certificate
        containing a specific, different public key algorithm. This document
        does not specify how a subject can determine whether a CA is capable
        of issuing a mixed suite EE certificate, because it anticipates that
        such certificates will be issued only in contexts where the subject
        and CA are sufficiently closely affiliated (for example, an ISP
        issuing certificates to devices that it manages).</t>

        <t>The following figure gives an overview of the process:</t>

        <figure align="left">
          <artwork><![CDATA[
Process for RPKI CAs:

  Phase 0    Phase 1   Phase 2             Phase 4  Phase 0
-----------x---------x-------------------x--------x-----------
  ^        ^         ^                   ^        ^
  |        |         |                   |        |
 (1)      (2)       (3)                 (5)      (6)

Process for RPKI RPs:

            Phase 0              Phase 3   Phase 4  Phase 0
-------------------------------x---------x--------x-----
  ^                            ^         ^        ^
  |                            |         |        |
 (1)                          (4)       (5)      (6)

(1) RPKI algorithm document is updated and the algorithm transition timeline document is issued
(2) CA Ready Algorithm B Date
(3) CA Go Algorithm B Date
(4) RP Ready Algorithm B Date
(5) Twilight Date
(6) End Of Live (EOL) Date
]]></artwork>
        </figure>

        <t>Each of these milestones is discussed in the next section when
        describing each phase of the transition process.</t>

        <t>Two situations have been identified that motivate pausing or
        rolling back the transition process. The first situation arises if the
        RPKI community is not ready to make the transition. For example, many
        CAs might not be prepared to issue signed products under Suite B, or
        many RPs might not be ready to process Suite B products. Under these
        circumstances, the timetable MUST be reissued, postponing the date for
        the phase in question, and pushing back the dates for later phases.
        The other situation arises if, during the transition, serious concerns
        arise about the security of the Suite B algorithms. Such concerns
        would motivate terminating the transition and rolling back signed
        products, i.e., reverting to Suite A. In this case the timetable MUST
        be republished, and the RPKI algorithm document MUST be superseded.
        The phase descriptions below allude to these two situations, as
        appropriate.</t>
      </section>

      <section anchor="phase0" title="Phase 0">
        <t>Phase 0 is the initial phase of the process, throughout this phase
        the algorithm suite A is the only supported algorithm suite in RPKI.
        This is also the steady state for the RPKI.</t>

        <t>The following figure illustrates the format used to describe signed
        objects in the repository. It reflects the algorithm suites in use,
        and shows the relationship between three CAs (X, Y, and Z) that form a
        chain.</t>

        <t>During Phase 0, CAs X, Y and Z are required to generate signed
        product sets using only the Algorithm Suite A. Also, RPs are required
        to validate signed product sets issued using only Algorithm Suite
        A.</t>

        <figure align="left">
          <artwork><![CDATA[
CA X-Certificate-Algorithm-Suite-A (Cert-XA)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-A (Cert-YA)
		|-> CA-Z-Certificate-Algorithm-Suite-A (Cert-ZA)
			|-> CA-Z-CRL-Algorithm-Suite-A (CRL-ZA)
			|-> CA-Z-Signed-Objects-Algorithm-Suite-A
		|-> CA-Y-CRL-Algorithm-Suite-A (CRL-YA)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-A	
	|-> CA-X-CRL-Algorithm-Suite-A (CRL-XA)
	|-> CA-X-Signed-Objects-Algorithm-Suite-A
]]></artwork>
        </figure>

        <t>Note: Cert-XA represent the certificate for CA X, that is signed
        using the algorithm suite A.</t>

        <section anchor="milestone1" title="Milestone 1">
          <t>The first milestone initiates the migration process. It updates
          <xref target="RFC6485"/> with the following definitions for the
          RPKI:</t>

          <t><list style="symbols">
              <t>Algorithm Suite A</t>

              <t>Algorithm Suite B</t>
            </list></t>

          <t>Additionally, the new algorithm transition timeline document will
          be published with the following information:</t>

          <t><list style="symbols">
              <t>CA Ready Algorithm B Date</t>

              <t>CA Go Algorithm B Date</t>

              <t>RP Ready Algorithm B Date</t>

              <t>Twilight Date</t>

              <t>EOL Date</t>

              <t>Readiness metrics for CAs and RPs in each phase</t>
            </list></t>

          <t>Each date specified here is assumed at one minute after midnight,
          UTC. No finer granularity time specification is required or
          supported.</t>
        </section>
      </section>

      <section title="Phase 1">
        <t>Phase 1 starts at the CA Ready Algorithm B Date. During Phase 1,
        all (non-leaf) CAs MUST be ready to process a request from a child CA
        to issue or revoke a certificate using the Algorithm Suite B. If it is
        determined that a substantial number of CAs are not ready, the
        algorithm transition timeline document will be reissued, as noted in
        Section 4.2. However, CAs that are capable of issuing Suite B
        certificates may continue to do so, if requested by their child CAs.
        Since this phase does not require any RPs to process signed objects
        under Suite B, and since Suite B product sets SHOULD be stored at
        independent publication points, there is no adverse impact on RPs. If
        the Suite B algorithm is deemed unsuitable, the algorithm transition
        timeline and the algorithm specification documents MUST be replaced,
        the Algorithm Suite B MUST be deprecated using the process described
        in <xref target="deprecate"/>.</t>

        <t>As the transition will happen using a (hierarchic) top-down model,
        a child CA will be able to issue certificates using the Algorithm
        Suite B only after its parent CA has issued its own. The RPKI
        provisioning protocol can identify if a parent CA is capable of
        issuing certificates using the Algorithm Suite B, and can identify the
        corresponding algorithm suite in each Certificate Signing Request (see
        <xref target="sync"/>). During much of this phase the Suite B product
        tree will be incomplete, i.e., not all CAs will have issued products
        under Suite B. Thus for production purposes, RPs MUST fetch and
        validate only Suite A products. Suite B products should be fetched and
        processed only for testing purposes.</t>

        <t>The following figure shows the status of repository entries for the
        three example CAs during this Phase. Two distinct certificate chains
        are maintained and CA Z has not yet requested any material using the
        Algorithm Suite B.</t>

        <figure align="left">
          <artwork><![CDATA[
CA X-Certificate-Algorithm-Suite-A (Cert-XA)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-A (Cert-YA)
		|-> CA-Z-Certificate-Algorithm-Suite-A (Cert-ZA)
			|-> CA-Z-CRL-Algorithm-Suite-A (CRL-ZA)
			|-> CA-Z-Signed-Objects-Algorithm-Suite-A
		|-> CA-Y-CRL-Algorithm-Suite-A (CRL-YA)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-A	
	|-> CA-X-CRL-Algorithm-Suite-A (CRL-XA)
	|-> CA-X-Signed-Objects-Algorithm-Suite-A	
				
CA X-Certificate-Algorithm-Suite-B (Cert-XB)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-B (Cert-YB)
		|-> CA-Y-CRL-Algorithm-Suite-B (CRL-YB)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-B	
	|-> CA-X-CRL-Algorithm-Suite-B (CRL-XB)
	|-> CA-X-Signed-Objects-Algorithm-Suite-B	
]]></artwork>
        </figure>
      </section>

      <section title="Phase 2">
        <t>Phase 2 starts at the CA Go Algorithm B Date. At the start of this
        phase, each signed product set MUST be available using both Algorithm
        Suite A and Algorithm Suite B. Thus, prior to the start of this phase,
        every CA MUST ensure that there is a Suite B product corresponding to
        each Suite A product that the CA has issued. Throughout this Phase,
        each CA MUST maintain this correspondence. During this phase, RPs MUST
        be prepared to validate sets issued using Algorithm Suite A and MAY be
        prepared to validate sets issued using the Algorithm Suite B.</t>

        <t>If it is determined that a substantial number of CAs are not ready,
        the algorithm transition timeline document will be reissued, as noted
        in Section 4.2. (Since the processing requirement for RPs here is a
        MAY, if RPs have problems with Suite B products this does not require
        pushing back the Phase 2 milestone, but it does motivate delaying the
        start of Phase 3.) CAs that are capable of publishing products under
        Suite B MAY continue to do so. Phase 2, like Phase 1, does not require
        any RPs to process signed objects under Suite B. Also, Suite B product
        SHOULD be stored at independent publication points, so there is no
        adverse impact on RPs that are not prepared to process suite B
        products. If the Suite B algorithm is deemed unsuitable, the algorithm
        transition timeline and the algorithm specification documents MUST be
        replaced and the Algorithm Suite B MUST be deprecated using the
        process described in <xref target="deprecate"/>.</t>

        <t>It is RECOMMENDED that RPs that can process Algorithm Suite B fetch
        and validate Suite B products. RPs that are not ready to process Suite
        B products MUST continue to make use of Suite A products. An RP that
        elects to validate signed product sets using both Algorithm Suite A or
        Algorithm Suite B should expect the same results. If there are
        discrepancies when evaluating corresponding signed product sets,
        successful validation of either product set is acceptable. A detailed
        analysis of the validation of multiple instances of signed objects is
        included in <xref target="multi"/>.</t>

        <t>The following figure shows the status of the repository entries for
        the three example CAs throughout this phase, where all signed objects
        are available using both algorithm suites.</t>

        <figure align="left">
          <artwork><![CDATA[
CA X-Certificate-Algorithm-Suite-A (Cert-XA)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-A (Cert-YA)
		|-> CA-Z-Certificate-Algorithm-Suite-A (Cert-ZA)
			|-> CA-Z-CRL-Algorithm-Suite-A (CRL-ZA)
			|-> CA-Z-Signed-Objects-Algorithm-Suite-A
		|-> CA-Y-CRL-Algorithm-Suite-A (CRL-YA)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-A	
	|-> CA-X-CRL-Algorithm-Suite-A (CRL-XA)
	|-> CA-X-Signed-Objects-Algorithm-Suite-A	
				
CA X-Certificate-Algorithm-Suite-B (Cert-XB)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-B (Cert-YB)
		|-> CA-Z-Certificate-Algorithm-Suite-B (Cert-ZB)
			|-> CA-Z-CRL-Algorithm-Suite-B (CRL-ZB)
			|-> CA-Z-Signed-Objects-Algorithm-Suite-B
		|-> CA-Y-CRL-Algorithm-Suite-B (CRL-YB)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-B	
	|-> CA-X-CRL-Algorithm-Suite-B (CRL-XB)
	|-> CA-X-Signed-Objects-Algorithm-Suite-B
]]></artwork>
        </figure>
      </section>

      <section title="Phase 3">
        <t>Phase 3 starts at the RP Ready Algorithm B Date. During this phase,
        all signed product sets are available using both algorithm suites and
        all RPs MUST be able to validate them. (The correspondence between
        Suite A and Suite B products was required for Phase 2, and maintained
        throughout that Phase. The same requirements apply throughout this
        Phase.) It is RECOMMENDED that, in preparation for Phase 4, RPs
        retrieve and process Suite B product sets first, and treat them as the
        preferred product sets for validation throughout this phase. Thus an
        RP SHOULD try to validate the sets of signed products retrieved from
        the Algorithm Suite B repository first.</t>

        <t>If a substantial number of RPs are unable to process product sets
        signed with Suite B, the algorithm transition timeline document MUST
        be reissued, pushing back the date for this and later milestones, as
        discussed in Section 4.2. Since the Suite B products SHOULD be
        published at distinct publication points, RPs that cannot process
        Suite B products can be expected to revert to the Suite A products
        that still exist. If the Suite B algorithm is deemed unsuitable, the
        algorithm transition timeline and the algorithm specification
        documents MUST be replaced and the Algorithm Suite B MUST be
        deprecated using the process described in <xref
        target="deprecate"/>.</t>

        <t>There are no changes to the CA behavior throughout this phase.</t>
      </section>

      <section title="Phase 4">
        <t>Phase 4 starts at the Twilight Date. At that date, the Algorithm A
        is labeled as &ldquo;old&rdquo; and the Algorithm B is labeled as
        &ldquo;current&rdquo;:</t>

        <figure align="left">
          <artwork><![CDATA[
Before Twilight			--> 	After Twilight

Algorithm Suite A ("current")	-->	Algorithm Suite C ("old")
Algorithm Suite B ("new")	-->	Algorithm Suite A ("current")
]]></artwork>
        </figure>

        <t>During this phase, all signed product sets MUST be issued using
        Algorithm Suite A (formerly B) and MAY be issued using Algorithm Suite
        C (formerly A). All signed products sets issued using Suite A MUST be
        published at their corresponding publication points. Signed products
        sets issued using Suite C might not be available at their
        corresponding publication points. Every RP MUST validate&nbsp;signed
        product sets using Suite A. RPs MAY validate signed product sets using
        Suite C. However,&nbsp;RPs SHOULD NOT assume that the collection of
        Suite C product sets is complete. Thus RPs SHOULD make use of only
        Suite A products sets. (See Section 6 for further details.)</t>

        <t>If it is determined that many RPs are not capable of processing the
        new algorithm suite, the algorithm transition timeline document MUST
        be reissued pushing back the date for this and the next milestone. The
        document MUST require CA to not remove Suite C product sets if this
        phase is delayed. If the Algorithm Suite A (former Algorithm Suite B)
        is deemed unsuitable, the algorithm transition timeline and the
        algorithm specification documents MUST be replaced and the Algorithm
        Suite A MUST be deprecated using the process described in <xref
        target="deprecate"/>. At this stage, RPs are still capable of
        processing Suite C signed products, so the RPKI is still viable.</t>

        <t>The following figure describes a possible status for the
        repositories of the example CAs.</t>

        <figure align="left">
          <artwork><![CDATA[
CA X-Certificate-Algorithm-Suite-C (Cert-XC)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-C (Cert-YC)
		|-> CA-Y-CRL-Algorithm-Suite-C (CRL-YC)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-C	
	|-> CA-X-CRL-Algorithm-Suite-C (CRL-XC)
	|-> CA-X-Signed-Objects-Algorithm-Suite-C
	
CA X-Certificate-Algorithm-Suite-A (Cert-XA)
	|
	|-> CA-Y-Certificate-Algorithm-Suite-A (Cert-YA)
		|-> CA-Z-Certificate-Algorithm-Suite-A (Cert-ZA)
			|-> CA-Z-CRL-Algorithm-Suite-A (CRL-ZA)
			|-> CA-Z-Signed-Objects-Algorithm-Suite-A
		|-> CA-Y-CRL-Algorithm-Suite-A (CRL-YA)
		|-> CA-Y-Signed-Objects-Algorithm-Suite-A	
	|-> CA-X-CRL-Algorithm-Suite-A (CRL-XA)
	|-> CA-X-Signed-Objects-Algorithm-Suite-A		

]]></artwork>
        </figure>
      </section>

      <section title="Return to Phase 0">
        <t>The EOL Date triggers the return to Phase 0 (steady state). At this
        point, the Algorithm Suite C MUST be deprecated using the process
        described in <xref target="deprecate"/>.</t>

        <t>This phase closes the loop as Algorithm Suite A is the only
        required algorithm suite in RPKI.</t>

        <t>If it is determined that many RPs are not capable of processing the
        new algorithm suite, the algorithm transition timeline document MUST
        be reissued pushing back the date for this milestone.</t>
      </section>
    </section>

    <section anchor="sync"
             title="Multi Algorithm support in the RPKI provisioning protocol">
      <t>The migration described in this document is a top-down process, where
      two synchronization issues need to be solved between child and parent
      CAs: <list style="symbols">
          <t>A child CA needs to identify which algorithm suites are supported
          by its parent CA</t>

          <t>A child CA needs to signal which algorithm suite should be used
          by its parent CA to sign a Certificate Signing Request (CSR)</t>
        </list></t>

      <t>The RPKI provisioning protocol <xref target="RFC6492"/> supports
      multiple algorithms suites by implementing different resource classes
      for each suite. Several different resource classes also may use the same
      algorithm suite for different resource sets.</t>

      <t>A child CA that wants to identify which algorithm suites are
      supported by its parent CA MUST perform the following tasks: <list
          style="numbers">
          <t>Establish a provisioning protocol session with its parent CA</t>

          <t>Perform a "list" command as described in Section 3.3.1 of <xref
          target="RFC6492"/></t>

          <t>From the Payload in the "list response" resource class, extract
          the "issuer's certificate" for each class. The Algorithm Suite for
          each class will match the Algorithm Suite used to issue the
          corresponding "issuer's certificate" (as specified in the
          SubjectPublicKeyInfo field of that certificate)</t>
        </list></t>

      <t>A child CA that wants to specify an Algorithm Suite to its parent CA
      (e.g., in a certificate request) MUST perform the following tasks: <list
          style="numbers">
          <t>Perform the tasks described above to identify the algorithm
          suites supported by its parent CA, and the resource class
          corresponding to each suite</t>

          <t>Identify the corresponding resource class in the appropriate
          provisioning protocol command (e.g. "issue" or "revoke")</t>
        </list></t>

      <t>Upon receipt of a certificate request from a child CA, a parent CA
      will verify the PoP of the private key. If a child CA requests issuing a
      certificate using an algorithm suite that does not match a resource
      class, the PoP validation will fail and the request will not be
      performed.</t>
    </section>

    <section anchor="multi"
             title="Validation of multiple instance of signed products">
      <t>During Phases 1,2,3 and 4, two algorithm suites will be valid
      simultaneously in RPKI. In this section, we describe the RP behavior
      when validating corresponding signed products using different algorithm
      suites.</t>

      <t>During Phase 1 two (corresponding) instances MAY be available for
      each signed product, one signed under Algorithm Suite A and one under
      Algorithm Suite B. As noted in Section 4.4, in this phase there is a
      preference for Suite A product sets. All products are available under
      Suite A, while only some products may be available under Suite B. For
      production purposes an RP MAY fetch and validate only Suite A products.
      Suite B products SHOULD be fetched and validated only for test purposes.
      When product sets exist under both Suites, they should yield equivalent
      results, which facilitates testing. (It is not possible to directly
      compare Suite A and Suite B product sets, as certs, CRLs, and manifests
      will appear syntactically different. However, the output of the process,
      i.e., the ROA payloads (ASN and prefix data), SHOULD match, modulo
      timing issues.)</t>

      <t>During Phases 2 and 3 of this process, two (corresponding) instances
      of all signed products MUST be available to RPs. As noted in Section
      4.5, it is RECOMMENDED that Suite B capable RPs fetch and validate Suite
      B products sets, during Phase 2. If an RP encounters validation problems
      with the Suite B products, it SHOULD revert to using Suite A products.
      RPs that are Suite B capable MAY fetch both product sets and compare the
      results (e.g., ROA outputs) for testing.</t>

      <t>In Phase 3 all RPs MUST be Suite B capable, and MUST fetch Suite B
      product sets. If an RP encounters problems with Suite B product sets, it
      can revert to Suite A products. RPs encountering such problems SHOULD
      contact the relevant repository maintainers (e.g., using the mechanism
      defined in <xref target="RFC6493"/> to report problems.)</t>

      <t>During Phase 4 only Suite A (previously Suite B) product sets are
      required to be present for all RPKI entities, as per Section 4.7. Thus
      RPs SHOULD retrieve and validate only these product sets. Retrieval of
      Suite C (old Suite A) products sets may yield an incomplete set of
      signed products and is NOT RECOMMENDED.</t>
    </section>

    <section title="Revocation">
      <t>The algorithm migration process mandates the maintenance of two&nbsp;
      parallel but equivalent certification hierarchies during Phases 2 and 3
      of the process. During these phases, a CA MUST revoke and request
      revocation of certificates consistently under both algorithm Suites.
      When not performing a key rollover operation (as described in Section
      8), a CA requesting the revocation of its certificate during these two
      phases MUST perform that request for both algorithm suites (A and B). A
      non-leaf CA SHOULD NOT verify that its child CAs comply with this
      requirement. Note that a CA MUST request revocation of its certificate
      relative to a specific algorithm suite using the mechanism described in
      <xref target="sync"/></t>

      <t>During Phase 1, a CA that revokes a certificate under Suite A SHOULD
      revoke the corresponding certificate under Suite B, if that certificate
      exists. During Phase 4, a CA that revokes a certificate under Suite A
      SHOULD revoke the corresponding certificate under Suite C, if that
      certificate exists.</t>

      <t>During Phase 1, a CA may revoke certificates under Suite B without
      revoking them under Suite A, since the Suite B products are for test
      purposes. During Phase 4 a CA may revoke certificates issued under Suite
      C without revoking them under Suite A, since Suite C products are being
      deprecated.</t>
    </section>

    <section anchor="rollover" title="Key rollover">
      <t>Key rollover (without algorithm changes) is effected independently
      for each algorithm suite and MUST follow the process described in <xref
      target="RFC6489"/>.</t>
    </section>

    <section title="Repository structure">
      <t>The two parallel hierarchies that will exist during the transition
      process SHOULD have independent publications points. The repository
      structures for each algorithm suite are described in <xref
      target="RFC6481"/>.</t>
    </section>

    <section anchor="deprecate" title="Deprecating an Algorithm Suite">
      <t>To deprecate an algorithm suite, the following process MUST be
      executed by every CA in the RPKI:</t>

      <t><list style="numbers">
          <t>Each CA MUST cease issuing certificates under the suite. This
          means that any request for a (CA) certificate from a child will be
          rejected, e.g., sending an error_response message with error
          code:"request - no such resource class" as defined in <xref
          target="RFC6492"/>.</t>

          <t>Each CA MUST cease generating signed products, except the CRL and
          Manifest, under the deprecated Algorithm Suite.</t>

          <t>Each CA MUST revoke the EE certificates for all signed products
          that it has issued under the deprecated Algorithm Suite. The CA
          SHOULD delete these products from its publication point, to avoid
          burdening RPs with downloading and processing these products.</t>

          <t>Each CA MUST revoke all CA certificates that it has issued under
          the deprecated Algorithm Suite.</t>

          <t>Each CA SHOULD remove all CA certificates that it has issued
          under the deprecated Algorithm Suite.</t>

          <t>Each CA that publishes a TAL under the deprecated Algorithm Suite
          MUST removed it from the TAL's publication point.</t>

          <t>Each CA SHOULD continue to maintain the publication point for the
          deprecated Algorithm Suite, maintained at least until the CRL
          nextUpdate. This publication point MUST contain only the CRL and a
          Manifest for that publication point. This behavior provides a window
          in which RPs may be able to become aware of the revoked status of
          the signed products that have been deleted.</t>

          <t>Each RP MUST remove any TALs that is has published under the
          deprecated Algorithm Suite.</t>
        </list>CAs in the RPKI hierarchy may become aware of the deprecation
      of the algorithm suite at different times, and may execute the procedure
      above in an asynchronous fashion relative to one another. Thus, for
      example, a CA may request revocation of its CA certificate only to learn
      that the certificate has already been revoked by the issuing CA. The
      revocation of a CA certificate makes the CRL and manifest issued under
      it incapable of validation. The asynchronous execution of this procedure
      likely will result in transient "inconsistencies" among the publication
      points associated with the deprecated algorithm suite. However, these
      inconsistencies should yield "fail safe" results, i.e., the objects
      signed under the deprecated suite should be rejected by RPs.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>No IANA requirements</t>
    </section>

    <section title="Security Considerations">
      <t>An algorithm transition in RPKI should be a very infrequent event and
      it requires wide community consensus. The events that may lead to an
      algorithm transition may be related to a weakness of the cryptographic
      strength of the algorithm suite in use by RPKI, which is normal to
      happen over time. The procedure described in this document will take
      years to complete an algorithm transition. During that time, the RPKI
      system will be vulnerable to any cryptographic weakness that may have
      triggered this procedure (i.e. downgrade attack).</t>

      <t>This document does not describe an emergency mechanism for algorithm
      migration. Due to the distributed nature of RPKI, and the very large
      number of CAs and RPs, the authors do not believe it is feasible to
      effect an emergency algorithm migration procedure.</t>

      <t>If a CA does not complete its migration to the new algorithm suite as
      described in this document (after the EOL of the "old" algorithm suite),
      its signed product set will no longer be valid. Consequently, the RPKI
      may, at the end of Phase 4, have a smaller number of valid signed
      products than before starting the process. Conversely, a RP that does
      not follow this process will lose the ability to validate signed
      products issued under the new algorithm suite. The resulting incomplete
      view of routing info from the RPKI (as a result of a failure by CAs or
      RPs to complete the transition) could degrade routing in the public
      Internet.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to acknowledge the work of the SIDR working
      group co-chairs (Sandra Murphy and Chris Morrow) as well as the
      contributions given by Geoff Huston, Arturo Servin, Brian Weis, Terry
      Manderson, Brian Dickson and Danny McPherson.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &rfc2119;

      &rfc3779;

      &rfc5280;

      &rfc6481;

      &rfc6484;

      &rfc6485;

      &rfc6489;

      &rfc6490;

      &rfc6492;

      &rfc6493;
    </references>

    <section anchor="Log" title="Change Log">
      <t>Note to the RFC Editor: Please remove this section before
      publication.</t>

      <t>From 07 to 06</t>

      <t><list style="numbers">
          <t>Typo in Section 10</t>

          <t>Correct reference for RFC6493</t>
        </list></t>

      <t>From 06 to 07:</t>

      <t><list style="numbers">
          <t>Added definition for "Correspond"</t>

          <t>Added reference of correspondence between suites in phase 2 and
          3</t>

          <t>Small nit on the revocation definition.</t>
        </list></t>

      <t>From 05 to 06: <list style="numbers">
          <t>Added reference to published RFCs</t>

          <t>Removed requirement on dates format</t>

          <t>Changed revocation section to emphasize the differences between
          phase 1,2,3 and 4.</t>

          <t>Added Section 10: Deprecating an Algorithm Suite</t>

          <t>Typos and editoral changes</t>
        </list></t>

      <t>From 04 to 05: <list style="numbers">
          <t>WGLC nits</t>
        </list></t>

      <t>From 03 to 04: <list style="numbers">
          <t>Added text for "roll-over" capability in each phase</t>

          <t>Added the requirement for splitting the milestone 1 in two
          documents: the update of the alg document and a new document
          specifying the particular timelines</t>

          <t>WGLC nits</t>
        </list></t>

      <t>From 02 to 03: <list style="numbers">
          <t>Explicitely named than "mixed" certificates are not allowed for
          CA certs but may be possible for EE certs that are not used to
          validate repository objects.</t>
        </list></t>

      <t>From 01 to 02: <list style="numbers">
          <t>Add reference to Multi-Objects validation</t>

          <t>EOL Date is the only milestone that RP and CA take actions "at
          the same time".</t>

          <t>Updated references</t>

          <t>Editorial</t>
        </list></t>

      <t>From 00 to 01: <list style="numbers">
          <t>Include text to clarify former Suites</t>

          <t>Include text that documents that an RP that validates an object
          signed with either suites in Phase 2 MUST consider it as valid</t>
        </list></t>

      <t>From individual submission to WG item: <list style="numbers">
          <t>Change form "laisez faire" to "top-down"</t>

          <t>Included Multi Algorithm support in the RPKI provisioning
          protocol</t>

          <t>Included Validation of multiple instance of signed products</t>

          <t>Included Revocations</t>

          <t>Included Key rollover</t>

          <t>Included Repository structure</t>

          <t>Included Security Considerations</t>

          <t>Included Acknowledgements</t>
        </list></t>
    </section>
  </back>
</rfc>
