random != urandom
random device will only return random bytes within the estimated number of bits of noise in the entropy pool. when the entropy pool is empty, reads from /dev/random will block until additional environmental noise is gathered
urandom device will not block waiting for more entropy.
When you need random data fast, you should use /dev/urandom
For cryptographic purposes you should use /dev/random
kiokoman@nanto:~$ dd if=/dev/random of=/tmp/speedtest bs=1024 count=100000
dd: warning: partial read (115 bytes); suggest iflag=fullblock
0+100000 record in
0+100000 record out
8194031 bytes (8,2 MB, 7,8 MiB) copied, 8,15628 s, 1,0 MB/s
kiokoman@nanto:~$ dd if=/dev/urandom of=/tmp/speedtest bs=1024 count=100000
100000+0 record in
100000+0 record out
102400000 bytes (102 MB, 98 MiB) copied, 1,88982 s, 54,2 MB/s