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ć:
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.
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.
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.
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.
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).
Ż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ść.
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).
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.
Z kluczem tajnym (symetrycznym) - szybsze
(C) Sun Microsystems
Z kluczem prywatnym i publicznym - wolniejsze
(C) Sun Microsystems
Podpisywanie elektroniczne dokumentów
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ść)
Ostatecznie definiujemy:
Podpisana wiadomość = Wiadomość + Odszyfruj ( Hasz (Wiadomość) )
formuła zapewnia:
(C) Sun Microsystems
Teraz proces sprawdzania podpisu przebiega następująco:
Dodatkowy problem: Oficjalne rejestrowanie kluczy
BIBLIOGRAFIA
Sun - technologie zapeniające bezpieczeństwo