Złam szyfr i odkryj tajemnicę



Podobne dokumenty
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

Zarys algorytmów kryptograficznych

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

Algorytmy podstawieniowe

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Algorytmy podstawieniowe

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

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

2 Kryptografia: algorytmy symetryczne

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

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

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

Laboratorium nr 1 Szyfrowanie i kontrola integralności

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

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

KRYPTOANALIZA. Opracowanie wewnętrzne Instytutu Informatyki Gliwice, 1999

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Szyfrowanie informacji

Bezpieczeństwo danych, zabezpieczanie safety, security

Bezpieczeństwo kart elektronicznych

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

Zastosowania informatyki w gospodarce Wykład 5

Spis treści. Przedmowa... 9

Systemy liczenia. 333= 3*100+3*10+3*1

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Authenticated Encryption

Kryptografia szyfrowanie i zabezpieczanie danych

Algorytmy asymetryczne

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 1

Przewodnik użytkownika

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

Kryptografia systemy z kluczem tajnym. Kryptografia systemy z kluczem tajnym

Laboratorium nr 5 Podpis elektroniczny i certyfikaty

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

Scenariusz lekcji. wymienić różnice pomiędzy kryptologią, kryptografią i kryptoanalizą;

Liczby półpierwsze (Semiprimes)

1.1. Standard szyfrowania DES

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

Tajna wiadomość. Scenariusz lekcji

Rachunek prawdopodobieństwa projekt Ilustracja metody Monte Carlo obliczania całek oznaczonych

Algorytmy i struktury danych

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski

Wasze dane takie jak: numery kart kredytowych, identyfikatory sieciowe. kradzieŝy! Jak się przed nią bronić?

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

Sieci komputerowe. Wykład 9: Elementy kryptografii. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Ćwiczenie nr 1: Systemy liczbowe

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

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

Ochrona Systemów Informacyjnych. Elementy Kryptoanalizy

Opis efektów kształcenia dla modułu zajęć

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Zadanie 4.3. (0 5) Błąd bezwzględny przybliżonej wartości liczby pi, wyznaczonej z n punktów, definiujemy następująco:

Bezpieczeństwo w Internecie

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Ataki na algorytm RSA

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Sieci komputerowe. Wykład 11: Kodowanie i szyfrowanie. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

PRZEWODNIK PO PRZEDMIOCIE

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

Temat: Algorytm kompresji plików metodą Huffmana

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

Szyfrowanie wiadomości

1. Maszyny rotorowe Enigma

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.

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

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

Kodowanie i szyfrowanie na lekcjach matematyki. Częstochowa, r.

Bezpieczeństwo systemów komputerowych

Laboratorium kryptograficzne dla licealistów 4

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

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.

Copyright by K. Trybicka-Francik 1

Parametry systemów klucza publicznego

Nowe narzędzia ICT. Do czego więc można wykorzystać ową kryptografię?

Marcin Szeliga Dane

BSK. Copyright by Katarzyna Trybicka-Fancik 1. Bezpieczeństwo systemów komputerowych. Podpis cyfrowy. Podpisy cyfrowe i inne protokoły pośrednie

Szyfrowanie RSA (Podróż do krainy kryptografii)

Bezpieczeństwo danych i systemów informatycznych. Wykład 5

Estymacja kosztów łamania systemu kryptograficznego

Bezpieczeństwo teleinformatyczne

Copyright by K. Trybicka-Francik 1

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

(mniejszych od 10 9 ) podanych przez użytkownika, wypisze komunikat TAK, jeśli są to liczby bliźniacze i NIE, w przeciwnym przypadku.

Statystyka hydrologiczna i prawdopodobieństwo zjawisk hydrologicznych.

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

Zaawansowane algorytmy i struktury danych

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

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Technologia informacyjna

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

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

Podpis elektroniczny

Transkrypt:

