Mała Delta
Jak znaleźć klucz?
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ć?
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 oznacza resztę z dzielenia przez Na przykład a W ten sposób możemy łatwo przerobić dowolną liczbę całkowitą na liczbę z zakresu od 0 do Niech teraz oznacza pewną dużą liczbę, a będzie pewną liczbą dodatnią mniejszą niż 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ę z zakresu od 0 do i nikomu o niej nie mówi; tak samo osoba B wybiera liczbę Następnym krokiem jest wykonanie potęgowania. Osoba A oblicza wartość
i ją udostępnia. Analogicznie, osoba B oblicza i udostępnia
Kolejne obliczenie pozwala już otrzymać klucz. Osoba A bierze wartość obliczoną przez osobę B, podnosi do potęgi i wykonuje na wyniku operację :
(Sprawdź dokładnie, Czytelniku, dlaczego końcowa równość jest prawdziwa.) Osoba B oblicza
czyli obie osoby otrzymały tę samą wartość 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 i Żeby odtworzyć klucz, potrzebna jest znajomość liczby lub – 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 i wystarcza do wyznaczenia liczby Okazuje się, że ogólnie nie wystarcza, czyli można dobrać liczby i 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 z liczb i nazywa się problemem logarytmu dyskretnego. Szukając wartości próbujemy wykonać operację odwrotną do potęgowania modulo i stąd logarytm w nazwie. Potęgowanie modulo 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.