# 04 Útoky na kryptografické systémy a protokoly (1.5 hodinky) ###### tags: `řsss-řk`, `bezpečnost`, `PV204`, `PV079`, `PA197` > Útoky na kryptografické systémy a protokoly. Využití hardwaru pro ochranu citlivých/kryptografických dat a jejich operací. Smartcards a jejich role jako bezpečnostního mechanismu. ## Útoky ### Útoky na hesla - Offline Brute-force: reálně do 8 chars - Dictionary - Patterns: kombinace dictionary + bruteforce (Password[0-9]*) - Rainbow tables: umožnují time-memory tradeoff, hashe jsou předpočítané a uložené v paměti - Brute-force+Special HW: parallizace, GPU, ASIC (50 billion computations per second) **Jak se bránit?** - Volit silná hesla - žádný hashovací systém nedokáže zachránit velmi slabé heslo - Zvýšit cenu bruteforce - **PBKDF2**: aplikace pseudonáhodné funkce HMAC na heslo se solí, přičemž tento proces je opakován několik krát (1000 - 10k). Výrazně zpomaluje bruteforce ale i zároveň uživatele. Dostatečné zpomalení útočníka se specializovaným HW může vést k nepoužitelnosti pro běžného uživatele s CPU. - **Scrypt**: Memory-hard funkce, namísto času bere pamět, pro jednu operaci vynucuje x bytů v paměti, limituje paralelizaci - **Argon2**: Memory-hard hash funkce, více flexibility než Scrypt, postaven na AES - **Bcrypt**: Implicitně přidává salt k hashi. [[link]](https://is.muni.cz/auth/el/fi/jaro2021/PV204/um/lectures/PV204_01_AuthenticationPasswordsU2F_2021.pdf) ### Replay útok Útočník odchytí validní zprávu a jejím přeposláním přesvědčí poctivou stranu o její validitě, přestože byla použita v jiném kontextu než pro který byla prvně vytvořena **Jak se bránit?** - přidání tagu s session ID a counterem nebo hash chain do zpráv - přídání timestamps do zpráv (nutná synchronizace), TTL (time to live) limit ### Reflection útok Útočník použije cíl útoku k tomu, aby authentizoval vlastní challenge. Například, jsou dvě zařízení, které se vzájemně autentizují pomocí sdíleného tajemství a HMACu. První zařízení požaduje autentizaci od druhého a pošle mu nonce, jehož HMAC má zaslat zpátky. Druhé zařízení (útočník) si otevře další komunikaci s prvním zařízením a přepošle mu stejný nonce. Validní HMAC pak zašle zpátky a je tak validně authentizované bez nutnosti znalosti sdíleného klíče. **Jak se bránit?** - nepoužívat symetrické výměny v protokolu ![reflection attack](https://www.thesecuritybuddy.com/wordpress/bdr/uploads/2020/01/AuthenticationReflectionAttack_20.jpg.webp) ### SYN flood attack Záplava pakety SYN neboli SYN-flood je druh útoku označovaný jako Denial of Service. Útočník pošle posloupnost paketů s příznakem SYN cílovému počítači, ale již dále neodpovídá. Pokud se klient pokouší navázat spojení se serverem protokolem TCP, klient a server si za normálních okolností vymění tři TCP pakety: 1. Klient pošle na server paket s příznakem SYN (synchronizovat) 2. Server uzná (acknowledge) žádost o synchronizaci a pošle paket s příznaky SYN a ACK 3. Klient pošle paket s příznakem ACK ![](https://download.huawei.com/mdl/image/download?uuid=8066c2af91054acc91d6cac995f8cfe4) ### Side channels útoky Neinvazivní útoky postranními kanály jsou založeny na nedokonalosti fyzické implementace kryptografických algoritmů. Získávají informace o uložených datech ze zdrojů, které nejsou primárně určeny pro komunikaci. #### Časová analýza využívá faktu, že čas operace závisí na zpracovávaných datech často bývá důsledkem optimalizace nebo špatného návrhu algoritmu #### Differenční power analýza Neinvazivní útok, který využívá statickou analýzu energetické spotřeby různých operací na různých vstupech. Padding, Permutations, etc.. ### Oracle útoky Útok, který využívá padding zprávy. Možný u CBC modu. Dobře popsané zde [zdroj](https://wikijii.com/wiki/Padding_oracle_attack) ### Microarchitectural útoky – Meltdown, Spectre #### Cache Timing útoky Cache Timing útoky využívají časové rozdíly mezi přístupem k datům uloženým v mezipaměti a datům, která nejsou uložena v mezipaměti. Vzhledem k tomu, že přístup k datům uloženým v mezipaměti je rychlejší, může program zkontrolovat, zda jsou jeho data uložena v mezipaměti měřením doby, kterou k nim potřebuje. V jedné formě útoku útočník zaplní mezipaměť svými vlastními daty. Když k datům přistupuje oběť, která používá stejnou mezipaměť, data oběti se přenesou do mezipaměti. Protože velikost mezipaměti je konečná, načtení dat oběti do mezipaměti vynutí některá data útočníka z mezipaměti. Útočník poté zkontroluje, které části jeho dat zůstávají v mezipaměti, a z těchto informací vyvodí, jaké části paměti oběti byly zpřístupněny. ### Meltdown a Spectre Meltdown a Spectre jsou dva útoky z 2017, které využívají kritické zranitelnosti moderních procesorů. Tyto zranitelnosti hardwaru umožňují programům krást data, která jsou aktuálně zpracovávána v počítači. Zatímco programy obvykle nemají povoleno číst data z jiných programů, škodlivý program může zneužít Meltdown a Spectre k získání tajemství uložených v paměti jiných spuštěných programů. * Meltdown - allows to read memory you have no privilege to access to. Exploits speculative execution - procesor řeší oprávnění instrukce až potom co je vyhodnocená jako oprávněná, mezivýsledky ale zůstávají v cachi než se přepíšou. * Spectre - allows to read any byte in current process virtual memory (even isolated in sandboxes). [zdroj](https://meltdownattack.com/) [zdroj](https://www.youtube.com/watch?v=bs0xswK0eZk&ab_channel=SimplyExplained) Spectre dovoluje přečíst paměť pouze v rámci sdílené virtuální paměti (např. v rámci jednoho programu - jeden tab browseru může přečíst informace využívané druhým tabem), zatímco Meltdown využívá speculative execution, aby přečetl informace ze zabezpečené části paměti. ## HW Ochrana citlivých dat ### FIDO U2F tokens authentizační tokeny, náhrada hesel tokenem s asymetrickým párem klíčů + challenge-response protokolem, např. Yubikey. Token ověřuje dvě věci během authentizace: 1. uživatel má fyzický přístup k zařízení, které bylo předem zaregistrované 2. uživatel je aktivní během authentizace (zmáčkne čudlík na tokenu) ![](https://i.imgur.com/vSjDjUr.png) ### TPM - Trusted platform module Kryptografické SM, které jsou vevnitř/připojené k dalšímu zařízení. Cena v desítkách dolarů. Může být umístěn: 1. Samostatný čip na základní desce 2. Zakorporované do CPU 3. Software TPM - není HW **Použití**: - Bezpečné vytváření a ukládání kryptografických klíčů - Potvrzení, že operační systém a firmware v zařízení jsou takové, jaké mají být, a nikdo s nimi nemanipuloval - šifrování/dešifrování disku ### Hardware Security Modules (HSMs) HSM je bezpečnostní zařízení, které lze přidat do systému pro správu, generování a bezpečné ukládání kryptografických klíčů. Vysoce výkonné HSM jsou externí zařízení připojená k síti pomocí TCP/IP. Jejich cena je ve stovkách a tisících dolárů (enterprise usage). **Použití**: šifrování, dešifrování, generování klíčů, PRNG, podepisování / ověřování podpisu. [zdroj - What are the differences between TPM and HSM?](https://security.stackexchange.com/questions/88744/what-are-the-differences-between-tpm-and-hsm) ### HW peněženky na kryptoměnu bezpečné uchování klíčů + podepisování transakcí, offline, Trezor nebo Ledger [zdroj](https://www.youtube.com/watch?v=aPprQUQljHE&ab_channel=99Bitcoins) ### Intel SGX SGX (Software Guard Extensions) je rozšíření architektury Intel Instruction Set Architecture (ISA) umožnuje lépe zabezpečit software. Poskytuje především instrukce pro vytvoření izolovaného prostředí -- Enclave. Důvěryhodný HW vytvoří tento bezpečný kontejner a uživatel vzdálené výpočetní služby nahraje požadovaný výpočet a data do zabezpečeného kontejneru. Důvěryhodný HW pak chrání důvěrnost a integritu dat, když jsou na nich prováděny výpočty. ![](https://www.trentonsystems.com/hs-fs/hubfs/intel%20sgx%20tutorial.png?width=700&name=intel%20sgx%20tutorial.png) ## Smartcards SM je malý levný počítač navrhnutý tak aby byl co nejvíce bezpečný. SM je relativně **výkonné zařízení**, které je přitom dostatečně levné a přenosné. Primárně jsou používané v telekomunikacích SIM a finančním sektoru (bankovní karty, ePassports. Dnes spoustu secure HW používá SM -- TPM, FIDO U2F tokeny, cryptocurrency HW peneženky - 8-32 bit CPU @ 5-50MHz - persistent memory 32-200+kB (EEPROM) - volatile fast RAM, usually <<10kB - truly random number generator - cryptographic coprocessor + alg (RSA, ECC, AES128, ECDSA) ### SM benefity - má **výpočetní schopnosti** -- může šifrovat a podepisovat data, klíč nemusí nikdy opustit SM - obsahuje standardizované crypto algoritmy - **bezpečné uložiště** - management klíčů a citlivých dat - má fyzickou ochranu - narozdíl od např. smartphonů, je SM mnohem **jednoduší zařízení**, méně komplexity, méně bugů ### Fyzická ochrana karty - Tamper-evidence (fyzický útok bude vždy viditelný) - Tamper-resistance (fyzický útok je náročný) - Tamper-response (fyzický útok je detekovatelný a SM na něj zareaguje - vymazání klíčů) ### Útoky na karty *invazivní útoky*: fyzický útok na kartu s cílem dostat se k paměti s citlivými údaji *semi-invazivní útoky*: částečně fyzické poškození, ale čip funkční (např. expose communication bus, read data by microprobe) *side-channel útoky*: neplánovaný únik data SM přes různé kanály, které nejsou určené k přenosu dat např. power consumption analysis, timing attack *logické útoky*: nefyzické remote útoky, které většinou manipulují s komunikací terminálu a SM, Man-in-the middle attacks