Złam szyfr i odkryj tajemnicę Krzysztof Maćkowiak www.centrum.bezpieczenstwa.pl Od wieków toczy się walka pomiędzy twórcami szyfrów a tymi, których zadaniem jest ich łamanie. W ten sposób powstała dziedzina wiedzy i badań zwana kryptoanalizą, która zajmuje się metodami łamania szyfrów. Szyfry odgrywały znaczącą rolę w konfliktach zbrojnych a odkrycie tajemnicy decydowało w wielu przypadkach o przebiegu wojen i losach imperiów. Przykładem z historii I wojny światowej moŝe być odszyfrowanie telegramu Zimmermanna, w którym to Niemcy proponują Meksykowi przymierze w przypadku, gdyby Stany Zjednoczone nie utrzymały neutralności. Odszyfrowany telegram przyczynił się do podjęcia decyzji o zaangaŝowaniu się Stanów Zjednoczonych w wojnę. Szyfry wykorzystywane były takŝe do mniej znaczących spraw np. w słynnym dziele Kamasutra zaleca się kobietom poznanie 64 sztuk, takich jak gotowanie, ubieranie się, masaŝ, przygotowanie perfum, wróŝbiarstwo, introligatorstwo, stolarka a takŝe jako pozycja numer 45 -- mlecchita-vikalpa, czyli sztuka posługiwania się tajnym pismem, która miała pomóc kobietom w ukrywaniu swoich związków. Mając wgląd w historię metody skutecznego ukrywania danych oraz sposoby ich łamania były na wagę złota. Wiele państw, w tym takŝe Watykan, tworzyło specjalne zespoły kryptologów zwane tajnymi kancelariami. W VIII/IX wieku, kiedy to Europa tkwiła w intelektualnych ciemnościach, uczeni arabscy wynaleźli metodę łamania monoalfabetycznego szyfru podstawieniowego, polegającego na zastępowaniu poszczególnych liter innymi znakami lub symbolami zgodnie z określoną zasadą lub stworzoną tablicą podstawieniową. Szyfr ten wydawał się być wystarczający do ukrywania tajemnicy. To właśnie tam szukać naleŝy początku tej fascynującej dziedziny nauki jaką jest kryptoanaliza. Arabowie odkryli metodę częstości występowania poszczególnych liter w szyfrogramie (zostanie ona omówiona w dalszej części artykułu), dzięki rozwojowi w takich dziedzinach nauki jak matematyka, statystyka oraz lingwistyka. Szyfry historyczne Bezpieczeństwo szyfrów historycznych jest z reguły niskie. W większości przypadków z wykorzystaniem komputerów szyfrogramy mogą zostać odszyfrowane w czasie krótszym niŝ 1 sekunda. Najprostsze monoalfabetyczne szyfry podstawieniowe jak np. szyfr Cezara, powstają przez zamianę kaŝdej litery alfabetu na inną, która w alfabecie połoŝona jest o określoną liczbę miejsc dalej. Przykładowo Cezar w swoim szyfrze zamieniał literę A na D, B na E itd. (przesunięcie o 3 pozycje). W celu odszyfrowania tekstu wystarczy przesunąć kaŝdą literę o trzy pozycje w lewo (lub dla alfabetu o długości 26 o 23 (26-3) pozycje w prawo). Choć szyfr jest bardzo prosty do złamania stosowany był jeszcze w 1915 roku w armii rosyjskiej, gdyŝ tylko tak prosty szyfr wydawał się być zrozumiały dla sztabowców. Następca Cezara -- Oktawian August -- był jeszcze bardziej leniwy i stosował przesunięcie zaledwie o 1 pozycję w alfabecie. NaleŜy zwrócić uwagę, Ŝe wielokrotne wykonanie szyfrowania w tym przypadku nie zwiększa bezpieczeństwa. Gdy zaszyfrujemy tekst jawny z przesunięciem o 3 a następnie wynik ponownie zaszyfrujemy z przesunięciem o 5 to otrzymamy identyczny tekst tajny, jaki powstaje przez zaszyfrowanie tekstu jawnego z przesunięciem o 8. Ogólna metoda łamania tego typu szyfrów polega na zamianie kaŝdej litery w kolejnych krokach o wszystkie moŝliwe pozycje. Następnie z otrzymanego zbioru tekstów wyszukujemy ten, który ma sens. W ten sposób moŝemy odszyfrować szyfrogramy, które powstały z wykorzystaniem szyfrów: Cezara czy ROT-13. Atak taki nazywamy atakiem brutalnym, gdyŝ polega on na przeszukaniu całej przestrzeni klucza. W przypadku tak prostego szyfru mamy do sprawdzenia zaledwie 25 moŝliwości (dla alfabetu składającego się z 26 liter). Prosty algorytm

prezentujący atak brutalny przedstawiony jest na Listungu 1. Listing 1. Kryptoanaliza prostych szyfrów podstawieniowych. #include <stdio.h> #include <iostream.h> #include <math.h> void main() FILE *we, *wy; char c; //znak odczytany z pliku char plainfile[20]; //nazwa pliku z tekstem jawnym char cipherfile[20]; //nazwa pliku z tekstem zaszyfrownym int offset; //wartosc przesuniecia cout<<"podaj nazwe pliku zawierajacego tekst zaszyfrowany: "; cin>>cipherfile; cout<<"podaj nazwe pliku,w ktorym zapisany ma byc tekst odszyfrowany: " ; cin>>plainfile; if((wy=fopen(plainfile,"wb"))!=null) //otwieranie pliku do zapisu for (offset=1;offset<27;offset++) if((we=fopen(cipherfile,"rb"))!=null) //otwieranie pliku do odczytu while((c=getc(we))!=eof) //Kazdy odczytywany znak wg kodów ASCII naleŝy do jednej z 3 grup:duŝe litery, małe litery, cyfry if ((c>=65)&&(c<=90)) c-=65; c-=offset; if (c<0) c=26-fabs(c); c+=65; putc(c,wy); else if ((c>=97)&&(c<=122)) c-=97; c-=offset; if (c<0) c=26-fabs(c); c+=97; putc(c,wy); else if ((c>=48)&&(c<=57)) c-=48; if (offset<=10) c-=offset; else if (offset<=20) offset-=10; c-=offset; else offset-=20; c-=offset; if (c<0) c=10-fabs(c); c+=48; putc(c,wy);

c=*"endl"; putc(c,wy); fclose(we); fclose(wy); cout<<"deszyfrowanie zostalo zakonczone"; return; W przypadku współczesnych algorytmów atak taki jest z reguły nieskuteczny, gdyŝ zakładając odpowiednią długość klucza, nie jesteśmy w stanie korzystając z dostępnych zasobów komputerowych i czasowych, złamać takich algorytmów, próbując wszystkich moŝliwych kombinacji klucza. Algorytmy takie nazywamy bezpiecznymi obliczeniowo. JuŜ dla prostego szyfru podstawieniowego, gdzie kaŝdą literę zamieniamy na inną, zgodnie z przygotowaną tablicą (nie występuje tutaj zasada, Ŝe litera leŝy o określoną pozycję dalej w alfabecie) ilość moŝliwości wynosi 26! czyli około 403291461126605635584000000, co stanowi 10 rzędów wielkości więcej niŝ zakres kluczy algorytmu DES. Arabscy naukowcy odkryli inny sposób łamania szyfrów podstawieniowych, bez sprawdzania wszystkich moŝliwych kombinacji, metoda ta zwana jest analizą częstości występowania poszczególnych liter. Analiza częstości występowania poszczególnych liter Metoda ta nadaje się do kryptoanalizy monoalfabetycznych szyfrów podstawieniowych. Między innymi do łamania takich algorytmów jak szyfr Cezara czy ROT-13, ale nie tylko. Do szyfrów monoalfabetycznych zaliczamy równieŝ szyfry, w których poszczególne litery zamieniane były na inne znaki, symbole i litery zgodnie z określoną tablicą podstawieniową, która była podstawą bezpieczeństwa tych algorytmów i musiała pozostać w tajemnicy a jednocześnie musiała być znana obu stroną biorącym udział w przesyłaniu szyfrogramu. Metoda ta wykorzystuje fakt, Ŝe w kaŝdym języku róŝne znaki występują z róŝną charakterystyczną dla siebie częstotliwością. Wiadomo, Ŝe w języku polskim częściej występuje np. litera a niŝ ź i tak dalej. Podstawą tej metody jest tabela częstości, która powstaje poprzez przeanalizowanie reprezentacyjnej próbki tekstów w wybranym języku, zliczenie ilości występowania kaŝdego znaku i podzieleniu tej liczby przez ilość wszystkich znaków w tekście. Podobnie postępujemy z tekstem zaszyfrowanym -- zliczamy ilość wystąpień poszczególnych znaków, symbolów i tworzymy drugą tabelę częstości, tym razem dla tekstu zaszyfrowanego. W celu obliczenia statystyk występowania poszczególnych znaków w tekście moŝna skorzystać z programu dostępnego pod adresem http://www.wiw.pl/modelowanie/prog/poe/zip/poe.zip lub teŝ oprogramowania CrypTool, prezentowanego w dalszej części artykułu. W ostatnim kroku porównujemy dwie tabele i na podstawie analizy określamy jakie litery tekstu jawnego mogą odpowiadać znakom, symbolom w tekście zaszyfrowanym. Najczęściej wnioskujemy 3 lub 4 znaki i dokonujemy ich zastąpienia w tekście zaszyfrowanym. Czytając taki zmodyfikowany tekst zaszyfrowany próbujemy znaleźć słowa, gdzie brakuje niewielu liter i na podstawie dedukcji odkrywamy kolejne odpowiedniki znaków. W tej drugiej fazie z pomocą mogą nam przyjść programy pisane z myślą o krzyŝówkowiczach (http://republika.pl/programyaionela/, http://www.crosswordman.com/tea.html, http://www.mopsik.pl/). Tekst zaszyfrowany w tym przypadku powinien być dość długi, gdyŝ przy krótkich tekstach moŝe się zdarzyć, Ŝe nie zostanie zachowana charakterystyka języka naturalnego. Podobnie postępujemy w przypadku szyfrów przestawieniowych, czyli takich w których wszystkie znaki tekstu jawnego występują w niezmienionej formie w szyfrogramie, tylko w innej kolejności. Przykładowo mamy jakąś figurę i wpisujemy do niej tekst wierszami a następnie odczytujemy kolumnami i w ten prosty sposób otrzymujemy tekst zaszyfrowany. W przypadku takich szyfrów zamiast analizy częstości występowania poszczególnych liter, zliczamy ilość występowania digramów (par liter) lub trigramów (trójek liter). Podobnie jak w przypadku pojedynczych liter tworzymy tablicę rozkładu częstotliwości dla zwykłego tekstu i tekstu zaszyfrowanego a następnie

