Qual é o equivalente /dev/urandom no nível JVM do Windows

Qual é o equivalente /dev/urandom no nível JVM do Windows

Recentemente, tive problemas porque a falta de entropia e o bloqueio de IO causaram travamentos. No Linux, posso fazer o seguinte:

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

Qual é o equivalente no Windows? Estamos executando o aplicativo em servidores Linux e Windows, servidores Linux usando OpenJDK JRE e servidores Windows usando Oracle JRE.

Encontrei muitas sugestões sobre CryptGenRandom, mas como posso passar isso para o aplicativo no nível da JVM?

Responder1

Encontrei documentação em jre/lib/security/java.security que confirma isso. Aqui está a citação

Selecione a fonte primária de dados iniciais para as implementações SecureRandom "SHA1PRNG" e "NativePRNG" no provedor "Sun". (Outras implementações de SecureRandom também podem usar esta propriedade.)

Em sistemas do tipo Unix (por exemplo, Solaris/Linux/MacOS), as implementações "NativePRNG" e "SHA1PRNG" obtêm dados iniciais de arquivos de dispositivos especiais, como file:/dev/random.

Em sistemas Windows, especificar as URLs "file:/dev/random" ou "file:/dev/urandom" ativará o mecanismo de propagação nativo do Microsoft CryptoAPI para SHA1PRNG.

Por padrão, é feita uma tentativa de usar o dispositivo de coleta de entropia especificado pela propriedade de segurança "securerandom.source". Se ocorrer uma exceção ao acessar o URL especificado:

 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.

informação relacionada