AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Password-Hashes (SHA512)

Ein Thema von Codehunter · begonnen am 23. Feb 2015 · letzter Beitrag vom 21. Sep 2015
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 10:42
Hallo!

Bezieht sich eigentlich auf PHP, ist aber von allgemeiner Bedeutung, darum frag ich mal hier.

Da man ja MD5 nicht mehr verwenden soll, hashe ich Passwörter jetzt mit SHA512. Der String 'foo' plus Salt ergibt dann bei 5000 Runden z.B. folgenden Hash:
Code:
$6$rounds=5000$7IfaSuwiHawucad7$CiVrIv5dy15xaeiInz/IN2jRx82pqYU4yKy.lUtBeExzwsSRGPy8fjQiSN8lsjUjcIm08GzxSjJ.mj2z4qrN7/
Der Modus 6 (SHA512) und die 5000 Runden sind hardcoded.

Die Frage die ich mir stelle ist: Wenn der Modus 6 und die 5000 Runden ohnehin bekannt sind, sollte ich dann nicht lieber nur den eigentlichen Hash, also alles nach dem dritten "$" in der Datenbank speichern und später wieder hinzufügen beim Auswerten? Sonst gibt man doch im Fall eines Datenklaus unnötig Hinweise auf die Verschlüsselungsmethode. Oder mach ich jetzt einen Denkfehler?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 10:49
Irgendwo muss es ja bekannt sein und wenn es nicht in der Datenbank steht (was wurde benutzt) dann hast du ein Problem, wenn du das (was wird benutzt) änderst. Welches habe ich benutzt um diesen Hash zu erzeugen.

Das aktuelle (was wird benutzt) ist auch hinterlegt (im Skript, einer Config, ...) ... und damit auch potenziell gefährdet.

Ob du es nun in der Datenbank speicherst und damit auch wechseln kannst oder nicht bleibt vom Risiko also gleich.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 14:52
Ob du es nun in der Datenbank speicherst und damit auch wechseln kannst oder nicht bleibt vom Risiko also gleich.
Prinzipiell stimme ich dir zu. Nur meiner Erfahrung nach sind die PHP-Scripte doch ein Stück weit sicherer als die Daten in einer Datenbank. Zumindest wenn man ein paar Grundregeln der Webserver-Konfiguration beachtet.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 15:18
Code:
$6$rounds=5000$7IfaSuwiHawucad7$CiVrIv5dy15xaeiInz/IN2jRx82pqYU4yKy.lUtBeExzwsSRGPy8fjQiSN8lsjUjcIm08GzxSjJ.mj2z4qrN7/
Fehlt in diesem String nicht das Salz? Der Salt-Wert soll ja zusammen mit dem entstandenen Hashwert in der Datenbank gespeichert werden (https://de.wikipedia.org/wiki/Salt_%28Kryptologie%29)
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.123 Beiträge
 
Delphi 12 Athens
 
#5

AW: Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 15:30
Was ist rounds=5000 ?

Heißt es, daß das Passwort 5000 Mal hintereinander eingerechnet wurde?

Bei 512 Bit, reichen knapp 80 Buchstaben (mit effektiven 6 Bit pro Buchstabe) doch schon aus, um einen sicheren eindeutigen Wert zu bekommen, denn mehr Informationen passen eh nicht rein.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 17:38
Erst einmal: Das Salt sollte für jeden Hash unterschiedlich sein. Damit vermeidet man, dass ein Angreifer bei einer Wörterbuch-Attacke jedes Wort nur einmal Hashen muss und dann gegen die Datenbank vergleichen kann.

@himi: Die Runden erhöhen den Zeitaufwand des Angreifers.

Außerdem solltest du keine normale Hashfunktion verwenden, sondern eine Key-Derivation-Funktion wie bcrypt oder scrypt. Gründe findest du durch googeln genug

Wenn du dann mit einem zusätzlichem geheimen Salt oder einer zusätzlichen Verschlüsselung besser schlafen kannst, dann will ich dich nicht abhalten.

Geändert von BUG (23. Feb 2015 um 23:55 Uhr)
  Mit Zitat antworten Zitat
Namenloser

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

AW: Frage zu Password-Hashes (SHA512)

  Alt 23. Feb 2015, 20:00
Ich denke, es ist in Ordnung, diese Informationen dort im Klartext stehen zu haben. In der Kryptographie geht man ja eigentlich immer davon aus, dass der Angreifer den Algorithmus kennt.

Was ich allerdings dennoch nicht schlecht finde, ist zwei verschiedene Salts zu kombinieren: Einen individuellen per Datensatz, der in der Datenbank gespeichert wird, und einen globalen, der irgendwo im Quelltext steht. Dann muss der Angreifer beide Systeme kompromittieren (oder mehr rechnen).
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Frage zu Password-Hashes (SHA512)

  Alt 25. Feb 2015, 15:27
Fehlt in diesem String nicht das Salz? Der Salt-Wert soll ja zusammen mit dem entstandenen Hashwert in der Datenbank gespeichert werden (https://de.wikipedia.org/wiki/Salt_%28Kryptologie%29)
Ähm, nein, ist enthalten: $6$rounds=5000$7IfaSuwiHawucad7$CiVrIv5dy15xaeiInz/IN2jRx82pqYU4yKy.lUtBeExzwsSRGPy8fjQiSN8lsjUjcIm08 GzxSjJ.mj2z4qrN7/
Erst einmal: Das Salt sollte für jeden Hash unterschiedlich sein.
Danke für den Hinweis, hab ich entsprechend angepasst.
Was ich allerdings dennoch nicht schlecht finde, ist zwei verschiedene Salts zu kombinieren
Das würde allerdings nur gehen wenn ich mit der ganzen Hash-Prozedur zwei Durchläufe mache und den "User-Hash" im "System-Hash" unterbringe oder umgekehrt.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Namenloser

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

AW: Frage zu Password-Hashes (SHA512)

  Alt 25. Feb 2015, 15:38
Was ich allerdings dennoch nicht schlecht finde, ist zwei verschiedene Salts zu kombinieren
Das würde allerdings nur gehen wenn ich mit der ganzen Hash-Prozedur zwei Durchläufe mache und den "User-Hash" im "System-Hash" unterbringe oder umgekehrt.
Versteh ich nicht ganz. Statt hash(salt+password) machst du einfach hash(salt1+salt2+password) .
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Frage zu Password-Hashes (SHA512)

  Alt 26. Feb 2015, 10:45
Versteh ich nicht ganz. Statt hash(salt+password) machst du einfach hash(salt1+salt2+password) .
Das hat mit der Gegenprüfung zu tun. Wie gesagt, es dreht sich eigentlich um PHP und dort um die Funktion crypt().
Code:
//Verschlüsseln bzw. Hashen
$hash = crypt($plaintext_to_hash, $config_str_with_salt);

/Gegenprüfung
if ($hash == crypt($plaintext_to_check, $hash) {...}
Bei deiner Methode stünden wieder beide Salts im Klartext in der SQL-Datenbank, was du ja grade nicht wolltest. Denn der Hash muss den (Zufalls-)Salt enthalten, sonst wüsste das System beim späteren Vergleich ja nicht, welcher das war. Wenn einer der beiden Salts geheim sein soll, müsste man ihn vorher schon mal zum Hashen verwenden und das Ergebnis nochmal mit dem "öffentlichen" Salt.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 14:09 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