Files
papers/lux-validator-mpc/sections/04-cggmp21-threshold-ecdsa.tex
zeekay abf99d05fc papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

59 lines
2.3 KiB
TeX

\section{CGGMP21: Threshold ECDSA}
\label{sec:cggmp21}
\subsection{Protocol Overview}
CGGMP21~\cite{canetti2021uc} is a threshold ECDSA protocol proven secure in the
UC (Universal Composability) framework. It operates in two phases:
\begin{enumerate}[leftmargin=2em]
\item \textbf{Key generation}: Dealerless DKG produces additive shares
$sk_i$ such that $sk = \sum_{i \in S} \lambda_i \cdot sk_i$ for any
qualifying set $S$ of size $t$, where $\lambda_i$ are Lagrange
coefficients.
\item \textbf{Presigning}: Before the message is known, parties precompute
nonce shares $(k_i, \gamma_i)$ and exchange commitments. This is the
expensive phase (Paillier encryption, range proofs).
\item \textbf{Signing}: Given message $m$, parties combine presigned values
with message-dependent terms to produce $(r, s)$.
\end{enumerate}
\subsection{Identifiable Abort}
A critical property of CGGMP21 is \emph{identifiable abort}: if any party deviates
from the protocol, the honest parties can identify the cheater. This is essential for
validator slashing---a misbehaving threshold signer can be identified and penalized.
\begin{definition}[Identifiable abort]
A threshold signing protocol has identifiable abort if, whenever the protocol fails
to produce a valid signature, every honest party can output the identity of at least
one corrupted party.
\end{definition}
\subsection{secp256k1 Compatibility}
CGGMP21 produces standard ECDSA signatures on secp256k1. The output is
indistinguishable from a single-signer ECDSA signature. EVM \texttt{ecrecover}
returns the expected address. No smart contract changes are needed.
\begin{algorithm}[ht]
\caption{CGGMP21 Signing (simplified).}
\label{alg:cggmp21}
\begin{algorithmic}[1]
\Require Message hash $e$; presigned tuples $(k_i, \chi_i, R)$ for $i \in S$
\Ensure ECDSA signature $(r, s)$
\State $r \leftarrow R.x \mod q$ \Comment{$R = (k^{-1}) \cdot G$}
\ForAll{$P_i \in S$}
\State Compute $s_i \leftarrow k_i \cdot e + k_i \cdot r \cdot \chi_i \mod q$
\State Broadcast $s_i$
\EndFor
\State $s \leftarrow \sum_{i \in S} s_i \mod q$
\State \Return $(r, s)$
\end{algorithmic}
\end{algorithm}
%% ========================================================================
%% 5. FROST: THRESHOLD SCHNORR/BLS
%% ========================================================================