Gaëtan Leurent a Thomas Peyrin odhalili nový útok na hašovací funkci SHA-1, který nazvali Shambles (PDF). Podařilo se jim natolik zjednodušit hledání kolizí, že se tím prakticky SHA-1 dostává na úroveň dávno prolomené funkce MD5. SHA-1 je tedy pro jakákoliv autentizační schémata mrtvá a žádné bezpečnostní nástroje by na ni neměly spoléhat.
Od SHAttered ke SHAmbles
První teoretické útoky na hašovací funkci SHA-1 se objevily už v roce 2005. Nebyly sice prakticky realizovány kvůli nutnosti obrovského výpočetního výkonu, už ale znamenaly první trhliny v bezpečnosti běžně používané funkce.
Už v roce 2010 americká organizace NIST vyřadila SHA-1 z doporučovaných hašovacích funkcí. Postupně se v průběhu let dostávala pryč z různých aplikací, například CA/B Fórum od roku 2016 zakazuje vydávání nových certifikátů používající tuto nebezpečnou funkci. Prohlížeče pak postupně takové certifikáty začaly označovat za nedůvěryhodné.
Přesto zůstává řada aplikací, které stále ještě na SHA-1 staví. První skutečná kolize pak byla předvedena na začátku roku 2017 a byla nazvána SHAttered. Google tehdy společně s vědci z CWI Institute in Amsterdam představil dva PDF dokumenty s odlišným obsahem, ale se stejným hašem SHA-1.
Útok tehdy stál 110 000 dolarů a vyžadoval pronájem spousty hardware pro 6500 let procesorového výkonu. Přestože to vypadá jako vysoké číslo, před dvěma lety to bylo mnohem méně, než se předpokládalo. Praktická kolize ukázala, že SHA-1 opravdu není bezpečný algoritmus a nejde o nějakou teoretickou slabinu. Všechny útoky proveditelné na MD5 je teď možné provést také na SHA-1,
píší autoři v oznámení.
V praxi je ovšem využitelnost tohoto konkrétního útoku diskutabilní, protože potenciální útočník neměl přímou kontrolu nad kolizními daty. Prakticky mnohem lépe využitelný by byl útok, při kterém by bylo možné předem zvolit podobu kolizního dokumentu. Pak by bylo například možné upravit jméno certifikační autority nebo pozměnit část dokumentu chráněného pomocí SHA-1.
Lépe, rychleji, levněji
Čerstvě odhalený útok Shambles nejen že dovoluje použít „vybraný prefix“, čímž je možné vlastně cíleně připravit kolizní dokument, ale funguje také výrazně rychleji a levněji. Samotný test proběhl už v loňském roce a podle autorů stál asi 74 000 dolarů.
Při lepší optimalizaci software a s použitím novějšího efektivnějšího hardware by jej prý bylo možné ale provést zhruba za 45 000 dolarů. Do pěti let cena navíc klesne přibližně na pětinu. Zajímavé je, že starší útok SHAttered by se dnes dal pořídit zhruba za 11 000 dolarů, tedy za desetinu toho, co před dvěma lety.
Shambles snížil výpočetní náročnost útoku přibližně desetkrát. K demonstraci útoku bylo použito 900 grafických jader Nvidia GTX 1060, která na výpočtu pracovala dva měsíce. Díky možnosti vybrat si prefix obou kolizních zpráv lze vytvořit smysluplné dokumenty, které jsou pak v praxi zneužitelné.
Útok na důvěru v GnuPG
Nově objevená zranitelnost je dalším hřebíkem do rakve už tak prakticky pohřbené hašovací funkce SHA-1. Stále ovšem existuje řada míst, kde ji najdeme. Příkladem je PGP, kde se kvůli zpětné kompatibilitě stále ve výchozím stavu k ověření identity uživatele používá SHA-1.
Právě tohle prostředí si vědci vybrali k demonstraci. Vytvořili dva různé klíče s různými uživatelskými ID, ale s kolidujícími certifikáty. Jeden z klíčů pak může být v rámci sítě důvěry (Web of Trust) podepsán dalšími uživateli, ale tyto podpisy mohou být díky kolizi hašovací funkce přeneseny k druhému klíčí. Ten sice ostatní uživatelé nikdy neviděli, jejich potvrzení důvěry je ale platné i pro něj.
Vývojáři GnuPG byli varováni předem (CVE-2019–14855) a v rámci sítě důvěry už slabé funkci nedůvěřují. Pokud by totiž v praxi došlo ke zneužití výše popsané kolize, mohl by se jeden uživatel vydávat za jiného a přitom by mohl potvrdit v síti důvěry pravost podvrženého klíče.
SHA-1 je tu stále s námi
Míra používání hašovací funkce SHA-1 v posledních deseti letech dramaticky poklesla, zejména na nejviditelnějším místě – na webu. Stále je tu ale řada aplikací, kde se s ní můžeme setkat: zmíněné PGP, TLS, SSH nebo třeba také verzovací systém Git. Rovněž pravděpodobně existuje řada proprietárních protokolů, kde se ní ještě setkáme.
Podpora SHA-1 je nebezpečná už jen tím, že útočník může klienta donutit na ni přejít ze silnějších variant (downgrade attack) a tím efektivně zabezpečení prolomit. Hašovací funkce SHA-1 je považována za slabou už 15 let a útoky na ni se budou dále jen zlepšovat.
Pokud tedy ještě máte ve svém software zapnutou podporu SHA-1, je nejvyšší čas přejít na bezpečnější hašovací funkce, například SHA-256 nebo SHA-3.