UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 52881

コンフィギュレーション - ビットストリームの暗号化- 暗号化したビットストリームの生成およびプログラム方法

説明

暗号化されたビットストリームの生成方法および、暗号化キーを FPGA にプログラムするほう方法を教えてください。


ソリューション

ザイリンクス FPGA では、AES、HMAC、DNA などのビットストリーム暗号化方法が複数サポートされています。

これらの方法については、xilinx.com にある各 FPGA のコンフィギュレーション ユーザー ガイドを参照してください。

ザイリンクスでのビットストリームのセキュリティ サポート、利用可能なオプション、そのインプリメント方法については、まず、コンフィギュレーション ユーザー ガイドをよくお読みください。

また、デザインをセキュリティ保護するには、外部暗号化デバイスを使用する必要があります。

キーを入手し、検証コードを計算するには、デバイスを読み出してください。

同じようなインプリメンテーションを説明しているリファレンス デザインは、こちらにあります。

http://japan.xilinx.com/support/documentation/application_notes/xapp780.pdf


このインプリメンテーションに関してご利用いただけるのは、これだけなので、これをご利用になる場合は、提供されているリファレンス デザインおよびコードを変更する必要があります。

BBRAM または eFUSE ストレージ オプションを選択する場合は、それぞれの機能を理解いただいて、お客様のデザイン要件に合ったものをお選びください。

それぞれの短所、長所に関しては、次の表および注記を参照してください。

各オプションの詳細については、該当デバイスのユーザー ガイドを参照してください。



ザイリンクス デバイスを使用したビットストリーム暗号化に関するう一般的な情報は次のようになっています。

Virtex-6 および 7 シリーズでは、HMAC および AES キーの両方がサポートされています。

Spartan デバイスには AES キー オプションのみがあります。

また、ビットストリームの圧縮と暗号化も、Virtex-6 および 7 シリーズ デバイスでのみサポートされています。

詳細は (ザイリンクス アンサー 37413) を参照してください。

3 つの大型 Spartan-6 デバイスでのみ、ビットストリームの暗号化がサポートされています (XC6SLX75 / 75T、XC6SLX100 / 100T、XC6SLX150 / 150T)。

HMAC キーはビットストリームに含まれており、AES キーのように、FPGA にプログラムする必要はありません。

HMAC キーは、AES キーと同じ NKY キー ファイルおよび BIT ファイルに含まれています。

ビットストリームの暗号化が使用されていたとしても、ICAP インターフェイスを介してリードバックを実行することができます。

POR または PROG が最初にアサートされて、コンフィギュレーション メモリが消去されているなら、デバイスが暗号キーを保持していたとしても、暗号化されていないビットストリームをデバイスをコンフィギュレートするために読み込むことができます。

FUSE_CNTL[0] ビットが一旦プログラムされると、FPGA をコンフィギュレートするには、eFUSE キーで暗号化されたビットストリームのみが使用できます。


NKY ファイルを BitGen に入力するか、またはキーを指定して BitGen でそのファイルを作成することができます。

HMAC キーが指定されていない場合、BitGen が自動的にそのキーを生成します。

しかし、このキーは、AES キーとは異なり、JTAG を介して直接 FPGA に読み込まれません。

これは、暗号化されたビットストリームに含まれ、保護 (ラップ) されています。

オンチップの復号化プロセス中に、この HMAC キーはビットストリームから抽出され、認証アルゴリズムで使用されます (たとえば、HMAC キーにはオンチップのキー ストレージは不要です)。

NKY ファイルのフォーマット : KEY HMAC/(AES の場合は 0) <hex string> (256 ビットの HMAC/AES キー)

NKY ファイルのサンプルは次のようになります。

StartCBC BitGen 設定はオプションであって、必須ではありません。

ザイリンクスの AES ビットストリーム暗号化には、256 ビットの AES キーを利用した CBC (Cipher Block Chaining) と呼ばれるテクニックが使用されています。

CBC は、ビットストリームの 2 つの異なる箇所が同じ実際値を持っている場合に (すべて 0 の場合など)、別々のパターンに暗号化するようにします。

これにより、不正アクセスがあった場合のザイリンクス ビットストリーム復号化を防ぎます。


CBC には、開始番号にランダムな番号 (初期ベクター) が必要です。



BBRAM および eFUSE の AES/HMAC キー フロー (ISE/Vivado および iMPACT/ハードウェア セッション)

(ISE) :

1) デザインをインプリメントした後に、[Encryption BitGen] 設定をオンにします。

2) 暗号化方法に BBRAM または eFUSE を選択し、HMAC または AES キーを入力して、BitGen を実行し、NKY (キー) および BIT (コンフィギュレーション) ファイルを生成します。

  • Virtex-6 および 7 シリーズ デバイスの場合は、HMAC および AES キーの両方が必要です。
  • 暗号化をオンにしているのに、キーまたは AES 初期ベクターを指定していない場合は、BitGen がランダムにそれらを生成します。




Vivado :

注記 : Vivado フローを使用したプログラミングおよびデバッグに関しては、(UG908) を参照してください。

