AES-GCM は、暗号化されたイメージ全体をより小規模な AES 暗号化ブロック/モジュール単位で表すキー差し替え機能もサポートしています。各モジュールは独自のキーを使用して暗号化されます。最初のキーはデバイスのキー ソースで格納され、後続の各モジュールのキーは直前のモジュール内で暗号化 (ラップ) されます。Bootgen を使用すると、キー ローリングを含むブート イメージを生成できます。BIF の属性 (blocks) を使用して、暗号化用に複数の小さなブロックを作成するためのパターンを指定します。
注記:
Versal アダプティブ SoC の場合、デフォルトのキー ローリングは 32 KB のデータで実行されます。属性 blocks で選択したキー ローリングが各 32 KB に適用されます。これは、使用するハッシュ スキームに合わせるためです。DPA キー ローリング対策をイネーブルにすると、ブート時間に影響します。ブート時間の見積もりは、ブート時間見積もりスプレッドシートを参照してください。
all:
{
id_code = 0x04ca8093
extended_id_code = 0x01
id = 0x2
metaheader
{
encryption = aes,
keysrc = bbram_red_key,
aeskeyfile = efuse_red_metaheader_key.nky,
dpacm_enable
}
image
{
name = pmc_subsys, id = 0x1c000001
partition
{
id = 0x01, type = bootloader,
encryption = aes,
keysrc = bbram_red_key,
aeskeyfile = bbram_red_key.nky,
dpacm_enable,
blocks = 4096(2);1024;2048(2);4096(*),
file = plm.elf
}
partition
{
id = 0x09, type = pmcdata, load = 0xf2000000,
aeskeyfile = pmcdata.nky,
file = pmc_data.cdo
}
}
image
{
name = lpd, id = 0x4210002
partition
{
id = 0x0C, type = cdo,
encryption = aes,
keysrc = bbram_red_key,
aeskeyfile = key1.nky,
dpacm_enable,
blocks = 8192(20);4096(*),
file = lpd_data.cdo
}
partition
{
id = 0x0B, core = psm,
encryption = aes,
keysrc = bbram_red_key,
aeskeyfile = key2.nky,
dpacm_enable,
blocks = 4096(2);1024;2048(2);4096(*),
file = psm_fw.elf
}
}
image
{
name = fpd, id = 0x420c003
partition
{
id = 0x08, type = cdo,
encryption = aes,
keysrc = bbram_red_key,
aeskeyfile = key5.nky,
dpacm_enable,
blocks = 8192(20);4096(*),
file = fpd_data.cdo
}
}
}
注記:
- キー ファイル内のキーの数は、暗号化されるブロックの数と常に一致する必要があります。
- キーの数が暗号化されるブロック数より少ない場合、Bootgen はエラーを返します。
- キーの数が暗号化されるブロック数より多い場合、Bootgen は余分なキーを無視します。