Windows JVM 수준에서 /dev/urandom에 해당하는 것은 무엇입니까?

Windows JVM 수준에서 /dev/urandom에 해당하는 것은 무엇입니까?

최근에는 엔트로피 부족과 블로킹 rand IO로 인해 중단이 발생하여 문제가 발생했습니다. Linux에서는 다음을 수행할 수 있습니다.

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

Windows에서 이에 상응하는 것은 무엇입니까? 우리는 Linux 및 Windows 서버, OpenJDK JRE를 사용하는 Linux 서버, Oracle JRE를 사용하는 Windows 서버에서 앱을 실행하고 있습니다.

에 대한 많은 제안을 찾았 CryptGenRandom지만 이를 JVM 수준의 앱에 어떻게 전달할 수 있습니까?

답변1

jre/lib/security/java.security에서 이를 확인하는 문서를 찾았습니다. 여기 인용문이 있습니다

"Sun" 공급자의 "SHA1PRNG" 및 "NativePRNG" SecureRandom 구현에 대한 시드 데이터의 기본 소스를 선택합니다. (다른 SecureRandom 구현에서도 이 속성을 사용할 수 있습니다.)

Unix 계열 시스템(예: Solaris/Linux/MacOS)에서 "NativePRNG" 및 "SHA1PRNG" 구현은 file:/dev/random과 같은 특수 장치 파일에서 시드 데이터를 얻습니다.

Windows 시스템에서 "file:/dev/random" 또는 "file:/dev/urandom" URL을 지정하면 SHA1PRNG에 대한 기본 Microsoft CryptoAPI 시드 메커니즘이 활성화됩니다.

기본적으로 "securerandom.source" 보안 속성에 지정된 엔트로피 수집 장치를 사용하려고 시도됩니다. 지정된 URL에 액세스하는 동안 예외가 발생하는 경우:

 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.

관련 정보