Denselben Hashwert unter SHA256 erstellen

Hallo Roman,

ich habe da mal eine Frage zu der Verschlüsselungsmethode SHA256, die mir einfiel, als ich ein Video über die e-Funktion gesehen habe. Aber wahrscheinlich kann man diese Frage auch auf andere Verschlüsselungen anwenden. Gibt es eigentlich einen Hashwert, der wieder denselben Hashwert ergibt? So wie es bei der e-Funktion ist, die ja auch gleichzeitig ihre eigene Ableitung ist. Wenn ja, wäre dieser Hash doch eigentlich nutzlos, da er nicht mehr sicher wäre, bzw. zurückgerechnet werden könnte. Oder könnte man vielleicht sogar mit so einem Hash die Verschlüsselung knacken?

Viele Grüße und bleib gesund…

GreenTea

Soweit ich weiß ist SHA256 nicht zurückrechenbar und falls Du das irgendwie zurückrechnen kannst, oder den Hash wirklich rauskriegen kannst, soll es eine nächste Verschlüsselung geben, die es dann zu knacken gibt bei Bitcoin. Bei einer durchschnittlichen Blockzeit von 10min wird es unmöglich und somit läuft Bitcoin weiter und weiter und weiter.

Zurückrechnen ist eigentlich nicht das Typische Problem bei Hashfunktionen. Wohl aber wenn 2 unterschiedliche Eingaben (z.B. Dateien) zum gleichen Hash führen, obwohl die Dateien eben nicht komplett gleich sind. Man spricht dann von einer Hash Kollision. Das ist so bei SHA1 passiert.

Englischer Artikel dazu: https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

Sobald sowas gefunden wird, gilt der Algorithmus als unsicher und sollte nicht mehr verwendet werden :slight_smile:

1 „Gefällt mir“

Eine Hash-Funktion ist k e i n e Verschlüsselung.

Bei einer Hash-Funktion gibst Du vorne etwas in beliebiger Länge/Größe hinein und heraus kommt ein (normalerweise als Hexadezimalzahl dargestellter) Hash-Wert in einer fest definierten Länge.

MD5 erzeugt einen 128-Bit-Hashwert, bei SHA sind es 160, 256 oder 512 Bit.

Ein Hash unterscheidet sich von einer Verschlüsselung in erster Linie dadurch, dass man nicht „zurückrechnen“ kann.

Der MD5 von „blah“ ist 6f1ed002ab5595859014ebf0951522d9. Das ist einfach zu berechnen.

Aber von 6f1ed002ab5595859014ebf0951522d9 wieder zurück zu „blah“ eben nicht.

Wie von @bCyberBasti bereits geschrieben, wird es problematisch, wenn man 2 unterschiedliche Inputs findet, die denselben Output ergeben.

Letztendlich MUSS es den aber geben, denn auch wenn der Output mit 512 Bit riesig ist, gibt es logischerweise weit mehr Inputs, weshalb eine Kollision unvermeidlich ist.
Aber die Wahrscheinlichkeit, eine Kollision zu finden, wird mit steigender Größe des Outputs natürlich immer kleiner.

2 „Gefällt mir“

Vielen Dank erst einmal für die ausführlichen Antworten. Ich bin noch ein Neuling in diesem Space, daher entschuldigt eventuelle falsche Ausdrücke oder Bezeichnungen.

Dass 2 verschiedene Inputs denselben Hashwert ergeben können, habe ich irgendwo bereits schon einmal gelesen. In der Tat wäre das ein Problem.

Mir ging es aber um die Frage, ob es ein Hashwert gibt, den man als Input wieder mit der SHA256-Funktion berechnen lässt und dann denselben Hashwert heraus bekommt, wie bei der Ableitung der e-Funktion. Ich habe darüber noch nichts im Netz finden können und fand dies sehr spannend, da so ja auch die Zahl e gefunden wurde. Vielleicht hat man so einen Hashwert noch nicht gefunden oder es ist theoretisch nicht möglich.

Daher dachte ich, dass dieser spezielle Hashwert irgendeine Sonderstellung hätte, mit dem man solche Funktionen zurückrechnen oder andere heute noch unmögliche Berechnungen machen könnte.

Viele Grüße
GreenTea

Ach so.

Man gibt 6f1ed002ab5595859014ebf0951522d9 rein und 6f1ed002ab5595859014ebf0951522d9 kommt auch heraus?

Nein, das gibt es nicht. In der Hash-Funktion wird soviel rotiert, Bits geschoben und angefügt…da kann nicht der Input als Output herauskommen.

Mit einem abgeschlossenen Mathematik-Studium könnte man dafür sicher auch den Beweis liefern, aber das würde wohl den Rahmen hier sprengen.

1 „Gefällt mir“

Ja GermanCryptoGuy, genau das meinte ich. Mal schauen, ob Roman davon schon einmal gehört hat.

Vielen Dank für die Antwort :+1:

Video Antwort

Habe gerade eine Diskussion mit so einem Microsoft dude. Da ich wenig Ahnung von Kryptographie habe, weiß ich das Argument nicht richtig einzuordnen als anzuhängen, dass der Anreiz SHA256 mathematisch zu knacken immer weiter angestiegen ist, aber nichts passiert ist. @anon52841224 meinte es gibt einen mathematischen Beweis für die Sicherheit?

Nein, das hast Du falsch verstanden.

Ein HASH gilt nicht mehr als sicher, wenn

A = Hash
B = Hash
A != B

Also 2 unterschiedliche Eingangswerte ergeben einen identischen Ausgangswert. Das nennt man Kollision und wurde u.a. bei MD5 schon gefunden. Deshalb gilt MD5 nicht mehr als „sicher“.

Die Frage oben (und meine Antwort bezüglich mathematischer Beweisbarkeit) bezog sich aber darauf, dass man einen Eingangswert A hat und dieser Wert A kommt auch als Hash heraus, also INPUT = OUTPUT.

Das kann nicht sein und ich vermute(!), dass man es mathematisch beweisen kann, dass dies niemals sein kann.

Jedoch hat das mit einer Kollision nichts zu tun und ist für die Betrachtung, ob eine HASH-Funktion sicher ist, auch nicht relevant. (Ich habe jedenfalls noch von niemandem gehört, der zu beweisen versuchte, dass INPUT = OUTPUT ist bzw. sein kann.)

Was der Clemens schreibt, ist richtig: Auf lange Sicht wird man eine Kollision finden, denn selbst ohne Mathematik-Studium kann man sich überlegen, dass es eine Kollision geben MUSS.

Nehmen wir mal an, das Ergebnis einer HASH-Funktion ist 3 Stellen lang und jede Stelle kann 2 Zustände (0 und 1) haben, dann ergeben sich 2hoch3=8 Möglichkeiten:

000
001
010
011
100
101
110
111

Bedeutet also: Wenn ich 8+1=9 unterschiedliche Eingangswerte habe, MUSS sich ein Ausgangswert doppeln, denn es gibt ja nur 8 Ausgangszustände.

Nun hat SHA-2 deutlich mehr Stellen und diese können auch nicht nur 0 und 1 annehmen (das sogenannte „Alphabet“), aber trotzdem eine begrenzte Anzahl an Ausgangswerten.
Das heißt, wenn ich diese Anzahl + 1 vorne reingebe, MUSS am Ende ein Wert herauskommen, den es vorher schon einmal gab und damit hätte man eine Kollision.

Die „Sicherheit“ von SHA-2 besteht nun darin, dass die Menge an Ausgangswerten riiiiiiesig ist und noch niemand die zwei Inputs gefunden hat, die denselben Ausgangswert ergeben.

Aber dass es diese zwei Werte geben muss, ist zu 100% sicher.

Was Tom da schreibt, ist zwar etwas einfach formuliert, aber auch er hat Recht, denn viele vergessen, dass Kryptographie, Bitcoin, Kryptowährungen usw. einfach nur Software ist und man Software immer anpassen kann, sofern man sich einig ist.

