Wykład 7 Integralność i uwierzytelnianie danych - główne slajdy 16 listopada 2011 Instytut Informatyki Uniwersytet Jagielloński 7.1
Definition Funkcja haszujaca h odwzorowuje łańcuch bitów o dowolnej długości do łańcucha o długości z góry ustalonej odwzorowanie jeden do wielu, stad kolizje odcisk, odcisk cyfrowy, skrót wiadomości, digest konieczne cechy funkcji haszujacej kompresja danych łatwość obliczenia wartości h(x) MDC message detection code: bez klucza majace kontrolować integralność danych (f. OWHF i CRHF) MAC message authentication code: maj a zapewnić pewność źródła danych oraz integralność danych 7.2
podstawowe cechy funkcji haszujacych odporność na odwracanie dla znanego y = h(x) i nieznanego x, niemożliwe jest w znalezienie w rozsadnym czasie takiego x, że y = h(x ) (inaczej jednokierunkowość funkcji) odporność na drugi przeciwobraz dla znanego x, niemożliwe jest znalezienie x x takiego, że h(x ) = h(x) (inaczej słaba odporność na kolizje) odporność na kolizje niemożliwe jest znalezienie dowolnej pary (kolizji) (x, x ) takiej, że h(x) = h(x ) (inaczej silna odporność na kolizje) 7.3
słaba odporność na kolizje Alicja zabezpiecza algorytm szyfrowania przed zmianami 1 dla programu x oblicza h(x) i zapisuje na karcie 2 wychodzac z pracy zabiera kartę 3 przed użyciem sprawdza czy program nie został podmieniony ta metoda się sprawdza jeśli h() jest słabo odporna na kolizje przy podpisach elektronicznych konieczna jest silna odporność na kolizje h() silnie odporna na kolizje jest jednokierunkowa niech h() nie będzie jednokierunkowa dla x obliczamy y(x) i x takie, że h(x) = h(x ) para (x, x ) jest kolizja jeśli x x sprzeczność 7.4
MAC wymagania Funkcje MAC powinny spełniać następujace wymagania łatwość obliczenia h k (x) dla zadanego klucza k kompresja odporność na obliczenia odwrotne: majac dane zero lub więcej par (x i, h k (x i )) praktycznie niemożliwe jest znalezienie pary (x, h k (x)) dla x x i w przeciwnym wypadku możliwe sa oszustwa 7.5
jako funkcja jednokierunkowa możliwa konstrukcja f (x) = E k (x) x dla znanego x założenie, że E jest losowa permutacja dla zadanego y znalezienie x i dowolnego k takich, że E k (x) x = y jest trudne dla zadanego x wartość E k (x) jest właściwie losowa analogicznie losowa jest E k (x) x szansa, że E 1 k (x y) = x jest równie mała taka konstrukcja jest tylko OWF, bo nie obsługuje łańcuchów o dowolnej długości dlatego sa to funkcje kompresji można ja w prosty sposób rozszerzyć poprzez wykorzystanie odpowiedniego trybu dobre ze względu na znane właściwości funkcji szyfrujacych zwykle wolniejsze inne konstrukcje f (x) = E k (x) x k f (x) = E k (x k) x f (x) = E k (x k) x k 7.6
funkcji haszujacych dla potwierdzania posiadania wiadomości możliwość znajomości informacji bez jej ujawniania kodowanie haseł, podpisy cyfrowe, protokoły uwierzytelniania dla tworzenia kluczy tworzenie nowych kluczy z poprzednich hasła jednorazowe klucze w terminalach POS (point of sale) perfect forward secrecy utracenie klucza nie może zagrozić wcześniejszym transakcjom dla generowania losowych łańcuchów bitowych losowość pozwala na tworzenie łańcuchów nieskończone łańcuchy pseudolosowe w protokołach WiFi słaba losowość używać tylko jeśli własności MDC sa zrozumiane dla zastosowania 7.7
schemat Merkle konstrukcji funkcji haszujacej 1 niech f odwzorowuje bloki (n + r) bitowe w bloki n bitowych f jest funkcja kompresji typowo n = 128 i r = 512 2 dopełnić x do wielokrotności r bitów 3 podzielić x na bloki r bitowe x = x 1 x 2... x t 4 dodać opcjonalnie blok długości x t+1 (dla długości < 2 r ) tzw. wzmocnienie Merkle Damgard 5 obliczyć h(x) = H t+1 = f (H t x t+1 ) metody dopełniania H 0 = IV ; H i = f (H i 1 x i ) 1 dopełnić bitami 0 do odpowiedniej wielokrotności (niejednoznaczne) 2 bit 1 na końcu i dopełnianie bitami 0 do odpowiedniej wielokrotności vector IV (initialization vector) jest albo znany, albo wyznaczany na podstawie danych 7.8
dla losowania z powtórzeniami spośród N elementów, prawdopodobieństwo powtórzenia będzie wysokie (> 1/2) po ok. ( N) 253 osoby potrzebne by znaleźć druga osobę o ustalonej dacie urodzin 23 osoby w sali potrzebne dla tej samej dowolnej daty urodzin 7.9
Mallory potrafi podstawić Alicji niewinnie wygladaj acy dokument do podpisania Yuvala dla zadanego x 1 i fałszywego x 2 dla m bitowej funkcji haszujacej uzyskać h(x 1) = h(x 2) dla małych modyfikacji x 1 i x 2 1 wygeneruj 2 m/2 małych modyfikacji x 1 2 zapamiętaj pary (x i, h(x i )) w tablicy indeksowanej przez wartość h(x i ) 3 generuj małe modyfikacje x 2 aż znajdziesz kolizje w tablicy teraz Mallory daje do podpisania x i podstawia x jeśli 2 80 operacji jest uważane za trudne do wykonania w rozsadnym czasie, to klucz powinien mieć 160 bitów! jeśli obliczymy co najmniej 2 n/2 skrótów, to z prawdopodobieństwem większym od 1/2 znajdziemy kolizję Alicja generuje podpisy szeregu informacji Mallory przygotowuje serię dokumentów i skrótów oczekuje na pojawienie się informacji z ustalonym skrótem i podstawia swój dokument 7.10
wymagania względem długości dla OWHF (odporność na przeciwobraz i 2-gi przeciwobraz) m 80 dla CRHF (odporność na przeciwobraz, 2-gi przeciwobraz i na kolizje) m 160 ze względu na możliwość ataku urodzinowego dla MAC m > 64 z kluczem o 64 80 bitach jeśli tylko jeden klucz, to więcej par i możliwy atak off-line w większym stopniu bezpieczeństwo powinno zależeć od klucza to dane z ok. 2000 roku moc się zwiększa 7.11
MDC, MDC-2, MDC-4 wszystkie komunikaty sa dopełnione do wielokrotności wykorzystanie algorytmu Matyas Meyer Oseas 1 H i = E g(hi 1 )(x i ) x i Davies Meyer 1 H i = E xi (H i 1 ) H i 1 Miyaguchi Praneel 1 H i = E g(hi 1 )(x i ) x i H i 1 MDC-2 i MDC-4 sa powtórzeniami z wymieszaniem MDC-2 wyklucza użycie słabych kluczy algorytmu g(u) = u 1 10u 4 u 5u 6 u 7u 9 u 10... u 63 g (u) = u 1 01u 4 u 5u 6 u 7u 9 u 10... u 63 7.12
Tryby MDC Matyas Meyer Oseas Davies Meyer Miyaguchi Preneel H i = H i = H i = E g(hi 1 )(m i ) m i E mi (H i 1 ) H i 1 E g(hi 1 )(m i ) m i H i 1 7.13
MD4 i MD5 MD4 MD5 1 dopełnienie i dopisanie bloku długości 2 mieszanie wykorzystujac 4 zmienne pośrednie (na poczatku 4 IV) 3 kompresja za pomoca 3 funkcji 4 przetwarzanie w blokach po 512 bitów dajac 128 bitów skrótu 5 MD4 nie jest odporne na kolizje wykryte kolizje już po wykonaniu 2 20 operacji 1 rozwinięcie MD4 2 zmiana mieszania, dodatkowe funkcje kompresji, 5 zmiennych pośrednich 3 nie sa znane kolizje dla MD5 4 wciaż zbyt krótki (128 bitów) podatność na atak brute force 7.14
-1 Secure Hash Algorithm, proponowany przez NIST 160 bitów końcowego wyniku i 5 32 bitowych zmiennych pośrednich więcej niż w MD5: kroków kompresji przy wykorzystaniu większej liczby rund (4 zamiast 3) kroków w każdej rundzie (20 zamiast 16) każdy blok 16 słów jest rozszerzany do 80 słów co znacznie zwiększa nadmiarowość ostatnie 64 słowa sa wartościa XOR 4 ostatnich słów w rozszerzonym bloku efekt lawinowy zmienne pośrednie maja ustanowione wartości poczatkowe wykorzystanie kombinacji f t : {0, 1} 32 {0, 1} 32 {0, 1} 32 {0, 1} 32 i przesunięć na kolejnych blokach wynikiem konkatenacja końcowych wartości zmiennych pośrednich wzmocniona odporność na ataki brute force efekt zwiększonych zmian wyniku przy zmianie pojedynczego bitu wpływ operacji rozszerzania 7.15
Rozszerzanie wiadomości możliwe sa ataki przez rozszerzanie wiadomości dostępna jest wiadomość i jej skrót w miarę łatwe jest rozszerzenie wiadomości i zwiazanie z nia skrótu możliwe zapobieżenie obliczyć funkcję skrótu dla wiadomości obliczyć skrót obliczonego skrótu wiadomości nie zabezpiecza prze atakiem urodzinowym 7.16
Użycie identyfikatora jednorazowego zabezpieczenie przed atakiem urodzinowym bez wydłużania skrótu wybranie losowego identyfikatora losowego co najmniej 64 bity jeśli tworzone sa skróty dla wielu wiadomości, to identyfikator wspólny jednorazowy z dodatkiem licznika ustalenie długości wewnętrznego komunikatu dopełnienie identyfikatora zerami do długości wewnętrznego bloku algorytmu skrótu dopisanie skrótu na poczatku i na końcu wiadomości obliczenie skrótu rozszerzonej wiadomości jako wartość wyjściowa podajemy skrót już obliczonego skrótu 7.17
z kluczem MAC często oparte na kodowaniu symetrycznym w trybie CBC wzmocnienie przez dodanie bloku długości służa do sprawdzania integralności informacji oraz uwierzytelniania informacji konstrukcja MAC (Message Authentication Code) z istniejacych MDC MDC zakładaja pewne własności, które nie sa zwykle wykazane 1 M = h(k x) 2 M = h(x k) 3 M = h(k p x k) 4 M = h(k p 1 h(k p 2 x)) 7.18
Igor wysyła do sekretariatu listę studentów, którzy zdali egzamin z BSK ważne by sekretariat był przekonany o autentyczności i integralności maila używany jest kod MAC: Igor ustala z sekretariatem tajny klucz k i Igor wraz z lista wysyła skrót h k (x) sekretariat akceptuje listę, jeśli MAC się zgadza. tu konieczna odporność na drugi przeciwobraz proponowany jest tryb CWC szyfrowania blokowego szyfrowanie i zapewnienie integralności dokumentów ten tryb nie jest ogólnie dostępny sa dostępne różne metody CMAC składnik MAC trybu CWC, możliwy do użycia niezależnie, zbudowany w oparciu o uniwersalna funkcję skrótu HMAC z klucza i wejścia tworzy skrót o ustalonej długości; wykorzystuje dwie f. kryptograficzne, jedna o stałym czasie wykonania, druga o czasie proporcjonalnym do długości komunikatu; nie wykorzystuje szyfrów blokowych 7.19
integralność danych i uwierzytelnianie komunikatów uwierzytelnianie nie może być oddzielone od kontroli integralności tylko MAC przez nie zabezpieczony kanał MAC i kodowanie uwierzytelnianie po szyfrowaniu zaszyfrować obliczyć MAC szyfrogramu preferowane szyfrowanie po uwierzytelnianiu obliczyć MAC komunikatu zaszyfrować komunikat razem z MAC-iem poprawne jeśli dobry MAC szyfrowanie i uwierzytelnianie równolegle obliczać MAC i szyfrogram czasem niebezpieczne MDC przez bezpieczny kanał 7.20