(57)【要約】コンピューティングデバイスのホスト・オペレーティング・システムにおいて、このコンピューティングデバイスの１つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて、エントロピー・データを収集する。収集したエントリピー・データに少なくとも部分的に基づいて、エントロピー・プールを更新し、このエントロピー・プールからのデータを、コンピューティングデバイスの仮想マシンとして実行しているゲスト・オペレーティング・システムに供給する。ゲスト・オペレーティング・システムは、ホスト・オペレーティング・システムによって供給されたエントロピー・プールからのデータに基づいて、ゲスト・オペレーティング・システムのエントロピー・プールを維持する。ゲスト・オペレーティング・システムは、このゲスト・オペレーティング・システムのエントロピー・プールにアクセスし、乱数を含む値を発生するための基準として、ゲスト・オペレーティング・システムのエントロピー・プールを用いる。【選択図】図１
2013502665.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスであって、
プロセッサーと、
仮想マシンによって管理されるプログラムのための命令が格納されているコンピューター読み取り可能媒体と、
を備えており、前記命令を前記プロセッサーによって実行すると、このプロセッサーに、
前記プログラムのエントロピー・プールにアクセスさせ、前記エントロピー・プールが、前夫プログラムが実行している間における前記コンピューティングデバイスの１つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて発生され、
乱数を発生するための基準として、前記エントロピー・プールを用いさせる、コンピューティングデバイス。
【請求項２】
請求項１記載のコンピューティングデバイスにおいて、前記エントロピー・プールが、前記コンピューティングデバイス上にあるホスト・オペレーティング・システムから得られる、コンピューティングデバイス。
【請求項３】
請求項２記載のコンピューティングデバイスにおいて、前記エントロピー・プールの少なくとも一部が、前記ホスト・オペレーティング・システムによって、前記仮想マシン・マネージャーのメモリー空間にマッピングされる、コンピューティングデバイス。
【請求項４】
請求項２記載のコンピューティングデバイスにおいて、前記エントロピー・プールが、前記プログラムの基本入力／出力システム（ＢＩＯＳ）を通じて、前記ホスト・オペレーティング・システムから得られる、コンピューティングデバイス。
【請求項５】
請求項２記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
前記ホスト・オペレーティング・システムに追加のエントロピーを要求させ、
前記ホスト・オペレーティング・システムから、追加のエントロピー・データを受け取らせ、
前記追加のエントロピー・データを前記プログラムのエントロピー・プールに追加させる、コンピューティングデバイス。
【請求項６】
請求項２記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
特定の間隔で前記ホスト・オペレーティング・システムから追加のエントロピー・データを受け取らせ、
前記追加のエントロピー・データを、前記プログラムのエントロピー・プールに組み入れさせる、コンピューティングデバイス。
【請求項７】
請求項１記載のコンピューティングデバイスにおいて、前記プログラムが、ゲスト・オペレーティング・システムを備えている、コンピューティングデバイス。
【請求項８】
請求項１記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
前記プログラムに対する第１シーケンス・カウンター値を入手させ、
前記乱数および前記プログラムに対する第１シーケンス・カウンター値を格納させる、コンピューティングデバイス。
【請求項９】
請求項８記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
前記乱数を用いることを求める要求を受けさせ、
前記格納されている第１シーケンス・カウンター値を入手させ、
前記要求が受け入れられたときに、前記プログラムに対する第２シーケンス・カウンター値を入手させ、
前記第２シーケンス・カウンター値を前記第１シーケンス・カウンター値と比較させ、
前記第１シーケンス・カウンター値および前記第２シーケンス・カウンター値が同じである場合、前記乱数を用いさせ、
前記第１シーケンス・カウンター値および前記第２シーケンス・カウンター値が同じでない場合、
前記プログラムのエントロピー・プールを発生し直させ、
前記発生し直したエントロピー・プールに基づいて、新たな乱数を発生させ、
前記新たな乱数を用いさせる、コンピューティングデバイス。
【請求項１０】
コンピューティングデバイスにおける方法であって、
ゲスト・オペレーティング・システムが実行している間における前記コンピューティングデバイスの１つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて、エントロピー・データを収集するステップと、
前記収集したエントロピー・データに少なくとも部分的に基づいて、エントロピー・プールを更新するステップと、
前記コンピューティングデバイスの仮想マシンとして実行している前記ゲスト・オペレーティング・システムに、前記エントロピー・プールからのデータを供給するステップと、
を備えている、方法。
【請求項１１】
請求項１０記載の方法であって、更に、前記ゲスト・オペレーティング・システムからの追加のエントロピーを求める要求に応答して、前記エントロピー・プールからのデータを前記ゲスト・オペレーティング・システムに供給するステップを備えている、方法。
【請求項１２】
請求項１０記載の方法であって、更に、
前記コンピューティングデバイスの１つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて追加のエントロピー・データを収集するステップと、
前記収集した追加のエントロピー・データに少なくとも部分的に基づいて、前記エントロピー・プールを更新するステップと、
を備えている、方法。
【請求項１３】
請求項１０記載の方法であって、更に、前記ゲスト・オペレーティング・システムをブートするときに、前記エントロピー・プールからのデータを前記ゲスト・オペレーティング・システムに供給するステップを備えている、方法。
【請求項１４】
請求項１３記載の方法において、前記ゲスト・オペレーティング・システムをブートするときに、前記エントロピー・プールからのデータを前記ゲスト・オペレーティング・システムに供給するステップが、前記エントロピー・プールの少なくとも一部を、前記ゲスト・オペレーティング・システムが用いる基本入力／出力システム（ＢＩＯＳ）テーブルが格納されている、前記仮想マシンのメモリー空間に含めるステップを備えている、方法。
【請求項１５】
請求項１０記載の方法において、前記コンピューティングデバイスのホスト・オペレーティング・システムにおいて当該方法を実施する、方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  種々の異なるコンピューティング場面において、乱数を用いることができる。共通な使用場面の１つに暗号があり、暗号鍵および暗号プロセスは、乱数の発生を拠り所とする。乱数の発生は、多くの場合、コンピューター内における１つ又は複数のハードウェア・コンポーネントの状態を拠り所とする。しかしながら、このような拠り所は、仮想マシンがコンピューター上で実行しているときには、問題となり得る。仮想マシンは、コンピューター内にあるハードウェア・コンポーネントを抽象化し、これらを仮想コンポーネントとして、仮想マシンにおいて実行するオペレーティング・システムに定時する。このような仮想コンポーネントは、それらの対応するハードウェア・コンポーネントよりもランダム性、即ち、エントロピーが少ない可能性があり、発生する数のエントリピーを減少させる可能性がある。
【発明の概要】
【０００２】
[0002]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために用いられることを意図するのでもない。
【０００３】
[0003]  １つ又は複数の態様によれば、コンピューティングデバイスにおいて仮想マシン・マネージャーによって管理されるエントロピー・プールを、コンピューティングデバイスの１つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて発生する。プログラムは、エントロピー・プールにアクセスし、このエントロピー・プールを、乱数を発生するための基準として用いる。
【０００４】
[0004]  １つ又は複数の態様によれば、コンピューティングデバイスのホスト・オペレーティング・システムにおいて、このコンピューティングデバイスの１つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて、エントロピー・データを収集する。、収集したエントロピー・データに少なくとも部分的に基づいて、エントロピー・プールを更新し、コンピューティングデバイスの仮想マシンとして実行しているゲスト・オペレーティング・システムに供給する。
【図面の簡単な説明】
【０００５】
[0005]  図面全体を通じて、同様の機構を示すために同じ番号を用いることとする。
【図１】図１は、１つ又は複数の実施形態にしたがって仮想マシン用のエントロピー・プールを実現するコンピューティングデバイスの一例を示すブロック図である。
【図２】図２は、１つ又は複数の実施形態にしたがって、仮想マシン用のエントロピーを入手し供給するプロセスの一例を示すフローチャートである。
【図３】図３は、１つ又は複数の実施形態にしたがって、仮想マシン用のエントロピー・プールを実現するゲスト・オペレーティング・システムの一例を示すブロック図である。
【図４】図４は、１つ又は複数の実施形態にしたがって、シーケンス・カウンターを用いるゲスト・オペレーティング・システムのプロセスの一例を示すフローチャートである。
【図５】図５は、１つ又は複数の実施形態にしたがって、仮想マシン用のエントロピー・プールを実現するように構成することができるコンピューティングデバイスの一例を示す。
【発明を実施するための形態】
【０００６】
[0011]  本明細書では、仮想マシン用のエントロピー・プールについて論ずる。コンピューティングデバイスにおけるハードウェア・コンポーネントに基づくエントロピー・プールが、そのコンピューティングデバイスのオペレーティング・システムによって発生され、更新される。また、ゲスト・オペレーティング・システムを実行する仮想マシンも、このコンピューティングデバイス上で実行することができる。ゲスト・オペレーティング・システムは、ホスト・オペレーティング・システムのエントロピー・プールに少なくとも部分的に基づいて発生するエントロピー・プールを有し、ゲスト・オペレーティング・システムが仮想マシンにおいて実行していても、ハードウェア・コンポーネントに少なくとも部分的に基づいて、ゲスト・オペレーティング・システムにエントロピー・プールを供給する。
【０００７】
[0012]  加えて、シーケンス・カウンター値を、ゲスト・オペレーティング・システムによって維持することができる。ゲスト・オペレーティング・システムのコピーまたはクローンが作られる毎に、ゲスト・オペレーティング・システムの内の１つのシーケンス・カウンター値を増加させる。加えて、ゲスト・オペレーティング・システムのエントロピー・プールに基づく値が得られる毎に、この得られた値と、この値が得られた時点におけるゲスト・オペレーティング・システムの現シーケンス・カウンター値とを格納する。ゲスト・オペレーティング・システムのエントロピー・プールに基づく値を用いるとき、その値について格納されているシーケンス・カウンター値を、ゲスト・オペレーティング・システムの現シーケンス・カウンター値と比較し、２つのカウンター値が同一である場合にのみ、その値を用いる。
【０００８】
[0013]  図１は、１つ又は複数の実施形態にしたがって仮想マシン用のエントロピー・プールを実現するコンピューティングデバイスの一例１００を示すブロック図である。コンピューティングデバイス１００は、種々の異なるタイプのデバイスであることが可能である。例えば、コンピューティングデバイス１００は、デスクトップ・コンピューター、移動局、ネットブック、娯楽機器、ディスプレイ・デバイスに通信状態で結合されているセット・トップ・ボックス、テレビジョン、セルラまたはその他のワイヤレス・フォン、ゲーム・コンソール、自動車用コンピューター等とすることができる。このように、コンピューティングデバイス１００は、大量のメモリーおよびプロセッサー・リソースを有する完全なリソース・デバイス（例えば、パーソナル・コンピューター、ゲーム・コンソール）から、限られたメモリーおよび／またはプロセッサー・リソースを有する低リソース・デバイス（例えば、従前からのセット・トップ・ボックス、ハンド・ヘルド・ゲーム・コンソール）までの範囲にわたることができる。
【０００９】
[0014]  コンピューティングデバイス１００は、ホスト・オペレーティング・システム０２および仮想マシン・マネージャー１０４を含む。ホスト・オペレーティング・システム１０２は、１つ又は複数のコンポーネント１０８によって設けられる機能へのアクセスを管理する。コンポーネント１０８は、種々の異なる入力／出力（Ｉ／Ｏ）コンポーネントおよびその他のコンポーネントまたはデバイスとすることができる。例えば、コンポーネント１０８は、メモリー・コンポーネント、記憶デバイス、通信コンポーネント等の内１つ又は複数を含むことができる。仮想マシン・マネージャー１０４を含む、コンピューティングデバイス１００上で実行する種々のその他のコンポーネントまたはモジュールは、このようなコンポーネントまたはモジュールがコンポーネント１０８に直接アクセスできなくても、ホスト・オペレーティング・システム１０２によって管理されるこの機能にアクセスすることができる。
【００１０】
[0015]  また、ホスト・オペレーティング・システム１０２は、エントロピー・プール１０も含む。一般に、エントロピー・プールとは、コンピューティングデバイス１００にランダム性のソース(source of randomness)を提供する１組のデータまたはビットのことである。このエントロピー・プールは、１つ又は複数のエントロピー・ソースから収集されたデータに基づいて発生され、乱数発生器および／またはその他のコンポーネントによって、ランダム性のソースとして引き出される。
【００１１】
[0016]  １つ又は複数の仮想マシン（ＶＭ）マネージャーをホスト・オペレーティング・システム上で実行することができる。仮想マシン・マネージャーは、１つ又は複数の追加のプログラムがコンピューティングデバイス１００上で実行することを可能にする。これらのプログラムは、各々、ゲスト・オペレーティング・システムと呼ばれる、オペレーティング・システムであることができ、あるいは他のプログラムとすることもできる。仮想マシン・マネージャーは、ゲスト・オペレーティング・システムに、ゲスト・オペレーティング・システムが実行する仮想化ハードウェア・システムを提示する。したがって、仮想化ハードウェア・システムにおいて実行するゲスト・オペレーティング・システムも、仮想マシンと呼ばれる。ゲスト・オペレーティング・システムは、多くの場合そのハードウェア・リソースが仮想化されていることを知らずに、この仮想化ハードウェア・コンポーネント上で実行する。仮想マシンは、種々の使用場面をサポートし、Ｉ／Ｏコンポーネントをゲスト・オペレーティング・システムに異なる方法で（例えば、エミュレーション、合成、仮想、パススルー(passthrough)、異なるコンポーネントとして、異なる通信プロトコルを用いて等）提示させることを含む。
【００１２】
[0017]  図１において、仮想マシン・マネージャー１０４は、仮想マシン制御モジュール１２０、および１つ又は複数の仮想化コンポーネント１２２を含む。仮想マシン制御モジュール１２０は、ゲスト・オペレーティング・システム１３２と通信する、仮想化ハードウェア・システムを管理する。仮想化コンポーネント１２２は、仮想マシン制御モジュール１２０によってゲスト・オペレーティング・システム１３２にハードウェア・コンポーネントとして提示される、仮想化ハードウェア・コンポーネントである。仮想化コンポーネント１２２は、コンポーネント２０８と同じタイプのコンポーネントであることができ、または代わりに異なるタイプのコンポーネントとすることもできる。ゲスト・オペレーティング・システム１３２は、ゲスト・オペレーティング・システム１３２がコンピューティングデバイス１００の実在するハードウェアと通信しているかのように、制御モジュール１２０および／または仮想化コンポーネント１２２と通信する。本明細書では、ゲスト・オペレーティング・システム１３２を参照しながらコンピューティングデバイス１００について論じるが、代わりに、オペレーティング・システム以外の他のプログラムを仮想マシンにおいて実行することもできる。
【００１３】
[0018]  ゲスト・オペレーティング・システム１３２は、乱数発生器１３４およびエントロピー・プール１３６を含む。本明細書では、エントロピー・プール１３６を、乱数発生器１３４によって用いられるものとして論ずるが、エントロピー・プール１３６は、代わりに、ゲスト・オペレーティング・システム１３２の他のコンポーネントが用いることもできることは認められてしかるべきである。乱数発生器１３４は、真の乱数発生器を真似るまたは近似するように設計された決定論的システムである。したがって、乱数発生器１３４は、擬似乱数発生器と呼ぶこともできる。乱数発生器１３４は、種々の異なる方法の１つ又は複数で乱数を発生することができる。１つ又は複数の実施形態では、乱数発生器１３４は、エントロピー・プール１３６から得られるシード値と呼ばれるデータに基づいて乱数を発生する。乱数発生器１３４は、セキュア・ハッシュ・アルゴリズム（ＳＨＡ）関数（例えば、ＳＨＡ−５１２）、標準的な対称暗号アルゴリズム（例えば、高度暗号規格（ＡＥＳ））等の内の１つというような、種々の異なるアルゴリズムをシード値に適用して、乱数を得ることができる。  
【００１４】
[0019]  エントロピー・プール（例えば、エントロピー・プール１３６またはエントロピー・プール１１０）として格納されるデータは、１つ又は複数のエントロピー・ソースからの値に基づいて発生される。エントロピー・ソースとは、ある量のランダム性を有するデータまたは値の発生源である。種々の異なるソースを、エントロピー・プールのエントロピー・プールとして用いることができる。例えば、種々のシステム・クロックまたはタイマー、どれくらいのページ・フォールトが発生したか、どれくらいの空きＲＡＭが利用可能か、占有されているディスク・ドライブ空間、システム・ルックアサイド情報、システム割り込み情報等のようなシステム情報は、各々、エントロピー・ソースとなることができる。受信または送信されたパケット数、ネットワーク・パケット・タイミング、ネットワーク・パケットを受信した元のアドレス等のような、ネットワーク情報も、各々、エントロピー・ソースとなることができる。マウス移動のタイミングまたは内容(content)、キーストローク、音声入力、およびその他の同様のイベントも、各々、エントロピー・ソースとなることができる。
【００１５】
[0020]  また、コンピューティングシステム上にある既存のハードウェア・ソースも、エントロピー・ソースとして役割を果たすことができる。ソースが差し込まれた（または差し込まれていない）音響入力または映像入力からのデータも、エントロピー・ソースとなることができる。ディスク・ドライブは、無秩序な空気の乱れによって、その回転速度に小さなランダム変動を有することがあり、この空気の乱れを、低レベル・ディスク・シーク時間計器によって測定し、エントロピー・ソースとして用いることができる。ハードウェア・ドライブの連番およびＢＩＯＳファームウェア・テーブルを含む、一意の（またはほぼ一意の）ハードウェアＩＤおよび連番を、エントロピー・ソースとして用いることができる。
【００１６】
[0021]  デバイス１００に含まれる、またはこれに結合されているハードウェア乱数発生器も、エントロピー・ソースとなることができる。ハードアウェア乱数発生器とは、乱数出力を生成する特殊目的ハードアウェア・コンポーネントを指す。例えば、このようなハードウェア乱数発生器は、電子回路が発生し増幅したノイズ、環境騒音、半導体における量子化効果、放射性崩壊のタイミング等に基づくことができる。
【００１７】
[0022]  エントロピー・ソースからのデータは、種々の異なる方法でエントロピー・プール（例えば、エントロピー・プール１１０または１３６）に組み入れることができる。１つ又は複数の実施形態では、エントロピー・ソースからのデータをハッシュしてハッシュ値を発生し、これをエントロピー・プールに組み入れる。または、代わりに、エントロピー・ソースからのデータ自体をエントロピー・プールに組み入れることもできる。このデータのエントロピー・プールへの組み入れは、例えば、データをエントロピー・プールに連結する、データの少なくとも一部をエントロピー・プールの１つ又は複数の一に挿入する等によって、行うことができる。
【００１８】
[0023]  ホスト・オペレーティング・システム１０２は、１つ又は複数のエントロピー・ソースからデータを入手し、入手したデータをエントロピー・プール１１０に組み入れる。ホスト・オペレーティング・システム１０２は、コンポーネント１０８に基づいてデータを入手する。したがって、エントロピー・プール１１０は、ハードウェアのエントロピー・ソースに基づく。
【００１９】
[0024]  エントロピー・プール１３６は、ゲスト・オペレーティング・システム１３２に含まれており、ゲスト・オペレーティング・システム１３２は仮想マシンにおいて実行している。仮想マシン制御モジュール１２０は、エントロピー・プール１１０にアクセスし、エントロピー・プール１１０からのデータの少なくとも一部を、エントロピー・プール１３６に利用可能にする。エントロピー・プール１１０からのデータは、種々の異なる方法で、エントロピー・プール１０６に利用可能にすることができる。これについては、以下で更に詳しく論ずる。このように、エントロピー・プール１３６が仮想マシンにおけるゲスト・オペレーティング・システムの一部であっても、エントロピー・プール１３６はハードウェア・エントロピー・ソースに基づくことに変わりはない。
【００２０】
[0025]  １つ又は複数の実施形態では、ホスト・オペレーティング・システム１０２が、エントロピー・プール１１０からのデータをゲスト・オペレーティング・システム１３２に、仮想化コンポーネント１２２を通じて供給する。ゲスト・オペレーティング・システム１３２がブートされるとき、または実行し始めるとき、ホスト・オペレーティング・システム１０２はデータをエントロピー・プール１１０から入手する。このデータを仮想化コンポーネント１２２のメモリー空間にマッピングすることによってというようにして、このエントロピー・プール１１０から入手したデータを仮想化コンポーネント１２２に格納する。一方、仮想化コンポーネント１２２は、ゲスト・オペレーティング・システム１３２によってアクセスされ、エントロピー・プール１３６として用いられる（または、エントロピー・プール１３６に追加される）。したがって、ゲスト・オペレーティング・システム１３２は、ハードウェア・エントロピー・ソースに基づくエントロピー・プール１３６を有することになる。
【００２１】
[0026]  エントロピー・プール１１０からのデータの内、ホスト・オペレーティング・システム１０２によって供給される量は、可変にすることができる。例えば、エントロピー・プール１１０からのデータの内、ホスト・オペレーティング・システム１０２によって供給される量は、所定数のビット、エントロピー・プール１１０の所定の割合または所定の量、エントロピー・プール１１０における全てのデータ等とすることができる。
【００２２】
[0027]  １つ又は複数の実施形態では、エントロピー・プール１１０からのデータが格納されている仮想化コンポーネント１２２は、ゲスト・オペレーティング・システム１３２によってアクセスされるＢＩＯＳ（基本入力／出力システム）テーブルである。ホスト・オペレーティング・システム１０２は、エントロピー・プール１１０からのデータを、仮想マシン・マネージャー１０４の特定のメモリー空間にマッピングする。このメモリー空間は、ゲスト・オペレーティング・システム１３２が用いるＢＩＯＳテーブルが格納されているメモリー空間である。したがって、ＢＩＯＳテーブルに通例含まれるデータに加えて、エントロピー・プール１１０からのエントロピー・データもＢＩＯＳテーブルに含まれる。しかしながら、ＢＩＯＳテーブルの使用は一例に過ぎないこと、そしてエントロピー・プール１１０からのデータは、種々の異なる仮想化コンポーネントに格納できることは、認められてしかるべきである。
【００２３】
[0028]  エントロピー・プール１１０からのデータを格納する仮想化コンポーネント１２２のメモリー空間は、通例、仮想化コンポーネント１２２またはゲスト・オペレーティング・システム１３２が適正に機能するためにあり、それ以外には用いられないまたは必要とされない、仮想化コンポーネント１２２の一部である。例えば、ゲスト・オペレーティング・システム１３２が適正に機能することには無関係なＢＩＯＳテーブルの一部は、エントロピー・プール１１０からのデータを格納するＢＩＯＳテーブルの一部として用いることができる。
【００２４】
[0029]  ホスト・オペレーティング・システム１０２は、コンポーネント１０８に基づいてエントロピー・データを収集し続け、このエントロピー・データをエントロピー・プール１１０に追加する。このホスト・オペレーティング・システム１０２によるエントロピー・データの収集は、ゲスト・オペレーティング・システム１３２によるエントロピー・データの収集および／または使用には無関係に継続する。
【００２５】
[0030]  ゲスト・オペレーティング・システム１３２がブートされたときにエントロピー・プール１１０からのデータをゲスト・オペレーティング・システム１３２に供給することに加えて、あるいはその代わりに、ゲスト・オペレーティング・システム１３２が実行している間に、エントロピー・プール１１０からのデータをゲスト・オペレーティング・システム１３２に供給することもできる。このような状況では、仮想マシン制御モジュール１２０は、ゲスト・オペレーティング・システム１３２とホスト・オペレーティング・システム１０２との間における通信インターフェースをサポートし、エントロピー・プール１１０からのデータを、エントロピー・プール１３６に供給することを可能にする。これによって、ゲスト・オペレーティング・システム１３２がブートされた後に、エントロピー・プール１３６にあるデータを、ハードウェア・エントロピー・ソースに基づいて更新することが可能になる。
【００２６】
[0031]  １つ又は複数の実施形態では、ゲスト・オペレーティング・システム１３２は、追加のエントロピーを望むときに、それを要求する。ゲスト・オペレーティング・システム１３２は、規則的な間隔または不規則な間隔で、エントロピー・プール１３６において利用可能なデータが閾値量未満に落ちたという判断に基づいて等というように、種々の異なる方法で、いつ追加のエントロピーが望まれるか判断することができる。追加のエントロピーが望まれるとき、ゲスト・オペレーティング・システム１３２は、追加のエントロピーを求める要求をホスト・オペレーティング・システム１０２に送る（仮想マシン・マネージャー１０４を通じて）。このような要求に応答して、ホスト・オペレーティング・システム１０２はエントロピー・プール１１０から追加のデータを返す。エントロピー・プール１１０から返されるデータの量は、可変にすることができる。例えば、エントロピー・プール１１０から戻されるデータの量は、所定数のビット、ゲスト・オペレーティング・システム１３２によって要求されたビット数、エントロピー・プール１１０内にある全てのデータ等とすることができる。
【００２７】
[0032]  他の実施形態では、ホスト・オペレーティング・システム１３２が、規則的な間隔または不規則な間隔で、エントロピー・データをゲスト・オペレーティング・システム１３２に送る（仮想マシン・マネージャー１０４を通じて）。このホスト・オペレーティング・システム１０２がエントロピーを送るときのタイミングは、所定の予定毎（例えば、１０分毎）、エントロピー・プール１１０が閾値量のデータを収容したことに応答して等というように、可変とすることができる。ゲスト・オペレーティング・システム１３２に送られたデータは、エントロピー・プール１３６に格納され、ゲスト・オペレーティング・システム１３２が追加のエントロピーを求める要求をホスト・オペレーティング・システム１０２に送ることなく、望まれるときに、乱数発生器１３４にデータを利用可能にする。
【００２８】
[0033]  エントロピー・プール１３６の中にあるデータは、全体的にエントロピー・プール１１０から得ることができ、または代わりに他のエントロピー・ソースから得ることもできる。例えば、１つ又は複数の仮想化コンポーネント１２２を、ゲスト・オペレーティング・システム１３２がエントロピー・ソースとして用いることができ、このようなエントロピー・ソースから得られたデータを、エントロピー・プール１３６に組み入れる。
【００２９】
[0034]  図２は、１つ又は複数の実施形態にしたがって、仮想マシン用のエントロピーを入手し供給するプロセスの一例２００を示すフローチャートである。プロセス２００は、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実現することができる。図２の左側に示すプロセス２００の動作は、図１のホスト・オペレーティング・システム１０２のような、コンピューティングデバイスのホスト・オペレーティング・システムによって実行する。図２の右側に示すプロセス２００の動作は、図１のゲスト・オペレーティング・システム１３２のような、コンピューティングデバイスの仮想マシンによって実行する。プロセス２００は、１組の動作として示されているが、種々の動作ステップ(operetion of acts)を実行するために示す順序には限定されない。プロセス２００は、仮想マシン用のエントロピーを入手し供給するプロセスの一例であり、本明細書には、これ以外にも、シーケンス・カウンターを用いるゲスト・オペレーティング・システムについて、異なる図面を参照した論述が含まれている。
【００３０】
[0035]  プロセス２００において、ホスト・オペレーティング・システムは、ハードウェア・コンポーネントに基づいてエントロピー・データを収集する（ステップ２０２）。このエントロピー・データは、先に論じたような、種々の異なるエントロピー・ソースから収集することができる。
【００３１】
[0036]  ホスト・オペレーティング・システムのエントロピー・プールを、収集したエントロピー・データに基づいて更新する（ステップ２０４）。収集したエントロピー・データは、先に論じたような種々の異なる方法で、ホスト・オペレーティング・システムのエントロピー・プールに組み入れることができる。
【００３２】
[0037]  ステップ２０２および２０４は、多数回繰り返すことができ、ホスト・オペレーティング・システムは連続的に新たなエントロピー・データを収集し、この新たなエントロピー・データに基づいて、ホスト・オペレーティング・システムのエントロピー・プールを更新する。ステップ２０２および２０４におけるこの収集および更新は、ゲスト・オペレーティング・システムがゲスト・オペレーティング・システムのエントロピー・プールにアクセスしていていても、またはこれを用いていても関係なく続けることができる。
【００３３】
[0038]  ホスト・オペレーティング・システムは、そのホスト・オペレーティング・システムのエントロピー・プールからのデータを、ゲスト・オペレーティング・システムに供給する（ステップ２０６）。このエントロピー・プールからのデータは、先に論じたように、ゲスト・オペレーティング・システムがブートされるとき、および／またはゲスト・オペレーティング・システムが実行している間の他の時点において、ゲスト・オペレーティング・システムに供給することができる。
【００３４】
[0039]  ゲスト・オペレーティング・システムは、ホスト・オペレーティング・システムのエントロピー・プールに少なくとも部分的に基づいて、ゲスト・オペレーティング・システムのエントロピー・プールを発生する（ステップ２０８）。ステップ２０６においてホスト・オペレーティング・システムのエントロピー・プールからホスト・オペレーティング・システムによって供給されるデータは、ゲスト・オペレーティング・システムのエントロピー・プールとして用いることができ、またはこれに追加することができる。
【００３５】
[0040]  ゲスト・オペレーティング・システムは、ゲスト・オペレーティング・システムのエントロピー・プールにアクセスする（ステップ２１０）。これは、ステップ２０４においてホスト・オペレーティング・システムによって更新されたエントロピー・プールに、少なくとも部分的に基づく。また、任意に、エントロピー・プールは、ゲスト・オペレーティング・システムによって他のエントロピー・ソースから得られたデータを含むこともできる。
【００３６】
[0041]  ゲスト・オペレーティング・システムは、ゲスト・オペレーティング・システムのエントロピー・プールを、乱数発生のための基準として用いる（ステップ２１２）。また、ゲスト・オペレーティング・システムは、そのゲスト・オペレーティング・システムのエントロピー・プールを、他の動作(operation)のために用いることができ、および／または乱数発生以外でもエントロピーが望まれる場合に値を得るために用いることができる。
【００３７】
[0042]  尚、ステップ２０６および２０８は、ゲスト・オペレーティング・システムが動作している間多数回繰り返すことができ、ゲスト・オペレーティング・システムのエントロピー・プールを、新たなエントロピー・データによって繰り返し更新できることは、注記してしかるべきである。
【００３８】
[0043]  図１に戻って、仮想マシンのクローンを作ることができる状況が生ずる可能性がある。仮想マシーンのクローン作成(cloning)とは、仮想マシンを複製することを指し、仮想マシン上で実行するあらゆるアプリケーション、および仮想マシンの現在の状態を記述するデータ（例えば、ゲスト・オペレーティング・システムの種々の設定値）を含む。この複製の結果、仮想マシンの全く同一のコピーが２つできる。クローン作成は、仮想マシンが休止中（実行していない）であるときまたは仮想マシンが実行しているときというような、種々の時点で行うことができる。また、クローン作成は、スナップショットと呼ばれる、仮想マシンのコピーをセーブするために用いることもでき、コンピューティングデバイス１００を、セーブされた設定に戻すことができる。クローン作成は、ユーザーからの要求、および／またはコンピューティングデバイス１００における他のコンポーネントまたはモジュールからの要求に応答して行うことができる。
【００３９】
[0044]  しかしながら、仮想マシンのクローンを作成することができると、エントロピー・プール１３６に問題が生ずる虞れがある。クローンを作成した後、２つの仮想マシンが同じエントロピー・プールを有するという状況が発生する可能性があり、乱数発生器が発生する数値が再使用されるために、ランダム性が低下したり、乱数の予測が可能になることが誘発されるという結果になる可能性がある。１つ又は複数の実施形態では、異なる仮想マシンを区別するために、シーケンス・カウンターが用いられる。これについては、以下で更に詳しく論ずる。
【００４０】
[0045]  図３は、１つ又は複数の実施形態にしたがって、仮想マシン用のエントロピー・プールを実現するゲスト・オペレーティング・システムの一例３００を示すブロック図である。ゲスト・オペレーティング・システム３００は、例えば、図１のゲスト・オペレーティング・システム１３２とすることができる。ゲスト・オペレーティング・システム３００は、図１のゲスト・オペレーティング・システム１３２と同様に、仮想化ハードウェア・システムにおいて仮想マシンとして実行する。
【００４１】
[0046]  ゲスト・オペレーティング・システム３００は、乱数発生器３０２、エントロピー・プール３０４、シーケンス・カウンター３０６、シーケンス・マネージャー・モジュール３０８、および数値タギング・モジュール(value tagging module)３１０を含む。乱数発生器３０２は、エントロピー・プール３０４に基づいて乱数を発生する。これらは、図１の乱数発生器１３４およびエントロピー・プール１３６と同様である。
【００４２】
[0047]  シーケンス・カウンター３０６は、ゲスト・オペレーティング・システム３００を、ゲスト・オペレーティング・システム３００と同じファミリー・ツリー・ブランチにおいてクローン作成によって得られた他のゲスト・オペレーティング・システム（例えば、ゲスト・オペレーティング・システム３００、あるいはゲスト・オペレーティング・システム３００の親またはその他の先祖の子またはその他の子孫である）から区別するカウンター値である。１つ又は複数の実施形態では、シーケンス・カウンター３０６は数値を有するが、順序がわかっている他のリストにおける値も用いることができる。
【００４３】
[0048]  ゲスト・オペレーティング・システムがクローンである場合、ゲスト・オペレーティング・システムの内の１つのシーケンス・カウンター３０６が増加され、一方他のゲスト・オペレーティング・システムのシーケンス・カウンター３０６は不変のまま保持される。オペレーティング・システムのコピーの内の１つがクローン作成後に実行し続ける場合、そのオペレーティング・システムが、そのシーケンス・カウンターがその値を保持させるオペレーティング・システムとなり、それ以外の場合、いずれのオペレーティング・システムも、そのシーケンス・カウンターを増加させることができる。例えば、実行中のゲスト・オペレーティング・システムのスナップショットを撮ろうとした場合、この実行中のゲスト・オペレーティング・システムはそのシーケンス・カウンター値を保持し、一方セーブされたスナップショット・コピーは、そのシーケンス・カウンター値を増加させる（例えば、１だけ）。他の例として、休止中のゲスト・オペレーティング・システムのクローンが作られた場合、ゲスト・オペレーティング・システムの２つのコピーの内１つがそのシーケンス・カウンターを増加させ（例えば、１だけ）、一方他方はそのシーケンス・カウンター値を保持する。
【００４４】
[0049]  ゲスト・オペレーティング・システムの内の１つのシーケンス・カウンター３０６は、種々の異なる方法で増加させることができる。１つ又は複数の実施形態では、ホスト・オペレーティング・システムまたはゲスト・オペレーティング・システムのクローン作成を管理する他のコンポーネントが、ゲスト・オペレーティング・システムの内１つのシーケンス・カウンター３０６を増加させる。他の実施形態では、ゲスト・オペレーティング・システムの１つが、それ自体のシーケンス・カウンター３０６を増加させる。例えば、ホスト・オペレーティング・システムまたはゲスト・オペレーティング・システムのクローン作成を管理する他のコンポーネントは、ゲスト・オペレーティング・システムのクローンが作成されたことを示すフラグまたは他のインディケーターをセットすることができる。このフラグまたは他のインディケーターは、ゲスト・オペレーティング・システムのコピーが次にブートされたときに、それによって検出することができ、ゲスト・オペレーティング・システムにそのシーケンス・カウンター３０６を更新させることができる。
【００４５】
[0050]  シーケンス・マネージャー・モジュール３０８は、シーケンス・カウンター３０６を用いて、エントロピー・プール３０４に基づいて発生された値のランダム性が、クローン作成によって損なわれていないことを確認する。数値タギング・モジュール３１０は、エントロピー・プール３０４に基づいた値を発生する毎に、シーケンス・カウンター３０６の現在値を得る。このように発生した値の例には、乱数発生器３０２が発生した乱数、乱数に基づいて発生した暗号鍵等が含まれる。エントロピー・プール３０４に基づいた値を発生する毎に、モジュール３１０はその発生した値と共に、シーケンス・カウンター３０６の現在値を格納する。したがって、発生した各値と共に、シーケンス・カウンター値が関連付けて格納され、その値が妥当であることを示す。
【００４６】
[0051]  エントロピー・プール３０４に基づいて発生した値を用いるとき、シーケンス・マネージャー・モジュール３０８は、格納されているシーケンス値を読み出して、その発生した値を求める。格納されているシーケンス・カウンター値を、シーケンス・カウンター３０６の現在の値と比較する。格納されているシーケンス・カウンター値が、シーケンス・カウンター３０６の現在の値と同じである場合、エントロピー・プール３０４に基づいて発生した値を用いることができる。しかしながら、格納されているシーケンス・カウンター値が、シーケンス・カウンター３０６の現在の値とは異なる（例えば、それよりも小さい）場合、エントロピー・プール３０４に基づいて発生した値は、用いられることはない。
【００４７】
[0052]  エントロピー・プール３０４に基づいて発生した値を用いないことにした場合、ゲスト・オペレーティング・システム３０４によって新たな値を発生する。加えて、エントロピー・プール３０４をクリアし、発生し直す（例えば、先に論じたように、ホスト・オペレーティング・システムのエントロピー・プールに基づいて）。尚、一選択肢として、エントロピー・プール３０４は、ゲスト・オペレーティング・システム３００に対する特定のシーケンス・カウンター値について１回しかクリアし発生し直せないようにすることができることを注記しておく。例えば、エントロピー・プール３０４に基づいて発生した第１の値を用いようとしたが、格納されているシーケンス・カウンター値がシーケンス・カウンター３０６の現在の値よりも小さいために用いない場合、エントロピー・プール３０４をクリアし発生し直す。エントロピー・プール３０４に基づいて発生した第２の値を用いようとしたが、格納されているシーケンス・カウンター値がシーケンス・カウンター３０６の現在の値よりも小さいために用いない場合、エントロピー・プール３０４は既にクリアされ発生し直されているので、第２の値を用いようとしたときのシーケンス・カウンター３０６の現在の値が、第１の値を用いようとしたときのシーケンス・カウンター３０６の現在の値と同じである場合、エントロピー・プール３０４を再度クリアし発生し直す必要はない。
【００４８】
[0053]  例えば、安全な通信チャネルを設けるための暗号鍵として用いるために、ゲスト・オペレーティング・システムによって乱数を発生したと仮定する。更に、この暗号鍵を発生した時点において、ゲスト・オペレーティング・システムのシーケンス・カウンター値が３であると仮定する。この暗号鍵を発生したとき、数値タギング・モジュール３１０は、この暗号鍵に対して３であるシーケンス・カウンター値のレコードを格納する。
【００４９】
[0054]  この例を続けると、次いで、ゲスト・オペレーティング・システムのコピーを格納するために、スナップショットを撮ると仮定する。実行中のゲスト・オペレーティング・システムはそのシーケンス・カウンター値である３を維持するが、ゲスト・オペレーティング・システムのスナップショット・コピーのシーケンス・カウンター値は４に増加されている。実行中のゲスト・オペレーティング・システムが安全な通信チャネルを設けるためにこの暗号鍵を用い続けようとした場合、実行中のゲスト・オペレーティング・システムのシーケンス・カウンター値（３である）は、暗号鍵に対して記録されているシーケンス・カウンター値と同じであるので、この暗号鍵は、実行中のゲスト・オペレーティング・システムによって用いることができる。しかしながら、このゲスト・オペレーティング・システムのスナップショット・コピーが、実行し安全な通信チャネルを設けるためにこの暗号鍵を用いようとすると、暗号鍵に対して記録されているシーケンス・カウンター値（３である）は、実行中のゲスト・オペレーティング・システムのスナップショット・コピーのシーケンス・カウンター値（４である）よりも小さいので、暗号鍵は用いられない。
【００５０】
[0055]  しかしながら、エントロピー・プール３０４に基づいて発生した値が、暗号化および解読に用いられる鍵である場合、暗号鍵に対して記録されているシーケンス・カウンター値が、実行中のゲスト・オペレーティング・システムのスナップショット・コピーのシーケンス・カウンター値よりも小さくても、発生した値のレコードは維持される。発生した値のレコードを維持することによって、この発生した値に基づいて暗号化されたデータを解読するために、この発生した値を引き続き用いることができる。
【００５１】
[0056]  図４は、１つ又は複数の実施形態にしたがって、シーケンス・カウンターを用いるゲスト・オペレーティング・システムのプロセスの一例４００を示すフローチャートである。プロセス４００は、図３のゲスト・オペレーティング・システム３００のような、ゲスト・オペレーティング・システムによって実行され、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実現することができる。プロセス４００は、１組のステップとして示されており、種々の動作ステップ(operations of various acts)を実行するために示す順序には限定されない。プロセス４００は、シーケンス・カウンターを用いるゲスト・オペレーティング・システムのプロセスの一例であり、本明細書には、これ以外にも、シーケンス・カウンターを用いるゲスト・オペレーティング・システムについて、異なる図面を参照した論述が含まれている。
【００５２】
[0057]  プロセス４００では、エントロピー・プールに基づいて値を発生する（ステップ４０２）。ステップ４０２では、先に論じたように、乱数、暗号鍵等のような、種々の異なる値を発生することができる。
【００５３】
[0058]  プロセス４００を実施するゲスト・オペレーティング・システムの現在のシーケンス・カウンター値を入手し（ステップ４０４）、発生した値、および現在のシーケンス・カウンター値のレコードを格納する（ステップ４０６）。
【００５４】
[0059]  続いて、発生した値を用いることを求める要求を受ける（ステップ４０８）。この要求は、プロセス４００を実施するゲスト・オペレーティング・システムのコンポーネントまたはモジュールから、他のコンポーネントまたはモジュールから、ユーザー等から受けることができる。この要求に応答して、発生した値と共に格納されているシーケンス・カウンター値を入手する（ステップ４１０）。プロセス４００を実施するゲスト・オペレーティング・システムの現在のシーケンス・カウンター値も入手する（ステップ４１２）。
【００５５】
[0060]  次いで、ゲスト・オペレーティング・システムは、ステップ４１２において入手した現在のシーケンス・カウンター値が、ステップ４１０において入手した、格納されているシーケンス・カウンター値と同じであるか否かチェックする（ステップ４１４）。２つの値が同じである場合、発生した値を用いることができる（ステップ４１６）。
【００５６】
[0061]  しかしながら、２つの値が同じでない場合、ゲスト・オペレーティング・システムのエントロピー・プールをクリアし、発生し直す（ステップ４１８）。要求された値を発生し直し（ステップ４２０）、この発生し直した値を用いることができる（ステップ４２２）。
【００５７】
[0062]  図５は、１つ又は複数の実施形態にしたがって、仮想マシン用のエントロピー・プールを実装するように構成することができるコンピューティングデバイスの一例５００を示す。コンピューティングデバイス５００は、例えば、図１の移動体通信デバイス１００とすることができる。
【００５８】
[0063]  コンピューティングデバイス５００は、１つ又は複数のプロセッサーまたは演算装置５０２、１つ又は複数のメモリーおよび／または記憶コンポーネント５０６を含むことができる１つ又は複数のコンピューター読み取り可能媒体５０４、ならびに種々のコンポーネントやデバイスが互いに通信することを可能にするバス５１０を含む。コンピューター読み取り可能媒体５０４および／または１つ又は複数のＩ／Ｏデバイス５０８は、コンピューティングデバイス５００の一部として含めることができ、あるいは代わりに、コンピューティングデバイス５００に結合することもできる。バス５１０は、メモリー・バスまたはメモリー・コントローラー、周辺バス、加速グラフィクス・ポート、プロセッサーまたはローカル・バス等、種々の異なるバス・アーキテクチャーを用いる、様々なタイプのバス構造の内１つ又は複数を代表する。バス５１０は、有線バスおよび／またはワイヤレス・バスを含むことができる。
【００５９】
[0064]  メモリー／記憶コンポーネント５０６は、１つ又は複数のコンピューター記憶媒体を代表する。コンポーネント５０６は、揮発性媒体（ランダム・アクセス・メモリー（ＲＡＭ）のような媒体）および／または不揮発性媒体（リード・オンリー・メモリー（ＲＯＭ）、フラッシュ・メモリー、光ディスク、磁気ディスク等のような媒体）を含むことができる。コンポーネント５０６は、固定媒体（例えば、ＲＡＭ、ＲＯＭ、固定ハード・ドライブ等）や、リムーバブル媒体（例えば、フラッシュ・メモリー・ドライブ、リムーバブル・ハード・ドライブ、光ディスク等）を含むことができる。
【００６０】
[0065]  本明細書において論じた技法は、ソフトウェアで実現することができ、１つ又は複数の演算装置５０２が命令を実行する。尚、演算装置５０２の中、演算装置５０２の種々のキャッシュ・メモリーの中、デバイス５００の他のキャッシュ・メモリー（図示せず）の中、他のコンピューター読み取り可能媒体上等のように、コンピューティングデバイス５００の異なるコンポーネントに異なる命令を格納できることは認められてしかるべきである。加えて、コンピューティングデバイス５００内において命令を格納する位置は、ときと共に変化する可能性があることも認められてしかるべきである。
【００６１】
[0066]  １つ又は複数の入力／出力デバイス５０８は、ユーザーがコマンドおよび情報をコンピューティングデバイス５００に入力することを可能にし、更に情報をユーザーおよび／または他のコンポーネントまたはデバイスに提示することも可能にする。入力デバイスの例には、キーボード、カーソル制御デバイス（例えば、マウス）、マイクロフォン、スキャナー等が含まれる。出力デバイスの例には、ディスプレイ・デバイス（例えば、モニターまたはプロジェクタ）、スピーカ、プリンター、ネットワーク・カード等が含まれる。
【００６２】
[0067]  本明細書では、種々の技法をソフトウェアまたはプログラム・モジュールという一般的なコンテキストにおいて記載することができる。一般に、ソフトウェアは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するかまたは特定の抽象データ・タイプを実現する。これらのモジュールおよび技法の実施態様は、何らかの形態のコンピューター読み取り可能媒体を通じて格納または送信することができる。コンピューター読み取り可能媒体は、コンピューティングデバイスがアクセスすることができる入手可能媒体であれば、いずれでも可能である。一例として、そして限定ではなく、コンピューター読み取り可能媒体は「コンピューター記憶媒体」および「通信媒体」を含むことができる。
【００６３】
[0068]  「コンピューター記憶媒体」は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、これらは、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータというような情報の記憶のため方法または技術であれば、いずれによってでも実現できる。コンピューター記憶媒体は、限定ではなく、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたはその他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができ、しかもコンピューターがアクセスすることができる媒体であれば他のいずれでも含む。
【００６４】
[0069]  「通信媒体」は、通例、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波またはその他の伝送メカニズムのような、変調データ信号において具体化する。また、通信媒体は、いずれの情報配信媒体も含む。「変調データ信号」という用語は、情報を信号内にエンコードするような様式で、その特性１つ又は複数を設定または変化させた信号を意味する。限定ではなく、一例として、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、ＲＦ、赤外線、およびその他のワイヤレス媒体というようなワイヤレス媒体を含む。前述のいずれの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれる。
【００６５】
[0070]  一般に、本明細書において記載した機能または技法のいずれもが、ソフトウェア、ファームウェア、ハードウェア（例えば、固定論理回路）、手動処理、またはこれらの実施態様の組み合わせを用いて実現することができる。「モジュール」および「コンポーネント」という用語は、本明細書において用いる場合、一般にソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを表す。ソフトウェア実施態様の場合、モジュールまたはコンポーネントは、プロセッサー（例えば、１つまたは複数のＣＰＵ）において実行されると、指定されたタスクを実行するプログラム・コードを表す。プログラム・コードは、１つ又は複数のコンピューター読み取り可能メモリー・デバイスに格納することができる。これらの更に詳しい説明は、図５を参照すれば見つけることができる。本明細書に記載した、仮想マシン用のエントロピー・プール技法の特徴は、プラットフォームに依存しないということであり、種々のプロセッサーを有する種々の商用コンピューティングプラットフォームにおいて、本技術を実現できることを意味する。
【００６６】
[0071]  以上、構造的特徴および／または方法論的行為に特定的な文言で主題について説明したが、添付した特許請求の範囲において定められている主題は、以上に記載した特定的な特徴または行為には必ずしも限定されないことは言うまでもない。逆に、以上に記載した特定的な特徴および行為は、特許請求の範囲を実現する形態例として開示したまでである。
【図１】
2013502665.tif 000003
【図２】
2013502665.tif 000004
【図３】
2013502665.tif 000005
【図４】
2013502665.tif 000006
【図５】
2013502665.tif 000007
【国際調査報告】
2013502665.tif 000008
2013502665.tif 000009