public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
From: "Michael Kerrisk (man-pages)" <mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Theodore Ts'o <tytso-3s7WtUTddSA@public.gmane.org>
Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	"Laurent Georget"
	<laurent-AyimVQWTEHzsq35pWSNszA@public.gmane.org>,
	"Nikos Mavrogiannopoulos"
	<nmav-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	"Laurent Georget"
	<laurent.georget-vbcOdlJ0SulGWvitb5QawA@public.gmane.org>,
	"Luke Bratch" <luke-g3IQT7+C+D7QXOPxS62xeg@public.gmane.org>,
	"Ivan Babrou" <ibobrik-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	matt-6J8q6J5oQjkQrrorzV6ljw@public.gmane.org,
	"Heinrich Schuchardt" <xypron.glpk-Mmb7MZpHnFY@public.gmane.org>,
	linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	"Thomas Hühn" <t@2uo.de>,
	"Stephan Mueller"
	<smueller-T9tCv8IpfcWELgA04lAiVw@public.gmane.org>,
	"Carl Winbäck" <c@tunnel53.net>,
	mpm-VDJrAJ4Gl5ZBDgjK7y7TUQ@public.gmane.org
Subject: Re: Revised draft of random(7) man page for review
Date: Tue, 15 Nov 2016 22:51:59 +0100	[thread overview]
Message-ID: <d729f4db-945f-690b-ada8-d6973b83ac81@gmail.com> (raw)
In-Reply-To: <20161115150407.jy7ix2i6dw5nyhbk-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>

Hell Ted,

On 11/15/2016 04:04 PM, Theodore Ts'o wrote:
> On Tue, Nov 15, 2016 at 07:56:09AM +0100, Michael Kerrisk (man-pages) wrote:
>>        *  The Linux-specific getrandom(2) system call, available since
>>           Linux 3.17.  This system call provides access either to  the
>>           same  source  as  /dev/urandom (called the urandom source in
>>           this page) or to the same source as /dev/random (called  the
>>           random  source  in  this  page).  The default is the urandom
>>           source; the random source  is  selected  by  specifying  the
>>           GRND_RANDOM flag to the system call.
>> ....
>>    Choice of random device
>>        Unless  you are doing long-term key generation (and most likely
>>        not even then), you probably shouldn't be using the /dev/random
>>        device or getrandom(2) with the GRND_RANDOM flag.
>>
> 
> Given the definition earlier, maybe the title of this section should
> be called "Choice of random source?"

Yes. Fixed.

>>    Usage recommendations
>>        The kernel random-number generator relies on  entropy  gathered
>>        from  device  drivers and other sources of environmental noise.
>>        It is designed to produce a small amount of  high-quality  seed
>>        material to seed a cryptographically secure pseudorandom number
>>        generator (CSPRNG).  It is designed for  security,  not  speed,
>>        and  is  poorly  suited  to generating large amounts of crypto‐
>>        graphic random data.  Users should be economical in the  amount
>>        of seed material that they consume via getrandom(2), /dev/uran‐
>>        dom, and /dev/random.
>>
>>        ┌─────────────────────────────────────────────────────┐
>>        │FIXME                                                │
>>        ├─────────────────────────────────────────────────────┤
>>        │Is it really  necessary  to  avoid  consuming  large │
>>        │amounts from /dev/urandom? Various sources linked to │
>>        │by https://bugzilla.kernel.org/show_bug.cgi?id=71211 │
>>        │suggest it is not.                                   │
>>        │                                                     │
>>        │And: has the answer to the previous question changed │
>>        │across kernel versions?                              │
>>        └─────────────────────────────────────────────────────┘
>>        Consuming unnecessarily large  quantities  of  data  via  these
>>        interfaces  will  have  a negative impact on other consumers of
>>        randomness.
> 
> So "poorly suited" is definitely true.  Also true is that urandom is
> not engineered for use for non-cryptographic uses.  It's always going
> to be faster to use random(3) for those purposes.
> 
> As far as whether or not it has a negative impact, it depends on how
> much you trust the underlying cryptographic algorithms.  If the CSPRNG
> is seeded correctly with at least 256 bits of entropy that can't be
> guessed by the attacker, and if the underlying cryptographic
> primitives are secure, then it won't matter.  But *if* there is an
> unknown vulnerability in the underlying primitive, and *if* large
> amounts of data generated by the CSPRNG would help exploit that
> vulnerability, and *if* that bulk amount of CSPRNG output is made
> available to an attacker with the capability to break the underlying
> cryptographic vulnerability, then there would be a problem.
> 
> Obviously, no one knows of such a vulnerability, and I'm fairly
> confident that there won't be such a vulnerability across the
> different ways we've used to generate the urandom source --- but some
> people are professional paranoids, and would argue that we shouldn't
> make bulk output of the CSPRNG available for no good reason, just in
> case.

