AN 556: インテルFPGAにおけるデザイン・セキュリティー機能の使用

ID 683269
日付 11/12/2019
Public
ドキュメント目次

デザイン・セキュリティー機能の概要

インテルFPGAのデザイン・セキュリティー機能では、不正コピー、リバース・エンジニアリング、および改ざんからの保護を行います。次の表で示すデザイン手法では、ソリューションをセキュリティーで保護します。

20nm FPGAで追加されたセキュリティー機能をイネーブルするには、ヒューズを書き込むか、コンフィグレーション・ビットストリーム内のオプションビットの設定で、スタンドアロンのQcryptツールまたは インテル® Quartus® Prime Convert Programming Fileツールを使用します。改ざん防止ビットおよびJTAGセキュアモードのイネーブルは、20nm FPGAでのみ、個別に行うことができます。

表 3.  40nmおよび28nm FPGAのデザイン・セキュリティー手法
注意:
改ざん防止ビットをイネーブルすると、40nmおよび28nm FPGAでテストモードがディスエーブルされます。テストモードのディスエーブルは元に戻すことができないため、インテルによる故障解析の実行ができなくなります。改ざん防止ビットをイネーブルするには、改ざん防止ビット・プログラミングのイネーブルの手順の項を参照してください。
デザイン・セキュリティー要素 40nm FPGA 28nm FPGA1
不揮発性キー 不揮発性キーは、デバイス内のヒューズに安全に格納されています。独自のセキュリティー機能によりこのキーの特定が困難になります。
揮発性キー 揮発性キーは、デバイス内のバッテリー・バックアップRAMに安全に格納されています。独自のセキュリティー機能によりこのキーの特定が困難になります。
キーの生成 ユーザー提供の256ビット文字列2つが処理されて、デバイスにプログラムされている256ビットキーが生成されます。 ユーザー提供の256ビットキーは、デバイスにプログラムされる前に、一方向関数によって処理されます。
キーの選択 ユーザーは、セキュリティー・キー・タイプのうちどちらか1つ (不揮発性キーまたは揮発性キー) のみをデバイスに設定します。
改ざん防止モード 改ざん防止モードでは、暗号化されていないコンフィグレーション・ファイルでFPGAがロードされないようにします。このモードをイネーブルすると、FPGAのロードは、ユーザーのキーで暗号化されたコンフィグレーションでのみ行うことができます。暗号化されていないコンフィグレーションおよび誤ったキーで暗号化されたコンフィグレーションでは、コンフィグレーションは正常に行われません。このモードをイネーブルするには、デバイス内でヒューズを設定してください。
コンフィグレーションのリードバック いずれのデバイスでも、コンフィグレーション・リードバック機能はサポートされていません。コンフィグレーション・リードバック機能は、暗号化されていないコンフィグレーション・データのリードバックを実行不可能にします。
表 4.  20nm FPGAのデザイン・セキュリティー手法
デザイン・セキュリティー要素 説明
不揮発性キー 不揮発性キーは、デバイス内のヒューズに安全に格納されています。独自のセキュリティー機能によりこのキーの特定が困難になります。
揮発性キー 揮発性キーは、デバイス内のバッテリー・バックアップ付きRAMに安全に格納されています。独自のセキュリティー機能によりこのキーの特定が困難になります。
キーの生成 ユーザー提供の256ビットキーは、デバイスにプログラムされる前に、一方向関数によって処理されます。
キーの選択 揮発性と不揮発性の両方のキーをデバイス内に存在させることができます。ユーザーは、使用するキーを選択するため、暗号化されたコンフィグレーション・ファイル内のオプションビットを設定します。これは、Convert Programming FileツールまたはQcryptツールを介して行います。
改ざん防止モード 改ざん防止モードでは、暗号化されていないコンフィグレーション・ファイルでFPGAがロードされないようにします。このモードをイネーブルにすると、FPGAのロードは、ユーザーのキーで暗号化されたコンフィグレーションのみで行うことができます。暗号化されていないコンフィグレーションや誤ったキーで暗号化されたコンフィグレーションは、正常に行われません。このモードをイネーブルするには、デバイス内でヒューズを設定してください。
コンフィグレーションのリードバック いずれのデバイスでも、コンフィグレーション・リードバック機能はサポートされていません。セキュリティーの観点から、これにより、暗号化されていないコンフィグレーション・データのリードバックが実行不可能になります。
セキュリティー・キーの制御 異なるJTAG命令およびセキュリティー・オプションをQcryptツールで使用することにより、柔軟に揮発性または不揮発性キーの使用を恒久的または一時的にディスエーブルすることができます。また、揮発性キーをロックすると、その上書きまたは再プログラムを防止できます。
JTAGアクセス制御

JTAGアクセス制御のさまざまなレベルをイネーブルするため、OTPヒューズまたはオプションビットの設定を、コンフィグレーション・ファイル内でQcryptツールを使用して行います。

  1. フル・コンフィグレーションまたはパーシャル・コンフィグレーションは、HPSのみを介して行うように強制します。
  2. 外部JTAGピンまたはHPS JTAGをバイパスします。この機能によって外部JTAGまたはHPS JTAGアクセスがディスエーブルされますが、ロックの解除は、内部コアアクセスを介して行うことができます。2
  3. 外部JTAG ピンからのすべてのAESキーに関連するJTAG命令をディスエーブルします。
  4. 限られた必須JTAG命令セットのみが、外部JTAGからアクセスできるようにします。JTAGセキュアモードと同様です。
注: 上記およびその他のセキュリティー機能について詳しくは、インテルFPGA技術サポートにお問い合わせください。
1 28nm FPGAで改ざん防止ビットをイネーブルする場合、デバイスはJTAGセキュアモードです。
2 インテル® Cyclone® 10 GXでは、HPSおよびHPS JTAG Bypassによる強制フル・コンフィグレーションまたはパーシャル・コンフィグレーションはサポートしていません。