Monthly Archives: October 2021

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.

  1. 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)
  2. Lista candidaților. (Exact cum e în protocol simbol cu simbol)
  3. 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

1 Comment

“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.


Trebuie să permitem votanților să voteze o singură dată sau să poată vota ori de câte ori doresc și doar ultimul vot să se ia în considerație?

Acest articol vine cu o explicație la o dilemă legată de temerile unor participanți la alegerile online organizate de VoteMeApp.

La scrutinele offline se investesc resurse considerabile pentru ca în spațiu limitat și în timp restrâns să adune observatorii, care asigură bună desfășurarea a alegerilor. Una din sarcinile de bază ale observatorilor este să urmărească ca votantul să nu fie influențat de cineva în timpul exprimării votului într-un spațiu limitat.

În mediul online nu mai există restricții de spațiu. Costul serverelor, comparativ cu ora de lucru a unui observator este minuscul - nu mai există nici restricții de timp. Acesta este avantajul foarte mare a online-ului față de offline. Poți vota de unde vrei, la ce oră dorești.

Din punct de vedere tehnologic, votarea repetată se face foarte simplu. Votul precedent se anulează și să înlocuiește cu cel nou. Calcularea rezultatelor ia în considerație doar cel mai recent vot.

Pentru siguranță plaforma VoteMeApp folosește ambele metode. Avem o bază de date unde se păstrează doar ultima votare și alta unde se păstrează toate votările inclusiv și semnăturile digitale pentru auditare, dacă va fi necesară.

Rămâne o singură dilemă - o singură votare sau poți vota ori de câte ori dorești?

O singură votare este ok pentru votare offline, însă pentru cea online această restricție este un risc. Votanții nu întotdeauna își pot securiza spațiul și timpul de votare. De exemplu: Șeful cheamă toți angajații să voteze cum zice el. În cazul când sistemul online e setat să accepte doar o singură votare, toți subalternii în cazul dat rămân fără nici o variantă de anulare e votului. În cazul când sistemul e setat să accepte ultimul vot, subalternii liber pot să revoteze ori de câte ori doresc de acasă în timpul comod lor.

Contraargument la votare multiplă este că cineva te poate influența (cu o bere) să-ți schimbi votarea în favoare lui. Probabil, dar iar ai opțiunea să te duci acasă în spațiul tău privat (cu capul treaz) să mai gândești și să-ți schimbi votul.

Estonia, care este lider în votările online, face la fel la alegerile naționale din 2005. Votarea repetată este un avantaj, te ajută să fii liber în exprimarea votului.

Această dilemă a existat și în Estonia. Chiar președintele țării a atacat la Curtea Constuțională și a pierdut.

"Internet voting is available during an early voting period (sixth day to fourth day prior to Election Day). Voters can change their electronic votes an unlimited number of times, with the final vote being tabulated. It is also possible for anyone who votes using the Internet to vote at a polling station during the early voting period, invalidating their Internet vote. It is not possible to change or annul the electronic vote on the Election Day. A comparison of the cost-efficiency of the different voting channels offered in the Estonian Municipal Elections (2017) concluded that the Internet Voting is the most cost-efficient voting channel offered by the Estonian Electoral System.

The principle of "one person, one vote" is sustained as the voter can potentially cast more than one ballot but still only a single vote. This was challenged in August 2005 by Arnold Rüütel, the President of Estonia, who saw the new e-voting provisions in the Local Government Council Election Act as a breach of the principle of equality of voting. The President brought a petition against the e-voting provisions to Estonian Supreme Court but lost."

PS: Următorul articol va fi despre cum VoteMeApp asigură secretul votului asigurând imposibilitatea de a modificare a rezultatelor alegerilor.