<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 4.0.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bubblefish-npamp-02" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="N-PAMP">N-PAMP: Native Post-Quantum Agent Messaging Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-bubblefish-npamp-02"/>
    <author initials="S." surname="Sammartano" fullname="Shawn Sammartano">
      <organization>BubbleFish Technologies, Inc.</organization>
      <address>
        <email>npamp-editor@bubblefish.sh</email>
      </address>
    </author>
    <date year="2026"/>
    <area>ART</area>
    <keyword>post-quantum</keyword>
    <keyword>agents</keyword>
    <keyword>transport</keyword>
    <keyword>ALPN</keyword>
    <abstract>

<t>The Native Post-Quantum Agent Messaging Protocol (N-PAMP) is a binary,
multi-channel, wire-level protocol for authenticated communication between
autonomous software agents. N-PAMP operates beneath application-layer agent
protocols and provides a single fixed-size frame format, a registry of
multiplexed channels, and three escalating security profiles (Standard,
High, and Sovereign) built on standard post-quantum and classical
cryptography. The protocol uses a hybrid key-encapsulation mechanism
combining X25519 with ML-KEM, authenticated encryption with associated
data, and a forward-secure key schedule. N-PAMP runs over QUIC as its
primary transport and over TCP with TLS 1.3 as a fallback, negotiated via
the Application-Layer Protocol Negotiation (ALPN) identifier "n-pamp/3".
This document describes the wire format, channel architecture, profile
negotiation, and cryptographic suites of N-PAMP, and reserves code-point
ranges for extensions defined in companion specifications.</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Autonomous software agents increasingly communicate with one another over
long-lived associations that carry control traffic, persistent state, capability
delegation, identity attestation, and operational telemetry on a single
connection. Existing transport-layer protocols such as TLS 1.3 <xref target="RFC9846"/> and
QUIC <xref target="RFC9000"/>, and application-layer agent protocols layered above them, do
not by themselves provide a unified binary frame format with semantic channel
multiplexing, profile-negotiated cryptographic strength, and mandatory
authenticated encryption tailored to agent-to-agent traffic.</t>
      <t>N-PAMP addresses this gap. It defines a single fixed-size frame header, a set of
multiplexed channels each carrying a distinct class of agent traffic, and three
negotiated security profiles that hold the wire format constant while escalating
the cryptographic primitives and operational requirements. All three profiles
employ a hybrid key-encapsulation mechanism (KEM) combining the classical X25519
key agreement with a NIST-standardized module-lattice KEM (ML-KEM, <xref target="FIPS203"/>),
so that the confidentiality of an association is preserved if either the
classical or the post-quantum component remains unbroken.</t>
      <t>N-PAMP is deliberately scoped as a transport substrate. It does not define
application-layer semantics for the data carried on its channels; those are the
subject of companion specifications. This document specifies the wire format,
the channel registry, profile negotiation, and the cryptographic suites, and it
reserves code-point ranges so that companion extensions can be defined without
colliding with the core protocol.</t>
      <section anchor="goals">
        <name>Goals</name>
        <t>The design goals of N-PAMP are:</t>
        <ul spacing="normal">
          <li>
            <t>Cryptographic agility within a stable wire format. The frame format does not
change between profiles; the cryptographic primitives, modes, and operational
requirements do.</t>
          </li>
          <li>
            <t>Defense in depth through hybrid post-quantum and classical key establishment,
authenticated encryption, and a forward-secure key schedule.</t>
          </li>
          <li>
            <t>Channel multiplexing so that a single association can carry several classes of
agent traffic with independent sequence spaces and per-channel keying.</t>
          </li>
          <li>
            <t>Interoperability across profiles, so that an endpoint operating at a higher
profile <bcp14>MAY</bcp14> interoperate with a lower-profile peer when local policy permits.</t>
          </li>
        </ul>
      </section>
      <section anchor="non-goals">
        <name>Non-Goals</name>
        <t>This document does NOT:</t>
        <ul spacing="normal">
          <li>
            <t>Replace TLS for ordinary web traffic. N-PAMP is purpose-built for
autonomous-agent, multi-channel traffic over long-lived associations.</t>
          </li>
          <li>
            <t>Define application-layer semantics for the data carried on its channels.</t>
          </li>
          <li>
            <t>Define a general-purpose IP-layer tunneling or VPN protocol.</t>
          </li>
        </ul>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>For the purposes of this document:</t>
        <dl>
          <dt>Association:</dt>
          <dd>
            <t>A long-lived, cryptographically authenticated session between two N-PAMP
endpoints, identified by a stable Association ID.</t>
          </dd>
          <dt>Channel:</dt>
          <dd>
            <t>A semantic multiplexing lane within an association, identified by a 16-bit
Channel ID, carrying one class of agent traffic with its own sequence space.</t>
          </dd>
          <dt>Frame:</dt>
          <dd>
            <t>The atomic unit of transmission, consisting of a fixed 36-octet header,
optional extension TLVs, and an AEAD-protected payload.</t>
          </dd>
          <dt>Profile:</dt>
          <dd>
            <t>One of three negotiated levels of cryptographic strength and operational
requirement (Standard, High, Sovereign).</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>N-PAMP is a binary protocol. Every unit of communication is a frame consisting
of a fixed 36-octet header (<xref target="wire-format"/>), zero or more extension TLVs, and a
payload protected by an authenticated-encryption-with-associated-data (AEAD)
construction <xref target="RFC5116"/>. Frames are carried on channels (<xref target="channel-architecture"/>),
each of which has an independent per-direction sequence space.</t>
      <t>An N-PAMP association is established by a handshake that:</t>
      <ol spacing="normal" type="1"><li>
          <t>establishes a hybrid X25519 + ML-KEM shared secret;</t>
        </li>
        <li>
          <t>negotiates a security profile, a KEM, a signature algorithm, and one or more
AEAD suites;</t>
        </li>
        <li>
          <t>authenticates both peers by signing a transcript that binds the negotiated
parameters and both peer identities; and</t>
        </li>
        <li>
          <t>derives a forward-secure key schedule from which per-channel, per-direction
traffic keys are obtained.</t>
        </li>
      </ol>
      <t>The negotiated profile, the KEM identifier, the signature identifier, the
selected AEAD suite(s), and both peer identities are all bound into the
handshake transcript and confirmed by a Finished message authentication code
(MAC). A man-in-the-middle that alters any negotiated parameter or substitutes
an identity invalidates the Finished MAC and aborts the handshake; this is the
structural defense against downgrade, unknown-key-share, and
identity-substitution attacks (see <xref target="security-considerations"/>).</t>
      <t>N-PAMP uses QUIC <xref target="RFC9000"/> (secured with TLS 1.3, <xref target="RFC9001"/>) as its primary
transport and TCP with TLS 1.3 <xref target="RFC9846"/> as a fallback. In both cases, the
application protocol is negotiated using the ALPN extension <xref target="RFC7301"/> with the
identifier "n-pamp/3" (<xref target="iana-considerations"/>).</t>
    </section>
    <section anchor="wire-format">
      <name>Wire Format</name>
      <section anchor="frame-structure">
        <name>Frame Structure</name>
        <t>Every N-PAMP frame has the following structure:</t>
        <figure>
          <name>N-PAMP frame structure</name>
          <artwork><![CDATA[
+--------+------------------------------------------------+
| Header | Payload                                        |
| 36 B   | (var; frame-type body, then 16-octet AEAD tag) |
+--------+------------------------------------------------+
]]></artwork>
        </figure>
        <t>The 36-octet header is fixed-size. Everything after the header is a single Payload
region whose length is the Payload Length field: it carries the frame-type-specific
body (which, where a frame type uses them, contains extension TLVs decoded per that
frame type) and ends with the 16-octet AEAD tag, which is counted in Payload Length.
There is no separate extension-TLV region between the header and the payload;
extension TLVs are frame-type payload content (see Extension TLVs). The payload is
AEAD-sealed, and the associated data covers the 21-octet header prefix (octets 0-20,
through the Payload Length field, the same octets protected by the header CRC32C) so
that any modification to those header fields is detected on decryption. The CRC32C
(octets 21-24) and the reserved octets (25-35) are OUTSIDE the AEAD associated-data
range (octets 0-20); a receiver <bcp14>MUST NOT</bcp14> make any security decision based on them.
The CRC32C is a non-cryptographic integrity check (an on-path attacker who alters a
header field can recompute it), and the reserved octets carry no meaning beyond the
<bcp14>MUST</bcp14>-be-zero rule; only the AEAD tag over the AD-covered header prefix authenticates
the header.</t>
      </section>
      <section anchor="stream-framing">
        <name>Stream Framing</name>
        <t>N-PAMP frames are self-delimiting: each frame carries its own length in the Payload
Length header field, so no inter-frame delimiter or separate total-length prefix is
used. Over a stream transport (TCP with TLS 1.3), a receiver locates each frame
boundary by reading the fixed 36-octet header, taking Payload Length (octets 17-20,
big-endian), and consuming exactly 36 + Payload Length octets; the next frame begins
at the following octet. A receiver that has buffered fewer than 36 octets, or fewer
than 36 + Payload Length octets, <bcp14>MUST</bcp14> wait for more input before parsing the frame.
Over QUIC a frame <bcp14>MAY</bcp14> additionally align to a stream or datagram boundary, but the
same Payload-Length self-delimiting rule applies within any byte run.</t>
      </section>
      <section anchor="frame-header">
        <name>Frame Header</name>
        <t>The fixed header is 36 octets, laid out as follows. Multi-octet integers are
encoded in network byte order (big-endian) unless stated otherwise.</t>
        <figure>
          <name>36-octet N-PAMP frame header</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     'N'       |     'P'       |     'A'       |     'M'       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ver   | Flags |          Frame Type           |  Channel ID   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                   Sequence Number (64 bits)                   +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Payload Length (32 bits)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   CRC32C over octets 0-20                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+             Reserved + Padding (11 octets, zero)              +
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>The fields are:</t>
        <table>
          <name>Frame header fields</name>
          <thead>
            <tr>
              <th align="left">Offset</th>
              <th align="left">Size</th>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-3</td>
              <td align="left">4 octets</td>
              <td align="left">Magic</td>
              <td align="left">ASCII "NPAM" (0x4E 0x50 0x41 0x4D).</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">4 bits</td>
              <td align="left">Ver</td>
              <td align="left">Wire-format version (high nibble of octet 4). The value 0x2 designates this frame layout; it is invariant and does not identify the crypto generation (see <xref target="iana-considerations"/>).</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">4 bits</td>
              <td align="left">Flags</td>
              <td align="left">The low nibble of octet 4 (see <xref target="frame-flags"/>).</td>
            </tr>
            <tr>
              <td align="left">5-6</td>
              <td align="left">2 octets</td>
              <td align="left">Frame Type</td>
              <td align="left">Frame type within the channel (see <xref target="frame-types"/>).</td>
            </tr>
            <tr>
              <td align="left">7-8</td>
              <td align="left">2 octets</td>
              <td align="left">Channel ID</td>
              <td align="left">The semantic channel (<xref target="channel-architecture"/>).</td>
            </tr>
            <tr>
              <td align="left">9-16</td>
              <td align="left">8 octets</td>
              <td align="left">Sequence Number</td>
              <td align="left">Per-(channel, direction) monotonic sequence number, starting at 0 in the keyed session; the four handshake frames are the exception and all use sequence 0 (<xref target="handshake"/>).</td>
            </tr>
            <tr>
              <td align="left">17-20</td>
              <td align="left">4 octets</td>
              <td align="left">Payload Length</td>
              <td align="left">Octet count of everything following the 36-octet header -- the frame-type body (including any extension TLVs) and the trailing 16-octet AEAD tag. This single quantity locates the frame boundary on a stream transport.</td>
            </tr>
            <tr>
              <td align="left">21-24</td>
              <td align="left">4 octets</td>
              <td align="left">CRC32C</td>
              <td align="left">CRC32C (Castagnoli polynomial 0x1EDC6F41) computed over header octets 0-20. Receivers <bcp14>MUST</bcp14> validate it before processing any other header field.</td>
            </tr>
            <tr>
              <td align="left">25-35</td>
              <td align="left">11 octets</td>
              <td align="left">Reserved</td>
              <td align="left">
                <bcp14>MUST</bcp14> be zero; receivers <bcp14>MUST</bcp14> reject frames whose reserved octets are non-zero.</td>
            </tr>
          </tbody>
        </table>
        <t>All multi-octet integers are big-endian. The Ver field carries the wire-format
version (the frame layout); the value 0x02 is invariant and does not identify the
crypto generation. The crypto generation is carried out of band by the negotiated
ALPN identifier (currently "n-pamp/3"), or by explicit configuration where frames
are exchanged without TLS; a raw frame is not generation-self-describing. A receiver
<bcp14>MUST</bcp14> reject any frame whose Ver nibble is not 0x02.</t>
      </section>
      <section anchor="frame-flags">
        <name>Frame Flags</name>
        <t>The low nibble of header octet 4 carries four flag bits:</t>
        <table>
          <name>Frame flags</name>
          <thead>
            <tr>
              <th align="left">Bit</th>
              <th align="left">Name</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0 (0x01)</td>
              <td align="left">(reserved)</td>
              <td align="left">Reserved (formerly URG); <bcp14>MUST</bcp14> be 0. A receiver <bcp14>MUST</bcp14> reject a frame that sets this bit.</td>
            </tr>
            <tr>
              <td align="left">1 (0x02)</td>
              <td align="left">ENC</td>
              <td align="left">Payload is AEAD-encrypted.</td>
            </tr>
            <tr>
              <td align="left">2 (0x04)</td>
              <td align="left">COMP</td>
              <td align="left">Payload is compressed.</td>
            </tr>
            <tr>
              <td align="left">3 (0x08)</td>
              <td align="left">(reserved)</td>
              <td align="left">Reserved (formerly FRAG); <bcp14>MUST</bcp14> be 0. A receiver <bcp14>MUST</bcp14> reject a frame that sets this bit.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="extension-tlvs">
        <name>Extension TLVs</name>
        <t>Where a frame type uses Type-Length-Value (TLV) extensions, they appear inside
that frame type's payload, decoded per the frame type's grammar; there is no
separate extension-TLV region between the header and the payload. Each TLV is
encoded as:</t>
        <figure>
          <name>Extension TLV encoding</name>
          <artwork><![CDATA[
+---------+---------+-----------+
| Type    | Length  | Value     |
| 16 bits | 16 bits | Length B  |
+---------+---------+-----------+
]]></artwork>
        </figure>
        <t>Type and Length are 16-bit unsigned integers in network byte order; Length is the
byte count of Value (0 to 65535). A receiver that encounters an unknown TLV whose
Type has the high bit (0x8000) clear <bcp14>MUST</bcp14> ignore that TLV. A receiver that
encounters an unknown TLV whose Type has the high bit (0x8000) set <bcp14>MUST</bcp14> treat it
as a forward-incompatible extension and reject the frame with the registered error
code <tt>unknown_critical_tlv</tt> (<xref target="error-registry"/>). The TLV type registry
maintained by this specification is given in <xref target="tlv-registry"/>.</t>
      </section>
      <section anchor="payload-encoding">
        <name>Payload Encoding</name>
        <t>The payload carries a frame-type-specific body. The body <bcp14>MAY</bcp14> be encoded in a
binary serialization, in deterministic CBOR <xref target="RFC8949"/> (per the Deterministic
Encoding Profile, <xref target="det-encoding"/>), or as raw octets. The selected encoding is
signaled within the channel-local interpretation of the Frame Type field.</t>
        <section anchor="det-encoding">
          <name>Deterministic Encoding Profile</name>
          <t>Wherever this document or a companion specification requires "deterministic CBOR",
the encoding <bcp14>MUST</bcp14> conform to the core deterministic encoding requirements of
<xref target="RFC8949"/>, Section 4.2.1, with the following pins:</t>
          <ul spacing="normal">
            <li>
              <t>Map keys are sorted in <strong>bytewise lexicographic order of their encoded bytes</strong>
(<xref target="RFC8949"/>, Section 4.2.1), NOT the length-first order of Section 4.2.3.</t>
            </li>
            <li>
              <t>Integers and byte-/text-string lengths use the <strong>shortest form</strong>
(<xref target="RFC8949"/>, Section 4.2.1).</t>
            </li>
            <li>
              <t><strong>No indefinite-length</strong> items are used (<xref target="RFC8949"/>, Section 4.2.1).</t>
            </li>
            <li>
              <t>A decoder <bcp14>MUST</bcp14> reject a map that contains <strong>duplicate keys</strong> as malformed
(<xref target="RFC8949"/>, Section 5.6).</t>
            </li>
            <li>
              <t>On any CBOR-bearing surface that admits numbers, the <strong>integer/float rule</strong> of
<xref target="RFC8949"/>, Section 4.2.2 applies: a value representable as an integer is not
encoded as a floating-point number.</t>
            </li>
            <li>
              <t>In a <strong>sealed body</strong> (a CBOR value inside an AEAD-protected payload), tags and
floating-point values <bcp14>MUST NOT</bcp14> appear, so that two conformant encoders emit
byte-identical sealed input.</t>
            </li>
          </ul>
          <t>Because AEAD sealing and transcript hashing are computed over the exact octets, a
non-deterministic or non-conformant encoding invalidates integrity and transcript
computation across peers; a receiver <bcp14>MUST</bcp14> reject a frame whose CBOR body violates
this profile.</t>
        </section>
      </section>
      <section anchor="frame-types">
        <name>Reserved Frame Types</name>
        <t>Each channel defines its own frame types in the 0x0000-0xFFFF space. The
following frame types are reserved across all channels and have the same meaning
on every channel:</t>
        <table>
          <name>Reserved frame types (all channels)</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">(reserved)</td>
              <td align="left">Reserved; <bcp14>MUST NOT</bcp14> be used as a frame type.</td>
            </tr>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">PING</td>
              <td align="left">Liveness probe.</td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">PONG</td>
              <td align="left">Reply to PING.</td>
            </tr>
            <tr>
              <td align="left">0x0003</td>
              <td align="left">CLOSE</td>
              <td align="left">Authenticated close; AEAD-protected.</td>
            </tr>
            <tr>
              <td align="left">0x0004</td>
              <td align="left">CLOSE_ACK</td>
              <td align="left">Reply to CLOSE.</td>
            </tr>
            <tr>
              <td align="left">0x0005</td>
              <td align="left">ERROR</td>
              <td align="left">Error report; AEAD-protected.</td>
            </tr>
            <tr>
              <td align="left">0x0006</td>
              <td align="left">KEY_UPDATE</td>
              <td align="left">Initiate key update for this (channel, direction).</td>
            </tr>
            <tr>
              <td align="left">0x0007</td>
              <td align="left">KEY_UPDATE_ACK</td>
              <td align="left">Acknowledge key update.</td>
            </tr>
            <tr>
              <td align="left">0x0008</td>
              <td align="left">PATH_CHALLENGE</td>
              <td align="left">Path-migration challenge.</td>
            </tr>
            <tr>
              <td align="left">0x0009</td>
              <td align="left">PATH_RESPONSE</td>
              <td align="left">Path-migration response.</td>
            </tr>
            <tr>
              <td align="left">0x000A</td>
              <td align="left">FLOW_UPDATE</td>
              <td align="left">Connection-level flow-control credit update.</td>
            </tr>
          </tbody>
        </table>
        <t>Frame types are interpreted within the channel on which they appear, as
identified by the Channel ID field of the frame header (<xref target="wire-format"/>). A given
frame-type value <bcp14>MAY</bcp14> have a different meaning on different channels, except for
the all-channel reserved types above, which have the same meaning on every
channel. Each channel's frame-type namespace is partitioned as follows:</t>
        <ul spacing="normal">
          <li>
            <t>0x0000-0x000A: reserved all-channel frame types (the table above); the same
meaning on every channel.</t>
          </li>
          <li>
            <t>0x000B-0x002F: unassigned; reserved to this specification for future
all-channel or core additions. A frame whose type is in this range and is not
defined by this specification <bcp14>MUST</bcp14> be treated as an unknown frame type.</t>
          </li>
          <li>
            <t>0x0030-0x00FF: companion-extension band. Frame types in this range are reserved
for extensions defined in companion specifications and are scoped to a specific
channel; the individual reservations are enumerated in <xref target="extension-points"/>.</t>
          </li>
          <li>
            <t>0x0100-0xFFFF: channel-specific application frame types. Each channel defines
its own frame types in this range; the same value on two different channels
denotes two unrelated frames. The Control channel's handshake frame types
(below) occupy 0x0100-0x0103.</t>
          </li>
        </ul>
        <t>The Control channel (0x0000) assigns the following channel-specific frame types for
the N-PAMP handshake (<xref target="handshake"/>):</t>
        <table>
          <name>Control-channel handshake frame types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0100</td>
              <td align="left">CLIENT_HELLO</td>
              <td align="left">First handshake flight (client); cleartext.</td>
            </tr>
            <tr>
              <td align="left">0x0101</td>
              <td align="left">SERVER_HELLO</td>
              <td align="left">Second handshake flight (server); cleartext.</td>
            </tr>
            <tr>
              <td align="left">0x0102</td>
              <td align="left">SERVER_AUTH</td>
              <td align="left">Server authentication flight; AEAD-protected.</td>
            </tr>
            <tr>
              <td align="left">0x0103</td>
              <td align="left">CLIENT_AUTH</td>
              <td align="left">Client authentication flight; AEAD-protected.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="close-frame">
        <name>CLOSE Frame</name>
        <t>An endpoint closes an association with an acknowledged teardown on the Control channel
(0x0000). A CLOSE frame (0x0003) is authenticated like any other frame: a receiver <bcp14>MUST</bcp14>
verify the AEAD tag before honoring it, and an unauthenticated or forged CLOSE frame
<bcp14>MUST</bcp14> be dropped and <bcp14>SHOULD</bcp14> be counted as a security event, so an off-path attacker
cannot tear down an association with a forged CLOSE.</t>
        <t>The exchange is CLOSE then CLOSE_ACK and closes the whole association (every channel):</t>
        <ol spacing="normal" type="1"><li>
            <t>The closer seals and sends a CLOSE frame on Control. CLOSE is the closer's final
frame: after sending it the closer <bcp14>MUST NOT</bcp14> send any further application frame on
any channel, and it moves to the CLOSING state. Because each (channel, direction)
is delivered in order (<xref target="wire-format"/>), every frame the closer sent before CLOSE is
delivered ahead of it, so no in-flight frame the closer already sent is lost.</t>
          </li>
          <li>
            <t>The peer, on a verified CLOSE, <bcp14>MUST</bcp14> first process any frames it has already received
in sequence order up to the CLOSE (in-flight frames are not discarded), then seal and
send a CLOSE_ACK frame (0x0004) on Control, then tear down (CLOSED). After sending
CLOSE_ACK it <bcp14>MUST NOT</bcp14> send any further frame.</t>
          </li>
          <li>
            <t>The closer, in CLOSING, awaits CLOSE_ACK under the CLOSE_ACK-wait timer (its bounds
are stated with the other numeric bounds, <xref target="security-considerations"/>). While it
waits it <bcp14>MAY</bcp14> continue to receive and process frames the peer had in flight. On
CLOSE_ACK it moves to CLOSED; on the timer's expiry it forces teardown and records
the outcome as <tt>close_incomplete</tt> (<xref target="error-registry"/>) -- the peer is unresponsive, so
no further ERROR is sent.</t>
          </li>
        </ol>
        <t>CLOSE and CLOSE_ACK carry no payload; the frame type and its AEAD authentication are the
whole of the message. A receiver <bcp14>MUST</bcp14> reject a CLOSE or CLOSE_ACK that carries a
non-empty payload with <tt>unexpected_message</tt>. Once an endpoint reaches CLOSED it
processes no further frame, and the association's key schedule -- the master secret and
every cached epoch key -- is zeroized (<xref target="security-considerations"/>).</t>
      </section>
      <section anchor="error-handling">
        <name>ERROR Frame</name>
        <t>Reject conditions have one of two reactions. A <strong>fatal</strong> condition aborts the
connection: after a traffic key is established, an endpoint that aborts on a fatal
condition <bcp14>MUST</bcp14> send an ERROR frame (0x0005) on the Control channel (0x0000) carrying
the condition's code before it tears the connection down; before any traffic key is
established -- an initiator before it has processed SERVER_HELLO -- it aborts WITHOUT an
ERROR (so there is no unauthenticated ERROR an off-path attacker could forge), and the
peer detects the abort through the transport or the handshake-completion timer. Two
fatal codes are triggered by a timer rather than a received frame -- <tt>handshake_timeout</tt>
and <tt>close_incomplete</tt> -- and force teardown directly: the endpoint <bcp14>MAY</bcp14> send a
best-effort ERROR if a traffic key is established, but <bcp14>MAY</bcp14> omit it when the peer is
unresponsive, and it records the outcome and tears down regardless. A <strong>discard</strong>
condition is not fatal: the offending frame is dropped and the condition
is counted, the connection survives, and no ERROR frame is sent. Each code's reaction
is given in the registry below.</t>
        <t>The ERROR frame is AEAD-protected under the current traffic key. A receiver <bcp14>MUST</bcp14> verify
the AEAD tag before reading an ERROR frame and <bcp14>MUST NOT</bcp14> make any security decision
based on an unauthenticated or malformed ERROR; an authenticated ERROR frame is
advisory -- it reports the sender's reason for aborting and does not itself change the
receiver's keys or state beyond letting the receiver surface the reason and close.</t>
        <t>The ERROR payload is a deterministic-CBOR (<xref target="det-encoding"/>) map with two integer keys:</t>
        <artwork><![CDATA[
error-body = {
  1 => code:    0..255,   ; Error/Alert Code Registry value (below)
  2 => context: bstr,     ; diagnostic detail; always present,
                          ; MAY be zero-length
}
]]></artwork>
        <t>The <tt>context</tt> is an implementation-chosen diagnostic detail (for example, the
offending frame type) and carries no normative meaning; it is always present and <bcp14>MAY</bcp14>
be zero-length, and a receiver <bcp14>MUST NOT</bcp14> parse <tt>context</tt> into any security decision.</t>
        <section anchor="error-registry">
          <name>Error/Alert Code Registry</name>
          <t>Every "<bcp14>MUST</bcp14> reject" / "<bcp14>MUST</bcp14> abort" condition in this document maps to exactly one of
the following codes. A fatal code is carried in the ERROR frame, so a passive observer
holding the keys can decide from the wire which fatal condition fired; a discard code
names a frame the receiver silently drops and counts, which produces no wire signal
(its conformance is asserted as no response plus connection survival). Code 0 is
reserved.</t>
          <table>
            <name>Error/Alert code registry</name>
            <thead>
              <tr>
                <th align="left">Code</th>
                <th align="left">Name</th>
                <th align="left">Reaction</th>
                <th align="left">Condition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">(reserved)</td>
                <td align="left">--</td>
                <td align="left">Reserved; <bcp14>MUST NOT</bcp14> be sent.</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">unexpected_message</td>
                <td align="left">fatal</td>
                <td align="left">A frame not legal for the current state (<xref target="handshake-state-machine"/> total default): out-of-order, wrong-flight, repeated, an application frame before ESTABLISHED, an unsolicited acknowledgement (a KEY_UPDATE_ACK / MASTER_RATCHET_ACK / REKEM_ACK / CLOSE_ACK for which the endpoint has no outstanding corresponding request), or an effecting frame in ESTABLISHED_READONLY.</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">decrypt_failed</td>
                <td align="left">fatal</td>
                <td align="left">A handshake AEAD open, CertVerify signature, or Finished MAC failed to verify at WAIT_SA or WAIT_CA (<xref target="handshake-state-machine"/>) -- a fatal handshake authentication failure. In an ESTABLISHED keyed session an AEAD-open failure is NOT decrypt_failed: it is a silently-dropped, counted record whose association survives (<xref target="record-layer-drops"/>).</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">replay_detected</td>
                <td align="left">discard</td>
                <td align="left">A frame's sequence number was below the replay window or already recorded within it (Replay, <xref target="security-considerations"/>); the frame is dropped and counted, the connection survives.</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">unknown_channel</td>
                <td align="left">discard</td>
                <td align="left">A frame arrived on a channel the peer did not advertise during the handshake (<xref target="channel-architecture"/>); the frame is dropped and counted.</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">unknown_critical_tlv</td>
                <td align="left">fatal</td>
                <td align="left">A frame carried an unknown extension TLV with the high bit (0x8000) set (<xref target="tlv-registry"/>).</td>
              </tr>
              <tr>
                <td align="left">6</td>
                <td align="left">handshake_timeout</td>
                <td align="left">fatal</td>
                <td align="left">The handshake did not complete within the handshake-completion timer.</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">downgrade_detected</td>
                <td align="left">fatal</td>
                <td align="left">A profile or algorithm selection was not covered by the transcript the Finished MAC and CertVerify authenticate (<xref target="handshake-downgrade"/>).</td>
              </tr>
              <tr>
                <td align="left">8</td>
                <td align="left">close_incomplete</td>
                <td align="left">fatal</td>
                <td align="left">A CLOSE was not acknowledged within the CLOSE_ACK-wait timer (Authenticated Close, <xref target="security-considerations"/>).</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">key_update_out_of_order</td>
                <td align="left">fatal</td>
                <td align="left">A KeyUpdateMarker (on a KEY_UPDATE or a KEY_UPDATE_ACK) announced an epoch other than current + 1, or was malformed (<xref target="key-update"/>).</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">flow_control_error</td>
                <td align="left">fatal</td>
                <td align="left">A peer's cumulative sent-payload total exceeded the connection-level receive limit the receiver advertised via FLOW_UPDATE (<xref target="flow-control"/>).</td>
              </tr>
            </tbody>
          </table>
          <t>The code is a one-octet value (0-255), so every value is classified. Codes 11-255 are
unassigned and reserved to this specification for future core conditions. Because this
document is published through the Independent Submission stream, this registry is
normative within the document and is extended by future revisions, not by an IANA
registration action; the registration policy for any IANA-hosted mirror would be RFC
Required / First Come First Served (<xref target="RFC8126"/>), with code points assigned at
publication and never self-allocated.</t>
        </section>
      </section>
    </section>
    <section anchor="channel-architecture">
      <name>Channel Architecture</name>
      <t>N-PAMP multiplexes traffic over channels identified by a 16-bit Channel ID. Each
channel carries one class of agent traffic and has an independent
per-direction sequence space and independent traffic keys
(<xref target="cryptographic-suites"/>). A peer that has not advertised a channel during the
handshake <bcp14>MUST NOT</bcp14> receive frames on that channel; frames on an unadvertised
channel <bcp14>MUST</bcp14> be dropped.</t>
      <section anchor="channel-registry">
        <name>Core Channel Registry</name>
        <t>The following channels are defined and maintained by this specification:</t>
        <table>
          <name>Core channel registry</name>
          <thead>
            <tr>
              <th align="left">ID</th>
              <th align="left">Name</th>
              <th align="left">Purpose</th>
              <th align="left">Min Profile</th>
              <th align="left">Direction</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0000</td>
              <td align="left">Control</td>
              <td align="left">Connection control, handshake completion, capability epoch</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">Memory</td>
              <td align="left">Persistent-state create/read/update/delete and retrieval</td>
              <td align="left">Standard</td>
              <td align="left">Multi-stream</td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">Capability</td>
              <td align="left">Capability issuance, delegation, revocation, lookup</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0003</td>
              <td align="left">Identity</td>
              <td align="left">Identity resolution, attestation, presence</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0004</td>
              <td align="left">Governance</td>
              <td align="left">Policy proposals, votes, quorum closure</td>
              <td align="left">High</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0005</td>
              <td align="left">Immune</td>
              <td align="left">Anomaly reports and defensive gossip</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0006</td>
              <td align="left">Federation</td>
              <td align="left">Cross-instance synchronization and gossip</td>
              <td align="left">High</td>
              <td align="left">Multi-stream</td>
            </tr>
            <tr>
              <td align="left">0x0007</td>
              <td align="left">Settlement</td>
              <td align="left">Agent-to-agent settlement and receipts</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0008</td>
              <td align="left">Compliance</td>
              <td align="left">Attestation and regulatory export</td>
              <td align="left">High</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0009</td>
              <td align="left">Sensory</td>
              <td align="left">Bulk telemetry and low-priority observations</td>
              <td align="left">High</td>
              <td align="left">Multi-stream</td>
            </tr>
            <tr>
              <td align="left">0x000A</td>
              <td align="left">Telemetry</td>
              <td align="left">Operational metrics and health reporting</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x000B</td>
              <td align="left">Audit</td>
              <td align="left">Audit-epoch commitments and transparency-log entries</td>
              <td align="left">Sovereign</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x000C</td>
              <td align="left">Stream</td>
              <td align="left">Multiplexed full-duplex streaming (tokens, audio, video, file transfer)</td>
              <td align="left">Standard</td>
              <td align="left">Multi-stream</td>
            </tr>
            <tr>
              <td align="left">0x000D</td>
              <td align="left">Bridge</td>
              <td align="left">Encapsulation of external agent protocols within N-PAMP frames</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x000E</td>
              <td align="left">Commerce</td>
              <td align="left">Multi-party agentic commerce and payment mandates</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x000F</td>
              <td align="left">Interaction</td>
              <td align="left">Agent-to-human user-interface events</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0010</td>
              <td align="left">Discovery</td>
              <td align="left">Agent, tool, and service discovery and capability advertisement</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0011</td>
              <td align="left">Workflow</td>
              <td align="left">Multi-agent orchestration and task delegation</td>
              <td align="left">Standard</td>
              <td align="left">Bidirectional</td>
            </tr>
            <tr>
              <td align="left">0x0012</td>
              <td align="left">Knowledge</td>
              <td align="left">Retrieval queries with ranked results and provenance</td>
              <td align="left">Standard</td>
              <td align="left">Multi-stream</td>
            </tr>
            <tr>
              <td align="left">0x0013</td>
              <td align="left">Spatial</td>
              <td align="left">Physical-world state for robotics and IoT (high-frequency)</td>
              <td align="left">High</td>
              <td align="left">Multi-stream</td>
            </tr>
          </tbody>
        </table>
        <t>The Min Profile column gives the lowest profile at which a channel may be
enabled; a channel is available at that profile and at every higher profile
(for example, a "High" channel is available at High and Sovereign). The Audit
channel is enabled by default only at Sovereign; other profiles <bcp14>MAY</bcp14> enable it.
The Control and Immune channels <bcp14>SHOULD</bcp14> be scheduled at higher priority than bulk
channels (Memory, Sensory, Telemetry) during congestion.</t>
        <t>All N-PAMP channels are full-duplex: each peer maintains an independent send and
