freebsd-dev/libexec
Mark Murray 10cb24248a This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random.
This code has had an extensive rewrite and a good series of reviews, both by the author and other parties. This means a lot of code has been simplified. Pluggable structures for high-rate entropy generators are available, and it is most definitely not the case that /dev/random can be driven by only a hardware souce any more. This has been designed out of the device. Hardware sources are stirred into the CSPRNG (Yarrow, Fortuna) like any other entropy source. Pluggable modules may be written by third parties for additional sources.

The harvesting structures and consequently the locking have been simplified. Entropy harvesting is done in a more general way (the documentation for this will follow). There is some GREAT entropy to be had in the UMA allocator, but it is disabled for now as messing with that is likely to annoy many people.

The venerable (but effective) Yarrow algorithm, which is no longer supported by its authors now has an alternative, Fortuna. For now, Yarrow is retained as the default algorithm, but this may be changed using a kernel option. It is intended to make Fortuna the default algorithm for 11.0. Interested parties are encouraged to read ISBN 978-0-470-47424-2 "Cryptography Engineering" By Ferguson, Schneier and Kohno for Fortuna's gory details. Heck, read it anyway.

Many thanks to Arthur Mesh who did early grunt work, and who got caught in the crossfire rather more than he deserved to.

My thanks also to folks who helped me thresh this out on whiteboards and in the odd "Hallway track", or otherwise.

My Nomex pants are on. Let the feedback commence!

Reviewed by:	trasz,des(partial),imp(partial?),rwatson(partial?)
Approved by:	so(des)
2014-10-30 21:21:53 +00:00
..
atf Rework privatelib/internallib 2014-08-06 22:17:26 +00:00
atrun Fix releasing the lock in the parent atrun process after the queue 2014-04-17 16:00:26 +00:00
bootpd use .Mt to mark up email addresses consistently (part2) 2014-06-20 09:57:27 +00:00
casper NO_MAN= has been deprecated in favor of MAN= for some time, go ahead 2014-04-13 05:21:56 +00:00
comsat Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
dma Lower warning level when built with gcc 2014-02-21 14:14:48 +00:00
dma-mbox-create NO_MAN= has been deprecated in favor of MAN= for some time, go ahead 2014-04-13 05:21:56 +00:00
fingerd Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
ftpd Use src.opts.mk in preference to bsd.own.mk except where we need stuff 2014-05-06 04:22:01 +00:00
getty Remove LOG_ODELAY because it does nothing. 2014-08-17 19:06:26 +00:00
hyperv Import HyperV Key-Value Pair (KVP) driver and daemon code by Microsoft, 2014-09-13 02:15:31 +00:00
mail.local Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
mknetid use .Mt to mark up email addresses consistently (part2) 2014-06-20 09:57:27 +00:00
pppoed use .Mt to mark up email addresses consistently (part2) 2014-06-20 09:57:27 +00:00
rbootd Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
revnetgroup use .Mt to mark up email addresses consistently (part2) 2014-06-20 09:57:27 +00:00
rlogind Use src.opts.mk in preference to bsd.own.mk except where we need stuff 2014-05-06 04:22:01 +00:00
rpc.rquotad The NFS quota-reporting RPC uses 32-bit sized fields. We approximate 2010-04-25 00:05:51 +00:00
rpc.rstatd Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
rpc.rusersd Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
rpc.rwalld Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
rpc.sprayd Make WARNS=6 the default for libexec/. 2010-01-02 09:50:19 +00:00
rshd Remove LOG_ODELAY because it does nothing. 2014-08-17 19:06:26 +00:00
rtld-aout More -Wmissing-variable-declarations fixes. 2012-10-19 14:49:42 +00:00
rtld-elf Always return pathname in dl_iterate_phdr's dlpi_name, as Linux does 2014-10-09 20:39:18 +00:00
save-entropy This is the much-discussed major upgrade to the random(4) device, known to you all as /dev/random. 2014-10-30 21:21:53 +00:00
smrsh Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
talkd Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
tcpd Use src.opts.mk in preference to bsd.own.mk except where we need stuff 2014-05-06 04:22:01 +00:00
telnetd Revert r267233 for now. PIE support needs to be reworked. 2014-08-19 15:04:32 +00:00
tests Build and install the atf tests. 2013-11-08 14:33:41 +00:00
tftp-proxy Make WARNS=6 the default for libexec/. 2010-01-02 09:50:19 +00:00
tftpd Remove the 3rd clause ("advertising clause") of the BSD license as 2014-02-17 22:27:32 +00:00
ulog-helper NO_MAN= has been deprecated in favor of MAN= for some time, go ahead 2014-04-13 05:21:56 +00:00
ypxfr use .Mt to mark up email addresses consistently (part2) 2014-06-20 09:57:27 +00:00
Makefile HYPERV isn't available on all architectures, but just on by default 2014-10-16 00:33:06 +00:00
Makefile.amd64 HYPERV isn't available on all architectures, but just on by default 2014-10-16 00:33:06 +00:00
Makefile.i386 HYPERV isn't available on all architectures, but just on by default 2014-10-16 00:33:06 +00:00
Makefile.inc Make WARNS=6 the default for libexec/. 2010-01-02 09:50:19 +00:00
Makefile.pc98 Add an "empty" Makefile.pc98 because it doesn't need/want HYPERV. It 2014-10-16 14:08:59 +00:00