Wykład 9 Głosowanie internetowe - główne slajdy 23 listopada 2011 Instytut Informatyki Uniwersytet Jagielloński 9.1
rodzaje e-voting elektroniczne (tzw kiosk-voting) w wyznaczonym miejscu użycie specjalnych urzadzeń urzadzenia mechaniczne, optyczne skanowanie głosowania w wielu stanach USA, np. Floryda internetowe (Internet voting) wykorzystanie komputera osobistego lub urzadzenia mobilnego prostsze ale bardziej ograniczajace nie ma problemu braku zaufania do systemu operacyjnego nie jest możliwe w dowolnym miejscu w coraz większej liczbie krajów niektóre wybory sa e-głosowaniami duża baza danych jest Competence Center for Electronic Voting and Participation http://db.e-voting.cc 9.2
rejestracja wyborców zbieranie i zliczanie głosów kryterium Condorceta jeśli jest spełnione, to zwycięzca staje się kandydat, który wygrałby każde w parach kandydatów mechanizmy głosowania większościowy głosujacy wybiera zwycięzcę spośród kandydatów i ten otrzymuje 1 punkt metoda Bordy (preferencyjna) wyborca szereguje n kandydatów pierwszy dostaje n 1 punktów, drugi n 2, ostatni 0 nie spełnia kryterium Condorceta przenoszenia głosów (single transferable vote, STV) w każdej rundzie wynikiem kandydata jest liczba zwycięstw najsłabszy w rundzie kandydat wypada głosy najsłabszego przechodza na następnego najmocniejszego na każdym głosie wygodny gdy jest więcej niż jeden mandat (tworzy listę preferencyjna) wykorzystywany w krajach byłego Imperium Brytyjskiego czy nie był wykorzystywany przy głosowaniu na Oskary? trudniejszy w realizacji niż większościowe czy Bordy i wiele innych 9.3
pożadane głosować moga tylko uprawnieni wyborcy poprawne zliczanie głosów wyniki musza być poprawne licza się jedynie głosy uprawnionych głosujacych tylko poprawne głosy moga być zliczone nie można głosować więcej niż jeden raz niektóre założenia zakładaja taka możliwość liczy się wtedy ostatni głos tym bardziej trzeba utrzymać aktualne wyniki w tajemnicy prywatność nikt nie może poznać żadnych nowych informacji poza końcowymi wynikami preferencje wyborców musza pozostać tajne nawet jeśli chce, wyborca nie może potwierdzić swojego głosu niezależność głosujacy musi wiedzieć jaki głos składa wyborca musi mieć możliwość sprawdzenia, że jego głos został podliczony ochrona przed wieloma atakami uniemożliwienie kopiowania głosów Alicja kocha się w Bobie Alicja składa jako własny skopiowany głos Boba prywatność Boba pozostaje nienaruszona! a więc Alicja musi znać głos, który składa 9.4
proste protokół głosowania 1 wyborca składa głos zaszyfrowany kluczem publicznym PKW 2 po zakończeniu głosowania, PKW oblicza i ogłasza głosy czy spełnione sa pożadane cechy? czy głosuja tylko uprawnieni wyborcy? czy każdy wyborca głosuje tylko jeden raz? czy zachowana jest prywatność głosowania? czy istnieje możliwość modyfikacji czyjegoś głosu? czy możliwe jest skopiowanie czyjegoś głosu? 9.5
trochę zmodyfikowany protokół głosowania 1 wyborca szyfruje swój głos swoim kluczem prywatnym 2 wyborca zaszyfruje go teraz kluczem publicznym PKW 3 wyborca składa głos 4 po zakończeniu głosowania, PKW oblicza i ogłasza głosy czy spełnione sa pożadane cechy? czy głosuja tylko uprawnieni wyborcy? PKW może pominać głosy nie podpisane czy każdy wyborca głosuje tylko jeden raz? PKW uwzględnia tylko ostatni złożony głos danego wyborcy lub nie uwzględnia żadnego czy zachowana jest prywatność głosowania? ooooooooooooooops! czy istnieje możliwość modyfikacji czyjegoś głosu? czy możliwe jest skopiowanie czyjegoś głosu? 9.6
ślepe podpisy wyborca PKW generuje n zestawów z głosów par (kandydat, numer seryjny) zaciemnia głosy wysyła zestawy = sprawdza czy wyborca już wcześniej nie wysłał = losuje n 1 indeksów i odsyła n 1 parametrów odciemnienia = odciemnia i sprawdza poprawność n 1 zestawów zapisuje wyborcę w bazie indywidualnie podpisuje usuwa zaciemnienie = wszystkie n zestawów i odsyła wybiera właściwy głos z n-tego zestawu podpisuje kluczem publicznym PKW wysyła anonimowo = deszyfruje głosy sprawdza czy głos nie jest powtórzeniem zapisuje numer seryjny podpisuje odebrany głos kluczem prywatnym PKW = podpisany głos odsyła wyborcy jako kwit zlicza głosy i ogłasza wyniki 9.7
ślepe podpisy czy istnieje możliwość wielokrotnego zagłosowania? system PKW zapisuje wyborców czy można wiele razy wysłać ten sam głos? PKW zapisuje numery seryjne złożonych głosów nie można powtórzyć także głosów innych wyborców (nawet zmienionych) czy głosy sa niepowtarzalne? PKW sprawdza, czy przysłane propozycje głosów zostały zbudowane poprawnie wyborca nie może wysłać wielu identycznych głosów z różnymi numerami seryjnymi czy jest zachowana prywatność? PKW nie może się zorientować jak kto głosował zaciemnienie uniemożliwia połaczenie numeru seryjnego z głosem procedura wysyłania głosów musi być anonimowa PKW mógłby połaczyć przysłanie głosu z wyborca czy jest możliwość sprawdzania podliczenia głosu? numery seryjne sa publikowane wyborca nie jest w stanie sprawdzić czy PKW nie zmieniła głosu czy PKW może wygenerować głosy fałszywe? 9.8
PKKUG Państwowa Komisja Kontroli Uprawnień do Głosowania wyborca PKKUG PKW prośba o numer rejestracyjny NR = generuje NR zapisuje NR = odsyła NR przesyła listę NR = losuje numer identyfikacyjny NID wysyła {NR NID v} = = = = = = = sprawdza NR odrzuca głos powtórzony numer NR dodaje NID do listy kandydata po zakończeniu głosowania zlicza i publikuje wyniki 9.9
czy głos został policzony? numery identyfikacyjne głosów sa publikowane czy PKW może zmodyfikować głosy? numery identyfikacyjne sa publikowane na listach kandydatów, na których głosy zostały oddane czy jest zachowana prywatność? wszystkie komunikaty sa szyfrowane PKW nie ma możliwości zidentyfikowania wyborcy i połaczenia go z głosem to działa tak długo jak PKKUG kontroluje wybory jeśli PKW i PKKUG dogadaja się, to prywatność może być naruszona czy głosować moga jedynie uprawnieni wyborcy? nad tym kontrolę sprawuje PKKUG PKKUG musi być zaufanym urzędem 9.10
jeszcze jeden protokół wyborca PKW tablica ogłoszeń lista uprawnionych = zgłasza chęć udziału = publikuje listę chętnych = = numer ID tworzy parę kluczy pk/sk wysyła głos ID, E pk (ID, v) = anonimowo publikuje ID, E pk (ID, v) = wysyła ID, sk = jeśli głos nieprawidłowo zaliczony, to wysyła ID, E pk (ID, v), d = deszyfruje głosy publikuje wyniki = publikuje głosy E pk (ID, v) = 9.11
jeszcze jeden protokół czy głosuja tylko uprawnieni wyborcy? publikacja listy uprawnionych zmniejsza szanse na oszustwa ze strony PKW PKW może rozdzielić głosy tych, którzy jeszcze nie zagłosowali czy głos wyborcy został prawidłowo zaliczony? głosy sa publikowane i wyborca może sprawdzić jest mechanizm protestu czy głosy zostały podliczone to jest trudne do sprawdzenia tu PKW może oszukiwać 9.12
jeszcze inaczej system kryptograficzny jest homomorficzny jeśli E(m 1 )E(m 2 ) = E(m 1 m 2 ) lub E(m 1 )E(m 2 ) = E(m 1 + m 2 ) RSA E(m 1 )E(m 2 ) = x e 1 x e 2 = (x 1 x 2 ) e = E(m 1 m 2 ) ElGamal z kluczem publicznym (G, q, g, h) : h = g x, gdzie x jest kluczem prywatnym, g x publicznym (r jest wartościa losowa) E(m 1 )E(m 2 ) = (g r 1, m 1 h r 1 )(g r 2, m 2 h r 2 ) = (g r 1+r 2, (m 1 m 2 ) h r 1+r 2 ) = E(m 1 m 2 ) system ElGamal można zmodyfikować tak, by był homomorficzny przez podstawienie m = g v gdzie v jest głosem E(m 1 )E(m 2 ) = (g r 1, g v1 h r 1 )(g r 2, g v2 h r 2 ) = (g r 1+r 2, (g v1 g v 2 ) h r 1+r 2 ) = (g r 1+r 2, (g v 1+v 2 ) h r 1+r 2 ) = E(g v 1 + g v 2 ) = E(m 1 + m 2 ) 9.13
jeszcze inaczej 2t + 1 serwerów dzieli klucz publiczny pk i prywatny sk wszystkie moga wykorzystać publiczny pk potrzeba co najmniej t + 1 serwerów by odtworzyć klucz prywatny algorytm Shamira dzielenia tajemnicy potrzeba k + 1 punktów by wyznaczyć wielomian k-tego stopnia 2t + 1 różnych wartości wielomianu jest rozdzielanych między 2t + 1 serwerów t + 1 serwerów może wyznaczyć wielomian f () i tajemnicę równa f (0) głosujacy składaja zaszyfrowane głosy E pk (a v i ) gdzie v i {0,..., cnd 1} serwery zbieraja głosy i odsyłaja potwierdzenie a jest ograniczeniem górnym liczby głosujacych po zakończeniu głosowania zaszyfrowane głosy sa wypisywane na tablicę ogłoszeń serwery mnoża szyfrogramy Π i E pk (a v i ) = E pk ( i a i ) = E pk ( j α j a j ) gdzie α j jest liczba głosów oddanych na j-tego kandydata 9.14
jeszcze inaczej po zakończeniu głosowania zaszyfrowane głosy sa wypisywane na tablicę ogłoszeń serwery mnoża szyfrogramy cv = Π i E pk (a v i ) = E pk ( i a i ) = E pk ( j α j a j ) gdzie α j jest liczba głosów oddanych na j-tego kandydata aby odszyfrować zaszyfrowane głosy trzeba co najmniej t + 1 serwerów t + 1 serwerów odszyfrowuje cv i wyznacza współczynniki α wartość cv wraz z wektorem (α 1,..., α cnd ) sa publikowane jako wyniki wyborów schemat jest efektywny pod warunkiem, że voters cnd jest stosunkowo małe dla 2 kandydatów i 10 7 głosujacych mamy voters 2 10 14 2 47 dla większej liczby kandydatów sa algorytmy radzace sobie nawet do voters cnd 2 4096 (do 150 kandydatów i 10 8 głosujacych) może być konieczny podział na okręgi 9.15