Inzynieria bezpieczenstwa

Transkrypt

Inzynieria bezpieczenstwa
INŻYNIERIA BEZPIECZEŃSTWA
LABORATORIUM NR 3
SZYFRY PODSTAWIENIOWE: WIELOALFABETOWE,
HOMOFONICZNE, POLIGRAMOWE
WSTĘP DO KRYPTOANALIZY
1 Proste szyfry podstawieniowe – przypomnienie
wiadomości z laboratorium nr 1
W prostych szyfrach podstawieniowych stosuje się jednoznaczne odwzorowanie:
f : mi → f (mi )
zastępujące każdy znak tekstu jawnego odpowiadającym mu znakiem kryptogramu. Tekst
jawny m składa się ze znaków oznaczonych m1, m2, …. W celu zaszyfrowania,
przekształcenie stosujemy do każdego znaku, otrzymując:
E f (m) = f (m1 ) f (m2 )...
Przykładowy prosty szyfr podstawieniowy można zrealizować za pomocą tabeli 1:
mi
f(mi)
A
F
B
E
C
K
D
J
E
N
F
P
G
O
H
C
I
D
J
Y
K
U
L
H
M
V
N
M
O
B
P
Z
Q
L
R
W
S
G
T
X
U
T
V
A
W
R
X
I
Y
S
Tabela 1 - Przykład prostego szyfru podstawieniowego
Dla tak zdefiniowanego przekształcenia szyfru podstawieniowego, tekstowi jawnemu
KRYPTOGRAFIA odpowiada szyfr UWSZXBOWFPDF.
Odwzorowaniu n znaków odpowiada permutacja liczb całkowietych 0,1,…,n-1, a zatem
liczba możliwych podstawień wynosi n!.
Kluczem szyfru jest permutacja elementów stosowanego alfabetu. W przykładzie, w którym
zastosowano litery alfabetu angielskiego, zawierającego 26 liter, istnieje
26!= 4 × 10 26
różnych podstawień. W przypadku zastosowania podstawienia dla całego zakresu kodów
ASCII, ilość podstawień będzie wynosić 256!.
Odmianą prostych szyfrów podstawieniowych monoalfabetowych są szyfry przesunięte, w
których alfabetem tajnym jest alfabet przesunięty cyklicznie o pewną liczbę pozycji k.
Przykładem szyfru przesuniętego może być szyfr Cezara (dla tego szyfru k=3).
Szyfry podstawieniowe monoalfabetowe są łatwe do złamania. Wystarczy zastosować
analizę statystyczną: zbadać rozkład częstości znaków w tekście jawnym i kryptogramie, a
następnie skojarzyć znaki o zbliżonych częstościach występowania (dane statystyczne
zawiera tabela z dodatku 4.1). W celu ułatwienia sobie analizy kryptogramu, kryptoanalityk
powinien znać też występujące często ciągi dwu- i trzyznakowe (digramy i trigramy).
Z
Q
2 Szyfry podstawieniowe homofoniczne
W szyfrach tych każdy znak tekstu jawnego mi jest odwzorowany na jeden znak ze zbioru
f(mi) tekstu zaszyfrowanego, przy czym zbiory f(mi) są rozłączne. Znaki zbioru f(mi)
nazywane są homofonami. Tekst jawny m = m1, m2, … jest zaszyfrowany jako c = c1, c2, …,
przy czym znaki ci wybiera się dowolnie ze zbioru homofonów f(mi).
Przykład.
Zakładamy, że litery (z alfabetu angielskiego, bez polskich znaków diakrytycznych) są
szyfrowane jako liczby dwucyfrowe. Liczba znaków przydzielonych każdej literze jest
proporcjonalna do względnej częstości jej występowania w tekście i każda liczba jest
przydzielona tylko do jednej litery. Możliwe przyporządkowanie liczb przedstawia tabela:
Litera
A
B
C
D
E
F
G
…
Homofony
19 34 41 56 60 73 83 96
31
27 59 62 81
11 28 77
10 23 42 49 61 88 99
76
23
Tabela 2 - Przykład przyporządkowania liczb - szyfr homofoniczny
Tekst jawny m = B A C A może być zaszyfrowany jako c = 31 56 59 19.
Szyfry homofoniczne są trudniejsze do złamania niż proste szyfry podstawieniowe, gdyż
ukrywają rozkład znaków w kryptogramie przyporządkowując jednej literze tekstu jawnego
wiele symboli kryptogramu. Im więcej symboli przydzielonych będzie literom, tym szyfr
będzie mocniejszy. Szyfr ten nie ukrywa jednak statystycznych właściwości języka, co
można sprawdzić np. analizując rozkład digramów.
3 Szyfry podstawieniowe wieloalfabetowe
Szyfry te zostały opracowane i wprowadzone do użytku w XVI wieku. Mają one wiele
jednoznakowych kluczy, które zmieniają się w procesie szyfrowania, a każdy z kluczy
stosowany jest do szyfrowania pojedynczego znaku tekstu jawnego. Po wyczerpaniu
wszystkich kluczy stosowane są one cyklicznie (szyfry wieloalfabetowe są zwykle szyframi
okresowymi). Liczba kluczy nazywana jest okresem szyfru.
Szyfry wieloalfabetowe ukrywają rozkład znaków tekstu jawnego dzięki użyciu wielu
podstawień.
3.1 Szyfr Vigenere’a
Pochodzi z XVI wieku. Wymaga przypisania znakom tekstu jawnego liczb, np. wg
następującej tabeli:
Klucz
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
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
B
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
C
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
D
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
E
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
F
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
G
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
H
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
I
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
J
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
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
Tekst jawny
L M N O
L M N O
M N O P
N O P
Q
O P
Q R
P
Q R S
Q R S
T
R S
T
U
S
T
U V
T U V W
U V W X
V W X Y
W X Y Z
X Y Z
A
Y Z
A B
Z A B C
A B C D
B C D E
C D E
F
D E
F
G
E F
G H
F
G H I
G H I
J
H I
J
K
I
J
K L
J
K L
M
K L
M N
P
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
Q
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
R
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
S
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
T
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
U
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
V
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
W
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
X
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
Y
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
Z
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
Tabela 3 - Tablica szyfru Vigenere'a
Dla klucza, będącego sekwencją k = k1, k2, …szyfrowanie znaku mi należącego do
alfabetu jawnego n-literowego, jest określone zależnością:
ci = (mi + ki ) mod n
Wyrażenie deszyfrujące ma postać:
mi = (ci − ki ) mod n
Dla okresu szyfru Vigenere’a równego 1, szyfr ten staje się prostym szyfrem
podstawieniowym.
Przykład.
Alfabet zawiera 26 liter, kluczem szyfru Vigenere’a jest ciąg E N T D O o okresie d = 5.
Tekst jawny KRYPTOGRAFIA będzie zaszyfrowany następująco:
m= K
k= E
c= O
R
N
E
Y
T
R
P
D
S
T
O
H
O
E
S
G
N
T
R
T
K
A
D
D
F
O
T
I
E
M
A
N
N
W procesie szyfrowania szukamy kolumny, zawierającej odpowiedni znak tekstu
jawnego, oraz wiersza, zawierającego znak klucza. Do kryptogramu dopisujemy znak,
będący na przecięciu znalezionego wiersza i kolumny.
Tablica Vigenere’a może służyć także do deszyfrowania. Wtedy szukamy wiersza
odpowiadającego znakowi klucza, a literę tekstu jawnego odczytujemy znak z nagłówka
kolumny, w której znajduje się litera kryptogramu.
4 Szyfry podstawieniowe poligramowe
Szyfry poligramowe lub inaczej wieloliterowe szyfrują naraz większe bloki tekstu jawnego.
Złamanie takich szyfrów jest trudne, ze względu na ukrycie częstości występowania liter w
kryptogramie. Przykładowymi szyframi poligramowymi mogą być szyfr Hilla oraz szyfr
Playfaira.
4.1 Szyfr Playfaira
Szyfr Playfaira wynaleziono w XIX wieku, był on stosowany w czasie I wojny
światowej. Kluczem w tym szyfrze jest przypadkowa tablica 5×5 znakowa, w której
pominięto nieużywaną literę J:
W A R F
S
I
C O D B
E
P
G K Y
M N Q T
U
V
H X L
Z
Tabela 4 - Szyfr Playfaira
Algorytm szyfrowania wygląda następująco:
1) Jeśli m1 i m2 leżą w tym samym wierszu, to znakami kryptogramu c1 i c2 są litery
leżące po prawej stronie m1 i m2, przy czym pierwszą kolumnę traktuje się jako
położoną na prawo od ostatniej;
2) Jeśli m1 i m2 leżą w tej samej kolumnie, to znakami kryptogramu c1 i c2 są litery
leżące poniżej m1 i m2, przy czym pierwszy wiersz traktuje się jako położony pod
ostatnim wierszem;
3) Jeśli m1 i m2 leżą w różnych kolumnach i wierszach, to znakami kryptogramu c1 i c2
są litery znajdujące się w narożnikach prostokąta, wyznaczonego przez m1 i m2, przy
czym c1 pochodzi z wiersza zawierającego m1, a c2 – z wiersza zawierającego m2;
4) Jeśli m1 = m2 , to do tekstu jawnego pomiędzy te litery wstawia się nieznaczącą
literę, np. X. Podobnie jeśli ostatnia litera nie ma pary, dopisuje się nieznaczącą literę
na koniec tekstu jawnego.
Przykład:
m=
c=
K
G
R
F
Y
E
P
G
T
Q
O
D
G
Q
R
O
A
R
F
S
I
C
A
W
5 Algorytm z kluczem jednorazowym
Może się to wydawać niemożliwe, jednak istnieje idealny algorytm szyfrujący. Jest on
nazywany po angielsku one-time-pad (można to tłumaczyć jako algorytm z kluczem
jednorazowym). Klasycznie algorytm ten jest dużym zbiorem o niepowtarzalnych i
przypadkowych sekwencjach znaków, zapisanych razem na sklejonych arkuszach papieru.
Każdy klucz używany jest tylko jeden raz, do zaszyfrowania tylko jednej wiadomości. Po
zaszyfrowaniu tekstu jawnego nadawca niszczy już wykorzystaną część przypadkowej
sekwencji znaków. Odbiorca musi dysponować identycznym zbiorem sekwencji i używa
tych samych znaków zbioru do operacji odszyfrowania, po czym, tak, jak nadawca, niszczy
zbiór znaków stanowiących klucz. Przy nadawaniu nowej wiadomości należy zastosować
nowy zbiór znaków i nowe znaki klucza.
Przykładowo, szyfrujemy wiadomość
ONETIMEPAD
kluczem postaci
TBFRGFARFM
Otrzymujemy następujący kryptogram:
IPKLPSFHGQ
gdyż
O + T mod 26 = I,
N + B mod 26 = P,
E + F mod 26 = K,… itd.
Zakładając, że przeciwnik nie ma dostępu do jednorazowego zestawu znaków, stosowanego
do szyfrowania wiadomości, można powiedzieć, że jest to idealnie bezpieczny algorytm
utajniania. Dowolny kryptogram może być z równym prawdopodobieństwem
kryptogramem dowolnego tekstu jawnego o tej samej długości.
Ze względu na to, że każdy klucz jest równie prawdopodobny (klucze są tworzone losowo),
nie ma tu informacji, mogącej ułatwić złamanie szyfru. Kluczem mógłby być przykładowo
następujący zestaw znaków:
POYYAEAAZX
Co po odszyfrowaniu daje
SALMONEGGS
Albo, użycie klucza
BXFGBMTMXM
prowadzi do otrzymania
GREENFLUID
Zatem kryptoanalityk nie ma możliwości rozstrzygnięcia, który tekst jawny jest poprawny,
gdyż wszystkie teksty jawne są jednakowo prawdopodobne. Przypadkowy klucz
zsumowany modulo 2 z nieprzypadkowym tekstem jawnym daje całkowicie losowy
kryptogram i nawet największa moc obliczeniowa na świecie nie umożliwi złamania tego
szyfru.
Dużą wadą tej metody szyfrowania jest generowanie przypadkowych kluczy. Każda metoda
złamania takiego szyfru będzie metodą złamania algorytmu generowania klucza. Stosowanie
generatorów liczb pseudolosowych (np. wbudowanych w języki programowania) nie jest
dobrym rozwiązaniem, gdyż praktycznie prawie zawsze mają one właściwości nielosowe;
konieczne jest użycie prawdziwie losowego źródła (co, wbrew pozorom, jest trudniejsze, niż
się wydaje), gdyż dopiero wtedy bezpieczeństwo algorytmu z kluczem jednorazowym jest
gwarantowane.
Przykładem algorytmu z kluczem jednorazowym może być również XOR, jeśli tylko
zachowane są podane powyżej warunki (klucz całkowicie losowy i użyty wyłącznie jeden
raz).
6 Kryptoanaliza
Podstawowym zadaniem kryptografii jest utrzymanie w tajemnicy tekstu jawnego, bądź
klucza, bądź obu elementów jednocześnie przed atakującymi (przeciwnikami), którzy chcą
uzyskać pełen dostęp do tekstów przesyłanych pomiędzy nadawcą i odbiorcą.
Kryptoanaliza jest nauką o odtwarzaniu tekstu jawnego bez znajomości klucza. Zajmuje się
również wyszukiwaniem słabych punktów systemów kryptograficznych, punktów, które
mogą pozwolić na znalezienie sposobu do poznania tekstu jawnego lub klucza. Utrata
tajności klucza wskutek działań innych, niż kryptoanalityczne, nazywana jest
kompromitacją klucza.
Stosowanie kryptoanalizy nazywa się łamaniem szyfru (ang. attack). Podstawowym
zadaniem kryptoanalizy jest założenie, że bezpieczeństwo algorytmu jest oparte na kluczu.
Należy założyć, że kryptoanalityk, przystępując do łamania szyfru, zna wszystkie szczegóły
algorytmu szyfrowania i jego implementację. Założenie takie nie jest prawdziwe w wielu
realnych systemach, ale warto je przyjąć, gdyż jeśli nie uda się złamać szyfru wiedząc, jak
działa algorytm szyfrujący, to tym bardziej nie uda się go złamać nie wiedząc, jak ten
algorytm działa.
Wyróżnia się cztery główne typy metod łamania szyfrów. Przy każdej z nich zakłada się, że
kryptoanalityk posiada pełną wiedzę o stosowanym algorytmie szyfrowania. Zastosowane
oznaczenia: Ci – i-tykryptogram, Mi – i-ty tekst jawny, K – klucz, EK – operacja szyfrowania
za pomocą klucza K, DK – operacja odszyfrowywania za pomocą klucza K.
•
Łamanie z kryptogramami (ang. ciphertext-only attack). Kryptoanalityk dysponuje
kryptogramami kilku wiadomości, zaszyfrowanych z zastosowaniem tego samego
algorytmu szyfrującego. Jego zadanie polega na odtworzeniu tekstu jawnego
możliwie wielu wiadomości lub na poznaniu klucza (kluczy) zastosowanego do
szyfrowania wiadomości, by móc odczytać również inne wiadomości zaszyfrowane
z wykorzystaniem tego samego klucza.
Dane:
C1 = EK (M1), C2 = EK (M2), …, Ci = EK(Mi)
Wnioskowanie: M1, M2, …, MK lub K, lub algorytm wnioskowania o Mj+1
na podstawie Ci+1 = EK(Mi+1)
•
Łamanie ze znanym tekstem jawnym (ang. known-plaintext attack).
Kryptoanalityk dysponuje nie tylko kryptogramami kilku wiadomości, lecz także ich
tekstami jawnymi. Zadanie polega na znalezieniu klucza (bądź kluczy)
zastosowanego do szyfrowania lub też wydedukowania algorytmu do deszyfrowania
kolejnych wiadomości zaszyfrowanych z tym samym kluczem.
Dane:
M1, C1 = EK (M1); M2, C2 = EK (M2); …, Mi, Ci = EK(Mi)
Wnioskowanie: K lub algorytm wnioskowania o Mj+1 na podstawie Ci+1 = EK(Mi+1)
•
Łamanie z wybranym tekstem jawnym (ang. chosen-plaintext attack).
Kryptoanalityk ma możliwość wybrania tekstu jawnego i ma dostęp do jego
kryptogramu. Jest to dogodna sytuacja dla łamiącego szyfr, gdyż tym razem można
wybrać określony tekst jawny do zaszyfrowania i w ten sposób uzyskać więcej
informacji o kluczu. Zadaniem kryptoanalityka jest wywnioskowanie klucza
(kluczy), zastosowanego do szyfrowania lub wydedukowaniu algorytmu do
deszyfrowania kolejnych wiadomości zaszyfrowanych tym samym kluczem.
Dane:
M1, C1 = EK (M1); M2, C2 = EK (M2); …, Mi, Ci = EK(Mi) M1, M2, …,
Mi są wybrane przez kryptoanalityka
Wnioskowanie: K lub algorytm wnioskowania o Mj+1 na podstawie Ci+1 = EK(Mi+1)
•
Łamanie z adaptacyjnie wybranym tekstem jawnym (ang. adaptive-chosen
plaintext attack). Jest to szczególny przypadek łamania z wybranym tekstem
jawnym. Kryptoanalityk może nie tylko wybrać dowolny tekst jawny do
szyfrowania, ale także wykonać kolejne próby, dobierając tekst jawny zgodnie z
wynikami poprzednich szyfrowań. Przy łamaniu z wybranym tekstem jawnym
łamiący może wybrać do zaszyfrowania jeden duży blok tekstu jawnego; natomiast
przy łamaniu z adaptacyjnie wybranym tekstem jawnym może wybrać mniejszy blok
tekstu jawnego, potem wybrać inny, biorąc pod uwagę skutki pierwszego wyboru
itd.
Ponadto można wyróżnić przynajmniej trzy inne metody łamania szyfrów:
•
Łamanie z wybranym kryptogramem (ang. chosen-ciphertext attack).
Kryptoanalityk może wybierać różne kryptogamy do deszyfrowania i mieć dostęp do
odszyfrowanego tekstu jawnego. Gdy ma sprawdzoną metodę automatycznego
deszyfrowania, jego zadanie polega na znalezieniu klucza.
Dane:
C1, M1 = DK (C1); C2, M2 = DK (C2); …, Ci, Mi = DK(Ci)
Wnioskowanie: K
•
Łamanie z wybranym kluczem (ang. chosen-key attack). Nie jest to metoda
łamania, w której kryptoanalityk ma możliwość wyboru klucza, lecz posiada on
pewną wiedzę o powiązaniach między różnymi kluczami. Metody te są rzadko
stosowane i dlatego nie będą tu omówione.
•
Łamanie z gumową pałką (ang. rubber-hose cryptoanalysis). Kryptoanalityk grozi,
szantażuje lub torturuje odpowiednią osobę dopóty, dopóki nie otrzyma klucza.
Przekupstwo jest nazywane łamaniem przez nabycie (ang. purchase-key attack). Ta
metoda łamania szyfrów bywa bardzo skuteczna i często jest najlepszą i
najskuteczniejszą (a często też najtańszą) metodą rozpoznania algorytmu lub
zdobycia klucza.
Najpopularniejszą metodą łamania szyfru jest metoda ze znanym tekstem jawnym i z
wybranym tekstem jawnym. Wbrew pozorom dość często kryptoanalityk dysponuje tekstem
jawnym, który został zaszyfrowany. Wiele wiadomości ma standardowe nagłówki i
zakończenia znane kryptoanalitykowi. Szczególnie podatny na złamanie jest choćby
zaszyfrowany program w postaci kodu źródłowego, gdyż regularnie występują w nim
kluczowe słowa języka programowania (np. #define, #include, if, else, return, while, itp.).
Zaszyfrowany program wykonywalny (EXE) stwarza te same problemy związane z
protokołami, strukturami pętli itp. Łamanie ze znanym tekstem jawnym (a nawet z
wybranym tekstem jawnym) było z powodzeniem stosowane w czasie II wojny światowej
przeciwko Niemcom i Japończykom.
Jeśli siła systemu kryptograficznego opiera się na nieznajomości algorytmu przez
atakującego, to jest to duży błąd. Pomyłką jest sądzić, że chroniąc szczegóły algorytmu
zapewnia się większe bezpieczeństwo systemu niż w sytuacji, gdy opublikuje się algorytm i
pozwoli na jego analizę. Naiwnością jest wiara w to, że nikt nie dokona disasemblacji kodu
algorytmu ani nie będzie chciał odtworzyć algorytmu. Najlepsze dzisiejsze algorytmy są
opublikowane i latami bezskutecznie łamane przez najlepszych kryptoanalityków na
świecie.
Nie zawsze osoba łamiąca szyfr ma dostęp do algorytmu, lecz tak jest najczęściej. Jeśli
algorytm szyfrujący jest zastosowany w programie komercyjnym, to jest tylko kwestią czasu
i pieniędzy jego zdeasemblowanie i odtworzenie algorytmu. Możliwe jest także, przy
odpowiednich nakładach czasowych i finansowych, przejście zabezpieczeń sprzętowych –
wystarczy kupić (lub ukraść) odpowiednie urządzenia i odtworzyć algorytm.
7 Bezpieczeństwo systemów kryptograficznych
Różne systemy kryptograficzne charakteryzują się różnymi poziomami zapewnianego
bezpieczeństwa w zależności od tego, jak trudno je złamać. Jeśli koszt złamania szyfru jest
większy niż wartość zaszyfrowanej informacji, to prawdopodobnie szyfr jest bezpieczny.
Jeśli czas niezbędny do złamania szyfru jest dłuższy niż czas, w którym dane muszą
pozostać utajnione, to prawdopodobnie szyfr jest bezpieczny. Jeśli ilość danych
zaszyfrowanych z zastosowaniem pojedynczego klucza jest mniejsza niż ilość danych
niezbędnych do złamania szyfru, to prawdopodobnie szyfr jest bezpieczny.
Prawdopodobnie bezpieczny – gdyż w każdej chwili może pojawić się w kryptoanalizie
nowa koncepcja, która wymusi ponowną ocenę bezpieczeństwa szyfru. Kategorie łamania
szyfrów są następujące:
•
•
•
•
Całkowite złamanie szyfru. Kryptoanalityk znajduje klucz K, taki, że DK(C) = M.
Ogólne wnioskowanie. Kryptoanalityk znajduje alternatywny algorytm, równoważny
z algorytmem DK(C), nie wymagającym poznania K.
Lokalne wnioskowanie. Kryptoanalityk znajduje tekst jawny przechwyconego
kryptogramu.
Częściowe wnioskowanie. Kryptoanalityk zdobywa nieco informacji o kluczu i
tekście jawnym. Informacją tą może być kilka bitów klucza, informacja na temat
formatu tekstu jawnego (np. „jest to kod źródłowy w języku C”) itp.
Algorytm jest bezwarunkowo bezpieczny (ang. uncoditionally secure) jeśli niezależnie od
liczby kryptogramów, które ma kryptoanalityk, nie jest możliwe odtworzenie tekstu
jawnego. W zasadzie tylko algorytmów z kluczem jednorazowym nie można złamać,
dysponując nieograniczonymi zasobami. Wszystkie inne systemy można złamać,
podstawiając po kolei różne klucze i sprawdzając, czy otrzymany tekst jawny jest sensowny.
Ta metoda jest nazywana łamaniem brutalnym (ang. brute-force attack).
Kryptografia zajmuje się przede wszystkim systemami, których nie da się złamać
obliczeniowo. Algorytm uznawany jest za obliczeniowo bezpieczny lub silny jeśli nie może
być złamany za pomocą dostępnych obecnie i w przyszłości środków, przy czym
interpretacja terminu „dostępne środki” jest nadal sprawą dyskusyjną.
Złożoność metody łamania można mierzyć kilkoma sposobami:
• Złożoność danych. Ilość danych, wymaganych jako dane wejściowe metody łamania
szyfru.
• Złożoność przetwarzania. Czas wymagany do złamania szyfru.
• Wymagania pamięci. Wielkość pamięci niezbędnej do złamania szyfru.
Złożoność metody łamania szyfru jest szacowana jako minimum z tych trzech miar.
Niektóre metody łamania wymagają kompromisu pomiędzy tymi trzema miarami, np.
łamanie jest szybsze, ale wymaga dużo więcej pamięci itp.
Złożoność jest określana jako rząd wielkości. Jeśli z jakimś algorytmem jest związana
złożoność przetwarzania rzędu 2128, to oznacza, że do złamania tego algorytmu trzeba
wykonać 2128 operacji, które mogą być złożone i czasochłonne. Dysponując procesorem,
wykonującym milion operacji na sekundę, i stosując milion takich procesorów, nasze
zadanie pochłonie 1019 lat, czyli miliard razy więcej niż wynosi wiek Wszechświata.
Złożoność metody łamania, niezbędna do złamania danego algorytmu jest stała (oczywiście
do czasu znalezienia lepszej metody łamania), ale moc obliczeniowa komputerów nie jest
stała. Dlatego też twierdzenie, że algorytm jest bezpieczny, gdyż przy obecnych
możliwościach przetwarzania danych nie można go złamać, jest ryzykowne – postęp w
konstrukcji procesorów jest nadal bardzo szybki i trend ten najprawdopodobniej zostanie
utrzymany. Dobre algorytmy są projektowane tak, aby nie można ich było złamać nawet
dysponując przewidywanymi za wiele lat mocami obliczeniowymi.
8 Łamanie brutalne
Aby rozpocząć atak, kryptoanalityk potrzebuje tylko kryptogramu (nawet fragmentu
kryptogramu). W przypadku szyfrów blokowych będzie niezbędny przynajmniej jeden blok
kryptogramu. Zdobycie kryptogramu powinno być stosunkowo proste.
Dodatkowo warto uzyskać pewne informacje na temat struktury czy układu tekstu jawnego,
co bardzo ułatwia łamanie (np. w przypadku łamania algorytmu XOR) – np. czy tekst jawny
to plik Worda, plik graficzny JPG, standardowa wiadomość poczty elektronicznej, rekord
bazy danych, plik spakowany algorytmem ZIP itp. Każdy z tych formatów danych ma
pewne, charakterystyczne i ściśle określone bajty w określonych miejscach pliku, co
znacznie ułatwia operację łamania szyfru, tak, że kryptoanalityk może wykorzystać te
informacje w celu ograniczenia złożoności obliczeniowej łamania brutalnego. Jednak często
kryptoanalityk dysponuje wyłącznie fragmentem (lub całością) kryptogramu i może wtedy
zastosować wyłącznie łamanie brutalne.
Oszacowanie złożoności obliczeniowej łamania brutalnego jest łatwe. Jeśli klucz ma
długość 8 bitów (1 bajt), to należy zbadać 28 = 256 możliwych kluczy. Zatem przy 256
próbach jest pewność znalezienia klucza, przy szansie 50% na powodzenie przy połowie tej
ilości prób. Jeśli klucz ma długość 56 bitów, to kombinacji jest 256, co przy sprawdzaniu
miliona kluczy na sekundę daje 2 285 lat badania. Dla 64-bitowego klucza jest to już 585
000 lat, zaś dla klucza 128-bitowego 1025 lat. Wiek Wszechświata szacowany jest tylko na
1010 lat, więc okres 1025 lat prawdopodobnie zapewnia bezpieczeństwo. Przy kluczu 2048bitowym milion komputerów, pracujących równolegle i badających po milionie kluczy na
sekundę każdy, łamanie brutalne szyfru zajmie 10597 lat.
Należy jednak pamiętać, że algorytm musi być tak bezpieczny, by nie było innej metody
jego złamania niż atak brutalny. Nie jest to tak łatwe, jak mogłoby się wydawać. Nawet
algorytmy, które wydają się być doskonałe, często po pewnym czasie badań okazują się być
skrajnie słabe. Dlatego też najlepiej jest ufać algorytmom, które są od wielu lat przedmiotem
bezskutecznych badań kryptografów, natomiast z dystansem podchodzić do nowych
algorytmów, reklamowanych jako najlepsze i nie do złamania.
9 Zadania
9.1
Zapoznać się z materiałami (pod kątem wejściówki).
9.2
Zaimplementować algorytmy: szyfru homofonicznego, szyfru Vigenere’a oraz
szyfru Playfaira.
10 Dodatki
10.1 Częstość występowania wybranych znaków w tekstach
Znak
A
B
C
D
E
F
G
H
I
J
K
L
M
Polski
0,080
0,013
0,038
0,030
0,069
0,001
0,010
0,010
0,070
0,019
0,027
0,031
0,024
Ang.
0,067
0,013
0,019
0,031
0,089
0,021
0,017
0,043
0,054
0,002
0,009
0,033
0,022
Pas
0,037
0,013
0,032
0,028
0,081
0,014
0,017
0,015
0,050
0,002
0,003
0,031
0,014
Znak
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Polski
0,047
0,071
0,024
0,035
0,038
0,024
0,018
0,036
0,032
0,056
Ang.
0,053
0,063
0,012
0,001
0,042
0,043
0,070
0,021
0,006
0,018
0,001
0,023
0,001
Pas
0,050
0,046
0,022
0,057
0,034
0,060
0,019
0,008
0,007
0,008
0,008
0,001
Znak
Spacja
0
1
2
3
4
5
6
7
8
9
.
,
Polski
0,172
0,009
0,009
Ang.
0,197
0,008
0,002
Pas
0,192
0,003
0,004
0,002
0,001
0,001
0,002
0,001
0,001
0,001
0,002
0,012
0,010
Tabela 5 - Częstość występowania znaków w tekstach [4.2]
Tabela zawiera częstości wystąpień wybranych znaków w tekstach w języku polskim,
angielskim oraz w programie pascalowym. Nie uwzględniono znaków diakrytycznych
języka polskiego. Kreska oznacza, że częstość występowania znaku jest mniejsza niż
0,0005.