C'est une très bonne question. Je ne crois pas qu'il ait été suffisamment pris en compte dans la hâte d'utiliser des UUID partout. Je n'ai trouvé aucune recherche solide.
Une suggestion: marchez très attentivement ici et connaissez bien votre cryptographie. Si vous utilisez un UUID de 128 bits, «l'effet d'anniversaire» nous indique qu'une collision surviendra probablement après la génération d'environ 2 à 64 clés, à condition que vous disposiez de 128 bits d'entropie dans chaque clé .
Il est en fait assez difficile de s’assurer que c’est le cas. Le véritable caractère aléatoire peut être généré à partir (a) de la désintégration radioactive (b) du bruit radioélectrique de fond aléatoire, souvent contaminé à moins d’être prudent (c) du bruit électronique choisi de manière appropriée, par exemple pris d’une diode Zener à polarisation inverse. (J'ai joué avec le dernier et ça marche à merveille, BTW).
Je ne me fierais pas à des énoncés tels que "Je ne l'ai pas vu depuis un an", à moins que l'utilisateur n'ait généré quelque chose s'approchant de 2 ^ 64 (c'est-à-dire environ 10 ^ 19) et les ait toutes vérifiées, un exercice non trivial.
Le problème est le suivant. Supposons que vous n’ayez que 100 bits d’entropie lorsque vous comparez vos clés à toutes les autres clés générées dans un espace de clés commun. Vous allez commencer à voir des collisions dans environ 2 ^ 50, à savoir. environ 10 ^ 15 touches. Vos chances de voir une collision si vous avez rempli votre base de données avec seulement 1 000 milliards de clés sont toujours négligeables. Et si vous ne le vérifiez pas, vous obtiendrez plus tard des erreurs inattendues qui se glissent dans votre base de données de la taille d'une rangée de péta. Cela pourrait mordre fort.
Le fait même qu'il existe de multiples approches pour générer de tels UUID devrait provoquer un spasme momentané d'inquiétude. Lorsque vous vous rendez compte que peu de générateurs utilisent des processus «réellement aléatoires» avec suffisamment d'entropie pour un UUID de type 4, vous devez être extrêmement inquiet à moins que vous n'ayez soigneusement examiné le contenu d'entropie du générateur. (La plupart des gens ne le feront pas ou ne sauront même pas comment; vous pourriez commencer par la suite DieHarder). Ne confondez pas la génération de nombres pseudo-aléatoires avec la génération réelle de nombres aléatoires.
Il est essentiel que vous réalisiez que l'entropie que vous avez entrée est celle que vous avez, et le simple fait de perturber la clé en appliquant une fonction cryptographique ne modifie pas l'entropie. Il n’est peut-être pas intuitivement évident que si tout mon espace comprend les chiffres 0 et 1, le contenu de l’entropie est identique à celui des deux chaînes suivantes, à condition qu’il s’agisse des deux seules options possibles: "C’est une chaîne vraiment très complexe. 293290729382832 * ! @@ # & ^% $$) ,. m} "et" Et maintenant, pour quelque chose de complètement différent ". Il n'y a toujours que deux options.
Le hasard est délicat à comprendre, et croire que "les experts l'ont examiné, donc c'est OK" peut ne pas suffire. Les cryptographes experts (et quelques-uns d'entre eux sont vraiment compétents) sont les premiers à admettre qu'ils se trompent souvent. Nous avons fait confiance à heartbleed, DigiNotar, etc.
Je pense que Paul Tomblin exerce la prudence appropriée. Mon 2c.