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.

Reply via email to