Bezpieczeństwo danych w Internecie

Grzegorz Blinowski Instytut Informatyki PW
Nowowiejska 15/19
00-665 Warszawa
tel. 660-7995
e-mail: gjb@ii.pw.edu.pl

"CC"
Puławska 107A/2
02-595 Warszawa
tel/fax (22) 44-35-62
e-mail: cc@medianet.com.pl

Komercjalizacja Internetu z jaką obecnie mamy do czynienia pociąga za sobą konieczność zapewnienia odpowiedniego poziomu świadczonych w nim usług. Internet przestaje być siecią akademicką o statusie "eksperymentalnym", staje się środkiem do prowadzenia biznesu. Za pomocą globalnej sieci dokonuje się marketingu, sprzedaje towary i usługi. Internet łączy też oddziały firm za ułamek kosztów jakie musiały by ponieść one w wypadku posiadania prywatnej sieci rozległej. Użytkownicy płacą, ale i wymagają, wymagają zaś przede wszystkim poufności, wiarygodności i bezpieczeństwa swoich danych wędrujących po globalnej sieci. Wymagań tych Internet jeszcze niedawno nie mógł spełnić. Obecnie następuje znaczna poprawa w bezpieczeństwa, jednak fakt, że zaledwie kilka banków na świecie zdecydowało się świadczyć bezpośrednio usługi typu płatnościowo/rozliczeniowego przez Internet świadczy o tym, że w dziedzinie bezpieczeństwa Internetu pozostało wiele do zrobienia.

Konieczność ochrony danych przesyłanych przez Internet.

Wymienić można wiele przykładów wykorzystania Internetu, w których poufność danych jest konieczna. Wymienione już usługi bankowe to przykład sztandarowy, ale być może nie najważniejszy. Inne przykłady to: przesyłanie numerów kart kredytowych (konieczne przy dokonywaniu przez sieć jakiegokolwiek zakupu), przesyłanie danych paufnych między oddziałami firmy (nawet zwykłe dane księgowe nie powinny wpaść w niepowołane ręce). Po pewnych przemyśleniach dochodzimy też do wniosku, że zwykła poczta elektroniczna powinna być poufna. Philip Zimmerman, autor słynnego pakietu programów szyfrujących PGP, pisze: "Jest osobista. Jest prywatna. I nie powinna obchodzić nikogo prócz Ciebie. Może planujesz kampanię polityczną, może dyskutujesz o swoich podatkach, a może masz sekretny związek miłosny. Może robisz coś, co wedłu Ciebie nie powinno być nielegalne, ale jest. Cokolwiek by to było, nie chcesz, aby twoja poczta elektroniczna (e-mail) lub inne poufne dokumenty wpadły w niepowołane ręce."

Co chronić?

Jakich cech oczekujemy od bezpiecznych systemów Internetowych? Ogólnie, problem ochrony danych został omówiony w nr. ... NetWorld, skupmy się więc na praktycznych oczekiwaniach. Pierwszym wymaganiem jest weryfikacja tożsamości. Jest ona stosunkowo prosta do zrealizowania w systemach wolnostojących - użytkownik identyfikuje się hasłem, kartą magnetyczną, lub tez przy pomocy innego środka potwierdzającego tożsamość. W systemie rozproszonym nie jest to takie proste. Hasło przesłane siecią, nawet zaszyfrowane, może zostać przechwycone. Nawet jeżeli system szyfrowania jest odporny na rozpracowanie pozostają problemy z identyfikacją węzła sieci. Włamywacz może fałszować adresy sieciowe - podszywając się pod węzeł sieciowy o innym adresie. Może on też fałszować bazę danych DNS wprowadzjąc w błąd użytkowników podając im nieprawdziwe adresy sieciowe odpowiadające poprawnym adresom domenowym. W konsekwencji możemy np. wysłać pocztę nie do uprawnionego serwera, lecz do komputera włamywacza. Podobnie, wiadomości wysłane do nas mogą dotrzeć do osób niepowołanych. Mamy więc do czynienia z identyfikacją nie tylko użytkowników lub aplikacji ale i z identyfikacją węzłów sieci. Drugie wymaganie to poufność przesyłanych danych. Przez poufność rozumiemy nie tylko kodowanie danych prywatnych, ale także możliwość przesłania danych, które będą mogły odczytać wyłącznie uprawnione do tego osoby. W sieci takich jak Internet, gdzie nie ma mowy o fizycznym zabezpieczeniu łącz transmisyjnych, poufność może zapewnić jedynie kodowanie. Podobnie jak w przypadku zarządzaniem hasłami pojawia się tu problem zabezpieczenia kluczy kodujących i dekodujących dane.

Stan obecny

