Verschlüsselung der Passwörter bei phpBB3

Beschreibung: Erklärt wie in phpBB 3 die Passwörter verschlüsselt werden

Kategorie: Allgemeine Funktionen

Link zu diesem Artikel: Alles auswählen

[url=https://www.phpbb.de/kb/viewarticle?a=74]Knowledge Base - Verschlüsselung der Passwörter bei phpBB3[/url]

Wenn man in der Datenbank nach dem Passwort eines Benutzers sucht, so wird man nicht auf das Passwort im Klartext treffen, sondern vielmehr einen String der Art
$H$9ASHca2xFIq35cwWe4KQkTzDnFU6ZS/
Bei diesem Wert handelt es sich um einen generierten Hash-Wert des Passwortes (hier übrigens "phpBB 3.0").

Was ist ein Hash-Wert

Der Hash-Wert ist das Ergebnis einer Hash-Funktion, die man kurz als Einwegverschlüsselung bezeichnen kann. Aus dem Passwort wird dabei ein Wert generiert, der folgende Eigenschaften erfüllen sollte:
  • es ist nahezu unmöglich, den zu einem Hash-Wert gehörenden Ursprungstext zu finden.
  • es ist nahezu unmöglich, zwei Ursprungstexte zu finden, die den selben Hash-Wert produzieren.
Der Trick dabei ist folgender: der Ursprungstext wird so umgewandelt, dass ein neuer Wert entsteht. Die Wahrscheinlichkeit, dass ein anderer Ursprungstext den gleichen Wert erzeugt, ist nahezu Null, gleiches gilt für die Wahrscheinlichkeit, vom Ergebnis auf den Ursprungstext zurück schließen zu können.
Für einen Passwortschutz ist dies ausreichend: das Passwort wird nicht im Klartext gespeichert sondern nur der Hash-Wert. Damit kann das Passwort nicht im Klartext ausgelesen werden, auf der anderen Seite kann jedoch ein eingegebenes Passwort überprüft werden: ist der Hash-Wert des eingegebenen Passworts identisch mit dem in der Datenbank hinterlegten Hash-Werts, so dürften das ursprüngliche und das eingegebene Passwort identisch sein.

Bekannte Standards für Hash-Werte

Es gibt drei wesentliche Standards für Hash-Werte:
  • MD5: Dieses Verfahren wurde auch bei phpBB bis Version 2.0 verwendet. Allerdings hat MD5 eine Sicherheitslücke und ist somit (wenn auch mit viel Aufwand) knackbar. Aus diesem Grund werden in phpBB 3.0 neben dem einfachen md5 Hash weitere Sicherheitsmaßnahmen ergriffen um Rückschlüsse vom Hashwert auf das Passwort zu verhindern.
  • SHA: Ein neuerer Standard, der 160 bit-Werte erzeugt. Gilt derzeit in der aktuellen Variante (SHA-1) als sicherer als MD5, jedoch scheint es auch hier eine Kollisionsgefahr zu geben.
  • RIPEMD-160: Eine europäische Variante mit 160-bit Werten (auch höherer Werte sind denkbar). Gilt derzeit als sicher.
  • bcrypt: Dieses Verfahren basiert auf dem Blowfish-Algorithmus und wird seit phpBB 3.1 angewendet. Es gilt als sicherer als SHA-1 oder MD5, da es mit bcrypt aufwendiger ist, eine Brute-Force-Attacke durchzuführen (also den Hash-Wert zu knacken).
  • Argon2i: Dieses Verfahren wird seit phpBB 3.3.0 angewendet, wenn die PHP Version mind. 7.2.0 beträgt.
  • Argon2id: Dieses Verfahren wird seit phpBB 3.3.0 angewendet, wenn die PHP Version mind. 7.3.0 beträgt.
    Siehe dazu: Release_Highlights/3.3.0-b1
Eine Übersicht über diese und andere Hash-Funktionen gibt es auf Wikipedia. Wer es noch detaillierter haben will, kann unter https://dev.mysql.com/doc/refman/5.7/en ... tions.html (englisch, MySQL Referenz Verschlüsselung) oder https://www.dr-datenschutz.de/hashwerte ... -erklaert/ weitere Informationen zu Grundlagen von Hash-Funktionen und Algorithmen finden.

Knacken von Hash-Werten

Ein guter Hash-Wert gibt in der Regel keine Informationen über den Ursprungswert preis. Demnach sollte auch der Hash-Wert bei ähnlichen Folgen komplett unterschiedliche Ergebnisse hervorbringen. Der einzige Wert, einen möglichen Ursprungstext zu erhalten, ist ein Brute Force-Angriff: also jeden möglichen Ausgangswert verschlüsseln und prüfen, ob das Ergebnis mit dem vorhandenen Hash-Wert identisch ist.
Jedoch haben einige Hash-Funktionen eine Lücke: ist es möglich, einen ähnlichen Ursprungswert zu generieren, der zum gleichen Hash-Wert führt, so wird eine der wesentlichen Eigenschaften eines Hash-Wertes verletzt. Eine solche Schwäche besitzt z.B. MD5, sie beeinträchtigt die Sicherheit von MD5 nur teilweise, führt jedoch zu einer generellen Neigung, auf SHA/SHA-1 auszuweichen. (Wer es genau wissen will: md5_someday.pdf) Auch bei SHA-1 wird über ein entsprechendes Problem diskutiert (http://www.schneier.com/blog/archives/2 ... roken.html).

Unterstützung in PHP/MySQL

md5 wird von PHP und MySQL unterstützt. Ab PHP 4.3.0 bzw. MySQL 4.0.2 wird auch SHA-1 und ab PHP 5.3.0 wird bcrypt unterstützt.

Hash-Werte online ausrechnen

Ein Online-Rechner für MD5 und SHA-1 befindet sich unter http://pajhome.org.uk/crypt/md5/