Das ist eine sehr gute Frage. Ich glaube nicht, dass es in der Eile angemessen berücksichtigt wurde, UUIDs überall zu verwenden. Ich habe keine solide Forschung gefunden.
Ein Vorschlag: Gehen Sie hier sehr vorsichtig vor und kennen Sie Ihre Kryptographie gut. Wenn Sie eine 128-Bit-UUID verwenden, gibt der Geburtstagseffekt an, dass eine Kollision wahrscheinlich ist, nachdem Sie ungefähr 2 ^ 64 Schlüssel generiert haben , vorausgesetzt, Sie haben 128 Bit Entropie in jedem Schlüssel .
Es ist tatsächlich ziemlich schwierig sicherzustellen, dass dies der Fall ist. Echte Zufälligkeit kann aus (a) radioaktivem Zerfall (b) zufälligem Hintergrundrauschen erzeugt werden, das häufig kontaminiert ist, sofern Sie nicht vorsichtig sind. (C) geeignet ausgewähltes elektronisches Rauschen, z. (Ich habe mit dem letzten gespielt, und es funktioniert wie ein Zauber, Übrigens).
Ich würde Aussagen wie "Ich habe dies seit einem Jahr nicht mehr gesehen" nicht vertrauen, es sei denn, der Benutzer hat etwas erzeugt, das sich 2 ^ 64 (dh ungefähr 10 ^ 19) Schlüsseln nähert, und sie alle gegeneinander überprüft, a nicht-triviale Übung.
Das Problem ist das hier. Angenommen, Sie haben nur 100 Entropiebits, wenn Sie Ihre Schlüssel mit allen anderen Schlüsseln vergleichen, die alle anderen in einem gemeinsamen Schlüsselraum generieren. Sie werden Kollisionen in ca. 2 ^ 50 sehen, dh. ungefähr 10 ^ 15 Schlüssel. Ihre Chancen, eine Kollision zu sehen, wenn Sie Ihre Datenbank mit nur 1000 Milliarden Schlüsseln bevölkert haben, sind weiterhin vernachlässigbar. Und wenn Sie dies nicht überprüfen, werden Sie später unerwartete Fehler erhalten, die sich in Ihre Datenbank mit der Größe von Peta-Zeilen einschleichen. Das könnte hart beißen.
Die Tatsache, dass es mehrere Ansätze zur Generierung solcher UUIDs gibt, dürfte für einen Moment Anlass zur Sorge geben. Wenn Sie feststellen, dass nur wenige Generatoren 'wirklich zufällige' Prozesse mit ausreichender Entropie für eine UUID des Typs 4 verwenden, sollten Sie sich übermäßig Sorgen machen, es sei denn, Sie haben den Entropieinhalt des Generators sorgfältig untersucht. (Die meisten Leute werden dies nicht tun oder wissen gar nicht, wie es geht; Sie könnten mit der DieHarder Suite beginnen). Verwechseln Sie die Erzeugung von Pseudozufallszahlen NICHT mit der Erzeugung echter Zufallszahlen.
Es ist wichtig, dass Sie erkennen, dass die Entropie, die Sie eingeben, die Entropie ist, die Sie haben. Wenn Sie den Schlüssel einfach durch Anwenden einer kryptografischen Funktion stören, ändert sich die Entropie nicht. Es ist möglicherweise nicht intuitiv ersichtlich, dass der Entropieinhalt der folgenden zwei Zeichenfolgen entspricht, wenn mein gesamter Raum die Ziffern 0 und 1 enthält, sofern dies die einzigen beiden Optionen sind: "Dies ist eine wirklich sehr komplexe Zeichenfolge. 293290729382832 * ! @@ # & ^% $$) ,. m} "und" Und JETZT FÜR ETWAS VOLLSTÄNDIG ANDERSES ". Es gibt nur noch zwei Möglichkeiten.
Zufälligkeit ist schwierig in Ordnung zu bringen, und einfach zu glauben, dass "Experten darauf geachtet haben, ist es daher in Ordnung" möglicherweise nicht ausreicht. Erfahrene Kryptografen (und es gibt nur wenige, die wirklich kompetent sind) geben als erste zu, dass sie oft falsch liegen. Wir vertrauten Heartbleed, DigiNotar, etc.
Ich denke, Paul Tomblin ist angemessen vorsichtig. Mein 2c.