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:

  1. Dlaczego jej potrzebujemy?

  2. Jakie algorytmy są podatne na atak z użyciem komputerów kwantowych?

  3. Jakie algorytmy post-kwantowe są już wdrożone/wdrażane?

  4. Jaki komputer kwantowy potrzebny jest do złamania RSA?

  5. 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) % n gdzie n to rozmiar alfabetu (ROT13 w Cyberchef’ie)

  • Szyfr Vigenère’a - encrypted[i] = (plaintext[i] + key[i]) % n gdzie n to 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:

1280px BlockCipherModesofOperation.svg

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