mirror of
https://github.com/luxfi/security.git
synced 2026-10-30 15:17:20 +00:00
Establish luxfi/security as the discoverable security home (relocated from
luxfi/proofs, which is for the mathematical proofs themselves):
framework/ASSURANCE.tex the normative standard + assurance vocabulary
framework/check.sh the one runnable gate (any crypto repo)
framework/checks/ circular-proof / proof-by-rename / fail-open /
axiom-budget / claims-vs-reality detectors
framework/redteam/ per-family red-team checklists (lattice/hash/STARK)
framework/REVIEW-GUIDE.tex external cryptographer's entry point
LLM.md is now a real security-home index: the framework, the per-repo .assurance
trust surfaces + review packages, the honest posture (review-ready, NOT
externally audited), the shared security invariants (KMS-only secrets,
fail-closed novel-crypto verifiers, no secret reconstruction, interop-tested
byte-equality), and pointers to luxfi/compliance, luxfi/proofs, luxfi/kms.
68 lines
3.6 KiB
TeX
68 lines
3.6 KiB
TeX
\documentclass[11pt]{article}
|
|
\usepackage[margin=1in]{geometry}
|
|
\usepackage{enumitem}
|
|
\title{Red-team checklist: lattice threshold signatures\\(Pulsar = threshold ML-DSA, Corona = threshold Module-LWE/Raccoon)}
|
|
\date{}
|
|
\begin{document}\maketitle
|
|
\noindent Apply this to Fiat--Shamir-with-aborts lattice threshold schemes. It
|
|
encodes the PULSAR-V13 findings. ``FAIL'' = do not ship.
|
|
|
|
\section{Leakage of long-term key material}
|
|
\begin{enumerate}[leftmargin=*]
|
|
\item Does any round broadcast a per-party value that, summed over the
|
|
\emph{public} challenge $c$ across attempts, reconstructs a secret? (The
|
|
V13 leak: unmasked $c\!\cdot\!s_2$, $c\!\cdot\!t_0$ shares $\Rightarrow$
|
|
$c\!\cdot\!s_{2,\mathrm{master}}$ over varying $c$ $\Rightarrow$ master
|
|
key by linear system.) Masking a single share is necessary but NOT
|
|
sufficient if the \emph{aggregate} still reconstructs.
|
|
\item Is the rejection/hint sequence secret-dependent and exposed? The hint
|
|
must be recovered from PUBLIC data ($w' = A z - c t_1 2^d$, $w_1$) via the
|
|
FIPS \texttt{UseHint}, never from $c\!\cdot\!s_2$/$c\!\cdot\!t_0$/$r_0$.
|
|
\item Is full $w$ (or $\mathrm{LowBits}(w)$, boundary distances) ever
|
|
published? $w' - w = c t_0 - c s_2$ leaks the residual.
|
|
\item Does DKG / reshare / keygen reconstruct the master at any party or
|
|
aggregator on a PRODUCTION path? (A trusted-dealer/TEE path must be
|
|
explicitly named and gated.)
|
|
\end{enumerate}
|
|
|
|
\section{Norm bounds and the L2/L$\infty$ trap}
|
|
\begin{enumerate}[leftmargin=*]
|
|
\item Every small-norm claim ($\|s_1\|,\|s_2\|\le\eta$, $\|t_0\|$, boundary
|
|
margin) is an L$\infty$ (per-coefficient) bound. A uniform-mask $\Sigma$
|
|
protocol carries ZERO norm information; BDLOP/LNS norm proofs certify L2,
|
|
and $\|x\|_\infty\le\|x\|_2$ is loose by $\sqrt{\dim}$ (often vacuous,
|
|
$>q$). A range gate that cannot imply the L$\infty$ bound must FAIL CLOSED,
|
|
not approximate.
|
|
\item Is the parameter set inside the proven scope? (BCC/CEF: $\|c t_0\|_\infty
|
|
\le \tau 2^{d-1} < \gamma_2$ holds for ML-DSA-65/87, NOT 44.) A threshold
|
|
that underflows/saturates a bound check for an out-of-scope set is a leak.
|
|
\end{enumerate}
|
|
|
|
\section{Nonce / session safety}
|
|
\begin{enumerate}[leftmargin=*]
|
|
\item Can a session id collide for a fixed key share? (Corona CRIT-1: same
|
|
$(\mathrm{sid},\mathrm{skShare})\Rightarrow$ same $R\Rightarrow$
|
|
$(z_\Sigma - \sum s_i\lambda_i c)u^{-1}=R$ reopens.) The nonce-PRF key MUST
|
|
derive from $\ge256$ bits of fresh entropy (hedge), not a 64-bit counter,
|
|
and not rest on the consensus layer for uniqueness.
|
|
\item Is the challenge validated as a genuine \texttt{SampleInBall} ($\tau$
|
|
coefficients $\pm1$)? A degenerate $c=0$ strips the $s_1$ binding from a
|
|
partial-$z$ proof.
|
|
\item Is nonce selection canonical / non-grindable (a coordinator cannot pick
|
|
among many valid $w_1$ after seeing the message)?
|
|
\end{enumerate}
|
|
|
|
\section{Accountability and aggregation}
|
|
\begin{enumerate}[leftmargin=*]
|
|
\item Is the signer bitmap cryptographically bound to the signature (not a
|
|
free field a forger can rewrite)? Threshold ML-DSA does not encode its
|
|
signer set in the joint key, so accountability needs its own QC.
|
|
\item Does cert verification actually verify the quorum signatures (not a
|
|
fail-open no-op default)? Run \texttt{framework/checks/fail-open.sh}.
|
|
\item Aggregator-host trust: a root-compromised aggregator that sees $c$ and
|
|
all $z_i$ across enough quorum subsets recovers $s_\Sigma$. State this
|
|
limitation in the deployment posture; it is mitigated by TEE/mlock, not
|
|
cryptographically.
|
|
\end{enumerate}
|
|
\end{document}
|