Kann man einen SHA256 Hash zurückübersetzen?

CyborgBeta

Banned
Registriert
Jan. 2021
Beiträge
3.958
Geht das?

Also könntet ihr sagen

419b421123f8d803a489276bbd23e118692839a854f75dd7c2e16123632b0d14

welcher Input-Text damit "verschlüsselt" wurde?
 
Ein Hash ist keine Verschlüsselung, also kann mans auch nicht "entschlüsseln".

Beispiel:
Dein Text ist "12456789", der Hash ist ein ganz einfacher Algorithmus, der einfach nur die Zahlen zusammenzählt. Dann wär das Ergebnis: 42.
Das Ergebnis kann aber auch durch ganz andere Eingabewerte zu Stande kommen.
Zudem "salzt" ein halbwegs brauchbarer Algorithmus die Eingabewerte auch noch mindestens, wenn wir mal bei den ganz einfachen Sachen bleiben.
 
  • Gefällt mir
Reaktionen: mental.dIseASe, Arc Angeling, Recharging und eine weitere Person
Nein. Wenn du uns Datensätze gibst können wir dir sagen, ob der Hash dazu passt. Andersherum aber nicht.
 
  • Gefällt mir
Reaktionen: Recharging und CyborgBeta
Lesen, verstehen, Frage löschen:
https://en.wikipedia.org/wiki/SHA-2

Kurzfassung: Es gibt mehrere mögliche Lösungen zu dem Problem, das heißt es ist möglich einen Satz von Daten zu berechnen die die ursprünglichen Daten enthalten. Collision Problem. Aber eben nicht eindeutig zu bestimmen was jetzt aus diesem Satz die ursprünglichen Daten sind.

Es sei denn natürlich es gibt bekannte Neben- oder Randbedingungen.
 
Also müsste man den Input der Hashfunktion raten? Oder wie könnte man anders an den Text gelangen?
Ergänzung ()

Ich hatte zum Hashen einfach diese Seite verwendet: https://emn178.github.io/online-tools/sha256.html
Ergänzung ()

Diese Seite: https://hashes.com/en/decrypt/hash

kann zwar 753692ec36adb4c794c973945eb2a99c1649703ea6f76bf259abb4fb838e013e entschlüsseln, aber 419b421123f8d803a489276bbd23e118692839a854f75dd7c2e16123632b0d14 nicht.

Könnte mir jemand erklären, wieso?
 
Zuletzt bearbeitet:
Ja, raten kann sehr effizient sein wenn die Menge der möglichen Lösungen klein ist.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Kontrollfreak schrieb:
Wenn der ursprüngliche Text ausreichend gewöhnlich oder kurz ist, dann lässt er sich relativ einfach wiederherstellen: https://de.wikipedia.org/wiki/Rainbow_Table

Deswegen sollte der Text vor dem Hashen immer gesalzen werden:
https://de.wikipedia.org/wiki/Salt_(Kryptologie)
Der ursprüngliche Text lässt sich nicht zuverlässig ermitteln, es kann sich um eine Kollision handeln. Keine Ahnung wieso der Wikipedia Artikel das behauptet. Ein schönes Beispiel für die Problematik ist MD5: https://de.m.wikipedia.org/wiki/Message-Digest_Algorithm_5#Kollisionsangriffe
 
CyborgBeta schrieb:
kann zwar 753692ec36adb4c794c973945eb2a99c1649703ea6f76bf259abb4fb838e013e entschlüsseln
Entschlüsseln kann man bei einem Hashwert gar nichts, weil es keine Verschlüsselung ist. Man kann zu dem Hashwert Eingabewerte finden, die nach Anwendung der Hashfunktion den gegebenen Hashwert ergeben.
 
Nicht zurückübersetzen zu koennen ist DAS Merkmal von Hashes (neben "unwichtigeren" Dingen wie Kollisionsresistenz)

Lies mal bitte hier: https://de.wikipedia.org/wiki/Hashfunktion

Warst du nicht der, der im Dezember noch einen Unknackbare Verschlüsselung entwickeln wollte?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mental.dIseASe, floq0r, eigsi124 und 4 andere
Also gibt es zu einem SHA256 Hash unendlich viele Kollisionen.

