Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

7. PODSTAWY KRYPTOGRAFII

Podobne prezentacje


Prezentacja na temat: "7. PODSTAWY KRYPTOGRAFII"— Zapis prezentacji:

1 7. PODSTAWY KRYPTOGRAFII
Kryptografia jest gałęzią wiedzy zajmującą się sposobami utajniania treści przekazywanych komunikatów tak, aby nie mogły zapoznać się z nią osoby postronne (nie będące adresatami). Podstawowym sposobem utajniania treści jest jej szyfrowanie. Szyfrowanie polega na zastąpieniu ciągu znaków stanowiącego jawną treść komunikatu innym ciągiem znaków. Po stronie odbiorcy musi być wykonana operacja odwrotna, nazywana deszyfrowaniem, której wynikiem z powrotem będzie jawna treść. Kanał komunikacyjny Tekst otwarty Szyfrowanie Szyfrogram Deszyfrowanie Tekst otwarty Nadawca Intruz Odbiorca Intruz może być intruzem pasywnym (tylko podsłuchiwać i rejestrować szyfrogramy) lub intruzem aktywnym (próbować zmieniać zapis szyfrogramu). Intruz w celu złamania szyfru (odtworzenia otwartego tekstu) posługuje się kryptoanalizą. Dziedzina matematyki obejmująca kryptografię i kryptoanalizę nazywa się kryptologią.

2 Bezpieczeństwo przekazywania informacji w sieci ma cztery aspekty (wzajemnie ze sobą powiązane):
1) poufność (uniemożliwienie zapoznania się z informacją osobom nieupoważnionym); 2) identyfikacja (nadawca musi mieć pewność, że przekazuje informację właściwemu odbiorcy, a odbiorca – że otrzymuje informację od właściwego nadawcy); 3) integralność (odbiorca musi mieć pewność, że informacja nie została zmodyfikowana przez intruza); 4) niezaprzeczalność (nadawca nie może wyprzeć się faktu przekazania danej informacji). Powyższe pojęcia dotyczą nie tylko przekazywania informacji w sieci komputerowej, ale również innych sposobów przekazywania informacji, jednakże informacja w postaci elektronicznej ma określoną specyfikę – jej kopia nie jest odróżnialna od oryginału, dlatego też nie można stosować do jej weryfikacji metod stosowanych w przypadku nośników fizycznych (na przykład sprawdzania autentyczności podpisu metodami grafologicznymi lub odróżniania kserokopii od oryginału).

3 Poufność Zarówno metodę szyfrowania, jak i metodę deszyfrowania można postrzegać jako funkcję, która odwzorowuje ciąg znaków (o zmiennej długości) na inny ciąg znaków. W praktyce kryptograficznej powszechnie przyjmuje się zasadę Kerckhoffa, która mówi, że funkcja szyfrująca powinna być zależna od pewnego parametru nazywanego kluczem, i że do zapewnienia tajności zaszyfrowanej informacji powinno wystarczyć utajnienie samego klucza, natomiast ogólna postać funkcji może być podana do publicznej wiadomości. Nakład pracy potrzebny do złamania szyfru zależny jest od wielu czynników. Główne czynniki to: - jakość funkcji szyfrującej (znalezienie funkcji odwrotnej do niej metodami analitycznymi powinno być odpowiednio trudne); - wielkość zbioru wszystkich możliwych kluczy (co jest związane z długością zapisu klucza – im długość większa, tym zbiór kluczy jest obszerniejszy); - częstość zmiany używanego klucza (im klucz jest częściej zmieniany, tym krótszym czasem na zebranie próbek szyfrogramów i ich analizowanie dysponuje intruz).

4 W kryptoanalizie wyróżniane są trzy klasy zagadnień:
1) Dany jest tylko szyfrogram (lub, ogólnie, pewien zbiór szyfrogramów utworzonych przy użyciu tej samej funkcji z tym samym kluczem) i na tej podstawie należy odtworzyć otwarty tekst. W tym przypadku pomocne mogą być różne dodatkowe założenia, na przykład co do języka naturalnego używanego w otwartym tekście i jego własności statystycznych. Kryptoanalityk może chcieć: a) odtworzyć tylko otwarte teksty związane z przechwyconymi szyfrogramami; b) znaleźć samą funkcję deszyfrującą (i móc w ten sposób rozłamywać dowolne szyfrogramy). 2) Dany jest pewien zbiór szyfrogramów i odpowiadających im otwartych tekstów, należy na tej podstawie znaleźć funkcję deszyfrującą. 3) Kryptoanalityk ma dostęp do funkcji szyfrującej oraz klucza (zatem może sam utworzyć szyfrogram dla dowolnego tekstu otwartego) i na tej podstawie powinien znaleźć funkcję deszyfrującą. Ostatni wymieniony przypadek odpowiada tak zwanemu szyfrowaniu z kluczem publicznym i jest związany z faktem istnienia w matematyce pewnych rodzajów funkcji, dla których bardzo trudno jest znaleźć funkcję odwrotną.

5 Wśród algorytmów szyfrowania/deszyfrowania wyróżnione są dwie ważne klasy:
- szyfrowanie z kluczem symetrycznym; - szyfrowanie z kluczem asymetrycznym. W przypadku szyfrowania z kluczem symetrycznym jeden i ten sam klucz jest parametrem zarówno funkcji szyfrującej, jak i deszyfrującej (w szczególnym przypadku może to być wręcz jedna i ta sama funkcja). W tym przypadku klucz ten musi być kluczem tajnym (znanym wyłącznie uprawnionym stronom procesu komunikacji) i musi być przekazany w bezpieczny sposób (na przykład przez bezpośredni kontakt umożliwiający identyfikację). Szyfrowanie z kluczem asymetrycznym (publicznym) polega na tym, że każda z komunikujących się stron tworzy dwa (matematycznie powiązane ze sobą) klucze: prywatny (tajny) i publiczny (jawny). Klucz publiczny każda ze stron przekazuje drugiej stronie (służy on do szyfrowania), a klucz prywatny zachowuje dla siebie (służy on do deszyfrowania). Tym samym funkcja szyfrująca może być jawna (praktycznie niemożliwe jest obliczenie funkcji odwrotnej do niej), a funkcja deszyfrująca jako parametr wykorzystuje klucz tajny. Przykłady „trudnych” operacji matematycznych (takich, dla których nie są znane wydajne algorytmy): - rozkład dużej liczby naturalnej na dwa duże czynniki pierwsze; - obliczenie logarytmu dyskretnego modulo duża liczba pierwsza.

6 W przypadku nawiązywania przez klienta szyfrowanego połączenia z serwerem procedura wymiany
kluczy wygląda następująco: - po zainicjowaniu przez klienta sesji z serwerem serwer generuje nową parę kluczy i przekazuje klientowi klucz publiczny; - klient również generuje parę kluczy, szyfruje swój klucz publiczny przy użyciu klucza publicznego serwera i przekazuje go serwerowi. Uwaga 1) Powyższy scenariusz może być zrealizowany, jeżeli klient ma pewność, że porozumiewa się z właściwym serwerem (identyfikuje go). Aby klient mógł uzyskać od serwera poufne dane, musi (po otwarciu połączenia szyfrowanego) uwierzytelnić się (podać login i hasło). 2) Często po nawiązaniu połączenia przy użyciu klucza asymetrycznego i uwierzytelnieniu się klienta następuje uzgodnienie klucza symetrycznego pomiędzy obydwiema stronami (szyfrowanie i deszyfrowanie przy użyciu klucza symetrycznego jest, przeciętnie, wielokrotnie szybsze, niż przy użyciu klucza asymetrycznego). 3) Należy brać pod uwagę okres ważności wymienionych kluczy (czas ich przechowywania). Przykładowo protokół SSH używa w kolejnych sesjach klucze przekazane w pierwszej sesji.

7 Inny podział metod szyfrowania to podział na szyfrowanie blokowe i strumieniowe. W przypadku
szyfrowania blokowego szyfrowany tekst jest wstępnie dzielony na fragmenty ustalonej wielkości (bloki), które następnie podlegają oddzielnemu szyfrowaniu przy użyciu ustalonego klucza. Stosowanie szyfrowania blokowego w „czystej postaci” jest niekorzystne, gdyż jednakowym fragmentom otwartego tekstu odpowiadają jednakowe bloki szyfru (co jest czynnikiem ułatwiającym kryptoanalizę przy wzięciu pod uwagę statystycznych własności języka lub fragmentarycznej wiedzy na temat przesyłanego tekstu). Aby utrudnić kryptoanalizę, stosowane są dodatkowe metody, na przykład uzależniające zawartość następnego bloku od zawartości poprzedniego. Szyfrowanie strumieniowe polega również na podziale tekstu na bloki jednakowej wielkości, ale każdy blok jest szyfrowany za pomocą oddzielnego klucza. Ciąg kluczy jest uzyskiwany w następujący sposób: - pierwszy klucz powstaje przez zaszyfrowanie (kluczem jednokrotnym, ustalonym na potrzeby danej transmisji) pewnego ustalonego bloku, nazywanego wektorem inicjującym; - każdy następny klucz powstaje przez zaszyfrowanie (kluczem jednokrotnym) poprzedniego klucza.

8 Zestawienie własności algorytmów opartych na kluczu symetrycznym [A
Zestawienie własności algorytmów opartych na kluczu symetrycznym [A. Tanenbaum]: Algorytm Autorzy Długość klucza (w bitach) Uwagi Blowfish B. Schneier – Przestarzały i wolny DES IBM Zbyt słaby, jak na obecne wymagania IDEA Massey i Xueija Dobry, lecz opatentowany RC R. Rivest – Niektóre klucze są niebezpieczne RC R. Rivest – Dobry, lecz opatentowany Rijndael Daemen i Rijmen – Najlepszy Serpent Anderson, Biham – Bardzo odporny i Knudsen Triple DES IBM Drugi po Rijndael Twofish B. Schneier – Bardzo odporny, szeroko stosowany Przykłady algorytmów opartych na kluczu asymetrycznym : RSA (Rivest, Shamir, Adleman), DSS (Digital Signature Standard).

9 Identyfikacja Identyfikacja polega na stwierdzeniu w chwili nawiązywania kontaktu, że mamy do czynienia z właściwą osobą (firmą, instytucją, ...). Identyfikować możemy kogoś, kogo wcześniej poznaliśmy bezpośrednio, lub kogo zna osoba (firma, instytucja, ...), którą darzymy zaufaniem (i którą umiemy rozpoznać). Proces identyfikacji przy użyciu pewnych atrybutów (na przykład nazwy i hasła) nazywamy uwierzytelnieniem (authentication). Uwaga Pojęcie uwierzytelnienia jest często mylone z pojęciem autoryzacji (authorization). Autoryzacja oznacza uprawnienie do czegoś (na przykład do dostępu do pewnych danych lub do wykonania pewnych czynności). W przypadku nawiązywania kontaktu przez sieć komputerową uwierzytelnienie następuje poprzez wykazanie się znajomością pewnych danych, które są uważane za tajne (znać je może tylko identyfikowana osoba). Ze względów bezpieczeństwa dane te nie powinny być przesyłane bezpośrednio, ale powinny służyć do wykonania pewnych operacji matematycznych.

10 Przykład W przypadku stosowania szyfrowania z kluczem asymetrycznym na ogół algorytmy szyfrowania i deszyfrowania mają własność przemienności: jeśli EX( ) jest funkcją szyfrującą komunikaty przy użyciu klucza X, DX( ) jest funkcją deszyfrującą komunikaty przy użyciu klucza X, a (K, L) jest dowolną parą poprawnie wygenerowanych kluczy (publiczny, prywatny), to nie tylko zachodzi DL(EK(P)) = P ale również EK(DL(P)) = P Oznacza to, że jeśli ktoś opublikuje komunikat zaszyfrowany przy użyciu swojego klucza prywatnego, to każdy odbiorca znający odpowiadający mu klucz publiczny będzie mógł przy jego użyciu odszyfrować ten komunikat i mieć pewność, że pochodzi on od właściciela klucza prywatnego.

11 Integralność Odbiorca komunikatu powinien zostać przekonany o tym, że treść komunikatu nie została zmodyfikowana (oraz że nie jest to powtórzenie komunikatu wysłanego wcześniej). Można to osiągnąć na kilka różnych sposobów. Jednym z najpowszechniej stosowanych sposobów jest stosowanie funkcji, która tekstowi jawnemu (o dowolnej długości) przyporządkowuje ciąg znaków o ustalonej długości, nazywany skrótem komunikatu lub jego abstraktem (message digest). Funkcja ta powinna posiadać poniższe własności: 1) obliczenie funkcji MD(P) dla danego komunikatu P powinno być bardzo łatwe; 2) odtworzenie komunikatu P na podstawie MD(P) powinno być praktycznie niewykonalne; 3) dla danego komunikatu P znalezienie innego komunikatu Q takiego, że MD(P) = MD(Q) powinno być praktycznie niewykonalne; 4) zmiana dowolnego pojedynczego bitu w komunikacie P powinna powodować bardzo duże zmiany w wartości MD(P).

12 Uwaga Ponieważ komunikaty będące argumentami funkcji MD( ) mogą mieć dowolną długość, a wartości funkcji – ustaloną długość, więc funkcja MD( ) nie może być różnowartościowa. Aby zminimalizować prawdopodobieństwo znalezienia dwóch różnych komunikatów P i Q takich, że MD(P) = MD(Q), należy przyjąć jak największą (ale nie niepraktycznie dużą) długość skrótu komunikatu – w praktyce przyjmuje się długości nie mniejsze, niż 128 bitów (a w miarę możliwości większe). Stosowanie funkcji skrótu jest szczególnie przydatne w sytuacji, kiedy wysyłającemu nie zależy na utajnieniu treści komunikatu, a jedynie na zapewnieniu jego niezmienialności. W takim przypadku do wysyłanego tekstem otwartym komunikatu wystarczy jedynie dołączyć jego wartość funkcji skrótu zaszyfrowaną przy użyciu klucza prywatnego nadawcy. Odbiorca może odszyfrować wartość funkcji skrótu przy użyciu klucza publicznego nadawcy i porównać ją z samodzielnie obliczoną wartością funkcji skrótu od danego komunikatu. Jakakolwiek stwierdzona różnica będzie świadczyła o możliwości ingerencji intruza. Uwaga: aby wyeliminować możliwość ataku powtórzeniowego, należy stosować w komunikatach znaczniki czasowe (zmieniane co niezbyt duży okres czasu).

13 Niezaprzeczalność W przypadku wysyłania komunikatów o istotnym znaczeniu (na przykład poleceń wykonania przez bank operacji finansowych) powinny być spełnione następujące warunki [A.S. Tanenbaum]: 1) odbiorca może zweryfikować autentyczność podpisu nadawcy; 2) nadawca nie może wyprzeć się przesłania komunikatu o ustalonej treści; 3) odbiorca nie ma możliwości zmiany treści komunikatu po jego otrzymaniu. W przypadku komunikatów wysyłanych przez sieć komputerową spełnienie powyższych warunków może zapewnić podpis cyfrowy (digital signature). Podpis cyfrowy może być zrealizowany na kilka różnych sposobów. Jednym ze sposobów jest zastosowanie szyfrowania z kluczem asymetrycznym (przy warunku, że algorytmy szyfrowania i deszyfrowania mają własność przemienności).

14 Przykład [A.S. Tanenbaum]
Przyjmijmy następujące oznaczenia: EA( ) – funkcja szyfrująca przy użyciu klucza publicznego osoby A EB( ) – funkcja szyfrująca przy użyciu klucza publicznego osoby B DA( ) – funkcja deszyfrująca przy użyciu klucza prywatnego osoby A DB( ) – funkcja deszyfrująca przy użyciu klucza prywatnego osoby B (zakładamy, że zostało wcześniej poświadczone udostępnienie obu kluczy publicznych). Osoba A, chcąc wysłać uwierzytelnioną informację P do osoby B, wysyła do niej komunikat Q o postaci EB(DA(P)). Osoba B, po otrzymaniu komunikatu Q, oblicza R = DB(Q) = DA(P), a następnie EA(R) (co daje w wyniku jawną treść P). Wartość R jest przechowywana przez osobę B na wypadek, gdyby osoba A próbowała później zaprzeczać wysłaniu przez siebie komunikatu Q. Uwaga Prawomocność powyższej metody może być kwestionowana, jeśli: a) osoba A zgłosi na policję kradzież swojego klucza prywatnego zaraz po jego użyciu; b) osoba A wymieni swój klucz prywatny na inny po czasie przewidzianym odpowiednią umową.

