<?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.7.29 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-robert-mls-targeted-messages-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title>MLS Targeted Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-robert-mls-targeted-messages-00"/>
    <author fullname="Raphael Robert">
      <organization>Phoenix R&amp;D GmbH</organization>
      <address>
        <email>ietf@raphaelrobert.com</email>
      </address>
    </author>
    <date year="2025" month="July" day="03"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>MLS</keyword>
    <abstract>
      <?line 35?>

<t>MLS targeted messages allow sending encrypted messages to a specific member of
an MLS group.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://raphaelrobert.github.io/mls-targeted-messages/draft-robert-mls-targeted-messages.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-robert-mls-targeted-messages/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Messaging Layer Security Working Group mailing list (<eref target="mailto:mls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/raphaelrobert/mls-targeted-messages"/>.</t>
    </note>
  </front>
  <middle>
    <?line 41?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MLS application messages make sending encrypted messages to all group members
easy and efficient. Sometimes application protocols mandate that messages are
only sent to specific group members, either for privacy or for efficiency
reasons.</t>
      <t>Targeted messages are a way to achieve this without having to create a new group
with the sender and the specific recipients – which might not be possible or
desired. Instead, targeted messages define the format and encryption of a
message that is sent from a member of an existing group to another member of
that group.</t>
      <t>The goal is to provide a one-shot messaging mechanism that provides
confidentiality and authentication, reusing mechanisms from <xref target="RFC9420"/>, in
particular <xref target="RFC9180"/>. Targeted messages can be used as a building block
for more complex messaging protocols.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>
      <?line -18?>

</section>
    <section anchor="format">
      <name>Format</name>
      <t>This extension defines the <tt>mls_targeted_message</tt> WireFormat, where the content
is a <tt>TargetedMessage</tt>.</t>
      <sourcecode type="tls"><![CDATA[
struct {
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
  opaque authenticated_data<V>;
  opaque encrypted_sender_auth_data<V>;
  opaque ciphertext<V>;
} TargetedMessage;

struct {
  uint32 sender_leaf_index;
  opaque signature<V>;
  opaque kem_output<V>;
} TargetedMessageSenderAuthData;

struct {
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
  opaque authenticated_data<V>;
  TargetedMessageSenderAuthData sender_auth_data;
} TargetedMessageTBM;

struct {
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
  opaque authenticated_data<V>;
  uint32 sender_leaf_index;
  opaque kem_output<V>;
  opaque ciphertext<V>;
} TargetedMessageTBS;

struct {
  opaque group_id<V>;
  uint64 epoch;
  opaque label<V> = "MLS 1.0 targeted message psk";
} PSKId;

struct {
   opaque application_data<V>;
   opaque padding[length_of_padding];
} TargetedMessageContent;
]]></sourcecode>
    </section>
    <section anchor="authentication">
      <name>Authentication</name>
      <t>A targeted message is authenticated by the sender's signature. The sender uses
the signature key of the its <tt>LeafNode</tt>. The signature scheme used is the
signature scheme specified in the cipher suite of the MLS group. The signature
is computed over the serialized <tt>TargetedMessageTBS</tt> struct and is included in
the <tt>TargetedMessageSenderAuthData.signature</tt> field:</t>
      <sourcecode type="tls"><![CDATA[
signature = SignWithLabel(sender_leaf_node_signature_private_key,
              "TargetedMessageTBS", targeted_message_tbs)
]]></sourcecode>
      <t>The recipient <bcp14>MUST</bcp14> verify the signature:</t>
      <sourcecode type="tls"><![CDATA[
VerifyWithLabel.verify(sender_leaf_node.signature_key,
                       "TargetedMessageTBS",
                       targeted_message_tbs,
                       signature)
]]></sourcecode>
      <t>In addition, targeted messages are authenticated using a pre-shared key (PSK),
exported through the MLS exporter for the epoch specified in
SenderAuthDataAAD.epoch:</t>
      <sourcecode type="tls"><![CDATA[
targeted_message_psk =
  MLS-Exporter("targeted message", "psk", KDF.Nh)
]]></sourcecode>
      <t>The <tt>targeted_message_psk</tt> is used as the <tt>psk</tt> parameter to the HPKE encryption.
The corresponding <tt>psk_id</tt> parameter is the serialized <tt>PSKId</tt> struct.</t>
      <section anchor="additional-authenticated-data-aad">
        <name>Additional Authenticated Data (AAD)</name>
        <t>Targeted messages can include additional authenticated data (AAD) in the
<tt>TargetedMessage.authenticated_data</tt> field. This field is used to carry
application-specific data that is authenticated but not encrypted. The AAD is
included in the <tt>TargetedMessagesTBM</tt> struct.</t>
      </section>
    </section>
    <section anchor="encryption">
      <name>Encryption</name>
      <t>Targeted messages uses HPKE to encrypt the message content between two leaves.</t>
      <section anchor="padding">
        <name>Padding</name>
        <t>The TargetedMessageContent.padding field is set by the sender, by first encoding
the application data and then appending the chosen number of zero bytes. A
receiver identifies the padding field in a plaintext decoded from
TargetedMessage.ciphertext by first decoding the application data; then the
padding field comprises any remaining octets of plaintext. The padding field
<bcp14>MUST</bcp14> be filled with all zero bytes. A receiver <bcp14>MUST</bcp14> verify that there are no
non-zero bytes in the padding field, and if this check fails, the enclosing
TargetedMessage <bcp14>MUST</bcp14> be rejected as malformed. This check ensures that the
padding process is deterministic, so that, for example, padding cannot be used
as a covert channel.</t>
      </section>
      <section anchor="sender-data-encryption">
        <name>Sender data encryption</name>
        <t>In addition, <tt>TargetedMessageSenderAuthData</tt> is encrypted similarly to
<tt>MLSSenderData</tt> as described in <xref section="6.3.2" sectionFormat="of" target="RFC9420"/>. The
<tt>TargetedMessageSenderAuthData.sender_leaf_index</tt> field is the leaf index of the
sender. The <tt>TargetedMessageSenderAuthData.signature</tt> field is the signature of
the <tt>TargetedMessageTBS</tt> structure. The
<tt>TargetedMessageSenderAuthData.kem_output</tt> field is the KEM output of the HPKE
encryption.</t>
        <t>The key and nonce provided to the AEAD are computed as the KDF of the first
KDF.Nh bytes of the <tt>ciphertext</tt> generated in the following section. If the
length of the ciphertext is less than KDF.Nh, the whole ciphertext is
used. In pseudocode, the key and nonce are derived as:</t>
        <sourcecode type="tls"><![CDATA[
sender_auth_data_secret =
  MLS-Exporter("targeted message", "sender auth data secret", KDF.Nh)

ciphertext_sample = ciphertext[0..KDF.Nh-1]

sender_data_key = ExpandWithLabel(sender_auth_data_secret, "key",
                      ciphertext_sample, AEAD.Nk)
sender_data_nonce = ExpandWithLabel(sender_auth_data_secret, "nonce",
                      ciphertext_sample, AEAD.Nn)
]]></sourcecode>
        <t>The Additional Authenticated Data (AAD) for the <tt>SenderAuthData</tt> ciphertext is
the first three fields of <tt>TargetedMessage</tt>:</t>
        <sourcecode type="tls"><![CDATA[
struct {
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
} SenderAuthDataAAD;
]]></sourcecode>
      </section>
      <section anchor="application-data-encryption">
        <name>Application data encryption</name>
        <t>The <tt>TargetedMessageContent</tt> struct contains the application data to be sent
to the recipient. The <tt>application_data</tt> field contains the application data
to be sent, and the <tt>padding</tt> field contains padding bytes to ensure that the
ciphertext is of a length that is a multiple of the AEAD tag length.</t>
        <t>The <tt>TargetedMessageContent</tt> struct is serialized and then encrypted
using HPKE.</t>
        <t>The HPKE context is a TargetedMessageContext struct with the
following content, where <tt>group_context</tt> is the serialized context of the MLS
group:</t>
        <sourcecode type="tls"><![CDATA[
struct {
  opaque label<V>;
  opaque context<V>;
} TargetedMessageContext;

label = "MLS 1.0 TargetedMessageData"
context = group_context
]]></sourcecode>
        <t>The TargetedMessageContext struct is serialized as hpke_context and is used by
both the sender and the recipient. The recipient's leaf node HPKE encryption key
from the MLS group is used as the recipient's public key
<tt>recipient_node_public_key</tt> for the HPKE encryption.</t>
        <t>The <tt>TargetedMessageTBM</tt> struct is serialized as <tt>targeted_message_tbm</tt>, an is
used as the <tt>aad</tt> parameter for the HPKE encryption.</t>
        <t>The sender computes <tt>TargetedMessageSenderAuthData.kem_output and
</tt>TargetedMessage.ciphertext`:</t>
        <sourcecode type="tls"><![CDATA[
(kem_output, ciphertext) = SealPSK(
                                        /* pkR */
                                        recipient_node_public_key,
                                        /* info */
                                        hpke_context,
                                        /* aad */
                                        targeted_message_tbm,
                                        /* pt */
                                        targeted_message_content,
                                        /* psk */
                                        targeted_message_psk,
                                        /* psk_id */
                                        psk_id)
]]></sourcecode>
        <t>The recipient decrypts the content as follows:</t>
        <sourcecode type="tls"><![CDATA[
targeted_message_content = OpenPSK(kem_output,
                  receiver_node_private_key,
                  hpke_context,
                  targeted_message_tbm,
                  ciphertext,
                  targeted_message_psk,
                  psk_id)
]]></sourcecode>
        <t>The functions <tt>SealPSK</tt> and <tt>OpenPSK</tt> are defined in <xref target="RFC9180"/>.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>In addition to the sender authentication, Targeted Messages are authenticated by
using a pre-shared key (PSK) between the sender and the recipient. The PSK is
exported from the group key schedule using the label "targeted message psk".
This ensures that the PSK is only valid for a specific group and epoch, and the
Forward Secrecy and Post-Compromise Security guarantees of the group key
schedule apply to the targeted messages as well. The PSK also ensures that an
attacker needs access to the private group state in addition to the
HPKE/signature's private keys. This improves confidentiality guarantees against
passive attackers and authentication guarantees against active attackers.`</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="mls-wire-formats">
        <name>MLS Wire Formats</name>
        <t>The <tt>mls_targeted_message</tt> MLS Wire Format is used to send a message to a subset
of members of an MLS group.</t>
        <ul spacing="normal">
          <li>
            <t>Value: 0x0006 (suggested)</t>
          </li>
          <li>
            <t>Name: mls_targeted_message</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: RFC XXXX</t>
          </li>
        </ul>
      </section>
      <section anchor="mls-signature-labels">
        <name>MLS Signature Labels</name>
        <section anchor="targetedmessagetbs">
          <name>TargetedMessageTBS</name>
          <ul spacing="normal">
            <li>
              <t>Label: "TargetedMessageTBS"</t>
            </li>
            <li>
              <t>Recommended: Y</t>
            </li>
            <li>
              <t>Reference: RFC XXXX</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC9420">
        <front>
          <title>The Messaging Layer Security (MLS) Protocol</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
          <author fullname="R. Robert" initials="R." surname="Robert"/>
          <author fullname="J. Millican" initials="J." surname="Millican"/>
          <author fullname="E. Omara" initials="E." surname="Omara"/>
          <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
          <date month="July" year="2023"/>
          <abstract>
            <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9420"/>
        <seriesInfo name="DOI" value="10.17487/RFC9420"/>
      </reference>
      <reference anchor="RFC9180">
        <front>
          <title>Hybrid Public Key Encryption</title>
          <author fullname="R. Barnes" initials="R." surname="Barnes"/>
          <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
          <author fullname="B. Lipp" initials="B." surname="Lipp"/>
          <author fullname="C. Wood" initials="C." surname="Wood"/>
          <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="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <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"/>
          <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>
    <?line 327?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