So, is it necessary to keep the statement about avoiding
consuming large amounts from the random / urandom / getrandom()?

>>        ┌─────────────────────────────────────────────────────┐
>>        │FIXME                                                │
>>        ├─────────────────────────────────────────────────────┤
>>        │Above: we need to define "negative impact".  Is  the │
>>        │only  negative  impact  that  we may slow readers of │
>>        │/dev/random, since it will  block  until  sufficient │
>>        │entropy has once more accumulated?                   │
>>        │                                                     │
>>        │And: has the answer to the previous question changed │
>>        │across kernel versions?                              │
>>        └─────────────────────────────────────────────────────┘
> 
> This answer has changed across kernel versions.  As of the changes
> made in the 4.8 kernel and newer, we reseed the urandom pool every
> five minutes (if it is in use) so it doesn't matter whether you draw
> one byte or one gigabyte from the urandom source; it won't slow down
> readers of the random source.
> 
> Between 3.13 and 4.8, we cap the number of times that entropy that
> will be pulled from /dev/random to once every 60 seconds, so it
> mattered a bit more, but it wouldn't significantly slow down readers
> from /dev/random.
> 
> Before 3.13, it would significantly slow down readers of /dev/random
> if you were pulling from /dev/urandom even by moderate amounts (for
> example, by the Chrome browser, which is using /dev/urandom for
> session keys for all TLS connections --- and a Chrome browser
> typically opens lots of TLS connections as you browse the web).

So, keep the existing man page text, or rework, do you think?

Cheers,

Michael




-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-11-15 21:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-15  6:56 Revised draft of random(7) man page for review Michael Kerrisk (man-pages)
     [not found] ` <50af97ae-e65e-30f3-c5ec-6f2129711f39-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-15 15:04   ` Theodore Ts'o
     [not found]     ` <20161115150407.jy7ix2i6dw5nyhbk-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2016-11-15 21:51       ` Michael Kerrisk (man-pages) [this message]
2016-11-19 21:39       ` Nikos Mavrogiannopoulos
     [not found]         ` <1261638383.493623.1479591556767.JavaMail.zimbra-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-11-20  9:14           ` Michael Kerrisk (man-pages)
     [not found]             ` <49c33335-5933-e0bd-3e5e-d51ff051425f-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-22 10:20               ` Nikos Mavrogiannopoulos
     [not found]                 ` <1479810045.31825.20.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-11-22 14:04                   ` Michael Kerrisk (man-pages)

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=d729f4db-945f-690b-ada8-d6973b83ac81@gmail.com \
    --to=mtk.manpages-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=c@tunnel53.net \
    --cc=ibobrik-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=laurent-AyimVQWTEHzsq35pWSNszA@public.gmane.org \
    --cc=laurent.georget-vbcOdlJ0SulGWvitb5QawA@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=luke-g3IQT7+C+D7QXOPxS62xeg@public.gmane.org \
    --cc=matt-6J8q6J5oQjkQrrorzV6ljw@public.gmane.org \
    --cc=mpm-VDJrAJ4Gl5ZBDgjK7y7TUQ@public.gmane.org \
    --cc=nmav-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=smueller-T9tCv8IpfcWELgA04lAiVw@public.gmane.org \
    --cc=t@2uo.de \
    --cc=tytso-3s7WtUTddSA@public.gmane.org \
    --cc=xypron.glpk-Mmb7MZpHnFY@public.gmane.org \
    /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