<?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 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kohbrok-mls-leaf-operation-intents-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="LOI">Leaf Operation Intents</title>
    <seriesInfo name="Internet-Draft" value="draft-kohbrok-mls-leaf-operation-intents-01"/>
    <author fullname="Konrad Kohbrok">
      <organization>Phoenix R&amp;D</organization>
      <address>
        <email>konrad@ratchet.ing</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>mls</keyword>
    <abstract>
      <?line 41?>

<t>The Messaging Layer Security (MLS) protocol defined in <xref target="RFC9420"/> is an
asynchronous secure group messaging protocol, which allows group members to
propose their removal from a group.</t>
      <t>However, in some cases MLS clients can't reliably use regular Remove or
SelfRemove proposals to leave a group because they don't have an up-to-date
group state.</t>
      <t>This document specifies a LeafOperationIntent, which does not need an up-to-date
group state but which retains sufficient binding to the client's current state
to avoid replay attacks.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://kkohbrok.github.io/draft-kohbrok-mls-leaf-operation-intents/draft-kohbrok-mls-leaf-operation-intents.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-kohbrok-mls-leaf-operation-intents/"/>.
      </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/kkohbrok/draft-kohbrok-mls-leaf-operation-intents"/>.</t>
    </note>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>To leave an MLS group, a member cannot create a commit, but rather has to
propose its own removal. This can create difficulties, some of which have been
solved by the introduction of the SelfRemove proposal, which may be included in
external commits.</t>
      <t>One drawback of Remove and SelfRemove proposals is that they (like other
proposals) are bound to a specific group epoch. This means that authors of such
proposals must have an up-to-date group state to send such a proposal and
continue to keep track of that group state both to re-send the proposal if
necessary.</t>
      <t>This can be a problem if an application wants to cleanly leave a group and
immediately delete the associated group state, e.g., to erase the associated
metadata. The deletion of the group state makes it impossible for the client to
re-send the proposal in case it's not covered by the next commit. Similarly, the
client might be offline at the time and the group state might not be up-to-date.</t>
      <t>The LeafOperationIntent specified in this document allows a client to bind an
intent to leave a group to the leaf's current state. That intent can then be
proposed by any party (e.g. an external sender) in any subsequent epoch,
provided the leaf remains unchanged</t>
      <t>As users often have more than one client that needs to be removed from the group
as part of the user leaving, the intent allows expanding the leaf operation to
associated leaves.</t>
    </section>
    <section anchor="leafoperationintent">
      <name>LeafOperationIntent</name>
      <t>A LeafOperationIntent can be created by clients and distributed either to other
group members or to one or more external senders.</t>
      <sourcecode type="tls"><![CDATA[
HashReference LeafNodeRef;

MakeLeafNodeRef(value)
  = RefHash("MLS 1.0 LeafNode Reference", value)

enum {
  reserved(0),
  sender_removal_only(1),
  remove_associated_members(2),
  (255)
} RemovalMode

struct {
  opaque group_id<V>;
  uint32 sender_index;
  LeafNodeRef sender_leaf_ref;
  RemovalMode removal_mode;
} LeafOperationIntentTBS

struct {
  opaque group_id<V>;
  uint32 sender_index;
  LeafNodeRef sender_leaf_ref;
  RemovalMode removal_mode;
  /* SignWithLabel(., "LeafOperationIntentTBS", LeafOperationIntentTBS) */
  opaque signature<V>;
} LeafOperationIntent

struct {
  LeafOperationIntent intent;
} LeafOperationProposal
]]></sourcecode>
      <t>RefHash and SignWithLabel are as defined in <xref target="RFC9420"/>.</t>
      <ul spacing="normal">
        <li>
          <t><tt>group_id</tt>: The ID of the MLS group in which context the LeafOperationIntent
was sent</t>
        </li>
        <li>
          <t><tt>sender_index</tt>: The index of the sender's leaf in the group</t>
        </li>
        <li>
          <t><tt>sender_leaf_ref</tt>: Hash computed over the LeafNode of the sending client using the
MakeLeafNodeRef function</t>
        </li>
        <li>
          <t><tt>removal_mode</tt>: Indicates whether only the sender should be removed, or
whether additionally any other, associated members should be removed as well.</t>
        </li>
        <li>
          <t><tt>signature</tt>: A signature over all fields except the signature itself using the
sender's leaf signature key</t>
        </li>
      </ul>
      <t>The purpose of the <tt>removal_mode</tt> is to allow the sender to signal that other
members associated with the sender should be removed as part of this operation.
This can be useful if the sender is part of a group of associated devices, e.g.,
multiple devices belonging to the same user, to facilitate the leaving of the
entire user as opposed to just the sending client.</t>
      <section anchor="leafoperationintent-wireformat">
        <name>LeafOperationIntent WireFormat</name>
        <t>A LeafOperationIntent is an MLS WireFormat and extends the select statement in
the definition of MLSMessage as follows:</t>
        <sourcecode type="tls"><![CDATA[
struct {
    ProtocolVersion version = mls10;
    WireFormat wire_format;
    select (MLSMessage.wire_format) {
      ...
      case mls_leaf_operation_intent:
        LeafOperationIntent leaf_operation_intent;
    };
} MLSMessage;
]]></sourcecode>
      </section>
      <section anchor="creating-and-proposing-a-leafoperationintent">
        <name>Creating and proposing a LeafOperationIntent</name>
        <t>A group member creates a LeafOperationIntent by populating the <tt>group_id</tt>,
<tt>sender_index</tt> and <tt>sender_leaf_ref</tt> according to the current state of the group
and the sender's leaf.</t>
        <t>If the sender wants to signal the removal of any associated members, it can set
the <tt>removal_mode</tt> accordingly.</t>
        <t>Finally the sender creates the signature by calling <tt>SignWithLabel</tt> on the
LeafOperationIntentTBS populated as described above with
"LeafOperationIntentTBS" as label.</t>
      </section>
      <section anchor="processing-a-leafoperationintent">
        <name>Processing a LeafOperationIntent</name>
        <t>Recipients of a LeafOperationIntent MUST perform the following steps:</t>
        <ul spacing="normal">
          <li>
            <t>Verify that the <tt>group_id</tt> matches the group in which the proposal was sent</t>
          </li>
          <li>
            <t>Verify that the <tt>sender_leaf_ref</tt> is the LeafRef of the leaf at the
<tt>sender_index</tt></t>
          </li>
          <li>
            <t>Verify the <tt>signature</tt> over the <tt>intent</tt> using the signature public key in the
leaf at the <tt>sender_index</tt></t>
          </li>
        </ul>
        <t>If any of the validation steps fail, the recipient MUST consider the proposal
invalid.</t>
        <t>If the validation was successful, the recipient MAY create a
LeafOperationProposal containing the intent and either commit it directly or
send it to the group.</t>
      </section>
      <section anchor="processing-a-leafoperationproposal">
        <name>Processing a LeafOperationProposal</name>
        <t>Recipients of a LeafOperationProposal MUST perform the checks listed in
<xref target="processing-a-leafoperationintent"/> on the <tt>intent</tt> contained in the proposal.</t>
        <t>If any of the validation steps fail, the recipient MUST consider the proposal
invalid.</t>
        <t>After that, the proposal MUST be validated and processed as if it were set of
Remove proposals originating from the sender of the intent (not the sender of
the proposal).</t>
        <t>The set of Remove proposals consists of one Remove proposal targeting the
<tt>intent</tt>'s <tt>sender_index</tt>.</t>
        <t>Additionally, if <tt>removal_mode</tt> is <tt>remove_associated_members</tt>, the recipient
MUST check with the authentication service (AS, see <xref target="RFC9750"/>) whether any
other members of the group are associated with the sender (see
<xref target="additional-as-role"/>). If there are any such members, the set of Remove
proposals additionally contains one Remove proposal per associated targeting
that member's leaf index.</t>
        <t>External commits may include one or more LeafOperationProposals. Any Removes
validated as described above MUST thus be considered valid in this context.</t>
      </section>
      <section anchor="additional-as-role">
        <name>Additional AS role</name>
        <t>When using LeafOperationIntents, the AS gains the additional role of having to
