Empirical/QM: Wiesner quantum-money minting / verification protocol #
Category: 3-Local (QM-validity content, no CSD ontology), like the rest of
Crypto/.
A deliberately simple, single-slot Wiesner money protocol built on the
unforgeability foundation of Crypto/QuantumMoney.lean. A full Wiesner banknote
slot is a pair (basis, value) ∈ {comp, had} × {0, 1} selecting one of the four
BB84 states, secret to the bank. The representative 2-state model used here
keeps the two non-orthogonal alternatives already proved in
Crypto/QuantumMoney.lean — |0⟩ (QuantumMoney.ket0, computational) and |+⟩
(QuantumMoney.ketPlus, Hadamard) — selected by a single secret bit. This is the
minimal pair that carries the security content (non-orthogonality ⟹ no cloning).
What this delivers #
mint— the slot state from the secret bit (false ↦ |0⟩,true ↦ |+⟩).verifyProb note recorded— the acceptance probability, the Born weight‖⟨recorded, note⟩‖²of the submittednoteprojected onto the bank's recorded eigenstate (Mathlib/QuantumInfo/Register.probis the same‖·‖²Born weight onQReg; here we state it directly via the inner product onEuclideanSpace ℂ (Fin 2)).wiesner_verify_honest— completeness: honest money verifies with certainty,verifyProb (mint b) (mint b) = 1(the prepared state is the recorded eigenstate).wiesner_forge_impossible— no perfect forgery: no isometry clones both Wiesner notes against a fixed blank, a direct instantiation ofQuantumMoney.quantum_money_unforgeable.wiesnerSecurity : Protocols.SecurityBoundandwiesner_forge_advantage_le— the reusableProtocolssecurity interface (shared with the E91 tranche), genuinely consumed by a proved per-slot acceptance bound.
Honest scope: the security bound is qualitative #
QuantumMoney.quantum_money_unforgeable is qualitative — it rules out a
perfect cloner, not a quantitative cloning fidelity. The corpus does not
contain the optimal single-qubit cloning bound (the 3/4 per-qubit Wiesner
counterfeiting probability of Wiesner 1983 / Molina-Vidick-Watrous 2013), so a
non-trivial quantitative forgery ε is not available here. Accordingly
wiesnerSecurity.ε := 1 is the trivial probability bound (every acceptance
probability is ≤ 1, proved via Cauchy-Schwarz in wiesner_forge_advantage_le),
and the genuine security content is split off as the qualitative impossibility
wiesner_forge_impossible: the bound-attaining perfect forgery (a cloning
isometry, advantage = 1) does not exist. A quantitative ε (the optimal cloning
fidelity) is named here as out of scope — a separate later tranche.
ε := 1/2 (the cross-basis overlap ‖⟨0|+⟩‖² = 1/2) is deliberately not used
as the bound: it is an attained per-slot value of one wrong-guess strategy, not
a valid upper bound on adversary advantage (an adversary can do strictly better,
up to the 3/4 cloning value not in the corpus), so reporting it as a
SecurityBound would be dishonest.
Source #
Wiesner 1983, SIGACT News 15(1), 78 ("Conjugate Coding"); unforgeability via
the no-cloning theorem (Wootters-Zurek 1982 / Dieks 1982), as packaged in
Crypto/QuantumMoney.quantum_money_unforgeable.
Mint. The single-slot Wiesner money state selected by the bank's secret
bit: false mints the computational state |0⟩, true the Hadamard state |+⟩
(the representative non-orthogonal 2-state model; see the module docstring).
Equations
Instances For
Verify. The bank's acceptance probability for a submitted note against
its recorded eigenstate recorded: the Born weight ‖⟨recorded, note⟩‖² of the
note measured in the recorded basis (accept iff the outcome equals the recorded
value).
Instances For
A unit state verified against itself accepts with certainty: the Born weight
‖⟨ψ, ψ⟩‖² = ‖(‖ψ‖ : ℂ)²‖² = 1.
Completeness: honest money always verifies. Measuring the minted state in
its own (recorded) basis returns the recorded value with probability one:
verifyProb (mint b) (mint b) = 1. The prepared state is the recorded
eigenstate, so the Born weight is 1.
No perfect forgery (protocol level). Over any tensor structure with the
inner-product factorisation ⟨a⊗b, c⊗d⟩ = ⟨a,c⟩·⟨b,d⟩ and a fixed unit blank
e0, no isometry U can forge (clone) both minted Wiesner notes — mint false = |0⟩ and mint true = |+⟩ — against the same blank. A perfect counterfeiter would
in particular clone one of two non-orthogonal states, which is impossible. Direct
instantiation of QuantumMoney.quantum_money_unforgeable (no new content beyond
the proved non-orthogonality witness QuantumMoney.wiesner_nonorthogonal).
The Wiesner money protocol's Protocols.SecurityBound, reusing the interface
shared with the E91 QKD tranche (Crypto/E91KeyRate.e91Security). The bound is
ε := 1, the trivial probability bound: every single-slot acceptance / forgery
probability is ≤ 1 (proved in wiesner_forge_advantage_le). A non-trivial
quantitative ε (the optimal 3/4 cloning fidelity) is out of scope (not in
the corpus); the genuine security content is the qualitative impossibility of a
bound-attaining perfect forgery, wiesner_forge_impossible. See the module
docstring.
Equations
- CSD.Empirical.QM.Wiesner.wiesnerSecurity = { ε := 1, ε_nonneg := CSD.Empirical.QM.Wiesner.wiesnerSecurity._proof_1, ε_le_one := CSD.Empirical.QM.Wiesner.wiesnerSecurity._proof_2 }
Instances For
The per-slot forgery / acceptance advantage is bounded by the protocol's
SecurityBound. For any unit note and unit recorded eigenstate, the bank's
acceptance probability verifyProb note recorded is at most
wiesnerSecurity.ε = 1, proved from Cauchy-Schwarz (norm_inner_le_norm):
‖⟨recorded, note⟩‖² ≤ (‖recorded‖·‖note‖)² = 1. This is the genuine consumer that
makes SecurityBound load-bearing for the money tranche (exactly as
e91_eavesdropper_advantage consumes it for QKD): the field is a proved upper
bound on the acceptance probability, not decoration. The bound is trivial (ε = 1) because only the qualitative no-perfect-forgery content
(wiesner_forge_impossible) is available from the corpus; the quantitative 3/4
cloning bound is a separate tranche.