Przejdź do treści

Od szyfru Cezara do współczesnego szyfrowania

AES, dzisiejszy standard szyfrowania, nie wyrósł z szyfru Cezara. Słabości rzymskiego szyfru to jednak te same problemy, z którymi mierzył się każdy późniejszy.

reklama

Czy współczesne szyfrowanie wywodzi się z szyfru Cezara?

Bezpośrednio nie. AES (Advanced Encryption Standard) to szyfr, który chroni dziś między innymi połączenia HTTPS i sieci Wi-Fi. Nikt nie stworzył go, ulepszając przesuwanie liter, i nie ma drzewa genealogicznego prowadzącego z Rzymu do Twojej przeglądarki. Rola szyfru Cezara jest skromniejsza i łatwiejsza do obrony. To wczesny, dobrze opisany przykład idei, które przetrwały, a jego słabości to te same problemy, z którymi musiał się zmierzyć każdy późniejszy szyfr.

Ta strona idzie tropem tych problemów. Część rzymską opisuje historia szyfru Cezara.

Co przetrwało: znana metoda i tajny klucz

Szyfr Cezara dzieli szyfrowanie na dwie części. Metoda to „przesuń każdą literę”, a kluczem jest wielkość przesunięcia. Pierwszą część może znać każdy, byle druga pozostała tajna.

W 1883 roku Auguste Kerckhoffs zapisał to jako zasadę projektowania szyfrów wojskowych: system ma pozostać bezpieczny nawet wtedy, gdy wpadnie w ręce wroga. Claude Shannon ujął to później krócej: „wróg zna system”. Kerckhoffs myślał o szyfrach wojskowych swoich czasów, a szyfr Cezara i tak tego testu nie zdaje, bo ma za mało kluczy. Sam podział na metodę i klucz widać w nim jednak wyraźnie.

Jest to też szyfr symetryczny: ten sam klucz szyfruje i odszyfrowuje. Tak samo działa AES.

Co go pokonało: dwie słabości

Pierwsza słabość to liczba kluczy. Przy 25 możliwych przesunięciach atak brute force zajmuje ręcznie kilka minut.

Druga przetrwała znacznie dłużej. Przesunięcie zachowuje wzorce języka: najczęstsza litera wiadomości staje się najczęstszą literą szyfrogramu. Wykorzystuje to analiza częstotliwości, opisana przez Al-Kindiego w IX wieku. Tę samą słabość widać też od innej strony: każda litera wyniku zależy od jednej litery wiadomości, więc nic się nie miesza.

Sama większa liczba kluczy tego nie naprawi. Losowy alfabet podstawieniowy ma około 4 × 10²⁶ kluczy, a i tak przegrywa z liczeniem liter.

Pierwsza odpowiedź: stale zmieniać przesunięcie

Skoro jedno przesunięcie zdradza wzorce, można użyć wielu. W 1467 roku Leon Battista Alberti opisał tarczę szyfrującą ze zmieniającym się alfabetem. W 1553 roku Giovan Battista Bellaso opublikował metodę znaną dziś jako szyfr Vigenère’a, w której każda litera słowa kluczowego wybiera własne przesunięcie Cezara. Spłaszcza to statystykę liter, ale słowo kluczowe się powtarza, a w 1863 roku Friedrich Kasiski ogłosił ogólny sposób łamania.

Ta myśl ma swój logiczny koniec. Dla każdej litery nowe, losowe przesunięcie, klucz długi jak wiadomość i nigdy nie użyty ponownie. To szyfr z kluczem jednorazowym, opisany przez Franka Millera w 1882 roku i wdrożony w dalekopisach przez Gilberta Vernama od 1917 roku. Shannon dowiódł, że jest nie do złamania. Jest też niewygodny, bo obie strony potrzebują ogromnego tajnego klucza, dostarczonego wcześniej bezpieczną drogą.

Druga odpowiedź: wymieszać wiadomość

Praca Shannona z 1949 roku o systemach utajniania nazwała dwie cechy mocnego szyfru. Konfuzja ukrywa, jak wynik zależy od klucza. Dyfuzja rozprasza wzorce wiadomości po całym wyniku, tak że mała zmiana na wejściu zmienia dużą część wyjścia. Dyfuzję najłatwiej zobaczyć na przykładzie: bierzemy wiadomość, zmieniamy w niej jedną literę i szyfrujemy obie wersje.

Szyfr Cezara, przesunięcie 3

ATAK W NOCY DWDN Z QRFB

BTAK W NOCY EWDN Z QRFB

AES-128

ATAK W NOCY 63CE61C59ED4AFAC6A81BDAE36587AD9

BTAK W NOCY E8B1F5FBF47765DCA202B2C5EEE8FD14

Wynik AES jest zapisany szesnastkowo: każda para znaków to jeden bajt. W przykładzie użyto AES-128 w trybie CBC z przykładowym kluczem ze standardu FIPS 197 i zerową wartością początkową. Ten klucz jest publiczny, więc niczego nie chroni.

W szyfrze Cezara zmienia się tylko pierwsza litera wyniku, więc porównanie od razu zdradza, gdzie wiadomości się różnią. W AES zmienia się tu każdy bajt wyniku i nic nie wskazuje, która litera była inna.

Wokół tych cech powstały szyfry blokowe, które szyfrują dane porcjami o stałej długości. DES, opublikowany jako standard USA w 1977 roku, szyfrował bloki 64-bitowe kluczem 56-bitowym. Jego konstrukcja okazała się trwalsza niż długość klucza: w 1998 roku maszyna zbudowana przez Electronic Frontier Foundation znalazła klucz DES w 56 godzin. To znów pierwsza słabość szyfru Cezara, tylko w dużo większej skali.

Co łączy AES z szyfrem Cezara

AES zaprojektowali Joan Daemen i Vincent Rijmen, a jako standard USA opublikowano go w 2001 roku. Szyfruje bloki 128-bitowe kluczami o długości 128, 192 lub 256 bitów, w 10, 12 lub 14 rundach. Każda runda ma cztery kroki, a dwa z nich mają znajomo brzmiące nazwy: SubBytes podstawia każdy bajt według tabeli, a ShiftRows przesuwa bajty w wierszach.

Na tym podobieństwo się kończy. W szyfrze Cezara przesunięcie jest kluczem. W AES przesunięcia są stałe i jawne, a klucz wchodzi w osobnym kroku, AddRoundKey. Tabela podstawień powstała z algebry i dobrano ją tak, by opierała się znanym atakom. Uczciwie można więc powiedzieć tyle, że oba szyfry używają podstawiania i przesuwania, czyli starych i ogólnych narzędzi.

Problem wspólny dla Cezara i AES

Obie strony szyfru symetrycznego potrzebują tego samego klucza i muszą go uzgodnić tak, by nikt nie podsłuchał. Ani Cezar, ani AES tego nie rozwiązują. Whitfield Diffie i Martin Hellman opublikowali rozwiązanie w 1976 roku: kryptografię klucza publicznego, w której część klucza może być jawna. Rok później pojawił się szyfr RSA. Brytyjski wywiad doszedł do podobnych wyników kilka lat wcześniej w tajemnicy, co ujawniono w 1997 roku.

Dopiero tu nastąpiło prawdziwe zerwanie z tradycją wspólnych sekretów, i nie ma ono nic wspólnego z przesuwaniem liter. Dzisiejsze bezpieczne połączenia zwykle łączą oba podejścia: metody klucza publicznego służą do uzgodnienia klucza, a szybki szyfr symetryczny, taki jak AES, do samych danych.

Cezar, Vigenère, DES i AES w porównaniu

Szyfr Liczba kluczy Co go pokonało
Cezar, I wiek p.n.e. 25 Sprawdzenie wszystkich kluczy lub liczenie liter
Vigenère, 1553 11 881 376 dla klucza z 5 liter Powtarzający się klucz, potem liczenie liter
Klucz jednorazowy, 1882 Tyle, ile możliwych wiadomości Nic, jeśli użyty poprawnie. Trudnością jest sam klucz.
DES, 1977 2⁵⁶, około 7,2 × 10¹⁶ Sprawdzanie kluczy: 56 godzin w 1998 roku
AES-128, 2001 2¹²⁸, około 3,4 × 10³⁸ Nie jest publicznie znany praktyczny atak

Dlaczego wciąż uczy się szyfru Cezara

Można go wykonać i złamać na kartce w ciągu jednej lekcji. Dzięki temu dobrze wprowadza pojęcia klucza, ataku brute force i statystyki liter, zanim pojawi się matematyka. Zobacz, jak korzystają z niego nauczyciele, albo zacznij od przewodnika dla początkujących i narzędzia szyfru Cezara.

Nie daje żadnej realnej ochrony, więc nadaje się tylko do nauki i łamigłówek. Do ochrony prawdziwych danych użyj sprawdzonej biblioteki z AES lub podobnym współczesnym szyfrem i nie projektuj własnego. Strona o praktycznych zastosowaniach pokazuje, gdzie szyfr Cezara wciąż się pojawia.

Najczęstsze pytania

Czy AES opiera się na szyfrze Cezara?

Nie. Oba używają podstawiania i przesuwania, ale AES wyrasta z XX-wiecznych szyfrów blokowych. Jego bezpośredni poprzednik to szyfr Square tych samych autorów.

Czy szyfr Cezara jest symetryczny czy asymetryczny?

Symetryczny. To samo przesunięcie szyfruje i odszyfrowuje, więc muszą je znać obie strony. AES też jest symetryczny, a RSA asymetryczny.

Dlaczego szyfr Cezara był ważny, skoro jest tak słaby?

Pokazuje metodę i klucz jako dwie osobne rzeczy, a jego wady łatwo zobaczyć: za mało kluczy i wzorce języka, które przetrwały szyfrowanie. Późniejsze szyfry musiały rozwiązać oba problemy.

Czy szyfr Cezara jest używany we współczesnym szyfrowaniu?

Nie. Żaden współczesny system nie używa go do ochrony danych. Przetrwał w nauczaniu, łamigłówkach i ROT13, które ukrywa tekst tylko przed przypadkowym spojrzeniem.

Źródła

Co dalej