(57)【要約】【課題】安全かつ効率的にＰＬＤ上に回路を構築する。【解決手段】再構成可能論理デバイスは、固定領域と、コンフィグメモリの内容を書換えることで論理や配線を変更することができるロジック領域と、デバイスに固有のＩＤを保持する内部記憶と、秘密鍵を格納する鍵レジスタとを備える。外部記憶装置から非暗号化論理プログラムデータを得て、ロジック領域上の回路構築を制御するコンフィグ制御回路をロジック領域に形成する。このロジック領域には、鍵生成回路と、復号回路と、検証回路とを切り替えながら実装する。鍵生成回路は、内部記憶に格納されたデバイス固有ＩＤを使って演算を行うことで秘密鍵を生成して、この秘密鍵を鍵レジスタに格納する。復号回路は、外部記憶装置から暗号化した論理プログラムデータを入手して、秘密鍵を使って復号する。検証回路は、論理プログラムデータの完全性検証を行なう。【選択図】図４
2010117968.tif 000002
【特許請求の範囲】
【請求項１】
回路構成情報が記述された論理プログラムデータを外部記憶装置からダウンロードすることで内部に回路を構築することのできる再構成可能論理デバイスの論理プログラムデータ保護システムにおいて、
前記再構成可能論理デバイスは、固定された回路が実装されている固定領域と、コンフィグメモリの内容を書換えることで論理や配線を変更することができるロジック領域と、デバイスに固有のＩＤを保持する内部記憶と、秘密鍵を格納する鍵レジスタとを備え、
前記外部記憶装置から非暗号化論理プログラムデータを得て、前記ロジック領域上の回路構築を制御するコンフィグ制御回路を前記ロジック領域に形成し、
前記ロジック領域には、鍵生成回路と、復号回路と、検証回路とを切り替えながら実装し、
前記鍵生成回路は、前記内部記憶に格納された前記デバイス固有ＩＤを使って演算を行うことで秘密鍵を生成して、この秘密鍵を前記鍵レジスタに格納し、
前記復号回路は、前記外部記憶装置から暗号化した論理プログラムデータを入手して、この暗号化論理プログラムデータを、前記鍵レジスタ内の秘密鍵を使って復号し、
前記検証回路は、論理プログラムデータの完全性検証を行なう、
ことから成る再構成可能論理デバイスの論理プログラムデータ保護システム。
【請求項２】
前記ロジック領域は、再構成の制御、ビットストリームの復号及び検証を行う制御ロジック領域と、ユーザ回路を構築するためのユーザロジック領域から成る請求項１に記載の論理プログラムデータ保護システム。
【請求項３】
前記鍵生成回路は、前記再構成可能論理デバイスが、前記外部記憶装置から非暗号化論理プログラムデータを得て、前記制御ロジック領域に構築される請求項２に記載の論理プログラムデータ保護システム。
【請求項４】
前記復号回路は、前記外部記憶装置から非暗号化論理プログラムデータを得て前記制御ロジック領域に構築される請求項２に記載の論理プログラムデータ保護システム。
【請求項５】
前記検証回路は、前記外部記憶装置から暗号化または非暗号化論理プログラムデータを得て、前記制御ロジック領域に構築される請求項２に記載の論理プログラムデータ保護システム。
【請求項６】
前記検証回路は、復号された論理プログラムデータの完全性が確認された場合に、前記コンフィグ制御回路に論理プログラムデータを送信して、この論理プログラムデータをコンフィグメモリに書き込むことで、ユーザ回路が前記ユーザロジック領域内に構築される請求項５に記載の論理プログラムデータ保護システム。
【請求項７】
回路構成情報が記述された論理プログラムデータを外部記憶装置からダウンロードすることで内部に回路を構築することのできる再構成可能論理デバイスの論理プログラムデータ保護方法において、
前記再構成可能論理デバイスは、固定された回路が実装されている固定領域と、コンフィグメモリの内容を書換えることで論理や配線を変更することができるロジック領域と、デバイスに固有のＩＤを保持する内部記憶と、秘密鍵を格納する鍵レジスタとを備え、
前記外部記憶装置から非暗号化論理プログラムデータを得て、前記ロジック領域上の回路構築を制御するコンフィグ制御回路を前記ロジック領域に形成し、
前記ロジック領域には、鍵生成回路と、復号回路と、検証回路とを切り替えながら実装し、
前記鍵生成回路は、前記内部記憶に格納された前記デバイス固有ＩＤを使って演算を行うことで秘密鍵を生成して、この秘密鍵を前記鍵レジスタに格納し、
前記復号回路は、前記外部記憶装置から暗号化した論理プログラムデータを入手して、この暗号化論理プログラムデータを、前記鍵レジスタ内の秘密鍵を使って復号し、
前記検証回路は、論理プログラムデータの完全性検証を行なう、
ことから成る再構成可能論理デバイスの論理プログラムデータ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能論理デバイスにおいて、デバイスの一部分を暗号鍵生成回路、復号回路、検証回路等に書き換えることによって、任意の鍵生成、復号、検証アルゴリズム等の実行を可能にしつつ、書換えデータの機密や完全性を保証し、デバイスと書換えデータを保護する再構成可能論理デバイスの保護技術に関する。
【背景技術】
【０００２】
Field Programmable Gate Array（ＦＰＧＡ）やComplex Programmable Logic Device（ＣＰＤＬ）に代表される再構成可能論理デバイス（以下、ＰＬＤと表記する）は、回路構成を論理プログラムデータによって変更可能な半導体デバイスである。ＰＬＤの論理動作はハードウェア記述言語（ＨＤＬ：Hardware Description Language）によって記述される。ＨＤＬで記述された論理動作は、論理合成ツールによって論理式に変換された後、デバイスベンダが提供するツールによってデバイスに固有のプログラム素子へとマッピングされ、そのマッピング情報に基づいて、デバイスに書き込まれる論理プログラムデータ（プログラム）が生成される。このプログラムをデバイス内部のプログラム格納メモリに書き込むことで、デバイス内のゲートや配線を物理的に変更することなく論理を変更することが可能となる。
【０００３】
通常、ＰＬＤはプログラムによって全体が書き換えられるが、いくつかのデバイスは、一部分のみを書き換える部分再構成の機能をサポートしている。部分再構成は、デバイスの動作を中止せずに実行する動的部分再構成と、デバイスの動作を中断して書換えを行う静的部分再構成に大別される。ＰＬＤの部分再構成を利用することで、ＰＬＤ内の同一の領域に、複数の回路を切り替えながら実装することができるため、デバイスの小型・軽量化、消費電力の削減、コストの削減等が可能となると期待されている。
【０００４】
また、動的部分再構成を使うことで、ＰＬＤ内の通信回路は動作させたままプログラムを外部記憶装置やネットワークから得て、他の部分の回路機能を書き換えるなどによって、ＰＬＤの柔軟さを十分に活用した使用方法が可能となる。ＰＬＤには、プログラムのＰＬＤ内部への格納方式の差から次のようなタイプに分けられる。
【０００５】
（１）プログラムがヒューズ（配線を焼き切ることで配線や論理をプログラムする）あるいはアンチヒューズ（配線を焼きつなげることで配線や論理をプログラムする）を用いて記録され、プログラムを書き込んだ後に論理の変更ができないタイプ。ＰＬＤへの電源供給を停止した後も、プログラムは記憶されている。
【０００６】
（２）プログラムがＰＬＤ内部のＯｎｅ  Ｔｉｍｅ  ＲＯＭ（一度だけ書き込みが可能な不揮発性のＲＯＭ）に格納され、プログラムを書き込んだ後に論理の変更ができないタイプ。ＰＬＤへの電源供給を停止した後も、プログラムは記憶されている。
【０００７】
（３）プログラムがＰＬＤ内部のＦｌａｓｈＲＯＭやＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）等の不揮発性メモリに格納され、プログラムを書き込んだ後も、論理の変更が可能であるタイプ。ＰＬＤへの電源供給を停止しても、論理は記憶されている。
【０００８】
（４）プログラムがＰＬＤ内部のＳＲＡＭ（Static RAM）に格納され、プログラムを書き込んだ後も論理の変更が可能であるタイプ。ＰＬＤへの電源供給を停止するとＰＬＤ内のプログラムは失われる。通常、ＰＬＤ外部のＦｌａｓｈＲＯＭやＥＥＰＲＯＭ等の不揮発性メモリにプログラムを格納しておき、ＰＬＤの電源が投入されるたびにこれらの不揮発性メモリからプログラムを読み出してＰＬＤ内のプログラム格納メモリに書き込む。
【０００９】
（３）、（４）のタイプのＰＬＤにおいては、プログラムを読みなおすことで論理の変更が可能である。プログラムは、通常、外部の記憶素子に格納しておくか、ネットワークからダウンロードしてくることが考えられる。ここで、プログラムは電子データであり、コピー・改変・偽造が容易である点が問題となる。プログラムは電子データであるため、容易にコピーされて製品回路を複製されたり、悪意やエラーのあるデータを送りつけることで回路を誤作動・破壊させたりすることが可能になる恐れがある。特に（４）のタイプのＰＬＤでは、デバイスの起動のたびにＰＬＤと外部の不揮発性メモリとの間でプログラムが送受信されるため、プログラム暗号化などによって保護することが、プログラムの機密保持やデバイスの保護のために重要である。タイプ（３）のＰＬＤはタイプ（４）のＰＬＤよりもプログラムを読み出す頻度が小さくなるが、同様の保護対策が必要である。
【００１０】
これまでも、論理プログラムデータを保護する技術に関する報告は存在する。特許文献１や特許文献２では、ＰＬＤの遠隔保守方式について開示されているが、プログラムやＰＬＤの保護については考慮されていないという問題がある。特許文献３においては、ＰＬＤへのプログラム書き込み制御、プログラム復号等をＰＬＤ外部の回路で行っているが、この方式は外部にマイクロプロセッサ等のＰＬＤ以外のデバイスを必要とし、実装面積が大きくなるという問題がある。また、ＰＬＤの電源投入時にプログラムを読み出す外部ＥＥＰＲＯＭを書換え、自己リセットすることによって回路を再構成する方法をとっており、このＥＥＰＲＯＭへの書込み手段の安全性について述べているが、本システムのようにＰＬＤ自身が書き換えを制御してＰＬＤ上に回路を再構築する手段とは異なる。また非特許文献１では、復号回路自体を再構成可能モジュールとすることで様々な暗号アルゴリズムを実装できることを述べているが、秘密鍵の生成やプログラムの検証については述べられておらず、鍵生成・復号・検証等の各モジュールを切り替えて実装する本発明とは異なる。
【特許文献１】特開２００５−２５８９９６号公報
【特許文献２】特開平０９−２１８７８１号公報
【特許文献３】特開２００８−１２３１４７号公報
【非特許文献１】Lilian Bossuet and Guy Gogniat, ”Dynamically configurable security for SRAM bitstreams,” Int. J. Embedded Systems, Vol.2, Nos. 1/2, 2006.
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は上記の問題点を解決するためになされたもので、ＰＬＤの動的な部分再構成を利用して、ＰＬＤのプログラムの保護手段や、実装面積を小規模に抑える手段、暗号鍵やアルゴリズムを柔軟に変更できる手段を提供することで、安全かつ効率的にＰＬＤ上に回路を構築することを可能にすることを目的としている。
【課題を解決するための手段】
【００１２】
この発明は上記の問題点を解決するためになされたもので、本発明の再構成可能論理デバイスの論理プログラムデータ保護システム及び方法は、回路構成情報が記述された論理プログラムデータを外部記憶装置からダウンロードすることで内部に回路を構築することができる。この再構成可能論理デバイスは、固定された回路が実装されている固定領域と、コンフィグメモリの内容を書換えることで論理や配線を変更することができるロジック領域と、デバイスに固有のＩＤを保持する内部記憶と、秘密鍵を格納する鍵レジスタとを備える。外部記憶装置から非暗号化論理プログラムデータを得て、前記ロジック領域上の回路構築を制御するコンフィグ制御回路を前記ロジック領域に形成する。このロジック領域には、鍵生成回路と、復号回路と、検証回路とを切り替えながら実装する。前記鍵生成回路は、前記内部記憶に格納された前記デバイス固有ＩＤを使って演算を行うことで秘密鍵を生成して、この秘密鍵を前記鍵レジスタに格納する。前記復号回路は、前記外部記憶装置から暗号化した論理プログラムデータを入手して、この暗号化論理プログラムデータを、前記鍵レジスタ内の秘密鍵を使って復号する。前記検証回路は、論理プログラムデータの完全性検証を行なう。
【発明の効果】
【００１３】
本発明によれば、ＰＬＤ上に回路を構築する際に、ＰＬＤ自身が内部を鍵生成回路、復号回路、検証回路と切り替えながらプログラムの書き込みを制御することで、安全に回路を構築することが可能となる。改ざんされたプログラムやエラーのあるプログラムがＰＬＤに送られても、ＰＬＤは検証回路によって異常を検知することができるため、異常な回路が構築されることを防ぐことができる。また、ＰＬＤ自身が部分再構成を利用して鍵生成、復号、検証等のための回路を切り替えながら実装できるため、必要なハードウェアリソースを削減することができるほか、様々なアルゴリズムの回路を柔軟に実装することが可能となる。
【発明を実施するための最良の形態】
【００１４】
以下では、図面を参照して本発明の実施の形態を説明する。必要に応じて、図９のフローチャート中の符号を用いる。図１は、本発明の一実施形態に係る再構成可能論理デバイスのブロック図であり、図９は、そのシステムの動作を記述したフローチャートである。図１において論理プログラムデータ保護システムは、論理プログラムデータをダウンロードして内部に回路を構築することのできる再構成可能論理デバイス１００、回路構成情報が記述された論理プログラムデータを格納する外部記憶装置（ＰＲＯＭ６００或いはネットワーク上のサーバ装置７００）、および再構成可能論理デバイス１００とサーバ装置７００を接続するネットワーク７１０から構成される。再構成可能論理デバイス１００は、固定された回路が実装されている固定領域２００と、コンフィグメモリ４００の内容を書換えることで論理や配線を変更することができるロジック領域３００から構成される。ロジック領域３００は、主に再構成の制御、ビットストリームの復号・検証等を行う制御ロジック領域３１０と、ユーザロジックを構築するためのユーザロジック領域３２０から成る。再構成可能論理デバイス１００は、デバイスに固有のＩＤを内部記憶５００に保持しており、復号に必要となる秘密鍵を鍵レジスタ５１０に格納している。再構成可能デバイス１００の回路構成情報は、外部記憶装置（ＰＲＯＭ６００やネットワーク７１０上のサーバ装置７００）から入手することができる。図１は、回路構成情報が再構成可能デバイス１００にダウンロードされていない状態を示している。
【００１５】
（Ｓ１：コンフィグ制御回路を構築）
図２は、図１に示す再構成可能論理デバイスにコンフィグ制御回路８００を構築した状態で示すブロック図である。再構成可能デバイス１００上にユーザロジックを安全に構築するためには、図２のように、まず外部記憶装置（ＰＲＯＭ６００やネットワーク７１０上のサーバ装置７００）から非暗号化論理プログラムデータを得て、制御ロジック領域３１０に回路構築を制御するコンフィグ制御回路８００を構築する（Ｓ１）。
【００１６】
（Ｓ２〜Ｓ４：鍵生成回路を構築）
図３は、図２に示す再構成可能論理デバイスに鍵生成回路８１０を構築した状態で示すブロック図である。ユーザ回路の機密を保護する場合は，暗号化論理プログラムの復号に使用する鍵を生成する必要がある。Ｓ２においてユーザ回路の機密保護を行うと判断された場合、Ｓ３において既存の鍵を利用するかどうかの判断を行う。すでに生成されている鍵を利用する場合は復号回路の構築ステップ（Ｓ６）へ進む。鍵を生成する場合、再構成可能論理デバイス１００は、図３に示すように、ＰＲＯＭ６００またはネットワーク上のサーバ装置７００から非暗号化論理プログラムデータを得て、制御ロジック領域３１０に鍵生成回路８１０を構築する（Ｓ４）。
【００１７】
（Ｓ５：秘密鍵Ｋを鍵レジスタに格納）
鍵生成回路８１０は内部記憶５００に格納されたデバイス固有ＩＤを使って演算を行うことで秘密鍵Ｋを生成し、秘密鍵Ｋは鍵レジスタ５１０に格納される（Ｓ５）。
【００１８】
（Ｓ６〜Ｓ７：復号回路を構築）
図４は、図３に示す再構成可能論理デバイスに復号回路８２０を構築した状態で示すブロック図である。Ｓ６において新たに復号回路を構築する必要があるかが判断される。既に構築された復号回路を利用する場合は、検証ステップ（Ｓ１０）に進む。復号回路を構築する場合、再構成可能論理デバイス１００は、図４に示すように、ＰＲＯＭ６００またはサーバ装置７００から非暗号化論理プログラムデータを得て制御ロジック領域３１０に復号回路８２０を構築する（Ｓ７）。前述の鍵生成回路８１０は、すでに鍵生成が終わっているため復号回路８２０によって上書きされてもよい。
【００１９】
（Ｓ８：論理プログラムを内部バッファに格納）
図５は、ユーザロジックの暗号化論理プログラムデータの復号を説明する図である。再構成可能論理デバイス１００は、図５に示すように、ＰＲＯＭ６００またはサーバ装置７００からユーザ回路の暗号化論理プログラムデータを入手する。暗号化論理プログラムデータは、鍵レジスタ５１０内の秘密鍵Ｋを使って復号回路８２０によって復号される。復号された論理プログラムデータは、内部バッファ８４０に格納される（Ｓ８）。
【００２０】
（Ｓ９〜Ｓ１１：検証回路を構築）
図６は、図５に示す再構成可能論理デバイスに検証回路８３０を構築した状態で示すブロック図である。Ｓ９において論理プログラムの完全性検証を行うかが判断される。完全性検証を行わない場合は、ユーザ回路の構築ステップ（Ｓ１４）に進む。完全性検証を行う場合、Ｓ１０において新たに検証回路を構築するかが判断される。既に構築された検証回路を使用する場合は次の検証ステップ（Ｓ１２）へ進む。検証回路を構築する場合、再構成可能論理デバイス１００は、図６に示すように、ＰＲＯＭ６００またはサーバ装置７００から暗号化または非暗号化論理プログラムデータを得て、制御ロジック領域３１０に論理プログラムデータの完全性検証を行う検証回路８３０を構築する（Ｓ１１）。
【００２１】
（Ｓ１２〜Ｓ１３：完全性を検証）
図７は、図６に示す再構成可能論理デバイスにユーザ回路９００を構築した状態で示すブロック図である。検証回路８３０は、図７に示すように、内部バッファ８４０から復号された論理プログラムデータを読み出し、その真正性が確認された場合にコンフィグ制御回路８００に論理プログラムデータを送信する（Ｓ１２〜Ｓ１３）。
【００２２】
（Ｓ１４：ユーザ回路を構築）
論理プログラムデータは、インタフェース２５０、セレクタ２３０を通じてメモリ制御回路４１０へ送られ、メモリ制御回路４１０によってコンフィグメモリ４００に書き込まれる。論理プログラムデータをコンフィグメモリ４００に書き込むことで、ユーザ回路９００がユーザロジック領域３２０内に構築される（Ｓ１４）。
【００２３】
（Ｓ１５：内部バッファ内のデータを破棄）
検証に失敗した場合は、内部バッファ８４０内のデータは破棄される（Ｓ１５）。これによって、誤りや悪意のある論理プログラムが再構成可能デバイス１００上に構築されることを防ぐことができる。
【００２４】
（Ｓ１６：複数のユーザ回路を構築）
図８は、図７に示す再構成可能論理デバイスに複数のユーザ回路を構築した状態で示すブロック図である。上述のＳ２からＳ１４を繰り返すことで、図８のように複数のユーザ回路を構築することができる。なお、ユーザ回路の大きさによっては、１つの回路に対してＳ２からＳ１４を繰り返すこともある（Ｓ１６）。
【００２５】
これにより、任意のアルゴリズムや暗号鍵を用いて、暗号化された論理プログラムデータを再構成可能論理デバイス上に構築することができる。鍵生成・復号・検証等の回路は、使用後は他の回路によって上書きされてもよいので、回路リソースの節約が可能となる。また、どのような回路を構築するかを自由に選択できるため、例えば、鍵生成・復号回路は構築するが検証回路は構築しないといった利用方法や、独自の演算回路を構築するといった利用方法が可能となる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態に係る再構成可能論理デバイスのブロック図である。
【図２】図１に示す再構成可能論理デバイスにコンフィグ制御回路８００を構築した状態で示すブロック図である。
【図３】図２に示す再構成可能論理デバイスに鍵生成回路８１０を構築した状態で示すブロック図である。
【図４】図３に示す再構成可能論理デバイスに復号回路８２０を構築した状態で示すブロック図である。
【図５】ユーザロジックの暗号化論理プログラムデータの復号を説明する図である。
【図６】図５に示す再構成可能論理デバイスに検証回路８３０を構築した状態で示すブロック図である。
【図７】図６に示す再構成可能論理デバイスにユーザ回路９００を構築した状態で示すブロック図である。
【図８】図７に示す再構成可能論理デバイスに複数のユーザ回路を構築した状態で示すブロック図である。
【図９】システムの動作を記述したフローチャートである。
【符号の説明】
【００２７】
１００  内部に回路を構築することのできる再構成可能デバイス（ＦＰＧＡ）
２００  固定領域
２１０  コンフィグレーションデータを読み込むためのインタフェース
２２０  復号回路
２３０  セレクタ
２５０  書換え領域から固定領域にデータを送るためのインタフェース
３００  書換え領域
３１０  制御ロジック領域
３２０  ユーザロジック領域
４００  コンフィグレーションメモリ（コンフィグメモリ）
４１０  メモリ制御回路
５００  デバイスＩＤを格納する内部記憶
５１０  鍵レジスタ
６００  プログラマブルＲＯＭ（ＰＲＯＭ）
７００  サーバ装置
７１０  ネットワーク
８００  コンフィグ制御回路
８１０  鍵生成回路
８２０  復号回路
８３０  検証回路
９００  ユーザ回路
９１０  ユーザ回路
【図１】
2010117968.tif 000003
【図２】
2010117968.tif 000004
【図３】
2010117968.tif 000005
【図４】
2010117968.tif 000006
【図５】
2010117968.tif 000007
【図６】
2010117968.tif 000008
【図７】
2010117968.tif 000009
【図８】
2010117968.tif 000010
【図９】
2010117968.tif 000011