PQKEM Ceremony Console

Quantum-Safe Key Establishment PoC
ML-KEM-768 FIPS 203 AES-256 OUT RFC 9935 PEM
This page needs a secure context (https:// or file://) for WebCrypto. Cryptography is disabled.

Session

Ceremony

Proof points

Operation log

All cryptography runs in this tab. This page makes zero network requests (CSP: connect-src 'none').
pqkem-web 1.0.0 · noble-post-quantum 0.7.0 · built 2026-08-11 19:46 UTC

How this ceremony works

A complete guide to running a quantum-safe key establishment exchange with this console.

What you are about to do

Two organizations establish the same AES-256 key by exchanging files over email, using ML-KEM-768 (NIST FIPS 203), a key encapsulation mechanism designed to resist quantum computers. No secret ever travels in the clear: the emailed artifacts are a public key, a ciphertext, and a short check value. All cryptography runs inside this browser tab; this page makes zero network requests.

Before you start

The six steps

StepWhoWhat happens
1 GenerateinitiatorCreates the ML-KEM-768 key pair. The public key (1184 bytes) will be shared; the private key never leaves the machine.
2 ShareinitiatorDownloads the public key artifact and emails it as an attachment. Both sides confirm the key fingerprint on a call.
3 EncapsulateresponderImports the public key, runs encapsulation, and obtains the AES-256 key plus a 1088-byte ciphertext. Shows the KCV.
4 ReturnresponderDownloads the ciphertext and KCV artifacts and emails them back.
5 DecapsulateinitiatorImports the ciphertext and recovers the AES-256 key with the private key.
6 VerifybothKey check values are compared. A green MATCH means both sides provably hold the same key; that is the PoC success criterion.

The three modes

ModeHow the AES-256 key is obtained
directThe 32-byte ML-KEM shared secret is the key. Simplest; start here.
kdfThe key is derived with HKDF-SHA-256 from the shared secret. Salt and info travel inside the artifact.
wrapThe responder generates the key and wraps it with AES-KW under the shared secret. Use when the responder must choose the key.

Files: what travels, what never leaves

Verification and the implicit-rejection trap

ML-KEM decapsulation never fails visibly. A corrupted ciphertext quietly produces a different key (FIPS 203 calls this implicit rejection). The KCV comparison in step 6 is therefore the only real proof. Never skip Verify.

Importing from other tools

The import zones accept our JSON envelope, standard PEM (-----BEGIN PUBLIC KEY-----), raw DER, bare base64, and hex. If the counterparty uses different tooling (OpenSSL, Bouncy Castle, an HSM), their public keys and ciphertexts still work; format friction is itself a documented learning objective of this PoC.

After the exchange