Spend forgery as matrix-SIS: the reshaping, its gaps, and the follow-up
Scope: Construction A spending research. Ownership/SIS proofs are not a prerequisite for the key-exchange ERC and do not prove the commitment account. Current signature-layer limits: Construction A security.
Background for PqStealth/Ownership.lean.
The search core
Spending a stealth account means proving knowledge of a short (s, e) with
A ·ᵥ s + e = t — the signing-key relation from Invariants.lean — bound to
the transaction. Forging a spend therefore means producing such a witness for a
target t you were not given: an inhomogeneous Short Integer Solution
instance.
Ownership.lean does three things:
- casts spend forgery as a VCVio
SIS.Problem, with the honest side proved trivial (the blinded secret is always a valid witness); - reshapes that inhomogeneous instance into the homogeneous matrix-SIS shape
VCVio's
SIS.matrixProblemuses, via the standard[A | I | −t]augmentation, and proves the two advantages are equal — so the MSIS claim is a theorem about VCVio's predicate rather than a naming convention; - instantiates all of it at the ML-DSA ring
Rqwith the real centered infinity-norm bound, and shows the game-level validity predicate is exactlyIsSigningKey.
Scope: this captures the SEARCH core (produce a witness = solve MSIS). The full
signature-of-knowledge unforgeability — message binding via Fiat–Shamir, the
forking-lemma extraction, HVZK — is the deeper reduction to SelfTargetMSIS;
see the follow-up at the end.
The [A | I | −t] augmentation
VCVio's SIS.matrixProblem is the homogeneous problem: find a short nonzero
z with M ·ᵥ z = 0. The ownership problem is inhomogeneous. The standard
bridge is the augmentation M = [A | I | −t], under which
M ·ᵥ (s, e, 1) = A ·ᵥ s + e − t
so kernel vectors whose last coordinate is 1 are exactly the ownership
witnesses, with e absorbed by the identity block. Carrying the marker 1 in
the shortness predicate (augmentedShort) makes the correspondence a bijection
on valid solutions, so the advantages are equal, not merely comparable. The
marker also supplies the z ≠ 0 conjunct of VCVio's matrix-SIS validity for
free (augmentedWitness_ne_zero).
readKey reads the ownership key back off an augmented matrix — A is the
left block, t the negated last column — and is a left inverse of
augmentedMatrix. That is what lets a forger for the homogeneous problem be
built from an ownership forger (augmentedAdversary).
spendForgeryAdvantage_eq_sis_advantage is the resulting equality;
spendForgeryAdvantage_le_augmentedSIS is its ≤ form for chaining;
honest_augmented_witness_valid is the non-vacuity check — a real ownership
solution maps to a real kernel vector, so the equality is not between two
unsatisfiable predicates.
ℝ≥0∞ versus ℝ
VCVio states search advantages in ℝ≥0∞ (SIS.advantage is a probOutput),
while every distinguishing advantage in this development
(ProbComp.boolDistAdvantage and the KEM/MLWE bounds built on it) is ℝ. The
ℝ≥0∞ form is kept as the definition of spendForgeryAdvantage — it is the
one that is definitionally VCVio's — and spendForgeryAdvantageReal is the ℝ
view used when a spend bound has to be added to, or chained with, those
advantages. Nothing is lost in the conversion: the advantage is a probability,
hence finite (spendForgeryAdvantage_ne_top).
What is proved and what is assumed
spendForgeryAdvantage_eq_sis_advantage is an exact reshaping: it puts
spend forgery into VCVio's homogeneous matrix-SIS shape and shows the two
advantages are equal, with the scoring function equal on the nose to
SIS.matrixProblem's (augmentedSISProblem_isValid_eq_matrixProblem, at
n = k, m = l + k + 1). It is not yet a reduction to the standard
uniform-MSIS assumption, because
(augmentedSISProblem keyGen isShort).sampleChallenge is the scheme's
distribution keyGen >>= (pure ∘ augmentedMatrix), whereas
(SIS.matrixProblem k (l+k+1) isShort').sampleChallenge is
$ᵗ Matrix (Fin k) (Fin (l+k+1)) R.
Two statements close that gap; neither is proved.
-
HNF absorption. A challenge of the shape
[A | I | −t]is as hard as a uniform one. Precisely: for everyadvthere existsadv'withSIS.advantage (augmentedSISProblem uniformKeyGen isShort) adv ≤ SIS.advantage (SIS.matrixProblem k (l+k+1) (augmentedShort isShort)) adv'where
uniformKeyGensamplesAandtuniformly. The textbook proof column-reduces a uniform challenge into Hermite normal form, which over a module ring needs an invertiblek × kblock — theRq-specific step. -
Target pseudorandomness. The real
keyGenis an MLWE sample:Ais uniform butt = A ·ᵥ s₁ + s₂with(s₁, s₂)short. Replacing it byuniformKeyGencosts the MLWE distinguishing advantage. Precisely, for everyadvthe two advantagesSIS.advantage (augmentedSISProblem mlweKeyGen isShort) advandSIS.advantage (augmentedSISProblem uniformKeyGen isShort) advdiffer by at most the advantage of the derived distinguisher againstLearningWithErrors.moduleMatrixProblem— the same assumption the detection side of this development already uses.
Chaining the proved equality with those two gives
spendForgeryAdvantage ≤ msisAdvantage + mlweAdvantage, the bound the spec
claims.
The ML-DSA instance
Everything above at R := Rq, with isShort := mldsaShort bound the real
ML-DSA range check: every coordinate polynomial of s and of e has centered
infinity norm at most the bound. The Boolean predicate the game uses is then
decidably equivalent to IsSigningKey from Invariants
(ownershipValid_mldsaShort_iff_isSigningKey), so "the adversary wins the SIS
game" and "the adversary produced a signing key it was never given" are the
same statement. mldsa_spendForgeryAdvantage_eq_sis_advantage is the
reshaping at that instance.
Rq is nontrivial (rq_one_ne_zero, and the Nontrivial Rq instance built on
it): the constant polynomial 1 differs from 0 in its degree-zero
coefficient. That is needed for the z ≠ 0 conjunct of matrix-SIS validity.
Follow-up: signature-of-knowledge unforgeability
What is proved is the search core: a spend is a witness for an MSIS instance, and forging one is solving that instance. The spend actually deployed (decision D-012) is a signature of knowledge — the ownership witness proved in zero knowledge and bound to the transaction — so full unforgeability is EUF-CMA of a Fiat–Shamir-with-aborts signature, not just hardness of the search problem.
The route, none of which is implemented:
- Package the ownership relation as a Sigma protocol
(
VCVio/CryptoFoundations/SigmaProtocol.lean): commitmentA ·ᵥ y, challengecfromsampleInBall, responsez = y + c · swith rejection sampling at the widened bound2·beta(beta_blinded_eq_two_beta). - Prove special soundness and HVZK for it; the widened bound is exactly what
the blinded secret needs (
blinded_is_signing_key). - Apply VCVio's Fiat–Shamir transform to get a signature of knowledge, with the transaction as the bound message.
- Reduce EUF-CMA of the result to
SelfTargetMSIS.Problem(LatticeCrypto/HardnessAssumptions/ShortIntegerSolution.lean), which is the assumption ML-DSA's own unforgeability rests on; the extraction step is the forking lemma over the random oracle already modelled bySelfTargetMSIS.experiment.