public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: "Palmer, Thomas" <thomas.palmer@hpe.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	"Gibbons, Pat" <pat.gibbons@hpe.com>
Subject: Re: RNG algo question
Date: Sat, 17 Sep 2016 08:19:00 +0100	[thread overview]
Message-ID: <CAKv+Gu8_d6si7V2GsrLDdxXwK40D=nhTeCpGsiC+d9R_B1OVYw@mail.gmail.com> (raw)
In-Reply-To: <CS1PR84MB0151756212B19885B1E53887EDF30@CS1PR84MB0151.NAMPRD84.PROD.OUTLOOK.COM>

On 16 September 2016 at 22:33, Palmer, Thomas <thomas.palmer@hpe.com> wrote:
>
> EDK2 community
>
> Why is the RngGetRNG  sending requests for "gEfiRngAlgorithmRaw"  to "RdRandGenerateEntropy",  which does AES operations on RDRAND output, whereas the requests for "gEfiRngAlgorithmSp80090Ctr256Guid" get sent to RdRandGetBytes which simply reads the rdrand source without modification.
>
> Shouldn't the processing be switched, so that "Raw" goes to RdRandGetBytes and "gEfiRngAlgorithmSp80090Ctr256Guid" goes to RdRandGenerateEntropy?  I did not see anything in the UEFI 2.5 spec indicating why this was the case.
>

The RDRAND instruction does not give you raw entropy, but the output
of a DRBG. So the 'raw' entropy is being emulated by taking multiple
rounds of RDRAND output and shuffling it around to make it 'raw'

>From the top of RngDxe.c:

  RNG Algoritnms defined in UEFI 2.4:
   - EFI_RNG_ALGORITHM_SP800_90_CTR_256_GUID  - Supported
     (RDRAND implements a hardware NIST SP800-90 AES-CTR-256 based DRBG)
   - EFI_RNG_ALGORITHM_RAW                    - Supported
     (Structuring RDRAND invocation can be guaranteed as high-quality
entropy source)


  reply	other threads:[~2016-09-17  7:19 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-16 21:33 RNG algo question Palmer, Thomas
2016-09-17  7:19 ` Ard Biesheuvel [this message]
2016-09-17 16:46   ` Long, Qin

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-list 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='CAKv+Gu8_d6si7V2GsrLDdxXwK40D=nhTeCpGsiC+d9R_B1OVYw@mail.gmail.com' \
    --to=devel@edk2.groups.io \
    /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