# 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

### 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

### 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)

### 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.

## 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