“Where is my vote?”
Tahle hlavní věta z rychlokurzu angličtiny pro spousty Iránců mě donutila se trochu zamyslet, jak udělat volby, ve kterých by si každý mohl ověřit, že jeho hlas byl započítán, a zároveň, aby volby byly anonymní.
Myslím, že řešení je jednoduché. Spolu s odevzdaným lístkem by volič vložil unikátní kód, který by nebyl nijak spojitelný s jeho osobou. Jenom sám volič by jej znal a byl by schopen prokázat, že je jeho.
Po vyhlášení výsledků voleb by byl zveřejněn elektronický seznam všech hlasů spolu s anonymními kódy voličů. Tj. např.:
…
a87q2v8a3fb1y8sst Obama
1a68rq9e99by3afd2 McCain
t8a6v2na8h8a6wq9 McCain
…
Pokud vím, že můj kód je “a87q2v8a3fb1y8sst”, s pomocí svého počítače ho snadno v seznamu najdu a ověřím si, že tam je a že byl započítán jako hlas pro Obamu. Rovněž s pomocí počítače mohu sám znovu sečíst všechny hlasy a ověřit oficiální výsledek voleb.
Vygenerování onoho zázračného kódu lze provést mnoha způsoby, s trochou snahy by určitě nebyl problém vymyslet průhledné, ověřitelné řešení zajišťující bezpečnou anonymitu voleb – např. zařízení generující hash(rodné číslo+heslo zadané voličen), zařízení by výsledný klíč pouze tisklo, vytištěný papírek by volič přiložil k volebnímu lístku. Nikdo by zkrátka nesměl mít možnost z kódu zpětně odvodit, kdo hlasoval.
Je tohle všechno vůbec potřeba?
Pokud vezmu v potaz pochybné volby v USA před pěti lety, pochybné volby nyní v Iránu (Ahmadinežád zvítězil i v oblasti, kde se narodil jeho protikadnidát a měl tam silnou podporu), násilí a chaos při následných protestech, myslím, že by to rozhodně stálo za to.
No jo, ale jak následně prokazovat svou volbu, kdybychom na internetu našli něco jiného než naši volbu a nikdo by si nemohl ověřit, že jsme to ve skutečnosti byli my.
A nějaký přiložený lístek s kódem k volebnímu lístku? To by výrazně zpomalilo sčítání, ne?
Takhle to zvřejňovat jednotlivé volby na internetu bez možného zkontrolování by vedlo k jejich jednoduchému napadení. To by nešlo, připadá mi.
Jak jsem psal, výsledný kód by byl roven výsledku hash(rodné číslo + tajné heslo zadané voličem) – tím, že znám své tajné heslo, umím znovu vygenerovat můj kód. Ten nikdo jiný vygenerovat neumí, protože nezná všechny údaje, co vedly k jeho vygenerování (chce to znát, jak v principu fungují hashovací funkce).
Takže tím, že pak následně zveřejním své heslo a rodné číslo, umožním každému, aby si ověřil, že kód patří mě.
Hezky, Honzíku. Tak příště, až tě něco napadne, podáme patent. Náklady i výnosy fifty fifty, jo? 🙂