(57)【要約】    【課題】      柔軟性、利便性に優れ、かつ、プログラムの改ざんがあった場合でも、プログラムの不正使用を防止すること。    【解決手段】  本発明は、プログラムとこのプログラムの正規ユーザとの組を登録しておき、ユーザが実行しようとするプログラムの特徴量と、登録してあるプログラムの特徴量を比較することによりユーザが実行しようとするプログラムを特定し、このユーザが特定したプログラムの正規ユーザであるか検出する方法において、ユーザが実行しようとするプログラムおよび登録してあるプログラムの特徴量を抽出する特徴量抽出方法を定期的に更新するようにしたものである。  【選択図】      図１
2005157904.tif 000002
【特許請求の範囲】
【請求項１】
プログラムと前記プログラムの正規ユーザとの組を複数登録したユーザ情報テーブルと、ユーザに対して前記プログラムの特徴量を抽出する特徴量抽出プログラムを送信する特徴量抽出プログラム送信部と、前記特徴量抽出プログラムを用いて抽出した前記ユーザが実行しようとするプログラムの特徴量を受信する特徴量受信部と、受信した前記特徴量と前記特徴量抽出プログラムを用いて抽出した前記ユーザ情報テーブルに登録した前記プログラムの特徴量と比較することで前記実行しようとするプログラムを特定する特徴量比較部と、前記ユーザ情報テーブルを参照し前記ユーザが特定した前記プログラムの正規ユーザであるか検出し、前記ユーザが前記正規ユーザでない場合は前記ユーザに対して前記特定したプログラムの実行を禁止させる制御信号を送信する実行禁止判定部と、を具備し、
前記特徴量抽出プログラム送信部は、前記ユーザに送信する前記特徴量抽出プログラムを更新することを特徴とすることを特徴とするプログラム不正使用監視装置。
【請求項２】
プログラムの特徴量を抽出する特徴量抽出プログラムを更新する特徴量抽出プログラム更新部と、前記特徴量抽出プログラムを用いて実行するプログラムの特徴量を抽出する特徴量抽出部と、抽出した前記特徴量をプログラムの不正使用を監視する不正使用監視サーバへ送信する特徴量送信部と、前記不正使用監視サーバから送られてきた前記実行するプログラムの実行を禁止させる制御信号を受信し、前記制御信号に基づいて前記実行するプログラムの実行を禁止するプログラム実行制御部と、を具備したことを特徴とするユーザ端末。
【請求項３】
前記特徴量抽出プログラムは有効期限もしくは有効回数を有し、前記プログラム実行制御部は前記有効期限もしくは有効回数を超過した場合に前記プログラムの実行を禁止することを特徴とする請求項２記載のユーザ端末。
【請求項４】
前記特徴量抽出プログラムと前記有効期限もしくは有効回数を対応付けて格納するテーブルを具備し、前記特徴量抽出プログラム更新部は、前記有効期限もしくは有効回数を改変不可能な形式にて前記テーブルに保存することを特徴とする請求項３記載のユーザ端末。
【請求項５】
前記特徴量送信部は、前記特徴量の送信を失敗した際に、所定期間後に再度前記特徴量の送信を試みることを特徴とする請求項２から請求項４のいずれかに記載のユーザ端末。
【請求項６】
前記特徴量送信部は、前記特徴量の送信を失敗した際に、前記特徴量を改変不可能な形式に変換して保存することを特徴とする請求項５記載のユーザ端末。
【請求項７】
前記特徴量は有効期限を有し、前記特徴量が前記有効期限を超過した場合には、前記特徴量送信部が前記特徴量の送信をやめることを特徴とする請求項２から請求項５のいずれかに記載のユーザ端末。
【請求項８】
前記特徴量が前記有効期限を超過した場合には、前記プログラム実行制御部が前記プログラムの実行を禁止することを特徴とする請求項７記載のユーザ端末。
【請求項９】
前記プログラム実行制御部は、実行を禁止した前記プログラムのリストを作成し保存することを特徴とする請求項２から請求項８のいずれかに記載のユーザ端末。
【請求項１０】
前記プログラム実行制御部は、前記リストを改変できない形式で保存することを特徴とする請求項９記載のユーザ端末。
【請求項１１】
前記プログラム実行制御部は、起動したプログラムが前記リストに含まれる場合には、前記起動したプログラムを停止することを特徴とする請求項９または請求項１０記載のユーザ端末。
【請求項１２】
前記プログラム実行制御部は、前記プログラムが不正使用されていることをあらわす情報を提示することを特徴とする請求項２から請求項１１のいずれかに記載のユーザ端末。
【請求項１３】
請求項１記載のプログラム不正使用監視装置と、請求項２から請求項１２のいずれかに記載のユーザ端末と、を具備したことを特徴とするプログラム不正使用防止システム。
【請求項１４】
プログラムと前記プログラムの正規ユーザとの組を登録しておき、ユーザが実行しようとするプログラムの特徴量と、登録してあるプログラムの特徴量を比較することにより前記ユーザが実行しようとするプログラムを特定し、前記ユーザが特定したプログラムの正規ユーザであるか検出するプログラム不正使用防止方法であって、
前記ユーザが実行しようとするプログラムおよび前記登録してあるプログラムの特徴量を抽出する特徴量抽出方法を定期的に更新することを特徴とするプログラム不正使用防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
作成者もしくは正当な所有者の許可なくプログラムを不正に使用したことを監視するプログラムの不正使用監視装置およびその方法に関する。
【背景技術】
【０００２】
ソフトウェアプログラム（以下プログラム）は、複製を容易に作成できるという性質により、著作権侵害が頻発し、作成者もしくは正当な所有者の許可のない不正なコピーが横行している。このようなプログラムの不正使用の問題は、コンピュータネットワークの進展により益々深刻化しており、プログラムの不正使用防止技術が重要なキー技術として認識されている。
【０００３】
プログラムの不正使用防止の従来手法は多数存在するが、代表的なものとしては、（１）ライセンスナンバー方式（２）ハードウェアキー方式（３）暗号化方式（４）プログラムの特徴量を利用する方式などかあげられる。
【０００４】
（１）ライセンスナンバー方式とは、プログラムとともにライセンスナンバーを発行し、プログラムのインストール時もしくは起動時にライセンスナンバーを入力させる方式である。これにより、ライセンスキーなしではプログラムを動作させることができなくなり、不正な使用を防止することができる。代表的な例としては、マイクロソフトのＷｉｎｄｏｗｓ（Ｒ）シリーズがある。Ｗｉｎｄｏｗｓ（Ｒ）シリーズでは、パッケージＣＤ−ＲＯＭとライセンスナンバーをセットで配布し、プログラムのインストール時にユーザにライセンスナンバーを入力させる。
【０００５】
（２）ハードウェアキー方式とは、“ドングル”と呼ばれる特殊なハードウェア装置を端末に装着し、ハードウェアがソフトウェアの正当性を検証する方式である。ハードウェアキー方式の例は、特許文献１に記載されている。この特許では、コンピュータの動作中にプログラムもしくはプログラムの一部が有効であるかどうかを判断するための方法が記載されている。
【０００６】
（３）暗号化方式とは、暗号化したプログラムと鍵データを配布し、プログラム実行時にプログラムを復号化して実行する方法である。鍵データの保存方法が問題となるが、端末にユーザによる閲覧が不可能な領域を設けて、そこに鍵を保存することで、鍵データの流出を防ぐことは可能である。
【０００７】
（４）プログラムの特徴量を利用する方式とは、配布するプログラムとこのプログラムの正規のユーザとの対応を登録しておき、ユーザ端末であるプログラムが実行された場合に、ユーザ端末で実行されたプログラムの特徴量と、予め登録してあるプログラムの特徴量との比較をし、Ａ）これらの特徴量の一致をみることによりユーザ端末で実行されたプログラムを特定し、Ｂ）ユーザ端末のユーザがＡ）において特定したプログラムの正規のユーザでないという場合に、このユーザに対して報復措置を実施する方式である。本方式の例は、例えば特許文献２に記載されている。
【０００８】
この例では、不正使用の疑いのあるユーザ端末が不正使用している疑いのあるプログラムより特徴量としてプログラムの一部分のハッシュ値を数箇所とり、予め登録してあったオリジナルのプログラムの同じ箇所のハッシュ値と比較する。これらの特徴量を比較した結果、不正使用している疑いのあるプログラムとオリジナルのプログラムが同じプログラムであると判定した場合には、報復措置としてそのプログラムの実行を禁止することで、不正使用を防止している。
【特許文献１】米国特許第３９９６４９９号明細書
【特許文献２】特開平１１−２１３０３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、（１）ライセンスナンバー方式では、ユーザはライセンスキーとプログラムをセットで流出させることができるため、不正使用防止の効果は薄い。
【００１０】
別の例では、プログラムをインストールする端末を特定する情報をプログラムの配布元に通知し、プログラムの配布元がその情報に基づいてライセンスキーを発行する方法が取られている。この方法であれば、プログラムのライセンスキーが端末固有となるため、他の端末で同じライセンスキーを使用することができず、プログラムの不正使用を防止することができる。
【００１１】
しかしながら、この方法では、プログラムを改変し、ライセンスキー認証を無効化することが可能である。ライセンスキーが無効化されたプログラムに関しては、すべての端末で動作が可能となるため、この方法であっても不正使用を完全に防止することはできない。
【００１２】
また、（２）ハードウェアキー方式では、各種のプログラムが端末で動作する場合に、各プログラムに対応したハードウェアキーをすべて端末に接続する必要があり、利便性が低い。また、プログラム以外にハードウェアをユーザに配布する必要があるため、ネットワークを介した配布ができないという点で、柔軟性に欠けている。
【００１３】
また、（３）暗号化方式では、プログラムの復号化のオーバヘッドにより、プログラムの起動や実行が極端に遅延する。また、プログラムが実行可能な状態でメモリ上にロードされなければならないため、メモリ上では暗号化されていない平文の状態になる。したがって、メモリ上のプログラムをコピーされてしまう可能性があるため、不正使用を完全に防止することはできない。
【００１４】
また、（４）プログラムの特徴量を利用する方式では、不正使用者がプログラムを改ざんすることで同一性判定基準としている特徴量を変化させた場合に、不正使用を検出できなくなる。
【００１５】
以上のように、柔軟性、利便性に優れ、かつ、プログラムの改ざんがあった場合でも、プログラムの不正使用を防止するプログラム不正使用防止方法は存在していない。
【００１６】
本発明は、かかる点に鑑みてなされたものであり、柔軟性、利便性に優れ、かつ、プログラムの改ざんがあった場合でも、プログラムの不正使用を防止することを目的とする。
【課題を解決するための手段】
【００１７】
本発明は、プログラムとこのプログラムの正規ユーザとの組を登録しておき、ユーザが実行しようとするプログラムの特徴量と、登録してあるプログラムの特徴量を比較することによりユーザが実行しようとするプログラムを特定し、このユーザが特定したプログラムの正規ユーザであるか検出する方法において、ユーザが実行しようとするプログラムおよび登録してあるプログラムの特徴量を抽出する特徴量抽出方法を定期的に更新するようにしたものである。
【発明の効果】
【００１８】
本発明により、特徴量抽出方法が定期的に更新できるので、プログラムから特徴量を抽出する部分の特定が困難になる。つまり、仮に、同一性を判定するための特徴量を変化させるようにプログラムを改変されたとしても、特徴量抽出方法が更新されることにより、改変したプログラムは特徴量を用いた同一性判定を逃れられなくなる。すなわち、プログラムを改変したとしても特徴量を用いた同一性判定を逃れられるのは、一定期間のみとなる。これにより、プログラムの不正使用を防止できる。また、本発明は、プログラムの特徴量を利用する方式を用いているため、柔軟性、利便性に優れたプログラムの不正使用防止法を提供できる。
【発明を実施するための最良の形態】
【００１９】
本発明の第１の態様にかかるプログラム不正使用監視装置は、プログラムと前記プログラムの正規ユーザとの組を複数登録したユーザ情報テーブルと、ユーザに対して前記プログラムの特徴量を抽出する特徴量抽出プログラムを送信する特徴量抽出プログラム送信部と、前記特徴量抽出プログラムを用いて抽出した前記ユーザが実行しようとするプログラムの特徴量を受信する特徴量受信部と、受信した前記特徴量と前記特徴量抽出プログラムを用いて抽出した前記ユーザ情報テーブルに登録した前記プログラムの特徴量と比較することで前記実行しようとするプログラムを特定する特徴量比較部と、前記ユーザ情報テーブルを参照し前記ユーザが特定した前記プログラムの正規ユーザであるか検出し、前記ユーザが前記正規ユーザでない場合は前記ユーザに対して前記特定したプログラムの実行を禁止させる制御信号を送信する実行禁止判定部と、を具備し、前記特徴量抽出プログラム送信部は、前記ユーザに送信する前記特徴量抽出プログラムを更新する。
【００２０】
これにより、特徴量抽出プログラムを定期的に更新できるので、プログラムから特徴量を抽出する部分の特定が困難になる。つまり、仮に、同一性を判定するための特徴量を変化させるようにプログラムを改変されたとしても、特徴量抽出プログラムが更新されることにより、改変したプログラムは特徴量を用いた同一性判定を逃れられなくなる。すなわち、プログラムを改変したとしても特徴量を用いた同一性判定を逃れられるのは、一定期間のみとなる。これにより、プログラムの不正使用を防止できる。また、本発明は、プログラムの特徴量を利用する方式を用いているため、柔軟性、利便性に優れたプログラムの不正使用防止法を提供できる。
【００２１】
本発明の第２の態様にかかるユーザ端末は、プログラムの特徴量を抽出する特徴量抽出プログラムを更新する特徴量抽出プログラム更新部と、前記特徴量抽出プログラムを用いて実行するプログラムの特徴量を抽出する特徴量抽出部と、抽出した前記特徴量をプログラムの不正使用を監視する不正使用監視サーバへ送信する特徴量送信部と、前記不正使用監視サーバから送られてきた前記実行するプログラムの実行を禁止させる制御信号を受信し、前記制御信号に基づいて前記実行するプログラムの実行を禁止するプログラム実行制御部と、を具備した構成を採る。
【００２２】
これにより、特徴量を抽出する特徴量抽出プログラムを更新することができ、プログラムの改ざんにより特徴量を改変しても、不正使用が発覚しないようにすることが困難となる。
【００２３】
本発明の第３の態様は、第２の態様にかかるユーザ端末において、前記特徴量抽出プログラムは有効期限もしくは有効回数を有し、前記プログラム実行制御部は前記有効期限もしくは有効回数を超過した場合に前記プログラムの実行を禁止する。
【００２４】
これにより、特徴量抽出プログラムを更新しないことでプログラムの不正使用を続けることを防止することができる。
【００２５】
本発明の第４の態様は、第３の態様にかかるユーザ端末において、前記特徴量抽出プログラムと前記有効期限もしくは有効回数を対応付けて格納するテーブルを具備し、前記特徴量抽出プログラム更新部は、前記有効期限もしくは有効回数を改変不可能な形式にて前記テーブルに保存する。
【００２６】
これにより、ユーザが不正に有効期限もしくは有効回数を書き換えることができなくなる。この結果、不正にプログラムを使用することを防ぐことが可能となる。
【００２７】
本発明の第５の態様は、第２の態様から第４の態様のいずれかにかかるユーザ端末において、前記特徴量送信部は、前記特徴量の送信を失敗した際に、所定期間後に再度前記特徴量の送信を試みる。
【００２８】
これにより、正当な権利を有するユーザが通信できない場合であっても、再度特徴量の送信を試みることにより、プログラムの実行を妨げられることがなくなる。
【００２９】
本発明の第６の態様は、第５の態様にかかるユーザ端末において、前記特徴量送信部は、前記特徴量の送信を失敗した際に、前記特徴量を改変不可能な形式に変換して保存する。
【００３０】
これにより、蓄積された特徴量情報を書き換えることで、不正にプログラムを使用することを防止することができる。
【００３１】
本発明の第７の態様は、第２の態様から第５の態様のいずれかにかかるユーザ端末において、前記特徴量は有効期限を有し、前記特徴量が前記有効期限を超過した場合には、前記特徴量送信部が前記特徴量の送信をやめる。
【００３２】
これにより、特徴量の送信を意図的に妨害することで、プログラムを不正に使用し、かつプログラムの不正使用が発覚しないようにする行為を防止することができる。
【００３３】
本発明の第８の態様は、第７の態様にかかるユーザ端末において、前記特徴量が前記有効期限を超過した場合には、前記プログラム実行制御部が前記プログラムの実行を禁止する。
【００３４】
これにより、特徴量の送信を意図的に妨害することで、プログラムを不正に使用し、かつプログラムの不正使用が発覚しないようにする行為を防止することができる。
【００３５】
本発明の第９の態様は、第２の態様から第８の態様のいずれかにかかるユーザ端末において、前記プログラム実行制御部は、実行を禁止した前記プログラムのリストを作成し保存する。
【００３６】
これにより、実行を禁止したプログラムを明示的に認識できる。
【００３７】
本発明の第１０の態様は、第９の態様にかかるユーザ端末において、前記プログラム実行制御部は、前記リストを改変できない形式で保存する。
【００３８】
これにより、リストを不正に改変することができなくなる。
【００３９】
本発明の第１１の態様は、第９の態様または第１０の態様にかかるユーザ端末において、前記プログラム実行制御部は、起動したプログラムが前記リストに含まれる場合には、前記起動したプログラムを停止する。
【００４０】
これにより、プログラムの不正使用を明示的に禁止することが可能となる。
【００４１】
本発明の第１２の態様は、第２の態様から第１１の態様のいずれかにかかるユーザ端末において、前記プログラム実行制御部は、前記プログラムが不正使用されていることをあらわす情報を提示する。
【００４２】
これにより、ユーザに対して、不正使用の防止機構が働いてきることを明示することができる。
【００４３】
本発明の第１３の態様は、第１の態様のプログラム不正使用監視装置と、第２の態様から第１２の態様のいずれかに記載のユーザ端末と、を具備したことを特徴とするプログラム不正使用防止システムである。
【００４４】
本発明の第１４の態様は、プログラムと前記プログラムの正規ユーザとの組を登録しておき、ユーザが実行しようとするプログラムの特徴量と、登録してあるプログラムの特徴量を比較することにより前記ユーザが実行しようとするプログラムを特定し、前記ユーザが特定したプログラムの正規ユーザであるか検出するプログラム不正使用防止方法であって、前記ユーザが実行しようとするプログラムおよび前記登録してあるプログラムの特徴量を抽出する特徴量抽出方法を定期的に更新することを特徴とするプログラム不正使用防止方法である。
【００４５】
以下、本発明の実施の形態について添付図面を用いて詳細に説明する。
【００４６】
本発明では、ソフトウェアの不正使用に対して、プログラムの不正使用を監視する不正使用監視サーバでプログラムの実行を監視し、プログラムの不正使用を検出した場合にはその実行を制限する。
【００４７】
本発明で使用する方式は、従来の技術に述べた（４）の方式を用いている。ただし、先にも述べたとおり（４）の方式においては、プログラムの改ざんがあった場合に、不正使用を検出できない場合がある。つまり、もし、不正使用をたくらむユーザにプログラムの特徴量としてどのような情報を抽出しているのかを知られてしまった場合は、その特徴量として抽出する情報を改変するようにプログラムを改ざんされ、プログラムの不正使用を検出できなくなってしまう。
【００４８】
本発明は、その特徴量を改変するようにプログラムを改ざんされてしまうということに着目し、プログラムの特徴量を抽出する特徴量抽出プログラムを定期的に更新するようにした。これにより、仮に同一性を判定するための特徴量を変化させるようにプログラムを改変されたとしても、そのプログラムが同一性判定を逃れることができるのは一定期間のみとなる。
【００４９】
以下、本発明の一実施の形態にかかるプログラム不正使用防止システムついて、添付図面を用いて詳細に説明する。
【００５０】
まず、図１を用いて、本実施の形態にかかるプログラム不正使用防止システムについて説明する。図１は、本発明の実施の形態にかかるプログラム不正使用防止システムをあらわす概略図である。
【００５１】
本実施の形態にかかるプログラム不正使用防止システム１００は、プログラム配布サーバ１０１と、不正使用監視サーバ１０２と、ユーザ端末１０３とで構成される。
【００５２】
プログラム配布サーバ１０１は、ユーザに配布するソフトウェアを配置するサーバである。また、プログラム配布サーバ１０１は、配布するプログラムを不正使用監視サーバ１０２に登録する。
【００５３】
ユーザ端末１０３は、プログラム配布サーバ１０１からプログラムを取得して実行する端末である。また、ユーザ端末１０３は、不正使用監視サーバ１０２にユーザ登録を行う。また、ユーザ端末１０３は、実行したプログラムごとにその特徴量を抽出し、不正使用監視サーバ１０２に通知する。
【００５４】
不正使用監視サーバ１０２は、プログラム配布サーバ１０１により登録されたプログラムを保存する。また、不正使用監視サーバ１０２は、ユーザ端末１０３からプログラムの特徴量を受信し、保存したプログラムから抽出した特徴量と比較する。比較の結果、Ａ）保存しているプログラムと特徴量が一致し、かつＢ）ユーザ登録されているユーザではない、という条件が成立した場合には、不正使用監視サーバ１０２は、ユーザ端末１０３に対して不正使用を禁止するためのメッセージ送信を行う。
【００５５】
次に、上記システムの処理の流れについて説明する。
【００５６】
まず、プログラム配布サーバ１０１から不正使用監視サーバ１０２へプログラム登録要求を送信する（１．プログラムの登録）。
【００５７】
次に、ユーザ端末１０３からプログラム配布サーバ１０１にプログラム配布要求を送信する（２．ユーザ登録）。
【００５８】
プログラム配布要求には、プログラムを利用するユーザおよび端末の情報が含まれる。
【００５９】
次に、プログラム配布サーバ１０１から不正使用監視サーバ１０２へユーザ登録要求を送信する（３．ユーザの登録）。
【００６０】
次に、プログラム配布サーバ１０１が、ユーザ端末１０３からプログラム配布要求を受信し、それに応答してユーザ端末１０３にプログラムを配布する（４．プログラムの配布）。
【００６１】
次に、不正使用監視サーバ１０２がユーザ端末１０３へ特徴量抽出プログラムの最新バージョンを配布する（５．取得すべき特徴量の更新）。
【００６２】
次に、ユーザ端末１０３が不正使用監視サーバ１０２に対して特徴量登録要求を送信する（６．使用したプログラムの特徴量の通知）。
【００６３】
そして、不正使用監視サーバ１０２は、受信した特徴量を用いてユーザ端末１０３が実行するプログラムを特定し、不正使用を検出した場合には、ユーザ端末１０３に対してプログラムの使用禁止指示を送信する（７．不正使用の禁止通知）。
【００６４】
以上の手順でメッセージを送信することで、プログラムの不正な使用を防止することができる。
【００６５】
特に、特徴量抽出プログラムを定期的に更新するので、ユーザ端末１０３において、プログラムから特徴量を抽出する部分の特定が困難になる。つまり、仮に、ユーザ端末１０３が、同一性を判定するための特徴量を変化させるようにプログラムを改変したとしても、特徴量抽出プログラムが更新されることにより、改変したプログラムは特徴量を用いた同一性判定を逃れられなくなる。すなわち、プログラムを改変したとしても特徴量を用いた同一性判定を逃れられるのは、一定期間のみとなる。
【００６６】
次に、プログラム配布サーバ１０１の構成について図２を用いて説明する。図２は、本実施の形態にかかるプログラム配布サーバ１０１の構成図である。
【００６７】
プログラム配布サーバ１０１には、プログラム蓄積部２０１が設けられている。プログラム蓄積部２０１は、ユーザ端末１０３に配布するプログラムを蓄積する記録媒体である。具体的には、プログラム蓄積部２０１は、ハードディスクドライブ、ＤＶＤ−ＲＡＭなどである。
【００６８】
また、プログラム配布サーバ１０１には、プログラム配布部２０２が設けられている。プログラム配布部２０２は、プログラム蓄積部２０１に蓄積されたプログラムを、ネットワークを介してユーザ端末１０３に配布する手段である。
【００６９】
プログラムの配布は、ＦＴＰ、ＨＴＴＰといった通信プロトコルを用いて行うことを想定している。すなわち、プログラム配布部２０２は、ＦＴＰサーバ、ＨＴＴＰサーバにより構成される。
【００７０】
また、プログラム配布サーバ１０１には、プログラム登録部２０３が設けられている。プログラム登録部２０３は、不正使用監視サーバ１０２にプログラムを登録する手段である。
【００７１】
プログラムの登録は、ＦＴＰ、ＨＴＴＰといった通信プロトコルを用いて行うことを想定している。すなわち、プログラム登録部２０３は、ＦＴＰクライアント、ＨＴＴＰクライアントにより構成されることを想定している。
【００７２】
なお、本発明の実施の形態では、プログラムはプログラム配布サーバ１０１を用いて配布することを想定しているが、プログラムはＣＤ−ＲＯＭなどのリムーバブルメディアを用いて配布してもよい。その場合には、プログラム配布サーバ１０１は不要である。また、この場合のプログラムの不正使用監視サーバ１０２への登録は、リムーバブルメディアを介して行うものとする。
【００７３】
次に、不正使用監視サーバ１０２について、図３を用いて説明する。図３は、本実施の形態にかかる不正使用監視サーバ１０２の構成図である。
【００７４】
不正使用監視サーバ１０２には、プログラム受信部２０４が設けられている。プログラム受信部２０４は、プログラム配布サーバ１０１より登録されるプログラムを受信し、プログラム蓄積部２１７に蓄積する手段である。プログラムの登録は、ＦＴＰ、ＨＴＴＰといった通信プロトコルを用いて行うことを想定している。すなわち、プログラム受信部２０４は、ＦＴＰサーバ、ＨＴＴＰサーバにより構成される。
【００７５】
プログラム蓄積部２１７は、ハードディスクドライブ、ＤＶＤ−ＲＡＭなどである。
【００７６】
また、不正使用監視サーバ１０２には、特徴量抽出部２１０が設けられている。特徴量抽出部２１０は、プログラム蓄積部２１７に蓄積されたプログラムの特徴量を抽出して、プログラムの名称と対応付けて特徴量比較部２０８に渡す手段である。特徴量抽出部２１０は、プログラムから特徴量を抽出する特徴量抽出プログラムを、特徴量抽出プログラム更新部２０９により更新することができ、また、選択することができる。
【００７７】
プログラムから抽出する特徴量としては、プログラムの名称、サイズといった基本的な情報から、プログラム中に使われる変数名、プログラムの構文、フローグラフ、クラスの継承関係、ある実行時点でのデータ依存関係、フロー依存関係などが考えられる。また、Ｃｏｎｔｅ，Ｓ．Ｄ．，Ｈ．Ｅ．Ｄｕｎｓｍｏｒｅ  ａｎｄ  Ｖ．Ｙ．Ｓｈｅｎ，Ｓｏｆｔｗａｒｅ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｍｅｔｒｉｃｓ  ａｎｄ  Ｍｏｄｅｌｓ，Ｔｈｅ  Ｂｅｎｊａｍｉｎ／Ｃｕｍｍｉｎｇｓ  Ｐｕｂｌｉｓｈｉｎｇ  Ｃｏｍｐａｎｙ，１９８６に記載されているプログラムの尺度を特徴量としてもよい。また、上記の特徴量のうち、いくつかを組み合わせて利用することも可能である。
【００７８】
また、不正使用監視サーバ１０２には、特徴量抽出プログラム蓄積部２１２が設けられている。特徴量抽出プログラム蓄積部２１２は、特徴量抽出プログラム２１２ａをその有効期限２１２ｂと対応付けて蓄積する蓄積媒体である。具体的には、特徴量抽出プログラム蓄積部２１２は、ハードディスクドライブ、ＤＶＤ−ＲＡＭなどである。
【００７９】
また、不正使用監視サーバ１０２には、特徴量抽出プログラム送信部２１３が設けられている。特徴量抽出プログラム送信部２１３は、特徴量抽出プログラムを、その有効期限とあわせてユーザ端末１０３に送信する手段である。
【００８０】
また、不正使用監視サーバ１０２には、特徴量抽出プログラム更新部２０９が設けられている。特徴量抽出プログラム更新部２０９は、特徴量比較部２０８より指示された特徴量抽出プログラムを特徴量抽出プログラム蓄積部２１２から取り出し、特徴量抽出部２１０にインストールする手段である。
【００８１】
また、不正使用監視サーバ１０２には、特徴量受信部２０６が設けられている。特徴量受信部２０６は、ユーザ端末１０３からの特徴量登録要求（特徴量、特徴量を抽出したときに用いた特徴量抽出プログラムのバージョン、ユーザ情報、端末情報）を受信し、特徴量蓄積部２０７へ蓄積する手段である。
【００８２】
特徴量蓄積部２０７は、特徴量登録要求に含まれる特徴量、特徴量を抽出したときに用いた特徴量抽出プログラムのバージョン、ユーザ情報、端末情報を蓄積するための特徴量テーブル３００を備える蓄積媒体である。具体的には、特徴量蓄積部２０７は、ハードディスクドライブ、ＤＶＤ−ＲＡＭなどである。また、特徴量蓄積部２０７は、特徴量登録要求に含まれる特徴量、特徴量を抽出したときに用いた特徴量抽出プログラムのバージョン、ユーザ情報、端末情報を特徴量テーブル３００により蓄積する。
【００８３】
特徴量比較部２０８は、特徴量蓄積部２０７から特徴量、特徴量を抽出したときに用いた特徴量抽出プログラムのバージョン、ユーザ情報、端末情報を取り出し、特徴量抽出プログラム更新部２０９に特徴量抽出プログラムのバージョンを通知する。また、特徴量比較部２０８は、特徴量抽出部２１０から、特徴量と、その特徴量を抽出したプログラムの名称を受け取り、特徴量蓄積部２０７から取得した特徴量と比較する。比較の結果、特徴量が等しい（すなわち、特徴量を抽出したプログラムが同一のプログラムである）と判定した場合には、特徴量比較部２０８は、ユーザ情報、端末情報、特徴量抽出部２１０から取得したプログラムの名称を実行禁止判定部２１１に通知する。
【００８４】
実行禁止判定部２１１は、特徴量比較部２０８からユーザ情報、プログラムの名称、端末情報を受信し、これらの情報を用いてユーザ情報保存部２１５の検索を行って、ユーザがそのプログラムのユーザ登録を行っているかどうかを確認する。そして、実行禁止判定部２１１は、確認の結果に基づいて、ユーザ端末１０３にプログラムの実行を許可するか、プログラムの実行を禁止するかを切り替える制御信号を送信する。具体的には、ユーザが登録を行っていないと判定された場合には、実行禁止判定部２１１は、制御信号をプログラムの実行を禁止する指示にしてユーザ端末１０３に送る。また、ユーザが登録を行っていると判定された場合には、実行禁止判定部２１１は、制御信号をプログラムの実行を許可する指示にしてユーザ端末１０３に送る。
【００８５】
実行禁止指示は、実行を禁止するプログラムの特徴量の情報が含まれるものとする。
【００８６】
ユーザ登録受信部２１４は、不正使用監視サーバ１０２を介して、ユーザ端末１０３からのユーザ登録要求を受け付け、ユーザ情報をユーザ情報保存部２１５に蓄積する手段である。
【００８７】
ユーザ情報は、例えば、ユーザの名前、ユーザの住所、電話番号など、ユーザを一意に特定できる情報であればなんでもよい。
【００８８】
ユーザ情報保存部２１５は、ユーザ登録情報を蓄積するユーザ情報テーブル４００を備えた記憶媒体である。具体的には、ユーザ情報保存部２１５は、ハードディスクドライブ、ＤＶＤ−ＲＡＭなどである。
【００８９】
次に、ユーザ端末１０３の構成について図４を用いて説明する。図４は、本実施の形態にかかるユーザ端末１０３の構成図である。
【００９０】
ユーザ端末１０３には、プログラム取得部２１６が設けられている。プログラム取得部２１６は、プログラム配布サーバ１０１からプログラムを取得し、プログラム蓄積部２２９に蓄積する手段である。
【００９１】
プログラム蓄積部２２９は、ハードディスクドライブ、ＤＶＤ−ＲＡＭなどである。
【００９２】
また、ユーザ端末１０３には、ユーザ情報取得部２１９が設けられている。ユーザ情報取得部２１９は、ユーザ情報を取得し、その情報をユーザ登録送信部２１８や特徴量送信部２２７に渡す手段である。
【００９３】
ユーザ情報は、ユーザの名前や住所、電話番号などであり、予め端末に登録されている情報を用いてもよいし、ユーザに情報を入力させて取得してもよい。
【００９４】
また、ユーザ端末１０３には、特徴量抽出プログラム更新部２２１が設けられている。特徴量抽出プログラム更新部２２１は、不正使用監視サーバ１０２から特徴量抽出プログラムとその有効期間を取得し、特徴量抽出プログラムを特徴量抽出部２２０にインストールする手段である。
【００９５】
また、特徴量抽出プログラム更新部２２１は、特徴量抽出プログラムの有効期限を、暗号化部２２５を用いて暗号化し、有効期限蓄積部２２２に蓄積する機能を有する。さらに、特徴量抽出プログラム更新部２２１は、特徴量抽出部２２０の有効期限が切れた場合には、実行制御部２２３にプログラムの実行を禁止する実行禁止指示を通知する機能を有する。
【００９６】
なお、有効期限の変わりに有効回数を用いてもよい。
【００９７】
特徴量抽出部２２０は、プログラムの起動を検出し、特徴量抽出プログラムを用いて、起動したプログラムの特徴量を抽出して実行制御部２２３と特徴量送信部２２７に通知する。
【００９８】
実行制御部２２３は、不正使用監視サーバ１０２から送付されるプログラムの実行禁止もしくは実行許可を切り替える指示を受信し、この指示が実行禁止を示す場合は禁止リスト２２４に実行を禁止するプログラムの特徴量を追加する。禁止リストは、暗号化部２２５を用いて暗号化されるものとする。一方、実行制御部２２３は、指示が実行許可を示す場合は、プログラムを実行する。
【００９９】
禁止リスト２２４は、実行を禁止したプログラムのリストである。禁止リスト２２４により、実行を禁止したプログラムを明示的に認識できる。
【０１００】
また、実行制御部２２３は、プログラムの起動時に、禁止リスト２２４を検索し、特徴量抽出部２２０から通知される特徴量が含まれているかどうかを確認する。禁止リスト２２４に特徴量が含まれている場合には、実行制御部２２３は、そのプログラムは起動されず、プログラムが不正使用されていて起動できないことを警告するメッセージをユーザに提示する。これにより、ユーザ端末１０３のユーザに対して、不正使用の防止機構が働いてきることを明示することができる。
【０１０１】
さらに、実行制御部２２３は、特徴量送信部２２７や特徴量抽出プログラム更新部２２１からプログラム実行禁止指示を受け取り、すべてのプログラムの実行を禁止する機能を有する。
【０１０２】
プログラム実行部２２６は、プログラムを実際に実行するプラットフォームである。プログラム実行部２２６は、実行制御部２２３の実行禁止指示があった場合には、即座にプログラムの実行を停止する。
【０１０３】
特徴量送信部２２７は、特徴量抽出部２２０から通知されるプログラムの特徴量と、プログラムの特徴量を抽出したときの特徴量抽出プログラムのバージョン、ユーザ情報、端末情報を取得し、不正使用監視サーバに送信する手段である。
【０１０４】
また、特徴量送信部２２７は、ユーザ端末１０３がネットワークに接続されていないなどの理由により不正使用監視サーバに上記の情報を送信できない場合には、上記の情報を、暗号化部２２５を用いて暗号化し、特徴量蓄積部２２８に保存する。特徴量送信部２２７は、上記情報の保存の際には、保存日時、その特徴量の有効期限を合わせて記録する。特徴量送信部２２７は、その特徴量の有効期限は、特徴量を抽出した日時から一定期間後に設定する。その後、特徴量送信部２２７は、一定時間ごとに不正使用監視サーバ１０２に上記情報の送信を試みる。そして、上記で定めた有効期限を過ぎても送信に成功しない場合には、特徴量送信部２２７は実行制御部２２３にプログラム実行禁止指示を行う。
【０１０５】
暗号化部２２５は、実行制御部２２３、特徴量送信部２２７、特徴量抽出プログラム更新部２２１の各手段からの情報を、ユーザが改変できない形式で暗号化して、送り返す手段である。暗号化方式としては、ＤＥＳなど標準的な方式を用いることができる。また、暗号化部２２５が、禁止リスト２２４、特徴量、特徴量の有効期限をユーザが改変できないように暗号化することにより、ユーザが、禁止リスト２２４、特徴量、特徴量の有効期限を不正に改変することを防止できる。この結果、プログラムの不正使用を防止できる。
【０１０６】
なお、暗号化部２２５は、予め定められた暗号化方式（すなわち、ユーザ端末１０３に出荷前に組み込まれている方式）を使う。暗号化を行うための鍵は、暗号化部２２５のみが知っており、暗号化部２２５の中に秘密に保存されている。また、暗号化部２２５は、中に鍵を秘密に保存するために、ハードウェア／ソフトウェア耐タンパ技術を用いて実装される。これにより、ユーザは容易に暗号化鍵を暗号化部２２５から取得できないようにできる。
【０１０７】
特徴量蓄積部２２８は、プログラムの特徴量と、プログラムの特徴量を抽出したときの特徴量抽出プログラムのバージョン、ユーザ情報、端末情報、保存日時、その特徴量の有効期限などを対応付けて格納する特徴量テーブル５００を備えた記憶媒体である。
【０１０８】
以上のように、プログラム配布サーバ１０１、不正使用監視サーバ１０２、およびユーザ端末１０３は構成されている。
【０１０９】
次に、本実施の形態にかかる特徴量蓄積部２０７が備える特徴量テーブル３００について図５を用いて説明する。図５は、本実施の形態にかかる特徴量蓄積部２０７に蓄積される特徴量テーブル３００の構成図である。
【０１１０】
特徴量テーブル３００は、特徴量３０１と、特徴量抽出プログラムのバージョン３０２と、ユーザ情報３０３と、端末情報３０４との組を複数格納している。
【０１１１】
特徴量３０１は、ユーザ端末１０３で抽出された特徴量である。
【０１１２】
特徴量抽出プログラムのバージョン３０２は、特徴量３０１の抽出を行ったときに用いた特徴量抽出プログラムのバージョン情報である。
【０１１３】
ユーザ情報３０３は、特徴量３０１を抽出したユーザ端末１０３のユーザ情報である。
【０１１４】
端末情報は、特徴量３０１を抽出したユーザ端末１０３を特定する情報である。
【０１１５】
以上のように特徴量テーブル３００は構成されている。
【０１１６】
また、ユーザ端末１０３からの特徴量登録要求を受信すると特徴量テーブル３００の行が追加され、後に述べる特徴量比較処理を行った行は特徴量テーブル３００から削除される。
【０１１７】
次に、ユーザ情報保存部２１５に保存されるユーザ情報テーブル４００について図６を用いて説明する。図６は、本実施の形態にかかるユーザ情報テーブル４００の構成図である。
【０１１８】
ユーザ情報テーブル４００は、プログラムの名称４０１と、端末情報４０２と、ユーザ情報４０３との組を複数格納する。
【０１１９】
プログラムの名称４０１は、プログラムを一意に表す名称である。
【０１２０】
端末情報４０２は、ユーザ登録要求に含まれる端末情報である。
【０１２１】
ユーザ情報４０３は、ユーザ登録要求に含まれるユーザ情報である。
【０１２２】
以上のようにユーザ情報テーブル４００は構成されている。このように、ユーザ情報テーブル４００に、プログラムの名称４０１と、プログラムの正規のユーザを示すユーザを端末情報４０２およびユーザ情報４０３とを対応付けて格納することにより、プログラムと正規のユーザとの対応を明確にできる。
【０１２３】
また、ユーザ情報テーブル４００は、ユーザから新たなユーザ登録要求を受信すると行が追加される。
【０１２４】
次に、特徴量蓄積部２２８が備える特徴量テーブル５００について、図７を用いて説明する。図７は、特徴量蓄積部２２８に格納される特徴量テーブル５００の構成図である。
【０１２５】
特徴量テーブル５００は、特徴量５０１と、特徴量抽出プログラムのバージョン５０２と、取得日５０３と、有効期限５０４と、端末情報５０５と、ユーザ情報５０６と、の組を複数格納している。
【０１２６】
特徴量５０１は、抽出した特徴量である。特徴量抽出プログラムのバージョン５０２は、特徴量５０１を抽出するのに用いた特徴量抽出プログラムのバージョン情報である。
【０１２７】
取得日５０３は、特徴量５０１を抽出した日付である。有効期限５０４はその特徴量５０１がいつまで有効であるかをあらわす有効期限である。
【０１２８】
端末情報５０５は、特徴量５０１を抽出したアプリケーションを使用していたユーザ端末１０３を一意に示す端末情報である。
【０１２９】
ユーザ情報５０６は、特徴量５０１を取得したアプリケーションを利用していたユーザのユーザ情報である。
【０１３０】
以上のように特徴量テーブル５００は構成されている。
【０１３１】
また、特徴量テーブル５００は、特徴量送信部２２７が特徴量の送信に失敗すると情報を一時的に保存しておくために作成され、特徴量の再送信に成功した場合に削除される。
【０１３２】
次に、プログラム不正使用防止システム１００の動作について、図８を用いて説明する。図８は、本実施の形態にかかるプログラム不正使用防止システム１００におけるプログラムの不正使用防止処理のシーケンス図である。
【０１３３】
まず、プログラム配布サーバ１０１が、配布するプログラムを不正使用監視サーバ１０２に登録要求を行うプログラム登録要求処理を行う（ＳＴ８０１）。そして、これに対して不正使用監視サーバ１０２が、配布するプログラムの登録を行うプログラム登録処理を行う（ＳＴ８０２）。
【０１３４】
次に、ユーザ端末１０３が、プログラム配布サーバ１０１に対して、プログラムの取得を行うためのプログラム取得処理を行う（ＳＴ８０３）。そして、これに対して、プログラム配布サーバ１０１が、不正使用監視サーバ１０２にユーザ端末１０３のユーザ登録する処理を行い、その後ユーザ端末１０３にプログラムを配布するプログラム配布処理を行う（ＳＴ８０４）。
【０１３５】
これに対して、不正使用監視サーバ１０２は、ユーザ端末１０３のユーザ登録処理を行う（ＳＴ８０５）。
【０１３６】
このようにして、ユーザ端末１０３に対して、プログラムの配布が行われる。次に、プログラムの不正使用を防止するための処理に移行する。
【０１３７】
まず、不正使用監視サーバ１０２が、ユーザ端末１０３に対して、プログラムの特徴量を抽出する特徴量抽出プログラムの配布を行う特徴量抽出プログラム配布処理を行う（ＳＴ８０６）。そして、これに対して、ユーザ端末１０３は、配布されてきた特徴量抽出プログラムを用いて特徴量抽出プログラム更新処理を行う（ＳＴ８０７）。
【０１３８】
次に、ユーザ端末１０３は、プログラム配布サーバ１０１から送られてきたプログラムを起動するプログラム起動処理を行い（ＳＴ８０８）、その後、起動するプログラムに対して配布された特徴量抽出プログラムを用いて用いた特徴量を不正使用監視サーバ１０２に対して送信する特徴量送信処理を行う（ＳＴ８０９）。
【０１３９】
これに対して、不正使用監視サーバ１０２は、ユーザ端末１０３から送られてきた特徴量を受信する特徴量受信処理を行う（ＳＴ８１０）。
【０１４０】
そして、不正使用監視サーバ１０２は、配布したプログラムが不正使用されている場合には、ＳＴ８０１において受信した特徴量を用いてユーザ端末１０３を特定する不正使用検出処理を行う（ＳＴ８１１）。
【０１４１】
このように、プログラムの不正使用が発覚した場合は、定期的に更新する特徴量抽出プログラムを用いて抽出したプログラムの特徴量を用いて、ユーザ端末１０３が実行する色グラムを特定でき、ユーザ端末１０３が正規のユーザか特定できる。この結果、プログラムの不正使用を防止できる。
【０１４２】
なお、上述したＳＴ８０１〜ＳＴ８１１の処理の詳細については、後述する。
【０１４３】
次に、プログラム配布サーバ１０１のプログラム登録要求処理について、図９を用いて説明する。図９は、本実施の形態にかかるプログラム配布サーバ１０１のプログラム登録要求処理のフロー図である。
【０１４４】
まず、プログラム配布サーバ１０１は、配布するプログラムをプログラム蓄積部２０１に保存する（ステップ９０１）。その後、プログラム登録部２０３が、プログラム蓄積部２０１のプログラムの登録要求を不正使用監視サーバ１０２に送信し（ステップ９０２）、本処理を終了する。
【０１４５】
このように、プログラム配布サーバ１０１のプログラム登録要求処理を行う。
【０１４６】
次に、不正使用監視サーバ１０２のプログラム登録処理について説明する。図１０は、不正使用監視サーバ１０２におけるプログラム登録処理のフロー図である。
【０１４７】
まず、不正使用監視サーバ１０２のプログラム受信部２０４が、プログラム配布サーバ１０１から送られてきたプログラムの登録要求を受信する（ステップ１００１）。続いて、不正使用監視サーバ１０２は、プログラム配布サーバ１０１から登録要求してきたプログラムをプログラム蓄積部２１７に保存して処理を終了する（ステップ１００２）。
【０１４８】
このように、不正使用監視サーバ１０２は、プログラム登録処理を行う。
【０１４９】
次に、ユーザ端末１０３のプログラム取得処理について図１１を用いて説明する。図１１は、本実施の形態にかかるユーザ端末１０３のプログラム取得処理のフロー図である。
【０１５０】
まず、ユーザ端末１０３のプログラム取得部２１６がプログラムの配布要求をプログラム配布サーバ１０１に送信する（ステップ１１０１）。続いて、プログラム取得部２１６が、プログラム配布サーバ１０１から送られてきたプログラムを取得する（ステップ１１０２）。その後、プログラム取得部２１６は、取得したプログラムをプログラム蓄積部２２９に保存し（ステップ１１０３）、プログラム取得処理を完了する。
【０１５１】
以上のように、ユーザ端末１０３はプログラム取得処理を行う。
【０１５２】
次に、プログラム配布サーバ１０１のプログラム配布処理を、図１２を用いて説明する。図１２は、プログラム配布サーバ１０１のプログラム配布処理のフロー図である。
【０１５３】
まず、プログラム配布サーバ１０１は、プログラム配布部２０２において、ユーザ端末１０３から送られてきたプログラム配布要求を受信する（ステップ１２０１）。続いて、プログラム配布部２０２は、プログラム配布要求に含まれるユーザ情報および端末情報を抽出し、そのユーザに配布するプログラムの名称とともに不正使用監視サーバ１０２へ通知する（ステップ１２０２）。続いて、プログラム配布部２０２は、ユーザ端末１０３から要求されたプログラムをユーザ端末１０３に送信して（ステップ１２０３）、処理を終了する。
【０１５４】
以上のように、プログラム配布サーバ１０１は、プログラム配布処理を行う。
【０１５５】
次に、不正使用監視サーバ１０２のユーザ登録処理について図１３を用いて説明する。図１３は、不正使用監視サーバ１０２のユーザ登録処理のフロー図である。
【０１５６】
まず、不正使用監視サーバ１０２のユーザ登録受信部２１４が、プログラム配布サーバ１０１を介してユーザ端末１０３から送れてきたユーザ登録要求を受信し（ステップ１３０１）、この要求に基づいて、ユーザ登録情報をユーザ情報保存部２１５のユーザ情報テーブル４００に蓄積して処理を終了する（ステップ１３０２）。
【０１５７】
以上のように、不正使用監視サーバ１０２は、ユーザ登録処理を行う。このようにして、正規のユーザを登録する。
【０１５８】
次に、不正使用監視サーバ１０２の特徴量抽出プログラム配布処理について図１４を用いて説明する。図１４は、不正使用監視サーバ１０２の特徴量抽出プログラム配布処理のフロー図である。
【０１５９】
まず、不正使用監視サーバ１０２は、特徴量抽出プログラム２１２ａをその有効期限２１２ｂとともに特徴量抽出プログラム蓄積部２１２に保存する（ステップ１４０１）。
【０１６０】
続いて、特徴量抽出プログラム送信部２１３が、ユーザ端末１０３からの特徴量抽出プログラムの配信要求を受信し（ステップ１４０２）、その要求に応じて特徴量抽出プログラムの最新バージョンをユーザ端末１０３に送付する（ステップ１４０３）。
【０１６１】
以上のように、不正使用監視サーバ１０２は、特徴量抽出プログラム配布処理を行う。このように、最新バージョンの特徴量抽出プログラムを配布する。
【０１６２】
次に、ユーザ端末１０３の特徴量抽出プログラム更新処理について図１５を用いて説明する。図１５は、ユーザ端末１０３の特徴量抽出プログラム更新処理のフロー図である。
【０１６３】
まず、ユーザ端末１０３の特徴量抽出プログラム更新部２２１が、特徴量抽出プログラムの最新バージョンのバージョン番号を不正使用監視サーバ１０２に確認する（ステップ１５０１）。
【０１６４】
ユーザ端末１０３がネットワークに接続していないなどの理由により、最新バージョンのバージョン番号が確認できない場合には（ステップ１５０２）、特徴量抽出プログラム更新部２２１は、特徴量抽出プログラムの有効期限を確認する（ステップ１５０７）。
【０１６５】
確認の結果、有効期限が切れている場合には（ステップ１５０８）、特徴量抽出プログラム更新部２２１は、実行制御部２２３にすべてのプログラム実行禁止を指示する（ステップ１５０９）。
【０１６６】
この動作により、ユーザ端末１０３の利用者が、特徴量抽出プログラムの更新を妨害して、プログラムを不正使用することを防ぐ。
【０１６７】
一方、特徴量抽出プログラムの最新バージョンのバージョン番号が取得できた場合には（ステップ１５０２）、特徴量抽出プログラム更新部２２１は、現在ユーザ端末１０３にインストールされている特徴量抽出プログラムのバージョン番号と比較する（ステップ１５０３）。バージョンが一致する場合には、特徴量抽出プログラム更新部２２１は、最新版がインストールされていると判定してこの処理を終了する。
【０１６８】
もし、バージョンが一致せず、より新しいバージョンがあると判定された場合には（ステップ１５０３）、特徴量抽出プログラム更新部２２１は、不正使用監視サーバ１０２から、最新版の特徴量抽出プログラムと、その有効期限を取得する（ステップ１５０４）。続いて、特徴量抽出プログラム更新部２２１は、暗号化部２２５を用いて特徴量抽出プログラムの有効期限を暗号化して有効期限蓄積部２２２に保存する（ステップ１５０５）。
【０１６９】
このように暗号化することにより、プログラムの有効期限を不正に改変することを防止できる。
【０１７０】
そして、特徴量抽出プログラム更新部２２１は、特徴量抽出部２２０に最新の特徴量抽出プログラムをインストールして処理を終了する（ステップ１５０６）。
【０１７１】
以上のように、ユーザ端末１０３は特徴量抽出プログラム更新処理を行う。これにより、特徴量抽出プログラムを最新バージョンに更新できるので、ユーザがプログラムから特徴量を抽出する方法を特定できなくなり、プログラムの特徴量の特定ができなくなる。この結果、ユーザがプログラムの特定量を改変したとしても、その効力が発揮できるのは、特徴量抽出プログラムが最新バージョンに更新される短い期間のみになる。よって、プログラムの不正使用を防ぐことができる。
【０１７２】
次に、ユーザ端末１０３のプログラム起動処理について、図１６を用いて説明する。図１６は、ユーザ端末１０３のプログラム起動処理のフロー図である。
【０１７３】
この処理は、ユーザ端末１０３の利用者がプログラムを起動しようとした際に実行される。
【０１７４】
まず、ユーザ端末１０３の実行制御部２２３は、プログラムの実行が全面的に禁止されていないかどうかを確認する（ステップ１６０１）。
【０１７５】
プログラムの実行が全面的に禁止されている場合、実行制御部２２３は、プログラムの実行が全面的に禁止されている警告を表示部（不図示）に表示して、処理を終了する（ステップ１６０７）。
【０１７６】
これにより、ユーザが実行しているプログラムが不正であることを認識できる。また、悪意のユーザに対しては、プログラムの不正使用防止機構が動作していることを認識させることができる。
【０１７７】
一方、プログラムの実行が全面的に禁止されていない場合には、特徴量抽出部２２０がプログラム蓄積部２２９より利用者が起動しようとしたプログラムを読み込み、その特徴量を抽出する（ステップ１６０２）。
【０１７８】
続いて、特徴量抽出部２２０が、特徴量を実行制御部２２３に通知する（ステップ１６０３）。
【０１７９】
次に、実行制御部２２３は、通知された特徴量が禁止リスト２２４に存在するかどうかを判定する（ステップ１６０４）。
【０１８０】
通知された特徴量が禁止リスト２２４中に存在した場合には（ステップ１６０５）、プログラム実行部２２６は、プログラムが不正使用されていることを示す警告を利用者に対して表示して、プログラムを起動せずに処理を終了する（ステップ１６０６）。
【０１８１】
このように、禁止リスト２２４を用いることにより、禁止されたプログラムの不正使用を明示的に禁止することが可能となる。
【０１８２】
一方、通知された特徴量が禁止リスト中に存在しない場合には、実行制御部２２３は、プログラム実行部２２６にプログラムの実行許可を与え、プログラム実行部２２６はプログラムを読み込んで実行する（ステップ１６０８）。
【０１８３】
以上のように、ユーザ端末１０３は、プログラム起動処理を行う。
【０１８４】
次に、ユーザ端末１０３の特徴量送信処理について、図１７を用いて説明する。図１７は、ユーザ端末１０３の特徴量送信処理のフロー図である。
【０１８５】
まず、ユーザ端末１０３の特徴量抽出部２２０は、プログラムがユーザ端末１０３の利用者により起動されたときに、起動されたプログラムの特徴量を抽出して、その特徴量と、その特徴量を抽出するときに用いた特徴量抽出プログラムのバージョンを特徴量送信部２２７に渡す（ステップ１７０１）。
【０１８６】
これに対して、特徴量送信部２２７は、これらの情報を受け取り（ステップ１７０２）、ユーザ情報取得部２１９からユーザ情報を取得して（ステップ１７０３）、特徴量登録要求（特徴量と、その特徴量を抽出するときに用いた特徴量抽出プログラムのバージョン、ユーザ情報、端末情報を含む）を、不正使用監視サーバ１０２に送信する（ステップ１７０４）。
【０１８７】
そして、特徴量送信部２２７は、特徴量登録要求の送信が成功した場合には（ＳＴ１７０５）、不正使用監視サーバ１０２に登録ができたとして処理を終了する。
【０１８８】
一方、特徴量登録要求の送信が成功しなかった場合には、不正使用監視サーバ１０２に登録ができなかったとして、特徴量送信部２２７は、特徴量蓄積部２２８の特徴量テーブル５００を参照し、特徴量の有効期限５０４を確認する（ステップ１７０６）。
【０１８９】
有効期限を過ぎていなければ、特徴量送信部２２７は、暗号化部２２５を用いて、特徴量を暗号化して、特徴量テーブル５００に蓄積し（ステップ１７０７）、一定期間経過するまで待って、ステップ１７０４の処理に移行し、特徴量登録要求を再送信する（ステップ１７０８）。
【０１９０】
これにより、通信状態などの一時的な不良により、正規のユーザが特徴量を送信できなくなり、プログラムを実行できなくなるという事態を防止できる。
【０１９１】
そして、特徴量登録要求の再送信に何度か失敗すると、特徴量送信部２２７は、特徴量の有効期限が切れるため、実行制御部が、実行制御部２２３にすべてのプログラムの実行禁止を指示して処理を終了する（ステップ１７０９）。
【０１９２】
以上のように、ユーザ端末１０３は、特徴量送信処理を行う。この動作により、特徴量の送信をユーザが意図的に妨害して、プログラムの不正使用を行おうとするのを阻止することができる。
【０１９３】
次に、不正使用監視サーバ１０２の特徴量受信処理について、図１８を用いて説明する。図１８は、不正使用監視サーバ１０２の特徴量受信処理のフロー図である。
【０１９４】
まず、不正使用監視サーバ１０２の特徴量受信部２０６が、特徴量登録要求を受信し（ステップ１８０１）、この要求に含まれる、特徴量、ユーザ情報、端末情報、この特徴量を抽出したときの特徴量抽出プログラムのバージョン情報を特徴量蓄積部２０７の特徴量テーブル３００に保存して、処理を終了する（ステップ１８０２）。
【０１９５】
以上のように、不正使用監視サーバ１０２は、特徴量受信処理を行う。
【０１９６】
次に、不正使用監視サーバ１０２の不正使用検出処理について、図１９を用いて説明する。図１９は、不正使用監視サーバ１０２の不正使用検出処理のフロー図である。
【０１９７】
まず、不正使用監視サーバ１０２の特徴量比較部２０８が特徴量蓄積部２０７の特徴量テーブル３００から特徴量３０１、ユーザ情報３０３、端末情報３０４、特徴量を抽出するときに用いた特徴量抽出プログラムのバージョン情報３０２を取りだす（ステップ１９０１）。
【０１９８】
続いて、特徴量比較部２０８は、バージョン情報３０２を特徴量抽出プログラム更新部２０９に通知する（ステップ１９０２）。
【０１９９】
これに対して、特徴量抽出プログラム更新部２０９は、バージョン情報３０２に基づき、指定されたバージョンの特徴量抽出プログラムを特徴量抽出部２１０にインストールする（ステップ１９０３）。
【０２００】
続いて、特徴量抽出部２１０は、プログラム蓄積部２１７から、プログラムをひとつ取り出し（ステップ１９０４）、プログラムの特徴量を抽出し、プログラムの名称と特徴量を特徴量比較部２０８へ通知する（ステップ１９０５）。
【０２０１】
これに対して、特徴量比較部２０８は、特徴量抽出部２１０から通知された特徴量と、特徴量テーブル３００に蓄積された特徴量３０１とを比較し（ステップ１９０６）、一致しない場合には（ステップ１９０７）、２つの特徴量を抽出する元になったプログラムは同一のプログラムではないと判断して、ステップ１９１１に移る。
【０２０２】
また、特徴量比較部２０８から通知された特徴量と、特徴量テーブル３００に蓄積された特徴量３０１とが一致した場合には、実行禁止判定部２１１が、ユーザ情報３０３とプログラムの名称に基づいて、ユーザ登録されているプログラムであるかどうかを確認する（ステップ１９０８）。
【０２０３】
プログラムが登録されている場合は（ステップ１９０９）、実行禁止判定部２１１は、ユーザをそのプログラムの正規のユーザであると判断し、ユーザ端末１０３にプログラムの実行を許可する指示を示す制御信号を送信し（ステップ１９１０）、ステップ１９１２に進む。
【０２０４】
もし、プログラムが登録されていない場合には、実行禁止判定部２１１は、そのプログラムをユーザが不正に利用していると判断し、そのユーザ端末１０３にそのプログラムの実行を禁止する指示を示す制御信号を送信する（ステップ１９１１）。
【０２０５】
なお、本実施の形態では、実行禁止判定部２１１がユーザ端末１０３に対して、プログラムの実行許可の指示と実行禁止する指示を切り替える制御信号を送信する形態で説明したが、実行禁止判定部２１１がユーザ端末１０３に対して、プログラムの実行許可の指示と実行禁止の指示とを別の信号で送信する形態であっても良い。
【０２０６】
また、実行禁止判定部２１１がユーザ端末１０３に対して、プログラムの実行許可の指示と実行禁止の指示のどちらか一方を送る形態であっても良い。詳細には、デフォルトでは実行を許可しておき、禁止時のみ、実行禁止判定部２１１がユーザ端末１０３に対して、禁止通知の通知を行っても良いし、デフォルトで実行を禁止しておき、正規ユーザのみ実行を許可する許可通知を送信しても良い。
【０２０７】
続いて、特徴量比較部２０８が、特徴量蓄積部２０７の特徴量テーブル３００にまだ特徴量を比較していない他のプログラムがあるかチェックして（ステップ１９１２）、あった場合はステップ１９０１に戻り、ない場合には、本処理を終了する。
【０２０８】
以上のように、不正使用監視サーバ１０２は、不正使用検出処理を行う。これにより、ユーザ端末１０３が正規のユーザの端末か否か判断でき、プログラムの不正使用を防止できる。
【０２０９】
以上説明したように、本実施の形態によれば、特徴量抽出プログラムを定期的に更新できるので、プログラムから特徴量を抽出する部分の特定が困難になる。つまり、仮に、同一性を判定するための特徴量を変化させるようにプログラムを改変されたとしても、特徴量抽出プログラムが更新されることにより、改変したプログラムは特徴量を用いた同一性判定を逃れられなくなる。すなわち、プログラムを改変したとしても特徴量を用いた同一性判定を逃れられるのは、一定期間のみとなる。これにより、プログラムの不正使用を防止できる。
【０２１０】
また、本実施の形態は、プログラムの特徴量を利用する方式を用いているため、柔軟性、利便性に優れたプログラムの不正使用防止法を提供できる。
【産業上の利用可能性】
【０２１１】
本発明のように、特徴量を用いて不正使用方法において、プログラム特徴量抽出方法を定期的に更新することにより、柔軟性、利便性に優れ、かつ、プログラムの改ざんがあった場合でも、プログラムの不正使用を防止することができる。これは、プログラムの著作権保護装置等として有用である。
【図面の簡単な説明】
【０２１２】
【図１】本発明の一実施の形態にかかるプログラム不正使用防止システムをあらわす概略図
【図２】本実施の形態にかかるプログラム配布サーバの構成図
【図３】本実施の形態にかかる不正使用監視サーバの構成図
【図４】本実施の形態にかかるユーザ端末の構成図
【図５】本実施の形態にかかる特徴量蓄積部に蓄積される特徴量テーブルの構成図
【図６】本実施の形態にかかるユーザ情報テーブルの構成図
【図７】本実施の形態にかかる特徴量蓄積部に格納される特徴量テーブルの構成図
【図８】本実施の形態にかかるプログラム不正使用防止システムにおけるプログラムの不正使用防止処理のシーケンス図
【図９】本実施の形態にかかるプログラム配布サーバのプログラム登録要求処理のフロー図
【図１０】本実施の形態にかかる不正使用監視サーバにおけるプログラム登録処理のフロー図
【図１１】本実施の形態にかかるユーザ端末のプログラム取得処理のフロー図
【図１２】本実施の形態にかかるプログラム配布サーバのプログラム配布処理のフロー図
【図１３】本実施の形態にかかる不正使用監視サーバのユーザ登録処理のフロー図
【図１４】本実施の形態にかかる不正使用監視サーバの特徴量抽出プログラム配布処理のフロー図
【図１５】本実施の形態にかかるユーザ端末の特徴量抽出プログラム更新処理のフロー図
【図１６】本実施の形態にかかるユーザ端末のプログラム起動処理のフロー図
【図１７】本実施の形態にかかるユーザ端末の特徴量送信処理のフロー図
【図１８】本実施の形態にかかる不正使用監視サーバの特徴量受信処理のフロー図
【図１９】本実施の形態にかかる不正使用監視サーバの不正使用検出処理のフロー図
【符号の説明】
【０２１３】
１００  プログラム不正使用防止システム
１０１  プログラム配布サーバ
１０２  不正使用監視サーバ
１０３  ユーザ端末
２０１、２１７、２２９  プログラム蓄積部
２０２  プログラム配布部
２０３  プログラム登録部
２０４  プログラム受信部
２０６  特徴量受信部
２０７  特徴量蓄積部
２０８  特徴量比較部
２０９  特徴量抽出プログラム更新部
２１０  特徴量抽出部
２１１  実行禁止判定部
２１２  特徴量抽出プログラム蓄積部
２１３  特徴量抽出プログラム送信部
２１４  ユーザ登録受信部
２１５  ユーザ情報保存部
２１６  プログラム取得部
２１８  ユーザ登録送信部
２１９  ユーザ情報取得部
２２０  特徴量抽出部
２２１  特徴量抽出プログラム更新部
２２２  有効期限蓄積部
２２３  実行制御部
２２４  禁止リスト
２２５  暗号化部
２２６  プログラム実行部
２２７  特徴量送信部
２２８  特徴量蓄積部
【図１】
2005157904.tif 000003
【図２】
2005157904.tif 000004
【図３】
2005157904.tif 000005
【図４】
2005157904.tif 000006
【図５】
2005157904.tif 000007
【図６】
2005157904.tif 000008
【図７】
2005157904.tif 000009
【図８】
2005157904.tif 000010
【図９】
2005157904.tif 000011
【図１０】
2005157904.tif 000012
【図１１】
2005157904.tif 000013
【図１２】
2005157904.tif 000014
【図１３】
2005157904.tif 000015
【図１４】
2005157904.tif 000016
【図１５】
2005157904.tif 000017
【図１６】
2005157904.tif 000018
【図１７】
2005157904.tif 000019
【図１８】
2005157904.tif 000020
【図１９】
2005157904.tif 000021