From: linux@horizon.com
To: daw@taverner.cs.berkeley.edu, tytso@mit.edu
Cc: jlcooke@certainkey.com, linux@horizon.com,
linux-kernel@vger.kernel.org, mpm@selenic.com
Subject: Re: Fortuna
Date: 16 Apr 2005 11:10:33 -0000 [thread overview]
Message-ID: <20050416111033.28308.qmail@science.horizon.com> (raw)
>> First, a reminder that the design goal of /dev/random proper is
>> information-theoretic security. That is, it should be secure against
>> an attacker with infinite computational power.
> I am skeptical.
> I have never seen any convincing evidence for this claim,
> and I suspect that there are cases in which /dev/random fails
> to achieve this standard.
I'm not sure which claim you're skeptical of. The claim that it's
a design goal, or the claim that it achieves it?
I'm pretty sure that's been the *goal* since the beginning, and it says
so in the comments:
* Even if it is possible to
* analyze SHA in some clever way, as long as the amount of data
* returned from the generator is less than the inherent entropy in
* the pool, the output data is totally unpredictable.
That's basically the information-theoretic definition, or at least
alluding to it. "We're never going to give an attacker the unicity
distance needed to *start* breaking the crypto."
The whole division into two pools was because the original single-pool
design allowed (information-theoretically) deriving previous
/dev/random output from subsequent /dev/urandom output. That's
discussed in section 5.3 of the paper you cited, and has been fixed.
There's probably more discussion of the subject in linux-kernel around
the time that change went in.
Whether the goal is *achieved* is a different issue. random.c tries
pretty hard, but makes some concessions to practicality, relying on
computational security as a backup. (But suggestions as to how to get
closer to the goal are still very much appreciated!)
In particular, it is theoretically possible for an attacker to exploit
knowledge of the state of the pool and the input mixing transform to
feed in data that permutes the pool state to cluster in SHA1 collisions
(thereby reducing output entropy), or to use the SHA1 feedback to induce
state collisions (therby reducing pool entropy). But that seems to bring
whole new meaning to the word "computationally infeasible", requiring
first preimage solutions over probability distributions.
Also, the entropy estimation may be flawed, and is pretty crude, just
heavily derated for safety. And given recent developments in keyboard
skiffing, and wireless keyboard deployment, I'm starting to think that
the idea (taken from PGP) of using the keyboard and mouse as an entropy
source is one whose time is past.
Given current processor clock rates and the widespread availability of
high-resolution timers, interrupt synchronization jitter seems like
a much more fruitful source. I think there are many bits of entropy
in the lsbits of the RDTSC time of interrupts, even from the periodic
timer interrupt! Even derating that to 0.1 bit per sample, that's still
a veritable flood of seed material.
/dev/random has an even more important design goal of being universally
available; it should never cost enough to make disabling it attractive.
If this conflicts with information-theoretic security, the latter will
be compromised. But if a practical information-theoretic /dev/random is
(say) just too bulky for embedded systems, perhaps making a scaled-back
version available for such hosts (as a config option) could satisfy
both goals.
Ted, you wrote the thing in the first place; is my summary of the goals
correct? Would you like comment patches to clarify any of this?
Thank you for pointing out the paper; Appendix A is particularly
interesting. And the [BST03] reference looks *really* nice! I haven't
finished it yet, but based on what I've read so far, I'd like to
*strongly* recommnd that any would-be /dev/random hackers read it
carefully. It can be found at
http://www.wisdom.weizmann.ac.il/~tromer/papers/rng.pdf
Happily, it *appears* to confirm the value of the LFSR-based input
mixing function. Although the suggested construction in section 4.1 is
different, and I haven't seen if the proof can be extended.
next reply other threads:[~2005-04-16 11:11 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-16 11:10 linux [this message]
2005-04-16 15:06 ` Fortuna Jean-Luc Cooke
2005-04-16 16:30 ` Fortuna linux
2005-04-17 0:37 ` Fortuna David Wagner
2005-04-16 23:40 ` Fortuna David Wagner
2005-04-17 0:36 ` Fortuna David Wagner
-- strict thread matches above, loose matches on Subject: below --
2005-04-17 9:21 Fortuna linux
2005-04-16 11:44 Fortuna linux
2005-04-14 14:15 Fortuna linux
2005-04-14 13:33 ` Fortuna Theodore Ts'o
2005-04-15 1:34 ` Fortuna linux
2005-04-15 14:42 ` Fortuna Theodore Ts'o
2005-04-15 15:38 ` Fortuna linux
2005-04-15 18:23 ` Fortuna Theodore Ts'o
2005-04-15 16:22 ` Fortuna Jean-Luc Cooke
2005-04-15 16:50 ` Fortuna linux
2005-04-15 17:04 ` Fortuna Jean-Luc Cooke
2005-04-16 10:05 ` Fortuna linux
2005-04-16 15:46 ` Fortuna Jean-Luc Cooke
2005-04-16 17:16 ` Fortuna linux
2005-04-16 19:22 ` Fortuna Matt Mackall
2005-04-16 19:00 ` Fortuna Matt Mackall
2005-04-17 0:19 ` Fortuna David Wagner
2005-04-16 1:28 ` Fortuna David Wagner
2005-04-15 19:34 ` Fortuna Matt Mackall
2005-04-16 1:25 ` Fortuna David Wagner
2005-04-19 19:27 ` Fortuna Patrick J. LoPresti
2005-04-14 14:52 ` Fortuna Jean-Luc Cooke
2005-04-15 0:52 ` Fortuna linux
2005-04-16 1:19 ` Fortuna David Wagner
2005-04-16 1:08 ` Fortuna David Wagner
2005-04-18 19:13 ` Fortuna Matt Mackall
2005-04-18 21:40 ` Fortuna David Wagner
2005-04-19 4:01 ` Fortuna Theodore Ts'o
2005-04-19 4:31 ` Fortuna David Wagner
2005-04-20 7:06 ` Fortuna Theodore Ts'o
2005-04-13 23:43 Fortuna Jean-Luc Cooke
2005-04-14 0:09 ` Fortuna Matt Mackall
2005-04-14 0:26 ` Fortuna Jean-Luc Cooke
2005-04-14 0:44 ` Fortuna Matt Mackall
2005-04-16 1:02 ` Fortuna David Wagner
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=20050416111033.28308.qmail@science.horizon.com \
--to=linux@horizon.com \
--cc=daw@taverner.cs.berkeley.edu \
--cc=jlcooke@certainkey.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mpm@selenic.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®