JP2008521094A - プロビジョニングパケットを配信するためのシステムおよび方法 - Google Patents

プロビジョニングパケットを配信するためのシステムおよび方法 Download PDF

Info

Publication number
JP2008521094A
JP2008521094A JP2007541362A JP2007541362A JP2008521094A JP 2008521094 A JP2008521094 A JP 2008521094A JP 2007541362 A JP2007541362 A JP 2007541362A JP 2007541362 A JP2007541362 A JP 2007541362A JP 2008521094 A JP2008521094 A JP 2008521094A
Authority
JP
Japan
Prior art keywords
provisioning
packet
computer
provisioning packet
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007541362A
Other languages
English (en)
Inventor
アンドリュー スティーブ カート
ゼヨン シュー
ヂャンウェイ シュー
クリストファー サットン ポール
エー.ヘロルド ジェフリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/989,122 external-priority patent/US7610631B2/en
Priority claimed from US11/006,837 external-priority patent/US20060165005A1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2008521094A publication Critical patent/JP2008521094A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • G06F21/725Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits operating on a secure reference time value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2137Time limited access, e.g. to a computer or data

Abstract

ソフトウェアを提供する方法および装置は、データベースと、配信サービスと、確認サービスとを有するプロビジョニングパケット配信メカニズムを使用して、コンピュータへのプロビジョニングパケットの配信を受信し、待ち行列に入れ、確認する。確認応答のない配信要求の数が、ある限度を超えると、配信サービスは、たとえばサービス拒否の攻撃を制限するために、そのプロビジョニングパケットをデータベースから削除することができる。

Description

本特許は、一般にコンピュータに関し、より詳細にはコンピュータ管理システムに関する。
世界の人口の大きな割合は、コンピュータ、および/またはそのコンピュータを効率よく使用できるようにするさまざまなソフトウェアを所有するだけの経済的な余裕がない。発展途上国の人々にコンピューティングへの手ごろな価格のアクセスを提供したいというニーズがある。これは、ソフトウェアライセンスが一般に永久のライセンスを基準として販売されているソフトウェア業界の伝統的な構造に照らしても真実である。人々はまた、さまざまなソフトウェアのための永久のライセンスを購入するための十分な資金を持っていない結果として、そのようなソフトウェアをトレーニングの目的などのために短期間使用することさえも禁じられている。さらに先進国においてさえ、コンピュータユーザは、特定のソフトウェアを一定の時間だけ使用する必要がある場合に、その特定のソフトウェアのための永久のライセンスを購入する必要性によって意欲をそがれる。
永久のライセンスを購入する必要なくソフトウェアを使用できるようにするための、既存のものに取って代わるソリューションを提供するために、さまざまなビジネスモデルが試されてきた。たとえば、さまざまな企業が、ASP(application service provider)モデルに基づくソフトウェアを提供しており、このモデルでは、ユーザは、インターネットなどのネットワークのサーバ上に常駐しているソフトウェアに、そのサーバへログインすることによってアクセスすることができる。しかしこの方法では、ユーザは、インターネットを介してサーバに絶え間なく接続している必要がある。これは、インターネットへのアクセスが高価で信頼できないさまざまな発展途上国において発展できるソリューションではない。あるいは、ソフトウェアプロバイダは、ユーザがソフトウェアを一定の時間だけダウンロードできるようにしている場合が多いが、これは一般に試用のためであり、その後ユーザは、そのソフトウェアのための永久のライセンスを購入しなければならない。しかし、そのような試用版のソフトウェアを使用するための時間は、通常は固定されており、ユーザは、自分自身の選択のために時間を購入することや、固定された時間を追加するために試用版ソフトウェアのユーザを更新することを選択することができない。容易に理解できるように、ユーザがさまざまな異なる方法でソフトウェアサービスを購入できるような方法でユーザにそれらのサービスを提供したいというニーズがある。
動的なソフトウェアプロビジョニングシステム(software provisioning system)は、所望のビジネスプロセスに基づいて複数の異なるコンピューティングデバイス上にソフトウェアを提供することを可能にする。この動的なソフトウェアプロビジョニングシステムによって、ユーザは、オペレーティングシステムやその他のアプリケーションおよびツールを、特定の時間だけ、特定の使用量だけ、あるいはその他の任意の所望の方法で使用することを、インターネットサービスプロバイダ、システムプロバイダ、あるいはサードパーティーに要求することができる。このプロビジョニングサービス(provisioning service)は、ソフトウェアおよび使用許諾メッセージ(プロビジョニングパケットと呼ばれる場合もある)の実際の配信を管理するための配信環境を使用する。この配信環境は、対象のコンピュータに関連付けられている識別子を有するプロビジョニングパケットを受信し、そのプロビジョニングパケットを配信のために待ち行列に入れる。プロビジョニングパケットを求める要求が着信すると、その要求内の識別子が、プロビジョニングパケット内の識別子と照合される。そして、正しいプロビジョニングパケットがコンピュータに配信される。この配信環境においては、配信のために複数のパケットを待ち行列に入れることができる。
以降の文章は、多くの異なる実施形態の詳細な説明を記載しているが、この説明の法的な範囲は、本特許に添付されている特許請求の範囲の文言によって定義されるという点を理解されたい。この詳細な説明は、例示的なものにすぎないと解釈されるべきであり、可能な実施形態をすべて説明しているわけではない。というのも、可能な実施形態をすべて説明することは、不可能ではないにしても、非現実的と思われるためである。本発明を定義する特許請求の範囲内に今後とも収まるであろう現在の技術または本特許の出願日以降に開発される技術を使用して、多くの代替実施形態を実施することができる。
また用語については、「本明細書で使用する際、「 」という用語は、...を意味するものと定義する」という文や類似の文を使用して本特許内で明確に定義されていない限り、その用語の意味を、明示的にも暗示的にも、その率直な意味すなわち通常の意味を越えて限定する意図はまったくなく、またそのような用語は、本特許のいずれかのセクションにおいて行われているいずれかの記述(特許請求の範囲の言葉は除く)に基づく範囲に限定されるものと解釈すべきではないという点を理解されたい。本特許に添付されている特許請求の範囲に記載されているいずれかの用語が、ある単一の意味と一致した方法で本特許内で言及されている限りにおいては、それは、もっぱら読者を混乱させないように明確にする目的で行われているものであり、そのような特許請求の範囲の用語を、暗示などによって、その単一の意味に限定することを意図するものではない。最後に、請求項の要素が、いかなる構造についても記載せずに「手段」という言葉と機能とを記載することによって定義されているのでない限り、いかなる請求項の要素の範囲も、35 U.S.C.セクション112、第6パラグラフの適用に基づいて解釈されることを意図するものではない。
(ネットワーク)
図1は、動的なソフトウェアプロビジョニングシステムを実装するために使用することができるネットワーク10を示している。ネットワーク10は、インターネット、VPN(virtual private network)、あるいは1つまたは複数のコンピュータ、通信デバイス、データベースなどが相互に通信可能に接続されることを可能にするその他の任意のネットワークとすることができる。ネットワーク10は、イーサネット(登録商標)16、およびルータ18、ならびに地上通信線20を介してパーソナルコンピュータ12およびコンピュータ端末14に接続することができる。その一方で、ネットワーク10は、無線通信局26および無線リンク28を介してラップトップコンピュータ22およびパーソナルデータアシスタント(personal data assistant)24に無線で接続することができる。同様に、サーバ30は、通信リンク32を使用してネットワーク10に接続することができ、メインフレーム34は、別の通信リンク36を使用してネットワーク10に接続することができる。以降でさらに詳しく説明するように、この動的なソフトウェアプロビジョニングシステムの1つまたは複数のコンポーネントは、ネットワーク10に接続されるさまざまなデバイスのいずれに格納して機能させることもできる。
(コンピュータ)
図2は、動的なソフトウェアプロビジョニングシステムの1つまたは複数のコンポーネントを実装するためにネットワーク10に接続して使用することができるコンピュータ110の形態のコンピューティングデバイスを示している。コンピュータ110のコンポーネントは、処理装置120と、システムメモリ130と、システムメモリを含むさまざまなシステムコンポーネントを処理装置120に結合するシステムバス121とを含むことができるが、これらには限定されない。システムバス121は、メモリバスまたはメモリコントローラと、ペリフェラルバスと、さまざまなバスアーキテクチャーのいずれかを使用するローカルバスとを含む複数のタイプのバス構造のいずれにすることもできる。たとえばこのようなアーキテクチャーは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスを含むが、これらには限定されない。
コンピュータ110は通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスできる利用可能な任意のメディアとすることができ、揮発性メディアおよび不揮発性メディア、ならびに取り外し可能メディアおよび固定式メディアの双方を含む。たとえばコンピュータ可読媒体は、コンピュータストレージメディアおよび通信メディアを含むことができるが、これらには限定されない。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術において実装される揮発性メディアおよび不揮発性メディア、ならびに取り外し可能メディアおよび固定式メディアを含む。コンピュータストレージメディアは、RAM、ROM、EEPROM、フラッシュメモリ、またはその他のメモリ技術、CD−ROM、DVD(digital versatile disk)、またはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、またはその他の磁気ストレージデバイス、あるいは所望の情報を保存するために使用可能で、コンピュータ110によってアクセス可能なその他の任意のメディアを含むが、これらには限定されない。通信メディアは通常、搬送波やその他の伝送メカニズムなどの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、あるいはその他のデータを具体化し、任意の情報伝達メディアを含む。「変調されたデータ信号」という用語は、情報をその信号内でコード化するような方法で設定または変更されたその特性のうちの1つまたは複数を有する信号を意味する。たとえば通信メディアは、有線ネットワークや直接有線接続などの有線メディアと、音波メディア、無線周波数メディア、赤外線メディア、その他の無線メディアなどの無線メディアとを含むが、これらには限定されない。また上記のいずれの組合せも、コンピュータ可読媒体の範囲内に含まれるものである。
システムメモリ130は、コンピュータストレージメディアを、ROM(read only memory)131およびRAM(random access memory)132などの揮発性メモリおよび/または不揮発性メモリの形態で含む。BIOS(basic input/output system)133は、起動中などにコンピュータ110内の要素どうしの間における情報伝達を補助する基本ルーチンを含み、通常はROM131内に格納されている。RAM132は通常、処理装置120がすぐにアクセスできるか、および/または処理装置120によってその時点で操作されているデータモジュールおよび/またはプログラムモジュールを含む。図1は、例としてオペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137を示しているが、これらには限定されない。
またコンピュータ110は、その他の取り外し可能/固定式、揮発性/不揮発性コンピュータストレージメディアを含むこともできる。図1は、例示のみを目的として、固定式の不揮発性の磁気メディアとの間で読み取りや書き込みを行うハードディスクドライブ141と、着脱式不揮発性の磁気ディスク152との間で読み取りや書き込みを行う磁気ディスクドライブ151と、CD−ROMやその他の光メディアなどの着脱式不揮発性の光ディスク156との間で読み取りや書き込みを行う光ディスクドライブ155とを示している。典型的な動作環境において使用できるその他の取り外し可能/固定式、揮発性/不揮発性コンピュータストレージメディアとしては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがあるが、これらには限定されない。ハードディスクドライブ141は通常、インターフェース140などの固定式のメモリインターフェースを介してシステムバス121に接続されており、磁気ディスクドライブ151および光ディスクドライブ155は通常、インターフェース150などの着脱式メモリインターフェースによってシステムバス121に接続されている。
図1に示されている上述のドライブおよびそれらに関連するコンピュータストレージメディアは、コンピュータ110用のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶を提供する。たとえば図1において、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同一とするか、または異なっていてもよいという点に留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147が最低限異なるコピーであることを示すために、異なる番号を割り当てている。ユーザは、キーボード162や、通常はマウス、トラックボール、あるいはタッチパッドと呼ばれるポインティングデバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。その他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナなどを含むことができる。これらおよびその他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース160を介して処理装置120に接続される場合が多いが、パラレルポート、ゲームポート、またはUSB(universal serial bus)などのその他のインターフェース構造およびバス構造によって接続することもできる。またモニタ191やその他のタイプのディスプレイデバイスも、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。コンピュータは、モニタに加えて、スピーカ197やプリンタ196などのその他の周辺出力デバイスを含むこともでき、これらは、周辺出力インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で機能することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、あるいはその他の一般的なネットワークノードとすることができ、図1にはメモリストレージデバイス181しか示されていないが、通常はコンピュータ110に関連する上述の要素の多くまたはすべてを含む。図1に示されている論理接続は、LAN(local area network)171およびWAN(wide area network)173を含むが、その他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見受けられる。
LANネットワーキング環境において使用する場合には、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境において使用する場合には、コンピュータ110は通常、モデム172や、インターネットなどのWAN173上で通信を確立するためのその他の手段を含む。モデム172は、内蔵型または外付け型とすることができ、ユーザ入力インターフェース160やその他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク化された環境においては、コンピュータ110に関連して示されているプログラムモジュール、またはその一部をリモートメモリストレージデバイス内に格納することができる。図1は、例としてリモートアプリケーションプログラム185をメモリデバイス181上に常駐するものとして示しているが、この形態には限定されない。示されているネットワーク接続は例示的なものであり、コンピュータどうしの間に通信リンクを確立するその他の手段も使用することができるということが理解できるであろう。
(ソフトウェアプロビジョニングシステム)
図3は、コンピューティングデバイス202上でのオペレーティングシステムの使用を提供するための動的なソフトウェアプロビジョニングシステム200を示しており、ここでは、コンピューティングデバイス202は、デスクトップコンピュータ12、ラップトップコンピュータ22、PDA24、携帯電話、あるいは任意の類似のデバイスなど、一般に知られているコンピューティングデバイスのいずれにすることもできる。ソフトウェアプロビジョニングシステム200は、オペレーティングシステムの使用を提供するために実装されるものとして示されているが、ある代替実装形態においては、ソフトウェア、ファームウェア、コンピューティングデバイスの一機能など、その他のリソースの使用を提供するために使用することもできる。同様に、ソフトウェアプロビジョニングシステム200は、ネットワーク10に通信可能に接続されているコンピューティングデバイス202上でのリソースの使用を提供するものとして示されているが、ネットワーク10に接続できない、あるいはネットワーク10に一時的にしか接続できないコンピューティングデバイス上でのそのような使用を実装するために使用することもできる。
ソフトウェアプロビジョニングシステム200は、コアプロビジョニングサービスモジュール206と、確認サービス209を有する配信サービスモジュール208と、証明書サービスモジュール210と、コアデータベース212と、配信データベース214とを有するプロビジョニングサービスモジュール204を含むことができる。プロビジョニングシステム204は、課金アダプタ218を介して課金システム216と通信することができ、その一方でコアプロビジョニングサービスモジュール206は、データベースライタ(database writer)220を介して配信データベース214と通信することができ、配信データベース214は、データベースリーダ222を介して配信サービス208と通信する。コンピューティングデバイス202は、ローカルプロビジョニングモジュール(LPM)224を含むことができ、このLPM224は、配信ウェブサービスモジュール226を介して配信サービスモジュール208と通信し、課金ウェブサービスモジュール228を介して課金システム216と通信する。
プロビジョニングサービスモジュール204は、サーバ30などのサーバシステム上や、ネットワーク10に通信可能に接続されているその他のシステム上に配置することができる。同様に、課金システム216も、サーバ30などのサーバシステム上や、ネットワーク10に通信可能に接続されているその他のシステム上に配置することができる。さらに、プロビジョニングサービスモジュール204のさまざまなコンポーネントのうちの1つまたは複数は、同一のサーバ上や、別々の場所に配置されている複数の異なるサーバ上に配置することができる。たとえばコアデータベース212は、別々の場所に配置されてそれぞれネットワーク10に通信可能に接続されている複数の異なるデータベースサーバ上に配置することができる。プロビジョニングサービスモジュール204およびそのさまざまなコンポーネントモジュールの機能については、以降でさらに詳しく説明する。
さらに図3においては、コンピューティングデバイス202は、ウェブサービスモジュール226を介して配信サービスモジュール208と、およびウェブサービスモジュール228を介して課金システム216と通信するものとして示されている。状況によっては、ウェブサービスモジュール226は、望ましいレベルを超えるアクティビティーの増加を認識することができる。代替実施形態における負荷管理サービス230、コンピューティングデバイス202のユーザは、電話などの代替モードの通信を介して配信サービスモジュール208および課金システム216と通信することができる。たとえば、コンピューティングデバイス202にとってネットワーク10に接続することが不可能な状況においては、コンピューティングデバイス202のユーザは、配信サービスモジュール208に取り付けられている電話および音声認識対応型のユーザインターフェースを介して、あるいは配信サービスモジュール208と通信できる顧客サービス担当者などを介して通信することができる。
コンピューティングデバイス202が、コンピュータ110などのコンピュータである場合には、LPM224は、システムメモリ130の一部として、処理装置120を含むコンピュータ110のさまざまなハードウェアコンポーネントの一部として、あるいはこれらの任意の組合せとして、固定式の不揮発性メモリ140上に配置することができる。LPM224の機能については、以降でさらに詳しく説明する。
(プロビジョニングシステムのフローチャート)
次いで図4を参照すると、プロビジョニングプログラム250が、ソフトウェアプロビジョニングシステム200の一般的な機能を示している。ブロック251においては、コンピューティングデバイス202上でオペレーティングシステムを使用するための登録キーをユーザに提供することができる。オペレーティングシステムなどを使用するためのさらなる時間をユーザが購入した結果として、コンピューティングデバイス202の新たな購入に伴って登録キーをユーザに提供することができる。複数の異なるエンティティーが、登録キーをユーザに提供することができ、たとえば、コンピューティングデバイス202を販売しているコンピュータストアは、キーをユーザに提供することができ、コンピューティングデバイス202用のオペレーティングシステムの使用を含む一式のサービスを販売しているインターネットサービスプロバイダは、登録キーをユーザに提供することができる、といった具合である。
登録キーは、以降でさらに詳しく説明するように、プロビジョニングサービスモジュール204によって証明書サービス210を用いて作成して、登録キーのプロバイダに安全な方法で送信することができる。あるいは、登録キーのプロバイダが、プロビジョニングサービスモジュール204と合意した方法で登録キーを作成することもできる。登録キーは、その登録キーを使用してコンピューティングデバイス202を識別するハードウェアやその他のコンポーネントに固有の情報を含むこともでき、あるいは含まなくてもよい。ソフトウェアプロビジョニングシステム200の一実装形態においては、それぞれの登録キーは、コンピューティングデバイス202のHWID(hardware identification)によって、コンピューティングデバイス202を一意に識別する。さらに別の実装形態においては、登録キーは、オペレーティングシステムのプロダクトキーなどの製造識別番号(production identification number)とすることができ、オペレーティングシステムの開発者や、そのオペレーティングシステムを使用するコンピューティングデバイスの製造業者など、プロビジョニングサービス以外のエンティティーによって作成することができる。この登録キーは、InitKey(Initialization key)とも呼ばれ、一連の英数字の形式、RFID(radio frequency identification)タグの形式、あるいはその他の任意の合意されたフォーマットとすることができる。
登録キーをユーザに提供した後、ブロック252において、プロビジョニングプログラム250は、その登録キーをプロビジョニングサービスモジュール204に登録することが必要かどうかを判定することができる。InitKeyが、はじめにプロビジョニングサービスモジュール204によって作成されたものである場合には、そのInitKeyは、プロビジョニングサービスモジュール204のデータベース内に既に保存されている可能性があるため、そのInitKeyを登録することは必要でないかもしれない。あるいは、合意されたプロシージャーに基づいてサードパーティーのベンダがInitKeyを作成できるような方法でソフトウェアプロビジョニングシステム200がセットアップされている場合には、そのようなベンダは、そのInitKeyを、作成した際に、あるいは少なくともユーザへ提供した際に、登録する必要があるかもしれない。
InitKeyを登録することが必要であると判定された場合には、ベンダは、ブロック254において、InitKeyをプロビジョニングサービスモジュール204に登録することができる。InitKeyの登録については、以降の図9においてさらに詳しく説明する。
InitKeyの登録後、ブロック256において、プロビジョニングプログラム250は、コンピューティングデバイス202のためのプロビジョニングパケット(「パケット」とも呼ばれる)を作成する。コンピューティングデバイス202は、プロビジョニングパケットを使用して、指定された時間だけ、指定された期間だけ、あるいはその他の任意の合意された方法でユーザがオペレーティングシステムを使用できるようにすることができる。ある代替実装形態においては、プロビジョニングパケットを使用して、指定された期間だけソフトウェアやアプリケーションなどのその他の任意のリソースをユーザが使用できるようにすることができる。プロビジョニングサービスモジュール204によって作成されるプロビジョニングパケットは、そのパケットのユーザに関する情報や、そのパケットによって認められる使用量などを含むことができる。たとえばベンダが、コンピューティングデバイス202を、そのコンピューティングデバイス202上でのオペレーティングシステムの1カ月間の前払いの使用権と共に販売している場合には、ブロック256において、プロビジョニングサービスモジュール204は、コンピューティングデバイス202がそのオペレーティングシステムを1カ月間だけ使用できるようにするコンピューティングデバイス202用のプロビジョニングパケットを作成することができる。しかしプロビジョニングパケットは、コンピューティングデバイス202のみがその特定のプロビジョニングパケットを使用できるような方法で作成することができる。プロビジョニングパケットの作成については、以降の図10においてさらに詳しく説明する。
ユーザが、コンピューティングデバイス202の電源をオンにすることによって、あるいはその他の任意の方法で、コンピューティングデバイス202上のオペレーティングシステムをアクティブ化しようと試みるとき、LPM224は、オペレーティングシステムのアクティブ化をコントロールすることができる。これは、プログラム250のブロック258によって示されている。そのユーザがこのオペレーティングシステムの使用を試みるのは、これが初めてであるとLPM224が検知した場合には、LPM224は、InitKeyを入力するようユーザに要求することができる。ある代替実装形態においては、LPM224は、コンピューティングデバイス202をスキャンして、コンピューティングデバイス202がInitKeyを既に投入されているかどうかを判定することができ、投入されている場合には、LPM224は、InitKeyをコンピューティングデバイス202から自動的に検索する。InitKeyをユーザから受け取った後、LPM224は、プロビジョニングサービスモジュール204と接続して、コンピューティングデバイス202のための証明書を要求することができ、この場合には、証明書を求める要求は、数ある情報の中でも、コンピューティングデバイス202のInitKeyおよびHWIDを含む。LPM224の設計およびオペレーションについては、以降で図7においてさらに詳しく説明する。
証明書を求める要求に応答して、ブロック260において、プロビジョニングサービスモジュール204は、証明書サービスモジュール210から証明書を受け取ることができ、その証明書を、配信サービスモジュール208を介してコンピューティングデバイス202へ送信する。証明書サービスモジュール210から証明書を作成して、その証明書をクライアントデバイスへ送信するプロセスについては、以降で図10においてさらに詳しく説明する。
プロビジョニングサービスモジュール204から証明書を受け取ると、ブロック262において、LPM224は、コンピューティングデバイス202上でオペレーティングシステムを使用するためにさらなるプロビジョニングパケットを入手することが必要かどうかを判定することができる。LPM224は、それまでコンピューティングデバイス202が使用された時間、現在の時間周期(current time period)、あるいは任意の類似のビジネスルールなどのビジネスルールに基づいて、プロビジョニングサービスモジュール204から受け取ったプロビジョニングパケットを消費することができる。以降でさらに説明するように、LPM224は、以前にプロビジョニングサービスモジュール204から受け取ったプロビジョニングパケットを含むローカルプロビジョニングパケットストレージモジュール(local provisioning packet storage module)を有することができる。LPM224は、そのようなローカルパケットストア(local packet store)から1つのプロビジョニングパケットを選択し、その中身を分析して、プロビジョニングサービスモジュール204にさらなるパケットを要求する必要があるかどうかを判定することができる。プロビジョニングパケットの選択、および選択されたプロビジョニングパケットの分析については、以降の図7においてさらに詳しく説明する。
さらなるプロビジョニングパケットを要求することが必要であると判定された場合には、ブロック264において、LPM224は、さらなるプロビジョニングパケットを受け取るためにプロビジョニングサービスモジュール204へ要求を送信することができる。LPM224は、配信サービスモジュール208のウェブサービスモジュール226に接続することによって、プロビジョニングサービスモジュール204の顧客サービス担当者に連絡を取るようコンピューティングデバイス202のユーザに要求することによって、あるいはその他の任意の所望の方法を含む複数の異なる方法で、そのような要求をPSMへ送信することができる。プロビジョニングパケットを求める要求は、クライアントデバイス、そのクライアントデバイスによって使用されるオペレーティングシステムなどを識別する情報を含むことができる。
プロビジョニングパケットを求める要求をコンピューティングデバイス202から受信すると、ブロック266において、プロビジョニングサービスモジュール204は、プロビジョニングパケットを作成して、LPM224へ配信することができる。LPM224に提供されるそれぞれのプロビジョニングパケットは、コンピューティングデバイス202、そのコンピューティングデバイス202によって使用されるオペレーティングシステム、パケットのタイプ、パケットのシーケンス番号、コンピューティングデバイス202がオペレーティングシステムを使用できる時間、あるいはオペレーティングシステムの使用期限が切れる日にちなどを識別するさまざまな情報を含むことができる。プロビジョニングパケット内の情報をLPM224が認証できるようにする電子署名を、そのプロビジョニングパケット内に含めることもできる。あるいは、別のセキュリティープロトコルのもとでは、プロビジョニングパケット内の情報をLPM224が認証できるようにする電子署名を、別途LPM224へ送信することもできる。プロビジョニングパケットの作成および配信については、以降の図12においてさらに詳しく説明する。
プロビジョニングパケットを受け取ると、LPM224は、ブロック268において、そのプロビジョニングパケットを処理することができ、これについては、以降の図7においてさらに詳しく説明する。プロビジョニングパケットの中身を分析した後に、そのプロビジョニングパケットがコンピューティングデバイス202上でのオペレーティングシステムの使用を可能にすることができるとLPM224が判定した場合には、ブロック270において、コンピューティングデバイス202は、そのコンピューティングデバイス202上でオペレーティングシステムを起動することができる。
(コアプロビジョニングシステム)
図5は、図3のコアプロビジョニングサービスモジュール206の詳細なブロック図を示している。コアプロビジョニングサービスモジュール206は、サーバ30、メインフレーム34、あるいはネットワーク10に通信可能に接続されているその他の任意の適切なデバイス上に実装することができる。コアプロビジョニングサービスモジュール206は、証明書サービスモジュール210、課金アダプタ218、コアDB 212、および配信サービスモジュール208と通信することができる。コアプロビジョニングサービス206は、課金アダプタと通信する課金インターフェース280と、証明書サービスモジュール210と通信するための証明書サービスインターフェース282と、配信サービスモジュール208と通信するための配信サービスインターフェース288と、アカウント更新モジュール284と、パケットジェネレータ(packet generator)286と、コアデータベース212および配信データベース214と通信するデータアクセスモジュール290とを含むことができる。
課金インターフェース280は、ウェブインターフェース、課金アダプタ218へのVPN、あるいは当業者によく知られているその他の任意の所望の方法を使用して実装することができる。ある特定の実装形態においては、課金インターフェース280は、MSMQ(Microsoft message queue)(商標)インターフェースを使用して実装することができる。あるいは、EAI(enterprise application interface)プロトコルを使用して設計されているMicrosoft Biztalk(商標)など、別の業界プロトコル(industry protocol)を使用して設計されているインターフェースを使用して、課金インターフェース280を実装することもできる。MSMQ(商標)テクノロジーを使用して、配信サービスインターフェース288およびデータアクセスモジュール290を実装することもできる。
課金インターフェースモジュール280は、コンピューティングデバイスのためのInitKeyの登録を求める要求を課金アダプタ218から受け取り、アカウント更新と通信して、アカウント更新情報を提供し、さまざまなコンピューティングデバイスをブートストラップし、コンピューティングデバイスのためのクライアント証明書を証明書サービスモジュール210に要求することなどができる。
アカウント更新モジュール284は、コンピューティングデバイス202のためのアカウントの作成、保持、および更新を担当することができる。アカウント更新モジュール284は、コンピューティングデバイス202のためのアカウントのセットアップおよび更新に関する課金アダプタ218からの情報を受信することができ、またパケットジェネレータ286と通信して、コンピューティングデバイス202のためのプロビジョニングパケットを作成および保存することができる。たとえば、引受会社(underwriter)、電気通信業者等は、コンピューティングデバイス202上でのオペレーティングシステムの一定の使用時間を販売し、課金アダプタ218を使用して、コンピューティングデバイス202のアカウントをしかるべく更新するためのアカウント更新要求をコアプロビジョニングサービス206へ送信することができる。課金アダプタ218からのアカウント更新要求を受信すると、アカウント更新モジュール284は、データアクセスモジュール290を使用してコアデータベース212への必要な入力を行い、パケットジェネレータと通信して、必要なプロビジョニングパケットを作成することができる。別の場合には、配信サービスモジュール208が、コンピューティングデバイス202のためのプロビジョニングパケットを購入したいというコンピューティングデバイス202からの要求を受け取ることができる。
一方、コンピューティングデバイス202が、証明書を求める、またはプロビジョニングパケットを求める要求をコアプロビジョニングサービス206へ送信すると、アカウント更新モジュール284は、コアデータベース212からプロビジョニングパケットを検索し、コンピューティングデバイス202のためのアカウント情報を更新し、配信サービスモジュール208と通信して、そのプロビジョニングパケットをコンピューティングデバイス202へ送信することができる。
コアプロビジョニングサービス206は、証明書を求める、またはプロビジョニングパケットを求める要求をコンピューティングデバイス202から受信すると、証明書サービスインターフェース282を使用して証明書サービスモジュール210と通信して、証明書を受け取ることや、証明書を確認することができる。証明書サービスモジュール210は、暗号化された証明書の作成および管理を可能にする標準的な証明書技術のうちのいずれかを使用して実装することができる。たとえば、証明書サービスモジュール210は、PKI(public key infrastructure)に準拠する認証局を使用して実装することができる。証明書サービスモジュール210は、キーマネージャー292を含むことができ、このキーマネージャー292は、暗号化された非対称的なツインキー(asymmetrical twin keys)の作成や、キーの購入者(key subscriber)の識別および認証などを担当する。証明書サービスモジュール210は、証明書ジェネレータ(certificate generator)を含むこともでき、この証明書ジェネレータは、デジタル証明書を用いて、そのような証明書の発行、保持、管理、取り消し、一時停止、復活、および更新のために、ならびに公開キーリポジトリ(public key repository)の作成および管理のために、公開キーをクライアントアカウントに結び付ける。クライアントのための証明書の作成および管理については、以降の図11においてさらに詳しく説明する。
証明書サービスインターフェース282は、パケットジェネレータ286によって作成されたプロビジョニングパケットがコンピューティングデバイス202へ送信される前に、証明書サービスモジュール210によって作成された証明書を使用することによって、そのプロビジョニングパケットに署名することができる。証明書サービスインターフェース282は、パケット要求などのクライアント署名を確認するために証明書サービスモジュール210と通信することもできる。
コアプロビジョニングサービス206は、プロビジョニングパケット、およびクライアントデバイス証明書などのその他のクライアントデバイスのブートストラップ関連情報(other client device bootstrapping information)を配信データベース214内に発行することを担当することができる。配信サービスモジュール208には、配信データベース214から情報を読み取ることを認めることができるが、アカウント情報の整合性を維持するために、配信サービスモジュール208には、一般に配信データベース214内への発行を行うことは認められないという点に留意されたい。
コアプロビジョニングサービス206内のさまざまなモジュールは、上述のさまざまなタスクを実行する別々のモジュールとして示されているが、この描写は、例示のみを目的としたものであり、実際には、これらの別々のモジュールのすべてを別々の方法で実装することができ、それによって、これらのモジュールのうちの1つまたは複数が結合されたり、これらのモジュールのすべてが別々の方法でお互いに対話することができたり、といった具合になるという点を理解されたい。
(コアデータベーススキーマ)
図6は、コアデータベース212の実装のために使用できるコアデータベーススキーマ310を示している。コアデータベーススキーマ310は、ブートストラップテーブル312、コンピューティングデバイステーブル314、ジョブテーブル316、パケットテーブル318、構成テーブル320、コンピューティングデバイスログテーブル322、タイプテーブル324、ジョブログテーブル326、およびステータステーブル328を含むことができる。コアデータベーススキーマ310は、よく知られているリレーショナルデータベースソフトウェアのうちのいずれかを使用して実装することができ、コアデータベーススキーマ310のさまざまなテーブルは、単一のデータベースサーバ上に、あるいはネットワーク10などのネットワークを介して相互に接続されている別々のデータベースサーバ上に格納することができる。
ブートストラップテーブル312は、ソフトウェアプロビジョニングシステム200を使用して提供することができるコンピューティングデバイス202などのコンピューティングデバイスのためのブートストラップデータを保存することができ、そのようなデータは、引受会社から課金アダプタ218を介して受信される。ブートストラップテーブル312内のそれぞれのレコードは、レコードIDフィールドと、コンピューティングデバイス用のIDと、コンピューティングデバイスのユーザに提供されたInitKeyと、パケットがコンピューティングデバイスに配信された回数を識別する配信回数と、コンピューティングデバイスのブートストラップステータスとを含む情報を含むことができる。
コンピューティングデバイステーブル314は、ソフトウェアプロビジョニングシステム200を使用して提供することができるコンピューティングデバイス202などのコンピューティングデバイスに関連したデータを保存することができる。コンピューティングデバイステーブル314は、コンピューティングデバイスへ送信される登録パケットやプロビジョニングパケットに追加されるコンピューティングデバイスに関連したさまざまなデータを保存することができる。コンピューティングデバイステーブル314は、コンピューティングデバイスを識別して、そのコンピューティングデバイスのステータスを追跡把握するために使用することができる。コンピューティングデバイステーブル314内のそれぞれのレコードは、レコードIDフィールド、コンピューティングデバイスのハードウェア構成を指定するハードウェアID、コンピューティングデバイスへ送信された前回のプロビジョニングパケットのシーケンス番号を表す直近のシーケンス番号などを含む情報を含むことができる。
ジョブテーブル316は、プロビジョニングサービスモジュール204へのさまざまなプロビジョニング要求(provisioning request)に基づいて作成できるデータを保存し、それぞれのプロビジョニング要求は、ジョブテーブル316内に新たなレコードを作成する。ジョブテーブル316内のレコードは、さまざまなプロビジョニング要求のプロビジョニングジョブステータス(provisioning job status)を追跡把握するために使用することができる。ジョブテーブル316内のそれぞれのレコードは、レコードIDフィールド、コンピューティングデバイスID、ジョブタイプID、ジョブトラッキングID、プロビジョニング要求のためのトークン、プロビジョニング要求を行っているコンピューティングデバイスのためのアカウントID、プロビジョニング要求の日付および時間、プロビジョニング要求の処理のステータスなどを含む情報を含む。
パケットテーブル318は、ジョブデータに基づいて作成できるパケットデータを保存し、この場合には、1つのジョブが、1つまたは複数のパケットを作成することができる。パケットテーブルは、配信サービスモジュール208から、または課金アダプタ218から受信されるプロビジョニング要求に応答して作成されるさまざまなプロビジョニングパケットの配信ステータスを追跡把握するために使用される。パケットテーブル内のそれぞれのレコードは、レコードID、パケットが作成されるようにするジョブを表すジョブID、パケット内に含まれているさまざまなデータ、特定のコンピューティングデバイスから最後のパケットダウンロード確認応答を受信してからその特定のコンピューティングデバイスにパケットが何回配信されたかを示す配信回数、およびパケットの処理の段階を示すステータスに関する情報を含むことができる。
構成テーブル320は、コアデータベース212を実装するために使用されているサーバについて記述するサーバ構成データの名前−値のペア(name−value pair)のすべてを表すデータを保存することができる。構成テーブル320内のそれぞれのレコードは、サーバのネームスペースや、サーバの名前−値のペアの名前および設定に関する情報を含むことができる。
コンピューティングデバイスログテーブル322は、コンピューティングデバイスに関連した(そのコンピューティングデバイスに関連したジョブ以外の)さまざまなアクティビティーを記録することができる。コンピューティングデバイスログテーブル322内のそれぞれのレコードは、レコードID、コンピューティングデバイスID、コンピューティングデバイスのタイプ、コンピューティングデバイスについて記述するデータ、およびコンピューティングデバイスがプロビジョニングサービスモジュール204を用いてログインされた時間に関する情報を含むことができる。たとえばコンピューティングデバイスのタイプは、ブートストラップレコードが作成済みのタイプ、ブートストラップが進行中のタイプ、ブートストラップが完了したタイプ、(指定された数を超える証明書がコンピューティングデバイスへ配信され、そのコンピューティングデバイスから確認応答が受信されていないことを示す)ブートストラップが制限を超えたタイプ、証明書が要求されたタイプ、パケットが要求されたタイプなどのうちのいずれか1つとすることができる。
タイプテーブル324は、ジョブテーブル316、コンピューティングデバイスログテーブル322、およびジョブログテーブル326によって使用されるさまざまな列挙可能な(enumerable)タイプを事前に定義するために使用することができる。
ジョブログテーブル326は、ジョブやパケットに関連するさまざまなアクティビティーを記録するために使用することができ、この場合には、それぞれのレコードは、レコードID、ジョブID、ジョブのタイプ、ジョブの説明、ジョブが記録された時間などを含む情報を含むことができる。
ステータステーブル328は、ブートストラップテーブル312、コンピューティングデバイステーブル314、ジョブテーブル316、およびパケットテーブル318内で使用されるさまざまな列挙可能なステータスを事前に定義するために使用することができる。
(配信データベーススキーマ)
図7は、配信データベース214の実装のために使用できる配信データベーススキーマ340を示している。配信データベーススキーマ340は、配信ブートストラップテーブル342および配信パケットテーブル344を含むことができる。配信データベーススキーマ340は、よく知られているリレーショナルデータベースソフトウェアのうちのいずれかを使用して実装することができ、配信データベーススキーマ340のさまざまなテーブルは、単一のデータベースサーバ上に、あるいはネットワーク10などのネットワークを介して相互に接続されている別々のデータベースサーバ上に格納することができる。
配信ブートストラップテーブル342は、コンピューティングデバイスの登録中にコアプロビジョニングサービス206によって発行されるブートストラップデータを保存することができる。配信ブートストラップテーブル342のそれぞれのレコードは、レコードIDと、特定のコンピューティングデバイスに関連したInitKeyと、その特定のコンピューティングデバイスのハードウェアIDとを含む情報を含むことができ、配信ブートストラップテーブル342内のレコードは、その特定のコンピューティングデバイスのためのブートストラップが完了したときに、コアプロビジョニングサービス206によって削除することができる。
配信パケットテーブル344は、コアプロビジョニングサービス206によって作成されたパケットを保存することができる。配信パケットテーブル344のそれぞれのレコードは、特定のパケットに対応することができ、レコードIDと、その特定のパケットを使用することになるコンピューティングデバイスについて記述するハードウェアIDと、その特定のパケットのパケットシーケンス番号と、その特定のパケットの中身と、確認応答が受信されない状態でその特定のパケットがクライアントデバイスへ何回送信されたかを指定する配信回数と、配信サービスモジュール208がその特定のパケットをクライアントデバイスへ配信しようと試みることができる回数を指定する最大配信回数とを含む情報を含む。特定のパケットが、クライアントコンピューティングデバイスによって首尾よくダウンロードされると、その特定のパケットに関連したレコードを配信パケットテーブル344から削除することができる。また、特定のパケットの配信回数が最大配信回数を超えた場合には、その特定のパケットに関連したレコードを配信パケットテーブル344から削除することもできる。
(ローカルプロビジョニングモジュール)
図8は、LPM224のさらに詳細なブロック図を示している。LPM224は、コンピューティングデバイス202などのコンピューティングデバイス上に常駐しているソフトウェアプロビジョニングシステム200のクライアントサイドのコンポーネントである。LPM224は、ソフトウェアプロビジョニングシステム200によって提供されるサービスを使用してコンピューティングデバイスのユーザと対話することや、ネットワーク10を介して配信サービスモジュール208と対話することなどを含むさまざまな機能を実行することができる。
LPM224は、クライアントコンピューティングデバイス202によって使用される特定のログインプログラムと対話することによって、クライアントコンピューティングデバイス202上での特定の状態を強制する機能を実行することができる。クライアントデバイスが、ログインロジックとしてWPA(Windows(登録商標) product activation)システムを使用している特定の実装形態においては、LPM224は、WPAと対話して、クライアントコンピューティングデバイス202上での特定の状態を強制することができる。しかし、ある代替実装形態においては、LPM224は、その他の任意の適切なオペレーティングシステムログインプログラムと対話することができる。LPM224の実装形態は、ソフトウェア内に実装され、かつWPAによって使用されるログインプログラムへとリンクされるライブラリとして構成されているさまざまな論理コンポーネントをグループ化したものとして、図8に記載されている。しかし、LPM224の代替実装形態においては、LPM224のさまざまな論理コンポーネントのうちの1つまたは複数をハードウェア内に実装することができる。
具体的には、LPM224は、特定の状態で機能することをコンピューティングデバイス202に強制するための強制アドオンモジュール(enforcement add−on module)352と、ソフトウェアプロビジョニングシステム200によって提供されるリソースの使用状況を測定するための測定モジュール(metering module)354と、コアプロビジョニングサービス206によって提供されるプロビジョニングパケットを使用して処理を行うためのトランザクションエンジン356と、プロビジョニングパケット用の安全なストレージを提供するためのセキュアストレージマネージャー(secure storage manager)358と、コアプロビジョニングサービス206と通信するための通信モジュール360と、ユーザと対話するためのユーザ経験モジュール(user experience module)362とを含むことができる。
強制アドオンモジュール352は、コンピューティングデバイス202のログインロジック364内に挿入することができる。ユーザが、ログインロジック364を使用してコンピューティングデバイス202にログオンしたときに、ログインロジック364内の強制アドオンモジュール352は、プロビジョニングパケットの残量情報を求めて測定モジュール354にクエリーを行うことができる。強制アドオンモジュール352は、コンピューティングデバイス202が十分なプロビジョニングパケットを有していると判定した場合には、ログインロジック364がその通常のルーチン内で機能できるようにすることができ、またユーザがコンピューティングデバイス202にログオンできるようにすることができる。しかし、強制アドオンモジュール352は、コンピューティングデバイス202が十分なプロビジョニングパケットを有していないと判定した場合には、非アクティブな状態に入るようコンピューティングデバイス202に強制する。そのような非アクティブな状態においては、コンピューティングデバイス202を起動するのにちょうど必要なだけの限られたユーザインターフェースが、コンピューティングデバイス202のユーザに提供される。
測定モジュール354は、残量マネージャー(balance manager)366を含むことができ、この残量マネージャー366は、提供されたリソースを使用するために利用可能な現在の残量を読み取って確認し、現在の残量を更新し、プロビジョニングパケットを処理する。測定モジュール354は、構成マネージャー368と、常に増進するタイマを維持するためのリライアブルクロックマネージャー(reliable clock manager)370とを含むこともできる。リライアブルクロックマネージャー370は、常に増進するタイマを維持するという課題を達成するために、リライアブルハードウェアクロック(reliable hardware clock)372を使用することができる。残量マネージャー366およびリライアブルクロックマネージャー370は、LPM224の安全なオペレーションにとって非常に敏感かつ重要であり、したがって、LPM224のオペレーション中にさまざまなセキュリティー上の攻撃にさらされる可能性が高い。
強制アドオンモジュール352および測定モジュール354は、コンピューティングデバイス202上で提供されたリソースのアクティブ化および非アクティブ化を実施するために連携することができる。強制アドオンモジュール352は、特定のイベントに基づいて残量マネージャー366を呼び出すログインロジック364内のイベントディスパッチャーとして機能することができ、その一方で、残量マネージャー366は、イベントに応答して呼び出された際にどのアクションを取るべきかを判断することができる。強制アドオンモジュール352に残量マネージャー366をアクティブ化させることができるさまざまなイベントの例は、(1)ログオンイベント、(2)システムアンロックイベント、(3)ハイバネーションイベントからの復旧、(4)スタンバイイベントからの起動、(5)ユーザによってトリガーされたイベント、(6)ログオフイベント、(7)パケットのダウンロード、(8)タイマチック(timer tick)、(10)システムロックイベント、(11)スクリーンセーバの始動イベント、(12)スクリーンセーバの停止イベントなどである。残量マネージャー366は、そのイベントを入力として受け取り、結果としてのアクションを強制アドオンモジュール352に返すことができる。
たとえば、ユーザがログオンしているときに、強制アドオンモジュール352は、ユーザログオンイベントを残量マネージャー366へ送信することができる。そのユーザログオンイベントに応答して、残量マネージャー366は、提供されたリソースを使用するために利用可能な現在の残量を問い合わせることができ、残量が十分である場合には、残量マネージャー366は、ログオンアクションを強制アドオンモジュール352に返すことができる。しかし、残量が十分でない場合には、強制アドオンモジュール352は、ログインロジック364に通知ユーザインターフェース(UI)398を返させることができ、この場合には、この通知UIによって、ユーザは、プロビジョニングサービスモジュール204からさらなるプロビジョニングパケットを購入することによって残量を増やし、したがってコンピューティングデバイス202をアクティブ化することができる。
トランザクションエンジン356は、残量マネージャー366内の残量およびパケット消費カウンタを更新するためにプロビジョニングパケットを処理することができる。トランザクションエンジン356は、残量を更新するために、いかなるプロビジョニングパケットも必ず1回だけ消費されるようにすることができる。トランザクションエンジン356は、残量およびパケット消費カウンタを一緒に更新するように、したがって、残量およびパケット消費カウンタの双方が更新されるか、または残量およびパケット消費カウンタのどちらも更新されないかのいずれかになるように設計することができる。あるいは、トランザクションエンジン356は、何らかの予期せぬイベントによって残量データが駄目になることのないように残量データの一貫性を維持するために使用することもできる。トランザクションエンジン356の機能の一例を以降で提供する。
この例では、ユーザが、提供されたリソースのための使用時間を購入するために2枚のプリペイドカードを使用し、第1のカードは10時間用で、第2のカードは20時間用であると仮定する。プロビジョニングサービスモジュール204は、合計の残量を保持していないため、10時間用および20時間用という2つの別々のセットのライセンス情報が、プロビジョニングサービスモジュール204において作成される。ユーザが、プロビジョニングサービスモジュール204に連絡を取って、プロビジョニングパケットをコンピューティングデバイス202上にダウンロードする場合には、コンピューティングデバイス202上にダウンロードされるプロビジョニングパケットのそれぞれは、一意のプロビジョニングパケット番号を有する。トランザクションエンジン356は、第1のパケットを処理する際に、パケット消費カウンタを進めて、残量を10時間増やし、次いで第2のパケットを処理する際に、再びパケット消費カウンタを進めて、残量をさらに20時間増やす。
セキュアードストレージマネージャー(secured storage manager)358は、残量データをユーザが改ざんできないように、および残量データにLPM224のみがアクセスできるように、保護された方法でLPM224が残量データを保存できるようにすることができる。プロビジョニングパケットは、LPM224によってダウンロードされた後、セキュアードストレージマネージャー358内に保存することができる。同様に、残量カウンタおよびパケット消費カウンタも、セキュアードストレージマネージャー358内に保存することができる。図示されている実装形態においては、セキュアードストレージマネージャー358は、dll(dynamic link library)として実装され、それによって、ユーザ経験モジュール362は、セキュアードストレージマネージャー358にアクセスすることができる。
セキュアードストレージマネージャー358内に保存されているデータの安全を確保するために、データ暗号化キーを使用して、データをセキュアードストレージマネージャー358内に保存することができ、データ暗号化キーを有するモジュールのみが、セキュアードストレージマネージャー358からデータを読み取ることができる。セキュアードストレージマネージャー358は、LSAデータベース376と通信するためのローカルセキュリティーオーソリティー(LSA)サブシステム(local security authority (LSA) subsystem)374、セキュアハードウェアストレージ(secure hardware storage)380と通信するためのストレージドライバ378、およびコンピューティングデバイス202上のファイル384と通信するためのファイルシステムドライバ382と通信することができる。さらなるセキュリティーのために、セキュアードストレージマネージャー358の代替実装形態は、セキュアードストレージマネージャー358内に保存されているデータの複数のコピーを使用することもでき、それによって、それぞれのコピーを相互参照して、データのどの単一のコピーにも改ざんがまったくないようにすることができる。ここで論じているLPM224の実装形態では、セキュアードストレージマネージャー358はソフトウェア内に実装されているが、ある代替実装形態においては、セキュアードストレージマネージャー358をハードウェア内に実装することもできる。
通信モジュール360は、プロビジョニングパケットおよび/または証明書をプロビジョニングサービスモジュール204に要求するためのパケット/証明書要求マネージャー386と、さらなるプロビジョニングパケットを課金システム216から、および/またはプロビジョニングサービスモジュール204から購入するための購入マネージャー388と、LPM224がネットワーク10と通信できるようにするウェブサービス通信マネージャー390とを含むことができる。
パケット/証明書要求マネージャー386は、ユーザ経験モジュール362からの要求を受信して、パケットまたは証明書をプロビジョニングサービスモジュール204に要求することができる。たとえば、ユーザがInitKeyをUIに入力することによってクライアントデバイスに初めてログオンしている場合には、ユーザ経験モジュール362は、そのInitKeyをパケット/証明書要求マネージャー386に渡すことができ、パケット/証明書要求マネージャー386は、プロビジョニングサービスモジュール204と通信して、プロビジョニングサービスモジュール204から証明書を受け取ることができる。パケット/証明書要求マネージャー386は、証明書またはプロビジョニングパケットが首尾よくダウンロードされたらプロビジョニングサービスモジュール204に確認応答を行うことを担当することもできる。パケット/証明書要求マネージャー386は、プロビジョニングプロトコルを使用して、プロビジョニングサービスモジュール204と通信することができる。パケット/証明書要求マネージャー386によってダウンロードされたパケットは、セキュアードストレージマネージャー358内に保存することができる。
購入マネージャー388は、コンピューティングデバイス202のユーザから支払情報を受信して、その支払情報を課金システム216へ、またはプロビジョニングサービスモジュール204へ伝達することによって、そのユーザがさらなるプロビジョニングパケットを購入できるようにすることができる。パケット/証明書要求マネージャー386および購入マネージャー388の双方は、ウェブサービス通信マネージャー390を使用して、ネットワーク10と通信することができる。ウェブサービス通信マネージャーは、ネットワークサービスマネージャー392およびネットワークインターフェースカード(NIC)394を使用して、ネットワーク10と通信することができる。この実装形態においては、ネットワーク10と通信するために、ウェブサービス通信マネージャー390が使用されているが、代替実装形態においては、ネットワーク10と通信するために、FTP(file transfer protocol)ドライバなどのその他の通信ツールを使用することができるという点に留意されたい。
ユーザ経験モジュール362は、パケット/証明書要求マネージャー386がプロビジョニングサービスモジュール204から証明書をダウンロードできるようにするInitKeyを入力するようユーザに要求するためのアクティブ化ユーザインターフェース(UI)396と、LPM224がユーザと対話できるようにする通知UI398とを含むことができる。たとえばユーザが、提供されたリソースを使用するためのプリペイドカードを購入している場合には、アクティブ化UI396は、そのプリペイドカードによって提供される番号を入力するようユーザに要求し、パケット/証明書要求マネージャー386を呼び出して、そのプリペイドカード番号に対応する最新のプロビジョニングパケットをダウンロードすることができる。アクティブ化UI396は、購入マネージャー388を呼び出して、ユーザがさらなるプロビジョニングパケットを購入できるようにすることもでき、また購入の完了時にパケット/証明書要求マネージャー386を自動的に呼び出して、その購入に対応するプロビジョニングパケットをダウンロードできるように設計することができる。
通知UI398は、ユーザが現在の残量情報や使用履歴などを問い合わせることができるようにするさまざまなユーザインターフェースを含むことができる。通知UI398は、ユーザによって、またはログインロジック364によって呼び出すことができる。提供されたリソースを使用するために利用可能な残量が少ない状況では、ログインロジック364は、通知UI398を呼び出して、さらなる購入が必要であることをユーザに知らせることができる。通知UIは、絶え間なくアクティブであることができ、タスクバーアイコン、コントロールパネルアプレット、バルーンポップアップ(balloon pop−up)を介して、またはその他の任意の一般に知られているUIの方法を使用することによって、通知サービスをユーザに提供することができる。
ソフトウェアプロビジョニングシステム200のさまざまなコンポーネントについて説明したが、以降の図9〜図12では、ソフトウェアプロビジョニングシステム200のオペレーションについてさらに詳しく説明する。
(InitKeyの登録)
図9は、InitKeyをコアプロビジョニングサービス206に登録するために使用できる登録プログラム430のフローチャートを示している。ブロック432において、InitKeyのプロバイダは、InitKey登録要求をコアプロビジョニングサービス206へ送信する。前述のように、このプロバイダは、コンピューティングデバイス202のベンダ、コンピューティングデバイス202のオペレーティングシステム用の使用権のベンダ、ソフトウェアプロビジョニングシステム200の顧客サービス担当者(CSR、customer service representative)など、サードパーティーによって管理できる課金システム216とすることができる。
InitKey登録要求は、コアプロビジョニングサービス206のメッセージ待ち行列内で受信することができる。コアプロビジョニングサービス206は、そのメッセージ待ち行列内でInitKey登録要求を認識すると、ブロック434において、登録プロセスを開始することができる。
ブロック436においては、InitKeyをコアデータベース212のブートストラップテーブル312に追加することができ、登録プログラム430は、ブートストラップステータスを「Created」に設定することができる。
その後、ブロック438において、コアプロビジョニングサービス206は、「Bootstrap Created」のメッセージをコンピューティングデバイスログテーブル322内に記録することができる。
最後に、ブロック440において、コアプロビジョニングサービス206は、「Bootstrap Publish」のメッセージを配信データベース214のメッセージ待ち行列へ送信することができる。
(パケットの作成)
図10は、コンピューティングデバイス202のLPM224によって使用されるプロビジョニングパケットを作成するために使用できるパケット作成プログラム450のフローチャートを示している。
ブロック452において、課金アダプタ218は、プロビジョニングパケットを求めるプロビジョニング要求メッセージをコアプロビジョニングサービス206へ送信することができる。コアプロビジョニングサービス206は、複数の引受会社に接続することができるため、このようなプロビジョニング要求メッセージは、課金アダプタ218をコアプロビジョニングサービス206へ接続するMSMQインターフェース内で待ち行列に入れられる。
プロビジョニング要求メッセージを課金アダプタ218から検索すると、ブロック454において、コアプロビジョニングサービス206は、パケット作成トランザクションを開始することができる。
ブロック456において、コアプロビジョニングサービス206は、プロビジョニング要求メッセージからのハードウェアIDを使用して、新たなコンピューティングデバイスレコードをコンピューティングデバイステーブル314に追加することができる。しかし、そのハードウェアIDを含むレコードが、コンピューティングデバイステーブル314内に既に存在する場合には、新たなコンピューティングデバイスレコードを追加することは必要でないかもしれない。
その後、ブロック458において、コアプロビジョニングサービス206は、新たなジョブレコードをジョブテーブル316に追加して、プロビジョニングパケットを求める新たなジョブ要求を記録することができる。コアプロビジョニングサービス206は、新たに追加されたジョブレコードのステータスを「Created」に設定することができる。ブロック460において、コアプロビジョニングサービス206は、プロビジョニング要求メッセージの日付および時間と共に、新たなレコードをジョブログテーブル326内に追加することができる。
ブロック462において、コアプロビジョニングサービス206は、プロビジョニング要求メッセージに基づいてプロビジョニングパケットを作成することができる。パケットの作成は、プロビジョニング要求メッセージ内で提供される証明書を確認すること、プロビジョニングパケットの使用時間の量を追加することなどを含むことができる。
ブロック464において、コアプロビジョニングサービス206は、キーマネージャー292と通信して、安全なキーを用いてプロビジョニングパケットに署名し、XMLベースのプロビジョニングパケットを作成することができる。
プロビジョニングパケットが作成されると、ブロック466において、コアプロビジョニングサービス206は、コンピューティングデバイステーブル314内の最後のシーケンス番号を1つ増やすことができる。
ブロック468において、コアプロビジョニングサービス206は、新たに作成されたプロビジョニングパケットをパケットテーブル318内に挿入し、パケットテーブル318内のプロビジョニングパケットのステータスを「packet created」に設定することができる。
その後、ブロック370において、コアプロビジョニングサービス206は、「packet created」のメッセージをジョブログテーブル326内に記録することができる。そして最後に、ブロック372において、コアプロビジョニングサービス206は、「packet publish」のメッセージを配信データベースライタ220へのメッセージ待ち行列内に送信して、そのパケットを配信データベース214内に追加することができる。
(ブートストラッピング)
図11は、証明書を証明書サービスモジュール210に要求して、その証明書をコンピューティングデバイス202へ送信するために使用できるブートストラッピングプログラム500のフローチャートを示している。
ブロック502において、配信サービスモジュール208は、コンピューティングデバイス202などのコンピューティングデバイスからの証明書要求を受信することができる。この証明書要求は、パケット/証明書要求マネージャー386によって作成し、InitKeyなどのコンピューティングデバイス202用のハードウェアIDを含む情報を含むことができる。
ブロック504において、コアプロビジョニングサービス206は、ブートストラップテーブル312内でInitKeyを探すことができる。ブロック506において、コアプロビジョニングサービス206は、コンピューティングデバイステーブル314をチェックして、証明書要求内で提供されているハードウェアIDに関するレコードが含まれているかどうかを確認することができる。コンピューティングデバイステーブル314内に何のレコードも存在しない場合には、コアプロビジョニングサービス206は、レコードをコンピューティングデバイステーブル314内に追加することができる。
ブロック508において、コアプロビジョニングサービス206は、「computing device created」のメッセージをコンピューティングデバイスログテーブル322内に記録することができる。その後、ブロック510において、コアプロビジョニングサービス206は、証明書要求トランザクションの処理を開始することができる。
ブロック512において、コアプロビジョニングサービス206は、ブートストラップテーブル312をチェックして、配信回数が、構成テーブル320によって指定された最大配信回数よりも多いかどうかを確認することができ、そうである場合には、コントロールをブロック524に移すことができる。
配信回数が最大配信回数よりも多くない場合には、ブロック514において、コアプロビジョニングサービス206は、ブートストラップテーブル312内のブートストラップステータスをチェックすることができる。ブートストラップステータスが、「created」または「In Progress」に相当しない場合には、コントロールをブロック524に移すことができる。
しかしブートストラップステータスが、「created」または「In Progress」のいずれかに相当する場合には、ブロック516において、コアプロビジョニングサービス206は、ブートストラップテーブル312内のブートストラップステータスを「In Progress」に更新することができる。
その後、ブロック518において、コアプロビジョニングサービス206は、「bootstrap in progress」のメッセージをコンピューティングデバイスログテーブル322内に記録することができる。
ブロック520において、コアプロビジョニングサービス206は、証明書ユーティリティーを呼び出して、新たなクライアント証明書を作成することができる。新たな証明書を証明書ユーティリティーから受け取ると、ブロック522において、コアプロビジョニングサービス206は、そのクライアント証明書を配信サービスモジュール208のメッセージ待ち行列内に送信することができ、コントロールをブロック530に移すことができる。
ブロック524において、コアプロビジョニングサービス206は、ブートストラップテーブル内の配信回数が最大配信回数を超えたことによって、ブートストラップテーブル312内のブートストラップステータスを「over limit」に更新することができる。この「over limit」のステータスは、コアプロビジョニングサービス206が、コンピューティングデバイス202のための証明書を発行したことに応答してLPM224から適切な確認応答を受信していないということを意味する。したがって、ブロック526において、コアプロビジョニングサービス206は、証明書を要求しているコンピューティングデバイスから確認応答がまったく受信されていないということを示す「bootstrap over limit」のメッセージをコンピューティングデバイスログテーブル322内に記録することができる。
ブロック528において、コアプロビジョニングサービス206は、「remove bootstrap」のメッセージを配信データベースライタ220のメッセージ待ち行列内に送信して、ブートストラップレコードを配信データベース214から削除することができる。
ブロック530は、証明書がクライアントへ送信されると、ブロック522からコントロールを受け取ることができ、したがって、証明書要求の処理の終了を表している。
証明書要求が処理されると、ブロック532において、コアプロビジョニングサービス206は、配信サービスモジュール208のメッセージ待ち行列内の証明書ダウンロード完了メッセージを受信することができる。このような証明書ダウンロード完了メッセージは、証明書が首尾よくダウンロードされた後に、LPM224のパケット/証明書要求マネージャー386によって送信することができる。
証明書ダウンロード完了メッセージを受信すると、ブロック534において、コアプロビジョニングサービス206は、ブートストラップ完了トランザクション(bootstrap completed transaction)を開始することができる。ブロック536において、コアプロビジョニングサービス206は、ブートストラップテーブル312内のブートストラップステータスを「completed」に更新することができる。その後、ブロック538において、コアプロビジョニングサービス206は、証明書要求を送信しているコンピューティングデバイスのためのブートストラッププロセスが完了したということを示す「bootstrap completed」のメッセージをコンピューティングデバイスログテーブル322内に記録することができる。
最後に、ブロック540において、コアプロビジョニングサービス206は、「remove bootstrap」のメッセージを配信データベースライタ220のメッセージ待ち行列内に送信して、ブートストラップレコードを配信データベース214のブートストラップテーブル342から削除することができる。
(パケットの配信)
図12は、プロビジョニングパケットをコアプロビジョニングサービス206からコンピューティングデバイス202などのさまざまなコンピューティングデバイスへ配信するために使用できるパケット配信プログラム550のためのフローチャートを示している。パケット配信プログラム550は、パケット/証明書要求マネージャー386によって、コンピューティングデバイスのユーザを補助する顧客サービス担当者によって、あるいはその他の類似の方法で開始することができる。
ブロック552において、コアプロビジョニングサービス206は、配信サービスモジュール208のメッセージ待ち行列内のパケットダウンロードメッセージを受信することができる。このようなメッセージは、たとえばコンピューティングデバイス202のパケット/証明書要求マネージャー386によって送信することができる。パケットダウンロードメッセージを受信すると、ブロック554において、コアプロビジョニングサービス206は、パケット要求トランザクションを開始することができる。
パケット要求トランザクションのはじめに、ブロック556において、確認サービス209は、パケットテーブル318内のステータスが、パケットダウンロードメッセージを送信しているコンピューティングデバイスがコアプロビジョニングサービス206による以前のパケット送信に対して確認応答を行っていないということを指定する「packet over limit」であるかどうかを判定することができ、コントロールは、ブロック564に移される。
パケットテーブル318内のステータスが「packet over limit」ではないと判定された場合には、ブロック558において、コアプロビジョニングサービス206は、パケットテーブル318内のステータスを「delivery in progress」に更新することができる。
その後、ブロック560において、コアプロビジョニングサービス206は、パケットテーブル318内の配信回数を、パケットダウンロードメッセージ内で指定されている値に更新することができる。たとえば、パケットダウンロードメッセージが、2つのパケットをコアプロビジョニングサービス206に要求している場合には、パケットテーブル318内の配信回数は、2だけ増加される。ブロック562において、コアプロビジョニングサービス206は、「packet delivery in progress」のメッセージをジョブログテーブル326内に記録することができる。
ブロック564は、コンピューティングデバイスからの確認応答がないことによってコントロールを受け取ることができ、したがってブロック564において、コアプロビジョニングサービス206は、パケットテーブル318内のステータスを「over limit」に更新することができる。
ブロック566において、確認サービス209は、パケットテーブル318内の配信回数を、パケットダウンロードメッセージ内で指定されている値に更新することができ、ブロック568において、CPSは、ジョブテーブル316のステータスを「error」に更新する。最後に、ブロック570において、確認サービス209は、「packet over limit」のメッセージをジョブログテーブル326内に記録することができる。
ブロック572において、配信サービス208は、パケット要求トランザクションの処理を終了することができ、確認サービス209は、パケットを要求しているコンピューティングデバイスからの確認応答を待つことができる。ブロック574において、確認サービス209は、配信サービスモジュール208のメッセージ待ち行列内へのパケットダウンロード完了メッセージを受信することができる。このパケットダウンロード完了メッセージは、要求されているパッケージが首尾よくダウンロードされた際に、パケット/証明書要求マネージャー386によって送信することができる。
パケットダウンロード完了メッセージを受信すると、ブロック576において、確認サービス209は、パケットダウンロード完了トランザクションを開始することができる。パケットダウンロード完了トランザクションの一環として、ブロック578において、確認サービスは、パケットテーブル318内のステータスを「completed」に更新し、ブロック580において、ジョブテーブル内のステータスも「completed」に更新することができる。
さらに、ブロック580において、コアプロビジョニングサービス206は、「job completed」のメッセージをジョブログテーブル326内に記録し、ブロック582において、パケットダウンロード完了トランザクションを終了することができる。
ソフトウェアプロビジョニングシステム200のさまざまなコンポーネントのオペレーションについて説明してきたが、以降の図13〜図16では、さまざまな状況のもとでのユーザの経験を示すさまざまな例示的なシナリオについて説明する。
(シナリオ1−ログイン中の残量の確認)
図13は、LPM224のオペレーション中の第1のシナリオを示すフローチャート600を示している。具体的には、フローチャート600は、ユーザがコンピュータにログオンしている場合のシナリオを示している。図13に示されているように、ブロック602において、ユーザがコンピューティングデバイス202へのログオンを試みているときに、強制アドオンモジュール352は、ログオンイベントを残量マネージャー366に送信することができる。このログオンイベントに応答して、ブロック604において、残量マネージャー366は、コンピューティングデバイス202上でオペレーティングシステムを使用するために利用可能な残量を確認することができる。残量が十分である場合には、ブロック606において、残量マネージャー366は、オペレーティングシステムを通常の方法でアクティブ化するようログインロジック364に通知することができる。
しかし、残量が十分でないと残量マネージャー366が判定した場合には、ブロック608において、残量マネージャー366は、アクティブ化UI396をアクティブ化することができる。アクティブ化UIをアクティブ化する目的は、ユーザがさらなる使用時間を購入できるようにすることである。
ブロック610において、アクティブ化UI396は、購入マネージャー388をアクティブ化することができ、ユーザは、購入を行うことができる。ユーザは、課金システム216に接続することによって、顧客サービス担当者に電話をかけることによって、あるいはその他の任意の所望の方法で、購入を行うことができる。その後、ブロック612において、証明書/パケット要求マネージャー386は、プロビジョニングパケットをダウンロードすることができる。
証明書/パケット要求マネージャー386は、ダウンロードされたプロビジョニングパケットを安全なストレージのためのセキュアストアマネージャ358に提供することができる。ブロック614において、残量マネージャー366は、ダウンロードされたプロビジョニングパケットを分析することができ、ブロック616において、コンピューティングデバイス202にとって利用可能なプロビジョニング残量(provisioning balance)をしかるべく増やすことができる。
(シナリオ2−ログオン後の使用権の購入)
図14は、LPM224のオペレーション中の第2のシナリオを示すフローチャート620を示している。具体的には、フローチャート620は、ユーザがコンピューティングデバイス202に既にログオンしていて、コントロールパネルアプレットまたはタスクバーアイコンを選択して、残量マネージャ366をアクティブ化する場合のシナリオを示している。
ブロック622において、ユーザは、イベントを残量マネージャー366に送信するコントロールパネルアプレットをアクティブ化することができる。残量マネージャー366は、現在の残量情報をユーザに表示して、アクティブ化UI396を呼び出し、それによって購入マネージャー388をアクティブ化することができる。ユーザがさらなる時間の購入を行うと、証明書/パケット要求マネージャー386は、プロビジョニングパケットをダウンロードすることができる。
証明書/パケット要求マネージャー386は、ダウンロードされたプロビジョニングパケットを安全なストレージのためのセキュアストアマネージャ358に提供することができる。ブロック628において、残量マネージャー366は、ダウンロードされたプロビジョニングパケットを分析することができ、ブロック630において、コンピューティングデバイス202にとって利用可能なプロビジョニング残量をしかるべく増やすことができる。
(シナリオ3−ログオン後の残量の更新および通知)
図15は、LPM224のオペレーション中の第3のシナリオを示すフローチャート640を示している。具体的には、フローチャート640は、ユーザがコンピューティングデバイス202に既にログオンしていて、ログインロジック364がリライアブルクロックマネージャー370からのタイムチックの結果としてのイベントを受信する場合のシナリオを示している。
ブロック642において、ログインロジック364は、リライアブルクロックマネージャー370からタイムチックイベントを受信することができる。結果として、ログインロジック364は、タイムチックイベントを残量マネージャー366へ送信することができる。
そのタイムチックイベントに応答して、ブロック644において、残量マネージャー366は、コンピューティングデバイス202上でオペレーティングシステムを使用するために利用可能な残量を更新することができる。その後、ブロック646において、残量マネージャー366は、利用可能な残量をチェックする。その評価の結果に基づいて、ブロック648において、残量マネージャー366は、適切なアクションを取ることができ、このアクションは、たとえば、アクティブ化UI396をアクティブ化すること、ユーザをログオフさせること、その他の適切なアクションを継続することとすることができる。
(シナリオ4−コンピューティングデバイスの非アクティブ化)
図16は、LPM224のオペレーション中の第4のシナリオを示すフローチャート660を示している。具体的には、フローチャート660は、ユーザがコンピューティングデバイス202に既にログオンしていて、ログインロジック364がリライアブルクロックマネージャー370からのタイムチックの結果としてのイベントを受信する場合のシナリオを示している。
ブロック662において、ログインロジック364は、リライアブルクロックマネージャー370からタイムチックイベントを受信することができる。結果として、ログインロジック364は、タイムチックイベントを残量マネージャー366へ送信することができる。
そのタイムチックイベントに応答して、ブロック664において、残量マネージャー366は、コンピューティングデバイス202上でオペレーティングシステムを使用するために利用可能な残量を更新することができる。その後、ブロック666において、残量マネージャー366は、利用可能な残量をチェックすることができる。その評価の結果に基づいて、ブロック668において、残量マネージャー366は、適切なアクションを取ることができ、このアクションは、たとえば、アクティブ化UI396をアクティブ化すること、ユーザをログオフさせること、その他の適切なアクションを継続することとすることができる。
この場合には、たとえば、残量マネージャー366は、コンピューティングデバイス202にとって利用可能な残量が、しきい値にあるか、またはゼロなど、しきい値を下回っていることを検知する。結果として、ブロック668において、残量マネージャー366は、通知UI398にログオフメッセージを表示させることができ、最終的には、コンピューティングデバイス202上でオペレーティングシステムを使用している状態からユーザをログオフさせる。別の場合には、通知UI398は、購入マネージャー388をアクティブ化して、ユーザがさらなる使用時間を購入できるようにすることもできる。
(シナリオ5−ログオン後の前払いの入力)
図17は、LPM224のオペレーション中の第5のシナリオを示すフローチャート680を示している。具体的には、フローチャート680は、ユーザがコンピューティングデバイス202に既にログオンしていて、コントロールパネルアプレットまたはタスクバーアイコンを選択して、プリペイドカードから情報を入力するためにアクティブ化ウィザードをアクティブ化する場合のシナリオを示している。これは、ユーザがプリペイドカードを以前に購入していて、そのプリペイドカードによって入手できる使用時間を自分のアカウントに追加しようと決めた場合に当てはまるかもしれない。
ブロック682において、ユーザは、アクティブ化ウィザードを表示するためのアクティブ化UI396へイベントを送信するコントロールパネルアプレットをアクティブ化することができる。ユーザに表示できるGUIウィンドウの一例について、図18の追加時間ウィンドウ684によって説明する。ユーザは、追加時間ウィンドウ684から追加時間ボタンを選択して、プリペイドカードからの情報を入力することができる。
その後、ブロック686において、アクティブ化UI396は、ユーザがアクティブ化ウィザードを使用できるようにする上で必要となるかもしれないさまざまな情報をユーザに通知することができ、このアクティブ化ウィザードは、図19のGUI688によって示されている。
ブロック690において、アクティブ化UI396は、図20に示されているようなネットワーク接続GUI692を提示することができ、このネットワーク接続GUI692は、ウェブサービス通信マネージャー390がコアプロビジョニングサービス206にアクセスするためにインターネットに接続していることをユーザに通知する。
その後、ブロック694において、アクティブ化UI396は、プリペイド使用権カード(pre−paid usage card)から受け取ったキーを入力するようユーザに促すことができる。プリペイドカード上のキーは、英数字やその他の文字の文字列を含むことができる。この場合には、キーは、図21のGUI696へ入力するものとして示されているように、25文字の長さの英数字のキーである。
プリペイドカードからのキーを受信すると、ブロック698において、アクティブ化UI396は、図22のGUI700によって示されているように、.NET(登録商標)システムにログインするようユーザに促すことができる。ユーザが.NET(登録商標)システムにログインすることが常に必要というわけではないかもしれないという点に留意されたい。
その後、ブロック702において、アクティブ化UI396は、プリペイドカードからのユーザのキーが受け入れられたこと、および対応する時間だけユーザのアカウントが増えるはずであることの確認をコアプロビジョニングサービス206から受信することができる。首尾よく時間が追加されたことを通知するメッセージは、図23のGUI704によって示されている。
最後に、ブロック706において、アクティブ化UI396は、図24のGUI708によって示されているように、ユーザがプリペイドカードを使用することによって今しがた追加した時間が数分でコンピューティングデバイス202の貸方に記入される旨をユーザに通知することができる。
上述の文章は、本発明の多くの異なる実施形態の詳細な説明を記載しているが、本発明の範囲は、本特許に添付されている特許請求の範囲の文言によって定義されるという点を理解されたい。この詳細な説明は、例示的なものにすぎないと解釈されるべきであり、本発明の可能な実施形態をすべて説明しているわけではない。というのも、可能な実施形態をすべて説明することは、不可能ではないにしても、非現実的と思われるためである。本発明を定義する特許請求の範囲内に今後とも収まるであろう現在の技術または本特許の出願日以降に開発される技術を使用して、多くの代替実施形態を実施することができる。
したがって、本発明の趣旨および範囲から逸脱することなく、本明細書で説明および例示されている技術および構造において、多くの修正形態および変形形態を作成することができる。したがって、本明細書に記載されている方法および装置は、例示的なものにすぎず、本発明の範囲を限定するものではないという点を理解されたい。
複数のコンピューティングリソースを相互接続するネットワークを示すブロック図である。 図1のネットワークに接続することができるコンピュータを示すブロック図である。 図1のネットワークのコンピュータ上にオペレーティングシステムを提供するためのソフトウェアプロビジョニングシステムを示すブロック図である。 図3のソフトウェアプロビジョニングシステム上でのコンピュータの登録を示すフローチャートである。 図3のソフトウェアプロビジョニングシステムのコアプロビジョニングシステム(core provisioning system)を示すブロック図である。 図5のコアプロビジョニングシステムによって使用されるコアデータベースを示すブロック図である。 図3のコアソフトウェアプロビジョニングシステムによって使用される配信データベースを示すブロック図である。 図3のソフトウェアプロビジョニングシステムのローカルプロビジョニングモジュール(local provisioning module)を示すブロック図である。 図3のソフトウェアプロビジョニングシステムによって使用されるキー登録プログラムを示すフローチャートである。 図3のソフトウェアプロビジョニングシステムによって使用されるパケット作成プログラムを示すフローチャートである。 図3のソフトウェアプロビジョニングシステムによって使用されるブートストラッピングプログラム(bootstrapping program)を示すフローチャートである。 図3のソフトウェアプロビジョニングシステムによって使用されるパケット配信プログラムを示すフローチャートである。 図8のローカルプロビジョニングモジュールのためのオペレーティングシナリオ(operating scenario)を示すフローチャートである。 図8のローカルプロビジョニングモジュールのためのオペレーティングシナリオを示す別のフローチャートである。 図8のローカルプロビジョニングモジュールのためのオペレーティングシナリオを示す別のフローチャートである。 図8のローカルプロビジョニングモジュールのためのオペレーティングシナリオを示す別のフローチャートである。 図8のローカルプロビジョニングモジュールのためのオペレーティングシナリオを示すさらに別のフローチャートである。 図17のオペレーティングシナリオの最中にユーザに提示される例示的なGUIを示す図である。 図17のオペレーティングシナリオの最中にユーザに提示される別の例示的なGUIを示す図である。 図17のオペレーティングシナリオの最中にユーザに提示される別の例示的なGUIを示す図である。 図17のオペレーティングシナリオの最中にユーザに提示される別の例示的なGUIを示す図である。 図17のオペレーティングシナリオの最中にユーザに提示される別の例示的なGUIを示す図である。 図17のオペレーティングシナリオの最中にユーザに提示される別の例示的なGUIを示す図である。 図17のオペレーティングシナリオの最中にユーザに提示される別の例示的なGUIを示す図である。

Claims (20)

  1. プロビジョニングパケットをコンピュータに配信する方法であって、
    第1のプロビジョニングパケットを受信することであって、前記プロビジョニングパケットは、前記コンピュータに関連付けられている第1の識別子を有すること、
    前記第1のプロビジョニングパケットを待ち行列に入れること、
    第2の識別子を含むパケット要求を受信すること、
    前記第1の識別子が前記第2の識別子と一致した場合に前記プロビジョニングパケットを前記コンピュータへ送信すること
    を含むことを特徴とする方法。
  2. 前記プロビジョニングパケットを前記コンピュータへ送信することを記録することをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記プロビジョニングパケットの受信の確認を前記コンピュータから受け取ることをさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記第2の識別子を含む複数のパケット要求が、受信の確認を受け取る前に、ある限度を超えた場合に、前記プロビジョニングパケットを待ち行列から外すことをさらに含むことを特徴とする請求項1に記載の方法。
  5. 前記第1の識別子を有する第2のプロビジョニングパケットを受信すること、
    前記第2のプロビジョニングパケットを待ち行列に入れることをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記第1の識別子が前記第2の識別子と一致した場合に、前記パケット要求に応答して前記プロビジョニングパケットと共に前記第2のプロビジョニングパケットを送信することをさらに含むことを特徴とする請求項5に記載の方法。
  7. 前記プロビジョニングパケットに署名することをさらに含むことを特徴とする請求項1に記載の方法。
  8. 前記プロビジョニングパケットを暗号化することをさらに含むことを特徴とする請求項1に記載の方法。
  9. プロビジョニングパケットをコンピュータに配信するために使用されるデータ構造をその上に格納しているコンピュータ可読媒体であって、
    前記コンピュータのハードウェア識別子を表すデータを含む第1のデータレコードと、
    前記プロビジョニングパケットの前記配信に関連付けられているトランザクションのシーケンス番号を表すデータを含む第2のデータレコードと、
    前記プロビジョニングパケットを表すデータを含む第3のデータレコードと、
    前記プロビジョニングパケットを前記コンピュータに配信しようとする、確認応答のない複数の試みを表すデータを含む第4のデータレコードとを含むことを特徴とするコンピュータ可読媒体。
  10. 前記第3のデータレコードは、署名されたデータを含むことを特徴とする請求項7に記載のコンピュータ可読媒体。
  11. 前記第3のデータレコードは、暗号化されたデータを含むことを特徴とする請求項7に記載のコンピュータ可読媒体。
  12. 確認応答のない配信の試みを最大で何回許容できるかを表すデータを含む第5のデータレコードをさらに含むことを特徴とする請求項7に記載のコンピュータ可読媒体。
  13. プロビジョニングパケットをコンピュータに配信するためのコンピュータで実行可能なモジュールを有するコンピュータ可読媒体であって、
    プロビジョニングパケットのソースに論理的に結合されているデータベースライタであって、プロビジョニングパケットを受信して、前記プロビジョニングパケットに関連付けられているコンピュータ識別子を確認するためのデータベースライタと、
    前記プロビジョニングパケットを配信まで保存しておくための、前記データベースライタに論理的に結合されている配信データベースと、
    パケットの配信を求める要求を処理するための、前記配信データベースに論理的に結合されている配信サービスモジュールであって、前記プロビジョニングパケットを求める要求を受信し、前記要求からのコンピュータ識別子を前記プロビジョニングパケットの前記コンピュータ識別子と照合し、前記配信データベースから前記プロビジョニングパケットを検索し、前記プロビジョニングパケットを前記コンピュータへ送信する配信サービスモジュール
    を含むことを特徴とするコンピュータ可読媒体。
  14. 前記コンピュータからの確認メッセージを受信するための確認モジュールをさらに含むことを特徴とする請求項13に記載のコンピュータ可読媒体。
  15. 前記プロビジョニングパケットを求める、確認応答のない複数の要求が、ある限度を超えた場合に、前記確認モジュールは、前記プロビジョニングパケットを削除することを特徴とする請求項14に記載のコンピュータ可読媒体。
  16. 前記配信データベースは、同じコンピュータ識別子を有する複数のプロビジョニングパケットを保存することを特徴とする請求項13に記載のコンピュータ可読媒体。
  17. 前記配信サービスモジュールは、前記要求に応答して、一致するコンピュータ識別子を有するすべてのプロビジョニングパケットを前記待ち行列から検索して送信することを特徴とする請求項13に記載のコンピュータ可読媒体。
  18. 激しい使用状況においては、プロビジョニングパケットを求める要求を別の配信サービスモジュールへ回送するための負荷管理モジュールをさらに含むことを特徴とする請求項13に記載のコンピュータ可読媒体。
  19. 前記プロビジョニングパケットを暗号化するための暗号化モジュールをさらに含むことを特徴とする請求項13に記載のコンピュータ可読媒体。
  20. 前記プロビジョニングパケットの電子署名されたバージョンを入手するための署名モジュールをさらに含むことを特徴とする請求項13に記載のコンピュータ可読媒体。
JP2007541362A 2004-11-15 2005-11-12 プロビジョニングパケットを配信するためのシステムおよび方法 Pending JP2008521094A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/989,122 US7610631B2 (en) 2004-11-15 2004-11-15 Method and apparatus for provisioning software
US11/006,837 US20060165005A1 (en) 2004-11-15 2004-12-08 Business method for pay-as-you-go computer and dynamic differential pricing
US11/040,968 US20060165227A1 (en) 2004-11-15 2005-01-21 System and method for distribution of provisioning packets
PCT/US2005/040966 WO2006055428A2 (en) 2004-11-15 2005-11-12 System and method for distribution of provisioning packets

Publications (1)

Publication Number Publication Date
JP2008521094A true JP2008521094A (ja) 2008-06-19

Family

ID=36407653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007541362A Pending JP2008521094A (ja) 2004-11-15 2005-11-12 プロビジョニングパケットを配信するためのシステムおよび方法

Country Status (8)

Country Link
US (1) US20060165227A1 (ja)
EP (1) EP1815641A4 (ja)
JP (1) JP2008521094A (ja)
KR (1) KR20070084260A (ja)
BR (1) BRPI0518912A2 (ja)
MX (1) MX2007005662A (ja)
TW (1) TW200631377A (ja)
WO (1) WO2006055428A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347078B2 (en) 2004-10-18 2013-01-01 Microsoft Corporation Device certificate individualization
US8336085B2 (en) 2004-11-15 2012-12-18 Microsoft Corporation Tuning product policy using observed evidence of customer behavior
US9363481B2 (en) 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US9436804B2 (en) * 2005-04-22 2016-09-06 Microsoft Technology Licensing, Llc Establishing a unique session key using a hardware functionality scan
US7961622B2 (en) * 2005-09-02 2011-06-14 Tekelec Methods, systems, and computer program products for monitoring and analyzing signaling messages associated with delivery of streaming media content to subscribers via a broadcast and multicast service (BCMCS)
US7720463B2 (en) 2005-09-02 2010-05-18 Tekelec Methods, systems, and computer program products for providing third party control of access to media content available via broadcast and multicast service (BCMCS)
US7860799B2 (en) * 2005-10-25 2010-12-28 Tekelec Methods, systems, and computer program products for providing media content delivery audit and verification services
US20080005560A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Independent Computation Environment and Provisioning of Computing Device Functionality
US20080183623A1 (en) * 2007-01-29 2008-07-31 Zhangwei Xu Secure Provisioning with Time Synchronization
US8196137B2 (en) * 2007-10-15 2012-06-05 Microsoft Corporation Remote auto provisioning and publication of applications
US8752165B2 (en) * 2008-05-29 2014-06-10 Apple Inc. Provisioning secrets in an unsecured environment
US8018961B2 (en) * 2009-06-22 2011-09-13 Citrix Systems, Inc. Systems and methods for receive and transmission queue processing in a multi-core architecture
EP2536175B1 (en) * 2011-06-14 2014-08-13 Telefonaktiebolaget L M Ericsson (publ) Method, apparatus and computer program for a network node including a PCEF for establishing a user plane session
US10223294B2 (en) * 2015-09-01 2019-03-05 Nxp Usa, Inc. Fast secure boot from embedded flash memory
US10706187B1 (en) * 2015-10-01 2020-07-07 Comsol Ab Systems and methods for reducing application startup times for physics modeling applications
KR102476271B1 (ko) * 2020-11-30 2022-12-13 한국전자통신연구원 자율 관리(semi-managed) DHT 구성 방법 및 시스템

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001312325A (ja) * 2000-04-28 2001-11-09 Hitachi Ltd プログラムライセンスキー発行方法及び発行システム
JP2001331229A (ja) * 2000-05-23 2001-11-30 Nec Software Hokuriku Ltd プログラム使用チケットの販売システムおよびプログラム使用チケットの販売方法、並びに記録媒体
JP2002108478A (ja) * 2000-10-02 2002-04-10 Heisei Kikaku System:Kk ソフトウェアの使用ライセンスを使用時間単位の料金で販売する方法及びそのシステム
JP2003157335A (ja) * 2001-08-01 2003-05-30 Matsushita Electric Ind Co Ltd コンテンツ利用権の管理装置およびその方法
JP2003296487A (ja) * 2002-02-01 2003-10-17 Matsushita Electric Ind Co Ltd 価値情報交換システム
JP2004062561A (ja) * 2002-07-30 2004-02-26 Dainippon Printing Co Ltd ソフトウェア管理システム、ソフトウェア管理サーバ、クライアント、プログラム、及び、記録媒体。

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5066491A (en) * 1985-04-15 1991-11-19 Protein Technology, Inc. Method of disease treatment utilizing an immunologically active whey fraction
US4977137B1 (en) * 1987-06-03 1994-06-28 Baylor College Medicine Lactoferrin as a dietary ingredient promoting the growth of the gastrointestinal tract
US5249184A (en) * 1990-01-30 1993-09-28 Johnson Service Company Network control system with improved reliability
US5240908A (en) * 1990-09-27 1993-08-31 International Flavors & Fragrances Inc. Cyclohexenylmethyloxabicyclooctanes, processes for preparing same, intermediates used in said processes and organoleptic uses of said cyclohexenylmethyloxabicyclooctanes and intermediates therefor
US5531989A (en) * 1994-10-28 1996-07-02 Metagenics, Inc. Immunoglobulin and fiber-containing composition for human gastrointestinal health
US5825876A (en) * 1995-12-04 1998-10-20 Northern Telecom Time based availability to content of a storage medium
US5889860A (en) * 1996-11-08 1999-03-30 Sunhawk Corporation, Inc. Encryption system with transaction coded decryption key
US20040225894A1 (en) * 1998-06-04 2004-11-11 Z4 Technologies, Inc. Hardware based method for digital rights management including self activating/self authentication software
US7552166B2 (en) * 1999-02-22 2009-06-23 Chack Michael A Method of queuing requests to access a communications network
US6763458B1 (en) * 1999-09-27 2004-07-13 Captaris, Inc. System and method for installing and servicing an operating system in a computer or information appliance
FI20001326A0 (fi) * 2000-06-02 2000-06-02 Sonera Oyj Informaation välitys vastaanottajalaitteistoon
US20020147601A1 (en) * 2001-04-05 2002-10-10 Fagan Von E. Lease arrangements for providing computer equipment
EP1428098B1 (en) * 2001-08-01 2006-12-20 Matsushita Electric Industrial Co., Ltd. Device and method for managing content usage right
US7243366B2 (en) * 2001-11-15 2007-07-10 General Instrument Corporation Key management protocol and authentication system for secure internet protocol rights management architecture
EP1470466B1 (en) * 2002-02-01 2016-11-09 Panasonic Intellectual Property Corporation of America License information exchange system
US7298717B2 (en) * 2002-02-15 2007-11-20 Texas Instruments Incorporated Method and apparatus for providing transmit diversity with adaptive basis
US7315896B2 (en) * 2002-06-06 2008-01-01 International Business Machines Corporation Server network controller including packet forwarding and method therefor
US20040187011A1 (en) * 2003-03-18 2004-09-23 Lee Long K. Prevention of unauthorized software distribution

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001312325A (ja) * 2000-04-28 2001-11-09 Hitachi Ltd プログラムライセンスキー発行方法及び発行システム
JP2001331229A (ja) * 2000-05-23 2001-11-30 Nec Software Hokuriku Ltd プログラム使用チケットの販売システムおよびプログラム使用チケットの販売方法、並びに記録媒体
JP2002108478A (ja) * 2000-10-02 2002-04-10 Heisei Kikaku System:Kk ソフトウェアの使用ライセンスを使用時間単位の料金で販売する方法及びそのシステム
JP2003157335A (ja) * 2001-08-01 2003-05-30 Matsushita Electric Ind Co Ltd コンテンツ利用権の管理装置およびその方法
JP2003296487A (ja) * 2002-02-01 2003-10-17 Matsushita Electric Ind Co Ltd 価値情報交換システム
JP2004062561A (ja) * 2002-07-30 2004-02-26 Dainippon Printing Co Ltd ソフトウェア管理システム、ソフトウェア管理サーバ、クライアント、プログラム、及び、記録媒体。

