Broken Key Protocol — a concrete ZK example:
- Verifier V has two keys, one compromised
- Prover P knows the compromised key
- P proves knowledge without revealing which key is compromised
Property to verify: V learns that P has a key, but not which key.
This is expressible in dynamic epistemic logic (Costa & Brogi).
sequenceDiagram
participant P as Prover (P)
participant V as Verifier (V)
P->>V: ∗
V->>V: Generate fresh m
V->>P: enc(k₁, m), enc(k₂, m), h(m)
P->>P: check(enc(k₁,m), enc(k₂,m))
P->>V: m