Podstawy. Jednokierunkowość, zastosowania.

Podobne dokumenty
Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

własność odporności na kolizje jest obliczeniowo trudne znalezienie dwóch dowolnych argumentów M M, dla których H(M) = H(M ).

Studia i Materiały Informatyki Stosowanej, Tom 6, Nr 14, 2014 str

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

2 Kryptografia: algorytmy symetryczne

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

Wykład 7. komputerowych Integralność i uwierzytelnianie danych - główne slajdy. 16 listopada 2011

Zarys algorytmów kryptograficznych

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

Zastosowania informatyki w gospodarce Wykład 5

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 9

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

2.1. System kryptograficzny symetryczny (z kluczem tajnym) 2.2. System kryptograficzny asymetryczny (z kluczem publicznym)

BSK. Copyright by Katarzyna Trybicka-Fancik 1. Bezpieczeństwo systemów komputerowych. Podpis cyfrowy. Podpisy cyfrowe i inne protokoły pośrednie

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Przewodnik użytkownika

!"#!"$%! %$"#%!!$! !"!#$ )&! &

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

Bezpieczeństwo kart elektronicznych

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

Algorytmy i struktury danych. wykład 9

Bezpieczeństwo systemów komputerowych. Kryptoanaliza. Metody łamania szyfrów. Cel BSK_2003. Copyright by K.Trybicka-Francik 1

Bezpieczeństwo systemów komputerowych. Metody łamania szyfrów. Kryptoanaliza. Badane własności. Cel. Kryptoanaliza - szyfry przestawieniowe.

1.1. Standard szyfrowania DES

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Luty 2001 Algorytmy (7) 2000/2001

Spis treści. 1. Cyfrowy zapis i synteza dźwięku Schemat blokowy i zadania karty dźwiękowej UTK. Karty dźwiękowe. 1

Authenticated Encryption

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

Bezpieczeństwo danych i systemów informatycznych. Wykład 5

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Marcin Szeliga Dane

11. PROFESJONALNE ZABEZPIECZENIE HASŁEM

Temat 20. Techniki algorytmiczne

P r a w d o p o d o b i eństwo Lekcja 1 Temat: Lekcja organizacyjna. Program. Kontrakt.

Laboratorium nr 1 Szyfrowanie i kontrola integralności

Technologia informacyjna

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

Wersja dokumentacji1.01. TeleToken API

Jednostki informacji. Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles).

Systemy liczenia. 333= 3*100+3*10+3*1

Kompresja tablic obliczeń wstępnych alternatywa dla tęczowych tablic. Michał Trojnara.

Logiczny model komputera i działanie procesora. Część 1.

lekcja 8a Gry komputerowe MasterMind

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Rozdział 4. Macierze szyfrujące. 4.1 Algebra liniowa modulo 26

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Haszowanie (adresowanie rozpraszające, mieszające)

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

Instrukcja warunkowa i złoŝona.

Haszowanie. dr inż. Urszula Gałązka

Copyright by K. Trybicka-Francik 1

Copyright by K. Trybicka-Francik 1

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Bezpieczeństwo aplikacji typu software token. Mariusz Burdach, Prevenity. Agenda

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Układy kryptograficzne z uŝyciem rejestrów LFSR

O sygnałach cyfrowych

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Pracownia elektryczna i elektroniczna. Elektronika cyfrowa. Ćwiczenie nr 5.

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

while(wyrażenie) instrukcja

Arytmetyka liczb binarnych

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP WOJEWÓDZKI BIAŁYSTOK, 16 MARCA 2018

Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera

1. Operacje logiczne A B A OR B

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Kodowanie informacji. Kody liczbowe

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

ALGORYTMY GENETYCZNE ćwiczenia

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

Systemy zapisu liczb.

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Sieci komputerowe. Wykład 11: Podstawy kryptografii. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Programowanie i techniki algorytmiczne

Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące

Technologie Informacyjne

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Układy kombinacyjne. cz.2

Tablice z haszowaniem

1. Maszyny rotorowe Enigma

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

wagi cyfry pozycje

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Algorytmy i struktury danych. Wykład 4

Wprowadzenie do zagadnień bezpieczeńśtwa i kryptografii

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Zapis algorytmów: schematy blokowe i pseudokod 1

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

Transkrypt:

Podstawy. Jednokierunkowość, zastosowania. Spośród wszystkich elementarnych procedur kryptograficznych najbardziej elementarne są funkcje mieszające. Funkcji takich moŝna uŝyć do szyfrowania, potwierdzania toŝsamości, a takŝe w prostych schematach podpisu cyfrowego. Funkcje mieszające są inaczej nazywane funkcjami skrótu lub funkcjami haszującymi. Wynik działania funkcji mieszającej. Argumentem funkcji mieszającej H(M) jest wiadomość M, a jej wynik działania (noszący nazwę skrótu wiadomości) jest liczbą h o ustalonej długości: h = H(M) Właściwości funkcji mieszających: Mając dane M, łatwo jest obliczyć h. Mając dane h, bardzo trudno jest obliczyć M. Mając dane M, bardzo trudno jest znaleźć takie M, Ŝe H(M) = H(M ). Ze względu na własność drugą, funkcje mieszające są często nazywane jednokierunkowymi. Właściwość trzecia oznacza, Ŝe nawet niewielka zmiana danych wejściowych powoduje całkowitą zmianę ciągu wyjściowego. Tę właściwość nazywa się efektem lawinowym. Funkcja mieszające pobiera jako dane wejściowe dowolnej długości ciąg bitów, zwraca natomiast wynik o stałym rozmiarze. Typowym zastosowaniem funkcji mieszających są podpisy cyfrowe. Jeśli dana jest wiadomość M, moŝna ją podpisać bezpośrednio poprzez zaszyfrowanie z uŝyciem klucza prywatnego. JednakŜe operacje, związane z algorytmami z kluczem publicznym, są zwykle bardzo kosztowne obliczeniowo, dlatego teŝ zamiast podpisywać M zwykle stosuje się funkcję mieszającą H i skrót wiadomości H(M). Rozmiar wyniku funkcji h mieści się zwykle w przedziale 128 512 bitów, podczas gdy sama wiadomość moŝe być znacznie większa. Podpisywanie funkcji mieszającej jest zatem znacząco szybsze niŝ podpisywanie całej wiadomości. Aby taka konstrukcja była bezpieczna, niedopuszczalna jest moŝliwość skonstruowania dwóch takich wiadomości M 1 i M 2, dla których funkcja mieszająca zwróci tę samą wartość. Funkcje mieszające mają w kryptografii wiele zastosowań. MoŜna wykorzystać je jako generatory ciągów pseudolosowych (kluczy), tworzonych na podstawie tajnej danej znanej tylko zainteresowanym stronom. - 1 -

2. Odporność na kolizje W większości zastosowań funkcjom mieszającym stawia się dodatkowe wymaganie, nazywane odpornością na kolizje. Kolizję definiujemy jako znalezienie dwóch wiadomości losowych M i M, takich, Ŝe H(M) = H(M ). Jest to zadanie bardzo trudne, moŝna tu jednak zastosować tzw. paradoks urodzin. Paradoks urodzin jest typowym problemem statystycznym. Ile osób musi znaleźć się w jednym pokoju, aby były znaczące szanse, Ŝe znajdzie się tam osoba urodzona konkretnego dnia (np. 1 stycznia)? Odpowiedź wynosi: 253. Zadajemy więc kolejne pytanie: ile osób musi być w tym pokoju, aby uzyskać znaczącą szansę, Ŝe są tam co najmniej dwie osoby urodzone tego samego dnia? Odpowiedź jest zaskakująca: wystarczą 23 osoby (mając 23 osoby mamy nadal 253 róŝne pary ludzi). Poszukiwanie kogoś z określoną datą urodzin jest analogią do ataku, polegającego na tym, Ŝe atakujący posiada wiadomość M i szuka takiej wiadomości M, Ŝe H(M) = H(M ). Natomiast poszukiwanie dwóch ludzi z tą samą losową datą urodzin jest analogiczne do ataku, podanego na samej górze niniejszego paragrafu (znalezienie dwóch wiadomości losowych M i M, takich, Ŝe H(M) = H(M )). Taki atak nazywany jest atakiem urodzinowym. Przyjmujemy, Ŝe jednokierunkowa funkcja skrótu jest bezpieczna i najlepszym sposobem ataku na nią jest łamanie brutalne. Funkcja wytwarza m-bitowy ciąg wyjściowy, co oznacza, Ŝe znalezienie wiadomości, dla której skrót jest równy danej wartości, wymaga obliczenia skrótu dla 2 m losowych wiadomości. Natomiast znalezienie dwóch losowych wiadomości, dla których wartości skrótu będą takie same, wynosi jedynie 2 m/2. Oznacza to znaczne skrócenie czasu poszukiwań: maszyna, która wykonuje obliczenia skrótu dla miliona wiadomości na sekundę, będzie musiała pracować 600 000 lat, aby znaleźć wiadomość, której skrót jest zgodny z danym skrótem 64-bitowym. Ta sama maszyna moŝe znaleźć parę wiadomości o tej samej wartości skrótu w ciągu godziny! Oznacza to, Ŝe obawiając się ataku urodzinowego, naleŝy wybierać funkcję skrótu, oferującą skrót dwukrotnie dłuŝszy od tego, jaki jest potrzebny. MoŜna sobie wyobrazić róŝne scenariusze ataków, oparte na paradoksie urodzin. Na przykład: Osoba A przygotowuje dwie wersje umowy: jedną korzystną dla osoby B, drugą korzystną dla siebie. Osoba A dokonuje zmian w kaŝdym z dokumentów, obliczając za kaŝdym razem wartość funkcji mieszającej (zmiany to np. dostawienie dodatkowych spacji). Jedna zmiana w jednej linii dokumentu, liczącego 32 strony, daje 2 32 róŝnych dokumentów. Osoba A szuka dwóch jednakowych wartości w zbiorze skróconych wartości dwóch dokumentów (jeśli wartości funkcji mieszającej mają 64 bity, to moŝna znaleźć taką parę przeglądając 2 32 wersji kaŝdego dokumentu). Osoba A przekazuje do podpisania osobie B wersję umowy, korzystną dla osoby B. Podpisanie następuje poprzez zaszyfrowanie kluczem prywatnym wartości funkcji mieszającej umowy. Osoba A zamienia umowy, a przed sądem moŝe udowodnić, Ŝe osoba B podpisała niekorzystną dla siebie umowę. - 2 -

3. Długość wartości jednokierunkowej funkcji skrótu Wartości funkcji skrótu, będące liczbami 64-bitowymi, są zbyt krótkie, aby wytrzymać atak metodą dnia urodzin. Większość praktycznie stosowanych funkcji skrótu daje wynik co najmniej 128-bitowy (zaleca się uŝywanie funkcji dających znacznie dłuŝsze wartości), co oznacza, Ŝe atakujący musi obliczyć wartości funkcji skrótu dla 2 64 wiadomości. 4. Przegląd funkcji mieszających 4.1. Funkcja MD5 Funkcja MD5 (Message Digest) została opracowana przez Rona Rivesta. Wytwarza ona skrót 128-bitowy. Po przetworzeniu wstępnym algorytm MD5 przetwarza tekst wejściowy w blokach o długości 512 bitów, podzielonych na 16 podbloków o długości 32 bity kaŝdy. Na wyjściu algorytmu otrzymujemy zbiór czterech bloków 32-bitowych, które po konkatenacji tworzą skrót 128-bitowy. Na początku wiadomość jest uzupełniana ciągiem binarnym tak, Ŝeby jej całkowita długość była o 64 bity krótsza od wielokrotności liczby 512. Ciąg uzupełniający składa się z pojedynczej jedynki, dołączanej do końca wiadomości, oraz takiej liczby zer, jaka będzie konieczna. Następnie do tak otrzymanego ciągu jest dołączany 64-bitowy ciąg, stanowiący zapis długości wiadomości (sprzed dołączenia ciągu uzupełniającego). Te dwa kroki słuŝą do uzyskania długości wiadomości będącej wielokrotnością liczby 512 i zapewniają jednocześnie, Ŝe róŝne wiadomości nie będą miały tej samej postaci po dodaniu ciągu uzupełniającego. Wartości początkowe czterech 32-bitowych zmiennych: A = 0x01234567 B = 0x89ABCDEF C = 0xFEDCBA98 D = 0x76543210 Zmienne te nazywane są zmiennymi łańcuchowymi (ang. chaining variables). Główna pętla algorytmu realizowana jest dla tylu 512- bitowych bloków, ile zawiera ich wiadomość. Cztery zmienne są kopiowane na inne cztery zmienne: A na a, B na b, C na c i D na d. Pętla główna składa się z czterech cykli, które są bardzo podobne. KaŜdy cykl składa się z 16 operacji, a w kaŝdej operacji jest obliczana funkcja nieliniowa trzech z czterech zmiennych a, b, c i d. Następnie do wyniku dodawana jest wartość pozostałej, czwartej zmiennej, pewien podblok wiadomości i pewna stała. Wynik jest przesuwany cyklicznie w prawo o zmienną liczbę bitów, a potem sumowany z jedną ze zmiennych a, b, c lub d. Ostatecznie wyniki jest przypisywany jednej ze zmiennych a, b, c lub d. - 3 -

