Esta es una muy buena pregunta. No creo que se haya considerado adecuadamente en la prisa por usar UUID en todas partes. No he encontrado ninguna investigación sólida.
Una sugerencia: pise con mucho cuidado aquí y conozca bien su criptografía. Si usa un UUID de 128 bits, el 'efecto de cumpleaños' nos dice que es probable que se produzca una colisión después de haber generado aproximadamente 2 ^ 64 claves, siempre que tenga 128 bits de entropía en cada clave .
En realidad, es bastante difícil garantizar que este sea el caso. La verdadera aleatoriedad puede generarse a partir de (a) la desintegración radiactiva (b) el ruido de fondo aleatorio de la radio, a menudo contaminado a menos que tenga cuidado (c) ruido electrónico elegido adecuadamente, por ejemplo, tomado de un diodo Zener de polarización inversa. (He jugado con el último, y funciona de maravilla, por cierto).
No confiaría en pronunciamientos como "No he visto esto en un año de uso", a menos que el usuario haya generado algo que se acerque a las teclas 2 ^ 64 (es decir, aproximadamente 10 ^ 19), y las haya verificado entre sí, un ejercicio no trivial
El problema es este. Digamos que tiene solo 100 bits de entropía, cuando compara sus claves con todas las otras claves que todos los demás generan en un espacio de claves común. Comenzará a ver colisiones en aproximadamente 2 ^ 50 es decir. Cerca de 10 ^ 15 teclas. Sus posibilidades de ver una colisión si ha llenado su base de datos con solo 1000 mil millones de claves siguen siendo insignificantes. Y si no verifica, más tarde obtendrá errores inesperados que se arrastran en su base de datos del tamaño de una fila peta. Esto podría morder con fuerza.
El hecho mismo de que existen múltiples enfoques para generar tales UUID debería causar un espasmo momentáneo de preocupación. Cuando se da cuenta de que pocos generadores usan procesos 'verdaderamente aleatorios' con suficiente entropía para un UUID tipo 4, debe preocuparse en exceso a menos que haya examinado cuidadosamente el contenido de entropía del generador. (La mayoría de las personas no harán esto, ni siquiera sabrán cómo hacerlo; puede comenzar con la suite DieHarder). NO confunda la generación de números pseudoaleatorios con la verdadera generación de números aleatorios.
Es crítico que te des cuenta de que la entropía que ingresas es la entropía que tienes, y simplemente perturbar la clave aplicando una función criptográfica no altera la entropía. Puede no ser intuitivamente obvio que si todo mi espacio comprende los dígitos 0 y 1, el contenido de entropía es el mismo que el de las siguientes dos cadenas, siempre que sean las únicas dos opciones: "Esta es una cadena realmente muy compleja 293290729382832 * ! @@ # & ^% $$) ,. m} "y" Y AHORA POR ALGO COMPLETAMENTE DIFERENTE ". Todavía hay solo dos opciones.
La aleatoriedad es difícil de entender, y simplemente creer que "los expertos lo han mirado, por lo tanto está bien" puede no ser suficiente. Los criptógrafos expertos (y hay pocos de estos que son realmente competentes) son los primeros en admitir que a menudo se equivocan. Confiamos en heartbleed, DigiNotar, etc.
Creo que Paul Tomblin está ejerciendo la precaución adecuada. Mi 2c.