Kryptografia

wprowadzenie §

szyfr Cezara jest jednym z najwcześniejszych znanych i najprostszych szyfrów. Jest to rodzaj szyfru zastępczego, w którym każda litera w tekście zwykłym jest „przesunięta” o określoną liczbę miejsc w dół alfabetu. Na przykład, z przesunięciem 1, A zostanie zastąpione przez B, B stanie się C, i tak dalej. Metoda ta została nazwana na cześć Juliusza Cezara, który najwyraźniej używał jej do komunikowania się ze swoimi generałami.

bardziej złożone schematy szyfrowania, takie jak szyfr Vigenère ’ a, wykorzystują szyfr Caesar jako jeden z elementów procesu szyfrowania. Powszechnie znane „szyfrowanie” ROT13 to po prostu szyfr Cezara o przesunięciu 13. Szyfr Caesar zasadniczo nie zapewnia bezpieczeństwa komunikacji i okaże się, że można go łatwo złamać nawet ręcznie.

przykład §

aby przekazać zaszyfrowaną wiadomość od jednej osoby do drugiej, najpierw konieczne jest, aby obie strony miały „klucz” szyfru, aby nadawca mógł go zaszyfrować, a odbiorca mógł go odszyfrować. W przypadku szyfru caesar kluczem jest liczba znaków do przesunięcia alfabetu szyfru.

oto szybki przykład kroków szyfrowania i deszyfrowania związanych z szyfrem Cezara. Tekst, który zaszyfrujemy to „obrona wschodniej ściany zamku”, z przesunięciem (klawiszem) 1.

plaintext: defend the east wall of the castleciphertext: efgfoe uif fbtu xbmm pg uif dbtumf

łatwo jest zobaczyć, jak każdy znak w tekście zwykłym jest przesunięty w górę alfabetu. Deszyfrowanie jest równie łatwe, używając offsetu -1.

plain: abcdefghijklmnopqrstuvwxyzcipher: bcdefghijklmnopqrstuvwxyza

oczywiście, jeśli używany jest inny klucz, alfabet szyfrowy zostanie przesunięty o inną kwotę.

opis matematyczny §

gdzie k jest klawiszem (przesunięciem) zastosowanym do każdej litery. Po zastosowaniu tej funkcji wynikiem jest liczba, która musi zostać przetłumaczona z powrotem na literę. Funkcja deszyfrowania to:

JavaScript przykład szyfru Caesar §

tekst zwykły

shift:

tekst zaszyfrowany

inne implementacje §

Kod szyfru Caesar w różnych językach programowania można znaleźć na stronie implementacje.

aby zaszyfrować własne wiadomości w Pythonie, możesz użyć modułu pycipher. Aby go zainstalować, użyj pip install pycipher. Aby zaszyfrować wiadomości za pomocą szyfru Caesar (lub innego szyfru, zobacz tutaj, aby uzyskać dokumentację):

Cryptanalysis §

Zobacz Cryptanalysis of the Caesar Cipher for a way of automatically breaking this cipher.

Kryptanaliza to sztuka łamania kodów i szyfrów. Szyfr Cezara jest prawdopodobnie najłatwiejszym ze wszystkich szyfrów do złamania. Ponieważ przesunięcie musi być liczbą między 1 a 25, (0 lub 26 spowodowałoby niezmieniony tekst zwykły) możemy po prostu wypróbować każdą możliwość i zobaczyć, która z nich daje fragment czytelnego tekstu. Jeśli zdarzy ci się wiedzieć, co to jest kawałek zaszyfrowanego tekstu lub możesz odgadnąć kawałek, pozwoli to natychmiast znaleźć klucz.

Jeśli nie jest to możliwe, bardziej systematycznym podejściem jest obliczanie rozkładu częstotliwości liter w tekście zaszyfrowanym. Polega to na liczeniu, ile razy pojawia się każda litera. Naturalny angielski tekst ma bardzo wyraźną dystrybucję, która może być używana pomoc kody crack. Rozkład ten jest następujący:

częstotliwości angielskich liter

oznacza to, że litera e jest najczęstsza i pojawia się prawie 13% czasu, podczas gdy z pojawia się znacznie mniej niż 1 procent czasu. Zastosowanie szyfru Cezara nie zmienia tych częstotliwości liter, a jedynie przesuwa je nieco wzdłuż (dla przesunięcia 1 najczęstszą literą szyfrogramu staje się f). Kryptoanalityk musi tylko znaleźć przesunięcie, które powoduje, że częstotliwości zaszyfrowanego tekstu pasują ściśle do naturalnych częstotliwości angielskich, a następnie odszyfrować tekst za pomocą tego przesunięcia. Metoda ta może być wykorzystana do łatwego ręcznego łamania Szyfrów Cezara.

jeśli nadal masz problemy, wypróbuj sekcję cryptanalysis na stronie podstawienie szyfru. Wszystkie strategie, które działają z szyfrem podstawienia, będą również działać z szyfrem Caesar (ale metody, które działają na Szyfrze Caesar, niekoniecznie działają na ogólnym szyfrze podstawienia).

dla metody, która działa dobrze na komputerach, potrzebujemy sposobu na ustalenie, który z 25 możliwych odszyfrowań wygląda najbardziej jak angielski tekst. Zobacz kryptoanalizę szyfru Cezara, aby dowiedzieć się, jak go złamać za pomocą statystyk quadgram. Klucz (lub shift), który powoduje odszyfrowanie z najwyższym prawdopodobieństwem bycia tekstem angielskim, jest najprawdopodobniej prawidłowym kluczem. Oczywiście, im więcej masz zaszyfrowanego tekstu, tym bardziej prawdopodobne jest, że będzie to prawdą (dotyczy to wszystkich miar statystycznych, w tym powyższego podejścia do częstotliwości). Więc metoda używana jest, aby wziąć zaszyfrowany tekst, spróbuj odszyfrować go za pomocą każdego klucza, a następnie zobacz, który odszyfrowanie wygląda najlepiej. Ta uproszczona metoda kryptanalizy działa tylko na bardzo prostych szyfrach, takich jak szyfr Caesar i szyfr rail fence, nawet nieco bardziej skomplikowane szyfry mogą mieć zbyt wiele kluczy, aby sprawdzić je wszystkie.

Bibliografia §

  • Wikipedia ma dobry opis procesu szyfrowania/deszyfrowania, historii i kryptoanalizy tego algorytmu
  • Książka Simona Singha „The Code Book” jest doskonałym wprowadzeniem do szyfrów i kodów oraz zawiera sekcję o szyfrach Cezara.
  • Singh, Simon (2000). The Code Book: The Science of Secrecy from Ancient Egypt to QuantumCryptography. ISBN 0-385-49532-3.



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.