<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<?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="std" docName="draft-ietf-sidrops-moa-profile-00"
     ipr="trust200902">
  <front>
    <title abbrev="Mapping Origin Authorization">A Profile for Mapping Origin
    Authorizations (MOAs)</title>

    <author fullname="Chongfeng Xie" initials="C" surname="Xie">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>

          <city>Beijing</city>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>xiechf@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Guozhen Dong" initials="G" surname="Dong">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>

          <city>Beijing</city>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>donggz@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Xing Li" initials="X" surname="Li">
      <organization>CERNET Center/Tsinghua University</organization>

      <address>
        <postal>
          <street>Shuangqing Road No.30, Haidian District</street>

          <city>Beijing</city>

          <code>100084</code>

          <country>China</country>
        </postal>

        <email>xing@cernet.edu.cn</email>
      </address>
    </author>

    <author fullname="Geoff Huston" initials="G" surname="Huston">
      <organization>APNIC</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>gih@apnic.net</email>
      </address>
    </author>

    <author fullname="Di Ma" initials="D" surname="Ma">
      <organization>ZDNS</organization>

      <address>
        <postal>
          <street>Floor 21, Block B, Greenland Center</street>

          <city>Beijing</city>

          <code>100102</code>

          <country>China</country>
        </postal>

        <email>madi@zdns.cn</email>
      </address>
    </author>

    <date day="9" month="October" year="2024"/>

    <workgroup>Network Working Group</workgroup>

    <keyword>RFC</keyword>

    <abstract>
      <t>This document proposes a new approach by leveraging Resource
      Public Key Infrastructure (RPKI) architecture to verify the authenticity
      of the mapping origin of an IPv4 address block. MOA is a newly defined 
      cryptographically signed object, it provides a means that the address
      holder can authorize an IPv6 mapping prefix to originate mapping for one
      or more IPv4 prefixes.  When receiving the MOA objects from the relying 
      partie, PE device can verify and discard invalid address mapping announcements
      from unauthorized IPv6 mapping prefixes to prevent IPv4 prefix hijacking.</t>



      
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document defines security enhancement for the address mapping
      announcement in multi-domain IPv6-only underlay networks <xref
      target="I-D.ietf-v6ops-framework-md-ipv6only-underlay"/>. For IPv4 service
      delivery in IPv6-only network, IPv6 mapping prefixes are configured at 
      the PE devices to identify the location of IPv4 address blocks, for any 
      given IPv4 address block, its corresponding IPv6 mapping prefix is considered
      as the mapping origin. In <xref target="I-D.ietf-idr-mpbgp-extension-4map6"/>,
      PE device at the edge of the IPv6-only network distributes the mapping between
      an IPv4 address block and its mapping origin through 4map6 extension of MP-BGP.
      Based on the mapping data obtained, the ingress PE can statelessly transform 
      the incoming IPv4 packets into IPv6 ones and send them to the correct egress
      PE.</t>

      <t>From above it can be seen that the correctness of transmitting IPv4
      service data in an IPv6-only network lies on the authenticity of the
      address mapping relationship. This can be further explained by the case
      where if an attacker maps an IPv4 address block using a fake IPv6
      mapping prefix, IPv4 service data will be sent to the wrong egress PE,
      resulting in a situation of IPv4 prefix hijacking. In a small-scale
      controlled network, this problem may not be too serious. However, as the
      scale of IPv6-only deployment increases and there is interconnection
      between multiple operators, it is necessary to guarantee the
      authenticity of mapping relationship. This document proposes a new
      approach by leveraging Resource Public Key Infrastructure (RPKI)
      architecture to verify the authenticity of the mapping origin of an IPv4
      address block. RPKI is a security framework by which network owners can
      validate and secure the critical route update or BGP announcements
      between public Internet networks [RFC6480]. For the scenario discussed,
      a new object, namely Mapping Origin Authorization (MOA), under the RPKI
      framework is defined in this document. MOA is a cryptographically signed
      mapping object between an IPv4 address block and its right mapping
      origin that is allowed to be declared in the announcement of MP-BGP.
      With this architecture, a legitimate holder of IPv4 address block, e.g.
      an ISP, can authorize an IPv6 mapping prefix to map IPv4 address block.
      A distributed repository system stores and disseminates the data objects
      that comprise the RPKI, as well as other signed objects necessary for
      improved mapping data and routing security. When receiving the MOA
      objects from the relying parties, PE routers can use them for Mapping
      Origin Validation (MOV) of IPv4 address blocks: verifying and discarding
      "invalid" address mapping announcements to prevent IPv4 prefix hijacking
      in IPv6 network.</t>

      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>
    </section>

    <section title="Terminology, Abbreviations and Acronyms">
      <t>The following abbreviations and acronyms are used in this
      document:</t>

      <t><t indent="4">&ndash; CMS: Cryptographic Message Syntax</t><t
      indent="4">&ndash; MOA: Mapping Origin Authorization</t></t>

      <t><t indent="4">&ndash; MOV: Mapping Origin Validation</t><t
      indent="4">&ndash; MP-BGP: Multiprotocol BGP</t></t>

      <t><t indent="4">&ndash; PE: Provider Edge</t><t indent="4">&ndash; PKI:
      Public Key Infrastructure</t></t>

      <t><t indent="4">&ndash; RPKI: Resource Public Key Infrastructure</t><t
      indent="4">&ndash; ROA: Route Origin Authorization(<xref
      target="RFC9582"/>)</t></t>
    </section>

    <section title="The MOA Content-Type">
      <t>The content-type for a MOA is defined as MappingOriginAuthz and has
      the numerical value of x.x.xxx.xxxxx.x.x.x.x.xx.</t>

      <t>This OID MUST appear both within the eContentType in the
      encapContentInfo object as well as the content-type signed attribute in
      the signerInfo object (see [RFC6488]).</t>
    </section>

    <section title="The MOA eContent">
      <t>The content of a MOA identifies a single IPv6 mapping prefix that has
      been authorized by the address holder to originate mapping of one or more
      IPv4 prefixes that will be advertised. If the address holderneeds to 
      authorize multiple IPv6 mapping prefixes to advertise the same set of IPv4
      prefixes, the holder issues multiple MOAs, one per IPv6 mapping prefix. 
      A MOA is formally defined as:</t>

      <t><t indent="4">MappingOriginAttestation ::= SEQUENCE {</t></t>

      <t><t indent="8">version [0] INTEGER DEFAULT 0,</t></t>

      <t><t indent="8">mappings SEQUENCE (SIZE(1..MAX)) OF MOAIPMapping
      }</t></t>

      <t><t indent="8"/></t>

      <t><t indent="4">MOAIPMapping ::= SEQUENCE {</t></t>

      <t><t indent="8">v6MappingPrefix IPv6MappingPrefix,</t></t>

      <t><t indent="8">v4Prefixes SEQUENCE (SIZE(1..MAX)) OF IPv4Prefix
      }</t></t>

      <t/>

      <t><t indent="4">IPv6MappingPrefix ::= BIT STRING (SIZE
      (0..ub-IPv6))</t></t>

      <t/>

      <t><t indent="4">IPv4Prefix ::= BIT STRING (SIZE (0..ub-IPv4))</t></t>

      <t/>

      <t><t indent="4">ub-IPv6 INTEGER ::= 128</t></t>

      <t/>

      <t><t indent="4">ub-IPv4 INTEGER ::= 32</t></t>

      <t>Note that this content appears as the eContent within the
      encapContentInfo (see [RFC6488]).</t>

      <section title="Element version">
        <t>The version number of the MappingOriginAttestation MUST be xxx.</t>
      </section>

      <section title="Element mappings">
        <t>The mappings element encodes the set of address mapping behavior,
        which indicates that the given IPv6 Mapping Prefix is authorized to
        originate mappings for single or a set of IPv4 prefixes.</t>

        <section title="type MOAIPMapping">
          <t>Within the MOAIPMapping structure, v6MappingPrefix element
          contains the IPv6 prefix used to originate mapping for a set of IPv4
          prefixes. The length of v6MappingPrefix can be set as 40, 48, 56, 64
          or 96 in actual deployment. The v4Prefixes element represents IPv4
          prefixes as a sequence of IPv4Prefix.</t>

          <t>It is proposed to define a canonical ordering for v4Prefixes, this
          allows RP software to more easily verify the contents of the
          eContent. In section 3.3.2 of <xref target="I-D.ietf-sidrops-rpki-prefixlist"/>, a canonical form
          is defined such that every set of IPv4 address prefixes has a unique
          representation. it can be used for the case of MOA defined in this
          document. </t>

          <t>To semantically compare, sort, and deduplicate the contents of
          the v4Prefix field, each v4Prefix element is mapped to an abstract
          data element composed of two integer values: </t>

          <t indent="4"> addr </t>

          <t indent="4"> The first IPv4 address of the IPv4 prefix appearing in the
          v4Prefix field, as a 32-bit (IPv4) integer value. </t>

          <t indent="4"> plen </t>

          <t indent="4"> The prefix length of the IPv4 prefix appearing in the v4Prefix
          address field as an integer value. </t>

          <t>Thus, the equality or relative order of two v4Prefix elements can
          be tested by comparing their abstract representations. </t>

          <t>With comparator the set of v4Prefix is totally ordered. The order
          of two v4Prefixes is determined by the first non-equal comparison in
          the following list. </t>

          <t> 1. Data elements with a lower addr value precede data elements
          with a higher addr value. </t>

          <t> 2. Data elements with a lower plen value precede data elements
          with a higher plen value. </t>

          <t>Data elements for which all two values compare equal are
          duplicates of one another. </t>
        </section>
      </section>
    </section>

    <section title="MOA Validation">
      <t>Before a relying party can use a MOA to validate a mapping
      announcement received, the relying party MUST first validate the MOA. To
      validate a MOA, the relying party MUST perform all the validation checks
      specified in <xref target="RFC6488"/> as well as the following
      additional MOA-specific validation step.</t>

      <t>-The IP address delegation extension <xref target="RFC3779"/> is
      present in the end-entity (EE) certificate (contained within the MOA),
      and each IPv4 prefix(es) in the MOA is contained within the set of IP
      addresses specified by the EE certificate&rsquo;s IP address delegation
      extension.</t>
    </section>

    <section title="Security Considerations">
      <t>There is no assumption of confidentiality for the data in a MOA; it
      is anticipated that MOAs will be stored in repositories that are
      accessible to all ISPs, and perhaps to all Internet users. There is no
      explicit authentication associated with a MOA, since the PKI used for
      MOA validation provides authorization but not authentication.</t>

      <t>Although the MOA is a signed, application-layer object, there is no
      intent to convey non-repudiation via a MOA.</t>

      <t>The purpose of a MOA is to convey authorization for an IPv6 mapping
      prefix to originate a mapping to the prefix(es) in the MOA. Thus, the
      integrity of a MOA MUST be established. The MOA specification makes use
      of the RPKI signed object format; thus, all security considerations in
      <xref target="RFC6448"/> also apply to MOAs. Additionally, the signed
      object profile uses the CMS signed message format for integrity; thus,
      MOAs inherit all security considerations associated with that data
      structure.</t>

      <t>The right of the MOA signer to authorize the target IPv6 mapping
      prefix to originate mappings to the prefix(es) is established through
      use of the address space and IPv6 mapping prefix number PKI described
      in <xref target="RFC6480"/>. Specifically, one MUST verify the signature
      on the MOA using an X.509 certificate issued under this PKI, and check
      that the prefix(es) in the ROA match those in the certificate&rsquo;s
      address space extension.</t>

      <t>As mentioned in <xref target="I-D.ietf-idr-mpbgp-extension-4map6"/>,
      the 4map6 extension is mainly used for controlled IPv6-only network
      operated by single or multiple ISPs. In this scenario, as the IPv6
      mapping prefix indicates the direction of IPv4 service data transmission
      in the IPv6-only network, and MOA is used to validate the mapping origin
      of IPv4 address block, there is no need to use IPv4 ROA for the
      validation of IPv4 BGP announcements; On the other hand, as the
      operation of MOA depends on the authenticity of address authorization in
      the underlying IPv6 network, if the IPv6 address prefix is maliciously
      originated by a third-party AS, even if the IPv4 address block is
      legitimately authorized to its corresponding IPv6 mapping prefix,
      traffic hijacking may occur due to the malicious announcement of the
      IPv6 mapping prefix. Therefore, it is recommended to also deploy IPv6
      ROA validation where MOA is deployed.</t>
    </section>

    <section title="IANA Considerations">
      <t>With this document, IANA is requested to allocate the code for MOA in
      the registry of "RPKI Signed Objects". In addition, two OIDs need to be
      assigned by IANA, one for the module identifier, and another one for the
      content type. The codes will use this document as the reference.</t>
    
    </section>

    <section title="Acknowledgement">
      <t>The authors would like to express sincere thanks to Russ Housley and
      Job Snijders for their review, suggestions and contributions. Thanks are
      also given to Nan Geng, Lancheng Qin, Jie Dong, Linda Dunba, Jiankang Yao,
      Sriram Kotikalapudi, Giuseppe Fioccola, Yu Fu, Shunwan Zhuang, Aijun Wang, 
      Shengnan Yue and Cong Li for their review and comments</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.5652"?>

      <?rfc include="reference.RFC.3779"?>

      <?rfc include="reference.RFC.5280"?>

      <?rfc include='reference.RFC.6487'?>

      <?rfc include="reference.RFC.6448"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.6488"?>

      <?rfc include="reference.RFC.9582"?>

      <?rfc include="reference.I-D.ietf-idr-mpbgp-extension-4map6"?>

      <?rfc include="reference.I-D.ietf-sidrops-rpki-prefixlist"?>

    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.6480"?>

      <?rfc include="reference.I-D.ietf-v6ops-framework-md-ipv6only-underlay"?>

    </references>

    <section title="ASN.1 Module">
     <t>This normative appendix provides an ASN.1 module that specifies the
      MOA content in ASN.1 syntax.</t>

      <t><t indent="4">RPKIMappingOriginAuthz-2024</t></t>

      <t><t indent="8">{iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1)</t></t>

      <t><t indent="10">pkcs9(9) smime(16) mod(0) TBD0 }</t></t>

      <t/>

      <t><t indent="4">DEFINITIONS EXPLICIT TAGS ::= BEGIN</t></t>

      <t/>

      <t><t indent="4">IMPORTS</t></t>

      <t><t indent="8">CONTENT-TYPE</t></t>

      <t><t indent="8">FROM CryptographicMessageSyntax-2009--in [RFC5911]
      </t></t>

      <t><t indent="12">{ iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1)</t></t>

      <t><t indent="14">pkcs9(9) smime(16) modules(0) id-mod-cms-2004-02(41)
      };</t></t>

      <t/>

      <t><t indent="4">ct-MappingOriginAuthz CONTENT-TYPE ::=</t></t>

      <t><t indent="6">{ TYPE MappingOriginAttestation</t></t>

      <t><t indent="8">IDENTIFIED BY id-ct-MappingOriginAuthz }</t></t>

      <t/>

      <t><t indent="4">id-ct-MappingOriginAuthz OBJECT IDENTIFIER ::=</t></t>

      <t><t indent="6">{ iso(1) member-body(2) us(840) rsadsi(113549)
      pkcs(1)</t></t>

      <t><t indent="8">pkcs9(9)smime(16) ct(1) TBD1 }</t></t>

      <t/>

      <t><t indent="4">MappingOriginAttestation ::= SEQUENCE {</t></t>

      <t><t indent="8">version [0] INTEGER DEFAULT 0,</t></t>

      <t><t indent="8">mappings SEQUENCE (SIZE(1..MAX)) OF MOAIPMapping
      }</t></t>

      <t/>

      <t><t indent="4">MOAIPMapping ::= SEQUENCE {</t></t>

      <t><t indent="8">v6MappingPrefix IPv6MappingPrefix,</t></t>

      <t><t indent="8">v4Prefixes SEQUENCE (SIZE(1..MAX)) OF IPv4Prefix
      }</t></t>

      <t/>

      <t><t indent="4">IPv6MappingPrefix ::= BIT STRING (SIZE
      (0..ub-IPv6))</t></t>

      <t/>

      <t><t indent="4">IPv4Prefix ::= BIT STRING (SIZE (0..ub-IPv4))</t></t>

      <t/>

      <t><t indent="4">ub-IPv6 INTEGER ::= 128</t></t>

      <t/>

      <t><t indent="4">ub-IPv4 INTEGER ::= 32</t></t>

      <t><t indent="4">END</t></t>
    </section>
  </back>
</rfc>