Google se na sklonku týdne pochlubil, že s kolegy z amsterdamského institutu CWI v rámci projektu SHAttered.io prolomil kryptografickou hašovací funkci SHA-1. Ta, stejně jako mnohé další, slouží k tomu, abychom nějaký balík dat popsali jedinečným identifikátorem – takovým, který se pokud možno při použití funkce už nikdy nezopakuje.
Díky tomu se dnes hashovací funkce používají třeba k bezpečnostnímu zakódování hesel v databázi, ke kontrolním součtům souborů (hashovací funkce pro každý soubor vygeneruje jedinečný identifikátor, čili můžeme snadno ověřit, jestli do souboru někdo nezasáhl, změna jediného bitu by totiž změnila i výstup hashovací funkce) a tak dále.
Hashovací funkce jsou nakonec nedílnou součástí internetových certifikátů, které ověřují identitu (nejen) webů, elektronických podpisů, ale i dalších komunikačních a třeba i bankovních systémů.
Kolize
Některé starší hashovací funkce se už dnes nehodí v kritických aplikacích – typicky třeba MD5, protože díky chybám ji lze snadno prolomit a pro dva různé balíky dat spočítat stejný identifikátor. Říká se tomu kolize a je to obrovský průšvih, když se totiž vrátím k oněm internetovým certifikátům, znamenalo by to, že dva různé se mohou tvářit jako jeden a podvodník toho může snadno zneužít a vydávat se za někoho důvěryhodného, může spustit velmi sofistikovaný phishing, kdy bude jeho podvodná webová stránka podepsaná jako důvěryhodný web banky a tak dále a tak dále.
Princip kolize: dva různé dokumenty mají stejný hash
Funkce MD5 by se proto neměla v kritických aplikacích používat už dlouhé roky (rozhodně ne třeba na hashování hesel v databázích), nicméně stejně tak se už leta letoucí mluví o tom, že je čas skoncovat s jejím nástupcem SHA-1.
SHA-1 je sice mnohem bezpečnější než MD5, nicméně Google a další před jejím používáním varují už dlouhé roky. Ostatně i na Živě.cz jsme v minulých letech několikrát psali o tom, že velké ekosystémy hodlají SHA-1 definitivně zaříznout.
Živě.cz je bezpečné, u některých starých webů to tak být ale nemusí
A skutečně, každý důležitý web, který používá šifrované spojení HTTPS, by to dnes od odborné komunity opravdu schytal, pokud by i v roce 2017 používal SHA-1. Zároveň by vám už dnes žádná certifikační autorita neměla vydat nový certifikát, který používá právě tuto funkci.
Ostatně libovolnou webovou doménu si můžete prolustrovat třeba v tomto formuláři. Jak Google, tak Facebook, Microsoft i tuzemský Seznam používají zase o řád bezpečnější SHA-2.
Armáda grafických karet
Prolomení SHA-1 ze strany Googlu a spočítání oné kolize, je tedy dílem marketingový čin, který má přesvědčit poslední loudavce, jejichž softwarové a webové systémy lpí na SHA-1. Její prolomení a spočítání kolize je totiž pouze otázkou počítačového výkonu.
Útok zatím nedokáže zopakovat kdekdo, ale rozhodně je možný a neměl by být problém třeba pro stát a movitou skupinu útočníků.
V podstatě lze konstatovat, že lze čistě teoreticky prolomit jakoukoliv šifru, ale při současných výkonech počítačů by to byl natolik náročný proces, že se to nikomu na světě nevyplatí. Ostatně ani výpočet Googlu nebude pro každého, pomocí své techniky, o které se rozepsal na blogu, totiž ke zjištění kolize potřeboval 9 223 372 036 854 775 808 dílčích výpočtů na armádě grafických karet. S jednou grafickou kartou s CUDA byste k tomu potřebovali 110 let. Google měl ve svých datových centrech samozřejmě neomezené hardwarové možnosti, a tak t zvládl za zlomek času.
Takže SHA-1 sloužila jsi dobře, ale kvůli rostoucímu počítačovému výkonu a jeho dostupnosti nadešel čas, aby ses stala minulostí. Odpočívej v pokoji.