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

Podobne dokumenty
Zarys algorytmów kryptograficznych

A4 Klub Polska Audi A4 B6 - sprężyny przód (FWD/Quattro) Numer Kolory Weight Range 1BA / 1BR 1BE / 1BV

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

Laboratorium. Szyfrowanie algorytmami Vernam a oraz Vigenere a z wykorzystaniem systemu zaimplementowanego w układzie

Kryptografia systemy z kluczem tajnym. Kryptografia systemy z kluczem tajnym

Algorytmy podstawieniowe

B FB A D AEA D A A D E B E DE D A D D B A F EC AEAA D A DA E A BEA A D C D DC A B D B A D DA F EA BC B D F D B B A A E B C F DA E D D EA

Metody szyfrowania danych

Wybrane zagadnienia teorii liczb

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.

DZIENNIK USTAW RZECZYPOSPOLITEJ POLSKIEJ

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

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

2 Kryptografia: algorytmy symetryczne

Systemy liczbowe używane w technice komputerowej

Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów

Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000

Odbicie lustrzane, oś symetrii

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

1. Operacje logiczne A B A OR B

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

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

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

Algorytmy asymetryczne

CAST, 3DES, GOST, IDEA, RC2, RC4,

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

Laboratorium Programowania Kart Elektronicznych

OCHRONA INFORMACJI W SYSTEMACH I SIECIACH KOMPUTEROWYCH SYMETRYCZNE SZYFRY BLOKOWE


Rekurencja. Przykład. Rozważmy ciąg

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

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

Kryptologia przykład metody RSA

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

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

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Algorytmy podstawieniowe

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.

Szyfrowanie RSA (Podróż do krainy kryptografii)

Technika Próżniowa. Przyszłość zależy od dobrego wyboru produktu. Wydanie Specjalne.

Techniki multimedialne

Bezpieczeństwo w Internecie

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

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

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

1.1. Pozycyjne systemy liczbowe

PRZEDMIAR ROBÓT - ZADANIE 1

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

L6.1 Systemy liczenia stosowane w informatyce

1. Wykład NWD, NWW i algorytm Euklidesa.

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (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:

Kryptografia szyfrowanie i zabezpieczanie danych

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

a) Zapisz wynik działania powyższego algorytmu dla słów ARKA i MOTOR...

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Rijndael szyfr blokowy

Warszawa, dnia 27 czerwca 2017 r. Poz Rozporządzenie. z dnia 21 czerwca 2017 r. w sprawie wzoru karty diagnostyki i leczenia onkologicznego

Zegar ten przedstawia reszty z dzielenia przez 6. Obrazuje on jak kolejne liczby można przyporządkować do odpowiednich pokazanych na zegarze grup.

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

Podstawy programowania w języku C i C++

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

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

Wstęp do informatyki- wykład 1

Zadanie 2: Arytmetyka symboli

Pracownia Komputerowa wykład IV

1259 (10) = 1 * * * * 100 = 1 * * * *1

1.1. Standard szyfrowania DES

Strumienie, pliki. Sortowanie. Wyjątki.

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ Arkusz I. Czas pracy: 60 minut Liczba punktów do uzyskania: 15

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

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

KRYPTOANALIZA. Opracowanie wewnętrzne Instytutu Informatyki Gliwice, 1999

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Stan wysoki (H) i stan niski (L)

Zajęcia 4 procedury i funkcje

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

Laboratorium kryptograficzne dla licealistów 3

10. Kolorowanie wierzchołków grafu

1. Maszyny rotorowe Enigma

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Wstęp do informatyki- wykład 2

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.)

Kodowanie informacji. Przygotował: Ryszard Kijanka

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

1 Macierz odwrotna metoda operacji elementarnych

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

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

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

Zapis liczb binarnych ze znakiem

Technologie Informacyjne

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

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

Komunikacja człowiek-komputer

Transkrypt:

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR 1. Algorytm XOR Operacja XOR to inaczej alternatywa wykluczająca, oznaczona symbolem ^ w języku C i symbolem w matematyce. Operacja ta działa na wartościach binarnych, zdefiniowana jest następująco: 0 1 0 0 1 1 1 0 Właściwości algorytmu XOR: a a = 0 (1) a b a = b (2) Algorytm XOR nie jest niczym więcej, niż szyfrem Vigenere a. Jest on do dziś stosowany w komercyjnych pakietach oprogramowania, zwłaszcza przeznaczonego dla systemu Windows, i reklamowany jest jako prawie tak bezpieczny, jak DES. Jak zostanie za chwilę pokazane, algorytm ten nie zapewnia praktycznie żadnego bezpieczeństwa. W USA algorytm ten jest stosowany z kluczem 160-bitowym w urządzeniach telefonii komórkowej do szyfrowania rozmów na terenie całego kraju. Algorytm XOR jest algorytmem symetrycznym. Kryptogram jest wynikiem binarnego sumowania modulo 2 tekstu jawnego z kluczem. Jedna procedura, realizująca algorytm XOR, może być zastosowana zarówno do operacji szyfrowania, jak i deszyfrowania, ponieważ dwukrotne sumowanie modulo 2 tej samej wartości daje w wyniku tę wartość: M K = C C K = M 2. Łamanie algorytmu XOR Algorytm XOR można złamać bardzo łatwo, jednakże łamanie ograniczone jest kilkoma warunkami: klucz szyfrujący musi być użyty cyklicznie; - długość kryptogramu musi być wystarczająca; - 1 -

- kryptoanalityk musi znać typ zaszyfrowanych danych (tekst, plik BMP itp). W niniejszej instrukcji ograniczamy się do opisania sposobu łamania kryptogramów z zaszyfrowanym tekstem w języku polskim. Ograniczona jest również długość klucza, który będzie mógł zostać znaleziony. Instrukcja postępowania: 1. Stworzyć tablicę, zawierającą dwie kolumny: Przesunięcie i Ilość. Tablicę wypełnić w sposób następujący: do kolumny Przesunięcie wpisać kolejne liczby od 1 do zakładanej maksymalnej długości klucza (można założyć np 200); kolumnę Ilość wypełnić zerami. 2. Uzupełnić dane w kolumnie Ilość: należy dla każdego przesunięcia (wpisanego w kolumnę Przesunięcie w tablicy) obliczyć ile znaków jest takich samych. Dla przesunięcia 1 porównujemy znaki nr 1 i 2, potem 2 i 3 itd. Dla przesunięcia 3 porównujemy znaki nr 1 i 4, potem 2 i 5, 3 i 6 itd. 3. Posortować dane w tablicy malejąco, pod względem kolumny Ilość. 4. Obliczyć długość klucza: należy wziąć trzy wartości przesunięć, odpowiadające największej ilości tych samych znaków (czyli wartości z kolumny Przesunięcie z dwóch górnych wierszy tablicy), i wyliczyć ich NWD (Największy Wspólny Dzielnik), np za pomocą algorytmu Euklidesa. Wyliczona wartość jest długością klucza. Uwaga. W przypadku, gdy długość klucza jest równa 1, można spróbować zamiast trzech wartości wziąć dwie. Jeśli długość klucza nadal będzie równa 1, należy założyć, że klucz rzeczywiście ma 1 znak (aczkolwiek możliwe jest, że analizowane dane nie są kryptogramem). 5. Znaki klucza mogą być całkowicie dowolne (z całego zakresu ASCII), dlatego też należy sprawdzić wszystkie. W tym celu należy utworzyć drugą tablicę, zawierającą dwie kolumny: ASCII oraz Ilość. Kolumnę ASCII należy wypełnić liczbami od 0 do 255 (zakres ASCII), a kolumnę Ilość wypełnić ją zerami. Należy założyć też zbiór znaków, które występują najczęściej; zwykle zakłada się wszystkie widzialne znaki (spacja, duże i małe litery, cyfry). Uwaga. Zbiór ten można zmienić (np ograniczyć tylko do występujących najczęściej znaków, a, e, t, s ). Zbiór ten ma znaczący wpływ na efekty poszukiwania znaków klucza, dlatego należy dobrać go empirycznie. 6. Przystąpić do wyznaczania samego klucza. W tym celu należy z odpowiednim przesunięciem (równym długości klucza) dokonywać operacji XOR na znakach kryptogramu i wszystkich możliwych znakach kodu ASCII, symbolizujących literę klucza. Na przykład dla klucza o długości 10 szukając pierwszego znaku przetwarzamy co 10 znak kryptogramu (znaki nr 1, 11, 21 itd) sumując każdy przetwarzany znak kryptogramu modulo 2 z kolejnymi kodami ASCII. Jeśli wynik operacji należy do założonego zbioru znaków, należy zwiększyć o 1 wartość w tablicy - 2 -

