説明

回路構成特定防止方法

【課題】構成回路の特定を簡易的な手段によって防止でき、かつ、必要作業発生時に困難を生ずる物理的な隠匿を回避できる回路構成特定防止方法を提供する。
【解決手段】FPGA12内の動作設定用の内部レジスタ群には、MPUからアドレス信号及びデータ信号が与えられると共に、選択信号がゲート回路22を介して入力される。FPGA12内の許可キー設定レジスタ23には、MPU等の外部回路によって許可キーが設定され、認証キー設定レジスタ24にはMPUによって認証キーが設定される。キー一致検出回路25は、許可キー設定レジスタ23に設定された許可キーと、認証キー設定レジスタ24に設定された認証キーとを比較し、不一致の場合にはゲート回路22を閉じて内部レジスタ群21のアクセスを禁止する。これにより第三者による回路の動作特定を困難とし、回路構成の特定及び不正コピーを防止する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、製品化された半導体集積回路等の回路構成の特定を防止する回路構成特定防止方法に関する。
【背景技術】
【0002】
近年、半導体集積回路は、機能変更が比較的安易なソフトウェア、FPGA(フィールド・プログラマブル・ゲート・アレイ)等のプログラマブルな開発手法を用いる分野への機能割り振りが増大し、システムの機能要求を実現している。この場合、MPU、FPGAといった一般的に入手可能な市販のデバイスを用いるため、そのプログラムの保護や、回路構成の特定を防止する技術が要求される。
【0003】
上記半導体集積回路におけるプログラムの保護や回路構成の特定を防止する方法としては、従来、暗号化によって構成データを保護する方法が一般に用いられている(例えば、特許文献1、2参照。)。
【0004】
また、回路構成特定の困難化という点では、デバイスの部品型名の消去、基板特定部分のシリコン等による物理的な隠匿といった手段で実現していた。
【特許文献1】特開2001−256114号公報
【特許文献2】特開2003−84853号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上記のように半導体集積回路におけるプログラムの保護や回路構成の特定を防止する方法として暗号化による方法を用いる場合には、暗号化情報を内部回路に記憶させなければならず、その設計が非常に複雑になるという問題がある。また、暗号化による方法を用いた場合には、復号に時間がかかり、起動が遅くなるという問題がある。
【0006】
また、デバイスの部品型名の消去、基板特定部分のシリコン等による物理的な隠匿といった手段を用いた場合には、
1.悪意のある第三者がその覆い隠した物質を除去することにより、比較的安易に回路構成が特定できてしまう。
【0007】
2.製造者において、その覆い隠した物質により修理、手直し等の必要な作業の妨げになるという2つの大きな問題を含んでいる。
【0008】
本発明は上記の課題を解決するためになされたもので、構成回路の特定を簡易的な手段によって確実に防止でき、かつ、必要作業発生時に困難を生ずる物理的な隠匿を回避できる回路構成特定防止方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る回路構成特定防止方法は、フィールド・プログラマブル・ゲート・アレイ内に外部回路から内部ロジックへのアクセスを制御するゲート回路を設け、予め内部の許可キー設定レジスタに設定された許可キーと前記外部回路から入力される許可キーとを一致比較し、一致した場合に前記ゲート回路のロックを解除して前記外部回路から内部ロジックへのアクセスを許可することを特徴とする。
【発明の効果】
【0010】
本発明によれば、第三者による回路の動作特定が困難となり、仮にプログラマブルデバイスのプログラム自体が漏洩した場合でも、全てのデバイスのプログラム及び基板の構造まで同一構成としない限り、プログラムは動作することができないので、回路構成の特定を確実に防止することができる。また、従来のように基板上に形成された回路構成全体を覆い隠す必要が無く、実際に基板の動作検証をする必要が生じた場合には、安易に動作を確認することができる。
【発明を実施するための最良の形態】
【0011】
以下、図面を参照して本発明の実施形態を説明する。
(第1実施形態)
図1は、本発明に係る回路構成特定防止方法を半導体集積回路に実施した場合の概略構成例を示したものである。図1において、10はプリント用の基板で、この基板10上に例えばMPU(Micro Processing Unit)11、FPGA(フィールド・プログラマブル・ゲート・アレイ:プログラム可能なゲート・アレイ素子)12、周辺回路13、MPU周辺回路14、CPLD(工場でプログラムされたロジック素子)15が設けられる。
【0012】
上記MPU11は、所定のソフトウェアに基づいて動作するもので、FPGA12に対してアドレス、データ、選択信号を出力する。FPGA12は、機能を決定するFPGA素子のためのプログラムを用いて、製造後に現場でプログラムできる集積回路である。上記FPGA12は、内部に動作設定用のレジスタ群が設けられており、外部回路であるMPU11からの指示に基づいて周辺回路13を制御する。
【0013】
上記MPU11、FPGA12、周辺回路13は、システム機能要求を満足するために、機能ブロック毎に最適な実現手段を検討し、1枚ないし複数枚の基板10に分割して実現する。
【0014】
そして、本実施形態では、上記構成デバイスの少なくとも1つ以上の組合わせ間のキー確認により動作する構成としている。ここでキー表現としたのは、その製品、或いは、その基板固有の値(またはレベル)であり、一般に決まった値ではないためである。また、少なくとも1つ以上としたのは、キー数が多ければ多いほど、第三者が回路構成を特定する難易度が高くなるので、その製品の目標とする秘匿性達成レベルにより複数のキーを組合わせ使用することが可能である。また、1つのキー自体についても前記キー数と同様に、1ビットから複数ビットまでの構成が可能であり、そのビット数増加に比例し、秘匿性達成レベルが高くなる。
【0015】
ここで、一般的な構成要素を用いた製品要求機能の実現方法は、FPGA12内のレジスタにMPU11から動作要求、及び設定値を書き込むことにより、周辺回路13を制御し、動作することが一般的である。そのため本発明は、全ての正しい構成要素が揃わない限り、FPGA12内レジスタへのアクセスを禁止し、回路が正常動作しない構成とすることにより、回路構成(一部分のみの場合も含む)の特定及びそれに伴う不正コピーを防止するものである。
【0016】
以降、動作許可を申請する意味となる外部からの設定キーを認証キー、そのキーに対して動作を許可するか否かの判断基準となるキーを許可キーとして説明する。基本的にこれらのキーは、別個の経路を用いてそれぞれ設定されるのを基本とする。
【0017】
上記図1に示した回路では、MPU11からCPLD15に対し、起動トリガを与えて許可キーを発生し、この許可キーをFPGA12内部の許可キーレジスタに設定する。FPGA12は、許可キーレジスタに設定された許可キーと、MPU11から出力される認証キーとを比較し、一致した場合のみ内部レジスタ群へのアクセスを許可することにより、回路構成の特定及びそれに伴う不正コピーを防止する。
【0018】
図2は、上記認証キー及び許可キーをパラレル設定とした場合の秘匿性、回路構成の特定の難易度を示し、横軸にビット数/キー、縦軸にキー数を取って示した。キーのビット数、及びキー数が多くなるほど秘匿性が高くなる。このためAビットを使用した1つのキーも、A個の1ビットキーと同一とみなすことができる。従って、ある回路構成に割り振るFPGAピンが同一の場合、1つのキーを複数ビットで構成し、そのキーをシリアルで設定した方が、より強力な秘匿性を実現することが可能である。
【0019】
図3は、上記FPGA12の具体的な回路構成例を示したものである。
図3において、21はFPGA12内に構成される動作設定用の内部レジスタ群で、MPU11からアドレス信号及びデータ信号が与えられる。更に、上記内部レジスタ群21には、MPU11から出力される選択信号がゲート回路22を介して入力される。
【0020】
また、FPGA12内には、許可キー設定レジスタ23、認証キー設定レジスタ24が設けられると共に、上記許可キー設定レジスタ23に設定された許可キーと認証キー設定レジスタ24に設定された認証キーとを一致比較し、その比較結果に基づいてゲート回路22を制御するキー一致検出回路25が設けられる。上記許可キー設定レジスタ23には、外部回路例えばMPU11によって許可キーが設定され、認証キー設定レジスタ24にはMPU11によって認証キーが設定される。
【0021】
キー一致検出回路25は、許可キー設定レジスタ23に設定された許可キーと、認証キー設定レジスタ24に設定された認証キーとを比較し、一致した場合にはゲート回路22を開き、すなわちゲート回路22のロックを解除して内部レジスタ群21へのアクセスを許可し、不一致の場合はゲート回路22を閉じて内部レジスタ群21へのアクセスを禁止する。上記内部レジスタ群21は、MPU11によって書き込まれた動作要求及び設定値に基づいて周辺回路13a〜13nを制御する。
【0022】
システム機能要求の動作の殆どがFPGA12内の内部レジスタ群21経由で設定されるため、許可キーと認証キーが不一致の場合に内部レジスタ群21へのアクセスを制限することにより、本来の機能を実現することが不可能となり、FPGA12を含めた周辺デバイスが正しく動作することはない。このため第三者が回路の構成、動作を特定するのが困難となる。また、仮にプログラマブルデバイスのプログラム自体が漏洩した場合でも、全てのデバイスのプログラム及び基板の構造まで同一構成としない限り、プログラムは動作することができないので、回路構成の特定を確実に防止することができる。また、従来のように基板上に形成された回路構成全体を覆い隠す必要が無いので、実際に基板の動作検証をする必要が生じた場合には、安易に動作を確認することができる。
【0023】
次に、上記許可キー設定レジスタ23、認証キー設定レジスタ24へキーを設定する場合の構成例について説明する。
図4は、許可キー設定レジスタ23への許可キーの設定及び認証キー設定レジスタ24への認証キーの設定をMPU11のデータバスによりパラレルデータを用いて行なう場合について示したものである。
【0024】
MPU11の動作としては、まず、Boot処理を行なった後、内部のイニシャル処理を実行し、その後、ゲート処理されていない、すなわち通常アクセス可能な許可キー設定レジスタ23に前もって取り決められた許可キーを設定し、その後、認証キーを発行して認証キー設定レジスタ24に設定する。
【0025】
上記認証キーは、Boot処理後にソフトウェア動作開始時に設定するキーとするため、MPU11からの設定を基本とする。認証キーの設定は、MPU11のBoot処理を行なった後、MPU11の内部イニシャル処理実行後にFPGA12内の認証キー設定レジスタ24へ設定する。
【0026】
そして、上記MPU11により認証キー設定レジスタ24に対して認証キーが設定されると、キー一致検出回路25において、許可キーと認証キーの一致検出が行なわれる。上記キー一致検出回路25により、許可キーと認証キーの一致が検出されると、ゲート回路22のロックが解除されて内部レジスタ群21へのアクセスが可能となり、正常運用状態へと遷移する。しかし、上記キー一致検出回路25において、許可キーと認証キーが不一致であると判断された場合は、ゲート回路22がロックされたままとなり、内部レジスタ群21へのアクセスが禁止される。
【0027】
なお、上記許可キー設定レジスタ23に対する許可キーの設定方法は、MPU11からの設定のみに限定するものではなく、その入手(設定)方法はいかなるものであっても良い。但し、本実施形態では許可キー、認証キーともMPU11から設定する構成で説明しているが、実際の運用の場合は、同一手段、同一経路の設定を用いるのは、秘匿性の観点から推奨されるものではない。
【0028】
図5は、シリアルキー設定方式を示したもので、MPU11のシリアルポートを用いて許可キー設定レジスタ23に許可キーを設定する。すなわち、MPU11のシリアルポートから出力される信号をシリアル/パラレル(S/P)変換回路26により、パラレルのアドレス信号、データ信号に変換して許可キー設定レジスタ23に設定する。この設定方式は、設定手段としてシリアル通信方式を用いる以外は、パラレル設定方式と同一である。
【0029】
一方、認証キーの設定は、上記パラレルデータによる設定の場合と同様にMPU11のBoot処理を行なった後、MPU11の内部イニシャル処理実行後にFPGA12内の認証キー設定レジスタ24へ設定する。
【0030】
なお、許可キー設定レジスタ23へのキー設定方法は、上記パラレルデータによる設定の場合と同様に、MPU11からの設定のみに限定するものではなく、その入手(設定)方法はいかなるものであっても良い。
【0031】
上記のように許可キー設定レジスタ23に許可キーを設定する場合、パラレル設定とシリアル設定の実現方法があるが、使用するピン数はパラレル設定の場合、キー長(ビット数)分、シリアル設定の場合、3ピン程度で実現可能である。また、秘匿性については、パラレル設定の場合、1ビットのキーがパラレル分存在するのと同じであるが、シリアル設定の場合、1つのピンで複数のキーがあることになるので、パラレル設定と同一ピン数で実現した場合には格段に秘匿性が強い構成となる。
【0032】
次に、上記許可キー設定レジスタ23へ許可キーを設定する場合の他の実施形態について図6ないし図9を参照して説明する。
【0033】
(第2実施形態)
図6は、本発明の第2実施形態に係る許可キーの設定例を示す回路構成図である。この第2実施形態は、FPGA12の内部にて許可キーを設定する場合の例を示している。
すなわち、FPGA12のBootメモリ31に予め許可キー設定レジスタ23の初期値を設定しておき、FPGA Boot処理を実行することによって許可キー設定レジスタ23に許可キーを設定する。従って、FPGA Boot処理終了後には、許可キーの設定が完了する。
【0034】
その後、MPU11により認証キー設定レジスタ24に対して認証キーが設定されると、キー一致検出回路25において、許可キーと認証キーの一致検出が行なわれ、その検出結果に応じてゲート回路22のゲートがオン/オフ制御される。
【0035】
上記の構成とすることにより、許可キーは、FPGA Bootデータから許可キー設定レジスタ23の初期値としてBoot済みであるので、許可キーを改めて設定する必要はない。
【0036】
(第3実施形態)
図7は、本発明の第3実施形態に係るキー設定例を示す回路構成図である。この第3実施形態は、FPGA12を実装する基板10上から許可キーを設定する場合の例を示したものである。
すなわち、基板10上にキー回路32を設け、FPGA12の未使用I/Oピンに対してキーを1ビットずつ割り当てて、許可キー設定レジスタ23に対する許可キーを設定する。そして、FPGA12のBoot実行後、上記I/Oピンからの入力レベルを読出して許可キー設定レジスタ23に設定する。
【0037】
上記の構成によれば、I/Oピンに対するキーの設定をFPGAデバイス実装の直下から接続することにより、外部から接続状態を確認することができず、秘匿性を向上することができる。
【0038】
(第4実施形態)
図8は、本発明の第4実施形態に係るキー設定例を示す回路構成図である。この第4実施形態は、MPU11により許可キーを設定する場合において、CPLD15を介在して行なう場合の例を示したものである。
【0039】
この第4実施形態では、基板10上にCPLD15を設け、MPU11のシリアルポートよりCPLD15に対して許可キー等を与えて起動する。CPLD15は、MPU11からの指令によって動作し、許可キーをシリアルデータとしてFPGA12へ出力する。FPGA12は、上記CPLD15から送られてくるシリアルの許可キーをシリアル/パラレル変換回路26によりパラレルのデータ信号に変換し、許可キー設定レジスタ23に設定する。
【0040】
上記MPU11は、CPLD15に対して許可キー設定用のコマンド、許可キー、または、許可キーの種をセットする。この許可キーの種は、例えば“1”、“0”を反転したものであったり、許可キーとなる取り決めを決めたデータ列のことである。この場合、MPU11とCPLD15との間、CPLD15とFPGA12との間は、上記実施形態と同様に共にパラレル/シリアルの設定が可能となるので、実現手段は使用デバイスの空きピン等の状況により選択可能である。
【0041】
(第5実施形態)
図9は、本発明の第5実施形態に係るキー設定例を示す回路構成図であり、CPLD15により許可キーの設定を行なう場合の例を示したものである。
本実施形態では、上記第4実施形態と同様に基板10上にCPLD15を設けているが、このCPLD15は、他のBoot状況を監視できる構成とし、FPGA12のBoot終了信号(Boot Done)をトリガとし、予め取り決めた許可キーをFPGA12へセットする構成とする。FPGA12は、上記CPLD15から送られてくるシリアルの許可キーをシリアル/パラレル変換回路26によりパラレルのデータ信号に変換し、許可キー設定レジスタ23に設定する。
上記第5実施形態によれば、許可キー設定レジスタ23への許可キーの設定をCPLD15によって行なうことができる。
【0042】
なお、第5実施形態においても、MPU11とCPLD15との間、CPLD15とFPGA12との間において、上記各実施形態と同様にパラレル/シリアルの設定が可能であり、その実現状況により選択することができる。
【0043】
次に、上記各実施形態における電源投入からの動作とキー設定手順を図10に示すフローチャートを参照して説明する。
対象機器の電源をONすると、CPLDによるBoot制御動作が行なわれる(ステップA1)。まず、FPGA Boot処理により「許可キー設定0」の処理が行なわれる(ステップA2)。この「許可キー設定0」は、図6の第2実施形態に示したように、FPGA12のBootデータ内に初期値として組み込んだ許可キーを使用して許可キー設定レジスタ23に設定する場合である。
【0044】
次に、FPGA Boot処理により「許可キー設定1」の処理が行なわれる(ステップA3)。この「許可キー設定1」は、
(1)図7の第3実施形態に示したように、基板10上に設けたキー回路32により、FPGA12のI/Oピンに直接信号を入力し、それを許可キーとして許可キー設定レジスタ23に設定する場合、
(2)図9の第5実施形態に示したように、基板10に設けたCPLD15がFPGA12のBoot終了信号(Boot Done)により動作し、許可キーを許可キー設定レジスタ23に自動設定する場合である。
その後、MPU11のBoot処理が実行される(ステップA4)。
【0045】
上記ステップA2〜A4の処理は、CPLDによるBoot制御により実行される。
上記MPU11のBoot処理が終了した後、「許可キー設定2」の処理が行なわれる(ステップA5)。上記図4、図5の第1実施形態、図8の第3実施形態で示したように、MPU11の起動で許可キーが設定される場合、このステップA5の「許可キー設定2」のタイミングで実行される。
【0046】
次いで、MPU11による内部のイニシャル処理が実行され(ステップA6)、そのイニシャル処理終了後、MPU11によりFPGA12内の認証キー設定レジスタ24に対して認証キーが設定される(ステップA7)。
【0047】
次に、FPGA12は、キー一致検出回路25において、上記許可キー設定レジスタ23に設定された許可キーと、認証キー設定レジスタ24に設定された認証キーが一致するかどうかの判定、すなわち、キー認証を行なう(ステップA8)。
【0048】
キー一致検出回路25は、上記キー認証において、許可キーと認証キーとの一致を検出すると、ゲート回路22を開いて内部レジスタ群21のアクセスを許可し(ステップA9)、通常運用動作に移行する(ステップA10)。
【0049】
また、上記ステップA8において、キー一致検出回路25により許可キーと認証キーとが一致していないと判定された場合は、ゲート回路22が閉じた状態に保持され、内部レジスタ群21へのアクセスが禁止される。このためFPGA12を含めた周辺デバイスが正しく動作することはなく、回路構成の特定が不可能となる。
【0050】
以上、許可キーの各種設定例を示したが、本発明は1設定方法のみでの秘匿性実現が可能であり、また、全てを用いた秘匿性を最大限に高めた方法構成も可能である。これは提供するシステムに合わせ、求められる秘匿性要求に合わせて構成することを可能とするものである。
【0051】
同様に、キーコードそのものについても、1ビットから複数ビットまで、用いるMPU11のバス幅やFPGA12の空きピン数等の条件により、いかなる構成も可能である。
【0052】
また、これら自由度の高いキー数、キーコードを使用可能であるが、その一致検出においても全キー同一キーコードを用いた一致検出から、全キー個別のキーコードを用いたものまで、こちらも自由に設定することが可能である。
【0053】
更に、CPLD15とFPGA12間のシリアルキー設定を構築することを考えた場合、現時点における両デバイスのパッケージは、BGA(Ball Grid Array)が一般的となっているため、両デバイス間の接続を基板内層を用いて接続することにより、外部からの信号モニタの手段をなくすことができ、より秘匿性を高めることが可能である。
【0054】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できるものである。
【図面の簡単な説明】
【0055】
【図1】本発明の第1実施形態に係る回路構成特定防止方法を用いた半導体集積回路の概略構成例を示す図である。
【図2】同実施形態における認証キー及び許可キーをパラレル設定した場合の秘匿性、回路構成の特定の難易度を示す図である。
【図3】同実施形態におけるFPGAの具体的な回路構成例を示す図である。
【図4】同実施形態において、許可キー設定レジスタへの許可キーの設定及び認証キー設定レジスタへの認証キーの設定をパラレルデータにより行なう場合の構成例を示す図である。
【図5】同実施形態において、許可キー設定レジスタへの許可キーの設定をシリアルデータにより行なう場合の構成例を示す図である。
【図6】本発明の第2実施形態に係る回路構成特定防止方法を用いた半導体集積回路の構成例を示す図である。
【図7】本発明の第3実施形態に係る回路構成特定防止方法を用いた半導体集積回路の構成例を示す図である。
【図8】本発明の第4実施形態に係る回路構成特定防止方法を用いた半導体集積回路の構成例を示す図である。
【図9】本発明の第5実施形態に係る回路構成特定防止方法を用いた半導体集積回路の構成例を示す図である。
【図10】本発明の各実施形態における電源投入からの動作とキー設定手順を示すフローチャートである。
【符号の説明】
【0056】
10…基板、11…MPU、11.FPGA12…MPU11、12…FPGA、13、13a〜13n…周辺回路、14…MPU周辺回路、15…CPLD、21…内部レジスタ群、22…ゲート回路、23…許可キー設定レジスタ、24…認証キー設定レジスタ、25…キー一致検出回路、26…シリアル/パラレル(S/P)変換回路、31…Bootメモリ、32…キー回路。

【特許請求の範囲】
【請求項1】
フィールド・プログラマブル・ゲート・アレイ内に外部回路から内部ロジックへのアクセスを制御するゲート回路を設け、予め内部の許可キー設定レジスタに設定された許可キーと前記外部回路から入力される許可キーとを一致比較し、一致した場合に前記ゲート回路のロックを解除して前記外部回路から内部ロジックへのアクセスを許可することを特徴とする回路構成特定防止方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2006−18577(P2006−18577A)
【公開日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願番号】特願2004−195613(P2004−195613)
【出願日】平成16年7月1日(2004.7.1)
【出願人】(000001122)株式会社日立国際電気 (5,007)
【Fターム(参考)】