Frage:
Was ist der Zweck, die Berechnung eines Passwort-Hash zu verlangsamen?
Renee Pachan
2017-02-07 23:00:48 UTC
view on stackexchange narkive permalink

Warum sollten Sie die Berechnung eines Passwort-Hash verlangsamen?

Alter, was ist mit diesen Leuten los, die Fragen schließen und mit anderen Fragen verknüpfen, die KLAR anders sind?Gott sei Dank bekam dies bereits gute Antworten und wurde daher nur geschlossen, nicht gelöscht.
Fünf antworten:
Stefan
2017-02-07 23:11:34 UTC
view on stackexchange narkive permalink

Die Berechnung wird absichtlich verlangsamt, um es einem Angreifer zu erschweren, die Benutzerkennwörter brutal zu erzwingen, falls beispielsweise die Kennwortdatenbank gestohlen wird.

Da eine Hash-Funktion nur in eine Richtung funktioniert Um das Passwort für einen Hash zu erhalten, müssen Sie zufällige Passwörter hashen, bis Sie eines mit einem passenden Hash finden. ( Regenbogentabellen bieten jedoch einen Kompromiss).

Mit GPUs ist es möglich, Brute-Force Milliarden von z. MD5-Hashes pro Sekunde.

Aus diesem Grund wurden Hash-Funktionen wie bcrypt oder scrypt entwickelt, um dieses Problem zu beheben, indem sie langsam und für alle Fälle ausgeführt werden Für die Verschlüsselung, die viel Speicher benötigt, ist es nicht möglich, den Hash mithilfe von GPUs zu berechnen.

Für Ihre "normale" Anwendung ist dies höchstwahrscheinlich immer noch schnell genug, da Sie nur einen einzigen Hash berechnen Die Auswirkungen auf die Leistung sind vernachlässigbar.

Ich denke, es ist erwähnenswert, dass ein einzelner Passwort-Hash immer noch so schnell ist, dass Sie es nicht bemerken würden, sodass sich dies nicht auf die Benutzererfahrung auswirkt.Es betrifft nur böswillige Akteure, die bei einem Brute-Force-Versuch versuchen, Millionen und Milliarden von Passwörtern pro Sekunde zu hacken.
@puhlen, Ja, das habe ich der Antwort hinzugefügt.
@Stefan: Gibt es einen Vorteil beim Versuch, einen Algorithmus zu verwenden, bei dem eine GPU nicht helfen kann, anstatt einen zu verwenden, der eine GPU ausnutzen könnte, um die praktische Komplexität einzelner Kennwort-Hashes zu erhöhen?Ein FPGA-basierter Passwort-Cracker kann mehr Rechenarbeit pro Dollar bieten als Allzweck-Computerhardware, aber eine handelsübliche GPU kann mehr Rechenarbeit pro Dollar bieten als beide.
@supercat Selbst für Hash-Funktionen, die hart wie "bcrypt" oder "scrypt" sind, ist eine GPU immer noch um ein Vielfaches schneller als eine CPU.Glücklicherweise ist die Verlangsamung des Vergleichs mit einer kryptografischen Hash-Funktion mehr als ausreichend, um Brute-Force-Angriffe auch mit GPUs zu stoppen.Sie können den ** bcrypt-Arbeitsfaktor ** erhöhen, um es noch schwieriger zu machen.Verwenden Sie nur nicht MD5 / SHA1 / SHA256.Bleib bei "bcrypt" oder "scrypt" oder "PBKDF2" (wenn du musst) und es wird dir wahrscheinlich gut gehen.
Regenbogentabellen bieten einen Kompromiss, aber ihr Wert wird durch gute Salzpraktiken zunichte gemacht.Randnotiz: [vernachlässigbar -> vernachlässigbar] (http://english.stackexchange.com/q/202832/97308).
@Stefan: Für Funktionen, die auf einer GPU nicht sehr effizient sind, bietet eine FPGA-basierte Karte möglicherweise eine bessere Leistung als eine GPU für jemanden, der viele Kennwörter parallel angreifen möchte.Wenn eine Funktion jedoch auf gängigen GPU-Vorgängen basiert, könnten Benutzer, die Hash-Berechnungen zum Zwecke der Verarbeitung legitimer Anmeldungen durchführen, mit einer billigen GPU eine bessere Leistung erzielen, als Angreifer mit einem FPGA-basierten Board erzielen könnten.
@supercat Mir ist keine Bibliothek bekannt, die zum Erstellen von Anwendungen verwendet wird, die das Berechnen der Hashes mit der GPU anbieten (wahrscheinlich, weil die meisten Server nicht einmal einen haben und der Leistungsvorteil für legitime Zwecke vernachlässigbar ist).Kennen Sie eine solche Implementierung?
LSerni
2017-02-08 05:05:03 UTC
view on stackexchange narkive permalink

Möglicherweise ist es verwirrend, dass es nicht klarer ist, dass ... die Berechnung überhaupt nicht verlangsamt wird !

Das heißt: Es gibt kein "schnelleres" "Weg, der absichtlich ignoriert wird (nicht den wir kennen); Der Algorithmus enthält kein künstliches "Warten".

Vielmehr ist die Berechnung langsam ausgelegt . Oder gedächtnisintensiv. Oder noch besser, beides. Es gibt keine Straße außer der langen und kurvenreichen, um das Ergebnis zu erhalten.

Auf diese Weise ist die Berechnung von one (die des richtigen Passworts) immer noch sehr, sehr schnell. Für ehrliche Benutzer ändert sich nichts merklich. Eine Zehntelsekunde oder eine Milliardstel Sekunde scheint sich nicht allzu sehr zu unterscheiden.

Aber eine Milliarde Berechnungen (diejenigen, die das richtige Passwort unter einer Milliarde finden Kandidaten - und in Wirklichkeit gibt es viele, viele mehr) werden quälend langsam sein und garantieren, dass eine "Brute-Force" -Prüfung aller möglichen Passwörter zum Scheitern verurteilt ist.

Wenn wir also einen Hashing-Algorithmus haben, ist das auch so schnell benötigen wir nicht die erste Iteration, sondern die (sagen wir) millionste. Wenn sicher. Hoffentlich gibt es keine Möglichkeit (von der wir wissen), direkt zum millionsten Ergebnis zu springen. Sie müssen sie alle berechnen. Und wenn dies nicht möglich ist - wenn die Iterationen "kurzgeschlossen" werden können, um schneller zur Antwort zu gelangen - dann sagen wir, dass der Algorithmus nicht sicher (genug) ist.

Timothy Faraci
2017-02-07 23:04:24 UTC
view on stackexchange narkive permalink

Passwort-Hashes sind als rechnerisch langsame Berechnung gedacht, da sie einen Angreifer, der versucht, das Klartext-Passwort zu finden, erheblich verlangsamen können, falls die Passwort-Hashes jemals durchgesickert sind.

Philip Rowlands
2017-02-07 23:08:12 UTC
view on stackexchange narkive permalink

Wenn die Berechnung eines Kennwort-Hashs langsam ist, wird das brutale Erzwingen eines Kennworts sehr viel langsamer, was sich über einen großen Datensatz oder eine große Anzahl von Vermutungen summiert. Wenn es viel länger dauert, gewinnen Sie so viel zusätzliche Zeit, um den Verstoß zu beheben.

peterh - Reinstate Monica
2017-02-08 00:10:44 UTC
view on stackexchange narkive permalink

Damit können Sie den Wörterbuchangriffen eine lineare Härte hinzufügen. Das heißt, Wenn Sie einen komplexen Salting-Algorithmus anwenden, können Sie den Rechenaufwand für die Wörterbuchangriffe n-mal erhöhen. Sie können es beispielsweise 1000-mal größer machen.

Im algorithmischen Sinne ist es nicht sehr nützlich, da die Rechenleistung, wie wir sehen können, mit der Zeit hauptsächlich exponentiell wächst. Es ist jedoch immer noch eine zusätzliche Sicherheitsebene.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...