JP6618658B2 - 処理システムにおけるダイレクトメモリアクセス認可 - Google Patents

処理システムにおけるダイレクトメモリアクセス認可 Download PDF

Info

Publication number
JP6618658B2
JP6618658B2 JP2019521086A JP2019521086A JP6618658B2 JP 6618658 B2 JP6618658 B2 JP 6618658B2 JP 2019521086 A JP2019521086 A JP 2019521086A JP 2019521086 A JP2019521086 A JP 2019521086A JP 6618658 B2 JP6618658 B2 JP 6618658B2
Authority
JP
Japan
Prior art keywords
memory
iommu
access request
secure
processor
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
JP2019521086A
Other languages
English (en)
Other versions
JP2019532438A (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.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of JP2019532438A publication Critical patent/JP2019532438A/ja
Application granted granted Critical
Publication of JP6618658B2 publication Critical patent/JP6618658B2/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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • 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/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/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • Storage Device Security (AREA)

Description

(関連技術の説明)
多くのプロセッサアプリケーションにおいて、情報セキュリティの保護は重要な機能である。例えば、IAAS(Infrastructure As A Service)環境のサーバにおいてプロセッサを使用することができ、プロセッサは、1つ以上の仮想マシン(VM)を実行し、ハイパーバイザを実行して、VM間でサーバハードウェアを区分化し、VMを互いに分離する。異なるカスタマーのために異なるVMが実行され得るので、各VMによって使用される情報(命令及びデータ)は、他のVMによるアクセスから保護されることが望ましい。従来、ハイパーバイザは、VM毎に別々のメモリページテーブル及び他の論理エンティティを維持することによって、VM情報の分離を維持している。しかしながら、ハイパーバイザ内の欠陥(例えば、バグ)によって、悪用に対してハイパーバイザ自体が脆弱になる可能性があり、これにより、或るVMが別のVMの情報にアクセスすることが可能になる場合がある。パーソナルコンピュータ等のよりプライベートなセキュリティ環境においても、メモリモジュールに記憶されたデータは盗まれやすく、そこに記憶されたデータが不正アクセスにさらされる可能性がある。いくつかのセキュリティ環境では、デバイスからセキュアメモリ空間へのダイレクトアクセスメモリ(DMA)は、DMA要求のイニシエータを識別することが困難であるため、信頼されていない。例えば、認可されていないエンティティが、認可されていないデバイスを介してDMAを要求することによって、セキュアメモリ空間にアクセスする可能性がある。
添付の図面を参照することによって、本開示をより良く理解することができ、その多数の機能及び利点が当業者に明らかとなるであろう。異なる図面における同じ符号の使用は、類似又は同じアイテムを示す。
いくつかの実施形態による、情報の安全な隔離のためにメモリコントローラで暗号化モジュールを使用する処理システムのブロック図である。 いくつかの実施形態による、情報の隔離を提供する図1の処理システムの例示的な実施態様を示すブロック図である。 いくつかの実施形態による、情報の隔離を提供する図1の処理システムの別の例示的な実施態様を示すブロック図である。 いくつかの実施形態による、図1〜図3の処理システムでセキュアメモリアクセスを識別するための変換索引バッファ及びページテーブルの使用を示すブロック図である。 いくつかの実施形態による、暗号保護された情報を保護するために、図1〜図3の処理システムでメモリアクセス要求を処理する方法のフロー図である。
図1〜図5は、プロセッサのメモリアクセスパスにおいてハードウェア暗号化モジュールを使用してセキュア情報を暗号で隔離することによって、処理システムにおいてセキュア情報を保護する技術を示す図である。プロセッサは、入出力デバイスとメモリとの間のメモリアクセスパスにおいてハードウェア暗号化モジュールを使用して、セキュア情報を暗号で隔離する。いくつかの実施形態では、暗号化モジュールは、プロセッサのメモリコントローラに配置されており、プロセッサの入出力メモリ管理ユニット(IOMMU)に提供される各メモリアクセス要求は、メモリアクセス要求の送信元を識別する要求側ID値を含む。いくつかの実施形態では、プロセッサは、入出力(IO)デバイス上で異なる仮想機能(VF)を実行するために、処理システム内で使用される。例えば、いくつかの実施形態では、暗号化モジュールは、IOデバイス上で実行されているVF毎に一意のキーを記憶する。いくつかのシナリオでは、VFのキーは、処理システムのプロセッサコアとは別のセキュリティモジュールによって生成される場合があるので、ハイパーバイザを含むプロセッサコアで実行されるソフトウェアは、当該キーにアクセスすることができない。IOMMUがDMA要求を受信したことに応じて、メモリアクセス要求に含まれる要求側ID値に基づいて要求側VFの送信元が特定される。要求側ID値は、要求側VFに関連するVM TAG値を、デバイステーブルを用いて検索するために、IOMMUによって使用される。VM TAG値は、メモリに書き込まれたデータを暗号化し又はメモリから読み出されたデータを復号化するために、DMA要求で使用される特定の暗号化キーを識別する。
いくつかの実施形態では、本明細書において説明する技術は、物理的に安全ではない環境で使用される処理システムにおいて実施され、処理システムのメモリは、認可されていない物理的アクセス(例えば、ハードウェアメモリモジュールの盗難、又は、メモリの物理的プローブ等)にさらされる。しかしながら、暗号化モジュールは、セキュアデータを暗号化形式でメモリに記憶するので、セキュアデータは、認可されていない物理的アクセスを受けたとしても、容易に利用することができない。例えば、認可されたVFが、別のVM/VFに割り当てられたメモリ位置に記憶されているデータを取得するようにDMA要求を試みたとしても、データは、誤った暗号化キーを用いてアクセスされ、その結果、誤ったキーが暗号化/復号化に使用される(すなわち、メモリアクセスに応じて、データの正確な平文/クリアテキストが返されない)。
図1は、いくつかの実施形態による、情報の暗号保護を提供する処理システム100を示す図である。処理システム100は、プロセッサ102と、メモリ104と、を含む。処理システム100は、サーバ、パーソナルコンピュータ、タブレット、セットトップボックス、ゲームシステム等の様々な電子デバイスの何れにも組み込むことができる。プロセッサ102は、概して、プロセッサ102の回路を操作して定義されたタスクを実行する命令(例えば、コンピュータプログラム)のセットを実行するように構成されている。メモリ104は、プロセッサ102が使用するデータを記憶することによって、これらのタスクの実行を容易にする。メモリ104は、ランダムアクセスメモリ(RAM)や、フラッシュメモリ又はハードディスクドライブ(HDD)等の不揮発性メモリや、これらの組み合わせとすることができる。また、処理システム100は、物理入出力(I/O)デバイス106を含む。物理I/Oデバイス106は、例えば、ネットワークインタフェースカード(NIC)又はホストバスアダプタ(HBA)等とすることができる。
プロセッサ102は、セキュリティモジュール108を含む。セキュリティモジュール108は、汎用プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プロセッサコアの動作モード、又は、処理システム100のセキュリティ動作を実行するように設計され構成された他のモジュールであり、セキュリティ動作には、プロセッサ102で実行されるエンティティ(例えば、仮想マシン及びコンピュータプログラム等)の登録、実行されるエンティティのセキュリティキーの生成及び識別、セキュリティ動作のための処理システム100の認証等が含まれる。いくつかの実施形態では、セキュリティモジュール108は、悪用に対して脆弱な状態になる動作を実行することのないように、セキュリティモジュール108の動作を実行することが許可される前にセキュア登録プロセスを経てもよく、セキュリティモジュール108の動作がセキュリティ動作のみに制限されてもよい。本明細書でさらに説明するように、セキュリティモジュール108は、セキュリティキーを生成し、処理システム100で実行されるように登録されたエンティティを識別し、暗号隔離を可能にする他の動作によって、処理システム100における情報の暗号隔離をサポートする。
また、プロセッサ102は、プロセッサコア110,112と、キャッシュ114と、メモリコントローラ(例えば、ノースブリッジ)116と、セキュリティモードレジスタ118と、を含む。プロセッサコア110,112は、命令を個別及び同時に実行する処理ユニットである。いくつかの実施形態では、プロセッサコア110,112の各々は、命令をフェッチし、フェッチした命令を対応する動作に復号化し、処理システム100のリソースを使用して様々な動作を実行する個別の命令パイプラインを含む。さらに、プロセッサ102は、デバイス(図1に示すI/Oデバイス106等)をメモリコントローラ116に接続するために使用される入出力メモリ管理ユニット(IOMMU)120を含む。
いくつかの実施形態では、処理システム100は、メモリ104に記憶されている情報の場所又は情報の種類(例えば、命令若しくはデータ)に対応するメモリアドレスと共に含まれる制御ビットに基づいて情報のセキュリティ指定(情報を暗号保護するかどうか)が割り当てられる、セキュリティスキームを実施する。これにより、大量のデータをセキュア情報として簡単に分類し、効率的な情報保護を提供することが可能になる。例えば、いくつかの実施形態では、制御ビットは、特定の種類の情報(例えば、命令情報、又は、仮想アドレスからメモリ104の物理アドレスへのマッピングを提供するページテーブル情報等)がセキュア情報として指定されるように、処理システム100によって設定される。これにより、この情報が暗号保護される。データに割り当てられたアドレスの制御ビットは、例えば、プロセッサ102で実行されるプログラムによって要求された指定に基づいて、よりきめ細かい方法で指定することができる。このセキュリティスキームは、より一般的なデータに柔軟性を提供しながら、重要なデータの保護を提供する(例えば、仮想マシン又はそのプログラムの不正な実行を抑制する)。
いくつかの実施形態では、情報に割り当てられたセキュリティの種類は、情報に対応するメモリアドレスに基づいて指定されるので、処理システム100は、ページテーブル自体を使用して、各メモリアドレスのセキュリティの種類を示す。したがって、後述するように、IOMMU120は、メモリアクセス要求に対応するメモリアドレスを識別する過程において、メモリアクセス要求の種類を識別する。具体的には、メモリアドレスがセキュア情報を記憶するものと示されている場合、対応するメモリアクセスは、セキュアメモリアクセスとして識別される。同様に、メモリアドレスが非セキュア情報を記憶しているものと示されている場合、対応するメモリアクセスは、非セキュアメモリアクセスとして識別される。
メモリコントローラ116は、I/Oデバイス106がメモリ104と通信するためのインタフェースを提供する。IOMMU120は、I/Oデバイス106からメモリアクセス要求(例えば、ダイレクトメモリアクセス要求)を受信し、メモリコントローラ116を介したメモリ104へのこれらの要求の提供を制御する。また、メモリコントローラ116は、メモリアクセス要求に対する応答をメモリ104から受信し、I/Oデバイス106への応答の提供を制御する。
情報の暗号隔離を提供するために、メモリコントローラ116は、特定の暗号標準に従って、キー124に基づいて、情報を暗号化及び復号化するように構成された暗号化モジュール122を含む。いくつかの実施形態では、暗号化モジュール122は、高度暗号化規格(AES)暗号化及び復号化を使用するように構成されているが、他の実施形態では、暗号化モジュール122は、他の暗号化/復号化技術を使用し得る。
メモリコントローラ116は、各メモリアクセス要求を、2つの種類(すなわち、メモリアクセス要求に対応する情報が暗号保護指定されていることを示すセキュアメモリアクセス要求、又は、メモリアクセス要求に対応する情報が暗号保護指定されていないことを示す非セキュアメモリアクセス要求)うち1つの種類として識別するように構成されている。メモリコントローラ116は、書き込み要求の受信に応じて、当該要求がセキュアメモリアクセス要求であるか、非セキュアメモリアクセス要求であるかを識別する。書き込み要求が非セキュアメモリアクセス要求である場合、メモリコントローラ116は、暗号化モジュール122をバイパスして、書き込まれる情報を暗号化せずに書き込み要求をメモリ104に提供する。書き込み要求がセキュアメモリアクセス要求である場合、メモリコントローラ116は、メモリアクセス要求を生成したI/Oデバイス106に割り当てられたキー124のうち1つのキーを識別する。いくつかの実施形態では、メモリコントローラ116は、本明細書でさらに説明するように、I/Oデバイス106に割り当てられた識別タグ値(すなわち、VM TAG)に基づいて、キーを識別し選択する。暗号化モジュール122は、選択されたキーを使用して、書き込まれる情報を暗号化し、暗号化された情報と共に書き込み要求を、記憶のためにメモリ104に提供する。いくつかの実施形態では、暗号化モジュール122は、対応する情報の暗号化及び復号化のために、選択されたキー及びメモリアクセス要求の物理アドレスの両方を使用し、これにより、ブロック移動攻撃を防ぐ。いくつかの実施形態では、暗号化モジュール122は、プロセッサ102における制御ビット(図示省略)の状態に基づいて、暗号化及び復号化のために物理アドレスを使用するか否かを識別する。制御ビット状態は、セキュリティモジュール108によって設定することができる。
メモリコントローラ116は、読み出し要求を受信したことに応じて、要求をメモリ104に提供し、次いで、当該要求に応じた情報を受信する。メモリコントローラ116が読み出し要求を非セキュアメモリアクセス要求として識別した場合、メモリコントローラ116は、暗号化モジュール122をバイパスし、読み出し情報を、暗号化することなくI/Oデバイス106に提供する。メモリコントローラ116が読み出し要求をセキュアメモリアクセス要求として識別した場合、メモリコントローラ116は、読み出しアクセス要求を生成したI/Oデバイス106に割り当てられたキー124のうち1つのキーを識別し、暗号化モジュール122は、読み出し情報を復号化する。次に、メモリコントローラ116は、復号化された読み出し情報をI/Oデバイス106に提供する。
いくつかの実施形態では、暗号化モジュール122の動作を制御するために、セキュリティモードレジスタ118が使用される。セキュリティモードレジスタ118は、ガードモードオンフィールド126と、ガードモードアクティブフィールド128と、を含む。ガードモードオンフィールド126が特定の状態(例えば、ネゲート状態)であることに応じて、メモリコントローラ116は、セキュアメモリアクセス要求を含む全てのメモリアクセス要求について暗号化モジュール122をバイパスする。これにより、処理システム100は、プロセッサ102及びI/Oデバイス106で実行されている全てのプログラムについて暗号化及び復号化がバイパスされるモードで動作することが可能になる。
ガードモードオンフィールド126が異なる特定の状態(例えば、アサート状態)であることに応じて、メモリコントローラ116は、ガードモードアクティブフィールド128の状態を識別する。ガードモードアクティブフィールド128が特定の状態(例えば、ネゲート状態)であることに応じて、メモリコントローラ116は、受信したメモリアクセス要求(セキュアメモリアクセス要求を含む)について暗号化モジュール122をバイパスし、ガードモードアクティブフィールド128が異なる状態(例えば、アサート状態)であることに応じて、非セキュアメモリアクセス要求についてのみ暗号化モジュール122をバイパスする。いくつかの実施形態では、ガードモードオンフィールド126は、プロセッサ102における複数の個々のプログラム又はエンティティ(例えば、VM)の実行を管理するエンティティ(例えば、ハイパーバイザ)によって設定され、個々のプログラム又はエンティティ毎に個別に設定される。したがって、セキュリティモードレジスタ118によって、暗号化モジュール122の使用を異なる粒度レベルで制御することが可能になる。
いくつかの実施形態では、I/Oデバイス106は、IOMMU120に送信された仮想アドレスを含むメモリアクセス要求を開始することによって、メモリコントローラ116を使用して、ダイレクトアクセスメモリ(DMA)要求を介してメモリ104内のセキュア情報130にアクセスすることができる。IOMMU120は、I/Oデバイス106によって使用されるデバイス仮想アドレスと、メモリ104内の物理アドレスと、の間でアドレス変換を実行することができる。例えば、I/Oデバイス106は、メモリ104にデータを記憶する書き込み要求と、メモリ104からデータを取得する読み出し要求と、を含むメモリアクセス要求を生成する。各メモリアクセス要求は、メモリアクセス要求が対象とするメモリ104内の位置を示すメモリアドレスを含む。メモリ104は、読み出し要求に応じて、読み出し要求のメモリアドレスに対応する位置に記憶されている情報(データ又は命令)を取得し、当該情報をI/Oデバイス106に提供する。メモリ104は、書き込み要求に応じて、書き込み要求のメモリアドレスに対応する位置に、要求の書き込み情報を記憶する。
さらに、暗号化モジュール122は、メモリアクセス要求に関連するデータの暗号化(書き込みアクセスの場合)又は復号化(読み出しアクセスの場合)を実行する。セキュアメモリアクセスの場合、暗号化モジュール122は、メモリアクセスに関連するデータの暗号化(書き込みアクセスの場合)又は復号化(読み出しアクセスの場合)を実行する。後述するように、プロセッサのメモリアクセスパス内のハードウェアによって暗号化が行われるので、メモリ104に記憶されたデータは、正しい暗号化/復号化キーなしに有意義にアクセスすることができない。
図2は、いくつかの実施形態による、図1の処理システム100の例示的な動作を示す図である。プロセッサ202は、2つの仮想マシン(VM)、すなわちVM−A204及びVM−B206を同時に実行するように構成されている。また、プロセッサ202は、ハイパーバイザ208を実行して、VM204,206と処理システムのハードウェアとの間のインタフェースを提供する。動作中、VM204,206の各々は、プロセッサ202で実行されるのが許可される前に、セキュリティモジュール210に登録される。いくつかの実施形態では、VM所有者がセキュリティモジュール210とのセキュア通信チャネル212を確立したものとして、VMが登録される。「VM TAG」で示す識別タグ値と、「VM KEY」で示すセキュリティキーとが、VMに対して生成される。この生成は、セキュリティモジュール210又は別のセキュリティデバイスで行われ、セキュア通信チャネル212を介してセキュリティモジュール210に通信されてもよい。いくつかの実施形態では、各VMのVM TAG値は、ハイパーバイザ208によって最初に書き込まれ、セキュリティモジュール210に提供されて暗号化される。セキュリティモジュール210は、VM KEY及びVM TAG値の各々が、対応するVMに一意であることを保証する。VM所有者は、対応するVMのイメージを暗号化してハイパーバイザ208に提供し、ハイパーバイザ208は、暗号化されたイメージをセキュアデータとしてメモリ214(例えば、セキュア情報空間232,234)に記憶する。
ハイパーバイザ208は、各VMを、当該VMの対応する暗号化アドレス空間に割り当てる。セキュア情報232は、VM−A204のVMイメージを含み、セキュア情報234は、VM−B206のVMイメージを含む。メモリ214は、プロセッサ202が使用するデータを記憶する。メモリ214は、ランダムアクセスメモリ(RAM)や、フラッシュメモリ又はハードディスクドライブ(HDD)等の不揮発性メモリや、これらの組み合わせとすることができる。
また、処理システムは、物理入出力(I/O)デバイス216を含む。物理I/Oデバイス216は、例えば、ネットワークインタフェースカード(NIC)又はホストバスアダプタ(HBA)等とすることができる。I/Oデバイス216は、デバイス上に構成された複数の仮想機能(VF)を含むことができる。例えば、I/Oデバイス216は、デバイス上に構成された2つのVF、すなわちVF−A218及びVF−B220を含む。ハイパーバイザ208は、VF218,220を、VM204,206にマッピングする(例えば、割り当てる)。例えば、VF−A218は、VM−A204にマッピングされ、VF−B220は、VM−B206にマッピングされる。さらに、セキュリティモジュール210は、各VFに一意の識別タグ値(例えば、VM TAG)を割り当てることによって、VMをI/OデバイスのVFに対応付ける。この構成によって、IOMMU224を介したVMからI/Oデバイス216のレジスタへのパスが提供され、認可されたVMのみが対応するVFのレジスタに到達することができることを保証する。例えば、メモリ214内に存在するデバイステーブル236において、VM−A TAGは、VF−A218に対応付けられており、VM−B TAGは、VF−B220に対応付けられている。
デバイス(I/Oデバイス216等)をメモリコントローラ222に接続するために、IOMMU224が使用される。IOMMU224は、I/Oデバイス216がメモリ214と通信するためのインタフェースを提供する。メモリコントローラ222は、IOMMU224を介してI/Oデバイス216からメモリアクセス要求(例えば、ダイレクトメモリアクセス要求)を受信し、これらの要求のメモリ214への提供を制御する。また、メモリコントローラ222は、メモリ214からのメモリアクセス要求への応答を受信し、I/Oデバイス216への応答の提供を制御する。
メモリコントローラ222は、情報の暗号隔離を提供するために、特定の暗号標準に従って、キー228,230に基づいて、情報を暗号化及び復号化するように構成された暗号化モジュール226を含む。いくつかの実施形態では、暗号化モジュール226は、高度暗号化標準(AES)暗号化及び復号化を使用するように構成されているが、他の実施形態では、暗号化モジュール226は、他の暗号化/復号化技術を使用することができる。従来、ハイパーバイザ208は、プロセッサ202と直接対話し、これにより、VM204,206に関連する全てのセキュリティキーにアクセスすることができる。これにより、悪意又は欠陥のあるハイパーバイザが、VMのセキュア情報へのアクセスを、認可されていない者に提供することが可能になる。例えば、悪意のあるハイパーバイザ又はVM−Aが、VM−Bに割り当てられたデバイスVF−Bと通信して、特定の悪意のあるDMA動作をVM−Bのメモリ内に実行するのを抑制することが望ましい。同様に、悪意のあるVFは、認可されていない他のVM/VFによって使用される情報にアクセスするために、DMAの実行を試みる場合がある。これに対し、本明細書でさらに説明するように、図2の例では、セキュリティキーへのアクセスは、セキュリティモジュール210によって管理され、認可された情報へのVFアクセスのみが許可される。
セキュリティモジュール210は、セキュリティキーを生成し、処理システムで実行されるために登録されたエンティティを識別し、暗号隔離を可能にする他の動作によって、情報の暗号隔離をサポートする。セキュリティキーの生成は、セキュリティモジュール210又は別のセキュリティデバイスにおいて行われ、セキュア通信チャネル212を介してセキュリティモジュール210に通信され得る。セキュリティモジュール210は、VM KEY及びVM TAG値の各々が、対応するVMに一意であることを保証する。本明細書で使用される「セキュリティキー」という用語は、認証又は暗号化キー、及び、キーに署名する任意の証明書又は証明書チェーンを指す。セキュリティモジュール210は、VM−A204及びVM−B206の各々に関連する2つの異なるセキュリティキー、すなわちKEY−A228及びKEY−B230を生成して保持する。セキュリティモジュール210は、ハイパーバイザ208がセキュリティキーにアクセスできないように、セキュリティキー228,230をメモリコントローラ222に直接提供する。いくつかの実施形態では、セキュリティモジュール210は、キーをメモリコントローラ222のレジスタに直接書き込むことによって、キーを提供する。これらのレジスタは、プロセッサ202で実行されるハイパーバイザ208又は他のエンティティにアクセスできず(例えば、アドレス指定できない)、したがって、悪意のあるエンティティがセキュリティキー228,230にアクセスし、次にセキュア情報アドレス空間232,234にアクセスするのを抑制する。
図3は、いくつかの実施形態による、例示的なダイレクトメモリアクセス動作を実行する図1及び図2の処理システムの一部を示す図である。図示した例では、プロセッサ302は、2つの仮想マシン(VM)、すなわちVM−A304及びVM−B306を同時に実行するように構成されている。また、プロセッサ302は、ハイパーバイザ308を実行して、VM304,306と処理システムのハードウェアとの間のインタフェースを提供する。動作中、VM304,306の各々は、プロセッサ302で実行されるのを許可される前に、セキュリティモジュール310に登録される。ハイパーバイザ308は、各VMを、メモリ312内のVMに対応する暗号化アドレス空間に割り当てる。メモリ312は、プロセッサ302が使用するデータを記憶する。メモリ312は、ランダムアクセスメモリ(RAM)や、フラッシュメモリ、ハードディスクドライブ(HDD)等の不揮発性メモリや、これらの組み合わせとすることができる。セキュア情報空間314は、VM−A304に対応付けられており、セキュア情報空間316は、VM−B306に対応付けられている。
また、処理システムは、物理入出力(I/O)デバイス318と、メモリコントローラ320と、入出力メモリ管理ユニット(IOMMU)322と、を含む。物理I/Oデバイス318は、例えば、ネットワークインタフェースカード(NIC)又はホストバスアダプタ(HBA)等とすることができる。I/Oデバイス318は、デバイス上に構成された複数の仮想機能(VF)を含むことができる。I/Oデバイス318は、デバイス上に構成された2つのVF、すなわちVF−A324及びVF−B326を含む。ハイパーバイザ308は、VF324,326を、VM304,306にマッピングする(例えば、割り当てる)。例えば、VF−A324は、VM−A304にマッピングされ、VF−B326は、VM−B306にマッピングされる。
図2を参照して上述したように、セキュリティモジュール310は、各VFに一意の識別タグ値(例えば、VM TAG)を割り当てることによって、VMをI/OデバイスのVFに対応付ける。プロセッサ302がVM−Aを実行する場合、VM−AがVM−A TAG(すなわち、識別タグ値)と共にロードされ、このタグは、メモリにアクセスするときに使用される。例えば、VM−A TAGは、セキュリティモジュール310によってVF−A324に割り当てられ、VM−B TAGは、VF−B326に割り当てられる。また、セキュリティモジュール310は、セキュリティキー328,330を生成して、メモリコントローラ320に提供する。図3の例では、セキュリティモジュール310は、VM−A304及びVM−B306の各々に関連する2つの異なるセキュリティキー、すなわちKEY−A328及びKEY−B330を生成して保持する。セキュリティモジュール310は、ハイパーバイザ308がセキュリティキーにアクセスできないように、セキュリティキー328,330をメモリコントローラ320に直接提供する。
これと同じタグが、I/Oデバイス318内のメモリマップドI/O(MMIO)レジスタにアクセスするときに提供される。IOMMU322は、保護テーブルを用いて、VM−Aタグを有するMMIO要求が、要求されたMMIOアドレスにアクセスすることを許可されているかどうかを識別するように構成されている。いくつかの実施形態では、IOMMUは、VMアクセシビリティと共にMMIOアパーチャ(例えば、MMIOレジスタに関連するメモリ物理アドレス空間の一部)を含むルックアップテーブル(図示省略)を含む。ルックアップテーブルは、MMIOトラフィック(例えば、VMからI/Oデバイス318のMMIOへの読み書き)をチェックするために使用され、VM TAGを、許容可能なダウンストリームのMMIOアドレス範囲に対応付ける。VM TAGは、VMからI/Oデバイス318へのトラフィックを認可するためのMMIOアクセス要求に含まれる。VMによって提供された値とVFに割り当てられた値との間でVM TAG値の不一致がある場合、I/Oデバイス318のMMIOへのアクセスが抑制される。このMMIO隔離によって、悪意のあるハイパーバイザが、VMにアクセスできるVFを制御するのを抑制することができる。
いくつかの実施形態では、このダウンストリームのMMIOアクセスの認可は、IOMMU322によって実行されるが、代替としてIOMMU322とは別のモジュールで実行することもできる。この構成により、VMからI/Oデバイス318のレジスタへのパスが提供され、セキュリティモジュール310によって認可されたVMのみが、関連するVFのレジスタに到達できることが保証される。本明細書で使用される「ダウンストリーム」という用語は、IOMMU322を介したVMからI/Oデバイス318への読み出し又は書き込みを含むMMIOトラフィックを指す。「アップストリーム」という用語は、IOMMU322を介したVF324,326又はI/Oデバイス318からメモリ312への読み出し又は書き込みを含むダイレクトメモリアクセス(DMA)トラフィックを指す。
デバイス(I/Oデバイス318等)をメモリコントローラ320に接続するために、IOMMU322が使用される。メモリコントローラ320は、I/Oデバイス318がメモリ312と通信するためのインタフェースを提供する。いくつかの例では、メモリコントローラ320は、IOMMU322を介してI/Oデバイス318からメモリアクセス要求(例えば、ダイレクトメモリアクセス要求)を受信し、これらの要求のメモリ312への提供を制御する。別の例では、メモリコントローラ320は、メモリアクセス要求に対する応答をメモリ312から受信し、I/Oデバイス318への応答の提供を制御する。
I/Oデバイス318のVF324,326は、メモリアクセス要求を開始することによって、ダイレクトアクセスメモリ(DMA)要求を介して、メモリコントローラ320を使用し、メモリ312内のセキュア情報314,316にアクセスすることができる。例えば、これらの実行の過程において、VF324,326は、セキュア情報314,316にアクセスする(記憶及び取得する)。暗号化モジュール332は、セキュア情報314,316が暗号隔離されていることを保証し、これにより、そこに記憶されているデータは、各々のVM/VFに割り当てられたセキュリティキーを使用してのみ暗号化/復号化することができる。
いくつかの実施形態では、VF324,326は、メモリ要求の対象となる仮想アドレスと、VF毎に一意の要求側IDと、を含むメモリアクセス要求を、IOMMU322に提供する。例えば、VF−A324は、そのメモリアクセス要求と共に「REQUEST ID−A」という要求側IDを送信し、VF−Bは、そのメモリアクセス要求と共に「REQUEST ID−B」という要求側IDを送信する。要求側IDは、I/Oデバイスハードウェア(例えば、デバイス番号及び仮想機能番号)、及び/又は、システムバイオスファームウェア若しくはハイパーバイザ308(例えば、バス番号)によって部分的に制御することができる。IOMMU322は、メモリ312に記憶された、要求側IDに対するVM TAGのマッピングを含むデバイステーブル340を使用して、受信した要求側IDに関連するVM TAGを検索することによって、DMA動作の要求側IDに基づいてVM TAG値を決定する。
いくつかのシナリオでは、悪意のあるエンティティは、(例えば、ソフトウェアエミュレーションを介して)IOMMU322をエミュレートすることによって、VMのセキュア情報にアクセスしようと試みる場合がある。これらのシナリオに対処するために、いくつかの実施形態では、IOMMU322及びVM304,306は、IOMMU322がエミュレートされていないことを保証するインテグリティチェック手順を実行することができる。具体的には、IOMMU322のインテグリティ(完全性)をチェックするために、VM304,306は、指定されたコマンドを、メモリ312の対応するセキュア情報空間に書き込むことができる。例えば、いくつかの実施形態では、各々のVMがページテーブルを変更する場合、VM304,306は、IOMMU TLB無効化コマンドを、対応するセキュア情報空間の特定位置に書き込む。IOMMU322は、セキュア情報空間からコマンドを読み出し、当該コマンドを実行し(例えば、そのTLB336内の古いアドレス変換のキャッシュされたコピーを無効にすることによって)、コマンドの完了時に、対応するセキュア情報空間の特定位置に特定値を書き込む(すなわち、特定位置に記憶されているコマンドに上書きする)。IOMMUは、メモリコントローラ320を介してメモリ312に特定値を書き込むので、特定値は、コマンドを発行したVMに対応する暗号化キーを使用して書き込まれる。コマンドを発行したVMは、特定位置の特定値を定期的にチェックする。特定位置に誤った値が書き込まれているとVMが識別した場合、又は、特定位置のコマンドが特定の時間内に上書きされなかった場合、VMは、ページテーブルコマンドが発行されたエンティティが認可されていないと判別し、次いで、是正措置を講じ得る。プロセッサ302は、セキュア情報空間を使用してインテグリティチェックを実行することによって、不正なエンティティがIOMMU322をエミュレートしてセキュア情報空間にアクセスすることができないことを保証する。具体的には、不正なエンティティは、特定値を正しく暗号化することができないので(正しい暗号化キーを認識していないため)、特定値をメモリ312に書き込むことができない。
いくつかの実施形態では、IOMMU322は、要求の仮想メモリアドレスに含まれる1つ以上のビットに基づいて、メモリアクセス要求がセキュアメモリアクセス要求であるか否かを識別する。例えば、図4及び図5においてさらに説明するように、仮想アドレスは、アクセス要求がセキュアであるか、非セキュアであるかを示すC−ビットを含む。要求が非セキュアである場合、IOMMU322は、暗号化モジュール332をバイパスして、暗号化又は復号化なしにメモリアクセス要求を満たす。
要求がセキュアメモリアクセス要求である場合(例えば、アサートされているC−ビットに基づいて)、IOMMU322は、デバイステーブル340を用いて、DMAを要求しているVF(例えば、メモリアクセス要求を生成したVF324,326のうち1つ)によって提供された要求側ID(例えば、REQUEST ID−A又はID−B)に基づいて、VM TAGを検索する。識別されたVM TAGは、メモリコントローラ320の暗号化モジュール332に提供され、暗号化モジュール332は、DMA要求と共に使用される暗号化キーを識別する(すなわち、メモリ読み出しは、関連するキーを使用して、メモリ312からのデータを復号化し、メモリ書き込みは、関連するキーを使用して、メモリ312に送られるデータを暗号化する)。したがって、暗号化モジュール332は、IOMMUから出力されたVM TAGに対応するセキュリティキー328,330のうち1つのキーを選択し、選択したキーを使用して、メモリアクセス情報(読み出しデータ又は書き込みデータ)に対して暗号化(書き込み要求の場合)又は復号化(読み出し要求の場合)を実行する。
また、IOMMU322は、I/Oデバイス318に関連するページテーブル情報(ページテーブル338内)を検索して、アドレス変換に使用する。IOMMU322は、I/Oデバイス318によって使用されるデバイス仮想アドレスと、メモリ312内の物理アドレスと、の間でアドレス変換を実行するためのアドレス変換モジュール334及び変換索引バッファ(TLB)336を含む。IOMMU322は、TLB336とメモリ312内のページテーブル338とを利用して、メモリアクセス要求の対象となるメモリの特定のページの物理アドレスを取得する。ページテーブル338は、仮想アドレスを物理アドレスにマッピングする。メモリコントローラ320は、メモリのページにアクセスするために、物理アドレスを使用する。いくつかの実施形態では、IOMMUアドレス変換後に導出される物理アドレスの上位ビットは、暗号化モジュール332への転送のためにVM TAGを符号化するために、再利用することができる。他の実施形態では、VM TAGは、物理アドレスとは別に送信されてもよい。
IOMMU322は、要求側IDに基づいてVM TAGを検索し、DMA要求の対象となる物理アドレスをメモリコントローラ320に転送する。いくつかの実施形態では、IOMMUアドレス変換後に導出される物理アドレスの上位ビットは、暗号化モジュール332への転送のためにVM TAGを符号化するために、再利用することができる。他の実施形態では、VM TAGは、物理アドレスとは別に送信されてもよい。メモリコントローラは、要求を受信すると、VM TAGに基づいて暗号化キーを検索し、次に、暗号化モジュールを使用してメモリを暗号化/復号化する。これにより、I/Oデバイス318上で実行されているVFは、関連するVMと同じ暗号化キー(例えば、KEY−A328及びKEY−B330)を参照することによって、メモリ312の暗号化されたメモリ領域に直接アクセスすることが可能になり、VM304,306及びハイパーバイザ308との対話が不要になる。上述したように、データの暗号保護は、メモリコントローラ320で行われ、暗号保護に使用されるセキュリティキーは知られておらず、VF324,326、VM304,306及びハイパーバイザ308にはアクセスできない。これにより、或るVFが他のVM/VFのセキュア情報にアクセスできないことが保証される。
DMA要求は、通常、メモリコントローラ320に渡されるが、適切なVM TAG(DMA要求と共に提供され、VM TAGを検索するためにデバイステーブル340によって使用される要求側ID値に基づく)を有していてもよいし、有していなくてもよく、したがって、適切な暗号化キー又は誤った暗号化キーを使用したメモリアクセスが発生し得る。例えば、要求側VFによって提供された要求側IDに関連するVM TAGが、正しいセキュリティキーと一致する場合に、メモリアクセス要求は、メモリトラフィックを暗号化/復号化するために、適切なセキュリティキーと共に暗号化モジュール332に転送され、これにより、要求側VFが、関連するVMのセキュアメモリ空間にアクセスすることが可能になる。しかしながら、要求側VFによって提供された要求側IDに関連するVM TAGが、正しいセキュリティキーと一致しない場合に、セキュアメモリ空間内の物理メモリは、未だ読み出し又は書き込みされるが、誤ったキーを使用して復号化/暗号化することになる。誤ったセキュリティキーを用いて読み出しを行うと、復号化後に正確な平文が返されないという結果に陥る。
例えば、いくつかの実施形態では、VF−A324は、セキュア情報316(VF−B326のセキュア情報)にアクセスするためのメモリアクセス要求を発行することができる。メモリアクセス要求がVF−A324によって生成されたので、IOMMU322は、メモリ312のデバイステーブル340にアクセスして、VF−A324に関連するVM TAGを検索し、メモリコントローラ320に提供する。VF−A324のVM−Aタグがメモリコントローラ320に提供され、メモリコントローラ320は、暗号化モジュール332を使用して、提供されたVM−Aタグに関連するセキュリティキーを検索する。メモリアクセス要求の対象となるセキュア情報316は、セキュアデータを暗号化するために元々使用されていたKEY−B330ではなく、KEY−A328を使用して復号化される。よって、誤ったキーを使用してデータが復号化されたので、VF−Aは、復号化されたデータを有意義に又は正しく解釈することができない。したがって、VM−B306/VF−B326のセキュア情報316は、VF−A324によるアクセスから暗号隔離されている。
図4は、いくつかの実施形態による、メモリアクセス要求のセキュリティの種類(例えば、セキュア又は非セキュア)の識別を可能にするIOMMU322の一部を示す図である。具体的には、図4は、アドレス変換モジュール434と、変換索引バッファ(TLB)436と、を示す。アドレス変換モジュール434は、概して、対応するメモリアクセス要求の仮想アドレスを、VF(例えば、図3のVF−A324及びVF−B326)から受信するように構成されている。アドレス変換モジュール434は、受信した各仮想アドレスを、メモリアクセス要求の対象となるメモリ312の位置を識別する、対応する物理アドレスに変換する。
アドレス変換モジュール434は、TLB436及びページテーブル438(例えば、図3のメモリ312内)のうち一方又は両方を使用して、仮想アドレスを、対応する物理アドレスに変換する。ページテーブル438は、仮想アドレスによりインデックス化された複数のエントリ(例えば、エントリ402)を含む。いくつかの実施形態では、ページテーブル438は、マルチレベルページテーブルであり、これにより、より高いレベルのページは、仮想アドレスに関連する他のページを識別するエントリを含み、より低いレベルのページは、仮想アドレスに割り当てられた物理アドレスを識別する。ページウォークにおいてページテーブルをトラバースすることによって、物理アドレスを識別することができる。アクセスされる次のレベルのページを識別するために最高レベルのページが最初にアクセスされ、物理アドレスを含む最低レベルのページテーブルが識別され、その最高レベルのページテーブルから物理アドレスが取得されるまで、同様の動作が続く。また、最低レベルのページテーブルは、物理アドレスに対応するデータが暗号的に保護されているか否かを示すビット(「C−ビット」と呼ばれる)を記憶する。TLB436は、アドレス変換モジュール434によって最近受信された仮想アドレスを反映するページテーブル438のエントリのサブセットを共に記憶する複数のエントリ(例えば、エントリ404)を含む。
アドレス変換モジュール434は、仮想アドレスの受信に応じて、TLB436にアクセスして、TLBが仮想アドレスに対応するエントリを含むか否かを判別する。アドレスのC−ビット部分は、メモリアクセス要求がセキュアメモリアクセス要求であるか否かを識別するために、IOMMU322によって使用される。したがって、例えば、物理アドレス値内のC−ビットがアサート状態である場合、メモリIOMMU322は、対応するメモリアクセス要求をセキュアメモリアクセス要求として識別し、要求側に対応するVM TAGを検索する。アドレス変換モジュール434は、VM TAGを物理アドレスに加えて、結果として得られた物理アドレス値を、セキュリティキーを検索するのに暗号化モジュールによって使用されるために提供する。ページテーブルエントリ内のC−ビットがデアサートされている場合、IOMMU322は、VM TAGを物理アドレスに加えず、メモリアクセスは、暗号化又は復号化なしに進行する。
図5は、いくつかの実施形態による、暗号保護のために指定された情報を保護するために、メモリコントローラでダイレクトメモリアクセス要求を処理する方法500のフロー図である。説明のために、方法500は、図3のIOMMU322における例示的な実施態様に関して述べられる。ブロック502において、IOMMU322は、要求側VFからメモリアクセス要求を受信する。メモリアクセス要求は、VF324又はVF326のうち1つによって生成された要求であってもよい。図1〜図4に関連して上述したように、メモリアクセス要求のアドレス値は、メモリアクセス要求がセキュアメモリアクセス要求であるか否かを示すC−ビット値と、要求側VFを識別する要求側ID値と、を含むことができる。
ブロック504において、IOMMU322は、メモリアクセス要求のC−ビットがアサートされているか否かを判別する。アサートされていない場合、メモリアクセス要求は非セキュアメモリアクセス要求であり、方法フローはブロック506に進み、メモリコントローラ320は、暗号化モジュール332をバイパスしてメモリアクセス要求を満たす。書き込み要求の場合、メモリコントローラ320は、書き込み情報を暗号化しないので、メモリ312は、書き込み情報を暗号化されていない形式で記憶する。読み出し要求の場合、メモリコントローラ320は、メモリ312から情報を取得し、情報を復号化せずに要求側VFに提供する。
ブロック504に戻って、メモリアクセス要求のC−ビットがアサートされているとIOMMU322が識別した場合、メモリアクセス要求は、セキュアメモリアクセス要求である。したがって、方法フローはブロック508に進み、IOMMU322は、図3で説明したデバイステーブル340を使用して、要求側VFの要求側IDに基づいてVM TAGを検索する。VM TAGがメモリコントローラ320に提供され、方法フローはブロック510に進む。ブロック510において、メモリコントローラ320は、提供されたVM TAGに対応するセキュリティキー328,330のうち1つのキーを識別する。ブロック512において、暗号化モジュール332は、メモリアクセス要求を満たすために使用される情報を暗号化又は復号化する。すなわち、メモリアクセス要求が書き込み要求である場合、暗号化モジュール332は、識別されたセキュリティキーを使用して、書き込まれる情報を暗号化する。メモリアクセス要求が読み出し要求である場合、メモリコントローラ320は、メモリ312から読み出される情報を取得し、暗号化モジュール332は、識別されたセキュリティキーを使用して、取得された情報を復号化する。ブロック514において、メモリコントローラ320は、暗号化された情報(書き込み要求の場合)又は復号化された情報(読み出し要求の場合)を用いて、メモリアクセス要求を満たす。
いくつかの実施形態では、図1〜図5を参照して上述したプロセッサ等の上述した装置及び技術は、1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を備えるシステムで実施される。これらのICデバイスの設計及び製造には、通常、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能な非一時的なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (15)

  1. プロセッサの入出力メモリ管理ユニット(IOMMU)において、メモリ内のメモリ空間にアクセスするために、メモリアドレス値及び要求側IDを含むダイレクトメモリアクセス要求を入出力(I/O)デバイスから受信することであって、前記IOMMUは、I/Oデバイスと、少なくとも1つのハードウェアプロセッサを用いて実装されたメモリコントローラとの間のインタフェースを提供する、ことと、
    前記ダイレクトメモリアクセス要求に応じて、前記IOMMUにおいて、前記要求側IDに関連する識別タグ値を決定して、前記識別タグ値を前記メモリコントローラに提供することと、
    前記メモリコントローラにおいて、前記識別タグ値に対応するセキュリティキーを使用して、前記メモリ空間の前記メモリアドレス値のデータにアクセスすることと、を含む、
    方法。
  2. 前記I/Oデバイスから前記ダイレクトメモリアクセス要求を受信することは、前記I/Oデバイスに構成された仮想機能(VF)から前記ダイレクトメモリアクセス要求を受信することを含む、
    請求項1の方法。
  3. 前記識別タグ値を決定することは、デバイステーブルを使用して、前記要求側IDに基づいて前記識別タグ値を検索することを含む、
    請求項1の方法。
  4. 前記ダイレクトメモリアクセス要求に関連する仮想マシン(VM)を識別することであって、前記セキュリティキーは、識別されたVMに対応する、ことを含む、
    請求項1の方法。
  5. 前記プロセッサとは別のセキュリティモジュールから前記セキュリティキーを受信することを含む、
    請求項4の方法。
  6. 前記ダイレクトメモリアクセス要求が非セキュアメモリ空間のメモリアドレス値のデータにアクセスすることであると判別したことに応じて、前記セキュリティキーを使用せずに前記非セキュアメモリ空間のデータにアクセスすることを含む、
    請求項1の方法。
  7. 前記ダイレクトメモリアクセス要求がセキュアメモリ空間のメモリアドレス値のデータにアクセスする書き込みアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間に書き込まれるデータを暗号化することを含む、
    請求項1の方法。
  8. 前記ダイレクトメモリアクセス要求がセキュアメモリ空間のメモリアドレス値のデータにアクセスするのを認可された読み出しアクセス要求であると判別したことに応じて、前記セキュリティキーを使用して、前記セキュアメモリ空間から読み出したデータを復号化することを含む、
    請求項1の方法。
  9. 前記IOMMUにおいて、メモリマップドI/O(MMIO)レジスタにアクセスする要求を受信したことに応じて、前記識別タグ値に基づいて前記MMIOレジスタへのアクセスを許可することを含む、
    請求項1の方法。
  10. 仮想マシンからセキュアメモリ空間にコマンドを書き込むことと、
    前記コマンドに応じて、前記IOMMUにおいて前記コマンドを実行することと、
    前記コマンドを実行したことに応じて、前記IOMMUが、前記メモリ空間の前記コマンドを特定値で上書きすることと、
    前記セキュアメモリ空間で前記特定値を読み出したことに応じて、前記仮想マシンが前記IOMMUを認証することと、を含む、
    請求項1に記載の方法。
  11. モリ内のメモリ空間にアクセスするためのダイレクトメモリアクセス要求を入出力(I/O)デバイスから受信し、前記ダイレクトメモリアクセス要求に関連する識別タグ値を決定する入出力メモリ管理ユニット(IOMMU)と、
    少なくとも1つのハードウェアプロセッサを用いて実装されたメモリコントローラであって、前記識別タグ値を前記IOMMUから受信するように構成されており、記識別タグ値に基づいて、前記メモリ空間内のデータへの暗号アクセスを提供する暗号化モジュールを備える、メモリコントローラと、を備える、
    プロセッサ。
  12. 前記識別タグ値は、前記ダイレクトメモリアクセス要求に含まれる要求側IDに基づいて決定される、
    請求項11のプロセッサ。
  13. 前記要求側IDに基づいて、前記暗号化モジュールに渡される前記識別タグ値を決定するためのデバイステーブルを備える、
    請求項12のプロセッサ。
  14. 前記要求側IDを前記識別タグ値と対応付けるハイパーバイザを備える、
    請求項12のプロセッサ。
  15. プロセッサコアと、
    入出力メモリ管理ユニット(IOMMU)と、
    少なくとも1つのハードウェアプロセッサを用いて実装されたメモリコントローラと、を備えるプロセッサであって、
    前記IOMMUは、
    仮想マシン(VM)に関連するメモリ内のセキュアメモリ空間にアクセスするために、メモリアドレス値及び前記VMを示す要求側IDを含むダイレクトメモリアクセス要求を入出力(I/O)デバイスから受信し、
    前記要求側IDに関連する識別タグ値を決定し、
    前記メモリコントローラは、
    前記識別タグ値を前記IOMMUから受信し、
    前記識別タグ値に対応するセキュリティキーを使用して、前記セキュアメモリ空間の前記メモリアドレス値のデータにアクセスする、
    プロセッサ。
JP2019521086A 2016-10-19 2017-10-17 処理システムにおけるダイレクトメモリアクセス認可 Active JP6618658B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/297,868 US10176122B2 (en) 2016-10-19 2016-10-19 Direct memory access authorization in a processing system
US15/297,868 2016-10-19
PCT/US2017/057005 WO2018075535A1 (en) 2016-10-19 2017-10-17 Direct memory access authorization in a processing system

Publications (2)

Publication Number Publication Date
JP2019532438A JP2019532438A (ja) 2019-11-07
JP6618658B2 true JP6618658B2 (ja) 2019-12-11

Family

ID=61904502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019521086A Active JP6618658B2 (ja) 2016-10-19 2017-10-17 処理システムにおけるダイレクトメモリアクセス認可

Country Status (6)

Country Link
US (1) US10176122B2 (ja)
EP (1) EP3529738A4 (ja)
JP (1) JP6618658B2 (ja)
KR (1) KR102107711B1 (ja)
CN (1) CN109844751B (ja)
WO (1) WO2018075535A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
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
US10817447B2 (en) * 2016-11-14 2020-10-27 Intel Corporation Input/output translation lookaside buffer (IOTLB) quality of service (QoS)
US10771439B2 (en) * 2017-06-28 2020-09-08 Microsoft Technology Licensing, Llc Shielded networks for virtual machines
US10325109B2 (en) * 2017-09-14 2019-06-18 International Business Machines Corporation Automatic and dynamic selection of cryptographic modules for different security contexts within a computer network
US10706493B2 (en) 2017-12-29 2020-07-07 Intel Corporation Apparatus and method for display virtualization using mapping between virtual and physical display planes
US11789874B2 (en) 2018-01-09 2023-10-17 Qualcomm Incorporated Method, apparatus, and system for storing memory encryption realm key IDs
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
CN112585607A (zh) * 2018-08-22 2021-03-30 高通股份有限公司 用于存储存储器加密领域密钥id的方法、装置和系统
US11836091B2 (en) 2018-10-31 2023-12-05 Advanced Micro Devices, Inc. Secure memory access in a virtualized computing environment
CN109684030B (zh) * 2018-11-22 2021-05-04 海光信息技术股份有限公司 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统
US11256427B2 (en) * 2018-12-28 2022-02-22 Micron Technology, Inc. Unauthorized memory access mitigation
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11494211B2 (en) * 2019-04-22 2022-11-08 Advanced Micro Devices, Inc. Domain identifier and device identifier translation by an input-output memory management unit
US20200387326A1 (en) * 2019-06-10 2020-12-10 Advanced Micro Devices, Inc. Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit
US11593529B2 (en) * 2019-07-29 2023-02-28 Intel Corporation Device interface security management for computer buses
US11003588B2 (en) * 2019-08-22 2021-05-11 Advanced Micro Devices, Inc. Networked input/output memory management unit
CN112825041A (zh) * 2019-11-21 2021-05-21 上海海思技术有限公司 一种内存隔离的装置、内存隔离方法和相关设备
CN111274555B (zh) * 2020-01-15 2022-11-18 福建杰木科技有限公司 Flash存储器中的代码保护方法及保护装置
US11604671B2 (en) 2020-03-19 2023-03-14 Red Hat, Inc. Secure virtual machine and peripheral device communication
EP3913512A1 (en) * 2020-05-21 2021-11-24 BAE SYSTEMS plc On-die computer apparatus
EP4154140B1 (en) * 2020-05-21 2024-04-10 BAE SYSTEMS plc On-die computer apparatus
US11748135B2 (en) * 2020-07-30 2023-09-05 Red Hat, Inc. Utilizing virtual input/output memory management units (IOMMU) for tracking encryption status of memory pages
KR20220041586A (ko) 2020-09-25 2022-04-01 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 전자 시스템
CN112257092B (zh) * 2020-11-05 2023-10-27 海光信息技术股份有限公司 数据传输控制方法、密钥管理方法、配置方法及相关装置
CN112433817B (zh) * 2020-11-27 2022-11-25 海光信息技术股份有限公司 信息配置方法、直接存储访问方法及相关装置
US20220188135A1 (en) * 2020-12-10 2022-06-16 Ati Technologies Ulc Hardware-based protection of virtual function resources
US11893410B2 (en) 2021-01-13 2024-02-06 Vmware, Inc. Secure storage of workload attestation reports in a virtualized and clustered computer system
US11709700B2 (en) * 2021-01-13 2023-07-25 Vmware, Inc. Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system
US20220308756A1 (en) * 2021-03-26 2022-09-29 Ati Technologies Ulc Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory
US20230040900A1 (en) * 2021-07-27 2023-02-09 International Business Machines Corporation Secure memory isolation for secure endpoints
US11874777B2 (en) 2021-12-16 2024-01-16 International Business Machines Corporation Secure communication of virtual machine encrypted memory
CN114238185A (zh) * 2021-12-20 2022-03-25 海光信息技术股份有限公司 直接存储访问及命令数据传输方法、装置及相关设备
US11860797B2 (en) * 2021-12-30 2024-01-02 Advanced Micro Devices, Inc. Peripheral device protocols in confidential compute architectures
US20230393780A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Memory controller firmware virtualization

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721068B2 (en) * 2006-06-12 2010-05-18 Oracle America, Inc. Relocation of active DMA pages
US8631170B2 (en) 2010-09-16 2014-01-14 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU
US9355031B2 (en) 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US9164924B2 (en) * 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9424199B2 (en) 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
US9063891B2 (en) * 2012-12-19 2015-06-23 Advanced Micro Devices, Inc. Secure computer system for preventing access requests to portions of system memory by peripheral devices and/or processor cores
US9990221B2 (en) * 2013-03-15 2018-06-05 Oracle International Corporation System and method for providing an infiniband SR-IOV vSwitch architecture for a high performance cloud computing environment
US9792448B2 (en) * 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US9798678B2 (en) * 2015-04-02 2017-10-24 International Business Machines Corporation Protecting storage from unauthorized access

Also Published As

Publication number Publication date
CN109844751A (zh) 2019-06-04
EP3529738A4 (en) 2020-02-26
JP2019532438A (ja) 2019-11-07
WO2018075535A1 (en) 2018-04-26
US10176122B2 (en) 2019-01-08
US20180107608A1 (en) 2018-04-19
CN109844751B (zh) 2021-02-02
KR20190075063A (ko) 2019-06-28
KR102107711B1 (ko) 2020-05-07
EP3529738A1 (en) 2019-08-28

Similar Documents

Publication Publication Date Title
JP6618658B2 (ja) 処理システムにおけるダイレクトメモリアクセス認可
EP3602376B1 (en) Monitoring of memory page transitions between a hypervisor and a virtual machine
JP6450775B2 (ja) 処理システムにおける情報の暗号保護
JP7158985B2 (ja) セキュアなパブリッククラウドのための暗号メモリオーナーシップテーブル
US20170277898A1 (en) Key management for secure memory address spaces
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US10938559B2 (en) Security key identifier remapping
JP7464586B2 (ja) メモリ完全性チェックのための完全性ツリー
CN107526974B (zh) 一种信息密码保护装置和方法
US20200192825A1 (en) Security for virtualized device
JP6672341B2 (ja) 仮想マシンの状態情報の保護

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190621

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190621

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20190621

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191011

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191112

R150 Certificate of patent or registration of utility model

Ref document number: 6618658

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