it-swarm-eu.dev

Je SHA1 lepší než MD5 pouze proto, že generuje hash 160 bitů?

Je dobře známo, že SHA1 se pro hašování doporučuje více než MD5, protože MD5 je prakticky přerušen, protože bylo nalezeno mnoho kolizí. S narozeninovým útokem je možné získat kolizi v MD5 s 264 složitost as 280 složitost v SHA1

Je známo, že existují algoritmy, které jsou schopny oba rozbít v mnohem kratším čase, než je tomu u útoku narozenin.

Moje otázka zní: je MD5 považován za nejistý pouze z tohoto důvodu, že je snadné vytvářet kolize? Protože se podíváme na oba, není kolize v SHA1 tak obtížná. Co dělá SHA1 lepším?

Aktualizace 02/2017 - https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

71
sudhacker

Vytváření kolizí SHA-1 není , že snadné. Zdá se rozumné, že útok s byl popsán na SHA-1, opravdu funguje s průměrnou cenou 261, mnohem rychlejší než obecný narozeninový útok (který je ve 280), ale stále docela obtížné ( proveditelné , ale drahé).

Jak již bylo řečeno, opravdu nevíme, co dělá hašovací funkce odolnými (viz například tato odpověď pro podrobnou diskusi). Se spoustou mávání rukou bych mohl tvrdit, že SHA-1 je robustnější než MD5, protože má více kol a protože odvození 80 slov zpráv v SHA-1 je mnohem více „míchání“ než odvozování MD5 (v zejména 1-bitová rotace, která je mimochodem jediným rozdílem mezi SHA-0 a SHA-1, a SHA-0 došlo ke kolizím).

Pro více stejného se podívejte na SHA-256, která je mnohem „masivnější“ (mnohem více operací než SHA-1, ale s podobnou strukturou) a v současné době nepřerušená. Je to, jako by existovalo minimální množství operací pro zajištění hashovací funkce, pro danou strukturu (ale tam pohybuji rukama úžasnou rychlostí, takže nevěřte, že jsem řekl něco skutečně vědeckého nebo hlubokého).

91
Tom Leek

Ne. Nejde jen o délku výstupu. Existují významné rozdíly v jejich úrovni zabezpečení proti kryptanalytickým útokům.

Na MD5 dochází k ničivým kolizním útokům. ( článek Wikipedie o MD5 obsahuje některé podrobnosti.) Tyto útoky znamenají, že MD5 neposkytuje v podstatě žádnou bezpečnost proti kolizím: v MD5 je snadné najít kolize.

Naproti tomu se zdá, že SHA1 je mnohem bezpečnější. I když existují některé známé útoky na SHA1, jsou mnohem méně závažné než útoky na MD5. ( článek Wikipedia o SHA1 má přehled.) Z tohoto důvodu je SHA1 v mnoha nastaveních mnohem lepší volbou než MD5.

V dnešní době, místo použití MD5 nebo SHA1, jste pravděpodobně ještě lepší používat jednu z modernějších hash funkcí, jako je SHA256. Ti nemají žádné známé útoky praktického významu.

Ale rozhodně nepoužívejte MD5 v žádném prostředí, kde je nutná odolnost proti kolizi, protože tento aspekt MD5 je zcela rozbitý.

37
D.W.

Úroveň zabezpečení poskytovaná hashovací funkcí je založena na obtížnosti generování prostého textu, který bude produkovat daný hašovací podpis (výstup hash). Hash je rychlá metoda zjednodušení sady dat, která ukazuje, že uživatel vlastní původní data, aniž by je skutečně odhalil. To může být užitečné jak pro ověření, že někdo je tím, kdo říká, že je (porovnáním hashova něčeho, co znáte, s uloženou hodnotou), jakož i pro ověření, že zpráva nebyla změněna. Protože hash je mnoho k jednomu (mnoho hodnot bude produkovat stejnou hash hodnotu), je teoreticky obtížné pracovat od hashe k původní hodnotě. Kvůli vysokému počtu možných hodnot hash by mělo být obtížné získat hash pro vytvoření daného výstupu.

To však bohužel není vždy pravda. Očekávání, že určité hodnoty odpovídají lidskému čitelnému vstupu, umožňuje útokům slovníku zvaným Rainbow tabulky proti hashe a pokusit se zjistit původní hodnotu. Solení (přidání nečlověkého čitelného vstupu na začátek nebo na konec vstupu) je pokusem zabránit tomu, aby tabulky Rainbow fungovaly, protože by musely být vyrobeny pro každou jinou sůl.

Dalším problémem, který se týká vaší otázky, je problém hashových srážek. K kolizi hash dojde vždy, když dva dané vstupy vytvoří stejný hash výstup. Aby bylo možné ověřit, že data nebyla změněna, nesmí být snadno možné vygenerovat hash pro změněnou sadu dat, která odpovídá hashe originálu. Bohužel, MD5 je v tomto ohledu důkladně kompromitován s tím, že existuje několik způsobů, jak relativně snadno najít změny, které mohou být provedeny na konec nebo začátek užitečného zatížení, aby se jevilo jako platné. SHA-1 má v tomto ohledu také některé drobné kompromisy, které byly nedávno objeveny, jsou však méně závažné než problémy MD5. Použití něčeho, jako je SHA256, je ještě bezpečnější, protože v současnosti nemá žádné známé útoky proti hašovací kolizi.

1
AJ Henderson