eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Terminálová a registra£ní £ást systému Elektronické volby
Václav Tarantík
Vedoucí práce:
Ing. Martin Komárek
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Softwarové inºenýrství
24. kv¥tna 2012
iv
v
Pod¥kování Cht¥l bych tímto pod¥kovat p°edev²ím svým rodi£·m za jejich nekon£ící ochotu, trp¥livost a podporu v dosavadním ºivot¥, své p°ítelkyni Nikol, která mi dodávala odvahu a odhodlání, Petru Hlavá£kovi za spolupráci p°i tvorb¥ aplikace a v²em p°átel·m, kte°í mi byli nablízku. V neposlední °ad¥ také vedoucímu práce, panu Ing. Martinu Komárkovi za odbornou pomoc a rady p°i samotné tvorb¥ práce.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
Ve Smi°icích dne 24. 5. 2012
.............................................................
viii
Abstract This work deals with the analysis, design and implementation of the terminal and registration part of the E-voting system. It enables the voting itself and logging into the system using the local terminal which communicates with the server via the https protocol. The work also deals with the modern trends in the electronical voting branch, dierent types of the authorization and authentication of the voters and further with the various types of the results evaluation. The main benet of the system is at most the easement of the voting process iteself, gaining the results and evaluation. It also provides the reduction of needed number of supervising persons and related expenses.
Abstrakt Tato práce se zabývá analýzou, návrhem a implementací terminálové £ásti systému E-volby. Umoº¬uje hlasování a p°ihlá²ení do systému prost°ednictvím terminálu, který se serverem komunikuje vzdálen¥ pomocí protokolu https. Práce se rovn¥º zabývá moderními trendy na poli elektronických voleb a hlasování, rozli£nými typy autorizace a autentikace voli£· a dále také r·znými typy vyhodnocování volebních výsledk·. Hlavním p°ínosem je zejména uleh£ení vlastního procesu hlasování, sb¥ru dat a vyhodnocování. S tímto souvisí i sníºení nutného po£tu dohlíºejících osob a s nimi souvisejících náklad·.
ix
x
Obsah 1 Popis problému, specikace cíle 1.1 1.2
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zadání a motivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Zabezpe£ení a spolehlivost elektronických volebních systém· 2.1
2.2
2.3
Zabezpe£ení proti výpadku proudu . . . . . . 2.1.1 Záloºní napájecí zdroje . . . . . . . . . 2.1.2 Spu²t¥ní a chod serveru na notebooku 2.1.3 Shrnutí . . . . . . . . . . . . . . . . . Zabezpe£ení proti napadení t°etí stranou . . . 2.2.1 Zabezpe£ení samotného hlasu . . . . . 2.2.2 Kryptogracké algoritmy . . . . . . . . 2.2.3 Protokol HTTPS . . . . . . . . . . . . 2.2.3.1 HTTP . . . . . . . . . . . . . 2.2.3.2 SSL/TLS . . . . . . . . . . . 2.2.4 Shrnutí . . . . . . . . . . . . . . . . . Autentizace a autorizace voli£· . . . . . . . . 2.3.1 Zp·soby ov¥°ování identity . . . . . .
3 Analýza 3.1
3.2
3.3
3.4
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
Poºadavky . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Funk£ní poºadavky . . . . . . . . . . . . . . . 3.1.2 Nefunk£ní poºadavky . . . . . . . . . . . . . . P°ípady uºití . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Akté°i . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Diagram p°ípad· uºití . . . . . . . . . . . . . Scéná°e . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Úprava vygenerovaných p°ihla²ovacích údaj· 3.3.2 P°ihlá²ení do systému . . . . . . . . . . . . . 3.3.3 Zobrazení volebního lístku . . . . . . . . . . . Doménový model . . . . . . . . . . . . . . . . . . . . 3.4.1 Popis jednotlivých entit . . . . . . . . . . . . 3.4.1.1 User . . . . . . . . . . . . . . . . . . 3.4.1.2 Election Ticket . . . . . . . . . . . . 3.4.1.3 Option . . . . . . . . . . . . . . . . xi
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1
3
. 3 . 3 . 5 . 5 . 6 . 6 . 6 . 7 . 7 . 8 . 8 . 10 . 10 . . . . . . . . . . . . . . .
13
13 13 13 14 14 14 15 15 16 16 18 19 19 20 20
xii
OBSAH
3.4.1.4 3.4.1.5 3.4.1.6 3.4.1.7
4 Návrh °e²ení 4.1
Technologie . . . . . . . . . 4.1.1 Server . . . . . . . . 4.1.2 Registra£ní £ást . . . 4.1.3 Databáze . . . . . . 4.1.4 Programovací jazyk . 4.1.5 Vývojové prost°edí . 4.1.6 te£ka . . . . . . . . 4.1.7 Repozitá° projektu .
5.2 5.3
5.4 5.5
6.1
. . . . . . . .
. . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Databázové p°ipojení . . . . . . . . . . . . . . . . . 5.1.1 Nastavení persistentní vrstvy . . . . . . . . 5.1.2 Nastavení entit . . . . . . . . . . . . . . . . 5.1.3 Problémy p°i realizaci persistence . . . . . . 5.1.4 e²ení problému . . . . . . . . . . . . . . . Prezenta£ní vrstva . . . . . . . . . . . . . . . . . . 5.2.1 Zp·sob p°ihla²ování uºivatele . . . . . . . . 5.2.2 P°izp·sobení pro r·zné typy voleb . . . . . Práce s otisky prstu . . . . . . . . . . . . . . . . . 5.3.1 Uloºení otisku prstu . . . . . . . . . . . . . 5.3.2 Ov¥°ení otisku prstu . . . . . . . . . . . . . 5.3.3 Problémy spojené s ov¥°ováním otisku prstu P°ipojení k serveru pomocí HTTPS protokolu . . . 5.4.1 P·vodní plán propojení £ástí systému . . . 5.4.2 e²ení problému s propojením . . . . . . . Zm¥ny provedené oproti prvotnímu návrhu . . . . . 5.5.1 Zm¥ny v doménovém modelu . . . . . . . . 5.5.2 Zm¥ny ve funk£nosti aplikace . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
Testování s uºivatelem . . . . . . . . . . . . . . . . . . . . . . 6.1.1 Seznam úkol· . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Výstupy uºivatel· . . . . . . . . . . . . . . . . . . . . 6.1.2.1 Uºivatel 1 . . . . . . . . . . . . . . . . . . . . 6.1.2.2 Uºivatel 2 . . . . . . . . . . . . . . . . . . . . 6.1.2.3 Uºivatel 3 . . . . . . . . . . . . . . . . . . . . 6.1.3 Shrnutí testování . . . . . . . . . . . . . . . . . . . . . 6.1.3.1 Zadávání otisku prstu . . . . . . . . . . . . . 6.1.3.2 P°i°azování preferencí zvoleným kandidát·m 6.1.3.3 Odhlá²ení ze systému . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
6 Testování
. . . . . . . .
. . . .
. . . . . . . .
5 Implementace 5.1
Role . . . . . . Additionals . . Election . . . . Election Event
20 20 21 21
23
23 23 23 24 24 24 24 25
27
27 27 28 28 28 29 29 29 30 30 30 31 32 32 32 33 33 33
35
35 35 36 36 37 38 38 38 39 39
xiii
OBSAH
6.2
Hodnocení prob¥hnutých test· . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7 Záv¥r
41
A Seznam pouºitých zkratek
45
B UML diagramy
47
C Obsah p°iloºeného CD
51
D Instala£ní p°íru£ka
53
D.1 Pot°ebné programy . D.2 Postup instalace . . D.2.1 SDK . . . . . D.2.2 MySQLServer D.2.3 Netbeans . . D.3 Spu²t¥ní aplikace . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
53 53 53 53 53 54
xiv
OBSAH
Seznam obrázk· 3.1 3.2
P°ípady uºití . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Doménový model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
B.1 Doménový model server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 B.2 Business prcess model práce uºivatele se systémem . . . . . . . . . . . . . . . 49
xv
xvi
SEZNAM OBRÁZK
Seznam tabulek 2.1 2.2
Tabulka srovnání typ· UPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kryptogracké algoritmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1
Tabulka moºných hodnot FAR s odpovídající pravd¥podobností chyby . . . . 31
xvii
5 7
xviii
SEZNAM TABULEK
Kapitola 1
Popis problému, specikace cíle 1.1
Úvod
V zastupitelské demokracii jsou volby prost°edkem, kterým si právn¥ zp·sobilí ob£ané mohou ur£it, kdo bude v jejich zemi vládnout, ur£ovat zákony a °ídit celkový chod státu. Po£átek voleb datujeme v eskoslovensku od roku 1920, kdy se volilo do dvoukomorového Národního shromáºd¥ní Republiky eskoslovenské sloºeného z Poslanecké sn¥movny a Senátu. V sou£asné dob¥ se v eské republice volí do Evropského parlamentu, krajských zastupitelstev, do obecní samosprávy, do Senátu a do Poslanecké sn¥movny. Podklady k tomuto textu byly £erpány z internetu a p°edev²ím potom ze stránek Strany a volby [17] Ú£elem voleb je dát voli£·m moºnost svobodného rozhodnutí, které m·ºe ovlivnit chod státu. Ve v¥t²in¥ zemí se stále vyuºívá papírového zp·sobu volení, které obná²í p°ítomnost voli£e ve volební místnosti, vloºení hlasu do obálky, pokud se jedná o tajné hlasování, a následné vhození do volební urny. Po skon£ení hlasování jsou tyto hlasy p°epo£ítávány komisí, která na základ¥ zji²t¥ných hodnot vynese verdikt o výsledku voleb. Tento zp·sob, a£koliv je jiº léty zab¥hnutý, je bohuºel velice £asov¥ a fyzicky náro£ný a rovn¥º pom¥rn¥ náchylný na lidskou chybu. V minulých letech se v r·zných zemích sv¥ta jiº s nápadem elektronických voleb p°i²lo, ov²em v drtivé v¥t²in¥ byl jiº p°ed samotnou snahou realizace smeten ze stolu. D¥lo se tomu p°eváºn¥ kv·li ned·v¥°e ob£an· k zabezpe£ením, která poskytují r·zné typy internetových protokol·. Z televizních obrazovek denn¥ slýcháme o £etných útocích hacker· na vládní systémy s úmysly nabourání, úprav nebo po²kození systém·, coº pouze podporuje obavy ob£an· a jejich odmítavý p°ístup k novým °e²ením. Ve své práci bych cht¥l jednotlivé moºnosti inovací zhodnotit, popsat a navrhnout nejlep²í °e²ení. Tato terminálová £ást by usnadnila zejména zadávání jednotlivých hlas· do systému a ov¥°ení identity voli£·. 1.2
Zadání a motivace
Stávající projekt E-volby[8] bohuºel neposkytuje podporu pro lokální terminál. Jak se autor zmi¬uje ve své práci, jiº mu na tento nevy²el £as a tudíº stávající implementace neexistuje. Tato práce má za cíl tento terminál se v²emi pot°ebnými náleºitostmi navrhnout 1
2
KAPITOLA 1.
POPIS PROBLÉMU, SPECIFIKACE CÍLE
a naimplementovat a zajistit plnou funk£nost výsledného spojení se serverovou £ástí. Cílem této práce je rovn¥º seznámení se s jednotlivými typy voleb a zp·soby vyhodnocování výsledk·.
Kapitola 2
Zabezpe£ení a spolehlivost elektronických volebních systém· Pro hladký pr·b¥h hlasování je nutné za°ídit minimalizaci vliv·, které by mohly n¥jakým zp·sobem zasáhnout systém a znemoºnit tak hlasování nebo v nejhor²ím p°ípad¥ ovlivnit výsledky voleb nezapo£ítáním n¥kterých hlas·, které byly v dob¥ výpadku na p·lce cesty. Mohlo by se stát, ºe bychom tento problém neodhalili a neúmysln¥ tak poru²ili zákon. Z tohoto d·vodu bych tuto kapitolu cht¥l zam¥°it p°edev²ím na studii toho, jak t¥mto problém·m p°edejít £i úpln¥ zamezit.
2.1
Zabezpe£ení proti výpadku proudu
Tato £ást se v¥nuje zamezení ovlivn¥ní pr·b¥hu hlasování zp·sobeného výpadkem proudu. Toto je asi nejpravd¥podobn¥j²í zp·sob naru²ení volební události. Jedná se ov²em spí²e o problém, který je nutné o²et°it z vn¥j²ku systému, protoºe neexistuje softwarové °e²ení, které by totoriziko dokázalo potla£it. Kapitola popsuje jednotlivé typy °e²ení, jejich spolehlivost a nan£ní náro£nost.
2.1.1 Záloºní napájecí zdroje Záloºní napájecí zdroje(UPS) jsou základním prvkem ochrany proti výpadku nap¥tí. Existuje hned n¥kolik variant li²ících se navzájem podle typu a zp·sobu pouºití. Dle zp·sobu vnit°ní realizace je lze rozd¥lit na t°i hlavní skupiny následovn¥:
• O-line UPS • Line-interactive UPS • On-line UPS 3
4KAPITOLA 2.
ZABEZPEENÍ A SPOLEHLIVOST ELEKTRONICKÝCH VOLEBNÍCH SYSTÉM
O-line UPS
Tento typ záloºních zdroj· p°edstavuje naprostý základ, který má pouze nejnutn¥j²í funk£nosti, které od záloºního zdroje o£ekáváme. Jeho hlavními výhodami jsou p°edev²ím vysoká skladnost p°i pom¥rn¥ malých rozm¥rech a nízká cena. Mezi nevýhody pat°í nap°íklad fakt, ºe není schopen vypo°ádat se s p°ep¥tím £i podp¥tím v síti. Tyto zdroje se hodí p°edev²ím pro malé výkony. Proud zde prochází ze vstupu p°ímo na výstup a p°i výpadku nap¥tí se p°epne na výstup z nap¥´ového m¥ni£e.
Line-interactive UPS
V tomto p°ípad¥ se jedná o pokro£ilej²í verzi O-line zdroje, kdy se tento dá pouºít i pro v¥t²í výkony. Stabilizace nap¥tí zde probíhá skokov¥, p°i£emº p°i t¥chto úpravách zdroj nevyuºívá baterii, na kterou se p°epne aº p°i del²ích výkyvech v síti nebo p°i úplném výpadku proudu. Tento typ záloºního zdroje ve v¥t²in¥ p°ípad· sta£í pro zaji²t¥ní chodu systému na krat²í dobu po kolapsu sít¥.
On-line UPS Jedná o nejdraº²í variantu záloºních zdroj·. To je zap°í£in¥no hlavn¥ tím, ºe se p°ená²ený výkon musí nejprve usm¥rnit a poté p°evést na st°ídavý, jejich konstrukce je sloºit¥j²í a s tím i odpovídající cena vy²²í. Hlavní nevýhodou tohoto typu je jeho ú£innost, která je zde niº²í, neº u ostatních model·, ov²em hlavní výhodou je fakt, ºe tento druh záloºních zdroj· lze pouºít prakticky pro jakýkoliv typ zát¥ºe bez ohledu na to, jak stabilní je sí´, jelikoº se p°ístroj vypo°ádá i s velkými nap¥´ovými výkyvy. Velkou výhodou rovn¥º z·stává i fakt, ºe tento typ zdroj· poskytuje rovn¥º podporu rozhraní SNMP1 /HTTP na rozdíl od ostatních. Následující tabulka porovnává vlastnosti jednotlivých typ· záloºních zdroj·. Tato tabulka je £áste£n¥ p°evzatá ze stránek rmy Falcon[14]
1
Jedná se o internetový protokol, který slouºí pro správu sít¥
2.1.
5
ZABEZPEENÍ PROTI VÝPADKU PROUDU
Problém
P°echod na baterii bez p°eru²ení výstupu Izolace vstupu od výstupu Ochrana za°ízení p°ed p°ímým úderem blesku Pouºitelnost u systém· s pot°ebou zálohy del²í neº hodinu Podpora HTTP/SNMP rozhraní Vyuºití za°ízení v extrémních teplotách(<0C a >33C) Pokra£uje UPS v provozu p°i úplném selhání baterií
O-line
Line-interactive On-line
8 8 3 8
8 8 3 8
3 3 3 3
8 3
8 3
3 3
V¥t²ina NE
N¥které ANO
3
Tabulka 2.1: Tabulka srovnání typ· UPS
2.1.2 Spu²t¥ní a chod serveru na notebooku Dal²í moºností, jak se vyvarovat ztráty volebních dat je spou²t¥t server na notebooku. Tento zp·sob se jeví jako velmi výhodný p°edev²ím pro men²í volební události, kde máme k serveru p°ipojených pouze n¥kolik klient·. S rostoucím po£tem p°ipojení ov²em rapidn¥ rostou nároky na hardware notebooku, který je pro v¥t²í volební události pom¥rn¥ nevhodný. Pokud jsme si jisti, ºe nep°ekro£íme ur£ité zatíºení systému, je toto °e²ení velice výhodné. Díky baterii notebooku jsme schopni se systémem po výpadku dále pracovat. V dne²ní dob¥ mají jiº pr·m¥rné notebooky p°íznivé doby výdrºe na baterii, coº nám slibuje n¥co kolem 2 hodin chodu systému po výskytu problému. Oproti klasickému stolnímu serveru má toto °e²ení je²t¥ dal²í nevýhodu, a to fakt, ºe chlazení notebooku není natolik dosta£ující pro vysoké výkony a £ast¥ji zde dochází k p°eh°ívání systému, coº by mohlo v extrémním p°ípad¥ znamenat ztrátu uºivatelských dat p°i zni£ení notebooku p°eh°átím.
2.1.3 Shrnutí Jaké °e²ení je tedy vhodné zvolit? Rozhodujícím faktorem by pro nás m¥la být p°edev²ím rozsáhlost volební události, kterou budeme na²ím systémem obsluhovat. Lze °íci, ºe p°i men²í, lokální volební akci je vyuºití notebooku, jako serveru velmi výhodnou a nan£n¥ p°íznivou volbou, která nás nezklame ani p°i úplném výpadku na n¥kolik desítek minut. Pro v¥t²í volební události, kde se hlasuje p°es velké mnoºství terminál· je naopak lep²í poohlédnout se po moºnosti °e²ení s UPS. V na²em p°ípad¥ je ov²em nutný Online typ, který je vysoce nan£n¥ náro£ný jiº u základních typ·, které p°i plném vytíºení vydrºí pracovat na baterii pouze 5 minut se cena pohybuje okolo 20 tisíc korun, coº znamená, ºe pokud po°ádáme volby v oblasti s nestabilní sítí, kde jsou £asté výpadky proudu po del²í dobu, musíme sáhnout k profesionálním UPS , které se jiº mohou cenov¥ posunout aº do °ádu statisíc·. Je tedy velice d·leºité zváºit, co budeme provozovat a jaké k tomu budeme mít podmínky.
6KAPITOLA 2.
2.2
ZABEZPEENÍ A SPOLEHLIVOST ELEKTRONICKÝCH VOLEBNÍCH SYSTÉM
Zabezpe£ení proti napadení t°etí stranou
Tato £ást je zam¥°ena p°edev²ím na zp·soby zabezpe£ení odeslaného hlasu p°ed jeho p°e£tením £i pozm¥n¥ní cizí osobou. Spolehlivost volební události spo£ívá p°edev²ím v tom, s jakou jistotou m·ºeme °íci, ºe se kaºdý odeslaný hlas zapo£ítá skute£nému adresátovi, a to pouze jednou a také, existuje-li moºnost úpravy hlasu nebo zji²t¥ní jeho obsahu p°i cest¥ do cíle. Mým cílem je vyty£it zde poºadavky, které musí kaºdá volební událost z hlediska bezpe£nosti spl¬ovat a ur£it zp·sob, jakým toho lze dosáhnout. Jednotlivé zp·soby ochrany lze rozd¥lit do dvou základních kategorií, a to na zabezpe£ení hlasu a ochranu samotného hardwaru, na kterém volební systém b¥ºí.
2.2.1 Zabezpe£ení samotného hlasu Pro bezpe£ný pr·b¥h hlasování je nutné zajistit anonymitu jednotlivých hlas·. R·zné zp·soby zabezpe£ení jsou popsány v práci Metody dosaºení spolehlivosti elektronických voleb [1] Michaely Sedlá°ové. Autorka v této práci popisuje rozdílné typy zabezpe£ení a ²ifrování odesílaných hlas·. Pro úplnost p°idávám jejich stru£ný popis.
Asymetrické ²ifrování
Je zp·sob vyuºívající dva typy klí£·, a to ve°ejný pro ²ifrování a soukromý pro de²ifrování. Cílová osoba dokáºe pomocí svého soukromého klí£e zprávu roz²ifrovat. V elektronických volbách funguje tento systém tak, ºe v²ichni voli£i obdrºí ve°ejný klí£, kterým sv·j hlas za²ifrují a p°idají k d·kazu pravosti. Z takto za²ifrovaných hlas· je následn¥ vytvo°en za²ifrovaný volební výsledek, který je p°edán autoritám, které disponují soukromými klí£i, po£et pot°ebných klí£· k roz²ifrování je p°edem daný, zpravidla to bývá nadpolovi£ní v¥t²ina. Pomocí t¥chto klí£· je získán výsledek voleb a následn¥ zve°ejn¥n seznam voli£·, jejichº hlasy byly zapo£ítány, samoz°ejm¥ neobsahující voli£·v výb¥r. Toto slouºí k uji²t¥ní voli£·, ºe byl jejich hlas zpracován v po°ádku. Bezpe£nost tohoto systému spo£ívá rovn¥º v tom, ºe se výsledky de²ifrují aº po skon£ení hlasování, kdy je známý konkrétní výsledek.
Slepý podpis
Tento systém se vyuºívá pro uchování tajnosti volby jdnotlivých voli£·. Voli£ vloºí sv·j hlas do obálky, kterou podepí²e svým elektronickým podpisem. Tuto obálku po²le registra£nímu serveru, který zjistí, zda se jedná o legitimního voli£e a dal²í náleºitosti, a pokud je v²e v po°ádku, obálku podepí²e a ode²le zp¥t voli£i. Zde je v²e v po°ádku z hlediska bezpe£nosti, jelikoº server nem·ºe za²ifrovanou zprávu p°e£íst. Voli£ po obdrºení schválené obálky posílá sv·j hlas p°es anonymní kanál serveru k vyhodnocení. Pro vyhodnocení je je²t¥ nutné, aby voli£ zaslal serveru klí£ pro otev°ení obálky. Toto jiº ov²em pr·b¥h hlasování neovlivní, jelikoº klí£ odesílá voli£ aº poi skon£ení hlasování.
2.2.2 Kryptogracké algoritmy Tato £ást se v¥nuje konkrétním typ·m ²ifrovacích algoritm·. Ty jsou v systému pouºívány páv¥ p°i ²ifrování zprávy odesílané voli£em. V následující tabulce je jejich lehké shrnutí obsahující stru£ný popis. Jedná se o n¥kolik nejb¥ºn¥ji pouºívaných typ·.
2.2.
7
ZABEZPEENÍ PROTI NAPADENÍ TETÍ STRANOU
Název al- Typ goritmu RSA
Asymetrický
DSA
Asymetrický
SHA
Hashovací
MD5
Hashovací
AES
Symetrický
IDEA
Symetrický
Princip
Pouºití
Ve°ejný klí£ je náhodn¥ vygenerován a s jeho pomocí je vygenerován soukromý klí£ Generování klí£· pomocí diskrétního algoritmu Vytvo°ení otisku vstupní délky ze vstupních dat N¥kolik pr·chod· zprávou, v kaºdém pr·chodu pouºity jiné hodnoty pro r·zná slova. Jiº moc nepouºívaný. Pomocí stejného klí£e se zpráva ²ifruje i de²ifruje N¥kolikanásobná aplikace neslu£itelných algebraických operací na text
ifrování a podepisování Podepisování ifrování ifrování
ifrování ifrování
Tabulka 2.2: Kryptogracké algoritmy
2.2.3 Protokol HTTPS Protokol HTTPS bude pouºit pro komunikaci terminálu se serverem systému eVolby. Jelikoº je pro tuto práci velice podstatný, je mu v¥nována celá tato sekce, kde je popsán podrobn¥ji. P°i psaní této £ásti jsem nejvíce vycházel z £lánk· o HTTPS na serveru Wikipedia [7]. tento protokol je v sou£asnosti velmi hojn¥ vyuºívaný v °ad¥ aplikací, které jsou náchylné na útoky cizích osob, jako nap°íklad internetové bankovnictví, po²tovní server VUT a prakticky na v²ech stránkách, kde je nutné zajistit anonymitu a bezpe£í uºivatele. Tento protokol je výsledkem slou£ení dvou odv¥tví, a to HTTP a SSL2 /TLS3 . T¥mto £ástem se v¥nuje následující text.
2.2.3.1 HTTP Hypertext Transfer Protocol neboli Hypertextový p°enosový protokol je hlavním nástrojem vyuºívaným uºivateli na celém sv¥t¥ pro zprost°edkování komunikace s internetem. Tento protokol je v sou£asnosti pouºíván pro p°enos mnoha typ· informací. Spolu s formátem XML slouºí jako nástroj webových sluºeb, jeº mají za cíl spou²t¥ní webových aplikací. Samotný protokol je bezestavový, to znamená, ºe si v pr·b¥hu komunikace s uºivatelem nedokáºe odvodit spojitost n¥jaké posloupnosti dotaz·. Za tímto ú£elem slouºí uºivateli tzv. Cookies, které ukládají jednotlivé informace o spojení uºivatele se serverem v po£íta£i. Samotná komunikace dále funguje tak, ºe uºivatel za²le serveru konkrétní dotaz na jeho obsah. ten tento 2
Secure Sockets Layer, p°edstavuje mezivrstvu mezi transportní a aplika£ní vrstvou zaji²´ující zabez-
pe£ení komunikace ²ifrováním 3
Transport Layer Security
sluºby
p°edstavuje moderní verzi SSL, kdy poskytuje zabezpe£ení pro webové
8KAPITOLA 2.
ZABEZPEENÍ A SPOLEHLIVOST ELEKTRONICKÝCH VOLEBNÍCH SYSTÉM
dotaz zpracuje, vyhodnotí a ode²le uºivateli nový dokument, na jehoº za£átku je obsaºen výsledek dotazu, tedy zda server na²el odpovídající dokument a podobn¥. Za t¥mito pár °ádky následuje posloupnost dat vyºádaných uºivatelem.Následuje ukázka zobrazuje zjednodu²ený dotaz, který posílá uºivatel serveru. Nejedná se o celý p°íkaz, pouze o jeho £ást.
GET /sekce/fotbal/liga-mistru HTTP/1.1 Host: fotbal.sport.cz User-Agent: Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.5.29 Version/10.60 Accept-Charset: UTF-8,* V této ukázce vidíme, ºe si uºivatel vyºádal dokument /sekce/fotbal/liga-mistru, který se nachází na serveru daném v £ásti Host, zde tedy fotbal.sport.cz, na následujícím °ádku následuje popis prohlíºe£e, který se serveru dotazuje a nakonec je²t¥ ozmnamuje, jaké p°ijímá kódování. Systém na tento dotaz odpoví. Odpov¥¤, kterou p°ijme prohlíºe£ vypadá následovn¥:
HTTP/1.0 200 OK Date: Fri, 29 Dec 2011 20:27:25 GMT Content-Language: cs Content-Type: text/html; charset=utf-8 Zde op¥t vidíme, ºe jako první je potvrzení od serveru, ºe hledaný dokument na²el, následují informace o serveru a jeho konguraci, které jsem pro ukázku vynechal, poté je²t¥ datum odeslání odpov¥di, informace o jazyku a typ dokumentu.
2.2.3.2 SSL/TLS Jedná se o kryptogracké protokoly, které jsou vyuºívány k zabezpe£ení internetové komunikace. Vyuºívají asymetrického ²ifrování k vým¥n¥ klí£· a symetrické pro zaji²t¥ní bezpe£nosti, kdyº komunikují na úrovni transportní vrstvy. Nejv¥t²í roz²í°ení je v internetových prohlíºe£ích. TLS poskytuje autentizaci koncovým bod·m spojení a pomocí ²ifrování zabra¬uje odposlechu. Typicky je autentizován pouze server, coº koncovému uºivateli poskytuje p°esnou informaci o tom, s kým v danou chvíli komunikuje. P°i vzájemné autentizaci je tato jistota zaji²t¥na pro ob¥ strany. K zaji²t¥ní vzájemné autentizace je ov²em nutné nasazení infrastruktury ve°ejných klí£·. Klient zde pouºívá ve°ejný klí£ certika£ní autority k ov¥°ení jejího digitálního podpisu. Pokud je klient schopen toto ov¥°it, povaºuje jiº tuto autoritu za d·v¥ryhodnou. Jako ochranu p°ed útokem t°etí osoby se porovnává DNS serveru se jménem, které je obsaºené v certikátu.
2.2.4 Shrnutí HTTPS tedy není speciálním typem protokolu. Jedná se pouze o typ HTTP roz²í°ený o vlastnosti SSL, coº nám poskytuje daleko vy²²í úrove¬ zabezpe£ení na²ich informací. Jako implicitní pouºívá port 443 na rozdíl od HTTP pracujícího na portu 80. Stejn¥ jako HTTP
2.2.
ZABEZPEENÍ PROTI NAPADENÍ TETÍ STRANOU
9
pracuje nad aplika£ní vrstvou, coº je nejvy²²í vrstva OSI modelu. Ve zpráv¥ HTTPS jsou ve²keré informace ²ifrované. Jediné, co je tedy známé, je doména a IP adresa. Integrace do webových prohlíºe£· je z°ejmá na první pohled, takºe pokud se nacházíme na serveru se zabezpe£ením, dává nám toto prohlíºe£ najevo v¥t²inou pomocí záme£ku vedle adresní °ádky. Co se omezení tý£e, není výhodné pouºívat tento protokol pro virtuální hostingy, SSL je schopen poskytnout pouze jeden certikát pro dvojici IP/Port.
10KAPITOLA 2.
2.3
ZABEZPEENÍ A SPOLEHLIVOST ELEKTRONICKÝCH VOLEBNÍCH SYSTÉM
Autentizace a autorizace voli£·
Tato £ást je v¥nována ov¥°ování p°ístupových práv uºivatel·, kte°í se snaºí získat p°ístup do systému. Jedná se op¥t o významné bezpe£nostní opat°ení, na kterém velmi záleºí celková spolehlivost systému, jelikoº nebude neoprávn¥nému uºivateli p°ístup do aplikace v·bec povolen. Autentizace a autorizace jsou dva související pojmy, které budou dále vysv¥tleny samostatn¥. Po letmém vysv¥tlení jednotlivých pojm· následuje popis b¥ºných ov¥°ovacích algoritm· se studií jejich dobrých a ²patných vlastností, výhod a nevýhod a cenovou dostupností samotných °e²ení. Pro popis pojm· bylo £erpáno p°edev²ím z Wikipedie [11][12] a minimáln¥ jiº z dal²ích dopl¬kových zdroj·.
Autentizace Slouºí jako prost°edek k p°esnému ur£ení identity uºivatele, který se snaºí o p°ístup do sluºby. Tato opat°ení jsou zpravidla realizována na stran¥ serveru. Pro kaºdého uºivatele, který má oprávn¥ní se systémem pracovat jsou v databázi uloºeny jeho osobní údaje a údaje o jeho ú£tu, obsahující p°ihla²ovací jméno a heslo, které bývá zpravidla za²ifrované. Autentizace v¥t²inou probíhá na úrovni vyhledávání uºivatele v databázi podle p°ihla²ovacího jména a následném porovnání hesel nebo v p°ípad¥ sloºit¥j²ích ov¥°ování samostatnou vyhodnocovací £ástí obsaºeném v softwaru. Autorizace
Naproti tomu bývá obvykle dal²ím krokem po vpu²t¥ní uºivatele do systému. Pravidla autorizace nám jasn¥ °íkají, jaká oprávn¥ní má uºivatel v jeho rámci a ur£ují oblasti, do kterých má uºivatel p°ístup. Toto je nutné nap°íklad proto, aby voli£, který má samoz°ejm¥ povolen p°ístup do aplikace nemohl upravovat n¥jakým zp·sobem ú£ty ostatních voli£· nebo n¥jak zasahovat do pr·b¥hu voleb. Samotná autorizace bývá v¥t²inou zaji²t¥na jiº návrhem, kdy mají v²echny zú£astn¥né role jasn¥ dané obory p·sobnosti a mimo n¥ nemohou systém n¥jak ovlivnit.
2.3.1 Zp·soby ov¥°ování identity V této sekci jsou p°edstaveny jednotlivé zp·soby a postupy ov¥°ování identity uºivatel· systému.
Ov¥°ení na základ¥ otisk· prstu Tato kapitola je velmi ²iroká, jelikoº v dne²ní dob¥ nabízejí výrobci mnoho typ· sníma£· zaloºených na r·zných principech. Ve své práci Re²er²e algoritm· pro snímání a zpracování otisku prst· [18]se tomuto oboru v¥nuje Zuzana Polá£ková. V dob¥ zpracování tématu doporu£uje pro pouºití v aplikacích p°edev²ím elektrolumuniscen£ní sníma£ otisku. Rozhodujícím faktorem je pro tuto volbu cena, dostupnost v R a pak také schopnosti komunikace. B¥ºný uºivatel se ov²em v sou£asnosti zpravidla nejvíce setkává s teplotními sníma£i otisk· prstu, které jsou dnes jiº integrovány ve v¥t²in¥ notebooku a slouºí primárn¥ pro p°ihlá²ení uºivatele do systému.
2.3.
AUTENTIZACE A AUTORIZACE VOLI
11
Ov¥°ení na základ¥ PINU Jedná se o dal²í vlastnost, která je po výsledném systému poºadována. Zde bude kaºdému uºivateli p°i dokon£ení registrace vygenerován náhodný PIN, kterým se poté v kombinaci s loginem bude p°ihla²ovat pro vykonání své volební povinnosti v den voleb. Pro tuto £ást je velmi d·leºité zajistit skute£nou náhodnou hodnotu vygenerovaných PIN·, p°edev²ím proto, aby ne²lo vypozorovat pravidlo, podle kterého se hesla generují a následn¥ jej zneuºít. Jednotlivými algoritmy se ve své práci Generování jednorázových PIN· a jejich uloºení na £ipovou kartu [3] zabývá Bc. Martin Sláma, který ve své práci porovnává spolehlivost jednotlivých, b¥ºn¥ vyuºívaných postup·. Dle této studie se jako optimální jeví dva zp·soby, a to SecureRandom a AESCounterRNG, které vykazují v autorových testech nejlep²í výsledky. Autor zdrojový kód posléze nahrává na Java Card4 , coº je dal²í z nápad· na moºné roz²í°ení systému. Následuje krátký popis obou algoritm·, který byl získán z jejich JavaDOC [4] , voln¥ dostupného v dokumentaci jazyka Java. Ob¥ tyto t°ídy nám poskytují moºnost generovat náhodná £ísla, která budou naprosto spolehlivá a vyuºitelná tak v na²í aplikaci, kde se klade velký d·raz na bezpe£í voli£· i celého systému.
SecureRandom
Jedná se o kryptogracky silný generátor, jelikoº vytvá°í nedeterministický výstup, to znamená, ºe nelze z jednotlivých výsledk· ur£it, jaké £íslo bude generovat jako dal²í. Jeho instanci získáme zavoláním prázdného konstruktoru této t°ídy.
AESCounterRNG
Je nelineární generátor náhodných £ísel zaloºený na AES blokové ²if°e. Pro ²ifru se jako implicitní pouºívá 128-bitový klí£, jelikoº pouºití v¥t²ích klí£· vyºaduje nutnou instalaci soubor· pro kryptograi.
4
Jedná se o £ipovou kartu, na kterou lze nahrát Java algoritmus, v tomto p°ípad¥ Applet
12KAPITOLA 2.
ZABEZPEENÍ A SPOLEHLIVOST ELEKTRONICKÝCH VOLEBNÍCH SYSTÉM
Kapitola 3
Analýza Tato £ást se v¥nuje shrnutí prozatimního stavu projektu, výb¥rem nejlep²ích °e²ení pro danou situaci a od·vodn¥ní pouºití t¥chto °e²ení. Jelikoº se autor projektu Elektronické volby[8] Tomá² erevka k implementaci terminálové £ásti systému v·bec nedostal, a neexistuje tedy ºádná dosavadní implementace, je nutné za£ít tuto £ást budovat od za£átku.
3.1
Poºadavky
3.1.1 Funk£ní poºadavky • Systém bude umoº¬ovat tajné hlasování • Voli£ bude moci do systému zadat práv¥ jeden hlas • Systém bude obstarávat prvotní autentizaci voli£· pomocí otisku prstu • Systém bude obstarávat dopl¬kovou autentizaci voli£· podle PINu • Systém bude odesílat jednotlivé hlasy serveru • Systém po ukon£ení komunikace se serverem pouºitá data zahodí, neukládá si je • Systém bude umoº¬ovat p°epnutí své funkce mezi volebním terminálem a terminálem pro úpravu osobních detail·
3.1.2 Nefunk£ní poºadavky • Systém bude implementován v jazyce Java SE • Klient bude se serverem komunikovat p°es protokol HTTPS • Reakce systému na akci voli£e bude co nejrychlej²í v °ádu milisekund • Systém bude snadno instalovatelný na terminál
13
14
3.2
KAPITOLA 3.
ANALÝZA
P°ípady uºití
P°ípady uºití p°edstavují prost°edek pro specikaci posloupnosti £inností,které m·ºe systém vykonat prost°ednictvím interakce s externími aktéry. Tato kapitola se v¥nuje p°eváºn¥ zp·sobu práce s navrhovaným systémem. Pro jasné vymezení restrikcí daných v rámci aplikace je nutné pokusit se zachytit ve²keré moºné situace, které mohou nastat b¥hem provozu, aby v pozd¥j²í fázi návrhu nebylo zji²t¥no, ºe byly opomenuty n¥které p°ípady vyuºití systému, které hrají v celkové funk£nosti zna£nou roli. Diagramy rovn¥º p°ehledn¥ popisují chování terminálu a jeho reakce na p°íchozí události. Od této £ásti bylo pro správnost návrhu pracováno s knihou UML2 a unikovaný proces vývoje aplikací [2]autor· Jima Arlowa a Ily Neustadt, ve které je mnoho uºite£ných rad a doporu£ení pro tvorbu schémat a diagram·. Jednotlivé diagramy byly vytvá°eny v programu Enterprise Architect [16], jehoº licenci poskytuje VUT student·m po dobu studia zdarma.
3.2.1 Akté°i V této podsekci jsou zmín¥ni akté°i obsluhující systém. Jsou zde rovn¥º popsány jejich uºivatelská práva související se systémem a popsány scéná°e pro v²echny £innosti, které v systému vykonávají.
Voli£ Voli£ zde p°edstavuje hlavního uºivatele systému. Je jedinou fyzickou osobou, která bude po zavedení systému tento obsluhovat. Po p°ihlá²ení mu budou automaticky nastaveny priority a povolení a tak bude moci skrze terminál komunikovat se serverem. Po odhlá²ení budou ve²kerá uºivatelova data zahozena a nedohledateln¥ smazána, aby se zamezilo moºnosti zneuºití.
Administrátor Administrátor plní roli správce systému. Náplní jeho interakce je p°edev²ím zm¥na terminálové funkce. Terminál je moºné p°epnout do dvou odli²ných funkcí, jedna slouºí pro samotné hlasování a je ozna£ena jako Volební terminál, druhá slouºí p°edev²ím pro úpravu osobních údaj· vygenerovaných systémem a rovn¥º pro pozd¥j²í úpravy uºivatelského ú£tu a je ozna£ena jako Terminál pro úpravu osobních údaj·. Tato funkce bude vybrána p°i zavád¥ní terminálu a v pr·b¥hu volební události bude m¥n¥na jiº pouze v krajní nutnosti. Administrátor bude poté pouze °e²it vzniklé potíºe, které mohou nastat.
3.2.2 Diagram p°ípad· uºití Tento diagram zobrazuje jednotlivé aktéry, kte°í se systémem pracují. Pro jednotlivé aktéry je zde rovn¥º soupis v²ech aktivit, které mohou v rámci aplikace vykonávat.
3.3.
15
SCÉNÁE
Obrázek 3.1: P°ípady uºití
3.3
Scéná°e
Scéná°e p°edstavují jakousi ²ablonu pro specikaci p°ípad· uºití. V této £ásti jsou rozebrány scéná°e pro jednotlivé p°ípady uºití. Jsou zde rovn¥º popsány ú£astníci jednotlivých scéná°· a zp·sob, jakým se systémem pracují. Popsán je tu vstupní stav, akté°i, kte°í do p°ípadu uºití vstupují a výstup, který je následn¥ vyprodukován.
3.3.1 Úprava vygenerovaných p°ihla²ovacích údaj· Akté°i : Voli£
16
KAPITOLA 3.
ANALÝZA
• Vstup : Voli£ zaregistrovaný k volební akci • Výstup: Voli£ s dokon£enou registrací p°ipravený volit • Kroky: 1. Voli£ se p°ihlásí na terminálu pro zm¥nu údaj· zadáním vygenerovaných údaj·. 2. Systém zkontroluje údaje, pokud nesouhlasí, oznámí toho voli£i. 3. Pokud údaje souhlasí, systém zobrazí voli£i dialog pro jejich zm¥nu. 4. Voli£ zm¥ní povinné údaje. 5. Systém zkontroluje, zda byly v²echny nutné poloºky vypln¥ny a výsledek oznámí voli£i. 6. Systém odhlásí voli£e.
3.3.2 P°ihlá²ení do systému Akté°i : Voli£
• Vstup : Voli£ registrovaný pomocí registra£ního systému • Výstup: P°ihlá²ený uºivatel oprávn¥ný volit • Kroky: 1. Voli£ zadá do systému svoje uºivatelské jméno a PIN. 2. Systém zadaná data zkontroluje, pokud nesouhlasí, oznámí toto voli£i. 3. Pokud údaje souhlasí, zobrazí systém dialog pro ov¥°ení otisku prstu. 4. Voli£ p°iloºí prst ke £te£ce. 5. Systém vyhodnotí, zda otisky odpovídají. 6. V p°ípad¥ neshody je voli£ systémem poºádán o opakované ov¥°ení otisku. 7. V p°ípad¥ shody otisk· zobrazí systém voli£i potvrzovací zprávu. 8. Systém zobrazí hlavní obrazovku.
3.3.3 Zobrazení volebního lístku Akté°i : Voli£
• Vstup : Voli£ p°ihlá²ený do systému • Výstup: Zobrazený seznam volitelných moºností • Kroky: 1. Voli£ si zvolí poºadovanou událost, pro kterou chce zadat sv·j hlas. 2. Voli£ stiskne tla£ítko reprezentující vybranou událost. 3. Systém zobrazí volební lístek pro vybranou volební událost.
3.3.
SCÉNÁE
17
Za²krtnutí kandidát· a odeslání volebního lístku Akté°i : Voli£
• Vstup : Nevypln¥ný volební lístek • Výstup: Odeslaný lístek, jehoº p°ijetí je potvrzeno serverem • Kroky: 1. Zahrnout (Zobrazení volebního lístku). 2. Voli£ vyplní volební lístek. 3. Voli£ stiskne tla£ítko pro odeslání lístku. 4. Systém zobrazí voli£i needitovatelnou formu volebního lístku. 5. Voli£ zkontroluje za²krtnuté volby. 6. Pokud je n¥co ²patn¥, voli£ stiskne tla£ítko pro návrat do formulá°e volebního lístku a upraví jej. 7. Pokud je v²e v po°ádku, voli£ stiskem tla£ítka potvrdí odeslání hlasu. 8. Systém zobrazí potvrzení o p°ijetí volebního lístku.
Odhlá²ení ze systému Akté°i : Voli£
• Vstup : Voli£ p°ihlá²ený do systému • Výstup: Voli£ odhlá²ený ze systému • Kroky: 1. Voli£ zvolí moºnost odhlá²ení ze systému. 2. Systém zobrazí dialog s dotazem, zda se voli£ chce skute£n¥ odhlásit. 3. Voli£ potvrdí nebo zru²í svou volbu. 4. Systém odhlásí voli£e ze systému a smaºe záznam o n¥m. 5. Systém zobrazí informaci o úsp¥²ném odhlá²ení. 6. Systém zobrazí p°ihla²ovací obrazovku.
Zm¥na funkce terminálu Akté°i : Administrátor
• Vstup : Terminál slouºící implicitn¥ jako volební • Výstup: Terminál zastávající zvolenou funkci • Kroky:
18
KAPITOLA 3.
ANALÝZA
1. Administrátor zadá své p°ihla²ovací údaje do systému 2. Systém zobrazí dialog, který obsahuje tla£ítka reprezentující jednotlivé funkce 3. Administrátor vybere stiskem tla£ítka zvolenou funkci. 4. Systém zobrazí aktuální funkci terminálu. 5. Administrátor zav°e dialog pro úpravy funkce terminálu. 6. Systém zobrazí p°ihla²ovací obrazovku. 3.4
Doménový model
V této £ásti je podrobn¥ji rozebrán problém doménového modelu. Jsou zde zobrazeny jednotlivé t°ídy, které bude systém vyuºívat, a jejich vzájemné vztahy. Jelikoº bude tento systém z velké £ásti vyuºívat doménový model Serverové £ásti projektu Elektronické volby [5]Petra Hlavá£ka, popisuji tu pouze £ásti modelu, které jsou pro daný systém relevantní, celkový model je po p°ípad pot°eby p°iloºen v p°íloze B. V této práci se lze dozv¥d¥t, k jakým p°esným zm¥nám v projektu od p·vodní £ásti do²lo a jaký m¥ly tyto zm¥ny vliv. V práci je rovn¥º zobrazen p·vodní doménový model, který na konci textu sám autor p·vodního návrhu doporu£il p°epracovat.
3.4.
19
DOMÉNOVÝ MODEL
Obrázek 3.2: Doménový model
3.4.1 Popis jednotlivých entit Kaºdá entita p°edstavuje n¥jakou £ást systému, která má zásadní vliv na jeho funk£nost. V následujících odstavcích jsou jednotlivé entity popsány a jejich chování vysv¥tleno.
3.4.1.1 User Tato entita popisuje skute£ného voli£e, který je p°ihlá²en do systému. Na obrázku doménového modelu je vid¥t, ºe voli£ nemá v systému ºádnou asociaci s volebním lístkem £i volitelnou moºností. Je tomu tak, protoºe je t°eba zajistit tajnost voleb, a tudíº nem·ºe existovat ºádné p°ímé spojení uºivatele s jeho soukromou volbou. Nicmén¥, voli£ je svázán s t°ídou Election, £ímº denujeme, ve kterých volbách je registrovaný. Jeho spojení s volební událostí je pak vyuºito k tomu, aby se zaznamenalo, ºe voli£ jiº v rámci dané události odevzdal sv·j hlas
20
KAPITOLA 3.
ANALÝZA
a ten byl systémem p°ijat v po°ádku. Je zde rovn¥º znázorn¥n seznam atribut·, kde jméno, p°ijmení,id a email jsou povinné. Kone£n¥ uºivatelské jméno a heslo jsou p°i vzniku voli£e neinicializované, k jejich nastavení dochází aº v p°ípad¥, ºe se voli£ dostaví k volební události a po ov¥°ení identity dokon£í svou registraci v registra£ním systému.
3.4.1.2 Election Ticket P°edstavuje volební lístek, který má voli£ vºdy k dispozici pouze jeden. Tento lístek je mu vytvo°en po p°ihlá²ení a m·ºe do n¥ho p°idávat sv·j výb¥r. Parametr multipleOptions p°edstavuje moºnost voli£e za²krtnout více moºností. Tento parametr se li²í vºdy podle typu a zp·sobu vyhodnocování voleb. Volební lístek je p°i°azen k volební události. Tohoto faktu je následn¥ vyuºito p°i vyhodnocování voleb, kdy se vezmou v²echny volební lístky p°i°azené k dané akci a spo£ítají se tak výsledky. Voli£ má rovn¥º moºnost odeslat prázdný volební lístek, který se vºdy zpracovává podle specik volebního systému dané události a také lze je²t¥ odeslat neplatný hlas. Tato moºnost je realizována, tak, ºe se p°i vytvá°ení volebního lístku nastaví p°íznak invalid na hodnotu true. Vazba volebního lístku s moºností je zde pro uloºení seznamu moºností, které voli£ na daném lístku za²krtnul.
3.4.1.3 Option Zastupuje moºnost, která se uºivateli naskýtá k výb¥ru. Kaºdá moºnost má své jméno. Pokud moºnost zastupuje jednotlivé kandidáty voleb, je je²t¥ v systému provázána s entitou Candidate, která se ji p°i°adí. jedná-li se pouze o textovou moºnost nebo výb¥r z jiné oblasti nap°íklad o n¥jakou otázku, je moºné díky atributu description vloºit k této moºnosti n¥jaký textový popis, který zastává nyní funkci obsahu.
3.4.1.4 Role Tento vý£tový typ p°edstavuje roli uºivatele v systému. V úvahu zde p°ipadají dv¥ moºnosti, a to Voli£ a Administrátor. Voli£ p°edstavuje klasického ú£astníka, který má právo zadávat do systému své hlasy a odesílat je ke zpracování systému. Administrátor poté spravuje volební terminál jako celek. Je mu umoºn¥no nastavovat funkci volebního terminálu a nastavovat jeho vlastnosti p°i zavád¥ní.
3.4.1.5 Additionals Tato t°ída v sob¥ uchovává dodate£né informace o uºivateli, vnit°ní reprezentace t¥chto dat je realizována pomocí javovské kolekce Map, která umoº¬uje ukládat páry hodnot String v podob¥ klí£,hodnota, kde klí£ p°edstavuje název atributu a hodnota pochopiteln¥ jeho hodnotu. Velikost této mapy není nijak omezena, tudíº je moºné ke kaºdému voli£i uloºit libovolné mnoºství atribut·.
3.4.
DOMÉNOVÝ MODEL
21
3.4.1.6 Election Entita reprezentující samotné volby. Tyto mají v sob¥ uloºen seznam v²ech voli£·, kte°í jsou v jejich rámci zaregistrováni a mají tedy právo se jich ú£astnit. Kaºdé volby mohou mít n¥kolik volebních událostí, které p°edstavují podmnoºinu celých voleb. z výsledk· jednotlivých událostí vzejdou výsledky celých voleb. Tato t°ída má v sob¥ uloºen rovn¥º popis a sv·j název.
3.4.1.7 Election Event P°edstavuje volební událost v rámci voleb. Ukládá si informace, jako nap°íklad data jejího za£átku, konce, zapo£etí volení, jméno volební události a dal²í dopl¬ující informace. Tato t°ída má vazbu na volební lístek p°edev²ím pro uchovávání v²ech obdrºených hlas· a rovn¥º na volební moºnost, £ímº je jednozna£n¥ ur£eno, které moºnosti bude moºno v této události volit. Tento seznam se zobrazí uºivateli p°i vypl¬ování samotného volebního lístku.
22
KAPITOLA 3.
ANALÝZA
Kapitola 4
Návrh °e²ení 4.1
Technologie
V této £ásti se podrobn¥ji podíváme na vyuºité technologie, pomocí kterých bude práce realizována. Jsou zde popsány technologie pouºité k vývoji samotné aplikace, k autentizaci pomocí otisku prstu nebo pro komunikaci se serverovou £ástí. Technologie, které jsou vyuºity k realizaci serverové £ásti jsou rovn¥º lehce nastín¥ny a nakonec jsou zím¥ny nástroje pro verzování projektu, udrºování p°ehlednosti, zp·sobu komunikace s databází, její typ a vlastnosti.
4.1.1 Server Implementací a návrhem serverové £ásti se zabývá práce Petra Hlavá£ka [5], o jejímº modelu byla zmí¬ka v p°edchozí kapitole. Serverová £ást je realizována v jazyce Java, konkrétn¥ je to Java EE, která slouºí pro vývoj webových aplikací. Serverová £ást obstarává pro klienta d·leºité prvky, jako vymezení moºností, které má voli£ p°i své volb¥ k dispozici, zakládá akce a vytvá°í celkovou funk£nost systému. S terminálovou £ástí má server spole£nou databázi, odkud získává informace o jednotlivých ú£astnících spole£n¥ se seznamem jejich oprávn¥ní v systému. Jedná se o nosnou aplikaci celého systému. Aplikace pouºívá aplika£ní server Glasssh[10], jehoº dokumentace je dostupná na uvedené adrese. Pouºití tohoto serveru je intuitivní a navíc je v kombinaci s javou velice efektivní.
4.1.2 Registra£ní £ást Pro zaregistrování uºivatel· do systému slouºí Registra£ní £ást systému Elektronické volby [6], na níº jsem spole£n¥ s Petrem Hlavá£kem, Ond°ejem Kulatým a t¥pánem korpilem pracoval v rámci p°edm¥tu A7B36SI2. Tento systém poskytuje gracké rozhraní pro vytvá°ení jednotlivých poloºek voleb v databázi, a´ uº jde o vytvo°ení nové volební akce £i volebního ú£astníka. Aplikace je realizována v Jav¥ SE a poskytuje rovn¥º moºnost importu uºivatel· a jejich správy v p°ehledném editoru. Pomocí této aplikace bude vºdy dokon£ena uºivatelská registrace na akci a vygenerovány p°íslu²né údaje pro aktuální ú£ast. Co se tý£e vylep²ení této £ásti, je nutné upravit registra£ní £ást tak, aby byla schopná ukládat do databáze otisky 23
24
KAPITOLA 4.
NÁVRH EENÍ
prst· jednotlivých ú£astník· a poskytovat je následn¥ pro ov¥°ení. Tato vlastnost bude realizována za pomoci SDK pro £te£ky otisk· prst·.
4.1.3 Databáze V²echny podsystémy vyuºívají databázi MySQL, která je v sou£asné dob¥ velice roz²í°ená. Poloºky v ní jsou následn¥ upravovány v jednotlivých systémech pomocí JDBC, které poskytuje Java platforma. Pro samotnou komunikaci s databází je pouºit framework jazyka Java s názvem JPA. V tomto projektu je vyuºita jeho implementace EclipseLink, která se jeví jako velice uºivatelsky p°ív¥tivá a navíc s ní má jiº autor práce lehkou zku²enost získanou v p°edchozím studiu, tudíº není nutné si na její vlastnosti tolik zvykat.
4.1.4 Programovací jazyk Jako programovací jazyk bude pouºit jazyk Java SE, konkrétn¥ ve verzi 7, která je vysoce p°enosná, spolehlivá a rovn¥º, coº je velkou výhodou, voln¥ dostupná na stránkách spole£nosti Oracle[15]. Dal²ím d·vodem pro tuto volbu je fakt, ºe v tomto jazyce je napsána i serverová £ást a tudíº je tato volba prakticky nutnou povinností z hlediska p°enositelnosti kódu.
4.1.5 Vývojové prost°edí Pro samotný vývoj aplikace bude pouºito vývojové prost°edí Netbeans, konkrétn¥ IDE ve verzi 7.1, které má velice intuitivní ovládání, nabízí nep°eberné mnoºství profesionálních funkcí a je rovn¥º zcela zdarma staºitelné ze stránek spole£nosti Oracle. Lze jej stáhnout v jednom archivu spole£n¥ s nejnov¥j²í verzí Javy, coº je dal²í velice p°íjemná vlastnost. Samotné prost°edí Netbeans poskytuje rozhraní pro práci s databází, serverem a rovn¥º také poskytuje rozhraní pro verzování projektu, coº je velice rovn¥º velice uºite£né.
4.1.6 te£ka P°i volb¥ £te£ky byla brána v potaz studie Tomá²e erevky, který doporu£uje ve své práci Elektronické volby [8] jako nejlep²í moºnou variantu za°ízení od rmy Digital persona[9], která poskytuje freewarovou licenci. Jediným neduhem tohoto °e²ení je fakt, ºe je nutné mít k tomuto SDK £te£ku p°ímo od uvedené rmy. Tyto £te£ky nejsou na £eském trhu zcela b¥ºné, a tak m·ºe tento fakt mít drobný vliv na pr·b¥h práce, kdy se pr·m¥rná doba odeslání ze zahrani£í pohybuje okolo 14 dn·. V²echny ostatní SDK jsou jiº zpoplatn¥ny pro kaºdou stanici, na které tento software pouºíváme, coº je pro ná² ú£el výrazn¥ nevhodné. na výb¥r bude ze dvou moºností, a to star²í verze Digital Persona U.Are.U 4000 nebo nov¥j²í verzi pod ozna£ením 4500. Výsledná volba bude záleºet p°edev²ím na tom, který typ bude v eské republice dostupný nebo který se poda°í obstarat ze zahrani£í. Samotný software lze do za°ízení stáhnout p°ímo ze stránek výrobce.
4.1.
TECHNOLOGIE
25
4.1.7 Repozitá° projektu Pro uchovávání jednotlivých verzí projektu a celkové centralizaci kódu bude vyuºit systém Google Code
, který je zcela zdarma a funguje velice spolehliv¥, kdyº umoº¬uje uºivateli nahrávat verze projekt·, poskytovat stáhnutelný obsah, dokonce nabízí moºnost procházení SVN repozitá°e p°es webové rozhraní a zárovne¬ lze vytvá°et milníky a kontrolovat jejich stav a pln¥ní. Tato sluºba je rovn¥º propojena s emailovou sluºbou, která udrºuje uºivatele informovaného o sou£asném d¥ní v projektu.
26
KAPITOLA 4.
NÁVRH EENÍ
Kapitola 5
Implementace Tato kapitola je v¥nována popisu pouºitých implementa£ních metod. Jsou zde zmín¥ny technologie pouºité pro realizaci jednotlivých £ástí aplikace a porovnány výhody a nevýhody zvolených °e²ení. Program je koncipován tak, aby byl co nejsnadn¥ji ovladatelný a intuitivní, ov²em v n¥kterých rozhodnutích byly tyto vlastnosti lehce odsunuty na úkor rychlej²í odezvy programu a men²í sloºitosti kódu. Jelikoº existuje mnoho typ· volebních systém· a zp·sob· vyhodnocování jejich výsledk·, bylo nutné implementovat nejprve vedoucím práce zadané typy. V tomto p°ípad¥ p°edstavovalo prioritu vytvo°ení terminálu pro Systém jednoho p°enositelného hlasu, který ve své práci[5] popisuje Petr Hlavá£ek. Volební terminál je pro hlasování v tomto typu akce p°ipraven a navíc jej lze v sou£asnosti vyuºít i k hlasování v systémech abolutní v¥t²iny. Rovn¥º by nem¥l být problém v p°ípad¥ pot°eby p°idat podporu pro dal²í typy voleb. V tomto p°pad¥ je ov²em nutné p°idat nový typ voleb do nabídky a upravit volební lístek dle pot°eby pro zadání nutných údaj·. Následující text shrnuje popis £ástí, které se p°i implementaci jevily jako problematické. Jednotlivé potíºe jsou vysv¥tleny a pokud existuje °e²ení £i jeho návrh, je tento rovn¥º sou£ástí dokumentu. 5.1
Databázové p°ipojení
Aplikace vyuºívá pro objektov¥ rela£ní mapování Java Persistence Api, konkrétn¥ jeho implementaci EclipseLink, která umoº¬uje vytvo°it databázi na základ¥ vztah· mezi vytvo°enými entitami a dal²ími nastavenými parametry.
5.1.1 Nastavení persistentní vrstvy Po vytvo°ení entit dle p°edpis· JPA je t°eba k projektu p°i°adit persistentní jednotku. Tuto volbu nabídne uºivateli ve v¥t²in¥ p°ípad· vývojové prost°edí. Takto zaloºený projekt je pak p°ipraven pro práci s entitami, jakoºto reprezentanty jednotlivých tabulek v databázi. Nastavení persistentní vrstvy je obsaºeno v souboru persistence.xml, kde jsou uchovávány informace o názvu databáze, vyuºívané persistentní knihovn¥ a strategii generování tabulek. Tato strategie udává postup, který se aplikuje p°i spu²t¥ní projektu. Lze nastavit t°i r·zné hodnoty: 27
28
KAPITOLA 5.
IMPLEMENTACE
•
Create - p°i volb¥ této strategie projde systém existující tabulky a pokud má být n¥jaká tabulka vytvo°ena, p°idá ji do seznamu (S daty se nic ned¥je).
•
Drop and Create - tato strategie na°izuje smazání v²ech tabulek v£etn¥ jejich obsahu a vytvo°ení nových dle poºadavk· entit
•
None - s databází se v tomto p°ípad¥nic ned¥je, v²e se nechá ve stavu, v jakém se p°i
spu²t¥ní nachází
5.1.2 Nastavení entit Aby p°ipojení k databázi fungovalo, je t°eba jednotlivým entitám p°idat anotace. Anotace jsou specické práv¥ pro JPA a pomocí nich lze nastavovat vlastnosti objekt· v databázi. Samotná entita, která má být reprezentována tabulkou, je ozna£ena anotací @Entity. Pomocí dal²ích anotací lze nastavovat zp·sob vytvá°ení databázových objekt·, volit, které záznamy jsou povinné a které ne, který atribut p°edstavuje primární klí£ a dal²í.
5.1.3 Problémy p°i realizaci persistence P°i vývoji projektu byla postupn¥ objevována n¥která úskalí a omezení spjatá práv¥ s JPA. V¥t²ina z nich byla v pr·b¥hu práce odstran¥na, nicmén¥ n¥která byla pom¥rn¥ závaºná a zpomalila pr·b¥h vývoje na del²í dobu. V pozdní £ásti tvorby bylo po konzultaci s vedoucím práce rozhodnuto, ºe jako prirotní systém k implementaci bude vytvo°en systém jednoho p°enositelného hlasu. Tento systém je specický tím, ºe je nutné k jednotlivým zvoleným moºnostem p°i°adit preferen£ní £íslo. Toto £íslo, které voli£ vybere kaºdému zvolenému kandidátovi, p°edstavuje jeho preferované po°adí, které je dále na serveru vyhodnocováno. Pro ukládání dvojic objekt·, kdy jeden p°edstavuje preferenci a druhý objekt volenou moºnost, vedlo v²e k pouºití t°ídy java.util.Map, která dokáºe p°esn¥ takovéto dvojice dat pojmout. V této fázi vývoje obsahovala t°ída zastupující volební lístek seznam zvolených moºností uºivatelem ve form¥ java.util.Map a bylo pokra£ováno v postupu. Ve chvíli, kdy ov²em nastala nutnost volební lístek zpracovat, byly zji²t¥ny potíºe s ukládáním zvolených moºností prost°ednictvím persistentní vrstvy. Ta ukládala objekt s chyb¥jícími údaji, p°i jejichº pozd¥j²ím zpracování se objevovaly r·zné potíºe zp·sobené ztrátou informace. Tento problém byl postupn¥ konzultován s n¥kolika vyu£ujícími a vyhledáván na internetu, ale nakonec se ukázalo, ºe v projektu vyuºívaná implementace JPA, EclipseLink, persistentní zpracování java.util.Map jako takové nepodporuje. D·vodem p°ehlédnutí tohoto problému na za£átku vývoje byl fakt, ºe jisté vyuºití java.util.Map existuje a je obsaºeno v mnoha ukázkových p°íkladech, ov²em je nutné vyuºívat jako klí£ mapy n¥jaký z atribut· t°ídy, která je uloºena jako hodnota v map¥. Fakt, ºe s touto datovou strukturou nebude moci být pracováno znamenal pro vývoj citelnou ztrátu £asu, kdyº musel být upraven datový model a p°epsána logika aplikace. Nicmén¥ toto chybu neomlouvá, dokumentace o ukládání kolekcí jazyka Java m¥la být lépe prozkoumána p°i návrhu software.
5.1.4 e²ení problému Jak bylo jiº nazna£eno v textu vý²e, byla pon¥kud obm¥n¥na logika aplikace a upraven datový model. Entita volebního lístku nyní obsahuje dal²í podt°ídu, která v systému p°edstavuje
5.2.
PREZENTANÍ VRSTVA
29
uºivateli zvolené poloºky na lístku spole£n¥ se zvolenými preferen£ními £ísly. Tato podt°ída byla nazvána TicketItem(poloºka lístku) a je na n¥m uloºena v kolekci List. Takto se docílilo vyhnutí se probémové implementaci zahrnující java.util.Map a ukládání bylo zprovozn¥no, takºe jiº v²e funguje. 5.2
Prezenta£ní vrstva
K vlastní implementaci GUI je pouºit výhradn¥ Swing, který poskytuje pot°ebné komponenty pouºitelné v aplikaci. GUI je vytvo°ené ru£n¥, k jeho vzniku nebyl pouºit editor, který obsahuje vývojové prost°edí. Tento postup byl aplikován p°edev²ím kv·li v¥t²í kontrole, kterou uºivatel nad prezenta£ní vrstvou má, jelikoº mu je garantován p°ístup k celému kódu a lze jej jednodu²eji editovat.
5.2.1 Zp·sob p°ihla²ování uºivatele Uºivatel se do systému p°ihlásí pomocí svých údaj· a v p°ípad¥, ºe odpovídají údaj·m uloºeným v systému, postoupí uºivatel k druhé £ásti validace, p°ihlá²ení pomocí otisku prstu. Pokud uºivatel oskenuje ²patný prst nebo je vzorek nekorektní, zobrazí systém zprávu obsahující upozorn¥ní. V²echny systémové výjimky jsou slou£eny ve t°íd¥ TerminalException, která je na pot°ebných a rizikových místech testována a odchytávána. Nad systémem p°ihla²ování byla vedena dlouhá diskuse, p°i které byly zvaºovány r·zné moºnosti. Implementován byl nakonec zp·sob dvojího p°ihla²ování. Tento systém je výhodný zejména díky jednoduchosti vyhledávání, jelikoº pokud uºivatel projde prvním kolem ov¥°ení identity, systém provádí následn¥ jiº porovnání otisku prstu stylem 1:1. coº je výhodné zejména pro vyhledávání souboru s otiskem v databázi, kdy sta£í stáhnout pouze jedne soubor. Otázka bezpe£nosti je zde pon¥kud irelevantní, jelikoº bezpe£nost, kterou zaji²´uje otisk prstu, který p°edstavuje unikátn, nezpochybnitelný vzorek, je prakticky stoprocentní, není z°ejm¥ nutné vyzdvihovat bezpe£nostní funkci p°ihla²ovacích údaj·. Nicmén¥ kombinace t¥chto dvou údaj· jiº potencionální moºnost chyby systému tém¥° dokonale potla£uje.
5.2.2 P°izp·sobení pro r·zné typy voleb Systém je sice dle zadání koncipován pouze pro zp·soby voleb ur£ených vedoucím práce, ale je zajisté pot°eba, aby byl navrºen tak, aby bylo v budoucnu moºné jej roz²í°it o dal²í zp·soby voleb. Jelikoº bylo primárním cílem práce navrhnout volební terminál pro propor£ní volební systém, konkrétn¥ se jedná o Systém jednoho p°enositelného hlasu, který ve své práci[5] popisuje Petr Hlavá£ek, byla v¥t²ina £asu v¥nována práv¥ tomuto typu voleb. Ve vý²e popsaném volebním systému je nutné umoºnit voli£·m krom¥ samotného zvolení jednotlivých kandidát· také p°i°azení preferen£ního £ísla kaºdému ze zvolených. Výsledná podoba volebního lístku byla prokonzultována s vedoucím práce a v sou£asné podob¥ umoº¬uje sysém voli£i odeslat t°i typy volebních lístk·: vypln¥ný volební lístek, prázdný volební lístek a neplatný volební lístek. Samotné zapo£ítání hlasu se pak jiº r·zní dle typu vyhodnocování voleb. Ve volebním lístku jsou zobrazeni v²ichni kandidáti. Pro zvolení daného kandidáta je nutné za²krtnout checkbox vedle jeho jména, coº zobrazí roletkové menu , kam uºivatel zadá
30
KAPITOLA 5.
IMPLEMENTACE
preferen£ní £íslo. Jedná se o pon¥kud sporné °e²ení, jelikoº pro n¥které nezku²ené uºivatele by mohl být problém systém zadávání preferencí pochopit, ov²em jiná °e²ení m¥la rovn¥º své chyby, tudíº bylo rozhodnuto o ponechání roletkového menu s p°idáním popisku, který by m¥l pomoci voli£i s orientací. Po vypln¥ní lístku je uºivatel vyzván ke kontrole odesílaného lístku, £ímº se systém snaºí p°edejít chyb¥ ze strany uºivatele. 5.3
Práce s otisky prstu
Jako vstupní za°ízení pro snímání otisk· prstu byla vybrána £te£ka od rmy Digital Persona [9], konkrétn¥ model U.are.U.4500, který byl zvolen jako nejvhodn¥j²í kompromis mezi cenou a kvalitou. Jak jiº zmi¬uje p°edchozí kapitola, rma Digital Persona dodává ke svým za°ízením voln¥ dostupné SDK, které bylo v této práci také vyuºito. Jeho prost°ednictvím poskytuje spole£nost uºivateli knihovny, pomocí kterých je schopen získat otisk prstu sejmutý za°ízením a ten dle p°ání uºivatele zpracovat. Jednotlivé procesy spojené s otiskem prstu jsou popsány v následujících podkapitolách. V této £ásti se nevyskytlo mnoho problém·, nicmén¥ se jedná o neobvyklou proceduru ve vytvá°ené aplikaci, tudíº je zde celý proces více popsán zejména pro ú£el seznámení se s funkcí.
5.3.1 Uloºení otisku prstu Otisk prstu je v systému reprezentován jako ²ablona, kterou umí £te£ka zpracovat. Uºivatel m·ºe zvolit, kolik vzork· otisku prstu je t°eba získat, neº bude ²ablona vytvo°ena, výrobce doporu£uje £ty°i vzorky p°edev²ím proto, ºe proces získání tohoto mnoºství není p°íli² zdlouhavý a tento po£et jiº zaru£uje, ºe bude získaný obraz kvalitní. ablona vzniká jako spojení v²ech vloºených vzork· z d·vodu v¥t²í p°esnosti rozpoznání a rovn¥º spolehlivosti p°i porovnávání. Pro její vytvo°ení se v poskytované knihovn¥ vyskytuje t°ída DPFPTemplateFactory, který vytvo°í instanci ²ablony. V databázi je poté otisk prstu reprezentován jako bajtové pole, které je zde uloºeno pro kaºdého voli£e. P°i uloºení ²ablony je vytvo°en speciální soubor, který je p°eveden na FileOutputStream a následn¥ serializován. Posledním krokem je transformace takto vzniklého souboru na bajtové pole a uloºení do databáze. Program je rovn¥º o²et°en pro p°ípad, ºe by se uºivatel pokusil nap°íklad oskenovat v kaºdém pr·chodu jiný prst nebo by byl výsledný vzorek nekvalitní. V takovém p°ípad¥ není vzorek uloºen, uºivatel je o tom informován a je mu oznámeno, ºe je t°eba zadat otisk znovu. Z v¥t²í £ásti se tak p°edejde problém·m p°i ov¥°ování totoºnosti. Administrátor není povinen vkládat do systému sv·j otisk, jelikoº náplní jeho práce se systémem je pouze zm¥na funkce volebního terminálu.
5.3.2 Ov¥°ení otisku prstu P°i ov¥°ování otisku prstu je pouºit velmi podobný postup jako p°i jeho ukádání. Pomocí persistentní vrstvy je získáno z databáze bajtové pole p°edstavující soubor se ²ablonou otisku prstu. Následn¥ je pomocí t°ídyí DPFPTemplateFactory vytvo°ena instance ²ablony zpracovatelná £te£kou otisku prstu, do které je uloºen soubor deserializací bajtového pole. Takto vzniklá ²ablona je poté poskytnuta k porovnání. V p°ípad¥ shody je uºivatel p°ihlá²en do
5.3.
31
PRÁCE S OTISKY PRSTU
systému, v opa£ném p°ípad¥ je zobrazena chybová hlá²ka a uºivatel je povinnen oskenování prstu opakovat. P°i ov¥°ování otisku je jiº t°eba pouze jeden vzorek, coº urychluje práci se systémem. Pro zaji²t¥ní maximální bezpe£nosti je k dispozici ukazatel FAR, který ur£uje maximální povolenou chybu p°i ov¥°ování. tento parametr je moºné nastavit ve funkci ov¥°ování dle pot°eby. Následující tabulka zobrazuje p°ípustné hodnoty FAR a odpovídající hodnoty p°esnosti. Tato tabulka je £áste£n¥ p°evzatá z manuálu, dodávaného se £te£kou, poskytnutého spole£ností Digital Persona.
Hodnota atributu
Popis
Nejp°ísn¥j²í porovnávání, které nepovoluje sebemen²í rozdíl porovnáHIGH_SECURITY_FAR vaných vzork·, vyuºití zejména v p°ísn¥ st°eºených aplikacích St°ední porovnání vzork·, pro b¥ºné MEDIUM_SECURITY_FAR vyuºití Nejniº²í hodnota zejména pro testovací ú£ely, m·ºe dojít k nesprávLOW_SECURITY_FAR nému ur£ení Kaºdý vzorek, který je ov¥°ován je PROBABILITY_ONE povaºován za správný
Pravd¥podobnost chyby 1/1000000 1/100000 1/10000 Vºdy ur£í výsledek jako správný
Tabulka 5.1: Tabulka moºných hodnot FAR s odpovídající pravd¥podobností chyby
5.3.3 Problémy spojené s ov¥°ováním otisku prstu I kdyº se jedná o pom¥rn¥ bezproblémov¥ implementovatelnou £ást, p°edev²ím díky velmi podrobnému manuálu poskytovanému výrobcem, který popisuje v²echna moºná úskalí a obsahuje i jistou formu návodu, jak postupovat p°i vytvá°ení aplikace umoº¬ující ov¥°ení, nebylo moºné se problém·m vyhnout ani zde. Nejedná se o problém spojený se samotným ov¥°ením £i jeho implementaci, nicmén¥ je spojen práv¥ s problematikou ov¥°ování otisku prstu, tudíº je popsán práv¥ zde. Necelých dvacet dní p°ed odevzdáním práce bylo zji²t¥no, ºe návrh systému ve své podob¥ obsahuje bezpe£nostní trhlinu. Jde o návrh samotného procesu po p°íchodu uºivatele k volbám. V sou£asnosti jsou uºivateli vygenerovány údaje, které si je nucen zvolit u p°íslu²ného terminálu, kde rovn¥º zadá sv·j otisk prstu pro pozd¥j²í ov¥°ení. Pokud by ov²em n¥kdo z voli£· p°edal své osobní údaje cizí osob¥, bylo by této umoºn¥no otisk p·vodního majitele p°epsat svým vlastním a poté p°i samotné volb¥ by mohl tento uºivatel hlasovat za ostatní. Tato moºnost nebyla v prvotním návrhu aplikace obsaºena, tudíº není systém schopen toto n¥jak eliminovat. Bylo p°edneseno n¥kolik návrh·, jak systém upravit, aby se tomuto faktu zamezilo, jako nap°íklad zakázat zm¥nu otisku prstu po prvotní zm¥n¥ údaj· £i n¥jaký zp·sob kontroly, zda opravdu volí osoba, která je ve volbách zaregistrována, nicmén¥ tato °e²ení by bu¤ problém neeliminovala nebo naopak omezovala soukromí voli£e, jelikoº by nebyla jiná moºnost neº sledovat d¥ní za plentou a kontrolovat, zda se uºivatel p°ihla²uje skute£n¥ pouze k jednomu ú£tu.
32
KAPITOLA 5.
IMPLEMENTACE
e²ení tohoto problému není v práci zaznamenáno, jelikoº by to p°edstavovalo zm¥nu celého procesu fungování aplikace a dlouhému zamy²lení nad dal²ími negativy, která by nový systém dokon£ování registrace p°inesl, coº by znamenalo nutnost velkého zásahu do registra£ní £ásti. Jelikoº se na tento fakt p°i²lo pozd¥, bylo toto projednáno s vedoucím práce a ponecháno pro dal²í moºné úpravy p°i následných pracech na vylep²ení tohoto systému. 5.4
P°ipo jení k serveru pomocí HTTPS protokolu
Tato £ást se v¥nuje z v¥t²í £ásti popisu realizace p°ipojení k terminálové £ásti pomocí protokolu HTTPS a problém·, které p°i pokusu o p°ipojení nastaly.
5.4.1 P·vodní plán propojení £ástí systému V prvotním návrhu aplikace byla °e²ena otázka realizace propojení obou podsystém· p°es bezpe£ný kanál. Jelikoº byly ob¥ £ásti, jak serverová, tak terminálová vytvá°eny separátn¥, nebylo z po£átku moºné fuk£nost celku p°i propojení n¥jakým zp·sobem otestovat. P°i vývoji terminálové £ásti byly nejprve pomocí funkce keytool, kterou disponuje vývojové prost°edí jazyka Java, vytvo°eny dva certikáty, jeden pro kaºdou pod£ást systému. V terminálové £ásti byly obsaºeny t°ídy obsluhující p°ipojení a komunikaci s testovacím serverem, který nem¥l jinou funkci, neº obdrºená data pro kontrolu vypsat. V t¥chto podmínkách v²e fungovalo a ze systému bylo moºné bez potíºí entity odesílat na zku²ební server. Po uvedení obou projekt· do stavu, kdy bylo jiº moºné spolupráci obou celk· otestovat bylo realizováno zku²ební p°ipojení, p°i kterém ov²em oba systémy odmítaly komunikovat. Nakonec se ukázalo, ºe se jedná o nevhodné °e²ení komunikace, jelikoº v dosavadním stavu pracovala terminálová £ást tak, ºe odesílala serializovaná data na zabezpe£ený socket, na jehoº druhém konci byla data p°ijímána. Z d·vodu nezku²enosti propojení aplikace napsané v jazyce Java SE s aplika£ním serverem Glasssh[10] bylo bohuºel zvoleno ²patné °e²ení. Ukázalo se totiº, ºe pro moºnost odeslání volebního lístku p°es sí´ je nutné, aby serverová £ást spou²t¥la t°ídu obsluhující komunikaci, ov²em na tomto typu aplikace není moºné za b¥hu spou²t¥t ºádné p°ídavné t°ídy, jelikoº po jejím nasazení stále b¥ºí aº do vypnutí uºivatelem.
5.4.2 e²ení problému s propojením Vý²e popsaný problém byl vy°e²en zm¥nou v návrhu aplikace, kdy v sou£asné podob¥ komunikace funguje tak, ºe je na serverové £ásti nasazen EJB modul, ke kterému se terminálová £ást vzdálen¥ p°ipojuje. Terminálová £ást vyuºívá entity práv¥ tohoto modulu, který má p°ístup do spole£né databáze b¥ºící na serveru elektronických voleb. Pro získávání dat z databáze byly vytvo°eny takzvané Services, coº jsou t°ídy, které p°edstavují business logiku komunikující nad datovou vrstvou. Bohuºel i toto °e²ení s sebou p°iná²í jistá úskalí. Jelikoº se pro v²echny dotazy, které systém vytvá°í musí vzdálen¥ p°ipojovat na server, do²lo tímto krokem k výraznému zpomalení chodu apikace, kdy musí p°i kaºdé akci poºadující získání záznam· z databáze vytvá°et vzdálen¥ dotazy. Pro drobné prodlevy v p°ipojení aplikace tedy nedosahuje takové rychlosti odezvy, jako tomu bylo, kdyº byly vyuºívány t°ídy vlastní. Tomuto problému by se z°ejm¥ dalo £áste£n¥ p°edejít tak, ºe by v²echna pot°ebná data uºivatele a záznamy o akcích ve kterých je registrován byla získána najednou a uloºena
5.5.
ZM
NY PROVEDENÉ OPROTI PRVOTNÍMU NÁVRHU
33
v systému namísto stálého dotazování. Poté by se jiº v²e zobrazovalo pouze na základ¥ staºených údaj·. Na implementaci takovéhoto °e²ení ov²em jiº p°i vývoji nezbyl £as, tudíº je to jedna z moºností pro následné úpravy systému. 5.5
Zm¥ny provedené oproti prvotnímu návrhu
V této podkapitole jsou shrnuty jednotlivé rozdíly, které se vyskytují v sou£asné verzi oproti prvotnímu návrhu aplikace. Tato £ást je rozd¥lena podle umíst¥ní jednotlivých zm¥n, aby mohl být tyto snadno dohledány a prozkoumány.
5.5.1 Zm¥ny v doménovém modelu V doménovém modelu bylo oproti návrhu uskute£n¥no asi nejvíce obm¥n a úprav. Jelikoº se p°i vývoji aplikace objevovaly stále nové detaily, které nebyly p·vodn¥ odhaleny, musel být systém pr·b¥ºn¥ více £i mén¥ upravován. V textu vý²e jsou popsány problémy, které nastaly zejména p°i snaze o uloºení volebního lístku. Kv·li tomuto problému byla p°idána nová entita s názvem TicketItem, která p°edstavuje uºivatelem vybranou poloºku na volebním lístku. V ní je uloºen jak vybraný kandidát, tak i jeho zvolené preferen£ní £íslo. Dal²í zm¥nou je p°idání vý£tového typu TerminalFunction. Ten se neváºe na ºádnou entitu, slouºí pouze pro ur£ení stavu, ve kterém se momentáln¥ volební terminál nachází. V sou£asné podob¥ má pouze dv¥ hodnoty, a to Volební terminál a Terminál pro úpravy. Následn¥ bylo je²t¥ nutné upravit n¥kolik t°íd zejména p°idáním pot°ebných parametr·. Tyto zm¥ny byly pov¥t²inou pouze drobné.
5.5.2 Zm¥ny ve funk£nosti aplikace V návrhu nebylo rovn¥º po£ítáno s tím, ºe bude jako prioritní zp·sob vyhodnocování implementován systém jednoho p°enositelného hlasu, tudíº není v analýze zmínka o °e²ení tohoto problému. S tímto souvisí rovn¥º lehké úpravy grackého rozhraní oproti prvotnímu plánu. Nejv¥t²ím rozdílem oproti návrhu je ov²em vytvo°ení EJB modulu pro vzdálený p°ístup k serveru. Jeho p°ítomnost v projektu se stala nutností aº v okamºiku propojení, proto není v po£áte£ním plánu v·bec uveden. Jedná se o rozsáhlou úpravu systému zejména z hlediska funk£nosti aplikace, jelikoº se velký po£et operací odehrává vzdálen¥ p°es vytvo°ený komunika£ní kanál. Tento modul je nasazen na serverovou £ást, kde plní svou funkci, kdyº vzdálen¥ odpovídá na poºadavky terminálové £ásti a operuje nad spole£nou databází, která je p°ímo spojena se serverovou £ástí.
34
KAPITOLA 5.
IMPLEMENTACE
Kapitola 6
Testování V této kapitole jsou popsány jednotlivé zp·soby testování systému. Jelikoº je t°eba pro p°ihlá²ení a práci se systémem zadat otisk prstu, bylo obtíºné simulovat chod systému v reálném provozu. Z tohoto d·vodu se vytvo°ené testy v¥novaly p°edev²ím vyzkou²ení funk£nosti celého systému, odhalení jeho slabin a p°edností a výslednému zaznamenání v²ech post°eh·. Hlavní náplní bylo p°edev²ím testování s uºivatelem, jelikoº by jiné testy z°ejm¥ o aplikaci tolik nevypov¥d¥ly. V následujícím textu jsou popsány výsledky, kterých se dosáhlo, názory jednotlivých testovaných voli£· a vyvozené záv¥ry. 6.1
Testování s uºivatelem
Testování s uºivatelem je proces, p°i kterém je uºivateli poskytnuta aplikace v podzním stádiu vývoje. K této události je vytvo°en seznam úloh, které musí uºivatel splnit s co nejmen²í pomoci zku²ebního dozoru. Uºivatel je p°i tomto pokusu monitorován, sleduje se jeho mimika, psychické rozpoloºení a p°edev²ím jeho aktivita p°i práci se softwarem. Z testování je vytvo°en jednak log1 a p°edev²ím jsou zde shrnuty výsledky získané od jednotlivých uºivatel·, vyzvednuty odhalené problémy a ur£ena jejich d·leºitost, pop°ípad¥ moºný dopad na výsledný systém. Poté jsou výsledky procházeny podle priority problém· od nejv¥t²í a dle moºností bu¤ zapracovány do systému nebo s vysv¥tlením opomenuty. Aplikace byla p°edloºena t°em uºivatel·m, kte°í plnili následující úlohy.
6.1.1 Seznam úkol· 1. Pomocí obdrºených údaj· se p°ihla²te u p°íslu²ného terminálu a tyto údaje zm¥¬te 2. Ve stejném okn¥ jako v kroku 1 si je²t¥ p°idejte do systému otisk prstu. 3. Pomocí údaj·, které jste si nastavili se p°ihla²te k volebnímu terminálu. Následujte instrukce programu aº na hlavní stranu. 4. V seznamu voleb vyberte "Volby starosty m¥sta Smi°ice", ve kterých práv¥ probíhá volební událost s názvem "První kolo volby starosty". 1
LOG je záznam z testování, kdy se uvádí posloupnost aktivit uºivatele
35
36
KAPITOLA 6.
TESTOVÁNÍ
5. Vypl¬te volební lístek dle uváºení a ode²lete. 6. Po zadání hlasu se ze systému odhla²te.
6.1.2 Výstupy uºivatel· Následující text popisuje jednotlivé uºivatele, údaje o nich a poznatky z testování. O£íslovaný seznam je °azen podle po°adí úkol·, u kaºdého £ísla je poté vypsán seznam chyb uºivatele £i jeho stíºností. Log není kompletní, z°ejmé a triviální akce uºivatele jsou p°esko£eny pro v¥t²í p°ehlednost.
6.1.2.1 Uºivatel 1 •
V¥k: 22 let
•
Zku²enost s prací na PC: Vysoká
•
Pohlaví: Muº(n¥kolik hodin na PC kaºdý den)
Log 1. Úkol 1: Zm¥na údaj·
• Uºivatel zadává údaje do systému a p°ihla²uje se. • Vypl¬uje p°ihla²ovací údaje bez problém·. 2. Úkol 2: P°idání otisku prstu
• Uºivatel p°i zadání otisku p°ejíºdí prstem po £te£ce bez výsledku, neví si rady. • Dozor dává pokyn k p°idrºení prstu na sníma£i. • Uºivatel se s tímto faktem rychle vypo°ádá a zopakuje sejmutí n¥kolikrát dle pokynu programu. 3. Úkol 3: P°idání otisku prstu
• Uºivatel se k volebnímu terminálu p°ihlásí okamºit¥, s ov¥°ením otsku jiº problém nemá. 4. Úkol 4: Výb¥r volební akce
• Uºivatel vybírá poºadované volby, tiskne odpovídající tla£ítko bez zaváhání. 5. Úkol 5: Vypln¥ní volebního lístku
• P°i volení jednotlivých kandidát· se pozastavuje nad p°idáváním preferencí, nechápe jednotlivé priority. • Nevyplní prioritu u jednoho kandidáta, coº mu systém ohlásí, Uºivatel tuto volbu opravuje a odesílá lístek.
6.1.
TESTOVÁNÍ S UIVATELEM
37
6. Úkol 6: Odhlá²ení se ze systému
• Po zobrazení potvrzení o p°ijetí hlasu systémem volí správn¥ moºnost odhlá²ení a ukon£ení hlasování.
6.1.2.2 Uºivatel 2 • • •
V¥k: 51 let Zku²enost s prací na PC: Uºivatelská(Vyuºívání internetu, kancelá°ských aplikací) Pohlaví: ena
Log 1. Úkol 1: Zm¥na údaj·
• Uºivatel zadává údaje do systému a p°ihla²uje se. • Uºivatel se ptá, který z údaj· p°edstavuje p°ihla²ovací jméno(login je pro ni neznámý pojem) • Po porad¥ s dozorem m¥ní údaje jiº bez problému. 2. Úkol 2: P°idání otisku prstu
• Uºivatel p°i zadání otisku poloºí prst na £te£ku pouze na malou chvíli. • Nic se ned¥je, tudíº se zarazí nad dal²ím postupem. • Po porad¥ s dozorem jiº prst p°ikládá na pot°ebnou dobu a otisk ukládá. 3. Úkol 3: P°idání otisku prstu
• Po p°edchozí zku²enosti se uºivatel jiº k volebnímu terminálu p°ihlásí bez potíºí. 4. Úkol 4: Výb¥r volební akce
• Uºivatel hledá poºadované volby, tiskne odpovídající tla£ítko bez zaváhání. 5. Úkol 5: Vypln¥ní volebního lístku
• Uºivatel nejd°íve neví, jak zatrhnout moºnost. • Po porad¥ s dozorem za²krtne touºené moºnosti. • Nep°i°adí prioritu £íslo 1 ºádnému kandidátovi, p°i pokusu o odeslání vysko£í chybová hlá²ka. • Uºivatel si zprávu systému p°e£te, prioritu nastaví a ode²le lístek. 6. Úkol 6: Odhlá²ení se ze systému
• Po zobrazení potvrzení o p°ijetí hlasu systémem bez rozmyslu volí moºnost zadání hlasu pro dal²í volby, coº ji vrátí na hlavní obrazovku. • Následn¥ jiº moºost odhlá²ení volí správn¥, ov²em s jedním zbyte£ným krokem navíc.
38
KAPITOLA 6.
TESTOVÁNÍ
6.1.2.3 Uºivatel 3 • • •
V¥k: 35 let Zku²enost s prací na PC: Vysoká(n¥kolik hodin na PC kaºdý den) Pohlaví: Muº
Log 1. Úkol 1: Zm¥na údaj·
• První úkol plní uºivatel bez potíºí. 2. Úkol 2: P°idání otisku prstu
• Uºivatel jiº z°ejm¥ má zku²enost se sníma£i otisku, p°idává otisky bez pomoci a ukládá je. 3. Úkol 3: P°idání otisku prstu
• P°ihlá²ení zvládá v krátkém £ase. 4. Úkol 4: Výb¥r volební akce
• Uºivatel vybírá volební akci intuitivn¥ a okamºit¥. 5. Úkol 5: Vypln¥ní volebního lístku
• • • •
Uºivatel za²krtává n¥kolik moºností. Kliká na roletková menu pro zadání preferencí. Kandidátovi, který je mu nejvíce sympatický dává nejvy²²í £íslo. Po vysv¥tlení výzamu preference své hodocení m¥ní a odesílá lístek.
6. Úkol 6: Odhlá²ení se ze systému
• Po obdrºení potvrzení volí správn¥ moºnost odhlá²ení a ukon£ení hlasování.
6.1.3 Shrnutí testování V této podsekci jsou zmín¥ny aktivity, p°i kterých si uºivatelé nev¥d¥li rady nebo p°i nichº nastaly ur£ité potíºe. Následn¥ je vºdy zhod
6.1.3.1 Zadávání otisku prstu Zadávání otisku prstu do systému p°edstavovalo pro v²echny testované jistý problém. Uºivatel 1 obsluhoval te£ku zp·sobem, jakým je zvyklý ze sníma£·, které jsou v dne²ní dob¥ stále £ast¥jí sou£ástí notebooku.Uºivatel £íslo 2 nikdy nep°i²el to kontaktu se £te£kou otisku prstu, tudíº si bez pomoci dozoru nedokázal poradit. Poslední uºivatel byl v tomto oboru jiº zku²ený, tudíº si poradil. Nicmén¥ práv¥ snímání otisk· p°edstavuje jeden z probémových úsek·. Nicmén¥ se nejedná o závadu aplikace.
6.2.
HODNOCENÍ PROB
HNUTÝCH TEST
39
e²ení
V tomto p°ípad¥ p°ipadá v úvahu pouze jediné °e²ení, a to zapojit odbornou pomoc v podob¥ asistenta, který bude p°i ov¥°ování otisk· jednotlivým voli£·m pomáhat a radit.
6.1.3.2 P°i°azování preferencí zvoleným kandidát·m P°i p°i°azování preferencí v¥t²ina uºivatel· nev¥d¥la, jakým zp·sobem je p°i°adit, ani jakou funkci zastávají. Díky výzv¥ na roletkovém menu nebyl s jeho pouºitím problém.
e²ení ¬uje.
Do dialogu pro vypln¥ní volebního lístku byl p°idán popisek, který systém objas-
6.1.3.3 Odhlá²ení ze systému Pokud se uºivatel neodhlásí pomocí volby v nabídce, která se zobrazí po potvrzení p°ijetí hlasu serverem a nemá jiº p°ístupnou ºádnou dal²í volební událost, musí se odhlásit pomocí tla£ítka v pravém horním rohu. Dva ze t°í uºivatel· povaºovali umíst¥ní tla£ítka za ne²´astné a ²patn¥ viditelné.
e²ení
Z°ejm¥ by bylo dobré, aby se uºivatel mohl odhlásit v kterémkoli bod¥ volebního procesu, nicmén¥ umíst¥ní tla£ítka povaºuji za dobré, je stále vid¥t, coº je dle mého názoru d·leºité. Z tohoto d·vodu nebyla tato stíºnost brána v potaz a v²e bylo ponecháno dle prvotního návrhu. 6.2
Hodnocení prob¥hnutých test·
Jelikoº se jedná o prototyp aplikace, byl kladen hlavní d·raz na vylad¥ní problém·, které se týkají p°edev²ím ovladatelnosti aplikace. Testování s uºivatelem p°ineslo n¥kolik poznatk·, podle kterých lze v dal²ím vývoji pokra£ovat. Pokud se jednalo o zásadní £i snadno aplikovatelnou úpravu, byla tato provedena. Na dal²í zp·soby test· se z £asového hlediska nedostalo. Rovn¥º by z°ejm¥ v této fázi projektu nem¥ly výraznou informativní hodnotu. Celý systém musí být podroben d·kladnému testování, jelikoº se jedná o velmi citlivou záleºitost, která musí být p°edev²ím z hlediska bezpe£nosti naprosto perfektní p°ed jejím nasazením do b¥ºné praxe.
40
KAPITOLA 6.
TESTOVÁNÍ
Kapitola 7
Záv¥r Byl vytvo°en volební terminálu, který disponuje jednoduchým designem, snadnou a intuitivní ovladatelností a uºivatelsky p°ív¥tivým rozhraním. B¥hem práce byly nastudovány v²echny poºadované dokumenty a rovn¥º prob¥hlo seznámení s rozli£nými volebními postupy, jejich samotným systémem, zp·soby vyhodnocování a pr·b¥hem. Byla vytvo°ena podpora pro vedoucím práce zadané volební systémy (V¥t²inový volební systém a Systém p°enositelného hlasu). Dále byly nastudovány rozli£né typy autorizace a autentizace, z nichº p°ihla²ování do aplikace pomocí PINu a otisku prstu bylo v systému pouºito. Aplikace byla otestována pomocí test· s uºivatelem. Prozatím se jedná pouze o £ist¥ informativní testy, jelikoº tyto byly provád¥ny v domácích podmínkách a v malém rozsahu. Bohuºel p°edev²ím z £asového hlediska nebylo uskute£n¥no nasazení do reálného provozu, coº by p°edstavovalo nasazení aplikace na skute£ný volební terminál a následné provedení simulovaného hlasování. Nicmén¥ zavedení aplikace na volební terminál je plánována po odevzdání této práce. Pro dal²í pokra£ování bych doporu£il zejména prostudování objevené bezpe£nostní trhliny, která je podrobn¥ popsána v kapitole Návrh, podsekce Práce s otisky prstu. Je t°eba, aby byl registra£ní proces upraven tak, aby se tomuto problému zcela zamezilo a nebyla tak umoºn¥na ovlivnitelnost voleb. Dále se zde nachází p°íleºitost pro roz²í°ení projektu E-volby o dal²í typy volebních systém·, kterých je ve sv¥t¥ °ada, £ímº by byla vytvo°ena vysoce uºite£ná a p°enosná aplikace pouºitelná v rozli£ných podmínkách. Dále je rovn¥º moºné roz²í°it systém o volbu systému p°ihla²ování pro kaºdou volební událost zvlá²´, coº by pomohlo zejména k v¥t²ímu p°izp·sobení pro r·zné volební systémy. V neposlední °ad¥ je rovn¥º nutné v¥novat se celkovému podrobnému testování celé aplikace. Sou£asný prototyp nelze do skte£ného provozu nasadit bez celkového vylad¥ní nedostatk· a zamezení jakékoli chyb¥,která by p°i ostrém provozu mohla znamenat katastrofu.
41
42
KAPITOLA 7.
ZÁV
R
Literatura [1] Bc. Michaela Sedlá°ová. Metody dosaºení spolehlivosti elektronických voleb. In Diplomová práce. Univerzita Tomá²e Bati, Zlín, FAI, 2011. [2] ARLOW, J. NEUSTADT, I. UML2 a unikovaný proces vývoje aplikací. Computer Press s.r.o, Brno, 2nd edition, 2007. In Czech. [3] Bc. Martin Sláma. Generování jednorázových PIN· a jejich uloºení na £ipovou kartu. In Diplomová práce. MUNI FI, 2009. [4] Oracle. JavaDOC [online]. 2011. [cit. 30. 12. 2011]. Dostupné z:
. [5] Petr Hlavá£ek. Serverová £ást systému Elektronické volby. In Bakalá°ská práce. VUT FEL, 2012. [6] Petr Hlavá£ek, Ond°ej Kulatý, t¥pán korpil, Václav Tarantík. Registra£ní systém projektu E-Volby [online]. 2011. [cit. 8. 12. 2011]. Dostupné z:
. [7] P°isp¥vatelé Wikipedie. HTTPS [online]. 2011. [cit. 29. 12. 2011]. Dostupné z:
. [8] Tomá² erevka. Elektronické volby. In Bakalá°ská práce. VUT FEL, 2011. [9] web:digp. Digital Persona. http://digitalpersona.com/, stav z 5. 5. 2012. [10] web:Glasssh. Stránky výrobce záloºních zdroj·. http://glassfish.java.net/, stav z 3. 4. 2012. [11] web:infoaut. Informace o autentizaci voli£·. http://cs.wikipedia.org/wiki/Autentizace, stav z 5. 5. 2012. [12] web:infoautor. Informace o autorizaci voli£·. http://cs.wikipedia.org/wiki/Autorizace, stav z 5. 5. 2012. [13] web:infodp. K336 Info pokyny pro psaní diplomových prací. https://info336.felk.cvut.cz/clanek.php?id=400, stav ze 4. 5. 2009. [14] web:infoups. Stránky výrobce záloºních zdroj·. http://www.falconups.com/ups_table.htm/, stav z 28. 12. 2011. 43
44
LITERATURA
[15] web:Oracle. Stránky spole£nosti Oracle. http://www.oracle.com/, stav z 5. 5. 2012. [16] web:sparxsys. Stránky rmy SparxSystems, výrobce modelovacích nástroj·. http://www.sparxsystems.com/, stav z 3. 4. 2012. [17] web:volsys. Strany a volby. http://www.stranyavolby.cz/cs/volebni-systemy/, stav z 23. 12. 2011. [18] Zuzana Polá£ková. Re²er²e algoritm· pro snímání a zpracování otisku prst·. In Bakalá°ská práce. VUT FEL, 2008.
P°íloha A
Seznam pouºitých zkratek HTTP
Hypertext Transfer Protocol
SNMP
Simple Network Management Protocol
SSL
Secure Sockets Layer
TLS
Transport Layer Security
IP
Internet Protocol
HTTPS
Hypertext Transfer Protocol Secure
Java EE
Java Enterprise Edition
JDBC
Java Database Connectivity
SVN
Subversion
UML
Unied Modeling Language
UPS
Uninterruptible Power Supply
FAR
False Accept Rate
JPA
Java Persistence Api
GUI
Graphical User Interface
EJB
Enterprise Java Bean
IDE
Integrated Development Environment
.. .
45
46
PÍLOHA A.
SEZNAM POUITÝCH ZKRATEK
P°íloha B
UML diagramy
47
48
PÍLOHA B.
Obrázek B.1: Doménový model server
UML DIAGRAMY
49
Obrázek B.2: Business prcess model práce uºivatele se systémem
50
PÍLOHA B.
UML DIAGRAMY
P°íloha C
Obsah p°iloºeného CD | readme.txt | +---AbstraktCZ | abstrCZ.txt | +---AbstraktEN | abstrEN.txt | +---EA | Business Workflows.jpg | EVTerminal.eap | +---javadoc | | +---k336_thesis | +---SDK | +---Docs | | | +---Misc | +---Redist | | | +---RTE | | | Setup.exe | | | | | \---Install | | | InstallOnly.bat | | | Setup.exe | | | Setup.msi | | | UninstallOnly.bat | | | 51
52
| | \---x64 | | InstallOnly.bat | | Setup.exe | | Setup.msi | | UninstallOnly.bat | | | +---SDK | | | Setup.exe | | | | | \---Install | | | Setup.exe | | | Setup.msi | | | | | \---x64 | | Setup.exe | | Setup.msi | | | \---Third-Party Software +---src | \---ElektronickeVolby | +---ClientModule-ejb | | +---ElektronickeVolby-ejb | | +---ElektronickeVolby-war | | +---TerminalPart | \---text BP.pdf
PÍLOHA C.
OBSAH PILOENÉHO CD
P°íloha D
Instala£ní p°íru£ka D.1
Pot°ebné programy
• Java JRE a JDK(http://www.oracle.com/technetwork/indexes/downloads/index.html/java) • Netbeans 7.1(http://netbeans.org/) plná instalace • SDK spole£nosti DigitalPersona(Obsaºeno na CD ve sloºce SDK) • MySQLServer(http://www.mysql.com/downloads/mysql) D.2
Postup instalace
D.2.1 SDK 1. Spustit instalaci SDK Digital Persona z CD, sloºka SDK, spustit soubor SDK/Install/Setup.exe 2. Ponechat implicitní nastavení, projít instalaci aº na konec, stisknout dokon£it, restartovat PC pozd¥ji 3. Spustit instalaci RTE Digital Persona z CD, sloºka SDK, spustit soubor RTE/Install/Setup.exe 4. Ponechat implicitní nastavení, projít instalaci aº na konec, stisknout dokon£it, restartovat PC nyní
D.2.2 MySQLServer 1. Stáhnout a nainstalovat aplikaci dle pokyn· 2. Zapsat si heslo pro pozd¥j²í pouºití
D.2.3 Netbeans 1. Stáhnout plnou se v²emi dopl¬ky nainstalovat dle pokyn·
53
54
PÍLOHA D.
D.3
INSTALANÍ PÍRUKA
Spu²t¥ní aplikace
1. Provést kompletní instalaci serveru projektu Evolby dle práce Petra Hlavá£ka 2. Nasadit server Evolby na aplika£ní server GlassFish 3. Otev°ít v Netbeans projekt TerminalPart, který je p°iloºaný na CD ve sloºce src/ElekrtronickeVolby 4. Spustit projekt TerminalPart pomocí kontextového menu £i pomocí klávesové zkratky SHIFT+F6