Kod (kryptografia) - Code (cryptography)

Część „ Telegramu Zimmermanna ” odszyfrowana przez łamaczy kodów brytyjskiego wywiadu marynarki wojennej . Słowa Arizona nie było w niemieckiej książce kodów i dlatego musiało zostać podzielone na sylaby fonetyczne.

W cryptology , A Kod jest metodą szyfrowania komunikatu , który działa na poziomie znaczenia; oznacza to, że słowa lub wyrażenia są przekształcane w coś innego. Kod może przekształcić „zmianę” w „CVGDK” lub „salon koktajlowy”. Amerykańska Agencja Bezpieczeństwa Narodowego zdefiniowała kod jako „kryptosystem substytucyjny, w którym elementy tekstu jawnego to przede wszystkim słowa, frazy lub zdania, a odpowiedniki kodu (zwane „grupami kodów”) zazwyczaj składają się z liter lub cyfr (lub obu) w przeciwnym razie bezsensowne kombinacje o identycznej długości." Słownika jest potrzebne do szyfrowania i deszyfrowania frazy lub słowa.

Natomiast szyfry szyfrują wiadomości na poziomie pojedynczych liter, małych grup liter, a nawet, we współczesnych szyfrach, pojedynczych bitów . Wiadomości mogą być przekształcane najpierw kodem, a następnie szyfrem. Takie wielokrotne szyfrowanie lub „superszyfrowanie” ma na celu utrudnienie analizy kryptograficznej .

Innym porównaniem kodów i szyfrów jest to, że kod zazwyczaj reprezentuje literę lub grupy liter bezpośrednio, bez użycia matematyki. W związku z tym liczby są skonfigurowane do reprezentowania tych trzech wartości: 1001 = A, 1002 = B, 1003 = C, ... . Wynikowa wiadomość to 1001 1002 1003, aby przekazać ABC. Szyfry jednak wykorzystują wzór matematyczny do reprezentowania liter lub grup liter. Na przykład A = 1, B = 2, C = 3, ... . W ten sposób komunikat ABC powstaje przez pomnożenie wartości każdej litery przez 13. Komunikat ABC to 13 26 39.

Kody mają wiele wad, w tym podatność na kryptoanalizę i trudność w zarządzaniu nieporęcznymi książkami kodów , więc szyfry są obecnie dominującą techniką we współczesnej kryptografii.

W przeciwieństwie do tego, ponieważ kody są reprezentatywne, nie są podatne na matematyczną analizę poszczególnych elementów książki kodowej. W naszym przykładzie wiadomość 13 26 39 można złamać, dzieląc każdą liczbę przez 13, a następnie uszeregowując je alfabetycznie. Jednak celem kryptoanalizy książki kodowej jest porównawcza częstotliwość poszczególnych elementów kodu pasujących do tej samej częstotliwości liter w wiadomościach jawnego tekstu przy użyciu analizy częstotliwości . W powyższym przykładzie grupa kodów 1001, 1002, 1003 może wystąpić więcej niż jeden raz, a częstotliwość ta może odpowiadać liczbie wystąpień kodu ABC w wiadomościach zwykłego tekstu.

(W przeszłości lub w kontekstach nietechnicznych kod i szyfr są często używane w odniesieniu do dowolnej formy szyfrowania ).

Kody jedno- i dwuczęściowe

Kody są definiowane przez „książki kodów” (fizyczne lub pojęciowe), które są słownikami grup kodów wymienionych wraz z odpowiadającym im tekstem jawnym. Kody pierwotnie miały grupy kodów przypisane w „porządku zwykłego tekstu” dla wygody zaprojektowanego kodu lub kodera. Na przykład w kodzie używającym grup kodów numerycznych słowo tekstowe rozpoczynające się od „a” miałoby grupę o niskiej wartości, a słowo rozpoczynające się od „z” miałoby grupę o wysokiej wartości. Ta sama książka kodów może być wykorzystana do „kodowania” wiadomości w postaci zwykłego tekstu w zakodowaną wiadomość lub „tekstu kodu” i „dekodowania” tekstu kodu z powrotem do wiadomości w postaci zwykłego tekstu.

