it-swarm-eu.dev

Jsou solené hashovací SHA-256/512 stále bezpečné, pokud jsou hash a jejich soli vystaveny?

Scénář: uživatel se zlými úmysly ukradl databázi hashovaných a slaných hesel, včetně solí pro každé heslo. Hesla jsou dlouhá 6-10 znaků a jsou vybírána netechnickými uživateli.

Může tento škodlivý uživatel crack tato hesla?

Chápu, že MD5 a SHA-1 již nejsou bezpečné, protože nástroje pro obnovení hesla pomocí GPU mohou vypočítat miliardy těchto hashů za sekundu na GPU.

A co SHA-256 nebo SHA-512? Jsou v současné době v bezpečí? A co za pár let?

51
Seppo Erviälä

Otázka neuvádí, kolik kol hashování se provádí. A celá odpověď na to závisí.

Všechny hashovací funkce nejsou bezpečné, pokud používáte pouze jednu iteraci. Hashova funkce, ať už je to SHA-1 nebo jedna z rodiny SHA-2, by se měla opakovat tisícekrát. Za minimum bych považoval 10 000 iterací a 100 000 iterací není nepřiměřených vzhledem k nízkým nákladům na výkonný hardware.

Krátká hesla jsou také nebezpečná. Minimální počet znaků je 8, a to i pro cíle s nízkou hodnotou (protože uživatelé opakovaně používají stejné heslo pro více aplikací).

S grafickou kartou 150 $ můžete provádět 680 milionů SHA-1 hash výpočtů za sekundu. Pokud používáte pouze jedno kolo hashování, všechny 6-znaková hesla mohou být testován za něco málo přes 15 minut (za předpokladu, že všech 94 tisknutelných ASCII). Každý další znak vynásobí čas 94, takže 7 znaků vyžaduje jeden den, 8 znaků vyžaduje 103 dní v tomto nastavení. Pamatujte, že tento scénář je čtrnáctiletý pomocí své GPU, ne organizovaný zločinec se skutečnými penězi.

Nyní zvažte účinek provádění více iterací. Je-li provedeno 1 000 iterací hashování, zabere šestimístný prostor pro heslo téměř 12 dní místo 15 minut. Prostor se 7 znaky trvá 3 roky. Používá-li se 20 000 iterací, tato čísla se zvyšují až na 8 měsíců, respektive 60 let. V tuto chvíli nelze vyčerpávajícím způsobem prohledávat ani krátká hesla; útočník se musí vrátit ke slovníku „nejpravděpodobnějších“ hesel.

61
erickson

Sůl může být považována za veřejnou prakticky podle definice .

Pokud jde o to, co hash použít a jak je to „bezpečné“, dodržoval bych doporučení NIST pro vládní agentury USA. Jak článek Wikipedie říká:

SHA-1 je v důchodu pro většinu vládních použití; Americký národní institut pro standardy a technologie říká: „Federální agentury by měly přestat používat SHA-1 pro ... aplikace, které vyžadují kolizní odolnost, jakmile to bude praktické a po roce 2010 musí pro tyto aplikace používat hashovací funkce řady SHA-2 “

Můžete spekulovat o tom, jak bezpečné nebo nebezpečné jsou různé algoritmy, ale proč se obtěžovat, když máte specifika, kterou vláda USA považuje za dostatečně dobrou pro své vlastní použití?

[Upravit]

Mimochodem, vaše otázka se zdá odrážet nedorozumění o tom, jak jsou tyto analýzy prováděny. Existuje mnohem více hashovací funkce, než je počet bitů.

Brute-nutit 160-bit hash jako SHA-1 vyžaduje 2 ^ 160 úsilí; to se prostě nestane, bez ohledu na to, kolik „GPU“ na to hodíte. Ve skutečnosti se to pravděpodobně nestane za života vesmíru. (Pravda, srážka vynucená brutální cestou vyžaduje "pouze" 2 ^ 80 úsilí. Ale také vyžaduje 2 ^ 80 úložiště . Hodně štěstí s tím.)

Důvodem, proč jsou MD5 a SHA-1 považovány za „pravděpodobně nebezpečné“, je to, že v každém algoritmu byly objeveny slabiny, které by mohly snížit pracovní cestu, hluboko pod snahu brutální síly. Důvodem přechodu na novější algoritmus (jako SHA-2) je vyhnout se těmto známým slabinám; důvodem použití 256 bitů je poskytnutí nějaké vyrovnávací paměti proti neznámým slabinám. To nemá nic společného s „GPU“; Aby odolal útokům hrubou silou, je 160 bitů dost.

Podobná tvrzení platí mimochodem pro veškerou kryptografii.

Nyní není možné zveličovat, o kolik více lidí na NSA o těchto věcech ví) než vy nebo já. Dávají doporučení pro vládní agentury USA a americký průmysl prostřednictvím NIST. Takže pokud váš protivník je sama o sobě hlavní světovou vládou, doporučení NIST jsou více než dostačující. Ignorujte všechny samozvané „odborníky“, kteří se vám snaží říci jinak; NSA je lepší v tom, co dělá, než je možné) představit si.

Pokud je váš protivník hlavní světovou vládou, nikdo na SO není kvalifikovaný, aby vám pomohl. A máte mnohem větší problémy, než které hash funkce použít.

[upravit 2]

Samozřejmě předpokládám, že tuto funkci již používáte jako součást standardního schématu hašování hesel, jako je PKCS # 5 (také známý jako „PBKDF2“), a vaše otázka byla čistě o tom, jaké hashovací funkce má použití.

PBKDF2 doporučuje minimálně 1000 iterací, ale můžete si vybrat, co chcete. Úsilí útočníka o brutální sílu stoupá lineárně s tímto číslem, takže 10 000 iterací vs. 1 000 znamená, že jim bude trvat 10krát déle, než si každé heslo vynutí síly.

17
Nemo

Pokud útočník zná sůl, může vypočítat novou tabulku Rainbow na základě hodnoty soli.

Závisí to na použitém algoritmu. Podle Coda Hale , MD5 a SHA = skupina hashovacích algoritmů jsou obecné účely a jsou určeny pro rychlost.) Krátce řečeno, dochází k závěru, že tyto nejsou dostatečné pro prevenci slovníkových útoků a toho bcrypt je způsob, jak jít, protože je více času nastavení zapojených do praskání hesel, drasticky zpomalit útočníka. Zde je další zajímavý článek o bcrypt .

A co SHA-256 nebo SHA-512? Jsou v současné době v bezpečí? A co za pár let?

Upozorňujeme, že tento argument má dvě strany. Existuje bcrypt strana a SHA-256 a nahoru. Pokud věříte těm v rodině SHA), pak věřím, že budete s SHA-256 v bezpečí více než několik let, dokonce i někteří tvrdí, že SHA-1 se solí je stále dost dobrý, ale pokud chcete být v bezpečí, pak bych se držel SHA-256. Existuje fórum, které také zmiňuje, že MD5 má ještě 5-10 let, aby bylo prokázáno "dostatečně nespolehlivé." Bohužel nemůžu zveřejnit odkazy. k tomu, protože jsem už dosáhl svého maxima dvou.

Osobně používám SHA-256 se solí, ale určitě si budu muset přečíst více do bcrypt a přehodnotit. Doufejme, že to pomůže. To je typ otázky, kterou můžete snadno strávit bezpočet hodin zkoumáním, ale přesto zajímavé.

1
SantosLHalper