²ANSSI, France
¹
₿
shared ownership of Bitcoin
Applications
Schnorr signatures
multi-signatures
threshold sigs
blind signatures
...
on-chain
off-chain
\(\textsf{SchnorrVerify}(pk,\textit{sig}, m)\)
ordinary Schnorr public key
obtained via non-interactive public algorithm
\(pk=\mathsf{AggKey}(pk_1, \dotsc, pk_n)\)
ordinary Schnorr signature
obtained via interactive signing protocol with
\(n\) signers
\( \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 \$; R = g^r }\)
\( c = H(\textit{pk}, R, m) \)
\(\text{return}\ g^s == X^c \cdot R \)
\(\textit{sk}=x\)
\(\textit{pk}=g^x\)
\(pk_1\)
\(pk_2\)
\(R_1\)
\(R_2\)
\(s_1\)
\(s_2\)
\( c = H(\textit{pk}, R_1R_2, m) \)
\(\text{return}\ (R_1R_2,s_1+s_2)\)
\(pk=pk_1^{\textcolor{#00c3ff}{}{}}\cdot pk_2^{\textcolor{#00c3ff}{}{}}\)
\(pk_1\)
\(\textcolor{#cc0000}{}pk_2\)
\(R_1\)
\(R_2\)
\(s_1\)
\(s_2\)
\(\color{#00c3ff} H(R_2)\)
\( c = H(\textit{pk}, R_1R_2, m) \)
\(\text{return}\ (R_1R_2,s_1+s_2)\)
\( \color{#00c3ff} H(R_1)\)
\(pk=pk_1^{\textcolor{#00c3ff}{a_1}}\cdot pk_2^{\textcolor{#00c3ff}{a_2}}\)
\(\color{#00c3ff} a_i = H(i, \textit{pk}_1, \textit{pk}_2)\)
[Maxwell, Poelstra, Seurin, Wuille 2018]
\(pk_1\)
\(pk_2\)
\(\color{#00c3ff} R_1', R_1''\)
\(\color{#00c3ff} R_2',R_2''\)
\(s_1\)
\(s_2\)
\(\color{#00c3ff} R_i=R_i'(R_i'')^b\)
\( \color{#00c3ff} b = H(\textit{pk}, R_1'R_2', R_1''R_2'', m) \)
\( c = H(\textit{pk}, R_1R_2, m) \)
\(\text{return}\ (R_1R_2,s_1+s_2)\)
\(pk=pk_1^{\textcolor{#00c3ff}{}{a_1}}\cdot pk_2^{\textcolor{#00c3ff}{}{a_2}}\)
\( a_i = H(i, \textit{pk}_1, \textit{pk}_2)\)
Concurrent work: