Post-Quantum VPN
QuicN
The QUIC-based Post-Quantum VPN protocol that enables the Cosineq architecture. High performance and small enough to live in a container.
On a 4 vCPU instance with a ConnectX-5 SR-IOV NIC, QuicN delivers 24% more traffic than wireguard-go and 22% more than kernel WireGuard, using 96 MB of memory against wireguard-go's 431 MB.
Single TCP flow, hands-off, both directions, identical kernels both ends. 12 August 2026. On a large multi-core host the throughput ordering changes; see Performance.
The protocol that is the driver for Cosineq, designed and developed by Cosinium. Based on QUIC and TLS 1.3, with mandatory post-quantum key exchange at every point in the architecture, including on networks that choose a classical identity algorithm.
Algorithms
| Role | Algorithm | Notes |
|---|---|---|
| Key exchange, every handshake | X25519MLKEM768 | Mandatory post-quantum hybrid X25519 + ML-KEM-768 (FIPS 203) with no classical-only encryption algorithms offered. |
| Identity signature, default | ML-DSA-44 | Self-created X.509, pinned by the SHA-256 of its SubjectPublicKeyInfo (SPKI). No CA and no chain in the certificate. |
| Identity signature, opt-in | Ed25519 | A classical algorithm you can choose for your network, but only deliberately, because it is not post-quantum safe. Available for interoperability or low-power devices. |
| Control-plane trust root | ML-DSA-44 | Always enforced on controllers, relays, STUN servers and rendezvous tickets; they stay post-quantum even on an Ed25519 network. |
| Data plane | AES-256-GCM | Only two TLS 1.3 cipher suites are accepted and anything else closes the connection. AES is chosen because any reasonable device has built-in hardware instructions that make it fast and efficient. |
Session confidentiality post-quantum everywhere with hybrid key exchange as a mandatory on every network. Ed25519 is offered any only for relaxingpeer identity authentication, but the trust root stays post-quantum regardless.
How a connection actually gets made
In every case the encrypted overlay is a layer riding over the network you already have. These diagrams show it as a session floating above the physical path.
Why it is fast
All without a kernel module, DPDK, hugepages, dedicated cores or a modified kernel.
- Minimising OS system calls and carrying dozens of packets
- Uses all the network packet offloads available to userspace from the kernel to move as many packets across the network stack as efficiently as possible.
- Tuned algorithms to attain crypto performance
- Dedicated workers that process the packets efficiently, without eating up all CPU resources. The choices of algorithms is deliberate to keep the other CPU cores available for system use. Memory usage is also tuned to match the host platform so that it stays flat while transferring at high speed, even when under pressure.
- Keeping it quiet when it should
- All traffic processing is event-based without endless loops, so the CPU stays idle when nothing is happening - there is no polling core burning power just to wait.
Capabilities built into the protocol
- Access inspection on every packet
- A compiled per-peer filter enforced on both egress and ingress, and swappable atomically without tearing the session down. The 12.3 Gbit/s figure was measured with ACLs, source validation and telemetry all on.
- Secure STUN
- Unlike RFC 5389, the client's message is never sent in the clear. It comes back encrypted under a per-device key.
- A protocol you could implement from specification
- It's all UDP QUIC based. Three easily parsable control messages on one stream, and everything else is one data-plane format.
- Fail closed with no weaker path
- Failures such as a missing post-quantum group, a key mismatch, an unknown cipher or an unknown protocol version all close the VPN connection, rather than falling back to anything weaker.
quicn-rs: a baseline open implementation
quicn-rs is a minimal peer-to-peer build of the protocol in Rust that works on Linux, macOS and Windows. We developed it to show that the protocol is open and to act as an independent conformance check against our high-performance reference implementation. Stay tuned - we'll be sharing it in our public git repository.