Files
papers/zoo-pq-crypto/sections/03-ml-dsa-digital-signatures-fips-204.tex

28 lines
1.3 KiB
TeX

\section{ML-DSA: Digital Signatures (FIPS 204)}
\subsection{Construction}
\MLDSA{} (formerly Dilithium) uses Module-LWE and Module-SIS with ``Fiat-Shamir with Aborts'' rejection sampling. Zoo deploys \MLDSA{}-65 (NIST Security Level~3, $k = 6$, $\ell = 5$, $q = 8380417$).
Key generation: $\mathbf{A} \xleftarrow{\$} R_q^{k \times \ell}$, $\mathbf{s}_1 \leftarrow S_\eta^\ell$, $\mathbf{s}_2 \leftarrow S_\eta^k$, $\mathbf{t} = \mathbf{A}\mathbf{s}_1 + \mathbf{s}_2$. Signing samples $\mathbf{y} \leftarrow S_{\gamma_1}^\ell$, computes challenge $c$ from $\mathbf{w}_1 = \text{HighBits}(\mathbf{A}\mathbf{y})$, and outputs $\mathbf{z} = \mathbf{y} + c\mathbf{s}_1$ if norm bounds are satisfied (otherwise resamples).
\subsection{Performance and Usage}
\begin{table}[h]
\centering
\begin{tabular}{lcc}
\toprule
\textbf{Parameter} & \textbf{ML-DSA-65} & \textbf{ECDSA (secp256k1)} \\
\midrule
Public key / Signature & 1,952\,B / 3,309\,B & 33\,B / 64\,B \\
Sign / Verify & 680 / 250\,$\mu$s & 45 / 120\,$\mu$s \\
\bottomrule
\end{tabular}
\caption{\MLDSA{}-65 vs classical ECDSA}
\label{tab:mldsa-perf}
\end{table}
\MLDSA{}-65 is the default transaction signature on \KChain{}: user transfers, contract calls, staking, governance proposals. The 59x key and 52x signature expansion is mitigated by pruning after finality.