(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-27
(54)【発明の名称】セキュアランタイムシステム及び方法
(51)【国際特許分類】
G06F 21/12 20130101AFI20220916BHJP
【FI】
G06F21/12 310
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022503832
(86)(22)【出願日】2020-07-17
(85)【翻訳文提出日】2022-03-18
(86)【国際出願番号】 US2020042472
(87)【国際公開番号】W WO2021011851
(87)【国際公開日】2021-01-21
(32)【優先日】2019-07-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】522024665
【氏名又は名称】アンジュナ セキュリティ インコーポレイテッド
(74)【代理人】
【識別番号】100067736
【氏名又は名称】小池 晃
(74)【代理人】
【識別番号】100192212
【氏名又は名称】河野 貴明
(74)【代理人】
【識別番号】100200001
【氏名又は名称】北原 明彦
(72)【発明者】
【氏名】ミカレフスキー,ヤン
(72)【発明者】
【氏名】ミトルバーグ,ボリス
(72)【発明者】
【氏名】チェン,ジュン
(72)【発明者】
【氏名】チャブラ,ダルジート,シン
(57)【要約】
例示的なセキュアランタイムシステム及び方法が記載されている。1つの実装において、セキュアランタイムシステムは、安全な方法で複数のアプリケーションを実行するように構成される。セキュアランタイムは、ハードウェアデバイスにより定義されたセキュアエンクレーブに関連付けられる。セキュアアプリケーションローダは、セキュアランタイムシステム内にアプリケーションをロードするように構成され、そして、OSブリッジは、アプリケーションにOSサービスを提供するように構成される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
安全な方法で複数のアプリケーションを実行するように構成されたセキュアランタイムと、
前記セキュアランタイム内にアプリケーションをロードするように構成されたセキュアアプリケーションローダと、
前記アプリケーションにOSサービスを提供するように構成されたOSブリッジと、
を含む装置であって、
前記セキュアランタイムが、ハードウェアデバイスにより定義されたセキュアエンクレーブに関連付けられることを特徴とする装置。
【請求項2】
さらに、前記セキュアアプリケーションローダが、ロードされた前記アプリケーションに関連する複数のライブラリをロードするように構成されることを特徴とする請求項1に記載の装置。
【請求項3】
さらに、前記セキュアアプリケーションローダが、分離されて遮蔽された環境内でバイナリ実行ファイルを実行するように構成されることを特徴とする請求項1に記載の装置。
【請求項4】
さらに、前記OSブリッジが、ロードされた前記アプリケーションにより使用されたデータを暗号化するように構成され、暗号化された前記データは前記セキュアランタイム内に記憶されることを特徴とする請求項1に記載の装置。
【請求項5】
前記OSサービスが、複数のシステムコールを含むことを特徴とする請求項1に記載の装置。
【請求項6】
さらに、前記セキュアランタイムが、複数の異なる型のハードウェアデバイスで動作するように構成されることを特徴とする請求項1に記載の装置。
【請求項7】
前記セキュアランタイムが、ロードされた前記アプリケーションに関連する暗号化されたメモリパーティションを生成することを特徴とする請求項1に記載の装置。
【請求項8】
安全な方法で前記複数のアプリケーションを実行することが、前記セキュアエンクレーブ内で前記複数のアプリケーションのそれぞれを実行することを含むことを特徴とする請求項1に記載の装置。
【請求項9】
安全な方法で前記複数のアプリケーションを実行することが、同じ前記セキュアエンクレーブ内で前記複数のアプリケーションの少なくとも2つを実行することを含むことを特徴とする請求項1に記載の装置。
【請求項10】
前記複数のアプリケーションの少なくとも1つが、少なくとも1つのアプリケーションを変更する必要なく、前記セキュアランタイムにより実行されることを特徴とする請求項1に記載の装置。
【請求項11】
前記複数のアプリケーションの少なくとも2つが静的にリンクされ、フォルトハンドラによりインターセプトされるシステムコール命令を直接呼び出すことを特徴とする請求項1に記載の装置。
【請求項12】
前記フォルトハンドラが、どのシステムコールが前記セキュアエンクレーブ内の信頼できるフォルトハンドラに試みられたかを示す信号をデリゲートすることを特徴とする請求項11に記載の装置。
【請求項13】
前記セキュアランタイムが、前記システムコールを第2のシステムコールに置き換えるように構成されることを特徴とする請求項11に記載の装置。
【請求項14】
前記セキュアランタイムが、
システムコール命令が呼び出されると第2のスタックに切替し、
前記第2のスタックを使用してシステムコールサービスを実行し、
アプリケーションに戻る前に再び元のスタックに切替する、
ように構成されることを特徴とする請求項11に記載の装置。
【請求項15】
前記セキュアランタイムが、前記セキュアランタイム内で実行されるアプリケーションが前記アプリケーション自体を他のシステムに認証することを可能にするアプリケーション認証を実装することを特徴とする請求項1に記載の装置。
【請求項16】
特定のアプリケーションの状態が秘密に結び付けられることを特徴とする請求項1に記載の装置。
【請求項17】
前記セキュアランタイムが、前記セキュアエンクレーブ内の前記セキュアランタイムにより生成されたパブリックキーを使用して秘密データを暗号化することにより、前記秘密データをプロビジョニングすることを特徴とする請求項1に記載の装置。
【請求項18】
セキュアアプリケーションローダにより、システムコールインターセプト層をロードし、
前記セキュアアプリケーションローダにより、実行可能及びリンク可能形式/携帯用実行可能形式(ELF/PE)バイナリをロードし、
前記セキュアアプリケーションローダにより、動的にリンクされたライブラリをロードし、
前記セキュアアプリケーションローダにより、エンクレーブを開始し、そして、
前記エンクレーブ内でアプリケーションを開始する、
ことを含むことを特徴とする方法。
【請求項19】
さらに、前記セキュアアプリケーションローダにより、前記エンクレーブ内の実行可能及びリンク可能形式/携帯用実行可能形式(ELF/PE)ローダをロードすることを含むことを特徴とする請求項18に記載の方法。
【請求項20】
さらに、前記セキュアアプリケーションローダにより、前記アプリケーションに関連する複数のライブラリをロードすることを含むことを特徴とする請求項18に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ環境で使用されるセキュアランタイムシステム及び方法に関する。
【背景技術】
【0002】
クラウドベースのコンピュータ環境は、様々なコンピュータデバイス及び企業を保護する為の伝統的なアプローチを変化させた。演算及びデータ記憶活動は遠隔装置により実行されるので、安全性及びプライバシーの問題が発生する。なぜなら、遠隔装置は通常、他の組織により制御され、ローカル装置よりは安全でないからである。
【0003】
既存のシステムは、記憶されたデータを暗号化し、他の装置又はシステムへの通信の前にデータを暗号化する。しかしながら、これらの既存のシステムは一般的に、アプリケーション又は他のプロセスによりデータが使用されている時は、データを暗号化しない。アプリケーション又はプロセスによりデータが使用されている時、データは一般的にランタイム処理の為に復号化される必要がある。この復号化されたデータは、復号化されたデータを無許可ユーザ又は無許可システムに潜在的にさらすことにより、ランタイム中に安全性の問題を提起する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
したがって、ランタイム処理中にデータを保護する為の改良されたアプローチが必要である。
【課題を解決するための手段】
【0005】
本願の特許請求の範囲に記載の装置及び方法を提供する。
【0006】
本開示の非限定的及び非包括的実施形態が、以下の図面を参照にして記載されており、他に特定されていない場合、様々な図面を通して同様の符号は同様の部品を指している。
【図面の簡単な説明】
【0007】
【
図1】本開示のシステム及び方法が実装された例示的環境を示すブロック図である。
【
図2】セキュアランタイム構造の実施形態を示す図である。
【
図3】セキュアランタイム構造を実装するホストOSの実施形態を示す図である。
【
図4】セキュアランタイムにおいてアプリケーションを設定する方法の実施形態を示す図である。
【
図5】セキュアランタイムにおいてアプリケーションを実行する方法の実施形態を示す図である。
【
図6】同じデータにアクセスする複数のセキュアエンクレーブ及び複数のマシンの実施形態を示すブロック図である。
【
図7】コンピュータデバイスの例示的なブロック図を示す図である。
【発明を実施するための形態】
【0008】
以下の開示において、開示の一部を形成し、開示が実行される特定の実装の例として示されている、添付の図面を参照する。他の実装を使用することもでき、本開示の範囲から逸脱することなく構造変更を実行することもできると理解される。明細書内に記載の「一実施形態」、「実施形態」、「例示的実施形態」等は、記載されている実施形態は特別な構成、構造、又は特徴を含むことを示すが、全ての実施形態が特別な構成、構造、又は特徴を含む必要は無い。さらに、そのような表現は、同じ実施形態のことを指している必要は無い。さらに、特別な構成、構造、又は特徴が1つの実施形態に関連して記載されている場合、明示されていてもいなくても、当業者の知識の範囲内で、そのような構成、構造、又は特徴を他の実施形態と関連させることもできる。
【0009】
ここに開示のシステム、装置、及び方法の実装は、例えば、ここに記載の1以上のプロセッサ及びシステムメモリのような、コンピュータハードウェアを含む専用又は汎用コンピュータを有する又は使用する。本開示の範囲内の実装は、コンピュータ実行可能命令及び/又はデータ構造を記憶又は搬送する為の物理的及び他のコンピュータ可読媒体を含むこともできる。そのようなコンピュータ可読媒体は、汎用又は専用コンピュータシステムによりアクセスすることができる任意の利用可能な媒体であることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、コンピュータ記憶媒体(装置)である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は、伝送媒体である。したがって、限定的ではない例として、本開示の実装は、少なくとも2つの明確に異なる種類のコンピュータ可読媒体、即ち、コンピュータ記憶媒体(装置)及び伝送媒体を含むことができる。
【0010】
コンピュータ記憶媒体(装置)は、RAM、ROM、EEPROM、CD-ROM、ソリッドステートドライブ(SSD)(例えば、RAMベース)、フラッシュメモリ、相変化メモリ(PCM)、他の型のメモリ、他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、又は、コンピュータ実行可能命令又はデータ構造の形の所望のプログラムコード手段を記憶する為に使用され、汎用又は専用コンピュータによりアクセス可能な任意の他の媒体を含む。
【0011】
ここに開示の装置、システム、及び方法の実装は、コンピュータネットワーク上で通信することができる。「ネットワーク」は、コンピュータシステム及び/又はモジュール及び/又は他の電子機器間の電子データの伝送を可能にする1以上のデータリンクとして定義される。ネットワーク上又はコンピュータへの他の通信接続(ハードワイヤ、ワイヤレス、又はハードワイヤ及びワイヤレスの組み合わせ)上で情報が伝送又は提供される時、コンピュータは、その接続を伝送媒体とみなす。伝送媒体は、ネットワーク及び/又はデータリンクを含むことができ、コンピュータ実行可能命令又はデータ構造の形の所望のプログラムコード手段を搬送する為に使用することができ、そして、汎用又は専用コンピュータによりアクセスすることができる。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【0012】
コンピュータ実行可能命令は、例えば、プロセッサにより実行されると、汎用コンピュータ、専用コンピュータ、又は専用処理装置に特定の機能又は機能群を実行させる命令及びデータを含む。コンピュータ実行可能命令は、例えば、アセンブリ言語又はソースコード等のバイナリ、中間形式命令であることができる。主題は構造的特徴及び/又は方法論的行為を特定する言語で記載されているが、添付の特許請求の範囲に定義されている主題は、ここに記載の特徴又は行為に限定される必要は無いと理解される。むしろ記載されている特徴及び行為は特許請求の範囲を実装する例示的な形として開示されている。
【0013】
当業者は、本開示は様々な型のコンピュータシステム構成を有するネットワークコンピュータ環境内で実行することができると理解し、コンピュータシステム構成には、パソコン、デスクトップパソコン、ノートパソコン、メッセージプロセッサ、携帯用装置、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、タブレット、ポケットベル、ルータ、スイッチ、様々な記憶装置等が含まれる。本開示は、ローカル及び遠隔コンピュータシステムがネットワークを通して(ハードワイヤデータリンク、ワイヤレスデータリンク、又はハードワイヤ及びワイヤレスデータリンクの組み合わせにより)リンクされて両システムがタスクを実行する分散システム環境においても実行することができる。分散システム環境において、プログラムモジュールは、ローカル及び遠隔メモリ記憶装置の両方に配置することができる。
【0014】
さらに、適切な場合、ここに記載の機能は、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントの1つ以上で実行することができる。例えば、1以上の特定用途向け集積回路(ASIC)は、ここに記載のシステム及び処理手続の1つ以上を実行するようにプログラミングされることができる。本明細書及び特許請求の範囲を通して、特定の用語は、特定のシステムコンポーネントを参照して使用されている。当業者は、コンポーネントは別の名前で呼ばれることができると理解する。この文書は、名前は異なるが機能は同じであるコンポーネント間を区別することは意図していない。
【0015】
本開示の少なくともいくつかの実施形態は、任意のコンピュータ利用可能媒体上に記憶された(例えば、ソフトウェアの形の)そのようなロジックを有するコンピュータプログラム製品に向けられている。そのようなソフトウェアは、1以上のデータ処理装置で実行されると、装置をここに記載されているように動作させる。
【0016】
ここに記載のシステム及び方法は、1以上のアプリケーション及びこれらのアプリケーションに関連するデータの安全性を提供する。いくつかの実施形態において、アプリケーション及びそのデータの安全性は、アプリケーションが存在するレイヤの安全性に依存する。
【0017】
いくつかの実装において、アプリケーションは、ハイパーバイザにより管理される仮想マシン(VM)又はコンテナ内で実行される。ハイパーバイザは、クラウドのプロバイダの物理マシン内で動作するホストオペレーティングシステム(OS)上で動作する。このタイプの実装において、アプリケーションは、仮想マシン又はコンテナ内で脅威にさらされる。アプリケーションはまた、ハイパーバイザ、ホストOS、及び物理マシンを含むITスタックを信頼しなければならない。例えば、アプリケーションは、仮想マシンへのrootアクセス、ハイパーバイザプロセスへのアクセス、(ハイパーバイザへのアクセスを可能にする)ホストOSへの特権アクセス、又は物理マシンへの物理アクセスを得た無許可ユーザにさらされ、それにより、無許可ユーザが、顧客のタスクを実行しているプロセスにアクセスし、そのメモリ空間にアクセスし、そして、処理済のデータにアクセスすることが可能になる。
【0018】
ここに記載のシステム及び方法は、信頼を確立及び検証する為に必要なプリミティブを提供することにより、アウトソーシング又は信頼のないインフラストラクチャに信頼を確立する。特に、記載のセキュアランタイムシステム及び方法は、信頼できる実行環境(trusted execution environment)(TEE)を作成することにより、ランタイム環境を保護する。これらのシステム及び方法は、無許可ユーザが保護されたデータを見ること又はデータを変更することを防止することにより、プライバシーを提供する。
【0019】
ここに記載のシステム及び方法は、無許可ユーザ又はシステムがアプリケーション、アプリケーションコード、又はアプリケーションに関連するデータにアクセスすることを防止するセキュアランタイムを提供する。さらに、セキュアランタイムは、無変更のアプリケーションが信頼できる実行環境(TEE)を利用することを可能にする。このことにより、信頼できる実行環境(TEE)から利益を得る為にアプリケーションを特異的に変更する必要がなくなる。記載のシステム及び方法は、無許可ユーザ又はシステムがアプリケーションの実行を不正に変更することを防止する。例えば、クラウドベースの環境において、遠隔の顧客はセキュアランタイム内に機密作業負荷を展開することができ、そして、遠隔の顧客はセキュアチャネルを介してセキュアランタイムと通信する。セキュアチャネルは通常、認証されて暗号化される。この構成は信頼のレベルを提供し、それにより、遠隔の顧客はセキュアランタイムと通信していることを確認することができる。さらに、この構成は、アプリケーション又はデータの実行を不正に変更することを防止する。
【0020】
いくつかの実施形態において、記載のシステム及び方法は、ハードウェア製造業者により多くのプロセッサ内に導入されている、セキュアエンクレーブを使用してアプリケーション及びデータの安全性を提供する。例えば、いくつかのセキュアエンクレーブは、同じ物理マシン上で実行されるが、ホストから分離された環境内でアプリケーションを実行することを可能にする。いくつかの実装において、セキュアエンクレーブは、メモリの暗号化されたパーティションである。特定のセキュアエンクレーブは、アプリケーション及びその機密データを保護する為に、ハードウェアプロセッサ内のアプリケーションの分離及びハードウェアの信頼の基点(root-of-trust)を使用する。セキュアエンクレーブはアプリケーションの実行をサポートし、それにより、そのコンテンツ及びデータは他のユーザ、システム、又はエンティティによりアクセスできない。セキュアエンクレーブは、ゲストOS、ハイパーバイザ、又はホストOS上のユーザがアプリケーション又はデータにアクセスすることを阻止する。したがって、仮想マシン又はホストの周囲に安全な境界を作成する代わりに、セキュアエンクレーブは、明確なハードウェア保証を利用している個別のアプリケーションの周囲に安全な境界を提供する。
【0021】
いくつかの実施形態において、ハードウェア製造業者により提供されるセキュアエンクレーブは、複雑な設計の詳細及び暗号法の概念の相当な理解が要求される。特定の状況において、既存のアプリケーションがセキュアエンクレーブを使用する為に、再設計及びリファクタリングが必要になる。
【0022】
いくつかの実施形態において、ここに記載のシステム及び方法は、API(アプリケーション・プログラマブル・インタフェース)(Application Programmable Interface)を使用して低レベルの詳細を取り除くことにより、セキュアエンクレーブの使用を簡易化する。これらのシステム及び方法は、システム(例えば、企業)が、遠隔セキュアエンクレーブの内部を変更することなく、既存のアプリケーションを安全に実行することを可能にする。ここに記載のセキュアランタイムシステムは、パブリッククラウド環境内での安全でプライベートな演算の為のプラットフォームを提供する。例えば、セキュアランタイムシステムは、アプリケーション及び関連データの秘密性及び整合性を維持したまま、企業がパブリッククラウドインフラストラクチャ上でアプリケーションを実行することを可能にする。したがって、パブリッククラウドインフラストラクチャ上でアプリケーションを実行するエンティティは、アプリケーション及びデータが安全であることを知っているので、別の方法では信頼できないパブリッククラウドを信頼することができる。
【0023】
図1は、本開示のシステム及び方法が実装された例示的環境100を示すブロック図である。遠隔システム102は、データ通信ネットワーク116を介して、1以上の認定ユーザ118、1以上の無許可ユーザ120、及び1以上のコンピュータシステム122に接続される。データ通信ネットワーク116は、任意の通信プロトコルを使用する任意の型のネットワークトポロジを含む。その上、データ通信ネットワーク116は、2以上の通信ネットワークの組み合わせを含むことができる。いくつかの実施形態において、データ通信ネットワーク116は、セルラー通信ネットワーク、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、又は任意の他の通信ネットワークを含む。
【0024】
コンピュータシステム122は、遠隔システム102と相互作用する任意の型のコンピュータデバイスを含む。いくつかの実施形態において、遠隔システム102は、コンピュータシステム122の代わりに様々な演算を実行する為に、コンピュータシステム122によりアクセス可能なクラウドベースのコンピュータシステムであることができる。いくつかの実施形態において、遠隔システム102は、セキュアランタイム104及び静止中のデータを記憶するデータ記憶装置108を含む。遠隔システム102は、各々が1以上のオペレーティングシステム110及び1以上のハイパーバイザ112を実装する1以上のサーバ114によりホストされた(サーバ上に実装された)1以上の仮想マシンを含むこともできる。
【0025】
セキュアランタイム104は、パブリッククラウド環境内での安全でプライベートな演算の為のプラットフォームを提供する。セキュアランタイム104は、ここに記載のランタイムモジュール106を含むことができる。いくつかの実施形態において、セキュアランタイム104は、ホスト上の個別のセキュアエンクレーブ内で実行されているランタイムサーバアプリケーション(及び関連データ)を保護する。セキュアランタイム104は、アプリケーションに関連するメモリをホスト上で実行されている他のコンポーネント及びプロセスから分離することにより、メモリの分離も提供する。この分離は、オペレーティングシステムからメモリを分離することも含む。いくつかの実施形態において、特定のアプリケーションに関連するデータは、データが暗号化されていない場合、セキュアエンクレーブ内に留まる。セキュアエンクレーブの外部に通信される前にデータは常に暗号化される。また、他のシステム及びユーザは、ホストシステムへのrootアクセス又は物理アクセスを有していても、メモリにはアクセスできない。
【0026】
いくつかの実施形態において、セキュアランタイム104は、期待コードを期待される信頼できる実行環境内で実行されると有効にすることにより安全性を提供する、バックエンドサーバアプリケーションへの信頼できるチャネルも確保する。また、遠隔認証(remote attestation)の使用は、コンピュータシステム122及び企業に、顧客は遠隔システム102と直接通信しており、他のエンティティ、システム、又はユーザはアプリケーション及びその関連データにアクセスできない、という暗号保証(cryptographic assurance)を提供する。
【0027】
図2には、セキュアランタイム構造200の実施形態が図示されている。セキュアランタイム202は、任意の数のアプリケーション204、206、及び208を含む。いくつかの実施形態において、各アプリケーション204、206、及び208は分離したエンクレーブ内で実行される。他の実施形態において、2以上のアプリケーション204、206、及び208が同じセキュアエンクレーブ内で実行される。共有メモリを使用し、位置独立コード(PIC)としてコンパイルされるアプリケーションの為の特定の実装において、記載のシステム及び方法は、単一のセキュアエンクレーブ内で2つのプロセスを実行することができる。セキュアランタイム202は、(「ルータ」とも呼ばれる)セキュアアプリケーションローダ210及びOSブリッジ212も含む。いくつかの実施形態において、セキュアアプリケーションローダ210は、分離されて遮蔽された環境内でバイナリ実行ファイルを実行することができる。セキュアアプリケーションローダ210は、各アプリケーションが実行の為に依存する全てのライブラリに沿って、セキュアランタイム202内に各アプリケーション204~208をロードすることができる。
【0028】
分離層214が、セキュアランタイム202及び信頼できないホストOS216の間に配置される。この分離層214は、信頼できないホストOS216からアプリケーション204、206、及び208を分離する為に機能する。
図2においては、分離層214は分離して図示されているが、分離層214は、特定のハードウェアプロセッサにより提供される基盤となるハードウェア又は仮想化技術を表している。分離層214は、特定のエンティティである必要は無い。その代わりに、分離層214は、アプリケーションがエンクレーブ内で実行され、アプリケーションが任意の他の実行コンテンツから分離される方法でアプリケーションをロードする技術により提供される分離を表している。いくつかの実施形態において、分離層214は、ハードウェアグレードの安全性及びプライバシーを提供するハードウェア機能に基づいている。例示的なハードウェア機能は、SGX(ソフトウェアガードエクステンションズ)(Software Guard Extensions)及びSEV(セキュア暗号化仮想化)(Secure Encrypted Virtualization)を含む。
【0029】
ここに記載されているように、各アプリケーション204~208は、カーネルにはアクセス不可能な(不可視の)分離された暗号化メモリ領域を作成することができる。いくつかの実施形態において、ここに記載のシステム及び方法は、各アプリケーション204~208の為の小カーネルを作成し、各アプリケーションが必要とするOSサービスを提供するが、セキュアエンクレーブ内で実行される。例えば、OSブリッジ212は、アプリケーション204~208にOSサービスを提供することができる。これらのOSサービスは、ディスク又は他の記憶システムへの書き込み、ネットワーク接続の開始、他の型のシステムコールを含むことができる。さらに、OSブリッジ212は、セキュアランタイム202内でアプリケーション204~208により使用されるデータ及び他の情報を暗号化することができる。
【0030】
いくつかの実施形態において、セキュアランタイム構造200は、クラウドベースのバックエンドシステムとして使用され、例えば、コンピュータシステム122及び遠隔システム102間の作業負荷のシームレスな移行を提供する。特定の実装において、セキュアランタイム構造200は、高レベル言語ランタイムをサポートする1以上の「エンクレーブされた」アプリケーションを含み、上記アプリケーションは、データ処理の一般的機能及び簡易化を提供する。このことは、クラウドベースのシステムのオペレータがコンテンツ又は他のデータにアクセスすることを防止する方法で、セキュアウェブサーバが機密コンテンツを直接認定ユーザに供給することを可能にする。
【0031】
ここに記載されているように、セキュアランタイム202は、機密アプリケーションがパブリッククラウド内の遠隔位置で安全に実行されることを可能にする。セキュアランタイム202は、ハードウェアセキュリティモジュールへの依存度を最小限にしたまま、厳密なサーバセキュリティゾーンの必要性を回避することにより、柔軟性を提供する。いくつかの実施形態において、セキュアランタイム202は、複数のセキュアエンクレーブ間のセキュア通信、リソース割当、及びモニタリングを含む、無変更のアプリケーションの安全な展開を可能にする。
【0032】
いくつかの実装において、セキュアランタイム202は、セキュアエンクレーブ内でアプリケーションを実行することにより、「ゼロデイエクスプロイト(zero-day exploits)」を防ぐ。これらのアプリケーションは、拡大された特権を有してホストに浸入するマルウェアから保護される。したがって、セキュアランタイム202は、仮想マシン又はホストの周りの大きな境界線の代わりに、個別の実行アプリケーションの周りに境界線を提供する。
【0033】
特定の実施形態において、セキュアランタイム202は、安全性及び運用の柔軟性を通して、プライベートにホストされたクラウド及びデータセンタに利益を提供する。例えば、セキュアランタイム202は、遠隔顧客がセキュアマイクロサービスと直接通信することを可能にし、重大な運用上の課題を減少する。いくつかの実施形態において、セキュアランタイム202は、過度にプロビジョニングされた又は活用されていないサーバインフラストラクチャを結果的にもたらす、厳密なセキュリティゾーンの必要性も回避する。ここに記載のシステム及び方法は、より低いITインフラストラクチャ及び運用コストの最適サーバ利用を有する柔軟なサーバ配備を可能にする。
【0034】
いくつかの実施形態において、ここに記載のシステム及び方法は、セキュアエンクレーブをサポートする任意のハードウェアデバイスで動作することができる。これらのシステム及び方法は、任意の製造業者の任意のハードウェアデバイスで動作することができる共通のAPIを提供する。共通のAPIの使用は、セキュアエンクレーブ内で1以上のアプリケーションの実行をサポートするシステムの作成及び管理を容易にする。各型のハードウェアデバイスに関連する特定の技術を学習するのではなく、共通のAPIは、デベロッパ、システム管理者、又は他の人又はエンティティが全てのハードウェアデバイス上で機能する単一のAPIを学習することを可能にする。
【0035】
いくつかの実施形態において、複数のアプリケーションに提供される共通のAPIは、システムコールAPI等のネイティブOS APIである。システムコールは、バイナリ実行ファイルにより使用され、バイナリ実行ファイルを実行するOSからサービスを要求する。ここに記載のシステム及び方法は、これらのシステムコールをインターセプトし、OSまで通過させるか、又は要求される機能のタイプに依存する特別な方法で処理する。例示的な機能はファイル操作を含み、ランタイムを使用するユーザがアプリケーションに対して透過的な方法でアプリケーションによりアクセス又は作成された特定のファイルを暗号化/復号化することを選択することができる。他の例示的な機能はネットワーク通信であり、多くのアプリケーションはそれらのネットワーク通信を暗号化する為に組み込まれたサポートを提供しない。記載のシステム及び方法は、ソケット/パイプ上で通信をインターセプトし、ユーザにより要求された場合、実行中に暗号化する。最後に、アプリケーションはしばしば、エントロピーの信頼できるソースを必要とし、オペレーティングシステムを参照する。しかしながら、不正アクセスを受けたオペレーティングシステムは、意図的に低いエントロピー結果を提供する。したがって、ランタイムセキュリティソリューションは、信頼できる実行環境により生成された高エントロピーランダム入力を提供する。
【0036】
仮想化環境において、システムコールは、ハイパーバイザによりインターセプトされ、ゲスト仮想マシン及びホスト上で実行されるハイパーバイザの一部の間のインタフェースであるハイパーコールを介してホストOSに伝送される。これらの仮想化環境において、ここに記載のシステム及び方法は、ハイパーバイザ内でアプリケーションを実行することによりシステムコールをインターセプトし、内部的に処理するか又はハイパーバイザまで通過させるゲストカーネルによりトラップされた特権的命令としてSYSCALL命令を処理する。
【0037】
いくつかの実施形態において、システムコールをインターセプトすることにより、記載のシステム及び方法は、異なるハードウェアタイプ又は異なるハイパーバイザプラットフォーム上でアプリケーションを実行する為の特別な適応を必要としない。
【0038】
システムコールをインターセプトする為に任意の数の方法を使用することができる。例えば、システムコールは、多くのLinuxアプリケーションにより使用されているライブラリであるglibcのパッチバージョンを使用してインターセプトされる。他の方法は、エンクレーブ内に由来するシステムコールをインターセプトする為にSIGILL信号を処理することを含む。
【0039】
いくつかの実施形態において、システムコールは、エンクレーブのコンテキスト内では違法であり、実行フォルトを引き起こし、それによりフォルトハンドラ(例えば、ここに記載のシステム及び方法に関連するフォルトハンドラ)によりインターセプトされる。例えば、アプリケーションは静的にリンクされ、システムコール命令を直接呼び出すことができるので、パッチされたlibcとの動的リンクは、実行フォルトを使用してシステムコール命令を直接インターセプトすることに置き換えられる。フォルトハンドラは、どのシステムコールがエンクレーブ内の信頼できるフォルトハンドラに試みられたかを示す信号をデリゲートする。この信頼できるフォルトハンドラは、システムコールのタイプによってシステムコールを処理する。例えば、信頼できるフォルトハンドラは、1)OSにシステムコールをデリゲートし、又は、2)OSに向かってエンクレーブから出る前にデータを暗号化する。
【0040】
いくつかの実施形態において、記載のシステム及び方法は、システムコールインターセプト最適化を実装する。フォルトに基づくインターセプトの1つの方法は、特定の性能上のペナルティを引き起こす。なぜなら、エンクレーブから出ることを引き起こすからである。このことはランタイムにおけるバイナリ再書き込みにより最適化され、元のシステムコール命令を、実行を特定のシステムコール処理コードにリダイレクトする命令セットであるトランポリンに置き換える。このアプローチは、システムコール命令を呼び出すコンパイラ又はlibcライブラリへの変更を必要とする。例えば、Go言語の場合、Goコンパイラソースコードは各SYSCALL命令後に11NOP命令を含むように変更され、ここに記載のシステム及び方法により実行されるバイナリ再書き込みの為の空き容量を残す。標準libcライブラリにリンクされた動的リンクアプリケーションの場合、システム及び方法は、各SYSCALL命令後にNOPを含むことにより、同様の方法でGLIBCを変更する。このアプローチは、システム及び方法がコードへの最小限の変更によりGLIBC又はGoの複数バージョンをサポートすることを可能にする簡易パッチを結果的にもたらす。
【0041】
ここに記載の環境の1つ内で実行されるアプリケーションをオペレーティングシステムが適切に模倣する為に、記載のシステム及び方法は、スタック管理に関して同じセマンティクスを示す。通常アプリケーションがシステムコールを呼び出す時、システムコールが戻るまでスタックが変更されないと期待することができる。しかしながら、いくつかの既存のライブラリオペレーティングシステムは、この詳細を適切に処理できず、結果的に失敗する。適切なセマンティクスを提供する為に、記載のシステム及び方法は、1)システムコール命令が呼び出されると異なるスタックに切替し、2)分離したスタック上でシステムコールサービスを実行し、3)アプリケーションに戻る前に再び元のスタックに切替する。
【0042】
図3は、セキュアランタイム構造300を実装するホストOSの実施形態を示す図である。ゲストOS302は、セキュアランタイム304内で実行される第1のアプリケーション306を有するセキュアランタイム304を含む。第2のアプリケーション308は、ゲストOS302内で実行される。
図3に図示されているように、アプリケーション306はセキュアランタイム304内で実行され、したがって、セキュアランタイム304内で実行されていない他のアプリケーション308によりアプリケーション306のデータにアクセスする為の悪意のある試みから保護される。
【0043】
図3の例において、ハイパーバイザ310はゲストOS302に接続される。さらに、信頼の基点312が、ハードウェアコンポーネント又はデバイス314に関連付けられる。信頼の基点は、ハードウェア314の信頼できるコンピュータモジュール内の関数又はコードのセットであり、OSにより常に信頼される。
図3の例は、信頼の基点312がハードウェア314の製造業者により提供されたセキュアエンクレーブの構成を示している。仮想エンクレーブとして構成される他の実施形態において、信頼の基点312はハイパーバイザ310に関連付けられる。
【0044】
図4は、セキュアランタイムにおいてアプリケーションを設定する方法400の実施形態を示す図である。まず、セキュアアプリケーションローダ(例えば、
図2のセキュアアプリケーションローダ210)が、OSブリッジ(例えば、
図2のOSブリッジ212)内のシステムコールインターセプト層をロードする(402)。セキュアアプリケーションローダが、エンクレーブ内のELF/PE(実行可能及びリンク可能形式/携帯用実行可能形式)(Executable and Linkable Format/Portable Executable)ローダもロードする(404)。方法400は続いて、セキュアアプリケーションローダがELF/PEバイナリをロードする(406)。セキュアアプリケーションローダがさらに、動的リンク(共有)ライブラリ(DLL/so(動的リンクライブラリ/共有オブジェクト))をロードする(408)。その後、セキュアアプリケーションローダが、エンクレーブを開始し(410)、セキュアランタイム又はエンクレーブ内でアプリケーションを開始する(412)。
【0045】
いくつかの実施形態において、エンクレーブコンテンツをロードするローダがセキュアエンクレーブの外部に配置される。この時点で、アプリケーションは実行の準備が出来ていない。なぜなら、リンク、再配置、及びローダにより実行される全ての作業がまだ実行されていないからである。これらの活動を実行する為に、信頼できるローダがセキュアエンクレーブ内にロードされる。信頼できるローダは、アプリケーションバイナリを取り込み、オペレーティングシステムローダと同様の方法でロードする。このことは、記載のシステム及び方法がセキュアエンクレーブ内に標準ELF/PEバイナリをロードすることを可能にし、(毎回異なる可能性がある)ロード後のメモリ内のコード及びデータの最終的レイアウトとは独立して評価及び認証される。
【0046】
図5は、セキュアランタイムにおいてアプリケーションを実行する方法500の実施形態を示す図である。まず、セキュアランタイムがアプリケーション(例えば、
図2のアプリケーション204~208)を実行する(502)。アプリケーションがフォルトハンドラにシステムコールを送信し(504)、その後、フォルトハンドラがセキュアランタイムにシステムコールを通信する(506)。セキュアランタイムが受信したシステムコールを処理し、システムコール結果を生成する(508)。続いて、セキュアランタイムがシステムコール結果をアプリケーションに戻す(510)。
【0047】
いくつかの実施形態において、フォルトハンドラには2つの部分がある。まず、フォルトはエンクレーブ外のフォルトハンドラを呼び出すという結果をもたらす。このハンドラは、信頼できるフォルトハンドラとして効果的に機能する関数を呼び出してセキュアエンクレーブ内で実行を再開することができるが、直接呼び出すことはできない。なぜなら、ハードウェアプロセッサは信頼できるフォルトハンドラをサポートしないからである。他の状況において、フォルトハンドラは完全にセキュアエンクレーブの内部にある。
【0048】
いくつかの実施形態において、記載のシステム及び方法は、アプリケーションが全ての必要OSサポートを有するように、アプリケーションにより使用された全てのシステムコールをサポートしてシステムコールを正しく処理することにより、基盤となるOSをエミュレートする。
【0049】
いくつかの実施形態において、機密データのプロビジョニングは、セキュアエンクレーブ内のセキュアランタイムにより生成されたパブリックキーを使用してデータを暗号化することにより実行される。対応するパブリックキーは、エンクレーブ内に由来しマシン及びアプリケーション識別子の両方に結び付けられた対称キーを使用してシールされる。
【0050】
図6は、同じデータにアクセスする複数のセキュアエンクレーブ及び複数のマシンの実施形態600を示すブロック図である。例えば、第1のマシン602は第1のセキュアエンクレーブ608を有し、そして第2のマシン604は第2のセキュアエンクレーブ612を有する。いくつかの実施形態において、第1のマシン602及び第2のマシン604は、プロセッサ、コンピュータデバイス、又は、セキュアエンクレーブを実装可能な任意の他のデバイス又はシステムである。
図6に図示されているように、第1のマシン602は関連するパブリックキー610を有し、そして第2のマシン604は関連するパブリックキー614を有する。
【0051】
システム又はデバイス606は顧客616を含み、第1のマシン602及び第2のマシン604と通信する。
図6に図示されているように、第1のマシン602及び第2のマシン604の両方は、システム又はデバイス618上のデータ620にアクセスすることができる。システム/デバイス606及び618は、任意の型のプロセッサ、コンピュータデバイス等であることができる。
【0052】
図6の実施形態は、データ暗号化に間接参照の付加的レベルを導入する。データを暗号化しRSAパブリックキー(例えば、RSA-KEM)を使用してそれ自体を暗号化するワンタイムランダムキーを使用する代わりに、
図6の実施形態は、複数のセキュアエンクレーブ(例えば、第1のセキュアエンクレーブ608及び第2のセキュアエンクレーブ612)に同一の暗号化キーをプロビジョニングする。複数のセキュアエンクレーブは、同じマシン上の異なるセキュアエンクレーブ、異なるマシン上の同様のセキュアエンクレーブ、又は異なるマシン上の異なるセキュアエンクレーブであることができる。同一の暗号化キーは全ての異なるセキュアエンクレーブによりエクスポート及び認証されたパブリックキーの下でキーを暗号化する。
【0053】
いくつかの実施形態において、記載のシステム及び方法は、ビザンチン耐故障(BFT)(Byzantine Fault Tolerant)プロトコルを実装する。BFTは、ピアツーピアネットワーク内に攻撃者が存在していても誠実な加入者は同じ状態を見れることを保証する分散プロトコルのプロパティである。ここに記載のシステム及び方法は、認証を標準トランスポート層セキュリティ(TLS)認証内に統合し、特定ソースコードを変更することなくノードのネットワークを実行することを可能にする。
【0054】
いくつかの実施形態において、記載のシステム及び方法は、アプリケーション自体をアプリケーションと相互作用する遠隔システム等の特定システムに認証することを可能にするアプリケーション認証を使用する。特定の実装において、システム及び方法は、TLSを使用するアプリケーション認証に使用される特定の秘密をプロビジョニングする。例えば、ランタイムは、非対称暗号化キーペアを生成するコマンドライン引数により実行できる。プライベートキーは、同じマシン上の同じエンクレーブにのみアクセス可能であるように記憶させる。このことは、AES-GCM(高度暗号化標準-ガロア/カウンターモード)(Advanced Encryption Standard-Galois/Counter Mode)認証付暗号を使用するシールキーによりプライベートキーを暗号化することにより達成される。エンクレーブが開始された後にキー導出が行われるので、記載のシステム及び方法は、同じエンクレーブ(ランタイム+アプリケーション+構成の組み合わせ)のみが同じシールキーを導出し、持続的に記憶されたプライベートキーを復号することができることを保証するMRENCLAVEポリシーの下でシールキーを導出することができる。暗号化されたプライベートキーは、任意の記憶装置内に持続的に記憶することができる。パブリックキーは平文の出力であり、そのエンクレーブによってのみ複合することができるデータを暗号化する為に任意の顧客が使用することができる。
【0055】
開始時に、ランタイムはプライベートキーを検索することを試み、そのようなファイルが存在した場合、対称シールキーを使用して暗号化することを試みる。プライベートキーの検索が成功した場合、顧客からの機密入力データ及び構成を復号する為に使用するデータ復号化キーとしてエンクレーブ内に記憶される。
【0056】
いくつかの実施形態において、パブリックキーハッシュは、認証サービスを使用して、又はハードウェアベンダにより提供されたパブリックキーを使用して検証することができる認証引用の一部としてのカスタムデータとして含まれる。ランタイムによるパブリックキー出力が認証引用内に含まれる値にハッシュするかを検証することにより、パブリックキーの信頼性の検証が可能になる。さらに、対応するプライベートキーは、認証引用を生成したエンクレーブのみにアクセス可能である。
【0057】
同じ組織により展開されている複数のアプリケーション、又は展開されているアプリケーションの新バージョンによるデータへのアクセスを可能にする為に、システム及び方法は、データをプロビジョニングする代替方法を提供する。例えば、事前に生成されたRSAキーに加えて、ランタイムは第2のRSAキーを生成する。システム及び方法はパブリックキーを出力し、MRSIGNERポリシーを使用して対応するプライベートキーをシールし、そして任意の記憶装置内に持続的に記憶する。
【0058】
いくつかの実施形態において、ここに記載のシステム及び方法は、接続している顧客にサービス認証を提供する。システム及び方法は、セキュアエンクレーブ内のセキュアランタイム内で実行されている認定サービスと通信していることを顧客に証明する。
【0059】
いくつかの実施形態において、セキュアエンクレーブ内でアプリケーションを実行している時、システム及び方法は、(セキュアエンクレーブ内で実行される)特定のアプリケーションのみが顧客の認証を成功させることができることを保証する。例えば、システム及び方法は、以下の安全保障を提供することができる。
1.サービスの正しいバージョンと通信する。
2.ここに記載のセキュアランタイムの最新バージョンによりサービスが保護されることを確実にする。
3.セキュアエンクレーブシステムの最新バージョンがバックエンド上で使用されることを確実にする。
【0060】
特定の実装において、システム及び方法は、ハードウェアにより保護されたキー導出及びセキュアエンクレーブのシール性を使用し、ここに記載のセキュアランタイムで実行されるサービスインスタンスのみが顧客との信頼確立を成功させることができる。システム及び方法は、PKI(パブリックキーインフラストラクチャ)(Public Key Infrastructure)に依存して、顧客が認証されて保護されたサービスインスタンスのみを信頼することを確実にする。いくつかの実施形態において、キーペアが生成され、パブリックキーが顧客に(X.509証明の形で)割り当てられる。顧客がサービスへのTLS接続を開始した時、パブリックキーを使用してサービスを認証する。認証の成功は、他方のサービスが対応するプライベートキーにアクセスすることを保証する。したがって、記載のシステム及び方法は、サービスがセキュアエンクレーブの最新バージョン内のセキュアランタイムの最新バージョンにより実行され、セキュアエンクレーブの最新バージョンがプライベートキーにアクセスできることを確実にする。TLSプライベートキー等の機密事項が公開されないこと確実にする為に、システム及び方法は、機密事項が本来の目的の為だけにアクセスされることを強制できる。例えば、ここに記載のシステム及び方法は、異なるファイル役割の為の分離した暗号化キーを有することができる。
【0061】
記載のシステム及び方法は、静止中のデータと同様にメモリ内状況の両方においてデータベースを保護しながら、セキュアランタイムを使用してデータベース(又はデータベースサービス)を実装する為に使用することができる。このことは、記憶装置バックエンドの読込と同様にデータベース上のメモリダンプ攻撃を防止する。セキュアエンクレーブ内でデータベース(又はデータベースサービス)全体を実行することにより、システム及び方法は、顧客側でデータの復号化を必要とし、典型的にクエリエンジンがデータを参照することを必要とする複雑なクエリにはより適していない記録ベースの暗号化と比較して、ストアドプロシージャの実行及び複雑なクエリの使用を可能にする。
【0062】
記載のシステム及び方法は、サービスメッシュの実装に使用することができる。サービスメッシュ内の共通使用コンポーネントは、アプリケーションにTLS終了を提供するサイドカープロキシである。例には、LyftによるEnvoy及びHashicorpによるConsulが含まれる。これらのサイドカープロキシは、TLS証明に対応するプライベートキーへのアクセスを要求する。敵対者がこれにアクセス可能である場合、プライベートキーは攻撃者が不正サービスに偽の認証を実行することを可能にする。ここに記載のシステム及び方法は、サイドカープロキシ及びファイルがTLSプライベートキーを含むrootレベルの攻撃者に対して、実行中及び停止中の保護を提供する。
【0063】
記載のシステム及び方法は、ブロックチェーン技術及び環境にも有用である。ブロックチェーンは、署名キーの所有を通して資産を管理するユーザ又は管理者サービスにより承認された署名付取引を含む。(それ自体がプライベートキーを含むか、又はキーを記憶するハードウェアセキュリティモジュールに接続されてアクセスを許可された)取引に署名するホストへの敵対的アクセスは、これらの資産/暗号通貨の盗難又はブロックチェーン上の悪質な取引の承認を可能にする。セキュアランタイム内で取引を承認/発行するアプリケーションを実行することにより、記載のシステム及び方法は、ホストセキュリティ侵害及びマシンへの敵対的rootレベルアクセスの場合にも、資産/暗号通貨を保護することができる。
【0064】
図7は、コンピュータデバイス700の例示的なブロック図を示す図である。コンピュータデバイス700は、ここに記載されているような様々な処理手続を実行する為に使用することができる。例えば、コンピュータデバイス700は、ここに記載のコンピュータデバイス及びシステムの任意の機能及び方法を実行することができる。コンピュータデバイス700は、ここに記載の様々な機能を実行することができ、ここに記載のアプリケーションプログラム又は機能等の1以上のアプリケーションプログラムを実行することができる。コンピュータデバイス700は、デスクトップパソコン、ノートパソコン、サーバコンピュータ、携帯型コンピュータ、タブレット、ウェアラブルコンピュータ等の任意の多種多様のコンピュータデバイスであることができる。
【0065】
コンピュータデバイス700は、全てがバス712に接続されている、1以上のプロセッサ702、1以上のメモリデバイス704、1以上のインタフェース706、1以上の大容量記憶装置708、1以上の入力/出力(I/O)装置710、及び表示装置730を含む。プロセッサ702は、メモリデバイス704及び/又は大容量記憶装置708内に記憶された命令を実行する1以上のプロセッサ又は制御装置を含む。プロセッサ702は、キャッシュメモリ等の様々な型のコンピュータ可読媒体も含むことができる。
【0066】
メモリデバイス704は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)714)及び/又は不揮発性メモリ(例えば、読出専用メモリ(ROM)716)等の様々なコンピュータ可読媒体を含む。メモリデバイス704は、フラッシュメモリ等の書換可能ROMを含むこともできる。
【0067】
大容量記憶装置708は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。
図7に図示されているように、特定の大容量記憶装置はハードディスクドライブ724である。大容量記憶装置708には様々なドライブも含むことができ、様々なコンピュータ可読媒体からの読出及び/又はヘの書込を可能にする。大容量記憶装置708は、取り外し可能媒体726及び/又は取り外し不可能媒体を含む。
【0068】
I/Oデバイス710は、データ及び/又は他の情報をコンピュータデバイス700に入力する、又は、から読出することを可能にする様々な装置を含む。例示的なI/Oデバイス710は、カーソル制御装置、キーボード、キーパッド、マイク、モニタ又は他の表示装置、スピーカ、プリンタ、ネットワークインタフェースカード、モデム等を含む。
【0069】
表示装置730は、コンピュータデバイス700の1以上のユーザに情報を表示することができる任意の型の装置を含む。表示装置730の例は、モニタ、表示端末、映像投影装置等を含む。
【0070】
インタフェース706は、コンピュータデバイス700が他のシステム、デバイス、又はコンピュータ環境と相互作用することを可能にする様々なインタフェースを含む。例示的なインタフェース706は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等の任意の数の異なるネットワークインタフェース720を含むことができる。他のインタフェースは、ユーザインタフェース718及び周辺機器インタフェース722を含む。インタフェース706は、1以上のユーザインタフェース要素718を含むこともできる。インタフェース706は、プリンタ、ポインティングデバイス(マウス、トラックパッド、又は当業者には既知の、又は今後発見される任意の適切なユーザインタフェース)、キーボード等のインタフェース等の1以上の周辺機器インタフェースを含むこともできる。
【0071】
バス712は、プロセッサ702、メモリデバイス704、インタフェース706、大容量記憶装置708、及びI/Oデバイス710が互いに通信することを可能にし、同様にバス712に接続された他のデバイス又はコンポーネントと通信することを可能にする。バス712は、システムバス、PCIバス、IEEEバス、USBバス等の複数の型のバス構造の1つ以上を表している。
【0072】
説明を目的として、プログラム及び他の実行可能プログラムコンポーネントは分離したブロックとしてここでは図示されているが、そのようなプログラムコンポーネントは、コンピュータデバイス700の異なる記憶装置コンポーネントに様々な場合に存在することができ、プロセッサ702により実行される。代替的に、ここに記載のシステム及び処理手続は、ハードウェアに、又はハードウェア、ソフトウェア、及び/又はファームウェアの組み合わせに実装することができる。例えば、1以上の特定用途向け集積回路(ASIC)は、ここに記載のシステム及び処理手続の1つ以上を実行する為にプログラミングされることができる。
【0073】
本開示の様々な実施形態がここに記載されているが、これらの実施形態は限定としてではなく、単に例として示されていると理解されるべきである。本開示の範囲及び主旨から逸脱することなく、これらの形態及び詳細に様々な変更を加えることができることは当業者には明らかである。したがって、本開示の範囲及び幅は、記載の例示的実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲及びその同等物によってのみ定義されるべきである。この記載は説明を目的として示されている。本開示は、限定的な開示、又は開示されている詳細な形態に本開示を限定することを意図しているものではない。開示されている教示を考慮して様々な改良及び変形が可能である。さらに、ここに開示の任意又は全ての代替実装は、本開示の追加的ハイブリッド実装を形成する為に望ましい任意の組む合わせで使用することができる。
【符号の説明】
【0074】
100 本開示のシステム及び方法が実装された例示的環境
200 セキュアランタイム構造
300 セキュアランタイム構造
400 セキュアランタイムにおいてアプリケーションを設定する方法
500 セキュアランタイムにおいてアプリケーションを実行する方法
600 同じデータにアクセスする複数のセキュアエンクレーブ及び複数のマシンの実施形態
602 第1のマシン
604 第2のマシン
606 システム又はデバイス
618 システム又はデバイス
700 コンピュータデバイス
712 バス
【国際調査報告】