Jemand hat mir erzählt, dass er Softwaresysteme gesehen hat, die:
- MD5-verschlüsselte Passwörter von anderen Systemen abrufen;
- entschlüsseln Sie die verschlüsselten Passwörter und
- Speichern Sie die Kennwörter in der Datenbank des Systems mit dem systemeigenen Algorithmus.
Ist das möglich? Ich dachte, dass es nicht möglich / machbar ist, MD5-Hashes zu entschlüsseln.
Ich weiß, dass es MD5-Wörterbücher gibt, aber gibt es einen tatsächlichen Entschlüsselungsalgorithmus?
hash
cryptography
md5
encryption
John Bubriski
quelle
quelle
Antworten:
Nein. MD5 ist keine Verschlüsselung (obwohl es als Teil einiger Verschlüsselungsalgorithmen verwendet werden kann), sondern eine Einweg- Hash-Funktion . Ein Großteil der Originaldaten geht im Rahmen der Transformation tatsächlich "verloren".
Denken Sie darüber nach: Ein MD5 ist immer 128 Bit lang. Das bedeutet, dass es 2 128 mögliche MD5-Hashes gibt. Das ist eine ziemlich große Zahl, und doch ist sie definitiv endlich. Und doch gibt es unendlich viele mögliche Eingaben für eine bestimmte Hash-Funktion (und die meisten von ihnen enthalten mehr als 128 Bit oder nur 16 Bytes). Es gibt also tatsächlich unendlich viele Möglichkeiten für Daten, die denselben Wert haben würden. Das, was Hashes interessant macht, ist, dass es unglaublich schwierig ist, zwei Daten zu finden, die den gleichen Wert haben, und die Wahrscheinlichkeit, dass es versehentlich passiert, ist fast 0.
Ein einfaches Beispiel für eine (sehr unsichere) Hash-Funktion (und dies veranschaulicht die allgemeine Idee, dass es sich um eine Einwegfunktion handelt) wäre, alle Bits eines Datenelements zu nehmen und als große Zahl zu behandeln. Führen Sie als nächstes eine Ganzzahldivision mit einer großen (wahrscheinlich Primzahl) n durch und nehmen Sie den Rest (siehe: Modul ). Sie erhalten eine Zahl zwischen 0 und n . Wenn Sie dieselbe Berechnung erneut ausführen (jederzeit, auf jedem Computer und überall) und dabei genau dieselbe Zeichenfolge verwenden, wird derselbe Wert angezeigt. Und doch gibt es keine Möglichkeit herauszufinden, was der ursprüngliche Wert war, da es unendlich viele Zahlen gibt, die genau diesen Rest haben, wenn sie durch n geteilt werden .
Es wurde jedoch festgestellt, dass MD5 einige Schwächen aufweist, so dass es mit einer komplexen Mathematik möglich sein kann, eine Kollision zu finden, ohne 2 128 mögliche Eingabezeichenfolgen auszuprobieren. Und die Tatsache, dass die meisten Passwörter kurz sind und häufig gemeinsame Werte verwendet werden (wie "Passwort" oder "geheim"), bedeutet, dass Sie in einigen Fällen das Passwort einer Person einigermaßen gut erraten können, indem Sie nach dem Hash googeln oder einen Regenbogen verwenden Tabelle . Dies ist ein Grund, warum Sie Hash-Passwörter immer " salzen " sollten , damit zwei identische Werte beim Hash nicht auf denselben Wert hashen.
Sobald ein Datenelement eine Hash-Funktion durchlaufen hat, gibt es kein Zurück mehr.
quelle
Sie können nicht - theoretisch. Der springende Punkt bei einem Hash ist, dass es nur eine Möglichkeit ist. Dies bedeutet, dass jemand, der die Liste der Hashes erhält, Ihr Passwort immer noch nicht erhalten kann. Darüber hinaus bedeutet dies, dass selbst wenn jemand auf mehreren Websites dasselbe Kennwort verwendet (ja, wir alle wissen, dass wir dies nicht tun sollten, aber ...), jeder mit Zugriff auf die Datenbank von Standort A das Kennwort des Benutzers nicht verwenden kann Seite B.
Die Tatsache, dass MD5 ein Hash ist, bedeutet auch, dass Informationen verloren gehen. Wenn Sie für einen bestimmten MD5-Hash Kennwörter beliebiger Länge zulassen, kann es mehrere Kennwörter geben, die denselben Hash erzeugen. Für einen guten Hash wäre es rechnerisch unmöglich, sie über eine ziemlich triviale maximale Länge hinaus zu finden, aber es gibt keine Garantie dafür, dass es definitiv das ursprüngliche Passwort ist, wenn Sie ein Passwort finden, das den Ziel-Hash enthält. Es ist astronomisch unwahrscheinlich, dass Sie zwei ASCII-Passwörter mit angemessener Länge sehen, die denselben MD5-Hash haben, aber es ist nicht unmöglich.
MD5 ist ein schlechter Hash für Passwörter:
Ich bin kein Sicherheitsexperte und werde daher keine konkrete Empfehlung über "Rollen Sie nicht Ihr eigenes Authentifizierungssystem" abgeben. Finden Sie einen von einem seriösen Lieferanten und nutzen Sie diesen. Sowohl das Design als auch die Implementierung von Sicherheitssystemen ist ein heikles Geschäft.
quelle
Technisch ist es "möglich" , aber unter sehr strengen Bedingungen ( Regenbogentabellen , Brute Forcing basierend auf der sehr geringen Wahrscheinlichkeit, dass sich das Passwort eines Benutzers in dieser Hash-Datenbank befindet).
Das heißt aber nicht, dass es so ist
oder
Sie möchten einen MD5- Hash nicht "umkehren" . Mit den unten beschriebenen Methoden müssen Sie dies nie tun. Das "Umkehren" von MD5 wird tatsächlich als bösartig angesehen - einige Websites bieten die Möglichkeit, MD5-Hashes zu "knacken" und zu bruteforce -, aber es handelt sich lediglich um umfangreiche Datenbanken, die Wörterbuchwörter, zuvor übermittelte Kennwörter und andere Wörter enthalten. Es besteht eine sehr geringe Wahrscheinlichkeit, dass der von Ihnen benötigte MD5-Hash umgekehrt wird. Und wenn Sie den MD5-Hash gesalzen haben, funktioniert dies auch nicht! :) :)
Anmeldungen mit MD5-Hashing sollten folgendermaßen funktionieren:
Während der Registrierung:
Benutzer erstellt Kennwort -> Kennwort wird mit MD5 gehasht -> In der Datenbank gespeicherter Hash
Während der Anmeldung:
Benutzer gibt Benutzername und Passwort ein -> (Benutzername überprüft) Passwort wird mit MD5 gehasht -> Hash wird mit gespeichertem Hash in der Datenbank verglichen
Wenn 'Passwort verloren' benötigt wird:
2 Optionen:
oder
quelle
Nicht direkt. Aufgrund des Pigeonhole-Prinzips gibt es (wahrscheinlich) mehr als einen Wert, der mit einer bestimmten MD5-Ausgabe übereinstimmt. Daher können Sie es nicht mit Sicherheit umkehren. Darüber hinaus ist MD5 so konzipiert, dass es schwierig ist, einen solchen umgekehrten Hash zu finden (es gab jedoch Angriffe, die Kollisionen hervorrufen - das heißt, es werden zwei Werte erzeugt, die zum gleichen Ergebnis führen, aber Sie können nicht steuern, wie der resultierende MD5-Wert aussehen wird Sein).
Wenn Sie den Suchbereich jedoch beispielsweise auf häufig verwendete Kennwörter mit einer Länge unter N beschränken, verfügen Sie möglicherweise nicht mehr über die Irreversibilitätseigenschaft (da die Anzahl der MD5-Ausgaben viel größer ist als die Anzahl der Zeichenfolgen in der interessierenden Domäne). Dann können Sie einen Regenbogentisch oder ähnliches verwenden, um Hashes umzukehren.
quelle
password
eher als alle anderen unendlichen Eingaben verwendet wurde, die denselben Hash erzeugen, aber alle ziemlich zufällig aussehen, aber Sie können nah genug dran sein.Nicht möglich, zumindest nicht in angemessener Zeit.
Die Art und Weise, wie dies häufig gehandhabt wird, ist ein Passwort "Zurücksetzen". Das heißt, Sie geben ihnen ein neues (zufälliges) Passwort und senden ihnen dieses per E-Mail.
quelle
Sie können ein MD5-Passwort nicht zurücksetzen (in einer beliebigen Sprache).
Doch kannst du:
Geben Sie dem Benutzer eine neue.
Checken Sie eine Regenbogentabelle ein, um vielleicht die alte zu finden.
quelle
Nein, er muss über die MD5-Wörterbücher verwirrt gewesen sein.
Kryptografische Hashes (MD5 usw.) sind eine Möglichkeit, und Sie können nur mit dem Digest zur ursprünglichen Nachricht zurückkehren, es sei denn, Sie haben andere Informationen über die ursprüngliche Nachricht usw., die Sie nicht sollten.
quelle
Entschlüsselung (direktes Abrufen des Klartextes aus dem Hash-Wert auf algorithmische Weise), Nr.
Es gibt jedoch Methoden, die einen sogenannten Regenbogentisch verwenden . Es ist ziemlich machbar, wenn Ihre Passwörter ohne Salz gehasht werden.
quelle
MD5 ist ein Hashing-Algorithmus. Sie können den Hash-Wert nicht zurücksetzen.
Sie sollten die Funktion "Kennwort ändern" hinzufügen, bei der der Benutzer ein anderes Kennwort angibt, den Hash berechnet und als neues Kennwort speichert.
quelle
Es gibt keine einfache Möglichkeit, dies zu tun. Dies ist eine Art Punkt, an dem das Passwort in erster Linie gehasht wird. :) :)
Eine Sache , die Sie sollen tun können, wird ein temporäres Passwort für sie manuell und sende sie das.
Ich zögere, dies zu erwähnen, da es eine schlechte Idee ist (und es garantiert sowieso nicht funktioniert), aber Sie könnten versuchen, den Hash in einer Regenbogentabelle wie milw0rm nachzuschlagen, um zu sehen, ob Sie das alte Passwort auf diese Weise wiederherstellen können.
quelle
Sehen Sie hier alle anderen Antworten darüber, wie und warum es nicht umkehrbar ist und warum Sie es sowieso nicht möchten.
Der Vollständigkeit halber gibt es jedoch Regenbogentabellen, auf denen Sie mögliche Übereinstimmungen nachschlagen können. Es gibt keine Garantie dafür, dass die Antwort in der Regenbogentabelle das von Ihrem Benutzer gewählte Originalkennwort ist, was sie stark verwirren würde.
Dies funktioniert auch nicht für gesalzene Hashes. Das Salzen wird von vielen Sicherheitsexperten empfohlen.
quelle
Es gibt keine Möglichkeit, eine Hash-Funktion "zurückzusetzen", um die Umkehrfunktion für sie zu finden. Wie bereits erwähnt, ist dies der springende Punkt bei einer Hash-Funktion. Es sollte nicht reversibel sein und eine schnelle Berechnung des Hashwerts ermöglichen. Die einzige Möglichkeit, eine Eingabezeichenfolge zu finden, die einen bestimmten Hashwert ergibt, besteht darin, alle möglichen Kombinationen auszuprobieren. Dies wird aus diesem Grund als Brute-Force-Angriff bezeichnet.
Das Ausprobieren aller möglichen Kombinationen nimmt viel Zeit in Anspruch, und dies ist auch der Grund, warum Hash-Werte verwendet werden, um Passwörter auf relativ sichere Weise zu speichern. Wenn ein Angreifer mit allen darin enthaltenen Benutzerkennwörtern auf Ihre Datenbank zugreifen kann, verlieren Sie auf jeden Fall. Wenn Sie Hash-Werte und (idealistisch gesehen) sichere Passwörter haben, ist es viel schwieriger, die Passwörter aus den Hash-Werten für den Angreifer herauszuholen.
Das Speichern der Hash-Werte ist ebenfalls kein Leistungsproblem, da die Berechnung des Hash-Werts relativ schnell ist. Die meisten Systeme berechnen also den Hash-Wert des Kennworts, das der Benutzer eingegeben hat (was schnell ist), und vergleichen ihn dann mit dem gespeicherten Hash-Wert in seiner Benutzerdatenbank.
quelle
MD5 wird als fehlerhaft angesehen, nicht weil Sie den ursprünglichen Inhalt aus dem Hash zurückholen können, sondern weil Sie mit der Arbeit zwei Nachrichten erstellen können, die denselben Hash haben.
Sie können einen MD5-Hash nicht entfernen.
quelle
Sie können Online-Tools finden, die ein Wörterbuch verwenden, um die ursprüngliche Nachricht abzurufen.
In einigen Fällen ist die Wörterbuchmethode möglicherweise unbrauchbar:
Hier ist zum Beispiel ein Online-Tool für MD5-Entschlüsseler .
quelle
Das Einzige, was funktionieren kann, ist (wenn wir erwähnen, dass die Passwörter nur gehasht sind, ohne Salz hinzuzufügen, um die Wiederholungsangriffe zu verhindern, wenn es so ist, dass Sie das Salz kennen müssen), erhalten Sie übrigens ein Wörterbuch-Angriffstool Die Dateien mit vielen Wörtern, Zahlen usw. erstellen dann zwei Zeilen, eine Zeile ist ein Wort, eine Zahl (im Wörterbuch), die andere ist ein Hash des Wortes, und vergleichen Sie die Hashes, wenn Sie übereinstimmen ...
Das ist der einzige Weg, ohne in die Kryptoanalyse einzusteigen.
quelle
Ja, genau das, wonach Sie fragen, ist möglich. Es ist nicht möglich, ein MD5-Passwort ohne Hilfe zu "entschlüsseln", aber es ist möglich, ein MD5-Passwort erneut in einen anderen Algorithmus zu verschlüsseln, nur nicht alle auf einmal.
Sie sorgen dafür, dass sich Ihre Benutzer mit dem alten MD5-Kennwort bei Ihrem neuen System anmelden können. Zum Zeitpunkt der Anmeldung haben sie Ihrem Anmeldeprogramm eine nicht verwaschene Version des Kennworts gegeben, von dem Sie nachweisen, dass es mit Ihrem MD5-Hash übereinstimmt. Sie können dieses nicht verwaschene Kennwort dann in Ihren neuen Hashing-Algorithmus konvertieren.
Dies ist natürlich ein erweiterter Prozess, da Sie warten müssen, bis Ihre Benutzer Ihnen die Kennwörter mitteilen, aber es funktioniert.
(NB: sieben Jahre später, na ja, hoffentlich findet es jemand nützlich)
quelle
Nein, das geht nicht. Entweder können Sie ein Wörterbuch verwenden oder Sie können versuchen, verschiedene Werte zu hashen, bis Sie den gewünschten Hash erhalten. Es kann aber nicht "entschlüsselt" werden.
quelle
MD5 hat seine Schwächen (siehe Wikipedia ), daher gibt es einige Projekte, die versuchen, Hashes vorab zu berechnen. Wikipedia weist auch auf einige dieser Projekte hin. Eine, die ich kenne (und respektiere), ist Ophrack. Sie können dem Benutzer kein eigenes Passwort mitteilen, aber Sie können ihm möglicherweise ein funktionierendes Passwort mitteilen. Aber ich denke: Mailen Sie einfach ein neues Passwort, falls sie es vergessen haben.
quelle
Der MD5-Hash-Algorithmus ist nicht umkehrbar, sodass eine MD5-Dekodierung nicht möglich ist. Einige Websites verfügen jedoch über eine große Anzahl von Kennwortübereinstimmungen, sodass Sie online versuchen können, MD5-Hash zu dekodieren.
Versuchen Sie es online:
MD5 entschlüsseln
md5online
md5decrypter
quelle
Theoretisch ist es nicht möglich, einen Hashwert zu entschlüsseln, aber Sie haben einige schmutzige Techniken, um den ursprünglichen Klartext zurückzubekommen.
quelle
Nein, es ist nicht möglich, eine Hash-Funktion wie MD5 umzukehren: Angesichts des Ausgabe-Hash-Werts ist es unmöglich, die Eingabenachricht zu finden, wenn nicht genügend Informationen über die Eingabenachricht bekannt sind.
Die Entschlüsselung ist keine Funktion, die für eine Hash-Funktion definiert ist. Verschlüsselung und Entschlüsselung sind Funktionen einer Verschlüsselung wie AES im CBC-Modus; Hash-Funktionen werden weder verschlüsselt noch entschlüsselt . Hash-Funktionen werden verwendet, um eine Eingabenachricht zu verarbeiten. Wie der Name schon sagt kein Reverse - Algorithmus möglich ist , durch Design .
MD5 wurde als kryptografisch sichere Einweg- Hash-Funktion entwickelt. Es ist jetzt einfach, Kollisionen für MD5 zu generieren - selbst wenn ein großer Teil der Eingabenachricht vorbestimmt ist. MD5 ist also offiziell defekt und MD5 sollte nicht mehr als kryptografisch sicherer Hash betrachtet werden. Es ist jedoch immer noch unmöglich, eine Eingabenachricht zu finden, die zu einem Hashwert führt: Finden Sie X, wenn nur H (X) bekannt ist (und X keine vorberechnete Struktur mit mindestens einem 128-Byte-Block vorberechneter Daten hat). . Es sind keine Pre-Image-Angriffe gegen MD5 bekannt.
Im Allgemeinen ist es auch möglich, Passwörter mithilfe von Brute-Force- oder (erweiterten) Wörterbuchangriffen zu erraten, Datenbanken zu vergleichen oder zu versuchen, Passwort-Hashes in sogenannten Regenbogentabellen zu finden. Wenn eine Übereinstimmung gefunden wird, ist rechnerisch sicher, dass die Eingabe gefunden wurde. Hash-Funktionen sind auch gegen Kollisionsangriffe sicher: Finden
X'
, dassH(X') = H(X)
gegebenH(X)
. Wenn also einX
gefunden wird, ist es rechnerisch sicher, dass es tatsächlich die Eingabenachricht war. Andernfalls hätten Sie doch einen Kollisionsangriff durchgeführt. Regenbogentabellen können verwendet werden, um die Angriffe zu beschleunigen, und es gibt spezielle Internetressourcen, mit denen Sie ein Kennwort für einen bestimmten Hash finden können.Es ist natürlich möglich, den Hash-Wert erneut
H(X)
zu verwenden, um Kennwörter zu überprüfen, die auf anderen Systemen generiert wurden. Das empfangende System muss lediglich das Ergebnis einer deterministischen Funktion speichernF
, dieH(X)
als Eingabe verwendet wird. WannX
wird dem System dann gegebenH(X)
undF
kann daher neu berechnet und die Ergebnisse verglichen werden. Mit anderen Worten, es ist nicht erforderlich , den Hash-Wert zu entschlüsseln, um nur zu überprüfen, ob ein Kennwort korrekt ist, und Sie können den Hash weiterhin als einen anderen Wert speichern.Anstelle von MD5 ist es wichtig, stattdessen einen Kennwort-Hash oder PBKDF (kennwortbasierte Schlüsselableitungsfunktion) zu verwenden. Eine solche Funktion gibt an, wie ein Salz zusammen mit einem Hash verwendet wird. Auf diese Weise werden keine identischen Hashes für identische Kennwörter (von anderen Benutzern oder in anderen Datenbanken) generiert. Passwort-Hashes erlauben aus diesem Grund auch nicht die Verwendung von Regenbogentabellen, solange das Salz groß genug und richtig zufällig ist.
Kennwort-Hashes enthalten auch einen Arbeitsfaktor (manchmal mithilfe einer Iterationszahl konfiguriert ), der Angriffe, die versuchen, das Kennwort anhand des Salt- und Hash-Werts zu finden, erheblich verlangsamen kann. Dies ist wichtig, da die Datenbank mit Salzen und Hashwerten gestohlen werden kann. Schließlich kann der Passwort-Hash auch speicherintensiv sein, so dass eine erhebliche Menge an Speicher erforderlich ist, um den Hash zu berechnen. Dies macht es unmöglich, spezielle Hardware (GPUs, ASICs, FPGAs usw.) zu verwenden, damit ein Angreifer die Suche beschleunigen kann. Für einen Kennwort-Hash stehen möglicherweise auch andere Eingaben oder Konfigurationsoptionen zur Verfügung, z. B. ein Pfeffer oder der Umfang der Parallelisierung.
Es wird jedoch weiterhin jedem erlaubt, ein angegebenes Passwort zu überprüfen,
H(X)
selbst wennH(X)
es sich um einen Passwort-Hash handelt. Passwort-Hashes sind immer noch deterministisch. Wenn also jemand alle Eingaben und den Hash-Algorithmus selbst kennt,X
könnenH(X)
die Ergebnisse berechnet und erneut verglichen werden.Häufig verwendete Passwort-Hashes sind bcrypt , scrypt und PBKDF2 . Es gibt auch Argon2 in verschiedenen Formen, das der Gewinner des relativ neuen Passwort-Hashing-Wettbewerbs ist. Hier auf CrackStation ist ein guter Blog-Beitrag darüber, wie man Passwortsicherheit richtig macht.
Es ist möglich, dass Gegner die Hash-Berechnung nicht durchführen können, um sicherzustellen, dass ein Kennwort korrekt ist. Hierzu kann ein Pfeffer als Eingabe für den Passwort-Hash verwendet werden. Alternativ kann der Hash-Wert natürlich mit einer Verschlüsselung wie AES und einer Betriebsart wie CBC oder GCM verschlüsselt werden. Dies erfordert jedoch die Speicherung eines Geheimnisses / Schlüssels unabhängig und mit höheren Zugriffsanforderungen als der Passwort-Hash.
quelle
MD5 ist eine kryptografische (Einweg-) Hash-Funktion, daher gibt es keine direkte Möglichkeit, sie zu dekodieren. Der gesamte Zweck einer kryptografischen Hash-Funktion besteht darin, dass Sie sie nicht rückgängig machen können.
Eine Sache, die Sie tun können, ist eine Brute-Force-Strategie, bei der Sie erraten, was gehasht wurde, dann mit derselben Funktion hashen und prüfen, ob es übereinstimmt. Wenn die gehashten Daten nicht sehr leicht zu erraten sind, kann dies jedoch lange dauern.
quelle
Es ist noch nicht möglich, einen Hash eines Passworts in einen Algorithmus einzugeben und das Passwort wieder im Klartext abzurufen, da Hashing eine Einbahnstraße ist. Die Benutzer haben jedoch Hashes generiert und in einer großen Tabelle gespeichert, sodass bei der Eingabe eines bestimmten Hashs die Tabelle auf das Kennwort überprüft wird, das mit dem Hash übereinstimmt, und dieses Kennwort an Sie zurückgegeben wird. Ein Beispiel für eine Website, die dies tut, ist http://www.md5online.org/ . Ein modernes Passwortspeichersystem wirkt dem entgegen, indem es einen Salting-Algorithmus verwendet, bei dem bei der Eingabe des gleichen Passworts in ein Passwortfeld während der Registrierung verschiedene Hashes generiert werden.
quelle
Nein, Sie können den md5 nicht entschlüsseln / umkehren, da es sich um eine Einweg-Hash-Funktion handelt, bis Sie keine umfangreichen Sicherheitslücken im MD5 gefunden haben. Eine andere Möglichkeit besteht darin, dass auf einer Website eine große Menge an Kennwortdatenbanken vorhanden ist. Sie können also online versuchen, Ihre MD5- oder SHA1-Hash-Zeichenfolge zu dekodieren. Ich habe eine Website wie http://www.mycodemyway.com/encrypt-and-decrypt/md5 ausprobiert und sie funktioniert für mich einwandfrei. Dies hängt jedoch vollständig von Ihrem Hash ab. Wenn dieser Hash in dieser Datenbank gespeichert ist, können Sie die tatsächliche Zeichenfolge abrufen .
quelle