Da ich schon öfters gefragt wurde, ob man in einem MyBB Forum einfach die Passwörter der User sehen kann, wollte ich das Thema heute mal erklären und klar stellen.
Grundsätzlich kann man die Frage mit Ja und mit Nein beantworten, denn die Passwörter stehen verschlüsselt in der Datenbank!
Und genau zu dieser Art der Verschlüsselung wollte ich euch etwas erzählen.
Die Verschlüsselung sieht folgendermaßen aus:
md5(md5($salt).md5($passwort));
Erst mal etwas zu Message-Digest Algorithm 5 (MD5)
MD5 ist eine kryptografische Hashfunktion, dass heißt man kann einen Wortschnipsel wie zum Beispiel ein Passwort verschlüsseln, allerdings nicht mehr entschlüsseln. Leider gelingt es immer wieder jemanden solche Hash Algorithmen zu entschlüsseln.
Und was ist jetzt dieses „$salt“?
Dieser Salt ist ein zufällig generierter Schlüssel aus Buchstaben und Zahlen und wird für jeden User individuell erzeugt und gespeichert.
Was passiert, wenn es doch jemanden gelingt diesen MD5 Hash zu entschlüsseln?
MD5 gilt aktuell als eine der sichersten Hashalgorithmen der Welt, außerdem wird das Passwort ja durch insgesamt 3 Dinge geschützt:
md5(md5($salt).md5($passwort));
Das Passwort wird als Einzelnes verschlüsselt und könnt dann zum Beispiel so aussehen:
md5("MeinPasswort") = 1de0d5e5c412890d4071af8ecd8c8ad7
md5(md5($salt).md5($passwort));
Als nächstes unseren verschlüsselten Zufalls-Schnipsel, der hier zum Beispiel so aussieht:
md5("dfi2IJo") = fbb5910f260fb3144373e3e65a8f27d3
- Da momentan ja die Verwendung des „$Salt“ („dfi2IJo“) total überflüssig wäre packen wir nun alles zusammen, das sieht dann so aus:
md5("fbb5910f260fb3144373e3e65a8f27d3"."1de0d5e5c412890d4071af8ecd8c8ad7") = 6e73a0c888f89f9395f4ed34e0f991c9
Man stellt also fest das man einen Hash mit 32 Stellen entschlüsseln müsste und einen 64 Stelligen Hashcode zu bekommen.
Zumal zunächst bei einsicht in die Datenbank ledigleich 2 Teile für den Admin sichtbar sind:
- Das komplett verschlüsselte Passwort mit „$salt“ = 6e73a0c888f89f9395f4ed34e0f991c9
- Und den „$salt“ = dfi2IJo
Eine Entschlüsselung nun auf das Passwort des Users ist schlankweg unmöglich nach aktuellem Stand.
Vor kurzem ist es jemanden gelungen kürzere Passwörter, die nur einmal Verschlüsselt wurden zu entschlüsseln, indem er diese 32 Stelligen Hashes reproduziert, das wird aber wie gesagt duch die Verkettung des Saltes und den mehrfachen MD5 Verschlüsselungen verhindert.
Das Fazit ist also: Ruhig bleiben und vertrauen, mal eben in der Datenbank das Passwort nachgucken geht nicht!
Im Übrigen wird das Passwort beim Login einfach verschlüsselt und in seiner verschlüsselten Form mit dem in der Datenbank verglichen!