From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Kashyap Chamarthy <kchamart@redhat.com>,
Amit Shah <amit@kernel.org>,
Richard Henderson <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
"Richard W . M . Jones" <rjones@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 1/3] VirtIO-RNG: Update default entropy source to `/dev/urandom`
Date: Fri, 10 May 2019 18:11:56 +0100 [thread overview]
Message-ID: <20190510171156.GR7671@redhat.com> (raw)
In-Reply-To: <20190510125323-mutt-send-email-mst@kernel.org>
On Fri, May 10, 2019 at 12:55:18PM -0400, Michael S. Tsirkin wrote:
> On Fri, May 10, 2019 at 05:25:54PM +0100, Daniel P. Berrangé wrote:
> > On Fri, May 10, 2019 at 12:21:19PM -0400, Michael S. Tsirkin wrote:
> > > On Fri, May 10, 2019 at 05:16:44PM +0100, Daniel P. Berrangé wrote:
> > > > On Fri, May 10, 2019 at 12:12:41PM -0400, Michael S. Tsirkin wrote:
> > > > > On Fri, May 10, 2019 at 03:42:01PM +0200, Laurent Vivier wrote:
> > > > > > From: Kashyap Chamarthy <kchamart@redhat.com>
> > > > > >
> > > > > > When QEMU exposes a VirtIO-RNG device to the guest, that device needs a
> > > > > > source of entropy, and that source needs to be "non-blocking", like
> > > > > > `/dev/urandom`. However, currently QEMU defaults to the problematic
> > > > > > `/dev/random`, which is "blocking" (as in, it waits until sufficient
> > > > > > entropy is available).
> > > > > >
> > > > > > Why prefer `/dev/urandom` over `/dev/random`?
> > > > > > ---------------------------------------------
> > > > > >
> > > > > > The man pages of urandom(4) and random(4) state:
> > > > > >
> > > > > > "The /dev/random device is a legacy interface which dates back to a
> > > > > > time where the cryptographic primitives used in the implementation
> > > > > > of /dev/urandom were not widely trusted. It will return random
> > > > > > bytes only within the estimated number of bits of fresh noise in the
> > > > > > entropy pool, blocking if necessary. /dev/random is suitable for
> > > > > > applications that need high quality randomness, and can afford
> > > > > > indeterminate delays."
> > > > > >
> > > > > > Further, the "Usage" section of the said man pages state:
> > > > > >
> > > > > > "The /dev/random interface is considered a legacy interface, and
> > > > > > /dev/urandom is preferred and sufficient in all use cases, with the
> > > > > > exception of applications which require randomness during early boot
> > > > > > time; for these applications, getrandom(2) must be used instead,
> > > > > > because it will block until the entropy pool is initialized.
> > > > >
> > > > > So how about just using getrandom then?
> > > >
> > > > The 3rd patch in this series addresses that.
> > >
> > > It seems to use qemu_guest_getrandom which in turn
> > > with patch 1 calls /dev/urandom...
> > > Did I miss something?
> >
> > qemu_guest_getrandom will preferentially use the crypto library random
> > APIs (gnutls, or gcrypt). If both are compiled out that it will use
> > getrandom() if supported by the C library and current kernel. If that
> > fails then it will try /dev/urandom if it exists, finally /dev/random.
> > On Windows it uses their native crypto API. See this dependant series:
> >
> > https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg02237.html
>
> In particular
>
> https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg02238.html
>
> maybe clarify this is just for systems without getrandom then.
I'm not sure I see what the problem is. That patch is implementing the
fallback behaviour I describe above, with the crypto library preferred,
falling back to getrandom, then /dev/urandom, finally /dev/random.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2019-05-10 17:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-10 13:42 [Qemu-devel] [PATCH v3 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom() Laurent Vivier
2019-05-10 13:42 ` [Qemu-devel] [PATCH v3 1/3] VirtIO-RNG: Update default entropy source to `/dev/urandom` Laurent Vivier
2019-05-10 16:12 ` Michael S. Tsirkin
2019-05-10 16:16 ` Daniel P. Berrangé
2019-05-10 16:21 ` Michael S. Tsirkin
2019-05-10 16:25 ` Daniel P. Berrangé
2019-05-10 16:55 ` Michael S. Tsirkin
2019-05-10 17:11 ` Daniel P. Berrangé [this message]
2019-05-10 16:18 ` Markus Armbruster
2019-05-10 13:42 ` [Qemu-devel] [PATCH v3 2/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom() Laurent Vivier
2019-05-10 13:42 ` [Qemu-devel] [PATCH v3 3/3] virtio-rng: change default backend to rng-builtin Laurent Vivier
2019-05-10 16:36 ` Markus Armbruster
2019-05-13 10:26 ` Laurent Vivier
2019-05-14 14:39 ` Markus Armbruster
2019-05-12 18:21 ` [Qemu-devel] [PATCH v3 0/3] rng-builtin: add an RNG backend that uses qemu_guest_getrandom() Michael S. Tsirkin
2019-05-13 6:36 ` Laurent Vivier
2019-05-13 8:49 ` Kashyap Chamarthy
2019-05-13 12:13 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190510171156.GR7671@redhat.com \
--to=berrange@redhat.com \
--cc=amit@kernel.org \
--cc=armbru@redhat.com \
--cc=kchamart@redhat.com \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=rjones@redhat.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.