Napisał Administrator 1. Klasyczne metody szyfrowania Zabezpieczanie informacji przed odczytaniem lub modyfikacją przez osoby niepowołane stosowane było już w czasach starożytnych. Ówczesne metody szyfrowania tekstów oparte były głownie na zamianie i przestawianiu znaków lub symboli, a skuteczność utajniania zależała przede wszystkim od utrzymania w tajemnicy sposobu szyfrowania. Poszukiwanie doskonalszych metod szyfrowania zaowocowało powstaniem oddzielnej dziedziny wiedzy, zwanej kryptologią. Kryptologia dzieli się na kryptografię która zajmuje się utajnianiem informacji, oraz kryptoanalizę, która poszukuje dróg jej odzyskania z postaci utajnionej. Samą kryptologię można także postrzegać jako gałąź matematyki stosowanej i informatyki. Faktycznie w zastosowaniach informatycznych kryptologia nabiera praktycznego znaczenia w połączeniu z zagadnieniami dostępu do systemów operacyjnych, baz danych oraz sieci komputerowych i przesyłania danych. 1.1 Szyfry podstawieniowe monoalfabetyczne Zamieniają one każdy znak tekstu jawnego na odpowiedni znak kryptogramu, przy czym w całej wiadomości do zamiany każdego znaku jawnego na zaszyfrowany stosuje się odwzorowanie typu jeden do jednego. Jednym z najstarszych szyfrów podstawieniowych jest szyfr Cezara. Pochodzi on 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: alfabet jawny ABCDEFGHIJKLMNOPQRSTUVWXYZ alfabet szyfru DEFGHIJKLMNOPQRSTUVWXYZABC 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. Przykład. Tekst jawny: SYSTEM Tekst tajny: VBVWHP 1.2 Szyfry podstawieniowe homofoniczne Szyfry te, podobnie jak poprzednio omówione szyfry monoalfabetyczne, zamieniają każdy znak tekstu jawnego na odpowiedni znak kryptogramu, z tą jednak różnicą, że odwzorowanie ma tu charakter jeden do wielu i każdy znak może być zaszyfrowany jako jeden z pewnej grupy znaków alfabetu szyfrowego. Na przykład literze możemy przypisać kilka różnych symboli szyfrowych: 16, 74, 35, i 21, i stosować je rotacyjnie bądź losowo. Jeśli liczba symboli przypisanych każdej literze jest proporcjonalna do częstości względnej tej litery, informacja o częstości pojedynczej litery zostaje całkowicie zatarta i zupełnie nieużyteczna dla kryptoanalityka. Przykład. Litera Homofony C 06 15 34 F 89 46 H 13 14 90 28 77 79 I 01 61 57 12 18 99 M 19 09 23
N 91 33 05 51 16 88 06 O 27 37 47 49 11 83 04 93 R 02 17 36 52 53 54 62 S 63 65 67 31 39 41 Y 10 20 Z 72 24 Komunikat zaszyfrowany według powyższego klucza może mieć wiele postaci np.: Tekst jawny: S Z Y F R H O M O F O N I C Z N Y Tekst tajny: 67 72 10 46 02 90 11 23 37 89 93 05 12 34 24 51 20 1.3 Szyfry podstawieniowe wieloalfabetyczne Stosuje się w nich wiele odwzorowań znaków tekstu jawnego na znaki kryptogramu, przy czym każde odwzorowanie jest z reguły typu jeden do jednego. Jak więc widzimy szyfry wieloalfabetyczne ukrywają rozkład częstości przez użycie wielu podstawień. Szyfrowanie wiadomości przebiega tu na podstawie dowolnie wybranego słowa kluczowego (hasła). W przypadku znaków ASCI może to być dowolny ich ciąg. Do numeru każdego kolejnego znaku tekstu jawnego dodajemy numer odpowiadającego mu znaku słowa kluczowego i uzyskujemy znak kryptogramu. Gdy słowo kluczowe się skończy, bierzemy je kolejny raz od początku. Przykładem szyfrów wieloalfabetowych są: a) wieloalfabetowy szyfr Vigenere a - okresowy szyfr podstawieniowy oparty na alfabetach przesuniętych. Wykorzystuje klucz szyfrowania K, który tworzy sekwencja liter: K = k1... kd Liczba przesunięć w i-tym alfabecie określana jest przez ki (i = 1,..., d), gdzie d jest to okres oraz liczba alfabetów szyfrowych. Szyfrowanie opiera się zatem na wykorzystaniu formuły: fi (a) = (a + ki) mod n Przykład. Zostanie zaszyfrowany tekst szyfry podstawieniowe, z wykorzystaniem klucza MONIKA: Tekst jawny: S Z Y F R Y P O D S T A W I E N I O W E Klucz: M O N I K A M O N I K A M O N I K A M O Tekst tajny: E N L N B Y B C Q A D A I W R V S O I S W przykładzie tym pierwszą literę każdej 5-literowej grupy przesunięto (mod 26) o 18, drugą o 14, trzecią o 13, czwartą o 9, a piątą o 0. Inaczej: Działanie szyfru Vigenere a oparte jest na następującej tablicy: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z A B C D E F G H I J K L M N O P Q R S T U V W X Y Jak można zauważyć, każdy z wierszy tablicy odpowiada szyfrowi Cezara, przy czym w pierwszym wierszu przesunięcie wynosi 0, w drugim 1 itd. Aby zaszyfrować pewien tekst, potrzebne jest słowo kluczowe. Słowo kluczowe jest tajne i mówi, z którego wiersza (lub kolumny) należy w danym momencie skorzystać. Przypuśćmy, że chcemy zaszyfrować prosty tekst, np.: TO JEST BARDZO TAJNY TEKST Do tego celu użyjemy znanego tylko nam słowa kluczowego, np. TAJNE Na początku zauważamy, że użyte słowo kluczowe jest zbyt krótkie, by wystarczyło do zaszyfrowania całego tekstu, więc należy użyć jego wielokrotności. Będzie to miało następującą postać: TO JEST BARDZO TAJNY TEKST TA JNET AJNETA JNETA JNETA Następnie wykonujemy szyfrowanie w następujący sposób: litera szyfrogramu odpowiada literze z tabeli znajdującej się na przecięciu wiersza, wyznaczanego przez literę tekstu jawnego i kolumny wyznaczanej przez literę słowa kluczowego, np. po kolei T i T daje M, O i A daje O itd. W efekcie otrzymujemy zaszyfrowany tekst: MO SRWM BJEHSO CNNGY CROLT b) wieloalfabetowy szyfr Beauforta - odwraca kolejność liter w alfabecie, po czym przesuwa je w prawo o (ki + 1) pozycji. Jest on bardzo podobny do szyfru Vigenere a, a stosowane w nim podstawienie wyraża wzór fi (a) = ( ki - a ) mod n Jeśli więc za ki przyjmiemy E, to możemy zaszyfrować tekst REMIGIUSZ jak następuje: Tekst jawny: R E M I G I U S Z Klucz: E E E E E E E E E Tekst tajny: N A S W Y W K M F Jeśli natomiast za ki przyjmiemy MONIKA, to Tekst jawny: R E M I G I U S Z Klucz: M O N I K A M O N Tekst tajny: V K B A E S S W O 1.4 Szyfry podstawieniowe poligramowe Szyfry tego typu, w odróżnieniu od wyżej przedstawionych innych rodzajów szyfrów podstawieniowych, "obrabiają" jednocześnie większe grupy liter. Złamanie takiego szyfru jest zatem dużo trudniejsze dzięki odebraniu znaczenia częstości występowania
liter lub znaków. Dobrym, choć dosyć prostym, przykładem szyfru poligramowego jest szyfr Playfaira, wykorzystywany przez Anglików w czasie I wojny światowej. Kluczem jest tu macierz o wymiarach 5x5, w której skład wchodzą wszystkie litery alfabetu łacińskiego z wyjątkiem J. Użyjmy jako słowa-klucza słowa SZYFR. Zatem pierwszą czynnością będzie zapisanie liter alfabetu w kwadracie 5 x 5, zaczynając od słowa kluczowego i łącząc litery I oraz J. S Z Y F R A B C D E G H I/J K L M N O P Q T U V W X Jeżeli postanowisz używać innego słowa-klucza, w którym litery się powtarzają (dotyczy to szczególnie imion, np. MAGDA), pamiętaj że powtórzenia liter musisz pominąć (w tym przypadku słowem-kluczem będzie MAGD). Potem dzielimy tekst, który mamy zamiar zaszyfrować (nazywajmy go tekstem jawnym) na dygramy, czyli pary liter. Każda z par powinna się składać z dwóch różnych od siebie liter. W razie potrzeby możemy w tym celu wstawić np. x. Dodajemy je także na końcu wtedy, gdy tekst nie kończy się pełnym dygramem. Litery szyfruje się tu parami (m1m2) według następujących zasad: Jeśli m1 i m2 znajdują się w tym samym wierszu, to c1 i c2 (czyli litery kryptogramu) są znakami z prawej strony m1 i m2, przy czym pierwszą kolumnę traktuje się jako położoną na prawo od ostatniej kolumny. Jeśli m1 i m2 znajdują się w tej samej kolumnie, to c1 i c2 są znakami położonymi poniżej m1 i m2, przy czym pierwszy wiersz traktuje się jako leżący pod ostatnim wierszem. Jeśli m1 i m2 znajdują się w różnych wierszach i kolumnach, to c1 i c2 są brane z przeciwległ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ę literę nieznaczącą (np. X), co eliminuje powtórzenia. Przykład Tekst jawny: SZ YF RY PO LI GR AM OW EX Tekst tajny: ZY FR SF QP GK LS GT PV LR 1.5 Szyfry przestawieniowe Szyfry te zmieniają uporządkowanie znaków w danych według pewnego schematu. Zazwyczaj dokonuje się przestawienia za pomocą pewnej figury geometrycznej. Szyfrowanie przebiega więc w dwóch krokach: tekst jawny wpisuje się do figury w sposób określony pewną tzw. ścieżką zapisu, a następnie odczytuje się go według określonego porządku (ścieżki odczytu) otrzymując tekst zaszyfrowany. Klucz obejmuje więc figurę geometryczną oraz ścieżki zapisu i odczytu. Jako pierwszy przykład weźmy prosty szyfr płotowy. Litery tekstu jawnego zapisuje się tu tak, aby tworzyły kształt przypominający wierzchołek płotu zbudowanego ze sztachet. Tekst zaszyfrowany otrzymujemy odczytując kolejne wiersze tak utworzonej konstrukcji. Proces szyfrowania możemy przedstawić na prostym przykładzie.
Przykład. "JUTRO JEST SOBOTA" (pomińmy przy zapisie spacje): J O T O U R J S S B T T E O A Kryptogram w tym wypadku brzmi: "JOTO URJSSBT TEOA". Klucz tego szyfru jest określony wysokością płotu, która w tym wypadku wynosi 3. Często figurą jest macierz dwuwymiarowa. Tekst jawny zapisuje się do macierzy wierszami. Tekst zaszyfrowany powstaje przez odczytanie kolumn w określonym porządku. Przykład. BEZPIECZEŃSTWO BEZP I E C ZENSTWO Tekst zaszyfrowany po odczycie kolumn w kolejności 2-4-7-1-6-3-5, będzie miał postać: EEPSCOBZEWZNIT