public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] RSA in U-Boot
@ 2019-03-18  2:17 AKASHI, Takahiro
  2019-04-25  2:12 ` AKASHI, Takahiro
  0 siblings, 1 reply; 23+ messages in thread
From: AKASHI, Takahiro @ 2019-03-18  2:17 UTC (permalink / raw)
  To: u-boot

Hi,

I'd like to discuss this topic in public.
I will appreciate your comments here.
# FYI, I now started to experimentally port linux's pkcs7/x509
# parser.

Thanks,
-Takahiro Akashi

----- Forwarded message from Simon Glass <sjg@chromium.org> -----

Date: Thu, 7 Mar 2019 19:56:10 -0700
From: Simon Glass <sjg@chromium.org>
To: "AKASHI, Takahiro" <takahiro.akashi@linaro.org>
Subject: Re: RSA in U-Boot

Hi Takahiro,

On Thu, 7 Mar 2019 at 17:27, AKASHI, Takahiro
<takahiro.akashi@linaro.org> wrote:
>
> Hi Simon,
>
> Before I start discussions publicly, I'd like to hear
> your opinion first.

I do think it is better to discuss this in public since there will be
other opinions.

>
> I'm now working on implementing "secure boot"
> for UEFI U-Boot.
>
> As you might know, there are a couple of features
> required to achieve "secure boot":
> (I won't discuss about secure storage here though.)
> - x509 certificate decoder
> - pkcs7 decoder (for PE file's signature)
> - RSA verification
> - (hash digest, sha256)
>
> The original code, which was written by some other guy,
> Patrick, uses BearSSL for x509 and RSA and
> I'm now wondering what is the best solution.
> Obviously, I can think of several options here:
> 1. use BearSSL
>   1.a just import minimum set of files akin lib/libfdt
>   1.b link whole BearSSL as a library, merging the code
>         as git submodule
> 2. use openssl
> 3. import linux kernel code, particularly x509 & pkcs7 parser
> 4. write our own code
>
> I suppose that you weighed similar choices when you implemented
> "FIT image signing".
> Can you share your opinion with me?

I think if you can do 3 then it keeps U-Boot self-contained and
perhaps provides for simple code. That said, if the amount of code is
large and has an upstream there is clear precident for 1a, as you say.

I am not sure about 4. If it is a relatively small amount of code,
then maybe, but surely it makes sense to use the linux code where
possible. That is what I did with the U-Boot livetree code.

1b sounds painful to me.

>
> Regarding your lib/rsa code, you intentionally avoided to
> add formula of inverse-mod and power-mod of R. Do you still
> believe that the assumption is appropriate?
> (BearSSL implements its own montgomery.

If you look at a talk I gave on this, you can see that one of the
goals was to implement it efficiently, with minimal extra code at
run-time, and minimal memory usage. So unpacking complex key
structures did not seem like a good idea. From memory you can do
verified boot in about 7KB of extra code in U-Boot and it runs in a
small number of milliseconds.

UEFI is obviously pretty big, so perhaps efficiency concerns are less
important. More important probably is wide compatibility, supporting
all possible options, etc.

I hope this is helpful.

Regards,
Simon

----- End forwarded message -----

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2019-08-27 23:55 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-03-18  2:17 [U-Boot] RSA in U-Boot AKASHI, Takahiro
2019-04-25  2:12 ` AKASHI, Takahiro
2019-04-26  9:05   ` Alexander Graf
2019-04-26 20:16     ` Laszlo Ersek
2019-04-27  5:31       ` Paolo Bonzini
2019-04-27  6:33         ` Heinrich Schuchardt
2019-05-16  7:23           ` Sughosh Ganu
2019-05-16 10:39             ` Wolfgang Denk
2019-05-16 10:45               ` Ilias Apalodimas
2019-05-16 11:13                 ` Tom Rini
2019-05-16 11:19                   ` Ilias Apalodimas
2019-05-16 11:56                   ` AKASHI Takahiro
2019-05-16 12:07                     ` Tom Rini
2019-05-16 12:18                     ` Wolfgang Denk
2019-05-17  0:12                       ` AKASHI Takahiro
2019-05-17  8:47                         ` Wolfgang Denk
2019-05-22  5:48                           ` AKASHI Takahiro
2019-06-05  5:27                             ` AKASHI Takahiro
2019-06-05 14:04                               ` Tom Rini
2019-08-27 10:35                         ` Grant Likely
2019-08-27 23:55                           ` AKASHI Takahiro
2019-05-16 17:57             ` Paolo Bonzini
2019-05-17  0:26     ` AKASHI, Takahiro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox