Je možné získat sůl, pokud mám hash a původní heslo?
Můj pocit vnitřnosti je ne, ale bylo by to nemožné, nebo to bude trvat velmi dlouho?
Je možné získat sůl, pokud mám hash a původní heslo?
Můj pocit vnitřnosti je ne, ale bylo by to nemožné, nebo to bude trvat velmi dlouho?
Získání soli z hash (sůl + heslo)
by bylo stejně obtížné jako získání hesla z hash (sůl + heslo) )
.
Nejsem si úplně jistý, proč byste chtěli sůl najít, protože sůl obecně není považována za tajnou. V zásadě je ve vašem případě sůl v podstatě heslo, protože nevíte, co to je, a heslo je vaše sůl (pojďme sémantiku stranou, která diktuje, protože heslo pravděpodobně nebude celosvětově jedinečné), protože není tajné.
Standard PBKDF2 uvádí, že by mělo být použito alespoň 64 bitů. Thomas Pornin však uvádí, že:
Soli musí být jedinečné; to je jejich jediná práce. Měli byste se co nejvíce snažit nikdy znovu použít hodnotu soli; příležitostné opětovné použití je zřídka kritické, ale přesto by se mu mělo zabránit). Díky rozumně navrženým schématům hesel kromě solí neexistuje žádná další užitečná vlastnost solí; můžete si je vybrat, jakkoli chcete, pokud nereprodukujete přesně stejnou sekvenci bitů. Jedinečnost je třeba chápat po celém světě.
Běžným způsobem, jak mít více či méně jedinečné hodnoty solí, je generovat je náhodně , s dobrým generátorem (řekněme ten, který je vhodný pro kryptografická použití, jako / dev / urandom). Pokud je sůl dostatečně dlouhá, riziko kolizí (tj. Opětovné použití hodnoty soli) je nízké. Pokud použijete bitové soli, šance na kolizi se stanou nezanedbatelnými, jakmile získáte přibližně 2 n / 2 generované hodnoty. Na této planetě žije asi 7 miliard lidí a zdá se být bezpečné předpokládat, že každý z nich má v průměru necelých 1000 hesel, takže celosvětový počet hashedpassword musí být o něco nižší než 2 42,7 . Proto by mělo stačit 86 bitů soli. Jelikož máme něco jako takzvané „securitymargins“ a navíc, protože programátoři milují moc dvou, pojďme na 128 bitů. Podle výše uvedené analýzy to nestačí k zajištění celosvětové jedinečnosti s dostatečně vysokou pravděpodobností a od soli není nic víc, než jedinečnost.
Pamatujte, že to bude také záviset na vašem algoritmu hašování hesel, v současné době existují tři akceptované algoritmy hašování hesel, které jsou považovány za bezpečné:
Jedná se o poměrně pomalé algoritmy, díky nimž je méně možné hrubou silou solit. Pokud je vaše sůl 64 bitů a váš algoritmus je pomalý, není to vůbec možné. Řekněme, že máte 64bitovou sůl:
((2 64 ) * t) / 2
Kde t je doba potřebná k spočítejte jeden hash a vydělíte ho dvěma statisticky, pravděpodobně ho najdete po provedení poloviny hashů. Bez ohledu na to, že je to SPOUSTA času.
Takže to bude do značné míry záviset na délce vaší soli a použitém algoritmu, jak je ve skutečnosti možné hrubou silou sůl, pokud ji nevíte.
Za předpokladu, že znáte hashovací funkci a metodu použitou ke generování hashu z hesla a soli, je možné sůl objevit, pokud máte původní heslo a koncový hash. Použilo by to hrubou sílu - neexistuje chytrý ani rychlý způsob, jak to udělat.
Ve vašem typickém scénáři je váš hash generován 1) hashováním hesla, potom 2) jeho kombinací se solí a potom 3 ) hašování kombinace hash hesla a soli. Pokud znáte 1) a 3) a znáte délku soli, můžete vyzkoušet každou kombinaci chybějící soli, dokud ji nenajdete. To by zabralo hodně výpočetního výkonu a času.
Nenapadá mě scénář, kdy by objevování soli stálo za to. Soli jsou určeny pouze k jednorázovému použití a nemusíte je chránit. Existuje spousta scénářů, kdy je sůl posílána přes nezašifrované kanály, takže je pravděpodobné, že ji stejně nebudete muset objevovat, pokud můžete získat koncový hash, sůl už pravděpodobně máte. I kdyby někdo implementoval kryptosystém, který používal statickou sůl (špatný nápad!), Nemuseli byste ji hrubě vynucovat, protože ji pravděpodobně získáte jinými prostředky.