Rozdział 2. Systemy kryptograficzne. 2.1 Podstawowe pojęcia



Podobne dokumenty
Rozdział 4. Macierze szyfrujące. 4.1 Algebra liniowa modulo 26

2 Kryptografia: algorytmy symetryczne

Kryptografia systemy z kluczem tajnym. Kryptografia systemy z kluczem tajnym

0 + 0 = 0, = 1, = 1, = 0.

Tajna wiadomość. Scenariusz lekcji

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Szyfry afiniczne. hczue zfuds dlcsr

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

Algorytmy podstawieniowe

Przykład. Przykład. Litera Homofony C F H I M

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

Algorytmy asymetryczne

Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego

Bezpieczeństwo systemów komputerowych. Metody łamania szyfrów. Kryptoanaliza. Badane własności. Cel. Kryptoanaliza - szyfry przestawieniowe.

Bezpieczeństwo systemów komputerowych. Kryptoanaliza. Metody łamania szyfrów. Cel BSK_2003. Copyright by K.Trybicka-Francik 1

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kryptografia-0. przykład ze starożytności: około 489 r. p.n.e. niewidzialny atrament (pisze o nim Pliniusz Starszy I wiek n.e.)

Kryptologia przykład metody RSA

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

kryptografię (z gr. κρυπτός oraz γράφω gráfo pisać ), czyli gałąź wiedzy o utajnianiu wiadomości;

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

ŁAMIEMY SZYFR CEZARA. 1. Wstęp. 2. Szyfr Cezara w szkole. Informatyka w Edukacji, XV UMK Toruń, 2018

1. Operacje logiczne A B A OR B

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Arytmetyka komputera

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

Temat: Algorytm kompresji plików metodą Huffmana

Monoalfabetyczny szyfr Beauforta. omnma pvazw hcybn cibcv jzwag vmjha

Luty 2001 Algorytmy (7) 2000/2001

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Szyfry przestawieniowe

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Wstęp do Informatyki

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

RSA. R.L.Rivest A. Shamir L. Adleman. Twórcy algorytmu RSA

Arytmetyka liczb binarnych

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Kod U2 Opracował: Andrzej Nowak

Zarys algorytmów kryptograficznych

Szyfrowanie wiadomości

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Systemy liczbowe używane w technice komputerowej

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Algorytmy podstawieniowe

OCHRONA INFORMACJI W SYSTEMACH I SIECIACH KOMPUTEROWYCH SYMETRYCZNE SZYFRY BLOKOWE

1 Rozwiązanie zadania 1. Szyfr Cezara

Polcode Code Contest PHP-10.09

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

1.1. Pozycyjne systemy liczbowe

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Przepustowość kanału, odczytywanie wiadomości z kanału, poprawa wydajności kanału.

MADE IN CHINA czyli SYSTEM RESZTOWY

Algorytmy i struktury danych. Wykład 4

5. Rozwiązywanie układów równań liniowych

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

3. Macierze i Układy Równań Liniowych

CIĄGI wiadomości podstawowe

Techniki multimedialne

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Rijndael szyfr blokowy

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

Kryptografia szyfrowanie i zabezpieczanie danych

Wybrane zagadnienia teorii liczb

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Ataki kryptograficzne.

1 Układy równań liniowych

WYRAŻENIA ALGEBRAICZNE

1.1. Standard szyfrowania DES

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

1. Maszyny rotorowe Enigma

wagi cyfry pozycje

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Przewodnik użytkownika

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Pomorski Czarodziej 2016 Zadania. Kategoria C

Kompresja bezstratna. Entropia. Kod Huffmana

Szyfr ten w odróżnieniu od prostych szyfrów różni się tym że literę zastępuje się obrazkiem, a nie inną literą.

Szyfrowanie informacji

KRYPTOANALIZA. Opracowanie wewnętrzne Instytutu Informatyki Gliwice, 1999

Spacery losowe generowanie realizacji procesu losowego

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Pracownia Komputerowa wykład VI

Zapis liczb binarnych ze znakiem

Podstawy Informatyki dla Nauczyciela

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Systemy zapisu liczb.

SYSTEMY LICZBOWE 275,538 =

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Bezpieczeństwo danych i przykłady kryptoanalizy prostych szyfrów. Błędy szyfrowania. Typy ataku kryptoanalitycznego

Transkrypt:

