Tématické skupiny v rámci předmětu PB173 Tematicky zaměřený vývoj aplikací v jazyce C/C++

Informace pro cvičení

Tématická skupina se zaměří na praktickou aplikace vybraných témat v oblasti bezpečnostních mechanismů, protokolů a kryptografických algoritmů. Výuka bude probíhat formou kombinace prezentace důležitých prvků v probírané oblasti (cca 30 minut) a vlastní práci skupiny na vlastním projektu, která bude obnášet analýzu problému, volbu vhodných kryptografických primitiv a vlastní implementaci. Důraz bude kladen na kontinuálního vytváření většího projektu, postupného začleňování a implementace jednotlivých probíraných komponent, vytváření dobrých programátorských návyků a korektní užití kryptografických prvků a samostatnou iniciativu skupiny. Součástí práce bude i analýza a penetrační testování implementací ostatních týmů.

Kontakt na cvičího: Petr Švenda, svenda@fi.muni.cz

Způsob vypracování projektu:

  • Týmy po 2-3 lidech
  • Párové programování
  • Spolupráce v rámci týmu přes vhodný verzovací systém, např. BitBucket, GitHub nebo fakultní SVN server
  • Pravidelné kontrolní body s demonstrací stavu projektu cvičícímu
  • Analýza projektů ostatních skupin s hledáním zranitelostí v definovaných fázích

Technologie a tématické oblasti pokryté skupinou (může být upraveno v závislosti na úrovni studentů)

  • Šifrovací algoritmy
  • Hašovací algoritmy
  • Módy šifer pro utajení a zajištění integrity včetně pokročilých
  • Digitální podepisování
  • Protokoly challenge/response
  • Protokoly pro výměnu klíčů
  • “Diskové” šifrování
  • Využití kryptografických knihoven, cryptograhic service providers
  • Generování a používání (pseudo)náhodných dat
  • Kryptografický hardware a spolupráce s ním (PKCS#11, PC/SC)
  • Bezpečné programování, problematické funkce a konstrukce, bezpečné funkce
  • Klasické a penetrační testování aplikací
  • Tvorba robustního kódu s ohledem na aktivní vkládání chyb

Pro semestr podzim 2013 bude společným tématem pro jednotlivé týmy vytvoření kostry fungujícího systému pro bezpečné telekonferenční volání (hlas, video). Telekonferenční systém je z analytického i implementačního hlediska velice zajímavým případem, neboť obsahuje velké množství rozdílných bezpečnostních technologií, různé motivace zainteresovaných stran a nutnosti řešit jak bežné, tak některé ne zcela standardní bezpečnostní problémy.

Nosná témata vytvářeného projektu budou:

  • návrh celého systému, vytvoření prototypu
  • šifrování-integrita-autenticita přenášených dat
  • schopnost zpracovávat velké množství dat (hi-speed video)
  • autentizace koncového oprávněného uživatele
  • bezpečný update software (vytváření a podepisování a šifrování aktualizací)
  • zabezpečení kritické komponenty vůči reverznímu inženýrství a crackingu
  • metody distribuce licencí/klíčů
  • GUI pro koncového uživatele
  • využití čipových karet jako komponenty pro ukládání klíčového materiálu
  • schopnost analýzy a útoků na projekty ostatních (design, implementace), vytváření patchů