(57)【要約】【課題】一括使用許諾環境において、ソフトウェアの盗用を躊躇させる方法およびコンピュータ読み取り可能媒体を提供する。【解決手段】活性化迂回メッセージを発生して送る。活性化迂回メッセージに収容されているメッセージを、機械識別子のリストと比較する。拘束サービス・メッセージは、リストにおける機械識別子のカウントを収容する。一旦カウントが所定のしきい値に達したなら、ソフトウェア活性化迂回を行うことができる。【選択図】図２
2009509239.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を有するコンピュータ読み取り可能媒体であって、前記コンピュータ実行可能命令が、
活性化迂回メッセージを発生するステップであって、前記活性化迂回メッセージが、機械識別子と、活性化迂回を行うソフトウェア・アプリケーションと関連のあるソフトウェア識別子とを備えた、ステップと、
前記活性化迂回メッセージを拘束サービス機械に送るステップと、
前記拘束サービス機械から、機械カウントを備えた拘束サービス・メッセージを受信するステップと、
前記機械カウントを所定のカウントと比較するステップと、
前記機械カウントが前記所定のカウント以上である場合、前記ソフトウェア・アプリケーションに対する活性化迂回を許可するステップと、
を実行する、コンピュータ読み取り可能媒体。
【請求項２】
請求項１記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、更に、前記活性化迂回メッセージが発生された時刻を示すタイムスタンプを備えた、コンピュータ読み取り可能媒体。
【請求項３】
請求項１記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、コンピュータ・ネットワークを通じて送られ、前記機械カウントは、前記ネットワーク上において少なくとも１つの活性化迂回メッセージを前記拘束サービスに送ったことのある機械の数に対応する、コンピュータ読み取り可能媒体。
【請求項４】
請求項３記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、前記ソフトウェア・アプリケーションの活性化を迂回しようとする機械が前記コンピュータ・ネットワークにログインするときに送られる、コンピュータ読み取り可能媒体。
【請求項５】
請求項４記載のコンピュータ読み取り可能媒体において、前記機械識別子は、前記ソフトウェア・アプリケーションの活性化を迂回しようとする機械のハードウェア属性から導出する、コンピュータ読み取り可能媒体。
【請求項６】
請求項１記載のコンピュータ読み取り可能媒体において、前記所定のカウントは、前記ソフトウェア・アプリケーションと関連のあるポリシによって定義する、コンピュータ読み取り可能媒体。
【請求項７】
請求項６記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、更に、ポリシを備えた、コンピュータ読み取り可能媒体。
【請求項８】
請求項６記載のコンピュータ読み取り可能媒体において、前記ポリシは、前記ソフトウェア・アプリケーションと関連のある署名付き拡張可能権利マークアップ言語ファイルの一部として格納する、コンピュータ読み取り可能媒体。
【請求項９】
請求項８記載のコンピュータ読み取り可能媒体において、前記発生するステップおよび送るステップは、所定の間隔で繰り返す、コンピュータ読み取り可能媒体。
【請求項１０】
請求項１記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、更に、第１メッセージ認証コードを備えており、前記拘束サービス・メッセージは、更に、第２メッセージ認証コードを備えており、更に、前記第２認証コードを用いて前記拘束サービス・メッセージを認証するステップを備えた、コンピュータ読み取り可能媒体。
【請求項１１】
コンピュータ実行可能命令を有するコンピュータ読み取り可能媒体であって、前記コンピュータ実行可能命令が、
クライアント機械から活性化迂回メッセージを受信するステップであって、該活性化迂回メッセージが、クライアント機械識別子と、迂回させようとする活性化要件を有するソフトウェア・アプリケーションと関連のあるソフトウェア識別子とを備えた、ステップと、
前記受信したクライアント機械識別子が、機械識別子のリストの中にあるか否か判断するステップと、
前記受信したクライアント機械識別子が前記機械識別子のリストの中にない場合、前記受信したクライアント機械識別子を前記リストに追加するステップと、
前記リスト内にある機械識別子の数を判定するステップと、
拘束サービス・メッセージを送るステップであって、該拘束サービス・メッセージが、一意の機械識別子の数を備えた、ステップと、
を実行する、コンピュータ読み取り可能媒体。
【請求項１２】
請求項１１記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、更に、第１メッセージ認証コードを備えており、前記拘束サービス・メッセージは、更に、第２メッセージ認証コードを備えており、更に、前記第２認証コードを用いて前記拘束サービス・メッセージを認証するステップを備えた、コンピュータ読み取り可能媒体。
【請求項１３】
請求項１１記載のコンピュータ読み取り可能媒体であって、更に、所定時間の後、前記受信したクライアント識別子を前記リストから削除するステップを備えた、コンピュータ読み取り可能媒体。
【請求項１４】
請求項１１記載のコンピュータ読み取り可能媒体において、前記クライアント機械識別子は、前記クライアント機械のハードウェア属性から導出する、コンピュータ読み取り可能媒体。
【請求項１５】
請求項１１記載のコンピュータ読み取り可能媒体において、前記活性化迂回メッセージは、更に、前記クライアント機械が前記活性化迂回メッセージを発生した時刻を示すタイムスタンプを備えた、コンピュータ読み取り可能媒体。
【請求項１６】
請求項１５記載のコンピュータ読み取り可能媒体において、前記機械識別子のリストにおける各機械識別子は、前記機械識別子および関連するタイムスタンプを備えたエントリとして表される、コンピュータ読み取り可能媒体。
【請求項１７】
請求項１６記載のコンピュータ読み取り可能媒体であって、更に、前記受信したクライアント機械識別子が前記機械識別子エントリのリストの中にある場合、前記エントリを、最新のタイムスタンプと関連付けられた機械識別子に対応するエントリで更新又は置き換えるステップを備えた、コンピュータ読み取り可能媒体。
【請求項１８】
一括使用許諾環境において盗用を躊躇させる方法であって、
クライアント機械において活性化迂回メッセージを発生するステップであって、前記活性化迂回メッセージが、機械識別子と、活性化を迂回させようとするソフトウェア・アプリケーションと関連のあるソフトウェア識別子とを備えた、ステップと、
前記活性化迂回メッセージを拘束サービス機械に送るステップと、
前記拘束サービス機械において、前記受信したクライアント機械識別子が機械識別子のリストの中にあるか否か判断するステップと、
前記受信したクライアント機械識別子が前記機械識別子のリストの中にない場合、前記拘束サービス機械において、前記受信したクライアント機械識別子を前記リストに追加するステップと、
前記拘束サービス機械において、前記リスト内にある機械識別子の数を判定するステップと、
拘束サービス・メッセージを前記クライアント機械に送るステップであって、前記拘束サービス・メッセージが、一意の機械識別子の数を備えた、ステップと、
前記クライアント機械において、前記機械カウントを所定のカウントと比較するステップと、
前記機械カウントが前記所定のカウント以上である場合、前記ソフトウェア・アプリケーションに対する活性化迂回を許可するステップと、
を備えた、方法。
【請求項１９】
請求項１８記載のコンピュータ読み取り可能媒体であって、更に、前記拘束サービス機械において、所定の時間の後前記受信したクライアント識別子を前記リストから削除し、前記クライアント機械において、前記発生するステップおよび前記送るステップを所定の間隔で繰り返すステップを備えた、コンピュータ読み取り可能媒体。
【請求項２０】
請求項１８記載の方法において、前記活性化迂回メッセージは、更に、前記活性化迂回メッセージは、更に、第１メッセージ認証コードを備えており、前記拘束サービス・メッセージは、更に、第２メッセージ認証コードを備えており、更に前記拘束サービス機械において前記第１認証コードを使用して前記活性化迂回メッセージを認証するステップと、前記クライアント機械において、前記第２認証コードを用いて前記拘束サービス・メッセージを認証するステップを備えた、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ソフトウェアの盗用は、世界規模の問題であり、このためにソフトウェア・ベンダには毎年多額の費用がかかっている。日常的なコピーとして知られる、盗用の一形態は、エンド・ユーザの使用許諾契約を破って、多数のコンピュータ上でソフトウェアを共有しインストールすることである。製品活性化(product activation)は、この種の盗用を減少させる１つの方法である。
【背景技術】
【０００２】
製品活性化は、通常、インストール識別コードおよび／またはハードウェア識別子のソフトウェア・ベンダへの提出を拠り所とする。ソフトウェア・ベンダは、応答して、活性化確認コードを返送する。製品活性化の典型的な小売りでの応用では、一意の製品鍵が、箱詰めされたソフトウェアの各パッケージに設けられている。通例、ある程度の据置期間の間またはその後に（ソフトウェアのインストール後に、活性化することなく、当該ソフトウェアが走る時間期間）、顧客は、ソフトウェア・ベンダと連絡を取り、彼または彼女のソフトウェア・コピーを活性化しなければならない。これを行うのを怠った場合、ソフトウェアの不活性化、またはソフトウェアの機能低下に至ることが多い。通例、一意の製品鍵を用いて、一意の製品識別コードを発生し、これにハッシュ・ハードウェア関係値を組み合わせて、ソフトウェアが走る機械に特定したインストール識別コードを発生することもできる。ソフトウェアが走ることを可能にする活性化確認が、通例、顧客に返送される。これに関して、活性化確認は、使用許諾ファイル、または使用許諾を表す二進値とすることもできる。ログイン毎に、使用許諾されたソフトウェアは、それが活性化されたのと本質的に同じハードウェア上で走っていることを確かめるためにチェックする。チェックの結果確かめられない場合、ソフトウェアが再度走る前に、再活性化を要求する。
【０００３】
法人顧客は、通常、一括使用許諾を購入する。何故なら、法人顧客はそれらのドメイン内に数百または数千もの機械を有する場合があり、機械に特定した活性化コードを、インストールしたソフトウェア・コピー毎に受け取るためにソフトウェア・ベンダに連絡することは現実的でないからである。したがって、一括使用許諾の保持者は、彼らのソフトウェアを活性化するためにソフトウェア・ベンダに連絡する必要がないのが通例である。何故なら、一括使用許諾鍵を検出したときに、ソフトウェアは活性化要求を迂回するからである。これは、「製品活性化迂回」として知られている。したがって、同じ一括使用許諾鍵を、多数の異なるコンピュータ上で使用することができ、これらのコンピュータのいずれもが、据置期間が満了する前または後に、ソフトウェアが走るための活性化を必要としない。この機構は、法人顧客がソフトウェアをインストールする際に、一括使用許諾鍵を一層便利にするが、盗用にとっても魅力的な目標となる。例えば、侵害者が正当な一括使用許諾媒体を入手し、有効な使用許諾製品鍵を購入するまたは盗む。媒体および製品鍵は、「業務−消費者間」抜け道チャネル盗用("business to consumer" channel piracy)として知られる枠組みにおいて、再度標的とされ(repurposed)、怪しまない顧客に販売される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
このため、正当な顧客に厄介な盗用防止要件の負担を不当に負わせることなく、ネットワーク型計算環境において盗用を躊躇させるメカニズムが求められている。本発明はこの要望を満たす。
【課題を解決するための手段】
【０００５】
以上の欠点および欠陥に鑑み、一実施形態では、ソフトウェア活性化迂回メカニズムを一括使用許諾環境に組み入れる。このような実施形態によれば、ソフトウェア・アプリケーションの適正な活性化迂回が行われるために、顧客のネットワーク上になければならない機械の最小数を指定するポリシ(policy)を、ソフトウェア・アプリケーションに規定する。ネットワーク内にある１つのコンピュータを、拘束サービス機械に指定し、ソフトウェア・アプリケーションをインストールしようとする他のコンピュータは、クライアントである。ある時点において、各クライアントはソフトウェアの活性化迂回を実行しようとする。こうするために、クライアントは、機械識別子、タイムスタンプ、およびソフトウェア・アプリケーションに関する情報を収容する活性化迂回メッセージを発生し、このメッセージを拘束サービス機械に送る。
【０００６】
活性化迂回メッセージの受信時に、拘束サービス機械は、機械識別子を、このような受信した機械識別子全てのリストを収容するトラスト・ストア(trust store)と突き合わせてチェックする。機械識別子がトラスト・ストアの中にない場合、それを追加する。拘束サービス機械は、トラスト・ストアにおける一意の機械識別子の数をカウントし、このカウントを拘束サービス・メッセージに入力して、クライアントに送る。拘束サービス・メッセージを受信すると、クライアントは、カウントがポリシを満たすか否か判断し、満たしている場合、機械はソフトウェアを活性化することができる。
【０００７】
この摘要は、詳細な説明において以下で更に説明する概念を選択し、簡略化した形態で紹介するために設けたのである。この摘要は、特許請求する主題の鍵となる特徴、即ち、なくてはならない特徴を特定することを意図しているのではなく、特許請求する主題の範囲を判定する際の補助として用いられることも意図しているのではない。
【０００８】
前述の摘要、および以下の好適な実施形態の詳細な説明は、添付図面と合わせて読むと一層良く理解できる。本発明を例示する目的のために、図面には発明の構成例を示すが、本発明は図面に開示する特定の方法や手段に限定されるのではない。
【発明を実施するための最良の形態】
【０００９】
（全体像）
一実施形態では、ソフトウェア活性化迂回メカニズムを一括使用許諾環境に組み入れる。活性化迂回メカニズムは、顧客にソフトウェア・ベンダに連絡することを要求しない。このような実施形態によれば、ソフトウェア・アプリケーションにポリシ(policy)を設ける。ポリシは、ソフトウェア・アプリケーションの適正な活性化迂回が行われるために、顧客のネットワーク上になければならない機械の最小数を指定する。ネットワーク内にある１つのコンピュータを、拘束サービス機械(binding service machine)に指定する。ソフトウェア・アプリケーションをインストールしようとする他のコンピュータは、クライアントである。各コンピュータ上にソフトウェア・アプリケーションのコピーをインストールし（即ち、例えば、拘束サービス機械およびクライアント）、ある時点（例えば、ログオン）において、各クライアントはソフトウェアの活性化迂回を実行しようとする。こうするために、クライアントは、機械識別子、タイムスタンプ、およびソフトウェア・アプリケーションに関する情報を収容する活性化迂回メッセージを発生し、このメッセージを拘束サービス機械に送る。
【００１０】
活性化迂回メッセージの受信時に、拘束サービス機械は、機械識別子を、このような受信した機械識別子全てのリストを収容するトラスト・ストア(trust store)と突き合わせてチェックする。機械識別子がトラスト・ストアの中にない場合、それを追加する。拘束サービス機械は、信頼ストらにおける一意の機械識別子の数をカウントし、このカウントを拘束サービス・メッセージに入力して、クライアントに送る。拘束サービス・メッセージを受信すると、クライアントは、カウントがポリシを満たすか否か（即ち、最小数の機械が満たされているか否か）判断する。満たしている場合、機械はソフトウェアの活性化迂回を可能にすることができる。そうでない場合、ソフトウェアはインアクティブのままであり、該当するのであれば、「据置」期間において動作し続ける。
【００１１】
本発明の主題は、法的要件を満たすように、特定的に説明する。しかしながら、説明自体は本特許の範囲を限定することを意図している訳ではない。逆に、発明者は、特許請求する主題は、他のやり方で具体化してもよく、本文書に記載されているステップまたは要素とは異なるものまたは同様のものも、その他の現状の技術および今後の技術と合わせて、含まれることを想定している。更に、ここでは、採用する方法の異なる形態を内包するために「ステップ」(step)という用語を用いる場合があるが、この用語は、個々のステップの順序が明示的に記載されていない限り、この中に開示する種々のステップ間においていかなる特定の順序をも暗示するような解釈はしてはならない。
【００１２】
（計算環境例）
図１は、本発明を実施することができる、適した計算システム環境１００の一例を示す。 計算システム環境１００は、適した計算機環境の一例に過ぎず、本発明の使用範囲や機能について限定を示唆する意図は全くない。また、計算機環境１００は、動作環境例１００に示す構成要素のいずれの１つまたは組み合わせに関しても、何らかの依存性や必須要件を有するという解釈は行わないこととする。
【００１３】
本発明は、多数のその他の汎用または特殊目的計算システム環境または構成も用いることができる。本発明と共に用いるのに適していると言える周知の計算システム、環境、および／または構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンド・ヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサに基づくシステム、セット・トップ・ボックス、プログラマブル消費者用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、前述のシステムまたはデバイスのいずれをも含む分散型計算機環境等が含まれる。
【００１４】
本発明は、コンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令に関して総合的に説明する。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実現する。通例、プログラム・モジュールの機能は、種々の実施形態において所望通りに、組み合わせることまたは分散することができる。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算環境では、プログラム・モジュールは、メモリ記憶装置を含むローカルおよびリモート・コンピュータ記憶媒体双方に配することができる。
【００１５】
図１を参照すると、本発明を実施するシステム例１００は、コンピュータ１１０の形態とした汎用計算機を含む。コンピュータ１１０の構成要素は、限定ではなく、演算装置１２０、システム・メモリ１３０、およびシステム・バス１２１を含むことができる。システム・バス１２１は、システム・メモリを含む種々のシステム構成要素を演算装置１２０に結合する。システム・バス１２１は、数種類のバス構造のいずれでもよく、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス構造のいずれかを用いるローカル・バスを含む。限定ではなく一例として、このような構造には、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、改良ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格連合（ＶＥＳＡ）ローカル・バス、およびMezzanine バスとしても知られている周辺素子相互接続（ＰＣＩ）バスが含まれる。
【００１６】
コンピュータ１１０は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。限定ではない一例をあげると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体から成ると考えられる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル・ビデオ・ディスク（ＤＶＤ）またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピュータ１１０がアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波またはその他の移送機構のような変調データ信号において具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、その特性集合の１つ以上が、情報を信号内にエンコードするようなやり方で、変化している信号を意味する。限定ではなく、一例として、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、ＲＦ、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。前述のいずれの組み合わせも、コンピュータ読み取り可能媒体の範囲に当然含まれるものとする。
【００１７】
システム・メモリ１３０は、リード・オンリ・メモリ（ＲＯＭ）１３１およびランダム・アクセス・メモリ（ＲＡＭ）１３２のような揮発性および／または不揮発性メモリの形態で、コンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、起動中のように、コンピュータ１１０内の要素間におけるデータ転送を補助する基本的なルーチンを含み、通例ＲＯＭ１３１内に格納されている。ＲＡＭ１３２は、通例、演算装置１２０が直ちにアクセス可能であるデータおよび／またはプログラム・モジュール、または現在これによって処理されているデータおよび／またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７を示す。
【００１８】
また、コンピュータ１１０は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例としてのみ、図１は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ１４１、リムーバブル不揮発性磁気ディスク１５２からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ１５１、ならびにＣＤ  ＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク１５６からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ１５５を示す。動作環境の一例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ１４１は、通例、インターフェース１４０のような非リムーバブル・メモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライバ１５１および光ディスク・ドライブ１５５は、通例、インターフェース１５０のようなリムーバブル・メモリ・インターフェースによって、システム・バス１２１に接続する。
【００１９】
先に論じ図１に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ１１０のその他のデータを格納する。図１では、例えば、ハード・ディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じでも異なっていても可能であることを記しておく。オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード１６２、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス１６１によって、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース１６０を介して、演算装置１２０に接続されている。ユーザ入力インターフェース１６０は、システム・バス１２１に結合されているが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のようなその他のインターフェースおよびバス構造によって接続することも可能である。モニタ１９１またはその他の形式の表示装置も、ビデオ・インターフェース１９０のようなインターフェースを介して、システム・バス１２１に接続されている。モニタに加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のような、その他の周辺出力装置も含むことができ、これらは出力周辺インターフェース１９０を通じて接続することができる。
【００２０】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ１８０は、パーソナル・コンピュータ、ハンド・ヘルド・デバイス、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例、コンピュータ１１０に関して先に説明した要素の多くまたは全てを含むが、図１にはメモリ記憶装置１８１のみを示す。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、一般的である。
【００２１】
ＬＡＮネットワーク環境で用いる場合、コンピュータ１１０は、ネットワーク・インターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続する。ＷＡＮネットワーク環境で用いる場合、コンピュータ１１０は、通例、モデム１７２、またはインターネットのようなＷＡＮ１７３を通じて通信を確立するその他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ記憶装置に格納することもできる。一例として、そして限定ではなく、図１は、リモート・アプリケーション・プログラム１８２がメモリ素子１８１上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。
【００２２】
（分散計算フレームワークまたはアーキテクチャの例）
個人用計算およびインターネットの集中性(convergence)を考えて、種々の分散型計算フレームワークが開発されてきており、そして開発されつつある。個人および業務ユーザには同様に、アプリケーションおよび計算デバイスに合わせて継ぎ目のない相互動作可能でウェブ対応の(web-enabled)インターフェースが設けられており、計算活動は増々ウェブ・ブラウザまたはネットワーク指向となっている。
【００２３】
例えば、Microsoft（登録商標）の.NETプラットフォームは、サーバ、ウェブに基づくデータ・ストレージのような建物ブロック・サービス(building-block service)、およびダウンロード可能なデバイス・ソフトウェアを含む。概して言うと、.NETプラットフォームは、（１）全範囲に及ぶ計算機に一緒に作業させ、ユーザ情報を自動的に更新させ、これらの全てで同期を取る能力(ability)、（２）ＨＴＭＬよりはむしろＸＭＬの使用増大によって可能となる、ウェブ・サイトの双方向処理能力の増大、（３）カスタム化したアクセス、ならびに、例えば、電子メールのような種々のアプリケーション、またはOffice.NETのようなソフトウェアの管理のために中央開始点からユーザへの製品およびサービスの配信を特徴とするオンライン・サービス、（４）情報へのアクセス、ならびにユーザおよびデバイス間における情報の同期の効率および容易性を高める集中的データ格納、（５）電子メール、ファックス、および電話のような、種々の通信媒体を統合する能力、（６）開発者向けに、再利用可能なモジュールを作成することにより、生産性を高め、プログラミングの誤り数を減少させる能力、ならびに（７）多くのその他の相互プラットフォーム統合機構を設ける。
【００２４】
ここでは、計算機上にあるソフトウェアに関連付けて、実施形態例について説明するが、本発明の１つ以上の部分は、.NETの言語およびサービスの全てを通じて、ならびにその他の分散型計算フレームワークにおいても、実行し、サポートし、アクセスすることができるように、オペレーティング・システム、ＡＰＩ、またはコプロセッサと要求元オブジェクトとの間のミドルウェア・ソフトウェアを通じても実施することができる。
【００２５】
（実施形態例）
以下に続く論述では、ソフトウェア活性化の文脈において、コンピュータ・ネットワーク内にあるコンピュータ間で安全な通信を実施することに関する詳細は、当業者には周知であることを想定する。したがって、このような詳細は、明確化のために、ここでは省略する。
【００２６】
一実施形態では、一括使用許諾ソフトウェアを提供するが、これにはポリシが付随する。このポリシは、適正なソフトウェアの活性化迂回が行われるために顧客のネットワークの中になければならない機械の数を指定する。このポリシは、例えば、署名付き(signed) eXtensible rights Markup Language （ＸｒＭＬ）ファイルに書き込むとよく、顧客のネットワークの中にある機械によって認証することができる。ネットワークの中にある１つのコンピュータを、拘束サービス機械に指定する。この指定は、例えば、顧客、ソフトウェア・ベンダ、ソフトウェア・アプリケーション自体等によって行うことができる。ソフトウェア・アプリケーションをインストールしようとする他のコンピュータは、クライアントとなる。ソフトウェア・アプリケーションのコピーが、コンピュータ毎（即ち、例えば、拘束サービス機械およびクライアント）に１つずつインストールされ、ある時点（例えば、ログオン）において、各クライアントはソフトウェアを活性化しようとする。
【００２７】
例えば、プロセッサ識別子等のような、一意の機械属性は、他のいずれのセキュリティ対策にも加えて、機械識別子として用いて、ソフトウェアの活性化迂回を求めるコンピュータと、このような活性化迂回を可能にするために拘束サービスを提供するコンピュータとの間における通信経路を保護することができる。クライアントがそのソフトウェア・コピーを活性化しようとするとき、その機械識別子、タイムスタンプ、ソフトウェア・アプリケーションに関する情報、および機械認証コード（ＭＡＣ）を収容する活性化迂回メッセージを発生し、次いでこのメッセージを拘束サービス機械に送る。ＭＡＣを用いることにより、一実施形態では、クライアントのメッセージおよび拘束サービス（以下で詳しく論ずる）を、メッセージ自体によって認証することが可能となる。このように、このようなメッセージの認証は、クライアントと拘束サービスとの間の通信レイヤを拠り所としなければならないのではなく、自己処理(self contained)することができる。一旦メッセージが拘束サービスに配信されると、拘束サービスは、メッセージを検査して、タイムスタンプおよびＭＡＣが有効であることの確証を得る。
【００２８】
メッセージの認証を受信し検証すると、拘束サービスは、機械識別子を、既知の機械のキューと突き合わせてチェックし、この機械識別子が見つからない場合、これをキューに追加する。次いで、拘束サービスは、キューにおける一意の機械識別子の数をカウントし、このカウントを含む、認証済み回答メッセージをクライアントに送る。クライアントは、カウントがポリシ（即ち、最小数の機械が満たされているか否か）を満たすか否か判断する。満たす場合、機械はソフトウェアの活性化迂回を可能にすることができる。そうでなければ、ソフトウェアはインアクティブのままであり、該当するのであれば、「据置」期間において動作し続ける。
【００２９】
このように、一実施形態では、一括使用許諾ソフトウェア・アプリケーションの活性化迂回を行うことを許可する前に、ソフトウェア・アプリケーションが実際にコンピュータのネットワークにおいて用いられていることを、顧客が事実上検証することを要求することが認められよう。一実施形態では、ネットワークが、ソフトウェアが活性化迂回を行う一定の最小数の機械を有することを要求し、機械特定の識別子を用いて、精度の高いカウントを得る。一実施形態では、ソフトウェアが特定の機械集合にインストールされる必要はないが、ネットワーク内にある一定数の機械がなければならないという要件により、事実上殆どのソフトウェア侵害者の意図に対抗する(counteract)。即ち、ソフトウェア侵害者が、ソフトウェア・アプリケーションを不正に走らせる目的のためだけに、要求数の機械を有するネットワークを設定することは、特に、機械の要求数が特段に大きい場合には、可能性が低い。これは、特に、ソフトウェア・アプリケーションの盗用コピー(pirated copy)を、疑うこともなくまたはそうではなくても、購入することがあり得るいずれの個人についても当てはまる。尚、最小数の機械数を固定数として設定すると、セキュリティおよびユーザの使い易さに関して、ある種のトレードオフを行う必要が出てくる場合もある。例えば、設定する数が小さ過ぎると、有益なセキュリティ上の成果が得られない可能性があり、一方設定する数が大き過ぎると、正当な顧客にたいして問題が生ずる可能性がある。
【００３０】
拘束システムを用いて機械カウントを発生することにより、クライアントは、活性化要件を迂回するためには、カウントを忘れることができない。加えて、カウントの使用は、ソフトウェア・アプリケーションがコンピュータ・ネットワークにおいて意図された通りに用いられているか否か判断するためには、軽量で信頼性の高い仕方である。先に記したように、一実施形態では、目標ネットワーク内に指定した数の異なる機械があることを単にチェックするだけである。その結果、同じソフトウェアをソフトウェア・ベンダによって異なる顧客に販売することができ、ソフトウェアを特定のネットワークに合わせて特注する場合のように、このソフトウェアを更新も修正もする必要がない。つまり、一実施形態では、高い安全性、盗用の防止、インストールの容易さ、そして正当な顧客の側における活性化の間で、微妙な均衡が取られている。尚、この均衡は、ベンダおよび／または顧客の要望に応じて変更してもよいことは認められよう。
【００３１】
図２Ａは、一実施形態にしたがって、ソフトウェア盗用を躊躇させることができるネットワークの一例のブロック図である。クライアント２２０ａ〜２２０ｃは、ネットワーク内にある計算機であればいずれの形式でもよい。各クライアント２２０ａ〜２２０ｃは、ソフトウェア２３０のコピーおよびそれぞれの機械属性２２２ａ〜２２２ｃを含む。クライアント・ベンダは、一括使用許諾保持者に、限定ではないが、ＣＤ−ＲＯＭのような何らかの媒体上で、または図１に関して先に説明したようなネットワークを通じて直接、ソフトウェア２３０のコピーを提供することができる。添付するソフトウェア２３０は、企業特定または一括使用許諾保持者特定の使用許諾鍵（ＶＬＫ）（図示せず）とすることができる。一実施形態では、ＶＬＫは、ライセンス・ファイルと呼ばれる、比較的大きなファイルの中に埋め込まれている。それぞれのクライアント２２０ａ〜２２０ｃの機械属性２２２ａ〜２２２ｃは、クライアント２２０ａ〜２２０ｃと関連のあるハードウェア・デバイスを識別するデータであれば、いずれの形式でもよい。例えば、機械属性２２２ａは、クライアント２２０ａのプロセッサ識別子等でもよい。一実施形態では、各クライアント２２０ａ〜２２０ｃ毎に用いられる機械属性２２２ａ〜２２２ｃの種類は同一である（例えば、各クライアント２２０ａ〜２２０ｃは、そのプロセッサ識別子をその機械属性２２２ａ〜２２２ｃとして用いる）。他の実施形態では、各クライアント２２０ａ〜２２０ｃは、異なる機械属性２２２ａ〜２２２ｃを用いてもよい。
【００３２】
先に記したように、コンピュータ内にある１つのコンピュータを拘束サービス機械２１０と指定することができる。拘束サービス機械２１０は、単体機械とすることができ、あるいはクライアント２２０であってもよい。言い換えると、クライアント２２０ａのような、クライアントおよび拘束サービス機械２１０は、同じ機械によってホストされてもよく、あるいは異なる機械上にあってもよい。拘束サービス機械２１０は、拘束サービス２１２を内蔵する。拘束サービス２１２は、例えば、ソフトウェア活性化迂回を実行するために拘束サービス機械２１０の中で走るプロセスとすることができる。加えて、拘束サービス機械２１０は、ポリシ２１６を内蔵する。ポリシ２１６は、ソフトウェア活性化迂回を行うためにネットワーク内になければならない一意の機械の最小数を指定する。「機械」という単語は、ネットワーク内にあってソフトウェア２３０をインストールするデバイスであればいずれでも指すことができる。「機械」は通例何らかの形式のコンピュータ（例えば、デスクトップ、ラップトップ等）を指すが、「機械」はサーバ、ＰＤＡのようなデバイス等も指すことができる。加えて、このような機械は連続的にネットワークに接続しておく必要はない（例えば、ラップトップ）。
【００３３】
ポリシ２１６の中に設定する数値は、任意に設定すればよく、場合毎に変化してもよく、ある種の顧客（例えば、法人顧客）に応じて設定してもよく、ネットワークのサイズ等に応じて設定してもよい。例えば、ポリシは、ソフトウェア活性化迂回を許可するのに先だって、ネットワークの中に２５台の一意の機械がなければならないことを要求するように設定することができる。トラスト・ストア２１４は、ソフトウェアを活性化しようとしたことがある機械全てのキューを収容する。このキューは、機械を機械識別子（以下で論ずる）として、または、例えば、機械識別子および付加情報を備えているエントリとして表すことができる。このような付加情報は、例えば、タイムスタンプ等とするとよい。トラスト・ストア２１４は、トラスト・ストア・ファイルとすればよく、これは１つ以上の暗号鍵を収容する鍵データベース・ファイルである。鍵は、署名者証明書(signer certificate)として格納され、その中に収容されているデータの有効性を判断するというような、種々の目的に用いることができる。つまり、トラスト・ストア２１４は、機械識別子およびいずれの追加情報にとっても、安全な「信頼できる」記憶場所となることができる。
【００３４】
先に記したように、クライアント２２０ａ〜２２０ｃは、そのソフトウェア２３０のコピーを活性化するためには、活性化迂回メッセージを拘束サービス機械２１０に送る。例えば、ユーザの指示における、経過時間後等でのイベントの発生（例えば、ログイン、ソフトウェア２３０の起動等）のような、いずれの種類の活動でも、このような活性化迂回を誘起することができる。ソフトウェア２３０の活性化迂回を完了するのに成功する前に、ソフトウェア２３０は、「据置」期間において動作することができ、この期間内では、ソフトウェア２３０の活性化迂回の前では、機能の全てまたは一部がユーザに利用可能となる。一実施形態では、据置期間の使用が有用であるのは、トラスト・ストア２１４内のキューに並べられる活性化迂回を試したクライアントの数が、要求数の機械に達するには多少の時間がかかる場合もあるからである。つまり、キューが必要十分な数の機械まで積算していく間も、ユーザはソフトウェア２３０を用いることができるのである。活性化迂回プロセスは、一実施形態では、完全に自動化することができるので、据置期間の使用によって、活性化迂回プロセスを事実上クライアント２２０ａ〜２２０ｃの１つのユーザには見えないようにすることもできる。
【００３５】
図２Ｂは、一実施形態にしたがって用いることができる活性化迂回メッセージ２４０の一例のブロック図である。活性化迂回メッセージ２４０は、しかるべき安全メッセージング・フォーマットであればそのいずれに応じてでもフォーマットすることができる。活性化迂回メッセージ２４０は、ソフトウェア識別子２４２を含み、このソフトウェア識別子は、活性化迂回を希望するソフトウェアを指示する。ソフトウェア識別子２４２は、１実施形態においては、ソフトウェア識別子、種々の番号及び／又はその他のを含むことができる。つまり、一実施形態にしたがって、多数のソフトウェア・アプリケーションが活性化迂回を受けようとする場合、各アプリケーションの活性化迂回プロセスを別個に保ち、他の活性化迂回プロセスと干渉するのを回避することができる。
【００３６】
また、活性化迂回メッセージ２４０は、機械識別子２４４も含むことができる。機械識別子２４４は、例えば、図２Ａと関連付けて先に論じたような、機械属性２２２ａ〜２２２ｃから形成することができる。例えば、機械属性２２２ａ〜２２２ｃをハッシュする、暗号化する、および／または等して、機械識別子２４４を形成することができる。あるいは、機械識別子２４４は、単に、機械属性２２２ａ〜２２２ｃから成り、それ以上の処理や変更をしなくてもよい。活性化迂回メッセージ２４０は、更に、タイムスタンプ２４６も含むことができる。タイムスタンプ２４６は、「再生」攻撃(replay attack)等からソフトウェアを保護するために用いることができる。何故なら、機械識別子２４４によって容易となるハードウェア拘束が現行のものであることが分かるからである。最後に、活性化迂回メッセージ２４０は、例えば、メッセージ認証コード（ＭＡＣ）等によって実行することができる認証２４８を含むことができる。明確化のために図２Ｂには示さないが、活性化迂回メッセージ２４０は、例えば、ポリシ２１６に関する情報というような、追加のフィールドを含むこともできる。
【００３７】
図２Ｃは、一実施形態にしたがって用いることができる拘束サービス・メッセージの一例のブロック図である。拘束サービス・メッセージ２５０は、図２Ｂと関連付けて先に論じた活性化迂回メッセージ２４０と同様、ソフトウェア識別子２４２、機械識別子２４４（クライアントを識別する）、タイムスタンプ２４６（例えば、活性化迂回メッセージ２４０において用いられるタイムスタンプ）、および認証２４８を収容する。認証２４８は、活性化迂回メッセージ２４０の認証と同様に実行することができ、あるいは異なるプロトコルに応じて実行してもよい。加えて、拘束サービス・メッセージ２５０はカウント２５２も含む。これは、図２Ａと関連付けて先に論じた、トラスト・ストア２１４のキューの中に纏められている一意の機械識別子の数に対応する。明確化のために図２Ｃには示さないが、拘束サービス・メッセージ２５０は、例えば、ポリシ２１６に関する情報のような、更に別のフィールドを含むこともできる。
【００３８】
図３は、一実施形態にしたがってソフトウェアを活性化するクライアント方法の一例を示すフローチャートである。尚、方法３００は、設定中に開始および／または実行してもよく、のちの時点（例えば、ログオン）において実行することができることは認められよう。方法３００は、例えば、無人ファイル(unattended file)の補助を伴って行うこともできる。無人ファイルとは、通常の設定催促を迂回するために、ソフトウェア設定ルーチンと合わせて用いられるテキスト・ファイルのことである（無人のインストールを実行するため）。例えば、無人ファイルは、目標機械のローカル・エリア・ネットワーク（ＬＡＮ）を通じて、インターネットを経由して等によって、ＶＬＫを自動的に入力し、プロキシ設定を構成し、エンド・ユーザに代わってシステムを自動活性化することができる。活性化迂回は、コマンド・ライン・スクリプトを用いて、設定後に実行することもできる。
【００３９】
ステップ３０１において、図２Ｂと関連付けて先に論じた活性化迂回メッセージ２４０のような、クライアント活性化迂回メッセージをクライアントによって発生する。クライアント活性化迂回メッセージは、ソフトウェアの初期インストールのとき、クライアントが、既にインストールされているソフトウェア・アプリケーションに対する現行の一括使用許諾がもはや有効でないと判断したとき等に発生することができる。ステップ３０２において、活性化迂回メッセージを拘束サービス機械に送る。ステップ３０２は、ステップ３０１の直後、または遅延の後に実行してもよい。例えば、クライアントがラップトップ・コンピュータであって、現在ネットワークから切断されている場合、活性化迂回メッセージを発生するのは、ユーザがコンピュータを起動するときでよい。一旦ユーザがクライアント・ラップトップ・コンピュータをネットワークに再度接続したなら、活性化迂回メッセージを拘束サービス機械に送ればよい。したがって、図２Ｂと関連付けて先に論じたタイムスタンプは、例えば、活性化迂回メッセージを発生または送出した時刻に対応することができる。ステップ３０３において、図２Ｃと関連付けて先に論じた拘束サービス・メッセージ２５０のような、拘束サービス・メッセージを、クライアント機械が受信する。拘束サービス・メッセージの作成を伴う方法の一例について、図４と関連付けて以下で論ずる。
【００４０】
ステップ３０５において、必要なあらゆるメッセージ認証処理の後、カウント（カウント２５２のような）を拘束サービス・メッセージから抽出し、クライアントのソフトウェア・アプリケーションのコピーと関連のある所定のカウントと比較する。尚、所定のカウントは、図２Ａと関連付けて先に論じたポリシ２１６に対応することができることは認められよう。ステップ３０７において、受信したカウントが所定のカウント以上であるか否か判定を行う。尚、ポリシは、所定のカウントと一致するか、またはこれを超過するかを指定するとよいことは認められよう。
【００４１】
受信したカウントが所定のカウント以上でない場合、ステップ３０９において、方法３００をしかるべき終了する。尚、クライアント・ソフトウェア・コピーの活性化迂回は行われないことは認められよう。何故なら、拘束サービスは、ソフトウェアポリシが要求する一意の機械識別子を最小数だけ受信していないからである。ユーザは、例えば、ソフトウェアが「据置期間」を含み、所与の時間期間であれば活性化迂回をしなくてもソフトウェアの使用を許容する場合には、そのソフトウェアを使用し続けることができるようにしてもよい。
【００４２】
受信したカウントが所定のカウント以上である場合、ステップ３１１において、ソフトウェアは、拘束メカニズムと共に迂回マークを用いて、活性化迂回を許可する。この拘束メカニズムは、活性化迂回マークが単純にコピーされ他の機械で用いることができないことを保証する。一実施形態では、拘束メカニズムは個々の機械各々に特定である。一実施形態では、一旦ステップ３１１が完了したなら、クライアントはもはやソフトウェア・アプリケーションを認証する目的で、拘束サービス機械と接触する必要ななくなる。代替実施形態では、方法３００は、設定した間隔または可変の間隔で繰り返すことができる。例えば、信用ストア・キューに収容されている機械識別子の寿命(lifespan)を指定することができる場合、その後では機械識別子をキューから削除する。このような実施形態では、方法３００は、キュー（およびその対応するカウント）を最新に維持するために、ある間隔で繰り返すとよい。
【００４３】
尚、ソフトウェアを最初にインストールするとき、トラスト・ストアのキューには機械が掲示されていない可能性があることは認められよう。例えば、最初のクライアントがそのソフトウェア・コピーの活性化迂回を実行しようとするとき、拘束サービスはトラスト・ストアにアクセスして、その中に収容されているキューの中にこのクライアントが掲示されているか否か判断する。それ以前にはソフトウェア・コピーに対して活性化迂回を実行しようとしたクライアントはないので、最初のクライアントが追加されるまで、トラスト・ストアにはクライアントは掲示されていない。所定のカウントに未だ達していない場合、クライアント機械は据置期間において機能し続けることができる。据置期間を超えると、クライアント機械は機能低下モードで機能するか、あるいはエンド・ユーザがソフトウェア・ベンダからの延長を要請することができる。
【００４４】
図４は、一実施形態にしたがってソフトウェアの活性化迂回を実行する拘束サービス方法４００の一例を示すフローチャートである。ステップ４０１において、図２Ｂと関連付けて先に論じた活性化迂回メッセージ２４０のような、活性化迂回メッセージを受信する。しかるべきメッセージ認証処理がいずれも完了した後、ステップ４０３において、活性化迂回メッセージの中に収容されている機械識別子を、拘束サービス機械のキューの中に収容されているあらゆる機械識別子と比較して、その機械識別子がキューの中にあるか否か確かめる。機械識別子が既にある場合、方法４００はステップ４０７に進む。ステップ４０７については、この後直ぐに論ずる。あるいは、タイムスタンプを用いる実施形態では、ステップ４０７に進む前に、リストに格納されている機械識別子を、受信したばかりの機械識別子と置き換えることもできる。このようにすると、リストは最後に受信した機械識別子を収容することになる。機械識別子が未だない場合、ステップ４０５において、この機械識別子をキューに追加する。場合によっては、機械識別子と共に、付加情報をキューに格納することもできる。例えば、潜在的なソフトウェア侵害者からの再生攻撃を回避するように、タイムスタンプを格納することができる。
【００４５】
ステップ４０７において、キュー内にある機械識別子の数をカウントする。尚、方法４００は、機械識別子が未だない場合にのみ、その機械識別子をキューに入れるので、キューは一意の機械識別子を保持することは認められよう（即ち、各機械識別子は、特定のクライアントが何回活性化迂回メッセージを送ったかには関係なく、１回だけ格納される）。ステップ４０９において、カウントを含むメッセージを、ステップ４０１において受信した活性化迂回メッセージを送ったクライアントに送る。一実施形態では、所定時間（図４には示されていない）の後、機械識別子をキューから削除することもできる。例えば、ソフトウェア・アプリケーションのポリシは、ソフトウェアの活性化迂回を１回だけ可能にするのではなく、ソフトウェアが周期的に活性化迂回プロセスを繰り返して、クライアントが顧客のネットワークの一部であり続けていることを確認することを指図してもよい。つまり、周期的に機械識別子を削除することにより、ネットワークの中に十分な数のクライアントがあり続けなければ（そして、活性化迂回メッセージを送っていなければ）、カウントは、ポリシが要求する機械識別子の数を下回る可能性がある。
【００４６】
尚、このような実施形態では、クライアント機械は、活性化迂回プロセスを周期的に繰り返そうとして、機械識別子のカウントが十分に大きいままでいることを確認するように構成するとよいことは認められよう。加えて、クライアントが活性化迂回プロセスを切り返そうとはしない場合、機械識別子のカウントがしきい値を下回ったとしても、ソフトウェアを活性化したままにしておくことができる。
【００４７】
尚、以上の例は、説明の目的上提示したに過ぎず、決して本発明の限定と解釈してはならないことを記しておく。また、アプリケーションおよびサービスが、本発明にしたがって、使用許諾情報を得ることを可能にする、本発明を実施する方法には色々あり、例えば、しかるべきＡＰＩ、ツール・キット、ドライバ・コード、ダイナミック・リンク・ライブラリ（ＤＬＬ）、オペレーティング・システム、制御、スタンドアロンまたはダウンロード可能なソフトウェア・オブジェクト等が含まれることも記しておく。本発明の実施形態は、ＡＰＩ（またはその他のソフトウェア・オブジェクト）の観点、およびここに記載したようなＶＬＫ使用許諾技法と関連付けて通信するソフトウェアまたはハードウェア・オブジェクトから、本発明の使用を想定している。したがって、ここに記載した発明の種々の実現例は、全体的にハードウェア、部分的にハードウェアそして部分的にソフトウェア、およびソフトウェアである形態を有することができる。
【００４８】
前述のように、実施形態例は、種々の計算機およびネットワーク・アーキテクチャと関連付けて説明したが、基礎となる概念は、盗用を躊躇させることが望ましい計算機またはシステムであればいずれにでも適用することができる。つまり、一実施形態によるデータ・エンコード／デコード技法は、種々のアプリケーションおよびデバイスに適用することができる。例えば、一実施形態のアルゴリズムおよびハードウェア実現例は、計算機のオペレーティング・システムに適用することができ、デバイス上における別個のオブジェクトとして、別のオブジェクトの一部として、再利用可能な制御として、サーバからダウンロード可能なオブジェクトとして、デバイスまたはオブジェクトとネットワークとの間の「ミドル・マン」(middle man)として、分散型オブジェクトとして、ハードウェアとして、メモリ内に、前述のいずれかの組み合わせ等として提供することができる。ここでは、プログラミング語の例、名称、および例は、種々の選択を表すように選択したが、これらの言語、名称および例は限定することを意図しているのではない。本発明を達成するための制御の使用に言及する実施形態に関して、本発明は、.NET制御の提供に限定されるのではなく、逆に、本発明にしたがって盗用躊躇という目的を達成するあらゆるソフトウェア（および／またはハードウェア）というように、文脈を広く解釈してしかるべきである。当業者には、本発明の種々の実施形態によって達成されるのと同一、同様、または同等の機能を達成するオブジェクト・コードおよび呼称を提供する多数の方法があることが認められよう。一実施形態は、オンライン・オークションまたは入札サイトと関連付けても実施することができる。
【００４９】
前述のように、ここに記載した種々の技法は、ハードウェアまたはソフトウェア、あるいは、該当するのであれば、双方の組み合わせと関連付けて実施することができる。つまり、本発明の実施形態の方法および装置、あるいはそのある形態または部分は、フロッピ・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、あるいはその他のあらゆる機械読み取り可能媒体のような、有形媒体内に具体化したプログラム・コード（即ち、命令）の形態をなすことができ、プログラム・コードをコンピュータのような機械にロードしこれによって実行すると、機械は、本発明を実用化する装置となる。プログラマブル・コンピュータ上におけるプログラム・コードの実行の場合、計算機は、一般に、プロセッサ、当該プロセッサによる読み取り可能な記憶媒体（揮発性および不揮発性メモリ、および／または記憶要素を含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。例えば、データ処理ＡＰＩ、再利用可能な制御等の使用によって、本発明の盗用躊躇技法を利用することができる１つ以上のプログラムは、好ましくは、上位手続き型またはオブジェクト指向プログラミング言語で実施し、コンピュータ・システムと通信する。しかしながら、プログラムは、望ましければ、アセンブリまたは機械語で実施することもできる。いずれの場合でも、言語は、コンパイル型またはインタプリタ型言語とすることができ、あるいはハードウェア実現例と組み合わせることもできる。
【００５０】
また、本発明の実施形態の方法および装置は、電気ワイヤまたはケーブル上、光ファイバを通じて、あるいはその他のいずれかの形態の送信を通じてというように、何らかの通信媒体上で伝送するプログラム・コードの形態で具体化される通信によって実用化することができる。この場合、ＥＰＲＯＭ、ゲート・アレイ、プログラマブル論理デバイス（ＰＬＤ）、クライアント・コンピュータ、ビデオ・レコーダ等のような機械、あるいは先の実施形態例において説明したような信号処理能力を有する受信機械がプログラム・コードを受信し内部にロードしそして実行すると、本発明を実用化する装置となる。汎用プロセッサ上で実施すると、プログラム・コードはプロセッサと組み合わされて、本発明の機能を呼び出すように動作する一意の装置を設ける。加えて、本発明と関連付けて用いられるいずれの記憶技法も、変わることなく、ハードウェアおよびソフトウェアの組み合わせとすることができる。
【００５１】
以上、種々の図の好適な実施形態と関連付けて、本発明について説明したが、本発明と同じ機能を実行するために、それから逸脱することなく、他の同様の実施形態を用いることや、記載した実施形態に対して変更や追加を行うことができることは言うまでもない。例えば、本発明のネットワーク環境例は、ピア・ツー・ピア・ネットワーク型環境のような、ネットワーク型環境の文脈で説明したが、本発明はそれには限定されない、そして本願に記載した方法は、有線かワイヤレスかには関係なく、ゲーミング・コンソール、ハンドヘルド・コンピュータ、携帯用コンピュータ等のような、いずれの計算機または環境にも適用することができること、そして通信ネットワークを通じて接続されネットワークを通じて双方向処理を行う、いずれの数のこのような計算機にも適用することができることは、当業者には認められよう。更に、特にワイヤレス・ネットワーク型デバイスの数が増殖し続けるので、ハンド・ヘルド・デバイスのオペレーティング・システム、およびその他の特定用途オペレーティング・システムを含む、種々のコンピュータ・プラットフォームも想定していることを強調しておく。更にまた、本発明は、複数の処理チップまたはデバイスを跨いで実施することができ、同様に、記憶も複数のデバイスを跨いで行うことができる。したがって、本発明は、いずれの１つの実施形態にも限定されることはなく、逆に、添付した特許請求の範囲の広さおよび範囲で解釈して然るべきである。
【図面の簡単な説明】
【００５２】
【図１】図１は、本発明の形態を実施することができる計算環境の一例である。
【図２Ａ】図２Ａは、一実施形態にしたがって、ソフトウェアの盗用を躊躇させることができる、ネットワークの一例を示すブロック図である。
【図２Ｂ】図２Ｂは、一実施形態にしたがって、用いることができる活性化迂回メッセージの一例のブロック図である。
【図２Ｃ】図２Ｃは、一実施形態にしたがって、用いることができる拘束サービス・メッセージの一例のブロック図である。
【図３】図３は、一実施形態にしたがって、ソフトウェアの活性化迂回を許容するクライアント方法の一例を示すフローチャートである。
【図４】図４は、一実施形態にしたがって、ソフトウェアを活性化する拘束サービス方法の一例を示すフローチャートである。
【図１】
2009509239.tif 000003
【図２Ａ】
2009509239.tif 000004
【図２Ｂ】
2009509239.tif 000005
【図２Ｃ】
2009509239.tif 000006
【図３】
2009509239.tif 000007
【図４】
2009509239.tif 000008
【国際調査報告】
2009509239.tif 000009
2009509239.tif 000010