15 Modele logiczne relacji zaufania w sieci komputerowej
W przypadku komunikacji przez sieć komputerową osoby komunikujące się nie widzą siebie wzajemnie, więc muszą korzystać z identyfikacji przez sprawdzenie znajomości pewnych danych (hasło, klucz prywatny). Jednym z podstawowych problemów w kryptografii jest sposób bezpiecznego uzgodnienia tych danych (tak, aby nie wpadły w ręce osób niepowołanych). Można to uzyskać przez: a) bezpośrednie spotkanie (ewentualnie połączone ze sprawdzeniem dokumentów tożsamości, adresu, uzyskanych zezwoleń itp. – zakładamy tu brak podglądu / podsłuchu przez osoby trzecie); b) skorzystanie z poręczenia (poświadczenia tożsamości) przez osobę lub instytucję, którą znamy (umiemy rozpoznać) i uważamy za godną zaufania. Jest możliwe udzielenie poręczenia przez instytucję, której nie znamy, ale za prawdomówność której ręczy inna instytucja (którą znamy i darzymy zaufaniem). Ten schemat może być dalej rozszerzany, tworząc tak zwany łańcuch zaufania (chain trust). Łańcuch zaufania zawsze zaczyna się od osoby / instytucji, którą umiemy już rozpoznać, a kończy się na osobie / instytucji, z którą chcemy komunikować się.

16 Powyższy schemat dotyczy w szczególności komunikacji szyfrowanej przy użyciu kluczy
publicznych. Jeśli nie mamy możliwości bezpośredniego kontaktu a priori z osobą, do której mamy przesłać komunikat zaszyfrowany jej kluczem publicznym, musimy w inny sposób uzyskać pewność, że klucz publiczny, który otrzymaliśmy, pochodzi od tej właśnie osoby. Służą do tego certyfikaty (certificate) poświadczające autentyczność kluczy publicznych (poświadczających jednoznaczny związek klucza z osobą / instytucją o danej nazwie, adresie itp.). Certyfikaty są wydawane przez instytucje nazywane urzędami certyfikacji (CA – Certification Authority). Osoba ubiegająca się o wydanie certyfikatu zgłasza się do odpowiedniego urzędu z dokumentami tożsamości oraz swoim kluczem publicznym, urząd wydaje odpowiednie poświadczenie oraz jego skrót (obliczony przy użyciu MD( )) zaszyfrowany przy użyciu klucza prywatnego CA. Ten zaszyfrowany skrót służy za certyfikat (i może być podany do publicznej wiadomości). Ponieważ klucze publiczne CA oraz funkcje skrótu MD( ) są publicznie znane, każdy może sprawdzić autentyczność certyfikatu (a tym samym klucza publicznego osoby / instytucji certyfikowanej).

17 Urzędy certyfikacji tworzą strukturę hierarchiczną (pojedyncze drzewo lub las). Każda ścieżka
w drzewie jest łańcuchem zaufania (nazywanym w tym przypadku ścieżką certyfikacji). Urzędy, które nie posiadają urzędów nadrzędnych (korzenie drzew certyfikacji – root CA) nazywane są kotwicami zaufania (trust anchors). Definicja zbioru kotwic zaufania jest sprawą problematyczną, gdyż żadne z proponowanych rozwiązań nie uzyskało aprobaty społeczności całego świata. Ostateczna decyzja, kogo obdarzyć zaufaniem, zawsze należy do użytkowników danego rodzaju oprogramowania korzystającego z certyfikatów. Odrębnym problemem jest anulowanie certyfikatów (certyfikaty tracą ważność po upływie określonego czasu, po popełnieniu wykroczenia lub zmianie tożsamości certyfikowanego). Certyfikaty anulowane przed upływem czasu ich ważności (określonego przez znacznik czasowy w certyfikacie) umieszczane są na liście certyfikatów anulowanych przez odpowiedni CA. Zbiór wszystkich obiektów związanych z certyfikacją kluczy publicznych nazywany jest infrastrukturą kluczy publicznych (Public Key Infrastructure – PKI).


Pobierz ppt "7. PODSTAWY KRYPTOGRAFII"

Podobne prezentacje


Reklamy Google