W zatrzymaliśmy się na tym, że w rozważanym przez nas systemie zdalnego elektronicznego głosowania w celu zapewnienia tajności głosowania i anonimizacji wyborcy stosuje się algorytm kryptograficzny "ślepego podpisu elektronicznego". W tym artykule przyjrzymy się mu bliżej.
Najpierw zwróćmy uwagę na znany i znany algorytm podpisu elektronicznego, który jest szeroko stosowany w systemach informacyjnych o różnym przeznaczeniu. Podstawą podpisu elektronicznego są kryptograficzne algorytmy szyfrowania asymetrycznego. Szyfrowanie asymetryczne to szyfrowanie z użyciem 2 kluczy: jeden z nich służy do szyfrowania, drugi do odszyfrowania. Nazywane są one kluczem otwartym (publicznym) i kluczem zamkniętym. Klucz otwarty jest znany innym, a klucz zamknięty - tylko właścicielowi podpisu elektronicznego i jest przechowywany w niedostępnym dla innych miejscu.
Podczas podpisywania następuje następujące: najpierw elektroniczny dokument, za pomocą przekształceń matematycznych, jest sprowadzany do sekwencji symboli o określonym rozmiarze – nazywa się to funkcją skrótu.
Uzyskana sekwencja symboli (skrót dokumentu) jest szyfrowana przez nadawcę dokumentu za pomocą klucza zamkniętego i wraz z kluczem otwartym jest wysyłana do odbiorcy. Odbiorca odszyfrowuje sekwencję symboli za pomocą klucza otwartego, stosuje do dokumentu dokładnie tę samą funkcję skrótu i porównuje wynik przekształcenia z wynikiem odszyfrowania. Jeśli wszystko się zgadza, dokument nie był zmieniany po podpisaniu go przez nadawcę.
Opisane czynności umożliwiają upewnienie się, że dokument nie był zmieniany, ale nie pozwalają upewnić się, że nadawca rzeczywiście jest tym, za kogo się podaje. Dlatego potrzebujemy trzeciej strony, której zarówno nadawca, jak i odbiorca ufają. W tym celu przed wysłaniem dokumentu nadawca zwraca się do trzeciej strony i prosi ją o podpisanie swoim podpisem elektronicznym jego klucza otwartego. Teraz nadawca kieruje do odbiorcy dokument, swój klucz otwarty oraz podpis trzeciej strony swojego klucza. Odbiorca sprawdza podpis trzeciej strony klucza otwartego i ufa otrzymanemu podpisowi dokumentu.
Przejdźmy teraz do tego, czym jest „ślepy podpis” i jak może nam pomóc w anonimizacji.
Wyobraźmy sobie, że w opisanym powyżej przykładzie nadawcą jest wyborca, dokumentem jest karta do głosowania, a odbiorcą jest komisja wyborcza, czyli jak mówiliśmy „komponent do rejestracji i zliczania głosów”. Jako trzecia strona (walidator) wystąpi komponent „Lista wyborców”. W takim przypadku proces może przebiegać w następujący sposób.

Wyborca na swoim urządzeniu generuje parę kluczy – klucz prywatny i publiczny. Ponieważ te klucze są tworzone na jego osobistym urządzeniu w przeglądarce, znane są tylko jemu.
Za pomocą tych kluczy podpisze kartę do głosowania w celu sprawdzenia jej integralności. Podpisaną kartę do głosowania i klucz publiczny przesyła do komisji wyborczej. Aby karta do głosowania została przyjęta przez komponent „Rozproszone przechowywanie i zliczanie głosów”, musi sprawdzić, czy klucz publiczny jest podpisany przez walidatora.
Walidator (komponent „Lista wyborców”) podpisze klucz publiczny tylko po upewnieniu się, że wyborca jest obecny na liście wyborców.
Aby zachować tajemnicę głosowania, klucz publiczny wyborcy, stworzony na jego urządzeniu, nie powinien być nikomu znany. Okazuje się, że walidator musi podpisać coś, co jest mu nieznane. Zadanie to wydaje się niemożliwe, ale tutaj z pomocą przychodzą algorytmy kryptograficzne – w tym przypadku algorytm „ślepego podpisu”.
Najpierw na urządzeniu wyborcy klucz publiczny musi być zamaskowany. Maskowanie to wykonywanie oddzielnych operacji matematycznych na urządzeniu użytkownika. Wyobraź sobie, że wymyśliłeś pewną losową liczbę od 1 do 100, następnie drugą losową od 1 do 10 oraz trzecią od 10 do 50, początkowa wymyślona liczba została podniesiona do potęgi drugiej liczby i podzielona bez reszty przez trzecią. Uzyskany wynik przekazałeś innym. Nie będziesz miał problemu z przywróceniem pierwotnej liczby, ponieważ znasz kolejność działań i wymyślone przez siebie liczby. Jednak inni nie będą w stanie tego zrobić.
Maskowanie (oślepienie) klucza publicznego odbywa się zgodnie z specjalnym algorytmem kryptograficznym. W rezultacie walidator podpisuje zamaskowany klucz publiczny, przy czym oryginalny klucz jest mu nieznany. Jednak cechą algorytmu jest to, że użytkownik (wyborca), otrzymując podpis na zamaskowanym kluczu, może dokonać odwrotnych przekształceń i uzyskać podpis ważny również dla oryginalnego, niezamaskowanego klucza.
Opisany algorytm jest szeroko stosowany w protokołach tajnego głosowania. W systemie zdalnego głosowania elektronicznego obecnie do ślepego podpisu używany jest algorytm RSA z długością klucza 4096 bitów.
Ogólnie rzecz biorąc, procedura anonimizacji wygląda następująco.
- Podczas tworzenia głosowania tworzona jest osobna para kluczy dla „walidatora”, a klucz publiczny jest rejestrowany w blockchainie. Dla każdego głosowania tworzona jest unikalna para kluczy.
- Użytkownik identyfikuje się w systemie identyfikacji (w tym przypadku w ESIA) i wyraża zgodę na przekazanie swoich danych identyfikacyjnych z systemu identyfikacji do PTK DEG.
- Komponent „Lista wyborców” PTK DEG sprawdza, czy użytkownik znajduje się na liście wyborców.
- Na urządzeniu użytkownika tworzone są jego klucze osobiste – prywatny i publiczny, znane tylko jemu.
- Na urządzeniu użytkownika klucz publiczny jest maskowany.
- Wraz z danymi identyfikacyjnymi i zamaskowanym kluczem publicznym użytkownik zwraca się do komponentu „Lista wyborców”.
- Komponent ponownie sprawdza, czy użytkownik znajduje się na liście oraz czy wcześniej nie otrzymał podpisu.
- Jeśli wszystkie kontrole zakończą się sukcesem, następuje podpisanie klucza.
- Fakt podpisania klucza jest rejestrowany w blockchainie.
- Użytkownik na swoim urządzeniu zdejmuje maskę z klucza publicznego i otrzymuje klucz prywatny, klucz publiczny oraz podpis na kluczu publicznym, przy czym wszystkie klucze znane są tylko jemu.
- Po tym użytkownik przekierowywany jest do strefy anonimowej – na oddzielną stronę edg2020.gov.pl, gdzie nie można go zidentyfikować (na przykład przed przejściem może zmienić VPN lub zmienić dostawcę internetu, całkowicie zmieniając adres IP).
- Odbiór karty do głosowania będzie zależał tylko od tego, czy podpis „walidatora” przejdzie weryfikację i czy taki klucz nie był wcześniej używany.
Poniżej przedstawiamy opis algorytmu z perspektywy kryptografii.
Parametry podpisu i oznaczenia:


M – w formacie padding FDN dla podpisu.
Źródło: habr.com
