aeskeyfile - 2022.1 日本語

Bootgen ユーザー ガイド (UG1283)

Document ID
UG1283
Release Date
2022-04-26
Version
2022.1 日本語

構文

  • Zynq デバイスおよび FPGA の場合:
    [aeskeyfile] <key filename>
  • Zynq UltraScale+ MPSoC:
    [aeskeyfile = <keyfile name>] <partition>
  • Versal ACAP の場合:
    { 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.elftest1.nky のキーを使用し、app.elftest2.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.elfhello.elf.0hello.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.0test1.nky を使用
  • hello.elf.1test1.1.nky を使用
  • hello.elf.2test1.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 ACAP の例:

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                                   
      }                                                      
   }                                                         
}