Rysunek 1 - Podstawowa pętla MD5 Rysunek 2 - Jedna operacja MD5 W algorytmie występują cztery funkcje nieliniowe, po jednej na kaŝdy cykl (i róŝne dla kaŝdego cyklu): F( X, Y, = ( X Y ) ( X ) Z G ( X, Y, = ( X Z ) ( Y ( ) H ( X, Y, = X Y Z I ( X, Y, = Y ( X ( Z )) Funkcja F jest funkcją warunkową: jeśli X to Y, inaczej Z. Funkcja H jest operatorem parzystości. Jeśli M i reprezentuje podblok j (od 0 do 15) wiadomości, a <<< s oznacza przesunięcie w lewo o s bitów, to następujące cztery operacje są określone wzorami: FF(a,b,c,d,M j,s,t) oznacza a = b + ((a + F(b,c,d) + Mj + t i ) <<< s) GG(a,b,c,d,M j,s,t) oznacza a = b + ((a + G(b,c,d) + Mj + t i ) <<< s) HH(a,b,c,d,M j,s,t) oznacza a = b + ((a + H(b,c,d) + Mj + t i ) <<< s) II(a,b,c,d,M j,s,t) oznacza a = b + ((a + I(b,c,d) + Mj + t i ) <<< s) - 4 -

Cztery cykle algorytmu (64 kroki) mogą być opisane następująco: Cykl 1. FF(a,b,c,d,M 0,7,0xd76aa478) FF(a,b,c,d,M 1,12,0xe8c7b756) FF(a,b,c,d,M 2,17,0x242070db) FF(a,b,c,d,M 3,22,0xc1bdceee) FF(a,b,c,d,M 4,7,0xf57c0faf) FF(a,b,c,d,M 5,12,0x4787c62a) FF(a,b,c,d,M 6,17,0xa8304613) FF(a,b,c,d,M 7,22,0xfd469501) FF(a,b,c,d,M 8,7,0x698098d8) FF(a,b,c,d,M 9,12,0x8b44f7af) FF(a,b,c,d,M 10,17,0xffff5bb1) FF(a,b,c,d,M 11,22,0x895cd7be) FF(a,b,c,d,M 12,7,0x6b901122) FF(a,b,c,d,M 13,12,0xfd987193) FF(a,b,c,d,M 14,17,0xa679438e) FF(b,c,d,a,M 15,22,0x49b40821) Cykl 2. GG(a,b,c,d,M 1,5,0xf61e2562) GG(d,a,b,c,M 6,9,0xc040b340) GG(c,d,a,b,M 11,14,0x265e5a51) GG(b,c,d,a,M 0,20,0xe9b6c7aa) GG(a,b,c,d,M 5,5,0xd62f105d) GG(d,a,b,c,M 10,9,0x2441453) GG(c,d,a,b,M 15,14,0xd8a1e681) GG(b,c,d,a,M 4,20,0xe7d3fbc8) GG(a,b,c,d,M 9,5,0x21e1cde6) GG(d,a,b,c,M 14,9,0xc33707d6) GG(c,d,a,b,M 3,14,0xf4d50d87) GG(b,c,d,a,M 8,20,0x455a14ed) GG(a,b,c,d,M 13,5,0xa9e3e905) GG(d,a,b,c,M 2,9,0xfcefa3f8) GG(c,d,a,b,M 7,14,0x676f02d9) GG(b,c,d,a,M 12,20,0x8d2a4c8a) Cykl3. HH(a,b,c,d,M 5,4,0xfffa3942) HH(d,a,b,c,M 8,11,0x8771f681) HH(c,d,a,b,M 11,16,0x6d9d6122) HH(b,c,d,a,M 14,23,0xfde5380c) HH(a,b,c,d,M 1,4,0xa4beea44) HH(d,a,b,c,M 4,11,0x4bdecfa9) HH(c,d,a,b,M 7,16,0xf6bb4b60) HH(b,c,d,a,M 10,23,0xbebfbc70) HH(a,b,c,d,M 13,4,0x289b7ec6) HH(d,a,b,c,M 0,11,0xeaa127fa) HH(c,d,a,b,M 3,16,0xd4ef3085) HH(b,c,d,a,M 6,23,0x4881d05) HH(a,b,c,d,M 9,4,0xd9d4d039) - 5 -

HH(d,a,b,c,M 12,11,0xe6db99e5) HH(c,d,a,b,M 15,16,0x1fa27cf8) HH(b,c,d,a,M 2,23,0xc4ac5665) Cykl4. II(a,b,c,d,M 0,6,0xf4292244) II(d,a,b,c,M 7,10,0x432aff97) II(c,d,a,b,M 14,15,0xab9423a7) II(b,c,d,a,M 5,21,0xfc93a039) II(a,b,c,d,M 12,6,0x655b59c3) II(d,a,b,c,M 3,10,0x8f0ccc92) II(c,d,a,b,M 10,15,0xffeff47d) II(b,c,d,a,M 1,21,0x85845dd1) II(a,b,c,d,M 8,6,0x6fa87e4f) II(d,a,b,c,M 15,10,0xfe2ce6e0) II(c,d,a,b,M 6,15,0xa3014314) II(b,c,d,a,M 13,21,0x4e0811a1) II(a,b,c,d,M 4,6,0xf7537e82) II(d,a,b,c,M 11,10,0xbd3af235) II(c,d,a,b,M 2,15,0x2ad7d2bb) II(b,c,d,a,M 9,21,0xeb86d391) Występujące w powyŝszym wzorze stałe t i były wybierane wg następującej reguły: w kroku i stała t i jest częścią całkowitą liczby 2 32 sin(i), przy czym i jest podane w radianach. Po zakończeniu powyŝszych operacji do wartości zmiennych a, b, c i d są dodawane odpowiednio wartości zmiennych A, B, C i D, a potem algorytm rozpoczyna przetwarzanie następnego bloku wiadomości. Wartością wyjściową jest konkatenacja wartości zmiennych A, B, C i D. 4.2. Funkcja SHA-1 SHA oznacza Secure Hash Algorithm. Wytwarza skrót o długości 160 bitów. Długość wiadomości musi być wielokrotnością 512 uzupełnienie jest identyczne, jak w przypadku MD5 (opis w pkt. 4.1). Pięć 32-bitowych zmiennych jest inicjowanych następująco: A = 0x67452301 B = 0xefcdab89 C = 0x98badcfe D = 0x10325476 E = 0xc3d2e1f0 Następnie rozpoczyna się główna pętla algorytmu. W pętli tej przetwarzany jest kaŝdorazowo 512-bitowy blok wiadomości i proces ten jest powtarzany tyle razy, ile bloków ma wiadomość. Najpierw wartości zmiennych A, B, C, D i E są kopiowane na wartości innych zmiennych, oznaczonych odpowiednio a, b, c, d i e. - 6 -

Główna pętla składa się z czterech cykli, z których kaŝdy zawiera 20 operacji (MD5 miał cztery cykle po 16 operacji). KaŜda operacja składa się z nieliniowej operacji na trzech spośród czterech zmiennych a, b, c i d oraz przesunięcia i sumowania, podobnie jak w przypadku MD5. Zbiór nieliniowych funkcji SHA jest następujący: ( X, Y, = ( X Y) (( X ) dla t < 0, 19> f t f t f t f t ( X, Y, = X Y Z dla t < 20, 39> ( X, Y, = ( X Y) ( X ( Y dla t < 40, 59> ( X, Y, = X Y Z dla t < 60, 79> W algorytmie są teŝ stosowane cztery stałe: K t = 0x5a827999 dla t < 0, 19> K t = 0x6ed9eba1 dla t < 20, 39> K t = 0x8f1bbcdc dla t < 40, 59> K t = 0xca62c1d6 dla t < 60, 79> Źródło tych liczb jest następujące: 0x5a827999 = 2 ½ /4, 0x6ed9eba1 = 3 ½ /4, 0x8f1bbcdc = 5 ½ /4, 0xca62c1d6 = 10 ½ /4 i kaŝda z tych wartości mnoŝona jest razy 2 32. Jeden blok wiadomości, składający się z szesnastu 32-bitowych wartości (słowa od M 0 do M 15 ) jest przekształcany w osiemdziesiąt słów 32-bitowych (od W 0 do W 79 ) przy zastosowaniu następującego algorytmu: W t = M t dla t < 0, 19> W t = ( Wt 3 Wt 8 Wt 14 Wt 16) <<< 1 dla t < 16, 79> Jako ciekawostkę warto wspomnieć fakt, Ŝe pierwotna specyfikacja algorytmu SHA nie zawierała przesunięcia cyklicznego w lewo. Zmiana ta została wprowadzona w celu lepszego zabezpieczenia algorytmu przed atakami. Jeśli t oznacza nr operacji (od 0 do 79), W t reprezentuje podblok wiadomości o numerze t, a <<< s oznacza cykliczne przesunięcie w lewo o s bitów, to główna pętla algorytmu moŝe być przedstawiona następująco: For t = 0 to 79 do Tmp = (a <<< 5) + f t (b,c,d) + e + W t + K t e = d d = c c = b <<< 30 b = a a = Tmp - 7 -

Rysunek 3 - Jedna operacja algorytmu SHA-1 PowyŜszy rysunek ilustruje jeden cykl. Przesuwanie zmiennych realizuje to samo zadanie, które w MD5 było realizowane przez stosowanie róŝnych zmiennych w róŝnych miejscach. Po wykonaniu wszystkich działań zmienne a, b, c, d i e są dodawane odpowiednio do zmiennych A, B, C, D i E, a algorytm jest kontynuowany dla następnego bloku wiadomości. Ostatecznym wyjściem algorytmu jest konkatenacja zmiennych A, B, C, D oraz E. 4.3. Inne funkcje mieszające Istnieje znacznie więcej funkcji mieszających. Większość z nich albo została juŝ przeanalizowana, w wyniku czego stwierdzono, Ŝe nie są one bezpieczne i moŝna je złamać (np. MD4), albo teŝ nie zostały jeszcze przeprowadzone dokładne badania. Dodatkowo opisane funkcje mieszające (MD5 i SHA-1) niestety nie zapewniają juŝ odpowiedniego poziomu bezpieczeństwa ze względu na zbyt krótką wartość skrótu (zwłaszcza, gdy weźmie się pod uwagę atak urodzinowy). Ma to znaczenie zwłaszcza przy uŝywaniu nowych algorytmów szyfrów blokowych, takich, jak AES (z kluczem 256-bitowym). Wychodząc naprzeciw oczekiwaniom, zostały opublikowane specyfikacje nowych funkcji z rodziny SHA: SHA-256, SHA-384 i SHA-512, przeznaczone do współpracy z algorytmami blokowymi z kluczem o długości odpowiednio 128, 192 i 256 bitów. - 8 -

5. Zadania Korzystając z materiałów, dokonać implementacji funkcji mieszających MD5 oraz SHA-1 6. Literatura 6.1. Schneier B. Kryptografia dla praktyków, WNT, Warszawa 6.2. Denning D.E.R. Kryptografia i ochrona danych, WNT, Warszawa 92 6.3. http://www.faqs.org/rfcs/rfc1321.html - dokument opisujący funkcję MD5 6.4. http://www.faqs.org/rfcs/rfc3174.html - dokument opisujący funkcję SHA-1-9 -