PB173 - Tématický vývoj aplikací v C/C++ (podzim 2013) Skupina: Aplikovaná kryptografie a bezpečné programování https://is.muni.cz/auth/el/1433/podzim2013/PB173/index.qwarp?fakulta=14 33;obdobi=5983;predmet=734514;prejit=2957738; Petr Švenda svenda@fi.muni.cz Konzultace: G.201, Úterý 13-13:50 Something about me... 2 PB173 | Intro, basic libraries 24.9.2013 + ⇒⇒⇒⇒ Genetic programming Secrecy amplification protocols for WSN Random distinguisher for crypto fncs Distributed computing 3 PB173 | Intro, basic libraries 24.9.2013 Power analysis Security programming 4 PB173 | Intro, basic libraries 24.9.2013 Something about me... 5 PB173 | Intro, basic libraries 24.9.2013 http://astrolight.cz ORGANIZAČNÍ INFORMACE 6 PB173 | Intro, basic libraries 24.9.2013 Co je cílem předmětu • Získat zkušenosti s implementací většího programu • Používat vývojové nástroje • Naučit se dobré programátorské postupy – programování obecně – ale speciálně v oblasti bezpečnostních aplikací • Získat praktické postřehy z implementací kryptografických aplikací – co nakonec ve firmě vyžadují 7 PB173 | Intro, basic libraries 24.9.2013 Co není cílem předmětu • Detailní ovládnutí konkrétní technologie – zabrousíme do různých oblastí • Pokročilé zvládnutí celého vývojového procesu – to jednoduše nestihneme • Vysvětlovat základy kryptografie nebo srovnávat všechny možné varianty řešení problému – hlavně se budeme snažit prakticky programovat 8 PB173 | Intro, basic libraries 24.9.2013 Organizační • Formality výuky – každotýdenní dvojhodinovka – evidovaná účast, 2 neúčasti bez omluvení OK • Způsob výuky – max. cca 30 min./týdně úvod do problematiky – zbytek programování přímo na hodině – z mé strany průběžná konzultace nad vznikajícími problémy – default Windows (ale můžete pracovat i na jiné platformě) • Samostatná práce – v týmech, průběžná tvorba většího projektu – dodělávání práce z hodiny – pravidelné bodované předvádění stavu projektu (každé cvičení) 9 PB173 | Intro, basic libraries 24.9.2013 Organizační (2) • Používané nástroje – IDE, verzovací nástroje, Doxygen, debugger, analýza a kontrola kódu – konkrétní není striktně dané – použijte svoje oblíbené – default Visual Studio • Hodnocení – účast – průběžná práce (10 bodů týdně) – prezentace celého projektu (30 bodů) – možné bonusy – max. 150 bodů, zisk alespoň 100 bodů na kolokvium 10 PB173 | Intro, basic libraries 24.9.2013 Rozdělení do týmů • 2-3 osoby • Společná práce, ale každý prezentuje svůj přínos – prezentace na každém dalším cvičení – resp. za 14 dni při absenci • Rozdělení provedeme až po 14 dnech – ustálení studentů 11 PB173 | Intro, basic libraries 24.9.2013 Celkový přehled • Základní podklady v ISu (interaktivní materiály) – PB173→Interaktivní osnovy → Aplikovaná kryptografie a bezpečné programování (vyučujicí Petr Švenda) • Pro informaci přehled z jednoho z předchozích roků – https://minotaur.fi.muni.cz:8443/~xsvenda/docuwiki/doku.php?id=p ublic:pb173:pb173_2010_crypto • Může se ale částečně měnit – uvidíme dle reálné obtížnosti, rychlosti postupu a zájmu • Můžete otevřít vlastní řešený problém! 12 PB173 | Intro, basic libraries 24.9.2013 Twitter, Scribd • Twitter – https://twitter.com/rngsec – zveřejnění přípravy a slidů, občasné info – hash tag #pb173_2013 – (opravdu důležité věci budou rozesílány hromadně na IS mail) • Scribd – slidy zveřejňovány v IS materiálech i na Scribd.com – navíc možnost vkládání poznámek, připomínek, nejasností... 13 PB173 | Intro, basic libraries 24.9.2013 Demo - Scripd • Snadné vkládání poznámek od studentů do slidů – login přes Facebook nebo registrace • Typo nebo chyby • Co vám není jasné, chcete více vysvětlit – přidejte vlastní tag “nejasné”, i když už někdo dal před vámi – čím více tagů, tím větší šance, že bude rozšířeno • Náměty na rozšíření • ... How good YOU are in English? Apology all my mistakes, please. 15 PB173 | Intro, basic libraries 24.9.2013 Short questionnaire • Do you know difference between symmetric and asymmetric cryptography? • Do you known difference between block and stream cipher? • Do you know DES and AES algorithm? • Do you know ECB and CBC encryption mode? • Do you know principle of hash functions? • Do you know MD5 and SHA-1 algorithm? • Do you known concept of digital signature? 16 PB173 | Intro, basic libraries 24.9.2013 "Theme" project • Secure videoconferencing architecture PB173 | Intro, basic libraries 24.9.201317 PB173 | Intro, basic libraries 24.9.2013 "Theme" project • Certification authority – validates and issue user certificates • Videoconferencing server – register and faciliate connection between users • Client – provides operations related to end user usage • Main focus on solving parts of the architecture 18 PB173 | Intro, basic libraries 24.9.2013 "Theme" project – some details • Users obtains certificate of identity from Certification authority • Users register with Videoconferencing server • Videoconferencing server provides list of connected users, help to establish video connection and charge fee based on call length • Client maintains user identity, related keys and provides high speed encryption of audio/video stream 19 Cryptographic libraries 20 PB173 | Intro, basic libraries 24.9.2013 Do not implement your own algorithms • Time consuming (someone probably already did that before) • Functional problems • Low performance • Security problems due to bugs • Security problems due to missing defense against implementation attacks 21 PB173 | Intro, basic libraries 24.9.2013 Use well-known implementations • Use well-known libraries – OpenSSL, PolarSSL, GnuPG, BouncyCastle (Java) • Or implementation of algorithms from wellestablished authors – Brian Gladman, Eric A. Young … 22 PB173 | Intro, basic libraries 24.9.2013 Complexity matters • Complexity of library implementation should match your needs – usually, you need only one or two algorithms • Multiprocessor or CPU-independent implementation can be overkill – and just increase risk of error • Do you really need library with object-oriented design? 23 PB173 | Intro, basic libraries 24.9.2013 Complexity matters (2) • Large libraries are not always the most suitable ones • OpenSSL is complex and interconnected – e.g., AES is extractable much easier from PolarSSL then from OpenSSL 24 PB173 | Intro, basic libraries 24.9.2013 Code authenticity • Source code signature – Do you really have original source codes? – MD5/SHA1 hash (where to get “correct” hash value?) – GPG/PGP • Generate your own GPG/PGP signature keys – use them for inter-team communication – sign your code releases 25 PB173 | Intro, basic libraries 24.9.2013 Resilience against bugs • Do not design algorithms/protocols by yourself • Try to find existing standards – NIST, RSA PKCS, RFC, ISO/ANSI • Try not to deviate from standards – compatibility and compliance – no need for (time consuming) specification of detailed your scheme – small change can have big security impacts 26 PB173 | Intro, basic libraries 24.9.2013 Libraries used often - OpenSSL • Pros: – Very rich library • lots of algorithms, protocols, paddings • not “just” SSL – well tested functionally & security over time! – significant amount of existing examples on web • Cons: – API is complex and sometimes harder to understand – (started as Eric Young’s personal attempt to learn BigInts ☺) – relatively low-level functions (can be pros!) – code is significantly interconnected • not suitable for extraction of single algorithm – poor official documentation 27 PB173 | Intro, basic libraries 24.9.2013 Libraries used often - PolarSSL • Pros: – API is simple and clear – easy to extract single algorithm • Cons: – fewer supported algorithms and standards – dual licensing, but not BSD-like license 28 PB173 | Intro, basic libraries 24.9.2013 How to use library • Extract code and compile alone – some work with extraction – small, clean and self-containing result • Compile against whole library – usually easy to do – but dependence on possibly unused code • Link statically against dynamic library – dll must be always present to run program 29 PB173 | Intro, basic libraries 24.9.2013 How to use library (2) • Link dynamically against dynamic library – try to open dll file and obtain function handle • Link against service provider functions – Cryptography Service Providers in particular – API for listing of available service providers (CryptEnumProviders) – standardized functions provided by providers http://msdn.microsoft.com/en- us/library/aa380252%28v=VS.85%29.aspx#service_provid er_functions 30 PB173 | Intro, basic libraries 24.9.2013 Security implications of dynamic libraries • Library can be forged and exchanged • Library-in-the-middle attack easy – data flow logging – input/output manipulation • Library outputs can be less checked then user inputs – feeling that library is my “internal” stuff and should play by „my“ rules • Library function call can be behind logical access controls 31 PB173 | Intro, basic libraries 24.9.2013 Practical assignment 32 PB173 | Intro, basic libraries 24.9.2013 Practical assignment • Download OpenSSL and PolarSSL library – and check signature (gpg --verify) • Write small project (PolarSSL based) – read, encrypt and hash supplied file, write into out file – read, verify hash and decrypt file – use AES-128 in CBC mode and HMAC with SHA2-512 – use PKCS#7 padding method for encryption (RFC 3852) • Start with New Project+PolarSSL+AES 33 PB173 | Intro, basic libraries 24.9.2013 Questions