<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc rfcedstyle="yes"?>
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc inline="yes"?>
<?rfc subcompact="no"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc tocompact="yes"?>

<rfc category="info" number="7353" submissionType='IETF' consensus='yes' ipr="trust200902">

<front>

  <title abbrev="Requirements for BGP Path Validation">
     Security Requirements for BGP Path Validation</title>

  <author fullname="Steven M. Bellovin" initials="S." surname="Bellovin">
    <organization>Columbia University</organization>
    <address>
      <postal>
        <street>1214 Amsterdam Avenue, MC 0401</street>
        <city>New York</city>
        <region>New York</region>
        <code>10027</code>
        <country>USA</country>
        </postal>
      <phone>+1 212 939 7149</phone>
      <email>bellovin@acm.org</email>
      </address>
    </author>

  <author fullname="Randy Bush" initials="R." surname="Bush">
    <organization>Internet Initiative Japan</organization>
    <address>
      <postal>
        <street>5147 Crystal Springs</street>
        <city>Bainbridge Island</city>
        <region>Washington</region>
        <code>98110</code>
        <country>USA</country>
        </postal>
      <email>randy@psg.com</email>
      </address>
    </author>

  <author fullname="David Ward" initials="D." surname="Ward">
    <organization>Cisco Systems</organization>
    <address>
      <postal>
        <street>170 W. Tasman Drive</street>
        <city>San Jose</city>
        <region>CA</region>
        <code>95134</code>
        <country>USA</country>
        </postal>
      <email>dward@cisco.com</email>
      </address>
    </author>

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

<!-- [rfced] Please insert any keywords (beyond those that appear in 
the title) for use on http://www.rfc-editor.org/search.
-->

<keyword>example</keyword>

  <abstract>
    <t>This document describes requirements for a BGP security protocol
      design to provide cryptographic assurance that the origin
      Autonomous System (AS) has the right to announce the prefix and to
      provide assurance of the AS Path of the announcement.</t>
    </abstract>

  </front>

<middle>

  <section anchor="intro" title="Introduction">

    <t> Origin validation based on Resource Public Key Infrastructure (RPKI) 
      <xref target="RFC6811"/> provides a measure of
      resilience to accidental mis-origination of prefixes; however, it
      provides neither cryptographic assurance (announcements are not
      signed) nor assurance of the AS Path of the announcement.</t>

    <t>This document describes requirements to be placed on a BGP
      security protocol, herein termed "BGPsec", intended to rectify these
      gaps.</t>

    <t>The threat model assumed here is documented in
      <xref target="RFC4593"/> and
      <xref target="RFC7132"/>.</t>

    <t>As noted in the threat model <xref target="RFC7132"/>, this work
      is limited to threats to the BGP protocol.  Issues of business
      relationship conformance, while quite important to operators, are
      not security issues per se and are outside the scope of this
      document.  It is hoped that these issues will be better understood
      in the future.</t>

  <section title="Requirements Language">
    <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
      NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
      are to be interpreted as described in <xref target="RFC2119">RFC
      2119</xref> only when they appear in all upper case.  They may
      also appear in lower or mixed case, without
      normative meaning.</t>
    </section>
    </section>

  <section anchor="reading" title="Recommended Reading">

    <t>This document assumes knowledge of the RPKI
       <xref target="RFC6480"/> and the RPKI Repository Structure
       <xref target="RFC6481"/>.</t>

    <t>This document assumes ongoing incremental deployment of Route 
       Origin Authorizations (ROAs)
      <xref target="RFC6482"/>, the RPKI to the Router Protocol
      <xref target="RFC6810"/>, and RPKI-based Prefix Validation
      <xref target="RFC6811"/>.</t>

    <t>And, of course, a knowledge of BGP <xref target="RFC4271"/> is
      required.</t>

    </section>

  <section anchor="general" title="General Requirements">

    <t>The following are general requirements for a BGPsec protocol:

      <list style="format 3.%d">

	<t>A BGPsec design MUST allow the receiver of a BGP announcement
          to determine, to a strong level of certainty, that the
          originating AS in the received PATH attribute possessed the
          authority to announce the prefix.</t>

	<t>A BGPsec design MUST allow the receiver of a BGP announcement
          to determine, to a strong level of certainty, that the
          received PATH attribute accurately represents the sequence of
          External BGP (eBGP) exchanges that propagated the prefix from the origin AS
          to the receiver, particularly if an AS has added or deleted
          any AS number other than its own in the PATH attribute.  This
          includes modification to the number of AS prepends.</t>

        <t>BGP attributes other than the AS_PATH are used only locally,
          or have meaning only between immediate neighbors, may be
          modified by intermediate systems and figure less prominently
          in the decision process.  Consequently, it is not appropriate
          to try to protect such attributes in a BGPsec design.</t>

        <t>A BGPsec design MUST be amenable to incremental deployment.
          This implies that incompatible protocol capabilities MUST be
          negotiated.</t>

	<t>A BGPsec design MUST provide analysis of the operational
	  considerations for deployment and particularly of incremental
	  deployment, e.g., contiguous islands, non-contiguous islands,
	  universal deployment, etc.</t>

        <t>As proofs of possession and authentication may require
          cryptographic payloads and/or storage and computation, likely
          increasing processing and memory requirements on routers, a
          BGPsec design MAY require use of new hardware.
          That is, compatibility with current hardware abilities is not a
          requirement that this document imposes on a solution.</t>

        <t>A BGPsec design need not prevent attacks on data-plane
          traffic.  It need not provide assurance that the data plane
          even follows the control plane.</t>

        <t>A BGPsec design MUST resist attacks by an enemy who has
	  access to the inter-router link layer, per Section 3.1.1.2 of
	  <xref target="RFC4593" />.  In particular, such a design MUST
	  provide mechanisms for authentication of all data, including
	  protecting against message insertion, deletion, modification,
	  or replay.  Mechanisms that suffice include TCP sessions
	  authenticated with the TCP Authentication Option (TCP-AO) 
          <xref target="RFC5925"/>, IPsec
	  <xref target="RFC4301"/>, or Transport Layer Security (TLS) <xref target="RFC5246"/>.
          </t>

        <t anchor="ext0">It is assumed that a BGPsec design will require
	  information about holdings of address space and Autonomous System
	  Numbers (ASNs), and assertions about binding of address space to
	  ASNs.  A BGPsec design MAY make use of a security
	  infrastructure (e.g., a PKI) to distribute such authenticated
	  data.</t>

        <t>It is entirely OPTIONAL to secure AS SETs and prefix
          aggregation.  The long-range solution to this is the
          deprecation of AS_SETs; see <xref target="RFC6472"/>.</t>

        <t>If a BGPsec design uses signed prefixes, given the difficulty
          of splitting a signed message while preserving the signature,
          it need not handle multiple prefixes in a single UPDATE
          PDU.</t>

	<t>A BGPsec design MUST enable each BGPsec speaker to configure
	  use of the security mechanism on a per-peer basis.</t>

	<t>A BGPsec design MUST provide backward compatibility in the
	  message formatting, transmission, and processing of routing
	  information carried through a mixed security environment.
	  Message formatting in a fully secured environment MAY be
	  handled in a non-backward compatible manner.</t>

	<t>While the formal validity of a routing announcement should be
	  determined by the BGPsec protocol, local routing policy MUST
	  be the final arbiter of the best path and other routing
	  decisions.</t>

        <t>A BGPsec design MUST support 'transparent' route servers,
	  meaning that the AS of the route server is not counted in
	  downstream BGP AS-path-length tie-breaking decisions.</t>

        <t>A BGPsec design MUST support AS aliasing.  This technique is
          not well defined or universally implemented but is being
          documented in <xref target="AS-MIGRATION"/>.  A
          BGPsec design SHOULD accommodate AS 'migration' techniques
          such as common proprietary and non-standard methods that
          allow a router to have two AS identities, without lengthening
          the effective AS Path.</t>

	<t anchor="ext1">If a BGPsec design makes use of a security
  	  infrastructure, that infrastructure SHOULD enable each network
  	  operator to select the entities it will trust when
  	  authenticating data in the security infrastructure.  See, for
  	  example, <xref target="LTA-USE-CASES"/>.</t>

        <t>A BGPsec design MUST NOT require operators to reveal more
	  than is currently revealed in the operational inter-domain
	  routing environment, other than the inclusion of necessary
	  security credentials to allow others to ascertain for
	  themselves the necessary degree of assurance regarding the
	  validity of Network Layer Reachability Information (NLRI) 
          received via BGPsec.  This includes peering,
	  customer/provider relationships, an ISP's internal
	  infrastructure, etc.  It is understood that some data are
	  revealed to the savvy seeker by BGP, traceroute, etc.,
	  today.</t>

	<t>A BGPsec design MUST signal (e.g., via logging or SNMP) security
	  exceptions that are significant to the operator.  The
	  specific data to be signaled are an implementation matter.</t>

	<t>Any routing information database MUST be re-authenticated
	  periodically or in an event-driven manner, especially in
	  response to events such as, for example, PKI updates.</t>

 	<t>Any inter-AS use of cryptographic hashes or signatures MUST
          provide mechanisms for algorithm agility.  For a discussion,
          see <xref target="ALG-AGILITY"/>.</t>

        <t>A BGPsec design SHOULD NOT presume to know the intent of the
          originator of a NLRI, nor that of any AS on the AS Path, other
          than that they intend to pass it to the next AS in the
          path.</t>

        <t>A BGPsec listener SHOULD NOT trust non-BGPsec markings, such
     	  as communities, across trust boundaries.</t>

        </list>
      </t>

    </section>

  <section anchor="update-reqs" title="BGP UPDATE Security Requirements">

    <t>The following requirements MUST be met in the processing of BGP
      UPDATE messages:

      <list style="format 4.%d">

        <t>A BGPsec design MUST enable each recipient of an UPDATE to
          formally validate that the origin AS in the message is
          authorized to originate a route to the prefix(es) in the
          message.</t>

        <t>A BGPsec design MUST enable the recipient of an UPDATE to
          formally determine that the NLRI has traversed the AS Path
          indicated in the UPDATE.  Note that this is more stringent
          than showing that the path is merely not impossible.</t>

        <t>Replay of BGP UPDATE messages need not be completely
          prevented, but a BGPsec design SHOULD provide a mechanism to
          control the window of exposure to replay attacks.</t>

        <t>A BGPsec design SHOULD provide some level of assurance that
          the origin of a prefix is still 'alive', i.e., that a monkey in
          the middle has not withheld a WITHDRAW message or the effects
          thereof.</t>

	<t>The AS Path of an UPDATE message SHOULD be able to be
	  authenticated as the message is processed.</t>

        <t>Normal sanity checks of received announcements MUST be done,
          e.g., verification that the first element of the AS_PATH list
          corresponds to the locally configured AS of the peer from
          which the UPDATE was received.</t>

	<t>The output of a router applying BGPsec validation to a
	  received UPDATE MUST be unequivocal and conform to a fully
	  specified state in the design.</t>

        </list>
      </t>

    </section>

  <section anchor="sec-cons" title="Security Considerations">

    <t>If an external "security infrastructure" is used, as mentioned in
      Section 3, paragraphs <xref target="ext0" format="counter"/> and 
      <xref target="ext1" format="counter"/> above, the
      authenticity and integrity of the data of such an infrastructure
      MUST be assured.  In addition, the integrity of those data MUST be assured
      when they are used by BGPsec, e.g., in transport.</t>

    <t>The requirement of backward compatibility to BGP4 may open an
      avenue to downgrade attacks.</t>

    <t>The data plane might not follow the path signaled by the control
      plane.</t>

    <t>Security for subscriber traffic is outside the scope of this
      document and of BGP security in general.  IETF standards for
      payload data security should be employed.  While adoption of BGP
      security measures may ameliorate some classes of attacks on
      traffic, these measures are not a substitute for use of
      subscriber-based security.</t>

    </section>

  <section anchor="acknowledgments" title="Acknowledgments">

    <t>The authors wish to thank the authors of
      <xref target="BGP-SECURITY"/> from whom we liberally
      stole, Roque Gagliano, Russ Housley, Geoff Huston, Steve Kent,
      Sandy Murphy, Eric Osterweil, John Scudder, Kotikalapudi Sriram,
      Sam Weiler, and a number of others.</t>

    </section>

  </middle>

<back>
  <references title="Normative References">
    <?rfc include="reference.RFC.2119"?>
    <?rfc include="reference.RFC.4593"?>
    <?rfc include="reference.RFC.5925"?>
    <?rfc include="reference.RFC.7132"?>
    </references>
  <references title="Informative References">
    <?rfc include="reference.RFC.4271"?>
    <?rfc include="reference.RFC.4301"?>
    <?rfc include="reference.RFC.5246"?>
    <?rfc include="reference.RFC.6472"?>
    <?rfc include="reference.RFC.6480"?>
    <?rfc include="reference.RFC.6481"?>
    <?rfc include="reference.RFC.6482"?>
    <?rfc include="reference.RFC.6810"?>
    <?rfc include="reference.RFC.6811"?>

<!--I-D.iab-crypto-alg-agility, Active -->
<reference anchor='ALG-AGILITY'>
<front>
<title>Guidelines for Cryptographic Algorithm Agility</title>
<author initials='R' surname='Housley' fullname='Russ Housley'>
    <organization />
</author>
<date month='June' year='2014' />
</front>
<seriesInfo name='Work in' value='Progress' />
</reference>

<!--rfc include="reference.I-D.ietf-rpsec-bgpsecrec, Expired-->
<reference anchor='BGP-SECURITY'>
<front>
<title>BGP Security Requirements</title>
<author initials='B' surname='Christian' fullname='Blaine Christian'>
    <organization />
</author>
<author initials='T' surname='Tauber' fullname='Tony Tauber'>
    <organization />
</author>
<date month='November' year='2008' />
</front>
<seriesInfo name='Work in' value='Progress' />
</reference>

<!--I-D.ietf-sidr-lta-use-cases, Active-->
<reference anchor='LTA-USE-CASES'>
<front>
<title>RPKI Local Trust Anchor Use Cases</title>
<author initials='R' surname='Bush' fullname='Randy Bush'>
    <organization />
</author>
<date month='June' year='2014' />
</front>
<seriesInfo name='Work in' value='Progress' />
</reference>

<!--rfc include="reference.I-D.ga-idr-as-migration, Expired-->
<reference anchor='AS-MIGRATION'>
<front>
<title>Autonomous System (AS) Migration Features and Their Effects on the BGP AS_PATH Attribute</title>
<author initials='W' surname='George' fullname='Wesley George'>
    <organization />
</author>
<author initials='S' surname='Amante' fullname='Shane Amante'>
    <organization />
</author>
<date month='January' year='2014' />
</front>
<seriesInfo name='Work in' value='Progress' />
</reference>
    </references>
  </back>

</rfc>

