(57)【要約】  アプリケーションによる選択的ファイルシステムアクセスを可能にするための方法、システム、およびコンピュータプログラム製品が提供される。アプリケーションがコンピューティングデバイスにインストールされる。アプリケーションに関連づけられたアプリケーションマニフェストが受け取られる。アプリケーションマニフェストは、アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す。示されたファイルタイプが、ブローカーサービスによってアクセス可能な場所に記録される。アプリケーションがアプリケーションプロセスとして起動される。アプリケーションプロセスが、アプリケーションコンテナにおいて隔離される。アプリケーションコンテナは、アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを阻止する。ファイルシステムデータのうちの第１のデータに関連するアクセス要求が、アプリケーションプロセスからブローカーサービスで受け取られる。ブローカーサービスが、第１のデータのファイルタイプが、記録されたファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第１のデータへのアクセスが可能にされる。
2014530399.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおける方法であって、
前記コンピューティングデバイスにアプリケーションをインストールするステップと、
前記アプリケーションに関連づけられたアプリケーションマニフェストを受け取るステップであって、前記アプリケーションマニフェストは、前記アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す、ステップと、
ブローカーサービスによってアクセス可能な場所に前記１つ以上のファイルタイプを記録するステップであって、前記ブローカーサービスは、前記アプリケーションによるアクセスを、前記記録された１つ以上のファイルタイプのファイルに限定するように形成されている、記録するステップと
を含む、方法。
【請求項２】
前記アプリケーションをアプリケーションプロセスとして起動するステップと、
前記アプリケーションプロセスをアプリケーションコンテナへロードするステップであって、前記アプリケーションコンテナは、前記アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを拒否する、ステップと、
前記ファイルシステムデータのうちの第１のデータに関連するアクセス要求を、前記アプリケーションプロセスから前記ブローカーサービスで受け取るステップと、
前記ブローカーサービスが、前記第１のデータのファイルタイプは前記記録された１つ以上のファイルタイプに含まれていると判断した場合、前記アプリケーションプロセスによる前記第１のデータへのアクセスを可能にするステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記１つ以上のファイルタイプは、１つ以上のファイル拡張子、ファイルの種類、または、他のファイル属性またはメタデータを含み、前記記録するステップは、
前記ブローカーサービスによってはアクセス可能であるが前記アプリケーションプロセスによってはアクセス可能でないセキュアな場所に、前記アプリケーションのための前記アプリケーションマニフェストにおいて示された、前記１つ以上のファイル拡張子、ファイルの種類、または、他のファイル属性またはメタデータのインジケーションを記憶するステップ
を含む、請求項２に記載の方法。
【請求項４】
前記アプリケーションプロセスをアプリケーションコンテナへロードするステップは、
前記アプリケーションコンテナのための識別子を含む前記アプリケーションプロセスのためのトークンを生成するステップであって、前記トークンは、前記アプリケーションプロセスによって変更不可能である、生成するステップ
を含む、請求項３に記載の方法。
【請求項５】
前記ファイルシステムデータのうちの第１のデータに関連するアクセス要求を、前記アプリケーションプロセスから前記ブローカーサービスで受け取るステップは、
前記トークンと前記アクセス要求において要求された前記第１のデータのインジケーションとを前記ブローカーサービスで受け取るステップ
を含む、請求項４に記載の方法。
【請求項６】
前記アプリケーションプロセスによる前記第１のデータへのアクセスを可能にするステップは、
前記ブローカーサービスによって、前記アクセス要求において要求された前記第１のデータの前記インジケーションに基づいて前記第１のデータのファイルタイプを決定するステップと、
前記ブローカーサービスによって、前記セキュアな場所における前記アプリケーションのための前記記録された１つ以上のファイルタイプにアクセスするステップと、
前記ブローカーサービスによって、前記第１のデータのファイルタイプが前記記録された１つ以上のファイルタイプに含まれるかどうかを判断するステップと、
前記ブローカーサービスによって、前記第１のデータのファイルタイプが前記記録された１つ以上のファイルタイプに含まれると判断された場合に前記アプリケーションプロセスが前記第１のデータにアクセスできるようにするステップと
を含む、請求項５に記載の方法。
【請求項７】
前記アプリケーションプロセスによる前記第１のデータへのアクセスを可能にするステップは、
前記ブローカーサービスによって、前記第１のデータのファイルタイプが前記記録された１つ以上のファイルタイプに含まれないと判断された場合に前記アプリケーションプロセスによる前記第１のデータへのアクセスを拒否するステップ
を含む、請求項６に記載の方法。
【請求項８】
前記拒否するステップは、
前記第１のデータのファイルを読み取ること、前記第１のデータのフォルダのコンテンツを読み取ること、前記第１のデータのファイルまたはフォルダのうちの少なくとも１つに書き込むこと、前記第１のデータのファイルまたはフォルダの名前を変更すること、前記第１のデータのファイルまたはフォルダを移動すること、或いは前記第１のデータのファイルまたはフォルダを上書きコピーすることのための前記アプリケーションプロセスによるアクセスを拒否するステップ
を含む、請求項７に記載の方法。
【請求項９】
コンピューティングデバイスであって、
前記コンピューティングデバイスにインストールされたアプリケーションと、前記アプリケーションに関連づけられたアプリケーションマニフェストと、を記憶したストレージであって、前記アプリケーションマニフェストは、前記アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す、ストレージと、
ブローカーサービスを含み、前記ブローカーサービスによってアクセス可能な場所に前記アプリケーションマニフェストによって示された前記１つ以上のファイルタイプを記録する、処理ロジックであって、前記ブローカーサービスは、前記アプリケーションによるアクセスを、前記記録されたファイルタイプのファイルに限定するように形成されている、処理ロジックと
を備える、コンピューティングデバイス。
【請求項１０】
コンピュータプログラムロジックが記録されたコンピュータ可読媒体を備えるコンピュータプログラム製品であって、
請求項１乃至８のいずれか一項に記載の方法をプロセッサに実行させるコンピュータプログラムロジック手段
を備える、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施の形態はファイルにアクセスするための方法及びコンピューティングデバイス等に関連する。
【背景技術】
【０００２】
アプリケーションは、コンピュータシステムにおいて実行され、１つ以上のタスクを実行するために実現される、実行可能なプログラムコードを含む。アプリケーションのためのプログラムコードを形成するために使用され得る、多種多様なタイプのプログラミング言語が存在する。オフィススイートアプリケーション、デスクトップアプリケーション、モバイルアプリケーション、ウェブアプリケーション等を含む、さまざまな機能を実行するためのさまざまなタイプのアプリケーションが存在する。いくつかのアプリケーションは、それらの機能を実行する際に使用される、それらのホストコンピュータまたは他のコンピュータのファイルシステムに記憶されたデータにアクセスし得る。たとえば、ワードプロセッシングアプリケーションは、編集のために、テキストファイルまたはドキュメントファイルにアクセスし得る。メディアプレイヤアプリケーションは、再生のために、オーディオファイルおよび／またはビデオファイルにアクセスし得る。データベースアプリケーションは、さまざまな用途のために、データベースのデータベースファイルにおけるデータにアクセスし得る。
【０００３】
しかしながら、アプリケーションは典型的に、そのアプリケーションに関連のないファイルシステムデータを含むファイルシステムデータへのアクセス権を有するので、悪意あるプログラムコードを含むアプリケーションが多種多様なファイルシステムデータに害を与えてしまうことが懸念される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第2010-0153671号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一観点による課題は、アプリケーションによる適切なファイルアクセスを可能にする方法及び装置等を提供することである。
【課題を解決するための手段】
【０００６】
一観点による方法は、
コンピューティングデバイスにおける方法であって、
前記コンピューティングデバイスにアプリケーションをインストールするステップと、
前記アプリケーションに関連づけられたアプリケーションマニフェストを受け取るステップであって、前記アプリケーションマニフェストは、前記アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す、ステップと、
ブローカーサービスによってアクセス可能な場所に前記１つ以上のファイルタイプを記録するステップであって、前記ブローカーサービスは、前記アプリケーションによるアクセスを、前記記録された１つ以上のファイルタイプのファイルに限定するように形成されている、記録するステップと
を含む、方法である。
【図面の簡単な説明】
【０００７】
【図１】例示的な実施形態に係る、アプリケーションによるファイルシステムデータへのアクセスを規制するように構成されたコンピューティングデバイスのブロック図である。
【０００８】
【図２】例示的な実施形態に係る、ブローカーサービスがオペレーティングシステムに含まれる、コンピューティングデバイスのブロック図である。
【０００９】
【図３】例示的な実施形態に係る、アプリケーションによるファイルシステムデータへのアクセスを規制するための処理を提供するフローチャートである。
【００１０】
【図４】例示的な実施形態に係る、ファイルシステムデータへの制御されたアクセスのためにアプリケーションをインストールし、構成するための処理を提供するフローチャートである。
【００１１】
【図５】例示的な実施形態に係る、アプリケーションがファイルシステムデータへの制御されたアクセスのためにインストールされ、構成される、コンピューティングデバイスのブロック図である。
【００１２】
【図６】例示的な実施形態に係る、アプリケーションマニフェストのブロック図である。
【００１３】
【図７】例示的な実施形態に係る、アプリケーションコンテナにおいてアプリケーションを起動するための処理を提供するフローチャートである。
【００１４】
【図８】例示的な実施形態に係る、アプリケーションがアプリケーションコンテナにおいて起動される、コンピューティングデバイスのブロック図である。
【００１５】
【図９】例示的な実施形態に係る、ブローカーサービスを使用してアプリケーションプロセスによるファイルシステムデータへのアクセスを制御するための処理を提供するフローチャートである。
【００１６】
【図１０】例示的な実施形態に係る、ブローカーサービスがアプリケーションプロセスによるファイルシステムデータへのアクセスを制御する、コンピューティングデバイスのブロック図である。
【００１７】
【図１１】例示的な実施形態に係る、ブローカーサービスを使用してアプリケーションプロセスによるファイルシステムデータへのアクセスを制御するための処理を提供するフローチャートである。
【００１８】
【図１２】本発明の実施形態を実現するために使用され得る例示的なコンピュータのブロック図である。
【発明を実施するための形態】
【００１９】
＜実施の形態の概要＞
この概要は、詳細な説明において以下にさらに説明される概念の選択を単純化した形態で紹介するために提供されるものである。この概要は、本発明の主題のキーとなる特徴または不可欠な特徴を特定することを意図したものでなく、本発明の主題の範囲を限定するために使用されることを意図したものでもない。
【００２０】
アプリケーションによる選択的ファイルシステムアクセスを可能にするための方法、システム、およびコンピュータプログラム製品が提供される。アプリケーションによるファイルシステムデータのアクセスは、ブローカーサービスによって取り扱われる。ブローカーサービスはブローカーサービス部等と言及されてもよい。そうでなければアプリケーションは、（それ自身のファイルおよびそれ自身の他のリソース以外の）ファイルシステムデータにアクセスできないように阻止される。ブローカーサービスはアプリケーションから、ファイルシステムデータにアクセスするための要求を受け取り、アクセスを要求されたデータが、アプリケーションがアクセスを許可されるファイルタイプのものである場合、ブローカーサービスはアプリケーションに、データへのアクセスを可能にさせる。そうでなければ、アプリケーションは、データへのアクセスを拒否または阻止される。
【００２１】
１つの方法の実現によると、アプリケーションがコンピューティングデバイスにインストールされる。アプリケーションに関連づけられたアプリケーションマニフェストが受け取られる。アプリケーションマニフェストは、アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す。示されたファイルタイプは、ブローカーサービスによってアクセス可能な場所に記録される。
【００２２】
さらに、アプリケーションは、アプリケーションプロセスとして起動され得る。アプリケーションプロセスは、アプリケーションコンテナにおいて隔離され、それは、ユーザアカウントと同様である（ユーザアカウントを有するユーザは、他のユーザのファイルにアクセスできない）。アプリケーションコンテナは、アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを阻止する。ファイルシステムデータのうちの第１のデータに関連するアクセス要求が、アプリケーションプロセスからブローカーサービスで受け取られる。ブローカーサービスが、第１のデータのファイルタイプが、記録されたファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第１のデータへのアクセスが可能にされる。
【００２３】
システムの実現によると、コンピューティングデバイスが提供される。コンピューティングデバイスは、ストレージおよび処理ロジックを含む。ストレージは、コンピューティングデバイスにインストールされたアプリケーション、およびアプリケーションに関連づけられたアプリケーションマニフェストを記憶する。アプリケーションマニフェストは、アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す。処理ロジックは、ブローカーサービスを含み、ブローカーサービスによってアクセス可能な（そして、アプリケーションによってはそうでない）場所に、ファイルタイプを記録する。ブローカーサービスは、アプリケーションによるアクセスを、記録されたファイルタイプのファイルに限定するように構成される。
【００２４】
処理ロジックは、アプリケーションが起動されるとアプリケーションプロセスを開始することができ、アプリケーションプロセスをアプリケーションコンテナに含めることができる。アプリケーションコンテナは、アプリケーションプロセスによるファイルシステムデータへの直接的なアクセスを阻止する。ブローカーサービスはアプリケーションプロセスから、ファイルシステムデータのうちの第１のデータについてのアクセス要求を受け取る。処理ロジックは、ブローカーサービスが、第１のデータのファイルタイプが、記録されたファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第１のデータへのアクセスを可能にする。
加えて、アプリケーションによるファイルシステムデータへの選択的アクセスを可能にすることを含むさまざまな実施形態、およびさらなる実施形態を可能にするための、プログラムコード／ロジックを記憶する、コンピュータ可読記憶媒体が本明細書に説明される。
本発明のさらなる特徴および利点、ならびに本発明のさまざまな実施形態の構造および動作が、添付の図面に関連して、以下において詳細に説明される。本発明は、本明細書に説明される特定の実施形態に限定されるものではない、ということに注意すべきである。そのような実施形態は、単に例示目的で本明細書に提示される。追加の実施形態が、本明細書に含まれる教示に基づいて当業者に理解されるだろう。
本明細書に組み込まれ、明細書の一部を形成する添付の図面は、本発明を例示するものであり、発明の詳細な説明と共にさらに、本発明の原理を説明し、本発明を製造および使用することを当業者に可能にさせる役割を果たすものである。
＜実施の形態の詳細な説明＞
【００２５】
本発明の特徴および利点は、以下に述べる詳細な説明を図面と共に考慮することによってより明らかとなり、図中の同様の参照番号は、全図面を通して対応する要素を特定する。図面において、同様の参照番号は一般的に、同一の、機能的に同様のおよび／または構造的に同様の要素を示す。要素が最初に登場した図面は、対応する参照番号の左端の数字によって示される。
【００２６】
Ｉ．イントロダクション
本明細書は、本発明の特徴を組み込む１つ以上の実施形態を開示する。開示される実施形態は単に本発明を例示するにすぎない。本発明の範囲は、開示される実施形態に限定されるものではない。本発明は、本明細書に添付の特許請求の範囲によって定義される。
【００２７】
本明細書における、「一実施形態」、「実施形態」、「例示的な実施形態」等の呼称は、説明される実施形態は、特定の特徴、構造、または特性を含み得るが、すべての実施形態が必ずしもその特定の特徴、構造、または特性を含み得るわけではない、ということを示す。さらに、そのようなフレーズは、必ずしも同一の実施形態に言及しているわけではない。さらに、特定の特徴、構造、または特性が実施形態に関連して説明される場合、明示的に説明されていてもいなくても、他の実施形態に関連してそのような特徴、構造、または特性がもたらされることは、当業者の知識の範囲内である、ということが理解される。
【００２８】
本発明の多数の例示的な実施形態が、以下に説明される。本明細書で提供される任意のセクション／サブセクションの見出しは、限定を意図するものではない、ということに注意すべきである。実施形態は、本明細書全体を通して説明され、いずれのタイプの実施形態も、任意のセクション／サブセクションの下に含まれ得る。
【００２９】
ＩＩ．例示的な実施形態
実施形態は、アプリケーションによるファイルシステムデータへのアクセスを規制／制限／制御するための技法に関する。アプリケーションは、それらの機能を実行するために、それらのホストコンピュータシステム（および／または他のコンピュータシステム）のファイルシステムに記憶されたデータにアクセスし得る。たとえば、ワードプロセッシングアプリケーションは、編集のために、テキストファイルまたはドキュメントファイルにアクセスし得る。メディアプレイヤアプリケーションは、再生のために、オーディオファイルおよび／またはビデオファイルにアクセスし得る。データベースアプリケーションは、さまざまな用途のために、データベースに記憶されたデータにアクセスし得る。しかしながら、アプリケーションは、そのアプリケーションに関連のないファイルシステムデータを含み得るファイルシステムデータにアクセスできるので、悪意あるプログラムコードを含むアプリケーションが、ファイルシステムデータの盗用を犯し、多種多様なファイルシステムデータに害を与え、または他の望ましくない行為を犯す可能性が存在する。
【００３０】
実施形態は、アプリケーションによるファイルシステムデータへのアクセスを、アプリケーションがインタラクトするように構成されたファイルシステムデータのタイプに制限することの利点を提供する。たとえば、開発者または他の人間は、アプリケーションがアクセス／インタラクトすること（たとえば、読み取り、書き込み、変更、名前の変更、コピー、移動等）ができる１つ以上のファイルタイプのインジケーション（インジケータ又は指標）を提供し得る。アプリケーションがコンピュータシステムにインストールされると、ファイルタイプ（たとえば、ＭＰ３ファイル、Ｍｉｃｒｏｓｏｆｔ（登録商標）ワードファイル等）が、記録され得る。記録は登録と言及されてもよい。アプリケーションが実行され、コンピュータシステムのファイルシステムデータへのアクセスを試みる際、そのファイルシステムデータが、記録されたファイルタイプのファイルタイプを有するのであれば、アプリケーションは、ファイルシステムデータへのアクセスを可能にされ得る。アクセスされているファイルシステムデータが、記録されたファイルタイプのものでない場合、ファイルシステムデータのアクセスは、拒否または阻止され得る。アプリケーションは、それ自身のファイルおよびそれ自身の他のリソース、アプリケーションのための一時的な作業ディクショナリ、およびアプリケーションのための設定ディクショナリといった、不可欠なアプリケーション情報へのアクセスは可能にされ得るが、そうでなければ、本明細書で説明されるように、センシティブなファイルシステムデータへのアクセスは拒否され得る。
【００３１】
実施形態は、さまざまな環境において実現されることができる。たとえば、図１は、例示的な実施形態に係る、コンピューティングデバイス１０２のブロック図を示す。図１に示すように、コンピューティングデバイス１０２は、アプリケーションプロセス１０４、ブローカーサービス１０６、ストレージ１０８、およびアプリケーション１２０を含む。アプリケーションプロセス１０４は、アプリケーションプロセス部１０４、アプリケーション処理部１０４等と言及されてもよい。ブローカーサービス１０６はブローカーサービス部１０６等と言及されてもよい。さらに、ストレージ１０８は、複数のフォルダ１１０ａ〜１１０ｎを含む。フォルダ１１０ａ〜１１０ｎの各々は、１つ以上のファイルを含み得る。たとえば、フォルダ１１０ａがファイル１１２ａ〜１１２ｎを含むことが示されている。フォルダ１１０ａ〜１１０ｎおよびファイル１１２ａ〜１１２ｎは、コンピューティングデバイス１０２のファイルシステムのファイルシステムデータ１１８に含まれる。コンピューティングデバイス１０２は以下にさらに説明される。
【００３２】
コンピューティングデバイス１０２は、デスクトップコンピュータ（たとえば、パーソナルコンピュータ等）、モバイルコンピュータまたはモバイルコンピューティングデバイス（たとえば、Ｐａｌｍ（登録商標）デバイス、ＲＩＭ社のＢｌａｃｋｂｅｒｒｙ（登録商標）デバイス、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ（たとえば、Ａｐｐｌｅ社のｉＰａｄ（登録商標））、ネットブック等）、携帯電話（たとえば、セルラー式電話、スマートフォン、たとえば、Ａｐｐｌｅ社のｉＰｈｏｎｅ、Ｇｏｏｇｌｅ社のＡｎｄｒｏｉｄ（登録商標）フォン、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）フォン等）、または他のタイプのモバイルデバイスを含む、任意のタイプの固定またはモバイルコンピューティングデバイスであることができる。
【００３３】
上述したように、コンピューティングデバイス１０２は、ストレージ１０８を含む。ストレージ１０８は、磁気ディスク（たとえば、ハードディスクドライブ内）、光学ディスク（たとえば、光学ディスクドライブ内）、磁気テープ（たとえば、テープドライブ内）、ＲＡＭデバイス、ＲＯＭデバイス等といったメモリデバイス、および／または、任意の他の適切なタイプの記憶媒体を含む、フォルダおよびファイルを記憶するための任意のタイプの記憶メカニズムのうちの１つ以上を含み得る。ストレージ１０８は、図１に示すように完全にローカルなストレージであることもできるし、またはオプションで、「クラウド」ストレージおよびメディアサーバで利用可能なストレージといった、ネットワークを介してアクセス可能なストレージを含む、コンピューティングデバイス１０２とリモートのストレージを含むこともできる。さらに、ストレージ１０８は、取り外し可能なストレージデバイスを含むことができる。図１に示すように、ファイルシステムデータ１１８は、ストレージ１０８に記憶される。フォルダ１１０ａ〜１１０ｎは、当業者に周知であるように、ファイルシステムデータ１１８に含まれる仮想フォルダである。フォルダ１１０ａ〜１１０ｎは、階層構造および／または任意の他の方式で編成され得る。数十個、数百個、数千個、および、それよりさらに大きい数のフォルダを含む、任意の数のフォルダ１１０が存在することができ、各フォルダ１１０は、任意の数のファイルを含むことができる。ファイル１１２ａ〜１１２ｎは、当業者に周知であるように、データを含むコンピュータファイルである。数十個、数百個、数千個、および、それよりさらに大きい数のファイルを含む、任意の数のファイル１１２が存在することができる。
【００３４】
ブローカーサービス１０６は、コンピューティングデバイス１０２において（たとえば、１つ以上のプロセッサによって）実行され得る、１つ以上のプロセス（たとえば、「ブローカープロセス」）を含む。ブローカーサービス１０６は、アプリケーションによるアクセスを、アプリケーションがアクセスを許可されるファイルシステムデータ１１８のデータに制限するように構成される。ブローカーサービス１０６のプログラムコードは、スタンドアロンのプログラムコードであることもできるし、または、コンピュータデバイス１０２の他のプログラムコードに含まれることもできる。たとえば、図２は、例示的な実施形態に係る、コンピューティングデバイス１０２のブロック図を示す。図２に示すように、ブローカーサービス１０６は、コンピューティングデバイス１０２のオペレーティングシステム２０２に含まれ得る。オプションで、ブローカーサービス１０６は、アプリケーションによるコンピューティングデバイス１０２のハードウェアおよび／または他のリソースへのアクセスを制限することを含む、コンピューティングデバイス１０２のためのさらなるサービスを提供し得る。
【００３５】
アプリケーション１２０は、コンピューティングデバイス１０２において実行され／動作し、コンピューティングデバイス１０２のストレージ（たとえば、ストレージ１０８）に記憶され得る、ソフトウェアアプリケーションである。たとえば、アプリケーション１２０は、オフィススイートアプリケーション、デスクトップアプリケーション、モバイルアプリケーション、ウェブアプリケーション等であることができる。オフィススイートアプリケーションは、さまざまなタイプの生産性向上アプリケーション、たとえば、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、プレゼンテーションアプリケーション等を含む。デスクトップアプリケーションは、いくつかのオフィススイートアプリケーション、デスクトップウィジェットまたはガジェット（典型的には、ニュースのストリーミング、現在の天気の提供、現在の株価の表示等といった専用サービスを提供する、インタラクティブツール）、ウェブブラウザ等を含む、コンピュータ（たとえば、デスクトップコンピュータ）のデスクトップで動作するように構成された、さまざまなタイプのアプリケーションを含む。モバイルアプリケーションは、スマートフォン、タブレットコンピュータ、ポータブルメディアプレイヤ、携帯情報端末（ＰＤＡ）等といった、モバイルのハンドヘルドデバイスで動作する、さまざまなタイプのアプリケーション（たとえば、「Ａｐｐ」）を含む。（「ｗｅｂ  ａｐｐ」または「ｗｅｂａｐｐ」としても知られている）ウェブアプリケーションは、インターネットまたはイントラネットといったネットワークを介してアクセス可能なアプリケーションであり、アプリケーションを提供するウェブブラウザにおいてホストされ得る。例示的なアプリケーションは、ソーシャルネットワーキングアプリケーション、ナビゲーション支援アプリケーション（たとえば、地図アプリケーション、レストラン検索アプリケーション、交通アプリケーション等）、ゲームアプリケーション、資産運用アプリケーション等を含む。
【００３６】
アプリケーション１２０は、アプリケーションプロセス１０４のような、１つ以上のアプリケーションインスタンスまたは「プロセス」を生成するために実行され得る。アプリケーションプロセス１０４は、アプリケーション１２０のプログラムコード（命令）およびその現在のアクティビティを含む。アプリケーションプロセス１０４は、コンピューティングデバイス１０２の１つ以上のプロセッサにおいて実行される。アプリケーションプロセス１０４は、１つ以上の実行スレッドを含み得る。複数の実行スレッドが存在する場合、スレッドは、プログラムコードを同時に実行し得る。
【００３７】
アプリケーションプロセス１０４の実行中、アプリケーションプロセス１０４は、ファイル１１２ａのようなファイルシステムデータ１１８のデータに対するアクセスを試みるかもしれない。従来のシステムでは、アプリケーションプロセス１０４は、ほとんど制限なしにファイル１１２ａへのアクセスを実行できるであろう。しかしながら、アプリケーションプロセス１０４は、悪意あるプログラムコード（たとえば、アプリケーション１２０の当初の設計によるもの、アプリケーション１２０に挿入されているウィルスコードによるもの等）を含むかもしれないし、或いは、アプリケーション１２０のユーザが予期せぬ仕方でアクセスファイル１１２ａにアクセスできてしまうかもしれない。いずれにせよ、アプリケーションプロセス１０４は、ファイル１１２ａにアクセス可能にされていることにより、害をもたらすおそれがある。
【００３８】
実施形態は、ファイルシステムデータへのアクセスを制限することにより、悪意あるアプリケーションコードによってもたらされる害を減じるのに役立つ。実施形態によると、アプリケーションプロセス１０４は、アクセスされることが望まれているファイルシステムデータ１１８のデータ（現在の例ではファイル１１２ａ）を示すデータアクセス１１４を生成する。図１に示すように、データアクセス１１４は、ブローカーサービス１０６によって受け取られる。ブローカーサービス１０６は、ファイル１１２ａが、アプリケーション１２０がアクセスを許可されるファイルタイプのものであるかどうか、を決定又は判断するように構成される。ファイル１１２ａが、アプリケーション１２０がアクセスを許可されるファイルタイプのものである場合、ブローカーサービス１０６は、アプリケーションプロセス１０４がファイル１１２ａにアクセスできるようにする。そのようなケースでは、図１に示すように、データアクセス１１４において要求されたデータが、ストレージ１０８からアプリケーションプロセス１０４に、ブローカーサービス１０６により応答データ１１６として提供されてもよいし、または、応答データ１１６はアプリケーションプロセス１０４がデータにアクセスする仕方を示してもよい。たとえば、アプリケーション１０４にファイルまたはフォルダへのアクセスを可能にさせるために、ファイルまたはフォルダへのハンドルが応答データ１１６においてアプリケーションプロセス１０４に渡され得る。そうではなく、ファイル１１２ａが、アプリケーション１２０にアクセスが許可されていないファイルタイプを有する場合、ブローカーサービス１０６は、ファイル１１２ａへのアクセスを拒否してよい。ブローカーサービス１０６は、アプリケーションプロセス１０４によるファイルおよびフォルダとのさまざまなインタラクションを、アクセスが許可されない場合に拒否し得、それは、ファイルを読み取り、フォルダのコンテンツを読み取り、ファイルまたはフォルダに書き込み、ファイルまたはフォルダの名前を変更し、ファイルまたはフォルダを移動し、または、第１のデータのファイルまたはフォルダを上書きコピーするための、アプリケーションプロセス１０４によるアクセスを拒否することを含む。
【００３９】
コンピューティングデバイス１０２は、その機能を実行するためにさまざまな手法で動作し得る。たとえば、図３は、例示的な実施形態に係る、アプリケーションによるファイルシステムデータへのアクセスを規制するための処理を提供するフローチャート３００を示す。フローチャート３００が図１に関連して以下に説明される。さらなる構造上および動作上の実施形態が、フローチャート３００に関する以下の説明に基づいて当業者に理解されるだろう。
【００４０】
フローチャート３００は、ステップ３０２から始まる。ステップ３０２において、アプリケーションにとってアクセス可能なファイルタイプが記録される。たとえば、実施形態では、アプリケーション１２０のアプリケーションプロセスがアクセスを許可される１つ以上のファイルタイプが、コンピューティングデバイス１０２のデータ構造（たとえば、レジストリ）に記録される。データ構造は、ストレージ１０８、またはコンピューティングデバイス１０２に関連づけられた他のストレージに記憶され得る。
【００４１】
ステップ３０４において、アプリケーションのプロセスによるアクセスは、記録されたアクセス可能なファイルタイプに制限される。たとえば、実施形態において、ブローカーサービス１０６は、記録された、アプリケーション１２０にとってアクセス可能なファイルタイプを含むデータ構造へのアクセスを有し得る。ブローカーサービス１０６が、アプリケーションプロセス１０４のようなアプリケーション１２０のアプリケーションプロセスからデータの要求を受け取ると、ブローカーサービス１０６は、要求されたデータが、アプリケーションプロセスがアクセスを許可されるファイルタイプのものであるかどうか、を決定するために、データ構造にアクセスし得る。ブローカーサービス１０６は、データが許可可能なファイルタイプである場合、アプリケーションプロセスにデータへのアクセスを可能にさせることができ、または、データが許可可能なファイルタイプのものでない場合、要求に対しアクセスを拒否し得る。アプリケーション１２０から形成された任意の数のアプリケーションプロセスは、それらのファイルシステムデータアクセスを、このように、それどころか同時に、制限し得る。
【００４２】
ブローカーサービス１０６を含むコンピューティングデバイス１０２は、実施形態において、さまざまな手法でその機能を実行し得る。コンピューティングデバイス１０２、ブローカーサービス１０６、およびフローチャート３００のための多数の例示的な実施形態が、以下のサブセクションにおいて説明される。たとえば、次のサブセクションは、ファイルシステムデータへの制御されたアクセスのために構成されたアプリケーションをインストールするための例示的な実施形態を説明する。後続するサブセクションは、制御されたファイルシステムデータアクセスを有するアプリケーションを起動するための例示的な実施形態を説明し、起動されたアプリケーションにファイルシステムデータへの制限されたアクセスを提供するための例示的な実施形態を説明するセクションが、その後に続く。
【００４３】
Ａ．制御されたファイルシステムデータアクセスのためのアプリケーションをインストールするための例示的な実施形態
例示的な実施形態によると、アプリケーションは、ファイルシステムデータへの制御されたアクセスを有するようにコンピューティングデバイスにインストールされ得る。実施形態において、インストールの一部として、開発者または他のユーザは、それらのアプリケーションにとってアクセス可能なファイルタイプを１つ以上のセキュアな場所に記録することが可能である。セキュアな場所は後に、アプリケーションによるファイルシステムデータへのアクセスを可能にするために、ブローカーサービスによってアクセスされ得る。しかしながら、セキュアな場所は、アプリケーションによってアクセスされることはできない。このように、アプリケーションにとってアクセス可能なファイルタイプは、ファイルシステムに害をもたらすことをアプリケーションに可能にさせるよう改ざんすることはできない。
【００４４】
たとえば、図４は、例示的な実施形態に係る、ファイルシステムデータへの制御されたアクセスのためにアプリケーションをインストールし、構成するための処理を提供するフローチャート４００を示す。フローチャート４００は、図３におけるフローチャート３００のステップ３０２の例示的な実現を提供する。フローチャート４００は、実施形態において、図１のコンピューティングデバイス１０２によって実行され得る。フローチャート４００が図５に関連して以下に説明される。図５は、例示的な実施形態に係る、アプリケーションがファイルシステムデータへの制御されたアクセスのためにインストールされ、構成される、コンピューティングデバイス１０２のブロック図を示す。図５に示すように、コンピューティングデバイス１０２は、処理ロジック５０２およびストレージ１０８を含む。処理ロジック５０２は処理ロジック部５０２又は処理論理部５０２等と言及されてもよい。処理ロジック５０２は、アプリケーションインストーラ５０６、ファイルシステム記録モジュール５０８、および識別子生成部５２０を含む。さらなる構造上および動作上の実施形態が、フローチャート４００および図５のコンピューティングデバイス１０２に関する以下の説明に基づいて、当業者に理解されるだろう。
【００４５】
フローチャート４００は、ステップ４０２から始まる。ステップ４０２において、アプリケーションがコンピューティングデバイスにインストールされる。たとえば、図１に示すように、アプリケーション情報５１２が、コンピューティングデバイス１０２で受け取られる。アプリケーション情報５１２は、図１のアプリケーション１２０のようなアプリケーションを定義するファイルおよび／またはデータのすべてを含む。アプリケーション情報５１２は、コンピューティングデバイス１０２に関連づけられた（たとえば、ディスクドライブに挿入された、コネクタにプラグで接続された等の）コンピュータ可読記憶媒体（たとえば、コンパクトディスク読み出し専用メモリ（ＣＤＲＯＭ）デバイス、フロッピー（登録商標）ディスク、メモリスティック（たとえば、ユニバーサルシリアルバス（ＵＳＢ）ストレージデバイス）等）から、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（広域ネットワーク）、または、インターネットのようなネットワークの組み合わせ、といったネットワークを介したリモートサービス（たとえば、「クラウド」に基づいたサービス）から、および／または他のソースから、を含む、さまざまなソースから受け取られ得る。
【００４６】
図５に示すように、アプリケーションインストーラ５０６が、アプリケーション情報５１２を受け取る。アプリケーションインストーラ５０６は、コンピューティングデバイス１０２のストレージ１０８にアプリケーション情報５１２をインストールして、アプリケーションをインストールするように構成される。アプリケーションインストーラ５０６は、当業者にとって周知の、本明細書に説明されるごとくアプリケーションをインストールするように構成された、アプリケーションインストールプログラムであるものを含む、所有権や財産権によって保護されている、または、商業的に利用可能な、アプリケーションインストールプログラムであり得る。
【００４７】
図５に示すように、アプリケーションインストーラ５０６は、アプリケーション情報５１２を処理して、アプリケーションをアプリケーションパッケージ５１０としてストレージ１０８にインストールする。アプリケーションパッケージ５１０は、アプリケーションプログラムコード５１４を含む。アプリケーションプログラムコード５１４は、インストールされたアプリケーションの機能を定義する、（１つ以上のプロセッサによって）実行可能なコードである。アプリケーションプログラムコード５１４は、１つ以上のファイルの形態および／または他の形態を有し得る。アプリケーションインストーラ５０６は、コンピューティングデバイス１０２にアプリケーションプログラムコード５１４をインストールするように構成される。
【００４８】
図４を再び参照すると、ステップ４０４において、アプリケーションに関連づけられたアプリケーションマニフェストが受け取られ、アプリケーションマニフェストは、アプリケーションがアクセスを許可される１つ以上のファイルタイプを示す。たとえば、図５に示すように、アプリケーションパッケージ５１０はさらに、アプリケーションマニフェスト５１６を含む。アプリケーションマニフェスト５１６は、オブジェクト（たとえば、１つ以上のファイル）である。アプリケーションインストーラ５０６は、コンピューティングデバイス１０２のストレージ１０８にアプリケーションマニフェスト５１６を記憶するように構成される。
【００４９】
アプリケーションマニフェスト５１６は、アプリケーションがアクセスを許可される１つ以上のファイルタイプのインジケーションを含む。さらに、アプリケーションマニフェスト５１６はオプションで、アプリケーションに関連づけられたさらなる情報を含み得る。たとえば、図６は、例示的な実施形態に係る、アプリケーションマニフェスト５１６のブロック図を示す。図６に示すように、アプリケーションマニフェスト５１６は、アクセス可能なファイルタイプ情報６０２、識別情報６０４、および能力情報６０６を含む。他の実施形態において、アプリケーションマニフェスト５１６は、図６に示すもの以外に追加のおよび／または代替の情報を含み得る。
【００５０】
アクセス可能なファイルタイプ情報６０２は、関連づけられたアプリケーションがアクセスを許可される１つ以上のファイルタイプのインジケーションを含む。「ファイルタイプ」は、たとえば、ファイル拡張子、ファイルの種類、および／または、他のファイル属性またはメタデータによって、ファイルのクラスを定義し、区別する。したがって、ファイルタイプ情報６０２は、アプリケーションによってアクセスされ得るデータ（たとえば、ファイル、フォルダ等）を定義するために使用され得る（ファイル拡張子、ファイルの種類、および／または、他のファイル属性またはメタデータによる）１つ以上のファイルタイプを示し得る。ファイルタイプは、アクセス可能なファイルタイプ情報６０２においてさまざまな手法で示され得る。たとえば、ファイルタイプは、アクセス可能なファイルタイプ情報６０２において、個々のファイルタイプとして、および／または、ファイルタイプファミリおよび／またはファイルタイプクラスのようなファイルタイプのグループで示され得る。ファイルタイプは、アクセス可能なファイルタイプ情報６０２において、典型的にはファイル名における最後のピリオドの後に続くいくつかの英数字文字である、ファイル拡張子によって示され得る。たとえば、個々のファイルタイプに関し、テキストファイルのファイルタイプ拡張子は、「．ｔｘｔ」であることができ、ＭＰＥＧ（ムービング・ピクチャ・エキスパーツ・グループ）ビデオファイルのファイルタイプ拡張子は、「．ｍｐｇ」であることができ、ウェーブフォームオーディオファイルフォーマットのオーディオファイルのファイルタイプ拡張子は、「．ｗａｖ」であることができる、といった具合である。ファイルタイプファミリは、ファミリに関連する（たとえば、対応するファイル拡張子による）複数のファイルタイプ、たとえば、共通の製品のためのファイルタイプ（たとえば、製品の異なるバージョンに関連づけられた異なるファイルタイプ）のグループを含む。たとえば、Ｍｉｃｒｏｓｏｆｔ（登録商標）ワード（ワードプロセッシングアプリケーション）のファイルタイプファミリは、Ｍｉｃｒｏｓｏｆｔ（登録商標）ワード２００７より前のバージョン、およびＭｉｃｒｏｓｏｆｔ（登録商標）ワード２００７とそれ以降のバージョンにそれぞれ関連するファイルタイプ拡張子、「．ｄｏｃ」および「．ｄｏｃｘ」を含み得る。ファイルタイプクラスは、オーディオクラス、ビデオクラス、ワードプロセッシングクラス、データベースクラス等といった製品クラスによって関連する複数のファイルタイプを含む。たとえば、音楽またはオーディオクラスのファイルタイプは、「．ｗａｖ」、「．ｍｐ３」、「．ａｉｆｆ」等といった、音楽および／またはオーディオに関連づけられた複数のファイル拡張子を含み得る。
【００５１】
識別情報６０４は、アプリケーションのための識別情報を含む。たとえば、識別情報６０４は、アプリケーションおよび／またはアプリケーションパッケージの名前、アプリケーションの版元、アプリケーションのアーキテクチャ、リソースタイプ（たとえば、ｅｎ−ｕｓのような言語タイプ等）、アプリケーションのバージョン、および／または他の識別情報、のうちの１つ以上を含み得る。
【００５２】
能力情報６０６は、アプリケーションプログラムコード５１４の実行によって形成されるアプリケーションプロセスが、アクセスを許可されるおよび／またはアクセスを許可されないコンピューティングデバイス１０２の能力を示す。そのように示される能力の例は、コンピューティングデバイス１０２のストレージデバイス（たとえば、内部および／または外部ストレージデバイス）がアクセス可能であるかどうかを示すこと、クレデンシャル（又は認証情報）がアクセスされてよいかどうかを示すこと、ソフトウェアおよび／またはハードウェアの証明書（又は認可証）がアクセスされてよいかどうかを示すこと、入力／出力デバイス（たとえば、マイクロフォン、ウェブカメラ等）がアクセス可能であるかどうかを示すこと、コンピューティングデバイス１０２から離れた装置との通信が実行されてよいかどうかを示すこと等を含む。能力情報６０６は、オプションで存在し、アプリケーションがデータにアクセスできる例示的な手法である。たとえば、示される能力は、ブローカーサービス１０６がアクセスを可能にし得る特定の場所（たとえば、ピクチャライブラリ）のすべてのファイルタイプを表してもよい。
【００５３】
図４を再び参照すると、ステップ４０６において、アプリケーションマニフェストによって示された１つ以上のファイルタイプが、ブローカーサービスによってアクセス可能な場所に記録される。たとえば、実施形態において、図５に示すように、ファイルタイプ記録モジュール５０８は、アプリケーションマニフェスト５１６を読み取って、（たとえば、アクセス可能なファイルタイプ情報６０２において示されるごとくの）アプリケーションがアクセスを許可される１つ以上のファイルタイプを決定することができる。ファイルタイプ記録モジュール５０８は、１つ以上のファイルタイプのインジケーションをファイルタイプ５１８としてセキュアな記憶場所５０４に記憶することにより、１つ以上のファイルタイプを記録するように構成される。図５に示すように、セキュアな記憶場所５０４は、ストレージ１０８の記憶場所（たとえば、記憶領域）であることができ、またはあるいは、別個のストレージに存在することができる。セキュアな記憶場所５０４は、アプリケーションのアプリケーションプロセスがそこに記憶されたデータにアクセスできないので、セキュアである（たとえば、特権化されている）とみなされる。したがって、悪意あるアプリケーションは、ファイルタイプ５１８を変更して、ファイルタイプ５１８において定義されたもの以外のファイルタイプへのアクセスを可能にされるようにすることはできず、悪意あるアプリケーションがファイルシステムデータに害をもたらす可能性が減じられる。
【００５４】
さらに、図６に示すように、識別子生成部５２０は、アプリケーションマニフェスト５１６からの情報を受け取り、セキュリティ識別子５２２を生成することができる。セキュリティ識別子５２２は、コンピューティングデバイス１０２において、アプリケーションのために実行されるアプリケーションプロセスを含むアプリケーションパッケージ５１０に関連づけられたアプリケーションを識別するために使用され得る、一意の識別子である。セキュリティ識別子５２２は、第１のユーザアカウントを有する第１のユーザによるアクセスを、第２のユーザのファイルにアクセスしないように限定する、ユーザアカウントのためのユーザ識別子と同様である。セキュリティ識別子５２２は、アプリケーションがデフォルトでファイルシステムのデータへのアクセスを有しないことを保証し、ファイルタイプおよび／または能力のセットをアプリケーションパッケージに関連づけるために、使用されることができる。たとえば、セキュリティ識別子５２２は、アクセス制御リスト（ＡＣＬ）を含むコンピューティングデバイス１０２におけるセキュリティ動作に関し、アプリケーションプロセスを識別するために使用され得る。セキュリティ識別子５２２を含むコンピューティングデバイス１０２のＡＣＬは、関連づけられたアプリケーションがアクセスし得るコンピューティングデバイス１０２のリソースを識別し得る。セキュリティ識別子５２２がＡＣＬに含まれない場合、アプリケーションは、セキュリティがＡＣＬによって取り扱われるいずれのリソースへのアクセスも有しない。
【００５５】
セキュリティ識別子（ＳＩＤ）５２２は、所有権や財産権によって保護された技法および／または商業的に利用可能な技法によることを含む、任意の手法で、アプリケーションのために生成され得る。たとえば、セキュリティ識別子５２２は、アプリケーションパッケージ５１０のパッケージ識別子（パッケージ識別子ＳＩＤ）に基づいて生成されることができる。パッケージ識別子に基づいてセキュリティ識別子５２２を生成することは、アプリケーションパッケージ５１０のパッケージ識別子のすべての要素に基づいて、または、要素のサブセット（たとえば、パッケージ識別子からの名前および版元といったパッケージのファミリ識別子）のみに基づいて、セキュリティ識別子を生成することを含み得る。別の実施形態において、セキュリティ識別子５２２は、識別情報６０４からの情報のハッシュとして生成されることができる。たとえば、セキュリティ識別子５２２は、アプリケーションおよび／またはアプリケーションパッケージ５１０の名前、アプリケーションの版元、アプリケーションのアーキテクチャ、アプリケーションのバージョン等のうちの１つ以上のハッシュとして生成されることができる。
【００５６】
Ｂ．制御されたファイルシステムデータアクセスを有するアプリケーションを起動するための例示的な実施形態
例示的な実施形態によると、アプリケーションプロセスは、コンピューティングデバイス１０２で定義され記録された、許可可能なファイルタイプを有するアプリケーションのために起動されることができる。実施形態において、アプリケーションプロセスは、アプリケーションによるファイルシステムデータへのアクセスを阻止するアプリケーションコンテナに含まれ得る。
【００５７】
たとえば、図７は、例示的な実施形態に係る、ファイルシステムデータへの制御されたアクセスを有するアプリケーションを起動するための処理を提供するフローチャート７００を示す。フローチャート７００は、実施形態において、図１のコンピューティングデバイス１０２によって実行され得る。フローチャート７００が図８に関連して以下に説明される。図８は、例示的な実施形態に係る、インストールされたアプリケーションが起動され、結果として生じるアプリケーションプロセスが、ファイルシステムデータへの制御されたアクセスを有する、コンピューティングデバイス１０２のブロック図を示す。図８に示すように、コンピューティングデバイス１０２は、処理ロジック５０２、ストレージ１０８、およびメモリ８１０を含む。処理ロジック５０２は、アプリケーション起動部８０２を含み、アプリケーション起動部８０２は、トークン生成部８０４を含む。さらなる構造上および動作上の実施形態が、フローチャート７００および図８のコンピューティングデバイス１０２に関する以下の説明に基づいて、当業者に理解されるだろう。
【００５８】
フローチャート７００は、ステップ７０２から始まる。ステップ７０２において、アプリケーションがアプリケーションプロセスとして起動される。たとえば、図８に示すように、アプリケーション起動部８０２は、図１のアプリケーション１２０のようなアプリケーションを起動して、アプリケーションプロセス１０４を形成するように構成され得る。アプリケーション起動部８０２は、所有権や財産権で保護されている技法によるもの、または、当業者に周知の従来の技法によるもの、を含むさまざまな手法で、アプリケーション１２０を起動してアプリケーションプロセス１０４を形成するように構成され得る。図８に示すように、アプリケーションプロセス１０４は、メモリ８１０へロードされ得る。このように、アプリケーションプロセス１０４のプログラムコードは、アプリケーションプロセス１０４を実行するコンピューティングデバイス１０２の１つ以上のプロセッサによって容易にアクセスされ得る。
【００５９】
ステップ７０４において、アプリケーションプロセスは、アプリケーションコンテナへ含められる。たとえば、図８に示すように、アプリケーションプロセス１０４は、アプリケーションコンテナ８０６に含まれる。アプリケーションコンテナ８０６は、アプリケーションプロセス１０４によるファイルシステムデータへの直接的なアクセスを阻止する、アプリケーションプロセス１０４のための仮想コンテナである。アプリケーションのためのアプリケーションコンテナ８０６は、ユーザのためのユーザアカウントと同様であり、ユーザアカウントは、ユーザによる他のユーザの情報へのアクセスを制限するために使用されるものである。同様に、アプリケーションコンテナ８０６は、アプリケーションによる他の情報へのアクセスを制限する。アプリケーションプロセス１０４は、アプリケーションプロセス１０４によるファイルシステムのセンシティブな部分へのアクセスをデフォルトで制限する、アプリケーションプロセス１０４のためのトークンに適用される、アプリケーションコンテナ８０６に関連づけられたセキュリティ識別子を有することによるような、さまざまな手法で、アプリケーションコンテナ８０６に「含められ」得る。そのようなセンシティブなファイルシステム部分は、アプリケーションパッケージ５１０のリソース、作業ディクショナリ、および設定ディクショナリといった、アプリケーションプロセス１０４自身にとって不可欠なファイル／フォルダを含まない。ＡＣＬは、アプリケーションプロセス１０４がこれらの不可欠な項目にアクセスできるように、適切に設定されることができる。
【００６０】
たとえば、実施形態において、（たとえば、上述のごとく）アプリケーション１２０のために生成されたセキュリティ識別子５２２は、アプリケーションコンテナ８０６に関連づけられることができ、アプリケーションコンテナ８０６のためのアクセス制限を定義するために使用されることができる。（たとえば、１つ以上のＡＣＬにおける）セキュリティ識別子５２２に関し定義されたアクセス可能なリソースは、アプリケーションコンテナ８０６に、したがって、アプリケーションコンテナ８０６内のアプリケーションプロセス１０４に、適用可能である。たとえば、実施形態において、セキュリティ識別子５２２は、ファイルシステムデータに関連づけられたいずれのＡＣＬにも含まれ得ない。すると、アプリケーションコンテナ８０６、したがって、アプリケーションプロセス１０４は、ファイルシステムデータへの直接的なアクセスを有することを不可能にされ得る。このように、アプリケーションコンテナ８０６は、ファイルシステムデータからアプリケーションプロセス１０４を隔離する。代わりに、アプリケーションプロセス１０４は、本明細書に説明される実施形態によると、ブローカーサービス１０６によって、ファイルシステムデータにアクセスすることを制限される。本明細書の他の箇所にさらに詳細に説明されるように、ブローカーサービス１０６は、アプリケーションプロセス１０４がどのタイプのファイルシステムデータにアクセスできるかを制御する。
【００６１】
図８に示すように、トークン生成部８０４は、アプリケーションコンテナ８０６に関連づけられたセキュリティ識別子５２２を受け取ることができ、アプリケーションプロセス１０４のためのプロセストークン８１２を生成し得る。プロセストークン８１２は、コンピューティングデバイス１０２においてアプリケーションプロセス１０４を一意に識別するために使用され得る。たとえば、プロセストークン８１２は、アプリケーションプロセス１０４を、他のタイプのアプリケーションプロセスからだけでなく、同一のアプリケーション１２０のために生成されたアプリケーションプロセス１０４の追加のインスタンスからも、区別可能であり得る。
【００６２】
トークン生成部８０４は、アプリケーションコンテナ８０６を識別し、アプリケーションマニフェスト５１６に関連づけられたさらなる情報を含み得る、セキュリティ識別子５２２を含むように、プロセストークン８１２を生成するように構成されることができる。たとえば、プロセストークン８１２はオプションで、能力情報６０６等に基づいて生成された１つ以上のセキュリティ識別子を含む、アプリケーション１２０のためのアプリケーションマニフェスト５１６の情報から生成されたさらなるセキュリティ識別子を含み得る。
【００６３】
実施形態において、プロセストークン８１２は、アプリケーションプロセス１０４によって変更不可能である、ということに注意すべきである。たとえば、プロセストークン８１２は、メモリ８１０におけるセキュアな場所、セキュアな記憶場所５０４、または他のセキュアな記憶場所に記憶されることができる。このように、アプリケーションプロセス１０４は、プロセストークン８１２のセキュリティ識別子を変更して、そうでなければアクセス不可能なファイルシステムデータへのアクセスを可能にされるようにはできず、それによって、ファイルシステムに害をもたらすことを可能にされることを阻止される。メモリ８１０は、ランダムアクセスメモリ（ＲＡＭ）デバイスのような任意の数のメモリデバイスに含まれることができ、かつ、ストレージ１０８に含まれるか、または、ストレージ１０８とは別個であることができる。
【００６４】
Ｃ．起動されたアプリケーションにファイルシステムデータへのアクセスを提供するための例示的な実施形態
例示的な実施形態によると、アプリケーションプロセスは、ファイルシステムデータへのアクセスを提供され得る。実施形態において、アプリケーションプロセスは、アプリケーションコンテナに含まれるがゆえに、ファイルシステムデータに直接的にアクセスできず、それは、それに関連づけられたセキュリティ識別子ゆえに、制限されたファイルシステムアクセスを有する。代わりに、アプリケーションプロセスは、中間物、すなわち、ブローカーサービスによって、ファイルシステムデータにアクセスすることにより、間接的にファイルシステムデータにアクセスすることを可能にされる。
【００６５】
たとえば、図９は、例示的な実施形態に係る、アプリケーションプロセスにファイルシステムデータへの制御されたアクセスを提供するための処理を提供するフローチャート９００を示す。フローチャート９００は、実施形態において、図１のコンピューティングデバイス１０２によって実行され得る。フローチャート９００が図１０に関連して以下に説明される。図１０は、例示的な実施形態に係る、インストールされたアプリケーションが以前に起動され、結果として生じたアプリケーションプロセスが、ファイルシステムデータへの制御されたアクセスを提供される、コンピューティングデバイス１０２のブロック図を示す。図１０に示すように、コンピューティングデバイス１０２は、処理ロジック５０２およびストレージ１０８を含む。処理ロジック５０２は、ブローカーサービス１０６を含み、ブローカーサービス１０６は、条件マッチングロジック１００２を含む。条件マッチングロジック１００２は、条件マッチング論理部１００２、条件照合部１００２等と言及されてもよい。さらなる構造上および動作上の実施形態が、フローチャート９００および図１０のコンピューティングデバイス１０２に関する以下の説明に基づいて、当業者に理解されるだろう。
【００６６】
フローチャート９００は、ステップ９０２から始まる。ステップ９０２において、ファイルシステムデータの第１のデータについてのアクセス要求が、アプリケーションプロセスからブローカーサービスで受け取られる。たとえば、図１０に示すように、アプリケーションプロセス１０４は、アクセスされることが所望されるファイルシステムデータ１１８のデータを示す、データアクセス１１４を生成する。実施形態において、データアクセス１１４は、データが読み取られ、書き込まれ、または変更されることを示し得る。たとえば、現在の例において、データアクセス１１４は、ファイル１１２ａが読み取られることを示し得る。データアクセス１１４はまた、アプリケーションプロセス１０４によって生成されたものとしてデータアクセス１１４を識別するためのプロセストークン８１２を含み得る。図１０に示すように、データアクセス１１４は、ブローカーサービス１０６によって受け取られる。
【００６７】
ステップ９０４において、ブローカーサービスが、第１のデータのファイルタイプが、記録された１つ以上のファイルタイプに含まれる、と決定した場合、アプリケーションプロセスによる第１のデータへのアクセスが可能にされる。ブローカーサービス１０６は、ファイル１１２ａが、アプリケーションプロセス１０４がアクセスを許可されるファイルタイプのものであるかどうか、を決定するように構成される。たとえば、ファイル１１２ａが、アプリケーションプロセス１０４がアクセスを許可されるファイルタイプを有する場合、ブローカーサービス１０６は、アプリケーションプロセス１０４にファイル１１２ａへのアクセスを可能にさせ得る。そうでなく、ファイル１１２ａが、アプリケーションプロセス１０４がアクセスを許可されないファイルタイプを有する場合、ブローカーサービス１０６は、アプリケーションプロセス１０４によるファイル１１２ａへのアクセスを拒否し得る。
【００６８】
実施形態において、ブローカーサービス１０６は、図１１に係るフローチャート９００を実行し得る。図１１は、ブローカーサービスを使用してアプリケーションプロセスによるファイルシステムデータへのアクセスを制御するための処理を提供するフローチャート１１００を示す。さらなる構造上および動作上の実施形態が、フローチャート１１００に関する以下の説明に基づいて当業者に理解されるだろう。
【００６９】
フローチャート１１００は、ステップ１１０２から始まる。ステップ１１０２において、トークンとアクセス要求において要求された第１のデータのインジケーションとが受け取られる。たとえば、上述したように、ブローカーサービス１０６は、アクセスされることが所望されるファイルシステムデータ１１８のデータを示し、アプリケーションプロセス１０４を識別するためのプロセストークン８１２を含む、データアクセス１１４を受け取り得る。動作は、ステップ１１０２からステップ１１０４へと進む。
【００７０】
ステップ１１０４において、第１のデータのファイルタイプが決定される。たとえば、データアクセス１１４において示されたデータ要求に基づいて、ブローカーサービス１０６は、要求されたデータのファイルタイプを決定し得る。ブローカーサービス１０６は、データアクセス１１４に含まれる要求されたデータのファイル拡張子（たとえば、．ｔｘｔ、．ｗａｖ、．ｍｐｅｇ等といった拡張子）により、ストレージ１０８における要求されたデータにアクセスして要求されたデータのファイル拡張子を決定することにより、および／または、他の技法により、要求されたデータのファイルタイプを決定し得る。動作は、ステップ１１０４からステップ１１０６へと進む。
【００７１】
ステップ１１０６において、アプリケーションのための記録されたファイルタイプが、セキュアな場所においてアクセスされる。たとえば、実施形態において、ブローカーサービス１０６は、データアクセス１１４に含まれたアプリケーションプロセス１０４のセキュリティ識別子５２２を決定し得る。ブローカーサービス１０６は、セキュアな記憶場所５０４に記憶されたアプリケーションプロセス１０４のためのファイルタイプ５１８を、決定されたセキュリティ識別子５２２とのそれらの関連づけによって識別し得る。ブローカーサービス１０６は、セキュアな記憶場所５０４から、識別されたファイルタイプ５１８を検索し得る。動作は、ステップ１１０６からステップ１１０８へと進む。
【００７２】
ステップ１１０８において、第１のデータのファイルタイプが、記録されたファイルタイプに含まれるかどうか、が決定される。たとえば、実施形態において、ブローカーサービス１０６の条件マッチングロジック１００２は、（ステップ１１０４において決定された）要求されたデータの決定されたファイルタイプが、（ステップ１００６においてアクセスされた）ファイルタイプ５１８に関する条件と一致するかどうか、を決定するように構成される。たとえば、条件マッチングロジック１００２は、要求されたデータの決定されたファイルタイプが、ファイルタイプ５１８に含まれるファイルタイプと等しいかどうか、を決定し得る。要求されたデータのファイルタイプが、記録されたファイルタイプに含まれない場合、動作は、ステップ１１０８からステップ１１１０へと進む。要求されたデータのファイルタイプが、記録されたファイルタイプに含まれる場合、動作は、ステップ１１０８からステップ１１１２へと進む。
【００７３】
ステップ１１１０において、アプリケーションプロセスによる第１のデータへのアクセスが拒否される。要求されたデータのファイルタイプがファイルタイプ５１８のうちの１つと等しくないと決定された場合、アプリケーションプロセス１０４による要求されたデータへのアクセスは、ブローカーサービス１０６によって拒否され得る。たとえば、アプリケーションプロセス１０４が特定のデータ（たとえば、特定のファイル等）を要求している場合、アプリケーションプロセス１０４は、特定のデータへのアクセスを阻止され得、データアクセス１１４の拒否が、ブローカーサービス１０６によってアプリケーションプロセス１０４に示され得る。別の例において、アプリケーションプロセス１０４が、特定のフォルダのコンテンツのインジケーションを要求している場合、アクセス不可能なファイルタイプを有するフォルダのファイルは、ブローカーサービス１０６によってアプリケーションプロセス１０４に見えないようにされ得る。フローチャート１１００の動作は、ステップ１１１０が実行された後に完了する。
【００７４】
ステップ１１１２において、アプリケーションは、第１のデータへのアクセスを可能にされる。要求されたデータのファイルタイプがファイルタイプ５１８のうちの１つに等しいと決定された場合、アプリケーションプロセス１０４による要求されたデータへのアクセスは、ブローカーサービス１０６によって許可されることができ、要求されたデータは、応答データ１１６においてブローカーサービス１０６により、アプリケーションプロセス１０４に提供され得る。実施形態において、アプリケーションプロセス１０４は、ストレージ１０８から直接的に応答データ１１６を受け取ることを可能にさせられるのではなく、ブローカーサービス１０６によって応答データ１１６を提供されることができる、ということに注意すべきである。このように、アプリケーションプロセス１０４のセキュリティ／特権レベルは、アプリケーションプロセス１０４が応答データ１１６を受け取るために上げられる必要はない。フローチャート１１００の動作は、ステップ１１１２が実行された後に完了する。
【００７５】
たとえば、例示的な目的のために提供される一例において、アプリケーションプロセス１０４は、ファイル名／ｃ：のパス／ホーム／ユーザ／ユーザファイル．ｄｏｃを有するファイルを要求するためにデータアクセス１１４を送り得る。ブローカーサービス１０６は、ファイル名／パスと、アプリケーションコンテナ８０６／アプリケーションプロセス１０４のためのセキュリティ識別子５２２とを含む、データアクセス１１４を受け取り得る。ブローカーサービス１０６は、このファイル名／パスのファイルタイプが「．ｄｏｃ」である、と決定し得る。ブローカーサービス１０６は、アプリケーションコンテナ８０６／アプリケーションプロセス１０４のためのセキュリティ識別子５２２に関連づけられたファイルタイプ５１８にアクセスし得る。この例において、ファイルタイプ５１８は、「．ｄｏｃ」、「．ｄｏｃｘ」、「．ｔｘｔ」、および「．ｗｐｄ」のファイル拡張子を含み得る。条件マッチングロジック１００２は、要求されたデータの「．ｄｏｃ」のファイルタイプが、ファイルタイプ５１８のファイル拡張子と等しい、と決定し得る。したがって、ブローカーサービス１０６は、応答データ１１６においてアプリケーションプロセス１０４に、ファイル名／ｃ：のパス／ホーム／ユーザ／ユーザファイル．ｄｏｃを有するファイルを提供し得る。
【００７６】
したがって、さまざまな特徴および利点が、実施形態によって提供される。たとえば、ブローカーサービス１０６は、アプリケーションコンテナに含まれたアプリケーションプロセスのためのファイルシステム抽象化を提供する。ブローカーサービス１０６は、静的に宣言されたファイルタイプを使用して、アプリケーションプロセスによるデータアクセスを限定する。インストールされると、宣言されたファイルタイプが、ブローカーサービス１０６によって記録される。（アプリケーションコンテナにおいて）隔離されたアプリケーションプロセスは、セキュリティ識別子を使用して、アプリケーションプロセスがファイルシステムの離散部分（たとえば、ドキュメントライブラリ、取り外し可能なストレージ等）へのアクセスを有することをブローカーサービス１０６に通信する。このように、アプリケーションのためのファイルシステムデータへのフィルタリングされたアクセスが提供される。ブローカーサービス１０６のインスタンスが、（複数のブローカーサービス１０６が存在し得るように）コンピューティングデバイス１０２で各ユーザのために提供され得るか、または、単一のブローカーサービス１０６が、すべてのユーザを取り扱い得る、ということに注意すべきである。ブローカーサービス１０６は、単一のアプリケーションを取り扱うか、または、複数のアプリケーションを同時に取り扱うように構成され得る。
【００７７】
ＩＩＩ．例示的なコンピューティングデバイスの実施形態
ブローカーサービス１０６、処理ロジック５０２、アプリケーションインストーラ５０６、ファイルタイプ記録モジュール５０８、識別子生成部５２０、アプリケーション部８０２、トークン生成部８０４、条件マッチングロジック１００２、フローチャート３００、フローチャート４００、フローチャート７００、フローチャート９００、およびフローチャート１１００は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実現され得る。たとえば、ブローカーサービス１０６、処理ロジック５０２、アプリケーションインストーラ５０６、ファイルタイプ記録モジュール５０８、識別子生成部５２０、アプリケーション起動部８０２、トークン生成部８０４、条件マッチングロジック１００２、フローチャート３００、フローチャート４００、フローチャート７００、フローチャート９００、および／またはフローチャート１１００は、１つ以上のプロセッサにおいて実行されるように構成されたコンピュータプログラムコードとして実現され得る。あるいは、ブローカーサービス１０６、処理ロジック５０２、アプリケーションインストーラ５０６、ファイルタイプ記録モジュール５０８、識別子生成部５２０、アプリケーション起動部８０２、トークン生成部８０４、条件マッチングロジック１００２、フローチャート３００、フローチャート４００、フローチャート７００、フローチャート９００、および／またはフローチャート１１００は、ハードウェアロジック／電気回路として実現され得る。たとえば、実施形態において、ブローカーサービス１０６、処理ロジック５０２、アプリケーションインストーラ５０６、ファイルタイプ記録モジュール５０８、識別子生成部５２０、アプリケーション起動部８０２、トークン生成部８０４、条件マッチングロジック１００２、フローチャート３００、フローチャート４００、フローチャート７００、フローチャート９００、および／またはフローチャート１１００のうちの１つ以上は、システムオンチップ（ＳｏＣ）に実装され得る。ＳｏＣは、その機能を実行するための、プロセッサ（たとえば、マイクロコントローラ、マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）等）、メモリ、１つ以上の通信インターフェース、および／または、さらなる回路および／または埋め込まれたファームウェア、のうちの１つ以上を含む、集積回路チップを含み得る。
【００７８】
図１２は、本発明の実施形態が実現され得るコンピュータ１２００の例示的な実現を示す。たとえば、コンピューティングデバイス１０２は、コンピュータ１２００の１つ以上の特徴および／または代替の特徴を含む、コンピュータ１２００と同様のコンピュータシステムにおいて実現されることができる。コンピュータ１２００は、たとえば、従来のパーソナルコンピュータ、モバイルコンピュータ、サーバ、またはワークステーションの形態の汎用コンピューティングデバイスであることができ、または、コンピュータ１２００は、専用コンピューティングデバイスであることができる。本明細書で提供されるコンピュータ１２００の説明は、例示の目的で提供され、限定を意図するものではない。本発明の実施形態は、当業者に周知であるように、さらなるタイプのコンピュータシステムにおいて実現されることができる。
【００７９】
図１２に示すように、コンピュータ１２００は、１つ以上のプロセッサ１２０２と、システムメモリ１２０４と、システムメモリ１２０４を含むさまざまなシステムコンポーネントをプロセッサ１２０２に結合するバス１２０６と、を含む。バス１２０６は、メモリバスまたはメモリコントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および、さまざまなバスアーキテクチャのうちのいずれかを使用するプロセッサまたはローカルバス、を含むいくつかのタイプのバス構造のいずれかの１つ以上を表す。システムメモリ１２０４は、読み出し専用メモリ（ＲＯＭ）１２０８およびランダムアクセスメモリ（ＲＡＭ）１２１０を含む。ベーシックインプット／アウトプットシステム１２１２（ＢＩＯＳ）は、ＲＯＭ１２０８に記憶される。
【００８０】
コンピュータ１２００はまた、以下のドライブ、すなわち、ハードディスクに読み書きするためのハードディスクドライブ１２１４、取り外し可能な磁気ディスク１２１８に読み書きするための磁気ディスクドライブ１２１６、および、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、または他の光学媒体といった取り外し可能な光学ディスク１２２２に読み書きするための光学ディスクドライブ１２２０、のうちの１つ以上を有する。ハードディスクドライブ１２１４、磁気ディスクドライブ１２１６、および光学ディスクドライブ１２２０は、それぞれ、ハードディスクドライブインターフェース１２２４、磁気ディスクドライブインターフェース１２２６、および光学ドライブインターフェース１２２８によって、バス１２０６に接続される。ドライブおよびそれらに関連づけられたコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータのための他のデータの、不揮発性ストレージを提供する。ハードディスク、取り外し可能な磁気ディスク、および取り外し可能な光学ディスクが説明されるが、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）等といった、他のタイプのコンピュータ可読記憶媒体が、データを記憶するために使用されることができる。
【００８１】
多数のプログラムモジュールが、ハードディスク、磁気ディスク、光学ディスク、ＲＯＭ、またはＲＡＭに記憶され得る。これらのプログラムは、オペレーティングシステム１２３０、１つ以上のアプリケーションプログラム１２３２、他のプログラムモジュール１２３４、およびプログラムデータ１２３６を含む。アプリケーションプログラム１２３２またはプログラムモジュール１２３４は、たとえば、ブローカーサービス１０６、処理ロジック５０２、アプリケーションインストーラ５０６、ファイルタイプ記録モジュール５０８、識別子生成部５２０、アプリケーション起動部８０２、トークン生成部８０４、条件マッチングロジック１００２、フローチャート３００、フローチャート４００、フローチャート７００、フローチャート９００、および／またはフローチャート１１００（フローチャート３００、４００、７００、９００、および１１００の任意のステップを含む）、および／または、本明細書に説明されるさらなる実施形態、を実現するためのコンピュータプログラムロジック（たとえば、コンピュータプログラムコード）を含み得る。
【００８２】
ユーザは、キーボード１２３８およびポインティングデバイス１２４０のような入力デバイスによってコンピュータ１２００へコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ等を含み得る。これらのおよび他の入力デバイスは多くの場合、バス１２０６に結合されたシリアルポートインターフェース１２４２によってプロセッサ１２０２に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）といった、他のインターフェースによって接続されることもできる。
【００８３】
ディスプレイデバイス１２４４もまた、ビデオアダプタ１２４６のようなインターフェースを介してバス１２０６に接続される。モニタに加えて、コンピュータ１２００は、スピーカーおよびプリンタといった、他の周辺機器出力デバイス（図示せず）を含み得る。
【００８４】
コンピュータ１２００は、アダプタまたはネットワークインターフェース１２５０、モデム１２５２、またはネットワークを介して通信を確立するための他の手段によって、ネットワーク１２４８（たとえば、インターネット）に接続される。モデム１２５２は、内部または外部であることができ、シリアルポートインターフェース１２４２を介してバス１２０６に接続される。
【００８５】
本明細書で使用される場合、「コンピュータプログラム媒体」、「コンピュータ可読媒体」、および「コンピュータ可読記憶媒体」という用語は一般的に、ハードディスクドライブ１２１４に関連づけられたハードディスク、取り外し可能な磁気ディスク１２１８、取り外し可能な光学ディスク１２２２、といった媒体だけでなく、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）等といった他の媒体のことを言うために使用される。そのようなコンピュータ可読記憶媒体は、通信媒体と区別され、かつ重複しない（通信媒体を含まない）。通信媒体は典型的に、搬送波のような変調されたデータ信号中に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを組み込む。「変調されたデータ信号」という用語は、信号中に情報を符号化するようにその特徴のうちの１つ以上が設定または変更された信号を意味する。限定ではなく例として、通信媒体は、音響、ＲＦ、赤外線、および他の無線媒体といった、無線媒体を含む。実施形態はまた、そのような通信媒体に関する。
【００８６】
上述したように、（アプリケーションプログラム１２３２および他のプログラムモジュール１２３４を含む）コンピュータプログラムおよびモジュールは、ハードディスク、磁気ディスク、光学ディスク、ＲＯＭ、またはＲＡＭに記憶されることができる。そのようなコンピュータプログラムはまた、ネットワークインターフェース１２５０またはシリアルポートインターフェース１２４２を介して受け取られることができる。そのようなコンピュータプログラムは、アプリケーションによって実行またはロードされると、コンピュータ１２００に、本明細書に説明された本発明の実施形態の特徴を実現することを可能にさせる。したがって、そのようなコンピュータプログラムは、コンピュータ１２００のコントローラを表す。
【００８７】
本発明はまた、任意のコンピュータ使用可能媒体に記憶されたソフトウェアを備えるコンピュータプログラム製品に関する。そのようなソフトウェアは、１つ以上のデータ処理デバイスにおいて実行されると、データ処理デバイスを本明細書に説明したように動作させる。本発明の実施形態は、現在または将来的に周知の、任意のコンピュータ使用可能媒体またはコンピュータ可読媒体を用いる。コンピュータ可読媒体の例は、ＲＡＭ、ハードドライブ、フロッピー（登録商標）ディスク、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、ジップディスク、テープ、磁気ストレージデバイス、光学ストレージデバイス、ＭＥＭ、ナノテクノロジーに基づいたストレージデバイス等といったストレージデバイスを含むが、これらに限定されるものではない。
【００８８】
ＶＩ．結論
本発明のさまざまな実施形態が上述されたが、それらは限定ではなく例として提示されているにすぎない、ということが理解されるべきである。形態および詳細のさまざまな変更が添付の特許請求の範囲で定義される本発明の精神および範囲から逸脱せずに実施形態で行われ得ることが、当業者によって理解されるだろう。したがって、本発明の広さおよび範囲は、上述した例示的な実施形態のいずれかによって限定されるべきでなく、以下の特許請求の範囲およびそれらの均等物によってのみ定義されるべきである。
【図１】
2014530399.tif 000003
【図２】
2014530399.tif 000004
【図３】
2014530399.tif 000005
【図４】
2014530399.tif 000006
【図５】
2014530399.tif 000007
【図６】
2014530399.tif 000008
【図７】
2014530399.tif 000009
【図８】
2014530399.tif 000010
【図９】
2014530399.tif 000011
【図１０】
2014530399.tif 000012
【図１１】
2014530399.tif 000013
【図１２】
2014530399.tif 000014
【国際調査報告】
2014530399.tif 000015
2014530399.tif 000016