[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support
From: |
Anthony Liguori |
Subject: |
Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support |
Date: |
Fri, 26 Oct 2012 10:42:22 -0500 |
User-agent: |
Notmuch/0.13.2+93~ged93d79 (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu) |
Paolo Bonzini <address@hidden> writes:
>> This series implements the backend and frontend infrastructure for
>> virtio-rng.
>> This is similar to previous series sent out by both Amit and myself
>> although it has been trimmed down considerably.
>>
>> In terms of backends, a file and EGD backend are supported. The file
>> defaults
>> to /dev/random based on the feedback from Peter. It's still possible
>> to support /dev/urandom though as an entropy source by overriding the file
>> name.
>>
>> I think this series is ready to merge.
>
> Is /dev/random even appropriate to feed rngd?
>
> rngd needs _a lot_ of entropy to even start working. Its randomness
> test works in groups of 20000 bits. On a system without an hardware
> RNG, /dev/random can hardly produce 4000 bits/minute. This means a
> guest will not get any entropy boost for 5 minutes after it's started,
> even if we allow it to exhaust the parent's entropy.
I don't know, but rng-random is a non-blocking backend so it can handle
/dev/random, /dev/urandom, or /dev/hwrng.
It's just a matter of what the default is and I feel comfortable that if
someone can provide a *concrete* demonstration of what the best default
is, we can change it later on.
> At this point, /dev/hwrng (or rdrand) seems just as good as
> /dev/random as a source for virtio-rng (and even better, it is not
> starved as easily).
I've been told that hwrng sources need to be passed through a whitening
function in order to be suitable for PRNG generators. Since we expose a
/dev/hwrng in the guest, perhaps this doesn't matter...
> I think RngBackend is over-engineered. What other backends do you plan
> on adding?
Stefan Berger suggested a backend that uses a PRNG in FreeBL. That's
probably the best default since it punts to a userspace library to deal
with ensuring there's adequate whitening/entropy to start with.
> Maybe rdrand, but that's just a chardev---so why isn't this enough:
>
> -chardev file,source=on,path=/dev/hwrng,id=chr0 -device
> virtio-rng-pci,file=chr0
> -chardev rdrand,id=chr0 -device
> virtio-rng-pci,file=chr0
> -chardev socket,host=localhost,port=1024,id=chr0 -device
> virtio-rng-pci,rng=chr0,egd=on
>
> (which I suggested in my reply to Amit)?
I don't like overloading chardev to representate any !block device
backend which is what I fear we're doing here.
EGD is more than just a dumb pipe of data too. It's got a way to query
available entropy. I have a strong suspicion that over time, we'll add
methods to virtio-rng to query available entropy. That would mean
adding a backend specific ioctl to the chardev layer which is pretty
ugly.
The overhead of creating a separate backend to begin with is extremely
small. We're talking about dozens of lines of code. So I don't see
what the problem is.
Regards,
Anthony Liguori
>
> Paolo
- [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, Anthony Liguori, 2012/10/26
- [Qemu-devel] [PATCH 3/6] rng: add RndBackend abstract object class, Anthony Liguori, 2012/10/26
- [Qemu-devel] [PATCH 5/6] rng-egd: introduce EGD compliant RNG backend, Anthony Liguori, 2012/10/26
- [Qemu-devel] [PATCH 2/6] object: add object_property_add_bool (v2), Anthony Liguori, 2012/10/26
- [Qemu-devel] [PATCH 6/6] virtio-rng: hardware random number generator device, Anthony Liguori, 2012/10/26
- [Qemu-devel] [PATCH 1/6] vl: add -object option to create QOM objects from the command line, Anthony Liguori, 2012/10/26
- [Qemu-devel] [PATCH 4/6] rng-random: add an RNG backend that uses /dev/random, Anthony Liguori, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, Paolo Bonzini, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support,
Anthony Liguori <=
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, H. Peter Anvin, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, Anthony Liguori, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, H. Peter Anvin, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, Amit Shah, 2012/10/29
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, H. Peter Anvin, 2012/10/30
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, Paolo Bonzini, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, H. Peter Anvin, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, Paolo Bonzini, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, H. Peter Anvin, 2012/10/26
- Re: [Qemu-devel] [PATCH 0/6] add paravirtualization hwrng support, H. Peter Anvin, 2012/10/26