<?xml version='1.0' encoding='UTF-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" category="info" docName="draft-dpa-uzp-transport-00" submissionType="IETF" version="3">
  <front>
    <title abbrev="UZP">UZP: Universal Zero-Port Transport Protocol</title>
    <author fullname="Benjamin Anthony Fisher" initials="B.A." surname="Fisher">
      <organization>DPA R&amp;D Ltd (https://www.dpa-cloud.co.uk)</organization>
      <address>
        <email>b.fisher@dpa-cloud.co.uk</email>
        <uri>https://orcid.org/0009-0004-4412-2269</uri>
      </address>
    </author>
    <date year="2026" month="January" day="2"/>
    <area>Security</area>
    <keyword>UZP</keyword>
    <keyword>zero-port</keyword>
    <keyword>identity</keyword>
    <keyword>rendezvous</keyword>
    <keyword>transport</keyword>
    <keyword>AEAD</keyword>
    <abstract>
      <t>The Universal Zero-Port Transport Protocol (UZP) defines an identity-addressed, encrypted-by-default transport for the Universal Zero-Port Interconnect Framework (UZPIF; <xref target="UZPIF"/>). Instead of exposing IP:port listeners, both endpoints establish outbound, identity-bound sessions to one or more Rendezvous Nodes (RNs). The RN performs flow stitching but never terminates end-to-end cryptography or holds long-term secrets. All application data is carried over an authenticated encryption (AEAD) channel keyed by a handshake based on modern and post-quantum-capable primitives. Reliability is expressed at the block level, rather than at the TCP segment or stream level, enabling selective retransmission and deterministic pacing. This document specifies the UZP wire format, handshake, cryptographic negotiation, exporter interface, 0-RTT rules, replay model, and RN behaviour, and its relationship to UZPIF (<xref target="UZPIF"/>), QUIC (<xref target="RFC9000"/>), HIP (<xref target="RFC7401"/>), and TLS 1.3 (<xref target="RFC8446"/>).</t>
    </abstract>
    <note title="Note to Reviewers">
      <t>
        This document is an Internet-Draft derived from internal research material solely to enable structured technical review,
        interoperability discussion, and disciplined specification development under the Internet-Draft process. It is a work-in-progress
        research artefact and does not constitute a standard, recommendation, or finished specification.
      </t>
      <t>
        The text aims to preserve a clear separation of normative and informative content. Requirement words are used only where
        protocol behaviour is intentionally specified. Where this document provides numeric guidance (for example timers, windows,
        or congestion-related tuning), the intent is to offer recommended bounds suitable for experimentation; profile-based behaviour
        and implementation discretion are explicitly expected within stated limits.
      </t>
      <t>
        UZP is designed for identity-first, zero-port environments where conventional port-based transport assumptions do not hold;
        it is not presented as a universal replacement for existing transports.
      </t>
    </note>
  </front>
  <middle>
    <section anchor="scope-and-status" toc="include">
      <name>Scope and Status</name>
      <t>
        This Internet-Draft describes UZP as an experimental transport protocol for the Universal Zero-Port Interconnect Framework (UZPIF; <xref target="UZPIF"/>).
        The intent is to support early peer review and implementation experiments; substantial revision is expected.
      </t>
      <t>
        Unless otherwise stated, design parameters and numeric values are provided as numeric guidance and recommended bounds,
        rather than as fixed constants. Implementations may adopt alternative congestion tuning, profile-based behaviour, and
        implementation-defined choices within the constraints explicitly described in the relevant sections.
      </t>
      <t>
        It is not a universal replacement, is not mandated outside its target environment, and is designed for
        experimentation and profile-driven deployments.
      </t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The deployed Internet largely continues to rely on listening sockets bound to IP:port tuples. This design, inherited from the 1980s, exposes every reachable service to scanning, unsolicited ingress, and a wide class of lateral-movement and amplification attacks. Contemporary defences such as WAFs, DDoS scrubbing, layered ACLs, and micro-segmentation treat the symptom, not the cause.</t>
      <t>The Universal Zero-Port Interconnect Framework (UZPIF; <xref target="UZPIF"/>) proposes a post-port architecture in which services are reached only via outbound, identity-bound connections to Rendezvous Nodes (RNs). UZP is the transport protocol that operates beneath UZPIF (<xref target="UZPIF"/>) and is designed for identity-first, zero-port environments where conventional port-listening assumptions do not hold. In that context, it provides transport and security semantics comparable to conventional TCP+TLS or QUIC+TLS data planes, while keeping legacy applications unmodified above a Host Identity Layer (HIL).</t>
      <t>The design builds on ideas from QUIC <xref target="RFC9000"/>, HIP <xref target="RFC7401"/>, and Zero Trust Architecture <xref target="NIST-SP800-207"/>. Rendezvous-based systems such as Tor <xref target="TOR2004"/> demonstrate the value of decoupling endpoint identity from network location. UZP is intended to be compatible with post-quantum cryptography profiles <xref target="NIST-PQC"/>.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/> and <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <t>This document uses terminology from UZPIF (<xref target="UZPIF"/>) and related work:</t>
        <ul>
          <li>
            <t>Endpoint (EP): A host participating in UZP communication. EPs never listen on public IP:port tuples.</t>
          </li>
          <li>
            <t>Rendezvous Node (RN): A relay node that accepts outbound connections from EPs, validates Pantheon-issued Grants, and stitches identity-bound flows.</t>
          </li>
          <li>
            <t>Pantheon: The global identity, attestation, and policy plane used by UZPIF (<xref target="UZPIF"/>) and UZP.</t>
          </li>
          <li>
            <t>Canonical Identity (CID): A long-lived, cryptographic identifier derived from a principal's public signing key.</t>
          </li>
          <li>
            <t>Ephemeral Identity (EID): A per-session identity bound to short-lived key material.</t>
          </li>
          <li>
            <t>Block: The unit of reliability (acknowledgement / retransmission) in UZP.</t>
          </li>
          <li>
            <t>Frame: The unit of application payload mapping inside a block.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="design-goals">
      <name>Design Goals</name>
      <t>UZP is intended to satisfy the following primary goals:</t>
      <ul>
        <li>
          <t>Zero exposed ports: EPs MUST operate with no listening sockets reachable from the public Internet. All communication originates from outbound connections to RNs.</t>
        </li>
        <li>
          <t>Identity-first addressing: The fundamental addressing object is a cryptographic identity (CID/EID), not an IP:port pair, following the spirit of HIP <xref target="RFC7401"/>.</t>
        </li>
        <li>
          <t>Encrypted-by-default: All application data MUST be carried over an AEAD-protected channel, with forward secrecy and exporter support comparable to TLS 1.3 <xref target="RFC8446"/>.</t>
        </li>
        <li>
          <t>Modern and PQ-capable: The handshake MUST support both classical and post-quantum key exchange and authentication, with algorithm agility and central policy control <xref target="NIST-PQC"/>.</t>
        </li>
        <li>
          <t>Block-level reliability: Reliability is expressed at the block level, enabling selective retransmission and deterministic pacing similar in spirit to, but distinct from, QUIC's stream framing <xref target="RFC9000"/>.</t>
        </li>
        <li>
          <t>RN minimal trust: RNs MUST NOT learn application plaintext or hold long-term identity secrets; they may only drop, reorder, or delay encrypted traffic.</t>
        </li>
      </ul>
      <t>Where this document provides numeric guidance (for example, congestion-related tuning, replay windows, or pacing), it is intended as recommended bounds for experimentation. Implementations may apply profile-based behaviour and implementation-defined tuning within any explicit limits stated in the relevant sections.</t>
    </section>
    <section anchor="architectural-overview">
      <name>Architectural Overview</name>
      <t>At a high level, UZP operates as follows:</t>
      <ol>
        <li>
          <t>Each EP opens one or more outbound control channels to one or more RNs.</t>
        </li>
        <li>
          <t>The EP authenticates to Pantheon and obtains Grants that authorise communication with a peer identity under specific policy.</t>
        </li>
        <li>
          <t>To talk to another EP, the initiator submits a Join request to an RN, containing its own CID/EID, the target CID, and the relevant Grant material.</t>
        </li>
        <li>
          <t>The responder independently connects to an RN (which MAY be the same RN or a different RN in the same trust domain) and presents its own Grants.</t>
        </li>
        <li>
          <t>The RN stitches the two UZP sessions into a zero-port interconnect tunnel (ZPIT) once both sides have been validated.</t>
        </li>
      </ol>
      <t>The RN never terminates end-to-end cryptography; each side performs a UZP handshake with the RN, derives end-to-end keys using exporter material, and then switches to E2E AEAD for application data.</t>
      <section anchor="high-level-session-flow">
        <name>High-Level Session Flow</name>
        <figure anchor="fig-highlevel">
          <name>High-level communication pattern: both endpoints initiate outbound-only connections to the RN, which stitches an end-to-end ZPIT.</name>
          <artwork>
EP_I (Initiator)      RN              EP_R (Responder)
     |-- outbound ctl/data --&gt;|&lt;-- outbound ctl/data --|
     |&lt;==== E2E AEAD over ZPIT (via RN) ====&gt;|
</artwork>
        </figure>
        <t>This figure shows both endpoints initiating outbound sessions to the RN, which stitches them into a ZPIT.</t>
      </section>
      <section anchor="identity-model-and-cid-stability">
        <name>Identity Model and CID Stability</name>
        <t>Pantheon issues long-term signing keys to principals; the canonical identity CID is defined as a hash (e.g., BLAKE3) of the public signing key. CIDs are intended to be stable over multi-year time scales and across multiple devices in the same administrative entity, and SHOULD only change when the underlying key is rotated or revoked due to compromise.</t>
        <t>Each transport session also has an Ephemeral Identity (EID), derived from short-lived key material. EIDs are bound to CIDs via Pantheon-issued credentials and are used within the UZP handshake and record layer.</t>
        <t>This separation mirrors the long-term vs. ephemeral key split in both HIP <xref target="RFC7401"/> and TLS 1.3 <xref target="RFC8446"/>.</t>
      </section>
    </section>
    <section anchor="handshake-overview">
      <name>Handshake Overview</name>
      <t>The UZP handshake provides:</t>
      <ul>
        <li>
          <t>Mutual (or unilateral) authentication bound to CIDs and EIDs.</t>
        </li>
        <li>
          <t>Negotiation of cipher suites and AEAD algorithms.</t>
        </li>
        <li>
          <t>Derivation of exporter keys for UZPIF (<xref target="UZPIF"/>) and higher layers.</t>
        </li>
        <li>
          <t>Integration of Pantheon Grants, including replay protection and policy binding.</t>
        </li>
      </ul>
      <t>The RN forwards handshake messages but does not terminate the cryptographic handshake itself. Instead, both EPs derive end-to-end secrets using exporter material bound to the identities and Grants, and then switch to direct AEAD protection across the ZPIT.</t>
      <section anchor="flight-diagram">
        <name>Flight Diagram</name>
        <t>Figure <xref target="fig-handshake"/> sketches a representative two-party handshake mediated by an RN. Exact messages and encoding are defined in the wire-format section (not reproduced in full here).</t>
        <figure anchor="fig-handshake">
          <name>Example UZP handshake flights via an RN. Message indices [1]-[6] are explained in the legend. Labels are illustrative; exact message contents are defined in the wire specification.</name>
          <artwork><![CDATA[
EP_I (Init)      RN      EP_R (Resp)
 |--[1] CH1: CH_I, EID_I, Grant ----->|
 |              |--[2] CH1' (fwd) -->|
 |              |<-[3] SH, EE, CERT_R, FIN_R--|
 |<-[4] SH', EE', CERT'_R, FIN'_R ----|
 |--[5] Finished_I ------------------->|
 |              |--[6] Finished'_I --->|
]]></artwork>
        </figure>
        <t>This figure summarizes the RN-relayed handshake flights and where forwarding occurs.</t>
        <t>Legend:</t>
        <dl>
          <dt>[1]</dt>
          <dd>
            <t>CH1: ClientHello_I, EID_I, Grant</t>
          </dd>
          <dt>[2]</dt>
          <dd>
            <t>CH1': Forwarded ClientHello_I</t>
          </dd>
          <dt>[3]</dt>
          <dd>
            <t>SH, EE, CERT_R, FIN_R</t>
          </dd>
          <dt>[4]</dt>
          <dd>
            <t>SH', EE', CERT'_R, FIN'_R</t>
          </dd>
          <dt>[5]</dt>
          <dd>
            <t>Finished_I (initiator final confirm towards RN)</t>
          </dd>
          <dt>[6]</dt>
          <dd>
            <t>Finished'_I (forwarded initiator confirm towards responder)</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="crypto-negotiation">
      <name>Cryptographic Negotiation and AEAD Tag Length</name>
      <t>UZP supports an extensible cipher-suite registry. A cipher suite includes:</t>
      <ul>
        <li>
          <t>A key exchange mechanism (e.g., X25519, or a PQ KEM candidate).</t>
        </li>
        <li>
          <t>A signature algorithm for authentication.</t>
        </li>
        <li>
          <t>An AEAD algorithm for record protection (e.g., AES-GCM-128, ChaCha20-Poly1305).</t>
        </li>
        <li>
          <t>A KDF (e.g., HKDF-SHA256 or a BLAKE3-based KDF).</t>
        </li>
      </ul>
      <section anchor="aead-tag-length">
        <name>AEAD Tag Length</name>
        <t>The AEAD tag length is algorithm-dependent but subject to the following constraints:</t>
        <ul>
          <li>
            <t>Implementations MUST use a tag length of at least 96 bits for all UZP application data records.</t>
          </li>
          <li>
            <t>When an AEAD algorithm allows variable tag lengths, endpoints SHOULD use the algorithm's full tag length (typically 128 bits for AES-GCM) and MUST NOT negotiate a tag length below 96 bits.</t>
          </li>
          <li>
            <t>The tag length used for a session is fixed for the lifetime of that session and is implied by the negotiated cipher suite.</t>
          </li>
        </ul>
        <t>This requirement follows common practice in modern protocols, which treat 96 bits as a practical lower bound on AEAD authentication tags for wide-area deployments, while allowing future AEADs with different native tag lengths.</t>
      </section>
    </section>
    <section anchor="blocks-frames-reliability">
      <name>Blocks, Frames, and Reliability</name>
      <t>UZP uses a block-oriented reliability model:</t>
      <ul>
        <li>
          <t>A block is a unit of transmission and acknowledgement.</t>
        </li>
        <li>
          <t>Each block contains one or more frames, which carry application data or control information.</t>
        </li>
        <li>
          <t>Blocks carry monotonically increasing block numbers, and ACK frames reference blocks, not individual bytes.</t>
        </li>
      </ul>
      <t>This block-level model enables selective retransmission and deterministic pacing:</t>
      <ul>
        <li>
          <t>EPs can rapidly detect loss patterns and retransmit only affected blocks.</t>
        </li>
        <li>
          <t>Congestion control and pacing can be applied over well-defined block units, similarly to how QUIC applies logic over packet and frame boundaries <xref target="RFC9000"/>.</t>
        </li>
      </ul>
      <t>Blocks are encrypted and authenticated with the negotiated AEAD. The associated data includes:</t>
      <ul>
        <li>
          <t>CID and EID for both parties.</t>
        </li>
        <li>
          <t>Direction and block number.</t>
        </li>
        <li>
          <t>A context-specific label (e.g., "uzp-application" or "uzp-handshake").</t>
        </li>
      </ul>
    </section>
    <section anchor="exporters">
      <name>Exporters</name>
      <t>UZP defines an exporter interface analogous to TLS exporters <xref target="RFC8446"/>. Exporters derive context-specific keys from the main handshake secrets, using labels and context values that MUST be bound to identities and transport parameters.</t>
      <t>An exporter input consists of:</t>
      <ul>
        <li>
          <t>A label (e.g., "uzpif-zpit-key").</t>
        </li>
        <li>
          <t>A context value (which may include CIDs, EIDs, RN identifiers, and Grant nonces).</t>
        </li>
        <li>
          <t>An output length.</t>
        </li>
      </ul>
      <t>Exported keys are used by:</t>
      <ul>
        <li>
          <t>UZPIF (<xref target="UZPIF"/>) to derive per-ZPIT keys for monitoring or additional encapsulation.</t>
        </li>
        <li>
          <t>Higher-layer protocols wishing to bind application security directly to UZP session properties.</t>
        </li>
      </ul>
      <t>Exporters MUST incorporate both CIDs and the negotiated transport parameters so that re-use of exporters across sessions is cryptographically separated.</t>
    </section>
    <section anchor="zero-rtt">
      <name>0-RTT Data and Replay Handling</name>
      <t>UZP allows, but tightly constrains, 0-RTT (early) data:</t>
      <ul>
        <li>
          <t>Early data MAY be sent by a client that possesses a valid, non-expired session resumption token and a Pantheon Grant that explicitly permits early data.</t>
        </li>
        <li>
          <t>Early data MUST be cryptographically distinct from 1-RTT data and MUST be bound to a monotonically increasing Grant nonce.</t>
        </li>
        <li>
          <t>RNs MUST treat 0-RTT flows as replayable at the transport level and MUST NOT rely on transport-layer properties for replay prevention.</t>
        </li>
      </ul>
      <t>Replay prevention is handled jointly by:</t>
      <ul>
        <li>
          <t>Pantheon Grants, which include a Grant nonce and time window; replayed Grants outside their window MUST be rejected.</t>
        </li>
        <li>
          <t>Endpoints, which track nonces and session tickets, and MUST refuse to process 0-RTT requests that would not be safe to replay at the application level.</t>
        </li>
      </ul>
      <t>If Pantheon policy specifies "no-replay" for a given Grant, endpoints MUST NOT use 0-RTT for any traffic under that Grant, and RNs MUST drop any early data tagged with that policy.</t>
    </section>
    <section anchor="pq-profiles">
      <name>Post-Quantum Profiles and Crypto Agility</name>
      <t>Given the long-term horizon of identity-centric networking, UZP is designed to support post-quantum (PQ) algorithms:</t>
      <ul>
        <li>
          <t>Cipher suites define both classical and PQ-capable KEMs and signature schemes.</t>
        </li>
        <li>
          <t>Pantheon policy can enforce that certain tenants or epochs require PQ-only or hybrid key exchange.</t>
        </li>
        <li>
          <t>The handshake format allows negotiation of PQ suites in parallel with classical ones, similar to ongoing PQ-TLS efforts <xref target="NIST-PQC"/>.</t>
        </li>
      </ul>
      <t>Transport endpoints SHOULD support at least one PQ KEM and one PQ-capable signature algorithm as they become standardised.</t>
    </section>
    <section anchor="rn-behaviour">
      <name>Rendezvous Node Behaviour</name>
      <t>RNs are designed to be minimally trusted intermediaries. An RN:</t>
      <ul>
        <li>
          <t>Accepts outbound connections from EPs and validates their Pantheon-issued credentials and Grants.</t>
        </li>
        <li>
          <t>Matches Join requests between EPs and stitches them into ZPITs according to policy.</t>
        </li>
        <li>
          <t>Relays encrypted blocks between stitched endpoints, potentially applying rate limits, traffic shaping, and policy enforcement on encrypted metadata.</t>
        </li>
      </ul>
      <t>Importantly, an RN:</t>
      <ul>
        <li>
          <t>MUST NOT terminate end-to-end UZP AEAD protection.</t>
        </li>
        <li>
          <t>MUST NOT hold long-term secrets for EP identities.</t>
        </li>
        <li>
          <t>MAY observe and act on limited metadata (e.g., CIDs, block counts, timing) comparable to the exposure in QUIC's on-path model <xref target="RFC9000"/>.</t>
        </li>
      </ul>
      <t>For high-assurance deployments, multi-RN topologies similar to onion routing may be used <xref target="TOR2004"/>, with attestation chains that prove that each RN conforms to specified software and configuration baselines.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>UZP's security properties derive from:</t>
      <ul>
        <li>
          <t>The zero-port architecture of UZPIF (<xref target="UZPIF"/>) (no open listeners).</t>
        </li>
        <li>
          <t>The use of modern AEAD algorithms with at least 96-bit tags.</t>
        </li>
        <li>
          <t>Identity-first addressing via CIDs and EIDs, influenced by HIP <xref target="RFC7401"/>.</t>
        </li>
        <li>
          <t>Exporters that bind higher-layer security directly to transport identities and parameters.</t>
        </li>
        <li>
          <t>Strong replay controls via Grants and endpoint tracking of nonces and tickets.</t>
        </li>
      </ul>
      <t>Residual risks include traffic analysis, RN compromise (drop/delay behaviour), and application-layer weaknesses. These are mitigated through:</t>
      <ul>
        <li>
          <t>Multi-RN topologies and attestation.</t>
        </li>
        <li>
          <t>Pantheon policy that can revoke identities and Grants quickly.</t>
        </li>
        <li>
          <t>Integration with Zero Trust principles <xref target="NIST-SP800-207"/>.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no requests of IANA at this time. Future revisions of UZP may define registries for protocol parameters (for example cipher suites, frame types, and exporter labels), but such actions are out of scope for this introductory specification.</t>
      <ul>
        <li>
          <t>A registry for UZP cipher suites and AEAD algorithms.</t>
        </li>
        <li>
          <t>A registry for frame and block types.</t>
        </li>
        <li>
          <t>A registry for exporter labels used by UZP and UZPIF (<xref target="UZPIF"/>).</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
    </references>
    <references>
      <name>Informative References</name>
      <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.9000.xml"/>
      <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.7401.xml"/>
      <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8446.xml"/>
      <reference anchor="UZPIF">
        <front>
          <title>Universal Zero-Port Interconnect Framework (UZPIF)</title>
          <author fullname="Benjamin Anthony Fisher"/>
          <date/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-dpa-uzpif-framework"/>
      </reference>
      <reference anchor="NIST-SP800-207" target="https://doi.org/10.6028/NIST.SP.800-207">
        <front>
          <title>Zero Trust Architecture</title>
          <author fullname="Scott Rose"/>
          <author fullname="Oliver Borchert"/>
          <author fullname="Stu Mitchell"/>
          <author fullname="Sean Connelly"/>
          <date year="2019"/>
        </front>
        <seriesInfo name="NIST" value="SP 800-207"/>
      </reference>
      <reference anchor="NIST-PQC" target="https://csrc.nist.gov/Projects/post-quantum-cryptography">
        <front>
          <title>NIST Post-Quantum Cryptography Standardization: Fourth Round Candidate Algorithms</title>
          <author fullname="National Institute of Standards and Technology"/>
          <date year="2022"/>
        </front>
      </reference>
      <reference anchor="TOR2004">
        <front>
          <title>Tor: The Second-Generation Onion Router</title>
          <author fullname="Roger Dingledine"/>
          <author fullname="Nick Mathewson"/>
          <author fullname="Paul Syverson"/>
          <date year="2004"/>
        </front>
        <seriesInfo name="USENIX" value="Security Symposium"/>
      </reference>
    </references>
    <section anchor="acknowledgements" numbered="false" toc="exclude">
      <name>Acknowledgements</name>
      <t>The author thanks colleagues and early reviewers for discussions on identity-centric networking, rendezvous transports, and post-quantum transition considerations. Any errors or omissions remain the author's responsibility.</t>
    </section>
  </back>
</rfc>
