<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC7665 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7665.xml">
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC7799 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7799.xml">
<!ENTITY RFC6830 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6830.xml">
<!ENTITY RFC7276 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7276.xml">
<!ENTITY RFC7112 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7112.xml">
<!ENTITY RFC6833 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6833.xml">
<!ENTITY RFC2460 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2460.xml">
<!ENTITY RFC791 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.0791.xml">
<!ENTITY RFC6564 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6564.xml">
<!ENTITY RFC7820 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7820.xml">
<!ENTITY RFC7821 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7821.xml">
<!ENTITY RFC8126 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
<!ENTITY RFC5905 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5905.xml">
<!ENTITY RFC7384 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7384.xml">
<!ENTITY RFC8300 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8300.xml">
<!ENTITY RFC4302 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4302.xml">
<!ENTITY RFC6090 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6090.xml">
<!ENTITY RFC8174 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC9197 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9197.xml">
<!ENTITY RFC9055 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9055.xml">
<!ENTITY RFC9322 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9322.xml">
<!ENTITY RFC9326 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9326.xml">
<!ENTITY RFC9378 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9378.xml">
<!ENTITY I-D.ietf-sfc-proof-of-transit SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-sfc-proof-of-transit.xml">
<!ENTITY I-D.ietf-ippm-ioam-direct-export SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-direct-export.xml">
<!ENTITY I-D.ietf-spring-segment-routing SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-spring-segment-routing.xml">
<!ENTITY I-D.previdi-isis-segment-routing-extensions SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.previdi-isis-segment-routing-extensions.xml">
<!ENTITY I-D.ietf-ippm-6man-pdm-option SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-6man-pdm-option.xml">
<!ENTITY I-D.gont-v6ops-ipv6-ehs-in-real-world SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.gont-v6ops-ipv6-ehs-in-real-world.xml">
<!ENTITY I-D.brockners-lisp-sr SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.brockners-lisp-sr.xml">
<!ENTITY I-D.ietf-ippm-ioam-ipv6-options SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-ipv6-options.xml">
<!ENTITY I-D.ietf-6man-segment-routing-header SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-6man-segment-routing-header.xml">
<!ENTITY I-D.ietf-nvo3-vxlan-gpe SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-nvo3-vxlan-gpe.xml">
<!ENTITY I-D.ietf-nvo3-geneve SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-nvo3-geneve.xml">
<!ENTITY I-D.lapukhov-dataplane-probe SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.lapukhov-dataplane-probe.xml">
<!ENTITY I-D.ietf-ntp-packet-timestamps SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ntp-packet-timestamps.xml">
<!ENTITY I-D.spiegel-ippm-ioam-rawexport SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.spiegel-ippm-ioam-rawexport.xml">
<!ENTITY I-D.ietf-ippm-ioam-flags SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-ippm-ioam-flags.xml">
<!ENTITY I-D.zhou-ippm-ioam-yang SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.zhou-ippm-ioam-yang.xml">
<!ENTITY I-D.mizrahi-ippm-ioam-profile SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.mizrahi-ippm-ioam-profile.xml">
<!ENTITY I-D.ioamteam-ippm-ioam-direct-export SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ioamteam-ippm-ioam-direct-export.xml">
<!ENTITY I-D.ioametal-ippm-6man-ioam-ipv6-deployment SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ioametal-ippm-6man-ioam-ipv6-deployment.xml">
<!ENTITY I-D.weis-ippm-ioam-eth SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.weis-ippm-ioam-eth.xml">
<!ENTITY I-D.ietf-sfc-ioam-nsh SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-sfc-ioam-nsh.xml">
<!ENTITY I-D.brockners-ippm-ioam-geneve SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.brockners-ippm-ioam-geneve.xml">
<!ENTITY I-D.gandhi-spring-ioam-sr-mpls SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.gandhi-spring-ioam-sr-mpls.xml">
<!ENTITY I-D.ali-spring-ioam-srv6 SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.ali-spring-ioam-srv6.xml">
<!ENTITY I-D.brockners-ippm-ioam-vxlan-gpe SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.I-D.brockners-ippm-ioam-vxlan-gpe.xml">
<!ENTITY AFI SYSTEM "http://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-ippm-ioam-data-integrity-06"
     ipr="trust200902">
  <!-- ipr="full3978"-->

  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="IOAM-Data-Fields Integrity">Integrity of In-situ OAM Data
    Fields</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Frank Brockners" initials="F." surname="Brockners">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street>Hansaallee 249, 3rd Floor</street>

          <!-- Reorder these if your country does things differently -->

          <city>DUESSELDORF</city>

          <region>NORDRHEIN-WESTFALEN</region>

          <code>40549</code>

          <country>Germany</country>
        </postal>

        <email>fbrockne@cisco.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari">
      <organization abbrev="Thoughtspot">Thoughtspot</organization>

      <address>
        <postal>
          <street>3rd Floor, Indiqube Orion, 24th Main Rd, Garden Layout, HSR
          Layout</street>

          <city>Bangalore, KARNATAKA 560 102</city>

          <country>India</country>
        </postal>

        <email>shwetha.bhandari@thoughtspot.com</email>
      </address>
    </author>

    <author fullname="Tal Mizrahi" initials="T." surname="Mizrahi">
      <organization abbrev="">Huawei</organization>

      <address>
        <postal>
          <street>8-2 Matam</street>

          <city>Haifa</city>

          <code>3190501</code>

          <country>Israel</country>
        </postal>

        <email>tal.mizrahi.phd@gmail.com</email>
      </address>
    </author>

    <author fullname="Justin Iurman" initials="J." surname="Iurman">
      <organization abbrev="ULiege">Universite de Liege</organization>

      <address>
        <postal>
          <street>10, Allee de la decouverte (B28)</street>

          <code>4000</code>

          <city>Sart-Tilman</city>

          <region>LIEGE</region>

          <country>Belgium</country>
        </postal>

        <email>justin.iurman@uliege.be</email>
      </address>
    </author>

    <date day="23" month="July" year="2023"/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>tsv</area>

    <workgroup>ippm</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF 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 IETF. -->

    <keyword>in-situ</keyword>

    <keyword>Telemetry, Tracing</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>In-situ Operations, Administration, and Maintenance (IOAM) records 
      operational and telemetry information in the packet while the packet
      traverses a path in the network. IETF protocols require features to
      ensure their security. This document describes the integrity protection
      of IOAM-Data-Fields.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction" toc="default">
      <t>"In-situ" Operations, Administration, and Maintenance (IOAM) records 
      OAM information within the packet while the packet traverses a
      particular network domain. The term "in-situ" refers to the fact that
      the OAM data is added to the data packets rather than being sent
      within packets specifically dedicated to OAM. IOAM is to complement
      mechanisms such as Ping or Traceroute.
      In terms of "active" or "passive" OAM, "in-situ" OAM can be considered a
      hybrid OAM type. "In-situ" mechanisms do not require extra packets to be
      sent. IOAM adds information to the already available data packets and
      therefore cannot be considered passive. In terms of the classification
      given in <xref target="RFC7799"/>, IOAM could be portrayed as Hybrid Type
      I. IOAM mechanisms can be leveraged where mechanisms using, e.g., ICMP do
      not apply or do not offer the desired results, such as proving that a
      certain traffic flow takes a pre-defined path, SLA verification for the
      data traffic, detailed statistics on traffic distribution paths in
      networks that distribute traffic across multiple paths, or scenarios in
      which probe traffic is potentially handled differently from regular data
      traffic by the network devices.</t>

      <t>IOAM MUST be deployed in an IOAM-Domain. An IOAM-Domain is a set of
      nodes that use IOAM. An IOAM-Domain is bounded by its perimeter or edge.
      It is expected that all nodes in an IOAM-Domain are managed by the 
      same administrative entity, that has means to select, monitor, and
      control the access to all the networking devices. As such, IOAM-Data-Fields
      are carried in clear within packets and there are no protections against
      any node or middlebox tampering with the data. 
      IOAM-Data-Fields collected in an untrusted or semi-trusted environment
      require integrity protection to support critical operational decisions.
      Please refer to <xref target="RFC9197"/> for more details on IOAM-Domains.
      </t>

      <t>The following considerations and
      requirements are to be taken into account in addition to addressing the
      problem of detectability of any integrity breach of the IOAM-Data-Fields
      collected: <list style="numbers">
          <t>IOAM data is processed by the data plane, hence viability
          of any method to prove integrity of the IOAM-Data-Fields must be
          feasible at data plane processing/forwarding rates (IOAM might
          be applied to all traffic a router forwards).</t>

          <t>IOAM data is carried within packets. Additional space
          required to prove integrity of the IOAM-Data-Fields needs to be optimal, i.e.
          should not exceed the Maximum Transmission Unit (MTU) or have adverse effect on packet
          processing.</t>

          <t>Protection against replay of old IOAM data should be possible.
          Without replay protection, a rogue node can present the old IOAM
          data, masking any ongoing network issues/activity and making the
          IOAM-Data-Fields collection useless.</t>

      </list></t>

      <t>This document defines a method to protect the integrity of
      IOAM-Data-Fields, using the IOAM Option-Types specified in
      <xref target="RFC9197"/> and <xref target="RFC9326"/> as an example. The
      method will similarly apply to future IOAM Option-Types.</t>
    </section>

    <section anchor="Conventions" title="Conventions">

      <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 title="Abbreviations">
      <t>Abbreviations used in this document:</t>

      <t><list hangIndent="11" style="hanging">
          <t hangText="OAM:">Operations, Administration, and Maintenance</t>

          <t hangText="IOAM:">In-situ OAM</t>

          <t hangText="POT:">Proof of Transit</t>

          <t hangText="E2E:">Edge to Edge</t>

          <t hangText="DEX:">Direct Exporting</t>
        </list></t>
        </section>
    </section>

    <section anchor="ThreatAnalysis" title="Threat Analysis">
      <t>This section presents a threat analysis of integrity-related threats
      in the context of IOAM. The threats that are discussed are assumed to be
      independent of the lower layer protocols; it is assumed that threats at
      other layers are handled by security mechanisms that are deployed at
      these layers.</t>

      <t>This document is focused on integrity protection for IOAM-Data-Fields.
      Thus the threat analysis includes threats that are related to or
      result from compromising the integrity of IOAM-Data-Fields. Other
      security aspects such as confidentiality are not within the scope of
      this document.</t>

      <t>Throughout the analysis there is a distinction between on-path and
      off-path attackers. As discussed in <xref
      target="RFC9055"/>, on-path attackers are located in a
      position that allows interception and modification of in-flight protocol
      packets, whereas off-path attackers can only attack by generating
      protocol packets.</t>

      <t>The analysis also includes the impact of each of the threats.
      Generally speaking, the impact of a successful attack on an OAM protocol
      <xref target="RFC7276"/> is a false illusion of nonexistent failures or
      preventing the detection of actual ones; in both cases, the attack may
      result in denial of service (DoS). Furthermore, creating the false
      illusion of a nonexistent issue may trigger unnecessary processing in
      some of the IOAM nodes along the path, and may cause more IOAM-related
      data to be exported to the management plane than is conventionally
      necessary. Beyond these general impacts, threat-specific impacts are
      discussed in each of the subsections below.</t>

      <section anchor="ModifDataSec" title="Modification: IOAM-Data-Fields">
        <t>Threat <list hangIndent="10" style="empty">
            <t>An on-path attacker can modify the IOAM-Data-Fields of
            in-transit packets. The modification can either be applied to all
            packets or selectively applied to a subset of the en route
            packets.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>By systematically modifying the IOAM-Data-Fields of some or all
            of the in-transit packets, an attacker can create a false picture
            of the paths in the network, the existence of faulty nodes and
            their location, and the network performance.</t>
          </list></t>
      </section>

      <section anchor="ModifHeaderSec"
               title="Modification: IOAM Option-Type Headers">
        <t>Threat <list hangIndent="10" style="empty">
            <t>An on-path attacker can modify the header in IOAM Option-Types
            in order to change or disrupt the
            behavior of nodes processing IOAM-Data-Fields along the path.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>Changing the header of IOAM Option-Types may have several
            implications. An attacker can maliciously increase the processing
            overhead in nodes that process IOAM-Data-Fields and increase the
            on-the-wire overhead of IOAM-Data-Fields, for example by modifying
            the IOAM-Trace-Type field in the IOAM Trace Option-Type header. An
            attacker can also prevent some of the nodes that process
            IOAM-Data-Fields from incorporating IOAM-Data-Fields, by modifying
            the RemainingLen field in the IOAM Trace Option-Type header. Another
            possibility for the attacker is to change the context of
            IOAM-Data-Fields by modifying the Namespace-ID field in IOAM
            Option-Type headers, which makes the integrity protection of
            IOAM-Data-Fields completely useless.</t>
          </list></t>
      </section>

      <section title="Injection: IOAM-Data-Fields">
        <t>Threat <list hangIndent="10" style="empty">
            <t>An attacker can inject packets with IOAM Option-Types and
            IOAM-Data-Fields. This threat is applicable to both on-path and
            off-path attackers.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>This attack and its impacts are similar to <xref
            target="ModifDataSec"/>.</t>
          </list></t>
      </section>

      <section title="Injection: IOAM Option-Type Headers">
        <t>Threat <list hangIndent="10" style="empty">
            <t>An attacker can inject packets with IOAM Option-Type headers,
            thus manipulating other nodes that process IOAM-Data-Fields in the
            network. This threat is applicable to both on-path and off-path
            attackers.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>This attack and its impacts are similar to <xref
            target="ModifHeaderSec"/>.</t>
          </list></t>
      </section>

      <section title="Replay">
        <t>Threat <list hangIndent="10" style="empty">
            <t>An attacker can replay packets with IOAM-Data-Fields.
            Specifically, an attacker may replay a previously transmitted IOAM
            Option-Type with a new data packet, therefore attaching old
            IOAM-Data-Fields to a fresh user packet. This threat is applicable
            to both on-path and off-path attackers.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>By replaying old IOAM-Data-Fields,
            an attacker can create a false picture of the network status.
            The attacker could simulate a nonexistent failure, or incur
            non-required processing load on nodes that process these
            IOAM-Data-Fields.</t>
          </list></t>
      </section>

      <section title="Management and Exporting">
        <t>Threat <list hangIndent="10" style="empty">
            <t>Attacks that compromise the integrity of IOAM-Data-Fields can
            be applied at the management plane, e.g., by manipulating network
            management packets. Furthermore, the integrity of IOAM-Data-Fields
            that are exported to a receiving entity can also be compromised.
            Management plane attacks are not within the scope of this
            document; the network management protocol is expected to include
            inherent security capabilities. The integrity of exported data is
            also not within the scope of this document. It is expected that
            the specification of the export format will discuss the relevant
            security aspects.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>Malicious manipulation of the management protocol can cause
            nodes that process IOAM-Data-Fields to malfunction, to be
            overloaded, or to incorporate unnecessary IOAM-Data-Fields into
            user packets. The impact of compromising the integrity of exported
            IOAM-Data-Fields is similar to the impacts of previous threats
            that were described in this section.</t>
          </list></t>
      </section>

      <section title="Delay">
        <t>Threat <list hangIndent="10" style="empty">
            <t>An on-path attacker may delay some or all of the in-transit
            packets that include IOAM-Data-Fields in order to create the false
            illusion of congestion. Delay attacks are well known in the
            context of deterministic networks <xref
            target="RFC9055"/> and synchronization <xref
            target="RFC7384"/>, and may be somewhat mitigated in these
            environments by using redundant paths in a way that is resilient
            to an attack along one of the paths. This approach does not
            address the threat in the context of IOAM, as it does not meet the
            requirement to measure a specific path or to detect a problem
            along the path. It is noted that this threat is not within the
            scope of the threats that are mitigated in this
            document.</t>
          </list></t>

        <t>Impact <list hangIndent="10" style="empty">
            <t>Since IOAM can be applied to a fraction of the traffic, an
            attacker can detect and delay only the packets that include
            IOAM-Data-Fields, thus preventing the authenticity of delay and load
            measurements.</t>
          </list></t>
      </section>

      <section title="Threat Summary">
        <figure align="center" anchor="ThreatSummary"
                title="Threat Analysis Summary">
          <artwork align="left">
            
+-------------------------------------------+--------+------------+
| Threat                                    |In scope|Out of scope|
+-------------------------------------------+--------+------------+
|Modification: IOAM-Data-Fields             |   +    |            |
+-------------------------------------------+--------+------------+
|Modification: IOAM Option-Type Headers     |   +    |            |
+-------------------------------------------+--------+------------+
|Injection: IOAM-Data-Fields                |   +    |            |
+-------------------------------------------+--------+------------+
|Injection: IOAM Option-Type Headers        |   +    |            |
+-------------------------------------------+--------+------------+
|Replay                                     |   +    |            |
+-------------------------------------------+--------+------------+
|Management and Exporting                   |        |     +      |
+-------------------------------------------+--------+------------+
|Delay                                      |        |     +      |
+-------------------------------------------+--------+------------+
           </artwork>
        </figure>
      </section>
    </section>

    <section anchor="NewIOAMOptionTypes" title="Integrity Protected Option-Types">
    <t>This section defines new IOAM Option-Types. Their purpose is to carry
    IOAM-Data-Fields with integrity protection. Each of the IOAM Option-Types
    defined in <xref target="RFC9197"/> and <xref target="RFC9326"/> is extended
    as follows:</t>

        <t><list style="hanging">
            <t hangText="64">IOAM Pre-allocated Trace Integrity Protected
            Option-Type: corresponds to the IOAM Pre-allocated Trace Option-Type
            (<xref target="RFC9197"/>) with integrity protection.</t>

            <t hangText="65">IOAM Incremental Trace Integrity Protected
            Option-Type: corresponds to the IOAM Incremental Trace Option-Type
            (<xref target="RFC9197"/>) with integrity protection.</t>

            <t hangText="66">IOAM POT Integrity Protected Option-Type:
            corresponds to the IOAM POT Option-Type (<xref target="RFC9197"/>)
            with integrity protection.</t>

            <t hangText="67">IOAM E2E Integrity Protected Option-Type:
            corresponds to the IOAM E2E Option-Type (<xref target="RFC9197"/>)
            with integrity protection.</t>

            <t hangText="68">IOAM DEX Integrity Protected Option-Type:
            corresponds to the IOAM DEX Option-Type (<xref target="RFC9326"/>)
            with integrity protection.</t>
          </list></t>

      <t>The IOAM Integrity Protection Header follows the IOAM Option-Type
      header when the IOAM Option-Type is an Integrity Protected Option-Type.
      It is defined as follows:</t>

      <t><figure title="IOAM Integrity Protection Header">
            <artwork>

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Signature-suite|  Nonce length |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                             Nonce                             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                           Signature                           ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


</artwork>
          </figure></t>

      <t><list style="hanging">
        <t hangText="Signature-suite:">8-bit unsigned integer.
        This field defines the algorithm pair used to compute the digest
        and the signature over the IOAM-Data-Fields, as defined in <xref
        target="IOAM-IP-registry"/>.</t>

        <t hangText="Nonce length:">8-bit unsigned integer. This field
        specifies the length of the Nonce in octets.</t>

        <t hangText="Reserved:">16-bit Reserved field. MUST be set to zero
        upon transmission and ignored upon receipt.</t>

        <t hangText="Nonce:"> Variable length field with length specified
        in Nonce length.</t>

        <t hangText="Signature:"> Digital signature value generated
        by the algorithm pair specified by Signature-suite. The Signature
        length depends on the Signature-suite value.
        </t>
      </list></t>

      <section title="Integrity Protected Trace Option-Types">
        <t>Both the IOAM Pre-allocated Trace Option-Type header and the IOAM
        Incremental Trace Option-Type header, as defined in <xref
        target="RFC9197"/>, are followed by the Integrity
        Protection header when the IOAM Option-Type is respectively set to
        the IOAM Pre-allocated Trace Integrity Protected Option-Type or the IOAM
        Incremental Trace Integrity Protected Option-Type:
        <figure>
            <artwork>
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          | NodeLen | Flags | RemainingLen|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                IOAM-Trace-Type                |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Signature-suite|  Nonce length |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                             Nonce                             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                           Signature                           ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

</artwork>
        </figure></t>

        <section anchor="TraceOptTypeHdrFields" title="Header fields for integrity protection">
          <t>The following IOAM Pre-allocated or Incremental Option-Type header
          fields are involved in the integrity protection of IOAM-Data-Fields:

          <list style="numbers">
            <t>Namespace-ID</t>
            <t>NodeLen</t>
            <t>Flags: only bits 1 (Loopback) and 2 (Active)</t>
            <t>IOAM-Trace-Type</t>
          </list></t>
        </section>
      </section>

      <section title="Integrity Protected POT Option-Type">
        <t>The IOAM POT Option-Type header, as defined in <xref
        target="RFC9197"/>, is followed by the Integrity
        Protection header when the IOAM Option-Type is set to the IOAM POT
        Integrity Protected Option-Type: <figure>
            <artwork>
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          | IOAM-POT-Type | IOAM-POT-Flags| 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Signature-suite|  Nonce length |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                             Nonce                             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                           Signature                           ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

</artwork>
        </figure></t>

        <section anchor="POTOptTypeHdrFields" title="Header fields for integrity protection">
          <t>The following IOAM POT Option-Type header fields are involved in
          the integrity protection of IOAM-Data-Fields:

          <list style="numbers">
            <t>Namespace-ID</t>
            <t>IOAM-POT-Type</t>
          </list></t>
        </section>
      </section>

      <section title="Integrity Protected E2E Option-Type">
        <t>The IOAM E2E Option-Type header, as defined in <xref
        target="RFC9197"/>, is followed by the Integrity
        Protection header when the IOAM Option-Type is set to the IOAM E2E
        Integrity Protected Option-Type: <figure>
            <artwork>
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Namespace-ID          |         IOAM-E2E-Type         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Signature-suite|  Nonce length |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                             Nonce                             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                           Signature                           ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

</artwork>
        </figure></t>

        <section anchor="E2EOptTypeHdrFields" title="Header fields for integrity protection">
          <t>The following IOAM E2E Option-Type header fields are involved in
          the integrity protection of IOAM-Data-Fields:

          <list style="numbers">
            <t>Namespace-ID</t>
            <t>IOAM-E2E-Type</t>
          </list></t>
        </section>
      </section>

      <section title="Integrity Protected DEX Option-Type">
        <t>The IOAM DEX Option-Type header, as defined in <xref
        target="RFC9326"/>, is followed by the Integrity
        Protection header when the IOAM Option-Type is set to the IOAM DEX
        Integrity Protected Option-Type: <figure>
            <artwork>
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Namespace-ID           |     Flags     |Extension-Flags|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               IOAM-Trace-Type                 |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Flow ID (Optional)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Sequence Number  (Optional)               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Signature-suite|  Nonce length |           Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                             Nonce                             ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                           Signature                           ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

</artwork>
        </figure></t>

        <section anchor="DEXOptTypeHdrFields" title="Header fields for integrity protection">
          <t>The following IOAM DEX Option-Type header fields are involved in
          the integrity protection of IOAM-Data-Fields:

          <list style="numbers">
            <t>Namespace-ID</t>
            <t>Extension-Flags: only bits 0 (Flow ID) and 1 (Sequence Number)</t>
            <t>IOAM-Trace-Type</t>
          </list>

          The optional fields (i.e., Flow ID and Sequence Number) are treated as
          optional IOAM-Data-Fields, not header fields.
          </t>
        </section>
      </section>
    </section>

    <section anchor="IPM" title="Integrity Protection Method">
      <t>This section defines a method that uses a symmetric key based signature
      algorithm for integrity protection of IOAM-Data-Fields.
      In case of performance
      concerns, the method can be applied to a subset of the traffic by using
      sampling of data.</t>

      <t>The symmetric key based signature algorithm MUST use SHA-256
      (<xref target="SHS"/>) as the Digest Algorithm, and MUST use Advanced
      Encryption Standard (<xref target="AES"/>) with a key length of 256 bits
      and the Galois/Counter Mode (<xref target="NIST.800-38D"/>) as the
      Signature Algorithm (AES-256-GCM). The corresponding Signature Suite
      Identifier is 1, as defined in <xref target="IOAM-IP-registry"/>. As a
      consequence, the signature consumes 32 octets. The Integrity Protection
      Method is defined by the following steps:

      <list style="numbers">
        <t>The encapsulating node creates a nonce and stores it in the Nonce
        field of the IOAM Integrity Protection Header (the Nonce length
        field is set accordingly). The Signature-suite field is set to 1.
        The signature is generated over the hash of header fields (see
        <xref target="TraceOptTypeHdrFields"/>,
        <xref target="POTOptTypeHdrFields"/>,
        <xref target="E2EOptTypeHdrFields"/>, or
        <xref target="DEXOptTypeHdrFields"/>, for the exact list of header
        fields to include in the signature, depending on the IOAM Integrity
        Protected Option-Type) and IOAM-Data-Fields it has inserted, i.e.,
        sign(hash(Header-Fields || IOAM-Data-Fields)), with the Nonce field
        provided as the nonce. IOAM-Data-Fields supposed to be modified by
        other IOAM nodes on the path MUST be excluded from the signature
        (e.g., the POT Cumulative field). The signature is stored in the
        Signature field of the IOAM Integrity Protection Header.</t>

        <t>A transit node generates a signature over the hash of
        IOAM-Data-Fields it has inserted, i.e., sign(hash(IOAM-Data-Fields)),
        with the Signature field provided as the nonce. IOAM-Data-Fields
        modified in-place by the transit node MUST be excluded from the
        signature (e.g., the POT Cumulative field). The signature is stored
        in the Signature field of the IOAM Integrity Protection Header.

        <list style="bullets">
          <t>If the transit node does not insert IOAM-Data-Fields
          (e.g., it only modifies IOAM-Data-Fields in-place, or does nothing),
          then the transit node MUST NOT generate a signature and MUST NOT
          update the Signature field.</t>
        </list>
        </t>

        <t>In the context of the Integrity Protection Method, a node that
        performs the validation of the integrity protection is referred to as
        a "Validator". The role of a Validator is to recompute the signature by
        iteratively following the previous steps of the method, in the same
        order and up to itself, using the respective symmetric keys. The
        recomputed signature is then compared to the Signature field. As a
        result, the Validator can detect if the IOAM-Data-Fields integrity is
        intact or was altered. The validation is trivial in some cases (e.g.,
        with POT Type-0, E2E or DEX Option-Types), where only the encapsulating
        node generates a signature, as specified above by this method. For other
        cases where transit nodes also generate a signature (e.g., with Trace
        Option-Types), node-ids MUST be included in IOAM-Data-Fields. Details on
        how the mapping between node-ids and keys is implemented on a Validator
        are outside the scope of this document.

        <list style="bullets">
          <t>Each node that takes actions triggered by fields in the IOAM
          Integrity Protected Option-Type header MUST act as a Validator.
          Otherwise, an attacker could modify the IOAM header along the path and
          change the actions a node performs. Examples:

          <list style="bullets">
            <t>For an Integrity Protected Trace Option-Type (Pre-allocated or
            Incremental), each transit node MUST act as a Validator, if either
            the IOAM Loopback or Active mode is used.</t>

            <t>For an Integrity Protected DEX Option-Type, each transit node
            MUST act as a Validator.</t>
          </list>
          </t>

          <t>The decapsulating node MUST act as a Validator. The decapsulating
          node MUST NOT generate a signature based on IOAM-Data-Fields it has
          inserted, if any, and therefore MUST NOT update the Signature field.</t>
        </list>
        </t>
      </list>
      </t>

      <t>The method assumes that symmetric keys have been distributed to
      the respective nodes as well as the Validator(s). The details of the
      mechanisms used for key distribution are outside the scope of this
      document.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">

      <section anchor="IOAM-type-registry" title="IOAM Option-Types">
        <t>IANA is requested to define the following new code points in the
        "IOAM Option-Type" registry:</t>

        <t><list style="hanging">
            <t hangText="64">IOAM Pre-allocated Trace Integrity Protected
            Option-Type (see <xref target="NewIOAMOptionTypes"/>)</t>

            <t hangText="65">IOAM Incremental Trace Integrity Protected
            Option-Type (see <xref target="NewIOAMOptionTypes"/>)</t>

            <t hangText="66">IOAM POT Integrity Protected Option-Type
            (see <xref target="NewIOAMOptionTypes"/>)</t>

            <t hangText="67">IOAM E2E Integrity Protected Option-Type
            (see <xref target="NewIOAMOptionTypes"/>)</t>

            <t hangText="68 (suggested)"> IOAM DEX Integrity Protected Option-Type
            (see <xref target="NewIOAMOptionTypes"/>)</t>
        </list></t>

        <t>A document defining a new IOAM Integrity Protected Option-Type MUST
        define the IOAM Option-Type header fields involved in the integrity
        protection of IOAM-Data-Fields, as done in
        <xref target="TraceOptTypeHdrFields"/>,
        <xref target="POTOptTypeHdrFields"/>,
        <xref target="E2EOptTypeHdrFields"/>, and
        <xref target="DEXOptTypeHdrFields"/> of this document.</t>
      </section>

      <section anchor="IOAM-IP-registry"
               title="IOAM Integrity Protection Signature Suite">
        <t>IANA is requested to define a new registry named "IOAM Integrity
        Protection Signature Suite", inside the "In Situ OAM (IOAM)" registry
        group.</t>

        <t>The new registry defines 256 code points to identify the digest and
        signature algorithms used in the Signature-suite field, as explained in
        <xref target="NewIOAMOptionTypes"/>. The following code points are
        defined in this document:

        <figure title="IOAM Integrity Protection Signature Suite">
            <artwork>
 Signature
 Suite        Digest       Signature     Specification
 Identifier   Algorithm    Algorithm     Pointer
+-----------+------------+-------------+----------------+
| 0x00      | Reserved   | Reserved    | This document  |
+-----------+------------+-------------+----------------+
| 0x01      | SHA-256    | AES-256-GCM | This document  |
+-----------+------------+-------------+----------------+
| 0x02      |            |             |                |
| ...       | Unassigned | Unassigned  |                |
| 0xFE      |            |             |                |
+-----------+------------+-------------+----------------+
| 0xFF      | Reserved   | Reserved    | This document  |
+-----------+------------+-------------+----------------+
      </artwork>
          </figure> Code points 2-254 are available for assignment via the "IETF
        Review" process, as per <xref target="RFC8126"/>.</t>

        <t>New registration requests MUST use the following template: the value
        of the requested code point, the associated digest algorithm name and
        signature algorithm name, and a reference to
        the document that defines the requested code point.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Please refer to <xref target="ThreatAnalysis"/> for a threat analysis
      of integrity-related threats in the context of IOAM.</t>

      <t>The Integrity Protection Method defined in this document (see
      <xref target="IPM"/>) leverages symmetric keys. The symmetric keys need to
      be exchanged in a secure way between the nodes involved with integrity
      protection of IOAM-Data-Fields. The details of the key exchange are
      outside the scope of this document.</t>

      <t>The Integrity Protection Method defined in this document requires
      additional per-packet processing by each node that uses it. Inappropriate
      use of the Integrity Protection Method might overload nodes and cause them
      to stop functioning properly. Operators deploying IOAM with the Integrity
      Protection Method MUST ensure that such overload situations are avoided.
      This could for example be achieved by applying IOAM only to a subset of
      the entire traffic.</t>

      <t>The Nonce makes a signature chain unique but does not necessarily
      prevent replay attacks. To enable replay protection, the encapsulating node
      and the Validator(s) MUST agree on a common methodology to keep the Nonce valid
      only for a specific period of time, which is outside the scope of this document.</t>
    </section>

    <section title="Acknowledgements">
      <t>The authors would like to thank Santhosh N, Rakesh Kandula, Saiprasad
      Muchala, Al Morton, Greg Mirsky, Benjamin Kaduk and Martin Duke for their comments
      and advice.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      &RFC2119;

      &RFC8174;

      <!--  &RFC5905; -->

      &RFC8126;

      <!--  

      <reference anchor="POSIX"
                 target="https://standards.ieee.org/findstds/standard/1003.1-2008.html">
        <front>
          <title>IEEE Std 1003.1-2008 (Revision of IEEE Std 1003.1-2004) -
          IEEE Standard for Information Technology - Portable Operating System
          Interface (POSIX(R))</title>

          <author>
            <organization>Institute of Electrical and Electronics
            Engineers</organization>
          </author>

          <date year="2008"/>
        </front>

        <seriesInfo name="" value="IEEE Std 1003.1-2008"/>
      </reference>

      <reference anchor="IEEE1588v2"
                 target="http://standards.ieee.org/findstds/standard/1588-2008.html">
        <front>
          <title>IEEE Std 1588-2008 - IEEE Standard for a Precision Clock
          Synchronization Protocol for Networked Measurement and Control
          Systems</title>

          <author>
            <organization>Institute of Electrical and Electronics
            Engineers</organization>
          </author>

          <date year="2008"/>
        </front>

        <seriesInfo name="" value="IEEE Std 1588-2008"/>
      </reference>

