UltraScale および UltraScale+ デバイス用の暗号化および認証されたファイルの生成 - 2022.1 日本語

Vivado Design Suite ユーザー ガイド: プログラムおよびデバッグ (UG908)

Document ID
UG908
Release Date
2022-04-26
Version
2022.1 日本語
注記: 詳細は 『暗号化と認証を使用して UltraScale/UltraScale+ FPGA のビットストリームを保護』 (XAPP1267) を参照してください。

暗号化ビットストリームを生成するには、Vivado IDE でインプリメント済みデザインを開きます。メイン メニューから Flow > Bitstream Settings をクリックして [Settings] ダイアログ ボックスを開きます。ダイアログ ボックスの上部にある Configure Additional Bitstream Settings というリンクをクリックします。

図 1. UltraScale および UltraScale+ デバイスのビットストリーム設定

[Edit Device Properties] ダイアログ ボックスが開きます。左側のペインで Encryption をクリックします。

図 2. UltraScale コンフィギュレーションの暗号化設定

[Edit Device Properties] ダイアログ ボックスで、Encryption Settings および Key Settings を指定します。

  • Encryption Settings
    • Enable Bitstream Encryption YES に設定します。
    • Select location of encryption keyBBRAM または EFUSE のいずれかに設定します。
      • キー ロケーションは暗号化されたビットストリームに埋め込まれます。
      • 暗号化されたビットストリームをデバイスにダウンロードすると、FPGA で BBR または eFUSE キー レジスタに読み込まれたキーが使用され、暗号化されたビットストリームが復号化されます。
    • Enable obfuscated key loadENABLE または DISABLE に設定します。
      • イネーブルにすると、ユーザーが生成したキーが BBRAM に保存される前に暗号化されます。ディスエーブルにすると、キーはそのまま BBRAM に保存されます。
  • Key Settings
    • Starting AES encryption key (key0) でビットストリームを暗号化する際に使用する AES 暗号キーを指定します。64 個までの 16 進数文字を使用して、256 ビット キーを指定できます。
      • キーは、拡張子が .nky のファイルに書き込まれます。キーを BBR に読み込む際、またはキーを eFUSE キー レジスタにプログラムする際に、このファイルを使用します。
    • 注記: この値は、入力暗号化ファイルが指定されている場合を除き、現在のプロジェクトの制約ファイルに保存されます。この値が制約ファイルに保存されないようにするには、入力暗号化ファイルを指定してください。
    • Input encryption file を指定します。
      • 既存の .nky ファイルを指定して、暗号キー設定を取得します。このフィールドはオプションで、AES、HMAC、および CBC を手動で指定する場合は入力する必要はありません。
    • Starting AES initial vector (IV0) value を指定します。
      • 最初のキーの初期化ベクターです。各キーには、入力暗号化ファイルで供給可能な個別の初期化ベクターが必要です。
    • 注記: この値は、現在のプロジェクトの制約ファイルに保存されます。この値が制約ファイルに保存されないようにするには、入力暗号化ファイルを指定してください。
    • Starting obfuscate initial vector (Obfuscate IV0) value を指定します。
      • 難読化キーの初期化ベクターです。
    • 注記: この値は、現在のプロジェクトの制約ファイルに保存されます。この値が制約ファイルに保存されないようにするには、入力暗号化ファイルを指定してください。
  • Key Rolling Settings
    • debug file to report all the keys generated in KDF mode を生成する必要がある場合は、そのように指定します。
    • Fixed Input Data for KDF keyrolling を指定します。これはオプションで 60 バイトの固定入力値を 120 桁の 16 進数で指定できます。この 60 バイトの入力と 4 バイトのカウンターが、RAND_bytes を介して KDF の疑似ランダム固定入力値の 64 バイトの入力となります。
    • Seed for KDF Keyrolling を指定します。これはオプションで KDF の 32 バイトのシード値を 64 桁の 16 進数で指定できます。
    • Number of encryption blocks per key および Number of frames per AES-256 key を指定します。
      • 暗号化ブロックおよびフレームの数は、ビットストリームを個別のキーを使用するいくつのセクションに分割するかを指定します。

認証設定を指定するには、左側のペインで Authentication をクリックします。

図 3. [Edit Device Properties] ダイアログ ボックス: [Authentication] ページ

[Edit Device Properties] ダイアログ ボックスの [Authentication] ページで、次のように設定します。

  • Authentication Settings
    • Enable Bitstream AuthenticationYES に設定します。
    • Input file containing RSA Private Key で RSA 秘密キーを含む入力ファイルを指定します。

    設定を終了したら、OK をクリックして設定をプロジェクトに適用します。インプリメンテーションを再実行してビットストリームを再生成します。write_bitstream コマンドの処理が正常に完了すると、生成された暗号キー ファイル (.nky) が暗号化ビットストリーム ファイルと同じ場所に保存されます。

256 ビットの AES (Advanced Encryption Standard) キーを使用してビットストリームを暗号化し、ビットストリームをダウンロードして認証された FPGA 上でのみ実行されるようにすると、ビットストリームの IP を保護できます。これには、暗号化ビットストリームをダウンロードする前に、256 ビットのキーを認証された FPGA の BBR レジスタにプログラムします。