Dlaczego nie używam podpisu elektronicznego?

Przysłuchiwałem się niedawno dyskusji podczas spotkania Klubu Informatyka PTI. Samego spotkania sprawozdawać nie będę, zrobili to znacznie lepiej inni -- napiszę jednak o czymś, co uważam za istotne dla sprawy podpisu elektronicznego.

W samej dyskusji brałem udział biernie, tylko się przysłuchując. Nie uważałem, żebym miał wiele do dodania, w końcu dyskutowali ludzie, którzy od lat zajmują się tym tematem. Rozmowa toczyła się wokół problemów z adopcją podpisu elektronicznego w Polsce. Jako główne problemy wymieniane były ceny (sprawdziłem -- certyfikat kwalifikowany to minimum 300zł rocznie, co zakrawa na żart) oraz brak świadomości istnienia podpisu elektronicznego w społeczeństwie.

Dodałbym trzeci powód braku adopcji. Choć zapewne nieznaczący w ujęciu statystycznym, w gronie ludzi zajmujących się informatyką może okazać się istotny. Dlaczego ja sam nie używam podpisu elektronicznego?

Bo się boję.

W pędzie do popularyzacji podpisu elektronicznego zapomnieliśmy o edukacji. Podpis taki daje co prawda wiele korzyści, ale niesie także ze sobą zagrożenia. O tych drugich mało kto mówi, mam też wrażenie, że mało kto zadaje sobie trud pełnego ich zrozumienia.

Centra certyfikacyjne sprzedadzą nam certyfikaty, karty kryptograficzne, czytniki kart, wszystko z zapewnieniem, że są to produkty najwyższej klasy bezpieczeństwa. Istotnie tak jest. Problem jednak w tym, że większość klientów owe wysokiej klasy produkty podłączy do swojego komputera PC, prawdopodobnie z systemem Microsoft Windows. W najlepszym przypadku nie będzie wiadomo, co się na nim dzieje, jaki kod jest wykonywany, z czym się komunikuje i co robi. W rzeczywistości, czyli w większości przypadków, ów komputer będzie jednym wielkim zoo, gdzie wśród żyraf (programy obserwujące zachowania) i bawołów (wirusy) będą zwinnie bujać się na linach małpy (keyloggery).

Owszem, szybko odpowiedzą eksperci -- ale to nie ma znaczenia, bo podpis generowany jest na specjalnej bezpiecznej karcie z mikroprocesorem! Nie można go ukraść i nie można nim nic podpisać, gdy karta nie jest włożona do czytnika. Tak faktycznie jest. Niestety, nadal można nim podpisać kilka różnych rzeczy zamiast jednej. Temu zaradzi czytnik z klawiaturą (pin-padem) -- zakrzykną eksperci! To prawda -- nawet wtedy jednak pozostaje główny problem: użytkownik nie wie, co podpisuje.

Pamiętajmy, że to co akurat wyświetla na ekranie nasz komputer, nie musi mieć żadnego związku z tym, co do podpisania dostaje czytnik. I tak prawie zawsze podpisem opatruje się funkcję skrótu dokumentu, a nie cały dokument, użytkownik zaś na ekranie widzi dokument. Głównym jednak problemem dla mnie jest to, że nie mogę być pewien czy faktycznie podpisuję to, co widzę na ekranie.

Jeśli ktoś w tym momencie twierdzi, że taki atak nie jest prawdopodobny, to jest naiwny. Wiele osób twierdzi, że programy przechwytujące naciśnięcia klawiszy (keyloggery) to problem wydumany. Tym polecam pobudkę, na przykład poprzez przeczytanie o Mumbai, gdzie wręcz wymaga się od kawiarni internetowych instalowania takich programów.

Cały problem w tym, że mając bezpieczną infrastrukturę do podpisu elektronicznego, wprowadzamy do niej element, któremu nie można ufać: komputer PC. Wydawało mi się to tak oczywistym przeoczeniem, że nie chciałem wierzyć, że twórcy ustaw o podpisie elektronicznym nie pomyśleli o tym problemie. Wczytałem się więc w akty prawne. Co się okazało? Pomyśleli -- i nawet opisali precyzyjnie jakie wymagania musi spełniać "bezpieczne urządzenie do składania podpisów elektronicznych":

