Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICENŢĂ
Coordonator Absolvent
2016
Cuprins
1.Introducere.......................................................................................................................3
2.Obiectivele aplicației de vot electronic și
prezentarea sistemelor de vot existente..............................................................................6
2.1 Sisteme de vot tradițional......................................................................................6
2.1.1 Sisteme de vot ce desemnează un singur câștigător…………………….....7
2.1.2 Sisteme de vot ce desemnează mai mulți câștigători.................................11
2.1.3 Sistemul de vot în România........................................................................15
2.2.Sisteme de vot electronic .....................................................................................15
2.2.1 Votul electronic in Estonia…………………………………………………..19
2.2.2 Avantaje și dezavantaje ale unui sistem de vot electronic.............................22
2.3.Scopul aplicației de vot electronic…………………………………….….……23
3.Tehnologii folosite ..........................................................................................................25
3.1 HTML...............................................................................................................25
3.2 CSS...................................................................................................................25
3.3 PHP…………………………………………………………………………….26
3.4 jQuery...............................................................................................................27
3.5 Apache..............................................................................................................27
4. eVoteNow-Detalii de implementare...............................................................................28
4.1 Baza de date......................................................................................................28
4.2 Structura aplicației............................................................................................30
4.3 Cazuri de utilizare și activități…………………………………………………33
4.4 Funcționalități și detalii de implementare……………………………………..35
5.Concluzii și dezvoltări ulterioare....................................................................................44
Bibiliografie.......................................................................................................................46
2
1. Introducere
Votul înseamnă conform [1], “exprimare a opiniei cetățenilor unui stat în legătură
cu alegerea reprezentanților lor în organele de conducere; opinie exprimată de membrii
unei adunări constituite în legătură cu o candidatură, cu o propunere sau cu o hotărâre;
adeziune dată în acest scop”, reprezentând un drept fundamental al omului prevăzut în
Articolul 21 din Declarația Universală a Drepturilor Omului, adoptată de Organizația
Națiunilor Unite în anul 1948. În ziua de astăzi, ideea de vot este prezentă în
majoritatea activităților desfășurate de om. Fie că vorbim de vot electoral, de alegerea unui
reprezentant într-o companie, de desemnarea câștigătorului balonului de aur la fotbal, de
alegerea tematicii unei petreceri, de promulgarea unei legi, sau de alegerea unei strategii de
marketing, omul recurge la folosirea unui sistem de vot. Luând ca exemplu votul într-o
companie, sistemul de vot tradițional necesită prezența votantului și se poate îngreuna
odată cu creșterea numărului acestora. Un mare dezavantaj este dat de faptul că nu oferă
alternative pentru persoanele care nu pot ajunge să voteze la data la care este organizat
scrutinul. De altfel, se pot produce erori la numărarea voturilor și este consumator de timp.
Un sistem de vot electronic poate rezolva aceste neajunsuri ale sistemului tradițional.
Angajații plecați in delegații, precum și cei aflați in concediu, pot vota din orice colț al
lumii, fiind necesare doar 2 minute și o conexiune la internet, iar cei din sediu pot vota fără
a fi nevoiți să-și întrerupă activitățile sau să se ridice de la birou, astfel nefiind afectată
productivitatea în ziua respectivă.
În această lucrare este prezentat un sistem de vot prin Internet, numit eVoteNow gândit
să respecte următoarele cerințe fundamentale, regăsite în [2] și [3]:
Înregistrarea: crearea unei liste de persoane care au dreptul să voteze;
Validarea: verificarea datelor personale ale celor care doresc să voteze;
Colectarea voturilor;
Numărarea voturilor.
Anonimitatea votanților: Identitatea votantului ramâne secretă.
Acuratețe: Voturile nu au fost schimbate, multiplicate sau eliminate de cineva
(inclusiv de autorități).
3
Corectitudine de numărare: Se verifică egalitatea între numărul total de voturi și
suma voturilor primite de ficare candidat.
Verificabilitate: Utilizatorii pot verifica dacă votul lor a fost corect acordat.
Detectarea dublei votări: Niciun utilizator nu poate vota de mai multe ori (în cazul
votului electoral)..
Folosit în scop electoral, sistemul este gândit să rezolve problemele din secțiile de
votare și fraudele electorale din România. Digitalizarea poate aduce avantaje precum
posibilitatea efectuării votului rapid, indiferent de poziția geografică a votantului, creșterea
prezenței la vot, dar și minimizarea riscului de apariție a erorilor de numărare. Motivul
proiectării sale derivă din dorința de a face un pas înainte spre un vot curat și civilizat,
problema votului fiind foarte bine cunoscută atât de românii din țară, cât și de cei de peste
hotare, dar și din necesitatea existenței unui sistem centralizat, care să asigure un bun mers
al procesului electoral și nu în ultimul rând, un rezultat corect.
Totodată, adoptarea unui astfel de mecanism de votare poate avea si dezavantaje
precum predispoziție la atacuri cibernetice, viruși, pene de curent, limitări legate de accesul
persoanelor din zone rurale la internet (doar 47% acoperire in România [4]). Pe lângă
acestea, însăși legea electorală ar trebui modificată fundamental.
În contextul internațional, exisă deja o serie de state precum Austria,
Australia, Canada, Estonia, Franța, Germania, Japonia și Elveția care au incercat diferite
sisteme digitale, Estonia fiind din 2011 singurul membru UE care folosește această
procedură la scară largă având la alegerile parlamentare din 2011 un procent de 24% din
voturi provenite din mediul online [5].
Deși România nu este pregătită momentan pentru o astfel de schimbare, necesitatea
unui sistem de vot electronic general încă există, aplicabilitatea sa fiind regăsită în
majoritatea domeniilor în care trebuie luate decizii.
Sistemul prezentat în această lucrare unul robust, tolerant la schimbări, ce permite
utilizatorilor să voteze atât candidați cât și concepte, tipul de vot putând fi configurat după
preferințele administratorului astfel încât utilizatorii pot vota o singură dată, sau își pot
modifica votul de mai multe ori pe parcursul intervalului de votare. Pe piața românească
există diverse dispozitive hardware speciale pentru vot ce folosesc tehnologia radio[6], însă
aceste soluții sunt scumpe și se pot aplica doar pentru un număr restrâns de utilizatori. Pe
4
de altă parte, acestea depind de timp și spatiu în sensul că tehnologia radio nu se poate
folosi pe distanțe mari, iar pentru a-și cunoaște opțiunile, utilizatorii ar trebui să fie
prezenți in aceeași încăpere, în același moment de timp.
Obiectivul principal al acestui proiect este acela de a fluidiza procesul de votare
prin ridicarea barierelor temporale și spațiale, oferind utilizatorilor posibilitatea de a vota
dintr-un mediu familiar.
Pe baza acestor idei, această lucrare descrie dezvoltarea unei structuri prin
care dreptul la vot este respectat în totalitate, indiferent de etnie, religie, granițe, sau nivelul
de educație.
Mergând de la general la particular, lucrarea se împarte în 5 capitole:
În Capitolul 2 – „Obiectivele aplicației de vot electronic și prezentarea sistemelor
de vot existente” – sunt evaluate mai multe sisteme de vot existente la nivel internațional
discutând în parte de sisteme tradiționale sau moderne, după care sunt prezentate
obiectivele aplicației eVoteNow.
Capitolul 3 – „Tehnologii folosite” – prezintă tehnologiile utilizate pentru
dezvoltarea aplicației: MySQL, PHP, HTML, CSS, JavaScript și Apache.
Capitolul 4 – “eVoteNow-Detalii de implementare” se referă la cum au fost
utilizate tehnologiile prezentate anterior pe parcursul implementării.Ulterior este detaliată
metoda propusă și sunt prezentate deciziile care au fost luate pentru implementarea
algoritmului de votare. De asemenea, capitolul prezintă funcționalitățile aplicației de vot
electronic și o analiză a rezultatelor obținute.
Ultimul capitol – „Concluzii și dezvoltări ulterioare” – cuprinde concluziile
studiului realizat, cum s-au atins obiectivele propuse și activitățile necesare pentru
eficientizarea aplicației.
5
2.Sisteme de vot
Începutul democrației are loc în Grecia Antică, mai precis în oraşul-stat Atena în
jurul anului 500 î.Hr, fiind o democrație bazată pe trei principii esențiale: Isonomia
(egalitate în fața legii), isotimia (egalitatea drepturilor conferită prin naștere ) și isogoria
(dreptul la cuvânt în fața tribunalelor si adunării poporului). Era o democrație mai mult
teoretică, întrucât alterna cu diverse alte forme totalitare, însă acolo, bărbaţii atenieni care
îşi terminaseră pregătirea militară aveau dreptul de a vota.În schimb, femeile aveau
drepturi şi privilegii limitate şi erau cu greu considerate cetăţeni. Primele sisteme de vot nu
erau chiar sisteme, în adevăratul sens al cuvântului, ci se bazau pe tragerea la sorți sau
ridicarea mâinii.
Votul liber, aşa cum îl considerăm după standardele prezentului, în care aveau
dreptul să voteze toţi cetăţenii indiferent de sex, orientare politică, clasă socială sau religie,
a apărut în aceeași perioadă în regatul Angliei şi în Statele Unite, undeva la sfârşitul
secolului 19.
Conform [7], un sistem de vot constă într-un set de reguli ce descriu pașii ce trebuie
urmați pentru ca un vot să fie considerat valid, reprezentând o metodă prin care votanții pot
alege candidații doriți la organizarea unor alegeri sau referendumuri.
Unul din fundamentele democraţiei este alegerea liderilor prin vot. Acesta diferă
totuși de la țară la țară, fapt generat de diferențele culturale și sociale.
Sistemele de vot sunt împărțite în două mari categorii: cele care declară un singur
câștigător și cele care declară mai mulți câștigători. În aceste categorii se regăsesc o serie
de sisteme care deși pot prezenta foarte mici diferențe, rezultatele întoarse pot fi total
altele. Cele mai multe probleme apar atunci cand sunt analizate procesele prin care un
grup de oameni ajung la o decizie comună. De exemplu, este luat în considerare un grup
de prieteni care decid unde vor merge la cină. Dacă toată lumea este de accord cu un
restaurant, este evident ce decizie vor lua, însă nu este clar ce vor decide dacă părerile sunt
împărțite [8].
6
Acestă lucrare introduce și examinează diferite metode de votare. Scopul nu este de
a oferi o prezentare generală a teoriei alegerii, sau o relatare completă a teoriei votului, ci
de a evidenția si discuta rezultatele cheie și problemele care stau la baza fenomenelor
observate atunci când factorii de decizie se reunesc pentru a putea lua o decizie colectivă.
Cea mai răspândită metodă de acest tip este metoda pluralității cunoscută și sub
numele de “the first past the post” [9], fiind o extensie a principiului regulii majorității,
potrivit căreia învingătorul unor alegeri dintre doi candidați, numit și candidatul majoritar,
este cel care a obținut cele mai multe voturi.Urmărind exemplul din tabelul 1și aplicând
principiul pluralității, se poate observa că învingătorul este candidatul A, ceea ce satisface
criteriul majoriății.
Candidaț
Număr de voturi
i
A 5
B 2
Deși sistemul regulii majorității este cel mai cunoscut, se poate demonstra
matematic faptul că rezultatul produs nu este întotdeauna cel acceptat de majoritate, în
special atunci când sunt mai mult de doi candidați, motiv pentru care s-au dezvoltat și alte
7
sisteme care rezolvă aceste scăpări.O simplă alegere nu oferă candidaților posibilitatea de
a-și exprima ordinea preferințelor, astfel, pentru exact același scrutin, având exact același
număr de voturi, diferite sisteme de votare pot returna rezultate distincte.
În cazul în care sunt mai mult de doi candidați, metoda trebuie particularizată prin
organizarea mai multor tururi de scrutin cu eliminarea candidaților cu cele mai puține
voturi, până când se alege un candidat majoritar.
Acest sistem de vot, denumit și vot preferențial, permite votanților să-și stabilească
o listă de candidați ordonată descrescător în funcție de preferințe. Metodele din această
categorie pot duce la același rezultat dacă îndeplinesc criteriul lui Condorcet, conform
căruia dacă un candidat este preferat de alegători înaintea oricărui alt candidat după o
verificare directă, atunci acel candidat este învingător [10].
Cele mai cunoscute metode sunt numărătoarea Borda și compararea în perechi, însă
poate fi menționată și metoda pluralismului cu eliminare, o extensie a metodei
pluralismului ce se aplică atunci când sunt mai mult de doi candidați. Această metodă
presupune organizarea alegerilor în mai multe tururi, eliminând de fiecare dată candidatul
cu cele mai puține voturi, până când se alege un candidat majoritar. Deși se încadrează în
această categorie, din tabelul 2 se poate deduce că nu respectă criteriul lui Condorcet
pentru că nu realizează o comparație directă între opiniile candidaților
1
Număr de alegători 10 8 4 1
4
Prima opțiune A C D B C
A doua opțiune B B C D D
A treia opțiune C D B C D
A patra opțiune D A A A A
Tabel 2 – tabel cu preferințe și număr de voturi
Runda 1: B are cele mai puține voturi și este eliminat, voturile sale se duc la D
Candidat A B C D
Voturi ca prima
14 4 11 8
opțiune
8
Runda 2: C are cele mai puține voturi și este eliminat, voturile sale se duc la D
Candidat A B C D
1 1
Voturi ca prima opțiune 12
4 1
Runda 3: D câștigă alegerile deși A este cel care a câștigat primul tur
Candidat A B C D
Voturi ca prima
14 23
opțiune
Preferinț P
P1 P2 P4 P5 P6
e 3
A A B B C C
B C A C A B
C B C A B A
Voturi n1 n2 n3 n4 n5 n6
9
Aplicat pe exemplul din tabelul 4, se poate observa că învingatorul Condorcet este
candidatul C, deși a avut cele mai puține voturi ca fiind prima opțiune.
Votur
1 7 7 5
i
P1 A A B C
P2 B C C B
P3 C B A A
BS(A) = (2 * 1) + (2 * 7) + (0 * 7) + (0 * 6) = 16
BS(B) = (1 * 1) + (0 * 7) + (2 * 7) + (1 * 6) = 21
BS(C) = (0 * 1) + (1 * 7) + (1 * 7) + (2 * 6) = 26
10
Această metodă poate fi optimizată atunci când există un număr mare de candidați,
într-un mod asemănător cu metoda pluralismului, prin organizarea mai multor tururi de
scrutin. Odată cu micșorarea numărului de candidați, alegătorii iși pot forma o părere mai
clară asupra celor rămași în cursă.
Sistemele de acest tip oferă mai multă flexibilitate decât cel de tip clasament,
deoarece prezintă o probabilitate de terminare la egalitate mai mică. Ansamblul presupune
asignarea unui punctaj între 0 și 100 fiecărui candidat, învingător fiind cel cu cel mai mare
punctaj.
Conform [11], o astfel de metodă se folosește la alegerea Cardinalilor. Cel mai
simplu sistem cardinal este votul prin consimțământ ( Approval voting ), care permite
acordarea a doar două calificative: admis sau respins. Alt astfel de sistem permite votarea
în lanț ( Range voting ), în sensul că alegătorii acordă câte un punctaj fiecărui candidat în
parte.
Sunt sisteme moderne folosite în general la alegerea corpului legislativ, ale căror
efecte sunt diferite de cele ale sistemelor cu un singur învingător. De multe ori, partidele
ce candidează la alegerile parlamentare sunt mai preocupate de numărul de locuri primite
decât de ce candidați vor fi aleși, motiv pentru care majoritatea sistemelor de acest gen se
axează pe un criteriu proporțional, însemnând că procentajul obținut de un partid la alegeri
va fi numărul de scaune primite.
În esenţă, există două categorii de sisteme de vot, așa cum este precizat și în [15]:
sistemul electoral majoritar și sistemul electoral cu reprezentare proporțională sau
semiproporțională. De regulă, metodele majoritare sunt folosite în țări democratice
majoritariste precum Marea Britanie şi SUA, şi funcționează pe baza ideii potrivit căreia
guvernarea trebuie să fie formată pe baza preferințelor alegătorilor.Pe de altă parte,
sistemele cu reprezentare proporțională sunt utilizate în țări care prezintă democrații
unioniste, precum Germania, Italia şi Belgia, şi are la bază ideea că nu este suficient ca
rezultatul alegerilor să reflecte opinia unei majorități, fiind necesară o inventariere cât mai
11
fidelă a opțiunilor electorale, astfel încât nici una din minoritățile semnificative să nu fie
dezavantajate.
1. Metode proporționale
V
cota=
s+1
12
Cota reprezintă “prețul” unui scaun, adică numărul de voturi necesar unui partid
pentru a-și trimite un reprezentant mai departe. Pentru fiecare partid în parte, voturile se
divizează iterativ cu 1,2, până la N (N-numărul de locuri disponibile), iar primele N
rezultate vor ocupa locurile disponibile. Astfel, dacă un partid cumpără un loc după prima
etapă, pentru al doilea va avea de plătit jumătate din numărul de voturi, pentru al treilea,o
treime, aceeași logică aplicându-se și pentru următoarele.
Tabelul 5 reprezintă un exemplu de aplicare al metodei D’Hondt pe un eșantion de
230 000 de alegători, patru partide politice și 6 locuri disponibile.
V/1 V/2 V/3 V/4 V/5 V/6 locuri
A 100 000 50 000 33 333 25 20 000 16 666 3
000
B 80 000 40 000 26 666 20 16 000 13 333 2
000
C 30 000 15 000 10 000 7 500 6 000 5 000 1
D 20 000 10 000 6 666 5 000 4 000 3 333 0
O altă metodă proporțională, diferită de cea anterioară este cea în care votul este
transferabil(STV- Single Transferable Vote). Diferența constă în faptul că voturile sunt
transferabile și nu mai este nevoie să se grupeze candidații în funcție de partide politice.
Principiul este asemănator cu cel al metodei pluralismului cu eliminare, în sensul că
voturile provenite de la candidații eliminați sunt redistribuite. În momentul în care au
rămas în cursă exact atâția candidați cât numarul de locuri, aceștia ajung să ocupe acele
locuri.
2. Metode semiproporționale
13
Figura 2 – Posibilități de distribuire a voturilor unui alegător
14
Avantajele acestui sistem față de cele prezentate anterior derivă din faptul că este
foarte simplu de înțeles și de utilizat. Pe de altă parte, sistemul oferă șanse egale partidelor
minoritare sau candidaților independenți.
Tot în categoria sistemelor semiproporționale se încadrează și sistemul cu voturi
limitate (LV – Limited Vote [14] ), care se diferențiază de SNTV prin faptul că oferă
alegătorilor posibilitatea acordării unui număr limitat de voturi, mai mare decât unu, dar
mai mic decât numărul de candidați. Fiind asemănator ca simplitate și ca principiu de
numărare a voturilor cu SNTV, acest sistem se folosește atât la nivel de alegeri locale, cât
și la alegeri de nivel național în țări precum Spania (încă din 1977) și Gibraltar.
15
Electronic se face doar numărarea voturilor în cazul acestui sistem, iar restul
se realizează prin metodele tradiționale: alegătorul intră în cabina de vot cu un
buletin de vot de hârtie, își marchează alegerea pe buletinul de vot și, la final,
introduce buletinul de vot în urnă. La final, rezultatele sunt procesate de un
calculator care stabilește candidatul învingător.
16
Legat de sistemul VVPAT există anumite îngrijorări legate de securitate,
așa cum este afirmat și în [27]. Potrivit acestor afirmații, sistemul poate fi infectat
cu un virus care să imprime în mod intenționat alt vot față de cel al alegătorului,
facând imposibilă identificarea voturilor valabile față de cele fraudate. Pe de altă
parte, acest sistem nu asigură caracterul secret al votului, ceea ce ridică și probleme
de etică.
17
monitorizarea tranzacțiilor desfășurate. În altă ordine de idei, întreruperea legăturii dintre
alegător și vot poate duce la distrugerea unui sistem de vot electornic pentru că nu se poate
dovedi că fiecare vot a fost numărat și întregistrat corect.
De aceea, probele indirecte ale validării rezultatelor electronice, precum auditul pe
hârtie sau certificarea sistemelor, în combinație cu un strâns control al calității și al
procedurilor de securitate, sunt extrem de importante pentru garantarea integrității unui
sistem de vot electronic, fără de care pot rămâne nedectetate rezultate incorecte sau
manipulate.
Așa cum se poate observa și în tabelul 6, la nivel internațional, situația privind
adoptarea diverselor tipuri de sisteme de vot electronic este fluidă. În funcție de cum este
privită problema și cum sunt alcătuite diversele statistici poate părea că votul electronic are
o răspândire mai mare decât în realitate. Motivul pentru aceasta este că multe state au
cochetat cu ideea, începând de la discuții, trecând prin diverse soluții de test mai reduse sau
mai ample și terminând cu adoptarea votului electronic doar pentru anumite categorii de
cetățeni sau doar la nivel local/regional.
Total
Utilizat în Utilizat parțial în Utilizare (în
trecut trecut universală funcție de
tip)
Mașini bazate pe hârtie +
numărare electronică sau
mașini de vot cu 1 (6.25%) Belgia 1 (6.25%)
înregistrare directă cu
urmă de audit pe hârtie
Mașini de vot cu 4 (25 %)
înregistrare directă fără Finlanda, 2 (12.5%)
urmă de audit pe hârtie Germania, Brazilia, 6 (37.5%)
Irlanda, India
Olanda
Vot pe Internet 2 (12.5%)
1 (6.25%)
Norvegia, 1 (6.25%) Franța 4 (25%)
Estonia
Suedia
Amestec de mai multe 5 (31.25%)
tipuri de sisteme de vot Australia, Canada,
5
electronic Elveția, Marea
(31.25%)
Britanie, Statele
Unite ale Americii
Total (în funcție de
6 (37.5%) 7 (43.75%) 3 (18.75%)
utilizare)
18
Tabelul 6 - Statistica folosirii sistemelor de vot electronic în funcție de tipul de
sistem folosit și de amploarea folosirii respectivelor sisteme de vot electronic
Din punct de vedere al funcționaliăților de bază, un sistem de vot electronic poate oferi:
Liste electorale electronice accesate prin autentificarea alegătorilor.
Interfața hardware.
Conform [28], votul prin Internet a fost introdus pentru prima dată în Estonia
pentru alegerile locale din 2005, când mai mult de 9000 de alegători au votat prin Internet
19
(aproximativ două procente din populație), devenind prima țară din lume care a apelat la o
astfel de metodă. Până în 2015, acest sistem a fost utilizat de încă cinci ori, la niveluri și
mai înalte, precum alegerile parlamentare din 2007 și 2011, sau alegerile pentru
Parlamentul European din 2009 și 2014.
Votul online în Estonia a fost conceput în ideea sprijinirii metodei tradiționale și nu
pentru a o înlocui, oferind alegătorilor posibilitatea să voteze chiar și atunci când nu pot
ajunge într-o secție de votare. Astfel, votul tradițional este prioritar în sensul că sistemul
electronic poate prelua și schimba preferințele alegătorilor începând cu zece zile înainte de
data alegerii și finalizându-se cu patru zile înainte de ziua votului. În acest interval de patru
zile, organizatorii trimit listele cu alegătorii care au votat online la toate secțiile de votare,
prevenind votul dublu pentru persoanele în cauză. La data alegerii, utilizatorii care au votat
prin internet nu își mai pot schimba votul. Odată cu centralizarea rezultatelor, voturile din
sistemul electronic vor fi trimise mai departe, dar nu înainte să li se șteargă semnătura
digitală.
Securitatea este un punct cheie pentru guvernul estonian care atestă ca sistemul
electronic este la fel de sigur ca cel tradițional, fiind sprijinit atât de măsuri tehnice cât și
de măsuri legislative pentru a garanta integritatea voturilor.
Desfășurarea procesului de vot prin internet se poate realiza în două moduri, fie
folosind un card asemănător cardului bancar, în care sunt stocate informații despre
identitatea alegătorului, fie folosind un telefon mobil, identificarea alegătorului realizându-
se pe baza informațiilor oferite de cartela SIM.
20
7. Confirmă alegerea printr-o semnătură digitală reprezentată de un alt cod
PIN
8. Primește confirmarea că votul a fost acceptat și înregistrat
Votul pe bază de telefon mobil (figura 7)
21
Figura 7 – principiul autentificării pe baza identificatorului mobil [29]
Atunci când se pune problema implementării unor astfel de sisteme, părerile sunt
împărțite. Conform ultimului raport cu privire la vulenrabilitățile modelului estonian [29],
acesta este acuzat de riscuri grave de securitate.
22
Prevenirea fraudei în secțiile de votare și în timpul transmisiei și sigilării voturilor
Avantaje create persoanelor cu dizabilități
Reducerea costurilor
Expedierea voturilor fără întârzieri
Reducerea fenomenului de cumpărare a voturilor sau de vot multiplu
23
2.3.Scopul aplicației de vot electronic
Scopul acestui sistem este de a crea o platformă de conectare la distanță între vot și
alegători prin intermediul rețelei de Internet, oferind un soluție simplă, ieftină și lejeră
24
problemei votului. De altfel, sistemul își propune să rezolve și alte probleme de natură
administrativă cum ar fi eficientizarea procesului de vot, prin eliminarea aglomerației și
micșorarea timpului de așteptare, dar și probleme legate de fraudă, prin limitarea acesului
componentei umane.
Pentru a putea atinge scopul propus, este necesară atingerea unor obiective specifice și
anume:
Realizarea unei interfețe grafice
Oferirea posibilității de autentificare a utilizatorilor
Prezentarea unei liste de entități în funcție de scopul votului
Posibilitatea alegerii unei preferințe
Posibilitate de vizualizare a rezultatelor
Posibilitate de introducere, ștergere sau modificare a unor informații
Posibilitate de configurare a sistemului
Posibilitate de deconectare
Odată atinse aceste obiective, se poate spune că s-a creat o aplicație care respectă
principiile elementare ale unui sistem de vot. Din acest punct ce reprezintă nucleul
sistemului de vot, se pot adăuga diverse funcționalități, după domeniul în care va fi utilizat
sistemul.
Utilitatea acestei aplicații constă în faptul că oferă flexibilitate, în special datorită
naturii sale configurabile. Indiferent ce se vrea a fi supus la vot, această aplicație poate
reprezenta o soluție, fiind extrem de ușor de configurat și extrem de ușor de utilizat.
Cu privire la scenariile de utilizare, sistemul descris în acestă lucrare se poate folosi
oriunde este nevoie ca oamenii să își exprime preferințele prin intermediul votului. Acesta
poate fi folosit de exemplu pentru a vota tema unei petreceri, sau ce angajat al unei
companii va primi titlul de angajatul lunii. Nuanța aceasta particulară a aplicației este
imprimată încă din titlu – eVoteNoW – care exprimă generalitate, globalitate sau
spontaneitate.
În capitolele următoare vor fi descrise concret funcționalitățile aplicației și cum au
fost atinse obiectivele propuse. Astfel, se vor explica pașii urmați în implementarea
sistemului și se vor detalia cazurile de utilizare atât pentru administratorul de sistem, cât și
pentru utilizator.
25
3.Tehnologii folosite
3.1 HTML
HTML [17] este un limbaj de marcare orientat către prezentarea documentelor text
pe o singură pagină. Ajutat de un software de redare specializat, browserul web, HTML
oferă mijloacele prin care conţinutul unui document poate fi completat cu metadate şi
indicaţii de redare. Indicaţiile de redare sunt diverse, de la banale decoraţiuni ale textului
(cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine
trebuie introdusă) până la scripturi sofisticate, formulare, liste sau tabele.
HTML a fost creat pentru simplitate, permite dezvoltarea de pagini web în orice
editor de text, însă o bună practică ar fi să se utilizeze un editor specializat, care să pună în
evidenţă diversele elemente de marcare (numite și tag-uri sau etichete) sau să poată detecta
erorile. Un astfel de editor este Sublime, editor compatibil nu doar cu HTML ci și cu PHP
sau CSS.
3.2 CSS
Între indicațiile de redare ale limbajului de marcare HTML nu se regăsesc și
informații de stilizare si formatare , astfel justificându-se nevoia de utilizare a CSS-ului.
CSS (Cascading Style Sheet) este un limbaj de stilizare care customizează
etichetele HTML după standardele W3C [18].
Conform acestui limbaj de stilizare, se poate formata orice element al unei pagini
web, oferind posibilitatea de a seta o serie de proprietăți cum ar fi: culoare, poziție, font,
bordură, transparență și multe altele.CSS are o sintaxă simplă, proprietățile fiind
specificate prin cuvinte cheie din limba engleză: font, font-size, text-align, margin,
padding, float, height, border, background etc.
Adăugarea în codul HTML se poate face fie inline, prin atributul style :
<p style=” font-size: 13px; ”> TEXT </p>, fie intern, în partea de head a fișierului
HTML, după cum se observă și în figura 4, sau extern, prin utilizarea unui fișier CSS
26
extern, care să fie inclus tot în partea de head a fișierului HTML cu ajutorul tag-ului
<link>: <link rel=”stylesheet” type=”text/css” href=”style.css”>
Figura 4 – exemplu de cod CSS care aliniază ambele paragrafe central și le schimbă
culoarea în roșu
3.3 PHP
PHP, inițial cunoscut sub numele de Personal Home Page, este un limbaj de
programare elaborat pentru crearea paginilor dinamice. Ajuns astăzi la a 7-a versiune,
numele său, deși neschimbat, are altă semnificație fiind un acronim recursiv:
PHP:Hypertext Processor. După cum se poate observa și în figura 5, PHP a devenit un
nucleu pentru dezvoltarea de aplicații web, pe baza lui construindu-se diverse framework-
uri precum Zend sau Code Igniter, dar și sisteme de management al conținutului (CMS-
Content Management Systems [26]) precum Wordpress sau Drupal, datorită vitezei,
simplității și evoluției sale rapide.
27
Structura unui script PHP este foarte asemănătoare cu cea a unui cod scris în alte
limbaje de programare de nivel înalt precum limbajul C++, mai ales în sensul în care
structurile de programare au aceeaşi sintaxă şi aceeaşi funcţionalitate. Rolurile de bază ale
unui script PHP constau în faptul că pot prelua date trimise de către o pagină web de la un
client şi pot executa o secvenţă de program în urma căreia va rezulta un cod HTML, cod pe
care clientul îl va primi sub forma unei pagini web. Clientul nu va avea acces la codul
efectiv al script-ului, prin faptul că acesta se află și reulează pe server.
Deși codul PHP poate fi scris în orice editor de text, acesta nu poate rula decât pe
un server.Spre deosebire de alte limbaje de programare cu care se aseamănă, codul PHP nu
se compilează pentru a crea o aplicație de tip stand-alone. Din aceste motive, pentru a
funcționa local pe o mașină de calcul, presupunând că programatorul nu are acces la un
server sau la un domeniu, codul PHP are nevoie de un server virtual, realizabil gratuit cu
Apache.
3.4 jQuery
jQuery este astăzi cea mai folosită librărie JavaScript. Aceasta oferă modalități
interactive de accesare a elementelor dintr-o pagină, modifică dinamic reguli de stilizare și
sistematizează schimbul de date cu server-ul fără a fi necesară reîmprospătarea paginii.
Popularitatea sa este cu siguranța un efect al animațiilor interesante și al opțiunilor de
reprezentare a datelor puse la dispoziție.
3.5 Apache
Apache a fost folosit pentru crearea unui server local care să poată interpreta codul
PHP. Acesta poate fi instalat odata cu aplicația XAMPP și este cel mai folosit server HTTP
(HyperText Transfer Protocol) din lume. Motivele sunt bine definite, fiind capabil de a
primi mai multe aplicații concomitent utilizând același server, și desigur, fiind gratuit.
28
4. eVoteNow-Detalii de implementare
Pe parcursul acestui capitol vor fi prezentați pașii urmați în implementarea
aplicației eVoteNow cu referire la tehnologiile utilizate. Tot aici se vor detalia: nucleul
sistemului, structura, cazurile de utilizare și un studiu de caz bazat pe funcționalități și
procedeele folosite în implementarea acestora.
Tabelul admin este tabelul în care sunt salvate informații despre administratorul
sistemului. Aici sunt păstrate date precum nume, prenume, nume de utilizator și
parolă, având cheie primară un ID unic. Din punct de vedere al tipului de date,
aceste câmpuri conțin informații de tipul VARCHAR , având maximum 50 de
caractere, excepție făcând cheia primară care este de tipul INT.
29
Din motive de securitate, toate parolele din acest sistem nu pot fi vazute în clar, ele
fiind criptate MD5 (Message Digest Algorithm 5) sau SHA1 (Secure Hash
Algorithm 1).
Tabelul candidați conține informații relevante pentru candidați, precum nume,
prenume, departament sau partid, funcție sau rol, mesaj sau slogan, imagine, dar și
număr de voturi. Datorită configurabilității acestui sistem, câmpurile din acest tabel
au fost definite generic pentru a putea face față la schimbări. Cheia primară este tot
un ID unic, generat automat cu funcție de autoincrementare, de tipul INT. Pentru
eficientizarea apelurilor către baza de date, s-a decis păstrarea locală a imaginilor
aferente candidaților, în tabel fiind salvate doar căile absolute către ele. Astfel s-a
câștigat atât la capitolul viteză cât și din punct de vedere al traficului generat și al
lățimii de bandă ocupate.
30
Figura 11- Tabelul de setări
Tabelul de utilizatori este cel mai complex tabel din aceste sistem întrucât
utilizatorul este cea mai importantă componentă a sa. Pentru un utilizator este
necesară reținerea numelui și prenumelui, a codului numeric personal, întrucât pot
exista mai multe persoane cu același nume, a adresei, a unui semnalizator care
specifică dacă utilizatorul respectiv a mai votat, a votului exprimat, a unei parole de
acces și opțional, a datei angajării. Deși poate duce la încălcarea caracterului secret
al votului, păstrarea alegerii efectuate în baza de date este necesară pentru validarea
corectitudinii rezultatelor. În sprijinul păstrării integrității, nici administratorul
sistemului nu poate vedea cu cine a votat utilizatorul.
31
Figura 12 – Tabelul utilizatorilor
Clasa Persoana este o clasă de bază, clasă părinte pentru clasele Utilizator și
Candidat. Plecând de la ideea că și utilizatorii și candidații sunt persoane, această
clasă, împreună cu metodele ei, încapsulează datele pe care utilizatorii și candidații
le au în comun, adică numele și prenumele. Astfel s-au economisit timp și spațiu
prin definirea lor într-un singur loc și folosirea lor de mai multe ori. Ca și atribute,
clasa conține id, nume și prenume, atribute cu modificatorul de acces protected, ce
pot fi accesate din clasele copil.
32
Clasele Utilizator și Candidat moștenesc atributele si metodele declarate cu
modificatorul de acces protected în clasa părinte și au definite la rândul lor o serie
de atribute și metode în conformitate cu câmpurile din baza de date.
Clasele UtilizatorMySql și CandidatMySql prezintă o serie de funcții ce
implementează interogări SQL(Structured Query Language), prin care clasele
Utilizator și Candidat comunică cu baza de date. Acestea oferă posibilitatea
efectuării de operațiuni CRUD (Create,Read,Update,Delete), dar și altor funcții
particulare. În mare parte, metodele acestei clase apelează metode specifice lucrului
cu baze de date definite în clasa DbMySql. Printre acestea se pot enumera metode
ce returnează fie un rând, fie o coloană, fie un obiect, așa cum se poate observa și în
figurile de mai jos:
Clasa DbMySql conține în primul rând funcția de conectare la baza de date scrisă în
constructor și prezentată mai jos. În acest caz, fiecare apel al constructorului ar
duce la instanțierea unui nou obiect al acestei clase, adică o nouă conexiune. Din
acest motiv s-a dovedit necesară implementarea unui model singleton (Singleton
Pattern) prin care se restricționează crearea mai multor instanțe ale aceluiași obiect,
33
pastrându-se o singură conexiune. Apelul acestei funcții se face static, folosind
operatorul de rezoluție:
Din punct de vedere al cazurilor de utilizare, aplicația poate avea doi actori,
administratorul și utilizatorul. Diagrama cazurilor de utilizare prezentată în figura 14
descrie pe scurt acțiunile pe care le pot executa actorii, formând astfel o idee asupra
funcționalităților oferite de sistem.
34
Figura 14 – Diagrama Cazurilor de utilizare
Din această diagramă se observă faptul că utilizatorul nu are nevoie de cunoștințe
avansate de utilizare a calculatorului, întrucât acțiunile pe care le are de făcut pentru
exercitarea votului sunt simple și intuitive. Această simplitate poate fi considerată un punct
forte pentru că utilizatorii ajung să voteze foarte repede, astfel diminuând riscul de apariție
a supraîncărcării sau chiar a blocării sistemului.
Activitățile realizate de un utilizator în aplicație depind de intervalul de votare și de
tipul votului. Dacă intervalul este valabil și sistemul permite, utilizatorul își poate schimba
votul de câte ori dorește, rămânând salvată doar ultima sa preferință. Rezultate finale în
schimb, nu pot fi accesate până la încheierea intervalulului de timp alocat votului.
35
Figura 15 – Diagrama de activități pentru utilizator
36
4.4 Funcționalități și detalii de implementare
Utilizatorul este direcționat să-și creeze cont în caz că nu are deja, după care este
automat redirecționat către pagina de înregistrare. Autentificarea se face pe baza numelui și
a parolei furnizate de utilizator, date ce sunt trimise spre verificare în baza de date. În cazul
unui răspuns negativ, utilizatorul este avertizat că datele furnizate sunt incorecte și îi este
restricționat accesul până la introducerea unora corecte. Formularul de autentificare preia
datele introduse de utilizator și formează o interogare SQL prin funcția de mai jos.
37
Pentru atribuirea valorilor pentru variabilele $myusername și mypassword s-a
folosit funcția escape(), funcție ce reprezintă un alias al funcției native PHP
mysqli_real_escape_string(connection,String) care transformă șirul de caractere primit
într-un șir sigur, ce poate fi folosit într-o interogare a bazei de date. Aceasta elimină
caracterele speciale ce pot fi puse de atacatori într-un șir de caractere, păstrând integritatea
bazei de date, atac cunoscut sub numele de SQL Injection.
Dacă datele de autentificare furnizate de utilizator sunt corecte, funcția va crea un
obiect de tipul Utilizator și folosind metodele din clasa din care face parte, îl va inițializa
cu valorile returnate de interogare, după care îl va returna paginii de autentificare și va
notifica browserul să pornească o sesiune ce va rămâne activă până în momentul
deconectării. Inițializarea foloseste un procedeum numit chaining(înlănțuire) pentru a
simplifica scrierea codului.
Altfel, dacă datele de autentificare sunt greșite sau utilizatorul nu are cont creat,
interogarea va returna NULL și utilizatorul va observa un mesaj de eroare.
38
Figura 18 – Formular de autentificare
39
Figura 19 – Pagina principală cu rezultate intermediare
Decizia este luată de functia canVote care preia din baza de date un obiect de tipul
Setări și returnează adevărat sau fals dacă momentul actual de timp este sau nu este în
intervalul setat de data începerii evenimentului și data finalizării evenimentului. Conform
secventei de cod următoare, comparația între aceste date, se face folosind funcția
strtotime(), funcție ce returnează numărul de secunde trecute de la 1 Ianuarie 1970.
40
Pasul următor constă în aflarea lungimii acelui vector, valoare ce va fi folosită ca
număr total de utilizatori. Ulterior, într-o structură repetitivă, se generează la fiecare
iterație câte un număr aleator între 0 și numărul total de utilizatori, iar valoarea din vectorul
cu utilizatori care se află pe poziția generată întâmplător va fi introdusă într-un alt vector,
care va avea 20% din lungimea primului și în care se vor stoca utilizatorii care vor vota în
acel moment.
Mai departe, pentru a alege candidații cu care vor vota acești utilizatori, se merge
pe un principiu asemănător. Se interoghează baza de date și se obțin într-un vector ID-urile
tuturor candidaților. Pentru fiecare utilizator care va vota în acel moment se va genera un
numar aleator, acesta reprezentând poziția din vectorul de candidați a candidatului cu care
va vota. La final se actualizează tabelele din baza de date cu noile valori precum în
secvența de cod de mai jos:
Funcția de resetare nu face altceva decât să inițializeze cu zero toate câmpurile care
țin de numărarea voturilor din tabelele de utilizatori și candidați.
Pentru a merge mai departe, utilizatorul va accesa pagina de listare a candidaților
unde va putea vedea atât mesajele de campanie cât și imaginile candidaților, pentru a-i
putea identifica mai ușor.
41
Pentru a vedea sloganul unui candidat, utilizatorul poate apăsa pe butonul Mesaj și
textul va apărea sub acesta. Prin apăsarea aceluiași buton, mesajul se va ascunde din nou,
artificiul grafic fiind realizat cu ajutorul funcției slideToggle din biblioteca de JavaScript,
JqueryUI, apelul fiind prezentat în secvența de cod de mai jos.
42
În cazul votului convertibil, sistemul nu mai ține cont de semnalizator și păstrează
ultimul vot ales de utilizator, dar se asigură că scade un vot candidatului votat anterior.
Dacă tipul de vot este vot unic și semnalizatorul este tot 1, aplicația nu va înregistra noua
preferință a utilizatorului și va genera următorul mesaj, la fel ca în figura 21.
Interfața grafică oferă atât suport pentru client, prin funcțiile prezentate mai sus, cât
și pentru administrator, prin posibilitățile de configurare. Un alt rol pe care îl are interfața
pentru administrator este de a limita accesul acestuia la datele cu caracter personal ale
utilizatorilor, oferind sistemului transparență și integritate.
43
Etapa de administrare presupune introducerea informațiilor legate de desfășurarea
votului, precum numele evenimentului, tipul de vot acceptat și perioada de timp dealungul
căreia are loc votul. În centru acestei etape se află administratorul, care are la dispoziție o
serie de funcționalități precum ștergerea, editarea sau adăugarea de utilizatori și candidați,
prin care se asigură buna funcționare a sistemului.
Primul pas pe care trebuie să îl execute un administrator este acela de a configura
sistemul. Acest lucru este posibil prin accesarea paginii Setări din interfața de administrare.
Așa cum se poate observa și în figura 24, pagina de configurare conține un
formular care trimite informațiile spre a fi memorate în baza de date.
Pentru a simplifica introducerea datei si a orei specificate în baza de date în
formatul DATETIME, a fost apelată o altă funcție din biblioteca JQueryUI și anume
datePicker(). Tot din dorința de a oferi o experiență cât mai plăcută în utilizarea sistemului
a fost utilizată și funcția tooltip() care afișează o descriere a ceea ce reprezintă acele
câmpuri atunci când se poziționează cursorul deasupra lor.
44
Figura 25 – Pagina de listare candidați
În pagina de adăugare candidați, administratorul are opțiunea de a adăuga
fotografia fiecărui candidat. Funcția care realizează acest lucru nu stochează imaginea în
baza de date ci o transferă in directorul /images din interiorul proiectului, după care
salvează în baza de date calea absolută către acel fișier.
Asupra listei recent populate cu ajutorul paginii de adăugare de candidați se pot
efectua fie acțiuni de modificare, fie acțiuni de ștergere a candidaților.
Ștergerea unui candidat din această listă folosește un apel AJAX (Asynchronous
JavaScript And XML). Astfel se realizează actualizarea tabelului fără a reîmprospăta
pagina.
Apelul AJAX prezentat în secvența de cod de mai jos, prezintă avantajul unei
comunicații asincrone cu serverul și nu ține ocupat firul de execuție principal al aplicației.
45
Aplicația de administrare poate executa aceleași operațiuni și pe lista de utilizatori,
aceasta fiind prezentată tot sub formă de tabel, de data aceasta fără să fie afișate voturile
utilizatorilor, garantând caracterul lor secret.
Aplicația eVoteNow pentru votul electronic poate fi folosită în diferite contexte: fie
că se vrea organizarea de alegeri electorale (ideal, după îmbunătățiri), fie că se dorește
utilizarea ei în companii sau grupuri sociale, aceasta se poate configura pentru a putea vota
în orice domeniu de interes.
eVoteNow oferă utilizatorilor experiența unui vot rapid, din orice colț al lumii,
fiind necesare doar două minute și o conexiune la internet.
Prin funcționalitățile prezentate, se poate demonstra că obiectivele stabilite au fost
atinse în totalitate, și anume:
Realizarea unei interfete grafice atât pentru utilizator cât și pentru
administratorul care configurează aplicația.
Oferirea posibilității de autentificare a utilizatorilor și administratorilor
Prezentarea unei liste de entități în funcție de scopul votului
Posibilitatea votării
Vizualizarea rezultatelor parțiale și finale
Posibilitate de introducere, ștergere sau modificare a unor informații referitoare
la utilizatori sau candidați
46
Configurarea sistemului pentru diverse tipuri de vot; se pot introduce date
precum: numele evenimentului, intervalul de timp în care este organizat și tipul
de vot solicitat(unic sau convertibil)
Posibilitate de deconectare
Partea de interfață poate fi dezvoltată prin crearea unei arhitecturi interactive care își
schimbă automat formatul în funcție de dimenisunea ecranului de pe care este accesată
(“responsive”).
Pentru a spori popularitatea aplicației și pentru a înlătura o parte din blocajele de
natură hardware, se mai poate dezvolta o aplicație mobilă pentru mai multe sisteme de
47
operare de acest tip care să permită utilizatorilor să voteze chiar dacă nu au acces la un
calculator de tip desktop, dar au un telefon inteligent conectat la o rețea de date mobile.
Sunt de părere că ritmul dictat de evoluția tehnologiei va duce la schimbări majore în
stilul de viață al populației. Era digitală în care ne aflăm imprimă un ritm accelerat
modernizării, actiune ce îmi sugerează că în viitorul nu foarte îndepărtat, astfel de sisteme
vor căpăta un interes deosebit. Având acestea în minte, consider că eVoteNow este un prim
pas în direcția respectivă, un pas spre un sistem de vot modern, civilizat, sigur și mai ales,
de încredere.
48
Bibiliografie
http://dev.mysql.com/doc/refman/4.1/en/history.html/
49
[24] Jonathan Chaffer, Karl Swedberg: Learning jQuery Third Edition, Packt Publishing,
Birmingham, UK, 2009.
[25] http://db-engines.com/en/ranking/ Accesat 2016
[26] O trecere în revistă a sistemelor de vot electronic folosite în lume
http://apti.ro/votul-electronic-in-lume/ Accesat 2016
[27] VVPR Attack with Misprinted VVPAT, David L. Dill October 2, 2003
[28] http://estonia.eu/about-estonia/economy-a-it/e-voting.html/ Accesat 2016
[29] http://www.slideshare.net/moldovaictsummit/optimising-mobile-signature-v4/
Accesat 2016
[30] https://www.linkedin.com/company/hire-joy/ Accesat 2016
50