Klaus: Wie PWs u. Kontodaten speichern, wie mit Salts umgehen?

Beitrag lesen

Hallo,

Ich möchte bei meinem neuen Loginskript, die Passwörter in einer MySQL Datenbank schreiben.

Wie genau würdet ihr das tun?

Ich würde das so machen:
md5($pw.'dc237üsjü29');

Jedes Pw mit dem gleichen Salt der normal im Quelltext steht

Dies wäre eine HMAC und kein Hash mit Salt mehr.
Dies erhöht die Sicherheit erheblich, da ein Angreifer nun den Quelltext und die Db braucht.
Hat man nur eine SQL Injection, wie es diese dutzenfach im phpBB2 gab, und kann nur die User-Hashs auslesen, ist eine HMAC sehr effektiv.
Besser wäre eine salted HMAC, also sowas:
$salt.md5($pw.'dc237üsjü29'.$salt);

Den Schlüssel speicher ich in einer extra Tabelle, allerdings in der selben Datenbank.

Dies hilft nicht viel. Schafft ein Angreifer per SQL Injection an die DB zu gelangen, kann er die Kontodaten + das Passwort aus der extra Tabelle auslesen.

Du könntest die Tabellen für Blowfish berechnen und als PHP Code abspeichern und dann die Daten so abspeichern.

Alternativ könntest du noch das Userpasswort als Passwort verwenden, d.h. die Kontodaten sind mit dem Userpasswort abgespeichert.
Dafür musst du, wenn sich der User einlogt, sein PW in einer Session abspeichern um damit seine Daten entsprechend zu verschlüsseln/entschlüsseln..

Probleme hierbei:
_Du_ kommst nicht an die Kontodaten des Users. Für den aktiven Zahlungsverkehr müssten die Daten dann in einer anderen Table in Klartext (oder mit der obigen Methode) hinterlegt sein.

Wenn du dich dafür entscheiden solltest, solltest du aber nicht Blowfish wählen, sondern einen anderen schlanken Algo.
Auf der Seite wird auch XTEA angeboten, welcher sich gut eignen würde.

Ist dies sicher? Oder sollte ich dort lieber Hash+Salt oder eine andere Verschlüsselungsmethode verwenden?

Also auf der Seite wird auch ein Improved Hash Algorithm angeboten.
Dies ist eigentlich einer der besten Möglichkeiten. Du hast eine salt sowie eine Key strengthening Methode und scheinbar kann man auch eine HMAC verwenden.

Für die Kontodaten musst du abwegen. Optimal vom Schutz wäre wenn man das Userpasswort als Verschlüsselungskey verwendet, komfortabler wäre wenn du die berechneten P- und S-Boxen von Blowfish hardcoded als PHP Code hinterlegst.

MFG