HAB

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
119件の閲覧回数
Abhay2080
Contributor II

I am working on signing the firmware and preparing it for secure boot.

Suppose the development team provides me with a firmware image that already contains the FCB/FCFB, IVT, Boot Data, and other required boot components. My responsibility is only to sign the image and provide the signed firmware back to the development team.

I am using the CST (Code Signing Tool) to generate the signed firmware. I have created the csf.txt file and used cst.exe to generate csf.bin.

My question is: If I simply append csf.bin to the existing firmware image, will the firmware actually be considered signed?

My understanding is that the IVT contains a pointer to the CSF, so if I simply append csf.bin without updating the IVT to point to the CSF location, the ROM may not know where to find the CSF.

So, what is the correct procedure for signing an existing firmware image that already contains the FCB/FCFB, IVT, Boot Data, and other boot components?

I would like to understand the proper flow for generating the final signed firmware image that can be used for secure boot.

タグ(2)
0 件の賞賛
返信
1 解決策
74件の閲覧回数
Kan_Li
NXP TechSupport
NXP TechSupport

Hi @Abhay2080 ,

The flow is something like below:

  1. Dev team sets csf = 0x60000000 + sizeof(firmware.bin) in the IVT during the build. This is a linker/build-time constant.
  2. CST reads firmware.bin (which already has the correct csf pointer), computes the SHA-256 hash over the [Authenticate Data] blocks (which includes the IVT with its pre-set csf value), and produces csf.bin.
  3. cat firmware.bin csf.bin places csf.bin at exactly byte offset sizeof(firmware.bin) — which maps to AHB address 0x60020000 — exactly where the IVT's csf field already points.
  4. HAB at boot reads csf from IVT → jumps to 0x60020000 → finds the CSF → authenticates.

 

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
75件の閲覧回数
Kan_Li
NXP TechSupport
NXP TechSupport

Hi @Abhay2080 ,

The flow is something like below:

  1. Dev team sets csf = 0x60000000 + sizeof(firmware.bin) in the IVT during the build. This is a linker/build-time constant.
  2. CST reads firmware.bin (which already has the correct csf pointer), computes the SHA-256 hash over the [Authenticate Data] blocks (which includes the IVT with its pre-set csf value), and produces csf.bin.
  3. cat firmware.bin csf.bin places csf.bin at exactly byte offset sizeof(firmware.bin) — which maps to AHB address 0x60020000 — exactly where the IVT's csf field already points.
  4. HAB at boot reads csf from IVT → jumps to 0x60020000 → finds the CSF → authenticates.

 

Have a great day,
Kan


