[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAGXu5jKY9SdZU7BibZf9kLx-MO3tVASPWE2hHZJXSPRkWfivKQ@mail.gmail.com>
Date: Wed, 7 Nov 2012 07:10:27 -0800
From: Kees Cook <keescook@...omium.org>
To: "Theodore Ts'o" <tytso@....edu>, Kees Cook <keescook@...omium.org>,
akpm@...ux-foundation.org, jeff.liu@...cle.com, aedilger@...il.com,
alan@...ux.intel.com, gregkh@...uxfoundation.org, jakub@...hat.com,
james.l.morris@...cle.com, john.sobecki@...cle.com,
viro@...iv.linux.org.uk, LKML <linux-kernel@...r.kernel.org>
Subject: Re: + binfmt_elfc-use-get_random_int-to-fix-entropy-depleting.patch
added to -mm tree
On Wed, Nov 7, 2012 at 1:32 AM, Theodore Ts'o <tytso@....edu> wrote:
> On Tue, Nov 06, 2012 at 05:11:17PM -0800, Kees Cook wrote:
>> Hrm, I don't like this. get_random_int() specifically says: "Get a
>> random word for internal kernel use only." The intent of AT_RANDOM is
>> for userspace pRNG seeding (though glibc currently uses it directly
>> for stack protector and pointer mangling), which is not "internal
>> kernel use only". :) Though I suppose this is already being used for
>> the randomize_stack_top(), but I think it'd still be better to use
>> higher quality bits.
>
> Well, in practice, right now, get_random_int() is only being used for
> different cases of ASLR of one variety or another (either by the
> kernel in exec or mmap, or in userspace). So I'm not sure it really
> is a major issue.
Hrm, yes. I see that the network code uses random32, not
get_random_int(). How are these different? Is one demonstrably better?
> If we also change get_random_int() to use a more secure cryptographic
> random generator (i.e., maybe AES instead of MD5), would that be
> sufficient to address your concerns? We're not using get_random_int()
> for anything that's timing sensitive, so that shouldn't be a problem.
I wonder if using AES would have a measurable impact on fork speeds?
> Or maybe we should just add an explicit CRNG set of routines (like the
> similar discussions to make an explicitly named PRNG set of routines),
> so callers can use whatever random number generator is appropriate for
> their performance and security needs.
If we do use get_random_int() here, I'd at least like to see its
comment changed to reflect its actual purpose (since it's not
"internal use only") as well as its expected unpredictability. (This
would help document the utility of get_random_bytes() vs
get_random_int() vs random32().)
-Kees
--
Kees Cook
Chrome OS Security
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists