Klucz do sieci

Jak wybrać bezpieczny i optymalny system kryptograficzny (cz. III)

Jak wybrać bezpieczny i optymalny system kryptograficzny (cz. III)

Istnieją dwa odrębne typy algorytmów kryptograficznych: symetryczne i asymetryczne1.

Idea działania algorytmów symetrycznych polega na tym, że dwaj komunikujący się użytkownicy mają wspólny tajny klucz, który jest wykorzystywany podczas komunikacji np. do szyfrowania i deszyfrowania wiadomości. Bezpieczeństwo systemu opiera się na jego tajności. Pojawia się problem - w jaki sposób dostarczyć klucz użytkownikowi, z którym chcemy się komunikować? Jest to szczególnie skomplikowane w przypadku, gdy każdy użytkownik systemu chce komunikować się ze wszystkimi pozostałymi użytkownikami. Każda para użytkowników musi posiadać odrębny tajny klucz, więc ich ilość w systemie rośnie wtedy proporcjonalnie do kwadratu liczby użytkowników (ilustracja 1.). Wobec tego w niewielkiej sieci np. 100 użytkowników musimy dostarczyć w bezpieczny sposób ok. 5000 kluczy. A co będzie w przypadku gdy nasza sieć jest większa? Nie możemy zapominać, że jednorazowe rozdanie kluczy nie wystarczy, muszą one być co jakiś czas zmieniane i ponownie dostarczane użytkownikom.

Identyczne problemy pojawiają się gdy chcemy za pomocą algorytmów symetrycznych realizować mechanizmy integralności i uwierzytelnienia źródła danych lub mechanizmy uwierzytelnienia podmiotów.

W systemie asymetrycznym każdy użytkownik ma parę kluczy (klucz prywatny i publiczny). Na podstawie klucza publicznego nie można wyznaczyć prywatnego. Klucz publiczny jest udostępniany innym użytkownikom sieci, natomiast prywatny nie jest znany nikomu poza jego właścicielem. Każdy użytkownik sieci może przesłać wiadomość zaszyfrowaną kluczem publicznym odbiorcy, a jedynie właściciel klucza prywatnego, czyli uprawniony odbiorca, będzie w stanie ją odszyfrować (ilustracja 2.). Liczba kluczy w sieci składającej się ze 100 użytkowników wynosi 200 (znacznie mniej niż w systemie symetrycznym).

Drugim zastosowaniem systemów asymetrycznych jest realizacja podpisów cyfrowych. Jeden użytkownik podpisuje wiadomość, wykorzystując (znany tylko jemu) klucz prywatny, po czym wysyła ją. Odbiorca weryfikuje podpis, dokonując przekształcenia, w którym wykorzystywany jest klucz publiczny nadawcy (ilustracja 3.). Poprawny wynik weryfikacji i założenie o zachowaniu w tajemnicy klucza prywatnego pozwalają wnioskować, że autorem wiadomości była ta osoba, której klucza publicznego użyto podczas weryfikacji.

W jednym i drugim przypadku istotne jest zapewnienie, że użyty klucz publiczny (przy szyfrowaniu lub weryfikacji podpisu cyfrowego) należy do osoby, do której chcemy wysłać poufną wiadomość lub której podpis chcemy zweryfikować. Niespełnienie tego warunku jest równoznaczne z umożliwieniem ataku na ten system, polegającego na podstawieniu przez napastnika własnego klucza publicznego w miejsce klucza innego użytkownika. Pozwoliłoby to napastnikowi czytać poufne wiadomości kierowane do tego użytkownika oraz generować podpisy przyjmowane przez odbiorców za jego podpisy.

Zaletą systemów asymetrycznych jest to, że klucze publiczne przekazywane między użytkownikami nie muszą być tajne. W szczególności użytkownicy mogą je umieszczać w ogólnodostępnych bazach danych. Pobrane z niej klucze mogą posłużyć do nawiązania bezpiecznej łączności, zapewniającej poufność, integralność, uwierzytelnienie źródła i niezaprzeczalność bez konieczności wcześniejszego spotkania lub przesłania kluczy kurierem. Dołączenie nowego użytkownika do systemu polega w zasadzie na opublikowaniu jego klucza publicznego w takiej bazie danych.

Czym to się różni?

Porównując praktyczne właściwości istniejących systemów symetrycznych i asymetrycznych zauważa się, że pierwsze z nich, dzięki szybkości, są doskonałe do szyfrowania dużych porcji danych, natomiast drugie, wolniejsze, lecz dające większą elastyczność i skalowalność, mogą zapewnić efektywną dystrybucję kluczy dla algorytmów symetrycznych (poprzez szyfrowanie krótkich porcji danych stanowiących tzw. klucze sesyjne) oraz implementację podpisów cyfrowych. Toteż najlepszym rozwiązaniem jest tworzenie rozwiązań łączących oba systemy.

