¿Cuál es el equivalente de /dev/urandom en el nivel JVM de Windows?

¿Cuál es el equivalente de /dev/urandom en el nivel JVM de Windows?

Recientemente, tuve problemas porque la falta de entropía y el bloqueo de rand IO provocaron bloqueos. En Linux, puedo hacer lo siguiente:

JAVA_OPTS=-Djava.security.egd=/dev/urandom ./myStartScript.sh

¿Cuál es el equivalente en Windows? Estamos ejecutando la aplicación en servidores Linux y Windows, servidores Linux que usan OpenJDK JRE y servidores Windows que usan Oracle JRE.

Encontré muchas sugerencias sobre CryptGenRandom, pero ¿cómo puedo pasarlas a la aplicación en el nivel JVM?

Respuesta1

Encontré documentación en jre/lib/security/java.security que confirma esto. Aquí está la cita

Seleccione la fuente principal de datos semilla para las implementaciones SecureRandom "SHA1PRNG" y "NativePRNG" en el proveedor "Sun". (Es posible que otras implementaciones de SecureRandom también utilicen esta propiedad).

En sistemas tipo Unix (por ejemplo, Solaris/Linux/MacOS), las implementaciones "NativePRNG" y "SHA1PRNG" obtienen datos iniciales de archivos de dispositivos especiales como file:/dev/random.

En sistemas Windows, especificar las URL "archivo:/dev/random" o "archivo:/dev/urandom" habilitará el mecanismo de inicialización nativo de Microsoft CryptoAPI para SHA1PRNG.

De forma predeterminada, se intenta utilizar el dispositivo de recopilación de entropía especificado por la propiedad de seguridad "securerandom.source". Si se produce una excepción al acceder a la URL especificada:

 SHA1PRNG:
     the traditional system/thread activity algorithm will be used.

 NativePRNG:
     a default value of /dev/random will be used.  If neither
     are available, the implementation will be disabled.
     "file" is the only currently supported protocol type.

información relacionada