﻿<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="info" docName="draft-mcbride-rtgwg-bgp-blockchain-00" updates="" ipr="trust200902">

  <front>
    <title abbrev="BGP Blockchain">BGP Blockchain</title>

    <author fullname="Mike McBride" initials="M" surname="McBride">
      <organization>Futurewei</organization>

      <address>
        <email>michael.mcbride@futurewei.com</email>
      </address>
    </author>


    <date day="27" month="April" year="2022"/>

    <abstract>
      <t>A variety of mechanisms have been developed and deployed over the years to secure BGP including the
      more recent RPKI/ROA mechanisms. Is it also possible to use a distributed ledger such as Blockchain to secure BGP? 
      BGP provides decentralized connectivity across the Internet. Blockchain provides decentralized secure transactions in a 
      append-only, tamper-resistant ledger. This document reviews possible opportunities of using Blockchain to secure 
      BGP policies within a domain and across the global Internet. </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>There have been many proposed solutions to help secure the Border Gateway Protocol 
      (BGP) <xref target="RFC4271"/> including securing TCP, CoPP, IPSec, Secure BGP, Route Origination Validation (ROV),
      BGPSec along with many variations. Could we also use Blockchain to secure BGP? This document
      provides a review of how Blockchain could be used to secure BGP particularly as supplemental to existing solutions. 
      Many of the proposals can be extended to any routing protocol but the focus here is with
      BGP. The potential attractiveness of adding Blockchain to BGP is that it adds additional security without changes to
      the BGP protocol. This analysis does not consider external factors such as the energy demands of deploying such solutions.</t>

      <section anchor="requirements-language" title="Requirements Language">
        <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">RFC 2119</xref>.</t>
      </section>

    </section>
  
    
    <section title="Proposed Blockchain for BGP solutions">  
      <t>There are various ways Blockchain could be used to help secure BGP that we will explore in this section.</t>
  

      
      <section title="Blockchain to prevent fraudulent BGP origin announcements">
 
      <t>Prefix origin announcements could be stored on a blockchain
      to avoid BGP human configuration errors or hijacks. The consensus algorithms will ensure
      that everyone knows the correct owner AS of the prefix and everyone will
      know if there is an unauthorized change attempt. The existing RPKI system
      could be used to to authorize prefix owners and then an additional step could
      be to treat that as a transaction to be stored on a blockchain. ROA entries could be added to
      a blockchain as secure transactions and those transactions would be relied upon by route validators
      as authoritative. Perhaps blockchain validation information could be added as a new ROA field.</t> 
      </section>
      
      <section title="Blockchain to validate incoming BGP updates">
 
      <t>This is very similar to the previous solution. 
      If using RPKI, route validators could cross check with the BGP blockchain before sending 
      authorized prefix/AS matches to relying BGP routers. If not using RPKI, then routers would need
      to check a IRR blockchain prefix/AS database, if one were to exist, in order to validate incoming
      BGP updates.</t>
      </section>
      
      <section title="Blockchain to provide routing policy such as QoS">
      <t>In addition to the prefix to AS match information being stored on a blockchain, 
      the routing policy of those routes could also be stored on the blockchain. As long as
      the policy was correctly added to the chain, the path policies cannot be altered except by
      those authenticated to do so. </t>
      </section>
      
         <section title="Blockchain to protect BGP files">
      <t>Blockchain could also be used to store configuration files within an AS in order to prevent 
      malicious config tampering and to prevent misconfiguration. This protection could be provided within a private
      blockchain environment where only authorized users have access to the blockchain data. This could also
      be used within a trusted external peering environment to build a distributed database of BGP files such as 
      communities for use between BGP neighbors. Peers can use the data in the blockchain to understand the
      necessary peering relationship and act on the communities in a consistent manner.</t>
        </section>
        
         <section title="Blockchain to provide path validation">
      <t>BGP stores multiple paths to a destination in the BGP table. The BGP table contains all of the routes from all of the 
      neighbors. Only the best route gets installed in the routing table. To help further secure the BGP table, all of those routes/paths could
      be installed in a blockchain. Some mechanism could be used to validate these routes/paths, that reside in the blockchain, prior to
      one being selected as the path path in the routing table. This could also be extended to provide proof of transit across
      certain expected paths.</t>
        </section>
        
        <section title="Blockchain for BGP Controllers">
      <t>BGP-LS is used to provide BGP topology information to a Controller. That topology information could be added to a blockchain
      to ensure that the topology data is not compromised. PCEP, or other protocol, could be used by a controller to validate any update 
      of a BGP forwarding table using this same (or separate) blockchain. The latest forwarding rules would be maintained in a distributed 
      blockchain which is built using BGP-LS data and authorized users as an input. Without the proper credentials it would be very
      difficult to update the forwarding rules in the blockchain and a record would be kept with all update attempts.</t>
        </section>
        
        </section>

   <section title="Blockchain compromised by BGP vulnerabilities">
      <t>The attractiveness of Blockchain applications, such as Bitcoin and Ethereum, are that they are highly decentralized and
      more resistant to attack. This has opened the way for securing monetary transactions using crytocurrencies and their underlying blockchain
      technology. Blockchains mining power, however, is centralized with mining pools concentrating within certain regions
      and Autonomous Systems. This also creates a more centralized routing situation which could become vulnerable to
      BGP vulerabilities where IP addresses of the mining pools are hijacked. Therefore helping to further secure BGP will help to
      secure blockchain's centralized mining pools.</t>
    </section>

    <section title="IANA Considerations">
      <t>N/A</t>
    </section>

    <section title="Security Considerations">
      <t/>
      <t>There could be new blockchain related attacks that BGP would experience if blockchain were to be added into BGP's policy system. 
      These attacks include trying to replace the trusted chain with a fradulent chain. We will explore some of those here or in a new draft.</t>
    </section>

    <section title="Acknowledgement">
      <t/>

      <t></t>
    </section>
  </middle>
    
     <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
      <?rfc include='reference.RFC.4271'?>
    </references>

  </back>
</rfc>
