Re: dev/random

From: Brooks Davis <brooks_at_one-eyed-alien.net>
Date: Tue, 13 Apr 2004 16:28:16 -0700
Mark and I are discussing some modifications to the rc files to improve
the situation, hopefully we'll have something basic ready to go in the
next 24-hrs or so.

On Tue, Apr 13, 2004 at 05:02:07PM -0400, Charles Swiger wrote:
> On Apr 13, 2004, at 3:10 PM, Brooks Davis wrote:
> >On Tue, Apr 13, 2004 at 02:49:14PM -0400, Charles Swiger wrote:
> >>Why not set $entropy_dir in rc.conf and kickstart /dev/random using
> >>much higher quality entropy available when the machine was shutdown
> >>last?
> >
> >You don't get to assume the existance of rc.conf until after
> >initdiskless runs.
> 
> And Mark Murray referred me to diskless workstations as well.  OK.
> 
> From what I remember, one used BOOTP and TFTPD to provide a standalone 
> executable (for an X11 terminal, say) or a kernel, and the latter would 
> then perform an NFS mount to obtain a root filesystem and an init 
> program to run, which would then call the RC mechanism to mount more 
> filesystems and do whatever else is needed to boot the system.

We are also working to better support ro-root systems which adds another
complication.  Recent commits to initdiskless by luigi and phk have made
improvements here.

> [ By the way, I did not find documentation in rc.8 which mentions 
> initdiskless as a special case, but perhaps it might be worth referring 
> to diskless.8 from the former manpage. ]
> 
> Anyway, if /etc/rc.d/initdiskless is available, you've got a root 
> filesystem to read from, so can't one nudge the diskless client's 
> /dev/random using entropy from a file stored on it?

You can use a file At this point, but what file should you use?  You
almost certaintly don't have a /var and there's a good change / isn't
writable at all and starting all your hosts with the same entropy is
definatly a bad idea.  You also may not have anything in /etc other then
what is provided by make distribution.

> Or perhaps the /usr/share/examples/diskless/clone_root script could 
> call mknod to create a clone of the server's /dev/random device under 
> the diskless root directory, to provide different "real" entropy for 
> each diskless client?

I'm not sure what you're getting at here. /dev is devfs even in single
user so mknod isn't applicable.  It's not optional.  In any case,
clone_root is totally inappropriate to many diskless setups so I never
use it and I'm pretty sure the CF people don't either.  There are lots
of ways to make a configuration that uses initdiskless.  I'd hate to
make clone_roots too magic.

> Both of these suggestions are made under the assumption that one can't 
> simply make /dev/random readable without being nudged, and one cannot 
> utilize rcNG dependencies to start /etc/rc.d/random properly (ie, 
> before something want to use /dev/random) for the reason that Brooks 
> mentioned above.  :-)

To be clear, the problem is not that you can't open /dev/random for
read, it's that read() blocks until sufficent entropy arrives.  It's
worth noting that the quality of entropy needed in initdiskless is
pretty minimal.  rand() would actually be fine here other then the fact
that use of rand should not be encouraged.

-- Brooks

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4

Received on Tue Apr 13 2004 - 14:28:45 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:51 UTC