Szyfrowanie na przyszłość
12 Maj 2003
Kryptografia kwantowa, steanografia i teoria ukrytych kanałów to trzy najważniejsze
kierunki rozwoju współczesnej kryptografii.
Tomasz Grabowski
Od początku
swojego istnienia kryptografia była domeną wojskową, a informacje o dorobku w tej dziedzinie ściśle
reglamentowano. To m.in. dlatego właśnie współczesna kryptografia jest, jak na naukę powiązaną
z matematyką teoretyczną i fizyką, całkiem młoda. Pierwsza obszerna praca naukowa na temat metod
szyfrowania to „The Index of Coincidence and Its Applications in Cryptography” Williama F. Friedmana, która
ukazała się w 1918 r. Pozycja ta wciąż uważana jest za jedną z najbardziej znaczących prac
kryptoanalitycznych XX w.
Wyraźny wzrost zainteresowania kryptografią jako dziedziną naukową
przypadł na lata 30. i 40. ubiegłego stulecia. Jedną z najważniejszych publikacji z tego okresu jest „The
Communication Theory of Secrecy Systems” autorstwa Claude’a Shannona. Z dużą dozą prawdopodobieństwa
książka ta została odtajniona przez pomyłkę, była bowiem opisem prac doświadczalnych prowadzonych
przez autora podczas II wojny światowej.
Prawdziwym przełomem w dziedzinie publicznie dostępnej
literatury na temat kryptografii była legendarna już dziś książka Davida Kahna pod znamiennym tytułem
„The Codebreakers”, wydana w 1967 r. Pozwoliła ona dziesiątkom tysięcy ludzi zaznajomić się
z podstawowymi teoriami oraz praktycznymi aspektami kryptografii. Ciekawostką jest fakt, że w owym czasie niektóre
rozdziały tej książki były tajne również w Polsce.
Dziś literatura kryptograficzna
– nawet ta bardzo zaawansowana – jest dostępna praktycznie każdemu. Można odnieść wrażeniem
że w książkach i artykułach specjalistycznych napisano o kryptografii tyle, że nie ma w niej już
nic tajemnego. To jednak tylko wrażenie. Mimo pozornej dostępności, rozwojowi tej dziedziny cały czas
towarzyszy otoczka tajemnicy i niedopowiedzeń, a czasem wręcz utrudnianie niezależnych prac nad nią.
Jednak prace nad kryptografią – i te ukryte i te publiczne – cały czas trwają. Ich efektem
są techniki, algorytmy i koncepcje, które legną zapewne u podstaw „szyfrowania przyszłości”.
Wśród wielu kierunków współczesnych badań nad kryptografią trzy zasługują
na szczególną uwagę: kryptografia kwantowa steganografia oraz tzw. ukryte kanały.
Kwantowe podsłuchy
Wykrycie podsłuchu w sieci telefonicznej czy radiowej jest
praktycznie niemożliwe. Oczywiście, można argumentować, że przy dostatecznie czułym pomiarze
napięcia w sieci telefonicznej lub miejscowych zmian natężenia mocy fal radiowych fakt podsłuchu da się
zidentyfikować. Zakładając jednak, że podsłuch jest prowadzony „profesjonalnie”, jest
to w praktyce niewykonalne.
Świat cząstek elementarnych rządzi się nieco innymi prawami. Kryptografia
kwantowa (ang. quantum cryptography) wykorzystuje fakt, że – zgodnie z zasadami mechaniki kwantowej – nie
można zmierzyć jakiejkolwiek wartości cząstki elementarnej (np. fotonu) bez wywarcia wpływu na jej
stan. Pomiar prędkości fotonu może wpływać na jego rzeczywistą prędkość, zmianę
położenia lub kąta polaryzacji.
Dla bezpieczeństwa informacji oznacza to tyle, że każda
próba podsłuchania bądź przechwycenia transmisji realizowanej przy pomocy cząstek elementarnych
zostanie natychmiast wykryta. Dziedziną, w której kryptografia kwantowa budzi największe nadzieje jest bezpieczna
wymiana kluczy szyfrujących pomiędzy stronami biorącymi udział w komunikacji.
To, co dobrze
wygląda w teorii nie musi jednak koniecznie udać się w praktyce. Najlepszym, bo najprostszym sposobem do przekazywania
zer i jedynek z użyciem fotonów wydaje się nadawanie im różnego kąta polaryzacji. Tu jednak
pojawia się problem: istniejące urządzenia laserowe generują wiązki o stałej polaryzacji. Możliwość
szybkiej zmiany polaryzacji światła jest, przynajmniej na razie, jedną z poważniejszych barier dla rozwoju
kryptografii kwantowej.
Kolejnym źródłem kłopotów jest niedoskonałość
ośrodków, w których przesyłane jest światło. Nawet w najlepszej klasy światłowodach
pewna część fotonów zanika. W prowadzonych obecnie doświadczeniach kodowanie informacji opiera
się, umownie rzecz biorąc, na kilku fotonach o takich samych właściwościach. Nawet jeżeli część
z nich po drodze zaginie, te które dotrą do celu przeniosą właściwą informację. Metoda
ta, choć wydaje się sensowna, stawia jednak pod znakiem zapytania cały sens kodowania kwantowego. Skoro jeden
foton może zniknąć bądź zmienić właściwości, czy nie stanowi to dostatecznej
furtki dla podsłuchu? Do tego dochodzą zakłócenia zewnętrzne. Oczywiście, istnieją metody
ich niwelowania, czyż jednak nie mogą one posłużyć jako narzędzie, dzięki któremu
fakt podsłuchu będzie można ukryć?
Próby z kodowaniem kwantowym prowadzone są od
kilku lat. Eksperymenty z transmisją napowietrzną pokazały, że możliwe jest przysyłanie danych
z kodowaniem kwantowym na dystansie ok. 10 kilometrów. Gęstość powietrza maleje wraz ze wzrostem wysokości,
możliwe więc, że w pewnych warunkach metodę tę można by zastosować do łączności
pomiędzy stacjami naziemnymi a satelitami znajdującymi się na niższych orbitach. To znów jednak
tylko teoria, a nawet gdyby tak było, to wciąż za mało – zarówno z punktu widzenia operatora
jak i użytkownika Internetu.
Powyższe problemy implementacyjne to tylko wierzchołek góry
lodowej całej masy innych problemów, przed którymi stoi kryptografia kwantowa. Można więc przypuszczać,
że jeszcze długo nie wyjdzie ona poza mury laboratoriów, pozostając przede wszystkim dziedziną
ćwiczeń intelektualnych.
Szpiegowskie transmisje
Jednym
z podstawowych mankamentów wszystkich stosowanych dziś metod szyfrowania transmisji jest fakt, że podsłuchujący
jest w stanie wykryć sam fakt przesyłania danych. Cóż bowiem z tego, że szpieg działający
zagranicą zaszyfruje informacje wysyłane do swojego macierzystego kraju, skoro sam fakt uruchamiania szyfrowanych
transmisji może wzbudzić podejrzenia? Poza tym, nawet jeżeli podsłuchujący nie wie, co zawierają
zaszyfrowane pakiety, może próbować je zarejestrować w oryginalnej kolejności i na tej podstawie
próbować odgadnąć klucz.
Ukrywaniem transmisji zajmuje się jedna z dziedzin kryptografii
– steganografia. Jej wykorzystanie polega na ukrywaniu poufnych danych wewnątrz danych jawnych, np. kodowaniu komunikatów
tekstowych jako ciągu pikseli w obrazku JPG (metoda ta była opisywana szerzej w CW XX/2002). Steanografia wymaga
jednak bezpośredniej komunikacji nadawcy z odbiorcą. Wady tej pozbawiona jest technika polegająca na zestawianiu
tzw. ukrytych kanałów (ang. covert channels). Ukryty kanał komunikacyjny polega na komunikowaniu się
za pomocą stanu bądź ułożenia obiektów, które jako takie nie służą do
przesyłania danych. Oto przykład.
Wyobraźmy sobie system komputerowy, którego użytkownicy
nie mogą się ze sobą komunikować. Ukryty kanał powstaje wtedy, jeżeli obie strony potrafią
identycznie interpretować określone ciągi zdarzeń. Może to być np. informacja o ilości
wolnego miejsca na dysku, współdzielenie pamięci, procesora, urządzenia, przerwania itp. Posługując
się uzgodnionym wcześniej kodem, obie strony mogą wysyłać do siebie informacje.
Przykładowo,
proces A, który odbiera wiadomość, może co 100 ms żądać jakiegoś przerwania.
Proces B również może zażądać tego przerwania, jednak każde jego żądanie wydłuży
czas obsługi żądania procesu A. Mierząc czas, jaki upłynął od momentu wysłania żądania,
do momentu jego otrzymania od systemu operacyjnego, proces A jest w stanie stwierdzić, czy proces B zażądał
przerwania w tym samym czasie, czy też nie i każdy z tych dwóch stanów traktować jako 1 lub 0.
Przykłady można oczywiście mnożyć. Dokładny techniczny opis wielu podobnych technik przesyłania
danych znajduje się w opublikowanym w USA przez National Security Agency dokumencie „NCSC-TG-030: A Guide to Understanding
Covert Channel Analysis of Trusted Systems”.
Szczeciński eksperyment
Szyfrowanie oparte na ukrytych kanałach nie jest tylko czystą teorią. Chcąc to udowodnić,
w Akademickim Centrum Informatyki Politechniki Szczecińskiej stworzyliśmy oprogramowanie służące
do zestawiania ukrytego kanału pomiędzy przeglądarką, a serwerem WWW.
Treść tajnej
wiadomości przekazywana jest w następujący sposób: przeglądarka (odbiorca wiadomości) wysyła
do serwera (nadawcy) żądanie o pewną dynamicznie generowaną stronę WWW. Serwer przekazuje wszystkie
dane dotyczące tej strony w postaci wielu różnych plików: tekstu, grafiki itp. Kodowanie ukrytego
komunikatu opiera się na kolejności, rodzaju oraz liczbie przesyłanych plików.
Analiza ruchu
czy nawet treści przesyłanych informacji na nic się w tym wypadku zda. Ten, kto nie zna metody kodowania, nie
jest w stanie odszyfrować ukrytej informacji. Nie wie nawet, że jakakolwiek komunikacja ma miejsce. Ze względu
na sposób kodowania, pojedyncza transmisja umożliwia przesłanie kilkudziesięciu znaków ASCII.
To jednak wystarczy, by przesłać np. nazwę użytkownika i hasło.
***RAMKA***
Kryptografia kwantowa: przesyłanie
danych za pomocą protokołu BB84.
Zgodnie z prawem niepewności Heisenberga, nie istnieje
możliwość dokładnego zmierzenia dwóch wzajemnie zależnych wielkości opisujących
stan cząstki elementarnej, bez zmiany choćby jednej z nich. Zasada ta leży u podstaw kryptografii kwantowej.
Przykładem wielkości, których nie da się jednoznacznie określić w jednym momencie czasu jest
np. prędkość i położenie fotonu. Z punktu widzenia kryptografii wygodniejsze jest posłużenie
się kątami polaryzacji (kierunkami drgania) fotonów. To na nich właśnie opiera się opracowany
w 1984 r. protokół BB84 wykorzystujący prawo niepewności kwantowej do bezpiecznej wymiany kluczy szyfrujących
pomiędzy odległymi od siebie stronami.
Foton może być spolaryzowany prostokątnie –
pionowo lub poziomo – lub też ukośnie – pod kątem 45 lub 135 stopni (patrz Rysunek 1). Płaszczyzny
polaryzacji, zwane też bazami, oznaczamy następująco:
+ - baza prostokątna
x
- baza ukośna
Kierunki polaryzacji fotonów oznaczamy w następujący sposób:
| - kierunek pionowy
– - kierunek poziomy
\ - kierunek ukośny lewy
/
- kierunek ukośny prawy
Jeżeli foton jest spolaryzowany prostokątnie, kąt jego polaryzacji
można poprawnie zmierzyć jedynie przy pomocy odbiornika mierzącego polaryzację prostokątną.
Jeżeli zaś foton jest spolaryzowany ukośnie, kąt jego polaryzacji można poprawnie zmierzyć jedynie
przy pomocy odbiornika ustawionego na odbiór ukośny. Jeżeli więc foton drga w jednym z kierunków
prostokątnych, pomiar polaryzacji przy bazie ukośnej będzie błędny – i odwrotnie.
Algorytm BB84 działa następująco. Alice i Bob, chcąc nawiązać między sobą bezpieczną
komunikację generują określoną liczbę fotonów (w tym wypadku 12) o losowo dobranej polaryzacji
(cztery możliwe kierunki drgania fotonów), a następnie wysyłają je do partnera.
Gdy
Alice wysyła fotony, Bob ustawia odbiornik losowo na odbiór prostokątny lub ukośny i próbuje
odczytać kąt ich polaryzacji. Jeżeli odbiornik Boba jest ustawiony ukośnie i nadlatujący foton również
jest spolaryzowany ukośnie, jego polaryzacja zostanie odczytana prawidłowo. Gdy przy ukośnie ustawionym odbiorniku
foton ma polaryzację pionową, odczyt będzie błędny. Za każdym razem Bob ma wiec 50% szans, że
polaryzacja fotonu zostanie odczytana, niemniej Bob notuje wszystkie kolejno odczytane wartości.
Gdy wszystkie
12 fotonów dotrze na miejsce, Bob informuje Alice, jak ustawiał odbiornik dla każdego kolejnego fotonu, nie
mówiąc jednak, jakie konkretnie wartości odczytał. Na tej podstawie Alice, wiedząc jaka była
polaryzacja wysłanych przez nią fotonów, informuje Boba, że nie pomylił się w odczycie, załóżmy:
pierwszym i czwartym (patrz Tabela 1.).
Równie dobrze jednak Bob mógł źle odczytać
polaryzację za każdym razem, albo też część fotonów w ogóle do niego nie dotarła
(puste pola w tabeli). W każdym razie, wartości, które zostały odczytane prawidłowo mogą,
po powtórzeniu podobnych prób potrzebną ilość razy, utworzyć po każdej ze stron klucz
szyfrujący dla sesji.
Jeżeli strony dojdą do wniosku, że komunikacja szyfrowana ustanowionym
w ten sposób kluczem przestała być bezpieczna (rosnąca liczba fotonów, których polaryzacja
została nieprawidłowo odczytana pomimo zgodności ustawień nadajnika i odbiornika, co może sugerować
podsłuch), procedura generowania klucza jest powtarzana. Dla podwyższenia bezpieczeństwa transmisji, rzeczywisty
klucz może zostać utworzony przez zastosowanie dowolnej funkcji typu hash.
Tabela 1.
Przykładowe wartości polaryzacji przekazywane przez Alice do Boba
Alice wysyła do Boba: |
- |
| | > |
>
| |
| -
| <
| -
| |
| |
| >
| <
|
Bob ustawia odbiornik: |
+
| x | + | x | x | x | +
| x | x | + | + | + |
Bob odczytuje: | - |
<
| - | > | > | >
| | < | < |
| | |
Bob przekazuje Alice: | + | x | + | x
| x | x | | x | x |
| | |
Alice odpowiada: | OK
| | | OK
| | | | |
| | | |
Źródło:
opracowanie własne