Scheme de semnături de grup cu trasabilitate distribuită (sau modul de deschidere corectă a unei semnături)

Imagine de Anne-Laure Delva

În această postare vreau să discut despre schemele de semnături de grup și în mod specific grupările de semnături cu trasabilitate distribuită și să arăt de ce acesta este un instrument criptografic interesant pentru sisteme distribuite, folosind protocolul de consens Helix ca exemplu pentru modul în care aceste semnături pot fi utilizate.

Semnăturile grupului, introduse de Chaum și Van Heyst, permit unui membru al unui grup să semneze anonim în numele grupului, oferind în același timp posibilitatea de a urmări identitatea semnatarului în cazuri speciale. Adică, participanții la grup pot verifica, folosind chei de verificare, că o semnătură a fost creată într-adevăr de cineva din grup, dar nu pot spune de cine. În caz de dispute sau comportamente greșite, o autoritate de urmărire folosește cheia de urmărire pentru a urmări semnatarul.

Pentru unele cazuri de utilizare, o singură autoritate de urmărire funcționează. Cu toate acestea, în multe alte cazuri nu există o singură autoritate în care toată lumea să aibă încredere pentru revocarea anonimatului și, prin urmare, este mai logic să împărțiți responsabilitatea între mai multe autorități. Această perspectivă conduce Benjumea și colab. pentru a proiecta „Semnături multigrupale care pot fi urmărite corect”. În cadrul schemei lor, deschiderea unei semnături este posibilă dacă mai multe autorități de echitate cooperează. Autoritățile de echitate pot coopera, de asemenea, pentru a dezvălui o cheie de urmărire a unui utilizator sub suspiciune. Această cheie poate fi utilizată pentru a verifica dacă un mesaj a fost semnat de un anumit utilizator fără a revoca anonimatul celorlalți utilizatori.

Până în ziua de azi, există mai multe scheme de semnătură cu trasabilitate distribuită, care diferă ușor în ceea ce privește funcționalitatea pe care o oferă, cum ar fi „Semnături de grup democratic cu trazabilitate în prag” de Zheng și colab. al., pe care voi elabora mai departe.

Grupuri de semnături cu trasabilitate distribuită în Helix

La Orbs, dezvoltăm Helix, protocolul nostru original de consens, special conceput pentru asigurarea tranzacțiilor într-un mod corect. Conceptul cheie din Helix este acela că nodurile de rețea nu pot manipula tranzacțiile care sunt incluse într-un bloc nou sau comanda acestora. În special, nu pot cenzura noduri sau utilizatori specifici și nu pot favoriza tranzacțiile lor într-un mod substanțial. Puteți citi mai multe despre Helix în această postare pe blog.

Un important contribuitor al corectitudinii în Helix este ca utilizatorii să-și cripteze tranzacțiile și apoi să decripteze tranzacțiile originale numai după ce sunt anexate la blockchain. Criptarea tranzacțiilor are un preț, în special, crește nevoia de a pedepsi utilizatorii și nodurile care trimit junk în rețea în loc de tranzacții valide. Din acest motiv avem nevoie de un mecanism pentru a dezvălui ce noduri de rețea sunt responsabile pentru tranzacțiile problematice pentru a le diminua reputația.

Putem face acest lucru folosind semnături de grup cu trasabilitate distribuită, prin faptul că fiecare nod de rețea servește ca autoritate de echitate și necesită un număr prag de autorități pentru a deschide și urmări semnăturile.

Acum mă refer la descrierea fluxului pe care o face o tranzacție în Helix și la modul în care se pot folosi semnăturile de grup cu trasabilitate distribuită. Dacă sunteți mai puțin interesat de acest flux special, puteți săriți mai departe și puteți citi despre schema de semnătură a candidatului. Fluxul începe când un utilizator creează o tranzacție, o criptează și o trimite către un nod de rețea cu care este asociat. Nodul de rețea semnează apoi tranzacția folosind o schemă de semnătură a grupului care poate fi urmărită și transmite tranzacția către rețea. Înainte de a include tranzacția într-un bloc, creatorul de bloc verifică tranzacția are o semnătură validă a grupului. După ce blocul este atașat la blockchain, inițiem un proces (care necesită un număr de prag de noduri) pentru decriptarea tranzacțiilor din bloc. Dacă este necesar (de exemplu, tranzacția decriptată se dovedește a fi invalidă), un număr de prag de noduri cooperează și deschide semnătura pentru a dezvălui ce nod a semnat această tranzacție.

O altă opțiune posibilă pentru flux este de a deschide semnăturile în mod implicit în paralel cu procesul de decriptare. Avantajul deschiderii semnăturii în mod implicit este faptul că nu este necesar să inițiem un protocol special pentru tranzacții defectuoase și să avem în schimb acest proces executat ca parte a fluxului normal. O altă opțiune este încorporarea procesului de dezvăluire a unei chei de urmărire (folosită pentru a urmări un nod specific de comportare greșită). De asemenea, observăm că unele scheme de semnături de grup au și funcționalitate de revendicare, în care semnatarii pot solicita semnătura ca aparținând acestora, pe care nu am folosit-o în fluxul de mai sus.

Din fluxul nostru deducem cerințele de securitate pe care le căutăm:

  • Anonimat: Semnătura grupului nu dezvăluie identitatea membrului care a produs-o, cu excepția cazului în care mai mult de un număr de prag de autorități de echitate cooperează.
  • Trasabilitatea păstrează anonimatul: Dacă un nod susține că este inițiatorul unei semnături sau identitatea acesteia a fost dezvăluită ca parte a algoritmului de urmărire, aceasta nu cuprinde confidențialitatea rămânerii rămase sau viitoarele semnături ale grupului pe care le emite.
  • Deblocare: este imposibil să raportăm două sau mai multe semnături ca fiind produse de același semnatar fără cooperarea unui număr prag de autorități.
  • Non-frameability: Chiar dacă grupul și managerii de urmărire se ciocnesc cu restul grupului, aceștia nu pot încadra un membru onest al grupului. Un utilizator poate fi încadrat în două moduri diferite: autoritățile și alți utilizatori pot construi o semnătură care se deschide sau urmărește un utilizator nevinovat (această cerință se mai numește exculpabilitate puternică) sau poate solicita o semnătură care a fost generată de utilizator ca propriile lor.

Alte cerințe importante sunt: ​​susținerea schimbării dinamice a semnătorilor și a trasorilor, și nu necesită configurare de încredere.

Schema de semnături a candidaților

Una dintre cele mai eficiente scheme de semnături cunoscute în prezent este Boneh, Boyen și Shacham (BBS), pe care le-au introdus în hârtia lor „Semnături cu grupuri scurte.” Schema de semnături le lipsește câteva proprietăți necesare pentru utilizarea noastră. În primul rând, schema lor de semnătură de grup nu asigură trasabilitatea distribuită, ci necesită mai degrabă o autoritate de urmărire centralizată. În plus, schema lor nu satisface proprietatea „trasabilitatea menține anonimatul” (pentru că nu oferă anonimat CCA, explicat mai târziu), ceea ce este crucial în contextul nostru. Mai mult, procesul de generare a cheilor necesită un dealer de încredere. Din fericire, există documente de urmărire care se ocupă de primele două probleme. Ideile pot fi combinate pentru a realiza o schemă de semnătură anonimă CCA, care oferă trasabilitate distribuită. A scăpa de dealerul de încredere este o problemă care trebuie abordată dacă alegem această schemă.

Într-o lucrare de Blomer et. al, „Semnături de grup scurt cu trasabilitate distribuită”, schema BBS este extinsă pentru a sprijini trasabilitatea distribuită. Acest lucru se realizează în felul următor. În schema BBS, o parte a semnăturii este o criptare a (unei părți) a cheii secrete, iar deschiderea se ridică la decriptarea acestui cifru. În hârtia de Blomer, schimbă criptarea în prag de criptare. Deschiderea unei semnături constă din două procese, primul produce o partajare deschisă din semnătura, iar al doilea combină un număr prag de acțiuni pentru a decripta cheia semnatarului. O altă modificare pe care o aduc este adăugarea unui element suplimentar la cheia secretă, care este cunoscută doar utilizatorului și nu autorităților de echitate. Acest lucru garantează că autoritățile de echitate nu pot semna în numele altor membri.

Schema BBS asigură anonimatul CPA. Aproape, aceasta înseamnă că semnăturile sunt anonime cu condiția ca adversarul să nu ajungă să interogheze protocolul de semnături de urmă. Cu toate acestea, această presupunere nu este justificată în setarea noastră, deoarece un adversar poate produce mesaje semnate și le poate trimite la blockchain, iar ulterior vor fi identificate ca parte a fluxului nostru normal. Prin urmare, solicităm ca schema de semnături să fie anonimă CCA, ceea ce înseamnă că chiar și un adversar care are acces la protocolul deschis \ de urmărire nu poate urmări semnătura fără a coopera cu un număr prag de autorități de echitate. În lucrarea sa, „Probe de comunicare și interacțiune eficiente de comunicare cu extractoare online”, Fischlin introduce o metodă pentru transformarea schemei de semnături de către BBS pentru a fi sigură de CCA. Acest lucru funcționează prin adăugarea de componente la semnătură, care generează o dovadă de cunoștințe zero-interacțiune non-interactivă pentru valorile aleatorii utilizate la criptare. În mod informal, acest lucru asigură că adversarul nu câștigă mult din interacțiunea cu protocolul de urmărire, deoarece pentru a semna un mesaj valid, ea trebuia să cunoască valorile aleatorii utilizate pentru generarea criptării în primul rând.

Mărimea semnăturii

Lungimea schemei de semnături a grupului BBS în conformitate cu parametrii sugerați de autori este de 1.533 biți. Aceasta este comparabilă cu dimensiunea semnăturii RSA, care este de 1.024 sau 2.048 de biți pentru semnăturile cu securitate similară. Adăugarea trasabilității distribuite nu face ca semnătura să fie mai lungă, însă complexitatea înțeleaptă necesită calcularea interpolării polinomiale lagrange pentru a combina acțiuni.

În ceea ce privește cunoașterea zero a cunoștințelor, aceasta este relativ mare și este costisitoare de calculat. Pentru parametrii sugerați în lucrare, lungimea este de 3.520 de biți, ceea ce reprezintă o lungime de semnătură de 5.053 de biți în total.

Mărimea acțiunilor de semnătură sunt de 340 de biți pe acțiune.

Aș dori să mulțumesc lui Steven Goldfeder pentru discuțiile utile pe această temă.

* Citiți cărțile albe Orbs: https://www.orbs.com/white- Wallpaper

Alăturați-vă comunității Orbs:

  • Telegrama: https://t.me/orbs_network
  • Twitter: https://twitter.com/orbs_network
  • Reddit: https://www.reddit.com/r/ORBS_Network/
  • GitHub: https://github.com/orbs-network