Příklady použití kryptografických funkcí Tato část pracovního listu obsahuje praktické cvičení s aktivním zapojením žáků. 1 Testování kvality hashe - Vytvořte si pomocí hash generátoru na http://www.danstools.com/md5-hash-generator/ svůj MD5 hash svého hesla, např. pro heslo veslo získáte hexadecimální hodnotu: 4bf643bf3816722ac9cbed5b6bb6c3c6, viz obr. 1.1. - Ověřte si, zda jiné realizce stejného algoritmu vedou ke stejnému výsledku, například hashováním našeho vesla na https://asecuritysite.com/hash/md5_2 získáme hodnotu S/ZDvzgWcirJy+1ba7bDxg==, tato je ale ve formátu Base64, takže je třeba na https://asecuritysite.com/coding/ascii převést výsledek do hexadecimálního tvaru a jak si snadno ověříte, získáte stejný výsledek. Stejný výsledek získáte i hashováním hesla na https://www.pelock.com/products/hash-calculator, https://defuse.ca/checksums.htm#checksums nebo HashCalcu. Obsah obrázku text Popis byl vytvořen automaticky Obr. 1.1: Použití programu HashCalc pro výpočet vybraných hashů z textového řetězce - Nainstalujte si program HashCalc a porovnejte výsledek zahashování svého hesla s dosavadními výsledky. - Na https://crackstation.net/ (případně použijte https://www.onlinehashcrack.com/) otestujte odolnost zahashovaného hesla, např. systém rychle pomocí rain tables odhalí, že hash 4bf643bf3816722ac9cbed5b6bb6c3c6, patří k heslu veslo zahashovaným pomocí algoritmu MD5, viz obr. 1.2. Obr. 1.2: Testování odolnosti hesla na https://crackstation.net/ - Posolte si své heslo veslo solí (např. Jarda) a použijte generátor klíčů http://anandam.name/pbkdf2 – viz obr. 1.3. Obr. 2.1.1.3: Příklad posolení hesla veslo solí jarda při 1000 cyklických opakováních - A zkuste výsledek znovu otestovat na https://crackstation.net – viz obr. 1.4. Obr. 1.4: Opětovné testování odolnosti hesla na https://crackstation.net/ - V našem případě se rainbow tables ukázaly jako neefektivní, 1000 posolených hashů je pro ně příliš. Vyzkoušejte si to jako úkol na vybraném heslu a výsledek pošlete učiteli. 2 Testování použití PBKDF2 - Zvolte heslo, sůl, počet iterací a počet bitů klíče a spusťte algoritmus na třech realizacích: https://stuff.birkenstab.de/pbkdf2/, http://anandam.name/pbkdf2/ a https://asecuritysite.com/encryption/pb2. Pokud nedostanete shodné výsledky, diskutujte s učitelem příčiny. 3 Použití moderního algoritmu Scrypt Úkol: nastavte si potřebné parametry na https://8gwifi.org/scrypt.jsp a zašifrujte text heslo s parametry dle obrázku 3.1. Obsah obrázku text Popis byl vytvořen automaticky Obr. 3.1: Generování a verifikace hashe Scrypt pomocí zadaných parametrů obtížnosti útoku. 4 Použití webové aplikace CyberChef Úvodní seznámení: CyberChef je webová aplikace pro provádění všech druhů „kybernetických“ operací ve webovém prohlížeči. Tyto operace zahrnují jednoduché kódování jako XOR nebo Base64, složitější šifrování jako AES, DES a Blowfish, vytváření binárních a hexdumpů, kompresi a dekompresi dat, výpočet hashů a kontrolních součtů, analýzu IPv6 a X.509, změnu kódování znaků atd. CyberChef na https://gchq.github.io/CyberChef/ má čtyři hlavní oblasti: - Vstupní pole vpravo nahoře, kam lze vložit, napsat nebo přetáhnout text nebo soubor, se kterým chcete pracovat. - Výstupní pole vpravo dole, kde se zobrazí výsledek zpracování. - Zcela vlevo seznam operací, kde jsou uvedeny všechny operace, které CyberChef umí. - Oblast „receptury“ uprostřed, do které lze přetáhnout potřebné operace a zadat argumenty a možnosti. Úkol: Připojte se na stránku CyberChefu a zašifrujte text „veslo“ pomocí algoritmu Bcrypt s 10 iteracemi (rundami) a zjistěte parametry šifry pomocí Bcrypt parse. 5 Vigenève kalkulačka Na https://asecuritysite.com/coding/vigcalc zakódujte text 20 slov heslem jarda a proveďte frekvenční analýzu textu. 6 Generování ECDH Na https://asecuritysite.com/ecc/ecc_types si můžete vyzkoušet generování široké škály eliptických křivek: Curve25519, Curve448, ED25519, Ed448, secp160r2, secp256k1, secp521r, NIST-P192, NIST-P224, NIST-P256. Prvním úkolem je výběr typu křivky secp256k1 používané v bitcoinech a Ethereu a nastavení počtu bodů eliptické křivky n =1000. Výstupem jsou koeficienty eliptické křivky. Dále na https://asecuritysite.com/encryption/ecdh2 generujte symetrický klíč a dvojici (veřejný, privátní) klíčů pro vzájemnou komunikaci Elliptic Curve Diffie Hellman (ECDH). 7 Zabezpečení webových tokenů JSON (JWT) JWT si získalo oblibu s rozšířením architektury mikroslužeb: zpracování autentizačních dat svěřuje mikroslužbám, a proto umožňuje vyhnout se různým chybám při autorizaci, zvýšit produktivitu a zlepšit škálovatelnost aplikací. V souladu s RFC-7519 jsou JSON Web Tokeny (JWT) jedním ze způsobů, jak zobrazit data pro jejich přenos mezi dvěma nebo více stranami jako objekt JSON. JWT se zpravidla skládá ze tří částí: Záhlaví, užitečné zátěže a digitálního podpisu[1]. Každá z částí – záhlaví a užitečné zatížení – je obyčejný objekt JSON, který je třeba dodatečně zakódovat pomocí algoritmu base64url. Poté se zakódované části propojí a na základě toho se detekuje podpis, který se také stane součástí tokenu. Obecně je token zachycen na https://jwt.io/: Záhlaví je servisní součástí tokenu. Pomáhá aplikaci definovat, jak zpracovat přijatý token. Defaultně je použit algoritmus HS256 (HMAC-SHA256), ve kterém je pro generování a ověřování podpisu použit jeden tajný klíč. Pro podpis JWT lze použít symetrické šifrování/algoritmy podpisu, např. RS256 (RSA-SHA256). Standard umožňuje použití dalších algoritmů, včetně HS512, RS512, ES256, ES512, none atd. Podpis se generuje následovně: Části podpisu a užitečné zátěže jsou zašifrovány algoritmem base64url a poté sjednoceny do jednoho rámečku pomocí tečky („.“) jako oddělovače. Poté je vygenerován podpis (v našem příkladu algoritmem HMAC-SHA256) a přidán do počátečního rámečku za tečkou. Úkol: Na https://jwt.io/ změňte v užitečné zátěži jméno „John Doe“ za své a změňte algoritmus podpisu na HS512, což je HMAC používající pro hash algoritmus SHA-512. JWT podporuje „žádný“ algoritmus. Pokud je pole alg nastaveno na „none“, jakýkoli token by byl považován za platný, pokud je jeho sekce podpisu nastavena na prázdnou. Například následující token by byl považován za platný: eyAiYWxnIiA6ICJOb25lIiwgInR5cCIgOiAiSldUIiB9Cg.eyB1c2VyX25hbWUgOiBhZG1pbiB9Cg Vyzkoušejte. 8 Porovnání kryptosad Jsou dány dvě starší kryptosady (filtr pro Wireshark tls.handshake.ciphersuite). Logickou úvahou odhadněte, které sadě dal přednost Twitter a které přetížený Facebook. Porovnejte s kryptosadami používané malwarem (Belajová 2018). Obsah obrázku text Popis byl vytvořen automaticky Obr. 8.1: Příklad návrhu starší kryptografické sady při přihlašování klienta na Twitter – používá se TLS (Transport Layer protokol), dále asymetrický algoritmus, symetrický algoritmus o dané velikosti klíče a v příslušném módu a hash algoritmus. Obsah obrázku text Popis byl vytvořen automaticky Obr. 8.2: Příklad návrhu starší kryptografické sady při přihlašování klienta na Facebook ________________________________ [1] Existují výjimky, kdy JWT postrádá podpis.