<?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 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sullivan-tls-xof-schedule-00" category="std" consensus="true" updates="9258" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="XOF-based key schedules for TLS 1.3">XOF-based key schedules for TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-sullivan-tls-xof-schedule-00"/>
    <author fullname="Nick Sullivan">
      <organization>Cryptography Consulting LLC</organization>
      <address>
        <email>nicholas.sullivan+ietf@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="24"/>
    <area>Security</area>
    <workgroup>TLS</workgroup>
    <keyword>TLS 1.3</keyword>
    <keyword>key schedule</keyword>
    <keyword>KDF</keyword>
    <keyword>XOF</keyword>
    <keyword>deck function</keyword>
    <keyword>duplex</keyword>
    <keyword>sponge</keyword>
    <keyword>cSHAKE</keyword>
    <keyword>KMAC</keyword>
    <keyword>cipher suites</keyword>
    <abstract>
      <?line 203?>

<t>TLS 1.3 runs its entire key schedule on HKDF over SHA-2.  This document
defines an extension that replaces that schedule with one built on an
extendable-output function (XOF):  the negotiated KDF governs every
derivation, the Finished and binder MACs, and the transcript hash, so no
SHA-2 remains in the key schedule.  The cipher suites, AEAD algorithms,
state machine, and record layer are unchanged, and a connection without
the extension uses HKDF as today.  Two KDFs are defined, SHAKE256 and
the reduced-round TurboSHAKE256.  This document updates RFC 9258.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Transport Layer Security Working Group mailing list (tls@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/grittygrease/draft-sullivan-tls-xof-ciphers"/>.</t>
    </note>
  </front>
  <middle>
    <?line 214?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In TLS 1.3 <xref target="RFC9846"/>, every cipher suite runs its key schedule on HKDF
over the suite's hash.  This document defines an extension by which a
connection negotiates a key-derivation function of its own:  an
XOF-based KDF whose key schedule runs on a single Keccak permutation and
replaces HKDF across every derivation, the Finished and binder MACs, and
the transcript hash.  The permutation is the one a deployment already
carries when it uses SHA-3, ML-KEM, or ML-DSA.  When no KDF is
negotiated, the cipher suite's hash names HKDF and TLS 1.3's own
schedule runs, exactly as today.  Instantiating HKDF with a SHA-3 hash
would remove SHA-2 without changing how the schedule works.  This
document changes the schedule itself, not the hash.</t>
      <t>TLS 1.3 already negotiates groups, KEMs, signature schemes, PSKs, and
AEAD algorithms.  This document extends that agility to the key schedule
itself.  A TLS 1.3 cipher suite identifies an AEAD algorithm and the
hash used with HKDF.  This document leaves the suite alone and
negotiates the KDF beside it:</t>
      <artwork><![CDATA[
connection = cipher suite (TLS 1.3) + KDF (this document)
]]></artwork>
      <t>A KDF (<xref target="schedule-profiles"/>) defines every key-schedule computation the
connection uses:  the transcript hash, the secret and key derivations,
the Finished and PSK binder MACs, and the Encrypted Client Hello
acceptance computations.  It is negotiated in the schedule_profile
extension of <xref target="cipher-suites"/>, independently of the cipher suite.  A
connection that negotiates no KDF is a TLS 1.3 connection:  absence is
the default, and TLS 1.3's own schedule needs no identifier of its own.</t>
      <t>Both profiles express the schedule as one deck function:  an
extendable-output function that absorbs the schedule's inputs as
length-framed strings and squeezes each derived value from the
accumulated sequence.  It is defined once for both profiles in
<xref target="deck-schedule"/>, and each selects a different permutation for it:
TLS13_TURBOSHAKE256 (<xref target="turboshake-profile"/>) uses the 12-round
TurboSHAKE256 <xref target="RFC9861"/>, and TLS13_SHAKE256 (<xref target="shake-profile"/>) uses
the 24-round SHAKE256 <xref target="FIPS202"/>.  Finished and PSK binder values use
one MAC (<xref target="mac-op"/>).  The Encrypted Client Hello acceptance value is a
Derive (<xref target="ech-generic"/>).</t>
      <section anchor="design-goals">
        <name>Design Goals</name>
        <t>A KDF turns the whole derivation surface of a connection into one named,
testable object.  Every value comes from one permutation, every
derivation is injectively framed (<xref target="deck-interface"/>), and every one has
a byte-exact test vector (<xref target="test-vectors"/>).  Neither KDF uses SHA-2,
HMAC, or HKDF in any role, and the correspondence with TLS 1.3 can be
audited shape by shape (<xref target="shapes"/>).</t>
        <t>The alternative is to keep TLS 1.3's HKDF schedule and give it a SHA-3
hash.  That inherits TLS 1.3's analysis directly, and <xref target="fips-schedule"/>
records a variant close to it.</t>
        <t>The deck costs fewer permutation calls than that alternative.  HKDF is
built on HMAC, which runs every derivation as two nested hash calls,
overhead that exists only to key a hash not built for keying.  A keyed
sponge needs no such wrapper:  it produces each value in one squeeze,
with no separate extract step between stages.</t>
        <t>Over the representative handshake of <xref target="comparison"/>, the deck costs 39
Keccak permutation calls against 156 for a hash-only HKDF-SHA3-256 over
the same permutation (<xref target="permutation-count"/>).  That factor follows from
HKDF's definition over HMAC, which runs every operation as two nested
hash calls, so no HKDF instantiation removes it.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document does not define a new version of TLS, and defines no
cipher suites.  It adds one extension and changes nothing else:  the
state machine, the record layer, and every wire structure other than
that extension are TLS 1.3's, and the cipher suites, the AEAD
algorithms and their per-record nonce construction are TLS 1.3's.</t>
        <t>A KDF governs only the key schedule.  Negotiating one does not by itself
make a connection free of SHA-2:  certificate-based authentication is
negotiated separately and commonly relies on SHA-2.  A deployment that
requires a fully SHA-2-free connection must additionally restrict itself
to SHA-2-free signature schemes and certificate chains, or use PSK-only
authentication (<xref target="security-considerations"/>).  Note also that the cipher
suite continues to name a hash, which under a KDF of this document
governs nothing in the key schedule (<xref target="profile-governs"/>).</t>
      </section>
      <section anchor="deck-functions">
        <name>Deck Functions</name>
        <t>A key schedule is a derivation tree, and a deck function
(<xref target="related-constructions"/>) expresses one directly:  absorb a stage's
inputs into a running accumulator, derive a leaf from a clone at each
branch, and ratchet the accumulator itself into the next stage.  One XOF
does the work HKDF splits between Extract, at the stage boundaries, and
Expand-Label, at the leaves.</t>
        <t>The construction takes no key:  a secret is an ordinary framed input,
and the security rests on the XOF's own bound, not on a keyed-primitive
assumption (<xref target="cryptographic-analysis"/>).  The operations named here,
Init, Absorb, Derive, and Ratchet, are defined normatively in
<xref target="deck-schedule"/>.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
<?line -6?>
      </t>
      <t>This document uses the following terms.</t>
      <dl>
        <dt>KDF:</dt>
        <dd>
          <t>The key-derivation function of a connection, named by a TLS KDF
Identifier and negotiated in the schedule_profile extension
(<xref target="cipher-suites"/>).  It defines every key-schedule computation of
the connection (<xref target="schedule-profiles"/>) and determines the key
schedule:  a TLS13_TURBOSHAKE256 or TLS13_SHAKE256 identifier implies
this document's deck schedule (<xref target="deck-schedule"/>), and absence of the
extension implies TLS 1.3's HKDF schedule over the cipher suite's
hash.</t>
        </dd>
        <dt>selected_cipher_suite:</dt>
        <dd>
          <t>The cipher suite selected in the ServerHello message, as a 16-bit
integer.  uint16(selected_cipher_suite) yields its two-octet TLS 1.3
encoding.</t>
        </dd>
        <dt>recorded cipher suite:</dt>
        <dd>
          <t>For a resumption PSK, the cipher suite of the ticket.  An imported PSK
records no cipher suite:  it is bound to a KDF, not a suite
(<xref target="psk-importer"/>).</t>
        </dd>
        <dt>trunk (stage trunk):</dt>
        <dd>
          <t>The running deck accumulator for a schedule stage (E, H, or T),
which absorbs the stage's inputs, is cloned for each of the
stage's leaf outputs, and is ratcheted at the stage boundary to
an internal residue that seeds the next stage's trunk.</t>
        </dd>
        <dt>DHE:</dt>
        <dd>
          <t>The asymmetric shared secret, computed as in
<xref section="7.4" sectionFormat="of" target="RFC9846"/>.</t>
        </dd>
        <dt>Nk, Nn:</dt>
        <dd>
          <t>The AEAD key and nonce lengths of the selected cipher suite, in
octets.</t>
        </dd>
        <dt>FLen:</dt>
        <dd>
          <t>The length of Finished and PSK binder verify_data: 64 octets in
both profiles of this document.</t>
        </dd>
        <dt>uint16(n):</dt>
        <dd>
          <t>The two-octet big-endian encoding of n, as in the TLS presentation
language.</t>
        </dd>
        <dt>||:</dt>
        <dd>
          <t>Octet-string concatenation.</t>
        </dd>
        <dt>x[a..b]:</dt>
        <dd>
          <t>Octets a through b-1 of the octet string x, indexed from zero.</t>
        </dd>
        <dt>frame(x):</dt>
        <dd>
          <t>uint16(len(x)) || x, where len(x) is the octet length of x.</t>
        </dd>
        <dt/>
        <dd>
          <t>Strings are length-prefixed only:  they are not null-terminated or
otherwise padded after x.  Both profiles of this document build every
derivation input from framed items, so inputs are injectively encoded.</t>
        </dd>
        <dt/>
        <dd>
          <t>A uint16 encodes 65535, so frame(x) carries any x of 0xFFFF octets or
fewer, and longer inputs do not occur:  variable-length public values
are reduced by the transcript hash or explicitly bounded before
framing, and the one variable-length secret input, an external PSK, is
bounded by <xref target="psk-importer"/>.</t>
        </dd>
      </dl>
      <t>An empty value contributes frame("") wherever it is framed, encoding as
the two octets 0x0000 with no payload octets.  An absent input omits its
framed items entirely.  Omitting an input is not the same as framing an
empty value.</t>
      <section anchor="transcript-hash">
        <name>Transcript Hash</name>
        <t>The transcript hash is an unkeyed 64-octet hash defined by the
negotiated KDF (<xref target="turboshake-profile"/>, <xref target="shake-profile"/>).
TranscriptHash is computed over the handshake transcript as in
<xref section="4.1" sectionFormat="of" target="RFC9846"/>:  message type and length fields are
included, and record-layer framing is excluded.  TranscriptHash accepts
any octet string.  The TLS 1.3 rules define only how the handshake
transcript is serialized before hashing, and the same function is
applied to non-transcript inputs such as exporter labels and imported
PSK identities.  For a HelloRetryRequest, the synthetic-message
construction in <xref section="4.1" sectionFormat="of" target="RFC9846"/> is retained, substituting
TranscriptHash for Hash.</t>
        <t>In both profiles of this document, TranscriptHash takes no cipher suite
input, so a client can compute its checkpoints before the ServerHello.
The selected suite enters the transcript at the ServerHello, separating
later outputs as in TLS 1.3.  The schedule_profile extension enters the
transcript at the ClientHello, so TH_CH0, TH_CH, and TH_SH bind the
offered KDFs.</t>
        <t>This document uses the following checkpoint values:</t>
        <dl>
          <dt>TH_CH0:</dt>
          <dd>
            <t>TranscriptHash of the partial ClientHello transcript in
<xref section="4.3.11.2" sectionFormat="of" target="RFC9846"/>:  the handshake messages through the
ClientHello, with the ClientHello truncated after the
PreSharedKeyExtension.identities field and the binders list excluded.
After a HelloRetryRequest, this partial transcript includes the first
ClientHello and the HelloRetryRequest via the synthetic-message
construction of <xref target="transcript-hash"/>, exactly as in TLS 1.3.</t>
          </dd>
          <dt>TH_CH:</dt>
          <dd>
            <t>TranscriptHash(ClientHello).</t>
          </dd>
          <dt>TH_SH:</dt>
          <dd>
            <t>TranscriptHash(ClientHello up to and including ServerHello).</t>
          </dd>
          <dt>TH_SF:</dt>
          <dd>
            <t>TranscriptHash(ClientHello up to and including the server
Finished message).</t>
          </dd>
          <dt>TH_CF:</dt>
          <dd>
            <t>TranscriptHash(ClientHello up to and including the client
Finished message).</t>
          </dd>
        </dl>
        <t>For a Finished MAC computed by either peer, the covered transcript
is taken up to but not including the Finished message being
computed, consistent with <xref section="4.5.3" sectionFormat="of" target="RFC9846"/>.</t>
      </section>
    </section>
    <section anchor="schedule-profiles">
      <name>Key-Derivation Functions</name>
      <t>A KDF is a set of algorithms and encodings negotiated in the
schedule_profile extension (<xref target="cipher-suites"/>), independently of the
cipher suite.  A KDF specifies:</t>
      <ul spacing="normal">
        <li>
          <t>the XOF over which its deck schedule and MAC are instantiated
(<xref target="deck-schedule"/>);</t>
        </li>
        <li>
          <t>SecretLen, the length of stage and traffic secrets;</t>
        </li>
        <li>
          <t>FLen, the length of Finished and binder verify_data;</t>
        </li>
        <li>
          <t>TranscriptHash(messages), the unkeyed transcript hash of
<xref target="transcript-hash"/>;</t>
        </li>
        <li>
          <t>the derivation of initial and stage secrets from PSK and
key-exchange inputs (an extract operation, a stage accumulator,
or an equivalent construction);</t>
        </li>
        <li>
          <t>the derivation of every handshake, application, exporter, and
resumption secret;</t>
        </li>
        <li>
          <t>the Finished MAC and PSK binder computations;</t>
        </li>
        <li>
          <t>record key and IV derivation;</t>
        </li>
        <li>
          <t>traffic-secret update;</t>
        </li>
        <li>
          <t>exporter derivation;</t>
        </li>
        <li>
          <t>resumption PSK derivation;</t>
        </li>
        <li>
          <t>the Encrypted Client Hello acceptance computations; and</t>
        </li>
        <li>
          <t>the domain-separation and input-framing rules its derivations
use.</t>
        </li>
      </ul>
      <t>The suite continues to select the AEAD, as in
<xref section="4.2" sectionFormat="of" target="RFC9846"/>.  Future specifications may define additional
KDFs by registering a TLS KDF Identifier (<xref target="iana-considerations"/>) whose
definition covers every computation listed above.</t>
      <t>Every derivation of a KDF MUST bind at least the following into the
input of the underlying primitive:  a protocol identifier (the KDFs of
this document frame schedule_label, <xref target="deck-schedule"/>), the derivation
label, the output length (a KDF MAY instead fix the length of an
internal stage secret as a constant, provided the operation that
produces it is domain-separated from every variable-length operation),
the transcript checkpoint or other public context where applicable, and
the secret input or the stage that carries it.  All variable-length
items MUST be length-framed.  No two distinct derivation paths will
produce identical encoded inputs to the underlying primitive unless they
intentionally derive the same value.</t>
      <t>Both profiles of this document bind the output length as uint16, so no
output longer than 65535 octets is derivable.  The one derivation whose
length is caller-chosen is the exporter:  an implementation MUST reject
a TLS-Exporter request for more than 65535 octets rather than reduce the
requested length modulo 65536, which would let two different requested
lengths bind the same encoded value.  Every other output length in this
document is a profile constant or Nk + Nn, all far below the bound, so
the exporter is the only derivation where this rejection can occur.</t>
    </section>
    <section anchor="governing-profile">
      <name>KDF Selection and PSK Compatibility</name>
      <t>The negotiated KDF governs the whole key schedule of a connection, the
role SHA-256 or SHA-384 plays in <xref section="7.1" sectionFormat="of" target="RFC9846"/>.  Its XOF
runs every derivation of the schedule (<xref target="deck-schedule"/>).</t>
      <t>A PSK binder is computed before the server selects a cipher suite, and
verified under the KDF the PSK is bound to.  As in
<xref section="4.3.11" sectionFormat="of" target="RFC9846"/>, a server MUST verify the binder of any
PSK it selects.  The binder is keyed by a secret derived under that KDF
(<xref target="finished-and-binder-mac"/>), so a PSK established under one KDF cannot
key another and pass verification.</t>
      <t>A server MUST NOT select a PSK unless the KDF of the connection it forms
is compatible with the KDF associated with the PSK.  Two KDFs are
compatible only if they are the same TLS KDF Identifier.  This document
defines no broader compatibility.  This rule is the analogue of RFC
9846, Section 4.3.11, which requires a resumption to share the PSK's
hash:  under this document the KDF is the hash (<xref target="profile-governs"/>).</t>
      <t>Otherwise a 1-RTT resumption follows TLS 1.3.  The selected cipher
suite need not equal the PSK's recorded cipher suite.  A resumption MAY
change the AEAD as long as the KDFs are compatible.  The selected suite
appears in the ServerHello and therefore in the transcript, which
separates every handshake and application output as in TLS 1.3
(<xref target="downgrade-resistance"/>).</t>
      <t>After a HelloRetryRequest, an updated binder remains under the PSK's
KDF.  A client SHOULD omit from its updated ClientHello any PSK whose
KDF is incompatible with the KDF implied by the HelloRetryRequest, and
MUST recompute binders as required by <xref section="4.3.11.2" sectionFormat="of" target="RFC9846"/>.</t>
      <t>For 0-RTT, the server MUST require the selected cipher suite to equal
the PSK's recorded cipher suite (<xref target="zero-rtt"/>).  This is TLS 1.3's own
0-RTT rule.</t>
      <t>A PSK that is offered but not selected leaves no trace in the schedule.
If the server does not select the client's PSK, both peers compute the
connection's schedule as a handshake without a PSK:  the client discards
any PSK-keyed schedule state it built for the binder or for early data,
along with its outputs, and begins the schedule again with the empty
PSK, applying the destruction rules of its KDF.</t>
      <t>Implementations MUST associate every PSK and session ticket with the
KDF, and the cipher suite, under which it was established:  the KDF to
select a compatible PSK and compute its binder, the cipher suite for the
0-RTT equality check and the Nk and Nn of any early-data keys.</t>
    </section>
    <section anchor="derived-outputs">
      <name>Keyed Derivations</name>
      <t>Every derivation in this document that is keyed by a retained
octet-string secret, rather than by a live stage of a profile's
schedule, is a deck session rooted at that secret (<xref target="deck-schedule"/>),
specified once for both profiles in <xref target="expand-op"/> since the deck is
identical up to its permutation.  MAC computes the Finished and PSK
binder tags.  <xref target="mac-op"/> defines it once as a byte layout over the
profile's permutation, and each profile fixes that permutation
(<xref target="turboshake-mac"/>, <xref target="shake-mac"/>).  Stage schedules themselves remain
profile-specific (<xref target="turboshake-profile"/>, <xref target="shake-profile"/>).</t>
      <section anchor="expand-op">
        <name>Deriving from a Retained Secret</name>
        <t>A value keyed by a retained octet-string secret is a Derive
(<xref target="deck-interface"/>) whose deck is seeded with that secret rather than
run as a live stage trunk.  The seed is the secret itself: Init(secret),
the same way a ratchet seeds the next stage with its residue.  Derive
then adds the label, the context under the "context" tag if any, and
the "out" length:</t>
        <artwork><![CDATA[
D     = Init(secret)                # Init frames schedule_label
value = Derive(D, label, [context], [L])
]]></artwork>
        <t>label is an ASCII label, context is an octet string, and L is the output
length in octets.  Every item is length-framed by the deck
(<xref target="domain-separation"/>), so distinct derivations map to distinct deck
inputs.  When context is empty it is omitted rather than framed as an
empty value.  The frame of the following "out" tag delimits the absence,
so an omitted context and an empty one never yield the same input.  L
never exceeds 65535 octets (<xref target="schedule-profiles"/>).  Such a Derive is
the analogue of TLS 1.3's HKDF-Expand-Label and carries its labels
where TLS 1.3 has a counterpart.</t>
        <t>The following retained-secret derivations are instances of this shape,
each fixing the base secret, label, context, and output length.
The exporter (<xref target="exporters-generic"/>) is a further instance whose context
is a composite of two transcript hashes, and the ECH acceptance
confirmations (<xref target="ech-generic"/>) are instances whose context is a single
one.  Every derivation of this shape carries its context under the
"context" tag, including one whose context is itself a transcript hash.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Output</th>
              <th align="left">Base secret</th>
              <th align="left">Label</th>
              <th align="left">Context</th>
              <th align="left">Length</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">record keys (<xref target="record-keys-generic"/>)</td>
              <td align="left">a traffic secret</td>
              <td align="left">"key"</td>
              <td align="left">none</td>
              <td align="left">Nk + Nn</td>
            </tr>
            <tr>
              <td align="left">next traffic secret (<xref target="key-update-generic"/>)</td>
              <td align="left">current traffic secret</td>
              <td align="left">"traffic upd"</td>
              <td align="left">none</td>
              <td align="left">SecretLen</td>
            </tr>
            <tr>
              <td align="left">resumption_psk</td>
              <td align="left">res_master</td>
              <td align="left">"resumption"</td>
              <td align="left">ticket_nonce</td>
              <td align="left">SecretLen</td>
            </tr>
            <tr>
              <td align="left">ipsk (<xref target="import-derivation"/>)</td>
              <td align="left">epsk</td>
              <td align="left">"derived psk"</td>
              <td align="left">see below</td>
              <td align="left">SecretLen</td>
            </tr>
          </tbody>
        </table>
        <t>The ipsk row's context is TranscriptHash(ImportedIdentity), the
transcript-hash reduction of ImportedIdentity defined in
<xref target="import-derivation"/>.</t>
      </section>
      <section anchor="mac-op">
        <name>MAC</name>
        <t>MAC(key, message, L) computes every tag in this document:  the PSK
binder and both Finished values.  Both profiles use it.</t>
        <t>MAC builds the octet string mac_input from a key, a positional tuple X,
and a fixed customization string S, then applies the profile's
permutation to mac_input as a sponge, with a 136-octet rate, a 512-bit
capacity, and domain-separation byte 0x04 appended in the manner of
TurboSHAKE <xref target="RFC9861"/>, squeezing 8 * L bits:</t>
        <artwork><![CDATA[
K = key
X = frame(schedule_label) || frame(message)
S = "TLS 1.3 MAC"
mac_input = bytepad(encode_string("KMAC") || encode_string(S), 136)
            || bytepad(encode_string(K), 136)
            || X || right_encode(8 * L)
]]></artwork>
        <t>The four length encoders are byte-oriented.  For a non-negative integer
n, let b be the number of octets in its minimal big-endian form, taking
b to be 1 when n is 0.</t>
        <dl>
          <dt>left_encode(n):</dt>
          <dd>
            <t>the single octet b followed by n as b octets.</t>
          </dd>
          <dt>right_encode(n):</dt>
          <dd>
            <t>n as b octets followed by the single octet b.</t>
          </dd>
          <dt>encode_string(s):</dt>
          <dd>
            <t>for an octet string s of len(s) octets, left_encode(8 * len(s))
followed by s.</t>
          </dd>
          <dt>bytepad(s, w):</dt>
          <dd>
            <t>left_encode(w) followed by s, then zero octets until the length is a
multiple of w.</t>
          </dd>
        </dl>
        <t>The input X is positional.  Unlike the deck's Absorb and Derive inputs,
which pair each value with a frame(tag), the MAC fields carry no
per-item tags.  Their fixed order and length-framing parse them
unambiguously, and S is the same in every invocation of either profile.</t>
        <t>The two profiles fix the permutation (<xref target="turboshake-mac"/>,
<xref target="shake-mac"/>), and each profile's section names the construction its
permutation makes of this layout.  MAC is defined by the layout above,
not by reference to KMAC.</t>
        <t>Because right_encode(8 * L) binds the output length into mac_input
before the permutation runs, different output lengths yield distinct MAC
inputs.  MAC is the analogue of TLS 1.3's HMAC-based Finished and binder
MACs.  It carries no label:  distinct invocations yield distinct values
because the key and the message differ.  Both Finished values are
computed the same way, each over a different key and a different message
(<xref target="finished-and-binder-mac"/>).
L never exceeds 65535 octets (<xref target="schedule-profiles"/>).</t>
      </section>
      <section anchor="record-keys-generic">
        <name>Record Keys</name>
        <t>Record keys are the "key" derivation of <xref target="expand-op"/>: a traffic secret
derived in one call to key_block, so a retained traffic secret suffices
to re-derive its keys, as in TLS 1.3.  For early-data keys, derived
before the ServerHello, Nk and Nn are those of the offered PSK's
recorded cipher suite.  For every other traffic secret they are those of
selected_cipher_suite.</t>
        <t>key_block is that derivation:  the traffic secret as the seed, the
label "key", no context, and output length Nk + Nn.</t>
        <artwork><![CDATA[
# no context, so the third argument is the output length
key_block = Derive(Init(traffic_secret), "key", Nk + Nn)
write_key = key_block[0..Nk]
write_iv  = key_block[Nk..Nk+Nn]
]]></artwork>
        <t>The split is unambiguous:  Nk and Nn are fixed by the suite, and their
sum is bound into the derivation as the output length.  The traffic
secret is already specific to one direction and one stage, so no
direction or epoch input is needed.  The per-record nonce construction,
record format, and AEAD additional data are unchanged from TLS 1.3.</t>
      </section>
      <section anchor="key-update-generic">
        <name>Key Update</name>
        <t>A key update derives the next traffic-secret generation,
app_traffic_secret_{N+1}, from the current one by the "traffic upd"
derivation of <xref target="expand-op"/>, with record keys re-derived from the new
secret as above.  An implementation MUST NOT derive generation N+1 from
anything other than generation N, in particular not from a retained
stage accumulator or a counter:  that rule determines the derived value
and so is an interoperability requirement.  Each generation is also an
erasure boundary, and the previous secret, its keys, and any schedule
state derived from them are destroyed once the new generation is
installed (<xref target="erasure-boundaries"/>).</t>
      </section>
      <section anchor="finished-and-binder-mac">
        <name>Finished and PSK Binder MACs</name>
        <t>Finished and PSK binder verify_data are computed under a dedicated MAC
key, derived from a stage or traffic secret (<xref target="expand-op"/>), rather
than by MACing that secret directly.  This matches
<xref section="4.5.3" sectionFormat="of" target="RFC9846"/>:  finished_key and binder_key take the
roles of TLS 1.3's identically named intermediates, and MAC takes the
role of TLS 1.3's HMAC.</t>
        <artwork><![CDATA[
finished_key = Derive(Init(base_key), "finished")
verify_data  = MAC(finished_key, th, FLen)
]]></artwork>
        <t>For a Finished message, base_key is the base key that message takes in
the authentication-input table of <xref section="4.5" sectionFormat="of" target="RFC9846"/>:  the
sender's handshake traffic secret for a Finished sent during the
handshake, and the sender's current application traffic secret for a
post-handshake authentication Finished.  The label is "finished", and
th covers the transcript up to but not including the Finished message
being computed.  For a PSK binder, the dedicated key is
derived in two steps, as TLS 1.3 derives binder_key in Section 7.1 and
then finished_key from it in Section 4.3.11.2, via Section 4.5.3:</t>
        <artwork><![CDATA[
binder_key   = Derive(E, ext_or_res_label)
finished_key = Derive(Init(binder_key), "finished")
verify_data  = MAC(finished_key, TH_CH0, FLen)
]]></artwork>
        <t>E is the live early trunk of the schedule keyed by that PSK, before its
ratchet (<xref target="key-schedule"/>).  binder_key is a Derive directly on E, a
third early leaf alongside c_e_traffic and e_exp_master, so the early
trunk is the analogue of TLS 1.3's Early Secret from which Section 7.1
derives binder_key.  ext_or_res_label is "ext binder" for an external
PSK and "res binder" for a resumption PSK.</t>
        <t>finished_key is derived under "finished" for both a Finished and a
binder, and the two are already separated one step up by their base
secret, a handshake traffic secret against binder_key.  Both
finished_key and binder_key are 64 octets, the length of every stage and
traffic secret in both profiles (SecretLen, <xref target="turboshake-profile"/>,
<xref target="shake-profile"/>), matching TLS 1.3's use of Hash.length for the same
intermediates.  Binder verification follows <xref target="governing-profile"/>.</t>
        <t><xref target="comparison"/> counts every finished_key and binder_key derivation of a
representative full handshake against the corresponding TLS 1.3
HKDF-Expand-Label calls.</t>
        <t>finished_key and binder_key are dedicated MAC keys, and a Finished MAC
key shares its base key, the sender's handshake traffic secret, with
that sender's record keys (<xref target="record-keys-generic"/>).  Their separation
from the record keys follows from domain separation
(<xref target="domain-separation"/>).  Sharing the base secret reproduces TLS 1.3's
structure and its exposure exactly (<xref target="cryptographic-analysis"/>);  this
document establishes no separate joint-security argument for that
sharing (<xref target="open-analysis"/>).</t>
        <t>Binders are computed before the ServerHello.  This is possible in both
profiles because the early trunk binds no cipher suite:  the client
clones the early trunk to obtain binder_key at ClientHello time, in
either profile (<xref target="deck-schedule"/>).</t>
      </section>
      <section anchor="exporters-generic">
        <name>Exporters</name>
        <t>Exporters are keyed by the retained exporter master secret:</t>
        <artwork><![CDATA[
TLS-Exporter(label, context, length):
    # the context argument is itself a framed pair
    return Derive(Init(exp_master), "exporter",
                  frame(TranscriptHash(label))
                  || frame(TranscriptHash(context)), length)
]]></artwork>
        <t>The early exporter is the same construction keyed by e_exp_master.
Hashing the label and the context bounds their lengths, so the composite
context is a fixed-width pair and a long context cannot displace the
label.  An implementation MUST reject a TLS-Exporter request for more
than 65535 octets (<xref target="schedule-profiles"/>).</t>
      </section>
      <section anchor="ech-generic">
        <name>ECH Acceptance Confirmations</name>
        <t>For the KDFs of this document, the ECH acceptance signals of <xref target="RFC9849"/>
are:</t>
        <artwork><![CDATA[
D = Init(ClientHelloInner.random)

accept_confirmation =
    Derive(D, "ech accept confirmation",
           TranscriptHash(ech_conf_messages), 8)

hrr_accept_confirmation =
    Derive(D, "hrr ech accept confirmation",
           TranscriptHash(hrr_ech_conf_messages), 8)
]]></artwork>
        <t>replacing the HKDF-Extract and HKDF-Expand-Label computations of
<xref target="RFC9849"/>, with ech_conf_messages and hrr_ech_conf_messages the
handshake message ranges that document identifies for each
confirmation, per <xref section="4.1" sectionFormat="of" target="RFC9846"/>.
TranscriptHash(ech_conf_messages) is RFC 9849's transcript_ech_conf, the
same single transcript-hash operation, applied once.</t>
        <t>Keying the confirmation on ClientHelloInner.random alone matches
<xref target="RFC9849"/>, whose confirmation key is HKDF-Extract(0,
ClientHelloInner.random), with no handshake secret mixed in.  This
document seeds a deck with that same value and takes one Derive, in
place of RFC 9849's extract-then-expand, so the acceptance signal
keeps its RFC 9849 properties.  Only a server that decrypted the
inner ClientHello, and so learned ClientHelloInner.random, can
compute the confirmation, and no network attacker can forge it.
Because the confirmation transcript covers the ServerHello, it
binds its handshake and does not transplant to another.</t>
      </section>
      <section anchor="import-derivation">
        <name>PSK Import Derivation</name>
        <t>An external PSK is imported per target KDF (<xref target="psk-importer"/>).  For
every KDF of this document, ipsk is the "derived psk" derivation of
<xref target="expand-op"/>, keyed by epsk with TranscriptHash(ImportedIdentity) as
context, with target_kdf as the KDF.  This follows the shape of the RFC
9258 derivation, with the entire serialized ImportedIdentity reduced by
the transcript hash as the context.  ipsk is an explicit octet string by
design:  it crosses a system boundary into the PSK store.  epsk is
absorbed as the secret of a deck derivation (<xref target="expand-op"/>) in both
profiles, so a low-entropy or attacker-influenced epsk never keys either
profile's underlying permutation directly.</t>
      </section>
    </section>
    <section anchor="cipher-suites">
      <name>Negotiating a KDF</name>
      <t>This document defines no cipher suites.  A connection uses the cipher
suites of TLS 1.3, and negotiates its KDF separately, in a new
extension.</t>
      <t>Coupling the two would make the offered set the product of the AEAD
choices and the schedule choices, and would oblige a client that wants
one schedule with two AEADs to carry a code point for each combination.
The schedule and the AEAD are independent choices, and this document
negotiates them independently.</t>
      <t>The value negotiated is a TLS KDF Identifier, the registry <xref target="RFC9258"/>
already created for naming a key schedule independently of a cipher
suite.  A KDF of this document registers there
(<xref target="iana-considerations"/>).</t>
      <artwork><![CDATA[
struct {
    uint16 profiles<2..2^16-2>;   /* TLS KDF Identifiers */
} ScheduleProfileList;
]]></artwork>
      <t>The extension_data of a schedule_profile extension
(<xref target="iana-considerations"/>) is a ScheduleProfileList in a ClientHello, in
preference order, and a single uint16 in a ServerHello or a
HelloRetryRequest.</t>
      <t>Absence is the default, and the default is TLS 1.3:  a connection whose
ClientHello omits the extension, or whose server does not echo it, runs
the key schedule in <xref section="7.1" sectionFormat="of" target="RFC9846"/>, HKDF over the negotiated
cipher suite's hash.  That is HKDF_SHA256 or HKDF_SHA384 as the suite's
hash determines, so TLS 1.3's own schedule needs no value of its own
here and an endpoint of this document interoperates with TLS 1.3
unchanged.  A client that requires an alternative schedule signals it by
offering only KDFs of this document (<xref target="downgrade-resistance"/>).  Because
absence is the sole signal for the TLS 1.3 schedule, a
ScheduleProfileList MUST NOT include HKDF_SHA256 or HKDF_SHA384, the
other values of the RFC 9258 registry.  A server that receives either
MUST treat it as if that KDF were not offered, and MUST NOT select it.</t>
      <t>The KDFs of this document are TLS13_TURBOSHAKE256
(<xref target="turboshake-profile"/>) and TLS13_SHAKE256 (<xref target="shake-profile"/>).</t>
      <t>A server MUST NOT select a KDF the client did not offer.  A server that
selects a KDF of this document MUST send the extension in its
ServerHello, so the selection is covered by the transcript
(<xref target="downgrade-resistance"/>).</t>
      <t>A server that sends a HelloRetryRequest and selects a KDF of this
document MUST carry the selected KDF as a schedule_profile extension in
the HelloRetryRequest.  That selection pins the KDF for the rest of the
handshake and is the KDF implied by the HelloRetryRequest
(<xref target="governing-profile"/>).  The client computes its second ClientHello
and every later checkpoint under that KDF, and the HelloRetryRequest is
covered by the transcript.</t>
      <section anchor="profile-governs">
        <name>What the KDF Governs</name>
        <t>A KDF defines every key-schedule computation of the connection,
including the transcript hash (<xref target="schedule-profiles"/>).  When a KDF of
this document is negotiated, the hash named by the cipher suite governs
nothing in the key schedule:  the transcript hash is the KDF's, and the
derivations and MACs are the KDF's.</t>
        <t>The cipher suite's name still carries that hash.  A connection on
TLS_AES_128_GCM_SHA256 with TLS13_TURBOSHAKE256 selected takes
AES-128-GCM, its Nk and Nn, and its per-record nonce construction from
the suite, and takes SHA-256 from nowhere:  no part of the key
schedule uses it.  A connection that negotiates no KDF is unaffected:
the suite's hash governs its schedule exactly as TLS 1.3 specifies.</t>
      </section>
    </section>
    <section anchor="deck-schedule">
      <name>The Deck Schedule</name>
      <t>Both KDFs of this document express the key schedule as a deck function
(<xref target="deck-functions"/>).</t>
      <t>The schedule's normative interface is defined here, in terms of the
profile's XOF and nothing else:  Init and Absorb build a framed input
sequence, Derive reads one to produce a keyed output, and Ratchet
crosses a stage boundary.  A derived value is one XOF call over the
sequence that produced it.  The security this rests on is the XOF's own
(<xref target="cryptographic-analysis"/>), not a contract inherited from an
abstraction.  <xref target="turboshake-profile"/> and <xref target="shake-profile"/> each give a
short instantiation naming the profile's XOF, permutation, and
domain-separation constants.</t>
      <t>This document uses the following terms.</t>
      <dl>
        <dt>schedule_label:</dt>
        <dd>
          <t>The fixed 6-octet ASCII string "tls13 " (with a trailing space),
framed at Init (<xref target="deck-interface"/>) into every derivation of both
profiles.  It marks the TLS 1.3 deck schedule and is identical for
both profiles, which are separated by their XOF, not by this label.
It is byte-identical to the "tls13 " label prefix in
<xref section="7.1" sectionFormat="of" target="RFC9846"/>.  Its byte-level separation from other uses
of the same XOF, including the transcript hash, is covered in
<xref target="domain-separation"/>.</t>
        </dd>
        <dt>deck function:</dt>
        <dd>
          <t>An extendable-output function evaluated over a sequence of framed
input strings, with the output length bound into the sequence before
any output is produced (<xref target="deck-interface"/>).  The construction beneath
it is an XOF and takes no key parameter, its secrets being ordinary
framed inputs.  Related work on keyed functions over a forked state is
discussed in <xref target="related-constructions"/>.</t>
        </dd>
        <dt>stage:</dt>
        <dd>
          <t>One of the three phases of the schedule:  early (keyed by the PSK),
handshake (adds the key-exchange secrets), and application.  Stages
are separated by ratchets (<xref target="deck-interface"/>).  A key update is a
derivation of the retained traffic secret (<xref target="key-update-generic"/>),
not a ratchet.</t>
        </dd>
        <dt>ratchet:</dt>
        <dd>
          <t>Crossing a stage boundary with the Ratchet operation of
<xref target="deck-interface"/>:  the residue is Derive(D, "derived"), and the next
deck is Init'd, framing schedule_label, then seeded with that residue,
after which the completed deck is destroyed (<xref target="erasure-boundaries"/>).</t>
        </dd>
      </dl>
      <t>The presentation is stateful, but the construction is not.  Every
derived value equals one invocation of a profile's deck function over
the framed derivation path from its stage's initialization to that
value, with no extract-then-expand structure.  The three stages of
<xref target="key-schedule"/> are protocol phases separated by ratchets, not KDF
steps:  shared trunks absorb each input once, the handshake holds only
two intermediate secrets, and the one-way truncations fall at the
stage boundaries where TLS must erase prior state.</t>
      <section anchor="deck-interface">
        <name>The Deck Schedule Interface</name>
        <t>A deck is a running sequence of framed inputs.  The profile's DF(S, L)
is the XOF over that sequence (<xref target="turboshake-instantiation"/>,
<xref target="shake-instantiation"/>).  It returns L octets, and L is at most 65535.
The schedule runs one deck per stage, driven by four operations.</t>
        <section anchor="operations">
          <name>Operations</name>
          <artwork><![CDATA[
Init([seed])         D = frame(schedule_label) [ || frame(seed) ]

Absorb(D, tag, v)    D = D || frame(tag) || frame(v)

Derive(D, label,     out = DF(D [ || frame(ctag) || frame(context) ]
       [context], [L])         || frame(label)
                               || frame("out") || frame(uint16(L)), L)
                     # D is cloned, not consumed
                     # ctag names context, as tag names v in Absorb
                     # omitted L is SecretLen

Ratchet(D)           residue = Derive(D, "derived")
                     return Init(residue)
                     # residue = Derive-Secret(., "derived", "");
                     # the next deck is Init, seeded with the residue
]]></artwork>
          <t>Init starts a deck by framing schedule_label.  Every deck is Init'd, so
every keyed sequence opens with frame(schedule_label), TLS 1.3's
"tls13 " prefix (<xref target="domain-separation"/>).  A ratchet residue or a
retained secret is passed to Init as the seed (<xref target="key-schedule"/>,
<xref target="expand-op"/>).
Absorb feeds one tagged input into the running deck.  That is the same
role HKDF-Extract's mixing step plays in TLS 1.3.</t>
          <t>Derive is the keyed-output operation.  It clones the running deck,
absorbs that leaf's context, then adds the leaf label.  The context is a
transcript checkpoint under ctag "th" at a stage leaf, an expansion
context under ctag "context" for a retained secret, or none.  The
context precedes the label here, the reverse of TLS 1.3's HkdfLabel
order.  The framing is injective either way, so the order does not bear
on security, and placing the context first lets sibling leaves that
share it branch after one absorption.</t>
          <t>The clone leaves the deck unchanged, so one deck yields all of a stage's
leaves.  Derive fills exactly HKDF-Expand-Label's role.  At a stage leaf
it stands in for TLS 1.3's Derive-Secret(secret, label, Messages), with
the deck in place of the secret.  A value keyed by a retained secret is
a Derive over a deck seeded with that secret (<xref target="expand-op"/>).  A Derive
that omits L, including every leaf of the key schedule
(<xref target="key-schedule"/>) and the Ratchet residue, outputs SecretLen octets.  A
Derive that fixes its own length passes L explicitly (record keys,
exporters, the ECH confirmation).</t>
          <t>Ratchet crosses a stage boundary.  Its residue is a Derive under the
label "derived", which is this schedule's analogue of TLS 1.3's
Derive-Secret(., "derived", "") between stages.  The next deck is Init'd
like any other, framing schedule_label, then seeded with that residue,
so "derived" names the residue, not the new deck.  The residue is
internal and never leaves the schedule.  Any stage input, such as the
asymmetric shared secret, is a later Absorb into the new deck, not part
of the ratchet.</t>
          <t>The old deck is retired, and an implementation MUST NOT Absorb into or
Derive from it afterward.  Because the residue is a squeeze, a later
compromise recovers the retired state only by guessing it, which its
min-entropy bounds (<xref target="erasure-boundaries"/>).  This is not the in-place
Ratchet() of Cyclist or STROBE (<xref target="XOODYAK"/>, <xref target="STROBE"/>), which returns
nothing.</t>
          <t>A Derive is one DF call over its framed path, and a ratchet residue is
one such Derive.  It is therefore byte-exact and testable alone.</t>
        </section>
      </section>
      <section anchor="shapes">
        <name>Derivation Shapes</name>
        <t>Every TLS 1.3 derivation replaced by this document is an instance of
one of six shapes.</t>
        <table anchor="shape-table">
          <name>Derivation Shapes and Their Realizations</name>
          <thead>
            <tr>
              <th align="left">Shape</th>
              <th align="left">TLS 1.3 site</th>
              <th align="left">Realization</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Root absorb</td>
              <td align="left">the Early Secret extract</td>
              <td align="left">Init + Absorb</td>
            </tr>
            <tr>
              <td align="left">Accumulate</td>
              <td align="left">the Handshake Secret extract IKM (per component)</td>
              <td align="left">Absorb</td>
            </tr>
            <tr>
              <td align="left">Ratchet</td>
              <td align="left">Derive-Secret(., "derived", "") at a boundary</td>
              <td align="left">Ratchet</td>
            </tr>
            <tr>
              <td align="left">Derive from a deck</td>
              <td align="left">traffic and exporter secrets; PSK binder keys</td>
              <td align="left">Derive</td>
            </tr>
            <tr>
              <td align="left">Derive from a secret</td>
              <td align="left">record keys; exporters; key update; resumption; PSK import (<xref target="RFC9258"/>)</td>
              <td align="left">Derive</td>
            </tr>
            <tr>
              <td align="left">Keyed check</td>
              <td align="left">Finished; PSK binders</td>
              <td align="left">MAC</td>
            </tr>
          </tbody>
        </table>
        <t>Shapes 1 through 3 act on the trunk of a stage.  Shapes 4 and 5 are the
same operation, Derive, over a live trunk or over a seeded deck rooted
at a retained secret (<xref target="expand-op"/>).  Shape 6 is a self-contained keyed
call.  Record keys are derived from their traffic secret by a separate
call, as in TLS 1.3, so a retained traffic secret suffices to re-derive
its keys.  Deriving them within the call that produces the traffic
secret would save a few invocations but break that re-derivability, so
the schedule keeps the separate call.</t>
      </section>
      <section anchor="key-schedule">
        <name>Key Schedule</name>
        <t>The schedule has three stages separated by two ratchets.  A key-update
generation is a derivation of the retained traffic secret
(<xref target="key-update-generic"/>), not a further ratchet.  Stage trunks and stage
secrets bind no cipher suite value, matching the TLS 1.3 extracts they
replace, and no leaf derivation binds one either:  a client offering
several cipher suites under one KDF computes one schedule, and only the
record-key derivations depend on the suite, through the Nk + Nn they
output (<xref target="record-keys-generic"/>).  Every derivation frames
schedule_label at Init (<xref target="deck-interface"/>).  The negotiated KDF is
bound by the XOF, not by this label.  This listing is identical for both
profiles.  Only each profile's DF and MAC instantiations differ
(<xref target="turboshake-profile"/>, <xref target="shake-profile"/>).</t>
        <artwork><![CDATA[
E = Init()
Absorb(E, "psk", PSK)              # "" when no PSK is offered

# early-stage leaves, each a clone of the early deck E
c_e_traffic  = Derive(E, "c e traffic", TH_CH)   # 0-RTT
e_exp_master = Derive(E, "e exp master", TH_CH)   # 0-RTT
binder_key   = Derive(E, ext_or_res_label)        # no context

H = Ratchet(E)                     # residue = Derive(E, "derived")
                                   # then H = Init(residue)
Absorb(H, "dh", DHE)               # once per key-exchange component

c_hs_traffic = Derive(H, "c hs traffic", TH_SH)
s_hs_traffic = Derive(H, "s hs traffic", TH_SH)

T = Ratchet(H)                     # residue = Derive(H, "derived")
                                   # then T = Init(residue)

c_ap_traffic = Derive(T, "c ap traffic", TH_SF)
s_ap_traffic = Derive(T, "s ap traffic", TH_SF)
exp_master   = Derive(T, "exp master", TH_SF)
res_master   = Derive(T, "res master", TH_CF)
# T destroyed
]]></artwork>
        <t>When the negotiated group is a hybrid or other multi-component key
exchange, DHE is not one secret.  Each component shared secret is
absorbed by its own Absorb(H, "dh", component), in the order that group
defines them, and the components are never concatenated first.  Both
peers MUST absorb in that order, so they build the same handshake-stage
input sequence.</t>
        <section anchor="absent-empty">
          <name>Absent and Empty Inputs</name>
          <t>A handshake without a PSK still executes Absorb(E, "psk", "").  That
call contributes the following bytes:</t>
          <artwork><![CDATA[
frame("psk") || frame("") = 0x0003 || "psk" || 0x0000
]]></artwork>
          <t>This is unambiguous because a PSK of this document is never zero-length
(an imported or resumption PSK is 64 octets, <xref target="psk-importer"/>).  In that
case the early stage carries no leaves and its deck holds only known
constants, as TLS 1.3's Early Secret is the extract of two known
constants.  The stage exists for uniformity across handshake modes, and
the schedule's security does not rest on its secrecy when no PSK is
present.  A PSK-only handshake omits Absorb(H, "dh", ...) entirely:  the
tag "dh" does not appear in the sequence.</t>
        </section>
        <section anchor="stage-secrets">
          <name>Stage Secrets</name>
          <t>The three stage decks E, H, and T are this schedule's analogue of TLS
1.3's Early, Handshake, and Main Secret.  They are states, not values.
A leaf clones the running deck rather than reading an extracted octet
string, so no named early or main secret is materialized.</t>
          <t>Each stage boundary is a Ratchet (<xref target="deck-interface"/>) whose residue is
Derive(D, "derived"), and whose next deck is Init'd, framing
schedule_label, and seeded with that residue.  That residue is the
analogue of TLS 1.3's unnamed "derived" salt.  It never leaves the
schedule.  It seeds the next deck once and is then discarded
(<xref target="erasure-boundaries"/>).</t>
          <t>The values that do leave, the traffic and exporter secrets, are
separated by their framed paths (<xref target="domain-separation"/>):  sibling leaves
within a stage differ by label, and every leaf also binds its transcript
checkpoint.  Early data is separated in addition by the 0-RTT equality
check (<xref target="governing-profile"/>).  Every stage binds its transcript at the
leaves, so the decks themselves bind none.  The derivation graph maps
the TLS 1.3 graph node for node, adding none (<xref target="derivation-graph"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="turboshake-profile">
      <name>The TLS13_TURBOSHAKE256 Profile</name>
      <t>The TLS13_TURBOSHAKE256 profile instantiates the deck schedule of
<xref target="deck-schedule"/> with TurboSHAKE256 <xref target="RFC9861"/>, built on the 12-round
Keccak-p[1600,12] permutation of <xref target="FIPS202"/>.</t>
      <t>The profile parameters are:</t>
      <dl>
        <dt>SecretLen:</dt>
        <dd>
          <t>64 octets, the length of every stage and traffic secret.</t>
        </dd>
        <dt>FLen:</dt>
        <dd>
          <t>64 octets.</t>
        </dd>
      </dl>
      <section anchor="turboshake-instantiation">
        <name>Instantiation</name>
        <t>The deck function is:</t>
        <artwork><![CDATA[
DF(S, L) = TurboSHAKE256(seq(S), 0x1F, L)
]]></artwork>
        <t>where seq(S) is the concatenation of every framed item of S in order.
TurboSHAKE256's output length is in octets per <xref target="RFC9861"/>, so L is
passed unchanged, unlike the SHAKE256 profile, whose bit-oriented length
needs an 8 * L conversion (<xref target="shake-instantiation"/>).</t>
        <t>The transcript hash of <xref target="transcript-hash"/> is instantiated with the same
function:  TranscriptHash(x) = TurboSHAKE256("tls13 hash" || x, 0x1F,
64).  The domain-separation byte for the deck and the transcript hash is
fixed to 0x1F, the RFC 9861 default, so an API without the D parameter
implements both unchanged.  The MAC (<xref target="mac-op"/>) requires D = 0x04, so
the TurboSHAKE interface this profile uses has to expose the domain
byte.</t>
        <t>TurboSHAKE256 uses the Keccak-p[1600,12] permutation as a sponge:
input is absorbed into a 1600-bit state in rate-sized blocks of 136
octets, with the permutation applied after each block, and output is
read from the same state.  The capacity is the 512-bit portion of the
state that input and output never touch.  It is what the erasure
argument of <xref target="erasure-boundaries"/> relies on, and the 64-octet secret,
transcript-hash, and Finished and binder MAC lengths are set to match
it.</t>
        <section anchor="required-api-surface">
          <name>Required API Surface</name>
          <t>The required API surface is incremental absorption, cloning of an
unfinalized state, and one-shot squeeze with the output length
known up front.  Cloning before any output is incremental input to
two separate invocations, which Section 2.1 of <xref target="RFC9861"/> permits.
No absorb-after-squeeze occurs anywhere in this document, so no
access below the TurboSHAKE interface is required.  The clone
discipline is the same one TLS stacks already apply to SHA-2
transcript-hash checkpoints.</t>
        </section>
      </section>
      <section anchor="turboshake-mac">
        <name>MAC</name>
        <t>This profile's MAC is the construction of <xref target="mac-op"/> over this profile's
Keccak-p[1600,12] permutation:  the sponge is TurboSHAKE256(mac_input,
0x04, L), which this document names TurboKMAC256.  TurboKMAC256 is not a
NIST-defined instance of KMAC (<xref target="cryptographic-analysis"/>).</t>
      </section>
    </section>
    <section anchor="shake-profile">
      <name>The TLS13_SHAKE256 Profile</name>
      <t>The TLS13_SHAKE256 profile instantiates the deck schedule of
<xref target="deck-schedule"/> with plain SHAKE256 <xref target="FIPS202"/>, built on the 24-round
Keccak-f[1600] permutation, in place of TurboSHAKE256's
Keccak-p[1600,12].  This profile mirrors the TLS13_TURBOSHAKE256
profile's framing exactly:  domain separation comes from the same
framed-prefix mechanism the TurboSHAKE profile uses, an absorbed
frame(schedule_label) at Init (<xref target="deck-interface"/>), not from cSHAKE's
function-name and customization-string inputs.  The two profiles' decks
therefore differ only in the underlying permutation, so derivation
(<xref target="expand-op"/>) and the MAC construction (<xref target="mac-op"/>) are shared by both
profiles.</t>
      <t>The profile parameters, SecretLen and FLen, are 64 octets as in
<xref target="turboshake-profile"/>.</t>
      <section anchor="shake-instantiation">
        <name>Instantiation</name>
        <t>The deck function is:</t>
        <artwork><![CDATA[
DF(S, L) = SHAKE256(seq(S), 8 * L)
]]></artwork>
        <t>where seq(S) is the concatenation of every framed item of S in order,
SHAKE256(X, L) is the function of <xref target="FIPS202"/> with X the main input and
L the output length in bits, and 8 * L converts this document's
octet-oriented L to the bit-oriented L argument of SHAKE256.</t>
        <t>SHAKE256 takes no function-name or customization-string input.  This
profile's domain separation comes from seq(S) beginning with
frame(schedule_label), as <xref target="shake-profile"/> describes
(<xref target="deck-interface"/>).</t>
        <t>The transcript hash of <xref target="transcript-hash"/> is instantiated with the
same function: TranscriptHash(x) = SHAKE256("tls13 hash" || x, 512).</t>
        <t>SHAKE256 uses the Keccak-f[1600] permutation as a sponge with the same
136-octet rate and 512-bit capacity as TurboSHAKE256
(<xref target="turboshake-instantiation"/>).  The capacity is what the erasure
argument of <xref target="erasure-boundaries"/> relies on, and the 64-octet secret,
transcript-hash, and Finished and binder MAC lengths match it in both
profiles.</t>
        <section anchor="required-api-surface-1">
          <name>Required API Surface</name>
          <t>The required API surface is that of <xref target="turboshake-instantiation"/>:  no
absorb-after-squeeze occurs, so no access below the SHAKE256 interface
is required.</t>
        </section>
      </section>
      <section anchor="shake-mac">
        <name>MAC</name>
        <t>This profile's MAC is the construction of <xref target="mac-op"/> over this profile's
Keccak-f[1600] permutation:  that permutation is the one cSHAKE256 and
KMAC256 are built on, and the layout and 0x04 domain byte are the ones
cSHAKE and KMAC use, so the result is byte-for-byte NIST KMAC256
<xref target="SP800-185"/> by construction.</t>
      </section>
    </section>
    <section anchor="psk-importer">
      <name>PSK Importer</name>
      <t>TLS 1.3 permits external PSKs <xref target="RFC9846"/>, and <xref target="RFC9258"/> imports an
external PSK into a target KDF, producing a PSK bound to its target.
This document uses that mechanism unchanged.</t>
      <t>A KDF of this document is a TLS KDF Identifier
(<xref target="iana-considerations"/>), so an external PSK imported for use with one
is imported under RFC 9258's own ImportedIdentity, with target_kdf
naming the KDF.  No variant structure is needed, and none is defined.</t>
      <t>The earlier coupling is what made a variant structure seem necessary.
RFC 9258 binds an imported PSK to a KDF and not to a cipher suite,
deliberately, so that a PSK cannot be reused across key schedules.  A
design in which the cipher suite selects the schedule has no KDF to
name, and has to bind the suite instead.  Negotiating the schedule in
its own extension removes the problem rather than working around it:
the thing RFC 9258 wants to bind is once again a value the protocol
negotiates.</t>
      <t>The import derivation is the generic derivation of
<xref target="import-derivation"/>, keyed by epsk under target_kdf.  An endpoint MUST
NOT use the raw external PSK epsk directly as a TLS PSK under a KDF of
this document, and MUST NOT import an epsk longer than 0xFFFF octets, so
every framed value fits a single frame.  A client that imports one
external PSK for use under more than one KDF MUST produce a separate
ImportedIdentity, and hence a separate ipsk, per target_kdf, exactly as
RFC 9258 requires.</t>
    </section>
    <section anchor="zero-rtt">
      <name>Zero-RTT and Early Data</name>
      <t>Early data remains PSK-only and remains replayable under the TLS 1.3
anti-replay model.  This document changes neither.  A client MAY send
early data only if the first offered PSK's recorded cipher suite is
among the cipher suites it offers and the remembered ALPN and early-data
policy match the ticket.  A server MUST reject early data unless the
selected cipher suite equals the offered PSK's recorded cipher suite,
the selected ALPN equals the ticket's, and all TLS 1.3 anti-replay
checks pass.  The suite-equality check, not the binder, prevents
redirecting early data to a different AEAD.</t>
    </section>
    <section anchor="alerts">
      <name>Alerts</name>
      <t>This section lists the alerts an implementation of this document
sends, in addition to those already defined by TLS 1.3:</t>
      <ul spacing="normal">
        <li>
          <t>illegal_parameter: a raw external PSK offered for use under a KDF
of this document without import (<xref target="psk-importer"/>); or an
ImportedIdentity whose target_kdf does not equal the selected KDF.</t>
        </li>
        <li>
          <t>decrypt_error: a Finished or PSK binder MAC that fails
verification, as in TLS 1.3.</t>
        </li>
        <li>
          <t>handshake_failure:  no KDF of this document is mutually supported
when one is required.</t>
        </li>
      </ul>
    </section>
    <section anchor="companion-mechanisms">
      <name>Companion Mechanisms</name>
      <t>Several deployed mechanisms invoke HKDF-Expand-Label directly.  This
document defines the Encrypted Client Hello confirmation for its KDFs
(<xref target="ech-generic"/>), because ECH is pervasive in the deployments most
likely to exercise these schedules.  The remaining mechanisms are out of
scope until a companion document defines their analogues.</t>
      <section anchor="out-of-scope">
        <name>Out of Scope</name>
        <ul spacing="normal">
          <li>
            <t>DTLS 1.3 <xref target="RFC9147"/> derives a record sequence-number encryption key
(Section 4.2.3) and separates its schedule with the "dtls13" label
prefix (Section 5.9).  DTLS-Only is N in <xref target="iana-considerations"/>.</t>
          </li>
          <li>
            <t>QUIC <xref target="RFC9001"/> derives its Initial secrets and its "quic key", "quic
iv", "quic hp", and "quic ku" values with HKDF-Expand-Label.</t>
          </li>
          <li>
            <t>Exported Authenticators <xref target="RFC9261"/> derive their own Finished keys
with HKDF-Expand-Label.</t>
          </li>
        </ul>
        <t>An endpoint negotiating a KDF of this document MUST NOT use these
mechanisms with that connection unless a specification defines their
derivations for that KDF.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests no cipher suite code points.  It uses those of
TLS 1.3 (<xref target="cipher-suites"/>).</t>
      <section anchor="the-scheduleprofile-extension">
        <name>The schedule_profile Extension</name>
        <t>IANA is requested to register one entry in the TLS ExtensionType Values
registry per the procedures of <xref target="RFC9847"/>.</t>
        <table anchor="iana-ext-table">
          <name>Requested TLS ExtensionType Registration</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Extension Name</th>
              <th align="left">TLS 1.3</th>
              <th align="left">DTLS-Only</th>
              <th align="left">Recommended</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">schedule_profile</td>
              <td align="left">CH, SH, HRR</td>
              <td align="left">N</td>
              <td align="left">N</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>It is permitted in the ClientHello, the ServerHello, and the
HelloRetryRequest.  DTLS-Only is N because schedule_profile is a TLS
extension and DTLS record-layer derivations are out of scope
(<xref target="companion-mechanisms"/>).  Recommended is N pending working group
consensus.</t>
      </section>
      <section anchor="tls-kdf-identifiers">
        <name>TLS KDF Identifiers</name>
        <t>IANA is requested to register two entries in the TLS KDF Identifiers
registry created by <xref target="RFC9258"/>, per its Specification Required policy.
No new registry is created:  that registry already names a key schedule
independently of a cipher suite, which is what this document negotiates.</t>
        <table anchor="iana-profile-table">
          <name>Requested TLS KDF Identifier Registrations</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBD</td>
              <td align="left">TLS13_TURBOSHAKE256</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">TBD</td>
              <td align="left">TLS13_SHAKE256</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>A KDF registered here defines every key-schedule computation it governs:
its transcript hash, its secret and key derivations, its Finished and
PSK binder MACs, and its Encrypted Client Hello acceptance computations
(<xref target="schedule-profiles"/>).  A registration that leaves any of those to the
cipher suite, as HKDF_SHA256 leaves its hash, has to say so:  a KDF
silent on a computation is under-specified, not inheriting.</t>
      </section>
      <section anchor="update-to-rfc-9258">
        <name>Update to RFC 9258</name>
        <t><xref target="RFC9258"/> anticipates this document:  "Future specifications that
change the way the KDF is negotiated will need to update this
specification to make clear how target KDFs are determined for the
import process."  This document changes how the KDF is negotiated, and
determines target KDFs as follows.</t>
        <t>The target_kdf of an ImportedIdentity is the TLS KDF Identifier the
importing client will negotiate in the schedule_profile extension
(<xref target="cipher-suites"/>).  For a connection that negotiates no KDF, the
target_kdf is HKDF_SHA256 or HKDF_SHA384 as the target cipher suite's
hash determines, exactly as before this document.  Nothing else in
<xref target="RFC9258"/> changes.</t>
        <t>The schedule_profile extension carries the negotiated TLS KDF Identifier
value on the wire, and the transcript hash covers it
(<xref target="cipher-suites"/>), so no final message-level trace for a KDF of this
document can exist before its value is assigned.  Schedule-level vectors
do not wait on that assignment, since every derivation of
<xref target="key-schedule"/> takes its transcript checkpoint as an argument, and a
checkpoint stated as a literal value pins the output with no code point
anywhere in the input.  The one exception is ipsk
(<xref target="import-derivation"/>), whose context is TranscriptHash of an
ImportedIdentity that carries target_kdf.  Early allocation under RFC
7120 should be considered once the document is adopted.
<xref target="test-vectors"/> carries no message-level trace yet.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section follows RFC 3552.  It states what the schedules protect,
the assumptions they rest on, the properties common to every KDF of this
document, and the analysis specific to each.</t>
      <section anchor="profile-separation">
        <name>KDF Separation</name>
        <t>Within a KDF, distinct derivation paths produce distinct injectively
framed inputs to its XOF:  labels, output lengths, and context fields
are bound into each output, so no two derivation paths collide
(<xref target="domain-separation"/>).</t>
        <t>Between the two KDFs of this document, separation is by XOF, not by that
shared label.  TLS13_TURBOSHAKE256 and TLS13_SHAKE256 frame the same
schedule_label, so their inputs can coincide.  They run different
permutations, the 12-round Keccak-p[1600,12] and the 24-round
Keccak-f[1600], though the first is the last 12 rounds of the second
(<xref target="FIPS202"/>, Sections 3.3 and 3.4).  Most secret inputs are bound to a
single KDF (<xref target="psk-profile-binding"/>, <xref target="governing-profile"/>), so a
coincidence of framed inputs across the two cannot expose either's
secret.  An
external PSK imported for use under both is the exception:
<xref target="psk-importer"/> requires a separate ipsk per target_kdf, but the epsk
beneath them is one secret, absorbed under both permutations.  A
deployment that negotiates TLS13_SHAKE256 to avoid the reduced-round
premise (<xref target="turboshake-sec"/>) does not gain that separation for such a
PSK.</t>
        <t>Handshake and application outputs under different cipher suites of one
KDF are separated by the transcript as in TLS 1.3, and early data by the
0-RTT equality check (<xref target="downgrade-resistance"/>).  <xref target="domain-separation"/>
gives the byte-level argument, which holds for both KDFs because they
share the framing and differ only in permutation.</t>
      </section>
      <section anchor="psk-profile-binding">
        <name>PSK-to-KDF Binding</name>
        <t>A PSK is associated with the KDF under which it was established, and its
binder is computed and verified under that KDF:  the binder is keyed by
a secret derived through that KDF's XOF (<xref target="finished-and-binder-mac"/>,
<xref target="deck-interface"/>).  A PSK established under one KDF therefore cannot
key the early stage of another and still produce a binder that verifies,
because the two KDFs run different permutations.  The server rejects the
mismatch on binder verification (<xref target="governing-profile"/>).</t>
        <t>Resumption locks on the hash, and under a KDF of this document the
KDF is the hash (<xref target="profile-governs"/>).  TLS 1.3 lets a resumption
change the cipher suite but not the hash, because the hash drives the
KDF.  This document lets a resumption change the AEAD but not the
KDF, for the same reason.  The binder and the KDF-compatibility rule
hold the KDF fixed across a resumption (<xref target="governing-profile"/>), and
the AEAD may change on a 1-RTT resumption exactly as TLS 1.3
permits.</t>
        <t>The binder does not lock the AEAD.  On a 1-RTT resumption the selected
suite is confirmed by the transcript, exactly as in TLS 1.3.  Early
data is different, because its keys are derived and used before the
transcript can confirm the server's selection: there the 0-RTT equality
check, not the binder, keeps early data on the AEAD the client used
(<xref target="zero-rtt"/>).</t>
      </section>
      <section anchor="downgrade-resistance">
        <name>Downgrade Resistance</name>
        <t>The selected cipher suite appears in the ServerHello and therefore in
the transcript from TH_SH onward, which every handshake and application
output binds (<xref target="key-schedule"/>).  Every handshake and application
output is thereby separated by the selected suite, exactly as in TLS
1.3:  a peer that assumed a different suite would hold a different
transcript, and its Finished MAC would fail.  Intermediate secrets are
suite-independent, and no output binds the suite directly.  The
transcript carries it.  Early data is the one output derived before the
ServerHello enters the transcript, and there the 0-RTT equality check
separates the suite (<xref target="zero-rtt"/>).</t>
        <t>The negotiated KDF is separated two ways.  First, its XOF produces
every derivation, so a peer that assumed a different KDF would derive
different keys and its Finished MAC would fail (<xref target="deck-schedule"/>).
Second, a server that selects a KDF of this document echoes the
schedule_profile extension in its ServerHello, which the transcript
covers (<xref target="cipher-suites"/>).  For early data, the KDF is the one the
offered PSK is bound to, whose binder is an early-stage output under
that KDF (<xref target="governing-profile"/>, <xref target="psk-profile-binding"/>).</t>
        <t>Downgrade to the TLS 1.3 schedule is a separate case, because that
schedule is signalled by the absence of the extension rather than by a
value (<xref target="cipher-suites"/>).  An attacker cannot produce it:  TLS 1.3's
transcript covers the ClientHello as the client sent it and as the
server received it, so stripping the extension in flight makes the two
transcripts differ and the Finished MACs fail.  What remains is a server
that does not implement the extension and declines by saying nothing.
That is a capability mismatch rather than a downgrade, and it is visible
to the client, which sees no schedule_profile in the ServerHello.  What
a client does about it is the client's policy, as for any extension it
requires and a server ignores.</t>
        <t>The two KDFs of this document differ only in the underlying permutation
and share the composed security argument (<xref target="cryptographic-analysis"/>,
<xref target="per-profile-considerations"/>).  A deployment that offers both accepts
whichever the server echoes, and the echo is covered by the transcript
(<xref target="cipher-suites"/>).</t>
      </section>
      <section anchor="psk-entropy">
        <name>PSK Entropy</name>
        <t>As in TLS 1.3, binder unforgeability against an attacker who can
guess an external PSK requires the PSK to have adequate entropy,
since such an attacker can recompute the binder offline.  External
PSKs SHOULD be drawn with at least 512 bits of entropy, matching the
512-bit capacity and 256-bit target security level of both profiles
(<xref target="cryptographic-analysis"/>).  That exceeds the 128-bit floor
<xref target="RFC9257"/> recommends for external PSKs.</t>
      </section>
      <section anchor="authentication-is-out-of-scope">
        <name>Authentication Is Out of Scope</name>
        <t>A KDF of this document governs only the key schedule.  A fully
SHA-2-free connection also requires SHA-2-free authentication:
certificate-based authentication is negotiated separately, through the
signature_algorithms and signature_algorithms_cert extensions, and
commonly relies on SHA-2.  A deployment that must avoid SHA-2 entirely
MUST restrict those extensions accordingly, or use PSK-only
authentication.  Ed25519 uses SHA-512 internally, so avoiding SHA-2
also means excluding it in favor of a SHA-2-free signature such as
Ed448, ML-DSA, or an SLH-DSA-SHAKE variant.</t>
      </section>
      <section anchor="retained-tls-13-properties">
        <name>Retained TLS 1.3 Properties</name>
        <t>The 0-RTT replay properties of TLS 1.3 are unchanged.  Early data is
governed by <xref target="zero-rtt"/>, which does not depend on the KDF.  The
key-erasure discipline TLS 1.3 relies on for forward secrecy is
retained, realized by each profile's destruction rules
(<xref target="erasure-boundaries"/>).  The forward-secrecy property that discipline
supports rests on the ratchet's one-wayness, analyzed in
<xref target="cryptographic-analysis"/> and, for the cross-stage chaining, booked
open in <xref target="open-analysis"/>.</t>
        <t>Hybrid key exchange is not a TLS 1.3 property.  TLS 1.3 defines none.
This schedule absorbs each asymmetric-secret component under its own
framed tag, never concatenating them (<xref target="key-schedule"/>), following
<xref target="I-D.ietf-tls-hybrid-design"/>.  Because each component is a distinct
framed input, one high-entropy component keeps the derivation
unpredictable even if another is adversarial.  That combiner robustness
rests on the injective framing and the random-oracle argument
(<xref target="domain-separation"/>, <xref target="cryptographic-analysis"/>, <xref target="BINDEL"/>), not on
TLS 1.3.</t>
      </section>
      <section anchor="cryptographic-analysis">
        <name>Cryptographic Analysis</name>
        <t>Every derivation is one call to the profile's XOF over an injectively
framed byte string, so the bound that governs it is the sponge's own
(<xref target="BDPV08"/>).  The TLS 1.3 key schedule has a proof over its derivation
graph (<xref target="TLS13KS"/>).</t>
        <section anchor="threat-model-and-goals">
          <name>Threat Model and Goals</name>
          <t>The adversary model and key-schedule goals are those of <xref target="TLS13KS"/>:  an
active network adversary controls message delivery.  It may learn
selected stage secrets under compromise predicates.  It seeks to
distinguish unseen traffic keys, forge Finished or binder values, break
forward secrecy across ratchet boundaries, or downgrade the negotiated
cipher suite.  Authentication of peer identity remains outside the
cipher suite, as in TLS 1.3.  The schedule must provide
indistinguishability of record keys and exporter outputs under the
chosen AEAD, integrity of the handshake transcript through Finished and
binder verification, forward secrecy from handshake compromise to
application traffic once the asymmetric shared secret is used, and the
TLS 1.3 0-RTT replay model when early data is accepted.</t>
        </section>
        <section anchor="primitive-assumptions">
          <name>Primitive Assumptions</name>
          <t>DF is the profile's XOF over a framed byte string, its permutation
modeled as random (<xref target="FIPS202"/>).  A sponge over such a permutation is
indifferentiable from a random oracle up to 2^(c/2) of its calls
(<xref target="BDPV08"/>, Theorem 2 and Section 5), which is 2^256 at the 512-bit
capacity both profiles use.  That is a mode result in the
ideal-permutation model, independent of the round count.  What differs
between the profiles is the strength of that premise:  the 24-round
permutation of TLS13_SHAKE256 carries the default assurance of the full
Keccak permutation, and the 12-round permutation of TLS13_TURBOSHAKE256
rests on the reduced-round cryptanalysis of <xref target="RFC9861"/>, Section 7,
which this document books open (<xref target="turboshake-sec"/>,
<xref target="open-analysis"/>).</t>
          <t>The analysis then reasons in that random-oracle model.  The step from
sponge to oracle is the indifferentiability composition of <xref target="MRH"/>,
which is sound for single-stage games and not in general for multi-stage
ones (<xref target="RSS"/>).  <xref target="TLS13KS"/> states its result against a single
adversary making oracle queries, which this document argues is
single-stage in that sense but does not prove (<xref target="open-analysis"/>).  The
bound is indifferent to the structure of the input:  it asks only that
distinct queries be distinct strings.</t>
          <t>The framing supplies exactly that.  Every derivation is a single call
DF(S, L) where seq(S) is injectively framed (<xref target="domain-separation"/>), so
distinct derivations query the oracle at distinct points.  An adversary
that never queries it on a string carrying the secret cannot
distinguish those outputs from independent uniform strings.  Against a
secret of 512 bits of entropy it reaches such a string with probability
at most q / 2^512 in q queries (<xref target="psk-entropy"/> covers a weaker external
PSK).  Each profile's Instantiation section fixes the XOF, its
domain-separation parameter, and the output lengths
(<xref target="turboshake-instantiation"/>, <xref target="shake-instantiation"/>).</t>
          <t>Injective framing is therefore the whole of what this schedule must
supply for the sponge's indifferentiability bound to apply to each
derivation.  It is not the whole of the handshake-level argument.  The
single-stage classification, the cross-stage chaining (including its
salted Diffie-Hellman step), and the reduced-round assumption remain
open (<xref target="open-analysis"/>).</t>
        </section>
        <section anchor="derivation-graph">
          <name>Derivation Graph</name>
          <t>Each derived octet string is one leaf of a derivation tree (<xref target="shapes"/>).
The stage trunks E, H, and T and the ratchet residues map to TLS 1.3's
Early/Handshake/Main Secrets and its unnamed "derived" salt as
<xref target="stage-secrets"/> sets out.  binder_key is a Derive on the live early
trunk, one of its leaves, and finished_key is a derivation of a retained
secret (<xref target="expand-op"/>);  each keys exactly one MAC invocation and no
other output (<xref target="finished-and-binder-mac"/>).  The comparison of
<xref target="comparison"/> matches every TLS 1.3 site to a leaf here, none missing,
so the map is one-to-one on derived values, node for node with no
derivation added.  It is structural and does not carry the TLS 1.3
proof.</t>
          <t>This document defines each leaf by its framed path, one deck invocation
from its stage's Init to that leaf.  The analysis follows that path,
where each leaf is a single random-oracle query
(<xref target="cryptographic-analysis"/>).  An implementation carries the trunk and
clones it at each branch (<xref target="permutation-count"/>).  Because the clone
reproduces that framed path byte for byte, it is output-identical to
computing each leaf's path independently, and adds no assumption beyond
the per-leaf discrete-query analysis.  Whether that analysis covers the
forked schedule as a whole is booked open (<xref target="open-analysis"/>).</t>
        </section>
        <section anchor="open-analysis">
          <name>What Is Not Yet Established</name>
          <t>This document changes the key schedule of a protocol whose key schedule
has been analyzed, and does not yet have an equivalent analysis of its
own.  The following are open.</t>
          <t>The single-stage classification.  <xref target="MRH"/>'s composition is sound only
for single-stage games (<xref target="RSS"/>).  This document argues the game it
relies on qualifies, and so that the random-oracle substitution carries
to this schedule, but does not prove it (<xref target="cryptographic-analysis"/>).</t>
          <t>The chaining.  <xref target="TLS13KS"/> is proved over discrete extract-and-expand
nodes, not over an accumulator carried across each stage and cloned at
its leaves.  That analysis is owed.</t>
          <t>The reduced round count.  Keccak-p[1600,12] is not proven, by
<xref target="RFC9861"/> or by this document (<xref target="turboshake-sec"/>).  TLS13_SHAKE256
exists for deployments unwilling to assume it.</t>
          <t>The MAC.  TurboKMAC256 is not covered by NIST's KMAC analysis, which is
scoped to the full-round permutation (<xref target="turboshake-sec"/>).
Establishing its EUF-CMA security is work this document leaves open.  A
deployment unwilling to wait for it can negotiate TLS13_SHAKE256, whose
MAC is NIST KMAC256 and carries no such obligation.</t>
        </section>
      </section>
      <section anchor="erasure-boundaries">
        <name>Erasure Boundaries</name>
        <section anchor="why-a-stage-boundary-is-a-ratchet">
          <name>Why a Stage Boundary Is a Ratchet</name>
          <t>A sponge accumulator is built on a permutation, and permutations are
invertible.  An accumulator reached from an earlier one by absorption
alone therefore carries its whole past.  The blocks absorbed in
between are public, so anyone holding the later state recovers the
earlier one.  This is a property of any sponge realization of the
interface of <xref target="deck-interface"/>, not of the instantiations chosen
here, and it is why a stage boundary cannot be an absorb.  A design
that carried a raw accumulator across one would let a post-handshake
state compromise re-derive handshake traffic secrets.</t>
          <t>A Ratchet breaks the chain because its squeeze returns a function of the
state, not the state itself.  In the random-oracle model (<xref target="MRH"/>), that
squeeze is one-way against a state the adversary cannot guess:
recovering the state means querying the oracle on it, which takes
probability q / 2^m in q queries when the state holds m bits of
min-entropy.  A boundary that mixes the asymmetric shared secret has
high m.  The early-to-handshake boundary carries only the PSK, so
its one-wayness is the PSK's min-entropy (<xref target="psk-entropy"/>):  a
low-entropy external PSK earns no forward secrecy there from the Ratchet
alone.  A PSK-only handshake absorbs no asymmetric shared secret at all
(<xref target="absent-empty"/>), so every one of its boundaries carries that same
min-entropy.  That conditional one-wayness is what every erasure
boundary rests on.</t>
          <t>Accordingly a Ratchet sits at each stage boundary where TLS requires
erasure or compromise isolation:  the early-to-handshake transition and
the handshake-to-application transition (<xref target="key-schedule"/>).  A Ratchet's
residue is Derive(D, "derived"), an unnamed value that seeds the next
deck (<xref target="deck-interface"/>) rather than leaving the schedule.  The trunk
is then erased, so what survives the boundary is an octet string and not
a state.</t>
          <t>That the trunk is erased is the State Handling expectation below, not an
automatic consequence of the squeeze.  The one-wayness argument of this
section is conditional on it.  At a stage boundary the predecessor is a
state, so one-wayness is what defeats sponge invertibility.</t>
          <t>A key-update generation shares that one-way property but is not a
Ratchet:  it is a derivation of a retained traffic secret
(<xref target="key-update-generic"/>), whose predecessor is already an octet string,
so there is no state to break.</t>
        </section>
        <section anchor="state-handling">
          <name>State Handling</name>
          <t>A ratchet's forward secrecy is only as good as the erasure behind it,
and erasure is local:  no peer observes it, and no interoperability test
detects its absence.  The rules below are therefore expectations, not
interoperability requirements, and an implementation SHOULD follow them
as its platform allows.</t>
          <t>An accumulator of a stage should not outlive that stage's ratchet,
should not be retained as a successor across a ratchet, and should not
be serialized, exported, or compared.  Squeezed octet-string secrets
deserve the same discipline as their TLS 1.3 counterparts.
Handshake-stage traffic secrets and record keys should be destroyed
when their TLS 1.3 analogues would be, and each stage secret once the
next stage has absorbed it.</t>
          <t>Every cloned accumulator is a 200-octet copy of secret state, and a
clone exists for the span of a Derive.  Keeping that window short, and
zeroizing each clone when it is dropped, limits what a compromise
recovers.  Compromise of a live accumulator yields that stage's
underived leaves, as compromise of a stage secret does in TLS 1.3.
Because a live sponge state is invertible, it also yields the inputs
absorbed into it, including any asymmetric shared secret:  a further
reason an accumulator must not outlive its stage.</t>
          <t>On platforms that cannot guarantee erasure these rules are best effort
(<xref target="implementation-considerations"/>).</t>
        </section>
      </section>
      <section anchor="domain-separation">
        <name>Domain Separation</name>
        <t>The invariant the analysis relies on is that distinct derivation paths
yield distinct byte strings as deck-function inputs.  It follows from
two facts, and this document owes both.</t>
        <t>First, a framed sequence decodes to exactly one list of items.  frame(x)
is uint16(len(x)) || x with no padding (<xref target="conventions"/>), so a reader
takes two octets, reads that many, and repeats:  the item boundaries are
recoverable from the bytes, and two sequences with different item lists
differ as strings.</t>
        <t>Second, distinct paths give different item lists.  Every deck opens with
frame(schedule_label), then its rooting item (<xref target="deck-interface"/>,
<xref target="expand-op"/>):  the PSK for the early stage, the early residue for the
handshake stage, the handshake residue for the application stage, and
the retained secret for a derivation (<xref target="key-schedule"/>).  A residue or a
retained secret is framed at Init with no tag, and the early stage's
"psk" tag is the same in every handshake, so two decks of the same shape
are told apart by that value and not by their structure.  What separates
them structurally is the label:  a path over a live stage trunk and a
path over a seeded deck draw from disjoint label vocabularies
(<xref target="key-schedule"/>, <xref target="derived-outputs"/>).  Within either, every later
item is a framed tag drawn from this document's fixed vocabulary
followed by its framed value, in an order the schedule fixes, so two
paths of the same kind and the same length that agree tag for tag can
differ only in a value.  Two paths that differ at all therefore differ
at some item, and by the first fact their sequences differ.</t>
        <t>A label does not separate a MAC from a derivation.  The domain byte
does:  0x04 for the MAC against the deck's native byte, so a MAC and a
deck derivation are never inputs to the same function
(<xref target="finished-and-binder-mac"/>).  Absent inputs are distinguished from
empty inputs by the framed tag stream (<xref target="conventions"/>).  Unkeyed
transcript hashing is separated at the byte level.  A TranscriptHash
input begins with the raw octets of "tls13 hash".  Every keyed sequence
begins with frame(schedule_label), because every deck is Init'd that
way (<xref target="deck-interface"/>):</t>
        <artwork><![CDATA[
"tls13 hash"           = 0x74 0x6c ...

frame(schedule_label)  = uint16(6) || "tls13 "
                       = 0x00 0x06 || "tls13 "
]]></artwork>
        <t>The TranscriptHash input's leading octet is 0x74.  Every keyed
sequence's leading octet is 0x00.  These cannot coincide, so the
first octet alone separates a keyed sequence from the transcript
hash.</t>
      </section>
      <section anchor="related-constructions">
        <name>Related Constructions</name>
        <t>This schedule has the shape of a keyed function over a forked state,
but keys its XOF with an ordinary framed secret rather than a key
parameter (<xref target="deck-interface"/>).  Relating it to the analyses of keyed
sponges and forked-state constructions is future work
(<xref target="open-analysis"/>).  For keyed sponges the gap is a specific one.
Proving Derive a pseudorandom function would discharge the
pseudorandomness assumptions <xref target="TLS13KS"/> makes of its extract and expand
functions and of the MAC deriving its binder values, though not its
collision-resistance or salted Diffie-Hellman assumptions.  No
keyed-sponge result reaches this construction as specified.  The
outer-keyed sponge is Sponge(K || m), the key first, with the analysis
limited to keys occupying whole rate blocks (<xref target="KEYEDSPONGE"/>), where
this schedule frames schedule_label ahead of a framed secret that does
not fill a rate block.  The inner-keyed sponge keys the capacity
(<xref target="KEYEDSPONGE"/>), and the full-state keyed duplex keys its initial
state (<xref target="FSKD"/>), where this schedule keys nothing at initialization and
absorbs its secret through the rate.  That prefix is not incidental:  it
is what gives a keyed sequence its leading 0x00 (<xref target="domain-separation"/>).
Closing this needs a keyed-sponge result that tolerates a public prefix
and a secret that does not fill a block, or a schedule that fits an
existing one.
The closest deployed analogue is Disco <xref target="DISCO"/>,
a handshake schedule over a forked sponge, though its thin formal
analysis makes it precedent, not assurance.</t>
      </section>
      <section anchor="per-profile-considerations">
        <name>Per-Profile Considerations</name>
        <t>The schedule-wide analysis both profiles share is in
<xref target="cryptographic-analysis"/>, <xref target="erasure-boundaries"/>,
<xref target="domain-separation"/>, and <xref target="related-constructions"/>.  The two profiles
are structurally identical and differ only in the permutation
(<xref target="deck-schedule"/>); this section states what is specific to each.</t>
        <section anchor="turboshake-sec">
          <name>TLS13_TURBOSHAKE256</name>
          <t>TLS13_TURBOSHAKE256 targets 256-bit security, which <xref target="RFC9861"/>, Table 4
claims for TurboSHAKE256 and its 512-bit capacity (<xref target="RFC9861"/>, Section
2.2) supports.  The capacity sets that level, not the length of any
secret.</t>
          <t>Everything at that level rests on the 12-round permutation, whose
assurance <xref target="RFC9861"/>, Section 7 places on the cryptanalysis of
reduced-round Keccak rather than on proof.  That is the assumption this
profile adds, and neither <xref target="RFC9861"/> nor this document proves it.</t>
          <t>Capacity, framing, and the derivation graph match the TLS13_SHAKE256
profile (<xref target="per-profile-considerations"/>), which reaches the same target
over the full 24-round Keccak-f[1600] permutation.  A deployment that
prefers that larger round margin can negotiate TLS13_SHAKE256, the
conservative choice (<xref target="shake-profile"/>).</t>
          <t>TurboKMAC256 is introduced by this document:  it is the KMAC layout over
a permutation of fewer rounds than the Keccak-f[1600]-based cSHAKE256
of KMAC256, so NIST's KMAC security analysis does not cover it, and this
document does not claim it is a NIST-validated instance of KMAC256.</t>
        </section>
        <section anchor="shake-sec">
          <name>TLS13_SHAKE256</name>
          <t>TLS13_SHAKE256 uses SHAKE256's Keccak-f[1600] in place of
TurboSHAKE256's Keccak-p[1600,12] (<xref target="shake-instantiation"/>), so it
carries no reduced-round assumption.  It does not use raw keyed SHAKE256
for any keyed operation:  derivation is a deck-native
absorb-then-squeeze session over a framed protocol identifier
(<xref target="expand-op"/>), and MAC is the construction of <xref target="mac-op"/>, whose key
block, function name, and customization string provide the keyed-mode
domain separation that bare SHAKE256 lacks (<xref target="shake-mac"/>).</t>
        </section>
      </section>
      <section anchor="out-of-scope-1">
        <name>Out of Scope</name>
        <t>QUIC, DTLS 1.3, and Exported Authenticators remain out of scope for both
profiles (<xref target="companion-mechanisms"/>):  an endpoint negotiating a KDF of
this document MUST NOT use those mechanisms with that connection unless
a specification defines their derivations for that KDF.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9846" target="https://www.rfc-editor.org/info/rfc9846" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9846.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document obsoletes RFC 8446, which specified TLS 1.3. This document obsoletes RFC 5246 (specifying TLS 1.2) and RFCs 5077, 6961, 7627, and 8422, all of which pertain to TLS 1.2 or earlier, and updates RFCs 5705 and 6066. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9846"/>
          <seriesInfo name="DOI" value="10.17487/RFC9846"/>
        </reference>
        <reference anchor="RFC9847" target="https://www.rfc-editor.org/info/rfc9847" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9847.xml">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document updates the changes to the TLS and DTLS IANA registries made in RFC 8447. It adds a new value, "D" for discouraged, to the "Recommended" column of the selected TLS registries and adds a "Comment" column to all active registries that do not already have a "Comment" column. Finally, it updates the registration request instructions.</t>
              <t>This document updates RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>
        <reference anchor="RFC9258" target="https://www.rfc-editor.org/info/rfc9258" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9258.xml">
          <front>
            <title>Importing External Pre-Shared Keys (PSKs) for TLS 1.3</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes an interface for importing external Pre-Shared Keys (PSKs) into TLS 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9258"/>
          <seriesInfo name="DOI" value="10.17487/RFC9258"/>
        </reference>
        <reference anchor="RFC9849" target="https://www.rfc-editor.org/info/rfc9849" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9849.xml">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="K. Oku" initials="K." surname="Oku"/>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="March" year="2026"/>
            <abstract>
              <t>This document describes a mechanism in Transport Layer Security (TLS) for encrypting a message under a server public key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9849"/>
          <seriesInfo name="DOI" value="10.17487/RFC9849"/>
        </reference>
        <reference anchor="RFC9861" target="https://www.rfc-editor.org/info/rfc9861" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9861.xml">
          <front>
            <title>KangarooTwelve and TurboSHAKE</title>
            <author fullname="B. Viguier" initials="B." surname="Viguier"/>
            <author fullname="D. Wong" initials="D." role="editor" surname="Wong"/>
            <author fullname="G. Van Assche" initials="G." role="editor" surname="Van Assche"/>
            <author fullname="Q. Dang" initials="Q." role="editor" surname="Dang"/>
            <author fullname="J. Daemen" initials="J." role="editor" surname="Daemen"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>This document defines four eXtendable-Output Functions (XOFs), hash functions with output of arbitrary length, named TurboSHAKE128, TurboSHAKE256, KT128, and KT256.</t>
              <t>All four functions provide efficient and secure hashing primitives, and the last two are able to exploit the parallelism of the implementation in a scalable way.</t>
              <t>This document is a product of the Crypto Forum Research Group. It builds up on the definitions of the permutations and of the sponge construction in NIST FIPS 202 and is meant to serve as a stable reference and an implementation guide.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9861"/>
          <seriesInfo name="DOI" value="10.17487/RFC9861"/>
        </reference>
        <reference anchor="FIPS202" target="https://csrc.nist.gov/pubs/fips/202/final">
          <front>
            <title>SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2015" month="August"/>
          </front>
          <seriesInfo name="FIPS" value="202"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.202"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9257" target="https://www.rfc-editor.org/info/rfc9257" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9257.xml">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="I-D.ietf-tls-hybrid-design" target="https://datatracker.ietf.org/doc/html/draft-ietf-tls-hybrid-design-16" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tls-hybrid-design.xml">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author fullname="Douglas Stebila" initials="D." surname="Stebila">
              <organization>University of Waterloo</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Shay Gueron" initials="S." surname="Gueron">
              <organization>University of Haifa and Meta</organization>
            </author>
            <date day="7" month="September" year="2025"/>
            <abstract>
              <t>Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if a way is found to defeat the encryption for all but one of the component algorithms. It is motivated by transition to post-quantum cryptography. This document provides a construction for hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-hybrid-design-16"/>
        </reference>
        <reference anchor="SP800-185" target="https://csrc.nist.gov/pubs/sp/800/185/final">
          <front>
            <title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash, and ParallelHash</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2016" month="December"/>
          </front>
          <seriesInfo name="NIST" value="SP 800-185"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-185"/>
        </reference>
        <reference anchor="RFC9001" target="https://www.rfc-editor.org/info/rfc9001" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9001.xml">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="RFC9147" target="https://www.rfc-editor.org/info/rfc9147" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9261" target="https://www.rfc-editor.org/info/rfc9261" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9261.xml">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
        <reference anchor="SP800-133" target="https://csrc.nist.gov/pubs/sp/800/133/r2/final">
          <front>
            <title>Recommendation for Cryptographic Key Generation</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2020" month="June"/>
          </front>
          <seriesInfo name="NIST" value="SP 800-133r2"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-133r2"/>
        </reference>
        <reference anchor="SP800-108" target="https://csrc.nist.gov/pubs/sp/800/108/r1/upd1/final">
          <front>
            <title>Recommendation for Key Derivation Using Pseudorandom Functions</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2024" month="August"/>
          </front>
          <seriesInfo name="NIST" value="SP 800-108r1"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-108r1-upd1"/>
        </reference>
        <reference anchor="SP800-56C" target="https://csrc.nist.gov/pubs/sp/800/56/c/r2/final">
          <front>
            <title>Recommendation for Key-Derivation Methods in Key-Establishment Schemes</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="NIST" value="SP 800-56Cr2"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-56Cr2"/>
        </reference>
        <reference anchor="BDPV08" target="https://keccak.team/files/SpongeIndifferentiability.pdf">
          <front>
            <title>On the Indifferentiability of the Sponge Construction</title>
            <author initials="G." surname="Bertoni">
              <organization/>
            </author>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="M." surname="Peeters">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <date year="2008"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2008, LNCS 4965, pp. 181-197"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-78967-3_11"/>
        </reference>
        <reference anchor="XOODYAK" target="https://keccak.team/xoodyak.html">
          <front>
            <title>Xoodyak, a Lightweight Cryptographic Scheme</title>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="S." surname="Hoffert">
              <organization/>
            </author>
            <author initials="M." surname="Peeters">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <author initials="R." surname="Van Keer">
              <organization/>
            </author>
            <date year="2020"/>
          </front>
          <seriesInfo name="IACR Transactions on Symmetric Cryptology" value="2020(S1)"/>
          <seriesInfo name="DOI" value="10.46586/tosc.v2020.iS1.60-87"/>
        </reference>
        <reference anchor="STROBE" target="https://eprint.iacr.org/2017/003">
          <front>
            <title>The STROBE Protocol Framework</title>
            <author initials="M." surname="Hamburg">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
        </reference>
        <reference anchor="DISCO" target="https://eprint.iacr.org/2019/180">
          <front>
            <title>Disco: Modern Session Encryption</title>
            <author initials="D." surname="Wong">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="TLS13KS" target="https://eprint.iacr.org/2021/467">
          <front>
            <title>Key-Schedule Security for the TLS 1.3 Standard</title>
            <author initials="C." surname="Brzuska">
              <organization/>
            </author>
            <author initials="A." surname="Delignat-Lavaud">
              <organization/>
            </author>
            <author initials="C." surname="Egger">
              <organization/>
            </author>
            <author initials="C." surname="Fournet">
              <organization/>
            </author>
            <author initials="K." surname="Kohbrok">
              <organization/>
            </author>
            <author initials="M." surname="Kohlweiss">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
          <seriesInfo name="ASIACRYPT" value="2022"/>
        </reference>
        <reference anchor="MRH" target="https://doi.org/10.1007/978-3-540-24638-1_2">
          <front>
            <title>Indifferentiability, Impossibility Results on Reductions, and Applications to the Random Oracle Methodology</title>
            <author initials="U." surname="Maurer">
              <organization/>
            </author>
            <author initials="R." surname="Renner">
              <organization/>
            </author>
            <author initials="C." surname="Holenstein">
              <organization/>
            </author>
            <date year="2004"/>
          </front>
          <seriesInfo name="TCC" value="2004, LNCS 2951, pp. 21-39"/>
          <seriesInfo name="DOI" value="10.1007/978-3-540-24638-1_2"/>
        </reference>
        <reference anchor="RSS" target="https://doi.org/10.1007/978-3-642-20465-4_27">
          <front>
            <title>Careful with Composition: Limitations of the Indifferentiability Framework</title>
            <author initials="T." surname="Ristenpart">
              <organization/>
            </author>
            <author initials="H." surname="Shacham">
              <organization/>
            </author>
            <author initials="T." surname="Shrimpton">
              <organization/>
            </author>
            <date year="2011"/>
          </front>
          <seriesInfo name="EUROCRYPT" value="2011, LNCS 6632, pp. 487-506"/>
          <seriesInfo name="DOI" value="10.1007/978-3-642-20465-4_27"/>
        </reference>
        <reference anchor="KEYEDSPONGE" target="https://doi.org/10.1007/978-3-662-48116-5_18">
          <front>
            <title>Security of Keyed Sponge Constructions Using a Modular Proof Approach</title>
            <author initials="E." surname="Andreeva">
              <organization/>
            </author>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="B." surname="Mennink">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="FSE" value="2015"/>
          <seriesInfo name="DOI" value="10.1007/978-3-662-48116-5_18"/>
        </reference>
        <reference anchor="FSKD" target="https://doi.org/10.1007/978-3-319-70697-9_21">
          <front>
            <title>Full-State Keyed Duplex With Built-In Multi-User Support</title>
            <author initials="J." surname="Daemen">
              <organization/>
            </author>
            <author initials="B." surname="Mennink">
              <organization/>
            </author>
            <author initials="G." surname="Van Assche">
              <organization/>
            </author>
            <date year="2017"/>
          </front>
          <seriesInfo name="ASIACRYPT" value="2017"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-70697-9_21"/>
        </reference>
        <reference anchor="BINDEL" target="https://eprint.iacr.org/2018/903">
          <front>
            <title>Hybrid Key Encapsulation Mechanisms and Authenticated Key Exchange</title>
            <author initials="N." surname="Bindel">
              <organization/>
            </author>
            <author initials="J." surname="Brendel">
              <organization/>
            </author>
            <author initials="M." surname="Fischlin">
              <organization/>
            </author>
            <author initials="B." surname="Goncalves">
              <organization/>
            </author>
            <author initials="D." surname="Stebila">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="PQCrypto" value="2019, LNCS 11505, pp. 206-226"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-25510-7_12"/>
        </reference>
      </references>
    </references>
    <?line 1861?>

<section anchor="comparison">
      <name>Comparison with TLS 1.3</name>
      <t>This appendix is non-normative.  It compares the TLS 1.3 schedule with
the deck schedule of <xref target="deck-schedule"/>.  Both profiles share this
schedule and differ only in the underlying permutation, so the
comparison applies equally to TLS13_TURBOSHAKE256 and TLS13_SHAKE256,
and the figure labels the deck side generically.  With finished_key and
binder_key as dedicated MAC keys (<xref target="finished-and-binder-mac"/>), the two
schedules are close structurally, not only in the values they produce:
both carry the same named intermediates, binder_key and finished_key,
into the same MAC step, and both produce the same six traffic and main
secrets from the same three trunk inputs.</t>
      <figure anchor="comparison-figure">
        <name>RFC 9846 7.1 and the Deck Schedule</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="800" width="552" viewBox="0 0 552 800" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,144 L 8,176" fill="none" stroke="black"/>
              <path d="M 8,400 L 8,432" fill="none" stroke="black"/>
              <path d="M 8,608 L 8,640" fill="none" stroke="black"/>
              <path d="M 80,112 L 80,136" fill="none" stroke="black"/>
              <path d="M 80,184 L 80,320" fill="none" stroke="black"/>
              <path d="M 80,368 L 80,392" fill="none" stroke="black"/>
              <path d="M 80,440 L 80,544" fill="none" stroke="black"/>
              <path d="M 80,576 L 80,600" fill="none" stroke="black"/>
              <path d="M 80,648 L 80,784" fill="none" stroke="black"/>
              <path d="M 152,144 L 152,176" fill="none" stroke="black"/>
              <path d="M 152,400 L 152,432" fill="none" stroke="black"/>
              <path d="M 152,608 L 152,640" fill="none" stroke="black"/>
              <path d="M 272,144 L 272,176" fill="none" stroke="black"/>
              <path d="M 272,400 L 272,432" fill="none" stroke="black"/>
              <path d="M 272,608 L 272,640" fill="none" stroke="black"/>
              <path d="M 344,88 L 344,128" fill="none" stroke="black"/>
              <path d="M 344,192 L 344,328" fill="none" stroke="black"/>
              <path d="M 344,344 L 344,384" fill="none" stroke="black"/>
              <path d="M 344,448 L 344,552" fill="none" stroke="black"/>
              <path d="M 344,568 L 344,592" fill="none" stroke="black"/>
              <path d="M 344,656 L 344,784" fill="none" stroke="black"/>
              <path d="M 416,144 L 416,176" fill="none" stroke="black"/>
              <path d="M 416,400 L 416,432" fill="none" stroke="black"/>
              <path d="M 416,608 L 416,640" fill="none" stroke="black"/>
              <path d="M 16,46 L 176,46" fill="none" stroke="black"/>
              <path d="M 16,50 L 176,50" fill="none" stroke="black"/>
              <path d="M 280,46 L 528,46" fill="none" stroke="black"/>
              <path d="M 280,50 L 528,50" fill="none" stroke="black"/>
              <path d="M 8,144 L 152,144" fill="none" stroke="black"/>
              <path d="M 272,142 L 416,142" fill="none" stroke="black"/>
              <path d="M 272,146 L 416,146" fill="none" stroke="black"/>
              <path d="M 8,176 L 152,176" fill="none" stroke="black"/>
              <path d="M 272,174 L 416,174" fill="none" stroke="black"/>
              <path d="M 272,178 L 416,178" fill="none" stroke="black"/>
              <path d="M 80,208 L 96,208" fill="none" stroke="black"/>
              <path d="M 344,208 L 360,208" fill="none" stroke="black"/>
              <path d="M 80,240 L 96,240" fill="none" stroke="black"/>
              <path d="M 344,240 L 360,240" fill="none" stroke="black"/>
              <path d="M 80,272 L 96,272" fill="none" stroke="black"/>
              <path d="M 344,272 L 360,272" fill="none" stroke="black"/>
              <path d="M 8,400 L 152,400" fill="none" stroke="black"/>
              <path d="M 272,398 L 416,398" fill="none" stroke="black"/>
              <path d="M 272,402 L 416,402" fill="none" stroke="black"/>
              <path d="M 8,432 L 152,432" fill="none" stroke="black"/>
              <path d="M 272,430 L 416,430" fill="none" stroke="black"/>
              <path d="M 272,434 L 416,434" fill="none" stroke="black"/>
              <path d="M 80,464 L 96,464" fill="none" stroke="black"/>
              <path d="M 344,464 L 360,464" fill="none" stroke="black"/>
              <path d="M 80,496 L 96,496" fill="none" stroke="black"/>
              <path d="M 344,496 L 360,496" fill="none" stroke="black"/>
              <path d="M 8,608 L 152,608" fill="none" stroke="black"/>
              <path d="M 272,606 L 416,606" fill="none" stroke="black"/>
              <path d="M 272,610 L 416,610" fill="none" stroke="black"/>
              <path d="M 8,640 L 152,640" fill="none" stroke="black"/>
              <path d="M 272,638 L 416,638" fill="none" stroke="black"/>
              <path d="M 272,642 L 416,642" fill="none" stroke="black"/>
              <path d="M 80,672 L 96,672" fill="none" stroke="black"/>
              <path d="M 344,672 L 360,672" fill="none" stroke="black"/>
              <path d="M 80,704 L 96,704" fill="none" stroke="black"/>
              <path d="M 344,704 L 360,704" fill="none" stroke="black"/>
              <path d="M 80,736 L 96,736" fill="none" stroke="black"/>
              <path d="M 344,736 L 360,736" fill="none" stroke="black"/>
              <path d="M 80,768 L 96,768" fill="none" stroke="black"/>
              <path d="M 344,768 L 360,768" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="368,768 356,762.4 356,773.6" fill="black" transform="rotate(0,360,768)"/>
              <polygon class="arrowhead" points="368,736 356,730.4 356,741.6" fill="black" transform="rotate(0,360,736)"/>
              <polygon class="arrowhead" points="368,704 356,698.4 356,709.6" fill="black" transform="rotate(0,360,704)"/>
              <polygon class="arrowhead" points="368,672 356,666.4 356,677.6" fill="black" transform="rotate(0,360,672)"/>
              <polygon class="arrowhead" points="368,496 356,490.4 356,501.6" fill="black" transform="rotate(0,360,496)"/>
              <polygon class="arrowhead" points="368,464 356,458.4 356,469.6" fill="black" transform="rotate(0,360,464)"/>
              <polygon class="arrowhead" points="368,272 356,266.4 356,277.6" fill="black" transform="rotate(0,360,272)"/>
              <polygon class="arrowhead" points="368,240 356,234.4 356,245.6" fill="black" transform="rotate(0,360,240)"/>
              <polygon class="arrowhead" points="368,208 356,202.4 356,213.6" fill="black" transform="rotate(0,360,208)"/>
              <polygon class="arrowhead" points="352,592 340,586.4 340,597.6" fill="black" transform="rotate(90,344,592)"/>
              <path class="jump" d="M 344,568 C 338,568 338,552 344,552" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="352,552 340,546.4 340,557.6" fill="black" transform="rotate(90,344,552)"/>
              <polygon class="arrowhead" points="352,384 340,378.4 340,389.6" fill="black" transform="rotate(90,344,384)"/>
              <path class="jump" d="M 344,344 C 338,344 338,328 344,328" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="352,328 340,322.4 340,333.6" fill="black" transform="rotate(90,344,328)"/>
              <polygon class="arrowhead" points="352,128 340,122.4 340,133.6" fill="black" transform="rotate(90,344,128)"/>
              <polygon class="arrowhead" points="104,768 92,762.4 92,773.6" fill="black" transform="rotate(0,96,768)"/>
              <polygon class="arrowhead" points="104,736 92,730.4 92,741.6" fill="black" transform="rotate(0,96,736)"/>
              <polygon class="arrowhead" points="104,704 92,698.4 92,709.6" fill="black" transform="rotate(0,96,704)"/>
              <polygon class="arrowhead" points="104,672 92,666.4 92,677.6" fill="black" transform="rotate(0,96,672)"/>
              <polygon class="arrowhead" points="104,496 92,490.4 92,501.6" fill="black" transform="rotate(0,96,496)"/>
              <polygon class="arrowhead" points="104,464 92,458.4 92,469.6" fill="black" transform="rotate(0,96,464)"/>
              <polygon class="arrowhead" points="104,272 92,266.4 92,277.6" fill="black" transform="rotate(0,96,272)"/>
              <polygon class="arrowhead" points="104,240 92,234.4 92,245.6" fill="black" transform="rotate(0,96,240)"/>
              <polygon class="arrowhead" points="104,208 92,202.4 92,213.6" fill="black" transform="rotate(0,96,208)"/>
              <polygon class="arrowhead" points="88,600 76,594.4 76,605.6" fill="black" transform="rotate(90,80,600)"/>
              <polygon class="arrowhead" points="88,544 76,538.4 76,549.6" fill="black" transform="rotate(90,80,544)"/>
              <polygon class="arrowhead" points="88,392 76,386.4 76,397.6" fill="black" transform="rotate(90,80,392)"/>
              <polygon class="arrowhead" points="88,320 76,314.4 76,325.6" fill="black" transform="rotate(90,80,320)"/>
              <polygon class="arrowhead" points="88,136 76,130.4 76,141.6" fill="black" transform="rotate(90,80,136)"/>
              <g class="text">
                <text x="24" y="36">RFC</text>
                <text x="64" y="36">9846,</text>
                <text x="120" y="36">Section</text>
                <text x="168" y="36">7.1</text>
                <text x="292" y="36">This</text>
                <text x="352" y="36">document,</text>
                <text x="408" y="36">the</text>
                <text x="444" y="36">deck</text>
                <text x="500" y="36">schedule</text>
                <text x="72" y="84">HKDF-Extract(0,</text>
                <text x="156" y="84">PSK)</text>
                <text x="280" y="84">E</text>
                <text x="296" y="84">=</text>
                <text x="332" y="84">Init()</text>
                <text x="308" y="100">Absorb(E</text>
                <text x="380" y="100">"psk",</text>
                <text x="428" y="100">PSK)</text>
                <text x="56" y="164">Early</text>
                <text x="108" y="164">Secret</text>
                <text x="296" y="164">E</text>
                <text x="352" y="164">accumulator</text>
                <text x="156" y="196">Derive-Secret(.,</text>
                <text x="244" y="196">Lbl,</text>
                <text x="280" y="196">TH)</text>
                <text x="392" y="196">Derive(E,</text>
                <text x="452" y="196">Lbl,</text>
                <text x="488" y="196">TH)</text>
                <text x="116" y="212">"c</text>
                <text x="136" y="212">e</text>
                <text x="180" y="212">traffic"</text>
                <text x="248" y="212">TH_CH</text>
                <text x="380" y="212">"c</text>
                <text x="400" y="212">e</text>
                <text x="444" y="212">traffic"</text>
                <text x="112" y="228">=</text>
                <text x="168" y="228">c_e_traffic</text>
                <text x="376" y="228">=</text>
                <text x="432" y="228">c_e_traffic</text>
                <text x="116" y="244">"e</text>
                <text x="144" y="244">exp</text>
                <text x="192" y="244">master"</text>
                <text x="256" y="244">TH_CH</text>
                <text x="380" y="244">"e</text>
                <text x="408" y="244">exp</text>
                <text x="456" y="244">master"</text>
                <text x="112" y="260">=</text>
                <text x="172" y="260">e_exp_master</text>
                <text x="376" y="260">=</text>
                <text x="436" y="260">e_exp_master</text>
                <text x="124" y="276">"ext</text>
                <text x="176" y="276">binder"</text>
                <text x="232" y="276">(no</text>
                <text x="284" y="276">context)</text>
                <text x="388" y="276">"ext</text>
                <text x="440" y="276">binder"</text>
                <text x="112" y="292">=</text>
                <text x="164" y="292">binder_key</text>
                <text x="376" y="292">=</text>
                <text x="428" y="292">binder_key</text>
                <text x="156" y="308">Derive-Secret(.,</text>
                <text x="268" y="308">"derived")</text>
                <text x="396" y="308">Ratchet(E)</text>
                <text x="464" y="308">emits</text>
                <text x="520" y="308">residue</text>
                <text x="96" y="340">HKDF-Extract(derived,</text>
                <text x="220" y="340">(EC)DHE)</text>
                <text x="280" y="340">H</text>
                <text x="296" y="340">=</text>
                <text x="324" y="340">Init</text>
                <text x="380" y="340">residue)</text>
                <text x="308" y="356">Absorb(H</text>
                <text x="376" y="356">"dh",</text>
                <text x="420" y="356">DHE)</text>
                <text x="56" y="420">Handshake</text>
                <text x="124" y="420">Secret</text>
                <text x="296" y="420">H</text>
                <text x="352" y="420">accumulator</text>
                <text x="156" y="452">Derive-Secret(.,</text>
                <text x="244" y="452">Lbl,</text>
                <text x="280" y="452">TH)</text>
                <text x="392" y="452">Derive(H,</text>
                <text x="452" y="452">Lbl,</text>
                <text x="488" y="452">TH)</text>
                <text x="116" y="468">"c</text>
                <text x="140" y="468">hs</text>
                <text x="188" y="468">traffic"</text>
                <text x="256" y="468">TH_SH</text>
                <text x="380" y="468">"c</text>
                <text x="404" y="468">hs</text>
                <text x="452" y="468">traffic"</text>
                <text x="112" y="484">=</text>
                <text x="172" y="484">c_hs_traffic</text>
                <text x="376" y="484">=</text>
                <text x="436" y="484">c_hs_traffic</text>
                <text x="116" y="500">"s</text>
                <text x="140" y="500">hs</text>
                <text x="188" y="500">traffic"</text>
                <text x="256" y="500">TH_SH</text>
                <text x="380" y="500">"s</text>
                <text x="404" y="500">hs</text>
                <text x="452" y="500">traffic"</text>
                <text x="112" y="516">=</text>
                <text x="172" y="516">s_hs_traffic</text>
                <text x="376" y="516">=</text>
                <text x="436" y="516">s_hs_traffic</text>
                <text x="156" y="532">Derive-Secret(.,</text>
                <text x="268" y="532">"derived")</text>
                <text x="396" y="532">Ratchet(H)</text>
                <text x="464" y="532">emits</text>
                <text x="520" y="532">residue</text>
                <text x="96" y="564">HKDF-Extract(derived,</text>
                <text x="196" y="564">0)</text>
                <text x="280" y="564">T</text>
                <text x="296" y="564">=</text>
                <text x="324" y="564">Init</text>
                <text x="380" y="564">residue)</text>
                <text x="52" y="628">Main</text>
                <text x="100" y="628">Secret</text>
                <text x="296" y="628">T</text>
                <text x="352" y="628">accumulator</text>
                <text x="156" y="660">Derive-Secret(.,</text>
                <text x="244" y="660">Lbl,</text>
                <text x="280" y="660">TH)</text>
                <text x="392" y="660">Derive(T,</text>
                <text x="452" y="660">Lbl,</text>
                <text x="488" y="660">TH)</text>
                <text x="116" y="676">"c</text>
                <text x="140" y="676">ap</text>
                <text x="188" y="676">traffic"</text>
                <text x="256" y="676">TH_SF</text>
                <text x="380" y="676">"c</text>
                <text x="404" y="676">ap</text>
                <text x="452" y="676">traffic"</text>
                <text x="112" y="692">=</text>
                <text x="172" y="692">c_ap_traffic</text>
                <text x="376" y="692">=</text>
                <text x="436" y="692">c_ap_traffic</text>
                <text x="116" y="708">"s</text>
                <text x="140" y="708">ap</text>
                <text x="188" y="708">traffic"</text>
                <text x="256" y="708">TH_SF</text>
                <text x="380" y="708">"s</text>
                <text x="404" y="708">ap</text>
                <text x="452" y="708">traffic"</text>
                <text x="112" y="724">=</text>
                <text x="172" y="724">s_ap_traffic</text>
                <text x="376" y="724">=</text>
                <text x="436" y="724">s_ap_traffic</text>
                <text x="124" y="740">"exp</text>
                <text x="176" y="740">master"</text>
                <text x="240" y="740">TH_SF</text>
                <text x="388" y="740">"exp</text>
                <text x="440" y="740">master"</text>
                <text x="112" y="756">=</text>
                <text x="164" y="756">exp_master</text>
                <text x="376" y="756">=</text>
                <text x="428" y="756">exp_master</text>
                <text x="124" y="772">"res</text>
                <text x="176" y="772">master"</text>
                <text x="240" y="772">TH_CF</text>
                <text x="388" y="772">"res</text>
                <text x="440" y="772">master"</text>
                <text x="112" y="788">=</text>
                <text x="164" y="788">res_master</text>
                <text x="376" y="788">=</text>
                <text x="428" y="788">res_master</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
 RFC 9846, Section 7.1            This document, the deck schedule
 =====================            ================================

 HKDF-Extract(0, PSK)             E = Init()
                                  Absorb(E, "psk", PSK)
         |                                |
         v                                v
