Dlaczego PKW w ogóle zamawiała nowy program do obsługi liczenia głosów? O ile mi wiadomo, przez ostatnie cztery lata żadnych fundamentalnych zmian w prawie wyborczym nie było, więc czy nie można było użyć starego programu, ewentualnie wprowadzając poprawki?
Dlaczego przetarg na ten program rozpisano na trzy miesiące przed wyborami? Nikt nie pamiętał, ile zajęło pisanie poprzedniego? Nikt nie znał terminu wyborów?
Dlaczego nie było żadnego planu awaryjnego i wszystko wyglądało tak, jakby nikomu w PKW nawet się nie śniło, że system może zawieść, nawet mimo mocnych sygnałów, że tak będzie?
Dlaczego liczenie głosów trwało prawie tydzień? Nawet gdyby padło wszystko co tylko mogło, nawet gdyby wyniki musiały być dowożone osobiście do komisji wojewódzkich, to nadal nie tłumaczy tak długiego oczekiwania. Program mógł się wywalić, ale wklepać wyniki do Excela chyba każdy umie, a tu tak, jakby wszystko na liczydłach sprawdzali.
Dlaczego nawet po tym tygodniu PKW nie potrafiła porządnie przedstawić wyników na konferencji prasowej, do tego mając wielkie pretensje, że ktoś ma czelność się ich domagać? Po takiej bezprecedensowej kompromitacji wypadałoby chociaż okazać pokorę i przeprosić, a nie udawać, że nic się nie stało.
No i wreszcie: Dlaczego ten program był taką katastrofą? Ja naprawdę jestem człowiekiem bardzo spokojnym i wyrozumiałym, wiele programistycznych kwiatków w życiu widziałem i niewiele mnie może zdziwić, ale jak zobaczyłem kod źródłowy, to autentycznie się załamałem. Punktowanie błędów i wpadek byłoby kopaniem leżącego paralityka, bo zrąbane jest praktycznie wszystko, od samych podstaw – nic dziwnego, że ten program padł, dziwne raczej, że w ogóle działał. A potem jeszcze wyczytałem tu i ówdzie, że program ma gigantyczne dziury bezpieczeństwa w rodzaju braku sprawdzania poprawności certyfikatu – co oznacza, że nikt go nawet nie próbował testować, bo przecież najbardziej podstawowe testy natychmiast by część tych dziur ujawniły. Dno i trzydzieści metrów mułu, bo trzy to za mało.
Dymisja całej PKW to oczywista oczywistość, ale mam nadzieję, że firma Nabino też potężnie beknie za ten szajs, który wyprodukowała – co by nie mówić o okolicznościach przeprowadzenia przetargu, nic nie tłumaczy odwalenia tak totalnego dziadostwa. Zwrot pieniędzy plus kara umowna za niewykonanie zamówienia (bo przecież nie sposób mówić o jego wykonaniu, jeśli program nie spełnia podstawowych wymagań) to oczywistość równie oczywista – i oby doprowadziło ich to do bankructwa, bo całkowicie sobie na to zasłużyli.
W normalnym kraju do znalezienia odpowiedzi na te wszystkie pytania należałoby powołać komisję śledczą – ale jak próbuję sobie wyobrazić naszych posłów biorących się za kwestie informatyczne… Nie, chyba nie chciałbym tego oglądać.
Komentarze
Co do wpadek programistycznych widocznych w kompilacie to się nie wypowiem, nie znam specyfikacji tej maszyny wirtualnej żeby wiedzieć na ile to co widzimy odpowiada kodowi źródłowemu. Ale powiedz szczerze, czy serio sądzisz (możesz pomyśleć chwilę zanim odpowiesz) iż brak sprawdzania łańcucha certyfikacji w tym kodzie ma jakikolwiek wpływ na bezpieczeństwo czegokolwiek?
Z tego co czytałem, dekompilacja kodu w C# daje wynik o ponad 90% zgodności ze źródłem, więc raczej niewiele można tam zwalić na (de)kompilator. Zresztą takie pomysły jak generowanie XML-a drogą mozolnego lepienia stringów przez parę tysięcy linii, nie mają prawa być wytworem kompilatora, chyba że ominął mnie jakiś przełom w kwestii sztucznej inteligencji.
Co do certyfikatów – certyfikat przewodniczącego komisji jest wysyłany na serwer, więc mam nadzieję (bo zdecydowanie nie pewność), że chociaż tam jest prawdziwa weryfikacja – ale certyfikaty szeregowych członków są „weryfikowane” tylko po stronie klienta, więc każdy może się zalogować jako członek komisji i po cichu podmienić wklepane wyniki, zanim przewodniczący je wyśle. „Wpływ na bezpieczeństwo” raczej oczywisty.
„Po takiej bezprecedensowej kompromitacji wypadałoby chociaż okazać pokorę i przeprosić, a nie udawać, że nic się nie stało.”
No, podali się do dymisji, tyle przyzwoitości mieli.
Po iluś dniach burzy i naporu w końcu się pod(d)ali, ale niczego na kształt przeprosin nadal nie zauważyłem. Może raczą je złożyć po drugiej turze…
Z tego co gdzieś wyczytałem procedury PKW były takie, że tylko protokoły wydrukowane z programu, zawierające wygenerowaną sumę kontrolną są jedynym prawnie ważnym dokumentem. A przynajmniej ponoć tak mówili przedstawiciele Komisji na szkoleniach.
W przepisach zdaje się jest jak byk napisane, że w razie problemów dopuszcza się ręczne sporządzanie protokołów końcowych. Widać nikt w PKW nie brał pod uwagę takiego scenariusza, więc nie przygotowali szkoleń na taki wariant.
To właśnie mnie najbardziej (obok, po co w ogóle był potrzebny nowy program?) zastanawia, ten brak planu B.
No właśnie dla mnie nadal weryfikacja certyfikatu klienta po stronie klienta nie jest ani trochę oczywista. W jaki sposób dodanie do wysyłanego XML czegoś rzędu verified=true sprawiłoby, że trudniej byłoby ten system zaatakować?
Potencjalnym zagrożeniem jest nie tylko haker wysyłający spreparowane requesty, ale też kretyn/sabotażysta w komisji, który tyle zepsuje, ile mu program pozwoli. Oczywiście ten drugi stanowi drobiazg w porównaniu z tym pierwszym, a ostatnią instancją w kwestii bezpieczeństwa jest tak czy siak serwer, ale to nie znaczy, że klient nie powinien dbać o swoją działkę.
Jeśli nadal masz wątpliwości: wysyłane wyniki muszą być zatwierdzone przez wszystkich członków komisji, którzy logują się po kolei swoimi certyfikatami i klikają co trzeba. Skoro jednak klient nie sprawdza certyfikatów, to przewodniczący komisji (którego certyfikat jako jedyny idzie na serwer – już widzę, jak ten serwer musiał być pisany, jeśli jego autorów nie zastanowił ten szczegół) może po godzinach zmienić wyniki i zatwierdzić je w imieniu wszystkich pozostałych. Nie musi mieć bladego pojęcia o łamaniu zabezpieczeń, a dziurę może odkryć choćby przypadkiem.
BTW: to nie pozostawia żadnych złudzeń, że reszta systemu prezentuje się lepiej od klienta…
Czyli problemem jest to, że nie wszyscy członkowie komisji składają podpis* pod protokołem. Nie zaś, że członek nie sprawdza sam swojego podpisu.
Oczywiście, ale skoro już robimy desktopowego klienta, szkolimy ludzi i tak dalej, to niechby ten klient cokolwiek załatwiał poza generowaniem requestu – inaczej nie widzę powodu, dla którego nie miałby to być zwykły formularz na stronie.
Wprost przeciwnie, ten klient z definicji ma służyć generowaniu requestu. A powodem, dla którego jest to paskudniasty klient zamiast formularza na stronie jest przetarg. Który ponoć był ustawiony pod firmę która robiła w zeszłym roku. Czy też po prostu wymagania opisywały jak najdokładniej poprzednią implementację modulo zmiany w prawie. Zaś poprzednia firma się wypięła.
Tutaj pomysł na zmianę sposobu przeprowadzania przyszłych wyborów i sposobu liczenia głosów – opis systemu informatycznego, który by sporo namieszał politykom… tylko kto go będzie chciał… http://blog.1i2.pl/?p=18 Uwaga – tekst dość długi i miejscami trudny.