(57)【要約】      （修正有）【課題】プログラム可能なゲートアレイ（ＦＰＧＡ）を搭載したシステムにおいて、ＦＰＧＡプログラムのコピーを防止する。【解決手段】あらかじめ半導体ベンダの工場にてプログラム済みのゲートアレイ（ＧＡ）４には、ブート制御回路１０、解読処理回路１３、判定回路１４およびあらかじめ決められた起動キー情報を有し、ＲＯＭ３にはユーザ回路２７を記憶したユーザ回路データ２４ならびに、認証回路データ２２とあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列２３を含んだ起動制御プログラムデータ２１を有する。ＧＡ４は、起動キー符号列２３が正しいと判断した場合にのみＲＯＭ３からのユーザ回路データ２４をＦＰＧＡ２にブートし、正しくないと判断した場合にはＦＰＧＡ２をリセットさせる。【選択図】  図４
2006059318.tif 000002
【特許請求の範囲】
【請求項１】
プログラム可能なゲートアレイ（ＦＰＧＡ）のコピー防止方法において、前記ＦＰＧＡと、ユーザ回路データを記憶したＲＯＭとに接続されたあらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用ゲートアレイ（ＧＡ）を備え、前記ＧＡにより前記ユーザ回路データを前記ＦＰＧＡにブートさせることを特徴とするプログラム可能なゲートアレイのコピー防止方法。
【請求項２】
前記ＧＡは、前記ＦＰＧＡから送られた第１の起動キー符号列を解読し、前記第１の起動キー符号列の解読結果と第１の起動キー情報とを比較判定し、判定結果が正しい場合には前記ユーザ回路データを前記ＦＰＧＡにブートし、前記判定結果が正しくない場合には前記ＦＰＧＡをリセットすることを特徴とする請求項１記載のプログラム可能なゲートアレイのコピー防止方法。
【請求項３】
前記ＧＡは、前記判定結果が正しい場合には前記ユーザ回路データを前記ＦＰＧＡにブートし、ユーザ回路を生成するとともに、さらに、前記ＦＰＧＡから送られた第２の起動キー符号列を解読し、前記第２の起動キー符号列の解読結果と第２の起動キー情報とを比較判定し、判定結果が正しい場合には、前記ユーザ回路の動作を続行させ、判定結果が正しくない場合には前記ＦＰＧＡをリセットすることを特徴とする請求項２記載のプログラム可能なゲートアレイのコピー防止方法。
【請求項４】
前記ＦＰＧＡから前記ＧＡに前記第２の起動キー符号列をさらに定期的な周期毎に、または不定期的な周期毎に送信し、前記ＧＡは送られた第２の起動キー符号列を解読し、前記第２の起動キー符号列の解読結果と第２の起動キー情報とを比較判定し、判定結果が正しい場合には、ユーザ回路の動作を続行させ、判定結果が正しくない場合には前記ＦＰＧＡをリセットすることを特徴とする請求項３記載のプログラム可能なゲートアレイのコピー防止方法。
【請求項５】
前記ＧＡは、さらにダミー通信回路を備え、前記ＦＰＧＡに生成されたダミー通信回路との間で通信することを特徴とする請求項３または請求項４に記載のプログラム可能なゲートアレイのコピー防止方法。
【請求項６】
前記ＧＡはさらにブートコントローラとして機能することを特徴とする請求項１乃至請求項５のいずれかに記載のプログラム可能なゲートアレイのコピー防止方法。
【請求項７】
前記ＧＡは複数のプログラム可能なゲートアレイ（ＦＰＧＡ）に対してそれぞれのユーザ回路データのブート、または前記ユーザ回路の動作を制御することを特徴とする請求項１乃至請求項６のいずれかに記載のプログラム可能なゲートアレイのコピー防止方法。
【請求項８】
プログラム可能なゲートアレイ（ＦＰＧＡ）を備えたシステムにおいて、前記ＦＰＧＡと、ユーザ回路データを記憶したＲＯＭとに接続されたユーザ専用のＧＡを備え、前記ＧＡは前記ユーザ回路データを前記ＦＰＧＡにブートさせる第１のブート回路を有することを特徴とするシステム。
【請求項９】
前記ＧＡは、前記ＦＰＧＡから送られた起動キー符号列を解読する解読処理回路、前記起動キー符号列の解読結果と起動キー情報とを比較判定する判定回路、前記判定回路の判定結果を入力され判定結果が正しくない場合には前記ＦＰＧＡをリセットし、判定結果が正しい場合には前記ユーザ回路データを前記ＦＰＧＡにブートまたはユーザ回路の動作を許可する第２ブート回路を有することを特徴とする請求項８記載のシステム。
【請求項１０】
前記ＧＡは、前記ＦＰＧＡから送られた第１の起動キー符号列の解読結果と比較される第１の起動キー情報を有することを特徴とする請求項９記載のシステム。
【請求項１１】
前記ＧＡは、さらに前記ＦＰＧＡから送られた第２の起動キー符号列の解読結果と比較される第２の起動キー情報を有することを特徴とする請求項９記載のシステム。
【請求項１２】
前記ＧＡは、さらに前記ＦＰＧＡに生成されたダミー通信回路との間で通信するダミー通信回路を備えたことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記ＧＡはさらにブートコントローラとして機能するブートコントローラを備えたことを特徴とする請求項８乃至請求項１２のいずれかに記載のシステム。
【請求項１４】
前記ＦＰＧＡが複数搭載されたことを特徴とする請求項８乃至請求項１３のいずれかに記載のシステム。
【請求項１５】
前記ＲＯＭを汎用フラッシュメモリに置き換えて実現したことを特徴とする請求項８乃至請求項１４のいずれかに記載のシステム。
【請求項１６】
前記ＲＯＭをミニディスク、光ディスクなどのストレージデバイスに代表されるデータ蓄積装置に置き換えて実現したことを特徴とする請求項８乃至請求項１４のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム可能なゲートアレイ（ＦＰＧＡ）を搭載したシステムに係り、ＦＰＧＡプログラムの不正コピーを防止するプログラム可能なゲートアレイのコピー防止方法及びシステムに関する。
【背景技術】
【０００２】
短期間にシステムを開発し、量産する方法として、ユーザサイドにおいてプログラムすることで内部回路をユーザ回路に変更可能なゲートアレイ（ＦＰＧＡ）の採用が最適であり、昨今急速に市場が伸びている。しかし、市場が広がるにつれて、不正にコピーされたシステムも見受けられようになってきた。プログラム可能なゲートアレイ（ＦＰＧＡ）はその供給ベンダから容易に購入できるし、ＦＰＧＡプログラムを記憶したＲＯＭもＲＯＭライタを用いて容易にコピーできることがその背景にある。
【０００３】
これらのプログラム可能なゲートアレイ（ＦＰＧＡ）のコピー防止技術として、下記の特許文献がある。これらの先行技術においては、プログラム等を暗号化して送信し、暗号化されたプログラムを復号化することで不正なコピーを防止している。
【０００４】
プログラム可能なゲートアレイ（ＦＰＧＡ）を搭載したシステムにおいては、少なくとも、プログラム可能なゲートアレイ（ＦＰＧＡ）と、そのＦＰＧＡプログラムを記憶したＲＯＭとが搭載されている。図１３、図１４に従来例のコピー防止のブロック構成を示す。
【０００５】
図１３に示すシステムは、プログラム可能なゲートアレイ（ＦＰＧＡ）２と、ＦＰＧＡプログラムを記憶したＲＯＭ３と、コピー防止の核になる構成要素である工場でプログラムされたロジック素子（ＣＰＬＤ）５とで構成されている。ロジック素子（ＣＰＬＤ）５はプログラム可能なゲートアレイ（ＦＰＧＡ）にのみ接続してあり、そのＦＰＧＡプログラムを記憶したＲＯＭ３とは接続がないのが配置上の特徴である。
【０００６】
ロジック素子（ＣＰＬＤ）５から暗号化された初期状態データをＦＰＧＡ２に送信し、ＦＰＧＡ２が暗号化された初期状態データを解読、比較判定し、動作を制限することでシステムの不正コピーを防止している。
【０００７】
また図１４に示すように、プログラム可能なゲートアレイ（ＦＰＧＡ）２と、ＦＰＧＡプログラムを記憶したＲＯＭ３とで構成されたシステムにおいて、ＦＰＧＡプログラムを記憶したＲＯＭプログラムを暗号化してＦＰＧＡに送信し、ＦＰＧＡにより暗号化されたプログラムを復号化することで不正なコピーを防止する先行技術が開示されている。
【０００８】
【特許文献１】特開２００３−８４８５３号公報
【特許文献２】特開２００１−３２５１５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、これらの従来技術においては、ＲＯＭプログラムや初期状態データを暗号化してＦＰＧＡに送信し、ＦＰＧＡで解読することで不正コピーを防止している。つまり、ＦＰＧＡにおいて解読処理及びその判定処理が行われているため、同じ復号機能を有するＦＰＧＡを購入することで不正コピーが行われる虞がある。
【００１０】
そこで本発明の目的は、プログラム可能なゲートアレイ（ＦＰＧＡ）を搭載したシステムに関し、不正コピーを許さないコピー防止方法及びシステムを提供することにある。
【課題を解決するための手段】
【００１１】
本願発明のプログラム可能なゲートアレイ（ＦＰＧＡ）のコピー防止方法は、前記ＦＰＧＡと、ユーザ回路データを記憶したＲＯＭとに接続されたユーザ専用のＧＡを備え、前記ＧＡにより前記ユーザ回路データを前記ＦＰＧＡにブートさせることを特徴とする。
【００１２】
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記ＧＡは、前記ＦＰＧＡから送られた第１の起動キー符号列を解読し、前記第１の起動キー符号列の解読結果と第１の起動キー情報とを比較判定し、判定結果が正しい場合には前記ユーザ回路データを前記ＦＰＧＡにブートし、前記判定結果が正しくない場合には前記ＦＰＧＡをリセットすることを特徴とする。
【００１３】
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記ＧＡは、前記判定結果が正しい場合には前記ユーザ回路データを前記ＦＰＧＡにブートし、ユーザ回路を生成するとともに、さらに、前記ＦＰＧＡから送られた第２の起動キー符号列を解読し、前記第２の起動キー符号列の解読結果と第２の起動キー情報とを比較判定し、判定結果が正しい場合には、前記ユーザ回路の動作を続行させ、判定結果が正しくない場合には前記ＦＰＧＡをリセットすることを特徴とする。
【００１４】
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記ＦＰＧＡから前記ＧＡに前記第２の起動キー符号列をさらに定期的な周期毎に、または不定期的な周期毎に送信し、前記ＧＡは送られた第２の起動キー符号列を解読し、前記第２の起動キー符号列の解読結果と第２の起動キー情報とを比較判定し、判定結果が正しい場合には、ユーザ回路の動作を続行させ、判定結果が正しくない場合には前記ＦＰＧＡをリセットすることを特徴とする。
【００１５】
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記ＧＡは、さらにダミー通信回路を備え、前記ＦＰＧＡに生成されたダミー通信回路との間で通信することを特徴とする。
【００１６】
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記ＧＡはさらにブートコントローラとして機能することを特徴とする。
【００１７】
本願発明のプログラム可能なゲートアレイのコピー防止方法においては、前記ＧＡは複数のプログラム可能なゲートアレイ（ＦＰＧＡ）に対してそれぞれのユーザ回路データのブート、または前記ユーザ回路の動作を制御することを特徴とする。
【００１８】
本願発明のシステムは、前記ＦＰＧＡと、ユーザ回路データを記憶したＲＯＭとに接続されたユーザ専用のＧＡを備え、前記ＧＡは前記ユーザ回路データを前記ＦＰＧＡにブートさせる第１のブート回路を有することを特徴とする。
【００１９】
本願発明のシステムにおいては、前記ＧＡは、前記ＦＰＧＡから送られた起動キー符号列を解読する解読処理回路、前記起動キー符号列の解読結果と起動キー情報とを比較判定する判定回路、前記判定回路の判定結果を入力され判定結果が正しくない場合には前記ＦＰＧＡをリセットし、判定結果が正しい場合には前記ユーザ回路データを前記ＦＰＧＡにブートまたはユーザ回路の動作を許可する第２ブート回路を有することを特徴とする。
【００２０】
本願発明のシステムにおいては、前記ＧＡは、前記ＦＰＧＡから送られた第１の起動キー符号列の解読結果と比較される第１の起動キー情報を有することを特徴とする。
【００２１】
本願発明のシステムにおいては、前記ＧＡは、さらに前記ＦＰＧＡから送られた第２の起動キー符号列の解読結果と比較される第２の起動キー情報を有することを特徴とする。
【００２２】
本願発明のシステムにおいては、前記ＧＡは、さらに前記ＦＰＧＡに生成されたダミー通信回路との間で通信するダミー通信回路を備えたことを特徴とする。
【００２３】
本願発明のシステムにおいては、前記ＧＡはさらにブートコントローラとして機能するブートコントローラを備えたことを特徴とする。
【００２４】
本願発明のシステムにおいては、前記ＦＰＧＡが複数搭載されたことを特徴とする。
【００２５】
本願発明のシステムにおいては、前記ＲＯＭを汎用フラッシュメモリに置き換えて実現したことを特徴とする。
【００２６】
本願発明のシステムにおいては、前記ＲＯＭをミニディスク、光ディスクなどのストレージデバイスに代表されるデータ蓄積装置に置き換えて実現したことを特徴とする。
【発明の効果】
【００２７】
本発明では、ユーザサイドでプログラム可能なゲートアレイ（ＦＰＧＡ）とユーザ回路データ（ＦＰＧＡプログラム）を記憶したＲＯＭとに接続されたユーザ専用のＧＡを配置している。あらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用のゲートアレイ（ＧＡ）はＦＰＧＡプログラムを記憶したＲＯＭからＦＰＧＡプログラムをブートする機能を制御している。具体的には、ＦＰＧＡとＲＯＭの間を接続しているＦＰＧＡのコンフィグレーションに必要な制御線を制御しており、ＲＯＭからみてＧＡはＦＰＧＡのように見え、ＦＰＧＡからＧＡはＲＯＭのように見えることを利用している。
【００２８】
このようにＧＡをＦＰＧＡとＲＯＭの中間に配置することにより、ＧＡのコピー防止のために必要な動作はブートの段階から実施できる。また、あらかじめ半導体ベンダの工場にてプログラム済みのゲートアレイ（ＧＡ）を保有していないと、ＦＰＧＡプログラムを記憶したＲＯＭからのＦＰＧＡプログラムのブートさえも実現できないのである。つまり、プログラム可能なゲートアレイ（ＦＰＧＡ）などのシステムを構成する部品を入手し、ＦＰＧＡプログラムを記憶したＲＯＭチップのコピーができたとしても、ＦＰＧＡプログラムを記憶したＲＯＭからＦＰＧＡプログラムをブートすることもできないのである。従って、あらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用のゲートアレイ（ＧＡ）を保有しない者にはまったくシステムのコピーはできないという効果がある。
【発明を実施するための最良の形態】
【００２９】
本発明の実施の形態について図面を参照して詳細に説明する。
【００３０】
（第１の実施の形態）
本発明の第１の実施の形態を図１に示す。システム１はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）２と、ゲートアレイ（ＧＡ）４と、ＲＯＭ（ＲＯＭ）３とで構成される。ＦＰＧＡ２はユーザ側で内部論理をプログラムにより変更できる汎用のゲートアレイである。ＧＡ４はあらかじめ半導体ベンダの工場にてプログラムされたユーザ専用のゲートアレイである。ＲＯＭ３はＦＰＧＡ４の論理回路をユーザの希望する回路に変更するためのユーザ回路データ（ＦＰＧＡプログラムとも呼称される）を記憶したＲＯＭである。
【００３１】
ＧＡ４を、ＲＯＭ３とＦＰＧＡ２との間に配置し、ＧＡ４は、ユーザ回路データをＲＯＭ３からＦＰＧＡ２にブートする機能を制御するものである。
【００３２】
ＧＡ４は、ブート制御回路１０、解読処理回路１３、判定回路１４および起動キー情報１５から構成されている。ＲＯＭ３はユーザ回路データ２４を記憶したユーザプログラムデータ２０と、認証回路データ２２とあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列２３とを含んだ起動制御プログラムデータ２１と、を備えている。
【００３３】
このシステムに電源が投入されると、ＧＡ４はＲＯＭから認証回路データ２２と暗号化された起動キー符号列２３を含む起動制御プログラムデータ２１を受けとり、ＦＰＧＡにブートする。ブートが完了するとＦＰＧＡ２には認証回路データ２２に従って認証回路が生成され、その認証回路から、ＲＯＭからの送られた起動キー符号列をＧＡに送信する。ＧＡの解読処理回路は起動キー符号列を解読し、その解読結果を判定回路に送り、判定回路は解読結果をあらかじめ決められた起動キー情報と比較判定する。
【００３４】
判定回路は正しいと判定すると、ブート制御回路を動作させ、ユーザ回路データをブートし、ブートが完了すると、ＦＰＧＡにはユーザ回路が生成される。一方、判定回路は解読結果をあらかじめ決められた起動キー情報と比較判定し、正しくないとの判定を得たならば、ブート制御回路はＦＰＧＡにリセットをかける。
【００３５】
ＦＰＧＡ２とユーザ回路データ（ＦＰＧＡプログラムとも呼称される）を記憶したＲＯＭ３の間に、ユーザ専用ＧＡ４を配置し、ユーザ専用ＧＡにより、起動キー符号列の判定を行い、判定結果が正しいことを確認した後にユーザ回路データをブートする。正しい起動キー情報を保有する者にはユーザ回路は正常に動作するが、起動キー情報を有しないまたは正しくない起動キー情報であればユーザ回路は動作しない。つまり、正しい起動キー情報を備えたユーザ専用ＧＡを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。言い換えれば、システムの不正コピーを行うとする者はユーザ専用ＧＡを入手できないため、システムのコピーは成立しない。
【実施例１】
【００３６】
本発明の実施例１の構成について図２〜５を参照して詳細に説明する。図２に実施例１の構成図、図３、４、５には本実施例の動作手順を示している。
【００３７】
図２に示すように、実施例１のシステム１はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）２と、ゲートアレイ（ＧＡ）４と、ＲＯＭ（ＲＯＭ）３とで構成されている。
【００３８】
ＦＰＧＡ２はユーザ側において内部論理回路をプログラムにより変更できる汎用のゲートアレイである。ＧＡ４はあらかじめ半導体ベンダの工場にてプログラムされたユーザ専用のゲートアレイである。ＲＯＭ３はＦＰＧＡ４の論理回路をユーザの希望する回路に変更するためのユーザ回路データ２４（ＦＰＧＡプログラムとも呼称される）を記憶したＲＯＭである。
【００３９】
ＧＡ４をＲＯＭ３とＦＰＧＡ２との間に配置し、それぞれと接続する。ＧＡ４は起動キー符号列の正否を判定する機能と、ユーザ回路データをＲＯＭ３からＦＰＧＡ２にブートする機能とを備えているものである。ＧＡ４には、ブート制御回路１０、解読処理回路１３、判定回路１４および起動キー情報１５から構成されている。ブート制御回路１０は第１ブート回路１１と、第２ブート回路１２とを備えている。
【００４０】
ＲＯＭ３はユーザ回路データ２４を記憶したユーザプログラムデータ２０と、認証回路２２とあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列２３とを含んだ起動制御プログラムデータ２１と、を備えている。
【００４１】
このシステムの電源投入後、ＧＡ４の第１ブート回路１１が動作し、ＲＯＭ３の起動制御プログラム２１をＦＰＧＡ２にブートする。ブートが完了すると、図３に示すようにＦＰＧＡ２には、ＲＯＭ３の起動キー符号列２３と同じ符号列を有する起動キー符号列２６と、認証回路２５とが生成される。認証回路２５は起動キー符号列２６をＧＡ４に送信する。
【００４２】
ＧＡ４の解読処理回路１３は送信された起動キー符号列２６を解読して、解読結果を判定回路１４に送付する。判定回路１４はあらかじめ決められた起動キー情報１５と解読結果とを比較判定し、同じでないと判定すれば、第２ブート回路によりＦＰＧＡをリセットする。
【００４３】
同じと判定すれば、ブート制御回路の中の第２ブート回路１２を動作させる。第２ブート回路１２はＲＯＭ３からユーザ回路データ２４をブートする。ブートが完了するとＦＰＧＡ２内にはユーザ回路データが生成、保持される。このユーザ回路データに従って、ＦＰＧＡの論理回路は図４に示すようにユーザの希望するユーザ回路２７を構成することになる。
【００４４】
今までに説明した動作手順を図５にて示す。Ｓ−１にて第１ブート回路１１が動作したことにより、認証回路データ２２と起動キー符号列２３を含んだ起動制御プログラムデータ２１はＧＡ４に取り込まれる。Ｓ−２にてさらにＦＰＧＡ２にブートされる。ＦＰＧＡ２へのブートが終了するとＦＰＧＡ２には認証回路データ２２に従って認証回路２５が生成され、起動キー符号列２３と同じ配列の起動キー符号列２６がコピー生成される。生成された起動キー符号列２６がＳ−３においてＧＡ４に送信される。
【００４５】
ＧＡ４の解読処理回路１３は送信されてきた起動キー符号列２６を解読して判定回路１４に送信し、判定回路１４はＳ−４にて起動キー情報１５と比較判定する。Ｓ−５にて判定回路１４は第２ブート回路１２に判定結果を送り、第２ブート回路１２は判定結果が同じでないと判定した場合には、Ｓ−６としてＦＰＧＡ２にリセットをかける。
【００４６】
判定結果が同じと判定すれば、ブート制御回路１０の第２ブート回路１２は、Ｓ−７にてＲＯＭ３に対しユーザプログラムデータ２０のブートを要求し、Ｓ−８のタイミングにてＦＰＧＡ２にブートする。ユーザ回路データ２４がブートされるとＦＰＧＡ２内のＲＡＭ（図示せず）にユーザ回路データ２７が生成、保持される。ＦＰＧＡの論理回路はユーザ回路データに従って、ユーザの希望するユーザ回路２７を構成し、動作を開始することになる。
【００４７】
本実施例によれば、ユーザ専用のＧＡはあらかじめ決められた起動キーを非公開暗号鍵にて暗号化した起動キー符号列が正しいかどうかの判定し、正しい場合には、ＦＰＧＡにユーザ回路データをブートさせることでＦＰＧＡにユーザ回路を構成する。起動キー符号列が正しくない場合にはユーザ回路データをブートしない。つまり、正しい起動キー情報を備えたユーザ専用ＧＡを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。
【実施例２】
【００４８】
更にコピー防止機能を強化した実施例２を図６、図７にて説明する。本実施例は実施例１の起動キー符号列を第１の起動キー符号列とし第１の判定を行い、さらに第２の起動キー符号列を追加し、第２の判定を行うことでコピー防止機能を強化したものである。実施例１と同じブロックには同一符号としてその説明を省略する。
【００４９】
あらかじめ半導体ベンダの工場にてプログラム済みのユーザ専用のゲートアレイ（ＧＡ）４は、ＲＯＭ３とＦＰＧＡ２との間に配置され、第１ブート回路１１と第２ブート回路１２からなるブート制御回路１０、解読処理回路１３、判定回路１４、あらかじめ決められた第１の起動キー情報１６および第２の起動キー情報１７とを備えている。
【００５０】
ＦＰＧＡプログラムを記憶したＲＯＭ（ＲＯＭ）３は、ユーザプログラムデータ２０と起動制御プログラムデータ２１により構成されている。ユーザプログラムデータ２０は、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第２の起動キー符号列３３、第２の認証回路データ３１、およびユーザ回路データ２４を含んでいる。起動制御プログラムデータ２１は、第１の認証回路データ３０と、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第１の起動キー符号列３２を含んでいる。
【００５１】
ユーザ側で内部論理をユーザ回路にプログラムにより変更できるＦＰＧＡ２には、第１の認証回路３４、第１の起動キー符号列３６、ユーザ回路２７、第２の認証回路３５、第２の起動キー符号列３７がＲＯＭからのプログラムデータにより生成、構成される。
【００５２】
動作を図７にて説明する。このシステムの電源投入後、Ｓ−１〜Ｓ−６の動作手順までは実施例１の認証回路、起動キー符号列、起動キー情報が第１の認証回路、第１の起動キー符号列、第１の起動キー情報に変わるのみで基本的な動作は第１の実施例と同じであるため説明を省略する。
【００５３】
判定回路１４における第１の起動キー符号列と第１の起動キー情報との判定結果が同じでない場合はＳ−６としてＦＰＧＡがリセットされる。一方判定結果が同じ場合は、ブート制御回路１０の第２ブート回路１２は、Ｓ−７にてＲＯＭ３に対しユーザプログラムデータ２０のブートを要求しＧＡ４に取り込み、Ｓ−８のタイミングにてＦＰＧＡ２に送信する。
【００５４】
ブートが完了するとＦＰＧＡ２には、第２の認証回路３５と、第２の起動キー符号列３７と、ユーザ回路データに従ってユーザ回路２７とが生成、構成される。ユーザ回路２７は動作を行い、第２の認証回路３５は第２の起動キー符号列３７をＳ−９にてＧＡ４に送信する。ＧＡ４の解読処理回路１３は第２の起動キー符号列３７を解読して、解読結果を判定回路１４に送付する。判定回路１４は、Ｓ−１０にて第２の起動キー情報１７を読み込み、第２の起動キー符号列３７の解読結果と比較判定を行う。
【００５５】
Ｓ−１１にて判定結果を第２のブート回路１２に送信する。第２のブート回路１２は比較判定の結果が、同じ起動キーであれば何も行わないが、同じ起動キーでないと、ＦＰＧＡにリセットをかける（Ｓ−１２）。あらかじめ決められた第２の起動キー符号列３７が正しくないと、ユーザ回路が動作していてもＧＡはＦＰＧＡにリセットをかけてユーザ回路２７等を消去してしまう。
【００５６】
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第１及び第２の起動キー符号列が正しいかどうかの判定をユーザ専用のＧＡで判定する。最初に第１の起動キー符号列を判定し、正しい場合には、ＦＰＧＡにユーザ回路データをブートすることでＦＰＧＡはユーザ回路を生成、構成する。
【００５７】
さらに第２の起動キー符号列を判定し、正しい場合にはユーザ回路をそのまま動作させ続ける。一方、第１の起動キー符号列が正しくない場合にはユーザ回路データをブートしない。第２の起動キー符号列が正しくない場合には構成されているユーザ回路を取り消す。つまり、正しい第１および第２の起動キー符号列を備えたユーザ専用ＧＡを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。この実施例では、第１及び第２の起動キー符号列による判定の２重化することで、不正コピーを行うとする者のシステムの解析を困難にしている。
【実施例３】
【００５８】
更に第３の例を説明する。この実施例の構成は実施例２と同じであるが、動作は、ＦＰＧＡ２に生成された第２の認証回路３５はＧＡ４に対し、起動キー符号列３７を定期的な周期毎または不定期的な周期毎に送信することが特徴である。これは実施例２における一連のＳ−１〜Ｓ−１２の動作の後にさらにＳ−９〜Ｓ−１２の動作を繰り返し行うものである。
【００５９】
Ｓ−９〜Ｓ−１２での起動キー符号列３７をＧＡ４への送信、第２の起動キー情報１７との比較判定し、不正データであればＦＰＧＡをリセットさせる動作を定期的な周期毎または不定期的な周期毎に行うことである。ＧＡ４は実施例２と同じように解読処理の後に判定処理を行い、解読された起動キー符号列を起動キー情報１７と比較する。比較した結果、結果が同じでなければＦＰＧＡにリセットをかける（Ｓ−１２）。正しければ何も行わないため、ユーザ回路は動作を続ける。このリセットをかける機会が定期的な周期毎にまたは不定期な周期毎に与えられているのである。
【００６０】
この定期的な周期毎にまたは不定期な周期毎に送信・解読・比較判定することに用いる起動キー情報は２つに限らず実使用上可能なｎ個まで種類を増やすこともできる。なお、第２の認証回路はユーザ回路から独立しており、第２の認証回路がＧＡとの送信のための動作を繰り返し行ってもユーザ回路の性能には影響を与えない。
【００６１】
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第１及び第２の起動キー符号列が正しいかどうかの判定をユーザ専用のＧＡで判定する。最初に第１の起動キー符号列を判定し、正しい場合には、ＦＰＧＡにユーザ回路データをブートすることでＦＰＧＡはユーザ回路を構成する。さらに第２の起動キー符号列を判定し、正しい場合にはユーザ回路の動作を続行させる。
【００６２】
一方第１の起動キー符号列が正しくない場合にはユーザ回路データをブートしない。第２の起動キー符号列が正しくない場合には構成されているユーザ回路を取り消す。さらにユーザ回路が動作中にも第２の起動キー符号列により判定を繰り返し行い第２の起動キー符号列が正しくない場合には構成されているユーザ回路を取り消す。
【００６３】
実施例３と同様、正しい第１および第２の起動キー符号列を備えたユーザ専用ＧＡを保有する者のみがシステムの動作を許されるが、そうでない者にはシステムは動作しない。第１及び第２の起動キー符号列により判定を２重化し、さらにユーザ回路が動作中にも第２の起動キー符号列により判定を繰り返し行うことで、不正コピーを行うとする者のシステムの解析を困難にしている。
【実施例４】
【００６４】
さらに実施例４を図８、図９に示す。この例では実施例２の構成に対し、ＲＯＭ３のユーザプログラムデータ２０、ゲートアレイＧＡ４、ＦＰＧＡ２に、それぞれダミー通信回路が追加して構成される。
【００６５】
図８に構成図、図９のその動作を示す。図９に示すように、この実施例４の動作はＳ−１からＳ−１２までの基本動作は実施例２と同じであり、さらにＳ−１３としてダミー通信する動作が追加されている。実施例２に比べて、Ｓ−８において、ＦＰＧＡにユーザプログラムデータがブートされたとき、ＦＰＧＡ２にはダミー通信回路４２がさらに追加生成される。ユーザプログラムデータによるユーザ回路が動作すると同時に、Ｓ−９以降の第２の起動キー符号列の判定動作とともに、ＦＰＧＡに生成されたダミー通信回路４２はＧＡのダミー通信回路４１と通信を行うＳ−１３の動作が追加されたことが特徴である。
【００６６】
これは、ＦＰＧＡ２とＧＡ４の通信をモニタ、解析し、コピー品を製作しようとする者に対してはＦＰＧＡとＧＡと結ぶ電気信号が複雑化し、より解析が困難になることを狙っている。この通信はユーザ回路の機能や認証回路から独立しており、アルゴリズム、信号数、タイミングは任意に決めることができる。
【００６７】
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第１及び第２の起動キー符号列が正しいかどうかの判定することで不正コピーを防止するとともに、ダミー通信回路を設けて、ＦＰＧＡとＧＡ間の通信を行うことで複雑化させ、不正コピーを行うとする者のシステムの解析を困難にすることでシステムの不正コピーを防止する。
【実施例５】
【００６８】
さらに第５の実施例は実施例３と実施例４を組み合わせたものである。この実施例５は、Ｓ−８においてブートが完了した後のＦＰＧＡに生成される回路構成は実施例４（図９）と同じある。その動作は実施例４におけるＳ−１〜Ｓ−１３の動作の他に、Ｓ−１３のダミー通信を行うとともに、Ｓ−９〜Ｓ１２の第２の起動キー符号列３７を定期的な周期毎または不定期的な周期毎に送信し、判定する動作を並列して行う。
【００６９】
実施例５の動作は、ユーザ回路がＦＰＧＡにおいて生成され動作すると、ＦＰＧＡ２のダミー通信回路４２はＧＡ４のダミー通信回路４１と通信を行う。さらに第２の認証回路３５はＧＡ４に対し、第２の起動キー符号列３７を定期的な周期毎または不定期的な周期毎に送信する。ＧＡ４は定期的な周期毎または不定期的な周期毎に解読処理、判定処理を行い、解読された起動キーがあらかじめ決められた起動キー情報と同じでなければ、ユーザ回路が動作していてもＦＰＧＡをリセットする。
【００７０】
本実施例によれば、あらかじめ決められた起動キーを非公開暗号鍵にて暗号化した第１及び第２の起動キー符号列が正しいかどうかの判定することで不正コピーを防止するとともに、第２の起動キー符号列により判定を繰り返し行い、さらにダミー通信回路を設けて、ＦＰＧＡとＧＡ間の通信を行うことで複雑化させ、不正コピーを行うとする者のシステムの解析を困難にすることでシステムの不正コピーを防止する。
【実施例６】
【００７１】
さらに実施例６について説明する。実施例６における構成は実施例１に比べて、ＧＡ４にはブートコントローラ機能を備えたブートコントローラ回路１８を有していることが異なるのみで、他は実施例１と同じである。図１０に実施例１にブートコントローラ回路１８は付加した場合の動作を示す。
【００７２】
ブートコントローラ回路１８はシステム１において必要な場合は電源の投入順序や切断順序、アドレス制御やプログラム変換等の制御を行うものである。図１０においてブートコントローラ回路１８の制御のもとで、電源がブートコントローラ１８の制御により順次投入され、また電源切断時にもブートコントローラ１８の制御により順次電源が切断される。
【００７３】
電源がブートコントローラ１８の制御により順次投入されたあと、および電源切断前のＲＯＭ３、ＧＡ４，ＦＰＧＡ２の動作については実施例１におけるＳ−１〜Ｓ−８と同一であり、説明を省略する。実施例６においても実施例１と同様のＳ−１〜Ｓ−８の動作手順によりユーザ回路データの不正コピーが防止できる。
【００７４】
さらに本実施例においてはブートコントローラをＧＡに内蔵させ、電源投入順序、プログラム変換機能等をユーザ独自仕様とすることにより、不正コピーに対しては電源投入すら困難にすることで、より強固な不正コピーを防止できるシステムを構築することができる。
【００７５】
また、本実施例においては実施例１のＧＡにブートコントローラ回路１８を追加したが、他の実施例２〜５にも適用できることは勿論である。
【実施例７】
【００７６】
さらに実施例７について図１１を用いて説明する。この実施例では前記ＲＯＭを汎用フラッシュメモリ４３に置き換えている。この実施例でのゲートアレイ（ＧＡ）４の構成は図２に示すゲートアレイ（４）と同じ構成（図１１には記載せず）のうえに、さらにデータ変換４４を保有している。
【００７７】
この実施例の動作を以下に示す。動作は実施例１と同じであり、実施例１と同じ起動制御プログラム２１のＧＡ４への取り込み、ＦＰＧＡ２へのブート、ＦＰＧＡ２の中に認証回路２５の生成、起動キー符号列２６のＧＡ４への送信、ＧＡ４においての比較判定などの一連の動作は同じである。この実施例の特徴はゲートアレイ（ＧＡ）４にデータ変換４４を付加している点である。汎用フラッシュメモリは汎用であるがゆえに、データバスやアドレスバスは規定されている。
【００７８】
汎用フラッシュメモリ４３と実施例１で示すゲートアレイ４のブート制御回路１０などが接続できるようにするために、このデータ変換４４はＧＡ４と汎用フラッシュメモリ４３の間でのアドレスデータとデータを変換するものである。汎用フラッシュメモリには各社からさまざまな製品が公開されていますし、ゲートアレイはカスタムＬＳＩ製品であるため、ＧＡ４と汎用フラッシュメモリ４３との接続が、円滑に行われれば、データ変換４４をなくすこともできる。
【００７９】
本実施例は、ＲＯＭ３を汎用フラッシュメモリに置換した実施例である。汎用フラッシュメモリを用いることでも、不正コピーを許さないコピー防止方法及びシステムを構築することができる。
【実施例８】
【００８０】
さらに実施例８について図１２を用いて説明する。この実施例では前記ＲＯＭをデータ蓄積装置４５に置き換えている。この実施例でのゲートアレイ（ＧＡ）４の構成は図２に示すゲートアレイ（４）と同じ構成（図１２には記載せず）のうえに、さらにデータ変換４４を保有している。
【００８１】
この実施例の動作を以下に示す。この動作も実施例７と同じであり、起動制御プログラム２１のＧＡ４への取り込み、ＦＰＧＡ２へのブート、ＦＰＧＡ２の中に認証回路２５の生成、起動キー符号列２６のＧＡ４への送信、ＧＡ４においての比較判定などの一連の動作を行う。この実施例の特徴はゲートアレイ（ＧＡ）４にデータ変換４４を付加している点である。データ蓄積装置４５と実施例１で示すゲートアレイ４のブート制御回路１０などが接続できるようにするために、このデータ変換４４を設けている。データ蓄積装置は各社からさまざまな製品が公開されていますし、ゲートアレイはカスタムＬＳＩ製品であるため、ＧＡ４とデータ蓄積装置４５との接続が、円滑に行われれば、データ変換４４をなくすこともできる。
【００８２】
本実施例は、ＲＯＭ３をデータ蓄積装置に置換した実施例である。データ蓄積装置を用いることでも、不正コピーを許さないコピー防止方法及びシステムを構築することができる。
【００８３】
以上本願発明を実施例に基づき具体的に説明したが、本願発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えばシステム上に搭載したプログラム可能なゲートアレイ（ＦＰＧＡ）を複数個で構成すること、またＦＰＧＡおよびＲＯＭを複数個で構成すること、１個のＧＡまたは複数個のＧＡにて構成するように変更することも可能である。
【図面の簡単な説明】
【００８４】
【図１】本発明における基本ブロック図である。
【図２】本発明の実施例１の構成図である。
【図３】本発明の実施例１の動作を示す図である。
【図４】本発明の実施例１の動作を示す図である。
【図５】本発明の実施例１の動作を示す図である。
【図６】本発明の実施例２の構成図である。
【図７】本発明の実施例２の動作を示す図である。
【図８】本発明の実施例４の構成図である。
【図９】本発明の実施例４の動作を示す図である。
【図１０】本発明の実施例６の動作を示す図である。
【図１１】本発明の実施例７の構成図である。
【図１２】本発明の実施例８の構成図である。
【図１３】従来例１を示す図である。
【図１４】従来例２を示す図である。
【符号の説明】
【００８５】
１    システム
２    ＦＰＧＡ
３    ＲＯＭ
４    ＧＡ
５    ＣＰＬＤ
１０  ブート制御回路
１１  第１ブート回路
１２  第２ブート回路
１３  解読処理回路
１４  判定回路
１５  起動キー情報
１６  第１の起動キー情報
１７  第２の起動キー情報
１８  ブートコントローラ
２０    ユーザプログラムデータ
２１        起動制御プログラムデータ
２２        認証回路データ
２３、２６  起動キー符号列
２４        ユーザ回路データ
２５        認証回路
２７        ユーザ回路
３０        第１の認証回路データ
３１        第２の認証回路データ
３２、３６  第１の起動キー符号列
３３、３７  第２の起動キー符号列
３４        第１の認証回路
３５        第２の認証回路
４０        ダミー通信回路データ
４１、４２  ダミー通信回路
４３        汎用フラッシュメモリ
４４        データ変換
４５        データ蓄積装置
【図１】
2006059318.tif 000003
【図２】
2006059318.tif 000004
【図３】
2006059318.tif 000005
【図４】
2006059318.tif 000006
【図５】
2006059318.tif 000007
【図６】
2006059318.tif 000008
【図７】
2006059318.tif 000009
【図８】
2006059318.tif 000010
【図９】
2006059318.tif 000011
【図１０】
2006059318.tif 000012
【図１１】
2006059318.tif 000013
【図１２】
2006059318.tif 000014
【図１３】
2006059318.tif 000015
【図１４】
2006059318.tif 000016