JP6397500B2 - 仮想マシン・マネージャーによって支援される選択的コード完全性強制 - Google Patents

仮想マシン・マネージャーによって支援される選択的コード完全性強制 Download PDF

Info

Publication number
JP6397500B2
JP6397500B2 JP2016543935A JP2016543935A JP6397500B2 JP 6397500 B2 JP6397500 B2 JP 6397500B2 JP 2016543935 A JP2016543935 A JP 2016543935A JP 2016543935 A JP2016543935 A JP 2016543935A JP 6397500 B2 JP6397500 B2 JP 6397500B2
Authority
JP
Japan
Prior art keywords
code
memory
virtual machine
execution
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016543935A
Other languages
English (en)
Other versions
JP2016535373A (ja
JP2016535373A5 (ja
Inventor
ヘプキン,デーヴィッド・エイ
ジョンソン,ケネス・ディー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2016535373A publication Critical patent/JP2016535373A/ja
Publication of JP2016535373A5 publication Critical patent/JP2016535373A5/ja
Application granted granted Critical
Publication of JP6397500B2 publication Critical patent/JP6397500B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

[0001] 計算技術が進歩するに連れて、計算デバイスは増々相互接続されつつある。この相互接続は多くの便益を与えるが、その問題がない訳ではない。このような問題の1つは、計算デバイスが悪意のプログラムに増々晒されることである。悪意のプログラムは、計算デバイスから情報を盗み、計算デバイスを使用不可にし、計算デバイスを使用して他の計算デバイスに対して攻撃を始める等によって、異なる方法で動作する可能性がある。計算デバイスを悪意のプログラムから保護するために開発された技法もあるが、このような悪意のプログラムは残っており、ユーザーのコンピューターに感染したとき、苛立たしいユーザー体験を招く可能性がある。
[0002] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を限定するために使用されることを意図するのでもない。
[0003] 1つ以上の形態によれば、仮想マシンの仮想プロセッサーによって実行される実行可能コードを含むメモリー・ページが識別され、仮想マシンは仮想マシン・マネージャーによって管理される。メモリー・ページがカーネル・モードで実行可能にするべきか否かについて判定を行う。メモリー・ページがカーネル・モードで実行可能にするべきであると判定したことに応答して、実行可能コードのコード完全性チェックが実行され、コード完全性チェックが実行可能コードを確認した場合にのみ、実行可能コードの実行が、カーネル・モードに対して許される。メモリー・ページがカーネル・モードで実行可能にするべきでないと判定したことに応答して、仮想マシンのオペレーティング・システムは、実行可能コードの実行を許すか否か判定することができる。
[0004] 1つ以上の形態によれば、計算デバイスは、オペレーティング・システム、仮想マシン・マネージャー、およびプロセッサーを含む。プロセッサーは、仮想マシン・マネージャーに、メモリー・ページのカーネル・モード実行を、上位特権エンティティによって完全性が確認されたコードを有するメモリー・ページに制限させるように構成され、上位の特権エンティティはオペレーティング・システムよりも多くの特権が与えられる。しかし、プロセッサーは、メモリー・ページにおけるコードの完全性が上位特権エンティティによって確認されたか否かには関係なく、メモリー・ページのユーザー・モード実行を許すように構成される。
[0005] 同様の特徴を指すために、図面にわたって同じ番号を使用する。
図1は、1つ以上の実施形態にしたがって、本明細書において説明する技法を実現する計算デバイス例を示すブロック図である。 図2は、1つ以上の実施形態にしたがって、本明細書において説明する、仮想マシン・マネージャーによって支援される選択的コード完全性強制技法を実現するシステム例を示す。 図3は、1つ以上の実施形態にしたがって、仮想マシン・マネージャーによって支援される選択的コード完全性強制を実施するプロセス例を示すフローチャートである。 図4は、1つ以上の実施形態にしたがって、仮想マシン・マネージャーによって支援される選択的コード完全性強制を実施する他のシステム例を示す。 図5は、本明細書において説明する種々の技法を実現することができる1つ以上のシステムおよび/またはデバイスを表す計算デバイス例を含むシステム例を示す。
[0011] 本明細書では仮想マシン・マネージャーによって支援される選択的コード完全性強制について説明する。仮想マシンとは、物理デバイスに類似したプログラムを実行することができる物理デバイスのソフトウェア実現例である。仮想マシン、および物理デバイスのハードウェアへのアクセスは、物理デバイスにおける仮想マシン・マネージャーによって管理される。仮想マシンおよび仮想マシン・マネージャー・アクセス・メモリーは、メモリー・ページ(または単にページ)と呼ばれる複数のブロックまたは部分で構成される。コード完全性は、物理デバイスに対する悪意のコードに対抗する保護を促進するために使用される。コード完全性とは、コード完全性ポリシーに基づいて検証される(verify)コード(例えば、バイナリー)の完全性を指す。コード完全性ポリシーに基づいてコードが確認された(verify)場合、コードの完全性が確認されたことになり、コードは実行することが許される。そうでない場合、コードの完全性は確認されず、コードは実行することを許されない。
[0012] プロセッサーは、カーネル・モードまたはユーザー・モードでコードを実行することができる。仮想マシンの仮想プロセッサーがカーネル・モードで実行しているとき、仮想プロセッサーは、仮想マシン・マネージャーによって(または仮想プロセッサーにおいて実行するオペレーティング・システムよりも多くの特権が与えられた他のエンティティによって)完全性が確認されたコードのみを実行する。コードを含むメモリー・ページのコード完全性が確認され、カーネル・モードで実行している仮想プロセッサーは、仮想マシン・マネージャー(または他のもっと特権が与えられたエンティティ)がメモリー・ページにおいてコードのコード完全性を確認した場合にのみ、メモリー・ページにおいてコードを実行することができる。しかしながら、仮想プロセッサーがユーザー・モードで実行しているとき、仮想プロセッサーにおいて実行しているオペレーティング・システムは、コードを実行することができるか否か判定を行う。オペレーティング・システムは、コードをユーザー・モードで実行できるか否か判定するために、種々のポリシーの内任意のもの(例えば、コードの種々の異なるチェックまたは検証の内任意のものを実行する)を適用することができ、任意に、コードのチェックや検証を全く実行せずに、ユーザー・モードでコードを実行することを含む。
[0013] 図1は、1つ以上の実施形態にしたがって、本明細書において説明する技法を実現する計算デバイス例100を示すブロック図である。計算デバイス100は、種々の異なるタイプのデバイスの内任意のものにすることができる。例えば、計算デバイス100は、デスクトップ・コンピューター、サーバー・コンピューター、ラップトップまたはネットブック・コンピューター、タブレットまたはノートパッド・コンピューター、移動局、娯楽用アプライアンス、通信可能にディスプレイ・デバイスに結合されたセット・トップ・ボックス、テレビジョンまたは他のディスプレイ・デバイス、セルラーまたは他のワイヤレス電話機、ゲーム・コンソール、自動車用コンピューター、ウェアラブル・コンピューター等とすることができる。
[0014] 計算デバイス100は、ハイパーバイザーとも呼ばれる仮想マシン・マネージャー102、および1つ以上のコンポーネント104を含む。仮想マシン・マネージャー102は、コンポーネント104によって設けられる機能へのアクセスを管理する。あるいは、仮想マシン・マネージャー102は、ホスト・オペレーティング・システム(図示せず)においても実行することができ、この場合、ホスト・オペレーティング・システムが、コンポーネント104によって設けられる機能へのアクセスを管理する。
[0015] コンポーネント104は、種々の異なるプロセッサー・コンポーネント、入力/出力(I/O)コンポーネント、および/または他のコンポーネントまたはデバイスとすることができる。例えば、コンポーネント104は、1つ以上のプロセッサーまたはプロセッサー・コア、1つ以上のメモリー・コンポーネント(例えば、揮発性および/または不揮発性メモリー)、1つ以上の記憶デバイス(例えば、光および/または磁気ディスク、フラッシュ・メモリー・デバイス)、1つ以上の通信コンポーネント(例えば、有線および/またはワイヤレス・ネットワーク・アダプター)、これらの組み合わせ等を含むことができる。計算デバイス100の一部として図示するが、コンポーネント104の1つ以上(例えば、1つ以上の記憶デバイス)は、計算デバイス100の外部に実装することができる。仮想マシン・マネージャー102を含む、計算デバイス100において実行する種々のコンポーネントまたはモジュールは、コンポーネント104によって設けられるこの機能に直接、および/または他のコンポーネントまたはモジュールを介して間接的にアクセスすることができる。
[0016] 仮想マシン・マネージャー102は、仮想マシン106が計算デバイス100において実行することを許す。1つの仮想マシン106が計算デバイス100内に示されているが、代わりに、複数の仮想マシンが計算デバイス100において実行することもできる。仮想マシンとは、物理計算デバイスと類似するプログラムを実行することができる物理計算デバイス(または他のマシンまたはシステム)のソフトウェア実現例を指す。仮想マシンは、コンポーネント104と同様(であるがそのソフトウェア実現例)である1つ以上の仮想コンポーネントを含む。オペレーティング・システムおよび他のアプリケーションは、仮想コンポーネントを使用して、コンポーネント104を使用して行うかのように、実行することができ、仮想プロセッサーまたは仮想プロセッサー・コアにおいて実行すること、仮想メモリーにアクセスすること等を含む。仮想マシン106において実行するオペレーティング・システムおよび他のアプリケーションは、これらが仮想マシンにおいて実行していることを知る必要はなく、そして通例ではそれを知らない。
[0017] 仮想マシン106は、オペレーティング・システム112、1つ以上のアプリケーション114、および1つ以上の仮想コンポーネント116を含む。オペレーティング・システム112は、1つ以上の仮想プロセッサー、またはコンポーネント116の内1つ以上として含まれるプロセッサー・コアにおいて実行し(run or execute)、アプリケーション114の実行を管理する。
[0018] 仮想マシン・マネージャー102は、仮想マシン(VM)制御モジュール122、およびページ管理モジュール124を含む。仮想マシン制御モジュール122は、仮想コンポーネント116のコンポーネント104に対するマッピングを管理し、物理プロセッサーまたはプロセッサー・コアにおいて実行するための仮想プロセッサーまたはプロセッサー・コアのスケジューリングを含む。ページ管理モジュール124は、どのページがカーネル・モードで実行可能か識別し、任意に、メモリー・ページがカーネル・モードで実行可能であることに関して、コードに対してコード完全性チェックを実行することができる。これについては、以下で更に詳しく説明する。2つの別のモジュールとして示されているが、モジュール122および124の機能を1つのモジュールに組み合わせることができる(例えば、ページ管理モジュール124の機能をVM制御モジュール122に含ませることができる)ことは、注記してしかるべきである。
[0019] オペレーティング・システム112および仮想マシン・マネージャー102は、メモリー・ページ(または単にページ)と呼ばれる複数のブロックまたは部分で構成されるメモリーの格納およびメモリーへのアクセスを管理する。メモリーは、例えば、揮発性メモリー(例えば、RAM)または不揮発性メモリー(例えば、フラッシュ・メモリー)のような、CPU(中央処理ユニット)アドレス可能なメモリーの内任意のものとすることができる。異なるプログラムにメモリー・ページを割り当てることができ、これらのプログラムはアプリケーション114、オペレーティング・システム112のプログラム、あるいは他のコンポーネントまたはモジュールとすることができる。
[0020] オペレーティング・システム112および仮想マシン・マネージャー102は、リード・アクセス、ライト・アクセス、および実行アクセスというような、プログラムによるメモリー・ページへの異なるタイプのアクセスを許すことができる。リード・アクセス(リード許可とも呼ぶ)がメモリー・ページに与えられた場合、このメモリー・ページのコンテンツを読み出す(例えば、特定の1つ以上のプログラムに)ことが許される。ライト・アクセス(ライト許可とも呼ぶ)がメモリー・ページに与えられた場合、このメモリー・ページにコンテンツを書き込む(例えば、特定の1つ以上のプログラムによって)ことが許される。実行アクセス(実行許可とも呼ぶ)がメモリー・ページに与えられると、このメモリー・ページに(in)格納されている(上(on)に格納されているとも言う)コードを実行することが許される。
[0021] オペレーティング・システム112および/またはオペレーティング・システム112よりも多くの特権が与えられたエンティティ(例えば、仮想マシン・マネージャー102)は、少なくとも部分的に、メモリー・ページ上におけるコードのコード完全性を検証することに基づいて、メモリー・ページに実行許可を与えるか否か判定することができる。コード完全性を検証するとは、コード完全性ポリシーに基づいて、コード(例えば、バイナリーまたはその一部)の完全性を検証することを言う。種々の異なるコード完全性ポリシーを使用することができ、つまり種々の異なるやり方でコードの完全性を検証することができる。コード完全性ポリシーに基づいてコードの完全性が確認された場合、コード完全性が確認され、コードは実行することが許される。しかしながら、コード完全性ポリシーに基づいてコードの完全性が確認されない場合、コード完全性は確認されず、コードは実行することが許されない。
[0022] 1つ以上の実施形態では、コード完全性ポリシーは、コードの出所(origin)(例えば、コードにディジタル的に署名したエンティティ)を識別するディジタル証明書を使用してコードが署名されていることに基づいて、コードの完全性が確認され、そのコードに対して信頼チェーンが作られた(establish)ことを示す。コードおよび暗号鍵に基づいてディジタル署名を生成することによって、コードに署名される。暗号鍵(または公開/秘密鍵対の秘密鍵のような対応する鍵)がないと、暗号鍵を使用して検証することができる署名を作成することは、計算的に非常に難しい。しかしながら、暗号鍵(または公開/秘密鍵対の公開鍵のような、対応する鍵)を有する任意のエンティティは、この鍵を使用して、鍵、署名、および署名されたコードに対して適したディジタル署名検証アルゴリズムを実行することによって、ディジタル署名を検証することができる。ディジタル署名がコードに基づくので、コードに対する変更はいずれも、ディジタル署名が確認されない結果となる。つまり、ディジタル証明書は、コードを検証するエンティティに、コードがディジタル的に署名された後にコードが変更されていないことを確認することを可能にする。
[0023] コードを検証するエンティティ(例えば、オペレーティング・システム112または仮想マシン・マネージャー102)は、1つ以上の信頼されたエンティティを識別する。これらの信頼されたエンティティは、検証エンティティにおいて予め構成される、計算デバイス100のアドミニストレーターによって提供される、または任意の場所で得られるというように、異なるやり方で識別することができる。信頼されたエンティティおよび1つ以上の他のエンティティを識別する信頼チェーンを作ることができる。信頼チェーンとは、コードにディジタル的に署名したエンティティから始まり、コードを検証するエンティティによって信頼されたエンティティで終わる一連のエンティティを指す。このチェーンには、任意の数の追加のエンティティを含むことができ、各エンティティが、チェーンにおける直前のエンティティをそれが信頼することを検証する。例えば、コードを検証するエンティティによって信頼されていないエンティティAによってコードが署名されたが、エンティティDはコードを検証するエンティティによって信頼されていると仮定する。信頼チェーンは、コードにディジタル的に署名したエンティティA、エンティティBがエンティティAを信頼することを検証するディジタル証明書を与えるエンティティB、エンティティCがエンティティBを信頼することを検証するディジタル証明書を与えるエンティティC、およびエンティティDがエンティティCを信頼することを検証するディジタル証明書を与えるエンティティDを含むことができる。
[0024] 信頼チェーンが確認され、コードが変更されていない場合、コード完全性チェックは成功する。即ち、コードの完全性が確認され、コードは実行することが許される。しかしながら、信頼チェーンが確認されない場合、および/またはコードが変更されている場合、コード完全性チェックは失敗となる。即ち、コードの完全性は確認されず、コードは実行することが許されない。
[0025] あるいは、コードの完全性を他のやり方で検証することもできる。例えば、コードを検証しているエンティティによって、またはこのエンティティの指令でコードを生成することができる。コード完全性ポリシーは、このようなコードが、エンティティによって確認されると自動的に処理され、そしてこのようなコードに対するコード完全性チェックは成功する(コードの完全性が確認され、コードは実行することを許される)ことを示すことができる。他の例として、コード完全性ポリシーによって示される種々の他の規則または判断基準にしたがって分析することによって、コードを検証することができる。このコードの分析が、コード完全性ポリシーが満たされたことを判定した場合、コードは確認され、コード完全性チェックは成功する(コードの完全性が確認され、コードは実行することが許される)。しかしながら、コードの分析が、コード完全性ポリシーが満たされなかったことを判定した場合、コードは確認されず、コード完全性チェックは失敗となる(コードの完全性は確認されず、コードは実行することが許されない)。
[0026] 1つ以上の実施形態では、プログラムのコードは、複数のメモリー・ページに格納することができ、これら複数のページに対するコード完全性チェックが全体として実行される。プログラムのコードに対するコード完全性チェックが実行され、このコード完全性チェックが成功した場合、コードが格納されている複数のメモリー・ページの全てに実行許可が与えられる。しかしながら、コード完全性チェックが失敗した場合、コードが格納されている複数のメモリー・ページのいずれにも実行許可は与えられない。
[0027] あるいは、プログラムのコードが格納されている複数のページの各々に対してコード完全性チェックを個々に、そして複数のページの他のものに格納されているコードに対するコード完全性チェックとは独立して、実行することもできる。例えば、複数のメモリー・ページの1つにおいてコードを実行しようとする試みに応答して、そのメモリー・ページ上において少なくともこのコードに対してコード完全性チェックを実行し、コード完全性チェックが失敗か成功かに基づいて、実行許可をこのメモリー・ページに与えるか、または与えない。
[0028] 計算デバイス100の1つ以上のプロセッサーは、複数の異なるモードでのコードの実行をサポートする。これらのモードは、カーネル・モード(カーネル−モード、スーパーバイザー・モード、またはスーパーバイザー−モードとも呼ばれる)およびユーザー・モード(ユーザー−モードとも呼ばれる)と呼ばれる。アプリケーション114は、通例、ユーザー・モードで実行し、オペレーティング・システム112は、カーネル・モードで実行するいくつかのコア・コンポーネントと、ユーザー・モードで実行する他のコンポーネントとを含むことができる。ユーザー・モードは、カーネル・モードよりも与えられる特権が少ない(即ち、制限が多い)。仮想コンポーネント116との通信を容易にするためにオペレーティング・システム112にインストールされたまたはそれ以外で含まれるドライバーは、ユーザー・モードまたはカーネル・モードで実行することができる。カーネル・モードおよびユーザー・モードの使用によって、ユーザー・モードで実行するコードが、カーネル・モードで実行するコードによって使用されるメモリーにアクセスすることを禁止するコードをプロセッサーが実行することによってというようにして、カーネル・モードで実行するコードに追加の保護を設ける。
[0029] ここではカーネル・モードおよびユーザー・モードと呼ぶが、代わりに、1つ以上の追加のモードが、計算デバイス100のプロセッサーによってサポートされてもよい。このような状況では、本明細書において説明するモードをカーネル・モードおよび非カーネル・モードと呼ぶことができ、カーネル・モード以外のモードは、本明細書において説明したユーザー・モードに類似して処理される。あるいは、本明細書において説明したモードをユーザー・モードおよび非ユーザー・モードと呼ぶこともでき、ユーザー・モード以外のモードは、本明細書において説明したカーネル・モードに類似して処理される。
[0030] 図2は、本明細書において説明する、仮想マシン・マネージャーによって支援される選択的コード完全性強制技法を実現するシステム例200を示す。システム200は、仮想マシン106において実行するオペレーティング・システム112、およびより多くの特権が与えられるエンティティ204の一部であるコード完全性検証モジュール202を含む。コード完全性検証モジュール202は、任意に、図1の仮想マシン・マネージャー102において実行するページ管理モジュール124に含むことができる。コード完全性検証モジュール202は、仮想プロセッサーがカーネル・モードで動作しているときにこの仮想プロセッサーが実行することを望むコードに対してコード完全性検証を実行し、コードに対するコード完全性検証が成功か失敗かを示すカーネル・モード・コード検証結果206を与える。コード完全性検証が成功した場合、コードをカーネル・モードで実行することができ、コード完全性検証が失敗した場合、コードをカーネル・モードで実行することができない。
[0031] 上位(higher)特権エンティティ204とは、オペレーティング・システム112よりも多い特権が与えられた(制限が少ない)エンティティを指す。上位特権エンティティ204は、図1の仮想マシン・マネージャー102とすることができる。代わりに、上位特権エンティティ204は、オペレーティング・システム112のカーネル・モードよりも上位の特権であるセキュア・モード(例えば、仮想マシン・マネージャー102によって管理されるセキュア・モード)で実行する仮想プロセッサーのような、1つ以上の他のエンティティとすることができる。上位特権エンティティは、ソフトウェア、ファームウェア、および/またはハードウェアとして実現することができる。上位特権エンティティ204が仮想マシン・マネージャー以外のエンティティである状況では、カーネル・モード・コード検証結果206を仮想マシン・マネージャーに供給することができ、仮想マシン・マネージャーが、完全性が確認されしたがってカーネル・モードで実行することができるコードを識別するレコードを維持することを可能にする。
[0032] オペレーティング・システム112は、ポリシー強制モジュール208を含む。ポリシー強制モジュール208は、仮想プロセッサーがユーザー・モードで動作しているときに仮想プロセッサーが実行することを望むコードを実行することができるか否か判定するための1つ以上のポリシーを実施する。種々の異なるポリシーは、コード完全性検証モジュール202に類似したコード完全性検証を実行し、コードまたはオペレーティング・システム112の他の特性をチェックする等というように、ポリシー強制モジュール208によって実施することができる。ポリシー強制モジュール208によって実施されるポリシーは、ユーザー・モードで全てのコードを実行するためであることもできる(例えば、コード完全性チェックまたは他の検証を全く実行することなく、ユーザー・モードでコードを実行する)。ポリシー強制モジュール208は、仮想プロセッサーがユーザー・モードで動作しているときに、コードに対してポリシーを適用し、ポリシーが満たされるか(ポリシー・チェックが成功する)または満たされないか(ポリシー・チェックが失敗する)を示すポリシー強制結果210を供給する。ポリシー・チェックが成功した場合、ユーザー・モードでコードを実行することができ、ポリシー・チェックが失敗した場合、ユーザー・モードでコードを実行することはできない。
[0033] このように、より多くの特権が与えられたエンティティ204は、カーネル・モードのページに対するコード完全性検証を実行し(コード完全性を強制する)、一方仮想マシン106におけるオペレーティング・システム112は、ユーザー・モードのページに対するポリシー・チェックを実行する(ポリシーを強制する)。1つ以上の実施形態では、ポリシー強制モジュール208は、オペレーティング・システム112のカーネル・モード・コードで実装される。このように、ユーザー・モードで実行するコードに対するポリシー・チェックは、カーネル・モードで実行するコードによって行われ、カーネル・モードで実行するコードのコード完全性は、仮想マシン・マネージャー10または他のより多くの特権が与えられたエンティティによって確認されている。
[0034] このように、仮想マシン・マネージャー102は、カーネル・モードにおけるコードの実行を、上位特権エンティティ204によって確認されたコードに制限することができるが、ユーザー・モードにおけるコードの実行は、仮想マシン106において実行するオペレーティング・システム112によって別に制御される。オペレーティング・システム112は、ポリシー強制モジュール208の構成に基づいて、そして上位特権エンティティ204によって実行されるコード完全性検証とは独立して、任意のコード検証および/または他のポリシー・チェックを実行する。
[0035] つまり、本明細書において説明する技法は、仮想マシン・マネージャーが、オペレーティング・システム112の不正利用された(compromised)コードがカーネル・モードで実行することを防止することにより、追加のレベルのセキュリティを設ける。しかしながら、同時に、本明細書において説明する技法は、ユーザー・モードで実行するコードのコード完全性を検証することを可能とし、および/またはオペレーティング・システム112によって実施される他のポリシーを適宜可能にする。オペレーティング・システム112は、ユーザー・モードで実行するコードに対してポリシーを設定し、オペレーティング・システム112が、コード検証が実行されない状況をサポートすることを可能にする。例えば、オペレーティング・システム112は、あるコードが検証されることなくユーザー・モードで実行させること、またはユーザー・モードで実行するあるコードのために動的コード生成を実行させることを望む場合がある。このような判定は、オペレーティング・システム112によって行うことができるのは、全て、仮想マシン・マネージャー102(または他の上位特権エンティティ)によってオペレーティング・システム112のコード完全性が確認されたので、オペレーティング・システム112は不正利用されていないことを、計算デバイス100のユーザーが保証されている間である。
[0036] 図3は、1つ以上の実施形態にしたがって、仮想マシン・マネージャーによって支援される選択的コード完全性強制を実施するプロセス例300を示すフローチャートである。プロセス300は、図1および図2の仮想マシン・マネージャー102のような、仮想マシン・マネージャーによって少なくとも部分的に実行され、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせで実装することができる。プロセス300は、1組のアクトとして示され、種々のアクトの動作を実行するために示される順序には限定されない。プロセス300は、仮想マシン・マネージャーによって支援される選択的コード完全性強制を実施するプロセス例であり、仮想マシン・マネージャーによって支援される選択的コード完全性強制を実施することについての追加の説明が、異なる図を参照して本明細書に含まれる。
[0037] プロセス300において、仮想プロセッサーによって実行される実行可能コードを含むメモリー・ページを識別する(アクト302)。メモリー・ページは、異なる時点において、そして、仮想マシンまたは仮想マシンによって管理されるオペレーティング・システムによるメモリー・ページを実行可能にする要求、仮想マシンまたは仮想マシンによって管理されるオペレーティング・システムによる、プログラムを仮想プロセッサーによって実行させる要求等のような、異なるイベントに応答して識別することができる。
[0038] メモリー・ページがカーネル・モードで実行可能にすべきか否かについて判定を行う(アクト304)。この判定は、メモリー・ページを実行可能にする要求を行うときに、仮想マシンまたはオペレーティング・システムによって識別されるというように、種々のやり方で行うことができる。
[0039] メモリー・ページがカーネル・モードで実行可能にすべきであると判定したことに応答して、実行可能コードのコード完全性チェックを、上位特権エンティティによって実行する(アクト306)。上位特権エンティティとは、先に説明したように、仮想マシンによって管理されるオペレーティング・システムよりも多くの特権を与えられたエンティティである。このより多くの特権を与えられたエンティティは、先に説明したように、仮想マシン・マネージャー、または他のエンティティとすることができる。コード完全性チェックは、先に説明したように種々のやり方でコード完全性ポリシーに基づいてコードの完全性を検証することによって、例えば、信頼チェーンが検証されること、およびコードが変更されていないことをディジタル署名が検証することに基づいて、コードを検証することによって行われる。コード完全性チェックが実行可能コードを確認した場合にのみ、メモリー・ページにおける実行可能コードの実行は許される(アクト308)。メモリー・ページにおける実行可能コードの実行は、例えば、仮想マシン・マネージャーが、アクト302において識別されたメモリー・ページに実行許可を与えることによって、許すことができる。
[0040] アクト304に戻り、メモリー・ページはカーネル・モードで実行可能にすべきでないと判定したことに応答して、仮想マシン・マネージャーによって管理される仮想マシンのオペレーティング・システムは、オペレーティング・システムのポリシーに基づいて、実行可能コードの実行を許すか否か判定することを許される(アクト310)。オペレーティング・システムは、先に説明したように、コード完全性チェックを含む、コードを実行すべきか否か判定する種々の異なるポリシーを実施することができる。
[0041] アクト302における、メモリー・ページを実行可能にする要求は、仮想マシン・マネージャーに、または代わりに上位特権エンティティ(例えば、図2の上位特権エンティティ204)に向けて送ることができる。1つ以上の実施形態では、仮想マシン・マネージャーが上位特権エンティティである場合、要求は仮想マシン・マネージャーに向けて送られ、仮想マシン・マネージャーがアクト306においてコード完全性チェックを実行する。しかしながら、他のエンティティが上位特権エンティティである場合、要求はその上位特権エンティティに(例えば、直接または仮想マシン・マネージャーを介して)向けて送られ、この上位特権エンティティがアクト306においてコード完全性チェックを実行し、アクト306におけるコード完全性チェックが実行可能コードを確認した場合、上位特権エンティティは、仮想マシン・マネージャーに、メモリー・ページをカーネル・モードで実行可能にすることを通知する。仮想マシン・マネージャーは、例えば、以下で更に詳しく説明するように、第2レベル・アドレス変換表を更新することによって、メモリー・ページをカーネル・モードで実行可能にすることができる。
[0042] このように、仮想マシン・マネージャーは、選択的コード完全性強制を支援する。カーネル・モード・コードのコード完全性は、仮想マシン・マネージャーによって強制され(または仮想マシン・マネージャーを利用する他の上位特権エンティティ)、一方ユーザー・モード・コードのコード完全性の強制は、仮想マシン・マネージャーによって管理される仮想マシンにおいて実行するオペレーティング・システムに任せられる。
[0043] 図1に戻り、1つ以上の実施形態では、計算デバイス100は仮想メモリーを採用する。仮想メモリーとは、他のアドレス空間(例えば、物理メモリー)にマッピングされるアドレス空間を指す。アプリケーションには仮想メモリー空間が割り当てられ、この仮想アドレス空間において、アプリケーション・コードが実行され、データーが格納される。メモリー・マネージャー(例えば、プロセッサーの)は、仮想メモリー空間における仮想メモリー・アドレスの、他のメモリー空間におけるアドレスへのマッピングを管理する。仮想メモリー・アドレス空間から他のメモリー空間に仮想メモリー・アドレスをマッピングするとき、アドレス変換が実行される。アドレス変換表が、このマッピングを実行するために使用され、本明細書において説明する技法を実現するために利用することができる。
[0044] 1つ以上の実施形態では、アドレス変換表は、計算デバイス100のコンポーネント104である物理プロセッサーによってというように、ハードウェアで実装される。アドレス変換表は、仮想マシン・マネージャー102が、以下で更に詳しく説明するように、選択的にコード完全性を強制することを可能にする。あるいは、計算デバイス100のハードウェア(例えば、コンポーネント104である物理プロセッサー)が種々の他の表、リスト、レコード、構造等を使用して、仮想マシン・マネージャー102に選択的にコード完全性を強制させることもできる。あるいは、ソフトウェアで実装される種々の他の表、リスト、レコード、構造等(例えば、仮想マシン・マネージャー102の一部として、または計算デバイス100の他のコンポーネントまたはモジュールの一部として)を使用して、仮想マシン・マネージャー102に選択的にコード完全性を強制させることもできる。
[0045] 図4は、1つ以上の実施形態にしたがって、仮想マシン・マネージャーによって支援される選択的コード完全性強制を実施するシステム例400を示す。システム400は、例えば、図1の計算デバイス100とすることができる。システム400は、物理プロセッサー402、物理メモリー空間404、仮想プロセッサー406、およびプログラム408を含む。物理プロセッサー402は、図1のコンポーネント104とすることができ、物理メモリー空間404は、図1のコンポーネント104とすることができ、仮想プロセッサー406は図1の仮想コンポーネント116とすることができ、プログラム408は図1のアプリケーション114またはオペレーティング・システム112の一部とすることができる。物理プロセッサー402は、物理メモリー空間404へのアクセスを管理するメモリー・マネージャー410を含む。物理メモリー空間404は、RAM、フラッシュ・メモリー等のような、種々の揮発性および/または不揮発性メモリーとすることができる。
[0046] 物理プロセッサー402は、仮想マシン・メモリー空間412を仮想プロセッサー406に割り当て、第2レベル・アドレス変換表414を維持する。第2レベル・アドレス変換表414は、仮想マシン・メモリー空間412におけるアドレスを物理メモリー空間404におけるアドレスにマッピングする。所与の時点において、物理メモリー空間404のどのアドレスに、仮想マシン・メモリー空間412における特定のアドレスがマッピングするかは、変化することができ、メモリー・マネージャー410によって制御される。メモリー・マネージャー410は、マッピングを変化させることができ、複数の異なる仮想プロセッサーが物理メモリー空間404を共有することを可能にし、および/または種々の公開および/または企業固有の技法の内任意のものを使用して、仮想マシン・メモリー空間412が物理メモリー空間404よりも大きくなることを可能にする。
[0047] 仮想プロセッサー406は、仮想マシン・メモリー空間412へのアクセスを管理するメモリー・マネージャー416を含む。仮想プロセッサー406は、プログラム・メモリー空間418をプログラム408に割り当て、第1レベル・アドレス変換表420を維持する。第1レベル・アドレス変換表420は、プログラム・メモリー空間418におけるアドレスを仮想マシン・メモリー空間412におけるアドレスにマッピングする。任意の所与の時点において、仮想マシン・メモリー空間412のどのアドレスに、プログラム・メモリー空間418における特定のアドレスがマッピングするのかは、変化することができ、メモリー・マネージャー416によって制御される。メモリー・マネージャー416は、マッピングを変化させることができ、複数の異なるプログラムが仮想マシンのメモリー空間412を共有することを可能にし、および/または種々の公開および/または企業固有の技法の内任意のものを使用して、プログラム・メモリー空間418が仮想マシン・メモリー空間412よりも大きくなることを可能にする。
[0048] プログラム・メモリー空間418におけるアドレスへのアクセスに応答して、メモリー・マネージャー416は第1レベル・アドレス変換表420を使用して、プログラム・メモリー空間418におけるメモリー・アドレスを、仮想マシン・メモリー空間412におけるアドレスに変換する。オペレーティング・システムによって実行されるプログラム408のコードのアドレス、読み取ろうとするデーターがプログラム408によって格納されるアドレス、プログラム408によって書き込まれようとするデーターが格納されるアドレス等のように、アクセスは種々の異なる形態を取ることができ、
[0049] 同様に、仮想マシン・メモリー空間412におけるアドレスへのアクセスに応答して、メモリー・マネージャー410は、第2レベル・アドレス変換表414を使用して、仮想マシン・メモリー空間412におけるメモリー・アドレスを物理メモリー空間404におけるアドレスに変換する。アクセスは、仮想プロセッサー406によって実行が管理されるオペレーティング・システム・コア(例えば、カーネル)のコードのアドレス、オペレーティング・システムによって実行されるプログラム408のアドレス、読み取られるデーターがプログラム408またはオペレーティング・システム・コアによって格納されるアドレス、プログラム408またはオペレーティング・システム・コアによって書き込まれるデーターが格納されるべきアドレス等のように、種々の異なる形態を取ることができる。
[0050] 1つ以上の実施形態では、第1レベル・アドレス変換表420および第2レベル・アドレス変換表414は、個々のアドレスではなく、アドレスのページをマッピングする。例えば、第1レベル・アドレス変換表420は、プログラム・メモリー空間418のページを仮想マシン・メモリー空間412のページにマッピングし、第2レベル・アドレス変換表414は、仮想マシン・メモリー空間412のページを物理メモリー空間404のページにマッピングする。あるいは、表414および/または表420は、個々に、または他のアドレスのサブページ集合体、複数のページの集合体等のように、他の分類(grouping)に基づいてアドレスをマッピングすることもできる。
[0051] 仮想プロセッサー406は、カーネル・モードまたはユーザー・モードで実行することができる。メモリー・マネージャー416は、カーネル・モードで実行することができるメモリー・ページのレコードを維持することができる。このレコードは、第1レベル・アドレス変換表420の一部として含めることができ、または代わりに他のやり方で維持することもできる。メモリー・マネージャー410は、メモリー・ページのレコードを、カーネル・モードで実行することができる仮想マシン・メモリー空間412に維持する。このレコードは、第2レベル・アドレス変換表414の一部として含めることができ、また代わりに他のやり方で維持することもできる。
[0052] 仮想プロセッサー406においてコードを実行するためにアクセスが行われると、実行されるコードのアドレスが第1レベル・アドレス変換表420によって変換されて、仮想マシン・メモリー空間412における変換アドレスが得られ、次いでこの変換アドレスが第2レベル・アドレス変換表414によって変換されて、物理メモリー空間404におけるアドレスが得られる。仮想プロセッサー406がユーザー・モードで動作している間にアクセスが行われた場合、仮想プロセッサー406において実行しているオペレーティング・システムは、コードを実行できるか否か判定するときにしかるべきポリシーを適用する。
[0053] しかしながら、仮想プロセッサーがカーネル・モードで動作しているときにアクセスが行われた場合、カーネル・モードに対する実行許可がページに与えられているか否かについてチェックを行う。カーネル・モードに対する実行許可が既にページに与えられているか否かの記録は、任意に、第2レベル・アドレス変換表414に維持することができ、または代わりに物理プロセッサー402によってどこかに維持することができる。このような状況では、カーネル・モードに対する実行許可が既にページに与えられている場合、カーネル・モードに対する実行許可がページに与えられているという指示を仮想プロセッサー406に返すことができ、仮想プロセッサー406において実行しているオペレーティング・システムは、仮想プロセッサー406がカーネル・モードにある間に、コードが実行することを許す。
[0054] カーネル・モードに対する実行許可が未だページに与えられていない場合、仮想プロセッサー406において実行しているオペレーティング・システムは、任意に、ページをカーネル・モードで実行可能にすることを要求することができる。仮想プロセッサー406は、先に説明したように、コード完全性チェックを実行する仮想マシン・マネージャー(または他の上位特権エンティティ)に要求を渡す。コード完全性チェックが成功した場合、ページにはカーネル・モードに対する実行許可が与えられ、コード完全性チェックが失敗した場合、ページにはカーネル・モードに対する実行許可が与えられない。
[0055] 1つ以上の実施形態では、カーネル・モードに対する実行許可を、ユーザー・モードに対する実行許可またはポリシーとは別に指定することを可能にするために、第2レベル・アドレス変換表414に属性が含まれる。この属性は、種々の異なるやり方で第2レベル・アドレス変換表414にエンコードすることができるが、以下の3つの特性を含む。第1に、第2レベル変換毎に独立して属性を制御できるように、第2レベル・アドレス変換表に属性を組み入れる(第2レベル・アドレス変換表414を使用してメモリー・マネージャー410によって実行される各変換)。第2に、属性はカーネル・モード実行許可に適用される。属性は、カーネル・モードにおける(そしてユーザー・モードにおける)リードおよび/またはライト許可に影響を及ぼす必要はない(が、あるいは影響を及ぼすこともできる)。第3に、属性は、ユーザー・モード実行から独立して、カーネル・モード実行を使用不可にさせて、少なくとも以下の2つの実行の組み合わせを許す。1)カーネル・モードでの実行を許さないが、ユーザー・モードでの実行を許す。2)カーネル・モードでの実行を許さず、ユーザー・モードでの実行も許さない。
[0056] 少なくとも1つの属性を第2レベル・アドレス変換表414に種々の異なるやり方で含めることができる。例えば、第2レベル・アドレス変換表における各エントリが2ビットを含みことができ、1ビットがユーザー・モード実行に対応し、1ビットがカーネル・モード実行に対応する。ユーザー・モード・ページに対応するビットには、ユーザー・モードでページにおいてコードを実行する許可が与えられたことを示すために1つの値(例えば、「1」の値を割り当てる。ビットがセットされたとも言う)を割り当てることができ、ユーザー・モードでページにおいてコードを実行する許可が与えられないことを示すために他の値(例えば、「0」の値を割り当てる。ビットがクリアされたとも言う)を割り当てることができる。同様に、カーネル・モード実行に対応するビットには、カーネル・モードでページにおいてコードを実行する許可が与えられたことを示すために、1つの値を割り当てることができ(例えば、「1」の値を割り当てる。ビットがセットされたとも言う)、カーネル・モードでページにおいてコードを実行する許可が与えられないことを示すために、他の値を割り当てることができる(例、「0」の値を割り当てる。クリアされたビットとも呼ぶ)。
[0057] 1つ以上の実施形態では、第2レベル・アドレス変換表414において、メモリー・ページに対する初期値またはデフォルト値は、カーネル・モードに対する実行を許さない(実行許可が与えられない)が、ユーザー・モードに対する実行を許す(実行許可が与えられる)。メモリー・ページにおけるコードのコード完全性が仮想マシン・マネージャー(または他のより多くの特権が与えられたエンティティ)によって確認されている場合、そのページに対してはユーザー・モードだけでなくカーネル・モードの実行も許す(実行許可が与えられる)ように、メモリー・ページに対する値を変更することができる。しかしながら、メモリー・ページにおけるコードのコード完全性がオペレーティング・システムによるコード完全性チェックに失敗した場合、オペレーティング・システムは、任意に、そのページに対してユーザー・モードに対する実行を許さない(実行許可が与えられない)ように、メモリー・ページに対する値を変更する(または仮想マシン・マネージャーが変更することを要求する)ことができる。
[0058] 尚、第2レベル・アドレス変換表414は、図1の仮想マシン・マネージャー102のような、仮想マシン・マネージャーの制御下にあることは注記してしかるべきである。第2レベル・アドレス変換表414は、仮想マシンにおいて実行するソフトウェア(例えば、図1の仮想マシン106のアプリケーション114またはオペレーティング・システム112)によってアクセス可能ではない。仮想マシンにおけるオペレーティング・システムは、その第1レベル・アドレス変換表に対して直接制御を行い、仮想マシン・マネージャーは、第2レベル・アドレス変換表に対して排他的制御を行う。つまり、第2レベル・アドレス変換表においてカーネル・モード実行の制御を行うことにより、仮想マシン・マネージャーは効率的にそして容易にこの制御を使用して、第1レベル・アドレス変換表のオペレーティング・システムの管理とは独立して、カーネル・モード実行アクセスを付与するまたは拒否することができる。第2レベル・アドレス変換表においてカーネル・モード・コードの実行を制限する能力を有することにより、仮想マシン・マネージャーは、仮想マシンにおけるオペレーティング・システムによって実行される第1レベル・アドレス変換表の更新にそれ自体を直接巻き込むことなく、そのコード完全性ポリシーを強制することができる。
[0059] また、以上では第1および第2レベル・アドレス変換表について説明したが、代わりに、仮想マシン・マネージャー強制コード完全性は、1つのアドレス変換表(例えば、第1レベル・アドレス変換表)を使用してソフトウェアで実現できることも注記してしかるべきである。例えば、仮想マシン・マネージャーが第1レベル・アドレス変換表(例えば、図4の表420)の制御を行い、仮想マシン内部からのオペレーティング・システムが直接第1レベル・アドレス変換表にアクセスすることを禁止することができる。次いで、仮想マシン・マネージャーは、先に説明したポリシーを強制することができる(例えば、仮想マシン・マネージャーは、カーネルによって実行可能なコードは、仮想マシン・マネージャーが確認したコードであることを保証する(ensure)ことができるが、仮想マシン・マネージャーはユーザー・モード・コード実行に対して何ら制限を強制しない)。
[0060] 本明細書では、特定のモジュールを参照して特定の機能について説明したが、本明細書において説明した個々のモジュールの機能は、複数のモジュールに分けることができ、および/または複数のモジュールの少なくとも一部の機能は、1つのモジュールに組み合わせることができることは注記してしかるべきである。加えて、本明細書においてアクションを実行すると説明した特定のモジュールは、そのアクションを実行するその特定のモジュール自体を含み、あるいは代わりに他のコンポーネントを呼び出すまたそうでなければアクセスするその特定のモジュール、またはそのアクションを実行する(またはその特定のモジュールに関連付けてアクションを実行する)モジュールを含む。つまり、アクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、および/またはそのアクションを実行するその特定のモジュールによって呼び出されるまたそうでなければアクセスされる他のモジュールも含む。
[0061] 図5は、本明細書において説明した種々の技法を実現することができる1つ以上のシステムおよび/または計算デバイス502を代表する計算デバイス例502を含むシステム例を、全体的に500で示す。計算デバイス502は、例えば、サービス・プロバイダーのサーバー、クライアントに関連するデバイス(例えば、クライアント・デバイス)、オンチップ・システム、および/または任意の他の適した計算デバイスまたは計算システムであってもよい。
[0062] 図示する計算デバイス例502は、処理システム504、1つ以上のコンピューター読み取り可能媒体506、および1つ以上のI/Oインターフェース508を含み、互いに通信可能に結合されている。図示しないが、計算デバイス502は、更に、種々のコンポーネントを互いに結合するシステム・バスまたは他のデーターおよびコマンド転送システムも含むことができる。システム・バスは、メモリー・バスまたはメモリー・コントローラー、周辺バス、ユニバーサル・シリアル・バス、および/または種々のバス・アーキテクチャーの内任意のものを利用するプロセッサーまたはローカル・バスというような、異なるバス構造の内任意の1つまたはその組み合わせを含むことができる。制御およびデーター・ラインというような、種々の他の例も考えられる。
[0063] 処理システム504は、ハードウェアを使用して1つ以上の動作を実行する機能を表す。したがって、処理システム504は、プロセッサー、機能ブロック等として構成することができるハードウェア・エレメント510を含むことが図示されている。これは、特定用途集積回路、または1つ以上の半導体を使用して形成される他のロジック・デバイスのような、ハードウェアの実現例を含むことができる。ハードウェア・エレメント510は、これらが形成される材料にも、その内部で採用される処理メカニズムにも限定されない。例えば、プロセッサーは、半導体(1つまたは複数)および/またはトランジスター(例えば、電子集積回路(IC))で構成されてもよい。このようなコンテキストでは、プロセッサー実行可能命令は電子的実行可能命令でもよい。
[0064] コンピューター読み取り可能媒体506は、メモリー/ストレージ512を含むことが図示されている。メモリー/ストレージ512は、1つ以上のコンピューター読み取り可能媒体に関連するメモリー/ストレージ容量を表す。メモリー/ストレージ512は、揮発性媒体(ランダム・アクセス・メモリー(RAM)のような)、および/または不揮発性媒体(リード・オンリー・メモリー(ROM)、フラッシュ・メモリー、光ディスク、磁気ディスク等のような)を含むことができる。メモリー/ストレージ512は、固定媒体(例えば、RAM、ROM、固定ハード・ドライブ等)、およびリムーバブル媒体(例えば、フラッシュ・メモリー、リムーバブル・ハード・ドライブ、光ディスク等)を含むことができる。コンピューター読み取り可能媒体506は、以下で更に説明するように、種々の他の方法で構成することができる。
[0065] 入力/出力インターフェース(1つまたは複数)508は、ユーザーにコマンドおよび情報を計算デバイス502に入力させる機能、および種々の入力/出力デバイスを使用してユーザーおよび/または他のコンポーネントまたはデバイスに情報を提示させる機能を代表する。入力デバイスの例には、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロフォン(例えば、音声入力用)、スキャナー、タッチ機能(例えば、物理的タッチを検出するように構成された容量性センサーまたは他のセンサー)、カメラ(例えば、ジェスチャーのようにタッチを伴わない動きを検出するために、赤外線周波数のような、可視または不可視波長を採用するのでもよい)等が含まれる。出力デバイスの例には、ディスプレイ・デバイス(例えば、モニターまたはプロジェクター)、スピーカー、プリンター、ネットワーク・カード、触覚応答デバイス等が含まれる。このように、計算デバイス502は、ユーザーの対話処理をサポートするために、以下で更に説明するように、種々の方法で構成することができる。
[0066] また、計算デバイス502は、仮想マシン・マネージャー514(ハイパーバイザーとも呼ぶ)も含む。仮想マシン・マネージャー514は、仮想マシンが計算デバイス502において実行することを可能にする。仮想マシン・マネージャー514は、例えば、図1または図2の仮想マシン・マネージャー102とすることができる。
[0067] 本明細書では、種々の技法が、ソフトウェア、ハードウェア・エレメント、またはプログラム・モジュールという一般的なコンテキストで説明される場合がある。一般に、このようなモジュールは、ルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データー構造等を含み、特定のタスクを実行するかまたは特定の抽象中層データー型を実装する。「モジュール」、「機能」、および「コンポーネント」という用語が本明細書において使用される場合、一般に、ソフトウェア、ファームウェア、ハードウェア、またはその組み合わせを表す。本明細書において説明した技法の特徴は、プラットフォーム独立ということであり、これらの技法は種々のプロセッサーを有する種々の計算プラットフォームにおいて実現できることを意味する。
[0068] 説明したモジュールおよび技法の実現例が、ある形態のコンピューター読み取り可能媒体に格納されること、または送信されることも可能である。コンピューター読み取り可能媒体は、計算デバイス502によってアクセスすることができる種々の媒体を含むことができる。一例として、そして限定ではなく、コンピューター読み取り可能媒体は「コンピューター読み取り可能記憶媒体」および「コンピューター読み取り可能信号媒体」を含むことができる。
[0069] 「コンピューター読み取り可能記憶媒体」とは、情報の永続的な格納、および/または単なる信号送信、搬送波、または信号自体とは対象的に、有形である格納を可能にする媒体および/またはデバイスを指す。つまり、コンピューター読み取り可能記憶媒体は、非信号支持媒体(non-signal bearing media)を指す。コンピューター読み取り可能記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、論理エレメント/回路、または他のデーターというような情報の格納に適した方法または技術で実現された揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体、および/または記憶デバイスというようなハードウェアを含む。コンピューター読み取り可能記憶媒体の例には、RAM、ROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、ハード・ディスク、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは所望の情報を格納するのに適しておりコンピューターによってアクセスすることができる他の記憶デバイス、有形媒体、または製品を含むことができるが、これらに限定されるのではない。
[0070] 「コンピューター読み取り可能信号媒体」とは、ネットワークを介してというように、命令を計算デバイス502のハードウェアに送信するように構成された信号支持媒体を指す。信号媒体は、通例、搬送波のような変調データー信号、データー信号、または他の移送メカニズムに、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを具体化することができる。また、信号媒体は任意の情報配信媒体も含む。「変調データー信号」という用語は、その特性の1つ以上が、当該信号内に情報をエンコードするようなやり方で設定されたまたは変化させられた信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、および音響、RF、赤外線、および他のワイヤレス媒体のようなワイヤレス・媒体を含む。
[0071] 既に説明したように、ハードウェア・エレメント510およびコンピューター読み取り可能媒体506は、ハードウェア形態で実現される命令、モジュール、プログラマブル・デバイス・ロジック、および/または固定デバイス・ロジックを代表し、本明細書において説明した技法の少なくともある形態を実現するために、ある実施形態において採用することができる。ハードウェア・エレメントは、集積回路またはオンチップ・システムのコンポーネント、特定用途集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、複合プログラマブル・ロジック・デバイス(CPLD)、およびシリコンまたは他のハードウェア・デバイスにおける他の実現例を含むことができる。このコンテキストでは、ハードウェア・エレメントは、実行のために命令を格納するために利用されるハードウェア・エレメントおよびハードウェア・デバイス、例えば、既に説明したコンピューター読み取り可能記憶媒体によって具体化される命令、モジュール、および/またはロジックによって定められるプログラム・タスクを実行する処理デバイスとして動作することができる。
[0072] 以上の組み合わせも、本明細書において説明した種々の技法およびモジュールを実現するために採用されてもよい。したがって、ソフトウェア、ハードウェア、またはプログラム・モジュールおよび他のプログラム・モジュールは、ある形態のコンピューター読み取り可能記憶媒体においておよび/または1つ以上のハードウェア・エレメント510によって具体化される1つ以上の命令および/またはロジックとして実現されてもよい。計算デバイス502は、ソフトウェアおよび/またはハードウェア・モジュールに対応する特定の命令および/または機能を実現するように構成されてもよい。したがって、計算デバイス502によってソフトウェアとして実行可能であるモジュールとしてのモジュールの実現例は、少なくとも部分的にハードウェアによって、例えば、コンピューター読み取り可能記憶媒体および/または処理システムのハードウェア・エレメント510の使用によって達成することができる。命令および/または機能は、本明細書において説明した技法、モジュール、および例を実現するために、1つ以上の製品(例えば、1つ以上の計算デバイス502および/または処理システム504)によって実行可能/動作可能であってもよい。
[0073] 更に図5に示すように、システム例500は、パーソナル・コンピューター(PC)、テレビジョン・デバイス、および/または移動体デバイスにおいてアプリケーションを実行するとき、シームレスなユーザー体験のために遍在環境を可能にする。サービスおよびアプリケーションは、3つの環境全てにおいて、1つのデバイスから次に移るときに、アプリケーションを利用する、ビデオ・ゲームをプレーする、ビデオを見る等の間、共通ユーザー体験のために実質的に同様に実行する。
[0074] システム例500では、多数のデバイスが中央計算デバイスを介して相互接続される。中央計算デバイスは、複数のデバイスに対してローカルであってもよく、または複数のデバイスから離れて配置されてもよい。1つ以上の実施形態では、中央計算デバイスは、ネットワーク、インターネット、または他のデーター通信リンクを介して複数のデバイスに接続された1つ以上のサーバー・コンピューターのクラウドであってもよい。
[0075] 1つ以上の実施形態では、この相互接続アーキテクチャーは、機能を複数のデバイスに跨がって配信し、複数のデバイスのユーザーに共通で継ぎ目のない体験を提供することを可能にする。複数のデバイスの各々は、異なる物理的要件および能力を有してもよく、中央計算デバイスは、デバイスへの体験の配信を可能にするプラットフォームを使用する。このプラットフォームは、そのデバイスに合わせて作られ、しかも全てのデバイスに共通である。1つ以上の実施形態では、1つのクラスのターゲット・デバイスが作られ、この包括的なクラスのデバイスに合わせて体験が作られる。1つのクラスのデバイスは、デバイスの物理的特徴、使用の形式、または他の共通特性によって定められてもよい。
[0076] 種々の実現例では、計算デバイス502は、コンピューター516、移動体518、およびテレビジョン520の使用のためというような、種々の異なる構成を取ることができる。これらの構成の各々は、全体的に異なる構造および能力を有するデバイスを含み、つまり計算デバイス502は、これらの異なるデバイス・クラスの内1つ以上にしたがって構成されてもよい。例えば、計算デバイス502は、パーソナル・コンピューター、デスクトップ・コンピューター、マルチスクリーン・コンピューター、ラップトップ・コンピューター、ネットブック等を含む、コンピューター516クラスのデバイスとして実現することができる。
[0077] また、計算デバイス502は、移動体電話機、携帯用音楽プレーヤー、携帯用ゲーミング・デバイス、タブレット・コンピューター、マルチスクリーン・コンピューター等のような、移動体デバイスを含む移動体518クラスのデバイスとして実現することもできる。また、計算デバイス502は、日常の視聴環境における、一般にもっと大きな画面を有するデバイスまたはこれに接続されたデバイスを含むテレビジョン520クラスのデバイスとして実現することもできる。これらのデバイスは、テレビジョン、セット・トップ・ボックス、ゲーミング・コンソール等を含む。
[0078] 本明細書において説明した技法は、これら種々の構成の計算デバイス502によってサポートすることができ、本明細書において説明した技法の具体的な例には限定されない。また、この機能は、以下で説明するように、「クラウド」522上でプラットフォーム524を介してというように、全体的にまたは部分的に分散型システムの使用によって実現することもできる。
[0079] クラウド522は、リソース526のためのプラットフォーム524を含む、および/またはプラットフォーム524を代表する。プラットフォーム524は、クラウド522のハードウェア(例えば、サーバー)およびソフトウェア・リソースの基礎的機能を抽象化する。リソース526は、計算デバイス502から離れたサーバーにおいてコンピューター処理が実行されている間に利用することができるアプリケーションおよび/またはデーターを含むことができる。また、リソース526は、インターネット上で、および/またはセルラーまたはWi−Fiネットワークのような加入者ネットワークを介して提供されるサービスを含むこともできる。
[0080] プラットフォーム524は、計算デバイス502を他の計算デバイスと接続するためのリソースおよび機能を抽象化することができる。また、プラットフォーム524は、プラットフォーム524を介して実装されるリソース526に対して出された(encounter)要求量に対応する規模レベルを提供するために、リソースのスケーリングを抽象化する機能も果たすことができる。したがって、相互接続デバイスの実施形態では、本明細書において説明した機能の実現例は、システム500にわたって分散させることができる。例えば、機能は、部分的に計算デバイス502において実現され、クラウド522の機能を抽象化するプラットフォーム524を介して実現されてもよい。
[0081] 以上、主題について構造的特徴および/または方法論的アクトに特定の文言で説明したが、添付した特許請求の範囲において定められる主題は、以上で説明した具体的な特徴やアクトに必ずしも限定されないことは理解されよう。逆に、以上で説明した具体的な特徴およびアクトは、特許請求の範囲を実現する形態例として開示したまでである。

Claims (10)

  1. 計算デバイスにおいて実装される方法であって、
    仮想マシンまたは該仮想マシンで実行されているオペレーティング・システムによる、メモリー・ページを実行可能にする要求に応答して、前記メモリー・ページを識別するステップであって、前記メモリー・ページが、前記仮想マシンの仮想プロセッサーにより実行されるべき実行可能コードを含むプログラムのためのコードを格納した複数のメモリー・ページのうちの1つを含み、前記仮想マシンが仮想マシン・マネージャーによって管理される、ステップと、
    前記メモリー・ページを識別したことに応答して、前記プログラムのためのコードを格納した前記複数のメモリー・ページのうちの識別した前記メモリー・ページがカーネル・モードであるいはユーザー・モードで実行可能にすべきか否か判定するステップと、
    前記仮想マシンの前記オペレーティング・システムよりも多くの特権が与えられたエンティティによって、前記プログラムのためのコードを格納した前記複数のメモリー・ページのうちの識別した前記メモリー・ページが前記カーネル・モードで実行可能にすべきであると判定したことに応答して、前記複数のメモリー・ページに格納された前記実行可能コードのコード完全性チェックを実行し、前記コード完全性チェックが前記複数のメモリー・ページに格納された前記実行可能コードを確認した場合にのみ前記実行可能コードの実行を許すステップと、
    前記プログラムのためのコードを格納した前記複数のメモリー・ページのうちの識別した前記メモリー・ページが前記カーネル・モードで実行可能するべきでないと判定したことに応答して、前記仮想マシンの前記オペレーティング・システムに、前記プログラムのためのコードを格納した前記複数のメモリー・ページのすべてのメモリー・ページの前記実行可能コードの前記ユーザー・モードでの実行を許すか否か判定させるステップと、
    を含む、方法。
  2. 請求項1記載の方法において、前記仮想マシンのオペレーティング・システムよりも多くの特権が与えられた前記エンティティが、仮想マシン・マネージャーを含み、識別した前記メモリー・ページがカーネル・モードで実行可能にすべきか否か判定するステップは、前記仮想マシン・マネージャーで実行され、前記仮想マシンの前記オペレーティング・システムに前記実行可能コードの前記ユーザー・モードでの実行を許すか否か判定させるステップは、前記仮想マシン・マネージャーで実行される、方法。
  3. 請求項1記載の方法であって、更に、前記オペレーティング・システムによって、識別した前記メモリー・ページが前記カーネル・モードで実行可能にすべきでないと判定したことに応答して、前記実行可能コードのコード完全性チェックを実行し、前記オペレーティング・システムによるコード完全性チェックが前記実行可能コードを確認した場合にのみ、前記実行可能コードの実行を許すステップを含む、方法。
  4. 請求項1記載の方法において、前記計算デバイスが、更に、前記仮想プロセッサーのユーザー・モードに対する実行許可またはポリシーとは別に、前記仮想プロセッサーのカーネル・モードに対する実行許可を指定させる属性を含むコンポーネントを含む、方法。
  5. オペレーティング・システムと、仮想マシン・マネージャーと、プロセッサーとを含む計算デバイスであって、前記プロセッサーが、
    仮想マシンによる、プログラムのためのコードを格納した複数のメモリー・ページのうちの1つのメモリー・ページを実行可能にする要求に応答して、前記プログラムのためのコードを格納した前記複数のメモリー・ページのうちの各メモリー・ページに関し、前記メモリー・ページがカーネル・モードであるいはユーザー・モードで実行可能にすべきか否か判定し、
    前記メモリー・ページが前記カーネル・モードで実行可能にすべき場合に、前記プログラムのためのコードを格納した前記複数のメモリー・ページのすべてのメモリー・ページのカーネル・モード実行を、前記仮想マシン・マネージャーに制限させて、前記プログラムのためのコードを格納した前記複数のメモリー・ページの完全性が、前記オペレーティング・システムよりも多くの特権が与えられた上位特権エンティティによって確認されている場合にのみ、前記コードの実行を許し、
    前記メモリー・ページが前記ユーザー・モードで実行可能にすべき場合に、前記プログラムのためのコードを格納した前記複数のメモリー・ページ上のコードの完全性が前記上位特権エンティティによって確認されているか否かには関係なく、前記プログラムのためのコードを格納した前記複数のメモリー・ページのすべてのメモリー・ページのユーザー・モード実行を許す、
    命令でプログラムされた、計算デバイス。
  6. 請求項5記載の計算デバイスにおいて、前記プロセッサーが、更に、前記仮想マシン・マネージャーによって完全性が確認されているコードを格納するメモリー・ページの実行許可属性を設定する命令でプログラムされた、計算デバイス。
  7. 請求項5記載の計算デバイスにおいて、前記プロセッサーが、アドレス変換表を含み、その属性が、メモリー・ページのカーネル・モード実行に対する実行許可を、メモリー・ページのユーザー・モード実行に対する実行許可とは別に指定させる、計算デバイス。
  8. 請求項5記載の計算デバイスにおいて、前記プロセッサーが、更に、メモリー・ページのカーネル・モード実行に対する実行許可を、メモリー・ページのユーザー・モード実行に対する実行ポリシーとは別に指定させる属性を有するハードウェア・コンポーネントを含む、計算デバイス。
  9. 請求項8記載の計算デバイスにおいて、前記属性が、メモリー・ページのカーネル・モード実行に対する実行許可を、メモリー・ページ毎のメモリー・ページのユーザー・モード実行に対する実行ポリシーとは別に指定させる、計算デバイス。
  10. 請求項8記載の計算デバイスにおいて、前記属性が、メモリー・ページにおけるコードのカーネル・モード実行を禁止するが前記メモリー・ページにおける前記コードのユーザー・モード実行を許す1つの実行の組み合わせと、前記メモリー・ページにおける前記コードのカーネル・モード実行および前記メモリー・ページにおける前記コードのユーザー・モード実行の双方を禁止する追加の組み合わせとを許す、計算デバイス。
JP2016543935A 2013-09-17 2014-09-12 仮想マシン・マネージャーによって支援される選択的コード完全性強制 Active JP6397500B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361879068P 2013-09-17 2013-09-17
US61/879,068 2013-09-17
US14/179,378 2014-02-12
US14/179,378 US10198572B2 (en) 2013-09-17 2014-02-12 Virtual machine manager facilitated selective code integrity enforcement
PCT/US2014/055290 WO2015041930A1 (en) 2013-09-17 2014-09-12 Virtual machine manager facilitated selective code integrity enforcement

Publications (3)

Publication Number Publication Date
JP2016535373A JP2016535373A (ja) 2016-11-10
JP2016535373A5 JP2016535373A5 (ja) 2017-10-26
JP6397500B2 true JP6397500B2 (ja) 2018-09-26

Family

ID=52669226

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016543935A Active JP6397500B2 (ja) 2013-09-17 2014-09-12 仮想マシン・マネージャーによって支援される選択的コード完全性強制

Country Status (11)

Country Link
US (2) US10198572B2 (ja)
EP (1) EP3047375B1 (ja)
JP (1) JP6397500B2 (ja)
KR (1) KR102166755B1 (ja)
CN (1) CN105659211B (ja)
AU (1) AU2014321545B2 (ja)
BR (1) BR112016004493B1 (ja)
CA (1) CA2922490C (ja)
MX (1) MX362067B (ja)
RU (1) RU2667713C2 (ja)
WO (1) WO2015041930A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102183852B1 (ko) * 2013-11-22 2020-11-30 삼성전자주식회사 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치
JP6245700B2 (ja) * 2014-04-11 2017-12-13 国立大学法人 東京大学 計算機システム、データの検査方法及び計算機
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
US10341384B2 (en) * 2015-07-12 2019-07-02 Avago Technologies International Sales Pte. Limited Network function virtualization security and trust system
US10230529B2 (en) * 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
EP3338214B1 (en) * 2015-08-21 2020-12-16 Cryptography Research, Inc. Secure computation environment
US10713177B2 (en) * 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
US10768962B2 (en) * 2016-12-19 2020-09-08 Vmware, Inc. Emulating mode-based execute control for memory pages in virtualized computing systems
FR3065553B1 (fr) * 2017-04-20 2019-04-26 Idemia Identity And Security Procede d'execution d'un programme destine a etre interprete par une machine virtuelle protege contre des attaques par injection de faute
CN108959916B (zh) * 2017-05-22 2022-01-14 华为技术有限公司 用于访问安全世界的方法、装置和系统
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US10216598B2 (en) * 2017-07-11 2019-02-26 Stratus Technologies Bermuda Ltd. Method for dirty-page tracking and full memory mirroring redundancy in a fault-tolerant server
US10872043B2 (en) * 2017-08-17 2020-12-22 Microchip Technology Incorporated Systems and methods for integrity checking of code or data in a mixed security system while preserving confidentiality
CN110581833B (zh) * 2018-06-11 2022-08-23 中移(杭州)信息技术有限公司 一种业务安全保护方法及装置
US11221957B2 (en) * 2018-08-31 2022-01-11 International Business Machines Corporation Promotion of ERAT cache entries
RU2710860C1 (ru) * 2019-02-07 2020-01-14 Акционерное общество "Лаборатория Касперского" Способ ограничения области автоматического выбора виртуальной машины защиты
US11640361B2 (en) 2019-03-08 2023-05-02 International Business Machines Corporation Sharing secure memory across multiple security domains
US11487906B2 (en) * 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US11531627B2 (en) 2019-03-08 2022-12-20 International Business Machines Corporation Secure storage isolation
US11354402B2 (en) * 2019-11-01 2022-06-07 Microsoft Technology Licensing, Llc Virtual environment type validation for policy enforcement
JP7380251B2 (ja) * 2020-01-27 2023-11-15 株式会社Ihi 仮想マシンにおけるデータ改ざんの監視方法及び装置
US11537732B2 (en) * 2020-04-27 2022-12-27 Hewlett Packard Enterprise Development Lp Unlocking access of information responsive to validation of program codes of virtual entities
CN112527329B (zh) * 2020-12-15 2024-05-17 深圳市硅格半导体有限公司 固态存储设备的量产方法、系统、终端设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7530103B2 (en) 2003-08-07 2009-05-05 Microsoft Corporation Projection of trustworthiness from a trusted environment to an untrusted environment
CN100489728C (zh) 2004-12-02 2009-05-20 联想(北京)有限公司 一种建立计算机中可信任运行环境的方法
US7624373B2 (en) * 2005-03-31 2009-11-24 Microsoft Corporation Security mechanism for interpreting scripts in an interpretive environment
US8276201B2 (en) * 2007-03-22 2012-09-25 International Business Machines Corporation Integrity protection in data processing systems
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US8108856B2 (en) * 2007-03-30 2012-01-31 Intel Corporation Method and apparatus for adaptive integrity measurement of computer software
US8220029B2 (en) 2007-11-13 2012-07-10 Samsung Electronics Co., Ltd. Method and system for enforcing trusted computing policies in a hypervisor security module architecture
JP5260081B2 (ja) 2008-02-25 2013-08-14 パナソニック株式会社 情報処理装置及びその制御方法
WO2009111405A1 (en) 2008-03-04 2009-09-11 Apple Inc. System and method of authorizing execution of software code based on a trusted cache
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8356285B2 (en) 2009-03-31 2013-01-15 Oracle America, Inc. Facilitated introspection of virtualized environments
US8285987B1 (en) 2009-12-04 2012-10-09 The United States Of America As Represented By The Secretary Of The Air Force Emulation-based software protection
KR101663013B1 (ko) * 2010-01-15 2016-10-06 삼성전자주식회사 코드 주입 공격을 감지하는 장치 및 방법
CN101866408B (zh) 2010-06-30 2011-11-30 华中科技大学 一种基于虚拟机架构的透明信任链构建系统
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US8549644B2 (en) * 2011-03-28 2013-10-01 Mcafee, Inc. Systems and method for regulating software access to security-sensitive processor resources
RU2530691C1 (ru) 2013-03-26 2014-10-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ защищенного удаленного доступа к информационным ресурсам

Also Published As

Publication number Publication date
CA2922490C (en) 2023-01-24
CN105659211A (zh) 2016-06-08
US10831886B2 (en) 2020-11-10
AU2014321545B2 (en) 2019-07-18
BR112016004493B1 (pt) 2022-12-13
RU2016109436A3 (ja) 2018-07-18
MX2016003190A (es) 2016-06-24
BR112016004493A8 (pt) 2020-02-11
EP3047375A1 (en) 2016-07-27
RU2016109436A (ru) 2017-09-21
JP2016535373A (ja) 2016-11-10
CN105659211B (zh) 2019-03-22
RU2667713C2 (ru) 2018-09-24
US20190147160A1 (en) 2019-05-16
CA2922490A1 (en) 2015-03-26
MX362067B (es) 2019-01-07
US10198572B2 (en) 2019-02-05
KR102166755B1 (ko) 2020-10-16
KR20160075499A (ko) 2016-06-29
WO2015041930A1 (en) 2015-03-26
EP3047375B1 (en) 2021-04-07
US20150082304A1 (en) 2015-03-19
AU2014321545A1 (en) 2016-02-25

Similar Documents

Publication Publication Date Title
JP6397500B2 (ja) 仮想マシン・マネージャーによって支援される選択的コード完全性強制
CN110178136B (zh) 现场可编程门阵列程序的签名验证的方法和设备
JP6286034B2 (ja) プロセス認証とリソースパーミッション
US9836601B2 (en) Protecting anti-malware processes
US8839353B2 (en) Attack protection for trusted platform modules
US10395028B2 (en) Virtualization based intra-block workload isolation
JP2017530471A (ja) トラステッドプラットフォームモジュールにおけるオペレーティングシステムコンテキストの表現
US20230015537A1 (en) Reducing latency of hardware trusted execution environments
JP4507569B2 (ja) 情報処理装置および情報処理方法、プログラム、並びに記録媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170912

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180730

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180831

R150 Certificate of patent or registration of utility model

Ref document number: 6397500

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250