Hi Nicholas,

On Mon, Jul 08, 2019 at 04:49:00PM -0500, Nicholas Geovanis wrote:
> On Mon, Jul 8, 2019 at 3:45 PM Andy Smith <a...@strugglers.net> wrote:
> > Flash forward to 2017 and T'so himself wrote a patch to add a
> > configure option to allow RDRAND to be used early on to bootstrap
> > entropy. Thereafter it would not be the exclusive source of entropy.
> > That is what has been enabled in buster's kernel and is what is at
> > the heart of this discussion.
> > These are two different scenarios.
> 
> Granted, they are different scenarios.
> But I don't ever recall the mainstream kernel in a leading
> distribution blocking on lack of entropy by default at any time in
> T'so's career. Until now. Sure, it looks like the source permitted
> blocking all along (maybe). But I never heard of this being used
> in a non-custom-built mainstream distro before.
> Has T'so had any comments on that? Does he find it appropriate or wise?

This whole getrandom()-can-block thing has been going on for
multiple years; it has been a huge debate within the Linux
development community. I'd have to read it all again I think to try
to summarise Theodore T'so's position on all of it, and I don't
really want to do that.

There was good coverage in LWN:

    https://lwn.net/Articles/760584/

> > This sub-thread appears to have people concerned about the Debian
> > kernel's willingness by default to use RDRAND at early boot (a patch
> > which T'so wrote), but using a statement made by T'so in 2013 about
> > something else to oppose it.
> 
> OK. You imply that their concerns were misguided (I wasn't one of them).

For the avoidance of doubt, I think that if we don't trust our CPUs
then we start to go down the rabbit hole where we can't trust
anything. HOWEVER…

Theodore T'so himself has made the argument that most places you
might compromise a CPU involve big teams of people and keeping the
secret that it's happened would likely be infeasible. Not so RDRAND,
which is thought to be the work of one or a small team of
developers, and which would be very easy to compromise.

So, as far as I understand it, that is why T'so opposed the use of
RDRAND as the *only* entropy source for Linux, but T'so in fact
*suggests* the use of RDRAND in tandem with other entropy sources as
a means to avoid boot-time entropy starvation. Because it's one of
the easiest ways to get around that problem, and even if compromised
isn't going to do any harm when mixed in.

That sounds sensible to me so I would agree with him that RDRAND is
suspicious but usable in that context. And I do go so far as to
provide entropy from external hardware sources for me and my
customers since 2013.

Actually I just tested this earlier in a new buster VM and by
default:

[    1.170404] random: crng done (trusting CPU's manufacturer)

With 'nordrand' kernel command line and no use of external entropy:

[    1.231884] random: fast init done
[   48.655256] random: crng init done

with 'nordrand' and external entropy:

[   10.879583] random: crng init done

The daemon for the external entropy starts quite late so I may be
able to improve matters by forcing it to start earlier, but I'm okay
with leaving RDRAND enabled so am not going to spend too much effort
on this.

> The evidence they chose may be untenable. But you have not
> addressed their actual concern.

I don't know whether you mean their concern about RDRAND possibly
being unsafe, or their concern about Debian choosing to make use of
it even though some believe it may be unsafe. Your next bit makes me
think you mean the latter so that's what I'll go with.

> I'm sure that your answer will include "....but the standard
> debian process to include this new feature in the kernel was
> followed......". So everything is OK. Right?

How to solve the "lack of entropy at boot time" problem was
discussed at length on debian-devel multiples times over multiple
years and that's how the wiki page at:

    https://wiki.debian.org/BoottimeEntropyStarvation

came to exist. That page links to two of the debian-devel threads
and in those threads Theodore T'so did give some recommendations.

Debian developers made a decision based on those discussions which
were held in the open. I'm not sure who it fell to, to make the
ultimate decision. Probably the kernel team as they decided whether
to enable the RDRAND option? It's a tricky problem without a perfect
solution. Not everyone will be happy with the outcome, though there
does seem to be enough configurability there for them to have things
work differently, with different trade-offs.

If this has come as a surprise to some Debian users, that is only
because they didn't choose to get involved in such a deeply
technical discussion.

It's not that unusual that some users get upset by developer
decisions and isn't usually worth commenting upon, but it struck me
that in this sub-thread there is a particularly big misunderstanding
going on, as some are quoting T'so in a completely different context
as support for their argument against a situation which T'so was in
fact instrumental in bringing about!

I think there is possibly a lack of appreciation for the complexity
of this problem and so what has happened is someone has stumbled
across a quote and thought, "hey, Theodore T'so doesn't like RDRAND
and here we are using RDRAND! What gives!?"

Cheers,
Andy

-- 
https://bitfolk.com/ -- No-nonsense VPS hosting

Reply via email to