30. november 2025

Mis juhtus e-häälte auditeerimisel KOV 2025 valimistel?

Kuigi tulemus kinnitati luhtunud tervikluse kontrolli põhjal ja tõendatult jäi lugemata vähemalt kaks häält, keeldus Riigikohus tõendeid hindamast ja korduslugemist lubamast, tuginedes puudulikule auditiraportile.

Vaatlejad taotlesid väidetavate kehtetute sedelite ülevaatamist kokku 28 eri anomaalia põhjal, kuid seda neile ei võimaldatud. Kuna avalikest andmetest järeldub, et üks elektroonne hääl jäi õigusvastaselt lugemata tarkvaravea tõttu ja teise lugemata jäämine tuleneb audiitori avalikest märkustest logide kohta, siis on põhjust oletada, et sarnaseid probleeme võib esineda ka ülejäänud sedelitega ja lugemata jäänud sedelite hulk võib olla suuremgi.

Kuigi audiitori raport väidab oma lõppjärelduses, et ei tuvastatud puudusi, mis võiks “kuidagigi mõjutada e-hääletamise tulemusi” ja toimingutes järgiti “andmete terviklikkuse ja konfidentsiaalsuse tagamiseks vajalikke turvalisuse nõudeid”, siis kõik need väited on tõendatult puudulikud või eksitavad.

Elektroonilise hääletuse tehnilise keerukuse ja õigusliku määramatuse tõttu ei suutnud valimiste korraldaja ja audiitor 19.10 häältelugemise ja 20.10 korduslugemise raames teha ühemõtteliselt kindlaks valimistulemust. Lähtuti seisukohast, et mida arvuti ütleb, peab igal juhul olema õige, ning pakuti toimingute kõrvale faktiliselt ebakorrektseid selgitusi või keelduti selgitustest üldse. Häältelugemise dilemmadesse ei toonud selgust ka järgnenud valimiskaebuste menetlus ega audiitori 30.10 raport.

Kuna audiitor on eksperimentaalse netihääletuse kontseptsioonis sisuliselt kinnimakstud vaatleja, kes peaks sellest hoolimata korvama sõltumatute vaatlejate röntgenpilgu all läbiviidava avaliku häältelugemise puudumist, siis audiitori aruande faktiliselt ümberlükatavad ning RVT puudulikke seletusi kriitikavabalt refereerivad väited joonivad alla elektroonilise hääletuse ja selle tulemuse ebausaldusväärsust.

Videokokkuvõte on koostatud RVT 20.10 toimingute ametliku salvestuse ja valimisvaatleja Kaspar Kartanase videote põhjal. Lisatud on audiitori ja valimiste korraldaja jaoks toimingute käigus peamurdmist pakkunud logide rekonstruktsioonid tegelike andmete põhjal, mis on lastud läbi valimistel reaalselt kasutusel olnud auditirakenduse. Need peaks kattuma valimiste korraldaja ja audiitori poolt toimingute käigus arvutiekraanil nähtud logidega osas, mis puudutab poleemikat tekitanud n-n korduvate krüptogrammide juhtumit.

Kuigi audiitor süüdistab Kartanast pahatahtlikkuses ja VVK lausa kuritegelikkuses, siis tema pahategu piirdus oma valijarakenduse kirjutamisega, mille testimise käigus saatis ta serverisse samu krüptogramme korduvalt. Kuigi ta kõiki häälekonteinereid ei salvestanud, on neid siiski piisavalt, et lükata ümber audiitori aruande eksitavad väited ja demonstreerida, et auditiraporti põhjal tuleb järeldada, et lugemata jäi vähemalt kaks korrektselt antud häält – aga toimingute endi piiratud vaadeldavuse tõttu tuleb seda pidada pigem puuduste jäämäe veepealseks osaks.


Audiitori aruanne tervikuna on üldsõnaline dokument, mis ei vasta ühelegi teadaolevale auditeerimise standardile ja eirab oma väidete tõendamise kohustust, aga on ilmselt ka vastuolus audiitoritelt CISA-sertifikaadiga nõutud kutse-eetika sõltumatuse ja objektiivsuse nõuetega. Oma aruandluses audiitor:

  • Eitab võtmehalduse turvareeglite rikkumist proovihääletusel iseenda poolt;
  • Vaikib maha auditeerimise käigus isikuandmete lekitamise iseenda poolt;
  • Varjab kõrvale jäetud häälekonteinerite ja krüptogrammide arvu ning asjaolusid;
  • Sildistab “eksitavaks” auditirakenduse korrektse teate identsete häälekonteinerite kohta;
  • Vaikib maha tegelikult eksitava teate, mis tulenes tarkvaraveast andmetüüpide ühildamisel;
  • Ei kinnita nõutud “valimiskasti terviklust”, piirdudes “krüptogrammide terviklusega”;
  • Ei anna toimingutele sõltumatut hinnangut ja laseb tellijal raporti sisu ette kirjutada.

Kuigi RVT, VVK ja audiitor oma 8.10 vahearuandes jäid kõik lõpuni seisukoha juurde, et prooviläbimisel häälte avamise kiipkaarte rändama lastes võtmehalduse reegleid ei rikutud, siis Riigikohus otsustas, et “rikuti elektroonilise hääletamise käsiraamatus sätestatud nõudeid” (5-25-57 p19). Samasugust puuduste eitamise või lausa kollektiivse kinnimätsimise pitserit kannab ka ülejäänud aruanne, kuigi Riigikohus polnud siiski valmis teisi tõsisemaid rikkumisi sisuliselt arutama – ja tsiteeris õigustusena just sedasama puudulikku aruannet!

Auditeerimise kokkuvõttevideo avaldamise järel sotsmeedias saabus sinna selgitusi jagama VVK liige Olari Koppel, kelle meelest pidigi osad hääled lugemata jätma, sest need olevat olnud “sünteetilised”. Isegi kui isetehtud valijarakendusega antud korduvad krüptogrammid võisid audiitorile peavalu valmistada, peab demokraatlikel valimistel olema iga valija hääl võrdse kaaluga ning on seadusevastane pidada ühe valija nõuetekohaselt antud hääli teistest halvemateks.

Seekordses Riigikohtu kaebuses tõstsin esile just kahe hääle valesti lugemist ja kuigi argumenteerisin kaebetähtaja sisse mahtumist samamoodi nagu EKRE advokaat VVK 3.11 koosolekul, siiski arvas Riigikohtu koosseis Villu Kõve eesistumisel ning Saale Laose ja Nele Siitami osalusel, et minu kaebuse tähtaja arvutamisel ei pea rakendama VVKs kasutusel olnud arvutuspõhimõtet ning keeldus ka tähtaja ennistamise taotlusest, kuigi mul oli põhjust eeldada, et tähtaja arvutamise põhimõtted on eri menetlusastmetes ühtsed – olles teadlikud oma suhtelisest karistamatusest otsiti mugav ettekääne töö tegemata jätmiseks.

Alustan vabas vormis kokkuvõtvat esseed kahe õiguspärase hääle lugemata jätmise tehniliste asjaolude kirjeldusest ning jõuan lõpuks välja elektrooniliste häälte auditeerimise läbikukkumiseni valimiskasti tervikluse ja korrektsuse kontrolli ebaõnnestumise tähenduses, millest saab täpsemalt lugeda alates alamjaotisest auditirakenduse kontrollide luhtumisest.

Valija isikukoodi lõpuga 0303

Audiitor oma raportis ei erista, mis kontrolle viisid nad läbi ise, missuguste kontrollide läbimist jälgisid kõrvalt või missuguste kontrollide tegemist raporteerivad kuulujuttude põhjal. Valija isikukoodi lõpuga 0303 kõrvale jäetud hääle kohta raporteeritakse, et see olevat olnud “digiallkirja vormingule mittevastav”, aga seda audiitor teadaolevalt ei kontrollinud. Kuna hääle juures toodud isikukood viitab korrektsele häälekonteinerile ja digiallkirja vormingule mittevastavuse korral oleks töötlusfaasis kuvatud veakoodi INVALID_BALLOT_SIGNATURE, siis peab audiitor selles hinnangus eksima.

Seejuures väidab audiitor, et “logide /—/ kontroll näitas, et hääletaja oli hääletanud uuesti ja tema e-hääl läks arvesse”, kuid ei väida, et oleks ise sellise kontrolli läbi viinud. Sellise kontrolli läbiviimist audiitori poolt pole võimalik leida ka 20.10 läbitud korduslugemise videost. Valimisteenistus aga oli ka 3.11 pärast auditiraporti avaldamist seisukohal, et uuesti hääletamine järeldub sellest, et kodulehel kuvatud valijate arv 272 206 protseduuride käigus ei vähenenud:

“Ja kui siis võtsime ära kõik korduvad hääled /—/, siis järgi jäigi seesama 272 206, mis meil ka kodulehel oli. Sellest võib järeldada, et need esimesed veateated, mis olid, siis inimene hääletas uuesti, kellel oli kehtivuskinnitus puudu, muidu oleks see ühe võrra väiksem olnud, et see on ka meil kirjas audiitori ju aruandes ka – nii lihtne see loogika ongi.”

Valimisteenistuse eeldatavasti informeeritud seisukoht ei vasta audiitori aruandele, milles väidetakse, et uuesti hääletamises veenduti logide kontrollimise põhjal. Logide kontrollimiseks ma 20.10 valimisvaatlejana tõepoolest taotluse esitasin, aga sellele vastas elektroonse hääletuse juht Indrek Leesi 20.10 toimingute käigus, et “seda me logi järgi ei ole jõudnud veel vaadata”. Kui seda logi oleks korduslugemise käigus RVT või audiitori poolt kontrollitud, siis oleks eeldatavasti Leesi seda ka 3.11 kinnitanud.

Valija isikukoodi lõpuga 0303 uuesti hääletamist järeldas Leesi valijate arvu samaks jäämisest juba 20.10 toimingute käigus, aga see ei ole korrektne, sest kodulehel monitoorimisliidese põhjal kuvatud arvust olid juba maha võetud puuduvate kehtivuskinnitustega sedelid. Seetõttu poleks valijate koguarv saanud muutuda sõltuvalt sellest, kas valija sai uuesti hääletada või mitte. Seega tuleb järeldada, et uuesti hääletamise järelduse on RVT teinud faktiliselt ekslikest eeldustest.

Kuna audiitor lekitas 20.10 toimingute otseülekandes kahe valija isikukoodid koos häälte ajatemplitega, siis avanes valimisvaatleja Kalle Kulbokil võimalus võtta ühendust valijaga isikukoodi lõpuga 0303. Valija kinnitas, et kasutas valijarakendust oma tahteavalduse edastamiseks ainult ühe korra ega hääletanud uuesti. Häälekonteinerile kehtivuskinnituse ja ajatempli hankimine on kogumisteenuse ülesanne ning need küsitakse pärast hääle vastuvõtmist RIA serveri poolt. Kuna hääl võeti vastu, kehtivuskinnitus ja ajatempel aga jäid küsimata, kuid häälekonteiner talletati valimiskastis, siis ei täitnud kogumisteenus oma ülesannet ja ilmsüüta valija hääl eemaldati lõpuks töötlusfaasis varasema tarkvaravea või kogumisteenuse netiühenduse häire tõttu.

VVK liikmel Olari Koplil võib olla õigus, et elektroonilised hääled on oma olemuselt tehislikud või sünteetilised ehk eri tükkidest kunstlikult kokku pandud, aga see ei käi mitte mõne üksiku, vaid kõigi elektrooniliste häälte kohta. Kui VVK õigustab sellega mõnede häälte kokkulugemist ja teiste kõrvalejätmist, siis pole see mitte elektroonilist hääletusviisi kasutava valija süü, vaid eksperimentaalse netihääletuse enda puudujääk, mille raames pole selgelt määratletud, misasi on üldse see hääl, mida peab kokku lugema.

Samasugune olukord leidis aset ka 2024. aasta valimistel, kus töötlusfaasis seadusväliselt eemaldatud häälekonteiner põhjustas selle, et valijat “käsitati ekslikult mittehääletanuna”.

Valija isikukoodi lõpuga 0303 hääl jäeti lugemata korraldaja poolse vea tõttu ja VVK liige Olari Koppel vahendas selle kohta VVK vandenõuteoreetilist seisukohta, et kuna hääle lugemisel tekkis mingi tehniline probleem, siis pidi olema probleemi põhjuseks valijapoolne pingutus hääle sünteetilise iseloomu ärakasutamiseks. Vaatlejad aga on teinud lekkinud isikuandmete abil kindlaks, et tegu oli täiesti juhusliku tavakasutajast valijaga, kellel polnud mingeid tehnilisi ambitsioone, kes lihtsalt kasutas valijarakendust ning arvas, et tema hääl võeti korrektselt vastu.

Iseenesest võetigi hääl korrektselt vastu, aga kuna serveripoolel ei suudetud sel hetkel võtta häälele kehtivuskinnitust ja ajatemplit, siis jäeti täiesti korrektne digiallkirjastatud tahteavaldus töötlusprotsessis lugemata, kuigi sellele oleks saanud puuduvad kvalifitseerivad tõendid küsida ka tagantjärele.

Kuna RVT ja VVK seda vaatamata esitatud valimiskaebustele tegema ei soostunud, siis jätsid nad tagamata KOVVS §1 nõutud valimiste ühetaolisuse põhimõtte, mille kohaselt on iga valija häälel teiste valijate häälte suhtes võrdne kaal – ja argumenteerisid selle põhimõtte tagamise vastu vandenõuteoreetiliste kujutlustega sellest, kuidas elektroonilise hääletuse tehniliste puudujääkide eest vastutavad kujuteldavad pahatahtlikud häkkerid, aga mitte mingil juhul oma ülesandeid puudulikult täitev valimisteenistus või tarkvaratootja.

Valimiskomisjon jättis valija isikukoodi lõpuga 0303 juhtumi sisuliselt arutamata ja oma töö jättis tegemata ka Riigikohus.

Vandenõuteooria sünteetilistest häältest

Sünteetiliste häälte vandenõuteooria võib olla asjakohasem n-n isetehtud valijarakenduste puhul, kuid jääb ka nende puhul ikkagi vandenõuteooriaks. Meil kasutatav eksperimentaalne netihääletus on tervikuna isetehtud ka ses tähenduses, et on mõnevõrra kodukootud ega vasta rahvusvahelistele standarditele, mistõttu pole täit tunnustust välisekspertide poolt või kasutamist demokraatlikes riikides. Ka on elektrooniline hääletus alati pooleli ja vajab enne iga valimistsüklit ja mõnikord selle ajal järeleaitamist, mis tõi ka sel korral kaasa dokumentatsiooni avaldamise alles toimingute eelõhtul ja lähtekoodi avaldamise alles pärast võtmete loomist ning proovihääletust.

Kuna elektrooniliste häälte jaoks kasutatakse ka “mõnevõrra tavapärasest erinevat digiallkirja”, mis ei sisalda kehtivuskinnitust ja ajatemplit, mis küsitakse kogumisteenuse poolt ja säilitatakse kvalifitseerivate tõenditena elektroonilisest häälest endast eraldi, siis võib elektroonilisi hääli pidada oma digiallkirjastatud häälekonteinerite ebaregulaarsuse tõttu mitte ainult sünteetilisteks, vaid lausa sünkretistlikeks. Seejuures ei tee elektroonilisi hääli rohkem ega vähem sünteetiliseks või sünkretistlikuks see, kas nad on antud ametliku valijarakenduse või avalikku protokolli järgiva mitte-ametliku valijarakendussega, sest tehnilises mõttes on need eristamatud.

Mitte-ametlikke valijarakendusi on dokumenteeritult kasutatud valimistel juba aastast 2021 ja need on olnud valimisvaatlejate poolt stabiilselt kasutusel 2023. aasta Riigikogu valimistest. Ühelt poolt on need hädavajalikud tööriistad hääletusprotokolli toimimise lähivaatluseks olukorras, kus valimiste korraldaja tõrjub vaatlejaid häältelugemise protseduuride vaatlemiselt, aga teiselt poolt võimaldavad valijat tehnoloogiliselt diskrimineerimata anda hääle sellisel viisil ja sellises seadmes, nagu nad soovivad. Kuigi Riigikohus soovitas juba 2017. aastal Riigikogul seadustada n-ö sedeli rikkumise ametliku valijarakendusega, peab protestihääle andmiseks elektrooniliselt endiselt kasutama sõltumatut valijarakendust.

Kasutasin täiesti legitiimse protestihääle andmiseks ka ise Kaspar Kartanase loodud valijarakendust ning selles hääles pole ülejäänud elektrooniliste häältega võrreldes mitte midagi rohkem ega vähem sünteetilist peale selle, et valimiste korraldaja ei lubanud valimisvaatlejatel veenduda, et korraldaja ei teinud rikutud sedelite töötlemisel mõnda viga. Arvestades, et rikutud sedelitega tutvumine on tavapärane jaoskondades läbiviidava hääletamise puhul ja anonüümitud ning miksitud sedelid peaks olema võrreldes pabersedelitel häältega samal määral või isegi rohkem isikutustatud, siis oleks pidanud olema selline piirjuhtude järelkontroll osa tavapärasest praktikast, kuid sellest keelduti esoteeriliste spekulatsioonidega ohust hääle salajasusele.

Seetõttu pole ka Kartanase valijarakenduses midagi ebatavalist ega taunimisväärset, kuigi audiitor ja VVK püüavad luua muljet justkui oleks Kaspar Kartanas teinud oma rakendust luues ja testides midagi seadusevastast. VVK oma otsuses lausa annab mõista, et Kaspar Kartanas olevat toime pannud KarS §165 vastava “valimispettuse”, aga selliste väidete tõsiseltvõetavuse puudumisest annab märku fakt, et VVK pole teadaolevalt andnud asjale ametlikku käiku ega esitanud asjakohast süüteoteadet. Pigem võib kahtlustada, et sellise epateeriva süüdistamisega püütakse valimisvaatlejaid hirmutada või lihtsalt juhtida tähelepanu kõrvale omaenda vigadelt.

Korduvate krüptogrammide juhtum

Audiitori aruandes esitatud oletus, et auditirakenduse algoritm ei arvestanud korduvate krüptogrammidega ei vasta tõele, sest IntegrityTool‘i kommentaarides on spetsiifiliselt korduvate krüptogrammide esinemise võimalus välja toodud ja rõhutatud, et seetõttu ei saa kasutada krüptogrammide hoidmiseks set-tüüpi muutujat. Sellest tähelepanekus auditirakendus selles konkreetses kohas ka lähtub, kuid sellest hoolimata võtab sama funktsiooni parameetritena vastu list-tüüpi massiivi nõuetele vastavuse kontrolli läbinud sedelitega ja set-tüüpi massiivi vigaste sedelite massiiviga.

Probleem auditirakenduse käitamisel ei tulnud seega mitte korduvatest krüptogrammidest valimiskastis või nendega mitte arvestamisest spetsifikatsiooni tasemel nagu väitis audiitor korduslugemise videos, vaid lihtsast programmeerimisveast nendega ümberkäivas koodis, kus valimiskastis paiknenud esimese vigase häälekonteinerini jõudes eemaldati set-tüüpi massiivist korraga kõik sama identifikaatoriga vigased häälekonteinerid – probleemiks polnud seejuures mitte häälekonteineris sisaldunud identne krüptogramm, vaid konteinerit identifitseeriv tunnus, mis oleks põhjustanud probleemi ka siis, kui vigaseks tunnistatud häälekonteinerites oleks olnud erinevad krüptogrammid.

Oluline on seega eristada korduvaid krüptogramme ja identseid häälekonteinereid, sest kuigi identsetes häälekonteinerites on tõepoolest ka identsed krüptogrammid, siis väljaspool tehnilist testimist korduvad identsed krüptogrammid eeldatavasti siiski unikaalsetes häälekonteinerites, millel on eraldi digiallkirjad, ajatemplid, identifikaatorid jm tunnused. Identne krüptogramm tekib näiteks siis, kui valija tahteavalduse krüpteerimisel kasutatakse sama juhuslikkust, st efemeerset võtit. Sellise välisel vaatlusel ja tehniliselt korrektse krüptogrammi digiallkirjastamisel pakendatakse see aga kõigi eelduste kohaselt siiski iga kord erinevasse häälekonteinerisse, mis tähendab, et identne krüptogtamm kordub eri häälekonteinerites.

Tegelikult eksivad nii valimiste korraldaja ja audiitor ka hinnangus, justkui oleks korduvad krüptogrammid ülepea põhjustanud mõne häälekonteineri kõrvalejätmise, sest tegelikult reageeris töötlemisrakendus hoopis mitte viiele, vaid kuuele identsele häälekonteinerile, mis edastati Kartanase valijarakenduse testimise käigus käigus 15.10 hommikul, 17.10 õhtul ja 18.10 ennelõunal. Nendest häälekonteineritest mitte ei säilitatud viimast, mida annavad valimiste korraldaja ja audiitor mõista korduslugemise arutelude käigus, vaid hoopis kõige esimene, sest nii näeb ette removeRecurrentResponses funktsioon klassis IvxvBboxLoader.

Kuigi neis kuues identses häälekonteineris olid tõesti ka identsed krüptogrammid, siis neid töötlemisrakendus ei vaadanud ning nendest ei tulenenud ka identsed ajatempliteenuse päringud, sest ei ajatembeldata mitte krüptogrammi üksinda, vaid koos sellele antud allkirjaga. Kui tegu oleks olnud digiallkirjastatud identsete krüptogrammidega, siis oleks häälekonteinerid esiteks erinenud nii digiallkirja enda poolest, mis erinevalt e‑hääletuse toimingute juhi Indrek Leesi poolt häältelugemise selgitusena esitatud filosoofilisest spekulatsioonis väidetust pole ühe ja sama TERE ID-kaardiga digiallkirjastamisel mitte alati identse digiallkirjaga, vaid alati erinevaga (seda võib Leesi iseenda soovituse järgi käies tõepoolest ise kodus järgi proovida), aga teiseks ka konteineri enda parameetrite poolest, sest ilmselt on väga keeruline anda ühe ja sama ID-kaardiga kahte digiallkirja täpselt samal ajahetkel.

Seetõttu oli valimiste korraldaja poolt eksitav korduvate krüptogrammidega seoses tuua välja neid töötlemisfaasis kõrvaldatud mitte küll viite, vaid tegelikult kokku kuute identset häälekonteinerit. Kuna audiitor räägib oma aruandes samuti vaid neist viiest ekslikult korduvate krüptogrammidega seostatavast häälekonteinerist, siis tuleb järeldada, et audiitor on kas RVT poolse eksitamise ohvriks langenud ega ole ise oma aruande koostamise 10 päeva jooksul probleemi olemusest aru saanud – või siis mingil põhjusel varjab tegelikku probleemi koostöös valimiste korraldajaga. Viimast tuleb pidada tõenäolisemaks, kuna audiitor toimingu käigus logisid sirvides loetles ka tegelikke korduvkrüptogrammme, mis ei vastanud viiele töötlusfaasis eemaldatud konteinerile ja mida ka audiitor ise toimingute käigus loeb kokku rohkem kui viis.

Mis tahes on audiitori motiiv identsete krüptogrammide ja nende edastajate tegeliku arvu ärtoomata jätmiseks, tähendab see, et ta ei kirjelda korduvate krüptogrammide juhtumit tõepäraselt, kui püüab jätta muljet, et korduvkrüptogrammid olid seotud viie töötlusfaasis eemaldatud konteineriga. Sellega salgab audiitor maha ülejäänud Kaspar Kartanase valijarakenduse testimis- ja kasutuslogis dokumenteeritud häälekonteinerid, mis sisaldasid lisaks testimise käigus saadetud identsete häälekonteinerite kuuele krüptogrammile räsi algusega CM ka nelja või viite krüptogrammmi räsi algusega 9W ja kahte või kolme krüptogrammi räsi algusega G6, mis olid edastatud juba töökorras valijarakendusega.

Testimislogis on terviklikke häälekonteinereid säilinud kokku üheksa, mis kõik on sertifitseerimiskeskuse kehtivuskinnitustega ja seega tõendatult RIA kogumisteenuse poolt vastu võetud ning eeldatavasti salvestatud ametlikus valimiskastis. Kuna auditirakendus raporteeris viite korduvat krüptogrammi, siis on rekonstrueeritud logis kaks salvestamata krüptogrammi jaotatud võrdselt 9W ja G6 vahel, kuigi tõenäoliseks võib pidada ka seda, et mõlemad Kartanase poolt salvestamata jäänud krüptogrammid olid 9W-krüptogrammid.

Krüptogramm räsi algusega G6

Kartanase logi järgi pidid olema kaks krüptogrammi räsi algusega G6 kahe eri valija viimasena antud ehk anonüümimisele ja dekrüptimisele läinud hääled, mis IVXV ametliku protokolli kohaselt tuli kokku lugeda. Korduvate krüptogrammide esinemine valimiskastis tekitas segadust auditirakenduse väljundis, mis kuvas nendega kokku puutudes töötlusarvuti ekraanil kaks sõnumit:

Vastuvõetud häälte seas on korduvaid krüptogramme

E-valimiskasti verifitseerimise logid on terviklikud: ei

Auditirakenduse tegelikke logisid avalikkusele ei näidatud, aga kuna audiitor ja valimiste korraldaja ei jõudnud nende esmase vaatluse järel selgusele, kuidas seal esinevaid sõnumeid tõlgendada, siis pani valimiste korraldaja ette, et toimunu täpsete asjaolude väljaselgitamise asemel püütakse veenduda, kas valija viimasena antud hääl loeti korrektselt kokku. Seetõttu tundis audiitor spetsiifiliselt huvi, G6-krüptogrammi vastu ning tuvastas, et see esineb anonüümimisele läinud häälte logis ühe korra:

“Mida ma ei näe ja mis on imelik on seesama G6, mida esineb logis ainult ühe korra, aga mida siin ta kaebleb olevat korduvaks hääleks. Samas inimese hääl on läinud kirja. /—/ Kui ma lähen siia, kus on puhastatud väljund, ja vaatan, kus teda esineb, siis anonümiseerimise logis esineb teda ühe korra. Täpselt ühe korra.”

Kuna audiitori avalik tunnistus on ainuke allikas, mille alusel korduvate krüptogrammide töötlemise tegelikke asjaolusid hinnata, siis tuleb audiitori väiteid usaldades järeldada, et lugemata jäi ühe valija viimane hääl, milleks on tema antud G6-krüptogramm. Mõlemate valijate häälekonteinerid on avalikult leitavad sõltumatu häälekontrolli rakenduse häälenäidiste kataloogist ning nendega on võimalik kõigil huvilistel tutvuda:

Isikukood Krüptogrammi räsi Ajatempel Hääle ID
*********2724 G6kFbO2dR2/…/o1Dnk3gk= 2025-10-18 17:04:15 QidOCbQU2TkHnWObeQGVHA==
*********4710 G6kFbO2dR2/…/o1Dnk3gk= 2025-10-18 17:12:15 xSQtTpmgg_DD54FpypM9Yw==

