【发布时间】:2022-01-07 16:04:44
【问题描述】:
最近我一直致力于在 CentOS-7 中使用 Java 8 和 Java 11 将安全随机非阻塞设置设置为默认设置。所以非阻塞配置是使用 securerandom.source=/dev/./urandom 或 -Djava.security.egd=file:/dev/./urandom。但是我发现使用/dev/./urandom 和/dev/urandom 显示使用不同的算法。
我编写了我的第一个 java 程序 myConfigOut 在运行时将其吐出,并使用它来进行以下测试:
import java.security.*;
import java.util.*;
public class myConfigOut {
public static void main(String[] argv) {
try {
// Trying to see which secureRandom provider we are using
System.out.println("Trying to output RNG source");
SecureRandom secureRandom = new SecureRandom();
System.out.println("Secure random source: " + Security.getProperty("securerandom.source"));
System.out.println("java.security.egd: " + System.getProperty("java.security.egd"));
System.out.println("Algorithm: " + secureRandom.getAlgorithm());
} finally {
System.out.println("I'm done here");
}
}
}
CentOS 7 + Java 11:
# java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
# java -Djava.security.egd=file:/dev/./urandom myConfigOut
Trying to output RNG source
Secure random source: file:/dev/random
java.security.egd: file:/dev/./urandom
Algorithm: DRBG
I'm done here
# java -Djava.security.egd=file:/dev/urandom myConfigOut
Trying to output RNG source
Secure random source: file:/dev/random
java.security.egd: file:/dev/urandom
Algorithm: NativePRNG
I'm done here
以上结果将算法从DRBG 切换到NativePRNG。
注意:DRBG 是 JDK9+ 的默认算法
CentOS 7 + Java 8
# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
# java -Djava.security.egd=file:/dev/./urandom myConfigOut
Trying to output RNG source
Secure random source: file:/dev/random
java.security.egd: file:/dev/./urandom
Algorithm: SHA1PRNG
I'm done here
# java -Djava.security.egd=file:/dev/urandom myConfigOut
Trying to output RNG source
Secure random source: file:/dev/random
java.security.egd: file:/dev/urandom
Algorithm: NativePRNG
I'm done here
在上面的测试算法中从SHA1PRNG切换到NativePRNG
所以我的问题是为什么在 CentOS 7 中从 /dev/./urandom 和 /dev/urandom 切换以及要配置为具有非阻塞随机性的文件会有所不同。
【问题讨论】: