tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: /dev/random is hot garbage



> Date: Sun, 21 Jul 2019 11:55:23 -0400
> From: Greg Troxel <gdt%lexort.com@localhost>
> 
> I don't think we should change /dev/random.   For a very long time, the
> notion is that the bits from /dev/random really are ok for keys, and
> there has been a notion that such bits are precious and you should be
> prepared to wait.  If you aren't generating a key, you shouldn't read
> from /dev/random.

This notion has been around for a long time, but it doesn't quite
match modern cryptography: once you have a 256-bit secret you can have
as many secret bits as you want.  What reading from /dev/random does
that _is_ useful in modern cryptography is that it serves as a barrier
to wait for that initial secret.  So there's no need to read more than
a single byte from it to wait.

(One can reject this premise of cryptography, and refuse to use it,
and reject TLS/SSH/&c. and everything else, but I'm not interested in
getting into those weeds.)

> So I think rust is wrong and should be fixed.

What Rust's vendor/rand library is doing is sensible _for some goal_:
it is waiting for the entropy pool to be seeded before generating
keys.  Applications may depend on it to do this _at least once_; the
trouble arises when applications block on a single byte over and over
again.

> It would also be reasonable to have a sysctl to allow /dev/random to
> return bytes anyway, like urandom would, and to turn this on for our xen
> builders, as a different workaround.  That's easy, and it doesn't break
> the way things are supposed to be for people that don't ask for it.

What's the advantage of this over using replacing /dev/random by a
symlink to /dev/urandom in the build system?

A symlink can be restricted to a chroot, while a sysctl knob would
affect the host outside the chroot.  The two would presumably require
essentially the same privileges to enact.


Home | Main Index | Thread Index | Old Index