Przeskocz do treści

Delta mi!

Mała Delta

Jak znaleźć klucz?

Maria Donten-Bury

o artykule ...

  • Publikacja w Delcie: listopad 2011
  • Publikacja elektroniczna: 01-11-2011

Każdy od czasu do czasu potrzebuje metody przekazania komuś pewnych wiadomości tak, żeby niepowołane osoby nie miały szans na ich przechwycenie. Począwszy od zabaw z kolegami na podwórku, a skończywszy na operacjach bankowych, wojskowych czy wykorzystujących dane osobowe – bez szyfrów po prostu nie da się żyć. Do zaszyfrowania danych zwykle potrzebny jest klucz – pewne słowo czy liczba, które najpierw kierują procesem tworzenia szyfru, a później pozwalają odbiorcy wiadomości ją odkodować. Osoby, które chcą porozumiewać się za pomocą szyfru, muszą najpierw uzgodnić klucz między sobą. I tu pojawia się problem: jak ustalić klucz, tak żeby nikt oprócz nas nie mógł go poznać?

obrazek

Można się w tym celu spotkać, ale każdy, kto oglądał filmy szpiegowskie, wie, jak łatwo jest podsłuchać rozmowę. Wysłanie klucza pocztą, wszystko jedno, czy papierową, czy elektroniczną, to pomysł tak samo skazany na porażkę. A gdyby wysłać klucz w formie zaszyfrowanej? Trzeba by najpierw ustalić klucz do szyfru, którym zaszyfrujemy klucz do tego szyfru, którego chcemy używać w korespondencji, czyli wróciliśmy do początkowego problemu... Nie załamujmy się jednak: banki mają się całkiem dobrze (co wyraźnie widać z szyldów lokali użytkowych), tajemnice wojskowe raczej też, i chociaż parę miesięcy temu pewna firma miała duże kłopoty z wyciekiem danych użytkowników konsoli do gier, to jednak ogólny obraz sytuacji wskazuje na to, że istnieją dobre metody zabezpieczania informacji.

Zobaczmy więc, jak ustalić klucz do szyfru w taki sposób, żeby szanse na poznanie go przez osoby niepowołane były bardzo, bardzo małe. Zacznijmy od tego, że ustalanie klucza będzie się odbywać publicznie – osoby A i B, które ten klucz ustalają, wszystkie informacje, które muszą wymienić, mogą ogłosić wszem i wobec. To oznacza, że przy tej metodzie problem podsłuchu nie istnieje. Metoda jest tak opracowana, żeby osoba, która usłyszy wszystkie informacje wymieniane przez osoby A i B, nie mogła odgadnąć ustalonego klucza. Powiesz, Czytelniku, że to niemożliwe? Sprawdźmy!

Będziemy potrzebowali operacji modulo, która daje resztę z dzielenia jednej liczby przez drugą. Zapis math  oznacza resztę z dzielenia math  przez math Na przykład math a  math W ten sposób możemy łatwo przerobić dowolną liczbę całkowitą na liczbę z zakresu od 0 do  math Niech teraz math oznacza pewną dużą liczbę, a math będzie pewną liczbą dodatnią mniejszą niż math  Osoby A i B uzgadniają tę parę liczb, nie ukrywając ich przed światem. Następnie wybierają jeszcze dwie liczby, ale tym razem tajne. Osoba A wymyśla liczbę math z zakresu od 0 do  math i nikomu o niej nie mówi; tak samo osoba B wybiera liczbę math Następnym krokiem jest wykonanie potęgowania. Osoba A oblicza wartość

display-math

i ją udostępnia. Analogicznie, osoba B oblicza i udostępnia

display-math

Kolejne obliczenie pozwala już otrzymać klucz. Osoba A bierze wartość math obliczoną przez osobę B, podnosi do potęgi math i wykonuje na wyniku operację  math:

display-math

(Sprawdź dokładnie, Czytelniku, dlaczego końcowa równość jest prawdziwa.) Osoba B oblicza

display-math

czyli obie osoby otrzymały tę samą wartość math która będzie ich tajnym kluczem do szyfru. Ta procedura uzgadniania klucza to protokół Diffiego–Hellmana.

A co wie osoba z zewnątrz, która chciałaby odgadnąć klucz i złamać szyfr? Otóż, wbrew pozorom, bardzo niewiele. Publicznie zostały podane wartości math  math   math  i  math  Żeby odtworzyć klucz, potrzebna jest znajomość liczby math lub math – mając jedną z tych liczb, osoba podsłuchująca może przeprowadzić takie obliczenie, jak osoby A i B pod koniec ustaleń. Problem sprowadza się więc do pytania, czy znajomość liczb math   math  i  math  wystarcza do wyznaczenia liczby math Okazuje się, że ogólnie nie wystarcza, czyli można dobrać liczby math   math   math  i math  w taki sposób, żeby odgadnięcie klucza przez osobę z zewnątrz było praktycznie niemożliwe przy naszym obecnym stanie wiedzy. Oczywiście, może się zdarzyć, że za kilka lat powstaną algorytmy i programy radzące sobie świetnie z tym problemem, ale na razie opisane metody można z powodzeniem stosować.

Problem odtworzenia liczby math z liczb math  math  i  math nazywa się problemem logarytmu dyskretnego. Szukając wartości math próbujemy wykonać operację odwrotną do potęgowania modulo math i stąd logarytm w nazwie. Potęgowanie modulo math jest tak zwaną funkcją jednokierunkową – samą potęgę można obliczyć łatwo i szybko, ale odwrócenie tej operacji jest dla nas (na razie) bardzo trudnym problemem obliczeniowym. Tak trudnym, że dla odpowiedniego doboru danych (potrzebne są naprawdę duże, kilkusetcyfrowe liczby) uznaje się go właściwie za niewykonalny i jego trudności powierza się ważne tajemnice.