De lo único es UUID?

¿Es seguro usar UUID para identificar algo (lo estoy usando para los archivos subidos al servidor)? Como yo lo entiendo, se basa en los números al azar. Sin embargo, a mí me parece que dado el tiempo suficiente, que finalmente se repita a sí misma, sólo por pura casualidad. Hay un sistema mejor o un patrón de algún tipo para aliviar este problema?

Para una lo suficientemente grande como valor de «tiempo suficiente» 🙂
«De lo único es UUID?» Único universal, creo. 😉
Y a menos que usted planea desarrollar en Venus, un GUID debería ser suficiente.
más detalles y generador de aquí: online uuid generador

OriginalEl autor Jason | 2009-07-20

9 Kommentare

  1. 325

    Muy seguro:

    el riesgo anual de una persona de ser golpeado por un meteorito es
    estima en una oportunidad en 17 mil millones de dólares, lo que significa que el
    la probabilidad es de aproximadamente 0.00000000006 (6 × 10-11), equivalente a las probabilidades de que
    de la creación de un par de decenas de billones de Uuid en un año y tener una
    duplicados. En otras palabras, sólo después de la generación de 1 mil millones de Uuid de cada
    segundo para los próximos 100 años, la probabilidad de crear sólo una
    duplicar sería de alrededor de 50%.

    Advertencia:

    Sin embargo, estas probabilidades sólo se mantiene cuando el Uuid se generan
    el uso de suficiente entropía. De lo contrario, la probabilidad de duplicados
    podría ser significativamente mayor, ya que el estadístico de dispersión que podría
    ser menor. Donde identificadores únicos son necesarios para distribuida
    las aplicaciones, por lo que los Uuid no chocan incluso cuando los datos de muchos
    los dispositivos de fusión, la aleatoriedad de las semillas y los generadores usados en
    cada dispositivo debe ser confiable para la vida de la aplicación. Donde
    esto no es factible, RFC4122 recomienda el uso de un espacio de nombres variante
    en su lugar.

    Fuente: El Aleatorio UUID probabilidad de duplicados de la sección de la Wikipedia artículo sobre identificadores únicos universales (el enlace lleva a una revisión de diciembre de 2016 antes de la edición reelaborada de la sección).

    Ver también la sección actual sobre el mismo tema en el mismo identificador único Universal artículo, Colisiones.

    Me gusta esta parte de la Wikipedia: sin Embargo, estas probabilidades sólo se mantiene cuando el Uuid se generan utilizando la suficiente entropía. De lo contrario, la probabilidad de duplicados podría ser significativamente mayor, ya que el estadístico de dispersión podría ser menor. Entonces, ¿cuál es la verdadera oportunidad de duplicar toma nota de esta frase. No podemos crear verdaderos números aleatorios en el ordenador, podemos?
    De hecho, una gran cantidad de trabajo ha ido en la búsqueda de formas para introducir tanto la entropía (real»aleatoriedad», supongo que se llamaría) como sea posible en número al azar Api. Consulte en.wikipedia.org/wiki/Entropy_%28computing%29
    Que, en realidad, de una mayor probabilidad de colisión de lo que me había imaginado. La paradoja de cumpleaños, supongo.
    Podría usted ELI5 el significado de la entropía?
    Puede usted confirmar que el uso de UUID estaría a salvo entre las ejecuciones de una aplicación? (por ejemplo, una secuencia de comandos de python)

    OriginalEl autor

  2. 127

    Si por «tiempo suficiente» significa que de 100 años y está creando a un ritmo de mil millones de un segundo, entonces sí, usted tiene un 50% de probabilidad de tener un choque después de 100 años.

    Pero sólo después de usar hasta 256 exabytes de almacenamiento para los Identificadores.
    Lo curioso es que, se podría generar 2 en fila, que son idénticos, por supuesto, en el alucinante niveles de la casualidad, la suerte y la intervención divina, sin embargo, a pesar de la enormidad de las probabilidades, de que todavía es posible! 😀 Sí, no va a suceder. simplemente decir que para la diversión de pensar en ese momento cuando se crea un duplicado! Captura de pantalla de vídeo!
    Es la singularidad puramente debido a la aleatoriedad? O hay otros factores? (por ejemplo, hora, ip, etc)
    Eso no es lo aleatorio significa. No significa «totalmente impredecible» – por lo general los que siguen algún tipo de distribución. Si le da la vuelta 10 monedas, la probabilidad de obtener 2 cabezas, seguido de 3 colas, seguido de 5 cabezas, es bastante bajo (2^-10, sobre 0.001). Es verdaderamente aleatorio, pero estamos absolutamente conocer el oportunidad de obtener un resultado en particular. Simplemente no podemos decir de antemano si se será a suceder.
    Sólo para explicar lo que esta implementación se hizo mal, se está utilizando una versión de 1 UUID, que se basa en una combinación de fecha y la dirección mac de su singularidad. Sin embargo, si usted generar Uuid lo suficientemente rápido, la marca de hora no ha incrementado aún. En este escenario, su UUID algoritmo de generación se supone que la pista de la última marca de tiempo utilizado y se incrementan en 1. Que fracasado en dar ese paso. Sin embargo, todos los de la versión 1 Uuid correctamente generados por el mismo equipo en un corto periodo de tiempo se presentan similitudes obvias, pero debe todavía ser único.

    OriginalEl autor rein

  3. 88

    Hay más de un tipo de UUID, por lo que «¿cómo de seguro» depende de que tipo (que el UUID de las especificaciones de la llamada «versión») está utilizando.

    • La versión 1 es el basado en el tiempo además de la dirección MAC de UUID. El de 128-bits contiene 48 bits para la dirección MAC de la tarjeta (que es el único asignado por el fabricante) y un 60-bit de reloj con una resolución de 100 nanosegundos. Que reloj se envuelve en 3603 A. D. por lo que estos Uuid son seguros al menos hasta entonces (a menos que necesite más de 10 millones de nuevos Uuid por segundo o alguien clones de tu tarjeta de red). Digo «al menos» porque el reloj empieza en 15 de octubre de 1582, por lo que tiene unos 400 años después de que el reloj envuelve antes de que incluso hay una pequeña posibilidad de duplicaciones.

    • Versión 4 es el número aleatorio UUID. Hay seis fijo de bits y el resto de los UUID es de 122-bits de aleatoriedad. Ver Wikipedia u otro tipo de análisis que describen como muy poco probable que un duplicado.

    • La versión 3 se utiliza MD5 y la Versión 5 utiliza SHA-1 para crear los 122-bits, en lugar de un aleatorio o pseudo-random number generator. Así que en términos de seguridad es como la Versión 4 de ser una estadística problema (siempre y cuando te asegures de lo que el algoritmo de síntesis es el procesamiento es siempre única).

    • Versión 2 es similar a la Versión 1, pero con un pequeño reloj así que va a envolver alrededor de mucho antes. Pero desde la Versión 2 Uuid son para la DCE, usted no debería estar usando estos.

    Así que para todos los problemas prácticos que son seguros. Si usted se siente incómodo con dejar que las probabilidades (por ejemplo, tu eres el tipo de persona preocupada sobre la tierra destruidos por un gran asteroide en toda su vida), sólo asegúrese de usar una Versión de 1 UUID y está garantizado para ser único (en el resto de su vida, a menos que usted planea vivir del pasado 3603 A. D.).

    Así que ¿por qué no todo el mundo simplemente utilizar la Versión 1 Uuid? Eso es porque la Versión 1 Uuid revelar la dirección MAC de la máquina que se ha generado y que puede ser predecible, dos cosas que podrían tener repercusiones en la seguridad de la aplicación utilizando los Uuid.

    El uso de una versión 1 UUID tiene serios problemas cuando son generados por el mismo servidor para muchas personas. La versión 4 UUID es mi defecto, ya que rápidamente puede escribir algo para generar uno en cualquier lenguaje o plataforma (como javascript).
    Bien explicado! pero es mucha exageración necesaria?
    Teoría, es el único asignado por el fabricante.
    Uno no tiene que generar 10 millones de versión 1 Uuid en un segundo encuentro con un duplicado; uno simplemente debe generar un lote de 16.384 Uuid en el lapso de una sola «marca» con el fin de desbordamiento del número de secuencia. He visto que esto suceda con una aplicación que se basó, ingenuamente, en una fuente de reloj que (1) había µs nivel de granularidad, y (2) no se garantiza a ser monótona (sistema de relojes no están). Tenga cuidado de cuyo UUID de generación de código que se utiliza, y se especial cuidado con el tiempo basado en el UUID de los generadores. Son difíciles de conseguir a la derecha, por lo que sujeto a pruebas de carga antes de usarlos.

    OriginalEl autor Hoylen

  4. 16

    La respuesta a esto depende en gran medida de la UUID de la versión.

    Muchos UUID generadores de utilizar una versión 4 número aleatorio. Sin embargo, muchos de estos Pseudo un Generador de números Aleatorios para generar ellos.

    Si un mal sembradas PRNG con un pequeño periodo se utiliza para generar el UUID yo diría que no es muy seguro en todo.

    Por lo tanto, es sólo tan seguro como de los algoritmos utilizados para generarla.

    Por otro lado, si usted sabe la respuesta a estas preguntas, entonces creo que la versión 4 uuid debe estar muy seguro de usar. De hecho lo estoy usando para identificar los bloques en una red de bloque del sistema de archivos y hasta el momento no han tenido una colisión.

    En mi caso, el PRNG estoy usando es una de mersenne twister y estoy siendo cuidadoso con la forma en que es cabeza de serie que es a partir de múltiples fuentes, incluyendo los de /dev/urandom. Mersenne twister tiene un período de 2^19937 − 1. Va a ser un muy, muy largo tiempo antes de ver una repetición de un uuid.

    OriginalEl autor Matt

  5. 14

    Citando Wikipedia:

    Por lo tanto, cualquier persona puede crear un UUID y el uso
    para identificar algo con
    una confianza razonable de que el
    identificador nunca será
    sin querer utilizado por cualquier persona para
    otra cosa

    Va a explicar en muy buen detalle en qué tan seguro es en realidad. Así que para responder a tu pregunta: Sí, es bastante seguro.

    OriginalEl autor Dave Vogt

  6. 8

    UUID de los esquemas generalmente utilizan no sólo un pseudo-elemento aleatorio, sino también la hora actual del sistema, y algún tipo de menudo-IDENTIFICADOR único de hardware si están disponibles, tales como una dirección MAC de red.

    El punto de usar UUID es que se confía en él para hacer un mejor trabajo de proporcionar un IDENTIFICADOR único que usted sería capaz de hacer. Este es el mismo razonamiento detrás de usar un 3er partido de la biblioteca de criptografía en lugar de rodar su propio. Hacerlo usted mismo puede ser más divertido, pero suele ser menos responsables para hacerlo.

    OriginalEl autor Parappa

  7. 5

    Estado haciendo por años. Nunca un problema.

    Me suele establecer mi base de datos que tiene una tabla que contiene todas las claves y las fechas de modificación y tal. He quedado en un problema de duplicado de las llaves de los siglos.

    El único inconveniente que tiene es cuando usted está escribiendo algunas consultas para encontrar algo de información rápidamente se están haciendo un montón de copiar y pegar de las teclas. Usted no tiene el corto y fácil de recordar identificadores de más.

    OriginalEl autor Posthuma

  8. 2

    No sé si esto es importante para usted, pero tenga en cuenta que Guid único global, pero subcadenas de Guid no.

    Tenga en cuenta que la referencia que enlaza aquí habla acerca de la Versión 1 Uuid (que toma la información sobre la generación de ordenador, etc. en el id). La mayoría de las otras Respuestas hablar de la Versión 4 (que son totalmente al azar). La anterior relacionado artículo de Wikipedia en.wikipedia.org/wiki/Universally_unique_identifier explica los diferentes tipos de Uuid.

    OriginalEl autor Grant Wagner

  9. 1

    Estoy de acuerdo con las otras respuestas. Los uuid son lo suficientemente seguras como para casi todos los propósitos prácticos1, y, sin duda, la suya.

    Pero supongamos que (hipotéticamente) que no lo son.

    Hay un sistema mejor o un patrón de algún tipo para aliviar este problema?

    Aquí hay un par de métodos:

    1. El uso de un mayor UUID. Por ejemplo, en lugar de los 128 bits aleatorios, el uso de 256 o 512 o … Cada poco que añadir a un tipo-4 estilo UUID reducirá la probabilidad de una colisión por medio, asumiendo que usted tiene una fuente confiable de la entropía2.

    2. Construir una centralizada o distribuida de servicio que genera Uuid y los registros de todos y cada uno alguna vez problemas. Cada vez que se genera una nueva, se comprueba que el UUID nunca ha sido emitido antes. Este servicio sería técnicamente sencillo de implementar (creo) si asumimos que las personas que ejecutan el servicio es absolutamente digno de confianza, incorruptible, etcétera. Por desgracia, no lo son … sobre todo cuando existe la posibilidad de que los gobiernos de interferencia. Así, este enfoque es, probablemente, poco práctico, y puede ser3 imposibles en el mundo real.


    1 – Si la singularidad de los Uuid determinado si los misiles nucleares tengo en marcha en su ciudad capital del país, muchos de sus compatriotas no ser convencido por «la probabilidad es extremadamente baja». De ahí mi «casi todos» los de calificación.

    2 – Y aquí una cuestión filosófica. Es algo verdaderamente aleatorios? ¿Cómo sabemos si no lo estaba? Es el universo como lo conocemos es una simulación? Hay un Dios que podría «ajustar» las leyes de la física para alterar el resultado?

    3 – Si alguien sabe de alguna trabajos de investigación sobre este problema, por favor deje un comentario.

    OriginalEl autor Stephen C

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein