Module Name: src Committed By: nia Date: Fri May 1 12:30:16 UTC 2020
Modified Files: src/share/man/man4: rnd.4 Log Message: rnd.4: Explain why libraries should use kern.arandom over /dev/urandom To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/share/man/man4/rnd.4 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man4/rnd.4 diff -u src/share/man/man4/rnd.4:1.29 src/share/man/man4/rnd.4:1.30 --- src/share/man/man4/rnd.4:1.29 Thu Apr 30 03:28:18 2020 +++ src/share/man/man4/rnd.4 Fri May 1 12:30:16 2020 @@ -1,4 +1,4 @@ -.\" $NetBSD: rnd.4,v 1.29 2020/04/30 03:28:18 riastradh Exp $ +.\" $NetBSD: rnd.4,v 1.30 2020/05/01 12:30:16 nia Exp $ .\" .\" Copyright (c) 2014-2019 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -51,10 +51,32 @@ Will block early at boot if the system's predictable. .El .Pp -Applications should read from +Applications can read from .Pa /dev/urandom when they need randomly generated data, e.g. key material for -cryptography or seeds for simulations. +cryptography or seeds for simulations, and the device is known +to be available. +.Pp +A +.Xr sysctl 7 +variable, +.Li kern.arandom , +provides equivalent functionality to +.Pa /dev/urandom +and will never block. However, it only returns up to 256 bytes per call. +This is expected to be enough for seeding most cryptographically secure +random number generators and ciphers, and if more data is required the +variable can be queried again. +.Pp +Applications should read from the sysctl variable when a high level of +reliability is required, or the runtime environment cannot be predicted, +e.g. in a library. It is possible that +.Pa /dev/urandom +is unavailable due to the application being in a +.Xr chroot 8 +environment, or when other restrictions such as those enforced by +.Xr setrlimit 2 +apply. .Pp Systems should be engineered to judiciously read at least once from .Pa /dev/random @@ -485,6 +507,7 @@ pools and consolidated into a global poo Keys for .Pa /dev/random , .Pa /dev/urandom , +.Li kern.arandom , and the in-kernel .Xr cprng 9 subsystem are extracted from the global pool.