Rozważmy poniższą depeszę, którą dostaliśmy od radiotelegrafisty. Na jej przykładzie możemy prześledzić proces deszyfracji oraz pewne słabości proceudralne, które były wykorzystane przez polskich i później brytyjskich kryptologów i łamaczy. Ta konkretna wiadomość pochodzi z 1938 roku, a więc jeszcze sprzed wojny i została odszyfrowana przez Polaków. W owym czasie zespół polskich kryptologów na bieżąco odczytywał niemieckie wiadomości. Z tego powodu Niemcy w trakcie wojny stale zmieniali i udoskonalali metody szyfrowania. Sytuacja przypominała zatem nierówną zabawę w kotka i myszkę. W szczególności wiadomości nadawane przez marynarkę wojenną (Kriegsmarine) były lepiej zabezpieczone. W ich przypadku procedura ustawienia wirników była znacznie bardziej złożona (zwłaszcza po 1941 roku). Spróbuję ją również opisać w innym przykładzie. Tymczasem mamy taką o to wiadomość:


Początek wiadomości stanowi nagłówek (preambuła), który nadawny był "otwartym tekstem" (bez szyfrowania). Z nagłówka wiadomości widzimy, że Pozostałych parametrów polscy łamacze szyfrów nie znali. Niemcy ustalali je na podstawie swojej kiążki kodów używanej przez Wehrmacht w danym dniu miesiąca. Zwróc uwagę na trzeci blok w pierwszej linii: AXPWT. Nie stanowi on części zakodowanej treści, a jest to tzw. identyfikator grupy (niem. Kenngruppen - patrz słownik) kodów. Dla Niemców był to identyfikator* z ksiąki kodów, dzięki któremu odczytywali ustawienia pierścieni i pozostałych parametrów Enigmy obowiązujących w danym dniu. Polakom ten identyfikator nic nie mówił i należało zanotować i pominąć go podczas deszyfracji. My dzięki ich wiedzy i heroicznej pracy znamy ustawienia maszyny jakie należało przyjąć tego dnia: Znając powyższe spróbujmy ustalić kod wiadomości. Wywołamy w tym celu emulator enimy M4: aenig4 z parametrami:
Zauważ, że zamiast ustawień wirników F R X wpisałem A F R X. Podobnie dla ustawień pierścieni dodałem czwarty wirnik ustawiony w pozycji 1 (A). Wynika to z tego, że program Aenig4 jest emulatorem pełnej Enigmy M4. Jeśli chcemy rozkodowywać wiadomość nadaną dla Enigmy M3 musimy ustawić Enigmę M4 w trybie kompatybilności z M3. Pierwszą słabością było jawne przesyłanie początkowych ustawień wirników (tu: FRX). W Kriegsmarine nie stosowali takich metod.

W wyniku deszyfracji otrzymaliśmy ciąg 'AGIAG I', będący powtórzeniem dwa razy klucza AGI. Był to tzw. klucz wiadomości i stanowił ustawienia wirników dla dalszych bloków pierwszej części wiadomości.

Klucz ten początkowo był dobierany losowo przez szyfranta. Tutaj dochodzimy do dwóch słabości proceduralnych. Niemcy w obawie przed przekłamaniem w odbiorze wiadomości wysyłali ten klucz 2x po sobie. Wiedza, że pierwsze 6 zakodowanych znaków zawiera dwa te same trój-literowe bloki (tzw. trigramy) jawnego tekstu ułatwiała polskim kryptologom ustalenie pewnych zależności występujących pomiędzy literami szyfrogramu i na tej podstawie odtworzenie połączeń w wirnikach maszyny (tzw. teoria cyklów Mariana Rejewskiego). Niemcy w późniejszym czasie się z tego wycofali. Drugą słabością było to, że szyfranci często rutynowo wybierali te same ustawienia zamiast "wygenerować" inne (losowe). Na podobnej zasadzie jak my obecnie wybieramy hasła pokroju qweasd dla mniej istotnych serwisów internetowych ;). Wg informacji znalezionych w internecie, po 41 roku początek depeszy, stanowiący zaszyfrowany właściwy kod wiadomości, wysyłany był pojedyńczo i dobierany na podstawie książki kodów dla danej daty (identyfikator Kenngruppen + 2 losowo dobrane znaki).

Zatem znając już właściwy kod pierwszej części wiadomości, spróbujmy ją rozkodować. W tym celu wpisujemy pozostałe znaki pierwszej części wiadomości do naszej wirtualnej Enigmy (bez pierwszych 6 znaków, które stanowią zaszyfrowany kod wiadomości i bez identyfikatora AXPWT!).
co przekłada się na niemiecki tekst

Tę samą wiadomość rozszyfrowaną przy użyciu androidowego emulatora Enigmy M3 przedstawiają rysunki na końcu tekstu.

Teraz musimy ustalić kod drugiej częśći wiadomości. W tym przypadku znowu, początkowe ustawienia wirników (Ringstellung), dla właściwej treści drugiej części wiadomości były zakodowane w jej pierwszych 6 znakach. Musimy znów przestawić wirniki w ustawienia zapisane w nagłówku wiadomości ((A)FRX) i rozkodowac pierwsze 6 znaków.

