(57)【要約】  本発明は、不正使用からソフトウェアアプリケーションを保護するための方法を対象とし、該方法は、ユーザマシンによって前記ソフトウェアアプリケーションの第１パートを実行するステップと、ネットワーク上のユーザマシンによってアクセスすることができるリモートサーバ上の前記ソフトウェアアプリケーションの第２パートを実行し、これによって、前記第２パートを前記ユーザマシンから切り離すステップと、前記ネットワークを介して前記第１パートと前記第２パートとの間で通信を行い、これによって、前記ソフトウェアアプリケーションがハッキングされるのを防止するステップと、を備える。他の実施形態において、本発明は、ソフトウェアアプリケーションを対象とする。該ソフトウェアアプリケーションは、ユーザマシン上で実行される第１パートと、ネットワーク上の前記ユーザマシンによってアクセスすることができるリモートサーバ上で実行され、これによって、前記ユーザマシンから切り離される第２パートと、前記第１パートと前記第２パートとの間の通信を行い、これによって、前記ソフトウェアアプリケーションがハッキングされるのを防止するための通信モジュールと、を備える。
2008522278.tif 000002
【特許請求の範囲】
【請求項１】
不正使用からソフトウェアアプリケーションを保護するための方法であって、該方法は、
ユーザマシンによって前記ソフトウェアアプリケーションの第１パートを実行するステップと、
ネットワークを介して前記ユーザマシンに接続され、該ネットワークを介して前記ユーザマシンによって使用のためアクセスすることはできるが修正することはできない前記ソフトウェアアプリケーションの第２パートを提供するよう構成されるリモートサーバによって、該第２パートを実行するステップと、を備え、
前記第１パートおよび前記第２パートの少なくとも１つを実行するため、前記第１パートと前記第２パートとの間で通信が必要な場合、前記第１パートと前記第２パートとは前記ネットワークを介して通信し、
したがって、少なくとも前記ソフトウェアアプリケーションの第２パートが前記ユーザマシンによってハッキングされるのを防止する方法。
【請求項２】
前記ソフトウェアアプリケーションの第２パートは、前記ソフトウェアアプリケーションに関するライセンシング動作を実行する請求項１に記載の方法。
【請求項３】
前記ライセンシング動作は、前記ソフトウェアアプリケーションがライセンス契約条件に従って実行されることを確認することと、前記ユーザマシンおよび／または前記ユーザマシンのユーザが、前記ソフトウェアアプリケーションを実行する権限を与えられていることを確認することと、前記ユーザマシンおよび／または前記ユーザマシンのユーザが、前記ソフトウェアアプリケーションを実行する権限を与えられていることを定期的に確認することと、を備えるグループから選択される請求項２に記載の方法。
【請求項４】
前記ネットワークは、広域ネットワークである請求項１に記載の方法。
【請求項５】
前記ネットワークは、ローカルエリアネットワークである請求項１に記載の方法。
【請求項６】
前記ソフトウェアアプリケーションの第１パートは、プロテクションシールドによって保護される請求項１に記載の方法。
【請求項７】
前記ソフトウェアアプリケーションの第２パートは、プロテクションシールドによって保護される請求項１に記載の方法。
【請求項８】
前記ソフトウェアアプリケーションの第２パートは、実行可能モジュールと、データオブジェクトと、実行可能モジュールおよびデータオブジェクトと、を備えるグループから選択される請求項１に記載の方法。
【請求項９】
前記データオブジェクトは、キーを備える請求項８に記載の方法。
【請求項１０】
前記キーは、暗号キーと、識別キーと、を備えるグループから選択される請求項９に記載の方法。
【請求項１１】
前記通信は、選択式である請求項１に記載の方法。
【請求項１２】
前記通信は、機密が保護される請求項１に記載の方法。
【請求項１３】
ユーザマシン上で実行される第１パートと、
ネットワーク上の前記ユーザマシンによってアクセスすることができるリモートサーバ上で実行され、したがって、前記ユーザマシンから切り離される第２パートと、
前記第１パートと前記第２パートとの間の通信を行うための通信モジュールと、を備え、
これによって、前記ソフトウェアアプリケーションがハッキングされるのを防止するソフトウェアアプリケーション。
【請求項１４】
前記ネットワークは、広域ネットワークである請求項１３に記載のソフトウェアアプリケーション。
【請求項１５】
前記ネットワークは、ローカルエリアネットワークである請求項１３に記載のソフトウェアアプリケーション。
【請求項１６】
前記ソフトウェアアプリケーションの第１パートは、プロテクションシールドによって保護される請求項１３に記載のソフトウェアアプリケーション。
【請求項１７】
前記ソフトウェアアプリケーションの第２パートは、プロテクションシールドによって保護される請求項１３に記載のソフトウェアアプリケーション。
【請求項１８】
前記通信モジュールは、プロテクションシールドによって保護される請求項１３に記載のソフトウェアアプリケーション。
【請求項１９】
前記ソフトウェアアプリケーションの第２パートは、実行可能モジュールと、データオブジェクトと、実行可能モジュールおよびデータオブジェクトと、を備えるグループから選択される請求項１３に記載のソフトウェアアプリケーション。
【請求項２０】
前記データオブジェクトは、キーを備える請求項１９に記載のソフトウェアアプリケーション。
【請求項２１】
前記キーは、暗号キーと、識別キーと、を備えるグループから選択される請求項２０に記載のソフトウェアアプリケーション。
【請求項２２】
前記通信は、選択式である請求項１３に記載のソフトウェアアプリケーション。
【請求項２３】
前記通信は、機密が保護される請求項１３にソフトウェアアプリケーション。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアプロテクションの分野に関する。
【背景技術】
【０００２】
本明細書において、ソフトウェアの著作権侵害という用語は、ソフトウェアを不法にコピーしたり、配布したり、または、使用したりすることを意味する。
【０００３】
今日のほとんどのコンピュータユーザがソフトウェアを不正に使用したり複製したりすることが不法であると認識しているという事実にもかかわらず、一般に、多くのユーザは、ソフトウェアを価値のある知的財産として扱うことの重要性を無視している。ＢＳＡ(Business Software Alliance)が毎年開催する全世界ソフトウェア著作権侵害の研究会第７回（Seventh Annual Global Software Piracy Study）によると、２００３年のビジネス用ソフトウェアアプリケーション市場における著作権侵害による収益の損失は、２９０億ドルを超えた。
【０００４】
数種類のよく知られているタイプのソフトウェア著作権侵害を以下に挙げる。
ソフトリフティング
１回のコピーのライセンスが付与されるソフトウェアを購入したが、そのライセンス契約条件に反して、数台のコンピュータにソフトウェアをロードすること（例えば、友人、同僚および他の人達とソフトウェアを共用すること）。
アップロードおよびダウンロード
モデムを介してオンラインサービスプロバイダー、および／または、インターネットに接続しているエンドユーザが、著作権を有するソフトウェアを不正にコピーして利用することができるようにすること。
ソフトウェアの偽造
著作権を有するソフトウェアを合法的にみせかけて設計した形式で不法にコピーしたり販売したりすること。
ＯＥＭアンバンドリング
特定の同梱ハードウェアと抱合せ販売するためのソフトウェアをスタンドアロンソフトウェアとして販売すること。
ハードディスクへのロード
多くの場合、エンドユーザが特定のハードウェアディーラからハードウェアを買うよう購買意欲を促進するために、ソフトウェアの不正コピーをパーソナルコンピュータのハードディスク上にインストールすること。
レンタル
一時的使用のため、ソフトウェアを不正に販売すること。
ハッキング
コンピュータアプリケーションのプロテクションシールドを変更して、アプリケーションの不正使用を可能にすること。
【０００５】
ソフトウェア著作権侵害に対する１つの解決法は、アラジンノリッジシステムズリミティド（Aladdin Knowledge Systems Ltd.）が製造するＨＡＳＰ（登録商標）である。ＨＡＳＰは、ソフトウェアアプリケーションのプロテクション（すなわち、著作権侵害の防止）およびＤＲＭ（Digital Right Management）のための製品ファミリである。現在、ＨＡＳＰファミリは、以下の製品を含む。
−ＨＡＳＰ  ＨＬ（登録商標）
ハードウェアベースのライセンシングおよびソフトウェアプロテクションシステムである。
−プリブリッジ（Privilege）（登録商標）
ソフトウェアベースのライセンシング、ソフトウェアプロテクションおよびソフトウェア配布システムである。
−プリブリッジトライアルウェアツールキット（Privilege Trialware Toolkit）
安全でかつ管理されたソフトウェアのトライアルウェアを作成するためのものである。
−ＨＡＳＰ  ＤｏｃＳｅａｌ（登録商標）
ＨＴＭＬファイル中の知的財産および機密情報を保護するためのハードウェアベースのシステムである。
【０００６】
例えば、ＨＡＳＰ  ＨＬ（登録商標）は、トークン（「ドングル」としても知られる）形式で配布され、コンピュータのＵＳＢポートまたは同様のポート（例えば、パラレルポート）に挿入される。これは、ソフトウェアプロテクションのためにデータを暗号化したり解読したりするのに使用されるハードウェアベースの暗号化エンジンである。実行中、ＨＡＳＰ  ＨＬ（登録商標）は、保護するアプリケーションから暗号化された文字列を受け取って、模倣することができない方法でこれらの文字列を解読する。保護するアプリケーションが、ＨＡＳＰ  ＨＬ（登録商標）から返された解読済のデータによって、プログラムをロードして実行するか、一定の構成要素のみ実行するか、または、全く実行しないかなどのプログラムの実行モードに影響する。ＨＡＳＰのオンチップ暗号化エンジンは、１２８ビットのＡＥＳ暗号化アルゴリズム（AES Encryption Algorithm）、ユニバーサルＡＰＩ（Universal API）、シングルライセンスキャパシティ、クロスプラットフォームＵＳＢなどを使用している。
【０００７】
ソフトウェアプロテクションのための他の方法は、『ローカルライセンシングサーバ（Local Licensing Server）』、すなわち、組織の専用ネットワーク上で動作し、１つまたは複数のソフトウェア製品のライセンシング／プロテクション機能を制御するサーバをベースとする。例えば、１台のローカルライセンシングサーバにＮ個のライセンシングプールが提供される。すなわち、プログラムのコピーを同時にＮ個まで使用することが許可される。ソフトウェアのコピーがアクティベートされる度に、ソフトウェアがライセンシングサーバに実行許可を「要請」する。ユーザが１人ずつソフトウェアアプリケーションを実行する度に、ライセンシングプールを１個ずつ減らし、ユーザがアプリケーション作業を終了する度に、ライセンシングプールを1個ずつ増やす。Ｎ人より多くのユーザがアプリケーションを同時に使用する場合、サーバは、組織が購入したライセンス契約条件に従って、追加ライセンスの許可を拒否したり、組織に追加使用分の料金を課金したりすることができる。
【０００８】
ソフトウェアプロテクションに対する他の解決法として、プロダクトアクティベーションがよく知られている。ソフトウェアアクティベーションとしても知られているプロダクトアクティベーションは、ソフトウェアアプリケーションの配布方法や使用方法に関してより多くの制御を行うユニークなビジネスモデルである。基本的には、ソフトウェアをインストールすることができる回数を制限することによって知的財産を保護するソフトウェアプロテクションを提供する。一般に、ソフトウェアアクティベーションの目的は、ソフトウェアアプリケーションのインストールを１台のマシン上で許可することである。インストール後の予め定められた期間内（例えば、３０日以内）に、ユーザは、システムを「アクティベート」しなければならず、この場合のみ、ソフトウェアアプリケーションを使用することができる。アクティベートすることによって、一般にインターネットを介して、ソフトウェアアプリケーションがインストールされたマシンとライセンシングサーバとの間の通信が行われ、アプリケーションがインストールされたハードウェアに関する情報が提供される。ソフトウェアが合法的に購入されていれば、リモートサーバによってリリースコードが提供され、ユーザシステム上に記録される。ソフトウェアアプリケーションが呼び出される度に、このコードとマシンのハードウェア構成要素（例えば、ディスプレイアダプタのタイプ、ＳＣＳＩアダプタ、ＩＤＥアダプタまたはプロセッサのタイプなど）とを照合する。そして、コードが所定のものに対応している場合のみ、実行が許可される。
【０００９】
プロダクトアクティベーションによる解決法は、ユーザのハードウェアとの関連が強いため、ユーザのハードウェアが変更されると、ユーザのマシンを明確に識別することが困難になる。１台のマシンを他のマシンと入れ換えると、ユーザは、再度ソフトウェアをアクティベートしなければならない。また、複数のマシン上でライセンスを与えられた１個のソフトウェアアプリケーションを実行すると、他にも支障をきたすことになる。
【００１０】
トークンは、リバースエンジニアリングによる複製さえも阻止するよう設計された移動ハードウェアデバイスである。したがって、トークンによる解決法で数多くのソフトウェアアクティベーションの問題が解決される。しかしながら、トークンは、ハードウェア構成部品であり、減価償却するものである。さらに、ユーザがトークンを所持しているときにトークンの内容を変えるのは厄介な手続になるなどの理由により、メーカーの観点から考えると、トークンによってソフトウェアアプリケーションを保護する場合、追加費用がかかってしまう。
【００１１】
ライセンシングサーバによる解決法は、トークンによる解決法より組織内で使用するのに適しているが、ライセンシングサーバによる解決法には、オーバーロードなどの欠点もある。このオーバーロードによって、組織内でソフトウェアアプリケーションの動作が中断する場合などがある。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
したがって、本発明の目的は、著作権侵害からソフトウェアアプリケーションを保護するためのシステムを提供することによって、従来技術の問題を解決することである。
【００１３】
本発明の他の目的は、ハードウェア手段を使用せずに実現することができるソフトウェア著作権侵害の解決法を提供することである。
【００１４】
本発明の他の目的は、組織および個々のユーザの両方に適応するソフトウェアアプリケーションを保護するための解決法を提供することである。
【００１５】
本発明の他の目的および利点は、説明が進むにつれて明白になるであろう。
【課題を解決するための手段】
【００１６】
本発明は、一実施形態において、不正使用からソフトウェアアプリケーションを保護するための方法を対象とする。この方法は、 ユーザマシンによって前記ソフトウェアアプリケーションの第１パートを実行するステップと、ネットワーク上のユーザマシンによってアクセスすることができるリモートサーバ上の前記ソフトウェアアプリケーションの第２パートを実行し、これによって、前記第２パートをユーザマシンから切り離すステップと、前記ネットワークを介して前記第１パートと前記第２パートとの間で通信を行い、これによって、ソフトウェアアプリケーションがハッキングされるのを防止するステップと、を備える。
【００１７】
他の好ましい実施形態において、本発明は、ソフトウェアアプリケーションを対象とする。このソフトウェアアプリケーションは、ユーザマシン上で実行される第１パートと、ネットワーク（ＷＡＮ、ＬＡＮなど）上の前記ユーザマシンによってアクセスすることができるリモートサーバ上で実行され、これによって、前記ユーザマシンから切り離される第２パートと、前記第１パートと前記第２パートとの間の通信を行うための通信モジュールと、を備え、これによって、前記ソフトウェアアプリケーションがハッキングされるのを防止する。
【００１８】
一般に、ソフトウェアアプリケーションの第２パートは、１つのソフトウェアアプリケーションまたは複数のソフトウェアアプリケーションのライセンシング動作（例えば、ライセンス契約条件に従ってアプリケーションが実行されていることを確認）を実行する。
【００１９】
本発明の他の好ましい実施例によれば、プロテクションシールドによって、ソフトウェアアプリケーションの第１パート、第２パート、または全パートさえも保護することができる。
【００２０】
ソフトウェアアプリケーションの第２パートは、実行可能プログラムを備えてもよい。代替または追加の方法として、ソフトウェアアプリケーションの第２パートは、データオブジェクトを含んでもよい。さらに、データオブジェクトは、キー（暗号キー、識別キーなど）を含んでもよい。
【００２１】
第１パートと第２パートとの間の通信の機密を保護するのが好ましい。本発明の好ましい実施例によれば、通信は選択式である。
【発明を実施するための最良の形態】
【００２２】
添付の図を共に参照すると、本発明をよりよく理解できるであろう。
【００２３】
本明細書において、「プロテクションシールド」または「セキュリティシールド」という用語は、ソフトウェアアプリケーションが不正オブジェクトによって使用されないよう保護するためソフトウェアアプリケーションに付加されたソフトウェアパートおよび／またはハードウェアパートを意味する。プロテクションシールドは、開発中のアプリケーションまたは配布版のアプリケーションに追加することができる。
【００２４】
当分野において、「ソフトウェア」という用語は、コンピュータの命令および／またはデータを意味する。当分野において、「ソフトウェアアプリケーション」という用語は、何らかの機能を実行するためのプログラムおよび／またはデータを意味する。例えば、ワードプロセッサ、スプレッドシートおよびデータベース管理システムは、ソフトウェアアプリケーションに分類される。本明細書において、「ソフトウェアアプリケーションパート」という用語は、ソフトウェアアプリケーションの構成要素が実行可能コードであるかデータであるかにかかわらず、これらの構成要素全体より小さいものを意味する。例えば、ソフトウェアアプリケーション全体より少ない１つまたは複数の関数、ＤＬＬファイルまたは実行可能ファイル（例えば、ＥＸＥファイル）、１つまたは複数のスクリプト、１つまたは複数のデータファイル、データベースの１つまたは複数のレコード、１つまたは複数のバイトデータ、および上記の任意の組合せを意味する。これらの構成要素が集合して１つのソフトウェアアプリケーションに属するとき、それぞれをソフトウェアアプリケーションの「パート」と呼ぶことができる。
【実施例】
【００２５】
図１は、従来技術によって保護される代表的なソフトウェアアプリケーションを示す概略図である。ユーザマシン２０は、ソフトウェアアプリケーション４０を実行する。このソフトウェアアプリケーション４０は、パート１、パート２、パート３、ＧＵＩ（Graphical User Interface）およびプロテクションシールドのモジュールを備える。すべてのパートは、ユーザマシン２０上で実行される。
【００２６】
ソフトウェアアプリケーションが著作権侵害に対して脆弱である主な原因の1つは、ユーザがソフトウェアアプリケーションの全パートを利用することができることである。実行可能ファイルであるかデータファイルであるかにかかわらず、ユーザがソフトウェアパートを使用することができるため、ユーザは、ファイルを修正することができる。ハッカーが使用する方法の1つは、アプリケーションが実行されている間、このアプリケーションのコードおよびデータをトレースすることである。ハッカーは、デバッガを使って、１ステップずつアプリケーションを実行し、各ステップにおいて実行される動作を追い、変数やメモリのその時点の内容を調べることもある。こうして、ユーザが、ソフトウェアアプリケーションのファイルを使用したり、あるいは、実行中にＲＡＭに格納されているソフトウェアアプリケーションパートさえ使用したりすることができるため、ソフトウェアアプリケーションは、ハッキングに対して脆弱になってしまう。このように、適当な労力、時間および資源を使えば、ソフトウェアアプリケーションのプロテクションシールドを取り除くことができる。結果として、ソフトウェアアプリケーションが保護されず、他の権限を持たないユーザに配布されてしまうこともある。
【００２７】
本発明の好ましい実施例によれば、この問題を解決するため、ソフトウェアアプリケーションの全パートをリモートサーバ上に保管し、ユーザマシンの代わりにこのリモートサーバまたは別のリモートサーバによってこれらのパートを実行する。
【００２８】
図２は、本発明の好ましい実施例による図１で示したソフトウェアアプリケーションパートの概略展開図である。従来技術のようにユーザマシン２０上でアプリケーション４０の全パートを実行する代わりに、通信チャネル８０を介してインターネット３０経由でユーザマシン２０からアクセスすることができるリモートサーバ１０上で、パート１、パート２およびパート３を実行する。ユーザとアプリケーションとの間の接続は、ユーザマシン２０によって実行されるＧＵＩモジュール４０によって行われる。
【００２９】
アプリケーション４０が２つのプラットフォーム上、すなわち、ユーザコンピュータ２０およびリモートサーバ１０上で展開されるため、プロテクションシールドの役割は、従来技術のものと異なる。アプリケーションの所有者がサーバ１０のオペレータを信用しない場合、または、プロテクションレベルを向上させるため、リモートサーバ１０上で実行されるプログラムパートも保護してもよい。例えば、アプリケーションを実行するユーザの人数、ユーザの識別情報など、リモートサーバ１０がアプリケーションを利用する方法をコントロールすることができるため、ユーザマシン２０上のプロテクションシールドは、それほど厳格でなくてもよい。さらに、特にデータが機密性を有する場合、ユーザマシン２０とリモートサーバとの間で交換されるデータを保護することもできる。例えば、交換データを暗号化したり、交換データにデジタル署名したりするなどの暗号法によって、交換データを保護してもよい。
【００３０】
ユーザがソフトウェアアプリケーション４０にアクセスするのを防止するため、ユーザがソフトウェアアプリケーションを変更することはできない。その結果、従来技術と比べてプロテクションレベルが向上する。
【００３１】
本発明の一実施例において、アプリケーションがユーザマシン２０上で動作しないため、ユーザとの間のインタフェースは、ブラウザまたは専用プログラムによって実行してもよい。図２において、ユーザマシン２０によって実行されるＧＵＩモジュールがこれを示す。
【００３２】
図３は、本発明の他の好ましい実施例による図１で示したソフトウェアアプリケーションパートの概略展開図である。本実施例では、アプリケーションのパート１およびパート２は、リモートサーバ１０によって実行される。一方、アプリケーションのパート３は、ユーザマシン２０によって実行される。このように、プログラムの全パートをリモートサーバ１０上で実行する必要はない。ある場合においては、例えば、いくつかのコアルーチンまたはライセンシングモジュールなどのアプリケーションの一定のパートだけを保護し、それでもなお良好なプロテクションを得るのが適当である。これらの一定のパートは、リモートサーバ１０によって実行してもよい。
【００３３】
本発明の他の好ましい実施例によると、リモートサーバ１０上で実行されるソフトウェアアプリケーション４０のパートは、ソフトウェアアプリケーション４０のライセンシングに関するパートである。
【００３４】
図４は、本発明の他の好ましい実施例によるソフトウェアアプリケーションパートの概略展開図である。図３と図４の相違点は、次の通りである。図３では、ソフトウェアアプリケーション４０のいくつかのパートは、広域ネットワーク３０（例えば、インターネット）上のユーザマシン２０から使用することができるリモートサーバ１０によって実行される。一方、図４では、ソフトウェアアプリケーション４０のいくつかのパートは、ローカルエリアネットワーク６０を介してユーザマシン２０から使用することができるローカルサーバ７０によって実行される。
【００３５】
図３で示す展開図は、少なくとも以下の観点において従来技術と異なる。
【００３６】
本発明によれば、リモートサーバは、『広域ネットワーク』を介してアクセス可能であるが、従来技術では、リモートサーバは、『ローカルエリアネットワーク』を介してアクセス可能である。ローカルサーバは、ローカルエリアネットワークの一部であり、したがって、ローカルエリアネットワークのユーザは、広域ネットワークのユーザより容易にアクセスすることができるため、この相違点は、重要である。例えば、通常、ローカルエリアネットワークのユーザは、物理的に（サーバを含む）ローカルエリアネットワークのインフラストラクチャを使用することが可能である。したがって、少なくともローカルエリアネットワークのオペレータは、ローカルサーバ上で動作するライセンシングモジュールをデバッグすることができる。
【００３７】
図４で示す展開図は、少なくとも以下の観点において従来技術と異なる。
【００３８】
本発明によれば、ローカルエリアネットワークを介してアクセス可能であるか、または、広域ネットワークを介してアクセス可能であるかに係わらず、ライセンシングサーバは、保護するソフトウェアアプリケーションのパート全体を形成しない。例えば、本発明によれば、いくつかのコアルーチンは、リモートサーバ上で実行することができるが、プロテクションシールドのパートを形成する場合も形成しない場合もある。しかしながら、従来技術では、ライセンシングだけに対処しており、プロテクションには対処しない。
【００３９】
本発明では、ソフトウェアアプリケーションのパートを複数のコンピュータシステム上で実行することができるため、多様なコンピュータ上の多様なアプリケーションパートが相互に通信することができることが望ましいことを認識されたい。通信チャネルの機密を保護すること、すなわち、暗号化通信を提供すること、または、少なくとも権限のないオブジェクトが通信情報の内容を解釈することができないことを保証することが望ましい。
【００４０】
図５は、本発明の他の実施例によるソフトウェアアプリケーションパートの概略展開図である。ユーザマシン２０のグループが、ローカルネットワーク６０に接続され、ローカルネットワーク６０は、広域ネットワーク３０に接続されている。
【００４１】
本実施例によれば、プロテクション動作は、リモートサーバ１０（プロテクション−Ａパート）と、ローカルサーバ７０（プロテクション−Ｃパート）と，ユーザマシン２０（プロテクション−Ｂパート）との間に分割される。
【００４２】
本発明の他の好ましい実施例によれば、ウェブライセンシングサーバまたはローカルライセンシングサーバのいずれかまたは両方であるライセンシングサーバは、アプリケーションが、組織が購入したライセンス契約条件に従って動作していることを確認するよう動作する。この確認は、定期的にまたはランダムな間隔で実行する場合がある。好ましい一実施例では、アプリケーションをアクティベートする時にユーザのアプリケーションを使用する権限をチェックする代わりに、または、それに加えて、サーバが、５分毎などの所与の間隔で、同時にアプリケーションを使用している権限を与えられたユーザの人数をチェックし、ライセンシングプールにおける使用可能なライセンス／使用中のライセンスの数を更新する。ユーザの人数がライセンス契約によって許可された人数を超えた場合、ライセンシングサーバによって、組織に追加使用分の料金を課金したり、何人かのユーザに対してアプリケーションのいくつかの機能を限定（例えば、Ｓａｖｅオプションを停止）したり、何人かのユーザに対して使用を拒否したりしてもよい。
【００４３】
従来技術では、ソフトウェアアプリケーションを呼び出しただけでソフトウェアアプリケーションが使用される。これとは対照的に、本発明の本実施例では、アプリケーションの実行時にソフトウェアアプリケーションの使用方法がライセンス契約条件に準拠していることの確認も行う。
【００４４】
図６は、本発明の好ましい実施例によるソフトウェアアプリケーションを保護するためのプロセスのフローチャートである。ソフトウェアアプリケーションを呼び出した後、ユーザのアプリケーションを使用する権限を調べる。図６に示すように、ユーザがアプリケーションを使用する権限を与えられていない場合、アプリケーションを中止してもよい。別法として、ユーザがアプリケーションの機能を限定して使用することを許可するか、または、アプリケーションを限定された方法で使用することを許可してもよい。ユーザがアプリケーションを使用する権限を与えられている場合、アプリケーションの実行中５分間隔で追加のチェックを行う。上記で説明したように、追加のチェックによって、ユーザがライセンス契約条件の下ソフトウェアアプリケーションを使用する権限を与えられていることを確認する。ライセンス契約によって許可されている人数より多くのユーザがアプリケーションを同時に使用している場合、ライセンシングサーバによって、組織に追加料金を課金したり、何人かのユーザに対してアプリケーションのいくつかの機能を限定（例えば、Ｓａｖｅオプションを停止）したり、何人かのユーザに対して使用を拒否したりしてもよい。
【００４５】
ローカルライセンシングサーバの方がウェブライセンシングサーバよりソフトウェアアプリケーションの実行中にライセンス契約条件に準拠して使用されているか否かを追加確認するのに適していることを認識されたい。ウェブライセンシングサーバ上でこのような動作を実行すると、潜在的ユーザが多数いるため、結果としてウェブサーバに過負荷を与えてしまう。
【００４６】
本発明の他の好ましい実施例によれば、ローカルライセンシングサーバおよびウェブライセンシングサーバの両方が動作して、ソフトウェアアプリケーションの実行中にライセンス契約条件に準拠して使用されているか否かを追加確認してもよい。本実施例では、ローカルライセンシングサーバが使用状況を測定し、この測定した使用状況をウェブライセンシングサーバに報告するよう動作することもある。そして、ウェブライセンシングサーバが、測定した使用状況がライセンス契約条件に準拠していることを確認するよう動作してもよい。
【００４７】
本発明の一実施例によれば、サーバとの間の接続が断続的であってもよい。したがって、ユーザサイトにおけるソフトウェアアプリケーションは、ウェブライセンシングサーバとの間の接続が切断された後、限定された期間（例えば１時間、１日など）だけ実行される。そして、この期間中にサーバとの間の接続が再確立されない場合、ソフトウェアは実行を中止したり、いくつかの機能を制限したりなどする。
【００４８】
本発明の一実施例によれば、（例えば、システム障害のため）サーバの１つが停止した場合、他のサーバが使用可能であれば、このサーバによって、ライセンシング動作（ユーザのアプリケーションを使用する権限のチェック、アプリケーションを同時に使用するユーザの人数がライセンス契約条件を超えていないかのチェックなど）を実行する。
【００４９】
ライセンス契約条件上でアプリケーションを実行する間、アプリケーションの使用状況をモニターしながら生成される副生成物としてアプリケーションの使用状況に関する情報が蓄積される。例えば、ワードプロセッサの辞書機能の使用状況をモニターするための専用システムをインストールする代わりに、ライセンシングアプリケーションによってこの情報を蓄積することができる。蓄積された情報によって、ある機能またはアプリケーションを購入するか否か、ライセンスをいくつ購入するかなどを決定する構成手段が提供される。さらに、アプリケーションメーカは、同様にこの情報を使用してもよい。
【００５０】
本発明のライセンシングサーバは、多様な支払金額モデルと連結して利用することができる。例えば、本発明の一実施例によれば、支払金額は、１人のユーザまたは複数のユーザがアプリケーションをアクティベートした回数をベースにしてもよい。本発明の他の実施例によれば、支払金額は、アプリケーションが動作していた期間をベースにしてもよい。追加または代替の方法として、支払金額は、アプリケーションを呼び出した回数とアプリケーションを使用した期間との任意の適当な組合せをベースにしてもよい。本発明の他の実施例によれば、支払金額は、同時に実行するインスタンスの最大数をベースにしてもよい。
【００５１】
当分野では、研究開発工程を簡易にするため、ソフトウェアアプリケーションの研究開発作業をプロテクション／ライセンシングの研究開発作業から切り離すのが一般的である。また、プロテクション／ライセンシング問題を専門とする会社がある。プロテクションシールドは、既存のソフトウェアアプリケーションに容易に追加することができるよう設計されている。さらに、プロテクションシールドは、ソフトウェアメーカがプロテクションシールドと対話処理を行うことができるＡＰＩ（Application Software Interface）と共に提供される。実際、プロテクションシールドがアプリケーションの他の部分から切り離されたツールであるため、アプリケーションソフトウェア開発者は、開発者が専門とするテーマに研究開発を集中することができる。本発明において、ＷＷＷサーバ上で実行されるソフトウェアアプリケーションパートは、エンドユーザ／組織から切り離されてプロテクションシールドに属するのが好ましい。
【００５２】
エンベローププロテクションは、ファイルのコード化および高度なアンチデバッグ機能を提供することによって、セキュリティの総合的レベルを向上させる。例えば、ＨＡＳＰエンベロープユーティリティは、代表的なプロテクションエンベロープである。これによって、アプリケーションの実行可能ファイルおよびライブラリィファイルの周囲にプロテクション用シールドを追加する。ＨＡＳＰエンベロープ（HASP Envelope）は、リバースエンジニアリングを防止する手段や他のアンチデバッグ方法を提供する。ＨＡＳＰエンベロープは、ランダムに組み立てられた多数のプロテクションレイヤによって、アプリケーションファイルをラッピングする。ランダムマルチレイヤラッピングエンベロープによって、実装されるプロテクションストラテジーが、保護するアプリケーションごとに異なることが保証される。ＨＡＳＰエンベロープは、保護するソフトウェアとＨＡＳＰキー（HASP Key）とをリンクする。このＨＡＳＰキーは、「セキュリティトークン」、すなわち、ホストとの有線または無線の接続を介してホストにプロテクション機能およびセキュリティ機能を提供するホストの外部のハードウェアである。保護するソフトウェアが要求するＨＡＳＰキーにアクセスすることができないときは、常に、保護するソフトウェアとＨＡＳＰキーとの間のリンクが切断されている。この場合、プログラムは機能するのを中止する。プロテクションプロセス中に、元のファイルを破棄し、新しいファイルを作成する。作成された新しいファイルは、ユーザに配布されるファイルである。
【００５３】
ＨＡＳＰによって、システムおよびユーザレベルの両方のデバッグ方法を検出することができる。ＨＡＳＰシステムによって検出を開始するようアクティベートすることによって、プロテクションスキームの弱体化を試みる潜在的攻撃をブロックすることができる。ユーザは、スクランブリングのためのＨＡＳＰキーアクセスの回数を設定することができる。この設定によって、保護するアプリケーションによるＨＡＳＰキーの呼び出しがどれだけコンパクトになるかをコントロールする。『暗号化レベル（Encryption Level）』スライダによってスクランブリングのためのＨＡＳＰキーアクセスの回数を決定する。保護するモジュールの数が増えるほど、保護するアプリケーションのスタートアップにかかる時間および結果ファイルのサイズが増大する。暗号化レベルと保護するファイルのサイズおよびスタートアップのスピードとの間にもトレードオフがある。暗号化レベルが高度になるほど、スタートアップは遅くなり、さらに、保護するアプリケーションのサイズは大きくなる。
【００５４】
本発明の他の実施例によれば、ライセンシングサーバは、購入されたライセンス契約条件によってユーザまたは組織のアプリケーションの使用方法が限定される「実施スキーム」を利用するよう動作する。本実施例では、組織は、購入した分より多くのライセンスを同時に使用することができない。本発明の他の実施例によれば、ライセンシングサーバは、プログラムの使用状況を計測し、これによってユーザ／組織に課金する「計測スキーム」を利用するよう動作する。本実施例では、ユーザがソフトウェアアプリケーションを実行した回数に従って、組織に課金される。本発明の他の実施例によれば、ライセンシングサーバは、実施スキームと計測スキームの両方を利用するよう動作する。本実施例では、例えば、ライセンス契約条件によって同時にＮ人のユーザまで許可される場合、Ｎ人より多くのユーザがアプリケーションを同時に使用すると、追加料金が組織に課金される。
【００５５】
本発明によれば、インターネットを介してウェブライセンシングサーバと接続されるため、ユーザは、例えば自宅などの組織のＬＡＮの外部からアプリケーションソフトウェアをアクティベートすることができることを認識されたい。
【００５６】
さらに、ネットワーク上の「選択式」通信というテーマが当分野で周知であることを認識されたい。例えば、ユーザがウェブサイトをブラウジングするとき、このウェブサイトを運用するウェブサーバ上の一定の内容にだけアクセスするように限定される。このように、ユーザがウェブサイト上のデータにアクセスすることができるということが、ウェブサイト上のデータに無制限にアクセスすることができるということを意味しない。また、ユーザがリモートサーバとの間で通信を行うということが、リモートサーバがユーザマシンに無制限にアクセスすることができるということを意味するわけではない。実際に、ユーザは、ウェブサイトサーバがユーザのコンピュータに格納された情報にアクセスするのを防止することができる。このように、本発明の好ましい実施例によれば、多様なコンピュータマシン上にあるソフトウェアアプリケーションパート間の通信は「選択式」である。こうして、リモートワークステーションが、格納された情報を変更したりおよび／または格納された情報にアクセスしたりするのを完全にまたは選択式で防止するようサーバを構成したりおよび／またはプログラミングしたりし、動作するようにするのが好ましい。さらに、リモートワークステーションが少なくとも選択式でサーバに格納された情報にアクセスすることができるのが好ましい。
【００５７】
当業者であれば、本発明の範囲を逸することなく、他の形式と方法で本発明を実施することができることを認識するであろう。本明細書に記載された本実施例は、説明のためのものであり、制限するためのものではないと考えるべきである。
【図面の簡単な説明】
【００５８】
【図１】従来技術によって保護される代表的なソフトウェアアプリケーションを示す概略図である。
【図２】本発明の第１の好ましい実施例による図１で示したソフトウェアアプリケーションパートの概略展開図である。
【図３】本発明の他の好ましい実施例による図１で示したソフトウェアアプリケーションパートの概略展開図である。
【図４】本発明の他の好ましい実施例によるソフトウェアアプリケーションパートの概略展開図である。
【図５】本発明の他の好ましい実施例によるソフトウェアアプリケーションパートの概略展開図である。
【図６】図６は、本発明の好ましい実施例によるソフトウェアアプリケーションを保護するためのプロセスのフローチャートである。
【図１】
2008522278.tif 000003
【図２】
2008522278.tif 000004
【図３】
2008522278.tif 000005
【図４】
2008522278.tif 000006
【図５】
2008522278.tif 000007
【図６】
2008522278.tif 000008
【国際調査報告】
2008522278.tif 000009