it-swarm.com.de

Gibt es einen Vorteil beim Teilen eines Passworts?

Ich habe über den LANMAN (LM) Hash gelesen und bin neugierig auf einen bestimmten Teil des Algorithmus.

Der LM-Hash wird wie folgt berechnet:

  1. Das Kennwort ASCII) des Benutzers wird in Großbuchstaben konvertiert.
  2. Dieses Passwort wird auf 14 Bytes null aufgefüllt.
  3. Das 14-Byte-Passwort wird in zwei 7-Byte-Hälften aufgeteilt.
  4. Diese Werte werden verwendet, um zwei DES Schlüssel, einen aus jeder 7-Byte-Hälfte) zu erstellen.
  5. Jeder der beiden Schlüssel wird zum DES-Verschlüsseln der Konstanten ASCII string "KGS! @ # $%" verwendet. Dies führt zu zwei 8-Byte-Chiffretextwerten.
  6. Diese beiden Chiffretextwerte werden zu einem 16-Byte-Wert verkettet, bei dem es sich um den LM-Hash handelt.

Es gibt viele Sicherheitslücken, die im verlinkten Wikipedia-Artikel beschrieben und an anderer Stelle besprochen wurden, aber ich bin besonders an den Schritten 3 bis 6 interessiert. Ich bin gespannt, was zu diesem Design geführt hat. Gibt es einen echten Sicherheitsvorteil, wenn Sie ein Passwort aufteilen, die beiden Hälften getrennt verschlüsseln und dann die beiden Hälften wieder zu einem Hash kombinieren? Oder ist dies nur ein Beispiel für "Sicherheit durch Dunkelheit" ?

45
Bill the Lizard

Das Aufteilen des Passworts in Hashes ist kein Vorteil . Es wurde aus obskuren Gründen gemacht, die heute nicht mehr relevant sind.

Der Grund, warum der LanMan-Hash auf diese Weise funktioniert, ist, dass der LanMan-Hash auf DES basiert. DES akzeptiert einen 56-Bit-Schlüssel. Daher ist es natürlich, einen Block von 7 Bytes als DES Schlüssel zu behandeln. Es gibt keine gute Möglichkeit, ihn zu verwenden DES um mehr als 7 Bytes gleichzeitig zu hashen, und wir brauchen eine Möglichkeit, einen Hash für längere Passwörter aus DES zu erstellen, daher haben die Designer des LanMan-Hash beschlossen, das Passwort in zwei Teile zu teilen Hälften.

Heute würden wir niemals einen Passwort-Hash auf diese Weise erstellen. Wir würden nur Bcrypt, Scrypt, PBKDF2 oder ein gleichwertiges Produkt verwenden - oder wir würden etwas Ähnliches basierend auf vorhandenen Grundelementen wie SHA256 erstellen. Zu dieser Zeit gab es Bcrypt, Scrypt, SHA256 usw. noch nicht, was den LanMan-Designern die Möglichkeit eröffnete, diese Art von verheerendem Fehler zu machen.

Nach modernen Maßstäben ist der LanMan-Hash ein mieses Design. Es gibt vielevieleAngriffe darauf. Es ist sehr schwach. Niemand sollte heute den LanMan-Hash verwenden, wenn er dies möglicherweise vermeiden kann. (Wie andere bereits betont haben, ist seine Sicherheit selbst für die damaligen Verhältnisse mies. Ein fairer Punkt.)

38
D.W.

Das Teilen des Passworts ist ein Schwäche, kein Vorteil. Es ermöglicht, jedes Passwort zur Hälfte unabhängig zu brechen. Beginnend mit ASCII Zeichen (Codes von 32 bis einschließlich 126) bis zum Entfernen der Kleinbuchstaben erhalten Sie 127-32-26 = 69 mögliche Zeichen im Kennwortalphabet. Dies führt zu 697 mögliche Hälften, die etwas darunter liegen 243. Mit anderen Worten, dies ist durch rohe Gewalt sehr gut nachvollziehbar. Sie brauchen nicht einmal ein Wörterbuch.

Dies ist keine Sicherheit durch Dunkelheit. Dies ist Unsicherheit durch Inkompetenz.

Bearbeiten: "Mit brutaler Gewalt sehr gut handhabbar" eröffnet auch den Weg für verschiedene Optimierungen. Beachten Sie, dass LanMan nicht gesalzen ist. Daher können vorberechnete Tabellen effizient sein (Sie zahlen die Kosten für die Tabellenerstellung einmal, dann greifen Sie mehrere Halbpasswörter an - es lohnt sich sogar für ein einzelnes Passwort, da eins Passwort zwei Halbpasswörter ist). Im Jahr 2003 veröffentlichte Philippe Oechslin ein verbesserter Kompromiss zwischen Zeit und Speicher (dies ist der Artikel, in dem er den Begriff "Rainbow-Tabelle" geprägt hat) und berechnete Tabellen zum Knacken von LanMan-Passwörtern. Er beschränkte sich auf alphanumerische Passwörter (Buchstaben und Ziffern, aber keine Sonderzeichen), also ein Leerzeichen von 237. Die kumulative Größe der Tabellen würde dann 1,4 GB betragen, mit einer Cracking-Effizienz von 99,9% und einer Angriffszeit von weniger als einer Minute.

Mit einem 243 Speicherplatz, d. h. 64-mal größer, Tabellengröße und Angriffszeit steigen beide um den Faktor 16 (das ist 64)2/3), also sprechen wir über 23 GB oder so (das ist nicht viel für die heutigen Festplatten) und einen 15-minütigen Angriff. Tatsächlich wäre der Angriff schneller als dieser, da der Engpass darin besteht, auf der Festplatte nachzuschlagen, und der intelligente Angreifer eine SSD verwendet, die 50-mal schneller nachschlagen kann als eine mechanische Festplatte (eine 32-GB-SSD kostet weniger als 70 $ ...). Der Aufwand für die Tabellenerstellung (eine einmalige Ausgabe) kann auf einem einzelnen PC einige Wochen oder auf einer anständigen Cloud einige Tage dauern, ist also recht günstig.

Anscheinend , solche Tabellen existieren bereits ...

54
Thomas Pornin

Nur weil etwas komplexer ist, ist es nicht unbedingt sicherer. Ich habe einen Passwort-Cracker auf meiner Windows-Box ausgeführt und er schien die Passwörter in 8 Zeichenfolgen aufzuteilen. Dabei wurde jede Zeichenfolge unabhängig von der anderen Zeichenfolge unterbrochen, sodass der Vorgang extrem schnell ablief.

Aus praktischer Sicht ist das Aufteilen eines Passworts also nicht vorteilhaft, und @Thomas hat bereits erläutert, warum es mathematisch nicht vorteilhaft ist.

3
MasterZ