Warunki zaliczenia
Końcowa ocena składa się z testu i zadań wykonywanych podczas zajęć. Zadania należy wysyłać na adres mailowy osoby prowadzącej z tytułem wiadomości w następującym formacie:
Bezpieczeństwo informatyczne <nr indeksu> zadanie <nr zadania>, <nr zadania 2>, ...
Każdy zbiór zadań posiada określony termin. Zadania zwrócone po terminie mają połowę oryginalnych punktów.
Test odbędzie się dnia 2025-12-06 i stanowi 30% końcowej sumy punktów.
Zadania (termin 2025-11-15)
Zadanie 1 (1pkt)
Opisz krótko model bezpieczeństwa CIANA oraz model zagrożeń STRIDE.
Zadanie 2 (2pkt)
Odpowiedz na następujące pytania dotyczące kryptografii post kwantowej:
-
Dlaczego jej potrzebujemy?
-
Jakie algorytmy są podatne na atak z użyciem komputerów kwantowych?
-
Jakie algorytmy post-kwantowe są już wdrożone/wdrażane?
-
Jaki komputer kwantowy potrzebny jest do złamania RSA?
-
Czy mamy w Polsce komputer kwantowy?
Zadanie 3 (2pkt)
Przygotuj program, który umożliwia przesłanie informacji przy pomocy technik steganografi. Przykładowe pomysły (doceniana jest kreatywność!):
-
ukrywanie komunikatu w niskich bitach rastrowych formatów (uwaga na kompresję stratną!)
-
ukrywanie komunikatu w niskich bitach bezstratnych formatów dźwiękowych
-
ukrywanie komunikatu w niewykorzystywanych sekcjach formatów plików (np. PNG, PE, ELF)
-
ukrywanie komunikatu w mechaniźmie alternatywnych strumeni danych systemu Windows
|
Ważne
|
Każde unikalne rozwiązanie tego zadania skutkuje dodatkowymi 2pkt! |
Zadanie 4 (1pkt)
Stwórz program, realizujący szyfrowanie i deszyfrowanie z użyciem algorytmu one time pad. Dla pliku z tekstem jawnym generuje plik z szyfrogramem oraz plik z kluczem. Dla pary plików szyfrogram i klucz generuje plik z tekstem jawnym.
Program powinien udostępnić możliwość doboru długości klucza - domyślnie jest równy długości tekstu jawnego.
Zadanie 5 (1pkt)
Stwórz program szyfrujący i deszyfrujący z użyciem szyfru Vigenère’a.
Zadanie 6 (2pkt)
Znajdź klucz dla przykładowego pliku tekstowego zaszyfrowanego syfrem Vigenère’a (można użyć generatora z poprzedniego zadania).
Zadanie 7 (1pkt)
Podaj przykładowe wejście pokazujące problem z wykorzystaniem trybu ECB dla szyfru AES.
Wykorzystaj narzędzia openssl i xxd do demonstracji.
Zadanie 8 (3pkt)
Stwórz szyfrowaną partycję z użyciem narzędzia LUKS lub Bitlocker. Podaj jaki algorytm został użyty do szyfrowania oraz jego parametry.
|
Ostrzeżenie
|
By nie utracić dostępu do danych rekomendowane jest szyfrowanie dysku maszyny wirtualnej lub zewnętrznego nośnika! |
Zadanie 9 (2pkt)
Znajdź kryptograficzne bezpieczne źródła losowości w ramach następujących technologii i stwórz co najmniej 3 przykłady ich wykorzystania do generowania liczb.
-
Procesory Intela
-
Linux
-
Windows
-
Python
-
Java
-
JavaScript (Web)
Zadanie 10 (1pkt)
Przetestuj różne źródła losowości z użyciem narzędzia dieharder
Wstęp do bezpieczeństwa i kryptologii
Narzędzie Cyberchef
Definicje
-
Kryptologia - nauka o bezpiecznym przekazywaniu informacji
-
Kryptografia - nauka tworząca bezpieczne metody przekazywania informacji
-
Szyfrowanie - zmiana tekstu jawnego w szyfrogram przy pomocy klucza
-
Deszyfrowanie - zmiana szyfrogramu w tekst jawny przy pomocy klucza
-
Szyfr - para algorytmów szyfrujących i deszyfrujących
-
Zasada Kerckhoffsa - szyfr powinien być bezpieczny także wtedy kiedy wszystkie informacje poza kluczem są jawne
-
-
Kryptoanaliza - nauka badająca metody łamania zabezpieczeń kryptograficznych
-
Uwierzytelnianie (authentication) - weryfikacja tożsamości
-
Autoryzacja (authorization) - przyznanie dostępu do zasobów
Model bezpieczeństwa informacji CIA
-
Confidentiality (poufność) - dostęp do informacji mają wyłącznie osoby uprawnione
-
Integrity (nienaruszalność) - informacja nie może być zmieniona w sposób nieuprawiony (w szczególności zniszczona)
-
Availability (dostępność) - informacja musi być dostępna w sposób umożliwiający jej dalsze użytkowanie
Kodowanie
Liczby:
-
Little endian: zapis liczb od najmniejszego do największego bajtu; używane przez procesory x86, większość procesorów ARM
-
Big endian: zapis liczb od największego do najmniejszego bajtu; używane przez protokoły IP, TCP (tzw. network order)
-
IEEE-745: standard zapisu liczb zmiennoprzecinkowych (float)
Tekst:
-
ASCII - 7-bitowy format kodowania znaków i symboli specjalnych (
man ascii) -
Unicode codepoint - numer znaku w tablicy znaków Unicode. Wstecznie kompatybilne z ASCII
-
UTF-8 - format kodowania znaków o zmiennej długości (jeden znak ma od 1 do 4 bajtów). Wstecznie kompatybilne z ASCII. Aktualnie główna metoda kodowania znaków.
-
UTF-16 - format kodowania znaków o zmiennej długości (jeden znak ma 2 lub 4 bajty). Używane przez API systemu Windows, środowisko .NET, języki Java, Javascript oraz SMSy.
-
UTF-32 - format kodowania znaków o stałej długości 4 bajtów, używany jako format pośredni do obliczeń czy zmian kodowania znaków
Steganografia
|
Ważne
|
Steganografia (bez kryptografii) nie powinna być wykorzystywana do zapewniania poufności! Może być natomiast skutecznym narzędziem zwiększającym dostępność i nienaruszalność. |
Steganografia czysta - steganografia bez kryptografii, nie spełnia zasady Kerckhoffsa.
-
Zawieranie informacji w ramach innej informacji (np. ukrywanie tekstu w zdjęciach)
-
Ukrywanie informacji: mikrodruk, tajny język (patrz: psi gwizdek),
Szyfry symetryczne
Szyfry, które wykorzystują ten sam klucz do szyfrowania i deszyfrowania.
Szyfry podstawieniowe
Każdy znak tekstu jawnego zamieniany jest na inny znak.
-
Szyfr Cezara:
encrypted[i] = (plaintext[i] + 3) % ngdziento rozmiar alfabetu (ROT13 w Cyberchef’ie) -
Szyfr Vigenère’a -
encrypted[i] = (plaintext[i] + key[i]) % ngdziento rozmiar alfabetu -
Enigma
-
One-time pad
encrypted[i] = plaintext[i] xor key[i]- szyfr nie do złamania jeśli zachowane są następujące warunki:-
klucz jest co najmniej tak długi jak tekst jawny
-
klucz musi być prawdziwie losowy
-
klucz nie może być użyty wcześniej
-
Kryptoanaliza szyfrów podstawieniowych
-
Analiza częstotliwości
-
Metoda Kasinskiego
Rodzaje ataków na schematy szyfrowania
-
ciphertext-only attack - poszukiwanie tekstu jawnego / klucza na podstawie szyfrogramu
-
known-plaintext attack - poszukiwanie klucza na podstawie par (tekst jawny, szyfrogram)
-
chosen-plaintext attack - poszukiwanie klucza w której osoba atakująca wybiera tekst jawny i otrzymuje szyfrogram
-
adaptive chosen-plaintext attack - poszukiwanie klucza, w której pamiętamy nasze poprzednie wybory tekstu jawnego
-
chosen-ciphertext attack - poszukiwanie klucza na podstawie wybranego szyfrogramu i otrzymanego tekstu jawnego
-
adaptive chosen-ciphertext attack - poszukiwane klucza, w której pamiętamy nasze poprzednie wybory szyfrogramu
Szyfry blokowe
Dla bloku wejściowego o predefiniowanej długości w bitach tworzymy szyfrogram z użyciem klucza.
-
AES 128, 192, 256 (rekomendowanym jest AES 256)
-
ChaCha20
Szyfry strumieniowe
Zbudowane z szyfrów blokowych w jeden z poniższych sposobów:
![]()
Losowość
Pożądane cechy generatorów liczb pseudolosowych
-
rozkład jednostajny dla dużej liczby generowanych liczb
-
minimalizacja krótkich cykli liczb dla niektórych stanów początkowych generatora
-
zależność pomiędzy kolejnymi wartościami
Pożądane cechy kryptograficznie bezpiecznych generatorów liczb pseudolosowych
-
Test kolejnego bitu: dla k bitów otrzymanych z generatora nie ma algorytmu, który w czasie wielomianowym przewidzi bit k+1 z zauważalnie lepszą skutecznością niż losowy wybór
-
Znając aktualny stan generatora nie możemy odgadnąć poprzednio wygenerowanych liczb