(58)【調査した分野】(Int.Cl.,DB名)
コンピューティングデバイスにおいてデバイス挙動を分析するための動作を前記コンピューティングデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能ソフトウェア命令が記憶された、非一時的コンピュータ可読記憶媒体であって、前記動作が、
前記コンピューティングデバイスのユーザを特徴付けるユーザのペルソナ情報を生成するために、前記コンピューティングデバイス上で動作するソフトウェアアプリケーションの活動を監視することであって、前記生成されたユーザのペルソナ情報が、前記ユーザのムードを特徴付ける情報を含む、ことと、
2つ以上のデバイス特徴を選択するために前記生成されたユーザのペルソナ情報を使用することと、
挙動情報を収集するために、前記選択された2つ以上のデバイス特徴を監視することと、
前記ユーザのムードが前記選択された2つ以上のデバイス特徴を監視することによって収集された前記挙動情報を分析することに関連するかどうかを決定することと、
前記ユーザのムードが前記選択された2つ以上のデバイス特徴を監視することによって収集された前記挙動情報を分析することに関連するという決定に応答して、前記ユーザのムードに関してデバイス特徴を各々が評価する複数の1レベル判定木を含む分類器モデルを生成することと、
前記ユーザのムードが関連する前記挙動情報を前記挙動情報が収集された時点における前記ユーザのムードと相関させる挙動ベクトルを生成することと、
分析結果を生成するために前記生成された挙動ベクトルを前記分類器モデルに適用することと、
前記デバイス挙動が非良性であるかどうかを決定するために前記生成された分析結果を使用することと
を含む、非一時的コンピュータ可読記憶媒体。
【発明を実施するための形態】
【0022】
添付の図面を参照しながら、様々な態様について詳細に説明する。可能な場合はいつでも、同じまた同様の部分を指すために、図面全体を通して同じ参照番号が使用される。特定の例および実装形態へと行われる言及は、説明を目的とし、本発明の範囲または特許請求の範囲を限定するものではない。
【0023】
概要では、様々な態様は、コンピューティングデバイスによって認識されるようなユーザのペルソナに部分的に基づいて、非良性であるコンピューティングデバイスの挙動(たとえば、悪意があるか、または性能を劣化させるソフトウェアアプリケーションによって引き起こされる挙動など)を特定し、防止し、補正し、かつ/またはさもなければ、それらに応答するための挙動分析技法および機械学習技法を使用する方法、およびその方法を実装するように構成されたコンピューティングデバイスを含む。このコンピューティングデバイスは、デバイスユーザの特徴的な性格特性を識別し、ユーザのデバイス使用パターンを経時的に学習し、かつ/またはユーザの活動、選好、年齢、職業、習慣、ムード、感情の状態、性格、デバイス使用パターンなどを特定または特徴付けることによって、ユーザ(ユーザのペルソナ)を特徴付けるユーザのペルソナ情報を生成するように構成され得る。コンピューティングデバイスは、コンピューティングデバイスの非良性挙動をより良好に特定し、またはそれらに応答するために、そのような情報のうちのいずれかまたはすべてを使用するように構成され得る。
【0024】
ある態様では、コンピューティングデバイスプロセッサは、デバイスの1人のユーザ(または、複数のユーザ)を特定し、特定されたユーザの性格、活動、選好、性格特性、デバイス使用パターン、習慣、ムード、感情の状態などを特徴付けるユーザのペルソナ情報を生成し、検出された/監視されたデバイス挙動が特定されたユーザによるそのデバイスの通常の使用パターンに整合するかどうかを決定することに最も関連するコンピューティングデバイスの要因または特徴を特定するためにユーザのペルソナ情報を使用するように構成され得る。コンピューティングデバイスプロセッサは、次いで、挙動情報を収集するために、特定された要因/特徴を監視し、収集された挙動情報を特徴付ける挙動ベクトルを生成し、特定された要因/特徴をテストまたは評価するユーザ固有の分類器モデルを生成し、デバイスの挙動、ソフトウェアアプリケーション、またはプロセスが非良性(たとえば、悪意がある、性能を劣化させるなど)であるかどうかを知的に決定するために、生成された挙動ベクトルをユーザ固有の分類器モデルに適用することができる。
【0025】
さらなる態様では、コンピューティングデバイスプロセッサは、挙動分類の精度とデバイスの性能との間でトレードオフのバランスをとるように、デバイス内で監視または分析されるべきデバイス特徴を知的に優先順位付けするために、かつ/またはその数を動的に決定するためにユーザのペルソナ情報を使用するように構成され得る。たとえば、コンピューティングデバイスプロセッサは、ユーザのペルソナ情報が、ユーザが子どもであるか、またはあまりコンピュータ経験豊富でない可能性が高いことを示すとき、挙動分類の精度を高める(したがって、デバイスのセキュリティを改善する)ように、監視または分析されるデバイス特徴の数を自動的に増大させるように構成され得る。他方で、デバイスプロセッサは、ユーザのペルソナ情報が、ユーザがデバイスの高度な構成を頻繁に修正する(たとえば、プロセッサをクロックアップするなど)熱心なゲーマーであることを示すとき、プロセッサの性能を改善するために監視または分析されるデバイス特徴の数を低減させる(すなわち、デバイスのセキュリティレベルを下げる)ことができる。
【0026】
特定されたユーザの性格、活動、デバイス使用パターン、習慣、ムード、感情の状態などを学習し、特徴付け、デバイス挙動を評価するためにこの情報を使用することによって、様々な態様は、コンピューティングデバイスが、非良性のソフトウェアアプリケーションおよび他の望ましくないデバイス挙動をより正確に特定し、防止し、補正し、かつ/またはさもなければ、それらに応答することを可能にすることによって、コンピューティングデバイスの作用を改善する。さらに、そのような動作をコンピューティングデバイス内でローカルに実行することによって、様々な態様は、コンピューティングデバイスが、ユーザのプライバシーを損なわずに、コンピューティングデバイスのセキュリティ、性能、および電力消費の特徴を改善するために、ユーザの詳細な個人情報を収集し、使用することを可能にする。
【0027】
様々な態様はまた、コンピューティングデバイスが、ユーザのペルソナ情報を使用して、その監視および/または分析動作を非良性のデバイス挙動を特定し、分類するために最も重要なデバイス特徴に知的に専心することを可能にすることによって、コンピューティングデバイスの作用(または、コンピューティングデバイスの挙動ベースの監視および分析)を改善する。たとえば、コンピューティングデバイスプロセッサは、ユーザのペルソナ情報が、ユーザが退職者専用住宅に住む高齢者(フィッシング攻撃をより受けやすいことが知られている層)であることを示すとき、フィッシング攻撃を特定し、それに応答することに専心するようにデバイス特徴を優先順位付けするように構成され得る。ユーザのペルソナ情報のそのような知的な使用は、挙動分類動作の精度を改善し、デバイスの応答性、性能、および電力消費の特性に対するその影響を低減させる。したがって、様々な態様は、モバイルデバイス、および限定されたリソースを有し、バッテリ電力で動作し、性能が重要な、スマートフォンなど、リソース制約のあるコンピューティングデバイスを含め、それらの中で使用するのに非常に適している。
【0028】
コンピューティングデバイスの機能、機能性、および/または作用に対する追加の改善は、下で提供される態様の詳細な説明から明らかになろう。
【0029】
「性能劣化」という用語は、本明細書では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリ持続時間、個人データの損失、悪意のある経済活動(たとえば、無許可のプレミアムSMSメッセージを送信すること)、サービス拒否(DoS)、不適切に書かれたまたは設計されたソフトウェアアプリケーション、悪意のあるソフトウェア、マルウェア、ウイルス、断片化されたメモリ、スパイ活動またはボットネット活動のためにモバイルデバイスを乗っ取ることまたは電話を利用することに関する動作などのような、コンピューティングデバイスの多種多様な望ましくない動作および特性を指すために使用される。また、これらの理由のいずれかで性能を劣化させる挙動、活動、および条件は、本明細書では「良性ではない」または「非良性である」と呼ばれる。
【0030】
「モバイルコンピューティングデバイス」および「モバイルデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルのマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および、性能が重要であるメモリとプログラマブルプロセッサとを含み、電力節約の方法が有益であるようなバッテリ電源で動作する同様のパーソナル電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では互換的に使用される。様々な態様は、限られたリソースを有しバッテリで動作する、スマートフォンなどのモバイルコンピューティングデバイスに対して特に有用であるが、これらの態様は一般に、プロセッサを含みアプリケーションプログラムを実行する、任意の電子デバイスにおいて有用である。
【0031】
一般に、モバイルデバイスの性能および電力効率は経時的に劣化する。近年、アンチウイルス会社(たとえば、McAfee、Symantecなど)は、この劣化を遅くすることを目的とするモバイル用アンチウイルス製品、ファイアウォール製品、および暗号化製品の販売を開始した。しかしながら、これらのソリューションの多くは、モバイルデバイス上で計算集約的なスキャニングエンジンを定期的に実行することに依存しており、そのことは、モバイルデバイスの処理リソースおよびバッテリリソースの多くを消費し、モバイルデバイスを遅くさせるか、もしくはより長期間使えなくさせ、かつ/または別様にユーザ体験を劣化させることがある。加えて、これらのソリューションは通常、知られているウイルスおよびマルウェアの検出に限定され、(たとえば、性能劣化がウイルスまたはマルウェアによって引き起こされないときに)経時的なモバイルデバイスの劣化に複合的に寄与することが多い、複数の複雑な要因および/または相互作用に対処しない。これらのおよび他の理由によって、既存のアンチウイルス製品、ファイアウォール製品、および暗号化製品は、経時的なモバイルデバイスの劣化に寄与し得る多数の要因を特定するための、モバイルデバイスの劣化を防止するための、または経年劣化したモバイルデバイスをその元の条件へと効率的に回復させるための、十分なソリューションを提供しない。
【0032】
さらに、現代のモバイルデバイスは、高度に構成可能かつ複雑なシステムである。したがって、特定のデバイス挙動が良性であるか非良性である(たとえば、悪意がある、または性能を劣化させる)かを決定するために最も重要である特徴は、各モバイルデバイスにおいて異なり得る。さらに、不十分に書き込まれたか、または設計されたソフトウェアアプリケーション、マルウェア、ウイルス、断片化されたメモリ、バックグラウンド処理などを含む、モバイルコンピューティングデバイスの性能レベルおよび電力利用レベルの経時的な劣化に寄与し得る多種多様な要因が存在する。これらの要因の数、多様性および複雑さゆえに、現代のモバイルコンピューティングデバイスの複雑ではあるがリソースを制約されたシステムの性能および/または電力利用のレベルの劣化に寄与する可能性のある要因のすべてを評価することは、しばしば実現不可能である。したがって、ユーザ、オペレーティングシステム、および/またはアプリケーションプログラム(たとえば、アンチウイルスソフトウェアなど)が、問題の根源を正確かつ効率的に特定することは困難である。結果として、モバイルデバイスのユーザは現在、モバイルデバイスの性能レベルおよび電力利用レベルの経時的な劣化を防止するための、または経年劣化したモバイルデバイスをその元の性能レベルおよび電力利用レベルに回復させるための措置をほとんど有していない。
【0033】
既存の解決法の制約を克服するために、様々な態様は、非良性のソフトウェアアプリケーション(たとえば、悪性のアプリケーション、不適切に書かれたアプリケーション、デバイスと互換性のないアプリケーションなど)を迅速かつ効率的に特定し、そのようなアプリケーションがコンピューティングデバイスの性能、電力利用レベル、ネットワーク使用レベル、セキュリティ、および/またはプライバシーを経時的に劣化させるのを防止するように構成される、挙動監視および分析システムを備えたコンピューティングデバイスを含む。挙動監視および分析システムは、コンピューティングデバイスの応答性、性能、または電力消費特性に、重大な、負の、またはユーザが知覚できる影響を与えることなく、特定された問題を特定し、防止し、修正するように構成され得る。
【0034】
挙動ベースの監視および分析システムは、観測プロセス、デーモン、モジュール、またはサブシステム(本明細書では「モジュール」と集合的に呼ばれる)、挙動抽出器モジュール、および分析器モジュールを含み得る。観測器モジュールは、コンピューティングデバイスシステムの様々なレベルにおいて、様々なアプリケーションプログラミングインターフェース(API)、レジスタ、カウンタ、または他のデバイス構成要素(本明細書で、集合的に「計測された構成要素」)を、計測または協調させ、計測された構成要素から挙動情報を収集し、収集された挙動情報を(たとえば、メモリ書込み動作、関数呼出しなどを介して)挙動抽出器モジュールに通信するように構成され得る。挙動抽出器モジュールは、各々がデバイスの1つまたは複数の特定のスレッド、プロセス、ソフトウェアアプリケーション、モジュール、または構成要素に関連付けられた観測されたイベント、条件、タスク、活動、および/または挙動(本明細書で、集合的に「挙動」)の多くまたはすべてを表すか、または特徴付ける挙動ベクトルを生成するために、収集された挙動情報を使用することができる。挙動抽出器モジュールは、生成された挙動ベクトルを(たとえば、メモリ書込み動作、関数呼出しなどを介して)分析器モジュールに通信することができ、分析器モジュールは、分析結果を生成するために挙動ベクトルを分類器モデルに適用し、ソフトウェアアプリケーションまたはデバイスの挙動が良性であるか、または非良性である(たとえば、悪意がある、不十分に書き込まれている、性能を劣化させるなど)かどうかを決定するために、分析結果を使用することができる。デバイスプロセッサは、次いで、特定された問題(たとえば、非良性であると決定される挙動)を補正、修復、是正、隔離、またはさもなければ解決するための様々な動作を実行することができる。
【0035】
各挙動ベクトルは、1つまたは複数の「挙動の特徴」を含むか、またはカプセル化する情報構造であり得る。挙動特徴は、モバイルデバイス内の観測されたイベント、条件、活動、動作、関係、対話、または挙動のすべてまたは一部を表す抽象的な数またはシンボルであり得る。各挙動の特徴は、可能な値の範囲、それらの値に対して実行され得る動作、値の意味、および他の同様の情報を特定するデータタイプと関連付けられ得る。データタイプは、対応する挙動特徴(または特徴値)がどのように測定され、分析され、重み付けられ、または使用されるべきかを決定するために、モバイルデバイスによって使用され得る。
【0036】
分類器モデルは、特定の特徴、要因、データ点、エントリ、API、状態、条件、挙動、ソフトウェアアプリケーション、プロセス、動作、構成要素(本明細書で、集合的に「特徴」)など、またはデバイスの挙動の他の態様を迅速かつ効率的にテストまたは評価するためにデバイスプロセッサによって使用され得るデータ、エントリ、判定ノード、判定基準、および/または情報構造を含む挙動モデルであり得る。分類器モデルは、ソフトウェアアプリケーション間の関係および/またはモバイルデバイス内で監視されるべき挙動の性質を決定するためにデバイスプロセッサによって使用され得る情報を含むことも可能である。
【0037】
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとして類別され得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含み得る大きいトレーニングデータセットに応じて生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定のモバイルデバイスの挙動が良性でないかどうかを決定することに最も関連がある特徴/エントリに対するテストを含むかまたは優先順位付ける、縮小されたデータセットから生成された、より専心的なデータモデルであり得る。ローカル分類器モデルは、モバイルコンピューティングデバイスにおいて生成される簡潔な分類器モデルであり得る。モデルが使用されるコンピューティングデバイスにおいて分類器モデルを生成することによって、様々な態様は、特定のデバイス上の挙動が良性であるか、またはそのデバイスの性能の劣化に寄与しているかを判定する際に最も重要である特定の特徴を、そのコンピューティングデバイスが正確に特定することを可能にする。これらの態様はまた、特定のデバイスにおける挙動を分類することに対する分類器モデルの相対的な重要性に従って、分類器モデルの中の特徴を、そのコンピューティングデバイスが正確に優先順位付けることも可能にする。
【0038】
コンピューティングデバイス内で監視または分析される特徴または要因の数をさらに低減させるために、コンピューティングデバイスプロセッサは、デバイス挙動が非良性であるかどうかを決定するためにユーザ固有の分類器モデルを生成し、使用するように構成され得る。ユーザ固有の分類器モデルは、デバイス挙動が特定のユーザによるコンピューティングデバイスの通常の使用に整合するかどうかを決定するために最も関連するデバイス特徴/エントリをテストまたは評価する判定ノードを含むか、または優先順位付けする非常に専心的なデータモデルを含むローカル分析器モデルであり得る。ユーザ固有の分類器モデルはまた、デバイスのユーザを特徴付けるための、ユーザに関する1つまたは複数のペルソナを決定するための、またはデバイス挙動がユーザの特徴またはペルソナに整合するかどうかを決定するための判定ノードなど、特定のユーザまたはそのユーザのペルソナに関する条件をテスト/評価する判定ノードを含むか、または優先順位付けする。デバイスプロセッサは、コンピューティングデバイス内で収集、計算、または生成されるユーザのペルソナ情報に基づいて、ユーザ固有の分類器モデルを生成するように構成され得る。
【0039】
現在のコンピューティングデバイスは、そのユーザによって生成されるか、またはそのユーザに関する情報に対するかつてないレベルのアクセスを有する。たとえば、モバイルコンピューティングデバイスは、ユーザに関する詳細な個人情報を収集または生成するセンサ(たとえば、加速度計、ジャイロスコープ、ジオ空間測位センサ、カメラ、心拍モニタ、グルコメータ)を備えていることが多い。さらに、モバイルコンピューティングデバイスは、現在、ウェブをナビゲートするためのアプリケーション、商品を購入するためのアプリケーション、ユーザの健康を監視するためのアプリケーション、家庭用電気器具を制御するためのアプリケーション、ゲームをするためのアプリケーション、ビデオを見る/記録するためのアプリケーション、新しい都市をナビゲートするためのアプリケーション、トレーニングを追跡するためのアプリケーション、金融取引を行うためのアプリケーションなどを含めて、複雑なソフトウェアアプリケーションを実行することを可能にする強力なプロセッサを含んでいる。これらのソフトウェアアプリケーションは、ユーザに関する詳細な個人情報を収集または生成することが多い。これらのソフトウェアアプリケーションおよびセンサによって収集、生成、または使用される情報は、ユーザの活動、選好、年齢、職業、習慣、ムード、感情の状態、性格などを特徴付けるユーザのペルソナ情報を生成するために、ある態様のコンピューティングデバイスによって使用され得る。
【0040】
さらに、各人物は、概して、一意のまたは特徴的な方法でそのコンピューティングデバイスと対話する。たとえば、モバイルデバイスのユーザは、多くの場合、特徴的な作業スタイルまたは通信スタイルを有し、特定のソフトウェアアプリケーションまたは特定のタイプのソフトウェアアプリケーションを使用し、そのモバイルデバイスを使用して特定の活動を実行するかまたは特定のタスクを達成し、特定の順序で活動を実行し、特定の時点で特定の活動を実行し、特定の方法で特定のソフトウェアアプリケーションと対話する、等々である。ユーザがそのデバイスと対話する特徴的な方法は、ユーザのデバイス使用パターンまたは特徴的な性格特性を特定するユーザのペルソナ情報を生成するために、ある態様のコンピューティングデバイスによって、経時的に学習され、使用され得る。
【0041】
したがって、デバイスプロセッサは、コンピューティングデバイス内で動作するソフトウェアアプリケーション、コンピューティングデバイスのセンサから、かつ/またはコンピューティングデバイスまたはそのソフトウェアとのユーザの対話から、ユーザのペルソナ情報を観測および/または収集するように構成され得る。ユーザのペルソナ情報は、デバイスユーザの年齢、性別、性格、活動、デバイス使用パターン、習慣、ムード、職業、および/または感情の状態を特定または特徴付けるのに適した任意の情報を含み得る。例として、ユーザのペルソナ情報は、デバイスとのユーザの対話、デバイス上で実行されるカスタマイズの数およびタイプ、ユーザによってダウンロードまたは使用されるソフトウェアアプリケーションのタイプ、ユーザがスクリーンに触れるかまたはスクリーンと対話する率、デバイスのグラフィックス処理ユニット(GPU)の使用レベル、ユーザが他者と通信するためにデバイスをどの程度頻繁に使用するか、ユーザが好む通信方法(たとえば、テキスト対音声)、ユーザがどの程度速く通信するか、デバイスのメモリサイズなどを特定する情報を含み得る。
【0042】
ユーザのペルソナ情報は、デバイスのデバイスカスタマイズの数およびタイプ(たとえば、書込み/読取り設定に対する変更の数、プロセッサ速度など)に基づいて、「コンピュータ経験豊富」であるとしてユーザを特徴付けることができる。ユーザのペルソナ情報は、(たとえば、ユーザは5.5インチを超えるディスプレイサイズを有するデバイスと対話するために片方の手を常に使用するなど)デバイスとのユーザの対話に基づいて決定され得るユーザの手のサイズに基づいて、「男性」または「女性」であるとしてユーザを特徴付けることができる。ユーザのペルソナ情報は、ユーザによってダウンロードまたは使用されるソフトウェアアプリケーションのタイプ(たとえば、生産性アプリ対ゲーム)に基づいて、「成人」または「子ども」であるとしてユーザを特徴付けることができる。ユーザのペルソナ情報は、高いタッチスクリーン率、高いGPU使用率、およびメディア通信レベルを検出することに基づいて、「ゲーマー」であるとしてユーザを特徴付けることができる。ユーザのペルソナ情報は、高性能カメラ、大容量メモリ、ロバストなフォトギャラリ、低いタッチスクリーン率などを含めて、デバイスに基づいて、「写真家」であるとしてユーザを特徴付けることができる。ユーザのペルソナ情報は、「成人の女性ゲーマー」など、上述の特徴の組合せに属するとしてユーザを特徴付けることもできる。
【0043】
デバイスプロセッサは、挙動ベクトルおよび/またはユーザ固有の分類器モデルを生成するためにユーザのペルソナ情報を使用することができる。たとえば、デバイスプロセッサは、監視されるデバイス特徴、挙動ベクトル内に含まれる挙動情報、分類器モデル内に含まれる(したがって、分類器モデルによって評価される)特定のデバイス特徴などを動的に決定するためにユーザのペルソナ情報を使用するように構成され得る。
【0044】
ある態様では、デバイスプロセッサは、精度と性能との間でトレードオフのバランスをとるように、デバイス上で監視または分析されるべきデバイス特徴の数を動的に決定するためにユーザのペルソナ情報を使用するように構成され得る。たとえば、ユーザのペルソナ情報が、ユーザが年長であることまたはあまりコンピュータ経験豊富でないことを示すとき、デバイスプロセッサは、デバイスのセキュリティを高めるために監視/分析されるデバイス特徴の数を増大させることができる。他方で、ユーザのペルソナ情報が、ユーザがコンピュータ経験豊富なゲーマーであり、コンピューティングデバイス/プラットフォームが概してセキュアであることを示すとき、デバイスプロセッサは、性能を改善するために監視/分析されるデバイス特徴の数を低減させることができる。
【0045】
ある態様では、デバイスプロセッサは、分類器モデルによってテストされる特徴を知的に優先順位付けするためにユーザのペルソナ情報を使用するように構成され得る。たとえば、デバイスプロセッサは、ユーザのペルソナ情報が、ユーザがそのモバイルコンピューティングデバイスを使用してオンラインで頻繁に買い物をすることを示すとき、eコマースおよびクレジットカードの保護に関する条件をテストする特徴を優先順位付けすることができる。別の例として、ユーザのペルソナ情報が、ユーザが高齢者であること、またはコンピュータ経験豊富でないことを示すとき、デバイスプロセッサは、高齢者をターゲットにするスパム攻撃およびフィッシング攻撃を検出することに関する条件をテストする特徴を優先順位付けすることができる。
【0046】
デバイスプロセッサは、カレンダーアプリケーション、リマインダーアプリケーション、通信アプリケーション、金融アプリケーション、特定のタスク(たとえば、ワードプロセッシング、納税申告書の準備、プレゼンテーションアプリケーション、会計アプリケーションなど)を達成するためのアプリケーション、ロケーションベースのアプリケーション(たとえば、マッピングおよびジオロケーションアプリケーションなど)、ソーシャルメディアアプリケーション、(たとえば、過去の検索、ブラウジング履歴、訪問したウェブサイトのタイプ、訪問したウェブサイトのコンテンツなどに関する情報を取得するための)ウェブブラウザ、娯楽アプリケーション(たとえば、オーディオプレーヤまたはマルチメディアプレーヤのアプリケーション)、ユーザアカウントにアクセスするためのアプリケーション(たとえば、バンキングアプリなど)、個人的なトレーニングおよび啓発アプリケーションなどを含めて、様々なソフトウェアアプリケーション(または、ソフトウェアアプリケーションタイプ)のうちのいずれかを監視することによって、ユーザのペルソナ情報を収集するように構成され得る。
【0047】
コンピューティングデバイスプロセッサは、ユーザのムードなど、ユーザに関する情報を学習、確認、または推論するためにソフトウェアアプリケーションを監視することから収集されたユーザのペルソナ情報を使用することができる。たとえば、多数のソーシャルメディア状態更新は、ユーザが退屈していることを示し得る。電子メールにおけるいつになく多数の否定的な言葉は、ユーザが動揺しているか、または怒っていることを示し得る。ユーザの銀行口座残高(または、持ち株明細)の著しい増大は、ユーザが満足であるか、または上機嫌である可能性が高いことを示し得、ユーザの銀行口座残高の著しい低減(または、長期的な減少)は、ユーザが動揺しているか、または増大したレベルのストレスを受けている可能性が高いことを示し得る。任意の数の観測可能またはアクセス可能なパラメータ、特性、またはデータをユーザのムードおよび感情の状態と相関させることができる。
【0048】
デバイスプロセッサは、ユーザのムード(たとえば、退屈している、動揺している、怒っている、ストレスを受けている、満足である、前向きである、興奮しているなど)を決定し、ユーザのムードをデバイスから収集された他の情報と相関させ、これらの相関を使用してユーザのデバイス使用パターンを学習し、特定/検出/監視されたデバイス挙動がユーザの通常の使用パターンと整合するかどうかを決定するように構成され得る。たとえば、コンピューティングデバイスは、履歴的な使用情報に基づいて、特定のユーザが悲しんでいるときにそのユーザがゲームをすることは特徴的でないと決定することができる。したがって、ユーザが悲しんでいると決定されるときのデバイス上のゲームアプリケーションの存在、実行、または使用は、非良性のデバイス挙動をより大きく示し得る(すなわち、ゲームアプリケーションが悪意のあるものであるより高い確率が存在する)。したがって、デバイスプロセッサは、ゲームアプリケーションが非良性であるかどうかを決定することにその動作に専心するために監視または分析されるデバイス特徴を更新または再優先順位付けすることができる。
【0049】
いくつかの態様では、デバイスプロセッサは、ユーザのペルソナ情報(たとえば、ユーザのムード)が関連するデバイス挙動(または、ソフトウェアアプリケーションの活動)を知的に特定し、特定されたデバイス挙動に関する挙動ベクトルが関連すると決定されるユーザのペルソナ情報を明らかにするように、挙動ベクトルを生成するように構成され得る。たとえば、ある態様では、デバイスプロセッサは、ユーザのペルソナ情報が関連しないと決定される場合にヌル値を記憶し、ユーザのペルソナ情報が関連すると決定される場合に挙動が観測されるとき、ユーザのムード(たとえば、怒っている)を特定する「ムード」データフィールドを含む挙動ベクトルを生成するように構成され得る。
【0050】
デバイスプロセッサは、ユーザの検出されたムードの各々(または、ユーザの他の特性の各々)に関して独立したデータフィールドを含むように挙動ベクトルを生成するように構成されてもよい。そのようなデータフィールドの値は、特定の特性と整合しない1つまたは複数の活動を実行したソフトウェアアプリケーションの回数を特定する。たとえば、挙動ベクトルは、その値が、ユーザが「怠惰な」または「疲れた」ムードであったときのロケーションベースの情報(たとえば、GPS情報)にアクセスしたソフトウェアアプリケーションの回数を特定する「怠惰な」データフィールドを含み得る。これは、コンピューティングデバイスが経時的に情報(たとえば、頻度または率)をアグリゲートすること、および/またはモバイルデバイスの観測された挙動とは無関係に、かつそれらの挙動と並行してユーザのムード情報を分析することを可能にする。
【0051】
別の態様では、デバイスプロセッサは、複数の相関するサブベクトルまたは情報構造を含む挙動ベクトルを生成するように構成され得る。たとえば、第1のサブベクトル/構造は、計測された構成要素を監視することから収集された挙動情報を含んでよく、第2のサブベクトル/構造は、ユーザ特性がその挙動/挙動情報に関連するかどうかを特定することができ、第3のサブベクトル/構造は、特定の特性に関する値(たとえば、挙動情報が収集されたときのユーザのムードを特定する値)を含んでよい。
【0052】
さらに、デバイスプロセッサは、ユーザ特性に(すなわち、ユーザのペルソナ情報に)対して条件をテストする分類器モデルを生成し、使用するように構成され得る。たとえば、プロセッサは、ユーザが特定のムード(たとえば、悲しい、疲れている、怒っている、忙しい、ストレスを受けているなど)にあるとき、あるタイプのソフトウェアアプリケーション(たとえば、ゲームなど)の存在、使用、または実行を特定することに専心的な条件/特徴を評価する分類器モデルを生成することができる。そのような分類器モデルは、まず、ユーザが悲しんでいるかどうかを決定するために条件「デバイス上で遅いテンポの音楽がかかっているか」をテストし、次いで、ユーザが悲しんでいるとの決定に応答して、条件「活動プロセスのいずれかがゲームアプリに関連するか」をテストする判定木を含み得る。代替的に、分類器モデルは、「活動プロセスは娯楽アプリに関連するプロセスおよびゲームアプリに関連するプロセスを含むか」など、条件の組合せをテストする単一の判定ノード(たとえば、判定株など)を含み得る。
【0053】
ある態様では、デバイスプロセッサは、コンピューティングデバイスのユーザを特徴付けるユーザのペルソナ情報を生成するためにコンピューティングデバイス上で動作するソフトウェアアプリケーションの1つまたは多くの活動(たとえば、ユーザとソフトウェアアプリケーションとの間のユーザ対話)を監視し、デバイス挙動が非良性であるかどうかを決定するためにユーザのペルソナ情報を使用するように構成され得る。デバイスプロセッサは、デバイス挙動がユーザによるコンピューティングデバイスの通常の使用のパターンと整合しないかどうかを決定するために最も関連するデバイス特徴を特定するために、生成されたユーザのペルソナ情報を使用し、挙動情報を収集するために特定されたデバイス特徴を監視し、収集された挙動情報を特徴付ける挙動ベクトルを生成し、デバイス挙動が非良性であるかどうかを決定するために、生成された挙動ベクトルをユーザ固有の分類器モデルに適用するように構成され得る。
【0054】
ある態様では、デバイスプロセッサは、ユーザのペルソナ情報(たとえば、ユーザの性格、ムード、習慣などを特徴付ける情報)が収集された挙動情報のすべてまたは一部を分析することに関連するかどうかを決定し、ユーザのムード(関連する場合)に対してデバイス特徴を評価する判定ノードを含む分類器モデルを生成し、ユーザのムードが関連する、収集された挙動情報をその挙動情報が収集された時点におけるユーザのムードと相関させる挙動ベクトルを生成し、デバイス挙動が非良性であるかどうかを決定するために、生成された挙動ベクトルを生成された分類器モデルに適用するように構成され得る。
【0055】
デバイスプロセッサは、複数のテスト条件を含む完全な分類器モデルを受信/取り出し、特定されたデバイス特徴を評価するテスト条件を複数のテスト条件内で特定し、特定されたテスト条件を含むかつ/または優先順位付けするユーザ分類器モデルを生成し、分類器モデル内に含まれる各テスト条件を評価するように、挙動ベクトルを分類器モデルに適用し、分類器モデル内のテスト条件を評価した各結果の加重平均を計算し、計算された加重平均に基づいて、デバイス挙動が非良性であるかどうかを決定するように構成されてもよい。
【0056】
(
図2〜
図7を参照して説明する態様を含めて)様々な態様は、単一のプロセッサシステムおよび多重プロセッサのシステムを含む、いくつかの異なるモバイルデバイス、ならびにシステムオンチップ(SOC)において実装され得る。
図1は、様々な態様を実装するコンピューティングデバイス内で使用され得る例示的なシステムオンチップ(SOC)100アーキテクチャを示すアーキテクチャ図である。SOC100は、デジタル信号プロセッサ(DSP)101、モデムプロセッサ104、グラフィックスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異質のプロセッサを含み得る。SOC100はまた、異種プロセッサ101、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含んでもよい。各プロセッサ101、104、106、108、110は、1つまたは複数のコアを含み得、各プロセッサ/コアは、他のプロセッサ/コアとは無関係に動作を実行できる。たとえば、SOC100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行するプロセッサと、第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 8)を実行するプロセッサとを含み得る。
【0057】
SOC100はまた、センサデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化されたオーディオ信号を処理することのような他の特殊な動作を実行するための、アナログ回路およびカスタム回路114を含み得る。SOC100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマ、およびコンピューティングデバイス上で実行するプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素のような、システム構成要素およびリソース116をさらに含み得る。
【0058】
システム構成要素116およびカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースする回路を含み得る。プロセッサ101、104、106、108は、再構成可能な論理ゲートのアレイを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、1つまたは複数のメモリ要素112、システム構成要素およびリソース116、ならびにカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoCs)などの高度な相互接続によって提供され得る。
【0059】
SOC100は、クロック118および電圧調整器120のような、SOCの外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含んでもよい。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP101、モデムプロセッサ104、グラフィックプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
【0060】
SOC100はまた、スピーカ、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)、マイクロフォンアレイ、物理条件(たとえば、位置、方向、動き、方位、振動、圧力など)を監視するためのセンサ、カメラ、コンパス、GPS受信機、通信回路(たとえば、Bluetooth(登録商標)、WLAN、WiFiなど)、および現代の電子デバイスの他のよく知られている構成要素(たとえば、加速度計など)を含む、センサからセンサデータを収集するのに適したハードウェアおよび/またはソフトウェア構成要素を含み得る。
【0061】
上で論じたSOC100に加えて、様々な態様が、単一のプロセッサ、複数のプロセッサ、マルチコアプロセッサ、またはこれらの任意の組合せを含み得る、多種多様なコンピューティングシステムにおいて実装され得る。
【0062】
図2は、非良性デバイス挙動を特定し、それらに応答するために、挙動分析技法を使用するように構成された挙動ベースのセキュリティシステム200を含むある態様のコンピューティングデバイス内の例示的な論理構成要素および情報フローを示す。
図2に示す例では、コンピューティングデバイスは、挙動観測器モジュール202、挙動抽出器モジュール204、挙動分析器モジュール206、およびアクチュエータモジュール208を含む実行可能命令モジュールで構成されたデバイスプロセッサ(たとえば、モバイルデバイスプロセッサ)を含むモバイルデバイス102である。モジュール202〜208の各々は、ソフトウェア、ハードウェア、またはこれらの組合せにおいて実装される、スレッド、プロセス、デーモン、モジュール、サブシステム、または構成要素であり得る。様々な態様では、モジュール202〜208は、オペレーティングシステムの部分内(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)で、個別のプログラムもしくはアプリケーション内で、専用のハードウェアバッファもしくはプロセッサ内で、またはそれらの任意の組合せにて実装され得る。ある態様では、モジュール202〜208のうちの1つまたは複数は、モバイルデバイス102の1つまたは複数のプロセッサ上で実行するソフトウェア命令として実装される場合がある。
【0063】
挙動観測器モジュール202は、デバイスの様々なレベル/モジュールにおいてアプリケーションプログラミングインターフェース(API)、カウンタ、ハードウェアモニタなどを計測し、ある時間期間にわたって様々なレベル/モジュールにおいて活動、条件、動作、およびイベント(たとえば、システムイベント、状態変化など)を監視するように構成され得る。挙動観測器モジュール202は、監視された活動、条件、動作、またはイベントに関係する挙動情報を収集し、収集された情報をメモリ(たとえば、ログファイルなど)に記憶することができる。
【0064】
さらに、挙動観測器モジュール202は、ユーザのペルソナ情報を収集するために、モバイルコンピューティングデバイス102の活動、デバイスとのユーザ対話、およびデバイスに利用可能な他の情報を(たとえば、デバイスのセンサを介して)監視するように構成され得る。
【0065】
挙動観測器モジュール202は、デバイス内で動作する選択されたソフトウェアアプリケーションまたはあるタイプのソフトウェアアプリケーションを監視することによってユーザのペルソナ情報を収集することができる。そのようなアプリケーションは、カレンダーおよびリマインダーのアプリケーション、金融アプリケーション、特定のタスク(たとえば、ワードプロセッシング、納税申告書の準備、プレゼンテーションアプリケーション、会計アプリケーションなど)を達成するためのアプリケーション、ロケーションベースのアプリケーション(たとえば、マッピングおよびジオロケーションアプリケーションなど)、ウェブブラウザ(たとえば、過去の検索、ブラウジング履歴、訪問したウェブサイトのタイプ、訪問したウェブサイトのコンテンツなど)、娯楽アプリケーション(たとえば、オーディオプレーヤまたはマルチメディアプレーヤのアプリケーション)、ユーザアカウントにアクセスするためのアプリケーション(たとえば、バンキングアプリなど)、個人的なトレーニングおよび啓発アプリケーションなどを含む。デバイスプロセッサは、ユーザのムードなど、ユーザに関する情報を確認または推論するためにそのようなユーザのペルソナ情報を使用することができる。たとえば、多数のソーシャルメディア状態更新は、ユーザが退屈していることを示し得る。さらなる例として、電子メールにおけるいつになく多数の否定的な言葉の存在は、ユーザが動揺しているか、または怒っていることを示し得、ユーザの銀行口座残高(または、持ち株明細)の著しい増大は、ユーザが満足であるか、または上機嫌である可能性が高いことを示し得、ユーザの銀行口座残高の著しい低減(または、長期的な減少)は、ユーザが動揺しているか、または増大したレベルのストレスを受ける可能性が高いことを示し得る。
【0066】
挙動観測器モジュール202は、ユーザの現在のロケーション(たとえば、オフィスにおける、自宅における、レストランにおける、事務、旅行中など)、ユーザの現在の移動(たとえば、現在旅行中である、運動している、動いていないなど)、移動の履歴(たとえば、広範囲に旅行する、町を離れたことがないなど)、ユーザがその確立されたルーチンに従っているかどうか(たとえば、時間通りに職場に到着した、依然として仕事中である)またはそのルーチンからはずれている(たとえば、通常より遅く到着した、通常よりも早く去った)を決定するために、デバイスのジオ空間測位およびナビゲーションシステムを監視することによってユーザのペルソナ情報を収集することもできる。デバイスプロセッサは、ユーザのスケジュール、ムード、習慣、感情の状態などを決定するために、この情報を単独で、または他の収集された情報とともに使用することができる。たとえば、ユーザが自宅にいる場合、ユーザは楽しいムードにある可能性が高いか、またはレストランにいる間に電話を受けた場合、苛立つ可能性が高い。
【0067】
挙動観測器モジュール202は、コンピューティングデバイス内のまたはコンピューティングデバイスと通信している、心拍数モニタ、血圧モニタ、温度計、歩数計、血糖メータ、湿度センサ、飲酒探知機、電気皮膚反応センサ、または他のセンサデバイスもしくはモニタデバイスからデータを収集することによって、ユーザのペルソナ情報を収集することもできる。デバイスプロセッサは、ユーザに関する情報を確認または推論するためにこの情報を使用することができる。たとえば、心拍数モニタ、血糖メータ、および/または血圧モニタから取得される情報を使用して、ユーザが運動している(したがって、忙しい)かどうか、医学的状態を経験しているかどうか、ストレスを受けているかどうか、機嫌が悪いかどうかなどを決定することができる。湿度センサから取得された高い湿度状態は、ユーザが苛立っている可能性が高いことを示し得る。飲酒探知機から取得された情報を使用して、ユーザがアルコールを飲んでいることを推論することができ、ユーザの感情の状態またはムードを決定するための他のユーザペルソナ情報とともにこの情報を使用することができる。
【0068】
挙動観測器モジュール202は、デバイスのメディアプレーヤを監視することによって、ユーザのペルソナ情報を収集することもできる。デバイスプロセッサは、ユーザのムード、習慣、感情の状態などを決定するためにこの情報を使用することができる。たとえば、ユーザが陽気なまたはアップビートの音楽を聴取している場合、それはそのユーザが良いムードである可能性が高いことを示し得る。他方で、ユーザの聴取履歴が、ユーザが最近いつになく悲しい、または遅いテンポの音楽を聴いていることを示す場合、これは、ユーザが悲しんでいることを示し得る。別の例として、ユーザが映画を見ている場合、それは(映画のコンテンツ、ユーザの閲覧履歴、ユーザの性格などに応じて)ユーザの手が空いているかまたは忙しいことのいずれかを示し得る。
【0069】
さらに、挙動観測器モジュール202は、アプリケーションフレームワークまたはランタイムライブラリ、システムコールAPI、ファイルシステムおよびネットワーキングサブシステム動作、デバイス(センサデバイスを含む)状態変化、ならびに他の同様のイベント内のライブラリアプリケーションプログラミングインターフェース(API)コールに関する情報を収集することによって、モバイルコンピューティングデバイス102の活動を監視するように構成され得る。さらに、挙動観測器モジュール202は、ファイルシステムの活動を監視することができ、ファイルシステムの活動は、ファイル名、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)を探索すること、ファイル(たとえば、type exe、zipなど)を作成または削除すること、ファイル読出し/書込み/探索動作、ファイルパーミッションを変更することなどを含み得る。
【0070】
挙動観測器モジュール202はまた、接続のタイプ、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含み得るデータネットワーク活動を監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。挙動観測器モジュール202は、電話ネットワーク活動を監視することができ、電話ネットワーク活動は、送出、受信、または傍受された通話またはメッセージ(たとえば、SMSなど)のタイプおよび数(たとえば、かけられたプレミアムコールの数)を監視することを含み得る。
【0071】
挙動観測器モジュール202はまた、フォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含み得るシステムリソース使用を監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。挙動観測器モジュール202は、ディスプレイがオンかまたはオフか、デバイスがロックされているかまたはロックされていないか、バッテリの残量、カメラの状態など様々な要因を監視することを含み得る、モバイルコンピューティングデバイス102の状態を監視することができる。挙動観測器モジュール202はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視することができる。
【0072】
挙動観測器モジュール202はまた、カメラ、センサ、電子ディスプレイ、WiFi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマ、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧レギュレータ、発振器、フェーズロックループ、周辺ブリッジ、ならびに、プロセッサ、およびモバイルコンピューティングデバイス102上で実行するクライアントをサポートするために使用される他の同様の構成要素を含み得る、1つまたは複数のハードウェア構成要素のドライバの統計データおよび/またはステータスを監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。
【0073】
挙動観測器モジュール202はまた、モバイルコンピューティングデバイス102および/またはコンピューティングデバイスのサブシステムの状態またはステータスを示す、1つまたは複数のハードウェアカウンタを監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。ハードウェアカウンタは、モバイルコンピューティングデバイス102内で発生するハードウェア関連の活動またはイベントのカウント値または状態を記憶するように構成されたプロセッサ/コアの専用レジスタを含み得る。
【0074】
挙動観測器モジュール202はまた、ソフトウェアアプリケーションの活動または動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標) App Storeサーバ)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるコンピューティングデバイス情報、呼情報、テキストメッセージング情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージング情報(たとえば、ReceiveMMS)、ユーザアカウント情報、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth(登録商標)、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。
【0075】
挙動観測器モジュール202は、ボイスメールを含む通信(VoiceMailComm)、デバイス識別子を含む通信(DeviceIDComm)、ユーザアカウント情報を含む通信(UserAccountComm)、カレンダー情報を含む通信(CalendarComm)、ロケーション情報を含む通信(LocationComm)、記録されたオーディオ情報を含む通信(RecordAudioComm)、加速度計情報を含む通信(AccelerometerComm)などを含む、モバイルコンピューティングデバイス102の送信または通信を監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。
【0076】
挙動観測器モジュール202は、コンパス情報、コンピューティングデバイスの設定、バッテリ寿命、ジャイロスコープ情報、圧力センサ、磁気センサ、スクリーン活動などの使用とそれらに対する更新/変更とを監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。挙動観測器モジュール202は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーション更新などを監視することができる。挙動観測器モジュール202は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関する条件またはイベントを監視することができる。挙動観測器モジュール202は、パスワードの入力のような、ユーザ検証に関する条件またはイベントを監視することができる。
【0077】
挙動観測器モジュール202はまた、アプリケーションレベル、無線レベル、およびセンサレベルを含む、モバイルコンピューティングデバイス102の複数のレベルにおいて条件またはイベントを監視することによって、モバイルコンピューティングデバイス102の活動を監視することもできる。アプリケーションレベルの観測には、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力された注釈を観測すること、PassBook(登録商標)、Google(登録商標) Wallet、Paypal(登録商標)、および他の類似のアプリケーションまたはサービスの使用に関するイベントを観測することなどが含まれ得る。アプリケーションレベルの観測には、仮想プライベートネットワーク(VPN)の使用に関するイベント、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算用のデータのオフローディング、ビデオストリーミング、ユーザ活動なしでのカメラの使用、ユーザ活動なしでのマイクロフォンの使用などに関するイベントを観測することも含まれ得る。
【0078】
無線レベルの観測には、無線通信リンクを確立するかまたは情報を送信する前のモバイルコンピューティングデバイス102とのユーザの対話、デュアル/マルチ加入者識別モジュール(SIM)カード、インターネット無線、モバイルフォンテザリング、計算のためのデータのオフロード、デバイス状態通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、コンピューティングデバイス同期などのうちのいずれかまたは複数の存在、実在、または量を決定することが含まれ得る。無線レベルの観測にはまた、測位、ピアツーピア(p2p)通信、同期、車両対車両通信、および/または機械対機械(m2m)のための、無線(WiFi、WiMax、Bluetooth(登録商標)など)の使用を監視することも含まれ得る。無線レベルの観測には、ネットワークトラフィックの使用、統計データ、またはプロファイルを監視することがさらに含まれ得る。
【0079】
センサレベルの観測には、モバイルコンピューティングデバイス102の使用環境および/または外部環境を判断するために、磁気センサまたは他のセンサを監視することが含まれ得る。たとえば、コンピューティングデバイスプロセッサは、デバイスが(たとえば、ホルスタ内の磁石を検知するように構成された磁石センサを介して)ホルスタ内にあるか、または(たとえば、カメラもしくは光センサによって検出される光の量を介して)ユーザのポケット内にあるかを判断するように構成される場合がある。たとえば、モバイルコンピューティングデバイス102がホルスタに入れられている間に発生する、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声通話を行うこと、音を録音することなど)に関連する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行している不正なプロセスのサインである可能性があるので、モバイルコンピューティングデバイス102がホルスタ内にあることを検出することは、疑わしい挙動を認識することに関係する場合がある。
【0080】
使用環境または外部環境に関連するセンサレベルの観測の他の例には、近距離無線通信(NFC)シグナリングを検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダから情報を収集すること、ユニバーサルシリアルバス(USB)電力充電源の存在を検出すること、キーボードまたは補助デバイスがモバイルコンピューティングデバイス102に結合されていることを検出すること、モバイルコンピューティングデバイス102が(たとえば、USBなどを介して)別のコンピューティングデバイスに結合されていることを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または(たとえば、緊急シグナリングアプリケーションなどを、悪意をもって無効にして)無効化されているかどうかを決定すること、スピーカまたはマイクロフォンがオンにされているかまたは電源投入されていることを検出すること、充電または電力供給イベントを検出すること、モバイルコンピューティングデバイス102がゲームコントローラとして使用されていることを検出することなどが含まれ得る。センサレベルの観測には、医療もしくはヘルスケアのセンサから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサから情報を収集すること、(たとえば、振動インターフェースなどを介して)触知センサまたは触覚センサから情報を収集すること、モバイルコンピューティングデバイス102の熱状態に関する情報を収集することなども含まれ得る。
【0081】
監視される要因の数を管理可能レベルまで削減するために、ある態様では、挙動観測器モジュール202は、コンピューティングデバイスの劣化に寄与する可能性があるすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観測することによって、粗い観測を実施するように構成され得る。ある態様では、挙動観測器モジュール202は、挙動および/または要因の初期セットをサーバおよび/またはクラウドサービスもしくはネットワーク内の構成要素から受信することができる。ある態様では、挙動/要因の初期セットは、機械学習分類器モデル内で指定され得る。
【0082】
挙動観測器モジュール202は、収集された挙動情報を挙動抽出器モジュール204に(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信することができる。挙動抽出器モジュール204は、収集された挙動情報を受信および取り出し、1つまたは複数の挙動ベクトルを生成するためにこの情報を使用するように構成され得る。各挙動ベクトルは、デバイス、ソフトウェアアプリケーション、またはプロセスの挙動を、値またはベクトルデータ構造で簡潔に記述することができる。ベクトルデータ構造は、一連の数字を含んでよく、その各々は、モバイルデバイスのカメラが使用されているかどうか(たとえば、ゼロであるか、または1であるか)、モバイルデバイスからどの程度のネットワークトラフィックが送信されているか、またはコンピューティングデバイスによってどの程度のネットワークトラフィックが生成されているか(たとえば、毎秒20KBなど)、どれだけ多くのインターネットメッセージが通信されているか(たとえば、SMSメッセージの数など)、および/または挙動観測器モジュール202によって収集された任意の他の挙動情報など、モバイルデバイスの特徴または挙動を示す。ある実施形態では、挙動抽出器モジュール204は、挙動ベクトルが、モバイルデバイスシステム(たとえば、挙動分析器モジュール206)がデバイスの挙動を迅速に認識すること、特定すること、または分析することを可能にする識別子として機能するように挙動ベクトルを生成するように構成可能である。
【0083】
ある態様では、挙動抽出器モジュール204は、監視された1つまたは複数の活動に関するクエリに対する回答を生成するために、機械学習分類器における特徴/判定ノードに入力され得る情報を含むように挙動ベクトルを生成するように構成され得る。
【0084】
ある態様では、挙動抽出器モジュール204は、実行情報を含むように挙動ベクトルを生成するように構成され得る。実行情報は、挙動の一部(たとえば、バックグラウンドプロセスによって3秒間に5回使用されたカメラ、フォアグラウンドプロセスによって3秒間に3回使用されたカメラなど)として、または無関係の特徴の一部として、挙動ベクトル内に含まれてよい。ある態様では、実行状態情報は、影の特徴値サブベクトルまたはデータ構造として、挙動ベクトル内に含まれてよい。ある態様では、挙動ベクトルは、実行状態が関連のある特徴、活動、タスクに関連して、影の特徴値サブベクトル/データ構造を記憶し得る。
【0085】
挙動抽出器モジュール204は、生成された挙動ベクトルを挙動分析器モジュール206に(たとえば、メモリ書込み動作、関数呼出しなどを介して)通信することができる。挙動分析器モジュール206は、デバイス挙動が、経時的にデバイスの劣化に寄与する(または、寄与する可能性が高い)かつ/またはさもなければ、デバイス上に問題を生じさせる可能性がある非良性挙動であるかどうかを決定するために、挙動ベクトルを分類器モデルに適用するように構成され得る。
【0086】
各分類器モデルは、コンピューティングデバイスの挙動の特定の特徴または態様を評価するために、コンピューティングデバイスプロセッサによって使用され得る、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リストなど)を含む挙動モデルであり得る。各分類器モデルはまた、コンピューティングデバイス内のいくつかの特徴、要因、データ点、エントリ、API、状態、条件、挙動、アプリケーション、プロセス、動作、構成要素など(本明細書では総称して「特徴」)を監視するための判定基準を含み得る。分類器モデルは、コンピューティングデバイスにプレインストールされてよく、ネットワークサーバからダウンロードもしくは受信されてよく、コンピューティングデバイス内で生成されてよく、またはそれらの任意の組合せであってよい。分類器モデルは、クラウドソーシングソリューション、挙動モデル化技法、機械学習アルゴリズムなどを使用することによって、生成され得る。
【0087】
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとして類別され得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含み得る大きいトレーニングデータセットに応じて生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定の活動が進行中のクリティカル活動であるかどうか、および/または特定のモバイルデバイスの挙動が良性ではないかどうかを決定することに最も関連がある特徴/エントリのみを含む/テストする、縮小されたデータセットから生成された、より専心的なデータモデルであり得る。一例として、デバイスプロセッサは、ネットワークサーバから完全な分類器モデルを受信し、完全な分類器に基づいて、モバイルデバイス内で学習分類器モデルを生成し、デバイスの挙動を良性または非良性(すなわち、悪意がある、性能を劣化させるなど)のいずれかであるとして分類するために、ローカルに生成された学習分類器モデルを使用するように構成され得る。
【0088】
ローカルに生成される簡潔な分類器モデルは、コンピューティングデバイスにおいて生成される簡潔な分類器モデルである。すなわち、モバイルデバイスは非常に構成可能かつ複雑なシステムであるため、特定のデバイス挙動が非良性(たとえば、悪意がある、または性能劣化である)かどうかを決定するために最も重要な特性は各デバイスにおいて異なり得る。さらに、特徴の異なる組合せは、特定の挙動が非良性であるかどうかをそのデバイスが迅速かつ効率的に決定するために、各デバイスにおける監視および/または分析を必要とすることがある。しかし、監視および分析を必要とする特徴の的確な組合せ、ならびに各特徴または特徴の組合せの相対的な優先順位または重要性は、しばしば、それにおいて挙動が監視または分析されるべきである特定のデバイスから取得された情報を使用してのみ決定され得る。これらのおよび他の理由で、様々な態様は、モデルが使用されるモバイルデバイス内に分類器モデルを生成することができる。これらのローカル分類器モデルは、そのデバイスプロセッサが、その特定のデバイス上の挙動が非良性である(デバイスの性能の劣化に寄与している)かを決定する際に最も重要である特定の特徴を正確に特定することを可能にする。ローカル分類器モデルはまた、デバイスプロセッサが、その特定のデバイス内の挙動を分類するためのその相対的な重要性に従ってテストまたは評価される特徴を優先順位付けすることを可能にする。
【0089】
デバイス固有の分類器モデルは、特定のコンピューティングデバイス内で活動または挙動を分類することに最も関連があると決定される、コンピューティングデバイス固有の特徴/エントリのみを含む/テストする専心的なデータモデルを含む分類器モデルである。
【0090】
アプリケーション固有の分類器モデルは、特定のソフトウェアアプリケーションを評価することに最も関連がある特徴/エントリのみを含む/テストする専心的なデータモデルを含む分類器モデルである。
【0091】
ユーザ固有の分類器モデルは、デバイスのユーザを特定するため、ユーザのペルソナを決定するため、デバイス挙動が特定されたユーザのペルソナと整合するかどうかを決定するため、デバイス挙動がその特定されたユーザのうちの1人によるそのデバイスの通常の使用と整合するかどうかを決定するため、またはユーザの活動が非良性のデバイス挙動を示すかどうかを決定するために最も関連する特徴/エントリに関するテストを含むか、または優先順位付けする専心的データモデルを含むローカル分類器モデルであり得る。
【0092】
モバイルデバイスにおいてローカルにユーザ固有の、デバイス固有の、および/またはアプリケーション固有の分類器モデルを動的に生成することによって、様々な態様は、デバイスプロセッサが、その監視および分析動作をその特定のモバイルデバイスの、かつ/またはそのデバイス内で動作する特定のソフトウェアアプリケーションの動作がその特定のデバイスの知られているユーザの性格、習慣、または通常の使用パターンと整合するかどうかを決定するために最も重要な小数の特徴に専心することを可能にする。
【0093】
ある態様では、その挙動分析動作の結果が良性または非良性のいずれかとしてデバイス挙動を分類するために十分な情報を提供しないとき、挙動分析器モジュール206は「疑いがある」として挙動を分類するように構成され得る。挙動分析器モジュール206は、デバイス挙動が疑わしいと決定することに応答して、挙動観測器モジュール202に通知するように構成され得る。それに応答して、挙動観測器モジュール202は、その観測の粒度(すなわち、コンピューティングデバイスの特徴が監視される際の詳細度のレベル)を調節し、かつ/または、挙動分析器モジュール206から受信された情報(たとえば、リアルタイム分析動作の結果)に基づいて監視される要因または挙動を変更し、新たな情報または追加の挙動情報を生成または収集し、さらなる分析/分類のために新たな/追加の情報を挙動分析器モジュール206に送ることができる。挙動観測器モジュール202と挙動分析器モジュール206との間のそのようなフィードバック通信により、集合的挙動が良性または非良性として分類されるまで、疑わしいかもしくは性能を劣化させる挙動の根源が特定されるまで、処理もしくはバッテリの消費しきい値に到達するまで、または、観測の細分性のさらなる変化、調整、または向上から、疑わしいかもしくは性能を劣化させる挙動の根源が特定され得ないとデバイスプロセッサが決定するまで、モバイルコンピューティングデバイス102が観測の細分性を繰り返し向上させる(すなわち、より微細にまたはより詳細に観測する)こと、または観測される特徴/挙動を変更することが可能になる。そのようなフィードバック通信により、モバイルコンピューティングデバイス102が、コンピューティングデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、挙動ベクトルおよび分類器モデルを調整または修正することも可能になる。
【0094】
ある態様では、挙動分析器モジュール206は、様々なモバイルデバイスのサブシステムによって、および/または様々な時間期間にわたって収集された情報を受信し、分析して、様々な状況および条件のもとでのモバイルデバイスの通常の動作的な挙動を学習し、様々な状況/条件のもとでの通常のモバイルデバイスの挙動のモデルを生成するように構成され得る。ある態様では、挙動分析器モジュール206は、収集された挙動情報を生成された挙動モデルと相関付け、その相関に基づいて挙動分析動作を実行し、受信された観測結果が学習された通常の動作的な挙動と矛盾する(または一致しない)かどうかを決定するように構成され得る。
【0095】
高レベルの例として、モバイルデバイス102は、カメラが使用されていること、モバイルデバイス102が写真をサーバにアップロードすることを試みていること、およびモバイルデバイスがホルスタ内にあり、ユーザのベルトに取り付けられていた間に、デバイス上のアプリケーションが写真を撮ったことを(収集された挙動情報を介して)検出することができる。モバイルデバイス102は、この検出された挙動(たとえば、ホルスタ内にある間のカメラの使用)がユーザに受け入れられるかまたはユーザにとって一般的な挙動であるかどうかを決定することができる。これは、検出された挙動(たとえば、生成された挙動ベクトル)をモバイルデバイス102またはユーザの過去の挙動と比較することによって達成され得る。ホルスタに入れられている間に写真を撮り、それらをサーバにアップロードすることは、(ホルスタに入れられている状況で観測される通常の挙動から決定され得るように)異常な挙動であるので、この状況では、コンピューティングデバイスは、これを、ユーザによるコンピューティングデバイスの通常の使用のパターンに整合しないとして認識し、適切な対応(たとえば、カメラを遮断する、警報を鳴らすなど)を開始することができる。
【0096】
様々な態様では、モバイルデバイス102は、活動または挙動が非良性であるかどうかを決定することに最も関連のある特徴、要因、およびデータ点を知的にかつ効率的に特定するために、ネットワークサーバと連動して動作するように構成され得る。たとえば、デバイスプロセッサは、ネットワークサーバから完全な分類器モデルを受信し、デバイスのユーザならびに/またはデバイスもしくはそのソフトウェアアプリケーションの特徴および機能性に固有である簡潔な分類器モデル(すなわち、データ/挙動モデル)を生成するために、受信された完全な分類器モデルを使用するように構成され得る。デバイスプロセッサは、様々なレベルの複雑さ(または「簡潔さ」)の簡潔な分類器モデルのファミリーを生成するために、完全な分類器モデルを使用することができる。簡潔な分類器モデルの最も簡潔なファミリー(すなわち、最も少数のテスト条件に基づく簡潔な分類器モデル)は、分類器モデルが良性または非良性のいずれかとして類別することができない(したがって、モデルによって疑わしいものとして類別される)挙動に遭遇するまで、ルーチン的に適用されてよく、遭遇した時点で、よりロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルが、挙動を類別する試みにおいて適用され得る。生成された簡潔な分類器モデルのファミリー内の一層ロバストな簡潔な分類器モデルの適用は、挙動の最終的な分類が達成されるまで適用され得る。このようにして、デバイスプロセッサは、挙動を最終的に分類するためにロバストな分類器モデルが必要とされる状況に、最も完全だがリソース集約的な簡潔な分類器モデルの使用を制限することによって、効率と精度との間でバランスをとることができる。
【0097】
様々な態様では、デバイスプロセッサは、完全な分類器モデル内に含まれた有限状態機械表示または表現をブーストされた判定株に変換することによって、簡潔な分類器モデルを生成するように構成され得る。デバイスプロセッサは、ユーザのペルソナ情報またはユーザ固有のデバイス特徴に基づいて、ブーストされた判定株の完全セットを剪定するかまたは選別し、完全な分類器モデル内に含まれたブーストされた判定株のサブセットを含む簡潔な分類器モデルを生成することができる。デバイスプロセッサは、次いで、デバイス挙動を知的に監視、分析、および/または分類するために、簡潔な分類器モデルを使用することができる。
【0098】
ブーストされた判定株は、厳密に1つのノード(および、したがって、1つのテスト質問またはテスト条件)と重み値とを有し、したがって、データ/挙動の二項分類における使用に十分に適した1レベル判定木である。すなわち、挙動ベクトルをブーストされた判定株に適用することで、2値の回答(たとえば、YesまたはNo)がもたらされる。たとえば、ブーストされた判定株によってテストされる質問/条件が「ショートメッセージサービス(SMS)送信の頻度が毎分x回未満であるか」である場合、「3」という値をブーストされた判定株に適用することで、(「3回未満」のSMS送信に対して)「yes」の回答または(「3回以上」のSMS送信に対して)「no」の回答のいずれかがもたらされる。ブーストされた判定株は、非常に簡単かつ根本的である(したがって、著しい処理リソースを必要としない)ので効率的である。ブーストされた判定株はまた非常に並列化可能であり、したがって、(たとえば、コンピューティングデバイス内の複数のコアまたはプロセッサによって)多くの株が並列に/同時に適用またはテストされ得る。
【0099】
図3は、ある態様による、デバイス挙動が非良性であるかどうかを決定するためにユーザのペルソナ情報を生成し、使用する方法300を示す。方法300は、モバイルコンピューティングデバイスまたはリソース制約のあるコンピューティングデバイス内のデバイスプロセッサによって実行することができる。ブロック302で、デバイスプロセッサは、コンピューティングデバイスのユーザを特徴付けるユーザのペルソナ情報を生成するために、ソフトウェアアプリケーションのセンサ、活動、またはいくつかの活動を監視することができる。ある態様では、これは、上で論じた挙動観測器モジュール202を介して達成され得る。
【0100】
ブロック304で、デバイスプロセッサは、デバイス挙動がユーザによるコンピューティングデバイスの通常の使用のパターンと整合しないかどうかを決定することに最も関連するデバイス特徴を特定するために、生成されたユーザのペルソナ情報を使用することができる。ブロック306で、デバイスプロセッサは、挙動情報を収集するために、特定されたデバイス特徴を監視することができる。ブロック308で、デバイスプロセッサは、収集された挙動情報を特徴付ける挙動ベクトルを生成することができる。ブロック310で、デバイスプロセッサは、特定されたデバイス特徴を評価するユーザ固有の分類器モデルを生成することができる。ブロック312で、デバイスプロセッサは、デバイス挙動が非良性であるかどうかを決定するために、生成された挙動ベクトルを分類器モデルに適用することができる。
【0101】
図4は、ある態様による、デバイス挙動が非良性であるかどうかを決定するためにユーザのペルソナ情報を生成し、使用する別の方法400を示す。方法400は、モバイルコンピューティングデバイスまたはリソース制約のあるコンピューティングデバイスのデバイスプロセッサによって実行することができる。
【0102】
ブロック402で、デバイスプロセッサは、ユーザとデバイス上で動作するソフトウェアアプリケーションとの間のユーザ対話を監視することができる。ブロック404で、デバイスプロセッサは、ユーザ対話に基づいて、ユーザのムードを特徴付けるユーザのペルソナ情報を生成することができる。ブロック406で、デバイスプロセッサは、挙動情報を収集するために、計測された構成要素を監視することができる。ブロック408で、デバイスプロセッサは、ユーザのムードが収集された挙動情報のすべてまたは一部を分析することに関連するかどうかを決定することができる。ブロック410で、デバイスプロセッサは、ユーザのムードが関連する挙動情報をその挙動情報が収集された時点におけるユーザのムードと相関させる挙動ベクトルを生成することができる。ブロック412で、デバイスプロセッサは、ユーザのムードに対してデバイス特徴を評価する判定ノードを含む分類器モデルを生成することができる。ブロック414で、デバイスプロセッサは、デバイス挙動が非良性であるかどうかを決定するために、挙動ベクトルを分類器モデルに適用することができる。
【0103】
図5は、モバイルデバイスの挙動を分類するために簡潔な分類器モデルを使用する、ある態様の方法500を示す。方法500は、モバイルコンピューティングデバイスまたはリソース制約のあるコンピューティングデバイスのデバイスプロセッサによって実行することができる。
【0104】
ブロック502で、デバイスプロセッサは、観測を実行して、モバイルデバイスシステムの様々なレベルにおいて計測された様々な構成要素から挙動情報を収集することができる。ある態様では、これは、
図2を参照して上で論じた挙動観測器モジュール202を介して達成され得る。ブロック504で、デバイスプロセッサは、収集された挙動情報、および/またはモバイルデバイスの挙動を特徴付ける、挙動ベクトルを生成することができる。また、ブロック504で、デバイスプロセッサは、簡潔な分類器モデル、または複雑さ(または「簡潔さ」)のレベルが様々である簡潔な分類器モデルのファミリーを生成するために、ネットワークサーバから受信された完全な分類器モデルを使用することができる。これを達成するために、デバイスプロセッサは、完全な分類器モデル内に含まれるブーストされた判定株のファミリーを選別して、減らされた数のブーストされた判定株を含む、かつ/または限られた数のテスト条件を評価する、簡潔な分類器モデルを生成することができる。ある態様では、簡潔な分類器モデルのうちの1つまたは複数は、ユーザ固有の分類器モデルであり得る。
【0105】
ブロック506で、デバイスプロセッサは、モバイルデバイスによってまだ評価または適用されていない簡潔な分類器モデルのファミリー内で最も簡潔な分類器(すなわち、最少の数の異なるモバイルデバイスの状態、特徴、挙動、または条件に基づくモデル)を選択することができる。ある態様では、これは、デバイスプロセッサが分類器モデルの順位付けられたリスト内の最初の分類器モデルを選択することによって達成され得る。ブロック508で、デバイスプロセッサは、収集された挙動情報または挙動ベクトルを選択された簡潔な分類器モデル内の各々のブーストされた判定株に適用することができる。ブーストされた判定株は2値の判定であり、簡潔な分類器モデルは同じテスト条件に基づく多くの2値の判定を選択することによって生成されるので、簡潔な分類器モデル内のブーストされた判定株に挙動ベクトルを適用する処理は、並列動作で実行され得る。代替的に、挙動ベクトルは、簡潔な分類器モデル内に含まれる限られた数のテスト条件パラメータをちょうど含むように切り捨てられてよく、またはフィルタリングされてよく、それによってモデルを適用する際の計算量はさらに低減される。
【0106】
ブロック510で、デバイスプロセッサは、収集された挙動情報を簡潔な分類器モデル内の各々のブーストされた判定株に適用した結果の加重平均を計算または決定することができる。ブロック512で、デバイスプロセッサは、計算された加重平均としきい値とを比較することができる。決定ブロック514で、デバイスプロセッサは、この比較の結果、および/または選択された簡潔な分類器モデルを適用することによって生成された結果が疑わしいかどうかを決定することができる。たとえば、デバイスプロセッサは、これらの結果が、高い信頼度で悪意があるまたは良性のいずれかであるとして挙動を分類するために使用され得るかどうかを決定することができ、そうでない場合、挙動を疑わしいものとして扱う。
【0107】
結果が疑わしいとデバイスプロセッサが決定する(たとえば、決定ブロック514=「Yes」の)場合、デバイスプロセッサは、ブロック506〜512における動作を繰り返して、挙動が高い信頼度で悪意があるまたは良性であるとして分類されるまで、より多くのデバイスの条件、特徴、挙動、または条件を評価するより強い(すなわち、より簡潔ではない)分類器モデルを選択および適用することができる。挙動が高い信頼度で悪意があるまたは良性のいずれかであるとして分類され得ると決定することなどによって、結果が疑わしくない(たとえば、決定ブロック514=「No」)とデバイスプロセッサが決定する場合、ブロック516において、デバイスプロセッサは、良性であるまたは潜在的に悪意があるとしてモバイルデバイスの挙動を分類するために、ブロック512において生成された比較の結果を使用することができる。
【0108】
ある代替的な態様の方法では、上で説明した動作は、簡潔な分類器モデル内にまだ存在しないブーストされた判定株を順次選択し、選択された判定株と同じモバイルデバイスの状態、特徴、挙動または条件に依存する(および、したがって、1つの決定結果に基づいて適用され得る)すべての他のブーストされた判定株を特定し、同じモバイルデバイスの状態、特徴、挙動または条件に依存する選択されたすべての特定された他のブーストされた判定株を簡潔な分類器モデルに含め、テスト条件の決定された数に等しい回数、プロセスを繰り返すことによって、達成され得る。選択されたブーストされた判定株と同じテスト条件に依存するすべてのブーストされた判定株が毎回簡潔な分類器モデルに追加されるので、このプロセスが実行される回数を限定することは、簡潔な分類器モデルに含まれるテスト条件の数を限定することになる。
【0109】
図6は、様々な態様に従って使用するのに適した、判定木/分類器を生成するのに適した例示的な方法600を示す。方法600は、モバイルコンピューティングデバイスまたはリソース制約のあるコンピューティングデバイスのデバイスプロセッサによって実行することができる。ブロック602で、デバイスプロセッサは、判定木/分類器を生成および/または実行し、判定木/分類器の実行によってトレーニングサンプルを収集し、トレーニングサンプルに基づいて新しい分類器モデル(h1(x))を生成することができる。トレーニングサンプルは、モバイルデバイスの挙動、ソフトウェアアプリケーション、またはモバイルデバイスにおけるプロセスの、以前の観測または分析から収集された情報を含み得る。トレーニングサンプルおよび/または新しい分類器モデル(h1(x))は、以前の分類器に含まれる質問またはテスト条件のタイプに基づいて、および/または、以前のデータ/挙動モデルまたは分類器の実行/適用から収集された正確さまたは性能の特性に基づいて生成され得る。
【0110】
ブロック604で、デバイスプロセッサは、第2の新しい木/分類器(h2(x))を生成するために、生成された判定木/分類器(h1(x))によって誤分類されたエントリの重みをブーストする(または増大させる)ことができる。ある態様では、トレーニングサンプルおよび/または新しい分類器モデル(h2(x))は、分類器の以前の実行または使用(h1(x))の誤り率に基づいて生成され得る。ある態様では、トレーニングサンプルおよび/または新しい分類器モデル(h2(x))は、分類器の以前の実行または使用においてデータ点の誤り率または誤分類に寄与したと判定される属性に基づいて生成され得る。
【0111】
ある態様では、誤分類されたエントリは、それらの相対的な正確さまたは有効性に基づいて重み付けられ得る。動作606で、プロセッサは、第3の新しい木/分類器(h3(x))を生成するために、生成された第2の木/分類器(h2(x))によって誤分類されたエントリの重みをブーストする(または増大させる)ことができる。動作608で、604〜606の動作が、数「t」の新しい木/分類器(h
t(x))を生成するために繰り返され得る。
【0112】
第1の判定木/分類器(h1(x))によって誤分類されたエントリの重みをブーストし、または増大させることによって、第2の木/分類器(h2(x))は、第1の判定木/分類器(h1(x))によって誤分類されたエントリをより正確に分類することができるが、第1の判定木/分類器(h1(x))によって正しく分類されたエントリのいくつかを誤分類することもある。同様に、第3の木/分類器(h3(x))は、第2の判定木/分類器(h2(x))によって誤分類されたエントリをより正確に分類することができるが、第2の判定木/分類器(h2(x))によって正しく分類されたエントリのいくつかを誤分類することがある。すなわち、木/分類器のファミリーh1(x)〜h
t(x)を生成することは、全体として収束するシステムをもたらさないことがあり、並列に実行され得るいくつかの判定木/分類器をもたらす。
【0113】
図7は、ある態様による動的および適応的な観測を実行するための例示的な方法700を示す。ブロック702で、デバイスプロセッサは、モバイルデバイスの劣化に寄与し得る多数の要因、挙動、および活動のサブセットを監視/観測することによって、粗い観測を実行することができる。ブロック703で、デバイスプロセッサは、粗い観測に基づいて、粗い観測および/またはモバイルデバイスの挙動を特徴付ける挙動ベクトルを生成することができる。ブロック704で、デバイスプロセッサは、モバイルデバイスの劣化に潜在的に寄与し得る、粗い観測と関連付けられるサブシステム、プロセス、および/またはアプリケーションを特定することができる。これは、たとえば、複数のソースから受信された情報とモバイルデバイスのセンサから受信された状況的情報とを比較することによって達成され得る。ブロック706で、デバイスプロセッサは、粗い観測に基づいて挙動分析動作を実行することができる。
【0114】
決定ブロック708で、デバイスプロセッサは、疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定され補正され得るかどうかを決定することができる。疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定され補正され得るとデバイスプロセッサが決定する(すなわち、決定ブロック708=「Yes」)とき、ブロック718で、プロセッサは、挙動を補正するためのプロセスを開始し、ブロック702に戻って追加の粗い観測を実行することができる。
【0115】
疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定および/または補正され得ないとデバイスプロセッサが決定する(すなわち、決定ブロック708=「No」)とき、決定ブロック709で、デバイスプロセッサは、問題の可能性があるかどうかを決定できる。ある態様では、デバイスプロセッサは、モバイルデバイスが潜在的な問題に遭遇することおよび/または疑わしい挙動に関与することの確率を計算し、計算された確率が所定のしきい値よりも大きいかどうかを決定することによって、問題の可能性があるかどうかを決定することができる。計算された確率が所定のしきい値よりも大きくない、および/または、疑わしい挙動または潜在的問題が存在するおよび/または検出可能である可能性はないとデバイスプロセッサが決定する(すなわち、決定ブロック709=「No」)とき、プロセッサは、ブロック702に戻って追加の粗い観測を実行することができる。
【0116】
疑わしい挙動または潜在的問題が存在するおよび/または検出可能である可能性があるとデバイスプロセッサが決定する(すなわち、決定ブロック709=「Yes」)とき、ブロック710で、デバイスプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、より深いログ取得/観測または最終的なログ取得を実行することができる。ブロック712で、デバイスプロセッサは、特定されたサブシステム、プロセス、またはアプリケーションに対して、より深くより詳細な観測を実行することができる。ブロック714で、デバイスプロセッサは、より深くより詳細な観測に基づいて、さらなるおよび/またはより深い挙動分析を実行することができる。決定ブロック708で、デバイスプロセッサは、より深い挙動分析の結果に基づいて、疑わしい挙動または潜在的な問題が特定され補正され得るかどうかを再び決定することができる。より深い挙動分析の結果に基づいて疑わしい挙動または潜在的な問題が特定され補正され得ないとデバイスプロセッサが決定する(すなわち、決定ブロック708=「No」)とき、詳細さのレベルが問題を特定するのに十分に微細になるまで、または、詳細さを追加しても問題が特定され得ないかまたは問題が存在しないと決定されるまで、プロセッサはブロック710〜714の動作を繰り返すことができる。
【0117】
より深い挙動分析の結果に基づいて疑わしい挙動または潜在的な問題が特定され補正され得るとデバイスプロセッサが決定する(すなわち、決定ブロック708=「Yes」)とき、ブロック718で、デバイスプロセッサは、問題/挙動を補正するための動作を実行することができ、プロセッサはブロック702に戻って追加の動作を実行することができる。
【0118】
ある態様では、方法700のブロック702〜718の一部として、デバイスプロセッサは、限られた粗い観測値から疑わしい挙動を特定するため、より詳細に観測するために挙動を動的に決定するため、および観測のために必要な詳細さの的確なレベルを動的に決定するために、システムの挙動のリアルタイム挙動分析を実行することができる。これは、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリリソースを使用する必要なく、デバイスプロセッサが問題を効率的に特定し、問題が発生するのを防止することを可能にする。
【0119】
様々な態様は、ソフトウェアアプリケーションの選択グループの集合的挙動を監視および分析するために(許可、ポリシー、またはルールベースの手法ではなく)挙動分析および/または機械学習技法を使用することによって、既存のソリューションを改善する。現代のコンピューティングデバイスは高度に構成可能で複雑なシステムであり、ソフトウェアアプリケーションが結託しているかどうかを決定するために最も重要である要因が各デバイスにおいて異なり得るので、挙動分析または機械学習技法の使用は重要である。さらに、デバイスの特徴/要因の異なる組合せは、ソフトウェアアプリケーションが結託しているかどうかをそのデバイスが決定するために、各デバイスにおける分析を必要とし得る。さらに、しばしば監視および分析を必要とする特徴/要因の的確な組合せは、1つまたは複数の活動が進行中であるとき、1つまたは複数の活動が実行される特定のコンピューティングデバイスから得られる情報を使用して決定することしかできない。これらのまたは他の理由で、既存のソリューションは、挙動が進行中の間、コンピュータデバイスのかなりの処理リソース量、メモリリソース量、または電力リソース量を消費せずに、コンピューティングデバイス内の複数のソフトウェアソリューションの集合的挙動、またはソフトウェアアプリケーション間の関係をリアルタイムで監視し、検出し、特徴付けるために十分ではない。
【0120】
図2〜
図7を参照して上で論じた態様を含む様々な態様は、様々なコンピューティングデバイス上で実装される場合があり、その一例がスマートフォンの形で
図8に示される。スマートフォン800は、内部メモリ804と、ディスプレイ812と、スピーカ814とに結合されたプロセッサ802を含み得る。加えて、スマートフォン800は、プロセッサ802に結合されたワイヤレスデータリンクおよび/または携帯電話トランシーバ808に接続され得る、電磁放射を送り、受信するためのアンテナを含み得る。スマートフォン800は通常、ユーザ入力を受信するためのメニュー選択ボタンまたはロッカースイッチ820も含む。
【0121】
典型的なスマートフォン800はまた、マイクロフォンから受信された音をワイヤレス送信に適したデータパケットにデジタル化し、受信された音のデータパケットを復号し、スピーカに供給されて音を発生させるアナログ信号を生成する、音声符号化/復号(コーデック)回路806を含む。また、プロセッサ802、ワイヤレストランシーバ808、およびコーデック806のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含んでよい。
【0122】
プロセッサ802は、以下で説明する様々な態様の機能を含む、種々の機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つまたは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするというように、複数のプロセッサ802が設けられ得る。通常、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ802にロードされる前に、内部メモリ804内に記憶され得る。プロセッサ802は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。様々な態様では、プロセッサ802は、デバイスプロセッサ、処理コア、または(
図1に示した例示的なSOC100など)SOCであってよい。ある態様では、スマートフォン800はSOCを含んでよく、プロセッサ802は(
図1に示したプロセッサ101、104、106、108、110のうちの1つなど)SOC内に含まれるプロセッサのうちの1つであってよい。
【0123】
本出願で使用する「構成要素」、「モジュール」などの用語は、限定はされないが、特定の動作もしくは機能を実行するように構成された、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなどの、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよいが、それらに限定されない。例として、コンピューティングデバイス上で実行するアプリケーションとコンピューティングデバイスの両方は、構成要素と呼ばれる場合がある。1つまたは複数の構成要素が、プロセスおよび/または実行スレッド内に存在することがあり、1つの構成要素が、1つのプロセッサもしくはコアに局在することがあり、かつ/または2つ以上のプロセッサもしくはコアに分散されることがある。加えて、これらの構成要素は、様々な命令および/またはデータ構造が記憶された様々な非一時的コンピュータ可読媒体から実行することができる。構成要素は、ローカルプロセスおよび/またはリモートプロセス、関数呼出しまたはプロシージャ呼出し、電子信号、データパケット、メモリ読出し/書込み、ならびに他の知られているネットワーク、コンピュータ、プロセッサ、および/またはプロセス関連の通信方法によって通信することができる。
【0124】
様々な態様の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、構造化照会言語(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語または様々な他のプログラミング言語で記述され得る。本出願で使用する場合、コンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械語コードを指し得る。
【0125】
多くのモバイルコンピューティングデバイスのオペレーティングシステムのカーネルは、(非特権コードが実行する場合)ユーザ空間内に編成され、(特権コードが実行する場合)カーネル空間内に編成される。この分離は、カーネル空間の一部であるコードが一般公有使用許諾(GPL)で許諾される必要がある一方で、ユーザ空間において実行するコードがGPL許諾されなくてもよい、Android(登録商標)および他のGPL環境において特に重要である。本明細書で論じた様々なソフトウェア構成要素/モジュールは、明示的に別段の記述がない場合、カーネル空間またはユーザ空間のいずれかに実装され得ることを理解されたい。
【0126】
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供したものであり、様々な態様のステップを提示された順序で実行しなければならないことを要求または暗示するものではない。当業者なら諒解するように、上記の態様におけるステップの順番は、任意の順番で実行可能である。「その後」、「次いで」、「次」などの語は、ステップの順番を限定するものではなく、これらの語は単に、読者に本方法の説明を案内するために使用される。さらに、たとえば冠詞「a」、「an」、または「the」を使用する、請求項の要素に対する単数形でのいかなる参照も、要素を単数形に限定すると解釈されるべきではない。
【0127】
本明細書で開示する態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装される場合がある。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、一般にそれらの機能性に関して上述した。そのような機能性がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の用途およびシステム全体に課せられる設計制約によって決まる。当業者は、説明した機能性を特定のアプリケーションごとに様々な方法で実装し得るが、そのような実装決定は本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【0128】
本明細書で開示した態様に関して説明した様々な例示的論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装もしくは実行され得る。汎用プロセッサはマルチプロセッサであり得るが、代替的に、プロセッサはいかなる従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマルチプロセッサとの組合せ、複数のマルチプロセッサ、DSPコアと連携する1つもしくは複数のマルチプロセッサ、または任意の他のそのような構成としても実装され得る。代替的に、いくつかのステップまたは方法は、所与の機能に特有の回路によって実行され得る。
【0129】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてもよい。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に1つまたは複数のプロセッサ実行可能命令またはコードとして記憶され得る。本明細書で開示した方法またはアルゴリズムのステップは、非一時的なコンピュータ可読媒体またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュールにおいて実施され得る。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされる場合がある任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。ディスク(disk)およびディスク(disc)は、本明細書で使用するとき、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読記憶媒体およびプロセッサ可読記憶媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれる場合がある、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在する場合がある。
【0130】
開示した態様の前述の説明は、いかなる当業者も本発明を作成または使用することができるように与えたものである。これらの態様に対する様々な修正は当業者には容易に明らかとなり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示す態様に限定されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
コンピューティングデバイスプロセッサは、コンピューティングデバイスの悪意があるか、または性能を劣化させる挙動を識別し、防止し、補正し、またはさもなければ、それらに応答するための挙動分析技法および機械学習技法を使用する方法を実装するためのプロセッサ実行可能命令で構成され得る。これらの動作の一部として、プロセッサは、ユーザの活動、選好、年齢、職業、習慣、ムード、感情の状態、性格、デバイス使用パターンなどに基づいて、ユーザを特徴付けるユーザのペルソナ情報を生成することができる。プロセッサは、コンピューティングデバイス内で監視または評価されるデバイス特徴の数を動的に決定し、デバイス挙動がユーザによるコンピューティングデバイスの通常の使用のパターンと整合しないかどうかを決定することに最も関連するデバイス挙動を特定し、コンピューティングデバイスの非良性挙動をより良好に特定するか、またはそれらにより良好に応答するために、ユーザのペルソナ情報を使用することができる。