it-swarm-eu.dev

Existuje nějaká výhoda rozdělení hesla?

Četl jsem o LANMAN (LM) hash a jsem zvědavý na konkrétní část algoritmu.

LM hash se počítá takto:

  1. Uživatelské heslo ASCII heslo je převedeno na velká písmena).
  2. Toto heslo je vyplněno na 14 bajtů.
  3. 14-bajtové heslo je rozděleno do dvou 7-bajtových polovin.
  4. Tyto hodnoty se používají k vytvoření dvou klíčů DES, jeden z každé 7bajtové poloviny).
  5. Každý ze dvou klíčů se používá k DES-šifrování konstanty ASCII "KGS! @ # $%" , což má za následek dvě hodnoty 8 bajtů šifrového textu.
  6. Tyto dvě hodnoty textu šifry jsou zřetězeny tak, aby tvořily hodnotu 16 bajtů, což je hash LM.

V propojeném článku na Wikipedii je uvedeno mnoho slabých stránek zabezpečení, o kterých se mluvilo jinde, ale mám zvláštní zájem o kroky 3 až 6. Zajímalo by mě, co vedlo k tomuto návrhu. Existuje nějaká skutečná bezpečnostní výhoda pro rozdělení hesla, šifrování obou polovin odděleně a poté zkombinování obou polovin do jednoho hash znovu? Nebo je to jen příklad „bezpečnosti pomocí nejasností“ ?

45
Bill the Lizard

Rozdělení hesla na hash není výhodou. Bylo to provedeno z nejasných důvodů, které již dnes nejsou relevantní.

Důvod, proč hash LanMan funguje tímto způsobem, je proto, že hash LanMan je postaven na DES. DES přijímá 56bitový klíč. Proto je přirozené považovat kus 7 bajtů za vytvoření klíče DES klíč.) Neexistuje žádný dobrý způsob použití DES pro hash více než 7 bajtů najednou, a my potřebujeme nějaký způsob, jak vytvořit hash pro delší hesla z DES, takže návrháři LanMan hash rozhodli rozdělit heslo do dvou půlky.

Dnes bychom tímto způsobem nikdy nezaložili hash hesla. Použili bychom jen Bcrypt, Scrypt, PBKDF2 nebo nějaký ekvivalent - nebo bychom postavili něco podobného na základě existujících primitiv, jako je SHA256. V té době však Bcrypt, Scrypt, SHA256 atd. Neexistovaly, což pro designéry LanMan otevíralo příležitost udělat tento druh ničivé chyby.

Podle moderních standardů je hash LanMan mizerný design. Je na nich mnohomnohoútoky . Je to velmi slabé. Nikdo by dnes neměl hash LanMan používat, pokud se mu může vyhnout. (Jak již zdůraznili ostatní, její bezpečnost je drsná i podle tehdejších standardů. Spravedlivé.)

38
D.W.

Rozdělení hesla je slabost, nikoli výhoda. To umožňuje rozbití každé poloviny hesla samostatně. Začínáme s ASCII znaky (kódy od 32 do 126 včetně), poté odstraníte malá písmena, skončíte s 127-32-26 = 69 možných znaků v abecedě hesla. To vede k 697 možné poloviny, což je poněkud pod 243. Jinými slovy, to je vysoce tažné skrze hrubou sílu. Nepotřebujete ani slovník.

Nejedná se o bezpečnost skrze nejasnost. To je nejistota způsobená nekompetentností.

Edit: - „vysoce tahový s hrubou silou“ také otevírá cestu pro různé optimalizace. Všimněte si, že LanMan není osolen, takže předkompilované tabulky mohou být efektivní (platíte náklady na budování tabulek jednou, pak zaútočíte několik poloviční hesla - to vlastně stojí za to dokonce i pro jediné heslo, protože jedno heslo je dvě poloviční hesla). V roce 2003, Philippe Oechslin publikoval zlepšil kompromis v časové paměti (je to článek, ve kterém vytvořil termín "Rainbow table") a vypočítal tabulky pro praskání LanMan hesel. Omezil se na alfanumerická hesla (písmena a číslice, ale žádné zvláštní znaky), tedy mezera 237. Kumulativní velikost tabulek by pak byla 1,4 GB, s účinností praskání 99,9% a čas útoku pod jednu minutu.

S a 243 mezera, tj. 64krát větší, velikost tabulky a doba útoku vzrostly faktorem 16 (to 642/3), takže mluvíme o zhruba 23 GB (pro dnešní disky to není moc) a 15 minutovém útoku. Útok by byl ve skutečnosti rychlejší, protože problémem je vyhledávání na pevném disku a inteligentní útočník použije SSD, který dokáže vyhledávat 50krát rychleji než mechanický pevný disk (32 GB SSD stojí méně než 70 $ ...). Práce na budování stolů (jednorázové výdaje) může trvat několik týdnů na jednom počítači nebo několik dní na jakémkoli slušném cloudu, takže je poměrně levná.

Zjevně , takové tabulky již existují ...

54
Thomas Pornin

Jen proto, že je něco složitější, nutně to nezajišťuje bezpečnější. V okně Windows jsem spustil cracker hesel a zdálo se, že hesla rozděluji na 8 znakových řetězců, a každý řetězec se zlomil nezávisle na druhém řetězci, takže proces probíhal velmi rychle.

Z praktického hlediska tedy rozdělení hesla není prospěšné a @Thomas již pokryl, proč to není prospěšné matematicky.

3
MasterZ