2009-09-09 15 views
7

Mi aplicación web funciona solo a través de SSL y establece una cookie de tiempo limitado para cada usuario después de que inicie sesión correctamente con un nombre de usuario y contraseña. Las mayores debilidades en el sistema son comprometer las cookies de un usuario existente. Y dos adivinando un GUID de ID de sesión.¿Los GUID generados en Windows 2003 son seguros para usar como ID de sesión?

sé de mecanismos para la primera debilidad, pero me pregunto cuánto necesito que preocuparse por la posibilidad de que un atacante adivinar un GUID ID de sesión basado en un GUID han obtenido previamente por la tala en una cuenta que se han fijado ¿arriba? El servidor web en este caso es Windows 2003 y los GUID se están generando con .Net 3.5.

Respuesta

6

Los GUID no están destinados a ser criptográficamente seguros, solo únicos. Gran parte del formato es predecible: una dirección MAC de 48 bits, una marca de tiempo que es algo predecible si sabes cómo se genera y otras pocas para lidiar con las colisiones de la marca de tiempo. Un atacante técnicamente sofisticado tiene muchas posibilidades de realizar ingeniería inversa de un GUID.

Realmente necesita un cryptographically secure PRNG para obtener una clave de sesión segura.

+0

El algoritmo de creación de GUID ha cambiado. Ya no usan direcciones MAC. Son solo números pseudoaleatorios de 128 bits. Y tienen muchos problemas de seguridad. –

+0

No hay una dirección MAC ni una marca de tiempo en .NET 3.5 guids. –

+1

¿Es un GUID .net 3.5 descrito por el proveedor como criptográficamente seguro? – ConcernedOfTunbridgeWells

0

.Net 3.5 Los GUID son prácticamente imposibles de adivinar. El número de GUID es enorme: hay más GUID que granos en arena en el universo, etc. No están estrictamente "garantizados" como únicos (aunque aparentemente SQL NEWID es único)

Si quiere probar esto por usted mismo, genere unos pocos cientos de millones y luego encuentre duplicados (no encontrará ninguno).

+1

Es cierto que los GUID son pseudoaleatorios, pero una computadora nunca puede generar valores aleatorios verdaderos. Yo niego que sean 'fáciles' de adivinar. ¿Puede explicar su explicación de que puede calcular todos los GUID siguientes? (ejemplo o fuente) –

Cuestiones relacionadas