Sieci komputerowe Wykład 11: Kodowanie i szyfrowanie Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 11 1 / 32
Kodowanie Sieci komputerowe (II UWr) Wykład 11 2 / 32
Kody Kodowanie Do przesyłanych wiadomości dodajemy dodatkowe bity kontrolne. Kody detekcyjne: pozwalaja wykryć niektóre przekłamania transmisji. Kody korekcyjne: pozwalaja wykryć i poprawić niektóre przekłamania transmisji. Sieci komputerowe (II UWr) Wykład 11 3 / 32
Skad biora się błędy? Kodowanie Najczęściej: błędy w warstwie fizycznej (bity analogowy sygnał bity), bo analogowy sygnał dociera zniekształcony. Przekłamania niektórych bitów. Przekłamanie ciagu bitów. Zgubienie niektórych bitów (rzadziej: wstawienie nieistniejacych). Rzadziej: błędy urzadzeń końcowych lub pośrednich (wadliwy RAM, błędy w oprogramowaniu). Sieci komputerowe (II UWr) Wykład 11 4 / 32
Kody detekcyjne Kodowanie Sumy kontrolne Kody CRC Kody MAC Sieci komputerowe (II UWr) Wykład 11 5 / 32
Sumy kontrolne Kodowanie Najprostszy wariant kodów detekcyjnych. Dodajemy do siebie (16/32-bitowe) słowa w przesyłanej wiadomości. Warianty: przeniesienia, negowanie bitów,... Nie wykrywaja zamian słów. Efektywnie obliczane przez CPU. Stosowane w warstwie sieciowej (IP) i transportowej (TCP/UDP). Sieci komputerowe (II UWr) Wykład 11 6 / 32
Kodowanie Sumy kontrolne: bit parzystości Najprostszy wariant sumy kontrolnej. Do wiadomości dodajemy bit, który ustawiamy tak, żeby liczba ustawionych bitów w całości była parzysta. Wykrywa przekłamania nieparzystej liczby bitów. Sieci komputerowe (II UWr) Wykład 11 7 / 32
Kodowanie Kody CRC (Cyclic Redundancy Check) notatki. Efektywnie obliczane sprzętowo. Stosowane w warstwie łacza danych Przykładowo Ethernet definiuje konkretny wielomian stopnia 32. Stosowane wielomiany stopnia n wykrywaja najczęściej: pojedyncze błędy bitów, nieparzysta liczbę pojedynczych błędów bitów, dwa błędy bitów oddalonych o co najwyżej 2 n 1 przekłamania ciagu bitów nie dłuższego od n. Sieci komputerowe (II UWr) Wykład 11 8 / 32
Kodowanie Kody CRC (Cyclic Redundancy Check) notatki. Efektywnie obliczane sprzętowo. Stosowane w warstwie łacza danych Przykładowo Ethernet definiuje konkretny wielomian stopnia 32. Stosowane wielomiany stopnia n wykrywaja najczęściej: pojedyncze błędy bitów, nieparzysta liczbę pojedynczych błędów bitów, dwa błędy bitów oddalonych o co najwyżej 2 n 1 przekłamania ciagu bitów nie dłuższego od n. Sieci komputerowe (II UWr) Wykład 11 8 / 32
Kodowanie Kody MAC (Message Authentication Code) Kod uwierzytelniajacy. Cel: zapewnienie integralności wiadomości: trudno ja zmodyfikować tak, żeby uzyskać taki sam MAC. Kryptograficzne funkcje haszujace Funkcja h: funkcja haszujaca, szybko obliczalna, h: ciag bitów dowolnej długości ciag bitów długości d. Przykładowo dla MD5 d = 160, dla SHA-256 d = 256. Dla dowolnego x znalezienie y, takiego że h(x) = h(y) jest obliczeniowo trudne. Funkcję h można użyć do wykrycia błędów w transmisji (MD5 podawane wraz z plikiem na stronie). Jak zapewnić uwierzytelnianie? Sieci komputerowe (II UWr) Wykład 11 9 / 32
Kodowanie MAC a uwierzytelnianie nadawcy (1) m = wiadomość Pomysł 1: wyślij m, h(m). Atakujacy może wysłać m, h(m ). Potrzebny sekret s znany nadawcy i odbiorcy. Sieci komputerowe (II UWr) Wykład 11 10 / 32
Kodowanie MAC a uwierzytelnianie nadawcy (2) m = wiadomość s = sekret znany nadawcy i odbiorcy. Pomysł 2: wyślij m, h(s m). Duża część funkcji h działa w strumieniowy sposób, tzn. majac h(x) można obliczyć h(x y) nie znajac x. Atakujacy może przechwycić oryginalny komunikat i wysłać odbiorcy m m, h(s m m ), tj. dopisać m na końcu. Sieci komputerowe (II UWr) Wykład 11 11 / 32
Kodowanie MAC a uwierzytelnianie nadawcy (2) m = wiadomość s = sekret znany nadawcy i odbiorcy. Pomysł 2: wyślij m, h(s m). Duża część funkcji h działa w strumieniowy sposób, tzn. majac h(x) można obliczyć h(x y) nie znajac x. Atakujacy może przechwycić oryginalny komunikat i wysłać odbiorcy m m, h(s m m ), tj. dopisać m na końcu. Sieci komputerowe (II UWr) Wykład 11 11 / 32
Kodowanie MAC a uwierzytelnianie nadawcy (3) m = wiadomość s = sekret znany nadawcy i odbiorcy. Pomysł 3: wyślij m, h(m s). Duża część funkcji h działa w strumieniowy sposób, tzn. jeśli h(x) = h(x ), to h(x y) = h(x y). Zatem jeśli atakujacy potrafi znaleźć m, takie że h(m ) = h(m), to wtedy może wysłać m, h(m s) nie znajac klucza s. Sieci komputerowe (II UWr) Wykład 11 12 / 32
Kodowanie MAC a uwierzytelnianie nadawcy (3) m = wiadomość s = sekret znany nadawcy i odbiorcy. Pomysł 3: wyślij m, h(m s). Duża część funkcji h działa w strumieniowy sposób, tzn. jeśli h(x) = h(x ), to h(x y) = h(x y). Zatem jeśli atakujacy potrafi znaleźć m, takie że h(m ) = h(m), to wtedy może wysłać m, h(m s) nie znajac klucza s. Sieci komputerowe (II UWr) Wykład 11 12 / 32
Standard HMAC Kodowanie m = wiadomość s = sekret znany nadawcy i odbiorcy. HMAC: wyślij m, h(s h(s m)). Wykorzystywany: różne protokoły szyfrujace (TLS, OpenVPN,...), protokoły routingu dynamicznego,... Sieci komputerowe (II UWr) Wykład 11 13 / 32
Standard HMAC Kodowanie m = wiadomość s = sekret znany nadawcy i odbiorcy. HMAC: wyślij m, h(s h(s m)). Wykorzystywany: różne protokoły szyfrujace (TLS, OpenVPN,...), protokoły routingu dynamicznego,... Sieci komputerowe (II UWr) Wykład 11 13 / 32
Korekcja błędów Kodowanie Jak korygować błędy w transmisji? Kody detekcyjne + mechanizmy ARQ (wysyłania do skutku). Kody korekcyjne. Sieci komputerowe (II UWr) Wykład 11 14 / 32
Kody (ogólnie) Kodowanie (α, β)-kod: zamienia wiadomość długości β na kod o długości α β. Przykładowo: bit parzystości dla ciagów 7-bitowych to (8, 7)-kod. Narzut kodu to α/β. Odległość Hamminga dwóch kodów = minimalna liczba bitów, które musimy zmienić, żeby zmienić jeden kod w drugi. Sieci komputerowe (II UWr) Wykład 11 15 / 32
Kodowanie Odległość Hamminga Kodowanie gwarantujace, że odległość Hamminga między dowolna para kodów to co najmniej k. Potrafi wykryć k 1 błędów pojedynczych bitów. Potrafi skorygować do (k 1)/2 błędów pojedynczych bitów. Dlaczego? Naiwne kodowanie: (3, 1)-kod (każdy bit powtarzamy 3 razy) Koryguje przekłamanie jednego bitu. Sieci komputerowe (II UWr) Wykład 11 16 / 32
Kodowanie Kodowanie Hamminga(7,4) 4 bity danych (d 1, d 2, d 3, d 4 ) 3 bity parzystości (p 1, p 2, p 3, każdy dla innych 3 bitów danych). Odległość Hamminga między dowolnymi dwoma kodami 3 Potrafi skorygować 1 bit. Znacznie wyższa efektywność niż (3, 1)-kod. Obrazek ze strony https://en.wikipedia.org/wiki/hamming(7,4) Sieci komputerowe (II UWr) Wykład 11 17 / 32
Szyfrowanie Sieci komputerowe (II UWr) Wykład 11 18 / 32
Szyfrowanie Co to właściwie jest bezpieczna komunikacja? Alicja Bob niezabezpieczony kanal dane Pożadane cechy: Poufność (tylko Alicja i Bob wiedza, co jest przesyłane). Uwierzytelnianie (potwierdzanie tożsamości partnera). Integralność (wykrywanie (złośliwych) zmian w przesyłanej wiadomości). Sieci komputerowe (II UWr) Wykład 11 19 / 32
Szyfrowanie Co to właściwie jest bezpieczna komunikacja? Alicja Bob niezabezpieczony kanal dane Pożadane cechy: Poufność (tylko Alicja i Bob wiedza, co jest przesyłane). Uwierzytelnianie (potwierdzanie tożsamości partnera). Integralność (wykrywanie (złośliwych) zmian w przesyłanej wiadomości). Sieci komputerowe (II UWr) Wykład 11 19 / 32
Alicja i Bob? Szyfrowanie Posługujemy się przykładem Alicji i Boba. Reprezentuje to: komunikację między dwoma osobami komunikację między fizyczna osoba a serwerem/usługa (np. bankiem) komunikację między dwiema usługami (np. wymieniajacymi tablice routingu) Sieci komputerowe (II UWr) Wykład 11 20 / 32
Szyfrowanie Jak osiagn ać poufność? Alicja Bob niezabezpieczony kanal dane Szyfrować! Alicja ma do wysłania tekst jawny m. Alicja oblicza i wysyła szyfrogram s = E(m). Bob zna funkcję D = E 1 i oblicza: D(s) = E 1 (E(m)) = m. Sieci komputerowe (II UWr) Wykład 11 21 / 32
Szyfrowanie Szyfry monoalfabetyczne (podstawieniowe) Szyfry monoalfabetyczne Funkcja E operuje na pojedynczych literach, przykładowo E zmienia literę a na d, b na h itd. Stosowane już w czasach Juliusza Cezara (wtedy E(a) = (a + 3) mod 26). Jak adwersarz może złamać taki szyfr? Sieci komputerowe (II UWr) Wykład 11 22 / 32
Szyfrowanie Szyfry monoalfabetyczne (podstawieniowe) Szyfry monoalfabetyczne Funkcja E operuje na pojedynczych literach, przykładowo E zmienia literę a na d, b na h itd. Stosowane już w czasach Juliusza Cezara (wtedy E(a) = (a + 3) mod 26). Jak adwersarz może złamać taki szyfr? To zależy od tego, co adwersarz (czyli świnia) potrafi! Alicja Bob niezabezpieczony kanal dane Sieci komputerowe (II UWr) Wykład 11 22 / 32
Szyfrowanie Szyfry monoalfabetyczne, cd. Alicja niezabezpieczony kanal dane Bob Jak zgadnać E (typy ataków): Atak z wybranym tekstem jawnym: świnia potrafi zmusić Alicję, żeby wysłała wybrany przez świnię tekst. Przykładowo: Pchnąć w tę łódź jeża lub ośm skrzyń fig. Atak ze znanym tekstem jawnym: świnia potrafi podgladn ać kilka par (tekst jawny, szyfrogram). Atak ze znanym szyfrogramem: Świnia ma tylko dostęp do kanału, widzi szyfrogramy analiza statystyczna. Sieci komputerowe (II UWr) Wykład 11 23 / 32
Szyfrowanie Szyfry monoalfabetyczne, cd. Alicja niezabezpieczony kanal dane Bob Jak zgadnać E (typy ataków): Atak z wybranym tekstem jawnym: świnia potrafi zmusić Alicję, żeby wysłała wybrany przez świnię tekst. Przykładowo: Pchnąć w tę łódź jeża lub ośm skrzyń fig. Atak ze znanym tekstem jawnym: świnia potrafi podgladn ać kilka par (tekst jawny, szyfrogram). Atak ze znanym szyfrogramem: Świnia ma tylko dostęp do kanału, widzi szyfrogramy analiza statystyczna. Sieci komputerowe (II UWr) Wykład 11 23 / 32
Szyfrowanie Szyfry monoalfabetyczne, cd. Alicja niezabezpieczony kanal dane Bob Jak zgadnać E (typy ataków): Atak z wybranym tekstem jawnym: świnia potrafi zmusić Alicję, żeby wysłała wybrany przez świnię tekst. Przykładowo: Pchnąć w tę łódź jeża lub ośm skrzyń fig. Atak ze znanym tekstem jawnym: świnia potrafi podgladn ać kilka par (tekst jawny, szyfrogram). Atak ze znanym szyfrogramem: Świnia ma tylko dostęp do kanału, widzi szyfrogramy analiza statystyczna. Sieci komputerowe (II UWr) Wykład 11 23 / 32
Szyfrowanie Szyfry monoalfabetyczne, cd. Alicja niezabezpieczony kanal dane Bob Jak zgadnać E (typy ataków): W każdym przypadku: te szyfry sa trywialne do złamania. Główne zastosowanie praktyczne: ROT-13. Atak z wybranym tekstem jawnym: świnia potrafi zmusić Alicję, żeby wysłała wybrany przez świnię tekst. Przykładowo: Pchnąć w tę łódź jeża lub ośm skrzyń fig. Atak ze znanym tekstem jawnym: świnia potrafi podgladn ać kilka par (tekst jawny, szyfrogram). Atak ze znanym szyfrogramem: Świnia ma tylko dostęp do kanału, widzi szyfrogramy analiza statystyczna. Sieci komputerowe (II UWr) Wykład 11 23 / 32
Szyfrowanie Szyfrowanie symetryczne Szyfrowanie symetryczne Szyfrowanie symetryczne Alicja i Bob ustalaja pewien wspólny klucz K. Szyfrogram E K (m) jest funkcja tekstu jawnego m i klucza K. Algorytm obliczajacy E (np. DES, Blowfish lub AES) jest znany wszystkim! Istnieje funkcja deszyfrujaca D = E 1 korzystajaca z klucza, taka że D K (E K (m)) = m. Symetryczność = ten sam klucz jest używany do szyfrowania i deszyfrowania s = E K (m) oblicza D K (s) = m Sieci komputerowe (II UWr) Wykład 11 24 / 32
Szyfrowanie Szyfrowanie symetryczne Najprostsze szyfrowanie symetryczne One-Time Pad Szyfrowanie z kluczem symetrycznym. E K (m) = m xor K (klucz musi być tak samo długi, jak tekst jawny) Jak bezpieczne jest to szyfrowanie? Matematycznie: na podstawie samego szyfrogramu niemożliwy do złamania (nie dostajemy żadnej informacji poza długościa tekstu) Ale: trywialne odzyskiwanie klucza jeśli znamy tekst jawny! Sieci komputerowe (II UWr) Wykład 11 25 / 32
Szyfrowanie Szyfrowanie symetryczne, cd. Szyfrowanie symetryczne Szyfrowanie symetryczne, cd. Algorytm E to zazwyczaj złożenie wielu odwracalnych operacji bitowych (xor z częściami klucza, przesunięcia itp.) Algorytm D to te odwrotności tych operacji wykonane w odwrotnej kolejności. Funkcje E i D sa szybko obliczalne. Siła kryptograficzna algorytmu zależy głównie od długości klucza (56 bitów w przypadku DES, 128 256 dla AES). Sieci komputerowe (II UWr) Wykład 11 26 / 32
Szyfrowanie Szyfrowanie symetryczne Długość klucza vs. długość wiadomości Algorytm szyfrowania symetrycznego zazwyczaj zakłada, że szyfrowana wiadomość ma określona długość (DES: 64 bity, AES: 128 bitów). Wiadomość dzielona na bloki takiego rozmiaru. Ostatni kawałek wiadomości: dopełniany do długości bloku. Jak rozpoznać gdzie zaczyna się wypełnienie? Sieci komputerowe (II UWr) Wykład 11 27 / 32
Wiele bloków (ECB) Szyfrowanie Szyfrowanie symetryczne Każdy blok szyfrowany niezależnie (tym samym kluczem). Problem: Takie same bloki zostana zaszyfrowane na takie same kawałki szyfrogramu. Obrazek ze strony https://en.wikipedia.org/wiki/block_cipher_mode_of_operation Sieci komputerowe (II UWr) Wykład 11 28 / 32
Szyfrowanie Wiele bloków (ECB + losowość) Szyfrowanie symetryczne Przed zaszyfrowaniem bloku m i wylosuj r i (takie że r i = m i ). Każdy blok szyfrowany niezależnie (tym samym kluczem): i-ty kawałek szyfrogramu to c i = E K (m i xor r i ). Wyślij szyfrogram i wszystkie r i. Problem: dwukrotne zwiększenie wysyłanej wiadomości. Obrazek ze strony https://en.wikipedia.org/wiki/block_cipher_mode_of_operation Sieci komputerowe (II UWr) Wykład 11 29 / 32
Szyfrowanie Wiele bloków (CBC + losowość) Szyfrowanie symetryczne Wylosuj tylko r 1 (IV = wektor inicjujacy). Pierwszy kawałek szyfrogramu to c 1 = E K (b 1 xor r 1 ). i-ty kawałek szyfrogramu to c i = E K (b i xor c i 1 ) Wyślij szyfrogram i IV. Obrazek ze strony https://en.wikipedia.org/wiki/block_cipher_mode_of_operation Sieci komputerowe (II UWr) Wykład 11 30 / 32
Szyfrowanie Szyfrowanie symetryczne Szyfrowanie symetryczne Główny problem: jak ustalić wspólny klucz K? Rozwiazanie: przesłać innym, zabezpieczonym kanałem (zazwyczaj niepraktyczne / drogie) Lepiej zastosować inne podejście: szyfrowanie asymetryczne (do przesyłania klucza lub całej wiadomości) Sieci komputerowe (II UWr) Wykład 11 31 / 32
Szyfrowanie Szyfrowanie symetryczne Szyfrowanie symetryczne Główny problem: jak ustalić wspólny klucz K? Rozwiazanie: przesłać innym, zabezpieczonym kanałem (zazwyczaj niepraktyczne / drogie) Lepiej zastosować inne podejście: szyfrowanie asymetryczne (do przesyłania klucza lub całej wiadomości) Sieci komputerowe (II UWr) Wykład 11 31 / 32
Lektura dodatkowa Szyfrowanie Szyfrowanie symetryczne Kurose, Ross: rozdział 8. Tanenbaum: rozdział 8. Sieci komputerowe (II UWr) Wykład 11 32 / 32