Kuna kogumisteenuse vastusest selgub, et valija isikukoodi lõpuga 2724 sai kandidaatide nimekirja omavalitsuse EHAK-koodiga 0171 jaoks, aga andis hääle kandidaadile 0430.186, siis pidi tema hääl olema üks neist, mis on hääletustulemuses märgitud vormile mittevastavaks omavalitsuses, mille kandidaatide nimekiri talle valijarakenduses edastati. Kuna omavalitsuses EHAK-koodiga 0171 on tõepoolest tuvastatud ühe vorminõuete vastu eksiva krüptogrammi avatekst, siis pidi valija isikukoodi lõpuga 2724 hääl läbima dekrüpteerimise – ja kõrvale pidi enne anonüümimist jäetama teine G6-krüptogrammidest, mis kuulus valijale isikukoodi lõpuga 4710 ehk Kaspar Kartanasele.

Kuigi lähtekoodist on raske leida põhjust, miks pidi üks kahe valija korduva krüptogrammiga häältest töötlemisel kõrvale jäetama, siiski pole põhjust audiitori selgelt ja korduvalt esitatud väidetes kahelda. Loomulikult on ka võimalus, et audiitor lihtsalt eksis ja ei märganud anonüümimisele läinud häälte logis teist G6-krüptogrammi, kuid selle oleks pidanud kindlaks tegema korduslugemise käigus, aga selleks ei leidnud eri taotluste põhjal võimalust ei RVT, VVK ega Riigikohus. Seega jääb kehtima, et 2025. aasta KOV valimistel jäi lugemata Kaspar Kartanase antud täiesti õiguspärane elektrooniline hääl.

Kuigi audiitor väitis korduslugemise käigus, et sama krüptogrammi andmine pole protokollikohane käitumine, siiski ei ole protokolli kirjelduses nõuet, et samu krüptogramme esitada ei võiks. Kuna korduvate krüptogrammidega oli arvestanud ka auditirakendus, kuigi oli teinud korduvate häälekonteinerite protsessimise koodis vea, siis tuleb järeldada, et süsteem tervikuna pidi olema ettevalmistatud korduvate krüptogrammide vastuvõtmiseks ja kokkulugemiseks. Seejuures on korduvaid krüptogramme või häälekonteinereid testimise käigus kogumisteenusele esitatud ka varasematel aastatel, mistõttu pole tehniline nähtus iseenesest uus – kuigi uus oli see, et sama krüptogramm esitati kahe eri valija viimase, st lugemisele mineva häälena.

Rünne valimissaladuse vastu

Segaseks jääb, miks audiitor oma raportis piirdub valimiste korraldaja osutatud viie eemaldatud häälekonteineri osutamisga ning vaikib maha korduvate krüptogrammide tegeliku arvu ja selle, et korduvaid krüptogramme polnud mitte ühelt, vaid kahelt eri valijalt. Auditeerimise videost on küllalt selgesti näha, kuidas audiitori kaasatud tehniline ekspert Mart Oruaas püüab teha korduvkrüptogrammide jälgede ajamisel sisulist tööd ning anda selle käigus adekvaatseid hinnanguid. Raporti allkirjastanud vastutav audiitor Jaan Oruaas aga pigem püüab kuulata, mida elektroonilise hääletuse toimingute juht Indrek Leesi kui kliendi esindaja talle soovitab.

Kui korduvad krüptogrammid tõepoolest ajasid midagi sassi häälte kokkulugemisel, siis elektroonilise hääletuse toimingute juhi soov seda varjata poleks üllatav ja võtmete rändamamineku juhtumi põhjal ei saa pidada üllatavaks ka audiitori valmisolekut teha selline pettus kaasa. Siiski on korduvate krüptogrammide probleem mitte niivõrd tehniline tarkvaralise lahenduse mõttes, vaid ulatub IVXV protokolli enda tasemele, sest võimaldab ründega hääle salajasuse vastu tühistada protokolli fundamentaalsed turvaeeldused.

Selgitasin Õhtulehe ajakirjanikule korduvate krüptogrammide poolt kujutatavat ohtu valimissaladusele järgneva mõtteeksperimendiga:

Isegi kui sama inimene hääletab mitu korda sama kandidaadi poolt, tekib valimiskasti erinev krüptogramm. Vastupidine aga ei kehti: kui e-hääle krüptogrammid on identsed, on ka sinna peidetud info sama. Kes teab, millise kandidaadi kasuks anti hääl ühe krüptogrammiga, teaks ka seda, mis on peidetud identsesse krüptogrammi.

“Hüpoteetiliselt võib ette kujutada, et kõik valijad lepivad omavahel kokku, et genereerime kõigi kandidaatide krüptogrammid ette ära, paneme tabelisse ja iga valija võtab sealt krüptogrammi ja saadab ainult selle, ta ei genereeri seda ise juhuslikkusega. Kõik, kes hääletavad Edgar Savisaare poolt, saadavad Edgar Savisaare krüptogrammi. Kes hääletavad Andrus Ansipi poolt, neil on Andrus Ansipi krüptogramm. Sellisel juhul oleks see avalik hääletus. Valimisteenistus saaks kõigi hääletajate hääle teada. Valimisteenistus justkui ei tohiks vaadata ja nad ka ütlevad, et nad ei vaata, aga valimised peavad olema selliselt korraldatud, et nad ei ütle, et me ausõna ei vaadanud, vaid nii, et nad ei saakski vaadata.”

Kuigi valimiste korraldaja ja valimiskomisjon vaatavad üldiselt läbi sõrmede sellele, et tarkvara või selle aluseks olev IVXV protokoll ei vasta RKVS §486 “Hääletamise salajasuse” nõuetele ning rakendavad seetõttu enda ja avalikkuse rahustamiseks aukartust äratavas koguses soovmõtlemist, siis mõned eriti ilmsed ja skaleeruvad ründed on siiski ka protokolli autoritele liiga ohtlikud, et püüda neid eirata.

On lihtsalt piisavalt suur tõenäosus, et mõni radikaalsem erakond või muu seltskond otsustab valimistel sellise tabeli koostada või oma n-ö ametlikku krüptogrammi levitada. Isegi kui sama krüptogrammi kasutab ainult 1000 valijat, oleks valimiste korraldaja poolne võimalus nende 1000 valija häält serveripoolel lihtsalt ilma VVK/RVT käes olevaid võtmeosakuid vajamata vaadata liiga ilmne puudus, et püüda seda tavapärase Riigikohtu poolse põiklemisega summutada. Seetõttu võib ennustada, et hoolimata IVXV süstemaatilisest puudulikkusest valimissaladuse tagamisel keeldub selle tõve homöopaatiliste ravina kogumisteenus korduvkrüptogramme vastu võtmast juba järgmistel valimistel.

Õigupoolest teostus see rünne miniatuuris juba KOV valimistel, sest seesama peamurdmist ja kõneainet pakkunud krüptogramm räsi algusega G6 pärines tegelikult 30.09 avalikult proovihääletuselt, kus see RVT, VVK, audiitori ja vaatlejate silme all dekrüpteeriti ja selle sisu kõigile avalikult teatavaks tehti:

Isikukood Krüptogrammi räsi Ajatempel Hääle ID
*********4710 G6kFbO2dR2/…/o1Dnk3gk= 2025-09-30 10:57:51 ianDSBv7JSxBrCsF5xgy2A==

Proovihääletusel dekrüpteeritud ja avalikustatud krüptogrammi taaskasutamine tegelikel valimistel loomulikult ei taga enam valimissaladust ja valimisteenistusele oli hääle vastuvõtmise hetkest teada, kellel poolt valijad isikuoodi lõppudega 2724 ja 4710 hääletasid – selles veendumiseks pidi valimisteenistus lihtsalt vaatama proovihääletuse tulemuste avalikku tabelisse, mis on kõigile vaatamiseks üleval valimiste korraldaja veebilehel.

Auditirakenduse kontrollide luhtumine

RKVS §488 lg11 ja e‑hääletuse üldraamistiku ptk 8.4 järgi oli audiitori ülesanne tagada endapoolsete kontrollidega sisendi ja väljundi, sh kogu valimiskasti terviklus. Auditirakendus pidi tegema kolm kontrolli, aga kukkus neist esimeses läbi ning katkestas töö teatega, et valimiskasti logid pole terviklikud. Kuigi valimiste korraldaja pealekäimisel sildistas audiitor Jaan Oruaas teate avalikul korduslugemisel lõpuks “eksitavaks”, ei saanud seda tol hetkel kindlasti pidada informeeritud hinnanguks.

Audiitor arvas, et kõigi valijate viimane hääl läks hoolimata anomaaliatest lugemisele, aga pööras tähelepanu ainult ühele kahest korduvaid krüptogramme edastanud valijast ning korraldaja poolse eksitamise tulemusena samastas viis töötlusfaasis eemaldatud identset häälekonteinerit viie korduva krüptogrammiga auditirakenduse logis:

There are 5 ciphertext recurrences among the accepted ballots
Recurring ballot: G6kFbO2dR2GFRfQ1PgVBDXp652p8M0+NRC4o1Dnk3gk=
Recurring ballot: 9WhZ6IFiaA8Hhw8/vrHBhvY9+VwGz89olrW02YrRvUQ=

Selline samastamine ei ole faktiliselt korrektne ja audiitor jätab niimoodi tähelepanuta tegelikud kokku 13 korduvat krüptogrammi. Ilma tegelikke fakte arvestamata ei saanud olla audiitori hinnangud häälekonteinerite ja krüptogrammidega aset leidnud sündmuste kohta korrektsed. Audiitori kümme päeva hiljem allkirjastatud aruandes võetakse tema seisukoht kokku nii:

Audiitorrakendus ei kinnitanud sellel hetkel krüptogrammide terviklust. Rakenduse teadete analüüs näitas, et audiitorrakendus ei arvesta kasutusjuhtudega, kus hääletajad loovad oma valijarakenduse ning annavad korduvalt sama krüptogrammiga e-hääle. Niisugusel juhul on sama krüptogramm lugemisele minevate e-häälte ja tühistatud e-häälte hulgas, seetõttu auditirakendus luges selle veaks ning väljastas eksitava teate, kuigi krüptogrammid olid terviklikud.

Ülal juba osutasin audiitori ekslikule arusaamale, et tema jooksutatav auditirakendus ei arvestanud korduvate krüptogrammidega – arvestas küll, kuid sisaldas set ja list massiivitüüpide segamisest tulenevat tarkvaraviga hoopis identsete häälekonteinerite ja mitte korduvate krüptogrammide töötlemisel. Seega ei olnud audiitori hinnang informeeritud ka kümme päeva hiljem, kui ta tõepoolest oleks võinud olla auditirakenduse koodist järele vaadanud, mille tõttu see tegelikult veateate andis.

Seejuures jätab audiitor raportis tähelepanuta, et korduslugemisel oli jutuks mitte auditirakenduse logis olev üks väide sellest, et sama sedel on korraga lugemisele minevate kui tagasilükatud häälekonteinerite hulgas, vaid juttu oli kahest üksteisele vastu rääkivast lausest:

Ballot 'BMSEdp1ljc0nvGnAFahMCg==' present in both the acceptance and rejection logs
Ballot 'BMSEdp1ljc0nvGnAFahMCg==' not found in the acceptance/rejection logs
Ballot 'BMSEdp1ljc0nvGnAFahMCg==' not found in the acceptance/rejection logs
Ballot 'BMSEdp1ljc0nvGnAFahMCg==' not found in the acceptance/rejection logs
Ballot 'BMSEdp1ljc0nvGnAFahMCg==' not found in the acceptance/rejection logs
Ballot 'BMSEdp1ljc0nvGnAFahMCg==' not found in the acceptance/rejection logs

Esimene teade häälekonteineri esinemisest mõlemas logis on identsete häälekonteinerite olemasolul täiesti korrektne väide ja annab tõepoolest märku, et ilma logisid vaatamata pole võimalik valimiskasti terviklust kinnitada ega ümber lükata. Audiitor jätab raportis tähelepanuta aga teise ja tõepoolest vastuolulise teate, mille põhjuseks oli ühildumatute massiivitüüpide segistamine auditirakenduses, mille tõttu eemaldati esimese BMSEdp1ljc0nvGnAFahMCg== sedelini jõudes massiivist vastav kirje ja kui jõuti tsükliga samasse kohta järgneval viiel korral, siis kuvati teadet, et sama identifikaatoriga sedelit pole kummaski logis.

Kui identsed häälekonteinerid peavadki olema mõlemas logis ja logide tervikluses veendumiseks piisab sellest, kui lugeda konteinerite arv kokku ja veenduda, et üks neist on vastuõetud konteinerite omas ja ülejäänud tagasilükatud konteinerite omas, siis väidetavalt algses valimiskastis olnud konteineri puudumine mõlemas logis on see, mis seab valimiskasti tervikluse kahtluse alla.

Audiitor oma raportis ei selgita, missuguse kontrolliga ta ületas probleemi sellega, et viit häälekonteinerit pole ei vastuvõetud ega tagasilükatud konteinerite seas, st need on valimiskastist kaduma läinud. Selle asemel vaikib audiitor oma raportis lihtsalt maha selle tõepoolest eksliku väite, mis tema tehnilisele eksperdile korduslugemise käigus vastuoluline tundus ja mille põhjuseks oli tarkvaraviga. Kui audiitor iseenda tuvastatud puuduse maha vaikib ega too välja, et tõepoolest ekslik väide tekkis tarkvaravea tõttu, siis kuidas ta sai üldse olla veendunud, et valimiskast oli tervikik? Audiitori aruandest põhjust selliseks veendumuseks ei leia ja sellest tuleb järeldada, et audiitor ei olnud valimiskasti tervikluses põhjendatult veendunud, st ta võis parimal juhul valimiskasti terviklikkust üksnes oletada.

Audiitor kordab ekslikku väidet auditirakenduses realiseeritud kasutusjuhtude kohta järgmise lõigu alguses ja tegelike tehniliste asjaolude väljaselgitamise asemel liitub RVT/VVK vandenõuteoreetikute ridadega ning asub spekuleerima valijate või valimisvaatlejate oletatavate motiivide tõenäosuse üle:

Täiendav logide analüüs kinnitas, et vea andis audiitorrakendus, kuna selle algoritm ei sisalda kasutusjuhtu, kui isetehtud valijarakendusega saadetakse kogujasse üks ja sama krüptogramm korduvalt. Niisugusel juhul on tegemist pahatahtliku käitumisega, sest eesmärgiks on tõenäoliselt e-hääletuse süsteemi proovilepanek. Korduv e-hääle saatmine nõuab häid IT-oskusi. Logide analüüs näitas, et tegemist oli sama hääletajaga, kelle hääled said määrangu “Registreerimisteenuse päring pole unikaalne”. Tema antud häältest läks anonümiseerimise etappi ainult viimane.

Veendudes, et identseid häälekonteinereid ja korduvaid krüptogramme edastanud valija isikukoodi lõpuga 2724 häälekonteineritest läks viimane krüptpgrammi räsi algusega G6 sisaldanud konteiner anonüümimisele, talitas audiitor kahtlemata õigesti, kuid samas kinnitab audiitor, et anonüümimisele ei läinud G6-krüptogrammi sisaldanud konteiner valijalt isikukoodi lõpuga 4710.

Selle asemel, et spekuleerida valijate isikuomaduste üle oleks pidanud audiitor tegema oma tööd ja veenduma, et kõik hääled on korrektselt kokku loetud, st ta oleks pidanud püüdma välja uurida, miks ei olnud anonüümimisele läinud häälte seas teist krüptogrammi räsi algusega G6. Kuna sedasama G6-krüptogrammi andnud valijaid oli tõendatult rohkem kui üks ja pole ka põhjust kahelda, et tegu oli mõlema valija viimase häälega, aga audiitor räägib ühest valijast, siis on ta jätnud olulise fakti tähelepanuta.

Seega jääb puudulikuks raporti lõppjärelduse osa, milles audiitor väidab, et ei tuvastanud “puudusi, mis võiksid kuidagigi mõjutada e-hääletamise tulemusi” – kui need puudused jäid tuvastamata, siis seda audiitori tegemata töö ja mitte selle tõttu, et selliste puuduste olemasolu kohta puudusid tõendid, sest nii valija isikukoodi lõpuga 0303 kui valija isikukoodi lõpuga 4710 hääl on avaliku häältelugemise käigus avaldatud info põhjal jäänud lugemata.

Valimiskasti tagamata terviklus

Kuigi audiitor on auditirakendust jooksutades ja selle väljundit analüüsides hinnanud valesti korduvate krüptogrammide arvu, neid edastanud isikute arvu, ekslikult samastanud korduvad krüptogrammid identsete häälekonteineritega, sildistanud eksitavaks auditirakenduse korrektse teate, aga jätnud käsitlemata tarkvaraveast tuleneva tegeliku eksitava teate, kuid on siiski oletanud, et “krüptogrammid on terviklikud”, siiski väärib arutelu, kas või mis piirini võib see väide olla tõene vaatamata sellele, et audiitor ei tuvastanud adekvaatselt korduvkrüptogrammide ja valimiskasti logide terviklikkuse kontrolli läbikukkumist asjaolusid.

Audiitor ei pidanud seaduse, dokumentatsiooni ega pakkumuskutse järgi kontrollima ega tagama “krüptogrammide terviklust” ja pole päriselt selge, mida see üldse tähendada võiks.

RKVS §488 lg11 järgi peab audiitor tagama “protsesside sisendi ja väljundi omavahelist vastavust, terviklust ning autentsust” ja lähim “krüptogrammide terviklusele” on sama lõike p3 osutatud “elektrooniliste häälte terviklus”. Selle all peetakse aga silmas iga digiallkirjastatud häälekonteineri tervikluse ja konteineri terviklust tagava digiallkirja kehtivuse eraldiseisvat, st ükshaaval kontrollimist, mis vastab RKVS §484 lg1 p4 “digitaalallkirjade ja kogujalt saadud andmete tervikluse” kontrollimisele, mida nimetatakse pakkumuskutse punktis 5.4 ka audiitori õigusena “kontrollida kõikide protsesside käigus moodustatud digitaalselt allkirjastatud digikonteinereid”.

