它在random.c
的内核源代码中提到。 get_random_int
是“类似于 urandom,但目标是最小化熵池耗尽”。但是,get_random_int
在哪里(以及如何)与熵池交互?
现在,urandom
实际上调用了 extract_entropy_user
,但我没有在 get_random_int
中看到任何类似的东西。似乎 get_random_int
使用它自己的熵源(与键盘、鼠标和磁盘事件无关):
hash[0] += current->pid + jiffies + get_cycles();
并且一般不关心(也不更新)系统可用的熵状态?
get_random_int
如何耗尽熵池?这是在哪里更新的?我知道我遗漏了一些东西或者读错了源代码,因为当我执行一个程序时,我可以看到它是如何通过在 entropy_avail 上执行 cat 来耗尽熵池的。
我已经查看了 http://xorl.wordpress.com/2011/01/16/linux-kernel-aslr-implementation/但它似乎没有提到这是如何工作的。
最佳答案
据我所知,它不会直接耗尽熵池。它只是返回一个低(呃)质量的随机数。它取决于 ISN seq 生成(定期刷新)使用的 secret 哈希、它自己的 per-cpu 状态和 pid/time/cycles。
它与 urandom 的主要相似之处在于它在熵较低时不会阻塞。
关于linux - 受熵影响的 ASLR 在 Linux 上可用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15271589/