Powodem, dla którego zmieniłem zdanie, jest rozwój tak zwanych protokołów dowodzenia z wiedzą zerową. Badania nad nimi sięgają połowy lat 80., jednakże rozwój zaawansowanej kryptografii sprawił, że ich praktyczne zastosowanie stało się możliwe i technicznie wykonalne. Jako pierwszy należy tu wymienić algorytm zk-SNARK. To złożone narzędzie wykorzystujące zaawansowaną kryptografię klucza publicznego z kryptosystemu krzywych eliptycznych, umożliwiającą szyfrowanie i odszyfrowywanie danych. Algorytm zk-SNARK znalazł zastosowanie w projekcie kryptowaluty ZCash działającej na podstawie technologii blockchain, która umożliwia przeprowadzanie transakcji kryptowalutą bez ujawniania ich zwartości. Zastosowanie algorytmu zk-SNARK pozwala jednej stronie udowodnić posiadanie środków, ale nie ich ilość. Tak samo adresy obu stron transakcji pozostają tajemnicą, zapewne ku utrapieniu służb jawnych, tajnych i dwupłciowych. Na tym właśnie polega dowodzenie z wiedzą zerową – na dowodzeniu prawdziwości twierdzenia bez ujawniania jego treści.
Problemem algorytmów zk-SNARK jest skalowalność, to znaczy zdolność systemu do obsługi wzrastającej liczby transakcji bez obniżenia jego wydajności. Algorytm wymaga wielu złożonych obliczeń – dowody zerowe generowane są w łańcuchu bloków i wymagają potwierdzeń przez węzły sieci. Ponadto ujawnienie obecnych w systemie tajnych parametrów opisywanych jako „toxic waste” może doprowadzić do skutecznego ataku. Algorytm zk-SNARK pozwala całkiem udanie ukrywać transakcje kryptowalutowe, nie bardzo jednak nadaje się jednak do wykorzystania przy głosowaniu przez internet.
Inaczej niż drugi z pary algorytmów dowodzenia z wiedzą zerową – algorytm zk-STARK. Ten prezentuje odmienne podejście do sposobu uzyskiwania dowodów z wiedzą zerową, rozwiązując pewne problemy skuteczniej niż jego brat bliźniak, ale jednocześnie generując kilka nowych. Przede wszystkim algorytm zk-STARK nie jest oparty na kryptografii klucza publicznego. Do uzyskiwania dowodów z wiedzą zerową są tu wykorzystywane tak zwane funkcje skrótu. Ma to istotne znaczenie dla szybkości obliczeń i wydajności algorytmu. Tak samo jak jego poprzednik, zk-STARK zapewnia weryfikację prawdziwości twierdzenia bez ujawniania jego treści. Jednocześnie pozwala na publiczną weryfikację tego twierdzenia, nadal zachowując anonimowość użytkownika systemu. Choć zk-STARK także wykorzystuje technologię blockchain, to wykonywanie złożonych obliczeń jest tu przeniesione poza łańcuch bloków. Dowody wiedzy zerowej generowane są poza blockchainem, ale później są w nim umieszczane w celu weryfikacji prawidłowości wykonanych obliczeń, czyli poprawności uzyskanego dowodu. Dzięki tak wyjątkowym właściwościom algorytmu zk-STARK mamy całkiem sensowny, teoretyczny model głosowania elektronicznego.
Jak to mogłoby wyglądać
Procedura głosowania może zatem wyglądać mniej więcej w ten sposób, że po zarejestrowaniu w internetowym systemie wyborczym wyborca oddaje głos na wybranego przez siebie kandydata. Oddany przez wyborcę głos zaliczany jest wskazanemu przez niego kandydatowi obok innych, oddanych na niego, głosów.
Jednocześnie system zapewnia poufność oddanego głosu. Wiadomo, że wyborca głosował, ale nie wiadomo, na którego kandydata oddał swój głos. Zasada tajności wyborów jest w pełni zachowana, tak samo jak transparentność głosowania. Każdy bowiem może sprawdzić prawidłowość przeprowadzonych obliczeń, których wynik udostępniony jest w publicznym, jawnym rejestrze łańcucha bloków.
Działający system
Działający już system wykorzystujący algorytm zk-STARK do głosowania elektronicznego nosi nazwę MACI. To system oparty na technologii blockchain, wykorzystujący inteligentne kontrakty w sieci Ethereum. Smart kontrakty przetwarzają oddane głosy w sposób, który gwarantuje poprawność obliczeń oraz ich udostępnienie w łańcuchu bloków, ale bez ujawniania tożsamości wyborców.