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" (暗号 鍵ファイル)を生成しますこの暗号鍵ファイルはツールが自動生成したデータです。
ここで生成した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では関係ありません。
ここまでのステップで、FPGAに暗号化鍵を書き込み、その暗号鍵に対応したFPGAコンフィグデータを生成できたことになります。
【制御アプリRefApp7で暗号化データをコンフィグ】
USBコンフィグ画面で、□Xilinx device??、□Bit Swap??にチェックを入れ、さらに□Encrypt??にもチェックを入れてください。これで、暗号化したFPGAコンフィグデータをFPGAにプログラムすることができます。同じ暗号鍵ファイル(xxxx.nky)で暗号化したコンフィグデータであれば、何種類でもUSBコンフィグすることができます(コンフィグ後にプログラムロックされません)。