Jak na elektronické volby

Moderní stát, jakým bychom Česko chtěli mít, by měl umožňovat občanům volit elektronicky. Poslední dobou lze sledovat trend, že volební účast klesá. Pryč jsou časy devadesátých let, kdy volily tři čtvrtiny oprávněných občanů. Teď volit přicházejí jen tři pětiny voličů a to přesto, že volit lze dva dny. Občané pobývající v zahraničí mohou volit jen ve vybraných městech a znamená to pro ně často dlouhé cestování. Elektronické volby sníží bariéru a umožní hlasovat z pohodlí domova či v zaměstnání. Dělám si bláhovou naději, že by posílily volební účast a výsledky by pak lépe reprezentovaly přání všech občanů.

Tento příspěvek má za cíl začít diskusi nad zavedením elektronických voleb. Vykopávám.

Požadavky

  1. Ze zákona i logiky věci  je hlasování tajné.
  2. Hlasování musí být nezpochybnitelné.
  3. Nesmí být možné hlasovat opakovaně, nebo různými způsoby.
  4. Systém musí zabránit podvodům.
  5. Systém musí být důvěryhodný a nezávisle ověřitelný.
  6. Systém nesmí být nákladný.

Návrh

Dnes má volič možnost požádat o voličský průkaz, se kterým může volit v jakémkoliv okrsku. Když o něj zažádá, bude chybět na seznamu svého volebního okrsku. Tím je zajištěno, aby nemohl volit dvakrát. Podobný princip můžeme použít při elektronických volbách. Volič zažádá o elektronický volební průkaz, pochopitelně elektronicky a tím přijde o možnost volit ne-elektronicky. Bude chybět na seznamu svého okrsku a nebude moci zažádat o voličský průkaz.

Pro přihlašování k elektronickým volbám můžeme využít existující infrastrukturu – datové schránky. Jedná se o zákonem uznávaný způsob přihlášení ke státním elektronickým službám. Tento způsob autentizace používá například správa sociálního zabezpečení a je dostupná všem občanům. Jednou nevýhodou je, že někdo datové schránky odmítá úmyslně. Nejde ale vymyslet řešení, které by vyhovovalo všem. Datové schránky fungují, integrace přihlášení do jiných služeb je prověřená, tudíž jejich použití výrazně snižuje náklady na zavedení elektronických voleb.

Pro zajištění anonymity hlasů je nutné oddělit záznam hlasů od informace, zda je volič oprávněný hlasovat a zda již hlasoval. První systém tedy bude mít na starosti ověření přístupu voliče k nástroji a zajištění, aby nehlasoval vícekrát. Bude tedy evidovat, zda se volič registroval k elektronickým volbám a zda již hlasoval. Bylo by vhodné, aby uchoval informaci, kdy k volbě došlo a z jaké IP adresy. Pokud by totiž některý volič rozporoval platnost voleb s tím, že mu nebylo umožněno hlasovat, hodil by se záznam o provedení volby. Na druhou stranu identifikace uživatele a čas volby zvyšuje riziko spárování hlasu s konkrétním voličem. Čím oddělenější bude infrastruktura obou systémů, tím je toto riziko nižší.

Druhý systém bude zaznamenávat samotné hlasy a zajišťovat výstupy. V ideálním případě bude vytvořen obecný systém podporující všechny typy voleb, které máme (jednokolové jako do poslanecké sněmovny či obecních zastupitelstev, vícekolové jako prezidentské či senátní) a pro každé volby se připraví datový soubor s kandidáty, podle kterého volby poběží.

Po spuštění voleb systém promaže databázi, aby se zamezilo případným podvodům s předem připravenými hlasy a zároveň vloží iniciální záznam. Systém pro každý další hlas vloží záznam, který kromě volby voliče bude obsahovat kryptografický otisk předchozího záznamu nebo celé databáze. Inspirací budiž verzovací systém Git. Tímto principem bude zajištěno, že administrátor databáze nemůže některé hlasy smazat nebo vložit. Po skončení voleb dojde ke kontrole všech otisků, které musí tvořit souvislou řadu. Alternativně by šlo zvážit variantu technologie blockchainu, ale ne veřejného. Průběžné výsledky by totiž mohly ovlivnit volby. Nakonec systém vygeneruje záznam voleb, aby je statistický úřad mohl naimportovat do svých systémů.

Procesní zabezpečení

Aby systém byl skutečně důvěryhodný, musí být možnost, aby si kterýkoliv občan mohl jeho části sám ověřit. Bezpečnost systému nesmí být postavena na zatajování, jak funguje. Naopak je zásadní, aby byly zveřejněny zdrojové kódy a každý občan měl právo ověřit, že v nich není chyba nebo zadní vrátka. Jsem pro zveřejnění na GitHubu.

Nezávisle ověřitelné zdrojové kódy jsou jedna věc, druhou je ale ověřitelnost binárky. Proto navrhuji, aby byly jednotlivé části systému sestaveny před notářem a zástupci všech parlamentních stran od samého začátku. Tedy ideálně čerstvě nainstalovaný operační systém, do něj nainstalovat kompilátor a git klient. Následně stáhnout z veřejné repozitoře schválenou verzi a tu zkompilovat a podepsat. Binárka bude zveřejněna minimálně měsíc před volbami, opět aby ji občané mohli nezávisle prozkoumat. V případě chyby bude oprava commitnuta do veřejné repozitoře v GitHubu a postup sestavení se zopakuje.

V den voleb se znovu sejde komise, před kterou IT pracovník ověří podpis aplikace; ukáže, že databáze je prázdná a zapne volební systém. Zároveň bude odepřen přístup k databázi všem dalším uživatelům a administrátorům. Tento režim – IT pracovníci pod kontrolou notáře (notářů) a zástupců všech parlamentních stram – bude dodržen nepřetržitě do skončení voleb. Bude to náročné, ale odpadne riziko, že se někdo pokusí volby zmanipulovat.

Ekonomika

Zavést elektronické volby nemusí být drahé. Hodně se ušetří opětovným využitím autentizace voličů pomocí datových schránek. Není třeba budovat nový systém a voliči nemusí kupovat speciální hardware (třeba čtečky elektronickýh občanek).

Pokud volební systém nebude zavádět IBM bez veřejné soutěže ala EET, nemusí stát miliardy, ale spíše vyšší desítky miliónů korun. Porovnejte s 964 milióny korun, které stály parlamentní volby v roce 2010. Pro spoustu firem by bylo otázkou prestiže tento systém naimplementovat. Jeden den práce programátora stojí 10-20 tisíc korun, a pochybuji, že by se vývojem spálilo více než tisíce člověkodnů.

Když by se elektronické volby osvědčily a začal je využívat významný podíl voličů, stálo by ke zvážení zkrácení voleb. Opravdu je nutné volit dva dny? Třeba v Německu stačí jeden den. Zkrácení voleb by výrazně snížilo celkové náklady.

Závěrem

Autor se nečiní patent na rozum. Klidně návrh rozcupujte, vytkněte slabiny a navrhněte lepší řešení. Ale pojďme na zavedení elektronických voleb pracovat. Potřebujeme je. Máme 21. století.

3 komentáře: „Jak na elektronické volby

  • 27/01/2018 (13:39)
    Permalink

    Git repozitář je blockchain. Pokud jeden záznam obsahuje podpis/hash předchozího, tak máš blockchain.

    Myšlenka použití blockchainu s anonymizovanými daty mi přijde smysluplná a řeší to důvěryhodnost voleb. Pokud se po skončení hlasování blockchain zveřejní, tak si každý hlasující může najít svůj hlas zaznamenaný v blockchainu – přihlasování dostane předchozí hash, přidá svůj hlas a dostane nový hash, který si poznamená a po zveřejnění ověří, že tam je. V zásadě pak ani nezáleží na důvěryhodnosti systému, na kterém to celé běží, pokud si všichni ověří svůj hlas.

    Co je ale stále nevyřešené, je zaručení anonymity. Pokud někdo bude odposlouchávat na správných místech, bude vědět, kdo jak hlasoval. Tady je důvěryhodnost systému naprosto kritická a chtělo by to něco lepšího, než jen spoléhat na procesní řešení.

    Reagovat
  • 04/02/2018 (19:13)
    Permalink

    Líbí se mi pár technických myšlenek, ale.. několik (obecných) komentářů proti:

    0) pěkné myslet na certifikaci programů zkompilovaných ze zdrojáků. Ale co vlastní mnohem větší „program“ OS? A co teprve hardware? Jakou mám jistotu, že na něm nebude něco typu Spectre? Hardwarová certifikace je projekt za miliardy. A důvěřovat (plácám), že NSA nedodala ve spolupráci s Intelem backdoor do návrhu jejich čipu, anebo že ten čip vyráběný někde v Číně nebude špehovat ve prospěch této velmoci,..?

    1) rozdělení autentikace (např. přes datové schránky) a vlastní volby je kritická, jinak není volba anonymní. Toto v návrhu není řešeno jak toho docílit. A při bližším zamyšlení (autentikace přes dat.schránky musí poskytnout voliči nějaký autorizační token, který jej opravňuje hlasovat a který blockchain-program musí zverifikovat. takže systém za dat.schránkami _musí_ nějak komunikovat s blockchain-programem), tedy při bližším zamyšlení se objeví dílčí problémy které je nutno _nějak_ řešit, aby volba zůstala tajná (jak řešit: závisí na detailnějším návrhu. neříkám, že to nejde, jen poukazuji na problémy „ukryté v detailu“).

    2) Když budu odposlouchávat komunikaci šifrovanou dnešními SSL protokoly, za 10 let si ji během pár hodin přehraji rozšifrovanou. A teoreticky se znalostí nějaké zatím nezveřejněné backdoors si to může rozluštit už v den voleb kdokoliv, kdo daný backdoors zná. Tedy konec anonymní volby (nejpozději po několika letech). Někomu to nevadí, někomu může. Minimálně nutné o tomto nevyhnutelném nebezpečí vědět.

    3) Obecně el.volby jsou velkým zdrojem pro možné velrybářství. „Vyzvedni si el.průkaz, odvol přede mnou pro stranu XY a já ti dám 500Kč na ruku“ jde provést efektivně při el.volbách, ale mnohem obtížněji při papírových volbách. Podobně nikdo nezaručí, že otec/matka rodiny despoticky nedonutí všechny dospělé v rodině volit tak jak chce on..

    Reagovat
  • 05/02/2018 (12:07)
    Permalink

    U voleb na dálku se nedá zaručit, že hlasujícímu nebude stát při hlasování někdo s pistolí u hlavy (případně se stovkou v ruce). Jinými slovy, nezajistíme svobodnost a tajnost volby. I když bychom nad tímto rizikem mávli rukou, tak je tu další riziko, že kvůli tomuto problému může výsledky voleb kdokoliv napadnout.

    Reagovat

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *