【发布时间】:2010-09-12 07:44:18
【问题描述】:
问题不在于随机性本身(我们有 rand),而在于加密安全的 PRNG。什么可以在 Linux 或理想的 POSIX 上使用? NSS有什么有用的吗?
澄清:我知道 /dev/random,但它可能会用完熵池。而且我不确定 /dev/urandom 是否保证在密码学上是安全的。
【问题讨论】:
标签: linux security random cryptography
问题不在于随机性本身(我们有 rand),而在于加密安全的 PRNG。什么可以在 Linux 或理想的 POSIX 上使用? NSS有什么有用的吗?
澄清:我知道 /dev/random,但它可能会用完熵池。而且我不确定 /dev/urandom 是否保证在密码学上是安全的。
【问题讨论】:
标签: linux security random cryptography
/dev/random 设备旨在成为加密安全位的来源。
【讨论】:
使用/dev/random(需要用户输入,例如鼠标移动)或/dev/urandom。后者有一个熵池,除非池为空,否则不需要任何用户输入。
你可以像这样从池中读取:
char buf[100];
FILE *fp;
if (fp = fopen("/dev/urandom", "r")) {
fread(&buf, sizeof(char), 100, fp);
fclose(fp);
}
或者类似的东西。
【讨论】:
来自Wikipedia(我的斜体):
/dev/random 的对应物是 /dev/urandom(“解锁”随机源),它重用内部池以产生更多伪随机位。这意味着调用不会阻塞,但输出包含的熵可能少于从 /dev/random 读取的相应信息。 意图是作为一个加密安全的伪随机数生成器。这可能用于不太安全的应用程序。
【讨论】: