<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.2.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-mularczyk-mls-splitcommit-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>MLS Split Commits</title>

    <author fullname="Joël Alwen">
      <organization>Amazon</organization>
      <address>
        <email>alwenjo@amazon.com</email>
      </address>
    </author>
    <author fullname="Marta Mularczyk">
      <organization>Amazon</organization>
      <address>
        <email>mulmarta@amazon.com</email>
      </address>
    </author>

    <date year="2024" month="October" day="21"/>

    <area>sec</area>
    <workgroup>mls</workgroup>
    

    <abstract>


<?line 53?>

<t>This document describes an extension to the MLS protocol <xref target="RFC940"/> that
improves its efficiency in terms of per-member download size. This comes at
essentially no cost. In essence, this document defines a new message type
called split commit which replaces regular MLS commits. Unlike regular commits,
a split commit can be "split" by the Delivery Service (DS) into much smaller
per-member commits, one for each receiving member. The size of a per-member
commit is always logarithmic in the group size, while the size of a regular
MLS commit can be linear. This extension works in settings with a DS that can
do the splitting which can be demanding with encrypted MLS handshake messages.
This is motivated by academic research <xref target="KKP22"/>, <xref target="HKPPW22"/>, <xref target="AHKM22"/>.</t>



    </abstract>



  </front>

  <middle>


<?line 67?>

<section anchor="introduction"><name>Introduction</name>

<section anchor="protocol-overview"><name>Protocol Overview</name>

<t>Consider the example ratchet tree from <xref section="7.4" sectionFormat="of" target="RFC9420"/>:</t>

<figure title="A Full Tree with One Unmerged Leaf" anchor="evolution-tree"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="120" viewBox="0 0 120 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 56,48 L 56,64" fill="none" stroke="black"/>
<path d="M 40,64 L 72,64" fill="none" stroke="black"/>
<path d="M 72,64 L 80,80" fill="none" stroke="black"/>
<path d="M 32,80 L 40,64" fill="none" stroke="black"/>
<g class="text">
<text x="56" y="36">Y</text>
<text x="24" y="100">X</text>
<text x="100" y="100">Z[C]</text>
<text x="16" y="116">/</text>
<text x="32" y="116">\</text>
<text x="80" y="116">/</text>
<text x="96" y="116">\</text>
<text x="8" y="132">A</text>
<text x="40" y="132">B</text>
<text x="72" y="132">C</text>
<text x="104" y="132">D</text>
<text x="8" y="164">0</text>
<text x="40" y="164">1</text>
<text x="72" y="164">2</text>
<text x="104" y="164">3</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
      Y
      |
    .-+-.
   /     \
  X       Z[C]
 / \     / \
A   B   C   D

0   1   2   3
]]></artwork></artset></figure>

<t>In a group with a ratchet tree of this form, if member 0 were to commit, they
would compute two updated path secrets X' and Y', and three encrypted versions
of these path secrets:</t>

<t><list style="numbers" type="1">
  <t>X' encrypted to B</t>
  <t>Y' encrypted to C</t>
  <t>Y' encrypted to D</t>
</list></t>

<t>With a normal MLS Commit, all three of these encrypted values are sent to each
other member -- even though each member can only decrypt one of the encrypted
values.  Since the number of encrypted values can grow linearly as the size of
the group, in the worst case, this creates quadratic data to be transmitted.</t>

<t>With split Commits, each member receives only what they decrypt.  The
committer can make individual messages for each member, or they can emit a
single message with all encrypted values, which the DS can use to construct
per-member messages.  We call the per-member messages PerMemberCommits, and the
message carrying all of the encrypted values a SplitCommit.</t>

