Sprawozdanie
Transkrypt
Sprawozdanie
Sprawozdanie Laboratorium nr 1 – szyfry podstawieniowe plik zaszyfrowany: CRPTA_08 Bartosz Stachowski, gr. 34a 1. Kryptoanaliza szyfru monoalfabetycznego, szyfr afiniczny a) wyznaczenie C0 Pierwszym elementem alfabetu jest spacja. Wykonujemy atak tekstem jawnym w programie afin i jako tekst wpisujemy spację. Zwróconym kryptogramem jest znak ‘<’ posiadający kod ASCII równy 60. Od tej wartości odejmujemy wartość spacji z tablicy ASCII (32) i otrzymujemy wynik: 60-32=28. Otrzymany wynik to element C0, do wykorzystania w późniejszych obliczeniach. b) wyznaczenie k0 Dany jest wzór: Ci = (k1 * mi + k0) mod N Podstawiamy i=0 i dokonujemy przekształcenia: C0 = (k1 * m0 + k0) mod N C0 = (k1 * 0 + k0) mod N C0 = k0 mod N C0 = k0 Operację modulo możemy pominąć, gdyż k0 będzie mniejsze niż maksymalny rozmiar alfabetu (128) Zatem k0 = 28 c) wyznaczenie C1 Wiemy, że mi+1 = mi + 1 Dokonujemy przekształceń: Ci+1 = (k1 * mi+1 + k0) mod N Ci+1 = (k1 * (mi + 1) + k0) mod N Ci+1 = (k1 * mi + ki + k0) mod N Tworzymy układ równań i odejmujemy obustronnie: Ci = (k1 * mi + k0) mod N Ci+1 = (k1 * mi + ki + k0) mod N Ci+1 - Ci = k1 mod N Ci+1 - Ci = k1 Wykonujemy atak tekstem jawnym, następnym znakiem po spacji (wykrzyknik, kod ASCII 33), zwróconym kryptogramem jest znak ‘e’ posiadający kod ASCII 101. Od tej wartości odejmujemy wartość spacji i otrzymujemy wynik: 101-32=69. Zgodnie z otrzymanym wzorem k1 = 69-28 = 41. d) wyznaczanie N Wyznaczanie rozmiaru alfabetu rozpoczniemy od porównania wzorów: a = n * b + a mod b Ci = (k1 * mi + k0) mod N a - n * b = a mod b Ci = (k1 * mi + k0) mod N Z porównania otrzymujemy i podstawiamy: a = k1 * mi + k0 b=N Ci = a – n * b Ci = a – n * b Ci = k1 * mi + k0 - n * N k1 * mi + k0 - Ci = n * N Zajmujemy się lewą stroną równania, obliczamy ją aż do momentu, w którym wynik będzie różny od 0. f0 = k1 * m0 + k0 – c0 = 41 * 0 + 28 – 28 = 0 f1 = k1 * m1 + k0 – c1 = 41 * 1 + 28 – 69 = 0 Dla dwóch pierwszych obliczonych C0 i C1 otrzymujemy 0, wyliczamy więc C2 wykorzystując kolejny znak z alfabetu. Wykonujemy atak tekstem jawnym kolejnym znakiem (znak cudzysłowiu ”, kod ASCII 34), zwróconym kryptogramem jest ten sam znak. Od tej wartości odejmujemy wartość spacji i otrzymujemy wynik: 34-32 = 2. f2 = k1 * m2 + k0 – c2 = 41 * 2 + 28 – 2 = 82 + 26 = 108 Otrzymaną liczbą jest rozmiar alfabetu N. e) odszyfrowany tekst jawny 2. Kryptoanaliza szyfru polialfabetycznego, szyfr Vigenere Zadanie zostało wykonane na zajęciach a) indeks koincydencji Friedmana Pierwszym krokiem było obliczenie indeksu koincydencji Friedmana dla zadanego szyfru, wyniósł on: IC = 0.04082 b) analiza histogramów Szukana i prawidłowa długość klucza wyniosła 8. Analizując histogramy należało wskazać w każdym z nich literę najczęściej występującą. Przykładowo dla histogramu nr 1 była to litera ‘k’. Odpowiednio dla kolejnych histogramów: histogram nr 2: p histogram nr 3: o histogram nr 4: n histogram nr 5: t histogram nr 6: l histogram nr 7: i histogram nr 8: y c) tablica Vigenere’a Ciąg liter odczytany z histogramów (KPONTLIY) należało odnaleźć w tablicy Vigenere’a. Przyjmujemy, że tekst jest w języku angielskim, zatem najczęściej występującą literą w nim będzie litera ‘e’. W ciągu kolumn odnajdujemy literę ‘e’, a następnie poruszając się wzdłuż tej kolumny odszukujemy kolejne litery histogramu i odczytujemy pierwszą literę wiersza na przecięciu, np. dla pierwszej litery histogramu K, wartością odczytaną z tablicy będzie litera G: Postępujemy tak odpowiednio z kolejnymi literami i otrzymujemy ciąg znaków: GLKJPHEU – jest on kluczem. d) odszyfrowany tekst jawny