Gibt es eine reversible Hash-Funktion?
Die Hash-Funktion wie SHA und MD5 ist nicht reversibel. Ich würde gerne wissen, ob es einige reversible Hash-Funktionen gibt?
Gibt es eine reversible Hash-Funktion?
Die Hash-Funktion wie SHA und MD5 ist nicht reversibel. Ich würde gerne wissen, ob es einige reversible Hash-Funktionen gibt?
Die Definition einer kryptografischen Hash-Funktion beinhaltet die Resistenz gegen Vorbilder: Bei h (x) sollte es unmöglich sein, x . Eine Hash-Funktion, die "reversibel" ist, ist das genaue Gegenteil dieser Eigenschaft. Daher können Sie nicht mehr eine "reversible Hash-Funktion" haben als einen Fisch, der gegen Wasser allergisch ist.
Möglicherweise möchten Sie eine Hash-Funktion, die für die meisten Menschen kryptografisch ist Hash-Funktion mit all ihren Eigenschaften, die aber auch eine Art Falltür enthält, die es ermöglicht, sie umzukehren, wenn Sie ein bestimmtes Geheimnis kennen. Diese Art von Dingen könnte existieren, erfordert jedoch Mathematik wie asymmetrische Kryptographie. Eine solche Konstruktion ist mir derzeit nicht bekannt, aber man könnte möglicherweise etwas basierend auf einem RSA-Modul oder einer elliptischen Kurve mit Koordinaten, die modulo einem RSA-Modul entnommen wurden, als Jury-Rig verwenden (ich habe aber kein genaues Design im Sinn, aber Ich habe die Intuition , dass es so gemacht werden kann).
Selbst ein nicht kryptografischer Hash kann normalerweise nicht rückgängig gemacht werden (unabhängig von anderen speziellen Eigenschaften kryptografischer Hashes wie Kollisions- / Vorbildbeständigkeit). Der Grund, warum dies normalerweise nicht möglich ist, ist, dass Sie einfach nicht genügend Informationen haben.
Eine Hash-Funktion wandelt (im Allgemeinen) N
Eingabebits in M
M
eine kleine Konstante ist und die meiste Zeit N > M
wahr ist. Natürlich muss N
nicht größer als M
sein, es ist durchaus möglich, z. Ein SHA-Hash aus einem einzelnen Byte, aber normalerweise ist die Hash-Nachricht länger (oft viel länger) als der Hash-Wert.
Das bedeutet nicht mehr und nicht weniger als das, um den Hash umzukehren und die ursprüngliche Nachricht wiederherzustellen, müssten Sie Wahrsagungsmagie verwenden, um die fehlenden Informationen auszufüllen. Es gibt 2 NM sup> -Lösungen, und jede einzelne ist genauso korrekt wie jede andere.
Wenn Sie also beispielsweise eine 36-Byte-Zeichenfolge mit SHA hashen und versuchen Um dies umzukehren, gibt es 2 128 Lösungen, die alle gleichermaßen korrekt sind.
Wenn bekannt ist, dass die Eingabe bestimmte bekannte Eigenschaften aufweist (z. B. beginnend mit einer bekannten Sequenz, wie From:
oder eine besonders niedrige Entropie) können Sie möglicherweise die meisten Lösungen ausschließen und schließlich einen plausiblen Klartext finden, vielleicht sogar den richtigen - aber das ist bei weitem nicht trivial, und Sie kann niemals beweisen, dass Sie die richtige haben, es sei denn, Sie haben es bereits vorher gewusst oder Sie haben eine andere Art der Überprüfung.
Einige Hash-Algorithmen, wie z. B. CRCs (wie oben erwähnt), sind reversibel. Einen Ansatz hierzu finden Sie in diesem Dokument. (CRCs sind schnell zu berechnen und ideal, um Daten vor Korruption zu schützen, wenn keine Sicherheitsanforderungen bestehen.)
Das Design von kryptografisch sicheren Hashes soll sicherstellen, dass es keine solche Verknüpfung gibt und dass das Finden einer Hash-Übereinstimmung erforderlich ist eine vollständige Suche im Schlüsselraum.
Vielleicht suchen Sie nach etwas wie PKI, bei dem eine Zeichenfolge an einem Ende mit einem öffentlichen Schlüssel und am anderen Ende mit einem privaten Schlüssel entschlüsselt werden kann. Offensichtlich kein Hash, aber eine Möglichkeit, eine Zeichenfolge zu verschlüsseln / zu entschlüsseln, um ein Geheimnis weiterzugeben.
Sie können sich Knuths multiplikativen Hash ansehen, der eine reversible, zufällige Zuordnung zwischen Ganzzahlen innerhalb der Grenzen der Hash-Tabelle generiert.
Zum Beispiel Optimus implementiert Knuths Algorithmus in PHP, um sequentielle IDs zu verschleiern. Verwenden Sie diesen Algorithmus jedoch nicht aus Sicherheitsgründen .
Sie können ihn ausführlich in seinem Buch Art of Computer Programming, Vol. 3, No. 3 insbesondere ab Seite 513.
ELI5: Was ist ein Hash?
Stellen Sie sich vor, Sie haben Probleme, Dinge in Ihren Schrank zu stellen, und erstellen ein System, das definiert, in welche Schublade Sie je nach Barcode alles legen. Sie haben 7 Schubladen, scannen also den Barcode auf Ihrem Telefon und erfahren, wo Sie ihn abgelegt haben, 1 bis 7.
Stellen Sie sich vor, Sie erhalten jetzt Ihre Einkaufsliste mit 30 Artikeln, nachdem Sie alles gespeichert haben und was um zu wissen, was sich in Schublade 3 befindet, ohne die Schublade zu öffnen. Was tust du? Sie durchlaufen jedes Element auf Ihrer Liste, setzen Ihr Programm ein und schreiben alle Elemente auf, die sich in Schublade 3 befinden. Einfach.
Stellen Sie sich nun vor, Ihre Liste enthält etwas zwischen beispielsweise 10 30 sup> bis 10 9000 sup> Artikel, und Ihr Schrank hat 2 160 sup> Artikel. Wie können Sie wissen, was sich in jeder Schublade befindet, ohne die Schubladen zu öffnen? Sie führen einen Bruteforce-Angriff durch: Testen Sie jeden einzelnen Code immer wieder, bis Sie einen Code erhalten, der in die Schublade 3 passt. Die Leute sagen, dass sie einen Hash umkehren , auch wenn ein Hash niemals rückgängig gemacht werden kann. Sie können es nur erneut ausführen, bis Sie das gleiche Ergebnis erhalten.
Eine Hash-Funktion kann per Definition niemals rückgängig gemacht werden. Wenn Sie können, ist es kein Hash. Es handelt sich um eine Codierung oder Verschlüsselung.