<?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 rfc6487 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6487.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-multiple-publication-points-01"
     ipr="trust200902" updates="RFC 6490">
  <front>
    <title abbrev="RPKI Multiple Operators">Multiple Repository Publication
    Points support in the Resource Public Key Infrastructure (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="Terry Manderson" initials="T" surname="Manderson">
      <organization abbrev="">ICANN</organization>

      <address>
        <email>terry.manderson@icann.org</email>
      </address>
    </author>

    <author fullname="Carlos Martinez Cagnazzo" initials="C" surname="Martinez Cagnazzo">
      <organization abbrev="">LACNIC</organization>

      <address>
        <email>carlos@lacnic.net</email>
      </address>
    </author>

    <date month="February" year="2014"/>

    <abstract>
      <t>The Resource Public Key Infrastructure (RPKI) depends on Relying
      Parties (RP) ability to access its Trust Anchors' certificate specified
      in the different "Trust Anchor Locator (TAL)" files and the Repository
      Objects located at the Certificate Authorities (CA) repositories hosted
      in its respective publication point. This document updates <xref
      target="RFC6490"/> by allowing multiple URI associated to a single
      public key in a TAL file and introduces the concept of multiple
      repository publication point operators for every CA in the RPKI. This
      document provides also recommendation for the RP behavior when analyzing
      signed objects that include multiple publications points.</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 repository system described in <xref target="RFC6481"/>
      requires scalability and diversity in order to address challenges such
      as Distributed Denial of Service (DDoS) attacks, to secure the
      availability of the system when performing maintenance activities and
      against possible security incidents in one particular implementation.
      Additionally, when a single operator manages a RPKI Repository
      Publication Point, it is more probable to introduce circular
      dependencies when the Route Origin Authorization (ROA) signed objects
      for the Repository Publication Point IP addresses are hosted in servers
      that uses those same addresses.</t>

      <t>The current toolset for a CA to diversify its repository system is
      limited for both TA distribution and CA publication point management. In
      the case of trust anchors, <xref target="RFC6490"/> requires a unique
      URI per key on each TAL file. Conversely, in the case of the different
      publication points and although supported by <xref target="RFC6487"/> ,
      there is no current guidance on how RPs should support multiple
      publication points for the same object.</t>

      <t>When using a single URI, the options for diversity and scalability are
      reduced to:</t>

      <t><list style="numbers">
          <t>Give the content to a Content Delivery Network (CDN) to have the
          content distributed (as long as the CDN supports the CA's access method
          , which is not currently the case for rsync). The
          implementation will typically require the configuration of a CNAME
          resource record in the authoritative server pointing to a server
          farm inside the CDN who will handle load-balancing by using a set of
          internally defined metrics. If, for the sake of diversity, a CA
          administrator would like to use two different CDNs for the same URI
          it will need to modify the authoritative name server behavior to
          break RFC1034 standard behavior and allow multiple CNAME records for
          the same alias. This modification is not available by default on
          most of the more widely deployed DNS servers.</t>

          <t>Copy the content to different Repository Publication Points
          around the globe (i.e. using <xref
          target="I-D.ietf-sidr-publication"/>) and load balance the content
          using different Domain Name System (DNS) techniques. The load
          balancing implementation will need to verify the availability of the
          target server before providing a DNS response to avoid blackholes
          caused by unavailable servers or clusters. This "feature" needs also
          be added to the authoritative name server or the full DNS resolution
          or outsourced to a third party (which would introduce another
          non-diversified element).</t>
        </list></t>

      <t>This document addresses this problem by enabling multiple operators
      for trust anchor material, and, while not making it mandatory, 
	recommends the use of multiple publication
      points in signed objects.</t>

     <t> The main idea is that the a CA will host its
      RPKI signed objects in different locations, using diverse routing paths
      and diverse DNS resolution. The RP will have more processing to perform
      to fetch the different objects when dealing with exceptions.</t>

      <t>The first thing that is needed is to add multiple URIs support for
      each Trust Anchor. <xref target="RFC6490"/> requires that each TAL file
      includes a unique URI. This document removes this requirement by
      allowing one or more URI for each public key in a TAL file. In steady
      state, an RP should receive the same material from each of the different
      URI for the same root certificate. An exception could happen when the
      certificate is been updated or rolled-over, a process which should not
      have operational consequences. </t>

      <t>For the root certificate trust anchor, this proposal has an
      additional consequence: it would create the idea of root-CA repository
      operators. This concept has worked well in the case of DNS, where one
      organization is responsible for creating the root zone material and a
      number of different organizations are responsible in running the root
      servers. </t>

      <t>A CA can add support for multiple Repository Publication Points
      operators by adding more than one respective object for the Authority
      Information Access (AIA), the Subject Information Access (SIA) and the
      CRL Distribution Points (CRLDP) and which is supported by <xref
      target="RFC5280"/> and <xref target="RFC6487"/> . This document provides
      guidance on the RP expected behavior when analyzing signed objects with
      multiple Repository Publication Points in <xref target="certs"/>.</t>
    </section>

    <section anchor="TAL" title="Multiple Operators support in TAL files">
      <t>The idea of multiples operators support for a TA certificate
      expressed on its TAL file is similar to the support for several Root
      Server operators in a DNS hints file.</t>

      <t>An example of such a TAL file with 3 operators would be:</t>

      <t><figure>
          <artwork><![CDATA[rsync://rpki.operator1.org/rpki/hedgehog/root.cer 
rsync://rpki.operator2.net/rpki/hedgehog/root.cer 
rsync://rpki.operator3.biz/rpki/hedgehog/root.cer 

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAovWQL2lh6knDx 
GUG5hbtCXvvh4AOzjhDkSHlj22gn/1oiM9IeDATIwP44vhQ6L/xvuk7W6 
Kfa5ygmqQ+xOZOwTWPcrUbqaQyPNxokuivzyvqVZVDecOEqs78q58mSp9 
nbtxmLRW7B67SJCBSzfa5XpVyXYEgYAjkk3fpmefU+AcxtxvvHB5OVPIa 
BfPcs80ICMgHQX+fphvute9XLxjfJKJWkhZqZ0v7pZm2uhkcPx1PMGcrG 
ee0WSDC3fr3erLueagpiLsFjwwpX6F+Ms8vqz45H+DKmYKvPSstZjCCq9 
aJ0qANT9OtnfSDOS+aLRPjZryCNyvvBHxZXqj5YCGKtwIDAQAB]]></artwork>
        </figure></t>

      <t>As we can see in this example, a RP would have different URI where to
      fetch the self-signed certificate for the trust anchor. In each
      location, the same result should be expected as all the URI share the
      same public key.</t>

      <t>In order to increase diversity, It is RECOMMENDED that the
      different FQDN could be resolved to IP addresses included in ROA objects
      from different CAs and hosted in diverse repository publication
      points.</t>

      <section anchor="milestones" title="Update to RFC 6490 Section 2.1">
        <t>The following text will replace the last paragraph on Section 2.1
        of RFC 6490:</t>

        <t>The TAL is an ordered sequence of:</t>

        <t>1) One or more rsync URI [RFC5781],</t>

        <t>2) A &lt;CRLF&gt; or &lt;LF&gt; line break after each URI,</t>

        <t>3) A line containing a single &lt;CRLF&gt; or &lt;LF&gt; line
        break, and</t>

        <t>4) A subjectPublicKeyInfo [RFC5280] in DER format [X.509], encoded
        in Base64 (see Section 4 of [RFC4648]).A</t>
      </section>

      <section title="Rules for Relying Parties (RP)">
        <t>A RP can use different rules to select the URI from where fetch the
        Trust Anchor certificate. Some examples are:</t>

        <t><list style="symbols">
            <t>Using the order provided in the TAL file</t>

            <t>Selecting the URI randomly from the available list</t>

            <t>Creating a prioritized list of URIs based on RP specific
            parameters such as connection establishment delay</t>
          </list>If the connection to the preferred URI fails or the fetched
        certificate public key does not match the TAL public key, the RP
        SHOULD fetch the TA certificate from the next URI of preference.</t>
      </section>
    </section>

    <section anchor="certs" title="Multiple Operators support in Certificates">
      <t>The support for multiple operators in the RPKI Certificate Authority
      (CA) and End Entity (EE) certificates is supported as the RFC 5082
      allows multiple repository publication point operators as the SIA, AIA
      and CRLDP are implemented as sequences. Consequently, no changes are
      needed on the existing RPKI standard and this section could be
      considered informative.</t>

      <t>In the case of the SIA extension, for each operator, the
      accessMethods for both the CA repository publication point and for the
      correspondent manifest needs to be added.</t>

      <section title="Rules for Relying Parties (RP)">
        <t>A RP can use different rules to select the URI to fetch the
        different repository objects and when performing the validation.</t>

        <t>When a RP needs to fetch one or more object from a list of possible
        URIs, it can chose the URI by adopting a locally defined rule that
        could be:</t>

        <t><list style="symbols">
            <t>Using the order provided in the correspondent certificate</t>

            <t>Selecting the URI randomly from the available list</t>

            <t>Creating a prioritized list of URIs based on RP specific
            parameters such as connection establishment delay</t>
          </list>If the connection to the preferred URI fails , the RP SHOULD
        fetch the repository objects from the next URI of preference.</t>
      </section>
    </section>

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

    <section title="Security Considerations">
      <t>TBA</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBA.</t>
    </section>
  </middle>

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

      <reference anchor="I-D.ietf-sidr-publication"
                 target="http://www.ietf.org/id/draft-ietf-sidr-publication-02.txt">
        <front>
          <title>A Publication Protocol for the Resource Public Key
          Infrastructure (RPKI)</title>

          <author>
            <organization/>
          </author>

          <date/>
        </front>
      </reference>

      &rfc5280;

      &rfc6481;

      &rfc6484;

      &rfc6485;

      &rfc6487;

      &rfc6490;

      &rfc6492;
    </references>
  </back>
</rfc>