Gibt es Muster, nach denen einen SHA256 Hash zurückübersetzt werden kann?

Um sich davor zu schützen, salzt man also eine Datenbank. Was ist, wenn der Salt bekannt ist? Lässt sich die Eingabe dann zurückübersetzen?

Was ist, wenn ein Teil der Eingabe bekannt ist? Lässt sich dann der andere Teil zurückübersetzen?

Und praktisch gesehen, wie lange dauert es, alle Eingabekombinationen der Länge n zurückzuübersetzen?
Ergänzung ()

madmax2010 schrieb:
Warst du nichtder, der im Dezember noch einen Unknackbare Verschlüsselung entwickeln wollte?

Ich verstehe den abwertenden Kommentar nicht ... Ich hatte nur nach einer Implementierung eines Verschlüsselungsverfahrens gesucht ... Keiner zwingt dich, hier zu antworten, btw. Aber, falls doch, so wäre es wünschenswert, wenn deine Antworten richtig wären.
 
CyborgBeta schrieb:
Und praktisch gesehen, wie lange dauert es, alle Eingabekombinationen der Länge n zurückzuübersetzen?
So lange, das du es nicht mehr erlebst. Es ei denn Quantencomputer ziehen bald in alle Haushalte ein ;-)
 
CyborgBeta schrieb:
Also gibt es zu einem SHA256 Hash unendlich viele Kollisionen.
Theoretisch - Ja
CyborgBeta schrieb:
Gibt es Muster, nach denen einen SHA256 Hash zurückübersetzt werden kann?
Vergiss mal dein zurückübersetzen. Es kann nur eine (oder mehrere) mögliche Eingabe(n) gefunden werden, die zu einem Hash führen. Ob das letztlich auch der korrekte Eingangswert war, wirst du nie erfahren.

@rg88 hat das schon schön verglichen mit der Quersumme als Hashfunktion. Bei einem Hash-Wert von "1" weißt du auch nicht, ob der korrekte Eingangswert "1", "10", "100", "1000" oder "10000" war. Alle Werte führen zum selben Hashwert "1".
CyborgBeta schrieb:
Um sich davor zu schützen, salzt man also eine Datenbank. Was ist, wenn der Salt bekannt ist? Lässt sich die Eingabe dann zurückübersetzen?
Nein, und trotz Wissen um das Salz kannst du nicht einfach den Eingabewert ermitteln. Mittels Salz umgehst du nur das Problem von zu kurzen Eingabewerten, die vorberechnet werden können und mittels Rainbow Table ermittelbar sein können.
CyborgBeta schrieb:
Was ist, wenn ein Teil der Eingabe bekannt ist? Lässt sich dann der andere Teil zurückübersetzen?
Nein.
CyborgBeta schrieb:
Und praktisch gesehen, wie lange dauert es, alle Eingabekombinationen der Länge n zurückzuübersetzen?
O(n)


... und es gibt kein "zurückübersetzen" im Zusammenhang mit Hash-Funktionen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CyborgBeta
  • Gefällt mir
Reaktionen: mental.dIseASe
CyborgBeta schrieb:
Um sich davor zu schützen, salzt man also eine Datenbank
Nein, um zu verhindern dass bekannte Eingabefolgen zu bekannten hashes führen und um sicherzustellen dass zwei Leute mit der gleichen Eingabefolge zwei unterschiedliche hashes haben.
 
  • Gefällt mir
Reaktionen: mental.dIseASe, Recharging, TomH22 und eine weitere Person
pseudopseudonym schrieb:
Eine Hashfunktion ist eine surjektive Funktion, damit ist es absolut unmöglich, einen Hash eindeutig rückzuübersetzen. Warum das so ist, verdeutlicht die Grafik im Wikipediaartikel (https://de.m.wikipedia.org/wiki/Surjektive_Funktion).
Ja, aber je länger eine sinnvolle, gefundene Kollision ist, desto wahrscheinlicher ist es, dass das die Eingabe war.
Ergänzung ()

Oder anders: Mag in der Theorie stimmen, in der Praxis jedoch nicht.
 
Zurück
Oben