(57)【要約】  疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動を検出するための方法、デバイス、およびシステムは、観測されるべきコンピューティングデバイスの挙動、観測されるべき挙動の数、および、モバイルデバイスの挙動が観測される際の詳細度または粒度のレベルを、インテリジェントに、動的に、および/または適応的に決定する。様々な態様は、過剰な量の処理、メモリ、またはエネルギーのリソースを必要とすることなく、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動を効率的に特定する。
2016518633.tif 000002
【特許請求の範囲】
【請求項１】
モバイルデバイスの挙動をある期間にわたって観測して、通常の動作パターンと一致しないモバイルデバイスの挙動を認識するための方法であって、
モバイルデバイスの動作、モバイルデバイスのイベント、データネットワークの活動、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアアプリケーションの活動または動作、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、アプリケーションレベルにおける条件およびイベント、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしいモバイルデバイスの挙動を特定するステップとを含む、方法。
【請求項２】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの読取り/書込み/検索動作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含む、請求項1に記載の方法。
【請求項３】
モバイルデバイスのイベントが、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含む、請求項1に記載の方法。
【請求項４】
データネットワークの活動が、接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の、1つまたは複数を含む、請求項1に記載の方法。
【請求項５】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含む、請求項1に記載の方法。
【請求項６】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含む、請求項1に記載の方法。
【請求項７】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含む、請求項1に記載の方法。
【請求項８】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含む、請求項1に記載の方法。
【請求項９】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１０】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１１】
ソフトウェアアプリケーションの活動または動作が、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む、請求項1に記載の方法。
【請求項１２】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１３】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含む、請求項1に記載の方法。
【請求項１４】
前記アプリケーションレベルにおける条件およびイベントが、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、仮想プライベートネットワーク、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含む、請求項1に記載の方法。
【請求項１５】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、車両対車両の通信、および/または機械対機械の通信のための無線の使用を監視することと、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することとを含む、請求項1に記載の方法。
【請求項１６】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１７】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップが、
前記期間にわたってモバイルデバイスの挙動を観測するステップと、
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップとを含む、請求項1に記載の方法。
【請求項１８】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップが、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取るステップと、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取るステップと、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行するステップと、
挙動ベクトルを生成するステップとを含む、請求項17に記載の方法。
【請求項１９】
挙動ベクトルを生成するステップが、
前記観測されたモバイルデバイスの挙動を簡潔に記述するベクトルデータ構造を生成するステップを含む、請求項18に記載の方法。
【請求項２０】
挙動ベクトルを生成するステップが、
前記モバイルデバイスの様々なレベル/モジュールにおいてAPIから収集された情報を含むベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２１】
挙動ベクトルを生成するステップが、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムおよびネットワーキングサブシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
ネットワークの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２２】
挙動ベクトルを生成するステップが、
一連の数字を含むベクトルデータ構造を生成するステップを含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表す、請求項18に記載の方法。
【請求項２３】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、
どれだけのネットワークトラフィックが前記モバイルデバイスによって生成されたか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定する、請求項22に記載の方法。
【請求項２４】
挙動ベクトルを生成するステップが、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２５】
挙動ベクトルを生成するステップが、前記モバイルデバイスのアプリケーションレベルにおいて収集された情報を含むベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２６】
挙動ベクトルを生成するステップが、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２７】
挙動ベクトルを生成するステップが、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２８】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップがさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含む、請求項18に記載の方法。
【請求項２９】
2つ以上のプロセッサコアを含むマルチコアプロセッサを含むコンピューティングデバイスであって、前記2つ以上のプロセッサコアの1つまたは複数が、
モバイルデバイスの動作、モバイルデバイスのイベント、データネットワークの活動、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアアプリケーションの活動または動作、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、アプリケーションレベルにおける条件およびイベント、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしいモバイルデバイスの挙動を特定するステップとを含む動作を実行するようにプロセッサ実行可能命令によって構成される、コンピューティングデバイス。
【請求項３０】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの読取り/書込み/検索動作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３１】
モバイルデバイスのイベントが、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３２】
データネットワークの活動が、接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３３】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３４】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３５】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３６】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３７】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３８】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項３９】
ソフトウェアアプリケーションの活動または動作が、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４０】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４１】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４２】
前記アプリケーションレベルにおける条件およびイベントが、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、仮想プライベートネットワーク、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４３】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、車両対車両の通信、および/または機械対機械の通信のための無線の使用を監視することと、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することとを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４４】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４５】
1つまたは複数のモバイルデバイスの挙動を動的に選択するステップが、
前記期間にわたってモバイルデバイスの挙動を観測するステップと、
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップとを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項29に記載のコンピューティングデバイス。
【請求項４６】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップが、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取るステップと、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取るステップと、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行するステップと、
挙動ベクトルを生成するステップとを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項45に記載のコンピューティングデバイス。
【請求項４７】
挙動ベクトルを生成するステップが、
前記観測されたモバイルデバイスの挙動を簡潔に記述するベクトルデータ構造を生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項４８】
挙動ベクトルを生成するステップが、
前記モバイルデバイスの様々なレベル/モジュールにおいてAPIから収集された情報を含み得るベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項４９】
挙動ベクトルを生成するステップが、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムおよびネットワーキングサブシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
ネットワークの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５０】
挙動ベクトルを生成するステップが、
一連の数字を含むベクトルデータ構造を生成するステップを含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表すように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５１】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、
どれだけのネットワークトラフィックが前記モバイルデバイスによって生成されたか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定するように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５２】
挙動ベクトルを生成するステップが、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５３】
挙動ベクトルを生成するステップが、前記モバイルデバイスのアプリケーションレベルにおいて収集された情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５４】
挙動ベクトルを生成するステップが、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５５】
挙動ベクトルを生成するステップが、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５６】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップがさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項46に記載のコンピューティングデバイス。
【請求項５７】
モバイルデバイスの動作、モバイルデバイスのイベント、データネットワークの活動、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアアプリケーションの活動または動作、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、アプリケーションレベルにおける条件およびイベント、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段と、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしいモバイルデバイスの挙動を特定するための手段とを含む、コンピューティングデバイス。
【請求項５８】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの読取り/書込み/検索動作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項５９】
モバイルデバイスのイベントが、デバイス状態の変化とセンサデバイス状態の変化の1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６０】
データネットワークの活動が、接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６１】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６２】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６３】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６４】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含む、請求項57に記載のコンピューティングデバイス。
【請求項６５】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６６】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６７】
ソフトウェアアプリケーションの活動または動作が、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む、請求項57に記載のコンピューティングデバイス。
【請求項６８】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項６９】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含む、請求項57に記載のコンピューティングデバイス。
【請求項７０】
前記アプリケーションレベルにおける条件およびイベントが、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、仮想プライベートネットワーク、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項７１】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、車両対車両の通信、および/または機械対機械の通信のための無線の使用を監視することと、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することとを含む、請求項57に記載のコンピューティングデバイス。
【請求項７２】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含む、請求項57に記載のコンピューティングデバイス。
【請求項７３】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段が、
前記期間にわたってモバイルデバイスの挙動を観測するための手段と、
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するための手段とを含む、請求項57に記載のコンピューティングデバイス。
【請求項７４】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するための手段が、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取るための手段と、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取るための手段と、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行するための手段と、
挙動ベクトルを生成するための手段とを含む、請求項73に記載のコンピューティングデバイス。
【請求項７５】
挙動ベクトルを生成するための手段が、
前記観測されたモバイルデバイスの挙動を簡潔に記述するベクトルデータ構造を生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項７６】
挙動ベクトルを生成するための手段が、
前記モバイルデバイスの様々なレベル/モジュールにおいてAPIから収集された情報を含み得るベクトルを生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項７７】
挙動ベクトルを生成するための手段が、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムおよびネットワーキングサブシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
ネットワークの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項７８】
挙動ベクトルを生成するための手段が、
一連の数字を含むベクトルデータ構造を生成するための手段を含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表す、請求項74に記載のコンピューティングデバイス。
【請求項７９】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、
どれだけのネットワークトラフィックが前記モバイルデバイスによって生成されたか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定する、請求項78に記載のコンピューティングデバイス。
【請求項８０】
挙動ベクトルを生成するための手段が、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項８１】
挙動ベクトルを生成するための手段が、前記モバイルデバイスのアプリケーションレベルにおいて収集された情報を含むベクトルを生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項８２】
挙動ベクトルを生成するための手段が、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項８３】
挙動ベクトルを生成するための手段が、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するための手段を含む、請求項74に記載のコンピューティングデバイス。
【請求項８４】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するための手段がさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するための手段を含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含む、請求項74に記載のコンピューティングデバイス。
【請求項８５】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記プロセッサ実行可能命令が、プロセッサに、
モバイルデバイスの動作、モバイルデバイスのイベント、データネットワークの活動、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアアプリケーションの活動または動作、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、アプリケーションレベルにおける条件およびイベント、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしいモバイルデバイスの挙動を特定するステップとを含む動作を実行させるように構成される、非一時的プロセッサ可読記憶媒体。
【請求項８６】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの読取り/書込み/検索動作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項８７】
モバイルデバイスのイベントが、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項８８】
データネットワークの活動が、接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項８９】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９０】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９１】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９２】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９３】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９４】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９５】
ソフトウェアアプリケーションの活動または動作が、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９６】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９７】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９８】
前記アプリケーションレベルにおける条件およびイベントが、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、仮想プライベートネットワーク、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項９９】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、車両対車両の通信、および/または機械対機械の通信のための無線の使用を監視することと、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することとを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項１００】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０１】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップが、
前記期間にわたってモバイルデバイスの挙動を観測するステップと、
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップとを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項85に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０２】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップが、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取るステップと、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取るステップと、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行するステップと、
挙動ベクトルを生成するステップとを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項101に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０３】
挙動ベクトルを生成するステップが、
前記観測されたモバイルデバイスの挙動を簡潔に記述するベクトルデータ構造を生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０４】
挙動ベクトルを生成するステップが、
前記モバイルデバイスの様々なレベル/モジュールにおいてAPIから収集された情報を含み得るベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０５】
挙動ベクトルを生成するステップが、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムおよびネットワーキングサブシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
ネットワークの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０６】
挙動ベクトルを生成するステップが、
一連の数字を含むベクトルデータ構造を生成するステップを含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表すように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０７】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、
どれだけのネットワークトラフィックが前記モバイルデバイスによって生成されたか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定するように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項106に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０８】
挙動ベクトルを生成するステップが、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１０９】
挙動ベクトルを生成するステップが、前記モバイルデバイスのアプリケーションレベルにおいて収集された情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１１０】
挙動ベクトルを生成するステップが、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１１１】
挙動ベクトルを生成するステップが、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１１２】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップがさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項102に記載の非一時的プロセッサ可読記憶媒体。
【請求項１１３】
モバイルデバイスの性能を向上させる方法であって、
モバイルデバイスのプロセッサに対して、1つまたは複数のモバイルデバイスの挙動のリアルタイム挙動分析を実行して、粗い観測結果を生成するステップと、
前記粗い観測から疑わしい挙動を特定するステップと、
より詳細なさらなる観測を必要とする前記モバイルデバイスの挙動を動的に決定するステップと、
前記さらなる観測に必要とされる詳細度のレベルを動的に決定するステップと、
前記さらなる観測に必要とされる前記決定された詳細度のレベルに基づいて、より精密な観測を実行するステップと、
前記より精密な観測から疑わしい挙動を特定するステップとを含む、方法。
【請求項１１４】
前記特定された疑わしい挙動を修正するようにモバイルデバイスの操作を実行するステップをさらに含む、請求項113に記載の方法。
【請求項１１５】
2つ以上のプロセッサコアを含むマルチコアプロセッサを含むコンピューティングデバイスであって、前記2つ以上のプロセッサコアの1つまたは複数が、
モバイルデバイスのプロセッサに対して、1つまたは複数のモバイルデバイスの挙動のリアルタイム挙動分析を実行して、粗い観測結果を生成するステップと、
前記粗い観測から疑わしい挙動を特定するステップと、
より詳細なさらなる観測を必要とする前記モバイルデバイスの挙動を動的に決定するステップと、
前記さらなる観測に必要とされる詳細度のレベルを動的に決定するステップと、
前記さらなる観測に必要とされる前記決定された詳細度のレベルに基づいて、より精密な観測を実行するステップと、
前記より精密な観測から疑わしい挙動を特定するステップとを含む動作を実行するように、プロセッサ実行可能命令によって構成される、コンピューティングデバイス。
【請求項１１６】
前記プロセッサコアの1つまたは複数が、
前記特定された疑わしい挙動を修正するようにモバイルデバイスの操作を実行するステップをさらに含む動作を実行するように、プロセッサ実行可能命令によって構成される、請求項115に記載のコンピューティングデバイス。
【請求項１１７】
モバイルデバイスのプロセッサに対して、1つまたは複数のモバイルデバイスの挙動のリアルタイム挙動分析を実行して、粗い観測結果を生成するための手段と、
前記粗い観測から疑わしい挙動を特定するための手段と、
より詳細なさらなる観測を必要とする前記モバイルデバイスの挙動を動的に決定するための手段と、
前記さらなる観測に必要とされる詳細度のレベルを動的に決定するための手段と、
前記さらなる観測に必要とされる前記決定された詳細度のレベルに基づいて、より精密な観測を実行するための手段と、
前記より精密な観測から疑わしい挙動を特定するための手段とを含む、コンピューティングデバイス。
【請求項１１８】
前記特定された疑わしい挙動を修正するようにモバイルデバイスの操作を実行するための手段をさらに含む、請求項117に記載のコンピューティングデバイス。
【請求項１１９】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記プロセッサ実行可能命令が、プロセッサに、
モバイルデバイスのプロセッサに対して、1つまたは複数のモバイルデバイスの挙動のリアルタイム挙動分析を実行して、粗い観測結果を生成するステップと、
前記粗い観測から疑わしい挙動を特定するステップと、
より詳細なさらなる観測を必要とする前記モバイルデバイスの挙動を動的に決定するステップと、
前記さらなる観測に必要とされる詳細度のレベルを動的に決定するステップと、
前記さらなる観測に必要とされる前記決定された詳細度のレベルに基づいて、より精密な観測を実行するステップと、
前記より精密な観測から疑わしい挙動を特定するステップとを含む動作を実行させるためのものである、非一時的プロセッサ可読記憶媒体。
【請求項１２０】
前記特定された疑わしい挙動を修正するようにモバイルデバイスの操作を実行するステップをさらに含む動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項119に記載の非一時的プロセッサ可読記憶媒体。
【請求項１２１】
モバイルデバイスの挙動をある期間にわたって観測して、通常の動作パターンと一致しないモバイルデバイスの挙動を認識するための方法であって、
モバイルデバイスのプロセッサにおいて、前記モバイルデバイスの疑わしい挙動を特定するために、前記モバイルデバイス中で観測されるべき特徴を決定するステップと、
前記決定された特徴と関連付けられるハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するステップとを含む、方法。
【請求項１２２】
前記ハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するステップが、
慣性センサコンポーネント、
バッテリーハードウェアコンポーネント、
ブラウザ支援ハードウェアコンポーネント、
カメラハードウェアコンポーネント、
加入者識別モジュール(SIM)ハードウェアコンポーネント、
測位ハードウェアコンポーネント、
マイクロフォンハードウェアコンポーネント、
無線インターフェースハードウェアコンポーネント、
スピーカーハードウェアコンポーネント、
スクリーンハードウェアコンポーネント、
同期ハードウェアコンポーネント、
ストレージコンポーネント、
universal serial busハードウェアコンポーネント、
ユーザ対話ハードウェアコンポーネント、
慣性センサドライバコンポーネント、
バッテリーハードウェアドライバコンポーネント、
ブラウザ支援ハードウェアドライバコンポーネント、
カメラハードウェアドライバコンポーネント、
SIMハードウェアドライバコンポーネント、
測位ハードウェアドライバコンポーネント、
マイクロフォンハードウェアドライバコンポーネント、
無線インターフェースハードウェアドライバコンポーネント、
スピーカーハードウェアドライバコンポーネント、
スクリーンハードウェアドライバコンポーネント、
同期ハードウェアドライバコンポーネント、
ストレージドライバコンポーネント、
universal serial busハードウェアドライバコンポーネント、
universal serial busを通じて接続されたハードウェアコンポーネント、および、
ユーザ対話ハードウェアドライバコンポーネントの1つまたは複数から、挙動情報を収集するステップを含む、請求項121に記載の方法。
【請求項１２３】
前記特徴と関連付けられる前記ハードウェアコンポーネントから挙動情報を収集するステップが、前記モバイルデバイスのソフトウェアアプリケーションによる前記ハードウェアコンポーネントのアクセスまたは使用のためのアプリケーションプログラミングインターフェース(API)呼出し情報を一時的または永続的に記憶するAPI呼出しのログから、情報を収集するステップを含む、請求項122に記載の方法。
【請求項１２４】
前記モバイルデバイスの前記疑わしい挙動を特定するために、前記モバイルデバイス中で観測されるべき前記特徴を決定するステップが、
機械学習技法を適用して、挙動ベクトルのクラウドコーパスを記述する分類器モデルの第1の群を生成するステップと、
分類器モデルの前記第1の群内のどの要因が、モバイルデバイス挙動が悪性であるかまたは良性であるかをモバイルデバイスが最終的に判定することを可能にする最高の確率を有するかを判定するステップと、
前記モバイルデバイス挙動が悪性であるかまたは良性であるかを、前記判定された要因に基づいて、前記モバイルデバイスが最終的に判定することを可能にするのに適切であるものとして、非常に少数の要因およびデータポイントを特定する、分類器モデルの第2の群を生成するステップと、
分類器モデルの前記第2の群に基づいてモバイルデバイスの分類器モデルを生成するステップと、
前記生成された分類器モデルを使用して、観測されるべき前記特徴を特定するステップとを含む、請求項121に記載の方法。
【請求項１２５】
前記生成された分類器モデルを使用して、前記収集された挙動情報を分析するステップをさらに含む、請求項124に記載の方法。
【請求項１２６】
動作を実行するようにプロセッサ実行可能命令によって構成されたプロセッサを含み、前記動作が、
前記モバイルデバイスの疑わしい挙動を特定するために、観測されるべき特徴を決定するステップと、
前記決定された特徴と関連付けられるハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するステップとを含む、モバイルコンピューティングデバイス。
【請求項１２７】
前記ハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するステップが、
慣性センサコンポーネント、
バッテリーハードウェアコンポーネント、
ブラウザ支援ハードウェアコンポーネント、
カメラハードウェアコンポーネント、
加入者識別モジュール(SIM)ハードウェアコンポーネント、
測位ハードウェアコンポーネント、
マイクロフォンハードウェアコンポーネント、
無線インターフェースハードウェアコンポーネント、
スピーカーハードウェアコンポーネント、
スクリーンハードウェアコンポーネント、
同期ハードウェアコンポーネント、
ストレージコンポーネント、
universal serial busハードウェアコンポーネント、
ユーザ対話ハードウェアコンポーネント、
慣性センサドライバコンポーネント、
バッテリーハードウェアドライバコンポーネント、
ブラウザ支援ハードウェアドライバコンポーネント、
カメラハードウェアドライバコンポーネント、
SIMハードウェアドライバコンポーネント、
測位ハードウェアドライバコンポーネント、
マイクロフォンハードウェアドライバコンポーネント、
無線インターフェースハードウェアドライバコンポーネント、
スピーカーハードウェアドライバコンポーネント、
スクリーンハードウェアドライバコンポーネント、
同期ハードウェアドライバコンポーネント、
ストレージドライバコンポーネント、
universal serial busハードウェアドライバコンポーネント、および、
ユーザ対話ハードウェアドライバコンポーネントの1つまたは複数から、挙動情報を収集するステップを含むように、動作を実行するように、前記プロセッサがプロセッサ実行可能命令によって構成される、請求項126に記載のモバイルコンピューティングデバイス。
【請求項１２８】
前記特徴と関連付けられる前記ハードウェアコンポーネントから挙動情報を収集するステップが、前記モバイルデバイスのソフトウェアアプリケーションによる前記ハードウェアコンポーネントのアクセスまたは使用のためのアプリケーションプログラミングインターフェース(API)呼出し情報を記憶するAPI呼出しのログから、情報を収集するステップを含むように、動作を実行するように、前記プロセッサがプロセッサ実行可能命令によって構成される、請求項127に記載のモバイルコンピューティングデバイス。
【請求項１２９】
前記モバイルデバイスの前記疑わしい挙動を特定するために、前記モバイルデバイスにおいて観測されるべき前記特徴を決定するステップが、
機械学習技法を適用して、挙動ベクトルのクラウドコーパスを記述する分類器モデルの第1の群を生成するステップと、
分類器モデルの前記第1の群内のどの要因が、モバイルデバイス挙動が悪性であるかまたは良性であるかをモバイルデバイスが最終的に判定することを可能にする最高の確率を有するかを判定するステップと、
前記モバイルデバイス挙動が悪性であるかまたは良性であるかを、前記判定された要因に基づいて、前記モバイルデバイスが最終的に判定することを可能にするのに適切であるものとして、非常に少数の要因およびデータポイントを特定する、分類器モデルの第2の群を生成するステップと、
分類器モデルの前記第2の群に基づいてモバイルデバイスの分類器モデルを生成するステップと、
前記生成された分類器モデルを使用して、観測されるべき前記特徴を特定するステップとを含むように、動作を実行するように、前記プロセッサがプロセッサ実行可能命令によって構成される、請求項126に記載のモバイルコンピューティングデバイス。
【請求項１３０】
前記生成された分類器モデルを使用して前記収集された挙動情報を分析するステップをさらに含む動作を実行するように、前記プロセッサがプロセッサ実行可能命令によって構成される、請求項129に記載のモバイルコンピューティングデバイス。
【請求項１３１】
前記モバイルデバイスの疑わしい挙動を特定するために、観測されるべき特徴を決定するための手段と、
前記決定された特徴と関連付けられるハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するための手段とを含む、モバイルコンピューティングデバイス。
【請求項１３２】
前記ハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するための手段が、
慣性センサコンポーネント、
バッテリーハードウェアコンポーネント、
ブラウザ支援ハードウェアコンポーネント、
カメラハードウェアコンポーネント、
加入者識別モジュール(SIM)ハードウェアコンポーネント、
測位ハードウェアコンポーネント、
マイクロフォンハードウェアコンポーネント、
無線インターフェースハードウェアコンポーネント、
スピーカーハードウェアコンポーネント、
スクリーンハードウェアコンポーネント、
同期ハードウェアコンポーネント、
ストレージコンポーネント、
universal serial busハードウェアコンポーネント、
ユーザ対話ハードウェアコンポーネント、
慣性センサドライバコンポーネント、
バッテリーハードウェアドライバコンポーネント、
ブラウザ支援ハードウェアドライバコンポーネント、
カメラハードウェアドライバコンポーネント、
シングルまたはデュアルSIMハードウェアドライバコンポーネント、
測位ハードウェアドライバコンポーネント、
マイクロフォンハードウェアドライバコンポーネント、
無線インターフェースハードウェアドライバコンポーネント、
スピーカーハードウェアドライバコンポーネント、
スクリーンハードウェアドライバコンポーネント、
同期ハードウェアドライバコンポーネント、
ストレージドライバコンポーネント、
universal serial busハードウェアドライバコンポーネント、および、
ユーザ対話ハードウェアドライバコンポーネントの1つまたは複数から、挙動情報を収集するための手段を含む、請求項131に記載のモバイルコンピューティングデバイス。
【請求項１３３】
前記特徴と関連付けられる前記ハードウェアコンポーネントから挙動情報を収集するための手段が、前記モバイルデバイスのソフトウェアアプリケーションによる前記ハードウェアコンポーネントのアクセスまたは使用のためのアプリケーションプログラミングインターフェース(API)呼出し情報を記憶するAPI呼出しのログから、情報を収集するための手段を含む、請求項132に記載のモバイルコンピューティングデバイス。
【請求項１３４】
前記モバイルデバイスの前記疑わしい挙動を特定するために、前記モバイルデバイス中で観測されるべき前記特徴を決定するための手段が、
機械学習技法を適用して、挙動ベクトルのクラウドコーパスを記述する分類器モデルの第1の群を生成するための手段と、
分類器モデルの前記第1の群内のどの要因が、モバイルデバイス挙動が悪性であるかまたは良性であるかをモバイルデバイスが最終的に判定することを可能にする最高の確率を有するかを判定するための手段と、
前記モバイルデバイス挙動が悪性であるかまたは良性であるかを、前記判定された要因に基づいて、前記モバイルデバイスが最終的に判定することを可能にするのに適切であるものとして、非常に少数の要因およびデータポイントを特定する、分類器モデルの第2の群を生成するための手段と、
分類器モデルの前記第2の群に基づいてモバイルデバイスの分類器モデルを生成するための手段と、
前記生成された分類器モデルを使用して、観測されるべき前記特徴を特定するための手段とを含む、請求項131に記載のモバイルコンピューティングデバイス。
【請求項１３５】
前記生成された分類器モデルを使用して、前記収集された挙動情報を分析するための手段をさらに含む、請求項134に記載のモバイルコンピューティングデバイス。
【請求項１３６】
モバイルデバイスの挙動をある期間にわたって観測して、通常の動作パターンと一致しないモバイルデバイスの挙動を認識するための動作を、モバイルデバイスのプロセッサに実行させるように構成される、プロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
前記モバイルデバイスの疑わしい挙動を特定するために、観測されるべき特徴を決定するステップと、
前記決定された特徴と関連付けられるハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するステップとを含む、非一時的プロセッサ可読記憶媒体。
【請求項１３７】
前記ハードウェアコンポーネントから挙動情報を収集することによって、前記決定された特徴を適応的に観測するステップが、
慣性センサコンポーネント、
バッテリーハードウェアコンポーネント、
ブラウザ支援ハードウェアコンポーネント、
カメラハードウェアコンポーネント、
シングルまたはデュアル加入者識別モジュール(SIM)ハードウェアコンポーネント、
測位ハードウェアコンポーネント、
マイクロフォンハードウェアコンポーネント、
無線インターフェースハードウェアコンポーネント、
スピーカーハードウェアコンポーネント、
スクリーンハードウェアコンポーネント、
同期ハードウェアコンポーネント、
ストレージコンポーネント、
universal serial busハードウェアコンポーネント、
ユーザ対話ハードウェアコンポーネント、
慣性センサドライバコンポーネント、
バッテリーハードウェアドライバコンポーネント、
ブラウザ支援ハードウェアドライバコンポーネント、
カメラハードウェアドライバコンポーネント、
シングルまたはデュアルSIMハードウェアドライバコンポーネント、
測位ハードウェアドライバコンポーネント、
マイクロフォンハードウェアドライバコンポーネント、
無線インターフェースハードウェアドライバコンポーネント、
スピーカーハードウェアドライバコンポーネント、
スクリーンハードウェアドライバコンポーネント、
同期ハードウェアドライバコンポーネント、
ストレージドライバコンポーネント、
universal serial busハードウェアドライバコンポーネント、および、
ユーザ対話ハードウェアドライバコンポーネントの1つまたは複数から、挙動情報を収集するステップを含む、請求項136に記載の非一時的プロセッサ可読記憶媒体。
【請求項１３８】
前記特徴と関連付けられる前記ハードウェアコンポーネントから挙動情報を収集するステップが、前記モバイルデバイスのソフトウェアアプリケーションによる前記ハードウェアコンポーネントのアクセスまたは使用のためのアプリケーションプログラミングインターフェース(API)呼出し情報を記憶するAPI呼出しのログから、情報を収集するステップを含む、請求項137に記載の非一時的プロセッサ可読記憶媒体。
【請求項１３９】
前記モバイルデバイスの前記疑わしい挙動を特定するために、前記モバイルデバイス中で観測されるべき前記特徴を決定するステップが、
機械学習技法を適用して、挙動ベクトルのクラウドコーパスを記述する分類器モデルの第1の群を生成するステップと、
分類器モデルの前記第1の群内のどの要因が、モバイルデバイス挙動が悪性であるかまたは良性であるかをモバイルデバイスが最終的に判定することを可能にする最高の確率を有するかを判定するステップと、
前記モバイルデバイス挙動が悪性であるかまたは良性であるかを、前記判定された要因に基づいて、前記モバイルデバイスが最終的に判定することを可能にするのに適切であるものとして、非常に少数の要因およびデータポイントを特定する、分類器モデルの第2の群を生成するステップと、
分類器モデルの前記第2の群に基づいてモバイルデバイスの分類器モデルを生成するステップと、
前記生成された分類器モデルを使用して、観測されるべき前記特徴を特定するステップとを含む、請求項138に記載の非一時的プロセッサ可読記憶媒体。
【請求項１４０】
前記生成された分類器モデルを使用して、前記収集された挙動情報を分析するステップをさらに含む、請求項139に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、2014年1月23日に出願された「Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device」という表題の米国特許出願第14/161,853号の優先権を主張し、この出願は、2013年6月21に出願された「Adaptive Observation of Behavioral Features on a Mobile Device」という表題の米国特許出願第13/923,547号の一部継続出願であり、この出願は、2013年1月25日に出願された「Adaptive Observation of Behavioral Features on a Mobile Device」という表題の米国仮出願第61/756,963号の優先権の利益を主張し、これらの出願の内容全体がすべての目的で参照によって本明細書に組み込まれる。
【０００２】
本出願はまた、すべての目的でその内容全体が参照によって本明細書に組み込まれる、2013年9月26日に出願された「Adaptive Observation of Driver and Hardware Level Behavioral Features on a Mobile Device」という表題の米国仮出願第61/882,833号の優先権の利益を主張する。
【背景技術】
【０００３】
セルラー通信技術およびワイヤレス通信技術は、過去数年の間に爆発的な発展をとげてきた。この発展は、より優れた通信、ハードウェア、より大きいネットワーク、およびより信頼できるプロトコルによって促進されている。ワイヤレスサービスプロバイダは現在、拡大し続ける多数の機能およびサービスを顧客に提供し、情報、リソースおよび通信への、前例のないレベルのアクセスをユーザに提供することができる。これらのサービス向上と歩調を合わせて、モバイル電子デバイス(たとえば、携帯電話、タブレット、ラップトップなど)は、これまでよりも強力および複雑になってきている。この複雑さは、モバイルデバイスの長期の継続的な性能および電力利用レベルに悪影響を与え得る、悪意のあるソフトウェア、ソフトウェアの競合、ハードウェアの欠陥、および他の同様のエラーまたは現象の新たな機会を生み出した。したがって、モバイルデバイスの長期の継続的な性能および電力利用レベルに悪影響を与え得る条件および/またはモバイルデバイスの挙動を特定して修正することは、消費者に対して有益である。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な態様は、モバイルデバイスの性能および/または電力利用レベルをしばしば経時的に劣化させる条件および/またはモバイルデバイスの挙動を、効率的に特定し、防止し、かつ/または修正するための、モバイルデバイスの挙動の特徴の適応的な観測のための方法、デバイス、およびシステムを含む。ある態様は、モバイルデバイスの挙動をある期間にわたって観測して、通常の動作パターンと一致しないモバイルデバイスの挙動を認識するための方法を含む。この態様の方法は、モバイルデバイスの動作、モバイルデバイスのイベント、データネットワークの活動、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアアプリケーションの活動または動作、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、アプリケーションレベルにおける条件およびイベント、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしいモバイルデバイスの挙動を特定するステップとを含み得る。
【０００５】
ある態様の方法では、モバイルデバイスの動作は、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの読取り/書込み/検索動作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含み得る。
【０００６】
ある態様の方法では、モバイルデバイスのイベントは、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含み得る。ある態様では、データネットワークの活動は、接続のタイプ、プロトコル、ポート番号、デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の、1つまたは複数を含み得る。
【０００７】
ある態様では、モバイルデバイスのシステムリソースの使用量は、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含み得る。ある態様の方法では、モバイルデバイスの状態は、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含み得る。
【０００８】
ある態様では、モバイルデバイスのプロセス間通信は、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含み得る。ある態様では、ドライバ統計は、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含み得る。
【０００９】
ある態様では、モバイルデバイスのハードウェアコンポーネントのステータスは、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含み得る。
【００１０】
ある態様では、モバイルデバイスのハードウェアカウンタは、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含み得る。
【００１１】
ある態様では、ソフトウェアアプリケーションの活動または動作は、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含み得る。
【００１２】
ある態様では、ソフトウェアのダウンロードは、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含み得る。
【００１３】
ある態様では、デバイスまたはコンポーネントの設定に対する変更は、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含み得る。
【００１４】
ある態様では、アプリケーションレベルにおける条件およびイベントは、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、ユーザにより入力されたメモの観測、電子決済サービス(PassBook、Google Wallet、およびPaypalのような)の使用に関するイベントの観測、仮想プライベートネットワーク、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含み得る。
【００１５】
ある態様では、無線レベルにおける条件およびイベントは、無線通信リンクを確立する前または情報を送信する前のモバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア(p2p)通信、同期、車両対車両の通信、および/または機械対機械(m2m)の通信のための無線(WiFi、WiMax、Bluetooth（登録商標）など)の使用を監視することと、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することとを含み得る。
【００１６】
ある態様では、センサレベルにおける条件およびイベントは、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、USB充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルデバイスに結合されたことを検出すること、モバイルデバイスが(たとえば、USBなどを介して)コンピューティングデバイスに結合されたことを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうか(たとえば、緊急通信アプリを悪意をもって無効にするなど)を判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、universal serial bus(USB)ポートおよびオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含み得る。
【００１７】
ある態様では、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップは、期間にわたってモバイルデバイスの挙動を観測するステップと、一致しない動作と関連付けられる挙動の限られたセットを、観測されるべきモバイルデバイスの挙動として特定するステップとを含み得る。
【００１８】
ある態様では、一致しない動作と関連付けられる挙動の限られたセットを、観測されるべきモバイルデバイスの挙動として特定するステップは、適応フィルタによるフィルタリングの後に、高レベルアプリケーション、システムカーネル、およびドライバAPIの1つまたは複数から挙動入力を受け取るステップと、モバイルデバイスの動作に関するコンテキスト情報を受け取るステップと、受け取られた挙動入力と受け取られたコンテキスト入力の空間的な相関付けを実行するステップと、挙動ベクトルを生成するステップとを含み得る。
【００１９】
ある態様では、挙動ベクトルを生成するステップは、観測されたモバイルデバイスの挙動を簡潔に記述するベクトルデータ構造を生成するステップを含み得る。ある態様では、挙動ベクトルを生成するステップは、モバイルデバイスの様々なレベル/モジュールにおいてAPIから収集された情報を含み得るベクトルを生成するステップを含み得る。ある態様では、挙動ベクトルを生成するステップは、ライブラリAPIの呼出し、システムコール、ファイルシステムおよびネットワーキングサブシステムの動作、センサデバイスの状態の変化、ファイルシステムの活動、ネットワークの活動、電話の活動、メモリアクセス動作、モバイルデバイスの状態、モバイルデバイスの電子ディスプレイの電源オン/オフ状態、モバイルデバイスのロックされた/ロックされていない状態、残りのバッテリー電力の量、プロセス間通信、ドライバ統計、およびハードウェアカウンタの1つまたは複数の関する情報を含み得る。
【００２０】
ある態様では、挙動ベクトルを生成するステップは、一連の数字を含み得るベクトルデータ構造を生成するステップを含んでよく、これらの数字の各々がモバイルデバイスの特徴または挙動を表す。ある態様では、一連の数字の少なくとも1つは、モバイルデバイスのカメラが使用されているか使用されていないか、どれだけのネットワークトラフィックがモバイルデバイスによって生成されたか、および、どれだけのインターネットメッセージがモバイルデバイスから送信されたかの、1つまたは複数を特定する。
【００２１】
ある態様では、挙動ベクトルを生成するステップは、呼の情報、テキストメッセージングの情報、メディアメッセージングの情報、ユーザアカウント情報、位置情報、カメラ情報、加速度計情報、およびブラウザ情報の少なくとも1つを含み得る、ベクトルを生成するステップを含み得る。ある態様では、挙動ベクトルを生成するステップは、モバイルデバイスのアプリケーションレベルにおいて収集された情報を含み得るベクトルを生成するステップを含み得る。ある態様では、挙動ベクトルを生成するステップは、モバイルデバイスの無線レベルにおいて収集された情報を含み得るベクトルを生成するステップを含み得る。ある態様では、挙動ベクトルを生成するステップは、モバイルデバイスのセンサレベルにおいて収集された情報を含み得るベクトルを生成するステップを含み得る。
【００２２】
ある態様では、一致しない動作と関連付けられる挙動の限られたセットを、観測されるべきモバイルデバイスの挙動として特定するステップはさらに、受け取られた挙動入力と受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含んでよく、挙動ベクトルを生成するステップは、空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含み得る。
【００２３】
さらなる態様は、2つ以上のプロセッサコアを含むマルチコアプロセッサを有するモバイルコンピューティングデバイスを含み、2つ以上のプロセッサコアの1つまたは複数は、上で説明された方法の動作を実行するようにプロセッサ実行可能命令によって構成される。さらなる態様は、上で説明された方法の機能および動作を実行するための手段を有するモバイルデバイスを含む。さらなる態様は、上で説明された方法の動作をプロセッサに実行させるように構成されたプロセッサ実行可能命令を記憶している、非一時的プロセッサ可読記憶媒体を含む。
【００２４】
本明細書に組み込まれ、本明細書の一部をなす添付の図面は、本発明の例示的な態様を示し、上で与えられた全般的な説明および下で与えられる発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００２５】
【図１】様々な態様を実装するのに適した、例示的なシステムオンチップのアーキテクチャ図である。
【図２】様々な態様による、動的および適応的な観測を実行するように構成されたコンピューティングシステム中の例示的な論理コンポーネントおよび情報フローを示すブロック図である。
【図３】ある態様による、動的および適応的な観測を実行するように構成された観測器モジュール中の例示的な論理コンポーネントおよび情報フローを示すブロック図である。
【図４】ある態様による、観測器モジュールを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図５Ａ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図５Ｂ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図６Ａ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図６Ｂ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図７Ａ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図７Ｂ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図８Ａ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図８Ｂ】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム中の論理コンポーネントおよび情報フローを示すブロック図である。
【図９Ａ】モバイルデバイス上で適応的観測を実行するためのある態様の方法を示すプロセスフロー図である。
【図９Ｂ】モバイルデバイス上で適応的観測を実行するための別の態様の方法を示すプロセスフロー図である。
【図１０】モバイルデバイス上で適応的観測を実行するための別の態様の方法を示すプロセスフロー図である。
【図１１Ａ】モバイルデバイス上で適応的観測を実行するためのさらなる態様の方法を示すプロセスフロー図である。
【図１１Ｂ】モバイルデバイス上で適応的観測を実行するためのさらなる態様の方法を示すプロセスフロー図である。
【図１１Ｃ】モバイルデバイス上で適応的観測を実行するためのさらなる態様の方法を示すプロセスフロー図である。
【図１２】様々な態様とともに使用するのに適した、モバイルデバイスのコンポーネントブロック図である。
【図１３】様々な態様とともに使用するのに適した、例示的なモバイルデバイスを示す図である。
【図１４】様々な態様とともに使用するのに適した、例示的なサーバコンピュータを示す図である。
【発明を実施するための形態】
【００２６】
様々な態様が添付の図面を参照して詳細に説明される。可能な場合は常に、同じ参照番号は、図面全体を通して同じまたは同様の部分を指すために使用される。特定の例および実装形態に行われる参照は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【００２７】
「例示的な」という言葉は、「例、事例、または例示として機能する」ことを意味するように本明細書で使用される。本明細書で「例示的な」ものとして説明されるいかなる実装形態も、他の実装形態よりも好ましいまたは有利であると必ずしも解釈されるべきではない。
【００２８】
「モバイルコンピューティングデバイス」および「モバイルデバイス」という用語は、携帯電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤー、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応携帯電話、ワイヤレスゲームコントローラ、および、性能が重要であるメモリとプログラム可能プロセッサを含み、電力節減方法が有益であるようなバッテリー電源で動作する同様の個人用電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では交換可能に使用される。様々な態様は、限られたリソースを有し、バッテリーで動作する、スマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの態様は一般に、プロセッサを含みアプリケーションプログラムを実行する、任意の電子デバイスにおいて有用である。
【００２９】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行されるコンピュータプログラムコードすなわち「プログラムコード」は、C、C++、C#、Smalltalk、Java（登録商標）、JavaScript（登録商標）、Visual Basic、Structured Query Language (たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれ得る。本明細書で使用されるコンピュータ可読記憶媒体に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である機械語コード(オブジェクトコードなど)を指す。
【００３０】
「性能劣化」という用語は、本明細書では、長い処理時間、短いバッテリー寿命、個人データの喪失、悪意のある経済活動(たとえば、無許可のプレミアムSMSメッセージを送信すること)、スパイまたはボットネット活動などのためにモバイルデバイスを乗っ取ることまたは電話を利用することに関する動作のような、多種多様な望ましくないモバイルデバイスの動作および特性を指すために使用される。
【００３１】
「システムオンチップ」(SOC)という用語は、単一の基板に統合された複数のリソースおよび/またはプロセッサを含む単一の集積回路(IC)チップを指すように本明細書で使用される。単一のSOCは、デジタル、アナログ、混合信号、および高周波機能のための回路を含み得る。単一のSOCは、任意の数の汎用および/または専用のプロセッサ(デジタル信号プロセッサ、モデムプロセッサ、ビデオプロセッサなど)、メモリブロック(たとえば、ROM、RAM、Flashなど)、およびリソース(たとえば、タイマー、電圧調整器、発振器など)も含み得る。SOCは、統合されたリソースおよびプロセッサを制御するための、また周辺デバイスを制御するためのソフトウェアも含み得る。
【００３２】
「マルチコアプロセッサ」という用語は、プログラム命令を読み取り、実行するように構成された2つ以上の独立した処理コア(たとえば、CPUコア)を含む単一の集積回路(IC)チップまたはチップパッケージを指すように本明細書で使用される。SOCは、複数のマルチコアプロセッサを含んでよく、SOCにおける各プロセッサは、コアと呼ばれ得る。「マルチプロセッサ」という用語は、本明細書では、プログラム命令を読み取り、実行するように構成された2つ以上の処理ユニットを含むシステムまたはデバイスを指すように使用される。
【００３３】
一般に、モバイルデバイスの性能および電力効率は、時間とともに劣化する。近年、アンチウイルス会社(たとえば、McAfee、Symantecなど)は、この劣化を遅くすることを目的とするモバイル用アンチウイルス、ファイアウォール、および暗号化製品のマーケティングを開始した。しかしながら、これらの解決法の多くは、計算負荷の大きいスキャニングエンジンの、モバイルデバイス上での周期的な実行に依存しており、このことは、モバイルデバイスの処理リソースおよびバッテリーリソースの多くを消費し、モバイルデバイスを遅くさせ、またはより長い期間使えなくさせ、かつ/または別様にユーザ体験を劣化させ得る。加えて、これらの解決法は、一般に、知られているウイルスおよびマルウェアの検出に限定され、複数の複雑な要因、および/または、(たとえば、性能劣化がウイルスまたはマルウェアによって引き起こされない場合に)しばしば結びついて経時的なモバイルデバイスの劣化に寄与する相互作用に対処しない。これらのおよび他の理由によって、既存のアンチウイルス、ファイアウォールおよび暗号化製品は、経時的なモバイルデバイスの劣化に寄与し得る多数の要因を特定するための、モバイルデバイスの劣化を防ぐための、または経年劣化したモバイルデバイスをその元の状態へと効率的に回復させるための、十分な解決法を提供しない。
【００３４】
コンピューティングデバイス上で実行されるプロセスまたはアプリケーションプログラムの挙動をモデル化するために、様々な他の解決法が存在し、そのような挙動モデルは、コンピューティングデバイス上で悪性のプロセス/プログラムと良性のプロセス/プログラムとを区別するために使用され得る。しかしながら、これらの既存のモデリング解決法は、一般に、処理、メモリおよびエネルギーのリソースのかなりの量を消費する、計算負荷の大きいプロセスの実行を必要とし、それらのすべてがモバイルデバイス上で乏しいことがあるので、モバイルデバイス上での使用には適さない。加えて、これらの解決法は、一般に、個別のアプリケーションプログラムまたはプロセスの挙動を評価することに限定され、性能劣化するモバイルデバイスの挙動の正確なまたは完全なモデルを提供しない。これらのおよび他の理由によって、既存のモデリング解決法は、経時的なモバイルデバイスの劣化に寄与し得る多数の要因を特定するため、モバイルデバイスの劣化を防ぐため、または経年劣化したモバイルデバイスをその元の状態へと効率的に回復させるためには十分でない。
【００３５】
不十分に設計されたソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、バックグラウンド処理などを含む、モバイルデバイスの性能および電力利用レベルの経時的な劣化に寄与し得る種々の要因が存在する。しかしながら、現代のモバイルデバイスの複雑さが原因で、そのような問題の原因を正確および効率的に特定すること、および/または特定された問題に対して十分な措置を提供することは、ユーザ、オペレーティングシステム、および/またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)にとってますます困難となっている。結果として、モバイルデバイスの性能および電力利用レベルにおける経時的な劣化を防止するため、または経年劣化したモバイルデバイスをその元の性能および電力利用レベルに回復させるための措置を、モバイルデバイスユーザは、現在、ほとんど持っていない。
【００３６】
様々な態様が、モバイルデバイスの性能および/または電力利用レベルをしばしば経時的に劣化させる条件および/またはモバイルデバイス挙動を効率的に特定し、防止し、かつ/または修正するための、デバイス、システム、および方法を提供する。
【００３７】
上で言及されたように、モバイルデバイスは、比較的限られた処理、メモリおよびエネルギーのリソースを有する、リソースが制約されたシステムである。やはり上で言及されたように、現代のモバイルデバイスは複雑なシステムであり、モバイルデバイスの経時的な劣化に寄与し得る多数の(すなわち、数千の)要因がある。これらの制約によって、現代のモバイルデバイスの複雑でありながらリソースの制約されたシステムの性能および/または電力利用レベルを劣化させ得る様々なプロセス、挙動、または要因(またはそれらの組合せ)のすべてを監視/観測することは、実行可能ではないことが多い。
【００３８】
既存の解決法の上で言及された制約を克服するために、様々な態様は、観測されるべきモバイルデバイスの挙動、観測されるべき挙動の数、および、モバイルデバイスの挙動が観測される際の詳細度(すなわち、粒度)のレベルを、インテリジェントに、動的に、および/または適応的に決定する。様々な態様は、過剰な量の処理、メモリ、またはエネルギーのリソースを消費することなく、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動を効率的に特定する。様々な態様は、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動を修正することができる。様々な態様は、特定された疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動が、モバイルデバイスの性能および電力利用レベルを経時的に劣化させるのを防ぐことができる。様々な態様は、経年劣化したモバイルデバイスを、その元の性能および電力利用レベルへと回復させることができる。
【００３９】
ある態様では、モバイルデバイスのプロセッサは、ライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムの動作、ネットワーキングサブシステムの動作、多数のセンサのためのドライバAPIの呼出し、状態の変化、および高レベルにおける他の同様のイベント/動作の、いずれかまたはすべてを観測し、これらの高レベルの観測に基づいてリアルタイム挙動分析動作を実行して、モバイルデバイスの経時的な劣化に寄与し得るプログラム/プロセス(たとえば、能動的な悪意のあるプログラム、書き方の悪いプログラムなど)を特定するように構成され得る。モバイルデバイスのプロセッサは、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動の原因を特定および/または修正するために十分な情報が利用可能となるまで、モバイルデバイスの挙動が観測される際の詳細度(すなわち、粒度)のレベルをインテリジェントに上げるように構成され得る。
【００４０】
ある態様では、モバイルデバイスのプロセッサは、オンラインのリアルタイム分析動作の結果および/またはシステムリソースの利用可能性に基づいて、(たとえば、観測すべき新たな挙動を選択すること、より少数の挙動を観測することなどによって)観測された挙動のセットを動的に変更するように構成され得る。
【００４１】
様々な態様では、モバイルデバイスのプロセッサは、リアルタイム分析動作の結果に基づいて、および/またはシステムリソースの利用可能性に基づいて、観測の粒度(すなわち、モバイルデバイスの挙動が観測される際の詳細度のレベル)を動的に調整するように構成され得る。たとえば、様々な態様において、モバイルデバイスのプロセッサは、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動の原因が特定されるまで、処理の閾値に到達するまで、または観測の粒度のさらなる上昇により疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動の原因が特定され得ないとモバイルデバイスのプロセッサが判定するまで、1つまたは複数の観測の粒度を繰り返し上げる(すなわち、より精密な、またはより詳細な観測を行う)ように構成され得る。
【００４２】
ある態様では、モバイルデバイスのプロセッサは、システムリソースの利用可能性に基づいて、観測の粒度を動的に調整するように構成され得る。たとえば、モバイルデバイスのプロセッサは、モバイルデバイスのリソースが利用可能である、もしくは利用されていないと判定したこと、または、モバイル機器が現在電源に接続されていると判定したことに応答して、観測の粒度を上げるように構成され得る。別の例として、モバイルデバイスのプロセッサは、コンピューティングデバイスの負荷が重い、またはそのバッテリー残量が少ないと判定したことに応答して、観測の粒度を下げるように構成され得る。
【００４３】
ある態様では、モバイルデバイスの観測プロセス、デーモン、モジュール、またはサブシステム(本明細書では総称的に「モジュール」と呼ばれる)が、モバイルデバイスのシステムの様々なレベルにおける様々なアプリケーションプログラミングインターフェース(API)をインストルメントし、または協調させて、インストルメントされたAPIから挙動情報を収集することができる。ある態様では、モバイルデバイスはまた分析器モジュールを含んでよく、分析器モジュールは、1つまたは複数の分類器を生成することができる。観測器モジュールは、収集された挙動情報をモバイルデバイスの分類器モジュールおよび/または分析器モジュールに、(たとえば、メモリ書込み動作などを介して)伝達でき、モバイルデバイスは、収集された挙動情報を分析および/または分類し、挙動ベクトルを生成し、挙動ベクトルおよび様々な他のモバイルデバイスのサブシステムから収集された情報に基づいて空間的相関および/または時間的相関を生成し、かつ/または、特定のモバイルデバイスの挙動、ソフトウェアアプリケーション、またはプロセスが良性であるか、疑わしいか、または悪性である/性能劣化させるかどうかを判定することができる。様々な態様では、生成された挙動ベクトルおよび空間的/時間的相関は、モバイルデバイスの性能またはバッテリー消費のレベルに悪影響を与える高い確率を有するものと判定される挙動を特定し、かつ/またはそれに応答するために、モバイルデバイスの様々なモジュールによって(たとえば、作動モジュールなどによって)使用され得る。
【００４４】
モバイルデバイスの分析器モジュールは、モバイルデバイスの挙動が良性であるか、疑わしいか、または悪性である/性能劣化させるかどうかを判定するために、観測器モジュールによって収集された挙動情報にデータ、アルゴリズム、および/または挙動モデルを適用するステップを含み得る、リアルタイム分析動作を実行するように構成され得る。ある態様では、挙動が良性または悪性のいずれであるかを分類または最終的に判定するのに十分な情報を分類器が持たないとき、分析器モジュールは、モバイルデバイスの挙動が疑わしいと判定するように構成され得る。ある態様では、デバイスの挙動が疑わしいと分析器モジュールが判定するとき、分析器モジュールは、そのリアルタイム分析動作の結果を観測器モジュールに伝達するように構成され得る。観測器モジュールは、その観測の粒度(すなわち、モバイルデバイスの挙動が観測される際の詳細度のレベル)を調節し、かつ/または、分析器モジュールから受け取られた情報(たとえば、リアルタイム分析動作の結果)に基づいて観測される挙動を変更し、新たな情報または追加の挙動情報を生成または収集し、さらなる分析/分類のために新たな/追加の情報を分類器モジュールに送ることができる。
【００４５】
観測器モジュールと分析器モジュールとの間のそのようなフィードバック通信(たとえば、分析器モジュールがそのリアルタイム分析動作の結果を観測器モジュールに送ること、および観測器モジュールが更新された挙動情報を分析器モジュールに送ること)は、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動の原因が特定されるまで、処理またはバッテリー消費の閾値に到達するまで、または、観測の粒度のさらなる上昇により疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動の原因が特定され得ないとモバイルデバイスのプロセッサが判定するまで、モバイルデバイスのプロセッサが繰り返し、観測の粒度を上げる(すなわち、より精密な、またはより詳細な観測を行う)こと、または観測される特徴/挙動を変更することを可能にできる。そのようなフィードバック通信はまた、モバイルデバイスのプロセッサが、過剰な量のモバイルデバイスの処理、メモリ、またはエネルギーのリソースを消費することなく、データ/挙動モデルをモバイルデバイス中でローカルに調節または修正することを可能にする。
【００４６】
様々な態様において、観測器モジュールおよび/または分析器モジュールは、観測された挙動の正確な定義を含む、挙動ベクトルを生成することができる。すなわち、挙動ベクトルは、モバイルデバイス、ソフトウェアアプリケーション、またはプロセスの観測された挙動を、値またはベクトルデータ構造で(たとえば、数字の列などの形で)簡潔に記述することができる。挙動ベクトルはまた、モバイルデバイスのシステムがモバイルデバイスの挙動を迅速に認識し、特定し、かつ/または分析することを可能にする、識別子として機能し得る。ある態様では、観測器モジュールおよび/または分析器モジュールは、一連の数字を含む挙動ベクトルを生成することができ、これらの数字の各々がモバイルデバイスの特徴または挙動を表す。たとえば、挙動ベクトルに含まれる数字は、モバイルデバイスのカメラが使用されているかどうか(たとえば、0または1として)、どれだけのネットワークトラフィックがモバイルデバイスから送信されたか、またはモバイルデバイスによって生成されたか(たとえば、20KB/秒など)、どれだけのインターネットメッセージが通信されたか(たとえば、SMSメッセージの数など)などを表すことができる。
【００４７】
様々な態様は、単一のプロセッサおよび多重プロセッサのシステム、ならびにシステムオンチップ(SOC)を含む、いくつかの異なるモバイルデバイス内で実装され得る。図1は、様々な態様を実装するコンピューティングデバイス中で使用され得る例示的なシステムオンチップ(SOC)100アーキテクチャを示すアーキテクチャ図である。SOC 100は、デジタル信号プロセッサ(DSP)101、モデムプロセッサ104、グラフィクスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異質のプロセッサを含み得る。SOC 100はまた、異質のプロセッサ102、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含み得る。各プロセッサ102、104、106、108、110は、1つまたは複数のコアを含んでよく、各プロセッサ/コアは、他のプロセッサ/コアとは無関係に動作を実行することができる。たとえば、SOC 100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX（登録商標）、OS Xなど)を実行するプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows（登録商標） 8)を実行するプロセッサとを含み得る。
【００４８】
SOC 100はまた、センサデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化されたオーディオ信号を処理することのような他の特殊な動作を実行するための、アナログ回路およびカスタム回路114を含み得る。SOC 100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、およびコンピューティングデバイス上で実行されているプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントのような、システムコンポーネントおよびリソース116をさらに含み得る。
【００４９】
システムコンポーネント116およびカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースする回路を含み得る。プロセッサ102、104、106、108は、再構成可能な論理ゲートのアレイを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、1つまたは複数のメモリ要素112、システムコンポーネント、ならびに、リソース116およびカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoC)のような、高度な相互接続によって提供され得る。
【００５０】
SOC 100は、クロック118および電圧レギュレータ120のような、SOCの外部のリソースと通信するための入力/出力モジュール(図示されず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧レギュレータ120)は、内部のSOCプロセッサ/コア(たとえば、DSP 102、モデムプロセッサ104、グラフィクスプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
【００５１】
SOC 100はまた、スピーカー、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)、マイクロフォンアレイ、物理条件(たとえば、位置、方向、動き、方位、振動、圧力など)を監視するためのセンサ、カメラ、コンパス、GPS受信機、通信回路(たとえば、Bluetooth(登録商標)、WLAN、WiFiなど)、および現代の電子デバイスの他の良く知られているコンポーネント(たとえば、加速度計など)を含む、センサからセンサデータを収集するのに適したハードウェアおよび/またはソフトウェアコンポーネントを含み得る。
【００５２】
上で論じられたSOC 100に加えて、様々な態様が、単一のプロセッサ、複数のプロセッサ、マルチコアプロセッサ、またはこれらの任意の組合せを含み得る、多種多様なコンピューティングシステムにおいて実装され得る。
【００５３】
図2は、様々な態様による、動的および適応的な観測を実行するように構成されたコンピューティングシステム200中の例示的な論理コンポーネントおよび情報フローを示す。図2に示される例では、コンピューティングシステム200は、粗い観測器モジュール202と、分析器モジュール204と、外部コンテキスト情報モジュール206と、作動モジュール208とを含む。
【００５４】
モジュール202〜208の各々は、ソフトウェア、ハードウェアまたはそれらの任意の組合せで実装され得る。様々な態様では、モジュール202〜208は、オペレーティングシステムの一部の中(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)、個別のプログラムもしくはアプリケーションの中、専用のハードウェアバッファもしくはプロセッサの中、またはそれらの任意の組合せで実装され得る。ある態様では、モジュール202〜208のうちの1つまたは複数は、モバイルデバイス102の1つまたは複数のプロセッサ上で実行されるソフトウェア命令として実装され得る。
【００５５】
挙動観測器モジュール202は、APIをモバイルデバイスの様々なレベル/モジュールにおいてインストルメントし、または協調させ、インストルメントされたAPIを介して様々なレベル/モジュールにおいてモバイルデバイスの動作およびイベント(たとえば、システムイベント、状態変化など)を監視/観測し、観測された動作/イベントに関する情報を収集し、収集された情報をインテリジェントにフィルタリングし、フィルタリングされた情報に基づいて1つまたは複数の観測結果を生成し、生成された観測結果をメモリ(たとえば、ログファイル、キャッシュメモリなどの中)に記憶し、かつ/または、生成された観測結果を挙動分析器モジュール204に(たとえば、メモリ書込み、関数呼出しなどを介して)送るように構成され得る。
【００５６】
挙動観測器モジュール202は、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、デバイス(センサデバイスを含む)の状態変化、ならびに他の同様のイベントに関する情報を収集することによって、モバイルデバイスの動作およびイベントを監視/観測することができる。挙動観測器モジュール202はまた、ファイルシステムの活動を監視することができ、ファイルシステムの活動は、ファイル名の検索、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)、ファイル(たとえば、type exe、zipなど)の作成または削除、ファイルの読取り/書込み/探索動作、ファイルパーミッションの変更などを含み得る。
【００５７】
挙動観測器モジュール202はまた、データネットワーク活動を監視/観測することができ、データネットワーク活動は、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含み得る。挙動観測器モジュール202は、電話ネットワークの活動を監視することができ、電話ネットワークの活動は、送出された、受信された、または中断された呼またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することを含み得る。
【００５８】
挙動観測器モジュール202はまた、フォークの数、メモリアクセス動作、ファイル開封の回数などを監視することを含み得る、システムリソースの使用量を監視/観測することができる。挙動観測器モジュール202は、ディスプレイがオンであるかまたはオフであるか、デバイスがロックされているかまたはロックされていないか、バッテリーの残量、カメラの状態などのような、様々な要因を監視することを含み得る、モバイルデバイスの状態を監視することができる。挙動観測器モジュール202はまた、たとえば、極めて重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視することができる。
【００５９】
挙動観測器モジュール202はまた、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、フェーズロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で実行されるプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントを含み得る、1つまたは複数のハードウェアコンポーネントのドライバ統計および/またはステータスを監視/観測することができる。
【００６０】
挙動観測器モジュール202はまた、モバイルコンピューティングデバイスおよび/またはモバイルデバイスサブシステムの状態またはステータスを示す、1つまたは複数のハードウェアカウンタを監視/観測することができる。ハードウェアカウンタは、モバイルコンピューティングデバイス中で発生するハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されたプロセッサ/コアの専用レジスタを含み得る。
【００６１】
挙動観測器モジュール202はまた、ソフトウェアアプリケーションの活動または動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標)App Store server)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるモバイルデバイス情報、呼の情報、テキストメッセージングの情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージングの情報(たとえば、ReceiveMMS)、ユーザアカウント情報、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth（登録商標）、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視/観測することができる。
【００６２】
挙動観測器モジュール202は、ボイスメールを含む通信(VoiceMailComm)を含むモバイルデバイスの送信または通信、デバイス識別子(DeviceIDComm)、ユーザアカウント情報(UserAccountComm)、カレンダー情報(CalendarComm)、位置情報(LocationComm)、記録されたオーディオ情報(RecordAudioComm)、加速度計情報(AccelerometerComm)などを監視/観測することができる。
【００６３】
挙動観測器モジュール202は、コンパス情報、モバイルデバイスの設定、バッテリー寿命、ジャイロスコープ情報、圧力センサ、磁気センサ、スクリーンの活動などの、使用量と、それらに対する更新/変更とを監視/観測することができる。挙動観測器モジュール202は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーションの更新などを監視/観測することができる。挙動観測器モジュール202は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求する第1のソフトウェアアプリケーションに関する条件またはイベントを監視/観測することができる。挙動観測器モジュール202は、パスワードの入力などのような、ユーザ認証に関する条件またはイベントを監視/観測することができる。
【００６４】
モバイルデバイスのプロセッサは、アプリケーションレベル、無線レベルおよびセンサレベルを含む、モバイルデバイスの複数のレベルにおける条件またはイベントを観測するように構成され得る。アプリケーションレベルの観測は、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力されたメモを観測すること、PassBook/Google Wallet/Paypalなどのような電子決済サービスの使用に関するイベントを観測することを含み得る。アプリケーションレベルの観測はまた、仮想プライベートネットワーク(VPN)の使用に関するイベント、および、同期、音声検索、音声制御(たとえば、1つの語を発することによる電話のロック/アンロック)、言語翻訳機、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、ユーザの活動を伴わないマイクロフォンの使用などに関するイベントを観測することを含み得る。
【００６５】
無線レベルの観測は、無線通信リンクを確立する前もしくは情報を送信する前のモバイルデバイスとのユーザの対話、二重の、もしくは複数の加入者識別モジュール(SIM)またはSIMカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラもしくはホームコントローラとしての使用、車両通信、モバイルデバイスの同期などのいずれかまたは複数の、存在、実在、または量を決定するステップを含み得る。無線レベルの観測はまた、測位、ピアツーピア(p2p)通信、同期、車両対車両通信、および/または機械対機械(m2m)通信のための、無線(WiFi、WiMax、Bluetooth（登録商標）など)の使用を監視するステップを含み得る。無線レベルの観測はさらに、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することを含み得る。
【００６６】
センサレベルの観測は、モバイルデバイスの使用環境および/または外部環境を判定するために、磁気センサまたは他のセンサを監視するステップを含み得る。たとえば、モバイルデバイスのプロセッサは、電話が(たとえば、ホルスター内の磁石を感知するように構成された磁気センサを介して)ホルスター中にあるか、または(たとえば、カメラまたは光センサによって検出される光の量を介して)ユーザのポケット中にあるかを判定するように構成され得る。たとえば、モバイルデバイスがホルスターに入れられている間に発生する、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声呼を行うこと、音を録音することなど)に関する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行されている不正なプロセスのサインであり得るので、モバイルデバイスがホルスター中にあることを検出することは、疑わしい挙動を認識することに関連し得る。使用環境または外部環境に関するセンサレベルの観測の他の例は、近距離場通信(NFC)を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、USB充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルデバイスに結合されていることを検出すること、モバイルデバイスが(たとえば、USBなどを介して)コンピューティングデバイスに結合されていることを検出すること、発光ダイオード(LED)、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうか(たとえば、緊急通信アプリを悪意をもって無効にするなど)を判定すること、スピーカーまたはマイクロフォンがオンにされたまたは電源投入されたことを検出すること、充電イベントまたは電源投入イベントを検出すること、モバイルデバイスがゲームコントローラとして使用されていることを検出することなどを含む。センサレベルの観測はまた、医療用もしくは健康管理のセンサから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサから情報を収集すること、(たとえば、バイブレータインターフェースなどを介して)触覚センサまたは接触センサから情報を収集すること、モバイルデバイスの熱状態に関する情報を収集することなどを含み得る。
【００６７】
ある態様では、監視される要因の数を管理可能レベルまで減らすために、挙動観測器モジュール202は、モバイルデバイスの劣化に寄与し得るすべての要因の小さなサブセットである、挙動または要因の初期セットを監視/観測することによって、粗い観測を実行することができる。ある態様では、挙動観測器モジュール202は、ネットワークサーバ116および/またはクラウドサービスプロバイダのネットワーク118中のコンポーネントから、挙動および/または要因の初期セットを受信することができる。ある態様では、挙動/要因の初期セットは、ネットワークサーバ116またはクラウドサービスプロバイダのネットワーク118から受信されたデータ/挙動モデル中で規定され得る。
【００６８】
分析器モジュール204は、デバイスの劣化に経時的に寄与している(または寄与する可能性が高い)、または別様にデバイスに問題を引き起こし得る、挙動、プロセス、またはプログラムを特定するために、情報の限られたセット(すなわち、粗い観測結果)を利用するためのインテリジェンスを含み得る。たとえば、分析器モジュール204は、様々なモジュール(たとえば、観測器モジュール202、外部コンテキスト情報モジュール206など)から収集された情報(たとえば、観測結果の形の)を分析し、モバイルデバイスの通常の動作の挙動を学習し、モバイルデバイスの挙動の挙動モデルを生成し、生成されたモデルを観測器モジュール202から受け取られた情報/観測結果と比較して疑わしいモバイルデバイスの挙動を特定するように構成され得る。
【００６９】
上で言及されたように、観測器モジュール202は、モバイルデバイスの動作およびイベントを監視/観測することができる。様々な態様において、モバイルデバイスの動作およびイベントを観測するステップは、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリAPIの呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、デバイス(センサデバイスを含む)状態の変化、ならびに他の同様のイベントのいずれかまたはすべてに関する情報を収集するステップを含み得る。ある態様では、観測器モジュール202は、ファイルシステムの活動を監視することができ、ファイルシステムの活動は、ファイル名の検索、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)、ファイル(たとえば、type exe、zipなど)の生成または削除、ファイルの読取り/書込み/探索動作、ファイルパーミッションの変更などを含み得る。ある態様では、観測器モジュール202は、データネットワークの活動を監視することができ、データネットワーク活動は、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含み得る。ある態様では、観測器モジュール202は、電話ネットワークの活動を監視することができ、電話ネットワークの活動は、送出された、受信された、または中断された呼またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することを含み得る。ある態様では、観測器モジュール202は、フォークの数、メモリの使用、ファイル開封の回数などを監視することを含み得る、使用されるシステムリソースを監視することができる。ある態様では、観測器モジュール202は、ディスプレイがオンであるかまたはオフであるか、デバイスがロックされているかまたはロックされていないか、バッテリーの残量、カメラの状態などのような、様々な要因を監視することを含み得る、デバイスの状態を監視することができる。ある態様では、観測器モジュール202はまた、たとえば、極めて重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視することができる。
【００７０】
監視される要因の数を管理可能なレベルへと減らすために、観測器モジュール202は、モバイルデバイスの劣化に寄与し得る要因の小さなサブセットを監視/観測することによって、粗い観測を実行し、粗い観測結果を分析器モジュール204に送ることができる。ある実施形態では、挙動の初期セットおよび/または要因のサブセットは、モバイルデバイス上の良性のアプリケーションおよび問題のあるアプリケーションの分析によって選択され得る。
【００７１】
分析器モジュール204は、観測器モジュール202から粗い観測結果を受け取り、モバイルデバイスの劣化に潜在的に寄与し得る受け取られた粗い観測結果と関連付けられるサブシステム、プロセス、および/またはアプリケーションを特定することができる。これは、たとえば、分析器モジュール204が、受け取られた情報を外部コンテキスト情報モジュール206から受け取られたコンテキスト情報と比較することによって、達成され得る。
【００７２】
分析器モジュール204は、特定されたサブシステム、プロセス、またはアプリケーションに対するより深いログ取得/観測または最後のログ取得を実行するように、またはそれを可能にするように、観測器モジュール202に指示することができる。観測器モジュール202は、特定されたサブシステム、プロセス、またはアプリケーションに対するより深い観測を実行することができる。観測器モジュール202は、さらなる(およびより深い)分析のために、より深い観測の結果を分析器モジュール204に送ることができる。これらの動作は、問題の原因が特定されるまで、または、特定されたサブシステム、プロセス、またはアプリケーションが問題または劣化を引き起こす可能性が高くないと判定されるまで、繰り返され得る。分析器モジュール204は次いで、分析の結果を作動モジュール208に送ることができ、作動モジュール208は、結果を受け取り、特定された問題を回復させ、矯正し、分離し、または別様に直すことができる。
【００７３】
ある態様では、観測器モジュール202および分析器モジュール204は、限られた粗い観測値から疑わしい挙動を特定するために、挙動を動的に判定してより詳細に観測するために、および、観測のために必要な詳細度のレベルを動的に決定するために、コンピューティングシステムの挙動のリアルタイム挙動分析を個別にまたは集合的に提供することができる。この方式では、観測器モジュール202は、デバイス上に大量のプロセッサ、メモリまたはバッテリーのリソースを必要とすることなく、コンピューティングシステム200が問題を効率的に特定し、モバイルデバイス上で問題が発生するのを防ぐことを可能にする。
【００７４】
ある態様では、観測器モジュール202は、良性のアプリケーションに対する性能の影響を減らすために、空間的に効率的でありクエリサービス時間が効率的な方式で、観測結果を記憶することができる。観測器モジュール202は、様々な観測器モードをシステムに提供して、マルチレベルのログ取得(たとえば、精密なログ取得および粗いログ取得)を可能にすることができる。観測器モジュール202は、異なる観測器モードを自動的および動的に切り替えるための能力を提供することができる。観測器モジュール202は、システムリソースを消耗させ得るプロセス/アプリケーションを監視し、制限することができる。観測器モジュール202は、オーバーヘッドが最小限でありフロー制御が効率的に実施/実行されるように、通信(たとえば、非セキュアな世界からセキュアな世界への)のオーバーヘッドを管理することができる。
【００７５】
ある態様では、分析器モジュール204は、様々なモバイルデバイスのサブシステムによって、および/または様々な期間にわたって収集された情報を受け取り分析して、種々の状況および条件のもとでのモバイルデバイスの通常の動作的な挙動を学習し、様々な状況/条件のもとでの通常のモバイルデバイスの挙動のモデルを生成するように構成され得る。ある態様では、分析器モジュール204は、受け取られた観測結果を生成された挙動モデルと相関付け、その相関に基づいて挙動分析動作を実行して、受け取られた観測結果が学習された通常の動作的な挙動と矛盾する(または一致しない)かどうかを判定するように構成され得る。
【００７６】
様々な態様において、モバイルデバイスは、ネットワークサーバと通信するように構成されてよく、ネットワークサーバは、クラウドサービスネットワークサーバから受け取られた情報に基づいてデータ/挙動モデルを生成することができる。ネットワークサーバは、モバイルデバイスに生成されたデータ/挙動モデルを送ることができ、モバイルデバイスは、疑わしい、または性能劣化させる、モバイルデバイスの挙動、ソフトウェアアプリケーション、プロセスなどを特定するために限られたデータ/挙動モデルを受け取って実装し、適用し、または使用することができる。モバイルデバイスは次いで、特定された性能劣化させるモバイルデバイスの挙動がモバイルデバイスの性能および電力利用レベルを劣化させるのを、修正または防止することができる。
【００７７】
様々な態様では、ネットワークサーバは、機械学習技法および/またはコンテキストモデリング技法を、実施すること、実行すること、および/または、多くのモバイルデバイスによって提供される挙動情報および/または挙動分析の結果に適用することによって、データ/挙動モデルを生成または更新するように構成され得る。したがって、ネットワークサーバは、多数の報告を多くのモバイルデバイスから受信し、そのようなクラウドソース情報を分析し、統合し、または別様に、使用可能な情報へ、具体的には多くのモバイルデバイスによって使用および/またはアクセスされ得るデータセットまたは挙動モデルへ、変化させることができる。ネットワークサーバは、新しい挙動/分析報告がモバイルデバイスから受信されるにつれて既存のデータ/挙動モデルを継続的に再評価し、かつ/または、(たとえば、前の実行、挙動モデルの前の適用などから収集された)過去の情報、新しい情報、機械学習、コンテキストモデリング、および、利用可能な情報、モバイルデバイスの状態、環境条件、ネットワーク条件、モバイルデバイスの性能、バッテリー消費レベルなどにおける検出された変化に基づいて、新しいまたは更新されたデータ/挙動モデルを生成することができる。
【００７８】
図3は、ある態様による、動的および適応的な観測を実行するように構成されたコンピューティングシステムの観測器モジュール202における例示的な論理コンポーネントおよび情報フローを示す。観測器モジュール202は、適応フィルタモジュール302と、スロットルモジュール304と、観測器モードモジュール306と、高レベル挙動検出モジュール308と、挙動ベクトル生成器310と、セキュアバッファ312とを含み得る。高レベル挙動検出モジュール308は、空間相関モジュール314と時間相関モジュール316とを含み得る。
【００７９】
観測器モードモジュール306は、分析器ユニット(たとえば、図2を参照して上記で説明された分析器モジュール204)および/またはアプリケーションAPIを含み得る、様々なソースから制御情報を受け取ることができる。観測器モードモジュール306は、様々な観測器モードに関する制御情報を適応フィルタモジュール302および高レベル挙動検出モジュール308に送ることができる。
【００８０】
適応フィルタモジュール302は、複数のソースからデータ/情報を受け取り、受け取られた情報をインテリジェントにフィルタリングし、受け取られた情報から選択された情報のより小さなサブセットを生成することができる。このフィルタは、分析器モジュールから、またはAPIを通じて通信するより高レベルのプロセスから受け取られた、情報または制御に基づいて適合され得る。フィルタリングされた情報は、スロットルモジュール304に送られてよく、スロットルモジュール304は、高レベル挙動検出モジュール308が要求または情報で氾濫状態または過負荷状態にならないことを確実にするために、フィルタから流れる情報の量を制御することを担い得る。
【００８１】
高レベル挙動検出モジュール308は、スロットルモジュール304からのデータ/情報と、観測器モードモジュール306からの制御情報と、モバイルデバイスの他のコンポーネントからのコンテキスト情報とを受け取ることができる。高レベル挙動検出モジュール308は、受け取られた情報を使用して空間的な相関付けおよび時間的な相関付けを実行し、デバイスに準最適レベルでの実行をさせ得る高レベル挙動を検出または特定することができる。空間的な相関付けおよび時間的な相関付けの結果は、挙動ベクトル生成器310に送られてよく、挙動ベクトル生成器310は相関情報を受け取り、特定のプロセス、アプリケーション、またはサブシステムの挙動を記述する挙動ベクトルを生成することができる。ある態様では、挙動ベクトル生成器310は、特定のプロセス、アプリケーション、またはサブシステムの各々の高レベル挙動が挙動ベクトルの要素であるように挙動ベクトルを生成することができる。ある態様では、生成された挙動ベクトルは、セキュアバッファ312に記憶され得る。高レベル挙動検出の例は、特定のイベントの存在、別のイベントの量または頻度、複数のイベント間の関係、イベントが発生する順序、いくつかのイベントの発生の時間差などの検出を含み得る。
【００８２】
様々な態様では、観測器モジュール202は、適応的観測を実行し、観測の粒度を制御することができる。すなわち、観測器モジュール202は、観測されるべき関連する挙動を動的に特定し、特定された挙動が観測される際の詳細度のレベルを動的に決定することができる。このようにして、観測器モジュール202は、様々なレベル(たとえば、複数の粗いレベルおよび精密なレベル)においてシステムがモバイルデバイスの挙動を監視することを可能にする。観測器モジュール202は、観測されているものにシステムが適応することを可能にし得る。観測器モジュール202は、多種多様なソースから取得され得る情報の集中的なサブセットに基づいて、観測されている要因/挙動をシステムが動的に変更することを可能にし得る。
【００８３】
上で論じられたように、観測器モジュール202は、適応的観測技法を実行して、種々のソースから受け取られた情報に基づいて観測の粒度を制御することができる。たとえば、高レベル挙動検出モジュール308は、スロットルモジュール304、観測器モードモジュール306からの情報と、モバイルデバイスの他のコンポーネント(たとえば、センサ)から受け取られたコンテキスト情報とを受け取ることができる。ある例として、時間的な相関付けを実行する高レベル挙動検出モジュール308は、カメラが使用されたことと、モバイルデバイスが写真のサーバへのアップロードを試みていることとを検出し得る。高レベル挙動検出モジュール308はまた、空間的な相関付けを実行して、デバイスがホルスターに入れられておりユーザのベルトに取り付けられていた間に、モバイルデバイス上のアプリケーションが写真を撮ったかどうかを判定することができる。高レベル挙動検出モジュール308は、この検出された高レベル挙動(たとえば、ホルスターに入れられたままでカメラを使用すること)が受け入れられるかまたは一般的な挙動であるかどうかを判定することができ、このことは、モバイルデバイスの現在の挙動と過去の挙動とを比較すること、および/または、複数のデバイスから収集された情報(たとえば、クラウドソーシングサーバから受信された情報)にアクセスすることによって、達成され得る。ホルスターに入れられている間に写真を撮り、それらをサーバにアップロードすることは、(ホルスターに入れられている状況で観測される通常の挙動から判定され得るように)異常な挙動であるので、この状況では、高レベル挙動検出モジュール308は、これを、潜在的に脅威をもたらす挙動として認識し、適切な対応(たとえば、カメラを遮断する、警報を鳴らすなど)を開始することができる。
【００８４】
ある態様では、観測器モジュール202は、複数の部分に実装され得る。
【００８５】
図4は、ある態様による、観測器モジュールを実装する例示的なコンピューティングシステム400中の論理コンポーネントおよび情報フローを示す。示されたコンピューティングシステム400は、アプリケーションフレームワーク402と、ランタイムライブラリ404と、ユーザログAPI 406と、ロガーライブラリ408とを、ユーザ空間に含む。コンピューティングシステム400は、カーネルコア410と、カーネルドライバ412と、カーネルログAPI 414と、観測器ロガー424と、フィルタ規則モジュール416と、スロットリング規則モジュール418と、リングバッファ422と、観測器デーモン420とをカーネル空間に含み得る。ある態様では、リングバッファ422は、一定のサイズであり、かつ/または循環バッファであり得る。ある態様では、ユーザログAPI 406およびカーネルログAPI 414の組合せが、観測器ロガー424を構成し得る。ある態様では、観測器デーモン420および観測器ロガー424の組合せが、観測器モジュール202を構成し得る。
【００８６】
アプリケーションフレームワーク402およびラインタイムライブラリ404は、モバイルデバイスの以前から存在するソフトウェアコード/コンポーネントであってよく、それらの各々が、活動を監視しユーザ空間中のユーザログAPI 406に情報を送るための論理をインストルメントされ得る。ユーザログAPI 406は、ユーザ空間アプリケーションがカーネルログAPI 414を介してカーネルと通信することを可能にするAPIを提供することができる。
【００８７】
ある態様では、観測器ロガー424は、特定のイベント、活動、またはAPI(たとえば、特に重要であるものとしてAPIのリストにおいて特定されたAPI)が呼び出されたときは常に、自動的に呼び出されてよく、対応する情報がリングバッファ422に記憶されてよい。リングバッファ422に記憶される情報は、たとえば、コーラーを特定するための情報、呼び出されている実際の関数を特定するための情報、関数呼出しに渡されたパラメータ、および他の同様の情報を含み得る。ある態様では、この情報は、未加工のフォーマットでリングバッファ422に記憶され得る。あるいは、リングバッファ422は、ログが処理された後で情報を記憶するために使用され得る。
【００８８】
観測器ロガー424は、フィルタ規則416およびスロットリング規則418のセットによって制御され得る。フィルタ規則416は、特定のAPIがログ取得されるべきかどうかを規定することができる。スロットリング規則418は、システムが過負荷を防ぐために特定のAPIのログ取得/監視を終了すべき条件を規定することができる。
【００８９】
フィルタ規則416およびスロットリング規則418は、観測器デーモン420によって作成され、更新され、かつ/または維持され得る。たとえば、モバイルデバイスを10分間観測した後で、特定のAPIにもはや関心がない(たとえば、それが有用な情報をシステムに提供していない)と観測器デーモン420が判断した場合、観測器デーモン420は、その特定のAPIに関するイベントがもはや監視/ログ取得されないように、フィルタ規則416を更新することができる。
【００９０】
図5Aは、別の態様による、観測器モジュール202を実装する例示的なコンピューティングシステム500中の論理コンポーネントおよび情報フローを示す。図5Aに示されるコンピューティングシステム500は、フィルタ規則416がデバイス上のユーザ空間中のユーザログAPI 406および/またはカーネル空間上で施行されることを除き、図4を参照して上で説明されたすべてのコンポーネントを含む。したがって、各々の呼が観測器ロガー424に来て、(図4を参照して説明されたように)呼がログ取得されるべきかどうかを観測器ロガー424が判断するのではなく、フィルタ規則416は、呼自体がフィルタ規則416に基づいてロガーに到達しないように、インスツルメンテーション(たとえば、ユーザログAPIなど)内で実装され得る。図5Aに示される構成を実装することでさらに、モバイルデバイスの効率を改善することができ、それは、カーネル内でロガーに対する関数呼出しが行われる必要がないからである。
【００９１】
図5Bは、さらに別の態様による、観測器モジュールを実装するコンピューティングシステム550中の論理コンポーネントおよび情報フローを示す。図5Bに示されるコンピューティングシステム550は、観測器デーモン420がユーザ空間中にあることを除き、図5Aを参照して上で説明されたすべてのコンポーネントを含む。ある態様では、観測器デーモン420、フィルタ規則416、スロットリング規則418、および観測器ロガー424は、同じコンポーネントの一部であり得る。図5Bに示される構成を実行することでさらに、モバイルデバイスの効率を改善することができ、それは、観測器デーモン420が、カーネル空間の中への関数呼出しを伴わずにフィルタ規則を更新できるからである。
【００９２】
任意の所与の時間において、いくつかのアプリケーションおよびいくつかのカーネルスレッドが、リングバッファに情報を記憶する/書き込むことを試みていることがあり、このことは、スケーラビリティを妨げるコンテンション問題を引き起こし得る。ある態様では、図6A〜図6Bに示されるように、複数のリングバッファを含むことで、システムのスケーラビリティが改善され得る。図6Aに示されるコンピューティングシステム600は、図5Aを参照して上で説明されたすべてのコンポーネントを含むが、複数のリングバッファ430を含む。コンピューティングシステム600は、システムによって監視されている各アプリケーション、スロットル、およびカーネルスレッドに対して、リングバッファを含み得る。たとえば、コンピューティングシステム600は、システムによって監視されているカーネルスレッドに対するリングバッファと、システムによって監視されている各アプリケーションおよび/またはスロットルに対する1つまたは複数のリングバッファとを含み得る。あるいは、コンピューティングシステム600は、システムによって監視されているアプリケーションのグループ、スロットルのグループ、およびカーネルスレッドのグループに対して、リングバッファを含み得る。複数のリングバッファを含むことは、コンピューティングシステム600がコンテンションの問題が発生することを防ぐことを可能にし、ボトルネックを減らす。
【００９３】
図6Bに示されるコンピューティングシステム650は、観測器デーモン420がユーザ空間中にあることを除き、図6Aを参照して上で説明されたすべてのコンポーネントを含む。図6Bに示される構成を実行することでさらに、モバイルデバイスの効率を改善することができ、それは、観測器デーモン420が、カーネル空間の中への関数呼出しを伴わずにフィルタ規則を更新できるからである。
【００９４】
図7Aは、ある態様の観測器デーモン420を実装するコンピューティングシステム700中の論理コンポーネントおよび情報フローを示す。コンピューティングシステム700は、分析器コンポーネント(たとえば、図2に示される分析器モジュール204)、フィルタ規則416コンポーネント、スロットル規則418コンポーネント、複数のリングバッファ430、データベース702、セキュアバッファ704、および観測器デーモン420を含み得る。観測器デーモン420は、リングバッファAPI 706、システム健全性モニタ708、挙動検出器712、データベースエンジン714、規則マネージャ710、セキュアバッファマネージャ716、クエリプロセッサ720、クエリAPI 718、およびデータベースAPI 722を含み得る。ロガー(図示されず)は、リングバッファ430に情報を記憶することができる。観測器デーモン420は、リングバッファAPI 706を介して、リングバッファ430から情報を抽出することができる。挙動検出器712は、リングバッファAPI 706から情報を受け取り、受け取られたデータに対して相関付けおよびフォーマット化の動作を実行して挙動ベクトルを生成することができる。
【００９５】
生成された挙動ベクトルは、データベース702に記憶するためのデータベースエンジン714に送られ得る。データベースエンジン714は、データベースの実装形態の特異性(たとえば、実装されるデータ構造の種類、データ構造に含まれる情報のタイプなど)のすべてを管理することができる。
【００９６】
規則マネージャ710は、様々なコンポーネント(たとえば、システム健全性モニタ、挙動検出ユニット、分析器など)からの入力を受け取り、受け取られた入力に基づいてフィルタ規則416およびスロットル規則418を更新するように構成され得る。たとえば、規則マネージャ710は、挙動検出器712からログ統計を受け取り、ログ統計に基づいてフィルタ規則416およびスロットル規則418を更新することができる。
【００９７】
システム健全性モニタ708は、システムリソースを監視し、システムの健全性を規則マネージャ710に知らせるように構成され得る。たとえば、システム健全性モニタ708は、バッテリーに蓄積されたままであるエネルギーの量、どれだけのメモリが利用可能であるか、詳細な観測を実行するのに十分なリソースがあるかどうか、などについて、規則マネージャ710に知らせることができる。規則マネージャ710は、システム健全性モニタ708から受け取られた情報を使用して、規則を更新することができる。たとえば、デバイスのバッテリー状態がある閾値を下回ることをシステム健全性モニタ708が示す場合、規則マネージャ710は、電力消費を減らすために、システムがより粗い観測を実行するようにフィルタ規則416を更新することができる。
【００９８】
クエリプロセッサ720は、クエリAPI 718からデータベース固有API 722への対話のような、様々なAPI間の対話を実行するように構成され得る。
【００９９】
セキュアバッファ704は、カーネル空間のコンポーネント(たとえば、信頼されていない領域中の)がユーザ空間のコンポーネント(たとえば、信頼されている領域中の)と通信することを可能にし得る。
【０１００】
セキュアバッファマネージャ716は、セキュアバッファ704を介して発生する通信を制御するように構成され得る。
【０１０１】
データベースエンジン714は、セキュアバッファマネージャ716にデータベース応答を記憶するように構成されてよく、セキュアバッファマネージャ716は、フロー制御動作を実行し、セキュアバッファ704に情報を記憶することができる。
【０１０２】
観測器デーモン420によって生成される情報は、分析器204によって利用されてよく、分析器204は、カーネル空間で、ユーザ空間で、または、システムオンチップ(SOC)の信頼されたコンピューティングベースで実装され得る。
【０１０３】
図7Bは、別の態様の観測器デーモン420を実装するコンピューティングシステム750中の論理コンポーネントおよび情報フローを示す。コンピューティングシステム750は、分析器204コンポーネント、フィルタ規則416コンポーネント、スロットル規則418コンポーネント、複数のリングバッファ430、セキュアバッファ704、セキュアバッファマネージャ716、および観測器デーモン420を含み得る。観測器デーモン420は、リングバッファAPI 706、システム健全性モニタ708、挙動検出器712、データベースエンジン714、および規則マネージャ710を含み得る。ロガー(図示されず)は、リングバッファ430に情報を記憶することができる。コンピューティングシステム750は、セキュアバッファマネージャ716がカーネル空間中にあり、ユーザ空間中の分析器204に送られるデータを制御できることを除き、図7Aに示されるコンピューティングシステム700と同じ動作を実行することができる。
【０１０４】
図8Aは、別の態様の観測器デーモンを実装するコンピューティングシステム800中の論理コンポーネントおよび情報フローを示す。この態様ではセキュアバッファの一部としてデータベースが含まれるので、図8Aに示されるコンピューティングシステム800は、クエリプロセッサを除き、図7Aを参照して上で説明されたコンポーネントのすべてを含む。この構成では、分析器がクエリを出すときは常に、クエリはデータベースエンジンから直接来ることができる。同様に、クエリに対する応答は、セキュアバッファから分析器に直接送られ得る。
【０１０５】
図8Bは、さらに別の態様の観測器デーモンを実装するコンピューティングシステム800中の論理コンポーネントおよび情報フローを示す。図8Bに示される例では、観測器デーモンは、ユーザ空間中に挙動検出器712およびデータベースエンジン714と、カーネル空間中にセキュアバッファマネージャ716、規則マネージャ710、およびシステム健全性モニタ708とを含む。
【０１０６】
様々な態様は、システムの挙動を特徴付けるために、webkit、SDK、NDK、カーネル、ドライバ、およびハードウェアを包含する、モバイルデバイス上のクロスレイヤ観測を提供する。挙動の観測は、リアルタイムで行われ得る。
【０１０７】
様々な態様の重要な特徴は、観測器モジュールが適応的観測技法を実行して観測の粒度を制御できることである。上で論じられたように、モバイルデバイスの劣化に寄与し得る多数(すなわち、数千)の要因が存在し、デバイスの性能の劣化に寄与し得る様々な要因のすべてを監視/観測することは実現不可能であり得る。これを克服するために、様々な態様は、観測されるべき関連する挙動を動的に特定し、特定された挙動が観測される際の詳細度のレベルを動的に決定する。
【０１０８】
図9Aは、疑わしいモバイルデバイスの挙動を特定するために、観測するモバイルデバイスの挙動を動的に選択するためのある態様の方法900を示す。ブロック902において、モバイルデバイスのプロセッサは、観測されるモバイルデバイスの挙動および/または状態を、観測のために選択することができる。デバイスの挙動および/または状態のこの選択は、広範囲の挙動、活動、および状態のサブセットの選択を含み得る。したがって、ブロック902における選択は、モバイルデバイスの動作、モバイルデバイスのイベント、データネットワークの活動、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアアプリケーションの活動または動作、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、アプリケーションレベルにおける条件およびイベント、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントの、1つまたは複数であり得る。ブロック904において、モバイルデバイスは、疑わしいモバイルデバイスの挙動を特定するために、選択されたデバイスの挙動および/または状態の観測を開始し、観測結果を処理することができる。デバイスの挙動および/または状態の選択されたサブセットのみが観測されるので、これは、プロセッサが、限られたセットの観測結果に基づいて疑わしい挙動を検出することを可能にする。
【０１０９】
ブロック902で選択されブロック904で観測され得るモバイルデバイスの動作の例は、たとえば、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリAPIの呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの読取り/書込み/検索動作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含む。
【０１１０】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのイベントの例は、たとえば、デバイス状態の変化および/またはセンサデバイス状態の変化を含む。
【０１１１】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのデータネットワークの活動の例は、たとえば、接続のタイプ、プロトコル、ポート番号、デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子(たとえば、DeviceIDComm)の、1つまたは複数を含む。
【０１１２】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのシステムリソースの使用量の例は、たとえば、フォークの数、メモリアクセス動作、および/またはファイル開封の回数を監視することを含む。
【０１１３】
ブロック902で選択されブロック904で観測され得るモバイルデバイスの状態の例は、たとえば、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態を含む。
【０１１４】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのプロセス間通信の例は、たとえば、極めて重要なサービス(ブラウザ、契約プロバイダなど)に対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することを含む。
【０１１５】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのドライバ統計の例は、たとえば、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含む。
【０１１６】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのハードウェアコンポーネントのステータスの例は、たとえば、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信コンポーネント、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントを含む。
【０１１７】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのハードウェアカウンタの例は、たとえば、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタと、ハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタとを含む。
【０１１８】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのドライバ統計の例は、たとえば、カメラ、センサ、電子ディスプレイ、WiFi通信コンポーネント、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、ワイヤレス通信コンポーネント、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含む。
【０１１９】
ブロック902で選択されブロック904で観測され得るソフトウェアアプリケーションのモバイルデバイス活動または動作の例は、たとえば、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む。
【０１２０】
ブロック902で選択されブロック904で観測され得るモバイルデバイスのソフトウェアのダウンロードの例は、たとえば、アプリケーションダウンロードサーバからのソフトウェアのダウンロードと、第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することとを含む。
【０１２１】
ブロック902で選択されブロック904で観測され得るデバイスまたはコンポーネントの設定に対する変更の例は、たとえば、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含む。
【０１２２】
ブロック902で選択されブロック904で観測され得るアプリケーションレベルにおけるモバイルデバイスの条件およびイベントの例は、たとえば、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、ユーザにより入力されたメモの観測、PassBook/Google Wallet/Paypalのような電子決済サービスの使用に関するイベントの観測、VPN、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測を含む。
【０１２３】
ブロック902で選択されブロック904で観測され得る無線レベルにおけるモバイルデバイスの条件およびイベントの例は、たとえば、無線通信リンクを確立する前または情報を送信する前のモバイルデバイスとのユーザの対話、二重のまたは複数のSIMまたはSIMカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期のいずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア(p2p)通信、同期、車両対車両の通信、および/または、機械対機械(m2m)通信のための無線(WiFi、WiMax、Bluetooth（登録商標）など)の使用を監視することと、ネットワークトラフィックの使用量、統計、またはプロファイルを監視することとを含む。
【０１２４】
ブロック902で選択されブロック904で観測され得るセンサレベルにおけるモバイルデバイスの条件およびイベントの例は、たとえば、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、USB充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルデバイスに結合されたことを検出すること、モバイルデバイスが(たとえば、USBなどを介して)コンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうか(たとえば、緊急通信アプリを悪意をもって無効にするなど)を判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USB/オーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから(たとえば、バイブレータインターフェースなどを介して)情報を収集すること、および、モバイルデバイスの温度状態に関する情報を収集することを含む。
【０１２５】
図9Bは、ある態様による、動的および適応的観測を実行するための別の例示的な方法910を示す。ブロック912で、モバイルデバイスのプロセッサは、モバイルデバイスの劣化に寄与し得る多数の要因/挙動のサブセットを監視/観測することによって、粗い観測を実行することができる。ブロック913で、モバイルデバイスプロセッサは、粗い観測に基づいて、粗い観測および/またはモバイルデバイスの挙動を特徴付ける挙動ベクトルを生成することができる。ブロック914で、モバイルデバイスのプロセッサは、モバイルデバイスの劣化に潜在的に寄与し得る、粗い観測と関連付けられるサブシステム、プロセス、および/またはアプリケーションを特定することができる。これは、たとえば、複数のソースから受け取られた情報とモバイルデバイスのセンサから受け取られたコンテキスト情報とを比較することによって達成され得る。ブロック916で、モバイルデバイスのプロセッサは、粗い観測に基づいて挙動分析動作を実行することができる。判定ブロック918で、モバイルデバイスのプロセッサは、疑わしい挙動または潜在的な問題が特定され挙動分析の結果に基づいて修正され得るかどうかを、判定することができる。疑わしい挙動または潜在的な問題が特定され挙動分析の結果に基づいて修正され得ると、モバイルデバイスのプロセッサが判定する(すなわち、判定ブロック918=「Yes」)とき、ブロック928で、プロセッサは、挙動を修正するための処理を開始し、ブロック912に戻って追加の粗い観測を実行することができる。
【０１２６】
疑わしい挙動または潜在的な問題が、挙動分析の結果に基づいて特定および/または修正され得ないとモバイルデバイスのプロセッサが判定する(すなわち、判定ブロック918=「No」)とき、判定ブロック919で、モバイルデバイスのプロセッサは、問題の可能性があるかどうかを判定することができる。ある実施形態では、モバイルデバイスのプロセッサは、モバイルデバイスが潜在的な問題に遭遇することおよび/または疑わしい挙動に関与することの確率を計算し、計算された確率が所定の閾値よりも大きいかどうかを判定することによって、問題の可能性があるかどうかを判定することができる。計算された確率が所定の閾値よりも大きくない、かつ/または、疑わしい挙動または潜在的な問題が存在するかつ/または検出可能である可能性はないとモバイルデバイスのプロセッサが判定する(すなわち、判定ブロック919=「No」)とき、プロセッサは、ブロック912に戻って追加の粗い観測を実行することができる。
【０１２７】
疑わしい挙動または潜在的な問題が存在するかつ/または検出可能である可能性があるとモバイルデバイスのプロセッサが判定する(すなわち、判定ブロック919=「Yes」)とき、ブロック920で、モバイルデバイスのプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、より深いログ取得/観測または最終的なログ取得を実行することができる。ブロック922で、モバイルデバイスのプロセッサは、特定されたサブシステム、プロセスまたはアプリケーションに対して、より深くおよびより詳細な観測を実行することができる。ブロック924で、モバイルデバイスのプロセッサは、より深くおよびより詳細な観測に基づいて、さらなる、および/またはより深い挙動分析を実行することができる。判定ブロック918で、モバイルデバイスのプロセッサは、より深い挙動分析の結果に基づいて、疑わしい挙動または潜在的な問題が特定され修正され得るかどうかを再び判定することができる。より深い挙動分析の結果に基づいて疑わしい挙動または潜在的な問題が特定され修正され得ないとモバイルデバイスのプロセッサが判定する(すなわち、判定ブロック918=「No」)とき、詳細度のレベルが問題を特定するのに十分に微細になるまで、または詳細度を上げても問題が特定され得ない、または問題が存在しないと判定されるまで、プロセッサはブロック920〜924の動作を繰り返すことができる。
【０１２８】
より深い挙動分析の結果に基づいて疑わしい挙動または潜在的な問題が特定され修正され得るとモバイルデバイスのプロセッサが判定する(すなわち、判定ブロック918=「Yes」)とき、ブロック928で、モバイルデバイスのプロセッサは、問題/挙動を修正するための動作を実行することができ、プロセッサはブロック912に戻って追加の動作を実行することができる。
【０１２９】
ある態様では、方法910のブロック912〜928の一部として、モバイルデバイスのプロセッサは、限られた粗い観測結果から疑わしい挙動を特定するために、挙動を動的に判定してより詳細に観測するために、および、観測のために必要な詳細度の正確なレベルを動的に決定するために、システムの挙動のリアルタイム挙動分析を実行することができる。これは、デバイス上で大量のプロセッサ、メモリ、またはバッテリーのリソースを使用する必要なく、モバイルデバイスのプロセッサが問題を効率的に特定し、問題が発生するのを防止することを可能にする。
【０１３０】
図10は、ある態様による、モバイルデバイスのプロセッサ上で動的および適応的な観測を実行するための例示的な観測器の方法1000を示す。観測器の方法1000は、モバイルデバイスのカーネル空間、ユーザ空間、またはこれらの組合せにおいて、観測器モジュールの一部として実施され得る。ブロック1002で、プロセッサ上で動作する観測器モジュールは、様々なソースからデータ情報、制御情報、および/またはコンテキスト情報を受け取ることができ、様々なソースは、分析器ユニット(たとえば、図2で説明された分析器モジュール204)、アプリケーションAPI、ドライバAPI、カーネルスレッド、ユーザスレッド、プロセス、プログラム、モバイルデバイスのセンサなどを含み得る。ブロック1004で、プロセッサ上で動作する観測器モジュールは、受け取られた情報を適応的およびインテリジェントにフィルタリングして、受け取られた情報のより小さなサブセットを生成することができる。ブロック1006で、プロセッサ上で動作する観測器モジュールは、フィルタリングされた情報をスロットル制御して、氾濫または過負荷を制御/防止することができる。ブロック1008で、プロセッサ上で動作する観測器モジュールは、空間的な相関付けおよび時間的な相関付けを実行して、デバイスに準最適レベルでの実行をさせ得る高レベル挙動を検出/特定することができる。ブロック1010で、プロセッサ上で動作する観測器モジュールは、特定のプロセス、アプリケーション、またはサブシステムの挙動を記述する挙動ベクトルを生成することができる。ブロック1012で、プロセッサ上で動作する観測器モジュールは、生成された挙動ベクトルをセキュアバッファに記憶することができる。
【０１３１】
図11Aは、別の態様による、モバイルデバイスプロセッサによって動的および適応的な観測を実行するための別の例示的な方法1100を示す。ブロック1102で、モバイルデバイスのプロセッサは、モバイルデバイス上で観測されるべき関連する挙動を動的に特定することができる。ブロック1104で、モバイルデバイスのプロセッサは、特定される挙動が観測される際の詳細度のレベルを動的に決定することができる。任意選択のブロック1106で、モバイルデバイスのプロセッサは、観測されているものに動的に適応することができる。任意選択のブロック1108で、モバイルデバイスのプロセッサは、観測されるべきパラメータ、要因、挙動、プロセス、アプリケーション、および/またはサブシステムを動的に変更または更新することができる。ブロック1102〜1108の動作は、継続的に、またはモバイルデバイスの性能(たとえば、バッテリーの電力消費、処理速度、ネットワーク通信速度など)を改善するために必要であるときに、繰り返され得る。
【０１３２】
図11Bは、図11Aを参照して上で説明されたブロック1102の動作の一部として実行され得る、ある態様の方法1110を示す。関連する挙動を動的に特定するために、モバイルデバイスのプロセッサは、ブロック1112で、上で説明されたモバイルデバイスの挙動のいずれかをある期間にわたって観測することができる。この観測は、ある設定された期間に対するものであってよく、または、継続的な学習プロセスのように、累積的であってよい。したがって、モバイルデバイスが長く動作するほど、より多くの挙動の観測結果が収集され得る。ブロック1114で、プロセッサは、性能制約条件を示すものであり得る、モバイルデバイスの一致しない挙動を特定することができる。これは、本明細書で説明される方法のいずれかを実行することを含み得る。一致しない挙動は、疑わしいモバイルデバイスの挙動または性能劣化させるモバイルデバイスの挙動であり得る。
【０１３３】
ブロック1116で、モバイルデバイスのプロセッサは、相関またはパターンを特定するために、複数の観測されたモバイルデバイスの挙動を相関付け、またはそれらの挙動の間の関連を特定し、一致しない挙動を特定することができる。たとえば、プロセッサは、特定された一致しない挙動の間に、またはその直前にのみ発生する、観測されたモバイルデバイスの挙動を特定することができる。別の例として、プロセッサは、特定された一致しない挙動の間に、またはその直前に頻繁に発生する(ただし必ずしも常に発生するとは限らない)、観測されたモバイルデバイスの挙動を特定することができる。さらなる例として、プロセッサは、一致しない挙動が特定されるときにのみ、またはそのときに頻繁に、一緒に発生する、観測された挙動のセットを特定することができる。ブロック1118で、プロセッサは、一致しない挙動と関連付けられる、または相関付けられるものとしてプロセッサが特定した挙動のサブセットの中から、観測するモバイルデバイスの挙動を選択することができる。したがって、観測するモバイルデバイスの挙動の選択は動的であってよく、選択処理は、より多くのモバイルデバイスの挙動が観測されより多くの一致しない挙動が特定されるにつれて、経時的に改善し得る。このようにして、モバイルデバイスが長く動作するほど、プロセッサは、一致しない挙動または望ましくない挙動と最も密接に相関付けられる、または関連付けられる少数の挙動を、より良好に特定することが可能になり得る。すなわち、モバイルデバイスのプロセッサがこれらのモバイルデバイスの挙動をより長く観測するほど、疑わしいモバイルデバイスの挙動または性能劣化させる可能性のあるモバイルデバイスの挙動の分類がより正確になる。
【０１３４】
図11Cは、図11Bを参照して上で説明されたブロック1116の動作の一部として実行され得る、ある態様の方法1120を示す。観測されたモバイルデバイスの挙動と一致しない挙動との相関を特定するプロセスの一部として、ブロック1122で、プロセッサは、高レベルアプリケーション、システムカーネル、およびドライバAPIの1つまたは複数から挙動入力を受け取ることができる。ある実施形態では、これらの入力はまず、任意選択のブロック1121で、疑わしい挙動または一致しない挙動と関連付けられないとプロセッサが判定できる入力を除外する、適応フィルタによってフィルタリングされ得る。
【０１３５】
ブロック1124で、プロセッサは、上で説明されたように、モバイルデバイスの進行中の動作に関するコンテキスト情報を受け取ることができる。ブロック1126で、プロセッサは、上で説明されたように、受け取られた挙動入力と受け取られたコンテキスト情報の相関付け(たとえば、空間的な相関付けなど)を実行することができる。任意選択で、プロセッサはまた、任意選択のブロック1128で、関連する観測された挙動を特定するために、受け取られた挙動入力の追加の相関付け(たとえば、時間的な相関付け)を実行し、コンテキスト情報を受け取ることができる。たとえば、プロセッサは、時間的な相関付けを実行して、一致しない挙動と時間的に関連する(たとえば、時間的に接近して先行する、または同時の)挙動を特定することができる。この情報を使用して、プロセッサは、上で説明されたように、ブロック1130で、観測されたモバイルデバイスの挙動を簡潔に記述する挙動ベクトルを生成することができる。そのような挙動ベクトルは、様々な動作可能なソフトウェアレベルにあるAPIから、および、モバイルデバイスの様々なソフトウェア/ハードウェアモジュールから収集された情報を含み得る。
【０１３６】
ブロック1130で生成される挙動ベクトルは、たとえば、ライブラリAPIの呼出し、システムコール、ファイルシステムおよびネットワークサブシステムの動作、センサデバイスの状態の変化、ファイルシステムの活動、ネットワークの活動、電話の活動、メモリアクセス動作、モバイルデバイスの状態、電子ディスプレイの電源オン/オフ状態、モバイルデバイスのロックされた/ロックされていない状態、残りのバッテリー電力の量、プロセス間通信(IPC)、ドライバ統計、およびハードウェアカウンタの1つまたは複数に関する情報を含み得る。
【０１３７】
ブロック1130で生成される挙動ベクトルは、一連の数字を含むベクトルデータ構造を有してよく、これらの数字の各々がモバイルデバイスの特徴または挙動を表す。そのような数字は、たとえば、モバイルデバイスのカメラが使用されているかまたはいないか、モバイルデバイスによって生成されたネットワークトラフィックの量、またはある期間内にモバイルデバイスによって送信されたインターネットメッセージの数のようなカウンタ値を示すために、バイナリフラグ(すなわち、1か0のいずれかの値を有する単一ビット)を含み得る。
【０１３８】
ブロック1130で生成される挙動ベクトルはまた、呼の情報、テキストメッセージングの情報、メディアメッセージングの情報、ユーザアカウント情報、位置情報、カメラ情報、加速度計情報、およびブラウザ情報の1つまたは複数を含み得る。上で論じられたように、挙動ベクトルを生成するために使用される情報は、モバイルデバイスのアプリケーションレベルで、モバイルデバイスの無線レベルで、およびモバイルデバイスのセンサレベル(たとえば、カメラまたはマイクロフォン)で収集された情報を含み得る。
【０１３９】
そのようなモバイルデバイス102の例示的で非限定的な態様の例示的なコンポーネントおよびモジュールが図12に示される。モバイルコンピューティングデバイス102は、電子部品の回路基板1202を含んでよく、電子部品の一部またはすべてが、メモリ1204に結合された制御プロセッサ1201を含むオンチップシステムに集積されてよい。制御プロセッサ1201はさらに、デジタル信号プロセッサ1206および/またはアナログ信号プロセッサ1208に結合されてよく、これらも一緒に結合され得る。いくつかの実施形態では、制御プロセッサ1201およびデジタル信号プロセッサ1206は、同じコンポーネントであってよく、または同じプロセッサチップに集積されてよい。ディスプレイコントローラ1210およびタッチスクリーンコントローラ1212は、制御プロセッサ1201、およびモバイルコンピューティングデバイス102内の、またはそれに接続されるディスプレイ/タッチスクリーン1214に結合され得る。
【０１４０】
制御プロセッサ1201はまた、リムーバブルメモリ1216(たとえば、モバイルコンピューティングデバイスの場合のSDメモリまたはSIMカード)、および/または、ディスクドライブ、CDドライブ、およびDVDドライブのうちの1つまたは複数などの外部メモリ1218に結合され得る。制御プロセッサ1201はまた、Universal Serial Bus(USB)ポート1222に結合するUSBコントローラ1220に、結合され得る。様々な態様では、電源1221は、USBコントローラ1220を通じて、または様々な電子部品に電力(たとえば、DC電力)を供給する様々な電気接続を通じて、回路基板1202に結合され得る。
【０１４１】
制御プロセッサ1201はまた、ビデオエンコーダ1224、たとえば位相反転線(PAL)エンコーダ、sequential couleur a memoire(SECAM)エンコーダ、または全国テレビジョン方式委員会(NTSC)エンコーダにも結合され得る。さらに、ビデオエンコーダ1224は、ビデオエンコーダ1224およびディスプレイ/タッチスクリーン1214に結合され得るビデオ増幅器1226に結合され得る。また、モバイルコンピューティングデバイス102を外部のモニタ、テレビまたは他のディスプレイ(図示せず)に接続することを可能にするために、ビデオポート1228が、ビデオ増幅器1226に結合され得る。
【０１４２】
制御プロセッサ1201は、アナログ信号プロセッサ1208などを介して、高周波(RF)送受信機1230に結合され得る。RF送受信機1230は、RF信号を送信してかつ受信するためのRFアンテナ1218に結合され得る。RF送受信機1230は、たとえば、携帯電話(たとえば、G-3、UMTS、CDMAなど)、WiFi、WiMax、およびBluetooth（登録商標）を含む、1つまたは複数の異なるワイヤレス通信プロトコルの通信信号を送信しかつ受信するように構成され得る。
【０１４３】
制御プロセッサ1201はさらに、ネットワークカード1232に結合されてよく、ネットワークカード1232は、ネットワークコネクタ1231および/またはRF送受信機1230に結合され、外部ネットワーク(たとえば、ローカルエリアネットワーク、インターネット、イントラネット、WiFiネットワーク、Bluetooth（登録商標）ネットワーク、パーソナルエリアネットワーク(PAN)など)を介した通信を可能にするように構成され得る。ネットワークカード1232は、個別のチップまたはカードの形態であり得るか、または、フルソリューションの通信チップとして、制御プロセッサ1201またはRF送受信機1230(または両方)の一部として実装され得る。
【０１４４】
いくつかのアナログデバイスは、キーパッド1234のように、アナログ信号プロセッサ1208を介して制御プロセッサ1201に結合され得る。他の実装形態では、キーパッドまたはキーボードは固有のプロセッサを含むことがあるので、制御プロセッサ1201とのインターフェースは、直接接続(図示せず)を介するか、ネットワーク接続(たとえば、ネットワークカード)を介するか、またはUSBポート1222を介することがある。
【０１４５】
いくつかの実装形態では、デジタルカメラ1236は制御プロセッサ1201に結合され得る。例示的な態様では、デジタルカメラ1236は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラであってよい。デジタルカメラ1236は、モバイルコンピューティングデバイス102に組み込まれてよく、または外部ケーブルによってデバイスに結合されてよい。
【０１４６】
いくつかの実装形態では、オーディオコーデック1238(たとえば、ステレオコーデック)は、アナログ信号プロセッサ1208に結合され、オーディオ増幅器1242を介して1つまたは複数のスピーカー1240に音声信号を送るように構成され得る。オーディオコーデック1238はまた、(たとえば、マイクロフォンジャックを介して)マイクロフォン1246に結合され得るマイクロフォン増幅器1244に結合され得る。ヘッドフォンジャック1248はまた、オーディオをヘッドフォンに出力するために、オーディオコーデック1238に結合され得る。
【０１４７】
いくつかの実装形態では、モバイルコンピューティングデバイス102は、ブロードキャストされたワイヤレス通信信号を受信するためのアンテナ1252に結合され得る別のRF受信機回路1250を含み得る。受信機回路1250は、放送されたテレビ信号(たとえば、EBMS放送)を受信し、処理のためにDSP 1206に受信された信号を与えるように構成され得る。いくつかの実装形態では、受信機回路1250は、FMラジオ信号を受信するように構成されてよく、この場合、受信された信号は、処理のためにオーディオコーデック1238に渡され得る。
【０１４８】
ある態様では、上で説明された方法の動作のうちの1つまたは複数を遂行するためのプロセッサ実行可能命令は、内部メモリ1204、リムーバブルメモリ1216、および/または不揮発性メモリ1218(たとえば、ハードドライブ、CDドライブ、またはネットワークを介してアクセス可能な他のストレージ)に記憶され得る。そのようなプロセッサ実行可能命令は、本明細書で説明された方法を実行するために、制御プロセッサ1201によって実行され得る。
【０１４９】
様々な態様が、種々のモバイルコンピューティングデバイス上で実装されてよく、それらの一例が、スマートフォンの形で図13に示されている。スマートフォン1300は、内部メモリ1302と、ディスプレイ1303と、スピーカーとに結合されたプロセッサ1301を含み得る。加えて、スマートフォン1300は、プロセッサ1301に結合されたワイヤレスデータリンクおよび/または携帯電話送受信機1305に接続され得る、電磁放射を送信しかつ受信するためのアンテナ1304を含み得る。スマートフォン1300は通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ1306も含む。
【０１５０】
一般的なスマートフォン1300はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化し、かつ受信された音のデータパケットを復号し、音を生成するためにスピーカーに与えられるアナログ信号を生成する、音の符号化/復号(CODEC)回路1312を含む。また、プロセッサ1301、ワイヤレス送受信機1305およびコーデック1312のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に示されず)を含み得る。
【０１５１】
態様の方法の一部は、態様の方法を実行している間にモバイルデバイスのプロセッサによってアクセスされ得る通常の動作挙動のデータベースを維持することのような、サーバ中で発生する処理のいくつかによって、クライアントサーバアーキテクチャ中で遂行され得る。そのような態様は、図14に示されるサーバ1400のような、種々の市販のサーバデバイスのいずれにおいても実装され得る。そのようなサーバ1400は通常、揮発性メモリ1402と、ディスクドライブ1403のような大容量の不揮発性メモリとに結合された、プロセッサ1401を含む。サーバ1400はまた、プロセッサ1401に結合されたフロッピー（登録商標）ディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ1411を含み得る。サーバ1400はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークのような、ネットワーク1405とのデータ接続を確立するための、プロセッサ1401に結合されたネットワークアクセスポート1404を含み得る。
【０１５２】
プロセッサ1301、1401は、以下で説明される様々な態様の機能を含む、種々の機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするように、複数のプロセッサ1301が設けられ得る。通常、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ1301、1401にロードされる前に、内部メモリ1302、1402、1403に記憶され得る。プロセッサ1301、1401は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【０１５３】
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが動作する場合)ユーザ空間中に編成され、(特権コードが動作する場合)カーネル空間中に編成される。この分離は、カーネル空間の一部であるコードがGPL許諾される必要がある一方で、ユーザ空間内で動作するコードがGPL許諾されなくてもよい、Android(登録商標)および他の一般公有使用許諾(GPL)環境において特に重要である。本明細書で説明される様々なソフトウェアコンポーネント/モジュールは、明示的に別段述べられない限り、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
【０１５４】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供されたものであり、様々な態様のステップが提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様におけるステップの順序は、いかなる順序でも実行され得る。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明を通して読者を案内するために使用される。さらに、たとえば、冠詞「a」、「an」または「the」を使用する単数形での請求要素への任意の言及は、その要素を単数に限定するものとして解釈されるべきではない。
【０１５５】
本明細書で開示された態様に関して説明された、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、上では全般にそれらの機能に関して説明された。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、具体的な適用例および全体的なシステムに課される設計の制約に依存する。当業者は、説明された機能を具体的な適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【０１５６】
本明細書で開示された態様に関して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別のハードウェアコンポーネント、または、本明細書で説明された機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサは多重プロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPおよび多重プロセッサの組合せ、複数の多重プロセッサ、DSPコアと連携する1つもしくは複数の多重プロセッサ、または任意の他のそのような構成として実装され得る。代替として、いくつかのステップまたは方法は、所与の機能に固有の回路によって実行され得る。
【０１５７】
1つまたは複数の例示的な態様では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体に記憶され得る。本明細書で開示された方法またはアルゴリズムのステップは、非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールで具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令またはデータ構造の形式で所望のプログラムコードを記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピー（登録商標）ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生するが、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せも、非一時的コンピュータ可読媒体およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
【０１５８】
開示された態様の上記の説明は、任意の当業者が本発明を製作または使用できるように与えられたものである。これらの態様への様々な修正が当業者には容易に明らかであり、本明細書で定義された一般的な原理は、本発明の趣旨または範囲を逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書で示された態様に限定されるものではなく、以下の特許請求の範囲ならびに本明細書で開示された原理および新規の特徴に合致する、最も広い範囲を与えられるべきである。
【符号の説明】
【０１５９】
100  SOC
101  デジタル信号プロセッサ
102  モバイルデバイス
104  モデムプロセッサ
106  グラフィクスプロセッサ
108  アプリケーションプロセッサ
110  コプロセッサ
112  メモリ
114  アナログおよびカスタム回路
116  システムコンポーネントおよびリソース
118  クロック
120  電圧レギュレータ
124  相互接続/バスモジュール
200  コンピューティングシステム
202  粗い観測器モジュール
204  分析器モジュール
206  外部コンテキスト情報モジュール
208  作動モジュール
302  適応フィルタ
304  スロットルモジュール
306  観測器モード
308  高レベル挙動検出
310  挙動ベクトル生成器
312  セキュアバッファ
314  空間相関モジュール
316  時間相関モジュール
400  コンピューティングシステム
402  アプリケーションフレームワーク
404  ランタイムライブラリ
406  ユーザログAPI
408  ロガーライブラリ
410  カーネルコア
412  カーネルドライバ
414  カーネルログAPI
416  フィルタ規則モジュール
418  スロットリング規則モジュール
420  観測器デーモン
422  リングバッファ
424  観測器ロガーデバイス/モジュール
430  リングバッファ
500  コンピューティングシステム
600  コンピューティングシステム
650  コンピューティングシステム
700  コンピューティングシステム
702  データベース
704  セキュアバッファ
706  リングバッファAPI
708  システム健全性モニタ
710  規則マネージャ
712  挙動検出器
714  データベースエンジン
716  セキュアバッファマネージャ
718  クエリAPI
720  クエリプロセッサ
722  データベースAPI
750  コンピューティングシステム
800  コンピューティングシステム
850  コンピューティングシステム
900  方法
910  方法
1000  方法
1100  方法
1110  方法
1120  方法
1201  制御プロセッサ
1202  回路基板
1204  メモリ
1206  デジタル信号プロセッサ
1208  アナログ信号プロセッサ
1210  ディスプレイコントローラ
1212  タッチスクリーンコントローラ
1214  ディスプレイ/タッチスクリーン
1216  リムーバブルメモリ
1218  不揮発性メモリ
1218  アンテナ
1220  USBコントローラ
1221  電源
1222  USBポート
1224  ビデオエンコーダ
1226  ビデオ増幅器
1228  ビデオポート
1230  RF送受信機
1231  ネットワークコネクタ
1232  ネットワークカード
1234  キーパッド
1236  CCD/CMOSカメラ
1238  オーディオコーデック
1240  スピーカー
1242  オーディオ増幅器
1244  マイクロフォン増幅器
1246  マイクロフォン
1248  ヘッドフォンジャック
1250  RF受信機
1252  アンテナ
1300  スマートフォン
1301  プロセッサ
1302  内部メモリ
1303  ディスプレイ
1304  アンテナ
1305  ワイヤレス送受信機
1306  ロッカースイッチ
1312  コーデック
1400  サーバ
1401  プロセッサ
1402  揮発性メモリ
1403  ディスクドライブ
1404  ネットワークアクセスポート
1405  ネットワーク
【図１】
2016518633.tif 000003
【図２】
2016518633.tif 000004
【図３】
2016518633.tif 000005
【図４】
2016518633.tif 000006
【図５Ａ】
2016518633.tif 000007
【図５Ｂ】
2016518633.tif 000008
【図６Ａ】
2016518633.tif 000009
【図６Ｂ】
2016518633.tif 000010
【図７Ａ】
2016518633.tif 000011
【図７Ｂ】
2016518633.tif 000012
【図８Ａ】
2016518633.tif 000013
【図８Ｂ】
2016518633.tif 000014
【図９Ａ】
2016518633.tif 000015
【図９Ｂ】
2016518633.tif 000016
【図１０】
2016518633.tif 000017
【図１１Ａ】
2016518633.tif 000018
【図１１Ｂ】
2016518633.tif 000019
【図１１Ｃ】
2016518633.tif 000020
【図１２】
2016518633.tif 000021
【図１３】
2016518633.tif 000022
【図１４】
2016518633.tif 000023
【手続補正書】
【提出日】平成27年4月25日(2015.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
モバイルデバイスの挙動をある期間にわたって観測して、通常の動作パターンと一致しないモバイルデバイスの挙動を認識するための方法であって、
モバイルデバイスの動作、モバイルデバイスのイベント、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、
前記選択されたモバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしい進行中のモバイルデバイスの挙動を特定するステップとを含む、方法。
【請求項２】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの操作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含む、請求項1に記載の方法。
【請求項３】
モバイルデバイスのイベントが、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含む、請求項1に記載の方法。
【請求項４】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の2つ以上を含むデータネットワークの活動を、観測のために選択するステップを含む、請求項1に記載の方法。
【請求項５】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含む、請求項1に記載の方法。
【請求項６】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含む、請求項1に記載の方法。
【請求項７】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含む、請求項1に記載の方法。
【請求項８】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含む、請求項1に記載の方法。
【請求項９】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１０】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１１】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む、ソフトウェアアプリケーションの活動または動作を選択するステップを含む、請求項1に記載の方法。
【請求項１２】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１３】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含む、請求項1に記載の方法。
【請求項１４】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含む、アプリケーションレベルにおける条件およびイベントを選択するステップを含む、請求項1に記載の方法。
【請求項１５】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、車両対車両の通信を監視することとを含む、請求項1に記載の方法。
【請求項１６】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含む、請求項1に記載の方法。
【請求項１７】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップが、
前記期間にわたってモバイルデバイスの挙動を観測するステップと、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取り、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取り、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行し、
挙動ベクトルを生成する
ことによって、一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップとを含む、請求項1に記載の方法。
【請求項１８】
挙動ベクトルを生成するステップが、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するステップを含む、請求項17に記載の方法。
【請求項１９】
挙動ベクトルを生成するステップが、
一連の数字を含むベクトルデータ構造を生成するステップを含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表す、請求項17に記載の方法。
【請求項２０】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定する、請求項19に記載の方法。
【請求項２１】
挙動ベクトルを生成するステップが、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するステップを含む、請求項17に記載の方法。
【請求項２２】
挙動ベクトルを生成するステップが、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するステップを含む、請求項17に記載の方法。
【請求項２３】
挙動ベクトルを生成するステップが、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するステップを含む、請求項17に記載の方法。
【請求項２４】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップがさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含む、請求項17に記載の方法。
【請求項２５】
2つ以上のプロセッサコアを含むマルチコアプロセッサを含むコンピューティングデバイスであって、前記2つ以上のプロセッサコアの1つまたは複数が、
モバイルデバイスの動作、モバイルデバイスのイベント、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしい進行中のモバイルデバイスの挙動を特定するステップとを含む動作を実行するようにプロセッサ実行可能命令によって構成される、コンピューティングデバイス。
【請求項２６】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの操作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項２７】
モバイルデバイスのイベントが、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項２８】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップが、
接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の2つ以上を含むデータネットワークの活動を、選択するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項２９】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３０】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３１】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３２】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３３】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３４】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３５】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む、ソフトウェアアプリケーションの活動または動作を選択するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３６】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３７】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３８】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含む、アプリケーションレベルにおける条件およびイベントを選択するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項３９】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、および車両対車両の通信のための無線の使用を監視することとを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項４０】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項４１】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップが、
期間にわたってモバイルデバイスの挙動を観測するステップと、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取り、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取り、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行し、
挙動ベクトルを生成する
ことによって、一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップとを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項25に記載のコンピューティングデバイス。
【請求項４２】
挙動ベクトルを生成するステップが、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４３】
挙動ベクトルを生成するステップが、
一連の数字を含むベクトルデータ構造を生成するステップを含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表すように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４４】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定するように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４５】
挙動ベクトルを生成するステップが、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４６】
挙動ベクトルを生成するステップが、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４７】
挙動ベクトルを生成するステップが、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４８】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップがさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含むように、動作を実行するように前記プロセッサコアの1つまたは複数がプロセッサ実行可能命令によって構成される、請求項41に記載のコンピューティングデバイス。
【請求項４９】
モバイルデバイスの動作、モバイルデバイスのイベント、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段と、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしい進行中のモバイルデバイスの挙動を特定するための手段とを含む、コンピューティングデバイス。
【請求項５０】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの操作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５１】
モバイルデバイスのイベントが、デバイス状態の変化とセンサデバイス状態の変化の1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５２】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段がさらに、
接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の2つ以上を含むデータネットワークの活動を、選択するための手段を含む、請求項49に記載のコンピューティングデバイス。
【請求項５３】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５４】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５５】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５６】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含む、請求項49に記載のコンピューティングデバイス。
【請求項５７】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５８】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項５９】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段がさらに、
位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む、ソフトウェアアプリケーションの活動または動作を選択するための手段を含む、請求項49に記載のコンピューティングデバイス。
【請求項６０】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項６１】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含む、請求項49に記載のコンピューティングデバイス。
【請求項６２】
アプリケーションレベルにおける条件およびイベントが、顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項６３】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段がさらに、
無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、および車両対車両の通信を監視することとを含む、前記無線レベルにおける条件およびイベントを選択するための手段を含む、請求項49に記載のコンピューティングデバイス。
【請求項６４】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含む、請求項49に記載のコンピューティングデバイス。
【請求項６５】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するための手段が、
期間にわたってモバイルデバイスの挙動を観測するための手段と、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取るための手段と、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取るための手段と、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行するための手段と、
挙動ベクトルを生成するための手段と
を含む、一致しない動作と関連付けられる挙動の限られたセットを観測されるべき前記モバイルデバイスの挙動として特定するための手段とを含む、請求項64に記載のコンピューティングデバイス。
【請求項６６】
挙動ベクトルを生成するための手段が、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するための手段を含む、請求項65に記載のコンピューティングデバイス。
【請求項６７】
挙動ベクトルを生成するための手段が、
一連の数字を含むベクトルデータ構造を生成するための手段を含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表す、請求項65に記載のコンピューティングデバイス。
【請求項６８】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定する、請求項67に記載のコンピューティングデバイス。
【請求項６９】
挙動ベクトルを生成するための手段が、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するための手段を含む、請求項65に記載のコンピューティングデバイス。
【請求項７０】
挙動ベクトルを生成するための手段が、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するための手段を含む、請求項65に記載のコンピューティングデバイス。
【請求項７１】
挙動ベクトルを生成するための手段が、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するための手段を含む、請求項65に記載のコンピューティングデバイス。
【請求項７２】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するための手段がさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するための手段を含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含む、請求項65に記載のコンピューティングデバイス。
【請求項７３】
プロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記プロセッサ実行可能命令が、プロセッサに、
モバイルデバイスの動作、モバイルデバイスのイベント、システムリソースの使用量、モバイルデバイスの状態、プロセス間通信、ドライバ統計、ハードウェアコンポーネントのステータス、ハードウェアカウンタ、ソフトウェアのダウンロード、デバイスまたはコンポーネントの設定に対する変更、無線レベルにおける条件およびイベント、ならびに、センサレベルにおける条件およびイベントを含む群から、1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップと、
前記モバイルデバイスの挙動を適応的に観測して、観測結果の限られたセットから疑わしい進行中のモバイルデバイスの挙動を特定するステップとを含む動作を実行させるように構成される、非一時的プロセッサ可読記憶媒体。
【請求項７４】
モバイルデバイスの動作が、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムの動作、ファイルシステムの活動、ファイル名の検索、ファイルアクセスのカテゴリ、ファイルの作成、ファイルの削除、ファイルの操作、ならびに、ファイルパーミッションの変更の、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項７５】
モバイルデバイスのイベントが、デバイス状態の変化およびセンサデバイス状態の変化の1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項７６】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
接続のタイプ、プロトコル、ポート番号、前記デバイスが接続されているサーバ/クライアント、接続の数、通信の量または頻度、電話ネットワークの活動、送られた呼/メッセージのタイプおよび回数、受け取られた呼/メッセージのタイプおよび回数、中断された呼/メッセージのタイプおよび回数、呼の情報、テキストメッセージングの情報、メディアメッセージング、ユーザアカウント情報、送信、ボイスメール、ならびにデバイス識別子の2つ以上を含むデータネットワークの活動を、選択するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項７７】
システムリソースの使用量が、フォークの数、メモリアクセス動作、およびファイル開封の回数を監視することの1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項７８】
モバイルデバイスの状態が、ディスプレイのオン/オフ状態、ロックされた/ロックされていない状態、バッテリーの充電状態、カメラの状態、およびマイクロフォンの状態の1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項７９】
プロセス間通信が、極めて重要なサービスに対する意図を監視すること、プロセス間通信の程度を監視すること、およびポップアップウィンドウを監視することの1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８０】
ドライバ統計が、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、周辺デバイス、および外部メモリチップの1つまたは複数についての、ドライバからの統計を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８１】
ハードウェアコンポーネントのステータスが、カメラ、センサ、電子ディスプレイ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、外部メモリチップ、電圧レギュレータ、発振器、位相ロックループ、周辺ブリッジ、およびモバイルコンピューティングデバイス上で動作するプロセッサおよびクライアントをサポートするために使用される他の同様のコンポーネントの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８２】
ハードウェアカウンタが、モバイルコンピューティングデバイスおよび/またはモバイルデバイスのサブシステムの状態またはステータスを示すハードウェアカウンタ、およびハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８３】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リスト、カレンダー情報、記録されたオーディオ情報、ソフトウェアアプリケーションとの間で通信される通知、ユーザ認証、およびユーザパスワードの1つまたは複数を含む、ソフトウェアアプリケーションによって使用される情報の監視を含む、ソフトウェアアプリケーションの活動または動作を選択するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８４】
ソフトウェアのダウンロードが、アプリケーションダウンロードサーバからのソフトウェアのダウンロード、および第1のソフトウェアアプリケーションが第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求することの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８５】
デバイスまたはコンポーネントの設定に対する変更が、コンパス情報、モバイルデバイスの設定、バッテリーの寿命、ジャイロスコープ情報、圧力センサ、およびスクリーンの活動の1つまたは複数に対する変更を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８６】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップがさらに、
顔認識ソフトウェアを介したユーザの観測、ソーシャルストリームの観測、前記ユーザにより入力されたメモの観測、電子決済サービスの使用に関するイベントの観測、同期、音声検索、音声制御、言語翻訳機の使用、計算のためのデータのオフロード、ビデオストリーミング、ユーザの活動を伴わないカメラの使用、およびユーザの活動を伴わないマイクロフォンの使用に関するイベントの観測の、1つまたは複数を含む、アプリケーションレベルにおける条件およびイベントを選択するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８７】
前記無線レベルにおける条件およびイベントが、無線通信リンクを確立する前または情報を送信する前の前記モバイルデバイスとのユーザの対話、複数の加入者識別モジュールカード、インターネットラジオ、携帯電話のテザリング、計算のためのデータのオフロード、デバイス状態の通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイスの同期の、いずれかまたはすべての存在、実在、または量を決定することと、測位、ピアツーピア通信、同期、および車両対車両の通信のための無線の使用を監視することとを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８８】
前記センサレベルにおける条件およびイベントが、磁気センサを監視すること、近距離通信を検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、universal serial bus(USB)充電源の存在を検出すること、キーボードまたは補助デバイスが前記モバイルデバイスに結合されたことを検出すること、前記モバイルデバイスがコンピューティングデバイスに結合されたことを検出すること、発光ダイオード、フラッシュ、フラッシュライト、または光源が変更または無効にされたかどうかを判定すること、スピーカーまたはマイクロフォンがオンにされたかまたは電源投入されたかどうかを判定すること、充電イベントまたは電源投入イベントを検出すること、前記モバイルデバイスがゲームコントローラとして使用されていることを検出すること、医療用/健康管理センサから、またはユーザの体を調査することから情報を収集すること、USBポートとオーディオジャックの1つに差し込まれた外部センサから情報を収集すること、触覚センサまたは接触センサから情報を収集すること、および、前記モバイルデバイスの温度状態に関する情報を収集することの、1つまたは複数を含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項８９】
1つまたは複数のモバイルデバイスの挙動を観測のために動的に選択するステップが、
期間にわたってモバイルデバイスの挙動を観測するステップと、
高レベルアプリケーション、システムカーネル、およびドライバアプリケーションプログラミングインターフェース(API)の1つまたは複数から、適応フィルタによるフィルタリングの後で挙動入力を受け取り、
前記モバイルデバイスの動作に関するコンテキスト情報を受け取り、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の空間的な相関付けを実行し、
挙動ベクトルを生成する
ことによって、一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップとを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項73に記載の非一時的プロセッサ可読記憶媒体。
【請求項９０】
挙動ベクトルを生成するステップが、
ライブラリAPIの呼出しと、
システムコールと、
ファイルシステムの動作と、
センサデバイス状態の変化と、
ファイルシステムの活動と、
電話の活動と、
メモリアクセス動作と、
前記モバイルデバイスの状態と、
前記モバイルデバイスの電子ディスプレイの電源オン/オフ状態と、
前記モバイルデバイスのロックされた/ロックされていない状態と、
バッテリーの残量と、
プロセス間通信(IPC)と、
ドライバ統計と、
ハードウェアカウンタとの1つまたは複数に関する情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項89に記載の非一時的プロセッサ可読記憶媒体。
【請求項９１】
挙動ベクトルを生成するステップが、
一連の数字を含むベクトルデータ構造を生成するステップを含み、前記数字の各々が前記モバイルデバイスの特徴または挙動を表すように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項89に記載の非一時的プロセッサ可読記憶媒体。
【請求項９２】
前記一連の数字の少なくとも1つが、
前記モバイルデバイスのカメラが使用されているかまたは使用されていないか、および、
どれだけのインターネットメッセージが前記モバイルデバイスから送られたかの、1つまたは複数を特定するように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項91に記載の非一時的プロセッサ可読記憶媒体。
【請求項９３】
挙動ベクトルを生成するステップが、
呼の情報と、
テキストメッセージングの情報と、
メディアメッセージングの情報と、
ユーザアカウント情報と、
位置情報と、
カメラ情報と、
加速度計情報と、
ブラウザ情報との少なくとも1つを含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項89に記載の非一時的プロセッサ可読記憶媒体。
【請求項９４】
挙動ベクトルを生成するステップが、前記モバイルデバイスの無線レベルにおいて収集された情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項89に記載の非一時的プロセッサ可読記憶媒体。
【請求項９５】
挙動ベクトルを生成するステップが、前記モバイルデバイスのセンサレベルにおいて収集された情報を含むベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項89に記載の非一時的プロセッサ可読記憶媒体。
【請求項９６】
一致しない動作と関連付けられる挙動の限られたセットを、観測されるべき前記モバイルデバイスの挙動として特定するステップがさらに、
前記受け取られた挙動入力および前記受け取られたコンテキスト入力の時間的な相関付けを実行するステップを含み、挙動ベクトルを生成するステップが、前記空間的な相関付けおよび時間的な相関付けの結果に基づいて挙動ベクトルを生成するステップを含むように、プロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能命令が構成される、請求項89に記載の非一時的プロセッサ可読記憶媒体。
【国際調査報告】
2016518633.tif 000024
2016518633.tif 000025
2016518633.tif 000026
2016518633.tif 000027
2016518633.tif 000028