G - EnigmaPodczas drugiej wojny światowej wojsko niemieckie używało przeważnie jednej maszyny do zabezpieczania komunikacji: Enigmy. Złamanie kodu Enigmy jest jednym z najważniejszych osiągnięć kryptoanalizy aliantów. Sukces został osiągnięty głównie dzięki pojawieniu się komunikacji cyfrowej i geniuszu ludzi pracujących w Bletchley Park, sekretnej siedziby w Anglii. Enigma mimo dobrej odporności na atak z ołówkiem i kartką jest całkiem łatwa do złamania przy pomocy cyfrowego komputera. ![]() Rys. 1 Enigma. Enigma była maszyną opartą na rotorach, popularnej metodzie kryptografii w tamtych czasach. Rotor jest to odosobniony dysk, na którego krawędzi rozmieszczone są równomiernie metalowe styki, po jednym dla każdej litery alfabetu. Styki są umieszczone po obu stronach dysku. Każdy styk po jednej stronie jest połączony przewodnikiem z pewnym stykiem po drugiej stronie dysku. Umożliwia to przepływ prądu elektrycznego z określonego styku po jednej stronie na określony styk po drugiej stronie (Rysunek 2). Rysunek 3 przedstawia kompletny układ rotorów. Widać na nim, że Enigma posiada trzy rotory π0, π1, π2 oraz jeden rotor odwracający - πr. ![]() Rys. 2 Widok dwóch rotorów. ![]() Rys. 3 Kompletny układ rotorów. Danymi wejściowymi dla enigmy jest łańcuch liter alfabetu bez pustych znaków. Każdy znak jest poddany następującym fazom:
Procedura opisana powyżej może zostać użyta zarówno do kodowania jak i dekodowania znaków, pod warunkiem, że permutacja πr używana przez ostatni rotor jest inwolucją. Czyli, że x = πr(πr(x)). Można założyć, że ta zależność jest spełniona. Klucz prywatny Enigmy składa się z (1) rotorów π0, π1, π2 i πr, (2) permutacji wstępnej IP i (3) początkowych przesunięć obrotowych k0, k1, k2, kr rotorów π0, π1, π2, πr. W Wermachcie rotory były zmieniane rzadko i były wybierane spośród czterech różnych rotorów. ZadanieCofnąłeś się w czasie do Bletchley Park razem ze swoim laptopem i musisz pomóc odszyfrować kilka wiadomości, które zostały przechwycone w ciągu dnia. Dostaniesz kompletny tekst zaszyfrowany, fragment tekstu odszyfrowanego i fragment klucza prywatnego Enigmy. Twoim zadaniem jest znalezienie prawidłowego klucza i dokończenie dekodowania wiadomości. WejścieW pierwszej linii podana jest liczba testów. Każdy test rozpoczyna się od klucza prywatnego Enigmy. Klucz jest podany w kolejnych sześciu liniach. Pierwsze cztery opisują specyfikacje rotorów π0, π1, π2 oraz πr. Każda z nich to ciąg 26 małych liter alfabetu angielskiego. Znak na pozycji i-tej określa przyporządkowanie i-tego znaku w alfabecie (ciąg " WyjścieDla każdego testu wypisz jedną linię zawierającą kompletną, odszyfrowaną wiadomość. Możesz założyć, że rozwiązanie zawsze istnieje i jest unikalne. Przykładowe wejście2
Przykładowe wyjściemanyorganizationsrelyoncomputers
|