構文
-
Zynq デバイスおよび FPGA の場合:
[aeskeyfile] <key filename>
-
Zynq UltraScale+ MPSoC の場合:
[aeskeyfile = <keyfile name>] <partition>
-
Versal アダプティブ SoC の場合:
{ aeskeyfile = <keyfile name>, file = <filename> }
説明
AES キー ファイルへのパスです。キー ファイルには、パーティションの暗号化に使用される AES キーが含まれます。キー ファイルの内容は、eFUSE または BBRAM に書き込む必要があります。キー ファイルが指定されたパスに存在しない場合、Bootgen が暗号化に使用される新しいキーを生成します。
注記:
Zynq UltraScale+ MPSoC のみ: BIF ファイルで複数のキー ファイルを指定できます。使用するすべての NKY ファイルで Key0、IV0、および Key Opt を同じにする必要があります。1 つの ELF ファイルに対して複数のパーティションを生成する場合、各パーティションを固有のキー ファイルのキーを使用して暗号化できます。次の例を参照してください。
引数
指定するファイルの名前。
戻り値
なし
Zynq 7000 SoC の例
fsbl.elfパーティションと hello.elf パーティションは test.nky のキーを使用して暗号化されます。
all:
{
[keysrc_encryption] bbram_red_key
[aeskeyfile] test.nky
[bootloader, encryption=aes] fsbl.elf
[encryption=aes] hello.elf
}
サンプル キー (.nky) ファイルは test.nky です。
Device xc7z020clg484;
Key 0 8177B12032A7DEEE35D0F71A7FC399027BF....D608C58;
Key StartCBC 952FD2DF1DA543C46CDDE4F811506228;
Key HMAC 123177B12032A7DEEE35D0F71A7FC3990BF....127BD89;
Zynq UltraScale+ MPSoC の例
例 1:
fsbl.elf パーティションは test.nky のキーを使用し、hello.elf は test1.nky のキーを使用し、app.elf は test2.nky のキーを使用して暗号化されます。サンプル BIF は test_multipl.bif です。
all:
{
[keysrc_encryption] bbram_red_key
[bootloader,encryption=aes,aeskeyfile=test.nky] fsbl.elf
[encryption=aes,aeskeyfile=test1.nky] hello.elf
[encryption=aes,aeskeyfile=test2.nky] app.elf
}
例 2:
Bootgen が、hello.elf の hello.elf.0、hello.elf.1、および hello.elf.2 という 3 つのパーティションを作成するとします。サンプル BIF は test_mulitple.bif です。
all:
{
[keysrc_encryption] bbram_red_key
[bootloader,encryption=aes,aeskeyfile=test.nky] fsbl.elf
[encryption=aes,aeskeyfile=test1.nky] hello.elf
}
その他の情報:
- fsbl.elf パーティションは、test.nky のキーで暗号化されます。すべての hello.elf パーティションは、test1.nky のキーを使用して暗号化されます。
- test1.1.nky および test1.2.nky という名前のキー ファイルを test1.nky と同じパスに置くことで、hello パーティションごとに一意のキー ファイルを使用できます。
- hello.elf.0 は test1.nky を使用
- hello.elf.1 は test1.1.nky を使用
- hello.elf.2 は test1.2.nky を使用
- キー ファイル (test1.1.nky または test1.2.nky) が存在しない場合、Bootgen はそのキー ファイルを生成します。
- aeskeyfile の形式:
.nky ファイルには次のフィールドを使用できます。
- Device
- .nky ファイルを使用するデバイスの名前。Zynq デバイスおよび Zynq UltraScale+ MPSoC の両方で有効です。
- Keyx, IVx
- x は Key0、Key1、Key2 ...、IV0、IV1、IV2...といったキー/IV 番号に該当する整数。AES キーは 256 ビット、キーは 12 バイト長にする必要があります。Keyx は Zynq デバイスおよび Zynq UltraScale+ MPSoC に有効ですが、IVx は Zynq UltraScale+ MPSoC にのみ有効です。
- Key Opt
- ブートローダーの最初のブロックを暗号化するのに使用するオプションのキー。Zynq UltraScale+ MPSoC にのみ有効です。
- StartCBC - CBC Key
- CBC キーは 128 ビット長である必要があります。Zynq デバイスにのみ有効です。
- HMAC - HMAC Key
- HMAC キーは 128 ビット長である必要があります。Zynq デバイスにのみ有効です。
- Seed
- パーティションの暗号化に必要なキー/IV ペアを生成するために使用する必要のある最初のシード。AES シードは 256 ビット長である必要があります。Zynq UltraScale+ MPSoC にのみ有効です。
- FixedInputData
- カウンター モード KDF への入力としてシードと共に使用されるデータ。AES 固定入力データは 60 バイト長である必要があります。Zynq UltraScale+ MPSoC にのみ有効です。
注記:- シードは FixedInputData と共に指定する必要があります。
- シードには、複数のキー/IV ペアは使用されません。
Versal アダプティブ SoC の例
all:
{
image
{
name = pmc_subsys, id = 0x1c000001
{
type = bootloader, encryption = aes,
keysrc = bbram_red_key, aeskeyfile = key1.nky,
file = plm.elf
}
{
type = pmcdata, load = 0xf2000000,
aeskeyfile = key2.nky, file = pmc_cdo.bin
}
{
type=cdo, encryption = aes,
keysrc = efuse_red_key, aeskeyfile = key3.nky,
file=fpd_data.cdo
}
}
}