Karta Przedmiotu
| Politechnika Białostocka | Wydział Informatyki | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Kierunek studiów | Cyberbezpieczeństwo |
Poziom i forma studiów |
pierwszego stopnia stacjonarne |
||||||||||||||||||||||||
| Grupa przedmiotów / specjalność |
Bezpieczeństwo aplikacji | Profil kształcenia | ogólnoakademicki | ||||||||||||||||||||||||
| Nazwa przedmiotu | Algorytmy, struktury danych i inżynieria bezpiecznego oprogramowania | Kod przedmiotu | CYB1ASD | ||||||||||||||||||||||||
| Rodzaj zajęć | obieralny | ||||||||||||||||||||||||||
| Formy zajęć i liczba godzin | W | Ć | L | P | Ps | T | S | Semestr | 5,6 | ||||||||||||||||||
| 26 | 26 | Punkty ECTS | 4 | ||||||||||||||||||||||||
| Program obowiązuje od | 2026/2027 | ||||||||||||||||||||||||||
| Przedmioty wprowadzające | Architektura komputerów i systemy operacyjne (CYB1SOP), Elementy matematyki wyższej I (CYB1MAT1), Podstawy cyberbezpieczeństwa (CYB1PCY), Podstawy programowania (CYB1PPR), Sieci komputerowe I (CYB1SKO1), | ||||||||||||||||||||||||||
| Cele przedmiotu |
Przekazanie zaawansowanej wiedzy na temat struktur danych i algorytmów w specyficznym kontekście inżynierii bezpieczeństwa, ze szczególnym uwzględnieniem algorytmów probabilistycznych, grafowych oraz kryptograficznych. Wykształcenie umiejętności doboru i bezpiecznej implementacji struktur danych (m.in. kopców, filtrów Blooma, drzew Merkle'a) pod kątem minimalizacji powierzchni ataku oraz ochrony przed algorytmicznymi atakami odmowy usługi (DoS). Zapoznanie studentów z algorytmicznymi podstawami działania profesjonalnych narzędzi bezpieczeństwa oraz analizy incydentów (IDS/IPS, skanery AV, systemy SIEM, narzędzia Forensics oraz Binary Diffing). Rozwijanie kompetencji w zakresie projektowania systemów zgodnie z paradygmatem Secure by Design, w tym analizy zależności oprogramowania (SBOM) oraz zapewniania integralności danych w systemach rozproszonych. |
||||||||||||||||||||||||||
| Ramowe treści programowe | Program obejmuje analizę złożoności obliczeniowej algorytmów pod kątem odporności systemów IDS/IPS na ataki typu Algorithmic Complexity Attacks (DoS). Omawiane są efektywne metody sortowania zewnętrznego (External Merge Sort) dużych zbiorów danych w systemach SIEM oraz techniki zarządzania pamięcią przy użyciu QuickSort i HeapSort. Wykład omawia implementację kolejek priorytetowych opartych na kopcach binarnych. Istotnym elementem jest analiza struktur drzewiastych (Trie, B-drzewa) stosowanych w informatyce śledczej (Forensics) i indeksowaniu danych. Poruszane są zagadnienia struktur probabilistycznych, takich jak Filtry Blooma, wykorzystywanych do monitorowania ruchu sieciowego przy ograniczonych zasobach. Program obejmuje algorytmy tekstowe, w tym algorytm Aho-Corasick stanowiący fundament skanerów antywirusowych. Przedmiot uczy wykorzystania teorii grafów do analizy ścieżek infekcji (Lateral Movement) oraz projektowania bezpiecznego przesyłania danych przy użyciu algorytmu Dijkstry. Studenci poznają techniki Binary Diffing oparte na algorytmie LCS. Kurs obejmuje mechanizmy kryptograficznej kontroli integralności danych z wykorzystaniem funkcji skrótu SHA-256 oraz drzew Merkle. | ||||||||||||||||||||||||||
| Inne informacje o przedmiocie | przedmiot ma związek z prowadzoną na Uczelni działalnością naukową | ||||||||||||||||||||||||||
| przedmiot kształtuje umiejętności praktyczne | |||||||||||||||||||||||||||
| Wyliczenie: | Nakład pracy studenta związany z: | Godzin ogółem |
W tym kontaktowych |
W tym praktycznych |
|||||||||||||||||||||||
| udziałem w wykładach | 26 | 26 | |||||||||||||||||||||||||
| udziałem w innych formach zajęć | 26 | 26 | 26 | ||||||||||||||||||||||||
| przygotowaniem do bieżących zajęć o charakterze praktycznym | 13 | 13 | |||||||||||||||||||||||||
| implementacja zadań | 20 | 20 | |||||||||||||||||||||||||
| przygotowanie do zaliczenia wykładu | 15 | ||||||||||||||||||||||||||
| Razem godzin: | 100 | 52 | 59 | ||||||||||||||||||||||||
| Razem punktów ECTS: | 4 | 2.1 | 2.4 | ||||||||||||||||||||||||
| Zakładane kierunkowe efekty uczenia się | Wiedza | Umiejętności | Kompetencje społeczne |
||||||||||||||||||||||||
| CYB1_W01 | CYB1_U03 | CYB1_K01 | |||||||||||||||||||||||||
| CYB1_W02 | CYB1_U07 | CYB1_K02 | |||||||||||||||||||||||||
| CYB1_W03 | CYB1_U10 | CYB1_K03 | |||||||||||||||||||||||||
| CYB1_W06 | CYB1_U12 | ||||||||||||||||||||||||||
| CYB1_W09 | CYB1_U18 | ||||||||||||||||||||||||||
| CYB1_W11 | CYB1_U19 | ||||||||||||||||||||||||||
| CYB1_W14 | |||||||||||||||||||||||||||
| Cele i treści ramowe sformułował(a) | dr inż. Anna Borowska, dr Joanna Karbowska-Chilińska, dr inż. Krzysztof Ostrowski | Data: | 08/04/2026 | ||||||||||||||||||||||||
| Realizacja w roku akademickim | 2028/2029 | ||||||||||||||||||||||||||
| Treści programowe | |||||||||||||||||||||||||||
| Wykład | |||||||||||||||||||||||||||
| 1. | Analiza złożoności a bezpieczeństwo systemów: Wprowadzenie do notacji O, Omega, Theta. Dlaczego teoretyczna wydajność ma znaczenie w cyberbezpieczeństwie? Analiza ataków typu Algorithmic Complexity Attacks na systemy IDS/IPS (paraliż sieci przez O(n^2) | ||||||||||||||||||||||||||
| 2. | Sortowanie i analiza logów (SIEM): Charakterystyka QuickSort, HeapSort i MergeSort. Bezpieczeństwo implementacji: unikanie Stack Overflow przy rekurencji. Sortowanie zewnętrzne (External Merge Sort) jako metoda przetwarzania wieloterabajtowych logów systemowych | ||||||||||||||||||||||||||
| 3. | Struktury liniowe i kolejki priorytetowe w systemach monitorowania SOC: Listy, stosy i kolejki. Wykorzystanie kopca binarnego w kolejkach priorytetowych do obsługi zdarzeń krytycznych. Problem przepełnienia kolejek (Queue Overflow) i strategie zarządzania kolejkami podczas masowych ataków (np. DDoS) | ||||||||||||||||||||||||||
| 4. | Tablice mieszające i bezpieczeństwo skrótów: Metody obsługi kolizji a wydajność wyszukiwania. Funkcje skrótu w strukturach danych a haszowanie kryptograficzne. Zastosowania: szybkie sprawdzanie sygnatur malware (IOC) oraz bezpieczne przechowywanie haseł (salting). Ataki na bazy poświadczeń: Rainbow Tables, kolizje | ||||||||||||||||||||||||||
| 5. | Struktury hierarchiczne w systemach plików i bazach danych. Drzewa przeszukiwań (BST, AVL, Czerwono-Czarne) w optymalizacji dostępu do danych. B-drzewa i B+drzewa jako fundament systemów plików (NTFS, Ext4). Informatyka śledcza (Forensics): wykorzystanie struktur drzewiastych do rekonstrukcji metadanych i odzyskiwania usuniętych plików. [temat b. obszerny ze względu na struktury drzewiaste (materiał z pełnym opisem do samodzielnej nauki + podsumowanie na wykładzie)] | ||||||||||||||||||||||||||
| 6. | Struktury probabilistyczne w monitoringu sieci: Filtry Blooma i ich zastosowanie w czarnych listach URL (Google Safe Browsing). Algorytm Count-Min Sketch jako metoda estymacji natężenia ruchu i wykrywania anomalii przy ograniczonych zasobach | ||||||||||||||||||||||||||
| 7. | Wyszukiwanie wzorców i sygnatur (Deep Packet Inspection): Algorytmy tekstowe w skanerach AV i systemach IDS. Praktyczna charakterystyka algorytmów KMP, Rabina-Karpa oraz Boyera-Moore’a w kontekście analizy ruchu sieciowego. Porównanie efektywności wyszukiwania sygnatur w strumieniach danych | ||||||||||||||||||||||||||
| 8. | Zaawansowane algorytmy tekstowe i routing: Drzewa Trie i problem najdłuższego wspólnego prefiksu (LPM) w tablicach routingu. Algorytm Aho-Corasick jako podstawa wielowzorcowego dopasowania w systemach IDS (Snort/Suricata). Odległość Levenshteina w wykrywaniu typosquattingu | ||||||||||||||||||||||||||
| 9. | Algorytmy grafowe w analizie propagacji zagrożeń: Reprezentacje grafowe sieci i relacji między procesami. Wykorzystanie przeszukiwania BFS/DFS w mapowaniu botnetów, analizie ścieżek infekcji oraz zależności w oprogramowaniu (SBOM) | ||||||||||||||||||||||||||
| 10. | Bezpieczny routing i odporność topologii: Algorytmy Dijkstry i Bellmana-Forda w bezpiecznym przesyłaniu danych. Odporność protokołu STP na ataki (algorytmy MST). Modele przepływów (Ford-Fulkerson) w analizie przepustowości łącza pod atakiem | ||||||||||||||||||||||||||
| 11. | Integralność danych i Binary Diffing: Drzewa Merkle w monitorowaniu integralności plików i Certificate Transparency. Wykorzystanie algorytmu LCS (najdłuższy wspólny podciąg) w narzędziach typu BinDiff do analizy porównawczej wersji złośliwego kodu | ||||||||||||||||||||||||||
| 12. | Fundamenty kryptograficzne i Secure SDLC: Bezpieczna implementacja RSA/ECC oraz generatorów liczb losowych (CSPRNG). Integracja struktur danych z zasadami Secure Design (Defense in Depth) – podsumowanie przedmiotu | ||||||||||||||||||||||||||
| 13. | Zaliczenie wykładu | ||||||||||||||||||||||||||
| Pracownia specjalistyczna | |||||||||||||||||||||||||||
| 1. | Konfiguracja środowiska i narzędzi programistycznych (C#/Python). Bezpieczne przetwarzanie plików. Zadanie1 (Skaner sygnatur malware (Aho-Corasick)) | ||||||||||||||||||||||||||
| 2. | Analiza wydajności algorytmów wyszukiwania sygnatur | ||||||||||||||||||||||||||
| 3. | Modelowanie hierarchicznej bazy wzorców (Trie). | ||||||||||||||||||||||||||
| 4. | Implementacja automatu Aho-Corasick | ||||||||||||||||||||||||||
| 5. | Finalizacja wielowzorcowego skanera sygnatur | ||||||||||||||||||||||||||
| 6. | Odwzorowanie struktury systemu plików | ||||||||||||||||||||||||||
| 7. | Zastosowanie funkcji skrótu w weryfikacji danych | ||||||||||||||||||||||||||
| 8. | Budowa struktur kontroli integralności (Drzewa Merkle’a) | ||||||||||||||||||||||||||
| 9. | Modelowanie relacji między procesami systemowymi z wykorzystaniem grafowej struktury list sąsiedztwa | ||||||||||||||||||||||||||
| 10. | Analiza propagacji zagrożeń w grafie (BFS) | ||||||||||||||||||||||||||
| 11. | Wyznaczanie ścieżek infekcji w systemie | ||||||||||||||||||||||||||
| 12. | Analiza porównawcza zmian w kodzie (Binary Diffing) | ||||||||||||||||||||||||||
| 13. | Weryfikacja i prezentacja zrealizowanych modułów | ||||||||||||||||||||||||||
| Metody dydaktyczne (realizacja stacjonarna) |
|||||||||||||||||||||||||||
| W | wykład informacyjny (prezentacja multimedialna), wykład problemowy | ||||||||||||||||||||||||||
| Ps | samodzielne / zespołowe projektowanie i implementacja bezpiecznego modułu oprogramowania | ||||||||||||||||||||||||||
| Metody dydaktyczne (realizacja zdalna) |
|||||||||||||||||||||||||||
| W | wykład realizowany w czasie rzeczywistym z wykorzystaniem platformy MS Teams | ||||||||||||||||||||||||||
| - | |||||||||||||||||||||||||||
| Forma zaliczenia | |||||||||||||||||||||||||||
| W | zaliczenie pisemne w formie testu otwartego | ||||||||||||||||||||||||||
| Ps | wejściówki, prezentacja i obrona zadań programistycznych | ||||||||||||||||||||||||||
| Warunki zaliczenia | |||||||||||||||||||||||||||
| W | Uzyskanie min. 30% punktów z każdego efektu uczenia się z zakresu wiedzy, a po spełnieniu tego warunku ostateczna ocena wynika z sumy uzyskanych punktów z testu otwartego. Kryteria oceny: [ 0 – 50]% punktów – 2.0 (50 – 60]% punktów – 3.0 (60 – 70]% punktów – 3.5 (70 – 80]% punktów – 4.0 (80 – 90]% punktów – 4.5 (90 – 100]% punktów – 5.0 |
||||||||||||||||||||||||||
| Ps | Minimalne wymagania odnośnie efektów uczenia się: E4 - implementacja i obrona zadania 1 na co najmniej 50% punktów. E5 - implementacja i obrona zadania 2 na co najmniej 50% punktów. E6 - implementacja i prezentacja zadania 2 na co najmniej 50% punktów. E7 - prezentacja i obrona zadań 1-2, każde na co najmniej 50% punktów E8 - zaliczenie wejściówek i obrona zadań 1-2, każde na co najmniej 50% punktów Ocena końcowa składa się z następujących elementów: - wejściówki: 2 po 10 pkt, - zadania programistyczne + obrona + prezentacja (Z1 30pkt, Z2 50pkt), Kryteria oceny: [ 0 – 50]% punktów – 2.0 (50 – 60]% punktów – 3.0 (60 – 70]% punktów – 3.5 (70 – 80]% punktów – 4.0 (80 – 90]% punktów – 4.5 (90 – 100]% punktów – 5.0 |
||||||||||||||||||||||||||
| Symbol efektu | Zakładane efekty uczenia się | Odniesienie do efektów uczenia się zdefiniowanych dla kierunku studiów | |||||||||||||||||||||||||
| Wiedza | Umiejętności | Kompetencje społeczne |
|||||||||||||||||||||||||
| Wiedza: student zna i rozumie | |||||||||||||||||||||||||||
| E1 | metody klasyfikacji algorytmów pod kątem ich złożoności obliczeniowej i pamięciowej oraz mechanizmy powstawania podatności typu Algorithmic Complexity Attacks | ||||||||||||||||||||||||||
| E2 | zasady działania struktur hierarchicznych, probabilistycznych oraz grafowych stosowanych w monitorowaniu bezpieczeństwa i informatyce śledczej | ||||||||||||||||||||||||||
| E3 | zasady wytwarzania bezpiecznego kodu, w tym mechanizmy kontroli integralności danych oraz techniki wykrywania i analizy incydentów | ||||||||||||||||||||||||||
| Umiejętności: student potrafi | |||||||||||||||||||||||||||
| E4 | tworzyć i analizować programy komputerowe realizujące zadania z zakresu cyberbezpieczeństwa, dobierając odpowiednie struktury danych do rozwiązywania problemów inżynierskich | ||||||||||||||||||||||||||
| E5 | identyfikować i modelować zagrożenia w systemach ICT oraz analizować ścieżki infekcji z wykorzystaniem algorytmów grafowych i tekstowych | ||||||||||||||||||||||||||
| E6 | wykorzystywać podstawowe narzędzia do zabezpieczania cyfrowych śladów oraz analizy logów i artefaktów systemowych związanych z incydentem bezpieczeństwa | ||||||||||||||||||||||||||
| Kompetencje społeczne: student jest gotów do | |||||||||||||||||||||||||||
| E7 | krytycznej oceny posiadanej wiedzy oraz profesjonalnego przyjmowania odpowiedzialności za bezpieczeństwo i jakość opracowanych rozwiązań | ||||||||||||||||||||||||||
| E8 | działania w sytuacjach wymagających szybkiego podejmowania decyzji pod presją czasu, typowych dla obsługi incydentów bezpieczeństwa | ||||||||||||||||||||||||||
| Symbol efektu | Sposób weryfikacji efektu uczenia się | Forma zajęć na której zachodzi weryfikacja | |||||||||||||||||||||||||
| E1 | zaliczenie pisemne | W | |||||||||||||||||||||||||
| E2 | zaliczenie pisemne | W | |||||||||||||||||||||||||
| E3 | zaliczenie pisemne | W | |||||||||||||||||||||||||
| E4 | implementacja, obrona zadania programistycznego | Ps | |||||||||||||||||||||||||
| E5 | implementacja, obrona zadania programistycznego | Ps | |||||||||||||||||||||||||
| E6 | implementacja, prezentacja zadania programistycznego | Ps | |||||||||||||||||||||||||
| E7 | prezentacja, obrona zadania programistycznego | Ps | |||||||||||||||||||||||||
| E8 | wejściówka, obrona zadania programistycznego | Ps | |||||||||||||||||||||||||
| Literatura podstawowa | |||||||||||||||||||||||||||
| 1. | W. Stallings, Bezpieczeństwo systemów informatycznych. Zasady i praktyka, Wydawnictwo Helion, 2021 (wydanie IV) | ||||||||||||||||||||||||||
| 2. | P. Wróblewski, Algorytmy, struktury danych i techniki programowania, Wydawnictwo Helion, 2019 (wydanie VI) | ||||||||||||||||||||||||||
| 3. | L. Banachowski, K. Diks, W. Rytter, Algorytmy i struktury danych, Wydawnictwo Naukowe PWN, 2018 | ||||||||||||||||||||||||||
| 4. | R. Sedgewick, K. Wayne, Algorytmy, Wydawnictwo Helion, 2017 (wydanie IV) | ||||||||||||||||||||||||||
| 5. | T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Wprowadzenie do algorytmów, Wydawnictwo Naukowe PWN, 2012 | ||||||||||||||||||||||||||
| Literatura uzupełniająca | |||||||||||||||||||||||||||
| 1. | B. Carrier, Informatyka śledcza systemów plików. Analiza struktur danych w systemach plików, Wydawnictwo Helion, 2008 | ||||||||||||||||||||||||||
| 2. | W. Stallings, Kryptografia i bezpieczeństwo sieci komputerowych. Koncepcje i praktyki, Wydawnictwo Helion, 2020 (wydanie VII) | ||||||||||||||||||||||||||
| 3. | M. Sikorski, A. Honig, Praktyczna analiza złośliwego oprogramowania, Wydawnictwo Naukowe PWN, 2019 | ||||||||||||||||||||||||||
| 4. | J.F. Kurose, K.W. Ross, Sieci komputerowe. Ujęcie całościowe, Wydawnictwo Helion, 2021 (wydanie VIII) | ||||||||||||||||||||||||||
| 5. | K. Krysiak, Sieci komputerowe. Kompendium, Wydawnictwo Helion, 2023 (wydanie III) | ||||||||||||||||||||||||||
| Koordynator przedmiotu: | dr inż. Anna Borowska, dr Joanna Karbowska-Chilińska, dr inż. Krzysztof Ostrowski | Data: | 08/04/2026 | ||||||||||||||||||||||||