Recently I ran gpg --gen-key and had problems with lack of randomness (entropy). If you are running a virtual server and have little traffic coming your way, you will not have enough entropy for security/cryptographic applications.

To address this problem, you could use rng-tools and Haveged packages. This tutorial will show how to add more entropy for Ubuntu/Debian. You can do the same for other Linux distros.



Install rng-tools:

apt-get install rng-tools

Enable rng-tools via config by adding the line HRNGDEVICE=/dev/urandom:

sudo vim /etc/default/rng-tools
# Configuration for the rng-tools initscript
# $Id: rng-tools.default,v 2008-06-10 19:51:37 hmh Exp $

# This is a POSIX shell fragment

# Set to the input source for random data, leave undefined
# for the initscript to attempt auto-detection.  Set to /dev/null
# for the viapadlock and tpm drivers.

# Additional options to send to rngd. See the rngd(8) manpage for
# more information.  Do not specify -r/--rng-device here, use
# HRNGDEVICE for that instead.
#RNGDOPTIONS="--hrng=intelfwh --fill-watermark=90% --feed-interval=1"
#RNGDOPTIONS="--hrng=viakernel --fill-watermark=90% --feed-interval=1"
#RNGDOPTIONS="--hrng=viapadlock --fill-watermark=90% --feed-interval=1"
#RNGDOPTIONS="--hrng=tpm --fill-watermark=90% --feed-interval=1"

Restart the daemon:

sudo /etc/init.d/rng-tools restart


Install Haveged

sudo apt-get install haveged

Check the configuration file /etc/default/haveged for warning if the available entropy is less than 1024 bits:

DAEMON_ARGS="-w 1024"

Run the tests:

cat /dev/random | rngtest -c 1000

Query available entropy:

cat /proc/sys/kernel/random/entropy_avail