<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC '' 
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
]>

<rfc category="std" docName="draft-ietf-sidr-rpki-validation-reconsidered-06" ipr="trust200902" >
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
  <?rfc toc="yes" ?>
  <?rfc compact="yes" ?>
  <?rfc subcompact="no" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes"?>
  <?rfc iprnotified="no" ?>

  <front>
    <title abbrev="RPKI Validation">RPKI Validation Reconsidered</title>

    <author fullname="Geoff Huston" initials="G." surname="Huston">
      <organization abbrev="APNIC">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>
        <phone>+61 7 3858 3100</phone>
        <email>gih@apnic.net</email>
      </address>
    </author>

    <author fullname="George Michaelson" initials="G." surname="Michaelson">
      <organization abbrev="APNIC">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>
        <phone>+61 7 3858 3100</phone>
        <email>ggm@apnic.net</email>
      </address>
    </author>

    <author fullname="Carlos M. Martinez" initials="C.M." surname="Martinez">
      <organization abbrev="LACNIC">Latin American and Caribbean IP Address Regional Registry</organization>
      <address>
        <postal>
          <street>Rambla Mexico 6125</street>
          <city>Montevideo</city><code>11400</code>
          <country>Uruguay</country>
        </postal>
        <phone>+598 2604 2222</phone>
        <email>carlos@lacnic.net</email>
      </address>
    </author>

    <author fullname="Tim Bruijnzeels" initials="T" surname="Bruijnzeels">
      <organization abbrev="RIPE NCC">RIPE Network Coordination Centre</organization>
      <address>
        <postal>
          <street>Singel 258</street>
          <city>Amsterdam</city><code>1016 AB</code>
          <country>The Netherlands</country>
        </postal>
        <email>tim@ripe.net</email>
      </address>
    </author>

    <author fullname="Andrew Lee Newton" initials="A.L." surname="Newton">
      <organization abbrev="ARIN">American Registry for Internet Numbers</organization>
      <address>
        <postal>
          <street>3635 Concorde Parkway</street>
          <city>Chantilly</city> <region>VA</region><code>20151</code>
          <country>USA</country>
        </postal>
        <email>andy@arin.net</email>
      </address>
    </author>

    <author fullname="Daniel Shaw" initials="D." surname="Shaw">
      <organization abbrev="AFRINIC">African Network Information Centre (AFRINIC)</organization>
      <address>
        <postal>
          <street>11th Floor, Standard Chartered Tower</street>
          <city>Cybercity</city> <region>Ebene</region>
          <country>Mauritius</country>
        </postal>
        <phone>+230 403 51 00</phone>
        <email>daniel@afrinic.net</email>
      </address>
    </author>
    
    <date year="2016" month="July" day="8"/>
    
    <abstract>
    
      <t>This document proposes an update to the certificate
      validation procedure specified in RFC 6487 that
      reduces aspects of operational fragility in the management of
      certificates in the RPKI, while retaining essential security
      features.</t>

    </abstract>
  </front>

  <middle>
    <section title="Introduction">

      <t>This document proposes an update to the certificate
      validation procedure specified in <xref target="RFC6487" /> that
      reduces aspects of operational fragility in the management of
      certificates in the RPKI, while retaining essential security
      features.</t>

    </section>
    <section title="Certificate Validation in the RPKI">
    
      <t>As currently defined in section 7.2 of <xref target="RFC6487" />,
      validation of PKIX certificates that conform to the RPKI
      profile relies on the use of a path validation process where
      each certificate in the validation path is required to meet the
      certificate validation criteria.</t>
      
      <t>These criteria require, in particular, that the Internet Number
      Resources (INRs) of each certificate in the validation path are
      “encompassed” by INRs on the issuing certificate. The first certificate in
      the path is required to be a trust anchor, and its resources are
      considered valid by definition.</t>

      <t>For example, in the following sequence:</t>
<figure><artwork><![CDATA[ 
  Certificate 1 (trust anchor):
    Issuer TA,
    Subject TA,
    Resources 192.0.2.0/24, 198.51.100.0/24,
              2001:db8::/32, AS64496-AS64500

  Certificate 2: 
   Issuer TA,
   Subject CA1,
   Resources 192.0.2.0/24, 198.51.100.0/24, 2001:db8::/32

  Certificate 3: 
   Issuer CA1,
   Subject CA2,
   Resources 192.0.2.0/24, 2001:db8::/32

  ROA 1:
   Embedded Certificate 4 (EE certificate): 
    Issuer CA2,
    Subject R1,
    Resources 192.0.2.0/24

    Prefix 192.0.2.0/24, Max Length 24, ASN 64496
]]></artwork></figure>

      <t>All certificates in this scenario are considered valid since the INRs
      of each certificate are encompassed by those of the issuing certificate.
      ROA1 is valid because the specified prefix is encompassed by the embedded
      EE certificate, as required by <xref target="RFC6482" />.</t>
      
    </section>
      
    <section title="Operational Considerations">
      
      <t>The allocations recorded in the RPKI change as a result of resource
      transfers. For example, the CAs involved in transfer might choose to 
      modify CA certificates in an order that causes some of these certificates
      to “over-claim” temporarily. A certificate is said to “over-claim” if it
      includes INRs not contained in the INRs of the CA that issued the
      certificate in question.</t>
      <t>It may also happen that a child CA does not voluntarily request a
      shrunk resource certificate when resources are being transferred or
      reclaimed by the parent. Furthermore operational errors that may occur
      during management of RPKI databases also may create CA certificates that,
      temporarily, no longer encompass all of the INRs of subordinate
      certificates.</t>
      
      <t>Consider the following sequence:</t>
<figure><artwork><![CDATA[ 
  Certificate 1 (trust anchor):
   Issuer TA,
   Subject TA,
   Resources 192.0.2.0/24, 198.51.100.0/24,
             2001:db8::/32, AS64496-AS64500

  Certificate 2:
   Issuer TA,
   Subject CA1,
   Resources 192.0.2.0/24, 2001:db8::/32

  Certificate 3 (invalid):
   Issuer CA1,
   Subject CA2,
   Resources 192.0.2.0/24, 198.51.100.0/24, 2001:db8::/32

  ROA 1 (invalid):
   Embedded Certificate 4 (EE certificate): 
    Issuer CA2,
    Subject R1,
    Resources 192.0.2.0/24
   
    Prefix 192.0.2.0/24, Max Length 24, ASN 64496
]]></artwork></figure>

      <t>Here Certificate 2 from the previous example was re-issued by
      TA to CA1 and the prefix 198.51.100.0/24 was removed. However, CA1
      failed to re-issue a new Certificate 3 to CA2. As a result Certificate 3
      is now over-claiming and considered invalid; by recursion the embedded
      Certificate 4 used for ROA1 is also invalid. And ROA1 is invalid because
      the specified prefix contained in the ROA is no longer encompassed by a
      valid embedded EE certificate, as required by <xref target="RFC6482" /></t>
      
      <t>However, it should be noted that ROA1 does not make use of any of the
      address resources that were removed from CA1’s certificate, and thus
      it would be desirable if ROA1 could still be viewed as valid. Technically
      CA1 should re-issue a Certificate 3 to CA2 without 198.51.100.0/24, and
      then ROA1 would be considered valid according to <xref target="RFC6482" />.
      But as long as CA1 does not take this action, ROA1 remains invalid. It
      would be preferable if ROA1 could be considered valid, since the assertion
      it makes was not affected by the reduced scope of CA1’s certificate.</t>
              
    </section>
    
    <section title="An Amended RPKI Certification Validation Process">
    
      <section title="Verified Resource Sets">
      
         <t>The problem described above can be considered as a low probability
         problem today. However the potential impact on routing security
         would be high if an over-claiming occurred near the apex of the RPKI
         hierarchy, as this would invalidate the entirety of the sub-tree
         located below this point.</t>
      
         <t>The changes proposed here to the validation procedure in
      	 <xref target="RFC6487" /> do not change the probability of this
      	 problem, but they do limit the impact to just the over-claimed
      	 resources. This revised validation algorithm is intended to avoid
      	 causing CA certificates to be treated as completely invalid as a result
      	 of over-claims. However, these changes are designed to not degrade the
      	 security offered by the RPKI. Specifically, ROAs and router
      	 certificates will be treated as valid only if all of the resources
      	 contained in them are encompassed by all superior certificates along a
      	 path to a trust anchor.</t>

      	 <t>The way this is achieved conceptually is by maintaining Verified
      	 Resource Set (VRS) for each certificate that is separate from the INRs
      	 found in the <xref target="RFC3779" /> resource extension in the
      	 certificate.</t>
      	
      </section>
      
      <section title="Changes to existing standards">
      
      <section title="Resource Certificate Path Validation">

    	<t>The following is an amended specification to be used in place of
    	section 7.2 of <xref target="RFC6487" />.</t>
    	
    	<t>The following algorithm is employed to validate CA and EE resources
    	certificates. It is modeled on the path validation algorithm from
    	<xref target="RFC5280" />, but modified to make use of the IP Address
    	Delegation and AS Identifier Delegation Extensions from
    	<xref target="RFC3779" />.</t>
    	
    	<t>There are two inputs to the validation algorithm:<list style="numbers">
    		<t>a trust anchor</t>
    		<t>a certificate to be validated</t>
    	</list></t>
    	
    	<t>The algorithm is initialized with two new variables for use in the
    	RPKI: Validated Resource Set-IP (VRS-IP) and Validated Resource Set-AS
    	(VRS-AS). These sets are used to track the set of INRs (IP address
    	space and AS Numbers) that are considered valid for each CA certificate.
    	The VRS-IP and VRS-AS sets are initially set to the IP Address
    	Delegation and AS Identifier Delegation values, respectively, from the
    	trust anchor used to perform validation.</t>
    	
    	<t>This path validation algorithm verifies, among other things, that a
    	prospective certification path (a sequence of n certificates) satisfies
    	the following conditions:<list style="letters">
    	
    		<t>for all 'x' in {1, ..., n-1}, the subject of certificate 'x' is the
    		issuer of certificate ('x' + 1);</t>
    		
    		<t>certificate '1' is issued by a trust anchor;</t>
    		
    		<t>certificate 'n' is the certificate to be validated; and</t>
    		
    		<t>for all 'x' in {1, ..., n}, certificate 'x' is valid.</t>
    	
    	</list></t>
    	
    	<t>Certificate validation requires verifying that all of the following
    	conditions hold, in addition to the certification path validation
    	criteria specified in Section 6 of [RFC5280].<list style="numbers">
    	
    		<t>The signature of certificate x (x>1) is verified using the public
    		key of the issuer’s certificate (x-1), using the signature algorithm
    		specified for that public key (in certificate x-1).</t>
    		
    		<t>The current time lies within the interval defined by the
    		NotBefore and NotAfter values in the Validity field of certificate
    		x.</t>
    		
    		<t>The Version, Issuer, and Subject fields of certificate x satisfy
    		the constraints established in Section 4.1-4.7 of this
    		specification.</t>
    		
    		<t>Certificate x contains all the extensions that MUST be present,
    		as defined in Section 4.8 of this specification. The value(s) for
    		each of these extensions MUST be satisfy the constraints established
    		for each extension in the respective sections. Any extension not
    		identified in Section 4.8 MUST NOT appear in certificate x.</t>
    		
    		<t>Certificate x MUST NOT have been revoked, i.e., it MUST NOT
    		appear on a CRL issued by the CA represented by certificate x-1</t>
    		
    		<t>Compute the VRS-IP and VRS-AS set values as indicated below:
    			<list style="symbols">
    				<t>If the IP Address Delegation extension is present in
    				certificate x, compute the intersection of the resources
    				between this extension and the value of the VRS-IP computed
    				for certificate x-1.</t>
    				
    				<t>If the IP Address Delegation extension is absent in
    				certificate x, set the VRS-IP to NULL.</t>
    				
    				<t>If the AS Identifier Delegation extension is present in
    				certificate x, compute the intersection of the resources
    				between this extension and the value of the VRS-AS computed
    				for certificate x-1</t>
    				
    				<t>If the AS Identifier Delegation extension is absent in
    				certificate x, set the VRS-AS to NULL.</t>
    				
    				<t>If x = n (i.e., this is the certificate being validated),
    				then:<list style="numbers">
    					<t>If IP Address Delegation extension is present, it is
    					replaced with the intersection of the values from that
    					extension and the current value of the VRS-IP.</t>
    					<t>If an AS Identifier Delegation extension is present,
    					it is replaced with the intersection of the values from
    					that extension and the current value of the VRS-IP.</t>
    				</list></t>
    				
    				<t>If an RP is caching the results of validation, these
    				values MAY be stored along with the certificate, to
    				facilitate incremental validation based on cached
    				results.</t>
    			</list>
    		</t>
    		
    	</list></t>
    	
    	<t>These rules allow a CA certificate to contain resources that are not
    	present in (all of) the certificates along the path from the trust
    	anchor to the CA certificate. If none of the resources in the CA
    	certificate are present in all certificates along the path, no
    	subordinate certificates could be valid. However, the certificate is not
    	immediately rejected as this may be a transient condition. Not
    	immediately rejecting the certificate does not result in a security
    	problem because the associated VRS sets accurately reflect the resources
    	validly associated with the certificate in question.</t>
    	
      </section>
      
      <section title="ROA Validation">
       	
    	<t>Section 4 of <xref target="RFC6482" /> currently has the following
    	text on the validation of resources on a ROA:<list style="symbols">
    	
    	  <t>The IP address delegation extension [RFC3779] is present in the
    	  end-entity (EE) certificate (contained within the ROA), and each
    	  IP address prefix(es) in the ROA is contained within the set of IP
    	  addresses specified by the EE certificate's IP address delegation
    	  extension.</t>
    	</list></t>
    	
    	<t>The following is an amended specification to be used in place of this
    	text.<list style="symbols">

    	  <t>The IP address delegation extension [RFC3779] is present in the
          end-entity (EE) certificate (contained within the ROA), and each
          IP address prefix(es) in the ROA is contained within the VRS-IP
          set that is specified as an outcome of EE certificate validation.</t>
    	      	
    	</list></t>
    	
    	<t>Note that this ensures that ROAs can be valid only, if all IP address
    	prefixes in the ROA are encompassed by the VRS-IP of all certificates
    	along the path to the trust anchor used to verify it.</t>

    	<t>Operators MAY issue separate ROAs for each IP address prefix, so that
    	the loss of on IP address prefix from the VRS-IP of any certificate
    	along the path to the trust anchor would not invalidate authorizations
    	for other IP address prefixes.</t>
    	
      </section>
      
      <section title="BGPsec Router Certificate Validation">
      
        <t>BGPsec Router Certificate Validation is defined in section 3.3 of
        <xref target="I-D.ietf-sidr-bgpsec-pki-profiles" />. Path validation
        defined section 7 of <xref target="RFC6487" /> is used as the first
        step in validation, and a number of additional constraints are
        applied.</t>
          
        <t>We request that the authors add the following constraint:
        <list style="symbols">
    		<t>The VRS-AS of BGPsec Router Certificates MUST encompass all ASNs
            in the AS Resource Identifier Delegation extension.</t>
        </list>
        </t>
          
        <t>Furthermore we request that the authors include text instructing
        operators that they MAY issue separate BGPsec Router Certificates for
        different ASNs, so that the loss of on ASN from the VRS-AS of any
        certificate along the path to the trust anchor would not invalidate
        router keys for other ASNs.
        </t>
          
      </section>
   
      </section>
      <section title="An example">
      
      	<t>Consider the following example under the amended approach:</t>

