Commit Graph

17 Commits

Author SHA1 Message Date
thorpej dccc71f1fe Fix signed/unsigned comparison warnings. 2002-11-10 03:28:59 +00:00
dan 86d2054739 Account for 1 bit of entropy for each timestamp added during
initialisation. This is just as silly as the other entropy
estimations, but it at least allows us to see how many values have
been added.

spl protect rnd_get_entropy_counter call properly

Make rndpool start out doing rotations on the first pass - make the
LSFR's be less sensitive to stuck bits in poor initial inputs.

Add considerable comments regarding the mixing function.
2002-10-09 14:48:58 +00:00
dan 8c19166361 Comment initialisation conditions for rnd better, and don't uselessly
call rnd_init - instead assert that it has already been called
earlier.

change assert() -> KASSERT()
2002-10-08 12:12:56 +00:00
lukem 2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem 2bbe2de647 add RCSIDs 2001-11-13 05:32:49 +00:00
enami a1eef7d6a4 Cosmetic changes. 2001-09-09 00:32:52 +00:00
thorpej c8b4ac1b17 bcopy -> memcpy
bzero -> memset
2001-07-07 17:04:01 +00:00
sommerfeld 8e8ecc1bb5 portability fix: when rotating, don't do shifts >= wordsize. 2000-06-10 17:01:15 +00:00
sommerfeld 7497ddcce5 /dev/random code cleanups:
- Add comments about which spls apply to which data structures.
 - Consistently protect the rnd_samples queue (the queue of
unprocessed samples) at splhigh().
 - allow MD code to supply cpu_timestamp() and cpu_havetimestamp() for
an optional higher-resolution clock/roulette wheel source.
 - Collect more statistics on the pool state (keeping track of where
collected bits are going, in addition to where they came from).
 - Add RNDGETPOOLSTAT ioctl to get the additional stats.
 - Flush a few unused rndpool calls.
 - XXX XXX Cryptographic changes:
  - 32-bit rotate is:
	((val << rp->rotate) | (val >> (32 - rp->rotate))),
    not
	(val << rp->rotate) | (val >> rp->rotate)
    or
	((val << rp->rotate) | (val >> (31 - rp->rotate)))
  - Avoid overloading of rp->rotate and double-rotation of data
(which limited pool mixing somewhat; "rotate" never got above 7).
  - Be more paranoid (but probably not paranoid enough) about mixing
output back into the pool.  This is an improvement, but it needs
revisiting soon.

We should follow the spirit of some of the recommendations in
the Schneier PRNG papers:

http://www.counterpane.com/yarrow-notes.html
http://www.counterpane.com/pseudorandom_number.html

including:
 - two (or more) stage operation for better isolation between inputs
and outputs.
 - use of keyed one-way functions (probably better even than
invertible keyed functions like 3DES) at key points in the data flow,
so that breaking the PRNG is clearly as hard as breaking the function.
2000-06-05 23:42:34 +00:00
mrg 59a6c3d4e7 KNF anality. 1999-01-27 10:41:00 +00:00
explorer 91a483bd33 missed one constant '20' to RND_ENTROPY_THRESHOLD change 1998-05-27 01:29:13 +00:00
explorer 6036d56ba6 Move RND_ENTROPY_THRESHOLD to sys/rnd.h. Use sha1 rather than md5, and
release the first 96 bits of the hash directly rather than by folding.
The full 160 bit hash is mixed back into the entropy pool.  This keeps
64 bits secret to stir the pool with.
1998-05-27 00:59:14 +00:00
explorer c327761377 Don't pretned to maintain an internal "global" entropy pool. In-kernel
locking cannot be done with it, and that sort of thing probably should not
be shared anyway.
1997-10-20 15:03:19 +00:00
explorer be3b267427 Update notice to indicate the the IDEAS were derived from Ted's code, not the
code itself, per phone conversation with Ted
1997-10-13 19:59:26 +00:00
explorer c713bc804e update copyright to include the CORRECT spelling of Ted Ts'o's name 1997-10-13 18:34:29 +00:00
explorer 80513cb5ae o Make usage of /dev/random dependant on
pseudo-device   rnd                     # /dev/random and in-kernel generator
  in config files.

o Add declaration to all architectures.

o Clean up copyright message in rnd.c, rnd.h, and rndpool.c to include
  that this code is derived in part from Ted Tyso's linux code.
1997-10-13 00:46:08 +00:00
explorer 2021c11247 Addition of /dev/random and in-kernel random value generation.
Over the next few days (thank goodness for long weekends) I'll be hunting
down device drivers and adding hooks to gather entropy from many devices,
and adding the conf.c changes to the various port's device structs to
define major numbers for /dev/random and /dev/urandom.
1997-10-09 23:13:12 +00:00