1246417_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1246417_ja-JP

1246417_ja-JP

i.MX8M Nanoでセキュアブートを有効にする手順
 
 

以下は、imx8m nanoボードでセキュアブートを有効にする手順です。LPDDR4でテストされたimx8m nanoボードの各ステップログとアドレスについて説明しました。


セキュア ブート機能では、デジタル署名を使用して、デバイスのブート シーケンス中に不正なソフトウェアが実行されるのを防ぎます。マルウェアがブートシーケンスを制御した場合、機密データ、サービス、およびネットワークが影響を受ける可能性があります。

以下のリンクからCST(コード署名ツール)をダウンロードします
https://www.nxp.com/webapp/sps/download/preDownload.jsp?render=true

1. PKI ツリーの生成

Code Signing Tools パッケージには、keys/ ディレクトリの下に OpenSSL ベースのキー生成スクリプトが含まれています。hab4_pki_tree.sh スクリプトは、最大 4 つのスーパー ルート キー (SRK) と、それらの従属 IMG キーと CSF キーを含む PKI ツリーを生成できます。
$./hab4_pki_tree.sh
...
既存の CA キー (y/n) を使用しますか?: n
楕円曲線暗号(y / n)を使用しますか?: n
PKI ツリーのキーの長さをビット単位で入力します: 2048
PKI ツリーの期間 (年): 5 を入力します
スーパールートキーはいくつ生成する必要がありますか?4
SRK 証明書に CA フラグを設定しますか?(y/n)?: y

2. SRKテーブルとSRKハッシュの生成

次の手順では、SRK テーブルとそれに対応する SRK テーブル ハッシュを生成します
上記のいずれかの手順で作成された SRK 公開キー証明書から。

srktool は、SRK テーブルとそれに対応する SRK の生成に使用できます
テーブルハッシュ。

- Linux 64ビットマシンでのSRKテーブルとSRKハッシュの生成:

$ ../linux64/bin/srktool -h 4 -t SRK_1_2_3_4_table.bin -e \
SRK_1_2_3_4_fuse.bin -d sha256 -c \
SRK1_sha256_2048_65537_v3_ca_crt.pem,\
SRK2_sha256_2048_65537_v3_ca_crt.pem,\
SRK3_sha256_2048_65537_v3_ca_crt.pem,\
SRK4_sha256_2048_65537_v3_ca_crt.pem

SRK_1_2_3_4_table.binファイルとSRK_1_2_3_4_fuse.binファイルは、さらに
doc/imx/habv4/guides/にあるHABガイドで説明されている手順です。
ディレクトリ。


3. i.MX8M Nanoデバイスでブートローダイメージに署名し、安全に起動する手順のステップバイステップ

3.1 U-Boot でのセキュアブートサポートの有効化
git link https://source.codeaurora.org/external/imx/uboot-imx から u-boot をクローンします

u-bootでセキュアブートサポートを有効にする
- defconfig:
CONFIG_SECURE_BOOT=y
CONFIG_IMX_HAB=y 2020.04 u-bootから

イメージの構築

$ make imx8mn_evk_defconfig
$ make
Output images
$(UBOOT_SRC)/u-boot-nodtb.bin
$(UBOOT_SRC)/spl/u-boot-spl.bin
$(UBOOT_SRC)/arch/arm/dts/fsl-imx8mm-evk.dtb‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

3.2 ARM トラステッド ファームウェア
以下のソースリンクからATFを入手してください
https://source.codeaurora.org/external/imx/imx-atf

イメージの構築

$ make PLAT=imx8mn bl31

出力画像

$(ATF_SRC)/build/imx8mn/release/bl31.bin

3.3 DDR FW画像の取得
$ wget の https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.0.bin
$ chmod 777 firmware-imx-8.0.bin
$./firmware-imx-8.0.bin

ライセンス契約に同意します
$ cd firmware-imx-8.0.bin /firmware/ddr/synopsys

Output images
$(DDRFW_SRC)/lpddr4_*

3.4 Get IMX-MKIMAGE source
https://source.codeaurora.org/external/imx/imx-mkimage

以下は、mkimage を使用してブートローダーを生成する手順です

必要な画像を集める

SPL and U-boot images
- u-boot-nodtb.bin
- u-boot-spl.bin
- fsl-imx8mm-evk.dtb‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

ATF画像
- bl31.bin

DDRファームウェアイメージ
- lpddr4_pmu_train_1d_dmem.bin
- lpddr4_pmu_train_1d_imem.bin
- lpddr4_pmu_train_2d_dmem.bin
- lpddr4_pmu_train_2d_imem.bin

これらのファイルをimx-mkimage/iMX8Mディレクトリにコピーします。

3.5 i.MX8MN ブートイメージのビルド flash.bin
$ make SOC=iMX8MN flash_evk
========= OFFSET ダンプ=========
ローダー画像:
header_image_off 0x0
dcd_off 0x0
image_off 0x40
csf_off 0x24a00
SPL HABブロック:0x911fc0 0x0 0x24a00

セカンドローダー画像:
sld_header_off 0x58000
sld_csf_off 0x59020
SLD HABブロック:0x401fcdc0 0x58000 0x1020

$ make SOC=iMX8MN print_fit_hab
./print_fit_hab.sh 0x60000 evk.dtb
0x40200000 0x5B000 0xC3AB0
0x402C3AB0 0x11EAB0 0x78F0
0x960000 0x1263A0 0xA1B0
0xBE000000 0x130550 0x10

3.6 CSF 記述ファイルの作成

imx-mkimage が提供するビルドログは、「認証
Data" パラメーターを CSF に含めます。

- ビルドログのSPL flash.bin「Authenticate Data」アドレス:

SPL HABブロック:0x911fc0 0x0 0x24a00

- csf_spl.txtファイル内の「データの認証」コマンド:

ブロック = 0x911fc0 0x0 0x24a00 "flash.bin"

- ビルドログのFITイメージの「Authenticate Data」アドレスflash.bin

SLD HABブロック:0x401fcdc0 0x57c00 0x1020

- ビルドログのFITイメージの「Authenticate Data」アドレスprint_fit_hab:

0x40200000 0x5B000 0xC3AB0
0x402C3AB0 0x11EAB0 0x78F0
0x960000 0x1263A0 0xA1B0
0xBE000000 0x130550 0x10

- csf_fit.txtファイル内の「データの認証」コマンド:

ブロック = 0x401fcdc0 0x57c00 0x1020 "flash.bin"、\
0x40200000 0x5B000 0xC3AB0 "flash.bin"、\
0x402C3AB0 0x11EAB0 0x78F0 "flash.bin"、\
0x960000 0x1263A0 0xA1B0 "flash.bin"、\
0xBE000000 0x130550 0x10「flash.bin」


3.7 閉じたデバイスでのカーネルクラッシュの回避
- csf_spl.txtに「MIDのロック解除」コマンドを追加:

[アンロック]
エンジン = CAAM
機能 = MID

3.8 flash.binバイナリの署名
CST ツールは、flash.bin イメージを歌い、CSF を生成するために使用されます
バイナリ。ユーザーは、上記の手順で作成したCSF記述ファイルを入力する必要があります
CSF コマンド、SRK テーブル、
署名と証明書。

- SPL CSF バイナリファイルを作成します。

$ ./cst -i csf_spl.txt -o csf_spl.bin

- FIT CSFバイナリファイルを作成します。

$ ./cst-i csf_fit.txt -o csf_fit.bin


3.8 CSF を flash.bin バイナリでアセンブルする
-------------------------------------------

上記の手順で生成された CSF バイナリは、
flash.bin画像。

CSF オフセットは、flash.bin ビルド ログから取得できます。

- SPL CSFオフセット:

csf_off 0x24a00

- FIT CSF offset:

sld_csf_off 0x59020

署名されたflash.binイメージは、次のようにアセンブルできます。

- flash.binコピーを作成します。

$ cp flash.bin signed_flash.bin

- csf_spl.binをsigned_flash.binのオフセット0x24a00挿入します。

$ dd if=csf_spl.bin of=signed_flash.bin seek=$((0x24a00)) bs=1 conv=notrunc

- csf_fit.binをsigned_flash.binのオフセット0x59020挿入します。

$ dd if=csf_fit.bin of=signed_flash.bin seek=$((0x59020)) bs=1 conv=notrunc

- フラッシュ署名flash.bin画像:

$ sudo dd if=signed_flash.bin of=/dev/sd bs=1K seek=33 && sync

3.9 HAB イベントの検証
------------------------
次の手順では、イメージに含まれる署名がflash.bin
エラーなしで正常に処理されました。HAB は処理時にイベントを生成します
問題が発生した場合のコマンド。

デバイスを閉じる前に、ユーザーはHABイベントが見つからなかったことを確認する必要があります。
以下の例:

- HAB イベントを確認します。

=> hab_status

セキュアブートが無効

HAB 構成: 0xf0、HAB 状態: 0x66


3.10 SRKハッシュのプログラミング
-------------------------
U-Boot ヒューズ ツールは、i.MX SoC の eFuse のプログラミングに使用できます。

- ダンプ SRK ハッシュは、ホスト マシンの値を融合します。

$ hexdump -e '/4 "0x"' -e '/4 "%X""\n"' SRK_1_2_3_4_fuse.bin
0x20593752
0x6ACE6962
0x26E0D06C
0xFC600661
0x1240E88F
0x1209F144
0x831C8117
0x1190FD4D

- i.MX8MNデバイスのプログラムSRK_HASH[255:0]ヒューズ:

=> ヒューズ プログラム 6 0 0x20593752
=> ヒューズ Prog 6 1 0x6ACE6962
=> ヒューズ Prog 6 2 0x26E0D06C
=>ヒューズプログラム6 3 0xFC600661
=> ヒューズ Prog 7 0 0x1240E88F
=>ヒューズプログラム7 1 0x1209F144
=>ヒューズプログラム7 2 0x831C8117
=> ヒューズ Prog 7 3 0x1190FD4D

3.10 デバイスを完全に保護します
----------------------------------

追加のヒューズをプログラムして、デバイスを完全に保護することができます。
これらのヒューズとその影響の詳細については、AN4581[1]をご覧ください。

- プログラムSRK_LOCK:

=> ヒューズ プログラム 0 0 0x200

- プログラムDIR_BT_DIS:

=>ヒューズプログラム1 3 0x8000000

- プログラムSJC_DISABLE:

= >ヒューズプログラム1 3 0x200000

- JTAG_SMODE:

=> ヒューズ プログラム 1 3 0xC00000

Tags (1)
No ratings
Version history
Last update:
‎01-04-2026 11:09 PM
Updated by: