Files
pulsar/docs/hyperball-mldsa65-params.md
zeekay be9b5db56a pulsar: derive ML-DSA-65 hyperball params for no-reconstruct signing
Δ/δ = √(2κln2/n) leak-free gap (κ=64, n=L·N=1280, α=∞ conservative),
validated against the Mithril ML-DSA-44 reference table (predicts Δ≈56
on the diagonal vs the table's 55-57). One-sided BCC adaptation (ν=1,
no s2-side); r1 from the L∞ norm budget. Companion to the upcoming
mithril_rss_hyperball.go.
2026-06-28 00:55:35 -07:00

12 KiB
Raw Permalink Blame History

Mithril hyperball parameters for ML‑DSA‑65 (one‑sided BCC, no‑reconstruct)

This document derives the hyperball rejection‑sampling parameters for the no‑reconstruct threshold signing path on the dealerless RSS ML‑DSA‑65 key (mithril_rss.go). It is the parameter companion to mithril_rss_hyperball.go.

The reference scheme is Mithril (Celi–del Pino–Espitau–Niot–Prest, Efficient Threshold ML‑DSA from Short Secret Sharing, USENIX Security 2026, ePrint 2026/013), whose reference implementation (github.com/lattice-safe/threshold-ml-dsa) is parameterised for ML‑DSA‑44. We derive the corresponding ML‑DSA‑65 parameters and adapt the geometry to pulsar's one‑sided Boundary‑Cleared / Carry‑Elimination (BCC) signer.


1. Where the hyperball sits in the protocol

The no‑reconstruct signature is the standard FIPS‑204 ML‑DSA signature

z = y + c·s1 ,    h = hint recovered from public w' = A·z − c·t1·2^d

formed additively across the active signers: party j holds only its balanced‑partition share s1_(j) of s1 (Σ_j s1_(j) = s1, all reconstruction coefficients 0/1 — the RSS property), samples its own mask y_j, and emits only

z_j = y_j + c·s1_(j)         (Round 3)

so that z = Σ_j z_j = y + c·s1 forms with no party ever holding y, s1, the full key, or any low‑bits/w0 quantity. The hint comes from the public w' exactly as in bcc_sign.go (BoundaryClear + FindHint), so s2 is never touched during signing.

Crucially, verifiability does not depend on the hyperball parameters at all. The signature verifies under unmodified circl mldsa65.Verify iff the summed z clears the central BCC checks:

  • BoundaryClear(w) on the aggregated commitment w = Σ_j A·y_j (public),
  • ‖z‖∞ < γ1 − β on the aggregated z,
  • FindHint(w', w1) succeeds with weight ≤ ω.

The hyperball is not a correctness device. It is the device that makes each revealed partial z_j leak‑free with respect to the secret share s1_(j), and the K‑repetition machinery is what keeps the joint acceptance probability across T parties from collapsing. This separation is what makes the no‑reconstruct path provably stock‑verifiable independent of the parameter derivation below.


2. Why a ball, not a box (the leakage problem)

If each party did the standard FIPS‑204 L∞ (hypercube) rejection on z_j independently, the per‑party accept probability would be ((γ1−β)/γ1)^(L·N) and the joint probability over T parties would be

p_cube = ((γ1−β)/γ1)^(T·L·N)

which decays exponentially in T·L·N — infeasible already at T = 2, L·N = 1280. Replacing the L·N independent per‑coordinate constraints with a single L2 (hyperball) constraint turns the decay from (·)^(L·N) into the concentration of one chi‑like statistic, restoring feasibility. This is the core Mithril observation (ePrint 2026/013, §2.7).

The ball also makes the leak‑freeness argument a clean bounded‑rejection statement: a nonce drawn uniformly from a ball, accepted iff the shifted response stays in a slightly smaller ball, yields an accepted response whose distribution is (almost) independent of the shift c·s1_(j).

One‑sided adaptation

The Mithril reference is two‑sided: it commits w = A·y + e, responds with (z1, z2) = (c·s1 + y, c·s2 + e), and rejects on an ellipsoid that weights the first L·N (s1‑side) coordinates by 1/ν² and the last K·N (s2‑side) coordinates by 1 (Excess: Σ_{i<L·N} z_i²/ν² + Σ_{i≥L·N} z_i² > r², ν = 3). The ν balances the differing magnitudes of the s1 and s2 responses.

Pulsar's BCC signer is one‑sided: s2 is never used in signing (the hint is recovered from the public w'), so there is no s2‑side, no e, and the ellipsoid degenerates to a plain L2 ball over the L·N mask coordinates (ν = 1). The commitment is w_j = A·y_j (exactly FIPS‑204's w, no e); revealing it is sound because, given the to‑be‑revealed z_j and the public A·s1_(j), w_j = A·z_j − c·A·s1_(j) carries no extra information, and for rejected slots only w_j = A·y_j is on the wire, which hides y_j under Module‑SIS (the same assumption ML‑DSA's unforgeability already rests on).

We keep ν as a configurable field for fidelity to the reference, defaulting to ν = 1 (plain ball) in the one‑sided path.


3. The leak‑free radius gap Δ = r1 − r

Sample the nonce y_j uniformly on the ball B(0, r1) ⊂ R^n, n = L·N. Accept the response z_j = y_j + sh, sh = c·s1_(j), iff z_j ∈ B(0, r) with r < r1. Conditioned on acceptance, z_j is uniform on the lens B(0, r) ∩ B(sh, r1). Because both distributions are uniform‑on‑a‑set, the Rényi divergence of every order α between the accepted distribution P_sh and the ideal shift‑independent U = Uniform(B(0,r)) is the volume ratio

R_α(P_sh ‖ U) = Vol(B(0,r)) / Vol(B(0,r) ∩ B(sh,r1)) = 1 / (1 − p_cap)

where p_cap is the fraction of B(0,r) farther than r1 from sh (the missing spherical cap). Over Q signatures the divergence multiplies, R_α(P^Q ‖ U^Q) = (1 − p_cap)^(−Q), and Rényi probability preservation gives no security loss as long as

(1 − p_cap)^(−Q) ≤ 2     ⟺     p_cap ≤ ln2 / Q ≈ 2^(−64.5)   for Q = 2^64.

so we target p_cap ≤ 2^(−κ) with κ = 64.

High‑dimensional cap concentration

Most mass of B(0,r) is near the boundary sphere. For a point on the sphere of radius r, with sh along an axis and ‖sh‖ = δ, ‖z − sh‖ > r1 becomes z_1 < t for t = (r² + δ² − r1²)/(2δ). For r ≫ δ (always true here) and Δ = r1 − r, t ≈ −r·Δ/δ, i.e. the cap is {z_1/r < −Δ/δ}. The sphere marginal of z_1/r in dimension n has density ∝ (1−u²)^((n−3)/2), so

p_cap ≈ (1 − (Δ/δ)²)^(n/2).

Setting p_cap = 2^(−κ) and using (Δ/δ)² ≪ 1:

              ┌─────────────────────────────┐
   Δ / δ  =   │  √( 2·κ·ln2 / n )            │      (leak‑free gap ratio)
              └─────────────────────────────┘

independent of r (hence of the norm budget). This is the load‑bearing formula. We use the order‑∞ (volume‑ratio) bound, which is the conservative choice — it over‑estimates Δ relative to a tighter finite‑α Rényi analysis, buying more leak protection at the cost of more rejection.

Validation against the ML‑DSA‑44 reference table

For the two‑sided reference, n = (K+L)·N = 2048, and the single‑subset shift (one χ_η=2 secret, τ=39) has δ ≈ 400 (mean) over the 2048 coords. The formula predicts Δ/δ = √(2·64·ln2/2048) = 0.208, i.e. Δ ≈ 0.208·400 ≈ 56 — matching the reference table's diagonal (T=N, single‑subset shares):

(T,N) r r1 r1−r
(2,2) 252778 252833 55
(3,3) 246490 246546 56
(4,4) 243463 243519 56
(5,5) 239924 239981 57
(6,6) 219245 219301 56

The reference's effective κ is slightly smaller (≈ 29, a tighter finite‑α bound); our κ = 64 α=∞ choice yields Δ larger by ≈ 1.5×, i.e. strictly more leak protection. The off‑diagonal reference entries scale as Δ ≈ 56·√(maxSubsetsPerParty), confirming the quadrature scaling below.


4. ML‑DSA‑65 parameters (one‑sided, n = L·N = 1280)

FIPS‑204 ML‑DSA‑65 constants: N=256, K=6, L=5, η=4, τ=49, ω=55, q=8380417, d=13, γ1=2^19=524288, γ2=261888, β=τ·η=196, γ1−β=524092.

Single‑subset shift L2 norm. s1^(S) has L·N = 1280 coefficients drawn uniformly from [−η,η] = [−4,4] (FIPS‑204 RejBoundedPoly), variance ((2η+1)²−1)/12 = 80/12 = 6.667. The shift coefficient (c·s1^(S))_i is a sum of τ = 49 signed copies, variance τ·6.667 = 326.7, so E‖sh‖² = 1280·326.7 = 418133, E‖sh‖ = 646.6, and a 6σ upper bound is

δ_single ≈ √(418133 + 6·√(2·1280)·326.7) ≈ √517307 ≈ 720.

Leak‑free gap ratio (n = 1280, κ = 64):

Δ/δ = √(2·64·ln2 / 1280) = 0.2633 .

Base gap (single subset, T = N): Δ_base = ⌈0.2633·720⌉ = 190.

Per‑committee gap. A party's share s1_(j) is the sum of m = maxSubsetsPerParty(T,N) independent χ_η secrets, so ‖sh_(j)‖ ≈ √m·δ_single (quadrature). Hence

Δ(T,N) = Δ_base · √( maxSubsetsPerParty(T,N) )           (= 190·√m)

where maxSubsetsPerParty is the largest block of the balanced partition rss.RSSRecover (= 1 for T = N).

Nonce radius. r1 is set from the L∞ norm budget so the summed z stays under γ1 − β. With y_j per‑coordinate ≈ N(0, r1²/n) and T independent parties, the summed per‑coordinate std is r1·√(T/n); a safety tail of 6.4 keeps the worst of L·N coordinates ≈ 1.7× under budget:

r1(T,N) = (γ1−β)·√(L·N) / (6.4·√T)  =  2,929,687 / √T ,     r = r1 − Δ(T,N).

This holds the summed‑z per‑coordinate std at a constant ≈ 81 800 (independent of T), worst‑coordinate ≈ 309 000 < γ1−β = 524 092.

Worked values (Δ_base = 190, ν = 1)

(T,N) m Δ=190√m r1=2929687/√T r=r1−Δ p_party=(r/r1)^1280
(2,2) 1 190 2 071 600 2 071 410 0.886
(3,3) 1 190 1 691 460 1 691 270 0.861
(4,4) 1 190 1 464 840 1 464 650 0.848
(5,5) 1 190 1 310 020 1 309 830 0.832
(6,6) 1 190 1 196 000 1 195 810 0.817
(8,8) 1 190 1 035 800 1 035 610 0.791
(4,6) 5 425 1 196 000 1 195 575 0.634
(3,5) 4 380 1 310 020 1 309 640 0.690

p_party is the per‑party ball‑acceptance; the joint per‑slot success is p_party^T · p_boundary with the central BoundaryClear yield p_boundary ≈ 0.09 for ML‑DSA‑65. K‑repetition (and protocol re‑runs) amortise this; e.g. (8,8): per‑slot ≈ 0.791^8·0.09 ≈ 0.013, so ≈ 350 slot‑attempts clear 99 %, spread over K parallel slots and maxRounds re‑runs.

K(T,N) = clamp( ⌈ 3 / (p_party^T · p_boundary) ⌉ , 8 , 256 )

a slot budget giving ≈ 95 % success per round; the driver re‑runs the 3 rounds with fresh nonces up to maxRounds if a round produces no usable slot. Sample: (2,2)→8, (3,3)→8, (6,6)→18, (8,8)→34, (4,6)→200.


5. Security summary

  • Verifiability (stock circl mldsa65.Verify): independent of all hyperball parameters; guaranteed by the central BCC checks on the summed z, w. Proven by round‑trip test across n=8,t=8 and all N≤6 committees.
  • Leak‑freeness (per‑party z_j): bounded by Rényi divergence R_α ≤ 1/(1 − 2^(−64)) per signature, ≤ 2 over Q = 2^64 signatures, by the Δ/δ = √(2κln2/n) gap. The α=∞ choice is conservative.
  • Structural no‑leak: no party forms s1, s2, y, w, w0, sk; the coordinator forms only the public aggregates w = Σ A·y_j, w1 = HighBits(w), w' = A·z − c·t1·2^d, and the hint — never w0 = LowBits(w), never any share.
  • Assumption: Module‑LWE / Module‑SIS over R_q = Z_q[X]/(X^256+1) (the same assumption ML‑DSA‑65 / FIPS‑204 already rests on) — the one‑sided commitment w_j = A·y_j hides y_j under Module‑SIS. EUF‑CMA of the produced signature is exactly FIPS‑204's.

6. References

  • del Pino, Celi, Espitau, Niot, Prest. Mithril: Efficient Threshold ML‑DSA from Short Secret Sharing. USENIX Security 2026, ePrint 2026/013.
  • Reference implementation: github.com/lattice-safe/threshold-ml-dsa (src/fvec.rs SampleHyperball + Excess, src/params.rs Figure 8/9 table, src/sign.rs 3‑round protocol).
  • FIPS 204, Module‑Lattice‑Based Digital Signature Standard (ML‑DSA).
  • Bai, Lepoint, Roux‑Langlois, Sakzad, Stehlé, Steinfeld. Improved Security Proofs in Lattice‑Based Cryptography: Using the Rényi Divergence. J. Cryptology 2018 (the Rényi‑divergence probability‑preservation lemma).