czwartek, 27 listopada 2014

Czy moze byc gorzej? W wyborach - zawsze!

Wiadomoscia dnia bylo iz pewien polityk podczas trwania wyborow gdzie padl system informatyczny zaproponowal wprowadzenie w nastepnych wyborach systemu 'internetowego'. Jesli poprzednie byly nieuczciwe to takie 'internetowe' beda na 100% nieuczciwe - dlaczego? A o tym ponizej:
Glosowanie kazde musi realizowac postulaty: rownosci, tajnosci, uczciwosci i tak dalej. Przeanalizujmy te postulaty w implementacji 'internetowej' ale zacznijmy od opisania jak takie glosowanie moglo by przebiegac:
  • Czlowiek posiada swoj unikalny 'klucz' (np. karte jak do bankomatu).
  • Czlowiek zglasza sie do systemu wyborczego poprzez komputer wyposazony w urzadzenie odczytujace w/w klucz
  • System daje mu mozliwosc wyboru z listy kandydatow i oddania glosu
  • Technicznie moglo by to byc np wyswietlenie strony kandydata z opcja glosuj a nastepnie uzycie 'klucza' do przeslania informacji o tym ze wybieramy danego kandydata.
  • System musialby zablokowac mozliwosc powtornego glosowania przez dany klucz a nastepnie dopisac glos danemu kandydatowi
