(57)【要約】【課題】ＦＰＧＡのビットストリームが体現する回路の模倣を防止する手法を提供する。【解決手段】  回路情報作成システムは、制御対象とするＦＰＧＡの回路情報を記憶する第１のメモリ領域と、ＦＰＧＡにおける、回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけて記憶した第２のメモリ領域と、第１のメモリ領域に記憶された回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路を、ＦＰＧＡ上にダウンロードするダウンロード実行部と、ＦＰＧＡ上にダウンロードされた複数の回路それぞれの出力値を取得する取得部と、第２のメモリ領域に記憶された情報及び複数の回路の出力値に基づいて、複数の回路の中で未定義領域に挿入すべき回路を特定し、特定した回路の情報と未定義領域との接続関係を示す情報を、第１のメモリ領域に追加する更新部とを含む。【選択図】図１０
2018042136.tif 000002
【特許請求の範囲】
【請求項１】
制御対象とするＦＰＧＡの回路情報を記憶する第１のメモリ領域と、
前記ＦＰＧＡにおける、前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけて記憶した第２のメモリ領域と、
前記第１のメモリ領域に記憶された前記回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路を、前記ＦＰＧＡ上にダウンロードするダウンロード実行部と、
前記ＦＰＧＡ上にダウンロードされた前記複数の回路それぞれの出力値を取得する取得部と、
前記第２のメモリ領域に記憶された情報及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、特定した前記回路の情報と前記未定義領域との接続関係を示す情報を、前記第１のメモリ領域に追加する更新部と、
を有する回路情報作成システム。
【請求項２】
前記第１のメモリ領域に記憶される前記回路情報は前記複数の回路それぞれの出力値を取得するための入出力回路の情報を含み、前記更新部は、前記接続関係を示す情報を前記第１のメモリ領域に追加する際に、前記回路情報から前記入出力回路の情報を削除する請求項１記載の回路情報作成システム。
【請求項３】
前記更新部が前記接続関係を示す情報を前記第１のメモリ領域に追加した後に、前記第２のメモリ領域に記憶された前記情報が前記第２のメモリ領域から削除される請求項１又は２記載の回路情報作成システム。
【請求項４】
前記ダウンロード実行部、前記取得部、及び前記更新部は前記第２のメモリ領域に格納されたプログラムコードにより実現され、前記更新部が前記接続関係を示す情報を前記第１のメモリ領域に追加した後に、前記プログラムコードは前記第２のメモリ領域から削除される請求項１乃至３いずれか一項記載の回路情報作成システム。
【請求項５】
制御対象とするＦＰＧＡの回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路をメモリ領域から読み出して前記ＦＰＧＡ上にダウンロードし、
前記ＦＰＧＡ上にダウンロードされた前記複数の回路それぞれの出力値を取得し、
前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけた情報、及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、
特定した前記回路の情報と前記未定義領域との接続関係を示す情報を前記メモリ領域に追加する
処理をプロセッサに実行させる回路情報作成方法。
【請求項６】
制御対象とするＦＰＧＡの回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路をメモリ領域から読み出して前記ＦＰＧＡ上にダウンロードし、
前記ＦＰＧＡ上にダウンロードされた前記複数の回路それぞれの出力値を取得し、
前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけた情報、及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、
特定した前記回路の情報と前記未定義領域との接続関係を示す情報を前記メモリ領域に追加する
処理をプロセッサに実行させる回路情報作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、回路情報作成システム、回路情報作成方法、及び回路情報作成プログラムに関する。
【背景技術】
【０００２】
ＦＰＧＡ（Field-Programmable Gate Array）では、チップ製造後に所望の回路をプログラマブルに設計できる。例えばＸｉｌｉｎｘ社製のＦＰＧＡの場合、ルックアップテーブルにより入出力関係を規定できるＣＬＢ（Configurable Logic Block）と呼ばれる論理ブロックを基本構成要素とし、複数個のＣＬＢが格子状に配置されている。それぞれのＣＬＢの入出力関係及び複数のＣＬＢ間の接続関係を回路情報により規定することにより、所望の動作をする回路を構成することができる。
【０００３】
ＣＬＢのルックアップテーブルは、基本的にアドレス値を入力としてメモリ値を出力とするＳＲＡＭ（Static Random Access Memory）で構成されているため、揮発性である。またＣＬＢ間の接続関係も、ＳＲＡＭのデータで制御されるトランジスタのオン・オフにより規定されているため、揮発性である。そこで、不揮発であるＰＲＯＭ（Programmable Read Only Memory）に回路情報（ビットストリーム）を格納しておき、電源オン時にＰＲＯＭから読み出したビットストリームをＦＰＧＡにダウンロードすることにより、所望の回路を構築する。
【０００４】
ＦＰＧＡの機能部分の回路を設計する者（正規メーカー）にとって、回路構成を体現したビットストリームは最重要資産といえる。仮に、攻撃者がＦＰＧＡチップ（正確にはＰＲＯＭ）内部を解析し、ビットストリームを盗むことができたとする。その場合、攻撃者は、盗んだビットストリームをコピーして再販売したり、盗んだビットストリームを自身のＦＰＧＡシステムに格納し、自身のデバイスとして販売したりすることができる。これにより、開発に費用と時間をかけて設計した回路の模造品を不正に使用されることになり、正規メーカーにとって大きな損失となる。上記を鑑み，ビットストリームを攻撃者に盗まれない手法の確立がチップの正規メーカーによって望まれている。
【０００５】
攻撃者によるビットストリームの解析及び盗難を防止する一手段として、ビットストリームを暗号化するというアプローチが一般に知られている（例えば非特許文献１参照）。例えば、不揮発メモリに格納されたビットストリームは、ＨＳＭ（Hardware Security Module）内のＡＥＳ（Advanced Encryption Standard）秘密鍵で暗号化されている。デバイスの電源がオンになると、ＨＳＭからのビットストリームの読み出しと復号化が行われ、復号されたビットストリームがＦＰＧＡにダウンロードされる。ＨＳＭは耐タンパ性を有しており、ＨＳＭ内部のＡＥＳ秘密鍵を物理的な解析により不正に読みだすことは困難とされている。
【０００６】
しかし、サイドチャネル攻撃とよばれる手法により、ＦＰＧＡを含むデバイス内部の秘密鍵を特定可能であることが報告されている（例えば非特許文献２参照）。サイドチャネル攻撃とは、暗号処理モジュールから漏洩する電力や電磁波を観測して特殊な処理を行うことにより、暗号化に用いられている秘密鍵を特定する攻撃である。非特許文献２では、Ｘｉｌｉｎｘ社製のＶｉｒｔｅｘ−ＩＩＦＰＧＡ上の暗号鍵をサイドチャネル攻撃により解読し、ビットストリームの暗号化を解除できることが報告されている。
【０００７】
以上のように、秘密鍵が特定される可能性がある以上は、暗号化によってＦＰＧＡのビットストリームを完全に保護することはできない。即ち、ビットストリームを暗号化することによっては、ビットストリームが体現する回路の模倣を完全に防止することはできない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１５−１３９０１０号公報
【非特許文献】
【０００９】
【非特許文献１】Pawel Swierczynski, Marc Fyrbiak, Philipp Koppe, Amir Moradi, and Christof Paar, Interdiction in Practice - Hardware Trojan Against a High-Security USB Flash Drive, eprint 2015/768
【非特許文献２】Amir Moradi, Alessandro Barenghi, Timo Kasper, Christof Paar:On the vulnerability of FPGA bitstream encryption against power analysis attacks: extracting keys from xilinx Virtex-II FPGAs. ACM Conference on Computer and Communications Security 2011: 111-124
【発明の概要】
【発明が解決しようとする課題】
【００１０】
以上を鑑みると、ＦＰＧＡのビットストリームが体現する回路の模倣を防止する手法が望まれる。
【課題を解決するための手段】
【００１１】
回路情報作成システムは、制御対象とするＦＰＧＡの回路情報を記憶する第１のメモリ領域と、前記ＦＰＧＡにおける、前記回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値とを対応づけて記憶した第２のメモリ領域と、前記第１のメモリ領域に記憶された前記回路情報に含まれる、物理的クローン作製不能機能を有する複数の回路を、前記ＦＰＧＡ上にダウンロードするダウンロード実行部と、前記ＦＰＧＡ上にダウンロードされた前記複数の回路それぞれの出力値を取得する取得部と、前記第２のメモリ領域に記憶された情報及び前記複数の回路の前記出力値に基づいて、前記複数の回路の中で前記未定義領域に挿入すべき回路を特定し、特定した前記回路の情報と前記未定義領域との接続関係を示す情報を、前記第１のメモリ領域に追加する更新部とを有する。
【発明の効果】
【００１２】
少なくとも１つの実施例によれば、ＦＰＧＡのビットストリームが体現する回路の模倣を防止することができる。
【図面の簡単な説明】
【００１３】
【図１】ＲＳラッチの構成の一例を示す図である。
【図２】２入力に同一の値を印加したＲＳラッチの構成の一例を示す図である。
【図３】ＰＵＦにより模造を防止したチップの一例を示す図である。
【図４】ＰＵＦ回路とＸＯＲ回路とを組み合わせた回路の第１の機能を説明するための図である。
【図５】ＰＵＦ回路とＸＯＲ回路とを組み合わせた回路の第２の機能を説明するための図である。
【図６】半導体集積回路の構成の一部である機能回路の一例を示す図である。
【図７】図６の回路にＰＵＦ回路を組み込むことにより得られる回路の一例を示す図である。
【図８】回路情報作成システムのハードウェア構成の一例を示す図である。
【図９】回路情報作成システムの機能構成の一例を示す図である。
【図１０】回路情報作成システムの動作手順の一例を示すフローチャートである。
【図１１】回路情報作成システムの動作手順を説明するための図である。
【図１２】回路情報作成システムの動作手順を説明するための図である。
【図１３】回路情報作成システムの動作手順を説明するための図である。
【図１４】回路情報作成システムの動作手順を説明するための図である。
【図１５】回路情報作成システムの動作手順を説明するための図である。
【図１６】回路情報作成システムの動作手順を説明するための図である。
【図１７】回路情報作成システムの動作手順を説明するための図である。
【発明を実施するための形態】
【００１４】
最初に、本発明において用いる技術について添付の図面を用いて説明する。各図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００１５】
回路模倣を防止するためのクローン対策技術の１つに、ＰＵＦ（Physically Unclonable Function：物理的クローン作製不能機能）がある。ＰＵＦから生成される秘密情報は、顕微鏡などの解析を行った場合でも、値を特定することは困難である。
【００１６】
ＰＵＦ回路は、物理的クローン作製不能機能を有する回路であり、同一の回路構成のＰＵＦ回路を異なるデバイスに実装した場合、デバイス毎に固有の出力値（以下「個体別情報」と呼ぶ）を生成する回路である。入力無しで特定の出力を生成するＰＵＦと、入力有りで当該入力に応じた出力を生成する関数として機能するＰＵＦとがある。理想的なＰＵＦ回路は以下の特性を有する。まず第１の特性として、あるデバイス上に実装されたＰＵＦは、常に同一の個体別情報を出力する（再現性）。この場合、入力有りのＰＵＦであれば、同一の入力に対して、常に同一の個体別情報を出力する。次に第２の特性として、異なるデバイス上に実装されたＰＵＦ間では、全く異なる個体別情報を出力する（ユニーク性）。この場合、入力有りのＰＵＦであれば、同一の入力に対して、デバイス間で異なる個体別情報を出力する。
【００１７】
ＰＵＦは、デバイス毎のバラツキに起因するデバイス内の信号遅延や素子特性のわずかな違いを利用して出力を定める構成となっている。デバイスを偽造しようとする攻撃者が、デバイスを分解して内部構造を解析したところで、観察されるＰＵＦの回路構造はデバイス間で同一である。攻撃者が観察することの出来ないデバイス毎のバラツキに起因してＰＵＦの出力値が決定されるので、顕微鏡で観測しても攻撃者がＰＵＦの出力値を特定することは困難である。
【００１８】
以下に、ＰＵＦの回路構成の一例として、ＲＳラッチを利用したＰＵＦ（ラッチＰＵＦ）について説明する。
【００１９】
図１は、ＲＳラッチの構成の一例を示す図である。図１に示すＲＳラッチは、ＮＡＮＤ回路１０−１及び１０−２を含む。図１に示すＲＳラッチにおいて、Ｓ＝１且つＲ＝１のとき、出力値はそのまま保持される。即ち、Ｑ＝１且つ／Ｑ＝０であればそのままの状態が保持され、Ｑ＝０且つ／Ｑ＝１であればそのままの状態が保持される。Ｓ＝０且つＲ＝１のとき、出力値はセットされ、Ｑ＝１且つ／Ｑ＝０となる。Ｓ＝１且つＲ＝０のとき、出力値はリセットされ、Ｑ＝０且つ／Ｑ＝１となる。Ｓ＝０且つＲ＝０のとき、本来は互いには反対の論理であるべき出力値がＱ＝／Ｑ＝１となってしまうため、Ｓ＝０且つＲ＝０は禁止入力とされている。
【００２０】
図２は、２入力に同一の値を印加したＲＳラッチの構成の一例を示す図である。入力Ａ＝０のとき、出力Ｂ＝１且つＣ＝１となる。入力をＡ＝０からＡ＝１に変化させると、出力はＢ＝１且つＣ＝０の状態になるか、或いはＢ＝０且つＣ＝１の状態になる。どちらの状態に確定するかは、ＮＡＮＤ回路１０−１しＮＡＮＤ回路１０−２との素子特性の僅かな差異及び各配線間の遅延特性の差異等の回路特性のバラツキにより決定される。そこで、この回路特性のバラツキにより決定される出力状態をＰＵＦに利用することができる。
【００２１】
図２に示すようなＲＳラッチをN個チップ上に実装したラッチＰＵＦにおいては、Ｎ個のＲＳラッチのそれぞれが固有の素子特性に基づいて０又は１の値を出力する。したがって、Ｎ個のＲＳラッチを有するラッチＰＵＦは，Nビットのレスポンスを１通り出力することができる。
【００２２】
図３は、ＰＵＦにより模造を防止したチップの一例を示す図である。図３において、正規チップ１２は、認証用のＰＵＦ１２−１と機能回路１２−２を含む。正規チップ１２においては、認証用のＰＵＦ１２−１の出力に基づいて当該チップが正規品かどうかを確認する認証動作が実行され、認証が成功すると、機能回路１２−２による一般機能動作を実行することができる。機能回路１２−２は、正規チップ１２の想定される用途を実現するための機能を提供する部分であり、通信回路や映像・音声処理回路といった各種アプリケーション回路であってよい。
【００２３】
正規チップ１２に対して顕微鏡等を用いたリバースエンジニアリングにより回路レイアウトの解析を行い、正規チップ１２と完全に同一の回路構成を有する模造チップ１２Ａを製造したとする。この場合、模造チップ１２Ａは正規チップ１２と同一の回路構成を有していながらも、模造チップ１２ＡのＰＵＦ１２−１Ａは、正規チップ１２のＰＵＦ１２−１とは充分に高い確率で異なる値を出力することになる。ラッチＰＵＦのラッチの個数Ｎを充分に大きくすれば、偶然に値が一致する確率を無視できるくらいに小さくすることができる。従って、模造チップ１２Ａにおいては、認証動作に失敗し、機能回路１２−２Ａを動作させることはできない。
【００２４】
図３に示す構成では模造チップ１２Ａの正常動作を防止することができるが、機能回路１２−２の模造はできてしまう。従って、認証部分の回路と機能回路１２−２との分離ができてしまうと、機能回路１２−２のみを模造することにより、正常に動作する模造チップ１２Ａを製造できてしまう可能性がある。
【００２５】
機能回路自体の模造を防止する技術として、機能回路にＰＵＦを組み込む技術がある（特許文献１参照）。この技術では、所定の機能を実現するための入出力関係を有する機能回路において、少なくとも１つのＰＵＦ回路を機能回路内に組み込みながら当該入出力関係を実現する。より具体的には、機能回路の中の少なくとも１つのノードの信号値がＰＵＦ回路の出力に応じて変化するように、ＰＵＦ回路が機能回路に組み込まれている。そして、機能回路が前記所定の機能を実現するように、ＰＵＦ回路の出力が設定されている。
【００２６】
この構成において用いられるＰＵＦ回路は、その出力値を所望の値に設定可能なＰＵＦである。そのようなＰＵＦの一例として、ＨＣＩ−ＳＡ−ＰＵＦがある。ＨＣＩ−ＳＡ−ＰＵＦは、ＳＡ（センスアンプ）−ＰＵＦを改良したものである。センスアンプは、主にメモリセルからの電圧を増幅するために用いられる回路であり、２つの入力Ａ及びＢの大小を比較する回路である。例えばＡよりもＢの方が小さければ０を出力し、ＡよりもＢの方が大きければ１を出力する。殆ど値が等しいＡとＢをセンスアンプの入力とすると、各トランジスタ素子の閾値の僅かな違い等に応じて、センスアンプ出力が０又は１の何れかに定まる。
【００２７】
ＨＣＩ−ＳＡ−ＰＵＦでは、センスアンプをＬＳＩチップに実装する際にホットキャリア注入（Hot Carrier Injection：ＨＣＩ）を利用してトランジスタ素子の閾値電圧を上昇させることで、センスアンプの出力値を制御することが可能となる。即ち、センスアンプの出力が０又は１のどちらかになるように、回路の物理特性をＨＣＩにより設定することが可能となる。またＨＣＩを利用することにより、トランジスタ素子間に十分な閾値差を設定することができるので、１００％の再現性を実現することが可能となる。
【００２８】
このようなＨＣＩ−ＳＡ−ＰＵＦを機能回路に組み込んで所望の機能を実現するためには、機能回路中に存在する論理がＨＣＩ−ＳＡ−ＰＵＦの出力値により実現されるような回路構成とすればよい。
【００２９】
図４は、ＰＵＦ回路とＸＯＲ回路とを組み合わせた回路の第１の機能を説明するための図である。図４において、ＨＣＩ−ＳＡ−ＰＵＦ回路１５Ａの出力がＸＯＲ回路１６の一方の入力に印可されている。また入力端子からの入力信号ｉｎがＸＯＲ回路１６のもう一方の入力に印可されている。この回路構成により、入力信号ｉｎを反転して出力信号ｏｕｔとして出力する回路を実現することができる。この図４に示される回路を、機能回路中に本来存在するインバータの代わりに用いることができる。顕微鏡等により解析してもＨＣＩ−ＳＡ−ＰＵＦ回路の出力値を特定することはできないので、図４に示すＰＵＦ回路１５Ａ及びＸＯＲ回路１６の回路部分が、インバータであるか否かを外部から特定することはできない。
【００３０】
図５は、ＰＵＦ回路とＸＯＲ回路とを組み合わせた回路の第２の機能を説明するための図である。図５において、ＨＣＩ−ＳＡ−ＰＵＦ回路１５Ｂの出力がＸＯＲ回路１６の一方の入力に印可されている。また入力端子からの入力信号ｉｎがＸＯＲ回路１６のもう一方の入力に印可されている。この回路構成により、入力信号ｉｎをそのまま出力信号ｏｕｔとして出力する回路を実現することができる。この図５に示される回路を、機能回路中の本来は単純な接続配線部分に挿入することができる。顕微鏡等により解析してもＨＣＩ−ＳＡ−ＰＵＦ回路の出力値を特定することはできないので、図５に示すＰＵＦ回路１５Ｂ及び１６の回路部分が、入出力が同一の配線と等価であるか否かを外部から特定することはできない。
【００３１】
またＡＮＤ回路やＯＲ回路等の任意の論理ゲートを複数のＨＣＩ−ＳＡ−ＰＵＦ回路により実現することもできる。例えば、４個のＨＣＩ−ＳＡ−ＰＵＦ回路の４個の出力をセレクタ回路へ選択対象入力として印加し、論理演算対象の入力信号をセレクタ回路へ選択制御信号として印加する。この構成において、４個のＨＣＩ−ＳＡ−ＰＵＦ回路の４個の出力を適宜所望の値に設定することにより、ＡＮＤ論理、ＯＲ論理、ＮＡＮＤ論理、ＮＯＲ論理等の所望の論理を実現することができる。
【００３２】
前述のように、機能回路にＰＵＦ回路を組み込むことにより、偽造耐性を高めることができる。即ち、機能回路の中の少なくとも１つのノードの信号値がＰＵＦ回路の出力に応じて変化するように、ＰＵＦ回路が機能回路に組み込まれてよい。そして、機能回路が所定の機能を実現するように、ＰＵＦ回路の出力が設定されてよい。以下にそのようにＰＵＦ回路が組み込まれた機能回路の構成の一例を説明する。
【００３３】
図６は、半導体集積回路の構成の一部である機能回路の一例を示す図である。図６に示す回路は、ＫＡＳＵＭＩ暗号における非線形変換関数Ｓ７の２ビット目を出力する機能を有する回路である。半導体集積回路がＫＡＳＵＭＩの暗号関数を演算する回路である場合、図６に示す回路は半導体集積回路の一部分に相当する。
【００３４】
図６に示す非線形変換関数Ｓ７は７ビットＸ０乃至Ｘ６を入力として１ビットｙ２を出力する関数である。この関数を実現する非線形変換回路は、図６に示すように、インバータ２０及び２１、ＡＮＤ回路２２乃至２９、ＯＲ回路３０乃至３４、及び定数入力回路３５を含む。以下に説明するように、この非線形変換回路の中の少なくとも１つのノードの信号値がＰＵＦ回路の出力に応じて変化するように、ＰＵＦ回路を非線形変換回路に組み込む。その際、非線形変換回路が所定の機能（即ち変換関数Ｓ７の入出力関係を実現する機能）を実現するようにＰＵＦ回路の出力を設定する。
【００３５】
図７は、図６の回路にＰＵＦ回路を組み込むことにより得られる回路の一例を示す図である。図７において、図６と同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００３６】
図７の回路においては、図６のインバータ２０がＰＵＦ回路２０Ａ及びＸＯＲ回路２０Ｂで置き換えられ、インバータ２１がＰＵＦ回路２１Ａ及びＸＯＲ回路２１Ｂで置き換えられている。また更に、ＡＮＤ回路２６がＰＵＦ回路２６Ａ−１乃至２６Ａ−４及びセレクタ回路２６Ｂで置き換えられている。また配線途中にＰＵＦ回路３６Ａ乃至３８Ａ及びＸＯＲ回路３６Ｂ乃至３８Ｂが挿入されている。また更に、定数入力回路３５がＰＵＦ回路３５Ａで置き換えられている。図７の回路例において、各ＰＵＦ回路はＨＣＩ−ＳＡ−ＰＵＦ回路である。
【００３７】
図７に示されるＰＵＦ回路３８Ａ及びＸＯＲ回路３８Ｂは、機能回路の出力部分においてＸＯＲ回路による変換を加えるものである。ＰＵＦ回路３８Ａの定数出力は１であるので、図３の回路の出力ｙ２の反転信号である／ｙ２が図４の回路の出力となり、この／ｙ２が意図される目標の機能を実現する出力ということになる。／ｙ２ではなくｙ２が意図される目標の機能を実現する出力である場合には、ＰＵＦ回路３８Ａの定数出力は１ではなく０に設定される。
【００３８】
上述のように図７には、機能回路の構成の一例として、ＫＡＳＵＭＩ暗号における非線形変換関数Ｓ７を用い、関数Ｓ７にＰＵＦ回路を組み込む例を示した。このように機能回路中にＰＵＦ回路を組み込む構成により、偽造を防止することが可能となる。
【００３９】
このように機能回路中にＰＵＦ回路を組み込んで偽造防止を実現することはＡＳＩＣ（Application Specific Integrated Circuit）であれば可能である。ＡＳＩＣでは、回路中のトランジスタに対して所定の高電圧を印加することにより、ゲート絶縁膜にホットキャリアを意図的に注入して閾値電圧を操作することが可能である。しかしながらＣＬＢ等の所定の論理ブロックに基づいて論理を構築するＦＰＧＡの場合には、そのように閾値電圧を操作することは一般的にはできない。即ち、ＦＰＧＡ上にＰＵＦ回路を構築した場合には、当該ＰＵＦ回路の構築に用いられた論理ブロックの回路特性に応じて、ＰＵＦ回路の出力値がＦＰＧＡチップ毎に異なってしまう。従って偽造防止のために機能回路中にＰＵＦ回路を組み込む際には、この点について対処することが必要となる。
【００４０】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。各図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００４１】
図８は、回路情報作成システムのハードウェア構成の一例を示す図である。図８に示す回路情報作成システムは、ＦＰＧＡ４０、ＣＰＵ４１、ＰＲＯＭ４２、不揮発メモリ４３、揮発メモリ４４、及びバス４５を含む。不揮発メモリ４３は、例えばフラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等の不揮発性のメモリであってよい。揮発メモリ４４は、例えばＤＲＡＭ（Dynamic Random Access Memory）等であってよく、ＣＰＵ４１が処理を実行する際の作業領域（ワークエリア）を提供してよい。
【００４２】
ＦＰＧＡ４０、ＣＰＵ４１、ＰＲＯＭ４２、不揮発メモリ４３、及び揮発メモリ４４は、それぞれのチップが一枚のプリント基板上に実装され、ＦＰＧＡ４０とＣＰＵ４１とが一体となったシステムとして提供されてよい。このシステムは、回路情報作成システムとして用いられると共に、ＦＰＧＡを利用する際にユーザ側でＦＰＧＡシステムとして用いられてよい。図８の構成例では、共通なバス４５により各チップが接続されているが、個別な接続経路により各チップを接続してもよい。
【００４３】
但し、回路情報作成システムは基板上に一体的に実装した形態に限定されるものではない。回路情報作成システムは、ＦＰＧＡ４０に回路を構築するためのＦＰＧＡ４０に固有の回路情報であるビットストリームを作成することができればよく、例えばＣＰＵ４１は、ＦＰＧＡ４０に接続されるホストコンピュータのＣＰＵであってよい。この場合、不揮発メモリ４３や揮発メモリ４４もホストコンピュータ側のデバイスであってよいし、不揮発メモリ４３は例えばホストコンピュータ側のハードディスクドライブ等の記憶装置であってもよい。また回路情報作成後には、ＦＰＧＡ４０と当該ＦＰＧＡ４０に固有の回路情報であるビットストリームとをユーザに提供することができればよく、ＦＰＧＡ４０とＰＲＯＭ４２とが一体的に基板上に実装されていてよいが、必ずしも一体的実装が必要なわけではない。
【００４４】
図９は、回路情報作成システムの機能構成の一例を示す図である。回路情報作成システム１００は、図８のＣＰＵ４１が揮発メモリ４４又は不揮発メモリ４３に格納されたプログラムを実行することにより実現されてよい。回路情報作成システム１００は、プログラム次実行により実現される機能ユニットして、ダウンロード実行部１０１、取得部１０２、及び更新部１０３を含んでよい。
【００４５】
図９において、各ボックスで示される各機能ブロック又は回路ブロックと他の機能ブロック又は回路ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。回路情報作成システム１００の各機能ブロックは、上述のようにソフトウェアとして実現されてよい。これらの各機能ブロックは、他のブロックと論理的にある程度分離された１つのソフトウェアモジュールであってもよいし、或いは他のブロックと論理的に一体となったソフトモジュール中の１つの機能を示したものであってもよい。
【００４６】
第１のメモリ領域４２Ａは、制御対象となるＦＰＧＡ４０の回路情報であるビットストリームを格納する領域であり、図８のＰＲＯＭ４２の記憶領域に相当する。第２のメモリ領域４３Ａは上記回路情報中において定義されていない未定義領域に関する情報を格納する領域であり、図８の不揮発メモリ４３の記憶領域に相当する。回路情報作成システム１００では、ＦＰＧＡ４０に構築する回路中にＰＵＦ回路を組み込むことにより、ＦＰＧＡ４０の回路情報に基づく回路の模倣や偽造を防止する。上記の未定義領域とは、ＦＰＧＡ４０に構築する回路中においてＰＵＦ回路が組み込まれることになる回路領域のことである。
【００４７】
ＦＰＧＡ４０に構築する回路に所望の機能を実現させるためには、未定義領域の位置にあるノードに所望の論理値を印加する必要があり、この所望の論理値をＰＵＦ回路の出力により提供する。第２のメモリ領域４３Ａは、ＦＰＧＡ４０における、回路情報で定義されていない未定義領域と該未定義領域から出力されるべき信号値（即ち上記ノードに印加されるべき論理値）とを対応づけて記憶する。
【００４８】
図７の機能回路の例で説明すると、例えばＰＵＦ回路３６Ａが組み込まれる回路領域（回路位置）には回路要素が定義されてなく、未定義領域となっており、ＸＯＲ回路３６Ｂの一方の入力のノードが何処にも接続されていない状態となっていてよい。第２のメモリ領域４３Ａには、ＰＵＦ回路３６Ａが組み込まれるべき未定義領域を示す情報（例えばＸＯＲ回路３６Ｂの一方の入力のノードを特定する情報）と、当該未定義領域から出力される信号値（当該ノードに印加されるべき論理値）とが記憶されている。これら未定義領域と信号値とは互いに対応付けて記憶されている。図７の例の場合、ＰＵＦ回路２０Ａ、２１Ａ、２６Ａ−１乃至２６Ａ−４、３５Ａ、３６Ａ、３７Ａ、及び３８Ａに対応する１０個の未定義領域のそれぞれに対して、未定義領域の位置を特定する情報と所望の信号値とが互いに対応付けて記憶されることになる。
【００４９】
ダウンロード実行部１０１は、第１のメモリ領域４２Ａに記憶された回路情報に含まれる複数のＰＵＦ回路を、ＦＰＧＡ４０上にダウンロードする。取得部１０２は、ＦＰＧＡ４０上にダウンロードされた複数のＰＵＦ回路それぞれの出力値を取得する。これにより、第１のメモリ領域４２Ａに記憶された回路情報が示す回路をＦＰＧＡ４０に構築したときに、当該回路中に組み込まれることになる複数のＰＵＦ回路が出力する論理値を事前に確認することが可能となる。
【００５０】
このダウンロード動作は、ＦＰＧＡ４０上に構築されたＰＵＦ回路の出力値を確認するための作業であり、第１のメモリ領域４２Ａに記憶された回路情報が示す機能回路をＦＰＧＡ４０上に構築して使用するためのユーザ実行動作時のダウンロード動作ではない。従って、第１のメモリ領域４２Ａに記憶された回路情報に含まれる複数のＰＵＦ回路をＦＰＧＡ４０上にダウンロードするが、ＰＵＦ回路が組み込まれる先となる機能回路部分をＦＰＧＡ４０上にダウンロードすることは必ずしも必要ではない。但し、ＰＵＦ回路が構築されるＦＰＧＡ４０上の領域（即ちＰＵＦ回路が実装される特定の論理ブロック）が、機能回路部分を含む回路情報の全体をＦＰＧＡ４０上に構築したときと同一の領域（即ち同一の論理ブロック）であることが必要である。何故ならば、ＰＵＦ回路を構築するＦＰＧＡ４０上の領域が確認動作時とユーザ実行動作時とで異なってしまうと、ＰＵＦ回路の出力値も確認動作時とユーザ実行動作時とで異なってしまうからである。
【００５１】
なおＦＰＧＡ４０上に構築するＰＵＦ回路の個数は、前述の未定義領域の数とは一対一に対応しなくてよい。１つのＰＵＦ回路の出力を複数の未定義領域の出力として共用してよいし、１つのＰＵＦ回路の出力を１つの未定義領域の出力にのみ使用してよい。また更には、複数のＰＵＦ回路の出力を１つの未定義領域の出力として共用してよい。ＰＵＦ回路の出力と未定義領域の出力とを一対一に対応付ける場合、ＦＰＧＡ４０上に構築するＰＵＦ回路の個数は未定義領域の数よりも多いことが一般に必要である。ＦＰＧＡ４０上に構築したＰＵＦ回路の出力値は、制御できない回路特性に応じて定まるので、未定義領域の数と等しい数のＰＵＦ回路を構築しても、未定義領域の出力の論理値として必要な数の０や１が生成されない可能性がある。従って、ＰＵＦ回路の出力と未定義領域の出力とを一対一に対応付ける場合、ＰＵＦ回路の数は未定義領域の数よりも充分に大きいことが好ましい。
【００５２】
更新部１０３は、第２のメモリ領域４３Ａに記憶された情報（未定義領域に関する情報）と、複数のＰＵＦ回路の確認された出力値とに基づいて、複数のＰＵＦ回路の中で未定義領域に挿入すべきＰＵＦ回路を特定する。第２のメモリ領域４３Ａに記憶された情報に基づいて、ＦＰＧＡ４０における回路中のある未定義領域と当該未定義領域から出力されるべき信号値とが分かるので、値が確認されたＰＵＦ回路の出力値を、当該信号値として用いるべきものとして特定できる。図７の機能回路の例の場合、例えばＰＵＦ回路３６Ａに対応する未定義領域の出力信号値は０であるので、出力値が確認された複数のＰＵＦ回路のうちで出力値が０である１つのＰＵＦ回路を当該未定義領域に挿入すべきものとして特定する。また例えばＰＵＦ回路３５Ａに対応する未定義領域の出力信号値は１であるので、出力値が確認された複数のＰＵＦ回路のうちで出力値が１である１つのＰＵＦ回路を当該未定義領域に挿入すべきものとして特定する。
【００５３】
更新部１０３は更に、上記のようにして特定したＰＵＦ回路の情報と未定義領域との接続関係を示す情報を、第１のメモリ領域４２Ａに追加することにより、回路情報を示すビットストリームを修正（更新）する。なお複数のＰＵＦ回路は、ＦＰＧＡ４０上において、ＰＵＦ回路が組み込まれる対象となる機能回路部中の未定義領域の位置とは別の位置の領域に構築されることになる。更新部１０３は、特定されたＰＵＦ回路の出力と未定義領域の接続ノードとの間を配線により接続するような回路情報（ストリームデータ）を生成し、当該回路情報を追加するように元の回路情報を更新する。
【００５４】
以下に、ＦＰＧＡデバイスが製造されて最終的にエンドユーザーの手に渡るまでを３つのフェーズに分けて説明する。第１のフェーズは製造フェーズであり、デバイスは、工場において製造した直後の状態にある。第２のフェーズは工場出荷前フェーズであり、デバイス製造後に信頼できる環境においてデバイスの調整を行う状態である。ここで信頼できる環境とは，攻撃者によるアクセスがないセキュアな環境であることを意味している。第３のフェーズはユーザ利用フェーズであり、デバイスが工場から出荷された後の状態であり、攻撃者がデバイスを入手すれば、デバイスに対して物理的な解析を自由に試みることができる状態である。
【００５５】
まず製造フェーズでの処理としては、ＦＰＧＡデバイス製造時に、ＰＲＯＭ４２に回路の設計情報（回路情報）をビットストリームとして格納する。格納される回路情報は、ＰＵＦ回路、接続回路、及び機能回路をＦＰＧＡ４０に構築するための構成データである。また不揮発メモリ４３には、未定義領域に関する情報を格納する。この未定義領域に関する情報は、機能回路の構成データ中にて定義されていない未定義領域と、該未定義領域から出力されるべき信号値とに関する情報である。
【００５６】
工場出荷フェーズでは、前述の図９において説明した回路情報作成システム１００の各機能ユニットの動作が実行される。具体的には、ＣＰＵ４１が不揮発メモリ４３に格納されたプログラムを読み出して実行することにより、ダウンロード実行部１０１、取得部１０２、及び更新部１０３の動作を実行する。
【００５７】
図１０は、回路情報作成システムの動作手順の一例を示すフローチャートである。なお図１０において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Ａステップの次にＢステップが実行されるように本願に説明されていたとしても、Ａステップの次にＢステップを実行することが可能なだけでなく、Ｂステップの次にＡステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Ｂステップの次にＡステップが実行されてもよいことは自明である。Ａステップの次にＢステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【００５８】
図１１乃至図１７は、回路情報作成システムの動作手順を説明するための図である。例えば図１１において、ＰＲＯＭ４２を示すブロックの内部には、ビットストリームとして格納されている回路情報（回路構成情報）が表現する回路の構成を模式的に示してある。ＰＲＯＭ４２に格納されるビットストリームが規定する回路は、前述のように、ＰＵＦ回路５０、接続回路５１、及び機能回路５２を含む。ビットストリームは更に、Ｉ／Ｆ回路５３を含む。
【００５９】
ＰＵＦ回路５０は、ラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５を含む。この例では５個のラッチＰＵＦ回路が設けられているが、このラッチＰＵＦ回路の個数は一例に過ぎず、機能回路５２中の未定義小域の数を考慮した充分な数であってよい。各ラッチＰＵＦ回路の出力値には記号「？」が示してあり、ＦＰＧＡ４０上に構築して実際に動作させない限りは出力値が不定であることを示している。なおＰＵＦ回路の形式はラッチＰＵＦ回路である必要はなく、ＰＵＦ１乃至ＰＵＦ５は物理的クローン作製不能機能を有する回路であればよい。
機能回路５２は、所望の機能を実現するための回路であり、例えば図７に示したＫＡＳＵＭＩ暗号における非線形変換関数Ｓ７を実現する回路を含んでよい。図１１では、図示の便宜のために簡略化された構成の機能回路を示してあり、この機能回路５２は一例として未定義領域５２−１乃至５２−５を含む。
【００６０】
接続回路５１は、機能回路５２中の未定義領域５２−１乃至５２−５とＰＵＦ回路５０のラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力とを接続する接続経路を提供する回路である。製造フェーズにおいてＰＲＯＭ４２に書き込まれるデータストリームにおいては、この接続経路は未だ規定されていない。
【００６１】
Ｉ／Ｆ回路５３は、ＦＰＧＡ４０上に構築されたラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力値を読み出すためのインターフェース回路である。Ｉ／Ｆ回路５３は、ＦＰＧＡ４０上で機能回路５２が動作するために必要な回路ではなく、ユーザ利用フェーズにおいては用いられることはない。
【００６２】
以下に、図１１乃至図１７を参照しながら、図１０に示される回路情報作成システムの動作手順について説明する。
【００６３】
ステップＳ１において、ＣＰＵ４１がＰＵＦ回路５０及びＩ／Ｆ回路５３のビットストリームをＰＲＯＭ４２から読み出す（図１１のＳＱ１−１）。ステップＳ２において、ＣＰＵ４１が、ステップＳ１において読み出したビットストリームをＦＰＧＡ４０にダウンロードする（図１１のＳＱ１−２）。
【００６４】
図１１において、ＦＰＧＡ４０を示すブロックの内部には、ビットストリームとしてダウンロードされた回路情報が表現する回路の構成を模式的に示してある。図１１においては、機能回路５２も便宜上示してあるが、ステップＳ１及びＳ２における読み出し及びダウンロードは、ＰＵＦ回路５０の出力値を確認することが目的であるので、機能回路５２の回路情報のダウンロードは必ずしも必要はない。但し、ユーザ利用フェーズ時となるべく同じ条件でＰＵＦ回路５０の出力値を確認するためには、機能回路５２の回路情報も読み出してダウンロードしてよい。接続回路５１については、ＰＵＦ回路５０とＩ／Ｆ回路５３との間の接続経路を提供するために接続回路５１を用いるのであれば、ステップＳ１及びＳ２において、接続回路５１の回路情報もＰＲＯＭ４２から読み出してＦＰＧＡ４０にダウンロードしてよい。
【００６５】
ステップＳ３において、ＣＰＵ４１は、ＦＰＧＡ４０上に構築されたラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力値をＩ／Ｆ回路５３を介して読み出し、ラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力値に関するテーブルを作成する（図１２のＳＱ２−１）。ステップＳ４において、ＣＰＵ４１は、作成したテーブル６０を揮発メモリ４４に格納する（図１２のＳＱ２−２）。図１２において、揮発メモリ４４を示すブロックの内部には、格納されたテーブル６０が模式的に示されている。テーブル６０には、各ラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５を特定する情報とそれぞれの出力値とが対応付けて格納されている。
【００６６】
なおラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力値をＩ／Ｆ回路５３を介して読み出す際には、ＣＰＵ４１は、ＦＰＧＡ４０上に構築された回路に初期状態を設定し、当該初期状態から回路の動作を開始させる。初期状態から回路の動作が開始されると、その後ラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力値が確定されるので、ＣＰＵ４１は、確定された出力値をＩ／Ｆ回路５３を介して読み出す。
【００６７】
ステップＳ５において、ＣＰＵ４１は、不揮発メモリ４３に格納されたマッピング情報７０と揮発メモリ４４に格納されたテーブル６０とを読み出す（図１３のＳＱ３−１及びＳＱ３−２）。図１３において、不揮発メモリ４３を示すブロックの内部には、製造フェーズで書き込まれたマッピング情報７０が模式的に示されている。マッピング情報７０は例えば、機能回路５２中の未定義領域５２−１乃至５２−５に対応するエントリ７０−１乃至７０−５を含むテーブルであってよい。エントリ７０−１乃至７０−５には、機能回路５２中の未定義領域５２−１乃至５２−５を特定する情報（回路中の位置を示す情報）と、該未定義領域から出力されるべき信号値を示す情報（論理値０又は１の何れかを示す情報）とが対応付けて格納されていてよい。図１３においては、位置情報と信号値情報とを分かりやすく２次元的に配置して模式的に示してある。
【００６８】
ステップＳ６において、ＣＰＵ４１は、テーブル６０とマッピング情報７０とに基づき、機能回路５２の未定義領域５２−１乃至５２−５にラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の何れを割り当てるのかを決定する。図１３において、ＣＰＵ４１を示すブロックの内部には、未定義領域５２−１乃至５２−５とラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５との間を接続回路５１により結線する様子が模式的に示されている。接続回路５１は、ラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の出力値を入力するポートＩ１乃至Ｉ５と、未定義領域５２−１乃至５２−５への信号値を出力するポートＯ１乃至Ｏ５とを含む。機能回路５２の未定義領域５２−１乃至５２−５にラッチＰＵＦ回路ＰＵＦ１乃至ＰＵＦ５の何れを割り当てるのかを決定することは、ポートＩ１乃至Ｉ５とポートＯ１乃至Ｏ５との間を接続する接続配線Ｃ１乃至Ｃ５を決定することに相当する。
【００６９】
ステップＳ７において、ＣＰＵ４１は、ＰＲＯＭ４２からビットストリームを読み出す（図１４のＳＱ４−１）。ステップＳ８において、ＣＰＵ４１は、接続配線Ｃ１乃至Ｃ５に関する回路情報（結線ロジック情報）を含めるように、読み出したビットストリームを更新する。またＣＰＵ４１は、接続配線Ｃ１乃至Ｃ５に関する回路情報を含めるように読み出したビットストリームを更新するとともに、読み出したビットストリームからＩ／Ｆ回路５３に関する回路情報を削除する。ステップＳ９において、ＣＰＵ４１は、更新後のビットストリームをＰＲＯＭ４２に書き込む（図１４のＳＱ４−２）。
【００７０】
ステップＳ１０において、ＣＰＵ４１は、不揮発メモリ４３に格納されているマッピング情報７０及びプログラムコードを削除するとともに（図１５のＳＱ５−１）、揮発メモリ４４に格納されているテーブル６０を削除する（図１５のＳＱ５−２）。なお揮発メモリ４４は、揮発性であるので電源オフすれば記憶内容は消去される。従ってテーブル６０を削除する動作を明示的に行わなくともよい。ＰＵＦ回路の出力をリバースエンジニアリングにより特定することは不可能なので、マッピング情報７０を削除してしまえば、未定義領域から出力されるべき信号値の情報を特定することは不可能となる。
【００７１】
上記ステップＳ１乃至Ｓ９の動作は、前記第２のメモリ領域に格納されたプログラムコードにより実現されるダウンロード実行部１０１、取得部１０２、及び更新部１０３により実行される。具体的には、ＣＰＵ４１が上記プログラムコードを実行することにより、ダウンロード実行部１０１、取得部１０２、及び更新部１０３の機能を実現する。このプログラムコードは、ＰＲＯＭ４２に格納されるビットストリームの作成に関する情報を含んでいるので、更新部１０３が更新したビットストリームをＰＲＯＭ４２に書き込んだ後、不揮発メモリ４３から削除されることが好ましい。削除するためには、例えば、上記プログラムコードは、削除用のプログラムコードを実行するプロセスを開始する命令を含み、当該命令を実行した後に自身の実行を終了するようにプログラムされていてよい。ＣＰＵ４１が削除プロセスを実行することにより、ダウンロード実行部１０１、取得部１０２、及び更新部１０３に相当するプログラムコードを削除してよい。或いは、外部からのコマンド入力により、削除プログラムを実行して上記プログラムコードを削除してよい。或いは外部からの削除コマンド入力により、上記プログラムコードを削除してよい。プログラムコードの削除の方法については特に限定されない。
【００７２】
図１６は、工場出荷フェーズの完了時におけるＦＰＧＡシステムの構成の一例を示す図である。図１６においては、マッピング情報７０、プログラムコード、及びＩ／Ｆ回路５３の回路情報が回路情報作成システムから削除されることにより、ユーザに提供するに適したＦＰＧＡシステムが完成されている。このＦＰＧＡシステムでは、ＰＲＯＭ４２に格納される回路情報において、接続回路５１の接続配線Ｃ１乃至Ｃ５が確定されており、ＰＵＦ回路５０から適切な論理値が機能回路５２中の未定義領域５２−１乃至５２−５に供給されるようになっている。
【００７３】
図１７は、ユーザ利用フェーズにおけるＦＰＧＡシステムの動作の一例を示す図である。ＦＰＧＡ４０利用時において、ＣＰＵ４１はＰＲＯＭ４２からデータストリームを読み出し（ＵＳＱ１）、読み出したデータストリームをＦＰＧＡ４０にダウンロードする（ＵＳＱ２）。これにより、ＦＰＧＡ４０上にＰＵＦ回路５０、接続回路５１、及び機能回路５２を構築し、所望の機能を実現する回路を実行することが可能となる。
【００７４】
ユーザ利用フェーズにおけるＦＰＧＡシステムを入手した場合、攻撃者は、ＰＲＯＭ４２を解析することにより、ビットストリームをコピーすることが可能である。しかしこのビットストリームを他のＦＰＧＡにダウンロードしたとしても、他のＦＰＧＡ上に構築されたＰＵＦ回路５０の出力値は、図１６のＦＰＧＡ４０上に構築されたＰＵＦ回路５０の出力値とは異なってしまう。従って、機能回路５２は設計通りに動作することができない。即ち、ＦＰＧＡ上で動作する機能回路５２の模倣には失敗することになる。
【００７５】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００７６】
４０  ＦＰＧＡ
４１  ＣＰＵ
４２  ＰＲＯＭ
４２Ａ  第１のメモリ領域
４３  不揮発メモリ
４３Ａ  第２のメモリ領域
４４  揮発メモリ
４５  バス
５０  ＰＵＦ回路
５１  接続回路
５２  機能回路
５３  Ｉ／Ｆ回路
１００  回路情報作成システム
１０１  ダウンロード実行部
１０２  取得部
１０３  更新部
【図１】
2018042136.tif 000003
【図２】
2018042136.tif 000004
【図３】
2018042136.tif 000005
【図４】
2018042136.tif 000006
【図５】
2018042136.tif 000007
【図６】
2018042136.tif 000008
【図７】
2018042136.tif 000009
【図８】
2018042136.tif 000010
【図９】
2018042136.tif 000011
【図１０】
2018042136.tif 000012
【図１１】
2018042136.tif 000013
【図１２】
2018042136.tif 000014
【図１３】
2018042136.tif 000015
【図１４】
2018042136.tif 000016
【図１５】
2018042136.tif 000017
【図１６】
2018042136.tif 000018
【図１７】
2018042136.tif 000019