Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Salz und Hash in Datenbank speichern?

  Alt 9. Okt 2013, 16:26
Stimmt, so wird es kein bisschen sicherer.

Was man allerdings machen kann, ist
Delphi-Quellcode:
password := 'blume1234';
salt := irgendwas möglichst zufälliges;

tmp := salt;
for i := 1 to n do
begin
  password := hash(tmp + password);
  tmp := hash(tmp) + password;
end;
// passwort und salt werden jetzt in der datenbank gespeichert.
Damit kann man den Zeitaufwand fürs Knacken um das n-fache steigern. Hoffe ich hab jetzt keinen Denkfehler in dem Code... bin kein Kryptoexperte. Aber auf jeden Fall gibt es so eine Methode... bcrypt und Co. arbeiten glaube ich auch so ähnlich.

@cookie22
Kommt ein Angreifer z.B. durch SQL-Injection an die Login-Tabelle (Username, Hash, Salt), kann er sein Dictionary entsprechend salzen...
Wenn der Hash aber durch weitere nebendaten (z.B. dem gehashten Salt) nochmals gesalzen wird, ist der Aufwand wesentlich höher.
Man müsste also genau wissen, WIE gesalzen wird. Ein einfaches Password+Salt ist meiner Meinung nach zu einfach.
Das wäre Security by Obscurity, nicht unbedingt die beste Strategie, aber als Ergänzung u.U. in Ordnung. Besser finde ich es da allerdings, einfach noch einen zweiten, globalen Salt außerhalb der Datenbank, z.B. in einer Config-Datei zu speichern. Dann verwendet man hash(globaler_salt + salt + passwort). So reicht es nicht, wenn der Angreifer nur Zugriff auf die Datenbank hat.
  Mit Zitat antworten Zitat