(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-13
(54)【発明の名称】プロセッサでのハイパーバイザのセキュアイベント処理
(51)【国際特許分類】
G06F 9/455 20060101AFI20221206BHJP
G06F 21/74 20130101ALI20221206BHJP
G06F 21/60 20130101ALI20221206BHJP
【FI】
G06F9/455 150
G06F21/74
G06F21/60 320
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022519169
(86)(22)【出願日】2020-10-09
(85)【翻訳文提出日】2022-05-18
(86)【国際出願番号】 US2020055049
(87)【国際公開番号】W WO2021072243
(87)【国際公開日】2021-04-15
(32)【優先日】2019-10-10
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-12-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】デイビッド カプラン
(72)【発明者】
【氏名】エレナ イリッチ
(57)【要約】
仮想化されたコンピューティング環境は、ゲスト仮想マシンのイベント(割り込み又は例外)処理経路の1つ以上の部分へのハイパーバイザのアクセスを制限することによって、悪意のあるハイパーバイザから保護されており、ゲスト仮想マシンは、ゲストのセキュリティを管理するためのセキュア層と、イベント処理を処理するための1つ以上の非セキュア層と、の両方を含む。ハイパーバイザは、ゲスト仮想マシン(本明細書では単に「ゲスト」と呼ばれる)に通常の例外情報を提供することが制限され、代わりに、ゲストのセキュア層にイベント信号を提供することのみが許可される。イベント信号に応じて、ゲストのセキュア層は、イベント情報のメモリの指定された領域にアクセスし、情報をレビューし、イベント情報が指定されたセキュリティプロトコルに準拠している場合にのみ処理するために、ゲストの別の非セキュア層に情報を提供する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ゲストプログラムにおいて、ハイパーバイザからプロセッサイベントの指標を受信することと、
前記プロセッサイベントの指標を受信したことに応じて、メモリの指定された領域でイベント処理情報にアクセスすることと、
前記イベント処理情報に基づいて、前記プロセッサイベントを処理することと、を含む、
方法。
【請求項2】
前記ゲストプログラムは、セキュア層と非セキュア層とを含み、
前記プロセッサイベントの指標を受信することは、前記ゲストプログラムの前記セキュア層で前記プロセッサイベントの指標を受信することを含む、
請求項1の方法。
【請求項3】
イベント処理情報にアクセスすることは、前記セキュア層が前記イベント処理情報にアクセスすることを含む、
請求項2の方法。
【請求項4】
前記プロセッサイベントの指標を受信することは、プロセッサのイベントインタフェースで前記プロセッサイベントの指標を受信することを含む、
請求項2の方法。
【請求項5】
前記メモリの指定された領域は、前記ハイパーバイザからアクセスできないメモリの領域を含む、
請求項1の方法。
【請求項6】
前記メモリの指定された領域は、メモリの暗号化された領域である、
請求項5の方法。
【請求項7】
前記イベント処理情報は、タスク優先度レジスタ(TPR)情報を含む、
請求項5の方法。
【請求項8】
プロセッサにおいて、セキュリティレジスタの状態を設定することと、
前記セキュリティレジスタの状態に基づいて、ゲストプログラムの層へのハイパーバイザによるイベントの通知を制限することであって、前記イベントは、割り込み及び例外のうち少なくとも1つを含む、ことと、を含む、
方法。
【請求項9】
イベントの通知を制限することは、
前記ゲストプログラムのセキュア層において前記ハイパーバイザからイベントの指標を受信することと、
前記指標を受信したことに応じて、メモリの指定された領域でイベントデータにアクセスすることと、を含む、
請求項8の方法。
【請求項10】
前記ハイパーバイザは、前記イベントデータを前記メモリの指定された領域に格納する、
請求項9の方法。
【請求項11】
イベントの通知を制限することは、
前記ハイパーバイザからイベントの指標を受信することと、
前記指標に応じて、メモリの指定された領域にアクセスしてイベント制御情報を取得することであって、前記メモリの指定された領域は、前記ハイパーバイザからアクセスすることができない、ことと、を含む、
請求項8の方法。
【請求項12】
前記メモリの指定された領域は、前記ゲストプログラムに関連する鍵で暗号化されている、
請求項11の方法。
【請求項13】
前記イベント制御情報は、タスク優先度レジスタ(TPR)情報を含む、
請求項11の方法。
【請求項14】
ゲストプログラムを実行するように構成されたプロセッサコアと、
プロセッサイベントの指標を前記ゲストプログラムに提供するように構成されたハイパーバイザと、を備え、
前記ゲストプログラムは、前記プロセッサイベントの指標を受信したことに応じて、メモリの指定された領域でイベント処理情報にアクセスし、前記イベント処理情報に基づいて前記プロセッサイベントを処理するように構成されている、
プロセッサ。
【請求項15】
前記ゲストプログラムは、前記プロセッサイベントの指標を受信するように構成されたセキュア層と、非セキュア層と、を含む、
請求項14のプロセッサ。
【請求項16】
前記セキュア層は、前記イベント処理情報にアクセスするように構成されている、
請求項15のプロセッサ。
【請求項17】
前記プロセッサイベントの指標を受信することは、前記プロセッサのイベントインタフェースで前記指標を受信することを含む、
請求項15のプロセッサ。
【請求項18】
前記メモリの指定された領域は、前記ハイパーバイザからアクセスすることができないメモリの領域を含む、
請求項14のプロセッサ。
【請求項19】
前記メモリの指定された領域は、メモリの暗号化された領域である、
請求項18のプロセッサ。
【請求項20】
前記イベント処理情報は、タスク優先度レジスタ(TPR)情報を含む、
請求項19のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2019年10月10日に出願され、「VIRTUAL MACHINE INTERRUPT INJECTION RESTRICTIONS」と題する米国仮特許出願第62/913,487号の優先権を主張し、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
コンピュータサービスの効率的な提供を強化するために、一部のサーバ及び他のコンピュータシステムは、仮想化されたコンピューティング環境を実装している。このような環境では、ホストコンピュータシステムは、ホストコンピュータシステムの「ゲスト」と呼ばれ得る複数の仮想マシンを同時に実行する。ゲストの設計と実行を簡素化するために、ホストコンピュータシステムは、同時に実行されるゲストへのシステムハードウェアリソースの提供を管理するハイパーバイザを採用している。つまり、ハイパーバイザがハードウェアリソースの提供を管理するので、ハードウェアは、各ゲストにとっては、ゲストがそれ自身の専用のコンピュータシステムで実行されているように見える。したがって、ゲストは、標準のオペレーティングシステム、ライブラリ、ドライバ及び他のプログラムを使用して、システムハードウェアとインタフェースすることができる。又はイパーバイザは、異なるゲスト間に分離の層(layer of isolation)を提供することによってゲストにセキュリティを提供し、これにより、例えば、あるゲストが別のゲストに関連するプライベートデータにアクセスできなくなる。しかしながら、場合によっては、ハイパーバイザ自体が、ゲストデータに悪意を持ってアクセスしたり、ゲストの操作を不適切に操作したりする手段を提供することがある。
【0003】
本開示は、添付図面を参照することによってより良く理解され、その多数の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
【
図1】いくつかの実施形態による、ハイパーバイザをイベント処理から分離するコンピュータシステムのブロック図である。
【
図2】いくつかの実施形態による、仮想マシンのセキュア層を使用してハイパーバイザからの信号に応じてイベントキューにアクセスする
図1のコンピュータシステムの例を示すブロック図である。
【
図3】いくつかの実施形態による、仮想マシンのセキュア層を使用してイベントキューにアクセスすることによってハイパーバイザをイベント処理から分離する方法のフロー図である。
【
図4】いくつかの実施形態による、メモリのセキュア領域を使用してイベント制御情報を格納する
図1のコンピュータシステムの例を示すブロック図である。
【
図5】いくつかの実施形態による、メモリのセキュア領域を使用してイベント制御情報を格納することによってハイパーバイザをイベント処理から分離する方法のフロー図である。
【発明を実施するための形態】
【0005】
図1~
図5は、ゲスト仮想マシンのイベント(割り込み又は例外)処理経路の1つ以上の部分へのハイパーバイザのアクセスを制限することによって、仮想化されたコンピューティング環境を悪意のあるハイパーバイザから保護する技術を示しており、ゲスト仮想マシンは、ゲストのセキュリティを管理するためのセキュア層と、イベント処理を処理する1つ以上の非セキュア層と、の両方を含む。例えば、いくつかの実施形態では、ハイパーバイザは、ゲスト仮想マシン(本明細書では単に「ゲスト」と呼ばれる)に通常の例外情報を提供することが制限され、その代わりに、ゲストのセキュア層にイベント信号を提供することのみが許可される。イベント信号に応じて、ゲストのセキュア層は、イベント情報のメモリの指定された領域にアクセスし、情報をレビューし、イベント情報が指定されたセキュリティプロトコルに準拠している場合にのみ処理するために、ゲストの別の非セキュア層に情報を提供する。
【0006】
他の実施形態では、ハイパーバイザは、イベントが処理されるかどうか、及び、どのように処理されるかを決定するためにゲストによって使用されるタスク優先度レジスタ(TPR)情報等のイベント制御情報にアクセスすることが制限される。イベント制御情報は、ハイパーバイザがアクセスできないメモリの暗号化された領域に格納される。特に、ハイパーバイザからイベントの指標を受信したことに応じて、ゲストのセキュア層はメモリの暗号化された領域にイベントのイベント制御情報を格納し、プロセッサのイベントインタフェースは、イベント制御情報を使用して、イベントの優先度情報が暗号化された領域に格納されているTPR情報に準拠していることを確認する等して、イベントが指定されたイベントプロトコルに準拠していることを確認する。イベント情報が指定されたプロトコルに準拠していない場合、対応するイベントが処理されない。ハイパーバイザは、メモリの暗号化された領域にアクセスできないため、イベント制御情報を使用してゲストを悪用することができない。
【0007】
いくつかの実施形態では、ハイパーバイザは、ゲストの非セキュア層に例外情報を提供することと、ゲストのイベント制御情報にアクセスすることと、の両方が制限されている。その代わりに、ハイパーバイザは、ゲストのセキュア層にイベントを通知し、ゲストのセキュア層は、それに応じて、セキュリティプロトコルに準拠しているかどうかについて関連するイベント情報をレビューする。イベント情報がセキュリティプロトコルに準拠していることに応じて、セキュア層は、処理のためにイベント情報を非セキュア層に提供し、イベントのイベント制御情報を、メモリの暗号化された領域に格納する。非セキュア層は、メモリの暗号化された領域でイベント制御情報にアクセスし、イベント制御情報を使用してイベントを処理する。
【0008】
イベントキュー及びイベント制御情報のうち1つ以上へのハイパーバイザのアクセスを制限することにより、ゲストは、悪意のあるハイパーバイザ攻撃から保護される。例を用いて説明すると、いくつかの場合では、ゲストのイベント処理経路は、システムハードウェアがTPRによって設定された優先度よりも低い優先度を有する割り込みを生成又は通知しないという仮定等のように、システムハードウェアの動作に関する所定の仮定に依存する。しかしながら、ハイパーバイザは、仮想化されたコンピューティング環境においてゲストとシステムハードウェアとの間に抽象化層を提供するため、悪意のあるハイパーバイザは、TPRで設定された優先度よりも低い優先度を有するゲストオペレーティングシステムに割り込みを提供する等によって、デバイスの動作の所定の仮定に違反するイベントを生成することができる。これらのイベントは、他の方法では禁止されているため、ゲストのセキュアデータやその他の態様が不正アクセスや不正操作に対して脆弱になる。本明細書で説明する技術を使用すると、悪意のあるハイパーバイザがこの方法でゲストを悪用するのを防ぎ、したがって、システムのセキュリティを向上させることができる。さらに、本明細書で説明するように、いくつかの実施形態では、本技術は、イベントを受信及び処理するように設計されたプロセッサの既存のイベントインタフェースで実装され、それによって、本技術を実装するために必要なソフトウェア又はハードウェアの再設計の量を減らすことができる。
【0009】
図1は、いくつかの実施形態による、イベント処理経路の一部へのハイパーバイザアクセスを制限する処理システム100のブロック図である。処理システム100は、概して、コンピュータ命令のセット(例えば、コンピュータプログラム)を実行して、電子デバイスの代わりにタスクを行うシステムである。したがって、種々の実施形態では、処理システム100は、電子デバイス(例えば、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等)の一部である。説明のために、処理システム100は、仮想化されたコンピューティング環境を実装するサーバの一部であると想定されている。
【0010】
コンピュータ命令の実行をサポートするために、処理システム100は、プロセッサ101と、メモリ110と、を含む。メモリ110は、ランダムアクセスメモリ(RAM)等の揮発性メモリ、フラッシュメモリ等の不揮発性メモリ、又は、これらの組み合わせであり、プロセッサ101に代わってデータを格納する。特に、プロセッサ101が命令を実行すると、データ(命令及びオペランドデータを含む)がメモリ110に書き込まれ、メモリ110から読み取られる。メモリ110は、プロセッサ101とは別に示されているが、いくつかの実施形態では、メモリ110の全て又は一部がプロセッサ101の一部であり、プロセッサ101と同じ半導体ダイ又は半導体パッケージに組み込まれていることが理解できるであろう。
【0011】
プロセッサ101は、1つ以上のプロセッサコア(例えば、プロセッサコア102)と、コンピュータ命令を実行するためのサポート回路と、を含む中央処理装置(CPU)等の処理装置である。簡単にするために、プロセッサ101は、単一のプロセッサコアで示されているが、いくつかの実施形態では、プロセッサ101は、複数のプロセッサコアを含むことが理解できるであろう。
【0012】
図示した例では、命令の実行をサポートする回路は、キーボード等の1つ以上の入出力デバイスのへのインタフェースを提供する入出力(I/O)制御モジュール107を含む。いくつかの実施形態では、プロセッサ101は、コンピュータ又は通信ネットワークとインタフェースするための1つ以上のネットワークインタフェース、プロセッサ101のメモリサブシステムとインタフェースするための1つ以上のメモリコントローラ等のように、追加のサポート回路を含む。これらの指定された動作を実行する過程で、サポート回路は、本明細書でプロセッサイベント(例えば、イベント108)と呼ばれる条件を生成する。
【0013】
本明細書で使用される場合、プロセッサイベントは、プロセッサのハードウェアモジュールによって通知される割り込み又は例外を指す。例えば、ユーザが入出力デバイスを操作するのに応じて、I/O制御モジュール107は、割り込みを通知して、プロセッサ101がユーザ操作に応答できるようにする。回路は、割り込みハンドラや例外ハンドラ等のイベントハンドラの実行をトリガしてイベントを処理するために、イベントを呼び出す。例えば、キーボード又は他の入力デバイスでのユーザ入力に応じて、I/O制御モジュール107は、割り込みイベントを呼び出して、ユーザ入力に基づくデータを、指定されたバッファ(図示省略)に格納すること等によって、ユーザ入力を処理する割り込みハンドラをトリガする。
【0014】
I/O制御モジュール107又は他の回路によって通知されたイベントに応じて例外ハンドラをトリガするために、プロセッサ101は、指定されたイベントキュー等の指定された回路を使用して、指定された順序で指定された動作を実行する。プロセッサイベントを処理するためにプロセッサ101によって使用される動作、シーケンス及び回路は、本明細書では、プロセッサ101のイベント処理パスと呼ばれる。イベントの処理をサポートするために、プロセッサ101は、イベントインタフェース109を含む。いくつかの実施形態では、イベントインタフェース109は、アドバンストプログラマブル割り込みコントローラ(APIC)又はx2APIC規格の何れか等のように、指定されたイベントインタフェース規格に準拠するモジュールである。したがって、いくつかの実施形態では、イベントインタフェース109は、割り込み及び例外等のプロセッサイベントを示す信号を受信し、イベントのソース又はベクトルを識別し、イベントの指標を、イベントに関する任意の追加情報と共にプロセッサコア102に提供するモジュールである。それに応じて、プロセッサコア102は、イベントに関連するイベントハンドラを呼び出す。特に、プロセッサコア102は、イベントインタフェースによって提供される情報を使用して、イベントに対応するイベントハンドラを選択し、イベントハンドラを実行し、それによってイベントを処理する。
【0015】
上記のように、仮想化されたコンピューティング環境では、イベント処理パスは、データへの不正アクセス又はプロセッサ101の動作を求める悪意のあるエンティティによる潜在的な攻撃経路を提供する。そのような攻撃から保護するために、仮想化コンピューティング環境を実行する場合に、プロセッサ101は、イベント処理パスの1つ以上の部分へのハイパーバイザのアクセスを制限する。
【0016】
説明のために、
図1の例では、プロセッサ101は、2つの仮想マシンVM1 104及びVM2 106(ゲスト104,106とも呼ばれる)を同時に実行することによって、仮想化コンピューティング環境を実装する。ゲスト104,106の各々は、オペレーティングシステム、アプリケーションプログラム等のような1つ以上のコンピュータプログラムを含む仮想マシンである。いくつかの実施形態では、不正アクセス又は不正操作からのセキュリティを提供するために、ゲスト104,106は複数の層を含み、各層は、不正アクセスを防ぐために指定されたアクセス保護を有する。例えば、ゲスト104は、他の層のソフトウェアによるアクセス及び操作から保護されるセキュア層120(指定された仮想マシン特権レベル0(VMPL0))と、割り込みハンドラ、例外ハンドラ等の実行等のゲスト104のためのイベント処理を実行する非セキュア層132と、を含む複数の層を有する。したがって、例えば、いくつかの実施形態では、非セキュア層132は、オペレーティングシステムを実行するVMPL3層であるが、VMPL0層でのデータ又は動作を変更するためのオペレーティングシステムからのコマンドは、それらが指定されたセキュリティプロトコルと一致しない限り無視され、それによってゲスト104を悪用から保護する。
【0017】
他の実施形態では、セキュア層120は、非セキュア層132に配置されたオペレーティングシステムの中央処理装置(CPU)をエミュレートし、セキュア層120は、非セキュア層132の割り込み処理及びAPICエミュレーションの両方を実行する。これにより、非セキュア層132で実行されるオペレーティングシステムは、イベントインタフェース109を標準APIC又はx2APICインタフェースとして使用することができ、セキュア層120は、本明細書でさらに説明するようにイベント処理を実行する。
【0018】
仮想化をサポートするために、プロセッサ101は、プロセッサ101のハードウェアリソースとゲスト104,106との間のインタフェースを提供するハイパーバイザ105を含む。特に、ゲスト104,106は、ゲストが専用のコンピュータシステム上で実行されているかのようにハードウェア要求及び他の通信を生成する標準的なデバイスドライバ及び他のインタフェースソフトウェアを含む。ハイパーバイザ105は、デバイスドライバ及び他のインタフェースソフトウェアから通信を受信し、通信に基づいて、ゲスト104,106へのハードウェアリソースの提供を管理する。したがって、ハイパーバイザ105は、ゲスト104,106と、ハードウェアリソースを抽象化するプロセッサ101のハードウェアリソースと、の間に層を提供し、ゲスト104,106が、専用のコンピュータシステム用に設計された標準のハードウェアインタフェースソフトウェアを使用できるようにする。
【0019】
仮想化をさらにサポートするために、ハイパーバイザ105は、イベント処理の少なくともいくつかの態様を処理する。例えば、I/O制御モジュール107からの割り込みの指標に応じて、ハイパーバイザ105は、割り込みに関連するゲストを識別し、割り込み識別子、割り込みに関連する優先度レベル等のイベント処理情報と共に、イベントインタフェース109を介してゲストに割り込みを通知する。従来、ハイパーバイザは、イベントインタフェース109を使用してイベントハードウェア情報をゲストに直接インジェクションし、ゲストは、対応するイベントハンドラを使用して、インジェクションされたイベント処理情報に基づいてイベントを処理する。しかしながら、上記のように、ハイパーバイザがイベントインタフェース109又はイベント処理パスの他の部分を介して任意のイベント処理情報をインジェクションすることを可能にすると、悪意のあるハイパーバイザに潜在的な攻撃経路を提供する。したがって、プロセッサ101は、ハイパーバイザがイベント処理パスの1つ以上の部分にアクセスすることを制限する。
【0020】
説明のために、ゲスト104,106の各層は、制限付きインジェクションモード及び代替インジェクションモードと呼ばれる2つの異なるモードの何れかで個別に動作可能である。これらのモードは、ゲスト104における実装に関して説明するが、ゲスト106が同様の方法で動作することが理解されよう。制限付きインジェクションモードでは、ハイパーバイザ105は、ゲストの非セキュア層にイベント処理情報を直接提供することが許可されていない。代わりに、ハイパーバイザ105は、イベントインタフェース109を介して、ゲスト104のセキュア層120にイベントの発生を通知し、メモリ110に格納されたイベントキュー130にイベントのイベント処理情報を格納する。いくつかの実施形態では、イベント処理情報は、イベントのソースのインジケータ(例えば、割り込みをトリガしたハードウェアモジュール)、イベントのタイプ(例えば、イベントが割り込みか例外か、割り込み又は例外のタイプ等)、イベントの優先度レベル等のうち1つ以上を含む。
【0021】
イベント信号に応じて、セキュア層120は、例外ハンドラを呼び出して、イベントキュー130のイベント処理情報にアクセスする。例外ハンドラを介して、セキュア層120は、イベント制御情報が指定されたセキュリティプロトコルに準拠しているかどうかを判別し、準拠している場合、通常の処理のために非セキュア層132にイベント処理情報を提供する。例えば、いくつかの実施形態では、セキュア層120は、イベント処理情報がプロセッサ101の予想されるハードウェア動作と一致するかどうかを判別する。したがって、いくつかの実施形態では、セキュア層120は、イベント優先度レベル、イベントタイプ、イベントソース、イベント識別子等のうち1つ以上を、対応する指定された値の範囲と比較する。イベント情報の何れかが対応する指定された範囲外である場合、セキュア層120は、非セキュア層132にイベントを通知せず、また、セキュア層120は、非セキュア層132にイベント処理情報を提供しない。いくつかの実施形態では、セキュア層120は、セキュリティ違反の試みの可能性を、ネットワークを介してユーザ又は他のコンピュータシステムに通知し、ゲスト104の実行を停止する等の追加の救済措置をとる。
【0022】
イベント処理情報が、指定されたセキュリティプロトコルに準拠している場合、セキュア層120は、イベント処理情報と共に、イベントをイベントインタフェース109に通知する。それに応じて、イベントインタフェース109は、非セキュア層132にイベントを通知し、イベント処理情報を非セキュア層132に提供する。次に、非セキュア層132は、イベント処理情報を使用して、イベントの例外ハンドラを呼び出すこと等によってイベントを処理する。したがって、イベント処理情報は、情報が処理のためにイベントインタフェース109を介して非セキュア層132に渡されることが許可される前に、最初にセキュア層120によってレビューされる。制限付きインジェクションモードは、
図2及び
図3に関して以下にさらに説明する。
【0023】
代替インジェクションモードでは、ゲスト104の層(例えば、非セキュア層132)は、イベント制御情報118を使用してイベント処理情報を処理する。イベント制御情報118は、イベントインタフェース109を制御する情報である。例えば、いくつかの実施形態では、イベント制御情報118は、処理が許可されるイベントの優先度レベルを設定するタスク優先度レジスタ(TPR)情報を含む。ハイパーバイザ105によって提供されるイベントがTPR情報よりも低い優先度レベルを有する場合、イベントが処理されず、それによって、ゲスト104を悪意のある攻撃から保護する。
【0024】
いくつかの実施形態では、イベント制御情報118は、メモリ110の暗号化された領域に格納され、暗号化された領域に格納されたデータは、ゲスト104に関連する鍵(キー)で暗号化される。鍵はハイパーバイザ105にとって未知であり、それによって、ハイパーバイザ105がイベント制御情報118を変更することを防ぎ、さらにゲスト104を保護する。代替インジェクションモードは、
図4及び
図5に関して以下にさらに説明する。
【0025】
ゲスト104,106の個々の層のセキュリティモードを設定するために、プロセッサコア102は、モード制御レジスタ111を含む。モード制御レジスタ111は、複数のフィールドを含み、各フィールドは、対応するゲストレベルのセキュリティモードを設定し、それによって、異なるゲストレベルのセキュリティモードを独立して設定することを可能にする。したがって、例えば、いくつかの実施形態では、セキュア層120は、制限付きインジェクションモードにあり、同時に、非セキュア層132は、代替インジェクションモードにある。いくつかの実施形態では、モード制御レジスタ111は、ゲストのセキュア層(例えば、セキュア層120)によってのみプログラム可能であり、ハイパーバイザ105によってプログラム可能ではなく、それによって、プロセッサ101のイベント処理パスをさらに保護する。さらに、いくつかの実施形態では、モード制御レジスタ111は、制限付きインジェクションモード及び代替インジェクションモードの両方が、同じゲスト層に対して同時に有効になることを許可しない。
【0026】
いくつかの実施形態では、ゲスト104のセキュリティは、セキュア層120を制限付きインジェクションモードに置き、非セキュア層132を代替インジェクションモードに置くことによって強化される。この構成の下で、ハイパーバイザ105は、イベント(例えば、イベント108)をイベントインタフェース109に通知し、対応するイベント処理情報をイベントキュー130に格納する。イベント信号に応じて、(制限付きインジェクションモードの)セキュア層120は、イベントキュー130からイベント処理情報を取得し、イベント処理情報が指定されたセキュリティプロトコルに準拠しているかどうかを判別する。準拠していない場合、セキュア層120は、イベントをイベントインタフェース109に通知しない。
【0027】
イベント処理情報がセキュリティプロトコルに一致(準拠)している場合、セキュア層120は、イベント制御情報118として、メモリ110の暗号化された領域にイベントのイベント制御情報を格納する。セキュア層120は、イベント制御情報118をイベントインタフェース109に提供する。これに応じて、また、非セキュア層132が代替インジェクションモードにあることに応じて、イベントインタフェース109は、イベント制御情報118にアクセスし、イベント制御情報を復号し、復号された制御情報及びイベント処理情報を使用して、イベントに関連するイベントハンドラ(例えば、割り込み又は例外ハンドラ)を実行するように非セキュア層132に要求すること等によって、イベントを処理する。したがって、イベント処理は、イベントインタフェース109によって提供される標準インタフェースを介して管理されるが、ハイパーバイザ105によって直接ではなく、セキュア層120によって呼び出される。これにより、非セキュア層132は、非セキュア層132で実行されるソフトウェア又はイベントインタフェース109の再設計を必要とせずに、標準的な方法でイベントを処理して応答することができる。
【0028】
図2は、いくつかの実施形態による、プロセッサ101での制限付きインジェクションモードでのイベント処理の例を示している。図示した例では、仮想マシン104は、2つの層(すなわち、セキュア層120及び非セキュア層132)を含む。上記のように、セキュア層120は、非セキュア層132、ハイパーバイザ105、及び、他の非セキュアエンティティによる変更から保護されている、ゲスト104のセキュア部分である。非セキュア層132は、ゲストオペレーティングシステム及び他のプログラムを実行するゲスト104の層であり、概して、ゲスト104の他のプログラム又は層等の他のエンティティによってアクセス可能である。
【0029】
動作中、ハイパーバイザ105は、イベント(割り込み又は例外)の指標を受信する。また、指標は、イベントのタイプ、イベントが対象としているゲストのインジケータ等のイベント情報を含む。イベントの指標に応じて、ハイパーバイザ105は、イベントを生成したデバイスの識別子、イベントの優先度レベル等のような追加のイベント情報を生成する。ハイパーバイザ105は、メモリ110に格納されたイベントキュー130にイベント処理情報234を格納する。
【0030】
また、イベントに応じて、ハイパーバイザは、イベント信号208をイベントインタフェース109に提供する。いくつかの実施形態では、イベント信号208は、イベント処理情報234、又は、イベントのタイプ若しくはソースの如何なる指標も含まず、その代わりに、イベントが発生したことを示す信号のみを含む単純な例外信号(例えば、x86例外信号)である。イベント信号208に応じて、イベントインタフェースは、ゲスト104に通知する。それに応じて、セキュア層120は、イベントハンドラを実行して、メモリ110のイベントキュー230にアクセスし、イベント処理情報234を取得する。いくつかの実施形態では、セキュア層120は、イベントのソース及びタイプが予想されるソース及びタイプであること、イベントの優先度レベルがTPR情報に準拠すること等を保証する等のように、指定されたセキュリティプロトコルへの準拠に関してイベント処理情報234をレビューする。イベント処理情報234がセキュリティプロトコルに準拠しない場合、セキュア層120は、処理のためにイベントをイベントインタフェース109に通知せず、それにより、潜在的な攻撃からゲスト104を保護する。イベント処理情報234がセキュリティプロトコルに準拠することに応じて、セキュア層120は、通常のイベント処理のためにイベントをイベントインタフェース109に通知する。
【0031】
したがって、上記の例によって示されるように、制限付きインジェクションモードでは、ハイパーバイザ105は、イベント情報を非セキュア層132に直接通信することが制限されている。その代わりに、ハイパーバイザ105は、セキュア層120にイベントの比較的単純な指標を提供し、ゲスト104のセキュア層120によってのみアクセス可能なイベントキューを介してイベント情報を提供する。これにより、非セキュア層132は、イベント情報を非セキュア層132に直接提供し、潜在的にセキュア情報にアクセスするかゲスト104を操作する悪意のあるハイパーバイザから保護される。
【0032】
図3は、いくつかの実施形態による、制限付きインジェクションモードでゲスト層を操作する方法300のフロー図である。説明のために、方法300は、
図1の処理システム100での例示的な実装に関して説明される。ブロック302で、ハイパーバイザ105は、プロセッサ101のハードウェアリソース(例えば、I/O制御モジュール107)から、プロセッサイベントの指標(インジケータ)を受信する。それに応じて、ハイパーバイザ105は、イベントを生成したリソース、イベントが対象としているゲスト、イベントに関連する優先度レベル等のように、イベントに関連するイベント情報を決定する。ブロック304で、ハイパーバイザ105は、メモリ110に置かれたイベントキュー230にイベント情報を格納する。
【0033】
ブロック306で、ハイパーバイザ105は、イベントの発生を示す信号をイベントインタフェース109に提供し、信号は、イベントが対象としているゲストを示す。したがって、イベントがゲスト104を対象としている場合、ハイパーバイザ105は、イベントを示す信号をイベントインタフェース109に提供する。いくつかの実施形態では、イベントインタフェースは、ハイパーバイザ105によって信号と共に提供されるあらゆるイベント情報を無視する。したがって、信号は「ドアベル」としてのみ機能し、あらゆる関連するイベント情報なしで、イベントが発生したことをゲストに示す。
【0034】
ブロック308で、ハイパーバイザ105からの信号に応じて、イベントインタフェース109は、イベントのセキュア層に通知する。それに応じて、セキュア層120は、イベントキュー230にアクセスして、イベント情報を取得する。イベント情報がイベントセキュリティプロトコルに準拠している場合、セキュア層120は、プロセッサ101のイベントインタフェース109にイベントを示すこと等によって、イベント情報を非セキュア層232に提供する。非セキュア層232は、イベントを処理するために例外ハンドラを実行する。イベント情報がセキュリティプロトコルに準拠していない場合、セキュア層120は、イベントをイベントインタフェース109に通知せず、したがって、イベントが処理されず、それにより、悪用からゲスト104を保護する。
【0035】
図4は、いくつかの実施形態による、プロセッサ101での代替インジェクションモードでのイベント処理の例を示している。図示した例では、
図2の例と同様に、仮想マシン104は、2つの層(すなわち、セキュア層120及び非セキュア層132)を含む。上記のように、セキュア層120は、非セキュア層232、ハイパーバイザ105及び他の非セキュアエンティティによる変更から保護されている、ゲスト104のセキュア部分である。
図2の例のように、非セキュア層132は、ゲストオペレーティングシステム及び他のプログラムを実行するゲスト104の層であり、概して、ゲスト104の他のプログラム又は層によってアクセス可能である。
【0036】
また、図示した例では、メモリ110は、仮想マシン状態エリア(VMSA)領域442と呼ばれる暗号化された領域を含む。VMSA領域442は、ゲスト104に一意に関連付けられた鍵で暗号化されたデータを格納する。いくつかの実施形態では、鍵は、セキュア層120によってのみ使用可能であり、ハイパーバイザ105によって使用することができない。したがって、セキュア層120は、VMSA領域442への全てのアクセスを管理する。特に、セキュア層120は、ゲスト固有の鍵を使用して、書き込み及び読み取りのために各データを暗号化及び復号することによって、VMSA領域442との間のデータの書き込み及び読み取りを管理する。いくつかの実施形態では、データの暗号化及び復号は、セキュア層120の要求に応じて、プロセッサ101の専用ハードウェア(図示省略)によって実施される。ゲスト固有の鍵は不明であり、ハイパーバイザ105からはアクセスできず、したがって、VMSA領域442に格納されているデータには、ハイパーバイザ105からアクセスすることができない。
【0037】
VMSA領域442は、ゲスト104によって何れのイベントが処理されるか、及び、それらのイベントがどのように処理されるか、の1つ以上を管理するイベント制御情報444を格納する。例えば、いくつかの実施形態では、イベント制御情報444は、ゲスト104のオペレーティングシステムによって処理されることが許可されるイベントの最小優先度レベルを示すTPR情報を格納する。オペレーティングシステムは、従来のオペレーティングシステムプロトコルに従ってTPRレベルを設定し、TPRレベルをセキュア層120に示し、セキュア層120は、以下にさらに説明するように、イベント制御情報444にTPRレベルを格納する。
【0038】
動作中、ハイパーバイザ105は、I/O制御モジュール107等のハードウェアリソースからイベントの指標を受信する。それに応じて、ハイパーバイザ105は、イベントに関連するイベント情報408を決定する。上記のように、イベント情報408は、イベントに関連する優先度レベル、イベントを生成したハードウェアリソース、イベントのタイプ等の情報を含む。ハイパーバイザ105は、イベント情報408を、直接、又は、
図2に関して上述したようにイベントキュー130を介して、セキュア層120に提供する。
【0039】
イベント情報408が、指定されたセキュリティプロトコルに準拠していることに応じて、セキュア層120は、VMSA領域442にイベントのイベント制御情報444を格納する。いくつかの実施形態では、イベント制御情報444は、情報がメモリ110に格納されるときに、プロセッサ101のハードウェアによって自動的に暗号化される。また、セキュア層120は、イベント情報408と共に、イベントをイベントインタフェース109に通知する。それに応じて、イベントインタフェース109は、VMSA領域442のイベント制御情報444にアクセスし、イベント制御情報444及びイベント情報408に基づいてイベントを処理する。したがって、
図4の例では、ハイパーバイザ105は、何れのイベントが処理され、それらがどのように処理されるかを管理するイベント制御情報にアクセスすることが制限され、それによって、ゲスト104を悪意のあるハイパーバイザから保護する。
【0040】
図5は、いくつかの実施形態による、代替インジェクションモードでプロセッサを操作する方法500のフロー図である。方法500は、
図1の処理システム100の例示的な実装に関して説明する。ブロック502で、ハイパーバイザ105は、I/O制御モジュール107等のハードウェアリソースから、イベントの指標(イベントインジケータ)を受信する。それに応じて、ブロック504で、ハイパーバイザ105は、セキュア層120にイベントを示す。いくつかの実施形態では、セキュア層120は、制限付きインジェクションモードにあり、イベント指標に応じて、イベントキュー130からイベントのイベント処理情報を取得する。セキュア層120は、イベント処理情報が指定されたセキュリティプロトコルと一致するかどうかを判別し、一致しない場合、イベントのそれ以上の処理を防止する。イベント処理情報がセキュリティプロトコルに準拠している場合、方法はブロック506に進む。
【0041】
ブロック506で、ゲスト104のセキュア層120は、タスク優先度レベル(TPR)等のイベント制御データを、イベント制御情報444としてメモリ110のVMSA領域442に格納する。格納プロセスの前又は最中に、セキュア層120は、ゲスト104に関連付けられた鍵を用いてイベント制御情報444を暗号化する。鍵は未知であり、ハイパーバイザ105からアクセスできない。
【0042】
ブロック508において、ゲスト104のセキュア層120は、イベントインタフェース109を介して、非セキュア層132に対して、イベント情報408が処理される準備ができていることを示す。それに応じて、イベントインタフェース109は、VMSA442から暗号化されたイベント制御情報444を取得し、情報を復号し、復号されたイベント制御情報444を使用して、標準のイベント処理プロトコルを用いてイベントを処理する。
【0043】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0044】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0045】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【手続補正書】
【提出日】2022-05-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ゲストプログラムにおいて、ハイパーバイザからプロセッサイベントの指標を受信することと、
前記プロセッサイベントの指標を受信したことに応じて、メモリの指定された領域でイベント処理情報にアクセスすることと、
前記イベント処理情報に基づいて、前記プロセッサイベントを処理することと、を含む、
方法。
【請求項2】
前記ゲストプログラムは、セキュア層と非セキュア層とを含み、
前記プロセッサイベントの指標を受信することは、前記ゲストプログラムの前記セキュア層で前記プロセッサイベントの指標を受信することを含む、
請求項1の方法。
【請求項3】
イベント処理情報にアクセスすることは、前記セキュア層が前記イベント処理情報にアクセスすることを含む、
請求項2の方法。
【請求項4】
前記プロセッサイベントの指標を受信することは、プロセッサのイベントインタフェースで前記プロセッサイベントの指標を受信することを含む、
請求項2の方法。
【請求項5】
前記メモリの指定された領域は、前記ハイパーバイザからアクセスできないメモリの領域を含む、
請求項
1~4の何れかの方法。
【請求項6】
前記メモリの指定された領域は、メモリの暗号化された領域である、
請求項5の方法。
【請求項7】
前記イベント処理情報は、タスク優先度レジスタ(TPR)情報を含む、
請求項
5又は6の方法。
【請求項8】
ゲストプログラムを実行するように構成されたプロセッサコアと、
プロセッサイベントの指標を前記ゲストプログラムに提供するように構成されたハイパーバイザと、を備え、
前記ゲストプログラムは、前記プロセッサイベントの指標を受信したことに応じて、メモリの指定された領域でイベント処理情報にアクセスし、前記イベント処理情報に基づいて前記プロセッサイベントを処理するように構成されている、
プロセッサ。
【請求項9】
前記ゲストプログラムは、前記プロセッサイベントの指標を受信するように構成されたセキュア層と、非セキュア層と、を含む、
請求項
8のプロセッサ。
【請求項10】
前記セキュア層は、前記イベント処理情報にアクセスするように構成されている、
請求項
9のプロセッサ。
【請求項11】
前記プロセッサイベントの指標を受信することは、前記プロセッサのイベントインタフェースで前記指標を受信することを含む、
請求項
9又は10のプロセッサ。
【請求項12】
前記メモリの指定された領域は、前記ハイパーバイザからアクセスすることができないメモリの領域を含む、
請求項
8~11の何れかのプロセッサ。
【請求項13】
前記メモリの指定された領域は、メモリの暗号化された領域である、
請求項
12のプロセッサ。
【請求項14】
前記イベント処理情報は、タスク優先度レジスタ(TPR)情報を含む、
請求項
13のプロセッサ。
【国際調査報告】