Files
papers/lp-020-quasar-consensus/sections/13-why-not-threshold-ml-dsa-or-threshold-fa.tex
zooqueen 1d7a0a8e1a Pulsar papers: BCC/CEF byte-equal threshold ML-DSA + honest status
lp-073-pulsar (the dedicated Pulsar paper):
- Add §3.8 "Byte-equal threshold ML-DSA (BCC/CEF)": boundary clearance
  (offline, message-independent), NonceCert (W1+ClearanceQC only, never
  full w), Ringtail-style 2-round online signing, public hint recovery
  (FindHint over w'=A·z−c·t1·2^d), Thm 3.1 BCC/CEF byte-equality, mode
  restriction (65/87 only), the V13 finding, honest status.
- Abstract: reframe from "Corona-family" to the shared two-round
  Module-LWE kernel + Pulsar's byte-equal-ML-DSA target via BCC/CEF;
  add review-ready status.
- §5 security: point Lean ref at Crypto.Pulsar.pulsar_pq_unforgeability
  (was Corona.lean/corona_pq_unforgeability — a conflation); add the
  byte-equal-mode proof posture + honest status.
- Reproducibility appendix: replace the v0.3 algebraic-aggregate
  "production path" (which leaked c·s2/c·t0, V13) with the no-leak
  BCC/CEF path + the superseded-V13 note + honest status.
- references.bib: fix lp073 (was titled "Corona ... Threshold
  Signatures" — misattribution) → Pulsar; add lp4450 canonical entry.

lp-020-quasar-consensus (§13 reconciliation — SUPERSEDED):
- §13 rewritten: "Why Not Threshold ML-DSA" → "Threshold ML-DSA via
  Pulsar; Why Not Threshold FALCON". Threshold ML-DSA IS achieved via
  Pulsar BCC/CEF (byte-equal FIPS 204); the two classical obstacles
  (combined-z rejection, hint computation) are dissolved by offline
  boundary clearance + public UseHint. FALCON subsection kept
  (distributed trapdoor Gaussian sampling is still open). V13 finding
  documented; honest review-ready status; rollup is now framed as a
  complementary accountability lane, not a threshold substitute.
- §1/§4/§11 reconciled to match (no longer claim threshold ML-DSA
  "cannot be deployed"); §99 adds lp4450/lp073 bibitems.

Corona = Module-LWE/Ringtail-derived sibling facts preserved throughout.
PDFs rebuilt (latexmk/pdflatex+bibtex), exit 0, no errors.
2026-06-21 07:16:21 -07:00

169 lines
9.2 KiB
TeX

\section{Threshold ML-DSA via Pulsar; Why Not Threshold FALCON}
\label{sec:why-not-threshold}
\label{app:no-threshold-mldsa}
\subsection{Threshold ML-DSA is achieved by Pulsar (BCC/CEF)}
\label{sec:threshold-mldsa-pulsar}
\textbf{This subsection supersedes the earlier ``why not threshold
ML-DSA'' position of Quasar~3.0.} That position --- that ML-DSA cannot
be thresholdized without either reconstructing the key or relaxing the
FIPS rejection bound, and that Quasar therefore uses individual ML-DSA
signatures rolled up by Groth16 in place of a threshold --- is now
obsolete. Threshold ML-DSA, \emph{byte-equal} to FIPS~204, \emph{is}
achieved by \textbf{Pulsar} (LP-4450~\cite{lp4450}, formal companion
LP-073~\cite{lp073}). We restate the two classical obstacles and show
how Pulsar's \emph{boundary-cleared nonce transcript with carry
elimination} (BCC/CEF) eliminates each without leaking key material.
ML-DSA (FIPS~204, formerly CRYSTALS-Dilithium) uses Fiat--Shamir with
Aborts: the signer samples a masking vector $\mathbf{y}$, commits
$\mathbf{w} = \mathbf{A}\mathbf{y}$, derives challenge $c$, forms
response $\mathbf{z} = \mathbf{y} + c\mathbf{s}_1$, and runs a
\emph{secret-dependent} rejection-and-hint sequence over
$\mathbf{w}_0 - c\mathbf{s}_2$ and $c\mathbf{t}_0$.
\begin{enumerate}[nosep]
\item \textbf{Rejection sampling.} The abort decision depends on the
\emph{combined} response $\mathbf{z} = \sum_i \lambda_i \mathbf{z}_i$
and on $\mathbf{w}_0 - c\mathbf{s}_2$, neither of which a single
party can evaluate without the others' shares. \emph{Pulsar's
resolution:} move the decision \emph{offline} and make it
\emph{message-independent}. A nonce aggregate $\mathbf{w}$ is
\emph{boundary-clear} iff every coefficient of $\mathbf{w}$ has
centred low bits $|\mathbf{w}_0| < \gamma_2 - 2\beta -
\text{slack}$. A boundary-clear nonce guarantees, for \emph{every}
admissible challenge $c$, that
$\mathsf{HighBits}(\mathbf{w} - c\mathbf{s}_2) =
\mathsf{HighBits}(\mathbf{w}) = \mathbf{w}_1$ and that the FIPS
$\mathbf{r}_0$-norm check holds --- \emph{without ever forming}
$c\mathbf{s}_2$, $c\mathbf{t}_0$, $\mathbf{r}_0$, or $\mathbf{w}_0$.
The combined rejection decision becomes a per-nonce predicate
evaluated once, offline, over public-after-clearance high bits.
\item \textbf{Hint computation.} FIPS verification reconstructs the
high bits of $\mathbf{w} - c\mathbf{s}_2$ from a hint $\mathbf{h}$
without knowing $\mathbf{s}_2$; the signer normally computes
$\mathbf{h} = \mathsf{MakeHint}(\mathbf{w}_0 - c\mathbf{s}_2 +
c\mathbf{t}_0, \mathbf{w}_1)$, which a threshold must either feed
from a trusted combiner or compute via the secret-bearing
intermediates. \emph{Pulsar's resolution:} recover the hint from
\emph{public data only}. The combiner forms
$\mathbf{w}' = \mathbf{A}\mathbf{z} - c\mathbf{t}_1 \cdot 2^d$
(exactly the quantity the FIPS verifier forms) and derives
$\mathbf{h}$ from $\mathbf{w}'$ and the public $\mathbf{w}_1$ via the
standard FIPS $\mathsf{UseHint}$ decision ($\mathsf{FindHint}$):
$h_j = 0$ if $\mathsf{HighBits}(\mathbf{w}'_j) = \mathbf{w}_{1,j}$;
$h_j = 1$ iff $\mathsf{UseHint}(1, \mathbf{w}'_j) = \mathbf{w}_{1,j}$;
otherwise the nonce admits no valid FIPS hint and is consumed and
retried. No party reconstructs $c\mathbf{s}_2$ or $c\mathbf{t}_0$.
\end{enumerate}
\paragraph{Verification-equivalence.} FIPS~204 $\mathsf{Verify}$
computes $\mathbf{w}'_{\text{approx}} = \mathbf{A}\mathbf{z} -
c\mathbf{t}_1 \cdot 2^d$ and accepts iff $\tilde c =
H(\mu, \mathsf{UseHint}(\mathbf{h}, \mathbf{w}'_{\text{approx}}))$.
Pulsar builds $\mathbf{h}$ via $\mathsf{FindHint}$ so that
$\mathsf{UseHint}(\mathbf{h}, \mathbf{w}') = \mathbf{w}_1$ by
construction; boundary clearance bounds the $c\mathbf{t}_0 -
c\mathbf{s}_2$ residual to $\pm 1$ high-bit carries that the hint
corrects. The threshold signature therefore verifies byte-for-byte
under unmodified FIPS~204 --- the same algebra as single-party
$\mathsf{Sign}$, with the hint recovered from public data rather than
from the secret residual.
\paragraph{Mode restriction.} BCC/CEF is sound only where
$\|c\mathbf{t}_0\|_\infty \leq \tau \cdot 2^{d-1} < \gamma_2$, which
makes the FIPS $c\mathbf{t}_0$ check vacuous and bounds the carry to a
single high-bit step. This holds for \textbf{ML-DSA-65}
($49 \cdot 4096 < \gamma_2 = 261888$) and \textbf{ML-DSA-87}
($60 \cdot 4096 < \gamma_2$), but \emph{not} for ML-DSA-44
($39 \cdot 4096 > \gamma_2 = 95232$). Pulsar supports ML-DSA-65 and
ML-DSA-87 only.
\paragraph{Consensus-native certification.} Boundary clearance is
certified by a NonceTranscript quorum run by the validator set itself
(consensus-native MPC, not a separate signing service), which emits a
$\mathsf{NonceCert}$ carrying \emph{only} $\mathbf{w}_1 =
\mathsf{HighBits}(\mathbf{w})$ and a clearance quorum certificate ---
never the full commitment $\mathbf{w}$. Online signing is then the
Ringtail-style two rounds (bind canonical nonce; open linear
$\mathbf{z}$-partial) plus a public-hint finalize, orchestrated inside
\texttt{luxfi/consensus} as a Quasar cert profile, with the BCC/CEF
crypto primitives in \texttt{luxfi/pulsar}.
\paragraph{The V13 finding (what NOT to do).} An earlier Pulsar
construction (\texttt{v0.3 AlgebraicAggregate}) broadcast the
secret-bearing intermediates $c\mathbf{s}_2$ and $c\mathbf{t}_0$ to a
combiner so it could run the FIPS sign-side checks and $\mathsf{MakeHint}$
verbatim. Broadcasting $c\mathbf{s}_2$ / $c\mathbf{t}_0$ \emph{leaks
long-term key material} --- this is the \textbf{V13 finding}
(\texttt{PULSAR-V13-HINT-LEAK}; a sibling \texttt{PULSAR-V13-W-LEAK}
exposes the full $\mathbf{w}$ in a $\mathsf{NonceCert}$). That path is
removed/gated fail-closed; BCC/CEF is the no-leak replacement, and
$\mathsf{NonceCert}$ carries only $\mathbf{w}_1$ plus a clearance proof.
The detailed analysis is LP-4450~\cite{lp4450} (V13 section) and the
Pulsar paper LP-073~\cite{lp073}.
\paragraph{Honest status.} Pulsar is \textbf{review-ready, not
production-certified.} Byte-equality of the no-leak path is
demonstrated under both the \texttt{cloudflare/circl} and
\texttt{pq-crystals} reference verifiers (ML-DSA-65 and ML-DSA-87), and
the boundary-clearance $\Rightarrow$ $\mathsf{FindHint}\leftrightarrow
\mathsf{UseHint}$ correspondence is machine-checked in Lean. Two
genuinely novel components --- tight small-norm lattice range proofs for
the nonce/DKG witnesses, and evaluating $\mathsf{HighBits}$/boundary
clearance inside the MPC over secret-shared $\mathbf{w}$ --- are
\emph{fail-closed pending external review}. Until reviewed verifiers
are installed, the production signer refuses the BCC/CEF path and the
Quasar composer uses the Corona leg in Pulsar's place. Pulsar's stock
FIPS~204 \emph{verifier} is always available; only the threshold
\emph{signer} is gated.
\paragraph{Relationship to the Z-Chain ML-DSA rollup.} Quasar's
individual-ML-DSA-plus-Groth16 lane (\S\ref{sec:lane3}) is retained as a
\emph{complementary accountability} mechanism --- it proves \emph{which}
validators signed (per-validator attribution and slashing evidence) and
compresses $N$ signatures to a constant-size on-chain footprint. Pulsar
provides the \emph{threshold} property: a single FIPS-204 signature
under one group key. The two are orthogonal lanes, not competitors:
the rollup gives accountability and footprint, Pulsar gives a genuine
threshold seal. Where the earlier text claimed a threshold ``cannot''
be built, the correct statement is that a byte-equal threshold
\emph{can} be built (Pulsar), and Quasar composes both.
\subsection{Threshold FALCON}
FALCON~\cite{falcon-spec} uses NTRU lattices and a hash-then-sign
paradigm with Gaussian sampling via a Gram-Schmidt-like procedure
(the ``FALCON tree''). Unlike ML-DSA --- whose Fiat--Shamir-with-Aborts
structure Pulsar thresholdizes via BCC/CEF --- FALCON's trapdoor
Gaussian sampling has no analogous public-data reformulation.
Thresholdizing FALCON requires distributed Gaussian sampling, which
remains an open problem:
\begin{enumerate}[nosep]
\item The FALCON signing key is a short basis for an NTRU lattice.
Shamir-sharing this basis and reconstructing Gaussian samples from
shares requires parties to jointly sample from a lattice Gaussian
without leaking the basis---strictly harder than threshold
Fiat--Shamir with Aborts.
\item Known approaches (Ducas and Prest~\cite{ducas2016}) for
distributed NTRU sampling require $O(n^2)$ communication rounds,
negating FALCON's performance advantage over ML-DSA.
\item FALCON was not selected as NIST's primary standard (ML-DSA
was); it is a secondary standard under FIPS~206 (draft). Building
threshold cryptography on a secondary standard adds adoption risk.
\end{enumerate}
\textbf{Quasar's position.} Threshold ML-DSA \emph{is} used, via
Pulsar's BCC/CEF construction (byte-equal to FIPS~204, ML-DSA-65 and
ML-DSA-87), subject to the honest review-ready status above; until that
review lands, the Corona Module-LWE leg fills the threshold PQ niche and
individual ML-DSA-plus-Groth16 provides per-validator accountability.
Threshold FALCON is not used: distributed trapdoor Gaussian sampling
remains an open problem with no byte-equal threshold construction.