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