(57)【特許請求の範囲】
【請求項１】
プロセッサに、
アプリケーションを実行する分離実行環境を作成する動作であって、前記アプリケーションは特権レベルに関連付けられる、動作と、
前記アプリケーションによって、コンポーネントのアクティブ化を要求する動作であって、前記コンポーネントは、オペレーティングシステムによって制御されるリソースへのアクセスに使用される命令を含み、前記コンポーネントは、信頼レベルに関連付けられており、該コンポーネントの信頼レベルは、前記アプリケーションの特権レベルとは別個である、動作と、
前記コンポーネントの前記信頼レベルと前記アプリケーションの特権レベルとに基づいて、
前記アプリケーションによって要求される前記コンポーネントを実行するブローカプロセスを作成する動作と、
前記コンポーネントを前記ブローカプロセスにおいて実行する動作であって、前記ブローカプロセスは、前記分離実行環境とは別個の実行環境で動作する、動作と
を含む処理を実行させる、コンピュータプログラム。
【請求項２】
前記処理は、コンポーネントに関連付けられる複数の信頼レベルを認識する動作を更に含む、請求項１に記載のコンピュータプログラム。
【請求項３】
前記処理は、前記アプリケーションによって要求される前記コンポーネントが完全信頼レベルに関連付けられるとき、前記分離実行環境における当該コンポーネントの実行を拒否する動作を更に含む、請求項１に記載のコンピュータプログラム。
【請求項４】
前記処理は、前記アプリケーションによって要求される前記コンポーネントが部分的信頼レベルに関連付けられるとき、前記ブローカプロセスにおいて実行される前記コンポーネントに関連付けられるＡＰＩオブジェクトを生成する動作を更に含む、請求項１に記載のコンピュータプログラム。
【請求項５】
前記処理は、前記アプリケーションによって要求される前記コンポーネントが基礎信頼レベルに関連付けられるとき、前記分離実行環境において実行される前記コンポーネントに関連付けられるＡＰＩオブジェクトを生成する動作を更に含む、請求項１に記載のコンピュータプログラム。
【請求項６】
プロセッサと、
前記プロセッサに結合されるメモリと
を備える装置であって、
前記メモリは信頼アクティブ化モジュールを有し、
前記信頼アクティブ化モジュールは、前記プロセッサによって実行されると、選択的特権レベルに関連付けられるアプリケーションが選択的信頼レベルを有するコンポーネントにアクセスすることができるかどうかを決定する命令を含み、前記アプリケーションは、前記信頼アクティブ化モジュールとは別個の分離実行環境において動作し、前記コンポーネントは、オペレーティングシステムによって制御されるリソースにアクセスするのに使用される実行可能命令を含み、
前記信頼アクティブ化モジュールは、前記コンポーネントの信頼レベルと、前記アプリケーションの特権レベルとに基づいて、前記分離実行環境とは別個の実行環境において前記コンポーネントを実行するブローカプロセスを構成し、前記コンポーネントの信頼レベルは前記アプリケーションの特権レベルとは別個である、装置。
【請求項７】
前記信頼アクティブ化モジュールは、前記プロセッサにおいて実行されると、低特権アプリケーションが、完全信頼レベルを有するコンポーネントを実行するのを回避する命令を含む、請求項６に記載の装置。
【請求項８】
前記信頼アクティブ化モジュールは、前記プロセッサにおいて実行されると、高特権アプリケーションが任意の信頼レベルコンポーネントを実行するのを可能にする命令を含む、請求項６に記載の装置。
【請求項９】
前記信頼アクティブ化モジュールは、前記プロセッサにおいて実行されると、前記コンポーネントが基礎信頼レベルを有するとき、低特権アプリケーションに、前記分離実行環境において実行するように構成された実行可能コードを提供する命令を含む、請求項６に記載の装置。
【請求項１０】
コンピュータによって実行される方法であって、
複数の信頼レベルのうちの１つをコンポーネントに関連付けるステップであって、前記コンポーネントは、オペレーティングシステムによって制御されるリソースにアクセスするのに使用される実行可能命令を含み、前記信頼レベルは、前記リソースのセキュリティレベルに関連する、ステップと、
特権レベルをアプリケーションに関連付けるステップであって、前記特権レベルは前記アプリケーションのセキュリティレベルに関連し、前記コンポーネントの信頼レベルは、前記アプリケーションの前記特権レベルとは別個である、ステップと、
前記アプリケーションの前記特権レベルが第１のレベルであるとき、前記アプリケーションを分離実行環境において実行するステップと、
前記アプリケーションにより、前記コンポーネントのアクティブ化を要求するステップと、
前記コンポーネントの前記信頼レベルと、前記アプリケーションの前記特権レベルとに基づいて、前記アプリケーションによって要求された前記コンポーネントを、ブローカプロセスにおいて実行するステップであって、前記ブローカプロセスは、前記分離実行環境とは別個の実行環境において前記リソースにアクセスする、ステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信頼レベルのアクティブ化に関する。
【背景技術】
【０００２】
ネットワークコンピューティングデバイスの拡散により、ユーザは、信頼できるシステムから未知ソースに及ぶまで様々なソースからコードを取得することが可能になった。コードは、インターネットからダウンロードされることがあり、ドキュメントに含まれること、あるいは電子メールに添付されることがある。コードは、悪質なコードによって侵入される可能性があるバグや脆弱性を含むことがあり、そのような悪質なコードは、ユーザから保護されたリソースにアクセスすることがある。そのようなコードの実行は、コンピュータシステムにダメージを与え、及び／又はユーザの機密データや個人データを取得することがある。
【０００３】
分離実行環境は、未知又は信頼できないソースからコードを得ることに対する、セキュリティ上の問題に対処しようとするコードセキュリティ機構の一種である。分離実行環境は、コードが分離実行環境の外部のリソースにアクセスするのを妨げる制限を有する環境内においてコードを実行する。この手法において、コードは、ホストシステムを危険にさらすことはない。しかしながら、そのような制限は、アプリケーションが分離実行環境の外部にあるリソースを利用することを可能にする際の柔軟性を提供することはない。
【発明の概要】
【０００４】
この発明の概要は、以下の発明の詳細な説明においてさらに説明される概念の選択を、簡略化した形式で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴又は本質的特徴を特定するように意図されておらず、また、特許請求される主題の範囲を限定するのに使用されるようにも意図されていない。
【０００５】
分離実行環境を用いてアプリケーションを実行し、これによりアプリケーションが、意図せず又は故意に他の実行中のアプリケーション又はリソースに対して影響を与えること、並びに機密データが漏えいすることを回避する。分離は、分離実行環境においてアプリケーションに対してアクセス可能なリソースを制御することによって容易になる。アプリケーションプログラミングインタフェース（ＡＰＩ）などのコンポーネントは、リソースにアクセスするのに使用可能であり、リソースに関連付けられたセキュリティレベルを反映する信頼レベルに関連付けられる。
【０００６】
信頼アクティブ化（ｔｒｕｓｔ  ａｃｔｉｖａｔｉｏｎ）エンジンは、低特権アプリケーションがリソースに関連付けられるＡＰＩを実行するか否か、及びどのような条件の下で実行するかを決定する。基礎信頼コンポーネントは、低特権アプリケーションの分離実行環境において実行されることができる。完全信頼コンポーネントは、低特権アプリケーションによって直接実行されることはない。部分的信頼コンポーネントについて、信頼アクティブ化エンジンは、分離実行環境とは別個のブローカプロセスをアクティブ化して、部分的信頼コンポーネントを実行する。この手法において、低特権アプリケーションは、リソースにアクセスするのに使用されるＡＰＩメソッドから遮断されるが、部分的信頼コンポーネントに関連付けられるリソースにアクセスする利益は得らえる。
【０００７】
これら及び他の特徴と利点は、以下の詳細な説明を読み、関連する図面を参照することから明らかになるであろう。上記の一般的な説明と下記の詳細な説明の双方とも例示であり、特許請求される態様を制限するものではないことを理解されたい。
【図面の簡単な説明】
【０００８】
【図１】信頼レベルアクティブ化の第１の例示的なシステムのブロック図である。
【図２】信頼レベルアクティブ化の第２の例示的なシステムのブロック図である。
【図３】信頼レベルアクティブ化の第３の例示的なシステムのブロック図である。
【図４】信頼レベルアクティブ化の第１の例示的な方法を示すフローチャートである。
【図５】信頼レベルアクティブ化の第２の例示的な方法を示すフローチャートである。
【図６】動作環境を示すブロック図である。
【図７】オペレーティング環境において使用されるコンピューティングデバイスの例示的なコンポーネントを示すブロック図である。
【発明を実施するための形態】
【０００９】
様々な実施形態は、分離実行環境において実行するアプリケーションコードの範囲をオペレーティングシステムランタイムコンポーネントにまで拡張する技術を対象とする。分離実行環境を用いてアプリケーションを実行し、これによりそのアプリケーションが、意図せず又は故意に他の実行中のアプリケーション又はリソースに対して影響を与えること、並びに機密データが漏えいすることを回避する。分離は、アプリケーションに対してアクセス可能なリソースを制御することによって容易になる。リソースは、リソースのセキュリティレベルを示す信頼レベルによって分類される。アプリケーションは、リソースにアクセスするアプリケーションのセキュリティレベルを示す特権レベルによって分類される。高特権アプリケーションは、全てのリソースにアクセスすることができ、低特権アプリケーションは、様々な条件の下、特定の信頼レベルリソースにアクセスすることができる。本明細書で説明される技術は、ユーザの機密データ及びコンピューティング環境に対するリスクを最小限にする手法により、低特権アプリケーションが特定のオペレーティングシステムランタイムコンポーネントにアクセスすることを許可にする。
【００１０】
一実施形態において、アプリケーションが、アプリケーションストアなどのサーバからダウンロードされる。ダウンロードされたアプリケーションは、アプリケーションコード及びマニフェストファイルを含むパッケージの形式とすることができる。アプリケーションコードは、限定ではないが、プログラムモジュール、アプリケーションソフトウェア、ビデオゲーム、企業用ソフトウェア、ソフトウェアコンポーネントなど、任意のタイプのコンピュータ実行可能命令とすることができる。マニフェストファイルは、アプリケーションの識別情報（例えば、発行者、アプリケーションの名前、アプリケーションのバージョン）、アプリケーションの対象アーキテクチャ（例えば、ハードウェアプロセッサアーキテクチャ、オペレーティングシステムバージョンなど）、依存関係（例えば、ハードウェアデバイス及び／又は他のアプリケーション）、能力及びその他などを含むことができる。能力セクションは、アプリケーションが動作に必要とするリソースを識別する。そのような能力の一部は、分離実行環境内からアクセス可能でないリソースを参照することがある。
【００１１】
リソースは、ユーザのセキュリティ又はプライバシーに対するリスクを表し、したがってオペレーティングシステムによって制御される、デバイス又は機能とすることができる。デバイスは、ユーザに対するセキュリティリスクを提示するユーザのコンピューティングデバイスに配置される、ハードウェアデバイスとすることができる。そのようなデバイスの例は、ウェブカメラ、オンボードセルラチップ、マイクロフォン、ＧＰＳ受信機などである。上記機能は、ユーザの写真ライブラリに対する読み取り／書き込みアクセス、インターネット及び公共の場でのネットワークに対する下りアクセス、ユーザのホームネットワークに対する上りアクセスなどである。
【００１２】
例えば、アプリケーションは、ユーザの写真ライブラリに対するアクセスを要求することがある。通常、ユーザの写真ライブラリの位置は、分離実行環境内で動作するアプリケーションに対してアクセス可能ではないであろう。マニフェストファイルの能力セクションは、アプリケーションが、ユーザの写真ライブラリの使用を要求することを示す。ユーザは、マニフェストファイルをレビューした後、アプリケーションのパッケージをダウンロードすると、ユーザの写真ライブラリに対するアプリケーションのアクセスを暗黙的に承諾する。しかしながら、アプリケーションが分離実行環境において動作するとき、アプリケーションは、ユーザの写真ライブラリへのアクセスを必要とすることになる。
【００１３】
１つ又は複数の実施形態において、リソースは、アプリケーションプログラミングインタフェース（ＡＰＩ）などのソフトウェアコンポーネントを通じてアクセスされることがある。例えば、リソースは、ファイルシステム、ディスクＩ／Ｏ、ネットワークＩ／Ｏなどとすることができる。アプリケーションは、ＡＰＩコールを通じてリソースへのアクセスを要求する。例えば、ＡＰＩコールは、データベースにおいて実行される読み取り操作を可能にし、ファイルシステムへのアクセスを可能にし、ネットワークへのアクセスを可能にすることができる。ＡＰＩコールは、ＡＰＩに関連付けられる信頼レベルに基づいて異なる。
【００１４】
１つ又は複数の実施形態において、各アプリケーションを、１つ又は複数の特権レベル、すなわち、高特権アプリケーション又は低特権アプリケーションに分類することができる。高特権アプリケーションは、全てのオペレーティングシステムランタイムコンポーネントに対するアクセスを有し、低特権アプリケーションは、特定のオペレーティングシステムランタイムコンポーネントのみに対する直接アクセスしか有しない。コンポーネントは、３つの信頼レベル、すなわち、基礎信頼、部分的信頼及び完全信頼に分類されることができる。基礎信頼コンポーネントは、任意の特権レベルに関連付けられるアプリケーションに対してアクセス可能となる。完全信頼コンポーネントは、高特権アプリケーションに対してのみ直接アクセス可能となる。部分的信頼コンポーネントは、ブローカプロセスを通じて低特権アプリケーションによってアクセスされうる。
【００１５】
ブローカプロセスは、分離実行環境とは別個の実行環境において動作し、部分的信頼コンポーネントについて低特権アプリケーションから要求されたＡＰＩコールを実行するように構成される。部分的実行コンポーネントは、基礎信頼コンポーネントよりも高いレベルのコードセキュリティを要し、完全信頼コンポーネントよりも低いコードセキュリティレベルを有する。ブローカプロセスをアプリケーションとオペレーティングシステムとの間のインターミディアリとして使用することによって、リソースの一貫性を、アプリケーションにおいて提示される悪質なコードによって引き起こされるダメージから保護する。次に、分離実行環境を拡張して信頼レベルコンポーネントをアクティブにする技術を具現化するシステムの実施形態のより詳細な説明に移る。
【００１６】
図１を参照すると、例示システム１００が示されている。例示システム１００は、低特権アプリケーション１０２が分離実行環境１０４内の基礎信頼コンポーネントにアクセスするのを可能にするように構成される。システム１００を、ハンドヘルド、ポータブル、サーバ、コンピュータ、モバイルフォン、個人用携帯情報端末（ＰＤＡ）などの任意のタイプのコンピューティングデバイスにおいて実施することができる。
【００１７】
システム１００は、分離実行環境１０４及び信頼アクティブ化エンジン１０６を有する。分離実行環境１０４は、低特権アプリケーション１０２をユーザプロセス１０８において実行するように構成される。ユーザプロセス１０８は、ユーザプロセス１０８で動作するアプリケーション１０２と、アプリケーション１０２がアクセスを許容される許可又は能力とを識別するトークン１１０に関連付けられる。トークン１１０は、ユーザセキュア識別子（ＳＩＤ）、パッケージＳＩＤ及びアプリケーションの能力を含むことができる。ユーザＳＩＤはユーザプロセスを識別し、パッケージＳＩＤはアプリケーションを識別する。上記能力は、アプリケーション１０２が要求するリソースへの、ユーザ許可されたアクセスである。
【００１８】
最初に、アプリケーション１０２がシステム１００にインストールされると、アプリケーション１０２はオペレーティングシステムに登録する。アプリケーション１０２に対するユーザプロセス１０８が作成され、トークン１１０がユーザプロセス１０８に関連付けられる。アプリケーション１０２は、稼働すると、基礎信頼コンポーネントのアクティブ化を要求する（ブロック１１２）。１つ又は複数の実施形態において、基礎信頼コンポーネントに対するアクセスは、ＡＰＩコールを通じて容易になる。
【００１９】
ＡＰＩを、ダイナミックリンクライブラリ（ＤＬＬ）を通じて、又は実行可能ファイルを通じて実装することができる。ＤＬＬは、複数のプロセスによって同時に使用されることが可能なコード及びデータを含む共有ライブラリである。オブジェクト指向プログラミング言語において、ＡＰＩは、１組のクラス定義を含むことができる。クラスのインスタンスはオブジェクトと呼ばれ、該オブジェクトは、ＡＰＩをコールするか、又はアクティブ化するのに使用される。オブジェクトは、ＡＰＩを実装するデータとメソッドからなるデータ構造として表すことができる。このデータは、プロセスによって使用されてＡＰＩをコールする変数を含むことができる。
【００２０】
信頼アクティブ化エンジン１０６は、ＡＰＩコールを処理し、ＡＰＩデータベース１１４においてＡＰＩに関連付けられる信頼レベルを探す。ＡＰＩデータベース１１４は、低特権アプリケーションによる改ざんから保護される。コンポーネントが基礎信頼レベルに関連付けられている場合、信頼アクティブ化エンジン１０６は、ＡＰＩデータベース１１４に格納された実行可能コードを使用して、ＡＰＩオブジェクトを生成する。基礎信頼オブジェクト１２０又はＡＰＩオブジェクトは、次いでユーザプロセス１０８に転送されて、ここに格納される（ブロック１１８）。その後、ＡＰＩコールの起動は、分離実行環境１０４から継続する。
【００２１】
図２は、例示システム１３０を図示している。例示システム１３０は、低特権アプリケーション１０２が分離実行環境１０４の外部にあるブローカプロセス内で部分的信頼コンポーネントにアクセスするのを可能にするように構成される。システム１３０は、アプリケーション１０２をユーザプロセス１０８において実行するように構成される分離実行環境１０４を有する。ユーザプロセス１０８は、ユーザプロセス１０８で動作するアプリケーション１０２と、アプリケーション１０２がアクセスを許容される許可又は能力とを識別するトークン１１０に関連付けられる。トークン１１０は、上記のように、ユーザセキュア識別子（ＳＩＤ）、パッケージＳＩＤ及びアプリケーションの能力を含むことができる。
【００２２】
上記のように、アプリケーション１０２に対してユーザプロセス１０８が作成され、トークン１１０がユーザプロセス１０８に関連付けられる。アプリケーション１０２は、稼働すると、ＡＰＩコールを通じて容易にされる部分的信頼コンポーネントのアクティブ化を要求する（ブロック１３２）。信頼アクティブ化エンジン１０６は、ＡＰＩコールを処理し、ＡＰＩデータベース１１４に格納されたデータからＡＰＩに関連付けられた信頼レベルを探す。コンポーネントが部分的信頼レベルに関連付けられる場合、信頼アクティブ化エンジン１０６は、ブローカプロセス１３４を生成する。ブローカプロセス１３４は、該ブローカプロセス１３４内に格納されるＡＰＩオブジェクトを生成する。ブローカプロセス１３４は、データをユーザプロセス１０８に戻し（ブロック１３６）、ブローカプロセス１３４との通信におけるアプリケーションの使用のために、部分的信頼コンポーネントに対応するＡＰＩを起動する（ブロック１４０）。ブローカは、ブローカプロセス１３４内でＡＰＩメソッドの実行を開始する。
【００２３】
図３は、例示システム１５０を図示している。例示システム１５０は、低特権アプリケーション１０２が完全信頼コンポーネントに直接アクセスするのを可能にするように構成される。システム１５０は、低特権アプリケーション１０２をユーザプロセス１０８において実行するように構成された分離実行環境１０４を有する。ユーザプロセス１０８は、ユーザプロセス１０８で実行中のアプリケーション１０２と、アプリケーション１０２がアクセスを許容される許可又は能力とを識別するトークン１１０に関連付けられる。トークン１１０は、上記のように、ユーザセキュア識別子（ＳＩＤ）、パッケージＳＩＤ及びアプリケーションの能力を含むことができる。
【００２４】
信頼アクティブ化エンジン１０６は、アプリケーションからの、完全信頼コンポーネントをアクティブ化する要求を処理する（ブロック１５２）。この要求は、ＡＰＩコールを通じて行われ、信頼アクティブ化エンジン１０６は、ＡＰＩデータベース１１４においてＡＰＩに関連付けられる信頼レベルを探す。信頼アクティブ化エンジン１０６は、コンポーネントが完全信頼レベルに関連付けられると決定すると、ＡＰＩをアクティブ化せず、代わりにエラーメッセージをアプリケーションに返す（ブロック１５４）。
【００２５】
図１〜３に示されるシステムは、特定の構成において限定的な数の要素を有するが、これらのシステムは、意図した実装のための代替的な構成において、より多くの又はより少ない要素を含むことがある。例えば、アプリケーションコードは、限定ではないが、ハイパーテキストマークアップ言語（ＨＴＭＬ）で書かれるＷｉｎｄｏｗｓ（登録商標）Ｗｅｂ  アプリケーション、カスケードスタイルシート（ＣＳＳ）、或いは管理コード又はネイティブコードで書かれるＪａｖａＳｃｒｉｐｔ（登録商標）及びＭｏｄｅｒｎ  Ｃｌｉｅｎｔアプリケーションなどの他の形式のアプリケーションを含むことができる。
【００２６】
さらに、図１〜３に示されるシステムはそれぞれ、複数のコンポーネント、プログラム、プロシージャ、モジュールを有するコンピュータ実装システムを備えてもよい。本明細書で使用されるとき、これらの用語は、ハードウェア、ハードウェアとソフトウェアの組み合わせ又はソフトウェアのいずれかを含む、コンピュータ関連のエンティティを指すように意図される。例えば、図１〜３に示される要素を、プロセッサ上で動作するプロセス、ハードディスクドライブ、（光及び／又は磁気記憶媒体の）複数の記憶デバイス、オブジェクト、実行可能ファイル、実行スレッド、プログラム並びに／或いはコンピュータとして実装してもよい。１つ又は複数の要素が、プロセス及び／又は実行スレッド内に存在してもよく、所与の実装に応じて、１つの要素が１つのコンピュータに局所化されても、並びに／或いは２つ又はそれ以上のコンピュータの間に分散されてもよい。諸実施形態はこの手法に限定されない。
【００２７】
次に、様々な例示的方法を参照する、諸実施形態の動作のより詳細な検討に移る。代表的な方法は、必ずしも提示された順序で実行される必要はなく、他に示されていない限り、任意の特定の順序で実行してもよいことが認識されよう。さらに、方法に関して説明される様々な動作は、直列に実行しても、並列に実行してもよく、或いは直列的動作と並列的動作の組み合わせで実行してもよい。これらの方法は、説明される実施形態、或いは設計及び性能の制約の所与の組に応じた代替的な実施形態の１つ又は複数のハードウェア要素及び／又はソフトウェア要素を使用して実装することができる。例えば、これらの方法を、論理デバイス（例えば、汎用のコンピュータ又は専用のコンピュータ）によって実行するためのロジック（例えば、コンピュータプログラム命令）として実装することができる。
【００２８】
図４は、信頼レベルアクティブ化の動作を図示するフローチャートである。最初に、アプリケーション１０２を、任意のソースからコンピューティングデバイスにダウンロードする（ブロック１６０）。一実施形態において、ダウンロードされるアプリケーションは、アプリケーションコード及びマニフェストファイルを含むパッケージの形式とすることができる。このパッケージを、コンピューティングデバイスに存在するオペレーティングシステムに登録することができる（ブロック１６２）。一実施形態において、Ｗｉｎｄｏｗｓ（登録商標）ベースのオペレーティングシステムを用いることができ、パッケージをオペレーティングシステムのレジストリに登録することができる。登録されると、オペレーティングシステムは、アプリケーション１０２に対する分離実行環境１０４を作成し、アプリケーション１０２のアクティブ化に際して、アプリケーション１０２を実行するユーザプロセス１０８を実行することができる（ブロック１６４）。例えば、分離実行環境１０４は、アプリケーションのレジストリ設定を分離実行環境１０４に対して設定し、アプリケーションのために有界の（ｂｏｕｎｄｅｄ）アドレス空間を割り当て、そしてアプリケーションが動作する個別のプロセスを管理する、別個のソフトウェアモジュールによって容易にされる。アプリケーション１０２の実行の間、アプリケーション１０２は、オペレーティングシステムランタイムコンポーネントを要求する（ブロック１６６）。
【００２９】
図５を参照すると、プロセスは、信頼レベルコンポーネントへのアクセスを要求するアプリケーションに関連付けられる特権レベルを決定する（ブロック１７０）。信頼アクティブ化エンジン１０６は。ＡＰＩコールを、上記要求を行っているユーザプロセス１０８から受信し、ユーザプロセス１０８の識別情報を決定する。信頼アクティブ化エンジン１０６は、ユーザプロセス１０８の識別情報を、ＡＰＩコールで渡されたトークン１１０から決定する。トークン１１０のパッケージＳＩＤが、分離実行環境１０４内で実行中のプロセスのためのオペレーティングシステムレジストリ内のエントリに合致する場合、信頼アクティブ化エンジン１０６は、コール側のアプリケーションが低特権レベルを有すると決定する。そうでなければ、信頼アクティブ化エンジン１０６は、コール側のアプリケーションが高特権レベルを有すると決定する。
【００３０】
低特権アプリケーションが、信頼レベルコンポーネントへのアクセスを要求している場合（ブロック１７０がＹＥＳ）、次いで処理は、信頼レベルコンポーネントのタイプを決定する（ブロック１７２）。そうではない場合（ブロック１７０がＮＯ）、高特権アプリケーションは、すべての信頼レベルコンポーネントへのアクセスを有しており、したがって高特権アプリケーションは、その実行環境から信頼レベルコンポーネントを起動することができる（ブロック１７１）。
【００３１】
低特権アプリケーションの場合、信頼アクティブ化エンジン１０６は、ＡＰＩコールにおいて要求された信頼レベルコンポーネントのタイプを決定する（ブロック１７２）。信頼アクティブ化エンジン１０６は、各コンポーネントに関連付けられた信頼レベルを含むＡＰＩデータベース１１４内の要求されたコンポーネントに対応する。要求されたコンポーネントが基礎信頼レベルに関連付けられる場合（ブロック１７４がＹＥＳ）、次いで信頼アクティブ化エンジンは、ＡＰＩオブジェクトを生成する（ブロック１７６）。ＡＰＩオブジェクトは次いで、分離実行環境１０４内のユーザプロセスのアドレス空間に送られる（ブロック１７６）。ＡＰＩコールに関連付けられたメソッドの実行は、分離実行環境１０４から継続する（ブロック１７６）。
【００３２】
そうではなく（ブロック１７４がＮＯ）、要求されたコンポーネントが部分的信頼レベルに関連付けられている場合（ブロック１７８がＹＥＳ）、次いでＡＰＩコールを実行するブローカプロセス１３４が生成される（ブロック１８０）。信頼アクティブ化エンジン１０６は、ブローカプロセス１３４を作成し、ブローカプロセス１３４において部分的信頼コンポーネント１３８をアクティブ化する（ブロック１８０）。ブローカプロセス１３４は次いで、部分的信頼コンポーネント１３８に関連付けられたＡＰＩコールを起動することによって、部分的信頼コンポーネント１３８をアクティブ化する（ブロック１８０）。ブローカプロセス１３４は、ＡＰＩオブジェクトを生成する（ブロック１８０）。このオブジェクトに関連するデータを、その後アプリケーション１０２からＡＰＩコールを起動する際に使用され得る、分離実行環境１０４内のユーザプロセス１０８に送ることができる（ブロック１８０）。ＡＰＩコールに関連付けられたメソッドの実行は、ブローカプロセス１３４において行われる（ブロック１８０）。
【００３３】
要求されたコンポーネントが完全信頼レベルに関連付けられる場合（ブロック１８２がＹＥＳ）、次いで、信頼アクティブ化エンジン１０６は、完全信頼コンポーネントへのアクセスを拒否して、失敗の応答をユーザプロセスに返す（ブロック１８４）。次に、本明細書で説明される実施形態を用いる動作環境の説明に移る。
【００３４】
図６を参照すると、例示的な動作環境２５０の概略的なブロック図が示されている。動作環境２５０は、通信フレームワーク２５６を通じて１つ又は複数のサーバ２５８と通信する１つ又は複数のクライアントを含むことができる。一実施形態において、クライアント２５４を、システム１００、１３０及び１５０を具現化するコンピューティングデバイスとして実装することができる。サーバ２５８は、クライアント２５４に提供されるアプリケーションコードのソースとして実装することができる。アプリケーションコードのソースは、例えば、アプリケーションストア、サーバ、電子メールサーバ及びウェブサーバなどである。各クライアント２５４は、クライアント２５４に対してローカルに情報を格納する１つ又は複数のクライアントデータストア２６０に結合される。各サーバ２５８は、サーバ２５８に対してローカルに情報を格納する１つ又は複数のサーバデータストア２６２に結合される。
【００３５】
クライアント２５４を、ハードウェアデバイス、ソフトウェアモジュール又はこれらの組み合わせとして具現化することができる。そのようなハードウェアデバイスの例には、限定ではないが、コンピュータ（例えば、サーバ、パーソナルコンピュータ、ラップトップなど）、携帯電話、個人用携帯情報端末、又は任意のタイプのコンピューティングデバイスが含まれる。クライアント２５４は、単一の実行経路、複数の同時実行経路（例えば、スレッド、プロセスなど）又は任意の他の方法で実行される命令を有するソフトウェアモジュールとして具現化することもできる。
【００３６】
サーバ２５８は、ハードウェアデバイス、ソフトウェアモジュール又はこれらの組み合わせとして具現化することができる。そのようなハードウェアデバイスの例には、限定ではないが、コンピュータ（例えば、サーバ、パーソナルコンピュータ、ラップトップなど）、携帯電話、個人用携帯情報端末又は任意のタイプのコンピューティングデバイスが含まれる。サーバ２５８は、単一の実行経路、複数の同時実行経路（例えば、スレッド、プロセスなど）又は任意の他の方法で実行される命令を有するソフトウェアモジュールとして具現化することもできる。
【００３７】
通信フレームワーク２５６は、クライアント２５４とサーバ２５８との間の通信を容易にする。一実施形態において、通信フレームワーク２５６を、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク又はこれらの組み合わせなどの通信ネットワークとして具現化することができる。通信フレームワーク２５６は、有線又は無線ネットワークなど、任意の通信プロトコルを用いる任意のタイプの通信媒体を具現化することができる。
【００３８】
図７を参照すると、クライアント２５４は、ネットワークインタフェース２７０、プロセッサ２７２及びメモリ２７４を有することができる。プロセッサ２７２は、任意の市販のプロセッサとすることができ、デュアルマイクロプロセッサ及びマルチプロセッサアーキテクチャを含むことができる。ネットワークインタフェース２７０は、クライアント２５４とサーバ２５８との間の通信経路を提供するために、クライアント２５４と通信フレームワーク２５６との間の有線又は無線通信を容易にする。
【００３９】
メモリ２７４は、プロセッサ実行可能命令、プロシージャ、アプリケーション及びデータを格納することができる任意のコンピュータ読取可能記憶媒体又はコンピュータ読取可能媒体とすることができる。コンピュータ読取可能媒体は、搬送波を通じて伝送される変調データ信号などの伝搬信号には関連しない。コンピュータ読取可能媒体は、任意のタイプのメモリデバイス（例えば、ランダムアクセスメモリ、読み取り専用メモリなど）、磁気記憶装置、揮発性記憶装置、非揮発性記憶装置、光記憶装置、ＤＶＤ、ＣＤ、フロッピー（登録商標）ドライブ、ディスクドライブ、フラッシュメモリなどとすることができる。メモリ２７４は、１つ又は複数の外部記憶デバイス、或いはリモートに配置される記憶デバイスを含むこともできる。メモリ２７４は、以下のような命令及びデータを含むことができる。  
・オペレーティングシステム２７６
・レジストリ２７８
・ユーザプロセス１０８、アプリケーション１０２、トークン１１０及び基礎信頼オブジェクト１２０を有する分離実行環境１０４
・信頼アクティブ化エンジン１０６
・ＡＰＩデータベース１１４
・部分的信頼オブジェクト１３８を有するブローカプロセス１３４
・アプリケーション２８２及びマニフェストファイル２８４を有するパッケージ２８０
・様々な他のアプリケーション及びデータ２８６
【００４０】
本主題を、構造的特徴及び／又は方法の動作に特有の言葉で説明してきたが、添付の特許請求の範囲で定義される本主題は、上述の特定の特徴及び動作に必ずしも限定されないことを理解されたい。むしろ、上述の特定の特徴及び動作は、特許請求の範囲を実装する例示的な形式として開示される。
【００４１】
例えば、システムの様々な実施形態を、ハードウェア要素、ソフトウェア要素又はその双方の組み合わせを使用して実装することができる。ハードウェア要素の例には、デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路要素、統合回路、アプリケーション固有の統合回路、プログラム可能な論理デバイス、デジタル信号プロセッサ、フィールドプログラム可能ゲートウェイ、メモリユニット、論理ゲートなどが含まれる。ソフトウェア要素の例には、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、ソフトウェアインタフェース、アプリケーションプログラミングインタフェース、命令セット、コンピューティングコード、コードセグメント及びこれらの任意の組み合わせが含まれる。ハードウェア要素を使用して実施形態を実装するかソフトウェア要素を使用して実装するかの決定は、所与の実装に応じて、所望の計算レート、パワーレベル、帯域幅、計算時間、ロードバランス、メモリリソース、データバススピード及び他の設計的制約若しくは性能制約などの任意の数のファクタにしたがって変化させることができる。
【００４２】
一部の実施形態は、命令又はロジックを格納する記憶媒体を備えることができる。記憶媒体の例には、揮発性メモリ若しくは不揮発性メモリ、取外し可能若しくは取外し不可能メモリ、消去可能又は消去不可能メモリ、及び書き込み又は再書き込み可能メモリを含め、電子的データを格納することが可能な１つ又は複数のタイプのコンピュータ読取可能記憶媒体が含まれる。ロジックの例には、プログラム、プロシージャ、モジュール、アプリケーション、コードセグメント、プログラムスタック、ミドルウェア、ファームウェア、メソッド、ルーチンなどの様々なソフトウェアコンポーネントが含まれる。一実施形態において、例えば、コンピュータ読取可能記憶媒体は、プロセッサによって実行されると、該プロセッサに説明された実施形態にかかる方法及び／又は操作を実行させる、実行可能なコンピュータプログラム命令を格納することができる。実行可能なコンピュータプログラム命令を、特定の関数を実行するようにコンピュータに指示するための、予め定義されたコンピュータ言語、マナー又はシンタックスに応じて実装することができる。このような命令は、任意の適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイル済み及び／又は翻訳済みのプログラミング言語を使用して実装することができる。
【図１】
0005985631.tif 000002
【図２】
0005985631.tif 000003
【図３】
0005985631.tif 000004
【図４】
0005985631.tif 000005
【図５】
0005985631.tif 000006
【図６】
0005985631.tif 000007
【図７】
0005985631.tif 000008