[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 1/1] virtio-rng: hardware random number gener

From: Stefan Berger
Subject: Re: [Qemu-devel] [PATCH v3 1/1] virtio-rng: hardware random number generator device
Date: Mon, 02 Jul 2012 13:56:24 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1

On 06/22/2012 07:06 AM, Amit Shah wrote:
On (Wed) 20 Jun 2012 [16:29:22], Anthony Liguori wrote:
On 06/20/2012 01:59 AM, Amit Shah wrote:
The Linux kernel already has a virtio-rng driver, this is the device

When the guest asks for entropy from the virtio hwrng, it puts a buffer
in the vq.  We then put entropy into that buffer, and push it back to
the guest.

The chardev connected to this device is fed the data to be sent to the

Invocation is simple:

   $ qemu ... -device virtio-rng-pci,chardev=foo

In the guest, we see

   $ cat /sys/devices/virtual/misc/hw_random/rng_available

   $ cat /sys/devices/virtual/misc/hw_random/rng_current

   # cat /dev/hwrng

Simply feeding /dev/urandom from the host to the chardev is sufficient:

   $ qemu ... -chardev socket,path=/tmp/foo,server,nowait,id=foo \
              -device virtio-rng,chardev=foo

   $ nc -U /tmp/foo<   /dev/urandom

A QMP event is sent for interested apps to monitor activity and send the
appropriate number of bytes that get asked by the guest:

   {"timestamp": {"seconds": 1337966878, "microseconds": 517009}, \
    "event": "ENTROPY_NEEDED", "data": {"bytes": 64}}

Use a protocol.
How does one write a program on Linux to get random numbers?

He uses /dev/random, of course.
You could also use the nss freebl crypto library that provides a random number generator that for example seeds itself from /dev/urandom and then uses hash operations on the seed before it goes back to getting random numbers from /dev/urandom again. So, another idea: call RNG_GenerateGlobalRandomBytes() to get the entropy.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]