Mein Team hat einen serverseitigen Code (in Java) erhalten, der zufällige Token generiert, und ich habe eine Frage dazu -
Der Zweck dieser Token ist ziemlich sensibel - sie werden für Sitzungs-IDs, Links zum Zurücksetzen von Passwörtern usw. verwendet. Sie müssen also kryptografisch zufällig sein, um zu vermeiden, dass jemand sie errät oder brutal erzwingt. Das Token ist "lang", also 64 Bit lang.
Der Code verwendet derzeit die java.util.Random
Klasse, um diese Token zu generieren. In der Dokumentation zu heißt es java.util.Random
eindeutig:
Instanzen von java.util.Random sind nicht kryptografisch sicher. Verwenden Sie stattdessen SecureRandom, um einen kryptografisch sicheren Pseudozufallszahlengenerator für sicherheitsrelevante Anwendungen zu erhalten.
Der Code verwendet derzeit jedoch Folgendes java.util.Random
: Er instanziiert die java.security.SecureRandom
Klasse und verwendet dann die SecureRandom.nextLong()
Methode, um den Startwert zu erhalten, der zum Instanziieren der java.util.Random
Klasse verwendet wird. Anschließend java.util.Random.nextLong()
wird das Token mithilfe der Methode generiert.
Also meine Frage jetzt - Ist es immer noch unsicher, wenn man bedenkt, dass das java.util.Random
mit ausgesät wird java.security.SecureRandom
? Muss ich den Code so ändern, dass er java.security.SecureRandom
ausschließlich zum Generieren der Token verwendet wird?
Derzeit ist der Code-Seed der Random
einmalige Start
Random
beim Start einmal oder setzt er für jedes Token einen neuen? Hoffentlich ist das eine dumme Frage, aber ich dachte, ich würde es überprüfen.
long
oder double
Werte.