(57)【特許請求の範囲】
【請求項１】
コンピュータ上のソフトウェア・プログラムの使用を制御する方法（３００）であって、
前記コンピュータに対して基本サービスを提供する少なくとも１つのソフトウェア・プログラムをロードすることに関係するブートストラップを開始するステップ（３０６）と、
ライセンス交付管理システムに対して前記基本サービスを提供するプログラムの夫々によって実行許可を要求するステップ（３１１）と
を含み、
前記ブートストラップの完了前に、前記プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って前記許可を授与するステップ（３１８〜３２４）と、
前記ブートストラップ完了後に、前記ライセンス交付情報の完全な検証に従って前記授与した許可を改訂するステップ（３４２〜３５１）と
を特徴とする方法。
【請求項２】
前記ブートストラップの完了前に、前記ライセンス交付管理システムの基本モジュールをロードするステップ（３０９）であって、各許可が、前記基本モジュールに対して要求され、前記基本モジュールによって授与されるステップと、
許可の各要求を記録するステップ（３２２）と、
前記ブートストラップ完了後に、前記ライセンス交付管理システムの全モジュールをロードするステップ（３１２）と、
前記対応する授与された許可を改訂するために、記録した各要求を前記全モジュールに供給するステップ（３４２）と
をさらに含む請求項１に記載の方法（３００）。
【請求項３】
前記許可を要求するステップ（３１１）が、前記基本モジュールの前記ローディングが完了するまで延期される請求項２に記載の方法（３００）。
【請求項４】
前記授与された許可を改訂する前記ステップ（３４２〜３５１）が、
前記対応するライセンス情報を含む、各プログラムについてのデジタル・ライセンス証明書を格納する別のコンピュータに、前記要求を示すメッセージを送信するステップ（３４３）と、
前記対応するライセンス証明書で、前記要求の適合を検証するステップ（３４５〜３５１）とを含む請求項２または３に記載の方法（３００）。
【請求項５】
前記許可を授与する前記ステップが、前記コンピュータ上に格納され、前記対応するライセンス証明書の簡略化したコピーを含むローカル・デジタル・ライセンス証明書を検証するステップ（３１８〜３２４）を含む請求項４に記載の方法（３００）。
【請求項６】
前記ブートストラップの後に、前記別のコンピュータから受信するその新しいバージョンに従って各ローカル・ライセンス証明書を更新するステップ（３５４）をさらに含む請求項５に記載の方法（３００）。
【請求項７】
各プログラムの実行環境の変化を検出するために、前記コンピュータのオペレーションを監視するステップ（３３３）と、
前記検出した変化に従って前記対応する授与された許可を改訂するステップ（３３６、３６０〜３８４）と
をさらに含む請求項１ないし６のいずれかに記載の方法（３００）。
【請求項８】
コンピュータ上で動作するときに請求項１ないし７のいずれかの前記方法を実行するための、前記コンピュータ（１０５）の作業メモリ（１３０ｃ）中に直接ロード可能なコンピュータ・プログラム（２３０、２３５）。
【請求項９】
請求項８のプログラム（２３０、２３５）が格納されたコンピュータ可読記録媒体（１５０）。
【請求項１０】
ライセンス交付管理システム（２３０、２３５）と、コンピュータ（１０５）に対して基本サービスを提供する少なくとも１つのソフトウェア・プログラム（２０５ｃ、２１５ｃ）のローディングに関係するブートストラップを開始するための手段（１３５）とを含む前記コンピュータ上のソフトウェア・プログラムの使用を制御するためのシステム（１００）において、前記基本サービスを提供するプログラムの夫々が、前記ライセンス交付管理システムに対して実行許可を要求するシステムであって、前記ライセンス交付システムが、前記ブートストラップの完了前に、前記プログラムの使用の許可条件を示すライセンス交付情報（２４０）の仮検証に従って前記許可を授与するための手段（２３０）と、前記ブートストラップの完了後に、ライセンス交付情報（２２５）の完全な検証に従って前記授与した許可を改訂するための手段（２３５）とを含むことを特徴とするシステム。
【請求項１１】
コンピュータ上のソフトウェア・プログラムの使用を制御する方法であって、
前記コンピュータに対して基本サービスを提供する少なくとも１つのソフトウェア・プログラムをロードすることに関係するブートストラップを開始するステップと、
ライセンス交付管理システムに対して前記基本サービスを提供するプログラムの夫々によって実行許可を要求するステップと、
前記ブートストラップの完了前に、前記プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って前記許可を授与するステップと、
前記ブートストラップ完了後に、前記ライセンス交付情報の完全な検証に従って前記授与した許可を改訂するステップと
を含む方法。
【請求項１２】
コンピュータ上のソフトウェア・プログラムの使用を制御するためのシステムであって、
ライセンス交付管理システムと、
コンピュータに対して基本サービスを提供する少なくとも１つのソフトウェア・プログラムのローディングに関係するブートストラップを開始するための手段であって、前記基本サービスを提供するプログラムの夫々が、前記ライセンス交付管理システムに対して実行許可を要求する手段と、
を含み、
前記ライセンス交付システムが、
前記ブートストラップの完了前に、前記プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って前記許可を授与するための手段と、
前記ブートストラップの完了後に、ライセンス交付情報の完全な検証に従って前記授与した許可を改訂するための手段と
を含む、前記システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェア・プログラムの使用を制御するための方法およびシステムに関する。
【０００２】
【従来の技術】
コンピュータ上で動作するソフトウェア・プログラムは、無限の数のコピーに完全に複製することができる。これは、自身の知的所有権を保護することを望む、プログラムの発表者にとって主要な関心事である。実際、発表者は、一般に各プログラムの使用許諾に対して使用料を受け取るので、プログラムのどんな不明な使用または配布によっても、使用料が支払われなくなる。この問題は、この種の製品の配布を規制なしに配布することをさらに容易にするインターネットの広範にわたる拡散によって、近年悪化してきている。
【０００３】
プログラムの不明な使用を回避する最も直接的な方法は、無許可のコピーおよび伝送を防止するものである。例えば、大部分のプログラムは、作成することができるコピーの数を制限し、または所定の期間が経過した後にプログラムのオペレーションを使用不能にする制御コードを組み込む。別の技法は、プログラムの実行に対して、ソフトウェアの所有権またはハードウェア鍵を要求することからなる。
【０００４】
当技術分野で提案された異なる解決策は、発表者によって許可されたそれぞれの使用の条件（例えば、プログラムが動作することのできるコンピュータの最大計算能力を定義する条件）で、コンピュータ上で動作するプログラムの適合を制御するライセンス交付管理システムを、コンピュータ上にインストールするものである。より具体的には、（マシン可読形式に変換された）各プログラムについての使用の許可条件は、デジタル・ライセンス証明書中に組み込まれる。このプログラムは、ライセンス交付管理システムに対する呼び出しを含み、その結果、エンドユーザがプログラムの実行を要求する度に、対応する要求がライセンス交付管理システムに転送される。プログラムの実行が、ライセンス証明書中に組み込まれた使用の許可条件によって設定された制限内にあるかどうかを、このライセンス交付管理システムは検証する。このライセンス交付管理システムは、この検証の結果に従ってプログラムの実行を動作可能にし、または防止する。
【０００５】
【発明が解決しようとする課題】
しかし、上述の解決策は、完全に満足のゆくものではない。具体的には、ライセンス交付管理システムの実行は、オペレーティング・システムと、コンピュータに対して基本サービスを提供する他のプログラムとの全機能を必要とする。したがって、コンピュータの電源を投入する度に、基本プログラムがその間にロードされるブートストラップ・プロセスが最初に実行される。ブートストラップが完了すると、他のプログラムがその上で動作することができるソフトウェア・プラットフォームが提供され、ライセンス交付管理システムを開始することができる。
【０００６】
その結果、ブートストラップ・プロセスの間にロードされる（オペレーティング・システム自体、ネットワーク・スタックなどの）すべての基本プログラムは、ライセンス交付管理システムで監視することができない。これにより、コンピュータ上で動作するプログラムの全制御を実施することが妨げられる。上述の欠点は、制御から逃れるプログラムが一般に非常に価値のあるものであるので、特に重大である。したがって、プログラムの発表者が受ける経済的損失は、かなりのものとなる可能性がある。
【０００７】
上述の欠点を克服することが本発明の目的である。この目的を達成するために、請求項１および１０に記載の方法を提案する。
【０００８】
【課題を解決するための手段】
簡潔に言えば、本発明は、コンピュータ上のソフトウェア・プログラムを制御する方法であって、前記コンピュータに対して基本サービスを提供する少なくとも１つのソフトウェア・プログラムをロードすることに関係するブートストラップを開始するステップと、ライセンス交付管理システムに対して各プログラムによって実行許可を要求するステップとを含む方法を提供する。この方法は、前記ブートストラップの完了前に、前記プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って前記許可を授与するステップと、前記ブートストラップ完了後に、前記ライセンス交付情報の完全な検証に従って前記授与した許可を改訂するステップとをさらに含む。
【０００９】
あるいは、本発明は、コンピュータ上のソフトウェア・プログラムの使用を制御する方法であって、ライセンス交付管理システムに対して、各プログラムによって実行許可を要求するステップと、前記プログラムの使用の許可条件を示すライセンス交付情報の検証に従って前記許可を授与するステップとを含む方法を提供する。この方法は、前記コンピュータの実行環境での変化を検出するために、前記コンピュータのオペレーションを監視するステップと、前記検出した変化に従って前記授与された許可を改訂するステップとをさらに含む。
【００１０】
さらに、本発明は、これらの方法を実行するためのコンピュータ・プログラムと、プログラムを格納する製品と、ソフトウェア・プログラムの使用を制御するための対応するシステムも提供する。
【００１１】
【発明の実施の形態】
具体的に図１を参照すると、ＬＡＮ（ローカル・エリア・ネットワーク）などのネットワーキング・システム１００が示されている。ＬＡＮ１００は、複数のワークステーション１０５によって形成される場合、一般にＰＣ（パーソナル・コンピュータ）からなる。ワークステーション１０５は、それぞれの通信ケーブル１１５を介して、１つまたは複数の集線装置１１０（ハブなど）に接続される。ネットワーキング・システム１００は、ワークステーション１０５のうちの（一般に強力なコンピュータからなる）１つまたは複数が共有ファイルおよび共有装置などのネットワーク・リソースを管理するクライアント／サーバ・アーキテクチャを有する。他のワークステーション１０５は、ユーザがサーバ・リソースに依拠してアプリケーションをその上で実行するクライアントとして動作する。
【００１２】
各ワークステーション１０５は、通信バス１２０に並列に接続されるいくつかのユニットを含む。具体的には、中央演算処理装置（ＣＰＵ）１２５は、ワークステーション１０５のオペレーションを制御し、作業メモリ１３０（一般にはＤＲＡＭ）は、ＣＰＵ１２５によって直接的に使用され、読取り専用メモリ（ＲＯＭ）１３５は、ワークステーション１０５を開始するための基本プログラムを格納する。様々な周辺装置が、（それぞれのインターフェースによって）バス１２０にさらに接続される。具体的には、大容量メモリは、ハードディスク１４０と、ＣＤ−ＲＯＭ（コンピュータ読み取り可能な記録媒体）１５０を読み取るためのドライバ・ユニット（ＤＲＶ）１４５とからなる。ワークステーション１０５は、例えばキーボードおよびマウスからなる入力ユニット（ＩＮ）１５５と、例えばモニタからなる出力ユニット（ＯＵＴ）１６０とをさらに含む。ワークステーション１０５は、ネットワーク・インターフェース・カード（ＮＩＣ）１６５を使用して（通信ケーブル１１５を介して）集線装置１１０に接続される。
【００１３】
このネットワーキング・システムがＷＡＮ（ワイド・エリア・ネットワーク）からなる場合、このネットワーキング・システムが（１つまたは複数のスイッチなどの）異なる構成要素を含む場合、各ワークステーションが（例えばマルチプロセッサ・アーキテクチャを有する）異なる構造を有する場合、このネットワーキング・システムが、一連の端末を備えるメインフレームか、あるいは１つまたは複数のコンピュータを備える他のデータ処理システムによって置換される場合にも同様の考慮事項が当てはまる。
【００１４】
次に図２を考慮すると、クライアントとして動作するワークステーションの作業メモリ（１３０ｃと示す）の部分的内容と、ライセンス交付サーバとして動作するワークステーションの作業メモリ（１３０ｓと示す）の部分的内容とが示されている。情報（プログラムおよびデータ）は、一般に、ハードディスク上に格納され、プログラムが実行されるときに作業メモリ１３０ｃ、１３０ｓ中にロードされる。このプログラムは、最初に、ＣＤ−ＲＯＭから、クライアント・ワークステーションのハードディスク上と、サーバ・ワークステーションのハードディスク上とにインストールされる。
【００１５】
オペレーティング・システム（ＯＳ）２０５ｃおよびオペレーティング・システム２０５ｓは、それぞれ、他のプログラムがその上で動作することのできるクライアント・ワークステーションおよびサーバ・ワークステーションに対してソフトウェア・プラットフォームを提供する。オペレーティング・システム２０５ｃおよび２０５ｓは、キーボードからの入力を認識すること、モニタに出力を送信すること、およびハードディスク上のファイルを追跡することなどの基本タスクを実行する。各オペレーティング・システム２０５ｃ、２０５ｓのメイン・モジュール（カーネルとして知られる）は、それぞれの作業メモリ１３０ｃ、１３０ｓ中に常駐する。カーネルは、オペレーティング・システム２０５ｃ／２０５ｓの他の部分が必要とする、不可欠なサービスすべて（プログラムを作業メモリ中にロードすること、プロセスをスケジューリングすること、またはコマンドを解釈することなど）を提供する。スタック（ＳＴＡＣＫ）２１５ｃおよびスタック２１５ｓは、ネットワーキング・システムを介して通信を定義するために共に働く、１組のネットワーク・プロトコル層を処理する。具体的には、スタック２１５ｃ、２１５ｓにより、クライアント・ワークステーションおよびサーバ・ワークステーションが両者の間でメッセージを交換することが可能となる。
【００１６】
ライセンス交付管理アプリケーション（ＬＭＡ）２２０は、サーバ・ワークステーション上に格納されたデジタル・ライセンス証明書（ＣＥＲＴ）のデータベースを制御する。ネットワーキング・システム上で動作する各ソフトウェア・プログラムの使用を許可するために、異なるライセンス証明書２２５が使用される。ライセンス証明書２２５は、証明書の識別子、プログラムの発表者の識別子、発表者によって許可されたときのプログラムの使用の条件、およびプログラムがその下でまだ動作することができる（許可された条件の外の）使用の例外条件を含む。
【００１７】
例えば、プログラムの使用の許可条件は、プログラムが動作することのできるワークステーションのＣＰＵの最大能力または作業メモリの最大容量、プログラムを同時に実行することができるエンドユーザの最大数などを定義する。さらに、発表者は、使用の実際の条件が許可された条件を事前設定した割合（１０％など）だけ超過したときでも、プログラムが動作することを例外的に可能にする。例えば１００ＭＩＰＳに等しいＣＰＵの最大能力でワークステーション上で動作するようにプログラムが許可される場合、ＣＰＵの能力が最大１１０ＭＩＰＳまで増加した場合でも、（使用の例外条件の下で）プログラムはまだ動作することができる。
【００１８】
各ライセンス証明書２２５は、発表者によって作成され、対応する秘密キーを使用して署名される。発表者に関連するデジタル・シグニチャおよびデジタル証明書は、ライセンス証明書２２５に付加される。次いで、ライセンス交付管理アプリケーション２２０は、ライセンス証明書２２５を妥当性検査するために、対応するデジタル証明書から発表者の公開キーを抽出し、デジタル・シグニチャを検証することができる。
【００１９】
（軽量）ライセンス交付システム・エージェント（ＳＡ）２３０は、クライアント・ワークステーション上のオペレーティング・システム２０５ｃのカーネルの一部である。システム・エージェント２３０により、ライセンス交付管理システムの（非常に小さく、明確なタスクからなる）基本オペレーションが提供される。システム・エージェント２３０は、クライアント・ワークステーションの構成に関する情報（ＣＰＵの能力、作業メモリの容量など）を格納する、カーネル内部のデータ構造（ＣＯＮＦ）２３３にアクセスする。構成情報２３３は、クライアント・ワークステーション上で動作するプログラムの実行環境を定義する。
【００２０】
全機能ライセンス交付エージェント（ＦＦＡ）２３５は、クライアント・ワークステーション上で一層アクティブなデーモン・プロセスであり、ライセンス交付管理システムの完全なオペレーションを提供する。全機能エージェント２３５は、（サーバ・ワークステーションとメッセージを交換するために）システム・エージェント２３０およびスタック２１５ｃと通信する。
【００２１】
システム・エージェント２３５は、ローカル・デジタル・ライセンス証明書（ＬＯＣ＿ＣＥＲＴ）２４０のリポジトリを制御する。各ローカル・ライセンス証明書２４０は、（サーバ・ワークステーション上に格納された）対応するライセンス証明書２２５の簡略化したコピーを含む。具体的には、ローカル・ライセンス証明書２４０は、単に、クライアント・ワークステーション上で動作することを許可された対応するプログラムの識別子からなる。システム・エージェント２３０は、さらに、基本プログラム（オペレーティング・システム２０５ｃおよびスタック２１５ｃ）から受信した、許可またはリリースの要求を格納するログ構造（ＬＯＧ）２４５を制御する。オペレーティング・システム２０５ｃ上で動作するアプリケーション・プログラム２５０は、さらに、許可またはリリースのそれぞれの要求を送信するために、システム・エージェント２３０と通信する。
【００２２】
プログラムおよびデータが異なる方式で構築される場合、他のモジュールまたは機能が提供される場合、異なる使用の条件が考えられる場合、プログラムが使用の許可条件の外で動作することができない場合、クライアント・ワークステーションについての基本サービスを提供する１つまたは複数の異なるプログラムが（オペレーティング・システム単体に）提供される場合などに、同様の考慮事項が当てはまる。
【００２３】
図３〜５に示されているように、共に方法３００を構成する一連のルーチンが、クライアント・ワークステーション上にインストールされたプログラムの使用を制御するために、時間的に連続するステージで実行される。方法３００は、ブロック３０３で開始し、次いでブロック３０６に進み、クライアント・ワークステーションがオンにされる。その結果、ＣＰＵは、（内部電源が安定化した後に）ＲＯＭメモリ中に格納された基本プログラムをロードする。基本プログラムは、インストールされたハードウェアのテストを実行し、クライアント・ワークステーションを初期化する。次いで基本プログラムは、オペレーティング・システムを開始するためのブート・コードを格納する周辺装置を識別する。このコードは基本プログラムを引き継ぎ、ブートストラップ・プロセスを開始する。ブートストラップは、クライアント・ワークステーションについての不可欠なサービスを提供するユーティリティをロードすることを含み、ユーティリティは、ブートストラップが進行するにつれて、オペレーティング・システムの残りのローティングおよび実行と、他の基本プログラム（ネットワーク・スタックなど）のローティングおよび実行とを制御する。
【００２４】
ブロック３０９に進むと、ライセンス交付管理システムのシステム・エージェントが、ブートストラップ中に（オペレーティング・システムのカーネルの一部として）ロードされる。ブロック３１１で、システム・エージェントは、（問題とする実施例中のオペレーティング・システムまたはネットワーク・スタックである）基本プログラムが開始したか、それともブートストラップ中に終了したかをチェックする。
【００２５】
システム・エージェントに対してアクションが通知されなかった場合、この方法は（以下で説明する）ブロック３１２に下る。逆に、基本的なプログラムが開始したとき、この基本的なプログラムは、（システム・エージェントが完了した後に）システム・エージェントに実行許可を要求する。その結果、ブロック３１８で、システム・エージェントは、ローカル・ライセンス証明書のリポジトリを検証する。基本プログラムについてのローカル・ライセンス証明書が見つかった（基本プログラムの実行が許可されていることを示す）場合、システム・エージェントは、ブロック３２１で基本プログラムの実行を可能にし、次いでブロック３２２で許可の要求を記録する。見つからなかった場合、基本プログラムの実行が打ち切られ、この方法は、ブロック３２４でエラー条件に入る（このエラー条件は、一般に後の分析のために記録される）。どちらの場合でも、この方法はブロック３１２に進む。基本プログラムがその実行を終了するとき（ブロック３１１）、基本プログラムは、それに応じて（終了する前に）システム・エージェントに通知する。その結果、システム・エージェントは、ブロック３２５で対応するリリースの要求を記録し、次いでブロック３１２に下る。
【００２６】
次にブロック３１２を考慮すると、ブートストラップが終了した後、全機能エージェントがロードされる。全機能エージェントのローディングが完了するとすぐに、それに応じてシステム・エージェントが通知される。システム・エージェントが全機能エージェントのローディングをまだ通知していない場合、この方法は、上述のステップを反復するためにブロック３１１に戻る。システム・エージェントが全機能エージェントのローディングを通知していた場合、この方法は、並列に実行される２つの分岐に分岐する。第１分岐は、ブロック３２７〜３３６からなり、第２分岐は、ブロック３４２〜３８４からなる。この２つの分岐はブロック３８７（以下で説明する）で接合する。
【００２７】
次にブロック３２７を考慮すると、システム・エージェントは、アプリケーション・プログラムが開始または終了したかどうかをチェックする。開始または終了した場合、システム・エージェントは、ブロック３３０で、全機能エージェントに対して、対応する許可またはリリースの要求を転送し、次いでこの方法は、ブロック３３３に進む。開始または終了しなかった場合、この方法は、直接ブロック３３３に下る。次にブロック３３３を考慮すると、システム・エージェントは、クライアント・ワークステーション上で動作する（基本およびアプリケーション）プログラムの実行環境を定義する構成情報の変化が生じたかどうかを検証する。変化が生じた場合、ブロック３３６で新しい構成情報が全機能エージェントに供給され、次いで、この方法はブロック３８７に進む。変化が生じなかった場合、この方法は直接ブロック３８７に下る。
【００２８】
同時に、ブロック３４２で、ブートストラップの間に格納された基本プログラムからの許可またはリリースの要求が、システム・エージェントによってログ構造から抽出され、全機能エージェントに供給される。このようにして得られた要求は、対応する実行環境を定義する構成情報と共に、ブロック３４３で（それぞれのネットワーク・スタックを介して）サーバ・ワークステーションに送信される。ブロック３４５に進むと、サーバ・ワークステーション上のライセンス交付管理アプリケーションが、それぞれのライセンス証明書中に含まれる使用の許可条件で、各要求の適合を検証する。基本プログラムにマッチするライセンス証明書が見つかり、かつ基本プログラムが発表者によって許可された使用の条件内で動作している場合（例えば、ＣＰＵの能力が可能な最大値を超えていない場合）、（システム・エージェントによって以前に与された）許可がブロック３４８で確認される。そうでない場合、この方法は、ブロック３５１でエラー条件に入る（このエラー条件は後の分析のために記録される）。どちらの場合でも、対応する応答メッセージが、全機能エージェントに送信される。一般に、応答メッセージは、許可が授与されたか、それとも拒否されたかを指定するリターン・コードを含み、後者の場合にはその拒否の理由を含む。さらに、ステータス・コードは、授与された許可が使用の（標準）条件内にあるか、それとも使用の例外条件内にあるかをさらに指定し、または拒否の理由をより詳細にさらに指定する。
【００２９】
次いでこの方法は、（ブロック３４８およびブロック３５１の両方から）ブロック３５４に入り、基本プログラムについてのローカル・ライセンス証明書の新しいバージョンが、サーバ・ワークステーション上に格納されたそれぞれのライセンス証明書から生成される。ローカル・ライセンス証明書の新しいバージョンは、ライセンス交付管理アプリケーションから、クライアント・ワークステーション上の全機能エージェントに送信される。全機能エージェントは、それに応じて、システム・エージェントにローカル・ライセンス証明書のリポジトリを更新させる。
【００３０】
次いでこの方法はブロック３５７に下り、リリースの許可の要求がアプリケーション・プログラムによって（システム・エージェントを介して）要求されたかどうかを、全機能エージェントがチェックする。要求されなかった場合、この方法はブロック３６０（以下で説明する）に進む。要求された場合、この要求は、対応するライセンス交付情報を更新するために、ブロック３６３でサーバ・ワークステーションに送信される。ブロック３６６に進むと、アプリケーション・プログラムが要求した実行許可を有する場合、ライセンス交付管理アプリケーションは、それぞれのライセンス証明書中に含まれる使用の許可条件で、要求の適合を検証する。検証の結果が肯定的である場合、許可がブロック３６９で授与される。検証の結果が否定的である場合、この方法はブロック３７２でエラー条件に入る。どちらの場合でも、対応する応答メッセージ（リターン・コードおよびステータス・コード）が全機能エージェントに送信される。この応答メッセージはシステム・エージェントに送信され、次いで許可を要求するアプリケーション・プログラムに返され、それに応じてアプリケーション・プログラムはその実行を続行または打ち切る。
【００３１】
この方法は、（ブロック３６９およびブロック３７２の両方から）ブロック３６０に進み、新しい構成がシステム・エージェントから受信されたかどうかを、全機能エージェントが検証する。新しい構成情報が受信されなかった場合、この方法は直接ブロック３８７に下る。新しい構成情報が受信された場合、この新しい構成情報が、ブロック３７５でサーバ・ワークステーションに送信される。ブロック３７８に進むと、ライセンス交付管理アプリケーションは、新しい構成情報に照らして授与した各許可を改訂する。各（基本およびアプリケーション）プログラムの実行が、まだそれぞれのライセンス証明書中に含まれる使用の許可条件を満たしている場合、この許可はブロック３８１で確認される。満たしていない場合、この方法はブロック３８４でエラー条件に入る。どちらの場合でも、対応する応答メッセージが全機能エージェントに送信され、この方法はブロック３８７に進む。
【００３２】
次にブロック３８７を考慮すると、クライアント・ワークステーションがシャットダウンされたかどうかのチェックが行われる。シャットダウンされていない場合、この方法は（上述のステップを反復するために）ブロック３１２の後ろの分岐点に戻る。シャットダウンされた場合、この方法は最終ブロック３９０で終了する。
【００３３】
例えば（クライアント・ワークステーションがオフの位置からオンにされる）コールド・ブートストラップの代わりに、（クライアント・ワークステーションがリセットされる）ウォーム・ブートストラップを用いて等価な方法が実行される場合、エラーが発生したときにプログラムの実行が動作不能にされる場合、応答メッセージが異なる構造を有する場合などに、同様の考慮事項が当てはまる。
【００３４】
より一般には、本発明は、コンピュータについての基本サービスを提供する１つまたは複数のソフトウェア・プログラムをロードすることに関係するブートストラップを開始するステップと、ライセンス交付管理システムに対して、各プログラムによって実行許可を要求するステップとを含む、コンピュータ上のソフトウェア・プログラムの使用を制御する方法を提供する。この方法は、ブートストラップの完了前に、プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って許可を授与し、ブートストラップの完了後に、ライセンス交付情報の完全な検証に従って授与した許可を改訂するステップをさらに含む。
【００３５】
本発明の解決策により、コンピュータ上で動作するプログラムの完全な制御を実装することが可能となる。
【００３６】
具体的には、提案の方法により、ブートストラップ・プロセスの間にロードされるプログラム（オペレーティング・システムおよびネットワーク・スタックなど）の（ライセンス交付管理システムによる）効果的な監視が可能となる。実際、上述の解決策では、プログラムの使用は、オペレーティング・システムの全機能が利用可能となる前でも制御することができる。
【００３７】
本発明による解決策により、発表者は自身の知的所有権を効果的に保護することが可能となる。実際、基本プログラムおよびアプリケーション・プログラムの両方の、どんな不明な使用も防止され、使用料の未払いによるどんな経済的損失も回避される。あるいは、このように収集された情報は、顧客によって行われるプログラムの実際の使用を記録するだけのために、発表者によって利用される。例えば、マーケティングまたは統計的応用のために、この情報を有利に使用することができる。
【００３８】
上述の本発明の好ましい実施形態は、別の利点も提供する。例えば、システム・エージェントおよび（対応するログ構造を有する）全機能エージェントの提供により、非常に単純にライセンス交付管理システムが実装される。このように、本発明のプロセスは、それぞれの実行許可をライセンス交付管理システムに要求する（基本およびアプリケーション）プログラムに対して完全に透過である。さらに、軽量エージェントのローディングの完了まで許可の要求を延期する機能により、ブートストラップの間の非常に初期に開始するプログラムも監視することが可能となる。具体的には、この解決策により、オペレーティング・システムのカーネル自体の使用を制御することが可能となる。
【００３９】
ライセンス交付管理システムが等価な基本モジュールおよび全モジュールに区分される場合、（基本プログラムからの）格納された許可またはリリースの要求が全機能エージェントに対して異なる方式で提供される場合（例えば、ログ構造から直接抽出される場合）、許可の要求だけが記録される場合（例えば、ブートストラップの完了前には基本プログラムを終了することができない場合）、後に許可が基本プログラムからシステム・エージェントに対して要求される場合などに、同様の考慮事項が当てはまる。しかし、本発明の解決策は、（ライセンス証明書の仮検証および完全検証のどちらも実行する）単一モジュールからなるライセンス交付管理システムの場合でも、または後の検証のために、システム・エージェントのローディングの前に要求される各許可を記録することによっても実装される。
【００４０】
本発明の解決策は、クライアント・ワークステーション上で動作するプログラムについてのライセンス証明書がサーバ・ワークステーション上に格納されるネットワーキング・システムで特に有利である。このように、ネットワーク・スタックによって提供される通信機能が利用可能となる前であっても、プログラムの使用を制御することができる。好ましくは、この許可は、クライアント・ワークステーション上に格納される、それぞれのローカル・ライセンス証明書の検証に従って授与される。この機能により、要求の検証が特に単純かつ高速になる（かつ、次いでブートストラップ中の実行に適するようになる）。さらに、ローカル・ライセンス証明書は、各ブートストラップの後に、（サーバ・ワークステーションから受信する）それぞれの新しいバージョンで継続的に置換される。これにより、クライアント・ワークステーション上に格納されたローカル・ライセンス証明書が、可能な範囲で常に最新となる。
【００４１】
クライアント・ワークステーションおよびサーバ・ワークステーションが異なる方式で通信する場合、異なるタイプのコンピュータを使用する場合、ライセンス証明書およびローカル・ライセンス証明書が異なる情報を含む場合（例えば有効期限）、ローカル・ライセンス証明書が異なる頻度で更新される場合（例えば２回または３回のブートストラップごとに、あるいは周期的に）などに、同様の考慮事項が当てはまる。
【００４２】
あるいは、ライセンス証明書およびローカル・ライセンス証明書が、プログラムの使用の許可条件を示す等価なライセンス交付情報によって置換され、許可が、ライセンス交付情報の異なる仮検証に従って授与され、ライセンス交付情報の異なる完全な検証に従って改訂される。しかし、本発明の方法は、ローカル・ライセンス証明書を更新することなく、かつローカル・ライセンス証明書なしに（例えば、ブートストラップの完了前にコンピュータ上のライセンス証明書の存在を単にチェックし、ブートストラップの完了の後に許可条件を検証することによって）単一コンピュータ中でも使用される。
【００４３】
好ましくは、プログラムの実行環境のどんな変化も検出する目的で、プログラムが動作しているクライアント・ワークステーションのオペレーションが監視される。この情報が使用されて、それに応じて授与された許可が改訂される。このように、プログラムの使用を動的に追跡することが可能となる。例えば、クライアント・ワークステーションにより、オペレーションの間にＣＰＵの能力を変更することができる場合、考案の解決策により、ライセンス交付情報をプログラムの使用の実際の条件と常に完全に整合させることが可能となる。
【００４４】
異なる構成パラメータを考慮する場合、クライアント・ワークステーションのオペレーションが異なる方式で（例えば専用の別のエージェントで）監視される場合、授与された許可が異なる頻度で更新される場合（例えば周期的に）などに、同様の考慮事項が当てはまる。しかし、本発明の解決策は、プログラムの実行環境を監視しない場合でも実装される。
【００４５】
有利には、本発明によって提案される方法は、ＣＤ−ＲＯＭ上で提供されるコンピュータ・プログラムで実装される。
【００４６】
あるいは、このプログラムは、フロッピー（Ｒ）・ディスク上で提供され、ハードディスク上に事前ロードされ、または他のコンピュータ可読媒体上に格納され、ネットワークを介してコンピュータに送信され、同報通信され、あるいはより一般には、コンピュータの作業メモリ中に直接ロード可能な任意の他の形態で提供される。しかし、本発明による方法は、例えば半導体材料のチップ中に集積された、クライアント・ワークステーション上に設置されたハードウェア構造でも実施される。
【００４７】
上述のライセンス交付情報の仮検証または完全検証を用いない場合であっても、コンピュータの監視オペレーションの追加の機能は、（単独の、または他の追加の機能と組み合わせた）使用に適することを留意されたい。
【００４８】
より一般には、本発明は、ライセンス交付管理システムに対して各プログラムによって実行許可を要求するステップと、プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って許可を授与するステップとを含む、コンピュータ上のソフトウェア・プログラムの使用を制御する方法をさらに提供する。この方法は、プログラムの実行環境の変化を検出するために、コンピュータのオペレーションを監視するステップと、その検出した変化に従って授与された許可を改訂するステップとをさらに含む。
【００４９】
例えば、基本プログラム（オペレーティング・システムなど）の使用を制御することを許可しないライセンス交付管理システムでは、この機能を利用して、アプリケーション・プログラムの使用を動的に追跡することが有利である。
【００５０】
もちろん、局所要件および特定の要件を満たすために、当業者は上述の解決策を多くの修正形態および変更形態に応用することができるが、そのすべては、頭記の特許請求の範囲で定義される本発明の保護の範囲内に含まれている。
【００５１】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５２】
（１）コンピュータ上のソフトウェア・プログラムの使用を制御する方法（３００）であって、
前記コンピュータに対して基本サービスを提供する少なくとも１つのソフトウェア・プログラムをロードすることに関係するブートストラップを開始するステップ（３０６）と、
ライセンス交付管理システムに対して各プログラムによって実行許可を要求するステップ（３１１）とを含み、
前記ブートストラップの完了前に、前記プログラムの使用の許可条件を示すライセンス交付情報の仮検証に従って前記許可を授与するステップ（３１８〜３２４）と、
前記ブートストラップ完了後に、前記ライセンス交付情報の完全な検証に従って前記授与した許可を改訂するステップ（３４２〜３５１）とを特徴とする方法。
（２）前記ブートストラップの完了前に、前記ライセンス交付管理システムの基本モジュールをロードするステップ（３０９）であって、各許可が、前記基本モジュールに対して要求され、前記基本モジュールによって授与されるステップと、
許可の各要求を記録するステップ（３２２）と、
前記ブートストラップ完了後に、前記ライセンス交付管理システムの全モジュールをロードするステップ（３１２）と、
前記対応する授与された許可を改訂するために、記録した各要求を前記全モジュールに供給するステップ（３４２）とをさらに含む上記（１）に記載の方法（３００）。
（３）前記許可を要求するステップ（３１１）が、前記基本モジュールの前記ローディングが完了するまで延期される上記（２）に記載の方法（３００）。
（４）前記授与された許可を改訂する前記ステップ（３４２〜３５１）が、
前記対応するライセンス情報を含む、各プログラムについてのデジタル・ライセンス証明書を格納する別のコンピュータに、前記要求を示すメッセージを送信するステップ（３４３）と、
前記対応するライセンス証明書で、前記要求の適合を検証するステップ（３４５〜３５１）とを含む上記（２）または（３）に記載の方法（３００）。
（５）前記許可を授与する前記ステップが、前記コンピュータ上に格納され、前記対応するライセンス証明書の簡略化したコピーを含むローカル・デジタル・ライセンス証明書を検証するステップ（３１８〜３２４）を含む上記（４）に記載の方法（３００）。
（６）前記ブートストラップの後に、前記別のコンピュータから受信するその新しいバージョンに従って各ローカル・ライセンス証明書を更新するステップ（３５４）をさらに含む上記（５）に記載の方法（３００）。
（７）各プログラムの実行環境の変化を検出するために、前記コンピュータのオペレーションを監視するステップ（３３３）と、
前記検出した変化に従って前記対応する授与された許可を改訂するステップ（３３６、３６０〜３８４）とをさらに含む上記（１）ないし（６）に記載の方法（３００）。
（８）コンピュータ上で動作するときに上記（１）ないし（７）のいずれかの前記方法を実行するための、前記コンピュータ（１０５）の作業メモリ（１３０ｃ）中に直接ロード可能なコンピュータ・プログラム（２３０、２３５）。
（９）上記（８）のプログラム（２３０、２３５）が格納されるコンピュータ可読記録媒体（１５０）。
（１０）コンピュータ上のソフトウェア・プログラムの使用を制御する方法（３００）であって、
ライセンス交付管理システムに対して、各プログラムによって実行許可を要求するステップ（３１１；３２７）と、
前記プログラムの使用の許可条件を示すライセンス交付情報の検証に従って前記許可を授与するステップ（３１８〜３２１、３４２〜３５１；３３０、３５７〜３７２）とを含み、
前記コンピュータの実行環境での変化を検出するために、前記コンピュータのオペレーションを監視するステップ（３３３）と、
前記検出した変化に従って前記授与された許可を改訂するステップ（３３６、３６０〜３８４）とを特徴とする方法。
（１１）コンピュータ上で動作するときに上記（１０）の前記方法を実行するための、前記コンピュータ（１０５）の作業メモリ（１３０ｃ）中に直接ロード可能なコンピュータ・プログラム（２３０、２３５）。
（１２）上記（１１）のプログラム（２３０、２３５）が格納されるコンピュータ可読記録媒体（１５０）。
（１３）ライセンス交付管理システム（２３０、２３５）と、コンピュータ（１０５）に対して基本サービスを提供する少なくとも１つのソフトウェア・プログラム（２０５ｃ、２１５ｃ）のローディングに関係するブートストラップを開始するための手段（１３５）とを含む前記コンピュータ上のソフトウェア・プログラムの使用を制御するためのシステム（１００）において、各プログラムが、前記ライセンス交付管理システムに対して実行許可を要求するシステムであって、前記ライセンス交付システムが、前記ブートストラップの完了前に、プログラムの使用の許可条件を示すライセンス交付情報（２４０）の仮検証に従って前記許可を授与するための手段（２３０）と、前記ブートストラップの完了後に、ライセンス交付情報（２２５）の完全な検証に従って前記授与した許可を改訂するための手段（２３５）とを含むことを特徴とするシステム。
（１４）ライセンス交付管理システム（２３０、２３５）を含むコンピュータ（１０５）上のソフトウェア・プログラム（２０５ｃ、２１５ｃ、２５０）の使用を制御するシステム（１００）において、各プログラムが、前記ライセンス交付管理システムに対して実行許可を要求し、前記ライセンス交付管理システムが、ライセンス交付情報（２２５、２４０）の検証に従って許可を授与するシステムであって、前記プログラムの実行環境の変化を検出するために、コンピュータのオペレーションを監視するための手段（２３０、２３３）をさらに含み、前記ライセンス交付管理システムが、前記検出した変化に従って前記授与した許可を改訂することを特徴とするシステム。
【図面の簡単な説明】
【図１】本発明の方法を使用することができるネットワーキング・システムの基本ブロック図である。
【図２】ネットワーキング・システム中に含まれるクライアント・ワークステーションおよびサーバ・ワークステーションの作業メモリの部分的な内容である。
【図３】クライアント・ワークステーション上でソフトウェア・プログラムの使用を制御するための方法の流れ図である。
【図４】クライアント・ワークステーション上でソフトウェア・プログラムの使用を制御するための方法の流れ図である。
【図５】クライアント・ワークステーション上でソフトウェア・プログラムの使用を制御するための方法の流れ図である。
【符号の説明】
１００  ネットワーキング・システム
１０５  ワークステーション
１１５  通信ケーブル
１２０  通信バス
１２５  中央演算処理装置（ＣＰＵ）
１３０  作業メモリ
１３５  読取り専用メモリ（ＲＯＭ）
１４０  ハードディスク
１４５  ドライバ・ユニット（ＤＲＶ）
１５０  ＣＤ−ＲＯＭ
１５５  入力ユニット（ＩＮ）
１６０  出力ユニット（ＯＵＴ）
１６５  ネットワーク・インターフェース・カード（ＮＩＣ）
１３０ｃ  作業メモリ
１３０ｓ  作業メモリ
２０５ｃ  オペレーティング・システム（ＯＳ）
２０５ｓ  オペレーティング・システム（ＯＳ）
２１５ｃ  スタック
２１５ｓ  スタック
２２０  ライセンス交付管理アプリケーション（ＬＭＡ）
２２５  ライセンス証明書
２３０  ライセンス交付システム・エージェント（ＳＡ）
２３３  データ構造（ＣＯＮＦ）
２３５  全機能ライセンス交付エージェント（ＦＦＡ）
２４０  ローカル・ライセンス証明書
２４５  ログ構造（ＬＯＧ）
２５０  アプリケーション・プログラム
【図１】
0003695652.tif 000002
【図２】
0003695652.tif 000003
【図３】
0003695652.tif 000004
【図４】
0003695652.tif 000005
【図５】
0003695652.tif 000006