2010-08-29 5 views
8

Ich verwende Coldfusion und ich möchte ein zufälliges Salzfeld für meine Passwörter generieren. Ich habe mich gefragt, ob eine CreateUUID() - Funktion hier nützlich ist. Ich habe viele Beispiele gefunden, die eine separate Funktion verwenden, um die Salzkette zu erzeugen. Aber warum sollten Sie stattdessen rand() oder CreateUUID() Funktionen verwenden? Ich bin mir nicht sicher.Verwenden Sie eine CreateUUID() - Funktion als Salz eine gute Idee?

Ist es ein Overkill oder eine gute Idee? Oder sollte ich stattdessen rand() oder einen Zeitstempel verwenden?

+0

siehe auch: http://stackoverflow.com/questions/1194318/is-a-guid-a-good-salt-is-my-register-login-process-got-any-flaw – Kip

Antwort

6

Dies ist nicht eine gute Idee - CreateUUID Garantien Einzigartigkeit, nicht Zufälligkeit; Wenn Sie eine statistische Analyse von CreateUUID durchgeführt haben, wäre es höchstwahrscheinlich keine Verteilung, die für die Kryptographie als ausreichend zufällig angesehen wird, weil sie nicht explizit so entworfen wurde.

Zum Beispiel können die ersten n Bytes CreateUUID ist der MAC-Adresse - das heißt immer das gleiche für jedes Salz. Dadurch haben Sie die Entropie, die Ihre Salze haben, signifikant verringert, wodurch sie leichter zu knacken sind. Verwenden Sie Bibliotheken, um das gesamte Authentifizierungsszenario möglichst zu behandeln, und verwenden Sie andernfalls eine echte Funktion rand().

+2

Ich bin nicht sicher, dass alles, was Sie gesagt haben, würde der Fall, dass eine UUID ist ein schlechtes Salz. Einzigartigkeit für ein Salz ist eigentlich wichtiger als Zufälligkeit. Der springende Punkt eines Salzes ist, Rainbow Table Hacks zu verhindern. – Kip

+0

@Kip Wenn Sie das Salz für einen neuen Benutzer (oder für einen vorhandenen Benutzer) vorhersagen können, können Sie den Schlüsselraum der Dinge, die Sie Brute-Force haben, erheblich senken. Das ist schlecht –