<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.26 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ippm-encrypted-pdmv2-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.0 -->
  <front>
    <title abbrev="TODO - Abbreviation">IPv6 Performance and Diagnostic Metrics Version 2 (PDMv2) Destination Option</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-encrypted-pdmv2-03"/>
    <author fullname="Nalini Elkins">
      <organization>Inside Products, Inc.</organization>
      <address>
        <email>nalini.elkins@insidethestack.com</email>
      </address>
    </author>
    <author fullname="Michael Ackermann">
      <organization>BCBS Michigan</organization>
      <address>
        <email>mackermann@bcbsm.com</email>
      </address>
    </author>
    <author fullname="Ameya Deshpande">
      <organization>NITK Surathkal/Google</organization>
      <address>
        <email>ameyanrd@gmail.com</email>
      </address>
    </author>
    <author fullname="Tommaso Pecorella">
      <organization>University of Florence</organization>
      <address>
        <email>tommaso.pecorella@unifi.it</email>
      </address>
    </author>
    <author fullname="Adnan Rashid">
      <organization>Politecnico di Bari</organization>
      <address>
        <email>adnan.rashid@poliba.it</email>
      </address>
    </author>
    <date year="2023" month="March" day="26"/>
    <area>Transport</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>Extension Headers</keyword>
    <keyword>IPv6</keyword>
    <keyword>PDMv2</keyword>
    <keyword>Performance</keyword>
    <keyword>Diagnostic</keyword>
    <abstract>
      <t>RFC8250 describes an optional Destination Option (DO) header embedded
in each packet to provide sequence numbers and timing information as
a basis for measurements.  As this data is sent in clear-text, this
may create an opportunity for malicious actors to get information for
subsequent attacks.  This document defines PDMv2 which has a
lightweight handshake (registration procedure) and encryption to
secure this data.  Additional performance metrics which may be of use
are also defined.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ameyand.github.io/PDMv2/draft-elkins-ippm-encrypted-pdmv2.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-ippm-encrypted-pdmv2/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        IP Performance Measurement Working Group mailing list (<eref target="mailto:ippm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ippm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ippm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ameyand/PDMv2"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <section anchor="current-performance-and-diagnostic-metrics-pdm">
        <name>Current Performance and Diagnostic Metrics (PDM)</name>
        <t>The current PDM is an IPv6 Destination Options header which provides
information based on the metrics like Round-trip delay and Server
delay.  This information helps to measure the Quality of Service
(QoS) and to assist in diagnostics.  However, there are potential
risks involved transmitting PDM data during a diagnostics session.</t>
        <t>PDM metrics can help an attacker understand about the type of machine
and its processing capabilities.  Inferring from the PDM data, the
attack can launch a timing attack.  For example, if a cryptographic
protocol is used, a timing attack may be launched against the keying
material to obtain the secret.</t>
        <t>Along with this, PDM does not provide integrity.  It is possible for
a Man-In-The-Middle (MITM) node to modify PDM headers leading to
incorrect conclusions.  For example, during the debugging process
using PDM header, it can mislead the person showing there are no
unusual server delays.</t>
      </section>
      <section anchor="pdmv2-introduction">
        <name>PDMv2 Introduction</name>
        <t>PDMv2 adds confidentiality, integrity and authentication to PDM.</t>
        <t>PDMv2 consists of three kinds of flows:</t>
        <ul spacing="normal">
          <li>Primary to Primary</li>
          <li>Primary to Secondary</li>
          <li>Secondary to Secondary</li>
        </ul>
        <t>These terms are defined in Section 3.  Sample topologies may be found
in Appendix 1.</t>
        <t>This document describes the Secondary to Secondary protocol and
security requirements.  The Primary to Primary and Primary to
Secondary protocol will be described in a subsequent document.</t>
      </section>
    </section>
    <section anchor="conventions-used-in-this-document">
      <name>Conventions used in this document</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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="terminology">
      <name>Terminology</name>
      <ul spacing="normal">
        <li>Primary Client (PC): An authoritative node that creates
cryptographic keys for multiple Secondary clients.</li>
        <li>Primary Server (PS): An authoritative node that creates
cryptographic keys for multiple Secondary servers.</li>
        <li>Secondary Client (SC): An endpoint node which initiates a session
with a listening port and sends PDM data.  Connects to the Primary
Client to get cryptographic key material.</li>
        <li>Secondary Server (SS): An endpoint node which has a listening port
and sends PDM data.  Connects to the Primary Server to get
cryptographic key material.</li>
      </ul>
      <t>Note: a client may act as a server (have listening ports).</t>
      <ul spacing="normal">
        <li>Symmetric Key (K): A uniformly random bitstring as an input to the
encryption algorithm, known only to Secondary Clients and
Secondary Servers, to establish a secure communication.</li>
        <li>Public and Private Keys: A pair of keys that is used in asymmetric
cryptography.  If one is used for encryption, the other is used
for decryption.  Private Keys are kept hidden by the source of the
key pair generator, but Public Key is known to everyone.  pkX
(Public Key) and skX (Private Key).  Where X can be, any client or
any server.</li>
        <li>Pre-shared Key (PSK): A symmetric key.  Uniformly random
bitstring, shared between any client or any server or a key shared
between an entity that forms client-server relationship.  This
could happen through an out-of band mechanism: e.g., a physical
meeting or use of another protocol.</li>
        <li>Session Key: A temporary key which acts as a symmetric key for the
whole session.</li>
      </ul>
    </section>
    <section anchor="protocol-flow">
      <name>Protocol Flow</name>
      <t>The protocol will proceed in 3 steps.</t>
      <ol group="bar" spacing="normal" type="Step %d:"><li>Negotiation between Primary Server and Primary Client.</li>
        <li>Registration between Primary Server / Client and Secondary
Server / Client</li>
        <li>PDM data flow between Secondary Client and Secondary Server</li>
      </ol>
      <t>After-the-fact (or real-time) data analysis of PDM flow may occur by
network diagnosticians or network devices.  The definition of how
this is done is out of scope for this document.</t>
      <section anchor="registration-phase">
        <name>Registration Phase</name>
        <section anchor="rationale-of-primary-and-secondary-roles">
          <name>Rationale of Primary and Secondary Roles</name>
          <t>Enterprises have many servers and many clients.  These clients and
servers may be in multiple locations.  It may be less overhead to
have a secure location (ex.  Shared database) for servers and clients
to share keys.  Otherwise, each client needs to keep track of the
keys for each server.</t>
          <t>Please view Appendix 1 for some sample topologies and further
explanation.</t>
        </section>
        <section anchor="diagram-of-registration-flow">
          <name>Diagram of Registration Flow</name>
          <artwork><![CDATA[
       +-----------+                      +-----------+
       |Primary    |<====================>|Primary    |
       |Client (PC)|                      |Server (PS)|
       +-----+-----+                      +-----+-----+
            ||                                  ||
            ||                                  ||
+-------------------------+         +-------------------------+
| Secondary Clients(SC's) |         | Secondary Servers (SS's)|
|                         |         |                         |
| +----+ +----+   +----+  |         | +----+ +----+   +----+  |
| |SC1 | |SC2 |.. |SC N|  |<=======>| |SS 1| |SS 2|.. |SS N|  |
| +----+ +----+   +----+  |         | +----+ +----+   +----+  |
|                         |         |                         |
+-------------------------+         +-------------------------+

]]></artwork>
        </section>
      </section>
      <section anchor="primary-client-primary-server-negotiation-phase">
        <name>Primary Client - Primary Server Negotiation Phase</name>
        <t>The two entities exchange a set of data to ensure the respective
identities.</t>
        <t>They use HPKE KEM to negotiate a "SharedSecret".</t>
      </section>
      <section anchor="primary-server-client-secondary-server-client-registration-phase">
        <name>Primary Server / Client - Secondary Server / Client Registration Phase</name>
        <t>The "SharedSecret" is shared securely:</t>
        <ul spacing="normal">
          <li>By the Primary Client to all the Secondary Clients under its
control.  The protocol to define this will be defined in a
subsequent document.</li>
          <li>By the Primary Server to all the Secondary Servers under its
control.  The protocol to define this will be defined in a
subsequent document.</li>
        </ul>
      </section>
      <section anchor="secondary-client-secondary-server-communication">
        <name>Secondary Client - Secondary Server communication</name>
        <t>Each Client and Server derive a "SessionTemporaryKey" by using HPKE
KDF, using the following inputs:</t>
        <ul spacing="normal">
          <li>The "SharedSecret".</li>
          <li>The 5-tuple (SrcIP, SrcPort, DstIP, DstPort, Protocol) of the
communication.</li>
          <li>A Key Rotation Index (Kri).</li>
        </ul>
        <t>The Kri <bcp14>SHOULD</bcp14> be initialized to zero.</t>
        <t>The server and client initialize (separately) a pseudo-random non-
repeating sequence between 1 and 2^15-1.  How to generate this
sequence is beyond the scope of this document, and does not affect
the rest of the specification.  When the sequence is used fully, or
earlier if appropriate, the sender signals the other party that a key
change is necessary.  This is achieved by flipping the "F bit" and
resetting the PRSEQ.  The receiver increments the Kri of the sender,
and derives another SessionTemporaryKey to be used for decryption.</t>
        <t>It shall be stressed that the two SessionTemporaryKeys used in the
communication are never the same, as the 5-tuple is reversed for the
Server and Client.  Moreover, the time evolution of the respective
Kri can be different.  As a consequence, each entity must maintain a
table with (at least) the following informations:</t>
        <ul spacing="normal">
          <li>Flow 5-tuple, Own Kri, Other Kri</li>
        </ul>
        <t>An implementation might optimize this further by caching the
OwnSessionTemporaryKey (used in Encryption) and
OtherSessionTemporaryKey (used in Decryption).</t>
      </section>
    </section>
    <section anchor="security-goals">
      <name>Security Goals</name>
      <t>As discussed in the introduction, PDM data can represent a serious
data leakage in presence of a malicious actor.</t>
      <t>In particular, the sequence numbers included in the PDM header allows
correlating the traffic flows, and the timing data can highlight the
operational limits of a server to a malicious actor.  Moreover,
forging PDM headers can lead to unnecessary, unwanted, or dangerous
operational choices, e.g., to restore an apparently degraded Quality
of Service (QoS).</t>
      <t>Due to this, it is important that the confidentiality and integrity
of the PDM headers is maintained.  PDM headers can be encrypted and
authenticated using the methods discussed in Section 5.4, thus
ensuring confidentiality and integrity.  However, if PDM is used in a
scenario where the integrity and confidentiality is already ensured
by other means, they can be transmitted without encryption or
authentication.  This includes, but is not limited to, the following
cases:</t>
      <ol spacing="normal" type="%c)"><li>PDM is used over an already encrypted medium (For example VPN
tunnels).</li>
        <li>PDM is used in a link-local scenario.</li>
        <li>PDM is used in a corporate network where there are security
measures strong enough to consider the presence of a malicious
actor a negligible risk.</li>
      </ol>
      <section anchor="security-goals-for-confidentiality">
        <name>Security Goals for Confidentiality</name>
        <t>PDM data must be kept confidential between the intended parties,
which includes (but is not limited to) the two entities exchanging
PDM data, and any legitimate party with the proper rights to access
such data.</t>
      </section>
      <section anchor="security-goals-for-integrity">
        <name>Security Goals for Integrity</name>
        <t>PDM data must not be forged or modified by a malicious entity.  In
other terms, a malicious entity must not be able to generate a valid
PDM header impersonating an endpoint, and must not be able to modify
a valid PDM header.</t>
      </section>
      <section anchor="security-goals-for-authentication">
        <name>Security Goals for Authentication</name>
        <t>An unauthorized party must not be able to send PDM data and must not
be able to authorize another entity to do so.  The protocol to define
this will be defined in a subsequent document.  Alternatively, if
authentication is done via any of the following, this requirement may
be seen to be met.</t>
        <ol spacing="normal" type="%c)"><li>PDM is used over an already authenticated medium (For example,
TLS session).</li>
          <li>PDM is used in a link-local scenario.</li>
          <li>PDM is used in a corporate network where security measures are
strong enough to consider the presence of a malicious actor a
negligible risk.</li>
        </ol>
      </section>
      <section anchor="cryptographic-algorithm">
        <name>Cryptographic Algorithm</name>
        <t>Symmetric key cryptography has performance benefits over asymmetric
cryptography; asymmetric cryptography is better for key management.
Encryption schemes that unite both have been specified in <xref target="RFC1421"/>,
and have been participating practically since the early days of
public-key cryptography.  The basic mechanism is to encrypt the
symmetric key with the public key by joining both yields.  Hybrid
public-key encryption schemes (HPKE) <xref target="RFC9180"/> used a different
approach that generates the symmetric key and its encapsulation with
the public key of the receiver.</t>
        <t>Our choice is to use the HPKE framework that incorporates key
encapsulation mechanism (KEM), key derivation function (KDF) and
authenticated encryption with associated data (AEAD).  These multiple
schemes are more robust and significantly efficient than the
traditional schemes and thus lead to our choice of this framework.</t>
      </section>
    </section>
    <section anchor="pdmv2-destination-options">
      <name>PDMv2 Destination Options</name>
      <section anchor="destinations-option-header">
        <name>Destinations Option Header</name>
        <t>The IPv6 Destination Options extension header <xref target="RFC8200"/> is used to
carry optional information that needs to be examined only by a
packet's destination node(s).  The Destination Options header is
identified by a Next Header value of 60 in the immediately preceding
header and is defined in RFC 8200 <xref target="RFC8200"/>.  The IPv6 PDMv2
destination option is implemented as an IPv6 Option carried in the
Destination Options header.</t>
      </section>
      <section anchor="metrics-information-in-pdmv2">
        <name>Metrics information in PDMv2</name>
        <t>The IPv6 PDMv2 destination option contains the following base fields:</t>
        <ul empty="true" spacing="normal">
          <li>SCALEDTLR: Scale for Delta Time Last Received</li>
          <li>SCALEDTLS: Scale for Delta Time Last Sent</li>
          <li>GLOBALPTR: Global Pointer</li>
          <li>PSNTP: Packet Sequence Number This Packet</li>
          <li>PSNLR: Packet Sequence Number Last Received</li>
          <li>DELTATLR: Delta Time Last Received</li>
          <li>DELTATLS: Delta Time Last Sent</li>
        </ul>
        <t>PDMv2 adds a new metric to the existing PDM <xref target="RFC8250"/> called the
Global Pointer.  The existing PDM fields are identified with respect
to the identifying information called a "5-tuple".</t>
        <t>The 5-tuple consists of:</t>
        <ul empty="true" spacing="normal">
          <li>SADDR: IP address of the sender</li>
          <li>SPORT: Port for the sender</li>
          <li>DADDR: IP address of the destination</li>
          <li>DPORT: Port for the destination</li>
          <li>PROTC: Upper-layer protocol (TCP, UDP, ICMP, etc.)</li>
        </ul>
        <t>Unlike PDM fields, Global Pointer (GLOBALPTR) field in PDMv2 is
defined for the SADDR type.  Following are the SADDR address types
considered:</t>
        <ol spacing="normal" type="%c)"><li>Link-Local</li>
          <li>Global Unicast</li>
        </ol>
        <t>The Global Pointer is treated as a common entity over all the
5-tuples with the same SADDR type.  It is initialised to the value 1
and increments for every packet sent.  Global Pointer provides a
measure of the amount of IPv6 traffic sent by the PDMv2 node.</t>
        <t>When the SADDR type is Link-Local, the PDMv2 node sends Global
Pointer defined for Link-Local addresses, and when the SADDR type is
Global Unicast, it sends the one defined for Global Unicast
addresses.</t>
      </section>
      <section anchor="pdmv2-layout">
        <name>PDMv2 Layout</name>
        <t>PDMv2 has two different header formats corresponding to whether the
metric contents are encrypted or unencrypted.  The difference between
the two types of headers is determined from the Options Length value.</t>
        <t>Following is the representation of the unencrypted PDMv2 header:</t>
        <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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  Option Type  | Option Length | Vrsn  |     Reserved Bits     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      Random Number          |f|   ScaleDTLR   |   ScaleDTLS   |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         Global Pointer                        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      PSN This Packet          |    PSN Last Received          |
  |-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   Delta Time Last Received    |     Delta Time Last Sent      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <t>Following is the representation of the encrypted PDMv2 header:</t>
        <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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  Option Type  | Option Length | Vrsn  |     Reserved Bits     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |      Random Number          |f|                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               :
  |                      Encrypted PDM Data                       :
  :                          (30 bytes)                           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        <ul empty="true" spacing="normal">
          <li>
            <t>Option Type  </t>
            <t>
0x0F  </t>
            <t>
8-bit unsigned integer.  The Option Type is adopted from RFC 8250 <xref target="RFC8250"/>.</t>
          </li>
          <li>
            <t>Option Length  </t>
            <t>
0x12: Unencrypted PDM  </t>
            <t>
0x22: Encrypted PDM  </t>
            <t>
8-bit unsigned integer.  Length of the option, in octets, excluding the Option
  Type and Option Length fields.  The options length is used for differentiating
  PDM <xref target="RFC8250"/>, unencrypted PDMv2 and encrypted PDMv2.</t>
          </li>
          <li>
            <t>Version Number  </t>
            <t>
0x2  </t>
            <t>
4-bit unsigned number.</t>
          </li>
          <li>
            <t>Reserved Bits  </t>
            <t>
12-bits.  </t>
            <t>
Reserved bits for future use.  They are initialised to 0 for PDMv2.</t>
          </li>
          <li>
            <t>Random Number  </t>
            <t>
15-bit unsigned number.  </t>
            <t>
This is a random number with as much entropy as desired by the
        implementation.  The level of entropy should be clearly
        specified to the user.</t>
          </li>
          <li>
            <t>Flag Bit  </t>
            <t>
1-bit field.  </t>
            <t>
The flag bit indicates that the sender has used a new
        <em>SessionTemporaryKey</em> and the receiver should increment the Kri
        of the sender and derive the same new <em>SessionTemporaryKey</em>.</t>
          </li>
          <li>
            <t>Scale Delta Time Last Received (SCALEDTLR)  </t>
            <t>
8-bit unsigned number.  </t>
            <t>
This is the scaling value for the Delta Time Last Sent
        (DELTATLS) field.</t>
          </li>
          <li>
            <t>Scale Delta Time Last Sent (SCALEDTLS)  </t>
            <t>
8-bit unsigned number.  </t>
            <t>
This is the scaling value for the Delta Time Last Sent
  (DELTATLS) field.</t>
          </li>
          <li>
            <t>Global Pointer  </t>
            <t>
32-bit unsigned number.  </t>
            <t>
Global Pointer is initialized to 1 for the different source
        address types and incremented monotonically for each packet
        with the corresponding source address type.  </t>
            <t>
This field stores the Global Pointer type corresponding to the
        SADDR type of the packet.</t>
          </li>
          <li>
            <t>Packet Sequence Number This Packet (PSNTP)  </t>
            <t>
16-bit unsigned number.  </t>
            <t>
This field is initialized at a random number and is incremented
        monotonically for each packet of the 5-tuple.</t>
          </li>
          <li>
            <t>Packet Sequence Number Last Received (PSNLR)  </t>
            <t>
16-bit unsigned number.  </t>
            <t>
This field is the PSNTP of the last received packet on the
        5-tuple.</t>
          </li>
          <li>
            <t>Delta Time Last Received (DELTATLR)  </t>
            <t>
16-bit unsigned integer.  </t>
            <t>
The value is set according to the scale in SCALEDTLR.  </t>
            <t>
Delta Time Last Received =
  (send time packet n - receive time packet (n - 1))</t>
          </li>
          <li>
            <t>Delta Time Last Sent (DELTATLS)  </t>
            <t>
16-bit unsigned integer.  </t>
            <t>
The value is set according to the scale in SCALEDTLS.  </t>
            <t>
Delta Time Last Sent =
  (receive time packet n - send time packet (n - 1))</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>PDMv2 DOH can be used by an attacker to gather information about a
victim (passive attack) or to force the victim to modify its
operational parameters to comply with forged data (active attacks).</t>
      <t>In order to mitigate these, it is important that the PDMv2 DOH is
subject to:</t>
      <ol spacing="normal" type="%d)"><li>Confidentiality and</li>
        <li>Integrity</li>
      </ol>
      <t>with respect to an attacker.</t>
      <t>In the following we will refer to two different "groups", that can or
cannot belong to the same operational and management domain:</t>
      <ol spacing="normal" type="%d)"><li>Servers - implementing services.</li>
        <li>Clients-devices willing to interact with the services offered by Servers.</li>
      </ol>
      <t>We will assume, for the sake of generalization, that the Servers are
managed by an Organization (OrgA) implementing management procedures
over them, and the Clients by a different Organization (OrgB).</t>
      <t>An attacker could be in the following positions:</t>
      <ol spacing="normal" type="%d)"><li>External to OrgA or OrgB.</li>
        <li>Inside OrgA (i.e., a Server), either because it is a legitimate-but-curious
device, or as a consequence of an attack to a device.</li>
        <li>Inside OrgB (i.e., a Client), either because it is a legitimate-
but-curious device, or as a consequence of an attack to a device</li>
      </ol>
      <t>Furthermore, since PDMv2 DOH encryption could consume resources
(albeit limited), it is possible to foresee a call of DoS by resource
exhaustion.  Hence, it is relevant to consider a form of access
control to verify that the Server and Client belong to OrgA and OrgB
respectively.  This could be a <em>delegated trust</em>.</t>
      <t>In other terms, a Client could just want to verify that the Server
belongs to OrgA, without actually verifying the identity of the
Server.</t>
      <t>The Authentication and Authorization of Clients and Servers is thus
delegated to the respective Organizations.  In other terms, we do not
expect, or want, that a Client and a Server should be forced to
verify the respective identities (Authentication) or the permissions
to use PDMv2 (Authorization).</t>
      <t>The simple knowledge of the secrets required by the flow is
considered sufficient to enable PDMv2.  On the opposite, an
unsuccessful decryption <bcp14>MUST</bcp14> result in dropping the PDMv2 DOH without
further processing or, if configured to do so, might lead to
throttling, filtering, and/or logging the activity of the other
entity (Client or Server).</t>
      <t>The present document specifies a methodology to enable this delegated
trust, along with the Confidentiality and Integrity requirements, in
the PDMv2 DOH.</t>
      <t>We assume that PS and PC have verified the respective identities and
the authorization to enable PDMv2 DOH on a set of devices under their
responsibility: Secondary Servers (SS) and Secondary Clients (SC).</t>
      <t>PS-PC</t>
      <ul spacing="normal">
        <li>Perform a HPKE KEM and obtain a PairMasterSecret (PMS).</li>
        <li>The PMS is stored securely in both PS and PC, and is NOT to be
leaked.</li>
        <li>The PMS is valid only for the PC-PS pair.</li>
      </ul>
      <t>In other terms, if a PS would want to establish a pair with two PCs,
it will have two different PMSs. PMS might be re-negotiated after a given amount of time
[renegotiation TBD]</t>
      <ul spacing="normal">
        <li>
          <t>PS and PC exchange respectively the list of the SS and SC enabled
to use PDMv2.  The list can be:
          </t>
          <ul spacing="normal">
            <li>A range of IP addresses, e.g.: 2001:db8:food:beef:cafe::0/80</li>
            <li>A list of IP addresses, e.g., [2001:db8:food::1/128,
2001:db8:food::1/128]</li>
          </ul>
          <t>
Note:  </t>
          <ol spacing="normal" type="%d)"><li>How to represent the list in a compact way is out of scope of
the present document,</li>
            <li>The list could be dynamically updated.</li>
            <li>Inside OrgB (i.e., a Client), either because it is a
legitimate-but-curious device, or as a consequence of an
attack to a device</li>
          </ol>
        </li>
        <li>PS sends to the PC the Security Mode of Operation (SecMoP) to be
used, see below.</li>
      </ul>
      <t>PS-SS and PC-SC</t>
      <ul spacing="normal">
        <li>Each Secondary Sever (or Client) <bcp14>MUST</bcp14> authenticate itself with the
Primary Server (or Client).  This is out of scope of the present
specification.</li>
        <li>Each SS receives a PairServerSecret (PSS), derived using HPKE KDF,
and valid for the specific SS and the list of SCs defined above.</li>
        <li>Each SC receives a PairClientSecret (PCS), derived using HPKE KDF,
and valid for the specific SC and the list of SSs defined above.</li>
      </ul>
      <t>Since there are multiple use-cases, we define 4 modes of operations:</t>
      <ul spacing="normal">
        <li>
          <strong>No Protection</strong>: The Secrets are discarded (or not even created),
and the flows do not use PDMv2.  The scheme above is used only to
disseminate the list of Secondary Clients and Secondary Servers.
By sharing lists, this mode act as ACL (Access Control List) or
authorization of the secondaries.</li>
        <li>
          <strong>TrustedServers</strong>: The Secondary Servers are trusted, and they do
know a secret derived by the PMS.</li>
        <li>
          <strong>AsymmetricPoll</strong>: One Secondary (Server or Client) must acquire a
secret from the respective Primary.</li>
        <li>
          <strong>Identity Based Cryptography (IBC)</strong>: IBC (RFC5091) is used to
generate a shared secret between the SS and the SC.</li>
      </ul>
      <t>The <strong>TrustedServers</strong> MoP has the benefit of requiring no additional
steps to send and receive PDMv2 DOH, because each flow is protected
by a SessionKey that can be derived autonomously by both the SC and
the SS, without any interaction with the PS and PC, or any
negotiation between the SS and the SC.</t>
      <t>The possible vulnerabilities of the <strong>TrustedServers</strong> MoP are the
following:</t>
      <ul spacing="normal">
        <li>Any SS can inspect the flows directed to a different SS in the
same group.</li>
        <li>An attack to a SS might result in compromising the security of all
the flows between all the clients and the Secondary Servers
belonging to the same group.</li>
      </ul>
      <t>A possible mitigation is to split the Secondary Servers in different
sub-groups.  This is a scenario similar to the one of a PC
negotiating PDMv2 access with different PSs.</t>
      <t>The <strong>AsymmetricPoll</strong> MoP has the benefit of isolating each SS and
each SC.  Only the SS and SC involved in a communication can decrypt
their flows.</t>
      <t>The <strong>IBC</strong> MoP has the same security properties of the
<strong>AsymmetricPoll</strong> MoP, and the advantage of not requiring any
interaction between the Primary and the Secondary.  The disadvantage
is the requirement of performing a "pairing" session negotiation
between the Secondaries.</t>
      <t>It must be considered that, while secure, this MoP could be used to
perform a resource exhaustion attack on the PairDeviceKey
establishment.  Hence, a device <bcp14>MUST NOT</bcp14> reply to an IP address that
is not in the Secondary[client, server] list, and <bcp14>MUST NOT</bcp14> reply with
negative acknowledgments (e.g., in case of an incorrect decoding).</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>PDMv2 greatly improves the privacy aspects of PDM by providing
encryption.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Option Type to be assigned by IANA <xref target="RFC2780"/>.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The authors wish to thank NITK Surathkal for their support and
assistance in coding and review.  In particular Dr. Mohit Tahiliani
and Abhishek Kumar (now with Google).  Thanks also to Priyanka Sinha
for her comments.  Thanks to the India Internet Engineering Society
(iiesoc.in), in particular Dhruv Dhody, for providing the funding for
servers needed for protocol development.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2780">
          <front>
            <title>IANA Allocation Guidelines For Values In the Internet Protocol and Related Headers</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <author fullname="V. Paxson" initials="V." surname="Paxson">
              <organization/>
            </author>
            <date month="March" year="2000"/>
            <abstract>
              <t>This memo provides guidance for the IANA to use in assigning parameters for fields in the IPv4, IPv6, ICMP, UDP and TCP protocol headers.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="37"/>
          <seriesInfo name="RFC" value="2780"/>
          <seriesInfo name="DOI" value="10.17487/RFC2780"/>
        </reference>
        <reference anchor="RFC8250">
          <front>
            <title>IPv6 Performance and Diagnostic Metrics (PDM) Destination Option</title>
            <author fullname="N. Elkins" initials="N." surname="Elkins">
              <organization/>
            </author>
            <author fullname="R. Hamilton" initials="R." surname="Hamilton">
              <organization/>
            </author>
            <author fullname="M. Ackermann" initials="M." surname="Ackermann">
              <organization/>
            </author>
            <date month="September" year="2017"/>
            <abstract>
              <t>To assess performance problems, this document describes optional headers embedded in each packet that provide sequence numbers and timing information as a basis for measurements.  Such measurements may be interpreted in real time or after the fact.  This document specifies the Performance and Diagnostic Metrics (PDM) Destination Options header.  The field limits, calculations, and usage in measurement of PDM are included in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8250"/>
          <seriesInfo name="DOI" value="10.17487/RFC8250"/>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering">
              <organization/>
            </author>
            <author fullname="R. Hinden" initials="R." surname="Hinden">
              <organization/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes">
              <organization/>
            </author>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan">
              <organization/>
            </author>
            <author fullname="B. Lipp" initials="B." surname="Lipp">
              <organization/>
            </author>
            <author fullname="C. Wood" initials="C." surname="Wood">
              <organization/>
            </author>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
        <reference anchor="RFC1421">
          <front>
            <title>Privacy Enhancement for Internet Electronic Mail: Part I: Message Encryption and Authentication Procedures</title>
            <author fullname="J. Linn" initials="J." surname="Linn">
              <organization/>
            </author>
            <date month="February" year="1993"/>
            <abstract>
              <t>This document defines message encryption and authentication procedures, in order to provide privacy-enhanced mail (PEM) services for electronic mail transfer in the Internet.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1421"/>
          <seriesInfo name="DOI" value="10.17487/RFC1421"/>
        </reference>
      </references>
    </references>
    <section anchor="rationale-for-primary-server-primary-client">
      <name>Rationale for Primary Server / Primary Client</name>
      <section anchor="one-client-one-server">
        <name>One Client / One Server</name>
        <t>Let's start with one client and one server.</t>
        <artwork><![CDATA[
   +------------+  Derived Shared Secret  +------------+
   |   Client   |    ----------------->   |   Server   |
   +------+-----+                         +------+-----+
          |                                      |
          V                                      V
    Client Secret                          Server Secret
]]></artwork>
        <t>The Client and Server create public / private keys and derive a
shared secret.  Let's not consider Authentication or Certificates at
this point.</t>
        <t>What is stored at the Client and Server to be able to encrypt and
decrypt packets?  The shared secret or private key.</t>
        <t>Since we only have one Server and one Client, then we don't need to
have any kind of identifier for which private key to use for which
Server or Client because there is only one of each.</t>
        <t>Of course, this is a ludicrous scenario since no real organization of
interest has only one server and one client.</t>
      </section>
      <section anchor="multiple-clients-one-server">
        <name>Multiple Clients / One Server</name>
        <t>So, let's try with multiple clients and one Primary server</t>
        <artwork><![CDATA[
   +------------+
   |  Client 1  |  --------+
   +------------+          |
   +------------+          +--->
   |  Client 2  |    ---------->    +------------+
   +------+-----+         :         |   Server   |
          :               :         +------+-----+
          :               +---->
   +------------+         |
   |  Client n  |  -------+
   +------+-----+
]]></artwork>
        <t>The Clients and Server create public / private keys and derive a
shared secret.  Each Client has a unique private key.</t>
        <t>What is stored at the Client and Server to be able to encrypt and
decrypt packets?</t>
        <t>Clients each store a private key.  Server stores: Client Identifier
and Private Key.</t>
        <t>Since we only have one Server and multiple Clients, then the Clients
don't need to have any kind of identifier for which private key to
use for which Server but the Server needs to know which private key
to use for which Client.  So, the Server has to store an identifier
as well as the Key.</t>
        <t>But, this also is a ludicrous scenario since no real organization of
interest has only one server.</t>
      </section>
      <section anchor="multiple-clients-multiple-servers">
        <name>Multiple Clients / Multiple Servers</name>
        <t>When we have multiple clients and multiple servers, then each not
only does the Server need to know which key to use for which Client,
but the Client needs to know which private key to use for which
Server.</t>
      </section>
      <section anchor="primary-client-primary-server">
        <name>Primary Client / Primary Server</name>
        <t>Based on this rationale, we have chosen a Primary Server / Primary
Client topology.</t>
      </section>
    </section>
    <section anchor="sample-implementation-of-registration">
      <name>Sample Implementation of Registration</name>
      <section anchor="overall-summary">
        <name>Overall summary</name>
        <t>In the Registration phase, the objective is to generate a shared
secret that will be used in encryption and decryption during the Data
Transfer phase.  We have adopted a Primary-Secondary architecture to
represent the clients and servers (see Section 4.1.1).  The primary
server and primary client perform Key Encapsulation Mechanism (KEM)
<xref target="RFC9180"/> to generate a primary shared secret.  The primary server
shares this secret with secondary servers, whereas the primary client
performs Key Derivation Function (KDF) <xref target="RFC9180"/> to share client-
specific secrets to corresponding secondary clients.  During the Data
Transfer phase, the secondary servers generate the client-specific
secrets on the arrival of the first packet from the secondary client.</t>
      </section>
      <section anchor="high-level-flow">
        <name>High level flow</name>
        <t>The following steps describe the protocol flow:</t>
        <ol spacing="normal" type="%d."><li>Primary client initiates a request to the primary server.  The
request contains a list of available ciphersuites for KEM, KDF,
and AEAD.</li>
          <li>Primary server responds to the primary client with one of the
available ciphersuites and shares its public key.</li>
          <li>Primary client generates a secret and its encapsulation.  The
primary client sends the encapsulation and a salt to the primary
server.  The salt is required during KDF in the Data Transfer
phase.</li>
          <li>Primary Server generates the secret with the help of the
encapsulation and responds with a status message.</li>
          <li>Primary server shares this key with secondary servers over TLS.</li>
          <li>Primary client generates the client-specific secrets with the
help of KDF by using the info parameter as the Client IP address.
The primary client shares these keys with the corresponding
secondary clients over TLS.</li>
        </ol>
      </section>
      <section anchor="commands-used">
        <name>Commands used</name>
        <t>Two commands are used between the primary client and the primary
server to denote the setup and KEM phases.  Along with this, we have
a "req / resp" to indicate whether it's a request or response.</t>
        <t>Between primary and secondary entities, we have one command to denote
the sharing of the secret keys.</t>
      </section>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <t>Note to RFC Editor: if this document does not obsolete an existing
RFC, please remove this appendix before publication as an RFC.</t>
    </section>
    <section anchor="open-issues">
      <name>Open Issues</name>
      <t>Note to RFC Editor: please remove this appendix before publication as
an RFC.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
/wsNhogoNnkAAA==

-->

</rfc>
