暗号化を使用して 7 シリーズ FPGA のビットストリームを保護

ア プ リ ケーシ ョ ン ノ ー ト : 7 シ リ ーズ FPGA
暗号化を使用 し て 7 シ リ ーズ FPGA の
ビ ッ ト ス ト リ ームを保護
XAPP1239 (v1.0) 2015 年 4 月 15 日
著者 : Kyle Wilkinson
概要
こ のアプ リ ケーシ ョ ン では、 ザ イ リ ン ク ス の Vivado® Design Suite で暗号化ビ ッ ト ス ト リ ームお よ び暗号化キーを生成す
る 簡単な手順について説明 し ます。 ま た、 Vivado Design Suite を使用 し て、 暗号化キー と 暗号化ビ ッ ト ス ト リ ーム をザ イ
リ ン ク ス の 7 シ リ ーズ FPGA へプ ロ グ ラ ムする 手順 も 説明 し ます。
は じ めに
ザ イ リ ン ク ス の 7 シ リ ーズ デバ イ ス にはオンチ ッ プ AES (Advanced Encryption Standard) 復号化 ロ ジ ッ ク があ り 、 デザ イ ン
を高度なセキ ュ リ テ ィ で保護 し ます。 暗号化 さ れた 7 シ リ ーズ FPGA デザ イ ンは、 意図 し ない FPGA 上で使用す る 目的で
複製ま たは リ バース エン ジニア リ ン グ さ れ る こ と はあ り ません。 7 シ リ ーズ FPGA の AES シ ス テ ムは、 ソ フ ト ウ ェ ア ベー
ス のビ ッ ト ス ト リ ーム暗号化機能 と 、 オンチ ッ プのビ ッ ト ス ト リ ーム復号化機能、 お よ び暗号化キーを格納す る 専用 メ モ
リ で構成 さ れ ます。 オプシ ョ ン と し てザ イ リ ン ク ス の Vivado ツールを使用 し て、 暗号化キー と 暗号化 さ れた ビ ッ ト ス ト
リ ーム を生成で き ます。 真の ラ ン ダ ム な ソ ース か ら ユーザーが生成 し た キーを使用す る こ と を推奨 し ます。 7 シ リ ーズ デ
バ イ ス では、こ の暗号化キーをデバ イ ス内部の専用 RAM (外部の小型バ ッ ク ア ッ プ バ ッ テ リ に接続 さ れた RAM - BBRAM)
ま たは eFUSE のいずれかに格納で き ま す。 暗号化キーは、 JTAG ポー ト を介 し てのみデバ イ ス にプ ロ グ ラ ム で き ます。 7
シ リ ーズ デバ イ ス では、 コ ン フ ィ ギ ュ レーシ ョ ン実行中に反対の処理、 つま り 取 り 込んでい る ビ ッ ト ス ト リ ームの復号化
が行われます。 7 シ リ ーズ FPGA の AES 暗号化 ロ ジ ッ ク は、 256 ビ ッ ト の暗号化キーを使用 し ます。 オンチ ッ プの AES 復
号化 ロ ジ ッ ク は、 ビ ッ ト ス ト リ ーム復号化以外の用途には使用で き ません。 AES 復号化 ロ ジ ッ ク はユーザー デザ イ ン では
使用で き ず、 コ ン フ ィ ギ ュ レーシ ョ ン ビ ッ ト ス ト リ ーム以外のデー タ の復号化には使用で き ません。
AES (Advanced Encryption Standard) および認証
7 シ リ ーズ FPGA の暗号化シ ス テ ム は、 AES (Advanced Encryption Standard) 暗号化アル ゴ リ ズ ム を使用 し ま す。 AES は、
NIST
(National
Institute
of
Standards
and
Technology)
お よ び米国商務省 が 認証す る 公式規格 で す
(http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf)。7 シ リ ーズ FPGA の AES 暗号化シ ス テ ムは 256 ビ ッ ト の暗号化キー
を使用 し (NIST が定め る 128 ビ ッ ト お よ び 192 ビ ッ ト の暗号化キーは イ ンプ リ メ ン ト し ない)、一度に 128 ビ ッ ト のデー タ
ブ ロ ッ ク を暗号化ま たは復号化 し ます。 NIST に よ る と 、 256 ビ ッ ト キーの場合、 キーの組み合わせは 1.1x1077 通 り 考え
ら れます。 AES の よ う な対称暗号化アルゴ リ ズ ムでは、 暗号化 と 復号化に同 じ キーが使用 さ れます。 し たがっ て、 デー タ
の安全性はキーの安全性に依存 し てい ます。
7 シ リ ーズ FPGA でサポー ト さ れ る AES は、 ザ イ リ ン ク ス の Virtex®-6 デバ イ ス でサポー ト さ れてい る も の と 同 じ です。
(AES の 有 効 性 は 検 証 さ れ て い ま す。 詳 細 は、 http://csrc.nist.gov/groups/STM/cavp/documents/aes/aesval.html#2363 に あ る
「Advanced Encryption Standard Algorithm Validation List」 を参照 し て く だ さ い。 ) 256 ビ ッ ト の暗号化キーを eFUSE ビ ッ ト ま
たはバ ッ ク ア ッ プ バ ッ テ リ 付 き RAM のいずれかにユーザーが格納 し 、 ザ イ リ ン ク ス ビ ッ ト ス ト リ ーム ラ イ タ ーで AES
を用いて ビ ッ ト ス ト リ ーム を暗号化 し ます。 こ の暗号化機能では、 CBC (Cipher Block Chaining) モー ド の 256 ビ ッ ト AES
暗号を使用 し て ビ ッ ト ス ト リ ーム を暗号化で き ます。 ユーザーが 128 ビ ッ ト の初期ベ ク タ ー と 256 ビ ッ ト のキーを用意す
る か、 ソ フ ト ウ ェ アで ラ ン ダ ム キーを選択 し ます。 Vivado Design Suite でキーを生成す る 方法は、 真の ラ ン ダ ム プ ロ セ ス
で固有のキーを生成す る 方法 よ り も セキ ュ リ テ ィ レベルが低 く な り ます (XAPP1084 [参照 1] 参照)。 バ ッ ク ア ッ プ バ ッ テ
リ 付 き RAM に格納 し た AES キーを FPGA ロ ジ ッ ク で消去する な ど、 一部のセキ ュ リ テ ィ 機能を利用す る には、 デバ イ ス
を暗号化ビ ッ ト ス ト リ ームで コ ン フ ィ ギ ュ レーシ ョ ンす る 必要があ り ます。
本資料は表記のバージ ョ ンの英語版を翻訳 し た も ので、内容に相違が生 じ る場合には原文を優先 し ます。 資料に よ っ ては英語版の更新に対応 し ていない も のがあ り ます。 日本
語版は参考用 と し て ご使用の上、 最新情報につ き ま し ては、 必ず最新英語版を ご参照 く だ さ い。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
1
暗号化ビ ッ ト ス ト リ ームのイ ン プ リ メ ン テーシ ョ ンの概要
7 シ リ ーズ デバ イ ス は、オンチ ッ プのビ ッ ト ス ト リ ーム HMAC (keyed-Hash Message Authentication Code) も ハー ド ウ ェ アに
イ ン プ リ メ ン ト し て い る た め、 AES
暗号化 に 加 え、 多重 の セ キ ュ リ テ ィ を 実現 し て い ま す。
(http://www.nist.gov/itl/upload/FIPS-198-1_final.pdf にあ る FIPS PUB 198-1 「HMAC Federal Information Processing Standards」 を
参照)。 さ ら な る セ キ ュ リ テ ィ に よ っ て復号化ビ ッ ト ス ト リ ーム に厳密な認証が課 さ れ、 シ ン グル ビ ッ ト の改ざん も 許 さ
れない よ う 厳重に保護 さ れ ます。 AES と HMAC のキーが入手 さ れない限 り 、 ビ ッ ト ス ト リ ームの読み込み、 改変、 不正
入手、 複製が行われ る こ と はあ り ません。 AES は、 デザ イ ン を複製や リ バース エン ジニア リ ン グか ら 保護す る ための基本
的なセキ ュ リ テ ィ を提供 し ます。 一方 HMAC は、 FPGA の コ ン フ ィ ギ ュ レーシ ョ ン用に提供 さ れた ビ ッ ト ス ト リ ームが改
変 さ れてお ら ず、 その ま ま読み込んで問題ない こ と を保証 し ます。 シ ン グル ビ ッ ト の反転を含め、 ビ ッ ト ス ト リ ームに対
す る あ ら ゆ る 改ざん を検出で き ます。
HMAC アルゴ リ ズ ム で使用す る キーを、 ザ イ リ ン ク ス ツールで指定 し ます。 ま たは、 ツールで ラ ン ダ ム キーを自動生成
す る こ と も 可能です。HMAC キー と AES キーは別の も のです。ザ イ リ ン ク ス ツールは、キー と SHA (Secure Hash Algorithm)
を使用 し て 256 ビ ッ ト の MAC (Message Authentication Code) を生成 し ます。 MAC お よ び HMAC キーは AES 暗号化 さ れた
ビ ッ ト ス ト リ ームの一部 と し て送信 さ れ、 ビ ッ ト ス ト リ ームのデー タ が本物で改ざん さ れていない こ と を検証 し ます。 こ
の認証機能は、 あ ら ゆ る 種類の制御 ビ ッ ト と デー タ ビ ッ ト を含む、 ビ ッ ト ス ト リ ーム全体に適用 さ れ ま す。 7 シ リ ーズ
FPGA でセキ ュ リ テ ィ ソ リ ュ ーシ ョ ン を使用す る 場合は、 常に HMAC と AES の両方を用い る こ と にな り ます。
暗号化ビ ッ ト ス ト リ ームのイ ン プ リ メ ン テーシ ョ ンの概要
ザ イ リ ン ク ス の 7 シ リ ーズ FPGA に暗号化 さ れたデザ イ ン を イ ンプ リ メ ン ト する 場合の 6 つの基本手順を次に示 し ます。
1.
AES キーの格納場所を選択 : セキ ュ リ テ ィ オプシ ョ ンに応 じ て BBRAM ま たは eFUSE のいずれか を選択 し ます
(BBRAM と eFUSE の ト レー ド オ フ については XAPP1084 [参照 1] を参照)。
2.
指定 し た AES キーの格納場所に基づいて、 ボー ド デザ イ ンのハー ド ウ ェ ア要件を満た し ます。
3.
Vivado Design Suite ツールを使用 し て AES キーを生成す る か、 ま たは ソ フ ト ウ ェ アお よ び暗号化ビ ッ ト ス ト リ ームに
ユーザー独自の AES/HMAC キーを提供 (常に こ ち ら の方法が高いセキ ュ リ テ ィ レベルを提供) し ます。
4.
JTAG イ ン タ ーフ ェ イ ス を介 し て、 FPGA に AES キーをプ ロ グ ラ ム し ます。
5.
JTAG ま たはその他の コ ン フ ィ ギ ュ レーシ ョ ン モー ド (SPI、 BPI な ど) を使用 し て、 FPGA に暗号化 さ れた ビ ッ ト フ ァ
イ ルをプ ロ グ ラ ム し 、 DONE ピ ンがアサー ト さ れてい る こ と を確認 し ます。
6.
ハー ド ウ ェ ア検証を実行 し て正 し く 動作 し てい る こ と を確認 し ます。
ハー ド ウ ェ ア ボー ド 要件
暗号化デザ イ ン フ ロ ーを実行す る にあ た っ て、 い く つか基本的なハー ド ウ ェ ア要件があ り ます。
•
プ ロ グ ラ ム機能お よ びデバ ッ グ機能 : FPGA へ接続する JTAG コ ネ ク タ 。
•
BBRAM キー ス ト レージ : VCCBATT へのバ ッ テ リ ー (バ ッ テ リ ー電圧要件はデー タ シー ト を参照)
•
eFUSE キー ス ト レージ : eFUSE にプ ロ グ ラ ムす る 前に、BBRAM でテ ス ト で き る よ う に VCCBATT を VCCAUX に接続す
る こ と を推奨。
ソ フ ト ウ ェ ア要件
Vivado Design Suite 2014.3.1 ま たはそれ以降のバージ ョ ンが必要です。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
2
AES キー ス ト レージ
AES キー ス ト レージ
AES キーの格納場所には、 バ ッ テ リ バ ッ ク ア ッ プ RAM (BBRAM) と eFUSE の 2 つの選択肢があ り ます。 ス ト レージ オプ
シ ョ ン と し て BBRAM ま たは eFUSE のいずれか を選択す る と き には、 各オプシ ョ ンの長所/短所を よ く 理解 し た上でデザ
イ ン要件に最適なオプシ ョ ン を判断 し て く だ さ い。 それぞれの長所 と 短所の詳細は、 こ の後のセ ク シ ョ ン で説明 し てい ま
す。 こ れ ら の ス ト レージ オプシ ョ ンに関す る その他の情報は、 『7 シ リ ーズ FPGA コ ン フ ィ ギ ュ レーシ ョ ン ユーザー ガ イ
ド 』 (UG470) [参照 2] を参照 し て く だ さ い。
BBRAM
暗号化キーを FPGA のバ ッ ク ア ッ プ バ ッ テ リ 付 き RAM に格納 し た場合、 暗号化キーの メ モ リ セルは揮発性であ る ため、
継続的に電力を供給す る 必要があ り ます。 通常の動作中、 こ れ ら の メ モ リ セルには補助電圧入力 (VCCAUX) か ら 電源が供
給 さ れますが、 VCCAUX が切断 さ れた と き にキーを維持で き る よ う に、 独立 し た CCBATT 電源入力を推奨 し てい ます。 こ の
ため、 AES キーは、 バ ッ ク ア ッ プ バ ッ テ リ ーのあ る ボー ド で イ ン シ ス テ ム プ ロ グ ラ ムす る こ と を推奨 し ます。 そ う し な
い と 、 電源/バ ッ テ リ ーが切断 さ れ る と キーを失 う こ と にな り ます。 BBRAM を格納場所に選択 し た場合の長所お よ び短所
を表 1 に示 し ます。
表 1 : 格納場所 と し ての BBRAM の長所/短所
長所
短所
• 揮発性、 再プ ロ グ ラ ム可能
• 外部バ ッ テ リ ーが必要
• 受動的お よ び能動的にキーを消去可能 (つま り 、証拠を削除
でき る)
• 多 く のバ ッ テ リ ー ベン ダーは高温/長期利用におけ る
動作仕様を定義 し ていない
• 不正操作防止
eFUSE
eFUSE は、 コ ン フ ィ ギ ュ レーシ ョ ン設定に使用す る 不揮発性の ワ ン タ イ ム プ ロ グ ラ マブル技術です。 ヒ ュ ーズ リ ン ク は、
一定期間に大量の電流を流す こ と でプ ロ グ ラ ム (バーン、 ブ ロ ー と も 呼ぶ) し ます。 ユーザー プ ロ グ ラ ム可能な eFUSE の
プ ロ グ ラ ム にはザ イ リ ン ク ス コ ン フ ィ ギ ュ レーシ ョ ン ツールが使用で き ます。 繰 り 返 し にな り ますが、 eFUSE ビ ッ ト は
ワ ン タ イ ム プ ロ グ ラ マブル (OTP) です。 一度プ ロ グ ラ ムする と 再プ ロ グ ラ ムはで き ません。 た と えばレ ジ ス タ へのア ク セ
ス を無効に し た場合、 後か ら 有効に変更で き ません。 FPGA ロ ジ ッ ク か ら ア ク セ ス で き る のは FUSE_USER レ ジ ス タ のみ
で、 その他すべての eFUSE ビ ッ ト は、 FPGA ロ ジ ッ ク か ら ア ク セ ス で き ません。 eFUSE を格納場所に選択 し た場合の長所
お よ び短所を表 2 に示 し ます。
表 2 : 格納場所 と し ての eFUSE の長所/短所
長所
短所
• 外部バ ッ テ リ ーが不要
• 恒久的 : キーの消去が不可
• CFG_AES_Only セキ ュ リ テ ィ eFUSE ビ ッ ト がセ ッ ト さ
れてい る 場合は、eFUSE キーで暗号化 さ れてい る ビ ッ ト
ス ト リ ームのみ FPGA へ ロ ー ド 可能
• BBRAM
が低い
ソ リ ュ ーシ ョ ン よ り も セキ ュ リ テ ィ レベル
eFUSE レ ジ ス タ
7 シ リ ーズ FPGA には、 全部で 4 つの eFUSE レ ジ ス タ (FUSE_KEY、 FUSE_CNTL、 FUSE_USER、 FUSE_DNA) があ り ま
す。 こ の ア プ リ ケーシ ョ ン ノ ー ト では、 FUSE_KEY、 FUSE_CNTL、 お よ び FUSE_USER のみについて言及 し てい ま す。
表 3 に eFUSE レ ジ ス タ の説明を示 し ます。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
3
AES キー ス ト レージ
表 3 : eFUSE レ ジ ス タ の説明
レ ジス タ 名
FUSE_KEY
サイ ズ (ビ ッ ト )
256
内容
説明
ビ ッ ト ス ト リ ー ム 暗 号 化 AES ビ ッ ト ス ト リ ーム の復号化で使用す る キーを格
納 し ま す。 バ ッ ク ア ッ プ バ ッ テ リ 付 き の SRAM に
キー
[0:255]
キーを格納す る 代わ り に、eFUSE にキーを格納 し て使
(ビ ッ ト 255 が最初にシ フ ト ) 用で き ます。
7 シ リ ーズ FPGA の復号化エン ジ ンは、こ の AES キー
を使用 し て暗号化ビ ッ ト ス ト リ ーム を読み込みます。
AES キーは、FUSE_CNTL レ ジ ス タ の読み出 し /書 き 込
みア ク セ ス ビ ッ ト の設定に基づき 、 JTAG ポー ト を介
し て読み出 し ま たはプ ロ グ ラ ムが可能です。
FUSE_CNTL
14
制御ビ ッ ト
CNTL [13:0]
(ビ ッ ト 0 が最初にシ フ ト )
キーの使用や eFUSE レ ジ ス タ への読み出 し /書 き 込み
ア ク セ ス を制御 し ます。 こ の レ ジ ス タ は、 JTAG ポー
ト を介 し て読み出 し ま たはプ ロ グ ラ ムが可能です。
FUSE_USER
32
ユーザー定義 [31:0]
(ビ ッ ト 0 が最初にシ フ ト )
32 ビ ッ ト のユーザー定義 コ ー ド を格納 し ま す。 こ の
レ ジ ス タ は、 EFUSE_USR プ リ ミ テ ィ ブ を 使用 し て
FPGA ロ ジ ッ ク か ら 読み出 し 可能です。 EFUSE_USR
プ リ ミ テ ィ ブの詳細は、 『7 シ リ ーズ ラ イ ブ ラ リ ガ イ
ド 』 を参照 し て く だ さ い。
こ の コ ー ド は、FUSE_CNTL レ ジ ス タ の読み出 し /書 き
込みア ク セ ス ビ ッ ト の設定に基づき 、 JTAG ポー ト を
介 し て読み出 し ま たはプ ロ グ ラ ムが可能です。
eFUSE 制御レ ジ ス タ (FUSE_CNTL) の説明
こ の レ ジ ス タ には、 ユーザー プ ロ グ ラ マブル ビ ッ ト が含まれてい ます。 表 4 で説明す る こ れ ら のビ ッ ト を使用 し て、 AES
キーの使用法やその他の eFUSE レ ジ ス タ の読み出 し /書 き 込み保護を設定 し ます。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
4
AES キー ス ト レージ
表 4 : eFUSE 制御レ ジ ス タ ビ ッ ト の説明
ビッ ト イ ンデ ッ ク ス
番号
FUSE_CNTL ビッ ト名
0
CFG_AES_Only
eFUSE 制御ビ ッ ト の説明
推奨設定
• AES 復号化のみを使用 し て コ ン フ ィ ギ ュ レーシ ョ ン し ま
す。
なし
(0 を保持 し 、 顧客の
セキ ュ リ テ ィ 要件を
未決定に し てお く こ
と を推奨)
• 1 にプ ロ グ ラ ム さ れてい る 場合、 eFUSE に格納 さ れた
AES キーの使用を強制 し ます。
• プ ロ グ ラ ム さ れていない (0) 場合、 ビ ッ ト ス ト リ ームの
セ キ ュ リ テ ィ オプシ ョ ン で AES 復号化の使用す る か否
かが選択 さ れます。
注意 : こ の ビ ッ ト が 1 にプ ロ グ ラ ム さ れてい る 場合、 AES
キーが確認 さ れない限 り デバ イ ス は使用で き ま せん。 こ の
ビ ッ ト が プ ロ グ ラ ム さ れ て い る 場合 は、 RMA (Return
Material Authorization) に よ る 返品を受け付けてい ません。ま
た Vivado に よ る SPI/BPI フ ラ ッ シ ュ の間接プ ロ グ ラ ミ ン グ
フ ロ ー も 使用で き ません。
1
AES_Exclusive
• 1 にプ ロ グ ラ ム さ れてい る 場合、 外部 コ ン フ ィ ギ ュ レー
シ ョ ン イ ン タ ー フ ェ イ ス か ら のパーシ ャ ル リ コ ン フ ィ
ギ ュ レーシ ョ ンが無効にな り ます。
なし
(0 を保持)
• プ ロ グ ラ ム さ れていない (0) 場合、 外部 イ ン タ ーフ ェ イ
ス か ら のパーシ ャ ル コ ン フ ィ ギ ュ レ ーシ ョ ン が有効に
な り ますが、 キーを使用 し てパーシ ャ ル ビ ッ ト ス ト リ ー
ム を暗号化する 必要があ り ます。
注意 : こ の ビ ッ ト が 1 に プ ロ グ ラ ム さ れ て い る と 、 RMA
(Return Material Authorization) に よ る 返品は、 デバ イ ス 解析
お よ びデバ ッ グの面で制限があ り ます。 こ の ビ ッ ト を プ ロ
グ ラ ムす る 代わ り に、 ビ ッ ト ス ト リ ームのセキ ュ リ テ ィ レ
ベルを Level2 に設定す る こ と で も 外部 イ ン タ ーフ ェ イ ス か
ら のパーシ ャ ル コ ン フ ィ ギ ュ レ ーシ ョ ン を 無効にで き ま
す。
2
W_EN_B_Key_
User
• キーお よ びユーザー定義の eFUSE
ネーブルです (ア ク テ ィ ブ Low)。
値への書 き 込み イ
あり
(1 にプ ロ グ ラ ム)
• 1 にプ ロ グ ラ ム さ れてい る 場合、 AES キーお よ びユー
ザー定義値のビ ッ ト のプ ロ グ ラ ムが無効にな り ます。
推奨 : キーを プ ロ グ ラ ム し た後に こ の ビ ッ ト プ ロ グ ラ ムす
る こ と で、eFUSE AES キー値への意図 し ない変更/破損を防
止 し ます。
3
R_EN_B_Key
• キーの読み出 し イ ネーブルです (ア ク テ ィ ブ Low)。
• 1 にプ ロ グ ラ ム さ れてい る 場合、AES キーの読み出 し と 、
AES キーお よ びユーザー定義値のビ ッ ト のプ ロ グ ラ ムが
無効にな り ます。
あり
(1 にプ ロ グ ラ ム)
注意 : eFUSE キーは JTAG イ ン タ ーフ ェ イ ス を介 し て読み
出す こ と がで き る ため、 キーのプ ロ グ ラ ム完了後は、 こ の
ビ ッ ト を未プ ロ グ ラ ム (0) の ま ま に し ないで く だ さ い。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
5
暗号化キー と 暗号化ビ ッ ト ス ト リ ームの生成
表 4 : eFUSE 制御レ ジ ス タ ビ ッ ト の説明 (続き)
ビッ ト イ ンデ ッ ク ス
番号
4
FUSE_CNTL ビッ ト名
R_EN_B_User
eFUSE 制御ビ ッ ト の説明
推奨設定
• ユーザー定義の eFUSE 値への読み出 し イ ネーブルです
(ア ク テ ィ ブ Low)。
なし
(0 を保持)
• 1 にプ ロ グ ラ ム さ れてい る 場合、 JTAG を介すユーザー
定義値の読み出 し が無効にな り ま す。 ま た、 その影響を
受け て、 AES キーお よ びユーザー定義値の ビ ッ ト のプ
ロ グ ラ ム も 無効にな り ま す。
注 記 : ユ ー ザ ー定 義 値 は、 EFUSE_USR プ リ ミ テ ィ ブ を 介 し て
FPGA デザ イ ンか ら 常時ア ク セ ス可能です。
5
W_EN_B_Cntl
• FUSE_CNTL eFUSE ビ ッ ト の書 き 込み イ ネーブルです
(ア ク テ ィ ブ Low)。
あり
(1 にプ ロ グ ラ ム)
• 1 にプ ロ グ ラ ム さ れてい る 場合、FUSE_CNTL ビ ッ ト のプ
ロ グ ラ ムが無効にな り ます。
推奨 : FUSE_CNTL レ ジ ス タ の ビ ッ ト を プ ロ グ ラ ム し た後
に、 こ の ビ ッ ト を 1 に プ ロ グ ラ ム す る こ と に よ っ て、
FUSE_CNTL eFUSE ビ ッ ト への意図 し ない変更を防 ぐ こ と
がで き ます。
FUSE_CNTL[0] をプ ロ グ ラ ム し ない場合 :
•
暗号化は、 ビ ッ ト ス ト リ ーム オプシ ョ ンで無効/有効にで き る
•
eFUSE に格納 さ れてい る AES キーを使用す る か、 バ ッ ク ア ッ プ バ ッ テ リ 付き の RAM に格納 さ れてい る AES キーを
使用す る か を ビ ッ ト ス ト リ ーム オプシ ョ ンで選択で き る
注意 : FUSE_CNTL[0] を プ ロ グ ラ ムす る と 、 外部コ ン フ ィ ギ ュ レーシ ョ ン ポー ト 経由で FPGA を コ ン フ ィ ギ ュ レーシ ョ ン
で き る のは eFUSE キーで暗号化 し た ビ ッ ト ス ト リ ームのみ と な り ます。 こ れに よ り 、 ザ イ リ ン ク ス のテ ス ト ビ ッ ト ス ト
リ ームや構築済みビ ッ ト ス ト リ ーム を使用 し たデバ イ ス コ ン フ ィ ギ ュ レーシ ョ ンがで き な く な り ます。 こ のため、 ザ イ リ
ン ク ス は FUSE_CNTL[0] ビ ッ ト がプ ロ グ ラ ム さ れてい る デバ イ ス に対する RMA 要求や Vivado に よ る SPI/BPI フ ラ ッ シ ュ
の間接プ ロ グ ラ ム をサポー ト し てい ません。
FUSE_CNTL[1] がプ ロ グ ラ ム さ れ る と 、 外部 コ ン フ ィ ギ ュ レ ーシ ョ ン ポー ト は、 初期 コ ン フ ィ ギ ュ レ ーシ ョ ン後に コ ン
フ ィ ギ ュ レーシ ョ ン メ モ リ へのア ク セ ス がブ ロ ッ ク さ れます。 デバ イ ス を再コ ン フ ィ ギ ュ レーシ ョ ンする には、 電源の再
投入、 JPROGRAM ま たは IPROG コ マ ン ド の発行、 PROGRAM_B ピ ンのパルス のいずれかが必要にな り ます。
暗号化キー と 暗号化ビ ッ ト ス ト リ ームの生成
Vivado ツールで提供 さ れてい る ビ ッ ト ス ト リ ーム ジ ェ ネ レー タ ーの write_bitstream は、 暗号化 し た ビ ッ ト ス ト リ ーム と 暗
号化 し ていない ビ ッ ト ス ト リ ーム の ど ち ら も 作成で き ます。 ビ ッ ト ス ト リ ーム を AES で暗号化す る には、 write_bitstream
のプ ロ パテ ィ で ビ ッ ト ス ト リ ーム暗号化を有効にす る オプシ ョ ン を選択 し ます。 ユーザーは、 256 ビ ッ ト のキーを ビ ッ ト
ス ト リ ーム ジ ェ ネ レー タ ーに入力で き ますが、 Vivado ツールに ラ ン ダ ム キーを生成 さ せ る こ と も 可能です。 こ れに よ り 、
ビ ッ ト ス ト リ ーム ジ ェ ネ レー タ ーで暗号化ビ ッ ト ス ト リ ーム フ ァ イ ル (.BIT) お よ び暗号化キーフ ァ イ ル (.NKY) が生成
さ れます。 表 5 に、 XDC フ ァ イ ルで定義可能な write_bitstream のプ ロ パテ ィ お よ びそれ ら の説明を示 し ます。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
6
暗号化キー と 暗号化ビ ッ ト ス ト リ ームの生成
表 5 : Write_bitstream 暗号化プ ロパテ ィ
Write_bitstream プ ロパテ ィ
BITSTREAM.ENCRYPTION.ENCRYPT
BITSTREAM.ENCRYPTION.
ENCRYPTKEYSELECT
デ フ ォル ト
値
設定可能な値
No
No、 Yes
bbram
BBRAM、 eFUSE
説明
ビ ッ ト ス ト リ ーム を暗号化 し ます。
使用 さ れてい る AES 暗号化キーの格納場所 (バ ッ ク ア ッ
プ バ ッ テ リ 付き RAM (BBRAM) ま たは eFUSE レ ジ ス タ
) を示 し ます。
注記 : こ のプ ロ パテ ィ は、 Encrypt オプシ ョ ンが Yes に設定 さ れ
てい る 場合のみ有効です。
BITSTREAM.ENCRYPTION.HKEY
Pick
Pick、 <16 進文字列
>
HKEY は、 ビ ッ ト ス ト リ ーム暗号化の HMAC 認証キー
を セ ッ ト し ます。 7 シ リ ーズ デバ イ ス には、 ハー ド ウ ェ
ア に オ ン チ ッ プ の ビ ッ ト ス ト リ ー ム キ ー付 き HMAC
(Hash Message Authentication Code) ア ル ゴ リ ズ ム が イ ン
プ リ メ ン ト さ れてお り 、AES 復号化のみの場合 よ り も セ
キ ュ リ テ ィ が強化 さ れてい ます。 こ れ ら のデバ イ ス に対
す る ビ ッ ト ス ト リ ームの読み込み、 変更、 妨害、 複製に
AES キー と HMAC キーの両方が必要です。 pick に設定
す る と 、ビ ッ ト ス ト リ ーム ジ ェ ネ レー タ ーが ラ ン ダ ム な
値を選択 し ます。 こ のオプシ ョ ン を使用す る には、 最初
に ENCRYPT オプシ ョ ン を Yes に設定す る 必要があ り ま
す。
BITSTREAM.ENCRYPTION.KEY0
Pick
Pick、 <16 進文字列
>
Key0 は、 ビ ッ ト ス ト リ ー ム 暗号化の AES 認証 キ ー を
セ ッ ト し ま す。 pick に設定す る と 、 ビ ッ ト ス ト リ ー ム
ジ ェ ネ レー タ ーが ラ ン ダ ム な値を選択 し ます。 こ のオプ
シ ョ ン を使用す る には、 最初に ENCRYPT オプシ ョ ン を
Yes に設定する 必要があ り ます。
BITSTREAM.ENCRYPTION.KEYFILE
None
<文字列>
入力暗号化フ ァ イ ル名 (フ ァ イ ル拡張子 .nky) を指定 し
ます。こ のオプシ ョ ン を使用す る には、最初に ENCRYPT
オプシ ョ ン を Yes に設定す る 必要があ り ます。
BITSTREAM.ENCRYPTION.STARTCBC
Pick
Pick、 <32 ビ ッ ト の
16 進文字列>
暗号文ブ ロ ッ ク 連鎖 (CBC) の開始値を設定 し ます。 pick
に設定す る と 、 ラ ン ダ ム な値が選択 さ れます。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
7
暗号化キー と 暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
BBAM キー ス ト レージ と ユーザー指定のカ ス タ ム AES キーを使用 し た場合の XDC フ ァ イ ルの例を示 し ます。こ れ ら の暗
号化プ ロ パテ ィ は、 [Edit Device Properties] の GUI で も 操作可能です。
24
25
26
27
28
29
#Encryption Settings
set_property BITSTREAM.ENCRYPTION.ENCRYPT YES [current_design]
set_property BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT BBRAM [current_design]
#set_property BITSTREAM.ENCRYPTION.ENCRYPTKEYSELECT eFUSE [current_design]
set_property BITSTREAM.ENCRYPTION.KEY0 256’h12345678ABCDDCBA1234578ABCDDCBA1234578
ABCDDCBA1234578ABCDDCBA [current_design]
30
NKY フ ァ イ ルの生成は、ビ ッ ト ス ト リ ーム生成 と 同時に実行 さ れます。NKY フ ァ イ ルは、ビ ッ ト フ ァ イ ル と 同 じ top_level
名を使用 し 、 同 じ イ ンプ リ メ ン テーシ ョ ン デ ィ レ ク ト リ に配置 さ れます。
NKY フ ァ イ ルの フ ォーマ ッ ト は次の と お り です。
KEY 0 <16 進文字列> (256 ビ ッ ト AES キー )
例 : (top.nky)
Device xc7k325t;
Key 0 12345678ABCDDCBA12345678ABCDDCBA12345678ABCDDCBA12345678ABCDDCBA;
Key StartCBC 7115e9aa80085ea3ed65d26d3a8ab608;
Key HMAC d293d51c6058430262b05521f8f67279c9abce27d5fcafcf839bbe1af46713cc;
暗号化キー と 暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
暗号化キーは、 JTAG イ ン タ ーフ ェ イ ス を介 し てのみデバ イ ス に読み込む こ と がで き ます。 Vivado デバ イ ス プ ロ グ ラ マに
NKY フ ァ イ ルを入力 し 、 サポー ト さ れてい る ザ イ リ ン ク ス のプ ロ グ ラ ミ ン グ ケーブルを使用 し て JTAG 経由でデバ イ ス
に暗号化キーを プ ロ グ ラ ム で き ます。 暗号化キーを プ ロ グ ラ ムす る 際、 デバ イ ス は特別な キー ア ク セ ス モー ド にな り ま
す。 こ のモー ド では、 暗号化キー専用 RAM と コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ を含むすべての FPGA メ モ リ が ク リ ア さ れ
ます。 暗号化キーがプ ロ グ ラ ム さ れ、 キー ア ク セ ス モー ド が終了す る と 、 いかな る 方法で も デバ イ ス か ら 暗号化キーを読
み出す こ と はで き ず、 キーを再プ ロ グ ラ ムする にはデバ イ ス全体を初期化する 必要があ り ます。 通常、 こ のキー ア ク セ ス
モー ド をユーザーが意識す る こ と はあ り ません。 暗号化キーは、 VCCAUX ま たは VCCBATT か ら 電源が供給 さ れ る バ ッ テ リ
バ ッ ク ア ッ プ付 き RAM (BBRAM) ま たは eFUSE ビ ッ ト のいずれかにプ ロ グ ラ ム で き ます。
BBRAM キーのプ ロ グ ラ ムには、 Vivado Design Suite と JTAG ケーブルを使用 し ます。
注記 : JTAG を介 し て BBRAM へ読み出 し /書 き 込み動作を実行 し よ う と す る と 、 BBRAM の内容が消去 さ れ、 ア ク セ
ス が有効にな る (キー ア ク セ ス モー ド へ遷移す る ) 前に FPGA の コ ン フ ィ ギ ュ レーシ ョ ン全体が消去 さ れます。
eFUSE キーのプ ロ グ ラ ムには、 Vivado Design Suite と JTAG ケーブルを使用 し ます。 デバ イ ス プ ロ グ ラ ミ ン グ サービ ス の
詳細は、 ザ イ リ ン ク ス販売代理店へお問い合わせ く だ さ い。
注記 : eFUSE ソ リ ュ ーシ ョ ンの場合、 AES キーの イ ン シ ス テ ム プ ロ グ ラ ミ ン グ時に次の事項に も 注意が必要です。
°
FPGA 内の電源 ノ イ ズ を最小限に抑え る ため、 コ ン フ ィ ギ ュ レ ーシ ョ ン済みデザ イ ン の FPGA は避け る 、 あ る
いは ク リ ア し て く だ さ い。
°
シ ス テ ムの電源 ノ イ ズ を最小限に抑え る ため、可能な場合にはボー ド レベルのシ ス テ ム ク ロ ッ ク を停止 し て く だ
さ い。
Vivado HW_Manager を使用 し て有効なハー ド ウ ェ ア タ ーゲ ッ ト へ接続 し た後、 7 シ リ ーズ FPGA を右 ク リ ッ ク し 、 以前に
選択 し た ス ト レ ージ オプ シ ョ ン に基づい て、 BBRAM を 使用す る 場合は [Program BBR Key]、 eFUSE を 使用す る 場合は
[Program eFUSE Registers] を選択 し ます (図 1 参照)。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
8
暗号化キー と 暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
X-Ref Target - Figure 1
図 1 : Vivado HW Manager でキーのプ ログ ラ ムを選択
BBRAM キー
[Program BBR Key] を選択す る と 、プ ロ ジ ェ ク ト デ ィ レ ク ト リ で最近生成 さ れた NKY フ ァ イ ルを参照で き ます。NKY フ ァ
イ ル を追加す る と 、 図 2 に示す よ う に [AES key] フ ィ ール ド に キーの値が表示 さ れ ま す。 こ の値 を参照 し て キーの値を
チ ェ ッ ク し 、 デバ イ ス にプ ロ グ ラ ム し よ う と し てい る 正 し いキーの値であ る こ と を確認で き ます。
X-Ref Target - Figure 2
図 2 : BBRAM プ ロ グ ラ ミ ング GUI
JTAG を介 し て FPGA に NKY フ ァ イ ルがすべてプ ロ グ ラ ム さ れ る と 、 TCL コ ン ソ ールに次の よ う に表示 さ れます。
set_property ENCRYPTION.FILE
{C:/config/series-7/Encryption/ecryption_test_325T.runs/impl_1/top.nky} [get_property
PROGRAM.HW_BITSTREAM [lindex [get_hw_devices] 0]]
program_hw_devices -key {bbr} [lindex [get_hw_devices] 0]
INFO:[Labtools 27-3088] BBR Key
programmed:12345678ABCDDCBA12345678ABCDDCBA12345678ABCDDCBA12345678ABCDDCBA
INFO:[Labtools 27-3087] Key programming succeeded
INFO:[Labtools 27-3087] Key programming succeeded
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
9
暗号化キー と 暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
eFUSE レ ジ ス タ のプ ログ ラ ム
[Program eFUSE Registers] を選択す る と 、 ウ ィ ザー ド が表示 さ れて、 プ ロ グ ラ ムす る NKY フ ァ イ ルお よ び eFUSE レ ジ ス
タ の選択プ ロ セ ス が指示 さ れます。 図 3 に、 eFUSE プ ロ グ ラ ミ ン グの GUI (AES Key Setup) を示 し ます。
X-Ref Target - Figure 3
図 3 : eFUSE プ ログ ラ ミ ングの GUI ‐ [AES Key Setup]
重要 : 7 シ リ ーズ FPGA の場合、 AES キー と FUSE_USER レ ジ ス タ の下位 8 ビ ッ ト [7:0] が同時にプ ロ グ ラ ム さ れます。 し
たがっ て、 AES キーをプ ロ グ ラ ム し て、 FUSE_USER [7:0] ビ ッ ト に特定パ タ ーン を指定 し ない場合、 こ れ ら のビ ッ ト を後
にプ ロ グ ラ ムす る こ と はで き ません。 同様に、 FUSE_USER の下位ビ ッ ト を プ ロ グ ラ ム し て、 AES キーを プ ロ グ ラ ム し な
い場合 も 後にキーをプ ロ グ ラ ムす る こ と はで き ません。
推 奨 : AES キ ー を プ ロ グ ラ ム す る 段 階 で、 FUSE_USER レ ジ ス タ の 32 ビ ッ ト を すべ て プ ロ グ ラ ム し て く だ さ い。
FUSE_CNTL レ ジ ス タ ビ ッ ト の詳細は 5 ページの表 4 を参照 し て く だ さ い。 図 4 に eFUSE プ ロ グ ラ ミ ン グの GUI (Control
Register Setup) を示 し ます。
X-Ref Target - Figure 4
図 4 : eFUSE プ ログ ラ ミ ングの GUI ‐ [Control Register Setup]
eFUSE レ ジ ス タ をプ ロ グ ラ ムす る 場合の Tcl コ マ ン ド を次に示 し ます。
•
AES キーお よ び FUSE_USER の全 32 ビ ッ ト
program_hw_devices -key {efuse} -user_efuse {xxxxxxxx} [lindex [get_hw_devices] 0]
•
FUSE_CNTL ビ ッ ト
program_hw_devices -control_efuse {xxxxxx} [lindex [get_hw_devices] 0]
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
10
暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
eFUSE レ ジ ス タ のプ ロ グ ラ ミ ン グ が完了す る と 、 [Hardware Device Properties] の [EFUSE] レ ジ ス タ の ド ロ ッ プ ダ ウ ン メ
ニ ュ ーで FUSE_CNTL お よ び FUSE_USER レ ジ ス タ の値を確認で き ます (図 5 参照)。 ま た、 Tcl コ ン ソ ールに次の Tcl コ マ
ン ド を入力 し て確認す る こ と も 可能です。
•
FUSE_CNTL レ ジ ス タ
report_property [lindex [get_hw_device] 0] REGISTER.EFUSE.FUSE_CNTL
•
FUSE_USER レ ジ ス タ
report_property [lindex [get_hw_device] 0] REGISTER.EFUSE.FUSE_USER
X-Ref Target - Figure 5
図 5 : [Hardware Device Properties] の [EFUSE] レ ジ ス タ の ド ロ ッ プダウン メ ニ ュ ー
暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
デバ イ ス に適切な暗号化キーをプ ロ グ ラ ムす る と 、暗号化ビ ッ ト ス ト リ ーム を使用 し たデバ イ ス コ ン フ ィ ギ ュ レーシ ョ ン
が可能に な り ま す。 コ ン フ ィ ギ ュ レ ーシ ョ ン 後は、 ビ ッ ト ス ト リ ーム のセ キ ュ リ テ ィ 設定にかかわ ら ず、 JTAG ま たは
SelectMAP リ ー ド バ ッ ク に よ っ て コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ を読み出す こ と はで き ません。 デバ イ ス に暗号化キーが
読み込まれた状態の と き に、 暗号化 し ていない ビ ッ ト ス ト リ ームでデバ イ ス を コ ン フ ィ ギ ュ レーシ ョ ン (CFG_AES_ONLY
ビ ッ ト がプ ロ グ ラ ム さ れていない場合) す る には、 まず POR ま たは PROGRAM_B を アサー ト し て コ ン フ ィ ギ ュ レーシ ョ
ン メ モ リ を ク リ アす る 必要があ り ます。 こ の場合、 暗号化キーは無視 さ れます。 ま た、 暗号化 し ていないビ ッ ト ス ト リ ー
ム で コ ン フ ィ ギ ュ レーシ ョ ン を行っ た後は、 リ ー ド バ ッ ク が可能です (ビ ッ ト ス ト リ ーム のセ キ ュ リ テ ィ 設定で許可 さ れ
てい る 場合のみ)。 こ の場合で も 、 デバ イ ス か ら 暗号化キーを読み出す こ と はで き ないため、 「 ト ロ イ の木馬」 ビ ッ ト ス ト
リ ーム を使用 し て 7 シ リ ーズ FPGA の暗号化シ ス テ ム を無効にする こ と はで き ません。
暗号化を使用 し て も 、 コ ン フ ィ ギ ュ レーシ ョ ンの方法にはほ と ん ど影響はあ り ません。 7 シ リ ーズ FPGA では、 圧縮 さ れ
た ビ ッ ト ス ト リ ーム と 暗号化 さ れた ビ ッ ト ス ト リ ームの両方が作成可能です。 暗号化ビ ッ ト ス ト リ ームは、 JTAG、 シ リ ア
ル、 SPI、 BPI、 SelectMAP、 ICAPE2 の ど の コ ン フ ィ ギ ュ レーシ ョ ン イ ン タ ーフ ェ イ ス で も 使用で き ま す。 ただ し 、 コ ン
フ ィ ギ ュ レーシ ョ ン方法に よ っ ては暗号化ビ ッ ト ス ト リ ームに若干の制約が生 じ た り 、 タ イ ミ ン グが変わ る こ と があ り ま
す。 ス レーブ SelectMAP と ICAPE2 イ ン タ ーフ ェ イ ス では、 x8 バ ス で し か暗号化ビ ッ ト ス ト リ ーム を使用で き ません (x16
お よ び x32 ス レーブ SelectMAP は使用で き ない)。マ ス タ ー SelectMAP と マ ス タ ー BPI イ ン タ ーフ ェ イ ス では x8 お よ び x16
デー タ バ ス の ど ち ら も 暗号化 ビ ッ ト ス ト リ ー ム を サ ポ ー ト し ま すが、 x16バ ス 幅の場合、 マ ス タ ー CCLK 周波数 が
ConfigRate で設定 し た値の半分に低下す る か、 ま たは ExtMasterCCLK_en が使用 さ れてい る と き は EMCCLK レー ト の半分
に低下 し ます。 ConfigRate 周波数ま たは外部 EMCCLK 周波数に基づいて CCLK がア ッ プデー ト さ れ る 前に、 DEC (AES 暗
号化機能が有効) ビ ッ ト が読み出 さ れ る と 、 ビ ッ ト ス ト リ ームの冒頭は よ り 低速な CCLK で開始 し ます。
暗号化ビ ッ ト ス ト リ ーム を使用 し た場合、外部 コ ン フ ィ ギ ュ レーシ ョ ン イ ン タ ーフ ェ イ ス か ら パーシ ャ ル リ コ ン フ ィ ギ ュ
レーシ ョ ンはで き ないため、 デバ イ ス全体を コ ン フ ィ ギ ュ レーシ ョ ンす る 必要があ り ます。 コ ン フ ィ ギ ュ レーシ ョ ン後に
リ コ ン フ ィ ギ ュ レーシ ョ ンす る には、 PROGRAM_B ピ ン を ト グルす る 、 電源を再投入す る 、 あ る いは JPROGRAM ま たは
IPROG 命令を与え る 必要があ り ます。 暗号化をオンにする と 、 7 シ リ ーズ FPGA ではフ ォールバ ッ ク リ コ ン フ ィ ギ ュ レー
シ ョ ンお よ び IPROG リ コ ン フ ィ ギ ュ レーシ ョ ンが有効 と な り ます。 ま た、 ICAPE2 プ リ ミ テ ィ ブ を使用 し た リ ー ド バ ッ ク
が可能です。 VCCBATT ま たは VCCAUX が維持 さ れてい る 限 り 、 こ れ ら の イ ベン ト に よ っ て キーが リ セ ッ ト さ れ る こ と はあ
り ま せん。 暗号化ビ ッ ト ス ト リ ーム内のキー と デバ イ ス に格納 さ れた キーが一致 し ない と コ ン フ ィ ギ ュ レ ーシ ョ ン がエ
ラ ー と な り 、 INIT_B ピ ン が Low にな っ て (フ ォ ールバ ッ ク が有効の場合は High に戻 る )、 DONE ピ ンは Low の ま ま にな
り ます。 エ ラ ーが発生す る と 、 Config_Status レ ジ ス タ の HMAC_ERROR ビ ッ ト で も わか り ます。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
11
暗号化 さ れた ビ ッ ト ス ト リ ームの読み込み
暗号化 さ れたデザ イ ン が問題な く 読み込ま れた こ と をハー ド ウ ェ アで確認す る には、 DONE ピ ン が High にアサー ト さ れ
てい る か を確認す る か、 デザ イ ンが機能 し てい る こ と を視覚的に示すその他の方法 (LED、 UART な ど) を使用 し て検証 し
ます。 暗号化 さ れたデザ イ ンが問題な く 読み込まれた こ と を ソ フ ト ウ ェ アで確認す る には、 [Hardware Device Properties] に
リ ス ト さ れてい る
Config_Status
レ ジ ス タ を 確認す る 方法 が あ り ま す。 主 な イ ン ジ ケ ー タ ー は、 ビ ッ ト
1
(DECRYPTOR_ENABLE)、 4 (EOS)、 お よ び 14 (DONE_PIN) です (図 6 参照)。
X-Ref Target - Figure 6
図 6 : デバイ ス ス テー タ ス レ ジ ス タ XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
12
ハー ド ウ ェ ア検証
ハー ド ウ ェ ア検証
ほ と ん ど の場合、 AES キーが BBRAM ま たは eFUSE ビ ッ ト のいずれかに正 し く プ ロ グ ラ ム さ れてい る か を検証す る こ と
が望まれます。 検証手順のチ ェ ッ ク リ ス ト を次に示 し ます。
1.
Vivado Design Suite 2014.3.1 ま たはそれ以降のバージ ョ ン を使用 し て ビ ッ ト ス ト リ ーム を生成 : 暗号化 さ れていない
ビ ッ ト ス ト リ ーム、 ユーザー指定のキーで暗号化 さ れた ビ ッ ト ス ト リ ーム、 すべて 1 のキーで暗号化 さ れた ビ ッ ト ス
ト リ ーム、 すべて 0 のキーで暗号化 さ れた ビ ッ ト ス ト リ ーム
2.
生成 さ れた ビ ッ ト ス ト リ ーム を確認 し て、 実行 し た暗号化を検証 : 暗号化 さ れた ビ ッ ト フ ァ イ ル と 暗号化 さ れていな
い ビ ッ ト フ ァ イ ルの例は、 14 ページの図 7 を参照 し て く だ さ い。
3.
eFUSE へのプ ロ グ ラ ミ ン グが完了 し ていない FPGA
4.
5.
a.
ハー ド ウ ェ ア をチ ェ ッ ク : Vivado デバ イ ス プ ロ グ ラ マ を使用 し て FPGA へ接続 し 、 JTAG を介 し て暗号化 さ れて
いない BIT フ ァ イ ルを ダ ウ ン ロ ー ド し ます。 デザ イ ンは予想どお り 機能 し てい る か確認 し ます。
b.
FPGA の復号化を テ ス ト : すべて 0 のキーで暗号化 さ れた BIT フ ァ イ ルを ダ ウ ン ロ ー ド し ます (eFUSE の場合)。
c.
暗号化 さ れた ビ ッ ト ス ト リ ームのセキ ュ リ テ ィ を テ ス ト : ユーザー指定のキーで暗号化 さ れた BIT フ ァ イ ルを ダ
ウ ン ロ ー ド し ます。 コ ン フ ィ ギ ュ レーシ ョ ン エ ラ ーが予想 さ れます。
eFUSE キーお よ びオプシ ョ ン をプ ロ グ ラ ム
a.
電源を再投入 し て、 上記テ ス ト のエ ラ ーがすべて ク リ ア さ れ、 FPGA が コ ン フ ィ ギ ュ レーシ ョ ン さ れてない状態
にす る
b.
JTAG を介 し て AES キーを プ ロ グ ラ ム : eFUSE を使用す る 場合、 まず最初に BBRAM を使用 し て手順 3b お よ び
3c を実行 し 、 有効性をチ ェ ッ ク し ます。 その後、 eFUSE を プ ロ グ ラ ム し て最終テ ス ト を行い ます。
c.
キーが読み込み不可であ る こ と を確認 : Vivado ツールを使用 し て、[Hardware Device] → [Property] → [Registers] →
[eFUSE] → [FUSE_CNTL] で ビ ッ ト 3 が 1 にプ ロ グ ラ ム さ れてい る こ と を確認 し ます。 ま た、 プ ロ グ ラ ム に選択
し た よ う に、 FUSE_CNTL のその他のビ ッ ト がプ ロ グ ラ ム さ れてい る こ と を確認 し ます。
プ ロ グ ラ ム さ れた eFUSE キーお よ びオプシ ョ ン を備え た FPGA
a.
キーを テ ス ト : ユーザー指定のキーで暗号化 さ れた BIT フ ァ イ ルを ダ ウ ン ロ ー ド し ます。
b.
キーを テ ス ト : すべて 0 のキー と 関連付け ら れてい る 暗号化 さ れた BIT フ ァ イ ルを ダ ウ ン ロ ー ド し ます。 コ ン
フ ィ ギ ュ レーシ ョ ン エ ラ ーが予想 さ れます。
c.
キーを テ ス ト : 暗号化 さ れていない BIT フ ァ イ ルを ダ ウ ン ロ ー ド し ます。 結果は、 セキ ュ リ テ ィ の設定に よ っ て
異な り ます。
ま とめ
こ のアプ リ ケーシ ョ ン ノ ー ト では、 AES の暗号化 と 認証の規格について説明 し 、 利用可能なそれぞれのキー格納オプシ ョ
ンの長所 と 短所を記述 し てい ます。 ま た、 Vivado Design Suite ソ フ ト ウ ェ ア を使用 し て AES 暗号化キーお よ び暗号化ビ ッ
ト フ ァ イ ルを生成 し 、 7 シ リ ーズ FPGA に こ れ ら の フ ァ イ ルを プ ロ グ ラ ムする 方法について簡単に説明 し てい ます。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
13
付録 A : 暗号化/非暗号化ビ ッ ト ス ト リ ーム
付録 A : 暗号化/非暗号化ビ ッ ト ス ト リ ーム
暗号化ビ ッ ト ス ト リ ーム と 非暗号化ビ ッ ト ス ト リ ームの違いを図 7 に示 し ます。
X-Ref Target - Figure 7
非暗号化 ビ ッ ト フ ァ イ
暗号化ビ ッ ト フ ァ イ
図 7 : 暗号化ビ ッ ト フ ァ イル と 非暗号化ビ ッ ト フ ァ イル
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
14
参考資料
参考資料
注記 : 日本語版のバージ ョ ンは、 英語版 よ り 古い場合があ り ます。
1.
『Virtex-6 お よ び 7 シ リ ーズ FPGA での不正操作防止デザ イ ンの開発』 (XAPP1084 : 英語版、 日本語版)
2.
『7 シ リ ーズ FPGA コ ン フ ィ ギ ュ レーシ ョ ン ユーザー ガ イ ド 』 (UG470 : 英語版、 日本語版)
3.
「BBR (バ ッ テ リ ー バ ッ ク ア ッ プ RAM) の AES キーを使用」
http://japan.xilinx.com/training/vivado/using-encryption-keys-with-bbram.htm
(BBRAM
のビデオ
チ ュ ー ト リ アル
改訂履歴
次の表に、 こ の文書の改訂履歴を示 し ます。
日付
バージ ョ ン
2015 年 4 月 15 日
1.0
内容
初版
法的通知
The information disclosed to you hereunder (the "Materials") is provided solely for the selection and use of Xilinx products.To the maximum extent
permitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES AND
CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort, including
negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connection with, the
Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage (including loss of
data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if such damage or loss was reasonably
foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct any errors contained in the Materials or to
notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute, or publicly display the Materials without
prior written consent.Certain products are subject to the terms and conditions of Xilinx's limited warranty, please refer to Xilinx's Terms of Sale which can
be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and support terms contained in a license issued to you by
Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any application requiring fail-safe performance; you assume sole risk and
liability for use of Xilinx products in such critical applications, please refer to Xilinx's Terms of Sale which can be viewed at
http://www.xilinx.com/legal.htm#tos.
Automotive Applications Disclaimer
XILINX PRODUCTS ARE NOT DESIGNED OR INTENDED TO BE FAIL-SAFE, OR FOR USE IN ANY APPLICATION REQUIRING FAIL-SAFE
PERFORMANCE, SUCH AS APPLICATIONS RELATED TO:(I) THE DEPLOYMENT OF AIRBAGS, (II) CONTROL OF A VEHICLE, UNLESS
THERE IS A FAIL-SAFE OR REDUNDANCY FEATURE (WHICH DOES NOT INCLUDE USE OF SOFTWARE IN THE XILINX DEVICE TO
IMPLEMENT THE REDUNDANCY) AND A WARNING SIGNAL UPON FAILURE TO THE OPERATOR, OR (III) USES THAT COULD LEAD
TO DEATH OR PERSONAL INJURY.CUSTOMER ASSUMES THE SOLE RISK AND LIABILITY OF ANY USE OF XILINX PRODUCTS IN
SUCH APPLICATIONS.
© Copyright 2015 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands included herein are
trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.
こ の資料に関す る フ ィ ー ド バ ッ ク お よ び リ ン ク な ど の問題につ き ま し ては、 [email protected] ま で、 ま たは各ページの右下
にあ る [フ ィ ー ド バ ッ ク 送信] ボ タ ン を ク リ ッ ク す る と 表示 さ れ る フ ォームか ら お知 ら せ く だ さ い。フ ィ ー ド バ ッ ク は日本語で入力可能で
す。 いただ き ま し た ご意見を参考に早急に対応 さ せていただ き ます。 なお、 こ の メ ール ア ド レ スへのお問い合わせは受け付けてお り ませ
ん。 あ ら か じ めご了承 く だ さ い。
XAPP1239 (v1.0) 2015 年 4 月 15 日
japan.xilinx.com
15