11 Stimmen

Passwörter verschlüsseln

Ich habe eine Reihe von Fragen gelesen, in denen vorgeschlagen wird, Passwörter zu verschlüsseln und in der Datenbank zu speichern.

Wenn sich jemand anmeldet, verschlüsseln Sie das angegebene Passwort mit dem, was Sie gespeichert haben.

Was ich nicht verstehe, ist, wie das funktionieren kann? Zwei Zeichenketten können den gleichen Wert haben - nicht wahrscheinlich, aber definitiv möglich

Kann mir bitte jemand helfen?

EDIT: Kann jemand eine Statistik über die Kollisionswahrscheinlichkeit angeben?

0 Stimmen

Ich habe in meiner Antwort über den Geburtstagsangriff gesprochen: de.wikipedia.org/wiki/Geburtstag_Anschlag Sie gibt die Wahrscheinlichkeit einer Kollision angesichts der Anzahl der Versuche und der Anzahl der möglichen Hashes (basierend auf den Bits) an. Dies gilt für einen Brute-Force-Angriff. Die Wahrscheinlichkeit ist höher, wenn der Hash "geknackt" werden kann.

0 Stimmen

0 Stimmen

Vielleicht finden Sie meine Artikelserie zu diesem Thema interessant. blogs.msdn.com/ericlippert/archive/tags/Salt/default.aspx

0voto

amn Punkte 7628

Hashing und Verschlüsselung sind leicht unterschiedliche Konzepte, auch wenn md5() und sha1() und ähnliche im Wesentlichen Verschlüsselungsfunktionen sind, die Hashing durchführen. Da Hashing in der Theorie eine eindeutige Ausgabe für eine gegebene Eingabe (in der Regel von größerer Größe) liefern sollte, bedeutet dies im Wesentlichen, dass jeder Hash auf eine einzige Eingabe abgebildet werden sollte - was bedeutet, dass Sie eine perfekte Kompressionsfunktion in den Händen halten, die Daten der Größe N, die in der Regel größer als M sind, auf Daten der Größe M reduzieren kann, und der Prozess ist reversibel. In der Praxis kommt es jedoch zu Hash-Kollisionen. Das bedeutet, dass ein Hash möglicherweise mehr als einer ursprünglichen Eingabe zugeordnet werden kann. Das bedeutet, dass ein einziger Passwort-Hash einen Benutzer mit einem ganz anderen Passwort finden kann, was ein echtes Sicherheitsproblem darstellt.

Die Verschlüsselung hingegen garantiert, dass sie umkehrbar ist (natürlich mit dem richtigen Entschlüsselungsschlüssel), wobei die verschlüsselten Daten in einer Eins-zu-Eins-Beziehung zu den ursprünglichen Daten stehen. Wenn Ihr Kennwort N lang ist, hat Ihr verschlüsseltes Kennwort ebenfalls die Größe N. Kennwörter sind genauso sicher und kollisionsfrei.

Wie man so schön sagt: Wenn etwas zu schön ist, um wahr zu sein, dann ist es das wahrscheinlich auch. Wenn Hashing umkehrbar wäre, um immer die Originaldaten zu erzeugen, dann bräuchten wir keine Datenkomprimierungsalgorithmen - wir könnten Daten beliebiger Größe nehmen, sie hacken, um einige 128-Bit lange Daten zu erzeugen, und erwarten, dass sie bei Bedarf wieder die Originaldaten ergeben. Dies ist jedoch nicht der Fall. Je länger die Originaldaten sind, desto unzuverlässiger ist der Hash, unabhängig von seiner Länge.

Erfinden Sie ein Verschlüsselungs-/Entschlüsselungs-Schlüsselpaar und verschlüsseln Sie die Kennwörter Ihrer Benutzer, bevor Sie sie an öffentlichen Orten speichern.

0voto

petantik Punkte 1042

Kollisionen kommen vor, aber sie sollten so selten sein, dass es unwahrscheinlich ist, dass sie innerhalb eines bestimmten Zeitraums auftreten.

Die meisten Angriffe nutzen heutzutage Schwachstellen in den verwendeten Algorithmen, so dass sich Kollisionen schneller finden und ausnutzen lassen. Es hat sich gezeigt, dass MD5 schwächer ist als bisher angenommen. Diese Artikel aus The Register zeigt, wie die Schwachstelle zur Erstellung von SSL-Zertifikaten genutzt wurde.

Es hat sich gezeigt, dass selbst widerstandsfähigere Algorithmen Schwachstellen aufweisen, die es leichter machen, diese Kollisionen zu finden.

Diese PDF zeigt ein Papier, in dem SHA-1-Kollisionen erörtert werden und wie sie vereinfacht wurden. (Mathe schwer)

In der Praxis werden zur Wiederherstellung von Kennwörtern aus Hashes Tools wie Rainbow-Tabellen verwendet

http://project-rainbowcrack.com/

Dabei wird berücksichtigt, dass Menschen Passwörter wählen, die einfach sind, so dass es möglich ist, mit einem Wörterbuchangriff (eine Liste häufig verwendeter Kennwörter und viele andere Begriffe), um Hashes zu berechnen und zu vergleichen. Aus diesem Grund ist die Verwendung eines Salz wird immer empfohlen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X