Security - Salt against Brute Force

Sephcom

Mitglied
Schönen guten Tag,

ohne Vorgerede, direkt los:

Viele von euch wissen ja, dass gehashte Passwörter durch sogenannte "Brute Force"-Attacken "geknackt" werden.
Bei einem einfachen Passwort, wie es fast jeder Otto-Normalverbraucher benutzt - sei es das Geburtsdatum, Zweitname, oder irgendwelche Kombinationen aus persönlichen Daten (Vorname + Geburtsdatum) - dauert eine solche Attacke meist nur einige Minuten oder Stunden.

Um einen Hash sicherer zu machen, wird das Passwort nun zunächst mit einem Salt versehen. Viele von euch kennen das verfahren. Da der Salt aber in der Datenbank gespeichert ist, ist es kein Problem für einen "Hacker" ein BT zu schreiben, welches alle Passwörter + den Salt hasht, d.h. die dauer der Attacke bleibt die gleiche, wie ohne Salt.

Nun zu meiner Idee:
Wir salten einen Hash mit einem weiteren Hash und dieser "Salted Hash" wird ein weiteres mal gehasht.

Das ganze sieht zum Beispiel so aus:

Name: Hans
Passwort: Wurst

Zunächst reduzieren wir Hans auf hans (strtolower('Hans'))
aus hans machen wir nun einen sha2 > 6428a8fbbb0e120528bb604a66787102280e1b5e26db76633ce37c8a4526e445

als nächstes hashen wir das Passwort, OHNE es zu reduzieren (Passwort muss ja etwas knifflig sein)
also sha2 von Wurst > 56065cafa1f3c929f805e245c7f838cd99f35d0aa4910e86e60932e475122da6

Nun wird der 1. Hash mit dem 2. Hash "gesalzen"
also hash1:hash2

das sieht so aus
6428a8fbbb0e120528bb604a66787102280e1b5e26db76633ce37c8a4526e445:56065cafa1f3c929f805e245c7f838cd99f35d0aa4910e86e60932e475122da6

d.h. der Username ist unser "salt"
diesen Salted Hash hashen wir nun mit MD5, und sieht somit so aus:
87cfb387f124e4172d02805a0649db20


Das Prinzip ist ganz einfach.
Will man nun eine Brute Force attacke starten, muss man zunächst den MD5-Hash attackieren.
Nach etwa 5000 Jahren kommt man dann zu unserem salted Hash, und steht vor dem nächsten Problem:
welcher Hash ist das Passwort, und welcher ist der Salt?
Also wieder beide attackieren.
Nochmal 8000 Jahre später hat man dann beides.

Klingt sehr ironisch, soll es auch!
Meiner Meinung nach, ist die einzige möglichkeit ein solches Passwort zu knacken, eine Kollision zum MD5 Hash zu finden.
Andererseits sitzt man und warted ewig.


Was halted ihr davon?

MfG
 
Bei einem einfachen Passwort, wie es fast jeder Otto-Normalverbraucher benutzt - sei es das Geburtsdatum, Zweitname, oder irgendwelche Kombinationen aus persönlichen Daten (Vorname + Geburtsdatum) - dauert eine solche Attacke meist nur einige Minuten oder Stunden.
Dagegen hilft auch kein Salt.

Der Sinn von Salted Hashes ist, trotz identischer Eingabewerte durch den Zusatz des zufälligen Salt-Werts nicht-identische Ausgabewerte zu bekommen. Das heißt, auch wenn mehrmals password1 als Kennwort verwendet wird, ist der Salted-Hash-Wert wegen des zufälligen Salt-Werts dennoch verschieden.

Was nun dein Verfahren angeht, so ist es nicht besser als das herkömmliche Salted-Hash-Verfahren mit einem zufälligen Salt-Wert, da der von dir verwendete Salt-Wert ebenfalls bekannt ist.
 
Zurück