dokonujemy porównań i wnioskujemy w jaki sposób została zamieniona kolejność znaków względem tekstu jawnego. Bardziej zaawansowaną metodą dla szyfrów podstawieniowych jest algorytm relaksacyjny. Metoda ta polega na wyznaczeniu dla kaŝdej litery tekstu jawnego x oraz kryptogramu y prawdopodobieństwa P[f(x)=y]. Tak obliczone prawdopodobieństwa są następnie iteracyjnie aktualizowane na podstawie częstości występowania trigramów. Mimo znanych metod kryptoanalizy proste szyfry monoalfabetyczne stosowano do utajnienia tekstów tajnych i poufnych przez wiele wieków. Jeszcze w czasie II wojny światowej szyfry te były wykorzystywane (czasami z elementami szyfrów homofonicznych), takŝe przez AK na terenach polskich. W celu uniemoŝliwienia zastosowania tych metod stworzono szyfry homofoniczne. Ich głównym celem jest zatarcie informacji związanej z częstością wystąpienia poszczególnych znaków. W szyfrach tych litery, które w danym języku występują częściej zastępowane są przez kilka odpowiedników. Ilość znaków odpowiadających literom tekstu jawnego ściśle związana jest z tablicą częstości występowania poszczególnych liter. W ten sposób kaŝdy znak tekstu zaszyfrowanego powinien występować tyle samo razy. Szyfry wieloalfabetowe Utrudnieniem dla kryptoanalityka moŝe być zastosowanie kilku alfabetów w procesie szyfrowania. Przykładowo zamiast stosować przesunięcia o trzy pozycje moŝemy wykonywać na zmianę przesunięcia np. o dwie i sześć pozycji. W ten sposób analizowanie częstości występowania poszczególnych liter dla całego tekstu nie da poŝądanych efektów. NaleŜy zauwaŝyć jednak, Ŝe zastosowanie metody częstości osobno dla znaków nieparzystych (przesunięcie o dwie pozycje) oraz parzystych (przesunięcie o sześć pozycji) da nam moŝliwość odszyfrowania tekstu. Dla utrudnienia moŝemy korzystać z wielu alfabetów a ich wybór i kolejność określić przez hasło. Przykładowo stosując hasło DOM stosujemy kolejno przesunięcie o 3, 14 oraz 12 pozycji. Na takiej podstawie działa szyfr Vigenera stworzony w XVI wieku przez Blaise de Vigenera. Przez ponad 300 lat uchodził on za szyfr niemoŝliwy do złamania. Jednak w roku 1863 oficer armii pruskiej Friedrich Kasisky dokonał jego udanej kryptoanalizy. Głównym problemem jest w tym przypadku odkrycie długości zastosowanego klucza (ilości róŝnych alfabetów -- przesunięć). Znając tą długość moŝemy zastosować metodę częstości występowania poszczególnych liter dla znaków szyfrogramu powstałych poprzez przesunięcie o taką samą ilość miejsc -- przykładowo dla hasła o długości 3 te same przesunięcie będą miały znaki 1,4,7,...; 2,5,8,...; 3,6,9,... Metoda Kasiskiego analizuje powtórzenia tych samych ciągów znaków. W kaŝdym języku naturalnym występują charakterystyczne trójki, czwórki znaków -- dla języka angielskiego moŝe to być słowo the, dla języka polskiego końcówki -anie lub czwórka szcz. W przypadku, gdy dwa takie same ciągi znajdują się między sobą w odległości równej długości klucza, kaŝda z liter w obu tych ciągach będzie przesuwana o tą samą pozycję i w szyfrogramie będą one miały taką samą postać i takie same połoŝenia. Kasisky zauwaŝył tą zaleŝność i na tej podstawie złamał szyfr wieloalfabetowy. Chcąc skorzystać z metody Kasiskiego w pierwszej kolejności wyszukujemy w tekście zaszyfrowanym powtarzające się ciągi znaków a następnie analizujemy odstępy między takimi samymi ciągami. Przykładowo w tekście znaleźliśmy 7 wystąpień trójki fad a odstępy między nimi wynoszą odpowiednio 24, 12, 20, 16, 35, 44 i 92. MoŜemy zauwaŝyć, Ŝe sześć z siedmiu wartości, reprezentujących długość odstępu, podzielnych jest przez 4 -- zatem moŝemy przyjąć, Ŝe długość klucza wynosi 4 lub 2. Wartość 35 mogła być związana z przypadkowym zaszyfrowaniem innego tekstu z innymi przesunięciami i w ten sposób otrzymaliśmy ten sam tekst zaszyfrowany. Inną metodą wyznaczającą długość hasła dla szyfrów polialfabetycznych jest indeks koincydencji. Metoda ta zaproponowana została przez Williama Friedmana w 1920 roku. Polega na obliczeniu wartości indeksu koincydencji dla tekstu według zadanego wzoru:

IC= B F F 1 N N1 F - liczba wystąpień litery β z alfabetu B w tekście o długości N. Zgodnie ze wzorem obliczamy liczbę wystąpień wszystkich znaków, zliczamy długość tekstu i podstawiamy do wzoru, otrzymując wartość indeksu koincydencji (IC). Następnie korzystając z Tabeli 1. określamy długość zastosowanego hasła. Tabela 1. Odwzorowanie wartości indeksu na długość zastosowanego hasła. Długość IC 1 0,066 2 0,052 3 0,047 4 0,045 5 0,044 10 0,041 bardzo duŝe 0,038 Przykładowo, gdy otrzymamy wartość indeksu zbliŝoną do 0,06 moŝemy przypuszczać, Ŝe długość hasła (ilość zastosowanych alfabetów) wynosi 1 czyli zastosowano prosty szyfr monoalfabetyczny. W literaturze moŝemy znaleźć równieŝ inną postać tej metody. Polega ona na zliczaniu ilości znaków pokrywających się w obu tekstach. Teksty przesuwamy względem siebie o kolejne pozycje i zliczamy liczbę pokrywających się znaków. Po przesunięciu tekstów o wielokrotną długość klucza, uzyskujemy największą liczbę pokrywających się znaków. Dla dłuŝszych tekstów ilość pokrywających się znaków powinna wynosić w przypadku języka angielskiego około 6,5-6,9%. Przykładowo na Rysunku 1. widoczny jest wykres przedstawiający ilości pokrywających się znaków w stosunku do przesunięcia tekstów względem siebie. Dwa zdania z tego artykułu zostały zaszyfrowane algorytmem Vigenera z kluczem KOD. Jak widać na wykresie wartości największe otrzymaliśmy dla przesunięcia będącego wielokrotnością liczby 3, czyli zgodnie z naszymi oczekiwaniami. Rysunek 1. Indeks koincydencji.

Innym rodzajem szyfrów, które utrudniają korzystanie z analizy częstości występowania poszczególnych liter są szyfry poligramowe. Zasada ich działania polega na szyfrowaniu jednocześnie większej grupy liter. Przykładami takich szyfrów są szyfr Palyfaira oraz Hilla. Stosując algorytmy historyczne zaleca się usuwanie spacji oraz powtarzających się po sobie tych samych liter (ironii->ironi). NaleŜy wystrzegać się równieŝ imion, nazw oraz charakterystycznych zwrotów, gdyŝ posiadając informację np. o autorze listu, który chcemy odszyfrować -- niech będzie to Marek, moŝemy załoŝyć, Ŝe list będzie kończył się zwrotem Twój Marek lub Pozdrawiam Marek, co bardzo ułatwia zadanie kryptoanalitykowi. CrypTool -- narzędzie dla kryptoanalityka CrypTool to darmowe oprogramowanie stworzone w celu nauki algorytmów kryptograficznych i metod kryptoanalizy. Oprogramowanie dostępne jest w Internecie pod adresem www.cryptool.org a takŝe umieszczone zostało na płycie dołączonej do czasopisma. Zaimplementowano w nim wiele przydatnych algorytmów kryptograficznych umoŝliwiających: szyfrowanie tekstu prostymi algorytmami podstawieniowymi i przestawieniowymi m.in. Cezara, Vigenera, Hilla, Playfaira, Xor, Vernama, szyfrowanie tekstu z uŝyciem algorytmów symetrycznych: IDEA, RC2, RC4, DES (ECB), DES (CBC), 3DES, MARS, RC6, Rijndael (AES), Serpent, Twofish, szyfrowanie plików za pomocą algorytmu AES, generowanie kluczy dla algorytmu RSA, szyfrowanie asymetryczne algorytmem RSA, podpisywanie oraz weryfikacja wiadomości (RSA, DSA, EC-DSA, EC-NR), obliczanie skrótu z zadanego tekstu lub pliku (MD2, MD4, MD5, SHA, SHA-1, RIPEMD-160), generowanie klucza z hasła (MD2, MD5, SHA-1), generowanie liczb pseudolosowych, wykonanie kilku testów statystycznych. MoŜemy takŝe przyjrzeć się dokładnie jak wygląda proces szyfrowania danych w Internecie z wykorzystaniem klucza publicznego. W pierwszej kolejności wybieramy dokument, który chcemy zaszyfrować, następnie generujemy klucz sesji (dla algorytmu symetrycznego) a następnie szyfrujemy tym kluczem nasz plik. W kolejnym kroku naleŝy zaszyfrować klucz sesyjny za pomocą algorytmu asymetrycznego (z kluczem publicznym odbiorcy) i przesłać zaszyfrowaną wiadomość wraz z zaszyfrowanym kluczem sesyjnym. Wszystkie etapy widoczne są na Rysunku 2.

Rysunek 2. Szyfrowanie hybrydowe. Podobnie krok po kroku prześledzić moŝemy proces wymiany klucza z wykorzystaniem algorytmu Diffiego-Hellmana, co zaprezentowane zostało na Rysunku 3. Rysunek 3. Algorytm Diffiego-Hellmana.

Na szczególną uwagę zasługuje prezentacja najpopularniejszego algorytmu asymetrycznego RSA. MoŜemy w pierwszej kolejności wygenerować liczby pierwsze z określonego przedziału wykorzystywane w algorytmie. Następnie krok po kroku obliczane są kolejne parametry algorytmu RSA. Dodatkowo moŝemy prześledzić cały proces generowania podpisu cyfrowego dla wybranego dokumentu, obejmującego etap wyboru dokumentu, obliczania skrótu z dokumentu, generowania kluczy dla RSA, szyfrowania skrótu, wystawienie certyfikatu dla klucza (Rysunek 4.). Rysunek 4. Podpis cyfrowy. Chciałbyś się skupić jednak na duŝych moŝliwościach kryptoanalitycznych tego narzędzia. UmoŜliwia ono dokonanie większości opisanych powyŝej ataków na szyfry historyczne. Pierwszym etapem kryptoanalizy jest zebranie statystycznych danych na temat szyfrogramu takich jak: entropia szyfrogramu -- ilość informacji zawartych w wiadomości, określona jako minimalną liczba bitów potrzebnych do zapisania wszystkich moŝliwych znaczeń tej wiadomości, przykładowo wiadomość oznaczająca płeć równa jest 1 bitowi (0,1 -- męska, Ŝeńska), w tym przypadku mówimy o maksymalnej entropii poszczególnych znaków alfabetu (co jest jednoznaczne z bezwzględną zawartość informacyjną czyli maksymalną liczbą bitów, które mogą być przyporządkowane kaŝdemu znakowi) -- wartość ta określana jest jako log 2 N, gdzie N stanowi liczbę znaków występujących w danym alfabecie i tak dla alfabetu angielskiego wartość ta wynosi 4,7 bitu/literę. histogram -- ilość wystąpień poszczególnych znaków, częstość występowania digramów, trigramów oraz ciągów o dłuŝszej zadanej długości, autokorelacja -- indeks koincydencji -- ilość pokrywających się znaków przy określonym przesunięciu (Rysunek 1),

