“Cum VoteMeApp asigură că toate voturile au fost contorizate și nu sunt modificate?” este o întrebare pe care o adresează cei care votează într-un scrutin secret. Un scrutin online secret se caracterizează prin faptul că platforma afișează doar suma voturilor pentru fiecare candidat, nu și opțiunea de vot a fiecărui votant.
La scrutinele cu votare secretă este mai dificil să convingem participanții că voturile lor sunt luate în calcul și nu au fost modificate pentru că implică puțină matematică. Una din soluții este ca platforma de votare să publice o informație parțială despre vot, imediat după ce persoana votează. Astfel sistemul transmite fiecărui votant un cod unic, ca mai apoi să nu existe posibilitatea de a modifica cumva voturile.
O opțiune destul de simplă este amprenta (semnătura) digitală a votului. Când serverul primește un nou vot, el generează un număr unic foarte lung. Acest număr este compus prin intermediul unui algoritm bine cunoscut în industria criptografică și se numește SHA256. Acest algoritm hash stă la baza comunicațiilor prin Internet, a semnăturilor digitale și chiar a valutelor criptografice.
O funcție hash transformă orice cantitate de informație într-un număr. Dacă aplici exact aceeași informație primești același număr. Dacă schimbi măcar un bit sau un caracter în acea informație – obții cu totul alt număr. Este de menționat că având numărul generat, nu este posibil să fie dedusă care a fost informația inițială.
Să precăutăm situația când avem un scrutin cu 4 candidați:
- Candidat 1
- Candidat 2
- Candidat 3
- Candidat 4
Condiția votului este că dintre cei patru candidați trebuie să fie alese 2 persoane. Să considerăm că opțiunea noastră este: Candidat 2 și Candidat 3.
Serverul generează pentru fiecare vot, o parolă unică de 100 de simboluri, inițializează algoritmul hash HMAC (versiunea SHA256 cu parolă), apoi aplică algoritmul asupra textului Candidat 2,Candidat 3. Rezultatul este afișat în fereastra de confirmare a votării și poate fi trimis și prin SMS.
Acest număr unic pare aleator, însă el are o proprietate criptografică foarte bună. Dacă este cunoscută parola generată de server și utilizat același text ca în opțiunea de votare Candidat 2,Candidat 3, se va obține același cod (rezultat), care a fost afișat în fereastra de confirmare a votării. Pe de altă parte serverul, după ce a trimis acest cod votantului, practic nu mai poate genera (probabil i-ar trebui câteva milioane de ani) o altă combinație de parolă care să dea același cod, dar având alte variante de voturi.
Deci, serverul are parola secretă cu care a fost generat acest număr, iar votantul are amprenta digitală și știe care a fost opțiunea sa de vot.
Pentru a se asigura că votul său a fost înregistrat corect, votantul poate cere de la organizator parola generată de server, apoi poate folosi orice site online care oferă posibilitatea de hash cu algoritmul HMAC, indicând parola obținută și textul cu opțiunea sa de votare Candidat 2,Candidat 3. Rezultatul obținut trebuie să fie identic cu codul care a fost afișat în fereastra de confirmare a votării și primit prin SMS.
Pentru a exersa această situație puteți încerca acest site sau oricare alt site public (găsiți pe Internet multe, căutând după cuvintele cheie HMAC SHA256 verification).
Mai jos este un exemplu de parolă de 100 de simboluri generată de server, textul din opțiunea de votare a votantului și amprenta digitală.
Parolă: Nsj9BqRqzxGqEpuY0NAXv7gQOOFlRONacbH8ucblp9eW8GmUZSusqMNRt0qMfHIKZiycd6Zu8qKFbyYDd1xJ21C8VYQIJlzU3Wj0
Text: Candidat 2,Candidat 3
Amprenta digitală: 4cb027e6977424074a515a34df0ffc9659d6082394c0bc1fd3d60af9e20c17fb
PS: Următorul articol va fi despre posibilitatea de auditare a rezultatelor votării cu ajutorul criptografiei.
1 thought on “Magia din spatele amprentei digitale într-un sistem de votare”