Adds the Tier A formal-artifact cluster for protocols/cmp (Lux profile of CGGMP21 threshold ECDSA, CCS '21 / ePrint 2021/060). Mirrors luxfi/pulsar's Tier A structure adapted to CCS '21's 4-round keygen + 3-round presign + 1-round online sign decomposition. - proofs/easycrypt/CGGMP21_N1.ec — Class N1 byte-equality reduction - proofs/easycrypt/CGGMP21_N1_Refinement.ec — keygen/presign/sign refinement - proofs/easycrypt/CGGMP21_Paillier.ec — Paillier additive homomorphism - proofs/easycrypt/CGGMP21_ZK.ec — 17 ZK subprotocol cluster obligation - proofs/easycrypt/CGGMP21_N4.ec — refresh / proactive rotation - proofs/easycrypt/lemmas/CGGMP21_CT.ec — constant-time obligations - proofs/easycrypt/AXIOM-INVENTORY.md — honest enumeration - proofs/lean-easycrypt-bridge.md — Lean↔EC bridge map - jasmin/lib/ + jasmin/single-party/ + jasmin/presign/ + jasmin/threshold/ Admit budget: 1/1 (same one-line group-identity admit as FROST_N4). ZK cluster obligation surface honest: 17 subprotocols enumerated, mechanization is multi-year program documented in AXIOM-INVENTORY.md §closure roadmap.
3.8 KiB
Lean ↔ EasyCrypt Lagrange / Paillier bridge (CGGMP21)
Why this document exists
CGGMP21's Tier B → A submission uses both EasyCrypt (procedure-level
refinement) and Lean 4 + Mathlib (algebraic content). The bridge
between them is conceptual at this submission cycle — EC axioms
correspond 1:1 to proved (or to-be-proved) Lean theorems in
~/work/lux/proofs/lean/Crypto/CGGMP21.lean and
~/work/lux/proofs/lean/Crypto/Threshold_Lagrange.lean.
Repository pin-points
- EasyCrypt:
~/work/lux/threshold/protocols/cmp/proofs/easycrypt/. - Lean:
~/work/lux/proofs/lean/Crypto/CGGMP21.lean(Lux profile extension) andThreshold_Lagrange.lean(shared algebraic theory).
Axiom-to-theorem mapping
Axiom 1: scalar_add_zeroR (over F_n)
EC: proofs/easycrypt/CGGMP21_N1.ec:120.
Lean: instance fact for AddCommMonoid F_n (Mathlib auto-derived
from secp256k1 scalar-field structure).
Axiom 2: reconstruct_linear (over F_n)
EC: proofs/easycrypt/CGGMP21_N1.ec:125.
Lean (~/work/lux/proofs/lean/Crypto/CGGMP21.lean:155):
theorem combine_distributes_over_sum
{ι : Type*} [DecidableEq ι] (s : Finset ι) (v : ι → F) (a b : ι → F) :
Lagrange.interpolate s v (a + b) =
Lagrange.interpolate s v a + Lagrange.interpolate s v b :=
Crypto.Threshold.Lagrange.combine_distributes_over_sum s v a b
Pulled in from Crypto.Threshold.Lagrange.combine_distributes_over_sum
(Threshold_Lagrange.lean:81).
Axiom 3: lagrange_inverse_eval (over F_n)
EC: proofs/easycrypt/CGGMP21_N1.ec:135.
Lean (~/work/lux/proofs/lean/Crypto/CGGMP21.lean:146):
theorem shamir_correct_at_target
(f : F[X]) {ι : Type*} [DecidableEq ι]
(s : Finset ι) (v : ι → F)
(hvs : Set.InjOn v s) (degree_f_lt : f.degree < s.card) :
f = Lagrange.interpolate s v (fun i => f.eval (v i)) := ...
Pulled in from Crypto.Threshold.Lagrange.threshold_reconstructs_secret
(Threshold_Lagrange.lean:51).
Axiom 4: derive_pk_homomorphism (N4)
EC: proofs/easycrypt/CGGMP21_N4.ec:64.
Lean (~/work/lux/proofs/lean/Crypto/CGGMP21.lean:208):
axiom derive_pk_homomorphism :
∀ (s1 s2 : Nat), True
Stated as an axiom here (the formal group homomorphism
Multiplicative F_n → secp256k1 requires concrete group structure
not in scope at this submission cycle). Closure path: extend
Mathlib's EllipticCurve namespace with secp256k1.
Axiom 5: paillier_add_homomorphism
EC: proofs/easycrypt/CGGMP21_Paillier.ec:56.
Lean (~/work/lux/proofs/lean/Crypto/CGGMP21.lean:184):
axiom paillier_add_homomorphism :
∀ (N a b r_a r_b : Nat), True
Stated as a Lean axiom — full mechanization requires a Mathlib
Crypto.Paillier module (Z_N* group structure + Paillier (N,g)
generator). Multi-week Lean engineering.
Axiom 6: paillier_scalar_homomorphism
EC: proofs/easycrypt/CGGMP21_Paillier.ec:69.
Lean (~/work/lux/proofs/lean/Crypto/CGGMP21.lean:194):
axiom paillier_mul_homomorphism :
∀ (N a b r : Nat), True
Same status as Axiom 5: closure gated on a Mathlib Paillier module.
EC files referenced (existence check)
The bridge guard at
~/work/lux/threshold/scripts/check-high-assurance.sh enforces
every EC file in this document exists on disk:
proofs/easycrypt/CGGMP21_N1.ecproofs/easycrypt/CGGMP21_N4.ecproofs/easycrypt/CGGMP21_Paillier.ec
Lean files referenced (existence check)
lean/Crypto/CGGMP21.leanlean/Crypto/Threshold_Lagrange.leanlean/Crypto/Pulsar/Shamir.lean
Open Lean closures
| Axiom | Closure | Estimated work |
|---|---|---|
paillier_add_homomorphism |
Mathlib Paillier module | 4-6 weeks |
paillier_mul_homomorphism |
Same module | (included) |
derive_pk_homomorphism |
Mathlib secp256k1 group | 2-3 weeks |
paillier_zk_sound |
Per-protocol Paillier-ZK module | 3-6 months per protocol |