(57)【要約】  アイソレーション・コンテナ外に存在するホスト・プラットフォーム・リソースを利用する一方で、ユーザモード・ハードウェア保護アイソレーション・コンテナ内でアプリケーションが実行することを可能にするプラットフォーム・アダプテーション・レイヤを提供するための実現形態を本明細書及び特許請求の範囲において説明する。プラットフォーム・アダプテーション・レイヤは、アプリケーションとホスト・プラットフォームとの間のシステム・サービス要求情報を容易化する。容易化の一部として、プラットフォーム・アダプテーション・レイヤのセキュアなサービス・コンポーネントはセキュリティ関連の動作を行う。
2015500543.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
ユーザモード・ハードウェア保護アイソレーション・コンテナ（ＵＭＨＰＩＣ）においてアプリケーションを実行する工程であって、前記ＵＭＨＰＩＣは、少なくとも、前記ＵＭＨＰＩＣ外に実行を転送するための出口ゲート、及び前記ＵＭＨＰＩＣ内に実行を返すための入口ゲートを提供するセキュリティ対応プロセッサによって保護される工程と、
前記ＵＭＨＰＩＣ外で実行するホスト・プラットフォームの１つ又は複数のコンポーネントと、前記アプリケーションとの間でのシステム・サービス要求相互作用を、前記ＵＭＨＰＩＣにおいて実行するＵＭＨＰＩＣアウェア・プラットフォーム・アダプテーション・レイヤによって容易化する工程と、
前記容易化する工程の一部としてセキュリティ関連動作を、前記ＵＭＨＰＩＣアウェア・プラットフォーム・アダプテーション・レイヤのセキュアなサービス・コンポーネントによって行う工程と
を含む方法。
【請求項２】
請求項１記載の方法であって、前記セキュリティ関連動作は、前記アプリケーションからであり、前記システム・サービス要求情報に関連付けられたデータを暗号化する工程を含む方法。
【請求項３】
請求項１記載の方法であって、前記セキュリティ関連動作は、前記システム・サービス要求相互作用に関する情報を記憶するために記帳データ構造を維持する工程を含む方法。
【請求項４】
システムであって、
ユーザモード・ハードウェア保護アイソレーション・コンテナ（ＵＭＨＰＩＣ）との間で実行を転送するための少なくとも入口ゲート及び出口ゲートそれぞれを提供するよう構成されたセキュリティ対応プロセッサを含む１つ又は複数のプロセッサと、
前記ＵＭＨＰＩＣを含むメモリと、
前記ＵＭＨＰＩＣ外で実行するホスト・プラットフォームの１つ又は複数のコンポーネントと、前記ＵＭＨＰＩＣ内で実行するアプリケーションとの間のシステム・サービス要求相互作用を容易化するために、少なくとも部分的に前記ＵＭＨＰＩＣ内で前記セキュリティ対応プロセッサによって実行可能なＵＭＨＰＩＣアウェア・プラットフォーム・アダプテーション・レイヤと
を備え、前記ＵＭＨＰＩＣアウェア・プラットフォーム・アダプテーション・レイヤは、
前記システム・サービス要求相互作用の前記容易化する工程の一部としてセキュリティ関連動作を行うよう、前記ＵＭＨＰＩＣ内で前記セキュリティ対応プロセッサによって実行可能なセキュアなサービス構成部分を含むシステム。
【請求項５】
請求項４記載のシステムであって、前記システム・サービス要求相互作用は、リソースの割り当てに対する要求であり、前記セキュリティ関連動作は、前記システム・サービス要求相互作用の一部として前記ホスト・プラットフォームによって提供されるリソース割り当て結果の正確性の検証を含むシステム。
【請求項６】
請求項４記載のシステムであって、前記リソース割り当て結果はメモリ・リソースの表示を含み、前記リソース割り当て結果の前記正確性の前記検証は、重なるメモリ割り当ての検査を含むシステム。
【請求項７】
請求項４記載のシステムであって、前記セキュリティ関連動作は、スレッド・スケジューリング・サービスの実行を含むシステム。
【請求項８】
コンピューティング・デバイスに、
ユーザモード・ハードウェア保護アイソレーション・コンテナ（ＵＭＨＰＩＣ）外で実行するホスト・プラットフォームと、前記ＵＭＨＰＩＣ内で実行するアプリケーションとの間のシステム・リソース要求相互作用を容易化する工程であって、前記ＵＭＨＰＩＣは、少なくとも、前記ＵＭＨＰＩＣ外に実行を転送するための出口ゲート、及び前記ＵＭＨＰＩＣ内に実行を返すための入口ゲートを提供するよう構成されたセキュリティ対応プロセッサによって提供される工程と、
前記システム・リソース要求相互作用の前記容易化する工程の一部としてセキュリティ関連動作を前記アプリケーションにかわって行う工程と
を行わせるための、前記コンピューティング・デバイスの１つ又は複数のプロセッサによって実行可能な複数のプログラミング命令を含むコンピュータ読み取り可能な記憶媒体。
【請求項９】
請求項８記載のコンピュータ読み取り可能な記憶媒体であって、システム・サービス要求相互作用は、リソースの割り当てに対する要求であり、前記セキュリティ関連動作は、前記システム・サービス要求相互作用の一部として前記ホスト・プラットフォームによって提供されるリソース割り当て結果の正確性の検証を含むコンピュータ読み取り可能な記憶媒体。
【請求項１０】
請求項９記載のコンピュータ読み取り可能な記憶媒体であって、前記リソース割り当て結果はデバイス・ハンドルを含み、前記リソース割り当て結果の前記正確性の前記検証は、前記デバイス・ハンドルが複製デバイス・ハンドルであるか否かを判定する工程を含むコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
従来のソフトウェア・アプリケーションは種々のオペレーティング・システム機能に依存する。オペレーティング・システムは、スレッド・スケジューリング、メモリ割り当て、仮想メモリ、デバイス・アクセス等などの基本コンピューテーション・サービスを提供するためのアプリケーション・プログラミング・インタフェース（ＡＰＩ）・セットを提供し得る。更に、オペレーティング・システムは、グラフィカル・ユーザ・インタフェース（ＧＵＩ）サービス、クリップボード・サービス等などの更なるオペレーティング・システム・サービスを提供するＡＰＩの豊富な機能セットを提供し得る。
【背景技術】
【０００２】
特定のセキュリティ対応のプロセッサは、セキュアな実行環境を提供することができる。前述のセキュリティ対応のプロセッサは、保護メモリ空間を提供し、セキュリティ対応プロセッサは、保護メモリ空間に記憶されたコード及びデータが、保護メモリ空間外のコードによってアクセス可能でないことを確実にする。セキュリティ対応プロセッサは、保護メモリ空間内のコードと環境外のコードとの間で実行が進むことを可能にする、以降、ゲートとして表す明確に定義された出口及び入口機能を提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
セキュリティ対応プロセッサは、保護メモリ空間内のカーネルモード実行、又は入出力デバイスへのアクセスを可能にしない。その結果、セキュリティ対応プロセッサの保護されたメモリ領域は、従来のソフトウェア・アプリケーションを実行するには制限的過ぎる。
【課題を解決するための手段】
【０００４】
本概要は、詳細な説明に更に後述する本開示の単純化された概念を紹介するために記載している。本概要は、特許請求の範囲に記載の主題の本質的な構成を識別することを意図するものでなく、特許請求の範囲に記載の主題の範囲を規定するために使用されることを意図するものでもない。
【０００５】
アプリケーションは、セキュリティ対応プロセッサによって提供されるユーザモード・ハードウェア保護アイソレーション・コンテナ（ＵＭＨＰＩＣ）内で実行する。アプリケーションの一部としてＵＭＨＰＩＣ内で実行するライブラリ・オペレーティング・システムは、高レベル要求を含む大半のオペレーティング・システム要求を満たす。ＵＭＨＰＩＣアウェア・プラットフォーム・アダプテーション・レイヤ（Ｕ−ＰＡＬ）は、ＵＭＨＰＩＣ外に存在するオペレーティング・システム・リソースを利用する一方で、ＵＭＨＰＩＣ内で、ＵＭＨＰＩＣを特に知らないアプリケーションが実行することを可能にする。Ｕ−ＰＡＬは、ＵＭＨＰＩＣ内で実行し、スレッド・スケジューリング、ファイル・システム相互作用、及びリソース割り当てがアプリケーションに代わって適切に処理されることを確実にするセキュアなサービス・コンポーネントを含む。Ｕ−ＰＡＬは、ＵＭＨＰＩＣ内に存在するトラステッド部分、及び外部実行環境においてユーザ・モードで実行する非トラステッド部分を備えるサンキング・コンポーネントを含む。トラステッド・サンキング・コンポーネントは、セキュリティ対応プロセッサによって制御される出口ゲートを介して、非トラステッド・サンキング・コンポーネントにシステム・コールを転送する。非トラステッド・サンキング・コンポーネントは、セキュリティ対応プロセッサによって制御されたエントリ・ゲートを介してオペレーティング・システムからＵＭＨＰＩＣにシステム・コール結果を転送する。
【図面の簡単な説明】
【０００６】
【図１】ＵＭＨＰＩＣにおいてアプリケーションを実行するためのセキュアな実行環境を示す概略図である。
【図２】実施例による、セキュアな実行環境を提供するために使用可能な例示的なコンピューティング・システムを示すブロック図である。
【図３】ＵＭＨＰＩＣにおいて実行するアプリケーションにセキュリティを提供するための例示的なプロセスを示すフロー図である。
【図４】ＵＭＨＰＩＣ内で実行するアプリケーションと、ＵＭＨＰＩＣ外で実行するホスト・プラットフォームとの間のリソース要求相互作用を容易化する例示的なプロセスを示すフロー図である。
【図５】ホスト・プラットフォームからの非同期通知及び実行の要求を処理するための例示的なプロセスを示すフロー図である。
【発明を実施するための形態】
【０００７】
詳細な説明は、添付図面を参照して説明する。図では、参照符号の最も左の文字は、参照符号が最初に現れる図を識別する。別々の図において同じ参照符号を使用していることは、同様な、又は同一の項目を示す。
【０００８】
上述のように、従来のソフトウェア・アプリケーションは、オペレーティング・システム機能の豊富な機能セットに依存する。本出願の実施例は、セキュアな実行環境外の何れのコードのトラスティングもなしで、セキュアな実行環境（以降、ユーザモード・ハードウェア保護アイソレーション・コンテナ（ＵＭＨＰＩＣ）として表す）内で、セキュアな実行環境内で実行するために特に記述されている訳でないアプリケーション（未修正アプリケーション）が実行することを可能にする。ホスト・オペレーティング・システムなどの、ＵＭＨＰＩＣ外のコードが、ＵＭＨＰＩＣ内のコードに対するサービスを拒絶し得る一方、ＵＭＨＰＩＣ外のコードは、ＵＭＨＰＩＣ内のコードの実行をタンパリングし、又はスヌープすることが可能でない。ＵＭＨＰＩＣ内の従来の未修正アプリケーションの実行は、通常、ＵＭＨＰＩＣ外で実行する「ホスト」オペレーティング・システムのトラスティングを必要とする。未修正アプリケーションは通常、３つの理由でホスト・オペレーティング・システムをトラスティングする。第１に、従来のアプリケーションは、オペレーティング・システムからの豊富でかつ種々のサービスを活用し、第２に、未修正アプリケーションは、実行及びデータが、ＵＭＨＰＩＣと外部実行環境との間で転送されることを可能にするようセキュリティ対応プロセッサの特定の入口ゲート及び出口ゲートを起動するよう構成されておらず、第３に、上記アプリケーションは、そのセキュリティについてオペレーティング・システムの正しい動作に依存する。本明細書の実施例は更に、ＵＭＨＰＩＣ内で実行される対象の、「ＵＬＴＲＡ−ＬＯＷ  ＣＯＳＴ  ＳＡＮＤＢＯＸＩＮＧ  ＦＯＲ  ＡＰＰＬＩＣＡＴＩＯＮ  ＡＰＰＬＩＡＮＣＥＳ」と題する、米国特許出願第１２／８３４，８９５号に記載されたものなどのサンドボックス環境も実施可能にする。
【０００９】
本明細書記載の実施例は、部分的にＵＭＨＰＩＣ内に存在し、部分的に外部実行環境にあるＵＭＨＰＩＣアウェア・プラットフォーム・アダプテーション・レイヤ（Ｕ−ＰＡＬ）を含む。Ｕ−ＰＡＬは、ＵＭＨＰＩＣにおいて実行するアプリケーションと、ＵＭＨＰＩＣ外で実行するホスト・プラットフォームとの間のシステム・リソース要求相互作用を容易化する。更に、容易化することの一部として、１つ又は複数のセキュリティ関連動作が行われる。セキュリティ関連動作は、とりわけ、ホスト・プラットフォームがＵＭＨＰＩＣ外で実行しても、リソースへのアクセスにホスト・プラットフォームをアプリケーションが利用することを可能にし、したがって、「非トラステッド」コードである。
【００１０】
実施例では、アプリケーションは、そのＵＭＨＰＩＣ内にトラステッド・ライブラリ・オペレーティング・システムを含む。大半のオペレーティング・システム要求は、必要に応じてＵ−ＰＡＬのサービスを起動するライブラリ・オペレーティング・システムによって満たされる。Ｕ−ＰＡＬは、今度は、ホスト・オペレーティング・システムからのサービスを起動する。Ｕ−ＰＡＬのトラステッド部分（すなわち、ＵＭＨＰＩＣ内に存在し、ＵＭＨＰＩＣ内で実行する部分）は、ＵＭＨＰＩＣ内で実行するアプリケーションにサービス・インタフェースを提示する。Ｕ−ＰＡＬの非トラステッド部分（すなわち、ＵＭＨＰＩＣ外のユーザ・モードにおいて存在し、実行する部分）は、ホスト・コンピュータ・システムによって提供されるプラットフォーム・アダプテーション・レイヤ（ＰＡＬ）経由などで、オペレーティング・システムとインタフェースする。
【００１１】
Ｕ−ＰＡＬは、セキュアなサービス・コンポーネント、及びサンキング・コンポーネントを含む。セキュアなサービス・コンポーネントはＵＭＨＰＩＣ内で実行し、したがって、アプリケーションの観点から「トラステッド」コンポーネントである。セキュアなサービス・コンポーネントは、スレッド・スケジューリング、ファイル・システム相互作用、及びリソース割り当てを含むシステム・サービス全てが、未修正アプリケーションに代わって適切に処理され、それにより、非トラステッド・ホスト・オペレーティング・システムが可能になる。サンキング・コンポーネントは、ＵＭＨＰＩＣ内に存在するトラステッド部分、及びＵＭＨＰＩＣ外のユーザ・モードで実行する非トラステッド部分を含む。サンキング・コンポーネントは、ＵＭＨＰＩＣ外で実行するホスト・オペレーティング・システム機能へのアクセスを、セキュアなサービス・コンポーネントを含む、Ｕ−ＰＡＬのトラステッド部分に提供する。サンキング・コンポーネント及びセキュアなサービス・コンポーネントは併せて、ライブラリＯＳとともにパッケージングされたアプリケーションなどの未修正アプリケーションが、ＵＭＨＰＩＣ内で実行することを可能にする。
【００１２】
本明細書及び特許請求の範囲記載の処理、システム、及びデバイスはいくつかのやり方で実現し得る。例示的な実現形態は、以下の図を参照して以下に記載する。
【実施例】
【００１３】
未修正アプリケーションをＵＭＨＰＩＣにおいて実行するための例示的な環境
図１は、ＵＭＨＰＩＣにおいてアプリケーションを実行するためのセキュアな実行環境の概略図である。システム１００の局面は、未修正アプリケーションのセキュアな実行環境を実現することができる種々の適切なコンピューティング・デバイス・タイプ上で実現し得る。適切なコンピューティング・デバイスは、１つ又は複数のパソコン、サーバ、サーバ・ファーム、データセンタ、特殊用途向コンピュータ、タブレット型コンピュータ、ゲーム・コンソール、スマートフォン、これらの組み合わせ、又は未修正アプリケーションを実行するためのセキュアな実行環境の全部又は一部を記憶し、実行することができる何れかの他のコンピューティング・デバイスを含み、又はその一部であり得る。
【００１４】
システム１００は、ＵＭＨＰＩＣ１０４を含むセキュアな実行環境をインスタンス化するよう構成されたセキュリティ対応プロセッサ１０２を含む。ＵＭＨＰＩＣ１０４は、メモリ１０８又はユーザモード・メモリ１０６内の保護メモリ領域に存在している。ＵＭＨＰＩＣ１０４との間で実行及びデータを、ＵＭＨＰＩＣ１０４上で実行するコードが転送することを可能にするセキュリティ対応プロセッサ１０２によって提供される特定の入口及び出口ゲート以外は、ＵＭＨＰＩＣ１０４に記憶されたコード及びデータは、ＵＭＨＰＩＣ１０４外のコードにアクセス可能でない。
【００１５】
スレッドはＵＭＨＰＩＣ１０４を出て、出口ゲートを通って、保護されていないメモリに戻る。出口ゲートは、コール命令経由などで直接呼び出し得、又は間接的に、プロセッサ例外経由などで呼び出し得る。ＵＭＨＰＩＣ１０４は暗号化機構によって保護し得る。例えば、セキュリティ対応プロセッサ１０２は、ＵＭＨＰＩＣ１０４に対する書き込み動作を暗号化し、読み出し動作を復号化するよう構成される。更に、ＵＭＨＰＩＣ１０４は、暗号ハッシュ（帯域内（インライン）又は帯域外）によって追跡することが可能であり、セキュリティ対応プロセッサ１０２は、メモリが改変されていないことを読み出し動作時に検証する事が可能である。他の実施例では、ＵＭＨＰＩ１０４が存在するメモリ空間は、セキュリティ対応プロセッサ１０２の同じチップ上にあり得、メモリ空間は、実行が入口ゲートに入る際にセキュリティ対応プロセッサ１０２がアクセスすることを可能にするように隔離することができる。種々の実施例では、セキュリティ対応プロセッサ１０２は、システムオンチップ（ＳＯＣ）などの単一チップ内で実現し得、又は、システム１００のプロセッサ及び更なるチップセットにわたって実現し得る。
【００１６】
アプリケーション１１０はＵＭＨＰＩＣ１０４内で実行する。すなわち、以下に更に詳細に説明する明確に定義された入口及び出口ゲート経由を除いて、非トラステッド・コード１１２又はホスト・オペレーティング・システム（ＯＳ）１１４を含む、ＵＭＨＰＩＣ１０４外で実行するコードが、ＵＭＨＰＩＣ１０４内のコード又はデータをタンパリング又はスヌープすることを阻止するように、セキュリティ対応プロセッサ１０２はアプリケーション１１０を実行する。例えば、ＵＭＨＰＩＣ１０４外に記憶されたスレッド実行コードはＵＭＨＰＩＣ１０４に記憶されたデータにアクセスすることが可能でない。セキュリティ対応プロセッサ１０２は、限定列挙でないが、データがプロセッサを出る際の暗号化、外部タンパリングを検出するためのデータの署名、Ｉ／Ｏデバイスからの直接メモリ・アクセス（ＤＭＡ）動作の阻止、キャッシュの分離、又はプロセッサ上に直接記憶されたメモリの使用を含む種々の手法により、スヌープ又はタンパリングについてＵＭＨＰＩＣ内のコード及びデータを保護し得る。これは、非トラステッド・コード（すなわち、ＵＭＨＰＩＣ１０４外で実行する何れかのコード）がＵＭＨＰＩＣ１０４の内容をスヌープし、又はタンパリングすることに対する保護を提供する。
【００１７】
非トラステッド・コード１１２は、ＵＭＨＰＩＣ外のユーザ・モードにおいて実行する。セキュリティ対応プロセッサ１０２は、ＵＭＨＰＩＣ１０４内のコード及びデータを非トラステッド・コード１１２がアクセスすることを阻止するように非トラステッド・コード１１２を実行する。複数のＵＭＨＰＩＣが考えられ、セキュリティ対応プロセッサ１０２は、別のＵＭＨＰＩＣにおいて非トラステッド・コード１１２を実行し得る。別のＵＭＨＰＩＣにおいて実行されても、非トラステッド・コード１１２は、ＵＭＰＨＰＩＣ１０４の観点からは、「非トラステッド」である。一部のセキュリティ対応プロセッサでは、ＵＭＨＰＩＣはネスティングされていることがあり得る。すなわち、内部ＵＭＰＨＩＣは外部ＵＭＨＰＩＣにおけるコード、及び外部ＵＭＨＰＩＣ外のコード全てから保護される。ネスティングされたＵＭＨＰＩＣの場合、外部ＵＭＨＰＩＣのコードは内部ＵＭＨＰＩＣによってトラスティングされていない。内部ＵＭＨＰＩＣのコード及びデータは、外部ＵＭＨＰＩＣのコードにより、タンパリングし、又はスヌープすることが可能でない。
【００１８】
アトーニー整理番号ＭＳ１−５２６７ＵＳを有し、本出願と同時に出願された関連する米国特許出願に記載されているような初期化プロセスを使用して、ＵＭＨＰＩＣ１０４が、クライアントのトラステッド・コード及びデータによって確立されており、非トラステッド・コード又はデータによって確立されていない旨の確信をクライアント・システムに提供し、それにより、アプリケーション１１０がシステム１００上で適切に実行する旨の確信をクライアント・システムに提供するようにＵＭＨＰＩＣ１０４を初期化するために使用し得る。
【００１９】
ＵＭＨＰＩＣ１０４は、クラウド・コンピューティング・サービス上でセキュアにアプリケーション１１０を実行するためにクライアント・システムがＵＭＨＰＩＣ１０４を初期化する、「クラウド・コンピューティング」サービスなどのホスティングされたコンピューティング・サービスのコンテキストでインスタンス化し得る。よって、クライアント・システムの観点から、セキュリティ対応プロセッサ１０２及びＵＭＨＰＩＣ１０４外のシステム１００の部分は全て、「非トラステッド」である。本出願の実施例は、アプリケーション１１０がＵＭＨＰＩＣ内で実行し、ホストＯＳ１１４などの「非トラステッド」ホスト・オペレーティング・システムからオペレーティング・システム機能になおアクセスすることを可能にする。
【００２０】
種々の実施例では、アプリケーション１１０は１つ又は複数のサブコンポーネントを含む。共通の実施例は、アプリケーションのサブコンポーネントの１つ又は複数は、「ＵＬＴＲＡ−ＬＯＷ  ＣＯＳＴ  ＳＡＮＤＢＯＸＩＮＧ  ＦＯＲ  ＡＰＰＬＩＣＡＴＩＯＮ  ＡＰＰＬＩＡＮＣＥＳ」と題し、西暦２０１０年７月１３日付けで出願された米国特許出願第１２／８３４，８９５号において記載された分離ＯＳサブシステムと同一又は同様であり得るライブラリ・オペレーティング・システム（ＯＳ）１１６を含む。米国特許出願第１２／８３４，８９５号は、オペレーティング・システムの他の要素と別個の分離アプリケーション・プロセス内で種々のオペレーティング・システム要素（場合によっては、「ライブラリＯＳ」として表される）を実行するよう構成された「アプリケーション・サンドボックス」を記載している。  米国特許出願第１２／８３４，８９５号に記載されたアプリケーション・サンドボックスは、アプリケーションによるタンパリング又はスヌープからホスト・オペレーティング・システムを保護するが、必ずしも、ホスト・オペレーティング・システムによるタンパリング又はスヌープからアプリケーションを保護する訳でない。米国特許出願第１２／８３４，８９５号に記載された分離ＯＳサブシステムは、アプリケーションが使用することを企図されたオペレーティング・システム機能を直接提供するために豊富なＡＰＩセットをアプリケーションに提供する。分離ＯＳサブシステムは更に、基本コンピューテーション・サービスをアプリケーションに提供するために、オペレーティング・システム・プラットフォーム・アダプテーション・レイヤ（ＰＡＬ）を介してホスト・オペレーティング・システムと通信するようアプリケーション・プログラミング・インタフェース（ＡＰＩ）の小サブセットを利用する。ホストＰＡＬ１１８は、米国特許出願第１２／８３４，８９５号に記載されたホスト・オペレーティング・システムＰＡＬと同一又は同様であり得る。ホストＰＡＬ１１８は、実施例では、トラップ命令を含み得る。別の実施例では、ホストＰＡＬ１１８は、低レベル・ホストＯＳ１１４の抽象化から高レベル抽象化を作成するライブラリを含む。併せて、ホストＰＡＬ１１８（存在する場合）及びホストＯＳ１１４はホスト・プラットフォーム１３０に含まれる。
【００２１】
ライブラリＯＳ１１６は、（限定的でない一例では、上記「豊富な」サービス・セットなどの）オペレーティング・システム・サービスの第１のサブセットをアプリケーション１１０に提供し、（限定的でない一例では、上記基本コンピュテーショナル・サービスなどの）オペレーティング・システム・サービスの第２のサブセットをアプリケーション１１０に提供するようホストＯＳ１１４を呼び出すよう構成し得る。本開示の実施例は、ライブラリＯＳ１１６などのライブラリＯＳとともにパッケージングされたアプリケーション１１０などのアプリケーションの実行に限定されない。ホストＰＡＬ１１８及び／又はライブラリＯＳ１１６は種々の実施例において割愛される。少なくとも１つの実施例では、ライブラリＯＳ１１６が割愛され、アプリケーション１１０は、仮想マシン（今度は、「ゲスト」オペレーティング・システム及びアプリケーションを含み得る）を実行するユーザモード・プロセッサ・エミュレータを含む。
【００２２】
ＵＭＨＰＩＣアウェアＰＡＬ（Ｕ−ＰＡＬ）１２０は、ＵＭＨＰＩＣ１０４内に部分的に存在し、ユーザモード・メモリ１０６の非トラステッド部分に部分的に存在する。種々の実施例では、アプリケーション１１０は、ＵＭＨＰＩＣ１０４内の実行のために未修正であり得、アプリケーション１１０は、その未修正バージョンでは、ホスト・プラットフォーム１３０によって提供されるサービス・インタフェースを介してホスト・プラットフォーム１３０と直接インタフェースするよう構成される。Ｕ−ＰＡＬ１２０はしたがって、ＵＭＨＰＩＣにおいて実行するアプリケーション１１０と、ＵＭＨＰＩＣ外で実行するホスト・プラットフォーム１３０の１つ又は複数のコンポーネントとの間でのシステム・リソース要求相互作用を容易化する。更に、Ｕ−ＰＡＬ１２０のセキュアなサービス・コンポーネント１２２は、１つ又は複数のセキュリティ関連動作を行う。Ｕ−ＰＡＬ１２０は、ホスト・プラットフォーム１３０によって提供されるインタフェースをエミュレートするサービス・インタフェースをＵＭＨＰＩＣ１０４内でアプリケーション１１０に提供する。ＵＭＨＰＩＣ１０４外に存在するＵ−ＰＡＬ１２０の一部分は、プラットフォーム・インタフェースを介し、ホストＰＡＬ１１８経由などにより、ホストＯＳ１１４とインタフェースするよう構成される。別の実施例では、ホストＰＡＬ１１８はＵ−ＰＡＬ１２０のサブコンポーネントであり得る。ライブラリＯＳ１１６及びホストＰＡＬ１１８を割愛するものなどの更に他の実施例では、Ｕ−ＰＡＬ１２０はホストＯＳ１１４によって提供されるサービス・インタフェースの全部又は一部をエミュレートする。例えば、Ｕ−ＰＡＬ１２０は、アプリケーション１１０が使用するよう構成された豊富なＡＰＩの部分的なセット又は完全なセットを提供し得る。
【００２３】
Ｕ−ＰＡＬ１２０は、セキュア・サービス・コンポーネント１２２及びサンキング・コンポーネント１２４を含む。セキュアなサービス・コンポーネント１２２は全部、ＵＭＨＰＩＣ１０４内に存在し、セキュリティ関連動作を行う。セキュアなサービス・コンポーネントは、ホスト・プラットフォームによって返されるハンドルの検証、メモリ割り当ての検証、スレッド・スケジューリングが期待されたセマンティックスに準拠する（例えば、相互排除プリミティブは実際に相互排除を提供する）ことの保証、ホスト・プラットフォーム１３０に対して行われる種々のコールの結果の検証、前述の検証に必要なデータ構造の更新、データの暗号化、ディジタル署名又はメッセージ認証コードによるデータのインテグリティの保護、再生攻撃からのデータの保護、乱数のセキュアな提供などのセキュリティ関連動作を行う。アプリケーション１１０は、未修正であり、非トラステッド・コンピューティング・システム上のＵＭＨＰＩＣ１０４内で実行するよう企図されていないことがあり得る。よって、アプリケーション１１０は、アプリケーション１１０がその上で実行するそのコンピューティング・システムがトラステッドであるという仮定で開発されていることがあり得る。よって、アプリケーション１１０は、必ずしも、ホストＯＳ１１４が適切に挙動することを検証するよう構成される訳でない。しかし、コンピューティング・システム１００は、ＵＭＨＰＩＣ１０４の観点からは非トラステッドであり得るので、ホスト・プラットフォーム１３０は、適切に挙動すると仮定されない。よって、セキュアなサービス・コンポーネント１２２は、期待され、適切なやり方で挙動する仮想プラットフォームをもたらすセキュリティ関連動作を行う。
【００２４】
限定的でない一例では、セキュアなサービス・コンポーネント１２２は、アプリケーション１１０及び／又はライブラリＯＳ１１６によって行われるデバイス・アクセスのためのＡＰＩコールに応じて、ホスト・プラットフォーム１３０によって返されるインタフェース・ハンドルが適切であることを検証する。例えば、インタフェース・ハンドルが、アプリケーション１１０及び／又はライブラリＯＳ１１６に先行して提供されたインタフェース・ハンドルの複製であるか否かを判定し得る。前述のインタフェース・ハンドルは、Ｉ／Ｏデバイス、ネットワーキング・デバイス、又は他のタイプのデバイスなどのデバイスにアクセスするために使用し得る。限定的でない別の例では、セキュアなサービス・コンポーネント１２２は、ホスト・プラットフォーム１３０によって返されるメモリ割り当てが適切であることを検証する。例えば、新たなメモリ割り当てが、先行してアプリケーション１１０に割り当てられたメモリと重ならないことを保証し得る。前述の重なるメモリ割り当ては、アプリケーション１１０に、それ自身のデータを不意に上書きさせ、それにより、アプリケーション１１０に、予期しない態様で挙動させ得る。
【００２５】
限定的でない別の例では、セキュアなサービス・コンポーネント１２２は、ホスト・プラットフォーム１３０のファイル・システム上のファイルに書き込む対象のデータを保護するよう構成される。前述の保護は、「Ｍｕｌｔｉｐｌｅｘｉｎｇ  ａ  ｓｅｃｕｒｅ  ｃｏｕｎｔｅｒ  ｔｏ  ｉｍｐｌｅｍｅｎｔ  ｓｅｃｏｎｄ  ｌｅｖｅｌ  ｓｅｃｕｒｅ  ｃｏｕｎｔｅｒｓ」と題する、Ｅｎｇｌａｎｄらによる西暦２００８年９月２日付の米国特許第７４２１５７９号、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｐｒｉｖａｃｙ，  ＩＥＥＥ，  Ｍａｙ  ２０１１において公表されたＢｒｙａｎ  Ｐａｒｎｏ、Ｊａｃｏｂ  Ｒ．  Ｌｏｒｃｈ、Ｊｏｈｎ  Ｒ．  Ｄｏｕｃｅｕｒ、Ｊａｍｅｓ  Ｍｉｃｋｅｎｓ、及びＪｏｎａｔｈａｎ  Ｍ．  ＭｃＣｕｎｅによる「Ｍｅｍｏｉｒ：  Ｐｒａｃｔｉｃａｌ  Ｓｔａｔｅ  Ｃｏｎｔｉｎｕｉｔｙ  ｆｏｒ  Ｐｒｏｔｅｃｔｅｄ  Ｍｏｄｕｌｅｓ」などに開示された、暗号化、ディジタル署名若しくはメッセージ認証コードの付加、及び／又は再生攻撃に対する保護のための方策を含み得る。アプリケーション１１０自身は、保護されていない形態のファイル・システムにデータを書き込むよう構成し得る。上述のように、アプリケーション１１０は、アプリケーション１１０がその上で実行するそのコンピューティング・システムがトラステッドであるという仮定で開発されていることがあり得るからである。よって、アプリケーション１１０及び／又はライブラリＯＳ１１６が、ファイル・システムにデータを書き込むためのＡＰＩコールを出す場合、セキュアなサービス・コンポーネント１２２は、ホスト・プラットフォーム１３０に、コールにおける保護データを転送する前にアプリケーション１１０に代わってデータを保護する。セキュアなサービス・コンポーネントは更に、ホスト・プラットフォームから読み出されたデータを保護解除し、かつ／又は、検証するよう構成される。アプリケーション１１０が、ファイル・システムから保護データを受け取るよう構成されていないことがあり得、ディジタル署名又はメッセージ認証コードを検証しないことがあり得、再生攻撃について検査しないことがあり得るからである。別の実施例では、セキュアなサービス・コンポーネント１２２は、保護された仮想ファイル・システムを使用して、場合によっては、暗号化、ディジタル署名、メッセージ認証コード、及び／又は、再生攻撃を阻止するための方策を使用して、ファイル・システム・アクセス全てを実現し、ホスト・プラットフォーム１３０へのトラステッド・ファイル名及びメタデータの露出を避け得る。
【００２６】
アプリケーション１１０は、ホスト・プラットフォーム１３０からスレッド・スケジューリング・サービスを要求するよう構成し得る。しかし、非トラステッド誤挙動ホスト・プラットフォーム１３０が、アプリケーション１１０に誤って実行させてしまうようにスレッドをスケジューリングすることが考えられる。例えば、アプリケーション１１０の一スレッドがロックを獲得した場合、誤挙動オペレーティング・システムは別のスレッドが同じロックを同時に獲得することを可能にし、それにより、スレッドに同時に動作させ、予測できない結果につながり得る。よって、セキュアなサービス・コンポーネント１２２は、アプリケーション１１０及び／又はライブラリＯＳ１１６に代わってスレッド・スケジューリングを処理するよう構成されたユーザモード・スレッド・スケジューラを含み得る。例えば、アプリケーション１１０及びライブラリＯＳ１１６が一実行スレッドのみを有する場合、前述のユーザ・モード・スレッド・スケジューラは必要でないことがあり得る。アプリケーション１１０及び／又はライブラリＯＳ１１６がスレッド・スケジューリングに関するホスト機能に対するコールを起動させた場合、セキュア・サービス・コンポーネント１２２は、ホスト・プラットフォーム１３０に転送するのではなく、スレッド・スケジューリング・コール自体を処理すると判定し得る。
【００２７】
Ｕ−ＰＡＬ１２０のサンキング・コンポーネント１２４は、セキュアなサービス・コンポーネント１２２からホスト・プラットフォーム１３０にＡＰＩコールを転送するための機能を提供する。サンキング・コンポーネントのトラステッド部分であるトラステッド・サンキング・コンポーネント１２６は、ＵＭＨＰＩＣ１０４内で実行し、コールに関連付けられたパラメータをホスト・プラットフォーム１３０に向けて整列化し、セキュリティ対応プロセッサ１０２によって提供された出口ゲートを起動させ、整列化されたパラメータを、非トラステッド・サンキング・コンポーネント１２８に転送するよう構成される。よって、トラステッド・サンキング・コンポーネント１２６は、セキュアなサービス・コンポーネント１２２からホスト・プラットフォーム１３０へのコールの輸送手段としてふるまう。
【００２８】
トラステッド・サンキング・コンポーネント１２６は更に、非トラステッド・サンキング・コンポーネント１２８によって起動された入口ゲートを介して、ホスト・プラットフォーム１３０からの実行要求、及びホスト・プラットフォーム１３０に対して行われたコールからの結果を受け取る。トラステッド・サンキング・コンポーネント１２６は、前述の実行要求及び結果に関連付けられた種々のパラメータを非整列化し、検証のためにセキュアなサービス・コンポーネント１２２に転送する。
【００２９】
サンキング・コンポーネント１２４の一部でもある非トラステッド・サンキング・コンポーネント１２８はＵＭＨＰＩＣ１０４外で実行する。出口ゲートを介して、トラステッド・サンキング・コンポーネント１２６による、転送されたパラメータを非整列化し、ＵＭＨＰＩＣ１０４に代わって（ホストＰＡＬ１１８を介したホストＯＳ１１４へのオペレーティング・システム・コールの起動などの）ホスト・プラットフォーム１３０への対応するコールを行うよう構成される。非トラステッド・サンキング・コンポーネント１２８は、実行要求、及びシステム・コールからの結果をホスト・プラットフォーム１３０から受け取り、結果及び実行要求の対応するパラメータを整列化し、入口ゲートを起動させ、前述の整列化コンポーネントをトラステッド・サンキング・コンポーネント１２６に転送する。よって、非トラステッド・サンキング・コンポーネント１２８は、ホスト・プラットフォーム１３０からの実行要求及びコールの結果の入口点としてふるまう。
【００３０】
共通の実施例では、非トラステッド・サンキング・コンポーネント１２８は、ＵＭＨＰＩＣ１０４外のユーザ・モードで実行し、明示的な出口ゲートを介してトラステッド・サンキング・コンポーネント１２６によって起動し得る。別の実施例では、非トラステッド・サンキング・コンポーネント１２８は、ホスト・プラットフォーム１３０のサブコンポーネントとして実行し、トラステッド・サンキング・コンポーネント１２６内で出されたトラップ命令又はシステム・コールから起動させ得る。
【００３１】
サンキング・コンポーネント１２４は、セキュリティ対応プロセッサ１０２の入口及び出口機能を起動させ、それにより、ＵＭＨＰＩＣ１０４と外部実行環境との間でパラメータ及び実行を転送し、逆も同様であることを可能にするよう構成される。別途明記したように、アプリケーション１１０は、未修正であり得、ＵＭＨＰＩＣ１０４内で実行することを知らないことがあり得、したがって、ホスト・プラットフォーム１３０にコールを転送するためにセキュリティ対応プロセッサ１０２の出口ゲートを起動させるよう構成されないことがあり得る。同様に、ホストＰＡＬ１１８は更に、ＵＭＨＰＩＣ１０４において実行するアプリケーションのサポートを提供するために未修正で有り得、したがって、アプリケーション１１０に実行要求、及びコールからの結果を返すためにセキュリティ対応プロセッサ１０２の入口ゲートを起動させるよう構成しないことがあり得る。よって、サンキング・コンポーネント１２４は、アプリケーション１１０及びホストＰＡＬ１１８に代わってセキュリティ対応プロセッサ１０２の入口及び出口ゲートを起動させるための機能を提供する。セキュアなサービス・コンポーネント１２２は、スレッド実行を処理し、非トラステッド記憶デバイスに書き込まれたアプリケーション・データを保護し、アプリケーション１１０に代わってホスト・プラットフォーム１３０の挙動を検証し、対応するセキュリティ関連動作を行うための機能を提供する。併せて、サンキング・コンポーネント１２４及びセキュアなサービス・コンポーネント１２２は、「非トラステッド」ホストＯＳ１１４によって提供されるシステム・リソースをなお利用しながら、ＵＭＨＰＩＣ１０４内でアプリケーション１１０が実行することを可能にする。
【００３２】
セキュアな実行環境を提供するための例示的なコンピューティング・デバイス
図２は、実施例による、セキュアな実行環境を提供するために使用可能な例示的なコンピューティング・システムのブロック図である。コンピューティング・システム２００は、セキュアな実行環境を実現することができる何れかの適切なコンピューティング・デバイスとして構成し得る。限定的でない種々の例によれば、適切なコンピューティング・デバイスは、パソコン（ＰＣ）、サーバ、サーバ・ファーム、データセンタ、特殊用途向コンピュータ、タブレット型コンピュータ、ゲーム・コンソール、スマートフォン、これらの組み合わせ、又は、セキュアな実行環境の全部又は一部を記憶し、実行することができる何れかの他のコンピューティング・デバイスを含み得る。
【００３３】
例示的な一構成では、コンピューティング・システム２００は、１つ又は複数のプロセッサ２０２及びメモリ２０４を備える。プロセッサ２０２は、セキュリティ対応プロセッサ１０２と同一又は同様な１つ又は複数のセキュリティ対応プロセッサを含む。プロセッサ２０２は、セキュリティ対応プロセッサとは別の１つ又は複数の汎用又は特殊用途向プロセッサを含み得る。コンピューティング・システム２００は更に、種々の他のシステムとの通信を可能にする通信接続２０６を含み得る。コンピューティング・システム２００は更に、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等などの１つ又は複数の入力デバイス２０８、及び、通信するようプロセッサ２０２及びメモリ２０４に結合された、ディスプレイ、スピーカ、プリンタ等などの１つ又は複数の出力デバイス２１０を含み得る。
【００３４】
メモリ２０４は、プロセッサ２０２上でロード可能であり、実行可能なプログラム命令、前述のプログラムの実行中に生成され、かつ／又は前述のプログラムとともに使用可能なデータを記憶し得る。例証された例では、メモリ２０４は、コンピューティング・システム２００の基本システム機能を提供し、とりわけ、コンピューティング・システム２００の他のプログラム及びモジュールの動作に対応するオペレーティング・システム２１２を記憶する。オペレーティング・システム２１２は、ホストＯＳ１１４と同一又は同様であり得る。
【００３５】
メモリ２０４の一部分は、本明細書中に別途明記したようにＵＭＨＰＩＣ内に含まれ得る。メモリ２０４は、プロセッサと同じ物理チップ上のメモリと、他のチップ上のメモリとに分けることができる。メモリ２０４は、Ｕ−ＰＡＬ１２０と同一又は同様であり得るＵ−ＰＡＬ２１４を含む。メモリ２０４は、アプリケーション１１０と同一又は同様であり得るアプリケーション２１６を含む。アプリケーション２１６は、ホストＰＡＬ１１８と同一又は同様であり得るホストＰＡＬ２１８とインタフェースするよう構成された、本明細書中に別途明記されたようなライブラリＯＳを含み得る。メモリ２０４は、非トラステッド・コード１１２と同一又は同様であり得る非トラステッド・コード２２０を含む。
【００３６】
アプリケーションをＵＭＨＰＩＣにおいて実行するための例示的な動作
図３は、ＵＭＨＰＩＣ１０４などのＵＭＨＰＩＣにおいて実行されるアプリケーション１１０などのアプリケーションにセキュリティを提供するための例示的なプロセス３００を示すフロー図である。３０２では、アプリケーションは、本明細書中に別途明記したように、ＵＭＨＰＩＣ内で実行する。
【００３７】
３０４では、Ｕ−ＰＡＬ１２０などのＵ−ＰＡＬは、ＵＭＨＰＩＣ内で実行されるアプリケーションと、ＵＭＨＰＩＣ外で実行されるホスト・プラットフォームとの間のリソース割り当て要求相互作用を容易化する。上記容易化は、例えば、本明細書中に別途明記するように、ＵＭＨＰＩＣとの間で、アプリケーションからの要求、及びホスト・プラットフォームからの結果を転送する工程を含み得る。容易化は、本明細書中に別途明記したように、入口及び出口ゲートを起動させる工程、及び、パラメータを整列化する工程を含み得る。容易化は、ホスト・プラットフォームにシステム・リソース要求を転送する工程、及びホスト・プラットフォームから、関連付けられた結果を受け取る工程を含み得る。
【００３８】
３０６では、セキュアなサービス・コンポーネント１２２などの、Ｕ−ＰＡＬのセキュアなサービス・コンポーネントは容易化の一部として、セキュリティ関連動作を行う。セキュリティ関連動作は、種々の実施例では、本明細書で別途明記したように、システム・サービス要求相互作用に関連付けられたアプリケーションからのデータを暗号化する工程と、アプリケーションのシステム・サービス要求相互作用に関連付けられたデータを復号する工程と、システム・サービス要求相互作用に関する情報を記憶するための記帳データ構造を維持する工程と、システム・サービス要求相互作用の一部としてホスト・プラットフォームによって提供されるリソース割り当て結果の正確性を検証する工程と、重なるメモリ割り当てについて検査する工程と、デバイス・ハンドルが重複デバイス・ハンドルであるか否かを判定する工程と、スレッド・スケジューリング・サービスを行う工程とを含み得る。他のセキュリティ関連動作は、本開示の範囲から逸脱しない限り、行い得る。
【００３９】
図４は、ＵＭＨＰＩＣ内で実行するアプリケーションと、ＵＭＨＰＩＣ外で実行する、ホスト・プラットフォーム１３０などのホスト・プラットフォームとの間のリソース要求相互作用を容易化する例示的なプロセス４００を示すフロー図である。４０１では、アプリケーションはＵＭＨＰＩＣ内で実行する。
【００４０】
４０２では、ＵＭＨＰＩＣ内で実行するアプリケーションは、システム・サービスに対するコールを出す。ＵＭＨＰＩＣは、セキュリティ対応プロセッサ１０２などのセキュリティ対応プロセッサによって提供される。セキュリティ対応プロセッサは、ＵＭＨＰＩＣ外に実行を転送するための少なくとも１つの出口ゲート、及びＵＭＨＰＩＣ内に実行を転送するための少なくとも１つの入口ゲートを提供する。コールは、ライブラリＯＳ１１６などのライブラリＯＳを含むアプリケーションの何れのサブコンポーネントからも来ることがあり得、ライブラリＯＳを含む何れかのサブコンポーネント及びアプリケーションは、ＵＭＨＰＩＣ内で実行するよう未修正であり得、ＵＭＨＰＩＣ外に実行を転送するためのネイティブ機能を有していないことがあり得る。
【００４１】
４０４では、Ｕ−ＰＡＬ１２０のセキュアなサービス・コンポーネント１２２などの、Ｕ−ＰＡＬのセキュアなサービス・コンポーネントは、アプリケーションからコールを受け取る。セキュアなサービス・コンポーネントはＵＭＨＰＩＣ内で実行する。
【００４２】
４０５では、Ｕ−ＰＡＬは、ホスト・プラットフォームに送出される前にコール・パラメータ内のデータを隠すための動作を行い得る。例えば、Ｕ−ＰＡＬは、ホスト・プラットフォームにより、永続性記憶装置に書き込まれるデータを暗号化し得る。
【００４３】
４０６では、Ｕ−ＰＡＬ１２０のトラステッド・サンキング・コンポーネント１２６などの、Ｕ−ＰＡＬのトラステッド・サンキング・コンポーネントは、コールのパラメータを整列化する。スカラー値の場合などの、一部のパラメータの場合、整列化演算はナル演算であり得る。他のパラメータの場合、整列化演算は、より複雑であり得る。例えば、コールが、ディスクにバッファを書き込むためのものである場合、トラステッド・サンキング・コンポーネントは、保護メモリ領域外の非保護領域に一時バッファを割り当て、保護メモリ領域内のバッファから非保護メモリ内の一時バッファに内容を複製し、一時バッファを指し示すよう、コール・パラメータ内のバッファ・ポインタを更新し得る。別の例では、パラメータは、ポインタリッチ・データ構造を含み得、トラステッド・サンキング・コンポーネントは一時バッファに直列化し得る。
【００４４】
４０８では、ＵＭＨＰＩＣ外で実行する、Ｕ−ＰＡＬ１２０の非トラステッド・サンキング・コンポーネント１２８などの、非トラステッド・サンキング・コンポーネントのコードに実行を転送するよう、セキュリティ対応プロセッサによって提供されるＵＭＨＰＩＣの出口ゲートを起動させる。
【００４５】
４１０では、非トラステッド・サンキング・コンポーネントはコール・パラメータを非整列化する。スカラー値の場合などの、一部のパラメータの場合、非整列化演算はナル演算であり得る。他のパラメータの場合、非整列化演算は、より複雑であり得る。例えば、非整列化演算は、ポインタリッチ・データ構造を非直列化し得る。種々の実施例は、性能を向上させるための、非トラステッド・サンキング・コンポーネントとトラステッド・サンキング・コンポーネントとの間の最適化及び／余分の連係を含み得る。整列化及び非整列化のための種々の最適化を使用し得る。
【００４６】
４１２では、非トラステッド・サンキング・コンポーネントは、ホスト・プラットフォーム１３０などのホスト・プラットフォームにコールを出す。４１４では、ホスト・プラットフォームは、要求されたシステム・サービスを満たす。
【００４７】
４１６では、実行がホスト・プラットフォームから非トラステッド・サンキング・コンポーネントに返ると、非トラステッド・コンポーネントはコールの結果を整列化する。スカラー値の場合などの、一部の結果の場合、整列化演算はナル演算であり得る。他の結果の場合、整列化演算は、より複雑であり得る。例えば、整列化演算は、ポインタリッチ・データ構造を直列化し得る。
【００４８】
４１８では、非トラステッド・サンキング・コンポーネントは、ＵＭＨＰＩＣ内で実行するトラステッド・サンキング・コンポーネントのコードに実行を転送するよう、セキュリティ対応プロセッサによって提供されるＵＭＨＰＩＣの入口ゲートを起動させる。
【００４９】
４２０では、トラステッド・サンキング・コンポーネントは、コールの結果を非整列化する。スカラー値の場合などの、一部の結果の場合、非整列化演算はナル演算であり得る。他の結果の場合、非整列化演算は、より複雑であり得る。例えば、コールが、ディスクからバッファを読み出すためのものである場合、トラステッド・サンキング・コンポーネントは、非保護メモリ内の一時バッファから保護メモリ領域内のバッファにデータを複製し、最終バッファを指し示すよう、結果パラメータにおけるバッファ・ポインタを更新し得る。別の例では、パラメータは、ポインタリッチ・データ構造を含み得、トラステッド・サンキング・コンポーネントは非直列化し得る。
【００５０】
４２１では、セキュアなサービス・コンポーネントは、ホスト・プラットフォームによって提供された記憶デバイスから読み出されたデータを復号し得、更に、データのインテグリティを検証するために、ディジタル署名又はメッセージ認証コードを検証し得る。更に、再生攻撃に対して保護するよう企図された検証を行い得る。前述の工程は、例えば、ハード・ディスク上のページ・ファイルから読み出されるにつれ、仮想メモリ・ページに適用し得る。本明細書で別途明記するように、セキュアなサービス・コンポーネントは、ＵＭＨＰＩＣにおいて実行するアプリケーションにより、ホスト記憶システムに書き込まれたデータを保護する。これは、ホスト・プラットフォームによって提供される何れかのファイル・システムを含むホスト・プラットフォーム及びその記憶サービスが、ＵＭＨＰＩＣにおいて実行するアプリケーションによってトラスティングされていないからである。しかし、アプリケーション自体は、ＵＭＨＰＩＣにおいて実行するよう未修正であり得、したがって、保護することなくファイル・システムにデータを書き込むよう構成し得る。よって、ファイル・システムから読み出されたデータは、セキュアなサービス・コンポーネントにより、復号され、かつ／又は検証される。アプリケーションが、保護データを受け取るよう構成されておらず、復号及び検証に装備されていないことがあり得るからである。実施例では、復号工程４２１は、最適化として非整列化工程４２０と組み合わせ得る。
【００５１】
４２２では、セキュアなサービス・コンポーネントは、結果が首尾一貫し、信頼できるということを検証するために、返ってきた結果を記帳データ構造に対して検証する。実施例では、コールは、システム・リソース又はサービスに対する要求であったかもしれず、セキュアなサービス・コンポーネントは、システム要求に対する要求において返された結果が、要求されたリソース又はサービスに対して有効であるということを検証する。種々の実施例では、システム・リソースは、割り当てられたメモリ・リソース、ネットワーキング・リソース、入出力リソース、又は他のシステム・リソースであり得る。
【００５２】
セキュアなサービス・コンポーネントは、ホスト・プラットフォームからの何れかの非トラステッド・サービスの出力を検証するために記帳データ構造を利用し得る。例えば、記帳データ構造は、ホスト・プラットフォームからのインタフェース・ハンドル及びメモリ割り当てが適切であるということをセキュアなサービス・コンポーネントが検証することを可能にし得る。結果がリソース又はインタフェース・ハンドルである実施例では、セキュアなサービス・コンポーネントは、ハンドル再生攻撃を避けるために、返されたリソース又はインタフェース・ハンドルが、先行して提供されたリソース・ハンドルの複製でないということを検証する。結果がアプリケーションに割り当てられたメモリの表示である実施例では、セキュアなサービス・コンポーネントは、割り当てられたメモリが、（アプリケーションに、それ自身のデータを上書きさせ、予期しない態様で挙動させ得る）アプリケーションへの先行割り当てが行われておらず、アプリケーションにアクセス可能であり、予約された、又は無効のアドレス範囲内に位置していないということを検証する。共通の実施例では、記帳データ構造は、メモリ割り当て、リソース・ハンドル、及びスレッド識別子の１つ又は複数に関するデータを記憶するための構造を含む。
【００５３】
４２４では、コールの結果の記帳データ構造に対する検証により、結果が有効であり、したがって、トラステッドであり得ると判定された場合、実行は進む。
【００５４】
４２６で、４２２における検証の結果が、結果の１つ又は複数が無効であるということを含んでいる場合、セキュアなサービス・コンポーネントは、障害結果をアプリケーションに返す。一部の実施例では、障害結果（例えば、ディスク読み出しサービス要求に対する、周知の「ディスク読み出しエラー」結果）が、そのサービス要求に関連したエラー・コードである。一部の実施例では、障害は、アプリケーションを直ちに終了させる重大な障害としてアプリケーションに供給され得る。
【００５５】
４２８では、４２２における検証の結果が、結果が有効であるということを含む場合、セキュアなサービス・コンポーネントは、サービス要求のタイプに適切であるとして記帳データ構造を更新する。例えば、サービス要求が、新たなメモリ領域を割り当てる旨のものである場合、セキュアなサービス・コンポーネントはメモリ割り当てのテーブルを更新し得る。セキュアなサービス・コンポーネントは、ＵＭＰＨＩＣの保護メモリ領域に新たなメモリ領域を追加する旨の命令をセキュリティ対応プロセッサに向けて出し得る。
【００５６】
４３０では、セキュアなサービス・コンポーネントは、コールの首尾良く行われた旨の結果をアプリケーションに提供し、アプリケーションはその実行を続ける。
【００５７】
図５は、ホスト・プラットフォーム１３０などの、ホスト・プラットフォームからの非同期イベントの実行及び／又は通知の要求を処理するための例示的なプロセス５００を示すフロー図である。５０２では、非トラステッド・サンキング・コンポーネント１２８などの非トラステッド・サンキング・コンポーネントは、ホストＯＳ１１４又はホストＰＡＬ１１８などのホスト・プラットフォームから実行要求又は非同期通知を受け取る。種々の明確に定義されたパラメータは、要求及び非同期通知を伴う。
【００５８】
５０４では、非トラステッド・サンキング・コンポーネントは、要求及び通知を伴うパラメータを整列化する。すなわち、非トラステッド・サンキング・コンポーネントは、ＵＭＨＰＩＣ内で実行する処理に対するエントリ・ゲートを介して、ＵＭＨＰＩＣ１０４などのＵＭＨＰＩＣに転送するのに適切にするようパラメータを変換する。
【００５９】
５０６では、非トラステッド・サンキング・コンポーネントは、ＵＭＨＰＩＣに、通知及び要求に関連付けられた整列化されたパラメータを転送するよう、セキュリティ対応プロセッサによって提供される入口ゲートを起動させる。更に、５０８では、トラステッド・サンキング・コンポーネント１２６などの、ＵＭＨＰＩＣ内で実行するトラステッド・サンキング・コンポーネントは、整列化パラメータを、入口ゲートを介して受け取る。
【００６０】
５１０では、トラステッド・サンキング・コンポーネントは、非トラステッド・サンキング・レイヤから受け取られたパラメータを非整列化する。パラメータを非整列化する工程は、実行要求又は非同期通知を再生成するよう整列化パラメータを変換する工程を伴う。５１２では、トラステッド・サンキング・コンポーネントは、セキュアなサービス・コンポーネント１２２などの、ＵＭＨＰＩＣ内部で実行するセキュアなサービス・コンポーネントに非整列化パラメータを転送する。
【００６１】
５１４では、セキュアなサービス・コンポーネントはセキュリティ関連動作を行う。前述の動作は、ホスト・プラットフォームによって提供される実行要求又は非同期通知が有効であることを検証する工程を含み得る。
【００６２】
５１６では、セキュアなサービス・コンポーネントは、ＵＭＨＰＩＣ内で実行するアプリケーション及び／又はライブラリＯＳに実行要求又は非同期通知を転送する。
【００６３】
図３乃至図５は、種々の実施例による例示的なプロセスを示すフロー図を表す。前述のプロセスの動作は、個々のブロックにおいて例証し、前述のブロックを参照して要約する。前述のプロセスは、論理フロー・グラフとして示し、その各動作は、ハードウェア、ソフトウェア、又はそれらの組み合わせで実現可能な動作セットを表し得る。ソフトウェアのコンテキストでは、動作は、１つ又は複数のプロセッサによって実行されると、開示された動作を行わせるよう１つ又は複数のプロセッサをイネーブルする１つ又は複数のコンピュータ記憶媒体に記憶されたコンピュータ実行可能な命令を表す。一般に、コンピュータ実行可能な命令は、特定の機能を行い、又は特定の抽象データ・タイプを実現するルーチン、プログラム、オブジェクト、モジュール、コンポーネント、データ構造等を含む。動作が記載されている順序は、限定と解されることを意図しておらず、プロセスを実現するよう、記載された何れかの数の動作を何れかの順序で組み合わせ、サブ動作に分け、かつ／又は、並列に行うことが可能である。本開示の種々の実施例によるプロセスは、論理フロー・グラフに表す動作の一部のみ又は全部を含み得る。
【００６４】
コンピュータ読み取り可能な媒体
使用されるコンピューティング・デバイスの構成及びタイプに応じて、図２におけるコンピューティング・システム２００のメモリ２０４は、（ランダム・アクセス・メモリ（ＲＡＭ）などの）揮発性メモリ及び／又は（リードオンリ・メモリ（ＲＯＭ）、フラッシュ・メモリ等などの）不揮発性メモリを含み得る。メモリ２０４は更に、限定列挙でないが、コンピュータ・システム２００用のコンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、及び他のデータの不揮発性記憶装置を提供し得る、テープ記憶デバイス、光学式記憶デバイス、磁気記憶デバイス、及び／又はフラッシュ・メモリを含む更なる着脱可能でない記憶デバイス及び／又は着脱可能な記憶デバイスを含み得る。
【００６５】
メモリ２０４は、コンピュータ読み取り可能な媒体の例である。コンピュータ読み取り可能な媒体は、少なくとも２つのタイプのコンピュータ読み取り可能な媒体（すなわち、コンピュータ記憶媒体及び通信媒体）を含む。
【００６６】
コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、又は他のデータなどの情報の記憶のための何れかのプロセス又は手法において実現される揮発性並びに不揮発性の、着脱可能な媒体及び着脱可能でない媒体を含む。コンピュータ記憶媒体は、限定列挙でないが、相変化メモリ（ＰＲＡＭ）、スタティック・ランダムアクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダムアクセス・メモリ（ＤＲＡＭ）、他のタイプのランダムアクセス・メモリ（ＲＡＭ）、リードオンリ・メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル・リードオンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ又は他のメモリ手法、コンパクト・ディスク・リードオンリ・メモリ（ＣＤ−ＲＯＭ）、ディジタル多用途ディスク（ＤＶＤ）又は他の光学式記憶デバイス、磁気カセット、磁気テープ、磁気ディスク記憶デバイス、若しくは他の磁気記憶デバイス、又はコンピューティング・デバイスによるアクセスのために情報を記憶するために使用することが可能な何れかの他の非伝送媒体を含む。
【００６７】
対照的に、通信媒体は、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波などの変調データ信号、又は他の伝送機構において実施し得る。本明細書及び特許請求の範囲では、コンピュータ記憶媒体は通信媒体を含まない。
【００６８】
終わりに
本開示は、構造的な構成及び／又は方法論的な動作に特有の文言を使用しているが、本発明は上記特定の構成又は動作に制限されない。むしろ、上記特定の構成及び動作は、本発明を実現する例証的な形態として開示している。
【図１】
2015500543.tif 000003
【図２】
2015500543.tif 000004
【図３】
2015500543.tif 000005
【図４】
2015500543.tif 000006
【図５】
2015500543.tif 000007
【国際調査報告】
2015500543.tif 000008
2015500543.tif 000009
2015500543.tif 000010