W niektórych przypadkach, poza wyborem algorytmu szyfrowania, okaże się konieczny wybór funkcji skrótu.

Funkcja skrótu

Na wstępie trzeba odpowiedzieć na pytanie - co to jest funkcja skrótu? Otóż, jest to funkcja przekształcająca wiadomość o dowolnej długości w ciąg bitów o określonej długości (np. 128 lub 160 bitów), nazywany skrótem, mająca następujące, dość specyficzne właściwości:

* dowolna zmiana w treści wiadomości powoduje nieprzewidywalną zmianę w skrócie

* na podstawie skrótu nie jest możliwe odtworzenie treści wiadomości

* jest ona odporna na kolizje, tzn. nie ma możliwości znalezienia dwóch wiadomości dających ten sam skrót.

Dzięki tym właściwościom uważa się, że skrót policzony za pomocą takiej funkcji może jednoznacznie reprezentować wiadomość. Funkcje skrótu wykorzystywane są przez niektóre mechanizmy podpisów cyfrowych. Po stronie nadawczej aplikacja użytkownika oblicza skrót z wiadomości, następnie podpisuje go kluczem prywatnym nadawcy i przesyła razem z wiadomością (ilustracja 3.). Podczas weryfikacji podpisu aplikacja odbiorcy rozdziela otrzymaną przesyłkę na wiadomość i podpisany skrót. Podpisany skrót jest przekształcany kluczem publicznym nadawcy i porównywany z niezależnie obliczonym skrótem z otrzymanej wiadomości. Jeśli są zgodne, aplikacja uznaje podpis za autentyczny, w przeciwnym razie go odrzuca.

Nasuwa się pytanie, po co używać funkcji skrótu, czy nie lepiej podpisać bezpośrednio wiadomość? Głównym argumentem za stosowaniem funkcji skrótu jest oszczędność czasu, ponieważ szybciej jest policzyć skrót i podpisać go niż podpisać całą wiadomość.

Funkcje skrótu coraz częściej są również używane jako składowe mechanizmów uwierzytelnienia źródła i integralności danych. Przykładem takiego ich zastosowania jest internetowa norma RFC 1826, definiująca taki mechanizm dla pakietów protokołu IP.

Istnieje wiele funkcji skrótu, wśród których można wyróżnić kilka klas: funkcje projektowane od początku z myślą o liczeniu skrótów, wykorzystujące symetryczne algorytmy szyfrowania i stosujące warianty asymetrycznych funkcji szyfrowania. Obecnie w praktyce najczęściej stosuje się funkcje z pierwszej klasy. Za bezpieczne uznaje się wśród nich funkcje RIPEMD-160 i SHA-1 (rządowa norma w USA), pojawiły się natomiast głosy krytyczne dotyczące funkcji MD2 i MD5 (często wykorzystywanych w Internecie). Do Polskich Norm wprowadzona natomiast zostanie funkcja należąca do klasy drugiej (mająca, niestety, cechę dość niskiej szybkości działania i wymagająca użycia algorytmu szyfrowania, który nie jest w polskiej normie wyspecyfikowany).

Ekonomia w fazie wdrażania systemu i jego eksploatacji

Kończąc fazę planowania systemu zabezpieczeń opartego na kryptografii, warto zainteresować się kosztem, związanym z jego wprowadzeniem. Oczywiście również dotychczas omówione działania wymagają środków finansowych - w fazie planowania z kosztami wiąże się przeprowadzenie analizy ryzyka i wybór odpowiednich usług. We wstępnej fazie wdrażania systemu pojawią się wydatki związane z zakupem urządzeń lub oprogramowania, opracowaniem i wdrożeniem polityki bezpieczeństwa, szkoleniem personelu i administratorów, a także może okazać się konieczne zatrudnienie dodatkowych pracowników zajmujących się utrzymywaniem systemu zabezpieczeń.

Podczas eksploatacji dodatkowe koszty powoduje:

* konieczność przesyłania dodatkowych informacji wraz z wiadomością w komunikacji między użytkownikami, np. podpis cyfrowy jest doklejany do wiadomości i wraz z nią przesyłany - ponoszona jest więc dodatkowa opłata przesłania podpisu

* spowolnienie przetwarzania wynikające z zastosowania mechanizmów zabezpieczeń (np. szyfrowania)

* koszt dystrybucji kluczy związany m.in. z koniecznością informowania użytkowników o sytuacjach awaryjnych, np. unieważnienie klucza, czy o sytuacjach wynikających z konieczności ich współpracy z systemem, np. konieczność zgłoszenia się po odbiór kluczy do urzędu

* koszt zarządzania i okresowego audytu.

Faza zakupu. Bezpieczeństwo - rzecz względna

Mając sprecyzowany pogląd na usługi, które chcemy mieć zapewnione, i mechanizmy, mające je realizować, możemy przystąpić do fazy zakupów. Na co należy zwracać uwagę, kupując sprzęt lub oprogramowanie kryptograficzne? Występują tu dwa główne zagadnienia: wybór algorytmu i implementacji.

Jak wybrać algorytm? Czasem może on być narzucony np. przez środowisko lub system, do którego chcemy się dołączyć (np. w przypadku banków standardami de facto są algorytmy RSA i DES lub tzw. potrójny DES). Jeżeli tak nie jest, to może istnieją algorytmy zalecane do stosowania w Polsce ze względu na ich występowanie w polskich lub międzynarodowych normach? Niestety, nie. Połączony komitet techniczny ISO/IEC odpowiedzialny za międzynarodowe normy z zakresu technik zabezpieczeń, którego opracowania są tłumaczone i wprowadzane do zbioru polskich norm, przyjął politykę nie normalizowania tych algorytmów kryptograficznych, które mogą być wykorzystane w mechanizmach realizujących usługę poufności. Dotyczy to wszystkich szyfrów symetrycznych oraz systemów asymetrycznych (jak RSA), które mogą być użyte do szyfrowania. ISO/IEC prowadzi jedynie rejestr takich algorytmów bez podejmowania prób oceny, czy algorytmy w tym rejestrze są bezpieczne. Każdy może zgłosić dowolny algorytm do tego rejestru po wniesieniu stosownej opłaty. Z tego względu powoływanie się na wpisanie algorytmu do tego rejestru (i tym samym na rzekome poparcie ISO/IEC dla tego algorytmu) nie ma znaczenia z punktu widzenia bezpieczeństwa.

Przy wyborze algorytmu musimy więc oprzeć się na własnej (producenta lub konsultanta) wiedzy o tym, które szyfry są uważane za bezpieczne. Trzeba przy tym pamiętać, iż nie istnieją w praktyce cywilnej kryptografii szyfry doskonale bezpieczne2. Stosowane szyfry są tylko obliczeniowo bezpieczne (computationally secure). Oznacza to, iż najlepszy znany w danym momencie atak na szyfr wymaga zbyt wielu obliczeń, aby był wykonalny lub opłacalny dla napastnika. Prosimy zwrócić baczną uwagę na dwa ważne wnioski z ostatniego zdania. Po pierwsze, bezpieczeństwo szyfru może być oceniane tylko wobec ataków znanych oceniającemu - nie można wykluczyć, że lepszy atak jest znany innym instytucjom lub osobom. Po drugie - ocena bezpieczeństwa może się zmieniać z czasem, zarówno ze względu na postępy technologiczne, które zmniejszają koszty lub czas obliczeń potrzebnych do ataku, jak również z uwagi na nowe rozwiązania.

Specyfika kryptograficznych systemów ochrony danych wymaga więc stałego kontaktu klienta z producentem urządzeń lub oprogramowania, ponieważ mogą zaistnieć takie właśnie sytuacje jak opublikowanie nowego, skutecznego ataku na używany szyfr, wymagające natychmiastowej wymiany lub modyfikacji systemu. Warto zastrzec sobie możliwość takiej współpracy w umowie z producentem lub jego dealerem.

Często stosowanym miernikiem bezpieczeństwa jest długość klucza. Przy wyborze systemu na podstawie długości kluczy nie można porównywać systemów asymetrycznych z symetrycznymi. W systemach symetrycznych zakłada się, że najlepszy atak wymaga sprawdzenia wszystkich kluczy. W systemach asymetrycznych jest to z założenia atak niewykonalny (jak sprawdzić 21024 możliwości). Istnieją jednak ataki "na skróty" (tzw. shortcut attacks) umożliwiające złamanie tych systemów w sposób szybszy niż atak sprawdzający wszystkie klucze. Stąd wynika konieczność wprowadzenia kluczy znacznie dłuższych niż w systemach symetrycznych.

----------------------------------

1 systemy asymetryczne okreŚla się też często mianem systemów publicznego klucza

2 istnieje jeden szyfr doskonały, szyfr Vernama (nazywany też szyfrem z jednorazowym kluczem), którego złamanie jest niemożliwe; niestety jest on niepraktyczny w cywilnych zastosowaniach