-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2410104%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHAB%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2410104%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%20class%3D%22%22%3E%3CSPAN%3E%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E7%BD%B2%E5%90%8D%E3%81%A8%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%E3%83%96%E3%83%BC%E3%83%88%E3%81%B8%E3%81%AE%E5%AF%BE%E5%BF%9C%E6%BA%96%E5%82%99%E3%82%92%E9%80%B2%E3%82%81%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22%22%3E%3CSPAN%3E%E9%96%8B%E7%99%BA%E3%83%81%E3%83%BC%E3%83%A0%E3%81%8C%E3%80%81FCB%2FFCFB%E3%80%81IVT%E3%80%81%E3%83%96%E3%83%BC%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%80%81%E3%81%8A%E3%82%88%E3%81%B3%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%96%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%8C%E6%97%A2%E3%81%AB%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%81%A8%E4%BB%AE%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E7%A7%81%E3%81%AE%E8%B2%AC%E4%BB%BB%E3%81%AF%E3%80%81%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AB%E7%BD%B2%E5%90%8D%E3%81%97%E3%80%81%E7%BD%B2%E5%90%8D%E6%B8%88%E3%81%BF%E3%81%AE%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%92%E9%96%8B%E7%99%BA%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AB%E8%BF%94%E5%8D%B4%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A0%E3%81%91%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22%22%3E%3CSPAN%3E%E7%BD%B2%E5%90%8D%E4%BB%98%E3%81%8D%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%80%81CST%EF%BC%88%E3%82%B3%E3%83%BC%E3%83%89%E7%BD%B2%E5%90%8D%E3%83%84%E3%83%BC%E3%83%AB%EF%BC%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82csf.txt%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%3C%2FSPAN%3E%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3Ecst.exe%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%3C%2FSPAN%3E%3CSPAN%3Ecsf.bin%3C%2FSPAN%3E%3CSPAN%3E%E3%82%92%3C%2FSPAN%3E%3CSPAN%3E%E7%94%9F%E6%88%90%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3C%2FSPAN%3E%3CSPAN%3E%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22%22%3E%3CSPAN%3E%E7%A7%81%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%AF%E3%80%81%3C%2FSPAN%3E%3CSTRONG%3E%3CSPAN%3E%E6%97%A2%E5%AD%98%E3%81%AE%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AB%3C%2FSPAN%3E%3C%2FSTRONG%3E%3CSTRONG%3E%3CSPAN%3Ecsf.bin%3C%2FSPAN%3E%3C%2FSTRONG%3E%3CSTRONG%3E%3CSPAN%3E%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%3C%2FSPAN%3E%3C%2FSTRONG%3E%E3%80%81%E3%81%9D%E3%81%AE%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%AB%E7%BD%B2%E5%90%8D%E6%B8%88%E3%81%BF%E3%81%A8%E3%81%BF%E3%81%AA%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%8B%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20class%3D%22%22%3E%3CSPAN%3E%E7%A7%81%E3%81%AE%E7%90%86%E8%A7%A3%E3%81%A7%E3%81%AF%E3%80%81IVT%E3%81%AB%E3%81%AFCSF%E3%81%B8%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81IVT%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%9B%E3%81%9A%E3%81%AB%E5%8D%98%E3%81%ABcsf.bin%E3%82%92%E4%BB%98%E3%81%91%E5%8A%A0%E3%81%88%E3%82%8B%E3%81%A0%E3%81%91%3C%2FSPAN%3E%3CSPAN%3E%3C%2FSPAN%3E%E3%81%A0%E3%81%A8%3CSPAN%3E%E3%80%81ROM%E3%81%8CCSF%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E7%9F%A5%E3%82%89%E3%81%AA%E3%81%84%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%20class%3D%22%22%3E%3CSPAN%3E%E3%81%A7%E3%81%AF%E3%80%81FCB%2FFCFB%E3%80%81IVT%E3%80%81BOOT%20DATA%E3%80%81%E3%81%9D%E3%81%AE%E4%BB%96%E3%81%AE%E3%83%96%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%8C%E3%81%99%E3%81%A7%E3%81%AB%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E6%97%A2%E5%AD%98%E3%81%AE%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AB%E7%BD%B2%E5%90%8D%E3%81%99%E3%82%8B%E6%AD%A3%E3%81%97%E3%81%84%E6%89%8B%E9%A0%86%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%E3%83%96%E3%83%BC%E3%83%88%E3%81%AB%E4%BD%BF%E3%81%88%E3%82%8B%E6%9C%80%E7%B5%82%E7%9A%84%E3%81%AA%E7%BD%B2%E5%90%8D%E6%B8%88%E3%81%BF%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E9%81%A9%E5%88%87%E3%81%AA%E6%B5%81%E3%82%8C%E3%82%92%E7%90%86%E8%A7%A3%E3%81%97%E3%81%9F%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2410251%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20HAB%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2410251%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F261235%22%20target%3D%22_blank%22%3E%40Abhay2080%20%E3%81%95%E3%82%93%3C%2FA%3E%E3%80%82%3C%2FP%3E%0A%3CP%20class%3D%22p8i6j01%20paragraph%22%3E%E6%B5%81%E3%82%8C%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3COL%20class%3D%22p8i6j02%22%3E%0A%3CLI%20class%3D%22p8i6j0a%22%3E%3CSTRONG%3E%E9%96%8B%E7%99%BA%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AF%E3%80%81%E3%83%93%E3%83%AB%E3%83%89%E4%B8%AD%E3%81%ABIVT%E3%81%A7%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf%3C%2FCODE%3E%20%3D%20%3CCODE%20class%3D%22p8i6j0f%22%3E0x60000000%20%2B%20sizeof(firmware.bin)%3C%2FCODE%3E%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%3C%2FSTRONG%3E%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%83%AA%E3%83%B3%E3%82%AB%E3%83%BC%2F%E3%83%93%E3%83%AB%E3%83%89%E6%99%82%E3%81%AE%E5%AE%9A%E6%95%B0%E3%81%A7%E3%81%99%E3%80%82%3C%2FLI%3E%0A%3CLI%20class%3D%22p8i6j0a%22%3E%3CSTRONG%3ECST%20%E3%81%AF%3CCODE%20class%3D%22p8i6j0f%22%3Efirmware.bin%3C%2FCODE%3E%3C%2FSTRONG%3E%20(%E6%97%A2%E3%81%AB%E6%AD%A3%E3%81%97%E3%81%84%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf%3C%2FCODE%3E%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99)%20%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%80%81%20%3CCODE%20class%3D%22p8i6j0f%22%3E%5BAuthenticate%20Data%5D%3C%2FCODE%3E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%20(%E4%BA%8B%E5%89%8D%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf%3C%2FCODE%3E%E5%80%A4%E3%82%92%E6%8C%81%E3%81%A4%20IVT%20%E3%82%92%E5%90%AB%E3%82%80)%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%20SHA-256%20%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E8%A8%88%E7%AE%97%E3%81%97%E3%80%81%20%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf.bin%3C%2FCODE%3E%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FLI%3E%0A%3CLI%20class%3D%22p8i6j0a%22%3E%3CSTRONG%3E%3CCODE%20class%3D%22p8i6j0f%22%3Ecat%20firmware.bin%20csf.bin%3C%2FCODE%3E%3C%2FSTRONG%3E%20%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf.bin%3C%2FCODE%3E%E3%82%92%3CCODE%20class%3D%22p8i6j0f%22%3Esizeof(firmware.bin)%3C%2FCODE%3E%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%95%E3%82%BB%E3%83%83%E3%83%88%E3%81%AB%E6%AD%A3%E7%A2%BA%E3%81%AB%E9%85%8D%E7%BD%AE%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AFAHB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%3CCODE%20class%3D%22p8i6j0f%22%3E0x60020000%3C%2FCODE%3E%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%95%E3%82%8C%E3%80%81IVT%E3%81%AE%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf%3C%2FCODE%3E%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%8C%E6%97%A2%E3%81%AB%E6%8C%87%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E6%89%80%E3%81%A8%E5%85%A8%E3%81%8F%E5%90%8C%E3%81%98%E3%81%A7%E3%81%99%E3%80%82%3C%2FLI%3E%0A%3CLI%20class%3D%22p8i6j0a%22%3E%3CSTRONG%3EHAB%E3%81%AF%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AB%3C%2FSTRONG%3EIVT%E3%81%8B%E3%82%89%3CCODE%20class%3D%22p8i6j0f%22%3Ecsf%3C%2FCODE%3E%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%80%81%20%3CCODE%20class%3D%22p8i6j0f%22%3E0x60020000%3C%2FCODE%3E%E3%81%AB%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%97%E3%81%97%E3%80%81CSF%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%A6%E8%AA%8D%E8%A8%BC%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%81%99%E3%81%A6%E3%81%8D%E3%81%AA%E4%B8%80%E6%97%A5%E3%82%92%E3%80%81%3CBR%20%2F%3E%E3%82%AB%E3%83%B3%3C%2FP%3E%0A%3CP%3E%3CBR%20%2F%3E-------------------------------------------------------------------------------%3CBR%20%2F%3E%E6%B3%A8%E8%A8%98%EF%BC%9A%3CBR%20%2F%3E%E3%81%93%E3%81%AE%E6%8A%95%E7%A8%BF%E3%81%8C%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E8%B3%AA%E5%95%8F%E3%81%B8%E3%81%AE%E5%9B%9E%E7%AD%94%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%80%8C%E6%AD%A3%E8%A7%A3%E3%81%A8%E3%81%97%E3%81%A6%E3%83%9E%E3%83%BC%E3%82%AF%E3%80%8D%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99!%3CBR%20%2F%3E-%20%E5%89%8D%E5%9B%9E%E3%81%AE%E6%8A%95%E7%A8%BF%E3%81%8B%E3%82%897%E9%80%B1%E9%96%93Thread%E3%82%92%E3%83%95%E3%82%A9%E3%83%AD%E3%83%BC%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E3%81%9D%E3%81%AE%E5%BE%8C%E3%81%AE%E8%BF%94%E4%BF%A1%E3%81%AF%E7%84%A1%E8%A6%96%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3CBR%20%2F%3E%E3%82%82%E3%81%97%E5%BE%8C%E3%81%A7%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B%E8%B3%AA%E5%95%8F%E3%81%8C%E3%81%82%E3%82%8C%E3%81%B0%E3%80%81%E6%96%B0%E3%81%97%E3%81%84Thread%E3%82%92%E9%96%8B%E3%81%8D%E3%80%81%E9%96%89%E3%81%98%E3%81%9FThread%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3CBR%20%2F%3E-------------------------------------------------------------------------------%3C%2FP%3E%3C%2FLINGO-BODY%3E