mirror of
https://github.com/luxfi/pulsar.git
synced 2026-09-24 00:25:52 +00:00
references.bib gave ePrint 2024/1113 the title "Corona: Practical Two-Round Threshold Signatures from Learning with Errors". The paper is "Ringtail: Practical Two-Round Threshold Signatures from Learning with Errors", by the six authors the entry already named correctly. A title is the authors' words. The file's own header asks for exactly this โ "verified against https://eprint.iacr.org... Do not paraphrase or guess". Ringtail is their scheme. Corona is Lux's implementation over Ring-LWE; Pulsar retargets the same two-round structure to Module-LWE for FIPS 204. The prose and the citation key now say so, and this spec is the NIST MPTC submission, so it is the last place to get it wrong. patent-notes.tex stated "Corona's open-source repo is Apache-2.0 with no asserted patent claims". Corona is under the Lux Ecosystem License v1.2, which reserves commercial use โ no Apache grant and no Apache ยง3 patent grant. The surrounding paragraph had been flattened by a rename into "Pulsar ... is derivative of Pulsar" and "Pulsar (and therefore Pulsar) is a fork"; it now names Corona and Ringtail where each is meant. Dropped the residual Pulsar-M spelling, including the naming rule that forbade writing "Pulsar" and required writing "Pulsar". Co-authored-by: Hanzo Dev <[email protected]>
568 lines
27 KiB
TeX
568 lines
27 KiB
TeX
% Pulsar security game definitions --- included by pulsar.tex
|
|
% \section{Security analysis}
|
|
%
|
|
% Standard cryptographic-game style. Each game pins the challenger
|
|
% setup, the adversary's oracle interface, the winning condition, and
|
|
% the advantage; reductions are stated to the underlying assumption.
|
|
|
|
\subsection{Adversary model and notation}
|
|
\label{sec:sec-notation}
|
|
|
|
Throughout this section the adversary $\mathcal{A}$ is probabilistic
|
|
polynomial-time (PPT) and is parameterised by the corruption
|
|
threshold $t-1$ (the largest number of parties $\mathcal{A}$ may
|
|
corrupt). Honest parties' channels are authenticated; corrupted
|
|
parties act under $\mathcal{A}$'s control. We write $\mathcal{H}
|
|
\subseteq \{1, \dots, n\}$ for the honest-party set and
|
|
$\mathcal{C} = \{1, \dots, n\} \setminus \mathcal{H}$ for the corrupted
|
|
set; $|\mathcal{C}| \le t-1$.
|
|
|
|
The challenger maintains a transcript log
|
|
$\mathcal{T}$ recording every message visible to $\mathcal{A}$
|
|
(broadcast messages, point-to-point messages into corrupted parties,
|
|
public bulletin entries). The adversary's oracle interface depends on
|
|
the game; we specify it inline.
|
|
|
|
We write $\mathcal{H}_{\mathsf{RO}}$ for the random oracle used to model the
|
|
hash family $\{\SHAKE, \cSHAKE, \KMAC, \TupleHash\}$ in the ROM
|
|
analysis. Distinct customisation tags yield independent random
|
|
oracles by the indifferentiability argument of
|
|
SP~800-185~\cite{nist-sp800-185}.
|
|
|
|
% =====================================================================
|
|
\subsection{Game TS-UF (threshold strong unforgeability)}
|
|
\label{sec:game-tsuf}
|
|
% =====================================================================
|
|
|
|
\begin{game}[TS-UF]
|
|
\label{game:tsuf}
|
|
The challenger:
|
|
\begin{enumerate}[leftmargin=*, itemsep=0pt]
|
|
\item Runs $\DKG$ honestly across $n$ simulated parties; the adversary
|
|
sees every transcript message and learns the shares
|
|
$\{(\mathbf{s}_i, \mathbf{u}_i)\}_{i \in \mathcal{C}}$ of corrupted
|
|
parties. The group public key $\mathit{pk}$ is announced.
|
|
\item Exposes a $\Sign$ oracle $\mathcal{O}_{\Sign}(\mu, T)$: the
|
|
adversary chooses a message $\mu$ and a quorum
|
|
$T \subseteq \{1, \dots, n\}$ with $|T| = t$ and
|
|
$|T \cap \mathcal{C}| \le t-1$. The challenger simulates honest
|
|
parties' contributions to $\Sign(\mu, T)$ and returns the full
|
|
transcript including the final FIPS~204 signature $\sigma$.
|
|
\item Exposes a $\mathcal{H}_{\mathsf{RO}}$ oracle for all FIPS~202 / SP~800-185 hash
|
|
calls.
|
|
\end{enumerate}
|
|
|
|
The adversary outputs a forgery $(\mu^*, \sigma^*)$. $\mathcal{A}$
|
|
wins if:
|
|
\begin{enumerate}[label=(\roman*), leftmargin=*, itemsep=0pt]
|
|
\item $\texttt{ML-DSA.Verify}(\mathit{pk}, \mu^*, \sigma^*) = \mathit{accept}$,
|
|
\item $\mathcal{A}$ did not query $\mathcal{O}_{\Sign}(\mu^*, \cdot)$ with
|
|
the same $\mu^*$ producing $\sigma^*$, and
|
|
\item $|\mathcal{C}| \le t-1$ (the corruption budget was respected).
|
|
\end{enumerate}
|
|
$\mathcal{A}$'s advantage is
|
|
$\Adv^{\mathsf{TS\textsf{-}UF}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A}) = \Pr[\mathcal{A} \text{ wins}]$.
|
|
\end{game}
|
|
|
|
\begin{theorem}[TS-UF security]
|
|
\label{thm:tsuf}
|
|
For every $\PPT$ adversary $\mathcal{A}$ against \Cref{game:tsuf} with
|
|
$q_S$ signing queries and $q_H$ random-oracle queries, there exist
|
|
efficient reductions $\mathcal{B}_{\MLWE}, \mathcal{B}_{\MSIS},
|
|
\mathcal{B}_{\mathrm{ML\text{-}DSA}}$ such that
|
|
\[
|
|
\Adv^{\mathsf{TS\textsf{-}UF}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A})
|
|
\;\le\;
|
|
\Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B}_{\MLWE})
|
|
+ \Adv^{\MSIS}_{q, k, 2\ell, \beta_{\mathrm{bind}}}(\mathcal{B}_{\MSIS})
|
|
+ \Adv^{\mathsf{EUF\textsf{-}CMA}}_{\mathrm{ML\text{-}DSA}}(\mathcal{B}_{\mathrm{ML\text{-}DSA}})
|
|
+ \frac{q_S \cdot q_H}{2^\lambda}.
|
|
\]
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Proof sketch]
|
|
We argue via a sequence of hybrids:
|
|
|
|
\paragraph{Hybrid $H_0$.} The real TS-UF experiment.
|
|
|
|
\paragraph{Hybrid $H_1$.} The challenger simulates the $\Sign$ oracle
|
|
without using the honest parties' shares. Specifically, the
|
|
simulator chooses the final signature $\sigma = (\tilde c, \mathbf{z},
|
|
\mathbf{h})$ by running \texttt{ML-DSA.Sign} against $\mathit{pk}$
|
|
\emph{as if it knew the secret key}, then programs the per-party
|
|
transcript so the aggregation lands on the chosen $\sigma$. The
|
|
honest-party Round-1 commits are set to $\mathbf{w}_j^{(\mathrm{sim})} =
|
|
\mathbf{A}\mathbf{y}_j^{(\mathrm{sim})}$ for simulated masks $\mathbf{y}_j^{(\mathrm{sim})}$
|
|
drawn uniformly under the $U_{\gamma_1}$ constraint and consistent with
|
|
the chosen $\mathbf{z}$ via
|
|
$\sum_j \mathbf{y}_j^{(\mathrm{sim})} = \mathbf{z} - c\mathbf{s}_1$.
|
|
Random-oracle programming sets the $\bar{\mathbf{w}}$-derived challenge to
|
|
the chosen $\tilde c$. The distinguishing advantage between $H_0$
|
|
and $H_1$ is bounded by $q_S \cdot q_H / 2^\lambda$ (probability of a
|
|
collision in the RO programming).
|
|
|
|
\paragraph{Hybrid $H_2$.} The challenger replaces the Pedersen commit
|
|
matrix $\mathbf{B}$'s structure --- $\mathbf{B}$ is now a fresh
|
|
uniform matrix \emph{independent} of $\mathbf{A}$. This is identical
|
|
to $H_1$ because $\mathbf{B}$ was already derived from a separate
|
|
domain-separated seed in the construction; the hybrid is a no-op
|
|
distributionally and is included only for proof clarity.
|
|
|
|
\paragraph{Hybrid $H_3$.} The challenger replaces the DKG-time
|
|
Pedersen blinding $\mathbf{u}$ with a uniform sample from $\Rq^\ell$
|
|
(rather than $\chi_\eta^\ell$). Distinguishing advantage is bounded
|
|
by $\Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B}_{\MLWE})$ via the
|
|
hiding property of the Pedersen commitment
|
|
(\Cref{thm:pedersen-hiding}).
|
|
|
|
\paragraph{Hybrid $H_4$ (reduction to ML-DSA EUF-CMA).} In $H_4$ the
|
|
simulator obtains $\mathit{pk}$ from a single-party ML-DSA EUF-CMA
|
|
challenger; it answers $\mathcal{O}_{\Sign}(\mu, T)$ queries by
|
|
relaying the signing query to the ML-DSA challenger and using $H_1$'s
|
|
simulator to expand the resulting $\sigma$ into a per-party
|
|
transcript. Any adversary that wins TS-UF against this hybrid
|
|
produces a forgery $(\mu^*, \sigma^*)$ that wins the ML-DSA EUF-CMA
|
|
game (since the Pulsar $\Verify$ is unmodified ML-DSA
|
|
$\Verify$). Distinguishing advantage between $H_3$ and $H_4$ is
|
|
absorbed into the MSIS binding term: any deviation by the simulator
|
|
from the honest-party transcript shape is detected by binding of the
|
|
Pedersen commitment, contributing
|
|
$\Adv^{\MSIS}_{q, k, 2\ell, \beta_{\mathrm{bind}}}(\mathcal{B}_{\MSIS})$.
|
|
|
|
Summing the hybrid advantages gives the bound. \qed
|
|
\end{proof}
|
|
|
|
\begin{remark}[Tightness]
|
|
The reduction is tight modulo the standard $q_S q_H / 2^\lambda$
|
|
random-oracle programming penalty. For ML-DSA-65 ($\lambda = 192$),
|
|
this term is negligible for any practical $(q_S, q_H)$. The MSIS
|
|
term governs the Pedersen-binding side of the argument; the MLWE
|
|
term governs the hiding side; the ML-DSA term governs the underlying
|
|
single-party unforgeability. Pulsar inherits ML-DSA's EUF-CMA
|
|
bound verbatim modulo these threshold-protocol-specific terms.
|
|
\end{remark}
|
|
|
|
% =====================================================================
|
|
\subsection{Game OUT-IND (output indistinguishability from FIPS~204)}
|
|
\label{sec:game-outind}
|
|
% =====================================================================
|
|
|
|
\begin{game}[OUT-IND]
|
|
\label{game:outind}
|
|
The challenger flips a fair bit $b \in \{0, 1\}$ at setup and exposes
|
|
two oracles to $\mathcal{A}$:
|
|
\begin{itemize}[leftmargin=*, itemsep=0pt]
|
|
\item If $b = 0$: $\DKG$ produces $\mathit{pk}$ honestly, and
|
|
$\mathcal{O}_{\Sign}(\mu, T)$ runs Pulsar $\Sign$ honestly and
|
|
returns only the final $\sigma$ (transcript is hidden).
|
|
\item If $b = 1$: $\mathit{pk}$ is generated by single-party
|
|
\texttt{ML-DSA.KeyGen}, and $\mathcal{O}_{\Sign}(\mu, T)$ ignores the
|
|
quorum $T$ and runs single-party \texttt{ML-DSA.Sign}, returning
|
|
$\sigma$.
|
|
\end{itemize}
|
|
$\mathcal{A}$ outputs a guess $\hat b$. Advantage:
|
|
$\Adv^{\mathsf{OUT\textsf{-}IND}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A})
|
|
= |\Pr[\hat b = b] - 1/2|$.
|
|
\end{game}
|
|
|
|
\begin{theorem}[Output indistinguishability]
|
|
\label{thm:outind}
|
|
For every $\PPT$ adversary $\mathcal{A}$ against \Cref{game:outind},
|
|
\[
|
|
\Adv^{\mathsf{OUT\textsf{-}IND}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A})
|
|
\;\le\;
|
|
\Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B}_{\MLWE}) +
|
|
\frac{1}{2^{2\lambda}}.
|
|
\]
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Proof sketch]
|
|
\textbf{$\mathit{pk}$ indistinguishability.}
|
|
A FIPS~204 public key is $\mathit{pk}_{\mathrm{F}} = (\rho, \Power(\mathbf{A}\mathbf{s}_1 + \mathbf{s}_2, d))$ with $\mathbf{s}_1, \mathbf{s}_2 \gets \chi_\eta$.
|
|
A Pulsar public key is $\mathit{pk}_{\mathrm{P}} = (\rho, \Power(\mathbf{A}\mathbf{s}_1 + \mathbf{B}\mathbf{u}, d))$ with $\mathbf{s}_1, \mathbf{u} \gets \chi_\eta$ (centred binomial) and $\mathbf{B}$ uniform.
|
|
The two distributions are identical except in the $\mathbf{s}_2$ vs.\ $\mathbf{B}\mathbf{u}$ component. Under $\MLWE_{q, k, \ell, \eta}$ in $\mathbf{B}$, $\mathbf{B}\mathbf{u}$ is computationally indistinguishable from a uniform $\mathbf{w} \in \Rq^k$; conditioned on uniformity, the post-$\Power$ projection is uniform over the range of $\Power$. Single-party ML-DSA's $\mathbf{s}_2 \sim \chi_\eta^k$ also projects through $\Power$ to a distribution that is statistically close to uniform over the $\Power$ image. The total distance between the two $\mathit{pk}$ distributions is therefore bounded by $\Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B}_{\MLWE})$ plus a negligible statistical term from the $\Power$ rounding.
|
|
|
|
\textbf{$\sigma$ indistinguishability.}
|
|
By correctness (\Cref{thm:sign-correct}), the Pulsar aggregated
|
|
$\sigma$ is the FIPS~204 signature on $(\mathit{pk}, \mu, \mathbf{y})$ where $\mathbf{y} = \sum_j \mathbf{y}_j$ is the aggregated mask. The marginal distribution of $\mathbf{y}$ (sum of $t$ uniform-interval samples) is a discrete convolution; FIPS~204's single-party mask is a single uniform-interval sample. The two distributions differ in their concentration profile but are projected through the rejection-sampling acceptance condition $\|\mathbf{z}\|_\infty < \gamma_1 - \beta$, which forces the accepted distribution into the same FIPS~204 acceptance region. Conditioned on acceptance, the per-coordinate distribution of $\mathbf{z}$ is uniform on $[-\gamma_1 + \beta + 1, \gamma_1 - \beta - 1]$ in both cases (this is the FIPS~204 rejection-sampling invariant). Therefore the post-rejection distribution is identical between Pulsar and FIPS~204, and the output $\sigma$ is distributionally identical given the same $\tilde c$ and $\mathbf{h}$.
|
|
|
|
The statistical term $1/2^{2\lambda}$ accounts for the negligible
|
|
probability of a $\tilde c$ collision in the RO. \qed
|
|
\end{proof}
|
|
|
|
\begin{remark}[Caveat on signature byte equality]
|
|
\Cref{thm:outind} states distributional equivalence. For \emph{byte
|
|
equality} on a specific signature, the Pulsar $\Sign$
|
|
implementation MUST emit exactly the FIPS~204 byte encoding of
|
|
$(\tilde c, \mathbf{z}, \mathbf{h})$ with the same canonicalisation
|
|
(coefficient lifting, sign convention, packing). This is an
|
|
implementation-level requirement, not a cryptographic theorem; the
|
|
encoding section (\S\ref{sec:encodings}) pins it. The byte-equality
|
|
property is what unlocks Class~N1.
|
|
\end{remark}
|
|
|
|
% =====================================================================
|
|
\subsection{Game ROB (robustness / identifiable abort)}
|
|
\label{sec:game-rob}
|
|
% =====================================================================
|
|
|
|
\begin{game}[ROB]
|
|
\label{game:rob}
|
|
$\mathcal{A}$ corrupts up to $t-1$ parties and chooses one of the
|
|
following deviation strategies:
|
|
\begin{enumerate}[label=(\alph*), leftmargin=*, itemsep=0pt]
|
|
\item Send distinct DKG commit vectors to distinct recipients (equivocation).
|
|
\item Send a private DKG share that fails Pedersen verification.
|
|
\item Send a Round-1 sign commit with an invalid MAC.
|
|
\item Send a Round-2 sign response that, combined with honest contributions, would push the aggregate $\mathbf{z}$ outside the FIPS~204 norm.
|
|
\item Refuse to participate at any round boundary.
|
|
\end{enumerate}
|
|
$\mathcal{A}$ wins if any honest party either (i) completes the
|
|
protocol against the deviation \emph{without} producing a valid
|
|
complaint identifying a corrupted deviator, or (ii) the honest
|
|
party's resulting state is inconsistent with at least one other
|
|
honest party's state (no recovery).
|
|
\end{game}
|
|
|
|
\begin{theorem}[Robustness]
|
|
\label{thm:rob}
|
|
For every $\PPT$ adversary $\mathcal{A}$ against \Cref{game:rob}, the
|
|
honest parties either produce a valid \textsc{Complaint}
|
|
record identifying a corrupted deviator, or successfully complete
|
|
the protocol. Formally,
|
|
$\Adv^{\mathsf{ROB}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A})$ is
|
|
bounded by the signature-forgery advantage on the parties' long-term
|
|
identity-key scheme (e.g.\ Ed25519) plus
|
|
$\Adv^{\MSIS}_{q, k, 2\ell, \beta_{\mathrm{bind}}}(\mathcal{B}_{\MSIS})$ for
|
|
deviation~(a),
|
|
plus the random-oracle collision term $q_H / 2^{256}$ for the
|
|
commit-digest binding.
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Sketch]
|
|
For deviation (a), the Round-1.5 commit digest broadcast by every
|
|
honest recipient binds each sender to one commit vector across the
|
|
cohort (under collision-resistance of $\cSHAKE$). Two distinct
|
|
commits would produce two distinct digests, observable to every
|
|
recipient as a digest mismatch; the recipient signs a
|
|
\textsc{ComplaintEquivocation} carrying the two signed broadcasts as
|
|
evidence. The signature soundness of the accused party's long-term
|
|
identity key prevents the accused from repudiating its own
|
|
broadcasts; forging two broadcasts requires breaking the identity
|
|
signature.
|
|
|
|
For deviation (b), the Pedersen identity check
|
|
(\Cref{thm:pedersen-binding}) fails with probability $1 - \negl$ if
|
|
$\mathcal{A}$ deviates from a valid (share, blind, commit) triple.
|
|
The failing recipient signs a \textsc{ComplaintBadDelivery}
|
|
carrying the triple as evidence; the complaint is verifiable by any
|
|
third party because the public Pedersen check is determined by
|
|
$(\mathbf{A}, \mathbf{B})$.
|
|
|
|
For deviations (c), (d), (e): MAC verification, Round-2 norm
|
|
verification (against the public broadcast of $\bar{\mathbf{w}}_i,
|
|
\mathbf{z}_i, \mathbf{r}_i$), and round-window timeouts respectively
|
|
produce \textsc{ComplaintMACFailure}, \textsc{ComplaintRangeFailure},
|
|
\textsc{ComplaintTimeout} records, signed by the detecting party. Each
|
|
complaint is publicly verifiable from the transcript and the
|
|
accuser's identity-key signature. \qed
|
|
\end{proof}
|
|
|
|
% =====================================================================
|
|
\subsection{Game ADAPT (adaptive corruption)}
|
|
\label{sec:game-adapt}
|
|
% =====================================================================
|
|
|
|
\begin{game}[ADAPT]
|
|
\label{game:adapt}
|
|
Identical to \Cref{game:tsuf} except $\mathcal{A}$ may issue
|
|
\emph{adaptive} corruption queries: at any point during the protocol
|
|
execution, $\mathcal{A}$ chooses a previously-honest party $i$ to
|
|
corrupt; the challenger reveals party $i$'s entire current state
|
|
including secret share, current per-round randomness, and PRNG
|
|
seeds. The total number of corrupted parties at any time is bounded
|
|
by $t-1$.
|
|
\end{game}
|
|
|
|
\begin{theorem}[Adaptive corruption --- sketch only]
|
|
\label{thm:adapt-sketch}
|
|
\emph{Statement deferred to round-2 MPTC.} A formal
|
|
adaptive-corruption proof requires either (i) a complexity-leveraging
|
|
argument that loses a $\binom{n}{t-1}$ factor in the security
|
|
parameter and is therefore loose for practical $(n, t)$, or (ii) a
|
|
trapdoor-based simulation argument compatible with the Pedersen
|
|
commit structure. \cite{boschini2024ringtail} sketches direction (i) for the
|
|
Ring-LWE setting; the module-shaped adaptation is structural but
|
|
non-trivial.
|
|
\end{theorem}
|
|
|
|
\begin{openq}[Adaptive corruption]
|
|
Tight adaptive corruption for module-shaped two-round
|
|
threshold lattice signatures is an open research question. Pulsar
|
|
defers a formal proof to round 2; under the static-corruption model
|
|
\Cref{thm:tsuf} suffices for round 1.
|
|
\end{openq}
|
|
|
|
% =====================================================================
|
|
\subsection{Game MOB (mobile-adversary security, proactive resharing)}
|
|
\label{sec:game-mob}
|
|
% =====================================================================
|
|
|
|
\begin{game}[MOB]
|
|
\label{game:mob}
|
|
Multi-epoch experiment with epoch counter $e \in \{1, 2, \dots, E\}$.
|
|
At each epoch $e$:
|
|
\begin{enumerate}[leftmargin=*, itemsep=0pt]
|
|
\item $\mathcal{A}$ chooses a corruption set $\mathcal{C}_e \subseteq \{1, \dots, n\}$ with $|\mathcal{C}_e| \le t-1$. Corruptions are independent across epochs: a party in $\mathcal{C}_e \cap \mathcal{C}_{e+1}$ is corrupted across both epochs, but a party in $\mathcal{C}_e \setminus \mathcal{C}_{e+1}$ \emph{uncorrupts} between epochs (forgets its epoch-$e$ secrets but retains its identity-key state).
|
|
\item The challenger reveals the epoch-$e$ shares and per-round randomness of every party in $\mathcal{C}_e$.
|
|
\item $\mathcal{A}$ may issue $\mathcal{O}_{\Sign}$ queries within the epoch.
|
|
\item At the epoch boundary, the challenger runs $\Reshare$ honestly with a fresh beacon $\beta_{e+1}$. The beacon is unbiasable: $\mathcal{A}$ sees $\beta_{e+1}$ \emph{after} committing to $\mathcal{C}_{e+1}$.
|
|
\end{enumerate}
|
|
At the end of epoch $E$, $\mathcal{A}$ outputs a forgery
|
|
$(\mu^*, \sigma^*)$. $\mathcal{A}$ wins under the TS-UF winning
|
|
condition.
|
|
\end{game}
|
|
|
|
\begin{theorem}[Mobile-adversary security]
|
|
\label{thm:mob}
|
|
For every $\PPT$ adversary $\mathcal{A}$ against \Cref{game:mob} over
|
|
$E$ epochs,
|
|
\[
|
|
\Adv^{\mathsf{MOB}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A})
|
|
\;\le\;
|
|
E \cdot \Adv^{\mathsf{TS\textsf{-}UF}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{B})
|
|
+ E \cdot \Adv^{\mathsf{beacon\textsf{-}unbias}}_{\mathrm{chain}}(\mathcal{B}_{\mathrm{beacon}}) +
|
|
E \cdot \Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B}_{\MLWE}).
|
|
\]
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Proof sketch]
|
|
The proof proceeds by induction on epochs. The base case $e = 1$ is
|
|
TS-UF directly. For the inductive step, assume the master secret
|
|
$\mathbf{s}_1$ is hidden from $\mathcal{A}$ through epoch $e$. At the
|
|
epoch boundary:
|
|
\begin{enumerate}[leftmargin=*, itemsep=0pt]
|
|
\item The reshare quorum $\mathcal{Q}_{e+1}$ is selected from the
|
|
beacon $\beta_{e+1}$. Under the beacon-unbiasability assumption, the
|
|
event \(\mathcal{Q}_{e+1} \cap \mathcal{C}_{e+1}\) is a uniform random
|
|
sample from the size-$(t_{\mathrm{old}})$ subsets of $\mathcal{O}$;
|
|
the probability that $\mathcal{A}$'s
|
|
$|\mathcal{C}_{e+1}| \le t-1$ corruption covers $\mathcal{Q}_{e+1}$ entirely
|
|
is at most
|
|
$\binom{t-1}{t}\binom{n}{t}^{-1} = 0$ (corruption budget is strictly less than $t$).
|
|
\item By \Cref{thm:reshare-pkinv}, $\mathit{pk}$ is invariant.
|
|
\item By the resharing privacy theorem
|
|
(\Cref{thm:reshare-priv} below), the joint view of $\mathcal{A}$
|
|
across $(\mathcal{C}_e, \mathcal{C}_{e+1})$ is independent of the
|
|
master secret $\mathbf{s}_1$.
|
|
\item Forgery in epoch $e+1$ reduces to TS-UF in epoch $e+1$ against
|
|
the (independently distributed) new committee shares.
|
|
\end{enumerate}
|
|
The union bound over $E$ epochs gives the stated advantage. \qed
|
|
\end{proof}
|
|
|
|
% =====================================================================
|
|
\subsection{Games DKG-SOUND and DKG-PRIV}
|
|
\label{sec:game-dkg}
|
|
% =====================================================================
|
|
|
|
\begin{game}[DKG-SOUND]
|
|
\label{game:dkg-sound}
|
|
$\mathcal{A}$ corrupts up to $t-1$ parties at DKG start. The
|
|
challenger runs $\DKG$ honestly across the remaining parties;
|
|
$\mathcal{A}$'s corrupted parties act under its control.
|
|
$\mathcal{A}$ wins if the output $\mathit{pk}$ is \emph{not} a valid
|
|
FIPS~204 public key (i.e., it does not deserialise correctly, or it
|
|
does not satisfy the FIPS~204 public-key range checks).
|
|
\end{game}
|
|
|
|
\begin{theorem}[DKG soundness]
|
|
\label{thm:dkg-sound}
|
|
For every $\PPT$ adversary,
|
|
$\Adv^{\mathsf{DKG\textsf{-}SOUND}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A}) \le \Adv^{\MSIS}_{q, k, 2\ell, \beta_{\mathrm{bind}}}(\mathcal{B}_{\MSIS}) + q_H / 2^{256}$.
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Sketch]
|
|
Honest parties verify Pedersen identities at Round~2. A corrupted
|
|
party that contributes a malformed share triggers
|
|
\textsc{ComplaintBadDelivery}, removing its contribution from the
|
|
aggregation. The remaining honest contributions are
|
|
$\chi_\eta$-distributed, so $\mathbf{s}_1 = \sum_{i \in \mathcal{H}}
|
|
\mathbf{c}_{i,0}$ has a distribution that is statistically close to
|
|
$\chi_\eta^\ell$ scaled by $|\mathcal{H}|$ (which we re-randomise to
|
|
$\chi_\eta^\ell$ via the FIPS~204 secret-key sampling discipline).
|
|
The Pedersen binding bound prevents the adversary from substituting a
|
|
different $\mathbf{c}_{i,0}$ between commit and reveal. The remaining
|
|
RO term is the random-oracle collision bound for the commit-digest
|
|
binding. \qed
|
|
\end{proof}
|
|
|
|
\begin{game}[DKG-PRIV]
|
|
\label{game:dkg-priv}
|
|
$\mathcal{A}$ corrupts up to $t-1$ parties and runs $\DKG$ honestly;
|
|
the challenger flips a bit $b$. If $b = 0$, $\mathcal{A}$ sees the
|
|
real DKG transcript including the corrupted parties' shares. If
|
|
$b = 1$, the challenger simulates the corrupted parties' shares from
|
|
the public $\mathit{pk}$ using a $\Sigma$-protocol-style simulator
|
|
that re-randomises the commits without knowledge of the honest
|
|
secrets. $\mathcal{A}$ outputs a guess $\hat b$.
|
|
\end{game}
|
|
|
|
\begin{theorem}[DKG share privacy]
|
|
\label{thm:dkg-priv}
|
|
$\Adv^{\mathsf{DKG\textsf{-}PRIV}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A}) \le \Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B})$.
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Sketch]
|
|
The Pedersen commitments are computationally hiding
|
|
(\Cref{thm:pedersen-hiding}). The simulator chooses corrupted-party
|
|
shares uniformly from the simulation distribution induced by
|
|
$\mathit{pk}$, then programs the commits via the Pedersen-hiding
|
|
simulator. Distinguishing real from simulated commits reduces to
|
|
$\MLWE$. \qed
|
|
\end{proof}
|
|
|
|
% =====================================================================
|
|
\subsection{Games RESHARE-SOUND and RESHARE-PRIV}
|
|
\label{sec:game-reshare}
|
|
% =====================================================================
|
|
|
|
\begin{game}[RESHARE-SOUND]
|
|
\label{game:reshare-sound}
|
|
$\mathcal{A}$ has corrupted up to $t-1$ parties of the old
|
|
committee and up to $t-1$ of the new committee. The challenger runs
|
|
$\Reshare$ with an honest beacon. $\mathcal{A}$ wins if the new
|
|
committee's resulting shares do \emph{not} reconstruct to
|
|
$\mathbf{s}_1$ via Lagrange interpolation at $X = 0$.
|
|
\end{game}
|
|
|
|
\begin{theorem}[Reshare soundness]
|
|
\label{thm:reshare-sound}
|
|
$\Adv^{\mathsf{RESHARE\textsf{-}SOUND}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A}) \le \Adv^{\MSIS}_{q, k, 2\ell, \beta_{\mathrm{bind}}}(\mathcal{B})$.
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Sketch]
|
|
The reshare polynomials $g_i, h_i$ commit to constant terms
|
|
$\lambda_i^{\mathcal{Q}_e} \mathbf{s}_i, \lambda_i^{\mathcal{Q}_e} \mathbf{u}_i$
|
|
under Pedersen commit. Pedersen binding prevents a deviating
|
|
$i \in \mathcal{Q}_e \cap \mathcal{C}$ from substituting a different
|
|
constant term. The remaining honest parties' constant terms sum
|
|
under Lagrange interpolation to $\mathbf{s}_1$ exactly
|
|
(\Cref{thm:reshare-pkinv}). Therefore the master secret is preserved
|
|
modulo binding. \qed
|
|
\end{proof}
|
|
|
|
\begin{game}[RESHARE-PRIV]
|
|
\label{game:reshare-priv}
|
|
$\mathcal{A}$ corrupts up to $t-1$ parties of $\mathcal{O}$ and up to
|
|
$t-1$ of $\mathcal{N}$ (allowing distinct corruption sets per epoch,
|
|
matching the mobile adversary model). The challenger runs $\Reshare$
|
|
honestly with an honest beacon. $\mathcal{A}$ outputs a guess for
|
|
$\mathbf{s}_1$. Advantage = probability of correct guess.
|
|
\end{game}
|
|
|
|
\begin{theorem}[Reshare share privacy]
|
|
\label{thm:reshare-priv}
|
|
For an unbiased beacon $\beta_e$,
|
|
$\Adv^{\mathsf{RESHARE\textsf{-}PRIV}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A}) \le \Adv^{\MLWE}_{q, k, \ell, \eta}(\mathcal{B}) + \Adv^{\mathsf{beacon\textsf{-}unbias}}_{\mathrm{chain}}(\mathcal{B}_{\mathrm{beacon}}) + q^{-1}$.
|
|
\end{theorem}
|
|
|
|
\begin{proof}[Sketch]
|
|
The old committee's leaked shares $\{\mathbf{s}_i\}_{i \in
|
|
\mathcal{C}_{\mathrm{old}}}$ alone leak no information about
|
|
$\mathbf{s}_1$ by Shamir security. The new shares
|
|
$\{\mathbf{s}'_j\}_{j \in \mathcal{C}_{\mathrm{new}}}$ similarly leak
|
|
nothing on their own. The cross-leakage from the dealing step
|
|
contributes $\{g_i(j) : i \in \mathcal{Q}_e, j \in
|
|
\mathcal{C}_{\mathrm{new}}\}$. Conditioned on $\mathbf{s}_i$ (which
|
|
$\mathcal{A}$ already knows if $i \in \mathcal{C}_{\mathrm{old}}$,
|
|
otherwise hidden), the distribution of $g_i(j)$ for $|\{j\}| < t_{\mathrm{new}}$ is uniform in $\Rq^\ell$ by the high-degree
|
|
random coefficients of $g_i$; therefore the dealing-step view admits
|
|
a simulator that draws the leaked $g_i(j)$ values uniformly without
|
|
knowing $\mathbf{s}_1$.
|
|
|
|
The beacon-unbiasability assumption ensures
|
|
$\mathcal{Q}_e \cap \mathcal{C}_{\mathrm{old}}$ is a fresh uniform
|
|
sample with respect to $\mathbf{s}_1$, preventing adversarial gaming
|
|
of the quorum.
|
|
|
|
The $q^{-1}$ term is the negligible probability that a Lagrange
|
|
denominator collides in the beacon-induced ordering. \qed
|
|
\end{proof}
|
|
|
|
% =====================================================================
|
|
\subsection{Game RESTART-NL (rejection-restart non-leakage)}
|
|
\label{sec:game-restart-nl}
|
|
% =====================================================================
|
|
|
|
We re-state \Cref{thm:restart-non-leak} from the main text as an
|
|
explicit game for completeness and so the reduction to $\KMAC$'s
|
|
PRF security is recorded alongside the other games.
|
|
|
|
\begin{game}[RESTART-NL]
|
|
\label{game:restart-nl}
|
|
$\mathcal{A}$ corrupts up to $t-1$ parties of a fixed quorum $T$.
|
|
The challenger runs $\Sign$ on a fixed honest target $(\mathit{pk}, \mu, T)$.
|
|
$\mathcal{A}$ requests $K$ distinct rejection-restart attempts
|
|
(distinct $\kappa = 1, \dots, K$); the challenger executes each
|
|
attempt and reveals the full per-attempt transcript. $\mathcal{A}$
|
|
outputs a guess for $\mathbf{s}_i$ for some honest party $i \in T
|
|
\setminus \mathcal{C}$.
|
|
\end{game}
|
|
|
|
\begin{theorem}[Restart non-leakage]
|
|
\label{thm:restart-nl-game}
|
|
For every $\PPT$ adversary against \Cref{game:restart-nl},
|
|
\[
|
|
\Adv^{\mathsf{RESTART\textsf{-}NL}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A})
|
|
\;\le\;
|
|
K \cdot \Adv^{\mathsf{PRF}}_{\KMAC}(\mathcal{B})
|
|
+ \Adv^{\mathsf{TS\textsf{-}UF}}_{\mathrm{Pulsar\text{-}M}}(\mathcal{A}').
|
|
\]
|
|
\end{theorem}
|
|
|
|
The proof is the hybrid argument of the main-text
|
|
\Cref{thm:restart-non-leak} restated formally. The cross-message
|
|
extension --- replacing the fixed $\mu$ with adversarially-chosen
|
|
$\mu^{(\kappa)}$ between restarts --- is recorded as open in
|
|
\S\ref{sec:knownlimits}.
|
|
|
|
% =====================================================================
|
|
\subsection{Summary of reductions}
|
|
\label{sec:sec-summary}
|
|
% =====================================================================
|
|
|
|
\begin{center}
|
|
\begin{tabular}{l l}
|
|
\toprule
|
|
game & reduction target \\
|
|
\midrule
|
|
TS-UF (static unforgeability) & $\MLWE_{q,k,\ell,\eta}$ + $\MSIS_{q,k,2\ell,\beta_{\mathrm{bind}}}$ + EUF-CMA(ML-DSA) \\
|
|
OUT-IND (FIPS~204 interchangeability) & $\MLWE_{q,k,\ell,\eta}$ \\
|
|
ROB (identifiable abort) & Pedersen binding ($\MSIS$) + Ed25519 signature soundness \\
|
|
ADAPT (adaptive corruption) & open --- deferred to round-2 \\
|
|
MOB (mobile-adversary) & TS-UF + RESHARE-PRIV + beacon unbiasability \\
|
|
DKG-SOUND & $\MSIS$ + RO collision \\
|
|
DKG-PRIV & $\MLWE$ \\
|
|
RESHARE-SOUND & $\MSIS$ \\
|
|
RESHARE-PRIV & $\MLWE$ + beacon unbiasability \\
|
|
RESTART-NL (rejection-restart) & PRF($\KMAC$) + TS-UF \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
The dominant terms across all games are $\MLWE_{q, k, \ell, \eta}$
|
|
and ML-DSA EUF-CMA, both of which take the FIPS~204
|
|
parameter-pinned values (see \S\ref{sec:parameters}). Pulsar
|
|
inherits ML-DSA's security level modulo the threshold-protocol
|
|
overhead, which is dominated by the Pedersen-binding $\MSIS$ term
|
|
and the random-oracle programming penalty.
|
|
|
|
\paragraph{Forward-security note.}
|
|
The MOB game (\Cref{game:mob}) implies forward security at the epoch
|
|
granularity: revealing all shares at epoch $e$ leaks no information
|
|
about $\mathbf{s}_1$ in epoch $e' > e$ provided fewer than $t-1$
|
|
parties have leaked their epoch-$e'$ shares. Combined with $\Reshare$
|
|
at the epoch boundary, this gives the standard
|
|
proactive-secret-sharing forward-security guarantee.
|