Kann man einen SHA256 Hash zurückübersetzen?

@CyborgBeta Damit hast du aber keine Eindeutigkeit, womit es keine Rückübersetzung ist.
Außerdem sehe ich deine Schlussfolgerung nicht. Findest du eine 500 Zeichen lange Eingabe, die zu einem Hash in einer Passwort-DB passt, wird das eher nicht das Passwort sein, das ein Nutzer eingegeben hat.
 
.... was dem Betriebssystem aber egal ist - es wird die 500 Zeichen lange Eingabe als Passwort akzeptieren.
 
  • Gefällt mir
Reaktionen: TomH22
Tornhoof schrieb:
dass bekannte Eingabefolgen zu bekannten hashes führen und um sicherzustellen dass zwei Leute mit der gleichen Eingabefolge zwei unterschiedliche hashes haben

Das widerspricht sich ein bisschen. Wenn zwei Leute die gleiche Eingabefolge nutzen, ist es egal, ob gesalzen wurde oder nicht, der Login/Check würde dennoch funktionieren.
 
@DarkAngel2401 Das ist dann aber trotzdem keine Rückübersetzung. Die kann es per Definition nur bei einer bijektiven Funktion geben, also nicht bei einer Hashfunktion.
 
pseudopseudonym schrieb:
Eine Hashfunktion ist eine surjektive Funktion,
Uh, da begibst du dich auf Glatteis, die surjektivität ist formal nur für eine Handvoll Algorithmen bewiesen, bei den meisten geht man einfach davon aus weil die Eingabemenge riesig ist.

Garantiert ist es nur für perfekte hashfunktionen.

Ich würde, abseits von algebraischen hashfunktionen, einen großen Bogen um surjektivität, injektivität und bijektivität machen. Du kannst auch eine entsprechende hashfunktion bauen die bijektiv ist und trotzdem eine Einwegfunktion ist.
 
  • Gefällt mir
Reaktionen: Arc Angeling und pseudopseudonym
Ohne Salz ist das klar. "12345" und "12345" ergeben denselben Hash.
Mit Salz nicht. Und für jedes gespeicherte Passwort wird selbstverständlich ein eigenes Salz verwendet!
Ergänzung ()

pseudopseudonym schrieb:
@DarkAngel2401 Das ist dann aber trotzdem keine Rückübersetzung. Die kann es per Definition nur bei einer bijektiven Funktion geben, also nicht bei einer Hashfunktion.
Hab ich ja auch nie behauptet, dass das eine Rückübersetzung ist - nur eine mögliche Eingabe, die zu einem gesuchten Hash führt.
 
  • Gefällt mir
Reaktionen: Purche und DefconDev
  • Gefällt mir
Reaktionen: Purche, mental.dIseASe, CyborgBeta und eine weitere Person
Tornhoof schrieb:
Uh, da begibst du dich auf Glatteis, die surjektivität ist formal nur für eine Handvoll Algorithmen bewiesen, bei den meisten geht man einfach davon aus weil die Eingabemenge riesig ist.
Okay, fair. Ist auch ne Weile her bei mir :D
Welcher Begriff war der richtige, wenn nicht jedes Element in der Zielmenge getroffen werden muss?
Ergänzung ()

DarkAngel2401 schrieb:
Hab ich ja auch nie behauptet, dass das eine Rückübersetzung ist - nur eine mögliche Eingabe, die zu einem gesuchten Hash führt.
Stimmt, hast du nicht. War allerdings eine der Fragen vom TE.
 
pseudopseudonym schrieb:
Stimmt, hast du nicht. War allerdings eine der Fragen vom TE.
Ja, leider weigert er sich beharrlich, den Begriff der "Zurückübersetzung" für Hash-Funktionen beiseite zu legen, trotz verschiedenster Erklärversuche in diversen Postings 😉
 
pseudopseudonym schrieb:
Damit hast du aber keine Eindeutigkeit
Davon hab ich auch nicht gesprochen. Die Wahrscheinlichkeit wäre höher ...

Mal ein Beispiel:

Der Text "f...69" wird wahrscheinlich eher die gesuchte Eingabefolge gewesen sein als ... <Buchstabensalat hier...>, einfach, da die "Entropie" geringer ist, sprich der Buchstabensalat für einen Menschen keinen Sinn ergeben würde.
Ergänzung ()

DarkAngel2401 schrieb:
Ja, leider weigert er sich beharrlich, den Begriff der "Zurückübersetzung" für Hash-Funktionen beiseite zu legen, trotz verschiedenster Erklärversuche in diversen Postings
Dann schlage bitte einen Alternativbegriff uns vor ;)
 
Den gibt es nicht, da du den "echten", ursprünglichen Eingabebert, mit der der Hash gebildet wurde, nicht ermitteln kannst.

Statt "Rückübersetzung" könnte man korrekter das "Ermitteln einer möglichen Eingabe, die zum vorliegenden Hash XY führt" verwenden.
 
  • Gefällt mir
Reaktionen: mental.dIseASe und CyborgBeta
@CyborgBeta Deine eigentliche Frage war die:
CyborgBeta schrieb:
Also könntet ihr sagen

419b421123f8d803a489276bbd23e118692839a854f75dd7c2e16123632b0d14

welcher Input-Text damit "verschlüsselt" wurde?
Und da ist die Antwort ganz klar nein, weil Hashfunktionen aus genannnten Gründen nicht rückübersetzbar sind.

Wenn du jetzt Annahmen für die Eingabe aufstellst (menschlicher Sprache, nur eine bestimmte Eingabenlänge, nur ein bestimmter Zeichensatz, ...) kannst du theoretisch sagen, welche Eingabe es WAHRSCHEINLICH war.

Wenn du eine sichere endliche Eingabemenge hast und wirklich alles durchprobieren kannst und dann für den Hash nur eine mögliche Eingabe hast, dann kannst du natürlich mit Sicherheit sagen, was die Eingabe war.

Die beiden Wenns werden in der Regel allerdings an der Rechenleistung scheitern. Außer, du hast eine winzige Eingabemenge.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Tzk und CyborgBeta
pseudopseudonym schrieb:
Die beiden Wenns werden in der Regel allerdings an der Rechenleistung scheitern.

Was, wenn eine KI mögliche Eingaben, "die zum vorliegenden Hash XY führen", vorfiltern könnte; also Eingaben, die nicht "menschlicher Sprache, einer bestimmten Eingabelänge und nur einem bestimmten Zeichensatz" entsprechen, im Vorfeld ausschließen könnte?
 
Zuletzt bearbeitet:
pseudopseudonym schrieb:
Wenn du eine sichere endliche Eingabemenge hast und wirklich alles durchprobieren kannst und dann für den Hash nur eine mögliche Eingabe hast, dann kannst du natürlich mit Sicherheit sagen, was die Eingabe war.
SHA-256 Hashwerte sind 32 Bytes groß, das wird also bestenfalls für Eingabewerte mit max. 32 ASCII Zeichen funktionieren.
 
@fax668 Nö, du hast ja keine Garantie, welcher Hash wie oft aus deiner Eingabemenge berechnet wird. Da eine Gleichverteilung zu haben, ist ja bloß ein Ideal.
Theoretisch (sollte natürlich idealerweise nicht passieren) kannst du auch bei einer deutlich größeren endlichen Eingabemenge einen eindeutigen Hash für eine Eingabe haben (natürlich nicht für jede).
 
Zurück
Oben