MoŜemy przeprowadzić całkowitą analizę dla szyfrów Cezara (z dowolnym przesunięciem), Vigenera, Hilla oraz algorytmów podstawieniowych. Dla algorytmu Cezara z dowolnym przesunięciem nie są sprawdzane wszystkie moŝliwości, lecz obliczana jest statystyka częstości występowania poszczególnych znaków, następnie obliczana jest statystyka dla reprezentacyjnego tekstu w danym języku i w wyniku porównania proponowana jest wartość przesunięcia i tekst jest deszyfrowany. Dla szyfru Vigenera w pierwszej kolejności określana jest długość zastosowanego hasła a następnie postać hasła. Dla kilku przykładowych tekstów i kluczy metoda była bezbłędna. Ciekawie zaprezentowana jest kryptoanaliza szyfrów podstawieniowych (Rysunek 5.). Dla tekstu przeprowadzana jest analiza statystyczna i najbardziej prawdopodobne znaki są wstawiane i zastępowane w tekście zaszyfrowanym. Następnie uzupełniać moŝna poszczególne znaki i sprawdzać poprawność otrzymywanego tekstu. CrypTool ułatwia równieŝ ręczne próbkowanie w przypadku algorytmu Playfaira. Rysunek 5. Kryptoanaliza szyfru podstawieniowego. MoŜliwa jest równieŝ kryptoanaliza szyfrów symetrycznych. Wykonywany jest atak brutalny (przeglądane są wszystkie moŝliwe klucze). W większości przypadków musimy znać fragment klucza aby w realnym czasie znaleźć cały klucz. CrypTool umoŝliwia równieŝ faktoryzację liczb oraz moŝliwość dla danego tekstu wygenerowania tekstu fałszywego, w taki sposób, aby obliczony skrót z obu tych tekstów był identyczny (moŝna określić algorytm oraz długość skrótu).

Szyfry współczesne Mówiąc o bezpieczeństwie algorytmów w większości przypadków mamy do czynienia z zasadą Kerckoffa -- mówiącą, Ŝe bezpieczeństwo szyfru powinno zaleŝeć całkowicie od długości klucza. Z zasady tej wynika jawność algorytmów kryptograficznych. Wiele szyfrów historycznych ukrywanych było w tajemnicy i to było głównym elementem zabezpieczający zaszyfrowany tekst. Szyfry takie, zwane ograniczonymi zostały w większości przypadków złamane i odradza się budowanie bezpieczeństwa szyfru przez ukrywanie jego implementacji. WyróŜniamy kilka podstawowych ataków na szyfrogram. Wymienię tutaj podstawowe: atak na tekst zaszyfrowany -- mamy do dyspozycji jedynie tekst zaszyfrowany (szyfrogram), atak na tekst częściowo znany -- znamy kilka liter z tekstu jawnego oraz odpowiadające im litery w szyfrogramie, atak za pomocą wybranego tekstu jawnego -- mamy moŝliwość zaszyfrowania dowolnego, wybranego przez siebie tekstu jawnego, atak za pomocą wybranego szyfrogramu -- mamy moŝliwość odszyfrowania dowolnego wybranego przez siebie szyfrogramu. W przypadku współczesnych szyfrów mówimy o szyfrach bezpiecznych obliczeniowo, co oznacza, Ŝe nie moŝna ich złamać przy zastosowaniu systematycznej analizy z uŝyciem dostępnych zasobów w realnym czasie. MoŜemy równieŝ mówić o bezwarunkowym bezpieczeństwie. W przypadku takich szyfrów niezaleŝnie od ilości przechwyconych tekstów zaszyfrowanych nie jesteśmy w stanie jednoznacznie określić tekstu jawnego. Jedynym algorytmem bezwarunkowo bezpiecznym jest algorytm one-time-pad spełniający 3 waŝne zasady, dla którego matematyczny dowód podany zastał w roku 1949 przez Shannon'a. Jest to prosty algorytm wykonujący operację XOR. JeŜeli chcemy, aby algorytm ten był bezwarunkowe bezpieczny muszą być spełnione 3 warunki: hasło musi być ciągiem losowym, hasło musi być jednorazowe, długość hasła musi być przynajmniej taka sama jak długość szyfrowanego tekstu. Kryptoanaliza róŝnicowa W roku 1990 E. Biham i A. Shamir jako pierwsi zaproponowali atak na algorytm DES zwany kryptoanalizą róŝnicową. Był to pierwszy atak na algorytm DES, którego złoŝoność była mniejsza niŝ 2 55 (atak brutalny). Według autorów moŝliwe jest złamanie algorytmu DES, wykonując około 2 47 prób oraz mając do dyspozycji 2 47 wybranych tekstów jawnych. Metoda ta została następnie wykorzystana do ataków na inne szyfry iteracyjne, czyli takich, których działanie oparte jest na kilkukrotnym wykonywaniu tych samych obliczeń -- rund. Polega ona na szyfrowaniu z uŝyciem tego samego klucza par tekstów jawnych, które róŝnią się między sobą w określony sposób a następnie na analizie otrzymanych w ten sposób szyfrogramów w miarę wykonywania kolejnych cykli algorytmu. Określone róŝnice w tekście jawnym związane są z otrzymaniem z duŝym prawdopodobieństwem określonych róŝnic między wynikowymi szyfrogramami, które nazywamy charakterystykami. Po przejściu przez kilka cykli wyznaczają one ścieŝkę między cyklami. Kryptoanaliza róŝnicowa jest skuteczna dla algorytmów ze stałymi S-blokami -- tak jak jest to w przypadku algorytmu DES. ZałóŜmy, Ŝe mamy dwa bloki danych wejściowych m oraz m'. RóŜnica dla tych danych wynosi m xor m'. Teksty mogą zostać wybrane losowo, ale róŝnice pomiędzy nimi muszą spełniać określone warunki. Kryptoanalityk nie musi znać wartości tych róŝnic. Stosując operację xor z bitami klucza (m xor k oraz m' xor k ) otrzymujemy dane wejściowe do S-boxów. NaleŜy zauwaŝyć, Ŝe (m xor k) xor (m' xor k) = m xor m'. Po przejściu przez S-boxy róŝnica (m xor k) xor (m' xor k) ulega

zmianie. Nowa róŝnica zaleŝy nie tylko od m xor m', lecz równieŝ od wartości klucza. Tylko niektóre wartości m xor k oraz m' xor k są moŝliwe a co za tym idzie tylko niektóre wartości samego k. Inny atak zbliŝony do kryptoanalizy róŝnicowej nazywamy metodą powiązanych kluczy. W tym przypadku sprawdzamy róŝnice między kluczami. Ataki algebraiczne Ataki te mogą być stosowane zarówno przeciwko blokowym szyfrom symetrycznym jak i szyfrom strumieniowym. Metodę tą zaproponowali polscy kryptolodzy Courtois i Pieprzyk. Polega ona na przedstawieniu algorytmu w postaci zbioru równań a następnie na ich rozwiązaniu. Atak ten skuteczny jest między innymi dla najnowszego standardu szyfrowania symetrycznego -- AES. Wykazano, Ŝe liczba operacji wymaganych do złamania tego algorytmu nie rośnie wykładniczo jako funkcja liczby rund. Proponowany atak moŝe być lepszy niŝ atak wyczerpujący i tak atak dla algorytmu AES-128 wyniósłby 2 100, natomiast dla algorytmu Serpent 2 143. W ataku tym naleŝałoby uŝyć jednej pary blok z tekstem jawnym -- blok z tekstem zaszyfrowanym. Metoda ta skuteczna jest równieŝ dla szyfrów strumieniowych. Liczba cykli CPU potrzebnych do złamania szyfru 128-bitowego Toyocrypt wynosi 2 49, natomiast dla algorytmu LILI-128 -- 2 57. Kryptoanaliza liniowa Zaproponował ją Mitsuru Matsui. Metoda ta polega na wykonaniu opisu działania bloku szyfrującego w postaci aproksymacji liniowej -- sumujemy modulo 2 niektóre bity tekstu jawnego oraz szyfrogramu a następnie wykonujemy tą samą operację na otrzymanych wynikach -- w ten sposób powinniśmy otrzymać 1 bit, który jest sumą modulo 2 niektórych bitów klucza. Jest to aproksymacja liniowa i prawdopodobieństwo jej poprawności jest równe p. W przypadku, gdy wartość prawdopodobieństwa jest róŝna od ½ warto wykorzystać tą nierówność. Mając dane teksty jawne i odpowiadające im szyfrogramy, zgadujemy wartości klucza. Atak dla algorytmu DES z 16 rundami wymaga 2 47 znanych tekstów jawnych, co powoduje, Ŝe nie jest to uŝyteczna metoda. Modyfikacją tego ataku jest zastosowanie aproksymacji liniowej 14 cykli (dla cykli od 2 do 15). Następnie zgadujemy 6-bitowy podklucz odpowiadający piątemu S-blokowi dla 1 i 16 cyklu. To podejście redukuje ilość wymaganych znanych tekstów jawnych do 2 43. Powstał równieŝ atak łączące w sobie cechy kryptoanalizy liniowej oraz róŝnicowej. Atak algorytmiczny Jest to atak na teorię, na podstawie której algorytm jest oparty -- przykładem moŝe być tutaj złamanie algorytmów opartych na problemie plecakowym jak np. algorytm Hellmana-Merkle'a (1978). Atak taki na algorytm RSA mógłby polegać na rozwiązaniu problemu faktoryzacji duŝych liczb, czyli rozkładu liczby na czynniki pierwsze. Ataki na implementacje sprzętowe algorytmów kryptograficznych Atak na czas wykonywania -- metoda zaproponowana przez P. Kochera, oparta jest na fakcie, Ŝe czas wykonywania przez mikroprocesor poszczególnych operacji nie jest wartością stałą i zaleŝy od danych wejściowych, dzięki czemu na podstawie informacji związanych z czasem realizowania poszczególnych operacji w trakcie szyfrowania, znaleźć moŝemy niektóre bity klucza. Metoda róŝnicowej analizy błędów -- urządzenie poddajemy róŝnego typu czynnikom zewnętrznym, aby wymusić popełnienie błędu podczas szyfrowanie lub deszyfrowania -- otrzymane wyniki poddajemy analizie. Metoda akustyczna -- autorami tego ataku są Adi Shamir oraz Eran Tromer, polega on na związku pomiędzy dźwiękami wydawanymi przez procesor a wykonywanymi przez niego

operacjami. Analiza róŝnicowa mocy -- wprowadzona przez P. Kochera, oparta jest na pomiarze wartości róŝnic poboru mocy przez poszczególne części urządzenia szyfrującego, podczas szyfrowania. Poprzez analizę róŝnic uzyskać moŝna informacje o wartościach bitów klucza. Ostatnie wyniki w dziedzinie kryptoanalizy Wiele firm tworzących algorytmy kryptograficzne organizuje konkursy, mające na celu złamanie ich szyfru z określoną długością klucza. Zwycięscy takiego konkursu otrzymują nagrody finansowe a firma projektująca algorytm jest w stanie określić bezpieczną długość klucza dla swoich algorytmów. Konkursy takie organizuje m.in. firma RSA (algorytm RSA, RC5) czy teŝ Certicom (ECC). Ostatnie doniesienia związane są ze złamaniem algorytmu RSA z kluczem o długości 576 bitów oraz ECC (kryptosystem oparty na krzywych eliptycznych) o długości 109 bitów. Od kilku lat prezentowane są moŝliwości złamania nadal popularnego szyfru symetrycznego DES w czasie kilkunastu minut. W 2003 roku ukazała się ciekawa praca Shamira i Tromera prezentująca moŝliwość złamania algorytmu RSA z uŝyciem sprzętowego rozwiązania. Algorytm RSA oparty jest na trudności rozkładu duŝych liczb (problem faktoryzacji). Najlepszym algorytmem rozwiązującym ten problem jest metoda sita ciała liczbowego (Number Field Sieve). Najbardziej złoŝonym elementem tego algorytmu jest etap przesiewania. Shamir i Tromer rozwiązanie swoje oparli na stworzeniu sprzętowej implementacji etapu przesiewania algorytmu NFS. Oszacowali oni, Ŝe czas złamania algorytmu RSA z kluczem 512-bitowym, przy nakładzie 10 tysięcy USD byłby krótszy niŝ 10 minut. Co ciekawe dla klucza 1024-bitowego (uwaŝanego w chwili obecnej za niemoŝliwy do złamania i bezpieczny jeszcze przez 10-15 lat) czas byłby krótszy niŝ 1 rok a koszt jaki naleŝałoby ponieść wyniósłby 10 milionów USD. Niestety przeciętny uŝytkownik, w przeciwieństwie do szyfrów historycznych, ma znikomą szansę samemu złamać któryś z rekomendowanych algorytmów kryptograficznych. MoŜe wziąć jednak udział w jednym z wielu projektów skupiających wielu ludzi, a co za tym idzie duŝą moc obliczeniowo komputerów np. w celu złamania jakiegoś szyfru i wygrania konkursu. Przykładowy projekt związany jest ze złamaniem algorytmu RC5 aktualnie z kluczem 72-bitowym (www.distributed.net). Wygrana w konkursie firmy RSA dla tego algorytmu wynosi 10000 USD. UŜytkownik działający w tym projekcie, który będzie miał to szczęście i uda mu się znaleźć właściwy klucz, oprócz nieukrywanej satysfakcji otrzyma 1000 USD. Inny projekt o zbliŝonej tematyce to projekt poszukiwania największej liczby pierwszej -- http://www.mersenne.org/prime.htm. Kryptoanaliza jest fascynującą i ciągle rozwijającą się dziedziną nauki. Będzie tak zapewne dopóki będą istniały algorytmy, które nie zostały złamane a jak wiadomo, gdy coś uda się złamać, powstają nowe algorytmy opierające się znanym atakom. Tak więc przyszłość rysuje się jako długa walka pomiędzy kryptografami a kryptoanalitykami. Kto wygra tę walkę -- nie wiadomo. Na dzień dzisiejszy wydaje się, Ŝe kryptoanalitycy są w gorszej sytuacji i nie mogą poradzić sobie z najnowszymi szyframi. Dlatego zapraszam wszystkich do rozwijania swojej wiedzy z tej tematyki i do uczestnictwa w tej intelektualnej i bezkrwawej walce.

W sieci [1] Algebraiczne ataki na szyfry blokowe (m.in. AES) - zbiór artykułów. http://www.cryptosystem.net/aes/ [2] Algebraiczne ataki na szyfry strumieniowe - zbiór artykułów. http://www.cryptosystem.net/stream/ [3] Factoring Large Numbers with the TWIRL Device (Adi Shamir, Eran Tromer). http://www.wisdom.weizmann.ac.il/%7etromer/papers/twirl.pdf [4] Factoring estimates for a 1024-bit RSA modulus (Lenstra, Tromer, Shamir, Kortsmit, Dodson, Hughes). http://www.wisdom.weizmann.ac.il/~tromer/papers/factorest.pdf [5] Kryptoanaliza akustyczna. http://www.wisdom.weizmann.ac.il/~tromer/acoustic/ [6] Kryptoanaliza funkcji hashujących MD2, MD4 oraz MD5. ftp://ftp.rsasecurity.com/pub/pdfs/bulletn4.pdf [7] Kryptoanaliza -- podstawy. http://sun.iinf.polsl.gliwice.pl/~kfrancik/bsk/dokumenty/bsk6_04.pdf