添付の図面を参照して様々な態様について詳細に説明する。可能な場合はどこでも、同じ参照番号は、同じまたは同様の部分を指すように図面全体を通して使用される。特定の例および実装形態へと行われる言及は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
「モバイルコンピューティングデバイス」という用語は、本明細書において、携帯電話、スマートフォン、パーソナルまたはモバイルのマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応携帯電話、ワイヤレスゲームコントローラ、および、性能が重要であるメモリとプログラマブルプロセッサとを含み、節電方法が有益であるようなバッテリー電源で動作する同様のパーソナル電子デバイスのうちの、任意の1つまたはすべてを指すのに使われる。様々な態様は、限られたリソースを有しバッテリーで動作する、スマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの態様は一般に、プロセッサを含みアプリケーションプログラムを実行する、任意の電子デバイスにおいて有用である。
一般に、モバイルコンピューティングデバイスの性能および電力効率は、経時的に劣化する。近年、アンチウイルス会社(たとえば、McAfee、Symantecなど)は、この劣化を遅くすることを目的とするモバイル用アンチウイルス、ファイアウォール、および暗号化製品の販売を開始した。しかしながら、これらのソリューションの多くは、モバイルコンピューティングデバイス上で計算集約的なスキャニングエンジンの定期的な実行に依存しており、そのことが、モバイルコンピューティングデバイスの処理およびバッテリーリソースの多くを消費し、モバイルコンピューティングデバイスを遅くさせるか、もしくは長期間の間使えなくさせ、かつ/または場合によってはユーザ体験を劣化させる場合がある。加えて、これらのソリューションは、通常、知られているウイルスおよびマルウェアの検出に限定され、(たとえば、性能劣化がウイルスまたはマルウェアによって引き起こされないときに)経時的なモバイルコンピューティングデバイスの劣化にしばしば重なって寄与する、複数の複雑な要因および/または相互作用には対処しない。これら他の理由によって、既存のアンチウイルス、ファイアウォール、および暗号化製品は、経時的なモバイルコンピューティングデバイスの劣化に寄与し得る多数の要因を特定するための、モバイルコンピューティングデバイスの劣化を防止するための、または経年劣化したモバイルコンピューティングデバイスをその元の状態へと効率的に回復させるための、十分なソリューションを提供しない。
モバイルコンピューティングデバイスは、比較的限定された処理、メモリ、およびエネルギーのリソースを有する、リソースを制限されたシステムである。現代のモバイルコンピューティングデバイスはまた、モバイルコンピューティングデバイスの性能および電力利用レベルの経時的な劣化に寄与し得る、多種多様な要因を有する複雑なシステムである。性能劣化に寄与し得る要因の例は、設計が不十分なソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、およびバックグラウンドプロセスを含む。これらの要因の数、多様性、および複雑さに起因して、現代のモバイルコンピューティングデバイスの複雑でありながらリソースが制約されたシステムの性能および/または電力利用のレベルを劣化させる場合がある様々な構成要素、挙動、プロセス、動作、条件、状態、もしくは特徴(またはそれらの組合せ)のすべてを評価することは、しばしば実現可能ではない。したがって、ユーザ、オペレーティングシステム、またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)が、そのような問題の根源を正確かつ効率的に特定することは困難である。結果として、モバイルコンピューティングデバイスのユーザは現在、モバイルコンピューティングデバイスの性能および電力利用レベルの経時的な劣化を防止するための、または経年劣化したモバイルコンピューティングデバイスをその元の性能および電力利用レベルに回復させるための措置をほとんど有していない。
現在、コンピューティングデバイス上で実行するアプリケーションプログラムの挙動をモデル化するためのソリューションが存在し、これらのソリューションは、ソフトウェアアプリケーションが悪意があるか、それとも良性かを判定するための機械学習技法とともに使用され得る。しかしながら、これらのソリューションは、挙動情報の非常に大規模コーパスを評価することを必要とし、挙動モデルを動的に生成せず、挙動モデルの中の特徴を知的に優先順位付けず、個別のアプリケーションプログラムもしくはプロセスを評価することに限定され、かつ/またはモバイルコンピューティングデバイスにおける計算集約的なプロセスの実行を必要とするので、モバイルコンピューティングデバイス上での使用に適していない。したがって、モバイルコンピューティングデバイスにおいてこれらの既存のソリューションを実施または実行することは、モバイルコンピューティングデバイスの応答性、性能、または電力消費特性に対して、大きい悪影響および/またはユーザが知覚できる影響を及ぼし得る。
たとえば、コンピューティングデバイスは、既存の機械学習ベースのソリューションを使用して、トレーニングデータの大規模コーパスにアクセスして使用し、入力として特徴ベクトルを用いるモデルを導出し、このモデルを使用してコンピューティングデバイスのソフトウェアアプリケーションが悪意があるか、それとも良性かを判定するように構成され得る。しかしながら、そのようなソリューションは、リーン分類器モデルを迅速に生成するためにモバイルコンピューティングデバイスによって使用され得るフォーマットまたは情報構造(たとえば、有限状態機械など)で挙動情報の大規模コーパスを記述する、フル分類器モデル(すなわち、ロバストなデータモデルまたは挙動モデル)を生成しない。少なくともこの理由のため、そのようなソリューションは、モバイルコンピューティングデバイスが、モバイルコンピューティングデバイスの性能および/または動作に特に関連する特徴を含み、テストし、または考慮するリーン分類器モデルを生成できるようにしない。加えて、このソリューションは、モバイルコンピューティングデバイスが、モデルが使用される特定のモバイルコンピューティングデバイス内の特定の挙動を分類することに対する特徴の関連性に従って、特徴を知的に識別し優先順位を付けるリーン分類器モデルを生成できるようにしない。これら他の理由のために、そのようなソリューションは、モバイルコンピューティングデバイスの応答性、性能、または電力消費特性に対して大きい悪影響および/またはユーザが知覚できる影響を有することなく、複雑なモバイルコンピューティングデバイスの挙動を迅速かつ効率的に識別、分析、または分類するために、モバイルコンピューティングデバイスのプロセッサによって使用することができない。
さらに、現代のモバイルコンピューティングデバイスは高度に構成可能であり複雑なシステムなので、特定のモバイルコンピューティングデバイスの挙動が良性かそれとも非良性である/望ましくない(たとえば、悪意のある、または性能を劣化させる)か判定するために最も重要である特徴は、各モバイルコンピューティングデバイスにおいて異なり得る。さらに、特徴の異なる組合せは、特定の挙動が良性かそれとも良性ではないかをそのモバイルコンピューティングデバイスが迅速かつ効率的に判定するために、各モバイルコンピューティングデバイスにおける監視および/または分析を必要とすることがある。しかし、監視および分析を必要とする特徴の厳密な組合せ、ならびに各特徴または特徴の組合せの相対的な優先順位または重要性は、しばしば、挙動が監視または分析されるべき特定のモバイルコンピューティングデバイスから取得されたデバイス固有の情報を使用するときだけ判定することができる。これら他の理由のために、それらが使用される特定のデバイス以外の任意のコンピューティングデバイス内で生成された挙動モデルは、そのデバイス内の挙動を分類することに対して最も重要である特徴の厳密な組合せを識別する情報を含むことができない。
さらに、モバイルコンピューティングデバイスは、1つまたは複数の周辺デバイスに接続することによって、追加特徴、能力、機能性などへのアクセスを得るか、または受け取ることもできる。たとえば、周辺デバイスに接続されたモバイルコンピューティングデバイスは、拡張能力(たとえば、Bluetooth(登録商標)スピーカを通してリモートにオーディオを再生するための技能)または周辺デバイスの態様を制御するための技能(たとえば、スマートTV周辺デバイスにおいてチャネルを変えるための技能)を有し得る。したがって、モバイルコンピューティングデバイス上に存在するか、またはモバイルコンピューティングデバイス上にとって利用可能な機能性および能力は、モバイルコンピューティングデバイスが周辺デバイスに接続する(またはそこから切断する)と大きく迅速に変わる場合があり、そうすることによって、モバイルコンピューティングデバイス上での悪意のある、または性能を劣化させる活動の検出に関連し得る、モバイルコンピューティングデバイス上で起こる挙動および活動の範囲を拡大する(または狭める)可能性がある。
たとえば、モバイルコンピューティングデバイスが、金融取引を認証する際に使用するための生体センサ(たとえば、指紋リーダ、網膜スキャナなど)を含む周辺デバイスに接続した場合、生体センサのアクセスおよび使用に関する、モバイルコンピューティングデバイス上での条件をテストする特徴は、金融ソフトウェアへのアクセスに関係する、モバイルコンピューティングデバイス上での観察された挙動が、悪意があるか、性能を劣化させるか、それとも良性であるかの判定に関連する見込みが高い。たとえば、モバイルコンピューティングデバイスによる、周辺デバイス上の生体センサのアクセスおよび使用のパターンは、モバイルコンピューティングデバイス上の悪意のあるアプリケーションが、ユーザが知ることも同意することもなく、生体センサ周辺デバイスから受信された、記憶された生体データを使う金融取引を認証していることを示す場合がある。一方、これらのセンサのアクセスおよび使用に関する条件をテストする特徴は、モバイルコンピューティングデバイスがもはや金融取引を認証するための生体センサへのアクセスを有し得ないので周辺デバイスがモバイルコンピューティングデバイスに接続されていないとき、金融ソフトウェアにアクセスする観察された挙動が、悪意があるか、それとも良性であるかの判定に関連する見込みが高くない。
多くの現在の挙動モデル化ソリューションは、コンピューティングデバイスの挙動をモデル化することに対して「フリーサイズ(one-size-fits-all)」静的手法を実装しており、したがってモバイルコンピューティングデバイスにおいて使用するのに適していない。すなわち、これらのソリューションは、通常、一般的であるように、かつ多くのコンピューティングデバイスならびに/または多種多様なハードウェア構成およびソフトウェア構成で使用され得るように、挙動モデルを生成する。したがって、これらの一般的な挙動モデルは、しばしば、非常に多数の特徴を含み/テストし、特徴のうちの多くは、実際に使用される特定のコンピューティングデバイス内の挙動を識別、分析、または分類することに関係しない(かつ、したがって使用することができない)。加えて、これらのソリューションは、モデルが使用される特定のモバイルコンピューティングデバイスにおける特定の挙動を分類することに対する関連性に基づいて、特徴に相対的な優先順位を割り当てない。さらに、そのようなソリューションは、周辺デバイスがアドオンであり、後から開発されたハードウェアであり得るので、周辺デバイスの挙動にも、コンピューティングデバイスに対する周辺デバイスの影響にも対処することができない。したがって、これらのソリューションは、通常、多数の組織的ではない、不適切に優先順位を付けられた、または無関係な特徴を含む挙動モデルをコンピューティングデバイスが適用することを必要とする。そのようなモデルは、モバイルコンピューティングデバイスの経時的な劣化の原因または根源を特定するために有用ではない多数の特徴をモバイルコンピューティングデバイスのプロセッサに分析させ得るので、リソースが制限されたモバイルコンピューティングデバイスにおいて使用するのに適していない。したがって、これらの既存ソリューションは、周辺デバイスに接続することによってモバイルコンピューティングデバイスの、能力/機能性を変えるための技能を特に鑑みると、複雑であるがリソースが制約されたモバイルコンピューティングデバイスにおける使用に適さない。
いくつかの現代のソリューションは、周辺デバイスの走査を実施することによって、またはウイルス、マルウェアなどについて周辺デバイスから照会された情報を分析することによって、周辺デバイス上で起こる悪意のある活動を検出しようと試みる。ただし、これらのソリューションは、周辺デバイスによって引き起こされる、モバイルコンピューティングデバイス上での悪意のあるおよび/または性能を劣化させる挙動を検出するための機構も提供せず、これらのソリューションは、モバイルコンピューティングデバイスによって引き起こされる、周辺デバイス上での様々なタイプの望ましくない挙動を予想し、監視し、または挙動から保護することもない。
したがって、現在のソリューションは、モバイルコンピューティングデバイスが1つまたは複数の周辺デバイスに接続したときに起こり得る、モバイルコンピューティングデバイスの特徴、能力、および/または機能性における変化を予想も考慮もしない。具体的には、現在のソリューションは、周辺デバイスのアクセスおよび使用に関する、モバイルコンピューティングデバイス上での特徴を正確に識別するとは限らない、モバイルコンピューティングデバイスについての一般的挙動モデルを生成するので、および現在のソリューションは、周辺デバイス上での悪意のある活動を検出することにのみ焦点を当てているので、これらのソリューションは、モバイルコンピューティングデバイスに接続され、それらとともに使われ得る数千の異なる種類の周辺デバイスのうちのいずれかにモバイルコンピューティングデバイスが接続したことから生じ得る、モバイルコンピューティングデバイス上での複雑な条件または特徴をテストする挙動モデルを生成するのには不適切である。
概して、様々な態様は、モバイルコンピューティングデバイスに接続された1つまたは複数の周辺デバイスに関係し、経時的にモバイルコンピューティングデバイスの性能および/または電力利用レベルをしばしば劣化させる、モバイルコンピューティングデバイス上で起こる条件および/または挙動を効率的に識別し、分類し、モデル化し、防止し、かつ/または訂正するようにモバイルコンピューティングデバイスを構成することによって、現在のソリューションのこれらの制限を克服する。様々な態様において、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスに接続された1つまたは複数の周辺デバイスに関係する様々な条件、特徴、挙動および訂正アクションを含む分類器モデルを取得することができ、1つまたは複数の接続された周辺デバイスに関係する、モバイルコンピューティングデバイス上で起こる望ましくない挙動(たとえば、悪意のある挙動、性能を劣化させる挙動、および/または望まれないか、もしくは有害な影響を生じる他の任意の挙動)を迅速に識別し、修正するのに分類器モデルを使用することができる。
様々な態様において、モバイルコンピューティングデバイスは、周辺デバイスが、モバイルコンピューティングデバイス上で望ましくない挙動(たとえば、誤動作している周辺デバイスから受信され、モバイルコンピューティングデバイス上で実行される、性能を劣化させる命令)を起こさせているかどうか、モバイルコンピューティングデバイス上での望ましくない挙動(たとえば、悪意のある命令を周辺デバイスに送る、モバイルコンピューティングデバイス上で動作している悪意のあるアプリケーション)が周辺デバイスに対して悪影響を及ぼしているかどうか、および/または1つもしくは複数の周辺デバイスとモバイルコンピューティングデバイスの複合活動が集合的に、モバイルコンピューティングデバイス上で望ましくない挙動を起こさせているかどうか判定するために、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴の挙動をテストするための分類器モデルを使うことができる。
一態様では、分類器モデル(たとえば、フルまたはリーン分類器モデル)は、挙動情報の大規模コーパスの有限状態機械の記述または表現であり得る。有限状態機械は、周辺デバイスに関係する、モバイルコンピューティングデバイス上での1つまたは複数の特徴を各々が組み込む複数のノード、ブーストされた決定木、または決定株としての表現に適した情報を含むことができる。たとえば、有限状態機械は、ブーストされた決定株のファミリーとして表すことができるとともに、集合的に、接続された周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動が、良性か、悪意があるか、それとも経時的なモバイルコンピューティングデバイスの性能の劣化に寄与している(すなわち、性能を劣化させる)かの判定に関連する特徴およびデータ点のすべてまたは多くを識別し、記述し、テストし、または評価する情報構造であってよい。
一態様では、サーバが、フル分類器モデル(すなわち、有限状態機械および/またはブーストされた決定株のファミリーなどを含む情報構造)をモバイルコンピューティングデバイスに送ることができる。モバイルコンピューティングデバイスは、リーン分類器モデルまたは変化するレベルの複雑さ(もしくは「リーン性」)のリーン分類器モデルのファミリーを生成するためにフル分類器モデルを受信して使用するように構成され得る。これを遂行するために、モバイルコンピューティングデバイスは、サーバから受信されたフル分類器モデルに含まれる、ブーストされた決定木のロバストなファミリーを剪定または選別して、減少された数のブーストされた決定木を含むリーン分類器モデルを生成し、かつ/またはモバイルコンピューティングデバイスに接続された1つもしくは複数の周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴を含む限られた数のテスト条件もしくは特徴を評価すればよい。モバイルコンピューティングデバイスは次いで、これらのローカルに生成されたリーン分類器モデルを使って、リアルタイムの挙動監視および分析動作を実施し、モバイルコンピューティングデバイスに接続された1つまたは複数の周辺デバイスに関係する、望ましくない(たとえば、悪意のある、または性能を劣化させる)モバイルコンピューティングデバイス挙動の根源または原因を識別すればよい。
修正され、選別され、拡張され、または場合によってはリーン分類器モデルを生成するために使用され得る、有限状態機械、決定ノード、決定木、または他の同様の情報構造として、挙動情報の大規模コーパスを記述または表現するフル分類器モデルを使用することによって、モバイルコンピューティングデバイスは、トレーニングデータにアクセスすることなく、またはサーバ、中央データベース、もしくはクラウドネットワーク/サーバとさらに通信することなく、リーン分類器モデルを迅速かつ効率的に生成することが可能であり得る。これにより、モバイルコンピューティングデバイスのネットワークに対する依存性が著しく低減され、モバイルコンピューティングデバイスの性能および電力消費特性が向上する。
モバイルコンピューティングデバイスに接続された1つまたは複数の周辺デバイスに関係する特徴を考慮するように、モバイルコンピューティングデバイスにおいてローカルにリーン分類器モデルを生成することによって、様々な態様は、モバイルコンピューティングデバイスが、その監視動作を、1つまたは複数の接続された周辺デバイスに関係する、悪意のあるまたは性能を劣化させるモバイルコンピューティングデバイス挙動の根源または原因を識別するために最も重要な特徴または要因に集中させることができるようにする。こうすることにより、モバイルコンピューティングデバイスは、望ましくない挙動、たとえば、周辺デバイスによって引き起こされる、モバイルコンピューティングデバイス上での性能を劣化させる挙動、周辺デバイス上で性能劣化を引き起こす、モバイルコンピューティングデバイス上での悪意のある挙動、および/またはモバイルコンピューティングデバイスと周辺デバイスの両方によって引き起こされる、モバイルコンピューティングデバイス上での他の劣化性挙動を、モバイルコンピューティングデバイスの応答性、性能、または電力消費特性における、かなり悪い、またはユーザが知覚可能な変化を引き起こさずに、識別し、応答することができる。
様々な態様は、モバイルコンピューティングデバイスの性能および/または電力利用レベルを経時的にしばしば劣化させる条件、要因、および/または挙動を知的および効率的に識別し、防止し、かつ/または訂正するための包括的な挙動監視および分析システムを含み得る。一態様では、モバイルコンピューティングデバイスの挙動観察器ユニット、プロセス、デーモン、モジュール、またはサブシステム(本明細書では総称的に「モジュール」または「ユニット」と呼ぶ)が、モバイルコンピューティングデバイスシステムの様々なレベルでの様々なアプリケーションプログラミングインターフェース(API)、レジスタ、カウンタ、または他の構成要素(本明細書では総称的に「計装された構成要素」と呼ぶ)を計装するかまたは連携させることができる。観察器モジュールは、モバイルコンピューティングデバイスから、および随意には1つまたは複数の周辺デバイスから挙動情報を収集することによって、モバイルコンピューティングデバイスに接続された1つまたは複数の周辺デバイスに関係するモバイルコンピューティングデバイス挙動を連続的に(またはほぼ連続的に)監視することができる。別の態様では、モバイルコンピューティングデバイスに接続された周辺デバイスは、周辺デバイス上での挙動を監視するように構成された挙動観察器ユニットも含むことができ、それらの観察結果を、周辺デバイスに関係するモバイルコンピューティングデバイス挙動を分析し、分類する際に使用するためにモバイルコンピューティングデバイスに報告することができる。
モバイルコンピューティングデバイスは挙動分析器ユニットを含むことができ、モバイルコンピューティングデバイス上および/またはモバイルコンピューティングデバイスに接続された1つもしくは複数の周辺デバイス上の観察器モジュールは、収集された挙動情報を挙動分析器ユニットに(たとえば、メモリ書込み動作、関数呼出しなどにより)通信することができる。挙動分析器ユニットは、挙動情報を受信し使用して挙動ベクトルを生成し、挙動ベクトルに基づいて空間的および/または時間的な相関関係を生成し、周辺デバイスに関係するモバイルコンピューティングデバイス上の特定の挙動、条件、サブシステム、ソフトウェアアプリケーション、またはプロセスが、良性か、疑わしいか、それとも良性ではない/望ましくない(すなわち、悪意のあるまたは性能を劣化させる)か判定することができる。モバイルコンピューティングデバイスは次いで、この分析の結果を使って、たとえば周辺デバイス上で悪意のある挙動を起こさせているモバイルコンピューティングデバイス上で動作しているマルウェアアプリケーションを終了させることによって、1つまたは複数の周辺デバイスに関係する、モバイルコンピューティングデバイス上での識別された問題を修復し、回復し、分離し、または場合によっては解決し、もしくはそれに応答することができる。
挙動分析器ユニットはまた、リアルタイムの挙動分析動作を実施するように構成されてよく、リアルタイムの挙動分析動作は、データ、アルゴリズム、分類器またはモデル(本明細書では総称的に「分類器モデル」と呼ばれる)を収集された挙動情報に対して実施、実行、および/または適用して、モバイルコンピューティングデバイスに接続された周辺デバイスに関係するモバイルコンピューティングデバイス上での挙動が良性かそれとも良性ではない/望ましくない(たとえば、悪意のあるまたは性能を劣化させる)か判定することを含み得る。各分類器モデルは、モバイルコンピューティングデバイスに接続された周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動の特定の特徴または態様を評価するために、モバイルコンピューティングデバイスのプロセッサによって使用され得る、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リストなど)を含む挙動モデルであり得る。各分類器モデルはまた、モバイルコンピューティングデバイス内のいくつかの特徴、要因、データ点、エントリ、API、状態、条件、挙動、アプリケーション、プロセス、動作、構成要素など(本明細書では総称的に「特徴」)を監視するための決定基準を含む場合がある。分類器モデルは、モバイルコンピューティングデバイス上で事前インストールされ、サーバからダウンロードもしくは受信され、1つもしくは複数の周辺デバイスから受信され、モバイルコンピューティングデバイスにおいて生成され、またはそれらのどの組合せでもよい。分類器モデルは、クラウドソーシングソリューション、挙動モデル化技法、機械学習アルゴリズムなどを使用することによって、生成される場合がある。
一態様では、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスにローカルに接続された周辺デバイスに関係する特徴をテスト/評価する分類器モデルを生成することができる。そのような態様において、モバイルコンピューティングデバイスは、これらの特徴を、モバイルコンピューティングデバイスが周辺デバイスと接続した後に得る拡張能力および/または機能性、たとえば、周辺デバイスを介してモバイルコンピューティングデバイスにとって利用可能な拡張能力(たとえば、クレジットカードリーダ周辺デバイスを使うことによってクレジットカード情報を読み取るための技能)および/または周辺デバイスを制御し、もしくは使うことに関係する、モバイルコンピューティングデバイス上での拡張能力(たとえば、スマートTVにおいてチャネルを変えるための技能)に基づいて識別することができる。
別の態様では、モバイルコンピューティングデバイスは、経時的な、周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動を観察すること、および起こることが予期される、モバイルコンピューティングデバイス上での1つまたは複数の挙動に基づいて、分類器モデルに含めるべき、周辺デバイスに関係する特徴のテスト/評価のセットを識別することによって、分類器モデルを生成することができる。さらなる態様では、これらの予期される挙動は、典型的なまたは良性の挙動を表す場合があり、したがって、将来、周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動を、良性であるか、または望ましくない(たとえば、悪意のある、もしくは性能を劣化させる)と分類するときの基準点として使うことができる。
別の態様では、モバイルコンピューティングデバイスは、接続された周辺デバイスを識別することができ、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴をテスト/評価する分類器モデルをサーバに対して要求してよい。たとえば、モバイルコンピューティングデバイスは、外部のBluetooth(登録商標)スピーカが取り付けられたことを検出することができ、スピーカに関係する特徴を考慮するためにサーバに対して分類器モデルを要求してよく、サーバから受信された分類器モデルを使用して、モバイルコンピューティングデバイスおよび/またはスピーカにおいて悪意のある挙動を引き起こし得る、スピーカに関係する、モバイルコンピューティングデバイス上での挙動を監視し始めることができる。
別の態様では、モバイルコンピューティングデバイスは、様々なモバイルコンピューティングデバイス用の特徴に対処する大規模またはフル分類器モデルをサーバから受信し得る。モバイルコンピューティングデバイス上で動作する挙動分析器ユニットおよび/または分類器ユニットは、フル分類器から、デバイス上での悪意のある挙動を監視するための関連特徴を含むリーン分類器モデルを生成することができる。モバイルコンピューティングデバイス上の挙動分析器ユニットは、リーン分類器モデルを識別し、モバイルコンピューティングデバイスに接続された周辺デバイスに関係すると判定された1つまたは複数の特徴向けのテスト/評価を含むように修正することもでき、そうすることによって、デバイス上の挙動観察器ユニットが、モバイルコンピューティングデバイスの性能に特に関連する、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴の挙動を観察し、分析し、分類することに集中することを可能にする。
さらなる態様において、挙動観察器ユニットを実行するモバイルコンピューティングデバイスプロセッサは、周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動を観察することができ、追加のコンテキスト挙動情報を、たとえばその目的のために構成された周辺デバイス上のAPIにより周辺デバイスから直接取り出すことができる。たとえば、挙動観察器ユニットは、自動車周辺デバイスについての診断情報(たとえば、速度、油量、温度など)に直接アクセスすることができる。挙動分析器ユニットおよび/または分類器ユニットを実行するモバイルコンピューティングデバイスプロセッサは、これらの観察結果(周辺デバイスから直接受信された情報を含む)を、挙動観察器ユニットを実行するモバイルコンピューティングデバイスプロセッサから受信することができ、これらの観察結果に基づいて、周辺デバイスに関係する、モバイルコンピューティングデバイス上での進行中の挙動を分類することができる。さらなる態様では、挙動分析器ユニット/分類器ユニットは、周辺デバイスの状態、構成、性能などに関する付加情報を提供し得る観察結果を、周辺デバイスに関係するモバイルコンピューティングデバイス上での挙動を分析/分類する際に使用するために、周辺デバイス上で動作する挙動観察器ユニットから随意に受信し得る。
別の態様では、モバイルコンピューティングデバイスは、周辺デバイスから関連挙動情報を直接取得することができない場合がある。そのような態様において、モバイルコンピューティングデバイス上の挙動観察器ユニットは、周辺デバイスの性能、構成、活動などに関する挙動情報を、周辺デバイスとモバイルコンピューティングデバイスとの間の様々な通信を観察することによって、および/またはモバイルコンピューティングデバイス上で周辺デバイスから受信された入力を監視することによって、間接的に取得することができる。たとえば、挙動観察器ユニットは、自動車周辺デバイスに、その速度を、所定の速度規制を超過して高めるよう命令する、モバイルコンピューティングデバイスから自動車周辺デバイスに送られるコマンドを観察すればよく、このコマンドは、モバイルコンピューティングデバイス上のプロセスが悪意のある活動を実施していることを示し得る。
様々な態様は、図1に示された例示的な通信システム100のような様々な通信システム内で実装され得る。典型的なセル電話ネットワーク104は、ネットワーク運用センタ108に結合された複数のセル基地局106を含み、ネットワーク運用センタ108は、電話陸上通信線(たとえば、図示されていないPOTSネットワーク)およびインターネット110などを介して、モバイルコンピューティングデバイス102、103(たとえば、携帯電話、ラップトップ、タブレットなど)と他のネットワーク宛先との間の音声通話およびデータを接続するように動作する。モバイルコンピューティングデバイス102、103と電話ネットワーク104との間の通信は、4G、3G、CDMA、TDMA、LTE、および/または他の携帯電話通信技術などの双方向ワイヤレス通信リンク112を介して遂行することができる。電話ネットワーク104はまた、インターネット110への接続を提供する、ネットワーク運用センタ108に結合されるかまたはネットワーク運用センタ108内にある、1つまたは複数のサーバ114を含み得る。
通信システム100はさらに、電話ネットワーク104およびインターネット110に接続されたサーバ116を含み得る。サーバ116と電話ネットワーク104との間の接続は、インターネット110を通じたものであるか、または(破線の矢印で示されたように)プライベートネットワークを通じたものであり得る。サーバ116は、クラウドサービスプロバイダネットワーク118のネットワークインフラストラクチャ内のサーバとして実装される場合もある。サーバ116とモバイルコンピューティングデバイス102、103との間の通信は、電話ネットワーク104、インターネット110、プライベートネットワーク(図示せず)、またはそれらの任意の組合せを介して実現することができる。
モバイルコンピューティングデバイス102、103は、1つまたは複数の周辺デバイスと通信し、接続し、かつ/または使用するように構成されてよく、周辺デバイスは、デジタルカメラ(たとえば、カメラ122a)、ユーザ入力デバイス(たとえば、ユニバーサルシリアルバス(USB)キーボード122b、Bluetooth(登録商標)マウス入力デバイスなど)、USBフラッシュドライブ、外部ハードドライブ、スマートテレビ(たとえば、スマートTV122e)、ウェアラブルデバイス(たとえば、スマートウォッチ122c)、自動車、他のモバイルコンピューティングデバイス(たとえば、ワイヤレスデータリンク124および/またはワイヤードデータリンク126を経由するモバイルコンピューティングデバイス102、103)などを含み得る。たとえば、モバイルコンピューティングデバイス102、103は、ワイヤレスデータリンク124を介して、および/またはワイヤードもしくは永続データリンク126を介して、周辺デバイス122a〜122eのうちの1つまたは複数に接続することができる。モバイルコンピューティングデバイス102、103は、周辺デバイスへの直接的な物理接続を通して、1つまたは複数の周辺デバイスと通信してもよい。たとえば、モバイルコンピューティングデバイス102は、クレジットカードリーダデバイス122d上のプラグがモバイルコンピューティングデバイス102のオーディオポートに挿入されると、クレジットカードリーダデバイス122d(たとえば、Square, Inc.によるSquare Reader(登録商標))と直接接続することができる。
サーバ116は、分類器モデル(たとえば、フルまたはリーン分類器)をモバイルコンピューティングデバイス102、103に送ることができ、これらのデバイスは、分類器モデルを受信し、1つまたは複数の周辺デバイス122a〜122eに関係する、疑わしい、悪意のある、または性能を劣化させるモバイルコンピューティングデバイス挙動、ソフトウェアアプリケーション、プロセスなどを識別するのに使うことができる。サーバ116はまた、周辺デバイス122a〜122eに関係するモバイルコンピューティングデバイス分類モデルを交換、更新、作成、および/または維持するために、分類情報およびモデル化情報をモバイルコンピューティングデバイス102、103に送ることができる。さらなる態様では、モバイルコンピューティングデバイス102、103は、収集された挙動の状態、分類、モデル化、成功率、および/または統計情報を使用して、モバイルコンピューティングデバイス102、103内の、1つまたは複数の周辺デバイスに関係する、さらにターゲットとされおよび/または縮小された特徴のサブセットを含むように分類器モデル(またはデータ/挙動モデル)を生成、更新または精細化するように構成され得る。
別の態様では、モバイルコンピューティングデバイス102、103は、サーバ116からフル分類器モデルを受信し、1つまたは複数の周辺デバイス122a〜122eに関係する、モバイルコンピューティングデバイス102、103上で起こる、疑わしい、悪意のある、または性能を劣化させるモバイルコンピューティングデバイス挙動、ソフトウェアアプリケーション、プロセスなどを識別する際の使用に適したリーン分類器モデルを生成するのに使うことができる。
図2Aは、特定のモバイルコンピューティングデバイス挙動、ソフトウェアアプリケーション、またはプロセスが、望ましくない(たとえば、悪意のある、および/または性能劣化させる)か、疑わしいか、それとも良性であるかを判定するように構成された、態様モバイルコンピューティングデバイス102における例示的な論理構成要素および情報フローを示す。図2Aに示された例では、モバイルコンピューティングデバイス102は、挙動観察器ユニット202と、挙動分析器ユニット204と、分類器ユニット208と、作動器ユニット210とを含む。一態様では、分類器ユニット208は、挙動分析器ユニット204の一部として実装される場合がある。一態様では、挙動分析器ユニット204は、1つまたは複数の分類器ユニット208を生成するように構成される場合があり、1つまたは複数の分類器ユニット208の各々は、1つまたは複数の分類器を含む場合がある。
ユニット202〜210の各々は、ソフトウェア、ハードウェア、またはそれらの任意の組合せに実装される場合がある。様々な態様では、ユニット202〜210は、オペレーティングシステムの部分内(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)、個別のプログラムもしくはアプリケーション内、専用のハードウェアバッファもしくはプロセッサ内、またはそれらの任意の組合せに実装される場合がある。一態様では、ユニット202〜210のうちの1つまたは複数は、モバイルコンピューティングデバイス102の1つまたは複数のプロセッサ上で実行するソフトウェア命令として実装される場合がある。
挙動観察器ユニット202は、モバイルコンピューティングデバイスの様々なレベル/ユニットでアプリケーションプログラミングインターフェース(API)を計装するかもしくは連携させ、計装されたAPIを介して様々なレベル/ユニットでモバイルコンピューティングデバイスの動作およびイベント(たとえば、システムイベント、状態変化など)を監視/観察し、観察された動作/イベントに関する情報を収集し、収集された情報を知的にフィルタ処理し、フィルタ処理された情報に基づいて1つもしくは複数の観察結果を生成し、生成された観察結果をメモリ内(たとえば、ログファイル内など)に記憶し、かつ/または、生成された観察結果を挙動分析器ユニット204に(たとえば、メモリ書込み、関数呼出しなどにより)送るように構成される場合がある。
挙動観察器ユニット202は、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、デバイス(センサデバイスを含む)の状態変化、ならびに他の同様のイベントに関する情報を収集することによって、モバイルコンピューティングデバイスの動作およびイベントを監視/観察することができる。挙動観察器ユニット202はまた、ファイルシステム活動を監視することができ、ファイルシステム活動には、ファイル名、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)を探索すること、ファイル(たとえば、exe、zipなどのタイプ)を作成または消去すること、ファイル読取り/書込み/シーク動作、ファイルパーミッションを変更することなどが含まれ得る。
挙動観察器ユニット202はまた、データネットワーク活動を監視することができ、データネットワーク活動には、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続数、通信の容量または周波数などが含まれ得る。挙動観察器ユニット202は、電話ネットワーク活動を監視することができ、監視は、送出され、受信され、または妨害された通話またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられた割増し料金の通話の数)を監視することを含む場合がある。
挙動観察器ユニット202はまた、システムリソースの使用状況を監視することができ、監視は、フォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含む場合がある。挙動観察器ユニット202は、ディスプレイがオンかオフか、デバイスがロックされているかアンロックされているか、バッテリーの残量、カメラの状態などの様々な要因を監視することを含む場合がある、モバイルコンピューティングデバイスの状態を監視することができる。挙動観察器ユニット202はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視することができる。
挙動観察器ユニット202はまた、1つまたは複数のハードウェア構成要素のドライバの統計データおよび/またはステータスを監視/観察することができ、ハードウェア構成要素には、カメラ、センサ、電子ディスプレイ、Wi-Fi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマ、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧レギュレータ、発振器、フェーズロックループ、周辺ブリッジ、ならびに、プロセッサ、およびモバイルコンピューティングデバイス上で動作するクライアントをサポートするために使用される他の同様の構成要素が含まれ得る。
挙動観察器ユニット202はまた、モバイルコンピューティングデバイスおよび/またはモバイルコンピューティングデバイスのサブシステムの状態またはステータスを示す、1つまたは複数のハードウェアカウンタを監視/観察することができる。ハードウェアカウンタは、モバイルコンピューティングデバイス中で起こるハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されたプロセッサ/コアの専用レジスタを含み得る。
挙動観察器ユニット202はまた、ソフトウェアアプリケーションのアクションまたは動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標)のApp Storeサーバ)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるモバイルコンピューティングデバイス情報、呼情報、テキストメッセージング情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージング情報(たとえば、ReceiveMMS)、ユーザアカウント情報、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth(登録商標)、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視/観察することができる。
挙動観察器ユニット202は、ボイスメールを含む通信(VoiceMailComm)、デバイス識別子を含む通信(DeviceIDComm)、ユーザアカウント情報を含む通信(UserAccountComm)、カレンダ情報を含む通信(CalendarComm)、位置情報を含む通信(LocationComm)、記録されたオーディオ情報を含む通信(RecordAudioComm)、加速度計情報を含む通信(AccelerometerComm)などを含む、モバイルコンピューティングデバイスの伝送または通信を監視/観察することができる。
挙動観察器ユニット202は、コンパス情報、モバイルコンピューティングデバイス設定、バッテリー寿命、ジャイロスコープ情報、圧力センサ、磁気センサ、スクリーン活動などの使用、およびそれらに対する更新/変更を監視/観察することができる。挙動観察器ユニット202は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーション更新などを監視/観察することができる。挙動観察器ユニット202は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関する条件またはイベントを監視/観察することができる。挙動観察器ユニット202は、パスワードのエントリなどのユーザ認証に関する条件またはイベントを監視/観察することができる。
挙動観察器ユニット202はまた、アプリケーションレベル、無線レベル、およびセンサレベルを含むモバイルコンピューティングデバイスの複数のレベルで、条件またはイベントを監視/観察することができる。アプリケーションレベルの観察には、顔認識ソフトウェアを介してユーザを観察すること、ソーシャルストリームを観察すること、ユーザによって入力された注釈を観察すること、PassBook/Google Wallet/Paypalの使用に関するイベントを観察することなどが含まれ得る。アプリケーションレベルの観察には、仮想プライベートネットワーク(VPN)の使用に関するイベント、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算用のデータのオフローディング、ビデオストリーミング、ユーザ活動なしでのカメラの使用、ユーザ活動なしでのマイクロフォンの使用などに関するイベントを観察することも含まれ得る。
無線レベルの観察は、無線通信リンクを確立するかまたは情報を送信する前のモバイルコンピューティングデバイスとのユーザの対話、二重/多重の加入者識別ユニット(SIM)カード、インターネット無線、携帯電話テザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルコンピューティングデバイスの同期などのいずれかまたは複数の存在、実在、または量を判定することを含み得る。無線レベルの観察には、位置決め、ピアツーピア(p2p)通信、同期、車両間通信、および/または機械間(m2m)通信のための無線(WiFi、WiMax、Bluetooth(登録商標)など)の使用を監視することも含まれ得る。無線レベルの観察には、ネットワークトラフィックの使用、統計データ、またはプロファイルを監視することがさらに含まれ得る。
センサレベルの観察には、モバイルコンピューティングデバイスの使用環境および/または外部環境を決定するために、磁気センサまたは他のセンサを監視することが含まれ得る。たとえば、モバイルコンピューティングデバイスプロセッサは、電話が(たとえば、ホルスタ内の磁石を検知するように構成された磁石センサを介して)ホルスタ内にあるか、それとも(たとえば、カメラもしくは光センサによって検出される光の量を介して)ユーザのポケット内にあるかを判定するように構成される場合がある。たとえば、モバイルコンピューティングデバイスがホルスタに入れられている間に起こる、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声通話を行うこと、音を録音することなど)に関する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行している不正なプロセスのサインである可能性があるので、モバイルコンピューティングデバイスがホルスタ内にあることを検出することは、疑わしい挙動を認識することに関係する場合がある。
使用環境または外部環境に関するセンサレベルの観察の他の例は、近距離場通信(NFC)を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダから情報を収集すること、ユニバーサルシリアルバス(USB)電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルコンピューティングデバイスに結合されていることを検出すること、モバイルコンピューティングデバイスが(たとえば、USBなどを介して)周辺デバイスに結合されていることを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または(たとえば、緊急シグナリングアプリケーションなどを、悪意をもって無効にして)無効化されているかどうかを判定すること、スピーカまたはマイクロフォンがオンであるかまたは電源がついていることを検出すること、充電または電力供給事象を検出すること、モバイルコンピューティングデバイスがゲームコントローラとして使用されていることを検出することなどを含み得る。センサレベルの観察には、医療もしくはヘルスケアのセンサから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサから情報を収集すること、(たとえば、振動インターフェースなどを介して)触知センサまたは触覚センサから情報を収集すること、モバイルコンピューティングデバイスの熱状態に関する情報を収集することなども含まれ得る。
監視される要因の数を管理可能レベルまで削減するために、一態様では、挙動観察器ユニット202は、モバイルコンピューティングデバイスの劣化に寄与する可能性があるすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観察することによって、粗い観察を実施することができる。一態様では、挙動観察器ユニット202は、サーバ116および/またはクラウドサービスもしくはネットワーク118内の構成要素から、挙動および/または要因の初期セットを受信することができる。一態様では、挙動/要因の初期セットは、サーバ116またはクラウドサービス/ネットワーク118から受信されたデータ/挙動モデル内で指定される場合がある。一態様では、挙動/要因の初期セットは、縮小された特徴モデル(RFM)内で指定される場合がある。
挙動分析器ユニット204および/または分類器ユニット208は、挙動観察器ユニット202から観察結果を受信し、受信された情報(すなわち、観察結果)を外部ユニットから受信されたコンテキスト情報と比較し、経時的なデバイスの劣化に寄与する(もしくは寄与する可能性がある)か、または場合によってはデバイスに問題を引き起こす可能性がある、受信された観察結果に関連付けられたサブシステム、プロセス、および/またはアプリケーションを識別することができる。
一態様では、挙動分析器ユニット204および/または分類器ユニット208は、経時的なデバイスの劣化に寄与する(もしくは寄与する可能性がある)か、または場合によってはデバイスに問題を引き起こす可能性がある、挙動、プロセス、またはプログラムを識別するために、情報の限定されたセット(すなわち、粗い観察結果)を利用するための知能を含む場合がある。たとえば、挙動分析器ユニット204は、様々なユニット(たとえば、挙動観察器ユニット202、外部ユニットなど)から収集された(たとえば、観察結果の形の)情報を分析し、モバイルコンピューティングデバイスの正常動作の挙動を学習し、比較の結果に基づいて1つまたは複数の挙動ベクトルを生成するように構成される場合がある。挙動分析器ユニット204は、さらなる分析のために、生成された挙動ベクトルを分類器ユニット208に送ることができる。
分類器ユニット208は、挙動ベクトルを受信し、それらを1つまたは複数の挙動単位と比較して、特定のモバイルコンピューティングデバイスの挙動、ソフトウェアアプリケーション、またはプロセスが望ましくない(たとえば、性能を劣化させ、および/もしくは悪意がある)か、良性であるか、それとも疑わしいか判定することができる。
挙動、ソフトウェアアプリケーション、またはプロセスが悪意があるかまたは性能を劣化させると分類器ユニット208が判定したことに応答して、分類器ユニット208は作動器ユニット210に通知することができ、作動器ユニット210は、悪意があるか、もしくは性能を劣化させると判定されたモバイルコンピューティングデバイスの挙動を訂正するために様々なアクションもしくは動作を実施し、かつ/または識別された問題を修復し、回復し、分離し、もしくは場合によっては解決する動作を実施することができる。
挙動、ソフトウェアアプリケーション、またはプロセスが疑わしいと分類器ユニット208が判定したことに応答して、分類器ユニット208は挙動観察器ユニット202に通知することができ、挙動観察器ユニット202は、その観察の細分性(すなわち、モバイルコンピューティングデバイスの挙動が観察される詳細さのレベル)を調整し、かつ/または、分類器ユニット208から受信された情報(たとえば、リアルタイムの分析動作の結果)に基づいて観察される挙動を変更し、新しいまたは追加の挙動情報を生成または収集し、さらなる分析/分類のために新しい/追加の情報を挙動分析器ユニット204および/または分類器ユニット208へ送信することができる。挙動観察器ユニット202と分類器ユニット208との間のそのようなフィードバック通信により、疑わしいかもしくは性能を劣化させるモバイルコンピューティングデバイスの挙動の根源が特定されるまで、処理もしくはバッテリー消費の閾値に到達するまで、または、観察の細分性のさらなる向上によっても疑わしいかまたは性能を劣化させるモバイルコンピューティングデバイスの挙動の根源が特定され得ないとモバイルコンピューティングデバイスのプロセッサが判定するまで、モバイルコンピューティングデバイス102が繰り返し、観察の細分性を向上させる(すなわち、より微細にまたはより詳細に観察する)こと、または観察される特徴/挙動を変更することが可能になる。そのようなフィードバック通信により、モバイルコンピューティングデバイス102が、モバイルコンピューティングデバイスの過剰な量の処理、メモリ、またはエネルギーのリソースを消費することなく、モバイルコンピューティングデバイスにおいてローカルにデータ/挙動モデルを調整または修正することも可能になる。
一態様では、挙動観察器ユニット202および挙動分析器ユニット204は、限られた粗い観察結果から疑わしい挙動を識別するため、挙動を動的に判定してより詳細に観察するため、および観察のために必要な詳細さのレベルを動的に判定するために、コンピューティングシステムの挙動のリアルタイムの挙動分析を個別にまたは集合的に提供することができる。このようにして、挙動観察器ユニット202は、デバイス上のプロセッサ、メモリ、またはバッテリーの大量のリソースを必要とすることなく、モバイルコンピューティングデバイス102が問題を効率的に特定し、モバイルコンピューティングデバイス上で問題が起こるのを防止することを可能にする。
図2Bは、1つまたは複数の周辺デバイス222a〜222cと通信する態様モバイルコンピューティングデバイス102を含むシステム内の例示的な論理構成要素および情報フローを示す。図2Aを参照して上述したように、モバイルコンピューティングデバイス102は、モバイルコンピューティングデバイス102上での特定のモバイルコンピューティングデバイス挙動、ソフトウェアアプリケーション、またはプロセスが望ましくない(たとえば、悪意がある、および/または性能を劣化させる)か、疑わしいか、それとも良性であるか判定するように構成され得る。
上述したように、モバイルコンピューティングデバイス102は、1つまたは複数の周辺デバイス222a〜222cに接続することによって、追加または拡張機能性/特徴/能力を得ることができる。たとえば、周辺デバイス222a(たとえば、クレジットカードリーダデバイス)がモバイルコンピューティングデバイス102に直接挿入されると、モバイルコンピューティングデバイス102は、クレジットカードからクレジットカード情報を読み取る技能、およびクレジットカード情報をサードパーティ金融機関に転送することによってクレジットカード取引を容易にする技能を得ることができる。
したがって、さらなる態様において、1つまたは複数の周辺デバイス222a〜222cに接続すると、モバイルコンピューティングデバイス102の能力を拡張し、かつ/またはモバイルコンピューティングデバイス102が周辺デバイス222a〜222cを制御することを可能にすることができるので、モバイルコンピューティングデバイス102上で動作する挙動観察器ユニット202は、これらの拡張能力に関係する、モバイルコンピューティングデバイス102上での特徴/挙動を監視/観察し始めて、モバイルコンピューティングデバイス102上で起こるこれらの挙動が安全であり、悪意もなく、性能も劣化させないことを保証するように構成されてよい。上記例において、挙動観察器ユニット202は、クレジットカードリーダデバイスにおいてクレジットカードから番号を読み取り、クレジットカード番号を処理のためにSquare Inc.(登録商標)ウェブサイトに送ることに関係する、モバイルコンピューティングデバイス102上での挙動を監視し始めるように構成されてよい。
別の例では、モバイルコンピューティングデバイス102は、周辺デバイス222b(たとえば、スマートTV)に接続されてよく、モバイルコンピューティングデバイス102上で実行するスマートTVアプリケーションを使って周辺デバイス222b上でチャネルをリモートに変える技能など、周辺デバイス222bに関して追加能力を得ることができる。この例では、挙動観察器ユニット202は、周辺デバイス222bを制御および/または通信することに関係する、モバイルコンピューティングデバイス上での挙動を監視して、モバイルコンピューティングデバイス102上で動作しているアプリケーションまたはプロセスが、周辺デバイス222bに望ましくない挙動を経験させて(たとえば、スマートTVに、望まれない広告を表示させて)いないことを保証することができる。
一態様では、挙動観察器ユニット202は、挙動観察を行い、かつ/または周辺デバイス222a〜222cによって与えられたAPIにより、1つもしくは複数の周辺デバイス222a〜222cに関係する情報を取得することができる。たとえば、APIは、モバイルコンピューティングデバイス102上で(たとえば、インターネットからのダウンロードにより、または周辺デバイスからの直接インストールにより)受信される、周辺デバイス222a向けのアプリケーションにおいて提供され得る。APIは、挙動観察器ユニット202が、周辺デバイス222a〜222cに関係する、モバイルコンピューティングデバイス上で起こる挙動を分析/分類する際に有用であり得る付加情報を直接集めることを可能にし得る。したがって、専用APIを使うことによって、挙動観察器ユニット202は、周辺デバイスに関係する広範な情報を、モバイルコンピューティングデバイス102上での望ましくない挙動(たとえば、悪意のある挙動および/または性能を劣化させる挙動)を検出する際に使用するために集めることが可能であり得る。
別の態様では、1つまたは複数の周辺デバイス222a〜222cは各々、モバイルコンピューティングデバイス上で動作する挙動観察器ユニット202と実質的に同様に機能するように構成され得る挙動観察器ユニット(たとえば、挙動観察器224a〜224c)を随意に含み得る。したがって、挙動観察器224a〜224cは、周辺デバイス上で起こる様々な挙動、プロセス、通信などを監視するように構成されてよく、それらの観察結果を、モバイルコンピューティングデバイス102上の挙動観察器ユニット202に送るように構成されてよい。たとえば、挙動観察器224a〜224cは、それぞれの周辺デバイス222a〜222c上のAPIまたは他の構成要素を使用して、周辺デバイス222a〜222cに関係する、モバイルコンピューティングデバイス102上での挙動を分類するのに関連し得る様々なタイプの情報を抽出することができる。そのような態様において、挙動観察器ユニット202は、その観察結果、および挙動観察器224a〜224cから受信された観察結果を、周辺デバイスに関係する望ましくない挙動がモバイルコンピューティングデバイス102上で起こっているかどうかを観察結果が示すかどうか判定するために、挙動分析器ユニット204および/または分類器ユニット208に送ればよい。
別の態様では、挙動観察器ユニット202は、周辺デバイス222a〜222cから受信された入力および/または周辺デバイス222a〜222cとモバイルコンピューティングデバイス102との間で交換された通信に基づいて、周辺デバイスに関係する観察結果を生成するように構成されてよい。たとえば、挙動観察器ユニット202は、周辺デバイス222aからの出力をある時間期間にわたって観察すればよく、これらの観察結果を、周辺デバイスに関係する望ましくない挙動がモバイルコンピューティングデバイス102上で起こっているかどうかを示し得る特定の出力を周辺デバイス222aが送ったかどうか判定するために、挙動分析器ユニット204に送ればよい。別の例では、挙動観察器ユニット202は、モバイルコンピューティングデバイス102から周辺デバイス222c(たとえば、車)に送られる通信を監視すればよく、モバイルコンピューティングデバイス102が、周辺デバイス222cに、駐車操作を実施するとき、典型的または予期される速度を大きく超えるよう命令していることを観察することができる。
図2Aを参照して上述したように、挙動観察器ユニット202(および随意には、挙動観察器224a〜224c)は、それらによる挙動観察結果を挙動分析器ユニット204および/または分類器ユニット208に送ってよい。挙動分析器ユニット204は、これらの観察結果に基づいて挙動ベクトルを生成することができ、生成された挙動ベクトルを、モバイルコンピューティングデバイス102に接続された1つまたは複数の周辺デバイス222a〜222cに関係する、モバイルコンピューティングデバイス102上での特徴をテスト/分類する分類器モデルに適用すればよい。挙動分析器ユニット204および/または分類器ユニット208は、図2Aを参照して上述した、分類器モデルへの挙動ベクトルの適用に基づいて、モバイルコンピューティングデバイス挙動を、悪意がある、性能を劣化させる、良性、または疑わしいと分類することもできる。
図3は、モバイルコンピューティングデバイスの処理、メモリ、またはエネルギーのリソースの量を過剰に消費することなく、モバイルコンピューティングデバイス102に接続された1つまたは複数の周辺デバイスに関係する、アクティブに悪意があるか、もしくは不十分に記述されたソフトウェアアプリケーションおよび/または疑わしいか、もしくは性能を劣化させるモバイルコンピューティングデバイス挙動を知的かつ効率的に識別するために、サーバ116と連携して働くように構成されたモバイルコンピューティングデバイス102を含む態様システム300における例示的な構成要素および情報フローを示す。
図3に示された例では、サーバ116は、クラウドユニット302、モデル生成器304のユニット、およびトレーニングデータユニット306を含む。モバイルコンピューティングデバイス102は、挙動観察器ユニット202、挙動分析器ユニット204、作動器ユニット210、特徴生成器ユニット316、および特徴監視エンジン320を含む。様々な態様では、特徴生成器ユニット316、および/または特徴監視エンジン320は、挙動分析器ユニット204の一部または分類器ユニット208(図3には示さず)の一部として含まれ、または実装される場合がある。
クラウドユニット302は、モバイルコンピューティングデバイス102に接続された周辺デバイス330上に存在し、それに関係し得る特徴を含む、経時的なモバイルコンピューティングデバイス102の劣化に寄与する可能性がある特徴、データ点、および/または要因のすべてまたは大部分を含む大量の情報を、クラウドサービス/ネットワーク118から受信するように構成される場合がある。
モデル生成器304は、クラウドユニット302で受信された情報および(たとえば、トレーニングデータユニット306を介した)トレーニングデータを使用して、経時的なモバイルコンピューティングデバイス102の劣化に寄与する可能性がある特徴、データ点、および/または要因のすべてまたは大部分を含むか、または識別する、フルまたはロバスト分類器モデルを生成することができる。
様々な態様では、サーバ116は、機械学習技法および/またはコンテキストモデル化技法を、実施すること、実行すること、ならびに/あるいは多くのモバイルコンピューティングデバイスによって提供された挙動情報および/もしくは挙動分析の結果、またはクラウドサービス/ネットワーク118から受信された他の情報に適用することによって、フル分類器モデルを生成するように構成される場合がある。したがって、サーバ116は、複数のモバイルコンピューティングデバイスから多数の報告を受信し、そのようなクラウドソーシングされた情報を分析するか、統合整理するか、または場合によっては使用可能な情報に、特にすべてのモバイルコンピューティングデバイスによって使用またはアクセスされ得る挙動モデルに変化させることができる。サーバ116は、新しい挙動/分析報告がモバイルコンピューティングデバイスから受信されるにつれて既存の挙動モデルを継続的に再評価し、かつ/または(たとえば、挙動モデルの前の実行、以前の適用などから収集された)履歴情報、新しい情報、機械学習、コンテキストモデル化、および利用可能な情報、モバイルコンピューティングデバイスの状態、環境条件、ネットワーク条件、モバイルコンピューティングデバイスの性能、バッテリー消費レベルなどにおいて検出された変化に基づいて、新しいもしくは更新された挙動モデルを生成することができる。
一態様では、モデル生成器304は、モバイルコンピューティングデバイスのプロセッサ内の使用または実行に適したリーン分類器モデルに、迅速かつ効率的に選別、修正、または変換され得る、ブーストされた決定株またはブーストされた決定株のファミリーなどの、有限状態機械の表示を含めるように、フル分類器モデルを生成することができる。有限状態機械の表現または表示は、テスト条件、状態情報、状態遷移規則、および他の同様の情報を含む情報構造であり得る。一態様では、有限状態機械の表現または表示は、条件、特徴、要因、またはモバイルコンピューティングデバイスの挙動の態様をそれぞれ評価またはテストするブーストされた決定株の大規模またはロバストなファミリーを含む情報構造であり得る。
一態様では、モデル生成器304のユニットは、モバイルコンピューティングデバイス102に(たとえば、送信340により)フル分類器モデルを送ることができ、モバイルコンピューティングデバイス102は、クラウドユニット302内で生成されたフルモデルに基づいて、リーンデータ/挙動モデルを生成するように構成される場合がある。一態様では、モバイルコンピューティングデバイス102は、フル分類器モデルを使用して、様々なレベルの複雑さ(または「リーン性」)のリーン分類器モデルのファミリーを生成するように構成される場合がある。さらに、リーンデータ/挙動モデルを生成することは、サーバ116内で生成されたフルモデルに含まれる特徴およびデータ点のサブセットを含む、1つまたは複数の縮小された特徴モデル(RFM)を生成することを含む場合がある。別の態様では、モバイルコンピューティングデバイスは、特定のモバイルコンピューティングデバイスの挙動が良性か、それとも望ましくない(たとえば、悪意がある、および/または性能を劣化させる)かを挙動分析器ユニット204が最終的に判定することを可能にする、最高の可能性を有するように決定された情報を含む、初期の特徴セット(たとえば、初期の縮小された特徴モデル)を含む、リーンデータ/挙動モデルを生成することができる。
一態様では、モバイルコンピューティングデバイス102は、サーバ116から受信されたフル分類器モデルに含まれるブーストされた決定株のファミリーを選別して、削減された数のブーストされた決定株を含み、かつ/または限られた数のテスト条件を評価する、リーン分類器モデルを生成するように構成される場合がある。フルであるブーストされた決定株の分類器モデルのこの選別は、ブーストされた決定株を選択すること、選択された決定株と同じモバイルコンピューティングデバイス固有の状態、特徴、挙動、または条件に依存する(かつ、したがって1つの判定結果に基づいて適用され得る)すべての他のブーストされた決定株を識別すること、選択された決定株および同じモバイルコンピューティングデバイス固有の状態、特徴、挙動、または条件に依存するすべての識別された他のブーストされた決定株をリーン分類器モデルに含めること、ならびに、リーン分類器モデルにまだ含まれていない限られた数の選択されたブーストされた決定株についてプロセスを繰り返すことによって、達成することができる。このようにして、限られた数の異なる状態、特徴、挙動または条件に依存するすべてのブーストされた決定株を含むリーン分類器モデルが生成され得る。次いで、モバイルコンピューティングデバイスは、その処理、メモリ、またはエネルギーのリソースの量を過剰に消費することなくモバイルコンピューティングデバイス挙動を迅速に分類するために、このローカルに生成されたリーン分類器モデルを使用することができる。
ブーストされた決定株は、厳密に1つのノード(したがって1つのテスト質問またはテスト条件)と重み値とを有し、したがってデータ/挙動の2値の分類における使用に十分に適した、1段の決定木である。すなわち、挙動ベクトルをブーストされた決定株に適用することで、2値の答え(たとえば、YesまたはNo)がもたらされる。たとえば、ブーストされた決定株によってテストされる質問/条件が「SMS送信の頻度が毎分xよりも小さいか」である場合、ブーストされた決定株に「3」の値を適用すると、(「3未満」のSMS送信の場合)「yes」の回答または(「3以上」のSMS送信の場合)「no」の回答のいずれかがもたらされる。
株は、非常に簡単かつ根本的である(したがって大きい処理リソースを必要としない)ので効率的である。株はまた非常に並列化可能であり、したがって、(たとえば、モバイルコンピューティングデバイス内の多重コアまたは多重プロセッサにより)多くの株を並行して/同時に適用することができる。
一態様では、モバイルコンピューティングデバイス102の挙動分析器ユニット204は、サーバ116上の(たとえば、トレーニングデータユニット306からの)トレーニングデータにアクセスすることなく、決定株の形態でリーン分類器モデルを生成することができ、それによって、モバイルコンピューティングデバイス102とサーバ116との間のフィードバック通信に対する要求が解消される。言い換えれば、挙動分析器ユニット204は、クラウドまたはネットワークと通信することなく、リーン分類器モデルを生成し適用してデータを再トレーニングすることができ、それによって、モバイルコンピューティングデバイスのクラウドに対する依存性が著しく低減される(かつ、したがってモバイルコンピューティングデバイスの性能および電力消費特性が向上する)。挙動分析器ユニット204はまた、ブーストされた決定株を使用して、コンピューティングデバイスの挙動を分類して、悪意のある、または性能を劣化させる挙動を識別することができる。
一態様では、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスがクラウドのトレーニングデータにアクセスする必要なしにオンザフライでリーン分類器モデルを生成し、アプリケーションごとに分類器を動的に再構成して分類確度を高め、分類器ごとに決定論的な複雑さ(たとえば、O(株の数))を指定することを可能にする、「合同特徴選択および剪定」動作を実施するように構成される場合がある。
一態様では、「合同特徴選択および剪定」動作は、特徴選択動作を実施することを含む場合がある。たとえば、挙動分析器ユニット204は、2つの一意の特徴(たとえば、F1およびF3)をテストするリーン分類器モデルを生成する必要があると判定する場合があり、その場合、特徴選択動作は、最初の2つの一意の特徴(たとえば、F1およびF3)が発見されるまで、100個のブーストされた決定株のリストをトラバースすることを含む場合がある。
次いで、挙動分析器ユニット204は、特徴選択動作によって識別された特徴(たとえば、F1およびF3)のみをテストすることができ、これは、100個のブーストされた決定株のリスト全体をトラバースすること、および異なる特徴/条件(たとえば、F5)をテストする任意の株を消去することによって達成される場合がある。残りのブーストされた決定株(すなわち、条件「F1」および「F3」をテストする株)は、データを再トレーニングしないリーン分類器モデルとして使用される場合がある。挙動分析器ユニット204は、残りのブーストされた決定株の各々に(たとえば、挙動ベクトルの形の)挙動情報を適用し、残りの株から受信されたすべての回答の加重平均を計算し、加重平均を使用してモバイルコンピューティングデバイスの挙動が望ましくないか、それとも良性か判定することができる。
ブーストされた決定株が特徴選択および剪定プロセスを介して生成されると、挙動分析器ユニット204は、挙動分析器ユニット204が現在のデバイスの状態、設定、および挙動と比較することができる挙動モデルとして、選択された決定株を使用することができる。決定株は独立した二項テストであるので、挙動分析器ユニット204は、挙動ベクトル内に集約され得る観察された挙動を、並行してモデルと比較する挙動分析プロセスを実施することができる。また、株は非常に単純(基本的に二項)であるので、各株を実施する処理は非常に単純であり、したがって、より少ない処理のオーバーヘッドで迅速に達成することができる。各決定株は重み値を有する回答をもたらすので、挙動が望ましくないか、それとも良性かに関する挙動分析器ユニット204の最終決定は、すべての結果の重み付けされた合計として決定される場合があり、それも単純な計算であり得る。
したがって、一態様では、挙動分析器ユニット204は、挙動観察器ユニット202から受信されたモバイルコンピューティングデバイス102上の進行中の挙動の観察結果から挙動ベクトルを生成することができ、挙動分析器ユニット204は、ブーストされた決定株に挙動ベクトルを適用して、モバイルコンピューティングデバイス102上の進行中の挙動が望ましくないか、それとも良性かを判定することができる。
さらなる態様において、挙動分析器ユニット204は、合同特徴選択および剪定動作を実施した結果として生成されたリーン分類器モデルを、モバイルコンピューティングデバイス102に接続された周辺デバイス330に関係する、モバイルコンピューティングデバイス102上での特徴を組み込む/考慮するように修正することができる。
一態様では、挙動分析器ユニット204が最初にサーバ116から受信された大規模分類器モデルから生成するリーン分類器モデルは、周辺デバイス330に関係する特徴および挙動を十分に表現しない場合がある。たとえば、サーバ116から受信された大規模分類器モデルは、生体センサに関係する少数の挙動ベクトル/モデルを含むだけである場合がある。モバイルコンピューティングデバイス102は生体センサを含まない場合があるので、挙動分析器ユニット204は最初に、生体センサ特徴を考慮せずにリーン分類器モデルを生成してよい。ただし、モバイルコンピューティングデバイス102が、モバイルコンピューティングデバイス102が生体データを受信し、使用することを可能にする周辺デバイス330に接続した場合、モバイルコンピューティングデバイス102上の新規生体センサ特徴は今では、いくつかの金融取引(たとえば、Google Wallet)を行うことに高度に関連してよく、重大な金融上の含意を有する可能性がある、生体センサ特徴に関係する、モバイルコンピューティングデバイス102上での悪意のある、または性能を劣化させる活動(たとえば、ハッカーにクレジットカード情報を送る)を検出するために、生体センサ特徴をリーン分類器モデルに含めることが高度に望ましい場合がある。したがって、モバイルコンピューティングデバイス102および/またはモバイルコンピューティングデバイス102に接続された周辺デバイス330は、モバイルコンピューティングデバイス102上で起こる、周辺デバイス330に関係する挙動の警戒の増大から利益を受けることができる。
別の態様では、挙動分析器ユニット204は、モバイルコンピューティングデバイス102に接続された周辺デバイス330に関係する、分類器モデルに含めるべき特徴を、モバイルコンピューティングデバイス102上で動作する特徴生成器ユニット316から知ることができる。一態様では、特徴生成器ユニット316は、別個に、または挙動分析器ユニット204の一部として実装される場合がある。特徴生成器ユニット316は、たとえばモバイルコンピューティングデバイス102が周辺デバイスに接続したときの、モバイルコンピューティングデバイスの機能性/能力の変化を監視するように構成された特徴監視エンジン320と通信することができる。
周辺デバイス330がモバイルコンピューティングデバイス102に接続したことを検出したことに応答して、特徴監視エンジン320は特徴生成器ユニット316に警告してよく、特徴生成器ユニット316は、その周辺デバイス330に関係する、モバイルコンピューティングデバイス102上の新規または修正特徴を判定することができる。たとえば、モバイルコンピューティングデバイス102は、ペースメーカー周辺デバイスから、そのデバイスにワイヤレスに接続した後で生体データを受信する技能を得ることができ、特徴生成器ユニット316は、生体データの受信に関係する1つまたは複数の特徴、条件、テストなどを識別することができる。特徴生成器ユニット316は、挙動分析器ユニット204に、挙動観察器ユニット202によってモバイルコンピューティングデバイス102上での望ましくない挙動(たとえば、悪意のあるおよび/または性能を劣化させる挙動)を監視するのに使われる分類器モデル中の新規または拡張モバイルコンピューティングデバイス能力に関連付けられた特徴を考慮するようシグナリングすることもできる。したがって、モバイルコンピューティングデバイス102が1つまたは複数の周辺デバイスに接続するとき、大規模分類器モデルから導出されたリーン分類器モデルを修正または更新することによって、挙動分析器ユニット204は、周辺デバイスに関係する、モバイルコンピューティングデバイス102上の重要特徴が、リーン分類器モデルに含められ、したがって、望ましくない挙動について監視されることを保証し得る。
別の態様では、特徴生成器ユニット316および/または挙動分析器ユニット204は、モバイルコンピューティングデバイス102に接続する周辺デバイス330を検出し、識別することができ、サーバ116に対する、周辺デバイス330に関係する特徴についてのテスト、分類器、情報などについての要求342(図3において「周辺デバイス特徴要求」と標示される)を送ってよい。要求を受信したことに応答して、サーバ116は、クラウドデータセットにアクセスしてよく、周辺デバイス330に関係する1つまたは複数のモバイルコンピューティングデバイスの特徴についての分類情報、テストなどを含む応答送信344(図3において「周辺デバイス特徴」と標示される)を送ってよい。
図4は、モバイルコンピューティングデバイスに接続された周辺デバイスに関係する特徴を考慮に入れる分類器モデルを生成するための、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサによって実装される態様方法400を示す。分類器モデルが、モバイルコンピューティングデバイスがモバイルコンピューティングデバイス上で起こる望ましくない挙動を検出することを可能にする周辺デバイスに関係する特徴または他の情報を含むことを保証するために、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサは、モバイルコンピューティングデバイスがブロック402において電源投入したときにスタートする以下の動作を実施すればよい。
ブロック404において、特徴監視エンジンを実行するプロセッサは、たとえば、モバイルコンピューティングデバイスに接続されているかまたは接続したばかりの周辺デバイスを識別するためにモバイルコンピューティングデバイスを走査することによって、モバイルコンピューティングデバイスに接続した周辺デバイスを検出し得る。たとえば、特徴監視エンジンを実行するプロセッサは、周辺デバイスとのワイヤレスまたはワイヤード接続(たとえば、Bluetooth(登録商標)接続)が確立されたとき、カーネル空間から信号を受信し得る。
特徴生成器を実行するプロセッサは、ブロック406において、モバイルコンピューティングデバイスに接続された周辺デバイスを識別することができる。たとえば、特徴生成器を実行するプロセッサは、周辺デバイス上でホストされるAPIにより(たとえば、プラグアンドプレイ検出により)、識別メッセージを周辺デバイスに対して要求し、かつ/または周辺デバイスから受信し、周辺デバイス上に存在する能力および特徴の評価に基づいて、もしくは周辺デバイスを識別するユーザ入力に基づいて、周辺デバイスを識別し、かつ/あるいは周辺デバイスを識別し、周辺デバイスと通信するための他の技法を実装することができる。
ブロック408において、挙動分析器ユニットを実行するプロセッサは、周辺デバイスに関係する特徴の挙動を、モバイルコンピューティングデバイス上の望ましくない挙動を検出する際に使用するためにテスト/評価/分類する分類器モデルを取得し得る。一態様では、挙動分析器ユニットを実行するプロセッサは、図5を参照して以下でさらに説明するように、周辺デバイスに接続した、およびモバイルコンピューティングデバイスの新規/拡張能力に関係する特徴の挙動をテストする分類器モデルを生成した結果として、モバイルコンピューティングデバイス上で利用可能な新規/拡張能力を判定することによって、分類器モデルを取得することができる。別の態様では、挙動分析器ユニットを実行するプロセッサは、図6を参照して以下でさらに説明するように、起こることが予期される、周辺デバイスに関係する挙動に基づく特徴および/またはデータ点のセットを生成することによって、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴の挙動をテストする分類器モデルを取得することができる。挙動分析器ユニットを実行するプロセッサは、図7Aを参照して以下でさらに説明するように、識別された周辺デバイスに関係する特徴についての分類器情報をサーバに対して要求することによって、分類器モデルを取得することもできる。別の態様では、挙動分析器ユニットを実行するプロセッサは、サーバから受信されたフル分類器から生成されたリーン分類器モデルを、図8を参照して以下でさらに説明するような特徴を含むように修正することによって、周辺デバイスに関係する特徴の挙動をテストする分類器モデルを取得することができる。
ブロック410において、挙動観察器ユニットを実行するプロセッサは、ブロック408において取得された分類器モデルに含まれる/記述される周辺デバイス特徴に関係する、モバイルコンピューティングデバイス上での挙動を観察し得る。図2Aおよび図2Bを参照して上述したように、挙動観察器ユニットを実行するプロセッサは、周辺デバイスに関係する特徴に関する観察結果、データ、信号、測定値、示度、および/または様々な他のタイプの情報を受信し得る。一態様では、挙動観察器ユニットを実行するプロセッサは、図9を参照して以下でさらに説明するように、周辺デバイスに関係するこれらの挙動を、周辺デバイスから(たとえば、周辺デバイス上に含まれる挙動観察器ユニットから、またはその目的のための特に構成されたAPIにより)直接、情報を収集することによって観察することができる。別の態様では、挙動観察器ユニットを実行するプロセッサは、図10を参照して以下でさらに説明するように、周辺デバイスとモバイルコンピューティングデバイスとの間の通信に基づく、および/または周辺デバイスからモバイルコンピューティングデバイス上で受信された入力に基づく情報を、周辺デバイスから間接的に集めることによって、周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動を観察することができる。
ブロック412において、挙動分析器ユニットを実行するプロセッサは、図2Aおよび図2Bを参照して上で概説したように、ブロック410において観察された挙動に基づいて、モバイルコンピューティングデバイスの現在の構成についての挙動ベクトルを生成し得る。したがって、一態様では、挙動分析器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスおよび/または周辺デバイスの一方または両方において動作する挙動観察器ユニットから、周辺デバイスに関係する特徴の挙動の観察結果を受信し得る。
ブロック414において、分類器ユニットを実行するプロセッサおよび/または挙動分析器ユニットを実行するプロセッサは、たとえば生成された挙動ベクトルを、周辺デバイスに関係する特徴を記述するブーストされた決定株に適用することによって、周辺デバイスに関係する特徴を含む分類器モデルに、生成された挙動ベクトルを適用することができる。一態様では、分類器ユニットおよび/または挙動分析器ユニットを実行するプロセッサは、特定の特徴をテストする1つまたは複数のブーストされた決定株に、周辺デバイスに関係する特定の特徴を表現する挙動ベクトル内の値を適用することができる。ブーストされた決定株に挙動ベクトルの値を適用した結果は、「yes」または「no」などの二項結果であり、各結果は、周辺デバイスに関係する特徴の挙動が良性または望ましくない(たとえば、悪意があるかまたは性能を劣化させる)信頼要因を示す重み付けされた確率を割り当てられる。
たとえば、挙動分類器ユニットを実行するプロセッサは、自動車周辺デバイスに、直接ドライバ入力なしで駐車させることに関係する、モバイルコンピューティングデバイス上での遠隔駐車特徴をテストすることができる。挙動分類器ユニットを実行するプロセッサは、遠隔駐車特徴についての挙動ベクトル値を、その特徴に関係するブーストされた決定株を解決するために適用してよい。遠隔駐車特徴に関連付けられたブーストされた決定株は、「自動車周辺デバイスが時速15マイルよりも速く動いている」か、「自動車周辺デバイスが時速10マイルよりも速く動いている」か、「自動車周辺デバイスが時速5マイルよりも速く動いている」かなどのテストを含み得る。ブーストされた決定株テストについての各解決は、モバイルコンピューティングデバイスの遠隔駐車特徴の挙動が望ましくないかまたは良性であるという特定の重み付けされた確率を生じることができ、挙動分類器および/または挙動分析器ユニットを実行するプロセッサは、重み付けされた確率を合成して、周辺デバイスに関係する挙動が望ましくないか、それとも良性であるかと、その結論の一定の信頼度(たとえば、現在の構成は、35%の信頼度で良性である)とを判定することができる。
判定ブロック416において、挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサは、ブロック414における、周辺デバイスに関係する特徴を含む分類器モデルへの、生成された挙動ベクトルの適用が、モバイルコンピューティングデバイス上での周辺デバイスに関係する望ましくない挙動の存在を示すかどうか判定することができる。一態様では、周辺デバイスに関係する特徴を含む分類器モデルへの、生成された挙動ベクトルの適用は、モバイルコンピューティングデバイス上での悪意のあるおよび/もしくは性能を劣化させる挙動が周辺デバイスに悪影響を及ぼしているかどうか、周辺デバイス上での悪意のあるおよび/もしくは性能を劣化させる挙動がモバイルコンピューティングデバイスに悪影響を及ぼしているかどうか、ならびに/または周辺デバイスとモバイルコンピューティングデバイスの両方における悪意のあるおよび/もしくは性能を劣化させる挙動がデバイスの一方または両方に悪影響を及ぼしているかどうかを示し得る。
上記例において、挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスが自動車周辺デバイスに、自動車周辺デバイスが遠隔駐車動作を実施するための安全および/または予期される速度が時速3〜5マイルであるときに時速15マイルよりも速く動くよう命令しているとき、自動車周辺デバイスに関係する挙動が、悪意がある見込みが非常に高いと、高い確信をもって判定し得る。
挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサが、分類器モデルへの、生成された挙動ベクトルの適用が、モバイルコンピューティングデバイス上で起こっている、周辺デバイスに関係する望ましくない挙動の存在を示すと判定したことに応答して(すなわち、判定ブロック416=「Yes」)、作動器を実行するプロセッサは、ブロック420において、周辺デバイスに関係する、モバイルコンピューティングデバイス上の望ましくない挙動を終了させてよい。望ましくない挙動を終了させるために、作動器を実行するプロセッサは、問題のある挙動に関係する特徴へのアクセスを制限し、または悪意のある/性能を劣化させる挙動を担当する要素を識別し、その要素を隔離し、消去し、または回復してよい。したがって、上記例において、作動器ユニットを実行するプロセッサは、モバイルコンピューティングデバイス上で動作しているプロセスまたはアプリケーションが、安全でない速度で動くための悪意のある命令を、自動車周辺デバイスに送っていると判定してよく、そのプロセスもしくはアプリケーションを終了させてよく、または悪意のある命令を、自動車周辺デバイスが安全な速度を超えないことを保証するように修正してよい。
挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサが、分類器モデルへの、生成された挙動ベクトルの適用が、周辺デバイスに関係する望ましくない挙動の存在を示さないと判定したことに応答して(すなわち判定ブロック416=「No」)、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサは、周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動を観察することによって、ブロック410においてスタートするループで、上述した動作を繰り返してよい。
随意の態様では、特徴監視エンジンを実行する、モバイルコンピューティングデバイス上のプロセッサが、随意の判定ブロック418において、別の周辺デバイスがモバイルコンピューティングデバイスに接続したかどうか判定することができる。たとえば、周辺デバイスは時折、モバイルコンピューティングデバイスに接続される場合があり、そうすることによって、モバイルコンピューティングデバイスにとって利用可能であり、悪意のある、または性能を劣化させる挙動につながり得る、周辺デバイスに関係する特徴および能力を拡張させる。特徴監視エンジンを実行するプロセッサが、別の周辺デバイスがモバイルコンピューティングデバイスに接続していないと判定したことに応答して(すなわち、随意の判定ブロック418=「No」)、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサは、ブロック408において取得された分類器ユニットに含まれる周辺デバイス特徴に関係する、モバイルコンピューティングデバイス上での挙動を観察することによって、ブロック410においてスタートするループで、上述した動作を繰り返せばよい。
特徴監視エンジンを実行するプロセッサが、別の周辺デバイスがモバイルコンピューティングデバイスに接続したと判定したことに応答して(すなわち、随意の判定ブロック418=「Yes」)、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサは、ブロック406において、モバイルコンピューティングデバイスに接続した別の周辺デバイスを識別することによって、上述した動作をループで繰り返せばよい。
図5は、モバイルコンピューティングデバイスに接続された周辺デバイス上に存在すると判定された1つまたは複数の能力に基づいて分類器モデルを生成するための、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサによって実装することができる態様方法500を示す。方法500の動作は、図4を参照して上述した方法400のブロック408の動作の態様を実装し、特徴生成器ユニットを実行するプロセッサが、方法400のブロック406において周辺デバイスを識別した後に始まり得る。
上述したように、モバイルコンピューティングデバイスの特徴/能力は、モバイルコンピューティングデバイスの正常動作中に周辺デバイスに関する特徴が追加され、削除されると、動的に変わり得る。たとえば、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイス上で呼を始動することが可能なスマートウォッチ周辺デバイスとの接続を確立することができる。周辺デバイスに関係する、モバイルコンピューティングデバイス上の特徴の動的性質を鑑みて、モバイルコンピューティングデバイス上での悪意のある/性能を劣化させる挙動を検出するのに使われる分類器モデルは、周辺デバイスに関係する性能およびセキュリティ問題を防止するために、モバイルコンピューティングデバイスに接続する周辺デバイスに関係する、モバイルコンピューティングデバイス上での新規/拡張特徴を考慮する必要があり得る。
ブロック502において、特徴生成器ユニットを実行するプロセッサは、たとえば、周辺デバイスを走査すること、周辺デバイスに対して情報を要求することによって、または他の様々な知られている機構を通して(たとえば、周辺デバイスのプラグアンドプレイ能力を使用することによって)、方法400のブロック406において識別された、周辺デバイスの1つまたは複数の能力を識別し得る。一態様では、特徴生成器ユニットを実行するプロセッサは、周辺デバイスの識別情報のみに基づいて、周辺デバイスに関係する能力を判定することもできる。たとえば、特徴生成器を実行するプロセッサが、識別された周辺デバイスがBluetooth(登録商標)スピーカであると判定したとき、プロセッサは、スピーカがオーディオ信号を受信し、オーディオ信号を可聴音に変換し、可聴音をプレイアウトすることが可能であると判定してよい。
ブロック504において、特徴生成器ユニットを実行するプロセッサは、ブロック502において識別された、周辺デバイスの1つまたは複数の能力に関係する、モバイルコンピューティングデバイス上の1つまたは複数の特徴を判定することもできる。上記例において、特徴生成器を実行するプロセッサは、モバイルコンピューティングデバイスが現在、オーディオ信号をプレイアウトのためにスピーカに送ることが可能であり得、したがって、オーディオ信号入力から可聴音を生成するための、Bluetooth(登録商標)スピーカの技能に基づく「遠隔オーディオプレイアウト」特徴を有し得ると判定してよい。
ブロック506において、挙動分析器ユニットを実行するプロセッサは、ブロック504において判定された、モバイルコンピューティングデバイス上の1つまたは複数の特徴に基づいて分類器モデルを生成し得る。一態様では、挙動分析器ユニットを実行するプロセッサは、判定された特徴に関係する挙動をテストし、評価し、かつ/または分類する分類器モデルを発展させるために、データのコーパスを、判定された特徴でトレーニングすることができる。別の態様では、挙動分析器ユニットを実行するプロセッサは、サーバから受信されたフル分類器から、判定された特徴を含む分類器モデルを生成することができる(すなわち、プロセッサは、ブロック504において判定された特徴を含む「リーン」分類器を生成することができる)。
プロセスは、挙動観察器ユニットを実行するプロセッサが、ブロック506において生成された分類器モデルに含まれる周辺デバイス特徴に関係する、モバイルコンピューティングデバイス上での挙動を観察することができるように、ブロック410において継続し得る。
図6は、周辺デバイスに関係する、モバイルコンピューティングデバイス上で起こることが予期される1つまたは複数の挙動に基づいて分類器モデルを生成するための、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサによって実装することができる態様方法600を示す。
一態様では、モバイルコンピューティングデバイス上で動作する構成要素は、特に、周辺デバイスが、その能力に関する広範な情報をモバイルコンピューティングデバイスに通信する技能を有し得ない、より古いデバイスまたは比較的単純なデバイスであるとき、モバイルコンピューティングデバイスに接続した周辺デバイスについての分類器モデルを直ちに生成することができない場合がある。そのような「レガシー」デバイス向けに、モバイルコンピューティングデバイス上の1つまたは複数のプロセッサは、周辺デバイスに関係する、モバイルコンピューティングデバイス上の様々な活動、特徴、能力、機能性、通信などを観察するように構成されてよく、1つまたは複数のプロセッサは、モバイルコンピューティングデバイスおよび周辺デバイス上で、ならびにその間で起こる予期されるアクション、活動、傾向、パターンなどに基づいて、周辺デバイスに関係する、モバイルコンピューティングデバイス上の特徴をテストする際に有用な分類器モデルを導出することができる。言い換えれば、周辺デバイスが、その能力および/または特徴に関する情報を直接通信することができないとき、モバイルコンピューティングデバイス上で動作するプロセッサは、モバイルコンピューティングデバイスと周辺デバイスがどのように対話するか、およびモバイルコンピューティングデバイスと周辺デバイスの一方または両方において起こるどのような挙動が予期され、悪意がない/性能を劣化させないかを間接的に判定することによって、周辺デバイスに関係する特徴を含む分類器モデルを生成すればよい。
方法600の動作は、図4を参照して上述した方法400のブロック408の動作の態様を実装し、特徴生成器ユニットを実行するプロセッサが、方法400のブロック406において周辺デバイスを識別した後に始まり得る。
ブロック602において、特徴生成器ユニットを実行するプロセッサは、周辺デバイスに関係する、モバイルコンピューティングデバイス上での挙動をある時間期間にわたって観察し得る。一態様では、プロセッサは、モバイルコンピューティングデバイスと周辺デバイスとの間の対話および通信、周辺デバイスからの出力、ならびに/またはモバイルコンピューティングデバイスから周辺デバイスに送られる命令を監視すればよい。たとえば、特徴生成器ユニットを実行するプロセッサは、クレジットカードリーダデバイスからモバイルコンピューティングデバイスに送られるクレジットカードデータを観察することができ、クレジットカードデータが、モバイルコンピューティングデバイスから同じウェブサイトに持続して送られることを観察し得る。
したがって、ブロック604において、特徴生成器ユニットを実行するプロセッサは、ブロック602において行われた観察に基づいて、周辺デバイスに関係する、起こることが予期される、モバイルコンピューティングデバイス上での1つまたは複数の挙動を識別し得る。ブロック604において実施される動作の態様において、特徴生成器ユニットを実行するプロセッサは、これらの1つまたは複数の予期される挙動を、アクション、入力、出力、通信などのパターンを検出することによって識別することができる。別の態様では、特徴生成器ユニットを実行するプロセッサは、周辺デバイスの能力に基づいて、起こることが予期される挙動(すなわち、周辺デバイスは、何をすることが可能であるべきであり、可能であるべきでないか、および/またはモバイルコンピューティングデバイスは、周辺デバイスとともに何をすることが許可されるべきであり、許可されるべきでないか)を推論することができる。たとえば、特徴生成器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスに接続された指紋スキャナ周辺デバイスが、モバイルコンピューティングデバイスに、未知のウェブサイトへデータを秘密に送信させることが可能である(または許可される)べきでないと判定してよい。
ブロック606において、挙動分析器ユニットを実行するプロセッサは、クレジットカードがクレジットカードリーダ周辺デバイスに通された後、モバイルコンピューティングデバイスから特定のウェブサイトにクレジットカードデータを送ることに関係する「クレジットカードリーダ」特徴など、ブロック604において識別された1つまたは複数の予期される挙動に関係する、モバイルコンピューティングデバイス上での特徴のセットを判定し得る。言い換えれば、挙動分析器ユニットを実行するプロセッサは、周辺デバイスに関係するどのような挙動がモバイルコンピューティングデバイス上で起こることが予期されるかについての詳細な理解に基づいて、モバイルコンピューティングデバイス上で監視/観察されるべき特徴を識別することができる。さらなる態様では、挙動分析器ユニットを実行するプロセッサは、1つまたは複数の予期される挙動に関係する特徴についての(たとえば、ブーストされた決定株の形の)様々なテストを、それらの特徴の観察結果に基づいて判定することができる。
挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサは、ブロック608において、1つまたは複数の予期される挙動に関係する特徴のセットに基づいて分類器モデルを生成することもできる。プロセスは、モバイルコンピューティングデバイス上の挙動観察器ユニットを実行するプロセッサが、ブロック608において生成された分類器モデルに含まれる特徴を、望ましくない挙動について監視し始めることができるように、図4を参照して上述した、方法400のブロック410において継続し得る。
図7Aは、モバイルコンピューティングデバイスに接続された周辺デバイスに関係する、モバイルコンピューティングデバイス上の特徴を含む分類器モデルをサーバから取得するための、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサによって実装することができる態様方法700を示す。
一態様では、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサは、ネットワークサーバ(たとえば、図3を参照して上述したサーバ116)と通信することができ、1つまたは複数のプロセッサは、サーバの優れた計算力および情報の大規模コーパスへのアクセスを活用して、モバイルコンピューティングデバイスに接続された周辺デバイスに関係する、モバイルコンピューティングデバイス上での悪意のある、または性能を劣化させる挙動を検出する際に特に有用であり得る特徴を含む分類器モデルを取得することができる。
方法700の動作は、図4を参照して上述した方法400のブロック408の動作の態様を実装し、特徴生成器ユニットを実行するプロセッサが、方法400のブロック406において周辺デバイスを識別した後に始まり得る。
ブロック702において、挙動分析器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスに接続された周辺デバイスおよび/または周辺デバイスの能力を識別する情報を生成し得る。ブロック702において実施される動作のさらなる態様では、挙動分析器ユニットを実行するプロセッサは、たとえばサーバが識別用情報を使ってデータベースルックアップ動作を実施することを可能にすることによって、モバイルコンピューティングデバイスに影響し得る、周辺デバイスに関係する特徴をサーバが識別することを可能にするのに十分な、モバイルコンピューティングデバイスを識別するための付加情報(たとえば、デバイスID番号、モデル/通し番号など)を、サーバに送られる情報に含めてもよい。挙動分析器ユニットを実行するプロセッサは、ブロック702において生成された情報を、たとえばサーバと通信するのに使われるAPIを使用し、または拡張することによって、ブロック704においてサーバに送ることができる。
ブロック706において、挙動分析器ユニットを実行するプロセッサは、ブロック704においてサーバに送られた、生成された情報に基づく、周辺デバイスに関係する特徴を含む分類器モデル(たとえば、リーン分類器モデル)をサーバから受信し得る。したがって、分類器モデルは、周辺デバイスに関係する、モバイルコンピューティングデバイス上の特徴を、ブーストされた決定株、テスト条件などの形で含むことができ、挙動分析器ユニットを実行するプロセッサは、図2Aおよび図2Bを参照して上述したように、ブーストされた決定株を、周辺デバイスに関係する挙動を良性または悪意がある/性能を劣化させるものとして分類するのに使うことができる。
プロセスは、図4を参照して上述した方法400のブロック410において、モバイルコンピューティングデバイス上(および/または周辺デバイス上)の挙動観察器ユニットを実行するプロセッサが、サーバから受信された分類器に含まれる、周辺デバイスに関係する特徴についてのモバイルコンピューティングデバイス上での挙動を、望ましくない挙動について監視することができるように継続し得る。
図7Bは、モバイルコンピューティングデバイスに接続された周辺デバイスならびに/または周辺デバイスの能力、機能性、状態、および特徴のうちの1つもしくは複数を識別する情報をデバイスから受信したことに応答して、モバイルコンピューティングデバイスに分類器モデルを送るための、サーバ上のモデル生成器ユニットを実行するプロセッサによって実装することができる態様方法707を示す。図3を参照して上述したように、モデル生成器ユニットを実行するサーバプロセッサは、サーバプロセッサが挙動分類器を作成するのに使うことができる膨大な量のクラウドソーシングされた情報(すなわち、クラウドデータセット)へのアクセスを有し得る。そのような大規模挙動情報データセットへのアクセスを考慮すると、モデル生成器ユニットを実行するサーバプロセッサは、特定の周辺デバイスに接続されているモバイルコンピューティングデバイスに特に合わせられた分類器モデルを生成するのに特に適し得る。したがって、一態様では、モデル生成器ユニットは、モバイルコンピューティングデバイスに接続された1つまたは複数の周辺デバイスに関係する特徴を含む、高度に効果的であり専用の分類器モデルをモバイルコンピューティングデバイスに提供することができる。
ブロック708において、モデル生成器ユニットを実行するサーバプロセッサは、モバイルコンピューティングデバイスに接続された周辺デバイスおよび/またはその周辺デバイスの能力を識別する情報を要求側モバイルコンピューティングデバイスから受信し得る。ブロック708の動作の別の態様では、モバイルコンピューティングデバイスから受信された情報は、モバイルコンピューティングデバイスおよび/またはデバイスの能力を識別する情報も含み得る。周辺デバイスおよび/またはモバイルコンピューティングデバイスについての識別用情報は、モデル生成器ユニットを実行するサーバプロセッサが、周辺デバイスおよび/またはモバイルコンピューティングデバイスの能力/機能性を判定するのに使うことができる情報(たとえば、モデル番号、通し番号、ソフトウェアバージョン、機能など)も含み得る。
ブロック710において、モデル生成器ユニットは、ブロック708において受信された識別用情報に基づいて、周辺デバイスに関係する、モバイルコンピューティングデバイスの特徴を識別し得る。ブロック710において実施される動作の態様において、モデル生成器ユニットを実行するサーバプロセッサは、受信された識別用情報が、要求側モバイルコンピューティングデバイス上に存在する特徴のセットを含むとき、その情報のみに基づいて、周辺デバイスに関係する、モバイルコンピューティングデバイスの特徴を判定することができる。別の態様では、モデル生成器ユニットは、分類器データベースにアクセスすることができ、上述したように、モバイルコンピューティングデバイスおよび/または周辺デバイスについての識別用情報に関連付けられた特徴を取り出すことができる。たとえば、モデル生成器ユニットは、受信された識別用情報に含まれる特定のモデル番号またはデバイスタイプに関連付けられた特徴のルックアップを実施することができる。別の例では、モデル生成器ユニットを実行するサーバプロセッサは、受信された識別用情報に記述される、要求側モバイルコンピューティングデバイスおよび/または周辺デバイスの現在の状態/構成と対応する特徴を識別するためのルックアップを実施することもできる。
随意の判定ブロック712において、モデル生成器ユニットは、ブロック710において識別された、周辺デバイスに関係する特徴に関連付けられた、記憶された分類器モデルがあるかどうか判定することができる。随意の態様では、モデル生成器ユニットを実行するサーバプロセッサは、周辺デバイスに関係する特徴を分類器データベース中に含む、モバイルコンピューティングデバイス向けのあらかじめ記憶された分類器モデルを有してよく(ブロック718および720を参照して以下でさらに説明するように)、サーバプロセッサは、同じ特徴に基づいて別の分類器モデルを生成し直すのではなく、ブロック710において識別された、周辺デバイスに関係する特徴を含む、あらかじめ生成された分類器モデルを呼び出すことを試みてよく、そうすることによって、時間および処理リソースを節約する。したがって、同様のモバイルコンピューティングデバイスが、同じ周辺デバイスに関係する特徴を含む分類器モデルを要求する場合があり、モバイルコンピューティングデバイスの各々向けにモデルを最初から生成するのではなく、モデル生成器ユニットは、要求側モバイルコンピューティングデバイスに現在接続されている周辺デバイスに関係する特徴を含む、あらかじめ生成されたモデルを送ればよい。
モデル生成器ユニットを実行するサーバプロセッサが、ブロック710において識別された、周辺デバイスに関係する特徴を含む、記憶された分類器モデルがあると判定したことに応答して(すなわち、随意の判定ブロック712=「Yes」)、サーバプロセッサは、随意のブロック722において、記憶された分類器モデルを要求側モバイルコンピューティングデバイスに送ってよい。記憶されたデバイス固有リーン分類器モデルを受信すると、要求側モバイルコンピューティングデバイスは、図7Aを参照して上述したように、望ましくない挙動を監視するのにモデルを使い始めることができる。
モデル生成器ユニットを実行するサーバプロセッサが、ブロック710において識別された、周辺デバイスに関係する特徴を含む、記憶された分類器モデルがないと判定したことに応答して(すなわち、随意の判定ブロック712=「No」)、プロセッサは、ブロック714において、複数の異なるモデル/タイプのモバイルコンピューティングデバイスおよび周辺デバイス上に存在する特徴を含むクラウドデータセットを取得することができる。一態様では、ブロック714における上記動作を実施する際、モデル生成器ユニットは、図3を参照して上述したように、クラウドデータセットをクラウドユニットから取り出し得る。モデル生成器ユニットは、ブロック716において、ブロック714において取得されたクラウドデータセットを、ブロック710において識別された特徴でトレーニングして、周辺デバイスに関係する特徴を含む、モバイルコンピューティングデバイス向けの分類器モデルを生成することもできる。言い換えれば、モデル生成器ユニットを実行するサーバプロセッサは、モバイルコンピューティングデバイスが、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴を、悪意のあるおよび/または性能を劣化させる挙動について効率的および効果的に監視することを可能にし得る分類器モデルを生成するために、要求側モバイルコンピューティングデバイスに接続された周辺デバイスに無関連の特徴に関係する分類器をフィルタ除去するように、クラウドデータセットまたはクラウドデータセットから開発されたフル分類器モデルを処理することができる。たとえば、モデル生成器ユニットを実行するサーバプロセッサは、要求側モバイルコンピューティングデバイスに接続された周辺デバイスを鑑みて、要求側モバイルコンピューティングデバイスの能力を最も良く表す分類器モデルを選ぶために、ブロック710において識別された特徴を使って、フル機械学習トレーニングアルゴリズムを稼働させればよい。さらなる態様では、モデル生成器ユニットは、周辺デバイスに関係する各特徴に対応する、ブーストされた決定株の1つまたは複数のセットを生成することができる。
随意のブロック718において、モデル生成器ユニットを実行するサーバプロセッサは、ブロック716において生成された分類器モデルを、たとえば、分類器データベース(図示せず)に記憶することによって、記憶することができる。随意のブロック720において、モデル生成器ユニットを実行するサーバプロセッサは、ブロック716において生成された分類器モデルを、ブロック710において識別された、周辺デバイスに関係する特徴に関連付けてもよい。別の態様では、モデル生成器ユニットを実行するサーバプロセッサは、記憶された分類器モデルのリストを管理することができ、そうすることによって、サーバプロセッサが将来、周辺デバイスに関係するとともに要求側モバイルコンピューティングデバイスおよび/または周辺デバイス上に存在する能力および/または特徴に合致する、記憶された分類器モデルを取得するためのデータベースルックアップ動作を実施することを可能にする。
ブロック724において、モデル生成器ユニットを実行するサーバプロセッサは、要求側モバイルコンピューティングデバイスに、ブロック716において生成された分類器モデルを送ってよく、モバイルコンピューティングデバイスは、この分類器モデルを、図7Aを参照して上述したように、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴を、望ましくない挙動について監視するのに使い始めることができる。
図8は、リーン分類器モデルを、モバイルコンピューティングデバイスに接続された周辺デバイスに関係する特徴を含むように修正するための、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサによって実装することができる態様方法800を示す。方法800の動作は、図4を参照して上述した方法400のブロック402〜408の動作の態様を実装し、モバイルコンピューティングデバイスがブロック402において電源投入した後で始まり得る。
ブロック802において、モバイルコンピューティングデバイス上のプロセッサは、多数の特徴および/または特徴に関連付けられた複数のテスト条件を含むか、または識別するフル分類器モデルを受信することができる。一態様では、フル分類器モデルは、ブーストされた決定株/木への入力として挙動ベクトル値を適用して、モバイルコンピューティングデバイスの特徴に関する条件をテストすることなどによって、挙動を良性または望ましくない(たとえば、悪意があるもしくは性能を劣化させる)として分類する際のモバイルコンピューティングデバイスによる使用に適した、複数のブーストされた決定木または決定株を含む場合がある。
多数の株/木に挙動ベクトル値を適用して、大規模分類器モデルの中の複数の特徴をテストすることは、モバイルコンピューティングデバイスで負担がかかる可能性がある。たとえば、これらの動作は、モバイルコンピューティングデバイスの他のプロセスの性能に被害が及ぶまで、プロセッサおよびメモリの機能を占有する可能性がある。これらの動作はまた、モバイルコンピューティングデバイスのバッテリー電力を消耗させる可能性がある。モバイルコンピューティングデバイスの性能に対するこれらの逓減作用を削減する助けになるために、モバイルコンピューティングデバイスは、図3を参照して上で記載したように、合同特徴選択および剪定アルゴリズムを実施して、大規模分類器モデルからリーン分類器モデルを生成することができる。
ブロック804において、挙動分析器ユニットを実行するプロセッサは、関連モバイルコンピューティングデバイス挙動を分類するために、監視するべき、および評価するべき、大規模分類器モデル中の特徴を選択することができる。大規模分類器モデルから特徴およびブーストされた決定株を選択するために、様々な基準を使用することができる。たとえば、合同特徴選択および剪定アルゴリズムの一規則は、プロセッサ、メモリ、および通信の特徴のような、モバイルコンピューティングデバイスの適正な動作に必須と考えられる特徴を選択することを指定することができる。その規則は、大規模分類器モデルが、最も必須なものから最も必須ではないものまでの方式で順序付けられるときに適切であり得る、第1の数の特徴(たとえば、第1の50個、100個、200個、1,000個など)、または通常のモバイルコンピューティングデバイスの特徴を指定することもできる。
ブロック806において、処理コア内で動作する挙動分析器ユニットは、ブロック804において選択された特徴からリーン分類器モデルを生成して、モバイルコンピューティングデバイスの少なくとも1つの特徴の挙動をテストすることができる。一態様では、挙動分析器ユニットは、大規模分類器ユニットに含まれるブーストされた決定株のリストを通して走査し、選択された特徴のうちの少なくとも1つをテストするか、またはそれらによって回答されるブーストされた決定株すべてをリーン分類器モデルに組み込むことができる。したがって、一態様では、リーン分類域モデルは、選択された特徴と選択された特徴に関連付けられた、ブーストされた決定株の両方を含む場合がある。
図4を参照して上述したように、特徴監視エンジンを実行するプロセッサは、ブロック404において、モバイルコンピューティングデバイスに接続した周辺デバイスを検出することができ、特徴生成器ユニットを実行するプロセッサは、ブロック406において、周辺デバイスを識別することができる。
ブロック812において、特徴生成器を実行するプロセッサは、周辺デバイスに関係する、モバイルコンピューティングデバイスの1つまたは複数の特徴を判定し得る。ブロック812の動作の態様において、特徴生成器ユニットを実行するプロセッサは、これらの特徴を、図5を参照して上述したように周辺デバイスの能力に基づいて、および/または図6を参照して上述したように、起こることが予期される、周辺デバイスに関係する挙動に基づいて、判定すればよい。特徴生成器ユニットを実行するプロセッサは、図7Aを参照して上述したように、周辺デバイスに関係する特徴をサーバから取得してもよい。
挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサは、ブロック806において生成されたリーン分類器モデルを、ブロック812において判定された、周辺デバイスに関係する1つまたは複数の特徴を含むように修正することができる。ブロック814において実施される動作の態様において、挙動分析器ユニットを実行するプロセッサは、リーン分類器モデルを、周辺デバイス上に存在する特徴と、周辺デバイスに関係し、および/または周辺デバイスに依存する、モバイルコンピューティングデバイス上の特徴とを反映するように、たとえばブロック812において判定された特徴をブロック806において生成されたリーン分類器に組み込むことによって、サーバと接触する必要なく修正することができる。言い換えれば、モバイルコンピューティングデバイス上の、および随意には周辺デバイス上の挙動観察器ユニットを実行するプロセッサは、上述したように、周辺デバイスに関係する特徴を、望ましくない活動について観察し始めてよい。
プロセスは、図4を参照して上述した方法400のブロック410において、挙動観察器ユニットを実行するプロセッサが、修正された分類器モデルに含まれる周辺デバイス特徴に関係する、モバイルコンピューティングデバイス上での挙動を観察し始めることができるように継続し得る。
図9は、モバイルコンピューティングデバイスおよび/または周辺デバイス上で動作する挙動観察器ユニットから受信されたモバイルコンピューティングデバイス観察結果に基づいて挙動ベクトルを生成するための、モバイルコンピューティングデバイス上で実行する1つまたは複数のプロセッサによって実装することができる態様方法900を示す。方法900の動作は、図4を参照して上述した方法400のブロック410〜412の動作の態様を実装し、方法400のブロック408において、モバイルコンピューティングデバイスに接続されている周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴の挙動をテストする分類器モデルをモバイルコンピューティングデバイスが取得した後で始まり得る。
ブロック902において、挙動観察器ユニットを実行するプロセッサは、周辺デバイスの対話に関与し得るモバイルコンピューティングデバイス上の様々なプロセス、アプリケーション、構成、状態など(たとえば、周辺デバイスを制御するための特徴および/または周辺デバイスによって有効にされた、モバイルコンピューティングデバイス上の拡張特徴)を観察することなどによって、ブロック408において取得された分類器モデルに含まれる周辺デバイス特徴に関係する、モバイルコンピューティングデバイス上で起こる挙動を観察することができる。言い換えれば、ブロック902の動作を実施する際、挙動観察器ユニットを実行するプロセッサは、周辺デバイスに影響するか、または周辺デバイスによって影響され得る、モバイルコンピューティングデバイス上でローカルに起こる挙動に焦点を当てる。
ブロック904において、挙動観察器ユニットを実行するプロセッサは、ブロック408において取得された分類器モデルに含まれる特徴に関して周辺デバイスの挙動を記述し、特徴を述べる観察結果を、周辺デバイス上で動作する挙動観察器ユニットから受信することもできる。一態様(図示せず)では、挙動分析器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスに、周辺デバイス上で動作する挙動観察器ユニットを、図4を参照して上述した方法400のブロック408において取得された分類器モデルに含まれる特徴の挙動を分類する際に有用であり得る、周辺デバイス上で起こる挙動を観察するように構成し得る情報を送らせ得る。言い換えれば、モバイルコンピューティングデバイス上の挙動観察器ユニットを実行するプロセッサがモバイルコンピューティングデバイス上の様々な特性、特徴、プロセスなどを、周辺デバイスに関係する、悪意のある/性能を劣化させる活動について監視している間、周辺デバイス上の挙動観察器ユニットは、モバイルコンピューティングデバイスに関係する、周辺デバイス上で起こる挙動を監視すればよい。具体的には、周辺デバイス上の挙動観察器ユニットは、周辺デバイスが、悪意のある/性能を劣化させる挙動をモバイルコンピューティングデバイス上で起こさせているかどうか、モバイルコンピューティングデバイスが、悪意のある/性能を劣化させる挙動を周辺デバイス上で起こさせいるかどうか、または両方のデバイスの活動が、デバイスの一方もしくは両方において、悪意のある/性能を劣化させる挙動を起こさせているかどうか判定する際に有用であり得る、モバイルコンピューティングデバイスとの通信に関係する特徴および/またはモバイルコンピューティングデバイスと交換される入力を監視すればよい。したがって、一態様では、周辺デバイス上の挙動観察器ユニットは、周辺デバイス上で、または周辺デバイスとモバイルコンピューティングデバイスとの間で起こる活動および挙動を観察するのに、モバイルコンピューティングデバイス上で動作する挙動観察器ユニットよりも良好な位置にあり得る。そのような態様において、モバイルコンピューティングデバイスは、周辺デバイスに関係する、モバイルコンピューティングデバイス上の悪意のある/性能を劣化させる挙動が起きているかどうかをより正確に判定するのに、周辺デバイス上で動作する挙動観察器ユニットの視点を活用し得る。
ブロック906において、挙動分析器ユニットを実行するプロセッサは、ブロック904において周辺デバイスから受信された観察結果、およびブロック902において、周辺デバイスに関係する、モバイルコンピューティングデバイス上で観察された挙動のうちの少なくとも1つに基づいて、モバイルコンピューティングデバイスの現在の構成についての挙動ベクトルを生成することができる。ブロック906において実施される動作の態様において、挙動分析器ユニットを実行するプロセッサは、周辺デバイス上で動作する挙動観察器ユニットからの観察結果を、周辺デバイスがそのような挙動観察器ユニットを含むときはいつでも使用することができる。さらに、挙動観察器ユニットを含まないレガシー/より古い周辺デバイス用に、挙動分析器ユニットを実行するプロセッサは、モバイルコンピューティングデバイス上で動作する挙動観察器ユニットからの観察結果のみに基づいて挙動ベクトルを生成すればよい。
プロセスは、挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサが、周辺デバイスに関係する、モバイルコンピューティングデバイス上の悪意のある/性能を劣化させる挙動が起きているかどうか判定するために、ブロック906において生成された挙動ベクトルを、方法400のブロック408において取得された分類器モデルに適用することができるように、図4を参照して上述した方法400のブロック414においてスタートし続けてよい。
図10は、モバイルコンピューティングデバイス接続された周辺デバイスから受信された通信および/または入力に関係する観察結果に基づいて挙動ベクトルを生成するための、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサによって実装することができる態様方法1000を示す。方法1000の動作は、図4を参照して上述した方法400のブロック410〜412の動作の態様を実装し、方法400のブロック408において、挙動分析器ユニットを実行するプロセッサが、周辺デバイスに関係する、モバイルコンピューティングデバイス上での特徴を含む分類器モデルを取得した後で始まり得る。
一態様では、モバイルコンピューティングデバイスは、図9を参照して上述したように、モバイルコンピューティングデバイスが、周辺デバイス上での性能、構成、プロセス、挙動などに関係する直接観察結果および他の情報を受信することを可能にし得る、周辺デバイス上の専用APIも専用の挙動観察器ユニットも含まない周辺デバイスと通信し/周辺デバイスに接続され得る。そのような態様において、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスが、図9を参照して上述したような直接観察を行う/受信することができないとき、モバイルコンピューティングデバイスに関係し得る、周辺デバイス上で起こる挙動の間接観察を行うために、周辺デバイスから受信された様々な通信および/または入力を解釈するように構成されてよい。
ブロック902において、モバイルコンピューティングデバイス上の挙動分析器ユニットを実行するプロセッサは、図9を参照して上述したように、ブロック408において受信された分類器モデルに含まれる、周辺デバイスに関係する特徴に関係する、モバイルコンピューティングデバイス上で起こる挙動を観察し得る。
ブロック1002において、挙動観察器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスと周辺デバイスとの間の通信に関係する、および/またはモバイルコンピューティングデバイス上の周辺デバイスから受信された入力に関係する、モバイルコンピューティングデバイス上での挙動を監視および/または観察し得る。一態様では、挙動観察器ユニットを実行するプロセッサは、周辺デバイスの状態および/または周辺デバイス上で起きている挙動を、デバイスの間の通信パターンを観察することによって導出または推論することができ、それらの通信を、モバイルコンピューティングデバイス上の観察可能な挙動と、または周辺デバイス上の予測される挙動と相関させればよい。たとえば、挙動観察器ユニットを実行するプロセッサは、モバイルコンピューティングデバイスに、クレジットカード情報を秘密に記憶するよう命令する、クレジットカードリーダ周辺デバイスからの入力を監視すればよい。別の例では、挙動観察器ユニットを実行するプロセッサは、現在の高いレートの速度を報告する、自動車周辺デバイスからモバイルコンピューティングデバイスへの通信と、自動車周辺デバイスに、ブレーキ/減速手順を緩やかに実施するよう命令する、モバイルコンピューティングデバイスから自動車周辺デバイスへの通信とを監視すればよい。
ブロック1004において、挙動分析器ユニットを実行するプロセッサは、ブロック1002において取得されたモバイルコンピューティングデバイス上で起こる観察された挙動、ならびにブロック1002において取得された、周辺デバイスとの通信および/または周辺デバイスから受信された入力に関係する観察結果のうちの少なくとも1つに基づいて、モバイルコンピューティングデバイスの現在の構成についての挙動ベクトルを生成し得る。言い換えれば、図9を参照して上述したように、周辺デバイス上の挙動、プロセスなどの直接観察結果を受信しなかったにもかかわらず、挙動分析器ユニットを実行するプロセッサコンピューティングデバイスは、モバイルコンピューティングデバイス上でローカルに起きている挙動の観察、および周辺デバイスとの対話から導出された間接的観察に基づいて、モバイルコンピューティングデバイス上で起こる挙動の正確な状態を反映するように、挙動ベクトルを知的に生成することができる。
したがって、プロセスは、挙動分析器ユニットおよび/または分類器ユニットを実行するプロセッサは、周辺デバイスに関係する望ましくない挙動が起きているかどうか判定するために、ブロック1004において生成された挙動ベクトルを、ブロック408において取得された分類器モデルに適用することができるように、図4を参照して上述した方法400のブロック414において継続し得る。
図11は、計算用モバイルコンピューティングデバイスから切断した周辺デバイスに関係する、分類器モデル中の特徴を削除するための、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサによって実装することができる態様方法1100を示す。
上述したように、モバイルコンピューティングデバイスは、周辺デバイスに関係する望ましくない挙動(たとえば、周辺デバイスによって引き起こされる、モバイルコンピューティングデバイス上の悪意のある/性能を劣化させる活動および/またはモバイルコンピューティングデバイスによって引き起こされる、周辺デバイス上の悪意のある/性能を劣化させる活動)を検出するために、モバイルコンピューティングデバイスに接続された周辺デバイスに関係する特徴を監視/観察する必要があり得る。ただし、そのような望ましくない挙動を検出するためにモバイルコンピューティングデバイスが監視し得る特徴は、周辺デバイスがモバイルコンピューティングデバイスから切断すると、それ以上関係なくなる場合がある。したがって、一態様では、モバイルコンピューティングデバイス上で動作する1つまたは複数のプロセッサは、切断された周辺デバイスに関係する、分類器モデル(たとえば、図4を参照して上述した方法400のブロック408において受信された分類器)に含まれる特徴を削除するために、以下で説明する動作を実施してよく、そうすることによって、処理および電力リソースが、モバイルコンピューティングデバイスの性能に依然として関連する特徴を監視/観察するためにのみ使用されることを保証する。方法1100の動作は、挙動分析器ユニットを実行するプロセッサが、図4を参照して上述した方法400のブロック408において、周辺デバイスに関係する特徴を含む分類器を取得した後で始まり得る。
判定ブロック1102において、特徴監視エンジンを実行するプロセッサは、モバイルコンピューティングデバイスに現在接続されている周辺デバイスを定期的に判定することなどによって、周辺デバイスがモバイルコンピューティングデバイスから切断したかどうか判定し得る。たとえば、特徴監視エンジンを実行するプロセッサは、Bluetooth(登録商標)対応ワイヤレスキーボードとのワイヤレス接続が失われるか、または意図的に終了されたときを検出し得る。特徴監視エンジンを実行するプロセッサが、周辺デバイスがモバイルコンピューティングデバイスから切断していないと判定したことに応答して(すなわち、判定ブロック1102=「No」)、プロセッサは、周辺デバイスがモバイルコンピューティングデバイスから切断したとプロセッサが認識するまで、判定ブロック1102における上記動作を絶えず実施してよい。
特徴監視エンジンを実行するプロセッサが、周辺デバイスがモバイルコンピューティングデバイスから切断したと判定したことに応答して(すなわち、判定ブロック1102=「Yes」)、特徴生成器ユニットおよび/または挙動分析器ユニットを実行するプロセッサは、ブロック1104において、分類器モデルに含まれる、切断された周辺デバイスに関係する1つまたは複数の特徴を認識することができる。一態様では、特徴生成器ユニットおよび/または挙動分析器ユニットを実行するプロセッサは、切断された周辺デバイスによって有効にされた、モバイルコンピューティングデバイス上の拡張機能性/能力に関係する特徴および/または切断された周辺デバイスの制御もしくはそのデバイスとの通信に関係する、モバイルコンピューティングデバイス上の機能について、分類器モデルを走査すればよい。たとえば、モバイルコンピューティングデバイス上のプロセッサは、切断された自動車周辺デバイスの制御に関係する特徴(たとえば、「セルフパーキング」に関係する特徴)および切断された周辺デバイスと通信し/そのデバイスから情報を受信するための同様の特徴を検出し得る。
ブロック1106において、特徴生成器ユニットおよび/または挙動分析器ユニットを実行するプロセッサは、ブロック1104において認識された1つまたは複数の特徴を分類器モデルから削除してよい。ブロック1106において実施される動作のさらなる態様では、特徴生成器ユニットおよび/または挙動分析器ユニットを実行するプロセッサは、挙動観察器ユニットを実行するプロセッサに、ブロック1106において分類器ユニットから削除された特徴を観察/監視するのを停止するよう通知してよい。
別の態様(図示せず)では、特徴生成器ユニットを実行するプロセッサは、切断された周辺デバイスに関係する特徴/分類器を記憶することができ、それらの特徴/分類器を、切断された周辺デバイスに関連付けてよい。たとえば、プロセッサは、クレジットカードリーダ周辺デバイスが切断されたと検出したことに応答して分類器モデルから削除される、クレジットカードリーダ周辺デバイスに関係する特徴に関連付けられた、ブーストされた決定株および多数のテスト条件を記憶している場合がある。別の態様では、特徴生成器ユニットを実行するプロセッサは、切断された周辺デバイスが将来、モバイルコンピューティングデバイスに接続し直す場合、切断された周辺デバイスに関連付けられた、記憶された特徴、分類器、ブーストされた決定株などを迅速に取り出すことができ、そうすることによって、挙動観察器ユニットを実行するプロセッサが、それらの取り出された特徴を、大幅な遅延なしで観察し始めることを可能にする。
プロセスは、挙動観察器モジュールを実行するプロセッサは、分類器モデルの残りの特徴(すなわち、ブロック1104において、切断された周辺デバイスに関係するものとして認識されなかった特徴)を観察することができるように、図4を参照して上述した方法400のブロック410において継続し得る。
様々な態様は、様々なモバイルコンピューティングデバイスのいずれかに実装される場合があり、その一例が図12に示される。モバイルコンピューティングデバイス1200は、タッチスクリーンコントローラ1204および内部メモリ1206に結合されたプロセッサ1202を含む場合がある。プロセッサ1202は、汎用または特定の処理タスクに指定された1つもしくは複数のマルチコア集積回路であってもよい。内部メモリ1206は揮発性もしくは不揮発性メモリであってもよく、また、セキュアおよび/もしくは暗号化メモリであっても、または非セキュアおよび/もしくは非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。タッチスクリーンコントローラ1204およびプロセッサ1202は、抵抗感知タッチスクリーン、静電容量感知タッチスクリーン、赤外線感知タッチスクリーンなどの、タッチスクリーンパネル1212に結合される場合もある。加えて、モバイルコンピューティングデバイス1200のディスプレイは、タッチスクリーン能力を有する必要はない。
モバイルコンピューティングデバイス1200は、互いに結合され、かつ/またはプロセッサ1202に結合された、通信を送信および受信するための1つまたは複数の無線信号トランシーバ1208(たとえば、Peanut、Bluetooth(登録商標)、Zigbee、Wi-Fi、RF無線など)、およびアンテナ1210を有する場合がある。トランシーバ1208およびアンテナ1210は、様々なワイヤレス送信のプロトコルスタックおよびインターフェースを実装するために、上述の回路とともに使用される場合がある。モバイルコンピューティングデバイス1200は、セルラーネットワークを介する通信を可能にし、プロセッサに結合されたセルラーネットワークワイヤレスモデムチップ1216を含む場合がある。
モバイルコンピューティングデバイス1200は、プロセッサ1202に結合された周辺デバイス接続インターフェース1218を含む場合がある。周辺デバイス接続インターフェース1218は、1つのタイプの接続を受け入れるように単独で構成される場合があるか、またはUSB、FireWire、Thunderbolt、もしくはPCIeなどの様々なタイプの物理接続および通信接続を共通もしくはプロプライエタリに受け入れるように構成される場合がある。周辺デバイス接続インターフェース1218は、同様に構成された周辺デバイス接続ポート(図示せず)に結合される場合もある。
モバイルコンピューティングデバイス1200は、オーディオ出力を提供するためのスピーカ1214を含む場合もある。モバイルコンピューティングデバイス1200は、本明細書で説明された構成要素のすべてまたはいくつかを収容するための、プラスチック、金属、または材料の組合せから構築された筐体1220を含む場合もある。モバイルコンピューティングデバイス1200は、使い捨てまたは充電可能なバッテリーなどの、プロセッサ1202に結合された電源1222を含む場合もある。充電可能なバッテリーは、モバイルコンピューティングデバイス1200の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。モバイルコンピューティングデバイス1200は、ユーザ入力を受け取るための物理ボタン1224を含む場合もある。モバイルコンピューティングデバイス1200は、モバイルコンピューティングデバイス1200をオンオフするための電源ボタン1226を含む場合もある。
上述された様々な態様はまた、図13に示されたラップトップコンピュータ1300などの様々なモバイルコンピューティングデバイス内に実装される場合がある。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面1317を含み、したがって、タッチスクリーンディスプレイを装備した上述のモバイルコンピューティングデバイス上で実施されるものと同様のドラッグジェスチャ、スクロールジェスチャ、およびフリックジェスチャを受け取ることができる。ラップトップコンピュータ1300は、通常、揮発性メモリ1312、およびフラッシュメモリのディスクドライブ1313などの大容量不揮発性メモリに結合されたプロセッサ1311を含む。加えて、コンピュータ1300は、プロセッサ1311に結合されたワイヤレスデータリンクおよび/または携帯電話トランシーバ1316に接続され得る、電磁放射を送受信するための1つまたは複数のアンテナ1308を有する場合がある。コンピュータ1300は、プロセッサ1311に結合されたフロッピーディスクドライブ1314およびコンパクトディスク(CD)ドライブ1315を含む場合もある。ノートブック構成では、コンピュータの筐体は、すべてがプロセッサ1311に結合された、タッチパッド1317、キーボード1318、およびディスプレイ1319を含む。コンピューティングデバイスの他の構成には、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールが含まれ得るし、それらは様々な態様と連携して使用される場合もある。
様々な態様は、様々な周辺デバイスのいずれとも実装することができ、その一例が図14に示される。たとえば、周辺デバイス1400は、内部メモリ1404に結合されたプロセッサ1402を含み得る。内部メモリ1404は、揮発性メモリもしくは不揮発性メモリであり得るし、また、セキュアメモリおよび/もしくは暗号化メモリ、または非セキュアメモリおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであり得る。プロセッサ1402はまた、抵抗感知タッチスクリーン、静電容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンディスプレイ1414に結合され得る。加えて、周辺デバイス1400のディスプレイ1414は、タッチスクリーン能力を有する必要はない。加えて、周辺デバイス1400は、プロセッサ1402に結合されたトランシーバ1416に接続できる、電磁放射を送受信するための1つまたは複数のアンテナ1408を有することができる。周辺デバイス1400は、ユーザ入力を受け取るための物理ボタン1412を含む場合もある。周辺デバイス1400は、周辺デバイス1400をオンオフするための電源ボタン1418を含む場合もある。周辺デバイスは、使い捨てまたは充電可能なバッテリーなどの、プロセッサ1402に結合された電源1410も有し得る。周辺デバイスは、可聴音を出力するように構成されたスピーカ1420も有し得る。
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行されるコンピュータプログラムコードすなわち「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれ得る。本出願で使用される場合、コンピュータ可読記憶媒体に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードのような)機械語コードを指し得る。
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが稼働する場合)ユーザ空間へと編成され、(特権コードが稼働する場合)カーネル空間へと編成される。この分離は、カーネル空間の一部であるコードがGPL認可される必要がある一方で、ユーザ空間内で稼働するコードがGPL認可されなくてもよい、Androidおよび他の一般公有使用許諾(GPL)環境において特に重要である。本明細書で説明された様々なソフトウェア構成要素/モジュール/ユニットは、明示的に別段の記述がない限り、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な態様のステップが提示された順序で実施されなければならないことを要求または意味するものではない。当業者によって諒解されるように、上記の態様におけるステップの順序は、いかなる順序で実施されてもよい。「したがって」、「次いで」、「次に」、などのような単語は、ステップの順序を限定することを意図しておらず、これらの単語は、単に、方法の説明を通じて読者を導くために使用される。さらに、たとえば冠詞「a」、「an」、または「the」を用いる、請求項要素に対する単数での任意の参照は、要素を単数に限定すると解釈されるべきではない。
本出願で使用されるように、「構成要素」、「モジュール」、「システム」、「エンジン」、「生成器」、「ユニット」、「マネージャ」などの用語は、限定はしないが、特定の動作または機能を実施するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどのコンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で稼働しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、それらに限定されない。例として、コンピューティングデバイス上で稼働しているアプリケーションとコンピューティングデバイスの両方が、構成要素と呼ばれる場合がある。1つまたは複数の構成要素は、プロセスおよび/または実行スレッドの中に存在する場合があり、1つの構成要素は、1つのプロセッサもしくはコアに局在する場合があり、かつ/または2つ以上のプロセッサもしくはコアの間に分散する場合がある。加えて、これらの構成要素は、様々な命令および/またはデータ構造を記憶している様々な非一時的コンピュータ可読媒体から実行することができる。構成要素は、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信することができる。
本明細書で開示された態様に関して記載された様々な例示的な論理ブロック、モジュール、ユニット、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装される場合がある。ハードウェアとソフトウェアのこの互換性を明確に示すために、種々の例示的構成要素、ブロック、モジュール、ユニット、回路、およびステップが、上記ではその機能性に関して一般的に説明されてきた。そのような機能性が、ハードウェアとして実現されるか、ソフトウェアとして実現されるかは、具体的な適用例およびシステム全体に課せられる設計制約によって決まる。当業者は、説明した機能性を特定の適用例ごとに様々な方式で実装し得るが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、ユニット、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェア構成要素、または本明細書で説明する機能を実施するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマルチプロセッサであり得るが、代替的に、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサとの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成としても実装され得る。代替として、いくつかのステップまたは方法は、所与の機能に特有の回路によって実施される場合がある。
1つまたは複数の態様に記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装される場合がある。ソフトウェアに実装される場合、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に、1つまたは複数の命令またはコードとして記憶される場合がある。本明細書で開示した方法またはアルゴリズムのステップは、非一時的なコンピュータ可読媒体またはプロセッサ可読記憶媒体上に常駐し得るプロセッサ実行可能ソフトウェアモジュールにおいて具体化され得る。非一時的なコンピュータ可読またはプロセッサ可読の記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的なコンピュータ可読またはプロセッサ可読の媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得るし、コンピュータによってアクセスされ得る任意の他の媒体を含む場合がある。ディスク(disk)およびディスク(disc)は、本明細書において使用されるときに、コンパクトディスク(disc)(「CD」)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せは、また、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
開示された態様の上記の説明は、任意の当業者が本発明を作成または使用することができるように提供される。これらの態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の要旨または範囲から逸脱することなく、他の態様に適用される場合がある。したがって、本発明は、本明細書に示された態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示された原理および新規の特徴と一致する最も広い範囲を与えられるべきである。