W wyniku deszyfracji otrzymaliśmy ciąg 'YBEYB E', będący powtórzeniem dwa razy klucza YBE. Teoretycznie wartość tego klucza (YBE) była wybierana przez szyfranta losowo. W praktyce Niemcy rutynowo używali często tych samych kodów, albo, co też okazało się słabością - jako kod kolejnej wiadomości (kolejnej części) przyjmowali ustawienia wirników jakie widzieli w okienku maszyny, z ostatniego bloku poprzedniej części wiadomości. W tym ostatnim przypadku wystarczyło rozkodować tylko ostatnią część wiadomości, ponieważ jej kod był jednocześnie ustawieniem wirników z końca poprzedniej (a znając ustawienia wirników i liczbę znaków można było dojść do kodu poprzedniej wiadomości itd.) Zatem ustawiamy wirniki w położenie (A)YBE i rozkodowujemy dalsze znaki drugiej części wiadomości!

co przekłada się na niemiecki tekst
Pozostała nam ostatnia część. Ponownie powracamy do ustawień wirników (A)FRX i dekodujemy pierwsze 6 znaków trzeciej części wiadomości

W wyniku deszyfracji otrzymaliśmy ciąg 'LUNLU N'. Zatem ustawiamy wirniki w położenie (A)LUN i rozkodowujemy pozostałe znaki z trzeciej części wiadomości:

co przekłada się na niemiecki tekst

Poniżej jeszcze raz w formie czysto tekstowej:

-----------------------------------------------
1TL:

AUF BEFEHL DES OBERSTEN BEFEHLSHABERS SIND IM
FALLE X Z X ZT X UNWAHRSCHEINLICHEN X FRANZOESISQEN
ANGRIFFS DIE WESTBEFESTIGUNGEN JEDER ZAHLENMAESSIGEN
UEBERLEGENHEIT ZUM TROTZ ZU HALTEN X

2TL:
FUEHRUNG UND TRUPPE MUESSEN VON DIESER EHRENPFLIQT
DURQDRUNGEN SEIN X ABS X DEM GEMAESS BEHALTE IQ
MIR DIE ERMAEQTIGUNG ZUR PUFGABE DER BEFESTIGUNGEN
ODER AUQ VON TEILEN AUSDRUECKLIQ

3TL:
PERSOENLIQ VOR X ABS X AENDERUNG DER ANWEISUNG
X OKH X GEN X ST X D X H X ERSTE ABT X NR X DREI DREI
ZWO EINS X DREI AQT G X KDOS X VOM JULI EINS NEUN DREI AQT
BLEIBT VORBEHALTEN X DER OBERBEFEHLSHABER DES HEERES

-----------------------------------------------
i po przełożeniu na normalny niemiecki
-------------------------------------------------------------------------------------------------
Auf Befehl des Obersten Befehlshabers sind im Falle, zur Zeit unwahrscheinlichen, Franzoesischen Angriffs die Westbefestigungen jeder

zahlenmaessigen Ueberlegenheit zum trotz zu halten. Fuehrung und Truppe muessen von dieser Ehrenpflicht durchdrungen sein.

Dem gemaess behalte ich mir die Ermaechtigung zur Aufgabe der Befestigungen oder auch von Teilen ausdruecklich persoenlich vor.

Aenderungen der Anweisung OKH/Gen/St/D/H Erste Abt Nr. 3321/38 G/KDos vom Juli 1938 bleibt vorbehalten.

Der Oberbefehlshaber des Heeres.
-------------------------------------------------------------------------------------------------

tłumaczenie na angielski

The Commander-in-Chief orders as follows:
In the case of French attacks on the western fortifications,
although unlikely at this moment, those fortifications must be held
at all costs, even against numerically superior forces.

Commanders and troops must be imbued with the honour of this duty.

In accordance with orders, I emphasise that I alone have the right
to authorise the fortifications to be abandoned in whole or
part.

I reserve the right to make changes to the order OKH/Gen/St/D/H
1. Abt. Nr. 3321/38 GKDos of July 1938.

The Commander-in-Chief of the Army.

niektóre skróty używane przy pisaniu wiadomści

ustawienia wirników, pierścieni i łącznicywirniki ustawione w kod - AGIrozszyfrowany tekst na dole ekranu
zwróć uwagę na obecne położenie wirników

pierwsza część wiadomości rozkodowana w emulatorze Enigmy pod Androidem

Bawiąc się aplikacją pod Androida możesz graficznie zaobserwować moment przeniesienia - inny dla poszczególnych wirników. Przykładowo wirnik III (tutaj występujący na pierwszej pozycji od prawej strony) powoduje, że sąsiadujący z nim wirnik I przesuwa się o jedną pozycję, w momencie przejścia wirnika III z litery V na literę W. Tutaj jest to oczywiście warunek programowy, natomiast w fizycznych Enigmach było to realizowane poprzez specjalne wyżłobienia występujące w różnych wirnikach na różnych pozycjach. W tabeli nr 1 przedstawiłem moment przeniesienia dla poszczególnych wirników.
wirnikmoment
przeniesienia
IQ -> R
IIE -> F
IIIV -> W
IVJ -> K
VZ -> A
Tabela 1 - momenty przeniesienia.