Vivado のビットストリーム オプションは、デザインの XDC ファイルを使用してデザイン自体に設定されます。

Vivado デザインに対してビットストリーム暗号化をイネーブルにし設定するには、次の手順に従ってください。

1) 合成後またはインプリメンテーション後のデザインを開き、プロジェクトのソース ビューの制約のドロップダウン メニューで、XDC をダブルクリックして開きます。

2) XDC で、ビットストリーム暗号化をイネーブルにするため、次のプロパティを設定します。

set_property BITSTREAM.ENCRYPTION.ENCRYPT Yes [current_design]

3) (UG908) の表 A-1 「デバイス コンフィギュレーション ビットストリーム設定」を参照し、XDC または Tcl スクリプトで暗号化オプションの残りを同様に設定します。

4) サンプルは次のようになります。





注記 : Tcl コンソールを使用するか、または Tcl スクリプトを使用して、これらを Tcl で設定して、XDC に反映されることもできます。

5) ビットストリームを生成したら、iMPACT を起動するか、ハードウェア セッションを開き、次のセクションのいずれかに従ってください。

注記 : BITSTREAM プロパティのすべてをしポートするには、次のコマンドを使用します。

report_property -all [current_design] BITSREAM*

もう少し厳密に設定する場合は、次のコマンドを使用します。

report_property -all [current_design] BITSREAM.CONFIG*

または

report_property -all [current_design] BITSREAM.ENCRYPTION*

デフォルト値がリストされている場合は、チェックしたい各プロパティに対し、次のコマンドを使用します。

list_property_value -default <property> [current_design]



iMPACT および Vivado ハードウェア セッションを使用した暗号化されたビットストリームのプログラム

iMPACT :

1) まず、デバイスを選択して右クリックし、[Assign New Configuration File] をクリックして、BIT ファイルをダウンロードする場合と同じように、FPGA に NKY ファイルをダウンロードします。

注記 : NKY ファイルは、BIT ファイルと同じプロジェクト ディレクトリに生成する必要があります。



2) 暗号化された BIT ファイルでも、暗号化されていない BIT ファイルでも (この場合はキーが無視される)、FPGA をコンフィギュレートすることができます。

AES キーを使用して、暗号化されたビットストリームを使用するか、暗号化されていないビットストリームを使用する場合、コンフィギュレーションに制限を設けるか、設けないか、というオプションに関しては、コンフィギュレーション ユーザー ガイドまたは (ザイリンクス アンサー 39389) を参照してください。


ハードウェア セッション :

注記 : Vivado フローを使用したプログラミングおよびデバッグについては (UG908) を参照してください。

1) Flow Navigator の [Program and Debug] からハードウェア セッションを起動します。

2) 既存のハードウェア ターゲットを開くか、または新しいものを Connection Wizard を使用して接続します。

3) デバイス/ボードに従って、正しいハードウェア プロパティを設定します。

4) 次の図に示すように、ターゲット デバイスを右クリックして、NKY ファイルおよび BIT ファイルを割り当てます。




BBRAM および eFUSE の AES/HMAC キー オプション (コマンド ライン) および説明

暗号化用の ISE BitGen オプション設定およびコマンド ライン オプション

コマンド例
-g Encrypt: ビットストリームを暗号化 ビットストリームの暗号化のオン/オフ
-g HKey: HMAC キー (16 進数の文字列) HMAC キーを指定します。キー ファイルに書き込まれます。
-g KeyFile: 暗号化キー ファイルを入力 AES キーおよび AES 初期ベクターが含まれます。指定されていない場合は BitGen がランダム キーおよびベクターを作成します。
-g startCBC: AES 初期ベクター 初期ベクターを指定します。キー ファイルに書き込まれます。

Spartan-6 の基本的な BitGen 暗号化コマンド

bitgen -w -g Encrypt:Yes -g Key0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX  system.ncd 

Virtex-6 または 7 シリーズ デバイスの詳細な BitGen コマンド

bitgen -w -g Encrypt:Yes -g EncryptKeySelect:efuse -g Key0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX -g HKey:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX -g compress system.ncd system.bit system.pcf

異なるオプションを使用した複雑なコマンド

bitgen -w -g Security:Level2 -g Encrypt:Yes -g KeyFile:XXX.nky -g StartCBC:XXXXXXXX -g JTAG_SysMon:Disable -g compress system.ncd system.bit system.pcf



その他の BitGen オプションに関しては、14.4 のコマンド ライン ユーザー ガイドを参照してください。

http://www.xilinx.com/support/documentation/sw_manuals_j/xilinx14_3/devref.pdf

Virtex-6 および 7 シリーズのビットストリームの暗号化/復号化に関しての詳細は、XAPP1084 を参照してください。

http://japan.xilinx.com/support/documentation/application_notes/xapp1084_tamp_resist_dsgns.pdf

AR# 52881
日付 06/09/2015
ステータス アクティブ
種類 ソリューション センター
デバイス
  • FPGA Device Families
ツール
  • ISE Design Suite
  • Vivado Design Suite
  • Vivado Design Suite - 2014.4
このページをブックマークに追加