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

2voto

Adam Robinson Punkte 176996

Man kann sagen "DEFINITELY possible" in dem Sinne, dass es nachweislich möglich ist, aber mit einem guten Hashing-Algorithmus ist dies äußerst unwahrscheinlich. Es gibt viele Artikel über die Auswahl eines Hashing-Algorithmus, und die Kollisionsrate ist ein wichtiger Faktor bei der Auswahl.

Der Grund, warum die Leute Hashing gegenüber Verschlüsselung befürworten, ist, dass Hashing eine Einwegoperation ist. Gerade die Möglichkeit einer Kollision macht Hashing aus Sicht der Benutzersicherheit zu einer guten Wahl; da zwei Werte denselben Hash ergeben können, kann Hashing nicht rückgängig gemacht werden. Das macht es unmöglich (oder fast unmöglich) für jemanden, Ihre Datenbank zu hacken und sich Zugang zu den Anmeldedaten für andere Sites (da die Benutzer in Ihrem System häufig das gleiche Passwort verwenden wie in [vielen] anderen).

1voto

danio Punkte 8241

Die Hashfunktion muss so entwickelt werden, dass es sehr unwahrscheinlich ist, dass sie für 2 verschiedene Eingaben denselben Hashwert liefert, d. h. sie muss kollisionssicher sein. Weitere Informationen finden Sie unter wikipedia .

1voto

David Brunelle Punkte 6348

Wenn Sie sich Sorgen um Kollisionen machen, verwenden Sie SHA-2 mit 512 Bit. Andererseits hat der SHA-1-Algorithmus noch keine nachgewiesene Kollision erhalten, so dass er immer noch sicher genug ist, um sich keine Sorgen über Kollisionen zu machen.

1voto

Ja, es ist möglich, aber unwahrscheinlich für ein anständiges Haschisch.

Um Ihnen ein Beispiel zu geben: SHA1 hat 160 Bits Das heißt, um zwei Zeichenketten mit demselben Hash zu finden, müsste man etwa 2^80 verschiedene Zeichenketten hashen. Selbst mit all unseren besten Supercomputern, niemand hat immer zwei Zeichenfolgen gefunden die denselben SHA1-Wert haben (obwohl ich voraussage, dass dies bald geschehen wird).

1voto

Wim Punkte 11852

Auch wenn die Kollisionswahrscheinlichkeit gering ist ("gering" hängt von Ihrem Hash-Algorithmus ab), spielt sie doch keine Rolle, oder?

Selbst wenn Sie den gleichen Passwort-Hash für Benutzer x und Benutzer y haben, werden Sie niemals die Passwörter zweier Benutzer vergleichen können, um festzustellen, dass sie auf der Grundlage ihres Hashes gleich sind! Obwohl es sich also "technisch" um einen Kollisionshash handelt, kommt es in diesem Szenario nicht wirklich zu Kollisionen/Störungen/Unterschieden.

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