Erkennt die Welt SHA-2 als unsicher an, dann ändert man halt den Code und nimmt eine andere HASH-Funktion, um es mal einfach auszudrücken.

Jetzt klar geworden?

3 „Gefällt mir“

Außerdem ist es nach meinem Verständnis so, dass man bei MD5 und SHA-1 auch nicht von heute auf morgen ein Verfahren gefunden, hat mit dem man innerhalb von Sekunden zu einem Ziel-Hash eine Ursprungsdatei bzw. -zahl findet.

Es gab eine Zeit lang Papers, in denen von potentiellen Methoden gesprochen wurde. Dann hat man es irgendwann mit einer Rechenzeit von Monaten zum ersten Mal geschafft zwei Dateien zu finden, die den selben Hash ergeben.

Zwei Dateien zu finden, die denselben Hash ergeben, ist wiederum auch wesentlich einfacher, als eine Datei zu finden, die einen bestimmten Hash hat (Geburtstagsparadoxon).

Bei den letzten Verfahren war es also nicht von heute auf morgen so, dass plötzlich alles geknackt werden konnte. Es gab eine gewisse Zeit, in der man sinnvollerweise umgestellt hat.

Ich kenne mich leider zu wenig mit den Mining-ASICS aus. Je nachdem wie automatisiert hier Blöcke gesucht werden, müsste man evtl. auch die Hardware an die Angriffmethoden anpassen.

Aber wissen tut man das alles natürlich nicht! Es könnte theoretisch von heute auf morgen möglich sein, SHA-256 direkt und schnell zurückzurechnen.

2 „Gefällt mir“

Danke für die Antwort :+1:t3:
Ich meine er stellt eher die Möglichkeit in den Raum, das Zurückrechnen eines Hashes effizienter zu gestalten, als durch es eine bloße brute force Attacke. Aber so wie ich es verstanden habe, gibt es da auch keinen Beweis für die Nichtexistenz eines mathematischen Algorithmuses, der dies vereinfachen würde.

1 „Gefällt mir“

Soweit ich weiß per BRUTE-FORCE. Also das stumpfe Probieren.

Man fängt bei 0000000 an und zählt hoch. (Einfach ausgedrückt.)

Theoretisch ja. Vielleicht findet sogar jemand einen Bug? Dann hätte sich das eh erledigt.
Es ist halt Software. Die ist leider nie perfekt. :frowning:

Das kann ich nicht beurteilen. Dafür fehlen mir definitiv die Mathe-Kenntnisse.

Solange unschuldig, bis das Gegenteil bewiesen wird. :wink:

1 „Gefällt mir“

Zur Vollständigkeit, er hat noch das hier verlinkt und Andeutungen gemacht, dass ich Opfer des Dunning-Kruger-Effekts geworden bin haha (ich bin der Tom in der Konversation) Cryptanalysis - Wikipedia

Nee, das bist Du nicht. Ihr habt nur andere Sichtweisen.

Als Programmierer, Kryptograph, Mathematiker kann es einem manchmal gar nicht genau genug sein.

Wenn ich mit einem Kunden rede, ergibt sich zwischendurch immer folgenden Dialog:

  • Wie oft passiert das denn?
  • Eigentlich nie.
  • Was heißt „eigentlich“? Kann es passieren oder nicht?
  • Mir ist kein Fall bekannt.
  • Also kann es niemals vorkommen?
  • Hm, völlig ausschließen kann ich es nicht.

Für den Kunden kann ein Ereignis so selten sein, dass es für ihn „nie“ vorkommt.

Für einen Programmierer ist es dagegen sehr wichtig zu wissen, denn sobald das Ereignis eintreten könnte (selbst wenn’s nur 1x alle 5 Jahre passiert), muss ein System entsprechend reagieren und nicht mit einem Bluescreen abstürzen.

Ein FORTRAN-Programmierer arbeitet mit Pi auf 10000 Stellen genau.
Im Matheunterricht rechnet man mit 4 oder 5 Nachkommastellen.
Wenn ich die Größe meines runden Pools berechnen will, ist „Pi = 3“.

:smiley:

Oh. LOL.

2 „Gefällt mir“