Add bootscript support to esbc_validate.
Subsystems (2)
PATCH 1/1 Add bootscript support to esbc_validate.
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#define CONFIG_SECBOOT \
"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \
"esbc_halt;"
#endif
3. Boot Script can contain esbc_validate commands and bootm command. Uboot source command used in default secure boot command will run the bootscript.
4. Command esbc_halt added to ensure either bootm executes after validation of images or core should just spin.
--- arch/arm/include/asm/fsl_secure_boot.h | 25 +++++++++ arch/powerpc/include/asm/fsl_secure_boot.h | 19 +++++++ board/freescale/common/cmd_esbc_validate.c | 16 ++++++ include/config_fsl_secboot.h | 89 ++++++++++++++++++++++++++++++ include/configs/ls1021aqds.h | 1 + 5 files changed, 150 insertions(+) create mode 100644 arch/arm/include/asm/fsl_secure_boot.h create mode 100644 include/config_fsl_secboot.h
arch/arm/include/asm/fsl_secure_boot.h new file +25 -0
@@ -0,0 +1,25 @@ +/* +* Copyright 2015 Freescale Semiconductor, Inc. +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef __FSL_SECURE_BOOT_H +#define __FSL_SECURE_BOOT_H + +#ifdef CONFIG_SECURE_BOOT +#ifndef CONFIG_FIT_SIGNATURE + +#define CONFIG_EXTRA_ENV \ + "setenv fdt_high 0xcfffffff;" \ + "setenv initrd_high 0xcfffffff;" \ + "setenv hwconfig \'fsl_ddr:ctlr_intlv=null,bank_intlv=null\';" + +/* The address needs to be modified according to NOR memory map */ +#define CONFIG_BOOTSCRIPT_HDR_ADDR 0x600a0000 + +#include <config_fsl_secboot.h> +#endif +#endif + +#endif
arch/powerpc/include/asm/fsl_secure_boot.h +19 -0
@@ -67,5 +67,24 @@#define CONFIG_FSL_ISBC_KEY_EXT #endif +#ifndef CONFIG_FIT_SIGNATURE +/* The bootscript header address is different for B4860 because the NOR +* mapping is different on B4 due to reduced NOR size. +*/ +#if defined(CONFIG_B4860QDS ) +#define CONFIG_BOOTSCRIPT_HDR_ADDR 0xecc00000 +#elif defined(CONFIG_FSL_CORENET ) +#define CONFIG_BOOTSCRIPT_HDR_ADDR 0xe8e00000 +#elif defined(CONFIG_BSC9132QDS ) +#define CONFIG_BOOTSCRIPT_HDR_ADDR 0x88020000 +#elif defined(CONFIG_C29XPCIE ) +#define CONFIG_BOOTSCRIPT_HDR_ADDR 0xec020000 +#else +#define CONFIG_BOOTSCRIPT_HDR_ADDR 0xee020000 +#endif + +#include <config_fsl_secboot.h> +#endif +#endif #endif
board/freescale/common/cmd_esbc_validate.c +16 -0
@@ -8,6 +8,16 @@#include <command.h> #include <fsl_validate.h> +static int do_esbc_halt (cmd_tbl_t *cmdtp,int flag,int argc, +char *const argv[]) +{ +printf ("Core is entering spin loop.\n" ); +loop: + goto loop; + +return 0 ; +} +static int do_esbc_validate (cmd_tbl_t *cmdtp,int flag,int argc,char *const argv[]) {
@@ -32,3 +42,9 @@ U_BOOT_CMD("Validates signature on a given image using RSA verification" , esbc_validate_help_text ); + +U_BOOT_CMD ( + esbc_halt,1 ,0 , do_esbc_halt, +"Put the core in spin loop " , +"" +);
include/config_fsl_secboot.h new file +89 -0
89 lines not on this page · raw message
include/configs/ls1021aqds.h +1 -0
@@ -656,6 +656,7 @@ unsigned long get_board_ddr_clk(void);#ifdef CONFIG_SECURE_BOOT #define CONFIG_CMD_BLOB +#include <asm/fsl_secure_boot.h> #endif #endif
Signature · 1 line
1.8.1.4
PATCH 1/1 Add bootscript support to esbc_validate.
Quoted 10 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \
Quoted 8 lines
"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.
What's the purpose of "esbc_halt"? Once it enters the spin, how to get it out?
York
PATCH 1/1 Add bootscript support to esbc_validate.
Hi York,
Quoted 27 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 9:45 PM
To: Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Gupta Ruchika-R66431; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 9 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \Quoted 8 lines
"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run
the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.
Quoted 2 lines
What's the purpose of "
esbc_halt"? Once it enters the spin, how to get it out?
The purpose of bootscript is to validate the next level images and then pass control to it, so bootscript must contain a bootm command. We don't expect control to return back to u-boot. Hence a command esbc_halt is introduced which would make the core spin and not provide uboot prompt in case bootscript doesn't pass control to next level image. For secure chain of trust, only validated bootscript should be allowed to execute and be responsible for passing control to next level image.
Ruchika
Quoted 2 lines
York
PATCH 1/1 Add bootscript support to esbc_validate.
Quoted 29 lines · On 03/10/2015 09:25 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 27 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 9:45 PM
To: Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Gupta Ruchika-R66431; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 17 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run
the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.
Quoted 5 lines
Quoted 2 lines
What's the purpose of "
esbc_halt"? Once it enters the spin, how to get it out?The purpose of bootscript is to validate the next level images and then pass control to it, so bootscript must contain a bootm command. We don't expect control to return back to u-boot. Hence a command
esbc_haltis introduced which would make the core spin and not provide uboot prompt in case bootscript doesn't pass control to next level image. For secure chain of trust, only validated bootscript should be allowed to execute and be responsible for passing control to next level image.
Ruchika,
Do you expect secure boot to run automatically once u-boot reaches the prompt and the "source $img_addr" to actually boot the OS? You put "esbc_halt" as a fall-back to catch failure above? It doesn't sounds very secure to me.
I am hoping other reviewers can chime in and give comments.
York
PATCH 1/1 Add bootscript support to esbc_validate.
Hi York,
Quoted 45 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 10:03 PM
To: Gupta Ruchika-R66431; Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 29 lines · On 03/10/2015 09:25 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 27 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 9:45 PM
To: Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Gupta Ruchika-R66431; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 17 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run
the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.Quoted 3 lines
Quoted 2 lines
What's the purpose of "
esbc_halt"? Once it enters the spin, how to get it out?The purpose of bootscript is to validate the next level images and then
pass control to it, so bootscript must contain a bootm command. We don't expect control to return back to u-boot. Hence a command
esbc_haltis introduced which would make the core spin and not provide uboot prompt in case bootscript doesn't pass control to next level image.Quoted 1 line
For secure chain of trust, only validated bootscript should be allowed to
Quoted 8 lines
execute and be responsible for passing control to next level image.
Quoted 1 line
Ruchika,
Do you expect secure boot to run automatically once u-boot reaches the prompt and the "source $img_addr" to actually boot the OS? You put "
esbc_halt" as a fall-back to catch failure above? It doesn't sounds very secure to me.
The bootscript is first validated. Only an authenticated user, who has the private key can sign the bootscript. Thus validating bootscript is important in secure boot chain of trust.
You are right regarding fallback as esbc_halt. In the esbc_halt implementation, we will add code to clear security secrets on the chip, and issue a reset. We will send a separate patch for that.
Ruchika
Quoted 4 lines
I am hoping other reviewers can chime in and give comments.
York
PATCH 1/1 Add bootscript support to esbc_validate.
Quoted 52 lines · On 03/11/2015 03:39 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 50 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 10:03 PM
To: Gupta Ruchika-R66431; Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 29 lines · On 03/10/2015 09:25 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 27 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 9:45 PM
To: Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Gupta Ruchika-R66431; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 17 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run
the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.Quoted 3 lines
Quoted 2 lines
What's the purpose of "
esbc_halt"? Once it enters the spin, how to get it out?The purpose of bootscript is to validate the next level images and then
pass control to it, so bootscript must contain a bootm command. We don't expect control to return back to u-boot. Hence a command
esbc_haltis introduced which would make the core spin and not provide uboot prompt in case bootscript doesn't pass control to next level image.Quoted 1 line
For secure chain of trust, only validated bootscript should be allowed to
execute and be responsible for passing control to next level image.
Quoted 1 line
Ruchika,
Quoted 8 lines
Quoted 3 lines
Do you expect secure boot to run automatically once u-boot reaches the prompt and the "source $img_addr" to actually boot the OS? You put "
esbc_halt" as a fall-back to catch failure above? It doesn't sounds very secure to me.The bootscript is first validated. Only an authenticated user, who has the private key can sign the bootscript. Thus validating bootscript is important in secure boot chain of trust.
You are right regarding fallback as
esbc_halt. In theesbc_haltimplementation, we will add code to clear security secrets on the chip, and issue a reset. We will send a separate patch for that.
Wouldn't it be possible to call a reset/hang/panic when the validation fails, before "source $img_addr"?
York
PATCH 1/1 Add bootscript support to esbc_validate.
Quoted 58 lines · York Sun
Quoted 56 lines · On 03/11/2015 03:39 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 53 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 10:03 PM
To: Gupta Ruchika-R66431; Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 29 lines · On 03/10/2015 09:25 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 27 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 9:45 PM
To: Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Gupta Ruchika-R66431; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 17 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run
the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.Quoted 3 lines
Quoted 2 lines
What's the purpose of "
esbc_halt"? Once it enters the spin, how to get it out?The purpose of bootscript is to validate the next level images and then
pass control to it, so bootscript must contain a bootm command. We don't expect control to return back to u-boot. Hence a command
esbc_haltis introduced which would make the core spin and not provide uboot prompt in case bootscript doesn't pass control to next level image.Quoted 1 line
For secure chain of trust, only validated bootscript should be allowed to
execute and be responsible for passing control to next level image.
Quoted 1 line
Ruchika,
Do you expect secure boot to run automatically once u-boot reaches the prompt and the "source $img_addr" to actually boot the OS? You put "
esbc_halt" as a fall-back to catch failure above? It doesn't sounds very secure to me.
Quoted 7 lines
Quoted 4 lines
The bootscript is first validated. Only an authenticated user, who has the private key can sign the bootscript. Thus validating bootscript is important in secure boot chain of trust.
You are right regarding fallback as
esbc_halt. In theesbc_haltimplementation, we will add code to clear security secrets on the chip, and issue a reset. We will send a separate patch for that.Wouldn't it be possible to call a reset/hang/panic when the validation fails, before "source $img_addr"?
I'd assume it already has that, but it's still good to have something to deal with the case where the script returns due to some failure.
-Scott
PATCH 1/1 Add bootscript support to esbc_validate.
Quoted 61 lines · Scott Wood
Quoted 60 lines · York Sun
Quoted 58 lines · On 03/11/2015 03:39 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 45 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 10:03 PM
To: Gupta Ruchika-R66431; Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 29 lines · On 03/10/2015 09:25 AM, Gupta Ruchika-R66431 wrote:
Hi York,
Quoted 27 lines
-----Original Message-----
From: Sun York-R58495
Sent: Tuesday, March 10, 2015 9:45 PM
To: Rana Gaurav-B46163; u-boot at lists.denx.de
Cc: Wood Scott-B07421; Gupta Ruchika-R66431; Bansal Aneesh-B39320
Subject: Re: [PATCH] Add bootscript support toesbc_validate.Quoted 17 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run
the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.Quoted 3 lines
Quoted 2 lines
What's the purpose of "
esbc_halt"? Once it enters the spin, how to get it out?The purpose of bootscript is to validate the next level images and then
pass control to it, so bootscript must contain a bootm command. We don't expect control to return back to u-boot. Hence a command
esbc_haltis introduced which would make the core spin and not provide uboot prompt in case bootscript doesn't pass control to next level image.Quoted 1 line
For secure chain of trust, only validated bootscript should be allowed to
Quoted 8 lines
execute and be responsible for passing control to next level image.
Quoted 1 line
Ruchika,
Do you expect secure boot to run automatically once u-boot reaches the prompt and the "source $img_addr" to actually boot the OS? You put "
esbc_halt" as a fall-back to catch failure above? It doesn't sounds very secure to me.The bootscript is first validated. Only an authenticated user, who has the private key can sign the bootscript. Thus validating bootscript is important in secure boot chain of trust.
Quoted 9 lines
Quoted 5 lines
Quoted 2 lines
You are right regarding fallback as
esbc_halt. In theesbc_haltimplementation, we will add code to clear security secrets on the chip, and issue a reset. We will send a separate patch for that.Wouldn't it be possible to call a reset/hang/panic when the validation fails, before "source $img_addr"?
I'd assume it already has that, but it's still good to have something to deal with the case where the script returns due to some failure.
If that's the case, I am OK with the addition of "esbc_halt" command.
York
York Sun
AppliedPATCH 1/1 Add bootscript support to esbc_validate.
In reply to Gaurav RanaQuoted 18 lines · Gaurav Rana
1. Default environment will be used for secure boot flow which can't be edited or saved.
2. Command for secure boot is predefined in the default environment which will run on autoboot (and autoboot is the only option allowed in case of secure boot) and it looks like this:
#defineCONFIG_SECBOOT\"setenv bs_hdraddr 0xe8e00000;" \ "esbc_validate $bs_hdraddr;" \ "source $img_addr;" \"
esbc_halt;"
#endif
3. Boot Script can containesbc_validatecommands and bootm command. Uboot source command used in default secure boot command will run the bootscript.
4. Commandesbc_haltadded to ensure either bootm executes after validation of images or core should just spin.
Quoted 3 lines
Signed-off-by Ruchika Gupta <[email protected]>Signed-off-by Gaurav Rana <[email protected]>---
Applied to fsl-qoriq master, awaiting upstream.
York