(57)【要約】本明細書で説明される方法およびシステムは、オブジェクトファイアウォール、ＩＰＣ機構、および／またはポリシーエンジンを使用して、１つ以上のソフトウェア機能をプロセッサの信頼できるゾーンの中に構成することによって、デバイスに関するセキュリティを強化することに関する。【選択図】  図１
2015508540.tif 000002
【特許請求の範囲】
【請求項１】
デバイスの１つ以上のオブジェクトファイアウォールによって制御される２つ以上のオブジェクト間の１つ以上のプロセス間制御経路を有する前記デバイスのリソースへのアクセスをフィルタリングするための方法であって、
コンピュータプロセッサの使用を通して、ポリシーに基づいて、アプリケーションからの前記リソースへのアクセスを制御することであって、
前記ポリシーを提供することと、
前記リソースへのアクセスを提供するオブジェクトへのプロセス間通信を管理するポリシーに基づいて、前記１つ以上のプロセス間制御経路を通して、前記リソースへのアクセスを提供する前記オブジェクトへのアクセスをフィルタリングすることと、を含む、制御することを含む、方法。
【請求項２】
前記コンピュータプロセッサの使用を通して、現在の日付および時刻、前記デバイスの現在の場所、前記デバイスの現在のユーザの識別情報、前記デバイス上で現在実行している各アプリケーションの識別情報、ならびに現在使用中の各リソースの識別情報、のうちの１つ以上に基づいて、デバイスに基づくコンテキストを生成することをさらに含む、請求項１に記載の方法。
【請求項３】
ポリシーに基づいて、アプリケーションと関連付けられるオブジェクトからの前記リソースへのアクセスを制御することはさらに、前記リソースへのアクセスを制御するために、コンテキスト認識ポリシーエンジンを提供することを含む、請求項１に記載の方法。
【請求項４】
前記コンテキスト認識ポリシーエンジンはさらに、１つ以上のポリシーを通信するために、ポリシーサーバと通信することが可能である、請求項３に記載の方法。
【請求項５】
前記オブジェクトへの前記プロセス間通信を管理する前記ポリシーは、コンテキスト関連のポリシーである、請求項１に記載の方法。
【請求項６】
前記リソースは、ネットワーク接続、セルラー接続、キーボード、タッチインターフェース、オペレーティングシステム、アプリケーション、アプリケーションプログラミングインターフェースの一部、ソフトウェアドライバ、データベース、ポート、無線通信インターフェース、およびメモリの中のセキュアな領域、のうちの１つである、請求項１に記載の方法。
【請求項７】
前記オブジェクトファイアウォールは、リソースアクセス試行を記録する、請求項１に記載の方法。
【請求項８】
前記オブジェクトファイアウォールは、集中型オブジェクトレジストリに記憶される、請求項１に記載の方法。
【請求項９】
前記リソースへのアクセスを提供する前記オブジェクトは、集中型レジストリに記憶される、請求項１に記載の方法。
【請求項１０】
前記ポリシーを提供することはさらに、前記デバイス上にインストールされたときにオブジェクトファイアウォールを制御または作成するポリシーをオーサリングするために、ブラウザに基づくインターフェースを提供することを含む、請求項１に記載の方法。
【請求項１１】
前記ポリシーは、グラフィカルユーザインターフェースを使用してオーサリングされ、第１のフォーマットで記憶され、デバイスへの伝送のための第２のフォーマットに翻訳され、そして１つ以上のオブジェクトファイアウォールをどのように構成するのかを決定するために、受け取りデバイスによってパースされる、請求項１に記載の方法。
【請求項１２】
コンピュータプロセッサの使用を通して、デバイスセキュリティシステムと関連付けられる単一のプロセスで、前記オブジェクトファイアウォールを制御および構成することをさらに含む、請求項１に記載の方法。
【請求項１３】
モバイルネットワークにおける分散ポリシーを強化するシステムであって、
デバイスを介して通信する少なくとも２つのシステム間の通信を管理する１つ以上の規則を強化するために、プロセス間通信ファイアウォールを前記デバイス上に提供するように適合される、少なくとも１つのプロセッサを備え、
前記少なくとも１つのプロセッサは、前記プロセス間通信ファイアウォールと関連付けられるポリシーエンジンを介して、前記デバイスを介して通信する前記システムの少なくとも１つの前記コンテキストの指標を生成するように適合され、
前記少なくとも１つのプロセッサは、前記少なくとも２つのシステム間の通信が、ポリシーおよび前記システムの少なくとも１つの前記コンテキストに基づいて、前記プロセス間通信ファイアウォールによって許可されるかどうかを判定するように適合される、システム。
【請求項１４】
前記少なくとも１つのプロセッサは、複数のプロセス間通信ファイアウォールをデバイス上に提供するように適合される、請求項１３に記載システム。
【請求項１５】
前記少なくとも１つのプロセッサはさらに、前記ポリシーエンジンを生成するように適合され、前記ポリシーエンジンは、１つ以上のポリシーを通信するために、ポリシーサーバと通信することが可能である、請求項１３に記載のシステム。
【請求項１６】
前記ポリシーは、ブラックリスト、ホワイトリスト、署名ポリシー、命名ポリシー、チェックサム解析ポリシー、ライブラリ解析ポリシー、ならびにアプリケーション、プロセス、ユーザ、および一群のユーザのうちの１つ以上に対する許可、のうちの１つ以上から成る、請求項１３に記載のシステム。
【請求項１７】
前記プロセス間通信ファイアウォールは、オブジェクト指向ファイアウォールである、請求項１３に記載のシステム。
【請求項１８】
前記オブジェクト指向ファイアウォールは、前記デバイス上で実行するアプリケーションと関連付けられる、請求項１７に記載のシステム。
【請求項１９】
前記少なくとも２つのシステム間の通信が前記プロセス間通信ファイアウォールによって許可されるかどうかを判定するように適合される、前記少なくとも１つのプロセッサはさらに、前記通信のコンテンツに基づく、請求項１３に記載のシステム。
【請求項２０】
マルウェアからモバイルデバイスをセキュアにする方法であって、
コンピュータプロセッサの使用を通して、第１のアプリケーションからプロセス間制御データバスにリモートプロシージャコールを渡すことと、
前記プロセス間制御データバスによってポリシーエンジンから、前記リモートプロシージャコールのポリシー検証を要求することと、
前記ポリシーエンジンによって、前記リモートプロシージャコールおよび記憶したポリシーの前記コンテキストに基づいて、前記リモートプロシージャコールを承認するかどうかを判定することと、
前記判定を、前記ポリシーエンジンから前記プロセス間制御データバスに返信することと、
前記判定に応じて、前記プロセス間制御データバスによって前記リモートプロシージャコールの許可およびブロックのうちの少なくとも１つを行うことと、を含む、方法。
【請求項２１】
前記リモートプロシージャコールを渡すことはさらに、第１のアプリケーションと関連付けられる第１のオブジェクトからプロセス間制御データバスに、第２のアプリケーションと関連付けられる第２のオブジェクトのリモートプロシージャコールを渡すことを含む、請求項２０に記載の方法。
【請求項２２】
前記ポリシーエンジンはさらに、１つ以上のポリシーを通信するために、ポリシーサーバと通信することが可能である、請求項２０に記載の方法。
【請求項２３】
前記方法はさらに、新しいオブジェクトが作成されるときに新しいオブジェクトファイアウォールをインストールするためのプロセス間コントローラを提供することを含む、請求項２０に記載の方法。
【請求項２４】
前記判定に応じて、前記プロセス間制御データバスによって前記リモートプロシージャコールの許可およびブロックのうちの少なくとも１つを行うことはさらに、修正を伴わない前記リモートプロシージャコールを許可すること、前記リモートプロシージャコールの修正されたコンテンツを伴う前記リモートプロシージャコールを許可すること、前記リモートプロシージャコールに応じて、リソースから送られるデータの修正された戻り値を伴う前記リモートプロシージャコールを許可すること、前記リモートプロシージャコールをブロックすること、前記リモートプロシージャコールをロギングすること、前記リモートプロシージャコールを無視すること、１つ以上のファイアウォール規則を修正すること、１つ以上のファイアウォールポリシーを加えること、および１つ以上のファイアウォールポリシーを除去すること、のうちの少なくとも１つを含む、請求項２０に記載の方法。
【請求項２５】
前記ポリシーエンジンはさらに、コンテキスト認識ポリシーエンジンを備える、請求項２０に記載の方法。
【請求項２６】
前記コンテキスト認識ポリシーエンジンはさらに、システム固有のコンテキストを生成することが可能であり、前記システム固有のコンテキストは、現在の日付、現在の時刻、前記モバイルデバイスの場所、前記デバイスのユーザの識別情報、および前記モバイルデバイス上で現在実行している前記アプリケーション、のうちの１つ以上を含む、請求項２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、以下の米国仮出願の非仮出願であり、それぞれ、参照によりその全体が本明細書に組み込まれる。２０１２年１月６日に出願された米国仮出願第６１／５８３，６０５号、名称「ＭＥＴＨＯＤ  ＴＯ  ＥＮＦＯＲＣＥ  ＤＡＴＡ  ＰＲＯＶＥＮＡＮＣＥ  ＩＮ  ＭＯＢＩＬＥ  ＣＯＭＰＵＴＩＮＧ」、２０１２年１月６日に出願された米国仮出願第６１／５８３，６１０号、名称「ＭＥＴＨＯＤ  ＴＯ  ＰＲＯＴＥＣＴ  ＡＧＡＩＮＳＴ  ＭＡＬＷＡＲＥ  ＴＨＲＥＡＴＳ  ＩＮ  ＭＯＢＩＬＥ  ＣＯＭＰＵＴＩＮＧ」、および２０１２年１月８日に出願された米国仮出願第６１／５８４，２８４号、名称「ＭＥＴＨＯＤ  ＴＯ  ＥＮＦＯＲＣＥ  ＳＥＣＵＲＩＴＹ  ＰＯＬＩＣＩＥＳ  ＵＳＩＮＧ  Ａ  ＤＩＳＴＲＩＢＵＴＥＤ  ＯＢＪＥＣＴ−ＯＲＩＥＮＴＥＤ  ＩＰＣ  ＦＩＲＥＷＡＬＬ」。
【０００２】
本発明は、モバイルデバイスのセキュリティに関する。
【背景技術】
【０００３】
現在のデバイス、特にモバイルデバイスのソフトウェアおよびデータ関連のセキュリティは、仮想マシン、プロセス間通信、パッケージマネージャ、モバイルデバイス管理システム、タッチ画面ソフトウェア構成要素、共有メモリ、リレーショナルデータベース、デバイス構成署名チェック、特殊化されたデバッギングインターフェース（例えば、Ａｎｄｒｏｉｄデバッグブリッジ等）、信頼できるデーモンプロセス等を含む、様々な特徴に依存する。ある例において、Ａｎｄｒｏｉｄモバイルデバイスは、アプリケーションがユーザの連絡先リスト等の特定のシステムリソースへのアクセスを獲得すべきかどうかを判定するために、プロセス間通信のチェックを使用する。特定のネイティブライブラリをロードすべきかどうかを判定する等の、仮想マシンのセキュリティチェックも利用される。
【０００４】
モバイルデバイスに関する主な課題は、セキュリティを提供するために依存するソフトウェアの完全性を確保することが困難であるということである（例えば、仮想マシン、デバイスＩ／Ｏ、プロセス間通信、特殊なデバッギングインターフェース、および他の構成要素）。データの出所を強化すること、マルウェアから保護すること、およびプロセス間通信機構を介してセキュリティポリシーを強化すること等によってセキュリティを提供するシステムに対する必要性が存在する。
【発明の概要】
【０００５】
実施形態において、デバイスの１つ以上のオブジェクトファイアウォールによって制御される２つ以上のオブジェクト間の１つ以上のプロセス間制御経路を有するリソースへのアクセスをフィルタリングする方法およびシステムは、ポリシーに基づいて、アプリケーションからのリソースへのアクセスを制御するために、プロセッサを使用し得る。ポリシーに基づいて、アプリケーションからのリソースへのアクセスを制御することが、ポリシーを提供することと、プロセス間制御経路を通して、リソースへのアクセスを提供するオブジェクトへのアクセスをフィルタリングすることとを含み得る。
【０００６】
実施形態において、方法およびシステムはさらに、コンピュータプロセッサを使用して、現在の日付および時刻、デバイスの現在の場所、デバイスの現在のユーザの識別情報、デバイス上で現在実行している各アプリケーションの識別情報、ならびに現在使用中の各リソースの識別情報、のうちの１つ以上に基づいて、デバイスに基づくコンテキストを生成することを含み得る。
【０００７】
実施形態において、ポリシーに基づいて、アプリケーションと関連付けられるオブジェクトからのデバイスリソースへのアクセスを制御することは、リソースへのアクセスを制御するために、コンテキスト認識ポリシーエンジンを提供することを含み得る。実施形態において、コンテキスト認識ポリシーは、１つ以上のポリシーを通信するために、ポリシーサーバと通信することが可能であり得る。
【０００８】
実施形態において、オブジェクトへのプロセス間通信を管理するポリシーは、コンテキスト関連のポリシーであり得る。
【０００９】
実施形態において、リソースは、ネットワーク接続、セルラー接続、キーボード、タッチインターフェース、オペレーティングシステム、アプリケーション、アプリケーションプログラミングインターフェースの一部、ソフトウェアドライバ、データベース、ポート、無線通信インターフェース、およびメモリの中のセキュアな領域、のうちの１つであり得る。
【００１０】
実施形態において、オブジェクトファイアウォールは、リソースアクセス試行を記録し得る。
【００１１】
実施形態において、オブジェクトファイアウォールは、集中型オブジェクトレジストリに記憶され得る。
【００１２】
実施形態において、リソースへのアクセスを提供するオブジェクトは、集中型レジストリに記憶される。
【００１３】
実施形態において、ポリシーは、グラフィカルユーザインターフェースを使用してオーサリングされ、第１のフォーマットで記憶され得、デバイスへの伝送のための第２のフォーマットに翻訳され得、そして１つ以上のオブジェクトファイアウォールをどのように構成するのかを決定するために、受け取りデバイスによってパースされ得る。
【００１４】
実施形態において、コンピュータプロセッサは、デバイスセキュリティシステムと関連付けられる単一のプロセスで、オブジェクトファイアウォールを制御および構成するために使用され得る。
【００１５】
実施形態において、モバイルネットワークにおける分散ポリシーを強化する方法およびシステムは、デバイスを介して通信し得る少なくとも２つのシステム間の通信を管理する１つ以上の規則を強化するために、プロセス間通信ファイアウォールをデバイス上に提供するように適合される、少なくとも１つのプロセッサを備え得、少なくとも１つのプロセッサは、プロセス間通信ファイアウォールと関連付けられるポリシーエンジンを介して、デバイスを介して通信するシステムの少なくとも１つのコンテキストの指標を生成するように適合され、該少なくとも１つのプロセッサは、少なくとも２つのシステム間の通信が、ポリシーおよびシステムの少なくとも１つのコンテキストに基づいて、プロセス間通信ファイアウォールによって許可されるかどうかを判定するように適合される。
【００１６】
実施形態において、少なくとも１つのプロセッサは、複数のプロセス間通信ファイアウォールをデバイス上に提供するように適合され得る。実施形態において、該ファイアウォールは、デバイスを介して通信し得る、少なくとも２つのシステム間の通信を管理する１つ以上の規則を強化するために提供され得る。
【００１７】
実施形態において、少なくとも１つのプロセッサは、ポリシーエンジンを生成するように適合され得、ポリシーエンジンは、１つ以上のポリシーを通信するために、ポリシーサーバと通信することが可能である。
【００１８】
実施形態において、ポリシーは、ブラックリスト、ホワイトリスト、署名ポリシー、命名ポリシー、チェックサム解析ポリシー、ライブラリ解析ポリシー、ならびにアプリケーション、プロセス、ユーザ、および一群のユーザのうちの１つ以上に対する許可、のうちの１つ以上から成り得る。
【００１９】
実施形態において、プロセス間通信ファイアウォールは、オブジェクト指向ファイアウォールであり得る。実施形態において、オブジェクト指向ファイアウォールは、デバイス上で実行するアプリケーションと関連付けられ得る。
【００２０】
実施形態において、少なくとも２つのシステム間の通信がプロセス間通信ファイアウォールによって許可されるかどうかを判定するように適合される、少なくとも１つのプロセッサは、通信のコンテンツに基づいて、少なくとも２つのシステム間の通信がプロセス間通信ファイアウォールによって許可されるかどうかを判定するように適合され得る。
【００２１】
実施形態において、マルウェアからモバイルデバイスをセキュアにする方法およびシステムは、コンピュータプロセッサを使用して、第１のアプリケーションからプロセス間制御データバスにリモートプロシージャコールを渡すことと、プロセス間制御データバスによってポリシーエンジンから、リモートプロシージャコールのポリシー検証を要求することと、ポリシーエンジンによって、リモートプロシージャコールのコンテキストおよび記憶されたポリシーに基づいて、リモートプロシージャコールを承認するかどうかを判定することと、判定を、ポリシーエンジンからプロセス間制御データバスに返信することと、判定に応じて、プロセス間制御データバスによってリモートプロシージャコールの許可およびブロックのうちの少なくとも１つを行うことと、を含み得る。
【００２２】
実施形態において、リモートプロシージャコールを渡すことは、第１のアプリケーションと関連付けられる第１のオブジェクトからプロセス間制御データバスに、第２のアプリケーションと関連付けられる第２のオブジェクトのリモートプロシージャコールを渡すことを含み得る。
【００２３】
実施形態において、ポリシーエンジンは、１つ以上のポリシーを通信するために、ポリシーサーバと通信することが可能であり得る。
【００２４】
実施形態において、マルウェアからモバイルデバイスをセキュアにする方法およびシステムは、新しいオブジェクトが作成されるときに新しいオブジェクトファイアウォールをインストールするためのプロセス間コントローラを提供することを含み得る。
【００２５】
実施形態において、マルウェアからモバイルデバイスをセキュアにする方法およびシステムは、判定に応じて、プロセス間制御データバスによってリモートプロシージャコールの許可およびブロックのうちの少なくとも１つを行うことを含み得、判定に応じて、プロセス間制御データバスによってリモートプロシージャコールの許可およびブロックのうちの少なくとも１つを行うことはさらに、修正を伴わないリモートプロシージャコールを許可すること、リモートプロシージャコールの修正されたコンテンツを伴うリモートプロシージャコールを許可すること、リモートプロシージャコールに応じて、リソースから送られるデータの修正された戻り値を伴うリモートプロシージャコールを許可すること、リモートプロシージャコールをブロックすること、リモートプロシージャコールをロギングすること、リモートプロシージャコールを無視すること、１つ以上のファイアウォール規則を修正すること、１つ以上のファイアウォールポリシーを加えること、および１つ以上のファイアウォールポリシーを除去すること、のうちの少なくとも１つを含み得る。
【００２６】
実施形態において、マルウェアからモバイルデバイスをセキュアにする方法およびシステムは、コンテキスト認識ポリシーエンジンを備え得る。実施形態において、コンテキスト認識ポリシーエンジンはさらに、システム固有のコンテキストを生成することが可能であり得、該システム固有のコンテキストは、現在の日付、現在の時刻、モバイルデバイスの場所、デバイスユーザの識別情報、およびモバイルデバイス上で現在実行しているアプリケーション、のうちの１つ以上を含む。
【００２７】
これらのおよび他の本発明のシステム、方法、オブジェクト、特徴、および利点は、以下の発明を実施するための形態および図面から当業者に明らかになるであろう。本明細書に記載される全ての文書は、参照によりその全体が本明細書に組み込まれる。
【図面の簡単な説明】
【００２８】
図面において、図面は必ずしも一定の縮尺で描かれておらず、複数の図面を通して、同じ数字は、実質的に同じ構成要素を表し得る。異なる文字接尾辞を有する同じ数字は、実質的に同じ構成要素の異なるインスタンスを表し得る。図面は、全般的に、それらに限定されないが、本文書で論じられるある実施形態の発明を実施するための形態を一例として例示する。
【図１】デバイスをセキュアにするための方法およびシステムを表す図である。
【図２】ポリシーエンジンを有するシステムを表す図である。
【図３】アプリケーション間のデータ転送が許可され得るかどうかを判定するための方法を表す図である。
【図４】システムコールを生じさせるべきであるかどうかを判定するための方法を表す図である。
【図５】複数のオブジェクトファイアウォールを有するシステムを表す図である。
【発明を実施するための形態】
【００２９】
本発明の詳細な実施形態が本明細書で開示される。しかしながら、開示される実施形態は、単に本発明の例示に過ぎず、種々の形態で具現化され得ることを理解されたい。したがって、本明細書で開示される特定の構造的および機能的な詳細は、限定するものとして解釈されるべきではなく、実質的に任意の適切に詳述される構造で本発明を様々に利用するために、単に当業者に教示するための代表的な根拠として解釈されるべきである。さらに、本明細書で使用される用語および表現は、限定することを意図するものではなく、むしろ、理解できる本発明の説明を提供することを意図する。
【００３０】
スマートフォン、タブレット、および他のウェブ接続されるデバイス等のモバイルデバイスは、ビジネスツールとしての使用および個人的使用の双方について急激に増加している。そのようなモバイルデバイスは、データを収集し、記憶し、処理し、そして通信するためのプラットフォームを提供し得る。多くの場合において、そのようなデータは、個人の連絡先、金融情報、およびビジネス資料等の、個人データおよび／または機密データであり得る。
【００３１】
モバイルデバイスの急増の結果、モバイルセキュリティは、モバイルコンピューティングの分野において関心が増加している。モバイルセキュリティは、様々な方法で実現され得る。本明細書で開示されるように、モバイルセキュリティを提供するための複数の方法は、モバイルデバイスによって記憶され、通信されるデータを保護すること、および他のリソースにアクセスするために、デバイス上のソフトウェアの能力を制御することを含み得る。
【００３２】
実施形態において、デバイスをセキュアにする方法は、ポリシーに基づいてアクセスを制御することによって、デバイスまたはシステムリソースへのアクセスをフィルタリングすることを含み得、ポリシーは、プロセス間制御経路をフィルタリングおよび／または制御するためにファイアウォールによって適用され得、それによって、オブジェクト間のプロセス間通信を管理するポリシーに基づいて、メッセージが、システムリソースを制御するオブジェクト間で配信され得る。いくつかの実施形態において、デバイスは、ｉＰｈｏｎｅ、Ｍｏｔｏｒｏｌａ  Ｄｒｏｉｄ  Ｒａｚｒ  Ｍａｘｘ、ＨＴＣ  Ｏｎｅ  Ｘ、Ｓａｍｓｕｎｇ  Ｆｏｃｕｓ  ２、Ｓａｍｓｕｎｇ  Ｇｕｓｔｏ  ２、または他の何らかの携帯電話等の、携帯電話であり得る。他の実施形態において、デバイスは、ｉＰａｄ、Ａｓｕｓ  Ｅｅｅ  Ｐａｄ  Ｔｒａｎｓｆｏｒｍｅｒ  Ｐｒｉｍｅ、Ｓｏｎｙ  Ｔａｂｌｅｔ  Ｓ、Ｓａｍｓｕｎｇ  Ｇａｌａｘｙ  Ｔａｂ  １０．１、または他の何らかのタブレット等の、タブレットであり得る。デバイスリソースは、ネットワーク接続、セルラー接続、キーボード、タッチインターフェース、オペレーティングシステム、アプリケーション、または他の何らかのリソースであり得る。システムリソースは、ソフトウェアドライバ、データベース、アプリケーションプログラミングインターフェースの方法、ポート、無線通信インターフェース、メモリの中のセキュアな領域、または他の何らかのリソースであり得る。プロセス間通信は、Ａｎｄｒｏｉｄ  Ｂｉｎｄｅｒ、Ｕｎｉｘ（登録商標）ドメインソケット、または共有メモリ等の任意のプロセス間通信機構によって提供され得る。アプリケーションに対するＡｎｄｒｏｉｄの許可システム等の従来技術は、オブジェクトファイアウォールを提供せず、システムリソースへのアクセスを提供する受け取りオブジェクトが、受け取ったプロセス間通信に関するそれ自体のポリシーを強化することを必要とする。
【００３３】
ポリシーは、１つ以上の基準に基づいて、リソースにアクセスするための要求をフィルタ処理および／または修正すべきであることを示し得る。いくつかの実施形態において、ポリシーは、リソースにアクセスするための要求のソースに基づいて、要求をフィルタリングするべきであることを示し得る。例えば、ポリシーは、要求を行うアプリケーションの名前またはタイプに基づいて、リソースにアクセスするための要求をフィルタリングするべきであることを示し得る。実施形態において、ポリシーは、リソースに基づいて、要求をフィルタリングするべきであることを示し得る。例えば、ポリシーは、セルラー接続を使用するための任意の要求をフィルタ処理するべきであることを示し得る。他の実施形態において、ポリシーは、要求されたアクセスの結果またはアクセスに含まれるデータに基づいて、要求をフィルタリングするべきであることを示し得る。例えば、ポリシーは、ネットワーク接続にアクセスしてデータをｗｗｗ．ｇｏｏｇｌｅ．ｃｏｍに送るための要求をフィルタリングするべきであることを示し得る。
【００３４】
オブジェクト間のプロセス間制御（ＩＰＣ）経路は、１つ以上のオブジェクト指向ファイアウォールによって制御され得る。いくつかの実施形態において、アプリケーションと関連付けられる１つのオブジェクトあたり１つのオブジェクトファイアウォールがあり得る。オブジェクトファイアウォールは、例えば、あるオブジェクトから、システムリソースへのアクセスを提供する受け取りオブジェクトへのプロセス間通信を制御することによって、ポリシーを実現し得る。実施形態において、アプリケーションからのリソースへのアクセスを制御することは、ポリシーに基づき得、また、リソースへのアクセスを提供する１つ以上のオブジェクトへのアクセスをフィルタリングすることを含み得、ここで、該アクセスは、プロセス間制御経路を通す。さらに、実施形態において、該フィルタリングは、該リソースへのアクセスを提供する１つ以上のオブジェクトへのプロセス間通信を管理するポリシーに基づき得る。オブジェクトファイアウォールは、ポリシーエンジンからポリシーを取得し得る。ポリシーは、例えば、ポリシーエンジンによって、特定のオブジェクトファイアウォールに関する１つ以上の特定の設定に翻訳され得る。新しいオブジェクトが作成されるにつれて、ＩＰＣコントローラは、必要に応じて新しいオブジェクトファイアウォールをインストールし得る。オブジェクトファイアウォールは、１つ以上の方法でリソースの要求に応じ得るが、該方法は、オブジェクトファイアウォールがリソースの要求をブロックし得ること、オブジェクトファイアウォールがリソースの要求を許容し得ること、オブジェクトファイアウォールが要求のコンテンツを修正し得ること、オブジェクトファイアウォールがリソースから送られるデータの戻り値を修正し得ること、オブジェクトファイアウォールが要求されるリソースを変更し得ること、オブジェクトファイアウォールが要求をロギングし得ること、オブジェクトファイアウォールが要求を無視し得ること、オブジェクトファイアウォールが１つ以上のファイアウォール規則を変更し得ること、またはオブジェクトファイアウォールがオブジェクトファイアウォール規則を加える、もしくは除去し得ること、を含み得るが、それらに限定されない。実施形態において、オブジェクトファイアウォールは、リソースアクセス試行を記録し得る。オブジェクトファイアウォールは、集中型レジストリに記憶され得る。同様に、デバイスおよびシステムリソースへのアクセスを提供するオブジェクトも、集中型レジストリに記憶され得る。
【００３５】
セキュリティ上の目的で、単一のプロセスがデバイスセキュリティシステムと関連付けられ得る。いくつかの実施形態において、このプロセスは、オブジェクトファイアウォールを制御し、構成することを可能にし得る。
【００３６】
実施形態において、セキュアなコンピューティングデバイスは、コンピューティングデバイス上で実行するアプリケーションと、コンピューティングデバイス上で計算する別のアプリケーションとの間のデータの出所に関連するポリスを強化するために、デバイスに基づくコンテキスト認識ポリシーエンジンを含み得る。いくつかの実施形態において、コンピューティングデバイスは、ラップトップ、携帯電話、またはタブレット等の、ポータブルコンピューティングデバイスであり得る。いくつかの実施形態において、アプリケーションの１つは、Ａｎｇｒｙ  Ｂｉｒｄｓ、Ｓｍａｓｈ  Ｃｏｐｓ、Ｗｏｒｄｓ  ｗｉｔｈ  Ｆｒｉｅｎｄｓ、または他の何らかのゲーム等の、ゲームであり得る。いくつかの実施形態において、アプリケーションの１つは、電話アプリケーション、Ｓｋｙｐｅ、ウェブブラウザ、音楽プレーヤー、または他の何らかのユーティリティ等の、ユーティリティであり得る。いくつかの実施形態において、アプリケーションの１つは、Ｔｗｉｔｔｅｒ、ＥＳＰＮ  ＳｃｏｒｅＣｅｎｔｅｒ、Ｇｏｏｇｌｅ  Ｔｒａｎｓｌａｔｅ、または他の何らかのツール等の、ツールであり得る。一実施形態において、第２のアプリケーションは、オペレーティングシステムであり得る。
【００３７】
実施形態において、オーサリングツールは、ユーザによって１つ以上ポリシーをオーサリングするために提供され得る。オーサリングツールは、ブラウザに基づくインターフェースを有し得る。オーサリングツールは、ＧＵＩを有することができる。オーサリングツールは、デバイス上にインストールされ得、また、デバイス上のオブジェクトファイアウォールを制御および／または構築するために使用され得る。実施形態において、オーサリングツールは、リモートシステム上にインストールされ得る。オーサリングされるポリシーは、あるフォーマット（例えば、データベースに記憶される１組のオブジェクトおよび方法）で記憶され、デバイス（例えば、ＸＭＬ）に伝送するための第２のフォーマットに翻訳され、そして、１つ以上のオブジェクトファイアウォールをどのように構成するのかを決定するために、受け取りデバイスによってパースされ得る。
【００３８】
ポリシーエンジンは、システム固有のコンテキストを生成し得、該コンテキストは、現在の日付および時間、コンピューティングデバイスの場所、デバイスのユーザの識別情報、どのアプリケーションがコンピューティングデバイス上で実行しているか、どのアプリケーションがどのデバイスリソースを消費しているか、ならびにシステムが存在するコンテキストに関連する他のデータ、のうちの１つ以上を含み得る。いくつかの実施形態において、ポリシーエンジンは、ポリシーサーバに接続され得、該ポリシーサーバは、１つ以上のポリシーをポリシーエンジンにプッシュし得る。
【００３９】
実施形態において、ポリシーエンジンは、リソースへのアクセスを制御し得る。例えば、アプリケーション間のデータの出所に関連するポリシーを強化することは、ポリシーエンジンによって、第１のアプリケーションから第２のアプリケーションへのコールを評価することを含み得る。ポリシーエンジンは、１つ以上のポリシー、ならびにシステムコンテキスト、アプリケーションコンテキスト、およびコールのコンテキストのうちの１つ以上に基づいて、コールを評価し得る。ポリシーとしては、例えば、システムポリシー、アプリケーションポリシー、および他のポリシーが挙げられ得る。ポリシーエンジンは、データのソースが信頼できるソース、許可されたソース等であるかどうか、および／またはデータの性質が第２のアプリケーションによってリレーまたは使用されることを許可されたタイプのものであるかどうか、等が挙げられるが、それらに限定されない、コールを評価するために、１つ以上のポリシーを使用し得る。いくつかの実施形態において、ポリシーエンジンはまた、コールの評価に基づいて、コールを経由して転送される任意のデータが許可されるかどうかも判定し得る。
【００４０】
例えば、セキュアな連絡先リストを転送するための、あるアプリケーションからウェブブラウザへのコールは、モバイル電話上のポリシーエンジンによって評価され得る。ポリシーエンジンは、連絡先リストからの任意のデータの伝送を禁止するポリシーを含み得る。コールを評価すると、ポリシーエンジンは、コールを拒否し、失敗を第１のアプリケーションに報告し得る。
【００４１】
実施形態において、コンピューティングデバイスをセキュアにする方法は、コンピューティングデバイス上で実行する第１のアプリケーションと、コンピューティングデバイス上で実行する第２のアプリケーションとの間のデータの出所に関連するポリシーを強化するために、デバイスに基づくコンテキスト認識ポリシーエンジンを提供することと、デバイスに基づくコンテキスト認識ポリシーエンジンによって、第１のアプリケーションから第２のアプリケーションへのデータ転送をレビューすること、およびポリシーに基づいたデバイスに基づくコンテキスト認識ポリシーエンジンによって、データ転送が許可されたかどうかを判定することと、を含み得る。いくつかの実施形態において、コンピューティングデバイスは、ラップトップ、携帯電話、またはタブレット等の、ポータブルコンピューティングデバイスであり得る。いくつかの実施形態において、アプリケーションの１つは、Ａｎｇｒｙ  Ｂｉｒｄｓ、Ｓｍａｓｈ  Ｃｏｐｓ、Ｗｏｒｄｓ  ｗｉｔｈ  Ｆｒｉｅｎｄｓ、または他の何らかのゲーム等の、ゲームであり得る。いくつかの実施形態において、アプリケーションの１つは、電話アプリケーション、Ｓｋｙｐｅ、ウェブブラウザ、音楽プレーヤー、または他の何らかのユーティリティ等の、ユーティリティであり得る。いくつかの実施形態において、アプリケーションの１つは、Ｔｗｉｔｔｅｒ、ＥＳＰＮ  ＳｃｏｒｅＣｅｎｔｅｒ、Ｇｏｏｇｌｅ  Ｔｒａｎｓｌａｔｅ、または他の何らかのツール等の、ツールであり得る。一実施形態において、第２のアプリケーションは、オペレーティングシステムであり得る。
【００４２】
デバイスに基づくコンテキスト認識ポリシーエンジンは、デバイスのコンテキストおよび状態を識別することを可能にし得、また、システム固有のコンテキストを生成し得る。システム固有のコンテキストは、現在の日付および時間、コンピューティングデバイスの場所、デバイスのユーザの識別情報、デバイス上で現在実行しているアプリケーション、ならびに他のコンテキスト関連のデータ、のうちの１つ以上を含み得る。いくつかの実施形態において、ポリシーエンジンは、ポリシーサーバに接続され得、該ポリシーサーバは、１つ以上のポリシーをポリシーエンジンにプッシュし得る。
【００４３】
アプリケーション間のデータ出所ポリシーを強化することは、ポリシーエンジンによって、第１のアプリケーションから第２のアプリケーションへのコールを評価することを含み得る。ポリシーエンジンは、１つ以上のポリシー、ならびにシステムコンテキスト、アプリケーションコンテキスト、およびコールのコンテキストのうちの１つ以上に基づいて、コールを評価し得る。ポリシーとしては、例えば、システムポリシー、アプリケーションポリシー、および他のポリシーが挙げられ得る。ポリシーエンジンは、コールを評価するために、１つ以上のポリシーを使用し得る。いくつかの実施形態において、ポリシーエンジンはまた、コールの評価に基づいて、コールを経由して転送される任意のデータが許可されるかどうかも判定し得る。
【００４４】
デバイスに基づくコンテキスト認識ポリシーエンジンによって、データ転送をレビューすることは、受け取ったリモートプロシージャコールに固有のコンテキストを生成することを含み得る。いくつかの実施形態において、コンテキストは、第１のアプリケーションの識別情報を含み得る。
【００４５】
データ転送が許可されるかどうかを判定することは、１つ以上の利用可能なポリシーに従ってデータ転送要求を評価することを含み得る。判定は、ポリシーに対するコンテキストとの比較に基づき得る。そのようなポリシーとしては、例えば、システムポリシー、アプリケーションポリシー、システムコンテキスト関連のポリシー、アプリケーションコンテキスト関連のポリシー、要求されたデータ転送のコンテンツに関するポリシー、または他の何らかのポリシーが挙げられ得る。
【００４６】
実施形態において、モバイルネットワークにおける分散ポリシーを強化する方法は、２つのシステムおよび／またはサブシステム間の通信を管理する規則を強化するために、プロセス間通信ファイアウォールをデバイス上に提供することと、プロセス間通信ファイアウォールと関連付けられるポリシーエンジンによって、システムコンテキストを生成することと、プロセス間通信ファイアウォールによって、通信が許可されたかどうかを判定することと、を含み得る。いくつかの実施形態において、通信がプロセス間通信ファイアウォールによって許可されたかどうかの判定は、ポリシー、システムコンテキスト、および／または通信のコンテンツ、のうちの１つ以上に基づき得る。
【００４７】
いくつかの実施形態において、分散ポリシーとしては、ブラック／ホワイトリスト、署名および／または命名ポリシー、チェックサム／ライブラリ解析ポリシー、アプリケーション、プロセス、ユーザ、および一群のユーザのうちの１つ以上に対する許可、ならびに他のポリシー等の、１つ以上のポリシーが挙げられ得る。いくつかの実施形態において、ポリシーは、モバイルネットワークに接続されるポリシーサーバに記憶され得る。ポリシーはまた、デバイス上のポリシーエンジンにも記憶され得る。ブラックリストは、１つ以上の禁止されたアクションを識別し得る。例えば、アプリケーションブラックリストは、デバイス上で実行することが禁止された、アプリケーションのアプリケーションＩＤのリストを含み得る。ホワイトリストは、１つ以上の許可されたアクションを識別し得る。例えば、アプリケーションホワイトリストは、デバイス上で実行することが許可された、アプリケーションのアプリケーションＩＤのリストを含み得る。
【００４８】
プロセス間通信ファイアウォールは、アプリケーションの中の１つ以上のオブジェクトに関連するオブジェクト指向ファイアウォールであり得る。いくつかの実施形態において、プロセス間通信ファイアウォールは、プロセス間通信ファイアウォールに関連するオブジェクトと、第２のオブジェクトとの間の通信を制御するために、ＩＰＣコントローラと通信し得る。第２のオブジェクトは、第２のアプリケーションに関連し得る。
【００４９】
いくつかの実施形態において、ポリシーエンジンによってシステムコンテキストを生成することは、現在の日付および時間、デバイスの場所、デバイスのユーザの識別情報、または他の何らかのコンテキストを含み得る。
【００５０】
実施形態において、セキュアなコンピューティングシステムは、プロセス間通信（ＩＰＣ）を使用してプロセスをフィルタリングすることによって、システムのプロセスをセキュアにするように適合される、オペレーティングシステムを含み得る。コンピューティングシステムは、携帯電話、ＭＰ３プレーヤー、タブレット、およびラップトップ等の、モバイルデバイスであり得る。いくつかの実施形態において、デバイスは、ｉＰｈｏｎｅ、Ｍｏｔｏｒｏｌａ  Ｄｒｏｉｄ  Ｒａｚｒ  Ｍａｘｘ、ＨＴＣ  Ｏｎｅ  Ｘ、Ｓａｍｓｕｎｇ  Ｆｏｃｕｓ  ２、Ｓａｍｓｕｎｇ  Ｇｕｓｔｏ  ２、または他の何らかの携帯電話等の、携帯電話であり得る。他の実施形態において、デバイスは、ｉＰａｄ、Ａｓｕｓ  Ｅｅｅ  Ｐａｄ  Ｔｒａｎｓｆｏｒｍｅｒ  Ｐｒｉｍｅ、Ｓｏｎｙ  Ｔａｂｌｅｔ  Ｓ、Ｓａｍｓｕｎｇ  Ｇａｌａｘｙ  Ｔａｂ  １０．１、またはいくつかの他のタブレット等のタブレットであり得る。オペレーティングシステムの例としては、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  ＯＳ、ｉＯＳ、Ｓｙｍｂｉａｎ  ＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、およびＣｈｒｏｍｅ  ＯＳが挙げられるが、それらに限定されない。
【００５１】
ＩＰＣを使用したプロセスのフィルタリングが実現され得る方法は、特定のオペレーティングシステムに依存し得る。いくつかの実施形態において、オペレーティングシステムは、例えばｉＯＳで、プロセス間通信の代わりに、ユニバーサルリソース識別子（ＵＲＩ）を使用し得る。
【００５２】
実施形態において、セキュアなコンピューティングシステムは、プロセス間通信（ＩＰＣ）を使用してプロセスに命令し、それを制御することによって、コンピューティングシステムのプロセスをセキュアにするように適合されるオペレーティングシステムを含み得る。コンピューティングシステムは、携帯電話、ＭＰ３プレーヤー、タブレット、およびラップトップ等の、モバイルデバイスであり得る。オペレーティングシステムの例としては、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  ＯＳ、ｉＯＳ、Ｓｙｍｂｉａｎ  ＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、およびＣｈｒｏｍｅ  ＯＳが挙げられるが、それらに限定されない。ＩＰＣを使用したプロセスのフィルタリングが実現され得る方法は、特定のオペレーティングシステムに依存し得る。いくつかの実施形態において、オペレーティングシステムは、例えばｉＯＳで、プロセス間通信の代わりに、ＵＲＩを使用し得る。
【００５３】
ＩＰＣを使用することで、コンピューティングシステムの関数をセキュアに制御するために、コマンドおよび制御プロセスが使用され得る。例えば、ＩＰＣは、ウェブ閲覧、通話、テキストメッセージング、および他のコンピューティングシステム機能を命令し、制御するために使用され得る。他の実施形態において、ＩＰＣを使用することで、プロセス間通信をフィルタリングするために、コマンドおよび制御プロセスが使用され得る。例えば、プロセス間通信は、特定のクラスのアプリケーションがプライベートデータを送ることを防止するために、規則またはポリシーに従ってフィルタリングされ得る。別の実施例において、プロセス間通信は、特定のクラスのアプリケーションが定義されたネットワークの外側の任意のコンピュータに接続することを防止するために、規則またはポリシーに従ってフィルタリングされ得る。
【００５４】
実施形態において、脱獄モバイルデバイス上での特権的コードの実行に関するセキュリティおよびアクセス制御ポリシーを強化するための方法は、アプリケーションによって特権的コードを実行するようにコールすることと、特権的コードポリシーエンジンによって、アプリケーションが特権的コードを実行し得るかどうかを判定することと、特権的コードポリシーエンジンによる判定を強化することと、を含み得る。モバイルデバイスは、例えば、携帯電話、ＭＰ３プレーヤー、タブレット、およびラップトップであり得る。オペレーティングシステムの例としては、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  ＯＳ、ｉＯＳ、Ｓｙｍｂｉａｎ  ＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、およびＣｈｒｏｍｅ  ＯＳが挙げられるが、それらに限定されない。ＩＰＣを使用したプロセスのフィルタリングが実現され得る方法は、特定のオペレーティングシステムに依存し得る。いくつかの実施形態において、オペレーティングシステムは、例えばｉＯＳで、プロセス間通信の代わりに、ＵＲＩを使用し得る。
【００５５】
脱獄モバイルデバイスは、デバイスのユーザがｃｈｒｏｏｔのような制限の外でファイルにアクセスすることができ得るように、デバイス上のオペレーティングシステムを抜け出す、または迂回するデバイスであり得る。例えば、ユーザは、ｉＰｈｏｎｅから脱獄して、Ｃｙｄｉａ、すなわち、ＡｐｐｌｅのＡｐｐ  Ｓｔｏｒｅの代替となるサードパーティのアプリケーションマーケットプレイスをインストールし得るが、ユーザは、そうしなければ、脱獄していないｉＰｈｏｎｅにインストールすることができない。
【００５６】
特権的コードは、特権的コードサービスによって許可が付与された時点でアクセスされ得るだけのコードであり得る。例えば、特権的コードは、カーネルコードであり得る。特権は、例えば、スーパーバイザまたは管理者モードでコードにアクセスし、動作させるためのものであり得る。
【００５７】
いくつかの実施形態において、アプリケーションは、Ａｎｇｒｙ  Ｂｉｒｄｓ、Ｓｍａｓｈ  Ｃｏｐｓ、Ｗｏｒｄｓ  ｗｉｔｈ  Ｆｒｉｅｎｄｓ、または他の何らかのゲーム等の、ゲームであり得る。いくつかの実施形態において、アプリケーションは、電話アプリケーション、Ｓｋｙｐｅ、ウェブブラウザ、音楽プレーヤー、または他の何らかのユーティリティ等の、ユーティリティであり得る。いくつかの実施形態において、アプリケーションは、Ｔｗｉｔｔｅｒ、ＥＳＰＮ  ＳｃｏｒｅＣｅｎｔｅｒ、Ｇｏｏｇｌｅ  Ｔｒａｎｓｌａｔｅ、または他の何らかのツール等の、ツールであり得る。
【００５８】
いくつかの実施形態において、ポリシーエンジンは、アプリケーションによって、特権的コードを実行するためにコールが実行され得るかどうかを判定する。判定は、コールを行うアプリケーションのタイプ、コールを行うアプリケーションの名前、コールを行うアプリケーションの場所、システムコンテキスト、デバイスの場所、現在の日付、現在の時間、デバイスのユーザの識別情報、特権的コードのタイプ、コールのコンテンツ、または他の何らかの基準、のうちの１つ以上に基づき得る。
【００５９】
ポリシーエンジンの判定を強化することは、ポリシーに対する判定を比較することを含み得る。ポリシーエンジンは、１つ以上のポリシーに基づいて判定を強化し得る。ポリシーとしては、例えば、システムポリシー、アプリケーションポリシー、および他のポリシーが挙げられ得る。ポリシーエンジンは、コールを評価するために、１つ以上のポリシーを使用し得る。いくつかの実施形態において、ポリシーエンジンはまた、コールの評価に基づいて、コールを経由して転送される任意のデータが許可されるかどうかも判定し得る。
【００６０】
実施形態において、モバイルデバイス上での特権的コードの実行に関するセキュリティおよびアクセス制御ポリシーを強化するための方法は、システムコントローラに対するアプリケーションによって特権的コードを実行するようにコールすることと、プロセス間通信コントローラに対するシステムコントローラによって、特権的コードにアクセスする許可を要求することと、特権的コードポリシーエンジンに対するシステムコントローラによって、アプリケーションが特権的コードにアクセスすることを許可されるかどうかの判定を要求することと、特権的コードポリシーエンジンによって、アプリケーションが特権的コードを実行し得るかどうかを判定することと、システムコントローラによって、特権的コードポリシーエンジンによる判定を強化することと、を含み得る。モバイルデバイスは、例えば、携帯電話、ＭＰ３プレーヤー、タブレット、およびラップトップであり得る。オペレーティングシステムの例としては、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  ＯＳ、ｉＯＳ、Ｓｙｍｂｉａｎ  ＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、およびＣｈｒｏｍｅ  ＯＳが挙げられるが、それらに限定されない。ＩＰＣを使用したプロセスのフィルタリングが実現され得る方法は、特定のオペレーティングシステムに依存し得る。いくつかの実施形態において、オペレーティングシステムは、例えばｉＯＳで、プロセス間通信の代わりに、ＵＲＩを使用し得る。
【００６１】
脱獄モバイルデバイスは、デバイスのユーザがｃｈｒｏｏｔのような制限の外でファイルにアクセスすることができ得るように、デバイス上のオペレーティングシステムを抜け出す、または迂回するデバイスであり得る。例えば、ユーザは、ｉＰｈｏｎｅから脱獄して、Ｃｙｄｉａ、すなわち、ＡｐｐｌｅのＡｐｐ  Ｓｔｏｒｅの代替となるサードパーティのアプリケーションマーケットプレイスをインストールし得る。
【００６２】
特権的コードは、特権的コードサービスによって許可が付与された時点でアクセスされ得るだけのコードであり得る。例えば、特権的コードは、カーネルコードであり得る。特権は、例えば、スーパーバイザまたは管理者モードでコードにアクセスし、動作させるためのものであり得る。
【００６３】
いくつかの実施形態において、アプリケーションは、Ａｎｇｒｙ  Ｂｉｒｄｓ、Ｓｍａｓｈ  Ｃｏｐｓ、Ｗｏｒｄｓ  ｗｉｔｈ  Ｆｒｉｅｎｄｓ、または他の何らかのゲーム等の、ゲームであり得る。いくつかの実施形態において、アプリケーションは、電話アプリケーション、Ｓｋｙｐｅ、ウェブブラウザ、音楽プレーヤー、または他の何らかのユーティリティ等の、ユーティリティであり得る。いくつかの実施形態において、アプリケーションは、Ｔｗｉｔｔｅｒ、ＥＳＰＮ  ＳｃｏｒｅＣｅｎｔｅｒ、Ｇｏｏｇｌｅ  Ｔｒａｎｓｌａｔｅ、または他の何らかのツール等の、ツールであり得る。
【００６４】
システムコントローラは、アプリケーションからの特権的コードを実行するためのコールに応答して、特権的コードにアクセスする許可を要求し得る。従来技術において、システムコントローラは、アプリケーションからのコールに応じて、特権的コードを実行する。しかしながら、ここでは、システムコントローラは、プロセス間通信コントローラからのそのような特権的コードにアクセスする許可を要求し得る。プロセス間通信コントローラは、システムコントローラからの要求に応じて、要求をポリシーエンジンに渡し得る。
【００６５】
いくつかの実施形態において、ポリシーエンジンは、アプリケーションによって、特権的コードを実行するためにコールが実行され得るかどうかを判定する。いくつかの実施形態において、ポリシーエンジンは、特権的コードポリシーエンジンであり得る。判定は、コールを行うアプリケーションのタイプ、コールを行うアプリケーションの名前、コールを行うアプリケーションの場所、システムコンテキスト、デバイスの場所、現在の日付、現在の時間、デバイスのユーザの識別情報、特権的コードのタイプ、コールのコンテンツ、または他の何らかの基準、のうちの１つ以上に基づき得る。
【００６６】
ポリシーエンジンの判定を強化することは、ポリシーに対する判定を比較することを含み得る。ポリシーエンジンは、１つ以上のポリシーに基づいて判定を強化し得る。ポリシーとしては、例えば、システムポリシー、アプリケーションポリシー、および他のポリシーが挙げられ得る。ポリシーエンジンは、コールを評価するために、１つ以上のポリシーを使用し得る。いくつかの実施形態において、ポリシーエンジンはまた、コールの評価に基づいて、コールを経由して転送される任意のデータが許可されるかどうかも判定し得る。
【００６７】
実施形態において、モバイル通信デバイスのマルウェアから保護するための方法は、第１のアプリケーションからデータバスにリモートプロシージャコールを渡すことと、データバスからポリシーエンジンへのリモートプロシージャコールのポリシー検証を要求することと、ポリシーエンジンによって、リモートプロシージャコールのコンテキストおよび記憶されたポリシーに基づいて、リモートプロシージャコールを承認するかどうかを判定することと、判定を、ポリシーエンジンからデータバスに返信することと、判定に基づいて、データバスによって、リモートプロシージャコールの許可またブロックのいずれかを行うことと、を含み得る。データバスは、プロセス間通信バスであり得る。従来技術は、ファイルレベルで署名を渡すことを含む場合があった。しかしながら、本開示の態様は、プロシージャコールを渡すことが、ファイルレベルではなく、プロセス間でプロセス署名を渡すことを含み得るというものである。
【００６８】
実施形態において、ネイティブコードのローディング、リンキング、および実行に関する分散ポリシーを強化するために、ポリシーエンジンを使用するための方法は、モバイルデバイス上の仮想マシンの内部で動作するアプリケーションを提供することと、モバイルデバイス上で動作するポリシーエンジンを提供することと、ポリシーエンジンからの入力に応じて、かつポリシー因子に基づいて、仮想マシンのネイティブライブラリにコードをロードし、リンクし、そして実行するための規則を適合させることと、を含み得る。
【００６９】
いくつかの実施形態において、アプリケーションは、仮想マシン内部で動作し得る。仮想マシンの例としては、Ｊａｖａ（登録商標）仮想マシン、Ｐｅｒｌ仮想マシン、Ｏｒａｃｌｅ仮想マシン、Ｐａｒａｌｌｅｌｓ仮想マシン、Ｓｕｎ  ｘＶＭ、およびＶＭｗａｒｅ仮想マシンが挙げられるが、それらに限定されない。
【００７０】
いくつかの実施形態において、セキュリティポリシーを既存のＡＰＩに適用することを可能にするための方法は、アスペクト指向プログラミングを通すものであり得、また、ＡＰＩの内部論理を修正することなく既存のＡＰＩに適用され得る。既存のＡＰＩは、アスペクト指向プログラム方法および手法を使用して、１つ以上のセキュリティの層で覆われ得る。
【００７１】
実施形態において、モバイルデバイスをセキュアにするための方法は、アスペクト指向セキュリティをモバイルデバイス上の複数のプロセスに適用するために必要なポリシーまたは他のデータを配布するために、プロセス間通信を使用することを含み得る。セキュリティ関連のデータは、プロセス間通信機構、例えばＩＰＣコントローラ、Ａｎｄｒｏｉｄ  Ｂｉｎｄｅｒ、またはＵｎｉｘ（登録商標）ドメインソケットを介して、１つ以上のターゲットプロセスに配布され得る。そのようなセキュリティ関連のデータが配布されると、ターゲットプロセスの方法、機能、およびサービスの起動に関連するセキュリティを遮断および管理するために、アスペクト指向セキュリティ手法が適用される。
【００７２】
いくつかの実施形態において、デバイスをセキュアにするための方法は、ポリシーがどのようにデバイスに適用されるのかを変更し、結果として、アスペクト指向セキュリティ手法がどのように１つ以上のプロセスにわたって適用されるのかを変更するために、コンテキスト情報を使用することを含み得る。そのようなコンテキスト情報としては、地理的なもの、加速度計、カメラ、マイクロフォン、無線ネットワーク、アプリケーションの使用、ユーザ対話、動作中のプロセス、ディスクの状態、近隣の無線信号／ネットワーク、外部デバイスとのペアリング状態、訪れているウェブサイト、デバイスネットワークトラフィック、バッテリレベル、デバイス上に存在するデータのタイプ、他のデバイスハードウェアまたはソフトウェア検出可能なコンテキスト情報が挙げられ得る。デバイスコンテキストは、地理的場所等の現実的なもの、デバイス上に存在するデータ、現在実行しているアプリケーション、ネットワークもしくはディスクとのデータの入力／出力等の仮想的なもののいずれか、またはそれら２つの任意の組み合わせであり得る。例えば、セキュリティポリシーは、特定の無線ネットワークへの接続、１つ以上のアプリケーションの起動、または特定のデータセットのダウンロードによって起動され得る。
【００７３】
いくつかの実施形態において、デバイスをセキュアにするための方法は、デバイス上で機能しているどのプロセスが、何らかの形態のアスペクト指向セキュリティによってカバーされているのかを追跡すること、および／またはアスペクト指向セキュリティのプログラミングの候補であるプロセスを判定することを含み得る。この追跡は、集中され得るか、分散され得るか、またはこれら２つのハイブリッド組み合わせであり得る。
【００７４】
実施形態において、デバイスをセキュアにする方法は、デバイスに記憶され得るアスペクト関連のデータを記憶することを含み得る。いくつかの実施形態において、データは、デバイスをオンに戻したときにプロセスに再配布され得る。不揮発性記憶システムは、必要とされるポリシーおよび／またはアスペクト指向プログラムの情報を取り込み得る。デバイスの電源をオンにしたときには、セキュリティポリシーを強化するために、ポリシーおよび／またはアスペクト指向プログラミングデータをプロセスに入力／出力するために、分散または集中型機構のいずれかが使用され得る。
【００７５】
実施形態において、デバイスをセキュアにするための方法は、デバイスを所望の状態にするために、連結され得る非アスペクト指向プログラミング論理をアスペクト指向プログラミングと組み合わせることを含み得る。いくつかの実施形態において、デバイスをセキュアにすることは、特定のデバイス機能をセキュアにすることを含み得る。例えば、非アスペクト指向プログラミング論理は、どのアプリケーションが無線ネットワークアクセスをオンまたはオフにし得るのかを制限するためにアスペクト指向プログラミング手法を使用する前に、無線ネットワークアクセスをオフにし得る。別の例において、非アスペクト指向プログラミング論理は、マルウェアの再起動を防止するためにアスペクト指向プログラミング手法が使用される前に、マルウェアアプリケーションを自動的にシャットダウンすることができる。
【００７６】
実施形態において、デバイスをセキュアにするための方法は、別のアプリケーションまたはサービスのための通常のゾーンのアプリケーションからのＩＰＣバスを通じた要求が、信頼できるバージョンの要求されたアプリケーションまたはサービスに自動的にリダイレクトされ得るように、ＩＰＣ機構を適合させることを含み得る。
【００７７】
実施形態において、コンテキスト検出エンジンをサーバに提供することによって、デバイス上のなりすましが不可能なコンテキストを認証するための方法であって、該コンテキスト検出エンジンは、デバイス上のコンテキストを検証し、その検証に応じて、セキュアデータへのアクセスを提供する。実施形態において、サーバは、ネットワークへのゲートウェイサーバであり得る。
【００７８】
実施形態において、ポリシーを構成するための方法は、任意の一貫しない規則を調和させることによってポリシーエンジンのための単一のコヒーレントなポリシーを提供するために、１つ以上のソースから複数のポリシーを組み合わせることを含み得る。ポリシーは、セキュリティポリシーであり得る。複数のポリシーは、例えば、電話ポリシー、ＩＴ管理者ポリシー、携帯電話事業者ポリシー、企業ポリシー、部門ポリシー、または他の何らかのポリシーから成り得る。ポリシーのソースとしては、例えば、携帯電話事業者、政府、デバイスプロバイダ、デバイスサポートプロバイダ、デバイスのユーザ、デバイスをユーザに供給する企業、または他の何らかのポリシープロバイダが挙げられ得る。一貫しない規則を調和させることは、２つ以上の規則を比較することと、最も制限的な規則を選択することと、を含み得る。一貫しない規則を調和させることは、いくつかの実施形態において、２つ以上の規則を比較することと、最も制限的でない規則を選択することと、を含み得る。一貫しない規則を調和させることは、いくつかの実施形態において、２つ以上の規則を比較することと、他のいくつかの組の規則に基づいて、例えばどんなリソース（複数可）に一貫しない規則を適用するかに基づいて、規則の１つを選択することと、を含み得る。
【００７９】
デバイスをセキュアにするための方法およびシステムは、図１で描写される。図１で描写される方法およびシステムは、モバイルデバイスシステム１０２を含み得る。システム１０２は、ｉＰｈｏｎｅ、Ｍｏｔｏｒｏｌａ  Ｄｒｏｉｄ  Ｒａｚｒ  Ｍａｘｘ、ＨＴＣ  Ｏｎｅ  Ｘ、Ｓａｍｓｕｎｇ  Ｆｏｃｕｓ  ２、Ｓａｍｓｕｎｇ  Ｇｕｓｔｏ  ２、または他の何らかの携帯電話等の、携帯電話であり得る。他の実施形態において、システム１０２は、ｉＰａｄ、Ａｓｕｓ  Ｅｅｅ  Ｐａｄ  Ｔｒａｎｓｆｏｒｍｅｒ  Ｐｒｉｍｅ、Ｓｏｎｙ  Ｔａｂｌｅｔ  Ｓ、Ｓａｍｓｕｎｇ  Ｇａｌａｘｙ  Ｔａｂ  １０．１、または他の何らかのタブレット等のタブレットであり得る。システム１０２は、１つ以上のアプリケーション１１０、１つ以上の仮想マシン１１２、１つ以上のネイティブライブラリ１１４、オペレーティングシステム１１６、ポリシーエンジン１１８、１つ以上のオブジェクトファイアウォール１４４、および１つ以上のＩＰＣコントローラ１３８等の、システム１０２上で実行するソフトウェアを含み得る。
【００８０】
１つ以上のアプリケーション１１０は、システム１０２上でローカルに実行し得る。いくつかの実施形態において、アプリケーション１１０は、Ａｎｇｒｙ  Ｂｉｒｄｓ、Ｓｍａｓｈ  Ｃｏｐｓ、Ｗｏｒｄｓ  ｗｉｔｈ  Ｆｒｉｅｎｄｓ、または他の何らかのゲーム等の、ゲームであり得る。いくつかの実施形態において、アプリケーションは、電話アプリケーション、Ｓｋｙｐｅ、ウェブブラウザ、音楽プレーヤー、または他の何らかのユーティリティ等の、ユーティリティであり得る。いくつかの実施形態において、アプリケーションは、Ｔｗｉｔｔｅｒ、ＥＳＰＮ  ＳｃｏｒｅＣｅｎｔｅｒ、Ｇｏｏｇｌｅ  Ｔｒａｎｓｌａｔｅ、または他の何らかのツール等の、ツールであり得る。アプリケーション１１０は、正当なマーケットプレイス、例えばｉＴｕｎｅｓからシステムにダウンロードされ得る。しかしながら、一部の場合において、アプリケーション１１０は、マルウェアシステム１０８から取得され得る。いくつかの他の事例において、アプリケーション１１０は、正当なマーケットプレイスを介して、マルウェアシステム１０８から利用できるようにされ得る。実施形態において、アプリケーションは、特権的コード（例えば、特権的コードサービス１４０によって許可が付与された時点でアクセスされ得るだけのコード）、信頼できるコードゾーン１４６のコード、またはオブジェクトファイアウォール１４４によって保護されるコード、のうちの１つを実行しようとし得る。
【００８１】
実施形態において、１つ以上のアプリケーション１１０は、１つ以上の仮想マシン１１２で実行し得る。仮想マシンの例としては、Ｊａｖａ（登録商標）仮想マシン、Ｐｅｒｌ仮想マシン、Ｏｒａｃｌｅ仮想マシン、Ｐａｒａｌｌｅｌｓ仮想マシン、Ｓｕｎ  ｘＶＭ、およびＶＭｗａｒｅ仮想マシンが挙げられるが、それらに限定されない。コードをネイティブライブラリ１１４にロードし、リンクし、そして実行するために、アプリケーション１１０は、ライブラリ要求をそれぞれの仮想マシン１１２に送り得る。仮想マシン１１２は、要求が許可されたかどうかを判定するために、ポリシーエンジン１１８と通信し得る。いくつかの実施形態において、仮想マシン１１２はまた、要求が許可されたかどうかを判定するために、ローカルポリシーも使用し得る。要求が許可された場合、仮想マシン１１２は、アプリケーション１１０がネイティブライブラリ１１４にアクセスするのを容易にし、それは、オペレーティングシステム１１６と対話するのを容易にする。仮想マシン１１２は、ネイティブライブラリ１１４、アプリケーション１１０等に、ライブラリアクセス許可の信号を送り得る。
【００８２】
ネイティブライブラリ１１４は、アプリケーション１１０とオペレーティングシステム１１６との間の対話を容易し得る。システム１０２のオペレーティングシステム１１６は、システム１０２を管理するソフトウェアである。オペレーティングシステムの例としては、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  ＯＳ、ｉＯＳ、Ｓｙｍｂｉａｎ  ＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、およびＣｈｒｏｍｅ  ＯＳが挙げられるが、それらに限定されない。
【００８３】
ポリシーエンジン１１８は、例えば、アプリケーション１１０によるコードのローディング、リンキング、および実行に関する、ならびにリモートプロシージャコールに関するポリシーを強化し得る。ポリシーエンジン１１８はまた、システム固有のコンテキストも生成し得、該コンテキストは、現在の日付および時間、デバイスの場所、ならびにデバイスのユーザの識別情報を含み得る。いくつかの実施形態において、ポリシーエンジン１１８は、仮想マシン１１２の内部で実行するアプリケーション１１０によるネイティブコードのローディング、リンキング、および実行に関する分散ポリシーを強化し得る。実施形態において、ポリシーエンジン１１８は、第２のプロセスに存在し得、動的に送信され得、また、１つ以上のネイティブライブラリ１１４にコードをロードし、リンクし、そして実行するための１つ以上の規則を適合させ得る。第１のプロセスと同じシステム１０２上に存在する第２のプロセスにポリシーエンジンを有することは、ポリシーを仮想マシン１１２のプロセスに通信するためのより高速な通信を提供し得、いくつかのポリシー因子に基づいて、ポリシー１３０を動的に変更することを可能にする。ポリシーエンジン１１８が存在し得る第２のプロセスは、ポリシーエンジン１１８を攻撃から隔離し得、第１のプロセスからアクセスできない場合がある外部サービスにアクセスすることを可能にし、また、ポリシーエンジン１１８が、第１のプロセスの実行前にも、実行後にもメモリに存在することを可能にし得る。
【００８４】
リモートプロシージャコールのコンテキストにおいて、ポリシーエンジン１１８は、トランザクションを承認または否認し得、また、この結果をデータバスに返信し得る。このリモートプロシージャコールがシステムサービスに関わる場合、データバスは、オペレーティングシステム１１６に要求を渡し得る。オペレーティングシステム１１６は、リモートプロシージャコールを実行し、データバスを介して、ソースアプリケーション１１０に結果を返し得る。代わりに、このリモートプロシージャコールが別のアプリケーション１１０との対話に関わる場合、データバスは、宛先アプリケーション１１０にコールを渡し得る。そのリモートプロシージャコールの結果は、次いで、データバスを介して、ソースアプリケーション１１０に返され得る。
【００８５】
システム１０２は、クラウドまたは他のネットワーキング１０４を通して、ポリシーサーバ１０６に接続され得る。ポリシーサーバ１０６は、ポリシーリポジトリを管理し得る。ポリシーサーバ１０６は、ポリシーエンジン１１８からの要求に応じて、ポリシーを提供し得る。ポリシーサーバ１０６は、ブラック／ホワイトリスト１２０、署名および／または命名１２２、チェックサム／ライブラリ解析１２４、アプリケーションの許可、プロセス、ユーザ、グループ、ならびに他のポリシーチェック１２８等のポリシーアスペクトを判定するために、ポリシーリポジトリアクセスを行うことによって、そのようなポリシーを提供し得る。ポリシーサーバ１０６は、ポリシーリポジトリ応答を受け取り、ポリシー要求応答をポリシーエンジン１１８に提供し得る。あるいは、ポリシーエンジン１１８は、ポリシーエンジン１１８によって知られている、またはアクセス可能であるポリシー情報に基づいて、ネイティブライブラリ１１４のアプリケーション１１０のアクセスに関する問い合わせを仮想マシン１１２に提供し得る。
【００８６】
アプリケーション１１０は、プロセス間通信が可能である、１つ以上のオブジェクトを含み得る。従来技術において、これらのオブジェクトは、ＩＰＣバス１３２に直接接続された。ここで、オブジェクトは、オブジェクトファイアウォール１４４ならびにＩＰＣコントローラ１３８Ａおよび／またはＢを使用して仲介され得る。ここで、各オブジェクトは、ＩＰＣコントローラ１３８Ａおよび／またはＢに接続され得る、独立したオブジェクトファイアウォール１４４を有し得る。ＩＰＣコントローラ１３８Ａおよび／またはＢは、ＩＰＣバス１３２に接続され得る。ポリシーエンジン１１８は、１つ以上のポリシー１３０を実現するために、オブジェクトファイアウォール１４４ならびにＩＰＣコントローラ１３８Ａおよび１３８Ｂと通信し得る。いくつかの実施形態において、ポリシーエンジン１１８は、高レベルファイアウォール規則を、１つ以上のオブジェクトファイアウォール１４４に関する特定の設定に翻訳し得る。新しいプロセス間通信が可能なオブジェクトが作成されると、各プロセスのＩＰＣコントローラ１３８ＡまたはＢは、必要に応じて、追加的なオブジェクトファイアウォール１４４をインストールし得る。
【００８７】
実施形態において、ＩＰＣコントローラ１３８Ａは、新しいプロセス間通信が可能なオブジェクトが作成されたとき、および破棄されたときに、オブジェクトファイアウォール１４４のインストールおよび除去を管理し得る。このコントローラは、各オブジェクトの作成に関する別のプロセスにおいて、ＩＰＣコントローラ１３８Ｂとの追加的なプロセス間通信を行うことのオーバーヘッドを削減し得、また、性能を向上させ得る。ＩＰＣコントローラ１３８は、あるプロセス間通信が可能なオブジェクトから、第２のプロセス間通信が可能なオブジェクトのオブジェクトファイアウォール１４４に、ＩＰＣコールを送り得る。第２のプロセス間通信が可能なオブジェクトのオブジェクトファイアウォール１４４は、オブジェクトファイアウォール規則として実現されるポリシー１３０に基づいて、コールを許可するかどうかを判定し得る。
【００８８】
ＩＰＣバス１３２は、データバスであり得る。いくつかの実施形態において、ＩＰＣバス１３２は、プロセス間通信を可能にし得る。実施形態において、ＩＰＣバス１３２は、リモートプロシージャコールサービス、プロトコルハンドラシステムコールテーブル、または任意の他の機能もしくはオブジェクトブローカーとしてインスタンス化される共有データバスを介して、プロセス間通信を行い得る。例えば、ＩＰＣバス１３２は、あるアプリケーション１１０のオブジェクトと関連付けられるＩＰＣコントローラ１３８Ａから、第２のアプリケーションのオブジェクトと関連付けられる別のオブジェクトファイアウォール１４４への、リモートプロシージャコールとしてのプロセス間通信を可能にし得る。
【００８９】
実施形態では、信頼できるコードゾーン１４６が、プロセッサのゾーンとしてシステム１０２上に存在し得、また、システム１０２の特殊なデバッギングインターフェースの１つ以上および／またはリモート監査ツール（例えば、Ａｎｄｒｏｉｄ（商標）ＡＤＢ）が、信頼できるコードゾーン１４６に配置され得る。プロセッサの信頼できるゾーンは、暗号信頼チェーンを通して、その中で実行するコードが改竄されていないことを確実にする。実行のために要素が信頼できるプロセッサゾーン内に配置されると、そこで行われる動作からの出力は、改竄がなく、正しく、そして信頼できるものであるとみなされ得る。信頼できるゾーン機能を提供する市販ソフトウェアの例は、ＡＲＭ  ＬｉｍｉｔｅｄによるＴｒｕｓｔＺｏｎｅ（商標）である。
【００９０】
特殊なデバッギングインターフェースおよび／またはツール全体を信頼できるコードゾーン１４６の中へ配置することによって、リモートに提供されるコマンドがシステム１０２上の正しい、信頼できるデバッギングソフトウェアによって処理されているという信頼性を伴って、システム１０２の完全性を監査するために、またはシステム１０２の実行もしくは構成をセキュアに制御するために、リモートコンピュータを使用することができる。あるいは、これらの特殊なデバッギング要素の一部は、信頼できるコードゾーン１４６（例えば、ファイルシステム構成要素およびＵＳＢ  Ｉ／Ｏ構成要素）の中へ配置され得る。
【００９１】
実施形態において、システム１０２のプロセス間通信機構は、信頼できるコードゾーン１４６の中へ配置され得る。そのようなプロセス間通信機構は、システム１０２上のユーザ空間アプリケーション（例えば、オペレーティングシステム内でない）と、サービス（例えば、ユーザ空間で動作するシステムサービスを含む）との間の通信を管理することが意図される。プロセス間通信機構は、例えば、オブジェクトファイアウォール１４４、ＩＰＣコントローラ１３８Ａおよび／もしくはＢ、または他の何らかのプロセス間通信機構であり得る。プロセス間通信機構が信頼できるプロセッサゾーンの中へ配置されると、信頼できるゾーンで実行するソフトウェアが改竄のないものになるので、デバイス上のユーザ空間アプリケーションとサービスとの間の通信の制御が保護されるとみなされ得る。さらに、トラストゾーンによってセキュアにされるプロセス間通信機構は、ユーザ空間アプリケーションとサービスとの間の通信を遮断、検査、ブロック、フィルタリング、または別様には適合させることによって、デバイス上の補足的なセキュリティ制御ポイントとして使用され得る。プロセス間通信機構が信頼できるプロセッサゾーン内にあるので、アプリケーション／サービス間の通信を通じた制御のセキュアポイントとみなされ得る。
【００９２】
システムコントローラ１３４は、アプリケーション１１０からの要求に応じて、システムコール１３６を実行し得る。実施形態において、システムコントローラ１３４は、アプリケーション１１０からの要求に応じて、要求をＩＰＣコントローラ１３８Ａおよび／またはＢに送るように適合され得る。ＩＰＣコントローラ１３８Ａおよび／またはＢを介して、システムコントローラ１３４とＩＰＣサブシステムとの間にセキュリティポリシー検証経路を確立することによって、システムコントローラ１３４は、（例えば、ポリシーエンジン１１８に対するクエリーに基づいて）呼び出し元アプリケーションとは異なる経路を介して、セキュリティ許可を直接検証し得る。したがって、クエリーおよびその結果は、呼び出し元アプリケーションまたは任意の他のアプリケーションのタイプコードによって影響を受ける、または操作される可能性がない。ＩＰＣプロセス自体のセキュリティはさらに、セキュリティ許可クエリーからの独立性を確実にし得る。
【００９３】
実施形態において、特権的コードサービス１４０を実行しようとしているアプリケーション１１０は、システムコントローラ１３４とインターフェースすることによって、そのような特権的コードサービス１４０に実行の試行を行わせようとし得る。単純にコードの実行を許可するのではなく、システムコントローラ１３４は、ＩＰＣコントローラ１３８Ａに要求を送り得、該要求は、ＩＰＣバス１３２を通じて、システムサービスＩＰＣコントローラ１３８Ｂに、特権的コードサービス１４０の実行のためのアクセス制御を管理するシステムサービスを要求し得る。このサービスは、送信元アプリケーションが要求された特権的コードを実行する許可を与えられたかどうかを判定することを容易にするために、特権的コードポリシーエンジン１１８のアクセス決定要求を行い得る。この判定は、コールアプリケーションの識別情報、デバイスのユーザの識別情報、時刻、デバイスの物理的場所、現在のデバイス構成等が挙げられるが、それらに限定されない、様々な因子に基づいて行われ得る。次いで、システムコールポリシー判定の結果の指示が、ＩＰＣバス１３２によってシステムコントローラ１３４に接続されるＩＰＣコントローラ１３８Ａおよび１３８Ｂを介して返され得、該指示は、次いで、判定を強化し得、また、特権的コードサービス１４０の実行を許可または却下し得る。ポリシー判定に関係なく、実行の試行に関する情報、判定を行う際に使用される条件、および結果として生じるアクションは、ユーザおよびデバイス管理者による使用のためにロギングされ得る。
【００９４】
マルウェアシステム１０８は、システム１０２上のセキュリティを危殆化しようとし得る。マルウェアシステム１０８は、クラウドまたは他のネットワーキング１０４を通してシステム１０２に接続し得る。マルウェアシステム１０８は、システム１０２に悪意のあるソフトウェアを通信し得る。悪意のあるソフトウェアは、コンピュータウイルス、ワーム、トロイの木馬、スパイウェア、アドウェア、ルートキット、または他の何らかの悪意のあるプログラムもしくはスクリプトであり得る。悪意のあるソフトウェアは、電子メール、ウェブページ、アプリケーション１１０、テキストメッセージ、ＳＩＭカードを介して、または他の何らかの様式で、システム１０２に通信され得る。
【００９５】
ネットワーキング１０４は、クラウドに基づくネットワーキングを介して通信し得る。一実施形態において、ネットワーキング１０４は、インターネット、イントラネット、パーソナルエリアネットワーク、ＶＰＮ、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、または他の何らかのネットワーク等が挙げられるが、それらに限定されないネットワークを介した、クラウドに基づくネットワーキングを介して通信し得る。
【００９６】
本発明の利点の１つとしては、コールアプリケーションが、アクセス制御に関するこれらの決定を行う役割を果たすセキュリティポリシーインフラストラクチャを意識する必要がないという事実が挙げられるが、それに限定されない。具体的には、アプリケーションが動作している実行環境は、アプリケーション開発者に分かり易い方法でこれらの特徴をサポートするようにインストルメント化することができる。これは、脱獄ツールを使用して動作する既存のアプリケーションとのシームレスな下位互換を可能にし、かつ、このインフラストラクチャを利用する新しいアプリケーションに対して将来のアプリケーションプログラマインターフェースのいかなる開発も必要としない。
【００９７】
モバイルデバイスのセキュリティを向上させるために信頼できるプロセッサゾーンを使用する１つの機構は、デバイスの特殊なデバッギングインターフェースおよび／またはＡｎｄｒｏｉｄ（商標）ＡＤＢ等のリモート監査ツールを、信頼できるゾーンの中へ配置することであり得る。これらのデバッギングインターフェースおよびツールは、モバイルデバイスのプロセス、ファイルシステム、アプリケーション、および他の構成要素、のうちの１以上を監査、構成、または、制御するために、ＵＳＢ、無線、または他の有線通信を介して機構を提供し得る。特殊なデバッギングインターフェースおよび／またはツール全体を信頼できるゾーンの中へ配置することによって、デバイスの完全性を監査するために、またはリモートに提供されるコマンドがデバイス上の正しい、信頼できるデバッギングソフトウェアによって処理されているという信頼性を伴って、その実行または構成をセキュアに制御するために、リモートコンピュータが使用され得る。あるいは、これらの特殊なデバッギング要素の一部は、信頼できるゾーン（例えば、ファイルシステム構成要素およびＵＳＢ  Ｉ／Ｏ部品）の中へ配置され得る。
【００９８】
モバイルデバイスのセキュリティを向上させるために信頼できるプロセッサゾーンを使用するための別の機構は、デバイスのプロセス間通信機構を信頼できるゾーンの中へ配置することであり得る。そのようなプロセス間通信機構は、モバイルデバイス上のユーザ空間アプリケーション（例えば、オペレーティングシステム内でない）と、サービス（例えば、ユーザ空間で動作するシステムサービスを含む）との間の通信を管理することが意図される。プロセス間通信機構が信頼できるプロセッサゾーンの中へ配置されると、信頼できるゾーンで実行するソフトウェアが改竄のないものになるので、デバイス上のユーザ空間アプリケーションとサービスとの間の通信の制御が保護されるとみなされ得る。さらに、トラストゾーンによってセキュアにされるプロセス間通信機構は、ユーザ空間アプリケーションとサービスとの間の通信を遮断、検査、ブロック、フィルタリング、または別様には適合させることによって、デバイス上の補足的なセキュリティ制御ポイントとして使用され得る。プロセス間通信機構が信頼できるプロセッサゾーン内にあるので、アプリケーション／サービス間の通信を通じた制御のセキュアポイントとみなされ得る。
【００９９】
デーモンユーザ空間プロセス等の、許可が高められたセキュアなプロセスは、デバイス上の他のプロセスの実行をスポーンし、制御するために使用され得る。例えばＡｎｄｒｏｉｄ（商標）上で、Ｚｙｇｏｔｅは、アプリケーションのプロセスの許可を起動し、適合させる役割を果たす。実施形態において、これらのセキュアなデーモンは、他のプロセスを悪意を持って起動、構成、または制御するように改竄できないことを確実にするために、信頼できるプロセッサゾーンの内部に移動され得る。さらに、セキュアなデーモンが、セキュアなプロセス間通信機構とともに信頼できるプロセッサゾーン内に移動されると、他のユーザ空間プロセスは、このデーモンプロセスとセキュアに対話し得る。
【０１００】
ユーザ空間アプリケーションの許可、コード、および構成は、一般的に、モバイルデバイス上のパッケージマネージャによって管理される。パッケージマネージャは、アプリケーションのアーチファクト、構成、および許可に関するクエリーをインストールし、構成し、削除し、そして、それに応じる。モバイルデバイス上のパッケージマネージャが危殆化された場合、攻撃者は、パッケージマネージャを使用して、アプリケーションの許可、構成の設定、コードの場所、または他の重要なパラメータを偽って報告する可能性がある。実施形態において、これは、パッケージマネージャおよびその機能の全て（例えば、パッケージのインストール、構成、アンインストール、アプリケーション情報のクエリーを行うこと、等）が改竄されないことを確実にするために、パッケージマネージャを信頼できるプロセッサゾーン内に移動させることを可能にし得る。パッケージマネージャ（例えば、Ａｎｄｒｏｉｄ  Ｐａｃｋａｇｅ  Ｍａｎａｇｅｒサービス等）を信頼できるプロセッサゾーンの中へ移動させることによって、これらの重要なアプリケーションパッケージングサービスが保護され得る。
【０１０１】
Ｄａｌｖｉｋ仮想マシン（商標）等の仮想マシンは、モバイルデバイス上のコードを実行するために使用される。仮想マシンが重要なアプリケーションコードの実行を制御するので、それらが改竄された場合、アプリケーションが任意のコードを動作させることを可能にする、重度のセキュリティホールが開かれる可能性がある。仮想マシン全体を信頼できるプロセッサゾーンの中へ移動させることによって、デバイスは、仮想マシンの実行が危殆化されないことを確実にし得る。同様に、命令のディスパッチング、仮想ディスパッチテーブル、ソケットおよびＩ／Ｏコード、ファイルシステム対話コード、クラスバイトコードキャッシュ、シンボルテーブル、またはクラスローディング機構等の、Ｄａｌｖｉｋ仮想マシン（商標）の核となる部分が、信頼できるゾーンに移動されたとしても、これらの重要な構成要素が危殆化されないことを確実にし得る。
【０１０２】
モバイルデバイス上の多数の構成機能は、ＸＭＬを読み出すこと、リレーショナルデータベース（例えば、ＳＱＬｉｔｅ）にクエリーを行うこと、または他の構成ファイルをロードし、次いで、システム実行パラメータを変更することを介して動作する。例えば、ＸＭＬまたはＪａｖａ（登録商標）バイトコードファイル（例えば、Ａｎｄｒｏｉｄ  Ｍａｎｉｆｅｓｔ．ｄｅｘ／ｃｌａｓｓ／ｊａｖａ（登録商標）／ｘｍｌ）は、アプリケーションユーザＩＤからＬｉｎｕｘ（登録商標）ユーザＩＤおよび許可グループへのマッピングを記憶するために使用され得る。これらの構成データソースのＩ／Ｏ、読み出し、および翻訳を信頼できるプロセッサゾーンの中へ移動させることによって、モバイルデバイスは、これらの情報ソースが、出所および完全性について暗号によって適切に確認され、適切に読み出しおよび翻訳され、また、それらの機能を誤って行うように変更されない。リレーショナルデータベース構成要素、構成ローディングルーチン（例えば、Ａｎｄｒｏｉｄ  ＬａｙｏｕｔＩｎｆｌａｔｅｒ、Ｍａｎｉｆｅｓｔリーダ等）は、必要に応じて、これらの核となる機能を保護するために、トラストゾーンの中へ移動され得る。
【０１０３】
企業は、モバイルデバイスの使用／セキュリティを管理するポリシーを制御するために、モバイルデバイス管理システムを使用する。モバイルデバイス管理システムが危殆化された場合、攻撃者は、これらのモバイルデバイス管理システムを使用して、機密データを盗むか、または他の不正なアクションを行い得る。モバイルデバイス管理システムの１つ以上の部分を信頼できるプロセッサゾーンの内部に移動させることによって、それらが危殆化されないことを確実にし得る。信頼できるプロセッサゾーンの内部にあれば、これらのモバイルデバイス管理機能は、セキュアであり、かつ攻撃者によって利用できないものとみなされ得る。
【０１０４】
デバイス上のユーザ入力は、タッチ画面ソフトウェア構成要素を利用して、ハードウェアからタッチイベントを受け取り、これらのイベントを、動き、キーの押下、または他のユーザ入力に翻訳し、共有メモリまたはプロセス間通信を通してイベントをターゲットプロセスにディスパッチし、そして、イベントをアプリケーションソフトウェア構成要素に配信し得る。これらのタッチ画面ソフトウェア構成要素が改竄された場合、それらは、攻撃ベクタとして使用されて、ピン番号、銀行取り引き情報、および他のセキュアな信用情報を吸い上げる可能性がある。本明細書で説明される信頼できるゾーン方法およびシステムは、ソフトウェアタッチ画面イベントのディスパッチ、共有メモリの読み出し／書き込み、プロセス間通信のディスパッチ、およびアプリケーション内ディスパッチコードの１つ以上の部分を信頼できるプロセッサゾーンの中へ移動させることによって、モバイルデバイスに関するこの脅威に対抗し得る。さらに、信頼できるプロセッサゾーンに移動させた部分は、仮想オンスクリーンキーボードおよび／またはその構成データを制御するためのコード等の、ソフトウェア入力メソッドを信頼できるプロセッサゾーンの中へ含め得る。
【０１０５】
デバイスの場所を判定または検証するために、ジオローカライゼーション、近接検出、位置評価、または近接認証構成要素を使用することができる。しかしながら、これらの機構は、攻撃され、および／または結果的になりすましされて、デバイス上のアプリケーションに、デバイスの実際の場所とは異なる場所を検出させる可能性がある。これは、場所に基づくポリシーを迂回する、または正確なローカライゼーションに依存するシステム（例えば、カーナビゲーション）を攻撃するために使用され得る。この可能性のあるエクスプロイトベクタを妨害するために、これらのシステム１つ以上が、改竄を防止するために、信頼できるプロセッサゾーンに移動され得る。
【０１０６】
本明細書では、モバイルデバイスソフトウェアおよびデータのセキュリティを高めるための信頼できるゾーンの使用例を説明してきたが、目的とされ、したがって本明細書に含まれるこれらの例に加えて、信頼できるゾーンの他の有益な使用もあり得る。加えて、ＡＲＭ  ＬｉｍｉｔｅｄによるＴｒｕｓｔＺｏｎｅを例示的な信頼できるゾーン機能として使用しているが、暗号または他の改竄防止手段を通したソフトウェアおよび／もしくはデータの頑健な保護を伴う信頼できるゾーンを提供する任意の設備が、本明細書で説明される方法、システム、およびアプリケーションで使用され得る。
【０１０７】
実施形態では、複数のアプリケーションを、複数の仮想マシンの内部で対話的に実行し得る。ネイティブライブラリのコードをロードし、リンクし、そして実行するために、アプリケーションは、ライブラリ要求をそれぞれの仮想マシンに送り得る。仮想マシンは、要求を許可するべきかどうかを判定するために、ポリシーエンジンと通信し得る。仮想マシンはまた、要求を許可するべきかどうかを判定するために、ローカルポリシーも使用し得る。要求が許可された場合、仮想マシンは、アプリケーションがネイティブライブラリにアクセスするのを容易にし、それは、オペレーティングシステムと対話するのを容易にする。仮想マシンは、アプリケーションにライブラリアクセス許可の信号を送り得る。
【０１０８】
ポリシーエンジンは、随意に、ポリシーリポジトリを管理し得るポリシーサーバとポリシー要求を交換し得る。ポリシーサーバは、ブラック／ホワイトリスト、署名および／または命名、チェックサム／ライブラリ解析、アプリケーションの許可、プロセス、ユーザ、グループ、ならびに他のポリシーチェック等のポリシーアスペクトを判定するために、ポリシーリポジトリアクセスを行うことによって、ポリシーエンジンからポリシー要求を提供し得る。ポリシーサーバは、ポリシーリポジトリ応答を受け取り、それ自体がポリシー要求応答をポリシーエンジンに提供し得る。あるいは、ポリシーエンジンは、ポリシーエンジンによって知られている、またはアクセス可能であるポリシー情報に基づいて、ネイティブライブラリのアプリケーションアクセスに関する問い合わせを仮想マシンに提供し得る。
【０１０９】
一実施形態において、仮想マシンは、ＩＰＣ、Ｕｎｉｘ（登録商標）ドメインソケット、または共有メモリ等のローカルクロスプロセス通信機構を使用して、ポリシーエンジンと通信し得る。クロスプロセス通信機構は、承認のためにアプリケーションからポリシーエンジンに、仮想マシンによって受け取られるネイティブライブラリ要求に関する情報を送るか、またはローカル承認の決定を行うためにポリシーもしくは規則データを受け取るために使用され得る。実施形態において、クロスプロセス通信機構は、アプリケーションからポリシーエンジンにネイティブライブラリ要求を送るために使用され得る。
【０１１０】
以下、図２を参照すると、複数のアプリケーション１１０は、互いに対話し得、また、共通データバス２０２を介してシステムサービスと対話し得る。サブシステム間で通信するために、ソースアプリケーションは、２０４で、リモートプロシージャコールを実行し得、次いで、この要求は、データバス２０２に渡され得る。次いで、データバスは、２１８で、ポリシーエンジン１１８にそのコールを渡すことによって、リモートプロシージャコールのポリシー検証を要求し得る。リモートプロシージャコールおよびその記憶されたポリシーのコンテキストを使用して、ポリシーエンジン１１８は、トランザクションの承認または否認のいずれかを行い得、そして、この結果を、２１４で、データバス２０２に返信する。このリモートプロシージャコールがシステムサービスに関わる場合、データバスは、２０８で、オペレーティングシステム１１６に要求を渡し得る。オペレーティングシステム１１６は、リモートプロシージャコールを実行し得、そして、データバス２０２を介して、２１０で、ソースアプリケーション１１０に結果を返し得る。代わりに、このリモートプロシージャコールが別のアプリケーションとの対話に関わる場合、データバスは、２１２で、宛先アプリケーション１１０にコールを渡し得る。そのリモートプロシージャコールの結果は、データバス２０２を介して、ソースアプリケーション１１０に返され得る。
【０１１１】
さらに詳細には、引き続き図２を参照すると、データバス２０２は、ソースアプリケーション１１０の識別情報を含めるために、受け取ったリモートプロシージャコールに固有のコンテキストを生成する役割を果たし得る。ポリシーエンジン１１８は、現在の日付および時間、デバイスの場所、ならびにデバイスのユーザの識別情報を含めるために、システム固有のコンテキストを生成する役割を果たし得る。ポリシーエンジン１１８は、次いで、利用可能なシステムポリシー、アプリケーションポリシー、システムコンテキスト、アプリケーションコンテキスト、およびリモートプロシージャコール自体のコンテンツに従って、リモートプロシージャコールを評価し得る。ポリシーの評価の結果に基づいて、ポリシーエンジン１１８は、次いで、データバス２０２を介して、ソースアプリケーション１１０に応答を返し得る。
【０１１２】
さらに詳細には、引き続き図２の本発明を参照すると、システムは、随意のポリシーサーバ１０６を介してサポートされ得る。このサーバは、遠隔に位置し、デバイスのネットワーク接続を介してアクセスされ得る。ポリシー管理者は、ポリシーサーバ１０６にシステムおよびアプリケーションポリシーを入力し得る。ポリシーサーバは、次いで、２２０で、これらのポリスを、それらが管理するデバイスのポリシーエンジン１１８にプッシュし得る。ポリシーエンジン１１８はまた、２２２で、監査およびアカウンティングの目的で、のポリシー統計および違反をポリシーサーバ１０６に報告し得る。
【０１１３】
実施形態において、アプリケーション１１０は、スマートフォン上にモジュール的にインストールされ得、また、共有データバス２０２を介して、リモートプロシージャコールサービス、プロトコルハンドラ、システムコールテーブル、または任意の他の機能もしくはオブジェクトブローカーとしてインスタンス化され得るプロセス間通信を行うことが可能であり得る。ポリシーエンジン１１８は、このブローカーサービスに対する拡張部分としてインスタンス化され得、それによって、プロセス間通信要求が、利用可能なポリシーに対して評価され得る。これらの要求は、ポリシー評価の結果に基づいて、承認または拒否され得る。
【０１１４】
ここで図３を参照すると、システム操作は、３０２から開始し得る。３０４で、ユーザ、アプリケーション、またはサービスは、アプリケーション間でデータ転送を生じさせるべきかどうかを判定し得、データソースは、そのデータを取得し、準備し得る。３０８で、データ転送サービスは、データの機密度またはデータの送信元等の、データ転送と関連付けられる関連するコンテキストを取得または生成し得る。次いで、３１０で、データおよびそのコンテキストが複数のポリシーに従って評価され得、３１２で、転送が許可されたかどうかを判定する。許可されない場合、３１４で、データ転送サービスは、ユーザ、アプリケーション、または転送を開始したサービスに失敗を報告し得る。許可される場合、３１８で、データコンテキストが、転送の結果である任意の関連するコンテキストの変更を含むように更新され得る。次いで、３２０で、データが宛先に転送され、３２２で、ユーザ、アプリケーション、または転送を開始したサービスに成功が報告され得る。
【０１１５】
データ転送許可は、適切なデータコンテキストが３０８で取得され、３２０での転送後に維持されることを確実にすることによって取得され得る。３１２で転送が許可されるかどうかを評価するために使用されるポリシーは、許可の判定を行うために、データ、データのコンテキスト、およびシステムのコンテキスト全体を使用し得る。このプロセスの実施形態は、機密データが、そのデータを受け取ることが許可されていないアプリケーションに転送されないこと、および／または互いの間で情報を送ることおよび受け取ることが許可されているアプリケーションおよび／もしくは個人の間でだけ、そのデータが転送されることを確実にし得る。
【０１１６】
このプロセスの特定のインスタンス化は、図２で示され得る。アプリケーション１１０は、別のアプリケーションまたはサービスから情報を要求し得る。このデータは、データバス２０２によって受け取られ得、該データバスは、２１８で、該データをポリシーエンジン１１８に転送し、そこで該データは、ポリシー評価を受け得る。判定は、ポリシーエンジン１１８によって行われ得、そして、２１４で、データバス２０２に返され得る。転送が許可されない場合、データバスは、２１２で、失敗を要求元アプリケーション１１０に報告し得る。転送が許可される場合、データバスは、２１２で、データコンテキストを更新し、そして、データおよびコンテキストを宛先アプリケーションに転送し得る。成功が報告され得る。
【０１１７】
実施形態の利点としては、モバイルデバイス上で生じる全てのリモートプロシージャコール、プロセス間通信、およびシステムコールに関する厳密で詳細なセキュリティポリシーを強化する能力が挙げられるが、それに限定されない。システム全体のポリシーエンジンを実現することによって、デバイス管理者は、アプリケーションがそれら自体を他の潜在的に悪意のあるアプリケーションからより容易に保護できることを可能にするポリシーを展開し得る。データの出所に適用されると、モバイルデバイス内の全てのデータの動きは、データのソース、宛先、および機密度等のパラメータに基づいて許可することができる。これは、共通のポリシーセットを伴わずに個々のトランザクションを個々に承認／否認するためにアプリケーションに依存する従来技術に勝る顕著な利点を提供する。
【０１１８】
以下、図５を参照すると、アプリケーション１１０Ａおよび／またはＢは、プロセス間通信が可能である一群のオブジェクト５０２Ａ〜Ｄを含み得る。これらのオブジェクトはＩＰＣバス１３２に直接接続し得るが、実施形態において、オブジェクトは、ファイアウォール５０４Ａ、Ｂ、Ｃ、および／もしくはＤ、ならびに／またはコントローラ１３８Ａおよび／もしくはＢを使用して仲介され得る。具体的には、各オブジェクト（例えば５０２Ａ）は、ＩＰＣコントローラ１３８Ａに接続し得る独立したＩＰＣファイアウォール５０４Ａを有し、該ＩＰＣコントローラは、該ＩＰＣファイアウォールをＩＰＣバス１３２に接続する。ポリシーエンジン１１８は、デバイスポリシーを実現するために、コントローラおよびファイアウォールと通信し得る。
【０１１９】
ポリシーエンジン１１８は、高レベルのファイアウォール規則を、複数のＩＰＣオブジェクトファイアウォール５０４Ａ〜Ｄ特定の設定に翻訳し得る。実施形態において、新しいＩＰＣ可能なオブジェクト５０２Ａ、Ｂ、Ｃ、および／またはＤが作成されると、各プロセスのローカルＩＰＣコントローラ１３８Ａおよび／またはＢは、必要に応じて、１つ以上のＩＰＣオブジェクトファイアウォール５０４Ａ〜ＤをＩＰＣ可能なオブジェクト５０２Ａ〜Ｄにインストールし得る。
【０１２０】
アプリケーション１１０Ａは、オブジェクト（例えば、５０２Ａ）から、第２のアプリケーション１１０Ｂの第２のオブジェクト（例えば、５０２Ｄ）へのプロセス間通信コールを開始し得る。随意に、第１のアプリケーション上のＩＰＣオブジェクトファイアウォール５０４Ａは、アウトバウンドＩＰＣコールが現在のＩＰＣファイアウォール規則に基づいて許可されたかどうかを判定し得る。プロセス間通信コールは、ＩＰＣバス１３２を介して、第２のアプリケーション１１０Ｂ、ＩＰＣコントローラ１３８Ｂに送られ得る。ＩＰＣコントローラ１３８Ｂは、ＩＰＣコールを第２のオブジェクトのＩＰＣファイアウォール５０４Ｄ上へ送り得る。第２のオブジェクトのＩＰＣファイアウォール５０４Ｄは、ＩＰＣファイアウォール規則、コールのターゲットオブジェクト５０２Ｄ、コールで提供されるデータ、ターゲットオブジェクト５０２Ｄの現在の状態、および対象アプリケーション１１０Ｂの現在の状態に基づいて、アクセス判定を行い得る。
【０１２１】
対象アプリケーション１１０Ｂのターゲットオブジェクト５０２ＤのＩＰＣファイアウォール５０４ＤによるＩＰＣコールの処理は、以下のいずれかを含み得る。ターゲットオブジェクトＩＰＣファイアウォール５０４Ｄは、ターゲットオブジェクト５０２ＤへのＩＰＣコールをブロックし得る。ターゲットオブジェクトＩＰＣファイアウォール５０４Ｄは、コールでターゲットオブジェクト５０２Ｄに送られるデータのコンテンツを修正し得る。ターゲットオブジェクトＩＰＣファイアウォール５０４Ｄは、プロセス間通信コールに応じて、ターゲットオブジェクト５０２Ｄから開始オブジェクト５０２Ａに送られるデータの戻り値を修正し得る。ターゲットオブジェクトＩＰＣファイアウォール５０４Ｄは、ＩＰＣコールのターゲットオブジェクト５０２Ｄを変更し得る。ターゲットオブジェクトＩＰＣファイアウォール５０４Ｄは、コールをロギングし得る。ターゲットオブジェクトＩＰＣファイアウォール５０４Ｄは、１つ以上のＩＰＣファイアウォール規則を変更し得、またはＩＰＣファイアウォール規則を追加／除去し得る。
【０１２２】
ＩＰＣコールを開始オブジェクト５０２Ａに返すときに、開始オブジェクトのＩＰＣファイアウォール５０４Ａは、ＩＰＣファイアウォール規則、コールのターゲットオブジェクト、コールで提供されるデータ、コールの戻り値に提供されるデータ、開始オブジェクト５０２Ａの現在の状態、および開始アプリケーション１１０Ａの現在の状態、のうちの１つ以上に基づいて、ＩＰＣコールをどのように処理するのかを決定し得る。処理は、開始オブジェクト５０２Ａが例外を処理するのではなく破棄し得ること、開始オブジェクトファイアウォール５０４ＡがＩＰＣコールの戻り値を修正し得ること、開始オブジェクトファイアウォール５０４Ａが追加的なＩＰＣコールを開始オブジェクト５０２Ａまたは他のオブジェクト（例えば、５０２Ｂ）に送り得ること、開始オブジェクトファイアウォール５０４Ａが１つ以上のＩＰＣファイアウォール規則を修正し得、またはＩＰＣファイアウォール規則を追加／除去し得ること、のうちの任意の１つ以上を含み得る。
【０１２３】
現在の実施形態の利点としては、モバイルデバイス上で生じる全てのＩＰＣに関する厳密で詳細なセキュリティポリシーを強化する能力が挙げられ得るが、それに限定されない。システム全体のポリシーエンジンを実現することによって、デバイス管理者は、アプリケーションがそれら自体を他の潜在的に悪意のあるアプリケーションからより容易に保護することを可能にするポリシーを展開し得る。ＩＰＣファイアウォールとして実現されたときに、本発明は、広範囲のシステムポリシーを強化し得る効率的でスケーラブルな方法で、ポリシー強化を達成し得る。
【０１２４】
実施形態において、以下、図４を参照すると、マルウェアの脅威に対処するためのシステム動作の実施形態は、４０２から開始する。４０４で、アプリケーションは、システムコールを生じさせるべきかどうかを判定し、システムコールを行い得る。４０８で、コールハンドラは、アプリケーション、発行者、または意図される目的のソース等の、アプリケーションと関連付けられる関連するコンテキストを取得または生成し得る。次いで、４１０で、システムコールおよびそのコンテキストが複数のポリシーに従って評価されて、４１２で、システムコールが既知のマルウェア署名の一部であるかどうかを判定する。既知のマルウェア署名の一部である場合、または許可されない場合、コールハンドラは、４１４で、失敗をアプリケーションに報告し、また、マルウェアの存在をデバイス管理者に報告し、４１８で、アプリケーションを無効にし得る。許可される場合、または既知のマルウェア署名の一部でない場合は、４２０で、アプリケーションコンテキストが、システムコールの結果である任意の関連するコンテキストの変更を含むように更新され得る。次いで、４２２で、システムコールが実行され得、４２４で、成功がアプリケーションに報告され得る。
【０１２５】
システムコール許可は、適切なアプリケーションコンテキストが４０８で取得され、４２０で転送後に更新されることを確実にすることによって取得され得る。４１０でシステムコールが許可されるかどうかを評価するために使用されるポリシーは、許可の判定を行うために、コール、アプリケーションのコンテキスト、およびシステムのコンテキスト全体を使用し得る。種々の実施形態は、デバイス管理者が、既知のシステムコールパターンおよびアプリケーションコンテキストに基づいて、マルウェアを識別し、無効にすることができるデバイスに、ポリシーをプッシュすることを可能にし得る。
【０１２６】
このプロセスの特定のインスタンス化は、図２で示され得る。アプリケーション１１０は、システムコールの実行を要求し得る。このコールは、データバス２０２によって受け取られ得、該データバスは、２１８で、該データをポリシーエンジン１１８に転送し、そこで該データは、ポリシー評価を受けることができる。判定は、ポリシーエンジン１１８によって行われ得、そして、２１４で、データバス２０２に返され得る。システムコールが許可されない場合、データバス２０２は、２１２で、失敗を要求元アプリケーション１１０に報告し得る。システムコールが許可される場合、データバス２０２は、２１２で、アプリケーションコンテキストを更新し、システムコールを実行し得、そして、アプリケーションコンテキストを更新し得る。成功が報告され得る。
【０１２７】
本実施形態の利点としては、モバイルデバイス上で生じる全てのリモートプロシージャコール、プロセス間通信、およびシステムコールに関する厳密で詳細なセキュリティポリシーを強化する能力が挙げられ得るが、それに限定されない。システム全体のポリシーエンジンを実現することによって、デバイス管理者は、アプリケーションがそれら自体を他の潜在的に悪意のあるアプリケーションからより容易に保護できることを可能にするポリシーを展開することができる。マルウェアの検出および防止に適用されると、既知のシステムコールパターンを、実行前に認識、遮断、および停止することができる。次いで、問題のあるアプリケーションは、無効にすることができ、デバイス管理者に悪意のある行動を通知することができる。これは、共通のポリシーセットを伴わずに個々のシステムコールを個々に承認／否認するためにアプリケーションに依存する従来技術に勝る有意な利点を提供する。追加的に、デバイス管理者が、ベンダーが供給するパッチが利用できるようになるまで待つことを必要とすることなく、新たな脅威から保護するデバイスポリシーを実現することを可能にする。
【０１２８】
本明細書で論じられるさらなる態様は、ポリシーを配布するためのプロセス間通信の使用、またはアスペクト指向セキュリティをモバイルデバイス上の複数のプロセスに適用するために必要とされる他のデータの使用である。
【０１２９】
既存のモバイルセキュリティソリューションによる課題は、該ソリューションが、セキュリティポリシーを強化するために、アプリケーションプログラミングインターフェース、システムライブラリ、またはオペレーティングシステムに対する修正を必要とすることである。無線ネットワークへのアクセスまたはデータのカット／ペーストを制限するために、これらの特徴に関連するＡＰＩは、セキュリティポリシーがそれらの挙動を変更することを可能にするように修正されなければならない。急速に発展しているモバイルシステムに対して、セキュリティ機能をサポートし、それらを維持するために、プラットフォームのＡＰＩを修正することは、かなりの労力を必要とする。
【０１３０】
実施形態は、セキュリティポリシーを、アスペクト指向プログラミングを通して既存のＡＰＩに適用すること、およびＡＰＩの内部論理を修正することなく既存のＡＰＩに適用することを可能にすることによって、モバイルデバイスセキュリティ問題に対処し得る。代わりに、既存のＡＰＩは、本明細書で説明されるアスペクト指向プログラム方法および手法を使用して、１つ以上のセキュリティ層で覆われ得る。セキュリティポリシーを非モバイル動作環境で単一のプロセスに適用するためにアスペクト指向プログラミングを使用したが、モバイルデバイスは、動作するために、マルチプロセスアーキテクチャおよびプロセス間通信を使用する。したがって、セキュリティポリシーの単一プロセスアプリケーションは、モバイルデバイス動作セキュリティ要件を満たさない場合がある。アスペクト指向セキュリティをモバイルデバイス上の複数のプロセスに適用するために必要とされる１つ以上のポリシーまたは他のデータを配信するために、プロセス間通信が使用され得る。セキュリティ関連のデータが、Ａｎｄｒｏｉｄ  ＢｉｎｄｅｒまたはＵｎｉｘ（登録商標）ドメインソケット等のプロセス間通信機構を介して、ターゲットプロセスに配信されると、これらのターゲットプロセスの方法、機能、およびサービスの起動に関連するセキュリティを遮断および管理するために、アスペクト指向セキュリティ手法が適用され得る。
【０１３１】
アスペクト指向プログラミングは、モバイルプラットフォーム上に多数の形態で現れ得る。アスペクト指向プログラミングアプローチは、オブジェクト指向メソッドの実行に関連するコードの前に、後に、その代わりに、またはその任意の組み合わせのコードの特定のセグメントを起動するための、オブジェクトクラスに対する修正であり得る。アスペクト指向プログラミングアプローチは、Ｊａｖａ（登録商標）ダイナミックプロキシ、メソッド、サービス、システム、または他の機能コールに適用される遮断器、仮想マシンのデフォルト挙動を変更するためのそれらへのクラスのローディングの修正、Ｊａｖａ（登録商標）  ＪＡＲまたはＡｎｄｒｏｉｄ  ＤＥＸファイル等のバイナリコードパッチ、特定の機能または方法のためのコード実行を変更するためのメソッドディスパッチテーブルに対する修正、および、他の好適な手法を含み得る。
【０１３２】
種々の実施形態では、ポリシーがどのようにデバイスに適用されるのかを変更し、結果として、アスペクト指向セキュリティ手法がどのように１つ以上のプロセスにわたって適用されるかを変更するために、コンテキスト情報を使用する能力が提供され得る。そのようなコンテキスト情報としては、地理的なもの、加速度計、カメラ、マイクロフォン、無線ネットワーク、アプリケーションの使用、ユーザ対話、動作中のプロセス、ディスクの状態、近隣の無線信号／ネットワーク、外部デバイスとのペアリング状態、訪れているウェブサイト、デバイスネットワークトラフィック、バッテリレベル、デバイス上に存在するデータのタイプ、他のデバイスハードウェアまたはソフトウェア検出可能なコンテキスト情報が挙げられ得る。デバイスコンテキストは、地理的場所等の現実的なもの、デバイス上に存在するデータ、現在実行しているアプリケーション、ネットワークもしくはディスクとのデータの入力／出力等の仮想的なもののいずれか、またはそれら２つの任意の組み合わせであり得る。例えば、セキュリティポリシーは、特定の無線ネットワークへの接続、１つ以上のアプリケーションの起動、または特定のデータセットのダウンロードによって起動され得る。
【０１３３】
モバイルデバイスのためのアスペクト指向セキュリティは、デバイス上で機能しているどのプロセスが、何らかの形態のアスペクト指向セキュリティによってカバーされているのかを追跡すること、および／またはセキュリティポリシーを強化する等のために適用されているアスペクト指向セキュリティプログラミングの候補であるプロセスを判定することを含み得る。この追跡は、集中され得るか、分散され得るか、またはこれら２つのハイブリッド組み合わせであり得る。
【０１３４】
そのような追跡のための機構は、セキュリティポリシーを一組の所望の機能またはデバイス能力に適用するために、ポリシーおよび／またはアスペクト指向プログラミングデータをどのように配信して処理するのかを判定し得る。そのような機構は、オペレーティングシステムの中に、またはユーザ空間のオペレーティングシステムの外部に存在し得る。
【０１３５】
デバイスは、シャットダウンおよび再起動され得るので、ポリシーおよび／またはアスペクト関連データは、デバイスをオンに戻したときにプロセスに再配布することができるように、デバイスに記憶され得る。不揮発性記憶システムは、必要とされるポリシーおよび／またはアスペクト指向プログラミング情報を取り込み得る。デバイスの電源をオンにしたときには、セキュリティポリシーを強化するために、ポリシーおよび／またはアスペクト指向プログラミングデータをプロセスに入力／出力するために、分散または集中型機構のいずれかが使用され得る。
【０１３６】
セキュリティポリシーは、アプリケーション、オペレーティングシステム、ミドルウェア、または他のコードの実行に関する制限を含み得る。セキュリティポリシーは、ユーザがどのようにシステムと対話し得るか、どの動作を行い得るか、どのデータにアクセスすることができるか、どのようにデータを使用することができるか、等に関する制限を含み得る。セキュリティポリシーはまた、物理的ハードウェアに関連する入力／出力または他の動作を管理し得る。
【０１３７】
追加的に、非アスペクト指向プログラミング論理は、特定のデバイス機能または能力をセキュアにする前に、デバイスを所望の状態にするために、アスペクト指向プログラミングと連結され得る。例えば、非アスペクト指向プログラミング論理は、アスペクト指向プログラミング手法を使用して、どのアプリケーションが無線ネットワークアクセスをオン／オフにすることができるのかを制限する前に、無線ネットワークアクセスをオフにし得る。別の例において、非アスペクト指向プログラミング論理は、アスペクト指向プログラミング手法を使用してマルウェアの再起動を防止する前に、マルウェアアプリケーションを自動的にシャットダウンすることができる。
【０１３８】
本発明のほんの少数の実施形態を図示および説明してきたが、当業者には、以下の特許請求の範囲で説明される本発明の趣旨および範囲から逸脱することなく、多くの変更および修正がそこに行われ得ることが明らかになるであろう。本明細書で参照される、国外および国内双方の全ての特許出願および特許、ならびに全ての他の刊行物は、法律で認められる最大の範囲まで、その全体が本明細書に組み込まれる。
【０１３９】
本明細書で説明される方法およびシステムは、コンピュータソフトウェア、プログラムコード、および／または命令をプロセッサ上で実行するマシンを通して、部分的または全体的に展開され得る。本発明は、マシン上の方法として、マシンの一部としてのもしくはそれに関連するシステムもしくは装置として、またはマシンの１つ以上で実行するコンピュータ読み出し可能な媒体に具現化されるコンピュータプログラム製品として、実現され得る。プロセッサは、サーバ、クラウドサーバ、クライアント、ネットワークインフラストラクチャ、モバイルコンピューティングプラットフォーム、固定コンピューティングプラットフォーム、または他のコンピューティングプラットフォームの一部であり得る。プロセッサは、プログラム命令、コード、バイナリ命令等を実行することができる、任意の種類のコンピュータデバイスまたは処理デバイスであり得る。プロセッサは、それに記憶されるプログラムコードまたはプログラム命令の実行を直接的または間接的に容易にし得る、信号プロセッサ、デジタルプロセッサ、組み込みプロセッサ、マイクロプロセッサ、またはコプロセッサ（マスコプロセッサ、グラフィックコプロセッサ、通信コプロセッサ等）等の任意の変形例であり得るか、またはそれらを含み得る。加えて、プロセッサは、複数のプログラム、スレッド、およびコードの実行を可能にし得る。スレッドは、プロセッサの性能を高めるために、およびアプリケーションの同時動作を容易にするために、同時に実行され得る。実現例として、本明細書で説明される方法、プログラムコード、プログラム命令等は、１つ以上のスレッドで実現され得る。スレッドは、それらと関連付けられる割り当て優先度を有し得る、他のスレッドをスポーンし得、プロセッサは、優先度に基づいて、またはプログラムコードに提供される命令に基づく任意他の順序に基づいて、これらスレッドを実行し得る。プロセッサ、またはそれを利用する任意のマシンは、本明細書および他の場所で説明されるように方法、コード、命令、およびプログラムを記憶する、メモリを含み得る。プロセッサは、本明細書および他の場所で説明されるように方法、コード、および命令を記憶し得るインターフェースを通して、記憶媒体にアクセスし得る。方法、プログラム、コード、プログラム命令、またはコンピューティングデバイスもしくは処理デバイスによって実行することができる他のタイプの命令を記憶するためのプロセッサと関連付けられる記憶媒体としては、ＣＤ−ＲＯＭ、ＤＶＤ、メモリ、ハードディスク、フラッシュドライブ、ＲＡＭ、ＲＯＭ、キャッシュ等、のうちの１つ以上が挙げられ得るが、それらに限定されない。
【０１４０】
プロセッサは、マルチプロセッサの速度および性能を高め得る、１つ以上のコアを含み得る。実施形態において、プロセスは、２つ以上の独立コア（ダイと呼ばれる）を組み合わせる、デュアルコアプロセッサ、クワッドプロセッサ、または他のチップレベルマルチプロセッサ等であり得る。
【０１４１】
本明細書で説明される方法およびシステムは、サーバ、クライアント、ファイアウォール、ゲートウェイ、ハブ、ルータ、または他のそのようなコンピュータおよび／もしくはネットワーキングハードウェア上でコンピュータソフトウェアを実行するマシンを通して、部分的または全体的に展開され得る。ソフトウェアプログラムは、ファイルサーバ、プリントサーバ、ドメインサーバ、インターネットサーバ、イントラネットサーバ、クラウドサーバ、および二次サーバ、ホストサーバ、分散サーバ等の他の変形例が挙げられ得る、サーバと関連付けられ得る。サーバは、メモリ、プロセッサ、コンピュータ読み出し可能な媒体、記憶媒体、ポート（物理および仮想）、通信デバイス、ならびに無線または有線媒体を通して他のサーバ、クライアント、マシン、およびデバイスにアクセスできるインターフェース等、のうちの１つ以上を含み得る。本明細書および他の場所で説明される方法、プログラム、またはコードは、サーバによって実行され得る。加えて、本出願で説明される方法の実行に必要とされる他のデバイスは、サーバと関連付けられるインフラストラクチャの一部と考えられ得る。
【０１４２】
サーバは、クライアント、他のサーバ、プリンタ、データベースサーバ、プリントサーバ、ファイルサーバ、通信サーバ、分散サーバ、ソーシャルネットワーク等が挙げられるが、それらに限定されない、他のデバイスへのインターフェースを提供し得る。追加的に、この連結および／または接続は、ネットワーク全体にわたるプログラムのリモート実行を容易にし得る。これらデバイスのいくつかまたは全てのネットワーキングは、本開示の範囲から逸脱することなく、１つ以上の場所でのプログラムまたは方法の並列処理を容易にし得る。加えて、インターフェースを通してサーバに取り付けられるデバイスのいずれかは、方法、プログラム、コード、および／または命令を記憶することができる少なくとも１つの記憶媒体を含み得る。中央リポジトリは、異なるデバイス上で実行されるプログラム命令を提供し得る。この実現例において、遠隔リポジトリは、プログラムコード、命令、およびプログラムのための記憶媒体としての機能を果たし得る。
【０１４３】
ソフトウェアプログラムは、ファイルクライアント、プリントクライアント、ドメインクライアント、インターネットクライアント、イントラネットクライアント、および二次クライアント、ホストクライアント、分散クライアント等の他の変形例が挙げられ得る、クライアントと関連付けられ得る。クライアントは、メモリ、プロセッサ、コンピュータ読み出し可能な媒体、記憶媒体、ポート（物理および仮想）、通信デバイス、ならびに無線または有線媒体を通して他のクライアント、サーバ、マシン、およびデバイスにアクセスできるインターフェース等、のうちの１つ以上を含み得る。本明細書および他の場所で説明される方法、プログラム、またはコードは、クライアントによって実行され得る。加えて、本出願で説明される方法の実行に必要とされる他のデバイスは、クライアントと関連付けられるインフラストラクチャの一部と考えられ得る。
【０１４４】
クライアントは、サーバ、他のクライアント、プリンタ、データベースサーバ、プリントサーバ、ファイルサーバ、通信サーバ、分散サーバ等が挙げられるが、それらに限定されない、他のデバイスへのインターフェースを提供し得る。追加的に、この連結および／または接続は、ネットワーク全体にわたるプログラムの遠隔実行を容易にし得る。これらデバイスのいくつかまたは全てのネットワーキングは、本開示の範囲から逸脱することなく、１つ以上の場所でのプログラムまたは方法の並列処理を容易にし得る。加えて、インターフェースを通してクライアントに取り付けられるデバイスのいずれかは、方法、プログラム、アプリケーション、コード、および／または命令を記憶することができる少なくとも１つの記憶媒体を含み得る。中央リポジトリは、異なるデバイス上で実行されるプログラム命令を提供し得る。この実現例において、遠隔リポジトリは、プログラムコード、命令、およびプログラムのための記憶媒体としての機能を果たし得る。
【０１４５】
本明細書で説明される方法およびシステムは、ネットワークインフラストラクチャを通して、部分的または全体的に展開され得る。ネットワークインフラストラクチャは、当技術分野で知られているように、コンピューティングデバイス、サーバ、ルータ、ハブ、ファイアウォール、クライアント、パーソナルコンピュータ、通信デバイス、ルーティングデバイス、ならびに能動的および受動的なデバイス、モジュール、および／または構成要素等の要素を含み得る。ネットワークインフラストラクチャと関連付けられるコンピューティングまたは非コンピューティングデバイスは、他の構成要素とは別に、フラッシュメモリ、バッファ、スタック、ＲＡＭ、ＲＯＭ等の記憶媒体を含み得る。本明細書および他の場所で説明されるプロセス、方法、プログラムコード、命令は、ネットワークインフラストラクチャ要素の１つ以上によって実行され得る。本明細書で説明される方法およびシステムは、サービスとしてのソフトウェア（ＳａａＳ）、サービスとしてのプラットフォーム（ＰａａＳ）、および／またはサービスとしてのインフラストラクチャ（ＩａａＳ）の特徴に関わるものを含む、任意の種類のプライベート、コミュニティ、もしくはハイブリッドクラウドコンピューティングネットワーク、またはクラウドコンピューティング環境とともに使用するように適合され得る。
【０１４６】
本明細書および他の場所で説明される方法、プログラムコード、および命令は、複数のセルを有するセルラーネットワーク上で実現され得る。セルラーネットワークは、周波数分割多重アクセス（ＦＤＭＡ）ネットワークまたはコード分割多重アクセス（ＣＤＭＡ）ネットワークのいずれかであり得る。セルラーネットワークは、モバイルデバイス、セルサイト、基地局、リピータ、アンテナ、タワー等を含み得る。セルネットワークは、ＧＳＭ（登録商標）、ＧＰＲＳ、３Ｇ、ＥＶＤＯ、メッシュ、または他のネットワーク型であり得る。
【０１４７】
本明細書および他の場所で説明される方法、プログラムコード、および命令は、モバイルデバイス上で、またはそれを通して実現され得る。モバイルデバイスとしては、ナビゲーションデバイス、セルホン、携帯電話、モバイル携帯情報端末、ラップトップ、パームトップ、ネットブック、ページャ、電子ブックリーダ、音楽プレーヤー等が挙げられる。これらのデバイスは、他の構成要素とは別に、フラッシュメモリ、バッファ、ＲＡＭ、ＲＯＭ等の記憶媒体、および１つ以上のコンピューティングデバイスを含み得る。モバイルデバイスと関連付けられるコンピューティングデバイスは、そこに記憶されたプログラムコード、方法、および命令を実行することが可能にされ得る。あるいは、モバイルデバイスは、他のデバイスと共同して命令を実行するように構成され得る。モバイルデバイスは、サーバとインターフェースされ、プログラムコードを実行するように構成される、基地局と通信し得る。モバイルデバイスは、ピアツーピアネットワーク、メッシュネットワーク、または他の通信ネットワーク上で通信し得る。プログラムコードは、サーバと関連付けられる記憶媒体に記憶され得、サーバ内に組み込まれるコンピューティングデバイスによって実行され得る。基地局は、コンピューティングデバイスおよび記憶媒体を含み得る。記憶デバイスは、基地局と関連付けられるコンピューティングデバイスによって実行されるプログラムコードおよび命令を記憶し得る。
【０１４８】
コンピュータソフトウェア、プログラムコード、および／または命令は、機械読み取り可能な媒体に記憶され得、および／またはアクセスされ得、該読み取り可能な媒体としては、コンピュータ構成要素、デバイス、およびある時間間隔にわたってコンピューティングに使用されるデジタルデータを保持する記録媒体、ランダムアクセスメモリ（ＲＡＭ）として知られる半導体記憶装置、ハードディスク、テープ、ドラム、カードのような磁気記憶装置の形態、および他のタイプの形態の、光ディスク等の、一般的により永続的な記憶のための大容量記憶装置、プロセッサレジスタ、キャッシュメモリ、揮発性メモリ、不揮発性メモリ、ＣＤ、ＤＶＤ等の光記憶装置、フラッシュメモリ（例えば、ＵＳＢスティックまたはキー）、フロッピー（登録商標）ディスク、磁気テープ、紙テープ、パンチカード、スタンドアロンのＲＡＭディスク、Ｚｉｐドライバ、リムーバブル大量記憶装置、オフライン等のリムーバブル媒体、ダイナミックメモリ、スタティックメモリ、読み出し／書き込み記憶装置、可変記憶装置、リードオンリーメモリ、ランダムアクセスメモリ、シーケンシャルアクセスメモリ、位置アドレス可能メモリ、ファイルアドレス可能メモリ、内容アドレス可能メモリ、ネットワーク接続記憶装置、ストレージエリアネットワーク、バーコード、磁気インキ等の、他のコンピュータメモリが挙げられる。
【０１４９】
本明細書で説明される方法およびシステムは、物理的および／または無形のアイテムをある状態から別の状態に変換し得る。本明細書で説明される方法およびシステムはまた、物理的および／または無形のアイテムを表すデータをある状態から別の状態に変換し得る。
【０１５０】
図面の全体を通してフローチャートおよびブロック線図に含まれる、本明細書で説明され、描写される要素は、要素間の論理的な境界を暗示する。しかしながら、ソフトウェアまたはハードウェアエンジニアリングの慣習によれば、描写される要素およびその機能は、モノリシックなソフトウェア構造として、スタンドアロンのソフトウェアモジュールとして、もしくは外部ルーチン、コード、サービス等を利用するモジュールとして、またはそれらの任意の組み合わせとして、コンピュータ実行可能な媒体を通して、そこに記憶されるプログラム命令を実行することができるプロセッサを有するマシン上に実現され得、また全てのそのような実現例も本開示の範囲内であり得る。そのようなマシンの例としては、携帯情報端末、ラップトップ、パーソナルコンピュータ、携帯電話、他のハンドヘルドコンピューティングデバイス、医療機器、有線または無線通信デバイス装置、トランスデューサ、チップ、計算機、サテライト、タブレットＰＣ、電子ブック、ガジェット、電子デバイス、人工知能を有するデバイス、コンピューティングデバイス、ネットワーキング装置、サーバ、ルータ等が挙げられ得るが、それらに限定され得ない。さらにまた、フローチャートおよびブロック線図で描写される要素、または任意の他の論理的構成要素は、プログラム命令を実行することができるマシン上に実現され得る。したがって、先の図面および記述は、開示されるシステムの機能面を説明するが、明確に述べられていない限り、または別様に文脈から明らかでない限り、これらの機能面を実現するためのいかなるソフトウェアの特定の構成も、これらの説明から推論すべきでない。同様に、上で識別され、説明される種々のステップが変動し得ること、およびステップの順序が、本明細書で開示される技術の特定の応用に適合され得ることが認識されるであろう。全てのそのような変形および修正は、本開示の範囲内であることが意図される。このように、特定の応用によって必要とされない限り、または明確に述べられてない限り、または別様に文脈から明らかでない限り、種々のステップに関する順序の描写および／または説明は、それらのステップについて特定の実行順序を必要とすると理解すべきでない。
【０１５１】
上で説明される方法および／またはプロセス、ならびにそれらと関連付けられるステップは、ハードウェア、ソフトウェア、あるいは特定の応用に好適なハードウェアおよびソフトウェアの任意の組み合わせで実現され得る。ハードウェアは、汎用コンピュータ、および／または専用のコンピューティングデバイスもしくは特定のコンピューティングデバイス、または特定のコンピューティングデバイスの特定の態様または構成要素を含み得る。プロセスは、内部および／または外部メモリとともに、１つ以上のマイクロプロセッサ、マイクロコントローラ、組み込み型マイクロコントローラ、プログラム可能なデジタル信号プロセッサ、または他のプログラム可能なデバイスで実現され得る。プロセスはまた、または代わりに、特定用途向け集積回路、プログラマブルゲートアレイ、プログラマブルアレイ論理、または電子信号を処理するように構成され得る任意の他のデバイスもしくはデバイスの組み合わせで具現化され得る。プロセスの１つ以上は、機械読み出し可能な媒体上で実行することができるコンピュータ実行可能なコードとして実現され得ることがさらに認識されるであろう。
【０１５２】
コンピュータ実行可能なコードは、上のデバイス、ならびにプロセッサの異種組み合わせ、プロセッサアーキテクチャ、または異なるハードウェアおよびソフトウェアの組み合わせ、またはプログラム命令を実行することができる任意の他のマシン、のうちの１つで記憶されるか、コンパイルされるか、翻訳され得る、Ｃ等の構造化プログラミング言語、Ｃ＋＋等のオブジェクト指向プログラミング言語、または任意の他の高水準もしくは低水準プログラミング言語（アセンブリ言語、ハードウェア記述言語、およびデータベースプログラミング言語、ならびに技術を含む）を使用して作成され得る。
【０１５３】
したがって、一態様において、上で説明される方法およびその組み合わせは、１つ以上のコンピューティングデバイス上で実行するときにそのステップを行う、コンピュータ実行可能なコードに具現化され得る。別の態様において、本方法は、そのステップを行うシステムに具現化され得、いくつかの方法でデバイス全体にわたって分散され得、または機能の全てが、専用でスタンドアロンのデバイスもしくは他のハードウェアに統合され得る。別の態様において、上で説明されるプロセスに関連付けられるステップを行うための手段は、上で説明されるハードウェアおよび／またはソフトウェアのいずれかを含み得る。全てのそのような順列および組み合わせは、本開示の範囲内であることが意図される。
【０１５４】
本開示は、詳細に図示および説明される好ましい実施形態に関連して開示されているが、それに対する種々の修正および改良は、当業者には容易に明らかになるであろう。故に、本開示の趣旨および範囲は、先の実施例によって限定されるものではなく、法律によって許容される最も広い意味で理解されるべきである。
【０１５５】
本開示を説明する文脈での（特に、以下の特許請求の範囲の文脈での）「ａ」および「ａｎ」および「ｔｈｅ」という用語、ならびに類似の指示対象は、本明細書で別途指示されていない限り、または文脈によって明らかに矛盾しない限り、単数および複数の双方を包含するものと解釈されたい。「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「含有する（ｃｏｎｔａｉｎｉｎｇ）」という用語は、別途注記のない限り、開放型の用語（すなわち、「含むが、それに限定されない」ことを意味する）として解釈されたい。本明細書での値の範囲の列挙は、本明細書で別途指示されない限り、単に、その範囲内に入るそれぞれの値を個々に参照する簡単な方法としての役割を果たすように意図されたものであり、それぞれの値は、本明細書で個々に列挙されているかのように、本明細書に組み込まれる。本明細書で説明される全ての方法は、本明細書で別途指示されない限り、または文脈によって明らかに矛盾しない限り、任意の好適な順序で行うことができる。本明細書で提供される任意のおよび全ての例、または例示的な言葉（例えば「等（ｓｕｃｈ  ａｓ）」は、単に、本開示をより明確にすることを意図しているに過ぎず、別途特許請求されていない限り、本開示の範囲を限定するものではない。明細書の中のいかなる言葉も、特許請求されていない何らかの要素が本開示の実践に必須であることを示すものではないと解釈されたい。
【０１５６】
上の説明文は、当業者が、現時点でその最良の形態であると考えられるものを作製し、使用することを可能にするが、当業者は、本明細書の具体的な実施形態、方法、および実施例の変形例、組み合わせ、および等価物が存在すること理解し、認識するであろう。したがって、本開示は、上で説明される実施形態、方法、および実施例によって限定されるものではなく、本開示の範囲および趣旨の範囲内の全ての実施形態および方法によって限定されるべきである。
【０１５７】
本明細書で参照される全ての文書は、参照により本明細書に組み込まれる。
【図１】
2015508540.tif 000003
【図２】
2015508540.tif 000004
【図３】
2015508540.tif 000005
【図４】
2015508540.tif 000006
【図５】
2015508540.tif 000007
【国際調査報告】
2015508540.tif 000008
2015508540.tif 000009
2015508540.tif 000010