Hash Algorithmus erkennen

Also kurz gefasst ich bin neu hier und möchte einen Hashalgorithmus erkennen.
Meine frage dazu ist auf einer Internetseite wo man Minesweeper spielen kann also nix besonderes wird pro runde ein Hash erstellt und man bekommt am ende Secret könnte man dadurch irgendwie vorhersagen wo die Bomben bei der nächsten runde sind?
Würde mich über eine Antwort freuen!
Wenn es geht würde ich dafür zahlen um es zu knacken :)
 
Ich habe zwar immernoch nich den Zusammenhang zwischen einem Spiel und einem Hashalgorithmus verstanden aber ich versuche die Frage allgemein zu beantworten.

Du kannst anhand eines Hashwertes NICHT den Hashalgorithmus erkennen. Wenn doch, wäre dieser Algorithmus nichts wert. Du kannst lediglich die Bitlänge ermitteln und dadurch vielleicht einige Kandidaten ausschließen bzw. du kannst versuchen zufällig den Algorithmus durch Bruteforce zu ermitteln aber selbst dann kannst du dir nicht sicher sein, weil theoretisch zwei verschiedene Algorithmen den selben Hashwert generieren könnten, außerdem wäre der Rechen/Zeit-Aufwand in keiner Weise gerechtfertigt.
 
Zuletzt bearbeitet:
Du kannst anhand eines Hashwertes NICHT den Hashalgorithmus erkennen. Wenn doch, wäre dieser Algorithmus nichts wert.

Warum sollte die Geheimhaltung des verwendeten Kryptosystem etwas mit der gebotenen Sicherheit zu tun haben? Das widerspräche auch Kerkhoffs zweitem Gesetz, das besagt, dass die Sicherheit nicht auf der Geheimhaltung des Systems beruhen darf. In Bezug auf die Bewertung von kryptographischen (Hash-)Algorithmen geht man meistens sogar explizit davon aus, dass der Algorithmus beim Angriff auf diesen bekannt ist.

In der Praxis wird der Hashalgorithmus (sowie einen möglichen Salt) als Prefix dem Hash hinzugefügt, z.B. bei crypt, hardcodiert oder irgendwo in einer Konfiguration hinterlegt.

Offtopic:
Forenregeln lesen..... solche Anfragen sind nicht erwünscht.

Im Benutzerteil des Posts gibt es ein kleines Ausrufezeichen, über das du einen Post melden kannst, wenn du meinst, dass er gegen die Forenregeln verstösst. Wir werden dann entsprechend reagieren. Einen extra Post braucht es dafür nicht.

Danke ;)
 
Zuletzt bearbeitet:
@SchwarzeBeere

Okay. Dann sage mir bitte den Algorithmus zu diesem Hashwert:

5ae4b03b5732f5563693395f56d5f1119edf036a1d3a20b85af6f32d8c8e012e

Außerdem hast du meine Aussage nicht verstanden. Wo bitte habe ich gesagt, dass der Algorithmus geheimgehalten werden muss?
Wenn der verwendete Algorithmus immer dem Hash angehangen werden würde, wäre diese ganze Frage sinnlos.
Ich bleibe bei meiner Aussage, dass wenn man von dem nackten Hashwert auf dessen Algorithmus schließen kann, der Algorithmus keinen Pfennig wert ist.
Der Algorithmus muss nich geheim bleiben aber man sollte anhand des Ciphertextes nicht darauf schließen dürfen, da dies Regelmäßigkeiten im Algorithmus und damit einen Angriffspunkt bedeuten würde.
 
Zuletzt bearbeitet:
5ae4b03b5732f5563693395f56d5f1119edf036a1d3a20b85af6f32d8c8e012e

Wenn es klar ist, dass es sich um einen Hash handelt, der mit einem bekannten, weit verbreiteten Verfahren erstellt wurde, ist es mit hoher Wahrscheinlichkeit SHA256.

Was ich damit sagen möchte: Wenn du weißt, dass es sich bei einer Zeichenkette um einen Hash handelt, dann kennst du üblicherweise auch den Algorithmus, mit dem er erstellt wurde. Zumindest in der Praxis. In der Theorie mag das anders sein.

Ist dies nicht der Fall, dann muss man eben etwas suchen, denn, wie du richtig bemerkt hast, siehst du der Zeichenkette selbst nicht an, wie und aus welchen Eingaben sie entstanden ist. Übliche Ansätze können sein Länge, Form, Standardisierung, Nutznungshäufigkeit, verwendete Libraries, Schwachstellen bekannter Algorithmen, Rainbow-Tables, usw...

Das hat jedoch nichts mit dem "Wert" des Algorithmusses zu tun. Hier geht es vielmehr um Resistenzen gegen Kollisionen - d.h. um Rückschlüsse auf Eingabewerte -, da man im Angriffsfall immer annehmen muss, dass der Algorithmus bekannt ist.

Oder anders gesagt: Wenn SHA-256 der einzige Algorithmus wäre, der einen in Base64 codierten 64 Zeichen langen Hash ausspuckt, dann wäre die Antwort auf die obige Fragen sehr leicht. Sha256 ist deswegen jedoch nicht automatisch weniger wert.
 
Zuletzt bearbeitet:
@SchwarzeBeere

Du hast mich immernoch nicht verstanden. Außerdem ist SHA256 falsch.
Wenn ein Hashverfahren oder ein Verschlüsselungsverfahren beim Verschlüsseln den Klartext so charaktarisiert, dass man anhand des Ciphertextes auf den verwendeten Algorithmus schlussfolgern kann, ist der Algorithmus schlecht, da der Ciphertext dann mit verschiedenen Angriffen angegangen werden könnte.
Deine Argumentation mit "wahrscheinlich einer der bekanntesten Algorithmen" hinkt auch etwas, da das 1. eine grobe Spekulation wäre und 2. auch zwei verschiedene Algorithmen (wenn sie die gleiche Bitlänge haben) den gleichen Hashwert erzeugen können. Deshalb kann man folgendes behaupten:
Du kannst NICHT anhand des nackten Hashwertes den Algorithmus bestimmen. (Was ja unser kleines Beispiel mit dem Hashwert demonstriert hat)
Aus diesem Grund wird, wie du bereits erwähnt hast, der verwendete Algorithmus gleich im Klartext mitgeliefert, weil er auch nicht geheim sein muss (außer vielleicht bei der NSA, wo einfach mal Verfahren UND Schlüssel geheim sind, was nochmal sicherer ist, da es nur für den internen Gebrauch ist).
 
Zuletzt bearbeitet:
Wenn man einen bestimmten Hash bei Hashcat bzw. Jon the Ripper eingibt bekommt man glaube so viel ich weiß sofort die Art des verwendeten Hashalgorithmus gesagt bekommt


Gesendet von iPhone mit Tapatalk
 
Wenn man einen bestimmten Hash bei Hashcat bzw. Jon the Ripper eingibt bekommt man glaube so viel ich weiß sofort die Art des verwendeten Hashalgorithmus gesagt bekommt


Gesendet von iPhone mit Tapatalk

Nein. Entweder sind diese in der Hashdatei mit angegeben oder werden dem Programm als Parameter übergeben:

Code:
root@*:/home/*# john --help | grep hash
--salts=[-]COUNT[:MAX]    load salts with[out] COUNT [to MAX] hashes
--format=NAME             force hash of type NAME. The supported formats can

Code:
root@*:/home/*# hashcat --help | grep hash-type
 -m, --hash-type      | Num  | Hash-type, see references below | -m 1000
 
Wenn ein Hashverfahren oder ein Verschlüsselungsverfahren beim Verschlüsseln den Klartext so charaktarisiert, dass man anhand des Ciphertextes auf den verwendeten Algorithmus schlussfolgern kann, ist der Algorithmus schlecht, da der Ciphertext dann mit verschiedenen Angriffen angegangen werden könnte.
Ok, vielleicht reden wir aneinander vorbei. Wie oben geschrieben ist deine Aussage, dass man vom blanken String nicht auf einen Algorithmus schließen kann, durchaus theoretisch korrekt. So könnte dein String natürlich auch aus zwei MD5 und MD4 Hashes bestehen. Theoretisch kannst du auch nicht zwischen einem MD5 und einem MD4 Hash auf den verwendeten Algorithmus schließen, wenn du nur den Hash kennst und sonst keine anderen Informationen hast.

In der Praxis ist aufgrund vergleichsweisen geringen Verbreitung von MD4 eher die Anwendung von MD5 wahrscheinlich. Und da es sich um einen zusammenhängenden String handelt, ist SHA256 auch nochmal ein Stück wahrscheinlicher, als 2xMD5. Oder es könnte etwas ganz anderes sein - je nach Herkunft ist das natürlich wieder mehr oder weniger wahrscheinlich.

Mir ging es nun genau um diese Wahrscheinlichkeiten. In der Praxis, in der es oft nur ein beschränktes Set von (sicheren) Algorithmen zur Auswahl gibt, kannst du mittels Ausschlussverfahren die möglichen Kanditaten bestimmen und nach ihrer Wahrscheinlichkeit aussuchen. Meine Aussage ist hierbei, dass die Bestimmung des Algorithmus anhand der gegebenen Informationen, und sei sie entweder mit einer bestimmten Wahrscheinlichkeit oder sogar zu 100% korrekt, nicht den Wert der Algorithmen mindert. Das lässt sich nicht abstreiten.

Bzgl Tools: HashTags kann Hashes erkennen und benennt mögliche Algorithmen:
Code:
/projects/HashTag $ python HashTag.py -sh '5ae4b03b5732f5563693395f56d5f1119edf036a1d3a20b85af6f32d8c8e012e'

Hash: 5ae4b03b5732f5563693395f56d5f1119edf036a1d3a20b85af6f32d8c8e012e

[*] Keccak-256

[*] sha256(md5($pass).$pass))

[*] Skein-256

[*] Skein-512(256)

[*] Ventrilo

[*] WPA-PSK PMK

[*] GOST R 34.11-94 - Hashcat Mode 6900

[*] Haval-256

[*] RipeMD-256

[*] SHA256 - Hashcat Mode 1400

[*] sha256(md5($pass))

[*] sha256(sha1($pass))

[*] Snefru-256

[*] HMAC-SHA256 (key = $salt) - Hashcat Mode 1460

[*] SHA-3(Keccak) - Hashcat Mode 5000
 
Zuletzt bearbeitet:
@SchwarzeBeere

Wenn ich das richtig sehe, ist das einzige was das Programm macht, mögliche Hashalgorithmen anhand der Schlüssellänge auszumachen.

Das habe ich bereits in meinem ersten Post als Lösung vorgeschlagen:

... du kannst lediglich die Bitlänge ermitteln und dadurch vielleicht einige Kandidaten ausschließen ...

Ganz egal was wahrscheinlich ist, letzendlich bleibt es Spekulation; auch in der Praxis.
 
Zurück
Oben