-->
    </references>

    <references title="Informative References">
      &RFC7799;

<!--      &RFC8300; -->

      &RFC9197;

<!--
      &I-D.ietf-sfc-proof-of-transit;

      &I-D.ietf-nvo3-geneve;

      &I-D.ietf-ippm-ioam-ipv6-options;

      &I-D.ietf-sfc-ioam-nsh;

      &I-D.brockners-ippm-ioam-geneve; -->

      &RFC9055;

      &RFC9326;

      &RFC7276;

      &RFC7384;

<!--      &RFC6090; -->

<!--
      &RFC4302;

      <reference anchor="McEliece"
                 target="https://ipnpr.jpl.nasa.gov/progress_report2/42-44/44N.PDF">
        <front>
          <title>A Public-Key Cryptosystem Based on Algebraic Coding
          Theory</title>

          <author fullname="Robert McEliece" initials="R. J."
                  surname="McEliece"/>

          <date year="1978"/>
        </front>
      </reference>

      <reference anchor="EdDSA25519"
                 target="https://en.wikipedia.org/wiki/EdDSA#Ed25519">
        <front>
          <title>Edwards-curve Digital Signature Algorithm (EdDSA)</title>

          <author fullname="Wikipedia"/>

          <date year="2021"/>
        </front>
      </reference>

      <reference anchor="BLS"
                 target="https://en.wikipedia.org/wiki/BLS_digital_signature">
        <front>
          <title>BLS (Boneh&ndash;Lynn&ndash;Shacham) digital
          signature</title>

          <author fullname="Wikipedia"/>

          <date year="2021"/>
        </front>
      </reference>

      -->

      <reference anchor="SHS"
                 target="http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf">
        <front>
          <title>Secure Hash Standard (SHS)</title>

          <author>
            <organization>National Institute of Standards and
            Technology</organization>
          </author>

          <date year="2015"/>
        </front>

        <seriesInfo name=""
                    value="NIST FIPS Publication 180-4,               DOI 10.6028/NIST.FIPS.180-4"/>
      </reference>

      <!--

      <reference anchor="DSS"
                 target="http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf">
        <front>
          <title>Digital Signature Standard (DSS)</title>

          <author>
            <organization>National Institute of Standards and
            Technology</organization>
          </author>

          <date year="2013"/>
        </front>

        <seriesInfo name=""
                    value="NIST FIPS Publication 186-4,               DOI 10.6028/NIST.FIPS.186-4"/>
      </reference>
      -->

      <reference anchor="AES"
                 target="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf">
        <front>
          <title>Advanced Encryption Standard (AES)</title>

          <author>
            <organization>National Institute of Standards and
            Technology</organization>
          </author>

          <date year="2001"/>
        </front>

        <seriesInfo name="" value="FIPS PUB 197"/>
      </reference>

      <reference anchor="NIST.800-38D"
                 target="http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf">
        <front>
          <title>Recommendation for Block Cipher Modes of Operation:
          Galois/Counter Mode (GCM) and GMAC</title>

          <author>
            <organization>National Institute of Standards and
            Technology</organization>
          </author>

          <date year="2001"/>
        </front>

        <seriesInfo name="" value="NIST Special Publication 800-38D"/>
      </reference>

    </references>
  </back>
</rfc>
