Algorytmy asymetryczne i haszujące

73
Algorytmy asymetryczne i haszujące

description

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 - PowerPoint PPT Presentation

Transcript of Algorytmy asymetryczne i haszujące

Page 1: Algorytmy asymetryczne i haszujące

Algorytmy asymetryczne i haszujące

Page 2: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 3: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 4: Algorytmy asymetryczne i haszujące

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

Page 5: Algorytmy asymetryczne i haszujące

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?

Page 6: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 7: Algorytmy asymetryczne i haszujące

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

Ź ró d łok o m u n ik a tu

A lg o ry tms z y fru ją c y

Tek s t ja w n y Tek s t ja w n y

A lg o ry tmd e s z y fru ją c y

K a n a ł in fo rm a c y jn y

Tek st z a s z y fro w a n y

M ie js c ep rz ez n ac z e n ia

A B

K lu czja w n y B

K lu czp ry w a tn y B

Page 8: Algorytmy asymetryczne i haszujące

Asymetryczne versus symetryczne

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

Niezbędne do działania

Page 9: Algorytmy asymetryczne i haszujące

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

Page 10: Algorytmy asymetryczne i haszujące

Szyfrowanie asymetryczne - poufność

B

Ź ró d łok o m u n ik a tu

S z y fro w a n ie

Ź ró d ło p a ryk lu cz y

D e s z y fro w a n ieM ie js c e

p rz ez n ac z e n ia

K ry p to a n a l ity k X `K P `b

X Y X

K J b

K P b

A

Page 11: Algorytmy asymetryczne i haszujące

Szyfrowanie asymetryczne - uwierzytelnienie

B

A

Ź ró d łok o m u n ik a tu

S z y fro w a n ie

Ź ró d ło p a ryk lu cz y

D e s z y fro w a n ieM ie js c e

p rz ez n ac z e n ia

K ry p to a n a l ity k K P `a

X Y X

K J a

K P a

Page 12: Algorytmy asymetryczne i haszujące

Szyfrowanie asymetryczne – poufność i uwierzytelnienie

BA

Ź ró d łok o m u n ik a tu

S z y fro -w a n ie

Ź ró d ło p a ryk lu cz y

D e s z y -fro w a n ie

M ie js c ep rz ez n ac z e n ia

X Z

K J aK P a

S z y fro -w a n ie

Y XD e s z y -fro w a n ie

Y

Ź ró d ło p a ryk lu cz y

K P b

K J b

Page 13: Algorytmy asymetryczne i haszujące

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

Page 14: Algorytmy asymetryczne i haszujące

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

Page 15: Algorytmy asymetryczne i haszujące

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

Page 16: Algorytmy asymetryczne i haszujące

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

Page 17: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 18: Algorytmy asymetryczne i haszujące

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

Page 19: Algorytmy asymetryczne i haszujące

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?

Page 20: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 21: Algorytmy asymetryczne i haszujące

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 ba• 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

1p22…pt

t

gdzie p1>p2>…>pt to liczby pierwsze oraz i>0 dla i=1,...t

Page 22: Algorytmy asymetryczne i haszujące

Liczby pierwsze

• Niech nwd(a,b) oznacza największy wspólny dzielnik liczb a i b:

nwd(a,b)=max[k takie, że ka oraz kb]• Liczby a i b są względnie pierwsze, jeśli nwd(a,b)=1

Page 23: Algorytmy asymetryczne i haszujące

Jak wyznaczać liczby pierwsze?

• Sito Eratostenesa – usuwanie kolejnych wielokrotności liczb pierwszych

Liczby pierwsze

Page 24: Algorytmy asymetryczne i haszujące

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

Page 25: Algorytmy asymetryczne i haszujące

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

Page 26: Algorytmy asymetryczne i haszujące

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

Page 27: Algorytmy asymetryczne i haszujące

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

Page 28: Algorytmy asymetryczne i haszujące

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

Page 29: Algorytmy asymetryczne i haszujące

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)

Page 30: Algorytmy asymetryczne i haszujące

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

Page 31: Algorytmy asymetryczne i haszujące

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

Page 32: Algorytmy asymetryczne i haszujące

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

Page 33: Algorytmy asymetryczne i haszujące

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) (jawne, obliczone)

{e,n} klucz jawny (jawne, obliczone)

{d,n} klucz prywatny (prywatne, obliczone)

Page 34: Algorytmy asymetryczne i haszujące

Generowanie kluczy w RSA

1. Wybierz dwie liczby pierwsze p, q

2. Oblicz n=pxq

3. Wybierz liczbę całkowitą d taką, że nwd(d,(n))=1 oraz 1<d<(n)

4. Oblicz e d-1 mod (n)

5. Klucz jawny KJ={e,n} i klucz prywatny KP={d,n}

Page 35: Algorytmy asymetryczne i haszujące

Szyfrowanie i deszyfrowanie w RSA

Szyfrowanie• Tekst jawny: M<n• Tekst zaszyfrowany: C = Me mod n

Deszyfrowanie• Tekst zaszyfrowany: C• Tekst jawny: M = Cd mod n

Page 36: Algorytmy asymetryczne i haszujące

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

Page 37: Algorytmy asymetryczne i haszujące

Ł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)

Page 38: Algorytmy asymetryczne i haszujące

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ład221 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.

Page 39: Algorytmy asymetryczne i haszujące

Porównanie RSA i AES

Cecha AES RSA

Szybkość działania

+ –

Bezpieczeństwo + +

Zastosowania Poufność (szyfrowanie

danych)

Uwierzytelnianie, dystrybucja kluczy,

podpis cyfrowy

Page 40: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 41: Algorytmy asymetryczne i haszujące

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

Page 42: Algorytmy asymetryczne i haszujące

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ń

Page 43: Algorytmy asymetryczne i haszujące

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

Page 44: Algorytmy asymetryczne i haszujące

Zastosowanie funkcji haszującej

• AB: EK[M||H(M)]

• Zapewnia poufność, gdyż tylko A i B mają K• Zapewnia uwierzytelniania, gdyż H(M) jest zaszyfrowane

Ź ró d ło AM ie js c e p rz e z n a c z e n ia B

H H (M )

M M

P o ró w n a n ieK K

ME D

HE K [M ||H (M )]

Page 45: Algorytmy asymetryczne i haszujące

Zastosowanie funkcji haszującej

• AB: M||EK[H(M)]

• Nie zapewnia poufność, gdyż tekst M nie jest szyfrowany• Zapewnia uwierzytelniania, gdyż H(M) jest zaszyfrowane

Ź ró d ło AM ie js c e p rz e z n a c z e n ia B

H H (M )

M

P o ró w n a n ie

K K

M

E D

HM ||E K [H (M )]

M

Page 46: Algorytmy asymetryczne i haszujące

Zastosowanie funkcji haszującej

• AB: 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

Ź ró d ło AM ie js c e p rz e z n a c z e n ia B

H H (M )

M

P o ró w n a n ie

K P a K J a

M

E D

HM ||E K P a[H (M )]

M

Page 47: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 48: Algorytmy asymetryczne i haszujące

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

Page 49: Algorytmy asymetryczne i haszujące

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

Page 50: Algorytmy asymetryczne i haszujące

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

Page 51: Algorytmy asymetryczne i haszujące

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

Page 52: Algorytmy asymetryczne i haszujące

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

Page 53: Algorytmy asymetryczne i haszujące

Generowanie wyciągu w MD5

K o m u nika t

K b itó w

L x 5 1 2 b itó w = N x 3 2 b ity

D o p e łn ie n ie (1 -5 1 2 ) b itó w

D łu g o ś ćk o m u n ik a tu(K m o d 2 )6 4

1 0 0 .. .0

Y 0 Y 1

5 1 2 b itó w 5 1 2 b itó w

Y q

5 1 2 b itó w

Y L -1

5 1 2 b itó w

. . .. . .

H M D 5

5 1 2

H M D 5

5 1 2

H M D 5

5 1 2

H M D 5

5 1 2

1 2 81 2 8 1 2 8 1 2 8A B C D

1 2 8 b ito w y w y c ią g

Page 54: Algorytmy asymetryczne i haszujące

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

f (A B C D ,Y ,T [1 ,...,1 6 ])F q

1 2 8

M D q

A B C D

A B C D

3 2

f (A B C D ,Y ,T [1 7 ,...,3 2 ])G q

A B C D

f (A B C D ,Y ,T [3 3 ,...,4 8 ])H q

A B C D

f (A B C D ,Y ,T [4 9 ,...,6 4 ])I q

5 1 2

Y q

+ m o d 2 3 2

+ m o d 2 3 2

+ m o d 2 3 2

+ m o d 2 3 2

1 2 8

M D q + 1

Page 55: Algorytmy asymetryczne i haszujące

Elementarna operacja MD5

• Każdy z kroków wykonywanych 64 razy dla każdego bloku ma postać

AB+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

A B C D

+ m o d 2 3 2

g

+ m o d 2 3 2 X [k ]

+ m o d 2 3 2 T [i]

C L S s

+ m o d 2 3 2

Page 56: Algorytmy asymetryczne i haszujące

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]

Page 57: Algorytmy asymetryczne i haszujące

Funkcje elementarne

D)B(C)(BD)C,F(B, )D(CD)(BD)C,G(B,

DCBD)C,H(B, )D(BCD)C,I(B,

bity Funkcje elementarne

bity Funkcje elementarne

B C D F G H I B C D F G H I 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 0

Page 58: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 59: Algorytmy asymetryczne i haszujące

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

Page 60: Algorytmy asymetryczne i haszujące

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

Page 61: Algorytmy asymetryczne i haszujące

Generowanie wyciągu w SHA

K o m u nika t

K b itó w (< 2 b itó w )6 4

L x 5 1 2 b itó w = N x 3 2 b ity

D o p e łn ie n ie (1 -5 1 2 ) b itó w

D łu g o ś ćk o m u n ik a tu

(K )

1 0 0 .. .0

Y 0 Y 1

5 1 2 b itó w 5 1 2 b itó w

Y q

5 1 2 b itó w

Y L -1

5 1 2 b itó w

. . .. . .

H S H A

5 1 2 5 1 2 5 1 2 5 1 2

1 6 0A B C D E

1 6 0 b ito w y w y c ią g

1 6 0 1 6 0 1 6 0H S H A H S H A H S H A

Page 62: Algorytmy asymetryczne i haszujące

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: 0t19

E TA P (A B C D E ,Y ,K )0 q 0

1 6 0

M D q

A B C D E

5 1 2

Y q

+ m o d 2 3 2

+ m o d 2 3 2

+ m o d 2 3 2

+ m o d 2 3 2

1 6 0

M D q + 1

3 2

A B C D E

A B C D E

E TA P (A B C D E ,Y ,K )1 q 1

E TA P (A B C D E ,Y ,K )7 9 q 7 9

+ m o d 2 3 2

Page 63: Algorytmy asymetryczne i haszujące

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

+ m o d 2 3 2

f t

+ m o d 2 3 2 W t

+ m o d 2 3 2

C L S 3 0

A B C D E

+ m o d 2 3 2

K t

A B C D E

C L S 5

Page 64: Algorytmy asymetryczne i haszujące

Funkcje elementarne

D)B(C)(BD)C,(B,f190 tt

DCBD)C,(B,f3920 tt

D)(CD)(BC)(BD)C,(B,f5904 tt

DCBD)C,(B,f7960 tt

Page 65: Algorytmy asymetryczne i haszujące

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-16Wt-14Wt-8Wt-3

. . .

Y q

3 2

5 1 2 b itó w

W 0 W 1

3 2 3 2

W 1 5

3 2

W 1 6

W 0 W W W2 8 13

3 2

W t

X O R

W t-16 W W Wt t t-14 -8 -3

X O R

3 2

W 7 9

X O R

W 6 3 W W W6 5 7 1 13

. . . . . .

Page 66: Algorytmy asymetryczne i haszujące

Porównanie MD5 i SHAMD5 SHA

Długość wyciągu 128 bitów 160 bitów

Podstawowa jednostka przetwarzania

512 bitów 512 bitów

Liczba kroków 64 80

Maksymalny rozmiar komunikatu

264

Elementarne funkcje logiczne 4 3

Zastosowanie stałych addytywnych

64 4

Page 67: Algorytmy asymetryczne i haszujące

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”

Page 68: Algorytmy asymetryczne i haszujące

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

Page 69: Algorytmy asymetryczne i haszujące

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

Page 70: Algorytmy asymetryczne i haszujące

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

Page 71: Algorytmy asymetryczne i haszujące

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ł

Page 72: Algorytmy asymetryczne i haszujące

Plan wykładu

• Motywacja• Szyfrowanie asymetryczne• Algorytm RSA• Liczby pierwsze• Algorytmy haszujące• Algorytm MD5• Algorytm SHA• Podsumowanie

Page 73: Algorytmy asymetryczne i haszujące

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ń