13.1. Kodowanie danych i arytmetyka dużych liczb 295
dencji, jednak w praktyce najczęstsze zastosowanie znajduje we wszelkiego rodzaju transakcjach gospodarczych ze względu na dobro kontrahentów.
Kodowanie pasjonowało ludzi od wieków i czyniono wielkie starania, aby wymyślać takie algorytmy kodujące, które byłyby trudne do złamania w rozsądnym czasie. Proces kodowania i dekodowania można przedstawić w postaci prostego schematu, przedstawionego na rysunku 13-1.
Rys. 13 - /.
Algorytmiczny
system
kodujący.
i. SAOAWC.I
li: ODBIORCA
wiadomość
ść W |-*jkoduj( W, K)
rozkoduj! M. K)
-*ju’iadnmn!ć W
Pewna wiadomość IF jest szyfrowana przez nadawcę A przy pomocy procedury szyfrującej koduj, która przyjmuje dwa parametry: tekst do zaszyfrowania i pewien dodatkowy parametr K. zwany kluczem. Klucz K pełni rolę elementu komplikującego powszechnie znany algorytm kodowania i ma na celu utrudnienie osobom niepowołanym odczytanie wiadomości. Przykładem najprostszego kodu i klucza jest przypisanie literze alfabetu numeru (załóżmy, że nasz alfabet składa się z 39 znaków). Jest to zwykłe kodowanie tabelkowe, bardzo łatwe zresztą do złamania przez językoznawców uzbrojonych w komputerowe „liczydło” i swoją wiedzę. Jak skomplikować ten powszechnie znany algorytm kodowania? Można na przykład dodać do przesyłanej liczby kodowej pewną wartość K. co spowoduje, że niemożliwe stanie się odczytanie wiadomości poprzez zwykłe porównywanie pozycji tabelki kodującej. Odbiorca B, zanim rozpocznie dekodowanie powinien odjąć od otrzymanych liczb liczbę K, tak aby otrzymać kanoniczny kod tabelkowy1. Uważny Czytelnik dostrzeże zasadniczą niedogodność takiego systemu kodującego przyglądając się rysunkowi 13-1: nadawca i odbiorca muszą znać wartość klucza11 Przesyłanie konwencjonalnymi metodami klucza, np. poprzez kuriera, jest bardzo niepraktyczne i na dodatek naraża na niebezpieczeństwo zarówno poufność danych, jak i... samego kuriera!
Jak rozwiązać problem transmisji klucza w świecie, gdzie ważne jest, aby wiadomość dotarła w ułamku sekundy do odbiorcy, bez obarczania go dodatkową troską o wiarygodność otrzymanego klucza K? Ponieważ nie znaleziono sensownego rozwiązania tego problemu, z wielką ulgą powitano wynalezienie w 1976 r.. metody kodowania z kluczem publicznym, która eliminowała całkowicie dystrybucję klucza. Wynalazcami metody byli W. Diffie i M. Hellman. jed-
Zarówno przykład kodu, jak i klucza są najprostszymi z możliwych i 2adna armia na świecie nie zakodowałaby przy ich pomocy nawet jadłospisu dziennego, aby nie ośmieszyć się przed przeciwnikiem!