Also Published As

Publication number Publication date
US20060165227A1 (en) 2006-07-27
EP1815641A4 (en) 2011-02-02
EP1815641A2 (en) 2007-08-08
BRPI0518912A2 (pt) 2008-12-16
WO2006055428A2 (en) 2006-05-26
TW200631377A (en) 2006-09-01
KR20070084260A (ko) 2007-08-24
MX2007005662A (es) 2007-07-24
WO2006055428A3 (en) 2009-04-23

Similar Documents

Publication Publication Date Title
JP4864898B2 (ja) オペレーティングシステムを動的にアクティブ化/非アクティブ化するための方法および装置
KR101159384B1 (ko) 프로비저닝 소프트웨어를 위한 방법 및 장치
JP2008521094A (ja) プロビジョニングパケットを配信するためのシステムおよび方法
JP4981051B2 (ja) ライセンスに従う製品の挙動変更
US20070198427A1 (en) Computer service licensing management
JP4639676B2 (ja) レンタルサーバシステム
US20070198428A1 (en) Purchasing of computer service access licenses
US20040002943A1 (en) Systems and methods for application delivery and configuration management of mobile devices
KR20060054164A (ko) 선불 지급식 컴퓨터 및 동적인 가격 차별화를 위한 방법
TW201909072A (zh) 電子帳戶的掛失、解掛、業務管理方法、裝置及設備
JPH10214297A (ja) インターネットを利用した会員制サービスシステムおよび方法
WO2023124420A1 (zh) 应用签名方法、系统、交易终端及服务平台
US10897348B2 (en) Method and system for managing consent and utilization of information using blockchain
JP2004030617A (ja) インターネットを利用したトランザクションサービスシステムおよびその方法
JP4228322B1 (ja) 携帯端末装置,ファイル管理プログラムおよびファイル管理システム
JP2004062864A (ja) インターネットを利用したオンラインショッピングシステム
JP2003337705A (ja) インターネットを利用したソフトウェア配送システムおよびその方法
JP2004030618A (ja) インターネットを利用したサービスシステムおよびその方法
JP2004005632A (ja) インターネットを利用したリモートインストールシステムおよびその方法
JP2004005633A (ja) インターネットを利用したリモートインストールシステムおよびその方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110722

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111216