<?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.17 (Ruby 3.3.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mahy-mls-member-proof-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="MLS membership proof">A membership proof extensions for the Messaging Layer Security (MLS) Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-mahy-mls-member-proof-00"/>
    <author initials="R." surname="Mahy" fullname="Rohan Mahy">
      <organization>Rohan Mahy Consulting Services</organization>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="June" day="19"/>
    <keyword>membership proof</keyword>
    <keyword>safe extension</keyword>
    <abstract>
      <?line 34?>

<t>This document describes an MLS safe extension that members of a group
can use to assert membership to non-members.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://rohanmahy.github.io/mls-member-proof/draft-mahy-member-proof.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mahy-mls-member-proof/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/rohanmahy/mls-member-proof"/>.</t>
    </note>
  </front>
  <middle>
    <?line 39?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Messaging Layer Security (MLS) Protocol <xref target="RFC9420"/> is a group key
management protocol which also provides group agreement on the membership
and group context during each epoch. This document defines a Safe Extension
(Section 2 of <xref target="I-D.ietf-mls-extensions"/>) that can be used for members to
assert membership in the group to non-members (for example, an MLS
Distribution Service), such that a dishonest assertion will be immediately
apparent to other members.</t>
      <t>This extension includes a new epoch-derived secret called the <tt>member_proof</tt>;
a description of how to export the <tt>member_proof</tt> public key; a
description of how to include in the Additional Authentication Data (AAD)
of MLS encrypted messages, and a signature of a usage-specfic struct of an
encrypted message signed with the <tt>member_proof</tt> private key.</t>
      <t>Depending on the specific usage of this extension, signing specific MLS
messages could be either required for every member of a group, or used
optionally by any member as it sees fit.</t>
      <t>The document also defines a usage for sharing signatures of handshake messages so they can be safely shared out-of-band with another party
(for example an MLS Distribution Service).</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?>

<t>This document refers to TLS Presentation Language <xref target="RFC8446"/> structs
defined in the MLS protocol <xref target="RFC9420"/>.</t>
    </section>
    <section anchor="mechanism">
      <name>Mechanism</name>
      <section anchor="sending-a-privatemessage-with-a-membership-proof">
        <name>Sending a PrivateMessage with a membership proof</name>
        <t>This document defines a new Safe Extension for sending a membership
proof in the Additional Authenticated Data (AAD) of an MLS PrivateMessage.
A sender follows the following steps:</t>
        <ol spacing="normal" type="1"><li>
            <t>Derive the <tt>member_proof</tt> key pair using the ExtensionType
<tt>member_proof</tt>. The private key is known as <tt>MemberProofPrivKey</tt>
and the public key is known as <tt>MemberProofPubKey</tt>.</t>
          </li>
          <li>
            <t>Generate a new unique nonce of <tt>KDF.Nh</tt> octets using the Key
Derivation Function of the current cipher suite.</t>
          </li>
          <li>
            <t>Calculate the hash of the concatenation of the nonce and whatever
data (the <tt>UsageData</tt>) is required by the usage of the application.
The hash function is the hash function from the current cipher suite.
The hash is known as the (<tt>ContentHash</tt>)</t>
          </li>
        </ol>
        <artwork><![CDATA[
ContentHash = hash(concatenation(nonce + FramedContent))
]]></artwork>
        <ol spacing="normal" type="1"><li>
            <t>Sign <tt>ContentHash</tt> with the <tt>ExtensionType</tt> for the usage,
using the <tt>member_proof</tt> private key (<tt>MemberProofPrivKey</tt>):</t>
          </li>
        </ol>
        <artwork><![CDATA[
safe_signature = SafeSignaSafeSignWithLabel(
   ExtensionType, MemberProofPrivKey, Label, ContentHash)
]]></artwork>
        <t>where <tt>ExtensionType</tt> is the IANA-assigned value for
the usage, <tt>MemberProofPrivKey</tt> is the private
key derived from <tt>member_proof</tt> for the current epoch, and
<tt>ContentHash</tt> is calculated in the previous step.
(Label is defined as "MLS 1.0 ExtensionData" in
<xref target="I-D.ietf-mls-extensions"/>.)</t>
        <ol spacing="normal" type="1"><li>
            <t>The <tt>MemberProofAAD</tt> struct is conveyed in the <tt>aad_item_data</tt> of the
<tt>aad_items</tt> of the <tt>authenticated_data</tt> of the <tt>PrivateMessage</tt>, using
the usage's <tt>ExtensionType</tt>.</t>
          </li>
        </ol>
        <t><tt>tls
struct {
   opaque nonce&lt;V&gt;;
   opaque safe_signature&lt;V&gt;;
   optional opaque MemberProofPubKey;
} MemberProofAAD;
</tt></t>
        <t>The <tt>MemberProofPubKey</tt> public key <bcp14>SHOULD</bcp14> be included unless the
sender knows the intended target will receive it another way.</t>
      </section>
      <section anchor="verifying-a-privatemessage-with-a-membership-proof">
        <name>Verifying a PrivateMessage with a membership proof</name>
        <ol spacing="normal" type="1"><li>
            <t>Verify that the AAD in messages conforms to the policy of the group
(that required items are present, and forbidden )</t>
          </li>
          <li>
            <t>If present, find the MemberProofAAD in the <tt>aad_items</tt> of the
<tt>authenticated_data</tt> of a PrivateMessage; extract the nonce,
<tt>safe_signature</tt> and <tt>MemberProofPubKey</tt>.</t>
          </li>
          <li>
            <t>Members verify that the <tt>MemberProofPubKey</tt> matches the derived
key for <tt>member_proof</tt> for the current epoch.</t>
          </li>
          <li>
            <t>Members calculate the <tt>ContentHash</tt> of the nonce and the relevant
<tt>UsageData</tt>.</t>
          </li>
          <li>
            <t>Members verify that the <tt>safe_signature</tt> is correct.</t>
          </li>
          <li>
            <t>Perform any additional usage-related verifications.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="handshake-sharing-usage">
      <name>Handshake Sharing Usage</name>
      <t>This document also defines a usage of this member proofs to share an
unencrypted copy of the <tt>FramedContent</tt> of commits and proposals
(collectively handshake messages) that are inside an MLS <tt>PrivateMessage</tt>,
typically to an MLS Distribution Service (DS). It creates the
<tt>handshake_framed_data_hash</tt> <tt>extension_type</tt>. For this usage the
<tt>UsageData</tt> consists of the <tt>FramedContent</tt> of the handshake message.</t>
      <t>The client sending the handshake message makes an assurance that the
handshake message is the same as the encrypted one.</t>
      <t>The sharing client can share a copy of the FramedContent of the
handshakes with the DS. The DS calculates the signature on FramedContent
it receives with the signature in the MemberProofAAD of the PrivateMessage.
Other members compare the signature in the MemberProofAAD with their own
in-group copy of the FramedContent. If the signature does not match, the
other members know that the the sharing client is either malicious or
has a bug. In either case, the other clients know that they can no longer
trust the sharing client and can take whatever actions are necessary to
exclude it (ex: informing the DS, forcibly removing the client from the
group if possible, or creating new groups without the client).</t>
      <t>When a client sends commit message using this usage, it can also send a
<tt>SafeAADItem</tt> with the <tt>extension_type</tt> of <tt>next_epoch_member_proof_key</tt>.
The <tt>aad_item_data</tt> is the public key of the <tt>member_proof</tt> for the next
epoch, if the commit is accepted by the group.</t>
      <t>Other members which receive a <tt>next_epoch_member_proof_key</tt> extension
in the <tt>aad_items</tt> of the <tt>authenticated_data</tt> need to verify that it
was sent only in a commit, and that the public key would be correct if
the commit is accepted. (If the commit is already invalid for other
reasons, the client does not need to continue this verification).</t>
    </section>
    <section anchor="new-requirements-on-safe-extensions-framework">
      <name>New Requirements on Safe Extensions framework</name>
      <t>This document depends on two new features of the Safe Extensions
framework, currently documented in PRs #28 (exporting the <tt>member_proof</tt>
public key) and #29 (framing/muxing of AAD) on
<xref target="I-D.ietf-mls-extensions"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the addition of various new values under the heading
of "Messaging Layer Security".  Each registration is organized under the
relevant registry Type.</t>
      <t>RFC EDITOR: Please replace XXXX throughout with the RFC number assigned to
this document</t>
      <section anchor="mls-extension-type-handshakeframeddatahash">
        <name>MLS Extension Type handshake_framed_data_hash</name>
        <ul spacing="normal">
          <li>
            <t>Value: To be assigned by IANA</t>
          </li>
          <li>
            <t>Name: handshake_framed_data_hash</t>
          </li>
          <li>
            <t>Message(s): AD: This extension may appear in SafeAADInfo objects.</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: RFC XXXX</t>
          </li>
        </ul>
      </section>
      <section anchor="mls-extension-type-nextepochmemberproofkey">
        <name>MLS Extension Type next_epoch_member_proof_key</name>
        <ul spacing="normal">
          <li>
            <t>Value: To be assigned by IANA</t>
          </li>
          <li>
            <t>Name: next_epoch_member_proof_key</t>
          </li>
          <li>
            <t>Message(s): GC, AD: This extension may appear in GroupContext objects
            and/or SafeAADInfo objects.</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: RFC XXXX</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="I-D.ietf-mls-extensions">
        <front>
          <title>The Messaging Layer Security (MLS) Extensions</title>
          <author fullname="Raphael Robert" initials="R." surname="Robert">
            <organization>Phoenix R&amp;D</organization>
          </author>
          <date day="24" month="April" year="2024"/>
          <abstract>
            <t>   This document describes extensions to the Messaging Layer Security
   (MLS) protocol.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/mlswg/mls-extensions.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-mls-extensions-04"/>
      </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>
      <reference anchor="RFC8446">
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
          <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
          <date month="August" year="2018"/>
          <abstract>
            <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
            <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8446"/>
        <seriesInfo name="DOI" value="10.17487/RFC8446"/>
      </reference>
    </references>
    <?line 234?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
V5haTBnqQTbzBjABwGB5riA5BYmuCbBvFHy6pkgkujuTVZb5YSj2WFWaGqhU
UcoG3RwOnzVQkSdTEhWPFe1DuNOfHUW09QSNTUO5RyJR6bBuBJoqFd/CaVe3
FD5THxSiHrZhCDPbJNmZLqdddpz2HSM02P/RbpoNUT+dTmWZWOGl+0jukeWq
Zpqvf/r2ZWus62nNS8/hftYWo70Un2QXj5d0siuUdhBgmyt9kuYyhUv0GFSY
QEkGyScAinDnQ1TLpDSpVMUCjQT3KoWONPE/as9Q890rqpuRBX+Co83X/1se
REZxy1yXxJlsPCF7tgpo7ro5pbPXZVBoHYzluuY9Xl0zI9uay7Lc5X9XVWGb
GZplncp9zgun8+Y9HDb2t1VtdLc8y7a8arcLbSr/knoFuiJoqL4vpl37T1m+
3QkM6eTct553G1DtMvhKldFSOxP60GcaoFD/nOgfMguHE6NOIutywlbyoqdC
J/pOpaVopa0hx/KDSmxCwYENiSJqa74cyktdkANw96OaMsf1gDiPKYl39ZnP
con2pm5qrn3TwxJt1l47W6XQ5flmi/FiB+QGiNrMKm0azSjLa3+cdvIagxRl
q5UpXXODnfLM4kyBtIjGPKK7JNT62x2Yv7ag4wyIJq47qS16EuU6NxH3iHRr
9HC/Jfcm1/twe2T4QtNdnfPj+uzbOcvOrny7ZBtPa1K+LZno5Ak7jbEeKd6h
MTVFq8XR9hE8XAWyoa/vYKPEkFFCvbtzKlz8vbtXQ4KsCkXuF7xJbM/2KdFC
jFC5NKbL0nBy6Iy9BNT3emN37NtRJ1BBfahtapXJtUtfk+smiLwkzV1G2t1P
mDIwbGunZn5oTboU5SXbrOkv2ndH5IQ596mfsWE4GbU8yj1h0kG4tXsAB6bS
7s5xBhWQIRwfcRsrOrdZnGkaFii3TUC3LO7OZKVA+VxpoASCY8Ims2qBU9Mw
I1JW8yH+ysxtsXGIu81IM5lk6QI1Nn8/2HUyRSpNLcmPQkkuVeQvKaBeCisB
54JCTugP/sarlHv6g/tCUayC/06u+8S0kZkhQAu9yu7CG39aqL+FQ9kgK2Wo
/GZ0vYhg41ilJdS78BTnG1lVtnahu5SfkY7IXZsYsp586mAIJXKI3z4JTaoy
DdISqcSUil04winyXbv63uAC7p1SDN5y4rhtJ5fb95y8bnYUZaFEbQqTQBW7
sxOdIHxhakITxUrRRXUUaQ5k3wwxPoCi6/zuujrULupxqVufXB5M/rvrx1RT
tZR1MpwpxT3d0rgbcXiAYROxAn2fNX0ItBC5D5eGPhFCcbFb8aHcO90CJYHL
xHQUGgfjbho5LATGLVy433a/OlKD+HQ5b9JKOzdpJ1Z3YfcWfnjlSq0VBxll
mM6dhZWcSejr1/ZVR85+Sber9xn79Fw3N5Ek18Zeot6rHyoVwBg2dMX/5ZWV
T46+ovCjq+vdbaBoAN5n5J8cvZB7tDvmH6yqD3zrO5furuR3+hMCov6aQh+W
kKELFW4tLyYX/EEGXdz2y43rKtT5lC+5e/fVDUlxB0YixiOEuP9DxHKFzjkR
9qWWBPN6D33j6Q3Rnyr2+wUVAyrcAPjvY1z++w1FKNvC5LWkvgZaXp0cy1eT
05uLq5G8TOA+VOLliULO/Rv+sBgRt2AyqomC1qSVv6b2LSxosnNpyh0DFSrN
RRedKB8uRoR4Kn8iIEbyhi9b670R+4Q03r/l74GP7PHUfxLTe3Z/JMeTkdz4
pLJSa9nctgYiBKHLbPZPRCJqy6fwfgo27o5G8hcemKOZRyEyYuUJmYcUfIR6
Pl/Dxzbpqvj6uP/7avJH42P/Tc7ryV9Gmz9AegAa+b8A4c+VMxW9p9gYR5Sb
Ex0vmETEx5FzGR1/05sjG+neJxdIoLowEw75X/wyyAB+IAAA

-->

</rfc>
