Grzegorz Andruszkiewicz
Niebezpieczeństwa wynikające z przesyłania poufnych danych przez sieć:

Wraz z rozwojem technologii telekomunikacyjnych i komputerowych zauważalna jest tendencja do wzrostu znaczenia i wykorzystania sieci rozległych/publicznych. Niewątpliwą tego zaletą dla użtkownika jest łatwa możliwość skorzystania z wielu serwisów informacyjnych i skontaktowania się z wieloma osobami.

Niestety duże rozmiary sieci rozległych nie pozwalają na implementację bezpośrednich połączeń wszystkich komputerów. A wykorzystanie serwerów pośredniczących w transmisji stwarza niebezpieczeństwa ingerencji w przesyłane dane. Można wyróżnić:

  • podsłuchiwanie - ktoś może przeczytać naszą wiadomość, nie modyfikując jej i bez naszej wiedzy
  • modyfikacja - wiadomość może zostać zmieniona bez naszej wiedzy (nawet gdy modyfikujący nie rozumie wiadomości)
  • podszywanie się - jakiś serwer/ program/ osoba może podawać się za kogoś innego niż jest w rzeczywistości.

    Wymienione niebezpieczeństwa mogą wydawać się czytelnikowi oczywiste. Chciałbym jednak żeby czytelnik, analizując konkretne rozwiązania pamiętał, że zapewnienie bezpieczeństwa oznacza właśnie zabezpieczenie się przed tymi ewentualnościami.




    Mechanizmy zapewniające bezpieczne przesyłanie informacji:

  • szyfrowanie
  • wykrywanie modyfikacji - np. sumy kontrolne
  • uwierzytelnianie - (ang. authentication) "wylegitymowanie się" docelowemu serwerowi
  • weryfikowalność wysłania - np. podpis elektroniczny

    Proszę zauważyć że powyższe mechanizmy zapewniają ochronę przed niebezpieczeństwami omówionymi wcześniej.

    W dalszych częściach prezentacji omówimy konkretne implementacje tych mechanizmów i rozwiązania wyższego poziomu, oferujące użytkownikowi prosty interfejs, a jednocześnie zapewniające bezpieczny transfer danych.






    Algorytmy szyfrujące

    Dziś technologia szyfrowania opiera się powszechnie znanych algorytmach, których zasady działania opisane są w tzw. plikach RFC ogólnie dostępnych w internecie. Algorytmy te opierają się na tzw. kluczu - dużej liczbie specyficznej dla konkretnej transakcji / sesji. Do zaszyfrowania/odszyfrowania wiadomości niezbędna jest znajomość właściwego klucza. Mimo znajomości samego algorytmu szyfrującego zaszyfrowanie/odszyfrowanie bez klucza jest niemożliwe lub na tyle pracochłonne, że dzisiejsze komputery nie radzą sobie z tym w rozsądnym czasie.

    Bezpieczeństwo (siła) algorytmu szyfrującego zależy od długości klucza - czyli długosci zapisu liczby będącej kluczem w systemie dwójkowym. Różna długość klucza oferuje różne poziomy bezpieczeństwa w różnych algorytmach - związane jest to najczęściej z koniecznościa wykorzystania specyficznych kluczy w niektórych algorytmach - np. mających odp. cechy podzielności (RSA), w innych natomiast można wykorzystać dowolny klucz odp. długości (DES). Dlatego też w RSA trzeba wykorzystywać dłuższe klucze niż w DES.

    Z kluczem tajnym (symetrycznym) - szybsze

    Najczęściej używanym algorytmem tej klasy jest DES. Problemem wynikającym z istnienia tylko jednego klucza jest konieczność przekazania go drugiej stronie (rozwiązanie: Kerberos). Niewątpliwą zaletą, sprawiającą , że te algorytmy nadal są wykorzystywane, jest duża szybkość działania.



    (C) Sun Microsystems

    Z kluczem prywatnym i publicznym - wolniejsze

    Najczęściej używanym algorytmem tej klasy jest RSA. Do transakcji używana jest para kluczy - jeden służy wyłącznie do szyfrowania (klucz publiczny), a drugi do deszyfrowania (klucz prywatny). Ponieważ zależy nam na tym, aby osoba trzecia nie mogła deszyfrować naszych wiadomości, a nie przeszkadza nam gdy coś zaszyfruje - klucz publiczny możemy spokojnie rozesłać całemu światu nie narażając sie na żadne niebezpieczeństwo.

    Niestety algorytmy z kluczem prywatnym i publicznym są dużo wolniejsze od tych z kluczem symetrycznym. Dlatego też często korzysta się z nich tylko do uwierzytelnienia i przesłania klucza symetrycznego, a dalej szyfruje się za pomoca algorytmu z kluczem symetrycznym (zobacz: SLL).



    (C) Sun Microsystems




    Podpisywanie elektroniczne dokumentów

    Żeby wykorzystać sieć do celów komercyjnych (np. handel, itp.) niezbędne jest wprowadzenie mechanizmów umożliwiających zweryfikowanie, że dana osoba wysłała wiadomość o pewnej treści. Nazywamy to podpisem elektronicznym - zauważając analogię do zwykłego podpisu. W niektórych krajach podpis elektroniczny jest już prawnie równoważny podpisowi na papierze.

    Będziemy korzystać z faktu, że najczęściej używany algorytm szyfrowania z kluczem publicznym (RSA) jest "symetryczny" - Zaszyfruj(Odszyfruj(Wiadomość)) = Wiadomość.

    Tak więc dzięki temu, że tylko właściciel posiada swój klucz prywatny, a klucz publiczny jest ogólnie dostępny, możemy zdefiniować:

    Podpisana wiadomość = Odszyfruj (Wiadomość)

    Teraz, gdy ktoś zaszyfruje podpisaną wiadomość naszym kluczem publicznym, dostanie w wyniku niezaszyfrowaną wiadomość. Wie, że ta wiadomosć została przez nas podpisana.

    Rozwiązanie to nie zapewnia jednak, że nikt nie zmodyfikuje podpisanej przez nas wiadomości (np. losowo wykonując próby).

    Dlatego skorzystamy przy okazji z jakiegoś jednokierunkowego algorytmu haszującego (przyporządkowującego każdej wiadomości (dowolnej długości)) stałej długości kod. Przy zmianie wiadomości z bardzo dużym prawdopodobieństwem zmieni się również ten kod. Dodatkowo na podstawie kodu nie możemy wywnioskować nic przydatnego o wiadomości (dlatego algorytm nazywamy jednokierunkowym).


    Ostatecznie definiujemy:
    Podpisana wiadomość = Wiadomość + Odszyfruj ( Hasz (Wiadomość) )

    formuła zapewnia:
  • Szybkość działania - szyfrujemy małe porcje danych
  • Łatwy dostęp do treści dokumentu
  • Bezpieczeństwo, że nikt nie zmieni dokumentu
  • Mocny dowód, że dokument był przez daną osobę rzeczywiście podpisany
  • Jeżeli treść dokumentu jest tajna - możemy ją zaszyfrować jakimś innym algorytmem

    (C) Sun Microsystems

    Teraz proces sprawdzania podpisu przebiega następująco:
  • Zaszyfrowujemy część wiadomości będącą podpisem - otrzymujemy Hasz(Wiadomość)
  • Korzystając z tego samego algorytmu haszującego sami liczymy Hasz(Wiadomość) biorąc treść wiadomości
  • Porównujemy wartości uzyskane w poprzednich punktach - gdy są równe to rzeczywiście (w praktyce z bardzo dużym prawdopodobieństwem) wiadomość została poprawnie podpisana

    Dodatkowy problem: Oficjalne rejestrowanie kluczy

    Przy korzystaniu z podpisów elektronicznych napotykamy dodatkowy problem - osoba otrzymująca naszą wiadomość musi być pewna, że jest w posiadaniu naszego klucza publicznego (a nie np. jakiegoś "podstawionego"). Dlatego też coraz częściej powstają ośrodki (mające różny status prawny) zajmujące się składowaniem kluczy i identyfikacją osób. W takim ośrodku rejestrujemy siebie i swój klucz publiczny (często wręcz osobiście, potwierdzając swoją tożsamość dowodem osobistym). Potem przy sprawdzaniu czyjegoś podpisu można sprawdzić czy jesteśmy w posiadaniu właściwego klucza publicznego.



    BIBLIOGRAFIA

    Sun - technologie zapeniające bezpieczeństwo