Ochrona systemów informacyjnych

Transkrypt

Ochrona systemów informacyjnych
Ochrona systemów informacyjnych
Podstawy kryptologii
Kryptologia
●
●
●
dziedzina wiedzy o przekazywaniu informacji w
sposób zabezpieczony przed niepowołanym
dostępem.
Współcześnie kryptologia jest uznawana za
gałąź zarówno matematyki, jak i informatyki;
ponadto jest blisko związana z teorią informacji,
inżynierią oraz bezpieczeństwem
komputerowym.
Kryptologia dzieli się na
●
Kryptografię – naukę o układaniu szyfrów
●
Kryptoanalizę – naukę o ich łamaniu
Skrócona historia
●
●
●
●
●
●
●
●
Szyfry antyczne dzieli się na dwie główne grupy: szyfry przestawieniowe, za pomocą których zmieniano kolejność liter
w wiadomości (przykład najprostszego przestawienia – "pomóż mi" staje się "opómż im") oraz szyfry podstawieniowe,
które polegały na zastępowaniu pojedynczych liter lub ich grup, odpowiednio: innymi literami lub ich grupami (np.
"natychmiastowy wylot" staje się "obuzdinjvbtupxz xzmpu" w najprostszym podstawieniu za daną literę – następnej
litery alfabetu łacińskiego). W prostych wersjach obydwa szyfry oferują niewielki stopień utajnienia przed
przeciwnikiem.
Jednym z najwcześniejszych szyfrów podstawieniowych był szyfr Cezara, w którym każda litera tekstu jawnego
zastępowana była literą oddaloną o pewną ustaloną liczbę pozycji w alfabecie. Szyfr ten został nazwany na cześć
Juliusza Cezara, który używał go (z przesunięciem o 3) do komunikacji ze swoimi generałami podczas kampanii
wojskowych.
Szyfrowanie miało za zadanie zapewnić tajność w komunikacji na przykład pomiędzy szpiegami, dowódcami
wojskowymi, dyplomatami; miało też zastosowanie wśród wyznawców religii – wcześni chrześcijanie wykorzystywali
kryptografię do ukrycia niektórych aspektów ich pism religijnych w celu uniknięcia oskarżeń, które – gdyby nie
zachowali ostrożności – z pewnością by się pojawiły.
Sławna liczba 666 (lub w niektórych wczesnych pismach – 616), czyli liczba Bestii z Apokalipsy św. Jana, księgi
chrześcijańskiego Nowego Testamentu, uważana jest czasem za zaszyfrowane odniesienie do rzymskiego cesarza
Nerona, który prowadził politykę prześladowania chrześcijan.
Istnieją również zapisy kilku innych, wcześniejszych szyfrów hebrajskich.
Stosowanie kryptografii zalecała też Kamasutra kochankom chcącym się komunikować bez ryzyka wykrycia.
Steganografia, wynaleziona również w starożytności, była rodzajem szyfrowania polegającym na ukryciu – w celu
zachowania tajności – samego faktu istnienia przekazu. Wczesnego przykładu dostarcza Herodot, który opisał z
własnego doświadczenia ukrycie wiadomości – tatuażu na ogolonej głowie niewolnika – pod nowo wyrosłymi włosami
Wśród bliższych współczesności przykładów steganografii są takie techniki jak atramenty sympatyczne, mikrokropki
oraz cyfrowe znaki wodne.
Skrócona historia
●
●
●
●
●
Szyfrogram wygenerowany przy użyciu klasycznego szyfru (i niektórych rodzajów
szyfrów nowoczesnych) zawsze niesie ze sobą pewne statystyczne informacje
związane z wyjściowym tekstem jawnym, które mogą posłużyć do złamania szyfru.
Po odkryciu metod kryptoanalizy statystycznej przez arabskiego uczonego AlKindiego w IX wieku n.e. stało się możliwe, z mniejszymi lub większymi trudnościami,
złamanie prawie każdego z takich szyfrów przez kogoś, kto ma odpowiednią wiedzę
właśnie w dziedzinie odkrytej przez Al-Kindiego.
Sytuacja bezbronności szyfrów wobec kryptoanalizy panowała do momentu
opracowania przez Leona Battistę Albertiego szyfrów polialfabetycznych około roku
1467 (choć istnieją też przypuszczenia, że wcześniej odkryli je Arabowie). Jego
pomysł polegał na użyciu różnych szyfrów (np. szyfrów podstawieniowych) dla
różnych części wiadomości – często innego szyfru dla każdej z osobna litery tekstu
jawnego. Od niego wyszła też konstrukcja urządzenia będącego prawdopodobnie
pierwszą maszyną do szyfrowania; było to koło, które po części realizowało jego
pomysł szyfrowania.
W XIX-wiecznym polialfabetycznym szyfrze Vigenère'a do zaszyfrowania wiadomości
używa się klucza, który określa w jaki sposób ma być szyfrowany kolejny znak.
W połowie XIX wieku Charles Babbage pokazał, że szyfry polialfabetyczne tego typu
są partiami podatne na kryptoanalizę statystyczną
Kryptoanaliza statystyczna
●
●
●
●
●
●
●
●
Ataki statystyczne - to zespół ataków na szyfry, których wspólna cecha jest wykorzystanie informacji
statystycznych na temat struktury tekstu jawnego. Historycznie najstarszym przykładem takiego ataku jest
np. wykorzystanie następującego sposobu:
należy wyznaczyć rozkład znaków w zaszyfrowanym tekście i porównać z rozkładem w dowolnym tekście
jawnym z tego samego języka (najlepiej, ale niekoniecznie, tego samego autora na podobny temat). Przy
dłuższym tekście tajnym pozwala to na idealne rozszyfrowanie.
Inne metody mogą polegać na poszukiwaniu takich statystycznych własności tekstu jawnego, które pomimo
zastosowania algorytmu szyfrowania ukrywającego częstości znaków tekstu jawnego nadal są możliwe do
odtworzenia na podstawie szyfrogramu (porównaj: test kappa, mutual information, entropia)
Współcześnie ataki tego rodzaju są niezmiernie ważne i popularne, a to z następujących powodów:
ilości informacji szyfrowanej (szyfrogramów) dostępnych współcześnie są olbrzymie. Na przykład
zaszyfrowanie jednego średniej wielkości pliku Worda dostarcza tyle informacji co ok. 600 stron druku (strona
wydruku ASCII to ok. 1KB)
informacje szyfrowane zwykle posiadają bardzo bogatą i ściśle określoną strukturę, np. bity w plikach
skompresowanych spełniają szereg znanych prawideł statystycznych, ich zaszyfrowanie ułatwia złamanie
szyfru.
wykonanie ataku statystycznego często nie wymaga znajomości szczegółów algorytmu szyfrowania,
wystarczy ogólna znajomość do jakiej rodziny algorytmów należy zastosowany algorytm;
zgodnie z współczesnym paradygmatem kryptologii, bezpieczeństwo szyfru leży we właściwym wyborze
klucza. Jednak ludzie mają tendencję do nieprawidłowej oceny losowości procesów, i znane są
prawidłowości statystyczne które dają się rozpoznać jeśli klucz nie jest generowany bezpiecznym
kryptologicznie generatorem losowym, lecz przez człowieka. W pewnych sytuacjach wystarcza to do
przeprowadzenia ataków słownikowych, niekiedy do ataków statystycznych.
Historia c.d.
●
●
●
●
●
●
●
W XIX wieku uznano, że ochrona tajemnicy algorytmu szyfrowania nie jest rozsądna
ani praktyczna; odpowiedni schemat kryptograficzny (w tym szyfr) powinien pozostać
bezpieczny nawet wtedy, gdy przeciwnik zna algorytm szyfrowania.
Zasada Kerckhoffsa – jedna z podstawowych zasad współczesnej kryptografii,
sformułowana w XIX wieku przez holenderskiego kryptologa Augusta Kerckhoffsa.
Zasada ta mówi, że system kryptograficzny powinien być bezpieczny nawet wtedy,
gdy wszystkie szczegóły jego działania – oprócz klucza – są znane.
Tajemnica klucza sama w sobie powinna wystarczyć do dobrego zaszyfrowania i
przekazania – w razie ataku – poufnej informacji. Inaczej mówiąc: kryptosystem
powinien być bezpieczny nawet w przypadku, gdy jego całość – z wyjątkiem klucza –
jest publicznie znana.
Ta fundamentalna zasada została po raz pierwszy wyrażona wprost w 1883 roku
przez Augusta Kerckhoffsa i jest na ogół nazywana zasadą jego imienia.
Bardziej otwarcie, choć w nieco innej formie, wyraził ją (prawdopodobnie niezależnie
od Kerckhoffsa) Claude Shannon: "nasz wróg zna nasz system" (maksyma
Shannona).
Istotne postępy w dziecinie kryptografii i kryptoanalizy przyniosły działania w trakcie II
wojny światowej (Enigma i jej złamanie, maszyna Lorenza , Colossus)
Przełom w latach 70-tych wraz z wynalezieniem algorytmów asymetrycznych
Terminologia
●
●
●
●
W trakcie szyfrowania dokonuje się zamiany
tekstu jawnego w szyfrogram.
Algorytm szyfrujący powinien być jawny,
bezpieczeństwo zapewnia się używając
odpowiedniego klucza.
Tekst jawny czasami określa się mianem
depeszy, komunikatu.
Deszyfrowanie polega na zamianie
szyfrogramu do postaci tekstu jawnego.
Podział algorytmów szyfrujących
●
●
●
Algorytmy symetryczne – używają tego samego klucza do
szyfrowania i do deszyfrowania, lub klucz do
deszyfrowania jest bezpośrednio zależny od klucza do
deszyfrowania
Algorytmy asymetryczne – korzystają z pary kluczy
określanych często mianem klucza jawnego i tajnego.
Szyfrogram przygotowany przy pomocy klucza jawnego
może zostać odszyfrowane przy pomocy klucza tajnego i
vice versa.
Algorytmy jednokierunkowe – algorytmy działające tylko w
jedną stronę – możliwe jest szyfrowanie, bez
deszyfrowania.
Algorytmy symetryczne
●
●
Szyfr Cezara – szyfr podstawieniowy bardzo
słaby kryptograficznie, podatny na metody
kryptoanalizy różnicowej
Poprawa bezpieczeństwa – szyfrowanie
poprzez podstawienie bloków zamiast
pojedynczych liter.
System playfair
●
●
Budujemy kwardrat 5x5 (25 pól, które wypełnia
się literami w ustalonej kolejności (J=I)).
Hasło: poszla malpa do piwnicy – wypełniamy
kwadrat nie powtarzającymi się literami hasła,
resztę uzupełniamy np. w kolejności
alfabetycznej
P
O
S
Z
L
A
M
D
I
W
N
C
Y
B
E
F
G
H
K
Q
R
T
U
V
X
Playfair cd
●
Szyfrowanie depeszy: KROWA I WESZ
●
Ustalamy kolejne pary liter: KR OW AI WE SZ
●
●
Każda para liter wyznacza prostokąt wewnątrz
naszego kwadratu.
Jako szyfrogram bierzemy litery na pozostałych
wierzchołkach
KR → FV
P
O
S
Z
L
A
M
D
I
W
N
C
Y
B
E
F
G
H
K
Q
R
T
U
V
X
Playfair cd
●
Szyfrowanie depeszy: KROWA I WESZ
●
Ustalamy kolejne pary liter: KR OW AI WE SZ
●
Każda para liter wyznacza prostokąt wewnątrz
naszego kwadratu.
P
O
S
Z
L
A
M
D
I
W
N
C
Y
B
E
F
G
H
K
Q
R
T
U
V
X
KR → FV , OW → LM
Playfair cd
●
Szyfrowanie depeszy: KROWA I WESZ
●
Ustalamy kolejne pary liter: KR OW AI WE SZ
●
Jeśli litery nie tworzą prostokątu bierze się litery
na prawo od liter pary. Jeśli to są ostatnie litery
po prawej – bierze się pierwsze (zawija
wiersze)
P
O
S
Z
L
A
M
D
I
W
N
C
Y
B
E
F
G
H
K
Q
R
T
U
V
X
KR → FV , OW → LM , AI → MW
Playfair
●
Choć trudniejsza – nadal podatna na analizy
statystyczne
XOR i one-time pad
●
●
●
●
●
a
b
A xor b
0
0
0
0
1
1
1
0
1
1
1
0
depesza i klucz mają postać ciągu bitów, szyfrogram też będzie ciągiem
bitów
W ten sposób można szyfrować np. bajty
One-time pad – dla każdego szyfrowania losowany jest klucz, szyfrowanie
metodą XOR
Kryptogram jest ciągiem losowym – ma ten sam rozkłąd
prawdopodobieństwa co ciągi bitów wygenerowane przy pomocy rzucania
monetą
Bez znajomości klucza żadna informacja dotycząca tekstu jawnego nie
może być wywnioskowana z kryptogramu
One time pad - problemy
●
Klucz należy uzgodnić przez strony
●
Klucz musi być wylosowany
●
●
●
Klucz musi być przechowywany w bezpieczny
sposób
Klucz musi być co najmniej tak długi jak
szyfrowany ciąg
Algorytm podatny na wykorzystanie tego
samego klucza. Jeśli klucz będzie krótszy od
depeszy można by go zdublować itd.. Wówczas
za pomocą samego kryptogramu można
wywnioskować postać klucza
S-boksy
●
●
S-boks definiuje funkcję, jej argumentami są ciągi złożone z 6
bitów a wartościami ciągi złożone z 4 bitów. Obliczenie wartości
dla argumentu x:
Pierwszy i ostatni bit argumentu tworzą liczbę binarną
indeksującą wiersz
●
Pozostałe bity wyznaczają kolumnę
●
Na przecięciu się wiersza i kolumny wpojawia się argument
●
Wybór wartości s-boksu ma fundamentalne znaczenie dla
jakości szyfrowania.
●
14 4
13 1
0
15 7
4
1
2
15 11 8
3
10 6
9
0
7
12 11 9
5
3
8
10 5
0
4
14 2
13 1
14 8
13 6
2
11 15 12 9
7
4
1
7
14 10 0
15 12 8
2
9
10 6
12 5
5
11 3
9
6
13
Efekt lawinowy
●
●
●
●
Zmiana pojedynczego bitu w tekście jawnym
powinna powodować zmianę wielu bitów w
kryptogramie.
W idealnym przypadku powinno to powodować
ustawienia bitów, jakie uzyskamy w przypadku
rzutu monetą.
Dzięki temu podobne teksty jawne mają
całkiem inne kryptogramy
S-boksy są pomocne w realizacji efektu
lawinowego. Efekt ten można spowodować
stosując S-boksy wielokrotnie
Kryteria wyboru s-boxów
●
●
●
●
●
Każdy wiersz S-boksu zawiera wszystkie liczby całkowite od 0 do 15.
Znajomość wiersza nie daje żadnej informacji o wartości końcowej.
Funkcja obliczana przez s-boks nie jest funkcją afiniczną, żaden bit
wyniku nie da się przedstawić jako liniowa kombinacja wartości
funkcji. Gdyby tak było – kryptoanaliza sprowadzała by się do
rozwiązania ukadu równań liniowych
Zmiana jednego bitu argumentu zmienia co najmniej dwa bity wyniku
Wartości umieszczone w S-boksie mają krytyczny wpływ na
bezpieczeństwo szyfru.
Jeżeli poznamy wartość jednego bitu argumentu oraz jedną
pozycję argumentu, dla ok. połowy ustawień pozostałych bitów
argumentu na wybranym bicie wyniku otrzymamy 0. Gdy znamy
nawet wartość jednego bitu argumentu to na dowolnej pozycji
wyniku otrzymujemy 0, w przybliżeniu z losową częstotliwością.
DES
●
Data Encryption Standard – symetryczny algorytm szyfrowania
●
Algorytm celowo opublikowany
●
●
Szybszy gdy jest zaimplementowany jako układ sprzętowy niż
jako program
Szyfruje bloki złożone z 64 bitów (8 znaków w kodzie ASCII,
łącznie z bitem parzystości)
●
Klucz jest również 64 bitowy (54 wybierane + 8 parzystości)
●
Standard w USA do celów niemilitarnych (do 2001 roku)
●
●
Nie ma żadnych solidnych podstaw matematycznych ale mimo
to jest dość odporny na analizę różnicową.
Złamany w roku 1997
Szyfrowanie DES
●
●
●
●
na początku tekst jawny, który ma zostać zaszyfrowany, dzielony jest na bloki 64-bitowe. Następnie
dla każdego bloku wykonywane są następujące operacje:
dokonywana jest permutacja początkowa bloku przestawiająca bity w pewien określony sposób – nie
zwiększa ona bezpieczeństwa algorytmu, a jej początkowym celem było ułatwienie wprowadzania
danych do maszyn szyfrujących używanych w czasach powstania szyfru
blok wejściowy rozdzielany jest na dwie 32-bitowe części: lewą oraz prawą
wykonywanych jest 16 cykli tych samych operacji, zwanych funkcjami Feistela, podczas których dane
łączone są z kluczem. Operacje te wyglądają następująco:
●
bity klucza są przesuwane, a następnie wybieranych jest 48 z 56 bitów klucza
●
prawa część danych rozszerzana jest do 48-bitów za pomocą permutacji rozszerzonej
●
●
rozszerzona prawa połowa jest sumowana modulo 2 z wybranymi wcześniej (i przesuniętymi) 48
bitami klucza
zsumowane dane dzielone są na osiem 6-bitowych bloków i każdy blok podawany jest na wejście
jednego z S-bloków (pierwszy 6-bitowy blok na wejście pierwszego S-bloku, drugi 6-bitowy blok na
wejście drugiego S-bloku, itd.). Pierwszy i ostatni bit danych określa wiersz, a pozostałe bity kolumnę
S-BOXa. Po wyznaczeniu miejsca w tabeli, odczytuje się wartość i zamienia na zapis dwójkowy.
Wynikiem działania każdego S-bloku są 4 bity wyjściowe – tworzą one 32-bitowe wyjście S-bloków.
Każdy S-Blok ma inną strukturę
●
wyjście S-bloków poddawane jest permutacji w P-blokach
●
bity tak przekształconego bloku sumowane są z bitami lewej połowy danych
●
tak zmieniony blok staje się nową prawą połową, poprzednia prawa połowa staje się natomiast lewą
połową - cykl dobiega końca
Ri
Permut. Z rozszerz
K_i+1
XOR
s1 s2 s3 s4 s5 s6 s7 s8
permutacja
Deszyfrowanie DES
●
●
●
Należy odwrócić kolejność obliczeń. Niestety w przypadku
S-boxów funkcja odwrotna nie jest jednoznaczna ale przy
szyfrowaniu:
L i+1=Ri
Ri+1=L i XOR f ( Ri , K i+1)
●
●
Zatem przy deszyfrowaniu:
●
●
●
●
Ri−1=L i
L i−1=Ri XOR f ( Ri−1 , K i )=Ri XOR f ( L i , K i )
Znając Li, Ri oraz Ki możliwe jest obliczenie L_i-1 i R_i-1,
co pozwala ominąć S-boxy
DES
●
●
●
●
Do szyfrowania i deszyfrowania można zatem użyć tego samego układu szyfrującego
Wadą DES jest dość krótki klucz – złamanie tego algorytmu metodą siłową zajęło w
1999 roku 22.5 godziny wykorzystując rozproszone moce obliczeniowe
W DES występują klucze słabe i półsłabe
Przy wykorzystaniu słabego klucza podklucz wykorzystywany do szyfrowania będzie
taki sam w każdym cyklu. Do kluczy słabych w DES należą następujące klucze (zapis
w systemie szesnastkowym):
●
klucz składający się z samych zer: 00 00 00 00 00 00 00
●
klucz składający się z samych jedynek: FF FF FF FF FF FF
●
●
klucze, w których połowy składają się z samych zer lub jedynek: FF FF FF F0 00
00 00 oraz 00 00 00 0F FF FF FF
Stwierdzono istnienie sześciu par takich kluczy, które dany tekst jawny szyfrują do
takiego samego szyfrogramu – klucze takie nazywane są kluczami półsłabymi.
Oznacza to także, że tekst zaszyfrowany jednym kluczem półsłabym może zostać
odszyfrowany za pomocą drugiego klucza z pary.
Modyfikacje DES
●
DESX - Whitering, dla zaszyfrowania bloku P
złożonego z 64 bitów używa się 3 kluczy Ke, Ki,
Kdes:
O = Kext XOR DES(Kdes,(P xor Kint))
●
3DES – stosuje się 3 kroki , dwa klucze k1 i k2
O = DES(k1,DES(k2,DES(k1,P)))
operacja odwrotna:
P = DES(k1,DES(k2,(DES(k3,O)))
S-boksy zależne od klucza
●
●
Metoda utrudniająca kryptoanalizę poprzez użycie w trakcie
szyfrowania DES-em S-boksów zmodyfikowanych w zależności
od dodatkowego klucza.
Losowe S-boksy mają statystycznie gorsze własności niż sboksy używane przez DES operacje jakich się dokonuje to:
●
Przestawienie dwóch pierwszych wierszy z dwoma ostatnimi
●
Przestawienie 8 pierwszych z 8 ostatnimi kolumnami
●
Dla każdego elementu w s-boksie wykonanie operacji XOR z
zadanymi czterema bitami klucza
Szyfrowanie dowolnie długich tekstów
●
DES szyfruje blokami po 8 bajtów, aby był
bardziej użyteczny należy go rozszerzyć o takie
możliwości. Są to min:
●
ECB – electronic code book
●
CBC – cipher block chaining
●
CF – cipher feedback
Electronic codebook
●
●
●
Tekst jawny dzielony na bloki, każdy blok szyfrowany
przy użyciu tego samego klucza
Zaleta – niewrażliwy na utratę części bloków – zawsze
można odkodować nieutraconą część informacji
Wada – możliwy atak nie wymagający łamania szyfru
depesza
blok1
k
szyfrogram
des
blok2
k
des
blokn
...
k
des
Przykładowy atak
●
●
●
●
Załóżmy że szyfrowane są zlecenia bankowe
przy użyciu CBC
Zakładamy konto, śledzimy szyfrowany
strumień danych, dokonujemy n przelewów na
swoje konto, wychwytujemy transmisję i
identyfikujemy szyfrogram swojego nr konta
Podmieniamy szyfrogram nr konta w innych
pakietach, odbieramy gotówkę i znikamy
Ciekawostka – CBC jest nadal w użyciu min
przez instytucje finansowe
Cipher Block Chaining
●
Niech E(k,D) oznacza kryptogram tekstu D, z użyciem klucza k, Jeśli depesza składa się z
bloków P1,P2,P3 … o długości k to kryptogram składa się z bloków C1,C2,C3 o długosci k
zdefiniowanych:
●
C1 = E(k,(P1 xor I))
●
Ci = E(k,(Pi xor Ci-1))
●
Ciąg I generowany jest losowo i przesyłany jawnie.
●
Tutaj kryptogramy są ze sobą powiązane, gdyż dla otrzymania Ci potrzebujemy Ci-1
●
Deszyfrowanie jest dość proste:
●
P1 = D(k,C1) xor I
●
Pi = D(k,Ci) xor Ci-1
●
●
●
●
Zaleta: takie same bloki depeszy reprezentowane są przez różne bloki w szyfrogramie
Wada: nie można zgubić żadnego bloku
Zaleta: przekłamania wewnątrz jednego bloku prowadzą do przekłamań tylko w tym jednym
bloku – nie propagują się
Wada: podział na boki musi być odporny na zakłócenia
CFB – Cipher Feedback
●
Losujemy zawartość rejestru przesuwającego
●
Zawartość rejestru przesuwającego jest szyfrowana kluczem k
●
Z kryptogramu pobiera się pierwsze 8 bitów do operacji XOR z 8 bitami wejściowymi → Z
●
●
Ciąg Z tworzy 8 kolejnych bitów kryptogramu. W rejestrze dokonujemy przesunięcia o kolejne 8
bitów. 8 bitów z lewej strony ulega usunięciu
Deszyfrowanie polega na takiej samej operacji przy zamianie wejścia z wyjściem miejscami
Rejestr przesuwający
k
des
kryptogram
8 bitów
Z
P
xor
IDEA
●
●
●
Problemy prawne z DES – export poza USA był
przestępstwem
DES był produktem o znaczeniu militarnym

Podobne dokumenty