IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌイーシー ラボラトリーズ アメリカ インクの特許一覧

特許7072123トラステッド実行環境を加速されたグラフィック処理ユニット
<>
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図1
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図2
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図3
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図4
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図5
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図6
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図7
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図8
  • 特許-トラステッド実行環境を加速されたグラフィック処理ユニット 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-11
(45)【発行日】2022-05-19
(54)【発明の名称】トラステッド実行環境を加速されたグラフィック処理ユニット
(51)【国際特許分類】
   G06F 21/62 20130101AFI20220512BHJP
   G06F 21/71 20130101ALI20220512BHJP
   G06F 13/10 20060101ALI20220512BHJP
   G06F 9/455 20060101ALI20220512BHJP
【FI】
G06F21/62
G06F21/71
G06F13/10 330C
G06F9/455 150
【請求項の数】 20
(21)【出願番号】P 2021529291
(86)(22)【出願日】2020-02-12
(65)【公表番号】
(43)【公表日】2022-01-18
(86)【国際出願番号】 US2020017929
(87)【国際公開番号】W WO2020167949
(87)【国際公開日】2020-08-20
【審査請求日】2021-05-24
(31)【優先権主張番号】16/787,610
(32)【優先日】2020-02-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/804,888
(32)【優先日】2019-02-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】504080663
【氏名又は名称】エヌイーシー ラボラトリーズ アメリカ インク
【氏名又は名称原語表記】NEC Laboratories America, Inc.
(74)【代理人】
【識別番号】100123788
【弁理士】
【氏名又は名称】宮崎 昭夫
(74)【代理人】
【識別番号】100127454
【弁理士】
【氏名又は名称】緒方 雅昭
(72)【発明者】
【氏名】キム、 チャン、 ファン
(72)【発明者】
【氏名】リー、 ジュンワン
(72)【発明者】
【氏名】ジー、 カンクック
(72)【発明者】
【氏名】リ、 ジチュン
(72)【発明者】
【氏名】アーマッド、 アディル
(72)【発明者】
【氏名】チェン、 ハイフォン
【審査官】局 成矢
(56)【参考文献】
【文献】特開2006-190281(JP,A)
【文献】米国特許出願公開第2006/0146057(US,A1)
【文献】米国特許出願公開第2017/0346814(US,A1)
【文献】特表2019-517080(JP,A)
【文献】特表2015-503784(JP,A)
【文献】米国特許出願公開第2013/0174144(US,A1)
【文献】特表2016-526730(JP,A)
【文献】町田 卓謙 ほか,Intel SGXに関する調査・分析および実機検証,2017年 暗号と情報セキュリティシンポジウム(SCIS2017),日本,2017年01月24日,p.1-8
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 21/71
G06F 13/10
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実施するための方法であって、
エンクレーブに格納されたユーザアプリケーションとハイパーバイザにロードされたグラフィックス処理ユニット(GPU)ドライバとの間に第1の信頼されたチャネルを確立すること(640)であって、前記第1の信頼されたチャネルを確立することは、拡張ページテーブル(EPT)内のページ権限を活用して、オペレーティングシステム(OS)の物理メモリ内の前記エンクレーブと前記GPUドライバとの間に前記第1の信頼されたチャネルを分離することであることと、
前記GPUドライバとGPUデバイスとの間に第2の信頼されたチャネルを確立すること(650)と、
前記ユーザアプリケーションのアプリケーションコードの実行を用いて前記エンクレーブと前記ハイパーバイザとを含む統合されたTEEを起動すること(660)とを含む方法。
【請求項2】
請求項1に記載の方法において、
前記アプリケーションコードの実行中に、前記統合されたTEEは、ソフトウェアスタックおよびハードウェア空間全体における前記アプリケーションコードの機密性とデータ実行とを保護する方法。
【請求項3】
請求項1に記載の方法において、
前記第1の信頼されたチャネルと前記第2の信頼されたチャネルとを介して前記GPUデバイスを使用して計算を加速することをさらに含み、前記第1の信頼されたチャネルおよび前記第2の信頼されたチャネルは、前記統合されたTEEによって保護される方法。
【請求項4】
請求項1に記載の方法において、
前記第2の信頼されたチャネルを確立することは、前記EPT内のページ権限を活用して、前記物理メモリ内の前記GPUドライバと前記GPUデバイスとの間で共有されるページにマークを付けることをさらに含む方法。
【請求項5】
請求項4に記載の方法において、
前記GPUドライバおよび対応するユーザランタイムは、共有メモリを介して、機密コードと機密データとの少なくとも1つを転送し、ワークロードを前記GPUデバイスへオフロードする方法。
【請求項6】
請求項5に記載の方法において、
前記ハイパーバイザによって、機密コードと機密データとの少なくとも1つを含むページに、前記EPT内にて前記GPUドライバと前記エンクレーブとによってのみアクセス可能なものとして、前記共有メモリを介して送信が実装されるたびにマークを付ける方法。
【請求項7】
請求項5に記載の方法において、
信頼されていないソフトウェアによる前記共有メモリへのアクセスの試みに応答して、前記ハイパーバイザへのトラップを発生させ、前記試みを不正アクセスとして検出することをさらに含む方法。
【請求項8】
請求項1に記載の方法において、
前記第2の信頼されたチャネルを確立することは、さらに、
前記GPUデバイスと前記GPUドライバとがやり取りする各ハードウェア空間へのアクセスごとに前記GPUドライバの認証を実行することを含む方法。
【請求項9】
請求項8に記載の方法において、
前記GPUドライバ以外のソフトウェアによるアクセスの試みに応答して、
前記ハイパーバイザへのアクセスをトラップすることと、
認証によって前記アクセスを防止することとの少なくとも1つを実装する方法。
【請求項10】
請求項1に記載の方法において、
前記GPUドライバを前記ハイパーバイザにロードすることは、さらに、
最も特権のある中央処理ユニット(CPU)モードから前記ハイパーバイザを実行することと、
前記GPUドライバを、権限のより低いモードで実行される他のソフトウェアから分離することとを含む方法。
【請求項11】
請求項1に記載の方法において、
前記ユーザアプリケーションを前記エンクレーブにロードすることは、さらに、
初期化されていないエンクレーブにページを追加する命令を使用して、保護されたページとして前記ユーザアプリケーションとランタイムとの機密コードとデータとをエンクレーブに追加することを含む方法。
【請求項12】
計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実施するコンピュータシステムであって、
メモリデバイスに動作可能に結合されたプロセッサデバイスを有し、該プロセッサデバイスは、
エンクレーブに格納されたユーザアプリケーションとハイパーバイザにロードされたグラフィックス処理ユニット(GPU)ドライバとの間に第1の信頼されたチャネルを確立(140)し、前記第1の信頼されたチャネルを確立することは、拡張ページテーブル(EPT)内のページ権限を活用して、オペレーティングシステム(OS)の物理メモリ内の前記エンクレーブと前記GPUドライバとの間に前記第1の信頼されたチャネルを分離することであり、
前記GPUドライバとGPUデバイスとの間に第2の信頼されたチャネルを確立(150)し、
前記ユーザアプリケーションのアプリケーションコードの実行を用いて前記エンクレーブと前記ハイパーバイザとを含む統合されたTEEを起動する(160)ように構成されたコンピュータシステム。
【請求項13】
請求項12に記載のシステムにおいて、
前記アプリケーションコードの実行中に、前記統合されたTEEは、ソフトウェアスタックおよびハードウェア空間全体における前記アプリケーションコードの機密性とデータ実行とを保護するシステム。
【請求項14】
請求項12に記載のシステムにおいて、
前記プロセッサデバイスは、さらに、
前記第1の信頼されたチャネルと前記第2の信頼されたチャネルとを介して前記GPUデバイスを使用して計算を加速し、前記第1の信頼されたチャネルおよび前記第2の信頼されたチャネルは、前記統合されたTEEによって保護されるように構成されるシステム。
【請求項15】
請求項12に記載のシステムにおいて、
前記第2の信頼されたチャネルを確立するとき、前記プロセッサデバイスは、
前記EPT内のページ権限を活用して、前記物理メモリ内の前記GPUドライバと前記GPUデバイスとの間で共有されるページにマークを付けるように構成されるシステム。
【請求項16】
請求項15に記載のシステムにおいて、
前記GPUドライバおよび対応するユーザランタイムは、共有メモリを介して機密コードと機密データとの少なくとも1つを転送し、ワークロードを前記GPUデバイスへオフロードするシステム。
【請求項17】
請求項16に記載のシステムにおいて、
前記プロセッサデバイスは、さらに、
前記ハイパーバイザによって、機密コードと機密データとの少なくとも1つを含むページに、前記EPT内にて前記GPUドライバと前記エンクレーブとによってのみアクセス可能なものとして、前記共有メモリを介して送信が実装されるたびに、マークを付けるように構成されるシステム。
【請求項18】
請求項16に記載のシステムにおいて、
前記プロセッサデバイスは、さらに、
信頼されていないソフトウェアによる前記共有メモリへのアクセスの試みに応答して、前記ハイパーバイザへのトラップを発生させ、前記試みを不正アクセスとして検出するように構成されるシステム。
【請求項19】
請求項12に記載のシステムにおいて、
前記第2の信頼されたチャネルを確立するとき、前記プロセッサデバイスは、さらに、
前記GPUデバイスと前記GPUドライバとがやり取りする各ハードウェア空間へのアクセスごとに前記GPUドライバの認証を実行するように構成されるシステム。
【請求項20】
計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実装するためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、共に実施されるプログラム命令を有する非一時的なコンピュータ読み取り可能な記憶媒体を備え、該プログラム命令は、コンピュータデバイスに方法を実行させるために、前記コンピュータデバイスによって実行可能なプログラム命令であり、前記方法は、
エンクレーブに格納されたユーザアプリケーションとハイパーバイザにロードされたグラフィックス処理ユニット(GPU)ドライバとの間に第1の信頼されたチャネルを確立すること(640)であって、前記第1の信頼されたチャネルを確立することは、拡張ページテーブル(EPT)内のページ権限を活用して、オペレーティングシステム(OS)の物理メモリ内の前記エンクレーブと前記GPUドライバとの間に前記第1の信頼されたチャネルを分離することであることと、
前記GPUドライバとGPUデバイスとの間に第2の信頼されるチャネルを確立すること(650)と、
前記ユーザアプリケーションのアプリケーションコードの実行を用いて前記エンクレーブと前記ハイパーバイザとを含む統合されたTEEを起動すること(660)とを含むコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願情報
本出願は、2020年2月11日に出願された米国特許出願第16/787,610号の優先権を主張し、この出願は、2019年2月13日に出願された米国仮特許出願第62/804,888号の優先権を主張し、その内容は、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
本発明は、トラステッド実行環境に関し、より詳細には、計算アクセラレーションに関する。
関連技術の説明
【0003】
クラウドコンピューティングは、共有されたコンピューティング環境である。機密コードおよびデータの機密性は、クラウドユーザおよびクラウドプロバイダにとって問題である。機密性の問題に対処するために、ハードウェア製造者は中央処理ユニット(CPU)の信頼できるハードウェア上にスキームを実装した。これらのハードウェア方式は、信頼されていないソフトウェアから分離して機密性の高いコードとデータとをロードし実行できる、強い機密性と完全性保護とを備えたトラステッド実行環境(TEE)を提供する。
【発明の概要】
【0004】
本発明の一態様によれば、計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実装するための方法が提供される。この方法は、エンクレーブに格納されたユーザアプリケーションとハイパーバイザにロードされたグラフィックス処理ユニット(GPU)ドライバとの間に第1の信頼されたチャネルを確立することを含む。第1の信頼されたチャネルを確立することは、拡張ページテーブル(EPT)内のページ権限を活用して、オペレーティングシステム(OS)の物理メモリ内の前記エンクレーブと前記GPUドライバとの間に前記第1の信頼されたチャネルを分離することであることを含む。前記方法は、前記GPUドライバとGPUデバイスとの間に第2の信頼されるチャネルを確立することを含む。前記方法はまた、前記ユーザアプリケーションのアプリケーションコードの実行を用いて前記エンクレーブと前記ハイパーバイザとを含む統合されたTEEを起動することを含む。
【0005】
本発明の別の態様によれば、計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実装するためのシステムが提供される。システムは、メモリデバイスに動作可能に結合されたプロセッサデバイスを有し、該プロセッサデバイスは、エンクレーブに格納されたユーザアプリケーションとハイパーバイザにロードされたグラフィックス処理ユニット(GPU)ドライバとの間に第1の信頼されたチャネルを確立するように構成される。第1の信頼されたチャネルを確立することは、拡張ページテーブル(EPT)内のページ権限を活用して、オペレーティングシステム(OS)の物理メモリ内の前記エンクレーブと前記GPUドライバとの間に前記第1の信頼されたチャネルを分離することを含む。前記プロセッサデバイスは、前記GPUドライバとGPUデバイスとの間に第2の信頼されたチャネルを確立する。前記プロセッサデバイスはまた、前記ユーザアプリケーションのアプリケーションコードの実行を用いて前記エンクレーブと前記ハイパーバイザとを含む統合されたTEEを起動する。
【0006】
これらおよび他の特徴および利点は、添付の図面に関連して読まれるべき、その例示的な実施形態の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0007】
本開示は、以下の図面を参照して、好ましい実施形態の以下の説明において詳細を提供する。
【0008】
図1】本発明の一実施形態による、安全なエンクレーブのためのグラフィックス処理ユニット(GPU)アクセラレーションを実施するための高レベルなシステムを示すブロック図である。
【0009】
図2】本発明の一実施形態による、エンクレーブ作成およびユーザアプリケーションローディングを実施するための構成要素を示すブロック図である。
【0010】
図3】本発明の一実施形態による、ハイパーバイザにロードするGPUドライバを実装するための構成要素を示すブロック図である。
【0011】
図4】本発明の一実施形態による、実装するための構成要素を示すブロック図である。
【0012】
図5】本発明の一実施形態による、実装するための構成要素を示すブロック図である。
【0013】
図6】本発明の一実施形態による、実装するための構成要素を示すブロック図である。
【0014】
図7】本発明の一実施形態による、計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実装するための高レベルシステムを示す概略およびブロック図である。
【0015】
図8】本発明の一実施形態による、計算アクセラレーションを用いてTEEをサポートするシステムアーキテクチャを実装するための方法を示すフロー図である。
【0016】
図9】本発明の一実施形態による、計算アクセラレーションを用いてTEEをサポートするシステムアーキテクチャを実装するための方法を示す概略およびブロック図である。
【発明を実施するための形態】
【0017】
本発明の実施形態によれば、(中央処理ユニット(CPU)およびアクセラレータのハードウェア設計に対する変更を実装することなく)計算アクセラレーションを用いてトラステッド実行環境(TEE)をサポートするためのシステムアーキテクチャを実装するためのシステムおよび方法が提供される。統合されたTEEを作成するために、システムアーキテクチャは、ユーザアプリケーションおよびGPUドライバを、それぞれ、安全なエンクレーブおよびハイパーバイザにロードするために、複数のステージを通って進む。また、システムは、攻撃者がメモリおよびバス内のハードウェアチャネルから機密コードおよびデータを漏洩するのを防ぐために、GPUドライバとエンクレーブとの間およびGPUドライバとGPUデバイスとの間の信頼されたチャネルを確立する。
【0018】
システムおよび方法は、ユーザアプリケーションとアクセラレータとの間のすべてのサーフェス(例えば、インターフェース)において機密コードおよびデータを保護する統合されたTEEを可能にする。統合されたTEEは、オリジナルTEEの保護範囲を「enclave only」からenclave plus enclave-GPU通信に拡張する。この機密コードは、GPU内で実行されるコードである。アプリケーションにはGPUコードが含まれているが、実行されない。アプリケーションは、汎用GPUライブラリ(例えば、NVIDIATM(登録商標)_CUDATM(登録商標)などのグラフィカル処理ユニットでの汎用コンピューティング用のパラレルコンピューティングプラットフォームおよびプログラミングモデル)とGPUドライバとを使用してGPU計算の前にGPUにGPUコード(およびデータ)を送信する。ソフトウェアスタックでは、保護されたサーフェスには、ユーザ空間でのアプリケーションの実行とランタイム、およびカーネル空間でのGPUドライバが含まれる。ハードウェア空間では、アーキテクチャは、機密コードとデータとがそれぞれ存在し、送信されるメモリとバスとを保護する。
【0019】
一実施形態では、システムは、TEEおよび仮想化のためのハードウェアサポートを利用して、統合されたTEEを実現(例えば、実装)する。特に、システムは、ハードウェア支援仮想化スキームを使用して、GPUによる高速化でTEEを実装する。例えば、システムは、小さな(例えば、軽量で、比較的小さなリソースを使用し、制限された等)、動的にロード可能なハイパーバイザでデバイスドライバを実行することができる。TEE内では、ユーザ空間コードおよびデータはエンクレーブ内で実行され、デバイスドライバは他の信頼できないプログラムから分離してハイパーバイザ内で実行される。
【0020】
本明細書に記載する実施形態は、完全にハードウェアであってもよく、完全にソフトウェアであってもよく、または、ハードウェアおよびソフトウェア要素の両方を含むものであってもよい。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されないソフトウェアで実施される。
【0021】
実施形態は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供する、コンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品を含むことができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを格納、通信、伝搬、またはトランスポートする任意の装置を含むことができる。媒体は、磁気、光学、電子、電磁気、赤外線、または半導体システム(または装置またはデバイス)、または伝搬媒体とすることができる。媒体は、半導体または固体ステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスクおよび光ディスクなどのコンピュータ読み取り可能な記憶媒体を含むことができる。
【0022】
各コンピュータプログラムは、本明細書に記載する手順を実行するために、記憶媒体または装置がコンピュータによって読み取られるときに、コンピュータの操作を構成し制御するために、汎用または特殊目的のプログラム可能コンピュータによって読み取り可能な、機械読み取り可能な記憶媒体または装置(例えば、プログラムメモリまたは磁気ディスク)に実体的に記憶することができる。本発明のシステムはまた、コンピュータプログラムで構成された、コンピュータ読み取り可能な記憶媒体で実施されるものと考えることができ、その場合、構成された記憶媒体は、コンピュータを特定の所定の方法で動作させて、本明細書に記載する機能を実行させる。
【0023】
プログラムコードを記憶および/または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含んでもよい。メモリ要素は、プログラムコードの実際の実行中に採用されるローカルメモリ、バルクストレージ、および実行中にバルクストレージからコードが検索される回数を減らすために少なくとも何らかのプログラムコードの一時記憶を提供するキャッシュメモリを含むことができる。入力/出力またはI/O装置(キーボード、ディスプレイ、ポインティング装置などを含むが、これらに限定されない)は、直接または介在するI/Oコントローラを介してシステムに結合され得る。
【0024】
介在する専用ネットワークまたは公衆ネットワークを介して、データ処理システムを他のデータ処理システムあるいはリモートプリンタまたはストレージデバイスに結合できるようにするために、ネットワークアダプタをシステムに結合することもできる。モデム、ケーブルモデム、およびイーサネット(登録商標)カードは、現在使用可能なネットワークアダプタのタイプの一例に過ぎない。
【0025】
ここで、同様の数字が同じまたは同様の要素を表した図と、最初に図1とを詳細に参照すると、安全なエンクレーブのためのグラフィックス処理ユニット(GPU)加速を実施するための高レベルシステムが、本発明の一実施形態にしたがって例示的に示されている。
【0026】
図1に示すように、システム100は、安全なエンクレーブのための信頼できるGPUアクセラレーションのためのワークフローを実施する構成要素を含む。システム100は、エンクレーブ作成110、エンクレーブへロードするユーザアプリケーション120、ハイパーバイザへロードするGPU130、エンクレーブドライバの信頼されたチャネル確立140、ドライバデバイスの信頼されたチャネル確立150およびエンクレーブ起動160のための構成要素を含む。エンクレーブは、コンピューティングシステムの他の部分から細分化されたセクションである。ハイパーバイザ(例えば、仮想マシンモニタ(VMM))には、コンピュータソフトウェア、メモリなどのコンピューティングシステムのリソースを共有することによって仮想マシンを作成および実行するファームウェアまたはハードウェアおよび処理を含めることができる。
【0027】
システム100は、エンクレーブ作成110、エンクレーブへロードするユーザアプリケーション(app)120、ハイパーバイザへロードするGPU130、エンクレーブドライバの信頼されたチャネル確立140、ドライバデバイスの信頼されたチャネル確立150およびエンクレーブ起動160を実施するための構成要素を含む。
【0028】
統合されたTEEを生成するために、システムアーキテクチャは、ユーザアプリケーション(エンクレーブ120にロードするユーザアプリケーション(app)120)およびGPUドライバを、それぞれ、安全なエンクレーブおよびハイパーバイザ(ハイパーバイザにロードするGPU130)にロードするために、構成要素(または代替として、複数のステージ)を実装する。TEEは、1つまたは複数のエンクレーブをサポートする環境を指す。例示的な実施形態は、エンクレーブ内のGPUアクセラレーションをサポートするTEEを提供する。対照的に、ハードウェアスキームは、以下の理由により、元々エンクレーブ内部のGPUアクセラレーションをサポートしないTEEを提供する。第1に、ハードウェアスキームによって提供されるTEEは、CPU内部の計算のみを保護するように設計されており、したがって、GPUはTEEの範囲外である。第2に、GPUは周辺デバイス(ほとんどPeripheral Component Interconnect Express(PCI)カードとして実装されている)であり、CPUに依存して、(1)必要なコードとデータを送信し、(2)計算の前後にそれぞれ結果データを受信する。例示的な実施形態は、エンクレーブ境界を離れ、周辺デバイスとの間で送信されるコードまたはデータを保護するTEEを提供する。例示的な実施形態は、これらのGPUコードおよびデータを信頼できないプログラムから保護することによって、エンクレーブのための安全な計算アクセラレーションを提供する。例示的な実施形態は、エンクレーブ内部のユーザアプリケーションとGPUハードウェアとの間のミドルマンとして機能するGPUドライバを保護するために、TEEの範囲を拡張する。GPUドライバは、ハイパーバイザで実行され、それによって、GPUドライバは、危険にさらされたオペレーティングシステムから分離することができる。エンクレーブとGPUドライバとの間で、送信されたコードおよびデータは暗号化によって保護される(例えば、エンクレーブドライバの信頼されたチャネルの確立140およびドライバ装置の信頼されたチャネルの確立150に基づいて)。GPUドライバとGPUハードウェアとの間では、コードおよびデータの送信に使用されるハードウェア空間がハイパーバイザによって監視される。ハイパーバイザは、ハイパーバイザ内のGPUドライバのみがハードウェア空間にアクセスできることを保証する。他のいかなるアクセスも許可されず、ハイパーバイザにページフォルトを生成させる。
【0029】
エンクレーブは、保護する機密コードとデータとをロードするメモリのプライベート領域である。CPUは、保護されたコードとデータとがエンクレーブ内部のコードによってのみアクセス可能であることを保証する。エンクレーブ外のコードは、実行時にこれらのコードとデータとにアクセスできない。ハイパーバイザは、ベアメタルコンピュータ上で直接実行され、1つまたは複数のオペレーティングシステムを管理するプログラムである。CPUは、オペレーティングシステムよりも高い特権モードでハイパーバイザを実行するため、危険にさらされたオペレーティングシステムから安全である。これを可能にするテクノロジは、仮想化と呼ばれる。安全なエンクレーブは、統合されたセキュリティを提供する安全なコンピューティングインフラストラクチャを通じてデータを保護できる。ハイパーバイザは、ゲストオペレーティングシステムに仮想オペレーティングプラットフォームを提供し、ゲストオペレーティングシステムの実行を管理する。さまざまなオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共有できる。システム100はまた、攻撃者がメモリおよびバス内のハードウェアチャネルから機密コードおよびデータを漏らさないようにするために、GPUドライバとエンクレーブとの間(例えば、エンクレーブドライバの信頼されたチャネル確立140に基づいて)およびGPUドライバとGPU装置との間(例えば、ドライバ装置の信頼されたチャネル確立150に基づいて)に信頼されたチャネルを確立することができる。
【0030】
一実施形態では、システムアーキテクチャは、CPUおよびアクセラレータのハードウェア設計にいかなる相補的な変更も実装することなく、計算アクセラレーションを用いてTEEのサポートを提供する。システム100は、ユーザアプリケーションとアクセラレータとの間のすべての面における機密コードおよびデータを保護する統合されたTEEを可能にする。ソフトウェアスタック(例えば、共通の目標を達成するために連動して動作するプログラムのグループ)において、保護された表面は、カーネル空間におけるアクセラレータドライバと同様に、ユーザ空間におけるアプリケーションの実行とランタイムとを含む。ハードウェア空間(例えば、コンピューティングシステムの物理設計内)では、アーキテクチャは、機密コードおよびデータがそれぞれ存在し、送信されるメモリおよびバスを保護する。
【0031】
例示的な実施形態によれば、システム100は、統合されたTEEを実現するために、TEEおよび仮想化のためのハードウェアサポートを活用する。例えば、システムは、(1)セキュリティ関連命令コード(INTELTM(登録商標)-SGXTM(登録商標)など)を使用して、エンクレーブ内部でユーザアプリケーションを実行し、(2)仮想化スキーム(INTELTM(登録商標)-VMXTM(登録商標)など)を使用して、その中でハイパーバイザおよびGPUドライバを実行することができる。統合されたTEEは、セキュリティ関連の命令コードと仮想化スキームとを組み合わせ、暗号化によりセキュリティ関連の命令コードと仮想化スキームとの間の通信を保護する。さらに、システムは、ハイパーバイザ内のGPUドライバのみがGPUハードウェアにアクセスできるようにする。特に、システム100は、ハードウェア支援仮想化スキームを使用して、動的にロード可能な小さなハイパーバイザでデバイスドライバを実行する。これにより、システム100は、GPUを用いてアクセラレーションを実施することができる。TEE内では、ユーザ空間コードおよびデータはエンクレーブ内で実行され(エンクレーブ起動160の後)、デバイスドライバは他の信頼できないプログラムから分離してハイパーバイザ内で実行される。システム100は、ハードウェアスキームをシステムアーキテクチャにおいて安全に機能させるために、統合されたTEEを提供するために協調するように設計されておらず、独立したハードウェアスキームに対処するプロセスを実装する。さらに、システム100は、CPUとアクセラレータとの間のチャネルを(例えば、効率的に)安全にするために、(例えば、使用しない)暗号化操作の使用を回避することができる。データ暗号化では、高い入出力(IO)帯域幅を有するアクセラレータ(例えば、GPUおよびTPU)は、容認できないほど大きなオーバヘッドをもたらす可能性がある。メモリおよびバスの分離を有する装置100の設計は、TEE内のプログラムエンティティが、転送されたコードおよびデータを秘密に保ちながら、信頼されたパスを介して高いスケーラビリティで効率的に通信することができることを保証する。
【0032】
次に図2を参照すると、本発明の一実施形態による、エンクレーブ作成110およびユーザアプリケーションローディング120を実施するための構成要素(またはサブプロセス)のブロック図が例示的に示されている。
【0033】
図2に示すように、GPUアクセラレーションを用いてユーザアプリケーションをロードして実行する必要がある場合、統合されたTEEは、まず、(例えば、ユーザによって与えられた公開鍵および測定ハッシュ220を使用して、新しいエンクレーブをインスタンス化する命令を使用することによって)安全なエンクレーブ210を作成する。例えば、有効な公開鍵と測定ハッシュがないと、セキュリティ関連の命令コードは、実行のためのエンクレーブを初期化する命令が実行されたときに、後でエンクレーブの初期化が失敗することを保証することができる。ユーザアプリケーションおよびランタイム120の機密コードおよびデータは、初期化されていないエンクレーブにページを追加する命令を使用して、保護されたページとしてエンクレーブに追加することができる。次に、エンクレーブに実行を転送する命令(エンクレーブを入力するなど)が実行される。続いてエンクレーブを実行用に初期化する命令が実行されると、エンクレーブはGPUドライバをロードするコードを実行する。一旦ロードされると、ユーザアプリケーションおよびランタイムは、(例えば、他の)信頼されていないソフトウェア230から分離される(例えば、強力に分離される)ことができる。例えば、安全なエンクレーブを実装して、機密性の高いアプリケーションコードとデータとを、CPU上で実行されている信頼できないプログラムから保護できる。信頼できないプログラムには、エンクレーブ外のアプリケーションコードに加えて、オペレーティングシステム(OS)、ハイパーバイザ、基本入出力システム(BIOS)などの特権システムソフトウェアを含めることができる。これらは、攻撃者によって侵害される可能性がある。
【0034】
ここで図3を参照すると、ハイパーバイザへロードするGPUドライバ130を実施するための構成要素(またはサブプロセス)のブロック図が、本発明の一実施形態に従って例示的に示されている。
【0035】
図3に示すように、エンクレーブは、GPUドライバ320のみを実行するために専用の(例えば、小さな、限られたリソースを使用する等の)ハイパーバイザ310を動的に起動する。最も特権的なCPUモード330から実行されると、ハイパーバイザ310は、より特権的でないモード(ユーザモードおよびカーネルモードを含む)で実行される他のソフトウェアからGPUドライバ320を分離する。これは、ドライバ実行の機密性が、信頼されていないアプリケーション(および/またはオペレーティングシステム(OS))を制御する攻撃者に対して保護されることを保証する。このハイパーバイザ310の信頼されるコンピューティングベースおよびランタイムオーバーヘッドのサイズは、ハイパーバイザ310が、複数の仮想マシンを管理する本格的なハイパーバイザとは異なり、GPUドライバ320を実行するために必須の小さな機能を実装する(例えば、限定されるだけであるなど)ので、最小限に抑えることができる。
【0036】
図4は、本発明の一実施形態に従って例示的に示される、エンクレーブとGPUドライバ140との間の信頼されたチャネル確立を実施するための構成要素(またはサブプロセス)のブロック図である。
【0037】
システム100は、例えばハードウェア支援仮想化スキームによって提供される拡張ページテーブル(EPT)350内のページ許可355を利用して、OSの物理メモリ内のエンクレーブ210とGPUドライバ320との間のチャネル360を分離することができる。GPUドライバ320および対応するユーザランタイムは、ワークロードをGPUデバイス(図4には示されていない)にオフロードするために、共有メモリを介して機密コードおよびデータを転送する。ハイパーバイザ310は、メモリを介して送信が行われるときはいつでも、コードおよびデータを含むページを、GPUドライバ320およびEPT350内のエンクレーブ210によってのみアクセス可能であるとマークする。信頼できないソフトウェアがメモリへのアクセスを試みる場合、CPUは、次に、ハイパーバイザ310へのトラップ(例えば、同期割り込みを含むことができる例外または障害)を発生させ、それにより、信頼できないソフトウェアによるアクセスの試みが不正アクセスとして検出される。送信が完了すると、ハイパーバイザ310は、対応するページが後で他の使用のためにマークされていないことを保証することができる。システム100は、ページのコンテンツをゼロアウトして、機密情報を残さないようにすることができる。
【0038】
図5は、本発明の一実施形態に従って例示的に示された、GPUドライバと装置150との間の信頼されたチャネル確立を実施するための構成要素(またはサブプロセス)のブロック図である。
【0039】
ハイパーバイザ310内のGPUドライバ320は、アクセラレーションをサポートするためにGPUデバイス340を管理および制御するように実装される。GPUドライバ320およびGPUデバイス340は、IOポート、物理メモリおよび割り込み空間のような複数のハードウェア空間を介して相互作用することができる。これらの各空間へのアクセス(例えば、デバイス構成およびコード/データ送信)のたびにGPUドライバ320の認証を介して、ハイパーバイザ310は、GPUドライバ320がロードされ実行される間、信頼されたGPUドライバ320のみがGPUデバイス340への排他的アクセスを有することを保証する。これらの空間への他の任意のソフトウェアからのアクセスは、ハイパーバイザ310(物理メモリ空間)へトラップするか、または認証によって防止される(IOポートおよび割り込み空間)。
【0040】
信頼されたチャネル370が、GPUドライバ320とGPUデバイス340との間に確立される。物理メモリ空間の場合、ハイパーバイザ310は、EPT350を活用して、例えば、図4に関して上述したように、エンクレーブ210とGPUドライバ320との間の信頼されたチャネル確立と同様に、物理メモリ内のGPUドライバ320とGPUデバイス340との間で共有されるページにマークを付ける。例えば、システム100は、Diffie-Hellman鍵交換を使用し、鍵を使用してエンクレーブとGPUドライバとの間のコードおよびデータを暗号化および復号化することができる。
【0041】
次に図6を参照すると、本発明の一実施形態による、エンクレーブ起動160を実施するための構成要素(またはサブプロセス)のブロック図が例示的に示されている。
【0042】
エンクレーブ210の初期化、安全なアプリケーションおよびドライバローディング、ならびに信頼されたチャネル確立の後、エンクレーブはアプリケーションコード410の実行を開始する。実行中、統合されたTEE(例えば、エンクレーブ210を介して)は、攻撃者が標的とする可能性のあるソフトウェアスタックおよびハードウェア空間全体における機密性(アプリケーション)コード410およびデータ実行の機密性を保護する。ユーザアプリケーションは、TEEによって保護された信頼されたチャネルを介して、GPUデバイス340(図6には図示せず)を使用して計算を安全に加速することができる。
【0043】
次に図7を参照すると、本発明の一実施形態による、計算アクセラレーションを用いてTEEをサポートするシステムアーキテクチャを実装するための例示的なコンピュータシステム(例えば、サーバまたはネットワークデバイス)が示されている。コンピュータシステム500は、システムバス502を介して他の構成要素に動作可能に結合された少なくとも1つのグラフィック処理ユニット(GPU)503および処理デバイス(CPU)505を含む。キャッシュ506、リードオンリーメモリ(ROM)508、ランダムアクセスメモリ(RAM)510、入力/出力(I/O)アダプタ520、ネットワークアダプタ590、ユーザインタフェースアダプタ550、ログ検索アーキテクチャ100および表示アダプタ560は、システムバス502に動作可能に結合することができる。
【0044】
第1の記憶デバイス522および第2の記憶デバイス529は、I/Oアダプタ520によってシステムバス502に動作可能に結合することができる。記憶デバイス522,529は、ディスク記憶デバイス(例えば、磁気または光ディスク記憶デバイス)、ソリッドステート磁気デバイスなどのいずれであってもよい。記憶デバイス522,529は、同じタイプの記憶デバイスであっても、異なるタイプの記憶デバイスであってもよい。記憶デバイス522,529のいずれかまたは両方を、システムイベントの様々なログ(例えば、異種ログ)を記憶するためのデータストアまたはデータベースとして動作するように構成することができる。ログ検索アーキテクチャ100は、本明細書で説明するソフトウェアおよび/またはハードウェアを含むことができる。
【0045】
トランシーバ595は、ネットワークアダプタ590によってシステムバス502に動作可能に結合することができる。ディスプレイデバイス562は、ディスプレイアダプタ560によってシステムバス502に動作可能に結合される。ログデータ575は、例えばログ検索アーキテクチャ100を介して、システムバス502に直接または間接的に動作可能に結合することができる。ログ検索アーキテクチャ100は、(例えば、ログデータ575を介して)一組のクエリログに基づいて履歴データベースから最も類似したログの集合を検索することによって、システム異常検出のために構成することができる。
【0046】
第1のユーザ入力デバイス552および第2のユーザ入力デバイス559は、ユーザインタフェースアダプタ550によってシステムバス502に動作可能に結合することができる。ユーザ入力デバイス552,559は、センサ、キーボード、マウス、キーパッド、ジョイスティック、画像キャプチャデバイス、動作検出デバイス、電力測定デバイス、マイクロフォン、前述のデバイスのうちの少なくとも2つの機能を組み込んだデバイスなどのうちの任意のものとすることができる。もちろん、本発明によれば、他のタイプの入力デバイスを使用することもできる。ユーザ入力デバイス552,559は、同じタイプのユーザ入力デバイスまたは異なるタイプのユーザ入力デバイスとすることができる。ユーザ入力デバイス552,559は、システム500との間で情報を入出力するために使用することができる。
【0047】
本発明の他の実施形態は、任意選択で、マザーボード、または代替的に/追加的に別の記憶媒体、オペレーティングシステム、1つまたは複数のアプリケーションソフトウェアを含むことができ、ならびに1つまたは複数の通信インターフェース(例えば、RS232、イーサネット(登録商標)、Wi-Fi、Bluetooth(登録商標)、USB)を含むことができる。本発明の実施形態に任意選択で含まれるか、またはそれと一体化可能なコンピューティングデバイスの有用な例には、パーソナルコンピュータ、スマートフォン、ラップトップ、モバイルコンピューティングデバイス、タブレットPCおよびサーバが含まれるが、これらに限定されない。本発明の実施形態によれば、イベントレコードログソースは、コンピュータ記憶媒体とすることができる。
【0048】
もちろん、コンピュータシステム500は、当業者によって容易に企図されるように、他の要素(図示せず)を含むこともでき、また、特定の要素を省略することもできる。例えば、当業者によって容易に理解されるように、他の様々な入力デバイスおよび/または出力デバイスを、その特定の実装に応じて、コンピュータシステム500に含めることができる。例えば、様々なタイプの無線および/または有線の入力および/または出力デバイスを使用することができる。さらに、様々な構成の追加のプロセッサ、コントローラ、メモリなども、当業者には容易に理解されるように利用することができる。コンピュータシステム500のこれらおよび他の変形は、本明細書で提供される本発明の教示を前提として、当業者によって容易に企図される。
【0049】
複数のコンピューティングデバイスは、クラスタ化されたコンピューティングデバイスおよびサーババンク/ファームなどの1つ以上のリソースを分散および共有するような方法で、コンピュータネットワークを形成するために動作可能にリンクすることができることが理解されるべきである。本発明の実施形態では、前述の要素(例えば、デバイス、媒体、ソース、またはモジュール)の各々は、システムの少なくとも1つの他の要素に(例えば、ワイヤレス電子接続を介して)直接的または間接的に通信可能に接続することができる。以下により詳細に記載されるように、本発明のいくつかの実施形態は、単一のコンピューティングデバイス内に完全に含まれ得る。しかしながら、他の実施形態は、複数の相互接続されたまたはネットワーク化されたデバイスおよびリソースを包含することができる。
【0050】
システム500は、(中央処理ユニット(CPU)およびアクセラレータのハードウェア設計に対する変更を実装することなく)計算加速を伴うTEEをサポートするためのシステムアーキテクチャを実装する。システム500は、ユーザアプリケーションとアクセラレータとの間のすべてのサーフェス(例えば、インターフェース)において機密コードおよびデータを保護する統一されたTEEを可能にする。
【0051】
次に図8を参照すると、本発明の一実施形態に従って例示的に示された、計算アクセラレーションを伴うTEEをサポートするためのシステムアーキテクチャを実装するための方法600が示されている。
【0052】
ブロック610において、システム100はエンクレーブ210を作成する。例えば、システム100は、ユーザによって与えられた公開鍵および測定ハッシュ220を使用して、安全なエンクレーブ210を作成する。
【0053】
ブロック620において、システム100は、安全なエンクレーブにロードするユーザアプリケーションをロードする。有効な公開鍵および測定ハッシュがなければ、システム100は、初期化命令が実行された後でエンクレーブの初期化が失敗することを保証することができる。システム100は、GPUドライバ320をロードするコードを実行することができる。
【0054】
ブロック630において、システム100は、GPUドライバ320をハイパーバイザ310にロードする。例えば、エンクレーブ210は、GPUドライバ320を実行するだけの専用のハイパーバイザ310を動的に起動することができる。ハイパーバイザ310は、最も特権のあるCPUモードから実行すると、GPUドライバ320を、より特権のないモード(ユーザモードおよびカーネルモードを含む)で実行する他のソフトウェアから分離する。
【0055】
ブロック640において、システム100は、エンクレーブ210とGPUドライバ320との間に信頼されたチャネルを確立する。例えば、システム100は、拡張ページテーブル(EPT)内のページ権限を活用して、OSの物理メモリ内のエンクレーブ210とGPUドライバ320との間のチャネルを分離することができる。例えば、仮想化技術(例えば、Intel VMX)は、ハイパーバイザがオペレーティングシステムのために管理するEPTを提供することができる。このページテーブルは、オペレーティングシステムが管理し、オペレーティングシステムから非表示にするページテーブルとは異なる。実施例では、ハイパーバイザ(1)は、コードおよびデータを送信するためにGPUドライバおよびGPUハードウェアによって使用されるページを同定し、(2)同定されたページに「アクセス不能」権限を設定することによってページを保護する。
【0056】
ブロック650において、システム100は、GPUドライバ320とGPUデバイス340との間に信頼されたチャネルを確立する。例えば、GPUデバイス340によるアクセス毎にGPUドライバ320を認証することによって、ハイパーバイザ310は、GPUドライバ320がロードされ実行されている間に、信頼されたGPUドライバ320のみがGPUデバイス340への排他的アクセスを有することを保証する。EPTのページがGPUドライバまたはGPUハードウェアによってアクセスされると、ハードウェアはページフォルトを生成し(アクセス不能に構成されているため)、ハイパーバイザはページが正当に(すなわち、信頼されたGPUドライバまたはハードウェアによって)アクセスされているかどうかをチェックする機会を受け取る。
【0057】
ブロック660で、システム100は、エンクレーブ210とハイパーバイザ310とを含む統合されたTEEを起動する。システム100は、ユーザアプリケーションのアプリケーションコードの実行を開始する。
【0058】
次に図9を参照すると、本発明の一実施形態による、Internet of Things(IoT)システムまたはデバイスまたはインフラストラクチャにおいて統一されたTEEを実装するための例示的な方法700が例示的に示されている。
【0059】
IoTは、インターネットインフラストラクチャを介してコンピューティングデバイスと組み込みデバイスとの高度な接続を可能にする。IoTは、マシン間通信(M2M)を含み、接続されたマシンを連続的に監視して、任意の異常またはバグを検出し、それらを迅速に解決してダウンタイムを最小限に抑えることが重要である。
【0060】
モバイルネットワーク705は、例えば、着用可能な、埋め込み可能な、または摂取可能な電子デバイスおよびInternet of Things(IoT)センサと通信することができる。着用可能な、埋め込み可能な、または摂取可能なデバイスは、少なくとも健康および健康監視デバイス、ならびにフィットネスデバイスを含むことができる。着用可能な、埋め込み可能な、または摂取可能なデバイスは、少なくとも埋め込み可能なデバイス、スマートウォッチ、頭部装着型デバイス、セキュリティおよび予防デバイス、ならびにゲームおよびライフスタイルデバイスをさらに含むことができる。IoTセンサは、少なくともホーム自動化アプリケーション、自動車アプリケーション、ユーザインターフェースアプリケーション、ライフスタイルおよび/または娯楽アプリケーション、都市および/またはインフラストラクチャアプリケーション、玩具、ヘルスケア、フィットネス、小売タグおよび/またはトラッカ、プラットフォームおよび構成要素などに組み込むことができる。本明細書で説明されるモバイルネットワーク705は、任意のタイプの使用、アプリケーション、または操作のために、任意のタイプの電子デバイスと通信することができる。
【0061】
IoT(Internet of Things)は、ネットワーク化、センシング、ビッグデータおよび人工知能技術を利用して、製品またはサービスのための完全なシステムを提供する高度な自動化および分析システムである。これらのシステムは、任意の産業またはシステムに適用された場合に、より高い透明性、制御および性能を可能にする。
【0062】
IoTシステムは、その独特の柔軟性および任意の環境において適切である能力を通して、産業間でアプリケーションを有する。IoTシステムは、スマートデバイスと強力なイネーブリングテクノロジとによって、データ収集、自動化、操作、およびはるかに多くの機能を強化する。
【0063】
IoTシステムは、ユーザがシステム内でより深い自動化、分析、および統合を達成することを可能にする。IoTは、これらの領域の到達範囲およびそれらの精度を改善する。IoTは、感知、ネットワーク化およびロボット工学のために、既存の技術および新興の技術を利用する。IoTの特徴には、人工知能、接続性、センサ、能動的係合および小型デバイス使用が含まれる。様々な実施形態では、本発明のモバイルネットワーク705は、様々な異なるデバイスおよび/またはシステムと通信することができる。例えば、モバイルネットワーク705は、着用可能または携帯型電子デバイス720と通信することができる。着用可能/携帯型電子デバイス720は、スマート衣類などの埋め込み可能デバイスを含むことができる。着用可能/携帯型デバイス720は、スマート時計、ならびにスマートジュエリーを含むことができる。着用可能/携帯型デバイス720は、フィットネス監視デバイス、健康および健康監視デバイス、頭部装着型デバイス(例えば、スマート眼鏡)、セキュリティおよび防止システム、ゲームおよびライフスタイルデバイス、スマートフォン/タブレット、メディアプレーヤ、および/またはコンピュータ/コンピューティングデバイスをさらに含むことができる。
【0064】
本発明のモバイルネットワーク705は、ホーム自動化725、自動車用730、ユーザインターフェース735、ライフスタイルおよび/または娯楽740、小売り745、タグおよび/またはトラッカ750、プラットフォームおよび構成要素755、玩具760、および/またはヘルスケア765などの様々なアプリケーションのために、Internet of Things(IoT)センサ715とさらに通信することができる。もちろん、当業者は、本明細書で説明されるものに限定されない、任意のタイプのアプリケーションのための任意のタイプの電子デバイスと通信するそのようなモバイルネットワーク705を企図することができる。
【0065】
統合されたTEE710は、共有コンピューティング環境としてのクラウドコンピューティングなどのIoTシステムおよびモバイルネットワーク705の実装に使用することができ、クラウドユーザおよびクラウドプロバイダの機密コードおよびデータの機密性を保護することができる。
【0066】
本明細書に記載する実施形態は、完全にハードウェアであってもよく、完全にソフトウェアであってもよく、または、ハードウェアおよびソフトウェア要素の両方を含むものであってもよい。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されないソフトウェアで実施される。
【0067】
実施形態は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供する、コンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品を含むことができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを格納、通信、伝搬、またはトランスポートする任意の装置を含むことができる。媒体は、磁気、光学、電子、電磁気、赤外線、または半導体システム(または装置またはデバイス)、または伝搬媒体とすることができる。媒体は、半導体または固体ステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスクおよび光ディスクなどのコンピュータ読み取り可能な記憶媒体を含むことができる。
【0068】
各コンピュータプログラムは、本明細書に記載する手順を実行するために、記憶媒体または装置がコンピュータによって読み取られるときに、コンピュータの操作を構成し制御するために、汎用または特殊目的のプログラム可能コンピュータによって読み取り可能な、機械読み取り可能な記憶媒体または装置(例えば、プログラムメモリまたは磁気ディスク)に実体的に記憶することができる。本発明のシステムはまた、コンピュータプログラムで構成された、コンピュータ読み取り可能な記憶媒体で実施されるものと考えることができ、その場合、構成された記憶媒体は、コンピュータを特定の所定の方法で動作させて、本明細書に記載する機能を実行させる。
【0069】
プログラムコードを記憶および/または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含んでもよい。メモリ要素は、プログラムコードの実際の実行中に採用されるローカルメモリ、バルクストレージ、および実行中にバルクストレージからコードが検索される回数を減らすために少なくとも何らかのプログラムコードの一時記憶を提供するキャッシュメモリを含むことができる。入力/出力またはI/O装置(キーボード、ディスプレイ、ポインティング装置などを含むが、これらに限定されない)は、直接または介在するI/Oコントローラを介してシステムに結合され得る。
【0070】
介在する専用ネットワークまたは公衆ネットワークを介して、データ処理システムを他のデータ処理システムあるいはリモートプリンタまたはストレージデバイスに結合できるようにするために、ネットワークアダプタをシステムに結合することもできる。モデム、ケーブルモデム、およびイーサネット(登録商標)カードは、現在使用可能なネットワークアダプタのタイプの一例に過ぎない。
【0071】
本明細書において、本発明の「一実施形態」又は「一実施形態」とは、その他の変形例と同様に、その実施形態に関連して説明した特定の特徴、構造、特性等が、本発明の少なくとも一実施形態に含まれることを意味するものであり、「一実施形態において」又は「一実施形態において」の語句の出現、並びに本明細書全体の様々な箇所に出現する他の変形例は、必ずしも全て同一の実施形態を意味するものではない。しかしながら、本明細書で提供される本発明の教示を前提として、1つまたは複数の実施形態の特徴を組み合わせることができることを理解されたい。
【0072】
以下の「/」、「および/または」、および「少なくとも1つ」、例えば、「A/B」、「Aおよび/またはB」、および「AおよびBの少なくとも1つ」のいずれかの使用は、第1のリストされた実施例(A)のみの選択、または第2のリストされた実施例(B)のみの選択、または両方の実施例(AおよびB)の選択を包含することが意図されることを理解されたい。さらなる例として、「A、B、および/またはC」、および「A、B、およびCの少なくとも1つ」の場合、このような句は、第1のリストされた実施例(A)のみの選択、または第2のリストされた実施例(B)のみの選択、または第3のリストされた実施例(C)のみの選択、または第1および第2のリストされた実施例(AおよびB)のみの選択、または 第1および第3のリストされた実施例(AおよびC)のみの選択、または第2および第3のリストされた実施例(BおよびC)のみの選択、または3つすべての実施例(AおよびBおよびC)の選択を包含することを意図する。これは、列挙された項目の数だけ拡張することができる。
【0073】
上記は、あらゆる点で例示的かつ例示的であるが、限定的ではないと理解されるべきであり、本明細書に開示される本発明の範囲は、詳細な説明からではなく、むしろ特許法によって許容される全範囲に従って解釈されるような特許請求の範囲から決定されるべきである。本明細書に示され、説明された実施形態は、本発明の例示にすぎず、当業者は、本発明の範囲および精神から逸脱することなく、様々な修正を実施することができることを理解されたい。当業者は、本発明の範囲および精神から逸脱することなく、様々な他の特徴の組み合わせを実施することができる。このように、本発明の態様を、特許法によって要求される詳細および特殊性と共に説明してきたが、特許状によって保護されることが請求され、望まれるものは、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9