2

I've got a NeuG hardware true random number generator (http://www.gniibe.org/memo/development/gnuk/rng/neug.html) and its page says that it runs on GNU/Linux systems as /dev/ttyACM0

Can I configure /dev/random to use NeuG for its randomness? If so, how? And how do I check that /dev/random is indeed using NeuG?

2 Answers 2

1

Answer adapted from SuperUser: https://superuser.com/questions/309840/how-can-i-point-dev-random-to-dev-urandom

All you need to do is to create something like /etc/udev/rules.d/70-harware-randomizer-enable.rules with the following contents:

# /etc/udev/rules.d/70-disable-random-entropy-estimation.rules
# Disables /dev/random entropy estimation (it's mostly snake oil anyway).
#
# udevd will warn that the kernel-provided name 'random' and NAME= 'ttyACM0'
# disagree.  You can ignore this warning.

# Use /dev/ttyACM0 instead of /dev/random for the entropy-estimating RNG.
KERNEL=="random", NAME="ttyACM0"

# Remove any existing /dev/random, then create symlink /dev/random pointing to
# /dev/urandom
KERNEL=="urandom", PROGRAM+="/bin/rm -f /dev/random", SYMLINK+="random"
4
  • Aha, this makes a lot of sense!!! Thank you very much. Out of curiosity, why is /dev/random entropy estimation "mostly snake oil anyway"?????
    – hpy
    Commented Mar 27, 2017 at 19:11
  • 1
    There has been quite a bit of discussion about this. It is a very complex and contradictory subject, maybe this link can shed some light kingbloom.com/cp/1999-04/0112.html . It is a very old post about BSD, but the (supposed) issue is pretty much the same
    – Bruno9779
    Commented Mar 27, 2017 at 19:18
  • 1
    Uh, why would you do that? As opposed to using the HRNG to inject entropy into the kernel pool and leaving the /dev/random and /dev/urandom device nodes well alone? Commented Mar 27, 2017 at 23:49
  • @Gilles thanks for your comment, how do I do this (I.e. use the HRNG to inject entropy into the kernel pool)? And how does this method compare to the udev method? Pros/cons??
    – hpy
    Commented Mar 28, 2017 at 9:45
1

I can't remember if I did anything else, but it seems that I created /etc/systemd/system/[email protected] with the following:

[Unit]
Description=rngd service on %I

[Service]
Type=simple
ExecStartPre=/bin/stty -F /dev/%I raw -echo -parenb
ExecStart=/usr/sbin/rngd -f --fill-watermark=4000 --rng-device=/dev/%I

Then, sudo systemctl enable [email protected] and sudo systemctl start [email protected]

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .