¿Debo mantener todos los Tokens de Portador oAuth2 generados por UUIDv4 en mi base de datos para evitar un ataque?

1

Genero acceso auth2 y actualizo tokens y los almaceno en mi base de datos. Genero estos tokens utilizando UUID v4 y elimino los guiones. Solía eliminar los tokens después de que expiran, pero ahora los guardo todos porque pensé en algo que podría pasar.

¿Qué sucede si un atacante almacenó localmente todos los tokens de acceso que se generaron para él y siguió usando estos tokens de acceso una y otra vez para obtener autorización? Como yo, como administrador de la base de datos, estaba eliminando los tokens generados, la base de datos no tiene forma de saber que el token es único. Por lo tanto, si el algoritmo UUIDv4 genera un token de acceso para un usuario diferente y es una colisión (el mismo UUID que el generado anteriormente) y el atacante encontró esa colisión, podría ingresar al servicio ya que tiene los tokens que se han generado antes.

Mi pregunta es: ¿debo preocuparme por esto y guardar todas mis fichas en caso de colisión para verificar la singularidad o debo eliminar las fichas de acceso y actualización después de que caduquen y confiar en que UUIDv4 tiene suficiente entropía para evitar esto?

También me preocupa que si conservo todos los tokens, se va a inflar la base de datos, ya que los tokens de acceso caducan cada hora y se regeneran la próxima vez que el usuario realiza una acción.

Cualquier ayuda es apreciada!

    
pregunta programmerdave 13.05.2014 - 05:31
fuente

1 respuesta

1

Si está generando UUID de la versión 4 utilizando un RNG criptográficamente seguro, la probabilidad de que un token emitido previamente coincida con un token válido actualmente es exactamente la misma que la probabilidad de que cualquier token aleatorio creado por el atacante coincida con un token actual.

Esto significa que un atacante con tokens anteriores no tiene ninguna ventaja sobre ningún otro atacante, y no es necesario mantener los tokens caducados en la base de datos.

En lugar de eso, concéntrate en asegurarte de que estás usando un RNG realmente seguro, preferiblemente de una fuente física de aleatoriedad.

Una razón más útil para mantener los UUID caducados es detectar problemas con el RNG. Si alguna vez obtiene un UUID repetido, es posible que haya un error en su generación de números aleatorios, similar a la error de Debian OpenSSL (DSA-1571 -1) .

    
respondido por el Jonathan Giddy 13.05.2014 - 11:57
fuente

Lea otras preguntas en las etiquetas