+-----------------+              +=================+
|   Early Secret  |              |  E accumulator  |
+-----------------+              +=================+
         | Derive-Secret(., Lbl, TH)      | Derive(E, Lbl, TH)
         +-> "c e traffic"  TH_CH         +-> "c e traffic"
         |   = c_e_traffic                |   = c_e_traffic
         +-> "e exp master"  TH_CH        +-> "e exp master"
         |   = e_exp_master               |   = e_exp_master
         +-> "ext binder"  (no context)   +-> "ext binder"
         |   = binder_key                 |   = binder_key
         | Derive-Secret(., "derived")    | Ratchet(E) emits residue
         v                                v
 HKDF-Extract(derived, (EC)DHE)   H = Init(residue)
                                  Absorb(H, "dh", DHE)
         |                                |
         v                                v
+-----------------+              +=================+
| Handshake Secret|              |  H accumulator  |
+-----------------+              +=================+
         | Derive-Secret(., Lbl, TH)      | Derive(H, Lbl, TH)
         +-> "c hs traffic"  TH_SH        +-> "c hs traffic"
         |   = c_hs_traffic               |   = c_hs_traffic
         +-> "s hs traffic"  TH_SH        +-> "s hs traffic"
         |   = s_hs_traffic               |   = s_hs_traffic
         | Derive-Secret(., "derived")    | Ratchet(H) emits residue
         v                                v
 HKDF-Extract(derived, 0)         T = Init(residue)
         |                                |
         v                                v
+-----------------+              +=================+
|   Main Secret   |              |  T accumulator  |
+-----------------+              +=================+
         | Derive-Secret(., Lbl, TH)      | Derive(T, Lbl, TH)
         +-> "c ap traffic"  TH_SF        +-> "c ap traffic"
         |   = c_ap_traffic               |   = c_ap_traffic
         +-> "s ap traffic"  TH_SF        +-> "s ap traffic"
         |   = s_ap_traffic               |   = s_ap_traffic
         +-> "exp master"  TH_SF          +-> "exp master"
         |   = exp_master                 |   = exp_master
         +-> "res master"  TH_CF          +-> "res master"
         |   = res_master                 |   = res_master
]]></artwork>
        </artset>
      </figure>
      <t>The left column writes (EC)DHE, the name used before <xref target="RFC9846"/>
renamed that input the asymmetric shared secret, which is the term this
document uses elsewhere.  The figure's fixed column width does not admit
the longer name.</t>
      <t>The residue is a well-defined, byte-exact value, the analogue of TLS
1.3's Derive-Secret(., "derived", ""), and therefore a useful checkpoint
for tracing and test vectors.</t>
      <t>Both schedules root binder_key at the same Early Secret analogue:  TLS
1.3 derives it from Early Secret, and this document derives it (a
Derive) from the early trunk E, which is that analogue, as a third early
leaf beside c_e_traffic and e_exp_master (<xref target="finished-and-binder-mac"/>).
Both then derive finished_key from binder_key or from a traffic secret
by the same "finished" label, feeding the same MAC step:  HMAC on the
left, MAC on the right.</t>
      <t>The schedules diverge in topology, not in which named secrets exist:
TLS 1.3 threads every stage transition through a discrete HKDF-Extract,
salted by a Derive-Secret("derived") call, where the deck schedule
absorbs each stage's inputs into one running state and crosses the
boundary with a single Ratchet.  The Finished and binder MACs, record
keys, exporters, resumption PSK, key updates, and PSK import each
replace their TLS 1.3 counterparts one for one, and <xref target="shapes"/> gives the
per-shape rules.</t>
      <section anchor="invocation-count">
        <name>Invocation Count</name>
        <t>The figure of <xref target="comparison-figure"/> shows structural closeness.  This
table quantifies it.  Both profiles share the deck schedule and thus
the same invocation count, given once for both.</t>
        <t>The handshake counted is one full 1-RTT handshake that offers and
selects a PSK, uses the asymmetric shared secret, accepts 0-RTT early
data, issues one NewSessionTicket, performs one KeyUpdate in each
direction, and serves one TLS-Exporter request:  the maximal common case
both <xref section="7.1" sectionFormat="of" target="RFC9846"/> and <xref target="key-schedule"/> cover completely.
Counts are per endpoint.</t>
        <t>A deck invocation is one Derive, MAC, or Ratchet call, matching the
One-Shot Equivalence of <xref target="deck-interface"/>.  A TLS 1.3 invocation is
one HKDF-Extract, HKDF-Expand-Label, or HMAC call.  Absorb builds an
input sequence rather than invoking the primitive and is not
separately counted, matching how <xref target="shapes"/> already accounts for deck
operations.  Transcript-hash computations are excluded from both
columns:  both schedules compute the same checkpoints over the same
messages.</t>
        <table anchor="invocation-count-table">
          <name>Invocation Count for One Full Handshake</name>
          <thead>
            <tr>
              <th align="left">Derived value</th>
              <th align="left">Deck (this document)</th>
              <th align="left">TLS 1.3</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Early Secret analogue</td>
              <td align="left">0</td>
              <td align="left">1 (HKDF-Extract)</td>
            </tr>
            <tr>
              <td align="left">binder_key</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">finished_key (binder)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">PSK binder verify_data</td>
              <td align="left">1 (MAC)</td>
              <td align="left">1 (HMAC)</td>
            </tr>
            <tr>
              <td align="left">client_early_traffic_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">early_exporter_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">early traffic key + iv</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">"derived" salt (to Handshake Secret)</td>
              <td align="left">1 (Ratchet)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">Handshake Secret (absorbed, not ratcheted)</td>
              <td align="left">0</td>
              <td align="left">1 (HKDF-Extract)</td>
            </tr>
            <tr>
              <td align="left">client_handshake_traffic_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">server_handshake_traffic_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">client hs traffic key + iv</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server hs traffic key + iv</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">finished_key (server Finished)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server Finished verify_data</td>
              <td align="left">1 (MAC)</td>
              <td align="left">1 (HMAC)</td>
            </tr>
            <tr>
              <td align="left">finished_key (client Finished)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">client Finished verify_data</td>
              <td align="left">1 (MAC)</td>
              <td align="left">1 (HMAC)</td>
            </tr>
            <tr>
              <td align="left">"derived" salt (to Main Secret)</td>
              <td align="left">1 (Ratchet)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">Main Secret analogue</td>
              <td align="left">0</td>
              <td align="left">1 (HKDF-Extract)</td>
            </tr>
            <tr>
              <td align="left">client_application_traffic_secret_0</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">server_application_traffic_secret_0</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">exporter_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">resumption_secret</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Derive-Secret)</td>
            </tr>
            <tr>
              <td align="left">client ap traffic key + iv (gen 0)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server ap traffic key + iv (gen 0)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">client_application_traffic_secret_1</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">client ap traffic key + iv (gen 1)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server_application_traffic_secret_1</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">server ap traffic key + iv (gen 1)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">resumption PSK (NewSessionTicket)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">1 (Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">TLS-Exporter output (one request)</td>
              <td align="left">1 (Derive)</td>
              <td align="left">2 (Derive-Secret + Expand-Label)</td>
            </tr>
            <tr>
              <td align="left">Total</td>
              <td align="left">28</td>
              <td align="left">39</td>
            </tr>
          </tbody>
        </table>
        <t>Of the deck total, 3 invocations are MAC (the PSK binder and both
Finished values) and 25 are Derive or Ratchet.  Of the TLS 1.3 total, 3
invocations are HMAC and 36 are HKDF-Extract or HKDF-Expand-Label.  The
schedule crosses two ratchets (<xref target="key-schedule"/>), so the handshake stage
is entered by absorbing into a new trunk rather than by a third ratchet:
the TLS 1.3 extract it replaces has no deck counterpart, as <xref target="shapes"/>
states.</t>
        <t>The deck is lower at the operation level in every row where TLS 1.3
