(58)【調査した分野】(Int.Cl.,DB名)
所定のメモリ領域が、複数のプロセスの中から所有権テーブルにおいて指定された所定の所有プロセスを有し、前記所定の所有プロセスが、前記所定のメモリ領域へのアクセスを制御する排他的な権利を有する、物理メモリアドレス空間内のメモリ領域の所有権利を行使する所有権回路を備え、
前記所有権テーブルは、物理メモリアドレス空間の領域にそれぞれ対応し物理メモリアドレス空間のその領域に対する所定の所有プロセスを指定する複数のエントリを備え、
メモリアクセス要求に応答して、前記所有権回路は、メモリアクセス要求の対象物理アドレスに基づいて前記所有権テーブルを検索するように構成され、
前記所定の所有プロセスが、前記所定のメモリ領域を、
前記所定の所有プロセスに対してプライベートであること、及び
前記所定の所有プロセスと、メモリアクセス要求の少なくとも1つの更なるソースとの間で共有されること、
のうちの1つとして指定する、データを処理する装置。
前記所有権回路が、前記所定の所有プロセスよりも高い特権レベルを有するプロセスによる前記所定のメモリ領域へのアクセスを前記所定の所有プロセスが拒否することを許可する、請求項1又は2に記載の装置。
前記所定のメモリ領域を新たな所定の所有プロセスに割り当てることには、前記新たな所定の所有プロセスが前記排他的な権利を取得する前に、前記所定のメモリ領域内に格納されたデータを破壊的に上書きすることが含まれる、請求項1〜3のいずれか一項に記載の装置。
前記破壊的な上書きが前記新たな所定の所有プロセスによって行われ、前記新たな所定の所有プロセスが前記排他的な権利を取得する前に前記上書きが確実に完了するように、上書き追跡ハードウェアが前記上書きの完了を追跡する、請求項4に記載の装置。
所定のメモリ領域が、複数のプロセスの中から所有権テーブルにおいて指定された所定の所有プロセスを有し、前記所定の所有プロセスが、前記所定のメモリ領域へのアクセスを制御する排他的な権利を有する、物理メモリアドレス空間内のメモリ領域の所有権利を行使する所有権手段を備え、
前記所有権テーブルは、物理メモリアドレス空間の領域にそれぞれ対応し物理メモリアドレス空間のその領域に対する所定の所有プロセスを指定する複数のエントリを備え、
メモリアクセス要求に応答して、前記所有権手段は、メモリアクセス要求の対象物理アドレスに基づいて前記所有権テーブルを検索するように構成され、
前記所定の所有プロセスが、前記所定のメモリ領域を、
前記所定の所有プロセスに対してプライベートであること、及び
前記所定の所有プロセスと、メモリアクセス要求の少なくとも1つの更なるソースとの間で共有されること、
のうちの1つとして指定する、データを処理する装置。
所定のメモリ領域が、複数のプロセスの中から所有権テーブルにおいて指定された所定の所有プロセスを有し、前記所定の所有プロセスが、前記所定のメモリ領域へのアクセスを制御する排他的な権利を有する、物理メモリアドレス空間内のメモリ領域の所有権利を所有権回路によって行使することを含み、
前記所有権テーブルは、物理メモリアドレス空間の領域にそれぞれ対応し物理メモリアドレス空間のその領域に対する所定の所有プロセスを指定する複数のエントリを備え、
メモリアクセス要求に応答して、前記所有権回路は、メモリアクセス要求の対象物理アドレスに基づいて前記所有権テーブルを検索するように構成され、
前記所定の所有プロセスが、前記所定のメモリ領域を、
前記所定の所有プロセスに対してプライベートであること、及び
前記所定の所有プロセスと、メモリアクセス要求の少なくとも1つの更なるソースとの間で共有されること、
のうちの1つとして指定する、データを処理する方法。
【発明を実施するための形態】
【0008】
本技術の幾つかの具体例を以下に説明する。
【0009】
図1は、データ処理装置によって実行できるプロセスの例を概略的に示す。ハイパーバイザ2が幾つかの仮想マシン(ゲストオペレーティングシステム又はゲストOSとしても知られる、VM)4を管理できる。各VM4は1つ以上のアプリケーション6を管理できる。例えば、ハイパーバイザ2は、例えば各仮想マシン4間の時分割処理リソースへの割り込みをスケジュールする等、アドレス空間のどの領域を各仮想マシン4に割り当てるかの制御及び仮想マシン4間の切り替えの制御ができる。同様に、各VM4は、アドレス空間のどの領域を、VM4の下で実行される各アプリケーション6に割り当てるかを制御でき、また、必要に応じてアプリケーション間の切り替えを制御できる。
【0010】
図1に示すように、各プロセスは、所定の特権レベルEL0,EL1,EL2及びEL3と関連付けられている。この例では大きい数字の特権レベルの方が小さい数字の特権レベルよりも優先されるが、他の例では数字が逆に割り振られてもよい。この例では、アプリケーション6が特権レベルEL0で実行され、VM4が特権レベルEL1で実行され、ハイパーバイザ2が特権レベルEL2で実行される。通常、高い特権レベルで実行されるプロセスは、低い特権レベルで実行されるプロセスには得られない権利を有する。
【0011】
図1に示すように、ハイパーバイザ2、VM4及びアプリケーション6は、正規ドメインで動作できる。また、装置は、セキュアドメインをサポートしており、そのセキュアドメインは、正規ドメインで実行されるプロセスが、セキュアドメインと関連付けられたデータ又は命令にアクセスできないように、正規ドメインから分離されている。これにより、セキュアオペレーティングシステム(OS)10や、セキュアドメイン内でセキュアOS10の制御下で実行される信頼アプリケーション(「トラステッドアプリケーション(Trusted Application)」とも言う)12といった、セキュアドメイン内で動作するプロセスも存在できる。セキュアOS10及び信頼アプリケーション(信頼app)12は、それぞれ特権レベルS−EL1及びS−EL0で実行される。また、セキュアモニタープロセス14が特権レベルEL3に設けられ、正規ドメインとセキュアドメインとの間の移行を管理する。セキュアモニタープロセス14は、例えば、正規ドメイン内の非セキュアプロセスがセキュア領域内のデータ又は命令にアクセスするのを防止する或る保護ハードウェアが設けられることで、アドレス空間のどの領域をセキュアドメイン又は非セキュアドメインと関連付けるかを管理できる。正規ドメインとセキュアドメインとを分離する技術の例としては、英国ケンブリッジのARM(登録商標) Limited社が提供するTrustZone(登録商標)技術があるが、他の例が使用されてもよい。
図1に示すようなセキュアドメインの提供は任意であり、例えば他の実施形態ではセキュアモニター14、セキュアOS10及び信頼アプリケーション12がサポートされなくてもよい。
【0012】
プロセス2,4,6,10,12及び14は、それぞれ仮想アドレス(VA)を用いて、メモリ等のデータストア内でアクセスされるロケーションを識別する。VAは、対応するストレージロケーションを直接的に識別する物理アドレス(PA)へと変換される。アプリケーション6又は仮想マシン4については、まずVAが中間物理アドレス(IPA)へと変換され、そのIPAがPAへと変換される。2段階のアドレス変換を設けることで、例えば、仮想マシン4は、VAからIPAへの変換用のページテーブルを制御して、アドレス空間のどの部分が各アプリケーション(App)6に割り当てられるかを制御でき、ハイパーバイザ2は、IPAからPAへの変換用のページテーブルを制御して、アドレス空間のどの部分が各仮想マシン4に割り当てられるかを制御できる。他のプロセス2,14,10及び12については、VAは、例えば各プロセスがアドレス空間のどの部分にアクセスできるかを制御するページテーブルを制御する(正規ドメイン内の)ハイパーバイザ2又は(セキュアドメイン内の)セキュアOS10によって、直接PAへと変換される。
【0013】
従って、データ処理装置によって実行できる幾つかのプロセスが存在してもよい。通常のシステムでは、アドレス空間へのアクセスに対する制御は、高い特権レベルにあるプロセスが、低い特権レベルのプロセスがどのアドレスにアクセスできるかを制御する、「トップダウン」の手法で管理される。例えば、EL2にあるハイパーバイザ2は、EL1にある仮想マシン4がどのアドレスにアクセスできるかを定義するアクセス許可を設定する。しかしながら、高い特権レベルで動作するプロセスは、通常、その下の低い特権レベルで動作する各プロセスと関連付けられた全てのアドレスに対して読み取り又は書き込みができる。これにより、低い特権レベルで動作するプロセスのデベロッパーにとっては、セキュリティの問題が生じることがある。例えば、様々なパーティーによって提供された幾つかの仮想マシン4が実装されたクラウドプラットフォームにおいて、パーティーの1つが、クラウドオペレータといった他のパーティーが提供したハイパーバイザ2に対して仮想マシン4と関連付けられたデータ又はコードが露出されることを防ぎたい場合がある。
【0014】
本願は、所定の仮想マシン4と関連付けられた全てのデータを必ずしも見ることができなくても、仮想マシン4を管理し且つアドレス空間のどの部分にアクセスできるかを制御する「ブラインドハイパーバイザ」の概念を導入する。同様に、他の特権レベルで動作するプロセスについても、高い特権レベルで動作するプロセスが低い特権レベルで動作するプロセスが使用するアドレスにアクセスするのを防止できる。
【0015】
図2は、命令に応じてデータを処理する幾つかの処理回路を含む幾つかのバスマスターを備えたデータ処理装置20の例を示す。この例では、処理回路は2つの中央処理装置(CPU)24と、グラフィック処理装置(GPU)25と、以下に説明されるような特定のセキュリティ機能を管理するための専用の処理装置であるセキュリティコンプレックス28とを含む。また、バスマスターは、例えばダイレクトメモリアクセス(DMA)制御部26、又は外部装置へのデータの入力若しくは出力を制御する(
図2には示されていない)入出力(I/O)インターフェースといった、処理回路の1つの代わりに処理タスクを実行できる他の装置も含む。なお、他の種類のマスター装置を設けてもよいことは理解されよう。システムバス30は、バスマスターのそれぞれを、メモリ34へのアクセスを制御するメモリ制御部(DMC)32に接続する。この例では、メモリはダイナミックランダムアクセスメモリ(DRAM)を用いて実装されるが、他の形態のメモリ又は他の種類のデータストアも設けられることが理解されよう。各バスマスター24,25,26及び28は、バス30を介してメモリ制御部32にデータアクセストランザクション(読み取り又は書き込み)を発行し、制御部はメモリ34を制御してトランザクションを利用可能にする。
【0016】
幾つかのキャッシュ36が、処理回路24及び25のローカルなデータ又は命令をキャッシュするように設けられる。CPU24は、それぞれが自身のレベル1命令キャッシュとレベル1データキャッシュとを有するが、レベル2キャッシュは共有する。GPU25は、データ又は命令をキャッシュするキャッシュ36を有する。なお、これは単に利用できる実現可能なキャッシュ階層の例であって、他の構成も実現可能であることが理解されよう。また、各処理回路(CPU及びGPU)24及び25は、仮想アドレス(VA)と中間物理アドレス(IPA)と物理アドレス(PA)との間で変換を行い、以下に詳述するような、ページテーブルを用いる特定のプロセスによって設定されたアクセス許可を実施するメモリ管理ユニット40も有する。
【0017】
CPU24及びGPU25は、
図1に関して上述された任意の種類のプロセスから命令を実行できる。
図1のプロセス2,4,6,10,12及び14のそれぞれは「ブラインドドメイン」(BD)と称されてもよく、対応するブラインドドメイン識別子(BDID)を有する。プロセスの幾つかについては、各プロセスに対してBDIDを適当に割り当ててもよい。例えば、ハイパーバイザ2、セキュアモニター14又はセキュアOS10には、対応するBDID値を単にあてがうだけでもよい。しかしながら、他のプロセスについては、BDIDは、個別のプロセスに既にあてがわれた既存の識別子を連結したものであってもよい。例えば、特定の仮想マシン4の下で実行される所定のアプリケーション6に対するBDIDは、その少なくとも一部が、そのアプリケーションと仮想マシン識別子(VMID)とに関連付けられたアプリケーション空間識別子(ASID)から形成されてもよい。また、BDIDには、プロセスがセキュアドメイン又は正規ドメインと関連付けられているかどうかを示すセキュアビットSも含まれてもよい。つまり、各プロセスは、その対応するBDIDを用いることで一意的に識別が可能である。
【0018】
メモリ34内にはブラインドドメイン記述子テーブル(BDDT)42が設けられ、各BD2,4,6,10,12及び14の状態を追跡(track)する。例えば、BDDT42は、各BDIDについて、以下のうちの1つのようなブラインドドメインの状態を特定してもよい。
・無効(Invalid):このBDIDにはまだブラインドドメインが設定されていない。
・消去(Scrub):BDIDはセキュリティコンプレックス28によって請求されている(後述のように、これには、事前に同じBDIDを使用したプロセスと関連付けられたメモリ34内の任意のデータを上書きする上書き手続きを行うことが含まれてもよい)。
・準備(Prepare):セキュリティコンプレックス28は、そのBDIDと関連付けられたBDを初期化して、BDを実行する準備をしている。
・実行(Execute):BDは初期化されていて、実行の準備が完了しているか既に実行されている。
例えば、BDDT42は各BDIDに対して2ビットの状態フィールドを指定して、対応するブラインドドメインの状態を識別してもよい。ブラインドドメインの状態のライフサイクルを以下により詳しく説明する。ASIDによって識別されたアプリケーションに対するBDDTエントリは、所定の仮想マシン4のVMIDを、その仮想マシン4の下で実行されるアプリケーション6のASIDにマッピングするVMID‐ASID間接テーブル(VMID-to-ASID indirection table)を用いて追跡されてもよい。なお、BDDT42が、上記の状態識別子だけでなく、所定のBDと関連付けられた他の情報も含んでもよいことが理解されよう。
【0019】
各ブラインドドメイン(BD)は、そのデータ又は命令を任意の他のブラインドドメインから保護できる。任意のBDが、物理アドレス空間の選択されたページの所有者BDになることを要求できる。メモリ34にはページ所有権テーブル(POT(page ownership table))50が格納され、(存在する場合は)どのBDがメモリの各物理ページの所有者BDであるかを追跡する。メモリの所定のページの(所有者プロセスとも称される)所有者BDは、そのページへのアクセスを制御する排他的な権利を有する。例えば、所有者BDは、他のBDがそのページへのアクセスを許可されるかどうかを制御する属性をページ所有権テーブル50内に設定できる。各バスマスターには、所定のページの所有者BDによって設定された許可属性を行使する保護ハードウェア60及び62が設けられ、バス30へと出力されている他のBDが所有者BDの制御する制約に違反した場合に、そのページを対象としているアクセス要求を防止する。これによって、任意のプロセスが、そのデータ又は命令に(高い特権レベルプロセスを含む)他のプロセスがアクセスするのを防止することができる。
【0020】
図2に示すように、ページ所有権テーブル(POT)50は、物理アドレス空間の異なるページにそれぞれ対応する幾つかのエントリ52を含む。POT50は物理アドレスでインデックスされる。POT50の各エントリ52は以下の情報を含む。
・対応する物理ページを所有するBDのBDIDを指定する所有者BDIDフィールド54。
・対応する物理ページへのアクセスを制御する1つ以上の属性を指定する属性フィールド(attribute field)56。これらの属性は、BDIDフィールド54内で識別される所有者BDによって設定される。
・アドレスフィールド58。その所有者BDが仮想アドレス又は中間物理アドレスを使用するページ(例えばアプリケーション6及び12や仮想マシン4)に対して、そのページが所有者BDによって請求されたときに、アドレスフィールド58は、対応する物理ページの物理アドレスにマッピングされるVA又はIPAを指定する。
・(
図2には示されていない)ページ状態フィールド。対応するページの状態を示す。例えば、各物理ページは以下の状態の1つであってもよい。
○無効(Invalid):どのBDにも所有されていない。
○請求(Claiming):BDIDフィールド54内で示されるBDによって請求されているプロセス内にあるが、まだ所有が有効でない。
○有効(Valid):BDIDフィールド54内で示されるBDによる所有が有効である。
・任意で、ページの所有権を請求した場合に行われる上書きプロセスの際に上書きされたページの行数を追跡する(以下により詳しく説明される)請求カウントフィールド(claim count field)60。
また、CPU24又はGPU25のレジスタ内又はメモリ34内のスタック構造内といった異なるロケーション内に請求カウンター(claim counter)60を格納することも可能であり、これによって、必要に応じて、請求カウントフィールド60をPOT50から省略できる。
【0021】
所定のページに対するPOTエントリ52の属性フィールド56をそのページの所有者BDが設定することで、所有者BDによって、他のBDがページにアクセスすることを排他的に制御できるようにする。属性フィールド56は、例えば以下のような、対応するページへのアクセスを制御する属性の幅を含んでもよい。
・所有者BDID以外のどのプロセスがページにアクセスできるかを示す共有属性。例えば、共有属性は以下のページのタイプの1つを指定できる。
○プライベート(Private):BDIDフィールド54内で識別された所有者BDのみがページにアクセスできる。
○IO:BDIDフィールド54内で識別された所有者BD及び、所有者BDによって請求されている任意の装置26のみがページにアクセスできる(後述の装置所有権の請求を参照)。
○共有(Shared):所有者BD及び1つ以上の選択された他のBDがページにアクセスできるが、その他のBDはいずれもアクセスできない。選択された他のBDは、属性フィールド56の更なる属性、又はページ所有権テーブル50とは別に格納された制御データによって識別できる。
○グローバル(Global):どのBDもページにアクセスできる。
・所有者BD以外のBDがページへのアクセスを許可された場合、そのBDがページに対する読み取り専用のアクセスを有しているか、読み取り/書き込みアクセスのどちらも有しているかを示す、読み取り/書き込み属性。
・対応する物理ページに書き込まれるデータに適用される暗号のレベルを示す暗号属性。
【0022】
図2に示すように、メモリ制御部32は、メモリ34に書き込まれたデータの暗号化及びメモリ34から読み取られたデータの複合化を行う暗号化回路56を含んでもよい。暗号化回路56は幾つかの秘密暗号化キーを保持してもよく、各BDIDはそれ自身のキーを有してもよい。暗号化回路56は、全く暗号化されないもの(データが暗号化することなくメモリに書き込まれる)から、連続的に強力な形態となる暗号化を通して、幾つかの異なる暗号化レベルをサポートする。一般的に、暗号化が強力なほどセキュリティが高くなり、より多くのリソースがデータの暗号化及び復号化に消費される。
【0023】
幾つかの実現において、所定のBDが、自身が所有する全てのページに対して同じレベルの暗号化を指定してもよい。BDが所有する全てのページに対する暗号化が同じレベルの場合は、代替として、BDが所有するページの各POTエントリ52に代わって、BDDT42内のBDのエントリにおける暗号化レベルを指定することになるだろう。しかしながら、ページテーブル内の暗号化レベルを指定することで、暗号化回路56が、ページの所有者BD及び暗号化レベルの両方を識別するのに、POT50及びBDDT42を読み取るのではなく1つのテーブル50を読むだけで済むようになるため、処理速度を上げることができる。
【0024】
しかし、他の実施形態では、所有者BDは、所有する異なるページに対して異なるレベルの暗号化を指定してもよい。ページごとに求められる暗号化レベルを所有者BDが選択できるようにすることで、最も強力な暗号化を本当にそれを必要としているページのために留保しておくことができ、それほど機密ではない情報を格納しているページには低いレベルの暗号化を用いて、電力を節約することができる。これによって、セキュリティと電力消費とのバランスが良くなる。
【0025】
従って、書き込みにおいて、暗号化回路56は対象アドレスのPOTエントリ52を確認して、対応するページに適用する暗号化レベルを判断する。暗号化回路56は、そのPOTエントリ52のBDID54フィールド内で示される所有者BDに対して適切な暗号化キーを選択し、キー及び指定された暗号化レベルを用いてデータを暗号化してから、暗号化されたデータをメモリ34に書き込む。同様に、読み取りアクセスにおいて、暗号化回路56は対応するページのPOTエントリ52を確認して、必要な復号化レベル及び復号化にどの所有者BDのキーを使用すべきかを判断し、メモリ34から読み取られたデータを復号化して、その後、復号化されたデータを要求したマスターに、バス30を介してデータを出力する。
【0026】
従って、各プロセスは物理アドレスの対応するページの所有者になることができ、高い特権レベルのプロセスの制御を含めて、他のプロセスがそのページにアクセスできるかどうかを排他的に制御する。これによって、例えば仮想マシン4が、ハイパーバイザ2がそのデータ又は命令にアクセスするのを防止することが可能となり、上記の問題に対処する。
【0027】
ページ所有権テーブル50に設定された方針の実施は、各処理回路24,25及び28と関連付けられたブラインドドメイン管理ユニット(BDMU)60によって実行される。
図3に示すように、BDMU60は、メモリ管理ユニット(MMU)40が行う任意の確認を通ったトランザクションに対して行われるトランザクション承認の更なるステージとして機能してもよい。
【0028】
図3に示すように、MMU40は、それぞれがアドレストランザクションの2つのステージを提供するステージ1MMU(S1MMU)40−1とステージ2MMU(S2MMU)40−2とを含んでもよい。MMUに入力されるトランザクションは、アクセスされる仮想アドレス70と、トランザクションが読み取りトランザクション及び書き込みトランザクションのどちらであるかを指定するトランザクションタイプ属性72と、トランザクションを発行したアプリケーション6を識別するASID73と、その下でアプリケーション6が実行されている仮想マシン4を識別するVMID74とを備える。ASID及びVMIDは、共に、トランザクションが実行されたコンテキストを識別するコンテキスト識別子を形成すると考えることができる。
【0029】
S1MMU40−1は、メモリ34内に格納されたステージ1(S1)ページテーブル80からエントリの一部をキャッシュするS1MMU内のローカルキャッシュである、ステージ1トランザクションルックアサイドバッファ(S1TLB)内の仮想アドレス70及びASID73をルックアップする。正規ドメインでは、S1ページテーブル80は、アプリケーション6を制御する仮想マシン4によって設定され、セキュアドメインでは、S1ページテーブル80は、セキュアOS10によって設定される。各S1ページテーブルエントリは、対応するASIDが、対応するページへの読み取り許可又は書き込み許可を有するかどうかを指定する属性と共に、仮想アドレス空間の対応するページに対するVA−PA又はVA−IPAマッピングを指定する。S1TLBがVA70及びASID73に対応するエントリを含まない場合は、ページテーブルウォークが行われて、必要なエントリをS1ページテーブル80から取り出す。必要なエントリがS1TLB内にある場合、S1MMU40−1は、読み取り/書き込み属性72によって指定されたタイプのアクセスが、指定されたASID73及び仮想アドレス70に対して許可されているかどうかを確認する。アクセスが許可されていない場合、トランザクションは拒否され、ステージ1アクセス違反があったことが知らされてもよい。一方、許可が得られている場合、入力VA70に対応する変換されたPA又はIPA75が出力される。
【0030】
例外のレベルS−EL0,S−EL1,EL2又はEL3の1つにおいて入力トランザクションが発行された場合は、S1MMU40−1の出力はPAであり、ステージ2MMU40−2を回避できる。
【0031】
しかしながら、EL0又はEL1で実行されるアプリケーション6又は仮想マシン4によって入力トランザクションが発行された場合は、S2MMU40−2が更なるアドレス変換及びアクセス許可確認を行う。S2MMU40−2は、エントリの一部をメモリ34内のステージ2(S2)ページテーブル82からキャッシュするステージ2TLB(S2TLB)を含む。S2ページテーブル82は、(正規ドメインについては)ハイパーバイザ2又は(セキュアドメインについては)セキュアOS10によって設定される。S2MMU40−2はS2TLBをルックアップして、指定されたIPA75及びVMID74のエントリがあるかどうかを確認し、無い場合はページテーブルウォークを行って必要なエントリをS2ページテーブル82から取り出す。必要なエントリがS2TLB内にある場合、S2MMU40−2は、属性72内で指定されたタイプのトランザクションが許可されているかどうかを確認し、許可されている場合、IPA75に対応する変換されたPA76を出力する。トランザクションが許可されていない場合、ステージ2アクセス違反があった旨のフラグが立てられ、トランザクションは拒否される。
【0032】
従って、MMU40−1及び40−2の各ステージは、アクセス要求が、所定の特権レベルにおける所定のプロセスによって設定されたアクセス許可を得ているかどうかを確認するアクセス制御回路と考えられる(例えば、S1MMU40−1は、仮想マシン4又はセキュアOS10によって設定された許可を実施し、S2MMU40−2は、ハイパーバイザ2によって設定された許可を実施する)。
【0033】
そして、物理アドレス76はBDMU60へと渡り、物理アドレス空間の対応するページに対するPOT50内の所有者BDによって設定された任意のアクセス制御を実施する。BDMU60は、MMU40の各ステージ内のTLBと同様に、POT50とBDDT42との一部をメモリ34からキャッシュするルックアサイドバッファを含んでもよい(以下の
図9参照)。従って、BDMU60は、(EL2、EL3若しくはS−EL1からの物理的にアドレス指定されたトランザクション、又はMMU40によるVA又はIPAからの変換によって)物理アドレス76を受信すると、必要なPOTエントリ52及びBDDTエントリがそれぞれのルックアサイドバッファに存在するかどうかを確認し、存在しない場合、メモリ34から必要なエントリを取り出す。必要なエントリが得られた場合、以下の一連の確認を介して物理アドレスを承認する。
・BDMU60は現在のコンテキストBD(そこからトランザクションが生成されたBD)がBDDT42内の有効コンテキストであるかどうかを確認する。例えば、BDDT60は、VMID74及びASID73から現在のコンテキストBDのBDIDを形成して、対応するBDIDがBDDT42内で「実行」状態としてマークされているかどうかを確認する。
・BDMU60は、現在のコンテキストBDが、物理アドレス76に対応するPOTエントリ52内で所有者BD54として示されているかどうかを確認する。
・現在のコンテキストBDが所有者BDでない場合、BDMU60は、(上記の共有属性を用いて)現在のコンテキストBDがページにアクセスするのを所有者BDに許可されているかどうかを確認する。
・現在のコンテキストBDが所有者BDでない場合、BDMU60は、対応するPOTエントリの読み取り/書き込み属性を確認して、属性72で指定されたタイプのトランザクションが所有者BDに許可されているかどうかを判断する。
・現在のコンテキストBDが所有者BDである場合、BDMU60は、入力トランザクションが行われたVA70又はIPA75が、対応するPOTエントリ52のアドレスフィールド58内のVA/IPAと合致するかどうかを確認する。
・また、BDMU60は、現在のアクセスに対してS1ページテーブルエントリ内で指定された想定の共有属性が、対応するPOTエントリ内で指定された実際の共有属性と合致するかどうかも確認する。
これらのうちいずれかの確認が取れなかった場合、アクセスは拒否され、アクセス違反が生じる。それ以外の場合は、物理的アドレストランザクションは承認され、システムバス30へと出力される。なお、上記の確認が任意の順序で行われたり、少なくとも部分的に並列に行われたりしてもよいことが理解されよう。
【0034】
同様に、物理アドレス空間の特定のページの所有者が、対応するPOTエントリ52の属性フィールド56内でページを「IO」タイプとしてマークしているかどうかに基づいて、BDフィルタ62が、そのページを対象とするトランザクションをシステムバス30へと出力するかどうかを制御してもよい。
【0035】
従って、
図4に示すように、システムバス30に接続された各バスマスター24,25,26及び28には、物理的にアドレス指定されたトランザクションを承認するBDMU60又はBDフィルタ62のいずれかが設けられてもよく、これによって、システムバスに出力された全てのトランザクションが物理アドレスを指定する承認済みのトランザクションとなるため、メモリ制御部32において更なる承認を行う必要がなくなる。或いは、代替として、BDMU機能性60をメモリ制御部32へと移動させて、MMU40によって承認済みだがページ所有者がPOT50内に設定しているどの許可ともまだ比較されていないトランザクションがバスへと出力され、そして、そのトランザクションがメモリ制御部32に到達するとPOT50と照合される。しかしながら、バスへと出力されているPOT50確認が取れないであろうトランザクションが防止され、各トランザクションと関連付けられた現在のコンテキストBDを識別するメモリ制御部に向けてバスマスターから送信される追加のタグが必要でなくなることから、バスのトラフィックが軽減するため、BDMU60を設けることは有利である。逆に言えば、ハードウェア攻撃から守るために、メモリに書き込まれるデータを暗号化できるように、暗号化/復号化回路56がメモリ制御部32に設けられるが、バスマスター24,25,26及び28自体が暗号化機能を有する必要はない。
【0036】
図5は、処理回路24の1つが発行したデータアクセストランザクション(アクセス要求)が許可されているかどうかを確認する方法を示す。ステップ100において、入力トランザクションが受信されてVA70が指定される。ステップ102において、S1MMU40−1は、入力VA70と現在のコンテキスト(VMID及びASID)とに対応するエントリのS1TLBをルックアップする。S1MMU40−1は、そのエントリ内に設定されたアクセス許可の違反があるかどうかを確認する。S1アクセス違反がある場合、ステップ104においてトランザクション要求は拒否される。S1アクセス違反がない場合、変換されたIPA又はPAが出力される。また、以下により詳しく述べるように、ページのPISG状態(想定の共有属性)がS1MMU40−1によって出力される。トランザクションがEL2、EL3、S−EL0又はS−EL1で発行された場合、変換されたアドレスはPAであり、S2MMU40−2は回避される。トランザクションがEL0又はEL1で発行された場合、出力されたアドレスはIPAであり、アドレス変換の第2ステージが行われる。この場合、S2MMUMMU40−2は、同様に、IPA75と現在のコンテキスト(VMID)とに対応するエントリのS2TLBをルックアップする。そのエントリ内のアクセス許可が確認され、アクセス違反がある場合、要求はステップ104において再び拒否される。S2MMU40−2によってアクセスが許可されている場合、IPAはPA76へと変換され、BDMU60へと出力される。
【0037】
従って、ステージ1アドレス変換又はステージ2アドレス変換のいずれにおいてもアクセス違反が無い場合、物理アドレスが得られる。ステップ112において、物理アドレスは、現在のコンテキストのBDIDが「実行」状態でBDDT42内に示されているかどうかを確認するBDMU60に提供される。示されていない場合、要求はステップ114において拒否される。そのBDIDは、実行状態に進むためにはまず、後述するように、「消去」及び「準備」状態を通過しなければならない。BDIDを承認するこのステップは、まだ安全に初期化されていないBDIDにアクセスを発行することで安全初期化プロセスが回避されるという事態を防止する。また、ここでも、BDDT42の最近見られた幾つかのエントリをキャッシュするローカルルックアサイドバッファがBDMU60内に保持されて、BDDTエントリの確認速度を上げることができる。
【0038】
現在のコンテキストのBDIDが「実行」状態だと承認されると、ステップ116においてBDMU60は必要な物理アドレス76に対応するPOTエントリ52を確認する(POT[PA]の表記はPOTエントリ52を意味する)。また、ここでも、BDMU60内に設けられたPOTルックアサイドバッファ内でアクセスが行われて、より速いアクセスのために、最近遭遇したPOTエントリの一部をキャッシュしてもよい。BDMUは、対応するPOTエントリ52が、現在のコンテキストのBDIDを対象ページの所有者BDとして識別しているかどうかを確認する。識別していない場合、ステップ118において、BDMUは、対応するPOTエントリ52の共有属性が、現在のコンテキストの特定のBDIDと共に「グローバル」又は「共有」のいずれかにマークされているかどうかを確認する。また、BDMU60は、アクセス要求の読み取り/書き込みのタイプが、対応するPOTエントリ52の属性フィールド56内で所有者以外のBDとして定義された許可済みのタイプに合致するかどうかも確認してもよい。これらの確認が取れた場合、ステップ120において、BDMUはトランザクションを承認し、それをシステムバス30へと出力する。一方、ページが現在のコンテキストのBDIDと共有されていなかった場合(例えばページがプライベートになっていたか、他のBDのみと共有されていた場合)、又はアクセス要求が書き込みを指定したがページは読み取り専用とマークされている場合、ステップ114においてリクエストは拒否される。
【0039】
一方、ステップ116において、現在のコンテキストが、対応するページの所有者BDである場合、所有者BDは自身のページへのアクセスが許可されているため、共有属性56を確認する必要はない。しかしながら、ステップ122において、トランザクションのソースが特権レベルEL0,EL1又はS−EL0にある場合、BDMU60は、トランザクションのVA又はIPAが、対応するPOTエントリ52のアドレスフィールド58内に格納されたVA又はIPAと合致するかどうかを確認する。EL0又はS−EL0で発行されたトランザクションについては、BDMU60はトランザクションのVAがアドレスフィールド58内のVAと合致するかどうかを確認し、EL1で発行されたトランザクションについては、BDMU60はトランザクションのIPAがアドレスフィールド58内のIPAと合致するかどうかを確認する。合致している場合、ステップ120においてトランザクションは承認されてバス30に出力される。アドレスが合致しない場合、ステップ114において要求は拒否される。
【0040】
このような、VA又はIPAをPOT50内に記録されたVA又はIPAに対して最終確認することが有用である理由はすぐには明らかにならないだろう。そこで、以下の場合を検討する。
【0041】
ハイパーバイザ2は、例えば、以下のように、2つの物理的にアドレス指定されたページPA0及びPA1を、S2ページテーブル82内のアドレスマッピングによって特定の仮想マシン4に割り当てることができる。
IPA PA
IPA4 PA1
IPA9 PA0
そして、仮想マシン4は、以下のように、これらの両方のページの所有権を得て、POT50内の共有属性を設定できる。
PA 共有?
PA0 グローバル
PA1 プライベート
【0042】
そして、仮想マシン4は、例えば、(VM4がPOT50内でプライベートとしてマークされていると想定しうる)IPA4に機密データを書き込む或るコードを含み、このデータに他のプロセスがアクセスするのを防止できる。
【0043】
しかしながら、VM4が、機密データを書き込むコードの安全な部分を開始する前に、ハイパーバイザ2はS2ページテーブル82を以下のように変形できる。
IPA PA
IPA4 PA0
IPA9 PA8
【0044】
ここで、VM4が、中間物理アドレスIPA4を用いてそのコードの安全な部分を実行した場合、安全な部分が、「グローバル」ページであるPOT50内でマークされた異なる物理アドレスPA0にマッピングされてしまうことがある。VM4は、その機密データを「グローバル」ページに書き込み、この情報を、ハイパーバイザ2自体を含む任意の他のプロセスに露出してしまうことがある。
【0045】
この問題は、POT50内に情報58を提供して、所有ページに対するアドレスマッピングを特定のマッピングに「ロック」することで防止でき、これによって、所有権属性情報がPOT50内に設定された後に他のプロセスがページテーブル80及び82内のアドレスマッピングを変更した場合にアクセス違反を生じさせることができる。例えば、所有者BDがページを請求する場合、ページを請求するときに行われる現在のVA−PA又はIPA−PAマッピングが、その物理的にアドレス指定されたページに対応するPOTエントリ52のアドレスフィールド58を用いて記録されてもよい。上記の例では、POT50は以下のようであってもよい。
PA 共有? IPA
PA0 グローバル IPA9
PA1 プライベート IPA4
【0046】
その後、VM4が中間アドレスIPA4を用いてプライベートページにアクセスしようとしたときに、その間にハイパーバイザ2がIPA4をPA0へのポイントにリマッピングした場合、このアクセスの中間アドレスIPA4が、このとき物理ページPA0のPOTエントリ52内の中間アドレスIPA9と合致するため、このリマッピングを検出できる。そのため、エラーのフラグを立てることでき、VM4はその安全処理を中断して、機密情報を他のプロセスに露出することを防止する。これによって、上記のような種類の攻撃が避けられる。そして、VM4は再びIPA4及びIPA9の所有権を要求し、このときこれらのIPAにマッピングされている物理ページPA0及びPA8に必要なアクセス制御許可を設定する。
【0047】
従って、逆アドレス変換を含むPOT50内のマッピングが、ページテーブル内の変化に起因する上記のような種類の攻撃を避けるのを助けることができる。上記の例では、仮想マシン4が所有するページに対するページテーブルマッピングを変形させるハイパーバイザについて述べたが、同様の技術を、アプリケーション6又は信頼アプリケーション12が所有するページに対するページテーブルマッピングを変形させる仮想マシン4を防止するのに使用でき、この場合、IPAではなくVAがアドレスフィールド58に格納されうる。
【0048】
図5には示されていないが、トランザクションを承認する方法は、対象PAに対応するPOTエントリ52の「共有」属性が、対応するVAに対するS1ページテーブルエントリ内で指定された想定の属性と合致するかどうかを検証する追加のステップも含んでもよい。ページ所有者が所定のページに共有属性を設定すると(これによって、上述したようにページがプライベート、IO、共有又はグローバルのいずれかであることが示される)、S1ページテーブルの更新も生じるため、対応するページテーブルエントリが、対応する属性を指定できる。幾つかの場合では、ページテーブルエントリはまずS1TLB内でのみ更新され、そして、対応するページテーブルエントリがS1TLBから無くなると、メモリ内のS1ページテーブル80を更新できる。その後、そのページにアクセス要求が発行されると、S1MMU80は、対応するS1ページテーブルエントリ内で指定された想定の共有属性(PISGタイプ)を出力でき、BDMU60は、想定の共有属性が、PAに対応するPOTエントリ52内で指定された共有属性と合致するかどうかを確認できる。合致する場合、(上記の他の確認次第で)アクセス要求を承認できる。しかしながら、実際の共有属性がS1ページテーブルエントリ内で指定された想定の共有属性と合致しない場合、アクセス要求は拒否される。これによって、以下のような潜在的な攻撃から守られる。
【0049】
例えば、所定のBDは、所定の物理ページの所有権を請求して、そのページに機密情報を書き込む準備としてプライベートとマークしてもよい。しかしながら、BDが機密情報の書き込みを開始する前に、他のBDによって同じページの所有権が請求されて、そのページがグローバルとマークされることがある。すると、前の所有者BDがページに機密情報を書き込もうとすると、現在の所有者によってページがグローバルとマークされているため、要求が承認されてしまい、機密情報を他のプロセスに露出してしまう可能性がある。これは、そのページの想定のページ共有タイプを示す対応するページテーブルエントリに情報を書き込んで、そのページにアクセスするときに、POT内に記録された実際の共有タイプがこの想定のページ共有タイプと合致するかどうかを確認することで防止できる。
【0050】
上記の例では、想定の共有属性(PISGタイプ)はS1ページテーブル内で指定されるが、他の例では、これをS2ページテーブル内で指定してもよい。また、幾つかの場合では、どのプロセスが共有属性を設定するかによって、幾つかのページが、S1ページテーブル内で指定された想定の共有属性を有して、他のページが、S2ページテーブル内で指定された共有属性を有してもよい。
【0051】
つまり、BDMU60は、アクセス許可確認の追加のレイヤーをMMU40の最上位に設けることで、MMU40及びBDMU60の両方で確認が取れないとトランザクションの承認ができないようにする。MMU40が、特定の特権レベルのプロセスによって設定された許可を確認する一方で(例えばEL1がS1ページテーブルを制御し、EL2がS2ページテーブルを制御する)、BDMU60が、任意の特権レベルで実行される所有者プロセスによって特定のページに適用できる許可を実施する。従って、例えばハイパーバイザ2が、まだアドレス空間の特定の領域を特定の仮想マシン4に割り当てることができて、それらの領域に他のVM4がアクセスするのをS2MMU40−2及びS2ページテーブルを用いて防止できる場合、仮想マシン4自身によって、POT50内に適切な許可を設定して、BDMU60を制御し、ハイパーバイザ2からそれらのページへの任意の要求を拒否することで、ハイパーバイザ2が、ページのその割り当てられた「プール(pool)」内の幾つかのページにアクセスするのを防止できる。これによって、各「ブラインドドメイン(blind domain)」がそのセキュリティを実施でき、システム内の他のどのドメインからもデータを隠すことができるシステムを可能にする。
【0052】
図6は、BDが、書き込みアクセスを行う物理アドレス空間の任意のページの所有権を要求できる方法の例を示す。ページの所有権を要求する際、同じ物理ページの前の所有者によってそのページに既に安全データが書き込まれていることがある。異なるBD間でページの所有権が移る際にデータが漏出しないようにするために、新たな所有者は、ページの有効な所有者となる前に、要求されたページの各ロケーション内のデータを上書きする上書きプロセス150を完了させなければならないようにしてもよい。各ロケーションに書き込まれた特定のデータ値は、前のデータが上書きさえされればよく、例えば各ロケーションには0又は任意の他のダミー値が書き込まれてもよい。新たな所有者が、所有権の請求が有効となる前に、破壊的な請求シーケンスを行うことでページ内に存在する全てのデータを上書きしなければならないようにすることで、所定のページを前に所有していた特定のBDが無くなっていても(例えばハイパーバイザ2が所定のVM4の実行を終了していても)、データのセキュリティを実施できる。幾つかの例では、或る専用ハードウェアを処理回路24,25及び28内に設けて、ページ所有権が要求されると上書きシーケンスが行われるようにできる。しかしながら、以下の例では、新たな所有者BDと関連付けられたソフトウェアが、請求されているページの各ロケーションに一連の書き込みを生じさせることで上書きを行うが、そのソフトウェアを実行する処理回路24,25及び28内の或る制御ハードウェアが、新たな所有者BDが上書きプロセス150を無事に完了させているかどうかを確認して、上書きプロセス150が終了するまでPOT50内で有効とマークされるのを防ぐ。
【0053】
所有権要求は、例えば、請求されるページに対応するアドレスを指定する所有権請求命令を実行する将来的な所有者BDに対応してもよい。ステップ130において、VAが指定された所有権要求が受信され、所有権が要求されたページを識別する。ステップ132において、MMU40は書き込みアクセスが指定されたページに対して許可されているかどうかを判断し、MMU40のステージ1又はステージ2のいずれかが書き込みアクセスが許可されていないと判断すると、ステップ134において要求が拒否される。従って、BDは、それ自体にデータを書き込むことを許されていないページの所有権の請求を防止される。書き込みアクセスが許可されている場合、VAが(直接又はIPAを介して)PAへと変換され、PAが出力される。
【0054】
そして、この方法は、対象PAに対応するページの各ロケーション内のデータを上書きする上書き手続き150によって進められる。上記の請求カウンター60は制御ハードウェアによって用いられ、上書きプロセスの進行を追跡して、それまでに上書きされたページの行数をカウントする。ステップ152において、上書きカウンター60は、例えばページのベースアドレスからのオフセットがゼロであるアドレスといった、ページ内で最初のアドレスへのポイントに初期化される。ステップ154において、制御ハードウェアは(所有権を要求したBDである)要求者BDを待って、書き込みを生じさせる。書き込みが行われると、ステップ156において、制御ハードウェアは書き込みの対象アドレスが正しいかどうかを確認する。例えば、制御ハードウェアは要求者BDがページの各行を固定順序で反復するようにして、次のアドレスに書き込みがあるかどうか(例えば書き込みオフセットがインクリメントカウンターと合致するかどうか)を単に確認するようにしてもよい。アドレスが正しくない場合、ステップ158において、所有権要求は拒否されて、ページはPOT内で無効とマークされ、例えば、そのページに無い他のアドレスに書き込むか、同じアドレスに繰り返し書き込むことで、要求しているBDが上書き手続きを回避するのを防止する。所有権要求が拒否された場合に要求者BDが再び所有権の要求を望むと、新たな所有権要求を再び開始して、上書き手続き150を正しく完了させる必要がある。
【0055】
ステップ156において対象アドレスが正しかった場合、ステップ159において制御ハードウェアは上書きカウンターをインクリメントする。ステップ160において、制御ハードウェアは、要求しているBDが、所有権請求プロセスの最後に到達したことを宣言したかどうかを確認する。例えば、要求者BDは所有権請求終了命令を実行して、上書き手続き50を終了した旨のフラグを立ててもよい。所有権請求の最後に到達していない場合は、この方法はステップ154へと戻り、上書きされるページの次の行を確認する。プロセスは、ページの各行ごとにステップ154〜160を何度も繰り返す。最後に、要求プロセスはその上書き手続き150の最後に到達したことを宣言し、ステップ162において、制御ハードウェアはページ全体に書き込みが行われたかどうか(例えば上書きカウンターがページの行数と合致するかどうか)を確認する。ページ全体に書き込みが行われていない場合、ステップ158において、所有権要求は再び拒否され、ページはPOT50内で無効としてマークされる。ページ全体に書き込みが行われている場合、ステップ164において、ページは有効としてマークされるため、このとき要求者BDはページの有効な所有者となることができ、ページへのアクセスを排他的に制御できる。また、ページのPISGタイプ(共有属性)が、対応するPOTエントリ52に書き込まれる。幾つかの場合では、新たに請求されたページが最初はデフォルトでプライベートとマークされており、新たな所有者がページをIO、共有又はグローバルに変更したい場合には、(例えば以下の
図8又は
図14に示すように)続いて属性の変更が必要となる。一方、最初の所有権要求において、そのページに対して指定される共有属性の値を指定可能であってもよい。また、共有属性の更新によって、S1TLB及び/又はS1ページテーブル80内の対応するページテーブルエントリの更新を生じさせて、想定の共有属性タイプをエンコードすることで、その後のメモリへのアクセスにおいて属性を共有するPOTを承認できるようにしてもよい。
【0056】
ステップ166において、要求者BDがEL0又はS−EL0のプロセスである場合は、所有権要求に指定されたVAが、請求されたページのPOTエントリ52のアドレスフィールド58に書き込まれ、要求者BDがEL1のプロセスである場合は、MMUによって取得されるIPAがアドレスフィールド58に書き込まれ、逆のPA−VA又はPA−IPAマッピングをPOT内に閉じ込めて、上記のような種類の攻撃を防止する。なお、ステップ166は、他の実施形態では、例えば所有権要求を受信し次第すぐ等、より早く行われてもよいことが理解されよう。同様に、要求者プロセスのBDIDは、POTエントリ52がステップ164までに有効になることがない限りは、
図6に示す方法の間いつでもPOT50に書き込まれてよい。
【0057】
所有権要求を実行する、要求者BDの或る疑似コード、及び上書き手続き150の一例を以下に示す。
BD.Page.Invalidate(VA1)//broadcast page invalidate
BD.Page.Claim.Start(VA1)//requires an invalid page
line=(*64byte_ptr)VA1
do while(line<(VA1+PAGESIZE))
DCZ.WT(line++)//ordered zeroing of page
BD.Page.Claim.End(VA1)//make page valid
【0058】
図7は疑似コードを説明するフロー図である。例えばアプリケーションが、仮想アドレス「VA1」に対応するページの所有権の請求を望む。要求者BDは、所有権を要求する前に、無効化命令(BD.Page.Invalidate)を実行して、BDMU60内の任意のルックアサイドバッファからのアドレスVA1と関連付けられた任意のPOTエントリを無効化する。これにより、所有権請求を受けて、古いデータがルックアサイドバッファに確実に残らなくなる。従って、
図7のステップ190において、ページは最初は無効状態(Invalid state)にある。そして、要求者BDはページ請求開始命令(BD.Page.Claim.Start)を実行して所有権要求を発行する。これにより、(MMU40を用いてVA1を変換することでアドレスが取得された)物理的にアドレス指定されたページPA1が「請求(Claiming)」状態(state)へと移行する。要求者(呼び出し元)BDのBDIDは、ページPA1のPOTエントリ52のBDIDフィールド54に書き込まれる。このときPA1にマッピングされている仮想アドレスVA1はアドレスフィールド58に書き込まれる。請求カウンター(claim counter)はゼロに初期化される。
【0059】
そして、要求プロセスはデータゼロ化命令(DCZ.WT)を実行して初めての上書き動作を開始する。この例では、データゼロ化命令は一度に64バイトのページをゼロにするが、他の例では、他のサイズのデータブロックにも作用できることが理解されよう。ステップ196において、制御ハードウェアは、その命令の書き込みオフセット(write offset)が請求カウント(claim count)と合致するかどうかを確認する。合致しない場合、ステップ190において要求は拒否されてページは「無効(Invalid)」状態(state)に戻るように移行するため、要求者BDは、所有権の請求を更に試みたい場合は、他のBD.Page.Claim.Start命令を実行する必要がある。一方、書き込みオフセットが請求カウントと合致する場合、ステップ198において請求カウンター60はインクリメントされ、ステップ194において要求者BDは他のデータゼロ化命令DCZ.WTを実行する。ステップ196,198及び194は、要求者BDがページ請求終了命令(BD.Page.Claim.End)を実行して全ての上書き動作が終了したことを知らせるまで繰り返される。ステップ198において、制御ハードウェアは、請求カウンターがページ内のアドレスの数と合致するかを確認する。請求カウンターのビット数がページのサイズに対応して選択されると、請求カウンターは、対応するページ内の全てのロケーションに書き込みが行われている場合はオーバーフローするため、制御ハードウェアは、1に等しいと上書き手続きが完了したことを示す、請求カウンターのオーバーフロービットを単に確認することができる。ステップ198において請求カウンターがオーバーフローしていない場合、ステップ190においてページは再び無効状態に戻るように移行し、要求者BDは、所有権の請求を再び開始する必要がある。ステップ198において請求カウンターがオーバーフローしている場合、ステップ200においてページPA1は有効(Valid)となり、所有者はこのページに対する属性を設定できる。
【0060】
特定のBDIDを新たなプロセスで使用するのに再利用する場合にも、同様の破壊的な上書き手続き150を行うことができる。例えば、所定のBDIDを「無効」状態から「準備(Prepare)」状態に移行するには、BDIDをまず「消去(Scrub)」状態に移行する。ハードウェアは、「消去」状態の間、このとき所定のBDIDがPOT50内で所有者として示されている各ページ内の各アドレスを上書きするように上書き手続き150が行われているかを確認してもよい。また、ハードウェアは、そのBDIDと関連付けられた各POTエントリ52が無効化されることも求めてもよい。実際の上書き動作は、ハイパーバイザ2又は新たなBDの確立を要求する他のプロセスによってソフトウェア内で行うことができるが、ハードウェアは上書き手続きが無事に完了しているかを確認して、無事に完了するまでの間BDIDが「準備」状態に移行するのを防止してもよい。これにより、そのBDIDを有する古いプロセスと関連付けられた機密情報が、同じBDIDを共有する新たなプロセスに漏出しないようにする。
【0061】
他の実施形態では「消去」状態を省略してもよいが、対応するBDIDに所有されているとしてPOT50内に記録されている各ページ内のデータを上書きする上書きプロセスが無事に完了して、そのBDIDと関連付けられた各POTエントリ52を無効化するまで、「無効」状態から「準備」状態への移行を禁止してもよい。
【0062】
図8は、所定のページの所有者BDがPOT50内の属性を更新する方法を示す。ステップ210において、対象ページを識別するVA及びそのページのPOTエントリ52に書き込まれる1つ以上の属性を指定したPOT更新要求が発行される。ステップ212において、MMU40はそのページへの書き込みアクセスが許可されているかどうかを確認し、S1MMU40−1又はS2MMU40−2がアクセス違反を知らせた場合、要求は拒否される。書き込みアクセスが許可されている場合、変換されたPAが(VAから直接又はIPAを介して)取得される。
【0063】
ステップ222において、物理アドレスを用いてPOT50をルックアップし、更新要求を発行した現在のコンテキストBDが必要なページの所有者BDかどうかを判断する。必要なページの所有者BDでない場合、ステップ224において要求は拒否される。
【0064】
現在のコンテキストBDが、必要なページの所有者である場合、ステップ226において、アドレスフィールド58は(EL0、EL1又はS−EL0を起点とした要求である)更新要求のVA/IPAと照合され、アドレスマッピングが、POTエントリ52が割り当てられたときとまだ同じかどうかを確認する。同じでない場合、ステップ228において更新要求は拒否される。アドレスが合致すると、ステップ230において、対応するページ所有権テーブルエントリの属性が、更新要求内で指定された属性に基づいて更新される。例えば、ページの所有者は、プライベートページが共有となったり共有ページがプライベートとなったりするように属性を変更したり、そのページに対して読み取り又は書き込みが許可されているかどうかを変更したりできる。共有属性に変更があると、S1TLB内のS1ページテーブルエントリ又はページテーブル80に記録されている想定の共有属性(PISG状態)の対応する更新も生じることがある。
【0065】
アドレスマッピングの変更は、どの場合でも、上記の
図5に示すようにメモリアクセスが後から発行されたときに検出できるため、ステップ226は任意であり、他の実施形態ではステップ222から直接ステップ230に進むことができる。とはいえ、POT属性を更新するときにアドレスマッピングの変更のフラグが立つと、潜在的な問題が存在する旨のフラグを所有者BDに向けてより早く立てることができる。
【0066】
図9に示すように、BDMU60は、POT50の最近アクセスされたエントリをキャッシュするページ所有権テーブルルックアサイドバッファ(POTLB)302と、BDDT42の最近アクセスされたエントリをキャッシュするBDDTルックアサイドバッファとを有してもよい。これらは、MMU40内のTLB300と同様に動作する。
図9の下部に示すように、システムバス30と処理ユニット24,25及び28とが、POTLB302又はBDDTLB304のエントリを無効化する無効化命令をサポートしてもよい。処理ユニット24,25及び28がこれらの命令の1つを実行すると、コマンドがシステム内のBDMU60のそれぞれにバス30を介して一斉送信され、各BDMU60による、TLB302及び304からのエントリの無効化を生じさせる。命令310及び312はPOTLB302のエントリを無効化するためのものである。これらは、例えば、ページの所有権の請求又はPOT50内の属性の更新の直前に用いることができる。命令310は、BDMU60による、POTLB302からのエントリの全ての無効化を生じさせる。命令312は、BDMU60による、指定されたページアドレスに対応する、POTLB302のそうしたエントリのみの無効化を生じさせる(命令がVA又はIPAを指定した場合はMMUによってPAに変換され、物理的にアドレス指定された無効化トランザクションがBDMU60に一斉送信されて、対応するPOTエントリを無効化する)。同様に、命令314及び316は、命令314が、BDDTLB304の全てのエントリの無効化を生じさせ、命令316が、指定されたBDIDと関連付けられたエントリのみを無効化することで、BDDTLB304のエントリを無効化するためのものである。無効化を受けて、特定のBDID又はページを求める後続のアクセス要求が生じた場合は、対応するエントリをメモリ34内の主要BDDT42又はPOT50から取り出す必要があるだろう。
【0067】
幾つかの場合では、同様の無効化コマンドを、所定のBDが実行する他の命令によって自動的に生成してもよい。例えば、プロセスが無効化命令を実行してPOT50のエントリを無効化すると、処理回路24及び25内、BDMU60内又はメモリ制御部32内のハードウェアによって一斉送信無効化コマンドが自動的に生成され、BDMU60内のエントリの対応する無効化が生じる。同様に、POTエントリの更新、又はBDのステータスにおけるライフサイクルの更新若しくは変更によって、BDMU60内のPOT又はBDDTエントリが無効化される。
【0068】
幾つかの具体例が上述された。しかしながら、本技術はこれらの通りの例に限定されない。例えば、上記の例はページ単位でメモリブロックの所有権を管理するが、POT50は、或る他のサイズの物理アドレスブロックに対応するエントリを有してもよい(これらは複数のページであってもよいし、MMU40が用いる同じサイズのページに必ずしも対応する必要のないより適当なアドレスブロックに対応してもよい)。
【0069】
上記の例は1つのページ所有権テーブル50を備えたシステムを示すが、同じシステム内に複数のPOT50が存在する場合があってもよい。例えば、物理メモリ内でばらばらになっている異なるDRAMを制御する複数のメモリ制御部が存在する場合、各メモリ制御部/DRAMに対して別々のPOT50を設けると有用となりうる。
【0070】
また、上記の例は、所有者プロセスが発行しているPOTを制御及び更新するコマンドを示すが、他の例では、これらのコマンドは所有者プロセスが信頼する他のプロセスから出されてもよい。例えば、幾つかのシステムでは、POT50は、セキュリティ制御部28上で動作するプロセスによって所有者ドメインの代わりに管理されてもよい。従って、所有者プロセスが、要求されるページの所有権又はPOT50の更新を求める場合に、信頼されたプロセス(例えばセキュリティ制御部28上で動作するプロセス)によって所有権要求又は更新要求の発行を生じさせるコマンドを、信頼されたプロセスに送信してもよい。同様に、上記の上書き(破壊的な請求)プロセスは、必ずしも所有者プロセスでなくてよい信頼されたプロセスによって行われてもよい。
【0071】
また、上記の例では、所有権要求又はPOT更新要求を生じさせる命令の実行を説明したが、他の例では、他の形態のコマンドによって所有権又はテーブル更新の要求が生じてもよい。例えばコマンドは、命令、POTを制御するハードウェア制御部への直接的なI/O動作、又は(信頼された)関数呼び出しであってもよい。同様に、所有権請求の開始コマンド及び終了コマンドは、必ずしも命令でなくてよく、他の形態のコマンドであってもよい。
【0072】
図10はゲスト実行環境(GEE)の安全な初期化を概略的に示す。ゲスト実行環境は、例えばスタンドアロンアプリケーション、1つ以上のアプリケーションプログラムの実行をサポートする動作システム、又は更なる仮想化システムまでも、といった多くの様々な形態をとることができる。安全な初期化は、そのゲスト実行環境の実行可能コードのソースからゲスト実行環境を起動する要求を送信することで開始される。起動要求はハイパーバイザに送信される。要求は、例えば、ハイパーバイザが制御する仮想化コンピュータシステム(クラウドベースコンピューティングシステム)を用いた或る所望の処理の起動をユーザーが望んだ結果であってもよい。ゲスト実行環境の起動要求は、同時に(又は潜在的には遅れて)、ゲスト実行環境の実行の少なくとも最初の部分に対する暗号化されたバージョンの実行可能コードに伴う。この暗号化された実行可能コードは、異なる様々な方法でその対象である受信者への伝達が行われる間、そのセキュリティ保護を助けるように暗号化されてもよい。この例では、暗号化された実行可能コードは、パブリック/プライベートキーペアのパブリックキーによって暗号化される。プライベートキーペアはセキュリティ制御部によって秘密裏に保持される(後述)。
【0073】
ハイパーバイザは、ハイパーバイザの通常動作のように、ゲスト実行環境の起動要求を受信して、新たな仮想マシン(VM)を作り出し、ゲスト実行環境に用いられるページを物理メモリアドレス空間に割り当て、そしてゲスト実行環境と関連付けられた他のパラメータを設定する。そしてハイパーバイザは、ゲスト実行環境の初期化要求と、暗号化された実行可能コードと、ハイパーバイザによってゲスト実行環境に割り当てられた物理メモリアドレス空間のページを示すページ識別子と、ゲスト実行環境が用いるブラインドドメイン識別子とをセキュリティ制御部に転送する。なお、通常のシステムにおいて、ハイパーバイザが大量の物理メモリアドレス空間をゲスト実行環境に割り当て、ゲスト実行環境がこの割り当てられたアドレス空間の一部又は全てをその動作に用いてもよいことが理解されよう。本実施形態の例では、セキュリティ制御部(及びその後のゲスト実行環境自体)は、まず、セキュリティ制御部及びその後ゲスト実行環境が所有するようにゲスト実行環境が使用できるものとしてハイパーバイザが既に割り当てたものの中から、使用したい物理メモリアドレス空間の任意のページを破壊的に請求する。
【0074】
セキュリティ制御部は、ハイパーバイザから転送された要求を受信し、暗号化された実行可能コードのインストールが望まれる全てのページを破壊的に請求する。セキュリティ制御部は、請求及び消去しているプロセスを、請求及び消去しながら、要求されたプロセスのプロセス記述子エントリ内に示された状態「消去」へとマークする。そして実行可能コードがインストールされるとプロセスは「準備」とマークされる。セキュリティ制御部は、そのプライベートキーを用いて、受信した実行可能コードを復号化する。復号化されたコードは、セキュリティ制御部が所有するこのステージにおける請求されたページ内へと格納される。そして、復号化された実行可能コードを格納しているページは、これらがクローズしており実行の準備が整っていることを示す「実行」としてマークされる。そしてセキュリティ制御部は、請求されたページの所有権を、初期化されたゲスト実行環境に移す。このとき、当該ブラインドドメイン内におけるデフォルト且つ空のCPU実行コンテキスト構造も起動される。この実施形態の例では、セキュリティ制御部は、そのプライベートキーを実行可能コードの復号化に適用することで安全な初期化を行っている。他の実施形態の例では、安全な初期化は、セキュリティ制御部による実行可能コードの検証及び/又は安全なインストールの証明を追加で又は代わりに含んでもよい。
【0075】
このステージでは、セキュリティ制御部は、このときゲスト実行環境が「実行(execute)」できる状態であることをハイパーバイザに通知する。これが「最初」の実行であることを示す状態は、当該プロセスのCPUコンテキストテーブルエントリと別々に格納されてもよい。
【0076】
ハイパーバイザは、実行のためのプロセスをスケジューリングする役割を果たす。新たに初期化されたゲスト実行環境が初めて実行される時間になると、ハイパーバイザはこの実行を開始する。そしてゲスト実行環境は、セキュリティ制御部によってゲスト実行環境の所有権に移されている物理ページ内へと格納された、復号化された実行可能コードを実行する。ゲスト実行環境内で実行されるコードは、ハイパーバイザが使用可能であるとマークしたページの中から、動作に必要な任意の更なるページを破壊的に請求する。
【0077】
ゲスト実行環境は様々な異なる形態をとってもよいことが理解されよう。幾つかの実施形態では、ゲスト実行環境は複数のゲストアプリケーションプログラムをサポートするフルオペレーティングシステムであってもよい。他の実施形態の例では、ゲスト実行環境は、自身のメモリページは用いるが別のオペレーティングシステム又は他の関連付けられたシステムは用いずに実行される、単一且つ剥き出しのアプリケーションであってもよい。本技術は、これらの環境及び他の環境で用いることができる。ハイパーバイザの制御下で動作するゲスト実行環境によって、別々のプロセスを互いに分離して実行する機能が提供される。また、セキュリティ制御部、ページ所有権テーブルのメカニズム及びページの所有権の破壊的な請求を設けることで、(任意の形態の)ゲスト実行環境のデータを他のゲスト実行環境及びハイパーバイザ自体によるアクセスから保護できるシステムを提供しようとしている。
【0078】
この実施形態の例では、セキュリティ制御部は別々のプロセッサの形態をとる。他の実施形態の例では、セキュリティ制御部は、要求された/所望のセキュリティの特定の度合いに応じて、同じプロセッサ上で動作する信頼されたプロセス(例えばARM Limited社のTrustZoneをサポートするプロセッサ上で安全モードで動作する信頼されたプロセス)の形態、又は信頼されたハイパーバイザの形態をとってもよい。
【0079】
図11は、破壊的ページ請求のプロセスを概略的に示すフロー図である。ステップ700において、処理は、ページの所有権を求める要求が受信されるまで待機する。こうした要求が受信されると、ステップ702が、通常メモリ管理ユニットが要求プロセスに関するページに対して書き込み許可を提供しているかどうかを判断する。このメモリ管理ユニットはハイパーバイザによって制御されてもよい。メモリ管理ユニットが書き込み許可を与えなかった場合、要求は拒否されて処理はステップ700に戻る。メモリ管理ユニットが書き込み許可を与えた場合、処理は、上書きカウンターが起動されるステップ704に進む。ステップ706は、所有権が要求されたページの行が上書きされたことが検出されるまで待機する。ステップ708は、これが上書きされる次の想定の行だったかどうかを判断する。この実施形態の例では、メモリのページを形成する行に連続的に書き込まれるのを想定されているものとする。想定の行が上書きされていなかった場合、所有権を請求する要求は再び失敗し、処理はステップ700に戻る。ステップ708において、想定の次の行が上書きされていると判断された場合、処理は、上書きカウンターがインクリメントされるステップ710に進む。ステップ712は、所定の値に到達した上書きカウンターによって示されるようにページ全体に書き込みが行われているかどうかを判断する。上書きカウンターが、ページ全体に上書きが行われていることを示す値にまだ到達していない場合、処理はステップ706に戻り、システムはページの次の行が上書きされるまで待機する。ページ全体に上書きが行われていた場合、ステップ714は、ページ所有権テーブル内で、今や要求者によって所有されたとしてページをマークする働きをする。
【0080】
図12は、本明細書に説明されるシステムを提供するハードウェア環境800を概略的に示す。この例では、ハードウェア環境800には、複数のプロセッサ802及び804と、セキュリティ制御部806と、物理主要メモリ808と、メモリマッピング入出力装置810といったバスマスタリング装置とが設けられ、これら全てが相互接続812を介して接続されている。なお、ハードウェア環境800は、広く様々な異なる形態をとることができることが理解されよう。本技術は、例えば、テナント(クラウドカスタマー)が実行が望まれる処理タスクを有する、クラウドコンピューティングのコンテキスト内で使用するのに適している。要求されたタスクを行うのに自身の処理ハードウェアを有するのではなく、クラウドサービスプロバイダによって提供されるゲスト実行環境内で実行されるように要求されたタスクを送信する。クラウドサービスプロバイダは、ハイパーバイザプログラムによってゲスト実行環境に対する要求を受信して、上述のようにそのゲスト実行環境の実行を開始してもよい。ゲスト実行環境の実行は、設けられているクラウド実行サポートのタイプに応じて、自身を複数のプロセスに亘って、又は複数の場所にも亘って分配する。本明細書に説明されるメカニズムは、ゲスト実行環境間のセキュリティのレベルを上げようとしており、これにより、ゲスト実行環境を互いに保護させ且つハイパーバイザ自体からも保護してもよい。
【0081】
図12のハードウェア実行環境800は、本明細書に説明されるようにページ所有権テーブルをサポートする。プロセッサ802及び804並びにセキュリティ制御部には、物理メモリアドレス空間のページの所有権を取得するプロセス、及び、本明細書内で説明されるように請求プロセスの一部としてそのページを上書きするプロセスを管理する働きをする所有権・上書き追跡ハードウェア(OTH)がそれぞれ設けられる。少なくとも、コンテキスト切り替えをサポートするプロセッサ802及び804内には、コンテキスト切り替えプロセスの一部として主要メモリ808内のコンテキストデータメモリにコンテキストデータを保存する働きをするコンテキスト切り替え回路(CS)も設けられる。コンテキスト切り替え回路は例外処理回路の形態をもつ。各コンテキストについてコンテキストデータメモリ814を形成する領域が当該関連付けられたプロセスに所有されることで、コンテキストデータへのアクセスを制御でき、望まれる場合は、コンテキストデータを確実にプライベートに維持できる。
【0082】
図13は、現在の技術を用いたソフトウェアレイヤーモデルを概略的に示す。このソフトウェアレイヤーモデルは、最上位にあるセキュリティ制御部から、下位にあるハイパーバイザ、及びそれ自体がゲストオペレーティングシステムとゲストアプリケーションとを含んでもよいゲスト実行環境へと延在する、複数の特権レベルを含む。新たなゲスト実行環境は、ハイパーバイザの特権レベルよりも低い特権レベルで初期化される。
【0083】
一実施形態の例では、特権レベルは、ゲストアプリケーションプログラムに対応する最下位から延在してもよい。次に高いレベルはゲストオペレーティングシステムであり、その後にハイパーバイザ、そしてセキュリティ制御部によって実行されるモニタープログラム又はファームウェアが続く。最上位の特権には、システム内で使用される暗号キーへのアクセス、その分配及び承認を管理するセキュリティコンプレックスを関連付けることができる。なお、他の特権レベルモデルを導入してもよいことが理解されよう。
【0084】
本技術の特徴は、ページ所有権メカニズムが、ゲスト実行環境が自身が所有するページへのアクセスの制御を有するようにシステムを操作することを認める一方で、例えば、高い特権レベルを有するハイパーバイザがそれらのページにアクセスするのをゲスト実行環境が防止してもよいという点である。これは、高い特権レベルの方がより多くのアクセス権利を与えアクセス権利を制御するという一般的な想定に反する。
図12に示す所有権・上書き追跡回路は、そのページに対する所有プロセスによって制御されるアクセス構成に応じて物理メモリアドレス空間内のメモリ領域の所有権利を行使する働きをしてもよい。(ページ所有権テーブル内で示される)所有プロセスは、ページ所有権を、所有プロセスに対してプライベートであるとマークするか、又は所有プロセスとメモリアクセス要求の1つ以上の更なるソースとの間で共有されるようにマークしてもよい。通常、ページは、その破壊的な請求を受けてプライベート状態へと初期化される。所有プロセスによるアクセスの共有は、
図14に示すように様々な異なる形態をとってもよい。ページに対する所有プロセスは、そのページの所有権を、所有プロセス(「親」プロセス)によって初期化される「子」プロセスに移してもよい。こうした親プロセスが子プロセスを初期化して、子プロセスがまだ「準備」状態にある場合、親が所有する1つ以上のページの所有権をその子プロセスに移すことができる。子プロセスは、まず、その子プロセスに対してプライベートとマークされたこれらのページを受信する。そして子プロセスは、そう望む場合は、自身が所有するページのうちいずれかの共有されたアクセス制御ステータスを変更して、その親プロセスと共有しているという共有ステータスを示すようにしてもよい。子プロセスは、その親プロセスから新たなページを受信すると、その新たなページを子プロセスに割り当てるように破壊的な請求を行う。共有は、祖父母プロセス又は先祖階層における任意の年上のプロセスといった先祖プロセスと行うこともできる。
【0085】
プロセスがページにアクセスすると、幾つかの実施形態の例では、そのページに対するその共有されたアクセス制御データが想定のプロセスと同じであるかを確認してもよい。一例として、プロセスがページを所有しており、その共有アクセス制御を「プライベート」と設定している場合、そのページに任意の機密データが格納される前に、ページがまだページ所有権テーブル内でこのように構成されているかを確認してもよい。
【0086】
所有プロセスによって選択されうる共有の他の形態には、メモリマッピングされた装置とのページの共有があり、当該メモリマッピングされた装置は、アクセス制御を変更するプロセスが所有するメモリのページへとマッピングされる。こうして、プロセスが所有するメモリアドレス空間内にあるメモリマッピングされた装置には、同じプロセスが所有するメモリの或るページ又は他のページにアクセスする権利を与えられてもよい。
【0087】
所有プロセスによって指定できる共有アクセスの更なる形態には、物理アドレスメモリのページがどの他のプロセスもアクセスが許可され且つどの個別のプロセスにも所有されないという、グローバル共有ステータスがある(幾つかの実施形態の例では、固有のBDIDが全てのグローバルページと関連付けられるように設けられてもよい)。所有プロセスは、確実に、その所有プロセスの機密データがそのグローバル共有されたページへと書き込まれないようにしてもよい。
【0088】
図15は、所有権回路としての働きをする所有権・上書き追跡ハードウェアが、プロセスから受信された共有許可を変更する要求に対応するのにどのような働きをするかを概略的に示す。ステップ900において、処理は、共有許可を変更する要求が受信されるまで待機する。こうした要求が受信されると、ステップ902は、当該ページを所有しているとページ所有権テーブル内で示されるプロセスから、アクセス許可を変更する要求が受信されているかどうかを判断する。所有プロセスから要求が受信されると、ステップ904はその要求されたアクセス許可変更を行い(例えば
図14に示すアクセス制御ステータス選択肢の1つを導入する)、処理はステップ900に戻る。ステップ902において、当該ページを所有していないプロセスからの要求と判断された場合、処理が再びステップ900に戻る前に、ステップ906が、要求された変更を無視して、任意で、間違った及び/又は不適切な変更要求が受信されたことを警告する。
【0089】
図10と共に述べたように、ハイパーバイザは異なる実行環境の実行をスケジュールする働きをしてもよい。これらの異なる実行環境は、自身の物理メモリアドレス空間のページをそれぞれ所有する。ハイパーバイザが1つのゲスト実行環境の処理を停止して他のゲスト実行環境の処理を開始すると、これが実行コンテキストのスイッチとなり、このプロセスのスイッチがアクティブとなる。このコンテキストの切り替えは保護された例外対応によって行われてもよい。コンテキストの変更が生じる際のプロセッサ又はより広いシステムの状態データは、例えばレジスタ内容、設定変数及びプログラムステータス値等の多くの状態パラメータを含んでもよい。この状態データはコンテキストデータであり、他のゲスト実行環境又はハイパーバイザ自体に対しては使用可能にならないようにすることが望まれているプライベート情報を表してもよい。
図16A及び
図16Bは、実行コンテキストをどのように保護できるかを示すフロー図である。
【0090】
ステップ1000において、処理は、強制的に他のプロセスに向かうといった、コンテキスト切り替え割り込みが受信されるまで待機する。ステップ1002は、割り込みされるプロセス(ゲスト実行環境)が所有するコンテキストデータメモリ814の一部に再始動データを保存する。この再始動データは、幾つかの実施形態の例では、割り込みされたプロセスを再始動させるのに十分な状態データとなりうるが、割り込みされたプロセスに依存する全ての状態データを含む必要はない。例として、再始動データは一般的な目的レジスタ内容を含んでもよいが、キャッシュ内容や変換ルックアサイドバッファ内容といったマイクロアーキテクチャ状態を含む必要はない。ステップ1002で割り込みされたプロセスが所有するコンテキストデータメモリ814の一部へと再始動データを保存するのに続いて、ステップ1004は、現在のプロセスに依存しており且つ他のプロセスへのスイッチを受けて任意の他のプロセスがアクセス可能となりうる状態データを、破壊的に上書きする働きをする。上書きされたデータは再始動データの上位集合であってもよい。上書きされたデータとしては、マイクロアーキテクチャデータも除外されてもよいし、新たに始動したプロセスがアクセスできない他のデータ、例えば、ページ所有権テーブル及び他のメカニズムの影響で、新たに始動したプロセスがアクセスできなくなる、割り込みされているプロセスが所有するメモリ領域内のデータも除外されてもよい。上書きは、例えば、現在のプロセスに依存するアクセス可能状態の全てを、ゼロ値、又は割り込みされているプロセスが実際に行った処理に依存しない他の所定値に設定する。そしてシステムはステップ1000に戻り、次のコンテキスト切り替え割り込みを待つ。例えば高い例外レベルへのプロセス呼び出しといった、プロセスの強制終了の場合、例えばR0〜R7といったレジスタ内容の部分集合を、他のレジスタ/状態が格納されている呼び出し対象に受け渡して、出口及び再エントリ上に復元してもよい。
【0091】
図16Bに示すように、ステップ1005において、システムは新たなプロセスが開始されるまで待機する。ステップ1006は、開始される新たなプロセスが、関連付けられたステータスがCPUコンテキストデータ内で「準備完了(ready)」になっているものかどうかを判断する働きをする。プロセスが準備完了状態でない場合、これは、既に実行がスケジュールされていて且つ少なくとも一度実行されていることを示し、すなわち、実行が再始動される前に復元されるべきそれ自身のコンテキストデータを有することを示す。開始されるプロセスが「準備完了状態」でない場合、ステップ1008は、プロセスがコンテキストデータメモリ814内に所有するメモリのページから、プロセスの再始動データを復元する働きをする。開始されるプロセスが「準備完了」状態、例えば「初めての実行の準備完了」状態にある場合、ステップ1008は回避される。最後に、ステップ1010において、新たなプロセスの実行が、プロセスがステップ1005に戻って他の新たなプロセスを待つ前に開始される。
【0092】
図17は、プロセス記述子テーブル内の複数のプロセス記述子エントリの1つとなりうるプロセス記述子エントリを示す。プロセス記述子エントリは、例えばブラインドドメイン識別子(BDID)を含む。また、ページ記述子エントリは、当該プロセスから切り替えられる際に当該プロセスのためのコンテキストデータが保存される(そして当該プロセスはそこから復元される)コンテキストデータメモリ814内のロケーションへのポインタ(ハンドル)も含む。このポインタは、当該プロセスが所有するメモリの領域を示す。また、ページ記述子エントリは、以下に更に述べられる現在のプロセスステータスも含む。
【0093】
図18は、プロセスに対するプロセスステータス状態の例を概略的に示す。使用が中止されたプロセスは無効とマークされ、そのBDIDを新たなプロセスによって再請求できるようになる。ハイパーバイザは、プロセスの作成及びプロセス記述子エントリの設定を担当してもよい。そのプロセスの初期化は、上述したように、セキュリティ制御部と連動して行われてもよい。後続の、プロセスによって導入できる次の状態は「消去」状態である。これは、当該プロセスBDIDは請求されており、プロセスによって所有権に関連付けられたページは消去中であり、例えば当該BDIDの先の使用に対するページ所有権テーブル内に存在するエントリは削除され、そしてBDID用の新たなページが請求されて消去される(破壊的な上書きが行われる)ことを示す。消去が完了すると、当該プロセスは「準備」状態に切り替えられ、これは、当該プロセスはオープンであり、自身のページを追加する準備が整っていることを示す。ページの追加が完了すると、プロセスは「実行」状態に変化し、クローズされて実行の準備が整う。ここでは、ドメイン内のCPU実行コンテキストのステータスフィールド内に格納され、プロセス実行が開始されるときに再始動データを復元するかどうかを制御するのに用いられる第1の実行状態の準備が整う。
図18は、その実行準備に沿って順番にプロセスが通過する複数のプロセス状態を含むプロセスの「ライフサイクル」を示す。これらの状態の数および特定の形態は変化してもよい。
【0094】
少なくとも幾つかの実施形態の例は、プロセスを実行するかしないかを切り替える際にそのプロセスの状態データを格納するのに用いることができるブラインドドメイン実行コンテキスト(又はフレーム)BDECを含む。この状態データには、当該プロセスが既に或る実行を経験したかどうかの表示が含まれる。プロセスがまだ実行されていなかった場合、この例では、「新(new)」とマークされる(上述した「準備完了(ready)」状態を参照)。実行コンテキストデータには、プロセスが終了した時点での汎用レジスタ内容といった状態データも含まれてもよい。これらのレジスタ内容は、プロセスが再始動したときに復元されてもよい。ここでは、プロセスが(例えばソフトウェア関数呼び出しを受けて)自主的に終了したのか、(例えばハードウェア割り込みを受けて)非自主的に終了したのかを更に特定するステータスパラメータが存在し、この情報を、プロセスをどのように再始動するか、また、プロセスとして事前に形成されたアクションをどのように終了するかを制御するのに用いてもよい。コンテキストデータは、当該プロセスに対してプライベートとなるように格納されてもよい。
【0095】
各BDECは、新、自発的終了(Voluntary_Exit)、非自発的終了(Involuntary_Exit)、自発的完了(Voluntary_Complete)、非自発的完了(Involuntary_Complete)、及び無効といった状態の表示を含んでもよい。BDECは、ドメインを所有する例外レベルの表示と、ドメイン用の汎用レジスタ内容(例えばR0〜R30、PC、P−State等)と、ドメイン用の例外レベルレジスタ内容(例えばTTBR_ELx等)とも含んでもよい。
【0096】
一般的に、対応する物理アドレスブロックへのアクセスを例外制御する所有者プロセスが複数のプロセスであることを、対応する物理アドレスブロックにそれぞれ示す1つ以上のエントリを備える、所有権テーブルが設けられてもよい。これにより、複数のプロセスのいずれか1つが、他のプロセスによる物理アドレス空間の所定の領域へのアクセスを制限するために、その領域を排他的に制御できるようにするのに有用となる。これは、一般的なシステムでは不可能である、低い特権レベルのプロセスが、より高い特権をもつプロセスによるデータへのアクセスを制御又は制限できるようにするのに特に有用である。
【0097】
一般的に、対象の物理アドレスブロックの所有権を要求する要求プロセスには幾つかの手段が存在してもよい。対象の物理アドレスブロックは、要求において直接的に識別されてもよいし、仮想アドレス又は中間アドレスを特定することで間接的に識別されてもよいし、或る他の手法で識別されてもよい。所有権要求は、例えば(上記の請求開始命令といった)専用所有権要求命令であってもよいし、所有権が所定のページに対して要求されることを示すパラメータを伴う他の種類の命令であってもよく、又は、例えば或る他のプロセスを生じさせて所有権要求を開始する或る制御情報を設定することで、要求が他の種類の所有権要求コマンド(必ずしも命令でなくてもよい)に対応してもよい。処理回路は、所有権要求に応答して、要求プロセスがこのとき対象ページの所有者になったことを示すように所有権テーブルを更新できる。従って、要求プロセスは、例えば、機密データをメモリに書き込む前に、対応するアドレスブロックの所有権を要求することで機密データを保護することができる。
【0098】
所定のアドレスブロックの所有権が一方のプロセスから他方に変更する場合、機密情報が古い所有者から新たな所有者に漏出しないように幾つかの技術を用いることができる。1つの方法は、上記の例に述べられるように、所有権を要求しているプロセスが、対象ブロックに対する所有者プロセスとして有効となる前に、そのブロック内の各アドレスを上書きする上書き手続きを無事に完了させるようにすることである。これは、上書き手続きを実際に行うハードウェア、又は、上書き手続きを実行するが無事に完了したかどうかをハードウェアが確認する要求プロセスそのものか他の信頼されたプロセスかのいずれかによって実施できる。上書き手続きが無事完了したかどうかをハードウェアが確認する1つの方法として、所有権請求開始コマンドと所有権請求終了コマンドとの間で行われる1つ以上の書き込み動作において上書きされる物理アドレスに、対象ブロックの全ての物理アドレスが含まれているかどうかを確認してもよい。所有権請求開始コマンドと所有権請求終了コマンドとの間で行われる書き込みが全てのアドレスブロックを連続的に網羅していない場合、上書き手続きは失敗であり、要求者は正当には所有者になれないとしてもよい。例えば、これらの確認は、上述したように、完了した書き込みとそのアドレスオフセットとの数を追跡する請求カウント値を用いて行うことができる。なお、上書き手続きによって対象ブロックの各物理アドレスにおけるデータが無事に上書きされたかを判断する他の技術が存在してもよいことが理解されよう。
【0099】
幾つかの実施形態は、メモリに書き込まれたデータを暗号化し、メモリから読み取られたデータを復号化する暗号化回路を設けてもよい。各プロセスは1つ以上の関連付けられたキーを有してもよく、また、特定のアドレスブロックに書き込まれたデータは、そのブロックの所有者と関連付けられたキーを用いて暗号化され、メモリからデータを読み戻すことで復号化されてもよい。暗号化を備えるシステムでは、1つのプロセスと関連付けられたデータが、アドレスブロックが他の所有者に移った後もメモリに残ったとしても、データは古い所有者のキーを用いて暗号化されていることから、新たな所有者はそれを読むことができないため、上書き手続きは必須でなくてもよい。
【0100】
とはいえ、セキュリティの向上のために、暗号化機能がある場合でも、アドレスブロックの所有権が移されるときにそのブロックに対して上書き手続きを行うようにするのが好ましいといえる。暗号化及び上書き手続きの両方を組み合わせることは、所有者プロセスが、ブロックの所有権が移されるときにデータが失われるという危険に晒されることなく、自身が所有しているアドレスブロックのそれぞれに求められる暗号化レベルを変更できるという利益も有する。異なる暗号化モードは、例えば異なるレベル又は強さの暗号化を備えてもよい。
【0101】
一般的に、所有権テーブルの対応するエントリが、現在のプロセスが対象の物理アドレスにアクセスするのを所有者プロセスに許可されていないことを示す場合に、現在のプロセスからの、そのアドレスにおけるデータへのアクセス要求を拒否するように、所有権保護回路が設けられてもよい。例えば、所有権保護回路は上記のBDMUを備えてもよいし、或いは、メモリ制御部内に設けられる或る回路であってもよい。所有者プロセスは、所有者の許可に満たない要求を拒否することで、所有するアドレスブロックへのアクセスを排他的に制御できる。
【0102】
所有権保護回路に加えて、ハイパーバイザ、仮想マシン又はオペレーティングシステムといった特定のプロセスによって設定されるアクセス許可を実施するアクセス制御回路も存在してもよい。例えばアクセス制御回路は、上述したようなMMUに対応できる。アクセス制御回路が特定の特権レベルの特定のプロセスによって設定された許可を実施する(例えば、ハイパーバイザが、例えば異なる仮想マシン間でアドレス空間を区切るようにする)一方で、所有権保護回路は、そうした許可が求められるページの所有権を要求することで、どのプロセスにも、その特権レベルに関わらず他のプロセスに許可を実施させることができる。
【0103】
この技術は、2つ以上のハイパーバイザ、1つ以上の仮想マシン、1つ以上のゲストオペレーティングシステム、及び1つ以上のアプリケーションをサポートするシステムに対して特に有用となりうる。しかしながら、より一般には、この技術は、複数のプロセスが共存し且つ1つのプロセスが他のプロセスによるデータへのアクセスを防止しうる任意のシステムに適用できる。
【0104】
上述したように、POT50は、POTエントリ52と関連付けられたPAから、基準時点においてPAに変換されたVA又はIPAへの「逆変換マッピング」を効果的に表すアドレスフィールド58を含んでもよい。
【0105】
しかしながら、同様の技術を、物理アドレスでインデックスされた任意のテーブルにもより一般的に適用でき、この物理アドレスについては、少なくとも1つのエントリが、アドレス変換回路によって対応する物理アドレスに変換された第1アドレスを識別してもよい。物理アドレスから、第1アドレスから変換された物理アドレスへの逆マッピングのスナップショットを保持することで、マッピングがまだ同じであるかどうかを後から確認することが可能になり、テーブルの内容の有効性に影響しうるアドレスマッピングにおける後続の変化を検出するのに有益となりうる。
【0106】
一般的に、処理回路は、所定の物理アドレスに対応するテーブルのエントリにおいて、そのときアドレス変換回路によって所定の物理アドレスへと変換されている第1アドレスを記録することへの関連事象の発生に対応できる。関連事象は、例えば、所定の物理アドレスのテーブルへの新たなエントリの割り当てや、所定の物理アドレスのテーブルに存在するエントリにおける情報の更新や、所定のタイプの命令(例えば所定の第1アドレスを指定する命令)の実行や、又はデータ処理装置のオペレーティングモードの所定の変更(例えば安全モードへの変更)であってもよい。従って、テーブル内に記録された第1アドレスは、第1アドレスと、関連事象の際に存在していた対応する物理アドレスとの間のマッピングを表してもよい。
【0107】
その後、アドレス変換回路によって対象物理アドレスへと変換される対象第1アドレスを指定するアクセス要求が受信されると、制御回路は、対象第1アドレスと対象物理アドレスに対応するテーブルのエントリが指定した第1アドレスとの間に齟齬がないかどうかを判断できる。例えば、これによって、アドレスマッピングが関連事象とまだ同時であるかどうかが効果的に判断され、テーブルに格納されている第1アドレスにつながる。これらのアドレス間に齟齬がある場合、要求を拒否するか又はエラーを知らせることができる。
【0108】
幾つかの場合では、物理的にインデックスされたテーブルは、過去のアドレスマッピングを追跡すること及びそれらが後になってもまだ同じであるかどうかを検出することだけを目的に設けられてもよく、つまり、物理的にインデックスされたテーブルは、第1アドレスそのもの以外の情報を一切含む必要がない。
【0109】
この技術はどの物理的にインデックスされたテーブルにも使用できるが、対応する物理アドレスブロックの所有者を示し、所有者がそれらのアドレスへのアクセスを排他的に制御できる、上述した形態の所有権テーブルに対して特に有用である。逆物理−第1アドレスマッピングをテーブル内に記録することで、アドレスマッピングの変更によって機密情報が失われうる上記のような種類の攻撃の防止を助けることができる。
【0110】
幾つかの場合では、第1アドレスは仮想アドレスであってもよい。他の場合では、第1アドレスは中間物理アドレスであってもよい。また、1つのテーブルが、第1アドレスが仮想アドレスである幾つかのエントリと、第1アドレスが中間アドレスである他のエントリとを有することも可能である。
【0111】
本願では、用語「…するように構成され」は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するように使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの相互接続の構造又は手法を意味する。例えば、装置が、定義された動作を提供する専用のハードウェアを有してもよいし、プロセッサ又は他の処理装置が、機能を行うようにプログラムされてもよい。「…するように構成され」は、装置要素が、定義された操作を提供するために何らかの方法で変更される必要があることを暗示するものではない。
【0112】
本発明の例示的な実施形態が、添付の図面を参照して本明細書に詳細に説明されているが、本発明はこれらの通りの実施形態に限定されないこと、そして当業者によって、添付の請求項に定義される本発明の範囲及び精神から逸脱することなく、実施形態に様々な変更及び変形をもたらすことができることが理解されよう。