Výplň věšteckého útoku - Padding oracle attack - Wikipedia
V kryptografii, a padding věštecký útok je útok, který využívá polstrování ověření kryptografické zprávy k dešifrování šifrovacího textu. V kryptografii musí být zprávy holého textu s proměnnou délkou často polstrované (rozšířené), aby byly kompatibilní s podkladem kryptografický primitiv. Útok se spoléhá na to, že má „padding Oracle“, který svobodně reaguje na dotazy, zda je zpráva správně polstrovaná či nikoli. Padding Oracle útoky jsou většinou spojeny s Dešifrování režimu CBC použitý uvnitř blokové šifry. Režimy odsazení pro asymetrické algoritmy, jako je OAEP může být také citlivé na polstrování Oracle útoků.[1]
Symetrická kryptografie
V symetrické kryptografii výplň věštecký útok lze použít na Provozní režim CBC, Kde "věštec "(obvykle server) únik dat o tom, zda polstrování šifrované zprávy je správná nebo ne. Taková data mohou útočníkům umožnit dešifrovat (a někdy i zašifrovat) zprávy prostřednictvím věštce pomocí klíče věštce, aniž by věděli šifrovací klíč.
Padding Oracle útok na šifrování CBC
Standardní implementací dešifrování CBC v blokových šifrách je dešifrování všech bloků ciphertextu, ověření paddingu, odstranění Polstrování PKCS7 a vrátí holý text zprávy. Pokud server vrátí chybu „neplatné polstrování“ místo obecné chyby „dešifrování selhalo“, může útočník použít server jako padding věštec k dešifrování (a někdy k zašifrování) zpráv.
Matematický vzorec pro dešifrování CBC je
Jak je znázorněno výše, CBC dešifrování XOR každý blok prostého textu s předchozím blokem ciphertext. Výsledkem je jednobajtová modifikace v bloku provede odpovídající změnu jednoho bajtu v .
Předpokládejme, že útočník má dva bloky šifrovaného textu a chtějí dešifrovat druhý blok, aby získali prostý text Útočník změní poslední bajt (vytváření ) a odešle Server poté vrátí, zda je či není výplň posledního dešifrovaného bloku () je správné (rovná se 0x01). Pokud je výplň správná, útočník nyní ví, že poslední bajt je . Proto, Pokud je výplň nesprávná, může útočník změnit poslední bajt na další možnou hodnotu. Útočník bude muset provést 256 pokusů (jeden odhad pro každý možný bajt), aby našel poslední bajt . Pokud dešifrovaný blok obsahuje výplňové informace nebo bajty použité pro výplň, bude nutné provést další pokus o vyřešení této nejednoznačnosti.[2]
Po určení posledního bajtu , může útočník použít stejnou techniku k získání předposledního bajtu Útočník nastaví poslední bajt na nastavením posledního bajtu z na Útočník poté použije stejný přístup popsaný výše, tentokrát upravuje předposlední bajt, dokud není vyplnění správné (0x02, 0x02).
Pokud blok sestává ze 128 bitů (AES, například), což je 16 bytů, získá útočník prostý text ne více než 255⋅16 = 4080 pokusů. To je podstatně rychlejší než pokusy o bruteforce 128bitový klíč.
Šifrování zpráv pomocí Padding Oracle útoku (CBC-R)
CBC-R[3] promění dešifrovací věštce na věštec šifrovací a je primárně demonstrován proti padding věštcům.
Pomocí padding Oracle útoku CBC-R lze vytvořit inicializační vektor a blok ciphertext pro jakýkoli prostý text:
- dešifrovat jakýkoli šifrovací text Pi = PODecrypt (Ci ) XOR Ci − 1,
- vyberte předchozí šifrovací blok Cx − 1 volně,
- vytvořit platný pár ciphertext / plaintext Cx-1 = PX XOR PODecrypt (C.i ).
Generovat šifrovací text, který je N bloky dlouhé, musí útočník provést N počty padlých věšteckých útoků. Tyto útoky jsou zřetězeny dohromady, takže správný prostý text je konstruován v opačném pořadí, od konce zprávy (CN) na počáteční zprávu (C0, IV). V každém kroku se používá padding oracle attack ke konstrukci IV na předchozí vybraný ciphertext.
Útok CBC-R nebude fungovat proti šifrovacímu schématu, které ověřuje šifrovací text (pomocí a ověřovací kód zprávy nebo podobné) před dešifrováním.
Útoky pomocí polstrovaných věštců
Původní útok byl publikován v roce 2002 autorem Serge Vaudenay.[4] Konkrétní instance útoku byly později realizovány proti SSL[5] a IPSec.[6][7] To bylo také aplikováno na několik webové rámce, počítaje v to Tváře JavaServeru, Ruby on Rails[8] a ASP.NET[9][10][11] stejně jako další software, například Parní herní klient.[12] V roce 2012 se ukázalo, že je účinné proti některým tvrzeným bezpečnostním zařízením.[13]
Zatímco tyto dřívější útoky byly většinou opraveny TLS realizátoři po svém veřejném oznámení, nová varianta, Lucky Thirteen útok, publikovaný v roce 2013, použil časovací postranní kanál k opětovnému otevření chyby zabezpečení i v implementacích, které byly dříve opraveny. Počátkem roku 2014 již útok není považován za hrozbu v reálném provozu, i když teoreticky je stále proveditelný (viz odstup signálu od šumu ) proti určité třídě strojů. Od roku 2015[Aktualizace], nejaktivnější oblastí vývoje útoků na kryptografické protokoly používané k zabezpečení internetového provozu jsou downgrade útok, jako je Logjam[14] a exportujte RSA / FREAK[15] útoky, které přimějí klienty používat méně zabezpečené kryptografické operace poskytované pro kompatibilitu se staršími klienty, pokud jsou k dispozici bezpečnější. Volal útok PUDL[16] (konec roku 2014) kombinuje útok na downgrade (na SSL 3.0) s útokem padding Oracle na starší, nezabezpečený protokol, aby umožnil kompromis přenášených dat. V květnu 2016 to bylo odhaleno v CVE -2016-2107 že oprava proti Lucky Thirteen v OpenSSL zavedla další polstrování věštce.[17][18]
Reference
- ^ Manger, Jamesi. „Zvolený útok šifrováním na RSA Optimal Asymetric Encryption Padding (OAEP) as Standardized in PKCS # 1 v2.0“ (PDF). Výzkumné laboratoře Telstra.
- ^ Je výplň věšteckého útoku deterministická
- ^ Juliano Rizzo; Thai Duong (25. května 2010). Praktické vycpávky Oracle Attacks (PDF). USENIX WOOT 2010.
- ^ Serge Vaudenay (2002). Bezpečnostní chyby vyvolané aplikacemi CBC Padding na SSL, IPSEC, WTLS ... (PDF). EUROCRYPT 2002.
- ^ Brice Canvel; Alain Hiltgen; Serge Vaudenay; Martin Vuagnoux (2003), Zachycení hesla v kanálu SSL / TLS (PDF).
- ^ Jean Paul Degabriele; Kenneth G. Paterson (2007), Útok na standardy IPsec v konfiguracích pouze pro šifrování (PDF), archivovány z originál dne 19. prosince 2018, vyvoláno 25. září 2018.
- ^ Jean Paul Degabriele; Kenneth G. Paterson (2010), Na (Ne) zabezpečení IPsec v konfiguracích MAC-then-Encrypt, CiteSeerX 10.1.1.185.1534.
- ^ Juliano Rizzo; Thai Duong (25. května 2010). Praktické vycpávky Oracle Attacks (PDF). USENIX WOOT 2010.
- ^ Thai Duong; Juliano Rizzo (2011). Kryptografie na webu: Případ nedostatků v kryptografickém designu v ASP.NET (PDF). IEEE Symposium on Security and Privacy 2011.
- ^ Dennis Fisher (13. září 2010). "'Padding Oracle 'Crypto Attack Affact Millions of ASP.NET Apps ". Hrozivý příspěvek. Archivovány od originál dne 13. října 2010.
- ^ Vlad Azarkhin (19. září 2010). ""Výplň Oracle „Vysvětlení zranitelnosti ASP.NET“. Archivovány od originál dne 23. října 2010. Citováno 11. října 2010.
- ^ „Breaking Steam Client Cryptography“. Steam databáze. Citováno 1. května 2016.
- ^ Romain Bardou; Riccardo Focardi; Yusuke Kawamoto; Lorenzo Simionato; Graham Steel; Joe-Kai Tsay (2012), Efektivní vycpávky Oracle útočí na kryptografický hardware (PDF)
- ^ Matthew Green; Nadia Heningerová; Paul Zimmerman; et al. (2015), Imperfect Forward Secrecy: How Diffie – Hellman Fails in Practice (PDF). Další informace viz https://www.weakdh.org Archivováno 22 prosince 2019 na Wayback Machine.
- ^ Matthew Green (3. března 2015). „Attack of the week: FREAK (or 'factoring the NSA for fun and profit')“.; vidět https://www.freakattack.com Pro více informací.
- ^ Matthew Green (14. října 2014). „Útok týdne: POODLE“.; Další informace viz https://www.poodle.io
- ^ Bezpečnostní poradenství OpenSSL [3. května 2016], 3. května 2016
- ^ Ještě další polstrování Oracle v šifrovacích šifrech OpenSSL CBC, Cloudflare, 4. května 2016