freebsd-skq/sys
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
..
amd64 Rework virtual machine hypervisor detection. 2014-10-28 19:17:44 +00:00
arm Make the GPIO children attach to the first unit available and not only to 2014-10-28 18:33:59 +00:00
boot Make UEFI booting of 4Kn disks work: 2014-10-30 15:52:01 +00:00
bsm
cam Implement better handling for ENOSPC error for both CTL and CAM. 2014-10-29 03:14:29 +00:00
cddl This change addresses 4 bugs in ZFS exposed by Richard Kojedzinszky's 2014-10-25 17:42:44 +00:00
compat Replace some calls to fuword() by fueword() with proper error checking. 2014-10-28 15:28:20 +00:00
conf 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
contrib krping: In verbose mode print only first 128 bytes of krping data. 2014-10-27 22:41:55 +00:00
crypto Put the aesni_cipher_setup() and aesni_cipher_process() functions into 2014-06-24 06:55:49 +00:00
ddb ddb: ANSI-fy function declarations. 2014-10-12 18:01:52 +00:00
dev 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
fs Fix handling of "conn" mount_nfs(8) option. 2014-10-30 09:25:03 +00:00
gdb Add support for gdb's memory searching capabilities to our in-kernel gdb 2014-09-05 16:40:47 +00:00
geom Revert somewhat hackish geom_disk optimization, committed as part of r256880, 2014-10-25 15:16:19 +00:00
gnu reiserfs: Use signed i_nlink 2014-09-25 19:10:32 +00:00
i386 Skip the smap sysctl instead of panicing if no kernel metadata can be 2014-10-30 17:58:57 +00:00
isa
kern 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
kgssapi Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
libkern Add a complete implementation of MurmurHash3. Tweak both implementations 2014-10-18 22:15:11 +00:00
mips Make the GPIO children attach to the first unit available and not only to 2014-10-28 18:33:59 +00:00
modules 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
net 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
net80211 Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
netgraph 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
netinet Fix a race condition in TCP timewait between tcp_tw_2msl_reuse() and 2014-10-30 08:53:56 +00:00
netinet6 Remove redundant code. 2014-10-30 12:44:46 +00:00
netipsec Use a static callout to drive key_timehandler() instead of timeout(). 2014-10-23 20:43:16 +00:00
netnatm
netpfil Bump default dynamic limit to 16k entries. 2014-10-24 13:57:15 +00:00
netsmb
nfs Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
nfsclient Follow up to r225617. In order to maximize the re-usability of kernel code 2014-10-16 18:04:43 +00:00
nfsserver Change NFS readdir() to only ignore cookies preceding the given offset for 2014-07-01 20:00:35 +00:00
nlm Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
ofed Fix compile warning by removing unused variable. 2014-10-30 16:57:56 +00:00
opencrypto Fix build for kernels without COMPAT_FREEBSD32. 2014-09-22 17:32:27 +00:00
pc98 Add COMPAT_FREEBSD9 and COMPAT_FREEBSD10 options to wrap code that 2014-10-24 19:58:24 +00:00
powerpc Make the GPIO children attach to the first unit available and not only to 2014-10-28 18:33:59 +00:00
rpc Merge the NFSv4.1 server code in projects/nfsv4.1-server over 2014-07-01 20:47:16 +00:00
security Replace dev_clone with cdevpriv(9) KPI in audit_pipe code. 2014-08-20 16:04:30 +00:00
sparc64 Add fueword(9) and casueword(9) functions. They are like fuword(9) 2014-10-28 15:22:13 +00:00
sys 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
teken
tools Allow the make_dtb script to work outside of a "make buildkernel" context 2014-08-30 22:39:15 +00:00
ufs Provide vfs suspension support only for filesystems which need it, take 2014-10-20 18:00:50 +00:00
vm 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
x86 Rework virtual machine hypervisor detection. 2014-10-28 19:17:44 +00:00
xdr
xen xen: implement the privcmd user-space device 2014-10-22 17:07:20 +00:00
Makefile Remove "pci" from CSCOPEDIRS. 2014-09-23 06:32:19 +00:00