O alegere cu vot secret are succes atunci când cei care au pierdut alegerile au încredere că voturile au fost contorizate corect.
La noi tradiția este că nimeni nu are încredere în nimic. Se organizează contestări și renumărări. Dacă la votare offline renumărarea e costisitoare și durează mult timp, mai ales când ai milioane de voturi, în online e simplu și aproape instantaneu.
Organizați de către candidații care au pierdut, un grup de oameni nesatisfăcuți de rezultate merg la instituția care a organizat alegerile ca să ceară renumărarea voturile cu pancarde, megafoane, mesaje pe rețele sociale și în media.
Online-ul oferă avantaje majore pentru un nivel mai mare de încredere din partea tuturor participanților la procesul de vot.
Pentru asta este necesar ca grupul care nu este satisfăcut sau care nu are încredere în procesul de vot, să delege un programator. Pentru ca să fie asigurat secretul votului, e necesar un calculator nou nouț, unde se instalează un nou sistem de operare, se face auditul în fața mulțimii și apoi se distruge cu cuvalda. Glumesc 😜
În locul unui calculator nou, este suficientă o mașină virtuală creată în cloud la unul din providerii mari, Microsoft Azure, Amazon AWS, Google Cloud sau Digital Ocean. După auditare doar se șterge mașina din cloud. Mașina virtual nouă este necesară pentru a evita orice speculații din partea ambelor părți.
Pentru auditarea rezultatelor trebuiesc 3 fișiere.
- Lista hash-urilor care a apărut în protocol. Respectiv toate acele hash-uri trebuie să coincidă cu cele care au fost distribuite celor care au votat. (Lista se ia din protocol)
- Lista candidaților. (Exact cum e în protocol simbol cu simbol)
- Lista parolelor, care a fost generată de serverul de votare. (Reprezentantul platformei de votare vine cu ea)
Auditarea digitală este posibilă, pentru că semnăturile digitale distribuite către votanți sunt publice, iar parolele secrete care au fost folosite la generarea acestor coduri nu pot fi modificate de către server.
Aceste 3 fișiere se încarcă pe mașina virtuală, astfel nimeni dintre părți să nu poată manipula sau copia informația. Adică parolele secrete să nu fie copiate cumva de către programatorul care reprezintă grupul celor care contestă rezultatul, iar reprezentantul platformei să nu poată schimba ceva la nivel de sistem și să se afișeze doar rezultate corecte.
În final se încarcă un program (făcut de programatorul mulțimii), care rulează conform algoritmului HMAC/SHA256 și găsește pentru fiecare parola secretă un hash cod, care coincide cu un vot.
Codul programului rulează și numără toate voturile identificate, demonstrează că la vot au participat toate hash-urile și toate parolele secrete. Reprezentantul grupului ce contestă rezultatele, afișează pe ecran în mod vizual rezultatul, pentru ca toți să se convingă. Pentru un efect se poate proiecta pe un ecran mai mare să vadă toți însă show-ul nu va fi de lungă durată, în doar câteva secunde se validează orice scrutin la care au participat mii sau zeci de mii de oameni.
Dacă contoarele coincid cu cele din protocolul tipărit imediat după alegeri, înseamnă că rezultatele nu au fost măsluite și sunt corecte. Done!
După acest proces se distruge mașina virtuală. Codul care face această procedură e foarte simplu, de fapt e mai mic decât acest articol și mi-a luat mai puțin timp să-l scriu.
Mai jos dau un exemplu de cod în limbajul python care face renumărarea.
Codul sursă inclusiv cu un exemplu de votare e făcut public pe contul meu de github.
https://github.com/evisoft/VoteAudit