9. IMPLEMENTACJE ALGORYTMÓW KRYPTOGRAFICZNYCH

Slides:



Advertisements
Podobne prezentacje
Infrastruktura kluczy publicznych
Advertisements

Tablice 1. Deklaracja tablicy
IDENTYFIKACJA UŻYTKOWNIKA W SIECI INTERNET
Szyfrowanie symetryczne 1
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
KRYPTOGRAFIA A B C D E F G H I J K L Ł M N O P R S T U W X Y Z
KRYPTOGRAFIA KWANTOWA
SZYFRY BEZ TAJEMNIC.
KRYPTOLOGIA =KRYPTOGRAFIA+KRYPTOANALIZA
algorytm znajdowania największego wspólnego dzielnika (NWD)
Podstawy kryptografii
Metody ataku na algorytmy kryptograficzne oparte na informacjach z ulotu elektromagnetycznego Robert Borzęcki.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Kryptografia i kryptoanaliza
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
PKI, OPIE Auth Mateusz Jasiak.
Szyfrowanie symetryczne 2
Kryptografia – elementarz cześć I
Dr Anna Kwiatkowska Instytut Informatyki
Zapis informacji Dr Anna Kwiatkowska.
Techniczne aspekty realizacji podpisu cyfrowego z zastosowaniem algorytmu RSA mgr inż. Wojciech Psik Zespół Szkół Elektronicznych i Ogólnokształcących.
Ochrona danych wykład 2.
Ochrona danych wykład 3.
Dążenie do odkrywania tajemnic tkwi głęboko w naturze człowieka, a nadzieja dotarcia tam, dokąd inni nie dotarli, pociąga umysły najmniej nawet skłonne.
Dążenie do odkrywania tajemnic tkwi głęboko w naturze człowieka, a nadzieja dotarcia tam, dokąd inni nie dotarli, pociąga umysły najmniej nawet skłonne.
Projekt edukacyjny klasy IID
Kod Graya.
Podstawy układów logicznych
MATEMATYCZNE METODY SZYFROWANIA
Wykonał: mgr inż. Maksymilian Szczygielski
Zastosowania kryptografii
ZASTOSOWANIE KRYPTOGRAFII W SZYFROWANIU DANYCH
Systemy liczbowe.
Podpis elektroniczny Między teorią a praktyką
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
Technologie informacyjne mgr inż. Marek Malinowski Zakład Matematyki i Fizyki Wydz. BMiP PW Płock.
ZAPIS BLOKOWY ALGORYTMÓW
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Szyfrowanie i deszyfrowanie
Wymiana podstawy oraz sprawdzanie autentyczności partnera. Algorytm wymiany małego klucza używaniem metody Diffiego - Hellmana.
JĘZYKI ASSEMBLEROWE ..:: PROJEKT ::..
SZYFROWANIE Kacper Nowak.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
1 Kryptografia-0 -zachowanie informacji dla osób wtajemniczonych -mimo że włamujący się ma dostęp do informacji zaszyfrowanej -mimo że włamujący się zna.
Metody matematyczne w inżynierii chemicznej
Zasady arytmetyki dwójkowej
Aby do danych nie dostała się postronna osoba ( hacker ) stosuje się różne metody kryptograficzne.
Algorytmy asymetryczne i haszujące
8. MATEMATYCZNE PODSTAWY ALGORYTMÓW KRYPTOGRAFICZNYCH
10. KRYPTOGRAFICZNE PROTOKOŁY KOMUNIKACYJNE
7. PODSTAWY KRYPTOGRAFII
Projekt firmowej sieci Wi-Fi
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Matematyczne podstawy kryptografii Stefan Dziembowski Instytut Informatyki, Uniwersytet Warszawski.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES
Elementy cyfrowe i układy logiczne
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
SIECI KOMPUTEROWE WYKŁAD 8. BEZPIECZEŃSTWO SIECI
Podstawy Informatyki.
Wstęp do Informatyki - Wykład 6
EWOLUCJA SIŁY SZYFRÓW ABCDEFGHIJKLMNOPQRSTUVWXYZ
KRYPTOGRAFIA KLUCZA PUBLICZNEGO WIKTOR BOGUSZ. KRYPTOGRAFIA KLUCZA PUBLICZNEGO Stosując metody kryptograficzne można zapewnić pełną poufność danych przechowywanych.
Kryptografia-0 -zachowanie informacji dla osób wtajemniczonych
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Liczby pierwsze oraz kryptologia
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

9. IMPLEMENTACJE ALGORYTMÓW KRYPTOGRAFICZNYCH Algorytmy szyfrowania symetrycznego 1) DES (Data Encryption Standard) DES jest standardem przyjętym w 1976 roku w Stanach Zjednoczonych do celów szyfrowania danych nietajnych. Przez około 20 lat pełnił de facto rolę standardu światowego. Jego przyjęciu od początku towarzyszyły pewne kontrowersje, gdyż wiele osób podejrzewało służby bezpieczeństwa USA o ingerencję w jego projekt i pozostawienie w nim „tylnych drzwi” w celu umożliwienia łatwego rozszyfrowywania (podejrzenia te później w dużym stopniu rozwiały się). Obecnie uważany jest za zbyt słaby w istotnych zastosowaniach komercyjnych (ale w wielu miejscach nadal jest używany). DES jest szyfrem blokowym, przetwarzającym bloki 64-bitowe przy użyciu 56-bitowego klucza. Może pracować zarówno w trybie ECB, jak i wykorzystując kilka alternatywnych metod wiązania bloków (działa wtedy nieco wolniej, ale jest bezpieczniejszy). Algorytm deszyfrowania jest taki sam, jak algorytm szyfrowania (jedynie klucze cząstkowe są wykorzystywane w odwrotnej kolejności).

Ogólny schemat działania DES (według [B. Schneier]): Tekst jawny Permutacja początkowa Cykl 1 Klucz cząstkowy 1 Cykl 2 Klucz cząstkowy 2 ........... .............................. Cykl 16 Klucz cząstkowy 16 Odwrotność permutacji początkowej Szyfrogram Każdy z szesnastu cykli jest kombinacją podstawień i przestawień 64-bitowego bloku, wykonanych przy użyciu 48-bitowego klucza cząstkowego. Każdy klucz cząstkowy jest innym 48-bitowym podzbiorem zbioru 56 bitów właściwego klucza. Postacie funkcji wykonujących przestawienia w 64-bitowych blokach zostały utajnione – przyczyny wyjaśniły się dopiero w latach 90-tych (wraz z „cywilnym” odkryciem kryptoanalizy różnicowej).

2) Triple DES (3-DES) Algorytm ten jest wzmocnieniem zwykłego DES przez jego kilkukrotne użycie według następującego schematu: a) szyfrowanie K1 K2 K1 Tekst jawny E D E Szyfrogram b) deszyfrowanie K1 K2 K1 Szyfrogram D E D Tekst jawny K1, K2 – dwa różne klucze 56-bitowe E – szyfrowanie przy użyciu algorytmu DES D – deszyfrowanie przy użyciu algorytmu odwrotnego do DES Sumaryczna długość klucza wynosi 112 bitów. Powyższy szyfr jest uważany za bardzo mocny.

3) AES (Advanced Encryption Standard) AES jest uważany za następcę standardu DES. Został oficjalnie uznany za standard przez rząd USA w 2001 roku. Przez opinię publiczną nie jest uważany za podejrzany, gdyż jego projekt został wybrany w drodze konkursu międzynarodowego, a autorami są Belgowie: J. Daemen i V. Rijmen. Wszystkie szczegóły algorytmu szyfrowania (o nazwie Rijndael, od nazwisk autorów) są podane do publicznej wiadomości. AES jest szyfrem blokowym operującym na blokach 128-bitowych. Długość klucza może wynosić 128 bitów lub 256 bitów. Ogólna zasada działania jest podobna do zasady działania DES – główna praca jest wykonana w pewnej liczbie cykli (10 dla klucza 128-bitowego, a 14 dla klucza 256-bitowego) i sprowadza się do dość skomplikowanych podstawień i przestawień parametryzowanych kluczami cząstkowymi. Jedną z dużych zalet AES jest to, że wszystkie elementarne operacje wykonywane w ramach procedur szyfrowania i deszyfrowania są operacjami na kompletnych bajtach (ósemkach bitów), co znacznie zwiększa wydajność realizacji sprzętowych (i znacznie ułatwia realizacje programowe). Standard AES jest uważany za bardzo bezpieczny.

4) IDEA (International Data Encryption Algorithm) IDEA jest szyfrem blokowym operującym na blokach 64-bitowych przy użyciu 128-bitowego klucza. Był opracowany w Szwajcarii w latach, kiedy powątpiewano już w bezpieczeństwo algorytmu DES, a nie był jeszcze opublikowany AES. Algorytm IDEA wykonuje 8 cykli szyfrowania. W każdym cyklu jest wykonywana pewna liczba operacji bitowej sumy modulo 2, dodawania arytmetycznego i mnożenia arytmetycznego w arytmetyce modulo 216 na czterech 16-bitowych podblokach bloku 64-bitowego oraz sześciu 16-bitowych kluczach cząstkowych (będących podzbiorami klucza 128-bitowego). Podobnie, jak DES, IDEA może być wykorzystywany zarówno w trybie ECB, jak i w jednym z używanych trybów wiązania bloków. Można też stosować jego zwielokrotnienie analogiczne do zastosowanego w 3-DES. Algorytm IDEA jest w działaniu prawie tak samo wydajny, jak DES, ale jest uważany za dużo bezpieczniejszy. Jego pełna analiza kryptologiczna (prawdopodobnie) nie jest jeszcze znana.

5) RC 4 W użyciu jest kilka szyfrów o nazwach rozpoczynających się od RC: RC 4, RC 5 i RC 6. Wszystkie są autorstwa Ronalda Rivesta (stąd ich nazwy), ale nie są szyframi tego samego gatunku: RC 4 jest szyfrem strumieniowym, a RC 5 i RC 6 są szyframi blokowymi (RC 6 jest ulepszeniem RC 5). Szyfr RC 4 powstał w 1987 roku i przez kilka lat szczegóły jego konstrukcji były uważane za tajemnicę firmową. W 1994 roku szczegóły te zostały anonimowo opublikowane w Internecie. Długość klucza może zmieniać się w zakresie od 40 do 256 bitów. Przez dłuższy czas rząd USA utrzymywał embargo na eksport RC 4 z długością klucza większą, niż 40. Działanie RC 4 jest oparte na generowaniu pseudolosowego strumienia bajtów, który następnie jest mieszany (przez sukcesywne obliczanie bitowych sum modulo 2) ze strumieniem bajtów tekstu jawnego. Początkowy stan generatora jest uzyskiwany przy użyciu klucza.

Główną strukturą danych używaną przez generator pseudolosowy jest 256-elementowa tablica permutacji liczb z zakresu od 0 do 255. Początkowa zawartość tej tablicy jest uzyskiwana następująco: for (i = 0; i < 256; i++) S[i] = i; // S – tablica permutacji j = 0; for (i = 0; i < 256; i++) { j = (j + S[i] + klucz[i % d] ) % 256; // d – długość klucza zamień (S[i], S[j] ); // zamiana wartościami dwóch elementów tablicy S }

Samo generowanie strumienia szyfrowego odbywa się następująco: while (1) { i = (i + 1) % 256; j = (j + S[i] ) % 256; zamień (S[i], S[j] ); wypisz (S[S[i] + S[j] ) % 256] ); // bajt podawany na wyjście jako wynik } Ze względu na swoją prostotę szyfr RC 4 jest bardziej wydajny od szyfru blokowego DES. Miał zastosowanie w protokole WEP sieci bezprzewodowych, we wczesnych wersjach protokołu SSL (używanego przez przeglądarki) oraz, opcjonalnie, w protokole SSH. Obecnie jest uważany za zbyt słaby i zalecane jest jego wycofanie z użycia.

Algorytmy szyfrowania z kluczem publicznym 1) RSA (Rivest, Shamir, Adleman) RSA został wynaleziony przez wyżej wymienioną grupę pracowników M.I.T. i opublikowany w 1978 roku. Trudność znalezienia klucza prywatnego na podstawie klucza publicznego wynika w nim z trudności rozkładu na czynniki pierwsze dużych liczb (o długościach rzędu kilkuset bitów). W ujęciu matematycznym zarówno treść jawna komunikatu, jak i odpowiadający jej szyfrogram są traktowane jako duże liczby naturalne, na których wykonywane są działania arytmetyczne. Ciąg działań prowadzący do wygenerowania pary kluczy (publiczny, prywatny) jest następujący: - należy wybrać losowo dwie duże (kilkusetcyfrowe) liczby pierwsze p, q i obliczyć ich iloczyn n = p * q; - należy losowo wybrać klucz szyfrujący e taki, że liczby e oraz (p – 1) * (q – 1) są względnie pierwsze (czyli nie mają wspólnych czynników pierwszych większych, niż 1); - przy użyciu algorytmu Euklidesa należy obliczyć klucz deszyfrujący d taki, że (d * e) % ((p – 1) * (q – 1)) = 1.

Uwaga: 1) w rzeczywistości dowolna z par (d, n) i (e, n) może być traktowana jako klucz szyfrujący (i, odpowiednio, druga z nich jako deszyfrujący); 2) po obliczeniu d oraz e należy wymazać z pamięci wartości p oraz q (aby nie mogły posłużyć do odtworzenia klucza prywatnego na podstawie publicznego). Jeśli RSA ma być używany do szyfrowania, należy użyć go jako szyfru blokowego (podzielić komunikat na niezbyt duże fragmenty jednakowej długości, traktowane następnie jako liczby naturalne). Operacja szyfrowania bloku komunikatu m: c = me % n Operacja deszyfrowania bloku szyfrogramu c: m = cd % n

W obecnych czasach powyższy sposób szyfrowania uważa się za bardzo bezpieczny, ale przy warunku zastosowania odpowiednio długich kluczy (typowo o długości 1024). Przy tak długich kluczach algorytm RSA działa bardzo powoli (rzędu 1000 razy wolniej od DES w przypadku realizacji sprzętowych i rzędu 100 razy wolniej w przypadku realizacji programowych). W związku z tym używany jest głównie do: - bezpiecznego przekazywania kluczy symetrycznych (służących następnie do wielokrotnie szybszego szyfrowania symetrycznego); - przekazywania szczególnie tajnych, krótkich komunikatów. Uwaga W przypadku wynalezienia szybkiego algorytmu rozkładu dużych liczb na czynniki pierwsze szyfr RSA przestanie być bezpieczny.

2) DSS (Digital Signature Standard) Standard DSS został zaproponowany przez rząd USA w 1991 roku w celu umożliwienia składania podpisu elektronicznego przy użyciu innego narzędzia, niż RSA (który był w USA chroniony prawem patentowym do 2000 roku, i którego użycie było w tym czasie płatne). DSS opiera się w swoim działaniu na algorytmie El Gamala, który może służyć zarówno do składania podpisu elektronicznego, jak i do szyfrowania z kluczem publicznym. Szyfrowanie przy użyciu algorytmu El Gamala jest podobne do wykonywania algorytmu Diffi’ego i Hellmana: - należy uzgodnić dużą liczbę pierwszą p oraz losową liczbę g taką, że g < p (mogą być podane do publicznej wiadomości); - należy wybrać losowo klucz prywatny x taki, że x < p; - należy obliczyć y = gx % p (klucz publiczny stanowi trójka wartości y, g, p); - aby zaszyfrować blok tekstu jawnego m, należy wylosować liczbę k względnie pierwszą z p – 1, a następnie obliczyć a = gk % p oraz b = (yk * m) % p (para liczb (a, b) jest szyfrogramem); - aby odszyfrować szyfrogram (a, b), należy obliczyć m = (b / ax) % p .

Algorytm El Gamala jest wariantem wcześniej opublikowanego algorytmu Rabina. Jego trudność opiera się na trudności obliczania logarytmów dyskretnych modulo dana liczba pierwsza (podobnie, jak RSA, przestanie być bezpieczny w przypadku wynalezienia wydajnej metody obliczania takich logarytmów). W opinii kryptologów algorytm El Gamala jest bezpieczny w przypadku stosowania odpowiednio długich kluczy (1024 bity zamiast standardowo używanych 512 bitów). Przy tak długim kluczu działanie algorytmu El Gamala jest ponad 10 razy wolniejsze od działania RSA. Szyfrogram uzyskany przez zastosowanie algorytmu El Gamala jest dwukrotnie dłuższy od tekstu jawnego. Opinia publiczna traktuje standard DSS z pewną dozą nieufności, ponieważ został on zaproponowany przez rząd USA (w porozumieniu z tajnymi służbami NSA).

Jednokierunkowe funkcje skrótu 1) MD5 (Message Digest version 5) Algorytm MD5 został opracowany przez Ronalda Rivesta w 1991 roku jako następca wcześniejszego (i zbyt słabego) algorytmu MD4. Na podstawie komunikatu o dowolnej długości oblicza jego skrót o długości 128 bitów. Ogólny opis działania algorytmu MD5: - należy dopisać do całego komunikatu bit 1, a następnie tyle zer, aby po podzieleniu komunikatu na bloki 512-bitowe ostatni (niepełny) blok miał długość 448; - ostatni blok należy uzupełnić do długości 512 dopisując do niego 64-bitową liczbę naturalną określającą długość komunikatu (przed dopisaniem dodatkowych bitów); - czterem zmiennym roboczym A, B, C, D (32-bitowym) należy przypisać wartości początkowe: A = 0x 01 23 45 67; // wartość szesnastkowa B = 0x 89 AB CD EF; C = 0x FE DC BA 98; D = 0x 76 54 32 10;

- dla każdego z 512-bitowych bloków uzupełnionego komunikatu wykonywane są 4 cykle, z których każdy wykonuje 16 operacji na zmiennych roboczych oraz 32-bitowych podblokach 512-bitowego bloku komunikatu. Operacje te są parametryzowane dodatkowymi wartościami, które są różne dla wszystkich 64 kroków obliczeniowych. W i-tym kroku wartość ta jest równa części całkowitej z wyrażenia 232 * abs(sin(i)), gdzie i jest podane w radianach; - po wykonaniu wszystkich obliczeń wartość funkcji skrótu jest konkatenacją (złożeniem) wartości zmiennych A, B, C, D. Ze względu na duże rozpowszechnienie algorytmu MD5 jego kryptoanaliza była prowadzona dość intensywnie. Pierwsze skuteczne próby ataku miały miejsce w 2005 roku. W 2008 roku zostało udowodnione, że certyfikaty SSL oparte na MD5 (używane przez większość ówczesnych przeglądarek internetowych) można podrobić w dość krótkim czasie przy użyciu niezbyt zaawansowanego sprzętu komputerowego. Obecnie stosowanie algorytmu MD5 uważane jest za ryzykowne i najbardziej zalecaną funkcją skrótu jest SHA-3.

2) SHA-1 (Secure Hash Algorithm version 1) Algorytm SHA-1 został zaprojektowany przez pracowników NSA w celu zastosowania go w standardzie podpisu elektronicznego DSA. Pod względem konstrukcji może być uważany za odmianę algorytmu MD5. Tworzy skrót 160-bitowy (znacznie bezpieczniejszy od 128-bitowego). Podział komunikatu na bloki 512-bitowe i uzupełnienie ostatniego bloku bitami dodatkowymi przebiega tak samo, jak w algorytmie MD5. SHA-1 używa pięciu 32-bitowych zmiennych roboczych o następujących wartościach początkowych: A = 0x 67 45 23 01 B = 0x EF CD AB 89 C = 0x 98 BA DC FE D = 0x 10 32 54 76 E = 0x C3 D2 E1 F0 Każdy blok komunikatu jest przetwarzany w czterech cyklach po 20 operacji w każdym. Operacje są wykonywane przy użyciu zmiennych roboczych i mają podobny charakter, jak w MD5. W każdym z czterech cykli jest wykorzystywana inna stała. Stałe te mają wartości odpowiednio 0x 5A 82 79 99, 0x 6E D9 EB A1, 0x 8F 1B BC DC i 0x CA 62 C1 D6.

Podobnie, jak w przypadku MD5, ostateczna wartość funkcji skrótu jest konkatenacją wartości zmiennych A, B, C, D i E. Bezpieczeństwo funkcji skrótu SHA-1 zostało zakwestionowane w 2005 roku. Kolejnym standardem (również zaproponowanym przez NSA) był SHA-2, zawierający cztery funkcje produkujące skróty o czterech różnych długościach: SHA-224, SHA-256, SHA-384 i SHA-512 (liczby oznaczają długości skrótów w bitach). Funkcje te są bezpieczniejsze od SHA-1, ale są mniej rozpowszechnione – przyczyn można upatrywać w braku wsparcia ze strony starszych systemów operacyjnych, w pochodzeniu funkcji (NSA), w dość zaawansowanych próbach ataków oraz w oczekiwaniu na powszechne wdrożenie standardu SHA-3. Standard SHA-3 został opublikowany w 2012 roku. Jest oparty na funkcji skrótu Keccak (wybranej w drodze międzynarodowego konkursu, autorzy: G. Bertoni, J. Daemen, M. Peeters). Wydajność jest około półtorakrotnie wyższa, niż wydajność algorytmów używanych w SHA-2, a bezpieczeństwa na razie jeszcze nikt nie zakwestionował (choć warto zauważyć, że od opublikowania standardu SHA-3 nie upłynęło zbyt wiele czasu).