Anonimowość vs. Pewność wyników głosowania
Dobry system do głosowania powinien realizować wszystkie możliwe postulaty. W tym przypadku jest to wyjątkowo trudne ponieważ anonimowość oraz pewność co do tego jak kto głosował to sprzeczności.
Rozprawmy się najpierw z anonimowością. Okazuje się, że istnieje zasada, którą możemy wykorzystać. Ta zasada to „Zero knowledge proof” („Dowód przy zerowej wiedzy”). Realizacja tej zasady w aplikacji okazuje się dosyć proste. Wystarczy żeby aplikacja odnotowywała, że dana osoba wzięła już udział w danym głosowaniu natomiast głos tej osoby jedynie zwiększa licznik głosów na TAK lub NIE.
Pewność co do wyników nie jest łatwo osiągnąć ale można użyć następującego obejścia problemu, które nie będzie wymagało rezygnacji z anonimowości. Otóż można zrobić drugi, niezależny system do głosowania. Może on być postawiony na tym samym oprogramowaniu (dzięki temu, że system jest opensource) albo na innym ale koniecznie musi być na innym serwerze i musi być nadzorowany przez innego administratora. Następnie wszyscy głosujący głosują na obydwu systemach. Jeśli wyniki na obu będą bardzo podobne to można będzie mieć pewność, że głosowanie nie zostało sfałszowane.
Jeśli chodzi o potwierdzanie tożsamości to można kiedyś spróbować użyć profilu zaufanego albo przelewów bankowych ale do tego daleka droga. Dlatego na razie, po prostu, wszyscy w danej grupie muszą się znać.
Według mnie, sposobem na kompromis pomiędzy anonimowością głosowań i ochroną ich przed fałszerstwem jest danie wyboru jawności oddawania głosu, a tym którz nie chcą go ujawniać możliwość weryfikacji. Widzę to następująco. Pełnoletni obywatel tworzy unikatową nazwę dla swojego „konto obywatela” na portalu państwowym. Uwierzytelnia się pod nią, np. potwierdzając tożsamość dowodem osobistym w urzędu miasta. Urzędnicy takiej nazwy nie mogą ujawnić, a obywatel sam decyduje, czy zachowuje ją dla siebie, czy nie (możę ją w każdej chwili zmienić, warunek tylko, że nie może się powtarzać). Podczas głosowania używa tej właśnie nazwy użytkownika. Po głosowaniu (a może już podczas jego trwania), lista poparcia ukazuje się a pod nią dana nazwa konta, aby każdy mógł sprawdzić, czy jego głos został zaliczony do właściwej puli (na danego kandydata, czy postulat).Jeśli okazuje się, że głos został zaliczony do niewłaściwej puli to mamy, powiedzmy kilka dni na odwołanie, a wynik jest uaktualniany. Mamy wtedy zapewnioną i anonimowość i ochronę przed fałszerstwem.
Opisałem to na https://321my.wordpress.com/z3/
Podobna koncepcja będzie zrealizowana. Podczas głosowania każdy otrzyma losowy kod, który nie będzie powiązany z użytkownikiem. Po głosowaniu każdy będzie mógł sprawdzić czy do jego kodu jest przypisany właściwy głos. Będzie też można samodzielnie zsumować głosy na Tak i na Nie.
Są technologie, które gwarantują bezpieczeństwo danych. Blockchain (np. Ethereum) i sieci autonomiczne (np. SAFE Network, czy net2o) potrafią to zrealizować. Nie potrzeba serwerów, ani administratorów.
Czy mógłbyś zaprezentować nam system do głosowania oparty o te technologie?
W jaki sposób te systemy rozwiązują problem potwierdzenia tożsamości. Czy każdy może stworzyć w nich wiele kont? Jeśli tak to to jest problem.
Kto w tych systemach zarządza członkostwem w grupie? Wszyscy czy administrator?