On Fri, Dec 27, 2019 at 2:09 PM Theodore Y. Ts'o <tytso@xxxxxxx> wrote: > So if it's just for cryptographers, then let it all be done in > userspace, and let's not make it easy for GPG, OpenSSL, etc., to all > say, "We want TrueRandom(tm); we won't settle for less". We can talk > about how do we provide the interfaces so that those cryptographers > can get the information they need so they can get access to the raw > noise sources, separated out and named, and with possibly some way > that the noise source can authenticate itself to the Cryptographer's > userspace library/application. > > But all of this should probably not be in drivers/char/random.c, and > we probably need to figure out a better kernel to userspace interface > than what we have with /dev/hwrng. I'm thinking of having a real class device and chardev for each hwrng device. Authentication is entirely in userspace: whatever user code is involved can look at the sysfs hierarchy and decide to what extent it trusts a given source. This could be done based on bus topology or based on anything else. The kernel could also separately expose various noise sources, and the user code can do whatever it wants with them. But these should be explicitly unconditioned, un-entropy-extracted sources -- user code can run its favorite algorithm to extract something it believes to be useful. The only conceptually tricky bit is keeping user code like this from interfering with the in-kernel RNG. --Andy