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