¿Es necesario verificar que los ID de confirmación de mi pedido sean únicos?

0

Estoy generando confirmaciones de orden de 9 caracteres como K1YBFRG17, O1D15ZCOM, etc. y las estoy utilizando como números de confirmación de orden. Básicamente, solo se selecciona aleatoriamente de la cadena 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' nueve veces.

Aunque esto permite 36 ** 9 ID diferentes, que creo que son alrededor de cien cuatrillones, y la probabilidad de una repetición es infinitesimal, me pregunto cómo se vería esto desde un punto de vista de seguridad. ¿Es importante barrer la base de datos cada vez que se genera una nueva ID y asegurarse de que es única, incluso si no hay casi ninguna posibilidad?

    
pregunta temporary_user_name 23.11.2018 - 23:09
fuente

1 respuesta

2

La probabilidad de muestrear el mismo valor aleatorio dos veces desde una distribución uniforme depende de cuántos valores posibles hay y cuántas muestras ha registrado hasta el momento. Es poco probable que genere dos identificaciones idénticas en las primeras 100 identificaciones que genere, pero la probabilidad aumenta (de manera contraintuitiva) cuantas más identificaciones realice. Esta idea se conoce como el problema de cumpleaños .

Como regla general, debe esperar que si realiza una muestra (con reemplazo) de una distribución uniforme y discreta de tamaño n , debe esperar ver su primera repetición después de alrededor de sqrt(n) muestras. En su escenario, eso es alrededor de 10 millones de ID.

En la criptografía es común usar un RNG para evitar valores repetidos. Pero requiere números muy grandes. eso hace que 36 9 parezca insignificante. El tamaño mínimo de estos números es probablemente entre 192 y 256 bits. Esto supone que estamos usando una distribución uniforme y un verdadero generador de números aleatorios (o alguna aproximación de un TRNG).

    
respondido por el Future Security 23.11.2018 - 23:42
fuente

Lea otras preguntas en las etiquetas