<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mls-targeted-messages-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>Messaging Layer Security (MLS) Targeted Messages</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-mls-targeted-messages-02"/>
    <author fullname="Raphael Robert">
      <organization>Phoenix R&amp;D GmbH</organization>
      <address>
        <email>ietf@raphaelrobert.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Messaging Layer Security</workgroup>
    <keyword>MLS</keyword>
    <abstract>
      <?line 33?>

<t>This document defines targeted messages for the Messaging Layer Security
(MLS) protocol. A targeted message allows a member of an MLS group to
send an encrypted and authenticated message to another member of the same
group without creating a new group. The mechanism reuses Hybrid Public Key
Encryption (HPKE) and the MLS key schedule to provide confidentiality,
authentication, and binding to the group state.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mlswg.github.io/mls-targeted-messages/draft-ietf-mls-targeted-messages.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-mls-targeted-messages/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Messaging Layer Security Working Group mailing list (<eref target="mailto:mls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mlswg/mls-targeted-messages"/>.</t>
    </note>
  </front>
  <middle>
    <?line 43?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>MLS application messages make sending encrypted messages to all group members
easy and efficient. Sometimes application protocols require that a group member
sends a message only to specific members of the same group, either for privacy
or for efficiency reasons.</t>
      <t>Targeted messages are a way to achieve this without having to create a new group
with the sender and the specific recipients, which might not be possible or
desired. Instead, this document defines the format and encryption of a message
that is sent from a member of an existing group to another member of that group.</t>
      <t>The goal is to provide a one-shot messaging mechanism offering confidentiality
and authentication, reusing mechanisms from <xref target="RFC9420"/> and <xref target="RFC9180"/>.
Targeted messages can be used as a building block for more complex messaging
protocols.</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?>

</section>
    <section anchor="format">
      <name>Format</name>
      <t>This document defines the <tt>mls_targeted_message</tt> WireFormat, where the content
is a <tt>TargetedMessage</tt>.</t>
      <t>A member signals support for the <tt>mls_targeted_message</tt> WireFormat by listing
  it in the <tt>supported_wire_formats</tt> extension of its <tt>LeafNode</tt>, as defined in
  <xref target="I-D.ietf-mls-extensions"/>. A group requires all of its members to support
  the WireFormat by listing it in the <tt>required_wire_formats</tt> extension of its
  <tt>GroupContext</tt>. A sender <bcp14>MUST NOT</bcp14> send a <tt>TargetedMessage</tt> to a member whose
  <tt>LeafNode</tt> does not list <tt>mls_targeted_message</tt> in its <tt>supported_wire_formats</tt>
  extension, unless the <tt>required_wire_formats</tt> extension in the group's
  <tt>GroupContext</tt> includes <tt>mls_targeted_message</tt>.</t>
      <t>A <tt>TargetedMessage</tt> is carried in the <tt>MLSMessage</tt> envelope defined in
<xref section="6" sectionFormat="of" target="RFC9420"/>:</t>
      <sourcecode type="tls"><![CDATA[
case mls_targeted_message:
    TargetedMessage targeted_message;
]]></sourcecode>
      <sourcecode type="tls"><![CDATA[
struct {
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
  opaque authenticated_data<V>;
  opaque encrypted_sender_auth_data<V>;
  opaque ciphertext<V>;
} TargetedMessage;

struct {
  uint32 sender_leaf_index;
  opaque signature<V>;
  opaque kem_output<V>;
} TargetedMessageSenderAuthData;

struct {
  ProtocolVersion version = mls10;
  WireFormat wire_format = mls_targeted_message;
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
  opaque authenticated_data<V>;
  uint32 sender_leaf_index;
  opaque kem_output<V>;
  opaque ciphertext_hash<V>;
} TargetedMessageTBS;

struct {
  opaque group_id<V>;
  uint64 epoch;
  opaque label<V> = "MLS 1.0 targeted message psk";
} PSKId;

struct {
  opaque application_data<V>;
  opaque padding[length_of_padding];
} TargetedMessageContent;
]]></sourcecode>
    </section>
    <section anchor="cryptographic-algorithms">
      <name>Cryptographic Algorithms</name>
      <t>All cryptographic operations on a targeted message use the cipher suite of
the MLS group in which the message is sent (<xref section="5.1" sectionFormat="of" target="RFC9420"/>). In
particular, the group's cipher suite determines:</t>
      <ul spacing="normal">
        <li>
          <t>the Key Encapsulation Mechanism (KEM), Key Derivation Function (KDF), and
Authenticated Encryption with Associated Data (AEAD) used for the HPKE
encryption of the message content
(<xref target="application-data-encryption"/>),</t>
        </li>
        <li>
          <t>the KDF underlying the <tt>MLS-Exporter</tt> and <tt>ExpandWithLabel</tt> derivations
(<xref target="authentication"/> and <xref target="sender-data-encryption"/>), including the value
<tt>KDF.Nh</tt>,</t>
        </li>
        <li>
          <t>the AEAD used to encrypt the sender authentication data
(<xref target="sender-data-encryption"/>), including the values <tt>AEAD.Nk</tt> and <tt>AEAD.Nn</tt>,</t>
        </li>
        <li>
          <t>the hash function used to compute <tt>ciphertext_hash</tt>
(<xref target="authentication"/>), and</t>
        </li>
        <li>
          <t>the signature algorithm used to sign and verify the <tt>TargetedMessageTBS</tt>
struct (<xref target="authentication"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="authentication">
      <name>Authentication</name>
      <t>A targeted message is authenticated by the sender's signature. The sender uses
the signature key of its <tt>LeafNode</tt>. The signature scheme is determined by the
cipher suite of the MLS group. The signature
is computed over the serialized <tt>TargetedMessageTBS</tt> struct and is included in
the <tt>TargetedMessageSenderAuthData.signature</tt> field:</t>
      <sourcecode type="tls"><![CDATA[
signature = SignWithLabel(sender_leaf_node_signature_private_key,
              "TargetedMessageTBS", targeted_message_tbs)
]]></sourcecode>
      <t>The <tt>ciphertext_hash</tt> field of <tt>TargetedMessageTBS</tt> is computed over the
<tt>TargetedMessage.ciphertext</tt> field with the hash function of the group's
cipher suite:</t>
      <sourcecode type="tls"><![CDATA[
ciphertext_hash = Hash(ciphertext)
]]></sourcecode>
      <t>Covering the ciphertext hash binds the signature to the encrypted message
content.</t>
      <t>The recipient <bcp14>MUST</bcp14> verify the signature:</t>
      <sourcecode type="tls"><![CDATA[
VerifyWithLabel(sender_leaf_node.signature_key,
                "TargetedMessageTBS",
                targeted_message_tbs,
                signature)
]]></sourcecode>
      <t>In addition, targeted messages are authenticated using a pre-shared key (PSK),
exported through the MLS exporter for the epoch specified in the
<tt>TargetedMessage</tt>:</t>
      <sourcecode type="tls"><![CDATA[
targeted_message_psk =
  MLS-Exporter("targeted message", "psk", KDF.Nh)
]]></sourcecode>
      <t>The <tt>targeted_message_psk</tt> is used as the <tt>psk</tt> parameter in the Hybrid
Public Key Encryption (HPKE) encryption.
The corresponding <tt>psk_id</tt> parameter is the serialized <tt>PSKId</tt> struct.</t>
      <section anchor="additional-authenticated-data-aad">
        <name>Additional Authenticated Data (AAD)</name>
        <t>Targeted messages can include additional authenticated data (AAD) in the
<tt>TargetedMessage.authenticated_data</tt> field. This field is used to carry
application-specific data that is authenticated but not encrypted. The content
of this field is used as the <tt>aad</tt> parameter of the HPKE encryption
(<xref target="application-data-encryption"/>).</t>
      </section>
    </section>
    <section anchor="encryption">
      <name>Encryption</name>
      <t>Targeted messages use HPKE to encrypt the message content to a specific group
member.</t>
      <t>Unlike the HPKE Base mode used in <xref target="RFC9420"/>, targeted messages use HPKE PSK
mode (<xref section="5.1.2" sectionFormat="of" target="RFC9180"/>). The PSK is derived from the MLS group key
schedule, binding the encryption to the group state and providing authentication
that the sender holds the group's PSK.</t>
      <section anchor="padding">
        <name>Padding</name>
        <t>The <tt>TargetedMessageContent.padding</tt> field is set by the sender, by first
encoding the application data and then appending the chosen number of zero
bytes. A receiver identifies the <tt>padding</tt> field in a plaintext decoded from
<tt>TargetedMessage.ciphertext</tt> by first decoding the application data; then the
<tt>padding</tt> field comprises any remaining octets of plaintext. The <tt>padding</tt>
field <bcp14>MUST</bcp14> be filled with all zero bytes. A receiver <bcp14>MUST</bcp14> verify that there
are no non-zero bytes in the <tt>padding</tt> field, and if this check fails, the
enclosing <tt>TargetedMessage</tt> <bcp14>MUST</bcp14> be rejected as malformed. This check ensures
that the padding process is deterministic, so that, for example, padding
cannot be used as a covert channel.</t>
      </section>
      <section anchor="application-data-encryption">
        <name>Application Data Encryption</name>
        <t>The <tt>TargetedMessageContent</tt> struct is serialized and encrypted using HPKE.</t>
        <t>The HPKE <tt>info</tt> is a serialized <tt>TargetedMessageContext</tt> struct with the
following content:</t>
        <sourcecode type="tls"><![CDATA[
struct {
  uint32 recipient_leaf_index;
  uint32 sender_leaf_index;
} TargetedMessageContextData;

struct {
  opaque label<V> = "MLS 1.0 TargetedMessageData";
  TargetedMessageContextData context;
} TargetedMessageContext;
]]></sourcecode>
        <t>The <tt>TargetedMessageContext</tt> struct follows the same convention as
<tt>EncryptContext</tt> in <xref section="5.1.3" sectionFormat="of" target="RFC9420"/>, a label followed by
application context. Unlike <tt>EncryptContext</tt>, the <tt>context</tt> field is typed
rather than opaque, and the encryption uses PSK mode rather than Base mode.
The <tt>context</tt> field binds the encryption to the recipient and sender leaf
indices. The message is bound to the group state through the
<tt>targeted_message_psk</tt>, as described in <xref target="group-state-binding"/>.</t>
        <t>The <tt>TargetedMessageContext</tt> struct is serialized as <tt>hpke_info</tt> and is used
by both the sender and the recipient. The recipient's leaf node HPKE encryption
key from the ratchet tree of the epoch specified in the <tt>TargetedMessage</tt> is
used as the recipient's public key <tt>recipient_node_public_key</tt> for the HPKE
encryption.</t>
        <t>The content of the <tt>TargetedMessage.authenticated_data</tt> field is used as the
<tt>aad</tt> parameter for the HPKE encryption. The sender uses the single-shot
<tt>SealPSK</tt> API:</t>
        <sourcecode type="tls"><![CDATA[
(kem_output, ciphertext) = SealPSK(recipient_node_public_key,
                                   hpke_info,
                                   authenticated_data,
                                   targeted_message_content,
                                   targeted_message_psk,
                                   psk_id)
]]></sourcecode>
        <t>In full, the sender performs the following steps in order:</t>
        <ul spacing="normal">
          <li>
            <t>Derive the <tt>targeted_message_psk</tt> (<xref target="authentication"/>) and the
<tt>sender_auth_data_secret</tt> (<xref target="sender-data-encryption"/>).</t>
          </li>
          <li>
            <t>Compute <tt>kem_output</tt> and <tt>ciphertext</tt> by calling <tt>SealPSK</tt> with the
serialized <tt>TargetedMessageContent</tt> as plaintext.</t>
          </li>
          <li>
            <t>Compute <tt>ciphertext_hash</tt> from <tt>ciphertext</tt>, construct the
<tt>TargetedMessageTBS</tt> struct, and compute the <tt>signature</tt> as described in
<xref target="authentication"/>.</t>
          </li>
          <li>
            <t>Assemble the <tt>TargetedMessageSenderAuthData</tt> struct from
<tt>sender_leaf_index</tt>, <tt>signature</tt>, and <tt>kem_output</tt>, and encrypt it as
described in <xref target="sender-data-encryption"/>, using a sample of the <tt>ciphertext</tt>
computed above.</t>
          </li>
        </ul>
        <t>The <tt>TargetedMessageSenderAuthData.kem_output</tt> field is set to <tt>kem_output</tt>,
and the <tt>TargetedMessage.ciphertext</tt> field is set to <tt>ciphertext</tt>.</t>
        <t>The recipient learns the <tt>kem_output</tt> and the <tt>sender_leaf_index</tt> by
decrypting <tt>encrypted_sender_auth_data</tt> before decrypting the content. The
<tt>sender_leaf_index</tt> is needed to construct the <tt>TargetedMessageContextData</tt>
struct:</t>
        <sourcecode type="tls"><![CDATA[
targeted_message_content = OpenPSK(kem_output,
                  recipient_node_private_key,
                  hpke_info,
                  authenticated_data,
                  ciphertext,
                  targeted_message_psk,
                  psk_id)
]]></sourcecode>
        <t>The functions <tt>SealPSK</tt> and <tt>OpenPSK</tt> are defined in <xref section="6.1" sectionFormat="of" target="RFC9180"/>.</t>
      </section>
      <section anchor="sender-data-encryption">
        <name>Sender Data Encryption</name>
        <t><tt>TargetedMessageSenderAuthData</tt> is encrypted similarly to <tt>SenderData</tt> as
described in <xref section="6.3.2" sectionFormat="of" target="RFC9420"/>. It contains the sender's leaf
index, the signature over <tt>TargetedMessageTBS</tt>, and the KEM output of the HPKE
encryption.</t>
        <t>The key and nonce provided to the AEAD are computed as the KDF of the first
KDF.Nh bytes of the <tt>ciphertext</tt> generated in <xref target="application-data-encryption"/>.
If the length of the ciphertext is less than KDF.Nh, the whole ciphertext is
used. As with the <tt>targeted_message_psk</tt>, the <tt>sender_auth_data_secret</tt> is
exported from the key schedule of the epoch specified in the
<tt>TargetedMessage</tt>. In pseudocode, the key and nonce are derived as:</t>
        <sourcecode type="tls"><![CDATA[
sender_auth_data_secret =
  MLS-Exporter("targeted message", "sender auth data secret", KDF.Nh)

ciphertext_sample = ciphertext[0..KDF.Nh-1]

sender_auth_data_key = ExpandWithLabel(sender_auth_data_secret,
                           "key", ciphertext_sample, AEAD.Nk)
sender_auth_data_nonce = ExpandWithLabel(sender_auth_data_secret,
                             "nonce", ciphertext_sample, AEAD.Nn)
]]></sourcecode>
        <t>The Additional Authenticated Data (AAD) for the <tt>encrypted_sender_auth_data</tt>
ciphertext is the first three fields of <tt>TargetedMessage</tt>:</t>
        <sourcecode type="tls"><![CDATA[
struct {
  opaque group_id<V>;
  uint64 epoch;
  uint32 recipient_leaf_index;
} SenderAuthDataAAD;
]]></sourcecode>
      </section>
    </section>
    <section anchor="recipient-validation">
      <name>Recipient Validation</name>
      <t>Upon receiving a <tt>TargetedMessage</tt>, the recipient <bcp14>MUST</bcp14> perform the following
steps in order:</t>
      <ul spacing="normal">
        <li>
          <t>Verify that <tt>group_id</tt> matches a group the recipient is a member of.</t>
        </li>
        <li>
          <t>Verify that <tt>epoch</tt> corresponds to the current epoch of that group, or to a
past epoch for which the recipient still has the necessary key material
(<xref target="messages-from-past-epochs"/>).</t>
        </li>
        <li>
          <t>Verify that <tt>recipient_leaf_index</tt> matches the recipient's own leaf index
in the specified epoch.</t>
        </li>
        <li>
          <t>Decrypt <tt>encrypted_sender_auth_data</tt> as described in
<xref target="sender-data-encryption"/> and verify that <tt>sender_leaf_index</tt> refers to a
non-blank leaf in the ratchet tree of the specified epoch.</t>
        </li>
        <li>
          <t>Compute <tt>ciphertext_hash</tt> from <tt>TargetedMessage.ciphertext</tt> and verify the
signature as described in <xref target="authentication"/>.</t>
        </li>
        <li>
          <t>Decrypt <tt>ciphertext</tt> as described in <xref target="application-data-encryption"/>.</t>
        </li>
        <li>
          <t>Verify that the <tt>padding</tt> field of the decrypted <tt>TargetedMessageContent</tt>
contains only zero bytes, as described in <xref target="padding"/>.</t>
        </li>
      </ul>
      <t>The signature <bcp14>MUST</bcp14> be verified before <tt>ciphertext</tt> is decrypted. The
<tt>TargetedMessageTBS</tt> struct covers the <tt>ciphertext</tt> only through its hash,
which the recipient computes from the wire-format <tt>ciphertext</tt> field, so
signature verification does not depend on the decrypted content. Verifying
first ensures that no plaintext is produced from a message whose claimed
sender has not been authenticated. The decrypted <tt>TargetedMessageContent</tt>
        <bcp14>MUST NOT</bcp14> be passed to the application before all of the above steps have
completed successfully.</t>
      <t>If any of these steps fails, the <tt>TargetedMessage</tt> <bcp14>MUST</bcp14> be rejected.</t>
      <section anchor="messages-from-past-epochs">
        <name>Messages from Past Epochs</name>
        <t>Processing a <tt>TargetedMessage</tt> for a past epoch requires the recipient to
retain the following key material and state for that epoch:</t>
        <ul spacing="normal">
          <li>
            <t>the exporter secret, or the <tt>targeted_message_psk</tt> and
<tt>sender_auth_data_secret</tt> derived from it,</t>
          </li>
          <li>
            <t>the recipient's leaf node HPKE private key, and</t>
          </li>
          <li>
            <t>the leaf nodes of the ratchet tree, in order to look up the sender's leaf
node.</t>
          </li>
        </ul>
        <t>Support for past epochs is <bcp14>OPTIONAL</bcp14>. Accepting only the current epoch is the
most conservative behavior. Retaining key material from past epochs weakens
the forward secrecy properties described in <xref target="forward-secrecy"/>: targeted
messages for an epoch remain decryptable for as long as that epoch's key
material exists. Applications that accept messages from past epochs <bcp14>SHOULD</bcp14>
bound the number of retained epochs and <bcp14>SHOULD</bcp14> delete the corresponding key
material as soon as it is no longer needed.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section describes the security properties of targeted messages and their
limitations relative to MLS application messages <xref target="RFC9420"/>.</t>
      <section anchor="authentication-1">
        <name>Authentication</name>
        <t>Targeted messages use two complementary authentication mechanisms. The sender's
signature (<xref target="authentication"/>) binds the message to the sender's identity:
the recipient verifies the signature against the sender's <tt>LeafNode</tt> signature
key, confirming that the holder of that key produced the message. The PSK
exported from the group key schedule provides a second layer that proves group
membership. Per <xref section="9.1" sectionFormat="of" target="RFC9180"/>, HPKE PSK mode provides outsider
authentication, ensuring that an entity that does not know the PSK cannot forge
a valid ciphertext. It does not, however, authenticate which PSK holder
produced the message. Sender identity relies entirely on the signature.</t>
        <t>Because the PSK is derived from the MLS key schedule, it is only valid for a
specific group and epoch. The forward secrecy and post-compromise security
guarantees of the group key schedule therefore extend to targeted messages. The
PSK also ensures that an attacker needs access to the private group state in
addition to the HPKE and signature private keys, improving confidentiality
guarantees against passive attackers and authentication guarantees against active
attackers.</t>
      </section>
      <section anchor="group-state-binding">
        <name>Group State Binding</name>
        <t>Targeted messages are bound to the group state through the
<tt>targeted_message_psk</tt>. The key schedule of <xref target="RFC9420"/> injects the
serialized <tt>GroupContext</tt> into the derivation of each epoch's secrets, so the
exporter-derived PSK commits to the full group state of the specified epoch,
including the tree hash and the confirmed transcript hash.</t>
      </section>
      <section anchor="message-field-binding">
        <name>Message Field Binding</name>
        <t>The HPKE encryption is bound to the fields of a targeted message at one or
more layers. The <tt>group_id</tt> and <tt>epoch</tt> are bound through the <tt>psk_id</tt> and
through the epoch-derived PSK, both of which enter the HPKE key schedule. The
leaf indices of the recipient and the sender are bound through the HPKE <tt>info</tt>
input, which carries the <tt>TargetedMessageContextData</tt> struct. The
<tt>authenticated_data</tt> field is authenticated directly as the HPKE <tt>aad</tt>
parameter. The <tt>kem_output</tt> is bound through the HPKE key schedule, which
derives the encryption keys from the KEM shared secret. For the DHKEM variants
used by the cipher suites of <xref target="RFC9420"/>, the shared-secret derivation also
includes the <tt>kem_output</tt> itself. Independently of these HPKE-layer bindings,
the sender's signature over the <tt>TargetedMessageTBS</tt> struct covers all of the
fields above together with the hash of the ciphertext.</t>
      </section>
      <section anchor="signature-verification-before-processing">
        <name>Signature Verification Before Processing</name>
        <t>Because the PSK is shared among all group members and each member's HPKE
public key is available in the ratchet tree, any group member can construct
HPKE ciphertext that decrypts successfully while claiming a different sender
identity. The signature is the sole mechanism that binds the message to the
claimed sender.</t>
        <t>The <tt>TargetedMessageTBS</tt> structure covers the <tt>kem_output</tt> and a hash of the
<tt>ciphertext</tt>, both of which are available before content decryption: the
former from the decrypted sender authentication data
(<xref target="sender-data-encryption"/>), the latter from the wire format itself.
<xref target="recipient-validation"/> therefore requires the recipient to verify the
signature before decrypting the HPKE ciphertext, ensuring that plaintext is
never produced from a message whose claimed sender has not been
authenticated.</t>
      </section>
      <section anchor="forward-secrecy">
        <name>Forward Secrecy</name>
        <t>Targeted messages encrypt directly to the recipient's leaf node HPKE encryption
key. Unlike application messages in <xref target="RFC9420"/>, which derive per-message keys
from a secret tree, targeted messages have no per-message key derivation.
Compromising the recipient's leaf private key therefore exposes all targeted
messages encrypted to that key within the epoch. Forward secrecy is at epoch
granularity only: it depends on the key schedule advancing to a new epoch and on
the recipient deleting the previous epoch's exporter secret. Applications that
require stronger forward secrecy guarantees <bcp14>SHOULD</bcp14> advance the epoch frequently.
Accepting targeted messages from past epochs requires retaining old key
material and further weakens forward secrecy, as described in
<xref target="messages-from-past-epochs"/>.</t>
      </section>
      <section anchor="sender-identity-confidentiality">
        <name>Sender Identity Confidentiality</name>
        <t>The <tt>sender_auth_data_secret</tt> used to encrypt the
<tt>TargetedMessageSenderAuthData</tt> is derived from the MLS exporter
(<xref target="sender-data-encryption"/>) and is available to all group members. Sender
identity is therefore protected from the Delivery Service and from entities
outside the group, but not from other group members who obtain the encrypted
message.</t>
        <t>The encryption mechanism is the same as the one used for <tt>SenderData</tt> in
<xref section="6.3.2" sectionFormat="of" target="RFC9420"/>, and the analysis of <xref section="16.3" sectionFormat="of" target="RFC9420"/> applies equally to targeted messages. In particular, using the
same <tt>sender_auth_data_secret</tt> with the same ciphertext sample more than once
would reuse an AEAD key and nonce pair; with the AEAD algorithms of the
cipher suites defined in <xref target="RFC9420"/>, the probability of two ciphertext
samples colliding is no more than 2^-128.</t>
      </section>
      <section anchor="replay-protection">
        <name>Replay Protection</name>
        <t>Targeted messages do not include a generation counter or nonce at the protocol
level. A captured targeted message can therefore be replayed within the same
epoch and will pass all validation checks. However, targeted messages are a
stateless one-shot mechanism: replaying a message causes the recipient to see
duplicate content but does not change any group state. Applications that require
replay detection <bcp14>SHOULD</bcp14> include a unique nonce in the <tt>authenticated_data</tt>
field and track previously seen values.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="mls-wire-formats">
        <name>MLS Wire Formats</name>
        <t>The <tt>mls_targeted_message</tt> MLS Wire Format is used to send a message to a
single member of an MLS group.</t>
        <ul spacing="normal">
          <li>
            <t>Value: 0x0006 (suggested)</t>
          </li>
          <li>
            <t>Name: mls_targeted_message</t>
          </li>
          <li>
            <t>Recommended: Y</t>
          </li>
          <li>
            <t>Reference: RFC XXXX</t>
          </li>
        </ul>
      </section>
      <section anchor="mls-signature-labels">
        <name>MLS Signature Labels</name>
        <section anchor="targetedmessagetbs">
          <name>TargetedMessageTBS</name>
          <ul spacing="normal">
            <li>
              <t>Label: "TargetedMessageTBS"</t>
            </li>
            <li>
              <t>Recommended: Y</t>
            </li>
            <li>
              <t>Reference: RFC XXXX</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="mls-public-key-encryption-labels">
        <name>MLS Public Key Encryption Labels</name>
        <t>Although targeted messages use the HPKE PSK mode directly rather than
<tt>EncryptWithLabel</tt>, the label follows the same convention and is registered
to prevent collisions with other uses of the same HPKE keys.</t>
        <section anchor="targetedmessagedata">
          <name>TargetedMessageData</name>
          <ul spacing="normal">
            <li>
              <t>Label: "TargetedMessageData"</t>
            </li>
            <li>
              <t>Recommended: Y</t>
            </li>
            <li>
              <t>Reference: RFC XXXX</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="mls-exporter-labels">
        <name>MLS Exporter Labels</name>
        <section anchor="targeted-message">
          <name>targeted message</name>
          <ul spacing="normal">
            <li>
              <t>Label: "targeted message"</t>
            </li>
            <li>
              <t>Recommended: Y</t>
            </li>
            <li>
              <t>Reference: RFC XXXX</t>
            </li>
          </ul>
        </section>
      </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="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="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="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="2" month="November" 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-11"/>
      </reference>
    </references>
    <?line 557?>

<section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>The following test vectors exercise the receiver-side processing described in
<xref target="recipient-validation"/>. Because the HPKE encapsulation is randomized, the
sender-side operations are not reproducible from the inputs alone; sender
implementations can be tested by round-tripping against a receiver
implementation.</t>
      <t>All vectors use the mandatory-to-implement MLS cipher suite
MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519. All values except <tt>cipher_suite</tt>,
<tt>epoch</tt>, the leaf indices, and <tt>padding_length</tt> (all decimal) are hex-encoded.</t>
      <t>Each vector provides the group state held by the recipient:</t>
      <ul spacing="normal">
        <li>
          <t><tt>group_id</tt> and <tt>epoch</tt>: the group and epoch the message belongs to.</t>
        </li>
        <li>
          <t><tt>exporter_secret</tt>: the exporter secret of that epoch, from which the
<tt>targeted_message_psk</tt> and the <tt>sender_auth_data_secret</tt> are derived
(<xref target="authentication"/> and <xref target="sender-data-encryption"/>).</t>
        </li>
        <li>
          <t><tt>sender_leaf_index</tt> and <tt>sender_leaf_node</tt>: the sender's leaf index and
serialized <tt>LeafNode</tt>, which provides the signature public key.</t>
        </li>
        <li>
          <t><tt>recipient_leaf_index</tt> and <tt>recipient_encryption_priv</tt>: the recipient's
leaf index and leaf node HPKE private key.</t>
        </li>
      </ul>
      <t>as well as the message and its expected plaintext:</t>
      <ul spacing="normal">
        <li>
          <t><tt>targeted_message</tt>: a serialized <tt>MLSMessage</tt> with the
<tt>mls_targeted_message</tt> WireFormat, containing the <tt>TargetedMessage</tt>.</t>
        </li>
        <li>
          <t><tt>authenticated_data</tt>: the expected content of the
<tt>TargetedMessage.authenticated_data</tt> field.</t>
        </li>
        <li>
          <t><tt>application_data</tt>: the expected application data after decryption.</t>
        </li>
        <li>
          <t><tt>padding_length</tt>: the expected length of the zero-filled <tt>padding</tt> field of
the decrypted <tt>TargetedMessageContent</tt>.</t>
        </li>
      </ul>
      <t>A verifier performs the steps of <xref target="recipient-validation"/> on
<tt>targeted_message</tt> and checks that all validation steps succeed, that the
decrypted application data matches <tt>application_data</tt>, and that the padding
has length <tt>padding_length</tt>.</t>
      <section anchor="vector-1">
        <name>Vector 1</name>
        <artwork><![CDATA[
cipher_suite: 1
epoch: 1
sender_leaf_index: 0
recipient_leaf_index: 1
padding_length: 0
group_id: f2262a40482cec0303230db5ac5fcf31
exporter_secret:
  e7d6fb6557f6b0dd7b8b8a1eeb0ed16b3737b7564377aa4aa831999dd1bfbf6a
sender_leaf_node:
  205d4f25388282dbeed3dc7a83c297be2d1cfb0120aeec7b776eaf1ce5c67b8d
  2220dd42b86b0339901510cb2a16018fa89c5315e738a6e15d09b5c0c373a1b9
  179400010673656e64657202000106000100020003000002000101000000006a
  8560a3000000006af42cb3004040cabc6b771ebb2331ee6a63497c8949fd6335
  3fd42657596c7b1ee0e1a50e45bde622d871ac9e6b07060f02d65f162575a542
  a81cf07b019397d46b84d1a6c806
recipient_encryption_priv:
  28e4c3614487885ffcb6f3f9a59a3a2a9109650890e10ffae0dc2e00df625ab8
authenticated_data:
application_data:
  4b41542074657374207061796c6f616420666f72207461726765746564206d65
  737361676573
targeted_message:
  0001000610f2262a40482cec0303230db5ac5fcf310000000000000001000000
  010040777ffcb757af2885bd1d07bb2b181592847fb3735e8da278352c07a557
  a08d7ca230f2bd254579b4e91c396fdd15e4c9196b345f6162787581858f6f9f
  60ae4e8299a00d3fbc4018279f6630a3bdf2c3ff70a15596820404c0b8098131
  795b6d247f71afc96562fd652e4bd28ca153d093f9c1c134d1857e37f852e72b
  d9eb8a03ba6eb23c60484f12612ae7a7194a0430d6ee563e0e0a111bb9e46eee
  74b8f5f2f2017c7c1f6ee1120334776b42a368
]]></artwork>
      </section>
      <section anchor="vector-2">
        <name>Vector 2</name>
        <artwork><![CDATA[
cipher_suite: 1
epoch: 5
sender_leaf_index: 0
recipient_leaf_index: 2
padding_length: 64
group_id: 494bb867937321cfa1ed12e38beb4ebc
exporter_secret:
  099416d0ebdcfc56c4b902371abe0e56453818791e851a1d99d8cd2e3d9fa5d8
sender_leaf_node:
  2069ed695cce5e378511ec918ecfcf0ec77aef8419b8aefff56fc69ae1bde4fe
  1220d5949ec3e201eb1131cca57e20552bf355300fb311274b2cf7fd568f2e11
  2f0800010673656e64657202000106000100020003000002000101000000006a
  8560a3000000006af42cb300404028bad1f073bd390cac5c8d0143baf45c5f47
  623694d96c87f25eef82d4f8aff759075d6bd7c21b41bdd0dede88352da82ad5
  0144a122895422207d41059ec60d
recipient_encryption_priv:
  aa30b0aedaa86b1197cc8f8d4dc0e0427ca3b3b31e33361a7d9e4ed43a632bd0
authenticated_data: 726571756573742d69643d3432
application_data: 7365636f6e64207461726765746564207061796c6f6164
targeted_message:
  0001000610494bb867937321cfa1ed12e38beb4ebc0000000000000005000000
  020d726571756573742d69643d343240770d3fc8dad6abb190188ea5e3a35bbc
  949520be96cb6fc4619b83165fc50500d9f04b6ff70717d9df81aeb3b7f99c04
  2470cdee8adbc75419552c20802b968b75a3cc577ea5dc9ff4cd8d0cfccf9be1
  f963b6ae360d643aa0e82b5e373e0696d01b77409543a8cc820871e6fb77a224
  8c0ab36c74e5f9994068e5cd351ad109febddbc9dabff823763b59647f2f20d9
  7307c1b52d784186c4349ae12fbece479657c5080146b323a7e3ddd82dd812ac
  8af669577a59fd6409dfc537c5ce7723d006ca30aa642ffa2709187d1d4616e8
  13628c67aed7575de8b6014615afa038dc4c
]]></artwork>
      </section>
      <section anchor="vector-3">
        <name>Vector 3</name>
        <artwork><![CDATA[
cipher_suite: 1
epoch: 42
sender_leaf_index: 3
recipient_leaf_index: 7
padding_length: 128
group_id: e87d0d3f4c6704f4c7b293803608a2ca
exporter_secret:
  2966045954d98555c3eb113c09053631d0a5da1331409fc2183f6e07ebb73a66
sender_leaf_node:
  207ced1c787759a5538d0b4b40231a5c35417593458ac8f79f4270a20f4f5be7
  2120ba40b1f4ed2a356eda58ed61fc9933324d2a2a2c9669257b2918f9bad57c
  5e7700010673656e64657202000106000100020003000002000101000000006a
  8560a3000000006af42cb3004040fa4214542d9a917fc3520a47692dd4c9ce4f
  a9f1786b0414b1209f46e0f1df687c0da0c558628918794beb0b2fd9a4ad2d08
  47722c552742e1a4ac0464e81b00
recipient_encryption_priv:
  24c98ea1980e34892cfe90cb87c4e6757fcdcde7cd28e3b51d100ea907bdae2b
authenticated_data:
application_data:
targeted_message:
  0001000610e87d0d3f4c6704f4c7b293803608a2ca000000000000002a000000
  0700407775080b98cd1a824901a329abf71dbb638ea997cfe0971100c878080a
  214937c645c42a187f2eece6e2728c14be16f1e86b7053940cdc0e483e32dd78
  42bb3bc51bc492556c55088f5087bf5a0f31d264ba94dd08c3b876384b6afd41
  e2d1424b0c2eef2eb61f923fd612f85583c8f5a831313f8f8e7021409157ccd8
  6dba88622b7ff3c984bbf93ced6898e990414032b5cb610af88ac92e21ec00a2
  69a3cf0a3073075a000952bac39e41074361012ad37a8194b0b9b42382b1e3e7
  191560bc664a8678555eb2d53389d1f0b7c231b3b4b4f1dc68f59e627e806ccd
  b000c98f3074e120b03a91746f77185af95b6446813a95132ef5c153587a7856
  52a77cd85ef344d1134db24fbe38
]]></artwork>
      </section>
    </section>
    <section removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <t>draft-ietf-mls-targeted-messages-02:</t>
      <ul spacing="normal">
        <li>
          <t>Replaced the <tt>TargetedMessageTBM</tt> struct with the
<tt>TargetedMessageContextData</tt> struct, which carries the leaf indices and is
used as the <tt>context</tt> field of the HPKE info.</t>
        </li>
        <li>
          <t>Used the content of the <tt>authenticated_data</tt> field directly as the HPKE
<tt>aad</tt> parameter.</t>
        </li>
        <li>
          <t>Replaced the two-step <tt>SetupPSKS</tt> and <tt>Context.Seal</tt> flow with the
single-shot <tt>SealPSK</tt> API, which is possible now that the AAD no longer
depends on the <tt>kem_output</tt>.</t>
        </li>
        <li>
          <t>Added a security consideration describing how each message field is bound.</t>
        </li>
        <li>
          <t>Updated the test vectors.</t>
        </li>
        <li>
          <t>Specified how members signal support for the <tt>mls_targeted_message</tt>
WireFormat with the <tt>supported_wire_formats</tt> and <tt>required_wire_formats</tt>
extensions, and when a sender is allowed to send a <tt>TargetedMessage</tt> to a
member. This adds a normative reference to draft-ietf-mls-extensions.</t>
        </li>
        <li>
          <t>Corrected the Forward Secrecy security consideration. Forward secrecy depends
on the recipient deleting the previous epoch's exporter secret, not its leaf
private key.</t>
        </li>
        <li>
          <t>Editorial fixes: described the <tt>TargetedMessageContext</tt> struct as the HPKE
<tt>info</tt> parameter and renamed <tt>hpke_context</tt> to <tt>hpke_info</tt>, used the RFC 9420
name <tt>SenderData</tt> instead of <tt>MLSSenderData</tt>, expanded the KEM, KDF, and AEAD
abbreviations at first use, spelled out MTI, and lowercased "forward
secrecy" and "post-compromise security".</t>
        </li>
      </ul>
      <t>draft-ietf-mls-targeted-messages-01:</t>
      <ul spacing="normal">
        <li>
          <t>Changed the intended status from Informational to Standards Track.</t>
        </li>
        <li>
          <t>Added a <tt>ciphertext_hash</tt> field to <tt>TargetedMessageTBS</tt> so that the
signature covers the message content; <tt>TargetedMessageTBM</tt> now carries
<tt>sender_leaf_index</tt> and <tt>kem_output</tt> directly.</t>
        </li>
        <li>
          <t>Replaced the single-shot <tt>SealPSK</tt> call with <tt>SetupPSKS</tt> followed by
<tt>Context.Seal</tt>, and specified the full sender-side order of operations.</t>
        </li>
        <li>
          <t>Specified the recipient-side processing steps, including signature
verification before content decryption.</t>
        </li>
        <li>
          <t>Emptied the <tt>context</tt> field of <tt>TargetedMessageContext</tt>; the group state
binding is provided by the PSK, as described in the new Group State
Binding security consideration.</t>
        </li>
        <li>
          <t>Added a Cryptographic Algorithms section binding all operations to the
group's cipher suite.</t>
        </li>
        <li>
          <t>Bound the recipient's public key and the exported secrets to the epoch
specified in the message, and added a Messages from Past Epochs section.</t>
        </li>
        <li>
          <t>Referenced the analysis of sender data encryption from RFC 9420 in the
security considerations.</t>
        </li>
        <li>
          <t>Registered the "TargetedMessageData" MLS Public Key Encryption Label.</t>
        </li>
        <li>
          <t>Added a Test Vectors appendix.</t>
        </li>
        <li>
          <t>Editorial fixes: corrected the RFC 9180 section reference for PSK mode and
aligned the IANA wire format description with the single-recipient design.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
    </section>
  </back>
  <!-- ##markdown-source:
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
b5eR9vGbyzGmnrYq9dSWZXyLR4ClM3LT3Y0zD4YO7aczmvn95Xdvi8XJDK97
gb8OrCDX589bvr8BA9bllbryl4X1vJTmRUkQHCBi4fqGwkX4sxfbmxox3O0O
3s8FGfvRXQh6w6SvBNZg85XAH5M2TGAWSryCQ12Xlg6QpOqHIpG+cieCLvmq
dmWfDeoj3LhjBfKcnGfrwBrwwRGB/srUeONJC8DV7MgCQ+usxXOI32zEb+zQ
4l0xwbvei3323et3z1fikVecIg1x/81xLyF59t2rN8+FcwSsX4xCUCMiFNHC
RdvWeSVukZTZzy5eX7x6Lj1VbaApciRNP3LtTWRoH8AmdBjEXxPx18N7QMlK
r+7VG9gLyMD2QcQzSlOvX38Wdqa5Fq7dNT7i9x8B6ffEmrBa/XJbNd3IZ+/9
cSlgSwAoy6JnvWPbo7CMgGjzw+21BpDwINEAO6pGGMVWo3ltmkgC9I/NDPtG
M21++KRWLD/tezhI1O1SU1YDRHHCEXxzPVEK18tIUcwgR+zVMXwZJT79uHRP
wAGFWpUPki5zFUPTKLFfmk2EKhejq2SuZ/JHPuOIO7MHA8WQkR5UmfFQqKdk
hzVeCYU9M19PvdQ/RLmOnZi1Fzc9pTVRAfZIBUwGIl9XEQDRBzClgKbcZfU3
XFvCmMYXIRfvK/dGeCBLSB4bv00/97VdVnxbGL7JsL6v7Uv83QvLM9PI7IGQ
q/7RK5Ge6PgV8LYSLszwczYHHmHd1GBedVn7XCplws2MDyWYhMlFZCxh0Jo+
uRkG1eP1GY6xWCiCaWfSJKbpxY1hBL6+xa9nw2W1oJcEkZbS4a6ck/Je7USO
VA5slrKylGJU2YreZ5DOuyFi/VAGtD+L26epOfDEEhVP0HH21BJd50/1UykM
vYWSgMmWWZJ5ylWksUaCLfMozEa4v25vcb8QIvsMPgRMApdKn5JVoODNbS99
6kbTmyLhsOh8Vu/kzzjn2sDjbIXwX+yvsUTT3Dw7m66Ckhzk6axsaRhMZl8a
UvC0TvAIiRYXYf3ZjrSNjkdkktYakrT2PEk7mI2NmDCvG4Seh1pmRmlgeHKj
sduZChLemdY6pJChkRXJ2HbiFCjLD8O/lJSk5JVSVz3VMcSYwEU/xCmabOY+
sZJqUq9YgZRwjUUycojkRDqn9yf6RKaYTucUJzbkKPOZvTRK7a19FKEqZrNp
mjE2wqvSK0QVgyjWF70cYQAHui5hlXxPMe7EvZj4VDKK79ct87wyqMckP+23
1Sc+wPiNiFOhHOSqQAkzVbkkqj0Y4BdLvDn2aDde79OK7OZziU08Le0o7Ah5
ipQVHXvNEG9LFxdWQ7VgUJM0wbx4IOyjzOUKjTF2IgTFDSfstt4qZay9agAm
mf29jCmUxC5HFRsVeFwP3NDybuyFrOhjWTVtZwHwul+FWVkQ3KiS7Xu6w4fV
5pR52duyfkm4/Btvait76HhL2RzYBF6RAZS5aMChtccENApgDltWifQIEA9Q
FOIft5saevnKKehfSNCF3E5mJjvdVFRfYnuqXuwAAw1T5x3vRBmkB0vyRj+A
JQcQxi7jGG675cqEUxaNEGHPETG2jZLe8LnIpuxr/LdfDy/2SZ4xzDIvXClJ
BxNSip1VlASmFYKO21oYpHkCSQPb8P+AEEjNsGNbSh5wrajkgFR/boQjqnhS
wUDcm1MezPAzKQOYr+y2FitayZLQZ0a5/pV+z4KeVXWYoU6QkyvS2RT37flW
qXGDdkJzjxTNaW7vXVDB5r2lMKo2vaEmjaCcFqEcrqt9WQsLxx7zc/vknZpI
e2tWWVMBVZVdCJbzxWzYF3Irp3Mny2mDz908cfRIomMyBL17RtOeHlqu5nN3
GoAXhtfwBWRJHLVDUTHvaz1UHrlWVDYSpPZYU/vj7AOEQC5TjSxiHdOaaug3
tjIj0ylkvuI61zP2SpK6HgqrYaI8B47eK7Su+oqjoeNFaZrshbAu5ku9tdqo
GGI80eBpzy3G4ErTjMoaEEdYZGhyUikfx9marD7uiyWDY/ic1rJnp2oGRnnq
l1/ECGsxwloZNyr9PYnSE/lDyHp7+MSvpIyp+JBUAKwEwF4u6fYIkAvtP8IE
EhpsihBmfgu53L2pBiWgyKC6Gt5HvMvu9WKe3TL9JnP6g/Rsaa7rQZJF/Clv
UbhyPU4umQ6vZXhrGq6n+5ITj86aenTmtKafPc0vqLBsf7OVxWTr+pKzLdj4
2r54/9ZQX8+GdO3KCBafUzQu33h2EgvzQGvhp+eNJz09R8yTXpvxvSLAf+1l
CM2TXpSBzBBTUkPRyuT2A2/I8uouA21E2o4fhO2vm4Kawqh1S+RBpSt8Ij5b
ylRpeSJor6dlkauW5w3vrh/N6m1o8pc6HTcwg0rnTVyxHI6PcDx6buptJCD4
kmklGw6+Hvyt0dzzFAyJugnBiuRKKSG96NOpKqnNdaZRFlyHNNREJdJYc/wK
AC/aFvHKli9K8jjPNRhD8msNmgzGHoswwJAwmmhfmQ4N1VwZJYqn6vsUOVd9
pqIV3lmvgAws0nB98opl8NBO6P1JDs/kjVG8AaM0WoGllfwTEmLGEMbNWcIJ
+Gv2KrKY8qik7AzP5C0gZhCoIY49XT7Eo7yk7hXj8W5Q4kK3WkszAPg954VO
aRusecqGCiZR/txjOR5tP762f0QwRkrYUNMLqmmqok+nR+nnUZX8NA08EGvp
7lM16kiBEsV1RrQ1NIyQEIWGa5GbG6rfhgsZifKVZTYyUbQhmXgeaHxJkEHb
Iapoqx11uspOumv5qHxs2vhjwuMbyQfh0m7st53gKui/1rATyumxBFutJslZ
kV5eUnODt/rd63e25A0z4zP3SsinoXcQhOZcd5z1TqWoGDHVxHXsBu+Ial1q
XJlIkBlFFcIuaBj7hu+pdKlR8miyaWO9lSPIeqoez8hbV4Qe0ZgBp1vOLZF0
f1tvJ08Ktw7xeDuk2k85xabemNtMDNWndXufc9Rx+qjPOU/pUjEVDM+PRU25
j1U/4EARydsyJcVaM8ZchvKJaWCj4idTPfJtIzVslhaU4fjawOufnc1GPrp2
/2LNoaFVfG1Pap3PTgD9qGd1hqHOTD9UgbOyVZXx+Xx2ibv/nvkBgRjuMRj2
hr56Qkp66BN7xAJZY3bvRY2iO86lrWyXqlHXy5mI/4ZekF/tsUrEWvouhg+9
Yf4Z/l6hKqQ/HaD2ZB5M+iAzYFeT4Fdkq5STPPaRrSUf+Wcjq3at13Zt70Qk
2Pad0OM5qlHf+2Y2jsDGtVGjaLVCzI+4hBGkhI/6d8XWDkptEzMdWKsfIloP
zRYDEG1XbbdUgBPX95wSbKx5EPIP8IXfTEPBU+83oJDWWdPYazF2q531EfRL
tBswMo1tqXtUhNfiOZpQRciD+hJzbWREIn3QRz2nRTf6lHc6rswT+AtOVcNL
1ZQokEsJ02zL9p804CeD/6U1fCm4eMxBHbcRiPhm6DyYJVQWQ4cehaNx5+8+
bh8nNF9KrysUKAf2kfhLOv/KAxGdx0M2eilPpObpc0MDCnSmWaCIsK6c6NFa
RQ7ZrGPN7KLZWyCyxe3cnZB7GFSei3okiIQra0nQlO/SDjabmufWqnnuehaA
UFLbaEGQi9GFBd1hKrd5URPWGMl9gCDJQ2pLam2VW5f02tdG4QMIOYi9JNqt
GHZqiB5XO8ejO15YukLEWrW7gSozpomRKZ8nULzvtKUdEqxtB4/PTKYq6qn2
YHGXQkOVq7hld9QNQGZQ+MPHnDQY5TsewBhvS1Fbke+1+p2hYvGEOoV01vW2
PYma96RXXwvdZ1nvZVXihGERipeZmrhveB7zR1db8AGYUiNDSsZUxDInK5Kr
0nYzNWjf29bX9ZVLYWsTv5y5kY1sp33NURmy6nTr1CNJURXgEdhma1T/VO+W
m4py1ZtTYoBtXX+ylbUchyG2GAIUuTQ63QfUisqQ7tSHqw1WkDGzEtOp4ZT+
jLWrWxH8tLy5E9viQH7aDVQ3G/gTnarKjegg8GFOfM/ZJ8iWJWnX3LOmkCTI
H0is4El0VICc6DD15Fo9+euv532Aao222dE2HsU8VCXUwsUo+SPuA0E1MWBr
MAWwRrXiHmixEYhKgoNwqceZwJSxs2+6PLmzwlKpfnIU+qqrZFpt2+TmGbUR
o+AklCpjYTZajMCi3SO1KMWIRn7SKmIxGF7mMETNv99PC+3RIjhU/adqt0Wr
QluNXx3DqncMChD3zdtq5Kqqxtoinu4Uahq+lewAnjy5tc5sA1BVxEl73nKH
Qndfqz1JtEuEPK5J3+OwNcpMof+z2Za2mHcdijvGpsiRKMmCePdwbo01kLKX
0x4sdkMmuRuPYWx3GLr3hMyL7V9Umr0ZnALqJjA2mpEo9bbGgLTvgFgIcPve
hyHMVWkCWTrFtIW9FftPxRx0E7fMto72tjps7Pd4YsiFpEZrscjNrPqmDVlW
6yepj53gu9meTWFS++WKjaqEXfmxt9Sf9vW9WAiNrArSkNwbbjHqV60KI6wT
2Rj95grYu+d31C9hWlnlzNNoErvWMkZVlknTnJiaSEyf8OeDdh2GflDL+obn
TDdwP9aOYhJjpWRXaFq5HqGXrHGDjUwhCydY0HqqKkWPCtTxWvRG1LuqHaTY
ujmyhsF1GGzIAlN01NMgHAaxI0Z6FFMJlA4frY02zI+dIhCQdR3LPyn90wrt
2PaxlzZwZqUT4YXu39KPCS4S5roXJMM0wvuodoK1FjZMGuvUskfeEWkiDVk7
3QNNMy+8x3JSYFb/mtRQYj+QfSlA/0aWWE/tmf1/KO5KCk8TU6MdntWefCxp
hc0SzXTDkpp/aFGnkTgD/2tDJx2WVnWCcK1AEOopzhViV+925KSr4chJHK1p
OVxbWePuchHZiY5VneVUKo9EDwQgC3SQPa0j39F+IwKiAeHzYumsnD6kVxY2
WYBZ673YUix2uArlp4yFkYMQSWqVSjAoavSD9m2P5K6ZN8RbJgZXsmoOcKT2
4bTRdGB3k9ZSxHRIT40DveM36jAYrMoJ6Iw2GRBCFIPl5HI7WvvFoobu1JRB
3qP17UnnJTRk3kGfqeSIhITK3lZf9lboNis/Aw2nqxgrTLEKS2J31o1BOmLQ
tpRGV829ktE3tNlU3Hr1Ld28YxCefad6B1Sbndms3U5lTyXzxaBrlbQ15Iv0
otXvFOxma+xavi0pcdwfNLI1wixa7VoaY9XC0a6skf8wqSIs0XAh/h5iQEtJ
hgwFuxov0lrHXeyzhL0qvPRz/2wG1d9IszGEc4uWUJGB7YS7PT00Qdo3Ukzy
AlYqCh5G6wax2R0dT0K++0LSaCUiVnNU0SfcF/EswUpGVlb6GTIgaEcBMLHY
VgXuMjwtKtqlL/J+ghKW9gumOzp03zOVMYY9/mKqUw6mpRIEaugTpVuDqkdR
0RkSK9PyKTOpaI3L7WM9JNrie6SqhIGuVOraKZ2WIjiHOg6bQbiGRMUjG5Ae
334kIlwYWXNYyu7o8xuUuFi//NIrv/Vdn5+GIRy8lpPZATPjN9BpuT48YZGp
j2omfaw9+ZZPS/3YC6kfa5z6EQL2Rnl1l9KrW/ItdBtBr2On7Wdfarfqe+sW
o7JZf7bkE6lsKa+vT+ARitZSi1ZqUErhPEqkVJPImY1fN9Tmxnqp/VZNitmC
DC9w5KzC7VWb4OcpgKHe29VDCEXKTikQ5VK/mbjTpGtUDG/dwDWhvZIUBJCX
fk4eu9TerY4CRs4aK+7YPldnosjDUGQOQh4NMQkeRayvF31o+F1VH9vePZuk
pRZyEJY+Oga6QQb/09jAcG9VfkFCyAcMgHsxijBGG2tI/ywcXTRNcPRi1/QJ
H0RVk0QF1l0eG2loZL5nCuQsUW09WjYZNQK81SHay0k8IPXoyRzdwlbKp/QQ
LIZ0mk6P6jvdSTlo3KXzg3To2ZsYZVMUw9PpK7IPvAfgFUJT6KIHvNjcVbnc
sSDuigHg61kqCB+ikVW/K0U8KM+1GZtkqDC7zvrMai9LWryUoTKcr8HgaTNI
XcPKCySXu9/EO+q4GB95MG+yGNoi2J5tH9pKOWX6FTcSncaWeQQOiQkpgL8e
2VZpyXkwS+V7Yy/0USsfS8B9mnOGU41EV/TgUqhKuwgrZBcyxMy6r48QCXEk
FkXJoitj0rjBqubFMKzs2+h3kmtLPvZLRy0zU/8UXJKxrNoKpVXKpFkPpiXB
pA2P263c1SKzhwPc3r+vXS+RYvaBw+49iAMOeH4qNVfUgpn6XVm6YUR2dR9F
vAO6q66ITgMpjkxAtHPHxTFnOTuQdS7mMRu5coMQiDIDQaV2b+iaJx1WNuja
e6rQUgZACNngN8jtEqD/tzpBdGLDoCXCW9GpYhzhpHj8XIEgHcQBzr5Xd+SE
tJxbxVHq7sHFIhnsM100LkWnvRcrzy5bSDsrpWtJAMSeDikJSr8PVDjuK+oa
kGjXvdMLoZzaGCPkrGH5p94SQXZaKlTJreEio/z24oeLWTaZwnXoQTriQp3n
o45/OnGMy+Rhc5OdOj7GPJrOkn3PJw67A1T2b6lv4cjPbeez4ziR/aw93oCO
mPM53fxBHAq4BArd/cApw0HSXpzbf5JXhLuf00mCb17a/4affo1DGCS6UsTi
f7Nw6oVl/VY+cb6489Wazfv4tMv7MzUIF1s6jY2C5uWs+S2f5Gd7B9LY/9Bv
6RiON9A++rBr48R+EGnaGn5TAekQYUucgMbvZAkXekYcYCR1nLQ2QlDMM+t0
rC+zbTOUkrF4BKdid8w/ilTdZjUi5RSF5qSzbqwnz0gHEGYQLRKhj+BMBNF5
VzdKTIa6JZ2XiZhF3INfwZu8UgTUG9LWwpQfhvLpxHFajpU2thmV68jAOMyD
yAcywgn/Gy9WKrcoXBkxn3F2idz5RnpIhj/ihL7eHRHJJtK50Jkv+ni5r9jI
IdT5c50QUUq8NJT6WXdNdTgIjaoTsf2qJ0Ns5PkqGlF6XTusgOHKw7qr1/0b
gtam+aQjH69g4a5EGujfvDB006uL15e49IeX764uv73wwujqdSFuQAVL+0GH
Y/DPouSnouorMdr1ylKZwtVQtFXZO9UPrrourmRL5LX9jEwSos9qx7bPBUJv
+ee12M8posHXlAuRixtKKdNc8q3YlPQwtjaipL2cxzw3RugLCqOMBJgcQQRl
ejc0inZrtecjB5gEJX15SmZ9JSP0nRxUJj9ZQ5f26KSfZXRP/teOVhGLWOhI
EjiZHl+gVjeqnMu2KlXuNzPtxvFtcqkjIhm1iz6BJWBZbu4S4Ay3hiWItm8F
lxEQ07m6I+AeaSYALzEqs2+32hHv0+CksjsRY8qAok9vSBaaGe3zyV5L8xwz
Y9PIEw7rU/1K/Tk780P61otuSs9/EuDxnixrvnfkkR3+YobJqVDT8ec7qkti
+yExJkaZiPZkjHEPNLVmrdW243nHlzqs78sdQOKsOVV2nuxJkp06Ij46kTOD
Az+nrdxZI/xiVc4bu8xyWJEklcZB+vDWAOsMWbplcY5mHdCNtylblB5T6Joi
VUYi0mLarmiQtUwNfI6LsqEHf8wEHl6htSR59PB4InpSq85zu/S8yGOBEyRe
znPHd3zPd4osZHlY5qXvWhP9SGfv8biIyiwKw7iMMqco4izJEuZynjm8cKPM
j/04i8Mo8OOYsYCxxHfTNC0KNyuzMmLWVC3RoJ4TFkHphX6SeIlXZKCBX+Qx
3s29NM64V7h5mTmu5zDOc4wfR3jdzXmYRwCAlJfneYAm8LIEYPl+mjpu6Dp5
5jE3ctykZEmah74b8thPWMTdsHDSLMydHAAzN0sxhBunAZxr14liPwojHgVR
GHuOJ6+J/zvik+846i9XXBM/ETV/JmHkMH+4VAZenuEzcOzkLMsjgO7yLPN8
HyiLWOQHaZwnaZCWReT7IYbwS6wCE4dphJXiKYe7LHR4EGYFjzyvSGKX5SnH
MmNAVTpeEYWlG3l4hYWBR4eeJ0CXEwNhqZ/GRRBlSVC4LMoTJ7JO6mFBiIQH
uR+5QZDESRKWZZ5FpV+mLEyZzzyWuk4ahU6SAiinLBl3itzjjlOUmJ9liTVX
SOfWVD5ooiALXADrxIRjP6a/nAgEiPKojNwIn6MoKmNPPOHGXhTjOTwr7mDB
GAKvAVJxw5/tR6I5FMUiQPoFRnfGP+ozDeES7eI4JkzEYcxKD2jJCrcAejMv
cxM3TL0kiEti/JAnBfPixA+93IkZZISI4SRFnDNMWHoZHK4gjNMs4Kmb+2lU
Qi5CoDx1U4hOENLaMUAcJm4SJmVUpqQ0wVM84ImXpgyo9sssD8DSXpyWUeSD
37Ki9HK/LGOHuSH4JvGI4XInS5w0cSHHQFYaZlHhAVBwT5mDiJEHlgs9HgCo
JMeLPiQCpM7d3PXBLkkYcz8uEzwSexmGKFIOSXf8DOIDBs4joDMoXS9yPcZj
FrtpwJwAeI04DyMffAtwXDfLUh7gEtmvOMiSMiy90nPcOI9zt8QNF2Lt+wFk
Ogs85keJ6tnv9aH3qD4M/xF96M30YRQYCjFIgwwKJE5BTA8yBL1WuB73k4yD
ZFm+pBCdNA3cqHB4VuRlHkZ5kKWO5wPNGVAAhoVWc5M4dXkSuswtoAuTvMCg
RVqysEhOKMQo5UWUhrBHIciAV10OLkk45igd6MCY8TIJ3BQk4WVZhlGZRynj
LpREUBKuXVKIITQLz30OfPPMBSvkOQNdoW9DLyv9MIRuAuuCBCCNl5dxWYRR
UnogCkFROsn/oEL0kowVLhQVGNhPoR/zME8Kxw3AYmUQQjYDEqDI86M0KKAa
khg2gmPdHqxFwsDwYerEYRFlkDDPhUrJisJBgMETksGCJR4rQiHGQcCAkCSF
ziGdUgSuEwIzkVM8rhAZgM8gfgUMWQQMQlvnSZkUQZGDvwMPku1n+Ody34c2
YjGkJOBF4EO1Q9ydJYVox6TfXRhJqfpAZ5jLwg98b64rbYF6H1qRR8GSNhzr
zS8owi8x+EQRhoMiBDOdBptUJCkmkI8VEcsyF+Y3STgD7zI/zCA5tg1WDD0n
44AVRiXHQsC8vgvjlYc0E+TBCXAHagyzFGlRJi7jQG5cpmnuBMSQQezkBecJ
K7I8DsH+4OPcA5d6GdQeNDTz8zyMY8xc5GlZBnkBjoLM5GWaceLpMo38LGLc
B+kBPmMOFGtGMgaNhRWB/2CjAwec4rMExMboMNnweSBynkdQJLnDMh/WOeAh
QIPTECXwRAof8l3AQJZQBYAvLVhWglf9GDNCK0P3kuIrUmG7HGi/DDwaQ4gT
KA04ApBer8x4zgPQM4yBlQSMC7vg+Qy6uCgKMH6RQN0SOsH/ERQEoArJeQDE
BRDp47Wcx7EHbe5EYE6HMXAJTLUXO9AfMUwXMB/xhFSEH0H1R1AlBWxbCLHJ
IprRDVkJRZ8UeZBPlbH/qDKG+7Ggjf0T2jieaWPXSwx1zAEusVUAGJ0Av+LM
S/3EAe0S5uVsSR17aQTDFIJ8RZqEYQjlR4ovd1In9CMfhhuswVz4X8BYCa2R
+BAtJ4ZTBkcwik6o4ziHoOSwzFA5MOzAjZPBh4Gih3OW+2BF3IABTxjUAwwz
NIPDPKcMyjDjpMU8WLkMLkjmltAPsHPQpwULE2h5F/Y4hfrwAlzHP1jnKIU7
h8XCcU2hJMEMGAK+a/w/qI5LFnhuAAVZpPDz4hKrgr8dxIAFjnWegi/JGWFp
6cbkZAdukGFRWCvwV7pwAZM4dwrm5GGYgLGI26BuEBhkcDVSxAKFVzjEd7D1
noenYHRgaXAD0h3BwXEzx/mCfwo4oFbcNHG4HyQpTBaH5cgwc8AjMHGZF1AQ
MQxswiF1LuTR4QxWIisYhxvzNP/0cSX6JbYc61CPDUo0Vt4kSXaWwg1wYaIC
6Ermeym0RewWWRb5WGEKQ1NyJ41dTArDl+ANJtgogO7O4VXkcJZcsoiIiHjE
vRiiDIpwNyrhaiDQAL9DNeVkqILE5z6oGAvsexmUah66cCPBZvBYQsADvwyK
LitD5sAhLrwoyBisLgiW+0AvgIJuZohNSIlSQBZ4QebA+eeAIAMPpx4iF/iC
8BhDxG0Yj0I//CthL3nseCRwLjgZKpmsepGxBGziQb2XPqgKw1SmPsQsSkBi
xG/gL/jpiNEwusPKBKKVetyDH+RAtGgIxCRwhsDPpE5DwjMsTMbgWHPY9ziA
QUbMyAofkSS8UzAiPG/Ph76HuRZS6QKiyEFcFgWw7zEpDPi2Rej7SUquSQa/
wneBLsg6WDyHbwS3AS46RyiFlWAI8KwD8EuAEHAScscn8QkQvcRwollJnncQ
RHDEWRq6vsfLMIe3HSbwmSGPJNgei8GySchLP4DrTf535gWwBX7SH8Mtq2ff
1zfWL+cN39V3/O3+w5uXX5/R93Gd/WpZT/h+MJH4EvVO3Q8+b8N6Nz9MbJ54
WuijXGq/HLV5yhIKbeI1z3+cHEFlnv9IvZ2Ugfqp5X0/7eiMotM9m0stmrSM
8dlEmyk2uvt6TZkgqt93x8P7y+8uVfZSLXhDZzxgkm19b6LHOLbIHh1bpJFC
m+j0V/3Ihn+VG7q4eDXsa6Ega9x4Y/a+EbQXBR1/wIYdLLlZp9SFEso73mIW
1XAo06F9M6toQhV4PRSin1Ws3KjK0L3LvteZBtItE/ILRZ74fSLW5BsB9OEG
p75DRGWJl77FwjK+9UJVHO7FwY+686xq5TeGjSqs8z13aouuOs1Tni0ID4R2
ivTffSa383LRP1RPv3RvgIKQ9JI2L+UahZPuthM0mjdjKZLTHvj9pLD+DzVP
rWSHQtfviRtlydf2a/1tf2CFz7w9N8pqS5pgeobaRJLk2WnDMV9EE2CNUTug
PF2tl2w6gWQ4b22lCuEYi4qH1NVB+/dER8q4a0Z8C5Y4QuDd95fGrRWtnO0L
3p8lIs6FkHxBvSXkpWQZoUsX9Dp1OAGmXlEfv0hQ07d7vfv4Vr5HzNPQt44U
9plq3hIlEUGjM/klS6d2oJxtnqJ9XaF9pR4vVCWxE1VVUe46qu6zt3vJ9fKM
BuDusqOaH33B1EdqXTDVwKlDwAnji/219ZDZNjeHG922k9NwXyxbCNJhStFb
i2dGzU6J6lXyTOkuK086t0sqDVMXmwcr2hOtLOk4bNLo9FaOUZW3URvOhnLv
WN2NBHBWiRZlAvNrBYZNbvZ4K/bJZmMhijv8qeVubgFPieKLaYWU3A91zq/c
pi2Px1ElU7ExY7pBnm5Qy6ax1wejqM0np3SWwXKnvg6k32qpARI9+UNNXfWC
24vfxkETfNPvIT1xtmF/0qXeA6j29vSHwYt2Vnt+mKJiackfTK3j5MZtvRDJ
p8oUzNvzlOERlSCjRVCMpvWaPlnHPoHXVs6hW0rEHIttH19qkDEJZPZe6JOR
Py/q/3xkvgTQbuL0hBzsINn5vrFG1orZFoyv3hQNU2Zbu2Q44ztPDDE3jRsJ
j/zmipy2QUIn31A3QwsPV+4j5sXXZyXbtuTf/l9pw5upVXcAAA==

-->

</rfc>