<figure><artwork><![CDATA[ 
  Certificate 1 (trust anchor):
   Issuer TA,
   Subject TA,
   Resources 192.0.2.0/24, 198.51.100.0/24,
             2001:db8::/32, AS64496-AS64500
    
    Verified Resource Set: 192.0.2.0/24, 198.51.100.0/24,
                           2001:db8::/32, AS64496-AS64500
    Warnings: none

  Certificate 2: 
   Issuer TA,
   Subject CA1,
   Resources 192.0.2.0/24, 2001:db8::/32, AS64496
   
    Verified Resource Set: 192.0.2.0/24,
                           2001:db8::/32, AS64496
    Warnings: none

  Certificate 3: 
   Issuer CA1,
   Subject CA2,
   Resources 192.0.2.0/24, 198.51.100.0/24, AS64496
   
    Verified Resource Set: 192.0.2.0/24, AS64496
    Warnings: over-claim for 198.51.100.0/24

  ROA 1 (valid):
   Embedded Certificate 4 (EE certificate):
    Issuer CA2,
    Subject R1,
    Resources 192.0.2.0/24

     Verified resources: 192.0.2.0/24
     Warnings: none
     
     Prefix 192.0.2.0/24, Max Length 24, ASN 64496
    
    ROA1 is considered valid because the prefix matches the Verified
    Resource Set on the embedded EE certificate, as required by
    RFC 6482.

  ROA 2 (invalid):
   Embedded Certificate 5 (EE certificate invalid):
    Issuer CA2,
    Subject R2,
    Resources 198.51.100.0/24

     EE certificate is invalid due to over-claim for 198.51.100.0/24
     
     Prefix 198.51.100.0/24, Max Length 24, ASN 64496
    
    ROA2 is considered invalid because he embedded EE certificate is
    considered invalid.
    
  BGPSec Certificate 1 (valid):
   Issuer CA2
   Subject ROUTER-64496
   Resources AS64496
    
    Verified resources: AS64496
    Warnings: none
     
  BGPSec Certificate 2 (invalid):
   Issuer CA2
   Subject ALL-ROUTERS
   Resources AS64496-AS64497
    
    EE certificate is invalid due to over-claim for AS64497 
    
    This problem can be mitigated by issuing separate certificates
    for each AS number.
]]></artwork></figure>
			
    	</section>

    </section>
    
    <section title="Security Considerations">
    
      <t>The authors believe that the revised validation algorithm introduces no
      new security vulnerabilities into the RPKI.</t>

    </section>
    
    <section title="IANA Considerations">
    
      <t>No updates to the registries are suggested by this document.</t>
      
    </section>
    <section title="Acknowledgements">

      <t>The authors would like to thank Stephen Kent for reviewing and
      contributing to this document.</t>

    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.3779.xml"?>
      <?rfc include="reference.RFC.5280.xml"?>
      <?rfc include="reference.RFC.6482.xml"?>
      <?rfc include="reference.RFC.6487.xml"?>
      <?rfc include="reference.I-D.ietf-sidr-bgpsec-pki-profiles"?>                
    </references>
    
    <references title="Informative References">
      <?rfc include="reference.RFC.3849.xml"?>
      <?rfc include="reference.RFC.5398.xml"?>
      <?rfc include="reference.RFC.5737.xml"?>
    </references>
  </back>
</rfc>