§ 6. Bezpieczne urządzenie do składania podpisów elektronicznych oraz bezpieczne urządzenie do weryfikacji podpisów elektronicznych mają możliwość obliczania i prezentowania przynajmniej jednej z funkcji skrótu w stosunku do danych służących do weryfikacji bezpiecznego podpisu elektronicznego lub poświadczenia elektronicznego, będących dla osoby składającej bezpieczny podpis elektroniczny lub weryfikującego bezpieczny podpis elektroniczny punktem zaufania. (ROZPORZĄDZENIE RADY MINISTRÓW z dnia 7 sierpnia 2002 r., Dz. U. Nr 128, poz. 1094) (podkreślenie autora)



Oto i rozwiązanie mojego problemu -- mam komputer PC, który wyświetla mi na ekranie dokument i pokazuje jego funkcję skrótu. Równocześnie, ów dokument przesyłany jest do zaufanego urządzenia zewnętrznego (najlepiej z otwartym, audytowalnym), które niezależnie liczy funkcję skrótu i wyświetla mi ją na wbudowanym ekranie LCD. Do urządzenia zewnętrznego mam zaufanie, wiem też, że jego oprogramowania nie da się zmienić, bo jest zapisane w pamięci ROM. Mogę więc porównać oba skróty i spokojnie autoryzować podpis, wiedząc co podpisałem.

Nie rozumiem dlaczego na stronach Sigillum jest informacja, że bezpiecznym urządzeniem do składania i weryfikacji podpisu elektronicznego zgodnie z wymaganiami ustawy i rozporządzenia są zestawy czytnik + komputer PC + oprogramowanie. W żaden sposób za bezpieczny (czyli spełniający wymagania opisane w Rozdziale 2 rozporządzenia) nie może być uznany komputer PC z oprogramowaniem, chociażby dlatego, że nie ma kontroli nad wyświetlanym obrazem na ekranie oraz nad danymi wpisywanymi z klawiatury. Wytłumaczeniem nie może być ograniczenie technologiczne, bo istnieją czytniki z wyświetlaczem -- i jak przypuszczam, wynik funkcji skrótu potrafią wyświetlić.

Nie jestem bynajmniej jedynym, który zauważył problem. Przykładem może być chociażby praca "Digital signature in insecure environments".

W profesjonalnej analizie o bezpieczeństwie zawsze mówi się jako o kompromisie. Można mieć system albo bezpieczny, albo wygodny w użyciu. Na drugim wykresie pokazać można ryzyko finansowe: ile klient ryzykuje, wybierając mniej bezpieczny system. O ile wybory te są świadome, można dobrze dobrać politykę bezpieczeństwa do realnych wymagań. W przypadku podpisu elektronicznego jestem w stanie zrozumieć, że w wielu zastosowaniach biznesowych (takich jak np. masowe podpisywanie faktur wykonywane na zaufanym i zabezpieczonym systemie) obecne rozwiązania mają sens i są rozsądnym kompromisem. Nie jest tak jednak w przypadku osób fizycznych. Tu systemy są znacznie gorzej zabezpieczone (to dopiero eufemizm!), a względne ryzyko finansowo-prawne nieporównywalnie większe.

Jeśli chodzi o mnie, podpisując na komputerze z systemem Linux czułbym się lekko niekomfortowo, ale zaakceptowałbym ryzyko, w końcu system jest audytowalny i kod systemu i aplikacji jest regularnie oglądany przez wiele osób. Na moim MacBooku z Mac OS X byłbym już dużo ostrożniejszy, zaś z Windows nie odważyłbym się na podpis w ogóle. Dopóki więc na rynku nie będą powszechnie dostępne czytniki kart z klawiaturą (pin-padem), wyświetlaczem pokazującym funkcję skrótu oraz audytowalnym oprogramowaniem, dopóty nie będę używał podpisu elektronicznego, który może rodzić dla mnie skutki prawne.


Sztuka prezentacji: pięć rad dla występujących

Po ostatnich spotkaniach bootstrapowych i aulowych nasunęło mi się kilka spostrzeżeń na temat sposobu prezentowania, szczególnie gdy czas prezentacji jest bardzo krótki. Spisuję je w formie rad -- nie dlatego, żebym sam trudną sztukę wystąpień publicznych opanował w stopniu doskonałym, ale po to by pomogły tym, którzy dopiero zaczynają się tego uczyć. Oto kilka rad, których warto się trzymać:

1. Przećwicz sam lub przed znajomymi swoją prezentację zanim powiesz ją publicznie. To jest niezmiernie ważne, szczególnie dla prezentacji krótkich (5 minut), gdzie każda sekunda ma znaczenie. W żaden inny sposób nie dowiesz się czy zmieścisz się w czasie, co jest naprawdę trudne do oszacowania nawet dla doświadczonych mówców. Jeśli ćwiczysz ze znajomymi, dodatkowo skrytykują oni Twoją prezentację, zwrócą uwagę na to, co jest niejasne i poradzą skrócić to, o czym mówisz za długo. Jeśli ćwiczysz sam, nie rób tego na skróty: wygłoś prezentację, a nie czytaj w myśli. To są zupełnie różne rzeczy.

2. Miej sposób na skrócenie lub wydłużenie prezentacji, jeśli zajdzie taka potrzeba. Wydłużenie jest nietrudne: wystarczy mieć na końcu dodatkowy slajd lub dwa, a na nich rozwinięcie ciekawszych wątków. Skrócenie jest trudniejsze, ale niezmiernie cenne, bo znacznie lepiej jest zamknąć prezentację własną puentą niż mieć ją przerwaną brutalnie na 2-3 slajdy przed końcem. Sam staram się na końcowych slajdach mieć kilka punktów, których w razie potrzeby mogę nie omawiać.

3. Nadaj swojej prezentacji strukturę. Niech będzie widoczne z jakich części się składa i na którym jej etapie jest słuchacz w każdej chwili. Struktura zaczyna się od dokładnego przemyślenia prezentacji, ale potem można ją też podkreślać formatowaniem slajdów, kolorem paska z boku lub na dole, "progress-barem", a nawet przejściami między slajdami. Warto też dodawać wskazówki słowne ("kolejne zagadnienie, o którym powiem", "drugi temat to", "ostatni temat dotyczy" itp.). Niedoścignionym mistrzem nadawania struktury był dla mnie Michael Dertouzos, szef MIT Laboratory for Computer Science, który potrafił wygłosić 45-minutowy wykład bez slajdów (!) tak, by w każdym momencie dowolny słuchacz wiedział dokładnie o czym jest mowa, gdzie obecny temat mieści się w ogólnej strukturze wykładu i co będzie dalej. Słuchając go na konferencji ACM1 zrozumiałem, jak bardzo wiele jeszcze muszę się nauczyć jeśli chodzi o publiczne wystąpienia.

Dla dłuższych prezentacji warto wstawić blisko początku slajd opisujący strukturę, zaś potem trzymać się punktów z tego slajdu.

4. Zadbaj o aspekty techniczne. Jeśli masz prezentację na urządzeniu USB, wgraj ją wcześniej na komputer organizatora. Jeśli masz własny laptop, sprawdź wcześniej, czy działa z rzutnikiem i czy masz poprawne ustawienia ekranu. Wyłącz Wi-Fi i Bluetooth, żeby nie dostać kompromitujących komunikatów od kogoś w czasie prezentacji.

⁃ Jeśli używasz Windows: wyłącz screensaver, posprzątaj pulpit, by nie było tam poufnych bądź kompromitujących rzeczy (tak, tak).

⁃ Jeśli używasz Mac OS: nie ustawiaj swojego maka w tryb "mirror", tylko w Keynote wybierz "present on secondary display", w ten sposób Twój pulpit nigdy nie pojawi się na ekranie rzutnika. Ważne: zawsze podłączaj rzutnik do komputera, nigdy rzutnik do przelotki wetkniętej do komputera (wiele osób robi to drugie, przez co komputer ma kłopoty z wykryciem rzutnika).

Mnóstwo osób nie zwraca uwagi na takie rzeczy, a mają one duże znaczenie dla odbioru mówcy i jakości prezentacji. Jeśli ktoś zaczyna spóźniony pięć minut po wielkiej walce z laptopami, kablami, ekranami, desktopami i ustawieniami, to ma znacznie gorszą pozycję wyjściową niż inny mówca, startujący na luzie i bez problemów. Mówca jest zestresowany, publiczność znudzona lub (gorzej) rozbawiona. Naprawdę lepiej to dobrze przygotować.

5. Gdy przedstawiasz "elevator pitch", czyli radykalnie nowy pomysł na biznes w wielkim skrócie, koniecznie na początku powiedz na czym polega pomysł. Oczywiste? A jednak. Widziałem już sporo prezentacji w których po kilku minutach nadal nie było wiadomo o co chodzi, za to dowiedziałem się dużo o konkurencji, rynkach, trendach i innych mało istotnych rzeczach. Jeśli nie umiesz opisać czym jest Twój pomysł w jednym zdaniu na jednym slajdzie, to nie powinieneś go prezentować.


Statystyki kłamią

Jak wiadomo, statystyki kłamią. A skoro kłamią, to nikt nie powiedział, że raz opublikowanych wyników nie można zmienić. Na ostatniej Auli rozdałem uczestnikom tę samą ankietę, którą dostali wszyscy na Ogólnopolskim Barcampie. W ten sposób pozyskałem prawie dwudziestu nowych respondentów. Oto jak poprzesuwały się obszary zainteresowań:

techaula-ankieta-infografika-2-2
Starałem się utrzymać ogólną orientację grafiki podobną do tej poprzedniej -- wymagało to odwrócenia jednego ze składników podstawowych i poobracania wykresu ręcznie.

Co widać nowego? Niewiele -- za to wyniki się skonkretyzowały. Tematy popularne ("mainstream") są zgrupowane ciaśniej razem. Erlang odjechał zgodnie z przewidywaniami w stronę języków funkcyjnych. Lua, SeaSide i Arc nadal leżą na końcu znanego świata, zaś makra wyraźnie już wylądowały w grupie mainstream, więc większość respondentów nie widzi ich jako metaprogramowanie.

Chciałbym przygotować animację zmian w miarę jak przybywa respondentów, lecz nie wiem czy znajdę na to czas. Są niestety ekspertyzy i oprogramowanie do napisania...


Wyniki ankiety TechAuli

26 lutego na Ogólnopolskim Barcampie rozdaliśmy wszystkim do wypełnienia ankietę. Chodziło o przygotowanie TechAuli, czyli nurtu technologicznego spotkań Aulowych.

Opracowanie wyników zajęło mi trochę czasu, głównie dlatego, że musiałem nauczyć się kilku nowych dla mnie technik. Wyniki jednak są interesujące. Oto wygenerowana automatycznie infografika podsumowująca jedną ilustracją wyniki ankiety:

techaula-ankieta-pca

Powyższa infografika zawiera mnóstwo informacji. Wielkość czcionki i jej kolor oznaczają średnie zainteresowanie danym tematem (większa czcionka i "gorętszy" kolor to większe zainteresowanie). Koła odpowiadają znajomości danego pojęcia: im mniejsze koło, tym więcej osób zaznaczyło zero przy danym pojęciu, co oznacza że w ogóle go nie znali. Położenie pojęć wynika z analizy czynników podstawowych i jest najlepszą projekcją danych w dwa wymiary przy zachowaniu wzajemnych odległości między pojęciami. Odległości definiowane są przez korelację odpowiedzi, co oznacza że pojęcia na które ludzie odpowiadali podobnie powinny znaleźć się bliżej siebie. Odpowiednio, na przeciwnych biegunach grafiki znajdą się pojęcia, na które ankietowani odpowiadali skrajnie różnie.

