JP6450775B2 - 処理システムにおける情報の暗号保護 - Google Patents

処理システムにおける情報の暗号保護 Download PDF

Info

Publication number
JP6450775B2
JP6450775B2 JP2016554448A JP2016554448A JP6450775B2 JP 6450775 B2 JP6450775 B2 JP 6450775B2 JP 2016554448 A JP2016554448 A JP 2016554448A JP 2016554448 A JP2016554448 A JP 2016554448A JP 6450775 B2 JP6450775 B2 JP 6450775B2
Authority
JP
Japan
Prior art keywords
information
cache
memory access
access request
memory
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
JP2016554448A
Other languages
English (en)
Other versions
JP2017517043A5 (ja
JP2017517043A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2017517043A publication Critical patent/JP2017517043A/ja
Publication of JP2017517043A5 publication Critical patent/JP2017517043A5/ja
Application granted granted Critical
Publication of JP6450775B2 publication Critical patent/JP6450775B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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
    • 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
    • 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
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

本開示は、概してプロセッサに関し、より具体的には、プロセッサでの情報セキュリティに関する。
多くのプロセッサアプリケーションにおいて、情報セキュリティの保護は重要な機能である。例えば、プロセッサは、IAAS(Infrastructure As A Service)環境内のサーバで使用されることが可能であり、IAAS環境では、プロセッサが1つ以上の仮想マシン(VM)を実行し、VM間のサーバハードウェアをパーティショニングしてVMを互いに隔離するためにハイパーバイザを実行する。様々な利用者のために異なるVMが実行されるので、各VMによって採用された情報(命令及びデータ)を他のVMのアクセスから保護することが望ましい。従来、ハイパーバイザは、各VMのために個別のメモリページテーブル及び他の論理エンティティを維持することによって、VM情報の隔離を維持している。しかしながら、ハイパーバイザの欠陥(例えば、バグ)は、一つのVMが他のVMの情報にアクセスすることを可能にする不法利用(exploitation)に対して当該ハイパーバイザ自体が脆弱になる原因となる可能性がある。例えばパーソナルコンピュータ等のように、より私的なセキュリティ環境までも、メモリモジュールに記憶されたデータが盗難の対象となり、不正アクセスの対象となる可能性がある。
本開示は、添付の図面を参照することによって、当業者により良く理解されることができ、その多数の特徴及び利点を明らかにすることができる。異なる図面で用いられる同じ符号は、類似又は同一の項目を示している。
いくつかの実施形態による、情報の安全な隔離のためにメモリコントローラで暗号化モジュールを用いる処理システムのブロック図である。 いくつかの実施形態による、仮想マシンの隔離のために提供される図1の処理システムの例示的な実装を示すブロック図である。 いくつかの実施形態による、図1の処理システムで保護用のメモリアクセス(secure memory accesses)を識別するためのトランスレーションルックアサイドバッファ及びページテーブルの使用を示すブロック図である。 いくつかの実施形態による、図1の処理システムで保護用のメモリアクセスを識別するためのゲスト及びホストページテーブルの使用を示すブロック図である。 いくつかの実施形態による、保護情報(secure information)を隔離するための図1のキャッシュに記憶されたタグの使用を示すブロック図である。 いくつかの実施形態による、保護情報を隔離するための図1のキャッシュのTLBに記憶されたタグの使用を示すブロック図である。 いくつかの実施形態による、暗号保護用に指定された情報を保護するために図1のキャッシュでメモリアクセス要求を処理する方法のフロー図である。 いくつかの実施形態による、暗号保護用に指定された情報を保護するために図1のキャッシュでメモリアクセス要求を処理する他の方法のフロー図である。 いくつかの実施形態による、暗号保護用に指定された情報を保護するために図1のノースブリッジでメモリアクセス要求を処理する方法のフロー図である。 いくつかの実施形態による、暗号保護を有効にするためにVM識別値を割り当てる方法のフロー図である。 いくつかの実施形態による、処理システムのコンポーネントのうち少なくとも一部を実装する集積回路デバイスを設計及び製造する方法を示すフロー図である。
図1〜11は、プロセッサのメモリアクセスパスのハードウェア暗号化モジュールを用いて保護情報を暗号で隔離することによって、処理システムにて保護情報を保護するための技術を示す図である。いくつかの実施形態において、暗号化モジュールは、プロセッサのメモリコントローラ(例えば、ノースブリッジ)に配置されており、メモリコントローラに提供されたメモリアクセスの各々は、保護用のメモリアクセス(メモリアクセスに関連する情報が暗号保護用に指定されていることを示すメモリアクセス)であるか否かを示している。暗号化モジュールは、保護用のメモリアクセスに対して、メモリアクセスに関連するデータの(書き込みアクセスのための)暗号化又は(読み出しアクセスのための)復号化を実行する。プロセッサのメモリアクセスパスのハードウェアによって暗号化が行われるので、正しい暗号化/復号化キー(key)が無い場合には、メモリに記憶されたデータに対して意味のあるアクセスができない。
いくつかの実施形態において、プロセッサは、処理システムに用いられ、異なる仮想マシン(VM)を実行し、さらには、ハイパーバイザを実行して、VMと処理システムのハードウェア(メモリを含む)との間にインタフェースを提供する。VMが個別のユーザ(例えば、異なる利用者)によって実行され得ることから、例えば一つのVMが、他のVMが用いた情報(命令及びデータ)にアクセス不可能となるように、VMを互いに隔離することが望ましい。従来、ハイパーバイザは、各VMを、私的使用のために、メモリの専用部分及び処理システムの他のリソースに割り当てることによって、VMを隔離するために用いられている。しかしながら、ハイパーバイザのバグ、又は、不法利用の媒介(vehicle)として作用するように悪意を持って変更されたハイパーバイザは、ハイパーバイザ又は所定のVMが、他のVMの情報を検査若しくは更に変更するのを可能にし得る。本明細書に記載された技術を用いて、メモリコントローラの暗号化モジュールが、ハイパーバイザによるアクセス、又は、他の実行しているVMによるアクセスから各VMの情報を暗号で保護するために用いられる。プロセッサのメモリアクセスパスのハードウェア(以下、実行しているハイパーバイザ)に暗号保護が実装されているので、ハイパーバイザのバグ又は悪意あるハイパーバイザは、理解又は意味のある解釈をされることの不可能な暗号化されたデータのみへのアクセスを提供することになる。
例えば、いくつかの実施形態において、暗号化モジュールは、プロセッサにより実行されるVMごとに固有のキーを記憶する。いくつかの状況において、VM用のキーは、処理システムのプロセッサコアから分離したセキュリティモジュールにより生成され得るため、ハイパーバイザを含むプロセッサコアにて実行されるソフトウェアは、このキーにアクセス不可能である。暗号化モジュールは、メモリコントローラがメモリアクセス要求を受信したことに応じて、この要求を生成したVMを識別し、要求を行ったVMに対応するキーを用いて、当該要求と関連したデータを暗号化又は復号化する。したがって、このデータは、ハイパーバイザ又は他のVMによるアクセスからは暗号で保護される。図示するように、認証されていないVMが、他のVMに割り当てられたメモリ位置に記憶されたデータを、(例えば、ハイパーバイザのバグを利用することで)取得する場合であっても、このデータ自体が暗号化されているので、認証されていないVMにとっては意味がない。
いくつかの実施形態において、本明細書に記載された技術は、物理的に安全でない環境に採用された処理システムに実装され、処理システムのメモリは、不正な物理的アクセス(例えば、ハードウェアメモリモジュールの盗難、又は、メモリの物理的プロービング)の対象となる。しかしながら、暗号化モジュールが、保護用のデータを暗号化された形式でメモリに記憶させるため、この保護用のデータは、不正な物理的アクセスの対象となる場合であっても、有用になりにくい。
図1は、いくつかの実施形態による、情報の暗号保護を提供する処理システム100を示す図である。この処理システム100は、プロセッサ102と、メモリ120と、を含む。処理システム100は、例えば、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲーム機等の様々な電子デバイスの何れかに組み込まれ得る。一般に、プロセッサ102は、所定のタスクを実行するためにプロセッサ102の回路を操作する複数セットの命令(例えば、コンピュータプログラム)を実行するように構成されている。メモリ120は、プロセッサ102によって用いられたデータを記憶することにより、タスクの実行を促進する。メモリ120は、例えば、ランダムアクセスメモリ(RAM)、フラッシュメモリ又はハードディスクドライブ(HDD)等の不揮発性メモリであってもよいし、これらの組み合わせであってもよい。
複数セットの命令を実行する過程において、プロセッサ102は、データをメモリ120に記憶する書き込み要求と、メモリ120からデータを取得する読み出し要求と、を含むメモリアクセス要求を生成する。各メモリアクセス要求は、メモリアクセス要求のターゲットとなるメモリ120の位置を示すメモリアドレス(例えば、システム物理アドレス)を含む。メモリ120は、読み出し要求に応じて、読み出し要求のメモリアドレスに対応する位置に記憶された情報(データ又は命令)を取得し、この情報をプロセッサ102へ提供する。メモリ120は、書き込み要求に応じて、当該要求の書き込み情報を、当該要求のメモリアドレスに対応する位置に記憶する。
プロセッサ102は、セキュリティモジュール130を含む。セキュリティモジュール130は、プロセッサ102で実行されるエンティティ(例えば、仮想マシン、コンピュータプログラム等)の登録、実行されるエンティティ用のセキュリティキーの生成及び識別、セキュリティ操作のための処理システム100の認証等を含む処理システム100用のセキュリティ操作を実行するように設計及び構成された、汎用プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プロセッサコアの動作モード、又は、他のモジュールである。いくつかの実施形態において、セキュリティモジュール130は、操作を実行することが許可される前に安全な登録プロセスを受けることができ、セキュリティ操作のみに限定された操作を有し得る。このため、セキュリティモジュール130は、不法利用に対して脆弱な状態で操作を実行することが不可能である。本明細書で更に記載されるように、セキュリティモジュール130は、処理システム100において実行されるように登録されたエンティティを識別するためのセキュリティキーを生成することにより、処理システム100における情報の暗号隔離、及び、かかる暗号隔離を有効にする他の操作をサポートする。
プロセッサ102は、命令の実行を促進するために、プロセッサコア104,106と、キャッシュ105,107,108と、ノースブリッジ110と、セキュリティモードレジスタ121と、を含む。プロセッサコア104,106は、命令を個別且つ同時に実行する処理ユニットである。いくつかの実施形態において、各プロセッサコア104,106は、命令をフェッチし、フェッチした命令を対応する操作に復号化し、処理システム100のリソースを用いてメモリアクセス要求を含む操作を実行する、個別の命令パイプラインを含む。各プロセッサコア104,106は、メモリアクセス要求を、メモリアクセス要求に対応する情報を暗号保護用に指定することを示す保護用のメモリアクセス要求、又は、メモリアクセス要求に対応する情報を暗号保護用に指定しないことを示す保護用ではないメモリアクセス要求の2つの種類の何れかの種類として識別するように構成されている。
いくつかの実施形態において、処理システム100は、メモリ120内で情報が記憶された位置に対応するメモリアドレス、又は、情報の種類(例えば、命令又はデータ)に対応するメモリアドレスに含まれる制御ビットに基づいて、情報用のセキュリティ指定(情報が暗号で保護されるものであるか否か)を割り当てる、セキュリティスキームを実装している。これは、大規模なデータコレクションを、効率的な情報保護を提供する保護情報として簡単に分類することを可能にする。例えば、いくつかの実施形態において、制御ビットは、命令情報等の特定の種類の情報、又は、メモリ120の物理アドレスへの仮想アドレスのマッピングを提供するページテーブル情報が保護情報として指定されるように、処理システム100によって設定されるため、後述するように当該情報を暗号で保護する。データに割り当てられたアドレス用の制御ビットは、例えば、プロセッサ102で実行されるプログラムによって要求された指定に基づいて、よりきめ細やかな様式で指定され得る。このセキュリティスキームは、より一般的なデータのために更なるフレキシビリティを提供しながら、重要なデータの保護(例えば、仮想マシン又はそのプログラムの不正な実行を防ぐ)を提供する。
いくつかの実施形態において、情報に割り当てられたセキュリティの種類は、情報に対応するメモリアドレスに基づいて指定されるので、処理システム100は、ページテーブル自体を用いて、メモリアドレスごとのセキュリティの種類を示す。したがって、図3を参照して以下に説明するように、プロセッサコア104,106は、メモリアクセス要求に対応するメモリアドレスを識別する過程において、メモリアクセス要求の種類を識別する。特に、メモリアドレスが保護情報を記憶するものとして示されている場合には、対応するメモリアクセスは、保護用のメモリアクセスとして識別される。同様に、メモリアドレスが保護情報ではない情報を記憶するものとして示されている場合には、対応するメモリアクセスを保護用ではないメモリアクセスとして識別する。
キャッシュ105,107,108は、メモリ120に記憶された情報のサブセットを記憶するメモリデバイスであって、各々の情報のサブセットに対するプロセッサコア104,106の迅速なアクセスを提供する。簡略化のために、キャッシュ108を単一のキャッシュとして示しているが、いくつかの実施形態では、キャッシュ108が、プロセッサ102の異なるレベルのメモリ階層に存在する異なるキャッシュを含む複数のキャッシュで表し得ることが理解されるであろう。キャッシュ108は、メモリアクセス要求を受信して、そのストレージアレイ(図1では省略)が、メモリアクセス要求によってターゲットとされる情報を記憶するか否かを識別する。かかる場合に、キャッシュ108は、キャッシュヒットを示し、ストレージアレイにてメモリアクセス要求を満たす。キャッシュ108がターゲットとされる情報を記憶しない場合には、キャッシュミスを示し、ノースブリッジ110に対してメモリアクセス要求を提供する。
図1に示された例において、処理システム100のメモリアクセスパスは、キャッシュ108が保護情報を含む情報を暗号化されない形式で記憶するようなものである。このため、図5に関して以下でさらに記載されるように、いくつかの実施形態では、キャッシュ108は、所定のサイズの記憶位置(例えば、キャッシュライン)ごとに、特定のプログラムを識別するエンティティタグ情報、又は、記憶位置で情報にアクセスするために認証される他のエンティティ(例えば、VM)を記憶する。ストレージアレイの位置に対するメモリアクセスに応じて、キャッシュ108は、メモリアクセス要求を生成したエンティティのアイデンティティ(identity)と、エンティティのタグ情報とを比較し、不一致に応じてキャッシュミスを示すことによって、情報に対する不正なアクセスを防ぐ。
ノースブリッジ110は、メモリ120と通信するために、プロセッサ102用のインタフェースを提供するメモリコントローラである。いくつかの実施形態において、ノースブリッジ110は、入力/出力コントローラ(例えばサウスブリッジ、図示省略)とインタフェースで接続されており、グラフィックスプロセッシングユニット等の異なるプロセッサコア(例えば、プロセッサコア104,106)及び他のプロセッサコア(図示省略)間にインタフェースを提供する等の他の機能を実行することが可能である。ノースブリッジ110は、メモリコントローラとしての容量内でキャッシュ108からメモリアクセス要求を受信して、メモリ120に対する当該要求の提供を制御する。また、ノースブリッジ110は、メモリアクセス要求に対するメモリ120からの応答を受信し、キャッシュ108に対する応答の提供を制御する。いくつかの実施形態において、ノースブリッジ110は、処理システム100の入力/出力デバイス(図示省略)からメモリアクセス要求(例えば、直接メモリアクセス要求)を受信してもよく、メモリ120に対する当該要求の提供を制御する。
ノースブリッジ110は、情報の暗号隔離を提供するために、特定の暗号標準に従って、キー126に基づいて情報を暗号化及び復号化するように構成された暗号化モジュール115を含む。いくつかの実施形態において、暗号化モジュール115は、高度暗号化標準(AES)の暗号化及び復号化を用いるように構成されているが、他の実施形態では、暗号化モジュール115は、他の暗号化/復号化技術を用いてもよい。ノースブリッジ110は、書き込み要求を受信したことに応じて、当該要求が保護用のメモリアクセス要求、又は、保護用ではないメモリアクセス要求であるか否かを識別する。書き込み要求が保護用ではないメモリアクセス要求である場合には、ノースブリッジ110は、暗号化モジュール115をバイパスして、書き込まれる情報を暗号化することなく、メモリ120に対する書き込み要求を提供する。書き込み要求が保護用のメモリアクセス要求である場合には、ノースブリッジ110は、メモリアクセス要求を生成したエンティティ(例えば、プログラム、VM、ソフトウェアサービス等)に割り当てられる1つのキー126を識別する。いくつかの実施形態において、セキュリティモジュール130は、何れのエンティティがプロセッサ102で現在実行されているかに基づいて、選択されるキーを識別する。暗号化モジュール115は、書き込まれる情報を、選択されたキーを用いて暗号化し、この暗号化された情報とともに、記憶用のメモリ120に対して書き込み要求を提供する。いくつかの実施形態において、暗号化モジュール115は、対応する情報の暗号化及び復号化のためのメモリアクセス要求の選択されたキー及び物理アドレスの両方を用いて、ブロックムーブアタックを防ぐ。いくつかの実施形態において、暗号化モジュール115は、プロセッサ102での制御ビット(図示省略)の状態に基づく暗号化及び復号化のために、物理アドレスを用いるか否かを識別する。制御ビット状態は、セキュリティモジュール130により設定され得る。
ノースブリッジ110は、読み出し要求を受信したことに応じて、当該要求をメモリ120に提供した後に、当該要求に応じた情報を受信する。ノースブリッジ110が読み出し要求を保護用ではないメモリアクセス要求として識別した場合には、ノースブリッジ110は、暗号化モジュール115をバイパスして、読み出し情報を暗号化なしでキャッシュ108に提供する。ノースブリッジ110が読み出し要求を保護用のメモリアクセス要求として識別した場合には、ノースブリッジ110は、読み出しアクセス要求を生成したエンティティの割り当てられるキー126のうち1つのキーを識別し、暗号化モジュール115は読み出し情報を復号化する。ノースブリッジ110は、復号化された読み出し情報を、記憶のためにキャッシュ108に提供する。ノースブリッジ110は、状況次第で、キャッシュ108に対する情報の提供をバイパスしてもよく、復号化された読み出し情報を、対応する読み出しアクセス要求を生成したプロセッサコアに直接提供してもよい。
いくつかの実施形態では、セキュリティモードレジスタ121を用いて、暗号化モジュール115の操作を制御する。セキュリティモードレジスタ121は、ガードモードオンフィールド122と、ガードモードアクティブフィールド123と、を含む。ノースブリッジ110は、ガードモードオンフィールドが特定の状態(例えば、ネゲート状態)にあることに応じて、保護用のメモリアクセス要求を含む全てのメモリアクセス要求のために暗号化モジュール115をバイパスする。このことは、処理システム100が、プロセッサ102で実行される全てのプログラムのために暗号化及び復号化がバイパスされるモードで動作することを可能にする。
ノースブリッジ110は、ガードモードオンフィールドが異なる特定の状態(例えば、アサート状態)にあることに応じて、ガードモードアクティブフィールドの状態を識別する。ノースブリッジ110は、ガードモードアクティブフィールドが特定の状態(例えば、ネゲート状態)にあることに応じて、受信したメモリアクセス要求(保護用のメモリアクセス要求を含む)のために暗号化モジュール115をバイパスし、ガードモードアクティブフィールドが異なる状態(例えば、アサート状態)にあることに応じて、保護用ではないメモリアクセス要求のためにのみ暗号化モジュールをバイパスする。いくつかの実施形態において、ガードモードオンフィールドは、プロセッサ102で複数の個々のプログラム又はエンティティ(例えば、VM)の実行を管理するエンティティ(例えば、ハイパーバイザ)によって設定される。ガードモードオンフィールドは、個々のプログラム又はエンティティごとに個別に設定される。このようにして、セキュリティモードレジスタは、粒度の異なるレベルで暗号化モジュール115の使用を制御することを可能にする。
図2は、いくつかの実施形態による、VM用の情報を暗号隔離のために提供する処理システム100の例示的な操作を示す図である。図示された例では、プロセッサ102は、VM250及びVM251を同時に実行する。また、プロセッサ102は、VM250,251と、処理システム100のハードウェアとの間にインタフェースを提供するハイパーバイザ252を実行する。これらの実行過程において、VM250,251は、保護情報225,226にそれぞれアクセスする(記憶及び取得する)。暗号化モジュール115は、保護情報225,226の暗号隔離を確実に行うので、保護情報225,226の各々は、対応するVMのみによってアクセスされることが可能である。
操作中に、各VM250,251は、プロセッサ102で実行することを許可される前に、セキュリティモジュール130に登録する。いくつかの実施形態において、VMは、VMの所有者がセキュリティモジュール130と安全な通信チャネル(図2では図示省略)を確立するように、登録される。「VMID」が指定された識別値と、「VMKEY」が指定されたセキュリティキーとが、VM用に生成される。この生成は、セキュリティモジュール130又は別のセキュリティデバイスで行われてもよいし、安全な通信チャネルを介してセキュリティモジュール130へ通信されてもよい。セキュリティモジュール130は、VMKEY及びVMIDの各々の値が対応するVMに対して固有であることを保証する。VMの所有者は、対応するVMのイメージを暗号化して、暗号化されたイメージを、当該イメージを保護データとしてメモリ120に記憶するハイパーバイザ252に提供する。このようにして、図示された例では、保護情報225は、VM250用のVMイメージを含む。
次に、プロセッサ102は、VMを実行する要求を受信する。プロセッサ102は、この要求に応じて、要求されたVMのVMIDをセキュリティモジュール130に通知する。セキュリティモジュール230は、VMIDに基づき、要求されたVMのセキュリティキーを識別して、セキュリティキーを暗号化モジュール115に提供する。図2に示された例では、プロセッサ102は、VMA250,251の両方を実行する要求を受信しているため、セキュリティモジュール130は、VMA250用のキー118と、VMA251用のキー119と、を暗号化モジュール115に提供する。
VM250,251は、これらの実行過程において、メモリアクセス要求を生成し、それらをノースブリッジ110に提供する。ノースブリッジ110は、メモリアクセス要求のメモリアドレスに含まれる1つ以上のビットに基づいて、当該メモリアクセス要求が保護用のメモリアクセス要求であるか否かを識別する。ノースブリッジ110は、保護用のメモリアクセス要求でない場合に、暗号化モジュール115をバイパスして、暗号化又は復号化なしでメモリアクセス要求を満たす。ノースブリッジ110は、メモリアクセス要求が保護用のメモリアクセス要求である場合に、メモリアクセス要求とともに提供されたメモリアドレス又は他の情報に基づいて、VM250,251の何れがメモリアクセス要求を生成したのかを識別する。暗号化モジュール115は、メモリアクセス要求を生成したVMに対応するキー118,119のうち1つのキーを選択して、選択されたキーを用いて、メモリアクセス情報(読み出しデータ又は書き込みデータ)に対して暗号化(書き込み要求の場合)又は復号化(読み出し要求の場合)を実行する。
上述したように、データの暗号保護はノースブリッジ110で行われ、暗号保護に用いられるキーは不明であり、VM250,251及びハイパーバイザ252にアクセス不可能である。このことは、一方のVMが他方のVMの保護情報にアクセス不可能であることを確実にする。例えば、VM251は、メモリアクセス要求を発行して、保護情報225(VM250の保護情報)にアクセスしようとする場合を想定する。暗号化モジュール115は、メモリアクセス要求がVM251によって生成されたので、要求された保護データを、当該保護データを暗号化するのに用いられたキー118よりも、VM251に割り当てられたキー119を用いて復号化を試みる。これにより、VM251は、間違ったキーを用いて復号化が行われたので、復号化されたデータに対して意味のある解釈又は正しい解釈をすることが不可能である。このようにして、VM250用の保護情報225は、VM251によるアクセスから暗号で隔離される。
いくつかの実施形態において、処理システム100は、キー118,119を定期的に変更してセキュリティを強化する。例えば、セキュリティモジュール130は、VMが完全にシャットダウンした(一時停止ではなく)としても、VM用の新規のキーを生成し、VMが再起動されるときに当該新規のキーをVMが備えるようにすることが可能である。セキュリティモジュール130は、古いキーの下でメモリ120に記憶されたVMの保護情報について、古いキーを用いてかかる情報を復号化し、かかる情報を新規のキーを用いて再暗号化するようにノースブリッジ110に指示することが可能であるため、この保護情報はVMが再起動する場合にアクセス可能である。
いくつかの実施形態において、セキュリティモジュール130は、VMが一時停止状態に移行することに応じて、VM用の新規のキーを生成し得る。VM(例えば、ゲストオペレーティングシステム)の一部は、VM用の暗号化されたデータを記憶するメモリ120のメモリページを識別するデータ構造を維持する。セキュリティモジュール130は、BMが一時停止状態に移行することに応じて、識別されたメモリページを古いキーを用いて復号化し、当該メモリページを新規のキーを用いて再暗号化するようにノースブリッジ110に指示する。これにより、VMが一時停止状態を終了する場合に、保護情報にアクセス可能であることを保証する。
いくつかの実施形態において、処理システム100は、異なる利用者に対応する複数のVMを実行するのに用いられないが、代わりに、単一のユーザ又は単一の利用者の環境で用いられるモード(説明のために「ネイティブモード」と呼ばれる)に配置されることが可能である。かかる状況では、ノースブリッジ110の暗号化モジュール115を用いて、プロセッサ102で実行される1つ以上のプログラムによって識別されるような機密情報を暗号で保護することが可能である。したがって、この機密情報は、暗号化された形式でメモリ120に記憶される。不正な方式(例えば、メモリ120のメモリモジュールの盗難を介して)によってメモリ120にアクセスする場合であっても、暗号化された情報は、情報を暗号化するのに用いられたキーの情報なしに意味のある解釈がなされることが不可能である。したがって、機密情報は、不正なアクセスから暗号で保護される。
いくつかの実施形態において、本明細書でさらに説明するように、実行中のVMに対して特殊なタグ値(「VMタグ値」と呼ばれる)を割り当て、暗号化又は復号化を促進する。これらのタグ値の1つは、ネイティブモードで使用するために予約され得るので、ネイティブモードにおける暗号化用に指定された情報は、処理システム100がVMを実行するために続いて使用される場合に、アクセスされるのが不可能である。いくつかの実施形態において、ネイティブモードは、プロセッサ102で指定された制御ビット(図示省略)によって有効にされることが可能であり、個別に、又は、プロセッサ102でのVMの実行と併せて使用されることが可能である。
いくつかの実施形態において、プロセッサ102以外のデバイスは、ノースブリッジ110を用いて、直接メモリアクセス(DMA)要求を介してメモリ120にアクセスすることができる。いくつかの実施形態において、ノースブリッジ110は、かかる全てのDMA要求のために暗号化モジュール115をバイパスする。他の実施形態において、処理システム102は、DMA要求のための特定のVMタグ値を指定又は予約することができる。DMA要求によって、異なるVMタグに対応する保護情報にアクセスしようとする試みは、処理システム102でのエラー通知の生成の原因となる可能性がある。このことは、DMA要求が情報の暗号保護をバイパスするために使用されることが不可能であることを保証する。
図3は、いくつかの実施形態による、メモリアクセス要求のためのセキュリティの種類(例えば、保護された、又は、保護されない)の識別を可能にするプロセッサ102の一部を示す図である。特に、図3では、アドレス変換モジュール345と、トランスレーションルックアサイドバッファ(TLB)346と、ページテーブル347と、が示されている。アドレス変換モジュール345は、概して、対応するメモリアクセス要求のために仮想アドレスをプロセッサコア104,106の一方又は両方から受信するように構成されたモジュールである。このアドレス変換モジュール345は、受信した仮想アドレスの各々を、対応する物理アドレス(メモリアクセス要求がターゲットとするメモリ120の位置を識別する物理アドレス)に変換する。
このアドレス変換モジュール345は、TLB346及びページテーブル347の一方又は両方を用いて、仮想アドレスを、対応する物理アドレスに変換する。ページテーブル347は、仮想アドレスによってインデックスされた複数のエントリ(例えば、エントリ348)を含む。いくつかの実施形態では、ページテーブル347は、多重レベルのページテーブルであって、最高レベルのページが、仮想アドレスに割り当てられた物理アドレスを識別しながら、低レベルのページが、仮想アドレスと関連した他のページを識別するエントリを含む。物理アドレスは、物理アドレスを含む最高レベルのページテーブルが識別され、最高レベルのページテーブルから物理アドレスを取得するまで等に、ページウォークでページテーブルを横断することで識別され得る。最低レベルのページは、アクセスされる次のレベルでページを識別する最初のアクセスである。また、最高レベルのページテーブルは、物理アドレスに対応するデータが暗号で保護されるか否かを示すビット(「Cビット」と指定される)を記憶する。TLB346は、アドレス変換モジュール345によって直近に受信した仮想アドレスを反映するページテーブル347のエントリのサブセットを共に記憶する複数のエントリ(例えば、エントリ349)を含む。
アドレス変換モジュール345は、仮想アドレスを受信したことに応じて、TLB346にアクセスして、仮想アドレスに対応するエントリを含むか否かを判定する。この場合、アドレス変換モジュール345は、Cビット値を物理アドレスへアペンドして、メモリアクセス要求によって用いられる、結果として得られる物理アドレス値を提供する。物理アドレス値のCビット部分は、ノースブリッジ110によって使用され、メモリアクセス要求が保護用のメモリアクセス要求であるか否かを識別する。このようにして、例えば、物理アドレス値のCビットがアサート状態にある場合に、ノースブリッジ110は、対応するメモリアクセス要求を保護用のメモリアクセス要求と識別して、暗号化モジュール115を用いて、当該要求に対応する情報を暗号化又は復号化する。
アドレス変換モジュール345は、TLB346が仮想アドレスに対応するエントリを含まない場合に、メモリ120からページテーブル347を取得して、仮想アドレスに対応するエントリのためにページテーブル347の検索(時として「ページウォーク」と呼ばれ)を実行する。アドレス変換モジュール345は、メモリアクセス要求に応じて、エントリをTLB346に移し、Cビットを含む物理アドレス値を提供する。
ページテーブル347及びTLB346を使用してCビットを記憶することで、保護用のメモリアクセス要求を識別するので、保護情報は、より簡単且つ安全に保護され得る。例えば、いくつかの実施形態において、VMコードに対応する物理アドレスは、対応するページテーブルでCビットをアサート状態に設定することによって、保護情報として指定され得る。このことは、VMコード自体が暗号で隔離されることを保証する。さらに、VM用のページテーブルは、対応するCビットをアサート状態に設定することにより、暗号で保護され得る。いくつかの実施形態において、ページテーブルのCビットは、ハードウェアによって無条件に設定される。いくつかの実施形態において、VMは、VMのフレキシビリティを提供する他の非実行情報のためにCビットを設定して、例えば直接メモリアクセスを介して入力/出力デバイスにより直接アクセスされるデータ等のように、保護されないデータを識別してもよい。
いくつかの実施形態において、処理システム100は、アドレスごとに、物理アドレス値に加えてCビットを用いるよりも、Cビット値用の各物理アドレスの既存ビット(例えば、最上位ビット)を再利用する。また、処理システム100は、物理アドレスの1つ以上のビットを再利用して、暗号で保護された情報にアクセスすることが許可されるVM用のVMタグ値を記憶することができる。物理アドレスのビットの再利用は、処理システム100の物理アドレス空間を制限する潜在的なコストでシリコン面積を節約する。いくつかの実施形態において、プロセッサ102は、ページウォーク中に発生し得る物理アドレス上での既存のチェックを変更して、より小さいアドレスの物理アドレス空間を収容することができる。例えば、プロセッサ102は、情報暗号化が有効にされない場合に48ビットの物理アドレスを用いることができ、情報暗号化が有効にされる場合に44ビットの物理アドレスを用いることができ、Cビット及びVMタグ値のための他の4ビットを再利用する。したがって、情報暗号化が有効にされる場合に、プロセッサ102は、44ビット超を含む物理アドレスを参照するプログラム又はハードウェアモジュールに応じて、エラー表示を生成することができる。
プロセッサ102がVM及びハイパーバイザを実行するいくつかの実施形態において、アドレス変換モジュール145は、ページテーブルの1レベル以上にアクセスして、メモリ120(図4の説明のために「システム物理アドレス」と呼ばれる)によって使用されるCビット及び物理アドレスを識別してもよい。一例は、いくつかの実施形態に従い図4に示される。図示された例において、アドレス変換モジュール145は、TLB346と、ゲストページテーブル447と、ホストページテーブル449(例えば、ネストされたページテーブル)とを用いて、受信した仮想アドレスに対するシステム物理アドレスを識別するように構成されている。
ゲストページテーブル447は、ゲスト物理アドレスと呼ばれる1セットのアドレスへの仮想アドレスのマッピングを記憶する。ゲスト物理アドレスは、メモリ120の実際の物理アドレスではなく、メモリ120の仮想アドレスとシステム物理アドレスとの間の中間アドレスを表す。ホストページテーブル449は、ゲスト物理アドレスと対応するシステム物理アドレスとの間のマッピングを格納する。このようにして、ゲストページテーブル447及びホストページテーブル449は、例えばVMによって用いられるアドレス空間と、例えばハイパーバイザによって用いられるアドレス空間との間に隔離及び変換の1つの層を可能にする。図4に示された例において、アドレスに対するCビットは、特定のデータが暗号保護のために指定されるか否かをVMが制御することを可能にするゲストページテーブル447に記憶されている。これは、ハイパーバイザからCビットを隔離することによって、バグだらけのハイパーバイザ又は悪意のあるハイパーバイザによる不法利用から暗号指定を保護する。
操作中に、アドレス変換モジュール345は、メモリアクセス用の仮想アドレスを受信し、TLB346が仮想アドレスに対するシステム物理アドレスを記憶しているか否かを最初に識別する。かかる場合に、アドレス変換モジュール345は、システム物理アドレス及び対応するCビットをTLB346から取得し、取得した情報をノースブリッジ110に提供する。TLB346がシステム物理アドレスを記憶していない場合には、アドレス変換モジュール345は、受信した仮想アドレスに割り当てられたゲストページテーブル447のエントリ(例えば、エントリ448)を識別する。アドレス変換モジュール345は、識別されたエントリからCビット値を取得し、識別されたエントリでゲスト物理アドレスを使用し、ホストページテーブル449でページウォークを実行する。ページウォークの結果として、アドレス変換モジュール345は、ゲスト物理アドレスに割り当てられたホストページテーブル449のエントリ(例えば、エントリ451)を識別し、このエントリは、受信した仮想アドレスに対応するシステム物理アドレスを記憶する。アドレス変換モジュール345は、システム物理アドレスを取得し、取得したシステム物理アドレスを、ゲストページテーブル447の対応するエントリから取得されたCビットと共に、本明細書に記載されるようなメモリアクセス要求のさらなる処理のためにノースブリッジ110に提供する。また、アドレス変換モジュール345は、システム物理アドレス及びCビットを、受信した仮想アドレスに対応するTLB346のエントリに記憶する。このようにして、図4の例において、Cビットは、VMに割り当てられた一方のセットのページテーブル(ゲストページテーブル447)によって提供され、メモリ120にアクセスするために使用される物理アドレスは、ハイパーバイザに割り当てられた他方のセットのページテーブル(ホストページテーブル449)によって提供される。
図5は、いくつかの実施形態による、図1のプロセッサ102のキャッシュ108を示す図である。キャッシュ108は、キャッシュコントローラ572と、CVMタグレジスタ573と、ストレージアレイ575と、を含む。ストレージアレイ575は、エントリ用のデータを記憶するデータフィールドを含む複数のエントリ(例えば、エントリ578)と、データフィールドに記憶された情報へのアクセスが許可されるVMに対応するVMタグ値を示すVMタグフィールドと、この情報が暗号保護のために指定されるか否かを示すCビットを記憶するCビットエントリと、を含む。CVMタグレジスタ473は、プロセッサ102で現在実行されているVMに関するVMタグ値を記憶する。いくつかの実施形態において、各プロセッサコア104,106は、コアで現在実行されているVMに関するVMタグ値を示す個々のCVMタグレジスタを含む。いくつかの実施形態において、この値は、VMの実行を開始するときにプロセッサコアによって設定される。
暗号保護のために指定されたデータが、ストレージアレイ575に記憶される前に暗号化モジュール115で復号化されている場合であっても、ストレージアレイ575のエントリに記憶されたデータは暗号化されない。これにより、キャッシュコントローラ572は、ストレージアレイ575にてデータへのアクセスを制御し、暗号保護のために指定されたデータが不正なエントリによってアクセスされないことを保証する。特に、キャッシュコントローラ572は、メモリアクセス要求を受信したことに応じて、メモリアクセス要求アドレスから導かれたアドレスタグ値に基づいて、ストレージアレイ575の1つのエントリが、メモリアクセス要求によってターゲットとされた情報を記憶しているか否かを識別する。キャッシュコントローラ572は、エントリが記憶していない場合に、キャッシュミスを示し、情報の取得のためにメモリアクセス要求をノースブリッジ110に提供する。
ストレージアレイ575が、メモリアクセス要求によってターゲットとされた情報を記憶するエントリを確かに含む場合に、キャッシュコントローラ572は、エントリのためのCビットがアサート状態にあるか否かを判別する。アサート状態にない場合には、当該情報を暗号保護用に指定しない。したがって、キャッシュコントローラ572は、情報をエントリに書き込む(書き込み要求の場合に)こと、又は、エントリのデータフィールドで情報を取得及び提供する(読み出し要求の場合に)ことの何れかでキャッシュヒットを示し、メモリアクセス要求を満たす。Cビットがアサート状態にある場合には、当該情報を暗号保護用に指定する。これに応じて、キャッシュコントローラ572は、エントリのVMタグフィールドでのVMタグ値と、CMV ID値レジスタ573に記憶されたVMタグ値とを比較する。値の一致は、プロセッサ102で現在実行しているVMが、エントリで情報にアクセスするために認証されるVMであることを示している。したがって、キャッシュコントローラ572は、一致に応じて、キャッシュヒットを示し、メモリアクセス要求を満たす。キャッシュコントローラ572は、VMタグ値間の不一致に応じて、キャッシュミスを示し、この要求を満たさない。これにより、現在実行しているVMが、暗号保護用に指定された情報にアクセスするために認証されない場合に、キャッシュコントローラ572は、アクセスを防止する。これは、不正なアクセスから情報を隔離したままで、ストレージアレイ575が、異なるVMのために記憶情報を同時に記憶することを可能にする。いくつかの実施形態において、キャッシュコントローラ572は、セキュリティ侵害の企てを監視エンティティに順に通知することの可能な情報、例えばセキュリティモジュール130に通知する等の情報にアクセスするために、現在実行しているVMを認証しないのを識別したことに応じて、追加の動作を行うことができる。
図6は、いくつかの実施形態による、図1のプロセッサ102のキャッシュ108を示す図である。ここで、VMタグ値は、キャッシュ108にてキャッシュヒットを識別するために用いられるTLB676内に記憶される。TLB676は、複数のエントリ(例えば、678)を含み、各エントリは、ストレージアレイ675の1つのエントリに対応している。TLB676の各エントリは、ストレージアレイ675の対応するエントリの物理アドレスと、物理アドレスに割り当てられた仮想アドレスと、ストレージアレイ675のエントリに記憶された情報にアクセスするために認証されるVMを示すVMタグ値と、情報を暗号保護用に指定するか否かを示すCビット値と、を記憶する。
アドレス変換モジュール345は、メモリアクセス要求を受信したことに応じて、TLB676の任意のエントリが、メモリアクセス要求の仮想アドレスに一致する仮想アドレスを記憶するか否かを識別する。アドレス変換モジュール345は、仮想アドレスを記憶しない場合に、ページテーブルウォークを実行して仮想アドレスに対するシステム物理アドレスを識別し、この情報を用いて新規のTLBエントリを作成する。キャッシュコントローラ572は、メモリアクセス要求によってターゲットとされた情報を記憶するエントリをTLB676が含むと、ストレージアレイ575が、Cビット値と、システム物理アドレスと、VMタグ値と、について対応するマッチング値を記憶するエントリを含むか否かを識別する。エントリを含む場合に、キャッシュコントローラ572は、キャッシュヒットを示し、キャッシュ108でメモリアクセス要求を満たす。ストレージアレイ575がかかるエントリを含まない場合に、キャッシュコントローラ572は、キャッシュミスを示し、メモリアクセス要求を満たさない。また、キャッシュコントローラ572は、より高レベルのキャッシュ及び/又はノースブリッジ110に対してメモリ要求を発行して、要求された情報を取得することができる。
いくつかの実施形態において、他の情報の記憶を可能にするストレージアレイ675のエントリ(例えば、キャッシュライン)を排除する場合に、キャッシュコントローラ572は、ノースブリッジ110に対して、図5のエントリ578で示されるように、記憶されたCビット及びVMタグ値とともに、排除される情報を提供する。ノースブリッジ110は、これに応じて、Cビットがアサート状態にあるか否かを識別し、アサート状態にある場合に、暗号化モジュール115は、VMタグ値に割り当てられたキーに基づいて、当該情報を暗号化する。次に、ノースブリッジ110は、記憶用のメモリ120に対してこの情報を提供する。Cビットがネゲート状態にある場合には、ノースブリッジ110は、暗号化モジュール115をバイパスして、暗号化されない情報を記憶用のメモリ120に提供する。
いくつかの状況において、ハイパーバイザ252(図2)は、メモリ120に記憶されたVM情報にアクセスする必要があり、又は、一方のメモリ位置から他方のメモリ位置へかかる情報を移動させ得ることを保証する。しかしながら、かかる情報は、キャッシュ108で変更されている可能性があり、ハイパーバイザ252は、適切なVMタグ値を使用不可能であるため、キャッシュ108にてかかる情報にアクセス不可能である。ハイパーバイザ252が、メモリのインコヒーレントビューを避けて最新のデータのコピー(暗号化された)にアクセス可能であることを保証するために、ハイパーバイザ252は、キャッシュ108のストレージアレイ675全体を消去することができるが、これは、プロセッサ102の性能に望ましくない影響を与える可能性がある。それに応じて、いくつかの実施形態において、プロセッサコア104,106が、操作によって識別されたVMタグ値及びアドレス範囲と関連したストレージアレイ575でキャッシュ108がエントリを消去することを要求する操作を発行することが可能である。これに応じて、キャッシュコントローラ572は、VMタグ値及びアドレス範囲に対応するストレージアレイ675で任意のエントリを消去する。ノースブリッジ110は、アサート状態でその対応するCビットを含む任意の情報を暗号化する、メモリ120へ消去された情報をコピーする。したがって最新の情報は、メモリ120でハイパーバイザ252によるアクセスのために利用可能である。
図7は、暗号保護用に指定された情報を保護するためにキャッシュでメモリアクセス要求を処理する方法700のフロー図である。説明のために、この方法は、図1及び図5で示したキャッシュ108での例示的な実装に関して記載されている。ブロック702では、プロセッサコア104,106のうち1つは、要求された情報を識別する仮想アドレスを用いてメモリアクセス要求を生成する。ブロック704では、アドレス変換モジュール345(図3)は、TLB346及びページテーブル347(又は、TLB346、ゲストページテーブル447及びホストページテーブル449)を用いて、仮想アドレスと、物理アドレスにて情報を暗号保護用に指定するか否かを示すCビット値と、に対応するシステム物理アドレスを識別する。このアドレス変換モジュール345は、メモリアクセス要求とともにシステム物理アドレス値及びCビット値を、キャッシュ108に提供する。
ブロック706では、キャッシュコントローラ572(図5)は、メモリアクセス要求と関連した物理アドレスに基づいて、ストレージアレイ575のエントリが、当該要求によってターゲットとされた情報を記憶するか否かを識別する。記憶しない場合には、方法フローは、ブロック708へ進み、キャッシュコントローラ572は、キャッシュミスを示す。また、キャッシュコントローラ572は、メモリアクセス要求を満たすために、Cビット値と物理アドレス値とを含むメモリアクセス要求をノースブリッジ110に提供する。ストレージアレイ575のエントリが、メモリアクセス要求によってターゲットとされた情報を確実に記憶する場合に、方法フローはブロック710に進み、キャッシュコントローラ572は、識別されたエントリに関するCビットがアサートされるか否かを識別する。アサートされない場合には、暗号保護用に識別されたエントリでの情報を指定しない。それに応じて、方法フローはブロック712へ移動して、キャッシュコントローラ572は、識別されたエントリのデータフィールドに情報を書き込むこと、又は、ストレージアレイ575の識別されたエントリから情報を取得することによって、メモリアクセス要求を満たす。
ブロック710に戻り、識別されたエントリ用のCビットを設定することをキャッシュコントローラ572が判別する場合に、方法フローはブロック714へ移動して、キャッシュコントローラ572は、識別されたエントリでのVMタグ値が、CVMタグレジスタ573に記憶されたCVMタグ値に一致するか否かを判別する。一致する場合には、現在実行しているVMが、ストレージアレイ575の識別されたエントリにて情報にアクセスするために認証されるVMに一致することを示す。それに応じて、方法フローはブロック712に進み、キャッシュコントローラ572は、識別されたエントリでこの情報を使用してメモリアクセス要求を満たす。ブロック714では、識別されたエントリのVMタグ値が、CVMタグレジスタ573に記憶されたCVMタグ値と不一致であるとキャッシュコントローラが判別した場合には、方法フローはブロック716に移動して、キャッシュコントローラ572は、キャッシュミスを示す。キャッシュコントローラ572は、メモリアクセス要求を満たさないため、暗号保護用に指定された情報を不正なアクセスから保護する。
図8は、暗号保護用に指定された情報を識別するためにTLBを使用してキャッシュでメモリアクセス要求を処理する方法800のフロー図である。説明のために、この方法は、図1及び図6で示されたキャッシュ108での例示的な実装に関して説明される。ブロック802では、プロセッサコア104,106のうち1つは、要求された情報を識別する仮想アドレスを用いてメモリアクセス要求を生成する。
ブロック806では、TLB676は、メモリアクセス要求と関連した仮想アドレス及びVMタグ値に基づいて、TLB676が仮想アドレス及びVMタグ値用のエントリを含むか否かを識別する。含む場合には、方法フローは後述するブロック810へ進む。含まない場合には、方法フローはブロック808に進み、アドレス生成ユニット345は、テーブルウォークを実行して、仮想アドレス用のシステム物理アドレス及びCビット値を識別する。また、TLB676は、CVMタグレジスタ573からVMタグ値を取得する。TLB676は、1つのエントリに、システム物理アドレス、仮想アドレス、VMタグ値及びCビット値を配置する。方法フローはブロック810に進み、TLB676は、エントリでのCビット値、システム物理アドレス及びVMタグ値を、キャッシュコントローラ572に送信する。ブロック812では、キャッシュコントローラ572は、キャッシュ108が、Cビット値、システム物理アドレス及びVMタグ値に関して対応するマッチング値を記憶するエントリを含むか否かを識別する。含む場合には、方法フローはブロック814へ進み、キャッシュコントローラ572は、キャッシュヒットを示し、キャッシュ108でメモリアクセス要求を満たす。ブロック812では、キャッシュ108がCビット値、VMタグ値、または物理アドレス値に一致するエントリを含まない場合に、方法フローはブロック816へ進み、キャッシュコントローラ572は、キャッシュミスを示す。また、キャッシュコントローラ572は、メモリアクセス要求を満たすために、Cビット値及びVMタグと、物理アドレス値とを含むメモリアクセス要求を、ノースブリッジ110に提供する。キャッシュコントローラ572は、メモリアクセス要求を満たさないため、暗号保護用に指定された情報を不正なアクセスから保護する。
図9は、いくつかの実施形態による、暗号保護用に指定された情報を保護するために、メモリコントローラでメモリアクセス要求を処理する方法900のフロー図である。説明のために、図1のノースブリッジ110での例示的な実装に関する方法900が記載されている。ブロック902では、ノースブリッジ110は、メモリアクセス要求をキャッシュ108から受信する。メモリアクセス要求は、プロセッサコア104,106のうち1つによって生成された要求であってもよいし、キャッシュ108がエントリを排除して満たす場合にキャッシュ108の代わりに生成された要求であってもよい。図1〜8に関して上述したように、メモリアクセス要求が保護用のメモリアクセス要求であるか否かを示すCビット値を含むメモリアクセス要求用の物理アドレス値及びVMタグ値は、アドレス変換モジュール345によって既に識別されている。
ブロック904では、ノースブリッジ110は、メモリアクセス要求用のCビットがアサートされているか否かを判定する。アサートされていない場合、メモリアクセス要求は、保護用ではないメモリアクセス要求である。よって、方法フローはブロック906に移動し、ノースブリッジ110は、暗号化モジュールをバイパスして、メモリアクセス要求を満たす。これに応じて、ノースブリッジ110は、書き込み要求の場合に書き込み情報を暗号化しないため、メモリ120は、暗号化されない形式で書き込み情報を記憶する。ノースブリッジ110は、読み出し要求の場合にメモリ120から情報を取得し、情報を復号化しないでキャッシュ108に提供する。取得した情報が既に暗号化されている場合には、当該情報が暗号化された形式では意味がないこと又は有用ではないことに留意する。これにより、悪意のあるエンティティ(例えば、ハッキングソフトウェア)は、暗号で保護された情報に対して保護用ではないメモリ要求を用いたアクセスを試みることによって、当該情報へのアクセスを達成することが不可能である。
ブロック904に戻り、ノースブリッジが、メモリアクセス要求用のCビットをアサートすることを識別した場合、その後のメモリアクセス要求は、保護用のメモリアクセス要求である。それに応じて、方法フローはブロック908にへ移動し、ノースブリッジ110は、メモリアクセス要求に基づき、メモリアクセス要求と関連したVMを識別する。ブロック910では、ノースブリッジ110は、識別されたVMに対応するキー126のうち1つのキーを識別する。ブロック912では、暗号化モジュール115は、メモリアクセス要求を満たすために使用される情報を暗号化又は復号化する。すなわち、メモリアクセス要求が書き込み要求である場合、暗号化モジュール115は、書き込まれる情報を暗号化する。メモリアクセス要求が読み出し要求である場合、ノースブリッジ110は、メモリ120から読み出される情報を取得して、暗号化モジュール115は、取得した情報を復号化する。ブロック914では、ノースブリッジ110は、暗号化された情報(書き込み要求の場合)又は復号化された情報(読み出し要求の場合)を使用して、メモリアクセス要求を満たす。
本明細書で記載されるように、いくつかの実施形態において、VMタグ(又はVMタグ値と呼ばれる)は、現在実行しているVM、及び、暗号保護用に指定された情報にアクセスするのを許可されたVMの両方を識別するために使用される。いくつかの状況において、割り当て用に利用可能なVMタグの数は、実行用に利用可能なVMの数よりも少ない。図10は、いくつかの実施形態による、VMタグ値を割り当てる方法1000のフロー図である。説明のために、方法1000は、図1及び図2の処理システム100での例示的な実装に関して記載されており、セキュリティモジュール130は、VMタグ値の生成及び割り当てを管理する。
ブロック1002で、セキュリティモジュール130は、ハイパーバイザ252がプロセッサコア104,106のうち1つ以上でVMの実行を開始していることを示すVMタグ用のハイパーバイザ252から要求を受信する。ハイパーバイザ252は、実行されるVM用の識別値(場合によりVMID値と呼ばれる)を含むセキュリティモジュール130を提供する。それに応じて、ブロック1004では、セキュリティモジュール130は、割り当てられたVMタグの記憶されたテーブルにアクセスして、VMタグ値が既にVMに割り当てられているか否かを識別する。割り当てられている場合、この方法フローはブロック1006に進み、セキュリティモジュール130は、既に割り当てられたVMタグ値をハイパーバイザ252に提供する。このようにして、VMタグ値は、例えばキャッシュ108で使用するために利用可能であり、実行しているVM用の保護情報を識別する。
ブロック1004に戻り、VMタグ値がVMにまだ割り当てられていない場合、方法フローはブロック1008へ進み、セキュリティモジュール130は、全てのVMタグ値が既に他のVMに割り当てられているか否かを識別する。割り当てられない場合には、方法フローはブロック1010へ移動し、セキュリティモジュール130は、VMタグ値をVMに割り当て、割り当てられたVMタグのテーブルにVMタグ値を記憶する。方法フローはブロック1006へ進み、セキュリティモジュール130は、割り当てられたVMタグ値をハイパーバイザ252に提供する。
ブロック1008に戻り、セキュリティモジュール130が、全ての利用可能なVMタグ値が割り当てられていることを識別した場合に、既に割り当てられたVMタグは、実行しているVMに再度割り当てられなければならない。しかしながら、このことは、実行しているVMが、アクセスするのに認証されないキャッシュ108にて保護情報にアクセスするのを可能にする。それに応じて、方法フローはブロック1012に進み、セキュリティモジュール130は、ハイパーバイザ252に対してキャッシュ108を消去することを要求するので、対応するCビットにより要求されるような暗号化された形式、又は、暗号化されない形式で全ての情報をメモリ120に書き込むことによって、保護情報をキャッシュ108から削除する。ブロック1014では、セキュリティモジュール130は、キャッシュ108が消去されているハイパーバイザ252から肯定応答を受信し、これに応じて、全てのVMタグを未使用としてマーク付けする。方法フローはブロック1010に移動し、セキュリティモジュール130は、新規のVMタグ値をVMに割り当て、割り当てられたVMタグのテーブルにVMタグ値を記憶する。方法フローはブロック1006に進み、セキュリティモジュール130は、割り当てられたVMタグ値をハイパーバイザ252に提供する。
いくつかの実施形態において、上述した装置及び技術は、図1〜10を参照して上記のように説明したプロセッサ等の1つ以上の集積回路(IC)デバイス(又は集積回路パッケージ若しくはマイクロチップと呼ばれる)を含むシステムに実装される。電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造で使用され得る。典型的に、これらの設計ツールは、1つ以上のソフトウェアプログラムとして表現される。この1つ以上のソフトウェアプログラムは、回路を製造する製造システムを設計又は改造するプロセスの少なくとも一部を実行するようにコンピュータシステムによって実行可能なコードを含み、コンピュータシステムを操作して1つ以上のICデバイスの回路構成を表すコード上で動作する。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。典型的に、設計ツール又は製造ツールを表すソフトウェア命令は、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同一のコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に格納されてもよいし、これらの媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供する、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体又は記憶媒体の組み合わせを含み得る。かかる記憶媒体は、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ若しくは磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体を含み得る。コンピュータ可読記憶媒体は、コンピューティングシステム(例えば、システムRAM又はROM)に組み込まれてもよいし、コンピューティングシステム(例えば、磁気ハードドライブ)に固着されてもよいし、コンピューティングシステム(例えば、光ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱されもよいし、有線又は無線ネットワーク(例えば、ネットワークアクセス可能なストレージ(NAS))を介してコンピュータシステムに接続されてもよい。
図11は、いくつかの実施形態による1つ以上の態様を実装するICデバイスの設計及び製造のための例示的な方法1100を示すフロー図である。上述したように、以下のプロセスの各々のために生成されたコードは、対応する設計ツール又は製造ツールによるアクセス及び使用のための非一時的なコンピュータ可読記憶媒体に記憶されてもよいし、その他の方法で具現化されてもよい。
ブロック1102では、ICデバイスの機能仕様を生成する。この機能仕様(よくマイクロアーキテクチャ仕様(MAS)と呼ばれる)は、C、C++、SystemC、Simulink若しくはMATLABを含む様々なプログラミング言語又はモデリング言語より表され得る。
ブロック1104では、機能仕様を使用して、ICデバイスのハードウェアを表すハードウェア記述コードを生成する。いくつかの実施形態において、このハードウェア記述コードは、ICデバイスの回路の形式記述及び設計のための様々なコンピュータ言語、仕様言語又はモデリング言語を含む、少なくとも1つのハードウェア記述言語(HDL)を使用して表される。典型的に、生成されたHDLコードは、ICデバイスの回路の動作と、回路の設計及び統合と、シミュレーションを通してICデバイスの正常動作を検証するテストと、を表す。HDLの例は、AnalogHDL(AHDL)、VerilogHDL、SystemVerilogHDL及びVHDLを含む。同期デジタル回路を実装するICデバイスについて、ハードウェア記述コードは、レジスタトランスファレベル(RTL)コードを含み、同期デジタル回路の動作を表すアブストラクトを提供することができる。回路の他の種類について、ハードウェア記述コードは、動作レベルコードを含み、回路の動作を表すアブストラクトを提供することができる。典型的に、ハードウェア記述コードにより表されたHDLモデルは、設計検証をパスするためにシミュレーション及びデバッグの1つ以上のラウンドを受ける。
ハードウェア記述コードにより表された設計を検証した後に、ブロック1106では、ハードウェア記述コードを合成するために合成ツールが使用され、ICデバイスの回路構成の最初の物理的な実装を表すコード又は当該実装を定義するコードを生成する。いくつかの実施形態において、合成ツールは、回路デバイスインスタンス(例えば、ゲート、トランジスタ、レジスタ、コンデンサ、インダクタ、ダイオード等)及びネットを含む1つ以上のネットリスト、又は、回路デバイスインスタンス間の接続を生成する。また、ネットリストの全て又は一部は、合成ツールを使用せずに手動で生成されてもよい。ネットリストは、ハードウェア記述コードと同様に、1つ以上のネットリストの最終セットを生成する前に1つ以上のテスト及び検証プロセスを受けることができる。
また、回路図エディタツールは、ICデバイスの回路の概略図を起草するために使用されることが可能であり、次いで、回路図キャプチャツールは、得られた回路図をキャプチャして、回路図のコンポーネント及び接続を表す1つ以上のネットリスト(コンピュータ可読媒体に記憶される)を生成するために使用され得る。次に、キャプチャされた回路図は、テスト及び検証のためにシミュレーションの1つ以上のラウンドを受けることができる。
ブロック1108では、1つ以上のEDAツールは、ブロック1106で生成されたネットリストを使用して、ICデバイスの回路構成の物理的なレイアウトを表すコードを生成する。このプロセスは、例えばネットリストを使用する配置ツールを含み、ICデバイスの回路構成の各素子の位置を決定又は固定することが可能である。さらに、配線ツールは、ネットリストに従って回路素子を接続するために必要なワイヤを加えて配線するように、配置プロセス上に構築する。得られたコードは、ICデバイスの3次元モデルを表す。このコードは、例えばグラフィックデータベースシステムII(GDSII)フォーマット等のデータベースファイルフォーマットで表され得る。典型的に、このフォーマットのデータは、階層形式で回路レイアウトについての幾何学的形状、テキストラベル及び他の情報を表す。
ブロック1110では、物理レイアウトコード(例えば、GDSIIコード)は、ICデバイスを製造するために製造施設(例えば、マスクワークを介して)の製造ツールを構成又は改造するために物理レイアウトコードを使用する、製造施設に提供される。すなわち、物理レイアウトコードは、1つ以上のコンピュータシステムでプログラミングされてもよく、次に製造施設のツールの操作又は当該操作中に実行された製造オペレーションを全体又は部分的に制御することができる。
いくつかの実施形態において、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサにより実装され得る。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、その他の方法で当該媒体にて有形に具現化された1つ以上のセットの実行可能な命令を含む。このソフトウェアは、1つ以上のプロセッサによる実行時に、1つ以上のプロセッサを操作して上記技術の1つ以上の態様を実行する命令及び特定のデータを含み得る。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスクストレージデバイス、例えばフラッシュメモリ等のソリッドステートストレージデバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の1つの不揮発性メモリデバイス若しくは複数の不揮発性メモリデバイス等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能な命令は、1つ以上のプロセッサにより解釈され、若しくは、その他の方法で実行可能なソースコード、アセンブリ言語コード、オブジェクトコード、又は、他の命令フォーマットであってもよい。
これらの説明に加えて、一般的な説明において上記のアクティビティ又は要素の全てが必要とされないこと、具体的なアクティビティ又はデバイスの一部が必要とされない可能性があること、及び、さらに1つ以上のアクティビティが実行され、1つ以上の要素が含まれる可能性があることに留意されたい。さらに、アクティビティがリストされる順序は、必ずしもそれらが実行される順序ではない。また、概念は、具体的な実施形態を参照して説明されている。しかしながら、当業者は、様々な修正及び変更が以下の特許請求の範囲に記載されるような本開示の範囲から逸脱することなく行われ得ることを理解するであろう。それに応じて、明細書及び図面は、限定的な意味ではなく例示的な意味を有するものとみなされるべきであり、全てのかかる修正は本開示の範囲内に含まれることが意図される。
効果、他の利点、及び、問題に対する解決策は、具体的な実施形態に関して上記で説明されている。しかしながら、効果、利点、問題に対する解決策、及び、発生又はより顕著になる任意の効果、利点、解決策を引き起こす可能性のある任意の特徴は、任意の若しくは全ての特許請求の範囲の重要な、必要な、又は、本質的な特徴として解釈されるべきではない。さらに、上記で開示された特定の実施形態は例示であって、開示された主題は、本明細書の技術の効果を有するように、当業者に明らかであるように、異なるが同等の方式で修正及び実施され得る。以下の特許請求の範囲に記載されたもの以外に本明細書にて示された構成又は設計の詳細への如何なる制限も意図されない。したがって、上記で開示された特定の実施形態を変更又は修正することができ、全てのかかる変形が、開示された発明の主題の範囲内にあるとみなされることが明らかである。それに応じて、本願で保護を求めている発明は、以下の特許請求の範囲に記載されている。

Claims (17)

  1. 第1プロセッサコアにて、第1の要求された情報を識別する仮想アドレスを含む第1メモリアクセス要求を生成することと、
    トランスレーションルックアサイドバッファ(TLB)にて、前記仮想アドレスと、前記第1メモリアクセス要求に関連する仮想マシン(VM)タグ値とに基づいて、前記TLBが前記仮想アドレス及び前記VMタグ値のエントリを含むことを識別したことに応じて、前記仮想アドレスに対応するシステム物理アドレスと、前記VMタグ値と、前記第1の要求された情報が暗号保護用に指定されているかどうかの指示と、をキャッシュのキャッシュコントローラに送信することと、
    前記キャッシュコントローラにて、前記キャッシュが、前記VMタグ値と、前記システム物理アドレスと、前記第1の要求された情報が暗号保護用に指定されているかどうかの指示と、に対応するエントリを含むことを識別したことに応じて、キャッシュヒットを示し、前記キャッシュにおいて前記第1メモリアクセス要求を満たすことと、
    を備える、方法。
  2. 前記第1メモリアクセス要求の前記仮想アドレスに対応するゲスト物理アドレスに含まれるビットに基づいて、前記第1の要求された情報が暗号保護用に指定されているのを識別すること、
    をさらに備える、請求項1の方法。
  3. 前記ゲスト物理アドレスを含むページテーブルに基づいて、前記ゲスト物理アドレスに含まれるビットを識別すること、
    をさらに備える、請求項2の方法。
  4. 前記第1の要求された情報が暗号保護用に指定されているのを識別したことに応じて、
    前記メモリアクセス要求を生成した仮想マシンを示す仮想マシン識別値に基づいて、キーを識別すること、をさらに備え、
    前記第1の要求された情報を暗号化することは、前記キーに基づいて前記第1の要求された情報を暗号化することを含む、
    請求項1の方法。
  5. 前記プロセッサコアから分離したセキュリティモジュールから前記キーを受信すること、
    をさらに備える、請求項4の方法。
  6. 前記第1メモリアクセス要求を受信することは、前記プロセッサコアで実行されるハイパーバイザを介して前記第1メモリアクセス要求を受信することを備える、
    請求項1の方法。
  7. メモリコントローラにて、第2の要求された情報をメモリに書き込むための第2メモリアクセス要求を受信することと、
    前記第2の要求された情報が暗号保護用に指定されていないのを識別したことに応じて、前記メモリコントローラにて、前記第2の要求された情報を暗号化せずに、前記メモリで記憶するために前記第2の要求された情報を提供することと、
    をさらに備える、請求項1の方法。
  8. 前記キャッシュが前記VMタグ値に対応するエントリを含まないことを識別したことに応じて、キャッシュミスを示すこと、
    をさらに備える、請求項1の方法。
  9. プロセッサのメモリコントローラにて、第1仮想マシンから第1メモリアクセス要求を受信したことに応じて、
    前記第1仮想マシンに割り当てられた第1キーを識別することと、
    前記第1キーに基づいて、前記第1メモリアクセス要求に関連した第1情報を前記メモリコントローラにて暗号化することと、
    前記プロセッサのキャッシュにて、前記第1情報を識別する仮想アドレスを含む第2メモリアクセス要求を受信したことと、トランスレーションルックアサイドバッファ(TLB)にて、前記仮想アドレスと、前記第2メモリアクセス要求に関連する仮想マシンタグ値とに基づいて、前記TLBが前記仮想アドレス及び前記仮想マシンタグ値のエントリを含むことを識別したこととに応じて、前記仮想アドレスに対応するシステム物理アドレスと、前記仮想マシンタグ値と、前記第1情報が暗号保護用に指定されているかどうかの指示と、をキャッシュのキャッシュコントローラに送信することと、
    前記キャッシュコントローラにて、前記キャッシュが、前記仮想マシンタグ値と、前記システム物理アドレスと、前記第1情報が暗号保護用に指定されているかどうかの指示と、に対応するエントリを含むことを識別したことに応じて、キャッシュヒットを示し、前記キャッシュにおいて前記第1メモリアクセス要求を満たすことによって、暗号化された前記第1情報へのアクセスを提供することと、
    を備える、方法。
  10. 前記メモリコントローラにて、前記第1キーとは異なる第2キーが割り当てられている第2仮想マシンから第3メモリアクセス要求を受信したことに応じて、
    前記第2仮想マシンが前記第3メモリアクセス要求に関連する第1情報を正しく解釈できないようにすることと
    をさらに備える、請求項9の方法。
  11. 前記キャッシュが前記仮想マシンタグ値に対応するエントリを含まないことを識別したことに応じて、キャッシュミスを示すこと、
    をさらに備える、請求項9の方法。
  12. 前記第1情報を暗号化することは、前記第1メモリアクセス要求の前記仮想アドレスに対応するゲスト物理アドレスに含まれるビットに基づいて前記第1情報が暗号保護用に指定されているのを識別したことに応じて、前記第1情報を暗号化することを備える、
    請求項9の方法。
  13. 第1の要求された情報を識別する仮想アドレスを含む第1メモリアクセス要求を生成するプロセッサコアと、
    トランスレーションルックアサイドバッファ(TLB)であって、前記仮想アドレスと、前記第1メモリアクセス要求に関連する仮想マシン(VM)タグ値とに基づいて、前記仮想アドレス及び前記VMタグ値のエントリを含むことを識別するTLBと、
    前記仮想アドレスに対応するシステム物理アドレスと、前記VMタグ値と、前記第1の要求された情報が暗号保護用に指定されているかどうかの指示と、を前記TLBから受信するキャッシュのキャッシュコントローラであって、前記キャッシュが、前記VMタグ値と、前記システム物理アドレスと、前記第1の要求された情報が暗号保護用に指定されているかどうかの指示と、に対応するエントリを含むことを識別したことに応じて、キャッシュヒットを示し、前記キャッシュにおいて前記第1メモリアクセス要求を満たすキャッシュコントローラと、を備える、
    プロセッサ。
  14. 前記第1の要求された情報が暗号保護用に指定されているかどうかの指示は、前記第1メモリアクセス要求の前記仮想アドレスに対応するゲスト物理アドレスに含まれるビットを備える、
    請求項13のプロセッサ。
  15. 前記ゲスト物理アドレスを含むページテーブルに基づいて、前記ゲスト物理アドレスに含まれるビットを識別するアドレス生成ユニットをさらに備える、
    請求項14のプロセッサ。
  16. 第1仮想マシンから前記第1メモリアクセス要求を受信したことに応じて、前記第1仮想マシンに割り当てられた第1キーを識別し、前記第1メモリアクセス要求に関連する前記第1の要求された情報を前記第1キーに基づいて暗号化するメモリコントローラをさらに備える、
    請求項13のプロセッサ。
  17. 前記キャッシュコントローラは、
    前記キャッシュが前記仮想マシンタグ値に対応するエントリを含まないことを識別したことに応じて、キャッシュミスを示す、
    請求項13のプロセッサ。
JP2016554448A 2014-02-28 2015-02-27 処理システムにおける情報の暗号保護 Active JP6450775B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201461946086P 2014-02-28 2014-02-28
PCT/US2015/017925 WO2015178987A2 (en) 2014-02-28 2015-02-27 Cryptographic protection of information in a processing system

Publications (3)

Publication Number Publication Date
JP2017517043A JP2017517043A (ja) 2017-06-22
JP2017517043A5 JP2017517043A5 (ja) 2018-04-05
JP6450775B2 true JP6450775B2 (ja) 2019-01-09

Family

ID=54006834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016554448A Active JP6450775B2 (ja) 2014-02-28 2015-02-27 処理システムにおける情報の暗号保護

Country Status (6)

Country Link
US (2) US9792448B2 (ja)
EP (1) EP3111365B1 (ja)
JP (1) JP6450775B2 (ja)
KR (1) KR102456084B1 (ja)
CN (2) CN106062768B (ja)
WO (1) WO2015178987A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220222137A1 (en) * 2021-01-12 2022-07-14 Qualcomm Incorporated Protected data streaming between memories

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US10095532B2 (en) * 2014-04-28 2018-10-09 Netkine, Inc. Providing excess compute resources with virtualization
US9298647B2 (en) * 2014-08-25 2016-03-29 HGST Netherlands B.V. Method and apparatus to generate zero content over garbage data when encryption parameters are changed
US9875189B2 (en) 2015-06-12 2018-01-23 Intel Corporation Supporting secure memory intent
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US10152612B2 (en) * 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
GB2543520B (en) * 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
US10102151B2 (en) * 2015-11-06 2018-10-16 International Business Machines Corporation Protecting a memory from unauthorized access
US10146936B1 (en) * 2015-11-12 2018-12-04 EMC IP Holding Company LLC Intrusion detection for storage resources provisioned to containers in multi-tenant environments
CN108496159A (zh) * 2016-01-21 2018-09-04 惠普发展公司,有限责任合伙企业 数据密码引擎
FR3048529B1 (fr) * 2016-03-01 2018-03-23 Ingenico Group Procede de modulation d'acces a une ressource, dispositif et programme correspondant
US20170277903A1 (en) * 2016-03-22 2017-09-28 Qualcomm Incorporated Data Protection Using Virtual Resource Views
US20170277898A1 (en) * 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
US10348500B2 (en) * 2016-05-05 2019-07-09 Adventium Enterprises, Llc Key material management
US11126565B2 (en) * 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
US10459850B2 (en) * 2016-09-20 2019-10-29 Advanced Micro Devices, Inc. System and method for virtualized process isolation including preventing a kernel from accessing user address space
US10740466B1 (en) 2016-09-29 2020-08-11 Amazon Technologies, Inc. Securing interfaces of a compute node
US10176122B2 (en) 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US20180165224A1 (en) * 2016-12-12 2018-06-14 Ati Technologies Ulc Secure encrypted virtualization
US10417433B2 (en) * 2017-01-24 2019-09-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Encryption and decryption of data owned by a guest operating system
US10496425B2 (en) * 2017-02-21 2019-12-03 Red Hat, Inc. Systems and methods for providing processor state protections in a virtualized environment
US10474359B1 (en) 2017-02-28 2019-11-12 Amazon Technologies, Inc. Write minimization for de-allocated memory
US10404674B1 (en) * 2017-02-28 2019-09-03 Amazon Technologies, Inc. Efficient memory management in multi-tenant virtualized environment
US10901627B1 (en) 2017-02-28 2021-01-26 Amazon Technologies, Inc. Tracking persistent memory usage
US10338951B2 (en) 2017-03-01 2019-07-02 Red Hat, Inc. Virtual machine exit support by a virtual machine function
US10509733B2 (en) 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
US10209917B2 (en) 2017-04-20 2019-02-19 Red Hat, Inc. Physical memory migration for secure encrypted virtual machines
US10379764B2 (en) 2017-05-11 2019-08-13 Red Hat, Inc. Virtual machine page movement for encrypted memory
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US11354420B2 (en) * 2017-07-21 2022-06-07 Red Hat, Inc. Re-duplication of de-duplicated encrypted memory
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US20190102324A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Cache behavior for secure memory repartitioning systems
US11281495B2 (en) 2017-10-26 2022-03-22 Advanced Micro Devices, Inc. Trusted memory zone
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US10893505B2 (en) 2018-01-23 2021-01-12 Statum Systems Inc. Enhanced pager network
US11074997B2 (en) * 2018-01-23 2021-07-27 Statum Systems Inc. Multi-modal encrypted messaging system
US10838773B2 (en) 2018-03-30 2020-11-17 Intel Corporation Techniques for dynamic resource allocation among cryptographic domains
US10871983B2 (en) * 2018-05-31 2020-12-22 Intel Corporation Process-based multi-key total memory encryption
CN110659226A (zh) * 2018-06-28 2020-01-07 晨星半导体股份有限公司 用以存取数据的方法以及相关电路
GB2576005B (en) * 2018-07-31 2020-10-07 Advanced Risc Mach Ltd Handling guard tag loss
US10838915B2 (en) * 2018-09-06 2020-11-17 International Business Machines Corporation Data-centric approach to analysis
US10838722B2 (en) * 2018-12-20 2020-11-17 Intel Corporation Restartable cache write-back and invalidation
US11829517B2 (en) * 2018-12-20 2023-11-28 Intel Corporation Method and apparatus for trust domain creation and destruction
US10956188B2 (en) * 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
US11176054B2 (en) * 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11347869B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
EP4004773B1 (en) * 2019-07-29 2023-09-06 Intertrust Technologies Corporation Systems and methods for managing state
US11842227B2 (en) 2019-10-10 2023-12-12 Advanced Micro Devices, Inc. Hypervisor secure event handling at a processor
CN112825041A (zh) * 2019-11-21 2021-05-21 上海海思技术有限公司 一种内存隔离的装置、内存隔离方法和相关设备
US11614956B2 (en) 2019-12-06 2023-03-28 Red Hat, Inc. Multicast live migration for encrypted virtual machines
US11763008B2 (en) 2020-01-15 2023-09-19 International Business Machines Corporation Encrypting data using an encryption path and a bypass path
US11520709B2 (en) * 2020-01-15 2022-12-06 International Business Machines Corporation Memory based encryption using an encryption key based on a physical address
US11567791B2 (en) * 2020-06-26 2023-01-31 Intel Corporation Technology for moving data between virtual machines without copies
CN111949376B (zh) * 2020-08-24 2021-12-17 海光信息技术股份有限公司 虚拟机系统和用于虚拟机系统的方法
US11620377B2 (en) * 2020-08-27 2023-04-04 Ventana Micro Systems Inc. Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context
US11625479B2 (en) 2020-08-27 2023-04-11 Ventana Micro Systems Inc. Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context
US11782127B2 (en) 2021-02-05 2023-10-10 Nxp Usa, Inc. Stop criterion for greedy target detection algorithms in radar applications using sparse phased arrays
US11567676B2 (en) 2021-04-30 2023-01-31 Nxp B.V. Inline encryption/decryption for a memory controller
NL2028534B1 (en) * 2021-06-24 2023-01-02 Technolution B V Processor for secure data processing
CN113688407A (zh) * 2021-07-30 2021-11-23 山东云海国创云计算装备产业创新中心有限公司 一种数据管理方法及相关装置
US12019772B2 (en) 2021-09-14 2024-06-25 International Business Machines Corporation Storing diagnostic state of secure virtual machines
US20230188338A1 (en) * 2021-12-10 2023-06-15 Amazon Technologies, Inc. Limiting use of encryption keys in an integrated circuit device
CN114266082A (zh) * 2021-12-16 2022-04-01 北京奕斯伟计算技术有限公司 防御控制流攻击的装置、方法、处理器、设备及存储介质
US11860797B2 (en) * 2021-12-30 2024-01-02 Advanced Micro Devices, Inc. Peripheral device protocols in confidential compute architectures

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5479630A (en) * 1991-04-03 1995-12-26 Silicon Graphics Inc. Hybrid cache having physical-cache and virtual-cache characteristics and method for accessing same
US20030053630A1 (en) 2001-09-20 2003-03-20 International Business Machines Corporation Method and system for key usage control in an embedded security system
US7246245B2 (en) * 2002-01-10 2007-07-17 Broadcom Corporation System on a chip for network storage devices
US7415708B2 (en) 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US7305592B2 (en) 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US20060021066A1 (en) 2004-07-26 2006-01-26 Ray Clayton Data encryption system and method
JP4795812B2 (ja) * 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US8014530B2 (en) 2006-03-22 2011-09-06 Intel Corporation Method and apparatus for authenticated, recoverable key distribution with no database secrets
US20080126614A1 (en) * 2006-09-26 2008-05-29 Giap Yong Ooi Input/output (I/O) device virtualization using hardware
US8151262B2 (en) 2007-03-30 2012-04-03 Lenovo (Singapore) Pte. Ltd. System and method for reporting the trusted state of a virtual machine
JP4902460B2 (ja) * 2007-08-08 2012-03-21 キヤノン株式会社 画像処理装置、撮像装置及び画像処理方法
US8249257B2 (en) 2007-09-28 2012-08-21 Intel Corporation Virtual TPM keys rooted in a hardware TPM
JP4782871B2 (ja) * 2007-10-03 2011-09-28 富士通株式会社 デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置
US20090113111A1 (en) 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
CN100527098C (zh) * 2007-11-27 2009-08-12 北京大学 一种虚拟机管理器的动态内存映射方法
JP5405799B2 (ja) 2008-10-30 2014-02-05 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US20100175108A1 (en) 2009-01-02 2010-07-08 Andre Protas Method and system for securing virtual machines by restricting access in connection with a vulnerability audit
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8219990B2 (en) 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
CN101620547B (zh) * 2009-07-03 2012-05-30 中国人民解放军国防科学技术大学 X86计算机虚拟化的物理中断处理方法
US8612975B2 (en) 2009-07-07 2013-12-17 Advanced Micro Devices, Inc. World switch between virtual machines with selective storage of state information
US8627112B2 (en) 2010-03-30 2014-01-07 Novell, Inc. Secure virtual machine memory
US8856504B2 (en) 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
JP5707760B2 (ja) * 2010-07-20 2015-04-30 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、情報処理プログラム、及びそのプログラムを記録した記録媒体
US20120054740A1 (en) 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20120179904A1 (en) * 2011-01-11 2012-07-12 Safenet, Inc. Remote Pre-Boot Authentication
US8375221B1 (en) 2011-07-29 2013-02-12 Microsoft Corporation Firmware-based trusted platform module for arm processor architectures and trustzone security extensions
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
WO2013061375A1 (en) * 2011-10-27 2013-05-02 Hitachi, Ltd. Storage system and its management method
WO2013112538A1 (en) 2012-01-23 2013-08-01 Citrix Systems, Inc. Storage encryption
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US8656482B1 (en) 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
CN103020535B (zh) * 2012-12-06 2016-05-04 苏州国芯科技有限公司 一种带比较功能的数据加解密系统
US9514313B2 (en) 2013-03-15 2016-12-06 Netiq Corporation Techniques for secure data extraction in a virtual or cloud environment
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
US10193879B1 (en) 2014-05-07 2019-01-29 Cisco Technology, Inc. Method and system for software application deployment
US20180060077A1 (en) 2016-08-26 2018-03-01 Qualcomm Incorporated Trusted platform module support on reduced instruction set computing architectures

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220222137A1 (en) * 2021-01-12 2022-07-14 Qualcomm Incorporated Protected data streaming between memories
US11630723B2 (en) * 2021-01-12 2023-04-18 Qualcomm Incorporated Protected data streaming between memories
KR20230110370A (ko) * 2021-01-12 2023-07-21 퀄컴 인코포레이티드 메모리 간 보호된 데이터 스트리밍

Also Published As

Publication number Publication date
EP3111365A4 (en) 2017-11-01
US20160378522A1 (en) 2016-12-29
KR102456084B1 (ko) 2022-10-18
WO2015178987A3 (en) 2016-01-28
CN106062768A (zh) 2016-10-26
US10152602B2 (en) 2018-12-11
WO2015178987A2 (en) 2015-11-26
EP3111365A2 (en) 2017-01-04
KR20160125987A (ko) 2016-11-01
EP3111365B1 (en) 2024-07-24
JP2017517043A (ja) 2017-06-22
CN106062768B (zh) 2020-06-05
US20150248357A1 (en) 2015-09-03
CN107851151B (zh) 2020-06-30
CN107851151A (zh) 2018-03-27
US9792448B2 (en) 2017-10-17

Similar Documents

Publication Publication Date Title
JP6450775B2 (ja) 処理システムにおける情報の暗号保護
JP6618658B2 (ja) 処理システムにおけるダイレクトメモリアクセス認可
CN110447032B (zh) 管理程序与虚拟机之间的存储器页转换监测
CN109002706B (zh) 一种基于用户级页表的进程内数据隔离保护方法和系统
JP6620595B2 (ja) 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法
US10938559B2 (en) Security key identifier remapping
US20200192825A1 (en) Security for virtualized device
CN107526974A (zh) 一种信息密码保护装置和方法
CN107832589A (zh) 软件版权保护方法及其系统
JP6696352B2 (ja) プログラマブルロジック装置、情報処理装置、処理方法、及び処理プログラム
JP6672341B2 (ja) 仮想マシンの状態情報の保護
US20240054071A1 (en) Hardware mechanism to extend mktme protections to sgx data outside epc
US20240202289A1 (en) Using Ownership Identifiers in Metadata in a Memory for Protecting Encrypted Data Stored in the Memory
US20240220417A1 (en) Segmented non-contiguous reverse map table

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180222

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180222

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181030

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: 20181113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181210

R150 Certificate of patent or registration of utility model

Ref document number: 6450775

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