<?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.39 (Ruby 4.0.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mahy-oob-aad-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="MLS Out-Of-Band AAD">MLS Extension for Out-Of-Band Additional Authenticated Data</title>
    <seriesInfo name="Internet-Draft" value="draft-mahy-oob-aad-00"/>
    <author fullname="Rohan Mahy">
      <organization/>
      <address>
        <email>rohan.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="21"/>
    <keyword>MLS AAD</keyword>
    <keyword>additional authenticated data</keyword>
    <keyword>authenticated_data</keyword>
    <keyword>sage_aad</keyword>
    <abstract>
      <?line 38?>

<t>This document specifies an explicit way to signal that the Additional Authenticated Data does include or should include data elements that are conveyed out-of-band (ex: are not in the MLS message).</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-oob-aad/draft-mahy-oob-aad.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mahy-oob-aad/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/rohanmahy/mls-oob-aad"/>.</t>
    </note>
  </front>
  <middle>
    <?line 43?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Messaging Layer Security (MLS) protocol includes message types with Additional Authenticated Data.</t>
      <t><xref target="I-D.pham-mls-additional-wire-formats"/> defined new MLS Wire Formats for a similar purpose, however the Wire Format should be orthogonal to out-of-band AAD functionality.</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>Out-Of-Band AAD and In-Band AAD.</t>
    </section>
    <section anchor="mechanism">
      <name>Mechanism</name>
      <sourcecode type="tls"><![CDATA[
struct {
    opaque group_id<V>;
    uint64 epoch;
    ContentType content_type;
    SafeAADItem oob_aad<V>;        /*  <== this is new     */
    opaque authenticated_data<V>;  /* usually just SafeAAD */
} PrivateContentAAD;

struct {
    ProtocolVersion version = mls10;
    WireFormat wire_format;
    FramedContent content;         /* can contain SafeAAD  */
    SafeAADItem oob_aad<V>;        /*  <== this is new     */
    select (FramedContentTBS.content.sender.sender_type) {
        case member:
        case new_member_commit:
            GroupContext context;
        case external:
        case new_member_proposal:
            struct{};
    };
} FramedContentTBS;
]]></sourcecode>
      <t>Consists of:</t>
      <ul spacing="normal">
        <li>
          <t>a <tt>oob-aad</tt> extension type. This specification cannot be a "safe" extension according to <xref target="I-D.ietf-mls-extensions"/> since it requires the MLS stack to modify its behavior outside of the concept of the specific components it also defines. The presence of the <tt>oob-aad</tt> extension type in the GroupContext means that all members of the group support the extensions and that if an out-of-band AAD component is signaled, the members of the room will include its actual value in Out-Of-Band AAD, without communicating it in the <tt>authenticated_data</tt>.</t>
        </li>
        <li>
          <t>an <tt>default-oob-aad-component</tt> component type. When present in the <tt>app_data_dictionary</tt> in the GroupContext, the out-of-band value of each signaled as-needed component is also included in the Out-Of-Band AAD.</t>
        </li>
        <li>
          <t>an <tt>as-needed-oob-aad-component</tt> component type.
          </t>
          <ul spacing="normal">
            <li>
              <t>When present in the <tt>app_data_dictionary</tt> in the GroupContext it enumerates OOB AAD that can be signaled on a per-message basis.</t>
            </li>
            <li>
              <t>When present as a <tt>SafeAadItem</tt> in the <tt>aad_items</tt> list in the <tt>authenticated_content</tt>, the out-of-band value of each signaled as-needed component is also included in the Out-Of-Band AAD.</t>
            </li>
          </ul>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="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="6" month="July" year="2026"/>
            <abstract>
              <t>   The Messaging Layer Security (MLS) protocol is an asynchronous group
   authenticated key exchange protocol.  MLS provides a number of
   capabilities to applications, as well as several extension points
   internal to the protocol.  This document provides a consolidated
   application API, guidance for how the protocol's extension points
   should be used, and a few concrete examples of both core protocol
   extensions and uses of the application API.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mls-extensions-10"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.pham-mls-additional-wire-formats">
          <front>
            <title>MLS Wire Formats for PublicMessage and PrivateMessage without authenticated_data</title>
            <author fullname="Anh Pham" initials="A." surname="Pham">
              <organization>Google</organization>
            </author>
            <author fullname="Marta Mularczyk" initials="M." surname="Mularczyk">
              <organization>Amazon</organization>
            </author>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Peter Slatala" initials="P." surname="Slatala">
              <organization>Google</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document describes an extension to support two new wire formats
   for MLS messages: PublicMessageWithoutAAD and
   PrivateMessageWithoutAAD.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-pham-mls-additional-wire-formats-00"/>
        </reference>
      </references>
    </references>
    <?line 128?>

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

-->

</rfc>
