AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Salz und Hash in Datenbank speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

Salz und Hash in Datenbank speichern?

Ein Thema von mjustin · begonnen am 9. Okt 2013 · letzter Beitrag vom 12. Okt 2013
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

AW: Salz und Hash in Datenbank speichern?

  Alt 9. Okt 2013, 15:16
@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.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Salz und Hash in Datenbank speichern?

  Alt 9. Okt 2013, 15:20
Darum sollte man aber besser so etwas wie bcrypt nutzen. Das erhöht den Aufwant erheblich und wurde genau zu diesem Zweck entwickelt.
Gruß
Cookie

Geändert von cookie22 ( 9. Okt 2013 um 15:47 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Salz und Hash in Datenbank speichern?

  Alt 9. Okt 2013, 15:30
@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
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: Salz und Hash in Datenbank speichern?

  Alt 9. Okt 2013, 16:01
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.
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos
Online

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
512 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Salz und Hash in Datenbank speichern?

  Alt 11. Okt 2013, 20:06
Wie wäre es wenn man zwischen jedem char ein bisschen verschiedenes Salz streut?
Milos
  Mit Zitat antworten Zitat
Namenloser

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

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 01:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 02:14
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.
Gruß
Cookie
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 16:09
Seit PHP 5.5 gibt es sogar integrierte BCRYPT Funktionalität:
http://de3.php.net/manual/en/ref.password.php

Vorteile:
Einheitliches Format in der Datenbank bei Verwendung von password_hash(). Der Hash enthält sowohl eine Kennung des verwendeten Algorithmus (momentan nur BCRYPT unterstüzt), den Salt, als auch eventuelle Parameter (wie beispielsweise der Kostenfaktor beim BCRYPT). Will man später mal den Kostenfaktor erhöhen, oder den Algorithmus wechseln, muss man beim Login nur mit password_needs_rehash() prüfen, ob der Hash in der Datenbank noch passt und ggfls. updaten. password_verify() zieht sich alle benötigten Informationen aus dem hinterlegten String. Somit ist ein fließender Umstieg auf neue Algorithmen (oder höhere Aufwandklassen) möglich. Auch kann man ohne Probleme den Kostenfaktor für Admin Accounts höher ansetzen, als Den für normale User.

Weitere Referenzen:
http://blog.nic0.me/post/63180966453...per-look-under
https://gist.github.com/nikic/3707231
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (12. Okt 2013 um 16:13 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz