(57)【特許請求の範囲】
【請求項１】
少なくとも１つのメモリページを、プロセッサにおいて実行する第１仮想マシンから前記プロセッサにおいて実行する第１ハイパーバイザに遷移させることと、
前記プロセッサのセキュリティモジュールにおいて、前記少なくとも１つのメモリページを前記第１仮想マシンに戻すための要求を前記第１ハイパーバイザから受信することと、
前記プロセッサのセキュリティモジュールにおいて、前記少なくとも１つのメモリページを前記第１ハイパーバイザから前記第１仮想マシンに戻すための要求に応じて、前記少なくとも１つのメモリページの内容を選択的に検証することと、
前記第１仮想マシンによって書き込まれることが予想されないメモリページを保持するために、前記少なくとも１つのメモリページが、前記第１仮想マシンに関連するバルーンプールに割り当てられていることに応じて、前記第１ハイパーバイザが前記少なくとも１つのメモリページを戻すことを要求したことに応じて前記少なくとも１つのメモリページの内容を検証することをバイパスすることと、
前記少なくとも１つのメモリページの内容を検証したことに応じて、又は、前記少なくとも１つのメモリページが、前記第１仮想マシンに関連する前記バルーンプールに割り当てられていることに応じて、前記少なくとも１つのメモリページを前記第１仮想マシンに提供することと、を含む、
方法。
【請求項２】
前記少なくとも１つのメモリページの内容を選択的に検証することは、
前記少なくとも１つのメモリページが前記第１仮想マシンから前記第１ハイパーバイザに遷移したことに応じて、前記少なくとも１つのメモリページの少なくとも１つの特性を測定して、少なくとも１つの特性測定値を生成することと、
前記少なくとも１つの特性測定値を前記セキュリティモジュールに記憶することと、
前記第１ハイパーバイザが前記少なくとも１つのメモリページを戻したことに応じて、前記少なくとも１つの特性測定値を前記少なくとも１つのメモリページと比較することと、を含む、
請求項１の方法。
【請求項３】
前記少なくとも１つの特性測定値が前記少なくとも１つのメモリページと一致しないことに応じて、前記第１ハイパーバイザが前記少なくとも１つのメモリページを前記第１仮想マシンに提供するのを抑制することをさらに含む、
請求項２の方法。
【請求項４】
複数のメモリページを前記第１仮想マシンに割り当てることと、
前記複数のメモリページの第１サブセットを、前記第１仮想マシンに関連する前記バルーンプールに記憶することであって、前記第１サブセットは、第１期間において前記第１仮想マシンによって書き込まれることが予想されないメモリページを含む、ことと、
前記第１ハイパーバイザが少なくとも１つのメモリページを要求したことに応じて、前記複数のメモリページの前記第１サブセットの少なくとも１つのページを前記第１ハイパーバイザに提供することと、をさらに含む、
請求項１の方法。
【請求項５】
前記第１ハイパーバイザが、メモリページの第１サブセットの少なくとも１つのページを前記第１仮想マシンに関連する前記バルーンプールに戻すことを要求したことに応じて、メモリページの第１サブセットの少なくとも１つのページの内容を検証するのをバイパスすることをさらに含む、
請求項４の方法。
【請求項６】
複数のメモリページを前記第１仮想マシンに割り当てることと、
少なくとも１つのメモリページに対する前記第１ハイパーバイザによる要求に応じて、前記複数のメモリページのサブセットを無効として指定することと、
前記複数のメモリページのサブセットを前記第１ハイパーバイザに提供することと、をさらに含む、
請求項１の方法。
【請求項７】
前記複数のメモリページのサブセットの少なくとも１つの特性を測定して、少なくとも１つの特性測定値を生成することと、
前記少なくとも１つの特性測定値を前記セキュリティモジュールに記憶することと、
前記第１ハイパーバイザが前記複数のメモリページのサブセットを戻したことに応じて、前記少なくとも１つの特性測定値を前記複数のメモリページのサブセットと比較することと、
前記少なくとも１つの特性測定値が前記複数のメモリページのサブセットと一致したことに応じて、前記複数のメモリページのサブセットを前記第１仮想マシンに提供することと、をさらに含む、
請求項６の方法。
【請求項８】
前記複数のメモリページを第１キーで暗号化することと、
前記複数のメモリページのサブセットを第２キーで暗号化することと、をさらに含む、
請求項６の方法。
【請求項９】
前記第２キーは、前記複数のメモリページが前記第１仮想マシンに割り当てられたことに応じて生成される、
請求項８の方法。
【請求項１０】
第１メモリページを、プロセッサにおいて実行する第１仮想マシンから前記プロセッサにおいて実行する第１ハイパーバイザに遷移させることと、
前記プロセッサのセキュリティモジュールにおいて、前記第１ハイパーバイザが前記第１メモリページを前記第１仮想マシンに戻すことを要求したことに応じて、前記第１ハイパーバイザが戻すことを要求している前記第１メモリページの内容が、前記第１仮想マシンから前記第１ハイパーバイザに遷移した前記第１メモリページの内容と一致することを選択的に検証することと、
前記第１仮想マシンによって書き込まれることが予想されないメモリページを保持するために、前記少なくとも１つのメモリページが、前記第１仮想マシンに関連するバルーンプールに割り当てられていることに応じて、前記第１ハイパーバイザが戻すことを要求している前記第１メモリページの内容が、前記第１仮想マシンから前記第１ハイパーバイザに遷移した前記第１メモリページの内容と一致するのを検証することをバイパスすることと、
前記第１ハイパーバイザが戻すことを要求している前記第１メモリページの内容が、前記第１仮想マシンから前記第１ハイパーバイザに遷移した前記第１メモリページの内容と一致することを検証したことに応じて、又は、前記第１メモリページが、前記第１仮想マシンに関連する前記バルーンプールに割り当てられていることに応じて、前記第１メモリページを前記第１仮想マシンに提供することと、を含む、
方法。
【請求項１１】
前記第１メモリページの内容を選択的に検証することは、
前記第１メモリページが前記第１仮想マシンから前記第１ハイパーバイザに遷移したことに応じて、前記第１メモリページの少なくとも１つの特性を測定して、少なくとも１つの特性測定値を生成することと、
前記少なくとも１つの特性測定値を前記セキュリティモジュールに記憶することと、
前記第１ハイパーバイザが前記第１メモリページを戻したことに応じて、前記少なくとも１つの特性測定値を前記第１メモリページと比較することと、を含む、
請求項１０の方法。
【請求項１２】
前記少なくとも１つの特性測定値が前記第１メモリページと一致しないことに応じて、前記第１メモリページを前記第１仮想マシンに戻すための前記第１ハイパーバイザからの要求を拒否することをさらに含む、
請求項１１の方法。
【請求項１３】
複数のメモリページを前記第１仮想マシンに割り当てることと、
前記複数のメモリページの第１サブセットを、前記第１仮想マシンに関連する前記バルーンプールに記憶することであって、前記第１サブセットは、前記第１仮想マシンによって書き込まれていないメモリページを含む、ことと、
前記第１ハイパーバイザが少なくとも１つのメモリページを要求したことに応じて、前記複数のメモリページの前記第１サブセットの少なくとも１つのページを前記第１ハイパーバイザに提供することと、をさらに含む、
請求項１０の方法。
【請求項１４】
メモリページの第１サブセットの少なくとも１つのページが前記第１ハイパーバイザから前記第１仮想マシンに遷移したことに応じて、さらに、前記第１ハイパーバイザが、メモリページの第１サブセットの少なくとも１つのページを、前記第１仮想マシンに関連するバルーンプールに提供したことに応じて、メモリページの第１サブセットの少なくとも１つのページの内容を検証するのをバイパスすることをさらに含む、
請求項１３の方法。
【請求項１５】
複数のメモリページを前記第１仮想マシンに割り当てることと、
少なくとも１つのメモリページに対する前記第１ハイパーバイザによる要求に応じて、前記複数のメモリページのサブセットを無効として指定することと、
前記複数のメモリページのサブセットを前記第１ハイパーバイザに提供することと、をさらに含む、
請求項１０の方法。
【請求項１６】
前記複数のメモリページのサブセットの少なくとも１つの特性を測定して、少なくとも１つの特性測定値を生成することと、
前記少なくとも１つの特性測定値を前記セキュリティモジュールに記憶することと、
前記第１ハイパーバイザが前記複数のメモリページのサブセットを戻したことに応じて、前記少なくとも１つの特性測定値を前記複数のメモリページのサブセットと比較することと、
前記少なくとも１つの特性測定値が前記複数のメモリページのサブセットと一致したことに応じて、前記複数のメモリページのサブセットを前記第１仮想マシンに提供することと、をさらに含む、
請求項１５の方法。
【請求項１７】
前記複数のメモリページを第１キーで暗号化することと、
前記複数のメモリページのサブセットを第２キーで暗号化することと、をさらに含む、
請求項１５の方法。
【請求項１８】
第１仮想マシンと、
第１ハイパーバイザと、
セキュリティモジュールと、を備え、
前記セキュリティモジュールは、
第１メモリページを前記第１仮想マシンに戻すための要求を前記第１ハイパーバイザから受信したことに応じて、前記第１ハイパーバイザが前記第１仮想マシンに戻すことを要求している前記第１メモリページの内容が、前記第１仮想マシンから前記第１ハイパーバイザに遷移した前記第１メモリページの内容と一致することを選択的に検証し、
前記第１仮想マシンによって書き込まれることが予想されないメモリページを保持するために、前記少なくとも１つのメモリページが、前記第１仮想マシンに関連するバルーンプールに割り当てられていることに応じて、前記第１ハイパーバイザが戻すことを要求している前記第１メモリページの内容が、前記第１仮想マシンから前記第１ハイパーバイザに遷移した前記第１メモリページの内容と一致するのを検証することをバイパスすることと、
前記第１ハイパーバイザが戻すことを要求している前記第１メモリページの内容が、前記第１仮想マシンから前記第１ハイパーバイザに遷移した前記第１メモリページの内容と一致することを検証したことに応じて、又は、前記第１メモリページが、前記第１仮想マシンに関連する前記バルーンプールに割り当てられていることに応じて、前記第１メモリページを前記第１仮想マシンに提供する、
プロセッサ。
【請求項１９】
前記セキュリティモジュールは、
前記第１メモリページが前記第１仮想マシンから前記第１ハイパーバイザに遷移したことに応じて、前記第１メモリページの少なくとも１つの特性を測定して、少なくとも１つの特性測定値を生成することと、
前記少なくとも１つの特性測定値を前記セキュリティモジュールに記憶することと、
前記第１ハイパーバイザが前記第１メモリページを戻すように要求したことに応じて、前記少なくとも１つの特性測定値を前記第１メモリページと比較することと、
によって、前記第１メモリページの内容を選択的に検証する、
請求項１８のプロセッサ。
【請求項２０】
前記セキュリティモジュールは、
前記少なくとも１つの特性測定値が前記第１メモリページと一致しないことに応じて、前記第１メモリページを前記第１仮想マシンに戻すための前記第１ハイパーバイザからの要求を拒否する、
請求項１９のプロセッサ。
【請求項２１】
前記セキュリティモジュールは、
複数のメモリページを前記第１仮想マシンに割り当てることと、
前記複数のメモリページの第１サブセットを、前記第１仮想マシンに関連する前記バルーンプールに記憶することであって、前記第１サブセットは、前記第１仮想マシンによって書き込まれていないメモリページを含む、ことと、
前記第１ハイパーバイザが少なくとも１つのメモリページを要求したことに応じて、前記複数のメモリページの前記第１サブセットの少なくとも１つのページを前記第１ハイパーバイザに提供することと、を行う、
請求項１８のプロセッサ。
【請求項２２】
前記セキュリティモジュールは、
前記第１ハイパーバイザが、メモリページの第１サブセットの少なくとも１つのページを前記第１仮想マシンに関連する前記バルーンプールに提供したことに応じて、メモリページの第１サブセットの少なくとも１つのページの内容を検証するのをバイパスする、
請求項２１のプロセッサ。
【請求項２３】
前記セキュリティモジュールは、
複数のメモリページを前記第１仮想マシンに割り当てることと、
少なくとも１つのメモリページに対する第１ハイパーバイザによる要求に応じて、前記複数のメモリページのサブセットを無効として指定することと、
前記複数のメモリページのサブセットを前記第１ハイパーバイザに提供することと、を行う、
請求項１８のプロセッサ。
【請求項２４】
前記セキュリティモジュールは、
前記第１メモリページの少なくとも１つの特性を測定して、少なくとも１つの特性測定値を生成することと、
前記少なくとも１つの特性測定値を前記セキュリティモジュールに記憶することと、
前記第１ハイパーバイザが前記第１メモリページを戻すことを要求したことに応じて、前記少なくとも１つの特性測定値を前記第１メモリページと比較することと、
前記少なくとも１つの特性測定値が前記第１メモリページと一致したことに応じて、前記第１メモリページを前記第１仮想マシンに提供することと、を行う、
請求項２３のプロセッサ。
【請求項２５】
前記セキュリティモジュールは、
前記複数のメモリページを第１キーで暗号化することと、
前記複数のメモリページのサブセットを第２キーで暗号化することと、を行う、
請求項２３のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１７年３月２９日に出願された「ＰＳＰ／ＨＶ  Ｆｌｏｗｓ  ｗｉｔｈ  ＳＮＰ」という名称の米国仮特許出願第６２／４７８，１４８号（代理人整理番号１４５８−１７ＴＥＭＰ０１−ＰＲ）に関連し、この優先権を主張するものであり、この内容が、引用することによって本明細書に援用される。
【背景技術】
【０００２】
多くのプロセッサアプリケーションにおいて、情報のセキュリティは重要な機能である。例えば、プロセッサは、ＩＡＡＳ（Infrastructure As A Service）環境のサーバで使用され、このプロセッサは、１つ以上の仮想マシン（ＶＭ）を実行し、ハイパーバイザを実行して、サーバハードウェアをＶＭ間で分割し、ＶＭを互いに隔離する。異なるＶＭが異なる顧客のために実行される可能性があるので、各ＶＭによって用いられる情報（命令及びデータ）が、他のＶＭ及びハイパーバイザによるアクセスから保護されることが望ましい。しかしながら、ハイパーバイザに不具合（例えば、バグ）があると、ハイパーバイザ自体が不正利用され易くなり、ハイパーバイザ又はＶＭが別のＶＭの情報にアクセスできるようになる。
【０００３】
添付の図面を参照することによって、本発明をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面で同じ符号を使用している場合、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、ＶＭとハイパーバイザとの間で遷移するメモリページの内容を検証するために、ハイパーバイザと共にセキュリティモジュールを使用する処理システムのブロック図である。
【図２】いくつかの実施形態による、ＶＭとハイパーバイザとの間で遷移するメモリページのハッシュを生成して記憶する、図１の処理システムのセキュリティモジュールの一例を示すブロック図である。
【図３】いくつかの実施形態による、ＶＭに割り当てられたメモリページのサブセットをハイパーバイザに割り当てる、図１の処理システムのセキュリティモジュールの一例を示すブロック図である。
【図４】いくつかの実施形態による、ＶＭのバルーンプールに割り当てられたメモリページのサブセットをハイパーバイザに割り当てる、図１の処理システムのセキュリティモジュールの一例を示すブロック図である。
【図５】いくつかの実施形態による、ＶＭに割り当てられたメモリページのサブセットの内容がＶＭとハイパーバイザとの間で遷移する場合に、当該内容を図１の処理システムのセキュリティモジュールで検証する方法を示すフロー図である。
【図６】いくつかの実施形態による、ＶＭのバルーンプールに割り当てられたメモリページのサブセットをハイパーバイザに割り当てる方法を示すフロー図である。
【発明を実施するための形態】
【０００５】
図１〜図６は、メモリページの内容が、処理システムのプロセッサで実行する１つ以上の仮想マシン（ＶＭ）と、ＶＭと処理システムのハードウェアとの間のインタフェースを提供するハイパーバイザと、の間で遷移する場合に、プロセッサのメモリアクセスパス内のセキュリティモジュールを用いてメモリページの内容を検証することによって、セキュア情報を処理システムのプロセッサで保護する技術を示している。ハイパーバイザを使用して、メモリページと呼ばれる連続するブロックに分割されたメモリの専用部分と、そのプライベート用途のための処理システムの他のリソースと、を各ＶＭに割り当てることよって、ＶＭを隔離する。いくつかの実施形態では、ハイパーバイザは、例えば、ハイパーバイザがメモリ不足である場合に、ＶＭがメモリの専用部分のサブセットをハイパーバイザに戻すように要求してもよい。ハイパーバイザは、例えば、メモリのサブセットに対するＶＭによる要求に応じて、後に、メモリのサブセットをＶＭに戻すことができる。しかしながら、ハイパーバイザ内のバグ、又は、悪用の手段として悪意を持って変更されたハイパーバイザによって、ハイパーバイザ又は別のＶＭが、メモリのサブセット内の情報を調べたり、変更したりすることができる。本明細書に記載された技術を使用して、１つ以上のＶＭとハイパーバイザとの間でメモリページが遷移する場合に、プロセッサのセキュリティモジュールを用いて、ハイパーバイザ又は他のＶＭによって変更されたメモリページを遷移元のＶＭに戻すことができないようにメモリページを監視する。
【０００６】
いくつかの実施形態では、ハイパーバイザがメモリの一部をＶＭに割り当てる場合に、メモリの割り当てられた部分のサブセットを例えば暗号化してセキュアにし、メモリの割り当てられた部分の残り（例えば、「余分なメモリ（excess memory）」と呼ばれる、或る期間中にＶＭによって使用されることが予想されないメモリ）を、暗号化されていない形式（例えば、バルーンプール）で残す。余分なメモリページがＶＭによって書き込まれていないので、ＶＭによって余分なメモリページに記憶される情報がハイパーバイザによって侵害される可能性があるというセキュリティ上のリスクがない。したがって、余分なメモリページが利用可能な場合、ハイパーバイザは、セキュリティモジュールが余分なメモリページを監視することなく、余分なメモリページを使用して戻すことが可能である。ハイパーバイザは、セキュリティモジュールによる監視をバイパスすることによって、ＶＭに割り当てられたセキュアなメモリページを使用するよりも効率的に余分なメモリページを使用することができる。
【０００７】
図１は、いくつかの実施形態による、ＶＭとハイパーバイザとの間で遷移するメモリページの監視をサポートする処理システム１００を示す図である。処理システム１００は、プロセッサ１０２と、メモリ１２０と、を含む。処理システム１００は、例えば、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲームシステム等の様々な電子デバイスの何れかに組み込まれてもよい。プロセッサ１０２は、概して、所定のタスクを実行するためにプロセッサ１０２の回路を操作する命令セット（例えば、コンピュータプログラム）を実行するように構成されている。メモリ１２０は、プロセッサ１０２によって使用されるデータを記憶することによって、これらのタスクの実行を容易にする。メモリ１２０は、ランダムアクセスメモリ（ＲＡＭ）や、例えばフラッシュメモリ若しくはハードディスクドライブ（ＨＤＤ）等の不揮発性メモリ等であってもよいし、これらの組み合わせであってもよい。
【０００８】
プロセッサ１０２は、命令セットを実行する過程において、データをメモリ１２０に記憶するための書き込み要求と、データをメモリ１２０から取得するための読み出し要求と、を含むメモリアクセス要求を生成する。各メモリアクセス要求は、メモリアクセス要求の対象となるメモリ１２０の位置を示すメモリアドレス（例えば、システムの物理アドレス）を含む。メモリ１２０は、読み出し要求に応じて、読み出し要求のメモリアドレスに対応する位置に記憶された情報（データ又は命令）を取得し、この情報をプロセッサ１０２に提供する。メモリ１２０は、書き込み要求に応じて、当該要求の書き込み情報を、当該要求のメモリアドレスに対応する位置に記憶する。
【０００９】
プロセッサ１０２は、暗号化モジュール１１５を含む。暗号化モジュール１１５は、汎用プロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、プロセッサコアの動作モード、又は、処理システム１００のセキュリティ動作（プロセッサ１０２で実行されるエンティティ（例えば、仮想マシン、コンピュータプログラム等）の登録、実行されるエンティティのセキュリティキーの生成及び識別、セキュリティ動作に関する処理システム１００の認証等を含む）を実行するように設計され構成された他のモジュールである。本明細書でさらに説明するように、暗号化モジュール１１５は、セキュリティキーを生成すること、処理システム１００で実行するように登録されたエンティティを識別すること、及び、暗号隔離を有効にする他の動作によって、処理システム１００での情報の暗号隔離をサポートする。
【００１０】
プロセッサ１０２は、命令の実行を容易にするために、１つ以上のプロセッサコア１０６と、キャッシュ１０８と、ノースブリッジ１１０と、セキュリティモジュール１３０と、を含む。図１には単一のプロセッサコア１０６のみが示されているが、処理システム１００は、複数のプロセッサコアを含むことができる。プロセッサコア１０６は、命令を個別且つ同時に実行する処理ユニットである。いくつかの実施形態では、各プロセッサコア１０６は、命令をフェッチし、フェッチされた命令を対応する動作にデコードし、処理システム１００のリソースを使用して、メモリアクセス要求を含む動作を実行する個別の命令パイプラインを含む。各プロセッサコア１０６は、各メモリアクセス要求を、メモリアクセス要求に対応する情報が暗号保護のために指定されていることを示すセキュアメモリアクセス要求、又は、メモリアクセス要求に対応する情報が暗号保護のために指定されていないことを示す非セキュアメモリアクセス要求の２つのタイプの何れかとして識別するように構成されている。
【００１１】
いくつかの実施形態では、処理システム１００は、セキュリティスキームを実装することによって、情報のセキュリティ指定（情報を暗号で保護するかどうか）を、情報がメモリ１２０に記憶される場所に対応するか、情報のタイプ（例えば、命令やデータ）に対応するメモリアドレスに含まれる制御ビットに基づいて割り当てる。これにより、大量のデータをセキュアな情報として容易に分類することができるので、効率的な情報保護が可能になる。例えば、いくつかの実施形態では、命令情報、又は、メモリ１２０の物理アドレスへの仮想アドレスのマッピングを提供するページテーブル情報等の特定のタイプの情報がセキュアな情報として指定されるように、制御ビットが処理システム１００によって設定され、これにより、後述するように、この情報を暗号によって保護する。例えば、データに割り当てられるアドレスの制御ビットを、プロセッサ１０２で実行するプログラムによって要求される指定に基づいて、きめのより細かい（more fine-grained）方法で指定することができる。このセキュリティスキームは、より一般的なデータについての柔軟性を依然として提供しながら、重要なデータの保護（例えば、仮想マシン又はそのプログラムの不正な実行等の防止）のために提供される。
【００１２】
いくつかの実施形態では、情報に割り当てられるセキュリティタイプは、当該情報の対応するメモリアドレスに基づいて指定されるので、処理システム１００は、ページテーブル自体を使用して、各メモリアドレスのセキュリティタイプを示す。したがって、プロセッサコア１０６は、メモリアクセス要求に対応するメモリアドレスを識別する過程において、メモリアクセス要求のタイプを識別する。特に、メモリアドレスがセキュアな情報を記憶するものとして示される場合、対応するメモリアクセスは、セキュアなメモリアクセスとして識別される。同様に、メモリアドレスが非セキュアな情報を記憶するものとして示される場合、対応するメモリアクセスは、非セキュアなメモリアクセスとして識別される。
【００１３】
キャッシュ１０８は、メモリ１２０に記憶された情報のサブセットを記憶するメモリデバイスであり、これにより、プロセッサコア１０６は、各々の情報のサブセットに迅速にアクセスすることができる。図１には単一のキャッシュ１０８のみが示されているが、処理システム１００は、プロセッサ１０２の異なるレベルのメモリ階層に存在する異なるキャッシュを含む、複数のキャッシュを含んでもよいことが理解されるであろう。キャッシュ１０８は、メモリアクセス要求を受信し、そのストレージアレイ（図１には示されていない）が、メモリアクセス要求の対象となる情報を記憶しているかどうかを識別する。記憶している場合、キャッシュ１０８は、キャッシュヒットを示し、ストレージアレイにおいてメモリアクセス要求を満たす。キャッシュ１０８は、対象となる情報を記憶していない場合に、キャッシュミスを示し、メモリアクセス要求をノースブリッジ１１０に提供する。
【００１４】
図１に示す例では、処理システム１００のメモリアクセスパスは、キャッシュ１０８が、セキュアな情報を含む情報を非暗号化形式で記憶するようになっている。したがって、いくつかの実施形態では、キャッシュ１０８は、所定のサイズ（例えば、キャッシュライン）のストレージ位置毎に、ストレージ位置での情報へのアクセスが認可される特定のプログラム又は他のエンティティ（例えば、ＶＭ）を識別するエンティティタグ情報を記憶する。キャッシュ１０８は、ストレージアレイの位置に対するメモリアクセスに応じて、メモリアクセス要求を生成したエンティティの識別情報（identity）をエンティティタグ情報と比較し、ミスマッチに応じてキャッシュミスを示し、これにより、情報への不正なアクセスを防止する。
【００１５】
ノースブリッジ１１０は、メモリ１２０と通信するためのインタフェースをプロセッサ１０２に提供するメモリコントローラである。いくつかの実施形態では、ノースブリッジ１１０は、入出力コントローラ（例えば、サウスブリッジ、図示省略）とインタフェースし、異なるプロセッサコア１０６間のインタフェースを提供する等の他の機能を実行することができる。ノースブリッジ１１０は、メモリコントローラとしての能力において、キャッシュ１０８からメモリアクセス要求を受信し、これらの要求のメモリ１２０への供給を制御する。また、ノースブリッジ１１０は、メモリアクセス要求への応答をメモリ１２０から受信し、キャッシュ１０８への応答の供給を制御する。いくつかの実施形態では、ノースブリッジ１１０は、メモリアクセス要求（例えば、ダイレクトメモリアクセス要求）を処理システム１００の入出力デバイス（図示省略）から受信し、これらのメモリ１２０への供給を制御することができる。
【００１６】
ノースブリッジ１１０は、情報の暗号隔離を提供するために、特定の暗号規格に従って、キー１１６，１１８に基づいて情報を暗号化及び復号化するように構成された暗号化モジュール１１５を含む。いくつかの実施形態では、暗号化モジュール１１５は、高度暗号化標準（ＡＥＳ）の暗号化及び復号化を用いるように構成されているが、他の実施形態では、暗号化モジュール１１５は、他の暗号化／復号化技術を用いることができる。ノースブリッジ１１０は、書き込み要求を受信したことに応じて、この要求がセキュアメモリアクセス要求であるか、非セキュアメモリアクセス要求であるかを識別する。書き込み要求が非セキュアメモリアクセス要求である場合、ノースブリッジ１１０は、暗号化モジュール１１５をバイパスし、書き込まれる情報を暗号化せずに、書き込み要求をメモリ１２０に提供する。書き込み要求がセキュアメモリアクセス要求である場合、ノースブリッジ１１０は、メモリアクセス要求を生成したエンティティ（例えば、プログラム、ＶＭ、ソフトウェアサービス等）に割り当てられたキー１１６，１１８のうち１つのキーを識別する。いくつかの実施形態では、セキュリティモジュール１３０は、プロセッサ１０２で現在実行されているエンティティに基づいて選択されるキーを識別する。暗号化モジュール１１５は、選択されたキーを用いて、書き込まれる情報を暗号化し、暗号化された情報を含む書き込み要求をストレージ用のメモリ１２０に提供する。いくつかの実施形態では、暗号化モジュール１１５は、選択されたキーと、対応する情報の暗号化及び復号化のためのメモリアクセス要求の物理アドレスと、の両方を使用し、これにより、ブロック移動攻撃（block move attacks）を防止する。いくつかの実施形態では、暗号化モジュール１１５は、プロセッサ１０２における制御ビット（図示省略）の状態に基づいて、暗号化及び復号化に物理アドレスを使用するかどうかを識別する。制御ビット状態は、セキュリティモジュール１３０によって設定可能である。
【００１７】
ノースブリッジ１１０は、読み出し要求を受信したことに応じて、当該要求をメモリ１２０に提供した後に、当該要求に応じた情報を受信する。ノースブリッジ１１０は、読み出し要求を非セキュアメモリアクセス要求として識別した場合に、暗号化モジュール１１５をバイパスし、読み出し情報を暗号化せずにキャッシュ１０８に提供する。ノースブリッジ１１０は、読み出し要求をセキュアメモリアクセス要求として識別した場合に、読み出しアクセス要求を生成したエンティティに割り当てられたキー１１６，１１８のうち１つのキーを識別し、暗号化モジュール１１５は、読み出し情報を復号化する。ノースブリッジ１１０は、復号化された読み出し情報を、ストレージ用のキャッシュ１０８に提供する。場合によっては、ノースブリッジ１１０は、キャッシュ１０８への情報の供給をバイパスし、復号化された読み出し情報を、対応する読み出しアクセス要求を生成したプロセッサコアに直接提供することができる。
【００１８】
ハイパーバイザ１５２は、メモリの専用部分と、そのプライベート用途のための処理システムの他のリソースと、を各ＶＭに割り当てることによって、ＶＭ（ＶＭ−Ａ１５０，ＶＭ−Ｂ１５１）を隔離するように構成されている。各ＶＭ１５０，１５１は、セキュアで隔離されたハードウェアエミュレーション環境を１つ以上の仮想プロセッサに提供し、これにより、各仮想プロセッサは、対応するゲストオペレーティングシステム（ＯＳ）（図示省略）を実行する。各ゲストＯＳ／仮想プロセッサ及びハイパーバイザ１５２は、関連するアドレス空間を有する。各ゲストＯＳは、典型的に、本明細書では「ワールドＩＤ」と呼ばれる特定の識別子を使用して識別され、本明細書では「アドレス空間識別子」又は「ＡＳＩＤ」と呼ばれる特定の識別子を使用して、ゲストＯＳによって管理される下位レベルのアドレス空間が識別される。
【００１９】
各ＶＭに割り当てられたアドレス空間は、セキュアな情報（例えば、セキュアアドレス空間ＶＭ−Ａ１２２、セキュアアドレス空間ＶＭ−Ｂ１２６）を記憶するように指定されてもよい。いくつかの実施形態では、各ＶＭに割り当てられたアドレス空間は、セキュアな情報のために指定されておらず、バルーンプール（例えば、ＶＭ−Ａバルーンプール１２４、ＶＭ−Ｂバルーンプール１２８）に保持された余分なメモリを含んでもよい。バルーンプール１２４，１２８は、所定の期間内に対応するＶＭによって書き込まれることが予想されないか、対応するＶＭによって価値が低いとみなされたＶＭに割り当てられた余分なメモリを保持する物理又は仮想メモリアドレス空間である。いくつかの実施形態では、ハイパーバイザ１５２は、例えば、ハイパーバイザ１５２自体又は別のＶＭが追加のメモリを必要とする場合に、ＶＭがメモリの専用部分のサブセットをハイパーバイザ１５２に戻すように遷移することを要求することができる。ハイパーバイザ１５２は、例えば、メモリのサブセットに対するＶＭによる要求に応じて、後に、メモリのサブセットをＶＭに戻すことができる。
【００２０】
ハイパーバイザ１５２とＶＭ１５０，１５１との間のメモリのセキュアな遷移を促進するために、セキュリティモジュール１３０は、メモリページがハイパーバイザ１５２とＶＭ１５０，１５１との間で遷移する場合に、メモリページを選択的に監視するように構成されている。ハイパーバイザ１５２は、ＶＭの起動時に、メモリをＶＭ１５０，１５１に割り当て、各ＶＭの割り当てられたメモリの物理アドレス及びＡＳＩＤを指定する。いくつかの実施形態では、ハイパーバイザ１５２は、各ＶＭの割り当てられたメモリの物理アドレス及びＡＳＩＤを示すログ（図示省略）を維持する。また、ハイパーバイザ１５２は、割り当てられたメモリを不変メモリとして指定する。いくつかの実施形態では、ハイパーバイザ１５２は、ログに記憶された割り当て済みメモリに関連する不変ビットを設定することによって、割り当て済みメモリを不変として指定する。ハイパーバイザ１５２は、メモリをＶＭ１５０，１５１に割り当てた後に、各ＶＭ１５０，１５１が各々の割り当てられたメモリ１２２，１２６に記憶するデータ及び命令を暗号化するように、暗号化モジュール１１５に信号を送る（また、当該データ及び命令を測定するように、セキュリティモジュール１３０に信号を送る）。いくつかの実施形態では、セキュリティモジュール１３０は、ＶＭが起動した場合に、各ＶＭに固有のランダムキーであるオフライン暗号化キーを生成して記憶する。いくつかの実施形態では、各ＶＭの割り当てられたメモリに記憶されているデータが暗号化モジュール１１５によって暗号化され、セキュリティモジュール１３０によって測定された後に、セキュリティモジュール１３０は、例えば、ハイパーバイザ１５２によって維持されたログにおいてメモリと関連する検証済みビットを設定することによって、暗号化され測定されたデータを記憶するメモリが検証されたことを示し、不変ビットをクリアする。検証指示は、暗号化され測定されたデータを記憶するメモリにＶＭが書き込むことができることを、ＶＭに知らせる。
【００２１】
ＶＭ１５０，１５１が１つ以上のメモリページをアドレス空間１２２，１２６のセキュアなページのＶＭのドメインからハイパーバイザ１５２に遷移（「スワップアウト」又はＤＲＡＭとディスク等の別の記憶媒体との間の移動）することをハイパーバイザ１５２が要求する場合、セキュリティモジュール１３０は、特性（スワップアウトされる１つ以上のメモリページ（例えば、メモリページの物理メモリアドレス範囲）のハッシュ、１つ以上のメモリページのプレーンテキスト、ノンス（nonce）、及び、１つ以上のメモリページに関連するメタデータを含む）を測定する。セキュリティモジュール１３０は、測定値を記憶し、要求された１つ以上のメモリページをハイパーバイザ１５２に提供する。いくつかの実施形態では、ハイパーバイザ１５２は、測定された特性（メモリページの物理メモリアドレス範囲、１つ以上のメモリページの暗号文、ノンス、及び、１つ以上のメモリページに関連するメタデータ等）も記憶する。
【００２２】
その後、ハイパーバイザ１５２は、メモリページを遷移したＶＭ１５０，１５１に１つ以上のメモリページを戻す（「スワップイン」又はページをＤＲＡＭに戻す）準備ができていることを信号で伝えると、記憶されている測定された特性をセキュリティモジュール１３０に供給する。セキュリティモジュール１３０は、１つ以上のメモリページの記憶されたハッシュを取得し、スワップアウトされたメモリページの測定された特性を、ハイパーバイザ１５２がスワップインしている１つ以上のメモリページの特性と比較する。スワップアウトされたメモリページの測定された特性が、スワップインされたメモリページの特性と一致する場合、セキュリティモジュール１３０は、ハイパーバイザ１５２がメモリページをＶＭ１５０，１５１に戻すことを可能にする。スワップアウトされたメモリページの測定された特性が、戻されたメモリページの特性と一致しない場合、セキュリティモジュール１３０は、ハイパーバイザ１５２がメモリページをＶＭ１５０，１５１に戻すのを抑制する。このようにして、セキュリティモジュール１３０は、ハイパーバイザ１５２が、変更されたメモリページをＶＭ１５０，１５１にスワップインするのを抑制する。
【００２３】
いくつかの実施形態では、ＶＭ１５０，１５１が１つ以上のメモリページをそのバルーンプール１２４，１２８からハイパーバイザ１５２にスワップアウトすることをハイパーバイザ１５２が要求する場合、セキュリティモジュール１３０は、メモリページの特性の測定をバイパスし、ハイパーバイザ１５２が、セキュリティの監視を行うことなく、メモリページをバルーンプール１２４，１２８からハイパーバイザ１５２に直接スワップアウトすることを可能にする。バルーンプール１２４，１２８に記憶されたメモリページは、使用されていない余分なメモリであるか価値の低いメモリであるため、このようなメモリページは、セキュリティモジュール１３０による内容の検証を必要としない。
【００２４】
図２は、いくつかの実施形態による、ＶＭ２５０とハイパーバイザ２５２との間を遷移するメモリページ２４０のハッシュ２４５を生成して記憶する、図１の処理システム１００のセキュリティモジュール２３０の一例を示す図である。図示した例において、ハイパーバイザ２５２は、ＶＭ−Ａ２５０に割り当てられたメモリの一部を要求する。セキュリティモジュール２３０は、メモリページがＶＭ−Ａ２５０とハイパーバイザ２５２との間を遷移する場合に、メモリページ２４０の内容を検証する。セキュリティモジュール２３０は、ハイパーバイザ２５２によってスワップイン及びスワップアウトされるメモリページの測定された特性を記憶するように構成されたセキュリティモジュールメモリ２３５を含む。
【００２５】
動作中、ハイパーバイザ２５２は、ＶＭ−Ａ２５０から追加のメモリ２４０を要求する。セキュリティモジュール２３０は、ハイパーバイザ２５２からの要求を受信すると、１つ以上の要求されたメモリページ２４０が検証され、ＶＭ−Ａ２５０に割り当てられたことを確認する。いくつかの実施形態では、セキュリティモジュール２３０は、メモリページ２４０に記憶されたページデータを読み出し、復号化し、ノンスを生成し、ＶＭが起動したときに生成されたオフライン暗号化キー（図示省略）を使用してページデータを再暗号化する。セキュリティモジュール２３０は、メモリページ２４０，２４５（メモリページハッシュと呼ばれる）の特性を測定し、メモリページハッシュ２４５をＶＭ−Ａ２５０のページスワップのリスト（図示省略）内のセキュリティモジュールメモリ２３５に記憶する。いくつかの実施形態では、メモリページハッシュ２４５は、ノンス、再暗号化されたデータ、及び、ページメタデータのハッシュである。いくつかの実施形態では、セキュリティモジュール２３０は、スワップアウトされたメモリページ２４０を、ＶＭへのメモリの割り当てを示すハイパーバイザ２５２によって維持されるログ（図示省略）において「有効でない」又は「無効である」としてマークする。スワップアウトされたメモリページ２４０を無効としてマークすることによって、セキュリティモジュール２３０は、スワップアウトされたメモリページがＶＭ−Ａ２５０の書き込みに利用できないことをＶＭ−Ａ２５０に示す。これにより、ハイパーバイザ２５２（又は、ハイパーバイザ２５２がスワップアウトされたメモリページを割り当てる別のＶＭ）とＶＭ−Ａ２５０とが、同じメモリページに同時に書き込むことを防止する。いくつかの実施形態では、セキュリティモジュール２３０は、再暗号化されたデータ、ノンス、ページメタデータ、及び、メモリページ２４０のハッシュをハイパーバイザ２５２に提供し、メモリページ２４０をハイパーバイザ２５２に提供する。
【００２６】
その後、ハイパーバイザ２５２は、メモリページ２４０をスワップインすることを要求すると、再暗号化されたデータ、ノンス、ページメタデータ、及び、メモリページ２４０のハッシュをセキュリティモジュール２３０に提供する。セキュリティモジュール２３０は、スワップインされたメモリページ２４０のハイパーバイザ２５２によって供給された、再暗号化されたデータ、ノンス、及び、ページメタデータのハッシュを計算し、計算されたハッシュを、記憶されたハッシュ２４５と比較する。計算されたハッシュと記憶されたハッシュ２４５とが一致しない場合、セキュリティモジュール２３０は、メモリページ２４０をスワップインする要求を拒否する。計算されたハッシュと記憶されたハッシュ２４５とが一致する場合、セキュリティモジュール２３０は、ハイパーバイザ２５２がメモリページ２４０をスワップインすることを許可し、メモリページ２４０をＶＭ−Ａ２５０に戻す。
【００２７】
図３は、いくつかの実施形態による、ＶＭ−Ａ３５０に割り当てられたメモリページ３４０のサブセット３４２をハイパーバイザ３５２に割り当てる、図１の処理システム１００のセキュリティモジュール３３０の一例を示すブロック図である。図示した例では、セキュリティモジュール３３０は、暗号化モジュール３１５を含む。いくつかの実施形態では、暗号化モジュール３１５は、セキュリティモジュール３３０から分離されてもよい。
【００２８】
ＶＭ−Ａ３５０の起動時に、ハイパーバイザ３５２は、メモリページ３４０をＶＭ−Ａ３５０に割り当てる。メモリページ３４０は、メモリ３２０の指定されたメモリセキュアアドレス空間ＶＭ−Ａ３２２に記憶される。ハイパーバイザ３５２は、セキュリティモジュール３３０を呼び出して、ＶＭ−Ａ３５０が暗号化キーＡ３１６を使用してメモリページ３４０に書き込むデータを暗号化し、ＶＭ−Ａ３５０に一意に関連するオフライン暗号化キーＢ３１９を生成する。ハイパーバイザ３５２がメモリページ３４０のサブセット３４２を要求すると、セキュリティモジュール３３０は、メモリページ３４２のサブセットに記憶されたページデータを読み出して復号化し、ノンスを生成し、ＶＭが起動したときに生成されたオフライン暗号化キーＢ３１９を使用してページデータを再暗号化する。セキュリティモジュール３３０は、ノンス、再暗号化されたデータ、及び、ページメタデータのハッシュを計算し、当該ハッシュを、ＶＭ−Ａ３５０によってスワップアウトされたページのスワップリスト（図示省略）と共に記憶する。
【００２９】
図４は、いくつかの実施形態による、ＶＭ−Ａ４５０のバルーンプール４２４に割り当てられたメモリページ４４２のサブセットをハイパーバイザ４５２に割り当てる、図１の処理システム１００のセキュリティモジュール４３０の一例を示すブロック図である。図示した例では、メモリ４２０は、ＶＭ−Ａ４５０のセキュアな情報を記憶するように設計された部分４２２と、或る期間に書き込まれることが予想されない又はＶＭ−Ａ４５０によって価値が低いとみなされた余分なメモリページを記憶するための、ＶＭ−Ａ４５０に割り当てられたバルーンプール４２４と、を含む。
【００３０】
ハイパーバイザ４５２が、ＶＭ−Ａバルーンプール４２４に記憶されたメモリページ４４２のサブセットを要求すると、セキュリティモジュール４３０は、メモリページ４４２のサブセットのハッシュを暗号化し、計算し、記憶することをバイパスする。メモリページ４４２のサブセットが使用されていないか、ＶＭ−Ａ４５０によって価値が低いとみなされているので、ハイパーバイザ４５２は、メモリページ４４２のサブセットの変更に対してセキュリティモジュール４３０の保護を呼び出すことなく、メモリページをＶＭ−Ａバルーンプール４２４にスワップインし、ＶＭ−Ａバルーンプール４２４からスワップアウトすることができる。
【００３１】
図５は、いくつかの実施形態による、メモリページのサブセットがＶＭ−Ａ１５０とハイパーバイザ１５２との間で遷移する場合に、ＶＭ−Ａ１５０に割り当てられた当該メモリページのサブセットを図１の処理システムのセキュリティモジュール１３０で監視する方法５００を示すフロー図である。ブロック５０２において、ハイパーバイザ１５２は、複数のメモリページを仮想マシン１５０に割り当てる。ブロック５０４において、暗号化モジュール１１５は、ＶＭ−Ａ１５０によって書き込まれた複数のメモリページを第１キー１１６で暗号化する。ブロック５０６において、セキュリティモジュール１３０は、ＶＭ−Ａ１５０に割り当てられたメモリページのサブセットに対するハイパーバイザ１５２からの要求を受信する。ブロック５０８において、セキュリティモジュールは、要求されたメモリページのサブセットを、ＶＭ−Ａ１５０において無効として指定する。ブロック５１０において、セキュリティモジュールは、要求されたメモリページのサブセットを第２キーで暗号化する。ブロック５１２において、セキュリティモジュール１３０は、要求されたメモリページのサブセットの特性を測定し、記憶する。ブロック５１４において、セキュリティモジュール１３０は、要求されたメモリページのサブセットをハイパーバイザ１５２に提供する。
【００３２】
ブロック５１６において、セキュリティモジュール１３０は、メモリページのサブセットをＶＭ−Ａ１５０に戻すことを要求するハイパーバイザ１５２からの信号を受信する。ブロック５１８において、セキュリティモジュール１３０は、記憶されている測定されたメモリページのサブセットの特性を、ハイパーバイザ１５２が戻したメモリページの特性と比較する。記憶されている測定されたメモリページのサブセットの特性が、ハイパーバイザ１５２が戻したメモリページの特性と一致する場合、ブロック５２０において、セキュリティモジュールは、メモリページのサブセットをＶＭ−Ａ１５０に提供する。記憶されている測定されたメモリページのサブセットの特性が、ハイパーバイザ１５２が戻したメモリページの特性と一致しない場合、ブロック５２２において、セキュリティモジュール１３０は、メモリページのサブセットをスワップインする要求を拒否することによって、ハイパーバイザ１５２がメモリページのサブセットをＶＭ−Ａ１５０に提供するのを抑制する。いくつかの実施形態では、セキュリティモジュール１３０は、記憶されている測定された特性が、ハイパーバイザ１５２が戻したメモリページの特性と一致しないことに応じて、メモリページのサブセットを、ＶＭ−Ａ１５０のキーを用いて復号化及び再暗号化する要求を拒否する。このようにして、セキュリティモジュール１３０は、ハイパーバイザ１５２がスワップインするためにＶＭ−Ａ１５０のキーを使用するのを制限することによって、ハイパーバイザ１５２がＶＭ−Ａ１５０のキーで暗号化されたデータをスワップインするのを抑制する。したがって、セキュリティモジュール１３０は、記憶されている測定された特性が、ハイパーバイザ１５２が戻そうとしているメモリページの特性と一致しない場合、メモリページのサブセットをセキュアページのＶＭ−Ａ１５０のドメインに戻すことを許可しない。
【００３３】
図６は、いくつかの実施形態による、ＶＭ−Ａ１５０のバルーンプール１２４に割り当てられたメモリページのサブセットを、図１の処理システム１００のハイパーバイザ１５２に割り当てる方法６００を示すフロー図である。ブロック６０２において、ハイパーバイザ１５２は、メモリページをＶＭ−Ａ１５０に割り当てる。ブロック６０４において、ハイパーバイザは、割り当てられたメモリページの第１サブセットを、ＶＭ−Ａ１５０に関連するセキュアアドレス空間１２２の第１メモリにおいて指定する。ブロック６０６において、ハイパーバイザは、割り当てられたメモリページの第２サブセットを、ＶＭ−Ａ１５０に関連するバルーンプール１２４において指定する。ブロック６０８において、セキュリティモジュール１３０は、バルーンプール１２４からのメモリページに関するハイパーバイザ１５２からの要求を受信する。ブロック６１０において、セキュリティモジュール１３０は、少なくとも１つのメモリページを、バルーンプール１２４からハイパーバイザ１５２に提供する。ブロック６１２において、セキュリティモジュール１３０は、少なくとも１つのメモリページをＶＭ−Ａ１５０に戻すための信号をハイパーバイザ１５２から受信する。ブロック６１４において、セキュリティモジュール１３０は、少なくとも１つのメモリページをＶＭバルーンプール１２４に戻す。
【００３４】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３５】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００３６】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３７】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
0006804665.tif 000002
【図２】
0006804665.tif 000003
【図３】
0006804665.tif 000004
【図４】
0006804665.tif 000005
【図５】
0006804665.tif 000006
【図６】
0006804665.tif 000007