From patchwork Thu Jun 13 16:19:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abdellatif El Khlifi X-Patchwork-Id: 45074 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE4CBC41513 for ; Thu, 13 Jun 2024 16:19:54 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.13067.1718295591407706231 for ; Thu, 13 Jun 2024 09:19:51 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: abdellatif.elkhlifi@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 05E9DFEC; Thu, 13 Jun 2024 09:20:15 -0700 (PDT) Received: from e130802.arm.com (unknown [10.57.83.170]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BA2A23F73B; Thu, 13 Jun 2024 09:19:47 -0700 (PDT) From: abdellatif.elkhlifi@arm.com To: meta-arm@lists.yoctoproject.org, Jon.Mason@arm.com Cc: Bence Balogh , Harsimran Singh Tungal , Delane Brandy Subject: [PATCH 1/2] arm-bsp/documentation: corstone1000: update the boot chain Date: Thu, 13 Jun 2024 17:19:37 +0100 Message-Id: <20240613161938.345869-1-abdellatif.elkhlifi@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 13 Jun 2024 16:19:54 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5801 From: Bence Balogh The Secure Boot chain section is updated in the architecture document to reflect the TF-M BL1 design. Signed-off-by: Bence Balogh Signed-off-by: Harsimran Singh Tungal Signed-off-by: Delane Brandy --- .../corstone1000/images/SecureBootChain.png | Bin 95626 -> 88376 bytes .../corstone1000/software-architecture.rst | 66 +++++++++++++----- 2 files changed, 48 insertions(+), 18 deletions(-) diff --git a/meta-arm-bsp/documentation/corstone1000/images/SecureBootChain.png b/meta-arm-bsp/documentation/corstone1000/images/SecureBootChain.png index 88bb1259f6190d4c4fa957ac98d3b955f1863f63..5ed2a28516249bce6f2735f6d8cbdbed4dbb9316 100644 GIT binary patch literal 88376 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

_Tj5oY@<`_SMSyM>wJ6mp^})nIR$E>%nzP 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 Yyl)+RL3VkC1b#`skQXl%)%X9u0O9LR)c^nh literal 95626 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 pYu>i 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 diff --git a/meta-arm-bsp/documentation/corstone1000/software-architecture.rst b/meta-arm-bsp/documentation/corstone1000/software-architecture.rst index dbac5105..42278e38 100644 --- a/meta-arm-bsp/documentation/corstone1000/software-architecture.rst +++ b/meta-arm-bsp/documentation/corstone1000/software-architecture.rst @@ -93,30 +93,60 @@ and loads the following software in the chain. For the boot chain process to work, the start of the chain should be trusted, forming the Root of Trust (RoT) of the device. The RoT of the device is immutable in nature and encoded into the device by the device owner before it -is deployed into the field. In Corstone-1000, the BL1 image of the secure -enclave and content of the CC312 OTP (One Time Programmable) memory -forms the RoT. The BL1 image exists in ROM (Read Only Memory). +is deployed into the field. In Corstone-1000, the content of the ROM +and CC312 OTP (One Time Programmable) memory forms the RoT. + +Verification of an image can happen either by comparing the computed and +stored hashes, or by checking the signature of the image if the image +is signed. .. image:: images/SecureBootChain.png :width: 870 :alt: SecureBootChain It is a lengthy chain to boot the software on Corstone-1000. On power on, -the secure enclave starts executing BL1 code from the ROM which is the RoT -of the device. Authentication of an image involves the steps listed below: - -- Load image from flash to dynamic RAM. +the Secure Enclave starts executing BL1_1 code from the ROM which is the RoT +of the device. The BL1_1 is the immutable bootloader of the system, it handles +the provisioning on the first boot, hardware initialization and verification +of the next stage. + +The BL1_2 code, hashes and keys are written into the OTP during the provisioning. +The next bootstage is the BL1_2 which is copied from the OTP into the RAM. The +BL1_1 also compares the BL1_2 hash with the hash saved to the OTP. The BL1_2 +verifies and transfers control to the next bootstage which is the BL2. During the +verification, the BL1_2 compares the BL2 image's computed hash with the BL2 hash in +the OTP. The BL2 is MCUBoot in the system. BL2 can provision additional keys on the +first boot and it authenticates the initial bootloader of the host (Host TF-A BL2) +and TF-M by checking the signatures of the images. +The MCUBoot handles the image verification the following way: + +- Load image from a non-volatile memory to dynamic RAM. - The public key present in the image header is validated by comparing with the hash. Depending on the image, the hash of the public key is either stored in the OTP or part of the software which is being already verified in the previous stages. - The image is validated using the public key. -In the secure enclave, BL1 authenticates the BL2 and passes the execution -control. BL2 authenticates the initial boot loader of the host (Host TF-A BL2) -and TF-M. The execution control is now passed to TF-M. TF-M being the runtime -executable of secure enclave which initializes itself and, at the end, -brings the host CPU out of rest. The host follows the boot standard defined -in the `TBBR`_ to authenticate the secure and non-secure software. + +The execution control is passed to TF-M after the verification. TF-M being +the runtime executable of the Secure Enclave which initializes itself and, at the end, +brings the host CPU out of rest. + +The TF-M BL1 design details and reasoning can be found in the `TF-M design documents +`_. + +The Corstone-1000 has some differences compared to this design due to memory (OTP/ROM) +limitations: + +- The provisioning bundle that contains the BL1_2 code is located in the ROM. + This means the BL1_2 cannot be updated during provisioning time. +- The BL1_1 handles most of the hardware initialization instead of the BL1_2. This + results in a bigger BL1_1 code size than needed. +- The BL1_2 does not use the post-quantum LMS verification. The BL2 is verified by + comparing the computed hash to the hash which is stored in the OTP. This means the + BL2 is not updatable. + +The host follows the boot standard defined in the `TBBR`_ to authenticate the +secure and non-secure software. For UEFI Secure Boot, authenticated variables can be accessed from the secure flash. The feature has been integrated in U-Boot, which authenticates the images as per the UEFI @@ -128,11 +158,11 @@ Secure Services Corstone-1000 is unique in providing a secure environment to run a secure workload. The platform has TrustZone technology in the Host subsystem but -it also has hardware isolated secure enclave environment to run such secure +it also has hardware isolated Secure Enclave environment to run such secure workloads. In Corstone-1000, known Secure Services such as Crypto, Protected Storage, Internal Trusted Storage and Attestation are available via PSA Functional APIs in TF-M. There is no difference for a user communicating to -these services which are running on a secure enclave instead of the +these services which are running on a Secure Enclave instead of the secure world of the host subsystem. The below diagram presents the data flow path for such calls. @@ -143,7 +173,7 @@ flow path for such calls. The SE Proxy SP (Secure Enclave Proxy Secure Partition) is a proxy partition -managed by OPTEE which forwards such calls to the secure enclave. The +managed by OPTEE which forwards such calls to the Secure Enclave. The solution relies on the `RSE communication protocol `_ which is a lightweight serialization of the psa_call() API. It can use shared @@ -154,7 +184,7 @@ Unit) is used to implement isolation level 2. For a user to define its own secure service, both the options of the host secure world or secure encalve are available. It's a trade-off between -lower latency vs higher security. Services running on a secure enclave are +lower latency vs higher security. Services running on a Secure Enclave are secure by real hardware isolation but have a higher latency path. In the second scenario, the services running on the secure world of the host subsystem have lower latency but virtual hardware isolation created by @@ -217,7 +247,7 @@ service. The below diagram presents the data flow to store UEFI variables. The U-Boot implementation of the UEFI subsystem uses the U-Boot FF-A driver to communicate with the SMM Service in the secure world. The backend of the SMM service uses the proxy PS from the SE Proxy SP. From there on, the PS -calls are forwarded to the secure enclave as explained above. +calls are forwarded to the Secure Enclave as explained above. .. image:: images/UEFISupport.png From patchwork Thu Jun 13 16:19:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Abdellatif El Khlifi X-Patchwork-Id: 45073 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EDDB1C27C4F for ; Thu, 13 Jun 2024 16:19:54 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.12828.1718295592626313613 for ; Thu, 13 Jun 2024 09:19:52 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: abdellatif.elkhlifi@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B0168FEC; Thu, 13 Jun 2024 09:20:16 -0700 (PDT) Received: from e130802.arm.com (unknown [10.57.83.170]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B302A3F73B; Thu, 13 Jun 2024 09:19:50 -0700 (PDT) From: abdellatif.elkhlifi@arm.com To: meta-arm@lists.yoctoproject.org, Jon.Mason@arm.com Cc: Bence Balogh , Delane Brandy , Harsimran Singh Tungal , Abdellatif El Khlifi Subject: [PATCH 2/2] arm-bsp/documentation: corstone1000: improve tests documentation Date: Thu, 13 Jun 2024 17:19:38 +0100 Message-Id: <20240613161938.345869-2-abdellatif.elkhlifi@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240613161938.345869-1-abdellatif.elkhlifi@arm.com> References: <20240613161938.345869-1-abdellatif.elkhlifi@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 13 Jun 2024 16:19:54 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5802 From: Bence Balogh Improve the documentation in the user guide of the following tests: - SystemReady-IR tests - Manual capsule update and ESRT checks - Linux distros tests - UEFI Secureboot (SB) test - PSA API tests In addition, we moved the tests in one section for better readability. Signed-off-by: Delane Brandy Signed-off-by: Harsimran Singh Tungal Signed-off-by: Bence Balogh Signed-off-by: Abdellatif El Khlifi --- .../documentation/corstone1000/user-guide.rst | 363 ++++++++++-------- 1 file changed, 197 insertions(+), 166 deletions(-) diff --git a/meta-arm-bsp/documentation/corstone1000/user-guide.rst b/meta-arm-bsp/documentation/corstone1000/user-guide.rst index 9e3b9dfd..5dc95642 100644 --- a/meta-arm-bsp/documentation/corstone1000/user-guide.rst +++ b/meta-arm-bsp/documentation/corstone1000/user-guide.rst @@ -3,9 +3,9 @@ # # SPDX-License-Identifier: MIT -########## -User Guide -########## +##################################### +User Guide: Build & run the software +##################################### Notice ------ @@ -43,7 +43,7 @@ Targets Yocto stable branch ------------------- -Corstone-1000 software stack is built on top of Yocto mickledore. +Corstone-1000 software stack is built on top of Yocto scarthgap. Provided components ------------------- @@ -364,6 +364,22 @@ The host will boot trusted-firmware-a, OP-TEE, U-Boot and then Linux, and presen Login using the username root. +Using FVP on Windows or AArch64 Linux +------------------------------------- + +The user should follow the build instructions in this document to build on a Linux host machine. +Then, copy the output binaries to the Windows or Aarch64 Linux machine where the FVP is located. +Then, launch the FVP binary. + +Security Issue Reporting +------------------------ + +To report any security issues identified with Corstone-1000, please send an email to psirt@arm.com. + +########################### +User Guide: Provided tests +########################### + SystemReady-IR tests -------------------- @@ -419,11 +435,8 @@ Now you can plug this USB stick to the board together with ACS test USB stick. **Using ESP in FVP:** -The ESP disk image once created will be used automatically in the Corstone-1000 FVP as the 2nd MMC card image. +The ESP disk image once created will be used automatically in the Corstone-1000 FVP as the 2nd MMC card image. It will be used when the SystemReady-IR tests will be performed on the FVP in the later section. -:: - - kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp -- -C board.msd_mmc.p_mmc_file="${/ir_acs_live_image.img}" Clean Secure Flash Before Testing (applicable to FPGA only) =========================================================== @@ -469,7 +482,7 @@ includes a set of examples of the invariant behaviors that are provided by a set of specifications for enterprise systems (For example: SBSA, SBBR, etc.), so that implementers can verify if these behaviours have been interpreted correctly. -ACS image contains two partitions. BOOT partition and RESULT partition. +The ACS image contains a BOOT partition. Following test suites and bootable applications are under BOOT partition: * SCT @@ -495,11 +508,14 @@ BOOT partition contains the following: ├── grub ├── grub.cfg ├── Image - └── ramdisk-busybox.img + ├── ramdisk-busybox.img + └── acs_results -RESULT partition is used to store the test results. -**NOTE**: PLEASE MAKE SURE THAT "acs_results" FOLDER UNDER THE RESULT PARTITION IS EMPTY BEFORE YOU START THE TESTING. OTHERWISE THE TEST RESULTS -WILL NOT BE CONSISTENT +The BOOT partition is also used to store the test results. The +results are stored in the `acs_results` folder. + +**NOTE**: PLEASE ENSURE THAT the `acs_results` FOLDER UNDER THE BOOT PARTITION IS +EMPTY BEFORE YOU START TESTING. OTHERWISE THE TEST RESULTS WILL NOT BE CONSISTENT. FPGA instructions for ACS image =============================== @@ -563,19 +579,6 @@ The details of how this layer works can be found in : ``<_workspace>/meta-arm-sy **NOTE:** These test might take up to 1 day to finish -**NOTE:** A rare issue has been noticed (5-6% occurence) during which the FVP hangs during booting the system while running ACS tests. -If this happens, please apply the following patch, rebuild the software stack for FVP and re-run the ACS tests. - -:: - - cd <_workspace> - git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2024.06 - cp -f systemready-patch/embedded-a/corstone1000/sr_ir_workaround/0001-embedded-a-corstone1000-sr-ir-workaround.patch meta-arm - cd meta-arm - git am 0001-embedded-a-corstone1000-sr-ir-workaround.patch - cd .. - kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; bitbake corstone1000-flash-firmware-image -c cleanall; bitbake corstone1000-flash-firmware-image" - Common to FVP and FPGA ====================== @@ -588,88 +591,70 @@ automatically in the following sequence: - UEFI BSA - FWTS -The results can be fetched from the ``acs_results`` folder in the RESULT partition of the USB stick (FPGA) / SD Card (FVP). +The results can be fetched from the `acs_results` folder in the BOOT partition of the USB stick (FPGA) / SD Card (FVP). + +**NOTE:** The FVP uses the ``<_workspace>/build/tmp-glibc/work/corstone1000_fvp-oe-linux/arm-systemready-ir-acs/2.0.0/deploy-arm-systemready-ir-acs/arm-systemready-ir-acs-corstone1000-fvp.wic`` image if the meta-arm-systemready layer is used. +The result can be checked in this image. ##################################################### Manual capsule update and ESRT checks ------------------------------------- -The following section describes running manual capsule update. - -The steps described in this section perform manual capsule update and show how to use the ESRT feature -to retrieve the installed capsule details. +The following section describes running manual capsule updates by going through +a negative and positive test. Two capsules are needed to perform the positive +and negative updates. The steps also show how to use the EFI System Resource Table +(ESRT) to retrieve the installed capsule details. -For the following tests two capsules are needed to perform 2 capsule updates. A positive update and a negative update. +In the positive test, a valid capsule is used and the platform boots correctly +until the Linux prompt after the update. In the negative test, an outdated +capsule is used that has a smaller version number. This capsule gets rejected +because of being outdated and the previous firmware will be used instead. -A positive test case capsule which boots the platform correctly until the Linux prompt, and a negative test case with an -incorrect capsule (corrupted or outdated) which fails to boot to the host software. - -Check the "Run SystemReady-IR ACS tests" section above to download and unpack the ACS image file - - ``ir-acs-live-image-generic-arm64.wic.xz`` - -Download systemready-patch repo under <_workspace>: - -:: - - git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2024.06 ******************* Generating Capsules ******************* -A no-partition image is created during the Yocto build. An update capsule is generated using this ``.nopt`` image. -This can be found in ``build/tmp/deploy/images/corstone1000-/corstone1000-_image.nopt``. -The capsule's default metadata (name, version, etc.) can be found in ``meta-arm/meta-arm-bsp/recipes-bsp/images/corstone1000-flash-firmware-image.bb`` -and ``meta-arm/kas/corstone1000-image-configuration.yml``. - -FPGA Capsules -============= - -The generated capsule can be found in ``build/tmp/deploy/images/corstone1000-mps3/corstone1000-mps3-v6.uefi.capsule``. -If a new capsule has to be generated with different metadata, then it can be done by using the ``u-boot-tools`` and the previously -created ``.nopt`` image. - -For example a capsule for the negative update test scenario, if the host's architecture is x86_64: - -:: - - cd <_workspace> - - ./build/tmp/sysroots-components/x86_64/u-boot-tools-native/usr/bin/mkeficapsule --monotonic-count 1 \ - --private-key build/tmp/deploy/images/corstone1000-mps3/corstone1000_capsule_key.key \ - --certificate build/tmp/deploy/images/corstone1000-mps3/corstone1000_capsule_cert.crt --index 1 --guid df1865d1-90fb-4d59-9c38-c9f2c1bba8cc \ - --fw-version 5 build/tmp/deploy/images/corstone1000-mps3/corstone1000-mps3_image.nopt corstone1000-mps3-v5.uefi.capsule - -This command will put the newly generated capsule to the ``<_workspace>`` directory. - -Generating FVP Capsules -======================= +A no-partition image is needed for the capsule generation. This image is +created automatically during a clean Yocto build and it can be found in +``build/tmp/deploy/images/corstone1000-/corstone1000-_image.nopt``. +A capsule is also automatically generated with U-Boot's ``mkeficapsule`` tool +during the Yocto build that uses this ``corstone1000-_image.nopt``. The +capsule's default metadata, that is passed to the ``mkeficapsule`` tool, +can be found in the ``meta-arm/meta-arm-bsp/recipes-bsp/images/corstone1000-flash-firmware-image.bb`` +and ``meta-arm/kas/corstone1000-image-configuration.yml`` files. These +data can be modified before the Yocto build if it is needed. It is +assumed that the default values are used in the following steps. + +The automatically generated capsule can be found in +``build/tmp/deploy/images/corstone1000-/corstone1000--v6.uefi.capsule``. +This capsule will be used as the positive capsule during the test in the following +steps. + +Generating Capsules Manually +============================ -The generated capsule can be found in ``build/tmp/deploy/images/corstone1000-fvp/corstone1000-fvp-v6.uefi.capsule``. -If a new capsule has to be generated with different metadata, then it can be done by using the ``u-boot-tools`` and the previously -created ``.nopt`` image. +If a new capsule has to be generated with different metadata after the build +process, then it can be done manually by using the ``u-boot-tools``'s +``mkeficapsule`` and the previously created ``.nopt`` image. The +``mkeficapsule`` tool is built automatically for the host machine +during the Yocto build. -For example a capsule for the negative update test scenario, if the host's architecture is x86_64: +The negative capsule needs a lower ``fw-version`` than the positive +capsule. For example if the host's architecture is x86_64, this can +be generated by using the following command: :: cd <_workspace> ./build/tmp/sysroots-components/x86_64/u-boot-tools-native/usr/bin/mkeficapsule --monotonic-count 1 \ - --private-key build/tmp/deploy/images/corstone1000-fvp/corstone1000_capsule_key.key \ - --certificate build/tmp/deploy/images/corstone1000-fvp/corstone1000_capsule_cert.crt --index 1 --guid 989f3a4e-46e0-4cd0-9877-a25c70c01329 \ - --fw-version 5 build/tmp/deploy/images/corstone1000-fvp/corstone1000-fvp_image.nopt corstone1000-fvp-v5.uefi.capsule - -This command will put the newly generated capsule to the ``<_workspace>`` directory. - -Common Notes for FVP and FPGA -============================= + --private-key build/tmp/deploy/images/corstone1000-/corstone1000_capsule_key.key \ + --certificate build/tmp/deploy/images/corstone1000-/corstone1000_capsule_cert.crt --index 1 --guid df1865d1-90fb-4d59-9c38-c9f2c1bba8cc \ + --fw-version 5 build/tmp/deploy/images/corstone1000-/corstone1000-_image.nopt corstone1000--v5.uefi.capsule -The capsule binary size (wic file) should be less than 15 MB. - -Based on the user's requirement, the user can change the firmware version -number given to ``--fw-version`` option (the version number needs to be >= 1). +This command will put the negative capsule to the ``<_workspace>`` directory. **************** @@ -694,19 +679,26 @@ the on disk method. Copying the FVP capsules ======================== -First, Find the 1st partition offset: +The ACS image should be used for the FVP as well. Downloaded and extract the +image the same way as for the FPGA `FPGA instructions for ACS image`_. +Creating an USB stick with the image is not needed for the FVP. + +After getting the ACS image, find the 1st partition's offset of the +``ir-acs-live-image-generic-arm64.wic`` image. The partition table can be +listed using the ``fdisk`` tool. :: fdisk -lu /ir-acs-live-image-generic-arm64.wic - -> Device Start End Sectors Size Type - /ir-acs-live-image-generic-arm64.wic1 2048 206847 204800 100M Microsoft basic data - /ir-acs-live-image-generic-arm64.wic2 206848 1024239 817392 399.1M Linux filesystem - /ir-acs-live-image-generic-arm64.wic3 1026048 1128447 102400 50M Microsoft basic data + Device Start End Sectors Size Type + /ir-acs-live-image-generic-arm64.wic1 2048 309247 307200 150M Microsoft basic data + /ir-acs-live-image-generic-arm64.wic2 309248 1343339 1034092 505M Linux filesystem + - -> = 2048 * 512 (sector size) = 1048576 +The first partition starts at the 2048th sector. This has to be multiplied +by the sector size which is 512 so the offset is 2048 * 512 = 1048576. -Next, mount the IR image: +Next, mount the IR image using the previously calculated offset: :: @@ -731,13 +723,17 @@ Then, unmount the IR image: Performing the capsule update ****************************** -During this section we will be using the capsule with the higher version (``corstone1000--v6.uefi.capsule``) for the positive scenario -and the capsule with the lower version (``corstone1000--v5.uefi.capsule``) for the negative scenario. +During this section we will be using the capsule with the higher version +(``corstone1000--v6.uefi.capsule``) for the positive scenario +and then the capsule with the lower version (``corstone1000--v5.uefi.capsule``) +for the negative scenario. The two tests have to be done after each other +in the correct order to make sure that the negative capsule will get rejected. Running the FPGA with the IR prebuilt image =========================================== -Insert the prepared USB stick then Power cycle the MPS3 board. +Insert the prepared USB stick which has the IR prebuilt image and two capsules, +then Power cycle the MPS3 board. Running the FVP with the IR prebuilt image ========================================== @@ -749,11 +745,14 @@ Run the FVP with the IR prebuilt image: kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file=/ir-acs-live-image-generic-arm64.wic" **NOTE:** must start from the root directory. make sure there are no spaces before or after of "=". board.msd_mmc.p_mmc_file=/ir-acs-live-image-generic-arm64.wic. +**NOTE:** Do not restart the FVP between the positive and negative test because it will start from a clean state. Executing capsule update for FVP and FPGA ========================================= -Reach U-Boot then interrupt the boot to reach the EFI shell. +Wait until U-boot loads EFI from the ACS image stick and interrupt the EFI +shell by pressing ESC when the following prompt is displayed in the Host +terminal (ttyUSB2). :: @@ -765,15 +764,26 @@ Then, type FS0: as shown below: FS0: -In case of the positive scenario run the update with the higher version capsule as shown below: +Then start the CapsuleApp application. Use the positive capsule +(corstone1000--v6.uefi.capsule) first. :: EFI/BOOT/app/CapsuleApp.efi corstone1000--v6.uefi.capsule -After successfully updating the capsule the system will reset. +The capsule update will be started. -In case of the negative scenario run the update with the lower version capsule as shown below: +**NOTE:** On the FVP it takes around 15-30 minutes, on the FPGA it takes less time. + +After successfully updating the capsule the system will reset. Make sure the +Corstone-1000's Poky Distro is booted after the reset so the ESRT can be checked. +It is described in the `Select Corstone-1000 Linux kernel boot`_ section how to +boot the Poky distro after the capsule update. +The `Positive scenario`_ sections describes how the result should be inspected. +After the result is checked, the system can be rebooted with the ``reboot`` command in the Host +terminal (ttyUSB2). + +Interrupt the EFI shell again and now start the capsule update with the negative capsule: :: @@ -791,15 +801,12 @@ Then, reboot manually: Shell> reset -FPGA: Select Corstone-1000 Linux kernel boot -============================================ - -Remove the USB stick before U-Boot is reached so the Corstone-1000 kernel will be detected and used for booting. +Make sure the Corstone-1000's Poky Distro is booted again +(`Select Corstone-1000 Linux kernel boot`_) in order to check the results +`Negative scenario`_. -**NOTE:** Otherwise, the execution ends up in the ACS live image. - -FVP: Select Corstone-1000 Linux kernel boot -=========================================== +Select Corstone-1000 Linux kernel boot +====================================== Interrupt the U-Boot shell. @@ -825,9 +832,12 @@ Capsule update status Positive scenario ================= -In the positive case scenario, the user should see following log in TF-M log, -indicating the new capsule image is successfully applied, and the board boots -correctly. +In the positive case scenario, the software stack copies the capsule to the +External Flash, which is shared between the Secure Enclave and Host, +then a reboot is triggered. The TF-M accepts the capsule. +The user should see following TF-M log in the Secure Enclave terminal (ttyUSB1) +before the system reboots automatically, indicating the new capsule +image is successfully applied, and the board boots correctly. :: @@ -841,6 +851,18 @@ correctly. corstone1000_fwu_flash_image: exit: ret = 0 ... +And after the reboot: + +:: + + ... + fmp_set_image_info:133 Enter + FMP image update: image id = 0 + FMP image update: status = 0version=6 last_attempt_version=6. + fmp_set_image_info:157 Exit. + corstone1000_fwu_host_ack: exit: ret = 0 + ... + It's possible to check the content of the ESRT table after the system fully boots. @@ -869,11 +891,14 @@ In the Linux command-line run the following: lowest_supported_fw_ver: 0 -Negative scenario (Applicable to FPGA only) -=========================================== +Negative scenario +================= -In the negative case scenario (rollback the capsule version), the user should -see appropriate logs in the secure enclave terminal. +In the negative case scenario (rollback the capsule version), +the TF-M detects that the new capsule's version number is +smaller then the current version. The capsule is rejected because +of this. +The user should see appropriate logs in the Secure Enclave terminal (ttyUSB1) before the system reboots itself. :: @@ -897,7 +922,7 @@ see appropriate logs in the secure enclave terminal. If capsule pass initial verification, but fails verifications performed during -boot time, secure enclave will try new images predetermined number of times +boot time, Secure Enclave will try new images predetermined number of times (defined in the code), before reverting back to the previous good bank. :: @@ -933,11 +958,6 @@ In the Linux command-line run the following: last_attempt_version: 5 lowest_supported_fw_ver: 0 -**Note**: This test is currently not working properly in Corstone-1000 FVP. -However, it is not part of the System-Ready IR tests, and it won't affect the -SR-IR certification. All the compulsory `capsule update tests for SR-IR -`__ -works on both Corstone-1000 FVP and FPGA. Linux distros tests ------------------- @@ -1033,9 +1053,9 @@ With a minimum size of 8GB formatted with gpt. :: - #Generating mmc2 - dd if=/dev/zero of=<_workspace>/mmc2_file.img bs=1 count=0 seek=10G; sync; - parted -s mmc2_file.img mklabel gpt + #Generating os_file + dd if=/dev/zero of=<_workspace>/os_file.img bs=1 count=0 seek=10G; sync; + parted -s os_file.img mklabel gpt ************************************************* @@ -1067,10 +1087,10 @@ FVP :: - kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file= -C board.msd_mmc_2.p_mmc_file=<_workspace>/mmc2_file.img" + kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file=<_workspace>/os_file.img -C board.msd_mmc_2.p_mmc_file=" The installer should now start. -The os will be installed on the second mmc 'mmc2_file.img'. +The OS will be installed on 'os_file.img'. ******************************************************* Debian install clarifications @@ -1123,17 +1143,22 @@ after entering the password for the root user. FVP ============== -Once the installation is complete, you will need to exit the shell instance -and run this command to boot into the installed OS: +The platform should automatically boot into the installed OS image. -:: +To cold boot: - kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file= -C board.msd_mmc.p_mmc_file=<_workspace>/mmc2_file.img" + :: -Once the FVP begins booting, you will need to quickly change the boot option in grub, -to boot into recovery mode. + kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file=<_workspace>/os_file.img" -**NOTE:** This option will disappear quickly, so it's best to preempt it. + +The board will then enter recovery mode, from which the user can access a shell +after entering the password for the root user. + + +**NOTE:** To manually enter recovery mode, once the FVP begins booting, you can quickly +change the boot option in grub, to boot into recovery mode. This option will disappear +quickly, so it's best to preempt it. Select 'Advanced Options for '' and then ' (recovery mode)'. @@ -1213,7 +1238,7 @@ Then, check whether the FF-A TEE driver is loaded correctly by using the followi cat /proc/modules | grep arm_tstee -The output should be: +The output should be similar to: :: @@ -1229,16 +1254,31 @@ Now, run the PSA API tests in the following order: psa-ps-api-test -UEFI Secureboot test --------------------- +UEFI Secureboot (SB) test +------------------------- -Before running the secureboot test, the user should make sure that the `FVP and FPGA software has been compiled and the ESP image for both the FVP and FPGA has been created` as mentioned in the previous sections and user should use the same workspace directory under which sources have been compiled. -The secureboot tests is applicable on both the FVP and the FPGA and this involves testing both the signed and unsigned kernel images. Successful test results in executing the signed image correctly and not allowing the unsigned image to run at all. +Before running the SB test, the user should make sure that the `FVP and FPGA software has been compiled and the ESP image for both the FVP and FPGA has been created` as mentioned in the previous sections and user should use the same workspace directory under which sources have been compiled. +The SB test is applicable on both the FVP and the FPGA and this involves testing both the signed and unsigned kernel images. Successful test results in executing the signed image correctly and not allowing the unsigned image to run at all. *********************************************************** Below steps are applicable to FVP as well as FPGA *********************************************************** -In order to achieve this for FVP and FPGA, a bash script is available in the systemready-patch repo which is responsible in creating the relevant keys, sign the respective kernel images, and copy the same in their corresponding ESP images. +Firstly, the flash firmware image has to be built for both the FVP and FPGA as follows: + +For FVP, + +:: + + kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c bitbake -c build corstone1000-flash-firmware-image" + + +For FPGA, + +:: + + kas shell meta-arm/kas/corstone1000-mps3.yml:meta-arm/ci/debug.yml -c bitbake -c build corstone1000-flash-firmware-image" + +In order to test SB for FVP and FPGA, a bash script is available in the systemready-patch repo which is responsible in creating the relevant keys, sign the respective kernel images, and copy the same in their corresponding ESP images. Clone the systemready-patch repo under <_workspace. Then, change directory to where the script `create_keys_and_sign.sh` is and execute the script as follows: @@ -1247,27 +1287,30 @@ Clone the systemready-patch repo under <_workspace. Then, change directory to wh git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2024.06 cd systemready-patch/embedded-a/corstone1000/secureboot/ -The script is responsible to create the required UEFI secureboot keys, sign the kernel images and copy the public keys and the kernel images (both signed and unsigned) to the ESP image for both the FVP and FPGA. +**NOTE:** The efitools package is required to execute the script. Install the efitools package on your system, if it doesn't exist. + +The script is responsible to create the required UEFI secureboot keys, sign the kernel images and copy the public keys and the kernel images (both signed and unsigned) to the ESP image for both the FVP and FPGA. :: - - ./create_keys_and_sign.sh -w -v + + ./create_keys_and_sign.sh -w directory under which sources have been compiled> -v For ex: ./create_keys_and_sign.sh -w "/home/xyz/workspace/meta-arm" -v 365 For help: ./create_keys_and_sign.sh -h **NOTE:** The above script is interactive and contains some commands that would require sudo password/permissions. -After executing the above script, the relevant keys and the signed/unsigned kernel images will be copied to the ESP images for both the FVP and FGPA. The modified ESP images can be found at the same location i.e. +After executing the above script, the relevant keys and the signed/unsigned kernel images will be copied to the ESP images for both the FVP and FGPA. The modified ESP images can be found at the same location i.e. :: For MPS3 FPGA : _workspace/meta-arm/build/tmp/deploy/images/corstone1000-mps3/corstone1000-esp-image-corstone1000-mps3.wic For FVP : _workspace/meta-arm/build/tmp/deploy/images/corstone1000-fvp/corstone1000-esp-image-corstone1000-fvp.wic -Now, it is time to test the UEFI secureboot for the Corstone-1000 +Now, it is time to test the SB for the Corstone-1000 + *********************************************************** -Steps to test Secureboot on FVP +Steps to test SB on FVP *********************************************************** Now, as mentioned in the previous section **Prepare EFI System Partition**, the ESP image will be used automatically in the Corstone-1000 FVP as the 2nd MMC card image. Change directory to your workspace and run the FVP as follows: @@ -1316,9 +1359,10 @@ The above set of commands should result in booting of signed linux kernel image *********************************************************** -Steps to test Secureboot on MPS3 FPGA +Steps to test SB on MPS3 FPGA *********************************************************** -Now, as mentioned in the previous section **Prepare EFI System Partition**, the ESP image for MPS3 FPGA needs to be copied to the USB drive. follow the steps mentioned in the same section for MPS3 FPGA to prepare the USB drive with the ESP image. The modified ESP image corresponds to MPS3 FPGA can be found at the location as mentioned before i.e. `_workspace/meta-arm/build/tmp/deploy/images/corstone1000-mps3/corstone1000-esp-image-corstone1000-mps3.wic`. +Now, as mentioned in the previous section **Prepare EFI System Partition**, the ESP image for MPS3 FPGA needs to be copied to the USB drive. +Follow the steps mentioned in the same section for MPS3 FPGA to prepare the USB drive with the ESP image. The modified ESP image corresponds to MPS3 FPGA can be found at the location as mentioned before i.e. `_workspace/meta-arm/build/tmp/deploy/images/corstone1000-mps3/corstone1000-esp-image-corstone1000-mps3.wic`. Insert this USB drive to the MPS3 FPGA and boot, and stop the execution at the U-Boot prompt similar to the FVP. At the U-Boot prompt, run the following commands: Reset the USB @@ -1376,7 +1420,7 @@ The above set of commands should result in booting of signed linux kernel image *********************************************************** Steps to disable Secureboot on both FVP and MPS3 FPGA *********************************************************** -Now, after testing the secureboot, UEFI authenticated variables get stored in the secure flash. When you try to reboot, the U-Boot will automatically read the UEFI authenticated variables and authenticates the images before executing them. In normal booting scenario, the linux kernel images will not be signed and hence this will not allow the system to boot, as image authentication will fail. We need to delete the Platform Key (one of the UEFI authenticated variable for Secureboot) in order to disable the secureboot. At the U-Boot prompt, run the following commands. +Now, after testing the SB, UEFI authenticated variables get stored in the secure flash. When you try to reboot, the U-Boot will automatically read the UEFI authenticated variables and authenticates the images before executing them. In normal booting scenario, the linux kernel images will not be signed and hence this will not allow the system to boot, as image authentication will fail. We need to delete the Platform Key (one of the UEFI authenticated variable for SB) in order to disable the SB. At the U-Boot prompt, run the following commands. On the FVP @@ -1395,13 +1439,7 @@ On the MPS3 FPGA corstone1000# load usb 0 $loadaddr corstone1000_secureboot_keys/PK_delete.auth && setenv -e -nv -bs -rt -at -i $loadaddr:$filesize PK corstone1000# boot -The above commands will delete the Platform key (PK) and allow the normal system boot flow without secure boot. - -Tests results -------------- - -As a reference for the end user, reports for various tests for `Corstone-1000 software (CORSTONE1000-2024.06) `__ -can be found `here `__. +The above commands will delete the Platform key (PK) and allow the normal system boot flow without SB. Testing the External System @@ -1420,18 +1458,11 @@ The external system can be switched on/off on demand with the following commands echo start > /sys/class/remoteproc/remoteproc0/state +Tests results +------------- -Using FVP on Windows or AArch64 Linux -------------------------------------- - -The user should follow the build instructions in this document to build on a Linux host machine. -Then, copy the output binaries to the Windows or Aarch64 Linux machine where the FVP is located. -Then, launch the FVP binary. - -Security Issue Reporting ------------------------- - -To report any security issues identified with Corstone-1000, please send an email to psirt@arm.com. +As a reference for the end user, reports for various tests for `Corstone-1000 software (CORSTONE1000-2024.06) `__ +can be found `here `__. --------------