Predlog za izvedbo e-volitev
Čeprav so mnogi "tradicionalisti" proti, je dejstvo, da tehnologija napreduje, elektronske volitve so vedno bolj dejstvo in če nočemo obtičati v informacijskem paleozoiku, je čas, da se začne vsaj razprava o najprimernejših tehnologijah in sami izvedbi.
Glavne prednosti e-volitev:
- ni potrebno posekati kupa dreves samo za glasovnice in jih (vsaj v primeru volitev v DZ) potiskati še z barvnimi logotipi strank
- hitrost: uradni rezultati so na voljo takoj po "zaprtju volišč", ni dolgotrajnega čakanja, da po pošti prispejo glasovnice iz drugih držav (s tem je mogoče tudi pohitriti večkrožne volitve, npr. predsednik, župani..., kjer so razmak med krogoma celo podaljšali na 3 tedne)
- možnost višje udeležbe: volivcem ni potrebno do volišč, glasovati je možno tudi z izleta, iz bolnišnice..., elektronska volišča je mogoče odpreti že nekaj dni prej
- bistveno manj možnosti za napake ali "napake" med preštevanjem ("ni važno, kolikšno podporo imaš, važno je, kdo šteje")
- ni možnosti za zaplete ob izenačenem glasovanju (še pomnite Izolo 2006 ali Florido 2000?)
- tajnost glasovanja: papirnate glasovnice je mogoče na skrivaj označiti, na njih pustite prstne odtise... IT omogoča bistveno boljšo zasebnost (več v nadaljevanju)
- ni možnosti izsiljevanja: ponekod kriminalne tolpe silijo volivce, da v intimi volilne kabine z mobilnikom posnamejo "pravilno" izpolnjeno glasovnico
- ko je papirnata glasovnica enkrat v skrinjici, si ne morete več premisliti. Če obkrožite napačno možnost, je kar težko popraviti tako, da glasovnica ne pristane med neveljavnimi (še pomnite eno čudno glasovnico, ko so v DZ leta 2000 glasovali o Bajukovi vladi?)
- osebje na voliščih ni usposobljeno za ugotavljanje pristnosti dokumentov in za presojo istovetnosti. Poleg tega lahko v dokumentu vidi še kakšen kočljiv osebni podatek, ki za same volitve sploh ni pomemben
- trenutne glasovnice so prilagojene ročnemu izpolnjevanju in štetju (med kupom strank se obkroži številko pred eno). Elektronizacija bi olajšala pot k zelo zanimivim reformam samega volilnega sistema (več o tem v ločenem predlogu)
Prvi pogoj za zaupanje je, da mora biti čisto vsa programska oprema "odprtokodna" (moč je videti celotno izvorno kodo, sama licenca ni pomembna). Če ne drugega, je na voljo repozitorij Github, ki je ravno pod temi pogoji (vsak si lahko ogleduje datoteke) na voljo celo brezplačno. Mogoče je videti točen prispevek vsakega razvijalca, kar jih motivira k pisanju kvalitetne kode. Seveda bi bil čisti fiasko takšen projekt zaupati "etabliranim" domačim "nacionalnim šampionom" (SRC, Comtrade, S&T, Adacta, Halcom...), ki so že zdavnaj pokurili vse bonuse "še ene priložnosti", lahko so kvečjemu podizvajalci na najbolj "črnskem" nivoju brez možnosti aneksov. Zasnujejo se prototipi aplikacij, definirajo vmesniki, za lažji pregled se predpiše enotni programerski slog in se na njem striktno vztraja.... nakar se poišče izvajalce za izvedbo. Ali so to izkušeni prostovoljci in študenti (prej omenjena motivacija, reference) ali se jih poišče na mednarodnem tržišču (portal Freelancer) ali... V strankah bodo gotovo zainteresirani za možnost morebitnih "stranskih vrat" za goljufije, svoje bodo pristavili aktivisti za zasebnost in varnost, vsi našteti bodo gotovo zares temeljito preučili vso izvorno kodo, s čimer bo aplikacija gotovo pregledana temeljiteje kot 99% programske opreme, ki jo vsakodnevno uporabljate. Ko se doseže nek konsenz (vsako sporno mesto je treba točno pokazati in podrobno utemeljiti!), gre aplikacija v pilotno testiranje in produkcijsko rabo. Seveda bo lahko vsak po točnih navodilih sam prevedel izvorno kodo in primerjal zgoščene funkcije izvršljivih datotek s tistimi na strežnikih in se s tem prepričal, da na njih ne teče kakšna "popravljena" verzija.
Aplikacijo (vsaj tisti del, ki teče na strežnikih DVK) se zasnuje na neki prenosljivi platformi, najraje v Javi (res pa je, da lahko Oracle čez čas še pošteno zagnoji s pogoji uporabe) ali kakšnem Pythonu. .NET se načelno izogibamo, ker nas lahko priklene na monokulturo enega dobavitelja. Kar se aplikacijskega nivoja tiče, imamo v DVK dvodelno infrastrukturo. Na prvem nivoju teče glavni del, ki pred volitvami zgenerira lepo število (recimo ok. 1000) RSA ključev. Zasebne ključe drži strogo zase, javne pa posreduje drugemu nivoju. Tu imamo podatkovno skladišče, razdeljeno na več podskladišč, ki simbolizirajo volilne skrinjice za posamezne okraje. Po zaključku volitev šifrirane glasovnice (podatkov o glasovalcu nima na voljo) dešifrira z zasebnimi RSA ključi, jih prešteje in glede na volilni sistem objavi rezultate volitev. Drugi nivo upravlja z volilnimi imeniki. Ko se volivec po internetu prijavi nanj, mu posreduje glasovnico in enega (naključno izbranega) izmed javnih ključev, ki jih prejme od 1. nivoja. Ko prejme šifrirano glasovnico (ker nima zasebnega ključa, je ne more dešifrirati in videti, kako je nekdo glasoval), jo skupaj s podatki o volilcu hrani v čakalnici. Volivec lahko času volitev glasuje večkrat, pri tem se ohrani samo zadnja prispela glasovnica, vse ostale se trajno uničijo. Ko se volitve zaključijo, pošlje šifrirano glasovnico (brez podatkov o volivcu) v ustrezno "skrinjico" na prvem nivoju, kjer se obdela. Za povezavo med volivčevim odjemalcem in drugim nivojem se priporoča uporaba tehnologije SSL/TLS (alias "digitalni cetifikati"). Standard je odprt, javno objavljen, z javno znanimi prednostmi in slabostmi, omogoča šifrirano povezavo (brez možnosti prisluškovanja in popravljanja sporočil) in z obojestransko avtentikacijo izključuje možnost napada s posrednikom ("man in the middle"). Kajpada se priznajo samo veljavni certifikati požegnanih overoviteljev (SIGEN, NLB, PTT), s katerimi volilec drugemu nivoju potrdi svojo istovetnost, po varni povezavi prejme glasovnico in javni RSA ključ, s katerim jo šifrira (samoumevno se glasovnice "zasmeti" še z naključnimi znaki, da niti dve enako izpolnjeni glasovnici po šifriranju z istim ključem nista enaki). Kaj točno ima volilvec na svojem odjemalcu, je stvar debate. Lahko gre za spletno aplikacijo v brskalniku (z javascriptom) ali namizne GUI aplikacije (za Windows, Linux, OSX) in aplikacije za najpopularnejše mobilne platforme (iOS, Android). Seveda so odprtokodne tudi te aplikacije, prvič zaradi zagotavljanja varnosti, drugič, da si jih lahko bolje podkovani uporabniki prenesejo še na druge sisteme.
V nekem "prehodnem obdobju", recimo okoli 20 let, bi se klasična volišča še obdržala za tiste, ki nočejo ali ne znajo uporabljati web volišča ali nimajo povezave do interneta. Le da bi tudi tam eliminirali klasične papirnate glasovnice. Ob identifikaciji se udeležba zabeleži v volilnem imeniku (2. nivo), zgenerira se neka PIN koda (seveda nikakor ne v povezavi z volivčevimi podatki), z njo gre v kabino, kjer ga čaka računalnik. S to kodo se vanj anonimno prijavi, izpolni in odda e-glasovnico. Ker je ta že anonimna, gre takoj v ustrezno "skrinjico" na 1. nivoju, če je volivec že prej glasoval po internetu, se njegovi glasovi brišejo iz "čakalnice", obenem na teh volitvah ne more več glasovati. Večina volišč je že danes po šolah, kjer ne bi smelo biti problema z računalniki in omreženostjo. Da ne bi bilo problemov z virusi in prepisovanjem šolskih računalnikov, se jih lahko zažene z zagonskimi CD ali USB ključi, kjer se nahaja prirejena izvedba Boot-CD Linuxa (npr. Knoppix) in volilna aplikacija.
Teba je doreči še nekaj "malenkosti", ki presegajo ta nivo, npr. visoka razpoložljivost z gručami, vmesno varno hranjenje podatkov na voliščih za primer izpada interneta ipd. ampak v osnovi je to to.