説明

ソフトウェア実行制御システム及びソフトウェアの実行制御プログラム

【課題】ユーザコンピュータに予めプログラムやデータを格納させて利用するダウンロード式のソフトウェア配信において、ゲームプログラム等のソフトウェアの違法な使用を未然に阻止する。
【解決手段】ユーザは、配信用コンピュータ10から新版のゲームプログラム40(付随データ群も含む)及び実行制御プログラム50をダウンロードする(S2)。実行制御プログラム50は、認証用コンピュータ20とオンラインによる認証を行って、ゲームプログラム40を起動させるために必要な起動情報を取得する(S3,S4)。実行制御プログラム50は、起動情報に基づいてゲームプログラム40をデコードし、起動させる(S5)。ユーザがゲームを終えて、ゲームプログラム40を終了させると、実行制御プログラム50は、ゲームプログラム40の全部又は一部を削除することにより無力化する(S6)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、ゲームソフトウェア、文書や図形等を作成する実務用ソフトウェア等の各種アプリケーションソフトウェアを新バージョンのソフトウェアに更新させたり、その実行を制御するソフトウェア実行制御システム及びソフトウェアの実行制御プログラムに関する。
【背景技術】
【0002】
一般的に、例えば、パーソナルコンピュータや携帯情報端末等のユーザコンピュータ上で稼働するゲームソフトウェア等のアプリケーションソフトウェアは、例えば、OS(Operating
System)、使用言語、ハードウェア構成等の各種のソフトウェア実行環境に応じて、あるいは、ソフトウェアの価格や代金支払いの有無等に応じて、複数種類のバージョンが用意されることがある。
【0003】
例えば、同じソフトウェアであっても、英語版、日本語版、中国語版等のように、使用言語毎に異なるバージョンが用意されることがある。また、無償で提供するバージョンと有償で提供するバージョンとを用意し、無償のソフトウェアから有償のソフトウェアへバージョンアップを誘導することも比較的よく行われている。無償のソフトウェアは、「体験版」や「お試し版」とも呼ばれ、有償のソフトウェアは「製品版」や「完全版」とも呼ばれる。無償のソフトウェアは、同種の有償のソフトウェアに比べて、その機能が一部制限されていたり、試用期間や試用回数に制限を受けることが多い。無償のソフトウェアを試用することによりソフトウェアの価値を認めたユーザは、提供元のウェブサイトから有償のソフトウェアを購入してダウンロードしたり、販売店で有償のパッケージソフトウェアを購入したりしてバージョンアップを行う。
【0004】
一方、ソフトウェアはディジタルデータであり、複製が容易で、かつ複製による劣化も殆ど生じないという特徴を有するため、違法コピーや無断使用が大きな問題となっている。そこで、ソフトウェア(ソフトウェアのライセンス)を購入した正規ユーザとライセンスを得ていない違法ユーザとを、ユーザ認証等によって識別し、正規ユーザにのみソフトウェアを使用させるようにすることが従来より行われている。
【0005】
例えば、ソフトウェアをインストールする際に、ソフトウェアパッケージや記録媒体に印刷されたプロダクトIDを入力させて、正規購入品であるか否かを判定する技術は知られている(例えば、特開2002−258963号公報
段落0003参照)。
また、ソフトウェアを使用するための鍵データを、イントラネット上に設置されたライセンス管理サーバに要求し、ユーザ認証により正当なユーザと認められた場合には、ライセンス管理サーバから鍵データを取得し、この鍵データによってソフトウェアを起動させて使用するようにしたものも知られている(例えば、特開2002−6972号公報、特開2002−297254公報)。
【特許文献1】特開2002−258963号公報
【特許文献2】特開2002−6972号公報
【特許文献3】特開2002−297254公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
プロダクトID(プロダクトキー)を入力することにより正規ユーザであるか否かを判別する従来技術は、単なる文字や記号からなるIDをインストール時に入力するだけの防御機構であり、容易に回避可能である。従って、この種の防御機構(著作権保護機構)しか備えないソフトウェアは、違法コピーや無断使用を事実上排除することができない。
【0007】
ライセンス管理サーバとの間でユーザ認証を行い、正常に認証された場合に鍵データをユーザコンピュータに送信して起動させる技術は、単にプロダクトIDを入力するだけの技術に比べて、防御力は向上している。しかし、ソフトウェアはユーザコンピュータ上で既に起動可能状態に置かれており、鍵データの取得待ちとなっている。従って、鍵データの入力待ち状態となっているソフトウェアを違法コピーし、別の方法で鍵データを取得してしまえば、防御機構をすり抜けて使用することができる。
【0008】
一方、近年では、コンピュータの処理能力増大及び通信ネットワークの高速化等に伴って、ユーザが希望する時に希望のソフトウェアを実行させる方法が提案されている。このようなソフトウェアのオンデマンド配信に適用可能な配信方法としては、ストリーミング方式とダウンロード方式とが知られている。
【0009】
ストリーミング方式では、ユーザコンピュータは、サーバからソフトウェアを受信しながら同時に再生を行う。そして、再生を終了して不要になったデータは直ちに破棄される。従って、ストリーミング方式は、ユーザの閲覧が終了した時点でデータが残らないため、特殊なソフトウェアを用いる等しない限り、違法にソフトウェアをコピーすることができない。しかし、ストリーミング方式では、ユーザが視聴を希望するたび毎に毎回ソフトウェアのデータを送信する必要があるため、広帯域で高速な通信ネットワークが整備されている場合でも、多数のユーザが同時にストリーミング配信を希望すると、通信ネットワークのトラフィックが増大し、サーバの負担も大きくなる。
【0010】
これに対し、ダウンロード方式の場合は、ユーザの希望するソフトウェアをサーバからユーザコンピュータにダウンロードさせて蓄積し、ユーザコンピュータ上で実行させるため、データが通信ネットワークを流れる時間は少なく、多数のユーザからの配信要求に応えることができる。しかし、ダウンロード方式の場合は、ユーザコンピュータ内にソフトウェアが蓄積されたままになるため、ストリーミング方式よりも簡単に違法コピー等を行うことができる。
【0011】
また、例えば、CD−ROM、DVD−ROM、ハードディスク、半導体メモリ等の各種記録媒体にゲームプログラム等を固定して流通に置くことも広く行われている。この場合も、上述の通り、ゲームプログラム等が不正にコピーされたり、プロテクト機構が不正に破られたりして、不正に使用されている。
【0012】
そこで、本発明の1つの目的は、ソフトウェアの不正使用を抑制できるようにしたソフトウェア実行制御システム及びソフトウェアの実行制御プログラムを提供することにある。本発明の1つの目的は、ユーザコンピュータにソフトウェアを保存して実行させるダウンロード方式の場合に、違法コピーや無断使用を防止できるようにしたソフトウェア実行制御システム及びソフトウェアの実行制御プログラムを提供することにある。本発明の1つの目的は、ソフトウェアの実行中に不正な使用が行われるのを未然に防止できるようにしたソフトウェア実行制御システム及びソフトウェアの実行制御プログラムを提供することにある。本発明の1つの目的は、負荷状態等を考慮しながら、不正使用に対する監視効率を動的に制御することができるソフトウェア実行制御システム及びソフトウェアの実行制御プログラムを提供することにある。本発明の他の目的は、後述する実施の形態の説明から明らかになるであろう。
【課題を解決するための手段】
【0013】
本発明に係るソフトウェア実行制御システムは、ユーザコンピュータにインストールされた第1のソフトウェアを第2のソフトウェアに更新させるものであって、後述の配信部及び認証部を備え、かつ、特徴的な動作を行う実行制御プログラムを採用する。
【0014】
配信部は、エンコードされたソフトウェア及び該第2のソフトウェアの実行を制御するための実行制御プログラムをユーザコンピュータに通信ネットワークを介して配信するものである。認証部は、ユーザコンピュータにインストールされた実行制御プログラムからの要求によってユーザ認証を行い、正当なユーザであると確認した場合には、第2のソフトウェアをデコードして起動させるために必要な所定の情報を通信ネットワークを介して実行制御プログラムに送信するものである。そして、第2のソフトウェアは実行制御プログラムから渡される起動情報のみで起動可能に構成されており、実行制御プログラムは、(1)認証部から受信した所定の情報に基づいてエンコードされた第2のソフトウェアをデコードして第1のソフトウェアに置き換え、(2)所定の情報に基づいて起動情報を生成することにより、第2のソフトウェアを起動させ、(3)第2のソフトウェアの実行が終了された場合には、第2のソフトウェアを無力化させるように構成されている。
【0015】
第1のソフトウェアと第2のソフトウェアとは、同一種類のソフトウェアであって、バージョンの異なるものである。第1のソフトウェアを旧版ソフトウェア、第2のソフトウェアを新版ソフトウェアと呼ぶこともできる。第1,第2のソフトウェアとしては、例えば、ゲーム、映画、娯楽番組、教養番組、教育番組、文書作成、図形作成、画像編集等の各種アプリケーションソフトウェアを採用することができる。第1のソフトウェアと第2のソフトウェアとは、例えば、使用言語、実行可能環境(対応OS等)、機能制限の有無等で相違する。ユーザコンピュータとしては、例えば、ワークステーション、パーソナルコンピュータ、携帯情報端末、携帯電話等を挙げることができる。
【0016】
最初に、ユーザコンピュータにインストールされている第1のソフトウェアは、後述の認証処理等を行わずに、ユーザが自由に使用することができる。第1のソフトウェアは、例えば、ソフトウェアベンダーのサイトからインターネット等の通信ネットワークを介して、あるいは、店頭販売のパッケージソフトウェアによって、ユーザコンピュータにインストールされている。
【0017】
次に、ユーザが、配信部から第2のソフトウェアのダウンロードを希望すると、第2のソフトウェア及び第2のソフトウェアの実行を制御する実行制御プログラムが配信部からユーザコンピュータに送信される。実行制御プログラムは、ユーザコンピュータ上で実行される。実行制御プログラムは、通信ネットワークを介して認証部にユーザ認証を要求する。ユーザ認証の方法としては、例えば、ユーザID、パスワード、ユーザコンピュータに固有の情報(例えば、MACアドレス(Media Access Control address)等)を予め登録されているデータと照合することにより行うことができる。なお、これに限らず、例えば、指紋や声紋等のユーザ固有の生体情報を用いて認証を行うようにしてもよい。
【0018】
認証部が正当なユーザであると認証した場合は、認証部からユーザコンピュータの実行制御プログラムに向けて、所定の情報が送信される。この所定の情報には、エンコードされた状態でユーザコンピュータに送信された第2のソフトウェアをデコードし、デコードされた第2のソフトウェアを起動させるために必要なデータが含まれている。
【0019】
ここで、第2のソフトウェアは、実行制御プログラムから渡される起動情報のみで起動可能に構成されている。即ち、実行制御プログラムは、第2のソフトウェアを起動させる専用の「ランチャーソフトウェア」として作用する。
【0020】
そして、実行制御プログラムは、以下の処理を行う。(1)まず、実行制御プログラムは、認証部から受信した所定の情報に基づいて(所定の情報に含まれるデコードキーを利用して)、第2のソフトウェアをデコードする。デコードされた第2のソフトウェアは、第1のソフトウェアに置き換えられる。(2)次に、実行制御プログラムは、認証部から受信した所定の情報に基づいて(所定の情報に含まれる起動引数を利用して)、起動情報(起動引数とデコードされた第2のソフトウェアのレジストリパスからなる起動ステートメント)を生成し、この起動情報によって第2のソフトウェアを起動させる。これにより、ユーザは、ユーザコンピュータ上で第2のソフトウェアを使用することができる。(3)実行制御プログラムは、第2のソフトウェアの起動後も、第2のソフトウェアの実行状態を監視しており、第2のソフトウェアの実行終了を検出すると、第2のソフトウェアを無力化させる。これにより、ユーザは、第2のソフトウェアを使用することができなくなる。
【0021】
ユーザが再度の使用を希望する場合、再び認証部による認証を受けて所定の情報を取得すればよい。あるいは、再びユーザコンピュータを配信部にアクセスさせて、第2のソフトウェアを再度ダウンロードしてもよい。第2のソフトウェアの全体を再度ダウンロードする必要はなく、プログラム部分のみを再ダウンロードするように構成すれば、通信時間を短縮し、トラフィックを低減させることができる。なお、認証部からユーザコンピュータに向けて送信される所定の情報は、暗号化されているのが好ましい。
【0022】
第2のソフトウェアの実行が終了すると、実行制御プログラムは、第2のソフトウェアを無力化させる。無力化とは、第2のソフトウェアを起動したり、実行したりできなくすることを意味する。無力化の方法としては、種々のものを採用することができる。例えば、デコードされた第2のソフトウェアの全体を削除することにより無力化することができる。また、デコードされた第2のソフトウェアの一部を削除することによっても無力化することができる。なお、一部のみを削除する場合は、その削除した部分及び起動引数を認証部から受信することにより、第2のソフトウェアを再起動させることができる。あるいは、第2のソフトウェアがプログラムと付随データ群とを含んでなる場合、プログラムのみを削除することでも第2のソフトウェアを無力化させることができる。なお、デコード前のエンコードデータを保存しておくことにより、認証部から所定の情報を再度受信するだけで第2のソフトウェアを再び使用することができる。付随データ群とは、プログラムの実行に際して利用されるプログラム以外のデータ群を意味し、例えば、画像データ、音声データ、楽曲データ、テキストデータ等を挙げることができる。
【0023】
好適な実施形態では、実行制御プログラムは、複数種類の第2のソフトウェアに対応可能に構成されており、認証部が実行制御プログラムに送信する所定の情報には、起動させる第2のソフトウェアの格納先アドレス情報と起動引数と第2のソフトウェアをデコードするためのデコードキー情報とが含まれる。
【0024】
通信ネットワークを介したリアルタイムのオンライン認証と第2のソフトウェアの起動及び終了を制御する実行制御プログラムは、第2のソフトウェアとは別体に生成されている。従って、1種類の実行制御プログラムを用意するだけで、多種類の第2のソフトウェアに対応することができる。
【0025】
好適な実施形態では、実行制御プログラムは、ユーザコンピュータに固有のマシン情報と暗号化キー情報とを含む認証用情報を認証部に送信し、認証部は、少なくともマシン情報に基づいてユーザ認証を行い、正当なユーザであると確認した場合には、所定の情報を暗号化キー情報で暗号化して通信ネットワークを介して実行制御プログラムに送信するものであり、かつ、認証部には、マシン情報を複数個登録可能に構成されている。
ユーザコンピュータに固有のマシン情報としては、例えば、MACアドレス等を挙げることができる。これに加えて、ユーザコンピュータの構成情報(例えば、搭載メモリ量、CPUスペック、サウンドチップやグラフィックアクセラレータの製品名等)を採用してもよい。認証部には、複数個のマシン情報を登録させることができる。これにより、第2のソフトウェアのライセンスを正当に購入したユーザは、例えば、自宅のパーソナルコンピュータと職場のパーソナルコンピュータ等のように、複数台のユーザコンピュータを用いて、同一の第2のソフトウェアを利用することができる。
【0026】
好適な実施形態では、認証部は、正当なユーザであると確認した場合には、該ユーザが起動可能な第2のソフトウェアの一覧データをユーザコンピュータに送信し、一覧データから選択された第2のソフトウェアに関する所定の情報を通信ネットワークを介して実行制御プログラムに送信する。
【0027】
ユーザが複数種類の第2のソフトウェアのライセンスを正式に購入済の場合もあるが、認証部は、ユーザ認証後に、そのユーザが利用可能な第2のソフトウェアの名称等を列挙した一覧データをユーザコンピュータに送信する。ユーザは、起動可能な(利用可能な)一覧メニューから起動を望む第2のソフトウェアを選択する。これにより、認証部は、選択された第2のソフトウェアをデコードし起動するための所定の情報を生成し、実行制御プログラムに送信する。
【0028】
好適な実施形態では、実行制御プログラムは、ユーザコンピュータに固有のマシン情報を取得する機能と、暗号化キー情報を生成する機能と、認証部にユーザ認証を要求し、少なくともマシン情報及び暗号化キー情報を認証部に送信する機能と、認証部から受信した起動可能な第2のソフトウェアの一覧データからいずれか1つの第2のソフトウェアをユーザに選択させ、選択された第2のソフトウェアを認証部に通知する機能と、選択された第2のソフトウェアのユーザコンピュータにおける格納先アドレス情報と起動引数とデコードキー情報とを少なくとも暗号化キー情報により暗号化してなる所定の情報を受信する機能と、暗号化された所定の情報を少なくとも暗号化キー情報により解読する機能と、解読されたデコードキー情報によりユーザコンピュータ内の第2のソフトウェアをデコードさせる機能と、解読された起動引数及び格納先アドレス情報に基づいて、起動情報を生成する機能と、生成された起動情報によってデコードされた第2のソフトウェアを起動させる機能と、起動された第2のソフトウェアの実行状態を監視し、該第2のソフトウェアの実行が終了した場合は、第2のソフトウェアを無力化させる機能と、をユーザコンピュータ上に実現させる。
【0029】
また、好適な実施形態では、第2のソフトウェアは、プログラムと付随データ群とを含んでなり、プログラム又は付随データ群の少なくともいずれか一方を更新させるようになっている。
【0030】
ここで、ユーザコンピュータにインストールされている第1のソフトウェアは、第2のソフトウェアに置換されるまでは、認証部による認証を受けることなく実行可能である。
また、好適な実施形態では、実行制御プログラムは、第2のソフトウェアとは別に強制終了させることができないプログラムとして構成されている。
【0031】
即ち、例えば、稼働中のタスクを管理するプログラム等を用いて、実行制御プログラムのみを強制終了させることができないように構成されている。実行制御プログラムによる監視を停止させて、第2のソフトウェアのみをコピー等できないようにするためである。より具体的には、ハードウェアを指定しないデバイスドライバとして実行制御プログラムを生成すれば(ハードウェアを指定しないので、厳密にはデバイスドライバではないが)、アプリケーションプログラムよりもOS側に近いプログラムあるいはOSの一部を構成するプログラムとして構成されるため、通常のアプリケーションプログラムのように強制的に終了させることが困難となる。強制終了させにくいプログラムとしては、ドライバプログラムの他にBIOS(Basic Input/Output System)も知られている。しかし、BIOSは、基本的に、ハードウェアとの間で直接データを送受信するだけの機能しか持たないため、暗号化されたデータを復号化したり、第2のソフトウェアの実行を監視したりする等の高度な制御を行うことができない。このように、実行制御プログラムを、例えば、デバイスドライバのように、OSとアプリケーションプログラム(第2のソフトウェア)との間に位置する中間プログラムとして構成することにより、高度な処理を行わせつつ、悪用を防止することができる。
【0032】
好適な実施形態では、配信部と認証部とは、それぞれ別体のコンピュータ上に実現されている。
【0033】
例えば、第2のソフトウェア及び実行制御プログラムを配信する配信部は、各ソフトウェア会社毎にそれぞれ設置し、第2のソフトウェアの起動時認証を行う認証部は、各国、各地域、各ソフトウェア会社の団体毎に設置することができる。
【0034】
本発明は、プログラムの発明としても把握することができる。
【0035】
即ち、ユーザコンピュータにインストールされた第1のソフトウェアを第2のソフトウェアに更新し、この第2のソフトウェアの実行を制御する実行制御プログラムであって、外部の認証部と通信ネットワークを介して通信し、ユーザ認証を求める第1の機能と、認証部から受信した所定の情報に基づいて、第2のソフトウェアを起動させるための起動情報を生成する第2の機能と、認証部から受信した所定の情報に基づいて、第2のソフトウェアをデコードさせる第3の機能と、ユーザコンピュータに既にインストールされている更新前のソフトウェアをデコードされた第2のソフトウェアに置き換える第4の機能と、生成された起動情報によって第2のソフトウェアを起動させる第5の機能と、第2のソフトウェアの実行状態を監視し、第2のソフトウェアの実行が終了した場合は、第2のソフトウェアを無力化させる第6の機能と、をユーザコンピュータ上に実現させるソフトウェアの実行制御プログラム。
【0036】
また、本発明は、ソフトウェアの更新方法としても把握できる。
【0037】
即ち、ユーザコンピュータにインストールされている自由に使用可能な第1のソフトウェアを第2のソフトウェアに更新可能である旨をユーザに通知させるステップと、第2のソフトウェアを配信する配信用コンピュータにユーザコンピュータを通信ネットワークを介して接続させ、第2のソフトウェアへの更新を要求させるステップと、配信用コンピュータからユーザコンピュータにエンコードされた第2のソフトウェア及び該第2のソフトウェアの実行を制御するための実行制御プログラムを通信ネットワークを介して送信させるステップと、ユーザコンピュータ上で起動した実行制御プログラムにより、ユーザコンピュータと認証用コンピュータとを通信ネットワークを介して接続させ、認証用コンピュータにユーザ認証を要求させるステップと、ユーザ認証により正当なユーザであると認められた場合に認証用コンピュータからユーザコンピュータに送信される所定の情報に基づいて、第2のソフトウェアをデコードするステップと、認証用コンピュータから受信した所定の情報に基づいて、第2のソフトウェアを起動させるための起動情報を生成させるステップと、生成された起動情報によって第2のソフトウェアを起動させるステップと、起動された第2のソフトウェアの実行を監視し、第2のソフトウェアの実行が終了した場合は、第2のソフトウェアを無力化させるステップと、を含んでなるソフトウェアの更新方法。
【0038】
本発明の他の観点に従う管理用コンピュータは、アプリケーションソフトウェア及び監視プログラムと共にユーザコンピュータにインストールされる実行制御プログラムと通信を行うことにより、実行制御プログラムの動作を制御するものである。そして、この管理用コンピュータは、実行制御プログラムからの要求に基づいてユーザ認証を行う認証部と、認証部により正当なユーザであると確認された場合は、実行制御プログラムがアプリケーションソフトウェアを起動させるために必要な第1の情報を実行制御プログラムに送信する情報送信部と、所定の時期に実行制御プログラムとの間で行われる継続確認通信に基づいて、アプリケーションソフトウェアの実行継続を許可するか否かを管理する継続実行管理部と、を備えている。
【0039】
本発明の一態様では、継続実行管理部は、継続確認通信によって実行制御プログラムから取得される第1の識別情報とユーザ認証に予め関連付けられている第2の識別情報とを比較し、両方の識別情報が対応する場合は、実行制御プログラムに対してアプリケーションソフトウェアの実行継続を許可し、各識別情報が対応していない場合は、実行制御プログラムに対してアプリケーションソフトウェアの実行継続を禁止させる。
【0040】
本発明の一態様では、継続実行管理部は、第2の識別情報に対応する第1の識別情報を予め実行制御プログラムに設定させる。
【0041】
本発明の一態様では、継続実行管理部は、所定の時期を実行制御プログラムに予め設定し、この予め設定された所定の時期が到来した場合は、実行制御プログラムから継続実行管理部に対して継続確認通信を行わせる。
【0042】
本発明の一態様では、継続実行管理部は、所定の時期を可変に設定可能となっている。
【0043】
本発明の一態様では、継続実行管理部は、少なくとも予測される将来の負荷状態を考慮して、所定の時期を可変に設定可能である。
【0044】
本発明の一態様では、監視プログラムは、アプリケーションソフトウェア及び実行制御プログラムの動作状態をそれぞれ監視し、アプリケーションソフトウェアまたは実行制御プログラムのいずれか一方が動作を停止した場合は、アプリケーションソフトウェア及び実行制御プログラムをそれぞれ停止させ、自身も停止させるものであり、実行制御プログラムは、アプリケーションソフトウェア及び監視プログラムの動作状態をそれぞれ監視し、アプリケーションソフトウェアまたは監視プログラムのいずれか一方が動作を停止した場合は、アプリケーションソフトウェア及び監視プログラムをそれぞれ停止させ、自身も停止させるものである。
【0045】
本発明のさらに別の観点に従うコンピュータプログラムは、コンピュータを、アプリケーションソフトウェアの実行を制御する実行制御部と、アプリケーションソフトウェア及び実行制御部の動作状態をそれぞれ監視する監視部として、機能させるものであって、実行制御部は、管理用コンピュータと通信することによりユーザ認証を要求する機能と、管理用コンピュータから受信した第1の情報に基づいて、アプリケーションソフトウェアを起動させる機能と、管理用コンピュータとの間で継続確認通信を行う機能と、継続確認通信によってアプリケーションソフトウェアの実行継続が禁止された場合は、アプリケーションソフトウェアの動作を停止させる機能と、を備え、監視部は、アプリケーションソフトウェア及び実行制御部の動作状態をそれぞれ監視する機能と、アプリケーションソフトウェアまたは実行制御部のいずれか一方が動作を停止した場合は、アプリケーションソフトウェア及び実行制御部をそれぞれ停止させ、自身も停止させる機能と、を備えている。
【発明を実施するための最良の形態】
【0046】
以下、本発明の実施形態を図1〜図13を参照しつつ詳細に説明する。
【実施例1】
【0047】
まず、図1〜図6に基づいて第1実施例を説明する。図1は、ソフトウェア実行制御システムの全体概要を示す説明図である。本実施例では、ゲームプログラムをオンラインで更新させるシステムを例に挙げて説明する。
【0048】
配信用コンピュータ10は、新版のゲームプログラム40及び実行制御プログラム50を、インターネット等の通信ネットワークを介して、各ユーザのコンピュータ30に配信するためのものである。配信用コンピュータ10は、各ソフトウェア会社(ベンダー)毎にそれぞれ設置されるサーバとして構成することができる。
【0049】
まず、配信用コンピュータ10は、ゲームプログラムデータベース12に登録された新版プログラムについて、事前に、認証用コンピュータ20に登録を行う(S1)。例えば、新版ゲームプログラムの名称、種類、販売価格、データサイズ、バージョン情報等のデータが、配信用コンピュータ10から認証用コンピュータ20に登録される。もっとも、配信用コンピュータ10と認証用コンピュータとが一体的に構成されている場合は、このような外部ネットワークを介した通知は必ずしも必要ない。
【0050】
配信用コンピュータ10の配信制御部11は、ユーザコンピュータ30からプログラムの更新要求を受けると、ユーザの希望するゲームプログラム40をゲームプログラムデータベース12から読み出して、ユーザコンピュータ30に配信するようになっている(S2)。ここで、新版のゲームプログラム40は、単独でユーザコンピュータ30に配信されるのではなく、ゲームプログラム40の起動や削除等を管理する実行制御プログラム50と共にユーザコンピュータ30に配信される点に留意すべきである。
【0051】
認証用コンピュータ20は、例えば、複数のソフトウェア会社が所属する団体や機関毎にそれぞれ設置されるサーバとして構成することができる。また、これに限らず、各ソフトウェア会社毎に認証用コンピュータ20をそれぞれ設置してもよい。認証用コンピュータ20は、認証部21と、課金処理部22と、起動情報送信部23と、ユーザ情報データベース24と、ゲーム情報データベース25とを備えている。
【0052】
認証部21は、ユーザコンピュータ30の実行制御プログラム50から送信される所定の認証用データに基づいて、ユーザ認証を行うものである。詳細は後述するが、認証用データには、例えば、ユーザ識別情報(ユーザID)、パスワード(PW)、MACアドレス(Media Access Control address)が含まれる。
【0053】
課金処理部22は、新版ゲームプログラム40の使用許諾に際して、ユーザに課金するものである。課金方法には、種々のものを採用できる。例えば、ゲームプログラムの代金を一括でユーザに支払わせたり(売り切り)、又は、ユーザがゲームプログラムを使用する毎に課金してもよい。あるいは、所定期間や所定回数毎に課金するようにしてもよい。なお、支払方法も、例えば、クレジット決済、電子マネー決済等のように種々のものを採用できる。
【0054】
起動情報送信部23は、ユーザコンピュータ30の記憶装置(例えば、ハードディスク等)に格納された新版のゲームプログラム40をデコードし、起動させるために必要な起動情報をユーザコンピュータ30の実行制御プログラム50に向けて送信するものである。
【0055】
ユーザが、実行制御プログラム50を介して認証用コンピュータ20の認証部21と認証を行い、ゲームプログラム40の購入代金(使用権の代金)を支払い済みの正当なユーザであると認証された場合は(S3)、起動情報送信部23から起動情報が実行制御プログラム50に送信される(S4)。ゲームプログラム40の代金を未払いのユーザが認証用コンピュータ20にアクセスした場合は、課金処理部22を介して課金処理が行われた後、起動情報が実行制御プログラム50に向けて送信される。
【0056】
さて、ユーザコンピュータ30の構成に目を転じると、ユーザコンピュータ30は、例えば、パーソナルコンピュータ、ワークステーション、携帯情報端末、携帯電話等のコンピュータとして構成されている。ユーザコンピュータ30は、演算処理装置(CPU)、主記憶、補助記憶、外部入出力回路等のコンピュータ資源を必要に応じて備えており、これらの各資源は適宜ゲームプログラム40及び実行制御プログラム50によって使用される。
【0057】
配信用コンピュータ10からユーザコンピュータ30に送信された新版のゲームプログラム40及び実行制御プログラム50は、後述のように、付属するインストーラによってユーザコンピュータ30にインストールされる。そして、実行制御プログラム50が認証用コンピュータ20との間でユーザ認証を行い、起動情報を入手すると、ゲームプログラム40が起動される(S5)。なお、新版のゲームプログラム40をインストールするより前に、ユーザコンピュータ30に既にインストールされていた旧版のゲームプログラムは、新版のプログラムに置き換えられるため、以後使用することができなくなる。
【0058】
ユーザは、ユーザコンピュータ30を介して新版のゲームプログラム40を利用することができる。そして、ユーザがゲームを終えて、ゲームプログラム40を終了させると、実行制御プログラム50は、ゲームプログラム40を削除する等して無力化する(S6)。ユーザがゲームプログラム40を再び利用する場合は、認証用コンピュータ20に再度アクセスしてユーザ認証を行い、起動情報を取得する。
【0059】
ここで、ユーザコンピュータ30の記憶装置内には、新版のゲームプログラム40がデコード前の暗号化ファイルの状態で保存されているため、ゲームプログラム40を再使用する場合は、この暗号化ファイルをデコードするための情報(デコードキー)と起動させるための情報とを認証用コンピュータ20から取得するだけでよい。即ち、本実施例では、ユーザコンピュータ30のローカルディスクに新版ゲームプログラム40を暗号化ファイルの状態で保存しておき、ゲームを行うたびに、認証用コンピュータ20との間でオンライン認証を行って、暗号化されたゲームプログラム40をデコードして起動させる。そして、ゲーム終了後には、デコードされたゲームプログラム40を削除して無力化させる。
【0060】
次に、図2は、認証用コンピュータ20が利用するユーザ情報データベース24及びゲーム情報データベース25の構造例を示す説明図である。なお、図2に示す各データベース24,25の内容は一例であって、図示する項目の全てを備える必要はない。
【0061】
図2(a)に示すユーザ情報データベース24は、例えば、ユーザIDと、パスワードと、複数のMACアドレス1〜nと、購入済のゲームプログラムを特定するゲームID1〜nと、その他の情報とをそれぞれ対応付けることにより構成されている。ここで、複数のMACアドレス1〜nを登録可能としたのは、1人のユーザがそれぞれ異なる複数のユーザコンピュータ30を用いて、ゲームプログラム40を使用する場合も考慮したためである。従って、ユーザは、例えば、職場のコンピュータ、自宅のコンピュータ等の異なる情報処理端末を介して、ゲームプログラム40を利用できるようになっている。その他の情報としては、例えば、ユーザの氏名、年齢、住所、ゲームのプレイ回数、獲得したポイント数(例えば、ゲーム購入代金やプレイ回数等に応じてポイントを与えるような場合)等を挙げることができる。
【0062】
図2(b)に示すゲーム情報データベース25は、例えば、ゲームIDと、ゲーム名と、ゲーム情報(ゲームプログラムのレジストリパスを示す情報)と、暗号化されたゲームプログラム40を復号するためのデコードキーと、デコードされたゲームプログラム40を起動させるための起動引数と、その他の情報とをそれぞれ対応付けることにより構成されている。その他の情報としては、例えば、ゲームの種類(ロールプレイイングゲーム、格闘ゲーム、成人指定の有無等)、データサイズ、著作権管理情報等を挙げることができる。
【0063】
図2(c)に示すように、ゲーム情報、デコードキー及び起動引数は、暗号化されてHTML(Hyper Text Markup Language)データに埋め込まれ、ユーザコンピュータ30に送信されるようになっている。即ち、ユーザコンピュータ30側で生成された暗号化キー及びMACアドレスによって、起動情報(ゲーム情報、デコードキー、起動引数)は暗号化され、例えば、HTMLのヘッダ部に埋め込まれる。従って、認証用サーバ20は、ユーザコンピュータ30からのHTTP(Hyper Text Transport Protocol)リクエストに応じて、暗号化された起動情報を生成し、この暗号化された起動情報を含んだHTTPレスポンスをユーザコンピュータ30に返すようになっている。
【0064】
次に、図3は、ゲームプログラム40及び実行制御プログラム50の概略構成を示す説明図である。
【0065】
図3(a)に示すように、ゲームプログラム40は、プログラム本体41と、付随データ群42とを含んでいる。付随データ群42としては、例えば、動画像データ、静止画像データ、グラフィックスデータ、楽曲データ、音声データ、テキストデータ等を挙げることができる。
【0066】
新版のゲームプログラム40は、旧版のプログラムに比較して、プログラム41又は付随データ群42のいずれか又は双方が新しく作成されている。プログラム本体41及び付随データ群42の両方が旧版よりも新しい場合は、プログラム本体41及び付随データ群42の両方が新版に置き換えられる。付随データ群42のみが新しい場合及びプログラム本体41のみが新しい場合は、付随データ群42又はプログラム本体41のいずれかが新版に置き換えられる。
【0067】
図3(b)に示すように、実行制御プログラム50は、ユーザコンピュータ30上で、暗号用情報生成部51と、認証要求部52と、ゲーム選択部53と、暗号解読部54と、起動部55と、デコード部56と、実行監視部57という各機能を実現させる。一例として、実行制御プログラム50は、デバイスを特定しないデバイスドライバとして構成されている。このため、実行制御プログラム50は、例えば、ゲームプログラム等のアプリケーションプログラムとは異なって、タスク管理プログラム等から終了させることができないように構成することができる。
【0068】
暗号情報生成部51は、例えば、ユーザコンピュータ30の内蔵タイマから取得した時刻情報に基づいて暗号化キーを生成するほか、ユーザコンピュータ30のMACアドレス等を取得する。
【0069】
認証要求部52は、ユーザコンピュータ30に実装されているネットワークアクセスの機能を内部的に呼び出して、認証用コンピュータ20にアクセスし、暗号化キー、MACアドレス、ユーザID及びパスワードを認証用コンピュータ20に送信してユーザ認証を求める。
【0070】
ゲーム選択部53は、ユーザ認証が終了して認証用コンピュータ20からユーザコンピュータ30に送信された一覧メニューから、ユーザが希望するゲームを選択させる。この一覧メニューは、ユーザが利用可能な(起動可能な)ゲームプログラムを一覧形式で表示させるものであり、ユーザ情報データベース24の購入済ゲームIDに基づいて生成することができる。
【0071】
暗号化情報生成部51によって生成された暗号化キー及びMACアドレスにより、ユーザの選択したゲームプログラム40を起動させるための起動情報は、暗号化されてユーザコンピュータ30に送信される。暗号解読部54は、暗号化キー及びMACアドレスに基づいて、暗号化された起動情報を解読する。
【0072】
デコード部56は、解読されたデコードキーによって、暗号化されたゲームプログラム40をデコードさせる。なお、暗号化ファイルはそのまま保存される。起動部55は、解読されたゲーム情報及び起動引数に基づいて、起動ステートメントを生成し、デコードされたゲームプログラム40を起動させる。起動ステートメントは、ゲームプログラムのレジストリパスと起動引数から構成される。
【0073】
ゲームプログラム40が起動されると、実行監視部57は、ゲームプログラム40の実行状態を監視し、ゲームプログラム40が終了すると、デコードされたプログラム本体41を削除する。なお、デコードした付随データ群も一緒に削除してもよい。また、削除する場合は、プログラム又はデータの全部を削除してもよいし、一部を削除してもよい。
【0074】
次に、図4は、本システムによってゲームプログラムを最新版に更新する様子を模式的に示す説明図である。
【0075】
まず、図4(a)に示すように、ユーザコンピュータ30には、旧版のゲームプログラムが既にインストールされている。なお、図中では、バージョンアップ前の旧版のゲームプログラムを「初期プログラム」と、バージョンアップする新版のゲームプログラムを「更新版プログラム」とそれぞれ表示する。
【0076】
ユーザは、例えば、CD−ROM、DVD−ROM、メモリ等の記録媒体に固定された旧版のゲームプログラム40Aをユーザコンピュータ30にインストールして利用する(S11)。あるいは、インターネット等の通信ネットワークを介して旧版のゲームプログラム40Aを取得することもできる。この旧版のゲームプログラム40Aは、認証用コンピュータ20とのオンライン認証を受けることなく使用可能である。但し、本更新システムによっていったん更新された後は、更新版プログラムが旧式になった場合でも、オンライン認証を受けなければ利用することはできない。
【0077】
旧版のゲームプログラム40Aを利用するユーザには、新版ゲームプログラム40へアップデート可能である旨が通知される。この通知は、種々の方法で行うことができる。
第1の方法は、例えば、旧版のゲームプログラム40Aが、積極的又は消極的に、ユーザに新版のゲームプログラム40へ更新可能であることを通知し、併せて、配信用コンピュータ10のURL(Unifom Resource Locator)を表示する方法である。積極的な通知としては、例えば、ゲーム開始時や終了時等に更新可能である旨及び配信用コンピュータ10のURLを画面に表示させることが考えられる。消極的な通知としては、例えば、旧版のゲームプログラム40Aのヘルプメニューの中に、更新可能である旨及び配信用コンピュータ10のURLを表示させることが考えられる。いずれの場合も、URLをクリックするだけで、ウェブブラウザ31を起動させ、自動的にユーザコンピュータ30を配信用コンピュータ10にアクセスさせるように構成すると、ユーザの使い勝手が良い。
【0078】
第2の方法は、電子的な媒体を介して積極的又は消極的に、新版のゲームプログラム40へ更新可能である旨及び配信用コンピュータ10のURLを、ユーザに通知する方法である。積極的な通知としては、例えば、ユーザ宛の電子メールを挙げることができる。消極的な通知としては、例えば、ウェブ上のサイト(例えば、配信用コンピュータ10等)で、新版のゲームプログラム40を広告宣伝することが考えられる。
【0079】
第3の方法としては、その他、ゲーム雑誌やコンピュータ雑誌等の紙媒体上での広告宣伝、ネットワーク上に形成されたゲームプログラム同好会のようなコミュニティへの広告宣伝等を用いることができる。
【0080】
以上のようにして、ユーザに対し、新版ゲームプログラム40の存在を通知させることができる。図4(b)に示すように、更新を希望するユーザは、ウェブブラウザ31を介して配信用コンピュータ10にアクセスし、新版ゲームプログラム40への更新を要求する(S12)。
【0081】
図4(c)に示すように、配信用コンピュータ10は、ユーザの希望する新版のゲームプログラム40(付随データ群も含まれる)を、通信ネットワークを介して、ユーザコンピュータ30に向けて送信する(S13)。また、新版のゲームプログラム40と一緒に実行制御プログラム50もセットにしてユーザコンピュータ30に送信される(S13)。新版のゲームプログラム40及び実行制御プログラム50は、ユーザコンピュータ30の記憶装置に保存される。
【0082】
新版のゲームプログラム40及び実行制御プログラム50には、専用のインストーラが付属している。インストーラにより、新版のゲームプログラム40及び実行制御プログラム50がユーザコンピュータ30にインストールされる。実行制御プログラムが起動すると、図4(d)に示すように、実行制御プログラム50は、ネットワークアクセスの機能を呼び出して、認証用コンピュータ20にアクセスし、認証用コンピュータ20との間で、ユーザ認証及び購入処理(課金処理)を行う(S14)。ユーザ認証や課金処理を終えた後で、認証用コンピュータ20は、ユーザコンピュータ30の実行制御プログラム50に向けて、暗号化された起動情報を送信する(S15)。
【0083】
実行制御プログラム50は、暗号化された起動情報を解読して、デコードキーや起動引数等を取り出す。そして、実行制御プログラム50は、ゲームプログラム40をデコードして起動させる。これにより、ユーザは、新版のゲームプログラム40を利用することができる。ゲームプログラム40の実行状態は、実行制御プログラム50により監視される。
【0084】
図4(e)に示すように、ユーザがゲームプレイを終了し、ゲームプログラム40が終了すると、実行制御プログラム50は、新版のゲームプログラム40を削除することにより無力化させる(S16)。
【0085】
一例として、デコードされて実行可能な状態(起動ステートメントの入力により起動可能な状態)に置かれている新版のゲームプログラム40のみを削除し、配信用コンピュータ10から取得したデコード前の暗号化ファイルは、ユーザコンピュータ30の記憶装置内に保存しておくことができる。
【0086】
これにより、ユーザがゲームプログラム40の再プレイを希望する場合は、認証用コンピュータ20にアクセスしてオンラインによるユーザ認証を受け、認証用コンピュータ20から起動情報を改めて取得するだけで足りる(S17)。暗号化されたゲームプログラム40を配信用コンピュータ10から改めて取得する必要がないため、ダウンロードの手間がかからず、また通信ネットワークへの負担を軽減することができる。
【0087】
このように、ゲームプログラム40を再度プレイする場合は、ゲームプログラム40の起動情報のみを再取得する方法が便利であるが、本発明はこれに限らず、デコード前の暗号化されたプログラムを配信用コンピュータ10から再度取得するようにしてもよい。また、デコードされたプログラム本体41のみを削除し、付随データ群42をそのまま残してもよい。
【0088】
次に、図5及び図6に基づいて、本システムの処理の詳細を説明する。図に示すフローチャートは、処理の大まかな流れを示すものであり、実際のプログラムとは相違する。
図5は、ユーザコンピュータ30の記憶装置に格納された新版のゲームプログラム40及び実行制御プログラム50をインストール等する処理を示す。
【0089】
ゲームプログラム40及び実行制御プログラム50は暗号化ファイルの状態でユーザコンピュータ30に保存される。例えば、ユーザが、暗号化ファイルをマウスポインタで選択してダブルクリックする等のように、起動イベントを発生させると、インストーラが起動する(S21)。
【0090】
インストーラは、ユーザコンピュータ30に更新すべき旧版のゲームプログラム40Aがインストール済であるか否かを判定する(S22)。旧版のゲームプログラム40Aがインストールされていない場合は、例えば、「旧版のゲームがインストールされていません。処理を終了します。」等のような警告メッセージを画面に表示させて終了する(S23)。
【0091】
旧版のゲームプログラム40Aがユーザコンピュータ30にインストールされている場合は(S22:YES)、新版のゲームプログラム40及び実行制御プログラム50を初めてインストールするのか否かを判定する(S24)。新版ゲームプログラム40及び実行制御プログラム50が過去にインストールされている場合は、既にユーザ登録及び課金処理が完了しているものとみなすことができる。従って、S24は、結果的に、既にユーザ登録及び課金処理が完了しているか否かを判定することになる。
【0092】
初めてのインストールである場合は、ウェブブラウザ31の機能を呼び出して認証用コンピュータ20に接続し、ユーザに、ユーザ登録及び課金処理を行わせる(S25,S26)。
【0093】
次に、インストーラは、実行制御プログラム50のレジストリを判定し、実行制御プログラム50が未だインストールされていない場合は、実行制御プログラム50をインストールする(S27)。インストーラは、旧版のゲームプログラム40Aを新版のゲームプログラム40に置き換えて更新すべく、旧版のプログラム本体41及び付随データ群42を新版のプログラム本体41及び付随データ群42に書き換える(S28,S29)。そして、インストーラは、実行制御プログラム50を起動させて処理を終了する(S30)。
【0094】
図6は、実行制御プログラム50による実行制御処理及び認証用コンピュータ20の処理等を示すフローチャートである。
【0095】
起動された実行制御プログラム50は、ユーザコンピュータ30に固有のマシン情報、具体的には、MACアドレスを取得する(S41)。また、ユーザコンピュータ30の内蔵タイマから現在時刻の情報を取得し、この時刻情報に基づいて暗号化キーを生成する(S42)。
【0096】
次に、実行制御プログラム50は、ウェブブラウザ31の機能を呼び出し(S43)、通信ネットワークを介して認証用コンピュータ10に接続し、認証用コンピュータ20にログイン認証を要求する(S44)。実行制御プログラム50は、ユーザID、パスワード、MACアドレス及び暗号化キーを認証用コンピュータ20に送信する(S44)。認証用コンピュータ20は、ユーザ情報データベース24を参照し、正当なユーザであるか否かを判断する(S61)。
【0097】
正当なユーザであると認められた場合、認証用コンピュータ20は、ユーザが利用可能なゲームプログラムの一覧データを作成し、ユーザコンピュータ30に送信する(S62)。ユーザが利用することができるゲームプログラムとしては、典型的には、そのユーザが購入しているゲームプログラムを挙げることができるが、これに限らず、例えば、ソフトウェア会社が無償で提供しているゲームプログラム等を含めることもできる。
【0098】
実行制御プログラム50は、利用可能なゲームプログラムの一覧データを認証用コンピュータ20から受信すると、ユーザコンピュータ30のモニタディスプレイにゲームの一覧を表示させる(S45)。この一覧メニューに基づいて、ユーザは、プレイを希望するゲームを選択する(S46)。
【0099】
認証用コンピュータ20は、ゲーム情報データベース25を参照して、ユーザが選択したゲームプログラムを起動させるために必要な起動情報を生成し、この起動情報を、S61で取得した暗号化キー及びMACアドレス等によって暗号化する(S63)。認証用コンピュータ20は、暗号化された起動情報をユーザコンピュータ30の実行制御プログラム50に送信する(S64)。
【0100】
実行制御プログラム50は、暗号化された起動情報を認証用コンピュータ20から受信すると(S47)、この暗号化された起動情報を暗号化キー及びMACアドレスによって解読する(S48)。
【0101】
次に、実行制御プログラム50は、新版のゲームプログラム40のレジストリ情報を取得し(S49)、レジストリパスと起動引数とによって起動ステートメントを生成する(S50)。
【0102】
また、実行制御プログラム50は、起動情報から取り出したデコードキーによって、暗号化された新版のゲームプログラム40をデコードし、所定のドライブの所定のディレクトリに展開させる(S51)。これにより、ゲームプログラム40はデコードされて起動待ちの状態になる。
【0103】
そして、実行制御プログラム50は、S50で生成した起動ステートメントによって、デコードされた新版のゲームプログラム40を起動させる(S52,S70)。これにより、ユーザは、新版のゲームプログラム40で遊ぶことができる(S71)。
実行制御プログラム50は、ゲームプログラム40の実行状態を監視しており(S53)、ユーザがゲームを終えてゲームプログラム40を終了させた場合には(S72)、デコードされたプログラム本体41を削除等することにより、ゲームプログラム40を無力化し、処理を終了する(S54)。
【0104】
なお、ユーザが再びゲームプログラム40で遊びたい場合は、再度認証用コンピュータ20にアクセスしてオンラインによる認証を受け、起動情報を取得すればよい。
このように構成される本実施例によれば、ユーザコンピュータ30にプログラムを格納させるダウンロード式のソフトウェア配信の場合でも、使用権を購入していない違法な使用を阻止することができる。
【0105】
即ち、本実施例において、ゲームプログラム40を起動させるには、使用する度毎に、実行制御プログラム50を介してオンラインによる認証を行い、認証用コンピュータ20から通信ネットワークを介して起動情報を取得する必要があるため、仮に、ゲームプログラム40のみを単体で違法にコピーしても、違法にコピーされたゲームプログラム40を単体で起動させることはできない。
【0106】
また、実行制御プログラム50はデバイスドライバのようにOS側に近いプログラムとして構成されており、アプリケーションプログラムのように通常の方法では終了させることができない。従って、実行制御プログラム50とゲームプログラム40とを切り離して、ゲームプログラム40のみを違法にコピーしたり持ち出したりすることができないようになっている。
【0107】
本発明は、種々のビジネスに活用することができるであろう。例えば、過去に違法にコピーされて流通している旧版ゲームプログラムを、新版ゲームプログラムに更新させることにより、違法使用のユーザに正式に使用権を取得させて、正当なユーザへ変えることができる。違法なユーザを新版のゲームプログラムに乗り換えさせるためには、そのユーザの母国語に対応した付随データ群(ゲームシナリオや楽曲等)を用意したり、追加のシナリオ等を新しく用意したりして、ユーザの更新意欲を刺激すればよい。
【実施例2】
【0108】
次に、図7〜図12を参照し、他の実施例を説明する。本実施例では、ゲームプログラムを記録媒体に固定して流通させる場合を例に挙げて説明する。本実施例では、本発明の範囲を減縮しない限りにおいて、前記実施例で述べた説明を適宜援用することができる。後述のように本実施例では、上記実施例と同様に、実行制御プログラム(本実施例のゲームマネージャ)によってゲームプログラムの実行を制御している。これに加えて、本実施例では、認証用コンピュータ(本実施例のDRMコンピュータ)と実行制御プログラムとの間のオンライン認証を、定期的に実行可能としている。
【0109】
図7は、本実施例によるソフトウェア実行制御システムの全体概要を示す説明図である。本システムは、それぞれ後述するように、例えば、サプライヤコンピュータ100と、DRMコンピュータ200と、ユーザコンピュータ300とを含めて構成することができる。
【0110】
サプライヤコンピュータ100は、例えば、プログラムプロダクトを生産するソフトウェアベンダーにより使用される。サプライヤコンピュータ100は、ゲームプログラム400を加工してDRM化プログラム700に変換するDRM部110を備えている。ここで、DRMとは、Digital Rights Managementの略称であり、ゲームプログラム等のディジタル化されたコンテンツの権利を管理することを意味する。本明細書において、DRM化とは、ノンプロテクトのゲームプログラムに後述する独自のプロテクトを設定することにより、不正使用等に対する耐性を向上させることを意味する。
【0111】
DRM部110は、ゲームプログラム400に、ゲームマネージャ500及び監視プログラム600を加えることにより、ゲームプログラム400に独自のプロテクトを設定する。プロテクトされたゲームプログラム400は、DRM化プログラム700として、記録媒体RMに記録され市場に流通する。ゲームマネージャ500及び監視プログラム600については、さらに後述する。
【0112】
記録媒体RMとしては、例えば、CD−ROM、DVD−ROM、光ディスク、ハードディスク、フレキシブルディスク、半導体メモリ、磁気テープ等のような種々の媒体を適宜用いることができる。DRM化プログラム700を圧縮して記録媒体RMに記録してもよいし、DRM化プログラム700を圧縮することなく記録媒体RMに記録してもよい。また、記録媒体RMには、DRM化プログラム700をユーザコンピュータ300にインストールさせるためのインストーラを記憶させることもできる。
【0113】
DRMコンピュータ200は、「管理コンピュータ」の一例である。DRM化コンピュータ200は、例えば「認証管理サーバ」等と呼ぶこともできる。DRM化コンピュータ200は、各ソフトウェアベンダー毎にそれぞれ設置してもよいし、複数のソフトウェアベンダーに対して1つだけ設置してもよい。
【0114】
DRMコンピュータ200は、ユーザコンピュータ300上で稼働するゲームマネージャ500との間で通信を行うことにより、ユーザ認証、起動情報の送信、及び継続実行の管理を行うものである。DRMコンピュータ200は、認証部210と、起動情報送信部220と、継続実行管理部230とを備えている。
【0115】
また、DRMコンピュータ200は、ユーザ情報データベース240と、ゲーム情報データベース250と、監視状況データベース260とを利用することができる。なお、DRMコンピュータ200は、物理的に単一のコンピュータから構成されている必要はなく、複数のコンピュータの協働動作によって実現されてもよい。
【0116】
認証部210は、前記実施例の認証部21と同様に、例えば、ユーザID、パスワード(図中「PW」)ゲームマネージャ500から送信される認証用データに基づいて、ユーザ認証を行うものである。起動情報送信部220は、前記実施例の起動情報送信部23と同様に、例えば、ゲームマネージャ500がゲームプログラム400をデコードして起動可能状態に置くために必要な情報を、ゲームマネージャ500に送信するものである。
【0117】
継続実行管理部230は、ゲームマネージャ500との間で所定時間毎に通信を行うことにより、ゲームプログラム400の実行継続の可否を管理するものである。詳細はさらに後述するが、継続実行管理部230は、ゲームマネージャ500から送信されたセッションIDと予め保持されているセッションIDとを比較し、両者が一致する場合は、ゲームプログラム400の実行継続を許可する。逆に、継続実行管理部230は、両セッションIDが一致しない場合、ゲームプログラム400の強制終了をゲームマネージャ500に対して指示する。
【0118】
ユーザコンピュータ300は、前記実施例のユーザコンピュータ3と同様に、例えば、パーソナルコンピュータや携帯情報端末、携帯電話等として構成可能なものである。ユーザコンピュータ300は、CPU、メモリ、補助記憶装置、OS、各種デバイスドライバ等のように、ハードウェア資源及びソフトウェア資源を必要に応じて備えることができる。ゲームプログラム400と、ゲームマネージャ500と、監視プログラム600とは、ユーザコンピュータ300の有するハードウェア資源及びソフトウェア資源を適宜利用することができる。
【0119】
記録媒体RMの記憶内容をユーザコンピュータ300に読み込ませ、所定のインストール処理を行うことにより、ユーザコンピュータ300上でゲームプログラム400,ゲームマネージャ500及び監視プログラム600がそれぞれ実行される。正当な権限を有するユーザにとって、ゲームマネージャ500はゲームプログラム400を起動させるためのランチャープログラムとして作用する。しかし、ゲームマネージャ500は、単なるランチャープログラムではなく、ゲームプログラム400の作動を制御する。また、ゲームマネージャ500は、ゲームプログラム400及び監視プログラム600の動作状態をそれぞれ監視し、いずれか一方の監視対象が動作を停止した場合は、他方の監視対象及び自身の動作を停止させる。
【0120】
監視プログラム600は、ゲームプログラム400及びゲームマネージャ500の動作状態をそれぞれ監視し、いずれか一方の監視対象が動作を停止した場合は、他方の監視対象及び自身の動作を停止させる。正当なユーザは、監視プログラム600の存在を意識せずに、ゲームプログラム400を使用することができる。
【0121】
図8は、各データベース240〜260の一例を示す説明図である。図8(a)に示すように、ユーザ情報データベース240は、例えば、ユーザIDと、パスワードと、MACアドレスと、セッションIDと、その他の情報とを対応付けて管理することができる。後述のように、セッションIDは、継続実行を許可するか否かを判定するために用いられる情報である。即ち、最初に認証されたユーザコンピュータ300とは別のユーザコンピュータを使用してゲームプログラム400が不正に実行されるのを防止するために、ゲームマネージャ500とDRMコンピュータ200とは定期的に通信を行う。この際に、ゲームマネージャ500から受信したセッションIDと、ユーザ情報データベース240に登録されているセッションIDとの比較が行われ、セッションIDが一致する場合にのみゲームプログラム400の実行継続が許可されるようになっている。なお、図2(a)に示すユーザ情報データベース24と同様に、1つのユーザIDに複数のMACアドレスを対応付けることもできる。
【0122】
図8(b)に示すように、ゲーム情報データベース250は、例えば、ゲームIDと、ゲーム名と、ゲーム情報と、デコードキー(アクティベイトキー)と、起動引数と、報告モードとを対応付けて管理することができる。ここで、報告モードとは、ゲームマネージャ500からDRMコンピュータ200への定期的な報告の頻度に関する方針を設定する情報である。報告モードは、例えば、ゲームプログラム400の提供者(ソフトウェアベンダー)が設定することができる。
【0123】
ここで、報告モードとしては、例えば、ゲームプログラム400を最初に起動した時だけDRMコンピュータ200に報告するモードと、ゲームプログラム400を起動させる度にDRMコンピュータ200に報告するモードと、監視効率を優先して可能な限り短周期でDRMコンピュータ200に報告するモードと、DRMコンピュータ200の負荷低減を考慮して少ない頻度でDRMコンピュータ200に報告するモードと、を挙げることができる。
【0124】
図8(c)に示すように、監視状況データベース260は、例えば、ゲームプログラム400を実行している各ユーザのユーザIDと、各ユーザコンピュータ300からの報告周期と、次回の報告時期と、各ユーザが実行しているゲームプログラム400のゲームIDと、ゲームスタート時刻とを対応付けて管理することができる。後述のように、次回の報告時期は、DRMコンピュータ200の負荷状態や報告モード等に基づいて動的に制御される。
【0125】
次に、図9〜図12に基づいて、本システムの動作を説明する。まず、図9は、本システムの起動時に行われる動作の概要を示すフローチャートである。
ゲームプログラム400の利用を希望するユーザは、例えば、所望のゲームプログラム400を象徴するゲームアイコンを選択し、起動を指示する。このユーザによる操作が検出されると、まず最初に、ゲームマネージャ500が起動する(S101)。
【0126】
ゲームマネージャ500は、ユーザコンピュータ300に固有のマシン情報の一例であるMACアドレスを取得し(S102)、このMACアドレスを通信ネットワークCNを介して、DRMコンピュータ200に送信する(S103)。
【0127】
DRMコンピュータ200は、ゲームマネージャ500から受信したMACアドレスを、ユーザ情報データベース240に登録する(S121,S122)。この時点では、MACアドレスのみが判明しているだけであり、ユーザID等との対応付けはされない。なお、MACアドレスをユーザ情報データベース240に登録せずに、メモリに保持しておき、ユーザ認証が成功した場合に、ユーザIDやセッションID等と共にMACアドレスをユーザ情報データベース240に登録してもよい。
【0128】
DRMコンピュータ200は、セッションIDを発行し、また、報告周期を設定する。最初に設定される報告周期には、予め設定された初期値を用いることができる。そして、DRMコンピュータ200は、セッションIDと初回の報告周期とをゲームマネージャ500に通知する(S123)。
【0129】
ゲームマネージャ500は、セッションID及び報告周期を受信すると(S104)、これらの情報をユーザコンピュータ300のメモリに格納して保持する。次に、ゲームマネージャ500は、ユーザからユーザID及びパスワードが入力されたか否かを判定する(S105)。例えば、ユーザがゲームアイコンを選択操作したときに、ユーザID及びパスワードの入力を求める画面を表示させることにより、ユーザにユーザID及びパスワードの入力を促すことができる。
【0130】
ゲームマネージャ500は、ユーザID及びパスワードの入力を確認すると(S105:YES)、入力されたユーザID及びパスワードと、ユーザが実行を希望するゲームプログラム400のゲームIDとをDRMコンピュータ200に送信する(S106)。
【0131】
DRMコンピュータ200は、ゲームマネージャ500からユーザID、パスワード及びゲームIDを受信すると(S124)、ユーザ情報データベース240を参照し、ユーザ認証を行う(S125)。予め登録されているユーザID及びパスワードと、ゲームマネージャ500から受信したユーザID及びパスワードとが一致する場合(S125:YES)、ユーザ認証は成功する。DRMコンピュータ200は、ユーザID、パスワード、MACアドレス等を対応付けてユーザ情報データベース240に登録する(S127)。逆に、ユーザIDまたはパスワードのいずれか一方が一致しない場合(S125:NO)、ユーザ認証は失敗し、エラー処理が行われる(S126)。エラー処理としては、例えば、「IDまたはパスワードが違います」等のメッセージをユーザコンピュータ300の画面に表示させることが考えられる。また、例えば、所定回数以上ユーザ認証が失敗した場合は、ゲームプログラム400の起動をロックさせることも可能である。なお、ユーザ認証の情報としては、ユーザID及びパスワードに限らず、例えば、声紋、指紋、虹彩等の生体情報を採用してもよい。
【0132】
DRMコンピュータ200は、ユーザ認証の成功によって、ユーザが希望するゲームプログラム400の実行許可を決定する(S128)。DRMコンピュータ200は、実行を許可したゲームプログラム400をゲームマネージャ500が起動できるようにするための情報を生成して暗号化する(S129)。このゲーム起動用の情報としては、例えば、ファイル名等の実行情報やアクティベイトキー等を挙げることができる。DRMコンピュータ200は、これら実行情報及びアクティベイトキーを、例えば、セッションIDやユーザ情報(MACアドレス等)を用いて暗号化し、この暗号化された情報をゲームマネージャ500に送信する(S130)。
【0133】
ゲームマネージャ500は、DRMコンピュータ200から暗号化情報を受信すると(S107)、暗号化情報を解凍して(S108)、アクティベイトキー及び実行情報を取得する(S109)。DRMコンピュータ200が使用する暗号アルゴリズムは、ゲームマネージャ500にとって既知であり、解凍に必要な情報はユーザコンピュータ300側にも存在するので、暗号化情報を解凍することができる。
【0134】
ゲームマネージャ500は、入手したアクティベイトキーによってゲームプログラム400をデコードし、このデコードしたゲームプログラム400をユーザコンピュータ300のメモリに格納させる(S110)。
【0135】
即ち、記録媒体RMを用いてゲームプログラム400をユーザコンピュータ300にインストールした場合、ゲームプログラムは、例えば、ユーザコンピュータ300の補助記憶装置にエンコードされた状態で記憶される。このエンコードされた状態では、ゲームプログラム400を起動させることはできない。ゲームマネージャ500がDRMコンピュータ200からアクティベイトキーを取得してゲームプログラム400をデコードし、ユーザコンピュータ300のメモリに置いた時点で、ゲームプログラム400は起動可能となる。ここで、注意すべき点は、デコードされたゲームプログラム400(実行体プログラム)は、ファイルとして保存されるのではなく、メモリ内にのみ存在する点である。ゲームプログラム400の終了時には、メモリ内のプログラムが消去されるため、再度ゲームをプレイをする場合は、ゲームマネージャ500を介して再びユーザ認証やアクティベイトキーの取得等を行う必要がある。
【0136】
そして、ゲームマネージャ500は、実行情報に基づいて、ユーザコンピュータ300のメモリに置かれたゲームプログラム400を起動させる(S111)。これにより、ユーザは、ゲームプログラム400を実行させて遊ぶことができるようになる。また、ゲームマネージャ500は、ゲームプログラム400の起動と同時に(物理的に厳密な意味で同時でなくてもよい)、監視プログラム600を起動させる(S112)。監視プログラム600の動作については、さらに後述する。
【0137】
次に、ゲームプログラム400の実行継続を制御するための監視処理について、図10に基づき説明する。
【0138】
ゲームマネージャ500は、起動時にDRMコンピュータ200から設定された報告周期を参照する(S141)。ゲームマネージャ500は、ユーザコンピュータ300が有するタイマ機能等を利用することにより、DRMコンピュータ200から予め設定された報告時期が到来したか否かを判定する(S142)。
【0139】
報告時期が到来した場合(S142:YES)、ゲームマネージャ500は、DRMコンピュータ200から設定されたセッションIDをユーザコンピュータ300のメモリから読出し(S143)、この読み出したセッションIDをDRMコンピュータ200に送信する(S144)。
【0140】
DRMコンピュータ200は、ゲームマネージャ500からセッションIDを受信すると(S161)、ユーザ情報データベース240を参照する。DRMコンピュータ200は、ユーザ情報データベース240に登録されている発行済セッションIDと、ゲームマネージャ500から受信したセッションIDとを比較し、両者が一致するか否かを判定する(S163)。なお、ゲームマネージャ500からDRMコンピュータ200に対して、セッションIDのみを送信してもよいし、あるいは、セッションIDに加えて、例えば、ユーザID等のユーザ情報の全部または一部を含めることもできる。さらには、ユーザコンピュータ300の環境情報(CPU利用率やメモリ消費量等)を含めることも可能である。しかし、セッションIDに付加する情報が増大するほど、ユーザコンピュータ300の負荷は増し、また、ネットワークトラフィックも増大する。
【0141】
ゲームマネージャ500から受信したセッションIDが予め登録されているセッションIDと一致しない場合(S163:NO)、DRMコンピュータ200(継続実行管理部230)は、ゲームマネージャ500に対して、ゲームプログラム400の実行継続の禁止を通知する(S164)。両セッションIDが不一致の場合は、別のユーザコンピュータでゲームプログラム400を実行等している場合、即ち、例えば、1つのユーザIDで同一のゲームプログラム400を複数起動しているような場合である。そこで、両セッションIDが不一致の場合は、ゲームプログラム400の強制終了をゲームマネージャ500に指令する。
【0142】
ゲームマネージャ500から受信したセッションIDと予め登録されているセッションIDとが一致する場合(S163:YES)、DRMコンピュータ200は、新たな報告周期、即ち、次回の報告時期を算出する(S165)。この新たな報告周期の算出については、さらに後述するが、DRMコンピュータ200の負荷状態等を考慮して決定される。
【0143】
両セッションIDが一致する場合、DRMコンピュータ200は、新たに算出された報告周期と実行継続の許可とをゲームマネージャ500に通知する(S166)。
【0144】
ゲームマネージャ500は、DRMコンピュータ200から実行継続の可否について応答を受信する(S145)。ゲームマネージャ500は、ゲームプログラム400の実行継続が許可された場合(S146:YES)、新たに設定された報告周期をユーザコンピュータ300のメモリに保存して、S141に戻り、報告時期の到来を待つ。
【0145】
逆に、DRMコンピュータ200から実行継続が禁止された場合(S146:NO)、ゲームマネージャ500は、実行中のゲームプログラム400を強制的に終了させる(S147)。そして、ゲームマネージャ500は、監視プログラム600を終了させた後(S148)、自身も終了させる(S149)。
【0146】
上述のように、ゲームマネージャ500は、DRMコンピュータ200との間で簡易な認証を定期的に行う。これにより、例えば、同一のユーザID及びパスワードを用いてゲームプログラム400を複数起動させるような不正な利用を防止することができる。
【0147】
図11は、報告周期の設定処理を示すフローチャートである。図10中のS165の内容を具体化した一例である。DRMコンピュータ300(詳しくは、継続実行管理部230)は、ゲームマネージャ500からセッションIDを受信した時刻を参照する(S181)。次に、ゲームマネージャ500は、このセッションIDの受信に関連付けられていた報告周期を参照する(S182)。
【0148】
ゲームマネージャ500は、セッションIDの受信時刻と予め設定されていた報告周期とのずれを算出する。例えば、セッションIDの受信予定時刻よりも実際の受信時刻が遅れている場合は、通信ネットワークCNの混雑によるパケット到着の遅れや、DRMコンピュータ300の負荷増大による応答性能の低下等を原因として挙げることができる。
【0149】
DRMコンピュータ200は、自身の現在の負荷状態を検出する(S184)。この負荷状態としては、例えば、現在プレイ中のユーザ数、即ち、オンラインによる定期的な認証処理を行うべきゲームマネージャ数を挙げることができる。これに加えて、例えば、例えば、CPU利用率、メモリ消費量、データ入出力処理速度(I/O速度)等を検出してもよい。
【0150】
DRMコンピュータ200は、現在の負荷状態に基づいて、将来の負荷状態を予測する(S185)。即ち、DRMコンピュータ200は、ゲームマネージャ500の報告周期を現在値に維持した場合に、次の報告時期におけるDRMコンピュータ200の負荷状態を予測する。具体的には例えば、もしも仮に、現在の報告周期が「1時間」に設定されている場合、現在時刻から1時間後にオンライン認証を行うユーザ数(ゲームマネージャ数)は、監視状況データベース260により把握できる。
【0151】
次に、DRMコンピュータ200は、実行中のゲームプログラム400に予め設定されている報告モードを参照する(S186)。ゲームプログラム400に関連付けられる報告モードは、記録媒体RMの流通後でも変更可能である。例えば、サプライヤコンピュータ100からDRMコンピュータ200に対して、ゲームID及び新たな報告モードを通知し、ゲーム情報データベース250の更新を要求すればよい。
【0152】
最後に、DRMコンピュータ200は、例えば、報告モードと、セッションIDの受信予定時刻と実際の受信時刻との時間的なずれ量と、将来の予測負荷状態とに基づいて、監視効率が最大となるように、新たな報告周期を算出する(S187)。
【0153】
例えば、新作の人気ゲームプログラムが発売された当初は、そのゲームプログラムのユーザ数が急激に増大する。従って、オンラインによる周期的な簡易認証を行うDRMコンピュータ200の負荷は増大する。報告周期を短く設定するほど、不正使用に対するセキュリティ性が向上するが、その反面、DRMコンピュータ200の負荷も増大する。セキュリティ性を重視するあまりに報告周期を短く設定すると、DRMコンピュータ200の応答性が低下したり、機能停止を招く可能性がある。そこで、新作人気ゲームの発売当初等のように、一時的に負荷が増大するような場合は、報告周期が長くなるように制御する。
【0154】
このように、DRMコンピュータ200は、例えば、監視優先モードの場合、機能停止を招かない範囲で最大限のセキュリティ性が得られるように、報告周期(監視タイミング)を設定することができる。一方、負荷軽減モードの場合、DRMコンピュータ200は、最低限のセキュリティ性を維持できる程度に報告周期を設定することができる。
【0155】
以上は一例であって、負荷状態の予測や報告周期の設定等には、種々のアルゴリズムを取り入れることができる。
【0156】
次に、図12は、ゲームマネージャ500及び監視プログラム600による相互監視の処理を示すフローチャートである。本実施例では、ゲームマネージャ500と監視プログラム600とは、それぞれ共通の監視対象としてゲームプログラム400の動作状態を監視するほか、お互いも監視対象として定期的に監視している。DRMコンピュータ200とゲームマネージャ500との間の定期的なオンライン認証を外部からの監視とすれば、ゲームマネージャ500及び監視プログラム600による相互監視を内部での監視と位置づけることができる。
【0157】
ゲームマネージャ500の監視処理について先に説明すると、ゲームマネージャ500は、予め設定された監視時期が到来したか否かを判定する(S201)。監視時期は比較的短周期に設定するのが好ましい。監視時期が到来すると(S201:YES)、ゲームマネージャ500は、監視プログラム600の動作状態を確認し(S203)、監視プログラム600が正常に動作しているか否かを判定する(S203)。
【0158】
監視プログラム600が正常に動作している場合(S203:YES)、次に、ゲームマネージャ500は、ゲームプログラム400の動作状態を確認し(S204)、ゲームプログラム400が正常に動作しているか否かを判定する(S205)。ゲームプログラム400も正常に動作している場合(S205:YES)、ゲームマネージャ500は、次の監視時期が到来するまで待機する(S201)。
【0159】
一方、監視プログラム600が動作を停止していた場合(S203:NO)、あるいは、ゲームプログラム400が動作を停止していた場合(S205:NO)、ゲームマネージャ500は、強制停止処理(S206〜S208)に移行する。
【0160】
即ち、ゲームマネージャ500は、ゲームプログラム400及び監視プログラム600の両方の動作を停止させた後(S206,S207)、ゲームマネージャ自身も停止させる(S208)。ゲームプログラム400の動作が停止された場合は、デコードされたゲームプログラム400は、ユーザコンピュータ300のメモリから直ちに消去ないし破壊される。
【0161】
なお、既に停止しているプログラムについては、改めて停止を命令する必要がない。例えば、ゲームプログラム400の動作停止が確認されて強制停止処理に移行した場合は、ゲームプログラム400の動作停止を改めて指示する必要はない。同様に、監視プログラム600の動作停止が確認されて強制停止処理に移行した場合は、監視プログラム600の動作停止を改めて指示する必要はない。しかし、念のために、ゲームプログラム400及び監視プログラム600の両方に動作停止を命じてもよい。
【0162】
監視プログラム600の処理も同様である。監視プログラム600は、監視時期が到来すると(S221:YES)、ゲームマネージ500及びゲームプログラム400の動作状態をそれぞれ監視し(S222〜S225)、いずれか一方が動作を停止していた場合は(S223:NO、またはS225:NO)、強制停止処理に移行し、全てのプログラムを停止させる(S226〜S228)。
【0163】
このように、ゲームマネージャ500及び監視プログラム600という複数の動作監視用プログラムが、ゲームプログラム400の動作状態を監視すると共に、それぞれお互いをも監視するため、ゲームプログラム400の動作停止をより確実に検出することができる。また、一方の動作監視用プログラムが意図的に停止された場合でも、他方の監視用プログラムが全体のシャットダウンを行うため、ユーザコンピュータ300のメモリに展開されたゲームプログラム400が不正にコピーされるのを未然に防止することができる。
【0164】
以上詳述した通り、本実施例によれば、ゲームプログラム400の作動を制御するゲームマネージャ500とライセンス認証を行うDRMコンピュータ200との間で、定期的なオンライン認証を行うため、不正使用に対する耐久性を高めることができる。
【0165】
また、この定期的なオンライン認証は、セッションIDの比較により行われるため、比較的簡易な処理で済む。従って、コンピュータ負荷を増大させずに、簡易な認証を比較的短周期で行うことができ、長時間にわたってセキュリティ性を維持することも可能となる。
【0166】
さらに、オンラインによる簡易認証を行うタイミング(報告周期)を、DRMコンピュータ200の負荷状態等に基づいて動的に制御するため、ネットワークトラフィックやコンピュータ負荷等を考慮して、より高いセキュリティ性を実現することができる。
【0167】
また、ゲームマネージャ500及び監視プログラム600という、2種類のそれぞれ独立した動作監視用プログラムを用意し、ゲームプログラム400の動作状態のみならず、それぞれお互いの監視をも行い、ゲームプログラム400,ゲームマネージャ500,監視プログラム600のいずれか1つでも動作を停止した場合は、残りの2つのプログラムの動作も停止させ、ゲームプログラム400を消去等して無力化する構成のため、メモリに展開されたゲームプログラム400を不正に読み出してコピー等する行為を阻止して、信頼性をより高めることができる。
【実施例3】
【0168】
次に、図13は、本発明のさらに別の実施例を示す。本実施例は、第1実施例において、複数の監視用プログラムによる相互監視と、認証用コンピュータとの間の定期的なオンライン認証とを実現させるものである。
【0169】
本実施例では、配信用コンピュータ10からユーザコンピュータ30に向けて、ゲームプログラム40と実行制御プログラム50Aと監視プログラム60とが配信される。
【0170】
実行制御プログラム50Aは、上述した実行制御プログラム50の構成及び作用に加えて、上述したゲームマネージャ500が実行する定期的な簡易オンライン認証機能と監視機能とを備えている。また、監視プログラム60は、上述した監視プログラム600と同様の監視機能を備えている。
【0171】
実行制御プログラム50Aは、最初のユーザ認証によりゲームプログラム40のデコード等を行う。また、実行制御プログラム50Aは、認証用コンピュータ20に対して定期的にセッションIDを送信することにより、ゲームプログラム40の実行中においてもユーザ認証を行う。実行制御プログラム50Aは、ユーザ認証が成功した場合はゲームプログラム40の継続的な実行を許可し、ユーザ認証が失敗した場合はゲームプログラム40を強制的に終了させる。
【0172】
また、実行制御プログラム50Aと監視プログラム60とは、共にゲームプログラム40の起動状態を監視していると共に、お互い同士もそれぞれ監視している。そして、ゲームプログラム40,実行制御プログラム50A,監視プログラム60のうちいずれか1つのプログラムが終了した場合は、実行制御プログラム50Aまたは監視プログラム60がこれを検出し、残りのプログラム及び自分自身を終了させる。
【0173】
なお、上述した本発明の各実施例は、本発明の説明のための例示であり、本発明の範囲を実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施できる。
【図面の簡単な説明】
【0174】
【図1】図1は、本発明の実施形態に係るソフトウェア実行制御システムの全体概要を示す説明図である。
【図2】図2は、データベース等の構造を示し、(a)はユーザ情報データベースを、(b)はゲーム情報データベースを、(c)はHTMLヘッダ内に暗号化された起動情報を埋め込んで送信する様子を、それぞれ示す。
【図3】図3は、プログラムの概略構造を示し、(a)はゲームプログラムを、(b)は実行制御プログラムの構造を、それぞれ示す。
【図4】図4は、ユーザコンピュータにインストールされた旧版のゲームプログラムを、新版のゲームプログラムに更新し、起動を制御する様子を示す説明図である。
【図5】図5は、ゲームプログラム及び実行制御プログラムをインストールするときの処理を示すフローチャートである。
【図6】図6は、実行制御プログラム及び認証用コンピュータとの間で行われるオンライン認証等を示すフローチャートである。
【図7】図7は、本発明の他の実施形態に係るソフトウェア実行制御システムの全体概要を示す説明図である。
【図8】図8は、データベース等の構造を示し、(a)はユーザ情報データベースを、(b)はゲーム情報データベースを、(c)は監視状況データベースを、それぞれ示す。
【図9】図9は、ソフトウェア実行制御システムの全体動作の概要を示すフローチャートである。
【図10】図10は、周期的に行われる継続確認通信の処理概要を示すフローチャートである。
【図11】図11は、次回の継続確認通信を行う時期を決定する処理の概要を示すフローチャートである。
【図12】図12は、ゲームマネージャ及び監視プログラムがそれぞれ相互に監視する処理の概要を示すフローチャートである。
【図13】図13は、本発明のさらに別の実施形態に係るソフトウェア実行制御システムの全体概要を示す説明図である。
【符号の説明】
【0175】
10:配信用コンピュータ、11:配信制御部、20:認証用コンピュータ、21:認証部、22:課金処理部、23:起動情報送信部、24:ユーザ情報データベース、25:ゲーム情報データベース、30:ユーザコンピュータ、40:ゲームプログラム、50:実行制御プログラム、100:サプライヤコンピュータ、200:DRMコンピュータ、210:認証部、220:起動情報送信部、230:継続実行管理部、300:ユーザコンピュータ、400:ゲームプログラム、500:ゲームマネージャ、600:監視プログラム、700:DRM化プログラム

