コンフィグデータの暗号化(ツール設定)

FPGA暗号化データの生成方法 (ISE)

悪意のあるリバースエンジニアリングからお客様のFPGA回路流出を防ぐために、FPGAコンフィグデータを暗号化して生成します。

【 ISEツールでの設定 】

ISEツールの「Generate Programming file」プロパティを開きます(下図)。ここで、Encrypt Optionsを選択し、Encrtpt Bit Streamチェックボックスにチェックを入れます。その次に、Encrypt Key Serelctで暗号化キーをOne Time ROM(eFUSE)化するか、バッテリーバックアップRAM(BBRAM)化するか選択します。
この例では、BBRAMに暗号化キーを格納します。
あとは、通常のコンフィグデータ生成の手順と同じです。 コンフィグデータの "xxxx.bin”(USBコンフィグで使用します)ファイルと、"xxxx.nky" (暗号 鍵ファイル)を生成しますこの暗号鍵ファイルはツールが自動生成したデータです。

 General Programming fileのプロパティ

ここで生成したxxx.nkyデータを他のプロジェクトで利用する場合は、上記プロパティ画面のInput Encryption Key File欄に、xxx.nkyファイルを指定してください。

【JTAGでFPGAに鍵データをプログラム】

FPGAをコンフィグする前に、FPGAに暗号化のための鍵ファイル(xxxx.nky)をJTAG書き込みします。
この例ではBBRAMに書き込むので、SX-Card6のバックアップ電源ポートに外部電源がなければ、ボード電源をOFFにすると暗号鍵も消失します。

ザイリンクス社の専用ダウンロードケーブル"Platform Cable USB”を利用して、FPGAに xxxx.nky ファイルを書き込んでください。プログラムする際に "Device programming Properties"画面で Enable Encrypted Reconfigオプションの設定が選択できますが、Spartan6では関係ありません。

iMPACT JTAG書き込み

ここまでのステップで、FPGAに暗号化鍵を書き込み、その暗号鍵に対応したFPGAコンフィグデータを生成できたことになります。

【制御アプリRefApp7で暗号化データをコンフィグ】

USBコンフィグ画面で、□Xilinx device??、□Bit Swap??にチェックを入れ、さらに□Encrypt??にもチェックを入れてください。これで、暗号化したFPGAコンフィグデータをFPGAにプログラムすることができます。同じ暗号鍵ファイル(xxxx.nky)で暗号化したコンフィグデータであれば、何種類でもUSBコンフィグすることができます(コンフィグ後にプログラムロックされません)。

RefApp7 USB Config Encryption


Smart-USB Plus / Sigma 技術サポート
https://www.smartusb.info/article.php/sxcard6_aes2