Rozdział 2 Systemy kryptograficzne Podstawowym elementem, który odróżnia steganografię od kryptografii jest system kryptograficzny. W tym rozdziale postaramy się przybliżyć pojęcie system kryptograficzny. 2.1 Podstawowe pojęcia Kryptografia dzieli się na kryptografię właściwą, która zajmuje się konstrukcją szyfrów oraz na kryptoanalizę, która zajmuje się łamaniem szyfrów. Z metodami konstrukcji szyfrów związane jest pojęcie kryptosystemu, czyli systemu kryptograficznego. Formalna definicja tego pojęcia nie jest łatwa do zrozumienia. Ograniczymy się tu tylko do wskazania pewnych intuicji. Najpierw sprecyzujemy dwa elementy, które każdy system kryptograficzny powinien posiadać. Od dobrego kryptosystemu wymagamy, żeby był on poufny lub tajny, tj. w razie przechwycenia tekstu przez osobę niepowołaną, osoba ta nie byłaby w stanie odczytać tekstu. autentyczny, tj. adresat nie tylko byłby w stanie przeczytać otrzymaną wiadomość, ale także miałby pewność, że pochodzi ona od osoby, która się pod nią podpisuje. Aby jednak wiadomość mogła być wysłana, najpierw trzeba ją w jakiś sposób napisać. W tym celu używamy alfabetu, który definiujemy jako dowolny zbiór skończony. Liczbę elementów zbioru A (alfabetu) będziemy oznaczać przez A, #A lub A. Do zapisywania wiadomości będziemy używać alfabetu 1

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, który utożsamimy z liczbami 0, 1, 2,..., 25. Jeśli rozważymy inny alfabet, to również jego elementy (litery) utożsamimy z liczbami 0, 1, 2,..., q, gdzie q jest liczbą liter w tym alfabecie. Tego rodzaju utożsamienie pozwala nam wykonywać na literach podstawowe działania arytmetyczne zgodnie z zasadami arytmetyki modularnej. Przyjmijmy, że dana jest liczba m > 1 (zwana modułem). Na zbiorze liczb {0, 1, 2,..., m} definiujemy dodawanie w następujący sposób. Jeśli suma dwóch liczb jest mniejsza od m, to jest to wynik dodawania modularnego. Jeśli suma ta jest większa od m, to wynikiem jest reszta z dzielenia tejże sumy przez m. Podobnie definiujemy odejmowanie i mnożenie. oznacza resztę z dzielenia liczby k przez m. Dodatkowo, k mod m Litery alfabetu można układać w bloki liter. Blok dwuliterowy nazywamy digramem, trzyliterowy trigramem i, ogólnie blok n literowy nazywamy n gramem. Litery i bloki liter układają się w tekst. Szyfrujemy tylko wiadomości, które coś oznaczają, więc nie mogą to być przypadkowe ciągi liter. Konieczna zatem jest decyzja, jakiego języka będziemy używać. W naszym przypadku będzie to głównie język polski, ale z literami łacińskimi. Załóżmy więc, że mamy wybrany konkretny język oraz pewien tekst w tym języku. Tekst ów nazywamy jawnym lub otwartym. Aby go przesłać, szyfrujemy go. Możemy w tym celu użyć jednego alfabetu (szyfry monoalfabetyczne), lub też wielu alfabetów (szyfry polialfabetyczne). Zawsze jednak potrzebne nam jest przekształcenie szyfrujące, czyli funkcja różnowartościowa E. Jeśli p jest tekstem jawnym, to E(p) nazywamy kryptotekstem, lub szyfrem. W dalszej części wykładu będziemy używać synonimów wymienionych wyżej pojęć, które oznaczać będą to samo, jeśli nie zostanie podana inna 2

definicja. Na przykład, słowo,,tekst będziemy stosować zamiennie ze słowem,,wiadomość. Kryptosystemem będziemy nazywać zbiór przekształceń szyfrujących, z których każde powstaje w oparciu o klucz, czyli zasadę lub przepis tworzenia. 3

Rozdział 3 Klasyczne metody szyfrowania Korzenie kryptografii sięgają czasów starożytnego Rzymu. Tam właśnie powstał i był używany pierwszy system kryptograficzny. System ten oraz jego ulepszenia opiszemy w tym rozdziale. 3.1 Szyfry cykliczne Zostały wynalezione, a na pewno używane przez Juliusza Cezara. Mają one bardzo łatwy klucz, ale jednocześnie są łatwe do złamania. Oznaczmy przez p jednostkę tekstu jawnego i załóżmy że tych jednostek jest N. Wtedy funkcja szyfrująca E k jest określona wzorem E k (p) = p + k(mod N). Kluczem jest tu liczba k, którą dodajemy do wartości liczbowej jednostki tekstu jawnego. Jeśli k jest równe 3, to aby zaszyfrować słowo TAK, przekształcamy je w ciąg 19 0 12, następnie dodajemy do każdej z tych liczb 3 modulo 26 otrzymując 24 3 15 i z powrotem przekształcamy liczby na litery by otrzymać WDN. Przekształcenie szyfrujące określone powyżej nazywamy przesunięciem. Wygodnie jest tutaj napisać alfabet, a pod nim liczby odpowiadające poszczególnym literom. 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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Zajmiemy się teraz łamaniem szyfrów cyklicznych. Jeśli wiemy na pewno, że mamy do czynienia z szyfrem cyklicznym i znamy ilość liter w alfabecie 4

(lub możliwych bloków), czyli N, łamanie polega na znalezieniu liczby k. Za k wystarczy podstawić każdą z N możliwości i sprawdzać po kolei sens otrzymanych w ten sposób wiadomości. Na przykład, przypuśćmy, że chcemy rozszyfrować wiadomość xolfd vhcdpnrzd. Wiemy, że N = 26. Sprawdzamy dla k = 1. Ponieważ trudno znaleźć słowo zaczynające się od YPM, podstawiamy k = 2 i podobnie, mamy trudny do wymówienia początek ZQ. Szczęście uśmiecha się do nas dosyć późno, ale na pewno nie później niż za 26 razem. Juliusz Cezar używał klucza 3, ale i tak dowódcy legionów raczej domyślali się treści przysłanych wiadomości niż je odszyfrowywali. Oktawian August używał już tylko kluczy 2 lub 1. 3.2 Szyfr Vigimere a z kluczem długości 2 Dość sporym utrudnieniem szyfru cyklicznego jest wykorzystanie dwóch przesunięć, które przy szyfrowaniu tekstu stosujemy naprzemiennie. Na przykład: 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 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 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 Tekst W Szczecinie pada. szyfrujemy jako ZCCMC OFSQS HZDND. Wszystkich kluczy jest w tym systemie 676, więc ewentualne łamanie metodą wyczerpania zbioru kluczy zajęłoby trochę czasu. Kto złamie szyfr WCCDU EEGSI UPK? 3.3 Permutacje alfabetu Znacznie trudniejsze od wcześniejszych są szyfry, w których każda litera alfabetu jawnego jest zastąpiona literą alfabetu szyfrowego bez stosowania określonej reguły zamiany. Zatem przestrzeń kluczy jest równa zbiorowi wszystkich permutacji (przestawień) alfabetu. W celu ułatwienia zapamiętania przekształcenia szyfrującego stosujemy tu innego rodzaju klucz. Jest to słowo, którego litery zastępują początkowe litery alfabetu jawnego. Dalsze litery dopisujemy tak jak występują one w alfabecie jawnym przy czym 5

pomijamy już wykorzystane znaki. Na przykład stosując klucz,,szyfrowanie dostajemy następujące przekształcenie szyfrujące: 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 S Z Y F R O W A N I E B C D G H J K L M P Q T U V X Opisany powyżej kryptosystem nazywamy permutacyjnym. Jego odmianą jest stosowany w pierwszych maszynach szyfrujących kryptosystem transpozycyjny, tj. taki, który składa się z niezależnych przestawień dwóch liter. Przykładem tu jest następujące przekształcenie szyfrujące: 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 Z C B F R D W K N J H M L I O P T E Y Q X V G U S A Ponieważ szyfry tego rodzaju były zaprogramowane w maszynach jako metody standardowe, nikt nie musiał pamiętać klucza. Zaletą szyfrów transpozycyjnych jest fakt, że klucze szyfrujący i rozszyfrowujący są identyczne. Zatem ta sama maszyna służyła zarówno do szyfrowania jak i do rozszyfrowywania wiadomości. 3.4 Analiza częstości występowania liter Ta metoda łamania szyfrów opiera się na prawach rachunku prawdopodobieństwa. Wiadomo, że pewne litery występują w tekście częściej niż inne. Oto alfabet angielski poukładany według częstości występowania liter: E 12.5%, T, A, O, I, N 9.2-7%, S, R 6%, L, D 4%, C, U, M, F, P, G, W, Y, B 3-1.5%, V, K, X, J, Q, Z 1-0.1%, Jeżeli więc przechwycimy wiadomość na tyle długą (lub na tyle dużo wiadomości), aby wyeliminować przypadkowość, możemy przypuszczać, że najczęściej powtarzająca się litera to zakodowane E, T, A, O, I lub N. Jeżeli mamy do czynienia z kodem cyklicznym, nasze sprawdzanie możliwości dla b ogranicza się do sześciu przypadków. Okazuje się, że na podstawie badania entropii języka, czyli ilości informacji zawartej w jednym symbolu zaszyfrowanego tekstu, można złamać każdy szyfr, który szyfruje tekst angielski mający więcej niż 25 liter. Oczywiście metoda ta nie działa, jeśli przechwytywane wiadomości są krótkie (mają mniej niż 25 liter) i klucz często się zmienia. Na przykład, jeśli 6

przechwycimy tylko xolfd vhcdpnrzd. jak w rozważanym wyżej szyfrze cyklicznym, to nie widać tu, która litera pojawia się najczęściej. Z drugiej strony jednak, jak się okazuje, klucze są bardzo niechętnie zmieniane. Rząd Stanów Zjednoczonych nie zdecydował się na zmianę kluczy nawet po tym, jak wszystkie zginęły w tajemniczej kradzieży w Zagrzebiu na początku drugiej wojny światowej. Kiedy już wiemy, które litery pojawiają się najczęściej, zwracamy uwagę na powtarzające się pary. Na przykład EA jest najczęściej pojawiającym się digramem samogłosek. Dosyć częsty jest też digram IO. Natomiast OI, IA, AI, OA i AO są już znacznie rzadsze. Digram AE nie pojawia się prawie nigdy. Ogólnie, dziesięć najczęstszych digramów w języku angielskim, to TH, HE, AN, IN, ER, RE, ON, ES, TI oraz AT. Dla przykładu spróbujmy rozszyfrować następujący tekst wktqr ziqzd xlzwt lsoet rvozi qfqbo lwktq rziqz olzgg fgxko liofu sqkut fqatr kqveq kkgzl qktqe ethzq wstql yggrg fsnzg ziglt vigso ctofi xzeit ltqut ksnqv qozof utqlz tk Aby ułatwić nieco łamanie, przypuśćmy że wiemy już, iż najczęściej pojawiającą się w tekście jawnym literą nie jest e. Z analizy częstości wynika, że najczęstszymi literami w zaszyfrowanym tekście są q, t, z, g, k, l, o, i i f. Tworzymy teraz tak zwaną tabelę kontaktów: q t z g k l o i f q 0 0 2 0 3 2 1 0 1 t 6 0 0 0 2 2 1 0 1 z 2 1 0 2 0 1 2 4 0 g 0 0 2 2 0 1 0 0 2 k 1 3 0 1 1 0 1 0 0 l 1 2 3 0 0 0 0 1 0 o 0 0 2 0 0 3 0 0 3 i 3 1 0 1 0 0 1 0 0 f 2 0 0 1 0 0 0 1 0 Podaje ona jak często w zaszyfrowanym tekście występują digramy złożone z najczęściej występujących liter. Na przykład digram kq występuje 3 razy (szukamy w tabeli miejsca, gdzie krzyżuje się wiersz k z kolumną q. 7

Wiemy, że q nie jest zaszyfrowanym E. Zgadujemy zatem, że to t odpowiada E. Ponieważ mamy 6 par tq, a t ma być E, więc q odpowiada zapewne A. Trzecią literą z kolei jest Z. Ponieważ T jest jeszcze,,wolne, przyporządkujmy z T. Ponieważ zi pojawia się 4 razy, a iz w ogóle się nie pojawia, przypuszczamy, że i H. Na koniec zauważamy jeszcze, że gg pojawia się dwa razy. Dobrze jest więc postawić, że g to O. Podstawiamy teraz odgadnięte litery do naszego kryptogramu i odgadujemy resztę liter na zasadzie,,co pasuje. Tekstem jawnym jest więc: BREAD THAT MUST BE SLICED WITH AN AX IS A BREAD THAT IS TOO NOURISHING LARGE NAKED CARROTS ARE ACCEPTABLE AS FOOD ONLY TO THOSE WHO LIVE IN HUTCHES EAGERLY AWAITING EASTER. 3.5 Homofony i nulle kiedy przekonano się, że analiza częstości występowania liter jest potężną bronią, zaczęto się zastanawiać, jak utrudnić tę analizę. Nasuwają się tutaj dwie dosyć oczywiste metody. Jedną z nich jest,,dokładanie liter, a drugą zmniejszanie ilości najczęściej powtarzających się znaków. Prowadzi to do dwóch definicji. Nullem nazywamy jednostkę tekstu zaszyfrowanego, której nie odpowiada żadna jednostka tekstu jawnego. Oczywiście, nasze przekształcenie szyfrujące musi być w dalszym ciągu wzajemnie jednoznaczne. Zatem, w praktyce, do alfabetu jawnego dorzucamy,,znak pusty, któremu odpowiada pewien znak w alfabecie zaszyfrowanym. Na przykład 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 s z y f r o w a n i e 3 c d g h j k 4 m p q t u v x b l W powyższym szyfrze, występują dwa nulle: b i l. Wtajemniczeni wiedzą, że po otrzymaniu zaszyfrowanej wiadomości, należy te dwa znaki zignorować. Na przykład zaszyfrowane wiadomości esmsbhp13m1s oraz e1sbmsh1pb3ms oznaczają to samo, a mianowicie wiadomość KATAPULTA. Druga definicja jest następująca: homofonem nazywamy jednostkę tekstu jawnego, której odpowiada więcej niż jedna jednostka tekstu zaszyfrowanego. I tym razem mamy problemy z wieloznacznością funkcji szyfrującej. Problem ten pokonujemy powtarzając elementy w alfabecie jawnym. A oto przykład 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 A A T s z y f r o w a n i e 3 c d g h j k 4 m p q t u v x b 5 l 8

Trzy homofony powyższego alfabetu to A, A i T. Dzięki nim wiadomość KAT- APULTA możemy zaszyfrować tak, że żadna litera alfabetu zaszyfrowanego nie powtarza się: esm5hp31b. Przy układaniu przekształcenia szyfrującego możemy stosować zarówno nulle jak i homofony. Łamanie szyfru jest wtedy jeszcze bardziej utrudnione. Oprócz tych dwóch utrudnień stosowane są też i inne bardziej skomplikowane. Niektóre z nich opiszemy poniżej. 3.6 Jednostki dwuliterowe czyli digramy Digramy jako alfabet po raz pierwszy zastosował niejaki Giovanni Battista Porta w 1563 roku. Alfabet taki składał się z czterystu digramów i do każdego z nich Porta z niebywałą inwencją dobrał pewien szczególny znak. Ogólnie, stosując digramy jako jednostki tekstu jawnego, mamy alfabet złożony z N 2 liter. Jego symbole zastępujemy bądź pojedynczymi znakami, jak to zrobił Porta, bądź też digramami. Nasze przekształcenie szyfrujące przedstawiamy w postaci tabeli, jak na przykład w tabeli Porty. 3.7 Jednostki wieloliterowe Aby złamać kod digramowy możemy stosować analizę częstości występowania jednostek dwuliterowych. Aby metoda ta się powiodła, przechwycony tekst musi być bardzo długi. Jeżeli dla tekstu o jednostkach jednoliterowych potrzebowaliśmy N znaków, aby łamanie się powiodło, to teraz potrzebujemy około N 2 znaków. Dla języka angielskiego jest to już ponad 525 liter. Aby jeszcze bardziej utrudnić łamanie tekstu możemy zastosować trigramy, czyli jednostki trzyliterowe. Pojawia się tu jednak problem odpowiedniego zapisania przekształcenia szyfrującego tabelka musi być trzywymiarowa. Tym gorszy jest ten problem im dłuższe są jednostki tekstu. Prowadzi to w końcu do tworzenia jednostek o różnych długościach, a samymi jednostkami tekstu jawnego są często powtarzające się sekwencje liter. W dalszej perspektywie oznacza to tworzenie swego rodzaju,,słowników zwanych książkami kodowymi. I tu pojawia się kolejny problem. Nikt nie jest w stanie pamiętać całej treści takiej książki. Zatem musi ona zawsze być pod ręką zarówno kodującego jak i dekodującego. Stwarza to duże pole manewru dla szpiegów i nie tylko. W sierpniu 1914 roku niemiecki krążownik Magdeburg próbował 9

uciec od rosyjskiego pancernika i sztuka ta mu się nie udała. Co gorsza, statek zamiast zatonąć, osiadł na mieliźnie i w związku z tym wszystkie książki kodowe niemieckiej marynarki zamiast zatonąć, trafiły w ręce Rosjan, którzy po przestudiowaniu ich,,podali dalej. W rezultacie książki dostały się w ręce niejakiego Winstona Churchilla, który wiedział jak je wykorzystać. 3.8 Szyfr Plaifaira Problem zapamiętania dużej ilości znaków doprowadził w 1854 roku niejakiego Charlesa Wheatstone a do wynalezienia prostej metody zastępowania jednego bloku liter drugim. Litery alfabetu umieszczone są w kwadracie, a blok liter tekstu jawnego tworzy w tym kwadracie przekątną prostokąta. Blok dwuliterowy odczytany z drugiej przekątnej jest odpowiadającym blokiem kryptotekstu. Jeśli litery znajdują się w tym samym wierszu lub w tej samej kolumnie, szyfrowanie jest nieco trudniejsze. Ogólnie po krótkiej praktyce, łatwo jest posługiwać się opisanym szyfrem. Szyfr ten nazwany szyfrem Playfaira, był stosowany przez Anglików od czasów wojny krymskiej aż do końca pierwszej wojny światowej. Wiadomo jednak, że od połowy 1915 roku, Niemcy nie mieli problemów z jego złamaniem. Szyfr ten używa digramów jako jednostek tekstu. Kluczem jest macierz 5 5 zawierająca 25 liter (bez j). Do jej ułożenia użyjemy słowa kluczowego,,szyfrowanie. s z y f r o w a n i e b c d g h k l m p q t u v x Digram (x, y) = (k ij, k mn ), gdzie x y szyfrujemy jako (k in, k mj ) jeśli i m oraz j n; (k i,j+1, k i,n+1 ) jeśli i = m oraz j n; (k i+1,j, k m+1,j ) jeśli i m oraz j = n. (Wskaźniki dodajemy modulo 5.) Jeżeli x = y, digram rozdzielamy, tzn. wtykamy pomiędzy x i y literę q, która jest różna od x i od y. 10

3.9 Szyfry Viginére a i Beauforta Jest pewną ironią, że kryptosystem wynaleziony przez F. Beauforta nosi dziś nazwę szyfru Viginére a i vice versa. Kryptosystem zwany dziś Beauforta został wynaleziony przez B. de Viginére a i w roku 1586 został opisany w książce Traicté des Chiffres. Natomiast szyfr zwany dzisiaj Viginére a został opisany dwa wieki później przez F. Beauforta. Ten ostatni szyfr składa się z r szyfrów cyklicznych stosowanych okresowo. Dokładnie, E = { E k0 k 1...k r : k 0, k 1,..., k r K = Z r q}, przy czym przekształcenie szyfrujące definiujemy jako E k0 k 1...k r (m 0 m 1 m 2... ) = c 0 c 1 c 2..., gdzie c i = (m i + k i mod r ) mod q. Stosując utożsamienie liter alfabetu z liczbami modulo 26 możemy utożsamić klucz jako słowo. Na przykład zaszyfrujmy,,funkcja POLIALFABETY- CZNA stosując klucz,,anulka. W tym celu ułóżmy tabelę przesunięć: 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 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 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 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 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 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 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 Pierwszy wiersz powyższej tabeli to alfabet, a każdy następny wiersz, to alfabet pisany począwszy od odpowiedniej litery słowa klucza. Następnie nasz tekst dzielimy na bloki długości słowa,,anulka i szyfrujemy pierwszą literę każdego bloku według pierwszego szyfru, drugą według drugiego itd. 11

F U N K C J a n u l k a f h h v m j A P O L I A a n u l k a a c i w s a L F A B E T a n u l k a l s u m o t Y C Z N A a n u l k y p t y k Otrzymaliśmy zatem kryptogram fhhvmjaciwsalsumotyptyk. Opiszemy teraz kryptosystem Beauforta. Różnica polega na tym, że alfabet szyfrujący zapisujemy w odwrotnej kolejności. Mamy więc E = { E k0 k 1...k r : k 0, k 1,..., k r K = Z r q}, przy czym przekształcenie szyfrujące definiujemy jako gdzie E k0 k 1...k r (m 0 m 1 m 2... ) = c 0 c 1 c 2..., c i = (m i k i mod r ) mod q. Stosując utożsamienie liter alfabetu z liczbami modulo 26 możemy utożsamić klucz jako słowo. Na przykład zaszyfrujmy,,funkcja POLIALFABETY- CZNA stosując klucz,,anulka. W tym celu ułóżmy tabelę alfabetów szyfrujących: 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 a z y x w v u t s r q p o n m l k j i h g f e d c b n m l k j i h g f e d c b a z y x w v u t s r q p o u t s r q p o n m l k j i h g f e d c b a z y x w v l k j i h g f e d c b a z y x w v u t s r q p o n m k j i h g f e d c b a z y x w v u t s r q p o n m l a z y x w v u t s r q p o n m l k j i h g f e d c b Zaletą tego szyfru jest fakt, że żadne z przkształceń składowych nie jest identycznością. Następnie nasz tekst dzielimy na bloki długości słowa,,anulka i szyfrujemy pierwszą literę każdego bloku według pierwszego szyfru, drugą według drugiego itd. 12

F U N K C J a n u l k a v t h b i r A P O L I A a n u l k a a y g a c a L F A B E T a n u l k a p i u k g h Y C Z N A a n u l k c l v y k Otrzymaliśmy zatem kryptogram vthbiraygacapiukghclvyk. Jako przekształcenia szyfrowe, możemy stosować tu także inne szyfry niż wykorzystane powyżej. Idea szyfrów Viginére a została użyta w ENIG- MIE, gdzie zastosowano kilkaset tysięcy szyfrów transpozycyjnych jako szyfry składowe. W każdym razie, aby złamać szyfr Viginére a długości r potrzebujemy tekstu (angielskiego) długości przynajmniej 25r. Wynika to stąd, że stosujemy analizę częstości występowania liter dla co r tej litery tekstu i, co gorsza, tworzenie tabeli kontaktów jest bardziej skomplikowane. Głównym problemem jest tutaj jednak znalezienie r. I to jest zapewne główna przyczyna, dla której szyfr Viginére a był,,niełamalny przez prawie trzysta lat! Dopiero w 1863 roku, oficer armii pruskiej, F. W. Kasiski wynalazł metodę wypadkowej przypadkowości 1, której nie opiszemy z uwagi na zbyt skomplikowany aparat statystyczny. 3.10 Łańcuch szyfrów i DES Dość istotną wadą schematu opisanego w poprzednim paragrafie, jest fakt, że ten sam tekst szyfruje się tak samo, jeśli użyty jest ten sam klucz. Chodzi o to, że potencjalny intruz wcale nie musi znać tekstu jawnego, by wymusić na odbiorcy szyfru określone działanie wystarczy, że prześle mu przechwycony wcześniej (zaszyfrowany) tekst. Ponieważ intruz wie jaka reakcja była wcześniej, podejrzewa, że taka sama będzie i tym razem. Jednym ze sposobów ominięcia tej niedogodności jest zastosowanie Łańcuch szyfrów 1. Pomysł jest następujący: Dzielimy tekst jawny (zakodowany w strumień bitów) na bloki M i po n bitów. Potrzebny jest inicjujący wektor zero-jedynkowy C 0 o n bitach oraz 1 ang. the incidence of coincidences 1 ang. cipherblock chaining 13

klucz K tej samej długości. Pierwszy blok tekstu jawnego szyfrujemy jako C 1 = M 1 C 0 K, drugi jako C 2 = M 2 C 1 K, i tak dalej. Ogólnie, C j = M j C j 1 K. W celu rozszyfrowania, dzielimy tekst zaszyfrowany na n-bitowe kawałki C i i otrzymujemy kolejno M 1 = C 1 C 0 K, następnie, M 2 = C 2 C 1 K itd. Jeśli któryś z C i jest błędny, to otrzymujemy błąd w co najwyżej dwóch kawałkach tekstu jawnego, mianowicie M i oraz M i+1. Wektor C 0 musi być przesłany innym kanałem niż wiadomość jawna i klucz. Przy odpowiednio dużym n istnieje bardzo mała szansa, że wiadomość, klucz i wektor inicjujący powtórzą się. Łańcuch szyfrów jest wykorzystany w systemie DES 1, który był używany od 1977 roku do końca lat osiemdzisiątych. W 1974 roku, National Bureau of Standards zobowiazało firmy amerykańskie do napisania programu szyfrującego, który będzie standardem w kodowaniu wiadomości rządowych. Miał on zastapić niewygodne w użyciu książki kodowe. Odpowiedzią firmy IBM był system LUCIFER, który po uproszczeniu i modyfikacji stał się standardem. Program szyfrujący został rozpowszechniony w postaci kości, którą każdy zainteresowany mógł wmontować w swój komputer. Rozszyfrowywanie polegało na użyciu tej samej kości. Opiszemy teraz zasadę działania algorytmu DES. Wejściowe 64 bity są najpierw pomieszane przez początkową permutację IP. Pierwsze 32 bity tworzą wektor L 0, a następne 32 tworzą R 0. Po szesnastu rundach manipulacji, wektory lewy i prawy łączą się w całość i przechodzą przez permutację IP 1 generując ostateczną wersję szyfru. Podczas 16 rund szyfrowania tworzą się kolejno wektory L 1, L 2,..., L 16 oraz R 1, R 2,..., R 16. Dla 1 i 16, mamy L i = R i 1, R i = L i 1 f(r i 1, K i ), gdzie f(r i 1, K i ) jest wektorem dwójkowym o 32 współrzędnych, a wektory K i są 48-bitowymi wektorami generowanymi przez klucz K według procedury, którą opiszemy później. Dekodowanie odbywa się w odwrotną stronę, tj. najpierw zaszyfrowany tekst jest poddawany permutacji IP 1, tworzą się L 16 i R 16, a następnie obliczane są kolejno R 15 = L 16, L 15 = R 16 f(r 15, K 16 )..., R 0 = L 1, L 0 = R 1 f(r 0, K 1 ). 1 Data Encryption Standard 14

32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 Rysunek 3.1: Tabela selekcji bitów Połączony wektor L 0 R 0 jest poddany permutacji IP i powstaje ciąg 64 bitów wiadomości jawnej. Wartością funkcji f jest 32-bitowy ciąg. Procedura jego powstawania wygląda następująco. Jak już wspominaliśmy, K i ma 48 bitów, a R i 1-32 bity. Aby te wektory dodać, musimy rozszerzyć R i 1 do 48 bitów. Rozszerzenie R i 1 odbywa się według Tabeli selekcji bitów. Powstały 48-bitowy strumień jest podzielony na 8 wektorow 6-bitowych, które są przepuszczone przez S-boksy (Tabela S-boksów). Aby przybliżyć metodę działania S- boksów, rozważmy wektor sześciobitowy a 1 a 2 a 3 a 4 a 5 a 6, na przykład 010011, który trafia na S 4. Bity a 1 a 6 to numer wiersza (i), a a 2 a 3 a 4 a 5 to numer kolumny (j) zapisane w układzie dwójkowym. Strumień wyjściowy (w układzie dziesiętnym) jest na pozycji (i, j) S-boksa. W naszym przypadku, 01 2 = 1 oraz 1001 2 = 9 i w S 4 znajduje się na pozycji (1, 9) liczba 7 = 0111 2. Zatem strumieniem wyjściowym jest 0111. Po wyjściu z S-boksów, strumienie 4-bitowe łączą się tworząc 32-bitowy wektor, który dodatkowo przechodzi przez permutację P. Klucz K ma 64 bity podzielone na 8-bitowe części, z których każda ma 7 efektywnych bitów, a ósmy bit sprawdza parzystość. Dokładnie, jest on ustalony tak, by w całej ósemce liczba jedynek była parzysta. W przypadku, gdyby wystąpił błąd w transmisji klucza, zostaje on wykryty z dokładnym wskazaniem ósemki, w której wystąpił. Z 64 bitów klucza, po sprawdzeniu poprawności, 8 bitów sprawdzających jest odrzuconych, a pozostałe 56 bitów przechodzi przez permutację początkową P C1. Spermutowany strumień 56 bitów jest podzielony na pół. Pierwsze 28 bitów tworzy wektor C 0, a następne D 0. Wektory C 1 i D 1 powstają przez (cykliczne) przesunięcie zawartości C 0, odpowiednio, D 0 o LS 1 = 1 pozycji w lewo. Ogólnie, C i oraz D i powstają przez przesunięcie zawartości, odpowiednio, C i 1, D i 1 o LS i pozycji w lewo. 15

kolumna 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 wiersz 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 S 1 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 1 3 13 4 7 1 2 8 14 12 0 1 10 6 9 11 5 S 2 2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 1 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 S 3 2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 S 4 2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 S 5 2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 S 6 2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 S 7 2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 S 8 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 Rysunek 3.2: Tabela S-boksów 16

Wektory C i oraz D i są następnie łączone i po przejściu selekcji P C 2 tworzą 48-bitowy strumień K i. Główne zarzuty wobec DES, to, po pierwsze, zbyt krótki klucz, co powoduje, że może on być znaleziony w miarę szybko metodą sprawdzenia wszystkich 2 56 możliwości. Po drugie, nie wiadomo, jakie kryteria kierowały konstruktorami S-boksów. Testy statystyczne pokazują, że liczby w S-boksach nie są przypadkowe. Niewykluczone, że kryje się tu pewna furtka pozwalająca łatwo rozszyfrować zakodowaną wiadomość. Mimo swoich wad DES był dość długo używany, aż w końcu ustąpił on miejsca kryptosystemom o kluczu publicznym. Rozpowszechnienie szybkich, łatwo programowalnych komputerów doprowadziło do sytuacji, w której kość szyfrująca okazała się zbędna: Po co montować do komputera dodatkowe urządzenie, jeśli można napoisać program, który powoduje takie samo działanie, a jeszcze dodatkowo można go w każdej chwili ulepszyć. 17