Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1660702

Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded before ECDH use

From Theodore Ts'o <tytso@mit.edu>
Newsgroups linux.kernel
Subject Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded before ECDH use
Date 2017-06-08 05:10 +0200
Message-ID <tPVZD-76l-9@gated-at.bofh.it> (permalink)
References <tPqM9-3tE-3@gated-at.bofh.it> <tPqMa-3tE-27@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, Jun 06, 2017 at 07:48:03PM +0200, Jason A. Donenfeld wrote:
> This protocol uses lots of complex cryptography that relies on securely
> generated random numbers. Thus, it's important that the RNG is actually
> seeded before use. Fortuantely, it appears we're always operating in
> process context (there are many GFP_KERNEL allocations and other
> sleeping operations), and so we can simply demand that the RNG is seeded
> before we use it.
> 
> We take two strategies in this commit. The first is for the library code
> that's called from other modules like hci or mgmt: here we just change
> the call to get_random_bytes_wait, and return the result of the wait to
> the caller, along with the other error codes of those functions like
> usual. Then there's the SMP protocol handler itself, which makes many
> many many calls to get_random_bytes during different phases. For this,
> rather than have to change all the calls to get_random_bytes_wait and
> propagate the error result, it's actually enough to just put a single
> call to wait_for_random_bytes() at the beginning of the handler, to
> ensure that all the subsequent invocations are safe, without having to
> actually change them. Likewise, for the random address changing
> function, we'd rather know early on in the function whether the RNG
> initialization has been interrupted, rather than later, so we call
> wait_for_random_bytes() at the top, so that later on the call to
> get_random_bytes() is acceptable.

Do we need to do all of this?  Bluetooth folks, is it fair to assume
that hci_power_on() has to be called before any bluetooth functions
can be done?  If so, adding a wait_for_random_bytes() in
hci_power_on() might be all that is necessary.

	       	     	    	    - Ted

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded  before ECDH use Theodore Ts'o <tytso@mit.edu> - 2017-06-08 05:10 +0200
  Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded  before ECDH use Marcel Holtmann <marcel@holtmann.org> - 2017-06-08 07:10 +0200
    Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded  before ECDH use "Jason A. Donenfeld" <Jason@zx2c4.com> - 2017-06-08 14:10 +0200
    Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded  before ECDH use "Jason A. Donenfeld" <Jason@zx2c4.com> - 2017-06-08 14:10 +0200
      Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded  before ECDH use Marcel Holtmann <marcel@holtmann.org> - 2017-06-08 19:10 +0200
        Re: [PATCH v4 12/13] bluetooth/smp: ensure RNG is properly seeded  before ECDH use "Jason A. Donenfeld" <Jason@zx2c4.com> - 2017-06-08 19:40 +0200
          [PATCH] bluetooth: ensure RNG is properly seeded before powerup "Jason A. Donenfeld" <Jason@zx2c4.com> - 2017-06-09 03:20 +0200

csiph-web