Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Salz und Hash in Datenbank speichern? (https://www.delphipraxis.net/176994-salz-und-hash-datenbank-speichern.html)

cookie22 9. Okt 2013 15:11

AW: Salz und Hash in Datenbank speichern?
 
Zitat:

Zitat von Morphie (Beitrag 1231425)
...Will man das System noch verbessern, kann man das Passwort mehrmals salzen (z.B. Salt + Password + md5(Salt))

Was soll das bringen? Ein Salt reicht.

user0815 9. Okt 2013 15:13

AW: Salz und Hash in Datenbank speichern?
 
Oder das von @BUG genannte 'PBKDF2' noch hinzufügen.

Morphie 9. Okt 2013 15:16

AW: Salz und Hash in Datenbank speichern?
 
@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.

cookie22 9. Okt 2013 15:20

AW: Salz und Hash in Datenbank speichern?
 
Darum sollte man aber besser so etwas wie bcrypt nutzen. Das erhöht den Aufwant erheblich und wurde genau zu diesem Zweck entwickelt.

Namenloser 9. Okt 2013 15:26

AW: Salz und Hash in Datenbank speichern?
 
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.

Zitat:

Zitat von Morphie (Beitrag 1231434)
@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.

generic 9. Okt 2013 15:30

AW: Salz und Hash in Datenbank speichern?
 
Zitat:

Zitat von Morphie (Beitrag 1231434)
@cookie22
Kommt ein Angreifer z.B. durch SQL-Injection an die Login-Tabelle (Username, Hash, Salt), kann er sein Dictionary entsprechend salzen...

Der Trick ist eine Hashfunktion zu wählen die viel Power benötigt.
Das stellt im Betrieb auch kein Problem dar, da ein Login meist nur einmalig passiert.

Mehr Power kann man z.B. erreichen, indem man den Hash 100 mal mit den Salt hasht.
Cracker-Bremse

BUG 9. Okt 2013 16:01

AW: Salz und Hash in Datenbank speichern?
 
Zitat:

Zitat von generic (Beitrag 1231443)
Der Trick ist eine Hashfunktion zu wählen die viel Power benötigt.

Also eben eine wie bcrypt oder scrypt. Es ist generell ein Fehler, so etwas selbst zu entwerfen.
Hier gibt es übrigens eine (imho gute) Übersicht über die Verfahren.

Troy Hunt hat das Problem mal am ASP.NET Membership Provider verdeutlicht. Lesenswert und sehr anschaulich.

milos 11. Okt 2013 20:06

AW: Salz und Hash in Datenbank speichern?
 
Wie wäre es wenn man zwischen jedem char ein bisschen verschiedenes Salz streut?

Namenloser 12. Okt 2013 01:26

AW: Salz und Hash in Datenbank speichern?
 
Zitat:

Zitat von milos (Beitrag 1231834)
Wie wäre es wenn man zwischen jedem char ein bisschen verschiedenes Salz streut?

Ob du das Salz vorne, hinten oder irgendwie zwischendrin einstreust, sollte bei einer kryptographischen Hashfunktion prinzipiell egal sein.

cookie22 12. Okt 2013 02:14

AW: Salz und Hash in Datenbank speichern?
 
Mir ist immer noch unbegreiflich, warum ihr da alle selbst rumbastelt, anstatt bcrypt, scrypt oder in Gottesnamen auck pbkdf2 zu benutzen. Diese Verfahren sind alle erprobt und sicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz