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 13. Okt 2013
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Zacherl
Zacherl

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

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 17: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 17:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#22

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 19:14
Sagt mal, ist der Witz an einem Salt nicht, dass man auch andere Zeichen in das Passwort bringt, die man sonst üblicherweise nicht als Passwort benutzt? Ich spreche hier vor allem von nicht druckbaren Zeichen?

Wenn ich als Passwort "passwort" habe und als Salz dazu noch "asdf" mache, dann ist "passwortasdf" auch nicht sicherer als vorher. Wenn ich aber als Salz Zeichen nehme, die nicht mal druckbar sind, also chr(random(255)) sozusagen, dann habe ich einen Sicherheitsgewinn.

Oder?

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (12. Okt 2013 um 19:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 19:24
Nein. Wenn du md5('password') macht, bekommst du einen Hash. Nun probiere mal den Hash auf z.b. www.md5cracker.org zu finden. Voilla es dauert keine Sekunde, weil die Seite schon riesige Rainbowtables generiert hat.

Wenn du nun das Passwort mit einem Random String saltest, kannst du den reinen Hash sehr wahrscheinlich nicht in einer Rainbowtable finden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#24

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 19:55
Worauf bezieht sich das Nein?

Mir scheint du hast gerade genau das gleiche gesagt wie ich. Den MD5-Hash zu "passwortasdf" (6461455c74ae87806517b5f552fe988a) kann ich leicht finden, denn er beinhaltet lediglich alphabetische Zeichen. Den MD5-Hash zu "passwort\xe3\xa6\x94\xbf;\x9d\xb2Y\x1a\xe4" (gerade mit obiger Zeilen generieren lassen), werde ich so schnell vermutlich nirgends finden.

Daher meine Theorie: als Salt immer chr(random(255)) (und das so 10-20 Mal, am besten so, dass len(password) + len(salt) >= len(hash)) nehmen. Nicht einfach nur einen Benutzernamen oder sonstige nur alphanumerische Zeichen.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Namenloser

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

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 20:03
Das was Zacherl gesagt hat. Der Angreifer kennt den Salt ja, von daher ist es egal, welche Zeichen er enthält oder wie lang er ist (*). Der Angreifer bruteforced eh nur den Rest nach dem Salt.

Es geht nur darum, vorberechnete Rainbowtables zu verhindern.

(*) Sollte halt nur genug Entropie haben, dass man nicht die Salts schon die Rainbowtable miteinbeziehen kann.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

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

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 20:08
Trotzdem nein.

Es geht nicht darum ein Passwort sicherer zu machen. Das Salt ist einzig und allein zur Randomisierung da.

Hash(passwort + asdf) = 123;
Hash(passwort + sdfg) = 567;
Hash(passwort + dfgh) = 890;

Dreimal das gleiche Passwort ergibt drei verschiedene Checksummen. Das ist der Sinn der Salts.
Gruß
Cookie
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#27

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 20:15
Mh, versteh ich nicht.

Natürlich kennt der Angreifer den Salt. Aber eine Rainbow Table wird immer unpraktischer, je länger sie wird und je größer der Zeichensatz ist. Also ist es doch in meinem Interesse, den zu hashenden String möglichst lang zu machen und viele verschiedene Zeichen einzufügen. Oder wo liegt mein Denkfehler?

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Namenloser

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

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 20:22
Ja, so ist das schon richtig. Aber in deinem Post („Sagt mal, ist der Witz an einem Salt nicht, dass man auch andere Zeichen in das Passwort bringt, die man sonst üblicherweise nicht als Passwort benutzt? Ich spreche hier vor allem von nicht druckbaren Zeichen?“) klang das anders. Es ist auch egal, wie groß der Zeichenvorrat des Salts ist, du könntest auch nur Ziffern verwenden und ihn dafür länger machen...
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#29

AW: Salz und Hash in Datenbank speichern?

  Alt 12. Okt 2013, 20:31
Ja, so ist das schon richtig. Aber in deinem Post („Sagt mal, ist der Witz an einem Salt nicht, dass man auch andere Zeichen in das Passwort bringt, die man sonst üblicherweise nicht als Passwort benutzt? Ich spreche hier vor allem von nicht druckbaren Zeichen?“) klang das anders. Es ist auch egal, wie groß der Zeichenvorrat des Salts ist, du könntest auch nur Ziffern verwenden und ihn dafür länger machen...
Ah, okay. Dann hab ich das wohl irgendwie doof formuliert.

Momentan reicht es wohl, ihn einfach nur länger zu machen. Aber momentan reicht auch RSA 2048. Dennoch nutzen leute mehr. Also dachte ich, kann ich es auch einfach mit den Salts übertreiben. Zukunftssicherer, sozusagen.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

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

AW: Salz und Hash in Datenbank speichern?

  Alt 13. Okt 2013, 00:19
Mh, versteh ich nicht.

Natürlich kennt der Angreifer den Salt. Aber eine Rainbow Table wird immer unpraktischer, je länger sie wird und je größer der Zeichensatz ist. Also ist es doch in meinem Interesse, den zu hashenden String möglichst lang zu machen und viele verschiedene Zeichen einzufügen. Oder wo liegt mein Denkfehler?

Liebe Grüße,
Valentin
Es ist aber nicht die Aufgabe des Salts das zu hashende Passwort zu verlängern oder zu verbessern, es geht einzig und allein um die Randomisierung. Die Entropie sollte vom Passwort selbst kommen. Mit einem Salt machst du ein schlechtes Passwort nicht besser.
Gruß
Cookie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 22:57 Uhr.
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