Zero-knowledge handshake

A proof is not a session.

Fiat–Shamir proofs can be replayed. A handshake binds the proof to a fresh nonce, an audience, and an ephemeral Diffie–Hellman key. The orchestrator can then route confidential work against a session, not a screenshot of a transcript.

Back to the proof lab

ProtocolMovesReplaySession key
Fiat–Shamir NIZK1 messageReusable unless boundNone
3-move SchnorrCommit → challenge → respondNonce is single-useNone
This lab (SIGMA-style)Schnorr + ephemeral DHNonce + confirm boundYes — hash shown, key never leaves the server
Noise / IKE / TLS-zkFull AKE stacksChannel bindingProduction transport. Later.

Verifier · Orchestrator

02609b2024339695b76a29ebbb28cd4bdc8169fe8437a5ddaf43ff36335093e9ed

After established, Next move is a replay — it must fail.

  1. Open
  2. Commit
  3. Challenge
  4. Session

Open a handshake. Three moves after that: commit, challenge, respond.

Sessions

No handshakes yet.