(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスが実施する方法であって、
ドライバーセキュリティプラットフォームに関連する指定されたフォーマットを有するドライバーパッケージに含まれるトランスモグリファイイング・ドライバーを取得するステップと、
インストールの際に、前記ドライバーパッケージの前記指定されたフォーマットを、前記ドライバーパッケージとともに含まれる識別データに少なくとも部分的に基づいて認識するステップと、
前記認識に応答して、前記ドライバーセキュリティプラットフォームを介して前記トランスモグリファイイング・ドライバーのために可能にされたタスクのセットを確かめ、前記トランスモグリファイイング・ドライバーを、前記コンピューティングデバイスによって実施される前記ドライバーセキュリティプラットフォームに登録するステップと、
前記トランスモグリファイイング・ドライバーの動作を、前記ドライバーセキュリティプラットフォームを介して可能にされたタスクの前記セットに制限する実行環境をインスタンス化するステップと、
前記ドライバーセキュリティプラットフォームの指示で１つまたは複数のタスクを実行するように、制限された前記実行環境内で前記トランスモグリファイイング・ドライバーを実行するステップと
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記ドライバーセキュリティプラットフォームを介して前記トランスモグリファイイング・ドライバーのために可能にされたタスクのセットを確かめることは、前記トランスモグリファイイング・ドライバーのタイプに基づき、可能にされたタスクの前記セットを定めることを含む、方法。
【請求項３】
請求項１又は２に記載の方法であって、前記トランスモグリファイイング・ドライバーは、ユーザーモードで実行される、方法。
【請求項４】
請求項１又は２に記載の方法であって、前記トランスモグリファイイング・ドライバーは、ユーザーごとに実行される、方法。
【請求項５】
請求項１又は２に記載の方法であって、制限された前記実行環境はアプリケーションコンテナーを確立し、前記アプリケーションコンテナーは、前記トランスモグリファイイング・ドライバーを隔離して、システムリソースに対する前記トランスモグリファイイング・ドライバーによるアクセスを制限するように構成された、方法。
【請求項６】
請求項５に記載の方法であって、前記アプリケーションコンテナーは、コンポーネントによる前記トランスモグリファイイング・ドライバーに対するアクセスを拒否するようにさらに構成され、前記コンポーネントは、前記ドライバーセキュリティプラットフォームに関連付けられていないものである、方法。
【請求項７】
請求項１又は２に記載の方法であって、制限された前記実行環境は、前記ドライバーセキュリティプラットフォームによってタスクのスケジューリングが扱われる前記トランスモグリファイイング・ドライバーのための背景プロセスを含む、方法。
【請求項８】
請求項１又は２に記載の方法であって、制限された前記実行環境は、前記ドライバーセキュリティプラットフォームによる、タスクを実行するための前記トランスモグリファイイング・ドライバーの明示的な呼び出しがない場合に、前記トランスモグリファイイング・ドライバーを一時停止するように構成された、方法。
【請求項９】
請求項１又は２に記載の方法であって、制限された前記実行環境は、ユーザー同意に依存して前記トランスモグリファイイング・ドライバーの動作を選択的に可能にするように構成された、方法。
【請求項１０】
請求項１又は２に記載の方法であって、前記トランスモグリファイイング・ドライバーは、ネットワークを介してサービスプロバイダーのアプリケーションストアから取得される、方法。
【請求項１１】
請求項１又は２に記載の方法であって、前記トランスモグリファイイング・ドライバーは、ある形態から別の形態へデータを変換するように構成された、方法。
【請求項１２】
請求項１又は２に記載の方法であって、前記ドライバーセキュリティプラットフォームは、前記コンピューティングデバイスのためのオペレーティングシステムのコンポーネントとして実施される、方法。
【請求項１３】
請求項１又は２に記載の方法であって、前記トランスモグリファイイング・ドライバーは仮想プライベートネットワーク（ＶＰＮ）ドライバーを含み、前記仮想プライベートネットワーク（ＶＰＮ）ドライバーは、ネットワークを介したＶＰＮ通信のためにパケットのカプセル化およびカプセル化解除を行うように構成された、方法。
【請求項１４】
コンピューティングデバイスをドライバーセキュリティプラットフォームとして機能させるプログラムであって、前記ドライバーセキュリティプラットフォームは動作を実行するように構成され、該動作は、
ドライバーセキュリティプラットフォームに関連する指定されたフォーマットを有するドライバーパッケージに含まれるトランスモグリファイイング・ドライバーを取得する動作と、
前記トランスモグリファイイング・ドライバーと前記ドライバーセキュリティプラットフォームとの関連付けを、前記ドライバーパッケージとともに含まれる識別データに少なくとも部分的に基づいて認識する動作と、
前記認識に応答して、前記ドライバーセキュリティプラットフォームを介して前記トランスモグリファイイング・ドライバーのために可能にされたタスクのセットを確かめる動作と、
前記トランスモグリファイイング・ドライバーの動作を、前記ドライバーセキュリティプラットフォームを介して可能にされたタスクの前記セットに制限する実行環境を確立する動作と、
前記トランスモグリファイイング・ドライバーの動作を可能にされたタスクの前記セットに制限する前記実行環境を介して、前記トランスモグリファイイング・ドライバーの動作を制御する動作と
を含む、プログラム。
【請求項１５】
請求項１４に記載のプログラムであって、前記ドライバーセキュリティプラットフォームを介して前記トランスモグリファイイング・ドライバーのために可能にされたタスクのセットを確かめる前記動作は、前記トランスモグリファイイング・ドライバーのタイプに基づき、可能にされたタスクの前記セットを定める動作を含む、プログラム。
【請求項１６】
請求項１４又は１５に記載のプログラムであって、
前記トランスモグリファイイング・ドライバーは仮想プライベートネットワーク（ＶＰＮ）ドライバーを含み、
前記ＶＰＮドライバーのために前記ドライバーセキュリティプラットフォームを介して可能にされたタスクの前記セットは、ネットワークを介したＶＰＮサーバーとのＶＰＮ通信に関連する、接続、切断、カプセル化及びカプセル化解除のタスクに制限される、
プログラム。
【請求項１７】
請求項１４又は１５に記載のプログラムであって、前記トランスモグリファイイング・ドライバーの前記動作を制御する動作は、
可能にされたタスクの前記セットの実行のために、前記トランスモグリファイイング・ドライバーを呼び出す動作と、
前記ドライバーセキュリティプラットフォームによるタスクを実行する指示がない場合に、前記トランスモグリファイイング・ドライバーを一時停止する動作と
を含む、プログラム。
【請求項１８】
請求項１４又は１５に記載のプログラムであって、前記トランスモグリファイイング・ドライバーの前記動作を制御する動作は、タスクの前記セットを、前記ドライバーセキュリティプラットフォームにより仲介される背景タスクとしてスケジューリングする動作を含む、プログラム。
【請求項１９】
請求項１４又は１５に記載のプログラムであって、前記実行環境は、サンドボックス化されたアプリケーションコンテナーを含み、該サンドボックス化されたアプリケーションコンテナーは、ユーザーモードにおいてユーザーごとに実行され、可能にされたタスクの前記セットに関するものを除き、システムアクセスを防ぐように構成された低特権トークンを割り当てられた、プログラム。
【請求項２０】
１以上の処理コンポーネントと、
前記１以上の処理コンポーネントをドライバーセキュリティプラットフォームとして機能させる命令を記憶した１以上のコンピューター可読記憶媒体と
を備えたコンピューティングシステムであって、前記ドライバーセキュリティプラットフォームは、少なくとも１つのＶＰＮドライバーの動作を制限し、
ドライバーマネージャーモジュールであって、
前記ドライバーマネージャーモジュールは、前記ＶＰＮドライバーをネットワークを介してサービスプロバイダーのアプリケーションストアから取得し、前記ＶＰＮドライバーは、前記ドライバーセキュリティプラットフォームに関連する指定されたフォーマットを有するドライバーパッケージに含まれ、
前記ドライバーマネージャーモジュールは、インストールの際に、前記ドライバーパッケージの前記指定されたフォーマットを、前記ドライバーパッケージとともに含まれる識別データに少なくとも部分的に基づいて認識し、前記識別データは識別子、コード又はファイル拡張子を含み、
前記認識に応答して、前記ドライバーマネージャーモジュールは、前記ドライバーセキュリティプラットフォームを介して前記ＶＰＮドライバーのために可能にされたタスクのセットを確かめ、前記ＶＰＮドライバーを含むようにアプリケーションコンテナーを確立し、該アプリケーションコンテナーは、ユーザーモードにおいてユーザーごとに実行され、タスクの前記セットに関するものを除き、システムアクセスを防ぐように構成された低特権トークンを割り当てられ、タスクの前記セットは、前記ＶＰＮドライバーのために前記ドライバーセキュリティプラットフォームにより明示的に可能にされた、
前記ドライバーマネージャーモジュールと、
背景マネージャーモジュールであって、
前記ＶＰＮドライバーを含む前記アプリケーションコンテナーのために背景プロセスをインスタンス化し、
前記背景プロセスを介してタスクの前記セットのスケジューリングを扱い、
タスクの前記セットが前記ドライバーマネージャーモジュールの指示で実行されるとき以外、前記背景プロセスを一時停止する
前記背景マネージャーモジュールと、
前記背景マネージャーモジュールを介してスケジュールされたタスクを実行するように、前記ＶＰＮドライバーとシステムサービスとの間の対話を仲介するイベントを生成するイベントブローカーと
を含む、コンピューティングシステム。
【請求項２１】
請求項２０に記載のコンピューティングシステムであって、前記ドライバーセキュリティプラットフォームを介して前記ＶＰＮドライバーのために可能にされたタスクのセットを確かめることは、ドライバーのタイプがＶＰＮドライバーであることに基づき、可能にされたタスクの前記セットを定めることを含む、コンピューティングシステム。
【請求項２２】
請求項２０又は２１に記載のコンピューティングシステムであって、前記イベントブローカーにより生成される前記イベントは、前記コンピューティングシステムを介してさらされるユーザーインターフェース（ＵＩ）コンポーネントとの対話の仲介のためのＵＩイベントを含む、コンピューティングシステム。
【請求項２３】
請求項２０又は２１に記載のコンピューティングシステムであって、前記ＶＰＮドライバーのために前記ドライバーセキュリティプラットフォームにより明示的に可能にされたタスクの前記セットは、ネットワークを介したＶＰＮサーバーとのＶＰＮ通信に関連する、接続、切断、カプセル化及びカプセル化解除のタスクのうちの１以上を含む、コンピューティングシステム。
【請求項２４】
請求項１４から１９のうちの何れか一項に記載のプログラムを記憶した１以上のコンピューター可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]現在、仮想プライベートネットワーク（ＶＰＮ）ドライバーなどの、基礎をなすデータを１つの形態から別の形態に変換することを実施するトランスモグリファイイング・ドライバーが、システム全体にわたる特権、高い優先度、および慎重な扱いを要するデータに対するアクセスを有する可能性があり、したがって、相当なセキュリティリスクをもたらす可能性がある。これらの懸念の一部のため、ユーザーは、そのようなドライバー、および関連するソフトウェアをユーザーのデバイスにインストールすることに乗り気でない可能性がある。例えば、ユーザーは、このタイプの製品の想定されるリスクのため、オンラインアプリケーションストアからＶＰＮプラグインをダウンロードして、インストールすることに乗り気でない可能性がある。したがって、そのようなトランスモグリファイイング・ドライバーを包含する製品の商取引および流通が妨げられる可能性がある。
【発明の概要】
【０００２】
[0002]制限されたトランスモグリファイイング・ドライバー・プラットフォームが、本明細書で説明される。１つまたは複数の実装形態において、仮想プライベートネットワーク（ＶＰＮ）ドライバー、および他のトランスモグリファイイング・ドライバーのための制限された実行環境を可能にするプラットフォームが、提供される。そのプラットフォームは、ドライバーがそのプラットフォームに登録され、そのプラットフォームによってサポートされる機能を実行するように呼び出されることが可能なインターフェースを公開するオペレーティングシステムコンポーネントとして実装され得る。その制限された実行環境が、そのプラットフォームを介して動作するトランスモグリファイイング・ドライバーに１つまたは複数の制限を課す。例えば、実行は、ユーザーごとに、サンドボックス内で、ユーザーモードで行われ得る。さらに、そのプラットフォームは、関連するドライバーが、比較的低い特権を有する背景プロセスにおいて実行されるようにする。さらに、そのプラットフォームは、背景タスクをスケジュールすることによって、それらのドライバーを一時停止（ｓｕｓｐｅｎｄ；サスペンド）させること、およびそれらのドライバーの動作を制御することが可能である。したがって、システムに対するトランスモグリファイイング・ドライバーの公開が、そのプラットフォームを介して制御され、制限される。
【０００３】
[0003]この概要は、詳細な説明において後段でさらに説明される選定された概念を簡略化した形態で概説するように与えられる。この概要は、主張される主題の重要な特徴または基本的な特徴を特定することは意図しておらず、主張される主題の範囲を決定する助けとして使用されることも意図していない。
【０００４】
[0004]詳細な説明は、添付の図を参照して説明される。図において、参照符号の左端の数字は、その参照符号が最初に出現する図を識別する。説明および図における異なる実例での同一の参照符号の使用は、同様のアイテム、または同一のアイテムを示し得る。
【図面の簡単な説明】
【０００５】
【図１】[0005]制限されたトランスモグリファイイング・ドライバープラットフォーム技法の１つまたは複数の実装形態による環境を示す図である。
【図２】[0006]１つまたは複数の実装形態による例示的なシナリオを示す図である。
【図３】[0007]トランスモグリファイイング・ドライバーを実行するための制限された実行環境を使用するための例示的な手順を示す流れ図である。
【図４】[0008]トランスモグリファイイング・ドライバーの動作が制御される例示的な手順を示す流れ図である。
【図５】[0009]トランスモグリファイイング・ドライバーがオンラインアプリケーションストアを介して配布される例示的な手順を示す流れ図である。
【図６】[0010]１つまたは複数の実施形態による例示的なコンピューティングシステムを示す図である。
【発明を実施するための形態】
【０００６】
概略
[0011]仮想プライベートネットワーク（ＶＰＮ）ドライバーおよび他のトランスモグリファイイング・ドライバーに関するセキュリティ上の懸念の一部のため、ユーザーは、トランスモグリファイイング・ドライバーを使用する製品をユーザーのデバイスにインストールすることに乗り気でない可能性がある。したがって、そのようなトランスモグリファイイング・ドライバーを包含する製品の商取引および流通が妨げられる可能性がある。
【０００７】
[0012]制限されたトランスモグリファイイング・ドライバープラットフォームが、本明細書で説明される。１つまたは複数の実装形態において、仮想プライベートネットワーク（ＶＰＮ）ドライバー、および他のトランスモグリファイイング・ドライバーのための制限された実行環境を可能にするプラットフォームが、提供される。そのプラットフォームは、ドライバーがそのプラットフォームに登録され、そのプラットフォームによってサポートされる機能を実行するように呼び出されることが可能なインターフェースを公開するオペレーティングシステムコンポーネントとして実装され得る。その制限された実行環境が、そのプラットフォームを介して動作するトランスモグリファイイング・ドライバーに１つまたは複数の制限を課す。例えば、実行は、ユーザーごとに、サンドボックス内で、ユーザーモードで行われ得る。さらに、そのプラットフォームは、関連するドライバーが、比較的低い特権を有する背景プロセスにおいて実行されるようにする。さらに、そのプラットフォームは、背景タスクをスケジュールすることによって、それらのドライバーを一時停止させること、およびそれらのドライバーの動作を制御することが可能である。したがって、システムに対するトランスモグリファイイング・ドライバーの公開が、そのプラットフォームを介して制御され、制限される。
【０００８】
[0013]以下の説明において、本明細書で説明される技法を使用することが可能である例示的な動作環境がまず説明される。次に、例示的な環境、および他の環境において実施され得る例示的な詳細および技法が説明される。したがって、それらの技法の実行は、その例示的な環境に限定されず、その例示的な環境は、その例示的な技法の実行に限定されない。最後に、１つまたは複数の実施形態を実施するのに使用され得る例示的なシステムおよびデバイスが説明される。
例示的な動作環境
[0014]図１は、本明細書で説明される技法を使用するように動作可能である例示的な実装形態における環境１００の図である。図示される環境１００は、ネットワーク１０４を介してサービスプロバイダー１０６に通信可能に結合されるクライアントデバイス１０２を含む。サービスプロバイダー１０６は、様々なリソース１０８（例えば、コンテンツおよびサービス）を、ネットワーク１０４を介してクライアントデバイス１０２および他のクライアントに利用可能にするように構成され得る。一般に、サービスプロバイダー１０６によってアクセス可能にされるリソース１０８には、１つまたは複数のプロバイダーによってネットワークを介して通常、利用可能にされるサービスおよび／またはコンテンツの任意の適切な組合せが含まれ得る。サービスのいくつかの例には、検索サービス、電子メールサービス、インスタントメッセージングサービス、オンライン生産性サービス、およびリソースに対するクライアントのアクセスを管理する認証サービスが含まれるが、以上には限定されない。コンテンツは、テキスト、マルチメディアストリーム、文書、アプリケーションファイル、写真、オーディオ／ビデオファイル、アニメーション、画像、ウェブページ、ウェブアプリケーション、デバイスアプリケーション、ブラウザーもしくは他のクライアントアプリケーションによって表示されるためのコンテンツなどの様々な組合せを含み得る。
【０００９】
[0015]クライアントデバイス１０２およびサービスプロバイダー１０６は、１つまたは複数のコンピューティングデバイスによって実装されることが可能であり、１つまたは複数のエンティティを表すことも可能である。コンピューティングデバイスは、様々な様態で構成され得る。例えば、コンピューティングデバイスは、デスクトップコンピューター、移動局、エンターテイメント機器、ディスプレイデバイスに通信可能に結合されたセットトップボックス、ワイヤレス電話、ゲームコンソールなどの、ネットワークを介して通信することができるコンピューターとして構成され得る。このため、コンピューティングデバイスは、かなりのメモリリソースおよびプロセッサリソースを有する全リソースデバイス（例えば、パーソナルコンピューター、ゲームコンソール）から、限られたメモリリソースおよび／または処理リソースを有する低リソースデバイス（例えば、従来のセットトップボックス、ハンドヘルドゲームコンソール）まで多様であり得る。さらに、単一のコンピューティングデバイスがいくつかの実例に示されるものの、コンピューティングデバイスは、サービスプロバイダー１０６によって利用される複数のサーバーなどの、複数の異なるデバイスを表すことが可能である。
【００１０】
[0016]クライアントデバイス１０２は、オペレーティングシステム１１０を含むものとしてさらに図示される。オペレーティングシステム１１０は、クライアントデバイス１０２上で実行可能であるアプリケーション１１２に対する基礎をなすハードウェアの基礎をなす機能を抽象化するように構成される。例えば、オペレーティングシステム１１０は、処理機能、メモリ機能、ネットワーク機能、および／または表示機能を抽象化して、アプリケーション１１２が、この基礎をなす機能が「どのように」実施されるかを知ることなしに、書かれ得るようにすることが可能である。アプリケーション１１２は、例えば、ディスプレイデバイスによってレンダリングされ、表示されるようにオペレーティングシステム１１０にデータを供給することを、このレンダリングがどのように実行されるかを理解することなしに、行うことが可能である。
【００１１】
[0017]本明細書で説明される技法によれば、クライアントデバイス１０２は、トランスモグリファイイング・ドライバー１１４と、トランスモグリファイイング・ドライバー１１４の動作に制限を課すように様々な様態で構成され得るドライバーセキュリティプラットフォーム１１６とを含むものとしても図示される。トランスモグリファイイング・ドライバー１１４は、本明細書で説明されるドライバーセキュリティプラットフォーム１１６によって管理され、制御されることが可能な様々な種類のアプリケーションモジュール、プラグイン、および／または他のサードパーティプログラムを表す。一般に、トランスモグリファイイング・ドライバー１１４は、基礎をなすデータを１つの形態から別の形態に変換することを実施する。１つの例示的なタイプのトランスモグリファイイング・ドライバーが、データパケットを、ＶＰＮクライアントとＶＰＮサーバーとの間のセキュリティ保護されたＶＰＮ通信のために独自の形態に変換する（例えば、カプセル化する／カプセル化解除する）仮想プライベートネットワーク（ＶＰＮ）ドライバーである。他の例には、データをパケット化する／パケット化解除するネットワーク・インターフェース・カード・ドライバー、マルウェアを認識して、扱うウイルス対策ドライバー、グラフィックスを処理する／変換するグラフィックス処理ドライバー、アプリケーションデータを、プリンターのための印刷可能なフォーマットに変換するプリンタードライバーなどが含まれ得るが、以上には限定されない。また、本明細書で説明される技法は、ＶＰＮトンネルおよび他のインターネットプロトコル（ＩＰ）トンネル、データパイプ、トランスポートストリーム、ファイアウォールなどにも適用可能である。
【００１２】
[0018]従来のモデルにおいて、トランスモグリファイイング・ドライバー１１４は、システム全体にわたる特権、高い優先度、および慎重な扱いを要するデータに対するアクセスを有し得る。一般に、トランスモグリファイイング・ドライバーは、オペレーティングシステムに密結合され、カーネルモードで実行される。このため、トランスモグリファイイング・ドライバー１１４は、カーネルモードドライバー、システムドライバー、および／またはクラスドライバーを含み、かつ／または以上のようなものとして呼ばれることが可能である。トランスモグリファイイング・ドライバー１１４は、通常、より高い特権と、カーネルモードにおける完全システムアクセスとを有するので、これらの種類のドライバーは、相当なセキュリティリスクをもたらし、不正な目的で悪意のある相手によって使用されるターゲット／道具となる可能性がある。無制限の特権およびアクセスを有して自由に動作するトランスモグリファイイング・ドライバー１１４は、処理リソースおよびバッテリ寿命に悪影響を及ぼす可能性もある。さらに、アプリケーションストアまたは他のオンラインチャネルを介したトランスモグリファイイング・ドライバーの配布が、以上に列挙した懸念の少なくとも一部のために妨げられる可能性がある。
【００１３】
[0019]しかし、本明細書で説明される発明の原理によれば、前述の懸念を軽減する制限された様態で、ユーザーモードでトランスモグリファイイング・ドライバー１１４を実行することを可能にする制限された実行環境が、確立され得る。例えば、前段および後段で説明される制限された実行環境内でトランスモグリファイイング・ドライバー１１４を制御することによって、システムをより信頼できるようにし、ドライバー動作のリソース消費量を低減し、ドライバーを介したシステムの勝手な利用を防止し、ユーザーごとのインストールを可能にし、したがって、インターネットチャネル経由のドライバーの配布を成立可能なオプションにするのに有効であるセキュリティが、ドライバーの動作に課される。
【００１４】
[0020]特に、ドライバーセキュリティプラットフォーム１１６は、トランスモグリファイイング・ドライバー１１４のための制限された実行環境をインスタンス化するクライアントデバイス１０２の機能を表す。ドライバーセキュリティプラットフォーム１１６によって表される機能は、様々な様態で実施され得る。一部の実装形態において、ドライバーセキュリティプラットフォーム１１６は、オペレーティングシステムコンポーネントとして提供され得るが、ドライバーセキュリティプラットフォーム１１６は、図示されるとおり、スタンドアロンのコンポーネントとして実装されることも可能である。図示されるとおり、ドライバーセキュリティプラットフォーム１１６は、プラットフォームの様々な態様を実施するドライバーマネージャーモジュール１１８、アプリケーションコンテナー１２０、背景マネージャー１２２、およびイベントブローカー１２４を含むこと、またはそれ以外で構成することが可能である。
【００１５】
[0021]ドライバーマネージャーモジュール１１８は、プラットフォームに関連付けられたトランスモグリファイイング・ドライバー１１４を認識して、管理するプラットフォームの機能を表す。ドライバーマネージャーモジュール１１８は、ドライバーごとに確立されたアプリケーションコンテナー１２０、すなわち、「サンドボックス」を介して、ユーザーごとにユーザーモードでトランスモグリファイイング・ドライバー１１４の実行を制御することが可能である。アプリケーションコンテナー１２０は、個々のドライバーのために実行され得る限られたタスクのセットを定め（ｄｅｆｉｎｅ；定義し）、定められたタスクのセットに動作を制限する。アプリケーションコンテナー１２０は、二重壁のサンドボックス化された隔離をさらにもたらし、すなわち、コンテナーの内側からシステムに入るアクセスも、外部エンティティからコンテナーに入るアクセスもともに制限される。このことは、外部エンティティが、アプリケーションコンテナー内のサンドボックス化されたドライバーを乗っ取ること、および／またはそのようなドライバーを制御することを防止する。
【００１６】
[0022]背景マネージャー１２２は、背景プロセスを使用してアプリケーションコンテナー１２０（および関連するドライバー）を管理するように動作可能である。このことは、それらのコンテナーのために背景プロセスをインスタンス化すること、および背景プロセスのためのタスクスケジューリングを扱うことを含み得るが、以上には限定されない。背景プロセスには、比較的少ない特権およびアクセス権を渡す低特権トークンまたは同等の制御データが割り当てられることが可能である。すなわち、ドライバーセキュリティプラットフォーム１１６は、アクセス、および／または動作の自由を制限する比較的低い優先度をトランスモグリファイイング・ドライバー１１４に関連付ける。また、背景マネージャー１２２は、使用中でない場合にトランスモグリファイイング・ドライバー１１４に関する背景プロセスの一時停止（ｓｕｓｐｅｎｓｉｏｎ）をもたらすことも可能であり、このことは、ユーザーおよび／またはドライバーセキュリティプラットフォーム１１６の特定の指示以外で作業を実行するトランスモグリファイイング・ドライバーの能力をさらに制限する。例えば、トランスモグリファイイング・ドライバー１１４は、ドライバーまたはドライバーのタイプのために特別に定められたタスクのセットが、ドライバーマネージャーモジュール１１８の指示で実行されている場合以外は、一時停止されることが可能である。
【００１７】
[0023]背景マネージャー１２２は、図示されるとおり、ドライバーセキュリティプラットフォーム１１６のコンポーネントとして実装され得る。代替として、背景マネージャー１２２は、トランスモグリファイイング・ドライバー１１４を含む背景プロセスを使用して複数のアプリケーション１１２の動作を管理し、協調させるように設計されたオペレーティングシステム（ＯＳ）コンポーネントとして構成されてもよい。このアプローチにおいて、ドライバーセキュリティプラットフォーム１１６は、ＯＳの組み込まれた機能を活用してアプリケーションの背景動作をサポートするよう背景マネージャー１２２と対話するように構成され得る。
【００１８】
[0024]イベントブローカー１２４は、トランスモグリファイイング・ドライバー、および対応するアプリケーションコンテナー１２０に関して可能にされる指定されたタスクを実行するようドライバーとシステムサービスとの間の対話を仲介するイベントを生成する機能を表す。特に、イベントブローカー１２４は、背景マネージャー１２２によってスケジュールされたタスクの実行を生じさせるイベントを生成するように動作することが可能である。一部の実装形態において、このことは、アプリケーションプログラミングインターフェース（ＡＰＩ）または他の適切なインターフェースなどのエントリーポイントをコーディングする適切な呼出しを生成することを含む。イベントブローカー１２４は、ＯＳに関連付けられた表示画面およびＵＩ、ブラウザー、ＶＰＮクライアントアプリケーション、および／または他のアプリケーションなどの、コンピューティングデバイスによって公開されるユーザーインターフェース要素との対話を仲介するイベントを生成するようにさらに構成され得る。説明される様態で「サンドボックス化された」トランスモグリファイイング・ドライバーは、ＵＩコンポーネントおよびＵＩ要素の直接の操作を制限され得る。したがって、イベントブローカー１２４は、過度のセキュリティ脆弱性なしにトランスモグリファイイング・ドライバー１１４に代行してＵＩコンポーネントとの対話および協調を可能にする代理として動作することが可能である。
【００１９】
[0025]図１にさらに示されるとおり、サービスプロバイダー１０６は、アプリケーションストアサービス１２６を管理し、アプリケーションストアサービス１２６に対するクライアントアクセスを提供するように構成され得る。アプリケーションストアサービス１２６は、サービスプロバイダー１０６によって、ネットワーク１０４を介してクライアントに提供され得るリソース１０８のうちの特定の１つを表す。アプリケーションストアサービス１２６は、アプリケーションをブラウズし、選択し、購入し、かつ／またはダウンロードするオンラインアプリケーションデータベース（例えば、アプリケーションマーケットプレース）に対するユーザーアクセスを可能にするように構成される。様々な開発者からのアプリケーションが、アプリケーションストアサービス１２６を介してクライアントに入手可能にされ得る。
【００２０】
[0026]本明細書で説明される技法によれば、アプリケーションストアサービス１２６は、ドライバーセキュリティプラットフォーム１１６を介して制御されるトランスモグリファイイング・ドライバー１１４のための配布機構として選択され得る。このことは、ドライバーセキュリティプラットフォーム１１６を介してドライバーのためにインスタンス化される制限された実行環境を使用して実現されるさらなるセキュリティ対策、制限、およびパフォーマンス利得により、可能にされる。１つのアプローチにおいて、トランスモグリファイイング・ドライバー１１４は、ドライバーセキュリティプラットフォーム１１６に関連付けられた、指定された知られているフォーマットでアプリケーションマーケットプレースに含められるようにパッケージ化され得る。指定されたフォーマットの対応するトランスモグリファイイング・ドライバー１１４を包含するドライバーパッケージ１２８が、アプリケーションストアサービス１２６を介して入手可能にされることが可能であり、図１に示されるとおり、ネットワーク１０４を介してクライアントデバイス１０２によって使用されるようにダウンロードされることが可能である。１つのアプローチにおいて、ドライバーパッケージ１２８は、アプリケーションストアサービス１２６に関連付けられた独自のフォーマット（．ａｐｐｘ、または別の同等のストア特有もしくはプロバイダー特有のフォーマット）を使用することが可能である。さらに、または代替として、このパッケージは、ドライバーセキュリティプラットフォーム１１６によってサポートされるトランスモグリファイイング・ドライバーを包含するものとしてドライバーパッケージ１２８の認識を円滑にする識別子、キー、コード、ファイル拡張子、または他の適切な識別データを包含するように構成され得る。
【００２１】
[0027]インストールの時点で、ドライバーセキュリティプラットフォーム１１６は、ドライバーマネージャーモジュール１１８によって、またはそれ以外で、ドライバーパッケージ１２８および／またはフォーマットを、そのパッケージに含められた適切な識別データに基づいて、ドライバーセキュリティプラットフォーム１１６に関連付けられているものとして認識することが可能である。したがって、認識されたフォーマットにおけるドライバーパッケージ１２８のインストールに応答して、ドライバーマネージャーモジュール１１８は、対応するトランスモグリファイイング・ドライバーを、プラットフォームに登録して、その結果、ドライバーセキュリティプラットフォーム１１６を介して可能にされるそのドライバーのための制限、およびさらなるセキュリティを実施するように動作することが可能である。
【００２２】
[0028]制限されたトランスモグリファイイング・ドライバープラットフォームの以上およびその他の態様に関するさらなる詳細が、全体的に２００で図２に示される例示的な使用シナリオに関連して説明される。この例において、アプリケーションコンテナー１２０またはサンドボックスは、仮想プライベートネットワーク（ＶＰＮ）ドライバー２０２を包含するものとして示されるが、本明細書で説明されるとおり、他のドライバー、プラグイン、およびコードも企図される。アプリケーションコンテナー１２０は、この事例では、偶々、ＶＰＮドライバー２０２である、包含されるドライバーのための限られたタスクのセットを可能にするように構成される。このＶＰＮシナリオにおいて、可能にされるタスクは、ネットワークを介したＶＰＮサーバーとのＶＰＮ通信に関連する接続動作、切断動作、カプセル化動作、および／またはカプセル化解除動作に制限され得る。他のタイプのドライバーおよびコードが、アクセスおよびパフォーマンスの影響を最小限に抑えながら、それらのドライバーおよびコードのコア機能をサポートするようにプラットフォームによって可能にされる対応する動作に関連付けられ得る。許容可能なタスクのセットが、各タイプのドライバーに、かつ／または個別のドライバーごとに関連付けられることが可能である。前述したとおり、アプリケーションコンテナー１２０は、プラットフォームを介してドライバーのために可能にされた特定のタスクのセットにドライバーを効果的に制限する。
【００２３】
[0029]図２は、ユーザーモードとカーネルモードとの間の様々なコンポーネントの分割も示す。一般に、コンピューティングデバイスの処理システムは、実行されるコードのタイプに依存して、ユーザーモードとカーネルモードとの間で切り換わることが可能である。通常、デスクトップアプリケーションは、ユーザーモードで実行され、コアオペレーティングシステムコンポーネントは、カーネルモードで実行される。カーネルモードで動作するドライバー／コードは、共通のメモリ割当てを共有して、他のドライバー／コードもしくはＯＳリソースから隔離されないことが可能である。前述したとおり、トランスモグリファイイング・ドライバーは、従来、ＯＳに対して実質的に無制限のアクセスを有して、システム全体のクラッシュを生じさせる潜在性を有するカーネルモードドライバーとして実装される。ただし、本明細書で説明される技法によれば、トランスモグリファイイング・ドライバーは、代わりに、適切な制限された実行環境を介してユーザーモードで実行され得る。
【００２４】
[0030]特に、アプリケーションコンテナー１２０、およびアプリケーションコンテナー１２０に包含されるＶＰＮドライバー２０２が、ユーザーモードで実行されているものとして図２に示される。ＶＰＮドライバー２０２は、ドライバーインターフェース２０４を介してカーネル２０６によって提供されるオペレーティングシステム１１０のコアサービスおよび機能と対話することが可能である。カーネル２０６は、一般に、ソフトウェアコンポーネントによってハードウェアの動作を円滑にする基礎をなすハードウェア２０８のソフトウェア抽象化を実装する。ドライバーインターフェース２０４は、カーネル２０６によって表されるコアサービスおよび機能が、ユーザーモードで実行されるコードにアクセス可能にされる、オペレーティングシステム１１０に関連付けられた１つまたは複数のアプリケーションプログラミングインターフェース（ＡＰＩ）または他の適切なインターフェースを表すことが可能である。
【００２５】
[0031]特定の例において、コアサービスおよび機能は、ＶＰＮ通信を円滑にするＶＰＮサービス２１０を少なくとも含む。ＶＰＮサービス２１０は、ドライバーインターフェースによってサポートされる適切な呼出しおよび呼戻しを介してサービスを呼び出すように構成され得る、ＶＰＮドライバー２０２のための可能にされたタスクのセットに対応することが可能である。ドライバーインターフェース２０４は、図示されるとおり、アプリケーションコンテナー１２０内で、またはスタンドアロンのコンポーネントとしてインスタンス化され得る。ドライバーインターフェース２０４によって表される機能は、ユーザーモードコンポーネントと、カーネルモードで動作するカーネル２０６の対応するコンポーネントとの間で分割されることも可能である。ドライバーインターフェース２０４を介する対話は、ドライバーマネージャーモジュール１１８を介して、またはそれ以外で、ドライバーセキュリティプラットフォームを介して制御され得る。
【００２６】
[0032]動作の際、背景マネージャー１２２は、アプリケーションコンテナー１２０のために背景プロセス２１１をセットアップし、背景プロセス２１１を使用してＶＰＮドライバー２０２の実行を管理することが可能である。タスクは、プラットフォームの指示でスケジュールされ得る。一般に、このことは、ユーザーの明示的な指示（例えば、ユーザー選択またはユーザー同意）で、またはユーザー入力に基づいて確立されたプロファイルに従って行われる。そのプロファイルは、アプリケーションコンテナー１２０内でＶＰＮドライバー２０２が利用できるタスクのセットを定め、それに相応して関連する特権およびアクセス権を設定することが可能である。次に、プラットフォームが、アプリケーションコンテナー１２０を使用してプロファイルによって示される制限を執行するように動作する。プロファイルは、例えば、特定の動作が実行されるたびに（例えば、動作のインスタンスごとに）ユーザー同意が取得されるべきであることを示すことが可能であり、その場合、ユーザー同意のための通知およびプロンプトが、それらの特定の動作を選択的に制御するように生成され得る。また、プロファイルは、いくつかの選択された動作が、各インスタンスに関する同意のさらなる指示なしに自動的に行われることを許す包括的な、またはデフォルトのユーザー同意を示すことも可能である。ユーザー同意が存在しない状況において、アプリケーションコンテナー１２０は、ドライバーが制限されたタスクを実行するのを防止するように動作する。すなわち、制限された実行環境は、ユーザー同意に依存して、トランスモグリファイイング・ドライバーの動作を選択的に可能にするように構成される。このため、ユーザーには、プラットフォームを介して管理されるトランスモグリファイイング・ドライバー１１４に関して可能にされた範囲の対話に対する究極の制御が与えられる。
【００２７】
[0033]図２は、イベントブローカー１２４を相手にしたアプリケーションコンテナー１２０の対話をさらに示す。特に、イベントブローカー１２４は、背景マネージャー１２２を介してスケジュールされたタスクの実行をもたらす、ＶＰＮドライバーのためのＶＰＮイベント２１２および／またはユーザーインターフェースイベント２１４を生成するように動作することが可能である。例えば、ＶＰＮイベント２１２は、ＶＰＮサービス２１０を呼び出すドライバーインターフェース２０４に向けられた呼出しを含み得る。さらに、イベントブローカー１２４は、オペレーティングシステム１１０、アプリケーション１１２、または他のＵＩのためにＵＩコンポーネントを操作するユーザーインターフェースイベント２１４を生成することが可能である。このことは、適切な状況で、スケジュールされたタスクに関するユーザー同意を取得する通知を出力することを含み得るが、以上には限定されない。
【００２８】
[0034]このようにして、制限された実行環境が、従来、カーネルモードで実行されるＶＰＮドライバー２０２および／または他のトランスモグリファイイング・ドライバーの動作を制御するように実装され得る。そのようなドライバーは、一般に、図２に示されるとおり、特定の形態で入力データ２１６を受け付け、そのデータを処理して、変換されたデータ２１８を異なる形態で生成する。例えば、図２のＶＰＮドライバー２０２は、企業サーバーに対するセキュリティ保護されたＶＰＮ通信のためにデータパケットを独自のフォーマットにカプセル化するように動作することが可能である。また、ＶＰＮドライバー２０２は、企業サーバーから独自のフォーマットで取得されたデータパケットをカプセル化解除して、クライアントデバイス１０２によって消費可能なデータにするように構成されることも可能である。他のタイプのドライバーが、ドライバーの意図される機能に結び付けられた同等のデータ変換を実行するように構成される。例えば、プリンタードライバーは、印刷するためにデータを変換し、ネットワーク・インターフェース・カード・ドライバーは、データのパケット化およびパケット化解除を行うように動作し、ウイルス対策ドライバーは、ファイルをスキャンして、ファイルを知られているシグネチャと比較することが可能であるといった具合である。
【００２９】
[0035]このため、ＶＰＮドライバーおよび他のトランスモグリファイイング・ドライバーに関する様々な制限を執行するように構成された制限された実行環境を可能にするドライバーセキュリティプラットフォームが提供され得る。プラットフォームは、ドライバーが、プラットフォームに登録して、プラットフォームによってサポートされ、かつ／または可能にされるタスクを実行するように呼び出されることが可能なインターフェースを公開するオペレーティングシステムコンポーネントとして実装され得る。トランスモグリファイイング・ドライバーは、このプラットフォームを介して、ユーザーモードで、ユーザーごとに、それらのトランスモグリファイイング・ドライバーの特権およびシステムアクセスを制限する「サンドボックス」アプリケーションコンテナー内で実行され得る。
【００３０】
[0036]例示的な動作環境の以上の説明を考慮したので、次に、以下の例示的な手順に関連して説明される制限されたトランスモグリファイイング・ドライバープラットフォームのための技法に関する詳細を考慮する。
例示的な手順
[0037]このセクションは、図３〜図５の例示的な手順を参照して、制限されたトランスモグリファイイング・ドライバープラットフォームのための技法の詳細を説明する。後段の説明の部分において、様々な態様が実施され得る図１の例示的な動作環境が参照され得る。後段で説明される手順の各々の態様は、ハードウェアで、ファームウェアで、またはソフトウェアで、あるいは以上の組合せで実施され得る。これらの手順は、１つまたは複数のデバイスによって実行される動作を指定するセットのブロックとして示され、それぞれのブロックによって動作を実行するために示される順序に必ずしも限定されない。少なくとも一部の実装形態において、これらの手順は、ドライバーセキュリティプラットフォーム１１６または同等の機能を含む、または利用する図１の例示的なクライアントデバイス１０２のような、適切に構成されたコンピューティングデバイスによって実行され得る。
【００３１】
[0038]図３は、トランスモグリファイイング・ドライバーを実行するための制限された実行環境を使用するための例示的な手順３００を示す流れ図である。トランスモグリファイイング・ドライバーが、ドライバーセキュリティプラットフォームに登録される（ブロック３０２）。例えば、ドライバーマネージャーモジュール１１８が、指定されたフォーマットでパッケージ化されたドライバーを認識するように構成され得る。そのパッケージは、例えば、ドライバーセキュリティプラットフォームに、そのドライバーが、そのプラットフォームのために設計され、そのプラットフォームを介して制御されるべきであることを示す適切な識別子を含むことが可能である。このため、そのドライバーがインストールされると、ドライバーマネージャーモジュール１１８は、そのパッケージおよび／またはその識別子を検出して、システムを介して扱うためにそのドライバーを登録する。その後、そのドライバーの動作が、ドライバーセキュリティプラットフォームによって、対応する制限を伴って管理される。
【００３２】
[0039]トランスモグリファイイング・ドライバーのために制限された実行環境がインスタンス化され（ブロック３０４）、トランスモグリファイイング・ドライバーが、１つまたは複数のタスクを実行するように呼び出される（ブロック３０６）。次に、トランスモグリファイイング・ドライバーが、その制限された実行環境を介して実行されて、それらのタスクが実行される（ブロック３０８）。この場合、ドライバーマネージャーモジュール１１８が、特定のドライバーのための制限された実行環境を、そのドライバーが実行される際に確立することが可能である。制限された実行環境は、前述したとおり、アプリケーションコンテナー１２０（例えば、「サンドボックス」）を備え得る。制限された実行環境は、実行中に適用される様々な制限を、トランスモグリファイイング・ドライバーの動作に課す。例えば、制限された実行環境は、システムリソースに対するアクセスを制限するように対応するドライバーを隔離する。特に、アクセスは、そのドライバーの機能に関連付けられた、指定されたタスクのセットに制限され得る。そのドライバーは、それらのタスクを実行するようにシステムによって呼び出され、そのドライバー独自でタスクを開始することができない場合がある。例えば、制限された実行環境は、そのドライバーが独自にオブジェクトを作成するのを防止することが可能である。代わりに、特定のタスクに関するオブジェクトは、プラットフォームによって作成されて、そのドライバーによって使用されるように制限された実行環境に渡される。
【００３３】
[0040]また、そのドライバーは、制限された実行環境を介して背景タスクとして実行されることも可能であり、限られた特権およびアクセス権を渡す特権トークンを割り当てられることが可能である。制限された実行環境に関連付けられた背景プロセスは、作業を実行するようプラットフォームおよび／またはユーザーによる特定の指示が存在しない状況で一時停止され得る。さらに、制限された実行環境は、ドライバーセキュリティプラットフォームに関連付けられていないアプリケーションおよび他のコンポーネントに、トランスモグリファイイング・ドライバーに対するアクセスを行わせずに、そのドライバーの不正変更および／または乗っ取りを防止する。
【００３４】
[0041]さらに、そのドライバーは、前述したとおり、ユーザーモードで実行され、ユーザーごとにインストールされることも可能である。したがって、異なるユーザーが、同一のクライアントデバイス上で、かつ／または同一の目的で使用するために異なるドライバーをインストールすることが可能である。このことは、ユーザー選好による異なるハードウェア、または異なるソフトウェアバージョンの使用を円滑にすることが可能である。それらのドライバーは、ユーザーモードでサンドボックス化されるので、１つのドライバーをインストールすること、およびアンインストールすることは、他のユーザーの体験に影響を及ぼさない。例えば、ＶＰＮ技術に関連して、同一のデバイスの異なるユーザーが、互いに悪影響を及ぼすことなしに、異なる雇用主のそれぞれのＶＰＮサーバーに異なるＶＰＮドライバーを使用して接続することも可能である。
【００３５】
[0042]さらに、説明される技法を使用して実装されたドライバーは、不安定性、または意図しない振舞いを生じさせる可能性がある残余のファイル、データ、設定、および特性を残すことなく、容易に、完全に取り除かれ得る。このことは、制限された実行環境が、それぞれのドライバーによる排他的な使用のためにストレージの個別化された割当てをもたらすため、可能である。そのドライバーは、データまたは設定を別の場所に書き込むアクセスを有しないことが可能である。したがって、ドライバーおよび状態をクリーンアップすることは、そのドライバーに関連付けられた、割り当てられたストレージに包含されるデータを削除することによって容易に達せられる。
【００３６】
[0043]図４は、トランスモグリファイイング・ドライバーの動作が制御される例示的な手順を示す流れ図である。ドライバーセキュリティプラットフォームに対するトランスモグリファイイング・ドライバーの関連付けが認識される（ブロック４０２）。例えば、トランスモグリファイイング・ドライバーが、前述したとおり、ドライバーセキュリティプラットフォーム１１６に登録されることが可能である。そのドライバーの動作は、その後、制御された様態でドライバーセキュリティプラットフォーム１１６を介して扱われる。この関連付けは、そのドライバーが指定されたフォーマットまたはパッケージにおいて構成されていることに基づいて、インストール時に確立されてもよい。前述したとおり、．ａｐｐｘフォーマットが、プラットフォームにドライバーを関連付けるのに使用され得る１つの適切なフォーマットであるが、他のファイルタイプ、名前、および識別情報も企図される。
【００３７】
[0044]トランスモグリファイイング・ドライバーのために可能にされるタスクのセットが確かめられる（ブロック４０４）。可能にされるタスクのセットは、ドライバーの特定のタイプ（例えば、ＶＰＮ対プリンター対ウイルス対策など）などのドライバーの識別、および／または特定の各ドライバーの個別の識別（例えば、異なる製造業者／プロバイダーに関連する同一のタイプのドライバーを区別する）に基づくことが可能である。したがって、プラットフォームは、個別の各ドライバーに関して、かつ／またはドライバータイプに基づいて、指定されたタスクのセットをサポートし、可能にすることができる。そのタスクのセットは、オペレーティングシステムが公開し、ドライバーが履行することを可能にする特定の契約であり得る。このため、所与のドライバーが識別されると、プラットフォームは、ドライバーが実行することができるタスクの種類を知り、それらのタスクを可能にし、ドライバーが、他のタスクを実行することを防止することが可能である。
【００３８】
[0045]特に、トランスモグリファイイング・ドライバーの動作を、可能にされたタスクのセットに制限する実行環境が、確立される（ブロック４０６）。例えば、制限された実行環境は、前述した様態で確立され得る。制限された実行環境は、いくつかのタスクまたは契約を可能にするが、それ以外では、ドライバーが、オペレーティングシステムリソースにアクセスすること、またはドライバーが実行することを、ドライバーセキュリティプラットフォームによって明示的に許可されていないタスクを実行することを防止する。
【００３９】
[0046]次に、トランスモグリファイイング・ドライバーの動作が、可能にされたタスクのセットを実行するようトランスモグリファイイング・ドライバーを呼び出すこと、およびドライバーセキュリティプラットフォームによる呼出しが存在しない状況でトランスモグリファイイング・ドライバーを一時停止することを含め、実行環境を介して制御される（ブロック４０８）。この場合も、制限された実行環境を介して実行されるトランスモグリファイイング・ドライバーは、独自にタスクを開始することができるのではなく、プラットフォームによって呼び出される。ドライバーは、タスクを実行するように能動的に呼び出されていない場合、一時停止状態に保たれ得る。このことは、作業を可能にするように一時停止を解除され、その後、その作業が完了すると、一時停止状態に戻される背景プロセス２１１を介して行われ得る。このため、ドライバーによって実行される作業は、プラットフォームおよび／またはユーザーの指示で行われる。ドライバーは、一般に、プラットフォームによってそのドライバーのために指定されたもの以外のタスクを実行することができない。また、ドライバーは、プラットフォームによって要求されるのでない限り、動作することもできず、このことは、ドライバーが、システムリソースおよびバッテリ寿命を自由に消費するのを防止する。
【００４０】
[0047]図５は、トランスモグリファイイング・ドライバーがオンラインアプリケーションストアを介して配布される例示的な手順を示す流れ図である。オンラインアプリケーションストアにプラグインを含めるためのドライバーセキュリティプラットフォームによって認識可能なアプリケーションパッケージフォーマットが、定められる（ブロック５０２）。例えば、サードパーティプロバイダーからのトランスモグリファイイング・ドライバー１１４および他のコードなどのプラグインが、ドライバーセキュリティプラットフォーム１１６のために定められた、指定されたフォーマットを使用するドライバーパッケージ１２８の中に符号化され得る。開発者は、指定されたフォーマットを使用して、ドライバーセキュリティプラットフォーム１１６を活用し、プラットフォームを介して開発者のコード／ドライバーを適切に扱うようプラットフォームに合図することが可能である。ドライバーパッケージ１２８は、．ａｐｐｘフォーマットまたは他の指定されたフォーマットを使用してアプリケーションストアサービス１２６を介してなど、アプリケーションマーケットプレースに含めることを円滑にするように構成され得る。
【００４１】
[0048]オンラインアプリケーションストアを介してそれらのプラグインをダウンロードするアクセスが可能にされる（ブロック５０４）。次に、それらのプラグインが、クライアントがそれらのプラグインをドライバーセキュリティプラットフォームに登録して、それらのプラグインの動作を制御する制限された実行環境を実装するようにさせるのに有効な定められたフォーマットでクライアントに配布される（ブロック５０６）。トランスモグリファイイング・ドライバー１１４を提供物としてアプリケーションマーケットプレースに含めることは、一部には、ユーザーが、オンラインストアからそのようなドライバーをダウンロードして、インストールする可能性をより高めるドライバーセキュリティプラットフォーム１１６を介して実現可能なさらなるセキュリティ対策、制限、およびパフォーマンス利得のため、成立可能である。このため、指定されたフォーマットで対応するトランスモグリファイイング・ドライバー１１４を包含するドライバーパッケージ１２８が、アプリケーションストアサービス１２６を介して入手可能にされ得る。ドライバーパッケージ１２８は、ドライバーセキュリティプラットフォーム１１６によるパッケージの認識を円滑にする適切な識別データを包含することが可能である。ドライバーセキュリティプラットフォーム１１６は、ドライバーパッケージ１２８を、インストールされると認識して、そのドライバーを登録し、制限された実行環境を作成し、そのドライバーに課せられる様々な制限を執行するなどの本明細書で説明される動作を実行するように構成される。
【００４２】
[0049]いくつかの例示的な手順を考慮したので、次に、１つまたは複数の実施形態による様々な態様を実施する例示的なシステムおよびデバイスの説明を考慮する。
例示的なシステムおよびデバイス
[0050]図６は、本明細書で説明される様々な技法を実施することが可能な１つまたは複数のコンピューティングシステムおよび／またはコンピューティングデバイスを表す例示的なコンピューティングデバイス６０２を含む例示的なシステム６００を示す。コンピューティングデバイス６０２は、例えば、サービスプロバイダーのサーバー、クライアントに関連するデバイス（例えば、クライアントデバイス）、オンチップシステム、および／または他の任意の適切なコンピューティングデバイスまたはコンピューティングシステムであり得る。
【００４３】
[0051]図示される例示的なコンピューティングデバイス６０２は、互いに通信可能に結合された処理システム６０４、１つまたは複数のコンピューター可読媒体６０６、および１つまたは複数のＩ／Ｏインターフェース６０８を含む。図示されないものの、コンピューティングデバイス６０２は、様々なコンポーネントを互いに結合するシステムバス、または他のデータおよびコマンド転送システムをさらに含み得る。システムバスは、様々なバスアーキテクチャのいずれかを利用するメモリバスもしくはメモリコントローラー、周辺バス、ユニバーサルシリアルバス、および／またはプロセッサバスもしくはローカルバスなどの異なるバス構造のいずれか１つまたは組合せを含み得る。また、制御線およびデータ線などの様々な他の例も企図される。
【００４４】
[0052]処理システム６０４は、ハードウェアを使用して１つまたは複数の動作を実行する機能を表す。したがって、処理システム６０４は、プロセッサ、機能ブロックなどとして構成され得るハードウェア要素６１０を含むものとして示される。このことは、特定用途向け集積回路、あるいは１つまたは複数の半導体を使用して形成された他の論理デバイスとしてハードウェアで実装することを含み得る。ハードウェア要素６１０は、ハードウェア要素６１０が形成される材料、またはハードウェア要素６１０において使用される処理機構によって限定されない。例えば、プロセッサは、半導体および／またはトランジスタ（例えば、電子集積回路（ＩＣ））から成ることが可能である。そのような脈絡において、プロセッサ実行可能命令は、電子的に実行可能な命令であり得る。
【００４５】
[0053]コンピューター可読媒体６０６は、メモリ／ストレージ６１２を含むものとして示される。メモリ／ストレージ６１２は、１つまたは複数のコンピューター可読媒体に関連するメモリ／ストレージ能力を表す。メモリ／ストレージ６１２は、揮発性媒体（ランダムアクセスメモリ（ＲＡＭ）など）および／または不揮発性媒体（読取り専用メモリ（ＲＯＭ）、フラッシュメモリ、光ディスク、磁気ディスクなど）を含み得る。メモリ／ストレージ６１２は、固定メディア（例えば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）およびリムーバブルメディア（例えば、フラッシュメモリ、リムーバブルハードドライブ、光ディスクなど）を含み得る。コンピューター可読媒体６０６は、後段でさらに説明されるとおり、様々な他の様態で構成されてもよい。
【００４６】
[0054]入出力インターフェース６０８は、様々な入出力デバイスを使用して、ユーザーが、コンピューティングデバイス６０２にコマンドおよび情報を入力することを可能にし、また、情報が、ユーザーおよび／または他のコンポーネントもしくはデバイスに提示されることも可能にする機能を表す。入力デバイスの例には、キーボード、カーソル制御デバイス（例えば、マウス）、音声動作のためのマイクロフォン、スキャナー、タッチ機能（例えば、物理的タッチを検出するように構成された静電容量センサまたは他のセンサ）、カメラ（例えば、可視の波長、または赤外線周波数などの不可視の波長を使用して、タッチがジェスチャーとして関与しない動きを検出することが可能である）などが含まれる。出力デバイスの例には、ディスプレイデバイス（例えば、モニタまたはプロジェクター）、スピーカー、プリンター、ネットワークカード、触覚応答デバイスなどが含まれる。このため、コンピューティングデバイス６０２は、ユーザー対話をサポートするように後段でさらに詳細に説明される様々な様態で構成され得る。
【００４７】
[0055]様々な技法が、ソフトウェア、ハードウェア要素、またはプログラムモジュールの一般的な脈絡において本明細書で説明され得る。一般に、そのようなモジュールには、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造などが含まれる。本明細書で使用される「モジュール」、「機能」、および「コンポーネント」という用語は、ソフトウェア、ファームウェア、ハードウェア、または以上の組合せを一般的に表す。本明細書で説明される技法の特徴は、プラットフォーム独立であり、すなわち、これらの技法は、様々なプロセッサを有する様々な市販のコンピューティングプラットフォーム上で実施され得る。
【００４８】
[0056]説明されるモジュールおよび技法の実装形態は、何らかの形態のコンピューター可読媒体上に格納されること、またはそのような媒体を介して伝送されることが可能である。コンピューター可読媒体には、コンピューティングデバイス６０２によってアクセスされ得る様々な媒体が含まれ得る。例として、限定としてではなく、コンピューター可読媒体には、「コンピューター可読記憶媒体」および「通信媒体」が含まれ得る。
【００４９】
[0057]「コンピューター可読記憶媒体」とは、単なる信号伝送、搬送波、または信号自体とは異なり、情報を記憶することを可能にする媒体および／またはデバイスを指す。このため、コンピューター可読記憶媒体は、信号担持媒体または信号自体を含まない。コンピューター可読記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュール、論理要素／回路、またはその他のデータなどの情報を記憶するのに適した方法または技術で実装された揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体および／またはストレージなどのハードウェアを含む。コンピューター可読記憶媒体の例には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ，フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは所望される情報を記憶するのに適しており、コンピューターによってアクセスされ得る他のストレージデバイス、有形の媒体、または製造品が含まれ得るが、以上には限定されない。
【００５０】
[0058]「通信媒体」とは、ネットワークを介するなどして、コンピューティングデバイス６０２のハードウェアに命令を伝送するように構成された信号担持媒体を指す。通信媒体は、通常、搬送波、データ信号、または他のトランスポート機構などの、変調されたデータ信号としてコンピューター可読命令、データ構造、プログラムモジュール、またはその他のデータを具体化することが可能である。また、通信媒体には、任意の情報配信媒体も含まれる。「変調されたデータ信号」という用語は、信号内に情報を符号化するように特性の１つまたは複数が設定された、または変更された信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、および他のワイヤレス媒体などのワイヤレス媒体が含まれる。
【００５１】
[0059]前述したとおり、ハードウェア要素６１０およびコンピューター可読媒体６０６は、本明細書で説明される技法の少なくともいくつかの態様を実施するように一部の実施形態において使用され得るハードウェア形態で実装された命令、モジュール、プログラマブルデバイスロジックおよび／または固定デバイスロジックを表す。ハードウェア要素は、集積回路もしくはオンチップシステム、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ（ＣＰＬＤ）、およびシリコンデバイスまたは他のハードウェアデバイスとしての他の実装形態のコンポーネントを含み得る。この脈絡で、ハードウェア要素は、ハードウェア要素によって具体化される命令、モジュール、および／またはロジックによって定められたプログラムタスクを実行する処理デバイスとして動作するとともに、実行のために命令を記憶するのに利用されるハードウェアデバイス、例えば、前述したコンピューター可読媒体として動作することが可能である。
【００５２】
[0060]また、前述したコンピューター可読媒体およびハードウェア要素の組合せも、本明細書で説明される様々な技法およびモジュールを実施するのに使用され得る。したがって、オペレーティングシステム１１０、アプリケーション１１２、ドライバーセキュリティプラットフォーム１１６、および他のプログラムモジュールを含むソフトウェア、ハードウェア、またはプログラムモジュールは、何らかの形態のコンピューター可読記憶媒体上に、かつ／または１つまたは複数のハードウェア要素６１０によって具体化された１つまたは複数の命令および／またはロジックとして実装され得る。コンピューティングデバイス６０２は、ソフトウェアモジュールおよび／またはハードウェアモジュールに対応する特定の命令および／または機能を実施するように構成され得る。したがって、ソフトウェアとしてコンピューティングデバイス６０２によって実行可能であるモジュールとしてのモジュールの実装は、少なくとも部分的にハードウェアで、例えば、処理システムのコンピューター可読媒体および／またはハードウェア要素６１０の使用を介して実現され得る。それらの命令および／または機能は、本明細書で説明される技法、モジュール、および例を実施するように１つまたは複数の製造品（例えば、１つまたは複数のコンピューティングデバイス６０２および／または処理システム６０４）によって実行可能／操作可能であり得る。
【００５３】
[0061]図６にさらに示されるとおり、例示的なシステム６００は、パーソナルコンピューター（ＰＣ）、テレビデバイス、および／またはモバイルデバイスの上でアプリケーションを実行する際、シームレスなユーザー体験のためのユビキタス環境を可能にする。サービスおよびアプリケーションは、アプリケーションを利用している間、ビデオゲームを行っている間、ビデオを観ている間などに１つのデバイスから次のデバイスに遷移する際、共通のユーザー体験のために３つすべての環境において実質的に同様に実行される。
【００５４】
[0062]例示的なシステム６００において、複数のデバイスが、中央コンピューティングデバイスを介して互いに接続される。その中央コンピューティングデバイスは、その複数のデバイスに対してローカルであってもよく、その複数のデバイスから遠隔に配置されてもよい。一実施形態において、中央コンピューティングデバイスは、ネットワーク、インターネット、または他のデータ通信リンクを介してその複数のデバイスに接続された１つまたは複数のサーバーコンピューターのクラウドであり得る。
【００５５】
[0063]一実施形態において、この相互接続アーキテクチャは、複数のデバイスにわたって機能が提供されて、その複数のデバイスのユーザーに共通で、シームレスな体験をもたらすことを可能にする。複数のデバイスのそれぞれは、異なる物理的要件および能力を有することが可能であり、中央コンピューティングデバイスは、プラットフォームを使用して、そのデバイスに合わされているとともに、それでも、すべてのデバイスに共通である体験をそのデバイスに提供することを可能にする。一実施形態において、ターゲットデバイスのクラスが作成され、体験は、デバイスのその汎用クラスに合わされる。デバイスのクラスは、物理的特徴、使用のタイプ、またはデバイスの他の共通の特性によって定められ得る。
【００５６】
[0064]様々な実装形態において、コンピューティングデバイス６０２は、コンピューター６１４使用向け、モバイル６１６使用向け、およびテレビ６１８使用向けなどの、様々な異なる構成をとり得る。これらの構成のそれぞれは、全体的に異なる構造および能力を有し得るデバイスを含み、このため、コンピューティングデバイス６０２は、それらの異なるデバイスクラスのうちの１つまたは複数により構成され得る。例えば、コンピューティングデバイス６０２は、パーソナルコンピューター、デスクトップコンピューター、マルチスクリーンコンピューター、ラップトップコンピューター、ネットブックなどを含むデバイスのコンピューター６１４クラスとして実施され得る。
【００５７】
[0065]また、コンピューティングデバイス６０２は、モバイル電話、ポータブル音楽プレーヤー、ポータブルゲームデバイス、タブレットコンピューター、マルチスクリーンコンピューターなどのモバイルデバイスを含むデバイスのモバイル６１６クラスとして実装されることも可能である。また、コンピューティングデバイス６０２は、気軽な視聴環境において全体的により大きい画面を有する、またはそのような画面に接続されたデバイスを含むテレビ６１８クラスのデバイスとして実装されることも可能である。これらのデバイスは、テレビ、セットトップボックス、ゲームコンソールなどを含む。
【００５８】
[0066]本明細書で説明される技法は、コンピューティングデバイス６０２のこれらの様々な構成によってサポートされることが可能であり、本明細書で説明される技法の特定の例に限定されない。このことは、コンピューティングデバイス６０２上にドライバーセキュリティプラットフォーム１１６が含まれることを介して例示される。ドライバーセキュリティプラットフォーム１１６および他のモジュールの機能は、すべて、または部分的に、後段で説明されるとおり、プラットフォーム６２２を介して「クラウド」６２０にわたってなど、分散システムの使用を介して実施されることも可能である。
【００５９】
[0067]クラウド６２０は、リソース６２４のためのプラットフォーム６２２を含み、かつ／または表す。プラットフォーム６２２は、クラウド６２０のハードウェア（例えば、サーバー）リソースおよびソフトウェアリソースの基礎をなす機能を抽象化する。リソース６２４は、コンピューター処理が、コンピューティングデバイス６０２から遠隔のサーバー上で実行されている間に利用され得るアプリケーションおよび／またはデータを含むことが可能である。また、リソース６２４は、インターネットを介して、かつ／またはセルラーネットワークもしくはＷｉ−Ｆｉネットワークなどの加入者ネットワーク経由で提供されるサービスを含むことも可能である。
【００６０】
[0068]プラットフォーム６２２は、コンピューティングデバイス６０２を他のコンピューティングデバイスに接続するリソースおよび機能を抽象化することが可能である。また、プラットフォーム６２２は、プラットフォーム６２２を介して実施されるリソース６２４を求める遭遇したデマンドに対して対応するレベルのスケールをもたらすリソースのスケーリングを抽象化する役割をすることも可能である。したがって、互いに接続されたデバイス実施形態において、本明細書で説明される機能の実装形態は、システム６００全体にわたって分散されることが可能である。例えば、機能は、部分的にコンピューティングデバイス６０２上で実施されるとともに、クラウド６２０の機能を抽象化するプラットフォーム６２２を介して実施されることが可能である。
結論
[0069]本発明について、構造上の特徴、および／または方法上の動作に特有の言い回しで説明してきたが、添付の特許請求の範囲において規定される本発明は、説明されるそれらの特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および動作は、主張される発明を実施する例示的な形態として開示される。
【図１】
0006348173.tif 000002
【図２】
0006348173.tif 000003
【図３】
0006348173.tif 000004
【図４】
0006348173.tif 000005
【図５】
0006348173.tif 000006
【図６】
0006348173.tif 000007