JP2018511956A - セキュアエンクレーブを用いてデータ暗号化を強化するための技術 - Google Patents

セキュアエンクレーブを用いてデータ暗号化を強化するための技術 Download PDF

Info

Publication number
JP2018511956A
JP2018511956A JP2017540745A JP2017540745A JP2018511956A JP 2018511956 A JP2018511956 A JP 2018511956A JP 2017540745 A JP2017540745 A JP 2017540745A JP 2017540745 A JP2017540745 A JP 2017540745A JP 2018511956 A JP2018511956 A JP 2018511956A
Authority
JP
Japan
Prior art keywords
user mode
enclave
data
module
buffer
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.)
Granted
Application number
JP2017540745A
Other languages
English (en)
Other versions
JP6682752B2 (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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2018511956A publication Critical patent/JP2018511956A/ja
Application granted granted Critical
Publication of JP6682752B2 publication Critical patent/JP6682752B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Abstract

暗号化操作を強化するための技術が開示される。いくつかの実施形態において、ユーザモード及び/又はプリブート環境で実行され得る当該技術は、セキュアエンクレーブを用いて、カーネルモードプログラムによって通常行われる暗号化操作を強化する。いくつかの実施形態において、当該技術は、ユーザモードでホストされるセキュアエンクレーブを用いることで、暗号化操作の実行を可能にするために、共有バッファ及びプロキシを活用する。追加の実施形態において、当該技術は、プリブート段階でセキュアエンクレーブの使用を可能にするために、例えば、セキュアエンクレーブを用いることで、コンピューティングデバイスを起動するのに必要とされ得るデータを解読することを可能にするように、1つ又は複数のプリブートアプリケーションを利用する。

Description

本開示は概して、1つ又は複数のセキュアエンクレーブを用いて、データ暗号化を強化するための技術に関する。より詳細には、本開示は、セキュアエンクレーブを用いてカーネルモードプログラムによって通常行われるデータ暗号化操作を強化するための技術に関し、これは、ユーザモード及び/又はプリブート環境で実行することができる。そのような技術を利用するデバイス、システム、及び方法も開示される。
例えば、情報が、ハードドライブ、ソリッドステートディスクなどのデータストレージに格納される又はそこから読み出される場合、その情報を暗号化する及び解読するために、ディスク暗号化ソフトウェアが用いられることが多い。そのような例では、データ暗号化は、暗号化キーを用いてカーネルモードで動作するアプリケーションによって行われることが多い。暗号化キーを用いるデータ暗号化は、暗号化キー(又は対応する復号化キー)が保護されたままであるという条件で、概して安全である。これに関して、権限のない集団によるアクセスから暗号化キー及び/又は復号化キーを保護するのに、様々な技術が利用可能である。例えば、ユーザが提供するパスフレーズでキーをラップ(wrapping)する、信頼済みのプラットフォームモジュール及び/又はスマートカードでキーを閉じ込めるなどによって、キーを保護することができる。
既存のキー保護技術は有用であるが、そのような技術は完全にセキュアではない。これは、暗号化操作が平文又は暗号文で行われているので、多くの暗号化技術が平文のキーをメモリ内に露出させていることが原因である。これにより、活動的なハッカー及び/又はマルウェアが平文のキーを取得する機会を与えることになる。
例えば、権限のない第三者が、いわゆる「コールドブート(cold−boot)」攻撃を実行して、暗号化システムに、平文のキーを含んだその物理メモリのコンテンツをダンプさせることができ、その後、当該第三者は結果として得られるダンプファイルからキーを復元することができる。あるいは、第三者が、いわゆる「悪意のあるメイド(evil maid)」攻撃を実行して、ユーザパスフレーズが入力された時にそれをインターセプトするキーロガーをインストールすることができ、その後キーロガーは、当該第三者が平文の暗号化キーを復元するのに用いることができる。同様に、クライアントシステムのソフトウェアスタックの下に仮想マシンモニタ(VMM)を作成する「ブルーピル(blue−pill)」攻撃を実行することができる。その実装に応じて、暗号化キーを直接取得する、又は平文の暗号化キーを復元するのに用いられ得るユーザパスフレーズを取得するのに、VMMは利用されることがある。
上記の観点から、ディスク暗号化を強化するための技術に関心が高まっている。特に、暗号化操作の実行の間に、情報を暗号化及び解読するのに用いられるキーを保護するための技術に関心が高まっている。
特許請求に係る主題の実施形態の特徴及び利点は、以下の詳細な説明が進むにつれ、また図面を参照することで、明らかになるであろう。ここで、同様の数字は同様の部分を示している。
本開示に係るデータ暗号化操作を強化するセキュアエンクレーブを実装する電子デバイスの例示的な実施形態を示す。 本開示に係るデータ暗号化操作を強化するセキュアエンクレーブを実装する電子デバイスの例示的な実施形態の一部を示す。 本開示に係る、セキュアエンクレーブを用いてデータ暗号化操作を強化する方法の1つの例による、ユーザモードインタフェースモジュールに対するカーネルの例示的な動作に関するフローチャートである。 本開示に係るセキュアエンクレーブを用いてデータ暗号化操作を強化する方法の1つの例による、エンクレーブホストモジュールの例示的な動作に関するフローチャートである。 本開示に係る、プリブート段階でセキュアエンクレーブを実装する方法の1つの例の例示的な動作に関するフローチャートである。
本開示は、特定の応用に関する例示の実施形態を参照して本明細書で説明されるが、そのような実施形態は単に例示的なものであり、添付された特許請求の範囲により定義される本発明は、それらの実施形態に限定されないことを理解されたい。実際に、例示の目的のために、本明細書で説明される技術は、平文のデータがディスク(例えば、ハードドライブ、ソリッドステートディスクなど)に書き込まれる前に暗号化される、あるいはディスクから読み出された暗号文のデータが解読されるという、1つ又は複数の使用例の文脈で論じられてよい。そのような議論は単に例示の目的のためであり、本明細書で説明される技術の全て又は一部は、他の文脈で用いられてよいことを理解されたい。本明細書で提供される教示を入手できる当業者は、本開示の範囲内の追加の変更、追加の応用、及び追加の実施形態、並びに本開示の実施形態が有用になるであろう追加の分野を認識するであろう。
本明細書で用いられる表記及び専門用語を全般に参照して、続く詳細な説明の部分が、コンピュータ上又はコンピュータのネットワーク上で実行されるプログラム手順に関して提示されてよい。これらの手順上の説明及び表現は、当業者が自分の仕事の内容を他の当業者に最も効果的に伝達するために用いられる。手順は、ここでは、所望の結果をもたらす、自己矛盾のない動作のシーケンスであると、概して考えられる。これらの動作は、物理量の物理的操作を必要とする動作である。通常、これらの量は、必ずしもそうではないが、格納される、転送される、組み合わされる、比較される、及びそうでなければ操作されることが可能な、電気信号、磁気信号、又は光信号の形態を取る。主に一般的に用いる理由で、これらの信号をビット、値、要素、記号、文字、用語、番号などとして言及することが時には都合のよいことが分かる。しかし、これら及び類似の用語の全ては、適切な物理量に関連付けられており、こうした量に適用される単に便利なラベルであることに留意されたい。
さらに、これらの操作は、追加する又は比較するなどの用語で言及されることが多く、一般に、人間のオペレータにより行われる知的動作に関連付けられる。しかし、人間のオペレータのそのような能力は、1つ又は複数の実施形態の一部を形成する、本明細書で説明される動作のいずれにおいても、大部分の場合、必要ではなく、望ましいものでもない。むしろ、これらの動作は機械の操作である。様々な実施形態の動作を行うのに有用な機械には、中に格納され、本明細書の教示に従って書き込まれているコンピュータプログラムによって、選択的に起動する又は構成される汎用デジタルコンピュータが含まれ、及び/又は必要な目的のために特別に構築された装置が含まれる。様々な実施形態はまた、これらの動作を行うための装置又はシステムに関する。これらの装置は、必要な目的のために特別に構築されてよく、又は汎用コンピュータを含んでもよい。様々なこれらの機械に必要な構造は、与えられる説明から明らかになるであろう。
本開示の文脈において、「コンピューティングデバイス」及び「電子デバイス」という用語は、少なくとも部分的にセキュアエンクレーブを用いて暗号化操作を行うのに利用されてよい様々なデバイスを指すために区別なく用いられている。好適なコンピューティングデバイスの非限定的な例には、カメラ、携帯電話、コンピュータ端末、デスクトップコンピュータ、電子リーダ、ファクシミリ機器、キオスク(kiosk)、ネットブックコンピュータ、ノートブックコンピュータ、インターネットデバイス、決済端末、携帯情報端末、メディアプレーヤ及び/又はレコーダ、サーバ、セットトップボックス、スマートフォン、タブレットパーソナルコンピュータ、テレビ、ウルトラモバイルパーソナルコンピュータ、有線電話、これらの組み合わせなどが含まれる。そのようなデバイスは、携帯型でも固定型でもよい。限定されるものではないが、本明細書で説明されるクライアントは、携帯電話、デスクトップコンピュータ、電子リーダ、ラップトップコンピュータ、セットトップボックス、スマートフォン、タブレットパーソナルコンピュータ、テレビ、又はウルトラモバイルパーソナルコンピュータの形態であることが好ましい。
本明細書で用いられるとき、「ディスク」、「ストレージ」、及び「ストレージデバイス」という用語は、不揮発性のデータストレージを提供するのに用いられ得る1つ又は複数の不揮発性メモリデバイスを指すのに、本明細書では区別なく用いられる。本明細書で用いられ得るストレージデバイスの非限定的な例には、磁気ストレージデバイス(例えば、磁気ハードドライブ、光磁気ドライブ、熱アシスト磁気記録デバイス、磁気ディスクなど)、ソリッドステートストレージデバイス(例えば、不揮発性ソリッドステートNOT AND(NAND)又はNOT OR(NOR)メモリを利用するストレージデバイス)、不揮発性メモリを含んだメモリスティック及び/又はメモリカード、これらの組み合わせなどが含まれる。
「暗号化操作」という表現は概して、必要に応じて、平文の暗号文への暗号化、暗号文の平文への復号化、又はこれらの何らかの組み合わせを指すために本明細書で用いられている。したがって、「暗号化操作」という用語は、この表現が用いられる文脈に基づいて適切な解釈が与えられる状態で、データの暗号化及び復号化の両方を包含するものと理解されたい。
本明細書の任意の実施形態に用いられるとき、「モジュール」という用語は、本開示に係る1つ又は複数の動作を行うよう構成されるソフトウェア、ファームウェア、及び/又は回路を指すことができる。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記録されたソフトウェアパッケージ、コード、命令、命令セット、及び/又はデータとして具現化されてよい。ファームウェアは、メモリデバイスにハードコードされた(例えば不揮発性の)コード、命令、又は命令セット、及び/又はデータとして具現化されてよい。「回路」は、本明細書の任意の実施形態に用いられるとき、例えば、物理的に組み込まれた回路、1つ又は複数の別個の命令処理コアを含むコンピュータプロセッサなどのプログラマブル回路、ステートマシン回路、プログラマブル回路により実行される命令を格納するソフトウェア及び/又はファームウェアを単独で含んでよく、又はこれらの任意の組み合わせを含んでもよい。モジュールは、1つ又は複数のクライアントデバイスの一部を形成する回路として(例えば、少なくとも部分的にハードウェアで実装されたロジックとして)、集合的に又は個別に具現化されてよい。
後に詳細に説明されるように、本開示の技術は、コンピューティングデバイスにより行われるデータ暗号化操作を強化するために、1つ又は複数のセキュアエンクレーブ(本明細書では、「メモリエンクレーブ」又は単に「エンクレーブ」とも呼ばれる)を利用する。一般に、セキュアエンクレーブは、コンピューティングデバイスの従来のリング境界によって課されるアクセスポリシと異なるアクセスポリシを有する少なくとも1つのメモリページで構成されている。セキュアエンクレーブ内のメモリページは、読み出し/書き込み制御が、特定の動作モード又は特権「リング」、システム管理モード、又は関連プロセッサの仮想マシンモニタに関して排他性を有するように構成され得る関連の読み出し/書き込み制御を有することができる。したがって、セキュアエンクレーブは、保護された場所をホストに提供し、信頼されたコード、データなどを実行するよう設計されてよく、これにより、セキュアエンクレーブは、オペレーティングシステム、仮想マシンモニタ、これらの組み合わせなどのアプリケーションソフトウェア及び特権ソフトウェアを含んだ、クライアント上の他のソフトウェアから保護され得る。限定されるものではないが、好適なセキュアエンクレーブには、Intel(登録商標)のセキュアエンクレーブ技術を用いて提供され得るものが含まれ、これらはIntel(登録商標)セキュアガード命令(SgX)を用いて、又は別の方式で実装されてよい。もちろん、他の好適なメモリエンクレーブ技術が用いられてよい。
例えば、いくつかの実施形態において、本明細書で説明される技術は、暗号化操作を行うのに用いられ得る1つ又は複数のキーの保管にセキュアな場所を提供するために、セキュアエンクレーブを利用する。代替的に又は追加的に、いくつかの実施形態において、暗号化操作は、セキュアエンクレーブ内で行われてよく、これにより、そこに格納されたキーは決してメモリ内で露出することはない。理解され得るように、これにより、権限のない第三者が、暗号化操作を行うのに用いられるキーをコンピューティングデバイスの物理メモリから取得するのを制限する、又は阻止することさえできる。
いくつかの実施形態において、セキュアエンクレーブは、そこに格納されたキーを、エンクレーブ自体の計測値に基づいてラップすることにより保護するために用いられてよい。そのような実施形態において、キーが暗号化操作を行うのに用いられ得る前に、キーを(エンクレーブの計測値を用いて)アンラップ(unwrap)することが必要となることがある。理解され得るように、キーがラップされた後に、エンクレーブの計測値が(例えば、改ざんに起因して)任意の態様に変わった場合、キーのアンラップは可能でなくてよい。これにより、エンクレーブ自体を改ざんする、又はそうでなければ標的にする攻撃を介して、第三者が平文のキーにアクセスするのを効果的に阻止することができる。
セキュアエンクレーブの特徴及び特別に暗号化されたメモリ位置の使用に起因して、セキュアエンクレーブとのやり取りは、ユーザモードで実行されるアプリケーションに限定され得ることに留意されたい。このことを考慮して、多くのデータ暗号化スイートが、カーネルモードで実行される暗号化アプリケーションを利用する。このことは、暗号化アプリケーションが全ディスク暗号化又は部分的なディスク暗号化の動作を行うことを担う例では特に当てはまり、ディスクの全て又は指定された部分に書き込まれるデータは、ディスクにコミットされる(書き込まれる)前に暗号化されることになる。したがって、多くの既存の暗号化スイートは、エンクレーブ(これは、ユーザモードで動作することができる)と、暗号化アプリケーション(これは、カーネルモードで動作することができる)との間のやり取りを限定する又は阻止し得る制約に起因して、セキュアエンクレーブを活用することができない。以下に説明されるように、本開示の1つの態様は、この問題に取り組むことを目指すデバイス及び方法に関する。
全ディスク暗号化又は部分的なディスク暗号化などのいくつかの使用例において、コンピューティングデバイスを起動するのに必要なデータの全て又は一部が、暗号文としてディスクに格納されてよい。そのような例において、1つ又は複数のアプリケーション(例えば、BIOSレベルの暗号化アプリケーション)は、クライアントデバイスをディスクから起動するのに必要なアプリケーション/データを解読するために、プリブート段階で暗号化/復号化キーを利用することができ、その後に通常はデバイスが起動され得る。この方法は効果的であるが、権限のない第三者による攻撃を受けやすい場合があるシステムメモリにおいて、平文のキーを露出させることがある。このことを考慮して、本開示の別の態様は、例えば、全ディスク暗号化又は部分的なディスク暗号化の文脈において、コンピューティングデバイスの起動前又は起動中に行われ得る暗号化操作の強化を、セキュアエンクレーブを用いることで可能とする技術に関する。理解されるように、そのような技術は、プリブート段階において、すなわち、ユーザモードアプリケーションが通常実行される前に、(通常はユーザモード環境で実行される)エンクレーブの使用を可能にすることができる。
次に図面を参照する。ここでは、全体に渡って、同様の参照数字が同様の要素を指すのに用いられている。理解を明確且つ容易にする目的で、以下の説明は、特定の使用例において暗号化操作を強化するセキュアエンクレーブの使用に重点を置くことに留意されたい。これらの使用例に関して多数の詳細が提供されてよいが、本明細書で説明される技術は、本明細書で説明される特定の使用例に関して提供される詳細のいくつか又は全てを用いずに、他の文脈において潜在的に実施され得ることを理解されたい。明確さを目的として、よく知られた構造及びデバイスがブロック図の形態で示されていることにも留意されたい。添付された特許請求の範囲内の全ての変更形態、均等形態、及び代替形態が包含されることが意図されている。
上記のことを考慮して、図1は、本開示に係る暗号化操作を強化するセキュアエンクレーブを実装するよう構成されたコンピューティングデバイスの1つの例示的な実施形態に関するシステムアーキテクチャのコンポーネントを示す。示されるように、コンピューティングデバイス100は、プロセッサ110、入出力インタフェース(I/O)120、及びストレージ130を含む。そのようなコンポーネントは、バス又は他の好適な通信媒体(不図示)を介するなどして、任意の好適な態様で互いに通信可能に結合されてよい。現代のコンピューティングデバイスに一般に見出され得る物理(例えば、ランダムアクセス)メモリ、ディスプレイなどの様々なコンポーネントは、明確さを目的として図1から省略されている。
コンピューティングデバイス100は、セキュアエンクレーブを用いて少なくとも部分的に暗号化操作を行うのに好適な、任意のタイプのコンピューティングデバイスであってもよい。そのようなデバイスの例は上記に列挙されているので、繰り返して説明されない。コンピューティングデバイス100は概して、そのフォームファクタに関係なく、ユーザモードで動作するセキュアエンクレーブを用いることで、そうでなければカーネルモードで実行される1つ又は複数のアプリケーションによって行われるであろう暗号化操作を行うことができるよう構成される。図1は、この態様で構成される単一のコンピューティングデバイス100を示すが、本明細書で説明される様々な操作及びコンポーネントは、複数のコンピューティングデバイスの中に組み込まれてよく、及び/又はそこに実装されてよいことを理解されたい。
プロセッサ110は、任意の好適な汎用プロセッサ又は特定用途向け集積回路であってよく、1つ又は複数のスレッドを1つ又は複数のプロセッサコア上で実行することが可能であってよい。限定されるものではないが、いくつかの実施形態において、プロセッサ110は汎用プロセッサであってよく、例えば、限定されないが、Intel(登録商標)Corp.、Advanced Micro Devices(登録商標)、ARM(登録商標)、NVIDIA(登録商標)、Apple(登録商標)、及びSAMSUNG(登録商標)から商業的に入手可能な汎用プロセッサなどであってよい。図1は、単一のプロセッサを含むコンピューティングデバイス100を示すが、1つ又は複数の処理コアを含む複数のプロセッサが用いられてもよい。限定されるものではないが、いくつかの実施形態におけるプロセッサ110は、過去に製造された、現在製造されている、又は今後製造される、単一又はマルチコアのIntel(登録商標)プロセッサである。
プロセッサ110は、そのタイプに関係なく、「カーネルモード」及び「ユーザモード」と呼ばれる異なる動作モードを提供するよう構成されてよい。プロセッサ110は、実行している又は実行するアプリケーションの特権レベルに基づいて、カーネルモードとユーザモードを切り換えることができる。一般に、インタフェース機能を初期化してコンピューティングデバイスのコンポーネント(例えば、ドライバ、オペレーティングシステム(OS)コンポーネント、プリブートアプリケーションなど)に提供するのに用いられ得るアプリケーションは、カーネルレベルの特権を有し、したがって、カーネルモードで動作する。すなわち、プロセッサ110は、これらのタイプのアプリケーションを実行する場合、カーネルモードで動作するよう構成される。これに対して、大部分の他のアプリケーションはユーザレベルの特権を有し、したがって、プロセッサ110は、そのようなアプリケーションを実行する場合、ユーザモードで動作するよう構成される。
図1にさらに示されるように、プロセッサ110は、1つ又は複数のモデル固有レジスタ(MSR112)と、セキュアエンクレーブページキャッシュ(EPC)114とを含むことができる。プロセッサ110は制御ルーチン131を実行するので、1つ又は複数のMSR112がユーザモード動作とカーネルモード動作を切り換えることを可能にするように設定することができる。例えば、1つ又は複数のMSR112は、SYSCALL/SYSRET命令を可能にするよう設定されてよく、これにより、ユーザモードとカーネルモードの間でプロセッサ110を切り換えることができる。
図1は、EPC114をプロセッサ110に含まれているものとして図示しているが、EPC114は、限定されないが、ストレージ130、プラットフォームローカルメモリ(例えば、DRAMなど)、基本入出力システム(BIOS)によりアクセス可能なメモリなど、コンピューティングデバイス100の別のコンポーネントに存在してよいことに留意されたい。いくつかの実施形態において、EPC114は、コンピューティングデバイス100のプラットフォームローカルメモリの、暗号で保護された領域に格納される。他の実施形態において、EPC114は、ストレージ130の、暗号で保護された領域に格納される。なおもさらなる実施形態において、EPC114は、BIOSがアクセス可能なメモリの、暗号で保護された領域に格納される。
I/O120は、コンピューティングデバイス100がそのそれぞれのコンポーネントの間で、及びオプションとして1つ又は複数の外部デバイスに対して、データを送信及び受信することを可能にするよう構成されるハードウェア(すなわち、回路)、ソフトウェア、又はハードウェアとソフトウェアの組み合わせを含むことができる。そのような通信は、近距離通信ネットワーク及び/又は長距離通信ネットワークを用い、有線接続又は無線接続を介して行われてよい。したがって、I/O120は、そのような通信をサポートするハードウェア、例えば、1つ又は複数のトランスポンダ、アンテナ、Bluetooth(登録商標)チップ、パーソナルエリアネットワークチップ、近距離無線通信チップ、ネットワークインタフェースカード、これらの組み合わせなどを含むことができる。
ストレージ130は、上述したものなど、任意の好適なストレージデバイス又はストレージデバイスの組み合わせであってよい。限定されるものではないが、いくつかの実施形態において、ストレージ130は、1つ又は複数の磁気ハードドライブ、ソリッドステートドライブ(SSD)、スマートカード、ユニバーサルシリアルバス(USB)ドライブ、メモリスティック、これらの組み合わせなどの形態であってよく、又はこれらであってよい。示されるように、ストレージ130は、制御ルーチン131、暗号文132(例えば、全ディスク暗号化又は部分的なディスク暗号化の使用例の場合)、ストレージマッパーモジュール151、ユーザモードインタフェースモジュール(UMIM)152、バッファ154、エンクレーブホストモジュール160、及びセキュアエンクレーブ162のうちの1つ又は複数を格納することができる。バッファ154、エンクレーブホストモジュール160、及びセキュアエンクレーブ162は、ストレージ130に格納されているものとして図示されているが、そのような実装は必須ではないことを理解されたい。実際に、そのようなコンポーネントは、限定されないが、プロセッサ110内のメモリ(例えば、プロセッサキャッシュメモリ)、システム物理メモリ(例えば、DRAM)、これらの組み合わせなど、任意の好適なメモリ及びメモリ位置に実装されてよい。
制御ルーチン131は、様々な機能を実行するロジックを実装するプロセッサ110上で動作する一連の命令を含む。例えば、制御ルーチン131を実行する際に、プロセッサ110は、ストレージマッパーモジュール151及びUMIM152などのカーネルモードコンポーネントにカーネルモードサポートを提供することができる。さらに、プロセッサ110が制御ルーチン131を実行すると、エンクレーブホストモジュール160、エンクレーブ162、及び他のユーザモードアプリケーション(図1には示されていない)などのユーザモードコンポーネントにユーザモードサポートを提供することができる。後に詳細に説明されるように、UMIM152は、エンクレーブ162による暗号化操作の実行に利用できるように、(例えば、ストレージ130からの)暗号文132、及び/又は(例えば、1つ又は複数のユーザモードアプリケーションからの)平文などのデータをバッファ154に向けるパイプ役として機能することができる。さらに、いくつかの実施形態において、UMIM152は、UMIM152(カーネルモードアプリケーション)とエンクレーブホストモジュール160(ユーザモードアプリケーション)との間の通信を可能にするのに活用され得るプロキシ(図1には示されていない)を、コンピューティングデバイス100(又はより具体的にはプロセッサ110)に確立させるよう構成されてよい。
様々な実施形態において、制御ルーチン131は、オペレーティングシステム(OS)、デバイスドライバ、及び/又はアプリケーションレベルのルーチン(例えば、ディスク媒体で提供されるいわゆる「ソフトウェアスイート」、リモートサーバから取得される「アプレット」など)のうちの1つ又は複数を含むことができる。オペレーティングシステムが含まれる場合、オペレーティングシステムは、コンピューティングデバイス100及び/又はプロセッサ110に適切である様々な利用可能なオペレーティングシステムのうちのいずれかであってよく、その中には、限定されないが、Microsoft(登録商標)のWindows(登録商標)オペレーティングシステム、Mac(登録商標)OS(登録商標)、Linux(登録商標)オペレーティングシステム、Android(登録商標)オペレーティングシステム、Unix(登録商標)オペレーティングシステム、あるいはモバイルデバイス又は他の電子デバイス用のその他のオペレーティングシステムなどが含まれる。
1つ又は複数のデバイスドライバが含まれる場合、これらのデバイスドライバは、様々な他のコンポーネントのうちのいずれかに、それがコンピューティングデバイス100のハードウェアコンポーネントであってもソフトウェアコンポーネントであっても、サポートを提供することができる。
いくつかの実施形態において、制御ルーチン131(又は、その何らかのコンポーネント)は、セキュアエンクレーブ162を作成するよう動作することができる。例えば、制御ルーチン131は、セキュアエンクレーブ162を作成するカーネルモードドライバを含むことができる。カーネルモードドライバは、少なくとも1つのメモリページをEPC114に割り当てる、またエンクレーブイメージを割り当てられたメモリページの位置に拡張するなどによって、任意の好適な態様でセキュアエンクレーブ162を作成することができる。必要に応じて、エンクレーブは次に、例えば、エンクレーブ162に割り当てられたEPC114内のメモリページをエンクレーブホストモジュール160にマッピングするマッピング操作を行うことで、エンクレーブホストモジュール160に移されてよい。
もちろん、後にさらに詳細に説明されるように、エンクレーブ162は、制御ルーチン131により作成される必要はない。実際に、本開示のいくつかの実施形態において、エンクレーブ162は、コンピューティングデバイス100のプリブート段階において、例えば、コンピューティングシステム100を起動するのに必要とされ得る制御ルーチン131のコンポーネントの実行前に、作成及び/又はインスタンス化されてよい。例えば、エンクレーブは、例えば、制御ルーチン131の様々なコンポーネントを読み込む前に、BIOSブートローダ又は他のBIOSアプリケーションによって確立されてよい。この態様でエンクレーブ162を作成することは、制御ルーチン131の全て又は一部がエンクレーブによって暗号化された場合、例えば、コンピューティングデバイス100がシャットダウンした場合、特に有用であり得る。
セキュアエンクレーブにより処理されるデータをUMIM152に送信するよう概して構成されるストレージマッパーモジュール151は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせの形態であってよい。例えば、後に詳細に説明されるように、全ディスク暗号化又は部分的なディスク暗号化の状況において、ストレージマッパーモジュール151は、(例えば、図1には示されていないユーザモードアプリケーションからの)平文データ、及び/又は(例えば、これも示されていないディスク又は他のメモリからの)暗号文データをUMIM152に送信するよう構成されてよい。
例示のために、ストレージマッパーモジュール151は、説明したばかりの態様でデータを送信するよう動作する独立したコンポーネントとして、本明細書に説明されている。しかし、ストレージマッパーモジュール151は、この態様で実装される必要はないことを理解されたい。例えば、ストレージマッパーモジュールは、ストレージ130のストレージスタック(不図示)とともに実装されてよく、又はその一部として実装されてもよい。ストレージスタックの特徴及び特性は、制御ルーチン131の特徴に応じて、より具体的にはコンピューティングデバイス100上で実行されているオペレーティングシステムのタイプに応じて、異なってよいことが理解されよう。例えば、Linux(登録商標)オペレーティングシステムの環境において、ストレージマッパーモジュールは、DeviceMapperフレームワークの文脈で実装されてよく、これは、物理ブロックデバイスをより高いレベルの仮想ブロックデバイスにマッピングするLinux(登録商標)メカニズムであり、「dm−crypt」として知られるLinux(登録商標)カーネルモードディスク暗号化サブシステムに関連して用いられる。もちろん、他の実装が可能であり、そのような実装は当業者によって容易に理解されるであろう。特定の実装に関係なく、ストレージマッパーモジュール151は、前述したように、データ(平文、暗号文、又は他の文)をUMIM152に送信するよう概して構成されることを理解されたい。
バッファ154は、バッファ154がプロセッサ110上で実行され得るカーネルモードアプリケーション及びユーザモードアプリケーションによりアクセス可能であってよいように、構成されてよい。したがって、バッファ154は、カーネルモードアプリケーション及びユーザモードアプリケーションにより、書き込まれ読み出され得る「共有」バッファとして理解されてよい。例えば、いくつかの実施形態では、UMIMはデータ(例えば、暗号文又は平文)をバッファ154に書き込む、又は書き込ませることができ、その後、当該データは、エンクレーブホストモジュール160(又は、より具体的にはエンクレーブ162)によりバッファ154から読み出されてよい。エンクレーブ162は、必要に応じてデータに暗号化操作を行い、その後バッファ154に書き込まれ得る「処理済み」データを生成することができる。UMIMは次に、図2に関してさらに詳細に説明されるように、処理済みデータをバッファ154から取得し、そのデータをコンピューティングデバイス100の他のコンポーネント、例えば、ストレージマッパーモジュール151に向けることができる。
バッファ154は、任意の好適なタイプの共有バッファであってよい。限定されるものではないが、いくつかの実施形態において、バッファ154は、リング(円形の)バッファの形態である。理解されるように、リングバッファは、端と端が接続されたかのような単一の固定サイズのバッファを用いるデータ構造であってよく、これにより、バッファは先入れ先出し(FIFO)の特徴を有する。そのような例において、UMIM152は、エンクレーブ162で処理するために、データをバッファ154に書き込むことができ、これにより、前述したようにデータに暗号化操作を行うことができる。
いくつかの実施形態においてエンクレーブ162は、バッファ154内のデータに暗号化操作を「インプレース(in place)」で行うことができ、すなわちこれにより、結果として得られる処理済みデータ(必要に応じて、暗号文又は平文)は、(未処理の)データと同じバッファ154内の位置に保持される。UMIM152は次に、前述したように、例えばFIFO方式で、処理済みデータをバッファ154から読み出すことができる。このプロセスは、例えば、プロセッサ110の異なるスレッド上で、UMIM152及びエンクレーブホストモジュール160を実行することで、促進されてよい。例えば、UMIM152が処理済みデータをバッファ154から読み出す場合、UMIM152は(必要に応じて)当該データを追加の(未処理の)データと交換することができる。追加のデータは次に、上述したように、エンクレーブホストモジュール160により読み出され、エンクレーブ162により処理されてよい。言い換えると、エンクレーブホストモジュール160が未処理データをバッファ154から抜き取り、暗号化操作の実行のために当該未処理データをエンクレーブ162に提供する場合、UMIM152はバッファ154を未処理データで満たすよう動作することができる。同様に、UMIM152が処理済みデータをバッファ154から読み出し、そのデータをストレージマッパーモジュール151に提供する場合、エンクレーブホストモジュール160はバッファ154を処理済みデータで満たすことができる。これにより、エンクレーブ162の単一の起動(例えば、エンクレーブ162に制御を渡す単一のEENTER命令の実行)で、エンクレーブ162が停止する前に(例えば、EEXIT命令の実行前に)、大量のデータ及び/又は複数の少量バッチのデータに暗号化操作を行うことを可能にすることができる。これにより、特にワークロードが高い場合に、潜在的には、繰り返しエントリに関連付けられたオーバーヘッドを低減し、エンクレーブ162から抜け出すことができる。
前述したように、エンクレーブ162は、エンクレーブホストモジュール160によってホストされてよい。一般に、エンクレーブホストモジュール160は、ハードウェア、ソフトウェア、又は、エンクレーブ162の動作を管理するよう構成される、ハードウェアとソフトウェアの組み合わせを含むことができる。例えば、いくつかの実施形態において、エンクレーブホストモジュール160は、ディスク、又は制御ルーチン131の環境内で実行され得る他のサービスとして構成されてよい。いくつかの実施形態において、エンクレーブホストモジュール160は、エンクレーブ162を動作させる1つ又は複数のカーネルモードアプリケーション(例えば、UMIM152)からインジケーションを受信することができるユーザモードアプリケーション及び/又はサービスであってよい。例えば、いくつかの実施形態において、エンクレーブホストモジュール160は、データがバッファ154に存在することを示すバッファデータインジケーションを、UMIM152から受信することができる。バッファデータインジケーションに応答して、エンクレーブホストモジュール160は、例えば、制御をエンクレーブ162に渡すEENTER命令を実行する又はその命令の実行をもたらすことで、エンクレーブ162を動作させることができる。エンクレーブ162は次に、概ね前述したように、バッファ154内のデータに暗号化操作を実行することができる。もちろん、エンクレーブ162の動作を制御するための他のメカニズムが可能であり、それらは本開示により想定される。
バッファデータインジケーションは、任意の好適な態様で提供されてよい。いくつかの実施形態において、UMIM152は、バッファデータインジケーションをエンクレーブホストモジュール160に提供するよう構成されてよい。UMIM152及びエンクレーブホストモジュール160が直接互いに通信することができる例において、例えば、UMIM152は、バッファデータインジケーションを含んだメッセージをエンクレーブホストモジュール160に発行することができる。しかし、多くの状況において、UMIM152(カーネルモードコンポーネント)がエンクレーブホストモジュール160(ユーザモードコンポーネント)と直接通信することは可能ではないことがある。そのような例において、UMIM152及びエンクレーブホストモジュール160は、プロキシを介して互いに通信するよう構成されてよい。
例えば、エンクレーブホストモジュール160は、カーネルモードプロキシに向けられたコール(例えば、読み出しコマンド)を発行するよう構成されてよい。カーネルモードプロキシは、UMIM152又はコンピューティングデバイス100の何らかの他のコンポーネント、例えばストレージマッパーモジュール151などによって確立されてよい。カーネルモードプロキシは、ユーザモードアプリケーションに露出し得るファイル又は他のデータ構造であってよく、又はそれを含んでよい。例えば、制御ルーチン131がLinux(登録商標)オペレーティングシステムである例において、プロキシは、その他のデバイスとして設定されてよく、これは、エンクレーブホストモジュール160によりアクセス可能であってよいファイル又は他のデータ構造を作成することになり得る。そのような例において、エンクレーブホストモジュール160は、上述したように、プロキシ(又は、より具体的には、プロキシに関連付けられたファイル又は他のデータ構造)に向けられたシステムコール(例えば、読み出しコマンド)を発行するよう構成されてよい。
このことを考慮して、いくつかの実施形態のUMIM152は、エンクレーブホストモジュール160により発行されたシステムコールをインターセプトし、データがバッファ154に存在するまで当該コールを保持するよう構成されてよい。データがバッファ154に存在する場合、UMIM152はシステムコールを解放することができる。システムコールの解放は、データがバッファ154に存在することを示すバッファデータインジケーションとして、エンクレーブホストモジュール160に理解されてよい。エンクレーブホストモジュール160は次に、(例えば、EENTER命令を実行させることにより)エンクレーブ162を起動することができる。エンクレーブ162は次に、前述したように、バッファ154内のデータに暗号化操作を実行することができる。暗号化操作の実行は、バッファ154内に残っている(未処理)データがなくなるまで続けることができる。その時に、エンクレーブホストモジュール160は、プロキシ(又は、より具体的には、プロキシに関連付けられたファイル又は他のデータ構造)を対象とする別のシステムコール(例えば、読み出しコマンド)を発行することができる。前のシステムコールのように、エンクレーブホストモジュール162により発行される追加のシステムコールは、UMIM152によりインターセプトされ、データがバッファ154に存在するまで保持されてよい。アプリケーションに応じて、システムコールが発行されるとすぐにエンクレーブ162は無効になってよく(例えば、EEXIT命令の実行により、制御を解放してよい)、閾値期間の終了後、又はいくつかの他の基準が満たされたことに応答して、エンクレーブ162は有効になる。
本開示の技術をさらに説明するために、次に図2を参照する。この図は、セキュアエンクレーブによる暗号化操作の実行に関連したコンピューティングデバイス100の様々なコンポーネントのやり取りを例示するブロック図である。具体的には、図2は、コンピューティングデバイス100の様々なコンポーネントのうちのどれが、ユーザモード及びカーネルモードで動作することができるか、またそのようなコンポーネント間のそれぞれのやり取りを図示する。例示のために、図2のコンポーネントにより行われ得る動作は、コンピューティングシステム100(又は、より具体的には制御ルーチン131)が全ディスク暗号化を実装するよう構成される使用例で説明される。そのような使用例では、ディスク又は他のメモリ(例えば、メモリ200)に格納されている、又は格納されることになるデータは暗号化される(すなわち、暗号文の形態になる)ことを理解されたい。同様に、メモリ200から読み出される暗号化データ(暗号文)は、コンピューティングデバイス100上で実行されるアプリケーション、例えばユーザモードアプリケーションが利用できるように解読される。
上記のことを考慮して、図2は、図1に関連して前述された同じコンポーネントのうちの多く、すなわち、ストレージマッパーモジュール151、UMIM152、バッファ154、エンクレーブホストモジュール160、及びエンクレーブ162を含むようなコンピューティングデバイス100を図示している。したがって、そのようなコンポーネントの特徴は、再度説明しない。さらに、図2は、メモリ200、ユーザモードアプリケーション201、及びプロキシ202を含むようなコンピューティングデバイス100を図示する。
いくつかの実施形態において、メモリ200は不揮発性メモリであり、これはストレージ130内にあっても、そこから遠く離れていてもよい。限定されるものではないが、いくつかの実施形態において、メモリ200はストレージ130内にある。その位置に関係なく、メモリ200はデータを(平文、又は暗号文の形態で)格納するよう動作可能であってよい。コンピューティングデバイス100が全ディスク暗号化を実装する使用例で上述したように、メモリ200に格納されるデータは、暗号文の形態であることを理解されたい。
動作の過程で、ユーザモードアプリケーション201は、メモリ200に格納されている暗号文を対象とした読み出し要求を、コンピューティングデバイス(又は、その何らかのコンポーネント)に発行させることができる。例えば、いくつかの実施形態において、ユーザモードアプリケーション201は、読み出し要求をストレージマッパーモジュール151に発行することができ、ストレージマッパーモジュール151は、コンピューティングデバイス100上で実行される制御ルーチンのストレージスタックとやり取りすることができ、又はそこには不可欠であり得る。いずれの場合も、ストレージマッパーモジュール151は、読み出しコマンドをメモリ200に発行することができ、又はその発行をもたらすことができる。読み出しコマンドは、メモリ200の該当する部分に格納された暗号文(データ)を読み出させて、ストレージマッパーモジュール151に提供させるよう構成されてよい。概ね前述したように、メモリ200からの暗号文の受信に応答して、ストレージマッパーモジュール151は、暗号文をUMIM152に伝えるよう構成されてよい。
代替的に又は追加的に、動作の過程で、ユーザモードアプリケーション201は、コンピューティングデバイス又はその何らかのコンポーネントに、データ(例えば、平文)をメモリ200に書き込む書き込み要求を発行させることができる。例えば、いくつかの実施形態において、ユーザモードアプリケーション201は、書き込み要求をストレージマッパーモジュール151に発行することができる。全ディスク暗号化の使用例に関する文脈において、平文のデータがメモリ200に書き込まれる前に、それを暗号化することが必要になり得る。そのような例(又は、データの暗号化が望まれる他の使用例)において、ストレージマッパーモジュール151は、概ね前述したのと同じ態様で、書き込み要求に関連付けられたデータ(平文)をUMIM152に転送するよう構成されてよい。
ストレージマッパーモジュール151から(暗号文又は平文の形態で)データを受信したことに応答して、UMIM152は、データの全て又は一部をバッファ154のキューに入れることができる。上述したように、バッファ154は、UMIM、及びエンクレーブホストモジュール160などのユーザモードアプリケーションによりアクセスされ得る共有バッファの形態(例えば、リングバッファ)であってよい。暗号文をバッファ154のキューに入れるのと同時に、又はその後に、UMIM152は、データ(具体的には暗号文)がバッファ154に存在することをエンクレーブホストモジュール160に示すバッファデータインジケータを提供することができる。いくつかの実施形態で前述したように、UMIM152は、プロキシ、例えばプロキシ202を対象とするシステムコール(例えば、読み出し要求)を解放することにより、バッファデータインジケータをエンクレーブホストモジュール160に少なくとも部分的に提供することができる。
上述したように、プロキシ202は、エンクレーブホストモジュール160などのユーザモードアプリケーションに露出し得るカーネルモードのデバイス(又は関連したデータ構造)の形態であってよい。プロキシ202は、任意の好適な態様で、コンピューティングデバイス100の任意の好適なコンポーネントによって作成されてよい。例えば、ストレージマッパーモジュール及び/又はUMIMは、例えばプロセッサ101によるプロキシ202の作成をもたらすことができる。限定されるものではないが、いくつかの実施形態において、ストレージマッパーモジュール151が使用可能である(例えば、搭載されている)場合、UMIM152が使用可能である(例えば、搭載されている)場合、又はその両方の場合、プロキシ202は確立されてよい。いずれの場合も、エンクレーブホストモジュール160は、プロキシ202を対象とするシステムコールを発行することができる。UMIM152は、当該システムコールをインターセプトし、これを、データがバッファ154に存在するまで保持することができる。データがバッファ154のキューに入れられると、UMIM152はシステムコールを解放することができ、これにより、データがバッファ154に存在することを示すバッファデータインジケータを、エンクレーブホストモジュール160に提供する。もちろん、プロキシ202を対象とするシステムコールを解放することは、UMIM152がどのようにバッファ154内のデータの存在をエンクレーブホストモジュール160に示すことができるかという、1つの例にすぎない。当業者であれば理解するであろうが、バッファデータインジケータを提供する他の方法が可能である。
いくつかの実施形態において、バッファ154内のデータが平文の形態であるか、それとも暗号文の形態であるか、したがって、エンクレーブ162がそのデータを暗号化するのか、それとも解読するのかということに専用のバッファデータインジケータを、UMIM152がエンクレーブホストモジュール160に提供することが望ましい場合がある。これに関して、プロキシ202は、第1のデータ構造及び第2のデータ構造を提供する(又は、これらの形態になる)よう構成されてよい。上記の説明に則して、エンクレーブホストモジュール160は、第1のデータ構造及び第2のデータ構造を対象とする第1のシステムコール及び第2のシステムコールをそれぞれ発行することができる。UMIM152は、前述したのと同じ態様で第1のシステムコール及び第2のシステムコールをインターセプトして、これらを保持することができる。データをバッファ154のキューに入れた後、UMIM152は次に、バッファ154内のデータの存在を示すだけでなく、どのタイプの動作(暗号化又は復号化)がそこでエンクレーブ162により行われるのかも示すバッファデータインジケータを、エンクレーブホストモジュール160に発行することができる。
例えば、UMIM152は、エンクレーブホストモジュール160により発行され、プロキシ202に関連付けられた第1のデータ構造を対象とする第1のシステムコールを解放することができ、その間、プロキシ202に関連付けられた第2のデータ構造を対象とする第2のシステムコールを保持し続け、これにより、バッファ154内のデータが暗号化されることをエンクレーブホストモジュール160に示すことができる。同様に、UMIM152は、エンクレーブホストモジュール160により発行され、プロキシ202に関連付けられた第2のデータ構造を対象とする第2のシステムコールを解放することができ、その間、プロキシ202に関連付けられた第1のデータ構造を対象とする第1のシステムコールを保持し続け、これにより、バッファ154内のデータが解読されることをエンクレーブホストモジュール160に示すことができる。もちろん、エンクレーブ162によってバッファ154内のデータに暗号化が行われるのか、それとも復号化が行われるのかを制御する他の方法が可能であり、これらの方法は本開示で想定されている。
バッファデータインジケータの受信に応答して、エンクレーブホストモジュール160は、例えば、EENTER命令又は他の好適なコマンドの実行をもたらすことにより、制御をエンクレーブ162に渡すことができる。エンクレーブ162は次に、例えば、そこに格納された1つ又は複数のキーを用いて、バッファ154内のデータに暗号化操作を行うことができる。いくつかの実施形態におけるそのような操作は、エンクレーブ162内で行われ、これにより、そこに格納されたキーは、システムの物理メモリには露出していない。結果として得られる処理済みデータ(必要に応じて、暗号文又は平文)は次に、バッファ154に書き込まれてよい。いくつかの実施形態において、処理済みデータは、バッファ154内のその対応する(未処理)データと同じ位置(アドレス)に書き込まれる。そのような例において、エンクレーブ162は、暗号化操作を「インプレース」で行うとみなされてよい。
バッファ154内のデータの全てが処理された場合、エンクレーブホストモジュール160(又は、より具体的には、エンクレーブ162)は、追加の処理データを要求することができる。いくつかの実施形態において、エンクレーブホストモジュール160は、例えば、完了インジケータをUMIM152に提供することにより、バッファ154内のデータ処理を完了したことを示すことができる。エンクレーブホストモジュール160は、限定されないが、プロキシ202を対象とする別のシステムコールを発行するなど、任意の好適な態様で完了インジケータを提供することができる。代替的に又は追加的に、エンクレーブホストモジュール160は、どのページもマッピングされていないアドレス(例えば、仮想アドレス)を対象とする読み出し要求又は書き込み要求を発行するよう構成される可能性があり、その結果、ページフォールトをもたらす。そのような例において、UMIM152は、そのような誤りを監視し、そのような誤りを完了インジケータと解釈するよう構成されてよい。いずれの場合も、いくつかの実施形態において、完了インジケータはまた、追加データがエンクレーブホストモジュール160により要求されていることをUMIM152に示すことができる。
もちろん、上記の手法は、エンクレーブ162がバッファ154内のデータに対して暗号化操作の実行を完了したことを、UMIM152がどのように判定することができるかに関するほんの数例である。当業者であれば理解するであろうが、他の方法も可能である。
完了インジケータが、プロキシを対象とするシステムコールの形態である例において、UMIM152は、完了インジケータに応答して、バッファ154内の処理済みデータをストレージマッパーモジュールに伝達することができ、ストレージマッパーモジュールは次に、必要に応じて、処理済みデータをメモリ200又はユーザモードアプリケーション201に提供することができる。さらに、UMIM152は、追加データがエンクレーブ162による処理に利用可能であるかに関して判定を行うこともできる。利用可能な場合、UMIM152は、追加データをバッファ154のキューに入れ、プロキシ200(又は、それと関連付けられたデータ構造)を対象とするシステムコールを解放することができ、これにより、別のバッファデータインジケータをエンクレーブホストモジュール160に提供し、追加データがバッファ154内に存在することを示すことができる。このプロセスは、ユーザモードアプリケーション201により発行された読み出し/書き込み要求に関連付けられたデータの全てをエンクレーブ162が処理するまで継続してよい。
いずれの場合も、UMIM152は、バッファ154からストレージマッパーモジュール151に処理済みデータを伝達することができる。処理済みデータが平文の場合、ストレージマッパーモジュール151は、要求通りに、ユーザモードアプリケーション201、又はコンピューティングデバイス100の別のコンポーネントに平文を伝達することができる。しかし、データが暗号文の場合、ストレージマッパーモジュール151は、例えば、暗号文をメモリ200に書き込む書き込みコマンドを実行することにより、又はその実行をもたらすことにより、暗号文をメモリ200に伝達することができる。
いくつかの実施形態において、UMIM152から受信したデータが平文であるか、それとも暗号文であるかを、ストレージマッパーモジュール151が判定することが望ましい場合がある。そのような例において、ストレージマッパーモジュール151は、UMIM152から受信したデータがユーザモードアプリケーション201(平文)に向けられているのか、それともメモリ200(暗号文)に向けられているのかに基づくなど、任意の好適な態様で、そのような判定を行うことができる。例えば、ユーザモードアプリケーション201により発行された、メモリ200を対象とする書き込み要求に応答して、ストレージマッパーモジュール151がデータをUMIM152に送信した例において、例えば、ストレージマッパーモジュール151は、UMIM152から受信したデータが暗号文であると判定することができる。代替的に又は追加的に、例えば、暗号化データを含んだメモリ200の何らかの部分を対象とする読み出し要求に応答して、ストレージマッパーモジュール151がデータをUMIM152に送信した例において、ストレージマッパーモジュール151は、UMIM152から受信したデータが暗号文であると判定することができる。
次に図3を参照すると、この図は、本開示に係る、セキュアエンクレーブを用いてディスク暗号化を強化する方法に関する1つの例の動作を例示するフロー図である。具体的には、上記の図1及び図2の説明に則した態様で構成されるコンピューティングデバイスに実装され得るように、図3は、ユーザモードインタフェースモジュール(UMIM)により行われ得る例示の動作を示す。
示されるように、方法300はブロック301で開始する。本方法は次に、ブロック302に進んでよく、ここで(未処理)データが受信されてよい。上記の説明に則して、未処理データはストレージマッパーモジュールから受信されてよく、ストレージマッパーモジュールは、ユーザモードアプリケーションにより発行された読み出し要求又は書き込み要求に応答して、データをUMIMに送信することができる。前述したように、(未処理)データは平文又は暗号文の形態でよく、それはセキュアエンクレーブにより処理されることになるので、「未処理」とみなされてよい。
いずれの場合も、(未処理)データが受信されると、本方法はブロック303に進んでよく、ここで、(未処理)データはバッファのキューに入れられてよい。前述したように、バッファは、カーネルレベルUMIM(カーネルレベル)、ユーザレベルエンクレーブ管理モジュール、及び/又はユーザレベルエンクレーブなど、コンピューティングデバイスのカーネルレベルコンポーネント及びユーザレベルコンポーネントの両方によりアクセス可能な共有バッファの形態であってよい。限定されるものではないが、いくつかの実施形態におけるバッファはリングバッファである。
データがバッファのキューに入れられると、本方法はブロック304に進んでよく、ここで、エンクレーブが、バッファのキューに入ったデータの存在を通知されてよい。上記の説明に則して、エンクレーブは、限定されないが、プロキシを対象とするシステムコール(例えば、読み出し要求)の解放などの任意の好適な態様で、キューに入ったデータの存在を通知されてよい。当業者であれば理解するであろうが、もちろん、エンクレーブは、何らかの他の方式でキューに入ったデータの存在を通知され得る。いずれの場合も、キューに入ったデータの存在をエンクレーブに通知することで、キューに入ったデータの暗号化操作の実行をエンクレーブに開始させることができる。処理済みデータ(必要に応じて、平文又は暗号文)は、同じバッファ(例えば、エンクレーブがインプレースで暗号化又は復号化を行うところ)、又はカーネルモードコンポーネント及びユーザモードコンポーネントの間でも共有され得る別のバッファに格納されてよい。
エンクレーブがキューに入ったデータの存在を通知されると、本方法はブロック305に進んでよく、ここで、暗号化操作がバッファ内の(未処理)データの全て又は一部に対して完了したかに関して判定が行われてよい。前述したように、この判定は、例えば、完了インジケータの発行及び/又は検出に基づいて行われてよい。限定されるものではないが、いくつかの実施形態において、完了インジケータは、(例えば、エンクレーブ管理モジュールによる)プロキシを対象とする追加のシステムコールの形態であってよい。もちろん、バッファ内のデータの全て又は一部に対して暗号化操作が完了したかを判定する他の方法が利用されてよい。
バッファ内のデータの全て又は一部に対する暗号化操作が完了していないと判定される場合、本方法はブロック305からブロック306に進んでよく、ここで、本方法を続けるかに関して判定が行われてよい。ブロック306の結果は、閾値期間が終了したか、より高い優先順位のジョブを実行する必要があるかなど、様々な要素が条件となり得る。いずれの場合も、本方法を続けない場合、本方法はブロック309に進んで終了してよい。しかし、本方法を続ける場合、本方法はブロック305に戻ってよい。
バッファ内のデータの全て又は一部に対する暗号化操作が完了したと判定される場合、本方法はブロック305からブロック307に進んでよい。ブロック307に従って、(処理済み)データがバッファから読み出されて適切に送信されてよい。例えば、(処理済み)データが平文である場合、当該データは(例えば、ユーザレベルアプリケーションにより発行された、メモリに格納された暗号文を対象とする読み出し要求に応答して)ユーザレベルアプリケーションに送信されてよい。あるいは、(処理済み)データが暗号文である例において、当該データは(例えば、アプリケーションにより発行された書き込み要求に応答して)ストレージに送信されてよい。
本方法は次に、ブロック307からブロック308に進んでよい。ブロック308に従って、本方法を続けるかに関して判定が行われてよい。この判定の結果は、例えば、暗号化操作が追加の(未処理)データに対して行われる必要があるかが条件になり得る。必要がある場合、本方法は継続してブロック303に戻ってよく、それに従って、追加の(未処理)データがバッファのキューに入ってよい。しかし、暗号化操作が追加データに対して行われる必要がない場合、本方法はブロック309に進んで終了してよい。
例示のために、図3は、ブロック308に従った判定がブロック307に従った処理済みデータの提供に続く実施形態を示していることに留意されたい。ブロック308の動作の実行は、ブロック307の動作に続く必要はなく、いくつかの実施形態では、ブロック307の実行前、又はそれと同時に行われてよいことを理解されたい。言い換えると、ブロック307の動作の前、又はそれと同時に、暗号化操作が追加の未処理データに対して行われる必要があるかに関して判定が行われてよい。必要がある場合、バッファの処理済みデータは読み出されて、追加データと取り替えられてよく、次に追加データは上述したようにセキュアエンクレーブにより処理されてよい。
次に図4を参照すると、この図は、本開示に係る、セキュアエンクレーブを用いてディスク暗号化を強化する方法に関する別の例の動作を例示するフロー図である。具体的には、例えば、上記の図1及び図2の説明に則した態様で構成されるコンピューティングデバイスに実装され得るように、図4は、エンクレーブホストモジュール及び/又はセキュアエンクレーブにより行われ得る例示の動作を示す。
示されるように、方法400はブロック401で開始する。本方法は次にブロック402及び403に進んでよく、それらに従って、カーネルモードコンポーネント及びユーザモードコンポーネントの両方にアクセス可能なバッファ内に(未処理)データが存在するかに関して判定が行われてよい。上記の説明に則して、この判定の結果は、(未処理)データがバッファ内に存在するという、(例えば、UMIM又は他のコンポーネントからの)何らかのインジケーションを受信することが条件になり得る。インジケーションは、例えば、プロキシを対象とするシステムコール(例えば、読み出し要求)の解放であってよい。
ブロック403に従って、(未処理)データがバッファ内に存在しないと判定される場合、本方法はブロック404に進んでよい。ブロック404に従って、本方法を続けるかに関して判定が行われてよい。ブロック404の結果は、限定されないが、予め定められた期間が終了したかなど、様々な要素が条件になり得る。いずれの場合も、本方法を続けないと判定した場合、本方法はブロック408に進んで終了してよい。しかし、本方法を続ける場合、本方法はブロック404からブロック402に戻ってよい。
ブロック403に従って、(未処理)データがバッファ内に存在すると判定される場合、本方法はブロック405に進んでよい。ブロック405に従って、暗号化操作が、セキュアエンクレーブを用いて、バッファ内のデータに少なくとも部分的に行われてよい。例えば、制御をセキュアエンクレーブに渡すために、EENTER命令が実行されてよい。セキュアエンクレーブは次に、必要に応じて、バッファからデータを読み出して、当該データに暗号化操作(例えば、暗号化又は復号化)を行うことができる。いくつかの実施形態において、暗号化操作はエンクレーブ内で、例えば、そこに格納された1つ又は複数のキーを用いて行われてよい。セキュアエンクレーブが暗号化操作を行うとき、結果として得られる処理済みデータはエンクレーブから出力されてよく、例えば(インプレースの暗号化又は復号化の場合には)バッファに戻り、あるいはコンピューティングデバイスのカーネルモードコンポーネント及びユーザモードコンポーネントの間で共有され得る別のバッファに戻る。
本方法は次にオプションのブロック406に進んでよく、ここで、暗号化操作がバッファ内のデータの全て又は一部に行われたというインジケーションが(例えば、セキュアエンクレーブ又はエンクレーブホストモジュールから)カーネルモードコンポーネント(例えば、UMIM)に提供されてよい。しかし、前述したように、いくつかの実施形態において、カーネルモードコンポーネントは、暗号化操作がバッファ内のデータに対して行われたかを単独で判定することができる場合があり、その場合、ブロック406の動作は必要とされなくてよい。
ブロック406に従って、暗号化操作が完了したというインジケーションが提供されると、又はブロック406の動作が必要とされない場合、本方法はブロック407に進んでよい。ブロック407に従って、追加の(未処理)データがバッファ内に存在するかに関して判定が行われてよい。存在する場合、本方法はブロック405に戻ってよい。しかし、存在しない場合には、本方法はブロック408に進んで終了してよい。
理解され得るように、上述の技術は、セキュアエンクレーブがコンピューティングデバイスのストレージに格納されるデータの全て又は一部に暗号化操作を行うのに活用され得る使用例を可能にすることができる。例えば、上述の技術は、例えば、ディスクに格納された全てのデータをエンクレーブにより保護された1つ又は複数のキーで暗号化するためにセキュアエンクレーブを用いることで、全ディスク暗号化プロトコルを強化するのにセキュアエンクレーブを用いることを可能にすることができる。これにより、いくつかのセキュリティ上の利点が前述したように提供され得るが、上述の態様でエンクレーブを用いると、結果として、コンピューティングデバイスを起動するのに必要とされ得るファイル、アプリケーション、及び他のデータ構造を暗号化することになることがある。そのようなコンポーネントは、エンクレーブにより保護された1つ又は複数のキーで暗号化されていると考えられるため、必要なファイルを解読するのにエンクレーブが利用できない限り、コンピューティングデバイス100を起動することは不可能であることがある。
上記のことを考慮して、本開示の別の態様は、オペレーティングシステムを起動する前に、エンクレーブを用いて暗号化操作(具体的には復号化)を行うことを可能にする技術に関する。具体的には、本開示の1つの態様は、プリブート段階でエンクレーブを作成する(以下「プリブートエンクレーブ」)1つ又は複数のプリブートアプリケーションを用いることに関する。プリブートエンクレーブは、作成されると、エンクレーブにより(例えば、ランタイム中に)前もって暗号化された暗号化データ(例えば、ファイル、アプリケーションなど)を解読するのに用いられてよく、コンピューティングデバイスを起動するのに必要とされてよい。
コンピュータシステムの初期化を担うアプリケーションは、一般にカーネルモードで動作することを理解されたい。例えば、基本入出力システム(「BIOS」)及びユニファイド・エクステンシブル・ファームウェア・インタフェース(「UEFI」)は、コンピュータシステムを起動するのに必要な様々なプラットフォームデバイス(特に、オペレーティングシステムが属するストレージデバイス)を初期化するアプリケーション(又はアプリケーションの集合)である。これらのアプリケーションはカーネルモードで動作し、さらにオペレーティングシステムの起動前に動作を行うので、「プリブートアプリケーション」と呼ばれることがある。オペレーティングシステムブートローダのコンポーネント(例えば、Linux(登録商標)オペレーティングシステムのGRUB又はLILO、Windows(登録商標)オペレーティングシステムのWindows(登録商標)ブートローダ)も、オペレーティングシステムが起動され得る前に必要とされる動作を行うので、プリブートアプリケーションとみなされてよい。
上記のことを考慮して、図5を参照すると、この図は、本開示に係る、プリブート段階でセキュアエンクレーブを実装する方法に従って実行され得るロジック動作のフロー図である。示されるように、方法500はブロック501で開始する。本方法は次にブロック502に進んでよく、それに従って、プリブートエンクレーブが実装されてよい。エンクレーブが、必要な特性(例えば、計測値)、及びコンピューティングデバイスを起動するのに必要とされ得る暗号化データを解読するのに必要なキーを有するという条件で、プリブートエンクレーブの実装は任意の好適な態様で行われてよい。
例えば、いくつかの実施形態において、1つ又は複数のプリブートアプリケーション(BIOSアプリケーション、UEFIアプリケーション、オペレーティングシステムブートローダなど)により、プリブートエンクレーブがプリブート段階で作成されてよい。そのような実施形態において、プリブートアプリケーションは、オペレーティングシステムが読み込まれる前に、命令をプロセッサにより実行させることができる。例えば、プリブートアプリケーションは、エンクレーブをホストするために、プロセッサ(例えば、プロセッサ101)にメモリページをエンクレーブページキャッシュ(例えば、EPC114)内に割り当てさせるという命令を、実行させることができる。プリブートアプリケーションは次に、プロセッサにエンクレーブイメージ(例えばこれは、例えばBIOSメモリ、TPM、他の保護されたメモリなど、プリブートアプリケーションにアクセス可能な保護されたメモリに格納されてよい)をEPC内に割り当てられたメモリページまで拡張させることができる。代替的に又は追加的に、プリブートアプリケーションは、EPC内に割り当てられたメモリページにエンクレーブの作成をもたらす1つ又は複数の命令(例えば、Ecreate命令)の実行をもたらすことができる。
いくつかの例において、プリブートアプリケーションがプロセッサに対するユーザモードサポートを可能にし、これにより、プリブートエンクレーブが実装され得ることも望ましいことがある。これに関して、いくつかの実施形態では、プリブートアプリケーションは、例えば、1つ又は複数のページテーブル、グローバル記述子テーブル、割り込み記述子テーブル、及び/又は機械固有レジスタ(例えば、MSR112)を変更することで、プリブートエンクレーブのユーザモードサポートを可能にするよう構成されてよい。
上述したように、本開示の技術は、ランタイム中にセキュアエンクレーブを使用して、データがディスクに書き込まれる前にデータの暗号化を可能にすることにより、全ディスク暗号化操作を強化することができる。いくつかの実施形態において、ランタイム中のデータの暗号化が、暗号化キーを用いてエンクレーブ内で行われてよい。コンピューティングデバイスのシャットダウン前に、セキュアエンクレーブは、エンクレーブの計測値を用いてキーをラップ(暗号化)することにより、暗号化キー(及び/又は任意の関連した復号化キー)を保護することができる。理解され得るように、この態様で保護された平文のキーを取得するのは、当該キーを暗号化したエンクレーブと同じ(例えば、同一の)計測値を有するエンクレーブを用いないと困難になり得る。
したがって、いくつかの実施形態において、ブロック502に従って実装されたプリブートエンクレーブは、(例えば、ランタイム中に)ディスクに格納されたデータを暗号化したエンクレーブと同じ計測値を有するよう構成されてよい。実際に、多くの実施形態において、プリブートエンクレーブの計測値が、ランタイム中にデータ暗号化を行うのに用いられたエンクレーブと同一であることが有利となることがある。このことを考慮して、例えばランタイム中にディスクに格納されたデータを暗号化するのに前もって用いられたエンクレーブの計測値と同じ計測値を有するプリブートエンクレーブを作成するのに、多数の方法が利用されてよい。例えば、プリブートアプリケーションの実行により、ランタイム中にディスク上のデータを暗号化したエンクレーブをホストするのに用いられたプリブートエンクレーブをホストするために、同じEPC範囲及び/又はメモリページをプロセッサに割り当てさせることができる。
いくつかの実施形態において、プリブートアプリケーションは、実行されると、プロセッサに、プリブートエンクレーブに割り当てられたEPC範囲を隔離させることができ、これにより、デバイスの他のコンポーネント(例えば、OS)が、後になって、当該EPC範囲を上書きすることを防止することができる。言い換えると、EPC範囲を隔離(確保)することで、コンピューティングデバイスの他のコンポーネントにより、エンクレーブが「ページアウト」されることを防止することができる。理解され得るように、エンクレーブに割り当てられたEPC範囲(又は他のメモリ範囲)を上書きすると、エンクレーブの計測値が変わることがある。さらにはこれにより、エンクレーブの計測値で暗号化されているキーを解読することが困難又は不可能になることがあり、潜在的には、システムクラッシュがもたらされることもある。
図5に戻り、ブロック502に従ってプリブートエンクレーブが実装されると、本方法はブロック503に進んでよい。ブロック503に従って、プリブートエンクレーブは、コンピューティングデバイスを起動するのに必要とされ得る暗号化データの解読に適用されてよい。この目的にプリブートエンクレーブを用いる様々な方法が、本開示によって想定され、また包含される。例えば、UEFI起動の状況において、UEFIドライバは(例えば、全ディスク暗号化アプリケーション又は何らかの他のアプリケーションの一部として)、ディスクから読み出された暗号化データを、復号化のためにセキュアエンクレーブに向けるよう実行されてよく、その後、結果として得られる平文が、コンピューティングデバイスを起動するのに利用されてよい。より具体的には、いくつかの実施形態において、UEFIドライバは、ファイルシステムが搭載され得るBLOCK−IOインタフェースを露出させ、暗号化ディスク/パーティションのBLOCK−IOプロトコルからプリブートエンクレーブまでのトラフィックをフィルタリングするよう動作することができる。この方法では、UEFIドライバは、ディスクから読み出された暗号化データを、復号化のためにプリブートエンクレーブに向けることができる。同様に、UEFIドライバは、システムの起動を容易にするように、結果として得られる平文を適切に送信することができる。
OSを起動するのに必要とされる暗号化データがプリブートエンクレーブにより解読されたとき、又は解読されると、本方法はブロック503からブロック504に進んでよく、それに従ってOSが起動されてよい。本方法は次にブロック505に進んでよく、ここで、プリブートエンクレーブは、ユーザモードコンポーネント(例えば、エンクレーブホストモジュール160)に渡されてよい。
本明細書で用いられるとき、プリブートエンクレーブをユーザモードコンポーネントに「渡す」ということには、プリブートエンクレーブが(例えば、EPC114に)残ることを可能にすることが含まれ、これにより、プリブートエンクレーブは上述したように、ランタイム中にカーネルモードコンポーネント(例えば、ストレージマッパーモジュール151)により用いられてよい。いくつかの例において、プリブートアプリケーションは、プリブートエンクレーブに割り当てられたEPC範囲をエンクレーブホストモジュール160に伝達することにより、プリブートエンクレーブをユーザモードコンポーネントに渡すことができる。これは、例えば、プリブートエンクレーブに割り当てられたEPC範囲(又は他の仮想メモリアドレス範囲)をエンクレーブホストモジュール160にマッピングするマッピング操作を、例えば、アドバンスド・コンフィグレーション・アンド・パワー・インタフェース(ACPI)テーブル、UEFI変数、固定メモリアドレス、これらの組み合わせなどを用いて実行することにより、行われてよい。プリブートエンクレーブが移されると、本方法はブロック506に進んで終了してよい。
本開示の別の態様は、プロセッサにより実行されると、プロセッサ(又は、プロセッサを含むデバイス)に本開示に係る動作を行わせるコンピュータ可読命令を含んだ、コンピュータ可読記憶媒体に関する。コンピュータ可読記憶媒体は、用いられる場合、製造品の形態であってよい。いくつかの例において、コンピュータ可読記憶媒体は、限定されないが、光記憶媒体、磁気記憶媒体、又は半導体記憶媒体など、非一時的なコンピュータ可読媒体又は機械可読記憶媒体であってよい。いずれの場合も、記憶媒体は、図3、図4、及び図5のうちの1つ又は複数の方法の動作に対する命令など、様々なタイプのコンピュータ実行可能命令を格納することができる。用いられ得る好適なコンピュータ可読記憶媒体の非限定的な例には、電子データを格納することが可能なあらゆる有形の媒体が含まれ、それらの媒体には、揮発性メモリ又は不揮発性メモリ、取り外し可能なメモリ又は取り外しができないメモリ、消去可能なメモリ又は消去ができないメモリ、書き込み可能なメモリ又は再書き込み可能なメモリなどが含まれる。コンピュータ実行可能命令の例には、あらゆる好適なタイプのコードが含まれてよく、それらのコードは、ソースコード、コンパイラ型コード、インタプリタ型コード、実行可能コード、静的コード、動的コード、オブジェクト指向型コード、視覚コードなどである。
[実施例]
以下の実施例は、さらなる実施形態に関する。本開示の以下の実施例は、以下に提供されるように、システム、デバイス、方法、実行されると当該方法に基づいて機械に動作を行わせる命令を格納したコンピュータ可読記憶媒体、及び/又は当該方法に基づいて動作を行うための手段などの主題要素を含むことができる。
実施例1:この実施例によれば、ユーザモードで実行されるセキュアエンクレーブを用いてデータ暗号化を強化するよう構成されたコンピューティングデバイスが提供され、当該デバイスには、プロセッサと、メモリと、プロセッサのカーネルモードで少なくとも部分的に実装されるユーザモードインタフェースモジュールとが含まれ、ユーザモードインタフェースモジュールは、ユーザモードインタフェースモジュールと、プロセッサのユーザモードで少なくとも部分的に実行可能な、セキュアエンクレーブをホストするエンクレーブホストモジュールとにアクセス可能な共有バッファのキューに未処理データを入れ、セキュアエンクレーブに未処理データの暗号化操作を行わせて処理済みデータを作り出させるよう構成されるバッファデータインジケータをエンクレーブホストモジュールに提供する。
実施例2:この実施例は、実施例1の特徴のうちいずれか又は全てを含み、カーネルモードで少なくとも部分的に実行可能なストレージマッパーモジュールをさらに含み、ユーザモードインタフェースモジュールはさらに、未処理データをストレージマッパーモジュールから受信する。
実施例3:この実施例は、実施例2の特徴のうちいずれか又は全てを含み、ストレージマッパーモジュールは、ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の読み出し要求をインターセプトし、1つ又は複数の読み出し要求の対象となる未処理データをユーザモードインタフェースモジュールにリダイレクトする。
実施例4:この実施例は、実施例2の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールはさらに処理済みデータを受信し、ストレージマッパーモジュールはさらに、ユーザモードインタフェースモジュールから処理済みデータを受信する。
実施例5:この実施例は、実施例4の特徴のうちいずれか又は全てを含み、ストレージマッパーモジュールはさらに、処理済みデータが平文であるか、それとも暗号文であるかを判定する。
実施例6:この実施例は、実施例3の特徴のうちいずれか又は全てを含み、1つ又は複数の読み出し要求の対象となる未処理データは暗号文を含む。
実施例7:この実施例は、実施例6の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールは、暗号文の少なくとも一部を共有バッファのキューに入れ、暗号化操作は、共有バッファのキューに入れられた暗号文を解読することを含む。
実施例8:この実施例は、実施例2から7のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、ストレージマッパーモジュールは、ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の書き込み要求をインターセプトし、1つ又は複数の書き込み要求に関連付けられる未処理データをユーザモードインタフェースモジュールにリダイレクトする。
実施例9:この実施例は、実施例8の特徴のうちいずれか又は全てを含み、1つ又は複数の書き込み要求に関連付けられる未処理データは平文である。
実施例10:この実施例は、実施例9の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールは平文を共有バッファのキューに入れ、暗号化操作はバッファのキューに入れられた平文を暗号化することを含む。
実施例11:この実施例は、実施例1から10のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、エンクレーブホストモジュールは、エンクレーブホストモジュール及びユーザモードインタフェースモジュールの両方に露出しているプロキシにシステムコールを発行する。ユーザモードインタフェースモジュールは、システムコールをインターセプトする。ユーザモードインタフェースモジュールは、システムコールを解放することにより、バッファデータインジケータを少なくとも部分的に提供する。
実施例12:この実施例は、実施例11の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例13:この実施例は、実施例11及び12のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールはさらにプロキシを作成する。
実施例14:この実施例は、実施例1から13のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、セキュアエンクレーブは、少なくとも1つのキーを用いて暗号化操作を行う。コンピューティングデバイスのシャットダウン前に、セキュアエンクレーブは、エンクレーブの計測値を用いて少なくとも部分的にキーを暗号化する。
実施例15:この実施例は、実施例14の特徴のうちいずれか又は全てを含み、セキュアエンクレーブは、エンクレーブ内で暗号化操作を行う。
実施例16:この実施例は、実施例1から15のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、セキュアエンクレーブは、暗号化操作をインプレースで行い、これにより処理済みデータは、共有バッファ内の対応する未処理データの部分と同じ位置に書き込まれる。
実施例17:この実施例は、実施例1から16のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、共有バッファはリングバッファである。
実施例18:この実施例は、実施例17の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールが未処理データをリングバッファのキューに入れる間に、エンクレーブホストモジュールは、未処理データをリングバッファから読み出し、エンクレーブに提供するよう動作可能である。エンクレーブホストモジュールはさらに、セキュアエンクレーブにより作り出された処理済みデータをリングバッファのキューに入れるよう動作可能である。エンクレーブホストモジュールが処理済みデータをリングバッファのキューに入れる間に、ユーザモードインタフェースモジュールはさらに、処理済みデータをリングバッファから除去するよう動作可能である。
実施例19:この実施例は、実施例1から18のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、エンクレーブホストモジュールはさらに、セキュアエンクレーブにより実行される暗号化操作の少なくとも一部が完了したことを、ユーザモードインタフェースモジュールに示す完了インジケータを提供するよう動作可能である。
実施例20:この実施例は、実施例19の特徴のうちいずれか又は全てを含み、エンクレーブホストモジュールは、エンクレーブホストモジュール及びユーザモードインタフェースモジュールの両方に露出しているプロキシを対象とするシステムコールを発行することにより、少なくとも部分的に完了インジケータを提供する。
実施例21:この実施例は、実施例20の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例22:この実施例によれば、ユーザモードで実行されるエンクレーブを用いて暗号化操作を強化する方法が提供され、本方法は、プロセッサのカーネルモードで実行されるユーザモードインタフェースモジュールを用いて、未処理データを受信する段階と、ユーザモードインタフェースモジュール、及びプロセッサのユーザモードで少なくとも部分的に実行されるエンクレーブホストモジュールにアクセス可能な共有バッファのキューに未処理データを入れる段階であって、エンクレーブホストモジュールはセキュアエンクレーブをホストする、段階と、バッファデータインジケータをエンクレーブホストモジュールに提供する段階であって、バッファデータインジケータは、セキュアエンクレーブに未処理データの暗号化操作を行わせて処理済みデータを作り出させるよう構成される、段階とを含む。
実施例23:この実施例は、実施例22の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールは、プロセッサのカーネルモードで実行されるストレージマッパーモジュールから未処理データを受信する。
実施例24:この実施例は、実施例23の特徴のうちいずれか又は全てを含み、未処理データは、平文、暗号文、又はこれらの組み合わせを含む。
実施例25:この実施例は、実施例23の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールを用いて、処理済みデータをバッファから受信する段階と、処理済みデータをストレージマッパーモジュールに提供する段階とをさらに含む。
実施例26:この実施例は、実施例22の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールを用いて、未処理データを共有バッファのキューに入れ、実質的に並行して、処理済みデータを共有バッファから受信する段階をさらに含む。
実施例27:この実施例は、実施例24の特徴のうちいずれか又は全てを含み、未処理データは平文であり、バッファデータインジケータは、セキュアエンクレーブに平文を暗号化させるよう構成される。
実施例28:この実施例は、実施例24の特徴のうちいずれか又は全てを含み、未処理データは暗号文であり、バッファデータインジケータは、セキュアエンクレーブに暗号文を解読させるよう構成される。
実施例29:この実施例は、実施例22から28のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、バッファデータインジケータを提供する段階は、ユーザモードインタフェースモジュールによって、プロキシを対象とするシステムコールを解放する段階を含む。
実施例30:この実施例は、実施例29の特徴のうちいずれか又は全てを含み、システムコールは、エンクレーブホストモジュールにより発行されたものである。
実施例31:この実施例は、実施例29の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールを用いて、プロキシを作成させる段階をさらに含む。
実施例32:この実施例は、実施例29から31のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例33:この実施例は、実施例22から32のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、セキュアエンクレーブを用いて、セキュアエンクレーブにより保護される少なくとも1つのキーで暗号化操作を行う段階をさらに含む。
実施例34:この実施例は、実施例22から33のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、暗号化操作は、セキュアエンクレーブ内で行われる。
実施例35:この実施例は、実施例22から34のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、セキュアエンクレーブを用いて、暗号化操作をインプレースで行う段階をさらに含み、これにより処理済みデータは、共有バッファ内の対応する未処理データの部分と同じ位置に書き込まれる。
実施例36:この実施例は、実施例22から35のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、共有バッファはリングバッファである。
実施例37:この実施例は、実施例36の特徴のうちいずれか又は全てを含み、エンクレーブホストモジュールを用いて、ユーザモードインタフェースモジュールが未処理データをリングバッファのキューに入れる間に、未処理データをリングバッファから読み出し、セキュアエンクレーブに提供する段階と、処理済みデータをリングバッファのキューに入れる段階と、ユーザモードインタフェースモジュールを用いて、エンクレーブホストモジュールが処理済みデータをリングバッファのキューに入れる間に、処理済みデータをリングバッファから除去する段階とをさらに含む。
実施例38:この実施例は、実施例22から27のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、エンクレーブホストモジュールを用いて、セキュアエンクレーブにより実行される暗号化操作の少なくとも一部が完了したことを示す完了インジケータを、ユーザモードインタフェースモジュールに提供する段階をさらに含む。
実施例39:この実施例は、実施例38の特徴のうちいずれか又は全てを含み、エンクレーブホストモジュールを用いて、エンクレーブホストモジュール及びユーザモードインタフェースモジュールの両方に露出しているプロキシを対象とするシステムコールを発行することにより、少なくとも部分的に完了インジケータを提供する段階をさらに含む。
実施例40:この実施例は、実施例39の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例41:この実施例によれば、ユーザモードで実行されるエンクレーブを用いて暗号化操作を強化するコンピュータ可読命令を含む少なくとも1つのコンピュータ可読媒体が提供され、これは、コンピューティングデバイスのプロセッサにより実行されると、未処理データを受信する動作と、ユーザモードインタフェースモジュール、及びプロセッサのユーザモードで少なくとも部分的に実行されるエンクレーブホストモジュールにアクセス可能な共有バッファのキューに未処理データを入れる動作であって、エンクレーブホストモジュールはセキュアエンクレーブをホストする、動作と、バッファデータインジケータをエンクレーブホストモジュールに提供する動作であって、バッファデータインジケータは、セキュアエンクレーブに、未処理データの暗号化操作を行わせて処理済みデータを作り出させるよう構成される、動作とを含む動作をコンピューティングデバイスに実行させる。
実施例42:この実施例は、実施例41の特徴のうちいずれか又は全てを含み、ユーザモードインタフェースモジュールは、プロセッサのカーネルモードで実行されるストレージマッパーモジュールから未処理データを受信する。
実施例43:この実施例は、実施例42の特徴のうちいずれか又は全てを含み、未処理データは、平文、暗号文、又はこれらの組み合わせを含む。
実施例44:この実施例は、実施例42の特徴のうちいずれか又は全てを含み、命令は実行されると、ユーザモードインタフェースモジュールを用いて、処理済みデータをバッファから受信し、処理済みデータをストレージマッパーモジュールに提供する動作を含む動作の実行をさらにもたらす。
実施例45:この実施例は、実施例41から44のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、命令は実行されると、ユーザモードインタフェースモジュールを用いて、未処理データを共有バッファのキューに入れ、実質的に並行して、処理済みデータを共有バッファから受信する動作を含む動作の実行をさらにもたらす。
実施例46:この実施例は、実施例43の特徴のうちいずれか又は全てを含み、未処理データは平文であり、バッファデータインジケータは、セキュアエンクレーブに平文を暗号化させるよう構成される。
実施例47:この実施例は、実施例43の特徴のうちいずれか又は全てを含み、未処理データは暗号文であり、バッファデータインジケータは、セキュアエンクレーブに暗号文を解読させるよう構成される。
実施例48:この実施例は、実施例41から47のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、バッファデータインジケータを提供する段階は、ユーザモードインタフェースモジュールによって、プロキシを対象とするシステムコールを解放する段階を含む。
実施例49:この実施例は、実施例48の特徴のうちいずれか又は全てを含み、システムコールは、エンクレーブホストモジュールにより発行されたものである。
実施例50:この実施例は、実施例48の特徴のうちいずれか又は全てを含み、命令は実行されると、ユーザモードインタフェースモジュールを用いて、プロキシを作成させる動作を含む動作の実行をさらにもたらす。
実施例51:この実施例は、実施例48の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例52:この実施例は、実施例41から51のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、命令は実行されると、セキュアエンクレーブを用いて、セキュアエンクレーブにより保護される少なくとも1つのキーで暗号化操作を行う動作を含む動作の実行をさらにもたらす。
実施例53:この実施例は、実施例41から52のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、暗号化操作は、セキュアエンクレーブ内で行われる。
実施例54:この実施例は、実施例41から53のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、上記命令は実行されると、上記セキュアエンクレーブを用いて、暗号化操作をインプレースで行う動作を含む動作の実行をさらにもたらし、これにより処理済みデータは、共有バッファ内の対応する未処理データの部分と同じ位置に書き込まれる。
実施例55:この実施例は、実施例41から54のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、共有バッファはリングバッファである。
実施例56:この実施例は、実施例55の特徴のうちいずれか又は全てを含み、命令は実行されると、エンクレーブホストモジュールを用いて、ユーザモードインタフェースモジュールが未処理データをリングバッファのキューに入れる間に、未処理データをリングバッファから読み出し、セキュアエンクレーブに提供する動作と、処理済みデータをリングバッファのキューに入れる動作と、ユーザモードインタフェースモジュールを用いて、エンクレーブホストモジュールが処理済みデータをリングバッファのキューに入れる間に、処理済みデータをリングバッファから除去する動作とを含む動作の実行をさらにもたらす。
実施例57:この実施例は、実施例56の特徴のうちいずれか又は全てを含み、命令は実行されると、エンクレーブホストモジュールを用いて、セキュアエンクレーブにより実行される暗号化操作の少なくとも一部が完了したことを示す完了インジケータを、ユーザモードインタフェースモジュールに提供する動作を含む動作の実行をさらにもたらす。
実施例58:この実施例は、実施例57の特徴のうちいずれか又は全てを含み、命令は実行されると、エンクレーブホストモジュールを用いて、エンクレーブホストモジュール及びユーザモードインタフェースモジュールの両方に露出しているプロキシを対象とするシステムコールを発行することにより、少なくとも部分的に完了インジケータを提供する動作を含む追加の動作の実行をさらにもたらす。
実施例59:この実施例は、実施例58の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例60:この実施例によると、ユーザモードで実行されるセキュアエンクレーブを用いてデータ暗号化を強化するよう構成されたコンピューティングデバイスが提供され、当該デバイスは、プロセッサと、メモリと、プロセッサのカーネルモードで少なくとも部分的に実装されるユーザモードインタフェース手段とを含み、ユーザモードインタフェース手段は、ユーザモードインタフェース手段と、プロセッサのユーザモードで少なくとも部分的に実行可能な、セキュアエンクレーブをホストするエンクレーブホスト手段とにアクセス可能な共有バッファのキューに未処理データを入れ、セキュアエンクレーブに未処理データの暗号化操作を行わせて処理済みデータを作り出させるよう構成されているバッファデータインジケータをエンクレーブホスト手段に提供する。
実施例61:この実施例は、実施例60の特徴のうちいずれか又は全てを含み、カーネルモードで少なくとも部分的に実行可能なストレージマッパー手段をさらに含み、ユーザモードインタフェース手段はさらに、未処理データをストレージマッパー手段から受信する。
実施例62:この実施例は、実施例61の特徴のうちいずれか又は全てを含み、ストレージマッパー手段は、ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の読み出し要求をインターセプトし、1つ又は複数の読み出し要求の対象となる未処理データをユーザモードインタフェース手段にリダイレクトする。
実施例63:この実施例は、実施例61の特徴のうちいずれか又は全てを含み、ユーザモードインタフェース手段はさらに処理済みデータを受信し、ストレージマッパー手段はさらに、UMIMから処理済みデータを受信する。
実施例64:この実施例は、実施例63の特徴のうちいずれか又は全てを含み、ストレージマッパー手段はさらに、処理済みデータが平文であるか、それとも暗号文であるかを判定する。
実施例65:この実施例は、実施例62の特徴のうちいずれか又は全てを含み、1つ又は複数の読み出し要求の対象となる未処理データは暗号文を含む。
実施例66:この実施例は、実施例65の特徴のうちいずれか又は全てを含み、ユーザモードインタフェース手段は、暗号文の少なくとも一部を共有バッファのキューに入れ、暗号化操作は、共有バッファのキューに入れられた暗号文を解読することを含む。
実施例67:この実施例は、実施例61から66のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、ストレージマッパー手段は、ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の書き込み要求をインターセプトし、1つ又は複数の書き込み要求に関連付けられる未処理データをユーザモードインタフェース手段にリダイレクトする。
実施例68:この実施例は、実施例67の特徴のうちいずれか又は全てを含み、1つ又は複数の書き込み要求に関連付けられる未処理データは平文である。
実施例69:この実施例は、実施例68の特徴のうちいずれか又は全てを含み、ユーザモードインタフェース手段は平文を共有バッファのキューに入れ、暗号化操作はバッファのキューに入れられた平文を暗号化することを含む。
実施例70:この実施例は、実施例60から69のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、エンクレーブホスト手段は、エンクレーブホスト手段及びユーザモードインタフェース手段の両方に露出しているプロキシにシステムコールを発行し、ユーザモードインタフェース手段はシステムコールをインターセプトし、ユーザモードインタフェース手段は、システムコールを解放することにより、バッファデータインジケータを少なくとも部分的に提供する。
実施例71:この実施例は、実施例70の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例72:この実施例は、実施例70の特徴のうちいずれか又は全てを含み、ユーザモードインタフェース手段はさらにプロキシを作成する。
実施例73:この実施例は、実施例60から72のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、セキュアエンクレーブは、少なくとも1つのキーを用いて暗号化操作を行い、コンピューティングデバイスのシャットダウン前に、セキュアエンクレーブは、エンクレーブの計測値を用いて少なくとも部分的にキーを暗号化する。
実施例74:この実施例は、実施例73の特徴のうちいずれか又は全てを含み、セキュアエンクレーブは、エンクレーブ内で暗号化操作を行う。
実施例75:この実施例は、実施例60から74のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、セキュアエンクレーブは、暗号化操作をインプレースで行い、これにより処理済みデータは、共有バッファ内の対応する未処理データの部分と同じ位置に書き込まれる。
実施例76:この実施例は、実施例60から75のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、共有バッファはリングバッファである。
実施例77:この実施例は、実施例76の特徴のうちいずれか又は全てを含み、ユーザモードインタフェース手段が未処理データをリングバッファのキューに入れる間に、エンクレーブホスト手段は、未処理データをリングバッファから読み出し、エンクレーブに提供するよう動作可能である。エンクレーブホスト手段はさらに、セキュアエンクレーブにより作り出された処理済みデータをリングバッファのキューに入れるよう動作可能である。エンクレーブホスト手段が処理済みデータをリングバッファのキューに入れる間に、ユーザモードインタフェース手段はさらに、処理済みデータをリングバッファから除去するよう動作可能である。
実施例78:この実施例は、実施例60から77のいずれか1つの実施例の特徴のうちいずれか又は全てを含み、エンクレーブホスト手段はさらに、セキュアエンクレーブにより実行される暗号化操作の少なくとも一部が完了したことを、ユーザモードインタフェース手段に示す完了インジケータを提供するよう動作可能である。
実施例79:この実施例は、実施例78の特徴のうちいずれか又は全てを含み、エンクレーブホスト手段は、エンクレーブホスト手段及びユーザモードインタフェース手段の両方に露出しているプロキシを対象とするシステムコールを発行することにより、少なくとも部分的に完了インジケータを提供する。
実施例80:この実施例は、実施例79の特徴のうちいずれか又は全てを含み、プロキシは、カーネルモードのデバイス又はデータ構造を含む。
実施例81:この実施例によれば、ユーザモードで実行されるエンクレーブを用いて暗号化操作を強化するためのコンピュータ可読命令を含む少なくとも1つのコンピュータ可読媒体が提供され、これはコンピューティングデバイスのプロセッサにより実行されると、実施例22から40のいずれか1つの実施例に記載の方法をコンピューティングデバイスに行わせる。
実施例82:この実施例によれば、実施例22から40のいずれか1つの実施例に記載の方法を行う手段を含む装置が提供される。
本明細書で利用されている用語及び表現は、限定の用語としてではなく説明の用語として用いられており、そのような用語及び表現の使用において、示され説明された特徴(又はその一部)のあらゆる均等物を除外する意図はなく、特許請求の範囲内で様々な変更が可能であることが認識される。したがって、特許請求の範囲は、そのような均等物の全てを包含することが意図されている。

Claims (25)

  1. ユーザモードで実行されるセキュアエンクレーブを用いてデータ暗号化を強化するコンピューティングデバイスであって、
    プロセッサと、
    メモリと、
    前記プロセッサのカーネルモードで少なくとも部分的に実装されるユーザモードインタフェースモジュールと
    を備え、
    前記ユーザモードインタフェースモジュールは、
    前記ユーザモードインタフェースモジュールと、前記プロセッサのユーザモードで少なくとも部分的に実行可能な、セキュアエンクレーブをホストするエンクレーブホストモジュールとにアクセス可能な共有バッファのキューに未処理データを入れ、
    前記セキュアエンクレーブに前記未処理データの暗号化操作を行わせて処理済みデータを作り出させるバッファデータインジケータを前記エンクレーブホストモジュールに提供する、
    コンピューティングデバイス。
  2. 前記カーネルモードで少なくとも部分的に実行可能なストレージマッパーモジュールをさらに備え、前記ユーザモードインタフェースモジュールはさらに、前記未処理データを前記ストレージマッパーモジュールから受信する、
    請求項1に記載のコンピューティングデバイス。
  3. 前記ストレージマッパーモジュールは、前記ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の読み出し要求をインターセプトし、前記1つ又は複数の読み出し要求の対象となる未処理データを前記ユーザモードインタフェースモジュールにリダイレクトする、
    請求項2に記載のコンピューティングデバイス。
  4. 前記ユーザモードインタフェースモジュールはさらに前記処理済みデータを受信し、
    前記ストレージマッパーモジュールはさらに、前記ユーザモードインタフェースモジュールから前記処理済みデータを受信する、
    請求項2に記載のコンピューティングデバイス。
  5. 前記ストレージマッパーモジュールはさらに、前記処理済みデータが平文であるか、それとも暗号文であるかを判定する、
    請求項4に記載のコンピューティングデバイス。
  6. 前記1つ又は複数の読み出し要求の対象となる前記未処理データは暗号文を含み、前記ユーザモードインタフェースモジュールは、前記暗号文の少なくとも一部を前記共有バッファのキューに入れ、前記暗号化操作は、前記共有バッファのキューに入れられた前記暗号文を解読することを含む、
    請求項3に記載のコンピューティングデバイス。
  7. 前記ストレージマッパーモジュールは、前記ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の書き込み要求をインターセプトし、前記1つ又は複数の書き込み要求に関連付けられる未処理データを前記ユーザモードインタフェースモジュールにリダイレクトする、
    請求項2に記載のコンピューティングデバイス。
  8. 前記1つ又は複数の書き込み要求に関連付けられる前記未処理データは平文であり、前記ユーザモードインタフェースモジュールは前記平文を前記共有バッファのキューに入れ、前記暗号化操作は前記共有バッファのキューに入れられた前記平文を暗号化することを含む、
    請求項7に記載のコンピューティングデバイス。
  9. 前記エンクレーブホストモジュールは、前記エンクレーブホストモジュール及び前記ユーザモードインタフェースモジュールの両方に露出しているプロキシにシステムコールを発行し、
    前記ユーザモードインタフェースモジュールは、前記システムコールをインターセプトし、
    前記ユーザモードインタフェースモジュールは、前記システムコールを解放することにより、前記バッファデータインジケータを少なくとも部分的に提供する、
    請求項1から8のいずれか一項に記載のコンピューティングデバイス。
  10. 前記プロキシは、カーネルモードのデバイス又はデータ構造を含む、
    請求項9に記載のコンピューティングデバイス。
  11. 前記セキュアエンクレーブは、前記暗号化操作をインプレースで行い、これにより前記処理済みデータは、前記共有バッファ内の対応する前記未処理データの部分と同じ位置に書き込まれる、
    請求項1から8のいずれか一項に記載のコンピューティングデバイス。
  12. 前記エンクレーブホストモジュールはさらに、前記セキュアエンクレーブにより実行される前記暗号化操作の少なくとも一部が完了したことを、前記ユーザモードインタフェースモジュールに示す完了インジケータを提供するよう動作可能である、
    請求項1から8のいずれか一項に記載のコンピューティングデバイス。
  13. ユーザモードで実行されるエンクレーブを用いて暗号化操作を強化する方法であって、プロセッサのカーネルモードで実行されるユーザモードインタフェースモジュールを用いて、
    未処理データを受信する段階と、
    前記ユーザモードインタフェースモジュール、及び前記プロセッサのユーザモードで少なくとも部分的に実行されるエンクレーブホストモジュールにアクセス可能な共有バッファのキューに前記未処理データを入れる段階であって、前記エンクレーブホストモジュールはセキュアエンクレーブをホストする、段階と、
    バッファデータインジケータを前記エンクレーブホストモジュールに提供する段階であって、前記バッファデータインジケータは、前記セキュアエンクレーブに前記未処理データの暗号化操作を行わせて処理済みデータを作り出させる、段階と
    を備える
    方法。
  14. 前記ユーザモードインタフェースモジュールは、前記プロセッサの前記カーネルモードで実行されるストレージマッパーモジュールから前記未処理データを受信し、前記未処理データは、平文、暗号文、又はこれらの組み合わせを含む、
    請求項13に記載の方法。
  15. 前記ユーザモードインタフェースモジュールを用いて、前記未処理データを前記共有バッファのキューに入れ、実質的に並行して、前記処理済みデータを前記共有バッファから受信する段階をさらに備える、
    請求項13に記載の方法。
  16. 前記バッファデータインジケータを提供する段階は、前記ユーザモードインタフェースモジュールによって、プロキシを対象とするシステムコールを解放する段階を含む、
    請求項13から15のいずれか一項に記載の方法。
  17. ユーザモードで実行されるエンクレーブを用いて暗号化操作を強化するコンピュータ可読命令を含む少なくとも1つのコンピュータ可読媒体であって、コンピューティングデバイスのプロセッサにより実行されると、
    未処理データを受信する動作と、
    ユーザモードインタフェースモジュール、及びプロセッサのユーザモードで少なくとも部分的に実行されるエンクレーブホストモジュールにアクセス可能な共有バッファのキューに前記未処理データを入れる動作であって、前記エンクレーブホストモジュールはセキュアエンクレーブをホストする、動作と、
    バッファデータインジケータを前記エンクレーブホストモジュールに提供する動作であって、前記バッファデータインジケータは、前記セキュアエンクレーブに、前記未処理データの暗号化操作を行わせて処理済みデータを作り出させる、動作と
    を含む動作を前記コンピューティングデバイスに実行させる
    コンピュータ可読媒体。
  18. 前記ユーザモードインタフェースモジュールは、前記プロセッサのカーネルモードで実行されるストレージマッパーモジュールから前記未処理データを受信し、前記未処理データは、平文、暗号文、又はこれらの組み合わせを含む、
    請求項17に記載のコンピュータ可読媒体。
  19. 前記コンピュータ可読命令は実行されると、前記ユーザモードインタフェースモジュールを用いて、
    前記未処理データを前記共有バッファのキューに入れ、実質的に並行して、前記処理済みデータを前記共有バッファから受信する動作を含む動作の実行をさらにもたらす、
    請求項17に記載のコンピュータ可読媒体。
  20. 前記バッファデータインジケータを提供する動作は、前記ユーザモードインタフェースモジュールによって、プロキシを対象とするシステムコールを解放する動作を含む、
    請求項17から19のいずれか一項に記載のコンピュータ可読媒体。
  21. ユーザモードで実行されるセキュアエンクレーブを用いてデータ暗号化を強化するコンピューティングデバイスであって、
    プロセッサと、
    メモリと、
    前記プロセッサのカーネルモードで少なくとも部分的に実装されるユーザモードインタフェース手段と
    を備え、
    前記ユーザモードインタフェース手段は、
    前記ユーザモードインタフェース手段と、前記プロセッサのユーザモードで少なくとも部分的に実行可能な、セキュアエンクレーブをホストするエンクレーブホスト手段とにアクセス可能な共有バッファのキューに未処理データを入れ、
    前記セキュアエンクレーブに前記未処理データの暗号化操作を行わせて処理済みデータを作り出させるバッファデータインジケータを前記エンクレーブホスト手段に提供する、
    コンピューティングデバイス。
  22. 前記カーネルモードで少なくとも部分的に実行可能なストレージマッパー手段をさらに備え、
    前記ユーザモードインタフェース手段はさらに、前記未処理データを前記ストレージマッパー手段から受信し、
    前記ストレージマッパー手段は、前記ユーザモードで少なくとも部分的に実行されるアプリケーションからの1つ又は複数の読み出し要求をインターセプトし、前記1つ又は複数の読み出し要求の対象となる未処理データを前記ユーザモードインタフェース手段にリダイレクトする、
    請求項21に記載のコンピューティングデバイス。
  23. 前記ユーザモードインタフェース手段は、暗号文の少なくとも一部を前記共有バッファのキューに入れ、前記暗号化操作は、前記共有バッファのキューに入れられた前記暗号文を解読することを含む、
    請求項21に記載のコンピューティングデバイス。
  24. 前記エンクレーブホスト手段は、前記エンクレーブホスト手段及び前記ユーザモードインタフェース手段の両方に露出しているプロキシにシステムコールを発行し、
    前記ユーザモードインタフェース手段は、前記システムコールをインターセプトし、
    前記ユーザモードインタフェース手段は、前記システムコールを解放することにより、前記バッファデータインジケータを少なくとも部分的に提供する、
    請求項21から23のいずれか一項に記載のコンピューティングデバイス。
  25. 前記プロキシは、カーネルモードのデバイス又はデータ構造を含む、
    請求項24に記載のコンピューティングデバイス。
JP2017540745A 2015-03-25 2016-02-25 セキュアエンクレーブを用いてデータ暗号化を強化するための技術 Active JP6682752B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/667,916 US9904803B2 (en) 2015-03-25 2015-03-25 Technologies for hardening data encryption with secure enclaves
US14/667,916 2015-03-25
PCT/US2016/019475 WO2016153706A1 (en) 2015-03-25 2016-02-25 Technologies for hardening data encryption with secure enclaves

Publications (2)

Publication Number Publication Date
JP2018511956A true JP2018511956A (ja) 2018-04-26
JP6682752B2 JP6682752B2 (ja) 2020-04-15

Family

ID=56976428

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017540745A Active JP6682752B2 (ja) 2015-03-25 2016-02-25 セキュアエンクレーブを用いてデータ暗号化を強化するための技術

Country Status (5)

Country Link
US (1) US9904803B2 (ja)
EP (1) EP3274908B1 (ja)
JP (1) JP6682752B2 (ja)
CN (1) CN107533615B (ja)
WO (1) WO2016153706A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003554B1 (en) 2015-12-22 2018-06-19 Amazon Technologies, Inc. Assisted sideband traffic management
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US10372656B2 (en) 2016-11-21 2019-08-06 Intel Corporation System, apparatus and method for providing trusted input/output communications
US11438155B2 (en) * 2017-01-24 2022-09-06 Microsoft Technology Licensing, Llc Key vault enclave
US10530777B2 (en) * 2017-01-24 2020-01-07 Microsoft Technology Licensing, Llc Data unsealing with a sealing enclave
US10931652B2 (en) * 2017-01-24 2021-02-23 Microsoft Technology Licensing, Llc Data sealing with a sealing enclave
CN109726588B (zh) * 2018-12-21 2021-04-06 上海邑游网络科技有限公司 基于信息隐藏的隐私保护方法和系统
CN111082934B (zh) * 2019-12-31 2021-04-06 支付宝(杭州)信息技术有限公司 基于可信执行环境的跨域安全多方计算的方法及装置
US20230152989A1 (en) * 2021-11-15 2023-05-18 Samsung Electronics Co., Ltd. Memory controller adjusting power, memory system including same, and operating method for memory system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10190649A (ja) * 1996-10-16 1998-07-21 Hewlett Packard Co <Hp> 双方向データストリーム伝送装置
JP2001516913A (ja) * 1997-09-16 2001-10-02 マイクロソフト コーポレイション 暗号化ファイルシステム及び方法
JP2006510958A (ja) * 2002-08-23 2006-03-30 イグジット−キューブ,インク. 暗号化オペレーティングシステム
US20140006711A1 (en) * 2012-06-27 2014-01-02 Bin Xing Method, system, and device for modifying a secure enclave configuration without changing the enclave measurement
US20140337983A1 (en) * 2013-05-10 2014-11-13 Xiaozhu Kang Entry/Exit Architecture for Protected Device Modules
JP2014530371A (ja) * 2011-09-22 2014-11-17 騰訊科技(深▲せん▼)有限公司Tencent Technology(Shenzhen) Companylimited ファイル暗号化方法及び装置、ファイル復号方法及び装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5454039A (en) * 1993-12-06 1995-09-26 International Business Machines Corporation Software-efficient pseudorandom function and the use thereof for encryption
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
US6986052B1 (en) 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7272832B2 (en) 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
EP1331539B1 (en) 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
CA2778805C (en) * 2002-04-17 2015-01-20 Microsoft Corporation Saving and retrieving data based on public key encryption
WO2003094513A1 (en) * 2002-04-30 2003-11-13 General Dynamics Advanced Information Systems, Inc. Method and apparatus for in-line serial data encryption
WO2005043360A1 (en) 2003-10-21 2005-05-12 Green Border Technologies Systems and methods for secure client applications
US8321667B2 (en) 2007-02-28 2012-11-27 Microsoft Corporation Security model for common multiplexed transactional logs
US8578477B1 (en) 2007-03-28 2013-11-05 Trend Micro Incorporated Secure computer system integrity check
US20100031342A1 (en) * 2007-04-12 2010-02-04 Honeywell International, Inc Method and system for providing secure video data transmission and processing
US20110142058A1 (en) * 2009-12-10 2011-06-16 Telcordia Technologies, Inc. Bridge protocol for flow-specific messages
US9087200B2 (en) * 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US8181176B2 (en) * 2010-06-21 2012-05-15 Intel Corporation Uniform storage device access using partial virtual machine executing within a secure enclave session
US8972746B2 (en) 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US9769123B2 (en) * 2012-09-06 2017-09-19 Intel Corporation Mitigating unauthorized access to data traffic
US9256551B2 (en) * 2013-08-09 2016-02-09 Apple Inc. Embedded encryption/secure memory management unit for peripheral interface controller
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10190649A (ja) * 1996-10-16 1998-07-21 Hewlett Packard Co <Hp> 双方向データストリーム伝送装置
JP2001516913A (ja) * 1997-09-16 2001-10-02 マイクロソフト コーポレイション 暗号化ファイルシステム及び方法
JP2006510958A (ja) * 2002-08-23 2006-03-30 イグジット−キューブ,インク. 暗号化オペレーティングシステム
JP2014530371A (ja) * 2011-09-22 2014-11-17 騰訊科技(深▲せん▼)有限公司Tencent Technology(Shenzhen) Companylimited ファイル暗号化方法及び装置、ファイル復号方法及び装置
US20140006711A1 (en) * 2012-06-27 2014-01-02 Bin Xing Method, system, and device for modifying a secure enclave configuration without changing the enclave measurement
US20140337983A1 (en) * 2013-05-10 2014-11-13 Xiaozhu Kang Entry/Exit Architecture for Protected Device Modules

Also Published As

Publication number Publication date
CN107533615A (zh) 2018-01-02
EP3274908A1 (en) 2018-01-31
EP3274908A4 (en) 2018-09-26
CN107533615B (zh) 2021-05-18
JP6682752B2 (ja) 2020-04-15
US9904803B2 (en) 2018-02-27
US20160283747A1 (en) 2016-09-29
EP3274908B1 (en) 2019-10-23
WO2016153706A1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
US10599489B2 (en) Processing a guest event in a hypervisor-controlled system
US9690947B2 (en) Processing a guest event in a hypervisor-controlled system
JP6682752B2 (ja) セキュアエンクレーブを用いてデータ暗号化を強化するための技術
CN107851151B (zh) 保护虚拟机的状态信息
CN107077428B (zh) 保护应用秘密的方法、电子系统和计算机存储介质
US10235304B2 (en) Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US10810138B2 (en) Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME)
US10536274B2 (en) Cryptographic protection for trusted operating systems
US9779032B2 (en) Protecting storage from unauthorized access
JP5572834B2 (ja) 仮想化を用いた動画コンテンツの保護
US10691627B2 (en) Avoiding redundant memory encryption in a cryptographic protection system
US20180253328A1 (en) Virtual machine exit support by a virtual machine function
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US9772954B2 (en) Protecting contents of storage
US20230236870A1 (en) Safe entropy source for encrypted virtual machines
KR20220080126A (ko) 프로세서에서 하이퍼바이저 보안 이벤트 핸들링

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171003

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200305

R150 Certificate of patent or registration of utility model

Ref document number: 6682752

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