Twoja wyszukiwarka

BOGDAN MIŚ
SEKRETY PODPISU CYFROWEGO
Wiedza i Życie nr 9/2000
Artykuł pochodzi z "Wiedzy i Życia" nr 9/2000

Przed trzema miesiącami nastąpiło niecodzienne wydarzenie. Prezydent USA wykonał przed kamerami jakąś operację myszką komputerową, na ekranie monitora pojawił się dziwny symbol graficzny i telewizje całego świata uroczyście oznajmiły, że oto złożony został pierwszy w dziejach legalny podpis cyfrowy. Tyle że niewielu wiedziało, o co w ogóle chodzi.

Sprawa jest rzeczywiście trudna do wyjaśnienia w krótkiej migawce telewizyjnej, bowiem chcąc to uczynić, trzeba odwołać się do pewnych pojęć matematycznych. Niezbyt może trudnych, ale jednak wymagających wiedzy odrobinę głębszej niż zwykła znajomość czterech działań arytmetycznych. Zanim jednak sięgniemy do matematyki, spróbujmy się zastanowić: do czego właściwie służy podpis na dokumentach, w korespondencji - zwłaszcza tej urzędowej?

Odpowiedź wydaje się zupełnie prosta: do identyfikacji nadawcy (ogólniej mówiąc, osoby podpisującej). Byłoby idealnie - zwłaszcza z punktu widzenia prawników - gdyby podpisu na dokumencie nie można było fałszować, gdyby nie dało się go użyć ponownie (np. mechanicznie lub inaczej przenieść na inny dokument), by gwarantował niezmienialność dokumentu (po podpisaniu nie można wprowadzić już żadnych poprawek), wreszcie aby gwarantował jednoznaczną identyfikację autora.

Takich cech podpis odręczny nie ma. W razie czego - jeśli dokument budzi jakieś wątpliwości - biegły grafolog może oczywiście stwierdzić, czy nasz podpis jest autentyczny, co często jest jedynym wyjściem z kłopotliwej sytuacji; dlatego właśnie składamy podpis odręcznie i osobiście. Przez długi czas na całym świecie za obowiązujący uważano wyłącznie taki podpis i innych dokumentów niż oryginały nie uważano za ważne.

Sytuacja uległa zmianie wraz z wynalezieniem faksu. Przesłana w ten sposób kopia podpisanego dokumentu jest na ogół powszechnie uważana za identyczną z oryginałem. Dbałość o szybkość przepływu informacji zwyciężyła zatem z dbałością o bezpieczeństwo, bowiem na kopii przesłanej faksem łatwiej podrobić podpis, łatwiej również dokonać zmian w podpisanym dokumencie, a na dodatek można - skopiowawszy autentyczny podpis - przenieść go na zupełnie inny dokument.

Oto paradoks...

I w tym miejscu dochodzimy do pewnego paradoksu. Otóż od dość dawna istnieje metoda pozwalająca spełnić w całości opisane wyżej marzenia prawników. Istnieje sposób, by tak oznakować dokument, aby osoba to robiąca podlegała jednoznacznej identyfikacji; tak przy tym, aby z dowolną dokładnością określony był czas tego znakowania; wreszcie tak, by każda zmiana dokonana w już oznakowanym dokumencie była możliwa do wykrycia, oraz by znaku w żaden sposób nie dało się przenieść na inny dokument.

Tyle tylko, że znak ten nie jest znakiem graficznym. Nie wykonuje się go ruchem dłoni uzbrojonej w narzędzie do pisania. W niczym więc nie przypomina konwencjonalnego podpisu. I pewnie dlatego - mimo rewelacyjnych cech - najtrudniej było uznać go za prawnie ważny. Ten znak to właśnie podpis cyfrowy.

Zanim jednak rzecz spróbujemy wyjaśnić, musimy kilka zdań poświęcić dyscyplinie wielce tajemniczej - bo od wieków związanej z działalnością wszelkiego typu służb specjalnych - mianowicie teorii szyfrów.