receive sequence space and independent per-direction traffic keys, so both peers
<bcp14>MAY</bcp14> transmit on a channel simultaneously. The Direction column classifies each
channel as follows:</t>
        <table>
          <name>Channel directionality</name>
          <thead>
            <tr>
              <th align="left">Direction</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Bidirectional</td>
              <td align="left">Both peers send and receive frames on a single stream.</td>
            </tr>
            <tr>
              <td align="left">Multi-stream</td>
              <td align="left">Bidirectional, and the channel <bcp14>MAY</bcp14> carry multiple concurrent logical sub-streams multiplexed within its frame payloads (for example the Stream channel's sub-streams), all over the channel's single ordered per-direction sequence.</td>
            </tr>
          </tbody>
        </table>
        <t>The Stream channel (0x000C) provides general-purpose multiplexed full-duplex
streaming, carrying concurrent bidirectional sub-streams (for example token,
audio, video, and file-transfer streams), each with independent flow control.</t>
        <t>A channel's frames for a given direction form a single ordered sequence carried over one
transport byte run (one QUIC stream, or the TCP-with-TLS byte stream); the per-(channel,
direction) sequence number is assigned by a single writer (<xref target="key-schedule"/>), and nonce
uniqueness and the replay window depend on that single monotonic sequence. This revision
therefore does NOT define a channel opening multiple concurrent transport-layer streams:
the frame header carries no per-transport-stream identifier, and splitting one channel's
frames across independently ordered transport streams would break the single-writer
sequence and risk nonce reuse. "Multi-stream" accordingly denotes payload-layer sub-stream
multiplexing (for example the NPAMP-STREAM <tt>sub_stream_id</tt>), never transport-stream
multiplexing; an implementation <bcp14>MUST</bcp14> carry each (channel, direction) as one ordered
sequence. A future revision that adds concurrent transport-stream operation <bcp14>MUST</bcp14> also
define the per-transport-stream correlation and the corresponding sequence and nonce
separation, and negotiates a new ALPN generation.</t>
        <t>Channel IDs not listed in <xref target="channel-registry"/>, and in particular the ranges
enumerated in <xref target="extension-points"/>, are reserved for extensions defined in
companion specifications.</t>
      </section>
    </section>
    <section anchor="profile-negotiation">
      <name>Profile Negotiation</name>
      <t>N-PAMP defines three security profiles. The profiles share one wire format and
differ in the cryptographic primitives and operational requirements they
mandate. Each profile is an escalation of the previous one in cryptographic
strength.</t>
      <table>
        <name>Security profiles</name>
        <thead>
          <tr>
            <th align="left">Profile</th>
            <th align="left">Code</th>
            <th align="left">Summary</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Standard</td>
            <td align="left">0x01</td>
            <td align="left">Baseline hybrid post-quantum security.</td>
          </tr>
          <tr>
            <td align="left">High</td>
            <td align="left">0x02</td>
            <td align="left">Stronger KEM parameters and stronger hash; downgrade refusal to Standard.</td>
          </tr>
          <tr>
            <td align="left">Sovereign</td>
            <td align="left">0x03</td>
            <td align="left">Highest standard-crypto strength; downgrade refusal below Sovereign.</td>
          </tr>
        </tbody>
      </table>
      <t>Profile code points 0x00 and 0x04-0xFF are reserved by this specification.</t>
      <t>The profile is offered by the client and selected by the server during the
handshake, and is carried in the handshake transcript. Because the profile is
part of the transcript that the Finished MAC covers, an attacker who strips a
profile from the offer or forces a lower selection invalidates the MAC and
aborts the handshake.</t>
      <t>The profile invariants are:</t>
      <table>
        <name>Profile invariants</name>
        <thead>
          <tr>
            <th align="left">Property</th>
            <th align="left">Standard</th>
            <th align="left">High</th>
            <th align="left">Sovereign</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Minimum KEM</td>
            <td align="left">X25519MLKEM768</td>
            <td align="left">SecP384r1MLKEM1024</td>
            <td align="left">SecP384r1MLKEM1024</td>
          </tr>
          <tr>
            <td align="left">Allowed signatures</td>
            <td align="left">Ed25519</td>
            <td align="left">Ed25519, ML-DSA-87</td>
            <td align="left">ML-DSA-87</td>
          </tr>
          <tr>
            <td align="left">KDF hash</td>
            <td align="left">SHA-256</td>
            <td align="left">SHA-384</td>
            <td align="left">SHA-384</td>
          </tr>
          <tr>
            <td align="left">Per-frame AEAD divers.</td>
            <td align="left">Off</td>
            <td align="left">On</td>
            <td align="left">On</td>
          </tr>
          <tr>
            <td align="left">Downgrade refusal</td>
            <td align="left">Off</td>
            <td align="left">Refuses Standard</td>
            <td align="left">Refuses below Sovereign</td>
          </tr>
          <tr>
            <td align="left">Mandatory key update</td>
            <td align="left">Yes</td>
            <td align="left">Yes (tighter)</td>
            <td align="left">Yes (tightest)</td>
          </tr>
        </tbody>
      </table>
      <t>The server <bcp14>MUST</bcp14> select a profile from the client's offered set. The selected
profile <bcp14>MUST</bcp14> be no lower than the server's configured minimum acceptable peer
profile. A Sovereign server with a minimum acceptable peer profile of Sovereign
completes a handshake only when the client offers Sovereign and Sovereign is
selected.</t>
      <t>A High or Sovereign endpoint <bcp14>MAY</bcp14> interoperate with a lower-profile peer for
read-only or capability-discovery operations when local policy permits, by
accepting a lower selected profile; otherwise it refuses the downgrade as shown
above.</t>
    </section>
    <section anchor="cryptographic-suites">
      <name>Cryptographic Suites</name>
      <t>All cryptographic primitives used by N-PAMP are published standards.</t>
      <section anchor="key-encapsulation-mechanisms">
        <name>Key Encapsulation Mechanisms</name>
        <table>
          <name>KEM code points</name>
          <thead>
            <tr>
              <th align="left">Code point</th>
              <th align="left">Name</th>
              <th align="left">Profiles</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x11ec</td>
              <td align="left">X25519MLKEM768</td>
              <td align="left">Standard, High</td>
            </tr>
            <tr>
              <td align="left">0x11ed</td>
              <td align="left">SecP384r1MLKEM1024</td>
              <td align="left">High, Sovereign</td>
            </tr>
          </tbody>
        </table>
        <t>Both are hybrid KEMs combining an elliptic-curve ECDH with ML-KEM <xref target="FIPS203"/>, per
<xref target="RFC10024"/>. The concatenation order is per-group: for each group
the FIPS-approved component leads the HKDF input as that group's defining
construction requires (see <xref target="SP800-56C"/>), so the two groups differ.</t>
        <t>X25519MLKEM768 (0x11ec) combines X25519 with ML-KEM-768 and is ML-KEM-first: the
shared secret is (ML-KEM-768 SS || X25519 SS); KEMShare is (ML-KEM-768 ek (1184) ||
X25519 pub (32)) = 1216 octets; KEMCiphertext is (ML-KEM-768 ct (1088) || server
X25519 pub (32)) = 1120 octets. The suite name lists X25519 first, but the bytes are
ML-KEM-first (<xref target="RFC10024"/> records this reversed order as historical).</t>
        <t>SecP384r1MLKEM1024 (0x11ed) combines secp384r1 (P-384) with ML-KEM-1024 and is
ECDHE-first (P-384 first): the shared secret is (ECDHE SS (48) || ML-KEM-1024 SS
(32)) = 80 octets; KEMShare is (secp384r1 pub (97) || ML-KEM-1024 ek (1568)) = 1665
octets; KEMCiphertext is (server secp384r1 pub (97) || ML-KEM-1024 ct (1568)) = 1665
octets. The secp384r1 share is the uncompressed point encoding of <xref target="RFC9846"/> Section
4.3.8.2; the ECDHE shared secret is the shared-point x-coordinate.</t>
        <t>Both feed the concatenation raw to HKDF-Extract <xref target="RFC5869"/> as input keying material.
The Sovereign profile <bcp14>MUST NOT</bcp14> accept X25519MLKEM768.</t>
      </section>
      <section anchor="authenticated-encryption">
        <name>Authenticated Encryption</name>
        <table>
          <name>AEAD code points</name>
          <thead>
            <tr>
              <th align="left">Code point</th>
              <th align="left">Name</th>
              <th align="left">Key</th>
              <th align="left">Nonce</th>
              <th align="left">Tag</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">AES-256-GCM</td>
              <td align="left">32</td>
              <td align="left">12</td>
              <td align="left">16</td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">ChaCha20-Poly1305</td>
              <td align="left">32</td>
              <td align="left">12</td>
              <td align="left">16</td>
            </tr>
          </tbody>
        </table>
        <t>AES-256-GCM is used as specified for AEAD ciphers in <xref target="RFC5116"/>;
ChaCha20-Poly1305 is used as specified in <xref target="RFC8439"/>. AES-256-GCM (0x0001) is
Mandatory-To-Implement in every profile, so two conformant endpoints always share
at least one AEAD -- a non-empty <bcp14>MUST</bcp14>-support intersection for every profile x
algorithm class (the Danvers Doctrine, BCP 61). Endpoints operating at the Standard
profile <bcp14>MUST</bcp14> support AES-256-GCM and <bcp14>MAY</bcp14> additionally support ChaCha20-Poly1305.
Endpoints operating at the High and Sovereign profiles <bcp14>MUST</bcp14> support both AEAD suites
because per-frame AEAD diversification at those profiles selects between them.</t>
        <t>At High and Sovereign, per-frame AEAD diversification selects each frame's AEAD suite
deterministically from the sequence number, with no per-frame wire flag: the suite is
<tt>AEADSelect[seq mod N]</tt>, where AEADSelect is the negotiated ordered list of selectable
suites (primary first) and N is its length. Both peers derive the same suite from the
shared per-(channel, direction) sequence number. Consequently AEADSelect (TLV 0x0D)
carries the ordered list of selectable suites (2 octets per suite, primary first):
one suite at Standard, both at High and Sovereign. The former fixed 2-octet encoding
does not stand while two suites are selectable.</t>
      </section>
      <section anchor="signatures">
        <name>Signatures</name>
        <table>
          <name>Signature code points</name>
          <thead>
            <tr>
              <th align="left">Code point</th>
              <th align="left">Name</th>
              <th align="left">Usage</th>
              <th align="left">Profiles</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0807</td>
              <td align="left">Ed25519</td>
              <td align="left">Identity, capability tokens</td>
              <td align="left">All</td>
            </tr>
            <tr>
              <td align="left">0x0904</td>
              <td align="left">ML-DSA-44</td>
              <td align="left">Reserved (IANA TLS SignatureScheme); unused</td>
              <td align="left">--</td>
            </tr>
            <tr>
              <td align="left">0x0905</td>
              <td align="left">ML-DSA-65</td>
              <td align="left">Reserved (IANA TLS SignatureScheme); unused</td>
              <td align="left">--</td>
            </tr>
            <tr>
              <td align="left">0x0906</td>
              <td align="left">ML-DSA-87</td>
              <td align="left">Identity, audit epoch</td>
              <td align="left">High, Sovereign</td>
            </tr>
          </tbody>
        </table>
        <t>The ML-DSA code points reference the IANA TLS SignatureScheme registry
(<xref target="I-D.ietf-tls-mldsa"/>): 0x0904 = ML-DSA-44, 0x0905 = ML-DSA-65, 0x0906 = ML-DSA-87.
Ed25519 is used as specified in <xref target="RFC8032"/>. ML-DSA-87 is the module-lattice-based
digital signature algorithm standardized in <xref target="FIPS204"/>. N-PAMP negotiates only
ML-DSA-87 (0x0906) at High and Sovereign; 0x0904 and 0x0905 are listed so N-PAMP's
namespace does not shadow the IANA values. The Sovereign profile uses ML-DSA-87 for
identity and audit signatures.</t>
        <t>The hybrid-KEM construction authority <xref target="RFC10024"/> (formerly the Internet-Draft
<tt>draft-ietf-tls-ecdhe-mlkem</tt>, published August 2026) is cited directly as a published
RFC. The ML-DSA SignatureScheme code points <xref target="I-D.ietf-tls-mldsa"/> remain an active
Internet-Draft at the time of writing; on its publication as an RFC, this citation is
to be updated to the assigned RFC number.</t>
      </section>
      <section anchor="key-derivation-and-hashing">
        <name>Key Derivation and Hashing</name>
        <t>All key derivation uses HKDF <xref target="RFC5869"/>. The KDF hash is SHA-256 at the Standard
profile and SHA-384 at the High and Sovereign profiles. The HKDF-Expand-Label
construction follows TLS 1.3 <xref target="RFC9846"/>, with the literal label prefix "n-pamp "
(with the trailing space) in place of TLS 1.3's "tls13 ", providing domain
separation from TLS 1.3, from QUIC, and from earlier N-PAMP versions. A conforming
implementation <bcp14>MUST</bcp14> use the "n-pamp " prefix; use of the "tls13 " prefix is
non-conformant. The full key-schedule ladder is specified in <xref target="key-schedule"/>.</t>
      </section>
      <section anchor="key-schedule-and-nonces">
        <name>Key Schedule and Nonces</name>
        <t>Traffic secrets are derived per (direction, epoch, AEAD suite, channel) tuple, so
that no two distinct contexts share a key. Each traffic secret yields an AEAD
key and an AEAD initialization vector by HKDF-Expand-Label; N-PAMP derives no
separate header-protection key, because header protection is provided by the secure
transport. The per-frame nonce is the AEAD IV exclusive-ORed with the
left-zero-padded sequence number, identical in form to the construction used in
TLS 1.3 <xref target="RFC9846"/> and QUIC <xref target="RFC9001"/>. This namespace partitioning prevents
cross-direction, cross-suite, and cross-channel nonce reuse, and supports forward
secrecy: on key update, traffic secrets for the new epoch are derived afresh and
the prior epoch's secrets are zeroized.</t>
        <t>Within a single (direction, epoch, AEAD suite, channel) key, sequence-number
assignment <bcp14>MUST</bcp14> be atomic and single-writer: each frame <bcp14>MUST</bcp14> be sealed under exactly
the sequence number it was assigned, so that a multi-threaded sender cannot reuse a
sequence number, and therefore a nonce, under one key. An endpoint <bcp14>MUST</bcp14> perform a
key update before the negotiated AEAD's usage limit is reached, and <bcp14>MUST NOT</bcp14> let the
sequence space wrap within an epoch; a key update begins a new epoch with fresh
secrets (see the key-update procedure). Cross-(direction, epoch, suite, channel)
reuse is structurally prevented by the key separation above; this rule covers the
remaining intra-key case.</t>
      </section>
      <section anchor="random-number-generation">
        <name>Random Number Generation</name>
        <t>All randomness that participates in security <bcp14>MUST</bcp14> come from a cryptographically
secure random number generator. Implementations <bcp14>MUST NOT</bcp14> use a non-cryptographic
source for any field that participates in security.</t>
      </section>
    </section>
    <section anchor="handshake">
      <name>Handshake</name>
      <t>The N-PAMP handshake is a 1.5-RTT, mutually-authenticated exchange of four frames
on the Control channel (0x0000, sequence 0), after which both peers are
authenticated and a forward-secure key schedule is established. It reuses TLS 1.3
<xref target="RFC9846"/> constructions (HKDF-Expand-Label, CertificateVerify, Finished) with
N-PAMP framing and context; each divergence from TLS 1.3 is noted inline in the
relevant subsection below. One construction serves all three profiles; a profile
selects a parameter row (see <xref target="profile-negotiation"/> and <xref target="cryptographic-suites"/>),
so H and HashLen below are read from the negotiated profile.</t>
      <section anchor="message-flow">
        <name>Message Flow</name>
        <table>
          <name>Handshake flights</name>
          <thead>
            <tr>
              <th align="left">Flight</th>
              <th align="left">Frame</th>
              <th align="left">Type</th>
              <th align="left">TLVs (in order)</th>
              <th align="left">Encryption</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">1</td>
              <td align="left">CLIENT_HELLO</td>
              <td align="left">0x0100</td>
              <td align="left">ProfileOffer, KEMOffer, SigOffer, AEADOffer, KEMShare</td>
              <td align="left">cleartext</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">SERVER_HELLO</td>
              <td align="left">0x0101</td>
              <td align="left">ProfileSelect, KEMSelect, SigSelect, AEADSelect, KEMCiphertext</td>
              <td align="left">cleartext</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">SERVER_AUTH</td>
              <td align="left">0x0102</td>
              <td align="left">IdentityKey, CertVerify, Finished</td>
              <td align="left">AEAD-sealed</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">CLIENT_AUTH</td>
              <td align="left">0x0103</td>
              <td align="left">IdentityKey, CertVerify, Finished</td>
              <td align="left">AEAD-sealed</td>
            </tr>
          </tbody>
        </table>
        <t>There is no separate Finished frame; the Finished MAC is a TLV inside each AUTH
frame. Each frame is a standard 36-octet N-PAMP frame (<xref target="wire-format"/>) on channel
0x0000 with sequence 0; the AUTH frames set FlagENC and are AEAD-sealed
(<xref target="auth-frame-sealing"/>). A server reaches the Established state only after it has
verified CLIENT_AUTH; the master secret is derived at the client-authentication
boundary.</t>
        <t>All four handshake frames use sequence number 0 -- the exception to the general
per-(channel, direction) monotonic sequence rule (<xref target="wire-format"/>). Each direction
AEAD-seals at most one handshake frame (SERVER_AUTH server-to-client and CLIENT_AUTH
client-to-server; the HELLO frames are cleartext), so sequence 0 is sealed at most
once per direction under the handshake key and no (key, nonce) pair repeats. The
monotonic per-(channel, direction) sequence space of the keyed session begins at
sequence 0 of epoch 0, which starts when the handshake completes.</t>
      </section>
      <section anchor="handshake-state-machine">
        <name>State Machine</name>
        <t>The handshake and the keyed session form one state machine per endpoint. The
per-state transition rules and the total default in this section are normative; the
diagram is informative (following the <xref target="RFC9293"/> Section 3.10 model, in which the
event-by-state processing rules bind and a summary diagram does not). Each state is
named for what the endpoint is waiting for. Every frame that can arrive in a state is
either listed with its transition below or is covered by the total default; there is
no state in which an unexpected frame is silently ignored.</t>
        <t>An endpoint plays one role, fixed when the connection is set up: the initiator sends
CLIENT_HELLO first, and the responder waits for it. The two roles have distinct
handshake states and converge on the shared keyed-session states ESTABLISHED,
CLOSING, and CLOSED.</t>
        <table>
          <name>Protocol states</name>
          <thead>
            <tr>
              <th align="left">Role</th>
              <th align="left">State</th>
              <th align="left">Waiting for</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">initiator</td>
              <td align="left">START</td>
              <td align="left">(initial) about to send CLIENT_HELLO</td>
            </tr>
            <tr>
              <td align="left">initiator</td>
              <td align="left">WAIT_SH</td>
              <td align="left">SERVER_HELLO</td>
            </tr>
            <tr>
              <td align="left">initiator</td>
              <td align="left">WAIT_SA</td>
              <td align="left">SERVER_AUTH (handshake keys already derived from SERVER_HELLO)</td>
            </tr>
            <tr>
              <td align="left">responder</td>
              <td align="left">LISTEN</td>
              <td align="left">(initial) CLIENT_HELLO</td>
            </tr>
            <tr>
              <td align="left">responder</td>
              <td align="left">WAIT_CA</td>
              <td align="left">CLIENT_AUTH (SERVER_HELLO and SERVER_AUTH already sent)</td>
            </tr>
            <tr>
              <td align="left">both</td>
              <td align="left">ESTABLISHED</td>
              <td align="left">application frames on any open channel (keyed)</td>
            </tr>
            <tr>
              <td align="left">both</td>
              <td align="left">CLOSING</td>
              <td align="left">CLOSE_ACK (this endpoint has sent CLOSE)</td>
            </tr>
            <tr>
              <td align="left">both</td>
              <td align="left">CLOSED</td>
              <td align="left">(terminal)</td>
            </tr>
          </tbody>
        </table>
        <artwork><![CDATA[
(informative)
initiator: START --send CLIENT_HELLO-->
           WAIT_SH --recv SERVER_HELLO--> WAIT_SA
           WAIT_SA --recv+verify SERVER_AUTH;
           send CLIENT_AUTH; key master--> ESTABLISHED
responder: LISTEN --recv CLIENT_HELLO;
           send SERVER_HELLO, SERVER_AUTH--> WAIT_CA
           WAIT_CA --recv+verify CLIENT_AUTH--> ESTABLISHED
both:      ESTABLISHED --KEY_UPDATE-->
           ESTABLISHED (epoch advances in place)
           ESTABLISHED --send/recv CLOSE--> CLOSING
           --CLOSE_ACK / timeout--> CLOSED
]]></artwork>
        <t>Normative transitions -- initiator:</t>
        <ul spacing="normal">
          <li>
            <t>START: the endpoint sends CLIENT_HELLO and moves to WAIT_SH. No frame is legal to
receive in START.</t>
          </li>
          <li>
            <t>WAIT_SH: on SERVER_HELLO, the endpoint checks that every selection is one it offered
(a stripped or downgraded selection is additionally caught by the transcript binding
of the Finished MAC and CertVerify, Downgrade Protection), derives the handshake
traffic keys, and moves to WAIT_SA.</t>
          </li>
          <li>
            <t>WAIT_SA: on SERVER_AUTH -- which <bcp14>MUST</bcp14> carry exactly IdentityKey, CertVerify, and
Finished, in that order -- the endpoint verifies the CertVerify signature and the
Finished MAC; on success it sends CLIENT_AUTH, derives the master secret, and moves
to ESTABLISHED. There is no CLIENT_AUTH acknowledgement frame; the initiator is
ESTABLISHED once CLIENT_AUTH is sent.</t>
          </li>
        </ul>
        <t>Normative transitions -- responder:</t>
        <ul spacing="normal">
          <li>
            <t>LISTEN: on CLIENT_HELLO, the endpoint selects the profile and algorithms from the
offer, sends SERVER_HELLO and the AEAD-sealed SERVER_AUTH, and moves to WAIT_CA. No
other frame is legal in LISTEN.</t>
          </li>
          <li>
            <t>WAIT_CA: on CLIENT_AUTH -- exactly IdentityKey, CertVerify, Finished, in that order --
the endpoint verifies the CertVerify signature and the Finished MAC; on success it
reaches ESTABLISHED. The responder reaches ESTABLISHED only after it has verified
CLIENT_AUTH.</t>
          </li>
        </ul>
        <t>A failed AEAD open, CertVerify signature, or Finished MAC at either WAIT_SA or WAIT_CA
is a fatal handshake authentication failure: the endpoint <bcp14>MUST</bcp14> abort with the
registered code <tt>decrypt_failed</tt> (error registry) and derive no session keys.</t>
        <t>Normative transitions -- keyed session (both roles):</t>
        <ul spacing="normal">
          <li>
            <t>ESTABLISHED: application frames on any open channel are processed in place. A
KEY_UPDATE is processed as in the Forward Secrecy and Key Update section (the epoch
advances and a KEY_UPDATE_ACK is sent; the endpoint remains ESTABLISHED). The
record-layer control frames MASTER_RATCHET and REKEM on the Control channel (the
master-ratchet and re-KEM sub-protocol; registered in the frame-type registry) are
processed in place in the same way -- each advances the ratchet, is acknowledged, and
the endpoint remains ESTABLISHED. These REQUEST frames (KEY_UPDATE, MASTER_RATCHET,
REKEM) are legal in ESTABLISHED and are not <tt>unexpected_message</tt>. The corresponding
ACKNOWLEDGEMENT frames -- KEY_UPDATE_ACK, MASTER_RATCHET_ACK, and REKEM_ACK -- are legal
in ESTABLISHED ONLY as the confirmation of an exchange THIS endpoint initiated: an
endpoint that has sent the matching KEY_UPDATE (correlated per (channel, epoch)),
MASTER_RATCHET (per generation), or REKEM processes the acknowledgement in place with
no reaction and remains ESTABLISHED. An UNSOLICITED acknowledgement -- one for which the
endpoint has no outstanding corresponding request -- is NOT exempt from the total
default: it <bcp14>MUST</bcp14> be rejected with <tt>unexpected_message</tt> and the connection <bcp14>MUST</bcp14> be torn
down, exactly as an unsolicited CLOSE_ACK is; an endpoint <bcp14>MUST NOT</bcp14> silently ignore it.
Sending or receiving an authenticated CLOSE moves the endpoint to CLOSING
(Authenticated Close).</t>
          </li>
          <li>
            <t>CLOSING: the endpoint awaits CLOSE_ACK under the CLOSE_ACK-wait timer; on CLOSE_ACK,
or on that timer's expiry, it moves to CLOSED.</t>
          </li>
          <li>
            <t>CLOSED: terminal; no frame is processed.</t>
          </li>
        </ul>
        <t>Total default (normative): in any state, a frame not listed above for that state -- a
handshake frame arriving out of order, a frame from a later or earlier flight, a
repeated frame, an application frame before ESTABLISHED, or any frame of an unknown or
unexpected type -- <bcp14>MUST</bcp14> be treated as a fatal error with the registered code
<tt>unexpected_message</tt> (error registry), and the connection <bcp14>MUST</bcp14> be torn down. The
record-layer REQUEST frames listed above as legal for ESTABLISHED -- KEY_UPDATE and the
master-ratchet / re-KEM requests -- are "listed above for that state" and are therefore
not caught by this default; the acknowledgement frames (KEY_UPDATE_ACK,
MASTER_RATCHET_ACK, REKEM_ACK) are exempt ONLY when they confirm an exchange this
endpoint initiated -- an unsolicited acknowledgement IS caught by this default, as stated
in the ESTABLISHED transition above. The full state transitions of the master-ratchet
and re-KEM sub-protocol are given in that sub-protocol's own specification rather than in
this core state machine. An
endpoint <bcp14>MUST NOT</bcp14> silently ignore an unexpected frame and <bcp14>MUST NOT</bcp14> attempt to recover
by skipping it; "ignore" is never the reaction to an unexpected message. This is what
closes the skip / hop / repeat deviant-trace family, and the deviant-trace conformance
suite is generated from these rules.</t>
        <t anchor="record-layer-drops">The record-layer drop rule: the total default above governs
AUTHENTICATED frames -- frames that opened under the current traffic key. A frame that is
NOT authenticated is not an "unexpected message" and <bcp14>MUST NOT</bcp14> be treated as one. In an
ESTABLISHED keyed session, a frame that is not AEAD-protected (cleartext), a frame whose
AEAD tag fails to verify (forged or corrupted), and a frame at a sequence position other
than the one expected (a replay or a reorder) are each silently DROPPED and <bcp14>SHOULD</bcp14> be
counted as a security event, and the association SURVIVES: the endpoint reads the next
frame. An endpoint <bcp14>MUST NOT</bcp14> tear the association down on an unauthenticated frame, and
<bcp14>MUST NOT</bcp14> surface it to the application in a way that ends the association -- otherwise an
off-path attacker who can inject a single frame could end any association at will. This
is the same principle as the forged-CLOSE drop rule in the Security Considerations, and
the record-layer resilience of DTLS 1.3 (<xref target="RFC9147"/> Section 4.5.2, "invalid records
<bcp14>SHOULD</bcp14> be silently discarded, thus preserving the association") and QUIC (<xref target="RFC9001"/>
Section 6.6.2, "QUIC ignores any packet that cannot be authenticated"). A sequence AHEAD
of the expected value cannot arise from a conformant peer over the in-order transports
this document specifies (TCP + TLS 1.3, QUIC per-stream) and is treated as the same drop;
the retained-state bound is the replay window (Numeric Bounds; Replay in the Security
Considerations). This is distinct from a frame that fails to PARSE at the wire level (bad
magic, header CRC, or an out-of-range length): a framing failure means the byte stream is
no longer trustworthy on an in-order stream transport, so it is a fatal transport-level
error, not a survivable drop.</t>
        <t>Every named code used above -- <tt>unexpected_message</tt>, <tt>decrypt_failed</tt>, <tt>replay_detected</tt>
(Replay), <tt>unknown_critical_tlv</tt> (an unknown must-understand extension TLV),
<tt>handshake_timeout</tt> (the handshake-completion timer), and <tt>close_incomplete</tt>
(teardown) -- is defined in the core error/alert registry (<xref target="error-registry"/>), which
classifies each as fatal or discard: a fatal code appears on the wire in an ERROR
frame so that a conformance test can assert the exact code, while a discard code
(<tt>replay_detected</tt>) names a silently-dropped frame that produces no ERROR. The
negotiated profilexKEMxAEADxsignature mode fixes exactly one legal required-message
set for the AUTH frames -- there is no "mixed-mode" transition -- and the composite
negotiation machine together with the distinct bound read-only/discovery state are
specified in the negotiation state rules that follow.</t>
      </section>
      <section anchor="negotiation-state">
        <name>Negotiation and the Read-Only State</name>
        <t>The negotiable dimensions -- profile, KEM, AEAD, and signature algorithm -- are selected
together at exactly one point, the server's SERVER_HELLO. That selection fixes one
composite mode for the connection, and the mode fixes exactly one legal
required-message set for the AUTH frames and one keyed-session behaviour. There is no
transition in which two modes are mixed, and no point after SERVER_HELLO at which a
negotiable dimension is renegotiated within the connection. Because the ProfileSelect,
KEMSelect, SigSelect, and AEADSelect TLVs of SERVER_HELLO -- and the ProfileOffer,
KEMOffer, SigOffer, and AEADOffer of CLIENT_HELLO -- are absorbed into the transcript
that both the Finished MAC and CertVerify cover (<xref target="handshake-downgrade"/>), an attacker
cannot splice one mode's messages into another mode's handshake without invalidating
the MAC. This is the composite-state-machine discipline whose absence produced the
cross-protocol downgrade attacks on earlier negotiated protocols: N-PAMP standardizes
the single mode-selection point and cryptographically binds it, rather than leaving the
multiplexer for each implementation to compose differently.</t>
        <t>A High or Sovereign endpoint that accepts a lower selected profile under the read-only
/ capability-discovery policy exception (<xref target="profile-negotiation"/>) does NOT enter the
full ESTABLISHED state. It enters a distinct ESTABLISHED_READONLY state whose legal
event set is restricted to capability-discovery frames (the Discovery channel, 0x0010)
and to operations the endpoint's local policy classifies as read-only. A frame that
would effect a state change -- any frame the endpoint's policy does not classify as
read-only -- <bcp14>MUST</bcp14> be rejected in ESTABLISHED_READONLY with the registered code
<tt>unexpected_message</tt> (error registry) and <bcp14>MUST NOT</bcp14> be honored. The restriction is
cryptographically bound: the selected profile is carried in SERVER_HELLO and covered by
the transcript that Finished and CertVerify authenticate, so a peer cannot strip the
read-only restriction, nor escalate a downgraded, discovery-only association into an
effecting one, without breaking the handshake authentication. An endpoint that requires
effecting operations <bcp14>MUST NOT</bcp14> accept the downgrade; it refuses it per the profile
invariants (<xref target="profile-negotiation"/>). The precise mapping of channels and operations to
read-only versus effecting is a matter of local and companion-defined policy; the
Discovery channel (0x0010) is always read-only, and the core requirement here is that
ESTABLISHED_READONLY is a distinct, transcript-bound state that admits no effecting
frame.</t>
      </section>
      <section anchor="transcript">
        <name>Transcript</name>
        <t>The handshake transcript is a running byte buffer; a transcript hash is H over all
bytes absorbed so far. Unlike TLS 1.3 <xref target="RFC9846"/> Section 4.1, which hashes whole
handshake messages, N-PAMP absorbs at per-TLV granularity and absorbs only the
2-octet big-endian frame type of each frame: the remaining 34 header octets and the
AEAD tag are NOT absorbed. For each frame, the 2-octet frame type is absorbed,
followed by each of that frame's TLVs in canonical Type(2) || Length(2) || Value
form, in order. Five transcript hashes are named:</t>
        <table>
          <name>Handshake transcript hashes</name>
          <thead>
            <tr>
              <th align="left">Symbol</th>
              <th align="left">Absorbed through</th>
              <th align="left">Used by</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TH_kem</td>
              <td align="left">CLIENT_HELLO and SERVER_HELLO TLVs</td>
              <td align="left">handshake-secret labels</td>
            </tr>
            <tr>
              <td align="left">TH_sId</td>
              <td align="left">... server IdentityKey</td>
              <td align="left">server CertVerify signs this</td>
            </tr>
            <tr>
              <td align="left">TH_sCV</td>
              <td align="left">... server CertVerify (excludes server Finished)</td>
              <td align="left">server Finished MACs this</td>
            </tr>
            <tr>
              <td align="left">TH_cId</td>
              <td align="left">... server Finished, CLIENT_AUTH, client IdentityKey</td>
              <td align="left">client CertVerify signs this</td>
            </tr>
            <tr>
              <td align="left">TH_cCV</td>
              <td align="left">... client CertVerify (excludes client Finished)</td>
              <td align="left">client Finished MACs this; master derived from this</td>
            </tr>
          </tbody>
        </table>
        <t>Because both peers absorb the identical decoded on-wire TLV bytes, their transcripts
are byte-identical.</t>
      </section>
      <section anchor="key-schedule">
        <name>Key Schedule</name>
        <t>The key schedule is a single HKDF-Extract <xref target="RFC5869"/> followed by sibling
HKDF-Expand-Label derivations (simpler than TLS 1.3 <xref target="RFC9846"/> Section 7.1's
three-stage chain; N-PAMP defines no PSK or 0-RTT in this binding).
HKDF-Expand-Label is as in TLS 1.3 Section 7.1 with the N-PAMP label prefix
"n-pamp " (with the trailing space) in place of "tls13 ":</t>
        <artwork><![CDATA[
HKDF-Expand-Label(Secret, Label, Context, Length) =
    HKDF-Expand(Secret, HkdfLabel, Length)
HkdfLabel = uint16(Length) || opaque("n-pamp " || Label)
                           || opaque(Context)
]]></artwork>
        <t>The KEM output (<xref target="cryptographic-suites"/>) -- the per-group combined shared secret
(64 octets for X25519MLKEM768, 80 octets for SecP384r1MLKEM1024, in the per-group
order defined there) -- is fed directly as input keying material. That combined KEM
shared secret is the only secret input to the schedule: the HKDF-Extract below is
itself the hybrid combiner (a dual-PRF), and there is no separate multi-field
combiner value. The KEM public material (encapsulation keys, ciphertexts, and the
classical public key) is bound into the schedule through the transcript hash TH_kem --
the context of the c_hs/s_hs derivations -- rather than by folding it into the Extract
input:</t>
        <artwork><![CDATA[
handshake_secret = HKDF-Extract(salt = HashLen zero octets,
                                IKM = per-group combined KEM
                                shared secret)
c_hs_secret = HKDF-Expand-Label(handshake_secret,
                                "c hs", TH_kem, HashLen)
s_hs_secret = HKDF-Expand-Label(handshake_secret,
                                "s hs", TH_kem, HashLen)
master      = HKDF-Expand-Label(handshake_secret,
                                "master", TH_cCV, HashLen)
]]></artwork>
        <t>The Extract salt is HashLen zero octets (the <xref target="RFC5869"/> default). The master secret
is derived only at the client-authentication boundary, from TH_cCV. Handshake-phase
traffic keys descend from c_hs_secret and s_hs_secret; application-phase traffic
keys descend from master, using the traffic-secret construction of
<xref target="cryptographic-suites"/>. Because the parents differ, an identical
(direction, epoch, suite, channel) tuple yields different (key, iv) across the
handshake and application phases, so no (key, nonce) pair is shared across phases.</t>
      </section>
      <section anchor="authentication">
        <name>Authentication</name>
        <section anchor="certverify">
          <name>CertVerify</name>
          <t>The CertVerify TLV (0x0A) carries a signature over the transcript, structured as in
TLS 1.3 <xref target="RFC9846"/> Section 4.5.2 with N-PAMP context strings:</t>
          <artwork><![CDATA[
signing_input = (0x20 x 64) || context || 0x00 || transcript_hash
context (server) = "N-PAMP/3, server CertificateVerify"
context (client) = "N-PAMP/3, client CertificateVerify"
]]></artwork>
          <t>The context strings are fixed protocol constants (they are the values bound into
the reference implementations and the interoperability test vectors) and do not
change with the Internet-Draft revision number. The signed transcript_hash is TH_sId
(server) or TH_cId (client): the transcript through the signer's own IdentityKey,
before its own CertVerify. The TLV value is the 2-octet SignatureScheme (Ed25519 =
0x0807) followed by the signature, whose length is delimited by the TLV Length. A
verifier <bcp14>MUST</bcp14> reject a signature scheme it did not negotiate and <bcp14>MUST</bcp14> check the
role: the differing context string makes a server CertVerify unusable as a client
CertVerify.</t>
        </section>
        <section anchor="finished">
          <name>Finished</name>
          <t>The Finished TLV (0x0B) carries an HMAC per TLS 1.3 <xref target="RFC9846"/> Section 4.5.3, keyed
by the sender's handshake traffic secret:</t>
          <artwork><![CDATA[
finished_key = HKDF-Expand-Label(BaseKey, "finished", "", HashLen)
verify_data  = HMAC(finished_key, transcript_hash)
]]></artwork>
          <t>BaseKey is c_hs_secret or s_hs_secret per direction; the HMAC hash is H. The MAC'd
transcript_hash is TH_sCV (server) or TH_cCV (client): the transcript through the
signer's own CertVerify, excluding its own Finished. The verify_data length is
HashLen. Verification <bcp14>MUST</bcp14> be constant-time and <bcp14>MUST</bcp14> abort on mismatch.</t>
        </section>
        <section anchor="auth-frame-sealing">
          <name>AUTH-Frame Sealing</name>
          <t>SERVER_AUTH and CLIENT_AUTH are sealed with the negotiated AEAD under the
per-direction handshake key and IV (<xref target="key-schedule"/>): FlagENC is set, Channel is
0x0000, and Seq is 0. The AAD is the 21-octet frame header prefix and the nonce is
the IV exclusive-ORed with the sequence number, as in <xref target="cryptographic-suites"/>. On
open, exactly three TLVs -- IdentityKey, CertVerify, Finished, in that order -- <bcp14>MUST</bcp14>
be present.</t>
        </section>
        <section anchor="handshake-downgrade">
          <name>Downgrade Protection</name>
          <t>The negotiated profile and algorithm selections are carried in the cleartext
CLIENT_HELLO and SERVER_HELLO and are absorbed into the transcript that both the
Finished MAC and CertVerify cover. Stripping a profile from an offer, or forcing a
lower selection, therefore invalidates the Finished MAC and aborts the handshake.
N-PAMP uses this transcript binding for downgrade protection rather than a
TLS-style ServerHello.Random sentinel.</t>
        </section>
      </section>
    </section>
    <section anchor="extension-points">
      <name>Extension Points</name>
      <t>N-PAMP reserves code-point ranges for extensions defined in companion
specifications. The core protocol in this document neither defines nor requires
any extension; it only reserves the ranges below so that extensions can be
specified without colliding with the core wire format. The algorithms and
semantics that occupy these ranges are out of scope for this document and are
defined in companion specifications.</t>
      <section anchor="reserved-frame-type-ranges">
        <name>Reserved Frame-Type Ranges</name>
        <t>All companion frame-type reservations lie within the companion-extension band
0x0030-0x00FF defined in <xref target="frame-types"/>, and each is scoped to a specific
channel. The following per-channel frame-type code points are reserved for
extensions defined in companion specifications:</t>
        <table>
          <name>Reserved frame-type ranges (companion specifications)</name>
          <thead>
            <tr>
              <th align="left">Range</th>
              <th align="left">Channel</th>
              <th align="left">Reserved for</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0030 - 0x0034</td>
              <td align="left">Stream (0x000C)</td>
              <td align="left">Stream-channel sub-stream lifecycle and flow-control extension frames</td>
            </tr>
            <tr>
              <td align="left">0x0035 - 0x0036</td>
              <td align="left">Memory (0x0001)</td>
              <td align="left">Memory-channel eviction and revive extension frames</td>
            </tr>
            <tr>
              <td align="left">0x0060 - 0x0063</td>
              <td align="left">Capability (0x0002)</td>
              <td align="left">Capability-channel token extension frames</td>
            </tr>
            <tr>
              <td align="left">0x0080 - 0x0080</td>
              <td align="left">Control (0x0000)</td>
              <td align="left">Control-channel flow-extension frames</td>
            </tr>
            <tr>
              <td align="left">0x0090 - 0x0090</td>
              <td align="left">Audit (0x000B)</td>
              <td align="left">Audit-channel per-frame integrity-extension frames</td>
            </tr>
            <tr>
              <td align="left">0x00A0 - 0x00A3</td>
              <td align="left">Settlement/Audit (0x0007/0x000B)</td>
              <td align="left">Settlement/Audit batch-commitment extension frames</td>
            </tr>
            <tr>
              <td align="left">0x00B0 - 0x00B4</td>
              <td align="left">Governance (0x0004)</td>
              <td align="left">Governance-channel quorum extension frames</td>
            </tr>
            <tr>
              <td align="left">0x00C0 - 0x00C4</td>
              <td align="left">Immune (0x0005)</td>
              <td align="left">Immune-channel propagation extension frames</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="reserved-tlv-tags">
        <name>Reserved TLV Tags</name>
        <t>The TLV types 0x0010, 0x0012, and 0x0013 are reserved for extension TLVs defined
in companion specifications; all three are assigned (0x0010 BridgeEnvelope, 0x0012
OpaqueContentType, 0x0013 SafetyLabel -- <xref target="tlv-registry"/>). TLV type 0x0014 remains
reserved for a companion specification but is fixed at 32 octets and handshake-only,
so it cannot carry a variable-length extension value. TLV types in the range
0x8000-0xFFFF remain reserved as forward-incompatible extension points per
<xref target="wire-format"/>.</t>
      </section>
      <section anchor="reserved-channel-id-range">
        <name>Reserved Channel-ID Range</name>
        <t>Channel IDs in the range 0x0014-0xFFFF are reserved. Channels 0x0014-0x001F are
reserved for future core additions by this specification; 0x0020-0xEFFF are
reserved for extension channels defined in companion specifications; 0xF000-0xFFFE
are GREASE values that receivers <bcp14>MUST</bcp14> ignore; and 0xFFFF <bcp14>MUST NOT</bcp14> appear on the
wire. The specific extension assignments are out of scope for this document.</t>
        <t>No algorithms, parameters, or semantics for any reserved range are defined in
this document.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="alpn-protocol-identifier">
        <name>ALPN Protocol Identifier</name>
        <t>IANA is requested to register the following value in the "TLS Application-Layer
Protocol Negotiation (ALPN) Protocol IDs" registry established by <xref target="RFC7301"/>:</t>
        <table>
          <name>ALPN registration (n-pamp/3)</name>
          <thead>
            <tr>
              <th align="left">Protocol</th>
              <th align="left">Identification Sequence</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">N-PAMP, crypto generation 3</td>
              <td align="left">0x6E 0x2D 0x70 0x61 0x6D 0x70 0x2F 0x33 ("n-pamp/3")</td>
              <td align="left">(this document)</td>
            </tr>
          </tbody>
        </table>
        <t>The identification sequence is the 8-octet UTF-8 string "n-pamp/3". The trailing
digit "3" is the N-PAMP crypto generation -- the cryptographic construction (hybrid
combiner order, KEM and signature code points). It is an axis independent of the
wire-format version: the Ver nibble 0x2 in the frame header (<xref target="wire-format"/>)
identifies the frame layout and is invariant across generations. A raw frame is not
generation-self-describing; the generation is fixed by ALPN negotiation, or by
explicit configuration where frames are exchanged without TLS. The registration
policy for the ALPN registry is Expert Review <xref target="RFC8126"/>.</t>
        <t>The earlier identifiers "n-pamp/1" and "n-pamp/2" are deprecated. Implementations
<bcp14>SHOULD NOT</bcp14> negotiate them for new associations. "n-pamp/2" is the prior crypto
generation, defined by an earlier revision of this document and superseded by
generation 3. Each new crypto generation uses a distinct ALPN identifier (a future
generation would use "n-pamp/4").</t>
      </section>
      <section anchor="uri-scheme-registration">
        <name>URI Scheme Registration</name>
        <t>The "npamp" URI scheme has been provisionally registered in the "Uniform Resource
Identifier (URI) Schemes" registry, following the template and the
provisional-registration procedure (First Come First Served) of <xref target="RFC7595"/>, under
an earlier version of this document; IANA is requested to update its reference to
the current version. The registration template follows:</t>
        <t><strong>Scheme name:</strong> npamp</t>
        <t><strong>Status:</strong> Provisional</t>
        <t><strong>Applications/protocols that use this scheme:</strong> The protocol defined in this
document (N-PAMP). An "npamp" URI names an N-PAMP endpoint and an optional
resource path within that endpoint.</t>
        <t><strong>URI scheme syntax:</strong> The "npamp" scheme uses the generic URI syntax of
<xref target="RFC3986"/>:</t>
        <sourcecode type="abnf"><![CDATA[
npamp-URI = "npamp://" authority path-abempty [ "?" query ]
]]></sourcecode>
        <t>where "authority", "path-abempty", and "query" are as defined in <xref target="RFC3986"/>. The
"authority" component identifies the N-PAMP endpoint (host and optional port).
N-PAMP does not reserve a fixed default port; the underlying transport is
negotiated as described in <xref target="protocol-overview"/>.</t>
        <t><strong>Encoding considerations:</strong> "npamp" URIs are processed as defined in
<xref target="RFC3986"/>; non-ASCII characters in the path or query components are
percent-encoded UTF-8 octets.</t>
        <t><strong>Interoperability considerations:</strong> None beyond those of <xref target="RFC3986"/>. The scheme
carries no protocol semantics of its own; all behavior is defined by N-PAMP.</t>
        <t><strong>Security considerations:</strong> See <xref target="security-considerations"/>. An "npamp" URI is
only an identifier. Connecting to an "npamp" endpoint invokes the N-PAMP
handshake and its authentication, confidentiality, and downgrade protections;
dereferencing an "npamp" URI <bcp14>MUST NOT</bcp14> bypass the security profile negotiated by
N-PAMP.</t>
        <t><strong>Contact:</strong> Shawn Sammartano, BubbleFish Technologies, Inc.</t>
        <t><strong>Change controller:</strong> Shawn Sammartano, BubbleFish Technologies, Inc.</t>
        <t><strong>Reference:</strong> This document.</t>
      </section>
      <section anchor="registries-maintained-by-this-specification">
        <name>Registries Maintained by This Specification</name>
        <t>The N-PAMP channel registry (<xref target="channel-registry"/>), the frame-type registry
(<xref target="frame-types"/>), the TLV type registry (<xref target="tlv-registry"/>), and the error/alert code
registry (<xref target="error-registry"/>) are defined and maintained within this specification. Because this document is published through
the Independent Submission stream, it does not request the creation of new
IANA-hosted registries for these code points; the registries are normative within
this document and are extended by companion specifications and by future
revisions of this document, not by IANA registration actions.</t>
      </section>
      <section anchor="tlv-registry">
        <name>TLV Type Registry</name>
        <t>The following TLV tags are defined by this specification. Tags marked "reserved"
are described in <xref target="extension-points"/>.</t>
        <table>
          <name>TLV type registry</name>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Name</th>
              <th align="left">Length</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x01</td>
              <td align="left">ProfileOffer</td>
              <td align="left">var</td>
              <td align="left">Profiles offered by the client, one octet per profile (handshake only).</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">ProfileSelect</td>
              <td align="left">1</td>
              <td align="left">Profile selected by the server (handshake only).</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">KEMOffer</td>
              <td align="left">var</td>
              <td align="left">KEMs offered by the client.</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">KEMSelect</td>
              <td align="left">2</td>
              <td align="left">KEM selected by the server.</td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">SigOffer</td>
              <td align="left">var</td>
              <td align="left">Signature algorithms offered.</td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">SigSelect</td>
              <td align="left">2</td>
              <td align="left">Signature algorithm selected.</td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">KEMShare</td>
              <td align="left">var</td>
              <td align="left">Public KEM share.</td>
            </tr>
            <tr>
              <td align="left">0x08</td>
              <td align="left">KEMCiphertext</td>
              <td align="left">var</td>
              <td align="left">KEM encapsulation ciphertext.</td>
            </tr>
            <tr>
              <td align="left">0x09</td>
              <td align="left">IdentityKey</td>
              <td align="left">var</td>
              <td align="left">Sender's identity public key (handshake AUTH; see <xref target="handshake"/>).</td>
            </tr>
            <tr>
              <td align="left">0x0A</td>
              <td align="left">CertVerify</td>
              <td align="left">var</td>
              <td align="left">Signature over the transcript (handshake AUTH; see <xref target="handshake"/>).</td>
            </tr>
            <tr>
              <td align="left">0x0B</td>
              <td align="left">Finished</td>
              <td align="left">var</td>
              <td align="left">HashLen-octet Finished MAC (handshake AUTH; see <xref target="handshake"/>).</td>
            </tr>
            <tr>
              <td align="left">0x0C</td>
              <td align="left">AEADOffer</td>
              <td align="left">var</td>
              <td align="left">AEAD suites offered by the client (handshake only).</td>
            </tr>
            <tr>
              <td align="left">0x0D</td>
              <td align="left">AEADSelect</td>
              <td align="left">Var (2*N)</td>
              <td align="left">Ordered list of the server-selected AEAD suites, primary first (2 octets per suite; N=1 at Standard, N=2 at High/Sovereign for per-frame diversification). Handshake only.</td>
            </tr>
            <tr>
              <td align="left">0x10</td>
              <td align="left">(reserved)</td>
              <td align="left">var</td>
              <td align="left">Reserved for a companion specification.</td>
            </tr>
            <tr>
              <td align="left">0x12</td>
              <td align="left">OpaqueContentType</td>
              <td align="left">var</td>
              <td align="left">Full IANA media-type string for opaque carriage, when the payload's media type is not one of the BridgeEnvelope content_type enumerated values (companion specification NPAMP-CC-OPAQUE).</td>
            </tr>
            <tr>
              <td align="left">0x13</td>
              <td align="left">(reserved)</td>
              <td align="left">var</td>
              <td align="left">Reserved for a companion specification.</td>
            </tr>
            <tr>
              <td align="left">0x14</td>
              <td align="left">(reserved)</td>
              <td align="left">32</td>
              <td align="left">Reserved for a companion specification (handshake only).</td>
            </tr>
            <tr>
              <td align="left">0x15</td>
              <td align="left">(reserved)</td>
              <td align="left">--</td>
              <td align="left">Reserved; path validation uses the PATH_CHALLENGE / PATH_RESPONSE frames (0x0008 / 0x0009), not a TLV.</td>
            </tr>
            <tr>
              <td align="left">0x16</td>
              <td align="left">(reserved)</td>
              <td align="left">--</td>
              <td align="left">Reserved; see 0x15.</td>
            </tr>
            <tr>
              <td align="left">0x17</td>
              <td align="left">KeyUpdateMarker</td>
              <td align="left">8</td>
              <td align="left">Key-update epoch marker.</td>
            </tr>
            <tr>
              <td align="left">0x18</td>
              <td align="left">ProtectionMode</td>
              <td align="left">1</td>
              <td align="left">Reserved; no defined values (header protection provided by the secure transport).</td>
            </tr>
            <tr>
              <td align="left">0x8000-0xFFFF</td>
              <td align="left">(reserved)</td>
              <td align="left">--</td>
              <td align="left">Forward-incompatible extension points (Type high bit set).</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section follows the spirit of <xref target="RFC3552"/>. N-PAMP inherits the security
properties of its underlying transports, TLS 1.3 <xref target="RFC9846"/> and QUIC
<xref target="RFC9001"/>, and adds the considerations below.</t>
      <section anchor="hybrid-key-establishment">
        <name>Hybrid Key Establishment</name>
        <t>Every profile uses a hybrid KEM that concatenates an ML-KEM shared secret with an
X25519 shared secret <xref target="FIPS203"/> (ML-KEM first) before key derivation. The confidentiality of an
association is preserved as long as at least one of the two components remains
unbroken; an adversary must defeat both the classical and the post-quantum
component to recover traffic keys. N-PAMP makes no claim of unconditional or
"quantum-proof" security; it provides post-quantum hybrid security against the
adversaries addressed by its component primitives.</t>
      </section>
      <section anchor="downgrade-unknown-key-share-and-identity-substitution">
        <name>Downgrade, Unknown-Key-Share, and Identity Substitution</name>
        <t>The negotiated profile, KEM, signature algorithm, AEAD suite(s), and both peer
identities are bound into the handshake transcript and confirmed by the Finished
MAC (<xref target="protocol-overview"/>, <xref target="profile-negotiation"/>). Altering any negotiated
parameter, stripping a profile from the offer, or substituting a peer identity
invalidates the Finished MAC and aborts the handshake. The High and Sovereign
profiles additionally refuse to complete at a profile below their configured
minimum.</t>
      </section>
      <section anchor="authenticated-encryption-and-nonce-management">
        <name>Authenticated Encryption and Nonce Management</name>
        <t>All payloads are protected by AEAD <xref target="RFC5116"/>. Traffic keys are partitioned per
(direction, epoch, suite, channel), which structurally prevents nonce reuse
across directions, AEAD suites, and channels. AEAD tag verification <bcp14>MUST</bcp14> be
performed before any payload is processed, and equality comparisons of
authentication values <bcp14>MUST</bcp14> be constant-time to avoid timing side channels.</t>
      </section>
      <section anchor="replay">
        <name>Replay</name>
        <t>Each (channel, direction) pair maintains a sliding replay window over sequence
numbers. The window width <bcp14>SHALL</bcp14> be at least 64 (a floor grounded in the min-32 /
preferred-64 precedent of RFC 4303); the <bcp14>RECOMMENDED</bcp14> default is 1024 for multi-core
receivers, and a receiver <bcp14>MAY</bcp14> choose a larger window. A frame whose sequence number
is below the window, or already recorded within it, <bcp14>MUST</bcp14> be dropped as a replay (the
frame is discarded and counted, the connection survives) with the registered error
code (<tt>replay_detected</tt>); in-window out-of-order arrival
is NOT a replay and <bcp14>MUST</bcp14> be accepted. The window check-and-record -- testing whether
a sequence number has been seen and marking it seen -- <bcp14>MUST</bcp14> be atomic per (channel,
direction), so that a duplicate cannot slip through under concurrent receive.</t>
        <t>This binding defines no 0-RTT / early-data mechanism: there is no PSK or 0-RTT stage
in the key schedule (<xref target="key-schedule"/>), and no frame, TLV, or key derivation carries
early data. There is therefore no early-data replay surface; all application data is
protected under the post-handshake epoch keys and covered by the replay window above.</t>
      </section>
      <section anchor="key-update">
        <name>Forward Secrecy and Key Update</name>
        <t>Endpoints <bcp14>MUST</bcp14> perform key updates within profile-specific bounds on elapsed
time, frames sent, and bytes protected, with the tightest bounds at the Sovereign
profile; the concrete per-profile numeric bounds are given in the numeric-bounds
section. On key update, the prior epoch's traffic secrets <bcp14>MUST</bcp14> be zeroized so
that compromise of the current epoch does not expose previously protected
traffic. Key update rotates only the per-epoch traffic secrets derived from the
existing master secret; rotation of the master secret itself requires a fresh
handshake.</t>
        <section anchor="the-keyupdate-exchange">
          <name>The KEY_UPDATE exchange</name>
          <t>Key update is scoped to a single (channel, direction): a KEY_UPDATE rotates only
the initiating endpoint's send direction on the named channel, and each
(channel, direction) pair carries its own independent epoch counter. An epoch is a
monotonically increasing 64-bit index that starts at 0 when the handshake
completes; the sequence-number space resets to 0 at the start of each epoch, so
the (direction, epoch, suite, channel) tuple that keys the AEAD (see the key
schedule, <xref target="key-schedule"/>) changes at every epoch boundary.</t>
          <t>To rotate its send key on a channel, an endpoint:</t>
          <ol spacing="normal" type="1"><li>
              <t>Seals a KEY_UPDATE control frame (frame type 0x0006) under the CURRENT epoch's
send key, carrying exactly one KeyUpdateMarker TLV (0x17) -- an 8-octet
big-endian value equal to the NEXT epoch index (current + 1) -- and no other
TLV. This is the last frame protected under the current epoch.</t>
            </li>
            <li>
              <t>After emitting the KEY_UPDATE frame, derives the next epoch's send secrets,
zeroizes the retired epoch's send secrets, and resets its send sequence number
to 0. Every subsequent frame on that (channel, send direction) <bcp14>MUST</bcp14> be
protected under the new epoch, beginning at sequence 0.</t>
            </li>
          </ol>
          <t>A receiver that opens a KEY_UPDATE frame:</t>
          <ol spacing="normal" type="1"><li>
              <t><bcp14>MUST</bcp14> verify the frame carries exactly one KeyUpdateMarker TLV of 8 octets whose
value equals its current receive epoch + 1. A KEY_UPDATE whose marker is
malformed (absent, not the sole TLV, or not 8 octets) or announces any epoch
other than current + 1 <bcp14>MUST</bcp14> be rejected with the registered error code
<tt>key_update_out_of_order</tt> (see the error/alert registry) and the association
<bcp14>MUST</bcp14> be torn down; a receiver <bcp14>MUST NOT</bcp14> skip or reorder epochs.</t>
            </li>
            <li>
              <t>On a valid marker, derives the next epoch's receive secrets, zeroizes the
retired epoch's receive secrets, and replies with a KEY_UPDATE_ACK control
frame (frame type 0x0007) on its own send direction, sealed under its own
current send epoch and carrying a KeyUpdateMarker for the epoch just adopted.
KEY_UPDATE_ACK is a confirmation signal only: an initiator <bcp14>MUST NOT</bcp14> wait for
KEY_UPDATE_ACK before protecting frames under its new send key, and the absence
of KEY_UPDATE_ACK <bcp14>MUST NOT</bcp14> be treated as a failure of the initiator's own
already-completed send-side rotation.</t>
            </li>
          </ol>
          <t>A receiver that opens a KEY_UPDATE_ACK frame correlates it against the KEY_UPDATE it
sent on that (channel, direction). A KEY_UPDATE_ACK whose KeyUpdateMarker is malformed
(the same cases as for a KEY_UPDATE -- absent, not the sole TLV, or not 8 octets) <bcp14>MUST</bcp14> be
rejected with <tt>key_update_out_of_order</tt>: the marker is the same TLV on either frame. A
well-formed KEY_UPDATE_ACK that acknowledges no KEY_UPDATE the receiver actually sent --
an unsolicited acknowledgement -- <bcp14>MUST</bcp14> be rejected with <tt>unexpected_message</tt> (State
Machine total default), exactly as an unsolicited CLOSE_ACK is. A KEY_UPDATE_ACK that
correctly confirms an outstanding KEY_UPDATE is processed with no reaction. Correlation
is by (channel, announced epoch); because KEY_UPDATE may be pipelined, more than one
acknowledgement may be outstanding on a (channel, direction) at once, and acknowledgements
need not arrive in the order the updates were sent.</t>
        </section>
        <section anchor="epoch-boundary-and-the-drain-rule">
          <name>Epoch boundary and the drain rule</name>
          <t>The KEY_UPDATE frame is the epoch boundary: it is the final frame protected under
the old epoch and it names the new one. Two invariants keep the boundary
unambiguous and prevent an in-flight frame from being lost or opened under the
wrong keys:</t>
          <ul spacing="normal">
            <li>
              <t>Send-side invariant: an endpoint <bcp14>MUST NOT</bcp14> protect any frame bearing a sequence
number higher than its KEY_UPDATE frame's under the old epoch's secrets. Because
sequence-number assignment on a (channel, direction) is atomic and
single-writer (see the key-schedule and nonce rules), the KEY_UPDATE frame is by
construction the highest-sequence frame of its epoch, so no later frame can be
sealed under the retired secrets.</t>
            </li>
            <li>
              <t>Receive-side drain rule: a receiver <bcp14>MUST</bcp14> retain the old epoch's receive secrets
until it has opened the KEY_UPDATE frame that closes that epoch, and <bcp14>MUST NOT</bcp14>
apply the new epoch's receive secrets to any frame that precedes the KEY_UPDATE
boundary. Over a transport that delivers each (channel, direction) in order --
the transports specified by this document -- the KEY_UPDATE frame is the last
old-epoch frame, so every old-epoch frame has already been opened when the
boundary is reached, and the old receive secrets are zeroized at that point.
Over a transport that may reorder frames across the boundary, a receiver <bcp14>MUST</bcp14>
retain the old epoch's receive secrets until a frame of the new epoch has been
successfully opened -- a window bounded by the replay window so that retention is
finite -- and then zeroize them, so that an old-epoch frame arriving after the
KEY_UPDATE is still opened rather than dropped.</t>
            </li>
          </ul>
          <t>In both cases the retired secrets are zeroized, not merely released, once they can
no longer be needed. This preserves forward secrecy: a later compromise of the
current epoch's secrets recovers no traffic protected under any prior epoch.</t>
        </section>
      </section>
      <section anchor="flow-control">
        <name>Connection-Level Flow Control</name>
        <t>A receiver bounds how much a peer may send it, connection-wide, with the FLOW_UPDATE
control frame (<tt>0x000A</tt>). This is the connection-level tier of a two-level flow-control
model that a Multi-stream channel companion composes with its own per-sub-stream credit
(for example NPAMP-STREAM's STREAM_WINDOW_UPDATE): the credit a sender may consume at any
instant is the smaller of the connection-level limit defined here and any per-sub-stream
limit a companion defines.</t>
        <t>FLOW_UPDATE is an all-channel control frame carried on the Control channel (<tt>0x0000</tt>). Its
body is exactly one 8-octet big-endian unsigned integer -- the sender's new connection-level
receive limit: the maximum cumulative count of frame-payload octets (the octets after each
36-octet header, i.e. the frame body and its 16-octet AEAD tag) that the FLOW_UPDATE
recipient <bcp14>MAY</bcp14> have transmitted across all application channels since the connection was
established. Frames on the Control channel (<tt>0x0000</tt>) -- the handshake, KEY_UPDATE,
FLOW_UPDATE, CLOSE, PING, and the master ratchet -- are exempt and never count against the
limit, so a full application-data window can never starve the essential control exchange (a
sender can always send a KEY_UPDATE, a CLOSE, or a FLOW_UPDATE of its own). The body is
AEAD-sealed like any keyed frame; a FLOW_UPDATE whose body is not exactly 8 octets is
malformed and is rejected with <tt>unexpected_message</tt>.</t>
        <t>The limit only increases. A FLOW_UPDATE whose value is less than or equal to the current
effective limit does not lower it and has no other effect (it <bcp14>MAY</bcp14> be re-sent to re-assert a
limit). A limit is never reduced on the wire; to slow a peer, a receiver withholds further
FLOW_UPDATE frames.</t>
        <t>The limit is per direction: each peer advertises its own receive limit and independently
tracks the other peer's advertised limit against its own cumulative send total. Before the
first FLOW_UPDATE in a direction, the effective limit is the fixed initial connection window
in <xref target="numeric-bounds"/>.</t>
        <t>A sender <bcp14>MUST NOT</bcp14> transmit an application-channel frame that would push its cumulative
sent-payload total above the current limit; it waits for a FLOW_UPDATE that raises the limit (a transfer larger than
the current window, including a single large frame, therefore requires the receiver to grant
credit first). A receiver that observes a peer's cumulative received-payload total exceed the
limit it advertised <bcp14>MUST</bcp14> treat it as <tt>flow_control_error</tt> (fatal, <xref target="error-registry"/>) and
tear the connection down -- the violation is computable by both sides from the same sealed
frames. Flow control bounds volume only; sequence numbers, the replay window, and frame
ordering are unaffected.</t>
        <t>This revision defines the connection-level mechanism and its wire frame. A reference
implementation of FLOW_UPDATE emission and enforcement, with conformance vectors, is tracked
for the implementation-completeness phase.</t>
      </section>
      <section anchor="numeric-bounds">
        <name>Numeric Bounds and Timers</name>
        <t>This section collects the operational limits an implementation <bcp14>MUST</bcp14> enforce so that
two builds agree on accept/reject and no length or count is a resource-exhaustion
surface. Every bound carries a named rejection.</t>
        <table>
          <name>Size and count bounds</name>
          <thead>
            <tr>
              <th align="left">Bound</th>
              <th align="left">Value</th>
              <th align="left">On violation</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Maximum frame size (header + payload)</td>
              <td align="left">16 MiB (2^24 octets)</td>
              <td align="left">Rejected at parse time (before the frame is opened); a keyed receiver <bcp14>MAY</bcp14> report <tt>unexpected_message</tt> before teardown. The base parser and the SDK enforce this same cap.</td>
            </tr>
            <tr>
              <td align="left">Maximum TLV count per frame</td>
              <td align="left">64</td>
              <td align="left">Reject the frame (<tt>unexpected_message</tt>).</td>
            </tr>
            <tr>
              <td align="left">Maximum CBOR nesting depth (bodies)</td>
              <td align="left">8</td>
              <td align="left">Reject the body as malformed (<tt>unexpected_message</tt>).</td>
            </tr>
            <tr>
              <td align="left">Replay-window width</td>
              <td align="left">64 floor, 1024 default (Replay)</td>
              <td align="left">Below-window or duplicate is a <tt>replay_detected</tt> discard.</td>
            </tr>
            <tr>
              <td align="left">Connection-level initial receive window</td>
              <td align="left">1 MiB (2^20 octets) per direction</td>
              <td align="left">A sender exceeding it before a FLOW_UPDATE (<xref target="flow-control"/>) raises the limit is a <tt>flow_control_error</tt>.</td>
            </tr>
          </tbody>
        </table>
        <t>The maximum frame size is a receiver-side hardening applied before a frame is opened:
because the Payload Length field is a 32-bit value (up to roughly 4 GiB), a receiver
<bcp14>MUST</bcp14> reject a frame whose declared total size exceeds 16 MiB before waiting to buffer
it, so a hostile length cannot pin the reader.</t>
        <t>Key-update triggers are per profile. An endpoint <bcp14>MUST</bcp14> perform a key update before the
earliest of these bounds is reached, and always before the negotiated AEAD's usage
limit (<xref target="cryptographic-suites"/>); the bounds tighten with the profile:</t>
        <table>
          <name>Per-profile key-update triggers</name>
          <thead>
            <tr>
              <th align="left">Profile</th>
              <th align="left">Max elapsed time</th>
              <th align="left">Max frames per epoch</th>
              <th align="left">Max bytes per epoch</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Standard</td>
              <td align="left">7 days</td>
              <td align="left">2^24</td>
              <td align="left">2^40</td>
            </tr>
            <tr>
              <td align="left">High</td>
              <td align="left">1 day</td>
              <td align="left">2^22</td>
              <td align="left">2^36</td>
            </tr>
            <tr>
              <td align="left">Sovereign</td>
              <td align="left">1 hour</td>
              <td align="left">2^20</td>
              <td align="left">2^32</td>
            </tr>
          </tbody>
        </table>
        <t>These are ceilings; an implementation <bcp14>MAY</bcp14> update sooner. They sit within the AEAD
confidentiality and integrity limits (<xref target="RFC9846"/> Section 5.5), so a key is retired
well before its safety margin.</t>
        <t>Each timer is a normative block with all six slots plus an explicit clock granularity.
The granularity is 1 ms for every timer, so two implementations differ by at most one
tick on any comparison.</t>
        <t>Handshake completion:</t>
        <ul spacing="normal">
          <li>
            <t>Initial: profile-set (e.g. 10 s). Floor: 1 s. Ceiling: 60 s.</t>
          </li>
          <li>
            <t>Start: on CLIENT_HELLO. Stop / restart: on ESTABLISHED.</t>
          </li>
          <li>
            <t>On expiry: abort with <tt>handshake_timeout</tt>.</t>
          </li>
        </ul>
        <t>Idle / liveness:</t>
        <ul spacing="normal">
          <li>
            <t>Initial: profile-set. Floor: none. Ceiling: none.</t>
          </li>
          <li>
            <t>Start: last frame sent or received. Stop / restart: any frame (restart).</t>
          </li>
          <li>
            <t>On expiry: send a keepalive (PING) or CLOSE.</t>
          </li>
        </ul>
        <t>Key-update-due:</t>
        <ul spacing="normal">
          <li>
            <t>Initial: per-profile bounds above. Floor: none. Ceiling: tightest at Sovereign.</t>
          </li>
          <li>
            <t>Start: epoch start. Stop / restart: on completing a KEY_UPDATE.</t>
          </li>
          <li>
            <t>On expiry: trigger a key update.</t>
          </li>
        </ul>
        <t>CLOSE_ACK-wait:</t>
        <ul spacing="normal">
          <li>
            <t>Initial: profile-set. Floor: 1 s. Ceiling: 60 s.</t>
          </li>
          <li>
            <t>Start: on sending CLOSE. Stop / restart: on receiving CLOSE_ACK.</t>
          </li>
          <li>
            <t>On expiry: force teardown, record <tt>close_incomplete</tt>.</t>
          </li>
        </ul>
        <t>(Protocol timers; clock granularity 1 ms for every timer.)</t>
      </section>
      <section anchor="anti-amplification-and-reflection">
        <name>Anti-Amplification and Reflection</name>
        <t>N-PAMP's post-quantum handshake is large and asymmetric: a server's first
authentication flight carries the KEMCiphertext (up to 1665 octets at the Sovereign
profile), the server IdentityKey (an ML-DSA-87 public key is 2592 octets), and the
CertVerify signature (an ML-DSA-87 signature is 4627 octets), so it can be several
times the size of the client's opening HELLO. An attacker that spoofs a victim's
source address could therefore attempt to use an N-PAMP responder as a
reflection/amplification vector against that victim.</t>
        <t>N-PAMP does not define its own address-validation mechanism; it relies on the
address validation of its underlying transport, and <bcp14>MUST NOT</bcp14> be deployed over an
unvalidated datagram transport that provides none.</t>
        <ul spacing="normal">
          <li>
            <t>Over QUIC <xref target="RFC9000"/>, the transport's anti-amplification limit applies before
N-PAMP's authentication flight can reach an unvalidated peer: prior to validating
the client address, a server <bcp14>MUST NOT</bcp14> send more than three times as many bytes as
it has received from that address (<xref target="RFC9000"/>, Section 8.1). Because a
Sovereign-profile authentication flight can exceed that budget, QUIC's own address
validation (a Retry token, <xref target="RFC9000"/> Section 8.1) gates the large response: it
flows only to an address that has already been validated.</t>
          </li>
          <li>
            <t>Over TCP with TLS 1.3, the peer's address is validated by the TCP three-way
handshake before any N-PAMP frame is exchanged, so a responder never sends an
authentication flight to an unvalidated address.</t>
          </li>
        </ul>
        <t>Deployments therefore rely on the transport's address validation rather than on the
first flight fitting within an unvalidated-address budget; an operator <bcp14>MUST NOT</bcp14> carry
N-PAMP over a transport that omits address validation.</t>
      </section>
      <section anchor="connection-migration">
        <name>Connection Migration</name>
        <t>When carried over QUIC, an endpoint <bcp14>MUST</bcp14> validate a peer's new path with a
challenge-response exchange before accepting an address change, to prevent off-path
migration spoofing. The exchange uses the PATH_CHALLENGE (0x0008) and PATH_RESPONSE
(0x0009) control frames; path validation is carried by these frames only, never by a
TLV.</t>
      </section>
      <section anchor="authenticated-close">
        <name>Authenticated Close</name>
        <t>The acknowledged CLOSE / CLOSE_ACK teardown, its timer, and in-flight-frame
disposition are specified in the CLOSE Frame section. CLOSE and CLOSE_ACK are
AEAD-protected and <bcp14>MUST</bcp14> be verified before being honored, so that an off-path attacker
cannot tear down an association with a forged CLOSE.</t>
      </section>
      <section anchor="sec-extension-points">
        <name>Extension Points</name>
        <t>The reserved code-point ranges in <xref target="extension-points"/> carry no algorithms or
semantics in this document. Any security properties of extensions occupying those
ranges are the responsibility of the companion specifications that define them and
are out of scope here.</t>
      </section>
      <section anchor="implementation-considerations">
        <name>Implementation Considerations</name>
        <t>Where the wire format requires deterministic encoding, implementations <bcp14>MUST</bcp14> follow
the Deterministic Encoding Profile (<xref target="det-encoding"/>) so that identical inputs
produce byte-identical output; non-deterministic or non-conformant encodings can
invalidate transcript and integrity computations across peers.</t>
      </section>
    </section>
  </middle>
  <back>
<references anchor="sec-normative-references">
        <name>Normative References</name>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
            <front>
              <title>Key words for use in RFCs to Indicate Requirement Levels</title>
              <author fullname="S. Bradner" initials="S." surname="Bradner"/>
              <date month="March" year="1997"/>
              <abstract>
                <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
          </reference>
          <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
            <front>
              <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
              <author fullname="B. Leiba" initials="B." surname="Leiba"/>
              <date month="May" year="2017"/>
              <abstract>
                <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC5116">
          <front>
            <title>An Interface and Algorithms for Authenticated Encryption</title>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms. The interface and registry can be used as an application-independent set of cryptoalgorithm suites. This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5116"/>
          <seriesInfo name="DOI" value="10.17487/RFC5116"/>
        </reference>
        <reference anchor="RFC5869">
          <front>
            <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
            <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="May" year="2010"/>
            <abstract>
              <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5869"/>
          <seriesInfo name="DOI" value="10.17487/RFC5869"/>
        </reference>
        <reference anchor="RFC7301">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC7595">
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <author fullname="T. Hardie" initials="T." surname="Hardie"/>
            <date month="June" year="2015"/>
            <abstract>
              <t>This document updates the guidelines and recommendations, as well as the IANA registration processes, for the definition of Uniform Resource Identifier (URI) schemes. It obsoletes RFC 4395.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="35"/>
          <seriesInfo name="RFC" value="7595"/>
          <seriesInfo name="DOI" value="10.17487/RFC7595"/>
        </reference>
        <reference anchor="RFC8032">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8439">
          <front>
            <title>ChaCha20 and Poly1305 for IETF Protocols</title>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a "combined mode", or Authenticated Encryption with Associated Data (AEAD) algorithm.</t>
              <t>RFC 7539, the predecessor of this document, was meant to serve as a stable reference and an implementation guide. It was a product of the Crypto Forum Research Group (CFRG). This document merges the errata filed against RFC 7539 and adds a little text to the Security Considerations section.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8439"/>
          <seriesInfo name="DOI" value="10.17487/RFC8439"/>
        </reference>
        <reference anchor="RFC9846">
          <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="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9001">
          <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="FIPS203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="FIPS" value="203"/>
        </reference>
        <reference anchor="FIPS204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology (NIST)</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="FIPS" value="204"/>
        </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 (NIST)</organization>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-56C Rev. 2"/>
        </reference>
        <reference anchor="RFC10024">
          <front>
            <title>Post-Quantum Traditional (PQ/T) Hybrid Key Agreement Mechanisms for TLS 1.3</title>
            <author fullname="K. Kwiatkowski" initials="K." surname="Kwiatkowski"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <author fullname="D. Stebila" initials="D." surname="Stebila"/>
            <date month="August" year="2026"/>
            <abstract>
              <t>This document defines three hybrid key agreement mechanisms for TLS 1.3 -- X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024 -- that combine the post-quantum ML-KEM (Module-Lattice-Based Key Encapsulation Mechanism) with an ECDHE (Ephemeral Elliptic Curve Diffie-Hellman) exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="10024"/>
          <seriesInfo name="DOI" value="10.17487/RFC10024"/>
        </reference>
        <reference anchor="I-D.ietf-tls-mldsa">
          <front>
            <title>Use of ML-DSA in TLS 1.3</title>
            <author fullname="Tim Hollebeek" initials="T." surname="Hollebeek">
              <organization>DigiCert</organization>
            </author>
            <author fullname="Sophie Schmieg" initials="S." surname="Schmieg">
              <organization>Google</organization>
            </author>
            <author fullname="Bas Westerbaan" initials="B." surname="Westerbaan">
              <organization>Cloudflare</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This memo specifies how the post-quantum signature scheme ML-DSA
   (FIPS 204) is used for authentication in TLS 1.3.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-mldsa-05"/>
        </reference>
      </references>
    <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. 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="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC9147">
          <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>
      </references>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author thanks the reviewers of earlier N-PAMP drafts for their feedback.</t>
    </section>
    <section numbered="false" anchor="changes-since-draft-bubblefish-npamp-01">
      <name>Changes Since draft-bubblefish-npamp-01</name>
      <t>This revision is editorial and makes no change to the wire format; no code point
is added, removed, or renumbered, and every draft-01 implementation remains
conformant.</t>
      <ul spacing="normal">
        <li>
          <t>Frame-type namespace. Restates the frame-type namespace description in
<xref target="frame-types"/> as an explicit four-band partition (0x0000-0x000A all-channel
reserved; 0x000B-0x002F reserved for future core additions; 0x0030-0x00FF the
companion-extension band; 0x0100-0xFFFF channel-specific application frame
types), resolving an inconsistency in draft-01 between the "begin at 0x0100"
statement and the companion reserved ranges that sit below 0x0100. A frame type
has always been interpreted within its channel, scoped by the Channel ID field
of the frame header; this revision states that partition explicitly. No code
point moves.</t>
        </li>
        <li>
          <t>Stream reserved range. Reserves frame-type range 0x0030-0x0034 for the Stream
channel (0x000C) in the companion-extension band (<xref target="extension-points"/>); this
gives a forthcoming Stream companion a reserved home for sub-stream lifecycle and
flow-control extension frames. The range is reserved for a companion
specification, and this document defines no frame within it.</t>
        </li>
        <li>
          <t>Reserved-range table. Adds a Channel column to the Reserved Frame-Type Ranges
table (<xref target="extension-points"/>), making each range's owning channel explicit.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="changes-since-draft-bubblefish-npamp-00">
      <name>Changes Since draft-bubblefish-npamp-00</name>
      <t>This revision makes the following changes relative to draft-bubblefish-npamp-00:</t>
      <ul spacing="normal">
        <li>
          <t>Hybrid KEM combiner order (wire-breaking). The hybrid shared-secret concatenation
order is per-group, placing the FIPS-approved component first per NIST SP 800-56C
Rev. 2 (see <xref target="SP800-56C"/>) to match <xref target="RFC10024"/>: X25519MLKEM768 is
ML-KEM-first (ML-KEM_SS || X25519_SS) and SecP384r1MLKEM1024 is ECDHE-first
(ECDHE_SS || ML-KEM_SS). This replaces the X25519-first order of draft-00, changes
the derived keys, and is NOT interoperable with draft-00.</t>
        </li>
        <li>
          <t>Handshake binding. Adds the normative 1.5-RTT mutually-authenticated handshake
(<xref target="handshake"/>): the four-frame flow, the per-TLV transcript, the single
HKDF-Extract key schedule with the "n-pamp " label prefix, CertVerify, Finished,
AUTH-frame sealing, and downgrade protection.</t>
        </li>
        <li>
          <t>Handshake code points. Assigns the Control-channel handshake frame types
0x0100-0x0103 and the handshake TLV tags 0x09-0x0D (IdentityKey, CertVerify,
Finished, AEADOffer, AEADSelect).</t>
        </li>
        <li>
          <t>ProfileOffer length. Corrects the ProfileOffer (TLV 0x01) length from a fixed 4 to a
variable list of one-octet profile identifiers, matching the other negotiation
offers and the reference implementations.</t>
        </li>
        <li>
          <t>ALPN identifier and versioning (wire-breaking). The crypto generation is carried by
the ALPN identifier, now "n-pamp/3", decoupled from the wire-format version (the Ver
nibble, which stays 0x2). Because the CertVerify context string tracks the crypto
generation, it moves to "N-PAMP/3, {server,client} CertificateVerify" and every
CertVerify signature and downstream transcript point changes. "n-pamp/2" (the prior
generation) is deprecated; IANA is requested to register "n-pamp/3". The "npamp" URI
scheme is unchanged (it carries no version token; the generation is negotiated via
ALPN).</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA8y9aXcbV5I2+P3+ihzqgwAVkuImWiJfdw9FUhaPtbBJ2n7r
9OmRkkCSzFcAEoVMSGJL7t8+8cRylwQgqbqq54y7ywaBzLvGjRvrE3meu7Zq
x+VBtvEmPz96fX6QvSna6mOZnddNm//bopi2i0l2dFtO2+x12TTFbTW9zc7n
dVsP6/GGK66v5+VHeovfdqN6OC0m1NxoXty0+fXi+npc3lTNXT6dFZNZvrXj
hkVb3tbz+4Osmt7UrprND7J2vmjana2tZ/R7s7ieVE1T1dOr+1mJp0blrKR/
TVtXzMviIDu6uHIjauUg29na2XfuQ3n/qZ6PDlyW5dkM4/6bjJu/KDD2hj+2
82LazOp5y38dvTp/41zTFtPRu2JcT6m9+7Jxs+og+3ea3SBr6Ml5edPQp/sJ
PvyHc8Wivavn3BX9L6PRNQfZ5WZ2WUwmxZzaqvlrWYTLu+LTtPtTPb89yJ7z
wryghcmuyuHdtB7Xt1VJPZ1Nh5v82IPsovzbopqXo4OsyGh+H2jhB9nrt2/O
rt5enJ5k5aSoxlnvuhzXn/qb2dnlaTas5/OSJojFGpaDrL0rs7PTqxfa4LCe
3oyrYZvRjlXlp0FGM8+Ofrt6ufc0u6mmxTifzev6JivG4+y2zlr6/7uqyYrR
iFptNrMjXtxirM3p9xk98vb86uztm6NX2YK6nmfDBY2DCObixXF2Oqraep7N
5sWwrYYl90lv1JOqbctRdlfOS5kwz+cgEzop+a3/O9DPZnPn3LSeT5g6sf7P
j8+39/CBenmyvb1vH5/uP9OPP+1ubevH3WdP7YGfnjx7oh+fbu3u2Me9XXvt
2dM9e/bpsz3/7dbWVvjI7b44O7/c2do94OHbMXpdjxbjMn9VtJhu/rxoaJa/
lvf56XRYzJrFmCZQT+ksDe+KadVMsksQYDEfbXAzgb7wTy7U8obfKcZEHQ31
s2jLjLbJXmx4TT0Z3We9N2eXV31uwh+TPf6zKedEZTh31gPmgAd2/Xz2fmA+
J9VtRYSQXVa306JdzMv/n8wCv1+eP93ayp/sH6fzuCiH9WRCfETW/4ZoErty
Qm19tC2hQdM4qqnsF5H69ZhIbwJSvhzelZOy+Z+d3la+9VQGXcxvy/Ygu2vb
WXPw+PGwmQ83iVrazdv64+PZ4rp53Mwe0zwfP9l/PHw833nM53fN6qAnYkaz
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
jObttJQNhjATiVhsA+BJrhY+v81kI905E9056M0guey4nn7EsuOKQktMwhX/
LfcN2CNs0k228fq3y6uNgfwXhxmfL05Jor84PcHny5dHr175D06fuHz59rdX
J+FTePP47evXp29O5GX6Nku+chvElzZkDTfMLLuBWyI5BCI21LhbmYeRrNTy
OXemdrKC9+XL/8VmVlJDeqx+7GxvPyNpTP96uv3THv4Cf9N7a0rnRf6kM3MP
Kacs5mgKRmUSJ2E2xBbTvX8HQhP7r3v071ie/zjI/tf1cLa99y/6BWadfGkL
l3zJC7f8zdLLspIrvlrRjV/S5PvOcqfjPfpr8rctfvTl//rXMThdvv30X//F
gY68keAtkRds8tmXB8bb8lq/+zOWO830FVhgdkrP3fvDmBq3+A0RU8K5dOvP
JTaWjWgi1EDwzv6Trjgw3gkkrJVn1enZzMJpBS+appwzD0JFDmaTB5tOzpdE
Dye+71jlmYuxQJRemPf//HMzYybUMO1GF4rXzmjs+jmPLSOsPbDmRvMmNYo+
3EFUnybyBGSHEc1cul3if0dTLzOmWoYXpIwB0whGzV3xoWSRgm6b7c3oochU
pkawv6gFjA5EMRftkA7joXM7m4GjseraURuhrIrlLGu8Hb4Y39b00N3EzmNp
WwdjMBZYRXPqYHcz2aAmu66JM0JiaTAVNCpqLjN44gqzVsQkIsGRKA2B5aL5
WYENavE+OvfNmSmlggwMe4bb2ySpdS6q6rdES6LdeqKbFkl3g3S70LddY/S2
UEh93RZQGjaFI0eXg18/zAArH+xx8l1Yzs4vrinHQt9hJXtNf7B2ujwSsL7r
egFNaMpOtdJFRBLWlqV0aLbziRHTC7pWmLQmbBEv4w1jGZpUBtd7fXTch3uO
ZIe8mub0RC62N5Vqx7ol98kq2GaBQFhXZadF43AwzPRVTT+Shj1i6sDK+PFQ
l3L2r0nVld/8nA7lrqkaWTI+ywvI9yPVWYpbKNaQbz9N6WYe0VYsph+m9FcO
uwMfBF5TZwPJ/QAx66Jti+EHOvAN3fpfvtjByJnFjfRSb+jcB5WdrdRdMxoa
AMmNEnPvwD+yjctN7MWZ2otdai9eMhUnlrvYbLxJaoiQyLBooHNgbSL5ORjU
ad2ibVo0ZmKB7Tjiv9wTXJzUk2nBbqVlGYyxKqbFyvV5kP0BtfaFKLFfHsTc
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
jWYnXIJHunIfjAAkfMUbYjqT0oOcsFqaiHe257gDvr8R36MarB1GIgu1ariy
M/4Z9N0ZqspmKskNNH0he89utneSkwnhHpTU88iEfLyIIy2dzZXncLMveUPE
evIjai6kzoAHXZQ3CoBuIOEPuxlu/vzB9sMaL99Dzf1kUqIu7YEvX/GwEa22
m0WjbmoT1cWlFiMG6N2/vb//xNtQ18R+9+Oy8wlyQE/SJE8uj/KnP8VoATTu
nSfPLDk9YKK4Tt1FSY9LmwnfUyt7+zs/hVY8kiusVQ1WvBhzzLua3CGEmL2d
s/IfinwEglBecxTqmYvy38zq+ga8moGgJw8bp1Bcmj8I8W08imwNqFYLOykQ
zXBleXQvenpWi7cG0clzv8+Pi4QIRNWM7KrAS+TON90SRJXoyd4SpYPKo/xs
ryxrfV+OfFPMU5tD9Pg3knJTzzIn8JCUXkNVkjKzU7fwOXsjzqSgozDpujp9
2qZwUvdIXKLI680sr3cLGYiJVxh2OByYdK3UHjeTeD65eV2W+XOzjuynIsJJ
+E8YMsw7B+pIo/2LytBnEdXYKg9ClZgQ5wj+HUJwBDZZSJB1KroAtBIv3KLq
5LcLw0wxhe/CBBBdEZNAnm5u9wO2T0Et+VPp2f/6qXvbFLJ6F6NbFOzA6j9M
aMhlMVn0CmJMwLphsPJBvFHJqLJbn68pnEmovikRpwNHMCePS8JELcnGMlEe
zZI33m/NppHJ1fG53O6aH66ZIWaplcaqJrzpCwvRi1L+k8R1GkngolF6oh4v
rz15aE6V98IZVu9FKaYchFmsXG+ZZExjOkYi/BM+PQIqHNsq2Zm2TP3LZzX2
dOuJFkOzRSFpvLmKvulAcmtQSOBQAAdhW4rjQzk61bhOvTJ0oRYb1NLwuk5o
UvpuDQ3zD0QAeIejHf8k0UBDvHW4wfYKf6GHQSTapw0aQ0EscyO14DaynWUj
l4Kkeb7NjwywQxbCVd/c5GjaTWykwv7pTbHp+IbXgV4ouoVESyf4F66neBep
17VZBtSIqtxfW5mLG3P9oVy5kB6kdYfUhBVJyMeQVsSSEIXtaXgjyUQhzDFI
OozUIGqCqEIayyYAMG5U0VI0lYgp8zKK0VGlStp+oZKwxTfyl1KSyLoEwCA7
3UIQQ5xTqSW/vC1D4ufuauB4j9JAEd0uf2M7tRCwXZwN4cU0jle3gG9q16+G
LN+Kmi00h3xF3ZaruwhRf7loyxpoLsWVn9YJPNQ8Km3SrdMCUeQ+QeyLYDOi
0hxSDUWySrDpUUEUMZLwmaj+38rOradtIIjC7/wKi6dEsqMkhBaB+lCFVlRq
ESJSX6skOMVqKCgJUAnx3ztzzsxekriXpwrVGa+9673M5TuGaQzZBi2sNEvf
wp5CE3MQZtgBnutcxfeWQ4G3oCL4zK0dicZLjMaod2+ltfTrjdLWDX9Z7pxP
MTQIHkEg6Dz7XcBmulNE1kyxXLk9ddL5qIki2FA9RJmnBim3JK5NhZgEzbyV
SLhWJ7/FBjah3VC+SagF2xiG6FywUIzh6UxRUvW65aVWVVXMZDQrrOV9+HaZ
cftyyiBLffPucDFdrmt3FxKDioXghwe5lOOgnjBUnxHI65tH1SEMNL5mVSxk
O6D3BFl+bCVjE+Qk4NpqBlLjolnfVqTA9gdtjUmDOLqA3jSynjQGC4nED06j
FqVOBgdoO5EOqEnRMmHrh7+q72ShuCl5wvZ7WwUhDldsa3+w7RVyyEnsM33P
JuuDqg7kAT8gknGtx0Xfwiz2XGIcPiIeGl35t2CQllYeHDYLOS9UM6QKO7nB
1VsqpkOlSTnI6HPyEKVScNXwYy7ksVeQ4azIpYSYK9emO4SrB5FG5AjMUECc
5qpwFSioedEtEQ5aPtmaqudisbsW63NNW4hdMas3z7XVUx6i+AtFlrjvoSYb
6ssOTMd8bso1EWxyWjcudU0jkU+gLcO+bh1dsigzls/3YVV77kXDBOhYy8Ya
WNslRhENusUPCp8zUx79GefqMNDDkGGYyTrZR4DS0S7vvQKLy4WOZXNfIP0s
f9ae06fWO4IxaQ8fjUKJEM1oZ3s6kAso/UV8CrDRnfWqyycUe98bRr7lRptb
MaI9bm2OPTWN7b9VUPiCbJe9Ok12CGhVajK2N54V73g/zkzHTrp2uQ8hTRZO
qAUWm/D+Z+Y2LVe8F0LjMpoUJDUN42Cuse6fPlH9QRKsoIGW11nq1IeaVj11
4oY8bQH37FpTNl7+Yxru/8s0zFkXYzgwSb0wmNUnT5iKW28C19xF5GHl0hBF
B9IMM+lqfURLr3IMEwhYiUa0MbTYg/w903ioe14WD8vp3ItklZdVySy0uudu
ywFNPOVoGOPyk2wNJlfFiUxjx2/GYvO6fuoVQ1YUvLxMrux/dBcgzwh9TZ5e
ZfIYjl5fTwvCur58lkd7++aECcvEc1WGUeRf3yYTVUHm5fIHd/ly+r06Ohmt
BjCAeKdqMYzPLz7w52Ktgz/t98GYJ8Ei1jm3LqJ1uzHfj0xANp/2S+84c0g4
VkDrR0pPNdNzWyJXvDQtYrehYz+68I3wYQMf0asQlBj0jsHuuHtksVaqTl4n
Qkr6hDku89SG26PzI/WT96P6qgKcLtG3pndOM3jElGnUUnY9I4WEUJjJLhSH
xRIqUhQKbRHnFJNQUnUnPURT28Ha+etJQMXyilDosk7TL0PqVHQnxNVIeyks
sfLPUVjk4tUBDqzk1Qo80E6b4KiYi5KjAUJaJvhQhBMyhu/StJTHrFqzU2t6
RUeboO3reqCVIp2WdzaCDwPeIEpiBRipfIuWHes+p0RZpOSn5l8yE+oSkhgW
1gVCtfZOWjW49Zm2dTn0RyYGobfYOwXtqn1kR2v7hLYsa+b/c6K0o8XI83sF
MUR4R7FHyobpxl9RTk8xm0jd0r1I/9ewm+K461wwNZOgThIRTR2lKFJ9lMb2
D9oziXD6C52RJb2Ur3sU1ONmWSzu9bX7V2Erd3KE4b7Fpp9MzqXD6HSDKuLY
zi7x/K4g06L6EaSmtsWNEpi9rvWm862eaVfL6TQxgiFLvHfEhiBDbVTe9UlY
/qnREQ1Vqt7BbwcLjtWuZAEA

-->

</rfc>
