<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-henry-pqst-overview-00" ipr="trust200902" submissionType="IETF" consensus="false" xml:lang="en" sortRefs="true" symRefs="true" tocInclude="true">
<front>
<title abbrev="PQST Overview">Post-Quantum Secure Transport (PQST): Overview and Reading Guide</title>
<seriesInfo name="Internet-Draft" value="draft-henry-pqst-overview-00"/>
<author fullname="Clayton Henry" initials="C." surname="Henry"><address><email>clay@viaforge.ai</email></address></author>
<date year="2026" month="November" day="2"/>
<area>Security</area>
<keyword>post-quantum</keyword><keyword>transport</keyword><keyword>overview</keyword>
<abstract><t>PQST (Post-Quantum Secure Transport) is a post-quantum native session-primary datagram transport for secure tunnels without classical public key cryptography, hybrid key exchange, or classical fallback. The cryptographic session is the persistent object, the network path is a replaceable carrier, and a session can be re-anchored on a new path, after a restart, or after the loss of every path, with fresh post-quantum key material and without the session, its authorization, or the peers' authenticated identities changing. The cohort layer of PQST applies the same idea one level up: a group whose members' sessions move, sleep, recover and re-key independently while the group's membership changes only on security events. 

This document is a non-normative overview of, and reading guide to, the specifications of those two layers. It defines no wire format, no behaviour, and no requirements. The core protocol is proposed as the basis for Standards Track work; the cohort layer is Experimental. The author is seeking a working-group home for the core protocol and implementation experience with both layers.</t></abstract>
</front>
<middle>
<section anchor="sec-1"><name>Introduction</name>
<t>This document specifies nothing. Where any statement in it appears to conflict with "Post-Quantum Secure Transport" <xref target="PQST"/> or "The Cohort Layer of Post-Quantum Secure Transport" <xref target="PQST-COHORT"/>, those documents govern. Words such as "must" and "required" in this document are ordinary English or are summaries of statements in those documents; they are not requirements of this document.</t>
<section anchor="sec-1-1"><name>Why This Document Exists</name>
<t>The core PQST specification is a large implementation-oriented draft proposed for review: a handshake, a data plane, path management, dormancy and crash-consistent recovery, authorization, a state-object mechanism, and the registries and invariants that hold them together, specified in one place. We recognize that the time commitment that we are asking of readers is a substantial one, and this document exists as a quick overview so that you can rapidly decide whether the problem and/or design are relevant to IETF or of interest to you.</t>
<t>In this document, you will find the problem, the design's five commitments, one session's life, the security model with its qualifications explicitly stated, the costs, the evidence, the limits, and a map to the parts of the specifications written for each kind of reader.</t>
</section>
<section anchor="sec-1-2"><name>The Document Family</name>
<table>
<thead><tr><th>Document</th><th>Intended status</th><th>What it is</th></tr></thead>
<tbody>
<tr><td><xref target="PQST"/></td><td>Standards Track</td><td>The core pairwise protocol: the anchor exchange, the data plane, paths, dormancy and recovery, authorization, objects, and their invariants.</td></tr>
<tr><td><xref target="PQST-COHORT"/></td><td>Experimental</td><td>A membership, policy, reachability and discovery control plane over PQST sessions, run by a sequencer. It specifies no group data plane in this version.</td></tr>
<tr><td>This document</td><td>Informational</td><td>A non-normative overview and reading guide to the two documents above.</td></tr>
</tbody></table>
<t>The cohort layer depends normatively on the core protocol. This overview depends on neither in the protocol sense: nothing can be implemented from it, and an implementation built from this document alone would not interoperate with anything. It is posted as an Informational Internet-Draft to serve as a reading guide now; whether it should progress further is a later question, and nothing in the specifications requires it to be read first.</t>
</section>
<section anchor="sec-1-3"><name>How to Use This Guide</name>
<t>A reader in a hurry can read <xref target="sec-2"/> and <xref target="sec-3"/> and stop with an accurate mental model. A reader deciding whether to invest further should continue through <xref target="sec-5"/> and <xref target="sec-6"/>, where the qualifications and limits are collected. <xref target="sec-8"/> maps each kind of reader to the sections of the specifications written for them, and <xref target="sec-9"/> lists the questions the author is bringing to the community.</t>
</section>
</section>
<section anchor="sec-2"><name>The Problem</name>
<section anchor="sec-2-1"><name>Three Situations</name>
<t>Most secure networking protocols tie their cryptographic state to a connection or a security association that must be retained, resumed or reconstructed when connectivity disappears. PQST asks a different question: can the authenticated session itself survive after the network paths and the live cryptographic state are gone? PQST makes session continuity an explicit transport mechanism: how new secrets are established, how the previous session is authenticated, and what happens when recovery fails or either machine crashes. The problem begins where the live cryptographic and transport state of a secure association is gone, in three situations.</t>
<t><em>The process is gone.</em> A tunnel endpoint restarts (a crash, upgrade, and/or device reboot). Live keys, replay windows and sequence state are gone with the process. In deployed transports the live session is gone too; what the endpoint kept on disk, a configured peer, a ticket, a security association's parameters, lets the next session be built faster, not the same session continue, and continuity, where a deployment has it, is reconstructed at some other layer with its own state and semantics.</t>
<t><em>The network was gone longer than live state is worth keeping.</em> In disconnected, intermittent and limited environments, such as radio nets, connectivity returns after hours or days. Holding idle cryptographic and transport state for days would be a suboptimal trade, but so would paying full re-establishment, re-authentication and re-authorization as though a known peer were an untrusted stranger.</t>
<t><em>A different machine must answer.</em> In a gateway group, the instance that holds a session fails or is drained, and another instance of the same group is expected to take the session up without the peer seeing a new peer.</t>
<t>Existing transports answer parts of this, each by its own mechanism. What none of them specifies is the logical session itself: its identifier, its authorization, and the bindings above it surviving the loss of everything else as defined transport behaviour, with the persistence, erasure and failure semantics of that survival specified rather than left to the deployment. That is PQST's reason to exist.</t>
</section>
<section anchor="sec-2-2"><name>What Deployed Transports Do Instead</name>
<ul>
<li><t><strong>QUIC <xref target="RFC9000"/> with TLS 1.3 <xref target="RFC9846"/></strong>. Process restart: a new connection (resumption is a new connection with resumed parameters); Long dormancy: the connection may be retained while both endpoints keep its state; Another instance takes over: not a property of the transport; Post-quantum key establishment: through TLS <xref target="RFC10024"/></t></li>
<li><t><strong>WireGuard <xref target="WireGuard"/>, with Rosenpass <xref target="Rosenpass"/></strong>. Process restart: a new handshake under a persistent configured peer; Long dormancy: the configured peer persists; traffic keys are replaced by new handshakes; Another instance takes over: not specified; Post-quantum key establishment: not in the baseline; Rosenpass adds a post-quantum rekey</t></li>
<li><t><strong>IKEv2 <xref target="RFC7296"/> with MOBIKE <xref target="RFC4555"/></strong>. Process restart: re-established, or resumed from a ticket as a new IKE SA <xref target="RFC5723"/>; Long dormancy: retention is an implementation liveness decision; Another instance takes over: not specified; Post-quantum key establishment: multiple key exchanges <xref target="RFC9370"/></t></li>
<li><t><strong>PQST</strong>. Process restart: re-anchored from the continuity record as the same session, within the limits of <xref target="sec-6-3"/>; Long dormancy: a defined DORMANT state holding only the continuity record; Another instance takes over: sealed records and gateway groups (<xref target="PQST" section="16.9" sectionFormat="of"/>); Post-quantum key establishment: native, by ML-KEM in establishment, recovery and re-proof alike</t></li>
</ul>
<t>Where a cell says "may be retained" or "not specified", the other protocol has, or permits, the behaviour; PQST claims no novelty in it. The rows that distinguish PQST are the first three columns' last row: the same session, as a specified outcome.</t>
</section>
<section anchor="sec-2-3"><name>The Architectural Alternative</name>
<t>Nothing in this design makes the alternative impossible. A session layer above QUIC, or above MASQUE's UDP and IP proxying <xref target="RFC9298"/> and <xref target="RFC9484"/>, could keep its own identity, authorization and continuity state across connections, and would inherit mature HTTP infrastructure, proxy traversal and congestion control. PQST is the other shape: one purpose-built protocol over UDP, with direct control of cryptographic recovery and a state model built for severe intermittency, at the price of being a new transport. Which shape is simpler, cheaper and more predictable in the environments of <xref target="sec-2-1"/> is an open question, and it is the first question of <xref target="sec-9"/>. The purpose of this submission is not to challenge or dismiss existing protocols, but rather to contribute a new perspective to the discussion by starting from a different problem set.</t>
</section>
</section>
<section anchor="sec-3"><name>PQST at a Glance</name>
<t>One mechanism, the anchor exchange, establishes a session and, performed again from it, serves six more roles: recovery after the loss of every path, survival across a restart, the post-compromise ratchet, identity re-proof, and the renewal of identifiers and of the lineage (<xref target="PQST" section="16" sectionFormat="of"/>). The rest of this section says what makes that possible.</t>
<section anchor="sec-3-1"><name>The Inversion</name>
<t>PQST orders its objects by how long they live, and holds the order as a rule:</t>
<sourcecode><![CDATA[
identity -- ended by revocation
  cohort membership -- ended outside the core protocol
    session -- ended by close
      generation -- ended by the next re-anchor
        epoch -- ended by the next epoch advance
          path -- ended by loss
]]></sourcecode>
<t>A path event, by itself, changes neither the authenticated identity, nor the committed generation, nor authorization, nor any binding above the session; it selects which path the session uses. Conversely, a session with no path at all is a defined state with defined behaviour, not an error. Everything else in the design is consequence or machinery of this ordering (Sections <xref target="PQST" section="3" sectionFormat="bare"/> and <xref target="PQST" section="16" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
</section>
<section anchor="sec-3-2"><name>The Five Commitments</name>
<t><strong>Continuity is durable, and its durability is specified.</strong> What an endpoint keeps while dormant or across a restart (the continuity record) is written ahead of every transmission that depends on it, committed atomically, and erased on close, with a tombstone left to answer late recovery attempts. Crash consistency is a protocol requirement with stated failure semantics, not an implementation suggestion (Sections <xref target="PQST" section="16.4" sectionFormat="bare"/> and <xref target="PQST" section="16.6" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>One exchange establishes and recovers.</strong> The anchor exchange, in its FRESH form, creates a session; in its CONTINUE forms, performed from an existing session, it creates the session's next generation of secrets from the previous generation plus a fresh post-quantum secret. Re-anchor is the single mechanism for recovery after path loss, survival across a restart, the post-compromise ratchet, identity re-proof, identifier renewal and lineage renewal; with a prekey exchanged in advance it needs no round trip (Sections <xref target="PQST" section="9" sectionFormat="bare"/> and <xref target="PQST" section="16" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>Identity is a KEM key.</strong> An endpoint's long-term identity is an ML-KEM-1024 key pair, and a peer proves its identity by decapsulating. No signature is computed online in any exchange; ML-DSA-87 appears only in offline certification of identity keys, which the core protocol does not need (Sections <xref target="PQST" section="6" sectionFormat="bare"/> and <xref target="PQST" section="9" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>Nothing unauthenticated changes authoritative state.</strong> The receiver performs at most one AEAD operation per protected packet, and replay, epoch and path state move only after that operation succeeds. What an unauthenticated datagram may cost before that point is bounded and named; no error is signalled to an unauthenticated sender (Sections <xref target="PQST" section="11" sectionFormat="bare"/> to <xref target="PQST" section="14" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>Nothing is signalled that can be derived.</strong> Packet identifiers, recovery identifiers and epoch keys are derived by both endpoints from the session's secrets. The epoch and the sequence number travel header-protected; PQST's own per-packet overhead is 44 octets. What cannot be derived, such as grants, prekeys, sealed records, inner addresses, is carried as a small set of versioned state objects with one reliability rule (Sections <xref target="PQST" section="8" sectionFormat="bare"/>, <xref target="PQST" section="10" sectionFormat="bare"/>, <xref target="PQST" section="15" sectionFormat="bare"/> and <xref target="PQST" section="19" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
</section>
<section anchor="sec-3-3"><name>What PQST Is Not</name>
<t>PQST provides neither reliable delivery nor congestion control. It is designed for the case the UDP usage guidelines treat first (<xref target="RFC8085" section="3.1.11" sectionFormat="of"/>): a tunnel carrying congestion-controlled IP unicast, whose rate is the carried traffic's and which therefore performs no congestion control of its own. A deployment that carries traffic without congestion control, or whose tunnel rate is not set by the carried traffic, needs the safeguards those guidelines recommend for that case, a circuit breaker among them (<xref target="RFC8084"/>); the specification does not yet state that expectation, nor the treatment of the carried packets' ECN marking, and <xref target="sec-9"/> keeps both as questions. PQST's own traffic is bounded: anchor messages and state objects are retransmitted on a doubling schedule from one second to sixteen, there is one probe per interval per path, one acknowledgement per object version, and redundant transmission sends at most one copy per validated path (Sections <xref target="PQST" section="9.4" sectionFormat="bare"/>, <xref target="PQST" section="15.7" sectionFormat="bare"/>, <xref target="PQST" section="19.3" sectionFormat="bare"/> and <xref target="PQST" section="23" sectionFormat="bare"/> of <xref target="PQST"/>). PQST gathers no candidate addresses and traverses no NAT: an address learned elsewhere is a hint, and validation is by probe. PQST is not a group protocol; the cohort layer of <xref target="sec-7"/> is built on it as a separate, Experimental specification.</t>
</section>
</section>
<section anchor="sec-4"><name>A Session's Life</name>
<t>Two endpoints, provisioned with each other's identity keys as in a WireGuard-style deployment, neither holding any session.</t>
<t><strong>Establishment.</strong> The initiator sends a FRESH anchor request: a fresh ephemeral ML-KEM key, an encapsulation to the responder's identity key, and a sealed part carrying its own identity, capabilities and grant. The responder decapsulates, encapsulates to the ephemeral key and to the initiator's identity key, and answers. Both sides derive generation 0; the initiator's first protected packet confirms its identity, and the session is established. One round trip to initiator data; about 3.3 KB of anchor messages each way; no signature (<xref target="PQST" section="9" sectionFormat="of"/>).</t>
<t><strong>Ordinary life.</strong> Each protected packet carries a derived routing identifier, a header-protected block naming the epoch and a 64-bit sequence number, and an AEAD-protected payload. Either endpoint advances the epoch by naming the next one in a packet; the keys are chained, and a successful opening is the advance's authentication. Packets may arrive on several validated paths; a path is validated by a probe and answer, and losing one is an ordinary event that changes nothing above the path (Sections <xref target="PQST" section="10" sectionFormat="bare"/>, <xref target="PQST" section="14" sectionFormat="bare"/> and <xref target="PQST" section="15" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<sourcecode><![CDATA[
ESTABLISHED --(every path lost)--> RECOVERING
RECOVERING  --(schedule exhausted)--> DORMANT
RECOVERING or DORMANT --(re-anchor commits)--> ESTABLISHED
any state --(close)--> CLOSED; a tombstone answers late re-anchors
]]></sourcecode>
<t><strong>Loss and return.</strong> When the last path is lost the session is RECOVERING, retaining its state while a recovery schedule runs. If the peer does not return, the session becomes DORMANT and discards everything but the continuity record. This record is approximately 5 KB between exchanges, about 2 KB where prekeys are regenerated from a local secret, up to about 12 KB while an exchange is in flight (<xref target="PQST" section="16.6.1" sectionFormat="of"/>). Identity, the current generation's secret, authorization state and exporter roots remain; live keys, replay windows and identifiers do not. Return, whenever it comes, is a CONTINUE re-anchor on a recovery identifier derived from the current generation: fresh key material, the same session. A restart is the same story told by the record: no epoch is ever resumed, sequence state is never persisted for reuse, and the first generation that sends after a restart is one created after it (Sections <xref target="PQST" section="12.7" sectionFormat="bare"/> and <xref target="PQST" section="16.7" sectionFormat="bare"/> of <xref target="PQST"/>). One wrinkle is stated rather than smoothed over: on a very slow, lossy link, recovery can complete as a new FRESH session superseding the old one, and the layer above sees a close and a new establishment with the same peer instead of one session continuing (<xref target="PQST" section="16.10" sectionFormat="of"/>).</t>
<t><strong>Close.</strong> A CLOSE frame with a classed reason ends the session; the record is erased, and a tombstone, holding only the keys needed to answer a late re-anchor with a sealed CLOSED response, remains for a bounded time (Sections <xref target="PQST" section="19.6" sectionFormat="bare"/> and <xref target="PQST" section="20" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<section anchor="sec-4-1"><name>Why Recovery Is a Security Problem</name>
<t>A secure session is more than a set of encryption keys. It is an agreement between two endpoints about whom they are talking to, which cryptographic state is current, and what that state authorizes. PQST's recovery has to preserve that agreement when the machines keeping it fail. Four design decisions show why that is harder than performing another key exchange.</t>
<t><strong>A key must have an agreed meaning.</strong> Two endpoints performing a post-quantum key exchange may both compute fresh secret material and still not agree on what it represents: a new session or the continuation of one; which identities took part; which protocol version and exchange form; which previous state, if any, it continues. A protocol that does not bind these facts cryptographically risks accepting keys under different readings of the same exchange. PQST binds the exchange's context into its transcript, the wire version, the suite, the intended peer identity, the exchange form and any preceding discovery exchange among the inputs, and matches every response to the outstanding attempt it answers; the keys that seal each message are derived from the transcript to that point, and the lineage and the session's root from the request's transcript. The resulting state belongs to that exchange and to the transition it makes, not to an arbitrary successful encapsulation (Sections <xref target="PQST" section="8" sectionFormat="bare"/> and <xref target="PQST" section="9" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>A crash must not create two versions of the session.</strong> Consider a re-anchor from generation g to generation g + 1. The responder authenticates the request, derives the next generation and answers; the requester receives the answer and computes the same secrets. If either machine crashes between computing those secrets and recording them durably, the two may hold different parts of the exchange, and one may send under a generation that vanishes at its restart while the other has already accepted it. PQST distinguishes prepared from committed state: the responder records the armed generation and its cached response durably before sending; the requester commits its new generation, with its recovery record, before using it; the responder commits the armed generation only on the authenticated confirmation, durably, before it delivers anything under it; and a write that fails leaves provisional state provisional, with retransmission and cached responses carrying the exchange on. The asymmetry is deliberate: the responder may hold a durable but uncommitted generation while the requester has committed, and the specification says how that temporary disagreement resolves without either side inventing a competing history. Simultaneous re-anchors, delayed messages, writes with unknown outcomes and process restarts are all part of the problem; so is closing, where a tombstone keeps a late recovery attempt from reviving an ended session. These rules do not guarantee that every recovery succeeds as the same session: an attempt can expire, and a new FRESH session can supersede the old one. Instead, they say under what conditions continuity is preserved and what happens when it cannot be. The security of the exchange rests not only on the cryptography but on exactly when each endpoint may believe the cryptography has taken effect (Sections <xref target="PQST" section="9.3.8" sectionFormat="bare"/>, <xref target="PQST" section="16.4" sectionFormat="bare"/>, <xref target="PQST" section="16.6" sectionFormat="bare"/> and <xref target="PQST" section="19.6" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>Continuity and post-compromise recovery are different goals.</strong> PQST keeps one logical session while replacing its traffic secrets again and again, and that creates a choice for the layers above. Some values must stay stable across recoveries; others should become independent of any secret an adversary may have taken. PQST therefore offers two exporter scopes. A session-scoped export is stable for the session's life: it preserves bindings that must survive re-anchors, and a compromise of its root is not healed by later re-anchors. A lineage-scoped export changes at every re-anchor: it heals when the new generation takes in fresh secret material the adversary lacks, and the application must accommodate the change. Neither scope is better in general; one preserves continuity, the other permits renewal, and PQST makes the choice explicit rather than pretending that one secret can stay unchanged and recover from its own compromise (Sections <xref target="PQST" section="8.6" sectionFormat="bare"/> and <xref target="PQST" section="23.1" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t><strong>Receiving a packet is not permission to change state.</strong> An active attacker can send packets with any header, among them packets that appear to announce a new epoch or carry a very large sequence number. A receiver that moved its replay window or its keys because such a packet arrived could be steered by an attacker who holds no key. PQST separates tentative processing from authoritative change: the receiver may do bounded work to identify a packet and attempt to authenticate it, but a failed authentication advances no receive epoch, commits no replay window and validates no path. The replay check before authentication is side-effect free, and the window moves only after authentication and the acceptance checks that follow it. The principle reaches past packets to recovery and persistence: computing a value, receiving a message and durably accepting a transition are three different events (Sections <xref target="PQST" section="11" sectionFormat="bare"/> to <xref target="PQST" section="14" sectionFormat="bare"/> and <xref target="PQST" section="22" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
<t>The four decisions express one philosophy: security state changes only on sufficient authenticated evidence, and a change that must survive a failure becomes durable before anything depends on it.</t>
</section>
</section>
<section anchor="sec-5"><name>Security Model in One Page</name>
<section anchor="sec-5-1"><name>Adversaries</name>
<t>The threat model (<xref target="PQST" section="4" sectionFormat="of"/>) considers an on-path network adversary that observes, drops, delays, replays and forges; a malicious authenticated peer, trusted with its identity and nothing else; a holder of an endpoint's storage image; a holder of one session's continuity secret without the identity key; a compromised gateway of a gateway group; and a denial-of-service adversary sending at line rate. Endpoint-memory compromise beyond those bounds, side channels below the protocol's constant-time requirements, and traffic analysis are out of scope.</t>
</section>
<section anchor="sec-5-2"><name>Guarantees</name>
<table>
<thead><tr><th>Guarantee</th><th>By what mechanism</th><th>Argued in</th></tr></thead>
<tbody>
<tr><td>Mutual authentication without online signatures</td><td>encapsulations to both identity keys enter the first continuity secret; key confirmation by the first protected packet</td><td>Sections <xref target="PQST" section="8" sectionFormat="bare"/> and <xref target="PQST" section="9" sectionFormat="bare"/> of <xref target="PQST"/></td></tr>
<tr><td>Confidentiality and integrity of data</td><td>AES-256-GCM under per-epoch, per-direction keys derived by the key schedule; header protection of epoch and sequence</td><td>Sections <xref target="PQST" section="6" sectionFormat="bare"/>, <xref target="PQST" section="8" sectionFormat="bare"/>, <xref target="PQST" section="10" sectionFormat="bare"/>, <xref target="PQST" section="12" sectionFormat="bare"/> of <xref target="PQST"/></td></tr>
<tr><td>Forward secrecy, post-compromise healing</td><td>fresh KEM secret at every re-anchor, previous continuity secret erased on commit at re-anchor granularity, with the qualifications of <xref target="sec-5-3"/></td><td>Sections <xref target="PQST" section="9" sectionFormat="bare"/>, <xref target="PQST" section="16" sectionFormat="bare"/> of <xref target="PQST"/></td></tr>
<tr><td>Replay protection</td><td>per-epoch sequence windows, checked tentatively before and committed only after authentication</td><td><xref target="PQST" section="13" sectionFormat="of"/></td></tr>
<tr><td>Amplification and reflection control</td><td>answers no larger than their requests; byte and packet budgets toward unvalidated addresses</td><td>Sections <xref target="PQST" section="9.5" sectionFormat="bare"/>, <xref target="PQST" section="15.4" sectionFormat="bare"/> of <xref target="PQST"/></td></tr>
<tr><td>Bounded cost of unauthenticated input</td><td>at most one AEAD attempt per protected packet; no authoritative state change before authentication</td><td><xref target="PQST" section="11" sectionFormat="of"/></td></tr>
</tbody></table>
<t><xref target="PQST" section="22" sectionFormat="of"/> states these and the rest as 23 numbered invariants, each with its enforcement point; <xref target="PQST" section="23" sectionFormat="of"/> argues them and their limits.</t>
</section>
<section anchor="sec-5-3"><name>Three Important Security Trade-Offs</name>
<t>These are part of the security model, stated in the specification, and collected here so that no reviewer has to excavate them.</t>
<ol>
<li><t><strong>Continuity is, between identity proofs, a bearer secret.</strong> A CONTINUE re-anchor is authenticated by possession of the current continuity secret: a holder of that secret, and of no identity key, can re-anchor as the endpoint until an exchange proving the peer's identity key succeeds. The bound is the identity re-proof deadline. At the defaults of <xref target="PQST"/>, nothing above the session moves more than 24 hours after the last proof without one; a deployment can disable the deadline and thereby claims no bound. Erasure of the previous secret at commit heals a passive leak at the next legitimate re-anchor; an active holder is bounded by the deadline and by nothing else.</t>
</li></ol>
<ol>
<li><t><strong>Zero-round-trip recovery data is not exactly-once.</strong> Toward a stateful responder, a consumed prekey and recovery identifier make early data unreplayable by anyone else, and it is forward-secret. But where more than one state can answer, such as a gateway group, one member serving from state and another from a sealed record, an attempt can be refused after its early data was delivered, and the sender cannot learn which happened. Data sent at zero round trips must therefore be idempotent or carry its own transaction identifier; the transport reports the refusal and never reports the data as undelivered.</t>
</li></ol>
<ol>
<li><t><strong>Session-scoped exported material does not heal.</strong> Keys an upper layer exports in session scope are derived from a root established in generation 0 and kept for the session's life, so that bindings survive re-anchors. An adversary who obtains that root keeps deriving session-scoped exports after every later re-anchor; only a new session gives independent exports. Lineage-scoped exports, by contrast, change at every re-anchor and heal with it. Material that must rotate with post-compromise recovery belongs in lineage scope.</t>
</li></ol>
</section>
<section anchor="sec-5-4"><name>Analysis to Date</name>
<t>The anchor exchange is the KEM instantiation of the Noise IK pattern <xref target="Noise"/>, as in PQ-WireGuard <xref target="PQWireGuard"/> and Rosenpass <xref target="Rosenpass"/>, and its PQST form has been modelled in Tamarin: the three anchor forms, one exchange each, under an adversary that may reveal long-term, ephemeral, continuity and prekey secrets, with a fourth model covering tombstones and sealed records. The commit protocol has been modelled in TLA+ over a network that loses, duplicates, delays and reorders, with restarts and with the continuity record's writes given held, failed, and held-but-reported-failed outcomes; the checks are bounded, and the bounds are stated with the results. Sections <xref target="PQST" section="23.4" sectionFormat="bare"/> and <xref target="PQST" section="27" sectionFormat="bare"/> of <xref target="PQST"/> account for what these models establish and what they do not, which includes identity hiding, deniability, the reflection and cost bounds, crash behaviour in the Tamarin models, and gateway-group behaviour in both.</t>
</section>
</section>
<section anchor="sec-6"><name>Costs, Evidence and Limits</name>
<section anchor="sec-6-1"><name>Costs</name>
<table>
<thead><tr><th>Quantity</th><th>Value, in the suite of <xref target="PQST"/></th></tr></thead>
<tbody>
<tr><td>Establishment (FRESH)</td><td>one round trip to initiator data; about 3.3 KB of anchor messages each way</td></tr>
<tr><td>Re-anchor (CONTINUE)</td><td>about 1.7 KB of anchor messages each way; one round trip, or none with a prekey</td></tr>
<tr><td>Per-packet overhead</td><td>44 octets of PQST header, protected block and tag, excluding IP and UDP headers</td></tr>
<tr><td>Continuity record</td><td>about 5 KB between exchanges; up to about 12 KB with an exchange in flight</td></tr>
<tr><td>Price of a forged FRESH request</td><td>one ML-KEM-1024 decapsulation before any cheaper check can reject it; the specification prices this at about 40,000 decapsulations per second, roughly one core, at 1 Gbps line rate (<xref target="PQST" section="23.1" sectionFormat="of"/>), a measurement of the reference implementation on one machine, which the specification says is not a property of the protocol -- and places no return-routability proof in front of it in this version</td></tr>
</tbody></table>
<t>The sizes in the table are those of the wire formats; the one rate in it is measured, not specified. Fragmentation is part of these costs on small-MTU paths: anchor messages travel in fragments of at most 1,183 octets by default, a lost message is retransmitted whole on a doubling schedule, and an optional parity fragment recovers a single lost fragment of a flight (Sections <xref target="PQST" section="9.4" sectionFormat="bare"/> and <xref target="PQST" section="10.4" sectionFormat="bare"/> of <xref target="PQST"/>).</t>
</section>
<section anchor="sec-6-2"><name>Evidence</name>
<t>A Go reference implementation covers the core specification, including the test vectors of Appendix D of <xref target="PQST"/>, which an implementation reproduces to claim conformance, and negative test vectors with state assertions. A second implementation in Python, a separate codebase written from the specification text alone by an agent given no access to the reference implementation, under the author's direction (independent code, not independent authorship; the external reviews recorded in the change log were conducted independently of both), reproduces every test vector and interoperates with the reference over UDP on establishment and re-anchors requested by either side, data after each, both identity proofs, close, epoch advance and the recovery schedule; what it does not cover, including serving sessions from sealed records, gateway groups, grant lifetimes and revocation, is listed in <xref target="PQST" section="27" sectionFormat="of"/> and is not reported as interoperated. A discrete-event simulator exercises recovery, path churn, loss, replay, spoofed sources, restarts with and without the record, and storage faults against the specification's invariants over campaigns of up to 10^6 generated scenarios; <xref target="PQST" section="27" sectionFormat="of"/> reports the campaigns, their distributions and their limits. The implementation's repository is available from the author on request.</t>
<t>The author's comparative measurements of recovery delay against WireGuard, Rosenpass over WireGuard, IKEv2 with MOBIKE and MASQUE exist, one implementation on one machine at four link speeds with loss, and are kept with the implementation's results rather than in these documents (<xref target="PQST" section="27" sectionFormat="of"/>); the comparison these documents make is the qualitative one of the table in <xref target="sec-2"/>.</t>
</section>
<section anchor="sec-6-3"><name>Limits</name>
<t>The full list is <xref target="PQST" section="16.10" sectionFormat="of"/>. The limits a prospective adopter should weigh first:</t>
<ul>
<li><t>The continuity claim holds while the continuity record is recoverable and recovery completes as a re-anchor. When a recovery FRESH wins the race on a very slow, lossy link, the session returns as a new session with the same peer and the old one is reported superseded.</t>
</li>
<li><t>Every path starts at a 1,200-octet datagram MTU and is probed only upward; paths with a smaller budget must be configured, not below 576 octets, and are not discovered by the protocol.</t>
</li>
<li><t>A conforming endpoint keeps durable storage with atomic replacement for its continuity records, written ahead of the transmissions that depend on them. An endpoint without such storage is outside the core protocol's applicability, except as a responder serving from sealed records.</t>
</li>
<li><t>No UDP port is assigned or requested by the specification; a deployment configures one.</t>
</li>
<li><t>A gateway group shares one replicated identity key across its gateways: compromise of one gateway is compromise of the group's identity, and the group is one trust boundary.</t>
</li>
<li><t>The constant-time and erasure properties are stated as requirements and were reviewed in the implementations; no timing measurement is claimed.</t>
</li></ul>
</section>
</section>
<section anchor="sec-7"><name>The Cohort Layer</name>
<section anchor="sec-7-1"><name>The Analogy and the Claim</name>
<t>A PQST session survives the loss of every path because the session, not the path, is the persistent object. The cohort layer <xref target="PQST-COHORT"/> applies the same idea one level up: the cohort is to its members' sessions what a session is to its paths. A member may change paths, go dormant, re-anchor, restart, or return through another gateway of the group, and the cohort exists unchanged.</t>
</section>
<section anchor="sec-7-2"><name>The Four Invariants</name>
<ul>
<li><t><strong>CG1, decoupling.</strong> No transport-class or session-class event of a member's session (path loss, dormancy, re-anchor, restart, return through another gateway) changes the membership epoch, the member list, the policy version, or any other member's cohort state.</t>
</li></ul>
<ul>
<li><t><strong>CG2, single authoritative history.</strong> The cohort's commits form one total order; each membership epoch has exactly one epoch key; a partition creates no history.</t>
</li></ul>
<ul>
<li><t><strong>CG3, revocation is not restorable by resumption.</strong> No resumption, re-anchor or new session restores standing revoked while a member was away. A peer that has applied the removal erases the old epoch key and accepts no proof under it; a peer that has not applied it accepts only within its own standing, which lapses on a timer, so the residual acceptance at an uninformed peer is bounded -- at most group_suspend after its last confirmed report, up to 24 hours at the pairwise defaults.</t>
</li></ul>
<ul>
<li><t><strong>CG4, no rollback.</strong> No authenticated object, new session, gateway or restart lowers the membership epoch or policy version a member has accepted. Staleness is permitted; return to a left epoch is not.</t>
</li></ul>
</section>
<section anchor="sec-7-3"><name>What This Version Specifies and What It Does Not</name>
<t><xref target="PQST-COHORT"/> specifies a control plane: one sequencer commits membership, policy and a membership epoch key over the members' pairwise PQST sessions with it; members report reachability, locate one another under policy, and prove possession of the current epoch key to one another inside their pairwise sessions. The epoch key protects the group's own control and proves possession of the key; it does not authenticate any member's application data, and this version gives a group no native channel: member-to-member traffic travels in ordinary pairwise PQST sessions. Admission is out of band, the policy body is application-defined, and there is no roster service.</t>
<t>Two consequences are stated at the front of the design. A removal from the cohort closes that member's sessions with the sequencer; it does not close its pairwise sessions with other members. And the sequencer is trusted in a way the Messaging Layer Security protocol <xref target="RFC9420"/> exists to avoid: it commits the group's history and delivers its keys, and a deployment that cannot accept a trusted sequencer should use MLS for the group key, with the sequencer as its delivery service. The reason to accept the trade is continuity in intermittency: members cut off from the sequencer keep their last epoch and their pairwise sessions, and a group service that dies with its server is of no use on the networks PQST is designed for.</t>
</section>
<section anchor="sec-7-4"><name>Status and the Open Question</name>
<t>The cohort layer is Experimental, with one implementation. CG2 is a requirement on the deployment: the sequencer's commits run against an authority (a replicated store with conditional, atomic, fenced commits) whose properties the specification states and whose mechanism it does not include; the reference implementation models one (<xref target="PQST-COHORT" section="4" sectionFormat="of"/>). The group data plane that would give members one secure session among themselves is described as the direction of the next version and is not specified: its sender-key derivation and packet format are preliminary, and the question left open is whether receivers must constrain each individual sender against a malicious member, or whether a member is trusted because it holds the current group key. Until that is decided, nothing of the data plane is final (<xref target="PQST-COHORT" section="13.4" sectionFormat="of"/>).</t>
</section>
</section>
<section anchor="sec-8"><name>Reading Map</name>
<section anchor="sec-8-1"><name>By Reader</name>
<table>
<thead><tr><th>You are...</th><th>Read</th><th>About</th></tr></thead>
<tbody>
<tr><td>Deciding whether the problem is real</td><td>Sections <xref target="PQST" section="1" sectionFormat="bare"/>, <xref target="PQST" section="4" sectionFormat="bare"/>, <xref target="PQST" section="16.10" sectionFormat="bare"/> and <xref target="PQST" section="27" sectionFormat="bare"/> of <xref target="PQST"/></td><td>about 20 pages</td></tr>
<tr><td>A security reviewer</td><td>Sections <xref target="PQST" section="4" sectionFormat="bare"/>, <xref target="PQST" section="6" sectionFormat="bare"/>, <xref target="PQST" section="8" sectionFormat="bare"/>, <xref target="PQST" section="9" sectionFormat="bare"/>, <xref target="PQST" section="22" sectionFormat="bare"/> and <xref target="PQST" section="23" sectionFormat="bare"/> of <xref target="PQST"/></td><td>about 60 pages</td></tr>
<tr><td>A transport reviewer</td><td>Sections <xref target="PQST" section="10" sectionFormat="bare"/> to <xref target="PQST" section="16" sectionFormat="bare"/> of <xref target="PQST"/></td><td>about 65 pages</td></tr>
<tr><td>An implementer</td><td>Sections <xref target="PQST" section="6" sectionFormat="bare"/> to <xref target="PQST" section="19" sectionFormat="bare"/> of <xref target="PQST"/>, with Appendix D of <xref target="PQST"/></td><td>the remainder, about 230 pages, of which the test vectors are 110</td></tr>
<tr><td>Evaluating the cohort layer</td><td>Sections <xref target="PQST-COHORT" section="1" sectionFormat="bare"/> to <xref target="PQST-COHORT" section="5" sectionFormat="bare"/>, <xref target="PQST-COHORT" section="13" sectionFormat="bare"/>, <xref target="PQST-COHORT" section="14" sectionFormat="bare"/> and <xref target="PQST-COHORT" section="17" sectionFormat="bare"/> of <xref target="PQST-COHORT"/></td><td>about 25 pages</td></tr>
</tbody></table>
</section>
<section anchor="sec-8-2"><name>By Document Part</name>
<t>The parts of <xref target="PQST"/>, by section:</t>
<table>
<thead><tr><th>Sections of <xref target="PQST"/></th><th>What they define</th></tr></thead>
<tbody>
<tr><td>2 to 5</td><td>terms, architecture, the threat model and conformance</td></tr>
<tr><td>6 to 9</td><td>algorithms, encoding, the key schedule and the anchor exchange</td></tr>
<tr><td>10 to 14</td><td>the data plane: packet format, receiver processing, nonces, replay protection and epochs</td></tr>
<tr><td>15 to 17</td><td>paths, dormancy and recovery, and authorization</td></tr>
<tr><td>18</td><td>the state machine</td></tr>
<tr><td>19 to 22</td><td>the control frames, error handling, extensibility and the security invariants</td></tr>
<tr><td>23 to 27</td><td>the security and privacy considerations, the registries, the pointer to the cohort layer and the implementation status</td></tr>
<tr><td>Appendices</td><td>the identity binding statement (A), replay-window pseudocode (B), an informative signature profile (C), the test vectors (D), the wire formats (E) and the parameters (F)</td></tr>
</tbody></table>
<t>The test vectors of Appendix D of <xref target="PQST"/> are the implementer's conformance target. Of the sections, 18 to 22 are reference machinery, best read on a second pass as the need arises.</t>
</section>
</section>
<section anchor="sec-9"><name>Questions for the Community</name>
<ol>
<li><t>Which applications require transport-native session continuity after the total loss of live cryptographic state, specified down to persistence and crash behaviour, and what evidence would establish that a new transport is preferable to reconstructing continuity above an existing one? If that evidence exists, in which area and working group does the work belong?</t>
</li>
<li><t>Should the work be one document family, as posted, or a small core plus separately progressing extensions? Where would reviewers prefer to separate them?</t>
</li>
<li><t>Is a post-quantum-only design with one suite per version, agility by key provisioning, acceptable; or is a classical hybrid a prerequisite for consideration?</t>
</li>
<li><t>Is the forged-handshake cost of <xref target="sec-6-1"/> acceptable as priced and disclosed, or is a return-routability proof ahead of the first decapsulation required?</t>
</li>
<li><t>Should zero-round-trip recovery, with the delivery semantics of <xref target="sec-5-3"/>, survive into a -01, move to an extension, or be removed?</t>
</li>
<li><t>Is a trusted-sequencer group layer a trade the community wants available beside MLS for groups that must outlive their infrastructure and is Experimental the right status for it while its data plane is open? Would reviewers be interested in evaluating the adjacent data plane work not included in that document?</t>
</li>
<li><t>For a tunnel whose carried traffic is not congestion-controlled, or whose rate is not set by that traffic, is a circuit-breaker expectation in the core specification sufficient, or must PQST's own control traffic be paced by a congestion controller? <xref target="sec-3-3"/> states the case the design is made for; the other cases are open.</t>
</li></ol>
</section>
<section anchor="sec-10"><name>Security Considerations</name>
<t>This document specifies no protocol, defines no wire format and introduces no security considerations of its own. The security models, guarantees and limits of the protocols it overviews are those of Sections <xref target="PQST" section="4" sectionFormat="bare"/> and <xref target="PQST" section="23" sectionFormat="bare"/> of <xref target="PQST"/> and <xref target="PQST-COHORT" section="14" sectionFormat="of"/>. <xref target="sec-5-3"/> of this document is a summary of three qualifications in those documents, collected for the reader's convenience; it is not a substitute for them.</t>
</section>
<section anchor="sec-11"><name>IANA Considerations</name>
<t>This document has no IANA actions. The registries requested for the core protocol are in <xref target="PQST" section="25" sectionFormat="of"/>, and for the cohort layer in <xref target="PQST-COHORT" section="16" sectionFormat="of"/>; none is allocated at the Internet-Draft stage.</t>
</section>
</middle>
<back>
<references><name>References</name>
<references><name>Informative References</name>
<reference anchor="PQST"><front><title>Post-Quantum Secure Transport (PQST)</title><author fullname="C. Henry"/><date year="2026"/></front><seriesInfo name="Internet-Draft" value="draft-henry-pqst-00"/></reference>
<reference anchor="PQST-COHORT"><front><title>The Cohort Layer of Post-Quantum Secure Transport (PQST)</title><author fullname="C. Henry"/><date year="2026"/></front><seriesInfo name="Internet-Draft" value="draft-henry-pqst-cohort-00"/></reference>
<reference anchor="RFC9000"><front><title>QUIC: A UDP-Based Multiplexed and Secure Transport</title><author fullname="J. Iyengar"/><author fullname="M. Thomson"/><date year="2021"/></front><seriesInfo name="RFC" value="9000"/></reference>
<reference anchor="RFC9846"><front><title>The Transport Layer Security (TLS) Protocol Version 1.3</title><author fullname="E. Rescorla"/><date year="2026"/></front><seriesInfo name="RFC" value="9846"/></reference>
<reference anchor="RFC10024"><front><title>Post-Quantum Traditional (PQ/T) Hybrid Key Agreement Mechanisms for TLS 1.3</title><author fullname="K. Kwiatkowski"/><author fullname="P. Kampanakis"/><author fullname="B. E. Westerbaan"/><author fullname="D. Stebila"/><date year="2026"/></front><seriesInfo name="RFC" value="10024"/></reference>
<reference anchor="WireGuard"><front><title>WireGuard: Next Generation Kernel Network Tunnel</title><author fullname="J. Donenfeld"/><date year="2017"/></front><seriesInfo name="NDSS" value="2017"/></reference>
<reference anchor="Rosenpass" target="https://rosenpass.eu/"><front><title>Rosenpass: Post-Quantum Secure VPN</title><author><organization>The Rosenpass project</organization></author><date year="2023"/></front></reference>
<reference anchor="RFC7296"><front><title>Internet Key Exchange Protocol Version 2 (IKEv2)</title><author fullname="C. Kaufman"/><author fullname="P. Hoffman"/><author fullname="Y. Nir"/><author fullname="P. Eronen"/><author fullname="T. Kivinen"/><date year="2014"/></front><seriesInfo name="RFC" value="7296"/><seriesInfo name="STD" value="79"/></reference>
<reference anchor="RFC4555"><front><title>IKEv2 Mobility and Multihoming Protocol (MOBIKE)</title><author fullname="P. Eronen"/><date year="2006"/></front><seriesInfo name="RFC" value="4555"/></reference>
<reference anchor="RFC5723"><front><title>Internet Key Exchange Protocol Version 2 (IKEv2) Session Resumption</title><author fullname="Y. Sheffer"/><author fullname="H. Tschofenig"/><date year="2010"/></front><seriesInfo name="RFC" value="5723"/></reference>
<reference anchor="RFC9370"><front><title>Multiple Key Exchanges in the Internet Key Exchange Protocol Version 2 (IKEv2)</title><author fullname="C. Tjhai"/><author fullname="M. Tomlinson"/><author fullname="G. Bartlett"/><author fullname="S. Fluhrer"/><author fullname="D. Van Geest"/><author fullname="O. Garcia-Morchon"/><author fullname="V. Smyslov"/><date year="2023"/></front><seriesInfo name="RFC" value="9370"/></reference>
<reference anchor="RFC9298"><front><title>Proxying UDP in HTTP</title><author fullname="D. Schinazi"/><date year="2022"/></front><seriesInfo name="RFC" value="9298"/></reference>
<reference anchor="RFC9484"><front><title>Proxying IP in HTTP</title><author fullname="T. Pauly"/><author fullname="D. Schinazi"/><author fullname="A. Chernyakhovsky"/><author fullname="M. Kuehlewind"/><author fullname="M. Westerlund"/><date year="2023"/></front><seriesInfo name="RFC" value="9484"/></reference>
<reference anchor="RFC8085"><front><title>UDP Usage Guidelines</title><author fullname="L. Eggert"/><author fullname="G. Fairhurst"/><author fullname="G. Shepherd"/><date year="2017"/></front><seriesInfo name="RFC" value="8085"/><seriesInfo name="BCP" value="145"/></reference>
<reference anchor="RFC8084"><front><title>Network Transport Circuit Breakers</title><author fullname="G. Fairhurst"/><date year="2017"/></front><seriesInfo name="RFC" value="8084"/><seriesInfo name="BCP" value="101"/></reference>
<reference anchor="RFC9420"><front><title>The Messaging Layer Security (MLS) Protocol</title><author fullname="R. Barnes"/><author fullname="B. Beurdouche"/><author fullname="R. Robert"/><author fullname="J. Millican"/><author fullname="E. Omara"/><author fullname="K. Cohn-Gordon"/><date year="2023"/></front><seriesInfo name="RFC" value="9420"/></reference>
<reference anchor="Noise" target="https://noiseprotocol.org/noise.html"><front><title>The Noise Protocol Framework</title><author fullname="T. Perrin"/><date year="2018"/></front></reference>
<reference anchor="PQWireGuard" target="https://eprint.iacr.org/2020/379"><front><title>Post-quantum WireGuard</title><author fullname="A. Huelsing"/><author fullname="K.-C. Ning"/><author fullname="P. Schwabe"/><author fullname="F. J. Weber"/><author fullname="P. R. Zimmermann"/><date year="2021"/></front><seriesInfo name="IEEE Symposium on Security and Privacy" value="2021"/></reference>
</references>
</references>

</back>
</rfc>
