All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: u-boot@lists.denx.de
Subject: [PATCH 1/4] tools: mkeficapsule: add firmwware image signing
Date: Fri, 14 May 2021 16:39:04 +0300	[thread overview]
Message-ID: <YJ59eCSPADMNzW+F@apalos.home> (raw)
In-Reply-To: <CAA93ih0KHaq+EnfrzNF+kVhqZ=5HApeStOnYH+GGU6prJYOwPw@mail.gmail.com>

On Fri, May 14, 2021 at 10:09:46PM +0900, Masami Hiramatsu wrote:
> Hi all,
> 
> I think it's time to summarize the topics on this thread.
> 
> 1. tools/mkeficapsule, config options dependency
>   - The tools, especially useful and distributable tools like
> mkeficapsule should not be changed by the target board configuration.
>   - Since there are target boards which don't need capsule
> authentication, it should be configurable. That also can optimize the
> library dependency.
> 
> 2. tools/mkeficapsule, revert -K/-D options
>   - Since these options are for embedding a public key in the
> devicetree, that is not related to the capsule file. Also, the same
> feature can be provided by a simple shell script.
> 
> 3. capsule authentication, key embedding method
>   - Embedding key in the devicetree is too fragile, especially, the
> document says overwriting new device tree including key with fdt
> command. That is not for the product, only for proof of concept.
>   - Such a key should be embedded in the U-Boot, or hardware secure
> storage so that the user can not change it.
>     (BTW, I think there are more options, like embedding keys in SCP
> firmware, TF-A, or OP-TEE, outside of U-Boot)
> 
> 4. capsule authentication, authentication enablement
>   - The UEFI spec said IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED can be
> supported but cleared (for the current running firmware). This means
> it is possible that the authentication feature is supported, but not
> enabled.
>   - For ensuring security, if U-Boot is compiled with
> CONFIG_EFI_CAPSULE_AUTHETICATE=y,
> IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED must always be set.
> 
> Are there any other topics on this thread? and any other comments on
> these topics?

I think you already mentioned that, but the key retrieval, should be a
callback of some sort that each vendor/hardware can define to his own
special function and we keep the default as 'key is embedded in U-Boot'.
All of the above sound reasonable. I still think (1) is kinda useless, but
I'll leave up to the maintainers.

Thanks
/Ilias

> 
> Thank you,
> 
> 
> 2021?5?14?(?) 18:51 AKASHI Takahiro <takahiro.akashi@linaro.org>:
> 
> >
> > Heinrich,
> >
> > Can you please reply to each of my replies?
> > Otherwise, I don't know which one of my comments/opinions you agree to
> > and which one not.
> >
> > On Fri, May 14, 2021 at 10:45:48AM +0200, Heinrich Schuchardt wrote:
> > > On 5/14/21 9:13 AM, AKASHI Takahiro wrote:
> > > > > E.g for IMAGE_ATTRIBUTE_IN_USE
> > > > >
> > > > > AttributesSupported | AttributesSetting | Meaning
> > > > > --------------------+-------------------+--------------------
> > > > > 0                   | 0                 | state is unknown
> > > > > 0                   | 1                 | state is unknown
> > > > > 1                   | 0                 | image is not in use
> > > > > 1                   | 1                 | image is in use
> > > > We are discussing *_REQUIRED.
> > > > Can you give me the same table for *_REQUIRED?
> > > >
> > > > -Takahiro Akashi
> > > >
> > > >
> > >
> > > IMAGE_ATTRIBUTE_RESET_REQUIRED
> > >
> > > AttributesSupported | AttributesSetting | Meaning
> > > --------------------+-------------------+--------------------
> > > 0                   | 0                 | state is unknown
> > > 0                   | 1                 | state is unknown
> > > 1                   | 0                 | reset is not needed
> > >                     |                   | to complete upgrade
> > > 1                   | 1                 | reset is needed
> > >                     |                   | to complete upgrade
> > >
> > >
> > > IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED
> > >
> > > AttributesSupported | AttributesSetting | Meaning
> > > --------------------+-------------------+--------------------
> > > 0                   | 0                 | state is unknown
> > > 0                   | 1                 | state is unknown
> > > 1                   | 0                 | signed and unsigned
> > >                     |                   | capsules are accepted
> > > 1                   | 1                 | capsules are only
> > >                     |                   | accepted after
> > >                     |                   | checking the signature
> >
> > So what?
> > This table shows there is a case where the authentication will be
> > skipped even if CONFIG_EFI_CAPSULE_AUTHETICATE is on and
> > it is completely compliant with UEFI specification.
> >
> > That is what I and Masami was discussing.
> >
> > > > > > > But as I mentioned in my comment against Sughosh's patch,
> > > > > > > the authentication process will be enforced only if the capsule has
> > > > > > > an attribute, IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED.
> > > > > > >
> > > > > >
> > > > > > That would be a security desaster.
> >
> > So I said that you should discuss the topic in UEFI forum first
> > if you think so.
> >
> > -Takahiro Akashi
> >
> >
> > > For both bits AttributesSupported=0 does not make much sense.
> > >
> > > IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED is a property of the current
> > > image and should only be deleted by installing a new capsule.
> > >
> > > A vendor might send you a special firmware image for unlocking your
> > > device after registering as a developer. Xiaomi handled it like this for
> > > one of my routers.
> > >
> > > Best regards
> > >
> > > Heinrich
> 
> 
> 
> --
> Masami Hiramatsu

  reply	other threads:[~2021-05-14 13:39 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-12  4:57 [PATCH 0/4] efi_loader: capsule: improve capsule authentication support AKASHI Takahiro
2021-05-12  4:57 ` [PATCH 1/4] tools: mkeficapsule: add firmwware image signing AKASHI Takahiro
2021-05-12  8:56   ` Heinrich Schuchardt
2021-05-13  3:08     ` AKASHI Takahiro
2021-05-13  4:22       ` Heinrich Schuchardt
2021-05-13  5:00         ` AKASHI Takahiro
2021-05-13  5:35           ` Heinrich Schuchardt
2021-05-13  6:36             ` AKASHI Takahiro
2021-05-13  6:45               ` Heinrich Schuchardt
2021-05-13  7:45                 ` AKASHI Takahiro
2021-05-13  5:12         ` Masami Hiramatsu
2021-05-13  5:50           ` Heinrich Schuchardt
2021-05-13  6:44             ` Masami Hiramatsu
2021-05-13  6:52               ` Heinrich Schuchardt
2021-05-13  7:38                 ` AKASHI Takahiro
2021-05-13  6:50             ` AKASHI Takahiro
2021-05-13  6:55               ` Heinrich Schuchardt
2021-05-13  7:23                 ` AKASHI Takahiro
2021-05-13  8:18                   ` Masami Hiramatsu
2021-05-13  8:38                     ` AKASHI Takahiro
2021-05-13 10:27                       ` Ilias Apalodimas
2021-05-13 16:12                         ` Masami Hiramatsu
2021-05-13 16:32                           ` Heinrich Schuchardt
2021-05-13 16:42                             ` Ilias Apalodimas
2021-05-14  4:50                               ` AKASHI Takahiro
2021-05-14  7:56                                 ` Ilias Apalodimas
2021-05-14  4:13                             ` AKASHI Takahiro
2021-05-13 10:40                       ` Heinrich Schuchardt
2021-05-13 18:25                     ` Heinrich Schuchardt
2021-05-14  6:19                       ` AKASHI Takahiro
2021-05-14  6:59                         ` Heinrich Schuchardt
2021-05-14  7:13                           ` AKASHI Takahiro
2021-05-14  8:45                             ` Heinrich Schuchardt
2021-05-14  9:51                               ` AKASHI Takahiro
2021-05-14 10:08                                 ` Heinrich Schuchardt
2021-05-14 13:09                                 ` Masami Hiramatsu
2021-05-14 13:39                                   ` Ilias Apalodimas [this message]
2021-05-15  2:03                                   ` Heinrich Schuchardt
2021-05-15  2:14                                     ` Masami Hiramatsu
2021-05-12  4:57 ` [PATCH 2/4] tools: mkeficapsule: remove device-tree related operation AKASHI Takahiro
2021-05-12  7:20   ` Ilias Apalodimas
2021-05-12  7:49     ` Masami Hiramatsu
2021-05-12  8:01       ` Ilias Apalodimas
2021-05-12 10:01         ` Heinrich Schuchardt
2021-05-13  2:33           ` AKASHI Takahiro
2021-05-13  5:08             ` Heinrich Schuchardt
2021-05-13  7:13               ` AKASHI Takahiro
2021-05-13 17:42                 ` Heinrich Schuchardt
2021-05-14  2:21                   ` [PATCH 2/4] tools: mkeficapsule: remove device-tree related operationy AKASHI Takahiro
2021-05-14  2:23                   ` [PATCH 2/4] tools: mkeficapsule: remove device-tree related operation Masami Hiramatsu
2021-05-12  4:57 ` [PATCH 3/4] tools: add fdtsig command AKASHI Takahiro
2021-05-13  5:23   ` Heinrich Schuchardt
2021-05-13  7:03     ` AKASHI Takahiro
2021-05-12  4:57 ` [PATCH 4/4] test/py: efi_capsule: add image authentication test AKASHI Takahiro
2021-05-12  5:04 ` [PATCH 0/4] efi_loader: capsule: improve capsule authentication support Heinrich Schuchardt

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=YJ59eCSPADMNzW+F@apalos.home \
    --to=ilias.apalodimas@linaro.org \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.