V Zastavili sme sa pri tom, že v skúmanej systéme diaľkového elektronického hlasovania sa na zabezpečenie tajnosti hlasovania a anonymizácie voliča používa kryptografický algoritmus „slepého elektronického podpisu“. V tomto článku sa naň pozrieme podrobnejšie.
Najprv sa pozrime na známy a známy algoritmus elektronického podpisu, ktorý sa široko uplatňuje v informačných systémoch rôzneho určenia. Základom elektronického podpisu sú kryptografické algoritmy asymetrického šifrovania. Asymetrické šifrovanie je šifrovanie pomocou 2 kľúčov: jeden sa používa na šifrovanie, druhý na dešifrovanie. Nazývajú sa verejný (public) a súkromný (private) kľúč. Verejný kľúč je známy okolo, kým súkromný je len vlastníkovi elektronického podpisu a uchováva sa na mieste, ktoré nie je prístupné iným.
Pri podpisovaní sa deje toto: najprv sa elektronický dokument pomocou matematických transformácií prevedie na sekvenciu symbolov určitej veľkosti – tomuto procesu sa hovorí hash funkcia.
Získaná sekvencia symbolov (hash dokumentu) sa zašifruje odosielateľom dokumentu pomocou súkromného kľúča a spolu s verejným kľúčom sa odošle prijímateľovi. Prijímateľ dešifruje pomocou verejného kľúča sekvenciu symbolov, aplikuje na dokument presne tú istú hash funkciu a porovnáva výsledok transformácie s výsledkom dešifrovania. Ak všetko sedí, dokument od podpísania odosielateľom nebol zmenený.
Opísané kroky umožňujú overiť, že dokument nebol menený, ale nemôžu potvrdiť, že odosielateľ je skutočne ten, za koho sa vydáva. Preto potrebujeme tretiu stranu, ktorej dôverujú ako odosielateľ, tak aj prijímateľ. Na to pred odoslaním dokumentu odosielateľ osloví tretiu stranu a požiada ju, aby jej vlastným elektronickým podpisom podpísala jej verejný kľúč. Teraz odosielateľ posiela prijímateľovi dokument, svoj verejný kľúč a podpis tretej strany svojho kľúča. Prijímateľ overuje podpis tretej strany verejného kľúča a dôveruje prijatej podpise dokumentu.
Teraz sa pozrime na to, čo je ‚slepý podpis‘ a ako nám môže pomôcť pri anonymizácii.
Predstavme si, že v uvedenom príklade je odosielateľ – volič, dokument – hlasovací lístok a prijímateľ – volebná komisia, alebo ako sme hovorili, ‚komponent pre evidenciu a sčítanie hlasov‘. Ako tretia strana (validátor) bude slúžiť komponent ‚Zoznam voličov‘. V tomto prípade môže proces prebiehať nasledovne.

Voliteľ na svojom zariadení generuje pár kľúčov – súkromný a verejný. Keďže tieto kľúče vytvára na svojom osobnom zariadení v prehliadači, sú známe iba jemu.
S týmito kľúčmi bude podpisovať hlasovací lístok na kontrolu jeho integrity. Podpísaný hlasovací lístok a verejný kľúč smeruje k volebnému úradu. Aby bol hlasovací lístok prijatý komponentom ‚Distribuovaná evidencia a sčítanie hlasov‘, musí overiť, že verejný kľúč je podpísaný validátorom.
Validátor (komponent ‚Zoznam voličov‘) podpíše verejný kľúč len po tom, čo sa uistí, že volič je uvedený v zozname voličov.
Na zachovanie tajnosti hlasovania nesmie byť verejný kľúč voliča, vytvorený na jeho zariadení, známy nikomu. To znamená, že validátor musí podpísať to, čo mu nie je známe. Úloha sa zdá byť nevykonateľná, ale tu prichádzajú na pomoc kryptografické algoritmy – v tomto prípade algoritmus ‚slepého podpisu‘.
Najprv musí byť na zariadení voliča verejný kľúč zakrytý. Zakrytie je vykonanie jednotlivých matematických operácií na zariadení používateľa. Predstavte si, že ste si predstavili nejaké náhodné číslo od 1 do 100, potom ste si predstavili druhé náhodné číslo od 1 do 10 a tretie, od 10 do 50, pôvodne predstavené číslo ste umocnili na druhé číslo a bez zvyšku delili na tretie. Získaný výsledok ste oznámili okolitým osobám. Nezabudnite, že vám nebude robiť problém obnoviť pôvodné číslo, pretože poznáte postupnosť činností a zamýšľané čísla. Ale ostatní to nedokážu.
Maskovanie (oslepovanie) otvoreného kľúča sa vykonáva podľa špeciálneho kryptografického algoritmu. V dôsledku toho validátor podpíše zamaskovaný otvorený kľúč, pričom pôvodný kľúč mu nie je známy. Špeciálnosť algoritmu spočíva v tom, že používateľ (volič), ktorý dostane podpis na zamaskovaný kľúč, môže vykonať spätné transformácie a získať platný podpis aj na pôvodný, nezamaskovaný kľúč.
Opísaný algoritmus sa široko využíva v protokoloch tajného hlasovania. V systéme diaľkového elektronického hlasovania sa v súčasnosti na slepú podpísanú používa algoritmus RSA s dĺžkou kľúča 4096 bitov.
Vo všeobecnosti sa proces anonymizácie javí nasledovne.
- Pri vytváraní hlasovania sa vytvorí samostatný pár kľúčov «validátora», pričom otvorený kľúč sa zaznamenáva do blockchainu. Na každé hlasovanie sa vytvorí unikátna kľúčová dvojica.
- Používateľ je identifikovaný v systéme identifikácie (v tomto prípade v ESIA) a poskytne povolenie na prenášanie svojich identifikačných údajov zo systému identifikácie do PTC DEG.
- Komponent „Zoznam voličov“ PTC DEG kontroluje prítomnosť používateľa v zozname voličov.
- Na zariadení používateľa sa vytvárajú jeho osobné kľúče – súkromný a otvorený, známe iba jemu.
- Na zariadení používateľa je otvorený kľúč zamaskovaný.
- Spolu s identifikačnými údajmi a zamaskovaným otvoreným kľúčom sa používateľ obracia na komponent „Zoznam voličov“.
- Komponent ešte raz kontroluje prítomnosť používateľa v zozname a fakt, že doteraz nedostal podpis.
- Ak sú všetky kontroly úspešné, dochádza k podpísaniu kľúča.
- Fakt podpísania kľúča je zaznamenaný do blockchainu.
- Používateľ na svojom zariadení odstráni masku z otvoreného kľúča a získa súkromný kľúč, otvorený kľúč a podpis na otvorený kľúč, pričom všetky kľúče sú známe iba jemu.
- Potom je používateľ presmerovaný do anonymnej zóny – na samostatnú stránku edg2020.gov.ru, kde nie je možné ho identifikovať (napríklad pred prechodom môže pripojiť VPN alebo zmeniť poskytovateľa internetu, čím úplne zmení svoju IP adresu).
- Prijatie hlasovacieho lístka bude závisieť len od toho, či prejde podpis «validátora» kontrolou a či takýto kľúč už nebol použitý.
Ďalej uvádzame popis algoritmu z pohľadu kryptografie.
Parametre podpisu a označenia:


M – vo formáte padding FDN pre podpis.
Zdroj: habr.com
