(57)【特許請求の範囲】
【請求項１】
少なくとも演算部、記憶部、主メモリがバスに接続して成る情報処理装置に対し、該バスを介して接続可能なコントロールモジュールを備え、
前記記憶部には、暗号化されたソフトウェアオブジェクトが格納され、
前記コントロールモジュールは、前記暗号を解読する暗号解読手段と、前記暗号化されたソフトウェアオブジェクトを該暗号解読手段が解読して成る実行可能な形式のオブジェクトを格納する記憶手段と、該実行可能な形式のオブジェクトを用い演算実行する演算手段とを有し、
前記ソフトウェアオブジェクトに係わる処理実行の際には、前記演算部は該コントロールモジュールに処理実行させ該処理結果を受け取ることを特徴とする情報処理装置。
【請求項２】
少なくとも演算部、記憶部、主メモリがバスに接続して成る情報処理装置に対し、該バスに接続可能なコントロールモジュールを備え、
前記記憶部には、暗号化されたソフトウェアオブジェクトと、該暗号を解読する暗号解読方法が前記ソフトウェアオブジェクトに対する暗号化方式とは別の暗号化方式で暗号化された暗号解読プログラムが格納され、
前記コントロールモジュールは、前記暗号化された暗号解読プログラムを解読する為の鍵と、該鍵により解読された暗号解読プログラムにより暗号解読回路となるプログラマブルロジックと、前記暗号化されたソフトウェアオブジェクトを該暗号解読回路により解読して成る実行可能な形式のオブジェクトを格納する記憶手段と、該実行可能な形式のオブジェクトを用い演算実行する演算手段とを有し、
前記ソフトウェアオブジェクトに係わる処理実行の際には、前記演算部は該コントロールモジュールに処理実行させ該処理結果を受け取ることを特徴とする情報処理装置。
【請求項３】
前記暗号解読プログラムの暗号化は、予め前記鍵によって行われていたことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記記憶部には、更に、暗号化された解読許可テーブルが格納され、解読許可テーブルはシステム立上げ時に前記コントロールモジュールにローディングされ、コントロールモジュールが暗号を解読して、該解読した解読許可テーブルを参照して、その後ローディングされてくる暗号化されたソフトウェアオブジェクトの解読を許可するか否かを判断することを特徴とする請求項２または３記載の情報処理装置。
【請求項５】
少なくとも演算部、主メモリと、暗号化されたソフトウェアオブジェクトが格納された記憶部とを有する汎用の情報処理装置に対して、接続可能なモジュールであって、
前記暗号を解読する暗号解読手段と、前記暗号化されたソフトウェアオブジェクトを該暗号解読手段が解読して成る実行可能な形式のオブジェクトを格納する記憶手段と、該実行可能な形式のオブジェクトを用い演算実行する演算手段とを有し、前記情報処理装置の代わりに前記ソフトウェアオブジェクトに係わる処理を実行することを特徴とするコントロールモジュール。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置に係わり、特に汎用の情報処理装置においても逆アセンブル等によってアルゴリズムが解読されることを防止できる情報処理装置、およびコントロールモジュールに関する。
【０００２】
【従来の技術】
パーソナルコンピュータ、ワークステーション等の情報処理装置においては、そのハードウェアの性能と共に、ソフトウェアの機能が、重要な要素となっており、優れたソフトウェアを有することは重要である。
【０００３】
更に、情報処理装置の利用形態の１つに、何等かの制御対象の制御を行う制御装置としての形態が知られている（特に高度な制御や高速な制御を可能にする）。特にこのような場合、その制御を行う為の演算アルゴリズムは非常に重要な技術であり、優れたアルゴリズムは他の製品に対する優位性を維持するのに重要である。
【０００４】
しかし、これらのアルゴリズムは一度解読されてしまうと、容易に模倣が可能であり、製品としての優位性を失うことになる。このため、厳重なセキュリティシステムにより、第三者に解読されることがないようにする必要がある。（ソフトウェアオブジェクトは一度参照されると、逆アセンブラなどによりアルゴリズムが容易に解釈され、第三者によってそのアルゴリズムが模倣される可能性がある。アルゴリズムが模倣されると、第三者によって容易に同一機能を実現され、その製品が持っていた競争力を失い、多大の損害を受ける可能性がある。このため、第三者に容易にソフトウェアオブジェクトのアルゴリズムが参照できないようにする必要がある。）
【０００５】
【発明が解決しようとする課題】
このような要望に対して、従来、暗号化されたソフトウェアオブジェクトを二次記憶装置に格納しておき、ローディング時にＣＰＵが解読して、ユーザが参照できないような主記憶上に展開してから動作させる手法が提案されている。
【０００６】
しかし、主記憶上に展開するため、第三者から完全に参照されるのを防ぐのは困難であった。すなわち、例えばソフトウェアで主メモリを管理してユーザが参照できないようにした場合、そのソフトウェアやＯＳ等を介さずに主記憶のダンプ等が行えれば、上記解読されたロードモジュールを参照することが可能となる。あるいは、上記ソフトウェアに代えてハードウェアで実現することも考えられるが、この場合主記憶に特別なハードウェアを追加する必要がある。すなわち、逆アセンブルを防止する為の専用機となってしまい、汎用ＰＣ（パソコン）や汎用ＷＳ（ワークステーション）に適用できるようなものではなかった。
【０００７】
このように、従来の方法では、暗号化はされていても、最終的には主記憶上にＣＰＵの実行形式でソフトウェアオブジェクトが展開されるので、何らかの方法で第三者がそのソフトウェアオブジェクトを参照する危険性があった。あるいは、汎用ＰＣや汎用ＷＳには適用できなかった。
【０００８】
本発明の課題は、特に汎用ＰＣや汎用ＷＳであっても、非常に高い信頼性をもって第３者にアルゴリズムが解読されることを防止できる情報処理装置、コントロールモジュールを提供することである。
【０００９】
【課題を解決するための手段】
本発明による情報処理装置は、汎用の情報処理装置に対して接続可能なコントロールモジュールを設け、該コントロールモジュールは、前記情報処理装置側に格納されている暗号化されたソフトウェアオブジェクトを、暗号解読して自己のメモリ上に展開し、該情報処理装置の代わりに該ソフトウェアオブジェクトに係わる処理を実行する。
【００１０】
更に詳しくは、少なくとも演算部、記憶部、主メモリがバスに接続して成る情報処理装置に対し、該バスを介して接続可能なコントロールモジュールを備え、前記記憶部には、暗号化されたソフトウェアオブジェクトが格納され、前記コントロールモジュールは、前記暗号を解読する暗号解読手段と、前記暗号化されたソフトウェアオブジェクトを該暗号解読手段が解読して成る実行可能な形式のオブジェクトを格納する記憶手段と、該実行可能な形式のオブジェクトを用い演算実行する演算手段とを有し、前記ソフトウェアオブジェクトに係わる処理実行の際には、前記演算部は該コントロールモジュールに処理実行させ該処理結果を受け取るようにする。
【００１１】
このように、本発明によれば、暗号化されたソフトウェアオブジェクトの暗号の解読には、情報処理装置に着脱可能な専用のモジュールを使用するとともに、そのソフトウェアオブジェクトの実行を当該専用のモジュールで実行させ、情報処理装置側では実行しない。これより、情報処理装置の主記憶上に実行形式のソフトウェアオブジェクトは展開されないので、第３者により参照されることはない。当然、専用のモジュール内のメモリに展開される実行形式のソフトウェアオブジェクトは、ハードウェア的に、外部から参照できないようにしているが、従来のように情報処理装置自体を専用機としているのではないので、ユーザ等はそれまでに使用している汎用ＰＣや汎用ＷＳを用いればよく、これに専用のモジュールを接続すればよい。
【００１２】
また、本発明による情報処理装置は、少なくとも演算部、記憶部、主メモリがバスに接続して成る情報処理装置に対し、該バスに接続可能なコントロールモジュールを備え、前記記憶部には、暗号化されたソフトウェアオブジェクトと、該暗号を解読する暗号解読方法が別の暗号化方式で暗号化された暗号解読プログラムが格納され、前記コントロールモジュールは、この暗号化された暗号解読プログラムを解読する為の鍵と、該鍵により解読された暗号解読プログラムにより暗号解読回路となるプログラマブルロジックと、前記暗号化されたソフトウェアオブジェクトを該暗号解読回路により解読して成る実行可能な形式のオブジェクトを格納する記憶手段と、該実行可能な形式のオブジェクトを用い演算実行する演算手段とを有し、前記ソフトウェアオブジェクトに係わる処理実行の際には、前記演算部は該コントロールモジュールに処理実行させ該処理結果を受け取るようにする。
【００１３】
上記情報処理装置では、ソフトウェアオブジェクトを暗号化するだけでなく、この暗号を解読する手段をもプログラマブルに構成して別の暗号化方式で暗号化しておく。そして、専用のコントロールモジュールにより先ず暗号解読プログラムの暗号を解読して、これをプログラマブルロジックに設定することで暗号解読回路を形成し、この暗号解読回路によりソフトウェアオブジェクトの暗号を解読するというような２重の処理を行わなければならないようにしている。すなわち暗号解読のアルゴリズム自体も容易には分からないようにしている。
【００１４】
更に、前記暗号解読プログラムの暗号化は、予め前記鍵によって行われていたものである。すなわち、ある暗号化されたソフトウェアオブジェクトを解読する為には、その暗号化の際に用いた“鍵”を格納しているコントロールモジュールを用いなければ、暗号が解けないようになっている。
【００１５】
また、前記記憶部には、更に、暗号化された解読許可テーブルが格納され、解読許可テーブルはシステム立上げ時に前記コントロールモジュールにローディングされ、コントロールモジュールが暗号を解読して、該解読した解読許可テーブルを参照して、その後ローディングされてくる暗号化されたソフトウェアオブジェクトの解読を許可するか否かを判断するようにしている。
【００１６】
これは、例えば、ソフトウェアオブジェクトが複数ある場合に、ユーザ毎に使用してよい範囲を決め、その内容に従って暗号化された許可テーブルを作成し、システム立上げ時にそのユーザに許可されたソフトウェアオブジェクトだけを解読するようにすることで、不必要に暗号化されたソフトウェアオブジェクトを解読しないようにする。
【００１７】
また、コントロールモジュール自体についても本発明の対象とする。
【００１８】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態について説明する。
本実施形態の情報処理装置、コントロールモジュールによれば、汎用ＰＣや汎用ＷＳを使用した場合においても、ソフトウェアオブジェクトが第三者により参照されるのを防ぐことができ、以て逆アセンブルされてソフトウェアオブジェクトのアルゴリズムが知られてしまうのを防ぐことができる。
【００１９】
図１は、本実施形態の情報処理装置のシステム構成図である。
同図に示す情報処理装置１０は、ＣＰＵ１１、主メモリ１２、二次記憶装置１３等がシステムバス１４に接続された構成である。二次記憶装置１３は、二次記憶コントローラ１３ａと二次記憶部１３ｂとより成る。更に、特に図示しないが、通常、ユーザとのインタフェースとしてキーボード、マウス、ディスプレイ等を備える。これらが一般的に汎用ＰＣや汎用ＷＳの構成として知られている。
【００２０】
同図に示す情報処理装置１０には、更に、任意に着脱可能なコントロールモジュール２０がシステムバス１４に接続されている。
ＣＰＵ１１は、当該情報処理装置１０全体を制御する中央処理装置である。
【００２１】
主記憶１２は、いわゆる主記憶として用いられるメモリであり、通常、ＤＲＡＭである。
二次記憶装置１３は、例えばＨＤＤ（ハードディスクドライブ）等であり、二次記憶コントローラ１３ａにより二次記憶部１３ｂに対する情報の読出し／書込み制御等が行われる。尚、二次記憶装置１３は、ＨＤＤに限定されるのではなく、例えばＦＤとＦＤＤ（フロッピーディスクドライブ）、ＣＤ−ＲＯＭとＣＤ−ＲＯＭドライブ等であってもよい。
【００２２】
二次記憶部１３ｂには、図３に示すように、暗号化されたソフトウェアオブジェクト群３１が格納されている。また、暗号化された暗号解読回路情報３２が格納されている。また、暗号化された暗号解読許可テーブル３３が格納されている場合もある。これらについては、詳しくは後述する。
【００２３】
ここで、少なくとも、ソフトウェアオブジェクト群３１の暗号化方式（以後、暗号方式Ａという）と、暗号解読回路情報３２の暗号化方式（以後、暗号方式Ｂという）とは、互いに異なる暗号方式を用いるものとする。尚、具体的な暗号方式として何を用いるかについては、特に制限しない。尚、暗号方式の一例としては、例えば、「現代暗号理論」（電子通信学会；池野信一、小山謙二  共著）、「暗号理論の基礎」（共立出版（株）；Douglas R.Stinson 著、桜井幸一  監訳）等に記載されている。
【００２４】
図２は、上記コントロールモジュール２０の構成ブロック図である。
コントロールモジュール２０は、マイクロプロセッサ２１、ＲＯＭ２２、ＲＡＭ２３、ＦＰＧＡ２４、不揮発性メモリ２５、およびシステムバスインタフェース２６から構成され、これらがローカルバス２７を介して接続される。システムバス１４とローカルバス２７とは、アドレス空間は別であり、システムバス１４からローカルバス２７内への参照はできない。
【００２５】
ＲＯＭ２２には、マイクロプロセッサ２１に以下に説明する処理を実行させるプログラムが格納されている。
ＦＰＧＡ（Field Programmable Gate Array ）２４は、プログラマブルロジックと呼ばれる、ユーザ側で論理の書き込み／書き換えを行うことができるゲートアレイの一種として知られているものであり、その最大の特徴は回路の論理内容をソフトウェアにより変更できることである。
【００２６】
本例では、このソフトウェアが、暗号化されたソフトウェアオブジェクトをＦＰＧＡ２４で解読させる為のものとして、二次記憶部１３ｂに格納されている（上記暗号化された暗号解読回路情報３２）。すなわち、ＦＰＧＡ２４（プログラマブルロジック）を、暗号解読回路とする為の回路情報が、暗号化されて、二次記憶部１３ｂに格納されている。
【００２７】
以下、図４に示すコントロールモジュール２０の動作フローチャートを参照して説明する。
システム立ち上げ時（例えば電源ＯＮ時）等に、まず、ＣＰＵ１１は、上記暗号化された回路情報を読み出し、コントロールモジュール２０に転送する。この暗号化された回路情報を受け取ると（ステップＳ１）、コントロールモジュール２０のマイクロプロセッサ２１は、不揮発性メモリ２５に格納されている、当該コントロールモジュール２０固有の“鍵”を読出し、これを用いて受信した回路情報を解読し（ステップＳ２）、ＦＰＧＡ２４に設定する。ここで、このコントロールモジュール２０の“鍵”で上記回路情報を解読できる場合とは、予めこの“鍵”によって回路情報が暗号化されていた場合である。すなわち、暗号化の際に用いた“鍵”と、暗号解読の際に用いる“鍵”とが、同じでなければ、解読は成功しないようになっている。このように、あるコントロールモジュール２０の“鍵”で暗号化されたソフトウェア（オブジェクト）は、そのコントロールモジュール２０でのみ解読が可能となっている。これより、他のシステムにコピーされて使用されることを防ぐことができる。
【００２８】
そして、このように解読した回路情報をＦＰＧＡ２４に設定することにより、ＦＰＧＡ２４の回路の論理内容が書き換えられ、暗号解読回路として動作するようになる（ステップＳ３）。このように、暗号解読をハードウェアにより行わせることにより、暗号解読が高速に行われるようにできる。尚、上述してあるように、この回路情報を暗号化する方式（暗号方式Ａ）と、この暗号解読回路により解読すべき（オブジェクトの）暗号化方式（暗号方式Ｂ）とは、別の方式を用いる。
【００２９】
このようにして、ソフトウェアオブジェクト群の暗号解読を行う暗号解読回路が形成されると、続いて、マイクロプロセッサ２１は、システムバスインタフェース２６、システムバス１４を介して、情報処理装置１０に対し、二次記憶部１３ｂに格納されている暗号化されたソフトウェアオブジェクト群３１の転送を依頼する。これに対して情報処理装置１０側から暗号化されたソフトウェアオブジェクト群３１が転送されてくると（ステップＳ４）、これを暗号解読回路（ＦＰＧＡ２４）で解読させながら、解読結果をＲＡＭ２３に転送させていく（ステップＳ５）。
【００３０】
このようにして、ソフトウェアオブジェクト群３１は、実行可能な形式でＲＡＭ２３上に展開される。
尚、ＲＡＭ２３の内容は、ハードウェア的に、外部から参照（接触）できないように作ってある。例えばコントロールモジュール２０の構成がプリント基板上に配設して成る場合には、ローカルバス２７の配線をプリント基板の内層で行う。あるいはこれをプリント基板の表面に配線する場合には、この配線を絶縁材料で覆う。更に、各部品の端子部は、絶縁材料で覆ったり、ＢＧＡ（ボールグリッドアレイ）のようなパッケージの部品を使う等することにより、ハードウェア的に、外部から接触できないように構成する。尚、当該コントロールモジュール２０へ情報処理装置１０から電力供給される構成の場合には、当該コントロールモジュール２０を情報処理装置１０から切り離した場合には、当然、ＲＡＭ２３上のデータは消失する。もし、当該コントロールモジュール２０にバッテリーが搭載されている場合には、マイクロプロセッサ２１は、切り離しを検知すると、ＲＡＭ２３上のデータを消去する。このようにすることにより、ＲＡＭ２３上に展開される実行可能形式のオブジェクトが外部から参照されることを防止できる。すなわち、コントロールモジュール２０内で実行されるプログラムのアルゴリズムを第３者が解読できないようにすることが可能となる。
【００３１】
メモリ上に展開される実行可能形式のプログラムが外部から参照できないようにするために、従来のように主記憶に特別なハードウェアを追加するようにした場合、情報処理装置１０自体が専用機という位置付けになってしまったが、本実施の形態では、情報処理装置１０自体は汎用ＰＣ（パソコン）や汎用ＷＳ（ワークステーション）であってよく、これに専用機たるコントロールモジュール２０をオプションで接続すればよい。
【００３２】
更に、本実施の形態では、暗号化を二重化している。すなわち、ソフトウェアオブジェクト群３１の暗号を解く為の回路情報が暗号化されており、ソフトウェアオブジェクト群３１の暗号を解く為には、まず、この回路情報の暗号を解かなければならない。更に、コントロールモジュール２０固有の“鍵”を用いなければ、回路情報の暗号が解けないようになっている。
【００３３】
以上のような動作を、例えばシステム立上げ時（電源投入時）等に行うことで、コントロールモジュール２０は、暗号化されたソフトウェアオブジェクト群に係わる処理の実行モジュールとして動作可能状態となる。
【００３４】
その後、情報処理装置１０側のＣＰＵ１１は、コントロールモジュール２０で実行させるべき処理が発生した場合（実行要求が発生する）、コントロールモジュール２０のシステムバスインタフェース２６に対して、その処理の実行要求コマンドと処理に必要なデータとを送信する。このコマンドとデータを受信したコントロールモジュール２０は、そのコマンドに対応する処理を、ＲＡＭ２３上に展開された（実行可能な形式の）ソフトウェアオブジェクト群を用いて実行し、実行処理結果をシステムバスインタフェース２６を介してＣＰＵ１１に戻す。このようにして一連の動作を終了する。
【００３５】
次に、上述した説明では、ＦＰＧＡ２４を暗号解読回路として形成した後、ソフトウェアオブジェクト群３１を構成する全てのオブジェクトを、暗号解読回路で解読するようにしたが、これに加えて更に、例えばユーザ毎に、解読できるオブジェクトが制限されるようにできる。
【００３６】
すなわち、まず、二次記憶部１３ｂには、更に、上述してある暗号化された（例えば暗号方式Ｂで）暗号解読許可テーブル３３が格納されている。また、ソフトウェアオブジェクト群３１の各オブジェクトには、予め、各々にプログラムNO. が与えられている。
【００３７】
コントロールモジュール２０のマイクロプロセッサ２１は、上述した暗号解読回路を形成させた後、続いて、情報処理装置１０に対して暗号解読許可テーブル３３の転送を要求する。そして、これに対して転送されてきた（暗号化された）暗号解読許可テーブル３３を、ＦＰＧＡ２４（暗号解読回路）で解読させ、解読済みの暗号解読許可テーブル３３をＲＡＭ２３上に展開する。
【００３８】
図５は、暗号解読許可テーブルの一例を示す図である。
同図に示す暗号解読許可テーブル４０は、各プログラムNo. ４１と、これに対応するフラグ４２とで構成されている。各フラグ４２は、対応するプログラムNo.４１が与えられているオブジェクトに関して、暗号を解読することが許可されているか否かを示す。例えば、フラグ４２がＯＮの場合は解読許可、ＯＦＦの場合は解読不許可を示すものとする。
【００３９】
コントロールモジュール２０のマイクロプロセッサ２１は、ＦＰＧＡ２４（暗号解読回路）によってソフトウェアオブジェクト群３１を解読させる際に、暗号解読許可テーブル４０を参照して、フラグ４２がＯＦＦとなっているプログラムNo. ４１のオブジェクトは、解読させないようにする。
【００４０】
この暗号解読許可テーブル４０は、例えば各ユーザ毎に、そのユーザ用の暗号解読許可テーブルが与えられている。これは、例えば当該情報処理装置１０を複数のユーザが使用する状況において、ログイン時等に入力されるユーザ情報に応じて、そのユーザに対して与えられている暗号解読許可テーブルが用いられ、これよりそのユーザは自己に許可されているオブジェクトのみ利用できる、ということである。この場合、二次記憶部１３ｂには、全ての（暗号化された）オブジェクトを格納しておくか、あるいは全ユーザのＯＲとなるオブジェクト（例えば、二人のユーザの一方がNO.1,NO.3,NO.5、他方がNO.2,NO.3,NO.5のオブジェクトに関して許可されていた場合、そのＯＲとなるNO.1,NO.2,NO.3,NO.5のオブジェクト）を格納しておく。
【００４１】
尚、例えば複数のモジュールを相互にリンクしてロードモジュールを生成する場合、その中に１つでも暗号解読許可されないオブジェクトがあれば、ロードモジュールは生成できない。
【００４２】
【発明の効果】
以上、詳細に説明したように、本発明の情報処理装置、コントロールモジュールによれば、演算自体が、情報処理装置では実行されず、外部から参照できない構成となっている専用のコントロールモジュールによって実行されるので、汎用の情報処理装置であっても逆アセンブル等によって第三者に演算のアルゴリズムを解読される可能性がほとんど無くなる。更に、２種類の暗号化方式を用いて、ある暗号方式で暗号化されたソフトウェアオブジェクトを解読する為の暗号解読回路自体を他の暗号化方式で暗号化しており、その暗号化の際に用いた“鍵”を格納しているコントロールモジュールを用いなければ、暗号が解けないようになっており、２重／３重にセキュリティを強化しているので、第３者に暗号が解読されてソフトウェアオブジェクトの内容が知られてしまう危険性は極めて低くできる。更に加えて、一律に全てのソフトウェアオブジェクトを解読できるのではなく、ユーザ毎に解読が許されるオブジェクトを設定できる。
【図面の簡単な説明】
【図１】本実施形態の情報処理装置のシステム構成図である。
【図２】コントロールモジュールの構成ブロック図である。
【図３】二次記憶部の格納内容を示す図である。
【図４】コントロールモジュールの動作フローチャート図である。
【図５】暗号解読許可テーブルの一例を示す図である。
【符号の説明】
１０  情報処理装置
１１  ＣＰＵ
１２  主メモリ
１３  二次記憶装置
１３ａ  二次記憶コントローラ
１３ｂ  二次記憶部
１４  システムバス
２０  コントロールモジュール
２１  マイクロプロセッサ
２２  ＲＯＭ
２３  ＲＡＭ
２４  ＦＰＧＡ
２５  不揮発性メモリ
２６  システムバスインタフェース
２７  ローカルバス
３１  暗号化されたソフトウェアオブジェクト群
３２  暗号化された暗号解読回路情報
３３  暗号化された暗号解読許可テーブル
４０  暗号解読許可テーブル
４１  プログラムNo.
４２  フラグ
【図１】
0004730927.tif 000002
【図２】
0004730927.tif 000003
【図３】
0004730927.tif 000004
【図４】
0004730927.tif 000005
【図５】
0004730927.tif 000006