Szyfrowanie jest procesem, w trakcie którego zrozumiała dla każdego wiadomość (tekst jawny) zostaje zamieniona na przekaz (szyfrogram), w założeniu możliwy do odczytania jedynie przez odbiorcę. Szyfrowali już starożytni, a stosowane przez nich prymitywne sposoby polegały na zastępowaniu jednych liter drugimi, np. A przez Z, B przez Y, C przez Z itd. Istotą tego prostego kodowania jest coś, co występuje w każdym, najbardziej nawet złożonym, szyfrze współczesnym: algorytm, czyli przepis na wykonanie całej operacji. W opisanym wypadku algorytm jest banalny ("weź alfabet, podpisz pod nim ten sam alfabet od końca, litery z górnego wiersza zastąp dolnymi"). Przez stulecia wymyślano coraz bardziej złożone algorytmy kodowania. Jednak było to i bardzo niewygodne (im bardziej skomplikowany algorytm, tym trudniej go zapamiętać, a także stosować), i mało skuteczne: zbudować algorytm odporny na "złamanie" doprawdy nie jest łatwo, przecież łamaniem szyfrów, jak i ich tworzeniem zajmują się równie dobrzy matematycy...

Pojawiają się "klucze"...

Tak było do połowy XIX wieku. W procesie szyfrowania obok algorytmu pojawił się wówczas drugi element: tzw. klucz tajny, będący w istocie pewną liczbą (ciągiem bitów), używaną łącznie z algorytmem i powodującą nieco inną jego pracę za każdym użyciem. Przykładem zastosowania takiego klucza (znów bardzo prostym) jest, powiedzmy, podpisanie pod alfabetem wyjściowym jego samego, ale przesuniętego cyklicznie o jakieś "N" miejsc (tu o trzy):

A, Ą, B, C, Ć, D, E,..., Z, e, Ż;
Z, e, Ż, A, Ą, B, C, Ć,..., X, Y.

Wybierając dowolnie liczbę "N", za każdym razem przy tym samym algorytmie dostaniemy inny wynik szyfrowania. Teoretycznie zatem algorytm mógłby być jawny, jeśli mielibyśmy do dyspozycji dostatecznie wiele kluczy tajnych, znanych wyłącznie nadawcom i odbiorcom. Ale i ten sposób postępowania jest żmudny i niepewny. Skomplikowane algorytmy, klucze tajne - wszystko to nie gwarantuje całkowitej poufności korespondencji. Świadczy o tym historia słynnej niemieckiej maszyny szyfrującej "Enigma". Dała ona Niemcom najdoskonalszy w swoim czasie sposób szyfrowania - jednak wystarczyło trzech polskich matematyków, żeby tajemnica przestała być tajemnicą.

Od momentu zastosowania pomysłu z kluczem tajnym na szerszą skalę obie strony: nadawca i odbiorca, musiały zatem mieć wspólną tajemnicę ów klucz. Jeśli jednak dwie osoby współdzielą jakąś tajemnicę, nie jest już ona narażona na dekonspirację.

Przecież trzeba się jakoś umówić, ustalić klucz, wymienić go. Wymaga to albo spotkania i rozmowy, albo innego sposobu przekazu informacji, w trakcie którego sekret może przeniknąć do osób niepożądanych. Co więcej, każdą posiadaną już tajemnicę trzeba chronić, co znów nie jest ani łatwe, ani bezpieczne. Dalej, jeśli tajnie korespondują ze sobą więcej niż dwie osoby (co zdarza się często), każda para musi mieć inny klucz tajny, co bardzo komplikuje sprawę. Co prawda, można w pewien sposób uniknąć wymiany kluczy każdy z korespondujących może mieć swój ale muszą one spełniać pewien dość kłopotliwy dodatkowy warunek i korespondencja też jest złożona.

Klucze jawne i tajne

Dzisiaj wykorzystuje się więc zupełnie inną metodę. Używa się mianowicie nie jednego, ale dwóch kluczy: jawnego i tajnego. Jawny klucz jest używany do szyfrowania, tajny - do odczytywania szyfru. Do danego klucza jawnego pasuje tylko i wyłącznie jeden klucz tajny i są one tak utworzone, że znając ten pierwszy, nie da się odtworzyć drugiego. Każdy może zatem wybrać sobie w określony sposób (dość skomplikowany matematycznie, ale powszechnie dostępny dzięki programom komputerowym) taką parę kluczy. Następnie jeden klucz - jawny - zgodnie z jego nazwą, ujawnia publicznie, drugi klucz - tajny - zachowuje w pamięci. Podkreślmy: klucz tajny zna tylko on sam, nie ma więc mowy o jakimkolwiek współdzieleniu czy przekazywaniu tajemnicy.

Jak to się robi?

