Otázka:
Je možné získat sůl, pokud mám hash a původní heslo?
Jake
2014-11-20 14:12:45 UTC
view on stackexchange narkive permalink

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?

Ano, bylo by to stejné jako vynucení hesla. Jak řekl GdD, nemá smysl pokoušet se najít sůl, pokud již máte heslo. Stačí vygenerovat novou sůl a nový hash, jediným účelem soli je být multiplikátorem síly v boji proti bruteforcingu, nemá to mít žádnou další hodnotu.
Jen jsem chtěl říct: Jediný důvod, proč si dokážu představit, že by se kdokoli chtěl naučit sůl, je ten, že mohli sůl použít k dešifrování dalších hesel ve stejné databázi; avšak za předpokladu, že byl správně zaveden režim solení, má každý hash nezávisle generovanou náhodnou sůl z každého dalšího hashu. učení soli pro jedno heslo * by vám nemělo * poskytnout sůl pro všechna hesla (ale až příliš často to dělá).
Vzhledem k tomu, že sůl a hash jsou obvykle zřetězeny a uloženy v jednom databázovém poli, jaký by byl scénář, kdy byste chtěli vypočítat sůl z hash?
@WoodrowBarlow Přesně to, na co jsem myslel. Dík. Zvláště pokud mám několik původních hesel a odpovídající hash.
Tři odpovědi:
OJW
2014-11-20 20:06:40 UTC
view on stackexchange narkive permalink

Získání soli z hash (sůl + heslo) by bylo stejně obtížné jako získání hesla z hash (sůl + heslo) ) .

Pravděpodobně obtížnější, protože soli mají být náhodné, což je obvykle činí silnějšími než samotné heslo v závislosti na velikosti soli.
Zvykl jsem si na dostatečně malé soli, aby byla hrubá síla rozumná. BF 4bajtového hesla je proveditelné, takže BF 4bajtové soli je také možné.
@Joshua Některé systémy skutečně používaly tak krátké soli. Existují však určité bezpečnostní výhody plynoucí z použití delší soli a není příliš mnoho důvodů k použití kratší soli. Jakýkoli moderní systém by tedy používal sůl, která je příliš dlouhá na to, aby hrubou silou.
@AndrewHoffman: Soli nemusí být * náhodné *; místo toho by měly být * téměř jedinečné *. Pokud není k dispozici žádný dobrý zdroj náhodnosti, mohl by systém zkrátit čas, kdy bylo heslo změněno, pomocí identifikátoru účtu a použít jej jako sůl. přibližná doba změny hesla.
@supercat jo promiň, je to jediný způsob, jak jsem je viděl generovat. Není třeba mít jedinečné omezení na solném sloupci, téměř jedinečné je dost dobré a náhodně generované to obvykle splňuje.
Lucas Kauffman
2014-11-20 15:32:10 UTC
view on stackexchange narkive permalink

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é:

  • PBKDF2
  • scrypt
  • bcrypt

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.

V nabídce jste ztratili několik exponentů. 2n / 2 by mělo být 2 ^ (n / 2) a 242,7 by mělo být 2 ^ 42,7
GdD
2014-11-20 14:35:56 UTC
view on stackexchange narkive permalink

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.

Nebyla by takto nalezená hodnota soli pouze jednou z množiny možných více než jedné platné hodnoty soli?
Jediným způsobem, jak získat více než jednu sůl, je situace, kdy došlo ke kolizi, kdy 2 různé vstupy do hashovacího mechanismu vytvoří stejný koncový hash. To je dost nepravděpodobné.
@GdD Pokud je každé vaše heslo a sůl delší než hašovaný výstup, je docela pravděpodobné, že 2 různé vstupy vytvoří stejný výstup. Nebo alespoň to říká můj holub.
Možná nechápu, co říkáte ...
Je nepravděpodobné, že byste byli schopni najít 2 nebo více vstupů, které produkují stejný hash, ale je zaručeno, že existují, protože přijímáte dlouhý vstup a krátký výstup (viz princip Pigeonhole k pochopení Yakkovy chytré slovní hříčky)


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...