Szyfrowanie danych

959811_88673421Globalizacja Internetu z jaką obecnie mamy do czynienia pociąga za sobą konieczność zapewnienia odpowiedniego poziomu świadczonych w nim usług. Internet przestaje być siecią 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ć.

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 poufnych 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ług 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.” Podobnie jak przy usłudze odzyskiwanie danych, ochrona zasobów wymaga szczególnego wysiłku.

Co chronić i w jaki sposób?

Jakich cech oczekujemy od bezpiecznych systemów internetowych? Skupmy się raczej 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 wprowadzają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 ochrony danych

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łyby 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ą. Pakiet oprogramowania PGP pozwala na zachowanie poufności oraz weryfikację tożsamości w wiadomościach wysyłanych pocztą elektroniczną. 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. Podobnie, jak przy usłudze odzyskiwanie danych, nie można zastosować uniwersalnych narzędzi. 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 internetowej sieci. 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żna 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 danych 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 bardziej wyrafinowanego „przestawiania” bitów kodowanej wiadomości. Złamanie zaszyfrowanych danych jest możliwe, 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 M. Hellman z Uniwersytetu 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. Różne wariacje 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 oryginalnego 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.