On 2017-6-14 10:07 , Michael wrote:

On 2017-06-13, at 4:20 PM, Joshua Root <[email protected]> wrote:

On 2017-6-14 08:18 , Christopher Jones wrote:
Had a look into this. The ROOT source never explicitly opens /dev/random in 
read/write mode. Only read only.
However, it also uses a number of external library calls, like std::rand(), and 
my best bet is one of these is doing it. As writing to /dev/random is allowed, 
to update the entropy pool, I don’t think this in itself is an issue.
So is it OK to add /dev/random to the allowed locations for the sandbox ?

Yes, that would be fine.

I had a look at the xnu source by the way, and writing to /dev/random on Darwin 
is indeed equivalent to writing to /dev/null; the kernel doesn't use the 
written data in any way.

- Josh

Odd. The manual states: "To add entropy to the random generation system, open 
/dev/random for writing and write data that you believe to be somehow random."

In the past, on linux systems, I would have a shutdown script that pulled 512 
bytes out of /dev/random, and saved it in a file; on restart, it would be put 
back into /dev/random. But that was when it was actually possible to modify 
/etc/rc and run stuff at startup.

So in Xnu, how do you ensure random data in the entropy pool? How do you seed 
the random numbers so that there's some ... randomness?

(rc.local is way too late to adjust system startup. And launchd/init wants to 
have some sort of hard-coded startup functions that you can't alter).

Best I can tell, the entropy pool gets 16 random bytes obtained in a hardware-specific manner very early in the boot process.

- Josh

Reply via email to