Aby utrudnić życie łamaczom kodów, twórcy kodów zaprojektowali kody bez przewidywalnego związku między grupami kodów a kolejnością pasującego tekstu jawnego. W praktyce oznaczało to, że wymagane były teraz dwie książki kodów, jedna do wyszukiwania grup kodów do kodowania, a druga do wyszukiwania grup kodów w celu znalezienia zwykłego tekstu do dekodowania. Takie „dwuczęściowe” kody wymagały więcej wysiłku w celu opracowania i dwukrotnie większego wysiłku w celu dystrybucji (i bezpiecznego usunięcia po wymianie), ale były trudniejsze do złamania. Telegram Zimmermanna w styczniu 1917 roku użył niemiecki dyplomatyczny „0075” system kodu dwuczęściową, która zawierała w górę o 10.000 fraz i pojedynczych słów.

Kod jednorazowy

Jednorazowy kod to ustalone z góry słowo, fraza lub symbol, który ma być użyty tylko raz, aby przekazać prostą wiadomość, często sygnał do wykonania lub przerwania jakiegoś planu lub potwierdzenia, że ​​się powiódł lub nie powiódł. Kody jednorazowe są często zaprojektowane tak, aby można je było włączyć do pozornie niewinnej rozmowy. Wykonane właściwie, są prawie niemożliwe do wykrycia, chociaż wyszkolony analityk monitorujący komunikację kogoś, kto już wzbudził podejrzenia, może rozpoznać komentarz w rodzaju „Ciocia Bertha zaczęła rodzić” jako mający złowrogie znaczenie. Znane przykłady kodów jednorazowych obejmują:

Czasami wiadomości nie są wcześniej ułożone i opierają się na wspólnej wiedzy, miejmy nadzieję, znanej tylko odbiorcom. Przykładem jest telegram wysłany do prezydenta USA Harry'ego Trumana , a następnie na konferencji poczdamskiej spotkać się z premier Radziecki Stalina , informując Trumana z pierwszej udanej próbie wystąpienia bomby atomowej .

„Operowano dziś rano. Diagnoza nie została jeszcze ukończona, ale wyniki wydają się zadowalające i już przekraczają oczekiwania. Lokalna informacja prasowa jest konieczna, ponieważ zainteresowanie rozciąga się na dużą odległość. Doktor Groves jest zadowolony. Wraca jutro.

Zobacz także jednorazowy pad , niepowiązany algorytm szyfrowy

Kod idiota

Idiota kod jest kodem, który jest tworzony przez strony jej używania. Ten rodzaj komunikacji jest podobny do sygnałów ręcznych używanych przez armie w terenie.

Przykład: Każde zdanie, w którym użyto „dzień” i „noc” oznacza „atak”. Lokalizacja, o której mowa w następnym zdaniu, określa lokalizację, która ma zostać zaatakowana.

  • Tekst jawny: Atak X.
  • Codetext: Chodziliśmy dzień i noc po ulicach, ale nie mogliśmy go znaleźć! Jutro udamy się do X.

Wczesne użycie terminu wydaje się być George Perraulta, postać w książce science fiction piątek przez Robert A. Heinlein :

Najprostszy rodzaj [kodu] i tym samym niemożliwy do złamania. Pierwsza reklama mówiła zainteresowanej osobie lub osobom o wykonaniu numeru siedem lub oczekiwaniu numeru siedem lub mówiło coś o czymś oznaczonym jako siedem. Ten mówi to samo w odniesieniu do pozycji kodu numer dziesięć. Ale znaczenia liczb nie można wywnioskować za pomocą analizy statystycznej, ponieważ kod można zmienić na długo przed osiągnięciem użytecznego wszechświata statystycznego. To idiotyczny kod... a kod idiota nigdy nie może zostać złamany, jeśli użytkownik ma zdrowy rozsądek, aby nie chodzić zbyt często do studni.

Ekspert ds. terroryzmu Magnus Ranstorp powiedział, że mężczyźni, którzy przeprowadzili ataki 11 września na Stany Zjednoczone, używali podstawowego e-maila i tego, co nazywa „kodem idioty”, aby omówić swoje plany.

Kryptanaliza kodów

O ile rozwiązanie monoalfabetycznego szyfru podstawienia jest łatwe, o tyle rozwiązanie nawet prostego kodu jest trudne. Odszyfrowanie zaszyfrowanej wiadomości jest trochę jak próba przetłumaczenia dokumentu napisanego w języku obcym, a zadanie zasadniczo sprowadza się do zbudowania „słownika” grup kodów i reprezentowanych przez nie słów w tekście jawnym.

Jednym chwytem na prostym kodzie jest fakt, że niektóre słowa są bardziej popularne niż inne, takie jak „the” lub „a” w języku angielskim. W wiadomościach telegraficznych grupa kodowa „STOP” (tj. koniec zdania lub akapitu) jest zwykle bardzo powszechna. Pomaga to zdefiniować strukturę wiadomości pod względem zdań, jeśli nie ich znaczenia, i jest to przydatne z kryptoanalitycznego punktu widzenia.

Dalszy postęp można poczynić w stosunku do kodu, zbierając wiele tekstów kodu zaszyfrowanych tym samym kodem, a następnie wykorzystując informacje z innych źródeł

  • szpiedzy
  • gazety
  • dyplomatyczny czat koktajlowy
  • miejsce, z którego wysłano wiadomość
  • dokąd został wysłany (tj. analiza ruchu )
  • czas wysłania wiadomości,
  • zdarzenia występujące przed i po wysłaniu wiadomości
  • normalne nawyki osób wysyłających zakodowane wiadomości
  • itp.

Na przykład konkretna grupa kodów znaleziona prawie wyłącznie w wiadomościach z określonej armii i nigdzie indziej nie może dobrze wskazywać dowódcy tej armii. Grupa kodów, która pojawia się w wiadomościach poprzedzających atak na konkretną lokalizację, może równie dobrze oznaczać tę lokalizację.

Cribs mogą być natychmiastową prezentacją definicji grup kodu. W miarę określania grup kodu mogą one stopniowo budować masę krytyczną, z coraz większą liczbą grup kodu ujawnianych z kontekstu i wykształconych domysłów. Kody jednoczęściowe są bardziej podatne na takie zgadywanie niż kody dwuczęściowe, ponieważ jeśli numer kodowy „26839” kodu jednoczęściowego zostanie określony jako „spychacz”, wówczas niższy numer kodowy „17598” prawdopodobnie będzie oznaczał słowo tekstowe rozpoczynające się od „a” lub „b”. Przynajmniej dla prostych kodów jednoczęściowych.

Różne sztuczki mogą być wykorzystywane do „ rośliny ” lub „loch” informacji w zakodowanej wiadomości, na przykład wykonując nalot w określonym czasie i miejscu przed wrogiem, a następnie sprawdzenie wiadomości kodu wysłanego po nalocie. Błędy kodowania są szczególnie przydatnym sposobem na wciśnięcie palca w kod; ludzie niezawodnie popełniają błędy, czasem katastrofalne. Umieszczanie danych i wykorzystywanie błędów działa również przeciwko szyfrom.

  • Najbardziej oczywistym i, przynajmniej w zasadzie, najprostszym sposobem złamania kodu jest kradzież książki kodów poprzez przekupstwo, włamanie lub najazdy — procedury czasami gloryfikowane przez wyrażenie „kryptografia praktyczna” — i jest to słabość zarówno kodów, jak i szyfry, chociaż książki kodowe są zazwyczaj większe i używane dłużej niż klucze szyfrów . Chociaż dobry kod może być trudniejszy do złamania niż szyfr, potrzeba pisania i rozpowszechniania książek kodowych jest poważnie kłopotliwa.

Konstruowanie nowego kodu jest jak budowanie nowego języka i pisanie dla niego słownika; to była szczególnie ważna praca przed komputerami. Jeśli kod zostanie naruszony, całe zadanie musi zostać wykonane od nowa, a to oznacza dużo pracy zarówno dla kryptografów, jak i użytkowników kodu. W praktyce, gdy kody były w powszechnym użyciu, były zwykle okresowo zmieniane, aby utrudnić łamaczom kodów i ograniczyć żywotność skradzionych lub skopiowanych książek z kodami.

Po utworzeniu kodów dystrybucja książki kodów jest logistycznie niezgrabna i zwiększa prawdopodobieństwo, że kod zostanie naruszony. Jest takie powiedzenie, że „Trzy osoby mogą zachować tajemnicę, jeśli dwoje z nich nie żyje” ( Benjamin Franklin – Wikiquote ) i choć może to być przesada, tajemnica staje się trudniejsza, jeśli jest dzielona między kilka osób. Kody mogą być uważane za dość bezpieczne, jeśli są używane tylko przez kilku ostrożnych ludzi, ale jeśli całe armie używają tej samej książki kodów, bezpieczeństwo staje się znacznie trudniejsze.

W przeciwieństwie do tego, bezpieczeństwo szyfrów zależy na ogół od ochrony kluczy szyfrów. Klucze szyfrujące można ukraść, a ludzie mogą je zdradzić, ale znacznie łatwiej je zmienić i rozpowszechniać.

Superszyfrowanie

Powszechne było zaszyfrowanie wiadomości po jej pierwszym zaszyfrowaniu, aby zwiększyć trudność kryptoanalizy. W przypadku kodu numerycznego zwykle robiono to za pomocą „dodatku” – po prostu długiego numeru klucza, który był dodawany cyfra po cyfrze do grup kodów, modulo 10. W przeciwieństwie do książek kodowych, dodatki były często zmieniane. Słynny kod japońskiej marynarki wojennej JN-25 był tym projektem.

Bibliografia

  1. ^ Historia amerykańskiego bezpieczeństwa komunikacji; Wykłady Davida G. Boaka , National Security Agency (NSA), tomy I, 1973, tomy II 1981, częściowo wydane 2008, dodatkowe fragmenty odtajnione 14 października 2015
  2. ^ „16,2: Szyfry podstawieniowe” . Matematyka LibreTexts . 2020-01-22 . Źródło 19.09.2021 .
  3. ^ "Zimmermann Telegram: The Original Draft" , 2007, Joachim von zur Gathen, "Cryptologia", tom 31, wydanie 1
  4. ^ Piątek (1982) Robert A. Heinlein
  5. ^ Radio Wolna Europa / Radio Liberty: „Bliski Wschód: islamscy bojownicy prowadzą dżihad do Internetu” Jeffrey Donovan , 16 czerwca 2004 r.

Źródła

  • Kahn, David (1996). The Codebreakers: kompleksowa historia tajnej komunikacji od czasów starożytnych do Internetu . Pisarz.
  • Pickover, Klif (2000). Kryptoruny: kody i tajne pisanie . Komunikaty granatu. Numer ISBN 978-0-7649-1251-1.
  • Boak, David G. (lipiec 1973) [1966]. "Kody" (PDF) . Historia bezpieczeństwa komunikacji w USA; Wykłady Davida G. Boaka, tom. I (2015 przegląd odtajnienia red.). Ft. George G. Meade, MD: Amerykańska Agencja Bezpieczeństwa Narodowego. s. 21–32 . Pobrano 23.04.2017 .

Zobacz też