Mathematik zum Montag
bearbeitet von Mitleser> Es gibt nur `2^32 − 1 = 4294967295` Möglichkeiten mit denen der Pseudo Random Number Generator (PRNG) von PHP geseedet werden kann [^1]. Kenne ich den Seed, kann ich damit **jede** Ausgabe von `rand` vorhersagen. Dann ist es egal, ob du nur ein Zufallsbit erzeugst oder einen terrabyte großen Zufallswert. Ich kann den Wert mit dem Seed exakt reproduzieren.
Der Indianerversteher hat nach nach dem konkreten Angriffszenario gefragt.
Ist es nicht so, dass du dafür den seed() setzen musst bevor die salts erzeugt werden? Also Zugriff auf den Server brauchst? Dann hätte der Betreiber aber ganz andere Probleme, die mit dem Skript nichts zu tun haben.
> Als Probe kann man den Seed einfach mal manuell mit `srand(0)` setzen. Die ersten drei Aufrufe von `rand()` liefern dann die Pseudozufallszahlen: `1178568022` `1273124119` `1535857466`.
1. Siehe oben
2. Müssten nicht, um die Salts zu vorherzusagen, alle salts nacheinander erzeugt worden sein- und zwar ohne dass PHP neu gestartet wurde? Ist das bei dem Passwortscript nicht völlig unwahrscheinlich? Wer tippt den so schnell?
3. Ist es nicht so, dass der seed auch wieder ergänzt wird
> Du kommst mit `rand` nicht über `2^32 - 1` Möglichkeiten hinaus einen Salt zu bilden.
Meinst du jetzt die größte Zahl, die mit rand erzeugt werden kann?
In seinem Skript hat der Indianerversteher doch gezeigt wie er es macht. Er verwendet rand() pro Stelle des hashes, also mehrfach.
Meinst du damit aber nochmals die "4294967295 Möglichkeiten mit denen der Pseudo Random Number Generator (PRNG) von PHP geseedet werden kann", dann gelten ja wieder sehr spezielle Voraussetzungen bei denen ich einen Zusammenhang mit dem eigentlichen Skript verneinen würde.
Ist es nicht so, dass bei einem Lauf unter PHP ab 5.3 statt der auf rand() zurückgreifenden die originalen PHP-Funktionen password_hash() und password_verify() benutzt werden, dass also deine Einwände nur dann gelten könnten, wenn das System ohnehin unsicher ist?
Ich denke schon dass du "Beweise" für die angebliche Unsicherheit des Skriptes anbringst, die bei Hinsehen keine "Beweise" dafür sind.