<?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 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sullivan-mls-attachments-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="MLS Attachments">Encrypted Attachments for MLS</title>
    <seriesInfo name="Internet-Draft" value="draft-sullivan-mls-attachments-01"/>
    <author initials="N." surname="Sullivan" fullname="Nick Sullivan">
      <organization>Cryptography Consulting LLC</organization>
      <address>
        <email>nicholas.sullivan+ietf@gmail.com</email>
      </address>
    </author>
    <author initials="R." surname="Robert" fullname="Raphael Robert">
      <organization>Phoenix R&amp;D GmbH</organization>
      <address>
        <email>ietf@raphaelrobert.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="21"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>MLS</keyword>
    <keyword>attachments</keyword>
    <keyword>random-access encryption</keyword>
    <keyword>confidentiality lifetime</keyword>
    <abstract>
      <?line 65?>

<t>This document defines random-access authenticated encryption of large
write-once files for Messaging Layer Security (MLS) groups.  A file is
encrypted so that a receiver can decrypt and authenticate any byte range
without processing the whole file.  The encryption is SEAL-attachment,
SEAL's named write-once attachment scheme (raAE), parameterized by the
AEAD and key derivation function of the group's MLS cipher suite and
keyed from the MLS exporter.  The encrypted bytes are carried by any
means, and a recipient needs only a small reference (the object's
identifier, length, and snapshot value, and an optional locator) to
fetch, key, and verify the object.  Carrying that reference in an MLS
message attributes the object to the member that sent the message.  MLS
application messages cannot carry large files, and existing attachment
encryption produces an opaque, immutable blob with no partial access.
This extension supplies the random-access layer those uses need.</t>
    </abstract>
  </front>
  <middle>
    <?line 82?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines an MLS extension for random-access authenticated
encryption of large files.  A file is encrypted with a random-access
authenticated encryption (raAE) scheme (<xref target="I-D.sullivan-cfrg-raae"/>):  it
is split into fixed-size segments, each independently decryptable and
authenticated, so a receiver can read any byte range at a cost
proportional to the range rather than to the whole file.  The scheme is
SEAL-attachment, SEAL's named write-once attachment scheme, taking the
AEAD and KDF of the group's MLS cipher suite (<xref target="parameters"/>) and its
key from the MLS exporter (<xref target="key-derivation"/>).</t>
      <t>This fills a gap in MLS.  An MLS application message protects its
content with a single AEAD operation under a forward-secret ratchet key,
so the content is all-or-nothing to decrypt and bounded by the AEAD's
per-invocation input limit.  Large files therefore cannot be sent as
messages, and the existing attachment mechanism
<xref target="I-D.robert-mimi-attachments"/> encrypts each file as a single opaque
blob that is immutable and cannot be partially decrypted.</t>
      <t>The file bytes are an opaque object distributed by any means, and the
members exchange only a small object reference (<xref target="manifest"/>) that
refers to it.  This document specifies the object's encryption and
keying.  Upload, download, storage, and the in-band reference are left
to the consuming application, for example the MIMI attachments
mechanism.  It keys SEAL from the MLS exporter, following the pattern
SFrame <xref target="RFC9605"/> established for real-time media.  Deriving the CEK
deterministically from (epoch, object_id) is a new keying discipline for
SEAL, not a new primitive, and carries its own salt-uniqueness
obligation (<xref target="salt-uniqueness"/>).</t>
      <t>Its confidentiality is at the granularity of the creating epoch's
membership, under a persistent key rather than the per-message forward
secrecy of MLS application messages (<xref target="security-considerations"/>).</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 uses the following terms.</t>
      <dl>
        <dt>Attachment object:</dt>
        <dd>
          <t>The encrypted representation of one attachment:  a SEAL-attachment
object (<xref section="SEAL Named Instantiations" relative="#named-instantiations" sectionFormat="bare" target="I-D.sullivan-seal-concrete"/> of
<xref target="I-D.sullivan-seal-concrete"/>), whose byte layout is <xref target="layout"/>.</t>
        </dd>
        <dt>Segment:</dt>
        <dd>
          <t>A fixed-size unit of attachment plaintext.  All segments except
possibly the last contain exactly segment_size octets.</t>
        </dd>
        <dt>object_id:</dt>
        <dd>
          <t>An octet string of at most 255 octets (<xref target="object-id"/>), unique within
an MLS epoch, that names one attachment object and feeds its key
derivation (<xref target="key-derivation"/>).</t>
        </dd>
        <dt>CEK:</dt>
        <dd>
          <t>The content-encryption key (CEK) of an attachment object, derived
from the MLS exporter and used as the input keying material of SEAL.</t>
        </dd>
        <dt>Object reference:</dt>
        <dd>
          <t>The application's in-band reference to an attachment object, carrying
at least the object_id, the object's plaintext length, and the
object's snapshot value (<xref target="manifest"/>).</t>
        </dd>
      </dl>
      <t>Terms from MLS (<xref target="RFC9420"/>), the MLS Safe Extension framework
(<xref target="I-D.ietf-mls-extensions"/>), and SEAL (<xref target="I-D.sullivan-cfrg-raae"/>) are
used as defined there.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>An attachment is handled on three independent planes:  a key plane that
derives the content key from the MLS exporter, an opaque bytes plane
that holds the encrypted object, and a control plane that carries a
small object reference among the members.</t>
      <figure>
        <name>The three planes of an attachment</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="528" viewBox="0 0 528 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 48,80 L 48,112" fill="none" stroke="black"/>
              <path d="M 104,176 L 104,224" fill="none" stroke="black"/>
              <path d="M 224,128 L 224,168" fill="none" stroke="black"/>
              <path d="M 352,96 L 352,168" fill="none" stroke="black"/>
              <path d="M 376,176 L 376,224" fill="none" stroke="black"/>
              <path d="M 72,128 L 120,128" fill="none" stroke="black"/>
              <path d="M 176,128 L 224,128" fill="none" stroke="black"/>
              <path d="M 104,176 L 376,176" fill="none" stroke="black"/>
              <path d="M 104,224 L 376,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="360,168 348,162.4 348,173.6" fill="black" transform="rotate(90,352,168)"/>
              <polygon class="arrowhead" points="232,168 220,162.4 220,173.6" fill="black" transform="rotate(90,224,168)"/>
              <polygon class="arrowhead" points="56,112 44,106.4 44,117.6" fill="black" transform="rotate(90,48,112)"/>
              <g class="text">
                <text x="16" y="36">key</text>
                <text x="56" y="36">plane</text>
                <text x="104" y="36">(this</text>
                <text x="168" y="36">document)</text>
                <text x="296" y="36">control</text>
                <text x="352" y="36">plane</text>
                <text x="396" y="36">(the</text>
                <text x="468" y="36">application)</text>
                <text x="16" y="68">MLS</text>
                <text x="68" y="68">exporter</text>
                <text x="324" y="68">object</text>
                <text x="392" y="68">reference</text>
                <text x="304" y="84">(object_id,</text>
                <text x="384" y="84">length,</text>
                <text x="452" y="84">locator,</text>
                <text x="508" y="84">...)</text>
                <text x="92" y="100">derive</text>
                <text x="148" y="100">(never</text>
                <text x="188" y="100">on</text>
                <text x="224" y="100">wire)</text>
                <text x="48" y="132">CEK</text>
                <text x="148" y="132">keys</text>
                <text x="396" y="132">refers</text>
                <text x="436" y="132">to</text>
                <text x="24" y="196">bytes</text>
                <text x="72" y="196">plane</text>
                <text x="192" y="196">encrypted</text>
                <text x="252" y="196">SEAL</text>
                <text x="300" y="196">object</text>
                <text x="164" y="212">(opaque;</text>
                <text x="216" y="212">see</text>
                <text x="260" y="212">Object</text>
                <text x="320" y="212">Layout)</text>
                <text x="140" y="244">stored</text>
                <text x="184" y="244">and</text>
                <text x="224" y="244">moved</text>
                <text x="260" y="244">by</text>
                <text x="288" y="244">any</text>
                <text x="344" y="244">transport</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 key plane (this document)        control plane (the application)

 MLS exporter                         object reference
      |                          (object_id, length, locator, ...)
      |  derive (never on wire)             |
      v                                     |
     CEK ------- keys ------.               |  refers to
                            |               |
                            v               v
             .---------------------------------.
 bytes plane |      encrypted SEAL object      |
             |   (opaque; see Object Layout)   |
             '---------------------------------'
               stored and moved by any transport
]]></artwork>
        </artset>
      </figure>
      <t>The CEK never appears on the wire; each side derives it from the
exporter (<xref target="key-derivation"/>).</t>
    </section>
    <section anchor="key-derivation">
      <name>Key Derivation</name>
      <t>This extension is a Safe Application component
(<xref target="I-D.ietf-mls-extensions"/>) and is assigned a Component ID, a
four-octet value, registered in <xref target="iana-considerations"/>.  All of its
uses of the MLS key schedule are domain-separated by that Component ID.</t>
      <section anchor="deriving-the-cek">
        <name>Deriving the CEK</name>
        <t>For each attachment object, the encryptor chooses an object_id and
derives the content-encryption key:</t>
        <artwork><![CDATA[
component_secret = SafeExportSecret(ComponentID)
CEK = ExpandWithLabel(component_secret,
                      ComponentOperationLabel(ComponentID,
                                              "attachment"),
                      object_id, 32)
]]></artwork>
        <t>where:</t>
        <dl>
          <dt>component_secret:</dt>
          <dd>
            <t>the component's exported secret.  SafeExportSecret is defined in
<xref section="Exported Secrets" relative="#exported-secrets" sectionFormat="bare" target="I-D.ietf-mls-extensions"/> of
<xref target="I-D.ietf-mls-extensions"/>, and ComponentOperationLabel in
<xref section="Component IDs" relative="#component-ids" sectionFormat="bare" target="I-D.ietf-mls-extensions"/> of
<xref target="I-D.ietf-mls-extensions"/>.  SafeExportSecret derives from the MLS
exporter, so the CEK is rooted in it.</t>
          </dd>
          <dt>object_id:</dt>
          <dd>
            <t>the per-object identifier (<xref target="object-id"/>), passed to ExpandWithLabel
as raw octets; the KDFLabel structure of <xref target="RFC9420"/> already
length-prefixes it, so this document adds no framing of its own.</t>
          </dd>
          <dt>CEK:</dt>
          <dd>
            <t>the 32-octet content-encryption key, SEAL's input keying material
(<xref target="I-D.sullivan-cfrg-raae"/>).</t>
          </dd>
        </dl>
        <t>The group's MLS cipher suite is fixed for the group's lifetime
(<xref target="RFC9420"/>), so an attachment uses the same AEAD and KDF throughout.</t>
      </section>
      <section anchor="object-id">
        <name>Choosing object_id</name>
        <t>An honest encryptor:</t>
        <ul spacing="normal">
          <li>
            <t><bcp14>MUST</bcp14> choose a non-empty object_id of at most 255 octets, unique
within the epoch;</t>
          </li>
          <li>
            <t><bcp14>SHOULD</bcp14> draw it from a cryptographically secure pseudorandom number
generator (CSPRNG) with no embedded semantics, for example a version
4 UUID (<xref target="RFC9562"/>), which is virtually collision-free; and</t>
          </li>
          <li>
            <t><bcp14>MUST NOT</bcp14> reuse an object_id across epochs.</t>
          </li>
        </ul>
        <t>These uniqueness requirements bind the encryptor alone:  a receiver
cannot detect reuse of an object_id, so the unlinkability they provide
rests on encryptor discipline, not on any receiver check
(<xref target="privacy-considerations"/>).</t>
        <t>An application <bcp14>MAY</bcp14> instead derive the object_id deterministically,
provided the derivation still meets the requirements above.  Deriving
it from the epoch, the sender's leaf index, and a per-object counter,
for example object_id = H(epoch, leaf_index, counter), makes
non-collision between honest senders structural rather than
probabilistic, since distinct leaf indices separate different senders'
objects and a counter separates a sender's own.  Such an object_id
embeds semantics by design:  a party that sees it can link a sender's
objects within an epoch, a linkability the CSPRNG option avoids
(<xref target="privacy-considerations"/>).  It does not attribute an object to its
writer, which only the signature does (<xref target="writer-attribution"/>).</t>
      </section>
    </section>
    <section anchor="parameters">
      <name>Parameters</name>
      <t>An attachment is a SEAL-attachment(aead_id, kdf_id) object
(<xref section="SEAL Named Instantiations" relative="#named-instantiations" sectionFormat="bare" target="I-D.sullivan-seal-concrete"/> of
<xref target="I-D.sullivan-seal-concrete"/>), where aead_id and kdf_id are the IANA
code points (<xref target="RFC5116"/>, <xref target="RFC9180"/>) of the group's MLS cipher suite's
AEAD and KDF.  The name fixes every other parameter of the scheme, so
the cipher suite is the only choice this document makes; the name fixes
a segment size, written segment_size, of 65536 octets.  A receiver
learns the cipher suite from the group state, so it is not carried in
the reference; a holder that keeps the object past its creating epoch
retains the CEK and the cipher suite's AEAD and KDF identifiers, since
the group state may no longer supply them.  The object is keyed by the
CEK (<xref target="key-derivation"/>).  Its capacity and security bounds are in
<xref target="capacity"/>.</t>
      <t>Every such object carries a snapshot value, and so does the reference to
it (<xref target="manifest"/>).  A receiver checks one segment against the snapshot
without reading the others (<xref target="encrypt-read"/>).</t>
      <section anchor="layout">
        <name>Object Layout</name>
        <t>The attachment object uses SEAL-attachment's aligned layout, which fixes
the object's byte layout and its offset arithmetic (<xref section="Aligned Layout" relative="#aligned-layout" sectionFormat="bare" target="I-D.sullivan-seal-concrete"/> of
<xref target="I-D.sullivan-seal-concrete"/>).  That layout leaves two details to the
consuming protocol, and a receiver cannot compute a segment's offset
until both are settled.  This document settles them:</t>
        <ul spacing="normal">
          <li>
            <t>There is no prefix.  An object begins with SEAL's header at offset 0.</t>
          </li>
          <li>
            <t>The slot between the header and the first segment boundary is
zero-padded, so every ciphertext segment except the last is a full
segment_size octets.</t>
          </li>
        </ul>
        <t>A receiver then derives every offset from the object's length and the
group's cipher suite, with no further input:  the length gives the
segment count, the segment count and the cipher suite's hash length give
the header's size, and the first segment begins at the next segment_size
boundary after it.</t>
        <t>Checking one segment takes three reads:  the per-epoch digests, which a
receiver reads once and caches; the metadata entries of that segment's
own epoch; and the segment itself.</t>
        <figure>
          <name>Three reads check any segment of a 128 GiB object (SHA-256)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="464" viewBox="0 0 464 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,64 L 8,336" fill="none" stroke="black"/>
                <path d="M 128,64 L 128,336" fill="none" stroke="black"/>
                <path d="M 288,112 L 288,144" fill="none" stroke="black"/>
                <path d="M 288,176 L 288,208" fill="none" stroke="black"/>
                <path d="M 288,272 L 288,304" fill="none" stroke="black"/>
                <path d="M 376,112 L 376,144" fill="none" stroke="black"/>
                <path d="M 376,176 L 376,208" fill="none" stroke="black"/>
                <path d="M 376,272 L 376,304" fill="none" stroke="black"/>
                <path d="M 8,64 L 128,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 128,96" fill="none" stroke="black"/>
                <path d="M 224,112 L 256,112" fill="none" stroke="black"/>
                <path d="M 288,112 L 376,112" fill="none" stroke="black"/>
                <path d="M 8,128 L 128,128" fill="none" stroke="black"/>
                <path d="M 288,144 L 376,144" fill="none" stroke="black"/>
                <path d="M 224,176 L 256,176" fill="none" stroke="black"/>
                <path d="M 288,176 L 376,176" fill="none" stroke="black"/>
                <path d="M 288,208 L 376,208" fill="none" stroke="black"/>
                <path d="M 8,224 L 128,224" fill="none" stroke="black"/>
                <path d="M 224,272 L 256,272" fill="none" stroke="black"/>
                <path d="M 288,272 L 376,272" fill="none" stroke="black"/>
                <path d="M 288,304 L 376,304" fill="none" stroke="black"/>
                <path d="M 8,336 Q 10,332.8 12,336 Q 14,339.2 16,336 Q 18,332.8 20,336 Q 22,339.2 24,336 Q 26,332.8 28,336 Q 30,339.2 32,336 Q 34,332.8 36,336 Q 38,339.2 40,336 Q 42,332.8 44,336 Q 46,339.2 48,336 Q 50,332.8 52,336 Q 54,339.2 56,336 Q 58,332.8 60,336 Q 62,339.2 64,336 Q 66,332.8 68,336 Q 70,339.2 72,336 Q 74,332.8 76,336 Q 78,339.2 80,336 Q 82,332.8 84,336 Q 86,339.2 88,336 Q 90,332.8 92,336 Q 94,339.2 96,336 Q 98,332.8 100,336 Q 102,339.2 104,336 Q 106,332.8 108,336 Q 110,339.2 112,336 Q 114,332.8 116,336 Q 118,339.2 120,336 Q 122,332.8 124,336 Q 126,339.2 128,336 " fill="none" stroke="black"/>
                <polygon class="arrowhead" points="264,272 252,266.4 252,277.6" fill="black" transform="rotate(0,256,272)"/>
                <polygon class="arrowhead" points="264,176 252,170.4 252,181.6" fill="black" transform="rotate(0,256,176)"/>
                <polygon class="arrowhead" points="264,112 252,106.4 252,117.6" fill="black" transform="rotate(0,256,112)"/>
                <g class="text">
                  <text x="52" y="36">object</text>
                  <text x="316" y="36">each</text>
                  <text x="356" y="36">read</text>
                  <text x="60" y="84">96</text>
                  <text x="80" y="84">B</text>
                  <text x="64" y="116">digests</text>
                  <text x="156" y="116">64</text>
                  <text x="184" y="116">KiB</text>
                  <text x="316" y="132">64</text>
                  <text x="344" y="132">KiB</text>
                  <text x="400" y="132">all</text>
                  <text x="68" y="164">metadata</text>
                  <text x="44" y="180">2048</text>
                  <text x="92" y="180">epochs</text>
                  <text x="156" y="180">96</text>
                  <text x="184" y="180">MiB</text>
                  <text x="316" y="196">48</text>
                  <text x="344" y="196">KiB</text>
                  <text x="392" y="196">1</text>
                  <text x="424" y="196">epoch</text>
                  <text x="68" y="260">segments</text>
                  <text x="36" y="276">2M</text>
                  <text x="84" y="276">segments</text>
                  <text x="160" y="276">128</text>
                  <text x="192" y="276">GiB</text>
                  <text x="316" y="292">64</text>
                  <text x="344" y="292">KiB</text>
                  <text x="392" y="292">1</text>
                  <text x="432" y="292">segment</text>
                  <text x="312" y="340">176</text>
                  <text x="344" y="340">KiB</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
        object                            each read

     +--------------+
     |     96 B     |
     +--------------+
     |   digests    |  64 KiB   ---->   +----------+
     +--------------+                   |  64 KiB  | all
     |              |                   +----------+
     |   metadata   |
     |  2048 epochs |  96 MiB   ---->   +----------+
     |              |                   |  48 KiB  | 1 epoch
     |              |                   +----------+
     +--------------+
     |              |
     |   segments   |
     |  2M segments |  128 GiB  ---->   +----------+
     |              |                   |  64 KiB  | 1 segment
     |              |                   +----------+
     |              |
     +~~~~~~~~~~~~~~+                     176 KiB
]]></artwork>
          </artset>
        </figure>
        <t>The entries are grouped by epoch, which is what bounds the second read:
an epoch's 1024 entries are adjacent, so one read returns all of them.
An epoch's digest is 32 octets, so 2048 of them fill one read, which is
the 128 GiB above.</t>
      </section>
      <section anchor="encrypt-read">
        <name>Encrypting and Reading</name>
        <t>To encrypt, the encryptor derives the CEK, generates a fresh salt per
the freshness requirement of <xref target="salt-uniqueness"/>, and runs SEAL
encryption with the parameters of <xref target="parameters"/>, writing the salt,
commitment, and segments in the layout of <xref target="layout"/>.</t>
        <t>On StartEnc and StartDec, both sides supply the object_id as G, SEAL's
global associated data (<xref section="Per-Message Inputs" relative="#message-inputs" sectionFormat="bare" target="I-D.sullivan-cfrg-raae"/> of <xref target="I-D.sullivan-cfrg-raae"/>).  SEAL's
commitment binds G, so a wrong or missing object_id fails the commitment
check as a wrong CEK does.  The object_id thus serves twice:  it derives
the CEK (<xref target="key-derivation"/>) and is the committed G.</t>
        <t>A receiver opens an object in two phases:  it initializes once, then
reads ranges, and it needs the header only for the first phase.</t>
        <t>To initialize, the receiver derives the CEK, fetches the header (the
salt and commitment), and calls StartDec to obtain the decryption state.
StartDec checks the commitment, rejecting a wrong key before any segment
is read.  The receiver retains the state and does not need the header
again.</t>
        <t>To read octet range [a, b), the receiver fetches the segments that cover
it, at offsets the layout fixes (<xref target="layout"/>), and opens each with
DecSeg, which runs the key schedule and AEAD inside.</t>
        <t>Opening a segment authenticates it only to the group, since every member
holds the CEK (<xref target="writer-attribution"/>); whole-object integrity comes
from the snapshot the reference carries (<xref target="manifest"/>).</t>
        <t>A receiver checks a segment against that snapshot by SEAL's
random-access verification, which is not restated here
(<xref section="Epoch Digest Tree" relative="#epoch-digest-tree" sectionFormat="bare" target="I-D.sullivan-seal-concrete"/> of
<xref target="I-D.sullivan-seal-concrete"/>).</t>
        <t>One input to that check differs here.  The value a receiver compares
against <bcp14>MUST</bcp14> be the snapshot the reference carries, and a receiver <bcp14>MUST
NOT</bcp14> substitute the copy stored in the object.  SEAL compares against the
stored copy, which suffices where each object has a fresh random CEK.
Here every member derives the CEK and can compute a stored copy that
matches any object it writes, so the stored copy attributes nothing.
Only the value the group authenticated does.</t>
        <t>This check is only as strong as the snapshot it starts from, so it gives
whole-object completeness and attribution only when the reference is
authenticated to the group (<xref target="manifest"/>).</t>
        <t>A valid attachment object has at least one segment.  A receiver <bcp14>MUST</bcp14>
reject the object when:</t>
        <ul spacing="normal">
          <li>
            <t>StartDec rejects the header (a wrong key or parameter set);</t>
          </li>
          <li>
            <t>SEAL's verification fails against the snapshot the reference carries;</t>
          </li>
          <li>
            <t>DecSeg rejects a segment it opens (the contents, index, or finality
fail to authenticate);</t>
          </li>
          <li>
            <t>a segment it needs is absent (the object is shorter than the
reference's length implies);</t>
          </li>
          <li>
            <t>a requested byte range lies beyond the length carried in the
reference (<xref target="manifest"/>); or</t>
          </li>
          <li>
            <t>the object_id is empty.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="manifest">
      <name>Referencing an Object</name>
      <t>A consuming application refers to an attachment object with a small
reference.  This document does not define the reference's structure or
its transport.  Those are the application's, for example the MIMI
attachments mechanism (<xref target="I-D.robert-mimi-attachments"/>).  This section
states only what the reference <bcp14>MUST</bcp14> convey for this extension's
guarantees to hold.</t>
      <t>The reference <bcp14>MUST</bcp14> carry the object_id, because a receiver derives the
CEK from it (<xref target="key-derivation"/>) and cannot otherwise key the object.
The reference <bcp14>MUST</bcp14> also carry the object's plaintext length, which the
receiver needs to locate segments in the layout (<xref target="layout"/>) and to
validate a requested range.  The reference <bcp14>MUST</bcp14> also carry the object's
snapshot value, against which the receiver checks every segment it reads
(<xref target="encrypt-read"/>).</t>
      <t>Writer attribution and whole-object completeness need the reference
authenticated to the group.  For that, it <bcp14>MUST</bcp14> be bound into an MLS
message's authenticated data, which the sender's signature covers:  the
signature authenticates the reference and attributes the object to the
sending member (<xref target="writer-attribution"/>).  This document defines no
signature of its own.</t>
      <t>The length needs that authentication because the snapshot binds only the
segment count:  an adversary can understate the length within the final
segment's span without changing the count, and a receiver that never
fetches the final segment cannot detect the truncation.</t>
      <t>MLS does not give a total order across different senders' application
messages within an epoch, so delivery order alone does not establish
which object is current.  An application that needs a current-object
notion <bcp14>MUST</bcp14> scope the ordering to a single sender or carry an explicit
application-level sequence number in the authenticated reference.</t>
      <t>Any locator or other fields the reference carries are the
application's.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="forward-secrecy-and-membership">
        <name>Confidentiality Lifetime and Membership</name>
        <t>The CEK is derived from one MLS epoch's exporter and, unlike an MLS
message key, is not deleted after use:  it is a persistent key for the
life of the attachment.  The MLS exporter itself is forward-secure
across epochs, so once that epoch's secrets are deleted the CEK cannot
be re-derived from MLS.  Holders that retain the CEK keep access and
others do not.  Attachment confidentiality is therefore at the
granularity of the creating epoch's membership and lasts as long as any
holder retains the CEK, not at the per-message granularity of MLS
application messages.  A re-readable, seekable object needs a persistent
key, so it cannot have the per-message forward secrecy of MLS
application messages.</t>
        <t>Removing a member does not by itself revoke access to attachments
created while they were present, since they may have retained the CEK.
An application that must revoke access to an existing attachment <bcp14>MUST</bcp14>
distribute a new object encrypted under a CEK derived in a later epoch.
This costs the size of the attachment, because the removed member knows
the old CEK.</t>
        <t>Because the AEAD and KDF are inherited from the MLS cipher suite, an
attachment inherits the cipher suite's AEAD and KDF strength.  The CEK
is exported from the MLS key schedule, so an attachment's long-term
confidentiality rests on the group's key agreement, not on the AEAD key
size alone.  A quantum adversary that records a group's handshake can,
once a quantum computer is available, recover the exported secrets of
past epochs, and thus the CEK, regardless of the AEAD key size.
Deployments that need long-lived confidentiality for attachments <bcp14>SHOULD</bcp14>
therefore run a post-quantum MLS cipher suite.  A larger symmetric key
does not address this threat.</t>
      </section>
      <section anchor="capacity">
        <name>Capacity and Limits</name>
        <t>An attachment inherits SEAL-attachment's capacity and security
bounds (<xref target="I-D.sullivan-cfrg-raae"/>), which rest on the group's key
agreement as well as the AEAD (<xref target="forward-secrecy-and-membership"/>).  An
application <bcp14>MUST</bcp14> stop writing an object before a per-key budget is
exceeded.  The CEK is fixed per object, so continued storage requires a
new object under a fresh CEK.</t>
        <t>The per-segment metadata adds one hash per segment, so both an
attachment's storage overhead and its per-segment read cost scale with
the cipher suite's hash length (<xref target="I-D.sullivan-cfrg-raae"/>).
SEAL-attachment pins the epoch length for every suite, so the SHA-512
suites, whose entries are largest, cost one extra metadata read per
segment checked.</t>
      </section>
      <section anchor="salt-uniqueness">
        <name>Salt Uniqueness</name>
        <t>Unlike base SEAL, which keys each object with a fresh random CEK, this
extension derives the CEK deterministically from (epoch, object_id)
(<xref target="key-derivation"/>).  SEAL-attachment uses a derived nonce, so the
per-object salt is the only value that separates two encryptions under
the same CEK.  Reusing an (object_id, salt) pair within an epoch reuses
the derived nonces, which for an AEAD that is not misuse-resistant, such
as AES-GCM or ChaCha20-Poly1305, is a two-time pad and breaks
confidentiality.  The encryptor therefore <bcp14>MUST</bcp14> generate a fresh,
uniformly random 32-octet salt from a CSPRNG for each object, and <bcp14>MUST
NOT</bcp14> re-encrypt an object under a previously used (object_id, salt) pair,
including after a crash or retry.</t>
      </section>
      <section anchor="writer-attribution">
        <name>Writer Attribution</name>
        <t>All epoch members derive the CEK, so per-segment authentication binds an
attachment to the group, not to a writer:  any member can produce a
segment that others accept.  Attribution comes from the sender's
signature.  The reference carries the object's snapshot value, and MLS
covers a message's authenticated data by the sender's signature, so
binding the reference into an MLS message attributes the object to the
sending member (<xref target="manifest"/>).  A receiver checks one segment against
the snapshot and attributes it without reading the rest
(<xref target="encrypt-read"/>).</t>
        <t>The snapshot binds each segment's ciphertext by a collision-resistant
digest, so a signature over it attributes content even against a member
that holds the CEK (<xref section="Epoch Digest Tree" relative="#snapshot-security-edt" sectionFormat="bare" target="I-D.sullivan-seal-concrete"/> of <xref target="I-D.sullivan-seal-concrete"/>).</t>
        <t>Attribution is to the member that sent the reference, in the epoch it
was sent, and nothing re-attests the object afterward.  MLS gives no
total order across senders within an epoch, so an application that needs
the original writer <bcp14>MUST</bcp14> make that writer the object's only sender, and
one that needs a current-object notion <bcp14>MUST</bcp14> carry the ordering itself
(<xref target="manifest"/>).</t>
      </section>
      <section anchor="position-commitment">
        <name>Position Commitment under Adversarial Keys</name>
        <t>No AEAD an MLS cipher suite uses is key-committing, so SEAL's commitment
does not bind a segment's position:  without the snapshot, a member that
controls the CEK could open one ciphertext segment at two positions
(<xref section="Commitment Security" relative="#key-commitment" sectionFormat="bare" target="I-D.sullivan-cfrg-raae"/> of
<xref target="I-D.sullivan-cfrg-raae"/>).  An authenticated snapshot pins each
segment's ciphertext to its index by collision resistance, so no CEK
holder can move a segment, which restores ra-CMT-p against adversarially
chosen keys (<xref section="Epoch Digest Tree" relative="#snapshot-security-edt" sectionFormat="bare" target="I-D.sullivan-seal-concrete"/> of <xref target="I-D.sullivan-seal-concrete"/>).
It holds only for a snapshot the group authenticates.</t>
      </section>
      <section anchor="operational-considerations">
        <name>Operational Considerations</name>
        <t>Superseded objects are not deleted automatically:  the profile is
write-once and revocation re-encrypts to a new object
(<xref target="forward-secrecy-and-membership"/>), so the application owns garbage
collection and any link from a replacement to its predecessor.
Revocation cost scales with the total volume of attachments the removed
member could read, not with one object.  Recovering from corruption
means fetching the object again, since there is no in-place repair.</t>
      </section>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>An attachment object is a SEAL-attachment object and uses a derived
nonce, so it stores no per-segment nonce (<xref target="parameters"/>).  SEAL's
published example vectors use a random nonce and a different layout, so
they do not apply byte for byte.  Its derived-nonce example vector is
the closest format reference but is computed for AES-256-GCM-SIV.  Test
vectors specific to SEAL-attachment under each MLS cipher suite are TBD,
and this document defines none of its own.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>An untrusted observer of the object's storage or transport does not
learn the plaintext, but it does learn metadata about the object.  It
learns the exact plaintext length, which is recoverable from the object
byte count regardless of the reference.  It learns which byte ranges
each reader fetches, an access-pattern channel.  It can link fetches by
object_id or locator, including across epochs if an object_id were to
repeat (<xref target="key-derivation"/> forbids that repetition).  This unlinkability
across objects and epochs rests on honest-encryptor discipline in
choosing object_id (<xref target="object-id"/>).  It is not a property a receiver or
observer can verify, since neither can detect a repeated or predictable
object_id on its own.</t>
      <t>The reference also carries the object's snapshot value (<xref target="manifest"/>),
which discloses nothing further:  it is a keyed value, pseudorandom
without the CEK.</t>
      <t>These metadata exposures are by design and out of scope for the
encryption layer.  Length-hiding by padding and access-pattern hiding by
full-object fetch or oblivious access are left to the application and
the transport.  Transport-level sender metadata, such as the connection
and timing of a fetch, is likewise out of scope for this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests one registration in the "MLS Component Types"
registry established by <xref target="I-D.ietf-mls-extensions"/>.</t>
      <t>The component domain-separates this extension's uses of the MLS key
schedule (<xref target="key-derivation"/>), which is its only use of an MLS facility.</t>
      <ul spacing="normal">
        <li>
          <t>Value: (assigned by IANA)</t>
        </li>
        <li>
          <t>Name: attachment_encryption</t>
        </li>
        <li>
          <t>Where: ES (an exported secret is used)</t>
        </li>
        <li>
          <t>Recommended: Y</t>
        </li>
        <li>
          <t>Reference: This document</t>
        </li>
      </ul>
      <t>This document defines no new registries.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </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="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="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="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>
        <reference anchor="I-D.sullivan-cfrg-raae">
          <front>
            <title>Random-Access Authenticated Encryption</title>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <date day="13" month="July" year="2026"/>
            <abstract>
              <t>   This document defines random-access authenticated encryption (raAE),
   a primitive that partitions a message into an indexed sequence of
   segments that can be encrypted and decrypted independently and in any
   order.  It also specifies SEAL (Segmented Encryption and
   Authentication Layer), a parameterized construction that defines a
   family of concrete raAE instantiations, one for each valid choice of
   an Authenticated Encryption with Associated Data (AEAD) algorithm, a
   key derivation function (KDF), and associated parameters.

   SEAL provides two profiles, immutable (write-once) and mutable (in-
   place ciphertext rewrite), each with per-segment authentication.  A
   separately configured snapshot authenticator can additionally
   authenticate the complete, indexed segment set.

   The document also defines the security notions of raAE, specifies the
   requirements for conforming constructions, analyzes SEAL against
   those requirements, and provides example cipher suites and test
   vectors.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sullivan-cfrg-raae-02"/>
        </reference>
        <reference anchor="I-D.sullivan-seal-concrete">
          <front>
            <title>SEAL Cipher Suites and Instantiations</title>
            <author initials="N." surname="Sullivan" fullname="Nick Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-sullivan-seal-concrete-00"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </reference>
        <reference anchor="RFC9605">
          <front>
            <title>Secure Frame (SFrame): Lightweight Authenticated Encryption for Real-Time Media</title>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="J. Uberti" initials="J." surname="Uberti"/>
            <author fullname="S. G. Murillo" initials="S. G." surname="Murillo"/>
            <author fullname="R. Barnes" initials="R." role="editor" surname="Barnes"/>
            <author fullname="Y. Fablet" initials="Y." surname="Fablet"/>
            <date month="August" year="2024"/>
            <abstract>
              <t>This document describes the Secure Frame (SFrame) end-to-end encryption and authentication mechanism for media frames in a multiparty conference call, in which central media servers (Selective Forwarding Units or SFUs) can access the media metadata needed to make forwarding decisions without having access to the actual media.</t>
              <t>This mechanism differs from the Secure Real-Time Protocol (SRTP) in that it is independent of RTP (thus compatible with non-RTP media transport) and can be applied to whole media frames in order to be more bandwidth efficient.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9605"/>
          <seriesInfo name="DOI" value="10.17487/RFC9605"/>
        </reference>
        <reference anchor="I-D.robert-mimi-attachments">
          <front>
            <title>MIMI Attachments</title>
            <author fullname="Raphael Robert" initials="R." surname="Robert">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <author fullname="Konrad Kohbrok" initials="K." surname="Kohbrok">
              <organization>Phoenix R&amp;D</organization>
            </author>
            <date day="29" month="June" year="2026"/>
            <abstract>
              <t>   This document describes MIMI Attachments.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-robert-mimi-attachments-06"/>
        </reference>
        <reference anchor="FLOE" target="https://eprint.iacr.org/2025/2275">
          <front>
            <title>Random-Access AEAD for Fast Lightweight Online Encryption</title>
            <author initials="A." surname="Fabrega">
              <organization/>
            </author>
            <author initials="J." surname="Len">
              <organization/>
            </author>
            <author initials="T." surname="Ristenpart">
              <organization/>
            </author>
            <author initials="G." surname="Rubin">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="IACR" value="ePrint 2025/2275"/>
        </reference>
      </references>
    </references>
    <?line 603?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This extension builds on the SEAL construction
<xref target="I-D.sullivan-cfrg-raae"/>, the MLS Safe Extension framework
<xref target="I-D.ietf-mls-extensions"/>, and the attachments transport
<xref target="I-D.robert-mimi-attachments"/>.  The random-access goals follow
<xref target="FLOE"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71d/XLbRpL/f55iTq46SxdCsRTbmyibvVMkOdHFXyfZu5Xa
ukoNwaGINQgwGFAyo02e5Z7lnuz61z0zGICg7d1UnWprQ4KYr57uX3/OOMsy
1RZtaU/03kWVN5tVa2f6tG1NvljaqnV6Xjf6xfPrPWWm08be0nv0LX1jT83q
vDJL6mLWmHmbuXVZFremypaly0z3YvboSOWmtTd1sznRrp2pYtWc6LZZu/b4
0aOvHh0r01hDI1zbfN0U7WZP3dXNu5umXq8wrnXO3BTVjX5uNrbR3Vvv7IZe
nJ0orTNMlv+bjMzfG1PN6mVm8pz60VYWW9QV/5jX1byY0buFKalLXRZz2xZL
q1xLzX4yZV3R+jbWKbc0TfvTz+u6te5EV7VaFTJuW+f8X1c3bWPnMqjbLPmz
Mut2UTfyZlFRy5eH+toTih5qLRR8WeTv+s/r5sZUxS8GUz3RZ5h0fdOY1WKj
z+qKaN0yRZ6f8dt2aYqSplXki7o07jDsxWeFbef/cYNfD/N62U3j6lBf1VPb
tMkkrqh3Y8v0h/4sXi9qWxXv9dW/nuvvltPv06F5oEZ6aLgDHlBVdbOk5rcW
NLh6dnZ8dPSV//jk6Oip//jl0R8e+49fHX35KHx8fMwfL7PzQ/TPnGXft7Zy
NB8XfoqMl8+bm6wxxm794qwpM9rsvLEt/6p1YP/ri9Pn+qxYLcBa64K2V9PW
68sKLEB8gaUTs6NJt5n427GhH9rUf3xjZyQ4J/r40fFT/upsU1hXVPM6zOKy
am1T2TY7hxBuyWJv4dmjR0qhcX9Lvnry9Dh8fProSSCe7GK2LJZFKs74+dnz
Vxeeiqa5sTTsom1X7uTzz+2qKar2sDB5c0gr/Zxm/uTz4+M/POnR/Epk8lRk
8vTi9Jzx5plxrX5e3CzaO4v/16+qsqisvohC+4F9OD2k9gRVN6b//D8P9XNb
9Z+9Ie4vHPHRynhGjz99Rz+tp0XVp/6THdTfuzw9u9qjFdnXWLeOy91TKssI
jKaubUzeKvVmUThNiLkGEfXMzmlhbgBOWBewCGg5S6BK13NdgtDqjoDPZrSd
Vs+L0nqY3gGQep8w8UAzjrpDrU+5jS6cshHyXa3bhWm10Y3NLfFEo3NT0fz4
BZaEdFb0YKOnG/pAM8d8CtqJdatXTY0VYA70sr4jFJIZ0rBv6EGyFiIDRC5h
qYnCg4eOxWamkzV272iXL+zS6v3GnF4cTDRtHL1MrF/8Qk2mGwyrmJEwZVIM
tISGJICHnK+rPNAR02OK0HjQaLlIvoPkoy2UCvU4b+olv4t37PsVgbtt+ovh
cRkuGktEa4g3eCZEIrW0pnITIR8oW6wKLKKyduZ0XZX0liaNUpb049w2Fovd
x3D19G82bx86JVppXthmoktb3bQL6c5VZuUWdatvTbm2fghaGRPXlLqsaZ/q
5oD0kiJdllMzWpG8R7tbzJlUfhxa0BlNfCP7RmzQzaao0C2U6pLZizejKaZr
rLjrgYbhb0u7JLSQThyWKg+5JY2CfsxqVYKJsBH+Fwdmq2gxIN9GeFwYWyZs
35OUYnIdI6iElYjrZuucAZsIYH4GPYrlct2aKbHftKynGgxK2hr8Ah2vRdIO
RRyjKqHtx+T8yvpCWbJMEZs7q9eOXsEmHop4L4vZrLRKPQAM82TYstgh7ELP
ZFQI7wcQQI0ggFAnFeaEHXmxpt+l2gkqIkpRsO7vx3Xpr78enGhdtIqGckSk
lliDNn1evLezzJH40X7fsGaYaEubRD/P7MpW4N9yE5CEdwTi1ZvOBPgzgB4y
BWcDmNEMUHntWkVbDlkUXve8J+80pl0IB1bhhy0Y8mslBBxCkP5kCJqQznvn
ga5DnB/On30UXYjEEbYckZUbFmSmAq5GAQdN6MeswzJqduj5i9ZVEsfoG7OC
tFI7sIXw2IisQVpakljHQ5JJ0GJNnmWA3EQqXk69so20XNMmNvQr8emdaWi3
LcwIUJoo0TKuKCekDv3RvAjVsrrJSKwXTKa6p02mNXoNkM0jEtrRkFlR3dZ+
ykW1IqVSkuUBiHreMT7aEEbVjLiMHFMreGNcACqPHeh9BD+IHDmxSOGWSjh+
h5nz669BVpywNYubcR2xBHEUwwzjHq29Qx9MoZuih59OHhhCwJLcbadHIpIF
fJ3RCgR2g3LRiXIBDwr0As2wMKJUT7/4bhI1c3+/pPXPrWvBg5i54l8dtooJ
3ocvtyL9NS96sP8w9aSC2iSyUOO3q7I2JNmz+q6ST470Ee1Lty1FlU3xuZsU
ll7aeavayE5uveSd6zh5woBp35vlimjGsnL54rLn8MXNpYlcMoeKtTEuXuiw
LOu7YLasqCsyptX1M0ipvr/3FjF4wWFbC7eAbQDYhl0NT5F2Y1YYGu4cMhp6
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
UeoA//wGeO3/ANY5MHfGZwAA

-->

</rfc>
