fundal
MuSig este o extensie a/derivare de la semnăturile Schnorr folosind grupuri ciclice pe curbele eliptice. În hârtie originală, autorii subliniază că multi-Schnorr-ul naiv este vulnerabil la un atac cu chei necinstite:
Dat $\Bbb G$ este un grup ciclic de ordin prim; $g$ este punctul generator; $H$ este o funcție hash; $m$ este mesajul de semnat; și sunt $n$ participanti:
Lăsa $L = \{ X_1 = g^{x_1},..., X_n = g^{x_n} \}$ fi multisetul de chei de participant.
Fie fiecare parte nonce să fie $R_i = g^{r_i}$.
Calculați nonceul agregat: $R = \prod_{i=1}^nR_i$
Calculați cheia agregată: $\tilde X = \prod_{i=1}^nX_i$
Calculați provocarea: $c = H(\tilde X, R, m)$
Calculați fiecare semnătură parțială: $s_i = r_i + cx_i$
Calculați semnătura agregată: $s = \sum_{i=1}^ns_i$
Semnătura pentru cheia agregată $\tilde X$ și mesaj $m$ este acum $(R, s)$ si poate fi verificat:
$g^s = R\tilde X^c$
Dacă un participant este un actor rău și așteaptă să adune toate celelalte chei de participant înainte de a le trimite pe ale lui, el poate calcula o pereche de chei care îi permite să semneze pentru grup inversând produsul parțial:
$X_1 = g^{x_1} * {(\prod_{i=2}^nX_i)}^{-1}$
Contribuția principală a lucrării MuSig este o schemă care previne atacul cheii necinstite prin transformarea fiecărei chei de participant după schimbul de chei într-un mod care să permită agregarea cheilor în modelul simplu de cheie publică:
Lăsa $\langle L \rangle$ fi o ordonare deterministă a $L$.
Lăsa $a_i = H(\langle L \rangle, X_i)$
Calcula $\tilde X = \prod_{i=1}^n{X_i}^{a_i}$
O problemă bine-cunoscută cu schimbul de non-uri este aceea că în sesiunile concurente cu non-uri pre-partajate, un atacator poate folosi atacul generalizat de ziua lui Wagner pentru a influența rezultatul hash și astfel falsifică eficient o semnătură. Soluția la această problemă este ca toți participanții să se angajeze la o valoare nonce și să-și împărtășească mai degrabă angajamentul decât nonce; când vine momentul creării unei semnături de grup, nonce-urile sunt schimbate, iar protocolul se întrerupe dacă un nonce primit nu se mapează la un angajament.
Întrebare
Poate fi rezolvat atacul cheii necinstite prin angajarea unei chei publice înainte de a schimba acele chei? Acest lucru ar permite tuturor participanților să detecteze dacă vreun alt participant încearcă să-și manipuleze cheia publică pentru a permite semnături unice pentru grup. Sesiunea ar putea fi apoi renunțată și cheia agregată frauduloasă ignorată.
Este acest lucru adecvat pentru a atenua atacul cu chei necinstite sau îi lipsesc asigurările de securitate în anumite circumstanțe?