アプリケーションノート 3826

1-Wire® SHA-1セキュアメモリによるXilinx® FPGAのIFFコピー防止


要約: このアプリケーションノートは、敵味方識別(IFF)認証コンセプトが、セキュアメモリとともにどのようにFPGA設計のセキュアな制御とコピー防止を行うかを説明します。また、IFF方式によって、ソフトによる機能管理とボード識別を実装することもできます。このアプリケーションノートで言及されるFPGAはすべてXilinx, Inc.製です。

動機

組込みFPGAの構成コードなど電子製品の開発は高コストです。設計および構成データは、クローン形式の不正コピーから保護する必要がある知的所有権に当たります。こうした知的所有権を保護する方式が複数あります。Xilinx Virtex-II®やVirtex-4®デバイスなどのハイエンドFPGAは構成ビットストリームの暗号化をサポートしています。この暗号化は、ビットストリームのコピーが同じ秘密鍵を使用するFPGAでのみ機能するプロセスです。ただし、この暗号化方式は、コスト重視のアプリケーションでは実用的ではありません。複製を防ぐのに適した代替案は、敵味方識別(IFF)コンセプトを採用する認証です。このIFF方式は、低コストのXilinx Spartan®-3およびSpartan-6シリーズなどのすべてのFPGAファミリに適用することができます。

前提条件

IFFコンセプトでは、FPGAが認証実行のために通信するセキュアメモリチップによって、FPGAの設計が拡張されている必要があります。図1は、この方式の簡略回路図を示しています。
図1. FPGAに対するセキュアな制御および保護を行うマキシム1-Wireメモリデバイスの簡略回路図
図1. FPGAに対するセキュアな制御および保護を行うマキシム1-Wireメモリデバイスの簡略回路図
セキュアメモリチップは以下の要件を満たす必要があります。
  • チップ内動作に使用可能だが、外部からの読み取りは不可の秘密鍵を内蔵
  • 固有の変更不可のID (識別番号)を内蔵。このIDを使って、デバイス固有の秘密鍵を計算することができます。
  • 秘密鍵、チャレンジとして機能する乱数、固有のID番号、およびその他データ(定数)を含むハッシュを計算可能
希望するセキュリティレベルを付与するには、ハッシュアルゴリズムは以下である必要があります。
  • 非可逆性—ハッシュ結果に対応する入力を求めることが計算上、実行不可能になります。
  • 衝突耐性—任意のハッシュ結果を生成する別の入力メッセージを見つけることが実行不可能になります。
  • 大きななだれ効果—入力が変化すると、ハッシュ結果が大きく異なります。
これらの基準に適合する徹底的に吟味され国際的に認証された一方向ハッシュアルゴリズムは、米国標準技術研究所(NIST)によって開発されたセキュアハッシュアルゴリズム(SHA-1)です。SHA-1は、国際規格ISO/IEC 10118-3:2004へと発展しました。このアルゴリズムの背後の計算は、NISTのウェブサイトで公開されています。
SHA-1アルゴリズムを実装するマキシムのセキュアメモリとしては、DS28E01-100DS2432などがあります。これらのデバイスには動作用にFPGA端子が1つだけ必要であるため、その1-Wireインタフェースによって、このアプリケーションに特に最適です。
メモリチップのセキュリティ機能を活用するには、FPGAは以下を実行可能である必要があります。
  • 乱数の生成
  • 内部動作に使用可能だが、外部からの検出は不可の秘密鍵の識別
  • セキュアメモリと同様に、秘密鍵、乱数、およびその他データを含むハッシュの計算
  • ハッシュ結果の照合
FPGAの機能には、PicoBlaze™などのマイクロコントローラの機能が必要です。このPicoBlazeは、Spartan-3、Spartan-6、Virtex-II、Virtex-II Pro®、およびVirtex-4 FPGA/CoolRunner®-II CPLDに最適化された無料マクロとしてXilinxから入手可能です。PicoBlazeは192の論理セルを配置しています。これは、Spartan-3 XC3S200デバイスのちょうど5%に相当します。

この方式の機能

電源が印加されると、FPGAはフラッシュPROMから設定されます。これでFPGAのマイクロコントローラ機能はアクティブになり、以下のステップで構成される認証を実行します。
  1. 乱数を生成し、それをチャレンジ(Q)としてセキュアメモリに送出します。
  2. 秘密鍵、チャレンジQ、固有のID、およびその他の固定データに基づいて、セキュアメモリにハッシュを計算するように命令します。
  3. セキュアメモリが使用する同じ入力および定数とFPGAの秘密鍵に基づいて、ハッシュ、すなわち予測レスポンス(E)を計算します。
  4. セキュアメモリで計算されるハッシュをレスポンス(A)と見なし(認証MACの読取り)、それを予測レスポンス(E)と照合します。
AとEが一致する場合は、マイクロコントローラはこの回路は「味方」であると識別します。これは、秘密鍵を認識していると思われるためです。FPGAは通常動作に遷移し、構成コードで定義された全機能をイネーブル/実行します。ただし、AとEが異なる場合は、回路は「敵」になります。この場合は、FPGAは通常動作以外のアプリケーション固有のアクションを行います。

このプロセスが安全である理由

ビルドする単位ごとに、設計側(OEM)は、適切に事前設定済みの1個のDS28E01-100またはDS2432をFPGA組込み製品を製造する側(委託製造メーカー、すなわちCM)に供給する必要があります。この1対1の関係によって、CMがビルド可能な認証単位の数が制限されます。CMがセキュアメモリを改変するのを防ぐために(おそらく、メモリが適切に設定されていないため、追加メモリが必要と要求)、秘密鍵を書込み保護することを推奨します。1-Wire EEPROMデータメモリが書込み保護されていなくても、そのセキュリティを懸念する必要はありません。意図的に、秘密鍵を知っている人しか、このメモリデータを変更することができません。歓迎される副次作用として、この特性によってアプリケーション設計者は以下のソフトによる機能管理を実装することができます。FPGAは、SHA-1セキュアメモリから読み取るデータに応じて、機能をイネーブルまたはディセーブルすることができます。
CMへの出荷前に、OEMがメモリデバイスを事前設定するのは、必ずしも便利または実用的ではありません。この状況に対処するために、マキシムはSHA-1シークレットとEEPROMアレイデータの事前設定サービスもOEMに提供します。このサービスによって、1-Wireメモリデバイスが、OEMの入力に応じてマキシムの工場で登録、設定されます。続いて、マキシムはCMに直接出荷します。このサービスの主な利点として、以下があります。
  1. OEMがSHA-1シークレットをCMに明かすことが不要
  2. OEM が事前設定システムを実装することが不要
  3. OEMが認証したサードパーティのみが登録されたデバイスにアクセス可能
  4. 必要に応じて、OEMの監査用にマキシムは出荷された単位量の記録を保管
SHA-1から提供される固有の安全性に加えて、IFF認証の上記タイプの主要な安全要素は秘密鍵です。この秘密鍵をセキュアメモリまたはFPGAから読み取ることはできません。さらに、FPGAの設定時に構成ビットストリームを盗み聞きしても、秘密鍵を検出することはできません。認証ステップをなくす目的で設計を決定するビットストリームをリバースエンジニアリングすることは極めて困難な作業で、実行可能コードのみから大規模Windows®アプリケーションの背後にあるC++コードを識別する試みと類似しています。
もう1つの重要なセキュリティコンポーネントは、チャレンジQのランダム性です。予測可能なチャレンジ(すなわち、定数)は予測可能なレスポンスをもたらします。これを1度記録し、続いてセキュアメモリの代わりにマイクロコントローラによって後で再生することができます。こうした予測可能チャレンジによって、マイクロコントローラはその設計を味方と見なすようにFPGAを効果的に欺くことができます。このIFF方式のチャレンジのランダム性によって、この懸念が緩和されます。
各セキュアメモリ内の秘密鍵がデバイス固有(すなわち、マスタシークレットから計算される個別秘密鍵、メモリ独自のID、およびアプリケーション固有の定数)の場合は、セキュリティをさらに向上することができます。個別鍵が公開された場合は、システムのセキュリティではなく、1つのデバイスのみが影響を受けます。個別秘密鍵をサポートするには、FPGAはマスタシークレットを認識し、予測レスポンスを計算する前にまずメモリチップの秘密鍵を計算する必要があります。

詳細情報

ここで提供される情報は、FPGAおよびセキュアメモリを通じて実装されるIFF認証の基本コンセプトをかなり抽象的なレベルで示しています。詳細については、以下のドキュメントを参照してください。

結論

有名な敵味方識別(IFF)コンセプトに基づく知的所有権の無許可複製からの保護には、1個の低コストチップの追加と、FPGA構成コードの更新が必要です。セキュアメモリチップとその回路内の設定可能性によって、設計者はソフトによる機能管理を実装して、技術者を派遣せずに設定を遠隔変更することができます。このため、機能管理に使用されないセキュアメモリ空間をボードの識別用に利用することができます。