Nadawca - chcąc przekazać tajną wiadomość - szyfruje ją, używając klucza jawnego odbiorcy. Ale do odczytania niezbędny jest klucz tajny; nikt, kto go nie zna, nie odczyta (przynajmniej teoretycznie) zakodowanej wiadomości. Może to zrobić jeden jedyny człowiek na świecie: ten, który wygenerował sobie ową parę kluczy i zna klucz tajny . Tu dygresja. Oczywiście, cały problem tkwi w generowaniu kluczy. Łatwo się domyślić, że oba klucze zależą wzajemnie od siebie, ale zależność ta jest niezwykle skomplikowana.

Nie wnikając w szczegóły (zainteresowanych odsyłam do książek wydawnictwa WNT, autorstwa jednego z największych na świecie autorytetów w tej dziedzinie - Bruce'a Schneiera: "Kryptografia dla praktyków" i "Ochrona poczty elektronicznej") powiedzmy tyle, że proces generowania obu kluczy przy użyciu metody, znanej jako RSA (od nazwisk trzech słynnych matematyków - kryptologów: R.L. Rivesta, A. Shamira i L. Adlemana, którzy go opracowali według pomysłu Rivesta w 1990 roku), sprowadza się do rozkładania na czynniki pierwsze pewnych gigantycznych liczb całkowitych, takich o co najmniej 300 cyfrach. Jest to proces tak długotrwały, a użyte w trakcie obliczeń algorytmy tak złożone, że najpotężniejsze komputery nie są w stanie go zrealizować w sensownym czasie (przy dostatecznie długim kluczu proces łamania szyfru musiałby zająć miliony lat) - dlatego wyliczenie klucza tajnego na podstawie znajomości klucza jawnego nie jest praktycznie możliwe.

I wreszcie podpis...

Teraz pora na wyjaśnienie - czym jest w istocie podpis cyfrowy. Pomysł - genialny! - polega na... odwróceniu roli klucza tajnego i jawnego. Dokument wysyłany do odbiorcy (i zaszyfrowany, naturalnie, jego kluczem jawnym) nadawca w pewien szczególny sposób "podpisuje" przy użyciu swego klucza tajnego. Odbiorca otrzymany przekaz odszyfrowuje swoim kluczem tajnym, zaś podpis sprawdza kluczem jawnym nadawcy (przypominam: rola obu kluczy jest symetryczna). Jeśli weryfikacja się powiedzie - oznacza to, iż nikt się nie podszył pod nadawcę, ponieważ tylko on mógł użyć tego akurat klucza tajnego .

Z przygotowanej wiadomości nadawca sporządza pewien "wyciąg", który koduje swoim kluczem tajnym i dołącza do wysyłanego tekstu. Samą wiadomość koduje kluczem jawnym odbiorcy. Odbiorca odkodowuje wiadomość swoim kluczem tajnym i kluczem jawnym nadawcy wspomniany "wyciąg". Równocześnie sam sporządza podobny "wyciąg" - i jeśli oba są identyczne, wszystko jest w porządku.

Zauważmy: takie "oznaczenie" (inaczej mówiąc, podpisanie) dokumentu zależy od tego dokumentu i "pasuje" tylko i wyłącznie do niego, bo dla niego jest unikatowo obliczane. Jeśli ktoś zatem ów "podpis" przeniesie na inny dokument - rzecz natychmiast wyjdzie na jaw, bo "wyciągi" nie będą już pasowały. Nie koniec na tym, jeśli już po podpisaniu dokumentu zostanie on zmieniony, tego również nie da się ukryć: porównanie da znów zupełnie inny wynik. Dalej, w dokumencie można umieścić datę: staje się ona w ten sposób nieusuwalnym i niezmienialnym jego elementem. Co więcej, nadawca nie może się w żaden sposób wyprzeć nadania dokumentu, bowiem para kluczy jawny-tajny pasuje tylko do niego i nikt inny użyć jej nie mógł. Wszystkie postulaty idealnego podpisu są więc spełnione.

Szyfrowanie zwane symetrycznym

Pan A szyfruje przesyłaną wiadomość swoim kluczem KA i wysyła ją do pani B. Pani B, nie czytając (jasne, bo nie zna klucza KA), szyfruje otrzymaną wiadomość raz jeszcze swoim kluczem KB i odsyła ją w tej postaci panu A. Pan A rozszyfrowuje to, co otrzymał, swoim kluczem KA (wiadomość pozostaje zaszyfrowana kluczem KB) i odsyła pani B. Pani B rozszyfrowuje wiadomość swoim kluczem i może ją wreszcie odczytać. Warunek powodzenia: wynik szyfrowania nie może zależeć od kolejności użycia kluczy, czyli muszą one być przemienne; nie każde dwa klucze mają tę właściwość. Ponadto wiadomość musi wędrować trzy razy, co nie zawsze jest wykonalne i wymaga czasu.

Unia Europejska zalegalizuje podpis cyfrowy

Ministrowie telekomunikacji państw, będących członkami Unii Europejskiej, oficjalnie zatwierdzili ustawodawstwo niezbędne do uznania podpisów cyfrowych za równorzędne z odręcznymi. Wstępna akceptacja związanych z tym przepisów nastąpiła w kwietniu 1999 roku.

Dyrektywa Unii Europejskiej, która zostanie wprowadzona w życie przez państwa członkowskie w ciągu 18 miesięcy, umożliwi szybszy rozwój handlu elektronicznego w Europie.

Decyzja odzwierciedla też rosnące znaczenie handlu elektronicznego w gospodarce Unii oraz potrzebę zapewnienia, że zróżnicowanie przepisów obowiązujących w poszczególnych krajach nie będzie przeszkodą w zawieraniu międzynarodowych transakcji elektronicznych.

Dyrektywa określa podstawowe zasady bezpieczeństwa i odpowiedzialności dla operatorów usług internetowych, którzy będą odpowiedzialni za prawdziwość certyfikatów cyfrowych. UE nie sugeruje żadnej konkretnej technologii, chociaż kodowanie za pomocą klucza publicznego jest najczęściej stosowaną technologią do tworzenia podpisów cyfrowych.

Computerworld Polska OnLine, 1.12.1999

O podpisie cyfrowym w Sieci

www.software.com.pl/konferencje/PKI2000/wyk/w2.asp
www.radiotechmkt.com.pl/podpis.htm
www.networld.com.pl/artykuly/0495.html
www.clico.pl/clico/nc-sec/ncvssec.htm
www.clico.pl/clico/polityka-bezpiecz.html
www.wsiz.rzeszow.pl/html/student/pracekzr/dzienne/kiler/kiler.htm
www.enigma.com.pl/produkty/pemheart.htm
www.ci.pwr.wroc.pl/Programy.GW/gw5.html
www.aba.krakow.pl/Security/intrusion.html
www.tpsa.pl/regulacje/e_gospodarka.html
tempus.ii.uni.wroc.pl/~semek/fingerprinting/opracowanie.html
www.cc.com.pl/security/bezpwwws.html
www.teleinfo.com.pl/ti/1999/44/t14.html
www.microsoft.com/poland/outlook/opis3.htm
www.wsp.krakow.pl/Pl-asc/papers/konfp2.html
www.telecomforum.pl/9811/13.htm
www.safecomp.pagi.pl/ofirmie.htm

Warto wiedzieć

Powiedzmy, że napisaliśmy już wiadomość do zaszyfrowania za pomocą pewnego komputerowego programu szyfrującego (np. słynnego PGP - Pretty Good Privacy, dostępnego bezpłatnie). Najpierw na podstawie treści tej wiadomości i ściśle zależnie od niej zostanie obliczona tzw. funkcja haszująca (rodzaj wyciągu). Wygeneruje ona pewną liczbę. Wygląda to mniej więcej tak:

Wiadomość X Funkcja haszująca Wygenerowana liczba
J-23 spotka się ze Stirlitzem w Berlinie we wtorek F(X) 1234567

Po obliczeniu wartości funkcji haszującej używany program komputerowy zaszyfruje tę liczbę za pomocą klucza tajnego nadawcy, a następnie zapisze nową wersję wiadomości, która zawiera teraz informacje o programie podpisującym oraz znaczniki końca i początku podpisanego pliku.

Weryfikacja podpisu przez adresata znów wymaga uruchomienia specjalnego programu, który odszyfrowuje "zhaszowaną" wartość podpisu za pomocą publicznego klucza nadawcy. Wartość ta zostanie porównana z obliczoną dla otrzymanej wiadomości wartością tej samej funkcji haszującej, która została użyta przez nadawcę. Jeżeli wyszło to samo, dokument jest autentyczny, nadawca zaś jest tym, za kogo się podał.