JP4796625B2 - 仮想化検出 - Google Patents

仮想化検出 Download PDF

Info

Publication number
JP4796625B2
JP4796625B2 JP2008514946A JP2008514946A JP4796625B2 JP 4796625 B2 JP4796625 B2 JP 4796625B2 JP 2008514946 A JP2008514946 A JP 2008514946A JP 2008514946 A JP2008514946 A JP 2008514946A JP 4796625 B2 JP4796625 B2 JP 4796625B2
Authority
JP
Japan
Prior art keywords
processor
program
executing
computer
frequency
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.)
Expired - Fee Related
Application number
JP2008514946A
Other languages
English (en)
Other versions
JP2008542928A (ja
JP2008542928A5 (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2008542928A publication Critical patent/JP2008542928A/ja
Publication of JP2008542928A5 publication Critical patent/JP2008542928A5/ja
Application granted granted Critical
Publication of JP4796625B2 publication Critical patent/JP4796625B2/ja
Expired - Fee Related 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
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Description

背景
デスクトップ、サーバ、ワークステーション、もしくはノートブックコンピュータを含むコンピュータのようなプロセッサに基づくシステムにおいて、パーソナルデジタルアシスタントすなわちPDA、「スマート」携帯電話、もしくはポータブルゲームシステムのようなハンドヘルドデバイスにおいて、または、ゲームコンソールもしくはステーション、セットトップボックスその他のホームエンターテイメントデバイス等においてはプロセッサが使用される。それぞれの場合において、プロセッサは基本的な実行サイクルに基づいて作動し、一つのプロセッサパラメータはそのプロセッササイクルが発生する周波数である。この周波数は、1秒当たりのサイクル数で測定される。すなわち、ヘルツ(Hz)、またはメガヘルツ(MHz)およびギガヘルツ(GHz)のようなその倍数である。
いくつかの場合においては、プロセッサは多数の周波数で動作可能である。例えば、電力節約モード時には、プロセッサは、高性能モードの場合に使用される周波数よりも低い周波数の動作モードに切り替えられる。プロセッサが異なるモードで動作する異なる周波数のセットは通常、プロセッサの製造者によって特定される別個の値のセットである。
いくつかの場合においては、プロセッサ製造者は、プロセッサ上で実行されるプログラムが、プロセッサが動作するように特定された単数または複数の周波数を決定する方法を提供する。例えば、プログラムは、プロセッサをモデル番号に戻す命令を実行し、そのプログラムはそれに基づいて、ストアされたテーブルにアクセスすることで、プロセッサが動作する単数または複数の対応周波数を決定する。
プロセッサに基づくシステムはまた、リアルタイムクロックを与える。かかるシステム上で実行されるプログラムはリアルタイムクロックへアクセスし、それを使用して、例えばリアルタイムクロックによって測定された所定時間の間プログラムをサスペンドすることにより、プログラム実行中のリアルタイム期間をプログラム上で決定する。
仮想化は、ハードウェアおよびソフトウェア、または場合によってはソフトウェアのみの仮想化をサポートするプロセッサに基づくホストマシンが、ホストのアブストラクションを表すことを可能にする技術である。その結果、ホストマシンの基礎をなすハードウェアが一つ以上の独立して動作する仮想マシンとして見える。したがって、各仮想マシンは内蔵プラットフォームとして機能する。よくあることだが、仮想化技術が使用されて、複数のゲストオペレーティングシステムおよび/または他のゲストソフトウェアは、現実には物理的に同じハードウェアプラットフォーム上での実行であっても、見かけ上同時にかつ見かけ上独立して複数の仮想マシン上で共存かつ実行することができる。仮想マシンは、ホストマシンのハードウェアを擬態し、または、異なるハードウェアアブストラクション全体を代替的に表す。
仮想化システムは、仮想マシンで動作するゲストソフトウェアに、一セットのリソース(例えば、プロセッサ、メモリ、IOデバイス)を与え、物理ホストマシンのコンポーネントのいくつかまたは全てを仮想マシンにマッピングし、または、完全な仮想コンポーネントを生成することができる。このため、仮想化システムは「仮想ベアマシン」インターフェイスをゲストソフトウェアに与えるともいえる。
いくつかの実施例においては、仮想化システムは、ホストマシンを制御する仮想マシンモニタ(virtual machine monitor(VMM))を含む。VMMは、仮想マシン(virtual machine(VM))で動作するゲストソフトウェアに、プロセッサ、メモリおよびIOデバイスのような一セットのリソースを与える。VMMは、物理ホストマシンのコンポーネントのいくつかまたは全てを仮想マシンにマッピングして、VMM内のソフトウェアでエミュレートされる完全仮想化コンポーネントを生成する。完全仮想化コンポーネントは仮想マシン(例えば仮想IOデバイス)に含まれる。VMMは、ハードウェア仮想化アーキテクチャ内のファシリティ(facilities)を使用して仮想マシンへサービスを与え、ホストマシン上で実行される複数の仮想マシンからのおよびそれらの間の保護を与える。
図1は、仮想マシン環境100の一実施例を示す。本実施例においては、プロセッサに基づくプラットフォーム116がVMM112を実行する。VMMは、典型的にはソフトウェアに実装されるが、仮想ベアマシンインターフェイスをより高レベルのソフトウェアに対してエミュレートおよびエクスポートする。かかる高レベルソフトウェアは、標準OS、リアルタイムOSを含むか、または、限られたオペレーティングシステム機能性を備えた必要最低限の環境でもよく、いくつかの実施例において標準OSで典型的に利用可能なOSファシリティを含まなくてもよい。その代わりに、例えば、VMM112は他のVMM内で実行されるか、または、そのサービスを使用して実行されてもよい。VMMは、例えば、ハードウェア、ソフトウェア、ファームウェアに実装されてもよく、またはいくつかの実施例においては、様々な技術の組み合わせによって実装されてもよい。
プラットフォームハードウェア116は、パーソナルコンピュータ(PC)、メインフレーム、パーソナルデジタルアシスタント(PDA)または「スマート」携帯電話のようなハンドヘルドデバイス、ポータブルコンピュータ、セットトップボックス、または他のプロセッサに基づくシステムであってよい。プラットフォームハードウェア116は、少なくともプロセッサ118およびメモリ120を含む。プロセッサ118は、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ等のようなプログラム実行可能な任意のタイプのプロセッサである。プロセッサは、複数の実施例での実行のための、マイクロコード、プログラマブルロジックまたはハードコード化ロジックを含む。図1は、かかるプロセッサ118を一つのみ示すが、一実施例におけるシステムにおいては一つ以上のプロセッサが存在してもよい。また、プロセッサ118は、マルチコアを含み、マルチスレッド用サポートする等であってよい。メモリ120は、ハードディスク、フロッピディスク(登録商標)、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、前記デバイスの任意の組み合わせ、または、様々な実施例においてプロセッサ118によって読み出し可能な任意の他のタイプのマシン媒体を含んでよい。メモリ120は、プログラム実行および他の方法実施例を実行するための命令および/またはデータをストアする。
VMM112は、ゲストソフトウェアに対して一つ以上の仮想マシンのアブストラクションを与える。そのアブストラクションは、様々なゲストに対して同じまたは異なるアブストラクションを与える。図1は、2つの仮想マシン102および114を示す。各仮想マシン上で実行されるゲストソフトウェア103および113のようなゲストソフトウェアは、ゲストOS104または106のようなゲストOS、および様々なゲストソフトウェアアプリケーション108および110を含む。ゲストソフトウェア103および113は、ゲストソフトウェア103および113が実行されて他の機能が実行される仮想マシン内の物理リソース(例えばプロセッサレジスタ、メモリ、およびI/Oデバイス)にアクセスする。例えば、ゲストソフトウェア103および113は、仮想マシン102および114において与えられるプロセッサのアーキテクチャおよびプラットフォームに応じて、全てのレジスタ、キャッシュ、ストラクチャ、I/Oデバイス、メモリ等に対してアクセスすることが予測される。
他の実施例においては、プロセッサ118は、仮想マシン制御ストラクチャ(virtual machine control structure(VMCS))124にストアされたデータに応じて仮想マシン102および114の動作を制御する。VMCS124は、ゲストソフトウェア103および113の状態、VMM112の状態、VMM112がゲストソフトウェア103および113の動作をどのように制御したいのかを示す実行制御情報、VMM112と仮想マシンとの間の制御移行等を含むストラクチャである。プロセッサ118は、VMCS124から情報を読み出して仮想マシンの実行環境を決定し、その振る舞い(behavior)を制約する。一実施例において、VMCS124はメモリ120にストアされる。いくつかの実施例において、複数のVMCSストラクチャが使用されて複数の仮想マシンがサポートされる。
ゲストソフトウェア(例えば、103、ゲストOS104およびアプリケーション108を含む)がアクセス可能なリソースは、「特権」または「非特権」のいずれかに分類される。特権リソースに対しては、VMM112は、ゲストソフトウェアが望む機能性を容易にする一方で、こうした特権リソースへの究極的な制御を維持する。さらに、各ゲストソフトウェア103および113は、例外(例えばページフォールト、一般保護例外等)、割り込み(例えばハードウェア割り込み、ソフトウェア割り込み)、およびプラットフォームイベント(例えば初期化(INIT)およびシステム管理割り込み(SMI))のような様々なプラットフォームを取り扱うことを予測する。これらのプラットフォームイベントのいくつかは、「特権」となっている。というのは、それらはVMM112によって取り扱われて仮想マシン102および114の適正な動作を確保し、かつ、ゲストソフトウェアからおよびゲストソフトウェア間を保護する必要があるからである。ゲストオペレーティングシステムおよびゲストアプリケーションはいずれも特権リソースへのアクセスを試行し、いずれも特権イベントを引き起こすかまたは経験する。ここでは、特権プラットフォームイベントおよび特権リソースへのアクセス試行は集合的に、「特権イベント」または「仮想化イベント」と称する。
前述のおよび図1に図示するような実施例における仮想マシン環境の動作は、図2に示す処理によって表される。図2は、ゲストソフトウェアで発生する特権イベントを処理する実施例でのVM環境の動作、および、ゲストソフトウェアにより非特権イベントを処理する実施例の動作を示す。図2は、図1で示したような環境で発生する全てのコンポーネントまたは全ての動作を示すわけではない。これは単に提示の明確化を目的とする。小さなセットのコンポーネントおよび少数の所定動作を図2に示す一方で、一実施例でのVM環境は、多くの他のコンポーネントを含み、多くの他の動作がかかる実施例において生じる。
図2は、図1において前述した、仮想マシンアブストラクション102、およびプラットフォームハードウェア116上で実行されるゲストソフトウェア103の動作の一つのセットの例を示す。動作は、システム内(例えば、VMM112内、ゲストソフトウェア103内等のような)のどこでそれが発生するのかを示すブロック内に示す。前述したVM環境における他のコンポーネントに加えて、VMアブストラクション102は、ゲストソフトウェア103のための仮想マシン状態および他の状態情報を212においてストアする。また、多くの例のうちの2つを挙げるとすれば、仮想ネットワーク接続、または一般的なレジスタのセットのような他のリソースをゲストに与える。もちろん現実には、VM状態、ゲスト状態、または他のVMリソースを実装する物理リソースは、VMが実行されるプラットフォームハードウェア116によって与えられる。プラットフォームハードウェアは、メモリ120、VMCS124、およびプロセッサ118を含む。
240において、ゲストソフトウェア103は、非特権リソース242にアクセスする。非特権リソースは、VMM112による制御を必要とせず、ゲストソフトウェアによって直接アクセスすることができる。ゲストソフトウェアはVMM112を呼び出すことなく継続するので、ゲストは、非特権リソース242にアクセスした後245において動作を継続することができる。同様に、非特権プラットフォームイベントはVMM112の介在なしで取り扱われる(これは図2には示されていない)。
205において、ゲストソフトウェア103は、特権リソースへのアクセスを試行し、および/または特権プラットフォームイベントを経験する。205においてのようにかかる特権イベントが発生すると、制御はVMM112へ転送される(207)。ゲストソフトウェアからVMM112への制御の転送(207)は、ここでは仮想マシンエグジット(virtual machine exit)と称する。リソースアクセスを容易にするかまたは特権イベントを適切に取り扱うかした後、VMM112は、232において制御をゲストソフトウェアに戻し、その後動作をレジュームする(235)。VMM112からゲストソフトウェアへの制御の転送(232)は、仮想マシンエントリ(virtual machine entry)と称する。一実施例において、VMM112は、その移行をトリガする(230)ように特別に設計された命令、ここでは仮想マシンエントリ命令と称する、を実行することにより、仮想マシンエントリを開始する。
一実施例において、仮想マシンエグジットが発生すると、ゲストソフトウェアが使用するプロセッサ状態のコンポーネントがセーブされ(210)、VMM112が要求するプロセッサ状態のコンポーネントがロードされ、そして、220において実行がVMM112でレジュームする。一実施例において、ゲストソフトウェアが使用するプロセッサ状態のコンポーネントはVMCS124のゲスト状態領域にストアされ、VMM112が要求するプロセッサ状態のコンポーネントはVMCS124のモニタ状態領域にストアされる。一実施例において、VMM112からゲストソフトウェアへの移行が発生すると、仮想マシンエグジットでセーブされた(および、仮想マシンエグジット処理中にVMM112が変更したかもしれない)プロセッサ状態のコンポーネントは、レストアされ(225)、230において仮想マシン102または114に制御が戻される。
一実施例において、VMのストラクチャおよびゲストソフトウェアに対するサポートの編成は異なる。仮想化をサポートするべくホストマシン上で実行されるソフトウェアは、VMMという用語であってもそうでなくてもよい。いくつかの例では、仮想マシンサポートシステムは、ハードウェアコンポーネントすなわちサポート有しなくてもよい。さらに他の実施例では、VMMおよびゲスト全体は、図1に示すストラクチャとは異なり、実行オペレーティングシステム内で実行される。業界で知られているように、仮想マシンの他の多くの実装が可能である。
ハードウェアによってサポートされたVMMは、図1および図2を参照して示す実施例において上述したようにVMを実装するが、VM内で実行されるプログラムは、物理マシン環境とは多くの点で区別不能な仮想化ゲストマシン環境内で与えられる。ハードウェアサポートにより、VMMは、仮想プロセッサのモデル特有レジスタといった特権リソースへのアクセスのような特別な命令をトラップして正確に取り扱い、物理プロセッサが戻すであろう値を戻すことができる。さらに、ハードウェアへの特権アクセス、例えばI/Oデバイスへの副作用を有するメモリアクセスは、実施例のハードウェアにおける仮想化サポートとともに、記載のVMMおよびVMCSの動作によって、実施例において適切にシミュレーションされる。一例では、具体的には所定プラットフォームが、基礎をなすハードウェアと多くの点で類似または同一の仮想ハードウェアを表すVMを与える。これは、例えば、基礎を成す物理プロセッサと同じプロセッサタイプおよびモデルの仮想プロセッサ、物理マシンのバスに接続されたものと同じI/Oデバイス等を与えることによる。ゲストがプロセッサまたは他のハードウェアに対して、プラットフォームまたはプロセッサ特有の参照を行うことは次に、所定の応答に対する中間VMMおよびVMCSを経由して物理プラットフォームおよびVMへ渡される。よって、基礎をなす物理ハードウェアの酷似レプリカである環境がゲストに与えられる。これにより、ゲストにとって、介在する仮想化の存在を検知することは非常に困難となる。
または、VMMおよび仮想化サポートシステムは、基礎をなす物理システムとは異なるプロセッサまたはプラットフォームに基づいた環境を与えてもよい。この場合であっても、仮想化サブシステムおよびVMMの入念な実装によって、仮想マシン上で実行されるプログラムが任意の直接的な方法で環境の仮想化された性質を検知することは回避される。
いくつかの場合において、プログラムが、その実行環境の仮想化された性質に気付くことは重要である。例えば、性能に左右されるプログラム(performance critical program)に所定動作を行わせたいと望むプログラム製造供給者にとっては、そのプログラムが単に、最小メモリサイズまたはプロセッサ周波数のような所定の最小能力によって物理ハードウェアにインストールされていることを確証することが必要である。仮想化環境においては、VMは、基礎をなすハードウェアの現実の能力を正確には反映しないかもしれないメモリサイズもしくはプロセッサ周波数、または仮想化ハードウェアの他のパラメータを報告する。さらに、VM内でのプログラム実行は一般に、VM自体の動作のみを理由にオーバヘッドを招く。このオーバヘッドは、性能に左右される所定のプログラム処理にとって望ましくない。保護されたデータを操作または表示するプログラムのような他のプログラムは、ハードウェアデバイスを認証すること、または承認されたハードウェアプラットフォーム上でのみ実行することを望む。かかるプログラムが実行されるプラットフォームが、現実には未承認プラットフォーム上で実行され、かつ、承認された物理ハードウェアプラットフォームをシミュレーションするように悪意に設計されたVMであった場合、プログラムが、実行されたプラットフォームが仮想化されていることを検知できなければ、かかるプログラムのセキュリティは、危険にさらされかねない。
仮想化された実施例上で実行されていることを検知するプログラムの処理を図3に示す。図3では、プロセッサの測定された動作周波数とその特定されたセットの有効動作周波数との比較処理が、一実施例において一回以上繰り返される。処理の開始(305)において、プロセッサが動作する有効な特定周波数のセットが取得される(310)。繰り返しにおいて、フローチャート中iはループ変数を表すが、315において1で開始し、320におけるエグジットまで所定数nに限定される。測定周波数と特定周波数とがn回比較される。わかることだが、示された基本ループと等価な、繰り返しの任意の態様が使用されてよい。いくつかの例では、ループは省略される。すなわち、nが1の場合である。
プロセッサ周波数の決定は、プロセッサが動作する特定周波数の決定と同様、当業界で周知である。各繰り返しにおいて、プロセッサの現実の周波数が測定され(325)、次に、測定値が特定された有効周波数のセットと比較される(330)。比較結果が評価される(335)。複数の比較のうちいずれかが、特定された周波数のための通常許容範囲から外れる場合、マシンは仮想マシンであり、340において処理は完了する。そうでない場合、ループカウンタに対して増やした値でループを繰り返す(345)。全てのnテストが範囲外測定なしで完了、すなわちループが320においてエグジットすれば、これは350において、処理が物理マシン上で実行されていて仮想マシン上ではないことを示す結果を意味する。
一実施例において、仮想化は、IA−32インテル(登録商標)アーキテクチャプラットフォーム(IA−32)のようなインテル(登録商標)アーキテクチャプロセッサ上の内部アーキテクチャサポートおよびVMMを使用して実装される。これは、IA−32インテル(登録商標)アーキテクチャソフトウェア開発者マニュアル(IA−32ドキュメンテーション)に記載されている。一実施例において、仮想化プロセッサと基礎をなす物理プロセッサとは両者ともIA−32プロセッサであり、プロセッサにより実行されるサイクル数、リアルタイムクロック値、およびプロセッサ判別方法の決定のような具体的な命令をサポートする。例えば、IA−32アーキテクチャにおいては、RDTSC(タイムスタンプカウンタ読み出し)命令が使用されて基本プロセッササイクルがカウントされる。IA−32RDMSR(モデル特有レジスタ(Model−Specific Register)すなわちMSRからの読み出し)およびCPUID命令が使用されて、プロセッサのモデル、タイプおよび識別に関する様々なパラメータが決定される。これらはCPUタイプを含む。CPUタイプによってさらに、IA−32ドキュメンテーションで特定されるテーブルから具体的なバス速度において特定される動作周波数を決定することができる。その上、プロセッサ周波数設定フィールドおよびスケーラブルバス速度フィールドのような、IA−32MSRにおける他のフィールドがその後テーブルとともに使用されて予測プロセッサ周波数が見出される。
これらの命令、または異なるアーキテクチャにおける同等のセットが使用されて仮想化環境が検出される。かかるIA−32の一実施例において、図3の高レベルプログラムは、図4に示すIA−32アーキテクチャの特有な命令を使用するプログラムとして実装される。仮想化を検出するプログラム処理は、まず、410において、上記のプログラムが、当該プログラムがその上で処理を実行しようとしているプロセッサから、実行された全ての基本クロックサイクルの値Tc1、RDTSCのような命令を使用して要求することによって開始される(480)。次に、システムのリアルタイムクロック(RTC)がアクセスされ(420)、処理は、リアルタイムクロックの既知の周期(ここではnティックと称する)の間待機またはループを行う(425)。次に、プログラムは、実行されプロセッサクロックサイクル新たな現在値Tc2を読み出す(430)。2つの値の差を時間で割ることによって、すなわち(Tc2−Tc1)/nによって、測定周波数Fmが得られる(460)。次に495において、CPUIDまたは類似の命令を使用してプロセッサの識別情報がアクセスされる。この情報は、処理480によって読み出し可能な、プロセッサ内のモデル特有レジスタ(MSR)の複数のレジスタ値のセットとして与えられる。次に、取得された値の少なくとも一つまたはそれ以上が使用されて、プロセッサの仕様の一部として公開される所定のテーブル内にインデクスがつけられ(450)、可能な複数の所定周波数およびそれら周波数に対する許容範囲のセットが得られる。プログラムは450において、測定周波数Fmに近似する特定周波数Fs、および、プロセッサに許容されるドリフトまたはバリエーションという点で関連する特定の範囲すなわち許容範囲を選択する。デルタ値は、テーブルから読み出されるか、またはプロセッサに特有の他のデータから既知である。次に、FsとFmとの差の絶対値が計算されてデルタと比較される(480)。その絶対値がデルタを越える場合、プログラムは仮想マシンまたは仮想化プラットフォームで実行されている(470)。そうでない場合、プラットフォームは非仮想化の物理プラットフォームである(490)。

この処理の正確さは、使用される仮想化の現実の方法にかかわらず、仮想化リアルタイムクロックが物理リアルタイムクロックと同一となるべき蓋然性に依存する。このため、420および425においてのようなリアルタイムクロックにアクセスするプログラムが仮想化環境で実行されていても、仮想化環境は、仮想化環境が所定タイプのタイムクリティカルな機能を適切に果たすべき場合には、基礎をなすシステムのリアルタイムクロックへの直接アクセスを与える必要がある。一般に、生産品質の仮想化システムは、ゲストから見えるようにリアルタイムクロックを仮想化せずに、基礎をなすシステムのリアルタイムクロックに直接的なアクセスを与えると仮定される。これによって、仮想化を検出するべく図示のように使用される、ゲスト用のリアル物理マシンへのアクセスウィンドウが与えられる。仮想マシンにおいてゲストとして実行されるプログラムが物理リアルタイムクロックにアクセスすると、上述のように、そのプログラムは、仮想マシンによって与えられる仮想プロセッサの見かけの周波数を、仮想プロセッサと同一の物理プロセッサが動作するべく特定される周波数と比較する。仮想化に伴うオーバヘッドに起因して、および、仮想環境のコンポーネントがソフトウェアでエミュレーションされることに起因して、仮想プロセッサの測定周波数は、時間にわたって変化する可能性が非常に高く、対応する物理プロセッサの動作周波数変動の通常の予測範囲外にあるのが一般的である。このため、プラットフォームの仮想化された性質が検出されるのは、通常の周波数変動外にある可動域(excursion)を検出することによってである。一般的には、仮想化プロセッサが、基礎をなす物理プロセッサとモデルおよび仕様が同一である場合、仮想化周波数は、特定バス速度にある物理プロセッサの現実の周波数よりも低くなる。仮想化プロセッサが、基礎をなす物理プロセッサよりも低い動作周波数を備えるプロセッサとして、例えばより遅いプロセッサのプロセッサモデル情報を与えることによって、ゲストに与えられたとしても、仮想化の基本的性質に起因する仮想化周波数の不可避なバリエーションのほとんどはそれでもなお、上述の処理によって高い確率で検出されるだろう。より高い精度を目的として処理は数回繰り返され、通常範囲外の測定周波数が見出される。
上記実施例は、IA−32プロセッサで利用可能なタイプの高レベルアーキテクチャフィーチャ、すなわちクロックサイクルカウンタおよびリアルタイムクロックの利用可能性に基づく。しかし、図1に示す処理の一般的なフローは、特定のアーキテクチャに依存するわけではない。現在のプロセッサに基づくシステムのほとんどは、具体的詳細は図1に示すものと異なり、上記参照のIA−32命令と異なるかもしれないが、プロセッサの現実の動作周波数を測定する方法、および、プロセッサの動作の特定周波数を決定する方法を与える。したがって、当業者であれば、プロセッサの測定周波数がプロセッサの特定周波数に近似するか否かを決定する多くの代替方法が他の実施例において用いられることがわかるであろう。
いくつかの実施例は、マシンによってアクセスされるときに実施例の処理を行う命令をストアしたマシンまたはマシン読み取り可能媒体を含むソフトウェアプログラム製品またはソフトウェアとして与えられる。他の実施例においては、処理を行うためのハードウェア組み込みロジック(hardwired logic)を含む特定ハードウェアコンポーネントによって、またはプログラムされたコンポーネントとカスタムハードウェアコンポーネントとの任意の組み合わせによって、処理が行われる。
上記説明においては、説明を目的として、多数の具体的詳細を記載実施例の完全な理解を与えるべく記述するが、当業者であれば、これらの具体的詳細がなくとも他の多くの実施例が行えることがわかるだろう。
上記詳細な説明のいくつかの部分は、プロセッサに基づくシステム内のデータビットに対するアルゴリズムおよび動作のシンボル表現に関して与えられる。こうしたアルゴリズムの記述および表現は、当業者が当業界において自分の仕事の内容を他者へ最も有効に伝える手段である。動作とは、複数の物理量の物理的な操作を要求する動作のことである。これらの量は、ストア、転送、結合、比較、および他の操作が可能な電気的信号、磁気的信号、光学的信号、または他の物理的信号の形態をとる。これらの信号をビット、値、要素、シンボル、文字、数等としてみなすことは、原則的に共通使用ゆえに、便利な場合があることがわかっている。
しかし、留意すべきなのは、これらおよび同様な用語の全てが所定の物理量に関連するべきであり、これらの量に適用される便宜上のラベルに過ぎないということである。記載から明らかであるとして具体的に述べない限りは、「実行」、「処理」、「計算」、「算出」、「決定」等の用語は、プロセッサに基づくシステム、または同様の電子計算デバイスのアクションおよび処理を称する。プロセッサに基づくシステム、または同様の電子計算デバイスは、プロセッサに基づくシステムのストレージ内の物理量として表されるデータを操作して、同様に表される他のデータ、または他の情報ストレージ、伝送もしくは表示デバイスに変換する。
実施例の記載において、添付の図面が参照される。図面において、同じ番号は、いくつかの図を通じて実質的に類似するコンポーネントを記載する。他の実施例が利用されて、ストラクチャの、ロジックの、および電気的な変更がなされる。さらに、様々な実施例は異なるが、必ずしも相互排他的というわけではないことを理解すべきである。例えば、一実施例に記載される具体的なフィーチャ、ストラクチャ、または特徴は、他の実施例に含まれてもよい。
さらに、プロセッサに実装される実施例の設計は、創作から製造シミュレーションまでの様々なステージにわたる。設計を表すデータは、いくつかの方法で設計を表す。まず、シミュレーションに有用であるが、ハードウェアは、ハードウェア記述源とまたは他の機能記述言語を使用して表される。また、ロジックおよび/またはトランジスタゲートを備える回路レベルモデルが、設計プロセスのいくつかのステージにおいて製造される。さらに、いくつかのステージにおいては、ほとんどの設計は、ハードウェアモ出るの様々なデバイスの物理配置を表すデータのレベルにまで達する。従来の半導体製造技術が使用される場合においては、ハードウェアモデルを表すデータは、集積回路を製造するべく使用される異なるマスク層上の様々なフィーチャの存在または不在を特定するデータであってよい。設計の任意の表現において、データは任意の形態のマシン可読媒体にストアされる。かかる情報を伝送するべく変調または生成される光波または電波、メモリ、またはディスクのような磁気もしくは光学ストレージが、マシン可読媒体であってよい。これら媒体のいずれも、設計またはソフトウェア情報を「搬送」または「指示」する。コードまたは設計を指示または搬送する電気的搬送波が、電気信号のコピー、バッファ、または再伝送が行われる程度まで伝送されると、新たなコピーが作られる。よって、通信プロバイダまたはネットワークプロバイダは、実施例をなすまたは表す物品(搬送波)のコピーを作る。
実施例は、マシンによってアクセスされてそのマシンに請求項に記載の主題に係る処理を行わせるデータがストアされたマシン可読媒体を含むプログラム製品として与えられる。マシン可読媒体は、フロッピディスク(登録商標)、光学ディスク、DVD−ROMディスク、DVD−RAMディスク、DVD−RWディスク、DVD+RWディスク、CD−Rディスク、CD−RWディスク、CD−ROMディスク、および光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気または光学カード、フラッシュメモリ、または電子的命令をストアするのに適した他のタイプの媒体/マシン可読媒体を含むが、これらに限られない。さらに、実施例はまた、プログラム製品としてダウンロードできる。このプログラムは、遠隔にあるデータ源から、要求するデバイスへ、通信リンク(例えばモデムまたはネットワーク接続)を介して搬送波または他の伝達媒体で具体化されるデータ信号によって転送される。
多くの方法が、その最も基本的な形態で記載されるが、複数の方法のいずれかに対してステップを追加または削除することができる。請求項に記載の主題の基本的範囲から逸脱せずに、記載のメッセージのいずれかに対して情報を加算また減算することができる。多くのさらなる修正および適用ができることは、当業者にとって明らかである。具体的な実施例は、請求項に記載の主題を限定するべく与えられるのではなく、それを説明するべく与えられる。請求項に記載された主題の範囲は、以下の請求項によってのみ限定され、上述の具体的な実施例によっては限定されない。
一実施例における仮想化環境の高レベルブロック図である。 一実施例における仮想化環境動作の高レベルフローチャートである。 一実施例における処理の高レベルフローチャートである。 一実施例における処理の高レベルフローチャートである。

Claims (13)

  1. コンピュータが、物理プロセッサまたは仮想プロセッサの何れか一方であり、プログラムを実行しているプロセッサの動作周波数を測定する段階と、
    コンピュータが、前記プログラムを実行しているプロセッサの測定された前記動作周波数の値と、前記物理プロセッサがその周波数で動作するべく特定された周波数である特定周波数の値であって、前記コンピュータのメモリに格納されている値とを比較する段階と、
    コンピュータが、前記比較の結果に基づいて、前記プログラムを実行しているプロセッサが、前記物理プロセッサであるか前記仮想プロセッサであるかを決定する段階と、
    を有し、
    前記プログラムを実行しているプロセッサの前記動作周波数を測定する段階は、
    コンピュータが、その間の時間が既知であるインターバルの間に、前記プログラムを実行しているプロセッサのクロックサイクルをカウントする段階と、
    コンピュータが、前記インターバルの間にカウントされた前記クロックサイクルの個数を、前記インターバルの時間で割ることによって、前記プログラムを実行しているプロセッサの前記動作周波数を計算する段階と、
    を含む
    方法。
  2. 前記比較する段階は、
    コンピュータが、前記プログラムを実行しているプロセッサの測定された前記動作周波数が、前記特定周波数に対する特定の範囲内にあるか否かを決定する段階を含む、
    請求項1に記載の方法。
  3. 前記プログラムを実行しているプロセッサが前記物理プロセッサであるか前記仮想プロセッサであるかを決定する段階は、
    コンピュータが、
    前記プログラムを実行しているプロセッサの測定された前記動作周波数が前記特定周波数に対する前記特定の範囲内にある場合に、前記プログラムを実行しているプロセッサは前記仮想プロセッサではないと決定し、
    そうでない場合に、前記プログラムを実行しているプロセッサは前記仮想プロセッサであると決定する段階をさらに含む、
    請求項2に記載の方法。
  4. 前記プログラムを実行しているプロセッサのクロックサイクルをカウントする段階は、
    コンピュータが、前記プログラムを実行しているプロセッサの第1のサイクルカウントを取得すべく、前記プログラムを実行しているプロセッサへの命令を実行する段階と、
    コンピュータが、リアルタイムクロックにアクセスして、前記インターバルの時間が経過するまで前記プログラムを待機またはループさせるべく命令を実行する段階と、
    コンピュータが、前記インターバルが終了した後、前記プログラムを実行しているプロセッサの第2のサイクルカウントを取得すべく、前記プログラムを実行しているプロセッサへの命令を実行する段階と、
    コンピュータが、前記第2のサイクルカウントと、前記第1のサイクルカウントとの差を算出する段階と、
    を含む、
    請求項3に記載の方法。
  5. 記特定周波数を取得する段階をさらに有し、
    記特定周波数を取得する段階は、
    コンピュータが、前記コンピュータのプロセッサを識別する命令を実行して、前記コンピュータのプロセッサを識別する識別情報を取得する段階と、
    コンピュータが、取得した前記識別情報を用いて、前記コンピュータのプロセッサの仕様の少なくとも一部を格納するテーブルに格納された情報の中から、前記コンピュータのプロセッサの前記特定周波数を選択する段階と、
    を含む、
    請求項3または請求項4に記載の方法。
  6. 前記プログラムを実行しているプロセッサが前記物理プロセッサであるか前記仮想プロセッサであるかを決定する段階は、
    コンピュータが、前記プログラムを実行しているプロセッサの測定された前記動作周波数と前記特定周波数との差が予め定められた閾値を超える場合に、前記プログラムを実行しているプロセッサは前記仮想プロセッサであると決定する段階を含む、
    請求項1から請求項までの何れか一項に記載の方法。
  7. コンピュータに、
    物理プロセッサまたは仮想プロセッサの何れか一方であり、プログラムを実行しているプロセッサの動作周波数を測定する手順と、
    前記プログラムを実行しているプロセッサの測定された前記動作周波数の値と、前記物理プロセッサがその周波数で動作するべく特定された周波数である特定周波数の値であって、前記コンピュータのメモリに格納されている値とを比較する手順と、
    前記比較の結果に基づいて、前記プログラムを実行しているプロセッサが前記物理プロセッサであるか前記仮想プロセッサであるかを決定する手順と、
    を実行させるためのプログラムであって、
    前記プログラムを実行しているプロセッサの前記動作周波数を測定する手順は、
    その間の時間が既知であるインターバルの間に、前記プログラムを実行しているプロセッサのクロックサイクルをカウントする手順と、
    前記インターバルの間にカウントされた前記クロックサイクルの個数を、前記インターバルの時間で割ることによって、前記プログラムを実行しているプロセッサの前記動作周波数を計算する手順と、
    を含む、
    プログラム。
  8. 前記比較する手順は、
    前記プログラムを実行しているプロセッサの前記測定された前記動作周波数が、前記特定周波数に対する特定の範囲内にあるか否かを決定する手順を含む、
    請求項に記載のプログラム。
  9. 前記プログラムを実行しているプロセッサが前記物理プロセッサであるか前記仮想プロセッサであるかを決定する手順は、
    前記プログラムを実行しているプロセッサの測定された前記動作周波数が、前記特定周波数に対する前記特定の範囲内にある場合に、前記プログラムを実行しているプロセッサは前記仮想プロセッサではないと決定し、
    そうでない場合に、前記プログラムを実行しているプロセッサは前記仮想プロセッサであると決定する手順をさらに含む、
    請求項に記載のプログラム。
  10. 前記プログラムを実行しているプロセッサのクロックサイクルをカウントする手順は、
    前記プログラムを実行しているプロセッサの第1のサイクルカウントを取得すべく、前記プログラムを実行しているプロセッサへの命令を実行する手順と、
    リアルタイムクロックにアクセスして、前記インターバルの時間が経過するまで前記プログラムを待機またはループさせるべく命令を実行する手順と、
    前記インターバルが終了した後、前記プログラムを実行しているプロセッサの第2のサイクルカウントを取得すべく、前記プログラムを実行しているプロセッサへの命令を実行する手順と、
    前記第2のサイクルカウントと、前記第1のサイクルカウントとの差を算出する手順と、
    を含む、
    請求項に記載のプログラム。
  11. コンピュータに、
    記特定周波数を取得する手順をさらに実行させ、
    記特定周波数を取得する手順は、
    前記コンピュータのプロセッサを識別する命令を実行して、前記コンピュータのプロセッサを識別する識別情報を取得する手順と、
    取得した前記識別情報を用いて、前記コンピュータのプロセッサの仕様の少なくとも一部を格納するテーブルに格納された情報の中から、前記コンピュータのプロセッサの前記特定周波数を選択する手順と、
    を含む、
    請求項または請求項10に記載のプログラム。
  12. 前記プログラムを実行しているプロセッサが前記物理プロセッサであるか前記仮想プロセッサであるかを決定する手順は、
    前記プログラムを実行しているプロセッサの測定された前記動作周波数と前記特定周波数との差が予め定められた閾値を超える場合に、前記プログラムを実行しているプロセッサは前記仮想プロセッサであると決定する手順を含む、
    請求項から請求項11までの何れか一項に記載のプログラム。
  13. プロセッサと、ストレージとを備えるシステムであって、
    前記ストレージは、請求項から請求項12までの何れか一項に記載のプログラムを格納し、
    前記プロセッサは、前記プログラムを前記システム上で実行させる、
    システム。
JP2008514946A 2005-06-02 2006-06-02 仮想化検出 Expired - Fee Related JP4796625B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/144,527 2005-06-02
US11/144,527 US20060277546A1 (en) 2005-06-02 2005-06-02 Detecting virtualization
PCT/US2006/021652 WO2006130876A2 (en) 2005-06-02 2006-06-02 Detecting virtualization

Publications (3)

Publication Number Publication Date
JP2008542928A JP2008542928A (ja) 2008-11-27
JP2008542928A5 JP2008542928A5 (ja) 2010-12-24
JP4796625B2 true JP4796625B2 (ja) 2011-10-19

Family

ID=37036881

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008514946A Expired - Fee Related JP4796625B2 (ja) 2005-06-02 2006-06-02 仮想化検出

Country Status (6)

Country Link
US (1) US20060277546A1 (ja)
EP (1) EP1886221A2 (ja)
JP (1) JP4796625B2 (ja)
KR (1) KR100937062B1 (ja)
CN (1) CN101460924B (ja)
WO (1) WO2006130876A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7577820B1 (en) 2006-04-14 2009-08-18 Tilera Corporation Managing data in a parallel processing environment
US7774579B1 (en) * 2006-04-14 2010-08-10 Tilera Corporation Protection in a parallel processing environment using access information associated with each switch to prevent data from being forwarded outside a plurality of tiles
US8776041B2 (en) * 2007-02-05 2014-07-08 Microsoft Corporation Updating a virtual machine monitor from a guest partition
US8205241B2 (en) * 2008-01-30 2012-06-19 Microsoft Corporation Detection of hardware-based virtual machine environment
US9459890B2 (en) * 2008-07-10 2016-10-04 Mentor Graphics Corporation Controlling real time during embedded system development
US8966475B2 (en) * 2009-08-10 2015-02-24 Novell, Inc. Workload management for heterogeneous hosts in a computing system environment
US9003404B2 (en) * 2012-03-22 2015-04-07 Verizon Patent And Licensing Inc. Determining hardware functionality in a cloud computing environment
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security
US9015838B1 (en) * 2012-05-30 2015-04-21 Google Inc. Defensive techniques to increase computer security
US9195492B2 (en) * 2012-10-25 2015-11-24 Empire Technology Development Llc Secure system time reporting
GB2512376A (en) * 2013-03-28 2014-10-01 Ibm Secure execution of software modules on a computer
US10628204B2 (en) * 2018-02-27 2020-04-21 Performance Software Corporation Virtual communication router with time-quantum synchronization

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546568A (en) * 1993-12-29 1996-08-13 Intel Corporation CPU clock control unit
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7017060B2 (en) * 2001-03-19 2006-03-21 Intel Corporation Power management system that changes processor level if processor utilization crosses threshold over a period that is different for switching up or down
US6961806B1 (en) * 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
JP3781758B2 (ja) * 2004-06-04 2006-05-31 株式会社ソニー・コンピュータエンタテインメント プロセッサ、プロセッサシステム、温度推定装置、情報処理装置および温度推定方法
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment

Also Published As

Publication number Publication date
KR100937062B1 (ko) 2010-01-15
CN101460924B (zh) 2014-02-12
JP2008542928A (ja) 2008-11-27
CN101460924A (zh) 2009-06-17
EP1886221A2 (en) 2008-02-13
KR20080010464A (ko) 2008-01-30
US20060277546A1 (en) 2006-12-07
WO2006130876A2 (en) 2006-12-07
WO2006130876A3 (en) 2007-03-29

Similar Documents

Publication Publication Date Title
JP4796625B2 (ja) 仮想化検出
JP4354488B2 (ja) 特権イベントを処理するための複数のバーチャルマシーンモニタの利用
JP4584315B2 (ja) 仮想マシン環境におけるタイマ・オフセット機構
Vidas et al. Evading android runtime analysis via sandbox detection
JP4564536B2 (ja) 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置
US7827550B2 (en) Method and system for measuring a program using a measurement agent
US9529614B2 (en) Automatically bridging the semantic gap in machine introspection
US7748037B2 (en) Validating a memory type modification attempt
US8099574B2 (en) Providing protected access to critical memory regions
EP1761850B1 (en) Support for nested faults in a virtual machine environment
Franklin et al. Remote detection of virtual machine monitors with fuzzy benchmarking
JP2007528084A (ja) 仮想マシン環境におけるゲストソフトウェアの実行中にオープン・イベント・ウィンドウの認識を容易にする方法および装置
Klingensmith et al. Hermes: A real time hypervisor for mobile and iot systems
Shropshire Analysis of monolithic and microkernel architectures: Towards secure hypervisor design
Klingensmith et al. Using virtualized task isolation to improve responsiveness in mobile and iot software
US20040193394A1 (en) Method for CPU simulation using virtual machine extensions
US7752030B2 (en) Virtualization as emulation support
Shizukuishi et al. An efficient tinification of the linux kernel for minimizing resource consumption
Nordholz Design and provability of a statically configurable hypervisor
Kauer Improving System Security Through TCB Reduction
Algawi et al. Modern Blue Pills and Red Pills
島田裕正 A VMM based Integrity Checker for Operating System Kernels
Li et al. Local-memory-based integrity checking for embedded systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A524 Written submission of copy of amendment under section 19 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110506

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: 20110712

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110729

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees