it-swarm-eu.dev

Je MD5 považován za nejistý?

Poté, co všechny tyto články cirkulují online o md5 zneužívá, uvažuji o přechodu na jiný algoritmus hash. Pokud vím, vždy to byl algoritmus volby mezi mnoha DBA. Je to mnohem výhodnější použít MD5 místo (SHA1, SHA256, SHA384, SHA512), nebo je to čistě výkonnostní problém?

Jaké další hash doporučujete (s ohledem na aplikace vázané na data jako platformu)? Momentálně používám solené hashe (MD5 solené hashe). Zvažte prosím jak hash souboru md5, tak hash hesla.

89
Tawfik Khalifeh

MD5 pro hesla

Použití solených md5 pro hesla je špatný nápad. Ne kvůli kryptografickým slabinám MD5, ale proto, že je rychlý. To znamená, že útočník může vyzkoušet miliardy hesel kandidátů za sekundu na jediné GPU.

To, co byste měli použít, jsou záměrně pomalé hašovací konstrukce, jako je scrypt, bcrypt a PBKDF2. Jednoduchý solený SHA-2 není dost dobrý, protože, stejně jako hashe pro obecné použití, je rychlý. Podívejte se na Jak bezpečně hash hesla? pro podrobnosti o tom, co byste měli použít.

MD5 pro integritu souboru

Použití MD5 pro integritu souborů může nebo nemusí být praktickým problémem v závislosti na konkrétním scénáři použití.

Útoky proti MD5 jsou kolizní útoky, nikoli útoky před obrazem. To znamená, že útočník může vytvořit dva soubory se stejným hashem, pokud má nad nimi oba kontrolu. Nemůže se však shodovat s hashem existujícího souboru, který neovlivnil.

Nevím, zda se útoky týkají vaší aplikace, ale osobně bych začal migrovat, i když si myslíte, že to tak není. Je příliš snadné něco přehlédnout. Jistota je jistota.

Nejlepší řešení v této souvislosti je prozatím SHA-2 (SHA-256). Jakmile bude standard SHA-3 standardizovaný, bude to také dobrá volba.

108
CodesInChaos

K dokončení odpovědi @CodesInChaos 'se MD5 často používá kvůli tradici , nikoli kvůli výkonu. Lidé, kteří se zabývají databázemi, nejsou stejní lidé jako ti, kteří se zabývají bezpečností. Často nevidí žádný problém s používáním slabých algoritmů (např. Viz vtip algoritm , který MySQL používal pro hashovací hesla). Používají MD5, protože používali MD5 a jsou zvyklí používat MD5.

Výkon je mnohem častěji diskutováno než měřeno; a přesto logicky nemůže existovat problém s výkonem, pokud není co měřit. Pomocí jednoho jádra základního CPU můžete hashovat více než 400 MBytů za sekundu pomocí MD5, blíže 300 MB/s pomocí SHA-1 a 150 MB/s pomocí SHA-256. Na druhé straně slušný pevný disk poskytne data ještě nižší rychlostí (typické by bylo 100 až 120 MB/s), takže hashova funkce je stěží překážkou. V důsledku toho neexistuje žádný problém s výkonem relativně vůči hašování v databázích.

Obvyklá doporučení pro hašovací funkce jsou:

  1. Nedělej to. Neměli byste používat elementární kryptografické algoritmy, ale protokoly, které sestavují několik algoritmů tak, aby společně poskytovaly některé bezpečnostní funkce (např. Přenos dat s důvěrností a integritou).

  2. Opravdu, nedělej to. Pro ukládání hesel (přesněji, tokeny pro ověření hesla) neprovádějte vlastní mix hashovací funkce a solí; použít konstrukci, která byla speciálně pro takové použití studována. To obvykle znamená bcrypt nebo PBKDF2 .

  3. Je-li hashová funkce skutečně tím, co dělá úlohu, použijte SHA-256. Zvažte použití jakékoli jiné funkce pouze v případě, že byl řádně detekován a změřen nějaký závažný problém se SHA-256 (pravděpodobně jeho výkon).

35
Thomas Pornin

Momentálně používám solené hashe (MD5 solené hashe).

Pokud solíte hashováním MD5, rozhodně nechcete MD5 používat. Zní to, jako byste potřebovali použít PBKDF2 nebo bcrypt.

Pokud vím, vždy to byl algoritmus volby mezi mnoha DBA.

To není přesvědčivý důvod.

Pracoval jsem se spoustou databází DBA, které jsou obecně o 5 let pozadu v obecné technologii (nepoužívám řízení verzí, neformátované skripty Perlu pro všechno atd.). Mohly to být obzvláště špatné DBA, ale myslím, že přichází s extrémně konzervativním přístupem neměnících se věci.

6
Bradley Kreider

Abychom doplnili již uvedené odpovědi (většina z nich je vynikající), máme nyní příklad skutečného světa, kde porušení dat (Ashley Madison) vede k úniku celé tabulky hesel. Použili bcrypt s náhodnou solí k hašování hesel. Výzkumník v oblasti bezpečnosti se rozhodl vzít tyto hashe a hrubou silou je vynutit. To byl výsledek

Výsledkem toho všeho je, že bcrypt vyžaduje Herkulovy požadavky na kohokoli, kdo se snaží rozbít skládku Ashley Madison alespoň ze dvou důvodů. Zaprvé, 4 096 iterací hashování vyžaduje velké množství výpočetního výkonu. V Piercově případě bcrypt omezil rychlost své praskliny na čtyřech GPU na mizerných 156 odhadů za sekundu. Zadruhé, protože jsou kryptované hashované soli, musí jeho souprava hádat prostý text každého hashe jeden po druhém, a ne všechny najednou.

„Ano, má pravdu, 156 hashů za sekundu,“ napsal Pierce. "Pro někoho, kdo si zvykl na praskání hesel MD5, to vypadá docela zklamáním, ale je to brypt, takže vezmu, co můžu."

Pierce se vzdal, když překonal hranici 4 000. Odhaduje se, že spuštění všech šesti milionů hashů v Pierceově omezeném fondu proti heslům RockYou by vyžadovalo neuvěřitelných 19 493 let. S celkem 36 miliony hashovacích hesel na skládce Ashley Madison by dokončení této práce trvalo 116 958 let.

Na konci dne byli jediní, kdo dokázal crackovat, směšně jednoduchá nebo běžná hesla (jako „123456“).

4
Machavity

Abych to zkrátil, je nyní kvůli tabulkám Rainbow docela nejistý, tabulka Rainbow je seznam hashů MD5 a jejich odpovídajících řetězců. V zásadě bych uvažoval o jiných alternativách, jako je SHA1

0
Shane

Ano, MD5 je nejistá, a tak je to i SHA-1, proto doporučuji používat SHA-256, pokud je problém s výhrou. Pamatujte, že pokud jej uložíte do sloupce BINARY, zabere méně místa, než pokud je uloženo do CHAR. Jen se ujistěte, že se to dělá správně. MD5 je asi 2,3x rychlejší než SHA-256. Více standardů najdete na http://www.cryptopp.com/benchmarks.html

0
Matrix