V Zastavili jsme se u toho, že v systému vzdáleného elektronického hlasování, který zkoumáme, se pro zajištění tajnosti hlasování a anonymizaci voliče používá kryptografický algoritmus „slepý elektronický podpis“. V tomto článku se na něj podíváme podrobněji.
Nejdříve se obrátíme na známý a obvyklý algoritmus elektronického podpisu, který se široce používá v informačních systémech různých účelů. Základem elektronického podpisu jsou kryptografické algoritmy asymetrického šifrování. Asymetrické šifrování spočívá v šifrování pomocí dvou klíčů: jeden se používá pro šifrování, druhý pro dešifrování. Nazývají se veřejný (publikovaný) a soukromý klíč. Veřejný klíč zná okolí, zatímco soukromý klíč zná pouze vlastník elektronického podpisu a je uchováván na místě, které není přístupné ostatním.
Při podepisování dochází k následujícímu: nejprve se elektronický dokument pomocí matematických převodů převede na sekvenci symbolů určité velikosti – tomu se říká hashovací funkce.
Získaná sekvence symbolů (hash dokumentu) je zašifrována odesílatelem dokumentu pomocí soukromého klíče a spolu s veřejným klíčem je odeslána příjemci. Příjemce dešifruje sekvenci symbolů pomocí veřejného klíče, použije na dokument přesně stejnou hashovací funkci a porovná výsledek převodu s výsledkem dešifrování. Pokud se všechno shoduje, v dokumentu nedošlo k žádným změnám po jeho podepsání odesílatelem.
Popisované akce umožňují ujistit se, že dokument nebyl měněn, ale neumožňují ověřit, že odesílatel je opravdu tím, kým se vydává. Proto potřebujeme třetí stranu, které důvěřují jak odesílatel, tak příjemce. K tomu se odesílatel před odesláním dokumentu obrátí na třetí stranu a požádá ji, aby podepsala jeho veřejný klíč svým elektronickým podpisem. Nyní odesílatel zasílá příjemci dokument, svůj veřejný klíč a podpis třetí strany svého klíče. Příjemce kontroluje podpis třetí strany veřejného klíče a důvěřuje získanému podpisu dokumentu.
Nyní přejdeme k tomu, co je „slepý podpis“ a jak nám může pomoci při anonymizaci.
Představme si, že ve výše uvedeném příkladu je odesílatel – volič, dokument – hlasovací lístek a příjemce – volební komise, nebo jak jsme říkali „komponenta pro evidenci a počítání hlasů“. Jako třetí strana (validátor) nám poslouží komponenta „Seznam voličů“. V tomto případě může proces probíhat následujícím způsobem.

Volící na svém zařízení vygeneruje pár klíčů – soukromý a veřejný. Protože tyto klíče jsou vytvářeny na jeho osobním zařízení v prohlížeči, zná je pouze on.
Pomocí těchto klíčů bude podepisovat hlasovací lístek pro kontrolu jeho integrity. Podepsaný hlasovací lístek a veřejný klíč posílá volební komisi. Aby byl hlasovací lístek přijat komponentou „Rozdělené ukládání a počítání hlasů“, musí zkontrolovat, že je veřejný klíč podepsán validátorem.
Validátor (komponenta „Seznam voličů“) podepíše veřejný klíč pouze poté, co se ujistí, že je volič uveden v seznamu voličů.
Pro splnění úkolu zachování tajnosti hlasování nesmí být veřejný klíč voliče, vytvořeny na jeho zařízení, znám nikomu. Ukazuje se, že validátor musí podepsat to, co nezná. Úkol se zdá být neproveditelný, ale zde přicházejí na pomoc kryptografické algoritmy – v tomto případě algoritmus „slepého podpisu“.
Nejprve musí být na zařízení voliče veřejný klíč maskován. Maskování je provedení jednotlivých matematických operací na zařízení uživatele. Představte si, že jste si mysleli na nějaké náhodné číslo od 1 do 100, poté na druhé náhodné číslo od 1 do 10 a třetí od 10 do 50, původně zamýšlené číslo jste umocnili na druhé číslo a bez zbytku vydělili třetím. Získaný výsledek jste oznámili okolí. Nebude pro vás obtížné obnovit původní číslo, protože znáte sled akcí a čísla, která jste si určili. Ale okolí to udělat nemůže.
Maskování (oslepení) otevřeného klíče se provádí podle speciálního kryptografického algoritmu. Výsledkem je, že validátor podepisuje zamaskovaný otevřený klíč, přičemž původní klíč mu není znám. Ale zvláštností algoritmu je to, že uživatel (volič), který obdržel podpis na zamaskovaný klíč, může provést zpětné přeměny a získat platný podpis i pro původní, nezamaskovaný klíč.
Popisovaný algoritmus se široce používá v protokolech tajného hlasování. V systému vzdáleného elektronického hlasování se v současnosti pro slepý podpis používá algoritmus RSA s délkou klíče 4096 bitů.
V obecném pojetí vypadá procedura anonymizace následovně.
- Při vytváření hlasování se vytvoří samostatná klíčová dvojice „validátora“, přičemž otevřený klíč se zapisuje do blockchainu. Na každé hlasování se vytváří unikátní klíčová dvojice.
- Uživatel se identifikuje v systému identifikace (v tomto případě v ESIA) a poskytuje povolení k předání svých identifikačních údajů ze systému identifikace do PTK DEG.
- Komponent „Seznam voličů“ PTK DEG kontroluje přítomnost uživatele v seznamu voličů.
- Na zařízení uživatele se vytvářejí jeho osobní klíče – uzavřený a otevřený, známé pouze jemu.
- Na zařízení uživatele se otevírá zamaskovaný klíč
- Spolu s identifikačními údaji a zamaskovaným otevřeným klíčem se uživatel obrací na komponent „Seznam voličů“
- Komponent ještě jednou kontroluje přítomnost uživatele v seznamu a skutečnost, že předtím neobdržel podpis
- Pokud jsou všechny kontroly úspěšné, dojde k podpisu klíče
- Skutečnost podpisu klíče se zapisuje do blockchainu
- Uživatel na svém zařízení odstraní masku z otevřeného klíče a získá uzavřený klíč, otevřený klíč a podpis na otevřený klíč, přičemž všechny klíče jsou známy pouze jemu.
- Poté je uživatel převeden do anonymní zóny – na samostatnou stránku edg2020.gov.ru, kde ho nelze identifikovat (například před přechodem si může připojit VPN nebo změnit poskytovatele internetových služeb, čímž úplně změní svou IP adresu)
- Přijetí hlasovacího lístku bude záviset pouze na tom, zda projde potvrzení podpisu „validátora“ a zda takový klíč nebyl použit dříve.
Níže uvádíme popis algoritmu z hlediska kryptografie.
Parametry podpisu a označení:


M – ve formátu padding FDN pro podpis.
Zdroj: habr.com
