Files
zeekay ca327f37cb papers: lock PQ threshold-sig stack to dealerless canon (Pulsar Mithril RSS + hyperball, dual-leg Module-LWE)
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.
2026-06-28 13:37:54 -07:00

219 lines
10 KiB
TeX

%% ====================================================================
\section{Pulsar Key-Era Lifecycle}
\label{sec:lifecycle}
%% ====================================================================
The static Pulsar signing primitive presupposes a one-shot key
generation followed by a fixed signing committee. Permissionless chains
do not have that luxury: validator sets rotate every epoch. Pulsar
extends the static primitive with a \emph{key-era lifecycle} that supports
validator rotation without reconstructing the master secret and without
requiring a trusted dealer --- not after genesis, and (with the dealerless
Mithril RSS keygen of \S\ref{sec:protocol:bcc:keydkg}) not at genesis
either.
The metaphor is load-bearing, not flavor. A pulsar (the cosmic object)
is a rotating neutron star: the body persists, the beam direction
rotates, observed pulses appear as the beam sweeps. In Pulsar:
\begin{itemize}[leftmargin=2em,nosep]
\item \textbf{Persistent body}: the group public key
$(\mathbf{A}, \tilde{\mathbf{b}})$ and the hidden master
secret $\mathbf{s}$ persist within a key era.
\item \textbf{Rotating beam}: the share distribution
$\{\mathbf{s}_i\}_{i \in V}$ rotates each epoch with
validator-set changes.
\item \textbf{Observed pulse}: each Quasar bundle emits one
threshold certificate (a Pulsar \emph{pulse}) signed under the
unchanged group public key.
\end{itemize}
\subsection{Three lineage fields, kept distinct}
\label{sec:lifecycle:lineage}
Every Pulsar share state carries three lineage scalars that must not be
collapsed:
\begin{itemize}[leftmargin=2em,nosep]
\item \textbf{KeyEraID} ($\eta$). The group-key lineage. Bumps
\emph{only} at Reanchor, when a new group public key is
established.
\item \textbf{Generation} ($g$). The LSS resharing version within a
key era. Bumps every Refresh or Reshare under the same
$(\mathbf{A}, \tilde{\mathbf{b}})$.
\item \textbf{RollbackFrom} ($r$). Audit lineage. $r=0$ on
ordinary forward transitions; $r > 0$ records the prior
generation reverted from when the chain rolls back.
\end{itemize}
A trajectory across one key era and one Reanchor:
\begin{verbatim}
KeyEraID=7, Gen=0, Rb=0 genesis state of era 7
KeyEraID=7, Gen=1, Rb=0 reshared to a new validator set
KeyEraID=7, Gen=2, Rb=0 refreshed (same set; HJKY zero-poly)
KeyEraID=7, Gen=3, Rb=0 reshared again
KeyEraID=7, Gen=4, Rb=2 activation @gen 3 failed; reverted to gen 2
KeyEraID=8, Gen=0, Rb=0 reanchor: fresh group key, new era
\end{verbatim}
\subsection{Three layers, one shipping path}
\begin{tabular}{@{}p{0.18\textwidth}p{0.32\textwidth}p{0.42\textwidth}@{}}
\toprule
\textbf{Layer} & \textbf{Operation} & \textbf{Trust} \\
\midrule
Bootstrap & Dealerless Mithril RSS keygen (\S\ref{sec:protocol:bcc:keydkg}) for the production FIPS-204 scheme; Pedersen DKG over $R_q$ (\S\ref{sec:lifecycle:dkg}) for the shared kernel & No trusted dealer; group key signs under the stock FIPS-204 verifier. \\
Reshare & Old qualified subset $Q \subseteq O$, $|Q| \geq t_{\text{old}}$, runs $g_i(x)$ with $g_i(0) = s_i$; new party $j$ computes $s'_j = \sum_{i \in Q} \lambda^Q_i \cdot g_i(\beta_j)$ \cite{desmedtjajodia97} & No new trust. Master secret preserved structurally. \\
Reanchor & Fresh ceremony with new $\eta$ & Same as Bootstrap; rare governance event. \\
\bottomrule
\end{tabular}
\subsection{Refresh vs Reshare: distinct primitives}
Two primitives, never collapsed:
\paragraph{Refresh (HJKY97).}
Same committee, same threshold. Each party $i$ samples a degree-$(t-1)$
zero-polynomial $z_i(x)$ with $z_i(0) = 0$, distributes $z_i(\alpha_j)$,
and updates $s'_j = s_j + \sum_i z_i(\alpha_j)$. Defends against
mobile-adversary share accumulation across time \cite{hjky97}.
\paragraph{Reshare (Desmedt--Jajodia).}
New committee. Old qualified subset $Q$ samples $g_i(x)$ of degree
$t_{\text{new}}-1$ with $g_i(0) = s_i$. Each new party $j$ aggregates
contributions weighted by Lagrange coefficients evaluated at $0$ for
$Q$. New polynomial $G(x) = \sum_{i \in Q} \lambda^Q_i \cdot g_i(x)$
satisfies $G(0) = \sum_{i \in Q} \lambda^Q_i \cdot s_i = s$ by Lagrange
identity \cite{desmedtjajodia97}. Verifiability per
Wong--Wang--Wing \cite{wongwangwing02}.
Both primitives leave the public key unchanged: the lattice
Pedersen-style commits $\mathbf{C}_k = \mathbf{A}\cdot\mathrm{NTT}(c_k)
+ \mathbf{B}\cdot\mathrm{NTT}(r_k)$ bind shares to the polynomial
without revealing $\mathbf{s}$.
\subsection{Activation certificate: the consensus circuit-breaker}
\label{sec:lifecycle:activation}
After the resharing math finishes, the chain does \emph{not} accept the
new generation on faith. The new committee threshold-signs an
activation message under the \emph{unchanged} group public key:
\begin{verbatim}
QUASAR-PULSAR-ACTIVATE-v1 ||
chain_id || network_id ||
key_era_id || group_id ||
old_epoch || new_epoch ||
old_validator_set_hash || new_validator_set_hash ||
old_threshold || new_threshold ||
group_public_key_hash ||
reshare_transcript_hash ||
pairwise_material_commitment_hash ||
implementation_version
\end{verbatim}
If the threshold-aggregated signature verifies under
$(\mathbf{A}, \tilde{\mathbf{b}})$, the new shares actually reconstruct
$\mathbf{s}$ and the chain commits the new state. If verification
fails, the chain stays at the old generation; the LSS rollback
mechanism (\S\ref{sec:lifecycle:rollback}) restores the prior
snapshot.
\paragraph{What activation proves.}
Successful new signing capability under the unchanged GroupKey. That
is all.
\paragraph{What activation does \emph{not} prove.}
Which old party sent a bad contribution; which new party lied; whether
all contributions were polynomial-consistent; whether a malicious old
subset caused a failed activation. Those are responsibilities of the
complaint and disqualification pipeline (commit / share verification
under lattice Pedersen) and the slashing-evidence pipeline. Activation
is necessary but \emph{not sufficient} for full Byzantine attribution.
\subsection{Rollback and the no-slashing failure ladder}
\label{sec:lifecycle:rollback}
Pulsar's failure response is graded and \emph{non-punitive}. There is
no slashing dependency:
\begin{enumerate}[leftmargin=2em,nosep]
\item Coordinator timeout / unavailable
$\rightarrow$ next coordinator picked deterministically.
\item Resharing round fails (commit mismatch, bad share, etc.)
$\rightarrow$ emit signed evidence; retry under fresh
transcript binding next epoch.
\item Activation cert fails to verify under unchanged GroupKey
$\rightarrow$ \texttt{Rollback(targetGeneration = current - 1)};
chain stays at the previous generation; signing continues.
\item Multiple consecutive activation failures
$\rightarrow$ governance Reanchor: new $\eta$, fresh ceremony.
\end{enumerate}
This ladder works for chains, bridges, enterprise custody, and
validator committees alike, because none of the steps require
identifying a malicious actor. Slashing evidence is \emph{collected}
during steps 2--3 (the framework persists signed messages from the
failed run for forensic review), but the chain's liveness and safety
do not depend on attribution.
\subsection{Pedersen DKG over $R_q$: the shared-kernel dealerless path}
\label{sec:lifecycle:dkg}
For the \emph{production} FIPS-204 byte-equal scheme, the default Bootstrap
path is the dealerless Mithril RSS keygen of
\S\ref{sec:protocol:bcc:keydkg} --- no trusted dealer, no toxic-waste
assumption, and the group key signs under the stock FIPS-204 verifier. The
construction below is the dealerless keygen for the \emph{shared kernel}
(the $(c,z,\Delta)$ scheme shared with Corona): a Pedersen-style DKG over
$R_q$ (\texttt{pulsar/dkg2/}) that likewise requires no dealer:
\begin{itemize}[leftmargin=2em,nosep]
\item Two uniform matrices $\mathbf{A}, \mathbf{B}$ derived
deterministically from public seeds.
\item Each party samples Gaussian polynomials $f_i, g_i$ and
broadcasts commits $\mathbf{C}_{i,k} = \mathbf{A}\cdot
\mathrm{NTT}(c_{i,k}) + \mathbf{B}\cdot\mathrm{NTT}(r_{i,k})$.
\item Hiding under MLWE on $\mathbf{B}$; binding under MSIS on
$[\mathbf{A}\,|\,\mathbf{B}]$.
\end{itemize}
This avoids the upstream Pulsar Feldman-style DKG, which is
pseudoinverse-recoverable: $(\mathbf{A}^T\mathbf{A})^{-1}\mathbf{A}^T
\cdot \mathbf{C}_k = c_k$ when commits omit the noise term. The
Pedersen construction restores hiding by adding the
$\mathbf{B}\cdot\mathrm{NTT}(r_k)$ mask.
The Pedersen-DKG path solves an open distributed-construction problem:
jointly sampling $\tilde{\mathbf{b}} = \lfloor \mathbf{A}\cdot
\mathbf{s} + \mathbf{e} \rceil_\Xi$ with the correct small-noise
distribution, without any party learning $\mathbf{s}$ or $\mathbf{e}$,
and producing a publicly verifiable proof of public-key
well-formedness. Threshold Raccoon \cite{thresholdraccoon} and Hermine
\cite{hermine} are the closest related constructions for the shared
kernel. For the production FIPS-204 scheme this question is settled by
Mithril RSS \cite{mithril2026} (\S\ref{sec:protocol:bcc:keydkg}): the
joint key is dealerless, its group key signs under the stock FIPS-204
verifier (compatibility proven), and the only residual is full KeyGen
distribution-equivalence. Neither path requires a trusted dealer or a
toxic-waste assumption; the foundation-ceremony bootstrap of earlier
drafts is retired.
\subsection{What is preserved, what changes}
\begin{tabular}{@{}p{0.30\textwidth}p{0.65\textwidth}@{}}
\toprule
\textbf{Quantity} & \textbf{Status across resharing within an era} \\
\midrule
$\mathbf{A}$ (public matrix) & PRESERVED \\
$\mathbf{s}$ (master secret) & PRESERVED structurally; share distribution rotates \\
$\tilde{\mathbf{b}}$ (rounded public key) & PRESERVED \\
GroupKey pointer (byte-identical) & PRESERVED \\
$\mathbf{e}$ (LWE error) & NOT preserved; used at genesis to form $\tilde{\mathbf{b}}$, then erased with dealer state. Signers only need shares of $\mathbf{s}$. \\
Share distribution $\{\mathbf{s}_i\}$ & ROTATED \\
Pairwise PRF/MAC material & REGENERATED for the new committee via authenticated KEX (X25519 baseline; ML-KEM-768 hybrid recommended for PQ-aware deployments). \\
$\eta$ (KeyEraID) & PRESERVED until Reanchor \\
$g$ (Generation) & INCREMENTED \\
$r$ (RollbackFrom) & 0 on forward; $>0$ on rollback \\
\bottomrule
\end{tabular}