mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stephan Mueller <smueller@chronox.de>
To: Pavel Machek <pavel@ucw.cz>
Cc: "Theodore Ts'o" <tytso@mit.edu>,
	Sandy Harris <sandyinchina@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-crypto@vger.kernel.org, Jason Cooper <jason@lakedaemon.net>,
	John Denker <jsd@av8n.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <andi@firstfloor.org>
Subject: Re: random(4) changes
Date: Tue, 26 Apr 2016 20:55:28 +0200	[thread overview]
Message-ID: <1948798.MKebf3xYm7@positron.chronox.de> (raw)
In-Reply-To: <20160426184439.GA8162@amd>

Am Dienstag, 26. April 2016, 20:44:39 schrieb Pavel Machek:

Hi Pavel,

> Hi1
> 
> > > When dropping the add_disk_randomness function in the legacy
> > > /dev/random, I
> > > would assume that without changes to add_input_randomness and
> > > add_interrupt_randomness, we become even more entropy-starved.
> > 
> > Sure, but your system isn't doing anything magical here.  The main
> > difference is that you assume you can get almost a full bit of entropy
> > out of each interrupt timing, where I'm much more conservative and
> > assume we can only get 1/64th of a bit out of each interrupt timing.
> 
> Maybe 1/64th of a bit is a bit too conservative? I guess we really
> have more than one bit of entropy on any system with timestamp
> counter....
> 
> Making it 1/2 of bit (or something) should be very easy way to improve
> entropy early during boot...

I can easily settle on 1/2 bit here. The LRNG currently uses 0.9 bits which 
are based on measurements plus a safety margin. But I see no issue to even 
lower it further to, say, 1/2.

But simply enlarging the heuristic for the interrupt processing of the legacy 
/dev/random is a challenge IMHO. The key issue is the following:

When the legacy /dev/random receives one [block|HID] event, the following 
happens:

- add_[disk|input]_randomness assigns a time stamp containing majority of the 
entropy plus jiffies plus the event value and mix that triplet into the input 
pool

- for the very same event add_interrupt_randomness is also triggered and 
records the time stamp (plus jiffies, the instruction pointer and one 
register). Again, the majority of the entropy comes from the time stamp.

Both invocations are applied to the same event where the majority of entropy 
for each invocation is derived from a time stamp. It is clear that the 
invocation of both are highly correlated. So is the time stamp both 
invocations obtain. Thus, the time stamp of either one must not be credited 
with high entropy content.

If the credited entropy for an interrupt raises, the credited entropy for 
add_[disk|block]_randomness must be decreased. That is the core issue why I 
came up with a separate way of recording these events.

Ciao
Stephan

  reply	other threads:[~2016-04-26 18:55 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-22 22:27 Sandy Harris
2016-04-23  7:52 ` Stephan Mueller
2016-04-24  2:03 ` Theodore Ts'o
2016-04-24  8:03   ` Stephan Mueller
2016-04-26  3:07     ` Theodore Ts'o
2016-04-26 11:04       ` Herbert Xu
2016-04-26 20:47         ` Andi Kleen
2016-04-27  4:23           ` Herbert Xu
2016-04-26 18:24       ` Stephan Mueller
2016-04-26 18:44       ` Pavel Machek
2016-04-26 18:55         ` Stephan Mueller [this message]
2016-04-26 19:41           ` Pavel Machek
2016-04-25 16:06 ` Andi Kleen
2016-04-25 17:25   ` Stephan Mueller
2016-04-25 17:38     ` Andi Kleen
2016-04-25 17:56       ` Stephan Mueller
2016-04-25 19:35         ` Andi Kleen
2016-04-26 12:01           ` Stephan Mueller
2016-04-27 17:47           ` Stephan Mueller
2016-04-26  1:00   ` Theodore Ts'o
2016-04-26 12:42   ` Sandy Harris
     [not found] <5279345.Lo7T948V4W@positron.chronox.de>
2016-04-26 20:43 ` George Spelvin
2016-04-26 21:01   ` Stephan Mueller
2016-04-27  0:23     ` George Spelvin
2016-04-27 18:03       ` George Spelvin
2016-04-28 20:15       ` Stephan Mueller
2016-04-29  7:29         ` George Spelvin
2016-04-29  8:02           ` Stephan Mueller
2016-04-29  9:34             ` George Spelvin
2016-04-29  9:53               ` Stephan Mueller
2016-04-29 11:04                 ` George Spelvin
2016-04-29 11:18                   ` Stephan Mueller
2016-04-29 18:02                     ` George Spelvin
2016-04-29 18:41                       ` Stephan Mueller
2016-04-29 20:08                         ` George Spelvin
2016-04-29 21:54                           ` Stephan Mueller
2016-04-29 22:32                             ` George Spelvin
2016-04-29  0:47       ` George Spelvin

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=1948798.MKebf3xYm7@positron.chronox.de \
    --to=smueller@chronox.de \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=jason@lakedaemon.net \
    --cc=jsd@av8n.com \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=sandyinchina@gmail.com \
    --cc=tytso@mit.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®