Ha declarado que está interesado en considerar tanto las colisiones generadas por medios "adecuados" como los ataques que implican la generación maliciosa de GUID de manera incorrecta. Las respuestas a estas dos situaciones son extraordinariamente diferentes.
Si todos los GUID que ingresan a su sistema se generan por medios adecuados (es decir, se generan de acuerdo con RFC 4122, entonces puede esperar que todos sean únicos. Los GUID / UUID se diseñaron desde el principio para proporcionar la garantía específica. Un GUID / Los UUID generados en cualquier lugar serán únicos de todos los demás GUID / UUID sin requerir autoridad centralizada. Hay servidores de Oracle que generan millones de UUID por segundo en bases de datos distribuidas gigantes sin colisiones. Los GUID / UUID se crearon para esto .
Si le preocupa que los usuarios malintencionados elaboren GUID / UUID de forma incorrecta, tiene alguna preocupación. De esta respuesta con respecto a los UUIDs :
Sin embargo, los GUID generados al llamar a las funciones de generación de GUID de otras personas aún no son adecuados para su uso como tokens de autenticación no supuestamente, ya que ese no es el propósito de la función de generación de GUID, simplemente está explotando un efecto secundario.
Esa respuesta golpeó el clavo en la cabeza. Los GUID / UUID nunca fueron diseñados para ser indiscutibles. Fueron diseñados para ser únicos. Si el método que utiliza para generar esos GUID / UUID proporciona una indiscutibilidad, es un efecto secundario del proceso. Necesitarías investigar cómo funciona tu generador en particular.
Como habrás notado, los GUID v1 son particularmente adivinables. Su singularidad depende completamente de una dirección MAC y una marca de tiempo con incrementos de 100 ns. Esto es comparativamente fácil de falsificar. Si puede reducir el tiempo en el que se generó una sesión, digamos 1/10 de segundo, solo hay 1,000,000 valores posibles. La única otra protección que tiene es el campo de secuencia de reloj, que no pretende ser indiscutible, por lo que es probable que permanezca igual entre los reinicios de una computadora.
v4, por otro lado, está casi completamente definido por un número aleatorio de 122 bits. Estos son altamente incomprensibles, siempre que pueda confiar en el generador de números aleatorios subyacente. Sin embargo, recuerde que depende de un efecto secundario del proceso aquí. La calidad de los números aleatorios no garantiza que no se requiera para generar valores únicos, solo se requiere para que no se pueda evaluar.
Como tal, si depende de la aleatoriedad de sus ID de sesión como una función de seguridad, debe generarlas usted mismo, utilizando un generador criptográfico en el que confíe. No hay nada de malo en usar el formato GUID para estos números. Todavía tendrán más que suficiente entropía para lidiar con simples claves de sesión. El truco es que no debe confiar en que los generadores GUID incorporados brinden garantías que no son parte explícita del propósito de la generación de GUID.