(57)【要約】  様々な実施形態は、コンピューティングデバイスにおいてデバイスの挙動を評価し、特定の挙動のホワイトリスト登録を可能にする方法を含む。様々な実施形態は、コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視するステップと、ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成するステップとを含んでもよい。挙動ベクトル情報構造は、分析結果を生成するために機械学習分類器モデルに適用されてもよい。分析結果は、ソフトウェアアプリケーションの第1の監視されている活動を、良性である、疑わしい、および非良性である、のうちの1つとして分類するために使用されてもよい。ソフトウェアアプリケーションの第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求するプロンプトが、ユーザに表示されてもよい。第1の監視されている活動が、ユーザ入力を受け取ったことに応答して、デバイス挙動のホワイトリストに追加され得る。
2018522321.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおけるデバイスの挙動を評価する方法であって、
前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視するステップと、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成するステップと、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用するステップと、
前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用するステップと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示するステップと、
前記プロンプトを表示したことに応答したユーザ入力を受け取るステップと、
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加するステップと
を備える、方法。
【請求項２】
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動を前記ホワイトリストに追加するステップが、前記ソフトウェアアプリケーションに関連して前記第1の監視されている活動をホワイトリストデータベースに記憶するステップを備える、請求項1に記載の方法。
【請求項３】
前記第1の監視されている活動を1つまたは複数のサブカテゴリへさらに分類するためにマルチラベル分類またはメタ分類技法を使用するステップをさらに備え、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトを表示するステップが、前記第1の監視されている活動と関連付けられる前記1つまたは複数のサブカテゴリを含むように前記プロンプトを表示するステップを備える、請求項1に記載の方法。
【請求項４】
前記第1の監視されている活動を前記ホワイトリストに含めたことに応答して、前記第1の監視されている活動を監視するのを止めるステップをさらに備える、請求項1に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションの活動を監視し続け、第2の挙動ベクトル情報構造を生成し、追加の分析結果を生成するために前記第2の挙動ベクトル情報構造を第2の機械学習分類器モデルに適用し、かつ第2の監視されている活動をサブカテゴリへ分類するために前記追加の分析結果を使用するステップと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに分類されるかどうかを判定するステップと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに副分類されないとの判定に応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する、追加のプロンプトを表示するステップと
をさらに備える、請求項3に記載の方法。
【請求項６】
前記追加のプロンプトを表示したことに応答した追加のユーザ入力を受け取るステップと、
前記追加のユーザ入力を受け取ったことに応答して、前記第1の監視されている活動を前記ホワイトリストから削除し、かつ前記ソフトウェアアプリケーションを終了するステップと
をさらに備える、請求項5に記載の方法。
【請求項７】
前記追加のプロンプトを表示したことに応答した追加のユーザ入力を受け取るステップと、
前記追加のユーザ入力を受け取ったことに応答して前記第2の監視されている活動を前記ホワイトリストに追加するステップと
をさらに備える、請求項5に記載の方法。
【請求項８】
前記挙動ベクトル情報構造によって特徴付けられる前記第1の監視されている活動の相対的な重要性を判定するステップをさらに備え、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトを表示するステップが、前記第1の監視されている活動の前記相対的な重要性を特定する情報を含むように前記プロンプトを表示するステップを備える、請求項1に記載の方法。
【請求項９】
前記ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される前記コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、前記第1の監視されている活動の前記判定された相対的な重要性との間のトレードオフを均衡させるステップをさらに備える、請求項8に記載の方法。
【請求項１０】
前記均衡させるステップが、前記第1の監視されている活動の前記判定された相対的な重要性に少なくとも部分的に基づいて、作動動作を選択するステップを備える、請求項9に記載の方法。
【請求項１１】
作動動作を選択するステップが、前記挙動の副分類に少なくとも部分的に基づいて、ロバストな分析動作または軽量な分析動作を実行するかを判定するステップを備える、請求項10に記載の方法。
【請求項１２】
メモリと、
ディスプレイと、
前記メモリおよび前記ディスプレイに結合されるプロセッサであって、
コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視することと、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成することと、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用することと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用することと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示することと、
前記プロンプトを表示したことに応答したユーザ入力を受け取ることと、
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加することと
を備える動作を実行するためのプロセッサ実行可能命令を用いて構成される、プロセッサと
を備える、コンピューティングデバイス。
【請求項１３】
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動を前記ホワイトリストに追加することが、前記ソフトウェアアプリケーションに関連して前記第1の監視されている活動をホワイトリストデータベースに記憶することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項12に記載のコンピューティングデバイス。
【請求項１４】
前記第1の監視されている活動を1つまたは複数のサブカテゴリへさらに分類するためにマルチラベル分類またはメタ分類技法を使用することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成され、
前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトを表示することが、前記第1の監視されている活動と関連付けられる前記1つまたは複数のサブカテゴリを含むように前記プロンプトを表示することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、
請求項12に記載のコンピューティングデバイス。
【請求項１５】
前記プロセッサが、前記ホワイトリストに追加される活動をもはや監視しないことで前記コンピューティングデバイスによるオーバーヘッド処理を減らすことをさらに備える動作を実行するようにプロセッサ実行可能命令を用いて構成される、請求項12に記載のコンピューティングデバイス。
【請求項１６】
前記プロセッサが、
前記ソフトウェアアプリケーションの活動を監視し続け、第2の挙動ベクトル情報構造を生成し、追加の分析結果を生成するために前記第2の挙動ベクトル情報構造を第2の機械学習分類器モデルに適用し、かつ第2の監視されている活動をサブカテゴリへ分類するために前記追加の分析結果を使用することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに副分類されるかどうかを判定することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに副分類されないとの判定に応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する、追加のプロンプトを表示することと
をさらに備える動作を実行するように、プロセッサ実行可能命令を用いて構成される、請求項14に記載のコンピューティングデバイス。
【請求項１７】
前記プロセッサが、
前記追加のプロンプトを表示したことに応答した追加のユーザ入力を受け取ることと、
前記追加のユーザ入力を受け取ったことに応答して、前記第1の監視されている活動を前記ホワイトリストから削除し、かつ前記ソフトウェアアプリケーションを終了することと
をさらに備える動作を実行するように、プロセッサ実行可能命令を用いて構成される、請求項16に記載のコンピューティングデバイス。
【請求項１８】
前記プロセッサが、
前記追加のプロンプトを表示したことに応答した追加のユーザ入力を受け取ることと、
前記追加のユーザ入力を受け取ったことに応答して前記第2の監視されている活動を前記ホワイトリストに追加することと
をさらに備える動作を実行するように、プロセッサ実行可能命令を用いて構成される、請求項16に記載のコンピューティングデバイス。
【請求項１９】
前記挙動ベクトル情報構造によって特徴付けられる前記第1の監視されている活動の相対的な重要性を判定することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成され、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトを表示することが、前記第1の監視されている活動の前記相対的な重要性を特定する情報を含むように前記プロンプトを表示することを備える、請求項12に記載のコンピューティングデバイス。
【請求項２０】
前記ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される前記コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、前記第1の監視されている活動の前記判定された相対的な重要性との間のトレードオフを均衡させることをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される前記コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、前記第1の監視されている活動の前記判定された相対的な重要性との間のトレードオフを均衡させることが、前記第1の監視されている活動の前記判定された相対的な重要性に少なくとも部分的に基づいて作動動作を選択することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記第1の監視されている活動の前記判定された相対的な重要性に少なくとも部分的に基づいて作動動作を選択することが、前記挙動の副分類に少なくとも部分的に基づいて、ロバストな分析動作または軽量な分析動作を実行するかを判定することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項21に記載のコンピューティングデバイス。
【請求項２３】
コンピューティングデバイスのプロセッサに動作を実行させるように構成されるプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視することと、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成することと、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用することと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用することと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示することと、
前記プロンプトを表示したことに応答したユーザ入力を受け取ることと、
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加することと
を備える、非一時的プロセッサ可読記憶媒体。
【請求項２４】
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動を前記ホワイトリストに追加することが、前記ソフトウェアアプリケーションに関連して前記第1の監視されている活動をホワイトリストデータベースに記憶することを備えるように、前記コンピューティングデバイスの前記プロセッサに動作を実行させるように前記記憶されたプロセッサ実行可能命令が構成される、請求項23に記載の非一時的プロセッサ可読記憶媒体。
【請求項２５】
前記第1の監視されている活動を1つまたは複数のサブカテゴリへさらに分類するためにマルチラベル分類またはメタ分類技法を使用することをさらに備える動作を、前記コンピューティングデバイスの前記プロセッサに実行させるように前記記憶されたプロセッサ実行可能命令が構成され、
前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトを表示することが、前記第1の監視されている活動と関連付けられる前記1つまたは複数のサブカテゴリを含むように前記プロンプトを表示することを備えるように、前記コンピューティングデバイスの前記プロセッサに動作を実行させるように前記記憶されたプロセッサ実行可能命令が構成される、
請求項23に記載の非一時的プロセッサ可読記憶媒体。
【請求項２６】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、前記ホワイトリストに追加される活動をもはや監視しないことで前記コンピューティングデバイスによるオーバーヘッド処理を減らすことをさらに備える動作を実行させるように構成される、請求項23に記載の非一時的プロセッサ可読記憶媒体。
【請求項２７】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、
前記ソフトウェアアプリケーションの活動を監視し続け、第2の挙動ベクトル情報構造を生成し、追加の分析結果を生成するために前記第2の挙動ベクトル情報構造を第2の機械学習分類器モデルに適用し、かつ第2の監視されている活動をサブカテゴリへ分類するために前記追加の分析結果を使用することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに副分類されるかどうかを判定することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに副分類されないとの判定に応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するように前記ユーザに要求する、追加のプロンプトを表示することと
をさらに備える動作を実行させるように構成される、請求項25に記載の非一時的プロセッサ可読記憶媒体。
【請求項２８】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、
前記追加のプロンプトを表示したことに応答した追加のユーザ入力を受け取ることと、
前記追加のユーザ入力を受け取ったことに応答して、前記第1の監視されている活動を前記ホワイトリストから削除し、かつ前記ソフトウェアアプリケーションを終了することと
をさらに備える動作を実行させるように構成される、請求項27に記載の非一時的プロセッサ可読記憶媒体。
【請求項２９】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、
前記追加のプロンプトを表示したことに応答した追加のユーザ入力を受け取ることと、
前記追加のユーザ入力を受け取ったことに応答して前記第2の監視されている活動を前記ホワイトリストに追加することと
をさらに備える動作を実行させるように構成される、請求項27に記載の非一時的プロセッサ可読記憶媒体。
【請求項３０】
コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視するための手段と、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成するための手段と、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用するための手段と、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用するための手段と、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示するための手段と、
前記プロンプトを表示したことに応答したユーザ入力を受け取るための手段と、
前記ユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加するための手段と
を備える、コンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、2015年5月11日に出願された"Methods and Systems for Behavior-Specific Actuation for Real-Time Whitelisting"という表題の米国仮特許出願第62/159,433号の優先権の利益を主張し、この仮特許出願の内容全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
セルラー通信技術およびワイヤレス通信技術は、過去数年の間に爆発的な成長をとげている。この成長は、より優れた通信、ハードウェア、より大きいネットワーク、およびより信頼できるプロトコルによって加速されている。結果として、ワイヤレスサービスプロバイダは今や、情報、リソース、および通信に対する前例のないレベルのアクセスを、顧客に提供することができる。これらの強化と歩調を合わせるために、消費者向け電子デバイス(たとえば、携帯電話、時計、ヘッドフォン、遠隔制御装置など)は、かつてないほど強力かつ複雑になり、今や一般的に、強力なプロセッサと、大規模メモリと、それらのデバイス上で複雑かつ強力なソフトウェアアプリケーションを実行することを可能にする他のリソースとを含む。これらのデバイスはまた、デバイスのユーザがアプリケーションダウンロードサービス(たとえば、Apple(登録商標) App Store、Windows(登録商標) Store、Google(登録商標) playなど)またはインターネットから、様々なソフトウェアアプリケーションをダウンロードし実行することを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
これらおよび他の改善により、ますます多くのモバイルデバイスおよびワイヤレスデバイスのユーザは今や、各自のデバイスを使用して、機密情報(たとえば、クレジットカード情報、連絡先など)を記憶し、かつ/またはセキュリティが重要であるタスクを達成する。たとえば、モバイルデバイスユーザは頻繁に、各自のデバイスを使用して、商品を購入し、機密の通信を送信および受信し、支払いを行い、預金口座を管理し、他の機密取引を行う。これらの動向により、マルウェア攻撃およびサイバー攻撃にとって、モバイルデバイスは急速に次の開拓分野になりつつある。したがって、モバイルデバイスおよびワイヤレスデバイスなどのリソースが制約されたコンピューティングデバイスにおいてマルウェアおよび他の非良性のデバイスの挙動をより良好に特定してそれに応答する、改善された新たなセキュリティソリューションが消費者に有益である。
【課題を解決するための手段】
【０００４】
様々な実施形態は、コンピューティングデバイスにおいてデバイスの挙動を評価し、特定の挙動のホワイトリスト登録を可能にする方法を含む。様々な実施形態は、コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視するステップと、ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成するステップとを含んでもよい。挙動ベクトル情報構造は、分析結果を生成するために機械学習分類器モデルに適用されてもよい。分析結果は、ソフトウェアアプリケーションの第1の監視されている活動を、良性である(benign)、疑わしい(suspicious)、および非良性である(non-benign)、のうちの1つとして分類するために使用されてもよい。この分類は、ソフトウェアアプリケーションの第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトとともに表示されてもよい。ユーザ入力が、このプロンプトを表示したことに応答して受信されることがあり、第1の監視されている活動が、ユーザ入力を受け取ったことに応答してホワイトリストに追加されることがある。いくつかの実施形態では、ユーザ入力を受け取ったことに応答して第1の監視されている活動をホワイトリストに追加するステップは、ソフトウェアアプリケーションに関連して第1の監視されている活動をホワイトリストデータベースに記憶するステップを含んでもよい。
【０００５】
いくつかの実施形態では、本方法はさらに、マルチラベル分類またはメタ分類技法を使用して、第1の監視されている活動を1つまたは複数のサブカテゴリに分類するステップを含んでもよい。いくつかの実装形態では、本方法はさらに、ホワイトリストに追加された活動を監視するのを止めるステップを含んでもよい。
【０００６】
いくつかの実施形態では、本方法はさらに、ソフトウェアアプリケーションの活動を監視し続けるステップと、監視された活動に少なくとも部分的に基づいて第2の挙動ベクトル情報構造を生成するステップとを含んでもよい。第2の挙動ベクトル情報構造は、追加の分析結果を生成するために第2の機械学習分類器モデルに適用されてもよい。良性である、疑わしい、および非良性であるのうちの1つとして第2の監視されている活動を分類し、第2の監視されている活動が第1の監視されている活動と同じサブカテゴリに副分類されるかどうかを判定するために、追加の分析結果が使用されてもよい。第2の監視されている活動が第1の監視されている活動と同じサブカテゴリに副分類されないとの判定に応答して、ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求する、追加のプロンプトが表示されてもよい。いくつかの実施形態では、本方法はさらに、追加のプロンプトを表示したことに応答して、追加のユーザ入力を受け取るステップを含んでもよい。いくつかの実施形態では、追加のユーザ入力を受け取ったことに応答して、本方法は、ホワイトリストから第1の監視されている活動を削除するステップと、ソフトウェアアプリケーションを終了するステップおよび/または第2の監視されている活動をホワイトリストに追加するステップとを含んでもよい。
【０００７】
いくつかの実施形態はさらに、第1の監視されている活動の相対的な重要性を判定するステップを含むことがあり、相対的な重要性は挙動ベクトル情報構造によって特徴付けられる。いくつかの実施形態では、第1の監視されている活動の相対的な重要性を特定する情報は、ソフトウェアアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求するプロンプトに含まれてもよい。いくつかの実施形態はさらに、ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される処理リソース、メモリリソース、および/またはエネルギーリソースと、第1の監視されている活動の判定された相対的な重要性との間でバランスをとるステップを含んでもよい。いくつかの実施形態では、バランスをとるステップは、第1の監視されている活動の判定された相対的な重要性に少なくとも部分的に基づいて、作動動作を選択するステップを含んでもよい。いくつかの実施形態では、作動動作を選択するステップは、挙動の副分類に少なくとも部分的に基づいて、ロバストな分析動作または軽量な分析動作を実行するかを判定するステップを含んでもよい。
【０００８】
さらなる実施形態は、メモリと、ディスプレイと、上で説明された方法の動作を実行するためのプロセッサ実行可能命令で構成されるプロセッサとを有するコンピューティングデバイスを含む。さらなる実施形態は、コンピューティングデバイスに上で説明された方法の動作を実行させるように構成されるプロセッサ実行可能命令が記憶されている非一時的プロセッサ可読媒体を含む。様々な実施形態は、上で説明された方法の機能を実行するための手段を有するコンピューティングデバイスを含む。
【０００９】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、特許請求の範囲の例示的な実施形態を示し、上で与えられた一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴を説明するのに役立つ。
【図面の簡単な説明】
【００１０】
【図１】本開示の様々な実施形態による、良性の、疑わしい、または非良性の挙動を、カテゴリ、サブカテゴリ、グループ、またはサブグループに分類するために、マルチラベル分類またはメタ分類技法を使用するように構成されるコンピューティングデバイスに含まれてもよい、例示的なシステムオンチップのコンポーネントを示すブロック図である。
【図２Ａ】本開示の様々な実施形態による、挙動を分類し副分類するように構成される、モバイルデバイスの中の例示的な論理コンポーネントおよび情報の流れを示すブロック図である。
【図２Ｂ】本開示のある実施形態による、様々な挙動を選択的にホワイトリスト登録する方法を示すプロセスフロー図である。
【図３Ａ】本開示のある実施形態による、完全な分類器モデルに含まれる特徴およびデータポイントのサブセットを含む、簡潔な分類器モデルを生成する方法を示すプロセスフロー図である。
【図３Ｂ】本開示の別の実施形態による、コンピューティングデバイスにおいてローカルに簡潔な分類器モデルを生成する別の方法を示すプロセスフロー図である。
【図３Ｃ】本開示のある実施形態による、コンピューティングデバイスの挙動を分類するためにローカルに生成された簡潔な分類器モデルを使用する方法を示すプロセスフロー図である。
【図３Ｄ】コンピューティングデバイスにおいて簡潔な分類器モデルを生成して使用するさらに別の方法を示すプロセスフロー図である。
【図４Ａ】より専心的で簡潔な分類器モデルを生成する際のコンピューティングデバイスによる使用に適したブーストされた決定株を含む、完全な分類器モデルを生成する方法を示すプロセスフロー図である。
【図４Ｂ】本開示の様々な実施形態による、ブーストされた決定株分類器を生成するのに適した例示的な方法を示すプロセスフロー図である。
【図５】本開示のある実施形態による、挙動を分類し副分類するための方法を示すプロセスフロー図である。
【図６】本開示のある実施形態による、適応的な観測を実行するための方法を示すプロセスフロー図である。
【図７】本開示のある実施形態において使用するのに適したモバイルデバイスのコンポーネントブロック図である。
【発明を実施するための形態】
【００１１】
添付の図面を参照して、様々な実施形態が詳細に説明される。可能な場合はいつでも、同一または同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実施態様に対してなされる参照は、説明が目的であり、特許請求の範囲を限定することを意図していない。
【００１２】
概して、本開示の様々な実施形態は、コンピューティングデバイスの性能、電力利用レベル、ネットワーク使用レベル、セキュリティ、および/またはプライバシーをしばしば経時的に劣化させる条件および挙動を効率的に特定し、分類し、モデル化し、防止し、および/または修正する方法と、その方法を実施するように構成されるコンピューティングデバイスとを含む。コンピューティングデバイスは、挙動ベースの機械学習技法を使用してデバイスの挙動を様々なカテゴリへと、たとえば、良性、疑わしい、または非良性へと効率的に分類するように構成される、挙動監視および分析システムを備え得る。コンピューティングデバイスはさらに、マルチラベル分類またはメタ分類技法を使用して、より広い挙動のカテゴリ(すなわち、良性、疑わしい、または非良性)を、追加のカテゴリ、サブカテゴリ、グループ、またはサブグループへとさらに分類する(たとえば、副分類する、カテゴライズする、ラベリングするなど)ように構成されてもよい。コンピューティングデバイスは、特定の挙動の相対的な重要性(たとえば、ソフトウェアアプリケーションまたは挙動がデバイスの適切な動作に与える危険性または脅威の深刻さなど)を、その挙動の副分類に少なくとも部分的に基づいて(たとえば、挙動と関連付けられるカテゴリ、グループ、またはラベルに少なくとも部分的に基づいて)判定し、挙動が疑わしいと判定された理由(たとえば、アドウェアであるなど)および/またはその相対的な重要性を特定するプロンプトを表示し、検出された挙動と関連付けられるアプリケーションをホワイトリスト登録するかどうかを選択するようにユーザに要求し得る。
【００１３】
より広いカテゴリを副分類することで、コンピューティングデバイスは、ある特定の挙動についてのより有用な情報または意味のある情報をユーザに提示することが可能になり、それにより、ユーザは、デバイスがその挙動をどのように分析しそれに応答するかについてのより大きい制御権をもつことが可能になる。たとえば、ユーザがプレイを楽しんでいるゲームにアドウェアプログラムが含まれている場合、アドウェアプログラムが検出されるときにそのゲームを自動的に終了する代わりに、システムは、アドウェアについての情報をユーザに提示し、ゲームをプレイすることの利益が負の特性(たとえば、多数の広告を表示することなど)を上回るかどうかをユーザが決められるようにする。ユーザがゲームを続けると決める場合、システムは、提示しているアドウェアの挙動をユーザがホワイトリスト登録することを可能にし得る。
【００１４】
本明細書では、「ホワイトリスト登録する(whitelisting)」という用語は、疑わしい挙動または非良性の挙動であるものと評価されたソフトウェアアプリケーションが示す挙動が「ホワイトリスト」または「ホワイトリストデータベース」に追加されて、その結果そのアプリケーションがデバイス上で動作を継続できるような、プロセスを指す。
【００１５】
「ホワイトリスト」を利用する従来の解決法は通常、ソフトウェアアプリケーション全体をホワイトリストに追加する(たとえば、アプリケーション全体をホワイトリスト登録する)。ホワイトリスト登録されると、デバイスは、ソフトウェアアプリケーションのさらなる監視または分析を止め、プロンプトを表示すること、または、そうでなければホワイトリスト登録されたソフトウェアアプリケーションと関連付けられる疑わしい活動または非良性の活動をユーザに通知することを止める。アプリケーション全体をホワイトリスト登録することは、マルウェアおよび他の非良性のソフトウェアアプリケーションが、挙動ベースのセキュリティシステムによる検出を(意図的にまたは不注意に)回避することを可能にし得る。たとえば、悪意のあるソフトウェアアプリケーションは最初に、挙動ベースのシステムが低リスクの挙動または非良性の挙動として分類するであろう動作、または、ユーザが許容する可能性が高い動作(たとえば、広告を表示すること、国際携帯機器識別(IMEI)番号をリモートサーバに送信することなど)を実行することがある。マルウェアは、バンキングアプリケーションからの金融情報をサーバに送信すること、またはユーザの知識もしくは同意なしにデバイスの連絡先リストにアクセスすることなどの、より深刻な、重大な、または悪意のある動作を実行する前に、ユーザがアプリケーションをホワイトリスト登録するのを待機することがある。そのアプリケーションはホワイトリスト登録されているので、ユーザは非良性の挙動についてのさらなる通知を受信しない。
【００１６】
本開示によれば、コンピューティングデバイスは、ソフトウェアアプリケーションの個々の挙動をホワイトリスト登録するように構成されてもよい。いくつかの実施形態では、コンピューティングデバイスは、コンピューティングデバイス上で動作しているソフトウェアアプリケーションの活動を監視して、挙動情報を収集するように構成されてもよい。コンピューティングデバイスは、収集された挙動情報を使用して、ソフトウェアアプリケーションの挙動を特徴付ける挙動ベクトル情報構造を生成してもよい。コンピューティングデバイスは、挙動ベクトル情報構造を機械学習分類器モデルに適用して、分析結果を生成してもよい。コンピューティングデバイスは、分析結果を使用して、挙動ベクトル情報構造(または、挙動ベクトル情報構造によって特徴付けられる活動/挙動)を、良性、疑わしい、または非良性などのカテゴリへと分類してもよい。コンピューティングデバイスはまた、分析結果を使用して、挙動ベクトル情報構造を1つまたは複数のカテゴリ(たとえば、ゲーム、アドウェア、IMEI番号をサーバに送信するアプリケーションなど)へと副分類してもよい。コンピューティングデバイスは、挙動の分類および副分類(およびしたがって、挙動が疑わしいまたは非良性であるものとして判定された理由)を表示するプロンプトを表示/レンダリングし、その挙動またはソフトウェアアプリケーションをホワイトリスト登録するかどうか(すなわち、そのアプリケーションを使用する利益が負の特性を上回るかどうか)を選択するようにユーザに要求し得る。挙動がホワイトリスト登録されるべきであることを示すユーザ入力を受け取ったことに応答して、コンピューティングデバイスは、(たとえば、挙動ベクトル情報構造および分析/分類結果をソフトウェアアプリケーションに関連してホワイトリストデータベースに記憶することによって)挙動をホワイトリストに追加し得る。挙動がホワイトリスト登録されると、コンピューティングデバイスは、プロンプトを表示すること、またはそうでなければその挙動の他の発生をユーザに通知することを止め得る。いくつかの実装形態では、コンピューティングデバイスはまた、そのソフトウェアアプリケーションの他の疑わしい挙動もしくは非良性の挙動、および/または、ホワイトリスト登録された挙動と同じサブカテゴリに分類される他の挙動を表示するのを止め得る。アプリケーションの挙動または監視されている活動をホワイトリスト登録することによって、挙動分析システムはもはや、ソフトウェアアプリケーションの同じ挙動または活動を監視または分析する必要がない。ホワイトリスト登録される挙動が位置追跡などの一般的なものである場合には特に、これは潜在的に、システムによるオーバーヘッド処理を減らすことにつながる可能性がある。
【００１７】
非良性の挙動を後で示すホワイトリスト登録されたアプリケーションを監視するために、コンピューティングデバイスは、ソフトウェアアプリケーションの活動または挙動の監視および分析を続け、別のまたは異なる挙動を疑わしいまたは非良性であるものとして分類し、この挙動がホワイトリストに含まれない(たとえば、この第2の挙動は、このアプリケーションのホワイトリストに含まれている挙動と同じサブカテゴリには副分類されない)と判定してもよい。そのような判定に応答して、コンピューティングデバイスは、以前にホワイトリスト登録されたアプリケーションが、疑わしい、もしくは非良性である、追加のまたは異なる挙動に関与していることをユーザに示す、第2のプロンプトを表示してもよい。このプロンプトに応答するユーザ入力を受け取ったことに応答して、コンピューティングデバイスは、新たに検出された挙動をホワイトリスト登録するか、またはソフトウェアアプリケーションを終了するか(またはそうでなければそれに応答するか)を判定するために、受け取られたユーザ入力を使用することができる。
【００１８】
(ソフトウェアアプリケーション全体ではなく)個々の挙動をホワイトリスト登録することによって、ホワイトリスト登録されたソフトウェアアプリケーションの望ましくない挙動の検出の、意図的なまたは不注意による回避を防ぐことができる。コンピューティングデバイスの機能、機能性、および/または動作に対する追加の改善は、下で提供される実施形態の詳細な説明から明らかになろう。
【００１９】
「例示的な」という単語は、本明細書では、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書において説明されるいかなる実装形態も、他の実装形態よりも好ましいか、または有利であると必ずしも解釈されるべきでない。
【００２０】
「モバイルコンピューティングデバイス」および「モバイルデバイス」という用語は、携帯電話、スマートフォン、パーソナルまたはモバイルのマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネット対応携帯電話、ワイヤレスゲームコントローラ、および、性能が重要であるメモリとプログラマブルプロセッサとを含み、節電方法が有益であるようなバッテリ電力で動作する同様のパーソナル電子デバイスのいずれかまたはすべてを指すように、本明細書では互換的に使用される。様々な実施形態は、限られたリソースを有しバッテリで動作する、スマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの実施形態は一般に、プロセッサを含みアプリケーションプログラムを実行する、任意の電子デバイスにおいて有用である。
【００２１】
「性能劣化」という用語は、本出願では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリ持続時間、個人データの損失、悪意のある経済活動(たとえば、無許可のプレミアムショートメッセージサービス(SMS)メッセージを送信すること)、サービス拒否(DoS)、不適切に書かれたまたは設計されたソフトウェアアプリケーション、悪意のあるソフトウェア、マルウェア、ウイルス、断片化されたメモリ、スパイまたはボットネット活動のためにコンピューティングデバイスを乗っ取ることまたはデバイスを利用することに関する動作などの、コンピューティングデバイスの多種多様な望ましくない動作および特性を指すために使用される。また、これらの理由のいずれかで性能を劣化させる挙動、活動、および条件は、本明細書では「良性ではない」または「非良性である」と呼ばれる。
【００２２】
多くの現代のコンピューティングデバイスは、限られた処理リソース、メモリリソース、およびエネルギーリソースしか有しない、リソースが制約されたシステムである。たとえば、モバイルデバイスは、性能および電力利用レベルの経時的な劣化に寄与し得る多くの特徴または要因を含む、複雑かつリソース制約のあるコンピューティングデバイスである。この性能劣化に寄与し得る要因の例は、設計が不十分なソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、およびバックグラウンドプロセスを含む。これらの要因の数、多様性、および複雑さにより、これらの複雑でありながらリソースが制約されたシステムの性能および/または電力利用レベルを劣化させ得る、様々なコンポーネント、挙動、プロセス、動作、条件、状態、または特徴(または、それらの組合せ)のすべてを評価することは、実現可能ではないことが多い。したがって、ユーザ、オペレーティングシステム、またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)が、そのような問題の根源を正確かつ効率的に特定することは困難である。結果として、モバイルデバイスおよび他のリソースが制約されたコンピューティングデバイスのユーザは現在、自身のデバイスの性能および電力利用レベルの経時的な劣化を防止するための、または経年劣化したデバイスをその元の性能および電力利用レベルに回復させるための措置をほとんど有していない。
【００２３】
従来の解決法の制約を克服するために、コンピューティングデバイスは、非良性の挙動およびソフトウェアアプリケーション(たとえば、悪意のあるアプリケーション、不適切に書かれたアプリケーション、デバイスと互換性のないアプリケーションなど)を特定し、そのような挙動/アプリケーションがデバイスの性能、電力利用レベル、ネットワーク使用レベル、セキュリティ、および/またはプライバシーを経時的に劣化させるのを防止するように構成される、挙動監視および分析システム(たとえば、挙動ベースのセキュリティシステム)を備え得る。挙動ベースの機械学習技法を使用することによって、挙動監視および分析システムは、コンピューティングデバイスの応答性、性能、または電力消費特性に、重大な、負の、またはユーザが知覚できる影響を与えることなく、問題を特定し、防止し、修正し、および/またはそうでなければ特定された問題に応答し得る。したがって、このシステムは、限られたリソースを有する、バッテリ電力で動き、かつ性能およびセキュリティが重要な、スマートフォンなどのモバイルコンピューティングデバイスおよびリソースが制約されたコンピューティングデバイスへの包含またはその中での使用によく適している。
【００２４】
様々な実施形態では、挙動監視および分析システムは、観測器プロセス、デーモン、モジュール、またはサブシステム(本明細書では「モジュール」と集合的に呼ばれる)と、挙動抽出器モジュールと、分析器モジュールと、作動器モジュールとを含んでもよい。観測器モジュールは、コンピューティングデバイスシステムの様々なレベルにおいて様々なアプリケーションプログラミングインターフェース(API)、レジスタ、カウンタ、または他のデバイスコンポーネント(本明細書では、まとめて「計測対象コンポーネント(instrumented components)」)を計測するかまたはそれらを協調させ、計測対象コンポーネントから挙動情報を収集し、収集された挙動情報を挙動抽出器モジュールに(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信するように構成されてもよい。
【００２５】
挙動抽出器モジュールは、収集された挙動情報を使用して、コンピューティングデバイスの特定のソフトウェアアプリケーション、モジュール、コンポーネント、タスク、またはプロセスと関連付けられる1つまたは複数の観測される挙動を各々表し、または特徴付ける、挙動ベクトルを生成してもよい。各挙動ベクトルは、1つまたは複数の「挙動の特徴」をカプセル化することができる。各挙動の特徴は、観測された挙動のすべてまたは一部分を表す無名数または記号を含んでもよい。加えて、各挙動の特徴は、可能な値の範囲、それらの値に対して実行されてもよい動作、値の意味などを特定する、データタイプと関連付けられ得る。コンピューティングデバイスは、データタイプを使用して、特徴(または特徴値)がどのように測定され、分析され、重み付けられ、または使用されるべきかなどを判定してもよい。
【００２６】
挙動抽出器モジュールは、挙動ベクトルを(たとえば、メモリ書込み動作、関数呼出しなどを介して)分析器モジュールに通信することができ、分析器モジュールは、ソフトウェアアプリケーションまたはデバイスの挙動が良性であるか非良性であるかを判定するために使用されてもよい分析結果を生成するために、挙動ベクトルを分類器モデルに適用してもよい。分類器モデルは、デバイスの挙動の特定の因子、特徴、または実施形態を評価するためにコンピューティングデバイスプロセッサによって使用されてもよい、データおよび/または情報構造(たとえば、決定ノード、特徴ベクトル、挙動ベクトル、コンポーネントリストなど)を含む挙動モデルであり得る。分類器モデルはまた、コンピューティングデバイスにおけるいくつかの特徴、要因、データポイント、エントリ、API、状態、条件、挙動、ソフトウェアアプリケーション、プロセス、動作、コンポーネントなど(本明細書では、まとめて「特徴」)を監視または分析するための判定基準を含んでもよい。
【００２７】
完全な分類器モデルは、数千の特徴および数十億のエントリを含んでもよい大きい訓練データセットの関数として生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定のモバイルデバイス挙動が良性ではないかどうかを判定することに最も関連がある特徴/エントリに対する試験を含む、または優先する縮小されたデータセットから生成される、より専心的なデータモデルであり得る。ローカルに生成される簡潔な分類器モデルは、コンピューティングデバイスにおいて生成される簡潔な分類器モデルである。縮小特徴モデル(RFM:reduced feature model)は、そのデバイスの挙動が良性であるか非良性であるかを判定するのに最も重要な特徴を評価する決定ノードを含むように、よりロバストな分類器モデルに少なくとも部分的に基づいて生成される、簡潔な分類器モデルであり得る。
【００２８】
分析器モジュールは、挙動またはソフトウェアアプリケーションが非良性であることを高い信頼度で(たとえば、分析結果などに少なくとも部分的に基づいて)判定するとき、作動器モジュールに通知し得る。それに応答して、作動器モジュールは、特定された問題を修復し、矯正し、隔離し、またはそうでなければ直すための様々な動作を実行してもよい。たとえば、作動器モジュールは、マルウェアであるものとして判定されたソフトウェアアプリケーションを隔離すること、悪意のあるプロセスを終了すること、非良性であるものとして判定されたアプリケーションをアンインストールするかホワイトリスト登録する(またはそのアプリケーションのある挙動をホワイトリスト登録する)かを選択するようにユーザに要求するプロンプトを表示すること、ソフトウェアアプリケーションがデバイスの性能の経時的な劣化に寄与していることをユーザに通知することなどを行うように構成されてもよい。
【００２９】
それぞれの潜在的な非良性の挙動を監視し、分析し、それにそうでなければ応答することは、デバイスの限られた処理リソース、メモリリソース、またはエネルギーリソースを大量に消費し得る。たとえば、コンピューティングデバイスの経時的な劣化の原因または根源を適切に特定するために、監視または分析を必要とする数千の特徴/要因および数十億のデータポイントが存在し得る。スマートフォンなどのリソースが制約されているコンピューティングデバイスでは、これらのすべての特徴、要因、およびデータポイントを評価することは現実的ではないことが多い。
【００３０】
挙動が良性であるか、疑わしいか、または非良性であるかを判定するときに評価を必要とする特徴、要因、およびデータポイントの数を減らすために、挙動監視および分析システムは、漸進的な、動的な、かつ適応的な動作を実行してもよい。たとえば、システムは、複雑さ(または「簡潔さ」)のレベルが様々である分類器モデルを使用して、デバイスの挙動を複数の段階において漸進的に評価するように構成されてもよい。これにより、デバイスは偽の動作を実行しなくてもよくなり、システムによって生成または使用される挙動ベクトルの数が減る。
【００３１】
たとえば、いくつかの実施形態では、システムは、初期の分類器、モデルを含む分類器モデルのファミリと、1つまたは複数の後続の分類器モデルとを生成して使用するように構成されてもよい。初期の分類器モデルは、そうされなければモバイルデバイスの挙動を分類するときに分析を必要とするであろうすべての特徴、要因、およびデータポイントの対象サブセットを評価することに集中した、簡潔な分類器モデル(または縮小特徴モデル)であり得る。言い換えると、初期の分類器モデルは、デバイスの挙動が良性であるか非良性であるかをシステムが高い信頼度で判定することを可能にする高い確率を有するものとして判定される、要因/特徴の初期セットを評価するための決定ノードを含んでもよい。各々の後続の分類器モデルは、より多数の決定ノードを含む、かつ/または先行する分類器モデルよりも、特徴、要因、およびデータポイントの大きいサブセットを評価する、よりロバストな分類器であり得る。
【００３２】
システムは、挙動ベクトルを初期の分類器モデルに適用して初期の分析結果を生成し、挙動が良性であるか非良性であるかを高い信頼度で初期の分析結果が示すかどうかを判定し、挙動を高い信頼度で良性と非良性のいずれかとして分類できないとの判定に応答して挙動を疑わしいものとして分類し、(たとえば、挙動が疑わしいとの判定に応答して)同じまたは異なる挙動ベクトルを徐々により大きい分類器モデルまたはよりロバストな分類器モデルに適用して新しいまたは第1の監視されている活動の追加の分析結果を生成し、挙動が良性であるか非良性であるかを高い信頼度で新しい/追加の分析結果が示すかどうかを判定してもよい。システムは、挙動が良性であるか非良性であるかを高い信頼度で分析結果が示すまで、ファミリの中の分類器モデルのすべてが使用されるまで、処理またはバッテリ使用量の閾値に達するまで、あるいは、疑わしいもしくは性能を劣化させる挙動のソースを、より大きい分類器モデルもしくはよりロバストな分類器モデルから、または収集された挙動情報のさらなる分析から特定することができないとシステムが判定するまで、これらの動作を継続的にまたは繰り返し実行してもよい。
【００３３】
加えて、システムは、粗い観測を実行/収集し、粗い観測結果を分析した結果に少なくとも部分的に基づいて、追加の観測またはより詳細な観測を実行/収集するかどうかを判定するように構成されてもよい。システムは、モバイルデバイスの経時的な劣化に寄与し得るすべての要因の小さいサブセットから挙動情報を収集することによって粗い観測を実行し、この収集された挙動情報を使用して挙動ベクトルを生成し、生成された挙動ベクトルを分類器モデルに適用して分析結果を生成し、挙動が良性であるか非良性であるかを高い信頼度で分析結果が示すかどうかを判定してもよい。システムは、挙動が良性であるか非良性であるかを高い信頼度で分類できないとの判定に応答して、挙動を疑わしいものとして分類してもよい。加えて、システムは、観測の粒度(すなわち、デバイスの挙動が観測される詳細さのレベル)を調整し、かつ/または、新しいもしくは追加の挙動情報を収集するために観測される要因を変更し、新しいもしくは追加の挙動情報に少なくとも部分的に基づいて新しい挙動ベクトルを生成し、新しい挙動ベクトルを同じもしくは異なる分類器モデルに適用して追加の分析結果を生成し、挙動が良性であるか非良性であるかを高い信頼度で新しい/追加の分析結果が示すかどうかを判定してもよい。システムは、挙動が良性であるか非良性であるかを高い信頼度で分析結果が示すまで、処理またはバッテリ使用量の閾値に達するまで、あるいは、疑わしいもしくは性能を劣化させる挙動のソースを観測の粒度のさらなる増大から特定することができないとシステムが判定するまで、これらの動作を繰り返しまたは継続的に実行してもよい。
【００３４】
一般に、上で説明されたシステムは、デバイスの限られたリソースを大量に消費することなく、挙動が良性であるか、疑わしいか、または非良性であるかを判定する場合がある。それでも、良性の挙動、疑わしい挙動、および非良性の挙動の分類の各々に対して、多数の異なるカテゴリ、サブカテゴリ、またはタイプがある。たとえば、「非良性の挙動」として分類される挙動は、マルウェアとしてカテゴライズされることがあり、アドウェア、キーロガー、ランサムウェア、スパイウェア、モバイルリモートアクセストロイの木馬(mRAT)、ボットネット、フィッシングアプリ、トロイの木馬、SMSフロードウェアとしてサブカテゴライズされることがある。これらの異なるマルウェアのサブカテゴリ/タイプの各々が、ユーザまたはコンピューティングデバイスに対して異なるレベルの、程度の、もしくはタイプの危険性または脅威を与える。言い換えると、検出されたまたは潜在的な非良性の挙動がコンピューティングデバイスに与える危険性/脅威の深刻さは、マルウェアのタイプ(たとえば、アドウェア、トロイの木馬など)に依存する。
【００３５】
いくつかの実装形態では、コンピューティングデバイスは、マルチラベル分類またはメタ分類技法を使用して、分類された挙動(たとえば、良性、疑わしい、非良性)と関連付けられるカテゴリ、サブカテゴリ、またはタイプ(たとえば、ゲーム、ニュースアプリ、マルウェア)を、特定または判定するように構成されてもよい。たとえば、コンピューティングデバイスは、マルチラベル分類またはメタ分類技法を使用して、疑わしい挙動もしくは非良性の挙動と関連付けられるマルウェアのタイプ(および、したがって危険性)を特定または判定し、疑わしい挙動または非良性の挙動と関連付けられるマルウェアのタイプに少なくとも部分的に基づいて分析動作(たとえば、分析器モジュールによって実行される動作など)をカスタマイズし、疑わしい挙動または非良性の挙動と関連付けられるマルウェアのタイプに少なくとも部分的に基づいて様々な作動動作を実行するように構成されてもよい。
【００３６】
多くの異なるマルウェアのタイプがあり、検出されたまたは潜在的な非良性の挙動がコンピューティングデバイスに与える危険性/脅威の深刻さはマルウェアのタイプに依存する場合がある。たとえば、アドウェアは、デバイス上で広告を自動的にレンダリングして広告の作者に対して収入を発生させるタイプのマルウェアである。アドウェアアプリケーションは、デバイスの使用を密かに監視し、ユーザが訪問するインターネットサイトに関する情報を収集し、訪問したインターネットサイトにおいて特集されていた商品またはサービスのタイプに関係する広告を表示する場合がある。アドウェアアプリケーションは通常は、高度な機密情報または個人情報(たとえば、写真、連絡先リストなど)を収集または共有しないので、通常はデバイスに対するセキュリティリスクというよりもユーザを苛立たせるものである。したがって、コンピューティングデバイスは、疑わしいまたは潜在的に非良性の挙動がアドウェアとして副分類されるとき、限定された、もしくは軽量の分析動作および/または作動動作を実行する(すなわち、リソースを節約するために)ように構成されてもよい。
【００３７】
キーロガーは、ユーザの知識または同意なしにユーザの入力を監視してログ取得するタイプのマルウェアである。たとえば、キーロガーは、キーストロークを密かに観測して、パスワード、個人的な通信などを捕捉する場合がある。キーロガーは通常、アドウェアよりもユーザ/デバイスに対するセキュリティリスクとなるが、他のタイプのマルウェア(たとえば、スパイウェア、ボットネットなど)の多くよりもセキュリティリスクとはならない。
【００３８】
ランサムウェアは、(たとえば、デバイスをロックすること、ファイルのすべての暗号化することなどによって)コンピューティングデバイスへのアクセスを制約し、その制約が除去される(たとえば、デバイスがロック解除される、ファイルが復号されるなど)前に作者へ身代金を支払うように要求するタイプのマルウェアである。ランサムウェアアプリケーションは、ユーザに対して重大な金融的な脅威を与えることがあり、通常はアドウェアおよびキーロガーよりもセキュリティリスクとなる。
【００３９】
スパイウェアおよびmRATは、ユーザの知識または同意なしにデバイスまたはユーザについての情報を集めて送信するタイプのマルウェアである。たとえば、スパイウェアアプリケーションは、ユーザの位置および活動を(デバイスのセンサからの情報を収集することによって)監視し、これらの値を外部サーバに送信する場合がある。したがって、これらのマルウェアのタイプは、ユーザのプライバシーに対して重大な脅威を与えることがあり、通常はアドウェア、キーロガー、およびランサムウェアよりもデバイスに対するセキュリティリスクとなる。
【００４０】
ボットネットは通常、他のデバイス上の他の同様のプログラムと通信して、インターネットリレーチャット(IRC)チャンネルの制御権を保持すること、スパム電子メールメッセージを送信すること、大規模な、または分散されたサービス拒否(DDoS)攻撃に参加することなどの、1つまたは複数のタスクを実行する、インターネット接続されたアプリケーションプログラムの集合体である。ボットネットは、コンピューティングデバイスの利用可能なリソースを大量に消費することがあり、デバイスに対して重大な脅威を与える。ボットネットは、デバイスに対して重大な脅威を与えることがあり、通常は、アドウェア、キーロガー、ランサムウェア、スパイウェア、およびmRATよりもユーザ/デバイスに対する大きいセキュリティリスクである。
【００４１】
フィッシングは、サイバー攻撃の技法であり、通常は別のアプリケーション/ウェブサイトになりすますこと、または信頼できる機関であると装うことを介して、ユーザを騙して秘匿性の高い情報(たとえば、ユーザ名、パスワード、クレジットカードの詳細など)を得ようとするタイプのマルウェアである。たとえば、フィッシングアプリは、ユーザを騙して、本物のサイト/アプリケーションとほぼ同一の偽のウェブサイトまたはアプリケーションへ個人情報を入力させようとすることがあり、または、マルウェアに感染したウェブサイトへのリンクを含むことがある。フィッシングアプリは、ユーザが子供である場合、高齢者である場合、またはそのようなサイバー攻撃の技法に慣れていない場合には特に、デバイスに対して中程度から高度な危険性を与えることがある。
【００４２】
トロイの木馬は、実行されると、トロイの木馬の性質によって判定される活動、通常はデータの喪失または盗難を引き起こす活動を実行する悪意のあるコードを含む、非自己複製型のマルウェアである。通常、トロイの木馬は、正当なアプリケーションであることを装うが、隠された悪意のある機能がある。たとえば、トロイの木馬はバックドアとして活動することが多く、感染したコンピューティングデバイスへの認証されていないアクセスを他のエンティティ/デバイスに与えるために、それらのエンティティ/デバイスに接続する。トロイの木馬はまた、コンピューティングデバイスの利用可能な処理リソース、メモリリソース、バッテリリソースを大量に消費する場合がある。すべてのこれらの理由で、トロイの木馬は、デバイスに対して深刻な脅威を与えることがあり、ほとんどの他のタイプのマルウェアよりも大きいセキュリティリスクである。
【００４３】
SMSフロードウェアは、ユーザの知識または同意なしにプレミアムSMSメッセージを送信することを試みるタイプのマルウェアである。SMSフロードウェアアプリケーションは、ユーザに対して重大な金融的な脅威を与えることがあり、通常はアドウェアよりもセキュリティリスクとなる。
【００４４】
いくつかの実施形態では、コンピューティングデバイスは、挙動またはソフトウェアアプリケーションの分類および副分類(たとえば、マルウェア、アドウェアなど)または判定された相対的な重要性に少なくとも部分的に基づいて、デバイスによって実行される分析動作および/または作動動作を、インテリジェントに判定または選択するように構成されてもよい。様々な実施形態では、コンピューティングデバイスは、マルチ分類分類器モデルおよび/またはメタ分類器モデルを使用することによって、副分類を判定するように構成されてもよい。ある実施形態では、マルチ分類分類器モデルはメタ分類器モデルを含んでもよい。
【００４５】
マルチ分類分類器モデルは、複数の分類ラベルをサポートする分類器モデルであり得る。たとえば、マルチ分類分類器モデルは、1つまたは複数のラベルと各々関連付けられる決定株(たとえば、ブーストされた決定株など)を含んでもよい。決定株は、厳密に1つのノード(したがって、1つの試験質問または試験条件)および重み値を有する1レベルの木であるので、データ/挙動のバイナリ分類に使用するのによく適している。すなわち、挙動ベクトルをブーストされた決定株に適用することで、2値の答え(たとえば、YesまたはNo)がもたらされる。たとえば、ブーストされた決定株によって試験される条件が「SMS送信の頻度が毎分x回よりも少ないか」である場合、ブーストされた決定株に"3"の値を適用すると、(「3回未満」のSMS送信の場合)"Yes"の回答または(「3回以上」のSMS送信の場合)"No"の回答のいずれかがもたらされる。
【００４６】
条件を評価すること、ならびに、挙動が良性であるか非良性であるかを判定するための回答および重み値を(たとえば、分析結果の一部として)出力することに加えて、マルチ分類分類器モデルにおける各決定株は、関連するラベルの各々のための追加の値(たとえば、確率値など)を出力する場合がある。たとえば、分類ラベル「アドウェア」、「スパイウェア」、「キーロガー」、「SMSフロード」、および「ランサムウェア」を含むマルチ分類分類器モデルに挙動ベクトルを適用することは、デバイスに、[0.1,0.9,0.2,0.2]という出力を生成させる場合がある。
【００４７】
ある実施形態のシステムを実装するコンピューティングデバイスは、この出力(すなわち、ラベル分析結果[0.1,0.9,0.2,0.2])を使用して、評価された挙動を、10%の信頼度でアドウェアとして、90%の信頼度でスパイウェアとして、90%の信頼度でキーロガーとして、20%の信頼度でSMSフロードとして、20%の信頼度でランサムウェアとして副分類できると判定してもよい。結果として、デバイスは、挙動を高い信頼度で(すなわち、90%の信頼度で)スパイウェアおよびキーロガーとして副分類できると判定してもよい。それに応答して、コンピューティングデバイスは、(たとえば、ラベルを追加すること、またはラベルを挙動に関連付けることなどによって)挙動をスパイウェアおよびキーロガーのカテゴリへと副分類し、これらのカテゴリの各々と関連付けられる危険性、脅威、またはセキュリティのレベルを判定し、これらのカテゴリまたは関連する危険性、脅威、もしくはセキュリティのレベルに少なくとも部分的に基づいて、実行されるべき分析動作および/または作動動作を判定/選択してもよい。
【００４８】
コンピューティングデバイスは、デバイスの挙動が良性であるか、疑わしいか、または非良性であるかの分類の決定/判定に加えて、かつそれとは独立に、そのような副分類の決定/判定を行うように構成されてもよい。たとえば、コンピューティングデバイスは、挙動ベクトルをマルチ分類分類器モデルに適用して分類分析結果およびラベル分析結果を生成し、分類分析結果に少なくとも部分的に基づいて挙動を疑わしいものとして分類し、ラベル分析結果に少なくとも部分的に基づいて挙動をスパイウェアおよびキーロガーのカテゴリへと副分類し、(たとえば、よりロバストな分類器モデルを使用することなどによって)調査のレベルを上げてより網羅的な分析結果を生成し、より網羅的な分析結果を使用して挙動が良性であるか非良性であるかを判定してもよい。挙動が非良性であるものとして分類される場合、コンピューティングデバイスは、副分類(たとえば、スパイウェア、キーロガーなど)に少なくとも部分的に基づいて、適切な作動動作を選択または判定してもよい(たとえば、ユーザに促す、アプリケーションをホワイトリスト登録する、プロセスを終了するなど)。
【００４９】
ある実施形態では、コンピューティングデバイスは、メタ分類器モデルを使用することによって、副分類を判定するように構成されてもよい。メタ分類器モデルは、挙動の副分類を判定するのに適した条件または特徴を試験または評価するための決定ノードを含む、分類器モデルであり得る。コンピューティングデバイスは、挙動ベクトルおよび分析結果または分類出力をメタ分類器モデルに適用して、挙動を1つまたは複数のカテゴリに副分類するために使用されてもよい情報を生成するように構成されてもよい。たとえば、メタ分類器モデルは、位置特徴を評価する決定ノードを含むことがあり、その評価の結果がスパイウェア値に加算される場合がある。同様に、メタ分類器モデルは、加速度計の読取り値を記録して通信することに関する条件を評価してもよく、その評価の結果は、キーロガー値とスパイウェア値の両方に加算される場合がある。メタ分類器モデルはまた、挙動が未知のタイプのマルウェア(すなわち、既存のまたは既知のカテゴリのいずれにも当てはまらないマルウェア)であるかどうかを判定するための条件を評価してもよい。
【００５０】
いくつかの実施形態では、コンピューティングデバイスは、挙動の副分類を使用して挙動と関連付けられる危険性、脅威、または疑いのレベルを判定し、判定された危険性、脅威、または疑いのレベルに少なくとも部分的に基づいて分類器モデルを選択または修正するように構成されてもよい。たとえば、コンピューティングデバイスは、挙動ベクトルを分類器モデル(たとえば、分類器モデルのファミリの中の初期の分類器モデル)に適用して分析結果を生成し、分析結果を使用して、デバイスの中に存在する分類器モデルの中の条件または特徴を判定して挙動を副分類し、副分類に少なくとも部分的に基づいて挙動と関連付けられる危険性、脅威、または疑いのレベルを判定し、判定された危険性、脅威、または疑いのレベルに少なくとも部分的に基づいて、分類器モデルのファミリの中の後続の分類器モデルを選択してもよい。たとえば、挙動がランサムウェアまたはスパイウェアとして副分類される場合、コンピューティングデバイスは、分類器モデルのファミリの中の中間のRFMまたは分類器モデルを迂回して、完全な分類器モデル、完全な特徴RFM、またはよりロバストな分類器モデルを選択してもよい。代わりに、挙動がランサムウェアまたはスパイウェアとして副分類される場合、コンピューティングデバイスは、挙動がランサムウェアであるかスパイウェアであるかを判定する高い確率を有するものとして判定された条件を評価する判定ノードを含む、後続の分類器モデルを選択してもよい。
【００５１】
コンピューティングデバイスは、判定された危険性、脅威、または疑いのレベルに少なくとも部分的に基づいて、他の分析動作を変えるように構成されてもよい。たとえば、コンピューティングデバイスは、メモリの中の待ち行列に入れられたイベントを分析する前にアプリケーションを停止し、かつ/または、メモリ使用率およびメモリの内容などの分類器モデルによって評価されない特徴に関してより綿密にアプリケーションを監視するように構成されてもよい。
【００５２】
コンピューティングデバイスは、判定された危険性、脅威、または疑いのレベルに少なくとも部分的に基づいて、作動動作を選択して実行するように構成されてもよい。たとえば、アドウェアは苛立たしいものであり直ちに危険をもたらすものではないので、ソフトウェアアプリケーションがアドウェアであると判定した後で、コンピューティングデバイスは、デバイス上でアプリケーションが動き続ける/動作し続けることを許容し、アプリをアンインストールするためのショートカットを用いてユーザにプロンプトを与えることがある。コンピューティングデバイスは、ランサムメッセージ(偽のメッセージ、たとえば「FBIがあなたの電話をロックしました。この電話のすべての活動は記録されています...」)を表示することなく直ちにランサムウェアを削除することがある。すなわち、ソフトウェアアプリケーションがランサムウェアであると判定した後で、コンピューティングデバイスは、そのアプリケーションおよびメッセージを終了し、メッセージは偽である、または悪意のあるものであり心配する必要はないことをユーザに知らせ、アプリケーションはアンインストールされるべきであるとユーザに推奨してもよい。同様に、コンピューティングデバイスは、mRATなどのスパイウェアをユーザに直ちに知らせるように構成されてもよい。
【００５３】
様々な実施形態は、システムオンチップ(SOC)を含む、いくつかの単一プロセッサコンピュータシステムおよびマルチプロセッサコンピュータシステム上で実装されてもよい。図1は、本開示の様々な実施形態を実装するコンピューティングデバイスにおいて使用されてもよい例示的なシステムオンチップ(SOC)100アーキテクチャを示す。SOC100は、デジタル信号プロセッサ(DSP)103、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108などの、いくつかの異種プロセッサを含んでもよい。SOC100はまた、異種プロセッサ103、104、106、108のうちの1つまたは複数に(直接または間接的に)結合された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含んでもよい。各プロセッサ103、104、106、108、110は、1つまたは複数のコアを含むことがあり、各プロセッサ/コアは、その他のプロセッサ/コアとは無関係に動作を実行することがある。たとえば、SOC100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行するプロセッサ、および第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 8)を実行するプロセッサを含んでもよい。
【００５４】
SOC100はまた、センサデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ウェブブラウザにおいてレンダリングするための符号化されたオーディオ信号およびビデオ信号を処理することなどの、他の特殊な動作を実行するための、アナログおよびカスタム回路114を含んでもよい。SOC100はさらに、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびにコンピューティングデバイス上で動作するプロセッサおよびソフトウェアクライアント(たとえば、ウェブブラウザ)をサポートするために使用される他の同様のコンポーネントなどの、システムコンポーネントおよびリソース116を含んでもよい。
【００５５】
システムコンポーネントならびにリソース116および/またはアナログおよびカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースするための回路を含んでもよい。プロセッサ103、104、106、108は、一連の再構成可能な論理ゲートを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装する場合がある、インターコネクト/バスモジュール124を介して、1つまたは複数のメモリ要素112、システムコンポーネントおよびリソース116、ならびにアナログおよびカスタム回路114にインターコネクトされてもよい。通信は、高性能ネットワークオンチップ(NoC)などのインターコネクトによって提供されてもよい。
【００５６】
SOC100は、クロック118および電圧調整器120などの、SOCの外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含んでもよい。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP103、モデムプロセッサ104、グラフィックスプロセッサ106、アプリケーションプロセッサ108など)の2つ以上によって共有されてもよい。
【００５７】
ある実施形態では、SOC100は、スマートフォンなどのモバイルデバイス102に含まれてもよい。モバイルデバイス102は、電話網、インターネット、および/またはネットワークサーバとの通信のための、通信リンクを含んでもよい。モバイルデバイス102とネットワークサーバとの間の通信は、電話網、インターネット、プライベートネットワーク、またはそれらの任意の組合せを通じて達成されてもよい。
【００５８】
様々な実施形態では、SOC100は、挙動、状態、分類、モデリング、成功率、および/または統計的情報をモバイルデバイスに収集し、収集された情報を分析のために(たとえば、電話網を介して)ネットワークサーバに送信するように構成されてもよい。ネットワークサーバは、モバイルデバイスから受信された情報を使用して、性能を低下させるモバイルデバイスの挙動を識別および/または分類するときにSOC100が使用するのに適した、分類器またはデータ/挙動モデルを、生成し、更新し、または改良してもよい。ネットワークサーバは、データ/挙動モデルをSOC100へ送信してもよく、SOC100は、データ/挙動モデルを受信し使用して、疑わしいまたは性能を低下させるモバイルデバイスの挙動、ソフトウェアアプリケーション、プロセスなどを特定してもよい。
【００５９】
SOC100はまた、スピーカ、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)、マイクロフォンアレイ、物理条件(たとえば、位置、方向、動き、方位、振動、圧力など)を監視するためのセンサ、カメラ、コンパス、全地球測位システム(GPS)受信機、通信回路(たとえば、Bluetooth(登録商標)、WLAN、WiFiなど)、および近代的な電子デバイスの他のよく知られているコンポーネント(たとえば、加速度計など)を含む、センサからセンサデータを収集するのに適したハードウェアおよび/またはソフトウェアのコンポーネントを含んでもよい。
【００６０】
上で論じられたモバイルデバイス102およびSOC100に加えて、様々な実施形態が、単一のプロセッサ、複数のプロセッサ、マルチコアプロセッサ、またはこれらの任意の組合せを含んでもよい、多種多様なコンピューティングシステムにおいて実装されてもよい。
【００６１】
図2Aは、非良性のデバイスの挙動を特定し、それらに応答するために、挙動分析技法を使用するように構成される、挙動ベースのセキュリティシステム200を含むある実施形態のモバイルコンピューティングデバイス102の中の例示的な論理コンポーネントおよび情報フローを示す。図2Aに示される例では、コンピューティングデバイスは、挙動観測器モジュール202と、挙動抽出器モジュール204と、挙動分析器モジュール208と、作動器モジュール210と、挙動ホワイトリスト212とを含む実行可能命令モジュールで構成されるデバイスプロセッサ(すなわち、モバイルデバイスプロセッサ)を含むモバイルコンピューティングデバイス102である。モジュール202〜210の各々は、ソフトウェア、ハードウェア、またはそれらの組合せで実装される、スレッド、プロセス、デーモン、モジュール、サブシステム、またはコンポーネントであり得る。様々な実施形態では、モジュール202〜210は、オペレーティングシステムの部分内(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)に、別個のプログラムもしくはアプリケーション内に、専用のハードウェアバッファもしくはプロセッサの中に、またはそれらの任意の組合せで実装されてもよい。ある実施形態では、モジュール202〜210のうちの1つまたは複数は、モバイルコンピューティングデバイス102の1つまたは複数のプロセッサ上で実行するソフトウェア命令として実装されてもよい。
【００６２】
挙動観測器モジュール202は、デバイスの様々なレベル/モジュールにおいて、アプリケーションプログラミングインターフェース(API)、カウンタ、ハードウェアモニタなどを計測し、ある期間にわたって様々なレベル/モジュールにおいて活動、条件、動作、およびイベント(たとえば、システムイベント、状態変化など)を監視するように構成されてもよい。たとえば、挙動観測器モジュール202は、モバイルコンピューティングデバイス102の様々なソフトウェアコンポーネントおよびハードウェアコンポーネントを監視し、モバイルコンピューティングデバイス102の活動と関連付けられる、監視されている測定可能なコンポーネントの対話、通信、トランザクション、イベント、または動作に関係する挙動情報を収集するように構成されてもよい。そのような活動は、ソフトウェアアプリケーションのハードウェアコンポーネントの使用、動作またはタスクの性能、モバイルコンピューティングデバイス102の処理コアにおけるソフトウェアアプリケーションの実行、プロセスの実行、タスクまたは動作の実行、デバイスの挙動などを含む。
【００６３】
さらなる例として、挙動観測器モジュール202は、ソフトウェアアプリケーションによるデバイスメモリの割振りまたは使用を監視することによって、モバイルコンピューティングデバイス102の活動を監視するように構成されてもよい。ある実施形態では、これは、コンピューティングデバイスのメモリ管理システム(たとえば、仮想メモリマネージャ、メモリ管理ユニットなど)の動作を監視することによって達成されてもよい。そのようなシステムは、一般に、1つのプロセスによって使用されるメモリが別のプロセスによってすでに使用されているメモリに干渉しないことを確実にするために、様々なアプリケーションプログラムによってシステムメモリの割振りおよび使用を管理することを担う。したがって、メモリ管理システムの動作を監視することによって、デバイスのプロセッサは、2つのプロセスが同じメモリ空間を割り振られているかどうか、2つのプロセスが同じメモリアドレスもしくは同じメモリ位置から情報を読み取り、そこに情報を書き込んでいるかどうか、または2つのプロセスが他の疑わしいメモリ関連の動作を実行しているかどうかなど、2つのアプリケーションが協働して動作しているかどうかを判定する際に使用するのに適した挙動情報を収集してもよい。
【００６４】
挙動観測器モジュール202は、監視された活動、条件、動作、またはイベントに関係する挙動情報を収集し、収集された情報をメモリ(たとえば、ログファイルなど)に記憶してもよい。挙動観測器モジュール202は、次いで、収集された挙動情報を挙動抽出器モジュール204に(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信してもよい。
【００６５】
ある実施形態では、挙動観測器モジュール202は、ハードウェアレベルにおいて、かつ/またはハードウェアイベント(たとえば、メモリ読取り動作およびメモリ書込み動作など)に少なくとも部分的に基づいて、デバイスメモリの割振りまたは使用を監視することによって、モバイルコンピューティングデバイス102の活動を監視するように構成されてもよい。さらなる実施形態では、挙動観測器モジュール202は、監視機能のより高速なほぼリアルタイムの実行のために、ハードウェアモジュールにおいて実装されてもよい。たとえば、挙動観測器モジュール202は、プログラマブル論理要素が、ハードウェアレベルにおいて、かつ/またはハードウェアイベント(たとえば、メモリ読取り動作およびメモリ書込み動作など)に少なくとも部分的に基づいて、コンピューティングデバイスメモリの割振りまたは使用を監視するように、かつ、そうでなければ様々な実施形態を実装するように構成されている、プログラマブル論理回路(PLC)を含むハードウェアモジュール内で実装されてもよい。そのようなハードウェアモジュールは、ハードウェアイベント監視の結果を、挙動抽出器モジュール204を実装しているデバイスプロセッサに出力してもよい。PLCは、よく知られているPLCプログラミング方法を使用して、いくつかのハードウェアを監視し、本明細書において説明される様々な実施形態のいくつかの動作を実装するように構成されてもよい。ハードウェアモジュールにおいて実施形態の方法のいくつかの動作を実施するための他の回路も使用されてもよい。
【００６６】
同様に、モジュール202〜210の各々は、実施形態の方法のいくつかの動作を実行するためにPLCプログラミング方法を使用するように構成される1つまたは複数のPLC要素をSoCに含めることなどによって、ハードウェアモジュールにおいて実装されてもよい。
【００６７】
挙動抽出器モジュール204は、収集された挙動情報を受信し、または取り出し、1つまたは複数の挙動ベクトルを生成するためにこの情報を使用するように構成されてもよい。様々な実施形態では、挙動抽出器モジュール204は、ソフトウェアアプリケーションの観測された挙動、関係、または対話の簡潔な定義を含めるように挙動ベクトルを生成するように構成されてもよい。たとえば、各挙動ベクトルは、ソフトウェアアプリケーションの集合的な挙動を値またはベクトルデータ構造で簡潔に記述してもよい。ベクトルデータ構造は、一連の数字を含むことがあり、その各々が、コンピューティングデバイスのカメラが使用されているかどうか(たとえば、0または1など)、コンピューティングデバイスからどの程度のネットワークトラフィックが伝送されているか、またはコンピューティングデバイスによってどの程度のネットワークトラフィックが生成されているか(たとえば、毎秒20KBなど)、どれだけ多くのインターネットメッセージが通信されているか(たとえば、SMSメッセージの数など)、および/または挙動観測器モジュール202によって収集された任意の他の挙動情報などの、デバイスの特徴、活動、または挙動を示す。ある実施形態では、挙動抽出器モジュール204は、コンピューティングデバイスシステム(たとえば、挙動分析器モジュール208)がアプリケーション間の関係を迅速に認識すること、特定すること、または分析することを可能にする識別子として挙動ベクトルが機能するように、挙動ベクトルを生成するように構成されてもよい。
【００６８】
挙動分析器モジュール208は、挙動ベクトルを分類器モジュールに適用して、2つ以上のソフトウェアアプリケーション間の関係の性質を特定するように構成されてもよい。挙動分析器モジュール208は、挙動ベクトルを分類器モジュールに適用して、集合的なデバイス挙動(すなわち、デバイス上で動作する2つ以上のソフトウェアアプリケーションの集合的な活動)が、経時的にデバイスの劣化に寄与する(または、寄与する可能性が高い)非良性の挙動であるかどうか、かつ/または、そうでなければデバイス上で問題を引き起こし得る非良性の挙動であるかどうかを判定するように構成されてもよい。
【００６９】
挙動分析器モジュール208は、活動または挙動が良性でないことを作動器モジュール210に通知してもよい。それに応答して、作動器モジュール210は、特定された問題を修復する、是正する、隔離する、またはそうでなければ直すために、様々な活動または動作を実行してもよい。たとえば、作動器モジュール210は、挙動ベクトルを(たとえば、分析器モジュールによって)分類器モデルに適用した結果が、ソフトウェアアプリケーションの集合的な挙動が良性でないことを示すとき、ソフトウェアアプリケーションのうちの1つまたは複数を中止または終了するように構成されてもよい。
【００７０】
様々な実施形態では、挙動観測器モジュール202は、アプリケーションフレームワークまたはランタイムライブラリ、システムコールアプリケーションプログラミングインターフェース(API)、ファイルシステムおよびネットワーキングサブシステム動作、デバイス(センサデバイスを含む)状態変化、ならびに他の類似のイベントにおけるライブラリAPI呼出しに関係する情報を収集することによって、モバイルコンピューティングデバイス102の活動を監視するように構成されてもよい。加えて、挙動観測器モジュール202は、ファイルシステム活動を監視することができ、ファイルシステム活動は、ファイル名、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)を探索すること、ファイル(たとえば、type exe、zipなど)を作成または削除すること、ファイル読取り/書込み/探索動作、ファイルパーミッションを変更することなどを含んでもよい。
【００７１】
挙動観測器モジュール202はまた、データネットワーク活動を監視することによってモバイルコンピューティングデバイス102の活動を監視することができ、データネットワーク活動は、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含んでもよい。挙動観測器モジュール202は、電話ネットワーク活動を監視することができ、電話ネットワーク活動は、送出、受信、または傍受された通話またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することを含んでもよい。
【００７２】
挙動観測器モジュール202はまた、システムリソース使用量を監視することによってモバイルコンピューティングデバイス102の活動を監視することができ、それはフォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含んでもよい。挙動観測器モジュール202は、モバイルコンピューティングデバイス102の状態を監視してもよく、それはディスプレイがオンであるかオフであるか、デバイスがロックされているかロックされていないか、バッテリの残量、カメラの状態などの、様々な要因を監視することを含んでもよい。挙動観測器モジュール202はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視してもよい。
【００７３】
挙動観測器モジュール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)通信、同期、車両対車両通信、および/または機械対機械(m2m)通信のための、無線(WiFi、WiMax、Bluetooth(登録商標)など)の使用を監視することを含んでもよい。無線レベル観測は、ネットワークトラフィックの使用量、統計値、またはプロファイルを監視することをさらに含んでもよい。
【００８０】
センサレベル観測は、モバイルコンピューティングデバイス102の使用環境および/または外部環境を判定するために、磁気センサまたは他のセンサを監視することを含んでもよい。たとえば、コンピューティングデバイスプロセッサは、(たとえば、ホルスタ内の磁石を感知するように構成される磁気センサを介して)デバイスがホルスタの中にあるかどうか、または(たとえば、カメラまたは光センサによって検出される光の量を介して)ユーザのポケットの中にあるかどうかを判定するように構成されてもよい。たとえば、モバイルコンピューティングデバイス102がホルスタに入れられている間に行われる、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送信すること、音声通話を行うこと、録音することなど)に関連する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で動作している不正なプロセスのサインであり得るので、モバイルコンピューティングデバイス102がホルスタの中にあることを検出することは、疑わしい挙動を認識することに関連があり得る。
【００８１】
使用環境または外部環境に関するセンサレベル観測の他の例は、近接場通信(NFC)シグナリングを検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダから情報を収集すること、ユニバーサルシリアルバス(USB)電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルコンピューティングデバイス102に結合されたことを検出すること、モバイルコンピューティングデバイス102が(たとえば、USBなどを介して)別のコンピューティングデバイスに結合されたことを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または無効化された(たとえば、緊急シグナリングアプリなどを悪意をもって無効化する)かどうかを判定すること、スピーカまたはマイクロフォンがオンまたは電源投入されたことを検出すること、充電または電力供給イベントを検出すること、モバイルコンピューティングデバイス102がゲームコントローラとして使用されていることを検出することなどを含んでもよい。センサレベル観測はまた、医療センサもしくはヘルスケアセンサから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサから情報を収集すること、(たとえば、バイブレータインターフェースなどを介して)触覚センサまたはハプティックセンサから情報を収集すること、モバイルコンピューティングデバイス102の熱状態に関係する情報を収集することなどを含んでもよい。
【００８２】
監視される要因の数を管理可能なレベルまで減らすために、一実施形態では、挙動観測器モジュール202は、コンピューティングデバイスの劣化に寄与し得るすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観測することによって、粗い観測を実行するように構成されてもよい。一実施形態では、挙動観測器モジュール202は、挙動および/または要因の初期セットをサーバおよび/またはクラウドサービスもしくはネットワークの中のコンポーネントから受信してもよい。一実施形態では、挙動/要因の初期セットは、機械学習分類器モデルにおいて指定されてもよい。
【００８３】
各分類器モデルは、コンピューティングデバイスの挙動の特定の特徴または実施形態を評価するためにコンピューティングデバイスプロセッサによって使用されてもよい、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、コンポーネントリストなど)を含む挙動モデルであり得る。各分類器モデルはまた、コンピューティングデバイスにおけるいくつかの特徴、要素、データポイント、エントリ、API、状態、条件、挙動、アプリケーション、プロセス、動作、コンポーネントなど(本明細書では、まとめて「特徴」)を監視するための判定基準を含んでもよい。分類器モデルは、コンピューティングデバイスにプリインストールされることがあり、ネットワークサーバからダウンロードもしくは受信されることがあり、コンピューティングデバイスにおいて生成されることがあり、またはそれらの任意の組合せであることがある。分類器モデルは、クラウドソーシングによる解決法、挙動モデル化技法、機械学習アルゴリズムなどを使用することによって生成されてもよい。
【００８４】
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとしてカテゴライズされ得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含む場合ある大きい訓練データセットの関数として生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定の活動が進行中の重大な活動であるかどうか、および/または特定のコンピューティングデバイスの挙動が良性ではないかどうかを判定することに最も関連がある特徴/エントリのみを含み、評価し、または試験する、縮小されたデータセットから生成されるより専心的なデータモデルであり得る。ある例として、デバイスプロセッサは、ネットワークサーバから完全な分類器モデルを受信し、完全な分類器に少なくとも部分的に基づいて、コンピューティングデバイスの中で簡潔な分類器モデルを生成し、デバイスの挙動を良性または非良性(すなわち、悪意がある、性能を劣化させるなど)のいずれかであるものとして分類するために、ローカルに生成された簡潔な分類器モデルを使用するように構成されてもよい。
【００８５】
ローカルに生成される簡潔な分類器モデルは、コンピューティングデバイスにおいて生成される簡潔な分類器モデルである。コンピューティングデバイス(たとえば、モバイルデバイスなど)は構成可能であり複雑であり得るので、特定のデバイスの挙動が非良性である(たとえば、悪意がある、または性能を劣化させるものである)かどうかを判定するために最も重要な特性は、デバイスごとに異なる場合がある。さらに、各デバイスは特徴の異なる組合せを使用することがあるので、各デバイスは、特定の挙動を、たとえば非良性である、良性である、または疑わしいものとして迅速かつ効率的に分類するために、固有の監視および/または分析を必要とすることがある。しかし、監視および分析を必要とする特徴の正確な組合せ、ならびに各特徴または特徴の組合せの相対的な優先順位または重要性は、しばしば、挙動が監視または分析されるべきである特定のデバイスから取得された情報を使用してのみ判定することが可能である。これらのおよび他の理由で、ある実施形態では、モデルが使用されるコンピューティングデバイスにおいて分類器モデルが生成されてもよい。これらのローカル分類器モデルは、デバイスのプロセッサが、その特定のデバイス上の挙動が非良性である(デバイスの性能の劣化に寄与している)かどうかを判定する際に最も重要である特定の特徴を正確に特定することを可能にする。ローカル分類器モデルはまた、デバイスのプロセッサが、その特定のデバイスにおける挙動を分類することに対するローカル分類器モデルの相対的な重要性に従って試験または評価される特徴を優先順位付けすることを可能にする。
【００８６】
デバイス固有の分類器モデルは、特定のコンピューティングデバイスにおける活動または挙動を分類することに最も関連があると判定されるコンピューティングデバイス固有の特徴/エントリのみを含み、評価し、または試験する、専心的なデータモデルを含む分類器モデルである。アプリケーション固有の分類器モデルは、特定のソフトウェアアプリケーションを評価することに最も関連がある特徴/エントリのみを含み、評価し、または試験する、専心的なデータモデルを含む分類器モデルである。コンピューティングデバイスにおいてアプリケーション固有の分類器モデルをローカルに動的に生成することによって、デバイスのプロセッサは、特定のソフトウェアアプリケーションの動作がそのデバイスの望ましくない挙動または性能を劣化させる挙動に寄与しているかどうかを判定するのに最も重要な少数の特徴に対する監視および分析動作に専念することができる。
【００８７】
マルチアプリケーション分類器モデルは、2つ以上の特定のソフトウェアアプリケーション(または、特定のタイプのソフトウェアアプリケーション)の集合的挙動が非良性であるかどうかを判定することに最も関連がある特徴/エントリに対する試験を含みまたは優先順位付ける、専心的なデータモデルを含むローカル分類器モデルであり得る。マルチアプリケーション分類器モデルは、特徴の集約されたセットを試験/評価する集約された特徴セットおよび/または決定ノードを含んでもよい。デバイスのプロセッサは、コンピューティングデバイス上で動作する2つ以上のソフトウェアアプリケーション間の関係、対話、および/または通信を特定することに最も関連があるデバイス特徴を特定し、特定されたデバイス特徴のうちの1つを評価する試験条件を特定し、特定された試験条件の優先順位、重要性、または成功率を判定し、その重要性または成功率に従って、特定された試験条件を優先順位付けまたは順序付け、その判定された優先順位、重要性、または成功率に従って試験条件が順序付けられるように特定された試験条件を含むように分類器モデルを生成することによって、マルチアプリケーション分類器モデルを生成するように構成されてもよい。デバイスのプロセッサは、2つ以上のアプリケーション特定分類器モデルを組み合わせることによって、マルチアプリケーション分類器モデルを生成するように構成されてもよい。
【００８８】
様々な実施形態では、デバイスのプロセッサは、2つ以上のアプリケーションが協働して結託または動作している、またはアプリケーションがグループとして一緒に分析されるべきであると判定することに応答して、マルチアプリケーション分類器モデルを生成するように構成されてもよい。デバイスのプロセッサは、アプリケーションの各々の特定されたグループまたはクラスのためにマルチアプリケーション分類器モデルを生成するように構成されてもよい。しかしながら、すべてのグループを分析することは、デバイスの限られたリソースを大量に消費することがある。したがって、ある実施形態では、デバイスのプロセッサは、(たとえば、他のアプリケーションとのその対話などに少なくとも部分的に基づいて)アプリケーションが結託挙動に関与している確率を判定し、結託挙動の確率が高いソフトウェアアプリケーションを含むグループだけに関して分類器モデルをインテリジェントに生成するように構成されてもよい。
【００８９】
挙動分析器モジュール208は、監視された活動(または、挙動)が良性であるか非良性であるかを判定するために、挙動抽出器モジュール204によって生成された挙動ベクトルを分類器モデルに適用するように構成されてもよい。ある実施形態では、その挙動分析動作の結果が良性または非良性のいずれかとして挙動を分類するために十分な情報を提供しないとき、挙動分析器モジュール208は「疑わしい」として挙動を分類してもよい。
【００９０】
挙動分析器モジュール208は、結託しているソフトウェアアプリケーションを特定することと、いくつかのアプリケーションがグループとして評価されるべきであると判定することとに応答して、かつ/または、監視された活動または挙動が疑わしいと判定することに応答して、挙動観測器モジュール202に通知するように構成されてもよい。それに応答して、挙動観測器モジュール202は、その観測の粒度(すなわち、コンピューティングデバイスの特徴が監視される際の詳細度のレベル)を調整し、かつ/または、挙動分析器モジュール208から受信された情報(たとえば、リアルタイム分析動作の結果)に少なくとも部分的に基づいて監視されるアプリケーション/要因/挙動を変更し、新たな情報または追加の挙動情報を生成または収集し、さらなる分析/分類のために新たな/追加の情報を挙動分析器モジュール208に送信してもよい。
【００９１】
挙動観測器モジュール202と挙動分析器モジュール208との間のそのようなフィードバック通信により、集合的挙動が良性または非良性として分類されるまで、疑わしいかもしくは性能を劣化させるデバイスの挙動の根源が特定されるまで、処理もしくはバッテリ消費の閾値に達するまで、または、観測の粒度のさらなる変化、調整、または向上から、疑わしいかもしくは性能を劣化させる挙動の根源を特定できないとデバイスプロセッサが判定するまで、モバイルコンピューティングデバイス102は、観測の粒度を繰り返し上げる(すなわち、より微細にまたはより詳細に観測する)こと、または観測される特徴/挙動を変更することが可能になる。そのようなフィードバック通信により、モバイルコンピューティングデバイス102は、コンピューティングデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、挙動ベクトルおよび分類器モデルを調整または修正することも可能になる。
【００９２】
挙動観測器モジュール202および挙動分析器モジュール208は、限られた粗い観測結果から疑わしい挙動を特定するために、挙動を動的に判定してより詳細に観測するために、および観測のために必要な詳細さのレベルを動的に判定するために、コンピューティングシステムの挙動のリアルタイムの挙動分析を個別にまたは集合的に提供してもよい。これは、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリリソースを必要とすることなく、モバイルコンピューティングデバイス102が問題を効率的に特定し、問題を防止することを可能にする。
【００９３】
様々な実施形態では、モバイルコンピューティングデバイス102のデバイスプロセッサは、綿密な監視を必要とする重大なデータリソースを特定し、その重大なデータリソースにアクセスするときにソフトウェアアプリケーションによって行われるAPI呼出しを(たとえば、挙動観測器モジュール202を介して)監視し、2つ以上のソフトウェアアプリケーションによる非良性の挙動を示すものとしてAPI呼出しのパターンを特定し、API呼出しの特定されたパターンとリソース使用とに少なくとも部分的に基づいて、挙動ベクトルを生成し、(たとえば、挙動分析器モジュール208を介して)挙動分析動作を実行するために挙動ベクトルを使用し、挙動分析動作に少なくとも部分的に基づいて、ソフトウェアアプリケーションのうちの1つまたは複数が非良性であるかどうかを判定するように構成されてもよい。
【００９４】
ある実施形態では、デバイスプロセッサは、コンピューティングデバイス上で動作するソフトウェアアプリケーションによって最も頻繁に使用されるAPIを特定し、特定されたホットAPIの使用に関する情報をデバイスのメモリ中のAPIログに記憶し、非良性の挙動を特定するために、APIログに記憶された情報に少なくとも部分的に基づいて挙動分析を実行するように構成されてもよい。
【００９５】
様々な実施形態では、モバイルコンピューティングデバイス102は、活動または挙動が非良性であるかどうかを判定することに最も関連のある特徴、要因、およびデータポイントをインテリジェントにかつ効率的に特定するために、ネットワークサーバとともに動作するように構成されてもよい。たとえば、デバイスプロセッサは、ネットワークサーバから完全な分類器モデルを受信し、コンピューティングデバイスまたはデバイス上で動作するソフトウェアアプリケーションの特徴および機能に固有である簡潔な分類器モデル(すなわち、データ/挙動モデル)を生成するために、受信された完全な分類器モデルを使用するように構成されてもよい。デバイスプロセッサは、複雑さ(または「簡潔さ」)のレベルが様々である簡潔な分類器モデルのファミリを生成するために、完全な分類器モデルを使用してもよい。モデルが良性とまたは非良性のいずれとしてもカテゴライズできない(したがって、モデルによって疑わしいとカテゴライズされる)挙動に遭遇するまで、簡潔な分類器モデルの最も簡潔なファミリ(すなわち、最も少数の試験条件に少なくとも部分的に基づく簡潔な分類器モデル)が常に適用されてよく、遭遇した時点において、挙動をカテゴライズするための試行においてよりロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルが適用されてもよい。生成された簡潔な分類器モデルのファミリの中のよりロバストかつ簡潔な分類器モデルの適用は、挙動の最終的な分類が達成されるまで適用されてもよい。このようにして、デバイスプロセッサは、最も完全だがリソース集約的な簡潔な分類器モデルの使用を、挙動を最終的に分類するためにロバストな分類器モデルが必要とされる状況に制限することによって、効率と精度との間でバランスをとることができる。
【００９６】
様々な実施形態では、デバイスプロセッサは、完全な分類器モデルに含まれる有限ステートマシン表示/表現をブーストされた決定株に変換することによって、簡潔な分類器モデルを生成するように構成されてもよい。デバイスプロセッサは、デバイス固有の特徴、条件、または構成に少なくとも部分的に基づいて、ブーストされた決定株の完全なセットを剪定するかまたは選別して、完全な分類器モデルに含まれるブーストされた決定株のサブセットを含む分類器モデルを生成してもよい。デバイスプロセッサは、次いで、コンピューティングデバイス挙動を知的に監視、分析、および/または分類するために、簡潔な分類器モデルを使用してもよい。
【００９７】
ブーストされた決定株は、厳密に1つのノード(したがって、1つの試験質問または試験条件)および重み値を有する1レベルの決定木であり、したがって、データ/挙動のバイナリ分類における使用によく適している。すなわち、挙動ベクトルをブーストされた決定株に適用することで、2値の回答(たとえば、YesまたはNo)がもたらされる。たとえば、ブーストされた決定株によって試験される質問/条件が「ショートメッセージサービス(SMS)送信の頻度が毎分x回未満であるか」である場合、"3"の値をブーストされた決定株に適用することで、(「3回未満」のSMS送信の場合)"Yes"の回答または(「3回以上」のSMS送信の場合)"No"の回答のいずれかがもたらされる。
【００９８】
ブーストされた決定株は、並列化可能であり、これは、(たとえば、コンピューティングデバイスの中の複数のコアまたはプロセッサによって)多くの株が並列に/同時に適用または試験されることが可能であり、これにより効率が向上することを意味する。
【００９９】
ある実施形態では、デバイスのプロセッサは、完全な分類器モデルに含まれる分類器基準のサブセット、ならびに、コンピューティングデバイスの構成、機能、および接続される/含まれるハードウェアに関連のある特徴に対応する分類器基準のみを含む簡潔な分類器モデルを生成するように構成されてもよい。デバイスのプロセッサは、デバイスに存在する、または関連のある特徴および機能のみを監視するために、この簡潔な分類器モデルを使用してもよい。デバイスのプロセッサは、次いで、コンピューティングデバイスの現在の状態および構成に少なくとも部分的に基づいて、様々な特徴および対応する分類器基準を含めるかまたは削除するように、簡潔な分類器モデルを定期的に変更または再生成してもよい。
【０１００】
一例として、デバイスのプロセッサは、挙動モデル(たとえば、分類器)の完全な特徴セットと関連付けられる決定株を含む、大きいブーストされた決定株の分類器モデルを受信し、コンピューティングデバイスの現在の構成、機能、動作状態、および/または接続される/含まれるハードウェアに関連のある特徴のみを大きい分類器モデルから選択すること、ならびに、選択された特徴に対応するブーストされた決定株のサブセットを簡潔な分類器モデルに含めることによって、大きい分類器モデルから1つまたは複数の簡潔な分類器モデルを導出するように構成されてもよい。この実施形態では、コンピューティングデバイスに関連がある特徴に対応する分類器基準は、選択された特徴の少なくとも1つを試験する、大きい分類器モデルに含まれるブーストされた決定株であり得る。デバイスのプロセッサは、次いで、コンピューティングデバイスの現在の状態および構成に少なくとも部分的に基づいて様々な特徴を含めるかまたは削除するように、ブーストされた決定株の簡潔な分類器モデルを定期的に変更または再生成してもよいので、簡潔な分類器モデルは、アプリケーション固有またはデバイス固有の特徴のブーストされた決定株を含み続ける。
【０１０１】
加えて、デバイスのプロセッサはまた、特定のソフトウェアアプリケーション(Google(登録商標)walletおよびeTrade(登録商標))に、および/または特定のタイプのソフトウェアアプリケーション(たとえば、ゲーム、ナビゲーション、金融、ニュース、生産性など)に関連のある条件または特徴を特定するアプリケーション固有の分類器モデルを動的に生成することもできる。これらの分類器モデルは、完全な分類器モデルに含まれる決定ノードの(または、受信された完全な分類器モデルから生成されたより簡潔な分類器モデル内に含まれる決定ノードの)縮小された、およびより専心的なサブセットを含むように生成されてもよい。これらの分類器モデルを組み合わせて、マルチアプリケーション分類器モデルを生成してもよい。
【０１０２】
様々な実施形態では、デバイスプロセッサは、システムにおける各ソフトウェアアプリケーションのための、および/またはシステムにおけるソフトウェアアプリケーションの各タイプのための、アプリケーションベースの分類器モデルを生成するように構成されてもよい。デバイスプロセッサはまた、危険性が高くまたは乱用されやすいソフトウェアアプリケーションおよび/またはアプリケーションのタイプ(たとえば、金融アプリケーション、ポイントオブセールアプリケーション、生体センサアプリケーションなど)を動的に特定し、危険性が高くまたは乱用されやすいものとして特定されたソフトウェアアプリケーションおよび/またはアプリケーションのタイプだけのためのアプリケーションベースの分類器モデルを生成するように構成されてもよい。様々な実施形態では、デバイスのプロセッサは、動的に、反応的に、事前に、かつ/または新しいアプリケーションがインストールもしくは更新されるたびに、アプリケーションベースの分類器モデルを生成するように構成されてもよい。
【０１０３】
各ソフトウェアアプリケーションは、一般に、コンピューティングデバイス上でいくつかのタスクまたは活動を実行する。いくつかのタスク/活動がコンピューティングデバイスにおいて実行される特定の実行状態は、挙動または活動が追加のまたはより精密な精査、監視、および/または分析に値するかどうかの強い指標であり得る。したがって、様々な実施形態では、デバイスプロセッサは、いくつかのタスク/活動が実行される実際の実行状態を特定する情報を使用して、その挙動監視および分析動作に専心し、活動が重要な活動であるかどうか、および/または活動が非良性であるかどうかをより良く判定するように構成されてもよい。
【０１０４】
様々な実施形態では、デバイスのプロセッサは、ソフトウェアアプリケーションによって実行された活動/タスクを、それらの活動/タスクが実行された実行状態と関連付けるように構成されてもよい。たとえば、デバイスのプロセッサは、実行状態に関連のあるソフトウェアの特徴、活動、または動作(たとえば、位置アクセス、SMS読取り動作、センサアクセスなど)を列挙するサブベクトルまたはデータ構造において、計測されたコンポーネントを監視することから収集された挙動情報を含む挙動ベクトルを生成するように構成されてもよい。ある実施形態では、このサブベクトル/データ構造は、各特徴/活動/動作が観測された実行状態を特定する影の特徴値サブベクトル/データ構造に関連して記憶されてもよい。一例として、デバイスのプロセッサは、その値が、ソフトウェアアプリケーションがバックグラウンド状態において動作中であったときにソフトウェアアプリケーションが位置情報にアクセスした回数または割合を特定する、"location_background"データフィールドを含む挙動ベクトルを生成してもよい。これによって、デバイスのプロセッサが、コンピューティングデバイスの他の観測された/監視された活動とは無関係に、および/またはそれと並列に、この実行状態情報を分析することが可能になる。このようにして挙動ベクトルを生成することで、システムが情報(たとえば、頻度または割合)を経時的に統合することも可能になる。
【０１０５】
様々な実施形態では、デバイスのプロセッサは、監視された活動に関するクエリに対する回答を生成するために、機械学習分類器における決定ノードに入力され得る情報を含むように挙動ベクトルを生成するように構成されてもよい。
【０１０６】
様々な実施形態では、デバイスプロセッサは、実行情報を含めるように挙動ベクトルを生成するように構成されてもよい。実行情報は、挙動の一部(たとえば、バックグラウンドプロセスによって3秒間に5回使用されたカメラ、フォアグラウンドプロセスによって3秒間に3回使用されたカメラなど)として、または無関係の特徴の一部として、挙動ベクトル内に含まれてもよい。ある実施形態では、実行状態情報は、影の特徴値サブベクトルまたはデータ構造として、挙動ベクトルに含まれてもよい。ある実施形態では、挙動ベクトルは、実行状態に関連のある特徴、活動、タスクに関連して、影の特徴値サブベクトル/データ構造を記憶してもよい。
【０１０７】
図2Bは、コンピューティングデバイスの性能、電力利用レベル、ネットワーク使用レベル、セキュリティ、および/またはプライバシーを劣化させ得る条件および挙動を、機械学習技法を使用して効率的に特定し、分類し、モデル化し、防止し、かつ/または訂正するように構成される、挙動ベースのシステムによってデバイスの挙動をホワイトリスト登録する方法250を示す。方法250は、モバイルデバイスなどの、リソースが制約されたコンピューティングデバイス中のプロセッサまたは処理コアによって実行されてもよい。
【０１０８】
ブロック252において、処理コアは、(たとえば、図2Aを参照して上で論じられた挙動観測器モジュール202を介して)コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視してもよい。ブロック254において、処理コアは、(たとえば、挙動抽出器モジュール204を介して)監視されている活動のすべてまたは一部分を特徴付ける挙動ベクトル情報構造を生成してもよい。
【０１０９】
ブロック256において、処理コアは、(たとえば、挙動分析器モジュール208を介して)挙動ベクトル情報構造を機械学習分類器モデルに適用して分析結果を生成してもよい。ブロック258において、処理コアは、分析結果を使用して挙動ベクトル(および、したがって挙動ベクトル情報構造によって特徴付けられる活動/挙動)を分類/副分類してもよい。たとえば、処理コアは、挙動ベクトル情報構造を、良性である、疑わしい、または非良性であるものとして分類し、ゲーム、アドウェアなどとして副分類してもよい。いくつかの実施形態では、処理コアはまた、副分類に少なくとも部分的に基づいて、挙動ベクトル情報構造によって特徴付けられる活動/挙動の優先度または相対的な重要性(たとえば、ソフトウェアアプリケーションまたは挙動がデバイスの適切な動作に与える危険性または脅威の深刻さなど)を判定してもよい。本開示の様々な実施形態において、コンピューティングデバイスは、各活動または挙動と関連付けられる優先度または重要性の値に少なくとも部分的に基づいて、活動/挙動の優先度または相対的な重要性を判定するように構成されてもよい。優先度/重要性の値は、所定の値であることがあり、不変の値であることがあり、または、(たとえば、挙動モデルの以前の実行、前回の適用などから収集される)履歴情報、新しい機械学習、状況モデル化などに少なくとも部分的に基づいて動的に判定されることがある。
【０１１０】
判定ブロック260において、処理コアは、挙動ベクトル情報構造が良性であるものとして分類されたかどうか(または、挙動ベクトル情報構造によって特徴付けられる活動/挙動が良性であるかどうか)を判定してもよい。挙動ベクトル情報構造によって特徴付けられる監視される活動が良性であるものとして分類されたとの判定に応答して(すなわち、判定ブロック260="Yes")、処理コアは、ブロック252において同じまたは異なるソフトウェアアプリケーションの活動を監視することを続け、かつ/または、本明細書において論じられる挙動ベースの動作のいずれかもしくはすべてを実行してもよい。
【０１１１】
挙動ベクトル情報構造によって特徴付けられる監視される活動が良性であるものとして分類されなかったとの判定に応答して(すなわち、判定ブロック260="No")、処理コアは、判定ブロック262において、挙動ベクトル情報構造によって特徴付けられる監視される活動または挙動がホワイトリスト(たとえば、図2Aを参照して上で論じられた挙動ホワイトリスト212)に含まれるかどうかを判定してもよい。
【０１１２】
活動/挙動がホワイトリストに含まれるとの判定に応答して(すなわち、判定ブロック262="Yes")、処理コアは、挙動ベクトル情報構造によって特徴付けられる挙動を無視し、ブロック252において同じまたは異なるソフトウェアアプリケーションの活動を監視することを続け、かつ/または、本明細書において論じられる挙動ベースの動作のいずれかもしくはすべてを実行してもよい。すなわち、ユーザにプロンプトを表示すること、または挙動が良性ではないとの判定に応答して作動動作を実行することの代わりに、処理コアは、挙動ベクトル情報構造によって特徴付けられる疑わしい挙動または非良性である可能性がある挙動を、それがホワイトリストに含まれていることにより、無視する。したがって、あるアプリケーションの挙動または監視される活動をホワイトリスト登録することによって、システムは、このアプリケーションについてこの挙動または監視されている活動をもはや監視しなくてよく、これにより、挙動の監視と関連付けられるシステムの処理を減らす。これは、位置追跡などの非常に一般的な挙動について特に当てはまる。
【０１１３】
活動/挙動がホワイトリストに含まれないとの判定に応答して(すなわち、判定ブロック262="No")、処理コアは、ブロック264において、ソフトウェアアプリケーションがデバイス上で動作し続けることが許可されるかどうかを判定/選択するようにユーザに要求する、プロンプトを生成して表示してもよい。このプロンプトはまた、挙動が疑わしいと判定された理由(たとえば、アドウェアであるなど)を特定してもよい。
【０１１４】
ブロック266において、処理コアは、ソフトウェアアプリケーションがデバイス上で動作し続けることが許可される(たとえば、ユーザに対するソフトウェアアプリケーションの利益がその負の特性を上回るなど)かどうかを示すユーザ入力を受け取り、受け取られたユーザ入力を使用して、監視されている活動をホワイトリストに追加するかどうか、および/または作動動作を実行するかどうかを判定してもよい。ブロック268において、処理コアは、ソフトウェアアプリケーションがデバイス上で動作し続けることが許可されることをユーザ入力が示すときに挙動ベクトル情報構造によって特徴付けられる活動/挙動を挿入すること、または、ソフトウェアアプリケーションがデバイス上で動作し続けるべきではないことをユーザ入力が示すときにソフトウェアアプリケーションおよび/もしくはそのソフトウェアアプリケーションと関連付けられる挙動のすべてを削除することなどによって、ホワイトリストを更新してもよい。ブロック268のように、処理コアは、ソフトウェアアプリケーションがデバイス上で動作し続けるべきではないことをユーザ入力が示すときなどに、1つまたは複数の作動動作を実行してもよい(たとえば、ソフトウェアアプリケーションを終了するなど)。
【０１１５】
図3Aは、コンピューティングデバイスにおいて簡潔なまたは専心的な分類器/挙動モデルを生成する方法300を示す。方法300は、モバイルデバイスなどの、リソースが制約されたコンピューティングデバイス中のプロセッサまたは処理コアによって実行されてもよい。方法300のブロック302において、処理コアは、有限ステートマシン、ブーストされた決定株のリスト、または他の同様の情報構造である、またはそれらを含む、完全な分類器モデルを選択または受信してもよい。ある実施形態では、完全な分類器モデルは、複数のブーストされた決定株を表現するのに適した情報を含み、かつ/または複数のブーストされた決定株へのコンピューティングデバイスによる変換に適した情報を含む、有限ステートマシンを含む。ある実施形態では、有限ステートマシンは、ブーストされた決定株の順序付けられた、または優先順位付けられたリストであり得る(またはそれを含んでもよい)。ブーストされた決定株の各々は、試験条件および重み値を含んでもよい。
【０１１６】
上で論じられたように、ブーストされた決定株は、厳密に1つのノード(したがって1つの試験質問または試験条件)と重み値とを有し、したがってデータ/挙動のバイナリ分類における使用によく適している、1レベルの決定木である。これは、特徴ベクトルまたは挙動ベクトルをブーストされた決定株に適用することで、2値の答え(たとえば、YesまたはNo)がもたらされることを意味する。たとえば、ブーストされた決定株によって試験される質問/条件が「SMS送信の頻度が毎分x回よりも少ないか」である場合、ブーストされた決定株に"3"の値を適用すると、(「3回未満」のSMS送信の場合)"Yes"の回答または(「3回以上」のSMS送信の場合)"No"の回答のいずれかがもたらされる。
【０１１７】
図3Aに戻ると、方法300のブロック304において、処理コアは、コンピューティングデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、コンピューティングデバイスの挙動を良性または非良性のいずれかとして正確に分類するために評価されるべき固有の試験条件の数を判定してもよい。これは、コンピューティングデバイスにおいて利用可能な処理リソース、メモリリソース、および/またはエネルギーリソースの量、条件を試験するために必要なコンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量を判定することと、条件を試験することによってコンピューティングデバイスにおいて分析または評価されるべき挙動または条件と関連付けられる優先順位および/または複雑さを判定することと、コンピューティングデバイスの利用可能な処理リソース、メモリリソース、またはエネルギーリソースの消費、条件を試験することによって達成されることになる挙動分類の正確さ、および条件によって試験される挙動の重要性または優先度の間でバランスをとるように固有の試験条件の数を選択/判定することとを含んでもよい。
【０１１８】
ブロック306において、処理コアは、判定された数の固有の試験条件を有する選択された試験条件のリストを埋めるために、ブーストされた決定株のリストを最初から調査してもよい。ある実施形態では、処理コアはまた、選択された試験条件の各々に対する絶対的または相対的な優先度の値を判定し、選択された試験条件のリスト中の対応する試験条件に関連して、絶対的または相対的な優先度の値を記憶してもよい。
【０１１９】
ブロック308において、処理コアは、選択された試験条件のうちの1つを試験する完全な分類器モデルに含まれるすべてのブーストされた決定株を含む簡潔な分類器モデルを生成してもよい。ある実施形態では、処理コアは、それらの重要性または優先度の値の順でブーストされた決定株を含むように、または表現するように、簡潔な分類器モデルを生成してもよい。
【０１２０】
任意選択のブロック310において、固有の試験条件の数は、ブロック306においてより多数の試験条件のためにブーストされた決定株のリストを調査する動作を繰り返すことと、ブロック308において別の簡潔な分類器モデルを生成することとによって、別のよりロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルを生成するために、増やされてもよい。これらの動作は、簡潔な分類器モデルのファミリを生成するために繰り返されてもよい。
【０１２１】
図3Bは、コンピューティングデバイスにおいてデータモデルを生成する別の実施形態の方法311を示す。方法311は、コンピューティングデバイス中の処理コアによって実行されてもよい。方法311のブロック312において、処理コアは、有限ステートマシンを含む完全な分類器モデルを受信してもよい。有限ステートマシンは、複数のブーストされた決定株への変換に適した情報を含む情報構造であり得る。ブロック314において、処理コアは、完全な分類器モデルに含まれる有限ステートマシンを、試験条件および重み値を含むブーストされた決定株に変換してもよい。
【０１２２】
ある実施形態では、処理コアはまた、ブロック312において有限ステートマシンから生成されるブーストされた決定株の各々に対する優先度の値を計算または判定してもよい。処理コアは、コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの消費、挙動分類の正確さなどの間のトレードオフを均衡させる方式で、ブーストされた決定株の優先度を判定してもよい。たとえば、迅速に処理されよりエネルギー効率の良い(たとえば、駆動されるのに物理的リソースを必要としない)ブーストされた決定株は、高い優先度を与えられることがあるので、より効率の悪いブーストされた決定株よりも、簡潔な分類器モデルにおいて(ブロック312において)実装される可能性がより高い。処理コアはまた、関連する重み値、挙動を正確に分類するための試験条件の相対的なまたは予測された重要性などに少なくとも部分的に基づいて、ブーストされた決定株の優先度を判定してもよい。
【０１２３】
また、ブロック312において、処理コアは、有限ステートマシンから生成されたブーストされた決定株を、それらの優先度に従って、かつ/またはそれらの重要性の順序で、含み、参照し、特定し、および/または編成する、第1のリスト(または他の情報構造)を生成してもよい。たとえば、処理コアは、第1の項目として最高の優先度を有する株、それに続いて2番目に高い優先度の値を有する株などを含む、順序付けられたリストとなるように第1のリストを生成してもよい。優先度を使用してリストを順序付けることによって、処理コアは、ソフトウェアアプリケーションの活動を監視しかつ分析するために使用されるコンピューティングデバイスの処理リソース、メモリリソース、および/またはエネルギーリソースの量と、第1の監視されている活動の判定された相対的な重要性との間のトレードオフを均衡させてもよい。重要性のこの順序はまた、クラウドコーパスから集められる情報、ならびに選別アルゴリズムが実行されているデバイスに固有の情報を考慮に入れてもよい。
【０１２４】
ブロック316において、処理コアは、簡潔な分類器モデルを適用するときに評価されるべき固有の試験条件(すなわち、ブーストされた決定株において試験され得るコンピューティングデバイスの状態、特徴、挙動、または条件)の数を計算または判定してもよい。固有の試験条件のこの数を計算または判定することは、モデルを適用するのに必要なコンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの消費と、簡潔な分類器モデルによって達成されるべき挙動分類の正確さとの間でバランスをとること、または折り合いをつけることを伴うことがある。そのような判定は、コンピューティングデバイスにおいて利用可能な処理リソース、メモリリソース、および/またはエネルギーリソースの量を判定することと、分析されるべき挙動と関連付けられた優先度および/または複雑さを判定することと、利用可能なリソースと挙動の優先度および/または複雑さとのバランスをとることとを含んでもよい。
【０１２５】
ブロック318において、処理コアは、ブーストされた決定株の第1のリストを順次調査し、調査されたブーストされた各決定株と関連付けられる試験条件値を第2のリストに挿入することによって、第2のリストを生成してもよい。処理コアは、第2のリストの長さが固有の試験条件の判定された数に等しくなるまで、または第2のリストがすべての判定された数の固有の試験条件を含むまで、第1のリストを調査することおよび値を第2のリストに挿入することを続けてもよい。
【０１２６】
ブロック320において、処理コアは、第1のリストに含まれるブーストされた決定株に少なくとも部分的に基づいて、簡潔な分類器モデルを生成してもよい。ある実施形態では、処理コアは、第2のリスト(すなわち、ブロック318において生成された試験条件のリスト)に含まれる試験条件のうちの1つを試験するブーストされた決定株だけを含むように、簡潔な分類器モデルを生成してもよい。やはり、各株によって試験される特徴を監視するために使用されるコンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量などの要因に少なくとも部分的に基づいて割り当てられる優先度を使用する、ブーストされた決定株の順序付けられたリストを使用することによって、生成された簡潔な分類器モデルは、ソフトウェアアプリケーションの活動を監視しかつ分析するために使用されるコンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、第1の監視されている活動の判定された相対的な重要性との間のトレードオフを均衡させてもよい。
【０１２７】
任意選択のブロック322において、固有の試験条件の数は、ブロック318においてより多数の試験条件のためにブーストされた決定株のリストを調査する動作を繰り返すことと、ブロック320において別の簡潔な分類器モデルを生成することとによって、別のよりロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルを生成するために、増やされてもよい。これらの動作は、簡潔な分類器モデルのファミリを生成するために繰り返されてもよい。
【０１２８】
図3Cは、コンピューティングデバイスの挙動を分類するため簡潔な分類器モデルを使用するある実施形態の方法324を示す。方法324は、コンピューティングデバイス中の処理コアによって実行されてもよい。
【０１２９】
方法324のブロック326において、処理コアは、観測を実行して、コンピューティングデバイスシステムの様々なレベルにおいて取り付けられた様々なコンポーネントから挙動情報を収集してもよい。ある実施形態では、これは、図2Aを参照して上で論じられた挙動観測器モジュール202を介して達成されてもよい。ブロック328において、処理コアは、観測結果、収集された挙動情報、および/またはコンピューティングデバイスの挙動を特徴付ける、挙動ベクトルを生成してもよい。また、ブロック328において、処理コアは、完全な分類器モデルを使用して、簡潔な分類器モデル、または複雑さ(または「簡潔さ」)のレベルが様々である簡潔な分類器モデルのファミリを生成してもよい。これを達成するために、処理コアは、完全な分類器モデル内に含まれるブーストされた決定株のファミリを選別して、減らされた数のブーストされた決定株を含む、かつ/または限られた数の試験条件を評価する、簡潔な分類器モデルを生成してもよい。
【０１３０】
ブロック329において、処理コアは、コンピューティングデバイスによってまだ評価または適用されていない簡潔な分類器モデルのファミリの中で最も簡潔な分類器(すなわち、最少の数の異なるコンピューティングデバイスの状態、特徴、挙動、または条件に少なくとも部分的に基づくモデル)を選択してもよい。ある実施形態では、これは、処理コアが分類器モデルの順位付けられたリストの中の最初の分類器モデルを選択することによって達成されてもよい。
【０１３１】
ブロック330において、処理コアは、収集された挙動情報または挙動ベクトルを、選択された簡潔な分類器モデルの中の各々のブーストされた決定株に適用してもよい。ブーストされた決定株はバイナリの判定であり、簡潔な分類器モデルは同じ試験条件に少なくとも部分的に基づく多くのバイナリの判定を選択することによって生成されるので、簡潔な分類器モデルの中のブーストされた決定株に挙動ベクトルを適用するプロセスは、並列動作で実行されてもよい。代替的に、ブロック330において適用される挙動ベクトルは、簡潔な分類器モデルに含まれる限られた数の試験条件パラメータをちょうど含むように切り捨てられてよく、またはフィルタリングされてよく、それによってモデルを適用する際の計算量をさらに減らす。
【０１３２】
ブロック332において、処理コアは、収集された挙動情報を簡潔な分類器モデルの中の各々のブーストされた決定株に適用した結果の加重平均を計算または判定してもよい。ブロック334において、処理コアは、計算された加重平均と閾値とを比較してもよい。判定ブロック335において、処理コアは、この比較の結果が、および/または選択された簡潔な分類器モデルを適用することによって生成された結果が疑わしいかどうかを判定してもよい。たとえば、処理コアは、これらの結果が、高い信頼度で良性または非良性のいずれかであるとして挙動を分類するために使用されてもよいかどうかを判定することができ、そうではない場合、挙動を疑わしいものとして扱う。
【０１３３】
結果が疑わしいと処理コアが判定する(たとえば、判定ブロック335="Yes")場合、処理コアは、ブロック329〜334における動作を繰り返して、挙動が高い信頼度で良性または非良性であるとして分類されるまで、より多くのデバイスの状態、特徴、挙動、または条件を評価するより強い(すなわち、より簡潔ではない)分類器モデルを選択および適用してもよい。挙動が高い信頼度で良性または非良性のいずれかであるとして分類され得ると判定することなどによって、結果が疑わしくない(たとえば、判定ブロック335="No")と処理コアが判定する場合、ブロック336において、処理コアは、ブロック334において生成された比較の結果を使用して、良性であるまたは潜在的に非良性であるとしてコンピューティングデバイスの挙動を分類することができる。
【０１３４】
図3Dに示されるある代替的な実施形態の方法340では、ブロック318および320に関して上で説明された動作は、簡潔な分類器モデルの中にまだ存在しないブーストされた決定株を順次選択し、選択された決定株と同じコンピューティングデバイスの状態、特徴、挙動または条件に依存する(およびしたがって、1つの判定結果に基づいて適用可能である)すべての他のブーストされた決定株を特定し、同じコンピューティングデバイスの状態、特徴、挙動または条件に依存する選択されたすべての特定された他のブーストされた決定株を簡潔な分類器モデルに含め、試験条件の判定された数に等しい回数、プロセスを繰り返すことによって、達成されてもよい。選択されたブーストされた決定株と同じ試験条件に依存するすべてのブーストされた決定株が毎回簡潔な分類器モデルに追加されるので、このプロセスが実行される回数を限定することは、簡潔な分類器モデルに含まれる試験条件の数を限定することになる。
【０１３５】
図3Dを参照すると、ブロック342において、処理コアは、簡潔な分類器モデルにおいて評価されるべき固有の試験条件(すなわち、ブーストされた決定株において試験され得るコンピューティングデバイスの状態、特徴、挙動、または条件)の数(N)を計算または判定してもよい。固有の試験条件のこの数を計算または判定することは、モデルを適用するのに必要なコンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの消費と、簡潔な分類器モデルによって達成されるべき挙動分類の正確さとの間でバランスをとること、または折り合いをつけることを伴うことがある。そのような判定は、コンピューティングデバイスにおいて利用可能な処理リソース、メモリリソース、および/またはエネルギーリソースの量を判定することと、分析されるべき挙動と関連付けられた優先度および/または複雑さを判定することと、利用可能なリソースと挙動の優先度および/または複雑さとのバランスをとることとを含んでもよい。
【０１３６】
ブロック344において、処理コアは、ループカウント変数の値をゼロ(0)に等しくなるように設定するか、またはそうでなければ、判定された回数(N回)実行されるループを初期化してもよい。ブロック346において、処理コアは、ブーストされた決定株の完全なセットに含まれるかもしくはそこから生成され、かつ簡潔な分類器モデルのリストに含まれないブーストされた決定株を選択してもよい。ループの初回は、簡潔な分類器モデルのリストにブーストされた決定株が存在しないので、最初のブーストされた決定株が選択されることになる。本明細書において言及されるように、完全な分類器モデルは、完全なセットにおける最初のブーストされた決定株が良性または非良性の挙動を認識する最高の確率を有するように構成されてもよい。ブロック348において、処理コアは、選択された決定株と関連付けられる試験条件を判定してもよい。ブロック350において、処理コアは、選択された決定株の試験条件と同じ試験条件に依存する、それを含む、または試験する、完全な分類器モデルに含まれるかまたはそこから生成される決定株のすべてを特定してもよい。ブロック352において、処理コアは、選択されたブーストされた決定株と、同じ試験条件に依存する、それを含む、または試験する、特定されたブーストされた決定株のすべてとを、簡潔な分類器モデルのリストに追加してもよい。
【０１３７】
ブロック354において、処理コアは、ループカウント変数の値をインクリメントしてもよい。判定ブロック356において、処理コアは、ループカウント変数の値がブロック342において判定された固有の試験条件の数N以上であるかどうかを判定してもよい。ループカウント変数の値が固有の試験条件の数以上ではない(すなわち、判定ブロック356="No")と処理コアが判定すると、処理コアは、ブロック346〜354における動作を繰り返してもよい。ループカウント変数の値が特有の試験条件の数以上である(すなわち、判定ブロック356="Yes")と処理コアが判定すると、ブロック358において、処理コアは、簡潔な分類器モデルのリストの中のすべてのブーストされた決定株を含むように簡潔な分類器モデルを生成してもよい。
【０１３８】
この方法340は、簡潔な分類器モデルの中の固有の試験条件の数Nを変えることによって、ロバストさまたは簡潔さの程度が様々である簡潔な分類器モデルのファミリを生成するために、ある回数使用されてもよい。たとえば、任意選択のブロック360において、コンピューティングデバイスのプロセッサは、より多くの試験条件を組み込む別の簡潔な分類器モデルを生成するために、ブロック342において判定される固有の試験条件の数Nを増やしてもよい。任意選択の判定ブロック362において、プロセッサは、増加した数Nが試験条件の最大の数(max N)を超えるかどうかを判定してもよい。試験条件の最大の数は、最大の性能ペナルティまたは分類し難い挙動を評価するのに望ましいリソースの投資に少なくとも部分的に基づいて(たとえば、開発者、サービスプロバイダ、ユーザによって、またはアルゴリズムを介して)判定されてもよい。増加した数Nが最大の数max Nより小さい(すなわち、判定ブロック362="No")場合、上で説明されたブロック344〜360の動作が、別の簡潔な分類器モデルを生成するために繰り返されてもよい。固有の試験条件の最大の数が簡潔な分類器モデル内に含まれる(すなわち、判定ブロック362="Yes")と、簡潔な分類器モデルを生成するプロセスは終了してもよい。
【０１３９】
図3A、図3Bおよび図3Dは、ブーストされた決定株の完全なセットを調査する全プロセスを繰り返すことによって簡潔な分類器モデルのファミリを生成することを説明しているが、同様の結果は、生成された簡潔な分類器モデル(すなわち、ブロック308、320および358のいずれかにおいて生成されたモデル)から開始し、かつ追加された数の試験条件に対してブーストされた決定株の完全なセットを調査して、生成された簡潔な分類器モデル内にまだ含まれていない試験条件に応じてブーストされた決定株をそのモデルに追加することによって達成されてもよい。
【０１４０】
同じく、図3A、図3Bおよび図3Dは最も簡潔なものから最もロバストなものまで簡潔な分類器モデルのファミリを生成することを説明しているが、簡潔な分類器モデルはまた、単に、試験条件の最大の数(たとえば、N=max N)から開始し、数を毎回減らすことによって、最もロバストなものから最も簡潔なものまで生成されてもよい。
【０１４１】
図4Aは、完全な分類器モデルを生成するある実施形態の方法400を示す。方法400は、モバイルデバイスなどの、リソースが制約されたコンピューティングデバイス中のプロセッサまたは処理コアによって実行されてもよい。
【０１４２】
ブロック402において、処理コアは、多数のデバイスの状態、構成、および挙動、ならびに悪性の挙動が検出されたかどうかに関する情報を含む挙動データのコーパスを、(たとえば、多くのコンピューティングデバイスから)受信し、または集めてもよい。ブロック404において、処理コアは、挙動データのコーパスから、デバイスの状態、構成、および挙動の中で試験できる特定のバイナリの質問/試験条件を特定してもよい。デバイスの状態、構成および挙動のすべてを特徴付けるために、多数のそのようなバイナリの質問/試験条件が通常は特定される。次に、ブロック406において、特定されたバイナリの質問の各々に対して、処理コアは、データベースを試験して、悪性の挙動がバイナリの質問に対する答えの一方または他方に対応した回数の割合または百分率を判定してもよい。ブロック408において、処理コアは、対応度の百分率に少なくとも部分的に基づいて判定される重み値を有する第1の決定株として、非良性の挙動への最高の対応度を有するバイナリの質問を選択してもよい。ブロック410において、処理コアは、図4Bを参照して以下で説明されるように、誤分類されたサンプル/試験条件の重みをブーストしてもよい。
【０１４３】
次に、処理コアは、第1の質問の答えが悪性の挙動と関連付けられない値(たとえば、"No")であると仮定すると、この場合に悪性の挙動への最高の対応度を有する質問を特定するために、バイナリの質問をスキャンするプロセスを繰り返してもよい。次に、その質問は、モデルにおいて第2のバイナリの質問として設定され、その重み値はその対応度の百分率に少なくとも部分的に基づいて判定される。次に、処理コアは、第1の質問/試験条件の答えが悪性の挙動と関連付けられない値(たとえば、"No")であると仮定すると、この場合に悪性の挙動への最高の対応度を有する次の質問/試験条件を特定するために、バイナリの質問をスキャンするプロセスを繰り返してもよい。次に、その質問/試験条件は、モデルにおける第3のバイナリの質問/試験条件であり、その重み値はその対応度の百分率に少なくとも部分的に基づいて判定される。このプロセスは、完全なセットを構築するために、特定されたバイナリの質問/試験条件のすべてを通して続けられる。
【０１４４】
バイナリの質問/試験条件を生成するプロセスにおいて、サーバは、以前の時間間隔内での通信の頻度または通信の数などの、ある範囲を有するデータを評価し、挙動を分類するのを支援する方式でその範囲を包含する一連のバイナリの質問/試験条件を策定してもよい。したがって、1つのバイナリの質問/試験条件はデバイスが直前の5分間に1つ以上のデータ送信を行った(それは低い相関を有する)かどうかであってよく、第2のバイナリの質問/試験条件はデバイスが直前の5分間に10回を超えるデータ送信を行った(それは中間の相関を有する)かどうかであってよく、第3のバイナリの質問/試験条件はデバイスが直線の5分間に100回を超えるデータ送信を行った(それは高い相関を有する)かどうかであってよい。
【０１４５】
悪性の挙動に対して判定された重みまたは相関が閾値より小さい(たとえば、統計的に有意ではない)質問/試験条件を除去するために、質問/試験条件の最終的なセットの何らかの選別が、処理コアによって行われることがある。たとえば、悪性の挙動に対する相関が約50/50である場合、現在の挙動が良性であるか非良性であるかの質問に答えず、その質問に答えることの助けにもならないので、その決定株を使用することには利点がほとんどないことがある。
【０１４６】
図4Bは、様々な実施形態に従って使用するのに適した、ブーストされた決定木/分類器を生成するのに適した例示的なブースト方法420を示す。動作422において、プロセッサまたは処理コアは、決定木/分類器を生成および/または実行し、決定木/分類器の実行によって訓練サンプルを収集し、訓練サンプルに少なくとも部分的に基づいて新しい分類器モデル(h1(x))を生成してもよい。訓練サンプルは、デバイスの挙動、ソフトウェアアプリケーション、またはそのデバイスにおけるプロセスの、以前の観測または分析から収集された情報を含んでもよい。訓練サンプルおよび/または新しい分類器モデル(h1(x))は、以前の分類器に含まれる質問もしくは試験条件のタイプに少なくとも部分的に基づいて、および/または、挙動分析器モジュール204の以前のデータ/挙動モデルまたは分類器モデルの実行/適用から収集された正確さもしくは性能特性に少なくとも部分的に基づいて生成されてもよい。動作424において、プロセッサまたは処理コアは、第2の新しい木/分類器(h2(x))を生成するために、生成された決定木/分類器(h1(x))によって誤分類されたエントリの重みをブーストしてもよい(または増大させてもよい)。ある実施形態では、訓練サンプルおよび/または新しい分類器モデル(h2(x))は、分類器の以前の実行または使用(h1(x))のエラー/誤り率に少なくとも部分的に基づいて生成されてもよい。ある実施形態では、訓練サンプルおよび/または新しい分類器モデル(h2(x))は、分類器の以前の実行または使用においてデータポイントの誤り率または誤分類に寄与したと判定される属性に少なくとも部分的に基づいて生成されてもよい。
【０１４７】
ある実施形態では、誤分類されたエントリは、それらの相対的な正確さまたは有効性に少なくとも部分的に基づいて重み付けられてもよい。動作426において、プロセッサまたは処理コアは、第3の新しい木/分類器(h3(x))を生成するために、生成された第2の木/分類器(h2(x))によって誤分類されたエントリの重みをブーストしてもよい(または増大させてもよい)。動作428において、424〜426の動作が、数"t"の新しい木/分類器(ht(x))を生成するために繰り返されてもよい。
【０１４８】
第1の決定木/分類器(h1(x))によって誤分類されたエントリの重みをブーストし、または増大させることによって、第2の木/分類器(h2(x))は、第1の決定木/分類器(h1(x))によって誤分類されたエントリをより正確に分類してもよいが、第1の決定木/分類器(h1(x))によって正しく分類されたエントリのいくつかを誤分類することもある。同様に、第3の木/分類器(h3(x))は、第2の決定木/分類器(h2(x))によって誤分類されたエントリをより正確に分類してもよいが、第2の決定木/分類器(h2(x))によって正しく分類されたエントリのいくつかを誤分類することがある。すなわち、木/分類器のファミリh1(x)〜ht(x)を生成することは、全体として収束するシステムをもたらさないことがあり、並列に実行されてもよいいくつかの決定木/分類器をもたらす。
【０１４９】
図5は、ある実施形態による、挙動を分類および副分類する方法500を示す。方法500は、モバイルコンピューティングデバイスまたはリソースが制約されているコンピューティングデバイスにおけるプロセッサまたは処理コアによって実行されてもよい。ブロック502において、処理コアは、挙動ベースの機械学習技法を使用して、デバイスの挙動を、良性である、疑わしい、または非良性であるものとして分類してもよい。ブロック504において、処理コアは、マルチラベル分類またはメタ分類技法を使用して、良性の、疑わしい、および非良性の挙動を、カテゴリ、サブカテゴリ、グループ、またはサブグループへとさらに分類してもよい(たとえば、副分類する、カテゴライズする、ラベリングするなど)。
【０１５０】
任意選択のブロック506において、処理コアは、ソフトウェアアプリケーションまたは挙動がデバイスの適切な動作に与える危険性または脅威の深刻さなどの、挙動の相対的な重要性を、その挙動の副分類に少なくとも部分的に基づいて(たとえば、その挙動と関連付けられるカテゴリ、グループ、またはラベルに少なくとも部分的に基づいて)判定してもよい。
【０１５１】
ブロック508において、処理コアは、挙動の副分類または判定された相対的な重要性に少なくとも部分的に基づいて、分析動作または作動動作を判定し、選択し、および/または実行してもよい(たとえば、挙動と関連付けられるカテゴリ、グループ、またはラベルに少なくとも部分的に基づいて、ロバストな分析動作または軽量な分析動作を実行するかを判定してもよい)。
【０１５２】
図6は、ある実施形態による、動的かつ適応的な観測を実行するための例示的な方法600を示す。ブロック602において、デバイスのプロセッサは、モバイルデバイスの劣化に寄与し得る多数の要因/挙動のサブセットを監視/観測することによって、粗い観測を実行してもよい。ブロック603において、デバイスのプロセッサは、粗い観測に少なくとも部分的に基づいて、粗い観測および/またはモバイルデバイスの挙動を特徴付ける挙動ベクトルを生成してもよい。
【０１５３】
ブロック604において、デバイスのプロセッサは、モバイルデバイスの劣化に潜在的に寄与し得る、粗い観測と関連付けられるサブシステム、プロセス、および/またはアプリケーションを特定してもよい。これは、たとえば、複数のソースから受け取られた情報とモバイルデバイスのセンサから受け取られた状況的情報とを比較することによって達成されてもよい。ブロック606において、デバイスのプロセッサは、粗い観測に少なくとも部分的に基づいて挙動分析動作を実行してもよい。ある実施形態では、ブロック603および604の一部として、デバイスのプロセッサは、図2〜図10を参照して上で論じられた動作の1つまたは複数を実行してもよい。
【０１５４】
判定ブロック608において、デバイスのプロセッサは、疑わしい挙動または潜在的な問題が挙動分析の結果に少なくとも部分的に基づいて特定され修正され得るかどうかを判定してもよい。疑わしい挙動または潜在的な問題を挙動分析の結果に少なくとも部分的に基づいて特定され修正できるとデバイスのプロセッサが判定する(すなわち、判定ブロック608="Yes")とき、プロセッサは、ブロック618において挙動を修正するためのプロセスを開始し、ブロック602において追加の粗い観測を実行してもよい。
【０１５５】
疑わしい挙動または潜在的な問題を挙動分析の結果に少なくとも部分的に基づいて特定および/または修正できないとデバイスのプロセッサが判定する(すなわち、判定ブロック608="No")とき、判定ブロック609において、デバイスのプロセッサは、問題の可能性があるかどうかを判定してもよい。ある実施形態では、デバイスのプロセッサは、モバイルデバイスが潜在的な問題に遭遇することおよび/または疑わしい挙動に関与することの確率を計算し、計算された確率が所定の閾値よりも大きいかどうかを判定することによって、問題の可能性があると判定してもよい。
【０１５６】
計算された確率が所定の閾値よりも大きくない、ならびに/あるいは、疑わしい挙動または潜在的な問題が存在する可能性および/もしくは検出可能である可能性はないとデバイスのプロセッサが判定する(すなわち、判定ブロック609="No")とき、プロセッサは、ブロック612において追加の粗い観測を実行してもよい。
【０１５７】
疑わしい挙動または潜在的な問題が存在する可能性および/もしくは検出可能である可能性があるとデバイスのプロセッサが判定する(すなわち、判定ブロック609="Yes")とき、ブロック610において、デバイスのプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、より深いログ取得/観測または最終的なログ取得を実行してもよい。ブロック612において、デバイスのプロセッサは、特定されたサブシステム、プロセスまたはアプリケーションに対して、より深くより詳細な観測を実行してもよい。ブロック614において、デバイスのプロセッサは、より深くより詳細な観測に少なくとも部分的に基づいて、さらなるおよび/またはより深い挙動分析を実行してもよい。判定ブロック608において、デバイスのプロセッサは再び、疑わしい挙動または潜在的な問題がより深い挙動分析の結果に少なくとも部分的に基づいて特定され修正され得るかどうかを判定してもよい。
【０１５８】
より深い挙動分析の結果に少なくとも部分的に基づいて疑わしい挙動または潜在的な問題を特定し修正できないとデバイスのプロセッサが判定する(すなわち、判定ブロック608="No")とき、詳細さのレベルが問題を特定するのに十分に微細になるまで、または、詳細さを追加しても問題を特定できないかまたは問題が存在しないと判定されるまで、プロセッサはブロック610〜614の動作を繰り返してもよい。
【０１５９】
疑わしい挙動または潜在的な問題がより深い挙動分析の結果に少なくとも部分的に基づいて特定され修正され得るとデバイスのプロセッサが判定する(すなわち、判定ブロック608="Yes")とき、デバイスのプロセッサは、ブロック618において問題/挙動を修正するための動作を実行し、プロセッサはブロック602において追加の動作を実行してもよい。
【０１６０】
ある実施形態では、方法600のブロック602〜618の一部として、デバイスのプロセッサは、限られた粗い観測値から疑わしい挙動を特定するために、より詳細に観測するために挙動を動的に判定するために、および観測のために必要な詳細さの正確なレベルを動的に判定するために、システムの挙動のリアルタイム挙動分析を実行してもよい。これは、デバイスのプロセッサが、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリリソースを使用する必要なく、問題を効率的に特定し、問題が発生するのを防止することを可能にする。
【０１６１】
様々な実施形態が、様々なコンピューティングデバイス上で実施されることがあり、コンピューティングデバイスの一例が、スマートフォンの形で図7に示されている。スマートフォン700は、内部メモリ704と、ディスプレイ712と、スピーカ714とに結合されたプロセッサ702を含んでもよい。加えて、スマートフォン700は、プロセッサ702に結合されたワイヤレスデータリンクおよび/または携帯電話トランシーバ708に接続され得る、電磁放射を送信および受信するためのアンテナを含んでもよい。スマートフォン700は通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ720も含む。
【０１６２】
典型的なスマートフォン700はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化し、受信された音のデータパケットを復号して、音を生成するためにスピーカに供給されるアナログ信号を生成する、音声符号化/復号(コーデック)回路706を含む。また、プロセッサ702、ワイヤレストランシーバ708、およびコーデック706のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含んでもよい。
【０１６３】
プロセッサ702は、以下で説明される様々な実施形態の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成可能である任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つまたは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、ワイヤレス通信機能に専用の1つのプロセッサ、および他のアプリケーションを実行するのに専用の1つのプロセッサなどの、複数のプロセッサ702が設けられてもよい。通常、ソフトウェアアプリケーションは、アクセスされ、プロセッサ702にロードされる前に、内部メモリ704に記憶されてもよい。プロセッサ702は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含んでもよい。
【０１６４】
いくつかの異なるセルラー通信およびモバイル通信のサービスおよび規格が利用可能であり、または将来考えられ、それらのすべてが様々な実施形態を実装し、様々な実施形態から利益を受けることができる。そのようなサービスおよび規格は、たとえば、第3世代パートナーシッププロジェクト(3GPP)、long term evolution(LTE)システム、第3世代ワイヤレスモバイル通信技術(3G)、第4世代ワイヤレスモバイル通信技術(4G)、global system for mobile communications(GSM(登録商標))、universal mobile telecommunications system(UMTS)、3GSM、general packet radio service (GPRS)、符号分割多元接続(CDMA)システム(たとえば、cdmaOne、CDMA1020(商標))、enhanced data rates for GSM evolution(EDGE)、advanced mobile phone system(AMPS)、デジタルAMPS(IS-136/TDMA)、evolution-data optimized(EV-DO)、digital enhanced cordless telecommunications(DECT)、Worldwide Interoperability for Microwave Access(WiMAX)、ワイヤレスローカルエリアネットワーク(WLAN)、Wi-Fi Protected Access I & II(WPA、WPA2)、およびintegrated digital enhanced network(iden)を含む。これらの技術の各々は、たとえば、音声、データ、シグナリング、および/またはコンテンツメッセージの送信および受信を伴う。個々の電気通信の規格または技術に関係する用語および/または技術的詳細に対するいかなる言及も例示目的にすぎず、請求項の文言に具体的に記載されない限り、特許請求の範囲を特定の通信システムまたは通信技術に限定するものではないことを理解されたい。
【０１６５】
「性能劣化」という用語は、本出願では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリ寿命、個人データの損失、悪意のある経済活動(たとえば、無許可のプレミアムSMSメッセージを送信すること)、サービス拒否(DoS)、スマートデバイスを乗っ取ることまたはスパイ活動もしくはボットネット活動のためにコンピューティングデバイスを乗っ取ることまたは電話を利用することに関する動作などの、多種多様な望ましくないコンピューティングデバイスの動作および特性を指すために使用される。
【０１６６】
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、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つ以上のプロセッサもしくはコアの間で分散されることがある。加えて、これらのコンポーネントは、様々な命令および/またはデータ構造を記憶した様々な非一時的コンピュータ可読媒体から実行してもよい。コンポーネントは、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読取り/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信してもよい。
【０１７０】
本明細書において開示される実施形態に関して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装されてもよい。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路および動作が、全般にそれらの機能に関して上で説明されてきた。そのような機能がハードウェアとして実装されるのか、またはソフトウェアとして実装されるのかは、具体的な適用例および全体的なシステムに課される設計制約で決まる。当業者は、説明された機能を具体的な適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【０１７１】
本明細書において開示される実施形態に関して説明された様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DPC)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェアコンポーネント、または本明細書において説明された機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行されてもよい。汎用プロセッサはマルチプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成として実装されてもよい。代替的に、いくつかの動作または方法は、所与の機能に固有の回路構成によって実行されてもよい。
【０１７２】
1つまたは複数の例示的な実施形態では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に1つまたは複数のプロセッサ実行可能命令またはコードとして記憶されてもよい。本明細書において開示されている方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体上または非一時的プロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールの中で具現化されてもよい。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされ得る任意の記憶媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され、コンピュータによってアクセスされ得る任意の他の媒体を含んでもよい。本明細書において使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生するが、ディスク(disc)は、レーザを用いて光学的にデータを再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読記憶媒体の範囲に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれ得る、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在してもよい。
【０１７３】
開示される実施形態の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの実施形態への様々な修正が当業者には容易に明らかになり、本明細書において定義される一般原理は、特許請求の範囲から逸脱することなく他の実施形態に適用されてもよい。したがって、本開示は、本明細書において示される実施形態に限定されるものではなく、以下の特許請求の範囲ならびに本明細書において開示された原理および新規の特徴に一致する最大の範囲を与えられるものである。
【符号の説明】
【０１７４】
100  SOC
102  モバイルデバイス
103  デジタル信号プロセッサ
104  モデムプロセッサ
106  グラフィックスプロセッサ
108  アプリケーションプロセッサ
110  コプロセッサ
112  メモリ
114  アナログおよびカスタム回路
116  システムコンポーネントおよびリソース
118  クロック
120  電圧調整器
124  インターコネクト/バス
200  挙動ベースのセキュリティシステム
202  挙動観測器モジュール
204  挙動抽出器モジュール
208  挙動分析器モジュール
210  作動器モジュール
212  挙動ホワイトリスト
250  方法
300  方法
311  方法
324  方法
340  方法
350  ブロック
400  方法
420  ブースト方法
422  訓練サンプル
424  加重サンプル
426  加重サンプル
428  加重サンプル
500  方法
600  方法
700  スマートフォン
702  プロセッサ
704  内部メモリ
706  コーデック
708  ワイヤレストランシーバ
712  ディスプレイ
714  スピーカ
720  ロッカースイッチ
【図１】
2018522321.tif 000003
【図２Ａ】
2018522321.tif 000004
【図２Ｂ】
2018522321.tif 000005
【図３Ａ】
2018522321.tif 000006
【図３Ｂ】
2018522321.tif 000007
【図３Ｃ】
2018522321.tif 000008
【図３Ｄ】
2018522321.tif 000009
【図４Ａ】
2018522321.tif 000010
【図４Ｂ】
2018522321.tif 000011
【図５】
2018522321.tif 000012
【図６】
2018522321.tif 000013
【図７】
2018522321.tif 000014
【手続補正書】
【提出日】平成29年11月14日(2017.11.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイスにおけるデバイスの挙動を評価する方法であって、
前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視するステップと、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成するステップと、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用するステップと、
前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用するステップと、
前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示するステップと、
前記第1の監視されている活動をホワイトリスト登録することを選択するユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加するステップと
を備える、方法。
【請求項２】
前記第1の監視されている活動を前記ホワイトリストに追加するステップが、前記ソフトウェアアプリケーションに関連して前記第1の監視されている活動をホワイトリストデータベースに記憶するステップを備える、請求項1に記載の方法。
【請求項３】
前記第1の監視されている活動を1つまたは複数のサブカテゴリへさらに分類するためにマルチラベル分類またはメタ分類技法を使用するステップをさらに備え、前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトが、前記第1の監視されている活動と関連付けられる前記1つまたは複数のサブカテゴリを含む、請求項1に記載の方法。
【請求項４】
前記第1の監視されている活動をホワイトリスト登録することを選択する前記ユーザ入力を受け取ったことに応答して、前記ソフトウェアアプリケーションの前記第1の監視されている活動を監視するのを止めるステップをさらに備える、請求項1に記載の方法。
【請求項５】
前記ソフトウェアアプリケーションの活動を監視し続け、第2の挙動ベクトル情報構造を生成し、追加の分析結果を生成するために前記第2の挙動ベクトル情報構造を第2の機械学習分類器モデルに適用し、かつ第2の監視されている活動をサブカテゴリへ分類するために前記追加の分析結果を使用するステップと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに分類されるかどうかを判定するステップと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに分類されないとの判定に応答して、前記ソフトウェアアプリケーションの前記第2の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する、追加のプロンプトを表示するステップと
をさらに備える、請求項3に記載の方法。
【請求項６】
前記第2の監視されている活動をホワイトリスト登録しないことを選択する追加のユーザ入力を受け取ったことに応答して、前記第1の監視されている活動を前記ホワイトリストから削除し、かつ前記ソフトウェアアプリケーションを終了するステップをさらに備える、請求項5に記載の方法。
【請求項７】
前記第2の監視されている活動をホワイトリスト登録することを選択する追加のユーザ入力を受け取ったことに応答して前記第2の監視されている活動を前記ホワイトリストに追加するステップをさらに備える、請求項5に記載の方法。
【請求項８】
前記挙動ベクトル情報構造によって特徴付けられる前記第1の監視されている活動の相対的な重要性を判定するステップをさらに備え、前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトが、前記第1の監視されている活動の前記相対的な重要性を特定する情報を含む、請求項1に記載の方法。
【請求項９】
前記ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される前記コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、前記第1の監視されている活動の前記判定された相対的な重要性との間のトレードオフを均衡させるステップをさらに備える、請求項8に記載の方法。
【請求項１０】
前記均衡させるステップが、前記第1の監視されている活動の前記判定された相対的な重要性に少なくとも部分的に基づいて、作動動作を選択するステップを備える、請求項9に記載の方法。
【請求項１１】
作動動作を選択するステップが、前記第1の監視されている活動の副分類に少なくとも部分的に基づいて、ロバストな分析動作または軽量な分析動作を実行するかを判定するステップを備える、請求項10に記載の方法。
【請求項１２】
メモリと、
ディスプレイと、
前記メモリおよび前記ディスプレイに結合されるプロセッサであって、
コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視することと、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成することと、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用することと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用することと、
前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示することと、
前記第1の監視されている活動をホワイトリスト登録することを選択するユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加することと
を備える動作を実行するためのプロセッサ実行可能命令を用いて構成される、プロセッサと
を備える、コンピューティングデバイス。
【請求項１３】
前記第1の監視されている活動を前記ホワイトリストに追加することが、前記ソフトウェアアプリケーションに関連して前記第1の監視されている活動をホワイトリストデータベースに記憶することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項12に記載のコンピューティングデバイス。
【請求項１４】
前記第1の監視されている活動を1つまたは複数のサブカテゴリへさらに分類するためにマルチラベル分類またはメタ分類技法を使用することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成され、
前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトが、前記第1の監視されている活動と関連付けられる前記1つまたは複数のサブカテゴリを含むように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、
請求項12に記載のコンピューティングデバイス。
【請求項１５】
前記プロセッサが、前記第1の監視されている活動をホワイトリスト登録することを選択する前記ユーザ入力を受け取ったことに応答して、前記ソフトウェアアプリケーションの前記第1の監視されている活動をもはや監視しないことをさらに備える動作を実行するようにプロセッサ実行可能命令を用いて構成される、請求項12に記載のコンピューティングデバイス。
【請求項１６】
前記プロセッサが、
前記ソフトウェアアプリケーションの活動を監視し続け、第2の挙動ベクトル情報構造を生成し、追加の分析結果を生成するために前記第2の挙動ベクトル情報構造を第2の機械学習分類器モデルに適用し、かつ第2の監視されている活動をサブカテゴリへ分類するために前記追加の分析結果を使用することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに副分類されるかどうかを判定することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに分類されないとの判定に応答して、前記ソフトウェアアプリケーションの前記第2の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する、追加のプロンプトを表示することと
をさらに備える動作を実行するように、プロセッサ実行可能命令を用いて構成される、請求項14に記載のコンピューティングデバイス。
【請求項１７】
前記プロセッサが、
前記第2の監視されている活動をホワイトリスト登録しないことを選択する追加のユーザ入力を受け取ったことに応答して、前記第1の監視されている活動を前記ホワイトリストから削除し、かつ前記ソフトウェアアプリケーションを終了すること
をさらに備える動作を実行するように、プロセッサ実行可能命令を用いて構成される、請求項16に記載のコンピューティングデバイス。
【請求項１８】
前記プロセッサが、
前記第2の監視されている活動をホワイトリスト登録することを選択する追加のユーザ入力を受け取ったことに応答して前記第2の監視されている活動を前記ホワイトリストに追加すること
をさらに備える動作を実行するように、プロセッサ実行可能命令を用いて構成される、請求項16に記載のコンピューティングデバイス。
【請求項１９】
前記挙動ベクトル情報構造によって特徴付けられる前記第1の監視されている活動の相対的な重要性を判定することをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成され、前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトが、前記第1の監視されている活動の前記相対的な重要性を特定する情報を含む、請求項12に記載のコンピューティングデバイス。
【請求項２０】
前記ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される前記コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、前記第1の監視されている活動の前記判定された相対的な重要性との間のトレードオフを均衡させることをさらに備える動作を実行するように、前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記ソフトウェアアプリケーションの活動を監視しかつ分析するために使用される前記コンピューティングデバイスの処理リソース、メモリリソース、またはエネルギーリソースの量と、前記第1の監視されている活動の前記判定された相対的な重要性との間のトレードオフを均衡させることが、前記第1の監視されている活動の前記判定された相対的な重要性に少なくとも部分的に基づいて作動動作を選択することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項20に記載のコンピューティングデバイス。
【請求項２２】
前記第1の監視されている活動の前記判定された相対的な重要性に少なくとも部分的に基づいて作動動作を選択することが、前記第1の監視されている活動の副分類に少なくとも部分的に基づいて、ロバストな分析動作または軽量な分析動作を実行するかを判定することを備えるように、動作を実行するように前記プロセッサがプロセッサ実行可能命令を用いて構成される、請求項21に記載のコンピューティングデバイス。
【請求項２３】
コンピューティングデバイスのプロセッサに動作を実行させるように構成されるプロセッサ実行可能命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記動作が、
前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視することと、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成することと、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用することと、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用することと、
前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示することと、
前記第1の監視されている活動をホワイトリスト登録することを選択するユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加することと
を備える、非一時的プロセッサ可読記憶媒体。
【請求項２４】
前記第1の監視されている活動を前記ホワイトリストに追加することが、前記ソフトウェアアプリケーションに関連して前記第1の監視されている活動をホワイトリストデータベースに記憶することを備えるように、前記コンピューティングデバイスの前記プロセッサに動作を実行させるように前記記憶されたプロセッサ実行可能命令が構成される、請求項23に記載の非一時的プロセッサ可読記憶媒体。
【請求項２５】
前記第1の監視されている活動を1つまたは複数のサブカテゴリへさらに分類するためにマルチラベル分類またはメタ分類技法を使用することをさらに備える動作を、前記コンピューティングデバイスの前記プロセッサに実行させるように前記記憶されたプロセッサ実行可能命令が構成され、
前記ソフトウェアアプリケーションの前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する前記プロンプトが、前記第1の監視されている活動と関連付けられる前記1つまたは複数のサブカテゴリを含むように、前記コンピューティングデバイスの前記プロセッサに動作を実行させるように前記記憶されたプロセッサ実行可能命令が構成される、
請求項23に記載の非一時的プロセッサ可読記憶媒体。
【請求項２６】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、前記第1の監視されている活動をホワイトリスト登録することを選択する前記ユーザ入力を受け取ったことに応答して、前記ソフトウェアアプリケーションの前記第1の監視されている活動をもはや監視しないことをさらに備える動作を実行させるように構成される、請求項23に記載の非一時的プロセッサ可読記憶媒体。
【請求項２７】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、
前記ソフトウェアアプリケーションの活動を監視し続け、第2の挙動ベクトル情報構造を生成し、追加の分析結果を生成するために前記第2の挙動ベクトル情報構造を第2の機械学習分類器モデルに適用し、かつ第2の監視されている活動をサブカテゴリへ分類するために前記追加の分析結果を使用することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに分類されるかどうかを判定することと、
前記第2の監視されている活動が前記第1の監視されている活動と同じサブカテゴリに分類されないとの判定に応答して、前記ソフトウェアアプリケーションの前記第2の監視されている活動をホワイトリスト登録するかどうかを選択するように前記ユーザに要求する、追加のプロンプトを表示することと
をさらに備える動作を実行させるように構成される、請求項25に記載の非一時的プロセッサ可読記憶媒体。
【請求項２８】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、
前記第2の監視されている活動をホワイトリスト登録しないことを選択する追加のユーザ入力を受け取ったことに応答して、前記第1の監視されている活動を前記ホワイトリストから削除し、かつ前記ソフトウェアアプリケーションを終了すること
をさらに備える動作を実行させるように構成される、請求項27に記載の非一時的プロセッサ可読記憶媒体。
【請求項２９】
前記記憶されたプロセッサ実行可能命令が、前記コンピューティングデバイスの前記プロセッサに、
前記第2の監視されている活動をホワイトリスト登録することを選択する追加のユーザ入力を受け取ったことに応答して前記第2の監視されている活動を前記ホワイトリストに追加すること
をさらに備える動作を実行させるように構成される、請求項27に記載の非一時的プロセッサ可読記憶媒体。
【請求項３０】
コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視するための手段と、
前記ソフトウェアアプリケーションの第1の監視されている活動を特徴付ける挙動ベクトル情報構造を生成するための手段と、
分析結果を生成するために前記挙動ベクトル情報構造を機械学習分類器モデルに適用するための手段と、
前記ソフトウェアアプリケーションの前記第1の監視されている活動を、良性、疑わしい、および非良性のうちの1つとして分類するために、前記分析結果を使用するための手段と、
前記第1の監視されている活動を疑わしいまたは非良性であると分類したことに応答して、前記第1の監視されている活動をホワイトリスト登録するかどうかを選択するようにユーザに要求する、プロンプトを表示するための手段と、
前記第1の監視されている活動をホワイトリスト登録することを選択するユーザ入力を受け取ったことに応答して前記第1の監視されている活動をホワイトリストに追加するための手段と
を備える、コンピューティングデバイス。
【国際調査報告】
2018522321.tif 000015
2018522321.tif 000016
2018522321.tif 000017