<figure title="A committer creates per-member commits" anchor="server-aided-direct"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="280" viewBox="0 0 280 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,48 L 8,176" fill="none" stroke="black"/>
<path d="M 96,48 L 96,104" fill="none" stroke="black"/>
<path d="M 96,120 L 96,152" fill="none" stroke="black"/>
<path d="M 184,48 L 184,152" fill="none" stroke="black"/>
<path d="M 272,48 L 272,176" fill="none" stroke="black"/>
<path d="M 8,64 L 88,64" fill="none" stroke="black"/>
<path d="M 8,112 L 176,112" fill="none" stroke="black"/>
<path d="M 8,160 L 264,160" fill="none" stroke="black"/>
<polygon class="arrowhead" points="272,160 260,154.4 260,165.6" fill="black" transform="rotate(0,264,160)"/>
<polygon class="arrowhead" points="184,112 172,106.4 172,117.6" fill="black" transform="rotate(0,176,112)"/>
<polygon class="arrowhead" points="96,64 84,58.4 84,69.6" fill="black" transform="rotate(0,88,64)"/>
<g class="text">
<text x="8" y="36">A</text>
<text x="96" y="36">B</text>
<text x="184" y="36">C</text>
<text x="272" y="36">D</text>
<text x="36" y="52">E(B;</text>
<text x="72" y="52">X')</text>
<text x="36" y="100">E(C;</text>
<text x="72" y="100">Y')</text>
<text x="36" y="148">E(D;</text>
<text x="72" y="148">Y')</text>
<text x="96" y="180">|</text>
<text x="184" y="180">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
A          B          C          D
| E(B; X') |          |          |
+--------->|          |          |
|          |          |          |
| E(C; Y') |          |          |
+-------------------->|          |
|          |          |          |
| E(D; Y') |          |          |
+------------------------------->|
|          |          |          |
]]></artwork></artset></figure>

<figure title="The DS creates per-member commits" anchor="server-aided-ds"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="368" viewBox="0 0 368 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,48 L 8,256" fill="none" stroke="black"/>
<path d="M 96,48 L 96,256" fill="none" stroke="black"/>
<path d="M 184,48 L 184,184" fill="none" stroke="black"/>
<path d="M 184,200 L 184,232" fill="none" stroke="black"/>
<path d="M 272,48 L 272,232" fill="none" stroke="black"/>
<path d="M 360,48 L 360,256" fill="none" stroke="black"/>
<path d="M 8,96 L 88,96" fill="none" stroke="black"/>
<path d="M 96,144 L 176,144" fill="none" stroke="black"/>
<path d="M 96,192 L 264,192" fill="none" stroke="black"/>
<path d="M 96,240 L 352,240" fill="none" stroke="black"/>
<polygon class="arrowhead" points="360,240 348,234.4 348,245.6" fill="black" transform="rotate(0,352,240)"/>
<polygon class="arrowhead" points="272,192 260,186.4 260,197.6" fill="black" transform="rotate(0,264,192)"/>
<polygon class="arrowhead" points="184,144 172,138.4 172,149.6" fill="black" transform="rotate(0,176,144)"/>
<polygon class="arrowhead" points="96,96 84,90.4 84,101.6" fill="black" transform="rotate(0,88,96)"/>
<g class="text">
<text x="8" y="36">A</text>
<text x="100" y="36">DS</text>
<text x="184" y="36">B</text>
<text x="272" y="36">C</text>
<text x="360" y="36">D</text>
<text x="36" y="52">E(B;</text>
<text x="72" y="52">X')</text>
<text x="36" y="68">E(C;</text>
<text x="72" y="68">Y')</text>
<text x="36" y="84">E(D;</text>
<text x="72" y="84">Y')</text>
<text x="124" y="132">E(B;</text>
<text x="160" y="132">X')</text>
<text x="124" y="180">E(C;</text>
<text x="160" y="180">Y')</text>
<text x="124" y="228">E(D;</text>
<text x="160" y="228">Y')</text>
<text x="184" y="260">|</text>
<text x="272" y="260">|</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
A          DS         B          C          D
| E(B; X') |          |          |          |
| E(C; Y') |          |          |          |
| E(D; Y') |          |          |          |
+--------->|          |          |          |
|          |          |          |          |
|          | E(B; X') |          |          |
|          +--------->|          |          |
|          |          |          |          |
|          | E(C; Y') |          |          |
|          +-------------------->|          |
|          |          |          |          |
|          | E(D; Y') |          |          |
|          +------------------------------->|
|          |          |          |          |
]]></artwork></artset></figure>

</section>
</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="split-commits"><name>Split Commits</name>

<t>A Split Commit uploaded to the DS consists of two parts.  First, it contains a
SplitUpdatePath object which is a regular UpdatePath defined in {!RFC9420}}
but without the committer's LeafNode. Second, it contains a <spanx style="verb">split_commit_message</spanx>
MlsMessage (PublicMessage or PrivateMessage) which includes an epoch identifier,
the committed list of proposals and the committer's LeafNode.</t>

<t>The <spanx style="verb">split_commit_message</spanx> is signed and encrypted, while SplitUpdatePath is not.
The reason is that the DS includes in per-member commits only parts of the
SplitUpdatePath and receivers can still verify authenticity and decrypt all that
is needed. (The <spanx style="verb">split_commit_message</spanx> must be delivered in full but its size is
worst-case logarithmic.) The lack of encryption for SplitUpdatePath is not a problem
because it contains only HPKE public keys and ciphertexts. The proposals and
LeafNode (the latter containing a credential) are encrypted.</t>

<t>The purpose of the epoch identifier is to provide authenticity. In particular,
with Split Commit, the committer does not sign the HPKE keys they chose for their
updated path in the ratchet tree. However, we need authenticity for these keys
(else the adversary can replace them by their own). Thus, the committer signs instead
(as part of message framing) the epoch identifier that binds the tree hash of the new
epoch. In particular, the epoch identifier is derived from the new epoch's key
schedule.</t>

<figure><sourcecode type="tls-presentation"><![CDATA[
struct {
    UpdatePathNode nodes<V>;
} SplitUpdatePath;

struct {
    opaque epoch_identifier<V>;
    ProposalOrRef proposals<V>;
    optional<LeafNode> leaf_node;
} SplitCommit;

struct {
    // PrivateMessage or PublicMessage
    MLSMessage split_commit_message;
    optional<SplitUpdatePath> path;
} SplitCommitMessage;

struct {
    // PrivateMessage or PublicMessage
    // content_type = split_commit
    MLSMessage split_commit_message;

    optional<HPKECiphertext> encrypted_path_secret;
} PerMemberCommit;
]]></sourcecode></figure>

<t>The SplitCommit object is a new content type and SplitCommitMessage is a new
wire format. Other MLS objects account for this as specified below.</t>

<figure><sourcecode type="tls-presentation"><![CDATA[
enum {
    reserved(0),
    application(1),
    proposal(2),
    commit(3),
    split_commit(4),
    (255)
} ContentType;

struct {
    opaque signature<V>;
    select (FramedContent.content_type) {
        case commit:
            MAC confirmation_tag;
        case application:
        case proposal:
        case split_commit:
            struct{};
    };
} FramedContentAuthData;

struct {
    opaque group_id<V>;
    uint64 epoch;
    Sender sender;
    opaque authenticated_data<V>;

    ContentType content_type;
    select (FramedContent.content_type) {
        case application:
          opaque application_data<V>;
        case proposal:
          Proposal proposal;
        case commit:
          Commit commit;
        case split_commit:
          SplitCommit split_commit;
    };
} FramedContent;

struct {
    ProtocolVersion version = mls10;
    WireFormat wire_format;
    select (MLSMessage.wire_format) {
        case mls_public_message:
            PublicMessage public_message;
        case mls_private_message:
            PrivateMessage private_message;
        case mls_welcome:
            Welcome welcome;
        case mls_group_info:
            GroupInfo group_info;
        case mls_key_package:
            KeyPackage key_package;
        case mls_split_commit:
            SplitCommitMessage split_commit_message;
    };
} MLSMessage;
]]></sourcecode></figure>

<t>A committing group member generates a SplitCommitMessage using the following
steps:
1. Perform a regular MLS commit, without message framing.
2. Export a secret <spanx style="verb">epoch_identifier</spanx> from the new epoch with the label
   "SplitCommit".
3. Generate a SplitCommit object <spanx style="verb">split_commit</spanx> with <spanx style="verb">epoch_identifier</spanx> from
   Step 2 and <spanx style="verb">leaf_node</spanx> from <spanx style="verb">path</spanx> in the commit generated in Step 1.
4. Generate MlsMessage <spanx style="verb">split_commit_message</spanx> by framing <spanx style="verb">split_commit</spanx>.
5. Output SplitCommitMesage with <spanx style="verb">path</spanx> including <spanx style="verb">nodes</spanx> from <spanx style="verb">path</spanx> in the
   commit in Step 1, <spanx style="verb">epoch_identifier</spanx> from Step 2 and <spanx style="verb">split_commit_message</spanx>
   from Step 4.</t>

<t>If the DS knows the ratchet trees before and after the split commit, it
generates a PerMemberCommit for a receiver group member from a SplitCommit
member as follows by choosing from the SplitUpdatePath only the HPKECiphertext
for the receiver. If the SplitCommit does not contain the SplitUpdatePath
or the commit removes the receiver, the PerMemberCommit does not include
the HPKECiphertext.</t>

<t>Section 5 considers DS's that do not
know the ratchet tree.</t>

<t>A receiver group member processes a PerMemberCommit using the following steps:
1. Process the <spanx style="verb">split_commit_message</spanx> MLSMessage to recover <spanx style="verb">split_commit</spanx>.
2. Recover <spanx style="verb">path_secret</spanx> decrypting that HPKECiphertext.
3. Use <spanx style="verb">path_secret</spanx>, public keys from <spanx style="verb">path</spanx> and <spanx style="verb">proposals</spanx> to process the
   commit as specified in <xref target="RFC9420"/>.
4. Verify that <spanx style="verb">epoch_identifier</spanx> in <spanx style="verb">split_commit</spanx> matches the secret exported
   from the new epoch with the label "SplitCommit" .</t>

</section>
<section anchor="transcript-hashes"><name>Transcript Hashes</name>

<t>With split commits, the input to the confirmed transcript hash is the same as
in <xref target="RFC9420"/>. In particular, it contains the FramedContent with a
SplitCommit object inside. Split commits contain no confirmation tags, so the
interim transcript hash is simply equal to the confirmed transcript hash.</t>

</section>
<section anchor="delivering-split-commits-without-the-ratchet-tree"><name>Delivering Split Commits without the Ratchet Tree</name>

<t>If the DS does not know the ratchet tree, then it cannot determine which
ciphertexts to deliver to which members. Dealing with this is outside the scope
of this document.</t>

<t>In general, there are several ways to deal with this. For example, the sender
can annotate the ciphertexts in the split commit. Alternatively, the receiver
can "pull" the split commit without <spanx style="verb">path</spanx>, identify the sender and indicate
the index of the ciphertext it expects before pulling it. However, most DS's
work in the push not pull model and are therefore incompatible with this
solution.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="transcript-hashes-1"><name>Transcript Hashes</name>

<t>The transcript hash with split commits covers FramedContent with a SplitCommit
that contains <spanx style="verb">epoch_identifier</spanx>, <spanx style="verb">proposals</spanx> and <spanx style="verb">leaf_node</spanx>. The transcript
hash with regular commits covers FramedContent with a Commit that contains
<spanx style="verb">proposals</spanx>, <spanx style="verb">leaf_node</spanx> and <spanx style="verb">path</spanx>, as well as the confirmation tag.</t>

<t>Since <spanx style="verb">epoch_identifier</spanx> is derived from the key schedule and the tree hash of
the new epoch is mixed into the key schedule, the transcript hash with split
commits binds the public keys from <spanx style="verb">path</spanx>. There is no security-related reason
to agree on ciphertexts, so there is no reason to include <spanx style="verb">path</spanx> in the
transctipt hash. Note that group members do agree on <em>content</em> of the
ciphertexts in <spanx style="verb">path</spanx>. That is, they agree on the commit secret hashed into
the key schedule (and used to derive <spanx style="verb">epoch_identifier</spanx>), so they also agree
on all path secrets that they can derive (assuming no hash collisions).</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC940">
  <front>
    <title>Toward an Internet standard scheme for subnetting</title>
    <author>
      <organization>Gateway Algorithms and Data Structures Task Force</organization>
    </author>
    <date month="April" year="1985"/>
    <abstract>
      <t>Several sites now contain a complex of local links connected to the Internet via a gateway. The details of the internal connectivity are of little interest to the rest of the Internet. One way of organizing these local complexes of links is to use the same strategy as the Internet uses to organize networks, that is, to declare each link to be an entity (like a network) and to interconnect the links with devices that perform routing functions (like gateways). This general scheme is called subnetting, the individual links are called subnets, and the connecting devices are called subgateways (or bridges, or gateways). This RFC discusses standardizing the protocol used in subnetted environments in the ARPA-Internet.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="940"/>
  <seriesInfo name="DOI" value="10.17487/RFC0940"/>
</reference>

<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="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>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="KKP22">
  <front>
    <title>How to Hide MetaData in MLS-Like Secure Group Messaging: Simple, Modular, and Post-Quantum</title>
    <author fullname="Keitaro Hashimoto" initials="K." surname="Hashimoto">
      <organization>Tokyo Institute of Technology &amp;amp; AIST, Tokyo, Japan</organization>
    </author>
    <author fullname="Shuichi Katsumata" initials="S." surname="Katsumata">
      <organization>AIST &amp;amp; PQShield Ltd., Tokyo, Japan</organization>
    </author>
    <author fullname="Thomas Prest" initials="T." surname="Prest">
      <organization>PQShield SAS, Paris, France</organization>
    </author>
    <date month="November" year="2022"/>
  </front>
  <seriesInfo name="Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
  <seriesInfo name="DOI" value="10.1145/3548606.3560679"/>
<refcontent>ACM</refcontent></reference>

<reference anchor="HKPPW22">
  <front>
    <title>A Concrete Treatment of Efficient Continuous Group Key Agreement via Multi-Recipient PKEs</title>
    <author fullname="Keitaro Hashimoto" initials="K." surname="Hashimoto">
      <organization>Tokyo Institute of Technology &amp;amp; AIST, Tokyo, Japan</organization>
    </author>
    <author fullname="Shuichi Katsumata" initials="S." surname="Katsumata">
      <organization>AIST, Tokyo, Japan</organization>
    </author>
    <author fullname="Eamonn Postlethwaite" initials="E." surname="Postlethwaite">
      <organization>CWI, Amsterdam, Netherlands</organization>
    </author>
    <author fullname="Thomas Prest" initials="T." surname="Prest">
      <organization>PQShield SAS, Paris, France</organization>
    </author>
    <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
      <organization>Cloudflare, Amsterdam, Netherlands</organization>
    </author>
    <date month="November" year="2021"/>
  </front>
  <seriesInfo name="Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
  <seriesInfo name="DOI" value="10.1145/3460120.3484817"/>
<refcontent>ACM</refcontent></reference>

<reference anchor="AHKM22">
  <front>
    <title>Server-Aided Continuous Group Key Agreement</title>
    <author fullname="Joël Alwen" initials="J." surname="Alwen">
      <organization>AWS-Wickr, New York, NY, USA</organization>
    </author>
    <author fullname="Dominik Hartmann" initials="D." surname="Hartmann">
      <organization>Ruhr-University Bochum, Bochum, Germany</organization>
    </author>
    <author fullname="Eike Kiltz" initials="E." surname="Kiltz">
      <organization>Ruhr-University Bochum, Bochum, Germany</organization>
    </author>
    <author fullname="Marta Mularczyk" initials="M." surname="Mularczyk">
      <organization>AWS-Wickr, New York, NY, USA</organization>
    </author>
    <date month="November" year="2022"/>
  </front>
  <seriesInfo name="Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications" value="Security"/>
  <seriesInfo name="DOI" value="10.1145/3548606.3560632"/>
<refcontent>ACM</refcontent></reference>




    </references>

</references>


<?line 355?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </back>

<!-- ##markdown-source:
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
KTjXgztQPd4/BoGqJyK3/wdyd5DYLTAAAA==

-->

</rfc>

