Dario Linsky
Erfahrenes Mitglied
Hi,
da in letzter Zeit anscheinend immer wieder die Frage aufkommt, ob bzw. wie man MD5 und SHA1 richtig anwendet oder "entschlüsselt", mal ein paar generelle Dinge dazu.
1. Weder MD5 noch SHA1 sind Verschlüsselungen, sondern Hashes bzw. Prüfsummen (wie auch CRC). Ein solcher Hash kann aus einer beliebig langen Zeichenkette erstellt werden und bildet diese Informationen in kurzer Form ab.
Üblicherweise wird man solche Hashes häufig bei Downloads finden, gerade wenn es sich um größere Dateien handelt, beispielsweise CD-Images von http://www.linuxiso.org: der Download eines CD-Images kann etwas länger dauern und wenn man beim Brennvorgang erst merkt, dass die Imagedatei nicht komplett oder fehlerhaft runtergeladen wurde, kann das sehr ärgerlich sein. Um zu überprüfen, ob die Datei vollständig und in Ordnung ist, kann man aus der Datei eine Prüfsumme errechnen lassen, die trotz der möglicherweise 600MB auf ein Minimum von 32 Bytes (bei MD5) reduziert werden kann.
2. MD5 und SHA1 können für die Verschlüsselung von Kennwörtern zweckentfremdet werden, was eigentlich auch schon allgemein übliche Praxis ist. Zur Überprüfung der Kennwörter in Logins oder ähnlichem muss man jeweils von den vom Benutzer eingegebenen Kennwörtern zuerst einen Hash erstellen und diesen dann mit einem bei der Registrierung erstmals erstellen Hash aus einer beliebigen Datenquelle überprüfen.
3. Hashes funktionieren nur in eine Richtung.
Es gibt (mit Ausnahme von Bruteforce) keine Möglichkeit, aus einem Hash die Ursprungsdaten eindeutig wieder zurückzubekommen. Das ist logischerweise der Vorteil davon.
Der einzige Weg, einen Hash zu "knacken", wäre Bruteforce, wobei das eigentlich nicht empfehlenswert ist, da es sehr wahrscheinlich sehr lange dauern würde und den Aufwand nicht rechtfertigt.
4. Noch zu beachten ist, dass (zumindest MD5) keine eindeutigen Hashes erzeugt. Da man, wie im ersten Punkt schon gesagt, eine beliebig lange Datenmenge auf immer genau 32 Bytes abbilden kann, ist es natürlich logisch, dass es für zwei völlig verschiedene Ausgangsdaten einen identischen Hash geben kann. Auch wenn das unwahrscheinlich ist, könnte man solche Probleme bekommen.
Ich hoffe, damit sind die gröbsten Fragen ein für alle Mal beantwortet.
Grüße, Dario
da in letzter Zeit anscheinend immer wieder die Frage aufkommt, ob bzw. wie man MD5 und SHA1 richtig anwendet oder "entschlüsselt", mal ein paar generelle Dinge dazu.
1. Weder MD5 noch SHA1 sind Verschlüsselungen, sondern Hashes bzw. Prüfsummen (wie auch CRC). Ein solcher Hash kann aus einer beliebig langen Zeichenkette erstellt werden und bildet diese Informationen in kurzer Form ab.
Üblicherweise wird man solche Hashes häufig bei Downloads finden, gerade wenn es sich um größere Dateien handelt, beispielsweise CD-Images von http://www.linuxiso.org: der Download eines CD-Images kann etwas länger dauern und wenn man beim Brennvorgang erst merkt, dass die Imagedatei nicht komplett oder fehlerhaft runtergeladen wurde, kann das sehr ärgerlich sein. Um zu überprüfen, ob die Datei vollständig und in Ordnung ist, kann man aus der Datei eine Prüfsumme errechnen lassen, die trotz der möglicherweise 600MB auf ein Minimum von 32 Bytes (bei MD5) reduziert werden kann.
2. MD5 und SHA1 können für die Verschlüsselung von Kennwörtern zweckentfremdet werden, was eigentlich auch schon allgemein übliche Praxis ist. Zur Überprüfung der Kennwörter in Logins oder ähnlichem muss man jeweils von den vom Benutzer eingegebenen Kennwörtern zuerst einen Hash erstellen und diesen dann mit einem bei der Registrierung erstmals erstellen Hash aus einer beliebigen Datenquelle überprüfen.
3. Hashes funktionieren nur in eine Richtung.
Es gibt (mit Ausnahme von Bruteforce) keine Möglichkeit, aus einem Hash die Ursprungsdaten eindeutig wieder zurückzubekommen. Das ist logischerweise der Vorteil davon.
Der einzige Weg, einen Hash zu "knacken", wäre Bruteforce, wobei das eigentlich nicht empfehlenswert ist, da es sehr wahrscheinlich sehr lange dauern würde und den Aufwand nicht rechtfertigt.
4. Noch zu beachten ist, dass (zumindest MD5) keine eindeutigen Hashes erzeugt. Da man, wie im ersten Punkt schon gesagt, eine beliebig lange Datenmenge auf immer genau 32 Bytes abbilden kann, ist es natürlich logisch, dass es für zwei völlig verschiedene Ausgangsdaten einen identischen Hash geben kann. Auch wenn das unwahrscheinlich ist, könnte man solche Probleme bekommen.
Ich hoffe, damit sind die gröbsten Fragen ein für alle Mal beantwortet.
Grüße, Dario