O pledoarie împotriva votului electronic

Cristian Dinu
Jun 1 · 8 min read
Photo by Element5 Digital on Unsplash

Varianta scurtă


Varianta lungă

Ca inginer de calculatoare, pot garanta că nu există securitate pură. Iar perspectiva că votul electronic ar putea fi legiferat pentru alegeri cu miză mare (prezidențiale, parlamentare, europene, chiar și cele locale, aș zice) mă face să mă tem că democrația poate să dispară altfel decât ne temeam.

Desigur, și despre votul clasic, pe hârtie, se poate spune că este predispus la fraudă, în cazul votului electronic impactul și natura incidentelor sunt mult mai greu, de multe ori chiar imposibil de detectat.

Securitatea este întodeauna un compromis între ușurința de utilizare și nivelul de protecție oferit. De cele mai multe ori, ai una în detrimentul celeilalte.

© TVR

Voi folosi exemplul unei uși. Cel mai simplu este să aibă doar balamale și nimic altceva. Ușurința de utilizare este maximă, siguranța este însă minimă.

Adaugi o încuietoare, lucrurile devin deja ceva mai sigure, dar și mai complicate: ai nevoie de o cheie, pe care o poți pierde. Securitatea nu este însă foarte mare: cheia poate fi duplicată, uitată, pierdută. Așa că o încuietoare (sau chiar mai multe) nu garantează securitatea, din motivul că obiectul “cheie” este vulnerabil. Pentru a micșora șansele exploatării acestui obiect vulnerabil, el trebuie combinat cu ceva pe care cel care poate să deschidă ușa să îl știe — de exemplu un cod. Combinarea a ceva pe care îl ai cu ceva pe care îl știi este populară (de exemplu la card-uri ai ceva — cardul, și știi ceva: PIN-ul).

Dar cineva care a duplicat deja cheia se poate uita și la ce cod introduci iar, împreună cu cheia, să intre. Codul de intrare ar trebui deci schimbat de fiecare dată, ideal la întâmplare, pentru ca atacatorul să nu poată intra chiar dacă știe regula. Iar codul trebuie să fie lung, pentru a nu putea fi ghicit.

Pentru o ușă sigură ai nevoie deci de o cheie greu de duplicat (deci și greu de înlocuit dacă o pierzi), respectiv să ții minte o serie lungă de cifre care se schimbă după fiecare deschidere. Deși este un sistem sigur, costă de câteva zeci de ori mai mult, respectiv sunt multe șanse să nu poți intra în casă.

În plus, atunci când cineva intră totuși în casă, îți dai seama că echipa de la încuietoare nu a fost implicată în proiectarea generală a ușii, iar balamalele sunt înșurubate pe dinafară și oricine cu o șurubelniță și 10 minute poate să te viziteze.

Sistemele informatice sunt foarte asemănătoare în lipsa lor de siguranță garantată. Există o latură socială a vulnerabilității lor, respectiv una tehnică.

Cea socială vine evident de la oameni. Dacă trebuie să aibă parole lungi, le notează pe spatele tastaturii. Folosesc mai mulți aceleași conturi, spun parola unui necuonoscut la telefon, notează PIN-ul pe card (sau îl țin pe un post-it în portofel) și, cel mai grav, din experiență, folosesc aceeași parolă la mai multe aplicații și site-uri.

Mă gândesc cum poate arăta securizarea sistemului electronic de vot.

Să zicem ar fi bazat pe parole.

Probabil login-ul este CNP, nu e-mail-ul. Nu e nevoie să ghicești ce CNP-uri vin la vot; în cazul în care preferi să ai o variantă actualizată a listei care circula acum câțiva ani pe torrent-e, se poate obține ușor de la un angajat al unei bănci, ANAF, poștă, taxe și impozite. Dacă ești la guvernare, iei discret lista direct de la evidența populației. Dacă ai nevoie de parole le găsești și pe ele într-una din bazele de date cu parole sparte unde sunt deja mai mult de un miliard de înregistrări (mai jos e un link pentru a verifica orice adresă de e-mail). Pentru a influența alegerile serios ai nevoie doar de câteva sute de mii, iar procentul de oameni care vor folosi aceeași parolă la mai multe domenii sigur este mare. O campanie bună de phishing (obținerea de parole prin clonarea site-urilor, vezi link în engleză la sfârșit) mai aduce niște mii sau zeci de mii, chiar de acolo de unde ai nevoie, de exemplu din mediul rural.

Un sistem bazat pe smart-card-uri individuale ar fi ceva mai sigur, dar distribuția și managementul acestor card-uri ar fi cumplit de complicată (vezi exemplul smart-cardurilor de sănătate). În plus, necesită fie aparate speciale de citit (deci mers la secția de vot, deci coadă), fie aplicații care merg doar pe Android și trebuie instalate (și la rândul lor pot fi corupte și trebuie asigurat suport pentru utilizare).

O altă posibilitate ar fi emiterea de certificate electronice personale (o pereche de chei una publică cealaltă privată). Există aplicații pentru a face asta (mulțumită Bitcoin), iar oamenii ar putea să-i comunice statului cheia lor publică, păstrând și folosind cheia privată (care poate fi protejată și de parolă) pentru a vota.

Problemele apar la managementul perechii cetățean / cheiea-sa-publică. Statul trebuie să fie sigur că aceea este cheia mea publică și să o stocheze într-un mod care nu poate fi falsificat. Există soluții, venite tot din lumea Bitcoin, doar că procesul inițial cât și cel de mentenanță sunt extrem de costisitoare și necesită cunoștințe tehnice avansate pe care administrația nu pare să le aibă și nu trebuie să le aibă.

Deși tehnic acest sistem ar putea fi fezabil (cu participarea societății civile), este foarte complicat pentru a fi folosit pe scară largă. Bitcoin nu a reușit, în ciuda tuturor eforturilor, să obțină o soluție care să fie atât de simplă încât să poată fi folosită de mase. Este echivalentul cheii cu cod de la ușa de care scriam mai sus.


Numai că există întodeauna balamale prinse cu șuruburi pe dinafară, geamuri uitate deschise, ș.a.m.d. Siguranța unui ansamblu nu este dată de cel mai puternic element, ci de cel mai șubred (celebra veriga slabă). Or, într-un sistem precum cel de vot electronic sunt foarte multe verigi, multe dintre ele incontrolabile (rețeaua de date, sistemele de operare ale clienților)

Software-ul (aplicațiile de pe mobil și tabletă, programele de pe laptop, serviciile online precum Facebook, Google, sistemele de operare precum Android sau Windows) este scris cu ajutorul unor instrucțini numite cod. Ele seamănă cu rețetele din cartea Sandei Marin, numai că în loc de făină, zahăr și orez, rețetele computerelor asamblează GIF-uri, e-mail-uri, parole, mesaje de WhatsApp.

Un browser are aproximativ 12 milioane de linii de cod (amestecă A cu B, pune-l în C), Windows vreo 40 de milioane. Fiecare element are sute de mii sau milioane de instrucțiuni, scrise de oameni. Estimările industriei sunt de 15–20 de greșeli la 10 mii de linii de cod livrat. Să presupunem o variantă nerealist de optimistă în care sunt de o sută de ori mai puține greșeli decât estimările. Tot înseamnă într-un sistem de vot electronic public cel puțin 50 de puncte de vulnerabilitate, datorate greșelilor de programare. Care puncte pot fi folosite pentru a abuza sistemul în moduri neștiute. Pe lângă acestea mai sunt vulnerabilitățile introduse intenționat de NSA, Rusia, Corea de Nord și cam orice terorist isteț (un exemplu foarte celebru despre SUA și Iran mai jos).

Atunci când cineva spune despre un sistem că nu poate fi “spart” mă gândesc mereu la lupta aproape hazlie între producătorii de conținut digital și pirați. Până acum nu a fost niciun sistem de protecție la copiere care să nu poată fi ocolit elegant. Pentru că, oricât de multă criptare este pe parcurs, conținutul trebuie afișat (sau cântat undeva). În cel mai rău caz, cel ne-elegant, copiezi muzica cu un microfon în difuzorul care cântă melodia protejată, sau un print-screen la cartea criptată pe dispozitiv.

Deci nu se poate proteja pentru că nu se poate proteja.


Atunci când lupta implică un stat, intrăm deja în sfera războaielor cibernetice, care din păcate este o realitate deja. Supărată pe un film care îl lua peste picior pe Marele Lider, Coreea de Nord a reușit să pună pe butuci o mare parte din sistemul informatic al companiei Sony, cu pagube mai mari decât o bombă în sediul firmei, și în proces compromițând și informații confidențiale despre zeci de mii de angajați și colaboratori.

Deși este o răfuială destul de serioasă, implicațiile scandalului Sony sunt minore față de cazul Stuxnet.

Stuxnet este un vierme informatic (un fel de virus, dar care se folosește de rețele) copt de agențiile de informații americane în parteneriat cu cele israeliene, la începutul anilor 2000 și descoperit abia în 2010. Este un program care infectează toate computerele cu ajutorul stick-urilor USB și care a intrat în istorie datorită unei particularități deosebite.

Sistemele infectate nu prezentau niciun simptom, iar viermele dormea cu excepția momentului în care calculatorul era legat la o centrifugă, cea folosită de Iran pentru îmbogățirea uraniului din programul nuclear. Când condițiile de activare erau înteplinite virusul instala în sistemul de control al rotației un program care modifica ușor viteza de rotație, astfel încât centrifuga se defecta, fără însă să existe o certitudine asupra cauzei (putea fi o calibrare proastă, un defect de material, etc.). Computerele legate la centrifugă nici măcar nu erau legate la internet, din “motive de securitate”.

Un vierme similar s-ar putea activa în ziua alegerilor, modificând voturile, mașinile de vot, sau centralizarea lor, apoi ar putea să se șteargă fără urmă. Iar rezultatul alegerilor într-un stat (mai ales cu drept de veto în politicile europene) are suficient de mare miza încât să implice resursele altor state foarte abile la astfel de inițiative.

Un atac informatic reușit este acela care nici măcar nu este detectat. Nu am ști că am fost fraudați și dacă printr-o minune am afla, ar fi aproape imposibil de aflat cine și cu cât.



Resurse:

P.S. Sunt bucuros de comentarii și întrebări.
Dacă lectura a fost utilă, încercați butonul 👏 (merge dacă sunteți înregistrați la Medium.com). Așa voi putea afla despre ce trbuie să mai scriu :)

Cristian Dinu

Written by

Co-Founder and CTO at https://hypersay.com