説明

VT環境で動作するソフトウェアエージェントの改竄防止、方法および装置

【課題】ソフトウェアエージェント、特にクリティカルなソフトウェアエージェントを、VT環境において、より効率的により効果的に保護する。
【解決手段】物理デバイスの第一のメモリページの第一のセキュリティドメインから該物理デバイスの第二のメモリページの第二のセキュリティドメインを、物理デバイスのプロセッサの一以上のレジスタに保存される複数のセキュリティドメインと比較する方法および装置を含む。この比較に基づき、第一のセキュリティドメインの優先ドメインが第二のセキュリティドメインのものと異なる場合に、プロセッサは、第一のメモリページからの命令が第二のメモリページへアクセスするのを却下する。

【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、データプロセシングおよび情報保証の分野に関する。特に、二ページが同じ保護ドメインに属していない場合、第一のメモリページの命令が第二のメモリページへアクセスするのを却下することで、仮想技術(VT)環境で動作するソフトウェアエージェントを改竄から守る。
【背景技術】
【0002】
メモリに基づく攻撃は情報プロセシングシステムに対する重要な脅威である。それら攻撃の中には、悪意のコード(ウィルスあるいはワームなど)をコンピュータシステムのメモリに保存して、正当なプログラムを実行しながらバグおよび/またはバッファあふれを利用して制御を悪意のコードへ移行させることに関するものがある。この種の攻撃を防止する一方策は、データが実行不可能として保存されているページを指定するのに利用することもできるページテーブルエントリに「実行不能」ビットを含め、悪意のコードがデータとして保存できず、故に同じ物理的、線形あるいは論理上のメモリスペースで実行できないようにすることである。
【0003】
さらなる方策には、メモリページテーブルを利用して、エージェントに関連付けられる「色」属性(それらのセキュリティおよび/または優先ドメインを反映したもの)をロジックパーティションメモリに、十分細かい粒度で保存して、ある色のエージェントが他の色に関連付けられたメモリにアクセスするのを防ぐ、という方策が含まれる。しかしこの方策は、ページテーブルで利用可能なビットの数が限られるので、比較的少ない「色」の割り当てに限られる(故に、比較的少ないセキュリティエンクレーブ)に限られる。さらには、プロセッサ技術の進歩によってはこれらビットを「色」指標として利用できなくなることも考えられる。
【発明を実施するための最良の形態】
【0004】
本発明の例示的実施形態は、それらに限られないが、物理デバイスの第一のメモリページの第一のセキュリティドメインから該物理デバイスの第二のメモリページの第二のセキュリティドメインを、物理デバイスのプロセッサの一以上のレジスタに保存される複数のセキュリティドメインと比較する方法および装置を含む。この比較に基づき、第一のセキュリティドメインの優先ドメインが第二のセキュリティドメインのものと異なる場合に、プロセッサは、第一のメモリページからの命令が第二のメモリページへアクセスするのを却下する。この結果、ソフトウェアエージェント、特にクリティカルなソフトウェアエージェントは、VT環境においてより効率的に効果的に保護されることがある。
【0005】
例示的実施形態の様々な側面を、当業者が普通に利用する用語を利用して記載して、それら働きの実質を当業者に伝える。しかし、当業者にとって明らかなように、幾らかの記載された側面のみで代替実施形態を実施することができる。説明目的から、特定の数字、材料、および構成は、例示的実施形態の完全な理解を提供する目的から提示される。しかし当業者とって明らかなように、代替実施形態はこれら特定の詳細なしに実施することもできる。その他の場合、例示的実施形態を不明瞭にするといけないので公知の特徴については省略するか簡略化してある。
【0006】
さらに、様々な操作については、多数離散操作として、例示的実施形態の理解に十分助けとなるような様式で記載されるが、記載順序は、これら操作が必ずしも順序に依存することを示唆するよう捉えられるべきものではない。特に、これら操作は提示される順序で行われる必要はない。
【0007】
「一実施形態においては」という言い回しが随所に出てくる。この言い回しは一般的に同じ実施形態のことを言及したものではないが、そうである場合もある。「含む(comprising)」「持つ(having)」「含む(including)」という用語は、そうではないと文脈で言及する場合以外は、同義に利用される。「A/B」という言い回しは、「AあるいはB」を意味する。「Aおよび/またはB」という言い回しは、「(A)、(B)あるいは(AおよびB)」を意味する。「A、B、Cの少なくとも一つ」は「(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)あるいは(A、BおよびC)」を意味する。「(A)B」という言い回しは、「(B)あるいは(AB)」を意味する、つまりAがオプションであるということである。
【0008】
図1は本発明の様々な実施形態の概略図である。図示されるように、プロセッサ116の比較ロジック120は、メモリページ(例えばエージェント114に割り当てられる)に関連付けられるセキュリティドメインを、第二のメモリページ(エージェント114の命令が参照あるいはアクセスを試みた)のセキュリティドメインと比較してもよい。比較結果に基づき、比較ロジック120は、ページフォールトを生じ、参照あるいはアクセスを却下してもよく、参照あるいはアクセスを却下しなくてもよい。二つのメモリページに関連付けられたセキュリティドメインは、コンピュータデバイス102のプロセッサ116の変換索引バッファ(TLB)118に保存され、プロセッサ116の、先行セキュリティドメイン(PSD)および最新セキュリティドメイン(CSD)レジスタ112へコピーされてもよい(二つのメモリページが、試みられたメモリページ参照あるいはアクセスにおける先行および最新メモリページであった場合)。セキュリティドメインは、前もってセキュリティドメイン割り当てサービス110(例えば、仮想マシンマネージャ104の)により割り当てられ、ページテーブル108へ保存され、仮想マシンマネージャ(VMM)104により利用されて、仮想マシン106のゲスト物理アドレスをプロセッサ116のホスト物理アドレスへ変換してもよい(TLB118へコピーされる前に)。
【0009】
様々な実施形態においては、仮想マシン(VM)106および仮想マシンマネージャ104は、プロセッサ116などの計算デバイス102の同じあるいは異なるプロセッサコアあるいはプロセッサにより実行され、メモリ124などの計算デバイス102のメモリに保存されてもよい。仮想マシン106は、エージェント114(プログラムあるいはプログラムのモジュールいずれであってもよい)などの、プログラムおよびモジュールを含んでもよく、一実施形態においてはゲストページテーブル(不図示)である。仮想マシンマネージャ104は、前述のページテーブル108およびセキュリティドメイン割り当てサービス110に加えて、幾らかの実施形態では、メモリに搭載されるとエージェント114のインテグリティを検証することのできるインテグリティ計測モジュール112を含むことができる。
【0010】
様々な実施形態においては、そこに組み込まれる本発明の実施形態の教示を除けば、計算デバイス102は本技術分野で知られている任意のシングルあるいはマルチプロセッサあるいはプロセッサコア中央処理装置(CPU)計算システムであってよい。計算デバイス102は、パソコン(PC)、ワークステーション、サーバ、ルータ、メインフレーム、ブレードサーバあるいは高密度サーバ内のモジュラーコンピュータ、携帯端末(PDA)、娯楽施設、セットトップボックスあるいは携帯デバイスであってよい。計算デバイス102は、仮想マシン106のような複数の仮想マシンの、および仮想化技術を利用する仮想マシンマネージャ104などの、複数のオペレーティングシステムを操作することができてよい。計算デバイス102がマルチプロセッサあるいはマルチプロセッサコアシステム(図1に示すような)である場合、計算デバイス102の各仮想マシン/仮想マシンマネージャは、該仮想マシン/仮想マシンマネージャ専用のプロセッサあるいはプロセッサコアにより操作されてよい。シングルプロセッサあるいはシングルプロセッサコア計算デバイス102においては(図1に図示するような)、シングルプロセッサあるいはプロセッサコア(プロセッサ116のような)が複数の仮想マシンおよび仮想マシンマネージャ104を操作してよい。シングル/マルチプロセッサあるいはプロセッサコア計算デバイス102の一例が図4に図示されており、以下でこれについて詳細に説明する。今後、請求項においても、「プロセッサ」および「プロセッサコア」という用語は、そうではないと文脈から明確に示唆される場合以外は、一方が他方を含有する形の相互交換可能な形で使用される。
【0011】
幾らかの実施形態においては、VMM104は計算デバイス102のサービスパーティションを持ってもよく、これは、デバイス102の実際のハードウェア資源を管理し、エージェント114のメモリページおよび命令がアクセスを試みるメモリページなどのメモリページを含み、仮想マシン計算デバイス102間で資源の利用を連携する。
【0012】
仮想マシン106は、本発明の実施形態の実施形態教示を除けば、任意の種類の仮想マシンであってよい。仮想マシン106は、あたかも別個のコンピュータシステムであるかのように振舞う、内臓タイプの操作環境であってよい。ネットワーク構造を介して計算デバイス102に連結された外部システムにとって、仮想マシン106は別個の計算デバイスのように思えてよい。仮想マシン106はさらに、エージェント114のような多数のエージェントを管理することのできるオペレーティングシステムを持っていてもよく、操作上排他的に仮想マシン106に属す保護されたメモリスペースを有してよい。一実施形態においては、仮想マシン106は線形アドレスとゲスト物理アドレスとの間にマッピングを含むゲストページテーブル(不図示)を含んでもよい。上述のように、仮想マシン106はさらに、エージェント114を含み、プロセッサ116により操作される。適切な仮想マシンおよび仮想化技術には、それらに限られないが、ワシントン州RedmondのMicrosoft Corporation、カリフォルニア州Palo AltoのVMware,Inc.、および英国CambridgeのXenSourceから入手できるものが含まれる。
【0013】
さらに例示されるように、VMM104はページテーブル108構造を含むことができる。幾らかの実施形態においては、図3に以下に示すように、ページテーブル108は、仮想マシン106のゲスト物理アドレスを計算デバイス102のホスト物理アドレスへマッピングするように、および計算デバイス102のメモリページのセキュリティドメインを保存するように、階層的に組織化されてもよい。例えば、ページテーブル108はベースおよび拡張ページテーブルを含むことができ、これは、線形仮想アドレスの仮想マシン106のゲスト物理アドレスへの仮想マシン106のマッピング、および計算デバイス102のホスト物理アドレスへのゲスト物理アドレスのマッピング、また計算デバイス102のメモリページのセキュリティドメインの保存を提供する。ページテーブル108は、エージェント114などの複数の仮想マシン106コンポーネントの搭載に呼応してVVM104により更新され、これにより、ホスト物理メモリページを指し示すようにそれらのゲスト物理アドレスをマッピングするこれらコンポーネントへのエントリを追加してもよい。さらに、拡張ページテーブル108は、拡張ページテーブルポインタ(EPTP)と称されるプロセッサレジスタにより参照されてもよい。EPTPは、セキュリティドメイン構成オプションのマークを実現するある種のビットを含むこともできる。様々なレベルの拡張ページテーブルは、全てのあるいは一部のセキュリティドメインを保存することのできる拡張ページテーブルエントリ(EPTEs)を含むことができる。EPTEsはマルチレベルページング構造を形成してもよく、マルチレベルからの保護ドメインビットは組み合わせられて保護ドメインを一意的に識別することもできる。以下に、例示的なEPTPおよびEPTE構造を図3を参照してより詳細に記載する。
【0014】
幾らかの実施形態においては、前に示唆したように、VMM104がエージェント用にセキュリティドメインを判断することのできるセキュリティドメイン割り当てサービス110(今後、「割り当てサービス」と称す)を含んでよく、これは判断されたドメインをエージェントのメモリページ(一または複数)と関連付け、判断されたドメインをメモリページ(一または複数)を指し示すEPTE構造(一又は複数)に保存する。割り当てサービス110は各エージェントに一意のセキュリティドメインを割り当ててよく、同じセキュリティドメインを同じエージェントの関連モジュールあるいは関連エージェントに割り当ててもよい。さらに、割り当てサービス110は特別なセキュリティドメインを、仮想マシン106のベースコンポーネントおよびレガシーアプリケーションに割り当ててもよい。スケジューラ、ローダ、メモリマネージャなどのベースコンポーネントは、それらの命令がお互い異なるセキュリティドメインを持つメモリページにアクセスすることを許可する監督セキュリティドメインを割り当てられてもよい。この意味において、セキュリティドメインは部分的に命令を受け、セキュリティドメインのうち幾らかは他のものよりもより優先(特権を与えられる)であってよい(いつもではないが)。レガシーアプリケーションはセキュリティドメインを割り当てられなくてもよく(あるいは、「0」というセキュリティドメインを割り当てられてもよい)、このような訳で、セキュリティドメインを持つメモリページへはアクセスできない。様々な実施形態において、割り当てサービス110はさらに、判断されたセキュリティドメインと関連付けられる特徴を判断することができる(例えば、ドメインが割り当てられたメモリページが隠しメモリページであるか否かなど)。以下に図3を参照しながら記載される、一実施形態においては、セキュリティドメインの数箇所が多数のEPTEsに入れ子状に保存されてもよい。このような実施形態においては、割り当てサービス110は、ネットワークドライバ、各エージェントについて同じのセキュリティドメインの箇所、および各エージェントモジュールに固有の箇所などの、ロジックグループからのエージェントを割り当て、これにより、割り当てられたセキュリティドメインのロジック組織化を実現する。代替実施形態においては、割り当てサービス110は、VMM104のコンポーネントではなくて、仮想マシン106のような仮想マシンのコンポーネントであってよい。
【0015】
様々な実施形態においては、前に示唆したように、VMM104がさらに、エージェント114が仮想マシン106メモリに搭載される際にエージェント114のインテグリティを検証することのできるインテグリティ計測モジュール(IMM)112を含んでよい。IMM112は、メモリページの暗号ハッシュのような、本技術分野において任意の既知の方法を利用して、エージェント114のインテグリティを証明してよい。エージェント114のインテグリティを検証することにより、IMM112は追加的なセキュリティ層を提供して、そのセキュリティドメインの割り当て前であってもエージェント114の改変を検知することができるようになる。幾らかの実施形態においては、計算デバイス102は、IMM112を含むこともできる、追加的な仮想マシン(不図示)を含むこともできる。このような実施形態においては、VMM104のインテグリティサービス(不図示)は、IMM112による評価をすべく、エージェント114のメモリページのコピーを追加的仮想マシンへマップしてもよく、IMM112がエージェントの検証結果を返してもよい。
【0016】
様々な実施形態においては、前に示唆したように、仮想マシン106は、エージェント114のような、一以上のアプリケーションを含むことができる。エージェント114は、他のエージェントのメモリページにアクセスする必要のある命令をもつプログラムあるいはプログラムのモジュールを含む、任意の種類のエージェントであってよい。そのようなアクセスは、読み取りあるいは書き込みアクセスであってよく、あるいは、アクセスが試みられるメモリページに保存されているエージェントへの遷移目的のジャンプあるいは呼び出しであってもよい。エージェント114は、仮想マシン106の正当な(あるいは伝染していない)エージェントであってよいし、あるいはワームやウィルスなどの悪意のプログラムであってもよい。幾らかの実施形態においては、エージェント114は、スケジューラ、ローダ、メモリマネージャ、あるいはセキュリティドメイン割り当てサービス110(VMM104が実施していない場合)などの、幾つもの信用の置ける仮想マシン106ベースコンポーネントのうちの一つであってよい。このようなコンポーネントは、上述したように、コンポーネント114の命令が異なるセキュリティドメインを持つメモリページにアクセスすることを許可する特別な監督セキュリティドメインを割り当てられてもよい。他の実施形態においては、エージェント114は、セキュリティドメインを割り当てられないレガシーアプリケーションであってもよい。上述したように、エージェント114はそれ自身がセキュリティドメインと関連付けられた仮想マシン106の一メモリページに保存されてもよい。
【0017】
例示したように、本発明の実施形態の教示を除けば、プロセッサ116は、Pentium(登録商標)Processor Family、Itanium(登録商標)Processor Family、あるいは他のIntel Corporationのプロセッサファミリ、あるいは別の会社の任意の他の汎用その他のプロセッサのような、任意の様々な異なる種類のプロセッサであってよい。プロセッサ116は仮想マシン106およびそのエージェント、仮想マシンマネージャ104およびそのエージェントを実行してよく、一以上のTLBを含むことができ、TLB118はメモリページのセキュリティドメインを保存するよう修正され、比較ロジック120、CSDおよびPSDレジスタ122を関連付けていてよい。TLB118は、様々なメモリページ用にページテーブル108に割り当てられ保存されているセキュリティドメインを、VMM104のセキュリティドメイン割り当てサービス110によりコピーするよう改良されてよい。メモリページにアクセスしようとするエージェント114の命令をプロセスするにあたり、仮想マシン106、VMM104およびプロセッサ116のメモリ管理ロジックは、命令により参照される線形アドレスを、仮想マシン106のゲストページテーブル(不図示)から入手されるゲスト物理アドレスへマップしてもよく、その後これがロジックにより、命令の線形アドレスにより参照される実際のメモリページのホスト物理アドレスへマップされてよい。ゲスト物理アドレスのホスト物理アドレスへのマッピングは、VMM104のページテーブル108から入手されてよく、これは拡張ページテーブルであってよい。TLB118はこのプロセスで様々なレベルのアドレス変換のために広範に利用されてよい。プロセッサ116のロジックはその後、CSDレジスタ122に目下保存されているメモリページのセキュリティドメインをPSDレジスタ122へコピーしてもよく、アクセスされたメモリページのセキュリティドメインをCSDレジスタ122にコピーしてもよい。ロジック120はさらに、CSDおよびPSDレジスタ122の最新セキュリティドメインおよび先行セキュリティドメインを比較し、参照/アクセスを却下するか否かを判断する。
【0018】
様々な実施形態においては、セキュリティドメインを保存するという変更を除いては、TLB118は本技術分野で知られている任意の変換索引バッファであってよい。さらにTLB118は、命令に参照される線形メモリアドレスのマッピングをゲスト物理アドレスにキャッシュしてもよく、ゲスト物理アドレスのマッピングを命令が参照アクセスを試みているメモリページを指し示すホスト物理アドレスへキャッシュしてもよい。TLB118のセキュリティドメインおよびマッピングはプロセッサ116のロジックにより更新されてよい。
【0019】
前に示唆したように、プロセッサ116はPSDおよびCSDレジスタ122と、PSDおよびCSDレジスタ122に保存されているセキュリティドメインどうしを比較する比較ロジック120とを含む。比較は任意の既知の方策により実行されてよい。例えば、セキュリティドメインが複数の数値に関連付けられている場合、比較ロジック120は値が同じか、一あるいは両方の値がゼロか(上述のようにセキュリティドメインを表さない)、あるいは一あるいは両方の値が最大値などのデフォルト値であるか(監督セキュリティドメインを表す)、を判断してよい。比較ロジック120はその後、比較により得られた結果を利用して、命令がメモリページに参照あるいはアクセスするのを却下する。一実施形態においては、比較ロジック120は、命令を含むメモリページのセキュリティドメインが、命令が参照あるいはアクセスを試みているメモリページのセキュリティドメインと同じ場合に、参照あるいはアクセスを却下しなくてよく、セキュリティドメインどうしが異なる場合に参照あるいはアクセスを却下してよい。比較ロジック120は、ページフォールト例外をトリガすることで参照あるいはアクセスを却下してよい。
【0020】
さらに、比較ロジック120は、追加的基準に基づき参照あるいはアクセスを却下するかどうか判断してよい。例えば、一セキュリティドメイン(例えば「0」)はセキュリティドメインを表さず、セキュリティドメインではないとマークされたメモリページは任意の他のページによりアクセスできることにしてもよい。加えて、上述したように、ページテーブル108のEPTEはページが隠されているか否かを判断するフィールドあるいはビットを含んでよい。ビットはゼロに設定されることで、セキュリティドメイン比較の結果に関わらず、任意の他のページに対して、参照されるページからの読み出しを許可してもよいし、1に設定されることで、比較ロジック120に対して、セキュリティドメイン比較に基づき読み出しの参照あるいはアクセスを却下してもよい。幾らかの実施形態においては、隠しビットはプロセッサ116ロジックによりセキュリティドメインと共にレトリーブされてよく、TLB118のページテーブルに保存されてよい。書き込みの参照あるいはアクセスは、隠しビットの設定に関わらず防がれてよい。
【0021】
加えて、比較ロジック120は、命令制御フローに基づき参照あるいはアクセスを却下するか否か判断してよい。例えば、命令を利用してプログラムに許可されたエントリーポイントをマークしてもよい。Pentium(登録商標)Processor Familyのアーキテクチャによる一実施形態においては、新たな命令(「Directed Address Vector」あるいは「DAV」命令)がこの用途で追加されてよい。ジャンプその他の制御フロー命令が一セキュリティドメインのメモリページから別のセキュリティドメインのメモリページのDAV命令へ実行される場合、参照あるいはアクセスは却下されなくてよい。しかし、ジャンプが別のセキュリティドメインのページへのものであって、DAV命令へのものでなければ、参照あるいはアクセスは却下されてよい。したがって、DAV命令は、定義された安全なインタフェースを提供してもよい期待点のみにおけるプログラムへのエントリを許可するのに利用されてよい。プログラムのランダムなあるいは予期せぬセクションへの、別のセキュリティドメインのプログラムからのジャンプは防がれてよい。最後に、DAV命令は、実行可能なページにおいてのみ実行されて(例えば、Pentium(登録商標)4および他のProcessor FamiliesのアーキテクチャによるXDビットを利用するeXecute Disabledではなく)、DAV命令に見えるスプリアスビット列を持つデータページがプロセッサ116で実行できないよう保証してもよい。
【0022】
さらに、比較ロジック120は、ページフォールトがセキュリティドメイン不整合あるいは違反に起因しているかどうかを含むページフォールト報告を実現してもよい。例えば、比較ロジック120はページフォールトをトリガする際に、ページフォールトエラーコード内のビット(例えば、Pentium(登録商標)Processor Familyのアーキテクチャによりスタックに押し付けられるページフォールトエラーコードのビット5)を、セキュリティドメイン違反ビットとして指定してもよい旨、ページフォールトがセキュリティドメイン不整合によりトリガされたと示すものに設定されてもよい旨などの示唆を提供してもよい。このビットは他のフラグとの文脈で解釈されてもよい。例えば、セキュリティドメイン違反が命令フェッチに起因していた場合、エラーコード内の命令フェッチビットは1に設定されてよい。セキュリティドメイン違反が読み取り、あるいは書き込みに起因していた場合、読み取り/書き込みビットは、読み取りにつき0、あるいは書き込みにつき1に設定されてもよい。さらに、フォールトを引き起こしたエージェント114のメモリページの線形アドレスは、例えばPentium(登録商標)Processor FamilyのアーキテクチャによるプロセッサのCR2制御レジスタ内にセーブされてよい。
【0023】
例示したように、計算環境102のメモリ124は、VMM104、VM106およびそれらのコンポーネント以外は、プロセッサ116が実行してよい命令を保存できる本技術分野で知られている任意の種類のメモリデバイスであってよい。一実施形態においては、メモリ124は、少なくともVMM104およびVM106を含む幾つもの仮想マシン間でパーティションされてよい。
【0024】
まとめると、セキュリティドメイン割り当てサービス110は、セキュリティドメインをメモリページに割り当てるために追加されてよい。ページテーブル108およびTLB118は割り当てられるセキュリティドメインを保存すべく改善されてよく、プロセッサ116は、最新メモリページおよび先行メモリページのセキュリティドメインを保存するPSDおよびCSDレジスタ122を含むよう変更されてよく、参照/アクセスを却下すべきか判断すべく最新メモリページおよび先行メモリページのセキュリティドメインを比較する比較ロジック120を含むよう変更されてよい。
【0025】
図2は本発明の様々な実施形態の方法の選択された操作のフローチャート図を示す。示されるように、様々な実施形態においては、計算デバイスのインテグリティ計測モジュール(IMM)は、コンピュータデバイスエージェントのインテグリティを、それらエージェントの一つがメモリに生まれる度に検証してよい(ブロック202)。IMMは、計算デバイスの仮想マシンマネージャ(VMM)に、あるいは検証対象のエージェントを含まないコンピュータデバイスの仮想マシン(VM)に存在してよい。IMMはエージェントを含むメモリページのコピーを受信し、図1を参照して説明した方法で該エージェントを検証してよい。エージェント検証に際して、VMMのセキュリティドメイン割り当てサービスは、計算デバイスの複数のVMの複数のエージェントへ複数のセキュリティドメインを割り当ててよい(ブロック204)。割り当てサービスは、VMMの拡張ページテーブルの対応する拡張ページテーブルエントリ(EPTE)構造のセキュリティドメインを保存することで、割り当てられたセキュリティドメインと、エージェントに割り当てられた全てのメモリページとを関連付けてよく、EPTEに関連付けられた拡張ページテーブルポインタ(EPTP)構造における上述の隠しビットのような、セキュリティドメイン構成値を設定してもよく、これらが今度はTLBにコピーおよび保存される(ブロック206)。
【0026】
さらに上述されたように、計算デバイスの第一のメモリページに存在するエージェントの命令計算デバイスエージェントのVMと関連付けられたプロセッサの場合、第二のメモリページの参照あるいはアクセスを試みる命令、プロセッサのロジックは、PSDおよびCSDレジスタに保存される先行メモリページおよび最新メモリページのセキュリティドメインを更新してよい(ブロック208)。
【0027】
第二のメモリページのセキュリティドメインが一旦レトリーブされ保存されると、プロセッサの比較ロジックはPSDおよびCSDに保存されるセキュリティドメインを比較してよい(ブロック210)。比較の結果に少なくとも部分的に基づいて、比較ロジックは、命令の第二のメモリページに対する参照あるいはアクセスを却下しなくてよい(ブロック220)、あるいはアクセスを却下してもよい(ブロック222)。セキュリティドメイン比較に加えて、比較ロジックは幾つもの他のテストを行うよう適合されてもよい。例えば、比較ロジックは、第一のメモリページのセキュリティドメインが第二のメモリページのセキュリティドメインと異なるか否か判断してもよい(ブロック212)。セキュリティドメインどうしが同じ場合、比較ロジックはアクセスを却下しなくてよい(ブロック220)。一方、セキュリティレベルどうしが異なる場合、比較ロジックはさらに、上述の隠しビットが第二のメモリページに対して設定されているか判断してよい(ブロック214)。隠しビットが設定されている場合、比較ロジックはアクセスを却下してよい(ブロック222)。隠しビットが設定されていない場合、比較ロジックはさらに、試みられているアクセスが読み取りの参照あるいはアクセスかを判断してもよい(ブロック216)。参照あるいはアクセスが、読み取りの参照あるいはアクセスである場合、比較ロジックはアクセスを却下しなくてよい(ブロック220)。一方、参照あるいはアクセスが読み取りの参照あるいはアクセスでない場合、比較ロジックは、該参照あるいはアクセスが、ジャンプあるいは呼び出し命令などの、第二のメモリページの承認されたエントリポイントへの制御フロー遷移か否かを判断してよい(DAV命令として上で説明した)(ブロック218)。命令が、承認されたエントリポイントへのジャンプあるいは呼び出しであった場合、比較ロジックは命令を却下しなくてよい(ブロック220)。命令がジャンプあるいは呼び出しでない、あるいは承認されたエントリポイント以外へのメモリへのジャンプあるいは呼び出しであった場合、比較ロジックは命令が第二のメモリページに参照あるいはアクセスするのを却下してよい(ブロック222)。
【0028】
命令が、第二のメモリページに参照あるいはアクセスするのを却下されていない場合、比較ロジックはページフォールトをトリガしてよい(ブロック224)。幾らかの実施形態においては、ページフォールトは参照或いはアクセスの種類の記述子、および却下された参照あるいはアクセスを試みる第一のメモリページのアドレスを含んでよい。
【0029】
図3は、メモリページセキュリティドメインを論理的に順序付けられた様式で保存するよう適合された、拡張ページテーブル構造例を示す。最も左に位置するブロックは、セキュリティドメイン優先傾向を保存することのできる拡張ページテーブルポインタ(EPTP)例である。EPTPは、例えば、構造/許可ビット、中央および右のブロック列に示すEPTEブロックのような、512拡張ページテーブルエントリを保持する4KBメモリページの物理アドレス(48ビットフィールド)、および幾つもの反転ビットを有す、64ビット構造であってよい。反転ビットは、命令がアクセスするメモリページが、割り当てられたセキュリティドメインを持つか、ページが隠れているか、ページが遷移ページ(DAV)であるか、などを示すのに利用されてよい。中央および右のEPTEブロックは、EPTPブロックにより指し示されるメモリページのEPTEであってよい。EPTEブロックは、例えば、命令によりアクセスが試みられる物理ページフレームであるページフレームのアドレスを提供する40ビットのアドレスフィールドを含んでよい、あるいはその代わりに、アドレス変換に更に利用されてよい別の512EPTEを含む別のメモリページのアドレスを提供してよい。右のEPTEブロックを指し示すよう示されている中央のEPTEブロックは、そのようなポイントEPTEを構成している。さらに、EPTEの10ビットはセキュリティドメインを保存するのに利用されてよい。
【0030】
幾らかの実施形態において、CPUは、中央および右のブロック列にあるような、EPTEの少なくとも二つのドメインを分解して、アクセスが試みられているメモリページのゲスト物理アドレスを変換してよい。故に、二つのEPTEが任意のページフレームと関連付けられているので、メモリページにセキュリティドメインを割り当てるのに20ビットが利用されてよい。さらに、第一のEPTEの10ビットが、512メモリページフレームまでによって共有されてよいので、セキュリティドメイン割り当てサービスは、このアーチファクトを利用することで、セキュリティドメインスペースを論理的にパーティションすることができる(例えば、それらのセキュリティドメインの同じ初めの10ビットを共有する全てのネットワークドライバ)。
【0031】
図4は本発明の様々な実施形態を実行する際の利用に適したコンピュータシステムの一例を示す。示すように、計算システム400は、幾つものプロセッサあるいはプロセッサコア402(プロセッサ116など)およびシステムメモリ404(メモリ124など)を含む。本出願においては、請求項においても、「プロセッサ」および「プロセッサコア」という用語は、そうではないことが文脈ではっきりしている場合以外は、同義に使用される。さらに、計算システム400は、大容量記憶装置406(ディスケット、ハードドライブ、コンパクトディスク読出し専用記憶素子(CDROM)など)、入力/出力デバイス408(キーボード、カーソル制御など)、および通信インタフェース410(ネットワークインタフェースカード、モデムなど)を含む。これら要素は、一以上のバスを表すシステムバス412を介してお互い連結される。バスが多数の場合、一以上のバスブリッジ(不図示)によりブリッジされる。様々な実施形態において、大容量記憶装置406は多数の仮想マシンが利用する多数のパーティションに分割され、各仮想マシンは割り当てられたパーティションを専用してよい。
【0032】
これら要素の各々は本技術分野で知られた従前の機能を遂行する。特に、プロセッサ402(一又は複数)は前述の改善されたTLB、PSDおよびCSDレジスタ、セキュリティドメイン比較ロジックで改善される。さらに、システムメモリ404および大容量記憶装置406を利用して、セキュリティドメイン割り当てサービス、IMMなどを実施するプログラム命令のワーキングコピーおよび永久コピーを保存してよく、これらをここでは纏めて422と称す。これら命令422はプロセッサ402が支援するアセンブラ命令、あるいはCなどの高位のドメイン言語からコンパイルされてよい。
【0033】
プログラム命令の永久コピーは、ファクトリあるいはフィールドの永久記憶装置406に、例えばコンパクトディスク(CD)などの分配媒体(不図示)を介して、あるいは通信インタフェース410を介して(不図示の分配サーバから)配置されてよい。
【0034】
これら要素402―412の構成は既知なので、詳細には記載しない。
【0035】
ここでは特定の実施形態について例示および記載したが、本技術分野の当業者にとっては、本発明の実施形態の範囲を逸脱することなく、多岐にわたる代替および/または同等の実施形態を、示され記載された特定の実施形態に置き換えることができることは理解されよう。本出願はここで記した実施形態の変形例あるいは改変例のいずれをも網羅することを意図している。従って、本発明の実施形態は請求項とその均等物によってのみ限定されることが明確に意図されている。
【図面の簡単な説明】
【0036】
本発明の実施形態を、同様の参照番号は同様の要素を示すところの添付図面に図示する例示的実施形態の形で説明するが、この例示的実施形態に限られない。図面は以下の通りである。
【0037】
【図1】本発明の様々な実施形態の概略図である。
【0038】
【図2】本発明の様々な実施形態の方法の選択操作のフローチャート図である。
【0039】
【図3】メモリページセキュリティドメインを論理的に順序付けられた様式で保存するよう適合された、拡張ページテーブル構造例を示す。
【0040】
【図4】本発明の様々な実施形態を実行する際の利用に適したコンピュータシステムの一例を示す。

【特許請求の範囲】
【請求項1】
一の物理デバイスの一の第一のメモリページの一の第一のセキュリティドメインと、前記物理デバイスの一の第二のメモリページの一の第二のセキュリティドメインとを、前記物理デバイスの一のプロセッサの一の変換索引バッファの複数のレジスタに保存する工程と、
前記第一のメモリページの一の命令が前記第二のメモリページに参照あるいはアクセスを試みるとき、前記第一および第二のメモリページの前記第一および第二のセキュリティドメインを解析する工程と、
前記第一および第二のセキュリティドメインの前記解析に少なくとも部分的に基づいて、前記第一のメモリページからの前記命令が、前記第二のメモリページを参照あるいはアクセスすることを却下する工程と、を含む、方法。
【請求項2】
前記保存する工程は、前記参照あるいはアクセスが試みられるとき、前記第一および第二のセキュリティドメインを前記変換索引バッファからレトリーブすることと、前記レトリーブした第一および第二のセキュリティドメインを前記変換索引バッファの前記複数のレジスタに保存することとを含む、
請求項1に記載の方法。
【請求項3】
前記方法は、
前記第一および第二のセキュリティドメインを、前記物理デバイスの一の仮想マシンマネージャの一のページテーブルからレトリーブする工程と、
前記レトリーブした第一および第二のセキュリティドメインを、前記変換索引バッファにキャッシュする工程と、をさらに含み、
前記仮想マシンマネージャの複数のページテーブルは複数の拡張ページテーブルであり、
前記複数の拡張ページテーブルは、
各拡張ページテーブルポインタ構造が、一のセキュリティドメインが一の関連するメモリページおよび前記セキュリティドメインに関連付けられた複数の特徴に設定されているか否かを示す、複数の拡張ページテーブルポインタ構造と、
複数の関連するメモリページに割り当てられた複数のセキュリティドメインを保存する複数の拡張ページテーブルエントリ構造と、を含む、
請求項2に記載の方法。
【請求項4】
複数の拡張ページテーブルエントリ構造からの複数のビット、およびお互いに異なる入れ子レベルを有す前記複数の拡張ページテーブルエントリ構造の少なくとも幾らかを、一のセキュリティドメインを保存するのに利用してもよい、
請求項3に記載の方法。
【請求項5】
前記却下する工程は、一のページフォールトを起こすことを含み、
前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なっている場合、前記第一のメモリページの前記命令は前記第二のメモリページを参照あるいはアクセスすることを却下される、
請求項1に記載の方法。
【請求項6】
前記方法は、
前記第二のメモリページが一の隠しメモリページであるかを判断する工程をさらに含み、
前記第二のメモリページが一の隠しメモリページであった場合、前記第一のメモリページの前記命令も前記第二のメモリページに参照あるいはアクセスすることを却下される、
請求項1に記載の方法。
【請求項7】
前記方法は、
前記参照あるいはアクセスが読み取りあるいは書き込みの参照あるいはアクセスか否か判断する工程と、
前記第二のメモリページが一の隠しメモリページでない場合、
前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なり、前記参照あるいはアクセスが読み取りの参照あるいはアクセスである場合に、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下せず、
前記第一のセキュリティドメインが前記第二のセキュリティドメインより低く、前記参照あるいはアクセスが書き込みの参照あるいはアクセスである場合に、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下する工程と、
をさらに含む、
請求項6に記載の方法。
【請求項8】
前記参照あるいはアクセスが、前記第二のメモリページの一の許可されたエントリポイントへのジャンプあるいは呼び出しのいずれかである場合、前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なるか否かに関わらず、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下しない工程をさらに含む、
請求項1に記載の方法。
【請求項9】
前記第二のセキュリティドメインが少なくとも一の所定のセキュリティドメインよりも優先度が高くない場合に、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下しない工程をさらに含む、
請求項1に記載の方法。
【請求項10】
前記第二のメモリページは、一のクリティカルなオペレーティングシステムコンポーネントを保存しており、前記第二のセキュリティドメインは一の監督セキュリティドメインである、
請求項1に記載の方法。
【請求項11】
前記物理デバイスの一の仮想マシンマネージャの一のセキュリティドメイン割り当てサービスにより、少なくとも前記第一および第二のセキュリティドメインを割り当てる工程をさらに含む、
請求項1に記載の方法。
【請求項12】
前記物理デバイスの一の仮想マシンマネージャの一のインテグリティ計測モジュールにより前記第一のメモリページを割り当てられた前記物理デバイスの一の仮想マシンの一のエージェントのインテグリティを検証する工程をさらに含む、
請求項1に記載の方法。
【請求項13】
プロセッサであって、
前記プロセッサを持つ一の物理デバイスの第一および第二のメモリページの第一および第二のセキュリティドメインを保存する第一および第二のレジスタを含む、一の変換索引バッファと、
比較ロジックと、を含み、
前記比較ロジックは前記変換索引バッファに連結され、
前記第一のメモリページの前記第一のセキュリティドメインを前記第二のメモリページの前記第二のセキュリティドメインに比較する工程と、
前記第一のセキュリティドメインが前記第二のセキュリティドメインよりも高いか同じ場合、前記第一のメモリページからの一の命令が前記第二のメモリページを参照あるいはアクセスすることを却下しない工程と、を含み、前記第一のセキュリティドメインおよび前記第二のセキュリティドメインは前記変換索引バッファからレトリーブされた、プロセッサ。
【請求項14】
前記変換索引バッファに保存されている前記セキュリティドメインは、前記物理デバイスの一の仮想マシンマネージャの複数のページテーブルからレトリーブされたものであり、前記仮想マシンマネージャの前記複数のページテーブルは複数の拡張ページテーブルであり、前記複数の拡張ページテーブルは、
各拡張ページテーブルポインタ構造が、一のセキュリティドメインが一の関連するメモリページおよび前記セキュリティドメインに関連付けられた複数の特徴に設定されているか否かを示すよう構成された、複数の拡張ページテーブルポインタ構造と、
複数の関連するメモリページに割り当てられた複数のセキュリティドメインを保存するよう構成された複数の拡張ページテーブルエントリ構造と、を含む、
請求項13に記載のプロセッサ。
【請求項15】
前記比較ロジックは、前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なっている場合、一のページフォールトを起こして、前記命令が前記第二のメモリページを参照あるいはアクセスすることを却下するようさらに適合されている、
請求項13に記載のプロセッサ。
【請求項16】
前記比較ロジックは、前記第二のメモリページが一の隠しメモリページであるかを判断するようさらに適合されており、前記第二のメモリページが一の隠しメモリページであった場合、前記第一のメモリページの前記命令も前記第二のメモリページに参照あるいはアクセスすることを却下される、
請求項13に記載のプロセッサ。
【請求項17】
前記比較ロジックは、前記参照あるいはアクセスが読み取りあるいは書き込みの参照あるいはアクセスか否か判断するようさらに適合されており、
前記第二のメモリページが一の隠しメモリページでない場合、
前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なり、前記参照あるいはアクセスが読み取りの参照あるいはアクセスである場合に、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下せず、
前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なり、前記参照あるいはアクセスが書き込みの参照あるいはアクセスである場合に、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下するようさらに適合されている、
請求項16に記載のプロセッサ。
【請求項18】
前記比較ロジックは、前記参照あるいはアクセスが、前記第二のメモリページの一の許可されたエントリポイントへのジャンプあるいは呼び出しのいずれかである場合、前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なるか否かに関わらず、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下しないようさらに適合された、
請求項13に記載のプロセッサ。
【請求項19】
前記第二のメモリページは、一のクリティカルなオペレーティングシステムコンポーネントを保存しており、前記第二のメモリページの前記第二のセキュリティドメインは一の監督セキュリティドメインである、
請求項13に記載のプロセッサ。
【請求項20】
前記プロセッサを持つ前記物理デバイスの一の仮想マシンマネージャは、前記プロセッサにより操作され、前記第一および第二のセキュリティドメインのうちの少なくとも一つを割り当てるよう適合された一のセキュリティドメイン割り当てサービスを含む、
請求項13に記載のプロセッサ。
【請求項21】
前記プロセッサを持つ前記物理デバイスの一の仮想マシンマネージャは、前記プロセッサにより操作され、前記第一のメモリページのインテグリティを検証するよう適合された一のインテグリティ管理モジュールを含む、
請求項13に記載のプロセッサ。
【請求項22】
製品であって、
一の記憶媒体と、
複数のプログラム命令とを含み、
前記複数のプログラム命令は、前記記憶媒体に記憶され、一の物理デバイスの一の仮想マシンマネージャの一のセキュリティドメイン割り当てサービスのインスタンスを作成することで、
少なくとも第一および第二のセキュリティドメインを前記物理デバイスの第一および第二のメモリページに割り当て、
前記割り当てられた少なくとも第一および第二のセキュリティドメインを前記仮想マシンマネージャの複数のページテーブルに保存して、前記物理デバイスの一のプロセッサの比較ロジックが、前記少なくとも第一および第二のセキュリティドメインをレトリーブする際に手助けをし、前記比較ロジックは前記第一のメモリページの前記第一のセキュリティドメインと前記第二のメモリページの前記第二のセキュリティドメインとを比較し、前記第一のメモリページの一の命令は前記第二のメモリページに対する参照あるいはアクセスを試みており、第一のセキュリティレベルが第二のセキュリティレベルと同じ場合、前記比較ロジックは前記第一のメモリページからの前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下しないよう適合された、製品。
【請求項23】
前記仮想マシンマネージャの前記複数のページテーブルは複数の拡張ページテーブルであって、前記複数の拡張ページテーブルは、
各拡張ページテーブルポインタ構造が、一のセキュリティドメインが一の関連するメモリページおよび前記セキュリティドメインに関連付けられた複数の特徴に設定されているか否かを示す、複数の拡張ページテーブルポインタ構造と、
複数の関連するメモリページに割り当てられた複数のセキュリティドメインを保存する複数の拡張ページテーブルエントリ構造と、を含む、
請求項22に記載の製品。
【請求項24】
前記複数の命令は、前記セキュリティドメイン割り当てサービスのインスタンスを作成することで、前記少なくとも第一および第二のメモリページのうちの少なくとも一つについて、前記判断されたセキュリティドメインに関連付けられた一以上の特徴を判断し、前記一以上の特徴を一の拡張ページテーブルポインタ構造に保存するようさらに適合された、
請求項23に記載の製品。
【請求項25】
システムであって、
一のクリティカルなオペレーティングシステムコンポーネントエージェントにインスタンスを作成可能な、少なくとも一つのクリティカルなオペレーティングシステムコンポーネントプログラムを自身に保存する大容量記憶装置と、
前記大容量記憶装置に連結された一のプロセッサとを含み、
前記プロセッサは、
前記システムの第一および第二のメモリページの第一および第二のセキュリティドメインを保存する第一および第二のレジスタを含む、一の変換索引バッファと、
前記変換索引バッファに連結された比較ロジックとを含み、
前記第二のメモリページは前記クリティカルなオペレーティングシステムコンポーネントエージェントを持ち、
前記比較ロジックは、
前記第一のメモリページの前記第一のセキュリティドメインを前記第二のメモリページの前記第二のセキュリティドメインと比較し、
前記第一のセキュリティドメインが前記第二のセキュリティドメインと同じ場合、前記第一のメモリページからの一の命令が前記第二のメモリページにアクセスするのを却下しないよう適合され、
前記第一のセキュリティドメインおよび前記第二のセキュリティドメインは前記変換索引バッファからレトリーブされた、システム。
【請求項26】
前記変換索引バッファに保存されている前記第一のセキュリティドメインおよび前記第二のセキュリティドメインは、前記システムの一の仮想マシンマネージャの複数のページテーブルからレトリーブしたものであり、前記仮想マシンマネージャの前記複数のページテーブルは複数の拡張ページテーブルであり、前記複数の拡張ページテーブルは、
各拡張ページテーブルポインタ構造が、一のセキュリティドメインが一の関連するメモリページおよび前記セキュリティドメインに関連付けられた複数の特徴に設定されているか否かを示すよう構成された、複数の拡張ページテーブルポインタ構造と、
複数の関連するメモリページに割り当てられた複数のセキュリティドメインを保存するよう構成された複数の拡張ページテーブルエントリ構造と、を含む、
請求項25に記載のシステム。
【請求項27】
前記比較ロジックは、前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なっている場合、一のページフォールトを起こして、前記命令が前記第二のメモリページを参照あるいはアクセスすることを却下するようさらに適合されている、
請求項25に記載のシステム。
【請求項28】
前記比較ロジックは、前記参照あるいはアクセスが、前記第二のメモリページの一の許可されたエントリポイントへのジャンプあるいは呼び出しのいずれかである場合、前記第一のセキュリティドメインが前記第二のセキュリティドメインと異なるか否かに関わらず、前記命令が前記第二のメモリページに参照あるいはアクセスするのを却下しないようさらに適合された、
請求項25に記載のシステム。
【請求項29】
前記クリティカルなオペレーティングシステムコンポーネントエージェントを持つ前記第二のメモリページの前記第二のセキュリティドメインは、一の監督セキュリティドメインである、
請求項25に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2009−104555(P2009−104555A)
【公開日】平成21年5月14日(2009.5.14)
【国際特許分類】
【外国語出願】
【出願番号】特願2007−278175(P2007−278175)
【出願日】平成19年10月25日(2007.10.25)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】