identify other members in a group that are <em>associated</em> with the sender of a
LeafOperationIntent. The sole purpose of association in this document is to
determine whether other clients should be removed when a given client
communicates its intent to leave a group. In most cases, association is
determined by Credentials of the individual group members.</t>
        <t>A set of clients could, for example, be considered associated if all clients
belong to the same user.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>In contrast to proposals, LeafOperationIntents are not bound to an epoch and
thus remain valid as long as the creator's leaf doesn't change its state.</t>
      <t>Each LeafOperationIntent can thus be proposed and committed to until the sender
is either removed from the group or updates its own leaf.</t>
      <t>This allows scenarios, where, for example, members get added to or removed from
a group in the time between the creation and the proposal of the intent.</t>
      <t>If a tighter bound to the epoch, i.e. the current group state is required,
clients should use regular Remove or SelfRemove proposals instead.</t>
      <t>Epoch independence incurs a certain risk of replay attacks. The bound of the
intent to the hash of the sender's LeafNode limits that risk significantly.
However, a replay is possible, for example, if the sender's leaf still contains
the LeafNode from a KeyPackage. In that case, if the sender is later added again
with the same KeyPackage, the intent can be replayed.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="mls-proposal-types">
        <name>MLS Proposal Types</name>
        <t>This document requests the addition of a new Proposal Type under the heading of
"Messaging Layer Security".</t>
        <t>The <tt>leaf_operation_intent</tt> MLS Proposal Type is used to allow members or
external senders to convey the intent of a leaf owner to perform an operation on
their leaf.</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD</t>
          </li>
          <li>
            <t>Name: leaf_operation_intent</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>External: Y</t>
          </li>
          <li>
            <t>Path Required: Y</t>
          </li>
          <li>
            <t>Reference: RFCXXXX</t>
          </li>
        </ul>
      </section>
      <section anchor="mls-wireformats">
        <name>MLS WireFormats</name>
        <t>This document requests the addition of a new Wire Format under the heading of
"Messaging Layer Security".</t>
        <t>The <tt>mls_leaf_operation_intent</tt> MLS WireFormat allows parties to send MLSMessages
containing a LeafOperationIntent.</t>
        <ul spacing="normal">
          <li>
            <t>Value: TBD</t>
          </li>
          <li>
            <t>Name: mls_leaf_operation_intent</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: RFCXXXX</t>
          </li>
        </ul>
      </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="RFC9750">
        <front>
          <title>The Messaging Layer Security (MLS) Architecture</title>
          <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <author fullname="E. Omara" initials="E." surname="Omara"/>
          <author fullname="S. Inguva" initials="S." surname="Inguva"/>
          <author fullname="A. Duric" initials="A." surname="Duric"/>
          <date month="April" year="2025"/>
          <abstract>
            <t>The Messaging Layer Security (MLS) protocol (RFC 9420) provides a group key agreement protocol for messaging applications. MLS is designed to protect against eavesdropping, tampering, and message forgery, and to provide forward secrecy (FS) and post-compromise security (PCS).</t>
            <t>This document describes the architecture for using MLS in a general secure group messaging infrastructure and defines the security goals for MLS. It provides guidance on building a group messaging system and discusses security and privacy trade-offs offered by multiple security mechanisms that are part of the MLS protocol (e.g., frequency of public encryption key rotation). The document also provides guidance for parts of the infrastructure that are not standardized by MLS and are instead left to the application.</t>
            <t>While the recommendations of this document are not mandatory to follow in order to interoperate at the protocol level, they affect the overall security guarantees that are achieved by a messaging application. This is especially true in the case of active adversaries that are able to compromise clients, the Delivery Service (DS), or the Authentication Service (AS).</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9750"/>
        <seriesInfo name="DOI" value="10.17487/RFC9750"/>
      </reference>
    </references>
    <?line 278?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="R." surname="Robert" fullname="Raphael Robert">
        <organization>Phoenix R&amp;D</organization>
        <address>
          <email>ietf@raphaelrobert.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
