<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LayerscapeのトピックRe: Enabling Secure Boot on the LS1043ARDB</title>
    <link>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485989#M902</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt;Since only a hash of the private key set is fused to the SRK &lt;/P&gt;&lt;P&gt;&amp;gt;registers, how are the public keys and signature from in the loaded &lt;/P&gt;&lt;P&gt;&amp;gt;image used to validate it?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] Fuses store a hash of the _public_ key, not the private key.&lt;/P&gt;&lt;P&gt;The private key is used only in signature creation, not signature &lt;/P&gt;&lt;P&gt;validation. SRK hash value protects the public key stored in CSF&lt;/P&gt;&lt;P&gt;from being modified by an attacker. Refer to LS1043RM, Sections 34.5.2 and&lt;/P&gt;&lt;P&gt;3.6 for&amp;nbsp; details.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;An explanation of RSA cryptosystem, including methods of signing documents/files and&lt;/P&gt;&lt;P&gt;subsequent signature verification, can be found here:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29" title="https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29"&gt;RSA (cryptosystem) - Wikipedia, the free encyclopedia&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;** What is the next step here after generating the U-boot header? &lt;/P&gt;&lt;P&gt;&amp;gt;Where do the headers go? Do we just flash the new RCW and U-boot &lt;/P&gt;&lt;P&gt;&amp;gt;(with header)?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] All images, including CSFs, are programmed into the Flash at &lt;/P&gt;&lt;P&gt;the specified addresses.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;** Some parts of the documentation seem to reference them being &lt;/P&gt;&lt;P&gt;&amp;gt;prepended to the respective image (pg 799 of the reference manual):&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] Headers and images they refer do not need to be adjacent.&lt;/P&gt;&lt;P&gt;CSF headers include pointers to the images they belong to.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;Further, the reference manual shows contradicting images for the &lt;/P&gt;&lt;P&gt;&amp;gt;partitioning of flash. The below image (pg 99 of the reference manual) &lt;/P&gt;&lt;P&gt;&amp;gt;shows the kernel being placed at 0x61100000 while the above shows 0x60A00000&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] There is no contradiction. Flash maps for non-secure and secure&lt;/P&gt;&lt;P&gt;boot are different. If you are working with secure boot, use the map&lt;/P&gt;&lt;P&gt;specified in the Secure Boot ENablement chapter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;I have also found references in this community that you must defined &lt;/P&gt;&lt;P&gt;&amp;gt;CONFIG_SECURE_BOOT in U-boot as well. Is this a requirement?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] Yes. Make ls1043ardb_nor_SECURE_BOOT_defconfig or add &lt;/P&gt;&lt;P&gt;ls1043ardb_nor_SECURE_BOOT to your UBOOT_MACHINES. See your&lt;/P&gt;&lt;P&gt;SDK Manual, Section 2.2.1 for&amp;nbsp; details. This will build u-Boot with &lt;/P&gt;&lt;P&gt;all necessary configuration macro definitions for secure boot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;If I am incorrect above in my summary, how can one evaluate secure &lt;/P&gt;&lt;P&gt;&amp;gt;boot without permanently modifying the SRK registers with the key &lt;/P&gt;&lt;P&gt;&amp;gt;hashes? What steps have I missed? &lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] There is no way to do secure boot with no SRK and OTPMK programmed.&lt;/P&gt;&lt;P&gt;Note that you can't program fuse mirror registers with PBI because&lt;/P&gt;&lt;P&gt;they are blocked in secure boot mode, see LS1043ARM, Section 27.4.2.1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;Are the required PBI commands implicit in the generated RCW or is &lt;/P&gt;&lt;P&gt;&amp;gt;this an additional step? If so, where can I find information on this?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] See LS1043ARM, Section 31.4.13. Unpack Yocto package called&lt;/P&gt;&lt;P&gt;rcw and inspect *sben*.rcw files to see what is added for secure boot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Platon&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 20 May 2016 17:57:11 GMT</pubDate>
    <dc:creator>bpe</dc:creator>
    <dc:date>2016-05-20T17:57:11Z</dc:date>
    <item>
      <title>Enabling Secure Boot on the LS1043ARDB</title>
      <link>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485988#M901</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am working to enable secure-boot on the ls1043ardb but am having a bit of trouble aggregating all the information from the reference manual and other questions to actually execute. From what I understand:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Early Boot&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Very early in the boot process the &lt;EM&gt;SRP&lt;/EM&gt; will restrict all I/O until all configuration fuse values are read. It is in this phase that fuses such as &lt;EM&gt;ITS&lt;/EM&gt; are read. If the ITS bit it set then the device will &lt;EM&gt;always&lt;/EM&gt; proceed in a secure manner, otherwise it will read the bootmode from the &lt;EM&gt;RCW (.e.g. sben) &lt;/EM&gt;that has been loaded from the boot medium.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;ISBC&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;If ITS is not set, but the RCW is defined such that &lt;EM&gt;secure boot = 1&lt;/EM&gt; (.i.e. sben=1) then the core will hand over control to ISBC in some manner to indicate that the &lt;EM&gt;ESBC&lt;/EM&gt; must be validated before given control. &lt;EM&gt;&lt;STRONG&gt;It is as this point I am having issues in the boot process. &lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;ESBC&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;After validation, the ISBC relinquishes control to the ESBC which further validates the kernel, and others, before continuing to boot. I found note in the &lt;A href="http://cache.nxp.com/files/soft_dev_tools/doc/release_notes/QORIQ_SDK_LS1043A_RN.pdf?fpsp=1&amp;amp;WT_TYPE=Release%20Notes&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.pdf" title="http://cache.nxp.com/files/soft_dev_tools/doc/release_notes/QORIQ_SDK_LS1043A_RN.pdf?fpsp=1&amp;amp;WT_TYPE=Release%20Notes&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.pdf"&gt;reference manual&lt;/A&gt;​ &lt;SPAN style="font-size: 8pt;"&gt;(bottom, pg 1184) &lt;/SPAN&gt;telling of a current bug that is preventing the use of an external bootscript, so, for now, it is built into the U-boot image. As such, I have been skipping most bootscript-related notes in the manual.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Validation&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I understand that the ISBC validates the ESBC image, but how exactly does the process look? From what I understand:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;ISBC pulls U-boot from memory at hard-coded address&lt;/LI&gt;&lt;LI&gt;Checks for "barker code" to ensure what was pulled is actually a CSF header&lt;/LI&gt;&lt;LI&gt;Validates the image based on the signature stored at the end of the image and public key available in header&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;Since only a hash of the private key set is fused to the SRK registers, how are the public keys and signature from in the loaded image used to validate it?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Enabling Secure Boot&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;From what I can tell, the procedure for enabling secure boot &lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;but not permanently blowing configuration fuses&lt;/STRONG&gt; &lt;/SPAN&gt;is to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Generating the headers/keys&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Generate the public/private key pair to be used to sign the images in the chain of trust&lt;OL style="list-style-type: lower-roman;"&gt;&lt;LI&gt;./gen_keys 1024&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;View the hash of the public key (generated in (1)) used to sign the U-boot image&lt;OL style="list-style-type: lower-roman;"&gt;&lt;LI&gt;This hash should be written to the SRK (see 2 below in &lt;EM&gt;Boot configuraiton&lt;/EM&gt;)&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;Generate the U-boot header&lt;OL style="list-style-type: lower-roman;"&gt;&lt;LI&gt;./uni_sign input_files/uni_sign/ls1043/input_uboot_nor_secure&lt;OL style="list-style-type: lower-alpha;"&gt;&lt;LI&gt;This command generates &lt;EM&gt;sign.out&lt;/EM&gt; and &lt;EM&gt;hdr_uboot.out&lt;/EM&gt;&lt;/LI&gt;&lt;LI&gt;&lt;EM&gt;hdr_uboot.out &lt;/EM&gt;is appended with the contents of the signature file (&lt;EM&gt;sign.out&lt;/EM&gt;)&lt;/LI&gt;&lt;LI&gt;The ls1043a supports booting a &lt;EM&gt;FIT&lt;/EM&gt; kernel image. This header must also be generated, but the current problem pertains to getting to a u-boot shell.&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Boot configuration&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Configure the &lt;EM&gt;RCW&lt;/EM&gt; such that SBEN=1 and BOOT_HO=1&lt;/P&gt;&lt;OL style="list-style-type: lower-roman;"&gt;&lt;LI&gt;Various &lt;EM&gt;rcw*.bin&lt;/EM&gt; files are created by default, one of which has sben set (&lt;EM&gt;.e.g. rcw_1500_sben.bin &lt;/EM&gt;)&lt;/LI&gt;&lt;LI&gt;Since the ITS fuse is not set, the RCW controls the secure boot mode.&lt;/LI&gt;&lt;LI&gt;Boot-hold-off allows us to configure the SRK mirror registers at each POR without permanent modification&lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;LI&gt;On POR, write to the &lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;SRK mirror registers&lt;/STRONG&gt;&lt;/SPAN&gt; the hash of the private key used to sign the ESBC images and create the header&lt;/LI&gt;&lt;LI&gt;Release the CPU from boot-hold-off&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;** What is the next step here after generating the U-boot header? Where do the headers go? Do we just flash the new RCW and U-boot (with header)?&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;** Some parts of the documentation seem to reference them being prepended to the respective image (pg 799 of the reference manual):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_0.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/22940iB82C5A0121EEC276/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_0.png" alt="pastedImage_0.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;while others point to them being placed in their own partition of flash (pg 1184 of the reference manual):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_103.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/22941i663CFD249096683B/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_103.png" alt="pastedImage_103.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;Further, the reference manual shows contradicting images for the partitioning of flash. The below image (pg 99 of the reference manual) shows the kernel being placed at 0x61100000 while the above shows 0x60A00000&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/22981i58C932B495A44F85/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #e23d39;"&gt;&lt;STRONG&gt;The second image also shows the RCW &lt;EM&gt;and&lt;/EM&gt; PBI being combined to fit in the first 1M of flash, while the first image has the RCW consuming only the first 128 KB of flash with no mention of the PBI. &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Other things I have found in my research that are not explicitly spelled out&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="direction: ltr;"&gt;I found in &lt;A _jive_internal="true" href="https://community.nxp.com/thread/391816"&gt;this&lt;/A&gt; question that the configuration file for CST must be modified to build for the ARM architecture rather than PowerPC (default).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have also found references in this community that you must define &lt;EM&gt;CONFIG_SECURE_BOOT&lt;/EM&gt; in U-boot as well. Is this a requirement?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;In summary:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN style="color: #2873ee;"&gt;Where do the CSF headers go that we generate using the CST utilities?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #2873ee;"&gt;If I am incorrect above in my summary, how can one evaluate secure boot &lt;EM&gt;&lt;STRONG&gt;without&lt;/STRONG&gt;&lt;/EM&gt; permanently modifying the SRK registers with the key hashes? What steps have I missed?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #2873ee;"&gt;Which of the above memory maps is correct for the ls1043ardb?&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #2873ee;"&gt;Are the required PBI commands implicit in the generated RCW or is this an additional step? If so, where can I find information on this?&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 May 2016 17:11:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485988#M901</guid>
      <dc:creator>brandensherrell</dc:creator>
      <dc:date>2016-05-19T17:11:11Z</dc:date>
    </item>
    <item>
      <title>Re: Enabling Secure Boot on the LS1043ARDB</title>
      <link>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485989#M902</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt;Since only a hash of the private key set is fused to the SRK &lt;/P&gt;&lt;P&gt;&amp;gt;registers, how are the public keys and signature from in the loaded &lt;/P&gt;&lt;P&gt;&amp;gt;image used to validate it?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] Fuses store a hash of the _public_ key, not the private key.&lt;/P&gt;&lt;P&gt;The private key is used only in signature creation, not signature &lt;/P&gt;&lt;P&gt;validation. SRK hash value protects the public key stored in CSF&lt;/P&gt;&lt;P&gt;from being modified by an attacker. Refer to LS1043RM, Sections 34.5.2 and&lt;/P&gt;&lt;P&gt;3.6 for&amp;nbsp; details.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;An explanation of RSA cryptosystem, including methods of signing documents/files and&lt;/P&gt;&lt;P&gt;subsequent signature verification, can be found here:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29" title="https://en.wikipedia.org/wiki/RSA_%28cryptosystem%29"&gt;RSA (cryptosystem) - Wikipedia, the free encyclopedia&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;** What is the next step here after generating the U-boot header? &lt;/P&gt;&lt;P&gt;&amp;gt;Where do the headers go? Do we just flash the new RCW and U-boot &lt;/P&gt;&lt;P&gt;&amp;gt;(with header)?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] All images, including CSFs, are programmed into the Flash at &lt;/P&gt;&lt;P&gt;the specified addresses.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;** Some parts of the documentation seem to reference them being &lt;/P&gt;&lt;P&gt;&amp;gt;prepended to the respective image (pg 799 of the reference manual):&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] Headers and images they refer do not need to be adjacent.&lt;/P&gt;&lt;P&gt;CSF headers include pointers to the images they belong to.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;Further, the reference manual shows contradicting images for the &lt;/P&gt;&lt;P&gt;&amp;gt;partitioning of flash. The below image (pg 99 of the reference manual) &lt;/P&gt;&lt;P&gt;&amp;gt;shows the kernel being placed at 0x61100000 while the above shows 0x60A00000&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] There is no contradiction. Flash maps for non-secure and secure&lt;/P&gt;&lt;P&gt;boot are different. If you are working with secure boot, use the map&lt;/P&gt;&lt;P&gt;specified in the Secure Boot ENablement chapter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;I have also found references in this community that you must defined &lt;/P&gt;&lt;P&gt;&amp;gt;CONFIG_SECURE_BOOT in U-boot as well. Is this a requirement?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] Yes. Make ls1043ardb_nor_SECURE_BOOT_defconfig or add &lt;/P&gt;&lt;P&gt;ls1043ardb_nor_SECURE_BOOT to your UBOOT_MACHINES. See your&lt;/P&gt;&lt;P&gt;SDK Manual, Section 2.2.1 for&amp;nbsp; details. This will build u-Boot with &lt;/P&gt;&lt;P&gt;all necessary configuration macro definitions for secure boot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;If I am incorrect above in my summary, how can one evaluate secure &lt;/P&gt;&lt;P&gt;&amp;gt;boot without permanently modifying the SRK registers with the key &lt;/P&gt;&lt;P&gt;&amp;gt;hashes? What steps have I missed? &lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] There is no way to do secure boot with no SRK and OTPMK programmed.&lt;/P&gt;&lt;P&gt;Note that you can't program fuse mirror registers with PBI because&lt;/P&gt;&lt;P&gt;they are blocked in secure boot mode, see LS1043ARM, Section 27.4.2.1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;Are the required PBI commands implicit in the generated RCW or is &lt;/P&gt;&lt;P&gt;&amp;gt;this an additional step? If so, where can I find information on this?&lt;/P&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;P&gt;[Platon] See LS1043ARM, Section 31.4.13. Unpack Yocto package called&lt;/P&gt;&lt;P&gt;rcw and inspect *sben*.rcw files to see what is added for secure boot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Platon&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 May 2016 17:57:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485989#M902</guid>
      <dc:creator>bpe</dc:creator>
      <dc:date>2016-05-20T17:57:11Z</dc:date>
    </item>
    <item>
      <title>Re: Enabling Secure Boot on the LS1043ARDB</title>
      <link>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485990#M903</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What a great answer. Thank you so much for taking the time to pick out all the questions I had.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, you mention there is not a way to test secure boot without burning the SRKH fuses. Is there not a way to do this without making the change permanent? Writing to the fuses is fine. I just do not want to write to the fuses in such a way as to make it permanent (i.e. making our choice of key permanent).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The manual alludes to a method of doing this by writing to the SRKH &lt;EM&gt;shadow &lt;/EM&gt;registers at boot time (pg 839, section 35.9.3.5). There is an additional step to transfer the mirror register values to the SRKH register, but I was under the impression that without doing this final step then the values written to the mirror registers would suffice for secure boot testing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;How we can test secure boot by following the directions on page 8 of &lt;SPAN style="color: #e23d39;"&gt;&lt;A href="http://cache.nxp.com/files/soft_dev_tools/doc/app_note/AN5227.pdf?fpsp=1&amp;amp;WT_TYPE=Application%20Notes&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=pdf&amp;amp;WT_ASSET=Documentation&amp;amp;fileExt=.pdf"&gt;&lt;SPAN style="color: #e23d39;"&gt;this&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;​ document when we cannot access the SFP registers during secure boot (i.e. per 27.4.2.1)? According to section 31.7.3 the values of the mirror registers are 0x0 at reset unless fused, so what benefit is being able to write to these registers if we cannot actually use the values to boot in a secure way (since SBEN must be 0 to have access write access to mirror registers on boot &lt;EM&gt;anyway). &lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 May 2016 15:33:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485990#M903</guid>
      <dc:creator>brandensherrell</dc:creator>
      <dc:date>2016-05-23T15:33:05Z</dc:date>
    </item>
    <item>
      <title>Re: Enabling Secure Boot on the LS1043ARDB</title>
      <link>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485991#M904</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Any thoughts on these final questions? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 May 2016 16:43:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Enabling-Secure-Boot-on-the-LS1043ARDB/m-p/485991#M904</guid>
      <dc:creator>brandensherrell</dc:creator>
      <dc:date>2016-05-24T16:43:24Z</dc:date>
    </item>
  </channel>
</rss>

