<?xml version="1.0" encoding="utf-8"?>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?><!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
<!ENTITY zwsp   "&#8203;">
<!ENTITY nbhy   "&#8209;">
<!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-ren-sidrops-soa-profile-01" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="Abbreviated Title">A Profile for Source Origin Authorizations(SOAs)</title>
    <!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

    <seriesInfo name="Internet-Draft" value="draft-ren-sidrops-soa-profile-01"/>
    <author fullname="Gang Ren" initials="G." surname="Ren">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <country>China</country>
          <!-- Uses two letter country code -->
        </postal>
        <email>rengang@cernet.edu.cn</email>
      </address>
    </author>
    <author fullname="Minglin Jia" initials="M.L" surname="Jia">
      <!-- [CHECK]
             * initials should not include an initial for the surname
             * role="editor" is optional -->
      <!-- Can have more than one author -->

      <!-- all of the following elements are optional -->
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <country>China</country>
          <!-- Uses two letter country code -->
        </postal>
        <phone>+86 18800137573</phone>
        <email>jml20@mails.tsinghua.edu.cn</email>
        <email>millionvoid@gmail.com</email>
      </address>
    </author>
    <author fullname="Xia Yin" initials="X." surname="Yin">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <country>China</country>
          <!-- Uses two letter country code -->
        </postal>
        <email>yxia@tsinghua.edu.cn</email>
      </address>
    </author>
    <author fullname="Shuqi Liu" initials="S." surname="Liu">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <country>China</country>
          <!-- Uses two letter country code -->
        </postal>
        <email>liu-sq23@mails.tsinghua.edu.cn</email>
        <email>liushuq2001@gmail.com</email>
      </address>
    </author>

    <date year="2025" />
    <!-- On draft submission:
         * If only the current year is specified, the current day and month will be used.
         * If the month and year are both specified and are the current ones, the current day will
           be used
         * If the year is not the current one, it is necessary to specify at least a month and day="1" will be used.
    -->

    <area>General</area>
    <workgroup>SIDROPS</workgroup>
    <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->

    <keyword>Source address validation</keyword>
    <keyword>RPKI</keyword>
    <!-- [REPLACE/DELETE]. Multiple allowed.  Keywords are incorporated into HTML output files for 
         use by search engines. -->

    <abstract>
      <t>This document defines Source Origin Authorization (SOA), a new object in the Resource Public Key Infrastructure (RPKI), designed to extend RPKI's capabilities to securing the data plane. An SOA object is a digitally signed artifact that records information about the possible last-hop ASes traversed by packets before reaching a specific AS. By providing this information, the SOA enables other ASes to collaboratively filter traffic with spoofed source addresses claiming to originate from the IP space of the target AS, thereby enhancing global Internet security through mitigation of source address spoofing and DDoS attacks.</t>
    </abstract>

  </front>

  <middle>

    <section>
      <name>Introduction</name>
     <t>Source Address Validation (SAV) is essential for Internet security, ensuring that packets carry legitimate and verifiable source addresses and preventing spoofed traffic.</t>

     <t>Existing SAV solutions, such as IEF<xref target="RFC2827"/> and uRPF<xref target="RFC3704"/><xref target="RFC8704"/>, face deployment challenges due to their "self-deployment, global benefit" nature. Moreover, methods relying solely on local routing information suffer from two key limitations:</t>
     
     <ol>
       <li>Spoofed traffic may already consume network resources before being filtered.</li>
       <li>Reflection attacks can make spoofed packets appear legitimate by the time they reach the victim, rendering local SAV ineffective.</li>
     </ol>
     
     <t>To address these issues, <strong>inter-AS collaboration</strong> is critical. Sharing routing information enables upstream ASes to help with validation and early filtering, reducing spoofed traffic's impact.</t>
     
     <t>However, building trust and coordination among ASes is difficult, with key barriers being:</t>
     
     <ul>
       <li>The challenge of discovering and trusting peer ASes.</li>
       <li>The lack of effective mechanisms to express and enforce unilateral security needs.</li>
     </ul>
     
     <t>A <strong>centralized, standardized platform</strong> is needed to support trust management and service discovery. The Resource Public Key Infrastructure (RPKI), as a global, open system, is well-suited to this role.</t>
     
     <t>RPKI enables ASes to exchange verified routing data and coordinate source address validation, improving protection against spoofed and reflection-based attacks, reducing DoS risk, and enhancing network resilience.</t>
     
     <t>While RPKI primarily supports routing security, it can also secure the data plane. A key component of SAV is determining the valid ingress direction for traffic from a given AS. The SOA (Source Origin Authorization) framework addresses this need.</t>
     
     <t>The SOA object leverages RPKI to record the last-hop AS before reaching a destination AS, facilitating source address filtering and validation.</t>
     
     <t>An SOA is generated by the source AS seeking protection and used by the AS responsible for enforcing SAV. For detailed procedures, see <xref target="I-D.ren-sidrops-soa-usage"/>.</t>
     
      <section>
        <name>Requirements Language</name>
        <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>
    <!-- [CHECK] The 'Requirements Language' section is optional -->

  </section>
  <section>
    <name>Terminology</name>
    <t>
            This section defines the key terms used in this document.
    </t>
    
    <t>
      <strong>Source Address Protection Service (SAPS)</strong>: Refers to a service in which one
            AS (service provider) deploys source validation rules on its border routers to protect the
            IP addresses belonging to another AS (service subscriber) from being spoofed. To further
            explain, the service provider filters those packets whose source addresses are spoofed to be
            the IP addresses belonging to the service subscriber. </t>
    <t>
      <strong>IP Spoofing</strong>: A malicious attacker forges the source IP address, setting it
            to the target IP to conduct network attacks. Such packets may generate DDoS attack traffic
            against the target IP via reflection nodes or result in the target IP being incorrectly
            attributed as the source of malicious activity. Thus, IP spoofing serves as a precursor to
            network attacks or misattribution. </t>
    
    <t>
      <strong>Service Subscriber</strong>: In the context of the Source Address Protection Service,
            this refers to the AS that requests the service and is being protected. </t>
    
    <t>
      <strong>Service Provider</strong>: In the context of the Source Address Protection Service,
            this refers to the AS that provides the service and protects other ASes. </t>
    </section>

  <section>
    <name>SOA Content-Type</name>
   <t> The content-type for an SOA is defined as sourceOriginAuthz and has the
    numerical value of xxxxx.
 
    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 <xref target="RFC6488" />).</t>
  </section>


  <section>
    <name>SOA eContent</name>
    <t>The content of an SOA identifies a single AS that has been authorized
      by the ASN holder to originate packets with IP address of this ASN as their source addresses.  If the ASN holder needs to authorize multiple ASes to originate packets from the same
     AS, the holder issues multiple SOAs, one per AS number. An SOA has the following data structure:</t>
<artwork>+------------------------------------+
|        SOA Data Structure          |
+----------------+-------------------+
|    Source AS   |   Destination AS  |
|    (Required)  |     (Required)    |
+----------------+-------------------+
| Destination IP | Legitimate Pre AS |
|   (Optional)   | Length (Required) |
+----------------+-------------------+
|    Legitimate Pre AS (Required)    |
+------------------------------------+
</artwork>

     <t> And an SOA is formally defined as:</t> 
<sourcecode type="asn.1">
SourceOriginAttestation ::= SEQUENCE {
    srcAS          ASID,
    dstAS          ASID,
    dstIP          IPPrefix OPTIONAL,
    legitimatePreASLength INTEGER,
    legitimatePreASList    SEQUENCE (SIZE (1..MAX)) OF ASID
}

ASID ::= INTEGER

IPPrefix ::= SEQUENCE {
    address IPAddress,
    netmask INTEGER}

IPAddress ::= BIT STRING
</sourcecode>

  </section>
  
  <section>
    <name>SOA Validation</name>
    <t>Before a service provider can use SOA to validate the authenticity of source addresses, the SOA must first be verified. To verify an SOA, a trusted party must perform all validation checks specified in <xref target="RFC6488"/>.</t>
    
  </section>


  <section>
    <name>Operation Considerations</name>
    <t>Both service providers and service subscribers should make efforts to minimize the synchronization delay between their router configurations and SOA objects to ensure the effectiveness of source address validation. For service subscribers, they should implement both periodic and event-triggered update strategies: SOA objects should be updated after a defined period of time and whenever there are changes to their routing policies. For service providers, they should implement either periodic polling or change-detection mechanisms to promptly identify SOA updates and update their filtering rules accordingly.</t>
    <t>According to our study, the effectiveness of deploying SOA is positively correlated with the AS Rank of the deployment location, even without any prior assumption about the target of the attack traffic. Therefore, if there is no specific defensive objective, the scheme should be deployed on top-ranked ASes.</t>
    <t>In addition, if, during actual network operation, a large amount of attack traffic is observed originating from a specific reflection point, it may indicate a reflection amplification attack using that node. In this case, SOA should be deployed in the AS where the reflection point resides.</t>
  </section>

  <section anchor="IANA">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
    <name>IANA Considerations</name>
    <t>With this document, IANA is requested to allocate the code for SOA 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 anchor="security-considerations">
    <name>Security Considerations</name>
    <t>Data in SOA is not assumed to be confidential; it is anticipated that SOAs will be stored in repositories accessible to all ISPs and potentially all Internet users. SOA does not have explicit authentication associated with it, as the PKI (Public Key Infrastructure) used for SOA validation provides authorization but not authentication. Although SOA is a signed application-layer object, there is no intent to convey non-repudiation through it.</t>
    <t>The purpose of SOA is to convey authorization for an ASto originate traffic with source addresses from the prefixes specified in the SOA. Therefore, the integrity of SOA must be established. The SOA specification uses the RPKI (Resource Public Key Infrastructure) signed object format; thus, all security considerations discussed in <xref target="RFC6488"/> also apply to SOAs. Additionally, the signed object profile uses the CMS (Cryptographic Message Syntax) signed message format for integrity, so SOAs inherit all security considerations associated with this data structure.</t>
    <t>The right of the SOA signer to authorize the target AS to originate traffic from IP addresses associated with the ASN in the SOA is established through the use of ROA objects within RPKI. In other words, SOA does not directly store the mapping between ASN and IP prefixes; this relationship is derived from ROAs. When using SOA, one must verify the validity of both the SOA and all ROAs associated with the AS, and integrate the information from both to generate and deploy filtering rules.</t>
    <t>It is worth noting that the comprehensiveness of ROA coverage for an AS's IP addresses does not critically affect SOA's functionality. Specifically, IP addresses not covered by ROAs will not be filtered when traffic originates from them; instead, these addresses retain the same vulnerability as they would have without SOA deployment, meaning they could potentially be spoofed by other ASes.</t>
    <t>For this reason, we strongly recommend that ASes deploying SOA fully cover their own IP addresses with ROAs. This ensures that these addresses can be properly protected under the SOA framework.</t>
    <t>Looking to the future, if Traffic Origin Authorization (TOA)<xref target="I-D.qin-savnet-toa"/> is standardized and deployed, it should be used directly as a supplement to or replacement for ROAs when implementing SOA. TOA is expected to provide higher accuracy in verifying traffic origins compared to ROAs, which would further enhance the effectiveness of source address validation under the SOA framework.</t>

  </section>

  <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
</middle>

<back>
  <references>
    <name>References</name>
    <references>
      <name>Normative References</name>

      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2827.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3704.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6488.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8704.xml"/>

    </references>

    <references>
      <name>Informative References</name>

      <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ren-sidrops-soa-usage.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.qin-savnet-toa.xml"/>
    </references>
  </references>


</back>
</rfc>