needs two Expand-Label calls against this document's single Derive that
outputs Nk + Nn octets and splits the result (<xref target="record-keys-generic"/>),
and in the three rows where TLS 1.3 forms a stage secret with an
HKDF-Extract that this document reaches by absorbing or seeding a trunk.
Each ratchet, by contrast, matches its Derive-Secret("derived") call one
for one.</t>
        <t>The operation count is not the cost, because a single invocation costs
more than one permutation call whenever its framed input exceeds the
rate.  The composed security argument of <xref target="cryptographic-analysis"/> does
not rest on either count.</t>
      </section>
      <section anchor="permutation-count">
        <name>Permutation Count</name>
        <t>An invocation is not a permutation call.  Both profiles absorb in
rate-sized blocks, 136 octets in either instantiation
(<xref target="turboshake-instantiation"/>, <xref target="shake-instantiation"/>), so an
invocation whose framed input exceeds the rate costs more than one call.
<xref target="permutation-method"/> gives the per-operation counting rule.</t>
        <t>Over the handshake of <xref target="invocation-count"/>, counted by that rule and
excluding the transcript hash as that table does, with a 64-octet PSK, a
32-octet shared secret, and a 64-octet transcript hash:</t>
        <table anchor="permutation-count-table">
          <name>Permutation Calls for One Full Handshake</name>
          <thead>
            <tr>
              <th align="left">Schedule</th>
              <th align="left">Permutation calls</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Either profile of this document</td>
              <td align="left">39</td>
            </tr>
            <tr>
              <td align="left">TLS 1.3 with KMAC primitives</td>
              <td align="left">117</td>
            </tr>
            <tr>
              <td align="left">HKDF-SHA3-256 over the same permutation</td>
              <td align="left">156</td>
            </tr>
          </tbody>
        </table>
        <t>The count is set by input lengths, not by which primitive produced
them.  The shared secret is the only key-exchange value the deck
absorbs.  A key share, a KEM ciphertext, and the handshake messages
never reach it, since each leaf binds its stage's transcript only
through its fixed-length hash (<xref target="implementation-considerations"/>).  A
pure-ML-KEM handshake, and an ML-KEM hybrid whose components are each
absorbed separately (<xref target="key-schedule"/>), cost the same as x25519 at these
lengths.</t>
        <t>Both profiles reach the same count:  they share the schedule and frame
the same fixed schedule_label at Init (<xref target="deck-interface"/>), so every
sequence opens with the same 8-octet frame.</t>
        <t>A keyed sponge does not carry HMAC's two nested hashes per operation or
KMAC's per-call re-keying.  The step from 117 to 39 is structural, not a
further gain from Keccak:  both schedules run the same permutation, and
the deck spends less only because it carries one state instead of
re-keying a primitive at every call.</t>
      </section>
    </section>
    <section anchor="permutation-method">
      <name>Permutation-Counting Method</name>
      <t>This appendix is non-normative.  It gives the per-operation rule behind
the permutation counts of <xref target="permutation-count"/>.</t>
      <t>The framing is not small next to the rate:  frame(schedule_label) is 8
octets and a framed 64-octet secret or transcript hash is 66, so a leaf
binding both a key and a transcript checkpoint spans two blocks.</t>
      <t>For an input of n octets producing L octets, a sponge over the profile's
