mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
Pulsar (LP-073, LP-223): the dealer is DEAD AT BOTH ENDS. - Keygen: dealerless via Mithril short replicated secret sharing (Celi-del Pino-Espitau-Niot-Prest, ia.cr/2026/013, USENIX Sec 2026) -- the published escape from the naive-additive-S_eta wall; group key signs under the STOCK FIPS-204 verifier (compatibility PROVEN), per-subset mod-q reduction unblocks large committees (n=16,t=14). Replaces the old 'key generation stays trusted-dealer / provably unreachable' claim everywhere. - Signing: no-reconstruct hyperball 3-round signer (z_j=y_j+c*s1_(j); no party forms s1/s2/seed/sk; mask y never serialised), verifies under stock ML-DSA. CI invariant forbids trusted-dealer keygen in production files. - Claim discipline: (A) standard-FIPS-204-verifier-COMPATIBLE = PROVEN vs (B) full FIPS-204 KeyGen-distribution-EQUIVALENCE = labeled open residual; malicious-HARDENED != fully-malicious-secure-PROVEN. Versions -> pulsar v1.7.1, threshold v1.10.2, consensus v1.29.1, mlwe shared base. - Fixed pre-pivot staleness: Pulsar sig is byte-equal ML-DSA-65 (~3.3KB), not the ~33KB 48-bit (c,z,Delta) shared kernel; q=8380417 production. Corona (LP-220): Module-LWE (Ringtail/Raccoon, M=8 N=7, q=0x1000000004A01), natively dealerless (Pedersen-VSS noise-flooded), no-reconstruct signing, consumes shared luxfi/mlwe. Both lattice legs now dealerless -> Corona is defence-in-depth, NOT the sole permissionless-public carrier. P3Q kind-0x02 dispatch still abiFalse, but the library landed + dedicated 0x012206 wired. Dual-leg diversity (LP-020, LP-220, LP-magnetar): Corona + Pulsar BOTH Module-LWE -> distinct schemes/params, adversary must break BOTH, strictly stronger than either; NOT hardness-disjoint -- assumption-disjoint leg is hash-based Magnetar (SLH-DSA). Cite Mithril ia.cr/2026/013. Scan targets: lp-020 (Ring-LWE->Module-LWE, versions, residual B), lp-stricte2epq (canonical-status note: byte-equal FIPS-204, sampled small committees n=8/t=7/m=12/r=8 not single n=64; sig sizes), lp-magnetar (Corona Ring-LWE->Module-LWE). All 6 PDFs rebuilt clean (pdflatex+bibtex+pdflatex x2): lp-073 59pp, lp-220 8pp, lp-223 5pp, lp-020 32pp, lp-stricte2epq 47pp, lp-magnetar 13pp.
190 lines
11 KiB
TeX
190 lines
11 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 (TALUS, \texttt{v1.7.1}).} Pulsar's byte-equal
|
|
threshold construction, \textbf{TALUS}, is realised: the no-leak path
|
|
verifies under the \emph{unmodified} \texttt{cloudflare/circl} and
|
|
\texttt{pq-crystals} FIPS~204 verifiers (ML-DSA-65 and ML-DSA-87), with the
|
|
boundary-clearance $\Rightarrow$ $\mathsf{FindHint}\leftrightarrow
|
|
\mathsf{UseHint}$ correspondence machine-checked in Lean. The former
|
|
W-leak --- a nonce certificate exposing the full commitment $\mathbf{w}$ ---
|
|
is \emph{closed} on the TALUS-MPC path by the CSCP CarryCompare
|
|
secure-comparison circuit, which evaluates the secret-shared
|
|
$\mathsf{HighBits}$ step so that no party forms $\mathbf{w}_0$ or
|
|
$\mathbf{w}$ even transiently (proven semi-honest in an in-process
|
|
$N$-party simulation). The dealer is now dead at both ends: keygen via
|
|
Mithril short replicated secret sharing and signing via the no-reconstruct
|
|
hyperball signer (LP-073). Two residuals remain, stated honestly under the
|
|
$(A)$-vs-$(B)$ claim discipline: \emph{(A)} the signer is
|
|
malicious-\emph{hardened} (single-use nonces, identifiable abort, mandatory
|
|
stock-FIPS-204 $\mathsf{ReleaseGate}$ bound a malicious party to
|
|
abort/retry, never a forge or leak), but a \emph{fully} malicious-secure
|
|
proof and a networked (non-simulation) MPC deployment are open; and
|
|
\emph{(B)} dealerless keygen is now \emph{reached} via Mithril RSS (the
|
|
published escape from the additive-$S_\eta$ wall) --- the group key signs
|
|
under the stock FIPS-204 verifier (compatibility \emph{proven}), with full
|
|
FIPS-204 KeyGen distribution-equivalence the labeled open residual. The
|
|
natively-dealerless Corona leg composes alongside Pulsar as
|
|
defence-in-depth. Pulsar's stock FIPS~204 \emph{verifier} is always
|
|
available; the residuals concern only the threshold construction's proof
|
|
posture.
|
|
|
|
\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 TALUS construction (byte-equal to FIPS~204, ML-DSA-65 and
|
|
ML-DSA-87, \S\ref{sec:compact-cert}): one Pulsar threshold signature is
|
|
the primary post-quantum finality object. The Corona Module-LWE
|
|
(Ringtail/Raccoon) leg is composed \emph{alongside} Pulsar in the strict
|
|
dual-lattice AND-mode certificate
|
|
($\mathrm{Beam} \wedge \mathrm{Pulsar} \wedge \mathrm{Corona}$); both
|
|
lattice legs are now natively dealerless, so Corona composes as
|
|
\emph{defence-in-depth} (distinct Module-LWE scheme and parameter set ---
|
|
both must be cracked), no longer as the sole carrier of the
|
|
permissionless-public guarantee. The individual-ML-DSA-plus-Groth16
|
|
rollup is retained as the
|
|
\emph{fallback} P3Q evidence kind and for per-validator accountability.
|
|
Threshold FALCON is not used: distributed trapdoor Gaussian sampling
|
|
remains an open problem with no byte-equal threshold construction.
|