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

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

セキュリティー・モードの検証

インテルFPGAでは、KEY_VERIFY JTAG命令をサポートしています。これによってデバイスの既存のセキュリティー・モードを検証できます。揮発性キーのプログラムが成功したかどうかを確認するには、.jam ファイルを使用してセキュリティー・モードの確認手順を自動化します。

表 13.   KEY_VERIFY JTAG命令
JTAG命令 命令コード 説明
KEY_VERIFY 00 0001 0011 TDITDO 間のキー検証スキャンレジスターを接続します。

KEY_VERIFY JTAG命令によって、チップ上でイネーブルしたセキュリティー機能に関する情報を読み出すことができます。

表 14.  40nm FPGAのセキュリティー・モードの検証
セキュリティー・モード サポートされるデバイス ビット0 ビット1 ビット2 ビット3 ビット4 ビット5
No key Arria® II GX 0 0 0 0 0 0
  • Arria® II GZ
  • Stratix® IV
0 0 0 0 X X
Volatile key Arria® II GX 1 0 0 0 0 0
  • Arria® II GZ
  • Stratix® IV
1 0 0 0 X X
Volatile key with tamper protection Arria® II GX 1 0 0 0 1 0
  • Arria® II GZ
  • Stratix® IV
X X X X X X
Non-volatile key Arria® II GX 0 1 0 1 0 0
  • Arria® II GZ
  • Stratix® IV
0 1 0 1 X X
Non-volatile key with tamper protection bit Arria® II GX 0 1 1 1 0 0
  • Arria® II GZ
  • Stratix® IV
0 1 1 1 X X
表 15.  28nm FPGAのセキュリティー・モードの検証
セキュリティー・モード ビット0 ビット1 ビット2 ビット3 ビット4 ビット5 ビット6 ビット7 ビット8
No key 0 0 0 0 0 X X X X
Volatile key 1 0 0 0 0 X X X X
Volatile key with tamper protection 14 1 0 0 0 1 X X X X
Non-volatile key 0 1 0 1 0 X X X X
Non-volatile key with tamper protection bit 14 0 1 1 1 0 X X X X
表 16.  20nm FPGAのセキュリティー・モードの検証
ビット セキュリティー機能または設定 説明 アクティブ値
0 Volatile Key

このビットが設定されるのは、揮発性キーがデバイスに正常にプログラムされたときです。

1
1 Attempt Non-volatile Key Programming このビットが設定されると、何者かにより不揮発性キーのOTPヒューズへの書き込みが試行されたことを示します。 1
2 Disable Non-volatile Key このビットが設定されると、揮発性キーの使用をディスエーブルします。 1
3 Non-volatile Key このビットが設定されると、何者かにより不揮発性キーのOTPヒューズの書き込みが行われたことを示します。 1
4 Tamper Protection このビットが設定されると、FPGAは不揮発性または揮発性キーのいずれかを使用した改ざん保護モードになります。 1
5 Don’t Care ドントケア X
6 Volatile Key Lock このビットが設定されると、揮発性キーの外部JTAGからの再プログラムが防止されます。 1
7 - 10 Don’t Care ドントケア X
1115 Force Configuration from HPS only このビットが設定されるのは、コンフィグレーションがHPSからのみ可能な場合です。 1
12 External JTAG Bypass このビットが設定されると、外部JTAGがディスエーブルであることを示します。 1
1316 HPS JTAG Bypass このビットが設定されると、外部JTAGがディスエーブルであることを示します。 1
1417 Disable Partial Reconfiguration and Scrubbing このビットが設定されると、外部PRおよび外部スクラビング (HPS PRおよびHPSスクラビングを含む) がディスエーブルであることを示します。 1
15 Disable Volatile Key このビットが設定されると、揮発性キーがディスエーブルであることを示します。 1
16 Don’t Care ドントケア X
17 Disable Key Related JTAG Instructions このビットが設定されると、キーに関連するすべてのJTAG命令への外部JTAGアクセスがディスエーブルであることを示します。 1
18 JTAG Secure Mode このビットが設定されると、必須のJTAG命令のみが外部からのアクセスを許可されていることを示します。 1
19 Don’t Care ドントケア X
20 Volatile Key Clear

このビットが設定されるのは、揮発性キーがデバイスから正常にクリアされたときです。

1

次の例で示すのは、FPGAのセキュリティー・モードを検証するための .jam ファイルです。サンプルの .jam ファイルが適用できるのは、JTAGチェーン内の単一のFPGAデバイスのみです。SoCデバイスの場合は、次のステートメントを IRSCAN コマンドの前に追加してください。

PREIR 4;
PREDR 1;

40nm FPGAのJAMファイル (Arria II GXデバイス)

STATE RESET;

STATE IDLE;

'Security Mode Identification

BOOLEAN verify_reg[6];

IRSCAN 10, $013;

WAIT 100 USEC;

DRSCAN 6, $0, CAPTURE verify_reg[5..0];

40nm FPGAのJAMファイル (Arria II GZおよびStratix IVデバイス)

STATE RESET;

STATE IDLE;

‘Key Verification

BOOLEAN verify_reg[4];

IRSCAN 10, $013;

WAIT 100 USEC;

DRSCAN 4, $0, CAPTURE verify_reg[3..0];

28nm FPGAのJAMファイル

STATE RESET;

STATE IDLE;

'Key Verification in JAM format

BOOLEAN verify_reg[9];

IRSCAN 10, $013;

WAIT 100 USEC;

DRSCAN 9, $0, CAPTURE verify_reg[8..0];

20nm FPGAのJAMファイル

STATE RESET;

STATE IDLE;

'Key Verification in JAM format

BOOLEAN verify_reg[21];

IRSCAN 10, $013;

WAIT 100 USEC;

DRSCAN 21, $0, CAPTURE verify_reg[20..0];

14 改ざん防止機能がイネーブルの場合、デバイスは電源投入後にJTAGセキュアモードになります。JTAGセキュアモードをディスエーブルするには、UNLOCK を発行する必要があります。
15 ビット11は インテル® Cyclone® 10 GXデバイスには適用されません。 インテル® Cyclone® 10 GXデバイスでは、このビットは「ドントケア」状態にあります。
16 ビット13は インテル® Cyclone® 10 GXデバイスには適用されません。 インテル® Cyclone® 10 GXデバイスでは、このビットは「ドントケア」状態にあります。
17 ビット14は インテル® Cyclone® 10 GXデバイスには適用されません。 インテル® Cyclone® 10 GXデバイスでは、このビットは「ドントケア」状態にあります。