This is work in progress.
\(t-1\) malicious peers
cannot produce
a valid signature.
\(t\) honest peers
can produce
a valid signature.
\(t\)-of-\(n\)
\(n\)-of-\(n\): Multisignatures
Threshold signatures should look like ordinary signatures!
Key-path spending
Script-path spending
\( \textsf{Sign}(\textit{sk} = x, \textit{pk} = g^x, m) \)
\( r \leftarrow \$ \)
\( R = g^r \)
\( c = H(\textit{pk}, R, m) \)
\( s = x\cdot c + r \)
\( \text{return}\ (R, s) \)
\( \textsf{Verify}(\textit{pk} = X, (R, s), m) \)
\(\phantom{r \leftarrow \$ }\)
\(\phantom{ R = g^r }\)
\( c = H(\textit{pk}, R, m) \)
\(\text{return}\ g^s = X^c \cdot R \)
\(\textit{sk}=x\)
\(\textit{pk}=g^x\)
https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki
\(X_1=g^{x_1}\)
\(R_1 = g^{r_1}\)
\(X_2=g^{x_2}\)
\(R_2 = g^{r_2}\)
\(X_3=g^{x_3}\)
\(R_3 = g^{r_3}\)
MSDL-pop
[Boneh, Drijvers, Neven (2018)]
Secret Sharing (simplified)
\(a\)
\(a_1\)
\(a_2\)
\(a_3\)
2-of-3
\(a\)
DKG for Secret Key (\(n=3\), simplified)
\(O(f)\) rounds
\(O(1)\) rounds
DKG for Secret Key and Nonce (\(n=3\), simplified)
\(t - 1 < \frac{n}{2}\)
(Honest majority)
5 malicious peers
cannot produce
a valid signature.
6 honest peers
can produce
a valid signature.
6-of-9
worst
case
better
case
Security Reduction
No,
reduction relies on honest majority
to extract secrets of the attacker.
Idea: Use other commitments in verifiable secret sharing.
Fail gracefully:
Give up liveness but never give up safety!
reconstruct \(r_1, r_2\)
reconstruct \(r_3, r_4\)
1
2
3
4
4
3
1
2
Malicious broadcast channel learns
the nonce \(r = r_1 + r_2 + r_3 + r_4\) and
the signature \((R, s)\).
Combined secret key is \(x=(s - r)/c.\)
Idea: Reconstruct only partial signature \(s_i\).
Just because a peer appears offline,
we cannot simply reconstruct his secrets in public!