Laboratorium nr 1 Szyfrowanie i kontrola integralności Wprowadzenie Jedną z podstawowych metod bezpieczeństwa stosowaną we współczesnych systemach teleinformatycznych jest poufność danych. Poufność danych zapewniana jest przede wszystkim dzięki algorytmom kryptograficznym: zarówno symetrycznym, które wymagają dystrybucji lub ustalenia sekretnego klucza, jak i asymetrycznych, gdzie ochrona danych zapewniana jest dzięki komplementarnej parze kluczy (klucz prywatny i klucz publiczny). Schemat szyfrowania w przypadku szyfrów symetrycznych wygląda następująco: z kolei odszyfrowywanie: gdzie, E oznacza szyfrowanie, D odszyfrowywanie, M to wiadomość przeznaczona do zaszyfrowania (plaintext), C to wiadomość zaszyfrowana (ciphertext), a K to klucz kryptograficzny. Należy pamiętać że w przypadku gdy mamy do zaszyfrowania długi tekst (większy niż pojedynczy blok danych wejściowych konkretnego algorytmu), musimy korzystać z jednego z trybów szyfrowania. Poniżej przedstawione zostały schematy dla najpopularniejszych trybów (te schematy były prezentowane i szczegółowo omawiane na wykładzie): EBC, CBC, OFB, CFB i CTR. Na rysunkach jako przykład szyfru blokowego podany został szyfr DES.
Tryb ECB (Electronic Codebook) Tryb CBC (Cipher Block Chaining)
Tryb CFB (Cipher Feedback) Tryb OFB (Output Feedback)
Tryb CTR (Counter) Integralność danych (data integrity) jest usługą bezpieczeństwa dzięki której jesteśmy w stanie przekonać się czy dane nie zostały zmodyfikowane lub usunięte w nieautoryzowany sposób. Zwykle realizowana jest za pomocą jednokierunkowej funkcji skrótu (funkcji haszującej). Funkcja ta jest nieodwracalna. Obliczony skrót silnie zależy od każdego bitu danych wejściowych. Skrót może zależeć od klucza (np. CBC-MAC) lub jedynie od danych wejściowych (np. MD5, SHA-2). Poniżej przedstawiono tryb CBC-MAC, dzięki któremu możemy obliczać skrótu przy wykorzystaniu szyfru blokowego (np. AES, DES, itp.). Tryb CBC-MAC (funkcja skrótu z kluczem)
Instrukcja do laboratorium nr 1 1. Proszę uruchomić komputer w systemie Windows. 2. Utworzyć na dysku nowy katalog i ściągnąć ze strony: http://kt.agh.edu.pl/~niemiec/lab aplikację szyfrującą i program HexEdit. 3. Aplikacja szyfrująca jest softwarową implementacją najpopularniejszego symetrycznego szyfru blokowego AES (Advanced Encryption Standard). Długość bloku wejściowego (i wyjściowego) w algorytmie AES wynosi 128 bitów. Algorytm ten wspiera trzy długości kluczy. Zapoznaj się z interfejsem graficznym, przeanalizuj dostępne funkcje i ustawienia, a następnie spróbuj zaszyfrować i odszyfrować dowolny tekst w interfejsie oraz przykładowy plik tekstowy. UWAGA!! Jeśli używasz interfejsu graficznego w celu wyświetlenia wyniku szyfrowania, pamiętaj że zaszyfrowany tekst jest wyświetlany jako znaki ASCII i część szyfrogramu może nie być wyświetlona w interfejsie (znaki niedrukowalne). W takim wypadku, skopiowanie szyfrogramu do pierwszego okna i próba odszyfrowania, niestety nie zakończy się sukcesem. Będąc jednak cierpliwym i próbując szyfrować swój tekst za pomocą różnych kluczy (klawisz: Generate ), znajdziesz w końcu odpowiedni szyfrogram. Pamiętaj że czym dłuższy szyfrogram uda się wygenerować z Twojego tekstu, tym większe prawdopodobieństwo że nie ma w nim znaków niedrukowalnych. 4. Aplikacja szyfrująca wspiera kilka trybów szyfrowania długich bloków (OFB, CFB, EBC, CBC, CTR) oraz funkcję skrótu z kluczem, która jest trybem CBC- MAC. Niestety, ich nazwy zostały ukryte. Pomóż prowadzącemu zajęcia zidentyfikować każdy z ukrytych trybów. Wskazówka: Weź pod uwagę cechy jakimi charakteryzuje się dany tryb szyfrowania, np.: propagacja błędów itp. Czy używając tego samego algorytmu szyfrującego i tego samego klucza kryptograficznego, ale różnych trybów szyfrowania, otrzymamy taki sam szyfrogram w każdym przypadku? Dlaczego? 5. Otwórz plik polecenia_sluzbowe.txt znajdujący się na stronie: http://kt.agh.edu.pl/~niemiec/lab a następnie skopiuj treść pliku i zapisz na dysku w formacie.txt (skorzystaj z Notatnika!). Treść dotyczy pewnej poufnej notatki służbowej w której znajdują się dwa polecenia dotyczące kont bankowych. Zaszyfruj plik tekstowy z treścią notatki za pomocą trybu ECB, a następnie przy pomocy programu HexEdit spróbuj tak zmodyfikować
zawartość szyfrogramu aby po odszyfrowaniu, numery kont bankowych zamieniły się miejscami. Do szyfrowania jakich wiadomości można używać trybu ECB? Jaki tryb można zaproponować do zaszyfrowania tej notatki służbowej? 6. Korzystając z trybu który jest funkcją skrótu z kluczem (tryb CBC-MAC), sprawdź jak działa kontrola integralności dla długiego tekstu. Skopiuj z dowolnej strony internetowej długi tekst o dowolnej treści, a następnie wklej go do pliku tekstowego (.txt) lub bezpośrednio do interfejsu graficznego. Oblicz skrót. Następnie zamień tylko jedną literę lub cyfrę w tekście na dowolną inną i znów oblicz skrót. Czy cały skrót się zmienił? Dlaczego? Teraz popraw zmienioną literę lub cyfrę na taka jaka była pierwotnie (przed zmianą) i znów oblicz skrót. Czy teraz skrót jest taki sam jak za pierwszym razem? Dlaczego? 7. Wejdź na stronę: http://www.hashemall.com/ gdzie znajdziesz wiele różnych funkcji skrótu. Wypróbuj przynajmniej najpopularniejsze z nich (MD5, SHA-1 lub SHA-2, RIPEMD). 8. Po zakończeniu ćwiczenia usunąć stworzony przez siebie katalog wraz ze ściągniętymi i stworzonymi plikami. Sprawozdanie W sprawozdaniu z laboratorium nr 1 należy opisać wykonane ćwiczenia i ich wyniki. W szczególności należy odpowiedzieć na zadanie pytania, nazwać znalezione przez siebie tryby szyfrowania i opisać w jaki sposób udało się zidentyfikować każdy z trybów. Dodatkowo we wnioskach należy krótko opisać istotę szyfrowania symetrycznego (zarówno szyfry blokowe jak i strumieniowe) oraz sposób ochrony integralności za pomocą funkcji skrótu (funkcji haszujących).