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 ").