Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Aug 2013 01:24:19 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Mark R V Murray <mark@grondar.org>
Cc:        Tim Kientzle <tim@kientzle.com>, FreeBSD-arch Arch <freebsd-arch@freebsd.org>, secteam@freebsd.org, =?iso-8859-1?Q?Dag-Erling_Sm=F8rgrav?= <des@des.no>
Subject:   Re: random(4) plugin infrastructure for mulitple RNG in a modular fashion
Message-ID:  <EE0B6A6A-38CD-4DB9-A811-F4C0BF83109E@bsdimp.com>
In-Reply-To: <3513A465-AD8D-4DDC-9408-2F89F9B86404@grondar.org>
References:  <20130807183112.GA79319@dragon.NUXI.org> <86pptfnu33.fsf@nine.des.no> <20130815231713.GD76666@x96.org> <20130816002625.GE76666@x96.org> <9B274F48-0C88-4117-BEAC-1A555772A3C5@grondar.org> <86a9kf733d.fsf@nine.des.no> <0C97B866-A169-4141-8368-AA7F5B5382F4@grondar.org> <861u5r71zi.fsf@nine.des.no> <892B11BD-396D-4F82-B97C-753F72CA494D@grondar.org> <86r4dr5j3p.fsf@nine.des.no> <4C1BD77C-8C6B-4044-9285-5978A3BC4B70@kientzle.com> <12B58C72-CFE3-4AD4-AD03-462A10E431D9@bsdimp.com> <3513A465-AD8D-4DDC-9408-2F89F9B86404@grondar.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Aug 19, 2013, at 1:13 AM, Mark R V Murray wrote:

>=20
> On 19 Aug 2013, at 08:09, Warner Losh <imp@bsdimp.com> wrote:
>>> Besides Yarrow and Fortuna mixers, we could then
>>> offer a "null mixer" option that selected the single
>>> "best" entropy source and passed it directly through.
>>=20
>> I'm still wondering why timecounters aren't the right model to follow =
here, where you can have several compiled into the kernel and the one =
with the best score wins.
>=20
> How would they get a score, and how would it be decided which is =
better? How is the score "calibrated"?

For timecounters, we make judgements based on how good or bad we think =
the timekeeping ability of the underlying device. I'd imagine that we'd =
rate the hardware RNGs high, and the fallback means of harvesting =
entropy from interrupts medium, and anything that's really really bad as =
low. This would allow for the hardware RNGs to override the other =
sources of entropy, while still allowing fallback to reasonable entropy =
on devices that are known suspect (While still allowing the pig-headed =
and/or externally constrained folks to use the bad sources).

For the mixers, the scoring mechanism makes less sense. You'd want more =
of an ordered list specified by the user to dictate policy to choose =
between nothing, fortuna and yarrow.

You'd also want a parameter to deal with failure here: panic or block.

>>> Users could compile the null mixer into the kernel
>>> and load a single HW RNG driver to have precise
>>> control over /dev/random.  Interrupt harvesting would
>>> be the lowest-quality source as a fall back.
>>>=20
>>> In particular, this has a reasonable failure mode if
>>> someone built a kernel with only a single HW entropy
>>> source and the null mixer:
>>> * On hardware with that source, they would get
>>>   full-speed HW entropy.
>>> * On hardware without that source, they would get
>>>   the old blocking /dev/random that we had before
>>>   Yarrow, the one that used only interrupt harvesting.
>>=20
>> Assuming there was enough interrupt entropy to generate bits=85
>=20
> See Ferguson & Schneier on this (qv my follow-up).

Saw that. I was worried only about starvation, but there's much more to =
worry about than that it seems.

Warner




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EE0B6A6A-38CD-4DB9-A811-F4C0BF83109E>