Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Imprerium Rzymskie, I w. p.n.e. Państwem włada Juliusz CezarJuliusz CezarJuliusz Cezar. Przypuszcza się, że do komunikowania się ze swoimi przyjaciółmi używał szyfru, który później zyskał miano szyfru Cezara. W jaki sposób szyfrowano informacje w starożytności?

Szyfr przesuwający

Pod pojęciem „szyfr Cezara” kryje się szyfr przesuwający. To niezwykle prosta technika, będąca szczególnym przypadkiem szyfru podstawieniowegoszyfr podstawieniowyszyfru podstawieniowego, w której każdy znak szyfrowanej wiadomości jest zastępowany innym, oddalonym od niego w alfabecie o określoną odległość. W przypadku tego algorytmu ignoruje się wielkość liter.

Posłużymy się przykładem, aby sprawdzić, jak działa taka technika. Załóżmy, że chcemy zorganizować niespodziewane przyjęcie urodzinowe dla naszego kolegi. Musimy wysłać wiadomość do jego znajomych, kiedy wyjdzie z domu, ale nie chcemy, by przypadkiem ją odczytał. Umówiliśmy się, że zakodujemy wiadomość jak Juliusz Cezar, który stosował przesunięcie o trzy pozycje do przodu. W przypadku tego algorytmu jest to klucz szyfru.

Przygotujemy sobie wiadomość do zaszyfrowania, czyli tekst jawny:

Linia 1. Tekst jawny dwukropek MIESZKANIE OTWARTE WRACAMY ZA GODZINĘ.

Polski alfabet liczy 32 litery, zatem przesuwając cały alfabet o trzy pozycje, otrzymamy następujący szyfr:

Linia 1. Alfabet dwukropek AĄBC ĆDEĘ FGHI JKLŁ MNŃO ÓPRS ŚTUW YZŹŻ. Linia 2. Szyfr dwukropek CĆDE ĘFGH IJKL ŁMNŃ OÓPR SŚTU WYZŹ ŻAĄB.

Podmieniając każdą literę tekstu jawnego jej zaszyfrowanym odpowiednikiem, otrzymamy następujący wynik, czyli tekst zaszyfrowany:

Linia 1. Tekst jawny dwukropek. Linia 2. MIESZKANIE OTWARTE WRACAMY ZA GODZINĘ. Linia 4. Tekst zaszyfrowany dwukropek. Linia 5. OLGUAMCÓLG RYŹCTYG ŹTCECOŻ AC JRFALÓH.

Tak zaszyfrowany tekst wygląda jak przypadkowa wiadomość, ale może zawierać istotne informacje – w tym wypadku czas, jaki pozostał do powrotu kolegi do domu. Niestety, ze względu na swoją prostotę szyfr Cezara znajduje zastosowanie jedynie tam, gdzie nie zależy nam na gwarancji bezpieczeństwa komunikacji. Czasem bywa również fragmentem bardziej złożonych algorytmów szyfrujących.

Odszyfrowanie wiadomości to operacja odwrotna do wykonanej na początku. Zatem jeśli wiadomość zaszyfrowano, przesuwając alfabet o trzy pozycje do przodu, to rozszyfrowanie sprowadza się do przesunięcia go o trzy pozycje do tyłu.

Kryptoanaliza

Istnieją dwie techniki łamania szyfru Cezara, zależne od tego, czy jesteśmy pewni, że to właśnie on został użyty. Przyjrzyjmy się najpierw przypadkowi, w którym wiemy, że użyto szyfru Cezara.

Liczbę możliwych przesunięć możemy wyrazić wzorem:

L=n1

gdzie n jest liczbą znaków w alfabecie; w przypadku języka polskiego mamy do dyspozycji 32 litery.

W przypadku alfabetu łacińskiego mowa już tylko o 26 znakach. Jedno przesunięcie możemy pominąć, ponieważ wiadomość znajduje się już w stanie początkowym. Oczywiście moglibyśmy użyć znacznie bardziej skomplikowanego alfabetu i utrudniłoby to ręczne odszyfrowanie wiadomości. Programistycznie jednak przypadek ten sprowadza się do metody siłowej, gdzie w prosty sposób jesteśmy w stanie uzyskać wszystkie możliwe przesunięcia, a wśród nich będzie również to prawidłowe. Podchodząc do problemu matematycznie, moglibyśmy przyjąć, że każda litera alfabetu oznaczona jest liczbą, na przykład A→0, Ą→1, B→2. Szyfrowanie moglibyśmy zatem zapisać w postaci następującego równania:

Si=(xi+t)modn

gdzie:
SIndeks dolny i – numer litery po zaszyfrowaniu,
xIndeks dolny i – przyporządkowany numer litery,
t – przesunięcie,
mod – operator reszty z dzielenia (modulo),
n – liczba znaków w alfabecie.

Używając tego równania, moglibyśmy skonstruować następujący pseudokod:

Linia 1. dla t znak równości 0 przecinek 1 przecinek 2 kropka kropka kropka n minus 1 wykonuj dwukropek. Linia 2. przesuń każdy znak o t pozycji.

A co zrobić, jeśli słowo było wielokrotnie szyfrowane? Przesunięcia się sumują, zatem przesunięcie o 10 do przodu, 3 do tyłu i 5 do przodu w rzeczywistości sprowadza się do jednego przesunięcia o 12 do przodu. Jedynym przypadkiem, w którym rozszyfrowanie może nie być skuteczne, są bardzo krótkie wiadomości. Dla nich może istnieć więcej niż jedno rozwiązanie.

Drugą techniką łamania szyfru jest sytuacja, w której nie mamy pewności, czy użyto szyfru Cezara. Stosuje się wtedy te same metody, co w przypadku innych szyfrów podstawieniowych, np. wykorzystuje się statystykę. Litery w różnych językach pojawiają się z pewnym prawdopodobieństwem. W języku polskim najczęściej występują litery A, I, O oraz E. Zatem w zaszyfrowanej wiadomości można czasem odnaleźć pewną zależność i wywnioskować, że użyto właśnie szyfru Cezara.

Słownik

Juliusz Cezar
Juliusz Cezar

(100 p.n.e. – 44 p.n.e.), rzymski polityk, wódz, dyktator i pisarz

szyfr podstawieniowy
szyfr podstawieniowy

szyfr, w którym każdy znak tekstu jawnego zastępowany jest innym znakiem szyfrogramu