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.