Podstawowe protokoły Internetu: IP - protokół warstwy sieciowej oraz UDP i TCP - protokoły warstwy transportu nie posiadają mechanizmów ochrony informacji. Co gorsza, pewne ich cechy powodują, że są one podatne na ataki osób pragnących poznać cenne dane lub też je modyfikować. Nie oznacza to, że protokołów tych nie można zmienić na inne lub rozszerzyć w sposób zapewniający większe bezpieczeństwo przesyłanych danych. Jednak wprowadzenie takich rozszerzeń jest trudne z praktycznego punktu widzenia. Radykalne zmiany, jak np. wprowadzenie szyfrowania danych wymagały by zmiany oprogramowania na setkach tysięcy, a nawet milionach komputerów.

Już obecnie istnieje szereg protokołów i rozwiązań programistycznych zapewniających co najmniej zadowalający poziom bezpieczeństwa niektórych usług Internetowych. Na przykład, bezpieczna wersja protokołów ONC RPC (zdalne wywołanie procedur) pozwala na zrealizowanie m.in. bezpiecznego sieciowego systemu plików. Program SSH (Secure Shell) umożliwia weryfikację tożsamości i bezpieczną pracę zdalną. Wspomniany już wyżej pakiet PGP pozwala na zachowanie poufności oraz weryfikację tożsamości w wiadomościach wysyłanych pocztą elektroniczną. Powstał też uniwersalny system Kerberos pozwalający na weryfikację tożsamości użytkowników praktycznie dowolnych aplikacji. Rosnącą popularność zdobywają też "nakładki" na protokoły transportowe umożliwiające szyfrowanie wszystkich danych przekazywany w sesji, np. SSL - Secure Socket Layer.

Wszystkie wyżej wymienione rozwiązania mają wspólną wadę - nie są uniwersalne. RPC jest techniką rozpowszechnioną i o dość dużych możliwościach, jednak nadaje się głównie do zastosowania na poziomie grup roboczych lub wydziałowych. Także system bezpieczeństwa RPC nie ma charakteru globalnego - umożliwiającego zastosowanie w intersieci. Dotyczy to zarówno ONC RPC (licencjonowanego przez SUNa) jak i DCE RPC (licencjonowanego przez Open Software Foundation). SSH i PGP sa pakietami wyspecjalizowanymi służącymi konkretnym celom: pracy zdalnej oraz szyfrowaniu i potwierdzaniu autentyczności poczty elektronicznej. Kerberos jest co prawda systemem uniwersalnym, jednak nie jest skalowalny do rozmiarów intersieci. Wymaga też przeróbek (tzw. "kerberyzacji") aplikacji, które mają z nim współpracować. Nakładki na protokoły współpracują tylko z nowymi aplikacjami, olbrzymia liczba starych aplikacji - pocztowych, transferu plików, serwerów WWW, itd. nie potrafi nowych protokołów wykorzystać. Nie oznacza to jednak, że Internet nie może być siecią bezpieczną. Obecnie ciała powołane do rozwijania standardów Internetu pracują nad protokołami bezpieczeństwa. Przedstawiono już propozycje takie jak: SKIA i ESP. SKIA (Secure Key Issuing Authority) jest globalną metodą generowania i dystrybucji kluczy kryptograficznych. ESP to protokół enkapsulacji szyfrowanych danych w datagramach IP.

Podsumowując: moża zaryzykować stwierdzenie, że przez najbliższe parę lat problemy bezpieczeństwa będą rozwiązywane przy pomocy "nakładek" działających na poziomie wyższych warstw sieciowych. Dopiero wprowadzenie protokołów Internetu nowej generacji (IPng) rozwiąże kwestie bezpieczeństwa. Dużą rolę mogą jednak dość szybko odegrać rozwiązania wprowadzane przez organizacje komercyjne, które w przeciwieństwie do np. "Network Working Group" mają dużą siłę przebicia.

Kodowanie z użyciem kluczy prywatnych i publicznych.

Znane są metody szyfrowania danych skutecznie uniemożliwiające niepowołane odszyfrowanie. Metody te posługują się hasłem, w terminologii kryptograficznej - kluczem, do b. wyrafinowanego "przestawiania" bitów kodowanej wiadomości. Złamanie zaszyfrowanych danych jest mozliwe, wymaga jednak tak olbrzymiego nakładu obliczeń, że szyfry te możemy uznać za pewne. Przy kodowaniu danych przesyłanych niestrzeżonym kanałem natrafiamy jednak na problem - jak przesłać sam klucz? Można go oczywiście zakodować, to jednak wymaga nowego klucza, itd - powstaje błędne koło. W latach siedemdziesiątych Martin Hellman z Uniwerystetu Stanforda wraz ze swoimi studentami Whitefieldem Diffie i Ralphem Merkle wynaleźli sposób bezpiecznego ustalania klucza bez potrzeby przesyłania go, lub jakiejkolwiek innej wiadomości, niepewnym kanałem - wymaganie obecności bezpiecznego kanału do wymiany kluczy poddaje w wątpliwość sensowność posługiwania się kanałem publicznym do przesłania właściwej wiadomości. Metoda Diffie-ego - Hellmana polega na wykorzystaniu nie jednego klucza, lecz pary kluczy. Działa ona w sposób następujący:

Nazwijmy komunikujące się strony A i B A i B znajdują się oczywiście w różnych węzłach sieci komunikacyjnej. A i B generują losowo klucze prywatne. Na podstawie swoich kluczy prywatnych obliczają tzw. klucze publiczne. Klucze prywatne, zwane też sekretnymi, nigdy nie są przesyłane w sieci. Klucze publiczne, jak sama nazwa wskazuje, są publicznie dostępne, poznać je (lub podsłuchać) może każdy. Ustalenie wspólnego klucza, tzw. klucza sesji, przebiega następująco: A i B wymieniają swoje klucze publiczne, a następnie poddają je pewnej transformacji matematycznej - tej samej jaka została użyta przy generowaniu kluczy publicznych z kluczy sekretnych. Zastosowana, choć w odwrotnej kolejności w A i B, transformacja daje ten sam wynik. W rezultacie A i B posiadają ten sam klucz konwersacji uzyskany ze swoich kluczy sekretnych (i pewnych ogólnie znanych liczb), jednak klucze sekretne nigdy nie zostały przesłane siecią! Tajemnica tkwi w transformacji stosowanej do obliczenia kluczy publicznych i klucza konwersacji. Transformacja ta jest tzw. funkcją jednokierunkową - na podstawie jej rezultatu nie da się obliczyć argumentu. Nie jest więc możliwe odgadnięcie klucza sekretnego na podstawie klucza publicznego. Zainteresowanych szczegółami odsyłam do ramki 1, gdzie algorytm Diffie-go - Hellmana opisany został bardziej szczegółowo.

Różne warjacje algorytmu Diffie-go - Hellmana korzystające z własności funkcji jednokierunkowych stosowane są obecnie powszechnie w różnych bezpiecznych metodach przesyłania danych w Internecie, m.in.w ONC RPC i PGP. Algorytm ten był też punktem wyjścia dla opracowania bardziej wyrafinowanych metod poufnej komunikacji. Przeważająca większość stosowanych obecnie systemów poufnej komunikacji korzysta z funkcji jednokierunkowych, choć mechanizm generowania kluczy, uzgadniania klucza sesji i mechanizmy weryfikacji są znacznie bardziej zaawansowane z kryptograficznego punktu widzenia od oryginalenego algorytmu Diffie-go - Hellmana.

Podstawowy problem na jaki napotyka korzystając z metody kluczy publicznych/prywatnych polega na zarządzaniu kluczami. Klucze prywatne rzeczywiście muszą być prywatne, tzn. dobrze chronione, klucze publiczne muszą być sprawnie i bezpiecznie wydawane przez sieciowy "autorytet". Tu różne systemy bezpieczeństwa stosują różne rozwiązania.

Szczegóły metody Diffiego - Hellmana


1) A i B generują klucze sekretne: Sa i Sb.

2 A i B obliczają klucze publiczne: Pa i Pb. Klucz publiczny powstaje w wyniku podniesienia znanej (wspólnej dla A i B) liczby alfa do potęgi klucza sekretnego:

Pa = alfa ^ Sa
Pb = alfa ^ Sb

3) Klucze publiczne Pa i Pb są wymieniane za pośrednictwem sieci między A i B.

4) A i B obliczają tajny klucz konwersacji - K - stosując ten sam algorytm co przy obliczeniu klucza publicznego:

Ka = Pb ^ Sa = (alfa ^ Sb ) ^ Sa
Kb = Pa ^ Sb = (alfa ^ Sa ) ^ Sb

ponieważ potęgowanie jest przemienne:

(alfa ^ Sb) ^ Sa = alfa ^ (Sb * Sa) = (alfa ^ Sa) ^ Sb

więc: Ka=Kb A i B mają ten sam klucz sesji.

Klucza sekretnego nie do się obliczyć logarytmując klucz publiczny - pokazana tu operacja potęgowania jest w rzeczywistości potęgowaniem modulo pewnej b. dużej liczby pierwszej. Operacja taka zachowuje cechy "zwykłego" potęgowania - jest przemienna. Jednak w przeciweństwie do "zwykłego" potęgowania jest nieodwracalna, - gdy podstawa i modulo są dużymi liczbami pierwszymi obliczenie logarytmu jest praktycznie niemożliwe.


Rysunek 1: Ustalenie wspólnego klucza przy komunikacji przez niepewny kanał.


Grzegorz Blinowski pracuje w Instytucie Informatyki Politechniki Warszawskiej, jest też właścielem firmy konsultingowej "CC" zajmującej się doradztwem w zakresie architektur klient-serwer, Internetu i bezpieczeństwa systemów komputerowych.

(C) 1996 Grzegorz Blinowski i "CC". Zabrania się kopiowania, rozpowszechniania w jakiejkolwiek postaci, części lub całości tej pracy bez zgody autora. Dozwolone jest sporządzenie jednej kopii dla potrzeb własnych.