JP2013502665A - 仮想マシン用エントロピー・プール - Google Patents

仮想マシン用エントロピー・プール Download PDF

Info

Publication number
JP2013502665A
JP2013502665A JP2012526828A JP2012526828A JP2013502665A JP 2013502665 A JP2013502665 A JP 2013502665A JP 2012526828 A JP2012526828 A JP 2012526828A JP 2012526828 A JP2012526828 A JP 2012526828A JP 2013502665 A JP2013502665 A JP 2013502665A
Authority
JP
Japan
Prior art keywords
operating system
entropy
computing device
guest operating
entropy pool
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.)
Granted
Application number
JP2012526828A
Other languages
English (en)
Other versions
JP5745518B2 (ja
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013502665A publication Critical patent/JP2013502665A/ja
Application granted granted Critical
Publication of JP5745518B2 publication Critical patent/JP5745518B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Feedback Control In General (AREA)
  • Operation Control Of Excavators (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

コンピューティングデバイスのホスト・オペレーティング・システムにおいて、このコンピューティングデバイスの1つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて、エントロピー・データを収集する。収集したエントリピー・データに少なくとも部分的に基づいて、エントロピー・プールを更新し、このエントロピー・プールからのデータを、コンピューティングデバイスの仮想マシンとして実行しているゲスト・オペレーティング・システムに供給する。ゲスト・オペレーティング・システムは、ホスト・オペレーティング・システムによって供給されたエントロピー・プールからのデータに基づいて、ゲスト・オペレーティング・システムのエントロピー・プールを維持する。ゲスト・オペレーティング・システムは、このゲスト・オペレーティング・システムのエントロピー・プールにアクセスし、乱数を含む値を発生するための基準として、ゲスト・オペレーティング・システムのエントロピー・プールを用いる。
【選択図】図1

Description

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

Claims (15)

  1. コンピューティングデバイスであって、
    プロセッサーと、
    仮想マシンによって管理されるプログラムのための命令が格納されているコンピューター読み取り可能媒体と、
    を備えており、前記命令を前記プロセッサーによって実行すると、このプロセッサーに、
    前記プログラムのエントロピー・プールにアクセスさせ、前記エントロピー・プールが、前夫プログラムが実行している間における前記コンピューティングデバイスの1つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて発生され、
    乱数を発生するための基準として、前記エントロピー・プールを用いさせる、コンピューティングデバイス。
  2. 請求項1記載のコンピューティングデバイスにおいて、前記エントロピー・プールが、前記コンピューティングデバイス上にあるホスト・オペレーティング・システムから得られる、コンピューティングデバイス。
  3. 請求項2記載のコンピューティングデバイスにおいて、前記エントロピー・プールの少なくとも一部が、前記ホスト・オペレーティング・システムによって、前記仮想マシン・マネージャーのメモリー空間にマッピングされる、コンピューティングデバイス。
  4. 請求項2記載のコンピューティングデバイスにおいて、前記エントロピー・プールが、前記プログラムの基本入力/出力システム(BIOS)を通じて、前記ホスト・オペレーティング・システムから得られる、コンピューティングデバイス。
  5. 請求項2記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
    前記ホスト・オペレーティング・システムに追加のエントロピーを要求させ、
    前記ホスト・オペレーティング・システムから、追加のエントロピー・データを受け取らせ、
    前記追加のエントロピー・データを前記プログラムのエントロピー・プールに追加させる、コンピューティングデバイス。
  6. 請求項2記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
    特定の間隔で前記ホスト・オペレーティング・システムから追加のエントロピー・データを受け取らせ、
    前記追加のエントロピー・データを、前記プログラムのエントロピー・プールに組み入れさせる、コンピューティングデバイス。
  7. 請求項1記載のコンピューティングデバイスにおいて、前記プログラムが、ゲスト・オペレーティング・システムを備えている、コンピューティングデバイス。
  8. 請求項1記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
    前記プログラムに対する第1シーケンス・カウンター値を入手させ、
    前記乱数および前記プログラムに対する第1シーケンス・カウンター値を格納させる、コンピューティングデバイス。
  9. 請求項8記載のコンピューティングデバイスにおいて、前記命令が、更に、前記プロセッサーに、
    前記乱数を用いることを求める要求を受けさせ、
    前記格納されている第1シーケンス・カウンター値を入手させ、
    前記要求が受け入れられたときに、前記プログラムに対する第2シーケンス・カウンター値を入手させ、
    前記第2シーケンス・カウンター値を前記第1シーケンス・カウンター値と比較させ、
    前記第1シーケンス・カウンター値および前記第2シーケンス・カウンター値が同じである場合、前記乱数を用いさせ、
    前記第1シーケンス・カウンター値および前記第2シーケンス・カウンター値が同じでない場合、
    前記プログラムのエントロピー・プールを発生し直させ、
    前記発生し直したエントロピー・プールに基づいて、新たな乱数を発生させ、
    前記新たな乱数を用いさせる、コンピューティングデバイス。
  10. コンピューティングデバイスにおける方法であって、
    ゲスト・オペレーティング・システムが実行している間における前記コンピューティングデバイスの1つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて、エントロピー・データを収集するステップと、
    前記収集したエントロピー・データに少なくとも部分的に基づいて、エントロピー・プールを更新するステップと、
    前記コンピューティングデバイスの仮想マシンとして実行している前記ゲスト・オペレーティング・システムに、前記エントロピー・プールからのデータを供給するステップと、
    を備えている、方法。
  11. 請求項10記載の方法であって、更に、前記ゲスト・オペレーティング・システムからの追加のエントロピーを求める要求に応答して、前記エントロピー・プールからのデータを前記ゲスト・オペレーティング・システムに供給するステップを備えている、方法。
  12. 請求項10記載の方法であって、更に、
    前記コンピューティングデバイスの1つ又は複数のハードウェア・コンポーネントの各々に少なくとも部分的に基づいて追加のエントロピー・データを収集するステップと、
    前記収集した追加のエントロピー・データに少なくとも部分的に基づいて、前記エントロピー・プールを更新するステップと、
    を備えている、方法。
  13. 請求項10記載の方法であって、更に、前記ゲスト・オペレーティング・システムをブートするときに、前記エントロピー・プールからのデータを前記ゲスト・オペレーティング・システムに供給するステップを備えている、方法。
  14. 請求項13記載の方法において、前記ゲスト・オペレーティング・システムをブートするときに、前記エントロピー・プールからのデータを前記ゲスト・オペレーティング・システムに供給するステップが、前記エントロピー・プールの少なくとも一部を、前記ゲスト・オペレーティング・システムが用いる基本入力/出力システム(BIOS)テーブルが格納されている、前記仮想マシンのメモリー空間に含めるステップを備えている、方法。
  15. 請求項10記載の方法において、前記コンピューティングデバイスのホスト・オペレーティング・システムにおいて当該方法を実施する、方法。
JP2012526828A 2009-08-24 2010-08-13 ハードウェア・コンポーネントに基づくデータをゲスト・オペレーティング・システムが利用できるようにするためのプログラム及び方法 Active JP5745518B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/546,167 2009-08-24
US12/546,167 US9495190B2 (en) 2009-08-24 2009-08-24 Entropy pools for virtual machines
PCT/US2010/045474 WO2011028391A2 (en) 2009-08-24 2010-08-13 Entropy pools for virtual machines

Publications (2)

Publication Number Publication Date
JP2013502665A true JP2013502665A (ja) 2013-01-24
JP5745518B2 JP5745518B2 (ja) 2015-07-08

Family

ID=43606324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012526828A Active JP5745518B2 (ja) 2009-08-24 2010-08-13 ハードウェア・コンポーネントに基づくデータをゲスト・オペレーティング・システムが利用できるようにするためのプログラム及び方法

Country Status (9)

Country Link
US (1) US9495190B2 (ja)
EP (1) EP2470989B1 (ja)
JP (1) JP5745518B2 (ja)
KR (1) KR101761950B1 (ja)
CN (1) CN102473098B (ja)
BR (1) BR112012004052A2 (ja)
CA (1) CA2768062A1 (ja)
RU (1) RU2589348C2 (ja)
WO (1) WO2011028391A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646689B1 (ko) * 2015-01-29 2016-08-08 국민대학교산학협력단 상대적 독립성을 이용한 누적 엔트로피 평가 장치 및 방법

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286182B2 (en) * 2011-06-17 2016-03-15 Microsoft Technology Licensing, Llc Virtual machine snapshotting and analysis
EP2788863B1 (en) * 2011-12-07 2018-12-12 Quintessencelabs Pty Ltd Integrated quantum-random noise generator using quantum vacuum states of light
CN102609441B (zh) * 2011-12-27 2014-06-25 中国科学院计算技术研究所 基于分布熵的局部敏感哈希高维索引方法
US8954723B2 (en) 2012-05-09 2015-02-10 International Business Machines Corporation Anonymization of data within a streams environment
GB2502541A (en) 2012-05-30 2013-12-04 Ibm Balancing consumption of random data using multiple sources with different levels of entropy
US9086936B2 (en) 2012-07-31 2015-07-21 International Business Machines Corporation Method of entropy distribution on a parallel computer
TWI601063B (zh) 2012-09-19 2017-10-01 聯想企業解決方案(新加坡)有限公司 使用亂數產生器的電腦系統與資料處理方法
US8763085B1 (en) * 2012-12-19 2014-06-24 Trend Micro Incorporated Protection of remotely managed virtual machines
JP6093043B2 (ja) * 2013-02-28 2017-03-08 アマゾン・テクノロジーズ・インコーポレーテッド 品質設定可能ランダムデータサービス
US9819727B2 (en) 2013-02-28 2017-11-14 Amazon Technologies, Inc. Computing infrastructure for configurable-quality random data
DE102013209915A1 (de) * 2013-05-28 2014-12-04 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Bereitstellung von Zufallsbitfolgen in einer virtuellen Ausführungsumgebung eines Rechnersystems
US9495544B2 (en) * 2013-06-27 2016-11-15 Visa International Service Association Secure data transmission and verification with untrusted computing devices
US10275268B2 (en) * 2013-08-26 2019-04-30 Red Hat, Inc. Providing entropy to a guest operating system
GB2519115A (en) * 2013-10-10 2015-04-15 Ibm Providing isolated entropy elements
US9436529B2 (en) * 2014-12-26 2016-09-06 Red Hat, Inc. Providing random data to a guest operating system
US20170063550A1 (en) * 2015-04-23 2017-03-02 Keith J Brodie Secure Digital Signature Apparatus and Methods
US9658832B2 (en) 2015-05-18 2017-05-23 Red Hat Israel, Ltd. Multi-factor entropy sourcing for random number generators
US9913137B2 (en) * 2015-09-02 2018-03-06 Huawei Technologies Co., Ltd. System and method for channel security
DE102016223695A1 (de) * 2016-11-29 2018-05-30 Continental Teves Ag & Co. Ohg Verfahren zur Bereitstellung von Zufallszahlen für Steuereinheiten eines Fahrzeugnetzwerks sowie Fahrzeugnetzwerk zur Durchführung dieses Verfahrens
US10333987B2 (en) * 2017-05-18 2019-06-25 Bank Of America Corporation Security enhancement tool for a target computer system operating within a complex web of interconnected systems
US10481872B2 (en) * 2017-08-29 2019-11-19 Colossio, Inc. Cryptographically secure random number generator
US10623183B2 (en) * 2017-11-01 2020-04-14 International Business Machines Corporation Postponing entropy depletion in key management systems with hardware security modules
CN107943450A (zh) * 2017-11-17 2018-04-20 上海众人网络安全技术有限公司 随机数生成方法、装置、计算机设备及计算机可读介质
KR20190028330A (ko) 2018-09-06 2019-03-18 (주) 퓨전데이타 풀 그룹화를 이용한 가상 데스크탑 시스템 및 서비스 방법
US11048477B2 (en) * 2018-09-25 2021-06-29 International Business Machines Corporation Entropy server for random number generation
SG11202104633WA (en) * 2018-11-09 2021-06-29 Visa Int Service Ass Distributed entropy system and method
US11030065B2 (en) * 2018-11-14 2021-06-08 Arm Limited Apparatus and method of generating random numbers
CN112380069B (zh) * 2020-12-04 2022-05-17 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
JP2003535377A (ja) * 2000-06-01 2003-11-25 タオ グループ リミテッド 疑似乱数発生器
WO2007007805A1 (ja) * 2005-07-14 2007-01-18 Matsushita Electric Industrial Co., Ltd. 検証方法、検証プログラム、記録媒体、情報処理装置、集積回路
US20080256151A1 (en) * 2007-03-23 2008-10-16 Microsoft Corporation Weighted entropy pool service

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US20060072747A1 (en) 2001-03-30 2006-04-06 Wood Matthew D Enhancing entropy in pseudo-random number generators using remote sources
US20030076956A1 (en) 2001-10-17 2003-04-24 Shackleford J. Barry Software implementation of cellular automata based random number generators
US7103771B2 (en) 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US7085933B2 (en) 2002-06-11 2006-08-01 Lenvo (Singapore) Pte, Ltd. Computer system apparatus and method for improved assurance of authentication
US7296294B2 (en) 2003-03-03 2007-11-13 Microsoft Corporation System for binding secrets to a computer system having tolerance for hardware changes
US7222062B2 (en) 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
US20060184936A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method using virtual machines for decoupling software from management and control systems
US7370190B2 (en) * 2005-03-03 2008-05-06 Digimarc Corporation Data processing systems and methods with enhanced bios functionality
US8019802B2 (en) 2005-08-24 2011-09-13 Qualcomm Incorporated Cryptographically secure pseudo-random number generator
US20070061535A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation Processing unit enclosed operating system
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7693811B2 (en) 2006-02-28 2010-04-06 International Business Machines Corporation Generating unique identifiers for logical partitions
US7894602B2 (en) * 2006-03-31 2011-02-22 Sap Ag System and method for generating pseudo-random numbers
RU2313125C1 (ru) 2006-06-05 2007-12-20 ВОЕННАЯ АКАДЕМИЯ СВЯЗИ имени С.М. Буденного Генератор случайной последовательности
US9098347B2 (en) * 2006-12-21 2015-08-04 Vmware Implementation of virtual machine operations using storage system functionality
US9026638B2 (en) 2007-02-05 2015-05-05 Novell, Inc. Stealth entropy collection
US8112753B2 (en) * 2007-02-27 2012-02-07 Red Hat, Inc. Delaying initiation of virtual machine support process by random delay value generated based on unique ID associated with the virtual machine
US8856782B2 (en) * 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US8949827B2 (en) * 2007-06-22 2015-02-03 Red Hat, Inc. Tracking a virtual machine
WO2009013673A2 (en) 2007-07-20 2009-01-29 Nxp B.V. Device with a secure virtual machine
US8307443B2 (en) 2007-09-28 2012-11-06 Microsoft Corporation Securing anti-virus software with virtualization
US20090204964A1 (en) * 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US20090113111A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US8250127B2 (en) 2008-01-07 2012-08-21 Aruba Networks, Inc. Harvesting entropy from trusted cryptographic sources
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
US20100088698A1 (en) * 2008-10-03 2010-04-08 Ravishankar Krishnamurthy Techniques for managing communication sessions
US9026571B2 (en) * 2008-10-27 2015-05-05 Microsoft Technology Licensing, Llc Random number generation failure detection and entropy estimation
US8370835B2 (en) * 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8478801B2 (en) * 2009-05-20 2013-07-02 Vmware, Inc. Efficient reconstruction of virtual disk hierarchies across storage domains

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003535377A (ja) * 2000-06-01 2003-11-25 タオ グループ リミテッド 疑似乱数発生器
JP2003051819A (ja) * 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
WO2007007805A1 (ja) * 2005-07-14 2007-01-18 Matsushita Electric Industrial Co., Ltd. 検証方法、検証プログラム、記録媒体、情報処理装置、集積回路
US20080256151A1 (en) * 2007-03-23 2008-10-16 Microsoft Corporation Weighted entropy pool service

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646689B1 (ko) * 2015-01-29 2016-08-08 국민대학교산학협력단 상대적 독립성을 이용한 누적 엔트로피 평가 장치 및 방법

Also Published As

Publication number Publication date
CN102473098A (zh) 2012-05-23
KR101761950B1 (ko) 2017-08-04
JP5745518B2 (ja) 2015-07-08
WO2011028391A3 (en) 2011-06-30
RU2589348C2 (ru) 2016-07-10
RU2012106610A (ru) 2013-08-27
CN102473098B (zh) 2016-11-16
US9495190B2 (en) 2016-11-15
BR112012004052A2 (pt) 2016-03-29
EP2470989A2 (en) 2012-07-04
CA2768062A1 (en) 2011-03-10
EP2470989B1 (en) 2018-01-10
US20110047545A1 (en) 2011-02-24
EP2470989A4 (en) 2013-01-23
KR20120065335A (ko) 2012-06-20
WO2011028391A2 (en) 2011-03-10

Similar Documents

Publication Publication Date Title
JP5745518B2 (ja) ハードウェア・コンポーネントに基づくデータをゲスト・オペレーティング・システムが利用できるようにするためのプログラム及び方法
US10853270B2 (en) Cryptographic pointer address encoding
US9740639B2 (en) Map-based rapid data encryption policy compliance
US10235304B2 (en) Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US9026571B2 (en) Random number generation failure detection and entropy estimation
US9436471B2 (en) Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
US10346318B2 (en) Multi-stage memory integrity method and apparatus
US20120284702A1 (en) Binding applications to device capabilities
US20130054977A1 (en) Encrypted chunk-based rapid data encryption policy compliance
JP2008135009A (ja) プラットフォームのブート効率を増加するシステムおよび方法
US9418220B1 (en) Controlling access to memory using a controller that performs cryptographic functions
US10810137B2 (en) Physical address randomization for secure encrypted memory
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
US20170255416A1 (en) Technologies to defeat secure enclave side-channel attacks using fault-oriented programming
TWI779338B (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法
JP2010039576A (ja) メモリ管理方法
JP2018117383A (ja) 装置、方法、集積回路、プログラム、及び有形のコンピュータ可読記憶媒体
WO2011096073A1 (ja) メモリ管理方法
TW202418076A (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130813

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140926

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150501

R150 Certificate of patent or registration of utility model

Ref document number: 5745518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250