(57)【要約】  コンピューティングデバイスは、ソフトウェアアプリケーションが良性であるのかそれとも非良性であるのかをより良好に決定するために、別の構成要素(たとえば、サーバ)とともに働くように構成され得る。このことは、サーバが、静的および/または動的な分析動作を実行し、ソフトウェアアプリケーションの正しいまたは予期される挙動の範囲を記述または特徴付ける挙動情報構造を生成し、挙動情報構造をコンピューティングデバイスへ送ることを介して達成され得る。コンピューティングデバイスは、受信された挙動情報構造を局所的に生成された挙動情報構造と比較して、ソフトウェアアプリケーションの観測された挙動が、ソフトウェアアプリケーションの予期される挙動と異なるかまたは予期される挙動から逸脱するかどうか、あるいは観測された挙動が予期される挙動の範囲内にあるかどうかを決定し得る。コンピューティングデバイスは、挙動情報構造が局所的挙動情報構造と整合しないとき、そのセキュリティ/精査のレベルを増大させ得る。
2018514848.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいて動作するソフトウェアアプリケーションの挙動を分析する方法であって、
前記ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、前記コンピューティングデバイスのプロセッサにおいてサーバコンピューティングデバイスから受信するステップと、
局所的挙動情報を収集するために、前記コンピューティングデバイス上での前記ソフトウェアアプリケーションの活動を監視するステップと、
比較結果を生成するために、前記局所的挙動情報および前記受信された挙動情報構造を比較するステップと、
前記ソフトウェアアプリケーションの観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるかどうかを決定するために、前記比較結果を使用するステップと
を備える方法。
【請求項２】
前記比較結果を生成するために前記局所的挙動情報および前記受信された挙動情報構造を比較するステップが、
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用するステップと、
前記比較結果を生成するために、前記生成された局所的挙動情報構造および前記受信された挙動情報構造を比較するステップと
を備える、請求項1に記載の方法。
【請求項３】
前記ソフトウェアアプリケーションの予期される挙動の前記範囲を特定する前記挙動情報構造を受信するステップが、
前記サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造を、前記コンピューティングデバイスの前記プロセッサにおいて受信するステップ
を備える、請求項1に記載の方法。
【請求項４】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記比較結果を前記サーバコンピューティングデバイスへ送るステップをさらに備える、請求項1に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させるステップ
をさらに備える、請求項1に記載の方法。
【請求項６】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用するステップをさらに備え、前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して前記ソフトウェアアプリケーションを評価するための前記精査レベルを増大させるステップが、
分析結果を生成するために、前記生成された局所的挙動情報構造をロバストな分類器モデルに適用するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記分析結果を使用するステップと
を備える、請求項5に記載の方法。
【請求項７】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用するステップと、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるという決定に応答して、分析結果を生成するために、前記生成された局所的挙動情報構造を簡潔な分類器モデルに適用するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記分析結果を使用するステップと
をさらに備える、請求項5に記載の方法。
【請求項８】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用するステップをさらに備え、前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して前記ソフトウェアアプリケーションを評価するための前記精査レベルを増大させるステップが、
アプリケーション固有の分類器モデルを生成するステップと、
前記生成された局所的挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用するステップと
を備える、請求項5に記載の方法。
【請求項９】
前記アプリケーション固有の分類器モデルを生成するステップが、
複数のテスト条件を含む完全な分類器モデルを受信するステップと、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定するステップと、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定するステップと、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成するステップと
を備える、請求項8に記載の方法。
【請求項１０】
コンピューティングデバイスであって、
動作を実行するようにプロセッサ実行可能命令を用いて構成されたプロセッサを備え、前記動作が、
前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、サーバコンピューティングデバイスから受信することと、
局所的挙動情報を収集するために、前記ソフトウェアアプリケーションの活動を監視することと、
比較結果を生成するために、前記局所的挙動情報および前記受信された挙動情報構造を比較することと、
前記ソフトウェアアプリケーションの観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるかどうかを決定するために、前記比較結果を使用することと
を備える、コンピューティングデバイス。
【請求項１１】
前記比較結果を生成するために前記局所的挙動情報および前記受信された挙動情報構造を比較することが、
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することと、
前記比較結果を生成するために、前記生成された局所的挙動情報構造および前記受信された挙動情報構造を比較することと
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項10に記載のコンピューティングデバイス。
【請求項１２】
前記ソフトウェアアプリケーションの予期される挙動の前記範囲を特定する前記挙動情報構造を受信することが、
前記サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造を受信すること
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項10に記載のコンピューティングデバイス。
【請求項１３】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記比較結果を前記サーバコンピューティングデバイスへ送ることをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項10に記載のコンピューティングデバイス。
【請求項１４】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させること
をさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項10に記載のコンピューティングデバイス。
【請求項１５】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成され、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して前記ソフトウェアアプリケーションを評価するための前記精査レベルを増大させることが、
分析結果を生成するために、前記生成された局所的挙動情報構造をロバストな分類器モデルに適用することと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記分析結果を使用することと
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項14に記載のコンピューティングデバイス。
【請求項１６】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することと、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるという決定に応答して、分析結果を生成するために、前記生成された局所的挙動情報構造を簡潔な分類器モデルに適用することと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記分析結果を使用することと
をさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項14に記載のコンピューティングデバイス。
【請求項１７】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成され、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して前記ソフトウェアアプリケーションを評価するための前記精査レベルを増大させることが、
アプリケーション固有の分類器モデルを生成することと、
前記生成された局所的挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用することと
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項14に記載のコンピューティングデバイス。
【請求項１８】
前記アプリケーション固有の分類器モデルを生成することが、
複数のテスト条件を含む完全な分類器モデルを受信することと、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定することと、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成することと
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項17に記載のコンピューティングデバイス。
【請求項１９】
コンピューティングデバイスのプロセッサに、前記コンピューティングデバイスにおいて動作するソフトウェアアプリケーションの挙動を分析するための動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
前記ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、サーバコンピューティングデバイスから受信することと、
局所的挙動情報を収集するために、前記ソフトウェアアプリケーションの活動を監視することと、
比較結果を生成するために、前記局所的挙動情報および前記受信された挙動情報構造を比較することと、
前記ソフトウェアアプリケーションの観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるかどうかを決定するために、前記比較結果を使用することと
を備える、非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記比較結果を生成するために前記局所的挙動情報および前記受信された挙動情報構造を比較することが、
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することと、
前記比較結果を生成するために、前記生成された局所的挙動情報構造および前記受信された挙動情報構造を比較することと
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２１】
前記ソフトウェアアプリケーションの予期される挙動の前記範囲を特定する前記挙動情報構造を受信することが、
前記サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造を、前記コンピューティングデバイスの前記プロセッサにおいて受信すること
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２２】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記比較結果を前記サーバコンピューティングデバイスへ送ることをさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させること
をさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項19に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することをさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成され、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して前記ソフトウェアアプリケーションを評価するための前記精査レベルを増大させることが、
分析結果を生成するために、前記生成された局所的挙動情報構造をロバストな分類器モデルに適用することと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記分析結果を使用することと
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することと、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるという決定に応答して、分析結果を生成するために、前記生成された局所的挙動情報構造を簡潔な分類器モデルに適用することと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記分析結果を使用することと
をさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用することをさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成され、
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して前記ソフトウェアアプリケーションを評価するための前記精査レベルを増大させることが、
アプリケーション固有の分類器モデルを生成することと、
前記生成された局所的挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用することと
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記アプリケーション固有の分類器モデルを生成することが、
複数のテスト条件を含む完全な分類器モデルを受信することと、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定することと、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成することと
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
コンピューティングデバイスであって、
前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、サーバコンピューティングデバイスから受信するための手段と、
局所的挙動情報を収集するために、前記ソフトウェアアプリケーションの活動を監視するための手段と、
比較結果を生成するために、前記局所的挙動情報および前記受信された挙動情報構造を比較するための手段と、
前記ソフトウェアアプリケーションの観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にあるかどうかを決定するために、前記比較結果を使用するための手段と
を備えるコンピューティングデバイス。
【請求項２９】
前記比較結果を生成するために前記局所的挙動情報および前記受信された挙動情報構造を比較するための手段が、
前記ソフトウェアアプリケーションの前記観測された挙動を特徴付ける局所的挙動情報構造を生成するために、前記局所的挙動情報を使用するための手段と、
前記比較結果を生成するために、前記生成された局所的挙動情報構造および前記受信された挙動情報構造を比較するための手段と
を備える、請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記ソフトウェアアプリケーションの前記観測された挙動が前記ソフトウェアアプリケーションの予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させるための手段
をさらに備える、請求項28に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、挙動および機械学習技法を使用して、そのデバイスの経時的な性能劣化に寄与し得るデバイス挙動を特定しそれに応答するための方法およびシステムに関し、より詳細には、ソフトウェアアプリケーションプログラムの予期される挙動の範囲を特徴付ける挙動情報構造を他の挙動情報構造と比較して、ソフトウェアアプリケーションプログラムの観測された挙動が、予期される挙動と異なるかまたは予期される挙動から逸脱するかどうかを決定するための方法およびシステムに関する。
【背景技術】
【０００２】
セルラー通信技術およびワイヤレス通信技術は、過去数年の間に爆発的な成長をとげている。ワイヤレスサービスプロバイダは現在、情報、リソース、および通信に対するかつてないレベルのアクセスをそれらのユーザに提供する、幅広い機能およびサービスを提供する。これらの強化と歩調を合わせるために、コンシューマ電子デバイス(たとえば、セルラーフォン、時計、ヘッドフォン、遠隔制御装置など)は、かつてないほど強力かつ複雑になり、今や一般的に、強力なプロセッサ、大規模メモリ、およびそれらのデバイス上で、複雑かつ強力なソフトウェアアプリケーションを実行することを可能にする他のリソースを含む。これらのデバイスはまた、それらのユーザがアプリケーションダウンロードサービス(たとえば、Apple(登録商標) App Store、Windows(登録商標) Store、Google(登録商標) playなど)またはインターネットから、様々なソフトウェアアプリケーションをダウンロードし実行することを可能にする。
【０００３】
これらおよび他の改善により、ますます多くのモバイルデバイスおよびワイヤレスデバイスのユーザは現在、彼らのデバイスを使用して、機密情報(たとえば、クレジットカード情報、連絡先など)を記憶し、かつ/またはセキュリティが重要であるタスクを達成する。たとえば、モバイルデバイスユーザは、しばしば、彼らのデバイスを使用して、商品を購入し、機密通信を送信および受信し、請求を支払い、預金口座を管理し、他の機密取引を行う。これらの動向により、マルウェア攻撃およびサイバー攻撃にとって、モバイルデバイスは急速に次の開拓分野になりつつある。したがって、モバイルデバイスおよびワイヤレスデバイスなどのリソース制約のあるコンピューティングデバイスをより良好に保護する、改善された新たなセキュリティソリューションが消費者に有益である。
【発明の概要】
【課題を解決するための手段】
【０００４】
様々な態様は、ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、コンピューティングデバイスのプロセッサにおいてサーバコンピューティングデバイスから受信することと、局所的挙動情報を収集するために、ソフトウェアアプリケーションの活動を監視することと、比較結果を生成するために、局所的挙動情報および受信された挙動情報構造を比較することと、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるかどうかを決定するために、比較結果を使用することとを含む、コンピューティングデバイスにおいて動作するソフトウェアアプリケーションの挙動を分析する方法を含む。一態様では、比較結果を生成するために局所的挙動情報および受信された挙動情報構造を比較することは、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、収集された挙動情報を使用することと、比較結果を生成するために、生成された局所的挙動情報構造および受信された挙動情報構造を比較することとを含み得る。
【０００５】
さらなる態様では、ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を受信することは、サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造を、コンピューティングデバイスのプロセッサにおいて受信することを含み得る。さらなる態様では、方法は、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、比較結果をサーバコンピューティングデバイスへ送ることを含み得る。さらなる態様では、方法は、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、ソフトウェアアプリケーションを評価するための精査レベルを増大させることを含み得る。
【０００６】
さらなる態様では、方法は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することを含み得、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させることは、分析結果を生成するために、生成された局所的挙動情報構造をロバストな分類器モデルに適用することと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用することとを含む。さらなる態様では、方法は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することと、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるという決定に応答して、分析結果を生成するために、生成された局所的挙動情報構造を簡潔な分類器モデルに適用することと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用することとを含み得る。
【０００７】
さらなる態様では、方法は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することを含み得、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させることは、アプリケーション固有の分類器モデルを生成することと、生成された局所的挙動情報構造を生成されたアプリケーション固有の分類器モデルに適用することとを含む。さらなる態様では、アプリケーション固有の分類器モデルを生成することは、複数のテスト条件を含む完全な分類器モデルを受信することと、ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、特定されたデバイス特徴を評価する、複数のテスト条件の中のテスト条件を特定することと、特定されたテスト条件を含むようにアプリケーション固有の分類器モデルを生成することとを含む。
【０００８】
さらなる態様は、コンピューティングデバイス上で動作するソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、サーバコンピューティングデバイスから受信することと、局所的挙動情報を収集するために、ソフトウェアアプリケーションの活動を監視することと、比較結果を生成するために、局所的挙動情報および受信された挙動情報構造を比較することと、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるかどうかを決定するために、比較結果を使用することとを含む動作を実行するようにプロセッサ実行可能命令を用いて構成されたプロセッサを有するコンピューティングデバイスを含み得る。一態様では、プロセッサは、比較結果を生成するために局所的挙動情報および受信された挙動情報構造を比較することが、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、収集された挙動情報を使用することと、比較結果を生成するために、生成された局所的挙動情報構造および受信された挙動情報構造を比較することとを含むような動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。
【０００９】
一態様では、プロセッサは、ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を受信することが、サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造を受信することを含み得るような動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。さらなる態様では、プロセッサは、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、比較結果をサーバコンピューティングデバイスへ送ることをさらに含む動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。さらなる態様では、プロセッサは、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、ソフトウェアアプリケーションを評価するための精査レベルを増大させることをさらに含む動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。
【００１０】
さらなる態様では、プロセッサは、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することをさらに含む動作を実行するように、プロセッサ実行可能命令を用いて構成され得、プロセッサは、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させることが、分析結果を生成するために、生成された局所的挙動情報構造をロバストな分類器モデルに適用することと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用することとを含むような動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。さらなる態様では、プロセッサは、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することと、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるという決定に応答して、分析結果を生成するために、生成された局所的挙動情報構造を簡潔な分類器モデルに適用することと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用することとをさらに含む動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。
【００１１】
さらなる態様では、プロセッサは、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することをさらに含む動作を実行するように、プロセッサ実行可能命令を用いて構成され得、プロセッサは、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させることが、アプリケーション固有の分類器モデルを生成することと、生成された局所的挙動情報構造を生成されたアプリケーション固有の分類器モデルに適用することとを含むような動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。さらなる態様では、プロセッサは、アプリケーション固有の分類器モデルを生成することが、複数のテスト条件を含む完全な分類器モデルを受信することと、ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、特定されたデバイス特徴を評価する、複数のテスト条件の中のテスト条件を特定することと、特定されたテスト条件を含むようにアプリケーション固有の分類器モデルを生成することとを含むような動作を実行するように、プロセッサ実行可能命令を用いて構成され得る。
【００１２】
さらなる態様は、コンピューティングデバイスのプロセッサに、コンピューティングデバイスにおいて動作するソフトウェアアプリケーションの挙動を分析するための動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体を含み、動作は、ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、サーバコンピューティングデバイスから受信することと、局所的挙動情報を収集するために、ソフトウェアアプリケーションの活動を監視することと、比較結果を生成するために、リアルタイムの局所的挙動情報および受信された挙動情報構造を比較することと、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるかどうかを決定するために、比較結果を使用することとを含む。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、比較結果を生成するためにリアルタイムの局所的挙動情報および受信された挙動情報構造を比較することが、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、収集された挙動情報を使用することと、比較結果を生成するために、生成された局所的挙動情報構造および受信された挙動情報構造を比較することとを含むような動作をプロセッサに実行させるように構成され得る。
【００１３】
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を受信することが、サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造を、コンピューティングデバイスのプロセッサにおいて受信することを含み得るような動作を、プロセッサに実行させるように構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、比較結果をサーバコンピューティングデバイスへ送ることをさらに含む動作を、プロセッサに実行させるように構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、ソフトウェアアプリケーションを評価するための精査レベルを増大させることをさらに含む動作を、プロセッサに実行させるように構成され得る。
【００１４】
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することをさらに含む動作を、プロセッサに実行させるように構成され得、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させることが、分析結果を生成するために、生成された局所的挙動情報構造をロバストな分類器モデルに適用することと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用することとを含むような動作を、プロセッサに実行させるように構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することと、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるという決定に応答して、分析結果を生成するために、生成された局所的挙動情報構造を簡潔な分類器モデルに適用することと、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用することとをさらに含む動作を、プロセッサに実行させるように構成され得る。
【００１５】
一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、局所的挙動情報を使用することをさらに含む動作を、プロセッサに実行させるように構成され得、記憶されたプロセッサ実行可能ソフトウェア命令は、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させることが、アプリケーション固有の分類器モデルを生成することと、生成された局所的挙動情報構造を生成されたアプリケーション固有の分類器モデルに適用することとを含むような動作を、プロセッサに実行させるように構成され得る。一態様では、記憶されたプロセッサ実行可能ソフトウェア命令は、アプリケーション固有の分類器モデルを生成することが、複数のテスト条件を含む完全な分類器モデルを受信することと、ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、特定されたデバイス特徴を評価する、複数のテスト条件の中のテスト条件を特定することと、特定されたテスト条件を含むようにアプリケーション固有の分類器モデルを生成することとを含むような動作を、プロセッサに実行させるように構成され得る。
【００１６】
さらなる態様は、コンピューティングデバイス上で動作するソフトウェアアプリケーションの予期される挙動の範囲を特定する挙動情報構造を、サーバコンピューティングデバイスから受信するための手段と、局所的挙動情報を収集するために、ソフトウェアアプリケーションの活動を監視するための手段と、比較結果を生成するために、リアルタイムの局所的挙動情報および受信された挙動情報構造を比較するための手段と、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるかどうかを決定するために、比較結果を使用するための手段とを含むコンピューティングデバイスを含む。一態様では、比較結果を生成するためにリアルタイムの局所的挙動情報および受信された挙動情報構造を比較するための手段は、ソフトウェアアプリケーションの観測された挙動を特徴付ける局所的挙動情報構造を生成するために、収集された挙動情報を使用するための手段と、比較結果を生成するために、生成された局所的挙動情報構造および受信された挙動情報構造を比較するための手段とを含み得る。
【００１７】
一態様では、コンピューティングデバイスは、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答して、ソフトウェアアプリケーションを評価するための精査レベルを増大させるための手段を含む。さらなる態様では、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させるための手段は、分析結果を生成するために、生成された局所的挙動情報構造をロバストな分類器モデルに適用するための手段と、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用するための手段とを含む。一態様では、コンピューティングデバイスは、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にあるという決定に応答して、分析結果を生成するために、生成された局所的挙動情報構造を簡潔な分類器モデルに適用するための手段と、ソフトウェアアプリケーションが非良性であるかどうかを決定するために、分析結果を使用するための手段とを含む。
【００１８】
さらなる態様では、ソフトウェアアプリケーションの観測された挙動がソフトウェアアプリケーションの予期される挙動の範囲内にないという決定に応答してソフトウェアアプリケーションを評価するための精査レベルを増大させるための手段は、アプリケーション固有の分類器モデルを生成するための手段と、生成された局所的挙動情報構造を生成されたアプリケーション固有の分類器モデルに適用するための手段とを含む。さらなる態様では、アプリケーション固有の分類器モデルを生成するための手段は、複数のテスト条件を含む完全な分類器モデルを受信するための手段と、ソフトウェアアプリケーションによって使用されるデバイス特徴を特定するための手段と、特定されたデバイス特徴を評価する、複数のテスト条件の中のテスト条件を特定するための手段と、特定されたテスト条件を含むようにアプリケーション固有の分類器モデルを生成するための手段とを含む。
【００１９】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な実施形態を示し、上記の一般的な説明および以下の発明を実施するための形態とともに、本発明の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００２０】
【図１Ａ】様々な実施形態とともに使用するのに好適な、例示的な電気通信システムのネットワーク構成要素を示す通信システムブロック図である。
【図１Ｂ】実施形態コンピューティングデバイスの中に含まれ得、かつ/または様々な実施形態を実施するために使用され得る、例示的なシステムオンチップのアーキテクチャ図である。
【図２】挙動分析および機械学習技法を使用して良性または非良性として挙動を分類するように構成された実施形態コンピューティングデバイスにおける、例示的な論理構成要素および情報フローを示すブロック図である。
【図３】様々な実施形態による、ソフトウェアアプリケーションを分析する方法を示すプロセスフロー図である。
【図４】様々な実施形態による、ソフトウェアアプリケーションを分析する方法を示すプロセスフロー図である。
【図５】様々な実施形態による、デバイス挙動を分類する際に使用するのに好適な分類器モデルを生成する方法を示すプロセスフロー図である。
【図６】一実施形態による、挙動監視および分析動作を実行するための方法を示すプロセスフロー図である。
【図７】様々な実施形態とともに使用するのに好適なモバイルデバイスの構成要素ブロック図である。
【図８】様々な実施形態とともに使用するのに好適なサーバデバイスの構成要素ブロック図である。
【発明を実施するための形態】
【００２１】
添付の図面を参照しながら、様々な実施形態が詳細に説明される。可能な場合はいつでも、同じまた同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。具体的な例および実装形態への言及は説明のためであり、本発明の範囲または特許請求の範囲を限定するものではない。
【００２２】
概して、様々な実施形態は、コンピューティングデバイスの性能および/または電力利用レベルを劣化させ得る条件および/またはデバイス挙動を効率的に特定、分類、モデル化、防止、および/または修正するために、サーバ上および他のコンピューティングデバイス(たとえば、モバイルデバイスまたは他のリソース制約のあるコンピューティングデバイス)上で実施され得る方法を含む。いくつかの実施形態に従って構成されたサーバは、クラウドネットワークの中にありかつ/またはアプリケーションダウンロードサービス(たとえば、Apple(登録商標) App Store、Windows(登録商標) Store、Google(登録商標) playなど)に関連するサーバであってよい。そのような実施形態サーバは、ソフトウェアアプリケーションプログラムが良性であるのかそれとも非良性であるのか(たとえば、マルウェアなど)を決定するために、コンピューティングデバイスの正常な挙動をエミュレートし、かつ/または静的および/もしくは動的な分析動作を実行するように構成され得る。サーバは、ソフトウェアアプリケーションプログラムが非良性であるという決定に応答して、アプリケーションプログラムを隔離し得るか、または他の適切な方策を採り得る。たとえば、サーバは、ソフトウェアアプリケーションがマルウェアであることを静的および/または動的な分析の結果が示すとき、コンピューティングデバイスがソフトウェアアプリケーションをダウンロードすることを防止してよい。
【００２３】
ソフトウェアアプリケーションプログラムが良性である(たとえば、アプリケーションがマルウェアでないなど)という決定に応答して、サーバは、エミュレーション結果および/または分析結果(たとえば、静的および/または動的な分析動作を実行することから生成される結果)を使用して、アプリケーションプログラムの正しいまたは予期される挙動の範囲を、1つまたは複数のデータ構造で(たとえば、数字の列などの形態で)簡潔に記述するかまたは特徴付ける挙動情報構造(たとえば、挙動ベクトル、ベクトルリストなど)を生成し得る。別の言い方をすれば、サーバは、サーバコンピューティングデバイスにおいて実行される静的および動的な分析動作から導出された情報を含むベクトルデータ構造(または、ベクトルリストなど)を生成し得る。サーバは、生成された挙動情報構造(たとえば、ベクトルまたはベクトルリストなど)を、ソフトウェアアプリケーションをダウンロードし、含み、または使用するコンピューティングデバイスへ送り得る。たとえば、サーバは、両方がアプリケーションダウンロードサービスから同時にダウンロードされるように、挙動情報構造をソフトウェアアプリケーションプログラムとバンドルし得る。サーバはまた、前にソフトウェアアプリケーションプログラムをダウンロードしたコンピューティングデバイスを特定し得、アプリケーションがインストールされ、更新され、起動されるときなどに、特定されたコンピューティングデバイスへ挙動情報構造を送り得る。
【００２４】
クライアントコンピューティングデバイス(たとえば、モバイルデバイスまたは他のリソース制約のあるコンピューティングデバイス)は、挙動分析および機械学習技法を使用して非良性の挙動を特定、防止、および/または修正するように構成される挙動監視セキュリティシステムを装備し得る。挙動監視セキュリティシステムは、デバイス挙動を監視し、挙動情報構造を生成し、挙動情報構造を分類器モデルに適用して挙動分析結果を生成し、挙動分析結果を使用してソフトウェアアプリケーションまたはデバイスの挙動が非良性であるかどうかを決定するように構成され得る。
【００２５】
加えて、挙動監視セキュリティシステムは、ソフトウェアアプリケーションプログラムの予期される挙動の範囲を特徴付ける挙動情報構造(たとえば、ベクトル、ベクトルリスト、または他の情報構造など)をサーバから受信し、受信された挙動情報構造をコンピューティングデバイスにおける挙動抽出器モジュールによって生成される挙動情報構造と比較して、ソフトウェアアプリケーションプログラムの観測された挙動が、予期される挙動と異なるかまたは予期される挙動から逸脱するかどうかを決定するように構成され得る。たとえば、コンピューティングデバイスは、予期される挙動の範囲を特定するリストをサーバから受信し得、局所的に生成された挙動情報構造(または、それが特徴付ける挙動)が、受信されたリストの中に含まれるかどうかを決定し得る。さらなる例として、ソフトウェアアプリケーションプログラム(すなわち、アプリ)がアプリケーションダウンロードサービスに提供されるとき、それらは適切な挙動を保証するためにテストされ、そのようなテストは良好な挙動モデルを提供し得る。ユーザがソフトウェアアプリケーションプログラムをダウンロードした後、後でクライアントデバイス上で実行するときに、マルウェアがそれらのソフトウェアアプリケーションプログラムの挙動に影響を及ぼすことがある。このことに対処するために、コンピューティングデバイスは、テストされた正しいアプリケーション挙動情報を受信し得、その情報をソフトウェアアプリケーションプログラムが実際に実行しているときにコンピューティングデバイスにおいて収集される挙動情報と比較して、観測された挙動が予想外であるかどうかを決定し得る。
【００２６】
観測された挙動が予想外であるか、または局所的に生成された挙動情報構造が、受信されたリストの中に含まれないか、もしくは受信された挙動情報構造がその対応する局所的挙動情報構造と整合しないという決定に応答して(すなわち、ソフトウェアアプリケーションの観測された挙動が予期される挙動と異なるかまたは予期される挙動から逸脱することを比較結果が示すとき)、コンピューティングデバイスは、そのセキュリティまたは精査のレベルを増大させ得る。コンピューティングデバイスはまた、その分析の結果をサーバへ送り得、サーバは、それがマルウェアであるかどうかを決定するために、かつ/あるいはソフトウェアアプリケーションの正常なまたは予期される挙動の範囲をより良好に決定するために、これらの結果を受信および使用してソフトウェアアプリケーションをさらに分析し得る。
【００２７】
したがって、様々な実施形態は、特定のアプリケーションを実行するときのコンピューティングデバイスの正常な挙動を(静的および動的な分析技法を介して)エミュレートし、そのアプリケーションを実行するときにコンピューティングデバイスが示すべき予期される挙動の範囲を(たとえば、挙動情報構造、ベクトルリストなどを介して)コンピューティングデバイスに提供するように構成される、サーバを含み得る。本実施形態はまた、受信された予期される挙動範囲(たとえば、挙動情報構造、ベクトル、リストなどを介して特定される挙動)を、ソフトウェアアプリケーションを実行するときのそれ自体の挙動と比較して、観測された挙動と予期される挙動との間に逸脱があるかどうかを決定するように構成される、クライアントコンピューティングデバイスを含み得る。クライアントコンピューティングデバイスは、そのような逸脱を示すソフトウェアアプリケーションを疑わしいとしてマークし得、その動作をこれらのソフトウェアアプリケーションを分析するための追加のまたはもっと詳細な情報を収集することに集中させ得る。
【００２８】
多くの現代のコンピューティングは、比較的限定された処理リソース、メモリリソース、およびエネルギーリソースしか有しない、リソース制約のあるシステムである。たとえば、モバイルデバイスは、性能および電力利用レベルの経時的な劣化に寄与し得る多くの特徴または要因を含む、複雑かつリソース制約のあるコンピューティングデバイスである。性能劣化に寄与し得る要因の例は、不十分に設計されたソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、およびバックグラウンドプロセスを含む。これらの要因の数、多様性、および複雑さにより、これらの複雑でありながらリソース制約のあるシステムの性能および/または電力利用レベルを劣化させ得る、様々な構成要素、挙動、プロセス、動作、条件、状態、または特徴(または、それらの組合せ)のすべてを評価することは、実現可能ではないことが多い。したがって、ユーザ、オペレーティングシステム、またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)が、そのような問題の根源を正確かつ効率的に特定することは困難である。結果として、モバイルデバイスのユーザは現在、モバイルデバイスの性能および電力利用レベルの経時的な劣化を防止するための、または経年劣化したモバイルデバイスをその元の性能および電力利用レベルに回復させるための措置を、ほとんど有しない。
【００２９】
本出願で説明する様々な実施形態は、モバイルデバイスなどのリソース制約のあるコンピューティングデバイスにおいて使用するのに特に好適であり、というのもそれらは挙動情報の極めて大きいコーパスを評価することを必要とせず、コンピューティングデバイスのデバイス固有またはアプリケーション固有の特徴を考慮するための分類器/挙動モデルを動的に生成し、分類器/挙動モデルによってテスト/評価された特徴を知的に優先させ、個々のアプリケーションプログラムまたはプロセスを評価することに限定されず、コンピューティングデバイスによって監視されるべき要因または挙動を知的に特定し、監視された挙動を正確かつ効率的に分類し、かつ/あるいは計算量的に集約したプロセスの実行を必要としないからである。これらのすべての原因に対して、リソース制約のあるコンピューティングデバイスにおいて、デバイスの応答性、性能、または電力消費の特性に重大な悪影響および/またはユーザが知覚できる影響を有することなく、様々な実施形態が実施または実行され得る。
【００３０】
たとえば、現代のモバイルデバイスは、高度に構成可能かつ複雑なシステムである。したがって、特定のデバイス挙動が良性であるのかそれとも良性でないのか(たとえば、悪意があるまたは性能を劣化させる)を決定するために最も重要である要因または特徴は、各モバイルデバイスにおいて異なり得る。さらに、要因/特徴の異なる組合せは、特定の挙動が良性であるのかそれとも良性でないのかをデバイスが迅速かつ効率的に決定するために、各モバイルデバイスにおける監視および/または分析を必要とし得る。しかし、監視および分析を必要とする要因/特徴の厳密な組合せ、ならびに各特徴または特徴の組合せの相対的な優先順位または重要性は、しばしば、挙動が監視または分析されるべき特定のコンピューティングデバイスから取得されたデバイス固有の情報を使用してのみ決定され得る。これらおよび他の理由のために、それらが使用される特定のデバイス以外のいかなるコンピューティングデバイスにおいて生成された分類器モデルも、その特定のデバイスにおけるソフトウェアアプリケーションまたはデバイス挙動を分類することに対して最も重要である、要因/特徴の厳密な組合せを特定する情報を含むことができない。すなわち、モデルが使用される特定のコンピューティングデバイスにおいて分類器モデルを生成することによって、様々な実施形態は、ソフトウェアアプリケーション、プロセス、活動、またはデバイス挙動が良性であるのかそれとも非良性であるのかを決定するために、最も重要である要因/特徴をより良好に特定し優先させる改善されたモデルを生成する。
【００３１】
様々な実施形態は、そのセキュリティ、性能、および電力消費特性を改善することによってコンピューティングデバイスの作用を改善する。たとえば、検出された挙動を予期される挙動の範囲と比較してアプリケーションが疑わしいかどうかを決定することによって(挙動ベクトルを分類器モデルに適用するのではなく)、様々な実施形態は、コンピューティングデバイスがロバストまたは軽量な分析動作を実行すべきかどうかを知的に決定することを可能にする。このことは、デバイスが見せかけの動作を実行するのを控えることを可能にすることによって、かつ/またはデバイスがその動作を最も疑わしい挙動を分析することに集中させることを可能にすることによって、デバイスの性能および電力消費特性を改善する。コンピューティングデバイスの機能、機能性、および/または作用に対する追加の改善は、下で提供される実施形態の詳細な説明から明らかになろう。
【００３２】
「例示的」という単語は、本明細書では、「例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書で説明するいかなる実装形態も、他の実装形態よりも好ましいか、または有利であると必ずしも解釈されるべきでない。
【００３３】
「良性でない」または「非良性」という用語は、本明細書では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリー寿命、個人データの損失、悪意のある経済活動(たとえば、無許可のプレミアムSMSメッセージを送ること)、サービス拒否(DoS:denial of service)、不十分に書かれたまたは設計されたソフトウェアアプリケーション、悪意のあるソフトウェア、マルウェア、ウイルス、断片化されたメモリ、スパイまたはボットネット活動のためにデバイスを乗っ取ることまたはデバイスを利用することに関する操作などを引き起こすものなどの、コンピューティングデバイスの性能を経時的に劣化させ得る様々な挙動、活動、および条件のいずれかを指すために互換的に使用される。
【００３４】
「ワイヤレスデバイス」、「モバイルデバイス」、および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および性能が重要であるメモリ、プログラマブルプロセッサを含む類似の電子デバイスを含む、様々なコンピューティングデバイスのいずれかを指すために本明細書で総称的かつ互換的に使用される。様々な実施形態は、リソース制約のあるシステムであるモバイルコンピューティングデバイスに対して特に有用であるが、これらの実施形態は、通常、プロセッサを含みソフトウェアアプリケーションを実行する、任意のコンピューティングデバイスにおいて有用である。
【００３５】
モバイルコンピューティングデバイスは、機械学習および/または挙動分析技法を使用して、しばしば、モバイルデバイスの性能および/または電力利用レベルを経時的に劣化させる条件、要因、および/またはデバイス挙動を知的かつ効率的に特定、防止、かつ/もしくは修正するように構成される包括的な挙動監視および分析システムなどの、挙動監視セキュリティシステムを装備し得る。
【００３６】
挙動監視および分析システムは、観測器プロセス、デーモン、モジュール、またはサブシステム(本明細書では、「モジュール」と総称される)、挙動抽出器モジュール、および分析器モジュールを含み得る。観測器モジュールは、様々なアプリケーションプログラミングインターフェース(API)、レジスタ、カウンタ、またはコンピューティングデバイスシステムの様々なレベルにおける他の構成要素(本明細書では、総称して「計装された構成要素」)を計装および調整するように構成され得る。観測器モジュールは、計装された構成要素から挙動情報を収集することによって、コンピューティングデバイスの活動を繰り返し連続的に(または、略連続的に)監視し得る。一実施形態では、このことは、コンピューティングデバイスのメモリの中に記憶されたAPIログファイルから情報を読み取ることによって達成され得る。
【００３７】
観測器モジュールは、収集された挙動情報を挙動抽出器モジュールへ(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信し得、挙動抽出器モジュールは、収集された挙動情報を使用して、モバイルデバイスの特定のソフトウェアアプリケーション、モジュール、構成要素、タスク、またはプロセスに関連する観測された挙動のうちの多くまたはすべてをそれぞれが表し、または特徴付ける、挙動情報構造を生成し得る。各挙動情報構造は、1つまたは複数の「挙動特徴」をカプセル化し得る。各挙動特徴は、観測された挙動のすべてまたは一部分を表す無名数であり得る。加えて、各挙動特徴は、可能な値の範囲、それらの値に対して実行され得る動作、値の意味などを特定するデータタイプに関連付けられ得る。データタイプは、特徴(または特徴値)がどのように測定され、分析され、重み付けられ、または使用されるべきかを決定するために使用され得る情報を含み得る。
【００３８】
挙動抽出器モジュールは、生成された挙動情報構造を分析器モジュールに(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信し得る。分析器モジュールは、挙動情報構造を分類器モデルに適用して分析結果を生成し得、分析結果を使用してソフトウェアアプリケーションまたはデバイス挙動が良性であるのかそれとも非良性であるのか(たとえば、悪意がある、不十分に書かれている、性能を劣化させるなど)を決定し得る。
【００３９】
分類器モデルは、デバイスの挙動の特定の特徴または具現を評価するためにコンピューティングデバイス(または、コンピューティングデバイスの中のデバイスプロセッサ)によって使用され得る、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リスト、決定ツリー、決定ノードなど)を含む挙動モデルであり得る。分類器モデルはまた、コンピューティングデバイスにおけるいくつかの特徴、要因、データポイント、エントリ、API、状態、条件、挙動、ソフトウェアアプリケーション、プロセス、動作、構成要素など(本明細書では、「特徴」と総称される)を監視および/または分析するための決定基準を含み得る。
【００４０】
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとして類別され得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含み得る大きいトレーニングデータセットの関数として生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定のモバイルデバイス挙動が良性でないかどうかを決定することに最も関連がある特徴/エントリに対するテストを含むかまたは優先させる縮小されたデータセットから生成される、より集中したデータモデルであり得る。局所的に生成される簡潔な分類器モデルは、コンピューティングデバイスにおいて生成される簡潔な分類器モデルである。一例として、コンピューティングデバイスは、ネットワークサーバから完全な分類器モデルを受信し、完全な分類器に基づいてコンピューティングデバイスの中で簡潔な分類器モデルを生成し、局所的に生成された簡潔な分類器モデルを使用してデバイスの挙動を良性または非良性(すなわち、悪意がある、性能を劣化させるなど)のいずれかであるものとして分類するように構成され得る。
【００４１】
分析器モジュールは、デバイス挙動が疑わしいという決定に応答して(すなわち、分析動作の結果が挙動を良性または非良性であるものとして分類するのに十分でないという決定に応答して)観測器モジュールに通知するように構成され得る。それに応答して、観測器モジュールは、その観測の粒度(すなわち、コンピューティングデバイスの特徴が監視される際の詳細さのレベル)を調整し得、かつ/または分析器モジュールから受信された情報(たとえば、リアルタイム分析動作の結果)に基づいて、観測された要因/挙動を変更し得、新たなまたは追加の挙動情報を生成または収集し得、さらなる分析のために新たな/追加の情報を分析器モジュールに送り得る。観測器モジュールと分析器モジュールとの間のそのようなフィードバック通信は、挙動が良性または非良性のいずれかであるものとして分類されるまで、処理またはバッテリー消費のしきい値に到達するまで、あるいはコンピューティングデバイスの挙動の疑わしいかまたは性能を劣化させる根源が観測粒度のさらなる増大から特定され得ないとコンピューティングデバイスが決定するまで、コンピューティングデバイス(または、そのデバイスプロセッサ)が、観測の粒度を再帰的に増大させること(すなわち、もっと微細またはもっと詳細に観測すること)、または観測される特徴/挙動を変更することを可能にする。そのようなフィードバック通信はまた、コンピューティングデバイスが、コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースを過剰に消費することなく、コンピューティングデバイスにおいて局所的に分類器モデルを調整または変更することを可能にする。
【００４２】
上述の挙動監視および分析システムは、概して、極めて効果的であり、コンピューティングデバイスが、その処理リソース、メモリリソース、またはエネルギーリソースを過剰に消費することなく、性能を限定する望ましくない動作条件を特定しそれに反応することを可能にする。このことは、比較的限定された処理リソース、メモリリソース、およびエネルギーリソースしか有しないモバイルコンピューティングデバイスなどの、複雑かつリソース制約のあるシステムにおいて特に有用である。
【００４３】
モバイルコンピューティングデバイスでは、不十分に書かれたまたは設計されたソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、バックグラウンド処理などを含む、そのようなデバイスの性能および電力利用レベルの経時的な劣化に寄与し得る多種多様な要因がある。これらの要因の数、多様性、および複雑さにより、現代のモバイルコンピューティングデバイスの複雑ではあるがリソース制約のあるシステムの性能および/または電力利用レベルの劣化に寄与し得る要因のすべてを評価することは、しばしば、実現不可能である。したがって、ユーザ、オペレーティングシステム、および/またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)が、そのような問題の根源を正確かつ効率的に特定することは困難である。これらの事実に鑑みてより良い性能をもたらすために、モバイルデバイスは、その処理リソース、メモリリソース、またはエネルギーリソースを過剰に消費することなく、特定のモバイルデバイスの挙動、条件、サブシステム、ソフトウェアアプリケーション、またはプロセスが良性であるのかそれとも良性でないのかを迅速に決定し得るように、上記で説明した挙動監視および分析システムを装備し得る。
【００４４】
上記で説明した挙動監視および分析システムは、概して、デバイスの非良性の挙動、セキュリティ、性能、および電力消費特性を特定するのに極めて効果的であるが、ロバストな分析を必要とする挙動を迅速かつ知的に特定するようにシステムを構成することによってさらに改善され得る。ソフトウェアアプリケーションの正しい、正常な、または予期される挙動の範囲を特定する情報をネットワークサーバから受信および使用するようにコンピューティングデバイスを構成することによって、様々な実施形態は、コンピューティングデバイスが、ロバストな分析を必要とする挙動を迅速かつ知的に特定することを可能にし、それによって、デバイスのセキュリティ、性能、および電力消費特性をさらに改善する。
【００４５】
一実施形態では、サーバコンピューティングデバイスは、静的な分析動作を実行して静的な分析結果を生成し、静的な分析結果を使用してソフトウェアアプリケーションに対して予期される挙動の範囲を決定し、予期される挙動の範囲を特定する情報構造(たとえば、ベクトルまたはベクトルリスト)を生成し、生成された情報構造を挙動監視および分析システムを装備したクライアントコンピューティングデバイスへ送るように構成され得る。様々な実施形態では、静的な分析動作は、コードパスを特定するためにバイトコード(たとえば、アプリケーションダウンロードサービスにアップロードされたソフトウェアアプリケーションのコード)を分析することと、(たとえば、それが悪意があるかどうかを決定するなどのために)ソフトウェアアプリケーションの意図を評価することと、ソフトウェアアプリケーションの可能な動作または挙動のすべてまたは多くを特定するための他の類似の動作を実行することとを含み得る。
【００４６】
一実施形態では、サーバコンピューティングデバイスは、動的な分析動作を実行して動的な分析結果を生成し、動的な分析結果を使用してソフトウェアアプリケーションに対して予期される挙動の範囲を決定し、予期される挙動の範囲を特定する情報構造(たとえば、ベクトルまたはベクトルリスト)を生成し、生成された情報構造を挙動監視および分析システムを装備したクライアントコンピューティングデバイスへ送るように構成され得る。様々な実施形態では、動的な分析動作は、その挙動のすべてもしくは多くを決定するために、かつ/または非良性の挙動を特定するために、(たとえば、クラウドなどにおける)エミュレータを介してバイトコードを実行することを含み得る。
【００４７】
一実施形態では、サーバは、ソフトウェアアプリケーションに対して予期される挙動の範囲を決定するために、静的な分析動作と動的な分析動作の両方を実行し、静的な分析動作および動的な分析動作から生成された情報の組合せ(たとえば、静的な分析結果と動的な分析結果の組合せ)を使用するように構成され得る。たとえば、サーバは、静的な分析を使用して、API使用および/またはコードパスに基づく予期される挙動を用いて挙動情報構造をポピュレートし、動的な分析を使用して、エミュレートされた挙動、および特徴が励起または使用された頻度などの、それらの関連する統計値に基づく挙動情報構造をポピュレートするように構成され得る。
【００４８】
コンピューティングデバイスは、ソフトウェアアプリケーションの正しいまたは予期される挙動の範囲を特定する挙動情報構造(たとえば、ベクトル、リスト、または他の情報構造)をサーバから受信し、受信された挙動情報構造をコンピューティングデバイスにおいて局所的に生成された挙動情報構造と比較して、ソフトウェアアプリケーションの観測された挙動が、予期される挙動と異なるかまたは予期される挙動から逸脱するかどうかを決定し、受信された挙動情報構造がその対応する局所的挙動情報構造と整合しないという決定に応答して(すなわち、ソフトウェアアプリケーションの観測された挙動が予期される挙動と異なるかまたは予期される挙動から逸脱することを比較結果が示すとき)、そのセキュリティまたは精査のレベルを増大させるように構成され得る。一実施形態では、コンピューティングデバイスは、観測された挙動が予期される挙動の範囲内にあることを比較結果が示すとき、軽量または低電力の分析動作を実行し、観測された挙動が予期される挙動の範囲外にあることを比較結果が示すとき、もっとロバストまたは電力集約的な挙動分析動作を実行するように構成され得る。一実施形態では、コンピューティングデバイスは、観測された挙動が予期される挙動の範囲内にあることを比較結果が示すとき、追加の挙動ベースの分析動作を実行するのを控えるように構成され得る。
【００４９】
様々な実施形態は、図1Aに示す例示的な通信システム100などの様々な通信システム内で実装され得る。セル電話ネットワーク104は、ネットワーク運用センター108に結合された複数のセル基地局106を含み、ネットワーク運用センター108は、固定電話線(たとえば、図示されていないPOTSネットワーク)およびインターネット110などを介して、モバイルデバイス102(たとえば、セルフォン、ラップトップ、タブレットなど)と他のネットワーク宛先との間の音声通話およびデータを接続するように動作する。モバイルデバイス102と電話ネットワーク104との間の通信は、4G、3G、CDMA、TDMA、LTE、および/または他のセル電話通信技術のような、双方向ワイヤレス通信リンク112を介して達成され得る。電話ネットワーク104はまた、インターネット110への接続を提供する、ネットワーク運用センター108に結合されるかまたはネットワーク運用センター108内にある、1つまたは複数のサーバ114を含み得る。
【００５０】
通信システム100は、電話ネットワーク104およびインターネット110に接続されたネットワークサーバ116をさらに含み得る。ネットワークサーバ116と電話ネットワーク104との間の接続は、インターネット110を通じてよく、または(破線の矢印で示すような)プライベートネットワークを通じてよい。ネットワークサーバ116はまた、クラウドサービスプロバイダネットワーク118のネットワークインフラストラクチャ内のサーバとして実装され得る。ネットワークサーバ116とモバイルデバイス102との間の通信は、電話ネットワーク104、インターネット110、プライベートネットワーク(図示せず)、またはそれらの任意の組合せを通じて達成され得る。
【００５１】
ネットワークサーバ116は、多くのモバイルデバイス102または中央データベースもしくはクラウドサービスプロバイダネットワーク118から、様々な条件、特徴、挙動、および修正アクションについての情報を受信し、この情報を使用して、モバイルデバイスの挙動の特定の具現を評価するためにコンピューティングデバイスのプロセッサによって使用され得るデータおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リストなど)を含むデータ、アルゴリズム、分類器、または挙動モデル(本明細書では、総称して「分類器モデル」)を生成するように構成され得る。
【００５２】
一実施形態では、ネットワークサーバ116は、完全な分類器モデルを生成するように構成され得る。ネットワークサーバ116は、完全な分類器モデルを使用して、モバイルデバイス102の挙動ならびに/またはモバイルデバイス102の挙動監視および分析システムの挙動を分析または分類するように構成され得る。ネットワークサーバ116はまた、完全な分類器モデルをモバイルデバイス102に送るように構成され得る。一実施形態では、ネットワークサーバ116は、いくつかの異なる形式、モデル、および構成のモバイルデバイス102のいずれかの劣化に寄与し得る、特徴、データポイント、および/または要因のすべてまたは大半を含むように、完全な分類器モデルを生成するように構成され得る。様々な実施形態では、ネットワークサーバは、挙動情報の大きなコーパスを、有限ステートマシン、決定ノード、決定ツリーとして、またはより簡潔な分類器モデルを迅速かつ効率的に生成するために変更され得、選別され得、補足され得、もしくは別様に使用され得る任意の情報構造の中で記述または表現するように、完全な分類器モデルを生成するように構成され得る。
【００５３】
加えて、ネットワークサーバ116は、ソフトウェアアプリケーションプログラムが良性であるのかそれとも非良性であるのか(たとえば、マルウェアなど)を決定するために、コンピューティングデバイスの正常な挙動をエミュレートし、かつ/または静的および/もしくは動的な分析動作を実行するように構成され得る。ネットワークサーバ116は、ソフトウェアアプリケーションプログラムが非良性であるという決定に応答して、アプリケーションプログラムを隔離し得るか、または他の適切な方策を採り得る。ソフトウェアアプリケーションプログラムが良性である(たとえば、アプリケーションがマルウェアでないなど)という決定に応答して、ネットワークサーバ116は、エミュレーションおよび/または分析の結果を使用して、アプリケーションプログラムの正しいまたは予期される挙動の範囲を、ベクトルデータ構造などの1つまたは複数の情報構造で(たとえば、数字の列などの形態で)簡潔に記述するかまたは特徴付ける挙動情報構造(たとえば、ベクトル、ベクトルリストなど)を生成する。サーバは、次いで、生成された挙動情報構造(たとえば、ベクトル、ベクトルリストなど)をモバイルデバイス102のうちの1つまたは複数へ送り得る。
【００５４】
モバイルデバイス102は、ネットワークサーバ116から完全な分類器モデルを受信し、受信された完全な分類器モデルを使用してモバイルデバイス102の挙動を監視、分析、および/または分類するように構成され得る。モバイルデバイス102は、完全な分類器モデルを使用して、モバイルデバイス102のソフトウェアアプリケーションの特定の特徴および機能を考慮する、より集中した分類器モデルを生成するようにさらに構成され得る。たとえば、モバイルデバイス102は、特定のソフトウェアアプリケーションに関連がある、またはモバイルデバイス102にインストールされるか、もしくはモバイルデバイス102のメモリの中に記憶される特定のタイプのソフトウェアアプリケーション(たとえば、ゲーム、ナビゲーション、金融など)に関連がある、モバイルデバイスの条件または特徴を優先的または排他的に特定または評価する、アプリケーション固有および/またはアプリケーションタイプ固有の分類器モデル(すなわち、データまたは挙動モデル)を生成し得る。モバイルデバイス102は、これらの局所的に生成された分類器モデルを使用して、リアルタイムの挙動監視および分析動作を実行し得る。
【００５５】
モバイルデバイス102はまた、デバイス102において検出された挙動がそのアプリケーションの予期される挙動の正常な範囲内にあるかどうかを迅速かつ効率的に決定するために、挙動情報構造(たとえば、ベクトル、ベクトルリストなど)を受信および使用するように構成され得る。たとえば、モバイルデバイスは、局所的に生成された挙動情報構造をネットワークサーバ116から受信された挙動情報構造(たとえば、ベクトル、ベクトルリストなど)と比較した結果に基づいて、ソフトウェアアプリケーションのためのアプリケーション固有の分類器モデルを生成するのを控えるように構成されるデバイスプロセッサを含み得る。デバイスプロセッサはまた、局所的に生成された挙動情報構造をネットワークサーバ116から受信された挙動情報構造と比較した結果に基づいて、ソフトウェアアプリケーションのためのアプリケーション固有の分類器モデルを生成および使用するように構成され得る。
【００５６】
図1Bは、図1Aに示すモバイルデバイス102などの、様々な実施形態を実施するコンピューティングデバイスにおいて使用され得る例示的なシステムオンチップ(SOC)130のアーキテクチャを示すアーキテクチャ図である。SOC130は、デジタル信号プロセッサ(DSP)132、モデムプロセッサ134、グラフィックスプロセッサ136、およびアプリケーションプロセッサ138などの、いくつかの異種処理コアまたは異種プロセッサを含み得る。SOC130はまた、プロセッサ132〜138のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ140(たとえば、ベクトルコプロセッサ)を含み得る。
【００５７】
各プロセッサ/処理コア(たとえば、プロセッサ132〜138)は、1つまたは複数のコアを含み得、その各々は、他のプロセッサ/コアとは無関係に動作を実行するように構成され得る。さらに、各プロセッサ/処理コアは、システムにおける他のオペレーティングシステムおよびプロセッサ/処理コアとは無関係にメモリ管理動作を実行するオペレーティングシステムを含み得る。たとえば、マルチプロセッサシステムは、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行する第1の処理コア、および第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 10など)を実行する第2の処理コアを含み得る。これらのオペレーティングシステムの各々は、その処理コア上で実行しているソフトウェアアプリケーションプログラムによるシステムメモリ146の割振りおよび使用を管理するためのメモリ管理システムを含み得る。たとえば、各オペレーティングシステムは、仮想メモリアドレスをアプリケーションプログラムに割り振り、あるプロセスによって使用されるメモリが別のプロセスによってすでに使用中のメモリに干渉しないことを保証するように構成された仮想メモリマネージャ(OS VMM)を含み得る。プロセスが物理メモリへのアクセスを必要とするとき、これらの仮想アドレスは、その処理コアに専用のメモリ管理ユニット(MMU)によって物理メモリアドレスに変換され得る。
【００５８】
SOC130はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理するための、またゲームおよび映画用の符号化オーディオ信号の処理などの他の特殊な動作を実行するための、アナログ回路構成およびカスタム回路構成142を含み得る。SOC130は、電圧調節器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびにコンピューティングデバイス上で実行しているプロセッサおよびクライアントをサポートするために使用される他の類似の構成要素などの、システム構成要素およびリソース144を含み得る。リソース/システム構成要素およびカスタム回路構成は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースするための回路構成を含み得る。
【００５９】
プロセッサ/処理コア(たとえば、DSP132、モデムプロセッサ134、グラフィックスプロセッサ136、アプリケーションプロセッサ138など)は、再構成可能な論理ゲートのアレイを含み得かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る相互接続/バスモジュール141を介して、メモリ要素146、リソース144、およびカスタム回路構成142に相互接続され得る。通信は、高性能ネットワークオンチップ(NoC)などの高度な相互接続によって提供され得る。
【００６０】
SOC130は、クロック150や電圧調節器152などの、SOC130の外部にあるリソースと通信するための入力/出力モジュール(図示せず)をさらに含み得る。SOCの外部にあるリソース(たとえば、クロック150、電圧調節器152)は、内部SOCプロセッサ/コア(たとえば、DSP132、モデムプロセッサ134、グラフィックスプロセッサ136、アプリケーションプロセッサ138など)のうちの2つ以上によって共有され得る。
【００６１】
SOC130はまた、スピーカーとインターフェースし、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)から入力を受け、マイクロフォンアレイからオーディオデータを受信し、物理条件(たとえば、位置、方向、動き、方位、振動、圧力など)を監視するためのセンサー、カメラ、コンパス、GPS受信機、通信回路構成(たとえば、セルラー、Bluetooth(登録商標)、WLAN、WiFiなど)、ならびに現代の電子デバイスの他のよく知られている構成要素(たとえば、加速度計、ジャイロスコープなど)を含むセンサーからセンサーデータを収集するのに好適な、ハードウェア構成要素および/またはソフトウェア構成要素を含み得る。
【００６２】
プロセッサ/処理コア(たとえば、DSP132、モデムプロセッサ134、グラフィックスプロセッサ136、アプリケーションプロセッサ138など)は、互いに(たとえば、単一の基板、ダイ、集積チップなどの上で)極めて近接している独立した処理コアであり得る。プロセッサが近接していることにより、オンチップメモリ146の共有、およびコア間のより調整された協調が可能になる。加えて、プロセッサが近接していることにより、データ信号がオフチップで移動しなければならない場合に可能な周波数/クロックレートよりもはるかに高い周波数/クロックレートでメモリ146が動作することも可能になる。
【００６３】
図2は、非良性のデバイス挙動を特定しそれに応答するために、挙動分析技法を使用するように構成された包括的な挙動監視および分析システム200を含む実施形態コンピューティングデバイス102における、例示的な論理構成要素および情報フローを示す。図2に示す例では、コンピューティングデバイスは、デバイスプロセッサ(すなわち、モバイルデバイスプロセッサ)を含むモバイルデバイス102であり、デバイスプロセッサは、DSP132、モデムプロセッサ134、グラフィックスプロセッサ136、アプリケーションプロセッサ138などの、図1Bに示すプロセッサ/処理コアのうちのいずれかまたはすべてであってよい。デバイスプロセッサは、挙動観測器モジュール202、挙動抽出器モジュール204、挙動分析器モジュール206、および作動器モジュール208を含む、実行可能命令モジュールを用いて構成され得る。モジュール202〜208の各々は、ソフトウェア、ハードウェア、またはそれらの組合せで実装される、スレッド、プロセス、デーモン、モジュール、サブシステム、または構成要素であり得る。様々な実施形態では、モジュール202〜210は、オペレーティングシステムの部分内(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)に、個別のプログラムもしくはアプリケーション内に、専用のハードウェアバッファもしくはプロセッサの中に、またはそれらの任意の組合せで実装され得る。一実施形態では、モジュール202〜208のうちの1つまたは複数は、モバイルデバイス102の1つまたは複数のプロセッサ上で実行するソフトウェア命令として実装され得る。
【００６４】
図2に示す例では、ネットワークサーバ116、またはクラウドサービスプロバイダネットワーク118のネットワークインフラストラクチャ内のサーバは、ソフトウェアアプリケーションプログラムが良性であるのかそれとも非良性であるのか(たとえば、マルウェアなど)を決定するために、モバイルデバイス102の正常な挙動をエミュレートしかつ/または静的および/もしくは動的な分析動作を実行するように構成され得る。サーバ116、118は、ソフトウェアアプリケーションプログラムが非良性であるという決定に応答して、アプリケーションプログラムを隔離し得るか、または他の適切な方策を採り得る。たとえば、サーバ116、118は、ソフトウェアアプリケーションがマルウェアであることを静的および/または動的な分析の結果が示すとき、コンピューティングデバイスがソフトウェアアプリケーションをダウンロードするのを防止してよい。
【００６５】
ソフトウェアアプリケーションプログラムが良性である(たとえば、アプリケーションがマルウェアでないなど)という決定に応答して、サーバ116、118は、エミュレーション結果および/または分析結果(たとえば、静的および/または動的な分析動作を実行することから生成される結果)を使用して、ソフトウェアアプリケーションプログラムの正しいまたは予期される挙動の範囲を、1つまたは複数の構造(たとえば、数字の列を含むベクトルデータ構造、ベクトルリストなど)で簡潔に記述するかまたは特徴付ける挙動情報構造(たとえば、ベクトル、ベクトルリストなど)を生成し得る。サーバ116、118は、生成された挙動情報構造(たとえば、ベクトル、ベクトルリストなど)を、ソフトウェアアプリケーションプログラムをダウンロードし、含み、または使用するコンピューティングデバイスへ送り得る。たとえば、サーバ116、118は、情報構造とアプリケーションの両方が同時にダウンロードされるように、生成された挙動情報構造をそれらの対応するソフトウェアアプリケーションとバンドルし得る。サーバ116、118はまた、前にソフトウェアアプリケーションプログラムをダウンロードしたコンピューティングデバイス(たとえば、モバイルデバイス102など)を特定し得、アプリケーションがインストールされ、更新され、起動されるときなどに、特定されたコンピューティングデバイスへ挙動情報構造を送り得る。
【００６６】
モバイルデバイス102の中のデバイスプロセッサ(たとえば、DSP132、モデムプロセッサ134、グラフィックスプロセッサ136、アプリケーションプロセッサ138など)は、挙動情報構造をサーバ116、118から受信し、受信された挙動ベクトルをコンピューティングデバイスにおいて生成された挙動情報構造(たとえば、ベクトル、他の構造)と比較して、ソフトウェアアプリケーションプログラムの観測された挙動が、予期される挙動と異なるかまたは予期される挙動から逸脱するかどうかを決定するように構成され得る。たとえば、モバイルデバイス102の中のデバイスプロセッサは、予期される挙動の範囲を特定するリストをサーバ116から受信し得、局所的に生成された挙動情報構造(または、それが特徴付ける挙動)が、受信されたリストの中に含まれるかどうかを決定し得、局所的に生成された挙動情報構造が、受信されたリストの中に含まれないか、または受信された挙動情報構造がその対応する局所的挙動情報構造と整合しないという決定に応答して(すなわち、ソフトウェアアプリケーションの観測された挙動が予期される挙動と異なるかまたは予期される挙動から逸脱することを比較結果が示すとき)、そのセキュリティまたは精査のレベルを増大させ得る。デバイスプロセッサはまた、その分析の結果をサーバ116へ送り得、サーバ116は、それがマルウェアであるかどうかを決定するために、かつ/あるいはソフトウェアアプリケーションの正常なまたは予期される挙動の範囲をより良好に決定するために、これらの結果を受信および使用してソフトウェアアプリケーションをさらに分析し得る。
【００６７】
上記で説明した動作に加えて、挙動観測器モジュール202は、デバイスの様々なレベル/モジュールにおいてアプリケーションプログラミングインターフェース(API)を計装し、計装されたAPIを介してある時間期間にわたって様々なレベル/モジュールにおいて活動、条件、動作、およびイベント(たとえば、システムイベント、状態変化など)を監視するように構成され得る。挙動観測器モジュール202は、監視された活動、条件、動作、またはイベントに関係する挙動情報を収集し、収集された情報をメモリの中に(たとえば、ログファイルの中などに)記憶し得る。挙動観測器モジュール202は、収集された挙動情報を挙動抽出器モジュール204に(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信し得る。
【００６８】
挙動抽出器モジュール204は、収集された挙動情報を受信しまたは取り出し、この情報を使用して1つまたは複数の挙動情報構造を生成するように構成され得る。一実施形態では、挙動抽出器モジュール204は、観測された挙動の簡明な定義を含めるように挙動情報構造を生成するように構成され得る。たとえば、各挙動情報構造は、モバイルデバイス、ソフトウェアアプリケーション、またはプロセスの観測された挙動を、値またはベクトルデータ構造で(たとえば、数字の列などの形態で)簡潔に記述し得る。挙動抽出器モジュール204はまた、モバイルデバイスシステム(たとえば、挙動分析器モジュール206)がモバイルデバイスの挙動を迅速に認識し、特定し、かつ/または分析することを可能にする識別子としてそれらが機能するように、挙動情報構造を生成するように構成され得る。
【００６９】
挙動分析器モジュール206は、デバイス挙動が、経時的にデバイスの劣化に寄与し(または、寄与する可能性が高く)、かつ/または別様にデバイスへの問題を引き起こし得る、非良性の挙動であるかどうかを決定するために、挙動情報構造を分類器モジュールに適用するように構成され得る。挙動分析器モジュール206は、活動または挙動が良性でないことを作動器モジュール208に通知し得る。それに応答して、作動器モジュール208は、特定された問題を修復し、矯正し、隔離し、または別様に修繕するための様々なアクションまたは動作を実行し得る。たとえば、作動器モジュール208は、挙動情報構造を分類器モデルに(たとえば、分析器モジュールによって)適用した結果が、ソフトウェアアプリケーションまたはプロセスが良性でないことを示すとき、ソフトウェアアプリケーションまたはプロセスを終了するように構成され得る。
【００７０】
挙動観測器モジュール202は、モバイルコンピューティングデバイス102の活動を監視するように構成され得る。様々な実施形態では、このことは、モバイルコンピューティングデバイス102の様々なソフトウェア構成要素およびハードウェア構成要素を監視すること、ならびにモバイルコンピューティングデバイス102の活動に関連する監視された測定可能な構成要素の通信、トランザクション、イベント、または動作に関係する情報を収集することによって達成され得る。そのような活動は、動作またはタスクのソフトウェアアプリケーションの実行、モバイルコンピューティングデバイス102のプロセッサまたは処理コアにおけるソフトウェアアプリケーションの実行、プロセスの実行、タスクまたは動作の実行、デバイスの挙動、ハードウェア構成要素の使用などを含む。
【００７１】
様々な実施形態では、挙動観測器モジュール202は、アプリケーションフレームワークまたはランタイムライブラリ、システムコールAPI、ファイルシステムおよびネットワーキングサブシステム動作、デバイス(センサーデバイスを含む)状態変化、ならびに他の類似のイベントにおけるライブラリAPIコールに関係する情報を収集することによって、モバイルコンピューティングデバイス102の活動を監視するように構成され得る。加えて、挙動観測器モジュール202は、ファイルシステム活動を監視し得、ファイルシステム活動は、ファイル名、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)を探索すること、ファイル(たとえば、type exe、zipなど)を作成または削除すること、ファイル読取り/書込み/探索動作、ファイルパーミッションを変更することなどを含み得る。
【００７２】
挙動観測器モジュール202はまた、データネットワーク活動を監視することによってモバイルコンピューティングデバイス102の活動を監視し得、データネットワーク活動は、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含み得る。挙動観測器モジュール202は、電話ネットワーク活動を監視し得、電話ネットワーク活動は、送出、受信、または傍受された通話またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することを含み得る。
【００７３】
挙動観測器モジュール202はまた、システムリソース使用量を監視することによってモバイルコンピューティングデバイス102の活動を監視し得、それはフォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含み得る。挙動観測器モジュール202は、モバイルコンピューティングデバイス102の状態を監視し得、それはディスプレイがオンであるのかそれともオフであるのか、デバイスがロックされているのかそれともロックされていないのか、バッテリーの残量、カメラの状態などの、様々な要因を監視することを含み得る。挙動観測器モジュール202はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC:inter-process communication)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視し得る。
【００７４】
挙動観測器モジュール202はまた、ドライバ統計値および/または1つもしくは複数のハードウェア構成要素のステータスを監視することによってモバイルコンピューティングデバイス102の活動を監視し得、ハードウェア構成要素は、カメラ、センサー、電子ディスプレイ、WiFi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、ならびにモバイルコンピューティングデバイス102上で実行しているプロセッサおよびクライアントをサポートするために使用される他の類似の構成要素を含み得る。
【００７５】
挙動観測器モジュール202はまた、モバイルコンピューティングデバイス102および/またはコンピューティングデバイスサブシステムの状態またはステータスを示す1つまたは複数のハードウェアカウンタを監視することによって、モバイルコンピューティングデバイス102の活動を監視し得る。ハードウェアカウンタは、モバイルコンピューティングデバイス102において発生するハードウェア関連の活動またはイベントのカウント値またはカウント状態を記憶するように構成されるプロセッサ/コアの専用レジスタを含み得る。
【００７６】
挙動観測器モジュール202はまた、ソフトウェアアプリケーションのアクションまたは動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標) App Storeサーバ)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるコンピューティングデバイス情報、呼情報、テキストメッセージング情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージング情報(たとえば、ReceiveMMS)、ユーザアカウント情報、ロケーション情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth（登録商標）、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視することによって、モバイルコンピューティングデバイス102の活動を監視し得る。
【００７７】
挙動観測器モジュール202はまた、ボイスメール(VoiceMailComm)、デバイス識別子(DeviceIDComm)、ユーザアカウント情報(UserAccountComm)、カレンダー情報(CalendarComm)、ロケーション情報(LocationComm)、記録されたオーディオ情報(RecordAudioComm)、加速度計情報(AccelerometerComm)などを含む通信を含む、モバイルコンピューティングデバイス102の送信または通信を監視することによって、モバイルコンピューティングデバイス102の活動を監視し得る。
【００７８】
挙動観測器モジュール202はまた、コンパス情報、コンピューティングデバイス設定、バッテリー寿命、ジャイロスコープ情報、圧力センサー、磁気センサー、スクリーン活動などの使用およびそれらに対する更新/変更を監視することによって、モバイルコンピューティングデバイス102の活動を監視し得る。挙動観測器モジュール202は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーション更新などを監視し得る。挙動観測器モジュール202は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関係する条件またはイベントを監視し得る。挙動観測器モジュール202は、パスワードの入力などのユーザ検証に関係する条件またはイベントを監視し得る。
【００７９】
挙動観測器モジュール202はまた、アプリケーションレベル、無線レベル、およびセンサーレベルを含む、モバイルコンピューティングデバイス102の複数のレベルにおいて条件またはイベントを監視することによって、モバイルコンピューティングデバイス102の活動を監視し得る。アプリケーションレベル観測は、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力された記録を観測すること、PassBook(登録商標)、Google(登録商標) Wallet、Paypal(登録商標)、および他の類似のアプリケーションまたはサービスの使用に関係するイベントを観測することを含み得る。アプリケーションレベル観測はまた、仮想プライベートネットワーク(VPN)の使用に関するイベント、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算用のデータのオフローディング、ビデオストリーミング、ユーザ活動なしでのカメラの使用、ユーザ活動なしでのマイクロフォンの使用などに関係するイベントを観測することを含み得る。
【００８０】
無線レベル観測は、無線通信リンクを確立するかまたは情報を送信する前のモバイルコンピューティングデバイス102とのユーザ対話、デュアル/マルチ加入者識別モジュール(SIM)カード、インターネットラジオ、モバイルフォンテザリング、計算用のデータのオフローディング、デバイス状態通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、コンピューティングデバイス同期などのうちのいずれかまたは複数の存在、実在、または量を決定することを含み得る。無線レベル観測はまた、測位、ピアツーピア(p2p:peer-to-peer)通信、同期、車両対車両通信、および/または機械対機械(m2m:machine-to-machine)のための、無線(WiFi、WiMax、Bluetooth（登録商標）など)の使用を監視することを含み得る。無線レベル観測は、ネットワークトラフィックの使用量、統計値、またはプロファイルを監視することをさらに含み得る。
【００８１】
センサーレベル観測は、モバイルコンピューティングデバイス102の使用環境および/または外部環境を決定するために、磁気センサーまたは他のセンサーを監視することを含み得る。たとえば、コンピューティングデバイスプロセッサは、(たとえば、ホルスタ内の磁石を感知するように構成された磁気センサーを介して)デバイスがホルスタの中にあるかどうか、または(たとえば、カメラまたは光センサーによって検出される光の量を介して)ユーザのポケットの中にあるかどうかを決定するように構成され得る。たとえば、モバイルコンピューティングデバイス102がホルスタに入れられている間に行われる、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声通話を行うこと、録音することなど)に関連する活動および機能が、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行している不正なプロセスのサインであり得るので、モバイルコンピューティングデバイス102がホルスタの中にあることを検出することは、疑わしい挙動を認識することに関連があり得る。
【００８２】
使用環境または外部環境に関するセンサーレベル観測の他の例は、NFCシグナリングを検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダから情報を収集すること、ユニバーサルシリアルバス(USB)電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルコンピューティングデバイス102に結合されたことを検出すること、モバイルコンピューティングデバイス102が(たとえば、USBなどを介して)別のコンピューティングデバイスに結合されたことを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または無効化された(たとえば、緊急シグナリングアプリなどを悪意をもって無効化する)かどうかを決定すること、スピーカーまたはマイクロフォンがオンまたは電源投入されたことを検出すること、充電または電力供給イベントを検出すること、モバイルコンピューティングデバイス102がゲームコントローラとして使用されていることを検出することなどを含み得る。センサーレベル観測はまた、医療センサーもしくはヘルスケアセンサーから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサーから情報を収集すること、(たとえば、バイブレータインターフェースなどを介して)触覚センサーまたはハプティックセンサーから情報を収集すること、モバイルコンピューティングデバイス102の熱状態に関係する情報を収集することなどを含み得る。
【００８３】
監視される要因の数を管理可能レベルまで削減するために、一実施形態では、挙動観測器モジュール202は、コンピューティングデバイスの劣化に寄与し得るすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観測することによって、粗い観測を実行するように構成され得る。一実施形態では、挙動観測器モジュール202は、挙動および/または要因の初期セットをサーバおよび/またはクラウドサービスもしくはネットワークの中の構成要素から受信し得る。一実施形態では、挙動/要因の初期セットは、機械学習分類器モデルにおいて指定され得る。
【００８４】
各分類器モデルは、コンピューティングデバイスの挙動の特定の特徴または具現を評価するために、コンピューティングデバイスプロセッサによって使用され得る、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リストなど)を含む挙動モデルであり得る。各分類器モデルはまた、コンピューティングデバイスにおけるいくつかの特徴、要因、データポイント、エントリ、API、状態、条件、挙動、アプリケーション、プロセス、動作、構成要素など(本明細書では、総称して「特徴」)を監視するための決定基準を含み得る。分類器モデルは、コンピューティングデバイス上にプレインストールされてよく、ネットワークサーバからダウンロードもしくは受信されてよく、コンピューティングデバイスにおいて生成されてよく、またはそれらの任意の組合せであってもよい。分類器モデルは、クラウドソーシングソリューション、挙動モデル化技法、機械学習アルゴリズムなどを使用することによって生成され得る。
【００８５】
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとして類別され得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含み得る大きいトレーニングデータセットの関数として生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定の活動が進行中のクリティカル活動であるかどうか、および/または特定のコンピューティングデバイス挙動が良性でないかどうかを決定することに最も関連がある特徴/エントリのみを含む/テストする、縮小されたデータセットから生成される、より集中したデータモデルであり得る。
【００８６】
局所的に生成される簡潔な分類器モデルは、コンピューティングデバイスにおいて生成される簡潔な分類器モデルである。アプリケーション固有の分類器モデルは、特定のソフトウェアアプリケーションを評価することに最も関連がある特徴/エントリのみを含む/テストする、集中したデータモデルを含む分類器モデルである。デバイス固有の分類器モデルは、特定のコンピューティングデバイスにおける活動または挙動を分類することに最も関連があると決定されるコンピューティングデバイス固有の特徴/エントリのみを含む/テストする、集中したデータモデルを含む分類器モデルである。
【００８７】
挙動分析器モジュール206は、監視された活動(または、挙動)が良性であるのか、疑わしいのか、それとも非良性であるのかを決定するために、挙動抽出器モジュール204によって生成された挙動情報構造を分類器モデルに適用するように構成され得る。一実施形態では、その挙動分析動作の結果が、挙動を良性または非良性のいずれかとして分類するのに十分な情報を提供しないとき、挙動分析器モジュール206は挙動を「疑わしい」として分類し得る。
【００８８】
挙動分析器モジュール206は、監視された活動または挙動が疑わしいという決定に応答して、挙動観測器モジュール202に通知するように構成され得る。それに応答して、挙動観測器モジュール202は、その観測の粒度(すなわち、コンピューティングデバイスの特徴が監視される際の詳細さのレベル)を調整し得、かつ/または挙動分析器モジュール206から受信された情報(たとえば、リアルタイム分析動作の結果)に基づいて、観測される要因/挙動を変更し得、新たなまたは追加の挙動情報を生成または収集し得、さらなる分析/分類のために新たな/追加の情報を挙動分析器モジュール206に送り得る。挙動観測器モジュール202と挙動分析器モジュール206との間のそのようなフィードバック通信は、活動が分類されるとともに疑わしいかまたは性能を劣化させるコンピューティングデバイスの挙動の根源が特定されるまで、処理またはバッテリー消費のしきい値に到達するまで、あるいは疑わしいかまたは性能を劣化させるコンピューティングデバイスの挙動の根源が観測粒度のさらなる増大から特定され得ないとコンピューティングデバイスプロセッサが決定するまで、モバイルコンピューティングデバイス102が、観測の粒度を再帰的に増大させること(すなわち、もっと微細またはもっと詳細に観測すること)、または観測される特徴/挙動を変更することを可能にする。そのようなフィードバック通信はまた、モバイルコンピューティングデバイス102が、コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースを過剰に消費することなく、コンピューティングデバイスにおいて局所的に分類器モデルを調整または変更することを可能にする。
【００８９】
一実施形態では、挙動観測器モジュール202および挙動分析器モジュール206は、限られた粗い観測から疑わしい挙動を特定するため、挙動を動的に決定してより詳細に観測するため、また観測のために必要な詳細さのレベルを動的に決定するために、コンピューティングシステムの挙動のリアルタイムな挙動分析を個別にまたは一括してのいずれかで提供し得る。このことは、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリーリソースを必要とすることなく、モバイルコンピューティングデバイス102が問題を効率的に特定かつ防止することを可能にする。
【００９０】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、精密な監視を必要とするクリティカルデータリソースを特定すること、クリティカルデータリソースに関連する中間リソースを特定すること、クリティカルデータリソースおよび中間リソースにアクセスするときにソフトウェアアプリケーションによって行われるAPIコールを監視すること、APIコールによって消費または生成されるコンピューティングデバイスのリソースを特定すること、ソフトウェアアプリケーションによる非良性の活動を示すものとしてAPIコールのパターンを特定すること、APIコールの特定されたパターンおよび特定されたコンピューティングデバイスリソースに基づいて軽量挙動シグネチャを生成すること、軽量挙動シグネチャを使用して挙動分析動作を実行すること、ならびにソフトウェアアプリケーションが良性であるのかそれとも良性でないのかを挙動分析動作に基づいて決定することによって、活動または挙動を監視、分析、および/または分類するように構成され得る。
【００９１】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、コンピューティングデバイス上で実行するソフトウェアアプリケーションによって最も頻繁に使用されるAPIを特定すること、特定されたホットAPIの使用量に関する情報をコンピューティングデバイスのメモリの中のAPIログに記憶すること、およびAPIログに記憶された情報に基づいて挙動分析動作を実行して正常な動作パターンと一致しない挙動を特定することによって、活動または挙動を監視、分析、および/または分類するように構成され得る。一実施形態では、APIの同じ起動にわたって同じままである汎用フィールドの値がAPIの各起動に固有である固有フィールドの値とは別のテーブルに記憶されるようなAPIログが編成されるように、APIログが生成され得る。APIログはまた、汎用フィールドの値を記憶する個別のテーブルに対するハッシュ鍵とともに、固有フィールドの値がテーブルの中に記憶されるように生成され得る。
【００９２】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、複数のブーストされた決定株としての変換または表現に適した有限ステートマシンを含む完全な分類器モデルをサーバから受信すること、完全な分類器に基づいてコンピューティングデバイスにおいて簡潔な分類器モデルを生成すること、ならびにコンピューティングデバイスにおける簡潔な分類器モデルを使用して、活動または挙動を良性であるかまたは良性でないか(すなわち、悪意がある、性能を劣化させるなど)のいずれかであるものとして分類することによって、活動または挙動を監視、分析、および/または分類するように構成され得る。一実施形態では、完全な分類器モデルに基づいて簡潔な分類器モデルを生成することは、コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースを過剰に消費することなく、活動または挙動を分類するために評価されるべきである一意のテスト条件の数を決定することと、決定された数の一意のテスト条件をテスト条件のリストが含むまで、ブーストされた決定株のリストを連続的にトラバースするとともに連続的にトラバースされブーストされた各決定株に関連するテスト条件をテスト条件のリストに挿入することによってテスト条件のリストを生成することと、生成されたテスト条件のリストの中に含まれる複数のテスト条件のうちの1つをテストするブーストされた決定株のみを含むように、簡潔な分類器モデルを生成することとを含み得る。
【００９３】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、コンピューティングデバイスの、能力および状態情報などのデバイス固有の情報を使用して、コンピューティングデバイスの挙動を分類することに関連がある、複数のテスト条件の中のデバイス固有のテスト条件を特定すること、特定されたコンピューティングデバイス固有のテスト条件のみを含む簡潔な分類器モデルを生成すること、ならびにコンピューティングデバイスにおける生成された簡潔な分類器モデルを使用してコンピューティングデバイスの挙動を分類することによって、活動または挙動を監視、分析、および/または分類するように構成され得る。一実施形態では、簡潔な分類器モデルは、コンピューティングデバイスの現在の動作状態または構成に関連があるコンピューティングデバイス特徴を評価する決定ノードのみを含むように生成され得る。一実施形態では、簡潔な分類器モデルを生成することは、コンピューティングデバイスのリソース(たとえば、処理リソース、メモリリソース、またはエネルギーリソース)を過剰に消費することなく、挙動を分類するために評価されるべきである一意のテスト条件の数を決定することと、決定された数の一意のテスト条件をテスト条件のリストが含むまで、完全な分類器モデルにおいて複数のテスト条件を連続的にトラバースするとともにコンピューティングデバイスの挙動を分類することに関連があるテスト条件をテスト条件のリストに挿入することによってテスト条件のリストを生成することと、生成されたテスト条件のリストの中に含まれる条件のうちの1つをテストする完全な分類器モデルの中に含まれる決定ノードを含むように簡潔な分類器モデルを生成することとを含み得る。
【００９４】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、ソフトウェアアプリケーションまたはプロセスの活動を監視すること、ソフトウェアアプリケーション/プロセスのオペレーティングシステム実行状態を決定すること、および活動がその間に監視されたソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態に基づいて、活動がクリティカル活動であるかどうかを決定することによって、活動または挙動を監視、分析、および/または分類するように構成され得る。さらなる実施形態では、デバイスプロセッサは、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態が活動に関連があるかどうかを決定し得、活動がその間に監視されたソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を特定する影の特徴値を生成し得、オペレーティングシステム実行状態を特定する影の特徴値に活動を関連付ける挙動情報構造を生成し得、挙動情報構造を使用して活動がクリティカル活動であるかどうか、および/または良性でないかどうかを決定し得る。
【００９５】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、ソフトウェアアプリケーションまたはプロセスの活動を監視すること、ソフトウェアアプリケーション/プロセスのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態を決定すること、ならびに活動、および/または活動がその間に監視されたソフトウェアアプリケーションのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態に基づいて、活動がクリティカル活動であるかどうか、または良性でないかどうかを決定することによって、活動および挙動を監視、分析、および/または分類するように構成され得る。さらなる実施形態では、モバイルコンピューティングデバイスプロセッサは、ソフトウェアアプリケーションのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態が活動に関連があるかどうかを決定し得、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態に活動を関連付ける挙動情報構造を生成し得、挙動情報構造を使用して活動がクリティカル活動であるかどうか、および/または良性でないかどうかを決定し得る。プロセッサはまた、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態を使用して分類器モデル(たとえば、アプリケーション固有の分類器モデル)を選択し得、選択された分類器モデルに挙動情報構造を適用して、活動がクリティカル活動であるかどうか、および/または良性でないかどうかを決定し得る。
【００９６】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、活動がクリティカル活動であるかどうか、および/または良性でないかどうかを決定することに最も関連がある特徴、要因、およびデータポイントを知的かつ効率的に特定するために、ネットワークサーバとともに働くように構成され得る。たとえば、モバイルコンピューティングデバイスプロセッサは、ネットワークサーバから完全な分類器モデルを受信し、受信された完全な分類器モデルを使用して、コンピューティングデバイスまたはコンピューティングデバイスのソフトウェアアプリケーションの特徴および機能にとって固有である簡潔な分類器モデル(すなわち、データ/挙動モデル)を生成するように構成され得る。モバイルコンピューティングデバイスプロセッサは、完全な分類器モデルを使用して様々なレベルの複雑さ(または「簡潔さ」)の簡潔な分類器モデルのファミリーを生成し得る。モデルが良性であるかまたは良性でないかのいずれかとして類別できない(したがって、モデルによって疑わしいと類別される)挙動に遭遇するまで、簡潔な分類器モデルの最も簡潔なファミリー(すなわち、最も少数のテスト条件に基づく簡潔な分類器モデル)がルーチン的に適用されてよく、遭遇した時点において、挙動を類別するための試行においてもっとロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルが適用されてよい。生成された簡潔な分類器モデルのファミリー内の一層ロバストかつ簡潔な分類器モデルの適用は、挙動の最終的な分類が達成されるまで適用され得る。このようにして、観測器モジュールおよび/または分析器モジュールは、最も完全だがリソース集約的な簡潔な分類器モデルの使用を、挙動を最終的に分類するためにロバストな分類器モデルが必要とされる状況に限定することによって、効率と精度との間でバランスをとることができる。
【００９７】
様々な実施形態では、モバイルコンピューティングデバイスプロセッサは、有限ステートマシンの表示/表現をブーストされた決定株に変換すること、完全な分類器モデルの中に含まれるブーストされた決定株の1つまたは複数のサブセットを含めるように、コンピューティングデバイス固有の状態、特徴、挙動、条件、または構成に基づいて、ブーストされた決定株の完全なセットをプルーニングまたは選別すること、ならびにブーストされた決定株の1つまたは複数のサブセットを使用して、コンピューティングデバイス挙動を知的に監視、分析、および/または分類することによって、1つまたは複数の簡潔な分類器モデルを生成するように構成され得る。
【００９８】
ブーストされた決定株は、厳密に1つのノード(したがって、1つのテスト質問またはテスト条件)および重み値を有する1レベルの決定ツリーであり、したがって、データ/挙動の二分分類における使用に好適である。すなわち、ブーストされた決定株に挙動情報構造を適用することは、二分回答(たとえば、YesまたはNo)をもたらす。たとえば、ブーストされた決定株によってテストされる質問/条件が、「ショートメッセージサービス(SMS)送信の頻度が毎分x回未満であるか」である場合、ブーストされた決定株に「3」としての値を適用することは、(「3回未満」のSMS送信に対する)「yes」回答、または(「3回以上」のSMS送信に対する)「no」回答のいずれかという結果になる。
【００９９】
ブーストされた決定株は、極めて単純で原始的である(したがって、著しい処理リソースを必要としない)ので効率的である。ブーストされた決定株はまた、極めて並列化可能であり、したがって、(たとえば、コンピューティングデバイスの中の複数のコアまたはプロセッサによって)多くの株が並列に/同時に適用またはテストされ得る。
【０１００】
一実施形態では、モバイルコンピューティングデバイスプロセッサは、完全な分類器モデルの中に含まれる分類器基準のサブセット、ならびにコンピューティングデバイスの構成、機能、および接続される/含まれるハードウェアに関連がある特徴に対応するそれらの分類器基準のみを含む、簡潔な分類器モデルを生成するように構成され得る。デバイスプロセッサは、この簡潔な分類器モデルを使用して、存在するかまたはデバイスに関連があるそれらの特徴および機能のみを監視し得る。デバイスプロセッサは、次いで、コンピューティングデバイスの現在の状態および構成に基づいて、様々な特徴および対応する分類器基準を含めるかまたは削除するように、簡潔な分類器モデルを定期的に変更または再生成し得る。
【０１０１】
一例として、モバイルコンピューティングデバイスプロセッサは、挙動モデル(たとえば、分類器)の完全な特徴セットに関連する決定株を含む、大きいブーストされた決定株の分類器モデルを受信し、コンピューティングデバイスの現在の構成、機能、動作状態、および/または接続される/含まれるハードウェアに関連がある特徴のみを大きい分類器モデルから選択すること、ならびに選択された特徴に対応するブーストされた決定株のサブセットを簡潔な分類器モデルの中に含めることによって、大きい分類器モデルから1つまたは複数の簡潔な分類器モデルを導出するように構成され得る。この実施形態では、コンピューティングデバイスに関連がある特徴に対応する分類器基準は、選択された特徴の少なくとも1つをテストする、大きい分類器モデルの中に含まれるブーストされた決定株であり得る。デバイスプロセッサは、次いで、コンピューティングデバイスの現在の状態および構成に基づいて様々な特徴を含めるかまたは削除するように、ブーストされた決定株の簡潔な分類器モデルを定期的に変更または再生成し得、その結果、簡潔な分類器モデルは、アプリケーション固有またはデバイス固有の特徴のブーストされた決定株を含み続ける。
【０１０２】
加えて、デバイスプロセッサはまた、特定のソフトウェアアプリケーション(Google(登録商標) wallet)に、かつ/または特定のタイプのソフトウェアアプリケーション(たとえば、ゲーム、ナビゲーション、金融、ニュース、生産性など)に関連がある条件または特徴を特定するアプリケーション固有の分類器モデルを動的に生成し得る。一実施形態では、これらの分類器モデルは、完全な分類器モデルの中に含まれる決定ノードの、または受信された完全な分類器モデルから生成された簡潔な分類器モデルに含まれる決定ノードの、低減されより集中したサブセットを含むように生成され得る。
【０１０３】
様々な実施形態では、デバイスプロセッサは、システムにおける各ソフトウェアアプリケーションのための、および/またはシステムにおけるソフトウェアアプリケーションの各タイプのための、アプリケーションベースの分類器モデルを生成するように構成され得る。デバイスプロセッサはまた、危険性が高くまたは乱用されやすいソフトウェアアプリケーションおよび/またはアプリケーションタイプ(たとえば、金融アプリケーション、ポイントオブセールアプリケーション、生体センサーアプリケーションなど)を動的に特定し、危険性が高くまたは乱用されやすいものとして特定されたソフトウェアアプリケーションおよび/またはアプリケーションタイプのみのためのアプリケーションベースの分類器モデルを生成するように構成され得る。様々な実施形態では、デバイスプロセッサは、動的に、反応的に、事前に、かつ/または新たなアプリケーションがインストールもしくは更新されるたびに、アプリケーションベースの分類器モデルを生成するように構成され得る。
【０１０４】
各ソフトウェアアプリケーションは、概して、コンピューティングデバイス上でいくつかのタスクまたは活動を実行する。いくつかのタスク/活動がコンピューティングデバイスにおいて実行される特定の実行状態は、挙動または活動が追加のまたはより精密な精査、監視、および/または分析に値するかどうかという強い指標であり得る。したがって、様々な実施形態では、デバイスプロセッサは、いくつかのタスク/活動が実行される実際の実行状態を特定する情報を使用して、その挙動監視および分析動作に集中し、活動がクリティカル活動であるかどうか、および/または活動が良性でないかどうかをより良好に決定するように構成され得る。
【０１０５】
様々な実施形態では、デバイスプロセッサは、ソフトウェアアプリケーションによって実行された活動/タスクを、それらの活動/タスクが実行された実行状態に関連付けるように構成され得る。たとえば、デバイスプロセッサは、実行状態がそれに対して関連があるソフトウェアの特徴、活動、または動作(たとえば、ロケーションアクセス、SMS読取り動作、センサーアクセスなど)を列挙するサブベクトルまたは他のデータ構造の中で、計装された構成要素を監視することから収集された挙動情報を含む挙動情報構造を生成するように構成され得る。一実施形態では、このサブベクトル/データ構造は、各特徴/活動/動作が観測された実行状態を特定する影の特徴値のサブベクトル/データ構造に関連して記憶され得る。一例として、デバイスプロセッサは、「location_background」データフィールドを含む挙動ベクトルを生成し得、「location_background」データフィールドの値は、ソフトウェアアプリケーションがバックグラウンド状態で動作していたときにロケーション情報にアクセスした回数または割合を特定する。このことは、デバイスプロセッサが、コンピューティングデバイスの他の観測/監視された活動とは無関係に、かつ/またはそれと並列に、この実行状態情報を分析することを可能にする。このようにして挙動情報構造を生成することはまた、システムが情報(たとえば、頻度または割合)を経時的に統合することを可能にする。
【０１０６】
様々な実施形態では、デバイスプロセッサは、監視された活動に関するクエリに対して回答を生成するために機械学習分類器における決定ノードに入力され得る情報を含めるように、挙動情報構造を生成するように構成され得る。
【０１０７】
様々な実施形態では、デバイスプロセッサは、観測/監視された挙動の簡明な定義を含めるように挙動情報構造を生成するように構成され得る。挙動情報構造は、コンピューティングデバイス、ソフトウェアアプリケーション、またはプロセスの観測された挙動を、値またはベクトルデータ構造で(たとえば、数字の列などの形態で)簡潔に記述し得る。挙動情報構造はまた、コンピューティングデバイスシステムがコンピューティングデバイス挙動を迅速に認識、特定、および/または分析することを可能にする識別子として機能し得る。
【０１０８】
様々な実施形態では、デバイスプロセッサは、複数のまたは一連の数字を含むように挙動情報構造を生成するように構成され得、これらの数字の各々は、モバイルコンピューティングデバイス102の特徴、活動、または挙動を表しまたは特徴付ける。たとえば、挙動情報構造の中に含まれる数字は、コンピューティングデバイスのカメラが使用中であるかどうか(たとえば、0または1として)、どれだけのネットワークトラフィックがコンピューティングデバイスから送信されまたはコンピューティングデバイスによって生成されたのか(たとえば、20KB/秒など)、どれだけのインターネットメッセージが通信されたのか(たとえば、SMSメッセージの数など)などを表し得る。一実施形態では、挙動情報構造は、1つまたは複数の「挙動特徴」をカプセル化し得る。各挙動特徴は、観測された挙動またはアクションのすべてまたは一部分を表す無名数であり得る。挙動特徴は、コンピューティングデバイスのハードウェアまたはソフトウェア構成にアグノスティックであり得る。
【０１０９】
様々な実施形態では、デバイスプロセッサは、実行情報を含めるように挙動情報構造を生成するように構成され得る。実行情報は、挙動(たとえば、バックグラウンドプロセスによって3秒間に5回カメラが使用されること、フォアグラウンドプロセスによって3秒間に3回カメラが使用されることなど)の一部として、または無関係の特徴の一部として、挙動情報構造の中に含められ得る。一実施形態では、実行状態情報は、影の特徴値のサブベクトルまたはデータ構造として、挙動情報構造の中に含められ得る。一実施形態では、挙動情報構造は、実行状態がそれに対して関連がある特徴、活動、タスクに関連する影の特徴値サブベクトル/データ構造を記憶し得る。
【０１１０】
一実施形態では、デバイスプロセッサは、人為的な攻撃ソフトウェアをネットワークサーバ116から受信し、人為的な攻撃ソフトウェアをインストールし、挙動監視および分析システム200の様々なモジュール202〜208の動作、精度、および性能を監視し、システム200および/またはモジュール202〜208の動作を特徴付ける報告を生成し、生成された報告をネットワークサーバ116へ送るように構成され得る。デバイスプロセッサはまた、タイマーを設定し、報告をネットワークサーバ116へ送った後、「システムOK」信号を求めてリッスンし、タイマーが満了したときに「システムOK」信号が受信されていない場合、デッドマン動作を実行するように構成され得る。加えて、デバイスプロセッサは、挙動監視および分析システムへの妨害があったことを示す「デッドマン」信号を求めてリッスンし、「デッドマン」信号の受信に応答してデッドマン動作を実行するように構成され得る。
【０１１１】
図3は、一実施形態による、ソフトウェアアプリケーションを分析するためのサーバ方法300を示す。方法300は、コンピューティングデバイス(たとえば、サーバコンピューティングデバイス)のプロセッサまたは処理コアによって実行され得る。図3に示す例では、ブロック302および304の動作は、ブロック306および308の動作の前に実行される。他の実施形態では、ブロック306および308の動作は、ブロック302および304の動作の前か、またはそれと同時に実行されてよい。
【０１１２】
ブロック302において、コンピューティングデバイスは、静的な分析技法を使用してソフトウェアアプリケーションを評価し得、静的な分析結果を生成し得る。たとえば、コンピューティングデバイスは、コードパスを特定するためにソフトウェアアプリケーションプログラムのバイトコードを分析すること、ソフトウェアアプリケーションの可能な動作もしくは挙動のすべてを特定すること、および/または静的な分析結果を生成するためにソフトウェアアプリケーションの意図を評価すること(たとえば、それが悪意があるかどうかを決定するなどのために)を含む、静的な分析動作を実行し得る。決定ブロック304において、コンピューティングデバイスは、静的な分析結果を使用してソフトウェアアプリケーションが非良性であるかどうかを決定し得る。ソフトウェアアプリケーションが非良性であるという決定に応答して(すなわち、決定ブロック304=「Yes」)、コンピューティングデバイスは、ブロック314において、アプリケーションプログラムを隔離し得るか、または他の適切な方策を採り得る。たとえば、コンピューティングデバイスは、ブロック314において、他のコンピューティングデバイスがソフトウェアアプリケーションをダウンロードするのを防止してよい。
【０１１３】
ソフトウェアアプリケーションが非良性であることを静的な分析結果が示さないという決定に応答して(すなわち、決定ブロック304=「No」)、コンピューティングデバイスは、ブロック306において、動的な分析技法を使用してソフトウェアアプリケーションを評価し得、動的な分析結果を生成し得る。たとえば、コンピューティングデバイスは、その挙動を特定または決定するために(たとえば、クラウドの中の)エミュレータにおいてバイトコードを実行することなどの、動的な分析動作を実行し得る。ソフトウェアアプリケーションが非良性であるという決定に応答して(すなわち、決定ブロック308=「Yes」)、コンピューティングデバイスは、ブロック314において、アプリケーションプログラムを隔離し得るか、または他の適切な方策を採り得る。
【０１１４】
ソフトウェアアプリケーションが非良性であることを動的な分析結果が示さないという決定に応答して(すなわち、決定ブロック308=「No」)、コンピューティングデバイスは、ブロック310において、静的な分析結果(すなわち、ブロック302において生成された結果)および/または静的な分析結果(すなわち、ブロック302において生成された結果)を使用して、ソフトウェアアプリケーションプログラムの正しいまたは予期される挙動の範囲を特定するベクトル、ベクトルリスト、または他の類似のデータ構造などの挙動情報構造を生成し得る。すなわち、ブロック310において、コンピューティングデバイスは、ブロック310において、静的および/または動的な分析動作の結果を使用して、ソフトウェアアプリケーションの正しいまたは予期される挙動の範囲を記述または特徴付ける挙動情報構造を生成し得る。ブロック312において、コンピューティングデバイスは、生成された挙動情報構造を、挙動ベースのセキュリティシステムを装備し問題のソフトウェアアプリケーションを含むクライアントコンピューティングデバイス(たとえば、モバイルデバイス)へ送り得る。
【０１１５】
一実施形態では、上記で説明した静的および動的な分析動作に加えて、コンピューティングデバイスは、クライアントコンピューティングデバイス、および/またはクライアントコンピューティングデバイスの挙動監視および分析システムの、実行環境をエミュレートし得、エミュレートされた実行環境において(たとえば、すべての特定されたコードパスに沿って)ソフトウェアアプリケーションを実行し得、ソフトウェアアプリケーションによって実行されるすべての動作または示される挙動を特定するために挙動ベースの分析動作を実行し得、特定された動作または挙動を含むための挙動情報構造(たとえば、ベクトルまたはベクトルリスト)を生成し得る(たとえば、ブロック310において)。たとえば、コンピューティングデバイスは、特定されたコードパスの各々に対して1つまたは複数の挙動ベクトルを生成し得、これらの挙動ベクトルをベクトルリストの中にパッケージ化し得、ベクトルリストをクライアントコンピューティングデバイスへ送り得る。クライアントコンピューティングデバイスの実行環境をエミュレートすることによって、サーバコンピューティングデバイスは、クライアントコンピューティングデバイスの挙動ベースのセキュリティシステムによって使用されるものと類似の値、フォーマット、構造を使用してアプリケーションを実行するクライアントコンピューティングデバイスの、すべての正常なまたは予期される動作を特徴付ける挙動情報構造を生成し得る。このことは、クライアントコンピューティングデバイスが、サーバから受信された挙動情報構造をそのデバイスにおいて局所的に生成された挙動情報構造ともっと容易に比較することを可能にする。
【０１１６】
図4は、一実施形態による、ソフトウェアアプリケーションを分析するときに適用されるべきセキュリティ/セキュリティのレベルを決定する方法400を示す。方法400は、コンピューティングデバイス(たとえば、モバイルデバイスまたはリソース制約のあるコンピューティングデバイス)のプロセッサまたは処理コアによって実行され得る。
【０１１７】
ブロック402において、コンピューティングデバイスは、ソフトウェアアプリケーションの予期される挙動の範囲を特徴付ける挙動情報構造をサーバデバイスから受信し得る。ブロック404において、コンピューティングデバイスは、ソフトウェアアプリケーションの挙動を監視/観測して局所的挙動情報を収集し得る(たとえば、図2を参照しながら上記で説明した挙動観測器モジュール介して)。ブロック406において、コンピューティングデバイスは、挙動情報を使用して、ソフトウェアアプリケーションを実行するときのソフトウェアアプリケーションの挙動またはデバイスの挙動を特徴付ける局所的挙動情報構造を生成し得る。ブロック408において、コンピューティングデバイスは、受信された挙動情報構造を局所的挙動情報構造と比較して、ソフトウェアアプリケーションの観測された挙動が、ソフトウェアアプリケーションの予期される挙動と異なるかまたは予期される挙動から逸脱するかどうか、および/あるいは観測された挙動が予期される挙動の範囲内にあるかどうかを決定するために使用され得る比較結果を生成し得る。
【０１１８】
決定ブロック410において、コンピューティングデバイスは、比較結果を使用して、観測された挙動が予期される挙動の範囲内にあるかどうかを決定し得る。観測された挙動が予期される挙動の範囲内にあるという決定に応答して(すなわち、決定ブロック410=「Yes」)、コンピューティングデバイスは、ブロック412において、局所的挙動情報構造を比較的簡潔な分類器モデルに適用し得、かつ/または通常の挙動監視分析動作を実行し得る。観測された挙動が予期される挙動の範囲内にないという決定に応答して(すなわち、決定ブロック410=「No」)、コンピューティングデバイスは、ブロック414において、そのセキュリティ/精査レベルを増大させ得、かつ/またはブロック416において、局所的挙動情報構造をよりロバストな分類器に適用し得る。
【０１１９】
図5は、モバイルデバイスの挙動を分類するために分類器モデルを使用する実施形態方法500を示す。方法500は、コンピューティングデバイス(たとえば、モバイルデバイスまたはリソース制約のあるデバイスなど)の中のプロセッサまたは処理コアによって、独立に、または図2〜図4を参照しながら上記で説明した動作の一部としてのいずれかで実行され得る。たとえば、様々な実施形態では、コンピューティングデバイスは、図4に示すブロック412〜416のいずれかの動作の一部として、図5に示すブロック504〜516の動作を実行するように構成され得る。いくつかの実施形態では、コンピューティングデバイスは、ブロック502および503の動作の一部として、ブロック404および406の動作を実行するように構成され得る。
【０１２０】
図5を参照すると、ブロック502において、コンピューティングデバイスは、(たとえば、そのプロセッサ/処理コアを介して)観測を実行して、モバイルデバイスシステムの様々なレベルにおいて計装されている様々な構成要素から局所的挙動情報を収集し得る。一実施形態では、このことは、図2を参照しながら上記で説明した挙動観測器モジュール202を介して達成され得る。ブロック503において、コンピューティングデバイスは、観測、収集された挙動情報、および/またはモバイルデバイスの挙動を特徴付ける、挙動情報構造を生成し得る。ブロック504において、コンピューティングデバイスは、完全な分類器モデル(たとえば、ネットワークサーバから受信されたモデルなど)を使用して、簡潔な分類器モデル、または複雑さ(または「簡潔さ」)のレベルが様々である簡潔な分類器モデルのファミリーを生成し得る。このことを達成するために、コンピューティングデバイスは、完全な分類器モデルの中に含まれるブーストされた決定株のファミリーを選別して、削減された数のブーストされた決定株を含み、かつ/または限られた数のテスト条件を評価する、簡潔な分類器モデルを生成し得る。
【０１２１】
ブロック506において、コンピューティングデバイスは、簡潔な分類器モデル(すなわち、最少の数の異なるモバイルデバイスの状態、特徴、挙動、または条件に基づくモデル)のファミリーの中の、モバイルデバイスによってまだ評価または適用されていない最も簡潔な分類器を選択し得る。一実施形態では、このことは、コンピューティングデバイスが分類器モデルの順位付けられたリストの中で最初の分類器モデルを選択することによって達成され得る。
【０１２２】
ブロック508において、コンピューティングデバイスは、収集された挙動情報または挙動情報構造を、選択された簡潔な分類器モデルの中のブーストされた各決定株に適用し得る。ブーストされた決定株が二分決定であり、簡潔な分類器モデルが同じテスト条件に基づく多くの二分決定を選択することによって生成されるので、簡潔な分類器モデルの中のブーストされた決定株に挙動情報構造を適用する処理は、並列動作で実行されてよい。代替的に、ブロック508において適用される挙動情報構造は、簡潔な分類器モデルの中に含まれる限られた数のテスト条件パラメータをちょうど含むように切り捨てられるかまたはフィルタ処理されてよく、それによって、モデルを適用する際の計算量はさらに低減される。
【０１２３】
ブロック510において、コンピューティングデバイスは、収集された挙動情報を簡潔な分類器モデルの中のブーストされた各決定株に適用した結果の加重平均を計算または決定し得る。ブロック512において、コンピューティングデバイスは、計算された加重平均をしきい値と比較し得る。決定ブロック514において、コンピューティングデバイスは、この比較の結果および/または選択された簡潔な分類器モデルを適用することによって生成された結果が、疑わしいかどうかを決定し得る。たとえば、コンピューティングデバイスは、挙動を悪意があるかまたは良性であるかのいずれかとして分類するために、これらの結果が高い信頼度で使用され得るかどうかを決定し得、そうでない場合、挙動を疑わしいものとして扱ってよい。
【０１２４】
結果が疑わしいとコンピューティングデバイスが決定する場合(たとえば、決定ブロック514=「Yes」)、コンピューティングデバイスは、ブロック506〜512における動作を繰り返して、悪意があるかまたは良性であるものとして挙動が高い信頼度で分類されるまで、より多くのデバイス状態、特徴、挙動、または条件を評価するもっと強い(すなわち、より簡潔ではない)分類器モデルを選択および適用し得る。良性または非良性のいずれかとして挙動が高い信頼度で分類され得ると決定することなどによって、結果が疑わしくないとコンピューティングデバイスが決定する場合(たとえば、決定ブロック514=「No」)、ブロック516において、コンピューティングデバイスは、ブロック512において生成された比較の結果を使用して、良性であるか、非良性であるか、または潜在的に悪意があるものとして、モバイルデバイスの挙動を分類し得る。
【０１２５】
代替実施形態方法では、上記で説明した動作は、簡潔な分類器モデルの中にすでにないブーストされた決定株を連続的に選択すること、選択された決定株と同じモバイルデバイスの状態、特徴、挙動、または条件に依存する(したがって、1つの決定結果に基づいて適用され得る)すべての他のブーストされた決定株を特定すること、同じモバイルデバイスの状態、特徴、挙動、または条件に依存する選択されたすべての特定された他のブーストされた決定株を簡潔な分類器モデルに含めること、および試験条件の決定された数に等しい回数、プロセスを繰り返すことによって、達成され得る。選択されたブーストされた決定株と同じテスト条件に依存するすべてのブーストされた決定株が毎回簡潔な分類器モデルに追加されるので、このプロセスが実行される回数を限定することは、簡潔な分類器モデルの中に含まれるテスト条件の数を限定する。
【０１２６】
図6は、一実施形態による、動的かつ適応的な観測を実行するための例示的な方法600を示す。方法600は、コンピューティングデバイス(たとえば、モバイルデバイスまたはリソース制約のあるデバイスなど)の中のプロセッサまたは処理コアによって、独立に、または図2〜図5を参照しながら上記で説明した方法または動作の一部としてのいずれかで実行され得る。たとえば、いくつかの実施形態では、コンピューティングデバイスは、図6に示すブロック602および603の動作の一部として、図4に示すブロック404および406の動作を実行するように構成され得る。いくつかの実施形態では、コンピューティングデバイスは、図4に示すブロック412〜416のいずれかの動作の一部として、図6に示すブロック604〜618の動作を実行するように構成され得る。
【０１２７】
ブロック602において、コンピューティングデバイスは、モバイルデバイスの劣化に寄与し得る多数の要因/挙動のサブセットを監視/観測することによって、粗い観測を実行し得る。ブロック603において、コンピューティングデバイスは、粗い観測、および/または粗い観測に基づくモバイルデバイス挙動を特徴付ける、挙動情報構造を生成し得る。ブロック604において、コンピューティングデバイスは、モバイルデバイスの劣化に潜在的に寄与し得る、粗い観測に関連するサブシステム、プロセス、および/またはアプリケーションを特定し得る。このことは、たとえば、複数のソースから受信された情報をモバイルデバイスのセンサーから受信されたコンテキスト情報と比較することによって達成され得る。ブロック606において、コンピューティングデバイスは、粗い観測に基づいて挙動分析動作を実行し得る。一実施形態では、ブロック603および604の一部として、コンピューティングデバイスは、図2〜図10を参照しながら上記で説明した動作のうちの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の一部として、コンピューティングデバイスは、限られた粗い観測値から疑わしい挙動を特定するため、より詳細に観測するべき挙動を動的に決定するため、また観測のために必要な詳細さの正確なレベルを動的に決定するために、システムの挙動のリアルタイムな挙動分析を実行し得る。このことは、コンピューティングデバイスが、デバイス上での大量のプロセッサリソース、メモリリソース、またはバッテリーリソースの使用を必要とせずに、問題を効率的に特定し、問題が発生するのを防止することを可能にする。
【０１３４】
様々な実施形態では、プロセッサまたは処理コア(総称して「プロセッサ」)は、挙動を監視および分析するための動作を、ターゲットコンピューティングデバイスの挙動監視セキュリティシステムを介して実行するように構成され得る。挙動監視セキュリティシステムは、図2を参照しながら上記で説明したシステム200などの、包括的な挙動監視および分析システムであり得る。様々な実施形態では、プロセッサは、ターゲットコンピューティングデバイスの中に、またはターゲットコンピューティングデバイスと異なるコンピューティングデバイスの中に含まれ得る。
【０１３５】
様々な実施形態は、様々なコンピューティングデバイス上に実施されてよく、その一例が図7に示される。詳細には、図7は、実施形態のいずれかとともに使用するのに好適なスマートフォン/セルフォン700の形態でのモバイルコンピューティングデバイスのシステムブロック図である。セルフォン700は、内部メモリ704、ディスプレイ706、およびスピーカー708に結合されたプロセッサ702を含み得る。加えて、セルフォン700は、プロセッサ702に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ712に接続され得る、電磁放射を送り受信するためのアンテナ710を含み得る。セルフォン700はまた、通常、ユーザ入力を受けるためのメニュー選択ボタンまたはロッカースイッチ714を含む。
【０１３６】
一般的なセルフォン700はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化するとともに、受信された音のデータパケットを復号して、音を生成するためにスピーカー708に供給されるアナログ信号を生成する、音声符号化/復号(CODEC)回路716を含む。また、プロセッサ702、ワイヤレストランシーバ712、およびCODEC716のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含み得る。セルフォン700は、ワイヤレスデバイス間の低電力短距離通信のためのZigBeeトランシーバ(すなわち、IEEE802.15.4トランシーバ)、または他の類似の通信回路構成(たとえば、Bluetooth(登録商標)またはWiFiプロトコルなどを実装する回路構成)をさらに含み得る。
【０１３７】
上記で説明した実施形態およびネットワークサーバは、図8に示すサーバ800などの様々な市販のサーバデバイスにおいて実施され得る。そのようなサーバ800は、通常、揮発性メモリ802、およびディスクドライブ803などの大容量の不揮発性メモリに結合されたプロセッサ801を含む。サーバ800はまた、プロセッサ801に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ804を含み得る。サーバ800はまた、他の通信システムコンピュータおよびサーバに結合されたローカルエリアネットワークなどのネットワーク805とデータ接続を確立するために、プロセッサ801に結合されたネットワークアクセスポート806を含み得る。
【０１３８】
プロセッサ702、801は、以下で説明する様々な実施形態の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、ワイヤレス通信機能に専用の1つのプロセッサ、および他のアプリケーションを実行させるのに専用の1つのプロセッサのような、複数のプロセッサ702が設けられ得る。通常、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ902、801にロードされる前に、内部メモリ704、802に記憶され得る。プロセッサ702、801は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。いくつかのサーバでは、プロセッサ801は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。いくつかの受信機デバイスでは、プロセッサ801に結合された個別のメモリチップの中にセキュアメモリがあり得る。内部メモリ704、802は、揮発性メモリ、もしくはフラッシュメモリなどの不揮発性メモリ、または両方の混合であり得る。本明細書においては、メモリへの一般的な言及は、内部メモリ704、802、デバイスに差し込まれたリムーバブルメモリ、プロセッサ702、801自体の中のメモリを含む、プロセッサ702、801によってアクセス可能なすべてのメモリを指す。
【０１３９】
本出願で使用する「構成要素」、「モジュール」、「システム」、「エンジン」、「生成器」、「マネージャ」などの用語は、限定はしないが、特定の動作または機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどの、コンピュータ関連エンティティを含むものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであってよい。例として、コンピューティングデバイス上で実行しているアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれることがある。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してよく、1つの構成要素は、1つのプロセッサもしくはコアに局在してよく、かつ/または2つ以上のプロセッサもしくはコアの間で分散されてよい。加えて、これらの構成要素は、様々な命令および/またはデータ構造を記憶した様々な非一時的コンピュータ可読媒体から実行し得る。構成要素は、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読取り/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信し得る。
【０１４０】
上記の方法の説明およびプロセスフロー図は、例示的な例として与えられるものにすぎず、様々な実施形態のステップが、提示された順序で実行されなければならないことを要求または示唆するものではない。当業者なら諒解するように、上記の実施形態におけるステップの順序は、任意の順序で実行されてよい。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は単に、方法の説明を通じて読者を案内するために使用される。さらに、たとえば、冠詞「a」、「an」、または「the」を使用する、請求項の要素に対する単数形でのいかなる参照も、要素を単数形に限定すると解釈されるべきではない。
【０１４１】
本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能性に関して上記で説明された。そのような機能がハードウェアとして実装されるのか、それともソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課される設計制約によって決まる。当業者は、説明した機能を特定のアプリケーションごとに様々な方法で実装し得るが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【０１４２】
本明細書で開示する実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DPC)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行されてよい。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DPCとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DPCコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてよい。代替的に、いくつかのステップまたは方法は、所与の機能に専用の回路構成によって実行されてよい。
【０１４３】
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体上または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶され得る。本明細書で開示した方法またはアルゴリズムのステップは、非一時的コンピュータ可読またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて具現化され得る。非一時的コンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得るとともにコンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。追加として、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在し得る。
【０１４４】
開示した実施形態の前述の説明は、いかなる当業者も本発明を作成または使用することができるように提供される。これらの実施形態に対する様々な変更は当業者には容易に明らかとなり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明は、本明細書に示す実施形態に限定されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【０１４５】
100  通信システム
102  モバイルデバイス
104  セル電話ネットワーク
106  セル基地局
108  ネットワーク運用センター
110  インターネット
112  双方向ワイヤレス通信リンク
114  サーバ
116  ネットワークサーバ
118  クラウドサービスプロバイダネットワーク
130  システムオンチップ
132  デジタル信号プロセッサ
134  モデムプロセッサ
136  グラフィックスプロセッサ
138  アプリケーションプロセッサ
140  コプロセッサ
141  相互接続/バスモジュール
142  アナログおよびカスタム回路構成
144  システム構成要素およびリソース
146  メモリ
150  クロック
152  電圧調節器
200  挙動監視および分析システム、システム
202  挙動観測器モジュール
204  挙動抽出器モジュール
206  挙動分析器モジュール
208  作動器モジュール
300  サーバ方法、方法
400  方法
500  実施形態方法、方法
600  方法
700  スマートフォン/セルフォン、セルフォン
702  プロセッサ
704  内部メモリ
706  ディスプレイ
708  スピーカー
710  アンテナ
712  ワイヤレストランシーバ
716  音声符号化/復号(CODEC)回路、CODEC
800  サーバ
801  プロセッサ
802  揮発性メモリ、内部メモリ
803  ディスクドライブ
804  フロッピーディスクドライブ、コンパクトディスク(CD)、またはDVDディスクドライブ
806  ネットワークアクセスポート
【図１Ａ】
2018514848.tif 000003
【図１Ｂ】
2018514848.tif 000004
【図２】
2018514848.tif 000005
【図３】
2018514848.tif 000006
【図４】
2018514848.tif 000007
【図５】
2018514848.tif 000008
【図６】
2018514848.tif 000009
【図７】
2018514848.tif 000010
【図８】
2018514848.tif 000011
【手続補正書】
【提出日】平成29年9月26日(2017.9.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおいて動作するソフトウェアアプリケーションの挙動を分析する方法であって、
第1の挙動情報構造を、前記コンピューティングデバイスのプロセッサにおいてサーバコンピューティングデバイスから受信するステップと、
第2の挙動情報構造を、前記コンピューティングデバイスの前記プロセッサを介して生成するステップであって、
前記第1の挙動情報構造が、前記ソフトウェアアプリケーションを実行するときに前記コンピューティングデバイスが示すべき予期される挙動の範囲を一括して特定する複数の値を含み、
前記第2の挙動情報構造が、前記ソフトウェアアプリケーションの観測された挙動を一括して特徴付ける値を含む、ステップと、
比較結果を生成するために、前記第1および第2の挙動情報構造を比較するステップと、
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、第1の分析結果を生成するために、前記第2の挙動情報構造を第1の機械学習分類器モデルに適用するステップと
を備える方法。
【請求項２】
前記第1の挙動情報構造を受信するステップが、
少なくとも1つの静的な分析動作、および
少なくとも1つの動的な分析動作
を実行する前記サーバコンピューティングデバイスから導出された情報を含むベクトルデータ構造を受信するステップ
を備える、請求項1に記載の方法。
【請求項３】
前記生成された比較結果を前記サーバコンピューティングデバイスへ送るステップをさらに備える、請求項1に記載の方法。
【請求項４】
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させるステップ
をさらに備える、請求項1に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第1の分析結果を使用するステップをさらに備える、請求項1に記載の方法。
【請求項６】
前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にあるという決定に応答して、第2の分析結果を生成するために、前記第2の挙動情報構造を第2の機械学習分類器モデルに適用するステップと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第2の分析結果を使用するステップと
をさらに備える、請求項1に記載の方法。
【請求項７】
アプリケーション固有の分類器モデルを生成するステップと、
前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記第2の挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用するステップと
をさらに備える、請求項1に記載の方法。
【請求項８】
前記アプリケーション固有の分類器モデルを生成するステップが、
複数のテスト条件を含む完全な分類器モデルを受信するステップと、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定するステップと、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定するステップと、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成するステップと
を備える、請求項7に記載の方法。
【請求項９】
コンピューティングデバイスであって、
動作を実行するようにプロセッサ実行可能命令を用いて構成されたプロセッサを備え、前記動作が、
第1の挙動情報構造を、サーバコンピューティングデバイスから受信することと、
第2の挙動情報構造を生成することであって、
前記第1の挙動情報構造が、ソフトウェアアプリケーションを実行するときに前記コンピューティングデバイスが示すべき予期される挙動の範囲を一括して特定する複数の値を含み、
前記第2の挙動情報構造が、前記ソフトウェアアプリケーションの観測された挙動を一括して特徴付ける値を含む、生成することと、
比較結果を生成するために、前記第1および第2の挙動情報構造を比較することと、
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、第1の分析結果を生成するために、前記第2の挙動情報構造を第1の機械学習分類器モデルに適用することと
を備える、コンピューティングデバイス。
【請求項１０】
前記第1の挙動情報構造を受信することが、
少なくとも1つの静的な分析動作、および
少なくとも1つの動的な分析動作
を実行する前記サーバコンピューティングデバイスから導出された情報を含むベクトルデータ構造を受信すること
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項9に記載のコンピューティングデバイス。
【請求項１１】
前記生成された比較結果を前記サーバコンピューティングデバイスへ送ることをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項9に記載のコンピューティングデバイス。
【請求項１２】
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させること
をさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項9に記載のコンピューティングデバイス。
【請求項１３】
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第1の分析結果を使用することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項9に記載のコンピューティングデバイス。
【請求項１４】
前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にあるという決定に応答して、第2の分析結果を生成するために、前記第2の挙動情報構造を第2の機械学習分類器モデルに適用することと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第2の分析結果を使用することと
をさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項9に記載のコンピューティングデバイス。
【請求項１５】
アプリケーション固有の分類器モデルを生成することと、
前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記第2の挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用することと
をさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項9に記載のコンピューティングデバイス。
【請求項１６】
前記アプリケーション固有の分類器モデルを生成することが、
複数のテスト条件を含む完全な分類器モデルを受信することと、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定することと、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成することと
を備えるような動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項15に記載のコンピューティングデバイス。
【請求項１７】
コンピューティングデバイスのプロセッサに、動作を実行させるように構成されたプロセッサ実行可能ソフトウェア命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
第1の挙動情報構造を、サーバコンピューティングデバイスから受信することと、
第2の挙動情報構造を生成することであって、
前記第1の挙動情報構造が、ソフトウェアアプリケーションを実行するときに前記コンピューティングデバイスが示すべき予期される挙動の範囲を一括して特定する複数の値を含み、
前記第2の挙動情報構造が、前記ソフトウェアアプリケーションの観測された挙動を一括して特徴付ける値を含む、生成することと、
比較結果を生成するために、前記第1および第2の挙動情報構造を比較することと、
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、第1の分析結果を生成するために、前記第2の挙動情報構造を第1の機械学習分類器モデルに適用することと
を備える、非一時的コンピュータ可読記憶媒体。
【請求項１８】
前記第1の挙動情報構造を受信することが、
少なくとも1つの静的な分析動作、および
少なくとも1つの動的な分析動作
を実行する前記サーバコンピューティングデバイスから導出された情報を含むベクトルデータ構造を受信すること
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記比較結果を前記サーバコンピューティングデバイスへ送ることをさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させること
をさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項２１】
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第1の分析結果を使用することをさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項２２】
前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にあるという決定に応答して、第2の分析結果を生成するために、前記第2の挙動情報構造を第2の機械学習分類器モデルに適用することと、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第2の分析結果を使用することと
をさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
アプリケーション固有の分類器モデルを生成することと、
前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記第2の挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用することと
をさらに備える動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項17に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記アプリケーション固有の分類器モデルを生成することが、
複数のテスト条件を含む完全な分類器モデルを受信することと、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定することと、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定することと、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成することと
を備えるような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成される、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
コンピューティングデバイスであって、
第1の挙動情報構造を、サーバコンピューティングデバイスから受信するための手段と、
第2の挙動情報構造を生成するための手段であって、
前記第1の挙動情報構造が、ソフトウェアアプリケーションを実行するときに前記コンピューティングデバイスが示すべき予期される挙動の範囲を一括して特定する複数の値を含み、
前記第2の挙動情報構造が、前記ソフトウェアアプリケーションの観測された挙動を一括して特徴付ける値を含む、手段と、
比較結果を生成するために、前記第1および第2の挙動情報構造を比較するための手段と、
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、第1の分析結果を生成するために、前記第2の挙動情報構造を第1の機械学習分類器モデルに適用するための手段と
を備えるコンピューティングデバイス。
【請求項２６】
前記生成された比較結果に基づく、前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記ソフトウェアアプリケーションを評価するための精査レベルを増大させるための手段
をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第1の分析結果を使用するための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２８】
前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にあるという決定に応答して、第2の分析結果を生成するために、前記第2の挙動情報構造を第2の機械学習分類器モデルに適用するための手段と、
前記ソフトウェアアプリケーションが非良性であるかどうかを決定するために、前記第2の分析結果を使用するための手段と
をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項２９】
アプリケーション固有の分類器モデルを生成し、前記生成された比較結果に基づく、前記ソフトウェアアプリケーションの前記観測された挙動が予期される挙動の前記範囲内にないという決定に応答して、前記第2の挙動情報構造を前記生成されたアプリケーション固有の分類器モデルに適用するための手段をさらに備える、請求項25に記載のコンピューティングデバイス。
【請求項３０】
前記アプリケーション固有の分類器モデルを生成するための手段が、
複数のテスト条件を含む完全な分類器モデルを受信するための手段と、
前記ソフトウェアアプリケーションによって使用されるデバイス特徴を特定するための手段と、
前記特定されたデバイス特徴を評価する、前記複数のテスト条件の中のテスト条件を特定するための手段と、
前記特定されたテスト条件を含むように前記アプリケーション固有の分類器モデルを生成するための手段と
を備える、請求項29に記載のコンピューティングデバイス。
【国際調査報告】
2018514848.tif 000012
2018514848.tif 000013