Įspūdžiai iš diskusijos apie internetinį balsavimą
Prieš kiek daugiau nei savaitę teko pasiklausyti keleto prezentacijų ir diskusijos apie internetinio balsavimo technines galimybes – kol dar visiškai neataušo, bandau nurašyti savo reakciją į kai kuriuos teiginius bei pateikti keletą pasiūlymų ir pamąstymų.
Diskleimeris
Aš esu nusistatęs prieš elektroninį balsavimą (internetu ar ne internetu). Šios diskusijos tikslas buvo įvertinti iššūkius – nepaisant to, kad priėmiau tai kaip “projektą”, kurį reikia įgyvendinti (“niekada negali žinoti, kada seimūnams užplauks ir pasakys – darykit”), nepaisant to, kad po diskusijos šiek tiek galbūt mano pozicija ir sušvelnėjo, aš esu įsitikinęs, kad elektroninis balsavimas yra laiko ir pinigų švaistymas, kuris nesprendžia jokios problemos.
Tokios sistemos šalininkai teigia, kad atidžiau pažiūrėjus į tradicinį balsavimą, turbūt surastume analogišką kiekį rizikų ir peno nepasitikėjimui. Vadovaujantis tokiais argumentais, kodėl mums neperkėlus balsavimo į prekybos centrus? Ten daug kamerų – visi galėtų stebėti internetu, o žmonėms nereiktų eiti toli nuo namų – balsuotojų aktyvumas padidėtų. Arba va, dar geriau – turim kalną nenaudojamų snoriukų – įrenkime balsavimo punktus juose!
Valdžios pasisakymai
Iš apie 30 žmonių, dalyvavusių diskusijoje, keletas buvo iš valstybinių įstaigų, norėčiau išskirti tris iš jų:
- Z. Vaigauskas (VRK pirmininkas) – man trūksta žodžių apsakyti kiek papildomų pagarbos taškų jis gavo tąvakar iš manęs. Man niekad nebuvo nuobodu stebėti jį skaitantį rezultatus per televizorių, tačiau tai kaip jis išaiškino balsavimo organizavimo teoriją ir apibrėžė internetinio balsavimo problemą mane sužavėjo. Profesionalas! Ačiū.
- K. Andrijauskas (IVPK direktoriaus pavaduotojas) – susidariau šiek tiek negatyvią nuomonę. Tikiuosi ateityje ryšys tarp valdžios ir visuomenės bus paprastesnis, o bendravimas atviresnis su požiūriu, kad visi esame viename katile ir vieni kitus palaikome, suprantame ir padedame. Jeigu konkrečiai – man labai nepatiko jo mintis (perfrazuota), kad valdžiai reikia, kad IT specialistai paaiškintų tautai, kad internetinis balsavimas yra saugus. Aš nežinau, ar jis atkreipė dėmesį, kad beveik visi susirinkę IT specialistai buvo skeptikai, t.y. jie patys nėra užtikrinti tuo saugumu. Aš niekada negalėčiau pasisakyti “už”, kai akivaizdžiai matau skyles. IT specialistų darbas yra ne meluoti (ar pagražinti situaciją) visuomenei, o spręsti problemas. Smegenų plovimas yra marketingistų ir piarščikų darbas. Tačiau internetinio balsavimo atveju pagrindinis reikalavimas yra ne “tautos pasitikėjimas”, o “pagrįstas tautos pasitikėjimas”. Bet galbūt aš neteisingai jį supratau?
- R. Rainys (RRT tinklų ir informacijos saugumo skyriaus vedėjas) – per daug nesiplėsiu – šis pasisakymas buvo daugiau reakcija į netiesiogiai susiijusius dalykus diskusijoje, tačiau privalau pastebėti, kad buvo užimta labai gynybinė pozicija. Kita vertus, įgavau šiek tiek pasitikėjimo, kad RRT užsiima naudingais dalykais, ypač saugumo srityje. Galėtų jie tuos darbus geriau komunikuoti – dažnesni pranešimai spaudai tikrai nepakenktų. Jeigu esminiai įvykiai tokie kaip “3 valandas visas Lietuvos srautas keliavo per Rusiją” būtų pateikiami kaip suvaldyti, nereiktų užimti tos gynybinės pozicijos.
Neminint kitų pavardžių (nes nepažįstu), teko nugirsti ir pašalinių pokalbių tarp žmonių, kurie sėdėjo netoliese. Vienas iš tų pokalbių skambėjo labai grėsmingai (gal išgirdau neteisingai?) – “čia viską galima išspręsti techniškai… galimybės yra… viskas bus gerai”. Laikytis tokios nuomonės yra pavojinga. Balsavimas yra nacionalinio saugumo klausimas. Už aplaidų žiūrėjimą į internetinį balsavimą reikėtų bausti kalėjimu ar bent jau draudimu dirbti valstybės tarnyboje.
Problema nr. 0: terminologija ir problemos apibrėžimas
Šiemet teko matyti projektą, kurio dalyviai dar po šiai dienai nesusitarė kaip vadinti tam tikrus veikėjus sistemoje. Spėkit, ar projektas buvo įgyvendintas laiku? Kai nėra suderinti kertiniai terminai, komunikacijos problemos tampa pagrindiniu projekto stabdžiu. Todėl diskusijos įžangoje man pasirodė keista, kad nepaisant išdalintų schemų (žr. pirmą diagramą), nuskambėjo pasiūlymas vadinti tai ką aptarinėjome “e-balsavimu”. Mano nuomone, daiktus reikia vadinti tikraisiais vardais, t.y. mano supratimu visus techninius klausimus aptarinėjome tik “nuotolinio balsavimo, duomenis perduodant Interneto tinklais” aspektu. Todėl ir derėtų tai vadinti tiesiog “balsavimu internetu” – ir nevartoti jokio kito termino.
Problema: autentifikacija
Prieš diskusiją teko perversti Elektroninio balsavimo galimybių studiją, bei šiek tiek nugirsti kitų užuominų apie tai, kad autentifikacija turėtų būtų vykdoma el. bankininkystės sistemose. Pačiame susitikime kalba praktiškai vien apie ID kortelės naudojimą. Manau, kad neverta net analizuoti pirmojo varianto – jis nėra saugus vien todėl, kad kalbame apie finansus, o į pinigus yra nusitaikę begalės sukčių. Internetinė mafija prekiauja kreditinių kortelių numeriais urmu, telefoniniai sukčiai vis bando išvilioti bankų prisijungimo duomenis – tam tikros struktūroms būtų naudinga pasinaudoti jau egzistuojančia vogimo infrastruktūra tam, kad daryti įtaką rinkimų rezultatams.
Jeigu kalbėti apie ID kortelės kodavimo lusto naudojimą, tai didžiausias stabdis turbūt būtų reikalavimas pirkti specialų įrenginį bei jį palaikyti ir įdiegti įvairiose OS. Manau, kad tai yra dar viena saugumo spraga, nes paslaugus “kaimynas” mielai gali “pakonfigūruoti” jūsų tėvų kompiuterius taip, kad jie balsuotų tinkamai. Todėl norėčiau matyti įrenginį, panašų į tuos, kurie naudojami prisijungimui prie bankų, t.y. pats įrenginys yra atskiras nuo kompiuterio, į jį dedama kortelė, įvedamas PIN (2 faktorių autentifikacija yra privaloma) ir iš balsavimo sistemos į įrenginį vedami kodai, o iš įrenginio – atgal į sistemą. Idealiu atveju, įrenginys sugebėtų generuoti (skirtingus) kodus bet kuriai kortelei. Neturiu pakankamai kriptografijos ir matematikos žinių, kad teigti, jog toks įrenginys yra pakankamai saugus, tačiau tikiu, kad teoriškai tai įmanoma ir kas nors turėtų tuo pasidomėti – hell – čia juk iš to verslą galima padaryti.
Dar viena trumpa mintis dėl ID kortelių – jos galioja 10 metų. Ar per 10 metų jose įrašyti pasirašinėjimo raktai netaps nebesaugūs? Kai aš pradėjau krapštyti interneto svetaines prieš daugiau nei 10 metų, MD5 buvo rekomendacija. Bent prieš 5 metus prasidėjo bruzdesiai, kad reikėtų naudoti SHA1 – o dabar jau ir SHA1 yra nebe pakankamas. Lygiai tokiu pačiu greičiu keičiasi rekomendacijos ir raktų ilgiui bei kodavimo algoritmams.
Problema: kriptografija
Nepaisant to, kad toli gražu neesu kodavimo ekspertas, matau keletą klausimų ir spąstų:
- “Balsas” yra labai mažas kiekis duomenų – kodavimo algoritmai yra efektyvūs, kai duomenų kiekis yra didesnis už rakto ilgį. Priešingu atveju tenka generuoti papildomų duomenų, o jie turi būti unikalūs – tačiau tokiu atveju balsas gali nebebūti anonimišku. Būčiau dėkingas jeigu kas nors pataisytų mane komentaruose, jeigu klystu.
- Tam, kad balso anonimiškumas būtų išsaugotas, kiekvienas rinkėjas turi gauti unikalų viešąjį raktą, nes kitu atveju visi balsuojantys už kandidatą A išsiųs tą patį užkoduotą f(A), net jei tai ir su skirtingu parašu g(f(A)). Galima būtų prieš siuntimą užkoduoti dar kartą – h( f(A) + g(f(A)) ), tačiau neesu įsitikinęs, kad tai yra pakankamai saugu, o be to toks variantas apsunkintų realų rinkimų stebėjimą (žr. toliau).
Problema: autorizacija ir “du vokai”
Balsuojant paštu, naudojama dviejų vokų sistema – išoriniame voke yra rinkėjo pažymėjimas, vidiniame – biuletenis. Skaičiuojant balsus biuletenis nuo pažymėjimo atskiriamas, taip užtikrinant balso slaptumą. Tradiciškai, perkeliant įvairias sistemas iš popieriaus į kompiuterį yra gaminamas realybės atspindys. Tačiau taikant tokį principą kartais nukenčia patogumas, o tuo pačiu neišnaudojamos visos elektroninės galimybės. Kompiuteriai ir internetas yra sistemos, kurios turi savo principus, kurie dažnai yra iš esmės kitokie negu realybė. Todėl ir kuriant balsavimo internetu sistemą reikia tai įvertinti ir netgi, sakyčiau, atsikratyti “realybės”, o kurti naują sistemą.
Galbūt ir galima būtų kompiuterinį variantą vadinti “dviem vokais” – autorizacija ir balsas privalo būti dvi visiškai autononimės sistemos. Tačiau esminis skirtumas virtualioje sistemoje yra tas, kad neįmanoma garantuoti voko neatplėšimo – žvilgtelti į voko vidų galima visiškai jo nepažeidžiant. Kalbantis su įvairiais žmonėms, man susidarė įspūdis, kad esminis mąstymo principas yra toks, kad “du vokai” yra kartu iki tol kol “atidaromos balsadėžės”. Aš manau, kad turint omenyje dvilypišką kompiuterių prigimtį – t.y. informacijos gyvenimo laikas yra atomiškai trumpas, bet tuo pačiu ir amžinas, vokai negali gyventi kartu ilgiau negu tai yra absoliučiai reikalinga (t.y. tik “transportavimo” metu) – jie turi būti atskirti iš karto.
Tam, kad užtikrinti sąžiningą balsavimą, yra rekomenduojama, kad rinkėjai galėtų pakeisti savo balsą iki paskutinės minutės. Kad tai įgyvendinti, sudėdamas idėjas, kurias jau minėjau, siūlyčiau patyrinėti tokios sistemos įgyvendinimo galimybę:
- Rinkėjas VRK programoje ar svetainėje – autentifikatoriuje – įveda savo asmens kodą
- Autentifikatorius pateikia vieną ar kelis kodus-užklausimus
- Rinkėjas įdeda savo ID kortelę į kodų generatorių, autorizuojasi PIN kodu ir suveda kodus-užklausimus
- Gautus kodus-atsakymus iš generatoriaus rinkėjas suveda atgal į autentifikatorių
- Autentifikatorius sugeneruoja unikalų balso ID ir jam priskiria viešąjį raktą – prireikus, su šiuo ID autentifikatorius gali anuliuoti balsą skaičiavimo sistemoje, jeigu rinkėjas pageidauja balsuoti iš naujo
- Autentifikatorius išsiunčia privatų raktą, susietą su balso ID, į atskirą raktų saugojimo sistemą
- Rinkėjas pasirenka kandidatą ir užkoduoja viešuoju raktu
- Rinkėjas išsiunčia savo užkoduotą balsą su ID į balsų skaičiavimo sistemą
- Rinkėjas gauna pasirašytą balso patvirtinimą – su šiuo patvirtinimu jis bet kada gali pasitikrinti balsų rinkimų sistemoje, kad jo balsas yra įskaičiuotas
- Pasibaigus balsavimo laikotarpiui, sunaikinami autentifikatoriuje esantys balsų ID – sunaikinamas bet koks ryšys tarp balso ir rinkėjo. Norėčiau atkreipti dėmesį, kad plačiau žvelgiant, balsas ir “rinkėjo pažymėjimas” niekada nebuvo viename išoriniame voke kartu.
- Apjungiamos raktų saugojimo ir balsų skaičiavimo sistemos – balsai atkoduojami
- Rinkėjas, pasinaudodamas savo balso ID, vis dar gali pasitikrinti, kad jo balsas įskaičiuotas, bet tuo pačiu – ir kad jo balsas įskaičiuotas už tą kandidatą, kurį jis pasirinko. Rinkėjas negali meluoti, kad balsas įskaičiuotas neteisingai, nes įmanoma patikrinti ar jo balsas, užkoduotas su tuo pačiu raktu yra identiškas tam, kuris išsaugotas.
Be abejo, teorinės galimybės tiek klastoti balsus, tiek atsekti už ką balsavo konkretus rinkėjas išlieka, tačiau jeigu trys pagrindinės sistemos (autentifikatorius, raktų kaupimas ir balsų saugojimas) yra visiškai nepriklausomos, tos galimybės gerokai pasunkėja. Tuo pačiu, šis variantas išspręstų (bent dalinai – kompiuteriai visada gali meluoti ir rodyti vieną dalyką rinkėjui, o kitą – komisijos nariams…) pasitikėjimo klausimą – kiekvienas rinkėjas galėtų bet kada pasitikrinti savo paties balsą.
Problema: stebėtojai
Aukščiau pasiūlyta sistema taipogi suteikia puikias galimybes stebėti rinkimus partijų atstovams ir nepriklausomoms organizacijoms. Kadangi balso įslaptinimas yra įvykdomas gana anksti viso proceso metu (paliekant tik galimybę jį atšaukti), tai užkoduotus balsus galima skelbti viešai – t.y. duomenys, kurie įeina į balsų kaupimo sistemą nėra identifikuojantys, todėl gali būti išslaptinti ir paskleisti į P2P ar kt. tinklus. Tokiu būdu, pagal tik rinkėjui žinomą ID, pats rinkėjas gali pasitikrinti savo balsą ne tik pagrindinėje sistemoje, tačiau ir pas nepriklausomus tiekėjus. Lygiai taip pat galima būtų viešai skelbti ir atkoduotus balsus.
Toks visiškas atvirumas yra tai, dėl ko internetas apskritai gali egzistuoti ir dabar jau yra įsišaknyjęs. Mano nuomone, užtikrinti sąžiningą balsavimą gali tik panoptikonas. Didysis tokio atvirumo trūkumas – kenksmingų interesų turintys asmenys galėtų “išmušti” balso ID iš (papirkto?) rinkėjo ir patys pasižiūrėti, kad balsas nebuvo pvz. pakeistas ir tokiu būdu keršyti ar šiaip “atsiskaityti” su rinkėju jau pasibaigus visam procesui. Kas yra didesnė blogybė – gili filosofinė diskusija…
Problema: infrastruktūra
Praėjusios savaitės “pasitarime” diskusijos buvo tik įžanginės – paminėti buvo tik principai ir iššūkiai. Pagrindinė tema vis dar išliko kodavimo, tinklų ir žmonių saugumas, bet man šiek tiek apmaudu, kad visiškai nebuvo paliestas serverių klausimas. Iš vienos pusės, atrodo, kas čia tokio – prijungei galingą kompiuterį prie interneto ir turi balsavimo serverį. Tačiau iš kitos pusės, reikia įvertinti stebėjimo galimybes, taipogi ir patikimumo bei gedimų scenarijus.
Jeigu kalbame apie stebėjimą – įgyvendinus viešą balsų duomenų skelbimą, belieka užtikrinti, kad serveriuose sukasi “teisingas” kodas. Manau, kad geriausias būdas tai pasiekti – visas su rinkimais susiijusias sistemas įrašyti į ROM’us, kuriuos galima pakeisti tik fiziniu priėjimu. Sistemų kompiliavimas ir įrašymas į lustus turėtų būti griežtai stebima ir tikrinama procedūra. Iš to turbūt netgi gautųsi visai graži parodomoji ceremonija – skirtingų spalvų čipukai įrašomi, transportuojami į keliose skirtingose vietose esančias serverių fermas, įdedami į tam paruoštas plokštes ir užplombuojami.
Įdomu pastebėti, kad ESBO atsiliepimuose apie internetinį balsavimą Estijoje, yra rekomendacija, kad kol vyksta balsavimas, prie serverių niekas neturi kišti nagų. Aš turbūt rekomenduočiau žengti dar toliau – ne tik kad fizinio įsikišimo neturi būti, bet netgi turėtų būti nedaromos atsarginės duomenų kopijos. Jeigu visa sistema yra pakankamai išskaidyta ir kiekvienas modulis veikia dvejomis pastoviai tas pačias operacijas atliekančiomis kopijomis (kiekviename duomenų centre) – turime pakankamą gedimo valdymo scenarijų (t.y. sulūžo vienas serveris – persijungiam į visais požiūriais identišką kitą serverį, įskaitant pilną RAM kopiją, tame pačiame ar kitame duomenų centre).
Beje, kalbant apie RAM kopijas – įdomus faktas – net jeigu vienas rinkėjas sugeneruoja, sakykime, 20kb duomenų, tai visi rinkimai sutelpa į apie 40Gb, t.y. pastovaus saugojimo įrenginiai yra nereikalingi. “Kietos kopijos” nebuvimas netgi galėtų būti savotiškas pliusas, nes visą sistemą sudarytų tik neliečiamas ROM vykdomasis kodas ir duomenys RAM, t.y. kenkėjiškas kodas patekti į sistemą galėtų tik labai įmantriais būdais.
Problema: silpniausia grandis
Banalu, tačiau bet kuri sistema yra tik tiek saugi, kiek saugi yra silpniausia jos grandis. Internetinio balsavimo atveju silpniausia grandis yra būtent rinkėjų kompiuteriai. Tai yra pagrindinė priežastis kodėl aš kovosiu prieš internetinio balsavimo įgyvendinimą tol kol galėsiu. Jeigu mes sąlyginai galime užtikrinti serverių ir VRK priklausančios programinės įrangos saugumą, jeigu mes galime įgyvendinti papildomas tinklo (transporto) saugumo priemones todėl, kad Lietuvos IPT yra labai neblogai susijungę tarpusavyje (t.y. rinkimų duomenys per užsienį keliautų tik iš emigrantų – pasak ESBO ataskaitos, estai apribojo priėjimą iš užsienio tik ambasadų kompiuteriams), tačiau mes vistiek nežinome pagrindinio sistemos komponento – rinkimų serviso kliento (service client/consumer) būklės.
Aš, kaip atviro tinklo entuziastas, turbūt norėčiau matyti visą sistemą naršyklėje. Tačiau ką daryti su naršyklių įskiepiais? Pasak RRT, Lietuvoje pastoviai stebima apie 17 tūkst. kompiuterių-zombių – visi jie jau yra pažeisti. Jeigu balsavimas vyksta naršyklėje – nėra jokios problemos “pakoreguoti”, kad naršyklė rodytų atitinkamą SSL sertifikatą net jeigu jis nenaudojamas. Sukurti Google Chrome ar Firefox įskiepį, kuris “panaikintų” “nereikalingus” kandidatus balsavimo biuleteniuose aš pats užtrukčiau turbūt mažiau nei valandą.
Atrodytų, kad sprendimas būtų padaryti tai ką padarė estai paskutiniuose rinkimuose – reikalauti, kad vartotojas parsisiųstų konkrečią programą. Tačiau šiuo atveju labai kenčia usability, o taipogi programa turi veikti visose OS ir būti įdiegiama be administratoriaus teisių. Kas blogiausia – nėra jokio būdo patikrinti ką ta programa išvis daro. Jeigu naršyklėje rodomus sertifikatus pasitikrinti žmones galima išmokinti (pvz. atspausdinti lankstinukus su sertifikatų “pirštų atspaudais”), tai pasitikrinti ar apskritai parsiųsta programa yra ta, kurios reikia yra per daug sudėtinga.
Kaip spręsti šią problemą aš nežinau ir, deja, neturiu jokių rekomendacijų ar netgi idėjų. Gal reikia dalinti USB ROM’us su Rinkimų OS?
Ir dar keletas minčių…
Šiame įraše net neprisiliečiau prie rizikos valdymo – apie tai diskusijoje labai neblogą apžvalgą pateikė T. Beinaravičius. Šioje vietoje tik norėčiau pabrėžti, kad nepaisant to, kad esame išdidi ir moderni tauta, Rusijoje ir Kinijoje kompiuterių ir hakerių kiekis, net jeigu mes būtume šimtą kartų už juos gudresni, visada bus daug didesnis negu trys milijonai.
Taipogi nepaminėjau nieko apie įstatyminę bazę – o būtent apie ją estams labai daug rekomendacijų pateikė ESBO savo apžvalgoje. Vienintelis komentaras, kurį turiu šioje srityje, tai pageidaučiau, kad įstatymų leidėjai įtvirtintų Konstitucijos nuostatą, kad referendumai dėl Konstitucijos ar Konstitucinių Įstatymų galėtų būti vykdomi tik tradiciniu, fiziniu, popieriniu būdu.
Tikiuosi, kad bent dalis mano idėjų nėra akiplėšiškai naivios ir kvailos ir tikiuosi, kad atsakingi asmenys, įskaitant LIKS, jas apsvarstys. Norėtųsi, kad tiek mano, tiek kitų žmonių mintys būtų katalogizuotos ir sudėtos mažų mažiausiai į kokį nors diskusijų forumą. Laukiu kitų diskusijų, ir tikiuosi, būsiu Lietuvoje kai jos vyks, arba, kad bus galimybė dalyvauti nuotoliniu būdu!
2 Responses to “Įspūdžiai iš diskusijos apie internetinį balsavimą”
Komentarų RSSŠaunios įžvalgos. Užkabinta tik techninė pusė, bet net ir to turėtų pakakti pasisakant prieš internetinį balsavimą.
Šiaip man atrodo, kad esminė problema, kad kažkas nori gauti stambų projektą ir tiek – nesvarbu kokia kaina.
ačiūūūū… nemažai minčių, bet vėlgi sunku gaišt laiką analizuojant, nes tai dar vienas metodas, taigi ir visa sisteminga analizė būtų, bet aišku, kad metodas nepanaikina anonimiškumo saugumo, anonimiškumo ir stebėjimo trūkumų, o tik vienas problemas sukeičia kitomis. Taip pat konkrečiai mano minėtas Lietuvos interneto srauto perėmimas kažin ar buvo pastebėtas laiku, tai greičiau reakcija į mano ne kartą minėtas problemas. Kaip jau minėjau dėl daug mažesnio incidento amerikoje vyko pusės metų tyrimas su publikacijomis pirmuosiuose puslapiuose, kai tuo tarpu Lietuvoje buvo visiškas nulis.. RRT užima gynybinę savo atsakomybės liniją, bet gerai aišku, kad bent PRASIDĖJO diskusija. Realiai kitai abiejų šalių diskusijai, reikia konkretaus VRK modelių aprašo su visom specifikacijom, tada galima sistematiškai analizuoti, surašyti sistematiškai grėsmes ir priskirti kiekvienai grėsmei tikimybę ir pagal tai kas būtų įvairių rizikų sumų atveju.. Šiaip gerai, kad pripažino, kad tokių srautų perėmimų būna pastoviai ir kad tai problema. Ir net jeigu pastebėtų kad buvo srauto perėmimas, net ir nedidelis, kažin ar kas turėtų galimybę patikrinti ar buvo rizikos ar nebuvo ar kažkas buvo pakeista, todėl tai vadinti “suvaldyta” rizika aš nenorėčiau.