Gdzie sa zagrozenia takiego procesu?
  • Wymog uzywania czegokolwiek (klucza, komputera) wyklucza czesc populacji. Nie jest wiec spelniony warunek rownosci
  • Zglaszanie sie do systemu wyborczego jest widoczne dla dowolnego zainteresowanego. Szyfrowanie (np. SSL) nic nie daje bo czesc poczatkowa zapytania jest realizowana bez ochrony szyfrowaniem (np. zapytanie do DNS). Nie jest wiec spelniony warunek tajnosci (w czesci tajnosci informacji czy ktos glosowal).
  • Proces wybierania kandydata pomimo ochrony szyfrowaniem takze daje wskazowki dla ew. 'podsluchiwacza'. Jest takze calkowicie jawna w systemie wyborczym.
  • Poziom jakosci szyfrow komercyjnych jest zbyt niska do realizacji tego typu zadan. Czas zlamania typowego szyfru SSL przy braku 'czlowieka w komisji) jest liczony w godzinach. Poniewaz komisja korzystala by prawdopodbnie z PKI krajowego wiec takie PKI mialo by klucze prywatne jak i bylo by podlegle Panstwu w ktorym bylo by zarejestrowane oraz - co zrozumiale jego sluzbom (zgodnie z reszta z ustawa). Jesli takie zadanie bylo by postawione przed sluzbami to mogly by bez problemu pozyskac klucze komisji jak i zawartosc kluczy dowolnych osob.
  • Uczciwosc nie mogla by byc zagwarantowana gdyz kluczowe elementy takiego systemu byly by nie kontrolowane publicznie
    • System DNS w TLD .PL jest kontrolowany przez panstwo i nie jest kontrolowany publicznie - co wiecej wielokrotnie w przeszlosci slyszalo sie o dziwnych zdarzeniach w tym TLD.
    • System PKI jest zawsze kontrolowany przez panstwo na ktorego terytorium rezyduje. PKI musialo by generowac klucze dla witryny jak i klucze indywidualne dla obywateli. Z drugiej strony system taki nie dosc ze jest trudny do kontroli to jeszcze jest podatny na ataki roznego typu.
    • Oprogramowanie realizujace wybory nawet gdyby bylo w wersji Open Source nie gwarantowalo by ze nie ma tam 'furtek' czy problemow z bezpieczenstwem. Dowodem jest to po jak dlugim czasie udalo sie ujawnic problem z RNG w dystrybucjach linuxa czy w SSL.
    • System ten musialby rezydowac na jakims fizycznym sprzecie gdzie do w/w problemow dochodzi wiarygodnosc i bezpieczenstwo konfiguracji, bezpieczenstwo fizyczne, odpornosc na ataki (chocby najprostszy z nich DDOS
Podsumowujac pomysl na internetowe wybory w Polsce 2014r jest chory i wymaga stanowczo sprzeciwu.

wtorek, 25 listopada 2014

Wybory w wersji DIY

Chcemy mieć prawdziwe wyniki wyborów? No to nie ma wyjścia. Trzeba 'zrobić' obsługę wyborów samemu. Może nie tych obecnie rozstrzyganych - tu niestety jest za poźno - no chyba żeby pomogły 2-3 partie mające odpowiednie struktury.
Jak sie do takiej weryfikacji wyników zabrać? Ano popatrzmy:
  • Dobrze było by mieć wlasne 'exit pools'. Nie są konieczne ale wprowadziły by punkt odniesienia do wyników z komisji. Do tego potrzebne są osoby które prowadzą w komisjach sondaż wśród tych ktorzy oddali już głosy. Ale to dopiero rozgrzewka...
  • Trzeba mieć kogoś w komisji kto będzie patrzył na ręce reszcie komisji. Członek komisji ma większe uprawnienia. Obserwator czy mąż zaufania mniejsze. Jednak posiadanie 2 lub więcej osób jest wysoce pożądane. Ludzie powinni o sobie nie wiedzieć i byc uczciwi.
  • W razie problemów z umieszczeniem ludzi niezależnych w komisjach można zarejestrować 'partię kontroli wyborów', wyłonić kandydata/kandydatów a następnie go NIE reklamować. O ile bedzie przyznany czas antenowy zużyć go na informację o sposobie głosowania oraz na informowanie aby NIE głosować na naszych kandydatów.
  • 'Nasi ludzie' musza obserwować proces wyborczy od początku do konca. To oznacza prawdopodobnie 24 godziny (albo i więcej) na nogach. Jeśli było by wiecej osób mogli by działac na zmiany chociaż tu są problemy formalne.
  • Ludzie powinni zrobić kopie protokołów - zdjęcie w wysokiej rozdzielczości. Każdy robi to niezależnie. Technicznie potrzebna rozdzielczość to minimum 5 Mpix przy niskiej kompresji. Wielkosc pliku wyjsciowego dla kartki A4 to ok. 1-3MB.  Jesli robi sie kopie przed powieszeniem na drzwiach to jakość powinna byc wystarczajaca. Przy zdjęciach przez szybę przydatny jest zestaw z oświetleniem zewnętrznym - najlepiej polaryzowanym + filtr polaryzacyjny. Koszt wbrew pozorom nie przerażajacy ale niewygoda użytkowania istnieje.
  • Zdjecia przesyła sie na kilka z serwisów zdjeciowych gdzie wynajmuje się kilka GB tylko do zapisu (z ograniczeniami dla wysylajacych aby nie kasowali zdjęć innym - choćby przez nieuwagę). Dodatkowo wysyła sie zdjecia mailem jako załączniki na 'listy dystrybucyjne' grup. W wersji 'light' wystarczy potwierdzona wysyłka na 2 listy e-mailowe.
  • Niezależna grupa ludzi robi zdjęcia protokolow wywieszonych na drzwiach lokali wyborczych i tez wysyla to na serwery. Potrzebne jest to aby wprowadzić element redundancji oraz kontroli. Zdjęcia wysyłane są też na te same serwery.
  • Wysyłka na wiele serwerów równocześnie ma dać element zabezpieczenia ale też i uniemożliwic ataki DDOS.
  • Wiele grup analizujących dane przegląda dane wysylane na listę dystrybucyjną i wprowadza wyniki do naszego 'systemu'. Ten system to wystarczy że będzie 'arkusz' plus prosta 'aplikacja' do sumowania i kontroli wyników. Rozwiazanie na LAMP powinno byc do zrobienia w 2 tyg. plus testy 1 miesiąc. Przepustowość wymagana nie bedzie bardzo duża i będzie ograniczona ilością osób wprowadzających dane. Nie sądzę aby dało się uzyskać więcej niż 2-3 transakcje na sekundę. Tak na prawd
  • Wielosc grup wprowadzajacych daje wylapywanie bledow oraz wzajemna kontrole. W sumie stara zasada 'wierz i kontroluj'....
  • Licznosc osob w grupie 'obserwacyjnej' to ok. 50k ludzi (25 tys komisji * 2 osoby).
  • Licznosc osob w grupie 'fotografow drzwi' to nie wiecej niz 5 tys osob (25 tys komisji * 2 osoby  /10)
  • Licznosc osob w grupie 'liczacych' to nie wiecej niz 100 osob na grupe. Wielkosc grupy to kwestia wydajnosci przepisywania danych (w sumie ok. 1.8M stron przy wydajnosci oczekiwanej rzedu 500 dokumentów / osobę / 8h) i dopuszczalnego czasu uzyskania wynikow. Wpisywanie danych na sprzecie odlaczonym fizycznie od sieci. Dane (pliki JPG) przenoszone sa z komputerow 'sieciowych' odbiorczych na nosnikach CDROM. Wyliczone wyniki czastkowe sa przenoszone w postaci wygenerowanych statycznych stron WWW wypalonych na CD.
  • Alternatywne rozwiązanie liczenia - mniej bezpieczne  ale tańsze i szybsze - każdy z  wpisujących wpisuje w domu w oparciu o aplikacje sieciową. Zabezpieczenie transmisyjne tylko w oparciu o HTTPS. Aplikacja musi umozliwiać weryfikacje w oparciu o klucze osob wpisujacych. Ilość osob - powiedzmy 1000 (im więcej tym lepiej - weryfikacja w oparciu o wprowadzenie tych samych danych przez inne osoby).
  • Ilość grup liczących to min. 1 najlepiej 3 lub więcej. Najlepiej aby oprócz grup 'partyjnych' istniała też grupa niezależna od partii politycznych.
  • Ilość informatyków - nie więcej niż 7 osób do tworzenia aplikacji i do obsługi serwerów. Tu muszą być zaufani ludzie pod kontrolą. Kod jaki powstanie powinien być z jednej strony udostepniony publicznie do weryfikacji a z drugiej strony przejrzany przez odpowiedzialnych ludzi.
  • Warstwa prezentacyjna - statyczne strony www ładowane z CD 'wypalonych' przez grupę 'wpisujaca' (na przyklad generowane automatycznie co godzinę). Strone generowalby prosty skrypt
  • Miejsce na kontach pocztowych / liscie dystrybucyjnej - 25 str po 3MB *2 (kodowanie MIME) * 25 tys komisji * 3 (2 ludzi w komisji + zdjecia z drzwi). Mi wychodzi jakies 12-15GB. Duzo ale do przerobienia minimalnym kosztem.
  • Koszt (nie liczac kosztow pracy osob - tu niestety trzeba liczyc na stare dobre pospolite ruszenie) jest relatywnie niewielki i powinien sie zamknac w kilkudziesieciu tysiacach zlotych.
    • Wynajecie sali dla wprowadzajacych + catering + media (na 100 osob / 5 dni - kilka tysiecy zl - nie musi byc w centrum miasta).
    • Podciagniecie internetu stacjonarnego min. 5Mbps (100zl) + backup  LTE(50-100zl)
    • Email Server - darmowy Gmail (15-30GB) + backup lokalny ('wlasny' serwer w PL do zbierania danych)
    • WWW server - max 100zl/mies (cena za http://Rootbox.pl/ ) + backup albo rownolegly poza EU (100$ gora). Oba musza byc na sprawdzonej infrastrukturze i na roznym sprzecie/sofcie.
    • Domena glowna do prezentacji danych - 10zl / 75zl, domena 'robocza' do zbierania danych i komunikacji wewnetrznej darmowa ew. 10/75zl.
Prosilbym o zglaszanie uwag do propozycji. To nie jest zart ani podpucha. Jesli beda chetni to mozemy ruszac od dzisiaj. Do wyborow prezydenckich moze sie udac. Do wyborow parlamentarnych wszystko powinno byc dopracowane.
Oczekuje sensowych wypowiedzi - glownie komentarze do propozycji planu dzialania a najlepiej znalezione 'dziury' i bledy w projekcie. Wypowiedzi nie na temat i trolowanie bede usuwal.

Kontakt ze mna : wybornik@gmail.com