【特許請求の範囲】
【請求項1】
ンコードされたソフトウェア及び該ソフトウェアの実行を制御するための実行制御プログラムをユーザコンピュータに通信ネットワークを介して配信する配信部と、
前記ユーザコンピュータにインストールされた前記実行制御プログラムからの要求によってユーザ認証を行い、正当なユーザであると確認した場合には、前記ソフトウェアをデコードして起動させるために必要な所定の情報を前記通信ネットワークを介して前記実行制御プログラムに送信する認証部と、
を備え、
記ソフトウェアは前記実行制御プログラムから渡される起動情報のみで起動可能に構成されており、
前記実行制御プログラムは、
(1)前記認証部から受信した前記所定の情報に基づいて前記エンコードされたソフトウェアをデコードし、
(2)前記所定の情報に基づいて起動情報を生成することにより、前記ソフトウェアを起動させ、
(3)前記ソフトウェアの実行が終了された場合には、前記ソフトウェアを無力化させるように構成されているソフトウェア実行制御システム。
【請求項2】
前記実行制御プログラムは、複数種類のソフトウェアに対応可能に構成されており、
前記認証部が前記実行制御プログラムに送信する前記所定の情報には、起動させるソフトウェアの格納先アドレス情報と起動引数とソフトウェアをデコードするためのデコードキー情報とが含まれている請求項1に記載のソフトウェア実行制御システム。
【請求項3】
前記実行制御プログラムは、前記ユーザコンピュータに固有のマシン情報と暗号化キー情報とを含む認証用情報を前記認証部に送信し、
前記認証部は、少なくとも前記マシン情報に基づいてユーザ認証を行い、正当なユーザであると確認した場合には、前記所定の情報を前記暗号化キー情報で暗号化して前記通信ネットワークを介して前記実行制御プログラムに送信するものであり、
かつ、前記認証部には、前記マシン情報を複数個登録可能である請求項1に記載のソフトウェア実行制御システム。
【請求項4】
前記認証部は、正当なユーザであると確認した場合には、該ユーザが起動可能なソフトウェアの一覧データを前記ユーザコンピュータに送信し、前記一覧データから選択されたソフトウェアに関する前記所定の情報を前記通信ネットワークを介して前記実行制御プログラムに送信するものである請求項1に記載のソフトウェア実行制御システム。
【請求項5】
前記実行制御プログラムは、
前記ユーザコンピュータに固有のマシン情報を取得する機能と、
暗号化キー情報を生成する機能と、
前記認証部にユーザ認証を要求し、少なくとも前記マシン情報及び前記暗号化キー情報を前記認証部に送信する機能と、
前記認証部から受信した起動可能なソフトウェアの一覧データからいずれか1つのソフトウェアをユーザに選択させ、選択されたソフトウェアを前記認証部に通知する機能と、
前記選択されたソフトウェアの前記ユーザコンピュータにおける格納先アドレス情報と起動引数とデコードキー情報とを少なくとも前記暗号化キー情報により暗号化してなる所定の情報を受信する機能と、
前記暗号化された所定の情報を少なくとも前記暗号化キー情報により解読する機能と、
前記解読されたデコードキー情報により前記ユーザコンピュータ内のソフトウェアをデコードさせる機能と、
前記解読された起動引数及び前記格納先アドレス情報に基づいて、前記起動情報を生成する機能と、
前記生成された起動情報によって前記デコードされたソフトウェアを起動させる機能と、
前記起動されたソフトウェアの実行状態を監視し、該ソフトウェアの実行が終了した場合は、前記ソフトウェアを無力化させる機能と、
を前記ユーザコンピュータ上に実現させるものである請求項1に記載のソフトウェア実行制御システム。
【請求項6】
前記実行制御プログラムは、前記ソフトウェアの実行が終了した場合は、前記ソフトウェアの全部又は一部を削除することにより無力化させるものである請求項1に記載のソフトウェア実行制御システム。
【請求項7】
記ソフトウェアは、プログラムと付随データ群とを含んでなり、
前記実行制御プログラムは、前記ソフトウェアの実行が終了した場合は、前記ソフトウェアのエンコードデータは保存しつつ、前記デコードされたソフトウェアのうち前記プログラムのみを無力化させるものである請求項1に記載のソフトウェア実行制御システム。
【請求項8】
前記実行制御プログラムは、前記ソフトウェアとは別に強制終了させることができないプログラムとして構成されている請求項1に記載のソフトウェア実行制御システム。
【請求項9】
前記配信部と前記認証部とは、それぞれ別体のコンピュータ上に実現されている請求項1に記載のソフトウェア実行制御システム。
【請求項10】
前記実行制御プログラムは、前記ソフトウェアの実行中に、前記認証部との間で定期的または不定期なユーザ認証を行うものであり、このユーザ認証が失敗した場合は前記ソフトウェアを強制的に終了させる請求項1に記載のソフトウェア実行制御システム。
【請求項11】
記ソフトウェアの実行中に行われる定期的または不定期なユーザ認証は、少なくとも予測される将来の認証用コンピュータの負荷状態を考慮して、可変に制御可能である請求項10に記載のソフトウェア実行制御システム。
【請求項12】
前記配信部は、前記ソフトウェア及び前記実行制御プログラムと共に監視プログラムを前記ユーザコンピュータに配信し、
前記監視プログラムは、前記ソフトウェア及び前記実行制御プログラムの動作状態をそれぞれ監視し、前記ソフトウェアまたは前記実行制御プログラムのいずれか一方が動作を停止した場合は、前記ソフトウェア及び前記実行制御プログラムをそれぞれ停止させ、自身も停止させるものであり、
前記実行制御プログラムは、前記ソフトウェア及び前記監視プログラムの動作状態をそれぞれ監視し、前記ソフトウェアまたは前記監視プログラムのいずれか一方が動作を停止した場合は、前記ソフトウェア及び前記監視プログラムをそれぞれ停止させ、自身も停止させるものである請求項1に記載のソフトウェア実行制御システム。
【請求項13】
ユーザコンピュータにインストールされたソフトウェアの実行を制御する実行制御プログラムであって、
外部の認証部と通信ネットワークを介して通信し、ユーザ認証を求める第1の機能と、
前記認証部から受信した所定の情報に基づいて、前記ソフトウェアを起動させるための起動情報を生成する第2の機能と、
前記認証部から受信した所定の情報に基づいて、前記ソフトウェアをデコードさせる第3の機能と
記生成された起動情報によって前記ソフトウェアを起動させる第の機能と、
記ソフトウェアの実行状態を監視し、前記ソフトウェアの実行が終了した場合は、前記ソフトウェアを無力化させる第の機能と、
を前記ユーザコンピュータ上に実現させるソフトウェアの実行制御プログラム。
【請求項14】
前記第の機能は、前記ソフトウェアの実行が終了した場合は、前記ソフトウェアの全部又は一部を削除することにより無力化させるものである請求項13に記載のソフトウェアの実行制御プログラム。
【請求項15】
記ソフトウェアは、プログラムと付随データ群とを含んでなり、
前記第の機能は、前記ソフトウェアの実行が終了した場合は、前記ソフトウェアのエンコードデータは保存しつつ、前記デコードされたソフトウェアのうち前記プログラムのみを無力化させるものである請求項13に記載のソフトウェアの実行制御プログラム。
【請求項16】
前記実行制御プログラムは、前記ソフトウェアとは別に強制終了させることができないプログラムとして構成されている請求項13に記載のソフトウェアの実行制御プログラム。
【請求項17】
ユーザコンピュータにインストールされたソフトウェアの実行を制御する実行制御プログラムであって
ーザコンピュータに固有のマシン情報を取得する機能と、
暗号化キー情報を生成する機能と、
外部の認証部にユーザ認証を要求し、少なくとも前記マシン情報及び前記暗号化キー情報を前記認証部に送信する機能と、
前記認証部から受信した起動可能なソフトウェアの一覧データからいずれか1つのソフトウェアをユーザに選択させ、選択されたソフトウェアを前記認証部に通知する機能と、
前記選択されたソフトウェアの前記ユーザコンピュータにおける格納先アドレス情報と起動引数とデコードキー情報とを前記暗号化キー情報により暗号化してなる所定の情報を受信する機能と、
前記暗号化された所定の情報を少なくとも前記暗号化キー情報により解読する機能と、
前記解読されたデコードキー情報により前記ユーザコンピュータ内のソフトウェアをデコードさせる機能と、
前記解読された起動引数及び前記格納先アドレス情報に基づいて、前記起動情報を生成する機能と、
前記生成された起動情報によって前記デコードされたソフトウェアを起動させる機能と、
前記起動されたソフトウェアの実行状態を監視し、該ソフトウェアの実行が終了した場合は、前記ソフトウェアを無力化させる機能と、
を前記ユーザコンピュータ上に実現させるソフトウェアの実行制御プログラム。
【請求項18】
フトウェアと共にユーザコンピュータにインストールされる実行制御プログラムからの要求によってユーザ認証を行う認証部と、
前記認証部により正当なユーザであると確認された場合は、前記ソフトウェアをデコードして起動させるために必要な所定の情報を前記実行制御プログラムに送信する情報送信部と、
を備え、
記ソフトウェアは前記実行制御プログラムから渡される起動情報のみで起動可能に構成されており、
前記実行制御プログラムは、
(1)前記認証部から受信した前記所定の情報に基づいて前記エンコードされたソフトウェアをデコードし、
(2)前記所定の情報に基づいて起動情報を生成することにより、前記ソフトウェアを起動させ、
(3)前記ソフトウェアの実行が終了された場合には、前記ソフトウェアを無力化させるように構成されているコンピュータ。
【請求項19】
アプリケーションソフトウェア及び監視プログラムと共にユーザコンピュータにインストールされる実行制御プログラムと通信を行うことにより、前記実行制御プログラムの動作を制御する管理用コンピュータであって、
前記実行制御プログラムからの要求に基づいてユーザ認証を行う認証部と、
前記認証部により正当なユーザであると確認された場合は、前記実行制御プログラムが前記アプリケーションソフトウェアを起動させるために必要な第1の情報を前記実行制御プログラムに送信する情報送信部と、
所定の時期に前記実行制御プログラムとの間で行われる継続確認通信に基づいて、前記アプリケーションソフトウェアの実行継続を許可するか否かを管理する継続実行管理部と、を備えた管理用コンピュータ。
【請求項20】
前記継続実行管理部は、前記継続確認通信によって前記実行制御プログラムから取得される第1の識別情報と前記ユーザ認証に予め関連付けられている第2の識別情報とを比較し、両方の識別情報が対応する場合は、前記実行制御プログラムに対して前記アプリケーションソフトウェアの実行継続を許可し、前記各識別情報が対応していない場合は、前記実行制御プログラムに対して前記アプリケーションソフトウェアの実行継続を禁止させる請求項19に記載の管理用コンピュータ。
【請求項21】
前記継続実行管理部は、前記第2の識別情報に対応する前記第1の識別情報を予め前記実行制御プログラムに設定させる請求項20に記載の管理用コンピュータ。
【請求項22】
前記継続実行管理部は、前記所定の時期を前記実行制御プログラムに予め設定し、この予め設定された所定の時期が到来した場合は、前記実行制御プログラムから前記継続実行管理部に対して前記継続確認通信を行わせる請求項19に記載の管理用コンピュータ。
【請求項23】
前記継続実行管理部は、前記所定の時期を可変に設定可能である請求項19に記載の管理用コンピュータ。
【請求項24】
前記継続実行管理部は、少なくとも予測される将来の負荷状態を考慮して、前記所定の時期を可変に設定可能である請求項23に記載の管理用コンピュータ。
【請求項25】
前記監視プログラムは、前記アプリケーションソフトウェア及び前記実行制御プログラムの動作状態をそれぞれ監視し、前記アプリケーションソフトウェアまたは前記実行制御プログラムのいずれか一方が動作を停止した場合は、前記アプリケーションソフトウェア及び前記実行制御プログラムをそれぞれ停止させ、自身も停止させるものであり、
前記実行制御プログラムは、前記アプリケーションソフトウェア及び前記監視プログラムの動作状態をそれぞれ監視し、前記アプリケーションソフトウェアまたは前記監視プログラムのいずれか一方が動作を停止した場合は、前記アプリケーションソフトウェア及び前記監視プログラムをそれぞれ停止させ、自身も停止させるものである請求項19に記載の管理用コンピュータ。
【請求項26】
アプリケーションソフトウェアが実行されるユーザコンピュータと、前記アプリケーションソフトウェアの実行を管理する管理用コンピュータとを備えたソフトウェア実行制御システムであって、
前記ユーザコンピュータには、
前記アプリケーションソフトウェアの実行を制御するための実行制御部と、
前記アプリケーションソフトウェア及び前記実行制御プログラムの動作を監視するための監視部とが設けられ、
前記管理用コンピュータには、
前記実行制御プログラムからの要求に基づいてユーザ認証を行う認証部と、
前記認証部により正当なユーザであると確認された場合は、前記実行制御部が前記アプリケーションソフトウェアを起動させるために必要な第1の情報を前記実行制御部に送信する情報送信部と、
所定の時期に前記実行制御部との間で行われる継続確認通信に基づいて、前記アプリケーションソフトウェアの実行継続を許可するか否かを管理する継続実行管理部とが設けられているソフトウェア実行制御システム。
【請求項27】
コンピュータを、アプリケーションソフトウェアの実行を制御する実行制御部と、前記アプリケーションソフトウェア及び前記実行制御部の動作状態をそれぞれ監視する監視部として、機能させるためのコンピュータプログラムであって、
前記実行制御部は、
管理用コンピュータと通信することによりユーザ認証を要求する機能と、
前記管理用コンピュータから受信した第1の情報に基づいて、前記アプリケーションソフトウェアを起動させる機能と、
前記管理用コンピュータとの間で継続確認通信を行う機能と、
前記継続確認通信によって前記アプリケーションソフトウェアの実行継続が禁止された場合は、前記アプリケーションソフトウェアの動作を停止させる機能と、
を備え、
前記監視部は、
前記アプリケーションソフトウェア及び前記実行制御部の動作状態をそれぞれ監視する機能と、
前記アプリケーションソフトウェアまたは前記実行制御部のいずれか一方が動作を停止した場合は、前記アプリケーションソフトウェア及び前記実行制御部をそれぞれ停止させ、自身も停止させる機能と、
を備えているコンピュータプログラム。
【請求項28】
前記実行制御部は、さらに、
前記アプリケーションソフトウェア及び前記監視部の動作状態をそれぞれ監視する機能と、
前記アプリケーションソフトウェアまたは前記監視部のいずれか一方が動作を停止した場合は、前記アプリケーションソフトウェア及び前記監視部をそれぞれ停止させ、自身も停止させる機能を備えている請求項27に記載のコンピュータプログラム。
【請求項29】
前記実行制御部の前記継続確認通信を行う機能は、前記管理用コンピュータから予め設定された所定の時期に、前記管理用コンピュータから予め設定された第1の識別情報を前記管理用コンピュータに送信するものである請求項27に記載のコンピュータプログラム。
【請求項30】
前記継続確認通信を行う度に、前記管理用コンピュータから前記所定の時期が可変に設定される請求項29に記載のコンピュータプログラム。
【請求項31】
前記アプリケーションソフトウェアと、前記実行制御部と、前記監視部とは、同一の記録媒体に記録されて流通するものである請求項27に記載のコンピュータプログラム。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2008−262580(P2008−262580A)
【公開日】平成20年10月30日(2008.10.30)
【国際特許分類】
【出願番号】特願2008−132121(P2008−132121)
【出願日】平成20年5月20日(2008.5.20)
【分割の表示】特願2004−558454(P2004−558454)の分割
【原出願日】平成15年12月10日(2003.12.10)
【出願人】(500058589)インターレックス株式会社 (3)
【Fターム(参考)】