Kuigi digiallkirjade kehtivuse ja konteinerite tervikluse kontrollimise õigus audiitoril oli, siiski seda õigust ei kasutatud. Kui eeldada, et “krüptogrammide tervikluse” all peeti silmas samamoodi iga krüptogrammi korrektsuse kontrolli nagu seda kirjeldatakse protokollide kirjelduse lisade ptk 11 toodud “krüptogrammide kehtivuse kontrolli veakoodide” tabelis 11.2, mis loetleb krüptogrammide võimalikke hälbimisi ElGamali krüptoprotokolli raamidest veakoodide INVALID_* kujul – ka selliseid kontrolle audiitor teadaolevalt ei teostanud.

Kuigi audiitor ei pidanud kontrollima ega vastupidiselt raportis väidetule ei kontrollinud “krüptogrammide terviklust”, siiski pidi ta kontrollima “valimiskasti terviklust” ja selleks pidi ta auditirakenduse abil viima läbi nõutud kontrollid.

Elektroonilise hääletamise üldraamistiku ptk 8.4 järgi pidi audiitor kontrollima andmeauditite käigus “protsesside sisendi ja väljundi omavahelist kooskõla ning protsesside käigus digitaalselt allkirjastatud andmete terviklust ja autentsust” ja auditirakenduse poolt kaetavate töötlusetapi logide kontrollimise vaatenurgast asjassepuutuvad väljundid on:

  • Koguja väljund: e-valimiskasti kogutud hääled.
  • Registreerimisteenuse väljund: Kogujale väljastatud ajamärgendid.
  • Väljundid Töötleja tööetappidest: e-valimiskasti tervikluse kontroll, korduvate häälte tühistamine, topelthäälte tühistamine, häälte anonüümistamine, miksimine.

Selgitvalt on üldraamistikus lisatud:

Andmeauditi käigus veendub Audiitor e-valimiskasti tervikluse, korduvate häälte tühistamise ja häälte anonüümistamise korrektsuses.

Miksimise ja kokkulugemise verifitseerimiseks kasutab Audiitor lisaks sisendile ja väljundile ka miksimis- või lugemistõendit. Nende andmekogumite omavahelist kooskõla kontrollitakse Auditirakenduse abil, mille usaldatavuse tagamine on Audiitori ülesanne.

Sellest selgub, et auditirakenduse poolt kontrollitavaks sisendiks on kogumisteenuse väljund ehk elektrooniline valimiskast sinna kogutud häältega ja kontrollitavaks väljundiks on anomüümitud valimiskast, mille miksimise ja kokkulugemise kontrolliks on omakorda eraldi auditirakendusest sõltumatud vahendid. Seega pidi audiitor auditirakendusega kontrollima kogumisteenusest saadud elektroonilise valimiskasti ja anonüümitud valimiskasti kooskõla, st nende andmete terviklust ning tagama seejuures kasutatava auditirakenduse usaldusväärsuse.

Üldraamistikus nimetatud kolm kontrolli, st 1) e-valimiskasti tervikluse, 2) korduvate häälte tühistamise ja 3) häälte anonüümistamise korrektsuse kontroll vastavad kumuleeruvalt neile kolmele kontrollile, mida püüdis korduslugemise käigus läbida auditirakendus, aga millest esimese läbimine ei õnnestunud ja mille tulemuseks oli E-valimiskasti verifitseerimise logid on terviklikud: ei.

Faktiliselt tagab valimiskasti terviklikkust mitte ainult esimene kontroll, vaid kolm kontrolli kombineeritult, mille kohta võib lugeda selgitust auditirakenduse lähtekoodi kommentaarist:

// If all checks succeed, the following audit trail is verified:
// - anon BB matches with anon log
// - invalid ballots (log) + valid ballots (log) = original BB
// - anon ballots (log) + squashed ballots (log) + revoked ballots (log) = valid ballots (log)
// Inferred: anon ballots are part of the original ballot box.

Lähtekoodi kommentaarides teisel kohal olevat tagasilükatud (“invalid”) ja vastuvõetud (“valid” või “accepted”) häälekonteinerite tervikluse kontrolli auditiakendus ei suutnud läbida, kuid koodi kommentaarides esimesel ja viimasel kohal olevad kaks kontrolli läbiti pärast vigade korral katkestamise väljalülitamist valimiste korraldaja poolt. Selle sammuga võttis valimiste korraldaja audiitorilt tema töö sisuliselt üle ja see on ilmne ka audiitori reageeringust, kes ei saanud isegi kahekordse vaatamise järel aru (vt 5:10.22 ja 5:13.14), et auditirakenduse väljundis on aset leidnud muutus ja pidas tulemust endiselt negatiivseks – kuni elektroonilise hääletuse toimingute juht Indrek Leesi soovitud muutusele osutas ja dikteeris audiitorile ette, mida too sellest järeldama ja selle kohta raportisse kirjutama peaks.

Auditirakenduse käitamise lõpptulemus jäi kujule, kus kolmest nõutud kontrollist oli üks läbi kukkunud, st auditirakendus ei pidanud valimiskasti terviklikuks, mille kohta audiitori kaasatud tehniline ekspert õigusega ütles, et see on “tegelikult päris paha lause”:

Vastuvõetud häälte seas on korduvaid krüptogramme

E-valimiskasti verifitseerimise logid on terviklikud: ei
Anonüümimise logi klapib anonüümitud e-valimiskastiga: jah
Tühistusnimekirjad klapivad e-valimiskastiga: jah

Auditirakendus lõpetas töö vigadeta

Kuna audiitor tõlgendas oma raportis lauset valimiskasti verifitseerimise logide kohta valesti ja pidas ekslikuks igati korrektset veateadet ega proovinud veenduda selles, miks üks kahe eri valija viimase häälena antud krüptogrammist räsi algusega G6 jäi lugemata, kuid püüdis auditirakenduse väljundist Indrek Leesi soovitusel järeldada käigu pealt leiutatud “krüptogrammide terviklust”, mida ta tegelikult ei kontrollinud ega pidanudki kontrollima, siis ei olnud audiitor ei 20.10 korduslugemise lõpuks kl 15:16 ega raporti avaldamise ajaks 30.11 põhjendatult veendunud, et kogumisteenuse väljund ehk elektrooniline valimiskast vastas töötlemisprotsessi väljundile ehk anonüümitud valimiskastile, st audiitoril polnud ühelgi hetkel põhjendatud veendumust, et elektrooniline valimiskast on terviklik.

Sellest tuleb järeldada, et Arne Koitmäe allkirjastas küll KOVVS §542 lk10 alusel vahetult pärast audiitori 20.10 läbi viidud toiminguid hääletustulemuse “pärast elektroonilise hääletamise süsteemi andmete tervikluse kontrolli”, aga tegi seda hoolimata sellest, et RKVS §488 “tervikluse nõuete” lg 9-10 vastav audiitori poolne kontroll oli läbi kukkunud. Isegi kui selline tegevus pole seadusega otseses vastuolus, siiski oleks pidanud sellega kaasnema ammendav selgitus, miks läbikukkunud valimiskasti tervikluse kontrolli järel pidas RVT juht Koitmäe siiski võimalikuks allkirjastada hääletustulemuse – sest seaduse mõte ilmselgelt pole, et tulemusi võib allkirjastada sõltumata kontrollide tulemustest.

Sellist põhjendust valimisteenistuse poolt pole avaldatud siiani, vaid on valimiskaebuste menetluses piirdutud samasuguse tehniliselt ebakorrektse jutuga “krüptogrammide terviklusest”, millega esines 20.10 korduslugemise lõpul elektroonilise hääletamise toimingute juht Indrek Leesi.

Järeldused kontrollide läbikukkumisest

Valimisteenistuse pakutud ja audiitori poolt hädalahendusena omaks võetud taktika, et veenduda, kas kõigi oletatavalt problemaatiliste, st töötlemisel vigu andnud valijate hääled jõudsid lugemisele, ei ole iseenesest piisav, et veenduda kogumisteenuse väljundi ehk elektroonilise valimiskasti, mis oli töötlemisprotsessi sisendiks, ja töötlemisprotsessi väljundi ehk anonüümitud valimiskasti omavahelises kooskõlas selles tähenduses, et kas tulemus tehti kindlaks korrektselt – iseenesest pidi üldraamistiku ptk 8.4 “korduvate häälte tühistamise ja häälte anonüümistamise korrektsuses” veendumine olema samuti kontrollide olemuslik osa.

Kuna tuvastati, et ainult üks kahest lugemisele minema pidanud G6-krüptogrammist jõudis anonüümimise logisse, siis ei õnnestunud tuvastada toimingute korrektsust isegi valimisteenistuse poolt väljapakutud ebapiisavas tähenduses, aga korduvate häälte tühistamise ja anonüümimise korrektsust oleks saanud kontrollida ainult sõltumatu häältelugemise tarkvaraga, mida audiitor 20.10 toimingute raames ei kasutanud. Seega ei oleks saanud audiitor ka auditirakenduse kontrollide õnnestumise järel kinnitada, et veendus rakenduse jooksutamise abil tulemuste korrektsuses.

Kuigi auditirakendus sellisel kujul võeti kasutusele lähtuvalt Kristjan Düüna 2024. aasta magistritöös praktiliselt näitlikustatud ründest (vt lk 39 kokkuvõtet ja ründe kirjeldust lk 32-33), millele olid oma 2023. aasta elektroonilise hääletuse raporti lk 7 ja allmärkuses 15 abstraktsemas vormis osutanud ODIHRi rahvusvahelised vaatlejad, jääb auditirakendus siiski selle ründe välistamisel poolikuks. Lahendamata jääb probleem, et korraldaja saab auditirakendusele tuvastamatult tõsta ümber häälekonteinereid eri häälte kategooriate vahel – näiteks võib valimiste korraldaja anda audiitorile ette logid, kus on valimistulemuse ebaseadusliku mõjutamise eesmärgil märgitud korduvhäälteks kõigi selliste valijate viimasena antud, st anonüümimisele minema pidanud hääled, kellest võib avaliku teabe nagu erakondade liikmete nimekirjad vmt põhjal eeldada, et nad võivad hääletada mõne võltsija jaoks ebasoovitava erakonna poolt.

Võltsija strateegia oleks sellise manipulatsiooni puhul vahetada välja kõigi oletatavalt halva erakonna toetajate hääled mõne oletatavalt hea erakonna toetajate kordus- või pabersedelil ülehääletamisega tühistatud häälte vastu. Niimoodi saab tulemust võltsida ka nii, et säilib valimiskasti nominaalne “terviklus”, st ükski hääl pole läinud kaduma ega ühtegi lisatud.

Selliseid võltsitavaid korduvhääli oli ametliku statistika põhjal kokku 7182 ja audiitor tegi pistelist kontrolli üksnes 1388 pabersedelitega tühistatud hääle korrektsuses veendumiseks, milles veendumist üldraamistiku ptk 8.4 auditirakenduse abil ette ei näe ja mille tõhususes võib kahelda, kuna audiitor paistis selle juures lähtuvat ainult talle isiklikult teadaolevatest tühistatud elektroonilistest häältest (“vaatame suht suvaliselt paari nime”) ja kontrollimisel piirduti ka raporti lk 4 andmetel “juhuvalimiga, kas tühistati üksnes jaoskondades hääletanute e-hääled”.

Ka ei paistnud audiitor kontrollivat pabersedeliga tühistatud häälte puudumist anonüümimisele läinud häälte nimekirjas, vaid lihtsalt tegevat pistelist kontrolli tühistusnimekirjas leiduvatele kirjetele endile – selline kontroll ei saanuks välistada võltsimist ka juhul, kui anonüümitud kastis oleks tegelikult loetama peetud häälte asemel olnud kõik 1388 tühistusnimekirjas olnud häält. Kuna audiitor raportis ei ütle, missuguse logi või valimiskasti põhjal ta tühistusnimekirja pistelist kontrolli tegi, siis puudub raporti väitel sisuline tõendusväärtus.

Samasugust häälte ümbertõstmist kategooriate vahel saab rakendada ka tagasilükatud ja vastuvõetud häälte vahel, mille kontroll läbi kukkus ja mida oleks audiitor seega pidanud kontrollima käsitsi. Seetõttu ei taga logide põhjal veendumine, et valija väidetav viimasena antud hääl läks lugemisele seda, et tegelikku viimast häält ei tõstetud töötlemise käigus kümne tagasilükatud hääle hulka. Seetõttu oleks pidanud audiitor ükshaaval üle vaatama kõik kümme tagasilükatud häälekonteinerit ning nende tagasilükkamise käigus esinenud 25 eri veateadet ja veenduma tegeliku valimiskasti põhjal, et ükski veateade polnud valehäire ja kõigi veateadete tulemusel tehti valimiskasti nõuetekohane muudatus.

Selline nn kehtetute sedelite kui piirjuhtude ülevaatamise praktika on tavapärane protseduur jaoskondades pabersedelitega läbiviidava hääletuse puhul ja kui soovida, et elektroonilise hääletamise tulemused oleks ligilähedaselt usaldusväärsed, ei pääse anomaalsete juhtumite avalikust analüüsist ka elektroonilise hääletuse tulemuste avaliku lugemise käigus. Kuna vaatlejad taotlesid aga 25 eri veateate alusel kõrvaldatud elektroonilise sedeli eemaldamise põhjuste ülevaatamist avalike toimingute käigus, mida neile aga ei võimaldatud, ja audiitori väited valimiskasti tervikluse kontrolli õnnestumisest olid ennatlikud, siis võib lugemata jäänud või valesti kokku loetud hääli olla tegelikkuses olla veelgi suurem hulk.

Paradoksaalselt oli valimiste korraldajal töötlusprotsessi käigus keeruline vahetada välja just kuute identset häälekonteinerit, sest kõik viis üleliigset eemaldati tagasilükatud häälte hulgast kuuest esimeseni jõudmisel ja kui järgnevas logis poleks esinenud viis korda vastuolulist teadet Ballot 'BMSEdp1ljc0nvGnAFahMCg==' not found in the acceptance/rejection logs, siis oleks see tähendanud võltsimist. Küll aga oleks tagasilükatud ja vastuvõetud häälte omavaheline vahetamine olnud võimalik ülejäänud häälekonteinerite puhul.

Audiitor ei selgita oma raportis, missuguse käsitsikontrolli abil korvas ta automaatkontrolli läbikukkumise ja missugustest teadetest ta järeldas toimingute korrektsust, sest hääle krüptogrammi räsi olemaolust mõnes häälte kategooriatest ei järeldu, et hääl oli õiges kategoorias ja jõudis korrektselt anonüümimisele ning sellele järgnevale dekrüptimisele – see lihtsalt näitab, et ükski häälekonteiner ei kadunud lihtsalt ära või ühtegi ei tekkinud juurde, aga ei näita, et konteinerid olid õigetes kategooriates, sh ei näita see, et valija viimane hääl loeti õigesti kokku. Nii on ainult osaliselt tõsi Indrek Leesi ja audiitori väide, et “krüptogrammid sisaldusid RVTle üle antud e-valimiskastis ja krüptogramme ei ole lisatud, muudetud, vahetatud või kustutatud”, sest sellest ei järeldu nende paiknemine õigetes kategooriates, st häälte korrektne kokkulugemine.

Seega tuleb tunnistada, et tarkvaravea tõttu läbikukkunud kontroll oletatavasti valimiskasti terviklusele saatuslik polnud, vaid oli oma olemuselt neutraalne või isegi võltsimise tõenäosust vähendav, mis tähendab, et hoolimata valimisteenistuse ja audiitori eksitavast väitest, et “krüptogrammid oli terviklikud”, võib pidada tõenäoliseks, et ka “valimiskast oli terviklik” – ja seda vaatamata sellele, et audiitor ja valimisteenistus ajasid omavahel sassi identsed häälekonteinerid, korduvad krüptogrammid ja eksitasid nii läbitud kontrollide kui tegelike veateadete ja tarkvaravigade osas.

Kontrollitavuse kontseptsiooni puudulikkus

Probleemidele osutab hoopis see, et audiitori täiendavatest käsitsikontrollidest ja aruandest ei järeldu mitte vigade puudumine, vaid kahe hääle lugemata jäämine, mis ei luba järeldada, et kolmest kontrollist ühe läbikukkumine sai käsitsikontrollidega korvatud, vaid hoopis sunnib järeldama, et täiendavate vigade ja võimalike manipulatsioonide avastamiseks oleks pidanud tegema veelgi rohkem ja hoopis sisulisemaid kontrolle.

Suuremaks probleemiks võib seega hoopis olla hoopis, et Kristjan Düüna 2024. aasta magistritöös näitlikustatud võimalus vahetada töötlusetapis audiitorile märkamatult välja hääli on transformeerunud võimaluseks vahetada kehtivaid hääli auditirakendusele märkamatult pabersedeliga tühistatud või elektrooniliselt ülehääletatud nn korduvate häältga ning mõjutada tulemust võltsija soovi kohaselt valimiskasti jõudnud häälte valesti kategoriseerimise teel.

Kuigi IntegrityTool‘i arendamisel tehti programmeerimisviga, mis ajas audiitori segadusse ja mille ületamisel audiitor eksis või eksitas oma raportis nii vea põhjuse diagnoosimisel kui lahendamisel, siiski ilmnes tegelike põhjuste väljaselgitamisel, et viga iseenesest valimiskasti terviklusele saatuslik polnud. Selle põhjal võib siiski anda kaks oletuslikku järeldust:

  1. Audiitor ei pruukinud eksida või eksitada üksnes identsete krüptogrammide tõttu välja tulnud programmeerimisvea osas, vaid ka kahe kehtetu hääle osas. Kui see nii on, siis jäi valija isikukoodi lõpuga 0303 hääl lugemata, kuigi audiitor väidab vastupidist, aga kui audiitor on oma hinnangutes süstemaatiliselt ekslik, siis on võimalik, et valija isikukoodi lõpuga 4710 krüptogramm räsi algusega G6 loeti siiski edukalt kokku.

    Valija isikukoodi lõpuga 0303 kaasus on sarnane minu enda hääle lugemata jätmisega 2024. aasta Eurooopa Parlamendi valimistel, sest ka minu häälekonteiner eemaldati töötlusetapis ja mind Riigikohtu 5-24-19 lahendi punkti 8 järgi “käsitati ekslikult mittehääletanuna”. Ka see on ilmne tarkvaraviga, mille jättis valimisteenistus pärast 2024. aasta valimisi parandamata ja mis kordus nüüd järgmise valijaga.

  2. Kristjan Düüna demonstreeritud ründe elimineerimise asemel võimaldab kasutusele võetud IntegrityTool jätkuvalt sooritada teisi samaväärseid ründeid ja selle tööriista loomise järel ei testitud seda piisavalt, sest selles oli elementaarne programmeerimisviga, mis tulenes massiivitüüpide set ja list kokkusegamisest. Viga tuli välja alles siis, kui valimisvaatleja Kaspar Kartanas testis tegelikel valimistel oma sõltumatut valijarakendust ja kuigi audiitor põrkus veaga, siis ta ei saanud vea olemusest aru või püüdis seda oma raportis varjata.

    Siiski toob audiitor ka oma raportis välja, et tarkvara testimine oli ebapiisav ning soovitab “ette näha kasutatavate rakenduste testid andmemahtudega, mis vastaks eeldatavale andmemahule e-hääletuste läbiviimisel”. Seda soovitust võib laiendada ja soovitada ette näha ka kasutatavate rakenduste testid tegelikus maailmas esineda võivate anomaalsete häälekonteineritega – olgu need siis “sünteetilised” selles mõttes, et keegi teadlikult katsetab omaenda valijarakendust või mõnda muud demokraatiatööriista, või “looduslikud” selles tähenduses, et tekkinud juhuslike tehniliste anomaaliate tulemusel nagu valija isikukoodi lõpuga 0303 puhul.

Ilmselt on kohatu süüdistada eksperimentaalse netihääletuse tarkvara jooksvas testimises vaatlejaid kuni selleni, et VVK otsustes pannakse neile suuresõnaliselt süüks KarS §165 vmt paragrahvidele vastavaid kriminaalkuritegusid tegelikku süüteoteadet esitamata, kui valimiste korraldaja või tarkvaratootja ise oma tarkvara piisavalt ei testi ega paku ka võimalust katsetada elektroonilise hääletamise süsteemi valimistevälisel ajal – see on hea praktika, mida viljeleb oma elektroonse hääletuse pilootprojekti raames näiteks Šveits, kus mõned kantonid lubavad netihääletust piiratud ulatuses välismaal viibijatele. Avalikku testimisvooru on soovitanud rakendada ka elektroonilise hääletuse tootja Cybernetica juba oma 2022. aasta “Elektrooniliste häälte töötlemise protsesside analüüsi” järeldustes.

Kui koolipoisi tasemel tarkvaravead ei tule välja süsteemi testimise käigus, siis on selle testimine ebapiisav, millele on lisaks audiitorile osutanud 2024. aastal Kristjan Düüna näitlikustatud puudusi arutades ka kriitiline programmeerija Elmer Joandi:

Miks ei saa usaldada riiki, see tuleb välja, kui lugeda e-valimiste tarkvara lähtekoodi. Kuigi väidetakse, et süsteem on testitud, siis on programmikoodi stiilist näha, et 100% ühiktestidega katvuse nõudest on täidetud ehk 5% – ülejäänud kood ei ole ühiktestimiseks sobilikus stiilis kirjutatud. Paar korda on sõna “test” tõesti koodist leitav, aga kui autorid ise usuvad, et see on piisav, siis järelikult pole nad professionaalses tarkvaratööstuses toimivad olnud.

Kristjan Düüna tüüpi skriptid kontrollide täiendamiseks ei saa ka põhimõtteliselt asendada terviklikku krüptograafilist protokolli, mis võiks tagada tegeliku otsast lõpuni kontrollitavuse. Kuni kontrollid sõltuvad sellest, kui hoolas või aus on audiitor või mõni eriõigustega isik mingi tarkvara jooksutamisel või millegi seadistamisel, seni ei saa rääkida otsast lõpuni kontrollitavusest selles tähenduses, milles räägib sellest tsiviliseeritud maailm. Valimisteenistusele küll meeldib avalikkust eksitada juttudega “matemaatilistest kontrollidest”, aga arvutite enda kahtlemata arvutuslikust ja deterministlikust olemusest ei tulene kontrollide eksimatus ja valimiste võltsitamatus tervikliku ning ümberlükkamatuid tõendeid produtseeriva krüptoprotokolli tähenduses.

Seda ilmestab häältelugemine ja korduslugemine 2025. aasta KOV valimistel, kus ei suudetud vaatamata matemaatiliste ja deterministlike arvutite kasutamisele avalike toimingute raames teha ühemõtteliselt ja tõendatult kindlaks hääletustulemust ning ei võimaldatud vaatlejatel tutvuda kokku 28 eri anomaaliaga sedelite töötlemisel. Kui tulemust ei ole võimalik ühemõtteliselt tuvastada avalikul häältelugemisel, kus selle juures on sisulisteks tunnistajateks vaatlejad, kes saavad toiminguid oma silma vm tehnoloogiliste abivahenditega vahetult jälgida sellisel tasemel, et nad saavad olla kindlad manipulatsiooni ja võltsimise välistatuses samal määral nagu oleks nad toiminguid läbi viinud ise, siis pole täidetud valimisseadustes nõutud valimistoimingute avalikkuse põhimõte.

Lõpuks näitab korduvate krüptogrammide juhtum ilmekalt, et palgaline audiitor ei asenda sõltumatuid ja mitmesuguste huvidega vaatlejaid ning jääb üksnes “kinnimakstud vaatlejaks”. Ilma sisuliselt oma tööd teha saavate vaatlejateta puudub avalikkuse kontroll valimiste läbiviimise ja tulemuste kindlakstegemise oluliste sammude üle, mida nõuavad PS §1 ja §56. Isegi kui Riigikohus mingi oma fundamentaalse eksituse tõttu unistab vaatlemise täielikust üleandmisest audiitorile, kelle toimingud iseenesest ei peagi olema avalikud, siis oleks selline samm sügavalt ekslik ja kujuneks surmahoobiks demokraatlikele valimistele.

Kuna Riigikohus on kaasuse 5-25-54 lahendi punktis 12 sellisest tõlgendusest märku andnud, siis võib ta plaanida seda mistahes viisil kinnistada üldkogu kaasuse 5-25-7 lahendis, mis oleks pidanud PSJKS §44 lg3 järgi lahendatama “viivitamata, kuid mitte hiljem kui seitsme tööpäeva jooksul pärast asja üldkogule andmist” juba suvel. Sellele vaatamata on üldkogu lasknud üle ka kõik sügisesed tähtajad ning juba teinud ilmselgelt arulagedaid otsuseid eemaldades MTÜ Ausad Valimised taotluse peale saada kaasatud menetlusosalisena hoopis MTÜ esindajast siinkirjutaja ja jätnud kaasamata Eesti ainsa valimisvaatlejate esindusühingu.

Kas selle põhjuseks on Riigikohtu esimehe Villu Kõve isiklik solvumine tema taandamise taotluse pärast ja kohtu solidaarsus oma kättemaksuhimulise esimehega, seda oskavad ütelda ainult nad ise – selliseid otsuseid tehes sarnaneb Riigikohus aga kõrgeima apellatsioonikohtu asemel hoopis 1990. aastate “katusepakkujatega”, kes käisid ringi näitlik bensiinikanister käes, asetades end ise reeglitest väljapoole ja pakkudes ettevõtjatele n-ö tõhusat õiguskaitset.

Igatahes on selle kõige valguses ainult proportsionaalne, et andsin KOV valimistel n-ö protestihääle elektroonilisel sedelil, millele kirjutasin: “Ei saa osaleda ebademokraatlikel valimistel.”


See tehnilise iseloomuga essee laiendab 24. novembri 2025 sotsmeediapostitust, kus avaldasin videokokkuvõtte 20. oktoobril toimunud elektrooniliste häälte korduslugemisel aset leidnud intsidendist korduvate krüptogrammidega. Essee on ühtlasi sammuks MTÜ Ausad Valimised elektroonilise hääletuse lõppraporti koostamise teel, mis on plaanis koostada lähtuvalt 11. oktoobril 2025 avaldatud eelraportist. Kuna sisuliselt muutmata ja toimetamata lõiku omaenda avaldatud ametlikust videost pidasid RVT ja VVK oma ühisel kodulehel eksitavaks ning jäid selle juurde ka VVK 3. novembri koosolekul, siis on toimetatud ning kommenteeritud video ja selle saateks kirjutatud essee kindlasti väärt nuhtlemist vähemalt mõne karistusseadustiku paragrahviga – nagu VVK omistas oma 29.10.2025 otsuse nr 71 punktis 18 kuriteo sooritamist valimisvaatleja Kaspar Kartanasele.