<?xml version="1.0" encoding="US-ASCII"?>
<!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 strict='yes'?>
<?rfc iprnotified='no'?>
<rfc category="std" docName="draft-templin-omni-send-00" ipr="trust200902"
     updates="RFC3971">
  <front>
    <title abbrev="OMNI SEND">Secure NEighbor Discovery (SEND) over OMNI
    Interfaces</title>

    <author fullname="Fred L. Templin" initials="F. L." role="editor"
            surname="Templin">
      <organization>Boeing Research &amp; Technology</organization>

      <address>
        <postal>
          <street>P.O. Box 3707</street>

          <city>Seattle</city>

          <region>WA</region>

          <code>98124</code>

          <country>USA</country>
        </postal>

        <email>fltemplin@acm.org</email>
      </address>
    </author>

    <date day="20" month="January" year="2021"/>

    <keyword>I-D</keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>The Overlay Multilink Network Interface (OMNI) specification can be
      used by nodes on public Internetworks when a suitable security service
      is provided to authenticate IPv6 Neighbor Discovery (IPv6 ND) control
      messages. The basic OMNI security service for transmission of IPv6 ND
      messages over public Internetworks uses a Hashed Message Authentication
      Code (HMAC) based on a shared secret. This document specifies use of the
      Secure NEighbor Discovery (SEND) protocol over OMNI interfaces which can
      provide a more flexible and robust service.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>The Overlay Multilink Network Interface (OMNI) specification <xref
      target="I-D.templin-6man-omni-interface"/> can be used by nodes on
      public Internetworks when a suitable security service is provided to
      authenticate IPv6 Neighbor Discovery (IPv6 ND) control messages <xref
      target="RFC4861"/><xref target="RFC8200"/>. The basic OMNI security
      service for transmission of IPv6 ND messages over public Internetworks
      uses a Hashed Message Authentication Code (HMAC) based on a shared
      secret. This document specifies use of the Secure NEighbor Discovery
      (SEND) protocol over OMNI interfaces which can provide a more flexible
      and robust service.</t>

      <t>The HMAC-based security service may be adequate when all OMNI access
      routers can be provisioned with a shared secret for all potential
      clients. However, the service may not be scalable and/or agile enough
      for all environments, e.g., when the population of clients grows and/or
      changes dynamically. Moreover, it is client-server oriented, and may be
      too cumbersome for general-purpose use between opportunistic neighbor
      pairs.</t>

      <t>The Secure NEighbor Discovery (SEND) protocol <xref
      target="RFC3971"/> and Cryptographically Generated Addresses (CGA) <xref
      target="RFC3972"/> were designed to provide authentication services for
      IPv6 ND messaging over links of all varieties, including wireless. SEND
      requires that the CGA appear as the IPv6 ND message source or target
      address (see: Section 5.1.1 of <xref target="RFC3971"/>) where it will
      be covered by the RSA signature. Since OMNI interfaces use only non-CGA
      source and target addresses, however, this specification updates <xref
      target="RFC3971"/> by allowing CGAs to appear elsewhere in the
      message.</t>

      <t>The use of SEND over OMNI interfaces offers the opportunity for a
      certificate-based security service for large and dynamically changing
      populations of mobile nodes within a bounded service domain. The service
      domain can be as large as a major public Internetwork, and can even span
      multiple disjoint Internetworks when appropriate peering arrangements
      are in place. The remainder of this document specifies the operation of
      SEND over OMNI interfaces.</t>
    </section>

    <section anchor="terminology" title="Terminology">
      <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 anchor="format" title="SEND Over OMNI Interfaces">
      <t>The HMAC-based authentication option specified in <xref
      target="I-D.templin-6man-omni-interface"/> is distinguished by the
      two-octet code 0x0001 immediately following the UDP/IP encapsulation
      headers. The first octet 0x00 indicates that a message preamble option
      follows, while the second octet 0x01 is a 'type' field that identifies
      the HMAC-based authentication option. Following the authentication
      option (and any other preamble options present), the IPv6 ND message
      itself begins and includes any necessary SEND options.</t>

      <t>This specification allows CGAs to appear in a location other than the
      source or target address of the IPv6 ND message. In particular, this
      specification defines a new "Cryptographically Generated Address (CGA)"
      sub-option for the OMNI option (see Section 10 of <xref
      target="I-D.templin-6man-omni-interface"/>) formatted as follows:</t>

      <figure anchor="cga-opt"
              title="Cryptographically-Generated Address (CGA) Sub-option">
        <artwork><![CDATA[      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Sub-Type=TBD | Sub-length=16 |                               |   
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               .
     .                                                               .
     .     Cryptographically-Generated Address (CGA) (128 bits)      .
     .                                                               .
     .                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     .                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>

      <t><list style="symbols">
          <t>Sub-Type is set to "TBD".</t>

          <t>Sub-Length is set to 16 (i.e., the length of the CGA).</t>

          <t>Cryptographically-Generated Address (CGA) is a 128 bit IPv6
          address generated as specified in <xref target="RFC3972"/>.</t>
        </list>With this sub-option, OMNI nodes can place their CGAs inside
      the OMNI option instead of as the source or target address of the IPv6
      ND message (note that this represents an update to Section 5.1.1 of
      <xref target="RFC3971"/>). The processing rules for senders and
      receivers are discussed in the following Sections.</t>

      <section anchor="send" title="Processing Rules for Senders">
        <t>Per the OMNI specification <xref
        target="I-D.templin-6man-omni-interface"/>, a mobile node (MN) may be
        pre-provisioned with a Mobile Network Prefix (MNP) (e.g.,
        2001:db8:1:2::/64) which it uses to form an MNP-based OMNI Link Local
        Address (LLA) and MNP-based CGA. Otherwise, the MN obtains an MNP
        through an initial IPv6 ND message-based bootstrapping exchange with
        an Access Router (AR) while using a temporary LLA and LLA-based CGA
        using the prefix fe80::/64.</t>

        <t>The MN sends IPv6 ND messages with an OMNI option that includes its
        CGA in a CGA sub-option as shown in <xref target="cga-opt"/>. The MN
        also includes any necessary SEND options (e.g., CGA parameters, RSA
        signature, Nonce, Timestamp, etc.) per <xref target="RFC3971"/> while
        observing the updates discussed in <xref target="updates"/>. The RSA
        signature option MUST appear later in the IPv6 ND message options
        after the OMNI option so that the signature properly covers the CGA.
        The MN then sets the IPv6 source, destination and target (when
        present) to appropriate non-CGA addresses, and sends the message to
        the neighbor.</t>

        <t>When an initial bootstrapping exchange is required, the temporary
        LLA's statistical uniqueness properties allow for optimistic operation
        while the LLA-based CGA's uniqueness properties are irrelevant since
        it will never be used as an IPv6 packet header address. Following
        bootstrapping, the MN forms an MNP-based OMNI LLA and MNP-based CGA
        from its newly-obtained MNP and retains them for future IPv6 ND
        messaging. These addresses are assured to be unique within the domain,
        since the MNP is uniquely delegated to the MN.</t>

        <t>OMNI link ARs are assigned administrative OMNI LLAs that are
        guaranteed to be unique on the link, but they receive no MNPs of their
        own. Therefore, ARs will generate only LLA-based CGAs and use them for
        all SEND operations. While it is possible that two or more ARs may
        generate duplicate LLA-based CGAs, each AR will apply its own unique
        private key signature such that robust IPv6 ND message authentication
        is supported. For these reasons (and for the reasons explained for MNs
        above) no Duplicate Address Detection (DAD) testing of CGAs is
        necessary.</t>
      </section>

      <section anchor="recv" title="Processing Rules for Receivers">
        <t>When an OMNI node receives an IPv6 ND message from a neighbor, if
        both the HMAC and SEND authentication services appear in the same
        message the node SHOULD process the SEND authentication credentials
        and ignore the HMAC credentials. If only one authentication service is
        present, the node SHOULD process the credentials according to the
        included service. If no authentication services are present (or, if
        the SEND service is present but the RSA signature option appears
        before the OMNI option) the node SHOULD regard the IPv6 ND message as
        unsecured.</t>

        <t>When the CGA sub-option is included in the OMNI option and the RSA
        signature option appears later in the IPv6 ND message options, the
        node verifies the signature per <xref target="RFC3971"/> while
        observing the updates discussed in <xref target="updates"/>. In any
        case, if the IPv6 ND message includes an incorrect authentication code
        the node SHOULD discard the message.</t>
      </section>
    </section>

    <section anchor="updates" title="SEND/CGA Updates">
      <t>Since their original publications, several important updates to the
      SEND <xref target="RFC3971"/> and CGA <xref target="RFC3972"/>
      specifications have been published and are observed as follows:<list
          style="symbols">
          <t><xref target="RFC4581"/> defines a format for the CGA parameter
          data structure extension field. While no extensions are introduced
          in this document, any future updates to this document that introduce
          extensions MUST observe this format.</t>

          <t><xref target="RFC4982"/> introduces support for multiple hash
          algorithms in CGAs. The hash algorithm is identified by a value in
          the Sec bits of the CGA itself, which must be registered in the IANA
          "CGA SEC" registry. This document requests a new CGA SEC value
          "TBD2" for the SHA-256 hash algorithm (see: <xref target="iana"/>
          and <xref target="secure"/>).</t>

          <t><xref target="RFC6494"/> defines a certificate profile that
          supersedes the profile for Router Authorization Certificates.
          Certificates used in SEND over OMNI interfaces MUST conform to this
          new certificate profile and MAY conform to the original profile.</t>

          <t><xref target="RFC6495"/> specifies Subject Key Identifier (SKI)
          Name Type Fields for SEND, which apply also to this document.</t>

          <t><xref target="RFC6980"/> analyzes the security implications of
          employing IPv6 fragmentation with IPv6 ND messages (especially with
          regards to SEND) and updates <xref target="RFC4861"/> such that use
          of the IPv6 Fragmentation Header is forbidden in all ND messages.
          OMNI interfaces honor <xref target="RFC6980"/> by employing the OMNI
          Adaptation Layer (OAL) <xref
          target="I-D.templin-6man-omni-interface"/> to transport IPv6 ND
          messages no larger than the OMNI interface MTU without causing an
          IPv6 Fragmentation Header to appear within the IPv6 ND message
          itself.</t>
        </list></t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>IANA is instructed to allocate a new "OMNI option Sub-Type values"
      registry codepoint for the Cryptographically Generated Address (CGA)
      sub-option (value TBD).</t>

      <t>IANA is instructed to allocate a new "CGA SEC" registry codepoint for
      SHA-256 (value TBD2).</t>
    </section>

    <section anchor="secure" title="Security Considerations">
      <t>The OMNI specification <xref
      target="I-D.templin-6man-omni-interface"/> provides an HMAC
      authentication service that can be used for basic client-server
      authentication based on shared secrets. The SEND service discussed in
      this document uses X.509 public keys which provide a more flexible and
      extensible security service, especially for use on large OMNI links that
      support a dynamically changing collection of many MNs.</t>

      <t><xref target="RFC6273"/> provides a hash threat analysis for SEND
      that concludes:<list style="empty">
          <t>"Current attacks on hash functions do not constitute any
          practical threat to the digital signatures used in SEND (both in the
          RSA signature option and in the X.509 certificates). Attacks on
          CGAs, as described in <xref target="RFC4982"/>, will compromise the
          security of SEND and they need to be addressed by encoding the hash
          algorithm information into the CGA as specified in <xref
          target="RFC4982"/>."</t>
        </list>For this reason, implementations MUST use the SHA-256 hash
      algorithm for CGAs, as indicated by the value TBD2 appearing in the CGA
      Sec field (see: <xref target="iana"/>). Future documents MAY specify
      additional hash algorithm values for the CGA Sec field.</t>

      <t>OMNI nodes assign CGAs to their OMNI interfaces but do not use them
      as IPv6 source, destination or target addresses, nor as node
      identifiers. Instead, OMNI nodes place the CGA in IPv6 ND message OMNI
      options, use non-CGA addresses for IPv6 packet addressing, and use
      purpose-built facilities such as Universally Unique IDentifiers (UUIDs)
      <xref target="RFC4122"/> for node identification purposes.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t>This work is aligned with the NASA Safe Autonomous Systems Operation
      (SASO) program under NASA contract number NNA16BD84C.</t>

      <t>This work is aligned with the FAA as per the SE2025 contract number
      DTFAWA-15-D-00030.</t>

      <t>This work is aligned with the Boeing Commercial Airplanes (BCA)
      Internet of Things (IoT) and autonomy programs.</t>

      <t>This work is aligned with the Boeing Information Technology (BIT)
      MobileNet program.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.4861"?>

      <?rfc include="reference.RFC.8200"?>

      <?rfc ?>

      <?rfc include="reference.RFC.4581"?>

      <?rfc include="reference.RFC.3971"?>

      <?rfc include="reference.RFC.4982"?>

      <?rfc include="reference.RFC.3972"?>

      <?rfc include="reference.RFC.6494"?>

      <?rfc include="reference.RFC.6495"?>

      <?rfc include="reference.RFC.6980"?>

      <?rfc include="reference.I-D.templin-6man-omni-interface"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.4122"?>

      <?rfc include="reference.RFC.6273"?>
    </references>
  </back>
</rfc>
