添付の図面を参照しながら、様々な態様について詳細に説明する。可能な限り、同じまたは同様の部分を指すために図面全体を通じて同じ参照番号が使用される。特定の例および実装形態への参照は例示のためであり、本発明または特許請求の範囲を限定するものではない。
概して、様々な態様は、挙動分析または機械学習技法を使用して、コンピューティングデバイスが極端に騒々しくまたは熱くなることなく、およびコンピューティングデバイスの応答性、有用性、性能、または電力消費特性のかなりの負のまたはユーザが知覚できる変化をもたらすことなく、サイドチャネル攻撃を防止する(サイドチャネル攻撃から守る)ように、難読化動作を知的かつ選択的に実行するように構成されたコンピューティングデバイスを含む。したがって、様々な態様は、たとえば限られた処理およびバッテリーリソースを有し、快適なユーザエクスペリエンスが非常に重要なモバイル通信デバイス(スマートフォンなど)などの消費者向け電子デバイスおよびリソース制約のあるコンピューティングシステムでの使用に特に好適である。
「例示的」という単語は、本明細書では、「例、事例、または例示として機能する」ことを意味するために使用される。本明細書で「例示的」として説明するいかなる実装形態も、必ずしも他の実装形態にまさって好ましいか、または有利であると解釈されるべきではない。
「性能劣化」という用語は、本明細書では、より長い処理時間、より遅いリアルタイム応答性、より短いバッテリー持続時間、個人データの損失、悪意のある経済活動(たとえば、無許可のプレミアムSMSメッセージを送信すること)、サービス拒否(DoS)、不適切に書かれたまたは設計されたソフトウェアアプリケーション、悪意のあるソフトウェア、マルウェア、ウイルス、断片化されたメモリ、スパイまたはボットネット活動のためにモバイルデバイスを乗っ取ることまたは電話を利用することに関する動作などのような、コンピューティングデバイスの多種多様な望ましくない動作および特性を指すために使用される。また、これらの理由のいずれかで性能を劣化させる挙動、アクティビティ、および条件は、本明細書では「良性ではない」または「非良性である」ものとして呼ばれる。
「ワイヤレスデバイス」、「モバイルデバイス」、および「ユーザ機器」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルのマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、ワイヤレスゲームコントローラ、および、性能が重要であるメモリとプログラマブルプロセッサとを含み電力節減の方法が有益であるようなバッテリー電源で動作する同様の電子デバイスのうちの、任意の1つまたはすべてを指すように、本明細書では総称的に、および互換的に使用される。様々な態様は、リソース制約のあるシステムであるモバイルデバイスに対して特に有用であるが、これらの態様は一般に、プロセッサを含み、ソフトウェアアプリケーションを実行する、任意のコンピューティングデバイスにおいて有用である。
ハッカーおよび泥棒は、秘密の情報をコンピューティングデバイスから盗むために、ますます、サイドチャネル攻撃を使用している。サイドチャネル攻撃は、コンピューティングデバイスの観察可能な信号放出(たとえば、音、磁場、熱など)から得られる情報に基づく任意のサイバー攻撃であり得る。たとえば、コンピューティングデバイスは、それらの電子構成要素(たとえば、読出しおよび書込み動作の間)の振動により、高音をしばしば発する。これらの音および他の放出は、そのコンピューティングデバイスに記憶され、および/またはそれによって使用される暗号鍵を復号するために、ハッカーによって検出され、記録され、分析され、使用され得る観察可能なコンピュータ測定値である。
サイドチャネル攻撃の一例として、マイクロフォン、熱センサー、または磁力計を含む第1のコンピューティングデバイス(攻撃者デバイス)は、第2のコンピューティングデバイス(被攻撃デバイス)に極めて近接して(たとえば、2、3フィート)配置され得る。次いで、攻撃者デバイスは、一連の暗号化された電子メールを被攻撃デバイスに送り、被攻撃デバイスが、電子メールを受信し、解読すると、被攻撃デバイスの観察可能な信号放出(たとえば、音、磁場、熱など)における変化を監視し/記録し得る。次いで、攻撃者デバイスは、これらの変化を分析して、電子メールを解読するとき、被攻撃デバイスによって実行される正確な動作を決定し、この情報を使用して、電子メールを解読するために被攻撃デバイスによって使用される暗号鍵を確認することができる。そのような不適切に取得された暗号鍵を使用して、攻撃者デバイスは、被攻撃デバイスとの間の通信をインターセプトし、暗号鍵を使用してインターセプトされた通信を解読することができる。
コンピューティングデバイスをこれらおよび他のサイドチャネル攻撃から保護するために、様々な難読化技法が使用され得る。たとえば、サイドチャネル攻撃に対する1つの防衛は、攻撃者デバイスが時間とともにデバイスにおける特定のアクティビティによって生成される音、フィールド、または信号を容易に識別し、測定することができないように、コンピューティングデバイス(すなわち、コンピューティングデバイスによって生成されるすべてのノイズ信号の合計)のノイズフロアが十分に高いことを確実にすることである。この防衛は、しばしば、攻撃者デバイスが観察可能な信号放出(たとえば、音、磁場、熱など)における変化から有用な情報を得るのを防止し、および/または攻撃者デバイスが被攻撃デバイスによって実行される正確な動作を決定することをより困難にする。これは、次に、泥棒およびハッカーが秘密の情報を被攻撃デバイスから盗むことをより困難にする。
そのような難読化技法は、一般に、コンピューティングデバイスをサイドチャネル攻撃から保護することに効果的であるが、そのような難読化技法を使用する既存のソリューションは、非効率的であり、および/またはモバイルデバイスなど、リソース制約のあるコンピューティングシステムにおける連続的な使用に適していない。これは、デバイスをサイドチャネル攻撃から適切に保護するのに十分な難読化を導入するために、コンピューティングデバイスは、かなりの量のデバイスのバッテリーおよび処理リソースを消費するいくつかの電力およびプロセッサ集約型の動作を実行することを必要とし得る。さらに、現代のコンピューティングデバイスの複雑さおよび多様性のため、デバイス設計者がサイドチャネル攻撃を受けやすい特定のデバイスアクティビティを前もって予測することは、しばしば困難である。すべてのこれらの理由のために、既存のソリューションは、しばしば、コンピューティングデバイスが電力およびプロセッサ集約型の難読化動作を連続的にまたは繰り返し実行することを必要とする。これによって、しばしば、これらのコンピューティングデバイスは、極端に騒々しく、熱く、または鈍感になる。
様々な態様は、挙動分析または機械学習技法を使用して、サイドチャネル攻撃に対するコンピューティングデバイスの脆弱性のレベル、程度、および重大度を効率的に判定し、脆弱性の判定されたレベル、程度、または重大度に基づいて難読化動作を選択的に実行するようにコンピューティングデバイスを構成することによって、既存のソリューションのこれらおよび他の制限を克服する。様々な態様は、挙動分析または機械学習技法を使用して、サイドチャネル攻撃から守るのに十分な自然な難読化がシステムにあるかどうかを判定し、サイドチャネル攻撃を防止するのに十分な自然な難読化がシステムにないとの判定に応答して、難読化動作を実行するのみとすることもできる。
挙動分析または機械学習技法を使用して難読化を選択的にシステムに導入することによって、様々な態様は、コンピューティングデバイスによって生成されたノイズ、音、熱、および放射線の総量を低減することによって、サイドチャネル攻撃から保護するための既存のソリューションを改良する。様々な態様は、積極的な対策が不要であるとき、過剰な量のデバイスの処理およびバッテリーリソースを消費することなく、サイドチャネル攻撃からコンピューティングデバイスを保護することによっても、既存のソリューションを改良する。したがって、様々な態様は、たとえばモバイルコンピューティングデバイスなど、リソース制約のあるコンピューティングシステムでの使用に好適である。
一態様では、コンピューティングデバイスは、その現在の挙動またはアクティビティのクリティカリティまたはセキュリティの重要度に基づいて、サイドチャネル攻撃に対して脆弱であるかどうか(および/またはサイドチャネル攻撃に対するその脆弱性のレベル、程度、もしくは重大度)を判定するように構成され得る。加えて、コンピューティングデバイスは、コンピューティングデバイスのアクティビティを監視し、監視されたアクティビティに基づいて挙動ベクトルを生成し、監視されたアクティビティがサイドチャネル攻撃に対して脆弱である進行中のクリティカルアクティビティであるかどうかを判定するために、生成された挙動ベクトルにクリティカルアクティビティのモデルを適用するように構成され得る。次いで、システムは、進行中のクリティカルアクティビティの間(たとえば、間のみ)、さらなる難読化をシステムに導入するために難読化動作を実行することができる。
一態様では、コンピューティングデバイスは、コンピューティングデバイスの測定可能な構成要素によって生成された自然な難読化(たとえば、ノイズ信号)のレベルを監視し、進行中のクリティカルアクティビティの間、サイドチャネル攻撃を防止するのに十分な自然な難読化があるかどうかを判定するために、測定可能な構成要素のモデルを生成された挙動ベクトルに適用し、サイドチャネル攻撃が進行中のクリティカルアクティビティをターゲットとするのを防止するのに十分な自然な難読化がないとの判定に応答して、追加のまたは人工の難読化を導入する(たとえば、ノイズフロアを上げることによって)ように構成され得る。したがって、コンピューティングデバイスは、進行中のクリティカルアクティビティの実行の間、および進行中のクリティカルアクティビティの間、コンピューティングデバイスをサイドチャネル攻撃から保護するために十分な自然な難読化がないとの判定に応答して、追加のまたは人工の難読化をコンピューティングシステムに導入するだけであるように構成され得る。
コンピューティングデバイスは、コンピューティングデバイスのノイズフロアを上げるための動作を含む、デバイスをサイドチャネル攻撃から保護するために多種多様な難読化動作を実行するように構成され得る。これらの動作は、たとえばハードウェア構成要素(たとえば、送風機、コプロセッサなど)を起動させることによって、またはノイズ信号を生成する補助動作を実行することによってなど、コンピューティングデバイスによって放出されるノイズ信号の数、ボリューム、および/または強度を増加させることを含み得る。ノイズ信号は、進行中のクリティカルアクティビティによって生成されるもの以外の任意の観察可能な信号放出(たとえば、音、磁場、熱など)でもよい。
上記で説明したように、様々な態様は、挙動分析または機械学習技法を使用して、クリティカルアクティビティの間、難読化をデバイスに選択的に導入することによって、既存のソリューションを改良する。現代のコンピューティングデバイスは高度に構成可能で複雑なシステムであり、特定のアクティビティがクリティカルアクティビティであるかどうかを判定するために最も重要である要因が各デバイスにおいて異なり得るので、挙動分析または機械学習技法の使用は重要である。さらに、デバイスの特徴/要因の異なる組合せは、特定のアクティビティが進行中のクリティカルアクティビティであるかどうかをそのデバイスが決定するために、各デバイスにおける分析を必要とし得る。さらに、しばしば監視および分析を必要とする特徴/要因の的確な組合せは、アクティビティが進行中であるとき、アクティビティが実行される特定のコンピューティングデバイスから得られる情報を使用して決定することしかできない。これらおよび他の理由のために、ルールベースのソリューションは、進行中のアクティビティがサイドチャネル攻撃に対して脆弱なクリティカルアクティビティであるかどうかの判定において使用する、または、進行中のクリティカルアクティビティの間、サイドチャネル攻撃を防止するのに十分な自然な難読化があるかどうかの判定のためには好適ではない。
ルールベースのソリューションの制限を克服するために、様々な態様において、コンピューティングデバイスは、アクティビティが進行中のクリティカルアクティビティであるかどうか、サイドチャネル攻撃を防止するのに十分な自然な難読化があるかどうか、およびアクティビティが良性でないかどうかを判定するために、(ルールベースの手法とは対照的に)機械学習技法を使用するように構成された包括的な挙動監視および分析システムを備え得る。
挙動監視および分析システムは、コンピューティングデバイスシステムの様々なレベルでの様々なアプリケーションプログラミングインターフェース、レジスタ、カウンタ、または他の構成要素(本明細書では総称して「計装化構成要素」)を計装するかまたは協調させるように構成された観測器プロセス、デーモン、モジュール、またはサブシステム(本明細書では総称して「モジュール」と呼ぶ)を含み得る。観測器モジュールは、計装化構成要素から挙動情報を収集することによってコンピューティングデバイスのアクティビティを連続的に(または略連続的に)監視することができる。挙動監視および分析システムはまた、分析器モジュールを含んでよく、観測器モジュールは、収集された挙動情報を(たとえば、メモリ書込み動作、関数呼出しなどを介して)分析器モジュールに通信することができる。分析器モジュールは、リアルタイムの挙動分析動作を実行するように構成され得、リアルタイムの挙動分析動作は、データ、アルゴリズム、分類器またはモデル(本明細書では総称して「分類器モデル」と呼ぶ)を実施、実行、かつ/または収集された挙動情報に適用して、デバイス挙動が進行中のクリティカルアクティビティであるかどうかを判定することを含み得る。次いで、コンピューティングデバイスは、この分析の結果を使用して、追加のまたは人工の難読化をシステムに導入するために難読化動作を実行すべきかどうかを判定することができる。
いくつかの態様で、挙動監視および分析システムは、コンピューティングデバイスの性能および/または電力利用のレベルの経時的な劣化に寄与する、条件、要因、および/またはデバイスの挙動を知的かつ効率的に識別、防止、および/または修正するように構成され得る。これらの態様では、分析器モジュールは、アクティビティまたはデバイス挙動が良性でない(たとえば、悪意のある、下手に書かれた、性能を劣化させるなど)かどうかを判定するために、リアルタイム挙動分析動作を実行するようにさらに構成され得る。いくつかの態様では、分析器モジュールは、アクティビティが進行中のクリティカルアクティビティであるかどうか、および/またはそのアクティビティが良性でないかどうかを判定するとき、それらが事前整形したかなりの数の追加の/異なる動作を実行することなく、サイドチャネル攻撃を防止するのに十分な自然な難読化があるかどうかを判定するように構成され得る。したがって、分析器モジュールは、コンピューティングデバイスの応答性、性能、または電力消費特性のかなりの負のまたはユーザが知覚できる変化をもたらすことなく、コンピューティングデバイスが、現在、サイドチャネル攻撃に対して脆弱であるかどうか(および/またはサイドチャネル攻撃に対するその脆弱性のレベル、程度、重大度)を判定することができる。
いくつかの態様は、コンピューティングデバイスの性能および/または電力利用レベルを経時的に劣化させ得る条件および/またはデバイス挙動を効率的に特定、分類、モデル化、防止、かつ/または修正するように互いとともに働くように構成されたネットワークサーバおよびコンピューティングデバイスを含み得る。これらの動作の一部として、ネットワークサーバおよびコンピューティングデバイスは、たとえばアクティビティが進行中のクリティカルアクティビティであるか、およびシステムに存在する自然な難読化のレベルを決定することによって、サイドチャネル攻撃に対するコンピューティングデバイスの脆弱性のレベル、程度、または重大度を判定するために互いとともに働き得る。
いくつかの態様では、ネットワークサーバは、中央データベース(たとえば、「クラウド」)から様々な条件、特徴、挙動、および是正処置に関する情報を受信し、この情報を使用して、コンピューティングデバイスによって1つまたは複数の簡潔な分類器モデルに迅速に変換され得るフォーマットまたは構造(たとえば、有限状態機械など)で挙動情報の膨大なコーパスを記述する、完全な分類器モデル(すなわち、データモデルまたは挙動モデル)を生成するように構成される場合がある。ネットワークサーバは、挙動、ソフトウェアアプリケーション、プロセス、または動作が進行中のクリティカルアクティビティの一部であるかどうかを判定するために、コンピューティングデバイスによって使用され得るアクティビティラベルおよび/または分類を含むための完全な分類器モデルを生成するように構成され得る。たとえば、ネットワークサーバは、たとえば、金融アプリケーション、ポイントオブセールアプリケーション、バイオメトリックセンサーアプリケーション、極秘データを記憶するアプリケーション、暗号化/解読アプリケーションなど、リスクが高い、または悪用されやすいソフトウェアアプリケーションおよび/またはアプリケーションタイプを識別するのに適した情報を含むように、完全な分類器モデルを生成し得る。
いくつかの態様では、完全な分類器モデルは、挙動情報の膨大なコーパスの有限状態機械の記述または表現であり得る。一態様では、有限状態機械は、各々が1つまたは複数の特徴をテストする複数のノード、ブーストされた決定木、または決定株としての表現に適した情報を含む場合がある。たとえば、有限状態機械は、アクティビティがクリティカルアクティビティであるか、自然な難読化レベル、および/またはデバイス挙動が良性でないかどうかを判定することに関連するすべてまたは多くの特徴およびデータポイントを一括して特定、記述、テスト、または評価する増強決定株のファミリーとして表示され得る情報構造であってよい。次に、ネットワークサーバは、完全な分類器モデル(すなわち、有限状態機械および/または増強決定株のファミリーなどを含む情報構造)をコンピューティングデバイスに送信することができる。
コンピューティングデバイスは、完全な分類器モデルを受信し使用して、デバイス固有の簡潔な分類器モデルまたは複雑さ(または「簡潔さ」)のレベルが様々である簡潔な分類器モデルのファミリーを生成し得る。これを遂行するために、コンピューティングデバイスは、ネットワークサーバから受信された完全な分類器モデルに含まれる、ブーストされた決定木のロバストなファミリーを剪定または選別して、減少された数のブーストされた決定ノードを含む簡潔な分類器モデルを生成し、かつ/またはコンピューティングデバイス、コンピューティングデバイスのソフトウェアアプリケーション、および/またはソフトウェアアプリケーションのタイプもしくはカテゴリに固有の限られた数のテスト条件もしくは特徴を評価すればよい。次いで、コンピューティングデバイスは、これらのローカルに生成された分類器モデルを使用して、アクティビティが、サイドチャネル攻撃に対して脆弱であるクリティカルアクティビティであるかどうか、システムに存在する自然な難読化のレベル、アクティビティが良性でないかどうかなどを判定するために、リアルタイム挙動監視および分析動作を実行することができる。
修正され、選別され、拡張され、または場合によっては簡潔な分類器モデルを生成するために使用され得る、有限状態機械、決定ノード、決定木、または他の同様の情報構造として、情報の膨大なコーパスを記述または表現する完全な分類器モデルを生成することによって、様々な態様により、トレーニングデータにアクセスすることなく、またはネットワークサーバ、中央データベース、もしくはクラウドネットワーク/サーバとさらに通信することなく、コンピューティングデバイスが簡潔な分類器モデルを迅速かつ効率的に生成することが可能になる。これにより、コンピューティングデバイスのネットワークに対する依存性が著しく低減され、デバイスの性能および電力消費特性が向上する。
さらに、アプリケーション固有またはデバイス固有の特徴を考慮するように、コンピューティングデバイス内でローカルに簡潔な分類器モデルを生成することによって、様々な態様は、コンピューティングデバイスが、デバイスがサイドチャネル攻撃に対して脆弱であるかどうか、および/または難読化動作を実行することが必要であるかどうかを判定するために最も重要である特徴または要因に、その動作の焦点を合わせることができるようにする。これにより、コンピューティングデバイスの応答性、性能、または電力消費特性においてかなりの負のまたはユーザが知覚できる変化をもたらすことなく、コンピューティングデバイスが、サイドチャネル攻撃から保護し、望ましくない挙動に応答することが可能になる。
様々な態様は、単一のプロセッサおよび多重プロセッサのシステム、ならびにシステムオンチップ(SOC)を含む、いくつかの異なるコンピューティングデバイス内で実装され得る。図1は、様々な態様を実装するコンピューティングデバイス中で使用され得る例示的なシステムオンチップ(SOC)100アーキテクチャを示すアーキテクチャ図である。SOC100は、デジタル信号プロセッサ(DSP)102、モデムプロセッサ104、グラフィクスプロセッサ106、およびアプリケーションプロセッサ108のような、いくつかの異質のプロセッサを含み得る。SOC100はまた、異質のプロセッサ102、104、106、108のうちの1つまたは複数に接続された1つまたは複数のコプロセッサ110(たとえば、ベクトルコプロセッサ)を含み得る。
各プロセッサ102、104、106、108、110は、1つまたは複数のコアを含み得、各プロセッサ/コアは、他のプロセッサ/コアとは無関係に動作を実行できる。たとえば、SOC100は、第1のタイプのオペレーティングシステム(たとえば、FreeBSD、LINUX、OS Xなど)を実行するプロセッサ、および第2のタイプのオペレーティングシステム(たとえば、Microsoft Windows 8)を実行するプロセッサを含み得る。さらに、各プロセッサ102、104、106、108、110は、SOC100のノイズフロアを上げる補助動作を含む様々な難読化動作を実行するように構成され得る。プロセッサ102、104、106、108、110は、自然な難読化のレベルを検出し、測定し、報告するように構成される測定可能な構成要素でもよい。
SOC100はまた、センサーデータ、アナログデジタル変換、ワイヤレスデータ送信を管理し、ゲームおよび映画用の符号化されたオーディオ信号を処理することのような他の特殊な動作を実行するための、アナログ回路およびカスタム回路114を含み得る。SOC100は、電圧調整器、発振器、位相ロックループ、周辺ブリッジ、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、ならびに、コンピューティングデバイス上で実行しているプロセッサおよびクライアントをサポートするために使用される他の同様の構成要素など、システム構成要素およびリソース116をさらに含み得る。様々な態様では、これらの構成要素/リソースの一部または全部は、難読化をSOC100に導入し、および/または動作を実行するとき、自然な難読化のレベルを検出し、測定し、報告するように起動または制御され得る。
リソース/システム構成要素116およびカスタム回路114は、カメラ、電子ディスプレイ、ワイヤレス通信デバイス、外部メモリチップなどの周辺デバイスとインターフェースする回路を含み得る。プロセッサ102、104、106、108は、再構成可能な論理ゲートのアレイを含み、かつ/またはバスアーキテクチャ(たとえば、CoreConnect、AMBAなど)を実装し得る、相互接続/バスモジュール124を介して、1つまたは複数のメモリ要素112、システム構成要素、およびリソース116、ならびにカスタム回路114に相互接続され得る。通信は、高性能ネットワークオンチップ(NoCs)などの高度な相互接続によって提供され得る。
SOC100は、クロック118および電圧調整器120のような、SOCの外部のリソースと通信するための入力/出力モジュール(図示せず)をさらに含み得る。SOCの外部のリソース(たとえば、クロック118、電圧調整器120)は、内部SOCプロセッサ/コア(たとえば、DSP102、モデムプロセッサ104、グラフィックプロセッサ106、アプリケーションプロセッサ108など)のうちの2つ以上によって共有され得る。
SOC100はまた、スピーカー、ユーザインターフェース要素(たとえば、入力ボタン、タッチスクリーンディスプレイなど)、マイクロフォンアレイ、物理条件(たとえば、ロケーション、方向、動き、方位、振動、圧力など)を監視するためのセンサー、カメラ、コンパス、全地球測位システム(GPS)受信機、通信回路(たとえば、Bluetooth(登録商標)、WLAN、WiFiなど)、および近代的な電子デバイスの他のよく知られている構成要素(たとえば、加速度計など)を含む、センサーからセンサーデータを収集するのに好適なハードウェアおよび/またはソフトウェアの構成要素を含み得る。様々な態様では、SOC100のハードウェアおよびソフトウェア構成要素の一部または全部は、難読化をSOC100に導入し、および/または自然な難読化のレベルを検出し、測定し、報告するように構成、起動または制御され得る。
図2は、機械学習技法を使用して、サイドチャネル攻撃から守るために難読化動作を実行すべきかどうかを判定するように構成された包括的な挙動監視および分析システムを含む態様コンピューティングデバイス200における例示的な論理構成要素および情報フローを示す。図2に示された例では、コンピューティングデバイス200は、挙動観測器モジュール202と、挙動分析器モジュール204と、アクチュエータモジュール206と、難読化モジュール208とを含む。
モジュール202〜208の各々は、ソフトウェア、ハードウェアまたはそれらの任意の組合せで実装され得る。様々な態様では、モジュール202〜208は、オペレーティングシステムの一部の中(たとえば、カーネル内、カーネル空間内、ユーザ空間内など)、個別のプログラムもしくはアプリケーションの中、専用のハードウェアバッファもしくはプロセッサの中、またはそれらの任意の組合せで実装され得る。一態様では、モジュール202〜208のうちの1つまたは複数は、コンピューティングデバイス200の1つまたは複数のプロセッサ上で実行されるソフトウェア命令として実装され得る。
挙動観測器モジュール202は、デバイスの様々なレベル/モジュールでアプリケーションプログラミングインターフェース(API)を計測し、計測されたAPIを介してある時間期間にわたって様々なレベル/モジュールでアクティビティ、条件、動作、およびイベント(たとえば、システムイベント、状態変化など)を監視するように構成され得る。挙動観測器モジュール202は、監視されたアクティビティ、条件、動作、またはイベントに関係する挙動情報を収集し、収集された情報をメモリ(たとえば、ログファイルなど)に記憶することができる。挙動観測器モジュール202は、収集された情報に基づいて挙動ベクトルを生成し、分析のために挙動分析器モジュール204に挙動ベクトルを送る(たとえば、メモリ書込み、関数呼出しなどを介して)ように構成されてもよい。
挙動分析器モジュール204は、記憶された挙動情報を使用して、挙動ベクトルを生成し、生成または受信された挙動ベクトルを分類器モジュールに適用して、経時的なデバイスの劣化に寄与する(または寄与しそうである)、および/または場合によってはデバイスに問題を引き起こす可能性があるサブシステム、プロセス、および/またはアプリケーションを特定するように構成され得る。これらの動作の一部として、挙動分析器モジュール204は、コンピューティングデバイス200がサイドチャネル攻撃に対して脆弱であるかどうかを判定することもできる。たとえば、挙動分析器モジュール204は、アクティビティが進行中のクリティカルアクティビティであるかどうか、および/または、進行中のクリティカルアクティビティの間、コンピューティングデバイスをサイドチャネル攻撃から保護するのに十分な自然な難読化があるかどうかを判定することができる。
挙動分析器モジュール204は、アクティビティもしくは挙動が良性でない、アクティビティ/挙動が進行中のクリティカルアクティビティである、および/または、サイドチャネル攻撃を防止するのに十分な自然な難読化がシステムにあるかどうかをアクチュエータモジュール206に通知し得る。それに応答して、アクチュエータモジュール206は、識別された問題をなおす、解決する、特定する、またはさもなければ修正するために、様々なアクションまたは動作を実行することができる。たとえば、アクチュエータモジュール206は、挙動ベクトルを機械学習分類器モデルに適用する(たとえば、分析器モジュールによって)結果が、ソフトウェアアプリケーションまたはプロセスが良性でないことを示すとき、ソフトウェアアプリケーションまたはプロセスを終了するように構成され得る。
加えて、挙動分析器モジュール204および/またはアクチュエータモジュール206は、監視されたアクティビティが、サイドチャネル攻撃に対して脆弱な進行中のクリティカルアクティビティであること、および/または、コンピューティングデバイス200が進行中のクリティカルアクティビティを実行する間、サイドチャネル攻撃を防止するのに十分な自然な難読化がシステムに存在しないことを難読化モジュール208に通知するように構成され得る。不明瞭化モジュール208は、コンピューティングデバイスのノイズフロアを上げるための動作を含む、デバイスをサイドチャネル攻撃から保護するために多種多様な難読化動作を実行するように構成され得る。たとえば、難読化モジュール208は、様々なハードウェア構成要素(たとえば、送風機、コプロセッサなど)を起動させる、またはノイズ信号を生成する補助動作を実行することができる。難読化モジュール208は、コンピューティングデバイス200によって放出されるノイズ信号の数、ボリューム、および/または強度を増加させる動作を実行することもできる。一態様では、難読化モジュール208は、進行中のクリティカルアクティビティの実行の間、追加の難読化をシステムに導入するだけであるように難読化動作を実行するように構成され得る。難読化モジュール208は、進行中のクリティカルアクティビティの間、コンピューティングデバイスをサイドチャネル攻撃から保護するのに十分な自然な難読化がないとき、追加のまたは人工の難読化を導入するだけであるように、難読化動作を実行するようにも構成され得る。
挙動観測器モジュール202は、コンピューティングデバイス200のアクティビティおよび/またはコンピューティングデバイス200の測定可能な構成要素によって生成される自然な難読化(たとえば、ノイズ)の現在のレベルを監視するように構成され得る。様々な態様では、これは、コンピューティングデバイス200の様々なソフトウェアおよびハードウェア構成要素を監視し、コンピューティングデバイス200のアクティビティに関連付けられた監視されたおよび測定可能な構成要素の通信、トランザクション、イベント、または動作に関係する情報を収集することによって達成され得る。そのようなアクティビティは、動作またはタスクのソフトウェアアプリケーションの性能、コンピューティングデバイス200の処理コアにおけるソフトウェアアプリケーションの実行、プロセスの実行、タスクまたは動作の実行、デバイスの挙動、ハードウェア構成要素の使用などを含む。
様々な態様では、挙動観測器モジュール202は、アプリケーションフレームワークまたはランタイムライブラリ、システムコールAPI、ファイルシステムおよびネットワーキングサブシステム動作、デバイス(センサーデバイスを含む)状態変化、ならびに他の同様の事象内のライブラリAPIコールに関する情報を収集することによって、コンピューティングデバイス200のアクティビティを監視するように構成され得る。さらに、挙動観測器モジュール202は、ファイルシステムの活動を監視することができ、ファイルシステムの活動は、ファイル名、ファイルアクセスのカテゴリ(個人情報または通常のデータファイル)を探索すること、ファイル(たとえば、type exe、zipなど)を作成または削除すること、ファイル読出し/書込み/探索動作、ファイルパーミッションを変更することなどを含み得る。
挙動観測器モジュール202はまた、接続の種類、プロトコル、ポート番号、デバイスが接続されるサーバ/クライアント、接続の数、通信の量または頻度などを含み得るデータネットワークアクティビティを監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。挙動観測器モジュール202は、電話ネットワーク活動を監視することができ、電話ネットワーク活動は、送出された、受信された、または傍受された通話またはメッセージ(たとえば、SMSなど)の種類および数(たとえば、かけられたプレミアムコールの数)を監視することを含み得る。
挙動観測器モジュール202はまた、フォークの数、メモリアクセス動作、開かれたファイルの数などを監視することを含み得るシステムリソースの使用を監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。挙動観測器モジュール202は、ディスプレイがオンかまたはオフか、デバイスがロックされているかまたはロックされていないか、バッテリーの残量、カメラの状態などの様々な要因を監視することを含み得る、コンピューティングデバイス200の状態を監視することができる。挙動観測器モジュール202はまた、たとえば、重要なサービス(ブラウザ、契約プロバイダなど)に対する意図、プロセス間通信(IPC)の程度、ポップアップウィンドウなどを監視することによって、プロセス間通信を監視することができる。
挙動観察器モジュール202はまた、カメラ、センサー、電子ディスプレイ、WiFi通信構成要素、データコントローラ、メモリコントローラ、システムコントローラ、アクセスポート、タイマー、周辺デバイス、ワイヤレス通信構成要素、外部メモリチップ、電圧レギュレータ、発振器、フェーズロックループ、周辺ブリッジ、ならびに、プロセッサ、およびコンピューティングデバイス200上で動作するクライアントをサポートするために使用される他の同様の構成要素を含み得る、1つまたは複数のハードウェア構成要素のドライバの統計データおよび/またはステータスを監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。
挙動観測器モジュール202はまた、コンピューティングデバイス200および/またはコンピューティングデバイスのサブシステムの状態またはステータスを示す、1つまたは複数のハードウェアカウンタを監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。ハードウェアカウンタは、コンピューティングデバイス200中で発生するハードウェア関連の活動またはイベントのカウント値または状態を記憶するように構成されたプロセッサ/コアの専用レジスタを含み得る。
挙動観測器モジュール202はまた、ソフトウェアアプリケーションの活動または動作、アプリケーションダウンロードサーバ(たとえば、Apple(登録商標)のApp Storeサーバ)からのソフトウェアダウンロード、ソフトウェアアプリケーションによって使用されるコンピューティングデバイス情報、呼情報、テキストメッセージング情報(たとえば、SendSMS、BlockSMS、ReadSMSなど)、メディアメッセージング情報(たとえば、ReceiveMMS)、ユーザアカウント情報、位置情報、カメラ情報、加速度計情報、ブラウザ情報、ブラウザベースの通信の内容、音声ベースの通信の内容、短距離無線通信(たとえば、Bluetooth(登録商標)、WiFiなど)、テキストベースの通信の内容、記録されたオーディオファイルの内容、電話帳または連絡先情報、連絡先リストなどを監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。
挙動観測器モジュール202は、ボイスメールを含む通信(VoiceMailComm)、デバイス識別子を含む通信(DeviceIDComm)、ユーザアカウント情報を含む通信(UserAccountComm)、カレンダー情報を含む通信(CalendarComm)、位置情報を含む通信(LocationComm)、記録されたオーディオ情報を含む通信(RecordAudioComm)、加速度計情報を含む通信(AccelerometerComm)などを含む、コンピューティングデバイス200の送信または通信を監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。
挙動観測器モジュール202は、コンパス情報、コンピューティングデバイスの設定、バッテリー持続時間、ジャイロスコープ情報、圧力センサー、磁気センサー、スクリーン活動などの使用とそれらに対する更新/変更とを監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。挙動観測器モジュール202は、ソフトウェアアプリケーションとの間で通信される通知(AppNotifications)、アプリケーション更新などを監視することができる。挙動観測器モジュール202は、第2のソフトウェアアプリケーションのダウンロードおよび/またはインストールを要求している第1のソフトウェアアプリケーションに関する条件または事象を監視することができる。挙動観測器モジュール202は、パスワードの入力のような、ユーザ検証に関する条件または事象を監視することができる。
挙動観測器モジュール202はまた、アプリケーションレベル、無線レベル、およびセンサーレベルを含む、コンピューティングデバイス200の複数のレベルにおいて、条件または事象を監視することによって、コンピューティングデバイス200のアクティビティを監視することもできる。アプリケーションレベルの観測には、顔認識ソフトウェアを介してユーザを観測すること、ソーシャルストリームを観測すること、ユーザによって入力された注釈を観測すること、PassBook(登録商標)、Google(登録商標) Wallet、Paypal(登録商標)、および他の類似のアプリケーションまたはサービスの使用に関するイベントを観測することなどが含まれ得る。アプリケーションレベルの観察には、仮想プライベートネットワーク(VPN)の使用に関するイベント、および同期、音声探索、音声制御(たとえば、1語を発することによる電話のロック/アンロック)、言語翻訳機、計算用のデータのオフローディング、ビデオストリーミング、ユーザ活動なしでのカメラの使用、ユーザ活動なしでのマイクロフォンの使用などに関するイベントを観察することも含まれ得る。
無線レベルの観測には、無線通信リンクを確立するかまたは情報を送信する前のコンピューティングデバイス200とのユーザの対話、デュアル/マルチ加入者識別モジュール(SIM)カード、インターネット無線、モバイルフォンテザリング、計算のためのデータのオフロード、デバイス状態通信、ゲームコントローラまたはホームコントローラとしての使用、車両通信、コンピューティングデバイス同期などのうちのいずれかまたは複数の存在、実在、または量を決定することが含まれ得る。無線レベルの観測にはまた、測位、ピアツーピア(p2p)通信、同期、車両対車両通信、および/または機械対機械(m2m)のための、無線(WiFi、WiMax、Bluetooth(登録商標)など)の使用を監視することも含まれ得る。無線レベルの観測には、ネットワークトラフィックの使用、統計量、またはプロファイルを監視することがさらに含まれ得る。
センサーレベルの観察には、コンピューティングデバイス200の使用環境および/または外部環境を判断するために、磁気センサーまたは他のセンサーを監視することが含まれ得る。たとえば、コンピューティングデバイスプロセッサは、デバイスが(たとえば、ホルスタ内の磁石を検知するように構成された磁石センサーを介して)ホルスタ内にあるか、または(たとえば、カメラもしくは光センサーによって検出される光の量を介して)ユーザのポケット内にあるかを判断するように構成される場合がある。たとえば、コンピューティングデバイス200がホルスタに入れられている間に発生する、ユーザによるアクティブな使用(たとえば、写真またはビデオを撮ること、メッセージを送ること、音声通話を行うこと、音を録音することなど)に関する活動および機能は、(たとえば、ユーザを追跡またはスパイするために)デバイス上で実行されている不正なプロセスのサインである可能性があるので、コンピューティングデバイス200がホルスタ内にあることを検出することは、疑わしい挙動を認識することに関係する場合がある。
使用環境または外部環境に関するセンサーレベルの観測の他の例には、NFCシグナリングを検出すること、クレジットカードスキャナ、バーコードスキャナ、またはモバイルタグリーダーから情報を収集すること、ユニバーサルシリアルバス(USB)電力充電源の存在を検出すること、キーボードまたは補助デバイスがコンピューティングデバイス200に結合されていることを検出すること、コンピューティングデバイス200が(たとえば、USBなどを介して)別のコンピューティングデバイスに結合されていることを検出すること、LED、フラッシュ、フラッシュライト、または光源が変更または(たとえば、緊急シグナリングアプリケーションなどを故意に無効にして)無効化されているかどうかを決定すること、スピーカーまたはマイクロフォンがオンにされているかまたは電源投入されていることを検出すること、充電または電力供給イベントを検出すること、コンピューティングデバイス200がゲームコントローラとして使用されていることを検出することなどが含まれ得る。センサーレベルの観察には、医療もしくはヘルスケアのセンサーから、またはユーザの体をスキャンすることから情報を収集すること、USB/オーディオジャックに差し込まれた外部センサーから情報を収集すること、(たとえば、振動インターフェースなどを介して)触知センサーまたは触覚センサーから情報を収集すること、コンピューティングデバイス200の熱状態に関する情報を収集することなども含まれ得る。
監視される要因の数を管理可能レベルまで削減するために、一態様では、挙動観察器モジュール202は、コンピューティングデバイスの劣化に寄与する可能性があるすべての要因の小さいサブセットである、挙動または要因の初期セットを監視/観察することによって、粗い観察を実施するように構成され得る。一態様では、挙動観測器モジュール202は、サーバおよび/またはクラウドサービスもしくはネットワーク内の構成要素から、挙動および/または要因の初期セットを受信することができる。一態様では、挙動/要因の初期セットは、機械学習分類器モデル内で指定され得る。
各分類器モデルは、コンピューティングデバイスの挙動の特定の特徴または態様を評価するために、コンピューティングデバイスプロセッサによって使用され得る、データおよび/または情報構造(たとえば、特徴ベクトル、挙動ベクトル、構成要素リストなど)を含む挙動モデルであり得る。各分類器モデルはまた、コンピューティングデバイス内のいくつかの特徴、要因、データポイント、エントリ、API、状態、条件、挙動、アプリケーション、プロセス、動作、構成要素など(本明細書では総称して「特徴」)を監視するための決定基準を含み得る。分類器モデルは、コンピューティングデバイスにプレインストールされてよく、ネットワークサーバからダウンロードもしくは受信されてよく、コンピューティングデバイス内で生成されてよく、またはそれらの任意の組合せであってよい。分類器モデルは、クラウドソーシングソリューション、挙動モデル化技法、機械学習アルゴリズムなどを使用することによって、生成され得る。
各分類器モデルは、完全な分類器モデルまたは簡潔な分類器モデルとして類別され得る。完全な分類器モデルは、数千の特徴および数十億のエントリを含み得る大きいトレーニングデータセットに応じて生成される、ロバストなデータモデルであり得る。簡潔な分類器モデルは、特定のアクティビティが進行中のクリティカルアクティビティである、および/または特定のモバイルデバイスの挙動が良性ではないかどうかを判定することに最も関連する特徴/エントリのみを含む/テストする、縮小されたデータセットから生成された、より焦点が絞られたデータモデルであり得る。
ローカルに生成される簡潔な分類器モデルは、コンピューティングデバイスにおいて生成される簡潔な分類器モデルである。アプリケーション固有の分類器モデルは、特定のソフトウェアアプリケーションを評価することに最も関連する特徴/エントリのみを含む/テストする、焦点が絞られたデータモデルを含む分類器モデルである。デバイス固有の分類器モデルは、特定のコンピューティングデバイス内でアクティビティまたは挙動を分類することに最も関連すると決定される、コンピューティングデバイス固有の特徴/エントリのみを含む/テストする、焦点が絞られたデータモデルを含む分類器モデルである。
様々な態様では、(たとえば完全、ローカル、デバイス固有、アプリケーション固有など)本出願に記載した分類器モデルのうちのいずれかまたは全部は、「クリティカルアクティビティのモデル」または「測定可能な構成要素のモデル」を含み得、またはそれであり得る。「クリティカルアクティビティのモデル」は、アクティビティが、セキュリティが重要であり、および/またはサイドチャネル攻撃に対して脆弱であるクリティカルアクティビティであるかどうかを判定することに最も関連する特徴/エントリを含む/テストする分類器モデルであり得る。「測定可能な構成要素のモデル」は、サイドチャネル攻撃から守るのに十分な自然な難読化がシステムにあるかどうかを判定することに最も関連する特徴/エントリを含む/テストする分類器モデルであり得る。このモデルは、様々な測定値を含むことができ、および/または複数の測定可能な構成要素(すなわち、複数のセンサー、構成要素など)にわたって難読化を決定することに適した情報を含むことができる。さらに、このモデルは、評価されるセンサーごとにしきい値を含む、測定する、または使用する必要がない。
図2を参照すると、挙動分析器モジュール204は、監視されたアクティビティまたは挙動が疑わしいとの判定に応答して挙動オブザーバモジュール202に通知するように構成され得る。それに応答して、挙動観測器モジュール202は、その観測の粒度(すなわち、コンピューティングデバイスの特徴が監視される際の詳細度のレベル)を調節し、かつ/または、挙動分析器モジュール204から受け取られた情報(たとえば、リアルタイム分析動作の結果)に基づいて観測される要因/挙動を変更し、新たな情報または追加の挙動情報を生成または収集し、さらなる分析/分類のために新たな/追加の情報を挙動分析器モジュール204に送ることができる。挙動観測器モジュール202と挙動分析器モジュール204との間のそのようなフィードバック通信により、アクティビティが分類されるまで、疑わしいかもしくは性能を劣化させるコンピューティングデバイス挙動の根源が特定されるまで、処理もしくはバッテリー消費のしきい値に到達するまで、または、観測の細分性のさらなる向上から、疑わしいかもしくは性能を劣化させるコンピューティングデバイス挙動の根源が特定され得ないとコンピューティングデバイスプロセッサが決定するまで、コンピューティングデバイス200が観測の細分性を繰り返し向上させる(すなわち、より微細にもしくはより詳細に観測する)こと、または観測される特徴/挙動を変更することが可能になる。そのようなフィードバック通信により、コンピューティングデバイス200が、コンピューティングデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、コンピューティングデバイスにおいてローカルに分類器モデルを調整または修正することも可能になる。
一態様では、挙動観測器モジュール202および挙動分析器モジュール204は、限られた粗い観測結果から疑わしい挙動を特定するため、挙動を動的に判定してより詳細に観測するため、および観測のために必要な詳細さのレベルを動的に判定するために、コンピューティングシステムの挙動のリアルタイムの挙動分析を個別にまたは集合的に提供することができる。これは、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリーリソースの必要なく、コンピューティングデバイス200が問題を効率的に特定し、問題を防止することを可能にする。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、精密な監視を必要とする重要なデータリソースを特定し、重要なデータリソースと関連付けられる中間リソースを特定し、重要なデータリソースおよび中間リソースにアクセスするときにソフトウェアアプリケーションによって行われるAPIコールを監視し、APIコールによって消費または生成されるコンピューティングデバイスのリソースを特定し、ソフトウェアアプリケーションによる非良性のアクティビティを示すものとしてAPIコールのパターンを特定し、APIの特定されたパターンおよび特定されたコンピューティングデバイスのリソースに基づいて軽量挙動シグネチャを生成し、軽量挙動シグネチャを使用して挙動分析動作を実行し、ソフトウェアアプリケーションが良性であるかまたは非良性であるかを挙動分析動作に基づいて判定することによって、アクティビティまたは挙動を監視し、分析し、および/または分類するように構成され得る。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、コンピューティングデバイス上で実行されるソフトウェアアプリケーションによって最も頻繁に使用されるAPIを特定し、特定されたホットAPIの使用量に関する情報をコンピューティングデバイスのメモリ中のAPIログに記憶し、APIログに記憶されている情報に基づいて挙動分析動作を実行して正常な動作パターンと一致しない挙動を特定することによって、アクティビティまたは挙動を監視し、分析し、および/または分類するように構成され得る。一態様では、APIの複数の実施にわたって同じままである汎用的なフィールドの値が、APIの各実施に対して固有である特定のフィールドの値とは別のテーブルに記憶されるように、APIログが編成されるように、APIログは生成され得る。APIログはまた、固有のフィールドの値が、汎用的なフィールドの値を記憶する別のテーブルに対するハッシュ鍵とともにあるテーブルに記憶されるように、生成され得る。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、複数のブーストされた決定株としての変換または表現に適した有限状態機械を含む完全な分類器モデルをサーバから受信し、完全な分類器に基づいてコンピューティングデバイスにおいて簡潔な分類器モデルを生成し、コンピューティングデバイス中の簡潔な分類器モデルを使用して良性であるまたは良性ではない(すなわち、悪性である、性能を劣化させるなど)ものとしてアクティビティまたは挙動を分類することによって、アクティビティまたは挙動を監視し、分析し、および/または分類するように構成され得る。一態様では、完全な分類器モデルに基づいて簡潔な分類器モデルを生成することは、コンピューティングデバイスの過剰な量の処理リソース、メモリリソース、またはエネルギーリソースを消費することなく、アクティビティまたは挙動を分類するために評価されるべきである、固有のテスト条件の数を決定すること、ブーストされた決定株のリストを順次トラバースし、テスト条件のリストが決定された数の固有のテスト条件を含むまで、順次トラバースされたブーストされた決定株の各々に関連付けられたテスト条件をテスト条件のリストに挿入することによって、テスト条件のリストを生成すること、および、生成されたテスト条件のリストに含まれる複数のテスト条件のうちの1つをテストするブーストされた決定株のみを含むように、簡潔な分類器モデルを生成することを含む。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、コンピューティングデバイスの、能力および状態情報など、デバイス固有の情報を使用して、コンピューティングデバイスの挙動を分類することに関連のある複数のテスト条件の中のデバイス固有のテスト条件を特定し、特定されたコンピューティングデバイス固有のテスト条件のみを含む、簡潔な分類器モデルを生成し、コンピューティングデバイス内の生成された簡潔な分類器モデルを使用してコンピューティングデバイスの挙動を分類することによって、アクティビティまたは挙動を監視し、分析し、および/または分類するように構成され得る。一態様では、簡潔な分類器モデルは、コンピューティングデバイスの現在の動作状態または構成に関連のあるコンピューティングデバイス特徴を評価する決定ノードのみを含むように生成され得る。一態様では、簡潔な分類器モデルを生成することは、過剰な量のコンピューティングデバイスのリソース(たとえば、処理リソース、メモリリソース、またはエネルギーリソース)を消費することなく挙動を分類するために評価されるべきである、固有のテスト条件の数を決定すること、完全な分類器モデルの中の複数のテスト条件を順次トラバースし、テスト条件のリストが決定された数の固有のテスト条件を含むまで、コンピューティングデバイスの挙動を分類することに関連のあるテスト条件をテスト条件のリストに挿入することによって、テスト条件のリストを生成すること、および、生成されたテスト条件のリストに含まれる条件のうちの1つをテストする、完全な分類器モデルに含まれる決定ノードを含むように、簡潔な分類器モデルを生成することを含み得る。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、ソフトウェアアプリケーションまたはプロセスのアクティビティを監視し、ソフトウェアアプリケーション/プロセスのオペレーティングシステム実行状態を判定し、その間にアクティビティが監視されたソフトウェアアプリケーションもしくはプロセスのオペレーティングシステム実行状態に基づいて、アクティビティがクリティカルアクティビティであるかどうかを判定することによって、アクティビティまたは挙動を監視し、分析し、および/または分類するように構成され得る。さらなる態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、ソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態がアクティビティに関連があるかどうかを判定し、その間にアクティビティが監視されたソフトウェアアプリケーションまたはプロセスのオペレーティングシステム実行状態を特定する影の特徴値を生成し、オペレーティングシステム実行状態を特定する影の特徴値と活動を関連付ける挙動ベクトルを生成し、挙動ベクトルを使用してアクティビティがクリティカルアクティビティであるか、および/または良性でないかを判定することができる。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、ソフトウェアアプリケーションまたはプロセスのアクティビティを監視すること、ソフトウェアアプリケーション/プロセスのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態を決定すること、ならびに、アクティビティに基づいて、および/またはその間にアクティビティが監視されたソフトウェアアプリケーションのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態に基づいて、アクティビティがクリティカルアクティビティであるか、もしくは良性でないかを判定することによって、アクティビティもしくは挙動を監視し、分析し、および/または分類するように構成され得る。さらなる態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、ソフトウェアアプリケーションのアプリケーションおよびオペレーティングシステムアグノスティックな実行状態がアクティビティに関連があるかどうかを決定し、アクティビティをアプリケーションおよびオペレーティングシステムアグノスティックな実行状態に関連付ける挙動ベクトルを生成し、挙動ベクトルを使用して、アクティビティがクリティカルアクティビティであるか、および/または良性でないかを判定することができる。コンピューティングデバイスはまた、アプリケーションおよびオペレーティングシステムアグノスティックな実行状態を使用して、分類器モデル(たとえば、アプリケーション固有の分類器モデル)を選択し、挙動ベクトルを選択された分類器モデルに適用して、アクティビティがクリティカルアクティビティであるか、および/または良性でないかを判定することもできる。
様々な態様では、コンピューティングデバイス200は、アクティビティがクリティカルアクティビティであるか、および/または良性でないかを判定することに最も関連のある特徴、要因、およびデータポイントを知的にかつ効率的に特定するために、ネットワークサーバとともに働くように構成され得る。たとえば、コンピューティングデバイス200は、ネットワークサーバから完全な分類器モデルを受信し、受信された完全な分類器モデルを使用して、コンピューティングデバイスまたはコンピューティングデバイスのソフトウェアアプリケーションの特徴および機能に固有である簡潔な分類器モデル(すなわち、データ/挙動モデル)を生成するように構成され得る。コンピューティングデバイス200は、完全な分類器モデルを使用して、様々なレベルの複雑さ(または「簡潔さ」)の簡潔な分類器モデルのファミリーを生成する場合がある。簡潔な分類器モデルの最も簡潔なファミリー(すなわち、最も少数のテスト条件に基づく簡潔な分類器モデル)は、モデルが良性または非良性のいずれかとして類別することができない(したがって、モデルによって疑わしいものとして類別される)挙動に遭遇するまで、ルーチン的に適用されてよく、遭遇した時点で、よりロバストな(すなわち、より簡潔ではない)簡潔な分類器モデルが、挙動を類別する試みにおいて適用され得る。生成された簡潔な分類器モデルのファミリー内の一層ロバストな簡潔な分類器モデルの適用は、挙動の最終的な分類が達成されるまで適用され得る。このようにして、観測器モジュールおよび/または分析器モジュールは、挙動を最終的に分類するためにロバストな分類器モデルが必要とされる状況に、最も完全だがリソース集約的な簡潔な分類器モデルの使用を制限することによって、効率と精度との間でバランスをとることができる。
様々な態様では、コンピューティングデバイス200は、有限状態機械の表示/表現をブーストされた決定株に変換すること、コンピューティングデバイス固有の状態、特徴、挙動、条件、または構成に基づいて、完全な分類器モデルに含まれるブーストされた決定株の1つまたは複数のサブセットを含めるように、ブーストされた決定株の完全なセットをプルーニングまたは選別すること、および、ブーストされた決定株の1つまたは複数のサブセットを使用して、コンピューティングデバイス挙動をインテリジェントに監視、分析、かつ/または分類することによって、1つまたは複数の簡潔な分類器モデルを生成するように構成され得る。
ブーストされた決定株は、厳密に1つのノード(およびしたがって、1つのテスト質問またはテスト条件)と重み値とを有し、したがって、データ/挙動の二項分類における使用に十分に適した、1レベル決定木である。すなわち、挙動ベクトルをブーストされた決定株に適用することで、2値の答え(たとえば、YesまたはNo)がもたらされる。たとえば、ブーストされた決定株によってテストされる質問/条件が「ショートメッセージサービス(SMS)送信の頻度が毎分x回未満であるか」である場合、「3」という値をブーストされた決定株に適用することで、(「3回未満」のSMS送信に対して)「はい」の答えまたは(「3回以上」のSMS送信に対して)「いいえ」の答えのいずれかがもたらされる。
ブーストされた決定株は、非常に簡単かつ根本的である(したがって、著しい処理リソースを必要としない)ので効率的である。ブーストされた決定株はまた非常に並列化可能であり、したがって、(たとえば、コンピューティングデバイス内の複数のコアまたはプロセッサによって)多くの株が並列に/同時に適用またはテストされ得る。
一態様では、コンピューティングデバイス200は、完全な分類器モデルに含まれる分類器基準のサブセット、ならびに、コンピューティングデバイスの構成、機能、および接続される/含まれるハードウェアに関連のある特徴に対応する分類器基準のみを含む、簡潔な分類器モデルを生成するように構成され得る。コンピューティングデバイス200は、この簡潔な分類器モデルを使用して、デバイスに存在する、または関連のある特徴および機能のみを監視することができる。次いで、コンピューティングデバイスは、コンピューティングデバイスの現在の状態および構成に基づいて、様々な特徴および対応する分類器基準を含むように、または削除するように、簡潔な分類器モデルを定期的に変更または再生成することができる。
一例として、挙動分析器モジュール204は、挙動モデル(たとえば、分類器)の完全な特徴セットに関連付けられた決定株を含む大きいブーストされた決定株の分類器モデルを受信するように構成され得、挙動分析器モジュール204は、コンピューティングデバイスの現在の構成、機能、動作状態、および/または接続される/含まれるハードウェアに関連のある特徴のみを大きい分類器モデルから選択すること、ならびに、選択された特徴に対応するブーストされた決定株のサブセットを簡潔な分類器モデルに含めることによって、大きい分類器モデルから1つまたは複数の簡潔な分類器モデルを導出することができる。この態様では、コンピューティングデバイスに関連のある特徴に対応する分類器基準は、選択された特徴の少なくとも1つをテストする大きい分類器モデルに含まれるブーストされた決定株であり得る。次いで、挙動分析器モジュール204は、コンピューティングデバイスの現在の状態および構成に基づいて様々な特徴を含むように、または削除するように、ブーストされた決定株の簡潔な分類器モデルを定期的に変更または再生成することができ、その結果、簡潔な分類器モデルは、アプリケーション固有またはデバイス固有の特徴のブーストされた決定株を含め続ける。
加えて、コンピューティングデバイス200はまた、特定のソフトウェアアプリケーション(Google(登録商標) wallet)に、および/または特定のタイプのソフトウェアアプリケーション(たとえば、ゲーム、ナビゲーション、金融、ニュース、生産性など)に関連のある、条件または特徴を特定するアプリケーション固有の分類器モデルを動的に生成することもできる。一態様では、これらの分類器モデルは、完全な分類器モデルに含まれる決定ノードの、または受信された完全な分類器モデルから生成された簡潔な分類器モデルに含まれる決定ノードの、低減された、およびより焦点が絞られたサブセットを含むように生成され得る。
様々な態様では、コンピューティングデバイス200は、システム内の各ソフトウェアアプリケーションのための、および/またはシステム内のソフトウェアアプリケーションの各タイプのための、アプリケーションベースの分類器モデルを生成するように構成され得る。コンピューティングデバイス200はまた、危険性が高い、または乱用されやすいソフトウェアアプリケーションおよび/またはアプリケーションタイプ(たとえば、金融アプリケーション、ポイントオブセールアプリケーション、生体センサーアプリケーションなど)を動的に特定し、危険性が高い、または乱用されやすいものとして特定されるソフトウェアアプリケーションおよび/またはアプリケーションタイプのみのためのアプリケーションベースの分類器モデルを生成するように構成され得る。様々な態様では、コンピューティングデバイス200は、動的に、反応的に、前もって、および/または新しいアプリケーションがインストールもしくは更新されるたびに、アプリケーションベースの分類器モデルを生成するように構成され得る。
一般に、各ソフトウェアアプリケーションは、コンピューティングデバイス上でいくつかのタスクまたはアクティビティを実行する。いくつかのタスク/アクティビティがコンピューティングデバイスにおいて実行される特定の実行状態は、それがサイドチャネル攻撃に対して脆弱であり得るクリティカルアクティビティであるかどうかを判定するために、挙動またはアクティビティが、追加のまたはより詳細な精査、監視、および/または分析に値するかどうかの強いインジケータであり得る。したがって、様々な態様では、コンピューティングデバイス200は、それにおいていくつかのタスク/アクティビティが実行される実際の実行状態を特定する情報を使用して、その挙動監視および分析動作に焦点を合わせ、アクティビティがクリティカルアクティビティであるか、および/またはアクティビティが良性でないかをより良く判定するように構成され得る。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、ソフトウェアアプリケーションによって実行されたアクティビティ/タスクを、それにおいてそれらのアクティビティ/タスクが実行された実行状態に関連付けるように構成され得る。たとえば、挙動観測器モジュール202は、実行状態が関連のあるソフトウェアの特徴、アクティビティ、または動作(たとえば、ロケーションアクセス、SMS読取り動作、センサーアクセスなど)をリストするサブベクトルまたはデータ構造において、計装化構成要素を監視することから収集された挙動情報を含む、挙動ベクトルを生成するように構成され得る。一態様では、このサブベクトル/データ構造は、それにおいて各特徴/アクティビティ/動作が観測された実行状態を特定する影の特徴値サブベクトル/データ構造に関連して記憶され得る。一例として、挙動観測器モジュール202は、その値が、ソフトウェアアプリケーションがバックグラウンド状態において動作中であったときにロケーション情報にアクセスした数または割合を特定する、「location_background」データフィールドを含む、挙動ベクトルを生成し得る。これによって、挙動分析器モジュール204が、コンピューティングデバイスの他の観測された/監視されたアクティビティとは無関係に、および/またはそれと並列に、この実行状態情報を分析することが可能になる。このようにして挙動ベクトルを生成することで、システムが情報(たとえば、頻度または割合)を経時的に統合することも可能になる。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、監視されたアクティビティに関してクエリに対する回答を生成するために、機械学習分類器における決定ノードに入力され得る情報を含むために挙動ベクトルを生成するように構成され得る。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、観測/監視された挙動の簡潔な定義を含むように、挙動ベクトルを生成するように構成され得る。挙動ベクトルは、コンピューティングデバイス、ソフトウェアアプリケーション、またはプロセスの観測された挙動を、値またはベクトルデータ構造で(たとえば、数字の列などの形で)簡潔に記述することができる。挙動ベクトルはまた、コンピューティングデバイスシステムがコンピューティングデバイス挙動を迅速に認識し、特定し、かつ/または分析することを可能にする、識別子として機能することもできる。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、複数のまたは一連の数字を含むように挙動ベクトルを生成するように構成され得、これらの数字の各々がコンピューティングデバイス200の特徴、アクティビティ、または挙動を表す、または特徴付ける。たとえば、挙動ベクトルに含まれる数字は、コンピューティングデバイスのカメラが使用されているかどうか(たとえば、0または1として)、どれだけのネットワークトラフィックがモバイルデバイスから送信されたか、またはコンピューティングデバイスによって生成されたか(たとえば、20KB/秒など)、どれだけのインターネットメッセージが通信されたか(たとえば、SMSメッセージの数など)などを表すことができる。一態様では、挙動ベクトルは、1つまたは複数の「挙動の特徴」をカプセル化し得る。各挙動の特徴は、観測された挙動またはアクションのすべてまたは一部分を表す無名数であり得る。挙動の特徴は、コンピューティングデバイスのハードウェアまたはソフトウェア構成にアグノスティックであり得る。
様々な態様では、挙動観測器モジュール202および/または挙動分析器モジュール204は、実行情報を含むように、挙動ベクトルを生成するように構成され得る。実行情報は、挙動の一部(たとえば、バックグラウンドプロセスによって3秒間に5回使用されたカメラ、フォアグラウンドプロセスによって3秒間に3回使用されたカメラなど)として、または無関係の特徴の一部として、挙動ベクトル内に含まれ得る。一態様では、実行状態情報は、影の特徴値サブベクトルまたはデータ構造として、挙動ベクトル内に含まれ得る。一態様では、挙動ベクトルは、実行状態が関連のある特徴、活動、タスクに関連して、影の特徴値サブベクトル/データ構造を記憶し得る。
図3は、難読化動作を実行すべきかどうかを判定するためにコンピューティングデバイスによって使用され得る分類器モデルを生成する態様方法300を示す。方法300は、コンピューティングデバイス200の処理コアによって実行され得る。
ブロック302において、処理コアは、多数の決定ノード338を含む完全な分類器モデル352を受信または生成することができる。様々な態様では、完全な分類器モデル352は、測定可能な構成要素のモデル、クリティカルアクティビティのモデル、またはそれらの組合せとすることができる(または、それらを含むことができる)。決定ノード338は、アクティビティが進行中のクリティカルアクティビティであるかどうか、進行中のクリティカルアクティビティの間、サイドチャネル攻撃を防止するのに十分な自然な難読化があるかどうか、および/またはデバイス挙動が良性でないかどうか(すなわち、経時的なコンピューティングデバイスの性能または電力消費特性の低下に寄与する)を判定することに関連する特徴およびデータポイントのすべてまたは多くを集合的に識別し、記述し、テストし、または評価することができる。たとえば、ブロック302において、処理コアは、40個の固有の条件または特徴をテストする100個の決定ノード338を含む完全な分類器モデル352を生成することができる。
一態様では、決定ノード338は決定株(たとえば、ブーストされた決定株など)であり得る。各決定株は、1つの条件または特徴をテストする1つだけのノードを有する、1段の決定木であり得る。決定株には1つのノードしかないので、特徴ベクトルを決定株に適用することは2値の答え(たとえば、はいまたはいいえ、悪性であるまたは良性である、など)をもたらす。たとえば、決定株338bによってテストされる条件が「SMS送信の頻度が毎分x回未満であるか」である場合、「3」という値を決定株338bに適用することで、(「3回未満」のSMS送信に対して)「yes」の答えと(「3回以上」のSMS送信に対して)「no」の答えのいずれかがもたらされる。この2値の「yes」または「no」の答えが次いで、挙動が悪性/非良性である(M)または良性である(B)かのいずれかであることを示すものとして、結果を分類するために使用され得る。これらの株は非常に単純な評価(基本的に2値)であるので、各株を実行するための処理は非常に単純であり、したがってより小さい処理オーバーヘッドで迅速におよび/または並列に達成され得る。
一態様では、各決定ノード338は、試験質問に答えることからどれだけの知識が得られるか、および/または、デバイスの挙動が良性であるかどうかを処理コアが判定することを試験条件に答えることが可能にするであろう確率を示す、重み値と関連付けられ得る。決定ノード338と関連付けられた重みは、アクティビティ、挙動、ソフトウェアアプリケーション、またはコンピューティングデバイス200中のプロセスの、以前の観測または分析から収集された情報に基づいて計算され得る。一態様では、各決定ノード338と関連付けられた重みはまた、データのコーパス(たとえば、データまたは挙動ベクトルのクラウドコーパス)のどれだけ多くのユニットがノードを構築するために使用されるかに基づいて計算され得る。一態様では、重み値は、以前のデータ/挙動モデルまたは分類器の実行/適用から収集される正確さまたは性能の情報に基づいて生成され得る。
ブロック304において、処理コアは、完全な分類器モデル352に含まれる決定ノード338の焦点が絞られたサブセットを含む、簡潔な分類器モデル354を生成することができる。様々な態様では、簡潔な分類器モデル354は、測定可能な構成要素のモデル、クリティカルアクティビティのモデル、またはそれらの組合せとすることができる(または、それらを含むことができる)。ブロック304における簡潔な分類器モデル354を生成するための動作の一部として、処理コアは、完全な分類器モデル352に含まれる決定ノード338の順序付けられたまたは優先順位付けられたリストを生成することと、コンピューティングデバイスの過剰な量の処理、メモリ、またはエネルギーのリソースを消費することなく挙動を分類するために評価されるべきある数の固有の試験条件を決定することと、決定ノード338の順序付けられた/優先順位付けられたリストを順次トラバースし、試験条件のリストが決定された数の固有の試験条件を含むまで、順次トラバースされた決定ノード338の各々と関連付けられた試験条件を試験条件のリストに挿入することによって、試験条件のリストを生成することと、生成された試験条件のリストに含まれる試験条件の1つをテストする決定ノード338を優先的にまたは排他的に含む情報構造を生成することとを含み得る、特徴選択動作を実行することができる。一態様では、処理コアは、分類器モデルのファミリーの中の各モデル354が異なる数の固有の試験条件を評価するように、かつ/または異なる数の決定ノードを含むように、分類器モデルのファミリーを生成することができる。
ブロック306において、処理コアは、たとえば、アプリケーションによってコールされないまたは呼び出されないAPIまたは機能をアドレス指定する決定ノードを省略することによって、さらに、アプリケーションによってアクセスまたは変更されないデバイスリソースに関する決定ノードを省略することによって、簡潔な分類器モデル354の1つに含まれる決定ノード(すなわち、ブーストされた決定株)を削減し、選別し、または間引いて、特定のソフトウェアアプリケーション(すなわち、Google(登録商標) wallet)に関連がある条件または特徴をテストまたは評価する、簡潔な分類器モデル354の中の決定ノードを優先的にまたは排他的に含む、アプリケーション固有の分類器モデル356を生成することができる。一態様では、処理コアは、特徴の選択および選別の動作を実行することによって、アプリケーション固有の分類器モデル356を生成することができる。
様々な態様では、処理コアは、ソフトウェアアプリケーションと関連付けられるラベリング情報、アプリケーションに対する静的分析動作の実行の結果、アプリケーションのインストール時間分析の実行の結果に基づいて、ソフトウェアアプリケーションによるオペレーティングシステム、ファイル、および/またはアクセスのパーミッションを評価すること、アプリケーションのAPI使用を評価することなどによって、アプリケーション固有の分類器モデル356に含めるための決定ノード338を特定することができる。一態様では、ラベリング情報は、アクティビティ、アクティビティのタイプ、ソフトウェアアプリケーション、またはソフトウェアアプリケーションのタイプを、サイドチャネル攻撃に対して脆弱なクリティカルアクティビティである(またはそれに関連付けられている)ものとして識別することができる。処理コアは、ソフトウェアアプリケーションと関連付けられるアプリケーションストアのラベルを読み取ること、静的分析動作を実行すること、および/またはソフトウェアアプリケーションを他の同様のソフトウェアアプリケーションと比較することによって、各ソフトウェアアプリケーションのカテゴリ、種類、もしくは分類を決定し、かつ/または、アプリケーションに固有の分類器モデル356に含まれるべき決定ノード338を特定することもできる。
一態様では、ブロック306において、処理コアは、各々が異なるソフトウェアアプリケーションを評価する、複数のアプリケーション固有の分類器モデル356を生成することができる。様々な態様では、アプリケーション固有の分類器モデル356は、測定可能な構成要素のモデル、クリティカルアクティビティのモデル、またはそれらの組合せとすることができる(または、それらを含むことができる)。一態様では、処理コアは、システム中のすべてのソフトウェアアプリケーションのために、および/または、コンピューティングデバイス上で実行されるすべてのアプリケーションが固有のアクティブな分類器を有するように、アプリケーション固有の分類器モデル356を生成することができる。一態様では、ブロック306において、処理コアは、アプリケーション固有の分類器モデル356のファミリーを生成し得、アプリケーション固有の分類器モデル356のファミリーの中の各アプリケーション固有の分類器モデル356は、単一のソフトウェアアプリケーションに関連がある異なる組合せまたは数の特徴を評価することができる。
ブロック308において、処理コアは、複数のデバイス固有の分類器モデル358を生成することができ、その各々は、コンピューティングデバイス200の現在の動作状態、タイプ、または構成に関連するデバイス固有の特徴を評価する。様々な態様では、デバイス固有の分類器モデル358は、測定可能な構成要素のモデル、クリティカルアクティビティのモデル、またはそれらの組合せとすることができる(または、それらを含むことができる)。ブロック308におけるデバイス固有の分類器モデル358を生成するための動作の一部として、処理コアは、コンピューティングデバイスの処理、メモリ、またはエネルギーのリソースの量を過剰に消費することなく、アクティビティまたは挙動を分類するために評価されるべき固有のテスト条件の数を決定し、簡潔な分類器モデル354の中の複数のテスト条件を順次トラバースし、アクティビティまたは挙動を分類することに関連するそれらのテスト条件を、テスト条件のリストが決定された数の固有のテスト条件を含むまで、テスト条件のリストの中に挿入することによって、テスト条件のリストを生成し、生成されたテスト条件のリストに含まれる条件のうちの1つをテストする簡潔な分類器モデル354の中の決定ノードを含むように、デバイス固有の分類器モデル358を生成し得る。
ブロック310において、処理コアは、ローカルに生成された分類器モデル354、356、358の1つまたは任意の組合せを使用して、リアルタイムの挙動監視および分析動作を実行して、複合的なコンピューティングデバイスの挙動が良性でないか、現在のアクティビティがクリティカルアクティビティであるかどうか、および/またはサイドチャネル攻撃を防止するのに十分な自然な難読化があるかどうかを予測することができる。一態様では、コンピューティングデバイスは、複数の分類器モデル354、356、358を並列に使用または適用するように構成され得る。一態様では、処理コアは、簡潔な分類器モデル354を適用/使用することで得られる結果よりも、アプリケーションベースの分類器モデル356、デバイス固有の分類器モデル358を適用または使用することで得られる結果に、選好または優先権を与えることができる。
アプリケーションおよびデバイス固有の特徴および/または機能を考慮に入れるために、コンピューティングデバイスにおいてローカルに分類器モデルを動的に生成することによって、様々な態様は、コンピューティングデバイスが、難読化動作を実行すべきかどうかを判定するための最も重要である少数の特徴に、その監視動作の焦点を合わせることができるようにする。さらに、リアルタイム挙動監視および分析を使用して、測定可能な構成要素およびクリティカルアクティビティのモデルを含む分類器モデルを適用することによって、様々な態様は、コンピューティングデバイスが、かなりの数の追加の動作を実行することなく、難読化動作を実行すべきかどうかを知的に決定することを可能にする。このことは、コンピューティングデバイスの性能および電力消費特性を改善し、コンピューティングデバイスが過剰な量の処理、メモリ、またはエネルギーのリソースを消費することなく、リアルタイムの挙動監視および分析動作を、継続的に、またはほぼ継続的に実行することを可能にする。
図4は、難読化動作を実行すべきかどうかを判定する態様方法400を示す。方法400は、モバイルコンピューティングデバイスなど、コンピューティングデバイスの処理コアによって実行することができる。
ブロック402において、処理コアは、たとえば図2を参照しながら上記で説明した挙動観測器モジュール202の動作のいずれかを実行することによって、コンピューティングデバイスのアクティビティを監視することができる。ブロック404において、処理コアは、監視されたアクティビティを特徴付ける挙動ベクトルを生成することができる。ブロック406において、処理コアは、クリティカルアクティビティのモデルであり得る、またはそれを含み得る分類器モデルに、生成された挙動ベクトルを適用することができる。判定ブロック408において、処理コアは、監視されたアクティビティがクリティカルアクティビティであるかどうかを判定し得る。一態様では、生成された挙動ベクトルを分類器モデルに適用し、監視されたアクティビティがクリティカルアクティビティであるかどうかを判定する動作は、図2を参照しながら上記で説明した挙動分析器モジュール204によって実行され得る。一態様では、ブロック406および408において、挙動分析器モジュール204は、本出願で記載した挙動分析動作のうちのいずれかまたは全部を実行することができる。
監視されたアクティビティがクリティカルアクティビティでないとの判定(すなわち、判定ブロック408=「No」)に応答して、処理コアは、ブロック402において、コンピューティングデバイスのアクティビティを監視し続けることができる。監視されたアクティビティがクリティカルアクティビティであるとの判定(すなわち、判定ブロック408=「Yes」)に応答して、処理コアは、判定ブロック410において、監視されたアクティビティが進行中のアクティビティであるかどうか、および/または近い将来実行されそうかどうかを判定することができる。
監視されたアクティビティが進行中のアクティビティでないとの判定(すなわち、判定ブロック410=「No」)に応答して、処理コアは、ブロック402において、コンピューティングデバイスのアクティビティを監視し続けることができる。監視されたアクティビティが進行中のアクティビティであるとの判定(すなわち、判定ブロック410=「Yes」)に応答して、ブロック412において、処理コアは、コンピューティングデバイスがサイドチャネルアタックに対して脆弱である、および/または難読化が必要であると判定し、本出願に記載されている、または当技術分野で知られている難読化動作のうちのいずれかまたは全部を実行することができる。
図5は、難読化動作を実行すべきかどうかを判定する別の態様方法500を示す。方法500は、モバイルコンピューティングデバイスなど、コンピューティングデバイスの処理コアによって実行することができる。一態様では、方法500は、図4を参照して上述した方法400の後に実行され得る。
図5のブロック502において、処理コアは、コンピューティングデバイスの測定可能な構成要素よって生成される(生成されるであろう)自然な難読化のレベルを監視することができる。ブロック504において、処理コアは、自然な難読化を特徴付ける挙動ベクトルを生成することができる。ブロック506において、処理コアは、測定可能な構成要素のモデルであり得る、またはそれを含み得る分類器モデルに、挙動ベクトルを適用することができる。判定ブロック508において、処理コアは、クリティカルアクティビティの実行の間、コンピューティングデバイスをサイドチャネル攻撃から守るのに十分な自然な難読化がシステムにある(またはあるであろう)かどうかを判定することができる。コンピューティングデバイスをサイドチャネル攻撃から守るのに十分な自然な難読化がシステムにある(またはあるであろう)との判定(すなわち、判定ブロック508=「Yes」)に応答して、処理コアは、ブロック502において自然な難読化を監視し続けることができる。十分な自然な難読化がないとの判定(すなわち、判定ブロック508=「No」)に応答して、処理コアは、ブロック510において難読化動作を実行する。
図6は、難読化動作を実行すべきかどうかを判定する別の態様方法600を示す。方法600は、モバイルコンピューティングデバイスなど、コンピューティングデバイスの処理コアによって実行することができる。
ブロック602において、処理コアは、コンピューティングデバイスの現在のまたは予測される将来のアクティビティ、およびアクティビティの間、コンピューティングデバイスの測定可能な構成要素によって生成される、または生成されるであろう自然な難読化のレベルを監視することができる。ブロック604において、処理コアは、監視されたアクティビティ、およびそのアクティビティに関連付けられた自然な難読化を特徴付ける挙動ベクトルを生成することができる。ブロック606において、処理コアは、クリティカルアクティビティのモデルおよびクリティカル構成要素のモデルを含み得る1つまたは複数の分類器モデルに挙動ベクトルを適用することができる。
判定ブロック608において、処理コアは、監視されたアクティビティが進行中のクリティカルアクティビティであるかどうかを判定し得る。監視されたアクティビティが進行中のアクティビティでないとの判定(すなわち、判定ブロック608=「No」)に応答して、処理コアは、ブロック602において、アクティビティおよび/または難読化レベルを監視し続けることができる。監視されたアクティビティが進行中のクリティカルアクティビティであるとの判定(すなわち、判定ブロック608=「Yes」)に応答して、判定ブロック610において、処理コアは、クリティカルアクティビティの実行の間、サイドチャネル攻撃を防止するのに十分な難読化がシステムにあるかどうかを判定することができる。サイドチャネル攻撃を防止するのに十分な自然な難読化がシステムにあるとの判定(すなわち、判定ブロック610=「Yes」)に応答して、処理コアは、ブロック602において、アクティビティおよび/または難読化レベルを監視し続けることができる。サイドチャネル攻撃を防止するのに十分な自然な難読化がシステムにないとの判定(すなわち、判定ブロック610=「No」)に応答して、処理コアは、ブロック612において、難読化動作を実行することができる。
図7は、モバイルデバイスの挙動を分類するために簡潔な分類器モデルを使用する態様方法700を示す。方法700は、モバイルコンピューティングデバイスなど、コンピューティングデバイス中の処理コアによって実行され得る。
ブロック702において、処理コアは、観測を実行して、モバイルデバイスシステムの様々なレベルにおいて取り付けられた様々な構成要素から挙動情報を収集することができる。一態様では、これは、図2を参照しながら上記で説明した挙動観測器モジュール202を介して達成され得る。
ブロック704において、処理コアは、観測結果、収集された挙動情報、および/またはモバイルデバイスの挙動を特徴付ける、挙動ベクトルを生成することができる。ブロック706において、処理コアは、ネットワークサーバから受信された完全な分類器モデルを使用して、簡潔な分類器モデル、または複雑さ(または「簡潔さ」)のレベルが様々である簡潔な分類器モデルのファミリーを生成することができる。これを達成するために、処理コアは、完全な分類器モデル内に含まれるブーストされた決定株のファミリーを選別して、減らされた数のブーストされた決定株を含む、かつ/または限られた数の試験条件を評価する、簡潔な分類器モデルを生成することができる。
ブロック708において、処理コアは、モバイルデバイスによってまだ評価または適用されていない簡潔な分類器モデルのファミリーの中で最も簡潔な分類器モデル(すなわち、最少の数の異なるモバイルデバイスの状態、特徴、挙動、または条件に基づくモデル)を選択することができる。一態様では、これは、処理コアが分類器モデルの順位付けられたリストの中の最初の分類器モデルを選択することによって達成され得る。
ブロック710において、処理コアは、収集された挙動情報または挙動ベクトルを、選択された簡潔な分類器モデルの中の各々のブーストされた決定株に適用することができる。ブーストされた決定株は2値の決定であり、簡潔な分類器モデルは同じ試験条件に基づく多くの2値の決定を選択することによって生成されるので、簡潔な分類器モデルの中のブーストされた決定株に挙動ベクトルを適用する処理は、並列動作で実行され得る。代替的に、ブロック708において適用される挙動ベクトルは、簡潔な分類器モデル内に含まれる限られた数の試験条件パラメータをちょうど含むように切り捨てられてよく、またはフィルタリングされてよく、それによってモデルを適用する際の計算量はさらに低減される。
ブロック712において、処理コアは、収集された挙動情報を簡潔な分類器モデルの中の各々のブーストされた決定株に適用した結果の加重平均を計算または決定することができる。ブロック714において、処理コアは、計算された加重平均を、観察された挙動が良性であるもしくは良性でない可能性がある、および/またはクリティカルアクティビティであるもしくはクリティカルアクティビティでない可能性があるかどうかを示すしきい値と比較することができる。言い換えれば、ブロック714において加重平均結果に適用されるしきい値は、クリティカリティまたは脅威の堅固な分類が適用された簡潔な分類器モデルを使用して行われ得るかどうかを判定するために、処理コアによって使用され得る。
判定ブロック716において、処理コアは、この比較の結果、および/または選択された簡潔な分類器モデルを適用することによって生成された結果が、アクティビティをクリティカルであるもしくはクリティカルでないと分類する、または挙動を良性であるもしくは良性でない(言い換えれば疑わしい)と分類するかどうかを判定することができる。処理コアが、結果がアクティビティをクリティカルもしくは非クリティカルと分類することができないと判定した、または挙動が疑わしいと判定した(すなわち、判定ブロック716=「No」の)場合、処理コアは、ブロック708〜714における動作を繰り返して、挙動が高い信頼度で悪意もしくは良性であるとして分類されるまで、より多くのデバイスの状態、特徴、挙動、または条件を評価するより強い(すなわち、より簡潔ではない)分類器モデルを選択および適用することができる。言い換えれば、ブロック714の動作および判定ブロック716において、処理コアが、簡潔な分類器を適用する結果が、高度な信頼性で、アクティビティをクリティカルもしくは非クリティカルと分類する、および/または挙動を悪意もしくは良性と分類するために使用され得るかどうかを判定し、そうでない場合、より強い簡潔な分類器モデルを使用して分析を繰り返すことができる。
結果によって、処理コアが、高度な信頼性で、アクティビティをクリティカルもしくは非クリティカルと分類する、および/または挙動を悪意もしくは良性と分類することができると処理コアが判定した場合(すなわち、判定ブロック716=「Yes」)、ブロック718において、処理コアは、ブロック714において生成された比較の結果を使用して、難読化アクションの必要を評価する目的でアクティビティをクリティカルもしくは非クリティカルと分類する、および/または修正アクションをとる目的で、モバイルデバイスの挙動を良性もしくは潜在的に悪意と分類することができる。
ある代替的な態様の方法では、上で説明された動作は、簡潔な分類器モデルの中にまだ存在しないブーストされた決定株を順次選択し、選択された決定株と同じモバイルデバイスの状態、特徴、挙動または条件に依存する(およびしたがって、1つの決定結果に基づいて適用され得る)すべての他のブーストされた決定株を特定し、同じモバイルデバイスの状態、特徴、挙動または条件に依存する選択されたすべての特定された他のブーストされた決定株を簡潔な分類器モデルに含め、試験条件の決定された数に等しい回数、プロセスを繰り返すことによって、達成され得る。選択されたブーストされた決定株と同じ試験条件に依存するすべてのブーストされた決定株が毎回簡潔な分類器モデルに追加されるので、このプロセスが実行される回数を限定することは、簡潔な分類器モデルに含まれる試験条件の数を限定することになる。
上述したように、サイドチャネル攻撃に対処するために使用され得る、アクティビティを非クリティカル(この場合、難読化アクションは不要)またはクリティカル(この場合、難読化アクションの必要性の決定が行われ得る)と分類する動作は、修正アクションをとる目的で、非良性(たとえば、悪意のあるまたは性能を劣化させる)を認識するために、デバイス挙動を監視するための同じまたは類似の挙動分析プロセスを使用して達成され得る。図6を参照しながら上記で説明したように、方法600は、サイドチャネル攻撃から保護する防御アクションの可能性を識別し、防御アクションをとるための動作を示す。図8は、非良性な(たとえば、悪意のあるまたは性能を劣化させる)挙動を識別し、修正するために、動的なおよび適応的な観察を実行するための態様方法800を示す。
図8を参照すると、方法800は、たとえばモバイルコンピューティングデバイスなど、コンピューティングデバイスにおける処理コアによって実行され得る。ブロック802において、処理コアは、経時的なコンピューティングデバイスの劣化に寄与し得る多数の要因/挙動のサブセットを監視/観測することによって、粗い観測を実行することができる。ブロック804で、処理コアは、粗い観測に基づいて、粗い観測および/またはコンピューティングデバイス挙動を特徴付ける挙動ベクトルを生成することができる。ブロック806で、処理コアは、コンピューティングデバイスの劣化に潜在的に寄与し得る、粗い観測に関連付けられたサブシステム、プロセス、および/またはアプリケーションを特定することができる。これは、たとえば、複数のソースから受け取られた情報とコンピューティングデバイスのセンサーから受け取られた状況的情報とを比較することによって達成され得る。ブロック808で、処理コアは、粗い観測に基づいて挙動分析動作を実行することができる。一態様では、ブロック804および806の一部として、処理コアは、図2〜図7を参照しながら上記で説明した動作の1つまたは複数を実行することができる。
判定ブロック810で、処理コアは、疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定され修正され得るか否かを決定することができる。疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定され修正され得ると、処理コアが判定する(すなわち、判定ブロック810=「Yes」)とき、ブロック820で、処理コアは、挙動を修正するための動作を開始し、ブロック802に戻って追加の粗い観測を実行することができる。
疑わしい挙動または潜在的な問題が挙動分析の結果に基づいて特定および/または修正され得ないと処理コアが判定する(すなわち、判定ブロック810=「No」)とき、判定ブロック812において、処理コアは、問題の可能性があるかどうかを判定できる。一態様では、処理コアは、コンピューティングデバイスが潜在的な問題に遭遇することおよび/または疑わしい挙動に関与することの確率を計算し、計算された確率があらかじめ決定されたしきい値よりも大きいか否かを決定することによって、問題の可能性があると決定することができる。計算された確率があらかじめ決定されたしきい値よりも大きくない、ならびに/または、疑わしい挙動もしくは潜在的な問題が存在するおよび/もしくは検出可能である可能性はないと、処理コアが決定する(すなわち、判定ブロック812=「No」)とき、プロセッサは、ブロック802に戻って追加の粗い観測を実行することができる。
疑わしい挙動または潜在的問題が存在するおよび/または検出可能である可能性があると処理コアが判定する(すなわち、判定ブロック812=「Yes」)とき、ブロック814において、処理コアは、特定されたサブシステム、プロセス、またはアプリケーションに対して、より深いログ記録/観測または最終的なログ記録を実行することができる。ブロック816で、処理コアは、特定されたサブシステム、プロセスまたはアプリケーションに対して、より細かくより深くより詳細な観測を実行することができる。ブロック818で、処理コアは、より深くより詳細な観測に基づいて、さらなるおよび/またはより深い挙動分析を実行することができる。判定ブロック810で、処理コアは、より深い挙動分析の結果に基づいて、疑わしい挙動または潜在的な問題が特定され修正され得るか否かを再び判定することができる。より深い挙動分析の結果に基づいて疑わしい挙動または潜在的な問題が特定され修正され得ないと処理コアが判定する(すなわち、判定ブロック810=「No」)とき、詳細さのレベルが問題を特定するのに十分に微細になるまで、または、詳細さを追加しても問題が特定され得ないかまたは問題が存在しないと判定されるまで、プロセッサはブロック812〜818の動作を繰り返すことができる。
一態様では、方法800のブロック802〜818の一部として、処理コアは、限られた粗い観測結果から疑わしい挙動を特定するため、挙動を動的に判定してより詳細に観測するため、および観測のために必要とされる詳細さの正確なレベルを動的に決定するために、システムの挙動のリアルタイム挙動分析を実行することができる。これは、デバイス上で大量のプロセッサリソース、メモリリソース、またはバッテリーリソースを使用する必要なく、処理コアが問題を効率的に特定し、問題が発生するのを防止することを可能にする。
様々な態様が、種々のコンピューティングデバイス上に実装されてよく、それらの一例が図9に示されている。具体的には、図9は、態様のいずれかとともに使用するのに適したスマートフォン/携帯電話900の形式の、モバイルコンピューティングデバイスのシステムブロック図である。携帯電話900は、内部メモリ904と、ディスプレイ906と、スピーカー908とに結合された、プロセッサ902を含み得る。加えて、携帯電話900は、プロセッサ902に結合されたワイヤレスデータリンクおよび/またはセルラー電話送受信機912に接続され得る、電磁放射を送信および受信するためのアンテナ910を含み得る。携帯電話900は、通常、ユーザ入力を受け取るためのメニュー選択ボタンまたはロッカースイッチ914も含む。
一般的な携帯電話900はまた、マイクロフォンから受け取られた音をワイヤレス送信に適したデータパケットへとデジタル化し、受け取られた音のデータパケットを復号し、スピーカー908に供給され音を発生させるアナログ信号を生成する、音声符号化/復号(CODEC)回路916を含む。また、プロセッサ902、ワイヤレストランシーバ912およびCODEC916のうちの1つまたは複数は、デジタル信号プロセッサ(DSP)回路(個別に図示せず)を含み得る。携帯電話900はさらに、ワイヤレスデバイス間の低電力短距離通信のためのZigBee送受信機(すなわち、IEEE 802.15.4送受信機)、または他の同様の通信回路(たとえば、Bluetooth(登録商標)またはWiFiプロトコルなどを実装する回路)を含み得る。
上述した態様およびネットワークサーバはまた、図10に示すサーバ1000などの様々な市販のサーバデバイスにおいても実装され得る。そのようなサーバ1000は、通常、揮発性メモリ1002、およびディスクドライブ1003などの大容量の不揮発性メモリに結合された、プロセッサ1001を含む。サーバ1000はまた、プロセッサ1001に結合された、フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ1004を含んでよい。サーバ1000はまた、他の通信システムコンピュータおよびサーバに結合されたローカルエリアネットワークなどのネットワーク1005とデータ接続を確立するための、プロセッサ1001に結合されたネットワークアクセスポート1006を含み得る。
プロセッサ902、1001は、以下で説明する様々な態様の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る、任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、または1つもしくは複数の多重プロセッサチップであり得る。いくつかのモバイルデバイスでは、1つのプロセッサをワイヤレス通信機能専用にし、1つのプロセッサを他のアプリケーションの実行専用にするように、複数のプロセッサ902が設けられ得る。通常、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ102、1001にロードされる前に、内部メモリ904、1002に記憶され得る。プロセッサ902、1001は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。いくつかのサーバ内で、プロセッサ1001は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。一部の受信機デバイスでは、セキュアなメモリが、プロセッサ1001に結合された別個のメモリチップ中にあり得る。内部メモリ904、1002は、揮発性メモリ、またはフラッシュメモリなどの不揮発性メモリ、または両方の混合であり得る。本明細書においては、メモリへの一般的な言及は、内部メモリ904、1002、デバイスにつながれたリムーバブルメモリ、プロセッサ902、1001自体の内部のメモリを含む、プロセッサ902、1001によってアクセス可能なすべてのメモリを指す。
上記の方法の説明およびプロセスフロー図は、単に説明のための例として提供され、様々な態様のステップが提示された順序で実行されなければならないことを要求または意味するものではない。当業者によって諒解されるように、上記の態様におけるステップの順序は、いかなる順序で実行されてもよい。「その後」、「次いで」、「次に」などの単語は、ステップの順序を限定するものではなく、これらの単語は、単に、方法の説明を通して読者を導くために使用される。さらに、たとえば冠詞「a」、「an」、または「the」を使用する、単数形での請求項の要素に対する任意の参照は、要素を単数形に限定すると解釈されるべきではない。
本明細書で開示された態様に関して記載された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装される場合がある。ハードウェアおよびソフトウェアのこの互換性を明確に説明するために、上記では、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、それらの機能性に関して概略的に説明した。そのような機能がハードウェアとして実現されるか、ソフトウェアとして実現されるかは、特定の適用例およびシステム全体に課される設計制約によって決まる。当業者は、特定の適用例ごとに様々な方法で記載された機能を実現することができるが、そのような実施態様の決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
本明細書で開示する態様に関して説明される様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであってもよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてよい。代替的に、いくつかのステップまたは方法は、所与の機能に特有の回路によって実行されてもよい。
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶され得る。本明細書で開示する方法またはアルゴリズムのステップは、非一時的コンピュータ可読またはプロセッサ可読記憶媒体上に存在し得るプロセッサ実行可能ソフトウェアモジュール内で具現化され得る。非一時的なコンピュータ可読記憶媒体またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされる場合がある任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含んでよい。本明細書において使用されるとき、ディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。加えて、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれる場合がある、非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在する場合がある。
開示した態様の前述の説明は、任意の当業者が本発明を作成または使用することを可能にするために提供される。これらの態様に対する様々な修正は当業者には容易に明らかとなり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく、他の態様に適用され得る。したがって、本発明は、本明細書に示す態様に限定されるものではなく、以下の特許請求の範囲、ならびに本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。