Kreski pod pojęciami reprezentują "potencjalne zainteresowanie". Zakładając, że jeśli ktoś zaznaczył "0" przy danym terminie, to dziś nic o nim nie wie, ale bardzo chciałby się dowiedzieć, policzono nowe średnie zainteresowanie. Kreski i ich kolor odpowiadają różnicy pomiędzy średnim zainteresowaniem oraz tym "nowym", uznającym zero za "bardzo interesujący temat". Jak widać, są tematy które są zarówno nieźle znane, jak i mają spory potencjał (np. django), są też tematy oklepane (Perl) i kompletnie nowe (Lua).

Interesujące jest, że Erlang i Prolog znalazły się blisko najbardziej znanych pojęć. Nazwy te brzmią znajomo dla wielu osób, wygląda to na efekt dobrego marketingu, którego nie ma np. Lua. Inne ciekawe spostrzeżenia, to że makra znalazły się zdecydowanie zbyt blisko Perla i technologii doskonale wszystkim znanych, z czego można wnioskować, że uczestnicy ankiety interpretowali to pojęcie jako makra tekstowe, a nie programistyczne (z języków typu Lisp). Podobnie nieoczekiwane jest umiejscowienie "pattern matching" i "non-deterministic programming". Pierwszego oczekiwałbym raczej w okolicy języków funkcyjnych (być może mylony był z wyrażeniami regularnymi), drugiego przynajmniej bliżej języka Prolog.

Na najbliższych spotkaniach Auli i TechAuli zamierzam znowu poprosić tych, którzy jeszcze ankiety nie wypełnili, o odpowiedzi. Ciekaw jestem, jak poprzesuwają się kółka na grafice!


Startuje TechAula

Wkrótce pierwsze spotkanie TechAuli, czyli nurtu technologicznego spotkań Aula Polska. Przygotowania zajmują mi sporo czasu -- trzeba określić tematy wystąpień, znaleźć mówców, przekonać że chcą być mówcami, umówić. Trochę jeszcze może to potrwać.

W międzyczasie krótki "teaser", czyli opis koncepcji TechAuli:

TechAula jest miejscem do dyskusji o nowych technologiach informatycznych. Dyskutowane tematy mają z założenia być kontrowersyjne. Koledzy z dużych firm będą stukać się w głowę, mówiąc "kto o tym słyszał? przecież nikt tego nie używa! wiadomo, że świat przechodzi na technologię X!". Tym lepiej: by zbudować firmę typu start-up niezbędne są technologie, które pozwolą wybić się z tłumu, wyjść ponad średnią. Przecież nikt nigdy nie osiągnął sukcesu robiąc to samo, co wszyscy! Warto więc o nowych i kontrowersyjnych technologiach słuchać, nawet jeśli połowa z nich okaże się być kiedyś niewypałami.
TechAula to nie jest miejsce do dyskusji o tym, jak najlepiej wytłoczyć kolejną aplikację w Java Enterprise Cokolwiek ani o tym jak zrobić, by kod w PHP działał dwa procent szybciej. Nie rozmawiamy tu o "industry standard practices", nie mówimy o trendach, tendencjach i modach. Nie jesteśmy zapatrzeni w to, co robi "świat". Jeśli technologia jest powszechnie używana, automatycznie przestaje być nośnym tematem dla TechAuli, chyba że można przedstawić jej interesującą krytykę.
Rolą TechAuli jest poszerzanie horyzontów. Nawet jeśli nigdy nie użyjemy danego języka programowania, to pewne pojęcia, jakie on wprowadza, mogą okazać się użyteczne. Podobnie jest z wieloma technologiami i pomysłami. Stąd szeroki zakres tematyczny i dodatkowe punkty dla tematów, o których pojęcia jak dotąd nie ma nikt.

Korzystając z okazji: jeśli ktoś przeczytawszy powyższy opis ma ciekawy temat do zaprezentowania, to zapraszam do kontaktu ze mną!