Komputer - SZYFRY KLASYCZNE
SZYFRY KLASYCZNE
W tym artykule zajmiemy się najprostszymi sposobami szyfrowania, znanymi od wielu stuleci i nie mającymi już większego znaczenia praktycznego. Zostaną one pokazane po to, by wyjaśnić, co nazywamy "klasycznym systemem kryptograficznym". W kolejnym artykule ("Delta" nr 3/1997) opiszemy znacznie nowsze i lepsze sposoby szyfrowania, tzw. szyfry z publicznym kluczem.
Jeden z najstarszych sposobów szyfrowania pochodzi od Juliusza Cezara, który szyfrował swoją korespondencję z Cyceronem. Sposób ten polegał na tym, że zamiast każdej litery pisało się literę występującą w alfabecie trzy miejsca dalej. Tak więc, jeśli użyjemy dzisiejszego alfabetu łacińskiego
ABCDEFGHIJKLMNOPQRSTUVWXYZ,
to zamiast A będziemy pisać D, zamiast K piszemy N, zamiast Y piszemy B. Widzimy więc, że alfabet traktujemy "cyklicznie", tzn. po ostatniej literze Z następuje znów pierwsza A itd.
Słynne słowa Cezara ALEA IACTA EST zaszyfrowalibyśmy więc jako DOHD LDFWD HVW. Na tym przykładzie objaśnimy dwa ważne pojęcia kryptografii (czyli nauki o szyfrowaniu): systemu kryptograficznego i klucza. System kryptograficzny to, mówiąc nieprecyzyjnie, ogólny sposób szyfrowania. W naszym przykładzie polega on na tym, że zamiast danej litery alfabetu piszemy literę występującą w tym samym alfabecie ileś miejsc dalej. Cezar zdecydował się akurat na trzy miejsca dalej, ale równie dobrze mógłby pisać literę występującą siedem miejsc dalej. Sposób szyfrowania (tzn. system kryptograficzny) byłby w zasadzie ten sam, różniłby się tylko wyborem klucza, czyli liczby wskazującej, o ile miejsc dalej w alfabecie stoi litera, którą mam napisać. Można powiedzieć, że system kryptograficzny polega tu na pisaniu litery stojącej k miejsc dalej, a liczba k jest kluczem. Podsumujmy: szyfrowanie polega na wyborze ogólnego sposobu, algorytmu szyfrowania, zwanego systemem kryptograficznym i pewnych parametrów, od których ten algorytm jest zależny, nazywanych kluczem szyfrowania.
Każdą zaszyfrowaną wiadomość trzeba kiedyś rozszyfrować. W szyfrze Cezara znajdujemy literę stojącą w alfabecie trzy miejsca bliżej, czyli w istocie stosujemy ten sam algorytm szyfrowania z innym kluczem. Do szyfrowania używamy klucza +3, a do rozszyfrowywania klucza -3. Gdy znamy klucz szyfrowania, to znamy też klucz rozszyfrowywania. Tak naprawdę jest to ten sam klucz, jeśli pominiemy jego znak.
Szyfr Cezara bardzo łatwo jest opisać w sposób matematyczny. Kolejnym literom alfabetu łacińskiego przyporządkujemy liczby od 0 do 25. Przyjmijmy oznaczenie: a mod b oznacza (zawsze nieujemną!) resztę z dzielenia liczby całkowitej a przez dodatnią liczbę całkowitą b. System kryptograficzny Cezara może teraz być zdefiniowany wzorem
C = (P + k) mod 26,
gdzie k jest kluczem szyfrowania, P jest numerem litery, którą szyfrujemy, a C jest numerem litery po zaszyfrowaniu. Rozszyfrowywanie odbywa się według wzoru
P = (C - k) mod 26.
Jeśli ktoś zadaje sobie tyle trudu, by szyfrować wiadomości wysyłane do kogoś innego, to pewnie dlatego, że nie chce, by inne, niepowołane do tego osoby, mogły te wiadomości odczytać. I pewnie znajdą się te inne osoby, które chcą koniecznie przeczytać to, co zostało zaszyfrowane. Jeśli nie znają one sposobu szyfrowania, to muszą ten szyfr "złamać". W jaki sposób można tego dokonać?
Po pierwsze, będziemy zakładać, że osoba łamiąca szyfr zna system kryptograficzny i nie zna tylko klucza. Dlaczego przyjmujemy takie założenie? Wśród wielu powodów można wymienić ten, że system kryptograficzny na ogół trudniej zmienić niż klucz. Używa się więc tego samego systemu na tyle długo, że osoby niepowołane mogą wykraść informacje o samym systemie. Bezpieczeństwo szyfrowania będzie zapewnione dzięki częstym zmianom kluczy. Innym powodem jest ten, że często tego samego systemu używa bardzo wiele osób i sam system jest dobrze wszystkim znany.
A jak w takim razie zdobyć klucz, jeśli dysponuje się tylko tekstem zaszyfrowanym? Czasami nie jest to trudne. Np. szyfr Cezara można złamać bardzo łatwo. Przecież ma on tylko 26 kluczy. Wystarczy spróbować wszystkich, by przekonać się, że tylko jedna wiadomość brzmi sensownie, a pozostałe stanowią niezrozumiały bełkot. Klucz użyty w tym rozszyfrowywaniu jest właściwym kluczem. Widzimy więc, że system kryptograficzny dopuszczający niewiele kluczy nie jest bezpieczny i łatwo taki szyfr złamać. Kiedyś myślano, że bezpieczeństwo szyfru zależy po prostu od liczby kluczy. Girolamo Cardano, wybitny uczony XVI wieku, pisał, że niemożliwy do złamania jest nieco inny szyfr, polegający na tym, że zamiast każdej litery alfabetu piszemy ustaloną inną literę. Wyjaśni to najlepiej przykład. Przyjmijmy, że zamiast litery A piszemy Q, zamiast B piszemy W itd. według następującego schematu:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
QWERTYUIOPASDFGHJKLZXCVBNM
(zamiast litery stojącej w górnym wierszu piszemy literę znajdująca się pod nią w dolnym wierszu). Zdanie ALEA IACTA EST zostanie teraz zaszyfrowane jako QSTQ OQEZQ TLZ. System kryptograficzny polega tu na zastępowaniu każdej litery inną, a kluczem jest stojąca w dolnym wierszu permutacja liter alfabetu. Kluczem rozszyfrowywania jest oczywiście permutacja odwrotna, którą nietrudno wypisać:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
KXVMCNOPHQRSZYIJADLEGWBUFT
Liczba kluczy jest ogromna. Jest ich 26! - czyli 403291461126605635584000000. Oczywiście, przeszukanie wszystkich możliwych kluczy nie jest wykonalne, trwałoby zbyt długo. Jak więc można złamać ten szyfr? Sięgamy do metod statystycznych. Okazuje się, że w tekstach napisanych w danym języku poszczególne litery nie występują z tą samą częstotliwością. I tak, na przykład, w języku angielskim najczęściej występuje litera E (około 13% wszystkich liter odpowiednio długiego tekstu). Drugą z kolei jest litera T (około 9%), następnymi są A, O, N, I, R. W języku polskim nie ma litery bardzo wyróżniającej się od innych i dlatego łamanie zaszyfrowanego tekstu napisanego po polsku będzie nieco trudniejsze. Najczęściej występują litery A oraz I (po około 9%), a po nich E i O (po około 7,5%).
Taki sposób łamania szyfru opisał w opowiadaniu "Tańczące sylwetki" Artur Conan Doyle. Czytelnik-koneser może sprawdzić, czy Sherlock Holmes korzystał z odpowiednich rozkładów częstości.
Przypuśćmy teraz, że mamy dany tekst zaszyfrowany za pomocą opisanego wyżej systemu. Musimy, oczywiście, wiedzieć, w jakim języku napisano zaszyfrowaną wiadomość i znać rozkład częstości występowania liter alfabetu w tekstach napisanych w tym języku. Jeśli nasz tekst jest wystarczająco długi (wystarczy już kilkaset liter), to rozkład częstości jego liter powinien być podobny. Najczęściej występujące litery w tekście zaszyfrowanym powinny odpowiadać najczęstszym literom danego języka (choć niekoniecznie w tej samej kolejności). Próbujemy przypisać te litery sobie; po kilku próbach okaże się, że dość łatwo możemy domyślić się znaczenia następnych liter, potem jeszcze następnych, aż wreszcie domyślamy się znaczenia wszystkich liter klucza i odczytujemy cały tekst. Duża liczba kluczy nie jest więc warunkiem wystarczającym bezpieczeństwa szyfru.
Przyjrzymy się jeszcze jednemu systemowi kryptograficznemu. Od poprzedniego systemu będzie się on różnić tym, że ta sama litera może być zaszyfrowana w różny sposób, w zależności od tego, w którym miejscu tekstu występuje. Weźmy ciąg kilku liczb mniejszych od 26, na przykład (3, 7, 1, 11, 2). Sposób szyfrowania polega teraz na tym, że zamiast pierwszej litery tekstu piszemy literę znajdującą się w alfabecie 3 miejsca dalej, zamiast drugiej litery tekstu piszemy literę znajdującą się w alfabecie 7 miejsc dalej, zamiast trzeciej literę znajdującą się 1 miejsce dalej, potem literę znajdującą się 11 miejsc dalej, potem 2 miejsca i zaczynamy od początku: 3 miejsca, 7 miejsc, 1 miejsce itd. A więc zdanie ALEA IACTA EST po zaszyfrowaniu będzie brzmiało DSFL KDJUL GVA. Zauważmy, że litery A w pierwszym słowie zostały zaszyfrowane inaczej. Natomiast pierwsza litera A i druga w drugim słowie zostały zaszyfrowane tak samo - dlatego, że druga z nich występuje w tekście pięć miejsc dalej i klucz ma pięć liczb. Ten system kryptograficzny, nazywany szyfrem Vigenre'a, jest więc jakby kombinacją wielu systemów Cezara, a kluczem szyfrowania jest odpowiedni ciąg liczb. Klucze, oczywiście, mogą być dowolnej długości. Często zapamiętujemy klucz w postaci słowa. Na przykład słowo CEZAR odpowiada ciągowi (3, 5, 26, 1, 18): litera C jest trzecią literą alfabetu, litera E piątą itd. Liczba kluczy w tym systemie jest naprawdę olbrzymia. Kluczy długości 26, a więc takiej długości jak permutacje w poprzednim systemie, jest 2626; ta liczba jest znacznie większa niż 26! A jednak ten szyfr też można łatwo złamać.
Łamanie polega na tym, by najpierw odgadnąć długość klucza. Następnie łatwo już odgadnąć liczbę stojącą w kluczu na każdym miejscu. Na przykład, odgadliśmy, że klucz ma długość 5. Zliczamy litery stojące na co piątym miejscu: na pierwszym, szóstym, jedenastym itd. Rozkład częstości tych liter powinien być przesuniętym o kilka miejsc rozkładem częstości występowania liter danego alfabetu. Te dwa rozkłady można bardzo łatwo do siebie "dopasować" i w ten sposób odnajdujemy liczbę stojącą w kluczu na pierwszym miejscu. Potem tak samo odnajdujemy liczbę stojącą na drugim miejscu, na trzecim itd.
A jak odgadnąć długość klucza? Można po prostu próbować po kolei: najpierw przypuścić, że klucz ma długość 2 i spróbować dopasować odpowiednie rozkłady. Jeśli się nie uda, to próbujemy długości 3, potem 4 i tak dalej, dotąd, aż znajdziemy właściwą długość. Istnieją zresztą metody statystyczne, dzięki którym można tę długość wyznaczyć z dość dobrym przybliżeniem. Tak więc ten system kryptograficzny też nie jest bezpieczny.
Przyjrzyjmy się sposobom łamania tych dwóch szyfrów. W obu przypadkach próbowaliśmy znaleźć klucz szyfrowania. Wydaje się, że ten sposób postępowania jest najbardziej naturalny. Jeśli znajdziemy klucz szyfrowania, to łatwo odzyskamy z niego klucz rozszyfrowywania i odczytamy zaszyfrowaną wiadomość. Ale czy jest to jedyny sposób łamania szyfru? Czy odczytanie zaszyfrowanej wiadomości musi być równoważne znalezieniu klucza? Dla tych dwóch systemów kryptograficznych jest to równoważne. Przypuśćmy bowiem, że otrzymaliśmy jednocześnie tekst jawny (tzn. tekst oryginalny, przed zaszyfrowaniem) i tekst zaszyfrowany. Bez trudu w obu przypadkach wyznaczymy klucz, a właściwie oba klucze: szyfrowania i rozszyfrowywania. Wystarczy przyjrzeć się, jakie litery w tekście zaszyfrowanym odpowiadają kolejnym literom tekstu jawnego. Czy jednak tak będzie dla wszystkich innych systemów kryptograficznych? Spróbujmy sformułować wyraźnie pytania, które się narzucają.
Po pierwsze, jeśli poznamy klucz szyfrowania, to czy łatwo możemy odtworzyć z niego klucz rozszyfrowywania? We wszystkich powyższych przykładach było to oczywiste, ale nie zawsze musi tak być. Po drugie, jeśli mamy jednocześnie tekst jawny i tekst zaszyfrowany, to czy umiemy odtworzyć klucz szyfrowania (lub rozszyfrowywania)? Znów okaże się, że nie zawsze będziemy umieli to zrobić.
Klasyczne systemy kryptograficzne to właśnie takie systemy, których złamanie polega w istocie na znalezieniu klucza szyfrowania i tym samym klucza rozszyfrowywania. W następnym artykule poznamy tzw. szyfry z publicznym kluczem. Polegają one na tym, że klucz szyfrowania może być powszechnie znany i każdy będzie mógł go użyć do zaszyfrowania dowolnej wiadomości. Klucz rozszyfrowywania będzie jednak tajny i tylko jego "właściciel" będzie mógł z niego skorzystać. W tych systemach kryptograficznych znajomość klucza szyfrowania nie wystarczy do rozszyfrowania tekstu zaszyfrowanego. Potrzebna jest jeszcze pewna dodatkowa informacja, której nie udostępnia się publicznie i której w praktyce nie można uzyskać, jeśli zna się tylko klucz szyfrowania. Do skonstruowania takich szyfrów wykorzystano subtelne metody teorii liczb, algebry, geometrii algebraicznej i kombinatoryki.
Szyfry symetryczne
Szyfry asymetryczne
TEMAT: PROSTE SZYFRY PODSTAWIENIOWE
Szyfry podstawieniowe dzielimy na cztery typy:
· monoalfabetyczne,
- homofoniczne,
- wieloalfabetyczne
- poligramowe
I. Szyfry monoalfabetyczne
Szyfry monoalfabetyczne zamieniają każdy znak uporządkowanego alfabetu jawnego na odpowiedni znak uporządkowanego alfabetu szyfru. Bardzo często alfabet szyfru powstaje z alfabetu jawnego przez prostą zamianę kolejności znaków w alfabecie jawnym (permutacja). Jeśli alfabet jawny ma postać a1, a2, ..., aN-1, wtedy alfabet szyfru ma postać f(a1),f(a2), ...,f(aN-1), przy czym f jest odwzorowaniem wzajemnie jednoznacznym (bijekcją). Kluczem jest alfabet szyfru lub funkcja f.
Przykład:
Alfabet jawny: A B C D E F G H I J K L M N O P R S T U W X Y Z Alfabet szyfru: D E F G H I J K L M N O P R S T U W X Y Z A B C
Tekst jawny: A D A M S M O L N I K
Tekst zaszyfrowany: D G D P W P S O R L N
Powyższy przykład jest szczególnym przypadkiem szyfru podstawieniowego, gdyż szyfr powstał na alfabecie przesuniętym" zwanym też szyfrem Cezara. Funkcja f ma wtedy postać:
f(a) = (a+k) mod N
gdzie:
N - długość alfabetu,
k - przesunięcie w prawo,
a - pozycja litery w alfabecie.
Innym przypadkiem szyfru podstawieniowego jest szyfr oparty na mnożeniach zwany przerzedzonym. Funkcja f ma postać:
f(a) = (s*k) mod N
przy czym k oraz N są liczbami względnie pierwszymi. Jeśli k i N nie są liczbami względnie pierwszymi, to wielu literom tekstu jawnego będzie odpowiadać ta sama litera tekstu zaszyfrowanego.
Te dwie metody można połączyć i otrzymamy wtedy szyfr afiniczny.
f(a) = (a * k1 + k0) mod N
gdzie:
k0 - przesunięcie w prawo,
k1 - współczynnik przerzedzenia.
Ogólny wzór przekształcenia wyższego rzędu otrzymuje się z przekształceń wielomianowych stopnia t:
f(a) = (a t*k t+ a (t-1)*k(t-1)+ ...a* k1+ k0 ) mod N.
II. Szyfry homofoniczne
Szyfry homofoniczne odwzorowują każdy znak ai alfabetu jawnego A na zestaw elementów tekstu zaszyfrowanego, zwanych homofonami. W ten sposób odwzorowanie tekstu jawnego na zaszyfrowany można określić jako funkcję:
f:A→B
gdzie B jest alfabetem szyfrującym, składającym się z podzbiorów bi, będących zbiorami homofonów odpowiadających ai.
Tekst jawny M=m1, m2 ... podlega szyfrowaniu jako b=c1, c2, ... gdzie znak ci wybierany jest losowo ze zbioru homofonów f(mi).
Przykład:
Litera
S 34 41 56 83
M 22 53 65 90
O 44 76
L 09 27 40 59
N 10 11 28 54 70 80
I 33 91
K 20 29 45 64 78
Tekst jawny: S M O L N I K
Tekst zaszyfrowany: 41 53 76 27 11 91 29
Lub: 34 90 44 59 10 33 78
Szyfry homofoniczne mogą być dużo trudniejsze do złamania niż zwykłe szyfry podstawieniowe, szczególnie w przypadkach, gdy liczba homofonów przydzielonych literze jest proporcjonalna do względnej częstości jej występowania. Oczywiście im więcej homofonów przydzielimy literom, tym silniejszy tworzymy szyfr.
Większość szyfrów można złamać, gdy posiadamy odpowiednio dużą ilość tekstu zaszyfrowanego. Wynika to z faktu, że istnieje tylko jeden klucz K, którego użycie do odszyfrowania daje w wyniku zrozumiały tekst jawny. Istnieje jednak możliwość stworzenia szyfru homofonicznego wyższego stopnia, dla którego kryptogram można zdeszyfrować na więcej niż jeden sensowny tekst.
III. Szyfry wieloalfabetyczne
Szyfry monoalfabetyczne zachowują rozkład częściowy występowania znaków tekstu jawnego. Szyfr homofoniczny ukrywa ten rozkład przez przypisanie danej literze wielu symboli (homofonów). Szyfr wieloalfabetyczny także ukrywa ten rozkład, ale robi to przez użycie wielu podstawień. Twórcą szyfrów wieloalfabetycznych jest Leon Batista Alberti. Skonstruował on dysk szyfrowy, składający się z dwóch kół. Na zewnętrznym znajdowały się litery alfabetu jawnego (24 znaki), na wewnętrznym ruchomym znajdowały się litery alfabetu szyfrowego. Dzięki temu dysk ten definiuje 24 możliwe podstawienia (zamiana tekstu jawnego na litery kryptogramu z koła wewnętrznego), które możemy zmienić co pewien okres d (znak tekstu) przez obrót koła.
Przykładem szyfru podstawieniowego wieloalfabetycznegojest szyfr Vigenere'a. Klucz szyfru K tworzy sekwencja liter K=k1, k2 ... kd gdzie ki (i = 1, ... d) daje liczbę przesunięć w i-tym alfabecie:
Fi(a) = (a + ki) mod N
Przykład:
Szyfrujemy moje imię i nazwisko ADAMSMOLNIK" z użyciem klucza julia. Pomocna przy szyfrowaniu i odszyfrowaniu jest tablica Vigenere'a przedstawiona poniżej:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | tekst jawny | |
A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | |
B | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | |
C | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | B | C | |
D | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | |
E | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | |
F | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | |
G | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | |
H | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | |
I | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | |
J | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | |
K | K | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | |
L | L | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | |
M | M | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | |
N | N | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | |
O | O | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | |
P | P | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
R | R | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | |
S | S | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | |
T | T | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | |
U | U | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | |
W | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | |
X | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | |
Y | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | |
Z | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | R | S | T | U | W | X | Y | |
k l u c z | |||||||||||||||||||||||||
Tekst jawny: | A | D | A | M | S | M | O | L | N | I | K | ||||||||||||||
Klucz | J | U | L | I | A | J | U | L | I | A | J | ||||||||||||||
Tekst zaszyfrowany: | J | Y | L | W | S | X | J | Y | X | I | U | ||||||||||||||
Bardzo podobny do szyfru Vigenere'a jest szyfr Beauforta, dla którego odwzorowanie przybiera postać:
Fi(a)=(ki-a) mod N
Inną odmianą szyfru podstawieniowego wieloalfabetycznego jest szyfr z kluczem bieżącym. Jest to szyfr, w którym długość klucza jest równa długości tekstu jawnego. Jedną z metod jest użycie tekstu z jakiejś książki lub dokumentu jako szyfru podstawieniowego. Kluczem jest tytuł książki lub dokumentu i punkt startowy. Szyfr ten gwarantuje prawie doskonałą poufność szyfrowania. Można go złamać wykorzystując fakt, że teksty, które są kluczami np. w języku angielskim, cechuje pewna redundancja.
Innym rozwiązaniem są maszyny rotowe, w których stosuje się podstawienie wieloalfabetyczne o długim okresie. Maszyna taka jest zbudowana z szeregu kół (rotorów). Na obwodzie każdego koła, po obu stronach, znajduje się po 26 styków. Każdy styk na jednej stronie połączony jest z jednym ze styków po drugiej stronie. Połączenie to definiuje odwzorowanie fi liter tekstu jawnego na litery kryptogramu. Koło (rotor) może się obracać, każde nowe położenie rotora odpowiada innemu odwzorowaniu. Kiedy rotor jest w pozycji i-tej, to funkcja opisująca odwzorowanie przyjmuje następującą postać:
Fi = (fi (a-ji) mód 26 +ji) mod 26
Sygnał odpowiadający literze tekstu jawnego wchodzi do zespołu rotorów, przechodzi przez nie i pojawia się z drugiej strony. Jeśli w maszynie znajduje się kilka rotorów, to szyfr podstawieniowy składa się z kilku szyfrów odpowiadających kolejnym rotorom. Funkcja odwzorowująca literę przyjmuje postać:
Eki(a)=Fi°...°F2 °F1(a)
przy czym ki zależy od f1, ..., fi zaszytych w połączeniach między stykami dla odpowiednich rotorów oraz od pozycji j1, ..., ji poszczególnych rotorów. Początkowy klucz tego szyfru jest określony początkowym ustawieniem rotorów oraz ich okablowaniem (połączeniami), następnie sposobem zmiany klucza, czyli zmiany pozycji (obracanie) poszczególnych rotorów. Maszyna z trzema rotorami ma okres długości 17.546, z czterema
Prawdopodobnie najlepszym tego typu szyfrem jest szyfr z kluczem jednokrotnym. Klucz jest losową sekwencją znaków, bez powtórzeń i jest używany tylko raz. Gilbert Verman jako pierwszy zastosował ten szyfr dla 32-znakowego kodu Baudota stosowanego w dalekopisach firmy AT&T. Użycie każdego innego losowego klucza daje nam jeden z najtrudniejszych do złamania szyfrów. Niedogodnością tej metody jest bardzo długi klucz.
IV. Szyfry poligramowe
Szyfry przestawieniowe i podstawieniowe szyfrują krokowo po jednej literze tekstu jawnego. Szyfry poligramowe szyfrują w jednym kroku większe grupy liter i to właśnie powoduje, że złamanie takiego szyfru jest dużo trudniejsze, a to dzięki zachwianiu równowagi pomiędzy częstotliwością występowania liter w tekście jawnym i zaszyfrowanym.
Jednym z szyfrów poligramowych jest szyfr Playfaira, który jest digramowym szyfrem podstawieniowym. Szyfr ten był stosowany przez Anglików w czasie pierwszej wojny światowej. Kluczem jest macierz o wymiarach 5x5 składająca się z liter (bez litery J).
H A R P S
I C 0 D B
E F G K L
M N Q T U
V W X Y Z
Każdą parę liter tekstu jawnego m1m2 szyfruje się według podanych reguł (c1, c2 - to znaki szyfrogramu):
1. Jeśli litery m1 i m2 są w tym samym wierszu, to c1 i c2 są znakami położonymi z prawej strony m1 i m2;
- Jeśli litery m1 i m2 znajdują się w tej samej kolumnie, to c1 i c2 są znakami położonymi poniżej m1 i m2;
- Jeżeli m1 i m2 znajdują się nie w tej samej kolumnie, to c1 i c2 są brane z przeciwle-
głych rogów prostokąta wyznaczonego przez m1 i m2, przy czym c1 pochodzi z
wiersza zawierającego m1, a c2 z wiersza zawierającego m2.
- Jeśli m1 = m2, to do tekstu jawnego między te litery wstawia się nieznaczącą literę (np.
V), co eliminuje powtórzenia.
- Jeśli tekst jawny ma nieparzystą liczbę znaków, to na końcu tekstu jawnego dopisuje
się nieznaczącą literę.
Pierwszą kolumnę macierzy traktuje się jako położoną na prawo od ostatniej kolumny, a pierwszy wiersz jako leżący pod ostatnim wierszem.
Przykład:
Szyfrem Playfaira kodujemy moje nazwisko:”SMOLNIK”
Tekst jawny: SM OL NX IK
Tekst zaszyfrowany: HU BG QW DE
V. Algorytm łamania szyfru
Algorytm łamania szyfru oparty jest na analizie porównawczej tzw. statystyk, to znaczy zbiorów informujących o względnej częstotliwości występowania danego znaku lub zbitki znaków w tekście. Pod uwagę bierze się:
• Statystykę wzorcową, obliczoną dla typowego i odpowiednio długiego tekstu zapisanego najlepiej w tym samym języku, w którym prawdopodobnie sformułowany jest poszukiwany tekst.
• Statystykę szyfrogramu.
Zakłada się, że częstotliwość występowania znaku w statystyce wzorcowej jest zbliżona do częstotliwości występowania odpowiadającego jej zaszyfrowanego znaku w statystyce szyfrogramu. Fakt, że różne teksty napisane w tym samym języku mają zbliżone, ale jednak na ogół nieco odmienne statystyki, stanowi podstawową trudność algorytmu. Należy więc tak dobrać pary znak wzorca - znak szyfrogramu, by zgodność częstotliwości była maksymalna.
W pierwszym kroku rozpatrujemy statystyki dla pojedynczych liter. Dla każ-dej pary liter (x, y) rozważamy prawdopodobieństwo zdarzenia, że znak x w szyfrogramie odpowiada znakowi y w tekście jawnym (i wzorcowym). Wartości będące miarą prawdopodobieństw - współczynniki korelacji częstości - zachowujemy w tablicy dwuwymiarowej:
// M[i][j] - prawdopodobieństwo, że i w szyfrogramie
// to j w tekście jawnym double M[26][26];
for (i = 0; i < 26; i++)
for (j = 0; j < 26; j++)
{
double pi = statl[i]; // częstość i w szyfrogramie
double pj = patternl[j]; // częstość j we wzorcu
ASSERT(pj != 0); // statystyka wzorcowa nie
M[i][j] = pi > p j ? p j / pi : pi / p j ;
}
Poniższa tablica stała się interesującym przedmiotem wizualizacji (kolumna po lewej na rysunku znajdującym się na następnej stronie). Wartości poszczególnych elementów tablicy są kodowane barwnie-ciepłe kolory (na rysunku-jaśniejsze) oznaczają wysokie prawdopodobieństwo, że pozycja tablicy odpowiada rzeczywistej parze znak wzorca - znak szyfrogramu.
Wizualizacja rozkładów prawdopodobieństwa dla możliwych wszystkich par znak wzorca - znak szyfrogramu. Od góry w dół: szyfr z kluczem tożsamościowym; przypadek, w którym test wzorcowy i szyfrowany są identyczne; przypadek ogólny (z kluczem nietożsamościowym). Od lewej do prawej: wyniki analizy częstości pojedynczych znaków, digramów i kombinacja obydwu.
Tablica w górnej części rysunku przedstawia sytuację z kluczem tożsamościowym, to znaczy szyfrującym A na A, B na B, C na C i tak dalej. Właściwe pary grupują się wówczas na przekątnej tablicy - zauważalna jest czerwona, skośna pręga (na rysunku widoczna jako jaśniejsza). Na tablicy w środkowej części rysunku (pionowo) pręga jest szczególnie widoczna. W tym przypadku tekst wzorcowy i tekst jawny szyfrogramu były identyczne, zatem wszystkie częstości występowania odpowiadających sobie znaków były identyczne - intensywnie czerwone. W dolnej części widnieje przypadek z nietożsamościowym kluczem - właściwe pary rozrzucone są chaotycznie w obrębie tablicy.
Zastosowanie - na etapie uruchamiania algorytmu - wizualizacji wyników analizy dla klucza tożsamościowego daje okazję zobaczenia zależności, które inaczej trudne są do uchwycenia. Przede wszystkim efektywność (pewność) rozwiązania przekłada się wprost na obecność i wyrazistość czerwonej (jasnej) pręgi, biegnącej po przekątnej obrazu tablicy.
Wyniki wizualizacji utwierdzają w przekonaniu, że potrzebny jest dalszy krok algorytmu, pozwalający na skuteczniejsze wyodrębnienie właściwych par z tła. Krokiem tym jest analiza porównawcza statystyk wyodrębnionych dla digramów - dwuliterowych ciągów literowych. Każda z liter może wystąpić w 52 różnych digramach. Dla każdej z 26*26 możliwych par należy porównać dwa zestawy 52 częstości występowania digramów.
W trakcie pracy ze zwizualizowanym obrazem tablic prawdopodobieństw udało się dobrać właściwy sposób porównania zestawów 52 częstości występowania digramów. Oprócz średniej arytmetycznej i wariancji rozpatruje się też współczynniki korelacji częstotliwości występowania digramów, traktując obydwa 52-elementowe zestawy jak posortowane wektory. Inne sposoby porównywania, oparte na znajdowaniu ekstremów lub obliczaniu średniej odległości między elementami zbioru, nie zostały zaakceptowane, gdyż nie dawały zadowalającego obrazu w trakcie wizualizacji.
Ostatnim krokiem algorytmu był wybór z tablicy rozkładu prawdopodobieństw.
Wyniki
Stwierdzono wysoki stopień korelacji pomiędzy przewidywaniami opartymi na wnioskach z wizualizacji a ich faktyczną weryfikacją, otrzymaną poprzez odszyfrowanie szyfrogramu kluczem uzyskanym z łamania. Tylko wtedy, gdy na obrazie widoczna była wyraźna, skośna, czerwona pręga biegnąca po przekątnej tablicy, wyniki odszyfrowania były czytelne. Pozytywna weryfikacja algorytmu zależała od dwóch czynników. Pierwszym był właściwy dobór algorytmu. Algorytm nie analizujący częstości występowania digramów lub analizujący je niewłaściwymi metodami nie dawał czytelnych wyników. Ogromne znaczenie miała także jakość i wielkość zastosowanej statystyki wzorcowej: zmiana wzorca z pliku o długości 10 kb na plik o długości 65 kb znacząco ulepszyła niezawodność programu.
W testach praktycznych metoda uzyskiwała stuprocentową pewność w przypadku łamania szyfrogramu będącego jednocześnie tekstem wzorcowym dla statystyki (jest to przypadek przedstawiony na rys. w środkowym rzędzie). W typowych przypadkach, z nietożsamościowym kluczem i przypadkowym tekstem, algorytm pozwalał na trafne odgadnięcie 15-
A oto przykład: szyfrowano hasło z anglojęzycznej encyklopedii multimedialnei Encarta.
Tak wyglądał początkowy fragment tekstu jawnego:
STATISTICS, BRANCH OF MATHEMATICS THAT DEALS WITH THE COLLECTION, ORGANIZATION, AND ANALYSIS OF NUMERICAL DATA AND WITH SUCH PROBLEMS AS EXPERIMENT DESIGN AND DECISION MAKING.
Poniżej przytaczam szyfrogram:
MVYVIMVUM, CUYOJH FP KYVHBKYVIJM VHYV QBYLM AIVH VHB JFLLBJYIFO, FUDYOISYVIFO, YOQ YOYLGMIM FP OWKBUUYL QYVY YOQ AIVH MWJH RUFCLBKM YM BXRBUIKBOV QBMIDO YOQ QBJIMIFO KYZIOD.
A oto odtworzony tekst:
STATISTICS, PRANCH OF MATHEMATICS THAT DEALS WITH THE COLLECTION, ORGANIXATION, AND ANALBSIS OF NYMERICAL DATA AND WITH SYCH UROPLEMS AS EKUERIMENT DESIGN AND DECISION MAJING.
Przytoczę jeszcze klucze, w górnej linijce oryginalnie zastosowany do szyfrowania, w dolnej - odtworzony na drodze łamania szyfru:
YCJQBPDHINZLKOFRTUMVWEAXGS
YGJQBPDHIZXLKOFCNUMVREASWT
Temat ćwiczenia: Szyfry strumieniowe
Cel dydaktyczny: Poznanie metod szyfrowania i deszyfrowania informacji za pomocą szyfrów strumieniowych.
Wprowadzenie teoretyczne
Algorytmy kryptograficzne wykorzystuje się w różny sposób zależnie od potrzeb użytkownika. Szyfry ze względu na sposób implementacji można podzielić na:
· szyfry strumieniowe (stream ciphers),
· szyfry blokowe (block ciphers).
W szyfrowaniu strumieniowym lub potokowym przetwarzaną jednostką jest bit lub znak, a w szyfrowaniu blokowym – blok, zawierający najczęściej od kilku do kilkunastu znaków. Obie te metody szyfrowania mogą być używane zarówno do transmisji, jak i do przechowywania danych w pamięciach. Przyjęta technika szyfrowania wynika najczęściej z założonego algorytmu kryptograficznego i ma wpływ na konstrukcję układu szyfratora i deszyfratora. Szyfry blokowe opisano w p. 3.7.2.
Szyfr strumieniowy dzieli wiadomość M na znaki lub bity a następnie szyfruje każdy element mi za pomocą elementu klucza ki, należącego do strumienia klucza
Szyfr strumieniowy jest okresowy, jeśli powtarza się strumień klucza. Do algorytmów strumieniowych okresowych należą szyfry podstawieniowe, szyfry Vigenère’a i szyfry realizowane w maszynach rotorowych. Szyfr Vernama jest szyfrem strumieniowym nieokresowym.
Klucz w urządzeniu realizującym szyfr strumieniowy może być umieszczony
w pamięci lub generowany na bieżąco. Pamiętanie klucza w przypadku długich strumieni kluczy jest niepraktyczne. Implementację synchronicznego szyfru strumieniowego z generatorem klucza pokazano na rys. 1.
Gdy urządzenie przetwarza ciągi bitów, wtedy szyfrowanie i deszyfrowanie odbywa się zgodnie z zasadami rachowania w ciele GF(2), a szyfrator i deszyfrator jest bramką Ex-OR. Zatem algorytm szyfrowania ma postać
gdzie każdy element jest bitem, a dodawanie jest dodawaniem modulo dwa.
Do obliczenia elementu tekstu jawnego z kryptogramu używa się następującego algorytmu
Szyfry strumieniowe należą do systemów z kluczem tajnym, gdzie bezpieczeństwo systemu zależy od klucza. Algorytm generowania klucza musi być algorytmem deterministycznym, aby klucz mógł być łatwo odtworzony po stronie odbiorczej. Klucze najczęściej są ciągami okresowymi, ale najlepszym rozwiązaniem jest klucz jednorazowy.
Generator klucza synchronizuje się za pomocą impulsów synchronizujących IS. System kryptograficzny działa poprawnie, jeśli oba generatory, po stronie nadawczej i odbiorczej, pracują synchronicznie. Gdy generatory stracą synchronizm, musi on być przywrócony. Sygnały synchronizacji blokowej w systemie zapewniają protokoły komunikacyjne, a sygnały synchronizacji bitowej – urządzenia transmisyjne modemy.
System z szyfrem strumieniowym nie powoduje propagacji błędów transmisyjnych. Błąd transmisji jednego znaku nie wpływa na następne znaki.
Program CIPHER.EXE szyfruje i deszyfruje zbiory dyskowe stosując szyfrowanie strumieniowe znaków. Proces szyfrowania/deszyfrowania jest realizowany w module USZYFR. Procedura szyfrująca przekształca kolejne znaki szyfrowanego pliku zgodnie z zależnością:
Proces deszyfrowania odbywa się na kolejnych znakach szyfru według zależności:
W programie kolejne elementy klucza są generowane za pomocą generatora pseudolosowego systemu Borland Pascala a parametry generatora są zadawane za pomocą funkcji standardowej RANDSEED.
Program CIPHER.PAS jest przykładowym programem kryptograficznym z zastosowaniem elementów biblioteki Turbo Vision. Menu programu zawiera trzy opcje: Processing, Directory i Help. Opcja Processing umożliwia wykonanie operacji kryptograficznych tj. szyfrowania lub deszyfrowania pliku oraz wykreślenia histogramu częstotliwości znaków w wybranym pliku. Analiza częstotliwościowa służy do oceny jakości szyfru. Opcja Directory pozwala na ustawienie bieżącego katalogu i ścieżki dostępu do sterownika graficznego. Program zaopatrzono w system globalnej pomocy kontekstowej wywoływany z dowolnej pozycji menu za pomocą klawisza F1.
Po uruchomieniu programu i wybraniu komendy Cryptography w opcji Processing można wykonać operacje szyfrowania lub deszyfrowania. W tym celu należy wybrać w okienku dialogowym plik źródłowy, rodzaj operacji, podać nazwę pliku docelowego i klucz kryptograficzny. Plik zaszyfrowany będzie umieszczony w bieżącej kartotece lub w kartotece podanej w okienku dialogowym. Program sygnalizuje niektóre błędy w okienkach informacyjnych.
Po wykonaniu operacji kryptograficznej plik źródłowy może być usunięty tym celu jest przeprowadzany dialog z użytkownikiem programu. Program podaje czas wykonania operacji kryptograficznej.
Klasyfikacja metod szyfrowania ze względu na sposób przetwarzania tekstu jawnego
Właściwie wszystkie wyżej wymienione algorytmy szyfrowania można sklasyfikować ze względu na sposób przetwarzania tekstu jawnego. Według tego kryterium, które dotyczy ciągłości przetwarzania, dzielimy szyfry na strumieniowe i blokowe.
Szyfry strumieniowe
Szyfr strumieniowy przetwarza elementy wejściowe w sposób ciągły, produkując jednocześnie kod wyjściowy. Tekst dzielony jest na znaki lub bity a następnie każdy kolejny element jest szyfrowany kluczem należącym do strumienia kluczy (każdy element jest szyfrowany innym kluczem).
Szyfr strumieniowy jest okresowy, jeśli strumień klucza powtarza się po d znakach, dla danego ustalonego d. w przeciwnym razie szyfr jest nieokresowy. Do okresowych szyfrów okresowych należą szyfry generowane przez maszyny rotorowe i Hagelina. Natomiast szyfr Vernama i szyfry z bieżącymi kluczami są nieokresowymi szyframi strumieniowymi.
Okresowy szyfr o krótkim okresie można traktować jako szyfr strumieniowy, ponieważ znaki tekstu są szyfrowane jeden za drugim, a sąsiednie znaki przez inną część klucza. Gdy okresy są krótkie, wówczas szyfr jest bardziej podobny do słabego szyfru blokowego niż do szyfru strumieniowego, a jego słabość wynika stąd, że zaszyfrowane znaki nie wpływają na wpływają na szyfrowanie wszystkich znaków w bloku. Natomiast gdy długość okresu wzrasta, wówczas szyfr staje się bardziej podobny do szyfru strumieniowego.
Istnieją dwie różne metody realizacji szyfrowania strumieniowego.
Szyfry strumieniowe synchroniczne
W szyfrach tego typu strumień klucza jest generowany niezależnie od strumienia wiadomości. Oznacza to, że jeśli znak szyfrowanego tekstu zostanie zgubiony podczas transmisji, to nadawca i odbiorca muszą ponownie zsynchronizować swoje generatory kluczy przed wznowieniem transmisji. Proces ten powinien być zrealizowany w sposób zapewniający brak powtarzalności.
Przykładowe szyfry synchroniczne
Szyfr | Okres |
Szyfr Vigenerea z okresem d Maszyna obrotowa z t mechanizmami obrotowymi Maszyna Hagelina z t kołami, każde po pi kołków Szyfr z bieżącym kluczem Szyfr Vernama | d 26t p1p2...pi |
Szyfry strumieniowe samosynchronizujące się
Każdy znak klucza jest tu generowany na podstawie stałej liczby n wcześniej zaszyfrowanych znaków. Jeśli zatem podczas transmisji jakiś zaszyfrowany znak zostanie zgubiony lub wstawiony, to powstały błąd podlega propagacji przez n następnych znaków. Jednakże po odebraniu n poprawnie zaszyfrowanych znaków synchronizacja zostanie ponownie osiągnięta.
Przykładowe szyfry samosynchronizujące się
- Szyfr z kluczem samogenerującym (autokey cipher)
- Metoda sprzężenia zwrotnego.
Szyfry blokowe
Szyfr blokowy przetwarza jeden blok tekstu wejściowego za jednym razem, produkując jeden blok wyjściowy na każdy blok wejściowy. Każdy z tych bloków szyfrowany jest tym samym kluczem i zwykle składa się z kilkunastu znaków, choć nie jest to regułą. Do takich szyfrów zaliczamy szyfry podstawieniowe proste lub homofoniczne, mimo iż jednostką szyfrowania jest jeden znak. Cechą która pozwala sklasyfikować je jako szyfry blokowe jest fakt iż dla każdego znaku stosuje się ten sam klucz.
Poniższa tabela zawiera przykładowe szyfry blokowe
Szyfr | Rozmiar bloku |
Szyfr przestawieniowy z okresem d (transpozycja) Szyfr z prostym zastępowaniem Szyfr z homofonicznym zastępowaniem Szyfr Playfaira Szyfr Hilla dla macierzy d x d Szyfr DES Szyfr ekspotencjalny mod n Szyfr plecakowy o długości n | d znaków 1 znak 1 znak 2 znaki d znaków 64 bity log2 n bitów (zalecz się 664 bity) n bitów (zalecz się 200 bitów) |
Wybrane cechy szyfrów blokowych
- Stosując szyfrowanie blokowe w sposób bezpośredni uzyskuje się trochę większą szybkość niż w metodach strumieniowych. Jest tak dlatego, ponieważ jest wymagane tylko 1-krotne wykonanie algorytmu szyfrowania dla n znaków.
- Błędy transmisji występujące w jednym bloku nie mają wpływu na inne bloki.
- Szyfrowanie blokowe może być bardziej wrażliwe na kryptoanalizę niż szyfrowanie strumieniowe. Ponieważ identycznym blokom tekstu szyfrowanego odpowiadają identyczne bloki tekstu zaszyfrowanego, zatem np. bloki pustych znaków lub słów kluczowych mogą być łatwo zidentyfikowane przez kryptoanalityka przy ataku z tekstem jawnym.
Techniki transpozycyjne ( szyfry przestawieniowe )
Szyfrowanie transpozycyjne polega na przekształceniu liter tekstu jawnego na zasadzie permutacji tych liter. Następuje zmiana porządku znaków według pewnego schematu, stąd nazwa szyfry przestawieniowe. W celu transpozycji liter używa się zazwyczaj określonej figury geometrycznej (jest nią często macierz dwuwymiarowa). Tekst jawny wpisuje się do figury w sposób określony pewną ścieżką zapisu, a następnie już zaszyfrowany tekst odczytuje się z figury zgodnie z pewną ścieżką odczytu:
- Transpozycyjny szyfr płotu
Do najprostszych technik transpozycyjnych zaliczamy tzw. technikę płotu, zwaną również przestawieniem kolumnowym. Figurą geometryczną wykorzystywaną w tym przypadku jest najczęściej macierz dwuwymiarowa. Tekst jawny zapisuje się do macierzy wierszami a następnie odczytuje kolumnami ze wskazaną kolejnością. Jednym z parametrów określających zapis tekstu jawnego jest głębokość, która określa ilość wierszy wpisywania. Na przykład, aby zaszyfrować komunikat szyfry transpozycyjne techniką płotu o głębokości 2, wykonujemy następujący zapis:
syrtasoyyn
zfyrnpzcje
Wysłany komunikat ma postać:
SYRTASOYYNZFYRNPZCJE
Dla kryptoanalityka, rozszyfrowanie powyższej permutacji byłoby banalne. Bardziej skomplikowany system polega na zapisaniu komunikatu w prostokącie o większej głębokości (czyli np. w macierzy o wymiarach 4x6), a następnie odczytaniu kolumna po kolumnie, lecz dodatkowo ze zmianą kolejności kolumn. Kolejność ta staje się kluczem do algorytmu. Aby zaszyfrować komunikat technika płotu czyli szyfr transpozycyjny można zapisać go wierszami w macierzy o wymiarach 7x6 w następujący sposób:
Numer kolumny: | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Tekst jawny: | T | E | C | H | N | I | K |
A | P | Ł | O | T | U | C | |
Z | Y | L | I | S | Z | Y | |
F | R | T | R | A | N | S | |
P | O | Z | Y | C | Y | J | |
N | Y | | | | | |
Przy odczycie kolumn w kolejności (według klucza ) 4-2-7-5-1-6-3, zaszyfrowany tekst ma postać: HOIRYEPYROYKCYSJNTSACTAZFPNIUZNYCŁLTZ.
Idąc dalej, w celu utrudnienia odczytu zaszyfrowanego tekstu przez osoby niepowołane, można poddać go dalszej przeróbce (właściwie ilość wykonywanych transpozycji może być nieograniczona ), gdyż dokonanie przestawienia tylko jeden raz nie zapewnia dostatecznego bezpieczeństwa. Czysty szyfr transpozycyjny jest łatwo rozpoznawalny, ponieważ częstość występowania liter jest tu taka sama jak w tekście oryginalnym. Kryptoanaliza omówionego powyżej typu transpozycji kolumnowej jest dość prosta i polega na wprowadzeniu tekstu zaszyfrowanego do matrycy i manipulowaniu kolejnością kolumn. Poddając więc drugiej transpozycji nasz komunikat (możemy użyć tu tego samego klucza), wykonujemy następujący zapis:
Numer kolumny: | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Tekst jednokrotnie zaszyfrowany: | H | O | I | R | Y | E | P |
Y | R | O | Y | K | C | Y | |
S | J | N | T | S | A | C | |
T | A | Z | F | P | N | I | |
U | Z | N | Y | C | Ł | L | |
T | Z | | | | | |
Przy odczycie kolumn w kolejności (według wcześniej przyjętego klucza ) 4-2-7-5-1-6-3, dwukrotnie przetransponowany tekst ma postać: RYTFYORJAZZPYCILYKSPCHYSTUTE CANŁIONZN. Jest to permutacja o wiele mniej ustrukturalizowana i dużo trudniejsza do rozszyfrowania.
- Transpozycyjny szyfr stałego okresu
W metodzie stałego okresu szyfrowaniu podlegają bloki o znacznej długości będące fragmentami szyfrowanego tekstu. Dokonuje się zmiany tekstu jawnego przy zastosowaniu stałego okresu d (d oznacza liczbę liter w każdym bloku tekstu jawnego) oraz permutacji f (i) (f funkcja permutacji na zbiorze liczb od 1 do d). Jeśli d=5, i: 1 2 3 4
Tekst jawny = | S | Z | Y | F | R | S | T | A | Ł | E | G | O | O | K | R | E | S | U |
Tekst zaszyfrowany = | Z | F | S | Y | R | T | Ł | S | A | E | O | K | G | O | R | S | E | U |
Tak więc pierwszy znak tekstu jawnego jest przesunięty na trzecią pozycję w tekście zaszyfrowanym, drugi znak tekstu jawnego znajduje się na pierwszej pozycji i tak dalej. Tekst zaszyfrowany przesyłany jest do odbiorcy jako nieprzerwany łańcuch znaków, aby ukryć okres szyfrowania (tu podzielono tekst tylko dla przejrzystości ).
Dużą wadą wszystkich szyfrów transpozycyjnych jest niezmienna częstość występowania liter (symboli) dzięki czemu szyfry są proste do identyfikacji i łatwo rozpoznawalne przez kryptoanalityków. Takie szyfry mogą być łamane metodą anagramową, polegającą na odtworzeniu właściwej kolejności przemieszanego zestawu znaków.
| Dane autora: | ||