w kolumnie Indeks, dla której wartość w kolumnie ASCII odpowiada drugiemu czynnikowi operacji XOR, czyli znakowi klucza. Przykład. Rozważmy kryptogram XOR w następującej postaci (podano kody ASCII znaków w formie heksadecymalnej): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 25 0D 43 1B 03 10 1B 1B 05 13 0D 14 00 0C 0A 00 2 42 1B 0E 10 4E 04 0F 43 08 42 13 13 0D 01 18 42 3 19 0D 03 0E 00 0C 0A 00 42 17 04 05 0C 41 18 0D 4 00 09 0C 0C 0B 17 04 05 0C 41 03 0F 06 0D 11 18 5 16 0E 14 6F 69 Tekst ma długość 69 bajtów. Tworzymy tablicę przesunięć i wypełniamy ją np są trzy pary identycznych znaków dla przesunięcia o 1 znak: 1B w pierwszej linii, pozycje 7 i 8; 13 w drugiej linii, pozycje 11 i 12; 0C w czwartej linii, pozycje 3 i 4. Podobnie są trzy pary dla przesunięcia o 3 znaki: 1B w pierwszej linii na pozycjach 4 i 7; 0 w pierwszej linii na pozycjach 13 i 16; 0 w trzeciej linii na pozycjach 5 i 8. Przesunięcie Ilość 1 3 2 0 3 3 4 1 5 2 6 3 7 2 8 0 9 5 10 1 11 1 12 6 Sortujemy tablicę: Przesunięcie Ilość 12 6 9 5 1 3 3 3 6 3 5 2 7 2 4 1 10 1-3 -

11 1 2 0 8 0 Na podstawie tabeli posortowanej można ustalić długość klucza. Pierwsze trzy przesunięcia to 12, 9 i 1, a NWD(12,9,1) = 1. Jednak biorąc tylko dwa przesunięcia, otrzymujemy wynik 3 (NWD(12,9) = 3) i powinniśmy wziąć pod uwagę właśnie to rozwiązanie, zwłaszcza, że dalej w tabeli są wartości będące wielokrotnościami 3 3 i 6. Zakładamy zatem, że klucz ma 3 znaki. Szukamy pierwszej litery klucza. Wiedząc, że klucz ma trzy znaki, pierwsza litera klucza była użyta do szyfrowania znaku nr 1, 4, 7, 10 itd. i tylko te znaki będziemy badać. Szukając drugiej litery klucza, badamy znaki nr 2, 5, 8, 11 itd. Dla kolejnych analogicznie. Tworzymy drugą tablicę, zawierającą kody ASCII (szesnastkowo) i częstości wystąpień (dziesiętnie) i wypełniamy ją, szukając pierwszej litery klucza. Wypełniamy następująco: wiersze A x oznaczają kody ASCII, a wiersze I x ilość znaków, stanowiących wynik operacji XOR znaku kryptogramu z kolejnymi możliwymi znakami, które mogą wystąpić w kluczu (od 0 do 255). A 0 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F I 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 A 1 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F I 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 2 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F I 2 3 0 0 0 2 0 1 0 1 0 0 0 0 0 1 0 A 3 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F I 3 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 A 4 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F I 4 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 A 5 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F I 5 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 A 6 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F I 6 1 6 0 1 0 5 0 3 1 2 0 4 1 1 0 5 A 7 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F I 7 2 1 1 3 4 2 0 3 0 1 2 2 1 2 1 0 A 8 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F I 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 9 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F I 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF I 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 11 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF I 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 12 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF I 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 13 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF I 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 14 E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF - 4 -

I 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF I 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 W wypełnionej tabeli zaznaczone pogrubieniem i na czerwono są wszystkie elementy niezerowe. Szukamy maksimum jest w wierszu I 6 i zostało już zaznaczone na zielono. Odpowiadający maksimum kod ASCII to 61, co oznacza literę a. W ten sposób wyznaczona została pierwsza litera klucza. Należy analogicznie kontynuować wyznaczanie kolejnych znaków klucza, pamiętając tylko o wyczyszczeniu używanej tablicy (wyzerowaniu kolumny Ilość). Zadania. 1. Dokonać implementacji programu łamiącego XOR. Założyć, że program ma operować tylko na kryptogramach tekstów jawnych będących tekstami w języku polskim lub angielskim. Program powinien obsługiwać pliki (o dowolnej wielkości) i dokonywać operacji deszyfrowania po znalezieniu klucza. Klucz po jego znalezieniu powinien być wyświetlony na ekranie. 2. Znaleźć klucz oraz podać tekst jawny dla opisywanego w przykładzie kryptogramu. - 5 -