permutation applies floor(n / 136) + 1 permutations while absorbing,
since the padding rule always appends at least one octet, and
ceil(L / 136) - 1 more while squeezing, since the first output block is
read from the state the absorption left.</t>
      <t>Sibling leaves that bind one transcript checkpoint, a stage's traffic
secrets, share its absorption.  Because the context precedes the label
(<xref target="deck-interface"/>), the running deck is cloned after the checkpoint
is absorbed, so the checkpoint enters the permutation once for the
stage and not once per leaf.</t>
      <t>HKDF-SHA3-256 over the same handshake spends 156 permutation calls,
four for each of its 39 invocations.  Each HKDF-Extract, and each
HKDF-Expand-Label of at most 32 octets, is one HMAC-SHA3-256, and one
HMAC-SHA3-256 is four permutation calls:  two for the inner hash of
(K XOR ipad) || m and two for the outer hash of (K XOR opad) || digest,
each filling one 136-octet block and padding into a second.  That
two-nested-hashes-per-operation factor follows from HKDF's definition
over HMAC, so no HKDF instantiation removes it.</t>
      <t>Replacing HMAC with KMAC narrows the gap but does not close it.  The
NIST primitives of <xref target="fips-schedule"/>, KMAC for extraction, expansion,
and the MAC, spend 117 permutation calls, three for each of the same 39
invocations.  KMAC runs one cSHAKE where HMAC nests two hashes, but each
call still absorbs a bytepad-framed customization block and a
bytepad-framed key block before its message, so it saves one of HMAC's
four permutations and not two.  That is a quarter below HKDF-SHA3 and
three times this document, which frames each key inline and carries the
running state a fresh KMAC call rebuilds.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>This appendix is non-normative.</t>
      <t>Both profiles need the same three capabilities of an XOF:  incremental
absorption, cloning of a state that has not produced output, and a
squeeze of a length known before the squeeze begins.  Each profile's
concrete parameters are in <xref target="turboshake-instantiation"/> and
<xref target="shake-instantiation"/>.</t>
      <t>Each handshake and application leaf absorbs its transcript checkpoint,
TH_SH, TH_SF, or TH_CF, as its Derive context (<xref target="key-schedule"/>), the
same point at which the corresponding TLS 1.3 Derive-Secret call
consumes Messages.  A stack ported from TLS 1.3 therefore need not
compute any transcript checkpoint it does not already compute.</t>
      <t>A client that offers PSKs associated with different KDFs computes each
binder under its own PSK's KDF, and therefore maintains transcript-hash
state per KDF for the partial ClientHello transcript.  TranscriptHash is
itself defined by the KDF (<xref target="turboshake-instantiation"/>,
<xref target="shake-instantiation"/>), so the checkpoints of <xref target="transcript-hash"/>
differ per offered KDF.  A client offering more than one either buffers
the handshake messages until the KDF is known or carries checkpoint
state per offered KDF, discarding the state of those not selected once
the KDF is pinned, at the ServerHello or at a HelloRetryRequest.  This
is the one place where offering more than one KDF costs an
implementation more than a single schedule:  the schedule binds no
cipher suite (<xref target="key-schedule"/>), so it is shared across every suite
offered, and only the record-key output lengths depend on the suite
(<xref target="record-keys-generic"/>).</t>
      <t>A binder and a Finished derive their MAC key from different base
secrets, binder_key against a handshake traffic secret, though both
derive it under "finished" (<xref target="finished-and-binder-mac"/>).  An
implementation that feeds a binder's MAC key from the Finished path's
base secret produces a wrong binder that no Finished-path test vector
detects.</t>
      <t>In garbage-collected runtimes, zeroization is inherently best effort:
the runtime may have copied or moved key material, and erasing every
copy is not achievable from the language.  The erasure rules of
<xref target="erasure-boundaries"/> are written to be met on such platforms by
ceasing use, dropping references, and zeroizing the buffers the
implementation controls, as implementations already do for TLS 1.3 key
material.</t>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This appendix is non-normative.</t>
      <t>The vectors below are tentative.  They were produced by a reference
implementation and reproduced byte for byte by a second implementation
written from this document alone, in another language and sharing no
code with the first, but written by the same author.  They are therefore
not yet the independent evidence this appendix calls for, and they may
change.  Each profile's permutation is pinned against published vectors,
TurboSHAKE256 against those of <xref target="RFC9861"/> and SHAKE256 against those
of <xref target="FIPS202"/>.  What rests on a single reading of this document is
the schedule itself:  the framing, the field order, and the context
tags.  That is the part most likely to move.</t>
      <t>Every secret and checkpoint is TranscriptHash of a short ASCII string,
so the inputs are reproducible from this document and the same values
serve as TranscriptHash vectors:</t>
      <artwork><![CDATA[
PSK     = TranscriptHash("psk")
DHE     = TranscriptHash("asymmetric shared secret")
epsk    = TranscriptHash("epsk")
TH_CH0  = TranscriptHash("truncated ClientHello")
TH_CH   = TranscriptHash("ClientHello")
TH_SH   = TranscriptHash("ClientHello..ServerHello")
TH_SF   = TranscriptHash("ClientHello..server Finished")
TH_CF   = TranscriptHash("ClientHello..client Finished")
]]></artwork>
      <t>ClientHelloInner.random is the 32 octets 0x00 through 0x1f.  Record keys
use Nk = 16 and Nn = 12.  The exporters use label "test label" and
context "test context" with a 32-octet output.  The two resumption
values use ticket_nonce "nonce" and an empty ticket_nonce, which is
omitted rather than framed (<xref target="expand-op"/>).  The ImportedIdentity has
external_identity "external psk identity", an empty context, and
target_protocol 0x0304.</t>
      <t>Its target_kdf carries a placeholder TLS KDF Identifier, 0x0100 for
TLS13_TURBOSHAKE256 and 0x0101 for TLS13_SHAKE256.  These are a
convention of this appendix and not a request:  <xref target="iana-considerations"/>
asks for two registrations without naming values, and the registry
assigns that range under Specification Required, so other values may be
assigned.  If they are, the ipsk vectors must be regenerated.  Every
other value here is independent of the assignment, because each
derivation takes its transcript checkpoint as an argument.</t>
      <section anchor="tls13shake256-vectors">
        <name>TLS13_SHAKE256 Vectors</name>
        <artwork><![CDATA[
# TranscriptHash of the stated inputs (also TranscriptHash vectors)
TranscriptHash("psk"):
  66eccc8045416ec22d1379ac2298aa749cb0bb86db4fca5578365a7c75bd244a
  3044aa9ba8ae404b2da7860a2e85af8998ec43aab11c2a117256e29d966eddd7
TranscriptHash("asymmetric ..."):
  72ef6a9ea47b1d38179210bda501fc29433b568b7247faec3c5de03c7ff500aa
  2e5276beb174cbec19e35148f9dcc4953e542c71aa0090effebb46fca99035ec
TranscriptHash("epsk"):
  861eebba4babfad7f02ca29cb787b1ef048e23540fc395941306e7958d406f20
  36be826abc7c912faaa8ea571dbf9c2f8128f739d803c5b22dd2cd1d6a9f6f49
TH_CH0:
  0e0254dce0001d20e9ccf45f038e0e4369bd5f0ca4cfbb01a3a5dc2cdb1c2761
  f999edb7213590745ebbf209134a2746795f9f0fd7bd5ea993797af6c9de97de
TH_CH:
  92dc319d6999c7606c589f50f53834bca7dc871f67bbc5bdc0abe70f4f708c7a
  7b93ae22c5544bfc18a7bdcfe54e1ac18c1f64335c0a4ec078aa9255cdc08500
TH_SH:
  df71253c5be0dacc544f06b8124ed65474bf4be5be8d63bab10018a5dfbbed6c
  bb0371f2a1649157053b23c7d25eadd1bc400fc05ba8510549d2930a374ca54a
TH_SF:
  63fc9f9ca068104fa93d078e5fdaff21307d9f2e3b48751dd3239d362c8c467a
  41a6d37c11d58da2a22c263f52609f54a57c6470e6ccd02e6bce36cd4de2adaf
TH_CF:
  1a9c3bfbbf4d6e6f00efe79b6096f91f576eedbd7237275e204120bccf608d41
  ce09d75493cbee316335d0783ce9d67b5a2692f87cddd6c8c0264a51a1b55c3a

# Early stage
Init() sequence:
  0006746c73313320
Absorb(E,"psk",PSK) contributed:
  000370736b004066eccc8045416ec22d1379ac2298aa749cb0bb86db4fca5578
  365a7c75bd244a3044aa9ba8ae404b2da7860a2e85af8998ec43aab11c2a1172
  56e29d966eddd7
c_e_traffic:
  8dc314eeb21286fbbf04003d6278ea72fe0b13fe33ea5007aff15f0e4a41d759
  e915c5002d2f5453c372b42ddd4bbce4151b6783cff709c1e9dea4526555e262
e_exp_master:
  deb93e40618718411940505fee4f7c269cf6a43c472b6c975f04b8650dc7597c
  5b4cedbd9f4a7f65280c2b4a0bc5ffdb020dd33c8ae18872267d8eee8e32f91c
binder_key (res binder):
  df739c3daffcf27d839bb50f4a5ceb320949b48c150efff26eb41b152c96ebf6
  c8ebe92c567b627bbcbf879699e560615ca9e77a4d6b12db03ca0b20a03e12a6
Absorb(E,"psk","") contributed:
  000370736b0000

# PSK binder
finished_key (binder):
  a464ab156a0e7d96613123a32df837b5602d9b13d60f4abdd02783a765278f56
  3b6893fd4ce4f1f00bd0be0a2cec8c22c4bcb35d86b93b52dfd95dad5b68f520
binder verify_data:
  216930054442f25ec1e319c3167328d9999125b993a740d02fd788e70c2dfe80
  aa9d2af76cbddb861c9109b8f1b5fb957cd33dbdd52900e80adfb99a569a4e9f

# Handshake stage
residue E->H:
  55321ee114b95625d9c8103f88e32643ee4a1d078ece6466a9cd090be610547e
  1058452cd6a87eeb50f33d298b7101ec93e6bb864f0c59ddad138ce2b05cdd8f
c_hs_traffic:
  8919262f4bf1e009be8a2db7bea5fd69d53122ac3a30b53055baa4b8fbce103b
  2595d7224424b209bf973f57c6ba025eda9bfd4251360b08ba6f1086933fb813
s_hs_traffic:
  b8f14d8627a58c305c312d373f10ab6d8afbb5db7df4647e55b4417abe4c742a
  8375494391555e06462758315e1c6180a20a11067cda2f9d8efa865ed8d628f0

# Finished
finished_key (server):
  6193189f09f3d8ea91e8359152fed882614e29a2c1e9f144da6dea191be96a0c
  5ee48cd6a7da4d1a148d964281aedc555747f97891c6b064c58010bed37539e7
server verify_data:
  5b880210c58a90c4630af11561a5cc47937800441d698ebf3087f6b4acc134ed
  146e5e27d222540a1d4cbc7dd6b70acea06a36e289dcf7dec2e49876f2c759a1

# Application stage
residue H->T:
  ce284cacaa34498dde8b98c62ff7dcba8404a58801109a05540d57593140b29c
  349d0964d9a07211a23fad1019d8bfc86f9f125604705bc83322378901668d6e
c_ap_traffic:
  4c0616b42d11ec3fa6d8269f9117a67d2f2dae89f649879771515540c57d6524
  79460868a8dd5129c6c72ffe770e7d7a2bbec428074f6cfd0172c46280699b37
s_ap_traffic:
  ab1b41c63566f88f27f4cfe27ea4ccfb571d6a70777e7c5dbc082dc33b0a44a7
  04e2bbbf9126f2b501e325c070e6e8e56cf6bb54a33495298f47dafad755e862
exp_master:
  8dca7254b7fd66f9f55fa2603e125e4475ae0596d15398f3402d1fc96387c0e2
  5310718a071b4f4cc4e3e62d7409f7c5ec68396ec1923fa70184e064ada15e85
res_master:
  f3074f8f48a8df60be7a81f1d81da85cfd227aa64e3ffcd29410186aa0602669
  61e405e61fad9a79ecf7501d8759563f62e16e7e4afb143777fb64b50569ca60

# Record keys (Nk=16, Nn=12 of TLS_AES_128_GCM)
key_block:
  1abdab692ea5277cb7c518a4bf074674fe83f8de919be76e348d308c
write_key = key_block[0..16]:
  1abdab692ea5277cb7c518a4bf074674
write_iv  = key_block[16..28]:
  fe83f8de919be76e348d308c

# Key update
app_traffic_secret_1:
  b9b387bb48ed7250afb536185437b7d13de8ecf535b1f94bef48b435cf6ae8ed
  b0a9ef61af372a6ce289a6bcf2f6398314fa7bdd6f9952501da956fbe481b860

# Resumption
resumption_psk (nonce):
  e946d2b2bd97c664e37963a0d552a5aa884b5ef2e08a94c34d2fa95b9137b823
  82f75c137bdae2c4063044b6c102e3b42feac3458577a77c80026747f7e63033
resumption_psk (empty nonce):
  250b68c2d2a19dc8ec2e9510dfa279b5e5c13be9f6c110e37db01eec617048e6
  e875986aece53ad2ea62e4489a31857222394bfbd3964d637df91614f7a8a78f

# Exporters
TLS-Exporter (32 octets):
  9577a6257c074295eef984f5938ffe10a874213a0656c24bfa64726986906686
early exporter (32 octets):
  7e39f663acea3827736eb496a412a77e255156b9f8a113920b93aec9123d565c

# PSK import
ImportedIdentity:
  001565787465726e616c2070736b206964656e74697479000003040101
ipsk (derived psk):
  dd0536afa369d9437a398ae510b475a9081cac1f012ff501f49cf7d113f906ba
  d9601569986b22d88043e75907911a9c7345771012d0f9cba962670b0a929a1b

# ECH acceptance confirmations
accept_confirmation:
  c5450cace00affb1
hrr_accept_confirmation:
  69e7dc04a9f22121
]]></artwork>
      </section>
      <section anchor="tls13turboshake256-vectors">
        <name>TLS13_TURBOSHAKE256 Vectors</name>
        <artwork><![CDATA[
# TranscriptHash of the stated inputs (also TranscriptHash vectors)
TranscriptHash("psk"):
  68ced33b52672668e960da11aa8a214f786ec8bba642feb48120b4c413de5992
  50e219a151e0a33412fd20d408ff40e62484dbfebb9d513916d0ead5c3d6defe
TranscriptHash("asymmetric ..."):
  8903e4a30203a04f848773bd22e64268a9370acee1c87c935a552b8507dc47cd
  95f15119ffeb5c3bc62a6f00a85d6e931b3c7c9bcb682bfd5c4b6500b4b6d21a
TranscriptHash("epsk"):
  9333fa09a9fb23511218694c6b44a83c3feaa1d7a644b3f745b4a198f6dadbd0
  20b71a4286dbee2062369fc2580435ed1ec28c9a99a6e3398a469b50fb2f2bc1
TH_CH0:
  8ce8a28c96e1601c1aa8fcc4dcbe37ae1da39584a3d99b361923816b27acab85
  aafa2fb99e9eec536e6d1d7a8326cf64e4fcff54094be16fae7f1f1e4862727d
TH_CH:
  4d04ddcadef309d940351efa0f8850bdb46bd500b81e38080a9ac7a15db5418a
  b552c899797daa2eb2ee3fc9c841bb5186243053b5240a6887bc1d505ac43ff7
TH_SH:
  f7dd7e7ae81ce9c3e4a2b5b06ee80b7eb1134042cf26403135a0f79f478b5c25
  673e7d9bc81fc5fa8eb8ebb62e55d65decd3ca80c3162e50b418951d15076f36
TH_SF:
  a3e0515a234d20f5a35d4afe1f034327c45b0ac71275c2cddf8379fb9383d89a
  82da608a7cd51a0c1ae5104772e80f814403dbb5ce6d365b958d00533af1a494
TH_CF:
  91779f45864417e2b1bc9799ca052341ae8e8879bae468c89b30e4de83d79c89
  a486e8665aa763bc86b0802bd58b7868e30773fcde2aa5eff6cf17533e418515

# Early stage
Init() sequence:
  0006746c73313320
Absorb(E,"psk",PSK) contributed:
  000370736b004068ced33b52672668e960da11aa8a214f786ec8bba642feb481
  20b4c413de599250e219a151e0a33412fd20d408ff40e62484dbfebb9d513916
  d0ead5c3d6defe
c_e_traffic:
  d67d72815a03f3133a92a9c2b7e803ab0c189ce9556b449ef55f5334a308f492
  be65ae2df723ecb7aca3a4308211192701a3d77627e47033e3bca542e246318f
e_exp_master:
  66fc225aba92994e95b59de340415b7d480c3e22f908662fdaa94cd14f8cc9ec
  005f8d8e3c81c410810d8c120d3abc69ab15c1e3515071d2473e76190e778749
binder_key (res binder):
  f786e8aa41a3f5b6371109956e537a1934339f96925f64a986d766c3ddc71ef8
  5d9e2fe02afd46f32131c7d7dfdfda9488ca64e6d3d78cf2f93c2f6d7b981ac7
Absorb(E,"psk","") contributed:
  000370736b0000

# PSK binder
finished_key (binder):
  2c83c8720e56a0ad4281b3149a41ecf34f880c23d43464dbca6718e49041a7a8
  1fcfdc608d8a48d559f8eaf108e3137ed5029c8e88e8831776d858ea37f3be43
binder verify_data:
  13589a03331d4dc6670d515e2b910c451fb53dff10a7c865ea5ec17afeae603e
  a2aad2ed3ac93bacc72cafdfcc1cbd96327487aebaab3ad146ffcdf86be06203

# Handshake stage
residue E->H:
  e072e5f19d821f866ee30a1573b515a1bb5ef48d5799c07c426a98cd46d2ede6
  a429c36eb7fd0ffa4bd24b441bcb7c331b50fbe92e5230e659dd87c7928ea56e
c_hs_traffic:
  d7b576daf46934ea25e5221a8e7734950c33980fbcd3e5e63d5b5bfa11c19249
  d06fb884cee245530d442572621b0b67ab77c81a7bacbddc58ae33a4debf4364
s_hs_traffic:
  e8dd5e9929ad2b6f1d0d89ba8ae26fb4d98a766f8a008dbe2515f5d5d3b898cf
  670796f6f2ed107c43ab1a211a37735028d67cbcd7d3d3ce501db77f6dcbcb50

# Finished
finished_key (server):
  0571d5e83ffef92f9044389b959f5f1130f6f0503638e8f366e27fe79fbe520d
  73f3f6f62ae0c134320f1dd9432df6c756f83bf35f58943c7ee3c1863ffd20f7
server verify_data:
  8efcca010fd741cde182f922e38ea2bfe95173d2d7c33b7505dc3a27ffd6d7aa
  774f156bdb38c156baec08159e0cc1a662243767eb0f730480971cec6d32b1c0

# Application stage
residue H->T:
  85eb68510203f3f89c4fb152aa825c9760ee08b78cd2597ab1f9654a2b625f31
  50ce5aa92a79fb58a7329777791e5ab186aa1c48eb4215a8bea5298ca6e5bf84
c_ap_traffic:
  f8aa74249ab3b4987dfdcaa1dbf5e902bbdbfcd028368695f068f75ccf771536
  268320456a89ea53f1c16d5eb650b2ebffe678cc1ab37a0efe0a00b43e8fbaf7
s_ap_traffic:
  0b2ecd818c025b55da1e283d7249e53753c8943864d0437acd34609d5b20e9a4
  bf9c7596594e32bbe2a39b5b087d79d7bc55d269e60d0c76a27a87427e99f20b
exp_master:
  d3ba3d208ba2969bed14d8a2c283de9191db0a94616eb5650993b2e2069f4e27
  142839bf2e1764a0f884136d4e495e5d8597d1c92e089dc3ab250314caec9cbe
res_master:
  248ac8baac7821842b09ed219caa68cc4052ef091b7cd1aa7dcb15d9fc74c3cd
  0d08ec2bd01b8750f50946b0b9208e14136cdd3ce15b34085cff2f0a2ec54ec0

# Record keys (Nk=16, Nn=12 of TLS_AES_128_GCM)
key_block:
  b1bce022917899cbf534dc767178dbd321081b50ca6f0536542cde70
write_key = key_block[0..16]:
  b1bce022917899cbf534dc767178dbd3
write_iv  = key_block[16..28]:
  21081b50ca6f0536542cde70

# Key update
app_traffic_secret_1:
  e8880ec46b4d9604ca954b9e37d701e4cbab9d9fa065148a7a66b312defbecea
  dc5d9eb76294e67ceab2ec25930c4442fce6ee9de075c6acfa7bf3e743f00f8b

# Resumption
resumption_psk (nonce):
  8ff5bb6a0d899a0fcf853f987d38ff118dfcef39898c78ac3c26c82c79fc8a20
  4a16ff80ea24ba0f56289b74961231eb1daaa98ec805e710f9e07bdbc9238d12
resumption_psk (empty nonce):
  03c3bd9082229b48616402a298ba4ed0dc428474daad95a7600a347e6e1bc7c1
  d3caf3bd097c034081c64ed4a3b55b69b10594d2b28ef25f64e5a3e33ae5910a

# Exporters
TLS-Exporter (32 octets):
  089d086244fdf269cb5761e666feb97bb02dde4d7616fea8937e4cda36f99c02
early exporter (32 octets):
  d40ac0409da2f2f22e90a9906c0fac1d77a8230ec60c787e34694812a8d2197c

# PSK import
ImportedIdentity:
  001565787465726e616c2070736b206964656e74697479000003040100
ipsk (derived psk):
  816b1a76acf9c1112971aee8b84d1e06bfbe169ee74f4ee3cf60cd37df3d5f1d
  248c35dc42b4ddc5b123fc69730482454fce97aea42ff2735acc2cc7988368e5

# ECH acceptance confirmations
accept_confirmation:
  1d3220c2df122d69
hrr_accept_confirmation:
  c7a9dada2343008a
]]></artwork>
        <t>A message-level full-handshake trace in the style of RFC 8448 has not
been extracted, though a reference implementation wires TLS13_SHAKE256
into a TLS stack.</t>
      </section>
    </section>
    <section anchor="fips-schedule">
      <name>The NIST Shapes of the TLS 1.3 Key Schedule (Informative)</name>
      <t>This appendix is non-normative.  The deck schedule of <xref target="deck-schedule"/>
is built by taking each computation TLS 1.3 derives from HKDF and
giving it a deck operation instead (<xref target="shapes"/>).  This appendix sets
that against the other target: for each site of the TLS 1.3 key
schedule, what this document does there, and the NIST Recommendation
that governs a site of that shape.</t>
      <table anchor="nist-shape-table">
        <name>TLS 1.3 Key-Schedule Sites, This Document, and the NIST Recommendation for Each Shape</name>
        <thead>
          <tr>
            <th align="left">RFC 9846, Section 7.1 site</th>
            <th align="left">This document</th>
            <th align="left">NIST for a site of that shape</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">the PSK input</td>
            <td align="left">unchanged</td>
            <td align="left">
              <xref target="SP800-133"/>, Section 6.2.2</td>
          </tr>
          <tr>
            <td align="left">the asymmetric shared secret input</td>
            <td align="left">unchanged</td>
            <td align="left">
              <xref target="SP800-133"/>, Section 6.2.1</td>
          </tr>
          <tr>
            <td align="left">HKDF-Extract, forming each stage secret</td>
            <td align="left">Absorb, and Ratchet at each boundary</td>
            <td align="left">
              <xref target="SP800-56C"/>, Section 5.1</td>
          </tr>
          <tr>
            <td align="left">Derive-Secret and HKDF-Expand-Label, at every leaf</td>
            <td align="left">Derive</td>
            <td align="left">
              <xref target="SP800-108"/>, Section 4.4</td>
          </tr>
          <tr>
            <td align="left">Transcript-Hash</td>
            <td align="left">DF, unkeyed</td>
            <td align="left">
              <xref target="FIPS202"/></td>
          </tr>
          <tr>
            <td align="left">the Finished and PSK binder MACs</td>
            <td align="left">KMAC256, or TurboKMAC256</td>
            <td align="left">
              <xref target="SP800-185"/></td>
          </tr>
        </tbody>
      </table>
      <t>The MAC is the only row where this document uses an approved
construction in its approved role.  On TLS13_SHAKE256 it is
byte-for-byte NIST KMAC256 (<xref target="shake-mac"/>), which is a MAC where
<xref target="SP800-185"/> specifies a MAC.  Every other row replaces the HKDF site
with a deck operation, and that is the design rather than an omission:
the deck is not an approved key-derivation function under any current
Special Publication, no CAVP or CMVP testing covers it, and
TLS13_TURBOSHAKE256 rests on reduced-round functions NIST has not
approved at all.  A deployment that requires approved components cannot
use either KDF of this document.</t>
      <t>The natural question is then what an approved schedule would use, and
the answer is not simply KMAC everywhere. <xref target="SP800-108"/>, Section 4.4
adds a KDF using KMAC and needs no iteration, "When using KMAC, there is
no need for an iterated PRF execution", so the expansion row is
available: it also requires the output length before the call, "KMAC128
or KMAC256 shall be used" rather than a KMACXOF variant, which the
deck's Derive already satisfies for that same reason
(<xref target="deck-interface"/>).  The extraction row is not available.</t>
      <t><xref target="SP800-56C"/>, Section 5.1 admits two auxiliary MAC algorithms and no
others, "either an implementation of HMAC ... or an implementation of
AES-CMAC", and then ties the rows together, "the PRF used by the KDF in
key expansion is determined by the MAC algorithm that is used for
randomness extraction", which rules out an HMAC extract with a KMAC
expand as well.  Table 4 permits HMAC-SHA3-256, so the one conformant
SHA-3-family schedule today is HMAC-SHA3 in both rows: TLS 1.3 with a
SHA-3 hash, which changes the hash and not the schedule.</t>
      <t>That row is not closed, though. <xref target="SP800-56C"/>, Section 8.3: "At this
time, KMAC has not been specified for use in the implementation of a
two-step key-derivation procedure.  This restriction may be reconsidered
once a KMAC-based KDF has been approved for use as a PRF-based KDF in a
revision of [SP 800-108]." That revision exists: <xref target="SP800-108"/> is
Revision 1, and its own account of what changed reads "In Revision 1, a
KDF using KMAC is added in Section 4.4".  The condition NIST named has
been met and the reconsideration has not yet happened.  Section 4.1 of
<xref target="SP800-56C"/> meanwhile already approves KMAC as the auxiliary function
of a one-step KDF, "H(x) = KMAC#(salt, x, H_outputBits, S)", keyed by a
salt, so KMAC keyed by a salt is an approved derivation primitive today
and it is the two-step composition that is pending.</t>
      <t>Whichever way that resolves, the KMAC schedule is not free:  every KMAC
call reabsorbs a bytepad-framed key block that the deck's running state
carries instead.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAEJoY2oAA8y963bbWJIu+H8/BUb+kVInKUuyLV/qZJ+RLbmk8bUtZVfW
VNXRgkhIQpskWABoWWXnPMs8yzzZRHwRsS8AKDuzu9Zpr0xbIoGNjb1jxz2+
GI/Hri3bWfEs++Xdy/FF3hTT7GNxmzWT62K6mhVNdlnV2dnr02x3+4HLLy7q
4tP3XTutJot8TgNP6/yyHTer2az8lC/G7awZf64ux3bXeGfHTfK2uKrq22dZ
007dajml35tn2dO9R09cuayfZW29atq9nZ2nO3sur4v8WXZaTFZ12d66m6r+
eFVXq+UzfrSjCdEn02cuy8Z+LvxzPFN88OrwJf6ll8G/02LyMbtcLSZtWS3k
k9VyVnzGj82yWlzJfZPT44NXRzLEm4MX8lm5vC7qrFmVNHHn8lV7XdUyh0t6
cVmItyU94FTXgb7Lsqq+yhflP3J+4rPsRX27bKurOl9e32YvqgUtWVsurrLX
r1/g6mKel7Nn2aKcXFezvNm2Jf2xLNrL//OKv92eVHPnFlU9pzE/FTyDDy9f
PH3ycD/8+Nh+pNUNnz71P+7v8o8vT96f7u3sPcOT27y+Ktpn2XXbLptn9+9P
mnqyvSibdvuq+nR/ubpo7l+Wy+Y+3UA/LPKZ3CWEtUHrNX6Qnbb5YprTzmTv
i3q+avHS4+egouO8uc7o67/iviz7a3b0uS3o8guij3erdrlqs5e6M80GLgpL
zH/GvJS0whg0n2Uni4aevmqLrLr0T274EdlZMbleVLPq6hb3Mqk9y/Z2dh+N
d57gk6aoy6IpF5eVjc5rQe9Bb7ehnxy+O3mW7e5s7+/sPbn/9uT0bJuv2aYr
nOM7O+u/9wiLfjI+3Oa9whm4vr2oy+l4So+6WvC3p++f7OyMd588+u41b5b3
6Zb7dMvaVT+kl/lEK+xX75nS7wjEO8rOmMZ5/UfpBrzP63w2K2b81T9pxffH
u3trVpyXlN/hfaZrsn7hT99v6zW62Ds7u7buuxGxC1nrIj948JsX+cGD+/UQ
dX8o6MzNmVh5JcACo4NcTrJXxHj+WCyKGhf8c9Zyb2e8s/99a/ngQX0HGdtq
8lVhuXae/Obl2nlyv969T6x89/vWjFcJxCof/dww53vfFKtpVdOLV/NAmv9k
TrD3cD0n6KzlzpN699tryVeNeSX8gj7af/FbF/TR/v3JdxMgLeY4Wsw3Ba0Q
vXS5CIvIlxw1LXHYsrmmu9vslITjvPhnLerO9y4qrc13ECiuooueH77/93XU
+bGYTPKP222Rz2nZSD+5fwopfrKYlpeXRU0vXeYX5Yy0iO3l9DJZ1HeLrL0u
soFL+ZX5KxkLcpq0k8n6s10y0/3jdva8qNtqUaaf/1/b2WFOy75IP36zTVKy
aIu66Q3z7/kiO2hYk0kWeO3qbhz9/OHdiw9/fn+2ARm282SUvX774jR7+HT/
0ShbLrez3Se7492nj7uLvruz8/j+08dPxg/Gjx7ujB8/ebr/ePzgfJfp+Jd3
7w7/fPDq2wv/uaqmt/TLdTtPyfYX+YLETva6vLpubwr+u8M7hSbvWNc163e6
nR1XvHHt711X/9UH+epVUdQdil634CcHLz5kZ8S1mlz4VEZn8PSWzmhb0zvJ
G/IJkQ3Z29k83d3qLv7D/UdP9u+3VTPZ/sTXbJenu3QMxk8eMxc5+/Du+dHw
4hfLuly022U+qbfp1JJOtvv4/s7Og2Txz5iAMUj2vq7aalLNspc1aamsTd+x
3LR+x/n8YlVfpaKcJ3V4cvri3XfP6SmpLTvJnA7LZlLRI6ppUdN6FU3DvOto
MeH1uvt0HW5nf6LTmM7pKf1KBsDug1en3zurvd37D/cfJ7NiPnmqZoM3OsBk
mQmogeF54B1zfEEcoP7HqvmYp58fEAUXM9IB83b8Ov+Ur6a9+46urpT44k9f
Vqt6UXQI/NV29qq6vqirj72No89ndMiaJiXjdSrYxsEpE7LnG3tgym8+HA8v
5rQqsYh9vrH3cP/Bk/Hu+V6yrgOcdZSdzJcVbbsy2g8FW0A4PR9o/eUsjXR6
LGsOlstZOcnljLUVduQDlIXsXZ1PaMNE8slhW781P29nb/JV3V1jOvkfisVi
YOmPq1lBbL8oFykPfrhuLc9evFDu+1C5797TR7vCffd2xw+efoP3xmv44XQN
PQ9vwf7DvfHeDrGT8cPzvZS2X5ApTeZpdlO21yTIePFLMUVfl/Oy1YUVeafz
GxKI38M4zmgtSa0pFsu8y5OPt7PT63xync97t5xe1+WcmGW6zBBA3yPqdnd1
sff3H+zJYj988nj8aGf/juXurderoz8fHZ6+f/f2j2s47pp1398bP3yyS1bO
o/PdJ6lpZmyElpb4C5lnA8pEozpwzhxxNcuNColf021E+nVFi3bHkh9tZweL
aV0UnzocZ43MfE6ngMi9XHRYx3qdY/fRuo14eXqkW9Cz3O5aopenrw5/yxo/
2H06fryz//Tx+On53m6yxi9Xs9mY2DLpqLLEh3DmZH9iWn++Kmft+IQ0Y3ax
jH+mN8hOV8tlVbe/Xdf4Hev2+Dt57u5dOlnv5Z+fvD08ev3dEvjJ/acdreAY
LgmYYiR28yWxXzMg6HiSWTIXHf+AVocZALvtcLlO8ugzX3Z1l772lqRguZgW
s97SPiee0vucxNZLUguuZ2V/0f9Y0Rxnn4qOKke6wGlbEGvK++rA4Jq//zfR
yHTJnyrP2N19tKP68d7O/nhv7y6msfOAePSjR7ukJZ/v7rnxeOz4ryy/oPNM
WqBzpinUKzrZJUk1XsC6SNySLOmOXx2+zKpPTJDHB+O9bdJhrssmm1aTFVtp
blqQBVjwPmQF+8igJLXXeZvVxXKWT+gr/ObHBHOvFkV2wUTPj8gXrgjutUrc
a+b4zDZ/efdy61kGYbooriri89hlmtYVz4umX9A/tzQTMzBHuPhlSRRCDwWJ
XPAm19mbgxcNHEu4omWdeFKXyza7hsepqbJF5fCiNP15XvLaiOUVrwsWoUid
rKPs4OjgMMtnVxWx0us5KQYNTvucuCKtkDy1Jtu4nmaz/JZuJGmX0VuCRKfy
fZ5NKpLw8ua8UrQajh8f1nbV0JJiV3JWMqb5LU/npuIVaTCmbAmNCMfa3qN9
Hhqj1Ky2FNNxXa3YNF7VF5Vd093YTL3e7KyC43tbKGheTqezwrl7JHrbulI1
yDliXkZSX76oj/fXX0eyN8lSBZIbojUHWuPJ4uIfGmxNb3aDZHdxm92QlXad
5S5aRk80dDU/chwIJVAZiTCeUXVDygYTZIgo8ErfXFdN52jgJZh4M5aKM+bq
bGRmy+BMxrL7UyBbNqlJodRF+U0E6wYIVukwfmTZYCg+Xzk9YDmrbrFe+awu
8umtm+Q1Mxx6o4IuboWa4JodZW9ej18dvRllZEvQj4enZAlkf+LrFiAuGtuF
AyhTjvdVtyrj4IK9LlOZUMUPWFyXrB9Rx2diRrPbmJTZl5OzNodYA4YBy8hl
mniGu6lWMz5Nc6IWYUx2WjKcJ771uroROvKch1TCRinJeUqS89eklxItFLPL
Eb15iy+w2oFp6mrGpIWQD70RrSD93cB+IhUeQ86ZPbw/faU72WEUPdoWZqh8
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
vN6dRct0/N3LdPw7l+mst0z0hvmyP+MzvCGjpSczfslvuO76ZvD6iP6y9Pou
/fHVEdJx52pO502ola6+l52F+J26YJHO1qY86Ip44lJE0vXtRV1OQ2NCwHOO
/Y4jj8oIAURjtg74s3lTjrRAQW9KDMyk4uXi1nseugQZ1OaRZcmJfwzSHlP2
LalYu4h6mdidogaJiUwHj2EGFlJywP4yw5aQLjPSQsVsUHmIZsuLd+5Wc5d8
roQPuAm30u6Z5o7WMA5y5cVsOgI2/Ym0SPxyD8nQ7RiI9YiArWlgo1l6xedi
AkHYY7FkIagnGBqc5BaVF75nR8jKYTvO4whrAIXHiAIobG78xLDFOzsP+NMN
wbz+Kh/t+GIGMXIjdDtfoy+T7ieqN7oRaEGkOH2b4g+Qoraq7jaVpXsiYI+h
IrcT7dQ5yRN0ABEfMe6mOEgs1xBiI4RJs48LTtzyGU4xmE8X1qX0VQrSH1jQ
6zsDWMYYplF8LptWqmVXi5Ih8ACpAK9Y3Oa9mmpZTqK2CkarJJ55z7CkCS9C
UsnktiNSnYbjoYJyoyO8Z3iaOB+7Z257e3tLC+lmt4obBf85fRueLl3GfI+n
lOBF7zxVNfPLPayB4u01qkpH2jO2omGcnmM5wGdqZd3p23PRxoyCCa4J97ng
JwkrOjOoS/h6NMKuSOV06KC4rolrdBpu5nDRht7QhfZpcda9A5CJmvsrdMhF
+gIEYrQzZ7+UFihy115mlJ0sEvDhDwH4aF2nl8iFsz5pRC4d8Gd6B6brOjAl
Q37Yf2khp8jtBmfiIBwSLSXWIvg7m3zWin+p67d0kd/ypNc5BlOXNkI+FX5h
zbxItH0jNUWrPrSQXZ46iu3NQUfJCOC5A6l8kVutWRc55NSNJBLj1Pg1J7io
2zxotOyR/x+Ih6HWOCqDCIExSFrrRSZNf2yy5cJja5pVkfbXkmGy9aUCRxFy
0tA8LEHElPTGAEonH5P2SmppWnAttp+QIMtNZ6SGy0xN+XjBNY+oDaQfRngb
Wkw0hMChsFHGuFwBLvCEoYR0rR0ihjRg3QiVDN1mBR7BVorDYlHnV9fDhNHk
eI/wz8MlIP/SYk7N0929cc2U614Vk0n+cbz8619293d2Rrt7f/1bUn4LZI2X
J+9P93b2kMkXpcKEfENoPiTpffSHE9e+FySr43zg/oTdEcRpcpJkFydLmybR
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
m1olV6+9WZzxyIK7i9BpUPBsUznznvMqseJNG4/NoSX7FGq+4t5qi9Rjoo5t
pywEeo6qsGK10T0yuB2UUxxu9nbMBH1/WUxUawHKsTZlXnCmUMXAZBNUTisY
l6/OFG4WisA9fcVg0gIVURh6e4cmJbP9oO0LFonbFFPAvIoqkBsnpiUaImey
x4ucObq2jlBlAOwO8iB0oM6iTtY4koYZrWzZy9mLlXfZ5U4pSLzld7pgvr/9
tVhj3Te11h3pVps3RKF1K5MZlUi40MAw2l1+75DB0885Eu5K9t9VVVmasrEE
ooZr4Ly2I+So2sd0F9fazwSkD7Hr6gKJog1EjpY74Eygy7yKHK6pB1gHJ9KD
h0gGtyHQoaJdcLY1GVY1sIhCxcJxvbGV28ACUIO/59DQnEwxTpGo43KZyJJY
EfzwueGFdLRH7K5mIwicAPSnVTsTKLW89b4cXW3arHDhRdQZXbDfVxPd7lDi
pfeJIervJXWSk3C15eLIAvXTkfHTXNrDnMpxVHeqAferOsTQxLw/cnDZCo7S
03LD7DO3HGy5oqaRWZHyXtGxOVoTTUshWkM2QYBbCK17Ta+IHuIBAlX1uyis
hNYLFQuAaITfoZWifIX0F69zs3EnMSazY1MjIs/2dnYUqn7CYp+htWTwqAdR
Lr6tuN+peP1zPd0iLGDkFpqtnzNaBml+N/zatWye48zB8h/eMSWjYgmEb0yJ
cpe8g7NyLkYFwKaDcDRVj03wF0FkYhIguPj9boFqkNCgQ/IGfKPehdzEwjcm
Zy2PrYoUlfO5b4eLJypTVeW3yYKpBRcd8kH9TDSsGPVJBtIC84YQkWD7ZZ1m
hFKuy1XNLMBJXLnrz0CWS3wIvT+ViOHdwh9pXRmvSuekKLRF4HEt0DCF9wAw
gDEziku6tVUMk4iFDKTVawHfXCIGEQxGP0apCNgLgzRvYw9v8EmV1ulzHUiG
w0KH76OsEqAeQSMJLVOs/cxJ693IiL1z6QKpLK1P648dDtVNIXUB3D1RarZ8
FovXBOhB7HQSdNEQUGBsXdFZizk/WHp+fN5iXWdFlLC7vzkrFvQB+jZ/9ngz
S+2RCby7BaP+ljHAPVrYctGK1MLQ7A1Pm78wpH0iq5HypCWrA6peoqdLpECz
u0BPWciSgap12/pCB3QKk3dVvMoQUMeAQBF2VoLTRGFxqyILcWaAiHAZ/+Ag
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
8z5fhzWpdPEAXx7+Pwl3nvd+xwEA

-->

</rfc>
