(57)【要約】  【課題】  悪意ある第三者による逆解析による不正実行を困難にし、実行するロードモジュールの安全性を高めることができるコンピュータシステム及びプログラム実行方法を提供する。  【解決手段】  実行するプログラムを中央装置２に記憶しておき、実行時に端末装置１が中央装置２からプログラムを取得して実行するプログラム実行方法において、中央装置２は、端末装置１から取得要求を受信した場合、計算結果が同一であり、しかも必須情報を埋め込む位置が相違する該プログラムと異なるロードモジュールを生成し、プログラムを実行するのに必要な必須情報とともに端末装置１に送信する。端末装置１は、プログラムを受信してメモリに記憶、実行し、埋め込まれた必須情報に基づいてプログラムを実行する。【選択図】      図２
2005235076.tif 000002
【特許請求の範囲】
【請求項１】
中央装置と、該中央装置に接続された一又は複数の端末装置とで構成され、該端末装置で実行するプログラムデータを前記中央装置の第１のメモリに記憶しておき、前記端末装置で必要なプログラムを前記中央装置から取得してプログラムを実行するコンピュータシステムにおいて、
前記端末装置は、
前記中央装置に対してプログラムの取得要求を送信する手段を備え、
前記中央装置は、
前記端末装置で実行するプログラムのロードモジュールを前記第１のメモリに記憶してあるプログラム記憶部と、前記プログラムを実行するのに必要な必須情報を記憶してある必須情報記憶部と、前記端末装置から取得要求を受信した場合、該当するプログラムのロードモジュールを解析し、前記必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、前記必須情報を埋め込む位置が相違する前記プログラムと異なるソースコードを有するロードモジュールを生成する手段と、生成したプログラムを前記必須情報とともに前記端末装置へ送信する手段とを備え、
前記端末装置は、
前記中央装置が送信した前記プログラムを受信する手段と、
受信した前記プログラムを第２のメモリに記憶する手段と、
前記必須情報に基づいて前記プログラムを実行するために必要な情報を前記中央装置又は中央装置とネットワークにより接続された装置から取得する手段を備えることを特徴とするコンピュータシステム。
【請求項２】
前記中央装置は、前記端末装置で実行するプログラムのソースコードを前記第１のメモリに記憶しておき、前記端末装置から取得要求を受信した場合、前記必須情報を埋め込む部分より前のアドレスに位置する該プログラムのソースコードの変更又はコンパイル・リンク処理の変更により、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なるプログラムのロードモジュールを生成する手段と、生成したプログラムを前記端末装置へ送信する手段とを備えることを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記中央装置は、
前記端末装置で実行するプログラムをあらかじめ分割し、分割した部分プログラムの一部を前記第１のメモリに記憶してあり、
前記端末装置から取得要求を受信した場合、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なる部分プログラムのロードモジュールを生成する手段を備え、
前記端末装置は、
他の部分プログラムを前記第２のメモリに記憶してあり、
前記中央装置が送信した前記部分プログラムを受信する手段と、受信した前記部分プログラムを前記第２のメモリに記憶する手段と、必要な部分プログラムを前記中央装置から取得してプログラムを実行する手段とを備えることを特徴とする請求項１又は２記載のコンピュータシステム。
【請求項４】
前記端末装置は、前記部分プログラムを実行後、実行を完了した部分プログラムを前記第２のメモリから消去する手段、又は前記第２のメモリ上の部分プログラムデータを無効データにより上書きする手段を備えることを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
前記端末装置は、プログラムの取得要求の際に利用者情報を送信し、前記中央装置又は前記中央装置とネットワークにより接続された装置は前記必須情報を前記利用者情報と対応付けて記憶し、前記端末装置は前記中央装置又は前記中央装置とネットワークにより接続された装置に前記利用者情報を送信し、前記利用者情報に対応した前記必須情報に基づいて、正当な利用者のみがプログラムを実行できるようになしてあることを特徴とする請求項１乃至４のいずれか一項に記載のコンピュータシステム。
【請求項６】
前記中央装置は、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なるロードモジュールを有する前記プログラムを適当な時間間隔で生成する手段と、前記第１のメモリに記憶されているプログラムを該手段で生成した前記プログラムに更新する手段とを備えることを特徴とする請求項１乃至４のいずれか一項に記載のコンピュータシステム。
【請求項７】
前記端末装置で実行するプログラムのロードモジュールを前記第１のメモリに記憶してあるプログラム記憶部と、前記プログラムを実行するのに必要な必須情報を記憶してある必須情報記憶部と、前記端末装置から取得要求を受信した場合、該当するプログラムのロードモジュールを解析し、前記必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、前記必須情報を埋め込む位置が相違する前記プログラムと異なるソースコードを有するロードモジュールを生成する手段と、生成したプログラムを前記必須情報とともに前記端末装置へ送信する手段とを備えることを特徴とする中央装置。
【請求項８】
中央装置と、該中央装置に接続された一又は複数の端末装置とで構成され、該端末装置で実行するプログラムデータを前記中央装置の第１のメモリに記憶しておき、前記端末装置で必要なプログラムを前記中央装置から取得してプログラムを実行するプログラム実行方法において、
前記端末装置は、
前記中央装置に対してプログラムの取得要求を送信し、
前記中央装置は、
前記端末装置で実行するプログラムのロードモジュールを記憶してあり、前記プログラムを実行するのに必要な必須情報を記憶してあり、前記端末装置から取得要求を受信した場合、該当するプログラムのロードモジュールを解析し、前記必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、前記必須情報を埋め込む位置が相違する前記プログラムと異なるソースコードを有するロードモジュールを生成し、生成したプログラムを前記必須情報とともに前記端末装置へ送信し、
前記端末装置は、
前記中央装置が送信した前記プログラムを受信し、
受信した前記プログラムを第２のメモリに記憶し、
前記必須情報に基づいて前記プログラムを実行するために必要な情報を前記中央装置又は中央装置とネットワークにより接続された装置から取得することを特徴とするプログラム実行方法。
【請求項９】
前記中央装置は、前記端末装置で実行するプログラムのソースコードを記憶しておき、前記端末装置から取得要求を受信した場合、前記必須情報を埋め込む部分より前のアドレスに位置する前記プログラムのソースコードの変更又はコンパイル・リンク処理の変更により、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する該プログラムと異なるプログラムのロードモジュールを生成し、生成したプログラムを前記端末装置へ送信することを特徴とする請求項８記載のプログラム実行方法。
【請求項１０】
前記中央装置は、
前記端末装置で実行するプログラムをあらかじめ分割し、分割した部分プログラムの一部を記憶してあり、
前記端末装置から取得要求を受信した場合、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なる部分プログラムのロードモジュールを生成し、
前記端末装置は、
他の部分プログラムを記憶してあり、
前記中央装置が送信した前記部分プログラムを受信し、受信した前記部分プログラムを記憶し、必要な部分プログラムを前記中央装置から取得してプログラムを実行することを特徴とする請求項８又は９記載のプログラム実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、悪意の第三者により実行したプログラムの内容を逆解析された場合であっても該プログラムの不正実行を困難にするコンピュータシステム、中央装置及びプログラム実行方法に関する。
【背景技術】
【０００２】
近年、ブロードバンドインターネットに代表される常時接続環境が普及し、悪意ある第三者による不正なプログラムの実行、更新等に対する安全性を確保する技術が着目されている。特に、パーソナルコンピュータ（Personal Computer：以下「ＰＣ」という。）はオープンなアーキテクチャを有し、ＰＣ上で実行されるプログラムは、オペレーティングシステム（以下、ＯＳという。）又はプロセッサに準拠した形式のプログラムコードとして記述される。したがって、基本的には誰でもＰＣ上のメインメモリの内容を確認し、理解することができるため、安全性を確保することは困難であるという問題点があった。
【０００３】
斯かる問題点を解決すべく、従来は、実行されるプログラムを難読化又はセキュア化する技術を使用し、例えばプログラムのロジックを複雑にすることにより逆解析を困難にする、プログラムを暗号化する、プログラムをメモリに動的に書き込みながら実行する（特許文献１参照）等の対策が取られている。
【０００４】
また、特許文献２には、アプリケーションで用いるソフトウェアを中央装置と端末装置とで分割して格納し、乱数制御により端末装置に送信するロードモジュールを選択することにより、全てのソフトウェアが端末装置に同時に存在しないようにするとともに、同じ処理の実行時において逆解析結果が異なるようにすることができるソフトウェア解析保護方法が開示されている。斯かるソフトウェア解析保護方法を用いる場合、端末装置のメモリに書き込まれたプログラムに適当な部分プログラムが組み込まれることによりプログラムを実行することから、逆解析が成功裏に終わった場合であってもプログラム全体を把握することができず、逆解析実行者は該プログラムを容易に実行することができない。
【特許文献１】特開平１１−２３２１０３号公報
【特許文献２】特開平８−１６３８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、実行されるプログラムを難読化又はセキュア化する技術を使用する方法では、いかにプログラムを難読化又はセキュア化しようと、最終的にはオープンなアーキテクチャ上で動作するプログラムとして記述することには変わりはない。したがって、メモリに書き込まれたロードモジュールを逆解析し、周知であるオープンなアーキテクチャに沿って命令、データ等を調査することで、実行されるプログラムの内容を解析することは可能であり、第三者による不正な攻撃を防ぐことはできないという問題点があった。
【０００６】
また、アプリケーションで用いるソフトウェアを中央装置と端末装置で分割して記憶しておき、乱数制御により端末装置に送信するロードモジュールを選択することにより、全てのソフトウェアが端末装置に同時に存在しないように制御した場合であっても、プログラムにおける部分プログラムの組み込みアドレスは一定のアドレスに存在する。したがって、複数回メモリのイメージコピーを入手し、入手したイメージコピーを対比することにより、プログラムにおける部分プログラムの組み込みアドレスを容易に割り出すことができ、プログラム全体を逆解析することが可能であることから、第三者による不正な攻撃を防ぐことはできないという問題点もあった。
【０００７】
本発明は斯かる事情に鑑みてなされたものであり、悪意ある第三者による逆解析による不正実行を困難にし、実行するロードモジュールの安全性を高めることができるコンピュータシステム、中央装置及びプログラム実行方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために第１発明に係るコンピュータシステムは、中央装置と、該中央装置に接続された一又は複数の端末装置とで構成され、該端末装置で実行するプログラムデータを前記中央装置の第１のメモリに記憶しておき、前記端末装置で必要なプログラムを前記中央装置から取得してプログラムを実行するコンピュータシステムにおいて、前記端末装置は、前記中央装置に対してプログラムの取得要求を送信する手段を備え、前記中央装置は、前記端末装置で実行するプログラムのロードモジュールを前記第１のメモリに記憶してあるプログラム記憶部と、前記プログラムを実行するのに必要な必須情報を記憶してある必須情報記憶部と、前記端末装置から取得要求を受信した場合、該当するプログラムのロードモジュールを解析し、前記必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、前記必須情報を埋め込む位置が相違する前記プログラムと異なるソースコードを有するロードモジュールを生成する手段と、生成したプログラムを前記必須情報とともに前記端末装置へ送信する手段とを備え、前記端末装置は、前記中央装置が送信した前記プログラムを受信する手段と、受信した前記プログラムを第２のメモリに記憶する手段と、前記必須情報に基づいて前記プログラムを実行するために必要な情報を前記中央装置又は中央装置とネットワークにより接続された装置から取得する手段を備えることを特徴とする。
【０００９】
第１発明に係るコンピュータシステムでは、端末装置で実行するプログラムのロードモジュールを中央装置に記憶しておき、プログラムの実行時には、端末装置から中央装置にプログラムの取得要求を行い、取得要求を受けた中央装置では該プログラムのロードモジュールを解析し、必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、必須情報を埋め込む位置が相違している、異なるソースコードを有するロードモジュールを生成し、生成したプログラムを必須情報とともに端末装置へ送信する。この必須情報は、該プログラムを有意に実行するために必要となる情報である。例えばプログラムの実行許可権限情報や、該プログラムが取り扱うコンテンツ情報の暗号を復号化するための復号鍵情報などである。また、それらのプログラムの有意な実行に必要となる情報を計算するために必要となる元情報や計算方法も必須情報に含まれる。必須情報は、中央装置で、適当な時間間隔あるいはプログラム取得要求ごとに更新する。端末装置でプログラムの実行を開始すると、必須情報に基づいてプログラムを実行するために必要な情報を中央装置ないし中央装置とネットワークで接続された装置から取得する。必須情報が間違っていた場合、有意にプログラムの実行をすることができない。これにより、まずプログラムの実行毎にロードモジュールに含まれる必須情報のアドレスや計算方法を変化させることができるため、悪意ある第三者は、プログラム実行に必要な必須情報の格納アドレスを一義的に定めることが困難である。また、悪意ある第三者によりプログラムを解析された場合でも、必須情報は中央装置で適当な時間間隔又はプログラム取得毎に更新することができるため、解析されたプログラムに埋め込まれた必須情報を無効化することが可能となる。
【００１０】
また、第２発明に係るコンピュータシステムは、第１発明において、前記中央装置は、前記端末装置で実行するプログラムのソースコードを前記第１のメモリに記憶しておき、前記端末装置から取得要求を受信した場合、前記必須情報を埋め込む部分より前のアドレスに位置する該プログラムのソースコードの変更又はコンパイル・リンク処理の変更により、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なるプログラムのロードモジュールを生成する手段と、生成したプログラムを前記端末装置へ送信する手段とを備えることを特徴とする。なお、「コンパイル・リンク処理の変更」とは、同じソースコードから異なる命令コードやアドレス配置を持つロードモジュールを生成することを意味する。
【００１１】
第２発明に係るコンピュータシステムでは、端末装置で実行するプログラムのソースコードを中央装置に記憶しておき、プログラムの実行時には、該プログラムのソースコードをコンパイル・リンクしてロードモジュールを生成する。このとき、ソースコードを変更するか、コンパイル・リンク処理を変更することにより、計算結果が同一であり、しかも必須情報を埋め込む位置が相違する該プログラムと異なるロードモジュールを生成し、該プログラムを実行するために必要な情報を取得するための必須情報とともに端末装置へ送信する。ソースコードに基づいて解析と変更を行う、又はソースコードのコンパイル・リンク時に異なるロードモジュールの生成を行うため、ロードモジュールを解析・変更するのに比べてソースコードの解析に基づいた精細なロードモジュールの変更が可能となる。
【００１２】
また、第３発明に係るコンピュータシステムは、第１又は第２発明において、前記中央装置は、前記端末装置で実行するプログラムをあらかじめ分割し、分割した部分プログラムの一部を前記第１のメモリに記憶してあり、前記端末装置から取得要求を受信した場合、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なる部分プログラムのロードモジュールを生成する手段を備え、前記端末装置は、他の部分プログラムを前記第２のメモリに記憶してあり、前記中央装置が送信した前記部分プログラムを受信する手段と、受信した前記部分プログラムを前記第２のメモリに記憶する手段と、必要な部分プログラムを前記中央装置から取得してプログラムを実行する手段とを備えることを特徴とする。
【００１３】
第３発明に係るコンピュータシステムでは、端末装置で実行するプログラムを分割して、中央装置と端末装置に分割して記憶しておく。端末装置でプログラムを実行すると、端末装置になく中央装置にある部分プログラムが必要になるタイミングで端末装置から中央装置に部分プログラムの取得要求を行う。中央装置では部分プログラムの取得要求に応じ、計算結果が同一であり、しかも必須情報を埋め込む位置が相違する該プログラムと異なる部分プログラムを生成し、プログラムを実行するために必要な必須情報を埋め込んで端末装置に送信する。端末装置では取得した部分プログラムを実行する。これにより、必須情報を部分プログラムに埋め込むことで、プログラム実行中にも必須情報及び部分プログラムのロードモジュールを更新していくことが可能となり、悪意ある第三者が、プログラム実行中にロードモジュールを解析して利用することが困難であり、逆解析に成功した場合であっても不正にプログラムを実行することができず、実行するプログラムの安全性を確保することが可能となる。
【００１４】
また、第４発明に係るコンピュータシステムは、第３発明において、前記端末装置は、前記部分プログラムを実行後、実行を完了した部分プログラムを前記第２のメモリから消去する手段、又は前記第２のメモリ上の部分プログラムデータを無効データにより上書きする手段を備えることを特徴とする。
【００１５】
第４発明に係るコンピュータシステムでは、部分プログラムを実行後、メモリに記憶されている部分プログラムデータを実行が完了したものとしてメモリから消去するか、無効なデータにより上書きする。これにより、実行プログラムのすべての部分プログラムがメモリ上に記憶されることがないので、悪意ある第三者が逆解析を試みた場合であっても、実行プログラムの全体を把握することが困難となり、実行するプログラムの安全性を確保することが可能となる。
【００１６】
また、第５発明に係るコンピュータシステムは、第１乃至第４発明において、前記端末装置は、プログラムの取得要求の際に利用者情報を送信し、前記中央装置又は前記中央装置とネットワークにより接続された装置は前記必須情報を前記利用者情報と対応付けて記憶し、前記端末装置は前記中央装置又は前記中央装置とネットワークにより接続された装置に前記利用者情報を送信し、前記利用者情報に対応した前記必須情報に基づいて、正当な利用者のみがプログラムを実行できるようになしてあることを特徴とする。
【００１７】
第５発明に係るコンピュータシステムでは、端末装置はプログラムの取得要求の際に利用者情報を送信し、中央装置ではプログラムに埋め込む必須情報を利用者と対応付けて記憶する。プログラムは利用者情報と、プログラムに埋め込まれた必須情報あるいは必須情報から計算可能な情報を中央装置又は中央装置とネットワークで接続された装置に送信する。中央装置又は中央装置とネットワークで接続された装置は、受信した利用者情報及び必須情報を中央装置に記憶してある利用者情報及び必須情報と照合し、認証などの処理を行う。これにより該プログラムは中央装置からプログラムを取得した利用者以外実行することができず、実行するプログラムの安全性を確保することが可能となる。
【００１８】
また、第６発明に係るコンピュータシステムは、第１乃至第４発明において、前記中央装置は、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なるロードモジュールを有する前記プログラムを適当な時間間隔で生成する手段と、前記第１のメモリに記憶されているプログラムを該手段で生成した前記プログラムに更新する手段とを備えることを特徴とする。
【００１９】
第６発明に係るコンピュータシステムでは、計算結果が同一であり、しかも必須情報を埋め込む位置が相違する異なるロードモジュールを有するプログラムを適当な時間間隔で生成し、中央装置のメモリを更新する。これにより、端末装置上のプログラムコードの逆解析に成功した悪意ある第三者であっても、実行時にはプログラムが絶えず更新されていることから、実行に必要な固有の情報及びその格納アドレスを一義的に定めることが困難であり、不正にプログラムを実行することができず、実行するプログラムの安全性を確保することが可能となる。
【００２０】
また、第７発明に係る中央装置は、前記端末装置で実行するプログラムのロードモジュールを前記第１のメモリに記憶してあるプログラム記憶部と、前記プログラムを実行するのに必要な必須情報を記憶してある必須情報記憶部と、前記端末装置から取得要求を受信した場合、該当するプログラムのロードモジュールを解析し、前記必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、前記必須情報を埋め込む位置が相違する前記プログラムと異なるソースコードを有するロードモジュールを生成する手段と、生成したプログラムを前記必須情報とともに前記端末装置へ送信する手段とを備えることを特徴とする。
【００２１】
第７発明に係る中央装置では、端末装置で実行するプログラムのロードモジュールを中央装置に記憶しておき、プログラムの実行時には、端末装置から中央装置にプログラムの取得要求を行い、取得要求を受けた中央装置では該プログラムのロードモジュールを解析し、必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、必須情報を埋め込む位置が相違している、異なるソースコードを有するロードモジュールを生成し、生成したプログラムを必須情報とともに端末装置へ送信する。この必須情報は、該プログラムを有意に実行するために必要となる情報である。例えばプログラムの実行許可権限情報や、該プログラムが取り扱うコンテンツ情報の暗号を復号化するための復号鍵情報などである。また、それらのプログラムの有意な実行に必要となる情報を計算するために必要となる元情報や計算方法も必須情報に含まれる。必須情報は、中央装置で、適当な時間間隔あるいはプログラム取得要求ごとに更新する。端末装置でプログラムの実行を開始すると、必須情報に基づいてプログラムを実行するために必要な情報を中央装置ないし中央装置とネットワークで接続された装置から取得する。必須情報が間違っていた場合、有意にプログラムの実行をすることができない。これにより、まずプログラムの実行毎にロードモジュールに含まれる必須情報のアドレスや計算方法を変化させることができるため、悪意ある第三者は、プログラム実行に必要な必須情報の格納アドレスを一義的に定めることが困難である。また、悪意ある第三者によりプログラムを解析された場合でも、必須情報は中央装置で適当な時間間隔又はプログラム取得毎に更新することができるため、解析されたプログラムに埋め込まれた必須情報を無効化することが可能となる。
【００２２】
次に上記目的を達成するために第８発明に係るプログラム実行方法は、中央装置と、該中央装置に接続された一又は複数の端末装置とで構成され、該端末装置で実行するプログラムデータを前記中央装置の第１のメモリに記憶しておき、前記端末装置で必要なプログラムを前記中央装置から取得してプログラムを実行するプログラム実行方法において、前記端末装置は、前記中央装置に対してプログラムの取得要求を送信し、前記中央装置は、前記端末装置で実行するプログラムのロードモジュールを記憶してあり、前記プログラムを実行するのに必要な必須情報を記憶してあり、前記端末装置から取得要求を受信した場合、該当するプログラムのロードモジュールを解析し、前記必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、前記必須情報を埋め込む位置が相違する前記プログラムと異なるソースコードを有するロードモジュールを生成し、生成したプログラムを前記必須情報とともに前記端末装置へ送信し、前記端末装置は、前記中央装置が送信した前記プログラムを受信し、受信した前記プログラムを第２のメモリに記憶し、前記必須情報に基づいて前記プログラムを実行するために必要な情報を前記中央装置又は中央装置とネットワークにより接続された装置から取得することを特徴とする。
【００２３】
第８発明に係るプログラム実行方法では、端末装置で実行するプログラムのロードモジュールを中央装置に記憶しておき、プログラムの実行時には、端末装置から中央装置にプログラムの取得要求を行い、取得要求を受けた中央装置では該プログラムのロードモジュールを解析し、必須情報を埋め込む部分より前のアドレスに位置し、計算結果が同一であり、必須情報を埋め込む位置が相違している、異なるソースコードを有するロードモジュールを生成し、生成したプログラムを必須情報とともに端末装置へ送信する。この必須情報は、該プログラムを有意に実行するために必要となる情報である。例えばプログラムの実行許可権限情報や、該プログラムが取り扱うコンテンツ情報の暗号を復号化するための復号鍵情報などである。また、それらのプログラムの有意な実行に必要となる情報を計算するために必要となる元情報や計算方法も必須情報に含まれる。必須情報は、中央装置で、適当な時間間隔あるいはプログラム取得要求ごとに更新する。端末装置でプログラムの実行を開始すると、必須情報に基づいてプログラムを実行するために必要な情報を中央装置ないし中央装置とネットワークで接続された装置から取得する。必須情報が間違っていた場合、有意にプログラムの実行をすることができない。これにより、まずプログラムの実行毎にロードモジュールに含まれる必須情報のアドレスや計算方法を変化させることができるため、悪意ある第三者は、プログラム実行に必要な必須情報の格納アドレスを一義的に定めることが困難である。また、悪意ある第三者によりプログラムを解析された場合でも、必須情報は中央装置で適当な時間間隔又はプログラム取得毎に更新することができるため、解析されたプログラムに埋め込まれた必須情報を無効化することが可能となる。
【００２４】
また、第９発明に係るプログラム実行方法は、第８発明において、前記中央装置は、前記端末装置で実行するプログラムのソースコードを記憶しておき、前記端末装置から取得要求を受信した場合、前記必須情報を埋め込む部分より前のアドレスに位置する前記プログラムのソースコードの変更又はコンパイル・リンク処理の変更により、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する該プログラムと異なるプログラムのロードモジュールを生成し、生成したプログラムを前記端末装置へ送信することを特徴とする。
【００２５】
第９発明に係るプログラム実行方法では、端末装置で実行するプログラムのソースコードを中央装置に記憶しておき、プログラムの実行時には、必須情報を埋め込む位置が相違する該プログラムのソースコードをコンパイル・リンクしてロードモジュールを生成する。このとき、ソースコードを変更するか、コンパイル・リンク処理を変更することにより、計算結果が同一であり、しかも該プログラムと異なるロードモジュールを生成し、該プログラムを実行するために必要な情報を取得するための必須情報とともに端末装置へ送信する。ソースコードに基づいて解析と変更を行う、又はソースコードのコンパイル・リンク時に異なるロードモジュールの生成を行うため、ロードモジュールを解析・変更するのに比べてソースコードの解析に基づいた精細なロードモジュールの変更が可能となる。
【００２６】
また、第１０発明に係るプログラム実行方法は、第８又は第９発明において、前記中央装置は、前記端末装置で実行するプログラムをあらかじめ分割し、分割した部分プログラムの一部を記憶してあり、前記端末装置から取得要求を受信した場合、計算結果が同一であり、しかも前記必須情報を埋め込む位置が相違する前記プログラムと異なる部分プログラムのロードモジュールを生成し、前記端末装置は、他の部分プログラムを記憶してあり、前記中央装置が送信した前記部分プログラムを受信し、受信した前記部分プログラムを記憶し、必要な部分プログラムを前記中央装置から取得してプログラムを実行することを特徴とする。
【００２７】
第１０発明に係るプログラム実行方法では、端末装置で実行するプログラムを分割して、中央装置と端末装置に分割して記憶しておく。端末装置でプログラムを実行すると、端末装置になく中央装置にある部分プログラムが必要になるタイミングで端末装置から中央装置に部分プログラムの取得要求を行う。中央装置では部分プログラムの取得要求に応じ、計算結果が同一であり、しかも該プログラムと異なる部分プログラムを生成し、プログラムを実行するために必要な必須情報を埋め込んで端末装置に送信する。端末装置では取得した部分プログラムを実行する。これにより、必須情報を部分プログラムに埋め込むことで、プログラム実行中にも必須情報及び部分プログラムのロードモジュールを更新していくことが可能となり、悪意ある第三者が、プログラム実行中にロードモジュールを解析して利用することが困難であり、逆解析に成功した場合であっても不正にプログラムを実行することができず、実行するプログラムの安全性を確保することが可能となる。
【発明の効果】
【００２８】
第１発明、第７発明、又は第８発明によれば、プログラムの実行に必要な必須情報を変化させれば、以前に中央装置から端末装置に送信した該プログラムを無効化できるため、プログラムを解析された場合、あるいは悪意ある第三者が逆解析に成功した場合であっても不正にプログラムを実行することができない。また、実行するプログラムに埋め込まれた、プログラムの実行に必要な必須情報のアドレス、計算方法等がプログラムを取得するたびに変化するため、悪意ある第三者がプログラムの解析により必須情報を特定しようとする場合、プログラムの取得毎にプログラムの解析を行う必要があるため、不正解析のコストを飛躍的に増大させることが可能となる。
【００２９】
また、第２発明又は第９発明によれば、中央装置に該プログラムのロードモジュールの代わりにソースコードを記憶しておき、ソースコードを変更する、又はコンパイル・リンク処理を変更して、計算結果は同一であり、かつ必須情報を埋め込む位置が相違する、異なるプログラムのロードモジュールを生成する。これにより、より精細なプログラムの変更が可能となる。
【００３０】
また、第３発明又は第１０発明によれば、プログラムを分割しておき、必要な部分プログラムのみを中央装置から取得するようにすることで、中央装置と端末装置間の通信データ量を減らすことが可能となる。また、プログラムの実行中も必要な部分プログラムをその都度取得・更新することから、必須情報のデータ、アドレス等も変更可能であり、悪意ある第三者によるプログラムの解析が困難となり、実行するプログラムの安全性を確保することが可能となる。
【００３１】
また、第４発明によれば、部分プログラムを実行後メモリから消去又は無効データで上書きすることにより、さらに悪意ある第三者によるプログラムの解析が困難となり、実行するプログラムの安全性を確保することが可能となる。
【００３２】
また、第５発明によれば、中央装置からプログラムを取得する際に端末装置から利用者情報を送信し、それを必須情報と対応づけて記憶しておく。プログラム実行時には利用者情報及び必須情報に基づいて、中央装置又は中央装置とネットワークで接続された装置にて処理を行うようにすることで、利用者情報と必須情報との対応がとれないプログラムのロードモジュールの利用を制限することができる。よって、悪意ある第三者が更新前のプログラムのロードモジュールの逆解析に成功した場合であっても、不正な利用者による利用を制限することができ、実行するプログラムの安全性を確保することが可能となる。
【００３３】
また、第６発明によれば、中央装置で必須情報及びプログラムのロードモジュールを適当な時間間隔で更新することにより、悪意ある第三者が更新前のプログラムのロードモジュールの逆解析に成功した場合であっても、そのロードモジュールの必須情報及びロードモジュールの解析を更新に伴い無効にすることができる。悪意ある第三者がプログラムを不正利用しようとした場合、更新のたびに実行するプログラムの逆解析を行う必要があるため、不正解析のコストが増大し、よって実行するプログラムの安全性を確保することが可能となる。
【発明を実施するための最良の形態】
【００３４】
（実施の形態１）
以下、本発明の実施の形態１に係るコンピュータシステムについて図面に基づいて具体的に説明する。図１は、本発明の実施の形態１に係るコンピュータシステムの概要を示す構成図である。図１に示すように、本実施の形態１に係るコンピュータシステムは、端末装置１と中央装置２とからなり、端末装置１は、インターネット３のような通信手段を介して、中央装置２と相互に通信可能となるように接続されている。本実施の形態１では、アプリケーションプログラムの実行は、端末装置１上で行われる。
【００３５】
端末装置１は、少なくとも、ＣＰＵ（中央演算装置）１１、ＲＡＭ１２、記憶手段１３、インターネット３のような外部の通信手段と接続する通信インタフェース１４及び上述したハードウェアを接続する内部バス１５で構成する。
【００３６】
ＣＰＵ１１は、内部バス１５を介して端末装置１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部を制御するとともに、記憶手段１３に記憶されている処理プログラム、例えばプログラムローダとして、プログラムをロードして実行するプログラムに従って、種々のソフトウェア的機能を実行する。記憶手段１３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ、又はＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体であっても良い。
【００３７】
ＲＡＭ１２は、ＳＲＡＭ、フラッシュメモリ等で構成され、ソフトウェアの実行時に発生する一時的なデータを記憶し、中央装置２から受信したプログラムについても書き込まれる。
【００３８】
通信インタフェース１４は内部バス１５に接続されており、ＬＡＮ、ＷＡＮ等のケーブルに接続されることにより、処理に必要とされるデータを送受信する。
【００３９】
中央装置２も端末装置１と同様、少なくとも、ＣＰＵ（中央演算装置）２１、ＲＡＭ２２、記憶手段２３、インターネット３のような外部の通信手段と接続する通信インタフェース２４、及び上述したハードウェアを接続する内部バス２５で構成する。
【００４０】
ＣＰＵ２１は、内部バス２５を介して中央装置２の上述したようなハードウェア各部と接続されており、上述したハードウェア各部を制御するとともに、記憶手段２３に記憶されている処理プログラムに従って、種々のソフトウェア的機能を実行する。記憶手段２３は、プログラムのロードモジュールを記憶するプログラム記憶部２３１、プログラムを実行するための必須情報を記憶する必須情報記憶部２３２を含む。記憶手段２３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ、又はＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体であっても良い。
【００４１】
ＲＡＭ２２は、ＳＲＡＭ、フラッシュメモリ等で構成され、ソフトウェアの実行時に発生する一時的なデータを記憶し、記憶手段２３のプログラム記憶部２３１に記憶されているプログラムが書き込まれる。また、プログラムの生成又は更新時には、記憶手段２３の必須情報記憶部２３２に記憶されている必須情報も書き込まれる。
【００４２】
通信インタフェース２４は内部バス２５に接続されており、ＬＡＮ、ＷＡＮ等のケーブルに接続されることにより、処理に必要とされるデータを送受信する。
【００４３】
以下、上述した構成の端末装置１及び中央装置２を用いたコンピュータシステムの動作について説明する。図２は、本発明の実施の形態１に係るコンピュータシステムでのプログラム実行処理の動作を示す図である。
【００４４】
まず実行対象となるプログラムのロードモジュールを、中央装置２のプログラム記憶部２３１に記憶しておく。
【００４５】
実行対象となるプログラムを実行する場合、まず端末装置１のＣＰＵ１１は、インターネット３を介して、中央装置２に対して、プログラムの取得要求信号を送信する。プログラムの取得要求信号を受信した中央装置２は、取得要求信号に従ってプログラム記憶部２３１に記憶してあるプログラムの中から実行対象となるプログラムを抽出する。
【００４６】
中央装置２のＣＰＵ２１は、抽出したプログラムのロードモジュールを逆解析し、計算結果は同じになるが、異なるロードモジュールへとロードモジュールの変換を行い、必須情報記憶部２３２から必須情報を読み出してロードモジュールに埋め込み、端末装置１へ送信する新たなプログラムのロードモジュールを生成する。なお、ロードモジュールを逆解析する方法に限定されるものではなく、例えばプログラムのソースコードに必須情報を埋め込み、コンパイル・リンクしてロードモジュールを生成する方法でもよい。
【００４７】
上述した端末装置１へ送信する新たなプログラムの生成処理は、具体的には、元のプログラム対して、命令コードとして異なる命令コードを利用する、命令コードの位置をシャフリングする等により、元のプログラムと計算結果が同一であり、かつ異なったロードモジュールを生成する。図３及び図４は、端末装置１へ送信するプログラムの生成処理の例を示す図である。
【００４８】
図３は、異なる命令コードを利用する場合の新たなプログラムの生成処理の例示図である。命令コード３０は元のプログラムのロードモジュールに含まれる命令コードであり、レジスタｅｂｘに、スタック先頭のデータの値に‘５０００’を加算した値を格納し、レジスタｅａｘを０（ゼロ）クリアするプログラムである。
【００４９】
元のプログラムの命令コード３０と計算結果が同じになるよう命令コードを変更した例が、変更後のプログラムの命令コード３１、３２である。変更後のプログラムの命令コード３１、３２では、元のプログラムの命令コード３０を解析した結果、レジスタｅａｘが最終的に０（ゼロ）クリアされることがわかり、プログラム開始から最後にレジスタｅａｘが０（ゼロ）クリアされるまでの間にレジスタｅａｘを用いたいかなる演算を行った場合であっても計算結果は変化しないことがわかる。
【００５０】
斯かる事実を利用して、変更後のプログラムの命令コード３１では、まずレジスタｅａｘに‘１０００’を代入し、‘５’を乗算している。この時点でレジスタｅａｘには‘５０００’が格納されている。そして、レジスタｅｂｘにスタックデータの先頭データを読み込み、レジスタｅａｘの値を加算している。
【００５１】
ここまでの処理で、レジスタｅｂｘには元のプログラムと同じ、スタック先頭のデータの値に‘５０００’を加算した値が格納される。最後にレジスタｅａｘを０（ゼロ）クリアすることで、元のプログラムと計算結果はまったく同じになる。
【００５２】
変更後のプログラムの命令コード３２では、まずレジスタｅａｘにスタック先頭の値を格納する。そしてレジスタｅｂｘに‘５０００’を読み込んだ後、レジスタｅａｘに格納されたスタック先頭のデータの値を加算している。
【００５３】
ここまでの処理で、レジスタｅｂｘには元のプログラムと同じ、スタック先頭のデータの値に‘５０００’を加算した値が格納される。最後に命令コードは異なるが、同じ結果となるようレジスタｅａｘへ０（ゼロ）を代入することで、元のプログラムの命令コードと計算結果がまったく同じになる。
【００５４】
図４は、命令コードの位置をシャフリングする場合の端末装置１へ送信するプログラムの生成処理の例示図である。図４では、元のプログラムの命令コード３０をアドレス０ｘ１００−０ｘ２００、０ｘ２００−０ｘ３００、０ｘ３００−０ｘ４００の３つの小プログラム１０１〜１０３に分割する。小プログラムへの分割時は、元のプログラムの命令コード３０を解析し、１つの命令やデータ配列が複数の小プログラムに分割されることはないようにする。
【００５５】
次に、分割した小プログラムの配置を入れ替える。同時に、プログラム内を参照しているアドレス部分を、入れ替えられた配置に従うように書き換える。
【００５６】
例えば、元のプログラムのロードモジュール内の命令コード３０において、小プログラム１０２に含まれる、アドレス０ｘ１０８のデータをレジスタｅａｘに加算するという命令では、元のプログラムの命令コード３０内の小プログラム１０１が参照されている。変換後の命令コード３３では、小プログラム１０１はアドレス０ｘ３００に配置されていることから、小プログラム１０２から参照している部分を書き換える。図４では、アドレス０ｘ１０８を参照していたものを、アドレス０ｘ３０８を参照するように書き換えている。同様の処理を、すべての小プログラムの命令コードについて実行する。これにより、計算結果が同じであり、元のプログラムのロードモジュール内の命令コード３０と異なる命令コード３３を持つプログラムのロードモジュールを生成する。
【００５７】
プログラムのロードモジュールの生成処理が終了した場合、中央装置２のＣＰＵ２１は、端末装置１に対して生成したプログラムを送信する。端末装置１のＣＰＵ１１では、受信したプログラムをＲＡＭ１２に書き込む。
【００５８】
中央装置２のＣＰＵ２１は、該プログラムの取得要求を受信した場合、取得要求を送信した利用者情報を記憶する。利用者情報としては、例えばＩＰアドレスであってもよいし、何らかのユーザＩＤでもよい。ＣＰＵ２１は、プログラムの取得要求に応じて、必須情報も含めて、対象となるプログラムのロードモジュールを変換する。
【００５９】
そして、乱数等を用いて毎回異なる必須情報を生成し、生成した必須情報をロードモジュールに埋め込む。この必須情報を埋め込む際には、例えば、必須情報を埋め込む位置である必須情報保持領域の情報をプログラムのロードモジュールと別途記憶しておき、その情報に基づき必須情報を埋め込めばよい。図５の例では、変換前はアドレス１００にあった必須情報保持領域が命令コードの変換によりアドレス３００に移動しているので、アドレス３００に必須情報（本実施例では０１２３４５６７ｈ）を書き込む。
【００６０】
中央装置２では、取得要求を送信してきた利用者情報、例えばＩＰアドレスと、必須情報保持領域に書き込んだ必須情報との対応付けを、例えば図６に示すようにテーブルとして必須情報記憶部２３２に記憶しておく。図６は、ＩＰアドレスと、必須情報との関係を示す必須情報記憶部２３２のデータ構成の例示図である。
【００６１】
端末装置１でプログラムを実行する場合、端末装置１から中央装置２に対して利用者情報及び必須情報あるいは必須情報により計算可能な情報を送信し、中央装置２で必須情報記憶部２３２と一致することが確認できた場合にのみ実行許可権限情報を端末装置１に送信し、実行許可権限情報を受信した端末装置１は該プログラムの実行を開始する。
【００６２】
したがって、ＲＡＭ１２のイメージコピー等により不正にプログラムを取得し、逆解析を行った悪意ある第三者は、必須情報がプログラムのどのアドレスに埋め込まれているのか特定することができず、中央装置２による実行許可権限情報の送信を受けることができない。したがって、第三者による不正な実行を未然に回避することが可能となる。
【００６３】
このとき、必須情報として実行許可権限情報ではなく、別のプログラムの有意な実行に必要な情報を用いてもよい。例えば中央装置２又は中央装置２とネットワークで接続された装置からコンテンツ情報を取得・使用するようなプログラムであれば、中央装置２又は中央装置２とネットワークで接続された装置から取得するコンテンツ情報を復号化する復号鍵情報を必須情報として中央装置２で埋め込んでおいてもよい。
【００６４】
この場合、中央装置２のＣＰＵ２１は、元のプログラムのロードモジュールを変換して端末装置１へ送信するプログラムを生成する時に、復号鍵情報を変換後のロードモジュールに埋め込む。そして端末装置１から中央装置２又は中央装置２とネットワークで接続された装置に対しコンテンツ情報の取得要求を利用者情報と合わせて送信する。中央装置２又は中央装置２とネットワークで接続された装置は、取得要求を受信した場合、利用者情報に対応する復号鍵でのみ復号可能な形でコンテンツ情報を暗号化し、端末装置に送信する。したがって、ＲＡＭ１２のイメージコピー等により不正にプログラムを取得し、逆解析を行った悪意ある第三者が復号鍵情報を逆解析により得た場合であっても、プログラム取得毎に復号鍵情報が変化する上、ロードモジュールが変換されることによりプログラムのどのアドレスに復号鍵情報が埋め込まれているのか特定することができず、例えば中央装置２又は中央装置２とネットワークで接続された装置が記憶しているコンテンツ情報を復号することができない。したがって、第三者による不正なコンテンツ情報の利用を未然に回避することが可能となる。
【００６５】
また、必須情報として、プログラムの実行に必要な情報そのものだけでなく、実行に必要な情報を計算するための情報、計算方法等を必須情報として用いてもよい。このようにすることで、必須情報のデータのみにとどまらず、必須情報を扱う演算コードも同時に変化させることができ、悪意ある第三者による逆解析への耐性をより向上させることが可能となる。
【００６６】
以上のように本実施の形態１によれば、実行対象となるプログラムを、端末装置１のＣＰＵ１１が取得要求信号を送信するごとに中央装置で更新することにより、取得したロードモジュールのどの部分が該プログラム実行のために必要な必須情報であるかを逆解析することが困難となる。また、逆解析に成功した場合であっても、中央装置でプログラムの実行のために必要な必須情報を更新した場合には、逆解析された必須情報及び該必須情報を利用したロードモジュールを利用することができず、不正なプログラム実行を防止することが可能となる。
【００６７】
さらに、プログラムは、使用者が常時アクセスすることができる端末装置１ではなく、アクセス権限者を厳格に管理することができる中央装置２で生成することから、プログラムのロードモジュール変換方法を悪意ある第三者が解析することも困難であり、不正使用を有効に阻止することが可能となる。
【００６８】
（実施の形態２）
以下、本発明の実施の形態２に係るコンピュータシステムについて図面に基づいて具体的に説明する。実施の形態２に係るコンピュータシステムの構成は、実施の形態１と同様である。また、端末装置で実行されるプログラムをあらかじめ分割しておき、それを端末装置の記憶手段１３と中央装置の記憶手段２３に分割した部分プログラムをそれぞれ保持する。記憶手段１３は、分割された部分プログラムを記憶する部分プログラム記憶部１３１を含む。また、中央装置の記憶手段２３には、部分プログラムのロードモジュールの代わりにソースコードを保持する。また、実施の形態２では、実施の形態１で説明したように、部分プログラムの取得要求が送信されるごとに端末装置１へ送信する部分プログラムのロードモジュールの生成処理を行うのではなく、中央装置２において、適当な時間間隔で、プログラム記憶部２３１に記憶されている部分プログラムのソースコードを逆解析し、コンパイル・リンクをして、必須情報を組み込んだロードモジュールを生成する。
【００６９】
図７は、本発明の実施の形態２に係るコンピュータシステムでのプログラム実行時の動作を示す図である。まず実行対象となるプログラムを、所定の単位で複数の部分プログラムに分割する。分割したプログラムは、一部は実行する主体である端末装置１のプログラム記憶部１３１に記憶する。残りの部分プログラムは、中央装置２のプログラム記憶部２３１に記憶する。
【００７０】
プログラムを実行する場合、端末装置１のプログラム記憶部１３１になく、中央装置の２のプログラム記憶部２３１にある部分プログラムを実行するタイミングで、端末装置１のＣＰＵ１１は、インターネット３を介して、中央装置２に対して、部分プログラムの取得要求信号を送信する。部分プログラムの取得要求信号を受信した中央装置２は、取得要求信号に従ってプログラム記憶部２３１に記憶してある部分プログラムの中から実行対象となる部分プログラムを抽出する。
【００７１】
中央装置２のＣＰＵ２１は、端末装置１から部分プログラムの取得要求を受信したか否かにかかわらず、適当な時間ごとに、実施の形態１と同様の処理手順で、部分プログラムに基づいて端末装置１へ送信する新たな部分プログラムのロードモジュールを生成する。具体的には、取得要求の対象となる部分プログラムのソースコードを逆解析し、計算結果は同じになるがソースコードが相違するプログラムへとソースコードを変更する、又はコンパイル・リンク処理を変更する。ここで「コンパイル・リンク処理の変更」とは、同じソースコードから異なる命令コードやアドレス配置を持つロードモジュールを生成することを意味する。これらのソースコード変更又はコンパイル・リンク処理により、ロードモジュール生成ごとに異なるロードモジュールを生成する。そして必須情報記憶部２３２から必須情報を読み出してロードモジュールに組み込み、端末装置１へ送信する新たな部分プログラムのロードモジュールを生成する。適当な時間間隔で斯かる処理を実行するには、例えばcronを用いて実行すればよい。
【００７２】
中央装置２のＣＰＵ２１は、端末装置１から部分プログラムの取得要求を受信した場合、最新の状態の部分プログラムを、取得要求を送信した端末装置１に対して送信する。端末装置１でプログラムを実行する場合、埋め込まれた必須情報に基づき処理を行う。例えば中央装置２又は中央装置２とネットワークで接続された装置において保持するコンテンツ情報を適当な時間間隔で異なる暗号鍵により暗号化しておき、必須情報としてコンテンツ情報の復号鍵を埋め込む。そして端末装置１では、中央装置２又は中央装置２とネットワークで接続された装置から暗号化されたコンテンツ情報を取得し、埋め込まれた必須情報である復号鍵情報に基づき、コンテンツ情報を復号して使用する。
【００７３】
図８及び図９は、部分プログラムの構成及び部分プログラム受信後の端末装置１のＲＡＭ１２の書込み状態を示す図である。まず、実行プログラムを、複数の部分プログラム５１〜５３に分割しておく。部分プログラムへの分割の際、部分プログラムから他の部分プログラムを呼び出し実行する必要がある部分には、呼び出し対象となる他の部分プログラムの取得要求コードを埋め込んでおく。
【００７４】
図８（ａ）は、中央装置２で生成された部分プログラムの例示図である。なお、図８及び図９では、ＲＡＭ１２への書き込み状態を説明すべく、必須情報に関する説明は省略している。また、本例では部分プログラムの削除を行うことでより解析を困難にする例を用いているが、部分プログラムを必要時に中央装置から取得することにより必須情報を更新するのみでも、必須情報の更新とロードモジュールの変換により解析困難性を高めることができる。
【００７５】
図８（ａ）では、部分プログラムが実行完了後不要となる場合、部分プログラムをＲＡＭ１２から削除するコードを埋め込んでいる。例えば、部分プログラム５１から部分プログラム５２へはジャンプ命令で制御を移行していることから、部分プログラム５２へジャンプした後、部分プログラム５１は実行されることはない。したがって、図８（ａ）に示すように、部分プログラム５１のジャンプコードの直前に部分プログラム５１の削除コードを埋め込んでいる。
【００７６】
一方、部分プログラム５２から部分プログラム５３は、サブモジュール的に呼び出し実行される。このような場合、部分プログラム５３についても、実行完了後削除されてもよい。したがって、図８（ａ）に示すように、部分プログラム５３の部分プログラム５２へ戻るリターンコードの前に、部分プログラム５３の削除コードを埋め込んでおく。
【００７７】
図８（ｂ）は、最初に実行される部分プログラム５１がロードされた時点のＲＡＭ１２の状態を示す図である。部分プログラム５１を実行するに従って、部分プログラム５２の取得要求コードが実行される。
【００７８】
部分プログラム５２の取得要求コードが実行された場合、端末装置１から中央装置２に対して部分プログラム５２の取得要求が送信され、中央装置２は上述した処理を行うことによって変更された部分プログラム５２を返信する。図８（ｃ）は、端末装置１で受信した部分プログラム５２をＲＡＭ１２に書き込んだ状態を示す図である。
【００７９】
続いて、部分プログラム５１削除コードが実行され、部分プログラム５１はＲＡＭ１２から削除される。図９（ａ）は、部分プログラム５１をＲＡＭ１２から削除する状態を示す図である。図９（ａ）に示すように、部分プログラム５１をＲＡＭ１２から削除する場合、部分プログラム５２へのジャンプコード以外の領域に無効なコード、例えばＮＯＰを書き込んでいる。
【００８０】
部分プログラム５２へのジャンプし、部分プログラム５２を実行することで、部分プログラム５３の取得要求が実行される。該取得要求に対しても中央装置２は、部分プログラム５３のソースコードを変換後、端末装置１へ返信する。図９（ｂ）は、端末装置１が受信した部分プログラム５３をＲＡＭ１２に書き込んだ状態を示す図である。
【００８１】
その後、部分プログラム５３が実行され、リターン直前に部分プログラム５３の削除コードが実行される。図９（ｃ）は、部分プログラム５３をＲＡＭ１２から削除する状態を示す図である。図９（ｃ）に示すように、部分プログラム５３をＲＡＭ１２から削除する場合も、リターンコード以外の領域に無効なコード、例えばＮＯＰを書き込むことにより、部分プログラム５３はＲＡＭ１２から削除される。
【００８２】
部分プログラムを実行する前に、ＲＡＭ１２に書き込まれた部分プログラムに埋め込まれた必須情報を抽出する。図５は必須情報として何らかの秘密情報をソースコードに埋め込む場合の埋め込み方法の例示図である。図５に示すように、元の部分プログラムのソースコード３０には、秘密情報を保持する領域が存在する。そして、秘密情報を保持する領域を、元の部分プログラムのソースコード５０への付加情報又は元の部分プログラムのソースコード５０を解析することにより検知できるようにしておく。図５では、元の部分プログラムのソースコードの１００バイト目に秘密情報保持領域があるという付加情報７１を必須情報記憶部２３２に記憶しておく。
【００８３】
したがって、ＲＡＭ１２のイメージコピー等により不正に部分プログラムを取得し、逆解析を行った悪意ある第三者は、必須情報が部分プログラムのどのアドレスに埋め込まれているのか特定することができず、中央装置２による実行許可権限情報の送信を受けることができない。したがって、第三者による不正な実行を未然に回避することが可能となる。
【００８４】
以上のように本実施の形態２によれば、端末装置１へ送信する部分プログラムを、端末装置１のＣＰＵ１１が送信する取得要求信号と関係なく、一定周期で生成することにより、第三者にとって逆解析自体が困難になるという効果を得ることができる。また、逆解析に成功した場合であっても、必須情報及び必須情報を扱う部分プログラムは適当な時間間隔で変更されるため、逆解析された必須情報やロードモジュールを使用することは不可能となる。
【００８５】
さらに、プログラムを部分プログラムに分割し、利用後の部分プログラムをメモリから消去あるいは無効データで上書きすることにより、悪意ある第三者がプログラムのロードモジュールを逆解析することも困難となり、不正使用を有効に阻止することが可能となる。
【００８６】
さらに、部分プログラムは、使用者が常時アクセスすることができる端末装置１ではなく、アクセス権限者を厳格に管理することができる中央装置２で生成することから、部分プログラムのソースコード変更あるいはコンパイル・リンク処理を悪意ある第三者が解析することも困難であり、不正使用を有効に阻止することが可能となる。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施の形態１に係るコンピュータシステムの概要を示す構成図である。
【図２】本発明の実施の形態１に係るコンピュータシステムでのプログラム実行時の動作を示す図である。
【図３】異なる命令コードを利用する場合の新たなプログラムの生成処理の例示図である。
【図４】命令コードの位置をシャフリングする場合の新たなプログラムの生成処理の例示図である。
【図５】必須情報をソースコードに埋め込む場合の埋め込み方法の例示図である。
【図６】ＩＰアドレスと、必須情報との関係を示す必須情報記憶部のデータ構成の例示図である。
【図７】本発明の実施の形態２に係るコンピュータシステムでのプログラム実行時の動作を示す図である。
【図８】（ａ）は、中央装置で生成された部分プログラムの例示図、（ｂ）は、最初に実行される部分プログラムがロードされた時点のＲＡＭの状態を示す図、（ｃ）は、端末装置で受信した部分プログラムをＲＡＭに書き込んだ状態を示す図である。
【図９】（ａ）は、部分プログラムをＲＡＭから削除する状態を示す図、（ｂ）は、端末装置が受信した部分プログラムをＲＡＭに書き込んだ状態を示す図、（ｃ）は、部分プログラムをＲＡＭから削除する状態を示す図である。
【符号の説明】
【００８８】
１  端末装置
２  中央装置
３  インターネット
１１、２１  ＣＰＵ
１２、２２  ＲＡＭ
１３、２３  記憶手段
１４、２４  通信インタフェース
１５、２５  内部バス
１３１、２３１  プログラム記憶部
２３２  必須情報記憶部
【図１】
2005235076.tif 000003
【図２】
2005235076.tif 000004
【図３】
2005235076.tif 000005
【図４】
2005235076.tif 000006
【図５】
2005235076.tif 000007
【図６】
2005235076.tif 000008
【図７】
2005235076.tif 000009
【図８】
2005235076.tif 000010
【図９】
2005235076.tif 000011