(57)【特許請求の範囲】
【請求項１】
モバイルデバイスにおいてソフトウェアアプリケーションまたはプロセスの実行状態を決定する方法であって、
前記モバイルデバイスのプロセッサにより、前記モバイルデバイスの複数のソフトウェアまたはハードウェア構成要素において、前記ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集するステップであって、前記挙動情報が、前記モバイルデバイス内で進行中である、前記複数のソフトウェアまたはハードウェア構成要素の挙動、活動、動作、またはイベントに関する情報を含む、ステップと、
前記収集された挙動情報を用いて、一連の数字を介して前記監視された活動を記述する挙動ベクトルを生成するステップと、
複数のテスト条件を含む分類器モデルを前記生成された挙動ベクトルに適用して、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成するステップと、
前記アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、前記ソフトウェアアプリケーションまたはプロセスの前記実行状態を決定するステップと
を含む方法。
【請求項２】
前記決定された実行状態に基づいて、電力節約方式を選択するステップと、
前記選択された電力節約方式を実施するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記分類器モデルを前記挙動ベクトルに適用することによって、前記ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期するステップと、
スケジューラが、前記決定された将来の実行状態に一致するアクションを実行することを可能にするように、前記決定された将来の実行状態を前記スケジューラに知らせるステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を決定するステップと、
前記決定されたオペレーティングシステム実行状態が、前記決定された実行状態と同じであるか否かを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記オペレーティングシステム実行状態が前記決定された実行状態と同じではないと決定することに応答して、前記ソフトウェアアプリケーションを良性ではないとして分類するステップをさらに含む、請求項4に記載の方法。
【請求項６】
前記決定された実行状態に基づいて、挙動分類器モデルを選択するステップと、
前記選択された挙動分類器モデルを使用して、前記ソフトウェアアプリケーションが良性ではないか否かを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項７】
前記決定された実行状態に基づいて、前記挙動分類器モデルを選択するステップが、アプリケーション固有の分類器モデルを選択するステップを含む、請求項6に記載の方法。
【請求項８】
前記決定された実行状態に基づいて、前記挙動分類器モデルを選択するステップが、
前記ソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を特定するステップと、
前記特定された特徴を含むように、前記挙動分類器モデルを選択するステップと
を含む、請求項6に記載の方法。
【請求項９】
前記ソフトウェアアプリケーションまたはプロセスの前記実行状態が前記活動に関連があるか否かを決定するステップと、
前記実行状態が前記活動に関連があると決定することに応答して、その間に前記活動が監視された前記ソフトウェアアプリケーションまたはプロセスの前記実行状態を特定する影の特徴値を生成するステップと、
前記活動を、前記実行状態を特定する前記影の特徴値に関連付ける、第2の挙動ベクトルを生成するステップと、
前記第2の挙動ベクトルを使用して、前記活動が良性ではないか否かを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項１０】
コンピューティングデバイスであって、
動作を実行するようにプロセッサ実行可能命令によって構成されたプロセッサを備え、
前記動作が、
前記コンピューティングデバイスの複数のソフトウェアまたはハードウェア構成要素において、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集することであって、前記挙動情報が、前記コンピューティングデバイス内で進行中である、前記複数のソフトウェアまたはハードウェア構成要素の挙動、活動、動作、またはイベントに関する情報を含む、こと、
前記収集された挙動情報を用いて、一連の数字を介して前記監視された活動を記述する挙動ベクトルを生成すること、
複数のテスト条件を含む分類器モデルを前記生成された挙動ベクトルに適用して、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成すること、ならびに
前記アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、前記ソフトウェアアプリケーションまたはプロセスの実行状態を決定すること
を含む、コンピューティングデバイス。
【請求項１１】
前記プロセッサが、
前記決定された実行状態に基づいて、電力節約方式を選択すること、および
前記選択された電力節約方式を実施すること
をさらに含む動作を実行するようにプロセッサ実行可能命令によって構成される、請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記プロセッサが、
前記分類器モデルを前記挙動ベクトルに適用することによって、前記ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期すること、および
スケジューラが、前記決定された将来の実行状態に一致するアクションを実行することを可能にするように、前記決定された将来の実行状態を前記スケジューラに知らせることをさらに含む動作を実行するようにプロセッサ実行可能命令によって構成される、請求項10に記載のコンピューティングデバイス。
【請求項１３】
前記プロセッサが、
前記ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を決定すること、および
前記決定されたオペレーティングシステム実行状態が、前記決定された実行状態と同じであるか否かを決定すること
をさらに含む動作を実行するようにプロセッサ実行可能命令によって構成される、請求項10に記載のコンピューティングデバイス。
【請求項１４】
前記プロセッサが、前記オペレーティングシステム実行状態が前記決定された実行状態と同じではないと決定することに応答して、前記ソフトウェアアプリケーションを良性ではないとして分類することをさらに含む動作を実行するようにプロセッサ実行可能命令によって構成される、請求項13に記載のコンピューティングデバイス。
【請求項１５】
前記プロセッサが、
前記決定された実行状態に基づいて、挙動分類器モデルを選択すること、および
前記選択された挙動分類器モデルを使用して、前記ソフトウェアアプリケーションが良性ではないか否かを決定すること
をさらに含む動作を実行するようにプロセッサ実行可能命令によって構成される、請求項10に記載のコンピューティングデバイス。
【請求項１６】
前記決定された実行状態に基づいて、前記挙動分類器モデルを選択することが、アプリケーション固有の分類器モデルを選択することを含むように、前記プロセッサが動作を実行するようにプロセッサ実行可能命令によって構成される、請求項15に記載のコンピューティングデバイス。
【請求項１７】
前記決定された実行状態に基づいて、前記挙動分類器モデルを選択することが、
前記ソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を特定すること、および
前記特定された特徴を含むように、前記挙動分類器モデルを選択すること
を含むように、前記プロセッサが動作を実行するようにプロセッサ実行可能命令によって構成される、請求項15に記載のコンピューティングデバイス。
【請求項１８】
前記プロセッサが、
前記ソフトウェアアプリケーションまたはプロセスの前記実行状態が前記活動に関連があるか否かを決定すること、
前記実行状態が前記活動に関連があると決定することに応答して、その間に前記活動が監視された前記ソフトウェアアプリケーションまたはプロセスの前記実行状態を特定する影の特徴値を生成すること、
前記活動を、前記実行状態を特定する前記影の特徴値に関連付ける、第2の挙動ベクトルを生成すること、および
前記第2の挙動ベクトルを使用して、前記活動が良性ではないか否かを決定することをさらに含む動作を実行するようにプロセッサ実行可能命令によって構成される、請求項10に記載のコンピューティングデバイス。
【請求項１９】
プロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記プロセッサ実行可能ソフトウェア命令が、モバイルデバイスのプロセッサに、
前記モバイルデバイスの複数のソフトウェアまたはハードウェア構成要素において、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集することであって、前記挙動情報が、前記モバイルデバイス内で進行中である、前記複数のソフトウェアまたはハードウェア構成要素の挙動、活動、動作、またはイベントに関する情報を含む、こと、
前記収集された挙動情報を用いて、一連の数字を介して前記監視された活動を記述する挙動ベクトルを生成すること、
複数のテスト条件を含む分類器モデルを前記生成された挙動ベクトルに適用して、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成すること、ならびに
前記アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、前記ソフトウェアアプリケーションまたはプロセスの実行状態を決定すること
を含む動作を実行させるように構成される、非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、受信機デバイスのモバイルデバイスのプロセッサに、
前記決定された実行状態に基づいて、電力節約方式を選択すること、および
前記選択された電力節約方式を実施すること
をさらに含む動作を実行させるように構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２１】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、モバイルデバイスのプロセッサに、
前記分類器モデルを前記挙動ベクトルに適用することによって、前記ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期すること、および
スケジューラが、前記決定された将来の実行状態に一致するアクションを実行することを可能にするように、前記決定された将来の実行状態を前記スケジューラに知らせることを含む動作を実行させるように構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２２】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、モバイルデバイスのプロセッサに、
前記ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を決定すること、および
前記決定されたオペレーティングシステム実行状態が、前記決定された実行状態と同じであるか否かを決定すること
を含む動作を実行させるように構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、モバイルデバイスのプロセッサに、
前記オペレーティングシステム実行状態が前記決定された実行状態と同じではないと決定することに応答して、前記ソフトウェアアプリケーションを良性ではないとして分類すること
を含む動作を実行させるように構成される、請求項22に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、モバイルデバイスのプロセッサに、
前記決定された実行状態に基づいて、挙動分類器モデルを選択すること、および
前記選択された挙動分類器モデルを使用して、前記ソフトウェアアプリケーションが良性ではないか否かを決定すること
を含む動作を実行させるように構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
前記決定された実行状態に基づいて、前記挙動分類器モデルを選択することが、アプリケーション固有の分類器モデルを選択することを含むように、モバイルデバイスのプロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記決定された実行状態に基づいて、前記挙動分類器モデルを選択することが、
前記ソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を特定すること、および
前記特定された特徴を含むように、前記挙動分類器モデルを選択すること
を含むように、モバイルデバイスのプロセッサに動作を実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記記憶されたプロセッサ実行可能ソフトウェア命令が、モバイルデバイスのプロセッサに、
前記ソフトウェアアプリケーションまたはプロセスの前記実行状態が前記活動に関連があるか否かを決定すること、
前記実行状態が前記活動に関連があると決定することに応答して、その間に前記活動が監視された前記ソフトウェアアプリケーションまたはプロセスの前記実行状態を特定する影の特徴値を生成すること、
前記活動を、前記実行状態を特定する前記影の特徴値に関連付ける、第2の挙動ベクトルを生成すること、および
前記第2の挙動ベクトルを使用して、前記活動が良性ではないか否かを決定することを含む動作を実行させるように構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
モバイルコンピューティングデバイスの複数のソフトウェアまたはハードウェア構成要素において、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集するための手段であって、前記挙動情報が、前記モバイルコンピューティングデバイス内で進行中である、前記複数のソフトウェアまたはハードウェア構成要素の挙動、活動、動作、またはイベントに関する情報を含む、手段と、
前記収集された挙動情報を用いて、一連の数字を介して前記監視された活動を記述する挙動ベクトルを生成するための手段と、
複数のテスト条件を含む分類器モデルを前記生成された挙動ベクトルに適用して、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成するための手段と、
前記アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、前記ソフトウェアアプリケーションまたはプロセスの実行状態を決定するための手段と
を備えるモバイルコンピューティングデバイス。
【請求項２９】
前記決定された実行状態に基づいて、電力節約方式を選択するための手段と、
前記選択された電力節約方式を実施するための手段と
をさらに備える、請求項28に記載のモバイルコンピューティングデバイス。
【請求項３０】
前記分類器モデルを前記挙動ベクトルに適用することによって、前記ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期するための手段と、
スケジューラが、前記決定された将来の実行状態に一致するアクションを実行することを可能にするように、前記決定された将来の実行状態を前記スケジューラに知らせるための手段と
をさらに備える、請求項28に記載のモバイルコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
モバイル技術およびワイヤレス技術は、過去数年の間に爆発的な発展をとげてきた。この発展は、より優れた通信、ハードウェア、およびより信頼できるプロトコルによって促進されている。ワイヤレスサービスプロバイダは現在、向上し続ける多数の特徴およびサービスを自らの顧客に提供し、情報、リソースおよび通信に対するかつてないレベルのアクセスをユーザに提供することができる。これらの強化と歩調を合わせるために、モバイル電子デバイス(たとえば、セルラーフォン、時計、ヘッドフォン、遠隔制御装置など)は、今までよりも複雑になり、今や一般的に、複数のプロセッサ、システムオンチップ(SoC)、およびモバイルデバイスユーザが自らのモバイルデバイス上で複雑で電力集約的なソフトウェアアプリケーション(たとえば、ビデオストリーミング、ビデオ処理など)を実行することを可能にする他のリソースを含む。複雑さおよび電力消費量のこの増加に伴い、モバイルデバイスのリソースおよび能力をよりよく利用する新しい改善された処理ソリューションが消費者にとって有益となる。
【発明の概要】
【課題を解決するための手段】
【０００２】
様々な態様は、モバイルデバイスのプロセッサにおいて、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集するステップと、収集された挙動情報に基づいて、挙動ベクトルを生成するステップと、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの実行状態を決定するステップとによって、モバイルデバイスにおいてソフトウェアアプリケーションの実行状態を決定する方法を含む。一態様では、この方法は、決定された実行状態に基づいて、電力節約方式を選択するステップと、選択された電力節約方式を実施するステップとを含み得る。さらなる態様では、この方法は、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期するステップと、スケジューラが、決定された将来の実行状態に一致するアクションを実行することを可能にするように、決定された将来の実行状態をスケジューラに知らせるステップとを含み得る。
【０００３】
さらなる態様では、この方法は、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を決定するステップと、決定されたオペレーティングシステム実行状態が、決定された実行状態と同じであるか否かを決定するステップとを含み得る。さらなる態様では、この方法は、オペレーティングシステム実行状態が決定された実行状態と同じではないと決定することに応答して、ソフトウェアアプリケーションを良性ではないとして分類するステップを含み得る。さらなる態様では、この方法は、決定された実行状態に基づいて、挙動分類器モデルを選択するステップと、選択された挙動分類器モデルを使用して、ソフトウェアアプリケーションが良性ではないか否かを決定するステップとを含み得る。さらなる態様では、決定された実行状態に基づいて、挙動分類器モデルを選択するステップは、アプリケーション固有の分類器モデルを選択するステップを含み得る。さらなる態様では、決定された実行状態に基づいて、挙動分類器モデルを選択するステップは、ソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を特定するステップと、特定された特徴を含むように、挙動分類器モデルを選択するステップとを含み得る。
【０００４】
さらなる態様では、この方法は、ソフトウェアアプリケーションまたはプロセスの実行状態が活動に関連があるか否かを決定するステップと、実行状態が活動に関連があると決定することに応答して、その間に活動が監視されたソフトウェアアプリケーションまたはプロセスの実行状態を特定する影の特徴値を生成するステップと、活動を、実行状態を特定する影の特徴値に関連付ける、第2の挙動ベクトルを生成するステップと、第2の挙動ベクトルを使用して、活動が良性ではないか否かを決定するステップとを含み得る。
【０００５】
さらなる態様は、動作を実行するようにプロセッサ実行可能命令によって構成されたプロセッサを含み得るコンピューティングデバイスを含み、動作は、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集すること、収集された挙動情報に基づいて、挙動ベクトルを生成すること、および、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの実行状態を決定することを含む。一態様では、プロセッサは、決定された実行状態に基づいて、電力節約方式を選択すること、および、選択された電力節約方式を実施することを含む動作を実行するようにプロセッサ実行可能命令によって構成され得る。
【０００６】
さらなる態様では、プロセッサは、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期すること、および、スケジューラが、決定された将来の実行状態に一致するアクションを実行することを可能にするように、決定された将来の実行状態をスケジューラに知らせることを含む動作を実行するようにプロセッサ実行可能命令によって構成され得る。さらなる態様では、プロセッサは、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を決定すること、および、決定されたオペレーティングシステム実行状態が、決定された実行状態と同じであるか否かを決定することを含む動作を実行するようにプロセッサ実行可能命令によって構成され得る。さらなる態様では、プロセッサは、オペレーティングシステム実行状態が決定された実行状態と同じではないと決定することに応答して、ソフトウェアアプリケーションを良性ではないとして分類することを含む動作を実行するようにプロセッサ実行可能命令によって構成され得る。
【０００７】
さらなる態様では、プロセッサは、決定された実行状態に基づいて、挙動分類器モデルを選択すること、および、選択された挙動分類器モデルを使用して、ソフトウェアアプリケーションが良性ではないか否かを決定することを含む動作を実行するようにプロセッサ実行可能命令によって構成され得る。さらなる態様では、決定された実行状態に基づいて、挙動分類器モデルを選択することが、アプリケーション固有の分類器モデルを選択することを含み得るように、プロセッサが動作を実行するようにプロセッサ実行可能命令によって構成され得る。さらなる態様では、決定された実行状態に基づいて、挙動分類器モデルを選択することが、ソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を特定すること、および、特定された特徴を含むように、挙動分類器モデルを選択することを含み得るように、プロセッサが動作を実行するようにプロセッサ実行可能命令によって構成され得る。
【０００８】
さらなる態様では、プロセッサは、ソフトウェアアプリケーションまたはプロセスの実行状態が活動に関連があるか否かを決定すること、実行状態が活動に関連があると決定することに応答して、その間に活動が監視されたソフトウェアアプリケーションまたはプロセスの実行状態を特定する影の特徴値を生成すること、活動を、実行状態を特定する影の特徴値に関連付ける、第2の挙動ベクトルを生成すること、および、第2の挙動ベクトルを使用して、活動が良性ではないか否かを決定することを含む動作を実行するようにプロセッサ実行可能命令によって構成され得る。
【０００９】
さらなる態様は、プロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体を含み、プロセッサ実行可能ソフトウェア命令は、モバイルデバイスプロセッサに、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集すること、収集された挙動情報に基づいて、挙動ベクトルを生成すること、および、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの実行状態を決定することを含む動作を実行させるように構成される。一態様では、記憶されたプロセッサ実行可能命令は、受信機デバイスのプロセッサに、決定された実行状態に基づいて、電力節約方式を選択すること、および、選択された電力節約方式を実施することを含む動作を実行させるように構成され得る。
【００１０】
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期すること、および、スケジューラが、決定された将来の実行状態に一致するアクションを実行することを可能にするように、決定された将来の実行状態をスケジューラに知らせることを含む動作を実行させるように構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を決定すること、および、決定されたオペレーティングシステム実行状態が、決定された実行状態と同じであるか否かを決定することを含む動作を実行させるように構成され得る。
【００１１】
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、オペレーティングシステム実行状態が決定された実行状態と同じではないと決定することに応答して、ソフトウェアアプリケーションを良性ではないとして分類することを含む動作を実行させるように構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、決定された実行状態に基づいて、挙動分類器モデルを選択すること、および、選択された挙動分類器モデルを使用して、ソフトウェアアプリケーションが良性ではないか否かを決定することを含む動作を実行させるように構成され得る。一態様では、決定された実行状態に基づいて、挙動分類器モデルを選択することが、アプリケーション固有の分類器モデルを選択することを含み得るように、プロセッサに動作を実行させるように、記憶されたプロセッサ実行可能ソフトウェア命令が構成され得る。
【００１２】
一態様では、決定された実行状態に基づいて、挙動分類器モデルを選択することが、ソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を特定すること、および、特定された特徴を含むように、挙動分類器モデルを選択することを含み得るように、プロセッサに動作を実行させるように、記憶されたプロセッサ実行可能ソフトウェア命令が構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、プロセッサに、ソフトウェアアプリケーションまたはプロセスの実行状態が活動に関連があるか否かを決定すること、実行状態が活動に関連があると決定することに応答して、その間に活動が監視されたソフトウェアアプリケーションまたはプロセスの実行状態を特定する影の特徴値を生成すること、活動を、実行状態を特定する影の特徴値に関連付ける、第2の挙動ベクトルを生成すること、および、第2の挙動ベクトルを使用して、活動が良性ではないか否かを決定することを含む動作を実行させるように構成され得る。
【００１３】
さらなる態様は、ソフトウェアアプリケーションまたはプロセスの活動を監視して、挙動情報を収集するための手段と、収集された挙動情報に基づいて、挙動ベクトルを生成するための手段と、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの実行状態を決定するための手段とを有する、モバイルコンピューティングデバイスを含む。一態様では、モバイルコンピューティングデバイスは、決定された実行状態に基づいて、電力節約方式を選択するための手段と、選択された電力節約方式を実施するための手段とを含み得る。一態様では、モバイルコンピューティングデバイスは、分類器モデルを挙動ベクトルに適用することによって、ソフトウェアアプリケーションまたはプロセスの将来の実行状態を予期するための手段と、スケジューラが、決定された将来の実行状態に一致するアクションを実行することを可能にするように、決定された将来の実行状態をスケジューラに知らせるための手段とを含み得る。さらなる態様では、モバイルコンピューティングデバイスは、上記で説明した方法動作のいずれかに対応する機能を実行するための手段を含み得る。
【００１４】
本明細書に組み込まれ、本明細書の一部を構成している添付の図面は、本発明の例示的な態様を示すものであり、上で与えられた一般的な説明および下で与えられる詳細な説明とともに本発明の特徴について説明するために役立つ。
【図面の簡単な説明】
【００１５】
【図１】様々な態様を実装するために好適な、例示的なシステムオンチップの構成要素ブロック図である。
【図２Ａ】一態様による、機械学習技法を使用して、ソフトウェアアプリケーションの実際の実行状態を決定するように構成された、例示的なモバイルデバイス内の論理構成要素および情報フローを示すブロック図である。
【図２Ｂ】様々な態様による、ソフトウェアアプリケーションの実際の実行状態に基づいて、動的および適応的挙動観測および分析動作を実行するように構成された、例示的なモバイルデバイス内の論理構成要素および情報フローを示すブロック図である。
【図３Ａ】ソフトウェアアプリケーションの実際の実行状態を使用して、ソフトウェアアプリケーションが悪性であるか良性であるかを決定する、一態様の方法を示すプロセスフロー図である。
【図３Ｂ】ソフトウェアアプリケーションの実際の実行状態を使用して、電力節約方式を実施する、一態様の方法を示すプロセスフロー図である。
【図３Ｃ】ソフトウェアアプリケーションの実際の実行状態を使用して、分類器モデルを選択し、総合的な挙動監視および分析システムの精度と性能とを改善する、一態様の方法を示すプロセスフロー図である。
【図３Ｄ】実際の実行状態を使用して、総合的な挙動監視および分析システムの精度と性能とを改善し、有効な電力節約方式を実施する、別の態様の方法を示すプロセスフロー図である。
【図３Ｅ】実際の実行状態を使用して、将来の実行状態を決定し、モバイルデバイスの性能を改善する、一態様の方法を示すプロセスフロー図である。
【図４】モバイルデバイスの過剰な量の処理リソース、メモリリソース、またはバッテリーリソースを消費することなく、モバイルデバイス挙動が正常な動作パターンと一致しないか否かを決定することにおいて使用するために好適である、挙動ベクトルをインテリジェントに生成する、一態様の方法を示すプロセスフロー図である。
【図５】様々な態様による、観測器モジュールおよび観測器デーモンを実装するコンピューティングシステム内の論理構成要素および情報フローを示す構成要素ブロック図である。
【図６】モバイルデバイス上で適応的観測を実行するための一態様の方法を示すプロセスフロー図である。
【図７】様々な態様とともに使用するために好適な、例示的なモバイルデバイスの構成要素ブロック図である。
【図８】様々な態様とともに使用するために好適な、例示的なサーバコンピュータの構成要素ブロック図である。
【発明を実施するための形態】
【００１６】
添付の図面を参照して様々な態様について詳細に説明する。可能な場合はどこでも、同じ参照番号は、同じまたは同様の部分を指すように図面全体を通して使用される。具体的な例および実装形態への言及は、説明を目的とし、本発明の範囲または本特許請求の範囲を限定するものではない。
【００１７】
概して、様々な態様は、機械学習技法を使用して、オペレーティングシステムまたはソフトウェアアプリケーションから取得され得る実行状態情報とは無関係の、モバイルデバイスのソフトウェアアプリケーションの実行状態を決定する方法と、その方法を実施するように構成されたモバイルデバイスとを含む。一態様では、モバイルデバイスのプロセッサは、このアプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、デバイスの機能または信頼性を改変しない有効な電力節約方式を実施するように構成され得る。さらなる態様では、モバイルデバイスのプロセッサは、このアプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、総合的な挙動監視および分析システムの精度と性能とを改善すること、ならびに、モバイルデバイスが、モバイルデバイス挙動が良性であるか、疑わしいか、悪性であるか、モバイルデバイスの性能および/または電力消費特性における劣化に寄与しているかをよりよく予測できるようにすることを行うように構成され得る。
【００１８】
一般に、従来のソリューションは、コンピューティングデバイスがソフトウェアアプリケーションを、オペレーティングシステム(たとえば、Android、Windows 8など)によってあらかじめ定義される実行状態(たとえば、バックグラウンド、空、フォアグラウンド、知覚可能、サービス、および可視)にあるものとして分類することを必要とする。しかしながら、これらの実行状態は、ソフトウェアアプリケーションの実際の動作状態を正確に記述しないことがある。加えて、このオペレーティングシステム実行状態情報(すなわち、オペレーティングシステムによって与えられる状態情報)は、しばしば、有効な電力節約方式を実施するため、または複雑なモバイルデバイス挙動を正確に評価するために使用され得る、十分なきめの細かい情報または詳細を含んでいない。
【００１９】
従来のソリューションは、コンピューティングデバイスが、オペレーティングシステムまたはソフトウェアアプリケーションによって与えられる情報に依拠することを必要とするので、これらのソリューションは、ソフトウェアアプリケーションが悪性であるか、または、コンピューティングデバイスがマルウェアによって感染させられているか、もしくは乗っ取られている場合、有効ではないことがある。たとえば、システムソフトウェアとオペレーティングシステムとの間の通信を傍受し、改変する、悪性のアプリケーションによって、コンピューティングデバイスが感染させられる場合、システムソフトウェアは、不正確な状態情報を受信することがあり、したがって、アプリケーションの実際の実行状態を使用して、アプリケーションが悪性であるか否かを正確に決定することができないことがある。
【００２０】
従来のソリューションのこれらおよび他の制限を克服するために、様々な態様は、モバイルデバイスが、ソフトウェアアプリケーションまたはオペレーティングシステムによって利用可能にされる実行状態情報とは無関係の、ソフトウェアアプリケーションの実行状態を決定することを可能にする方法と、そのようにするモジュールまたは構成要素を装備するモバイルデバイスとを含む。
【００２１】
一態様では、モバイルデバイスは、モバイルデバイスの様々なソフトウェア構成要素およびハードウェア構成要素から、実行、イベント、および/または挙動情報を受信するように構成される、状態推定および予測モジュール(ならびに/またはアプリケーション実行状態決定モジュール)を装備し得る。そのような情報は、動作状態情報、イベント情報(たとえば、表面タッチ、クリック、ボタン作動など)、活動/不活動を示すセンサーからの情報、CPU/GPU使用レベル、バッテリー消費レベル、実施された機能を特定する情報、リソース状態情報、メモリトランザクション情報、通信トランザクション情報、ならびに、ソフトウェアアプリケーションの実行に関するモバイルデバイス内で進行中の様々な挙動、活動、動作、およびイベントに関する他のタイプの情報のうちのいずれかまたはすべてを含み得る。
【００２２】
状態推定および予測モジュール(またはアプリケーション実行状態決定モジュール)は、それがソフトウェア構成要素およびハードウェア構成要素から受信する情報に、決定ルールおよび機械学習アルゴリズムを適用して、オペレーティングシステムまたはアプリケーションから取得され得る実行状態情報とは無関係である、ソフトウェアアプリケーションのための実行状態を推論、推定、予測、または決定することができる。すなわち、状態推定および予測モジュールは、オペレーティングシステムまたはソフトウェアアプリケーションによって与えられる状態情報よりも正確であり、詳細であり、きめの細かい、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成することができる。たとえば、状態推定および予測モジュールは、リソースがソフトウェアアプリケーションによって使用される持続時間、または、そのリソースの使用がそのソフトウェアアプリケーションによって要求される頻度に関する、詳細な統計量を含むように、実行状態情報を生成することができる。次いで、モバイルデバイスは、この情報を使用して、オペレーティングシステムによって「フォアグラウンド」状態にあるとして類別されるソフトウェアアプリケーションが実際には「アイドル」実行状態であるか否かなど、オペレーティングシステム実行状態情報が正確であるか否かを決定することができる。
【００２３】
一態様では、モバイルデバイスの電力管理モジュールは、状態推定および予測モジュールによって与えられた実行状態情報を使用して、その電力消費および性能特性のバランスをとるモバイルデバイス内の有効な電力節約方式を実施することができる。別の態様では、モバイルデバイスの挙動監視および分析システムは、この実行状態情報を使用して、モバイルデバイス挙動が良性であるか悪性であるかをよりよく予測することができる。たとえば、挙動監視および分析システムは、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、ソフトウェアアプリケーションの実行に関連付けられた複雑なモバイルデバイス挙動を分析することに最も関連のある特徴または条件を評価するアプリケーション固有の簡潔な分類器モデルを特定および選択することができる。
【００２４】
「モバイルコンピューティングデバイス」および「モバイルデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルのマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および、性能が重要であるメモリとプログラマブルプロセッサとを含み電力節減の方法が有益であるようなバッテリー電源で動作する同様のパーソナル電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では互換的に使用される。様々な態様は、限られたリソースを有しバッテリー電力で動作する、スマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの態様は一般に、プロセッサを含みアプリケーションプログラムを実行する、任意の電子デバイスにおいて有用である。
【００２５】
「性能劣化」という用語は、本明細書では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリー寿命、個人データの喪失、悪性の経済活動(たとえば、無許可のプレミアムショートメッセージサービスメッセージを送ることなど)、サービス拒否(DoS)、乗っ取ることに関する動作など、多種多様な望ましくないモバイルデバイスの動作および特性を指すために使用される。
【００２６】
上述のように、観測された挙動に基づいてアプリケーションの状態を決定することは、モバイルデバイス挙動を監視して、性能劣化問題およびマルウェアを特定するシステムおよび方法にとって、有用であり得る。一般に、モバイルデバイスの性能および電力効率は、経時的に劣化する。近年、アンチウイルス会社(たとえば、McAfee、Symantecなど)は、この劣化を遅くすることを狙いとするモバイル用アンチウイルス、ファイアウォール、および暗号化製品のマーケティングを開始した。しかしながら、これらのソリューションの多くは、モバイルデバイス上の計算集約的なスキャニングエンジンの周期的な実行に依拠しており、そのことが、モバイルデバイスの処理リソースおよびバッテリーリソースの多くを消費し、モバイルデバイスを遅くさせるか、もしくは長い時間期間の間に使えなくさせ、ならびに/または場合によってはユーザエクスペリエンスを劣化させる場合がある。加えて、これらのソリューションは、通常、知られているウイルスおよびマルウェアの検出に限定され、(たとえば、性能劣化がウイルスまたはマルウェアによって引き起こされないときに)経時的なモバイルデバイスの劣化に寄与するようにしばしば結びつく、複数の複雑な要因および/または相互作用に対処しない。これらおよび他の理由で、既存のアンチウイルス、ファイアウォール、および暗号化製品は、経時的なモバイルデバイスの劣化に寄与する場合がある多くの要因を特定するため、モバイルデバイスの劣化を防止するため、または経時的に劣化したモバイルデバイスをその初期状態に効率的に回復させるための十分なソリューションを提供しない。
【００２７】
モバイルデバイスは、比較的限定された処理リソース、メモリリソース、およびエネルギーリソースを有する、リソース制約のあるシステムである。現代のモバイルデバイスはまた、複雑なシステムでもあり、不十分に設計されたソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、バックグラウンドプロセスなどを含む、モバイルデバイスの性能および電力利用レベルの経時的な劣化に寄与し得る多種多様な要因がある。これらの要因の数、多様性、および複雑さに起因して、現代のモバイルデバイスの複雑でありながらリソース制約のあるシステムの性能および/または電力利用レベルを劣化させ得る様々なプロセス、構成要素、挙動、または要因(またはそれらの組合せ)のすべてを評価することは、しばしば実現可能ではない。したがって、ユーザ、オペレーティングシステム、および/またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)が、そのような問題の根源を正確かつ効率的に特定することは困難である。したがって、モバイルデバイスのユーザは、現在、モバイルデバイスの性能および電力利用レベルにおける経時的な劣化を防止するため、または経時的に劣化したモバイルデバイスをその元の性能および電力利用レベルに回復させるための改善措置をほとんど有していない。
【００２８】
アプリケーションの状態を決定するための様々な態様は、モバイルデバイスの性能および/または電力利用レベルをしばしば経時的に劣化させる、条件、要因、および/またはモバイルデバイス挙動をインテリジェントおよび効率的に特定、防止、かつ/または修正するための、総合的な挙動監視および分析システムによって使用され得る。そのような挙動監視および分析システムでは、モバイルデバイスの観測器プロセス、デーモン、モジュール、またはサブシステム(本明細書では総称して「モジュール」と呼ぶ)が、モバイルデバイスシステムの様々なレベルでの様々なアプリケーションプログラミングインターフェース(API)、レジスタ、カウンタ、または他の構成要素(本明細書では総称して「計装化構成要素」)を計装するかまたは協調させ得る。観測器モジュールは、計装化構成要素から挙動情報を収集することによって、モバイルデバイス挙動を連続的に(またはほぼ連続的に)監視することができる。モバイルデバイスはまた、分析器モジュールを含んでよく、観測器モジュールは、収集された挙動情報を(たとえば、メモリ書込み動作、関数呼出しなどを介して)分析器モジュールに通信することができる。分析器モジュールは、リアルタイムの挙動分析動作を実行するように構成され得、リアルタイムの挙動分析動作は、データ、アルゴリズム、分類器またはモデル(本明細書では総称して「分類器モデル」と呼ぶ)を実施、実行、かつ/または収集された挙動情報に適用して、モバイルデバイス挙動が良性であるか良性ではない(たとえば、悪性もしくは性能を劣化させる)かを決定することを含み得る。次いで、モバイルデバイスは、この分析の結果を使用して、特定された問題を解消し、回復させ、隔離し、または別様に修復もしくはそれに対応することができる。
【００２９】
一般に、各ソフトウェアアプリケーションは、モバイルデバイス上でいくつかのタスクまたは活動を実行する。いくつかのタスク/活動は、オペレーティングシステムまたはソフトウェアアプリケーション(もしくは、プロセス、スレッドなど)が、それらのタスク/活動をサポートするか、またはそれらと互換性がある実行状態であることを、本質的に必要とする。たとえば、カメラの使用、録音するためのマイクロフォンのアクティブ化、ショートメッセージサービス(SMS)メッセージを送ること、および加速度計データの収集はすべて、モバイルデバイスとの何らかの形態のユーザ対話(たとえば、ユーザがカメラのシャッターリリースボタンを作動させること、テキストを打つこと、送信ボタンを押すことなど)を通常は必要とするタスク/活動である。したがって、これらの活動は一般に、「フォアグラウンド」実行状態において、またはモバイルデバイスとのユーザ対話をサポートする別の実行状態において実行されなければならない。
【００３０】
これらまたは他の同様のタスク/活動が、バックグラウンドにおけるような、モバイルデバイスとの高度なユーザ対話をサポートしない実行状態において実行されるとき、この動作条件は、その活動に関連付けられたモバイルデバイス挙動が悪性であること、またはさもなければ、追加のもしくはより綿密な精査、監視、もしくは分析に値することの、指標であり得る。すなわち、いくつかのタスク/活動がモバイルデバイスにおいて実行される特定の実行状態は、モバイルデバイス挙動が追加のまたはより綿密な精査、監視、および/または分析に値するか否かの指標であり得る。しかしながら、オペレーティングシステムおよびソフトウェアアプリケーションによって与えられる、汎用およびあらかじめ定義された実行状態情報は、しばしば正確ではなく、あるいは、有効な電力節約方式を実施するため、アプリケーションを評価するためにどの挙動モデル(もしくは分類器モデル)が使用されるべきであるかを決定するため、および/または、ソフトウェアアプリケーションに関連付けられた複雑なモバイルデバイス挙動を、悪性もしくは良性であるとして正確に分類することを行うために、使用され得る情報を含まない。
【００３１】
様々な態様は、モバイルデバイスの様々なソフトウェア/ハードウェア構成要素から情報を受信し、機械学習技法を受信された情報に適用して、そのアプリケーションの実際の実行状態を計算するように構成される、状態推定および予測モジュール(ならびに/またはアプリケーション実行状態決定モジュール)を装備したモバイルデバイスを含む。これらのソフトウェア/ハードウェア構成要素は、モバイルデバイス内のソフトウェアアプリケーションの実行によって実行されるか、またはそれに関する多種多様な活動およびタスクを監視するように、ならびにしたがって、通常はオペレーティングシステムまたはソフトウェアアプリケーションによって利用可能にされる、追加の、より詳細な、および/またはよりきめの細かい情報へのアクセスを有するように構成され得る。したがって、状態推定および予測モジュールは、ソフトウェアアプリケーションまたはオペレーティングシステムによって与えられる、またはそれから取得され得る状態情報よりも正確である、実行状態情報を生成することができる。
【００３２】
加えて、状態推定および予測モジュールは、アプリケーションまたはオペレーティングシステムによって与えられる状態情報とは異なる、実行状態情報を生成することができる。たとえば、状態推定および予測モジュールは、オペレーティングシステムによって「フォアグラウンド」実行状態にあるとして類別されるソフトウェアアプリケーションの実際の実行状態が、同様のアプリケーションによって使用されるリソースを利用中ではなく、同様のアプリケーションによって実行された動作に同情する処理またはメモリアクセス動作を実行中ではなく、過去10秒間にユーザ入力を受信していないと決定する。この場合、状態推定および予測モジュールは、ソフトウェアアプリケーションの実際の実行状態が「アイドル」であると決定する。
【００３３】
ソフトウェアアプリケーション(または、プロセス、スレッドなど)の実際の実行状態を決定することによって、様々な態様は、モバイルデバイスがより有効な電力節約方式を実施することを可能にする。たとえば、モバイルデバイスは、ソフトウェアアプリケーションの実際の実行状態を使用して、そのアプリケーションの実際の電力消費または処理要件を特定し、それらの要件を満たすために電源投入または電源切断されるべきである処理コアを決定することができる。モバイルデバイスはまた、そのバッテリー寿命を延ばす、待ち時間を低減する、または性能を改善するために、この情報を使用して、いくつかの処理コアがいつ電源投入または電源切断されるべきであるかを決定することもできる。
【００３４】
モバイルデバイスはまた、ソフトウェアアプリケーションの実際の実行状態を使用して、挙動モデルをよりよく選択し、その動作を、モバイルデバイスの最も重要な特徴を評価することに集中させ、ある挙動が良性であるか悪性であるかをよりよく予測することもできる。たとえば、観測器および/または分析器モジュールは、状態推定および予測モジュールから、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を受信し、その情報を使用して、それらの動作を、モバイルデバイスの最も関連のある特徴を評価することに集中させるように構成され得る。
【００３５】
様々な態様では、分析器モジュールは、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、特定のソフトウェアアプリケーションもしくは挙動を分析することに最も関連のある特徴に集中する分類器モデルを選択すること、ソフトウェアアプリケーションの意図(悪性対良性)をよりよく決定すること、ならびに/または、モバイルデバイス挙動が性能を劣化させるか良性であるかをよりよく決定することを行うように構成され得る。同様に、観測器モジュールは、この情報を使用して、監視することを必要とする特徴をよりよく特定すること、および/または、それにおいて特徴が監視されるべきである細分性を決定することを行うように構成され得る。
【００３６】
様々な態様では、観測器および/または分析器モジュールは、オペレーティングシステム実行状態情報とともに、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、その特定のソフトウェアアプリケーションが良性であるか良性ではない(たとえば、悪性または性能を劣化させる)かを決定するために最も関連のある特徴/エントリのみを含む/テストする集中的データモデルを含む、アプリケーション固有の簡潔な分類器モデルを選択するように構成され得る。
【００３７】
様々な態様は、挙動分析動作を実行して、アプリケーションまたはプロセスの状態(たとえば、フォアグラウンドで実行中である、特定の活動を実行中である、アイドルである、連絡先リストにアクセス中であるなど)を決定するように構成された構成要素を含み得る。
【００３８】
様々な態様はまた、挙動分析動作の結果と、推測/予測技法とを使用して、モバイルデバイスの将来の挙動、または、様々なアプリケーションもしくはプロセスの将来の状態もしくは活動を予期するように構成された構成要素を含み得る。モバイルデバイスは、この予期された将来の挙動/状態/活動情報を使用して、将来に使用される高い確率を有するリソースを特定し、将来の挙動/状態/活動の準備をするために様々なアクションまたは動作を実行することができる。たとえば、一態様では、モバイルデバイスは、予期された将来の状態に基づいて、そのデバイスの処理コア内で実行するためのプロセスもしくはタスクをスケジュールすること、および/または、決定された将来の実行状態に一致する他のアクションもしくは動作を実行することを行うように構成される、スケジューラ構成要素を含み得る。
【００３９】
たとえば、モバイルデバイスは、観測された活動/状態が連絡先リストの読取りを含むと決定し、この情報を使用して、将来の活動/状態が「SMSメッセージを送ること」または「音声通信リンクを確立すること」を含む可能性が高いと決定/予期することができる。次いで、モバイルデバイスは、これらの予期された将来の活動/状態をそのオペレーティングシステムスケジューラに知らせることができる。スケジューラは、この情報を使用して、この決定された将来の実行活動/状態に一致するアクションまたは動作を実行することができる。たとえば、スケジューラは、予期された将来の活動がプロセッサ集約的であるか、重要であるか、または高優先度を有すると決定することに応答して、ラン待ち行列から低優先度プロセスを除去することができる。
【００４０】
様々な態様は、単一のプロセッサおよび多重プロセッサのシステム、ならびにシステムオンチップ(SOC)を含む、いくつかの異なるモバイルデバイス内で実装され得る。図1は、様々な態様を実装するコンピューティングデバイス内で使用され得る、例示的なSOC100のアーキテクチャを示す。SOC100は、デジタル信号プロセッサ(DSP)101、モデムプロセッサ104、グラフィクスプロセッサ106、およびアプリケーションプロセッサ108など、いくつかの異種プロセッサを含み得る。SOC100はまた、異種プロセッサ101、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含み得る。各プロセッサ101、104、106、108、110は、1つまたは複数のコアを含んでよく、各プロセッサ/コアは、他のプロセッサ/コアとは独立に動作を実行することができる。たとえば、SOC100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行するプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 8)を実行するプロセッサとを含み得る。
【００４１】
SOC100はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化オーディオ信号の処理など、他の専門化された動作を実行するためのアナログ回路およびカスタム回路114を含み得る。SOC100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびに、コンピューティングデバイス上で実行しているプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース116をさらに含み得る。
【００４２】
システム構成要素/リソース116およびカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースする回路を含み得る。プロセッサ101、104、106、108は、再構成可能な論理ゲートのアレイを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、1つまたは複数のメモリ要素112、システム構成要素、およびリソース116、ならびにカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoCs)などの高度な相互接続によって提供され得る。
【００４３】
SOC100は、クロック118および電圧調整器120など、SOCの外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP101、モデムプロセッサ104、グラフィックプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
【００４４】
SOC100はまた、スピーカー、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)、マイクロフォンアレイ、物理条件(たとえば、ロケーション、方向、動き、方位、振動、圧力など)を監視するためのセンサー、カメラ、コンパス、GPS受信機、通信回路(たとえば、Bluetooth(登録商標)、WLAN、WiFiなど)、および現代の電子デバイスの他のよく知られている構成要素(たとえば、加速度計など)を含む、センサーからセンサーデータを収集するために好適なハードウェアおよび/またはソフトウェア構成要素を含み得る。
【００４５】
上記で説明したSOC100内に実装されることに加えて、様々な態様は、単一のプロセッサ、複数のプロセッサ、マルチコアプロセッサ、またはそれらの任意の組合せを含み得る、多種多様なコンピューティングシステム内に実装され得る。
【００４６】
図2Aは、機械学習技法を使用して、オペレーティングシステムまたはソフトウェアアプリケーションから取得され得る状態情報とは無関係の、モバイルデバイスのソフトウェアアプリケーションの実行状態を決定するように構成された、一態様のモバイルデバイス102内の例示的な論理構成要素および情報フローを示す。図2Aに示す例では、モバイルデバイス102は、アプリケーション観測器モジュール202と、アプリケーション挙動抽出器モジュール204と、アプリケーション実行状態決定モジュール206と、電力管理モジュール208と、挙動観測器モジュール222と、挙動分析器モジュール224とを含む。一態様では、アプリケーション実行状態決定モジュール206は、状態推定および予測モジュール(図示せず)を含み得る。
【００４７】
モジュール202〜224の各々は、ソフトウェア、ハードウェア、またはそれらの任意の組合せにおいて実装され得る。様々な態様では、モジュール202〜224は、オペレーティングシステムの部分内(たとえば、カーネル内、カーネル空間中、ユーザ空間中など)で、個別のプログラムもしくはアプリケーション内で、専用のハードウェアバッファもしくはプロセッサの中で、またはそれらの任意の組合せにおいて実装され得る。一態様では、モジュール202〜224のうちの1つまたは複数は、モバイルデバイス102の1つまたは複数のプロセッサ上で実行するソフトウェア命令として実装され得る。
【００４８】
アプリケーション観測器モジュール202は、モバイルデバイスの様々なソフトウェアおよびハードウェア構成要素を監視し、ソフトウェアアプリケーションの動作もしくはタスクの性能、またはモバイルデバイスの処理コア内のその実行に関連付けられる、監視された構成要素の通信、トランザクション、イベント、または動作に関係する情報を収集するように構成され得る。様々な態様では、アプリケーション観測器モジュール202は、図2Bにも図示し、以下でさらに詳細に説明する、挙動観測器モジュール222によって監視された特徴、挙動、または構成要素のいずれかまたはすべてを監視するように構成され得る。アプリケーション観測器モジュール202はまた、ソフトウェアアプリケーションの動作の結果としてのモバイルデバイスの構成および/または状態における変化について、モバイルデバイスを継続的に監視するようにも構成され得る。アプリケーション観測器モジュール202はまた、モバイルデバイスの性能または有効性に影響を及ぼし得る、構成および/または状態変化を監視し得る。アプリケーション観測器モジュール202は、収集された情報をメモリ内(たとえば、ログファイル内など)に記憶し、かつ/または、生成された観測結果をアプリケーション挙動抽出器モジュール204へ(たとえば、メモリ書込み、関数呼出しなどを介して)送ることができる。
【００４９】
アプリケーション挙動抽出器モジュール204は、アプリケーション観測器モジュール202によって収集された観測結果または情報に基づいて、1つまたは複数の挙動ベクトルを生成するように構成され得る。この情報は、動作状態情報、イベント情報(たとえば、表面タッチ、クリック、ボタン作動など)、活動/不活動を示すセンサーからの情報、CPU/GPU使用レベル、バッテリー消費レベル、実施された機能を特定する情報、リソース状態情報、メモリトランザクション情報、通信トランザクション情報、ならびに、モバイルデバイス内で進行中の様々な活動およびイベントに関する他のタイプの情報を含み得る。様々な態様では、アプリケーション挙動抽出器モジュール204は、ソフトウェアアプリケーションの挙動を抽出するために、挙動分析器モジュール224(以下でさらに詳細に説明する)によって実行され得る動作のいずれかまたはすべてを実行するように構成され得る。アプリケーション挙動抽出器モジュール204は、生成された挙動ベクトルおよび/または抽出された挙動情報を、将来の分析のためにアプリケーション実行状態決定モジュール206へ送ることができる。
【００５０】
アプリケーション実行状態決定モジュール206は、挙動ベクトルを受信し、挙動ベクトルを1つまたは複数の挙動モジュールと比較して、ソフトウェアアプリケーションの正確な実行状態を決定することができる。一態様では、これらの挙動モジュールは、特定のソフトウェアアプリケーションによって使用されるモバイルデバイス特徴を評価または特定するために好適な複数のテスト条件を含む、分類器モデルであり得る。特定のソフトウェアアプリケーションまたは特定のソフトウェアアプリケーションタイプによって使用される特徴は、モバイルデバイス動作、モバイルデバイスイベント、データネットワーク活動、システムリソース使用量、モバイルデバイス状態、プロセス間通信、ドライバ統計量、ハードウェア構成要素ステータス、ハードウェアカウンタ、ソフトウェアアプリケーションのアクションまたは動作、ソフトウェアダウンロード、デバイスまたは構成要素の設定への変更、アプリケーションレベルでの条件およびイベント、無線レベルでの条件およびイベント、センサーレベルでの条件およびイベント、ロケーションハードウェア、パーソナルエリアネットワークハードウェア、マイクロフォンハードウェア、スピーカーハードウェア、カメラハードウェア、スクリーンハードウェア、ユニバーサルシリアルバスハードウェア、同期ハードウェア、ロケーションハードウェアドライバ、パーソナルエリアネットワークハードウェアドライバ、近距離通信ハードウェアドライバ、マイクロフォンハードウェアドライバ、スピーカーハードウェアドライバ、カメラハードウェアドライバ、ジャイロスコープハードウェアドライバ、ブラウザサポートハードウェアドライバ、バッテリーハードウェアドライバ、ユニバーサルシリアルバスハードウェアドライバ、記憶ハードウェアドライバ、ユーザ対話ハードウェアドライバ、同期ハードウェアドライバ、無線インターフェースハードウェアドライバ、ならびにロケーションハードウェア、近距離通信(NFC)ハードウェア、スクリーンハードウェア、ブラウザサポートハードウェア、記憶ハードウェア、加速度計ハードウェア、同期ハードウェア、デュアルSIMハードウェア、無線インターフェースハードウェア、および任意の特定のハードウェアに関する特徴を、監視または評価することによって決定され得る。
【００５１】
一態様では、アプリケーション実行状態決定モジュール206は、分類器モデルを挙動ベクトルに適用して、オペレーティングシステムまたはソフトウェアアプリケーションから取得された状態情報とは無関係である、ソフトウェアアプリケーションの実行状態を推論、推定、予測、または決定するように構成され得る。すなわち、アプリケーション実行状態決定モジュール206は、オペレーティングシステムまたはソフトウェアアプリケーションによって与えられた状態情報よりも正確であり、詳細であり、きめの細かい、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成することができる。アプリケーション実行状態決定モジュール206はまた、リソースが使用される持続時間、またはリソースがアプリケーションによって要求される頻度に関する、詳細な統計量を含む、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を生成することもできる。様々な態様では、アプリケーション実行状態決定モジュール206は、ソフトウェアアプリケーションの実際の実行状態を決定するために、挙動分析器モジュール224によって実行され得る動作のいずれかまたはすべてを実行するように構成され得る。
【００５２】
アプリケーション実行状態決定モジュール206は、決定された実行状態情報を、挙動観測器モジュール222、挙動分析器モジュール224、および/または電力管理モジュール208へ送るように構成され得る。
【００５３】
電力管理モジュール208は、実行状態情報を使用して、様々なリソースおよび処理コアを低電力状態に配置する電力節約方式を選択または実施するように構成され得る。様々な態様では、電力管理モジュール208は、実行状態情報を使用して、ソフトウェアアプリケーションの電力消費または処理要件を特定し、これらの電力消費または処理要件に基づいて、電源投入または電源切断されるべきである処理コアを決定することができる。電力管理モジュール208はまた、モバイルコンピューティングデバイス上で電力消費および性能の最適なバランスを達成するために、いつ処理コアが電源投入されるべきであるかを決定することもできる。
【００５４】
挙動観測器モジュール222は、実行状態情報を使用して、その動作を、ソフトウェアアプリケーションまたはモバイルデバイスの挙動を分類することに最も関連のある特徴または条件を監視することに集中させるように構成され得る。同様に、挙動分析器モジュール224は、状態情報を使用して、その動作を、ソフトウェアアプリケーションまたはモバイルデバイスの挙動が悪性であるか良性であるかを決定することに最も関連のある特徴または条件を分析することに集中させるように構成され得る。たとえば、挙動観測器モジュール222および/または挙動分析器モジュール224は、オペレーティングシステム実行状態情報とともに、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態情報を使用して、ソフトウェアアプリケーションまたはモバイルデバイス挙動が悪性であるか良性であるかを決定するために、監視および/または分析されるべきであるモバイルデバイス特徴を特定する、アプリケーション固有の簡潔な分類器モデルを選択することができる。挙動観測器モジュール222および挙動分析器モジュール224については、以下でさらに図2Bに関してより詳細に説明する。
【００５５】
図2Bは、特定のモバイルデバイス挙動、ソフトウェアアプリケーション、またはプロセスが、悪性/性能劣化させるか、疑わしいか、良性であるかを決定するように構成された、一態様のモバイルデバイス102内の例示的な論理構成要素および情報フローを示す。図2Bに示す例では、モバイルデバイス102は、挙動観測器モジュール222と、挙動分析器モジュール224と、外部コンテキスト情報モジュール226と、アクチュエータモジュール228とを含む。
【００５６】
モジュール222〜228の各々は、ソフトウェア、ハードウェア、またはそれらの任意の組合せにおいて実装され得る。様々な態様では、モジュール222〜228は、オペレーティングシステムの部分内(たとえば、カーネル内、カーネル空間中、ユーザ空間中など)で、個別のプログラムもしくはアプリケーション内で、専用のハードウェアバッファもしくはプロセッサの中で、またはそれらの任意の組合せにおいて実装され得る。一態様では、モジュール222〜228のうちの1つまたは複数は、モバイルデバイス102の1つまたは複数のプロセッサ上で実行するソフトウェア命令として実装され得る。
【００５７】
挙動観測器モジュール222は、モバイルデバイスの様々なレベル/モジュールにおいてアプリケーションプログラミングインターフェース(API)を計装するかもしくは協調させ、計装されたAPIを介してある時間期間にわたって様々なレベル/モジュールにおいてモバイルデバイスの動作およびイベント(たとえば、システムイベント、状態変化など)を監視/観測し、観測された動作/イベントに関する情報を収集し、収集された情報をインテリジェントにフィルタ処理し、フィルタ処理された情報に基づいて1つもしくは複数の観測結果を生成し、生成された観測結果をメモリ内(たとえば、ログファイル内など)に記憶し、かつ/または生成された観測結果を挙動分析器モジュール224へ(たとえば、メモリ書込み、関数呼出しなどを介して)送るように構成され得る。
【００５８】
挙動観測器モジュール222は、アプリケーションフレームワークまたはランタイムライブラリにおけるライブラリアプリケーションプログラミングインターフェース(API)の呼出し、システムコールAPI、ファイルシステムおよびネットワーキングサブシステムの動作、デバイス(センサーデバイスを含む)の状態変化、ならびに他の同様のイベントに関する情報を収集することによって、モバイルデバイスの動作およびイベントを監視/観測することができる。挙動観測器モジュール222はまた、ファイルシステムの活動を監視することもでき、ファイルシステムの活動には、ファイル名、ファイルアクセスのカテゴリー(パーソナル情報または通常のデータファイル)を探索すること、ファイル(たとえば、type exe、zipなど)を作成または削除すること、ファイル読出し/書込み/シーク動作、ファイルパーミッションを変更することなどが含まれ得る。
【００５９】
挙動観測器モジュール222はまた、データネットワーク活動を監視することもでき、データネットワーク活動には、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などが含まれ得る。挙動観測器モジュール222は、電話ネットワーク活動を監視することができ、電話ネットワーク活動には、送出された、受信された、または傍受された通話またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することが含まれ得る。
【００６０】
挙動観測器モジュール222はまた、フォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含み得る、システムリソース使用を監視することもできる。挙動観測器モジュール222は、ディスプレイがオンであるかオフであるか、デバイスがロックされているかロックされていないか、バッテリーの残量、カメラの状態など、様々な要因を監視することを含み得る、モバイルデバイスの状態を監視することができる。挙動観測器モジュール222はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視することができる。
【００６１】
挙動観測器モジュール222はまた、カメラ、センサー、電子ディスプレイ、WiFi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、ならびに、モバイルコンピューティングデバイス上で実行するプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素を含み得る、1つまたは複数のハードウェア構成要素のドライバ統計量および/またはステータスを監視/観測することもできる。
【００６２】
挙動観測器モジュール222はまた、モバイルコンピューティングデバイスおよび/またはモバイルデバイスサブシステムの状態またはステータスを示す、1つまたは複数のハードウェアカウンタを監視/観測することもできる。ハードウェアカウンタは、モバイルコンピューティングデバイスにおいて発生するハードウェア関連の活動またはイベントのカウントまたは状態を記憶するように構成されるプロセッサ/コアの専用レジスタを含み得る。
【００６３】
挙動観測器モジュール222はまた、ソフトウェアアプリケーションのアクションまたは動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標)App Storeサーバ)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるモバイルデバイス情報、呼情報、テキストメッセージング情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージング情報(たとえば、ReceiveMMS)、ユーザアカウント情報、ロケーション情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth（登録商標）、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視/観測することもできる。
【００６４】
挙動観測器モジュール222は、ボイスメールを含む通信(VoiceMailComm)、デバイス識別子を含む通信(DeviceIDComm)、ユーザアカウント情報を含む通信(UserAccountComm)、カレンダー情報を含む通信(CalendarComm)、ロケーション情報を含む通信(LocationComm)、記録されたオーディオ情報を含む通信(RecordAudioComm)、加速度計情報を含む通信(AccelerometerComm)などを含む、モバイルデバイスの送信または通信を監視/観測することができる。
【００６５】
挙動観測器モジュール222は、コンパス情報、モバイルデバイス設定、バッテリー寿命、ジャイロスコープ情報、圧力センサー、磁気センサー、スクリーン活動などの使用、およびそれらに対する更新/変更を監視/観測することができる。挙動観測器モジュール222は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーション更新などを監視/観測することができる。挙動観測器モジュール222は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関する条件またはイベントを監視/観測することができる。挙動観測器モジュール222は、パスワードの入力などのような、ユーザ検証に関する条件またはイベントを監視/観測することができる。
【００６６】
挙動観測器モジュール222は、ある時間期間にわたって、モバイルデバイス挙動のいずれかを監視/観測するように構成され得る。これらの観測は、ある設定された時間期間に対するものであってよく、または、継続的な学習プロセスのように、累積的であってよい。したがって、モバイルデバイスが長く動作するほど、より多くの挙動の観測結果が収集され得る。
【００６７】
挙動観測器モジュール222はまた、アプリケーションレベル、無線レベル、およびセンサーレベルを含む、モバイルデバイスの複数のレベルにおいて、条件またはイベントを監視/観測することもできる。アプリケーションレベルの観測には、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力された注釈を観測すること、PassBook/Google Wallet/Paypalの使用に関するイベントを観測することなどが含まれ得る。アプリケーションレベルの観測には、仮想プライベートネットワーク(VPN)の使用に関するイベント、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算用のデータのオフローディング、ビデオストリーミング、ユーザ活動のないカメラの使用、ユーザ活動のないマイクロフォンの使用などに関するイベントを観測することも含まれ得る。
【００６８】
無線レベルの観測には、無線通信リンクを確立するかまたは情報を送信する前のモバイルデバイスとのユーザの対話、デュアル/マルチ加入者識別モジュール(SIM)カード、インターネット無線、モバイルフォンテザリング、計算のためのデータのオフロード、デバイス状態通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、モバイルデバイス同期などのうちのいずれかまたは複数の存在、実在、または量を決定することが含まれ得る。無線レベルの観測にはまた、測位、ピアツーピア(p2p)通信、同期、車両対車両通信、および/または機械対機械(m2m)のための、無線(WiFi、WiMax、Bluetooth（登録商標）など)の使用を監視することも含まれ得る。無線レベルの観測には、ネットワークトラフィックの使用、統計量、またはプロファイルを監視することがさらに含まれ得る。
【００６９】
センサーレベルの観測には、モバイルデバイスの使用環境および/または外部環境を決定するために磁気センサーまたは他のセンサーを監視することが含まれ得る。たとえば、モバイルデバイスプロセッサは、電話が(たとえば、ホルスター内の磁石を感知するように構成された磁気センサーを介して)ホルスターの中にあるか、または(たとえば、カメラもしくは光センサーによって検出される光の量を介して)ユーザのポケットの中にあるかを決定するように構成され得る。たとえば、モバイルデバイスがホルスターに入れられている間に発生する、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声呼を行うこと、録音することなど)に関する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行している不正なプロセスの兆候であり得るので、モバイルデバイスがホルスターの中にあることを検出することは、疑わしい挙動を認識することに関連があり得る。
【００７０】
使用環境または外部環境に関するセンサーレベルの観測の他の例には、NFCシグナリングを検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、ユニバーサルシリアルバス(USB)電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルデバイスに結合されていることを検出すること、モバイルデバイスが(たとえば、USBなどを介して)コンピューティングデバイスに結合されていることを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または(たとえば、緊急シグナリングアプリケーションなどを故意に無効にして)無効化されているかどうかを決定すること、スピーカーまたはマイクロフォンがオンにされているかまたは電源投入されていることを検出すること、充電または電力供給イベントを検出すること、モバイルデバイスがゲームコントローラとして使用されていることを検出することなどが含まれ得る。センサーレベルの観測にはまた、医療もしくはヘルスケアのセンサーから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサーから情報を収集すること、(たとえば、バイブレータインターフェースなどを介して)触知センサーまたは触覚センサーから情報を収集すること、モバイルデバイスの熱状態に関する情報を収集することなども含まれ得る。
【００７１】
一態様では、監視される要因の数を管理可能レベルまで減らすために、挙動観測器モジュール222は、モバイルデバイスの劣化に寄与し得るすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観測することによって、粗い観測を実行することができる。一態様では、挙動観測器モジュール222は、サーバモジュールおよび/またはクラウドサービスもしくはネットワーク内の構成要素から、挙動および/または要因の初期セットを受信することができる。一態様では、挙動/要因の初期セットは、分類器モデル内で指定され得る。
【００７２】
各分類器モデルは、モバイルデバイスの挙動の特定の特徴または態様を評価するために、モバイルデバイスプロセッサによって使用され得る、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リストなど)を含む挙動モデルであり得る。各分類器モデルはまた、モバイルデバイス内のいくつかの特徴、要因、データポイント、エントリ、API、状態、条件、挙動、アプリケーション、プロセス、動作、構成要素など(本明細書では総称して「特徴」)を監視するための決定基準を含み得る。分類器モデルは、モバイルデバイスにプレインストールされるか、ネットワークサーバからダウンロードもしくは受信されるか、モバイルデバイス内で生成されるか、またはそれらの任意の組合せであり得る。分類器モデルは、クラウドソーシングソリューション、挙動モデル化技法、機械学習アルゴリズムなどを使用することによって、生成され得る。
【００７３】
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとして類別され得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含み得る大きいトレーニングデータセットに応じて生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定のモバイルデバイス挙動が良性であるか良性ではない(たとえば、悪性または性能を劣化させる)かを決定するために最も関連のある特徴/エントリのみを含む/テストする、縮小されたデータセットから生成される、より集中的なデータモデルであり得る。
【００７４】
ローカルで生成される簡潔な分類器モデルは、モバイルデバイスにおいて生成される簡潔な分類器モデルである。アプリケーションベースの分類器モデルは、アプリケーション固有の分類器モデルまたはアプリケーションタイプ固有の分類器モデルであり得る。アプリケーション固有の分類器モデルは、特定のソフトウェアアプリケーションが良性であるか良性ではない(たとえば、悪性または性能を劣化させる)かを決定するために最も関連のある特徴/エントリのみを含む/テストする、集中的なデータモデルを含む分類器モデルである。アプリケーションタイプ固有の分類器モデルは、特定のタイプのソフトウェアアプリケーションが良性であるか良性ではない(たとえば、悪性または性能を劣化させる)かを決定するために最も関連のある特徴/エントリのみを含む/テストする、集中的なデータモデルを含む分類器モデルである。デバイス固有の分類器モデルは、特定のモバイルデバイス内で挙動を分類することに最も関連があると決定される、モバイルデバイス固有の特徴/エントリのみを含む/テストする、集中的なデータモデルを含む分類器モデルである。デバイスタイプ固有の分類器モデルは、特定のタイプのモバイルデバイス(たとえば、同じメーカー、モデル、構成など)内で挙動を分類することに最も関連のある特徴/エントリのみを含む/テストする、集中的なデータモデルを含む分類器モデルである。
【００７５】
一態様では、挙動分析器モジュール224は、挙動観測器モジュール222から観測結果を受信し、受信された情報(すなわち、観測結果)と、外部コンテキスト情報モジュール226から受信されたコンテキスト情報とを比較し、分類器モジュールを受信された情報に適用して、デバイスの劣化に経時的に寄与している(もしくは寄与する可能性がある)かまたは場合によってはデバイスに問題を引き起こし得る、受信された観測結果に関連付けられたサブシステム、プロセス、および/またはアプリケーションを特定することができる。
【００７６】
一態様では、挙動分析器モジュール224は、デバイスの劣化に経時的に寄与している-もしくは寄与する可能性がある-かまたは場合によってはデバイスに問題を引き起こし得る、挙動、プロセス、またはプログラムを特定するために、情報の限定されたセット(すなわち、粗い観測結果)を利用するためのインテリジェンスを含み得る。たとえば、挙動分析器モジュール224は、様々なモジュール(たとえば、挙動観測器モジュール222、外部コンテキスト情報モジュール226など)から収集された(たとえば、観測結果の形態の)情報を分析し、モバイルデバイスの正常な動作挙動を学習し、比較の結果に基づいて1つまたは複数の挙動ベクトルを生成するように構成され得る。挙動分析器モジュール224はまた、挙動ベクトルを分類器モジュールに適用して、特定のモバイルデバイス挙動、ソフトウェアアプリケーション、またはプロセスが性能を劣化させる/悪性であるか、良性であるか、疑わしいかを決定することもできる。
【００７７】
挙動分析器モジュール224が、挙動、ソフトウェアアプリケーション、またはプロセスが悪性であるか、または性能を劣化させると決定するとき、挙動分析器モジュール224は、アクチュエータモジュール228に通知することができ、アクチュエータモジュール228は、悪性であるか、もしくは性能を劣化させると決定されたモバイルデバイス挙動を修正するために様々なアクションもしくは動作を実行し、かつ/または特定された問題を解消し、回復させ、隔離し、もしくは別様に修復するための動作を実行することができる。
【００７８】
挙動分析器モジュール224が、挙動、ソフトウェアアプリケーション、またはプロセスが疑わしいと決定するとき、挙動分析器モジュール224は、挙動観測器モジュール222に通知することができ、挙動観測器モジュール222は、その観測の細分性(すなわち、モバイルデバイス挙動が観測される詳細さのレベル)の調整、および/または挙動分析器モジュール224から受信された情報(たとえば、リアルタイム分析動作の結果)に基づいて観測される挙動の変更を行い、新しいまたは追加の挙動情報を生成または収集し、さらなる分析/分類のために新しい/追加の情報を挙動分析器モジュール224へ送ることができる。挙動観測器モジュール222と挙動分析器モジュール224との間のそのようなフィードバック通信により、疑わしいかもしくは性能を劣化させるモバイルデバイス挙動の根源が特定されるまで、処理もしくはバッテリー消費のしきい値に到達するまで、または、観測の細分性のさらなる向上から、疑わしいかもしくは性能を劣化させるモバイルデバイス挙動の根源が特定され得ないとモバイルデバイスプロセッサが決定するまで、モバイルデバイス102が観測の細分性を繰り返し向上させる(すなわち、より微細にもしくはより詳細に観測する)こと、または観測される特徴/挙動を変更することが可能になる。そのようなフィードバック通信により、モバイルデバイス102が、モバイルデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、モバイルデバイスにおいてローカルに分類器モデルを調整または修正することも可能になる。
【００７９】
一態様では、挙動観測器モジュール222および挙動分析器モジュール224は、限られた粗い観測結果から疑わしい挙動を特定するため、より詳細に観測するべき挙動を動的に決定するため、および観測のために必要な詳細さのレベルを動的に決定するために、コンピューティングシステムの挙動のリアルタイムの挙動分析を個別にまたは集合的に提供することができる。このようにして、挙動観測器モジュール222は、デバイス上のプロセッサ、メモリ、またはバッテリーの大量のリソースを必要とすることなく、モバイルコンピューティングデバイス102が問題を効率的に特定し、モバイルコンピューティングデバイス上で問題が発生するのを防止することを可能にする。
【００８０】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、綿密な監視を必要とする重要なデータリソースを特定すること、重要なデータリソースに関連付けられる中間リソースを特定すること、重要なデータリソースおよび中間リソースにアクセスするときにソフトウェアアプリケーションによって行われるAPIコールを監視すること、APIコールによって消費または生成されるモバイルデバイスリソースを特定すること、ソフトウェアアプリケーションによる悪性の活動を示すものとしてAPIコールのパターンを特定すること、APIコールの特定されたパターンおよび特定されたモバイルデバイスリソースに基づいて軽量挙動シグネチャを生成すること、軽量挙動シグネチャを使用して挙動分析動作を実行すること、ならびに、ソフトウェアアプリケーションが悪性であるか良性であるかを挙動分析動作に基づいて決定することによって、モバイルデバイス挙動を分析するように構成され得る。
【００８１】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、モバイルデバイス上で実行するソフトウェアアプリケーションによって最も頻繁に使用されるAPIを特定すること、特定されたホットAPIの使用量に関する情報をモバイルデバイスのメモリ中のAPIログに記憶すること、および、APIログに記憶されている情報に基づいて挙動分析動作を実行して、正常な動作パターンと一致しないモバイルデバイス挙動を特定することによって、モバイルデバイス挙動を分析するように構成され得る。一態様では、APIの複数の呼出しにわたって同じままである汎用的なフィールドの値が、APIの各呼出しに固有である特定のフィールドの値とは別個のテーブルに記憶されるように、APIログが編成されるように、APIログが生成され得る。APIログはまた、特定のフィールドの値が、汎用的なフィールドの値を記憶する別個のテーブルに対するハッシュ鍵とともにテーブルに記憶されるように、生成され得る。
【００８２】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、複数のブーストされた決定株としての変換または表現のために好適である有限状態機械を含む完全な分類器モデルを受信すること、完全な分類器に基づいてモバイルデバイス内で簡潔な分類器モデルを生成すること、および、モバイルデバイス内の簡潔な分類器モデルを使用して、良性であるまたは良性ではない(すなわち、悪性である、性能を劣化させるなど)ものとしてモバイルデバイスの挙動を分類することによって、モバイルデバイス挙動を分析するように構成され得る。一態様では、完全な分類器モデルに基づいて簡潔な分類器モデルを生成することは、モバイルデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、モバイルデバイス挙動を分類するために評価されるべきである、固有のテスト条件の数を決定すること、ブーストされた決定株のリストを順次トラバースし、テスト条件のリストが決定された数の固有のテスト条件を含み得るまで、順次トラバースされたブーストされた決定株の各々に関連付けられたテスト条件をテスト条件のリストに挿入することによって、テスト条件のリストを生成すること、および、生成されたテスト条件のリストに含まれる複数のテスト条件のうちの1つをテストするブーストされた決定株のみを含むように、簡潔な分類器モデルを生成することを含み得る。
【００８３】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、モバイルデバイスの、能力および状態情報など、デバイス固有の情報を使用して、モバイルデバイスの挙動を分類することに関連のある複数のテスト条件の中のモバイルデバイス固有のテスト条件を特定し、特定されたモバイルデバイス固有のテスト条件のみを含む、簡潔な分類器モデルを生成し、モバイルデバイス内の生成された簡潔な分類器モデルを使用して、モバイルデバイスの挙動を分類するように構成され得る。一態様では、簡潔な分類器モデルは、モバイルデバイスの現在の動作状態または構成に関連のあるモバイルデバイス特徴を評価する決定ノードのみを含むように生成され得る。さらなる態様では、簡潔な分類器モデルを生成することは、過剰な量のモバイルデバイスのリソース(たとえば、処理リソース、メモリリソース、またはバッテリーリソース)を消費することなく挙動を分類するために評価されるべきである、固有のテスト条件の数を決定すること、完全な分類器モデルの中の複数のテスト条件を順次トラバースし、テスト条件のリストが決定された数の固有のテスト条件を含むまで、モバイルデバイスの挙動を分類することに関連のあるテスト条件をテスト条件のリストに挿入することによって、テスト条件のリストを生成すること、および、生成されたテスト条件のリストに含まれる条件のうちの1つをテストする、完全な分類器モデルに含まれる決定ノードを含むように、簡潔な分類器モデルを生成することを含み得る。
【００８４】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、ソフトウェアアプリケーションまたはプロセスの活動を監視すること、ソフトウェアアプリケーション/プロセスのオペレーティングシステム実行状態を決定すること、ならびに、活動に基づいて、および/またはその間に活動が監視されたソフトウェアアプリケーションもしくはプロセスのオペレーティングシステム実行状態に基づいて、活動が良性であるか否かを決定することによって、モバイルデバイスの正常な動作パターンと一致しないモバイルデバイス挙動を認識するように構成され得る。さらなる態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態が活動に関連があるか否かを決定し、その間に活動が監視されたソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を特定する影の特徴値を生成し、活動を、オペレーティングシステム実行状態を特定する影の特徴値に関連付ける、挙動ベクトルを生成し、挙動ベクトルを使用して、活動が良性であるか、疑わしいか、良性ではない(すなわち、悪性または性能を劣化させる)かを決定することができる。
【００８５】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、ソフトウェアアプリケーションまたはプロセスの活動を監視すること、ソフトウェアアプリケーション/プロセスのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態を決定すること、ならびに、活動に基づいて、および/またはその間に活動が監視されたソフトウェアアプリケーションのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態に基づいて、活動が良性であるか否かを決定することによって、モバイルデバイスの正常な動作パターンと一致しないモバイルデバイス挙動を認識するように構成され得る。さらなる態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、ソフトウェアアプリケーションのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態が活動に関連があるか否かを決定し、活動をアプリケーションおよびオペレーティングシステムアグノスティックな実行状態に関連付ける挙動ベクトルを生成し、挙動ベクトルを使用して、活動が良性であるか、疑わしいか、良性ではない(すなわち、悪性または性能を劣化させる)かを決定することができる。モバイルデバイスはまた、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態を使用して、分類器モデル(たとえば、アプリケーション固有の分類器モデル)を選択し、挙動ベクトルを選択された分類器モデルに適用して、モバイルデバイス挙動がモバイルデバイスの正常な動作パターンと一致しないか否かを決定することもできる。
【００８６】
様々な態様では、モバイルデバイス102は、モバイルデバイス挙動が良性であるか良性ではない(たとえば、悪性または性能を劣化させる)かを決定することに最も関連のある特徴、要因、およびデータポイントをインテリジェントにかつ効率的に特定するために、ネットワークサーバとともに働くように構成され得る。たとえば、モバイルデバイス102は、ネットワークサーバから完全な分類器モデルを受信し、受信された完全な分類器モデルを使用して、モバイルデバイスまたはモバイルデバイスのソフトウェアアプリケーションの特徴および機能に固有である簡潔な分類器モデル(すなわち、データ/挙動モデル)を生成するように構成され得る。
【００８７】
一態様では、モバイルデバイス102は、完全な分類器モデルを使用して、様々なレベルの複雑さ(または「簡潔さ」)の簡潔な分類器モデルのファミリーを生成するように構成され得る。簡潔な分類器モデルの最も簡潔なファミリー(すなわち、最も少数のテスト条件に基づく簡潔な分類器モデル)は、モデルが良性または悪性のいずれかとして類別することができない(したがって、モデルによって疑わしいものとして類別される)挙動に遭遇するまで、ルーチン的に適用されてよく、遭遇した時点で、よりロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルが、良性または悪性のいずれかとして挙動を類別する試みにおいて適用され得る。生成された簡潔な分類器モデルのファミリー内の一層ロバストな簡潔な分類器モデルの適用は、挙動の最終的な分類が達成されるまで適用され得る。このようにして、観測器モジュールおよび/または分析器モジュールは、挙動を最終的に分類するためにロバストな分類器モデルが必要とされる状況に、最も完全だがリソース集約的な簡潔な分類器モデルの使用を制限することによって、効率と精度との間でバランスをとることができる。
【００８８】
様々な態様では、モバイルデバイス102は、有限状態機械の表示/表現をブーストされた決定株に変換すること、モバイルデバイス固有の状態、特徴、挙動、条件、または構成に基づいて、完全な分類器モデルに含まれるブーストされた決定株の1つまたは複数のサブセットを含めるように、ブーストされた決定株の完全なセットをプルーニングまたは選別すること、および、ブーストされた決定株の1つまたは複数のサブセットを使用して、モバイルデバイス挙動をインテリジェントに監視、分析、かつ/または分類することによって、1つまたは複数の簡潔な分類器モデルを生成するように構成され得る。
【００８９】
ブーストされた決定株は、厳密に1つのノード(およびしたがって、1つのテスト質問またはテスト条件)と重み値とを有し、したがって、データ/挙動の二項分類における使用に十分に適した、1レベル決定木である。すなわち、ブーストされた決定株に挙動ベクトルを適用すると、二項回答(たとえば、はいまたはいいえ)がもたらされる。たとえば、ブーストされた決定株によってテストされる問題/条件が「ショートメッセージサービス(SMS)送信の頻度が毎分xより小さいか」である場合、ブーストされた決定株に「3」の値を適用すると、(「3未満」のSMS送信の場合)「はい」の回答または(「3以上」のSMS送信の場合)「いいえ」の回答のいずれかがもたらされる。
【００９０】
ブーストされた決定株は、非常に簡単かつ根本的である(したがって、著しい処理リソースを必要としない)ので効率的である。ブーストされた決定株はまた非常に並列化可能であり、したがって、(たとえば、モバイルデバイス内の複数のコアまたはプロセッサによって)多くの株が並列に/同時に適用またはテストされ得る。
【００９１】
一態様では、モバイルデバイス102は、完全な分類器モデルに含まれる分類器基準のサブセット、ならびに、モバイルデバイスの構成、機能、および接続される/含まれるハードウェアに関連のある特徴に対応する分類器基準のみを含む、簡潔な分類器モデルを生成するように構成され得る。モバイルデバイス102は、この簡潔な分類器モデルを使用して、デバイスに存在する、または関連のある特徴および機能のみを監視することができる。次いで、モバイルデバイスは、モバイルデバイスの現在の状態および構成に基づいて、様々な特徴および対応する分類器基準を含むように、または削除するように、簡潔な分類器モデルを定期的に変更または再生成することができる。
【００９２】
一例として、挙動分析器モジュール224は、挙動モデル(たとえば、分類器)の完全な特徴セットに関連付けられた決定株を有する大きいブーストされた決定株の分類器モデルを受信するように構成され得、挙動分析器モジュール224は、モバイルデバイスの現在の構成、機能、動作状態、および/または接続される/含まれるハードウェアに関連のある特徴のみを大きい分類器モデルから選択すること、ならびに、選択された特徴に対応するブーストされた決定株のサブセットを簡潔な分類器モデルに含めることによって、大きい分類器モデルから1つまたは複数の簡潔な分類器モデルを導出することができる。この態様では、モバイルデバイスに関連のある特徴に対応する分類器基準は、選択された特徴の少なくとも1つをテストする大きい分類器モデルに含まれるブーストされた決定株であり得る。次いで、挙動分析器モジュール224は、モバイルデバイスの現在の状態および構成に基づいて様々な特徴を含むように、または削除するように、ブーストされた決定株の簡潔な分類器モデルを定期的に変更または再生成することができ、その結果、簡潔な分類器モデルは、アプリケーション固有またはデバイス固有の特徴のブーストされた決定株を含め続ける。
【００９３】
加えて、モバイルデバイス102はまた、特定のソフトウェアアプリケーション(Google(登録商標)ウォレット)に、および/または特定のタイプのソフトウェアアプリケーション(たとえば、ゲーム、ナビゲーション、金融、ニュース、生産性など)に関連のある、条件または特徴を特定するアプリケーション固有および/またはアプリケーションタイプ固有の分類器モデルを動的に生成することもできる。一態様では、これらのアプリケーションベースの分類器モデル(すなわち、アプリケーション固有の分類器モデル、およびアプリケーションタイプ固有の分類器モデル)は、受信された完全な分類器モデルに含まれる決定ノードの、または受信された完全な分類器モデルから生成された簡潔な分類器モデルに含まれる決定ノードの、低減された、およびより集中的なサブセットを含むように生成され得る。
【００９４】
様々な態様では、モバイルデバイス102は、システム内の各ソフトウェアアプリケーションのための、および/またはシステム内のソフトウェアアプリケーションの各タイプのための、アプリケーションベースの分類器モデルを生成するように構成され得る。モバイルデバイス102はまた、危険性が高い、または乱用されやすいソフトウェアアプリケーションおよび/またはアプリケーションタイプ(たとえば、金融アプリケーション、ポイントオブセールアプリケーション、生体センサーアプリケーションなど)を動的に特定し、危険性が高い、または乱用されやすいものとして特定されるソフトウェアアプリケーションおよび/またはアプリケーションタイプのみのためのアプリケーションベースの分類器モデルを生成するように構成され得る。様々な態様では、モバイルデバイス102は、動的に、反応的に、前もって、および/または新しいアプリケーションがインストールもしくは更新されるたびに、アプリケーションベースの分類器モデルを生成するように構成され得る。
【００９５】
一態様では、モバイルデバイス102は、複数の分類器モデルを並列に使用または適用するように構成され得る。様々な態様では、モバイルデバイス102は、特定のソフトウェアアプリケーションを評価するときに、より汎用的およびローカルで生成された簡潔な分類器モデルを同じまたは異なる挙動/特徴ベクトルに対して使用/適用することから生成される結果よりも、アプリケーションベースの分類器モデルを挙動/特徴ベクトルに対して使用または適用することから生成される結果に、選好または優先度を与えるように構成され得る。様々な態様では、モバイルデバイス102は、分類器モデルを適用した結果を使用して、ソフトウェアアプリケーション、プロセス、または複雑なモバイルデバイス挙動が、良性であるか、またはモバイルデバイスの性能もしくは電力消費特性の劣化に寄与しているかを予測することができる。
【００９６】
上述のように、各ソフトウェアアプリケーションは、一般に、いくつかのタスクまたは活動をモバイルデバイス上で実行し、いくつかのタスク/活動がモバイルデバイスにおいて実行される特定の実行状態は、モバイルデバイス挙動が追加のまたはより綿密な精査、監視、および/または分析に値するか否かの、強い指標であり得る。したがって、様々な態様では、モバイルデバイス102のプロセッサは、それにおいていくつかのタスク/活動が実行される実際の実行状態を特定する情報を使用して、その挙動監視および分析動作を集中させ、モバイルデバイス挙動が良性であるか、疑わしいか、悪性/性能を劣化させるかをよりよく決定するように、プロセッサ実行可能命令によって構成され得る。
【００９７】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、ソフトウェアアプリケーションによって実行された活動/タスクを、それにおいてそれらの活動/タスクが実行された実行状態に関連付けるように構成され得る。たとえば、観測器モジュールは、実行状態が関連のあるソフトウェアの特徴、活動、または動作(たとえば、ロケーションアクセス、SMS読取り動作、センサーアクセスなど)をリストするサブベクトルまたはデータ構造において、計装化構成要素を監視することから収集された挙動情報を含む、挙動ベクトルを生成するように構成され得る。一態様では、このサブベクトル/データ構造は、それにおいて各特徴/活動/動作が観測された実行状態を特定する影の特徴値サブベクトル/データ構造に関連して記憶され得る。一例として、観測器モジュールは、その値が、ソフトウェアアプリケーションがバックグラウンド状態において動作中であったときにロケーション情報にアクセスした数または割合を特定する、「location_background」データフィールドを含む、挙動ベクトルを生成し得る。これによって、分析器モジュールが、モバイルデバイスの他の観測された挙動とは無関係に、および/またはそれと並列に、この実行状態情報を分析することが可能になる。このようにして挙動ベクトルを生成することで、システムが情報(たとえば、頻度または割合)を経時的に統合することも可能になる。
【００９８】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、観測された挙動の簡潔な定義を含むように、挙動ベクトルを生成するように構成され得る。挙動ベクトルは、モバイルデバイス、ソフトウェアアプリケーション、またはプロセスの観測された挙動を、値またはベクトルデータ構造で(たとえば、数字の列などの形で)簡潔に記述することができる。挙動ベクトルはまた、モバイルデバイスシステムがモバイルデバイス挙動を迅速に認識し、特定し、かつ/または分析することを可能にする、識別子として機能することもできる。様々な態様では、観測器モジュールおよび/または分析器モジュールは、一連の数字を含むように挙動ベクトルを生成するように構成され得、これらの数字の各々がモバイルデバイスの特徴または挙動を表す。たとえば、挙動ベクトルに含まれる数字は、モバイルデバイスのカメラが使用されているか否か(たとえば、0または1として)、どれだけのネットワークトラフィックがモバイルデバイスから送信されたか、またはモバイルデバイスによって生成されたか(たとえば、20KB/秒など)、どれだけのインターネットメッセージが通信されたか(たとえば、SMSメッセージの数など)などを表すことができる。
【００９９】
様々な態様では、挙動観測器モジュール222および/または挙動分析器モジュール224は、実行情報を含むように、挙動ベクトルを生成するように構成され得る。実行情報は、挙動の一部(たとえば、バックグラウンドプロセスによって3秒間に5回使用されたカメラ、フォアグラウンドプロセスによって3秒間に3回使用されたカメラなど)として、または無関係の特徴の一部として、挙動ベクトル内に含まれ得る。一態様では、実行状態情報は、影の特徴値サブベクトルまたはデータ構造として、挙動ベクトル内に含まれ得る。一態様では、挙動ベクトルは、実行状態が関連のある特徴、活動、タスクに関連して、影の特徴値サブベクトル/データ構造を記憶し得る。
【０１００】
図3A〜図3Eは、モバイルデバイス102の性能および電力消費特性を改善するために、ソフトウェアアプリケーションの実際の実行状態を決定かつ使用するために、モバイルデバイス102の処理コアによって実行され得る態様の方法を示す。
【０１０１】
図3Aは、ソフトウェアアプリケーションの実際の実行状態を決定かつ使用して、ソフトウェアアプリケーションが悪性であるか良性であるかを決定する、一態様の方法300を示す。方法300は、モバイルデバイス102の処理コアによって実行され得る。
【０１０２】
ブロック302で、モバイルデバイスのプロセッサは、モバイルデバイスの様々なソフトウェアおよびハードウェア構成要素において、モバイルデバイスのソフトウェアアプリケーションの活動を監視することができる。ブロック304で、モバイルデバイスプロセッサは、様々なソフトウェアおよびハードウェア構成要素によって収集された実行、イベント、および/または挙動情報に基づいて、挙動ベクトルを生成することができる。ブロック306で、モバイルデバイスプロセッサは、決定ルールと機械学習アルゴリズム(たとえば、分類器モデル)とを挙動ベクトルに適用して、ソフトウェアアプリケーションの実際の実行状態を決定することができる。ブロック308で、モバイルデバイスプロセッサは、決定ルールと機械学習アルゴリズム(たとえば、分類器モデル)とを挙動ベクトルに適用した結果に基づいて、ソフトウェアアプリケーションのオペレーティングシステム実行状態を決定することができる。ブロック310で、モバイルデバイスプロセッサは、オペレーティングシステム実行状態を、決定された実際の実行状態と比較して、実際の実行状態と報告された実行状態との間の不一致を特定することができる。
【０１０３】
決定ブロック312で、モバイルデバイスプロセッサは、オペレーティングシステム実行状態と計算された実際の実行状態との間にいずれかの不一致があるか否かを決定することができる。オペレーティングシステム実行状態と計算された実際の実行状態との間に不一致があると決定すること(すなわち、決定ブロック312=「Yes」)に応答して、モバイルデバイスプロセッサは、ブロック314で、ソフトウェアアプリケーションを悪性として分類することができる。オペレーティングシステムに知られている実行状態とは異なる実行状態が、異常であるかまたはオペレーティングシステムと一致しない何かにおいてアプリケーションが挙動していることを示すので、この決定が行われ得る。
【０１０４】
オペレーティングシステム実行状態と計算された実際の実行状態との間に不一致がないと決定すること(すなわち、決定ブロック312=「No」)に応答して、モバイルデバイスプロセッサは、ブロック316で、ソフトウェアアプリケーションのオペレーティングシステム実行状態を使用して、モバイルデバイス挙動を監視することにおいて使用するための適切な分類器モデルを選択することができる。したがって、実行状態が、オペレーティングシステムに知られている状態に一致する場合、その実行状態が、観測器モジュールおよび分析器モジュールによって、アプリケーションを実行するモバイルデバイスの挙動を監視するために使用するための、状態固有の分類器モデルを選択するために使用され得る。ブロック318で、モバイルデバイスプロセッサは、選択された分類器モデルを使用して、ソフトウェアアプリケーションが悪性であるか良性であるかを決定するために観測器モジュール222によって監視かつ/または分析器モジュール224によって分析されるべきであるモバイルデバイス特徴を決定することができる。
【０１０５】
図3Bは、ソフトウェアアプリケーションの実際の実行状態を決定かつ使用して、有効な電力節約方式を実施する、一態様の方法320を示す。方法320は、モバイルデバイス102の処理コアによって実行され得る。ブロック302〜312で、モバイルデバイスプロセッサは、図3Aに関して同様の番号付きブロックについて上記で説明した動作と同じまたは同様の動作を実行することができる。すなわち、ブロック302で、モバイルデバイスプロセッサは、モバイルデバイスの様々なソフトウェアおよびハードウェア構成要素において、モバイルデバイスのソフトウェアアプリケーションの活動を監視することができる。ブロック304で、モバイルデバイスプロセッサは、様々なソフトウェアおよびハードウェア構成要素によって収集された実行、イベント、および/または挙動情報に基づいて、挙動ベクトルを生成することができる。ブロック306で、モバイルデバイスプロセッサは、決定ルールと機械学習アルゴリズム(たとえば、分類器モデル)とを挙動ベクトルに適用して、ソフトウェアアプリケーションの実際の実行状態を決定することができる。ブロック308で、モバイルデバイスプロセッサは、ソフトウェアアプリケーションのオペレーティングシステム実行状態を決定することができる。ブロック310で、モバイルデバイスプロセッサは、オペレーティングシステム実行状態を、決定された実際の実行状態と比較して、実際の実行状態と報告された実行状態との間の不一致を特定することができる。決定ブロック312で、モバイルデバイスプロセッサは、オペレーティングシステム実行状態と計算された実際の実行状態との間にいずれかの不一致があるか否かを決定することができる。
【０１０６】
オペレーティングシステム実行状態と計算された実際の実行状態との間に不一致があると決定すること(すなわち、決定ブロック312=「Yes」)に応答して、モバイルデバイスプロセッサは、ブロック334で、実際の実行状態情報を使用して、電力節約方式を決定または選択することができる。たとえば、モバイルデバイスプロセッサは、ソフトウェアアプリケーションの実際の実行状態を使用して、そのアプリケーションの実際の電力消費または処理要件を特定し、それらの要件を満たすために電源投入または電源切断されるべきである処理コアを決定し、モバイルデバイスの電力消費および性能特性のバランスをとるために、処理コアが電源投入または電源切断されるべきである回数を決定し、この情報に基づいて、電力節約方式を選択することができる。
【０１０７】
オペレーティングシステム実行状態と計算された実際の実行状態との間に不一致がないと決定すること(すなわち、決定ブロック312=「No」)に応答して、モバイルデバイスプロセッサは、ブロック336で、ソフトウェアアプリケーションのオペレーティングシステム実行状態を使用して、電力節約方式を決定かつ選択することができる。代替的に、ブロック336で、モバイルデバイスプロセッサは、当技術分野で知られている任意の従来のソリューションを使用して、電力節約方式を特定かつ選択することができる。ブロック338で、モバイルデバイスプロセッサは、選択された電力節約方式を使用して、より有効な電力節約方式を実施することができる。電力節約方式を実施することは、計算された実際の実行状態に基づいて、1つまたは複数のプロセッサおよびデバイスリソースを低電力状態に配置することを含み得る。電力節約方式を実施することは、プロセッサの動作周波数を監視して、その現在の動作周波数を決定すること、計算された実際の実行状態に基づいて、プロセッサのための予測された動作周波数値を計算すること、および、予測された動作周波数に基づいて、プロセッサの周波数を更新する(すなわち、上げるかまたは下げる)ことを含み得る。
【０１０８】
図3Cは、ソフトウェアアプリケーションの実際の実行状態を決定かつ使用して、総合的な挙動監視および分析システムの精度と性能とを改善する、一態様の方法340を示す。方法340は、モバイルデバイス102の処理コアによって実行され得る。ブロック302〜312で、モバイルデバイスプロセッサは、図3Aに関して同様の番号付きブロックについて上記で説明した動作と同じまたは同様の動作を実行することができる。
【０１０９】
ブロック354で、および、オペレーティングシステム実行状態と計算された実際の実行状態との間に不一致があると決定すること(すなわち、決定ブロック312=「Yes」)に応答して、モバイルデバイスプロセッサは、ソフトウェアアプリケーションの実際の実行状態を使用して、モバイルデバイス内のソフトウェアアプリケーションの実行に関するソフトウェアアプリケーションまたはモバイルデバイス挙動を分析することに最も関連のある特徴に集中する分類器モデルを選択することができる。ブロック358で、モバイルデバイスプロセッサは、選択された分類器モデルを使用して、ソフトウェアアプリケーションが悪性であるか良性であるかを決定するために監視かつ/または分析されるべきであるモバイルデバイス特徴を決定することができる。代替的に、ブロック354および358で、モバイルデバイスプロセッサは、ソフトウェアアプリケーションの活動を監視し、その活動と、その間にその活動が監視されたソフトウェアアプリケーションの実際の実行状態とに基づいて、その活動が悪性であるか良性であるかを決定することができる。
【０１１０】
オペレーティングシステム実行状態と計算された実際の実行状態との間に不一致がないと決定すること(すなわち、決定ブロック312=「No」)に応答して、モバイルデバイスプロセッサは、従来のソリューションまたはオペレーティングシステム実行状態を使用して、分類器モデルを選択することができる。ブロック358で、モバイルデバイスプロセッサは、選択された分類器モデルを使用して、ソフトウェアアプリケーションが悪性であるか良性であるかを決定するために監視かつ/または分析されるべきであるモバイルデバイス特徴を決定することができる。
【０１１１】
図3Dは、実際の実行状態を決定かつ使用して、総合的な挙動監視および分析システムの精度と性能とを改善し、かつ/または有効な電力節約方式を実施する、一態様の方法360を示す。方法360は、モバイルデバイス102の処理コアによって実行され得る。ブロック302〜306で、モバイルデバイスプロセッサは、図3Aに関して同様の番号付きブロックについて上記で説明した動作と同じまたは同様の動作を実行することができる。ブロック368で、モバイルデバイスプロセッサは、実際の実行状態情報を使用して、電力節約方式を決定または選択することができる。ブロック370で、モバイルデバイスプロセッサは、選択された電力節約方式を実施して、電力節約方式を実施することができる。
【０１１２】
ブロック372で、モバイルデバイスプロセッサは、ソフトウェアアプリケーションの実際の実行状態を使用して、モバイルデバイス内のソフトウェアアプリケーションの実行に関するソフトウェアアプリケーションまたはモバイルデバイス挙動を分析することに最も関連のある特徴に集中する分類器モデルを選択することができる。ブロック374で、モバイルデバイスプロセッサは、選択された分類器モデルを使用して、ソフトウェアアプリケーションが悪性であるか良性であるかを決定するために監視かつ/または分析されるべきであるモバイルデバイス特徴を決定することができる。
【０１１３】
図3Eは、実際の実行状態を決定かつ使用して、コンピューティングデバイスの性能を改善するために使用され得る将来の実行状態を決定、予測、または予期する、一態様の方法380を示す。方法380は、モバイルデバイス102の処理コアによって実行され得る。ブロック302〜306で、モバイルデバイスプロセッサは、図3Aに関して同様の番号付きブロックについて上記で説明した動作と同じまたは同様の動作を実行することができる。
【０１１４】
ブロック382で、モバイルデバイスプロセッサは、実際の実行状態情報を使用して、決定された実際の実行状態に基づいて、将来の活動または実行状態を決定または予期することができる。一態様では、これは、分類器モデルを挙動ベクトルに適用することによって達成され得る。ブロック384で、モバイルデバイスプロセッサは、決定された将来の実行状態に一致するアクションをとることができる。たとえば、モバイルデバイスプロセッサは、予期された将来の状態をモバイルデバイスのオペレーティングシステムスケジューラに知らせるための動作を実行することができる。それに応答して、スケジューラは、実行またはラン待ち行列から低優先度プロセスを除去することなど、この決定された将来の実行活動/状態に一致するアクションまたは動作を実行することができる。
【０１１５】
図4は、モバイルデバイスの過剰な量の処理リソース、メモリリソース、またはバッテリーリソースを消費することなく、モバイルデバイス挙動が正常な動作パターンと一致しないか否かを効率的に決定することにおいて使用するために好適である、挙動ベクトルをインテリジェントに生成する、一態様の方法400を示す。方法400は、モバイルデバイス102の処理コアによって実行され得る。
【０１１６】
ブロック402で、モバイルデバイスプロセッサは、モバイルデバイス上で実行するソフトウェアアプリケーションの活動を監視することができる。決定ブロック404で、処理コアは、活動の実行中のソフトウェアアプリケーションの実行状態が、任意のモバイルデバイス挙動、ソフトウェアアプリケーション、プロセス、タスク、活動などが悪性であるかまたはモバイルデバイスの正常な動作パターンと一致しないか否かを決定することに関連があるか否かを決定することができる。一態様では、これは、実行状態が関連のあるすべての様々な挙動、ソフトウェアアプリケーション、活動、および/またはタスクを含む、実行状態関連性データ構造にアクセスすることによって達成され得る。
【０１１７】
活動の実行中のソフトウェアアプリケーションの実行状態が関連がないと決定すること(すなわち、決定ブロック404=「No」)に応答して、ブロック406で、処理コアは、実行状態情報を含まない挙動ベクトルを生成することができる。ブロック408で、処理コアは、構成要素を観測/監視することから収集された挙動情報に基づいて、それにおいて活動が発生した実行状態を検討することなく、活動が悪性であるか良性であるかを決定することができる。
【０１１８】
活動の実行中のソフトウェアアプリケーションの実行状態が、監視された活動について関連があると決定すること(すなわち、決定ブロック404=「Yes」)に応答して、ブロック412で、処理コアは、その間に活動が監視されたソフトウェアアプリケーションの実行状態を特定する、影の特徴値を生成することができる。ブロック414で、処理コアは、監視された活動を、実行状態を特定する影の特徴値に関連付ける、挙動ベクトルを生成することができる。ブロック416で、処理コアは、活動に関連付けられた実行状態に基づいて、活動が悪性であるか良性であるかを決定することができる。
【０１１９】
上述のように、いくつかのタスク/活動は、オペレーティングシステムまたはソフトウェアアプリケーションが、それらのタスク/活動をサポートするかまたはそれらと互換性がある実行状態であることを、本質的に必要とする。たとえば、カメラの使用、録音するためのマイクロフォンのアクティブ化、SMSメッセージを送ること、および加速度計データの収集はすべて、モバイルデバイスとの何らかの形のユーザ対話を必要とするタスク/活動であり、したがって、これらの活動は、通常はフォアグラウンドで、または、モバイルデバイスとのユーザ対話をサポートする実行状態において実行されなければならない。
【０１２０】
さらなる例として、オペレーティングシステムまたはソフトウェアアプリケーションが特定の実行状態であるとき、いくつかのタスク/活動がモバイルデバイス内で実行される頻度は、その活動に関連付けられたモバイルデバイス挙動が追加のまたはより綿密な精査、監視、および/または分析に値することを、強く示すものであり得る。すなわち、センサーデータをサンプリングすること(たとえば、加速度計、ジャイロスコープ、コンパス、圧力センサーなど)、ロケーションデータをサンプリングすること、WiFiスキャンを実行することなどの活動は、関連付けられたソフトウェアアプリケーションがフォアグラウンドで正常または良性のモバイルデバイス挙動/動作の一部として実行中であるとき、頻繁に実行され得るが、関連付けられたソフトウェアアプリケーションがバックグラウンドで実行中であるとき、その同じ頻度で実行されるべきではない。たとえば、アプリケーションがバックグラウンドであるとき、センサー情報を頻繁にサンプリングすることは、センサー情報が悪性のアプリケーションによって悪用されていることを示し得るのに対して、アプリケーションがフォアグラウンドであるとき、その同じセンサー情報を同じ頻度でサンプリングすることは、良性のモバイルデバイス挙動の一部であり得る。同様に、アプリケーションがバックグラウンド状態である間の頻繁なWiFiスキャンは、ロケーションAPIへのコールが悪性のソフトウェアアプリケーションによって回避されていること、または、WiFiシステムが不適当に使用されており、かつ/もしくは、モバイルデバイスの全体的な性能および電力消費特性を劣化させていることを示し得る。
【０１２１】
一態様では、モバイルデバイスプロセッサは、モバイルデバイスのメモリ内に記憶された実行状態関連性データ構造(たとえば、リスト、テーブル、マップなど)から情報を読み取ることによって、オペレーティングシステムまたはソフトウェアアプリケーションが、それらのタスク/活動をサポートするかまたはそれらと互換性がある実行状態であることを必要とする、タスク/活動を特定するように構成され得る。一態様では、モバイルデバイスプロセッサは、(たとえば、前の実行、挙動モデルの以前の適用などから収集された)履歴情報、新しい情報、機械学習、コンテキストモデリング、および、利用可能な情報、モバイルデバイス状態、環境条件、ネットワーク条件、モバイルデバイス性能、バッテリー消費レベルなどにおいて検出された変化に基づいて、実行状態関連性データに対してエントリ、特徴、および実行状態をインテリジェントに追加または削除するように、プロセッサ実行可能命令によって構成され得る。
【０１２２】
図5は、一態様の観測器デーモンを実装するコンピューティングシステム500内の論理構成要素および情報フローを示す。図5に示す例では、コンピューティングシステム500は、ユーザ空間において、挙動検出器モジュール502と、データベースエンジンモジュール504と、挙動分析器モジュール224とを含み、カーネル空間において、リングバッファ514と、フィルタルールモジュール516と、スロットリングルールモジュール518と、セキュアバッファ520とを含む。コンピューティングシステム500は、ユーザ空間において、挙動検出器モジュール502と、データベースエンジン504とを含み、カーネル空間において、セキュアバッファマネージャ506と、ルールマネージャ508と、システムヘルスモニタ510とを含む、観測器デーモンをさらに含み得る。
【０１２３】
様々な態様は、システム挙動を特徴付けるためにwebkit、SDK、NDK、カーネル、ドライバ、およびハードウェアを包含する、モバイルデバイス上のクロスレイヤ観測を提供できる。挙動の観測は、リアルタイムで行われ得る。
【０１２４】
図6は、一態様による動的および適応的観測を実行するための例示的な方法600を示す。ブロック602で、モバイルデバイスプロセッサは、モバイルデバイスの劣化に寄与し得る多数の要因/挙動のサブセットを監視/観測することによって、粗い観測を実行することができる。ブロック603で、モバイルデバイスプロセッサは、粗い観測に基づいて、粗い観測および/またはモバイルデバイス挙動を特徴付ける挙動ベクトルを生成することができる。ブロック604で、モバイルデバイスプロセッサは、モバイルデバイスの劣化に潜在的に寄与し得る、粗い観測に関連付けられたサブシステム、プロセス、および/またはアプリケーションを特定することができる。これは、たとえば、複数のソースから受信された情報とモバイルデバイスのセンサーから受信されたコンテキスト情報とを比較することによって達成され得る。ブロック606で、モバイルデバイスプロセッサは、粗い観測に基づいて挙動分析動作を実行することができる。態様では、ブロック603および604の一部として、モバイルデバイスプロセッサは、上記で説明した動作のうちの1つまたは複数を実行することができる。
【０１２５】
決定ブロック608で、モバイルデバイスプロセッサは、疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定され修正され得るか否かを決定することができる。疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定され修正され得ると、モバイルデバイスプロセッサが決定する(すなわち、決定ブロック608=「Yes」)とき、ブロック618で、プロセッサは、挙動を修正するためのプロセスを開始し、ブロック602に戻って追加の粗い観測を実行することができる。
【０１２６】
疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定かつ/または修正され得ないと決定すること(すなわち、決定ブロック608=「No」)に応答して、決定ブロック609で、モバイルデバイスプロセッサは、問題の可能性があるか否かを決定することができる。一態様では、モバイルデバイスプロセッサは、モバイルデバイスが潜在的な問題に遭遇することおよび/または疑わしい挙動に関与することの確率を計算し、計算された確率があらかじめ決定されたしきい値よりも大きいか否かを決定することによって、問題の可能性があると決定することができる。計算された確率があらかじめ決定されたしきい値よりも大きくない、ならびに/または、疑わしい挙動もしくは潜在的な問題が存在するおよび/もしくは検出可能である可能性はないと、モバイルデバイスプロセッサが決定する(すなわち、決定ブロック609=「No」)とき、プロセッサは、ブロック602に戻って追加の粗い観測を実行することができる。
【０１２７】
疑わしい挙動または潜在的な問題が存在するおよび/または検出可能である可能性があると決定すること(すなわち、決定ブロック609=「Yes」)に応答して、ブロック610で、モバイルデバイスプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、より深いロギング/観測または最終的なロギングを実行することができる。ブロック612で、モバイルデバイスプロセッサは、特定されたサブシステム、プロセスまたはアプリケーションに対して、より深くより詳細な観測を実行することができる。ブロック614で、モバイルデバイスプロセッサは、より深くより詳細な観測に基づいて、さらなるおよび/またはより深い挙動分析を実行することができる。決定ブロック608で、モバイルデバイスプロセッサは、より深い挙動分析の結果に基づいて、疑わしい挙動または潜在的な問題が特定され修正され得るか否かを再び決定することができる。より深い挙動分析の結果に基づいて、疑わしい挙動または潜在的な問題が特定され修正され得ないと決定すること(すなわち、決定ブロック608=「No」)に応答して、詳細さのレベルが問題を特定するために十分に微細になるまで、または詳細さを追加しても問題が特定され得ないかまたは問題が存在しないと決定されるまで、プロセッサはブロック610〜614で動作を繰り返すことができる。
【０１２８】
より深い挙動分析の結果に基づいて、疑わしい挙動または潜在的な問題が特定され修正され得ると決定すること(すなわち、決定ブロック608=「Yes」)に応答して、ブロック618で、モバイルデバイスプロセッサは、問題/挙動を修正するための動作を実行することができ、プロセッサは、ブロック602に戻って追加の動作を実行することができる。
【０１２９】
一態様では、方法600のブロック602〜618の一部として、モバイルデバイスプロセッサは、限られた粗い観測結果から疑わしい挙動を特定するため、より詳細に観測するべき挙動を動的に決定するため、および観測のために必要とされる詳細さの正確なレベルを動的に決定するために、システムの挙動のリアルタイム挙動分析を実行することができる。これは、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリーリソースを使用する必要なく、モバイルデバイスプロセッサが問題を効率的に特定し、問題が発生するのを防止することを可能にする。
【０１３０】
現在、コンピューティングデバイス上で実行するアプリケーションプログラムの挙動をモデル化するための様々なソリューションが存在し、これらのソリューションは、ソフトウェアアプリケーションが悪性であるか良性であるかを決定するために、機械学習技法とともに使用され得る。しかしながら、これらのソリューションは、挙動情報の非常に大きいコーパスを評価することを必要とし、挙動モデルを動的に生成せず、モバイルコンピューティングデバイスの能力および状態を考慮せず、挙動モデル内の特徴にインテリジェントに優先度を付けず、個別のアプリケーションプログラムもしくはプロセスを評価することに限定され、かつ/またはモバイルコンピューティングデバイス内の計算集約的なプロセスの実行を必要とするので、モバイルコンピューティングデバイス上での使用のために好適ではない。したがって、モバイルコンピューティングデバイスにおいてこれらの既存のソリューションを実施すること、実行すること(performing)、または実行すること(executing)は、モバイルコンピューティングデバイスの応答性、性能、または電力消費特性に対して、大きい悪影響および/またはユーザが知覚できる影響を及ぼし得る。
【０１３１】
たとえば、コンピューティングデバイスは、既存の機械学習ベースのソリューションを使用して、トレーニングデータの大きいコーパスにアクセスして使用し、入力として特徴ベクトルをとるモデルを導出し、このモデルを使用して、コンピューティングデバイスのソフトウェアアプリケーションが悪性であるか良性であるかを決定するように構成され得る。しかしながら、そのようなソリューションは、簡潔な分類器モデルを生成するために使用され得るフォーマットまたは情報構造(たとえば、有限状態機械など)において挙動情報の大きいコーパスを記述する、完全な分類器モデル(すなわち、ロバストなデータモデルまたは挙動モデル)を生成しない。加えて、このソリューションは、モバイルコンピューティングデバイスから、そのデバイスの能力、機能、特徴、構成、現在の状態、設定、および/またはパラメータを記述する識別情報を受信しない。少なくともこれらの理由で、そのようなソリューションによって、サーバおよび/またはモバイルコンピューティングデバイスが、そのモバイルコンピューティングデバイスの能力および動作状態を含むか、テストするか、または考慮する分類器モデルを迅速かつ効率的に生成することが可能にならない。加えて、このソリューションによって、サーバまたはモバイルコンピューティングデバイスが、それにおいてモデルが使用されるべきである特定のモバイルコンピューティングデバイス内の特定の挙動を分類することに対する特徴の関連性に従って、インテリジェントに特徴を特定するかまたは特徴に優先度を付ける、簡潔な分類器モデルを生成することが可能にならない。これらおよび他の理由で、そのようなソリューションは、モバイルコンピューティングデバイスの応答性、性能、または電力消費特性に対して、大きい悪影響またはユーザが知覚できる影響を及ぼすことなく、複雑なモバイルコンピューティングデバイス挙動を迅速かつ効率的に特定、分析、または分類するために使用することができない。
【０１３２】
既存のソリューションの上述の制限に加えて、多くの挙動モデル化ソリューションは、コンピューティングデバイスの挙動をモデル化することに対して「フリーサイズ」手法を実施しており、したがって、モバイルデバイスにおいて使用するために好適ではない。すなわち、これらのソリューションは通常、汎用的であるように、かつ、多くのコンピューティングデバイス内で、ならびに/または様々な異なるハードウェア構成およびソフトウェア構成とともに使用され得るように、挙動モデルを生成する。したがって、これらの汎用的な挙動モデルは、しばしば、非常に多数の特徴を含み/テストし、特徴のうちの多くは、それにおいて特徴が実際に使用される特定のコンピューティングデバイス内の挙動を特定、分析、または分類することに関連がない(したがって、そのために使用することができない)。加えて、これらのソリューションは、それにおいてモデルが使用される特定のモバイルデバイス内の特定の挙動を分類することに対する特徴の関連性に基づいて、特徴に相対的な優先度を割り当てない。したがって、これらのソリューションは通常、多数の組織的ではない、不適切に優先度を付けられた、または無関係な特徴を含む挙動モデルをコンピューティングデバイスが適用することを必要とする。そのようなモデルは、モバイルデバイスの経時的な劣化の原因または根源を特定するために有用ではない多数の特徴をモバイルデバイスプロセッサに分析させ得るので、リソース制約のあるモバイルデバイスにおいて使用するために好適ではない。したがって、これらの既存のソリューションは、複雑でありながらリソース制約のあるモバイルデバイスにおいて使用するために好適ではない。
【０１３３】
現代のモバイルデバイスは、高度に構成可能かつ複雑なシステムである。したがって、特定のモバイルデバイス挙動が良性であるか良性ではない(たとえば、悪性または性能を劣化させる)かを決定するために最も重要である特徴は、各モバイルデバイスにおいて異なり得る。さらに、特徴の異なる組合せは、特定の挙動が良性であるか良性ではないかをそのモバイルデバイスが迅速かつ効率的に決定するために、各モバイルデバイスにおける監視および/または分析を必要とすることがある。しかし、監視および分析を必要とする特徴の正確な組合せ、ならびに各特徴または特徴の組合せの相対的な優先度または重要性は、しばしば、それにおいて挙動が監視または分析されるべきである特定のモバイルデバイスから取得されたデバイス固有の情報を使用してのみ決定され得る。これらおよび他の理由で、それにおいて挙動モデルが使用される特定のデバイス以外の任意のコンピューティングデバイス内で生成された挙動モデルは、そのデバイス内の挙動を分類することに対して最も重要である特徴の正確な組合せを特定する情報を含むことができない。
【０１３４】
たとえば、第1のモバイルデバイスが、その生体センサー(たとえば、指紋読取器、音声認識サブシステム、網膜スキャナなど)を使用して金融取引を許可するように構成される場合、生体センサーのアクセスおよび使用に関する条件をテストする特徴は、金融ソフトウェアにアクセスする観測された挙動がそのモバイルデバイスにおいて悪性であるか良性であるかを決定することに関連がある可能性が高い。たとえば、第1のモバイルデバイスにおける生体センサーのアクセスおよび使用は、ユーザが知ることまたは同意することなく、悪性のアプリケーションが金融取引を許可していることを示し得る。一方、その生体センサーを使用して金融取引を許可するように構成されていない第2のモバイルデバイスにおいては、これらのセンサーのアクセスおよび使用に関する条件をテストする特徴は、金融ソフトウェアにアクセスする観測された挙動が悪性であるか良性であるかを決定することに関連がある可能性が低い。すなわち、第1のデバイスおよび第2のデバイスは、それらの生体センサーを使用するためのそれらの構成を除いて、すべての側面において同一であり得る(すなわち、同じタイプ、モデル、オペレーティングシステム、ソフトウェアなどである)ので、両方のデバイスのための生体センサーのアクセスおよび使用に関する条件を評価する特徴を正確に特定する汎用的な挙動モデルを生成することは困難であろう。装備は同様であるが個別に構成可能な数十万(または数百万)のモバイルデバイスに対して、はるかに複雑な条件または特徴をテストする汎用的なモデルを生成することは、なお一層困難であろう。
【０１３５】
様々な態様は、モバイルデバイスの性能および/または電力利用レベルをしばしば経時的に劣化させる条件および/またはモバイルデバイス挙動を効率的に特定、分類、モデル化、防止、かつ/または修正するように互いとともに働くように、ネットワークサーバおよびモバイルデバイスを構成することによって、これらの制限を克服することができる。ネットワークサーバは、中央データベース(たとえば、「クラウド」)から様々な条件、特徴、挙動、および修正アクションに関する情報を受信し、この情報を使用して、モバイルデバイスによって1つまたは複数の簡潔な分類器モデルに迅速に変換され得るフォーマットまたは構造(たとえば、有限状態機械など)において挙動情報の大きいコーパスを記述する、完全な分類器モデル(すなわち、データモデルまたは挙動モデル)を生成するように構成され得る。一態様では、完全な分類器モデルは、挙動情報の大きいコーパスの有限状態機械の記述または表現であり得る。一態様では、有限状態機械は、各々が1つまたは複数の特徴をテストする複数のノード、ブーストされた決定木、または決定株としての表現に適した情報を含む場合がある。たとえば、有限状態機械は、モバイルデバイス挙動が良性であるか、そのモバイルデバイスの経時的な性能における劣化に寄与するかを決定することに関連のある特徴およびデータポイントのすべてまたは多くを一括して識別、記述、テスト、または評価する、ブーストされた決定株のファミリーとして表現され得る情報構造であり得る。次いで、ネットワークサーバは、完全な分類器モデル(すなわち、有限状態機械、および/またはブーストされた決定株のファミリーを含む、情報構造など)を、モバイルデバイスへ送ることができる。
【０１３６】
様々な態様では、モバイルデバイスプロセッサは、完全な分類器モデルを受信かつ使用して、デバイス固有および/もしくはデバイス状態固有の簡潔な分類器モデル、または様々なレベルの複雑さ(もしくは「簡潔さ」)の簡潔な分類器モデルのファミリーを生成するように、プロセッサ実行可能命令によって構成され得る。これを達成するために、モバイルデバイスプロセッサは、ネットワークサーバから受信された完全な分類器モデルに含まれるブーストされた決定木のロバストなファミリー(本明細書では「完全なブーストされた決定木の分類器モデル」)をプルーニングまたは選別して、数が減らされたブーストされた決定木を含み、かつ/または限られた数のテスト条件もしくは特徴を評価する、簡潔な分類器モデルを生成することができる。次いで、モバイルデバイスプロセッサは、このローカルに生成されたデバイス固有および/またはデバイス状態固有の分類器モデルを使用して、リアルタイムの挙動の監視動作および分析動作を実行し、望ましくないまたは性能を劣化させるモバイルデバイス挙動の根源または原因を特定することができる。
【０１３７】
簡潔な分類器モデルを生成するために修正され、選別され、拡張され、または別様に使用され得る、有限状態機械、決定ノード、決定木、または他の同様の情報構造として、挙動情報の大きいコーパスを記述または表現する完全な分類器モデルを生成することによって、様々な態様により、トレーニングデータにアクセスすることなく、またはネットワークサーバ、中央データベース、もしくはクラウドネットワーク/サーバとさらに通信することなく、モバイルデバイスが簡潔な分類器モデルを迅速かつ効率的に生成することが可能になる。これにより、モバイルデバイスのネットワークに対する依存性が著しく低減され、モバイルデバイスの性能および電力消費特性が向上する。
【０１３８】
さらに、アプリケーション固有およびデバイス固有の特徴を考慮するように、モバイルデバイス内でローカルに簡潔な分類器モデルを生成することによって、様々な態様により、望ましくないまたは性能を劣化させるモバイルデバイス挙動の根源または原因を特定するために最も重要である特徴または要因に対するその監視動作に、モバイルデバイスが集中することが可能になる。これにより、モバイルデバイスの応答性、性能、または電力消費特性において、大きい負の変化またはユーザが知覚できる変化を引き起こすことなく、モバイルデバイスが、望ましくないまたは性能を劣化させるモバイルデバイス挙動を特定し、それに対応することが可能になる。
【０１３９】
加えて、決定ルールと機械学習アルゴリズムとを、それがモバイルデバイスの様々なソフトウェアおよびハードウェア構成要素から受信する情報に適用して、ソフトウェアアプリケーションのための現在または将来の実行状態を推論、推定、予測、または決定するように構成される、状態推定および予測モジュール(すなわち、図2Aに示すアプリケーション実行状態決定モジュール206)をモバイルデバイスに装備することによって、様々な態様により、モバイルデバイスが、オペレーティングシステムまたはアプリケーションから取得され得る状態情報とは無関係であり、それよりも正確および詳細であるアプリケーション実行状態情報を生成かつ使用することが可能になる。この高度に正確、詳細、およびきめの細かい実行状態情報が、モバイルデバイスによってより有効な電力節約方式を実施するために、または、モバイルデバイスの挙動監視および分析システムによって最も関連のあるアプリケーション固有の簡潔な分類器モデルを選択するために使用され得る。これによって、モバイルデバイス挙動が良性であるか悪性であるかを、システムがよりよく予測することが可能になる。
【０１４０】
様々な態様が、様々なモバイルコンピューティングデバイス上に実装され得、それらの一例を、スマートフォン700の形で図7に示す。スマートフォン700は、タッチスクリーンコントローラ704および内部メモリ706に結合されたプロセッサ702を含み得る。プロセッサ702は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコアICであり得る。内部メモリ706は揮発性または不揮発性メモリであってよく、また、セキュアおよび/もしくは暗号化メモリであっても、または非セキュアおよび/もしくは非暗号化メモリであっても、あるいはそれらの任意の組合せであってもよい。タッチスクリーンコントローラ704およびプロセッサ702は、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどの、タッチスクリーンパネル712に結合される場合もある。
【０１４１】
スマートフォン700は、互いに結合され、かつ/またはプロセッサ702に結合された、送受信のための、1つまたは複数の無線信号トランシーバ708(たとえば、Peanut(登録商標)無線、Bluetooth(登録商標)無線、Zigbee(登録商標)無線、Wi-Fi無線、無線周波数無線)、およびアンテナ710を有する場合がある。トランシーバ708およびアンテナ710は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述した回路とともに使用され得る。スマートフォン700は、セルラーネットワークを介した通信を可能にし、プロセッサ702に結合されている、セルラーネットワークワイヤレスモデムチップ716を含み得る。スマートフォン700は通常、スピーカー714、および、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ718も含む。
【０１４２】
一般的なスマートフォン700はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化し、かつ受信された音のデータパケットを復号し、音を生成するためにスピーカーに与えられるアナログ信号を生成する、音の符号化/復号(CODEC)回路722を含む。また、プロセッサ702、ワイヤレストランシーバ705およびCODEC722のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含み得る。
【０１４３】
態様の方法の一部は、態様の方法を実行している間にモバイルデバイスプロセッサによってアクセスされ得る正常な動作挙動のデータベースを維持することなど、サーバにおいて発生する処理のいくつかによって、クライアントサーバアーキテクチャにおいて達成され得る。そのような態様は、図8に示すサーバ800のような、様々な市販のサーバデバイスのいずれかにおいて実装され得る。そのようなサーバ800は通常、揮発性メモリ802と、ディスクドライブ803のような大容量の不揮発性メモリとに結合された、プロセッサ801を含む。サーバ800はまた、プロセッサ801に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)、またはデジタル多用途ディスク(DVD)ディスクドライブ804を含み得る。サーバ800はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワークのような、ネットワーク805とのデータ接続を確立するための、プロセッサ801に結合されたネットワークアクセスポート806を含み得る。
【０１４４】
プロセッサ702、801は、以下で説明する様々な態様の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするように、複数のプロセッサ702が設けられ得る。一般的には、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ702、801にロードされる前に、内部メモリ706、802、803内に記憶され得る。プロセッサ702、801は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【０１４５】
「性能劣化」という用語は、本出願では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリー寿命、個人データの喪失、悪性の経済活動(たとえば、無許可のプレミアムSMSメッセージを送ること)、サービス拒否(DoS)、モバイルデバイスを乗っ取ることまたはスパイもしくはボットネット活動のために電話を利用することに関する動作など、多種多様な望ましくないモバイルデバイスの動作および特性を指すために使用される。
【０１４６】
概して、挙動ベクトルは、数値特徴の1次元アレイ、n次元アレイ、イベントの順序付きリスト、特徴ベクトル、1つまたは複数のオブジェクト、条件またはイベントの数値表現、状態機械などであり得る。一態様では、挙動ベクトルは、1つまたは複数の挙動を含み得る。様々な態様では、挙動は、数値、または数値を記憶する構造(たとえば、ベクトル、リスト、アレイなど)として表され得る。
【０１４７】
様々な態様の動作を遂行するためにプログラマブルプロセッサ上で実行するためのコンピュータプログラムコードすなわち「プログラムコード」は、C、C++、C#、Smalltalk、Java（登録商標）、JavaScript（登録商標）、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれ得る。本出願で使用される場合、コンピュータ可読記憶媒体に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードのような)機械語コードを指し得る。
【０１４８】
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが実行する場合)ユーザ空間内に編成され、(特権コードが実行する場合)カーネル空間内に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)で許諾される必要がある一方で、ユーザ空間において実行するコードがGPL許諾されなくてもよい、Android(登録商標)および他のGPL環境において特に重要である。本明細書で説明する様々なソフトウェア構成要素/モジュールは、明示的に別段の記述がない場合、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
【０１４９】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な態様のステップを提示された順序で実行しなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様におけるステップの順序は、いかなる順序で実行されてもよい。「したがって」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明を通して読者を導くために使用される。さらに、たとえば、冠詞「a」、「an」、または「the」を使用する、単数形での請求項の要素へのいかなる言及も、要素を単数形に限定するものとして解釈されるべきではない。
【０１５０】
本出願で使用する「構成要素」、「モジュール」、「システム」、「エンジン」、「ジェネレータ」、「マネージャ」、「スケジューラ」などの用語は、限定はしないが、特定の動作または機能を実行するように構成される、ハードウェア、ファームウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアなどのコンピュータ関連エンティティを含むものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例として、コンピューティングデバイス上で実行しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素は、プロセスおよび/もしくは実行スレッドの中に存在する場合があり、1つの構成要素は、1つのプロセッサもしくはコアに局在する場合があり、かつ/または2つ以上のプロセッサもしくはコアの間に分散する場合がある。加えて、これらの構成要素は、様々な命令および/またはデータ構造を記憶している様々な非一時的コンピュータ可読媒体から実行することができる。構成要素は、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信することができる。
【０１５１】
本明細書で開示する態様に関して説明する、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装することができる。ハードウェアおよびソフトウェアのこの互換性を明確に説明するために、上記では、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、それらの機能に関して概略的に説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【０１５２】
本明細書で開示する態様に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマルチプロセッサであり得るが、代替的に、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサとの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成としても実装され得る。代替的に、いくつかのステップまたは方法は、所与の機能に特有の回路によって実行され得る。
【０１５３】
1つまたは複数の例示的な態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体上または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示する方法またはアルゴリズムのステップは、非一時的コンピュータ可読またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュール内で具現化され得る。非一時的コンピュータ可読またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読またはプロセッサ可読媒体には、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体が含まれ得る。ディスク(disk)およびディスク(disc)は、本明細書で使用するときに、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生するが、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読記憶媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の、1つまたは任意の組合せ、またはそのセットとして存在し得る。
【０１５４】
開示した態様の上記の説明は、任意の当業者が本発明を作製または使用することができるように提供される。これらの態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義された一般的原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示された態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示された原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【０１５５】
100  SOC
101  デジタル信号プロセッサ(DSP)、異種プロセッサ、プロセッサ
102  モバイルデバイス
104  モデムプロセッサ、異種プロセッサ、プロセッサ
106  グラフィクスプロセッサ、異種プロセッサ、プロセッサ
108  アプリケーションプロセッサ、異種プロセッサ、プロセッサ
110  コプロセッサ、プロセッサ
112  メモリ要素
114  アナログ回路およびカスタム回路
116  システム構成要素およびリソース
118  クロック
120  電圧調整器
124  相互接続/バスモジュール
202  アプリケーション観測器モジュール、モジュール
204  アプリケーション挙動抽出器モジュール、モジュール
206  アプリケーション実行状態決定モジュール、モジュール
208  電力管理モジュール、モジュール
222  挙動観測器モジュール、モジュール
224  挙動分析器モジュール、モジュール
226  外部コンテキスト情報モジュール、モジュール
228  アクチュエータモジュール、モジュール
500  コンピューティングシステム
502  挙動検出器モジュール
504  データベースエンジンモジュール
506  セキュアバッファマネージャ
508  ルールマネージャ
510  システムヘルスモニタ
514  リングバッファ
516  フィルタルールモジュール
518  スロットリングルールモジュール
520  セキュアバッファ
700  スマートフォン
702、801  プロセッサ
704  タッチスクリーンコントローラ
705  ワイヤレストランシーバ
706  内部メモリ
708  無線信号トランシーバ、トランシーバ
710  アンテナ
712  タッチスクリーンパネル
714  スピーカー
716  セルラーネットワークワイヤレスモデムチップ
718  メニュー選択ボタンまたはロッカースイッチ
722  音の符号化/復号(CODEC)回路
800  サーバ
802  揮発性メモリ、内部メモリ
803  ディスクドライブ、内部メモリ
804  フロッピーディスクドライブ、コンパクトディスク(CD)、またはデジタル多用途ディスク(DVD)ディスクドライブ
805  ネットワーク
806  ネットワークアクセスポート
【図１】
0006345271.tif 000002
【図２Ａ】
0006345271.tif 000003
【図２Ｂ】
0006345271.tif 000004
【図３Ａ】
0006345271.tif 000005
【図３Ｂ】
0006345271.tif 000006
【図３Ｃ】
0006345271.tif 000007
【図３Ｄ】
0006345271.tif 000008
【図３Ｅ】
0006345271.tif 000009
【図４】
0006345271.tif 000010
【図５】
0006345271.tif 000011
【図６】
0006345271.tif 000012
【図７】
0006345271.tif 000013
【図８】
0006345271.tif 000014