Kennwortverschlüsselung (Salt)
Was bedeutet Kennwortverschlüsselung?
Kennwörter werden in Moodle in verschlüsselter Form als MD5 Hash' gespeichert.
Salt ist eine Möglichkeit, Kennwörter noch sicherer zu machen, indem man zu einem Kennwort eine zufällige Zeichenkette hinzufügt, bevor der MD5 Hash berechnet wird. Je länger diese zufällige Zeichenkette ist, desto schwieriger wird ein Entschlüsseln via Hashlookup, desto sicherer sind die Kennwörter.
Wie funktioniert die Kennwortverschlüsselung in Moodle?
Vor Moodle 2.5 gab es einen Salt, der systemweit Gültigkeit hatte und mit dem alle Nutzerkennwörter verschlüsselt wurden. Ab Moodle 2.5 generiert Moodle automatisch einen Salt für jede/n einzelne/n Nutzer/in und verschlüsselt damit dessen/deren Kennwort. Das ist sicherer als das bisherige Verfahren. Das bedeutet, dass für Neuinstallationen von Moodle 2.5 die Salt-Variable in der Moodle-Konfigurationsdatei nicht mehr benötigt wird.
Kennwortverschlüsselung aktivieren
Um die Kennwortverschlüsselung zu aktivieren, müssen Sie folgende Zeile in der Moodle-Konfigurationsdatei config.php hinzufügen:
$CFG->passwordsaltmain = 'eine zufällige, möglichst lange Zeichenkette';
Diese zufällige Zeichenkette sollte ein Mix aus Buchstaben, Ziffern und Sonderzeichen sein. Sie können den Moodle Salt Generator verwenden, um eine hinreichende lange Zeichenkette zu generieren. Wir empfehlen eine Länge von mindestens 40 Zeichen.
Achtung: Aus Sicherheitsgründen kann man die Kennwortverschlüsselung ausschließlich in der Moodle-Konfigurationsdatei aktivieren und nicht direkt über Moodle im Browser.
Den Salt ändern
Wenn Sie aus irgend einem Grund den Salt ändern wollen, dann muss der alte Salt in der Moodle-Konfigurationsdatei aufgehoben und der neue Salt zusätzlich hinzugefügt werden.
passwordsaltmain
muss geändert werden in passwordsaltalt1
(Achtung: genau diese Schreibweise verwenden!) und der neue Wert hinzugefügt werden:
$CFG->passwordsaltalt1 = 'alte zufällige, möglichst lange Zeichenkette'; $CFG->passwordsaltmain = 'neue zufällige, möglichst lange Zeichenkette';
Wenn Sie den Salt ein zweites Mal ändern wollen, müssen alle alten Salts aufgehoben werden (zumindest so lange, bis jeder Nutzer sich mindestens einmal angemeldet hat). Verwenden Sie dazu $CFG->passwordsaltalt2, $CFG->passwordsaltalt3, etc.
um bis zu 20 alte Salts zu speichern.
Achtung: Wenn Sie den Salt ändern, ohne den alten Wert in der Datei config.php zu speichern, können Sie sich nicht mehr in Ihrer Moodle-Installation anmelden!
Kennwortverschlüsselung deaktivieren
Achtung: Davon wird dringend abgeraten! Wenn Sie die Kennwortverschlüsselung einmal aktiviert haben, sollten Sie diese nicht wieder deaktivieren.
Um die Kennwortverschlüsselung wieder zu deaktiveren, müssen Sie den Wert von $CFG->passwordsaltmain
löschen, auskommentieren oder auf die leere Zeichenkette setzen.
// Beispiel: auskommentieren /* $CFG->passwordsaltmain = ''; */
// Beispiel: auf leere Zeichenkette setzen $CFG->passwordsaltmain = '';
Zusätzlich müssen Sie den alten Salt in einen alt
-Wert verschieben (analog zur Saltänderung, siehe oben):
$CFG->passwordsaltalt1 = 'alte zufällige, möglichst lange Zeichenkette'; $CFG->passwordsaltmain = '';
Nutzer aus einer anderen Moodle-Installation importieren
Wenn Sie Nutzer aus einer anderen Moodle-Installation importieren, und diese Installation nutzt die Kennwortverschlüsselung, dann müssen Sie den Salt der anderen Moodle-Installation zur Konfigurationsdatei config.php Ihrer Moodle-Installation hinzufügen. Sie können bis zu 20 Salts anderer Moodle-Installation hinzufügen.
$CFG->passwordsaltalt1, $CFG->passwordsaltalt2, ... $CFG->passwordsaltalt20
Wie funktioniert die Kennwortverschlüsselung?
Wenn Moodle ein Kennwort prüft, wird im Code nach CFG->passwordsaltmain
gesucht. Wenn diese Variable gesetzt ist, hängt der Code das Kennwort an den Salt an und berechnet anschließend den MD5 Hash.
Wenn der MD5 Hash vom Kennwort ohne Salt validiert werden kann, dann wird angenommen, dass der Salt erstmalig gesetzt wurde, seit der Nutzer sich das letzte Mal angemeldet hat. Das Kennwort des Nutzers wird unter Verwendung des Salts aktualisiert. Das Kennwort wird also beim ersten Login des Nutzers nach Setzen des Salts in der Datei config.php verschlüsselt.'
Wenn der MD5 Hash vom Kennwort weder mit noch ohne Salt validiert werden kann, dann sucht der Code nach bis zu 20 alternativen Salts. Diese müssen wie oben beschrieben in der Datei config.php gespeichert werden.
Wenn sich ein Nutzer anmeldet, dessen Kennwort mit einem alten Salt verschlüsselt ist, dann funktioniert die Validisierung mit dem neuen Salt nicht. In diesem Fall werden die alternativen Salts nacheinander abgearbeitet und geprüft. Sobald ein Salt erreicht ist, bei dem die Validierung erfolgreich ist, stoppt die Abarbeitung, und das Kennwort wird unter Verwendung dieses zuletzt verwendeten Salts aktualisiert.