¿Es seguro confiar en los UUID para la privacidad?

8

Estoy cargando archivos en S3, donde el nombre de archivo es un UUID. Todos los archivos cargados son de lectura / escritura pública, sin embargo, estos archivos se consideran privados para los usuarios.

¿Es posible que alguien adivine un UUID o pruebe aleatoriamente varias combinaciones para acceder a algunos de estos archivos?

¿Hay una mejor manera de proteger los archivos S3?

    
pregunta Snowman 16.03.2014 - 02:23
fuente

2 respuestas

9
Los UUID generados después de RFC 4122 vienen en varias “versiones”; en un UUID de la forma xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (en hexadecimal), luego:

  • Si 8 ≤ N ≤ b y M = 1 o M = 2, el UUID identifica la máquina que lo generó y la hora en que se generó.
  • Si 8 ≤ N ≤ b y M = 3 o M = 5, el UUID se genera de manera determinista utilizando una función criptográfica hash.
  • Si 8 ≤ N ≤ b y M = 4, el UUID es aleatorio (con 6 bits fijos y 122 bits aleatorios).

Si el UUID no cumple con ninguna de estas restricciones, no se generó de acuerdo con RFC 4122. Pero incluso si se cumplen las restricciones, esto no garantiza que se siguió la RFC, o que el generador aleatorio fue una buena.

No sé qué hace S3 para los UUID.

Incluso si los UUID son apropiadamente aleatorios, lo que haría que la URL no se pueda adivinar, proteger el acceso a un recurso con solo una URL es una mala idea. Las URL tienden a filtrarse de muchas maneras: compartidas en correos electrónicos o chat, ubicadas en historiales de navegadores y listas de marcadores, copiadas accidentalmente o, lo que es peor, se dejan como un enlace en una página que el autor quería mantener en privado pero que no tenía autenticación fue indexado por Google.

Si desea proteger el acceso a un recurso en la web, no confíe en que la URL se mantenga secreta. Añadir un mecanismo de autenticación. Incluso la autenticación de contraseña antigua es una gran mejora en una URL indiscutible: los navegadores e incluso las personas saben que no deberían compartir contraseñas, mientras que las URL son de conocimiento público.

    
respondido por el Gilles 16.03.2014 - 17:12
fuente
3

La solución correcta al 100%, obviamente, sería no hacer que los archivos sean legibles y escribibles públicamente. Esto está fuera de su control aquí, pero tampoco es estrictamente necesario.

El servidor está configurado de manera similar a cómo se configuraron las carpetas incoming en los servidores FTP durante 30-40 años: puede cd en ese directorio y crear / escribir archivos, y leer cualquier archivo que puede abrir, pero no puede enumerar los contenidos del directorio (y, opcionalmente, puede crear y escribir cualquier archivo, pero no sobrescribir uno existente).

Suponiendo que los nombres de los archivos no se pueden adivinar, esto es seguro en la medida en que no se puede hacer mucho sin saber el nombre de un archivo. Un UUID tiene 128 bits, pero puede usar cualquier otro nombre de archivo aleatorio del mismo o mayor tamaño (o un nombre aleatorio de 160 bits, si cree que 128 bits no son suficientes). Si bien en teoría es posible adivinar un número aleatorio de 128 bits (e incluso existe la posibilidad de que dos nombres de archivos colisionen por accidente), las posibilidades de que esto ocurra son astrónimamente pequeñas dado el tiempo que lleva acceder a un archivo. a través de la red (lo que limita gravemente la cantidad de operaciones por segundo que puede hacer). Esto es muy diferente de, por ejemplo, Alguien forzó brutalmente un hash de una base de datos de contraseñas robadas, donde el atacante normalmente intentaría unos cientos de millones de hashes por segundo.
Probablemente es más probable que mueras por ser golpeado por un meteoro que por ver esto en tu vida.

Además, un rápido Google dice que S3 admite carpetas, por lo que si está en modo ultra-paranoico, puede crear una carpeta con un nombre UUID y colocar sus archivos con nombre UUID allí. Alguien tendría que adivinar un número de 256 bits correctamente para acceder a un archivo, puede estar bastante seguro de que esto no sucederá durante su vida.

    
respondido por el Damon 16.03.2014 - 13:14
fuente

Lea otras preguntas en las etiquetas