Zoznam všetkých cieľov

Prednášky

2. týždeň: Týždeň 2 – Úvod do softvérovej bezpečnosti

  1. vysvetliť, čo je softvérová bezpečnosť a čím sa líši od ochrany proti vírusom
  2. pomenovať dôsledky (produktivita, dôvera, financie) úspešného napadnutia softvéru
  3. vysvetliť štyri základné princípy softvérovej bezpečnosti
  4. orientovať sa v organizácii predmetu a v systéme hodnotenia

3. týždeň: Týždeň 3 – Steganológia, steganografia a steganalýza

  1. vysvetliť rozdiel medzi steganografiou (one-to-one) a watermarkingom (one-to-many)
  2. popísať základné prvky steganografického procesu (utajená správa, krycie médium, stegomédium, stegokľúč) a štyri vlastnosti, ktoré musí spĺňať
  3. vysvetliť princíp LSB (Least Significant Bit) steganografie a uviesť príklady, kde možno v súborovom systéme ukryť dáta
  4. vysvetliť rozdiel medzi pasívnym a aktívnym útokom v rámci steganalýzy a popísať aspoň dve kategórie steganalytických metód

4. týždeň: Týždeň 4 – Watermarking

  1. vysvetliť účel watermarkingu a rozdiel oproti steganografii
  2. rozlíšiť hlavné typy watermarkingu (copyright, forenzný, fragile, semi-fragile, viditeľný)
  3. vysvetliť princíp softvérového watermarkingu (statický vs. dynamický vodoznak)
  4. pripraviť sa na praktické zadanie 2 (kódovanie watermarku do zdrojového kódu, týždeň 10)

5. týždeň: Týždeň 5 – Obfuskácia

  1. vysvetliť účel obfuskácie a čo obfuskácia negarantuje
  2. rozlíšiť základné kategórie obfuskácie (syntaktická, kontrolno-toková, dátová, virtualizačná)
  3. na jednoduchom príklade ukázať control flow flattening
  4. vysvetliť limity obfuskácie

6. týždeň: Týždeň 6 – Životný cyklus, kvalita a integrita dát

  1. vymenovať fázy životného cyklu dát a stručne charakterizovať každú z nich
  2. vysvetliť aspoň tri dimenzie kvality dát
  3. rozlíšiť validáciu a verifikáciu dát a uviesť, aké akcie môže systém vykonať pri neplatných dátach
  4. vysvetliť pojem integrita dát a poznať typy poškodenia dát (data corruption)

7. týždeň: Týždeň 7 – RASM, modely SDLC/SSDLC a princíp SD3

  1. vysvetliť skratku RASM a jednotlivé jej zložky
  2. popísať rozdiel medzi klasickým SDLC a Secure SDLC a vymenovať šesť fáz SSDLC
  3. vysvetliť princíp SD3 (Secure by Design, by Default, in Deployment)
  4. vysvetliť princíp File Integrity Monitoring (FIM) a vypracovať Praktické zadanie 1

8. týždeň: Týždeň 8 – Defenzívny návrh a defenzívne programovanie

  1. vysvetliť rozdiel medzi fail-safe a fail-secure prístupom
  2. vymenovať aspoň štyri zásady defenzívneho programovania
  3. vysvetliť, čo je canonical representation a prečo súvisí s path traversal
  4. vysvetliť princíp race condition/TOCTOU zraniteľnosti

9. týždeň: Týždeň 9 – Modelovanie hrozieb (Threat Modeling)

  1. nakresliť jednoduchý Data Flow Diagram (DFD) a rozpoznať jeho základné prvky
  2. vymenovať a vysvetliť všetkých šesť kategórií STRIDE
  3. stručne charakterizovať aspoň jednu ďalšiu metodiku modelovania hrozieb (PASTA/TRIKE/VAST/DREAD/OCTAVE)

10. týždeň: Týždeň 10 – Klasifikácia dát podľa stavu

  1. vymenovať základné stavy, v ktorých sa dáta môžu nachádzať, a priradiť ku každému typické bezpečnostné opatrenie
  2. vysvetliť rozdiel medzi ochranou dát pri uložení (at rest) a pri prenose (in transit)
  3. vypracovať Praktické zadanie 2 (softvérový watermarking, nadväzujúce na týždeň 4)

11. týždeň: Týždeň 11 – Výber bezpečného programovacieho jazyka a Buffer Overflow

  1. vysvetliť pojmy pamäťová bezpečnosť (memory safety) a typová bezpečnosť (type safety)
  2. porovnať aspoň tri jazyky (napr. C/C++, Java/Python, Rust) z hľadiska bezpečnosti
  3. prakticky predviesť jednoduchý buffer overflow útok na zraniteľný C program a vysvetliť, ako sa mu dá zabrániť
  4. zhrnúť kľúčové témy predmetu Softvérová bezpečnosť

Cvičenia

1. týždeň: Týždeň 1 – Samoštúdium: čo je bezpečnostné inžinierstvo

  1. Pochopiť, čím sa bezpečnostné inžinierstvo zaoberá a prečo je to samostatná disciplína
  2. Získať prehľad o desiatich najčastejších bezpečnostných chybách v softvéri
  3. Overiť si, čo z materiálov naozaj vieš

2. týždeň: Týždeň 2 – Cvičenie: Úvod do softvérovej bezpečnosti

  1. Organizácia predmetu
  2. Rozbor reálneho bezpečnostného incidentu
  3. Štyri princípy na konkrétnom softvéri

2. týždeň: Príklad použitia elementov scenára

  1. Ukazať použitie elementov scenára
  2. Dokumentovať generované HTML pre autorov tém
  3. Automaticky testovať správnosť generovaného HTML

3. týždeň: Týždeň 3 – Cvičenie: Ukry správu a potom ju nájdi

  1. Priprav si prostredie
  2. Pozri sa, čo o tebe vie obyčajná fotka
  3. Ukry správu najhrubším možným spôsobom
  4. Ukry správu metódou LSB
  5. Over, či je to naozaj nedetegovateľné
  6. Znič správu tak, ako to urobí bežná aplikácia

4. týždeň: Týždeň 4 – Cvičenie: Vlož vodoznak a potom ho skús zničiť

  1. Priprav si prostredie a nosič
  2. Vlož vodoznak podľa kľúča
  3. Vyber ho späť a over, že bez kľúča to nejde
  4. Odmeraj, čo s ním urobí kompresia
  5. Vykonaj útok spolčením
  6. Porovnaj to s krehkým vodoznakom
  7. Vlož vodoznak do vlastného kódu

5. týždeň: Týždeň 5 – Cvičenie: Zatemni vlastný kód a potom cudzí prečítaj

  1. Priprav si program, ktorý budeš upravovať
  2. Premenuj a zavádzaj
  3. Skry konštanty v dátach
  4. Splošti tok riadenia
  5. Pridaj nepriehľadné podmienky
  6. Odmeraj, čo ťa to stálo
  7. Prečítaj cudzí obfuskovaný kód

6. týždeň: Týždeň 6 – Cvičenie: Životný cyklus, kvalita a integrita dát

  1. Riziko v životnom cykle
  2. Validačné akcie
  3. Kontrolný súčet

7. týždeň: Týždeň 7 – Cvičenie: RASM, modely SDLC/SSDLC a princíp SD3

  1. Baseline databáza
  2. Detekcia zmien
  3. Klasifikácia zmien
  4. Logovanie a upozornenie
  5. Konfiguračný súbor
  6. Fázy SSDLC v projekte

8. týždeň: Týždeň 8 – Cvičenie: Defenzívny návrh a defenzívne programovanie

  1. Rozpoznanie porušenia zásady
  2. Ochrana proti path traversal
  3. Diskusia fail-safe vs. fail-secure

9. týždeň: Týždeň 9 – Cvičenie: Modelovanie hrozieb (Threat Modeling)

  1. Nákres DFD
  2. Identifikácia hrozieb STRIDE
  3. Návrh protiopatrení

10. týždeň: Týždeň 10 – Cvičenie: Klasifikácia dát podľa stavu

  1. Program P s watermarkom
  2. Vkladač watermarku
  3. Rozpoznávač watermarku
  4. Hodnotenie nenápadnosti

11. týždeň: Týždeň 11 – Cvičenie: Výber bezpečného programovacieho jazyka a Buffer Overflow

  1. Základné pretečenie zásobníka
  2. Skúmanie pamäťových adries
  3. Obídenie kontroly hesla
  4. Obídenie chybnej kontroly dĺžky
  5. Bezpečná verzia
  6. Kontrolné otázky

Zadania

7. týždeň: Zadanie 1 – File Integrity Monitoring (FIM)

  1. Vytvoriť nástroj na monitorovanie integrity súborov v zadanom adresári.

10. týždeň: Zadanie 2 – Software Watermarking

  1. Zakódovať watermark do zdrojového kódu programu a vytvoriť nástroje na jeho vloženie a extrakciu.