Algorytmy asymetryczne i haszujące

Slides:



Advertisements
Podobne prezentacje
IDENTYFIKACJA UŻYTKOWNIKA W SIECI INTERNET
Advertisements

Teoria układów logicznych
Instrukcje - wprowadzenie
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Szyfrowanie symetryczne 1
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
KRYPTOLOGIA =KRYPTOGRAFIA+KRYPTOANALIZA
Michał Łasiński Paweł Witkowski
Podstawy kryptografii
Czyli czym się różni bit od qubitu
Liczby Pierwsze - algorytmy
Metody ataku na algorytmy kryptograficzne oparte na informacjach z ulotu elektromagnetycznego Robert Borzęcki.
ZLICZANIE cz. II.
Kryptografia i kryptoanaliza
Mechanika dzielenia na podsieci. Wykład 6
PKI, OPIE Auth Mateusz Jasiak.
Kryptografia – elementarz cześć I
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.
Metody matematyczne w Inżynierii Chemicznej
PKI – a bezpieczna poczta
Kod Graya.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
opracowanie: Agata Idczak
Podstawy układów logicznych
MATEMATYCZNE METODY SZYFROWANIA
Wykonał: mgr inż. Maksymilian Szczygielski
Podstawy analizy matematycznej II
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Zastosowania ciągów.
ZASTOSOWANIE KRYPTOGRAFII W SZYFROWANIU DANYCH
Model relacyjny.
Stało- i zmiennopozycyjna reprezentacja liczb binarnych
Matematyka i system dwójkowy
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Szyfrowanie i deszyfrowanie
Zagadnienia AI wykład 2.
JĘZYKI ASSEMBLEROWE ..:: PROJEKT ::..
SZYFROWANIE Kacper Nowak.
Andrzej Majkowski 1 informatyka +. 2 Bezpieczeństwo protokołu HTTP Paweł Perekietka.
Kryptologia przykład metody RSA
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.
Zasady arytmetyki dwójkowej
Aby do danych nie dostała się postronna osoba ( hacker ) stosuje się różne metody kryptograficzne.
niezawodności Z problemem jakości systemów informacyjnych wiąże się problem zapewnienia odpowiedniej niezawodności ich działania.
Rodzaje Liczb JESZCZE SA TAKIE
Warstwowe sieci jednokierunkowe – perceptrony wielowarstwowe
METODY REPREZENTOWANIA IFORMACJI
9. IMPLEMENTACJE ALGORYTMÓW KRYPTOGRAFICZNYCH
8. MATEMATYCZNE PODSTAWY ALGORYTMÓW KRYPTOGRAFICZNYCH
7. PODSTAWY KRYPTOGRAFII
Liczby 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …(i tak dalej) nazywamy liczbami naturalnymi. Tak jak z liter tworzy się słowa, tak z cyfr tworzymy liczby. Dowolną.
Liczby naturalne i całkowite Spis treści Definicje Działania na liczbach Wielokrotności liczb naturalnych Cechy podzielności Przykłady potęg,potęgi o.
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.
Technika Mikroprocesorowa 1
Wstęp do Informatyki - Wykład 6
Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Kinga Cichoń.
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:

Algorytmy asymetryczne i haszujące

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Motywacja Wzrost potrzeb związanych z bezpieczeństwem z powodu rozwoju sieci komputerowych Potrzeba realizacji elektronicznych transakcji, operacji finansowych z zapewnieniem uwierzytelnienia, podpisu cyfrowego, niezaprzeczalności, itd. Trudna realizacja podanych usług bezpieczeństwa stosując wyłącznie szyfrowanie symetryczne Trudna realizacja usługi dystrybucji kluczu w środowisku sieciowym z wieloma użytkownikami stosując wyłącznie szyfrowanie symetryczne

Motywacja Jak zapewnić uwierzytelnienie? Jak zapewnić dystrybucję kluczy szyfrujących Jak zapewnić niezaprzeczalność danych? Jak zapewnić integralność danych? Jaką usługę bezpieczeństwa można efektywnie realizować za pomocą szyfrowania symetrycznego?

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Szyfrowanie asymetryczne Algorytmy asymetryczne z kluczem jawnym opierają się na funkcjach matematycznych, a nie na podstawianiu i permutacji Szyfrowanie jest asymetryczne, wykorzystuje dwa klucze: publiczny (ogólnie dostępny) i prywatny

Asymetryczne versus symetryczne Niezbędne do działania Szyfrowanie symetryczne Szyfrowanie asymetryczne 1. Ten sam algorytm i ten sam klucz używany jest do szyfrowania i deszyfrowania 1. Jeden algorytm używany jest do szyfrowania i deszyfrowania, z parą kluczy (szyfrowanie i deszyfrowania) 2. Nadawca i odbiorca muszą mieć taki sam algorytm i klucz 2. Nadawca i odbiorca muszą mieć jeden z pary kluczy

Asymetryczne versus symetryczne Niezbędne do bezpieczeństwa Szyfrowanie symetryczne Szyfrowanie asymetryczne 1. Klucz nie może być ujawniony 1. Jeden z dwóch kluczy nie być ujawniony 2. Odszyfrowanie komunikatu bez posiadania innych danych musi być niemożliwe lub zbyt kosztowne 2. Odszyfrowywanie komunikatu bez posiadania innych danych musi być niemożliwe lub zbyt kosztowne 3. Znajomość algorytmu oraz próbki tekstu zaszyfrowanego nie mogą być wystarczające do odkrycia klucza 3. Znajomość algorytmu, jednego klucza i próbki tekstu zaszyfrowanego nie mogą być wystarczające do odkrycia drugiego klucza

Szyfrowanie asymetryczne - poufność

Szyfrowanie asymetryczne - uwierzytelnienie

Szyfrowanie asymetryczne – poufność i uwierzytelnienie

Wymagania dla systemów szyfrowania z kluczem jawnym Strona B może łatwo wygenerować na drodze obliczeń swój klucz jawny i prywatny Nadawca A, znając klucz jawny B i tekst jawny może łatwo na drodze obliczeń stworzyć tekst zaszyfrowany Odbiorca B może łatwo otrzymać tekst jawny z tekstu zaszyfrowanego znając swój klucz prywatny Dla przeciwnika, znającego klucza jawny B, określenie klucza prywatnego B powinno być niewykonalne Dla przeciwnika, znającego klucza jawny B i tekst zaszyfrowany określenie tekstu jawnego powinno być niewykonalne Funkcje szyfrowania i deszyfrowania mogą być stosowane w dowolnej kolejności

Funkcja jednokierunkowa Stworzenie praktycznego systemu szyfrowania asymetrycznego z kluczem jawnym wymaga zastosowania funkcji jednokierunkowej z bocznym wejściem (ang. trapdoor one-way function) Funkcja jednokierunkowa to taka, która przekształca swoją dziedzinę na przedział w taki sposób, że każda wartość funkcji ma tylko jedną odwrotność, z tym że obliczenie funkcji jest łatwe (czas wielomianowy), a obliczenie odwrotności niewykonalne (wysiłek obliczeniowy rośnie szybciej niż wielomianowo): Y=f(X) - łatwe X=f-1(Y) - niewykonalne

Funkcja jednokierunkowa z bocznym wejściem Obliczenie funkcji jednokierunkowej z bocznym wejściem jest łatwe w jednym kierunku, a niewykonalne w drugim, chyba że są znane pewne dodatkowe informacje, które umożliwiają obliczenie odwrotności w czasie wielomianowym Y=fk(X) - łatwe przy znajomości k i X X=fk-1(Y) - łatwe przy znajomości k i Y X=fk-1(Y) - niewykonalne, gdy znamy Y, a nie znamy k

Kryptoanaliza algorytmów asymetrycznych Atak metodą brutalną (sprawdzenie wszystkich kombinacji klucza) Atak na podstawie klucza jawnego – próba wyliczenia klucza prywatnego na podstawie klucza jawnego Atak prawdopodobnego komunikatu – wszystkie możliwe komunikaty są szyfrowane kluczem jawnym i porównywane z tekstem zaszyfrowanym

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Algorytm RSA Algorytm RSA został opublikowany w 1978 roku przez Rona Rivesta, Adi Shamira i Lena Adlemana Algorytm RSA to szyfr blokowy, w którym tekst jawny i tekst zaszyfrowany są liczbami całkowitymi od 0 do n-1 dla pewnego n Tekst jawny jest szyfrowany blokami, z których każdy ma wartość binarną mniejszą niż n

Algorytm RSA Szyfrowanie i deszyfrowanie bloku tekstu jawnego M i zaszyfrowanego C mają następującą formę: C = Me mod n M = Cd mod n = (Me)d mod n = Med mod n Zarówno odbiorca i nadawca muszą znać wartość n Klucz jawny to KJ={e,n}, a klucz prywatny to KP={d,n} Jak wyznaczyć liczby n, e, d aby M = Med mod n oraz podany schemat był bezpieczny?

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Liczby pierwsze Liczba naturalna to liczba całkowita nieujemna Liczba b jest dzielnikiem liczby a, jeśli istnieje takie m, że a=mb. Zapisujemy to jako ba Liczba p>1 jest liczbą pierwszą, jeżeli jej dzielnikami są tylko 1 i p Każda liczba naturalna a może być rozłożona na czynniki: a=p11p22…ptt gdzie p1>p2>…>pt to liczby pierwsze oraz i>0 dla i=1,...t

nwd(a,b)=max[k takie, że ka oraz kb] Liczby pierwsze Niech nwd(a,b) oznacza największy wspólny dzielnik liczb a i b: nwd(a,b)=max[k takie, że ka oraz kb] Liczby a i b są względnie pierwsze, jeśli nwd(a,b)=1

Jak wyznaczać liczby pierwsze? Sito Eratostenesa – usuwanie kolejnych wielokrotności liczb pierwszych Liczby pierwsze

Arytmetyka modulo Dowolną liczbę a można zapisać w następujący sposób: a = nq + r 0  r < n q = floor(n/q) gdzie q nazywamy ilorazem, a r resztą lub rezyduem. Resztę r definiujemy jako a mod n. Dla każdej liczby a możemy zawsze napisać następującą zależność: a = (floor(a/n))n + a mod n Na przykład n = 5 a = 54 = 10x5 + 4  r = 4  4 = 54 mod 5 n=9 a = 73 = 9x8 + 1  r = 1  1 = 73 mod 9 n=3 a = 84 = 3x29 + 0  r = 0  0 = 84 mod 3

Arytmetyka modulo Mówimy, że dwie liczby całkowite a i b przystają modulo n, jeżeli a mod n = b mod n Zapisujemy to jako a  b mod n Na przykład 27  126 mod 9 80  1055 mod 5 121  66 mod 11 63  133 mod 7

Arytmetyka modulo Operator modulo ma następujące własności: a  b mod n jeżeli n(b – a) Z a mod n = b mod n wynika, że a  b mod n Z a mod n = b mod n wynika, że b  a mod n Z a  b mod n oraz b  c mod n wynika, że a  c mod n Ostatnią zależność można udowodnić następująco. Z a  b mod n wynika, że a = qn + r oraz b = pn + r Z b  c mod n wynika, że c = sn + r Więc mamy, że a  c mod n

Arytmetyka modulo Zdefiniujmy zbiór rezyduów liczby n Zn = {0,1,2,…,(n – 1)} Arytmetyka modulo w zbiorze Zn ma następujące własności Prawo przemienności: (a + b) mod n = (b + a) mod n (a x b) mod n = (b x a) mod n Prawo łączności: [(a + b) + c] mod n = [a + (b + c)] mod n Prawo rozdzielności: [c x (a + b)] mod n = [(c x a) + (b x c)] mod n Tożsamość: (0 + a) mod n = a mod n (1 x a) mod n = a mod n

Funkcja Eulera Leonhard Euler – szwajcarski matematyk i fizyk żyjący w XVIII wieku Funkcja Eulera, zapisywana jako (n) oznacza liczbę dodatnich liczb całkowitych mniejszych od n i jednocześnie względnie pierwszych względem n Dla każdej liczby pierwszej p zachodzi (p) = p – 1

Funkcja Eulera Dla dwóch liczb pierwszych p i q oraz ich iloczynu n = pq zachodzi: (n) = (pq) = (p) x (q) = (p – 1)x(q – 1) Zauważmy, że Zn = {0,1,2,…,(pq – 1)} Rezydua nie będące względnie pierwsze względem n to zbiory {p,2p,…,(q – 1)p} oraz {q,2q,…,(p – 1)q} i liczba 0. Dlatego: (n) = pq – [(p – 1) + (q – 1) + 1] = (p – 1)x(q – 1) = (p) x (q)

mk(n)+1 = mk(p – 1)(q – 1)+1  m mod n Twierdzenie Eulera Teza: Dla każdego a i n względnie pierwszych to n dzieli bez reszty liczbę (a(n) – 1), czyli a(n)  1 mod n Z twierdzenia Eulera wynika, że dla dwóch liczb pierwszych p i q i dwóch liczb całkowitych takich, że n = pq oraz 0<m<n i dowolnej liczby k, zachodzi następująca zależność mk(n)+1 = mk(p – 1)(q – 1)+1  m mod n

m(n)  1 mod n  mk(n)  1 mod n Twierdzenie Eulera Teza: mk(n)+1  m mod n Dowód. Z twierdzenia Eulera mamy m(n)  1 mod n Ponieważ m(n) = (an + 1) to (an + 1)k = qn + 1 więc możemy napisać m(n)  1 mod n  mk(n)  1 mod n Ponieważ mk(n) = qn + 1 to mk(n)+1 = m(qn + 1) = (mq)n + m Otrzymujemy więc mk(n)+1  m mod n

RSA i twierdzenie Eulera Z twierdzenia Eulera wynika, że mk(n)+1  m mod n dla n=pq, p i q to liczby pierwsze Aby osiągnąć następującą zależność potrzebną w algorytmie RSA M = Med mod n musimy podstawić ed = k(n)+1

Składniki algorytmu RSA p, q dwie liczby pierwsze (prywatne, wybrane) n = pq (jawne, obliczone) d, takie że nwd(d,(n))=1, 1<d<(n) (prywatne, obliczone) e  d-1 mod (n) {e,n} klucz jawny {d,n} klucz prywatny

Generowanie kluczy w RSA Wybierz dwie liczby pierwsze p, q Oblicz n=pxq Wybierz liczbę całkowitą d taką, że nwd(d,(n))=1 oraz 1<d<(n) Oblicz e  d-1 mod (n) Klucz jawny KJ={e,n} i klucz prywatny KP={d,n}

Szyfrowanie i deszyfrowanie w RSA Tekst jawny: M<n Tekst zaszyfrowany: C = Me mod n Deszyfrowanie Tekst zaszyfrowany: C Tekst jawny: M = Cd mod n

Przykład dla algorytmu RSA Wartość tekst jawnego M=19 Wybieramy dwie liczby pierwsze p=7, q=17 Obliczamy n=7x17=119, (n)=96 Wybieramy takie e, że e i (n) są względnie pierwsze i e<(n); stąd e=5 Obliczamy d takie, że de=1 mod 96 i d<96; stąd d=77, gdyż 77x5=385=4x96+1 Otrzymane klucze to: klucz jawny KJ={5,119}, i klucz prywatny KP={77,119} Szyfrowanie: C=195 mod 119=2476099 mod 119=66 Deszyfrowanie: M=6677 mod 119=1,27..x10140 mod 119=19

Łamanie RSA Metoda brutalna. Odpowiednia długość klucza zapewnia bezpieczeństwo Ponieważ znane jest {n,e} to rozkładając n na czynniki pierwsze p i q można obliczyć (n) i d. Odpowiednie duże liczby pierwsze zapewniają bezpieczeństwo. Dlatego duże liczby pierwsze są nieustannie poszukiwane i następne chronione Określić (n) bezpośrednio Określić d bezpośrednio bez znajomości (n)

Aspekty obliczeniowe RSA Podnoszenie do dużej potęgi dla dużych liczb naturalnych daje bardzo duże wyniki, co następnie utrudnia operacje modulo Można skorzystać z własności arytmetyki modulo: [(a mod n)x(b mod n)] mod n = (axb) mod n Na przykład 221 mod 3 = (211 x 210) mod 3 = [(211 mod 3) x (210 mod 3)] mod 3 = [(2048 mod 3) x (1024 mod 3)] mod 3 = [2 x 1] mod 3 = 2 Dodatkowo używa się specjalnych algorytmów przyspieszających potęgowanie dla dużych potęg.

Porównanie RSA i AES Cecha AES RSA Szybkość działania + – Bezpieczeństwo Zastosowania Poufność (szyfrowanie danych) Uwierzytelnianie, dystrybucja kluczy, podpis cyfrowy

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Algorytmy haszujące Funkcja haszująca z danych o zmiennym rozmiarze wylicza pewien wynik H(M) o stałym rozmiarze, zwany też wyciągiem lub skrótem komunikatu Wynik haszowania jest funkcją wszystkich bitów komunikatu i zapewnia wykrywanie błędów, uwierzytelnianie

Wymagania dla funkcji haszującej H można zastosować do dowolnej wielkości bloku danych H tworzy dane wyjściowe o ustalonej długości H(x) jest łatwo obliczyć dla każdego x, co ułatwia implementację sprzętową i programową Dla każdego kodu m znalezienie takiego x, że H(x)=m nie jest wykonywalne na drodze obliczeń Dla każdego danego bloku x, znalezienie takiego y różnego od x, dla którego H(y)=H(x) nie jest wykonywalne na drodze obliczeń Znalezienie pary (x,y), że H(y)=H(x) nie jest wykonywalne na drodze obliczeń

Przykład funkcji hashującej Jedną z najprostszych funkcji haszujących jest logiczny (bit po bicie) XOR każdego bloku: Ci=bi1 bi2...bim gdzie Ci - i-ty bit wyniku haszowania m - liczba n-bitowych bloków danych wejściowych bij - i-ty bit w j-tym bloku

Zastosowanie funkcji haszującej AB: EK[M||H(M)] Zapewnia poufność, gdyż tylko A i B mają K Zapewnia uwierzytelniania, gdyż H(M) jest zaszyfrowane

Zastosowanie funkcji haszującej AB: M||EK[H(M)] Nie zapewnia poufność, gdyż tekst M nie jest szyfrowany Zapewnia uwierzytelniania, gdyż H(M) jest zaszyfrowane

Zastosowanie funkcji haszującej AB: M||EKPa[H(M)] Nie zapewnia poufność, gdyż tekst M nie jest szyfrowany Zapewnia uwierzytelniania i sygnaturę cyfrową, gdyż H(M) jest zaszyfrowane kluczem prywatnym KPa

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Algorytm MD5 Algorytm MD5 (ang. Message Digest) został stworzony przez Rona Rivesta i opublikowany jako RFC1321 Algorytm z wejściowego komunikatu o dowolnej długości generuje 128-bitowy wyciąg Dane wejściowe przetwarzane są w 512 bitowych blokach Przykład działania MD5("Ala ma kota") = 91162629d258a876ee994e9233b2ad87 MD5("Ala ma koty") = 6a645004f620c691731b5a292c25d37f

Generowanie wyciągu w MD5 Dodawanie bitów dopełniających Dodanie długości komunikatu Inicjalizacja 128-bitowego bufora MD Przetwarzanie komunikatu w blokach 512-bitowych Otrzymanie wyniku

Dodawanie bitów dopełniających Komunikat jest dopełniany tak, by jego długość w bitach przystawała do 448 modulo 512 Czyli długość komunikatu musi być o 64 bity mniejsza niż całkowita wielokrotność 512 bitów Na przykład jeżeli komunikat ma 2345 bitów to najbliższa wielokrotność 512 bitów to 2560, więc komunikat zostanie dopełniony do 2496 bitów Dopełnienie dodaje się zawsze, nawet gdy komunikat ma żądaną długość Dopełnienie składa się z bitu 1, po którym następuje odpowiednia liczba bitów 0

Dodanie długości komunikatu Do komunikatu uzupełnionego o dopełnienie dodaje się 64-bitową reprezentację długości pierwotnego komunikatu w bitach (przed dopełnieniem) Jeżeli komunikat jest dłuższy niż 264 to używa się tylko młodszych 64 bitów długości To oznacza, że pole długości zawiera długość początkowego komunikatu modulo 264 Następnie cały komunikat wraz z dopełnieniem i długością jest przetwarzany w blokach Y0, Y1,...,YL-1, o długości 512 bitów

Inicjalizacja bufora MD Do przechowywania pośrednich i końcowych wartości funkcji haszującej stosuje się bufor 128-bitowy Bufor ten można zapisać jako cztery 32-bitowe rejestry oznaczane jako A, B, C, D Rejestry te są na początku inicjalizowane następującymi wartościami szesnastkowymi (najpierw młodsze oktety): A=01234567 B=89ABCDEF C=FEDCBA98 D=76543210

Generowanie wyciągu w MD5

Przetwarzanie komunikatu w 512-bitowych blokach Wszystkie 4 etapy mają podobną strukturę, lecz każdy korzysta z innej elementarnej funkcji logicznej oznaczanej w specyfikacji jako F, B, H, I W każdym etapie jest przetwarzany aktualny blok Yq oraz bufor ABCD (MDq) Dodatkowo w każdym etapie korzysta się z kolejnych części tablicy T[1,...,64] skonstruowanej na podstawie funkcji sinus

Elementarna operacja MD5 Każdy z kroków wykonywanych 64 razy dla każdego bloku ma postać AB+CLSs(A+g(B,C,D)+X[k]+T[i]) Przez g oznaczamy jedną z funkcji elementarnych F, G, H, I X[k] oznacza k-te 32 bitowe słowo w przetwarzanym 512-bitowym bloku T[i] oznacza i-te 32 bitowe słowo w tablicy stałych Wszystkie dodawania są realizowane modulo 232

Elementarna operacja MD5 Indeksy k do tablicy X oraz wartość przesunięcia s jest zdefiniowana w RFC1321 Elementarna operacja MD5 może być zapisana jako [ABCD k s i] Dla etapów 1-16 A=B+CLSs(A+F(B,C,D)+X[k]+T[i]) [ABCD k s i] [DABC k s i] [CDAB k s i] [BCDA k s i] [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]

Funkcje elementarne

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Algorytm SHA Algorytm SHA (ang. Secure hash algorithm) został stworzony przez Narodowy Instytut Standardów i Technologii USA (NIST) i opublikowany jako FIPS PUB 180 w 1993 roku Algorytm z wejściowego komunikatu o długości mniejszej niż 264 bity generuje 160-bitowy wyciąg Dane przetwarzane są w 512 bitowych blokach Od 2001 powstały cztery warianty określane jako SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512) Ponieważ w 2004 zgłoszono udane ataki na funkcje skrótu mające strukturę podobną do SHA-1 NIST ogłosił, że do 2010 zaprzestanie stosować SHA-1 na rzecz różnych wariantów SHA-2

Generowanie wyciągu w SHA Dodawanie bitów dopełniających Dodanie długości komunikatu , długość musi być mniejsza niż 264 Inicjalizacja 160-bitowego bufora MD A=67452301 B=EFCDAB89 C=98BADCFE D=10325476 E=C3D2E1F0 Przetwarzanie komunikatu w blokach 512-bitowych Otrzymanie wyniku

Generowanie wyciągu w SHA

Przetwarzanie komunikatu w 512-bitowych blokach Podstawowym elementem algorytmu jest przetwarzanie bloku 512 bitowego za pomocą 80 podobnych etapów W każdym etapie jest przetwarzany aktualny blok Yq oraz bufor ABCDE (MDq) Dodatkowo w każdym etapie korzysta się z zdefiniowanej stałej addytywnej Kt: 0t19

Elementarna operacja SHA Każdy z etapów wykonywanych 80 razy dla każdego bloku ma postać A, B, C, D, E  (CLS5(A)+ft(B,C,D)+E+Wt+Kt), A, CLS30(B), C, D Przez ft oznaczamy jedną z funkcji elementarnych Wt oznacza 32 bitowe słowo w przetwarzanym 512-bitowym bloku Kt to zdefiniowana stała

Funkcje elementarne

Tworzenie sekwencji danych wejściowych Wt oznacza 32 bitowe słowo z przetwarzanego 512-bitowym bloku Pierwsze 16 wartości Wt otrzymuje się bezpośrednio z aktualnego bloku 512-bitowego Pozostałe wartości są definiowane według Wt=Wt-16Wt-14Wt-8Wt-3

Porównanie MD5 i SHA MD5 SHA Długość wyciągu 128 bitów 160 bitów Podstawowa jednostka przetwarzania 512 bitów Liczba kroków 64 80 Maksymalny rozmiar komunikatu  264 Elementarne funkcje logiczne 4 3 Zastosowanie stałych addytywnych

Porównanie MD5 i SHA Bezpieczeństwo – SHA daje dłuższy wyciąg, co zapewnia większe bezpieczeństwo Szybkość – oba algorytmy działają podobnie. Jednak ponieważ SHA ma dłuższy bufor działa około 25% wolniej niż MD5 Prostota i poręczność – SHA posiada prostszą strukturę Architektura – MD5 interpretuje komunikat jako sekwencje 32-bitowych słów zapisanych w architekturze „little-endian”, SHA stosuje architekturę „big-endian”

Bezpieczeństwo SHA Złożoność obliczeniowa ataku metodą brutalnej siły dla wykrycia kolizji (wykrycie dwóch wiadomości, których wynikiem jest ta sama funkcja skrótu) wynosi dla SHA 280 Kryptologom udało się opracować atak, którego złożoność obliczeniowa wynosi 269 W związku z tym pojawiły się wątpliwości co do bezpieczeństwa wielu systemów kryptograficznych używających SHA (np. system podpisu elektronicznego) Narodowy Instytut Standardów i Technologii (NIST) zaproponował zastąpienia szeroko używanej funkcji haszującej SHA-1 silniejszą i mocniejszą funkcją SHA-256 lub SHA-512

Najważniejsze cechy SHA-256 SHA-256 daje skrót w długości 256 bitów co podnosi znacznie bezpieczeństwo skrótu Dane wejściowe przetwarzane są w 512 bitowych blokach Generalna zasada działania SHA-256 jest bardzo podobna do MD5 i SHA Zastosowano inne funkcje na etapie przetwarzania pojedynczych 512-bitowych bloków

Najważniejsze cechy SHA-512 SHA-512 daje 512 bitowy skrót. Dane wejściowe przetwarzane są w 1024 bitowych blokach Komunikat jest dopełniany tak, by jego długość w bitach przystawała do 896 modulo 1024 Odpowiednio jak dla SHA-256 wprowadzono nowe funkcje przetwarzające dane

Kryptoanaliza algorytmów haszujących Podstawowy atak na funkcje haszującą może polegać na próbie stworzenia komunikatu, który daje taki sam skrót jak przechwycony komunikat Poza tym można próbować zmodyfikować tekst w taki sposób, aby skrót się nie zmienił

Plan wykładu Motywacja Szyfrowanie asymetryczne Algorytm RSA Liczby pierwsze Algorytmy haszujące Algorytm MD5 Algorytm SHA Podsumowanie

Podsumowanie Algorytmy asymetryczne i haszujące umożliwiają efektywną realizację szeregu funkcji bezpieczeństwa (np. uwierzytelnianie, podpis cyfrowy, integralność) Najbardziej popularny algorytm asymetryczny RSA wykorzystuje liczby pierwsze Bezpieczeństwo RSA opiera się na tym, że rozłożenie dużej liczby na czynniki pierwsze jest złożone obliczeniowo Algorytmy haszujące opierają się na wielokrotnym wykonywaniu podobnych działań