Número aleatorio para el Código de autenticación de mensajes HTTPS (MAC)

4

Recientemente, descubrí que Netscape usaba un algoritmo bastante simple para generar un número aleatorio para que el Código de autenticación de mensajes estableciera una conexión HTTPS (Netscape utilizó el tiempo, el número de identificación del proceso y el número de identificación del proceso principal).

Así que ahora me pregunto qué fuente de semilla utilizan los navegadores modernos para garantizar la verdadera aleatoriedad.

    
pregunta Nutel 19.09.2011 - 17:23
fuente

1 respuesta

8

Los navegadores modernos hacen lo que es inteligente: preguntan al sistema operativo. El sistema operativo interactúa con el hardware durante todo el día; Ese es su propósito principal. Por lo tanto, se encuentra en el lugar correcto para reunir aleatoriedad y mezclarlo con un generador de números aleatorios criptográficos adecuadamente seguro. En los sistemas Windows, esto está disponible para la aplicación a través de la función CryptGenRandom() . Linux tiene el archivo especial /dev/urandom para eso. Algunos lenguajes de programación ofrecen su propia API para eso (que se alimenta internamente en el sistema operativo), por ejemplo. java.security.SecureRandom para Java.

Las fuentes de hardware que el sistema operativo puede emplear incluyen principalmente el tiempo con precisión de ciclo en el que ocurren los eventos de hardware (por ejemplo, el nanosegundo preciso en el que presiona una tecla, o se recibe un paquete de red). Por lo tanto, el sistema operativo puede obtener una "aleatoriedad verdadera" suficiente "para alimentar un RNG, que luego producirá una buena aleatoriedad por el megabyte (" bueno "=" no se distingue de la aleatoriedad verdadera, hasta un factor de trabajo abrumador "=" bueno para criptografía ").

    
respondido por el Thomas Pornin 19.09.2011 - 18:00
fuente

Lea otras preguntas en las etiquetas