În Am discutat despre utilizarea unui algoritm criptografic numit „semnătură electronică oarbă” pentru asigurarea confidențialității votului și anonimizării alegătorului în sistemul nostru de vot electronic la distanță. În acest articol, ne vom aprofunda în detaliile acestuia.
La început, să ne adresăm unui algoritm de semnătură electronică cunoscut și familiar, care este utilizat pe scară largă în sistemele informaționale. Semnătura electronică se bazează pe algoritmi criptografici de criptare asimetrică. Criptarea asimetrică este un tip de criptare care implică utilizarea a două chei: una pentru criptare și alta pentru decriptare. Ele sunt numite cheie publică și cheie privată. Cheia publică este cunoscută de toți, iar cheia privată este cunoscută doar de proprietarul semnăturii electronice și este păstrată într-un loc inaccesibil altora.
La semnare, se întâmplă următoarele: mai întâi, documentul electronic este transformat printr-o serie de transformări matematice într-o secvență de simboluri de dimensiune fixă – aceasta se numește funcție hash.
Secvența de simboluri obținută (hash-ul documentului) este criptată de către expeditorul documentului folosind cheia privată și împreună cu cheia publică este trimisă destinatarului. Destinatarul decriptează secvența de simboluri folosind cheia publică, aplică exact aceeași funcție hash asupra documentului și compară rezultatul transformării cu rezultatul decriptării. Dacă totul coincide, atunci documentul nu a fost modificat după ce a fost semnat de expeditor.
Aceste acțiuni descrise permit verificarea că documentul nu a fost modificat, dar nu permit confirmarea că expeditorul este într-adevăr cine pretinde a fi. De aceea, avem nevoie de o a treia parte în care atât expeditorul, cât și destinatarul au încredere. Înainte de a trimite documentul, expeditorul se adresează acestei terțe părți și îi solicită să semneze cheia sa publică cu semnătura sa electronică. Acum, expeditorul trimite destinatarului documentul, cheia sa publică și semnătura terței părți asupra cheii sale. Destinatarul verifică semnătura terței părți asupra cheii publice și are încredere în semnătura obținută a documentului.
Să trecem acum la ceea ce este «semnătura oarbă» și cum ne poate ajuta în procesul de anonimizare.
Să presupunem că, în exemplul descris mai sus, expeditorul este un alegător, documentul este un buletin de vot, iar destinatarul este comisia electorală, sau cum am spus, «componenta de înregistrare și numărare a voturilor». Ca a treia parte (validatoare), vom avea componenta «Lista alegătorilor». În acest caz, procesul poate decurge astfel.

Alegătorul își generează pe dispozitivul său o pereche de chei – una privată și una publică. Deoarece aceste chei sunt create pe dispozitivul său personal în browser, ele îi sunt cunoscute doar lui.
Cu aceste chei va semna buletinul de vot pentru a-i verifica integritatea. Buletinul de vot semnat împreună cu cheia publică este trimis comisiei electorale. Pentru ca buletinul de vot să fie acceptat de componenta «Stocare distribuită și numărare a voturilor», trebuie să verifice că cheia publică este semnată de validator.
Validatorul (componenta «Lista alegătorilor») va semna cheia publică numai după ce se va asigura că alegătorul este prezent în lista alegătorilor.
Pentru a păstra secretul votului, cheia publică a alegătorului, creată pe dispozitivul său, nu trebuie să fie cunoscută de nimeni. Așadar, validatorul trebuie să semneze ceva ce nu îi este cunoscut. Această sarcină pare imposibil de realizat, dar cryptographic algorithms – în acest caz, algoritmul «semnăturii oarbe» vin în ajutor.
Mai întâi, pe dispozitivul alegătorului, cheia publică trebuie să fie mascată. Mascararea presupune efectuarea unor calcule matematice pe dispozitivul utilizatorului. Imaginează-ți că ai gândit un număr aleatoriu de la 1 la 100, apoi ai gândit un alt număr aleatoriu de la 1 la 10 și un al treilea, de la 10 la 50, numărul inițial fiind ridicat la puterea numărului secund și împărțit fără rest la al treilea. Rezultatul obținut este comunicat celor din jur. Nu îți va fi greu să restaurezi numărul inițial, deoarece știi secvența de acțiuni și numerele pe care le-ai gândit. Dar cei din jur nu vor putea face acest lucru.
Mecanismul (orbirea) cheii publice se efectuează conform unui algoritm criptografic special. Ca rezultat, validatorul semnează cheia publică mascată, fără a avea cunoștință de cheia inițială. Însă trăsătura algoritmului este că utilizatorul (votantul), primind semnătura pe cheia mascată, poate efectua transformări inverse pentru a obține o semnătură validă și pentru cheia inițială, nemascată.
Algoritmul descris este utilizat pe scară largă în protocoalele de vot secret. În sistemul de vot electronic la distanță, în prezent, se folosește pentru semnătura oarbă algoritmul RSA cu o lungime a cheii de 4096 biți.
În general, procedura de anonimizare arată astfel.
- La crearea votului, se generează o pereche de chei separată pentru "validator", iar cheia publică este înregistrată în blockchain. Pentru fiecare vot se creează o pereche de chei unică.
- Utilizatorul este identificat în sistemul de identificare (în acest caz, în ESDI) și oferă permisiunea de a transfera datele sale de identificare din sistemul de identificare în PTC DEG.
- Componenta „Lista votanților” din PTC DEG verifică dacă utilizatorul se află în lista votanților.
- Pe dispozitivul utilizatorului sunt generate cheile sale personale – cheia privată și cheia publică, cunoscute doar de el.
- Pe dispozitivul utilizatorului, cheia publică este mascată.
- Împreună cu datele de identificare și cheia publică mascată, utilizatorul se adresează componentului „Lista votanților”.
- Componenta verifică din nou dacă utilizatorul se află în listă și dacă nu a primit semnătura anterior.
- Dacă toate verificările sunt reușite, se efectuează semnarea cheii.
- Faptul semnării cheii este înregistrat în blockchain.
- Utilizatorul, pe dispozitivul său, demaschează cheia publică și obține cheia privată, cheia publică și semnătura pe cheia publică, având astfel toate cheile cunoscute doar de el.
- După aceasta, utilizatorul este transferat într-o zonă anonimă – pe un site separat edg2020.gov.ru, unde nu poate fi identificat (de exemplu, înainte de tranziție, el poate schimba VPN sau schimba furnizorul de internet, modificând complet adresa IP).
- Acceptarea buletinului va depinde doar de faptul că semnătura „validatorului” va trece verificarea și că o astfel de cheie nu a fost utilizată anterior.
Aici este o descriere a algoritmului din perspectiva criptografiei.
Parametrii semnăturii și denumiri:


M – în formatul padding FDN pentru semnătură.
Sursa: habr.com
