特許第6196393号(P6196393)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シマンテック コーポレーションの特許一覧

特許6196393プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法
<>
  • 特許6196393-プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法 図000002
  • 特許6196393-プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法 図000003
  • 特許6196393-プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法 図000004
  • 特許6196393-プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法 図000005
  • 特許6196393-プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法 図000006
  • 特許6196393-プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6196393
(24)【登録日】2017年8月25日
(45)【発行日】2017年9月13日
(54)【発明の名称】プリインストールアプリケーションのスキャンを最適化するためのシステム及び方法
(51)【国際特許分類】
   G06F 21/56 20130101AFI20170904BHJP
【FI】
   G06F21/56
【請求項の数】15
【全頁数】24
(21)【出願番号】特願2016-552296(P2016-552296)
(86)(22)【出願日】2015年2月24日
(65)【公表番号】特表2017-511523(P2017-511523A)
(43)【公表日】2017年4月20日
(86)【国際出願番号】US2015017398
(87)【国際公開番号】WO2015130715
(87)【国際公開日】20150903
【審査請求日】2016年8月13日
(31)【優先権主張番号】14/190,471
(32)【優先日】2014年2月26日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】501113353
【氏名又は名称】シマンテック コーポレーション
【氏名又は名称原語表記】Symantec Corporation
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100134119
【弁理士】
【氏名又は名称】奥町 哲行
(72)【発明者】
【氏名】マオ・ジュン
【審査官】 上島 拓也
(56)【参考文献】
【文献】 特開2006−350955(JP,A)
【文献】 特開2006−172463(JP,A)
【文献】 特開2006−172376(JP,A)
【文献】 特表2013−540303(JP,A)
【文献】 米国特許第08533830(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
プリインストールアプリケーションのスキャンを最適化するためのコンピュータ実装方法であって、前記方法の少なくとも一部が少なくとも1つのプロセッサを備えるコンピューティングデバイスによって実行され、前記方法が、
クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別することと、
前記複数のアプリケーションが前記クライアントデバイスのシステムイメージを介して前記クライアントデバイスにプリインストールされたことを判定することと、
前記システムイメージを表すフィンガープリントを生成することと、
前記システムイメージを表す前記フィンガープリントを査定サーバに送信するとともにそれに応じて前記システムイメージの査定を受信することによって、前記複数のアプリケーションに対して前記スキャンベースの査定を遂行することと、
を含む、方法。
【請求項2】
前記スキャンベースの査定が、
前記複数のアプリケーションの内のアプリケーションがマルウェアを含むかどうかの査定と、
前記複数のアプリケーションの内のアプリケーションのパフォーマンス査定と、のうち少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記スキャンベースの査定が、前記アプリケーションが前記クライアントデバイスの特徴にアクセスできるようにする、前記クライアントデバイスの前記アプリケーションに割り当てられた許可に基づく前記複数のアプリケーションの内のアプリケーションの査定を含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記システムイメージの発行元のみが、前記複数のアプリケーションの内の任意のアプリケーションを修正するように許可されている、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記クライアントデバイスで、少なくとも1つのスキャンベースの査定の対象となる個別アプリケーションを識別することと、
前記個別アプリケーションが前記クライアントデバイスの前記システムイメージを介して前記クライアントデバイスにプリインストールされなかったことを判定することと、
前記個別アプリケーションが前記クライアントデバイスの前記システムイメージを介して前記クライアントデバイスにプリインストールされなかったことを判定したことに基づいて、前記個別アプリケーションを表し、他のいかなるアプリケーションも表さない個別フィンガープリントを生成することと、
前記個別アプリケーションを表す前記個別フィンガープリントを前記査定サーバに送信するとともにそれに応じて前記個別アプリケーションの査定を受信することによって、前記個別アプリケーションに対して前記スキャンベースの査定を遂行することと、
を更に含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記システムイメージの前記査定が、前記複数のアプリケーションの内の個別アプリケーションの査定を含み、
前記個別アプリケーションの前記査定が、前記個別アプリケーションが改善措置の対象となることを指摘する、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記改善措置を実行することを更に含む、請求項6に記載のコンピュータ実装方法。
【請求項8】
前記個別アプリケーションの前記査定に基づいて、前記システムイメージを表す前記フィンガープリントを前記査定サーバに送信することが、前記複数のアプリケーションに対して後続のスキャンベースの査定を遂行するのに十分ではないと判定することと、
前記システムイメージを表す前記フィンガープリントを前記査定サーバに送信することが、前記後続のスキャンベースの査定を遂行するのに十分ではないと判定したことに応じて、前記複数のアプリケーションの内のアプリケーションそれぞれに対する個別フィンガープリントを前記査定サーバに送信することによって、前記複数のアプリケーションに対して前記後続のスキャンベースの査定を遂行することと、を更に含む、請求項6に記載のコンピュータ実装方法。
【請求項9】
前記システムイメージを表す前記フィンガープリントを生成することが、前記複数のアプリケーションの内のアプリケーションそれぞれに対する個別フィンガープリントを結合することを含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記システムイメージを表す前記フィンガープリントを生成することが、前記フィンガープリントを生成するための入力として、前記システムイメージを検証するため前記システムイメージとともに含まれる公開鍵を使用することを含む、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記システムイメージを表す前記フィンガープリントを生成することが、前記システムイメージのバージョン及び前記システムイメージのビルド番号に基づいて前記フィンガープリントを生成することを含む、請求項1に記載のコンピュータ実装方法。
【請求項12】
プリインストールアプリケーションのスキャンを最適化するためのシステムであって、前記システムが、
クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別する、メモリに記憶される識別モジュールと、
前記複数のアプリケーションが前記クライアントデバイスのシステムイメージを介して前記クライアントデバイスにプリインストールされたことを判定する、メモリに記憶される判定モジュールと、
前記システムイメージを表すフィンガープリントを生成する、メモリに記憶される生成モジュールと、
前記システムイメージを表す前記フィンガープリントを査定サーバに送信するとともにそれに応じて前記システムイメージの査定を受信することによって、前記複数のアプリケーションに対して前記スキャンベースの査定を遂行する、メモリに記憶される遂行モジュールと、
前記識別モジュール、前記判定モジュール、前記生成モジュール、及び前記遂行モジュールを実行する少なくとも1つの物理プロセッサと、を備える、システム。
【請求項13】
前記スキャンベースの査定が、
前記複数のアプリケーションの内のアプリケーションがマルウェアを含むかどうかの査定と、
前記複数のアプリケーションの内のアプリケーションのパフォーマンス査定と、のうち少なくとも1つを含む、請求項12に記載のシステム。
【請求項14】
前記スキャンベースの査定が、前記アプリケーションが前記クライアントデバイスの特徴にアクセスできるようにする、前記クライアントデバイスの前記アプリケーションに割り当てられた許可に基づく前記複数のアプリケーションの内のアプリケーションの査定を含む、請求項12に記載のシステム。
【請求項15】
前記システムイメージの発行元のみが、前記複数のアプリケーションの内の任意のアプリケーションを修正することが許可されている、請求項12に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
消費者及び企業は、コンピューティングデバイスの安定性及びパフォーマンス、並びにそのデータのセキュリティを脅かす、悪意あるソフトウェアの増加の流れに直面している。悪意ある動機をもつコンピュータプログラマは、コンピューティングデバイスを危殆化することを狙い、ウイルス、トロイの木馬、ワーム、及び他のプログラム(まとめて「マルウェア」として知られる)を作成してきた。そしてそれらを引き続き作成している。検出を回避しようとして、悪意あるプログラマはマルウェアを正規のプログラムの中に、又はそのプログラムの間に注入することができる。
【0002】
多くのセキュリティソフトウェア会社は、定期的にマルウェアシグネチャ(例えば、マルウェアを一意的に識別するハッシュ関数)を作成し、それを自身の顧客に配備することによって、マルウェアに対抗しようと試みる。しかしながら、シグネチャベースのセキュリティ査定を実行すると、特に、ネットワークリソース及び他の計算リソースの供給が限られているモバイルコンピューティングデバイスの場合には、かなりの量のコンピューティングリソースを消費することがある。更に、モバイルコンピューティングデバイスを含む多くのコンピューティングシステムは、いくつかのプリインストールアプリケーションに付属することがあり、それによって、モバイルコンピューティングデバイスと、このモバイルコンピューティングデバイスにインストールされたアプリケーションに対するセキュリティ査定を供給するセキュリティサーバの両方に計算負担をかけることがある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
したがって、本開示は、プリインストールアプリケーションのスキャンを最適化するための追加の、かつ改善されたシステム及び方法に対する必要性を識別し、それに対処するものである。
【課題を解決するための手段】
【0004】
詳細に後述するように、本開示は、システムイメージに含まれるプリインストールアプリケーションそれぞれに対して別個のルックアップを実行する代わりに、システムイメージの査定を検索するためシステムイメージに対して単一のルックアップを実行することによって、プリインストールアプリケーションのスキャンを最適化するための様々なシステム及び方法を記載する。
【0005】
一実施例では、プリインストールアプリケーションのスキャンを最適化するためのコンピュータ実装方法は、(1)クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別することと、(2)複数のアプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされたことを判定することと、(3)システムイメージを表すフィンガープリントを生成することと、(4)システムイメージを表すフィンガープリントを査定サーバに送信するとともにそれに応じてシステムイメージの査定を受信することによって、複数のアプリケーションに対してスキャンベースの査定を遂行することと、を含むことができる。
【0006】
いくつかの実施例では、スキャンベースの査定は、(1)複数のアプリケーションの内のアプリケーションがマルウェアを含むかどうかの査定、及び/又は(2)複数のアプリケーションの内のアプリケーションのパフォーマンス査定を含むことができる。いくつかの実施形態では、スキャンベースの査定が、アプリケーションがクライアントデバイスの特徴にアクセスできるようにする、クライアントデバイスのアプリケーションに割り当てられた許可に基づく複数のアプリケーションの内のアプリケーションの査定を含むことができる。いくつかの実施例では、発行元のみが複数のアプリケーションの内の任意のアプリケーションを修正することが許可され得る。
【0007】
いくつかの実施形態では、方法はまた、(1)クライアントデバイスで、少なくとも1つのスキャンベースの査定の対象となる個別アプリケーションを識別することと、(2)個別アプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされなかったことを判定することと、(3)個別アプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされなかったことを判定したことに基づいて、個別アプリケーションを表し、他のいかなるアプリケーションも表さない個別フィンガープリントを生成することと、(4)個別アプリケーションを表すフィンガープリントを査定サーバに送信するとともにそれに応じて個別アプリケーションの査定を受信することによって、個別アプリケーションに対してスキャンベースの査定を遂行することと、を含むことができる。
【0008】
いくつかの実施例では、(1)システムイメージの査定は、複数のアプリケーションの内の個別アプリケーションの査定を含むことができ、(2)個別アプリケーションの査定は、個別アプリケーションが改善措置の対象となることを指摘することができる。これらの実施例では、方法はまた改善措置を実行することを含むことができる。加えて又は代わりに、これらの実施例では、方法はまた、(1)システムイメージを表すフィンガープリントを査定サーバに送信することが、複数のアプリケーションに対して後続のスキャンベースの査定を遂行するのに十分でないことを、個別アプリケーションの査定に基づいて判定することと、(2)システムイメージを表すフィンガープリントを査定サーバに送信することが、後続のスキャンベースの査定を遂行するのに十分でないと判定したことに応じて、複数のアプリケーションの内のアプリケーションそれぞれに対して個別フィンガープリントを査定サーバに送信することによって複数のアプリケーションに対して後続のスキャンベースの査定を遂行することと、を含むことができる。
【0009】
いくつかの実施形態では、システムイメージを表すフィンガープリントを生成することが、複数のアプリケーションの内のアプリケーションそれぞれに対する個別フィンガープリントを結合することを含むことができる。加えて又は代わりに、システムイメージを表すフィンガープリントを生成することが、フィンガープリントを生成するための入力として、システムイメージを検証するためシステムイメージとともに含まれる公開鍵を使用することを含むことができる。いくつかの実施例では、システムイメージを表すフィンガープリントを生成することが、システムイメージのバージョン及びシステムイメージのビルド番号に基づいてフィンガープリントを生成することを含むことができる。
【0010】
一実施形態では、上述した方法を実行するためのシステムは、(1)クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別する、メモリに記憶される識別モジュールと、(2)この複数のアプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされたことを判定する、メモリに記憶される判定モジュールと、(3)システムイメージを表すフィンガープリントを生成する、メモリに記憶される生成モジュールと、(4)システムイメージを表すフィンガープリントを査定サーバに送信するとともにそれに応じてシステムイメージの査定を受信することによって、複数のアプリケーションに対してスキャンベースの査定を遂行する、メモリに記憶される遂行モジュールと、(5)識別モジュール、判定モジュール、生成モジュール、及び遂行モジュールを実行する少なくとも1つの物理プロセッサと、を含むことができる。
【0011】
いくつかの実施例では、上述の方法は、非一時的コンピュータ可読媒体上のコンピュータ可読命令として、コード化され得る。例えば、コンピュータ可読媒体は、コンピューティングデバイスの少なくとも1つのプロセッサによって実行されるとき、コンピューティングデバイスに(1)クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別することと、(2)複数のアプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされたことを判定することと、(3)システムイメージを表すフィンガープリントを生成することと、(4)システムイメージを表すフィンガープリントを査定サーバに送信するとともにそれに応じてシステムイメージの査定を受信することによって、複数のアプリケーションに対してスキャンベースの査定を遂行することと、を行わせる、1つ以上のコンピュータ実行可能命令を含むことができる。
【0012】
本明細書に記載される一般原理に従い、上記の実施形態のうち任意による特徴を互いに組み合わせて使用することができる。これら及び他の実施形態、特徴、及び利点は、添付の図面及び特許請求の範囲と併せて以下の発明を実施するための形態を読むことによって更に十分に理解されるだろう。
【図面の簡単な説明】
【0013】
添付の図面は、多数の例示的な実施形態を示すものであり、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示の様々な原理を実証及び説明する。
図1】プリインストールアプリケーションのスキャンを最適化するための例示的なシステムのブロック図である。
図2】プリインストールアプリケーションのスキャンを最適化するための、追加の例示的なシステムのブロック図である。
図3】プリインストールアプリケーションのスキャンを最適化するための、例示的なシステムのフローチャートである。
図4】プリインストールアプリケーションのスキャンを最適化するための、追加の例示的なシステムのブロック図である。
図5】本明細書に記載及び/又は図示される実施形態のうち1つ以上を実装することができる例示的なコンピューティングシステムのブロック図である。
図6】本明細書に記載及び/又は図示される実施形態のうち1つ以上を実装することができる例示的なコンピューティングネットワークのブロック図である。
【0014】
図面を通して、同一の参照符号及び記述は、必ずしも同一ではないが、類似の要素を示す。本明細書に記載される例示的な実施形態は、様々な変更例及び代替的な形態が可能であるが、特定の実施形態が例として図面に示されており、本明細書において詳細に記載されることとなる。しかしながら、本明細書に記載される例示的な実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲内にある全ての変更例、均等物、及び代替物を網羅する。
【発明を実施するための形態】
【0015】
本開示は、一般にプリインストールアプリケーションのスキャンを最適化するためのシステム及び方法を対象とする。詳細に後述するように、システムイメージに含まれるプリインストールアプリケーションそれぞれに対して別個のルックアップを実行する代わりに、システムイメージの査定を検索するためシステムイメージに対して単一のルックアップを実行することによって、本明細書に記載されるシステム及び方法は、プリインストールアプリケーションを有するコンピューティングデバイスとこのコンピューティングデバイスにインストールされたアプリケーションに対するセキュリティ査定を供給するセキュリティサーバの両方における計算負担を低減することができる。
【0016】
以下に、図1図2、及び図4を参照して、プリインストールアプリケーションのスキャンを最適化するための例示的なシステムを詳細に説明する。対応するコンピュータ実装方法の詳細な説明も、図3に関連して提供される。更に、本明細書に記載される実施形態のうち1つ以上を実装することができる例示的なコンピューティングシステム及びネットワークアーキテクチャの詳細な説明が図5及び図6に関連してそれぞれ提供されることとなる。
【0017】
図1は、プリインストールアプリケーションのスキャンを最適化するための、例示的なシステム100のブロック図である。この図面に示すように、例示的なシステム100は、1つ以上のタスクを実行するための1つ以上のモジュール102を備えてもよい。例えば、詳細に後述するように、例示的なシステム100は、(1)クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別する、メモリに記憶される識別モジュール104と、(2)この複数のアプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされたことを判定する、メモリに記憶される判定モジュール106と、(3)システムイメージを表すフィンガープリントを生成する、メモリに記憶される生成モジュール108と、(4)システムイメージを表す前記フィンガープリントを査定サーバに送信するとともにそれに応じてシステムイメージの査定を受信することによって、複数のアプリケーションに対してスキャンベースの査定を遂行する、メモリに記憶される遂行モジュール110と、を含むことができる。別々の要素として示すが、図1のモジュール102のうち1つ以上は、単一のモジュール又はアプリケーションの一部を表してもよい。
【0018】
特定の実施形態において、図1のモジュール102のうち1つ以上は、コンピューティングデバイスによって実行されるとき、コンピューティングデバイスに1つ以上のタスクを実行させることができる、1つ以上のソフトウェアアプリケーション又はプログラムを表してもよい。例えば、詳細に後述するように、モジュール102のうちの1つ以上は、図2に図示するデバイス(例えば、コンピューティングデバイス202、及び/又は査定サーバ206)、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の部分など、1つ以上のコンピューティングデバイスに記憶され、そこで作動するように構成される、ソフトウェアモジュールを表すことができる。図1のモジュール102のうち1つ以上はまた、1つ以上のタスクを実行するように構成された1つ以上の専用コンピュータの全て又は部分を表してもよい。
【0019】
図1に示すように、例示的なシステム100はまた、データベース120などの1つ以上のデータベースを含んでもよい。一実施例では、データベース120は、1つ以上のアプリケーションシグネチャ及び/又はシステムイメージシグネチャを記憶するように構成され得る。
【0020】
データベース120は、単一のデータベース若しくはコンピューティングデバイスの部分、又は複数のデータベース若しくはコンピューティングデバイスの部分を表してもよい。例えば、データベース120は、図2の査定サーバ206の一部分、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の部分を表してもよい。代わりに、図1のデータベース120は、図2のサーバ206、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の部分など、コンピューティングデバイスがアクセスできる、1つ以上の物理的に別個のデバイスを表してもよい。
【0021】
図1の例示的なシステム100は、様々な方法で実装され得る。例えば、例示的なシステム100の全て又は一部分は、図2における例示的なシステム200の部分を表してもよい。図2に示すように、システム200は、ネットワーク204を介して査定サーバ206と通信するコンピューティングデバイス202を含むことができる。一実施例では、コンピューティングデバイス202は、モジュール102のうち1つ以上を用いてプログラムされてもよく、かつ/又はデータベース120内のデータの全て若しくは一部分を記憶することができる。加えて又は代わりに、査定サーバ206は、モジュール102のうちの1つ以上を用いてプログラムされてもよく、かつ/又はデータベース120のデータの全て又は一部分を記憶してもよい。
【0022】
一実施形態では、図1にあるモジュール102のうちの1つ以上は、コンピューティングデバイス202及び/又は査定サーバ206のプロセッサのうち少なくとも1つにより実行されるとき、コンピューティングデバイス202及び/又は査定サーバ206に、コンピューティングデバイス202におけるプリインストールアプリケーションのスキャンを最適化できるようにする。例えば、詳細に後述するように、モジュール102の1つ以上は、コンピューティングデバイス202及び/又は査定サーバ206に、(1)コンピューティングデバイス202で、スキャンベースの査定の対象となる複数のアプリケーション212を識別することと、(2)アプリケーション212がコンピューティングデバイス202のシステムイメージ210を介してコンピューティングデバイス202にプリインストールされたことを判定することと、(3)システムイメージ210を表すフィンガープリント214を生成することと、(4)システムイメージ210を表すフィンガープリント214を査定サーバ206に送信するとともにそれに応じてシステムイメージ210の査定216を受信することによりアプリケーション212に対してスキャンベースの査定を遂行することと、を行わせることができる。
【0023】
コンピューティングデバイス202は一般に、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを表す。コンピューティングデバイス202の例としては、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末(PDA)、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス(例えば、スマートウォッチ、スマートグラスなど)、ゲーム機、それらの1つ以上の組み合わせ、図5の例示的なコンピューティングシステム510、あるいは任意の他の好適なコンピューティングデバイスが挙げられるが、これらに限定されない。
【0024】
査定サーバ206は一般に、アプリケーション及び/又はシステムイメージのフィンガープリントに基づいてアプリケーション及び/又はシステムイメージの査定を行うことができる任意のタイプ又は形態のコンピューティングデバイスを表す。査定サーバ206の例として、様々なデータベースサービスを提供し、かつ/又は特定のソフトウェアアプリケーションを作動させるように構成されたアプリケーションサーバ及びデータベースサーバが挙げられるが、これらに限定されない。例えば、査定サーバ206はセキュリティサーバを含むことができる。
【0025】
ネットワーク204は一般に、通信又はデータ転送を容易にすることができる任意の媒体又はアーキテクチャを表す。ネットワーク204の例として、イントラネット、広域ネットワーク(Wide Area Network)(WAN)、ローカルエリアネットワーク(Local Area Network)(LAN)、パーソナルエリアネットワーク(Personal Area Network)(PAN)、インターネット、電力線通信(PLC)、セルラーネットワーク(例えば、Global System for Mobile Communications(GSM(登録商標))ネットワーク)、図6の例示的なネットワークアーキテクチャ600などが挙げられるが、これらに限定されない。ネットワーク204は、無線接続又は有線接続を使用して、通信又はデータ転送を容易にすることができる。一実施形態では、ネットワーク204はコンピューティングデバイス202とサーバ206との間の通信を容易することができる。
【0026】
図3は、プリインストールアプリケーションのスキャンを最適化するための、例示的なコンピュータ実装方法300のフローチャートである。図3に示す工程は、任意の好適なコンピュータ実行可能コード及び/又はコンピューティングシステムによって実行され得る。いくつかの実施形態では、図3に示す工程は、図1のシステム100、図2のシステム200、図5のコンピューティングシステム510、及び/又は図6の例示的なネットワークアーキテクチャ600の部分の構成要素のうち1つ以上によって実行され得る。
【0027】
図3に示すように、工程302では、本明細書に記載されるシステムのうち1つ以上は、クライアントデバイスで、スキャンベースの査定の対象となる複数のアプリケーションを識別することができる。例えば、識別モジュール104は、図2のコンピューティングデバイス202の一部として、コンピューティングデバイス202で、スキャンベースの査定の対象となるアプリケーション212を識別することができる。
【0028】
クライアントデバイスは、プリインストールアプリケーションを含み得る任意のコンピューティングデバイスを含むことができる。例えば、クライアントデバイスはモバイルコンピューティングデバイスを含むことができる。モバイルコンピューティングデバイスの例としては、携帯電話、タブレットコンピュータ、電子ブックリーダー、携帯情報端末、GPSデバイス、メッセージングデバイス、スマートウォッチ、及びヘッドマウントコンピューティングデバイスが挙げられるが、これらに限定されない。
【0029】
本明細書で使用するとき、用語「アプリケーション」は、コンピューティングデバイスにインストールされ得る、かつ/又はコンピューティングデバイス上で実行することができる任意のアプリケーション、プログラム、モジュール、及び/又はパッケージを指すことができる。本明細書で使用するとき、語句「スキャンベースの査定」は、アプリケーションについて情報の収集、及び/又はコンピューティングデバイス上のアプリケーションの処置(例えば、アプリケーションを削除するかどうか、コンピューティングデバイスへのアプリケーションのアクセスを修正するかどうか、アプリケーションを監視するかどうか、アプリケーションを信頼するかどうか、アプリケーションをそのままにしておくかどうか、ユーザにアプリケーションについて警告するかどうか、アプリケーションの設定を修正するかどうか、など)の決定を容易にすることができるアプリケーションの任意の査定を指すことができる。いくつかの実施例では、スキャンベースの査定はデバイス上にインストールされるアプリケーションを分析することができる。加えて又は代わりに、スキャンベースの査定は、アプリケーションのフィンガープリントを収集することと、査定サーバにフィンガープリントを照合し、それに応じてアプリケーションの査定を受信することと、を含むことができる。例えば、査定サーバは、前にスキャンされたアプリケーション及び/又は分析されたアプリケーションの査定を、このアプリケーションの対応するフィンガープリントと併せて記憶することができる。
【0030】
いくつかの実施形態では、スキャンベースの査定は、複数のアプリケーションの内のアプリケーションがマルウェアを含むかどうかの査定を含むことができる。本明細書で使用するとき、用語「マルウェア」は、任意のウイルス、ワーム、トロイの木馬、スパイウェア、及び/又は任意の他の悪意ある、非合法の、かつ/若しくは権限がないソフトウェア、並びに/又はデータオブジェクトを指すことができる。いくつかの実施例では、スキャンベースの査定は、侵入防止分析などのセキュリティ査定(例えば、アプリケーションが悪用され得る脆弱性を含むかどうかを指摘する)を含むことができる。いくつかの実施例では、スキャンベースの査定は、複数のアプリケーションの内のアプリケーションのパフォーマンス査定を含むことができる。例えば、パフォーマンス査定は、アプリケーションがコンピューティングデバイスのパフォーマンスにどんな影響があるか(又はあると予想されるか)を指摘することができる(例えば、アプリケーションがパフォーマンスに悪影響があり、それによってコンピューティングデバイスのコンピューティング環境の速度を遅くし、エラー及び/又はクラッシュなどの要因になるかどうか、等)。いくつかの実施例では、スキャンベースの査定が、アプリケーションにクライアントデバイスの特徴までアクセスできるようにする、クライアントデバイスのアプリケーションに割り当てられた許可に基づく複数のアプリケーションの内のアプリケーションの査定を含むことができる。例えば、査定は、アプリケーションが要求するどの許可か、アプリケーションが要求する許可はそのアプリケーションにとって必要かつ/又は適切かどうか、アプリケーションは許可を用いて信頼されるかどうか、許可を有するアプリケーションが呈するリスクなどの判定を含むことができる。
【0031】
本明細書で使用するとき、用語「許可」は、コンピューティングリソース及び/又はケイパビリティにアクセスする、それを使用する、それを操作する、かつ/又はそれを閲覧するための任意の許可、特権、指定されたアクセス権、及び/又は認証を指すことができる。いくつかの実施例では、許可が、アプリケーションのインストール時にユーザによって与えられ得る(又は、いくつかの実施例では、プリインストールアプリケーションの場合、デフォルトで与えられる)。例えば、コンピューティングデバイスのプラットフォームは、アプリケーションによって要求され、かつ/又は使用される1つ以上の許可を表示するとともに、ユーザがアプリケーションをインストール及び/又は実行する前にアプリケーションに許可を与えるであろうという確認を受信するように構成され得る。いくつかの実施例では、コンピューティングデバイスのプラットフォームは、モバイルコンピューティングシステムのケイパビリティのセットを、このケイパビリティにアクセスするための許可のセットに分割することができ、そしてインストールされたアプリケーションそれぞれに対して許可のサブセットを与えることができる。
【0032】
識別モジュール104は、任意の好適な状況において複数のアプリケーションを識別することができる。例えば、識別モジュール104は、コンピューティングデバイスの包括的なスキャン中に複数のアプリケーションを識別することができる。いくつかの実施例では、識別モジュール104は、複数のアプリケーションを含むシステムイメージを識別することによって複数のアプリケーションを識別することができる。
【0033】
一つの状況では動作する識別モジュール104の一例として、図4はプリインストールアプリケーションのスキャンを最適化するための例示的なシステム400を示す。図4に示すように、例示的なシステム400は、ネットワーク404を介して査定サーバ406と通信するコンピューティングデバイス402を含むことができる。一例として図4を用いると、工程302では、識別モジュール104は、セキュリティスキャンの対象となるアプリケーション412、414、及び416を(例えば、やはりセキュリティスキャンの対象となり得るアプリケーション422、424、426と一緒に)識別することができる。
【0034】
図3に戻ると、工程304では、本明細書に記載されるシステムのうち1つ以上は、複数のアプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされたことを判定することができる。例えば、判定モジュール106は、図2のコンピューティングデバイス202の一部として、アプリケーション212がコンピューティングデバイス202のシステムイメージ210を介してコンピューティングデバイス202にプリインストールされたことを判定することができる。
【0035】
本明細書で使用するとき、語句「システムイメージ」は、プリインストールアプリケーションに含み得る任意のイメージを指すことができる。例えば、システムイメージは、リードオンリメモリ(ROM)イメージを含むことができる。本明細書で使用するとき、語句「リードオンリメモリ」は、頻繁に修正されない(又は全く修正されない)ように設計される任意のストレージ媒体を指すことができる。加えて又は代わりに、システムイメージは、ファームウェアを含むことができる。
【0036】
本明細書で使用するとき、語句「プリインストールアプリケーション」は、(例えば、ユーザが個別にインストール用のアプリケーションを選択する代わりに)システムイメージを介してインストールされる任意のアプリケーションを指すことができる。いくつかの実施例では、語句「プリインストールアプリケーション」は、コンピューティングデバイスの第1のエンドユーザ操作からコンピューティングデバイスにインストールされるアプリケーションを指すことができる。加えて又は代わりに、語句「プリインストールアプリケーション」は、システムイメージの更新に含まれる任意のアプリケーションを指すことができる。いくつかの実施例では、システムイメージの発行元のみが、システムイメージ内の任意のアプリケーションを修正する(例えば、アプリケーションを削除、更新、及び/又は上書きする)のを許可され得る。いくつかの実施例では、システムイメージの発行元はコンピューティングデバイスの製造業者及び/又はコンピューティングデバイスの製造業者のパートナーを含むことができる。したがって、いくつかの実施例では、システムイメージ(及びシステムイメージに含まれるプリインストールアプリケーション)は、信頼できる傾向があり、またプリインストールアプリケーションは、個別的スキャン動作が必要となることがより少なくなる傾向がある。
【0037】
判定モジュール106は、複数のアプリケーションが任意の好適な方法でシステムイメージを介してクライアントデバイスにプリインストールされたことを判定することができる。例えば、判定モジュール106は、アプリケーションがシステムイメージに対応することを指摘するアプリケーションそれぞれに関連するフラッグを識別することができる。加えて又は代わりに、判定モジュール106は、コンピューティングデバイスのプラットフォームを(例えば、アプリケーションプログラミングインタフェース(API)を介して)照合して、システムイメージを介してプリインストールされたアプリケーションのリストを検索することができる。
【0038】
一例として図4を用いると、判定モジュール106は、コンピューティングデバイス402の一部として、アプリケーション412、414、及び416がシステムイメージ410を介してコンピューティングデバイス402にプリインストールされたことを判定することができる。
【0039】
図3に戻ると、ステップ306では、本明細書で記載されるシステムのうちの1つ以上は、システムイメージを表すフィンガープリントを生成することができる。例えば、識別モジュール108は、図2のコンピューティングデバイス202の一部として、システムイメージ210を表すフィンガープリント214を生成することができる。
【0040】
本明細書で使用するとき、用語「フィンガープリント」は、(例えば、アプリケーションの現在のバージョンにおける)アプリケーションの任意の短縮表現を指すことができる。例えば、用語「フィンガープリント」は、アプリケーションの様々な部分、アプリケーションから抽出される値、アプリケーションの名称、アプリケーションのバージョン名、アプリケーションの発行元、アプリケーションに含まれるファイル、チェックサム、アプリケーションのメタデータ、及び/又はアプリケーションを識別する任意の他のタイプのアプリケーション識別子に適用される1つ以上のハッシュ機能の出力を指すことができる。一般的に、フィンガープリントは、前述の例のいずれかを単独又は組み合わせて含む、アプリケーションを識別する傾向がある任意の情報を含むことができる。ハッシュ値は、様々な暗号化ハッシュ関数(例えば、MD5及び/又はSHA256を含む)のいずれかにより生成され得る。いくつかの実施例では、用語「フィンガープリント」は、それが所与のファイルに関連するとき、経年一貫してそのアプリケーションを表し、フィンガープリントされているアプリケーションの内容が(例えば、更新により)変化しない限り変化しない単一の値を指すことができる。いくつかの実施例では、用語「フィンガープリント」は、アプリケーションのシグネチャを指すことができる。
【0041】
生成モジュール108は、システムイメージのフィンガープリントを、任意の好適な方法で生成することができる。例えば、生成モジュール108は、複数のアプリケーションの内のアプリケーションそれぞれに対する個別フィンガープリントを結合することによって、システムイメージのフィンガープリントを生成することができる。例えば、生成モジュール108は、コンピューティングデバイス上のアプリケーションそれぞれに対してフィンガープリントを生成することができ、またシステムイメージを介してプリインストールされたアプリケーションに対応するこれらのフィンガープリントを結合して、システムイメージのフィンガープリントを作成することができる。加えて又は代わりに、生成モジュール108は、システムイメージの公開鍵を入力として使用することによって、システムイメージを表すフィンガープリントを生成することができる。例えば、システムイメージは、システムイメージを検証するための公開鍵を含むことができる。したがって、公開鍵はまた、システムイメージが検証及び/又は認証された状況においてシステムイメージを明確に識別するのに有用である。いくつかの実施例では、前述の可能性に加えてかつ/又はそれに代えて、生成モジュール108は、少なくとも一部はシステムイメージのバージョン及びシステムイメージのビルド番号に基づいてシステムイメージのフィンガープリントを生成することができる。このように、システムイメージのフィンガープリントは、システムイメージが更新されても、システムイメージの特定のバージョンに対応することができる。
【0042】
図4を一例として使用すると、工程306では、生成モジュール108は、システムイメージ410のフィンガープリントを生成してもよい。例えば、生成モジュール108は、システムイメージ410に属するメタデータを使用して、フィンガープリントを生成することができる。加えて又は代わりに、生成モジュール108は、アプリケーション412、414、及び416のフィンガープリントに基づいてシステム410のフィンガープリントを生成することができる。
【0043】
図3に戻ると、工程308では、本明細書に記載されるシステムのうち1つ以上は、システムイメージを表すフィンガープリントを査定サーバに送信するとともにそれに応じてシステムイメージの査定を受信することによって、複数のアプリケーションに対してスキャンベースの査定を遂行することができる。例えば、遂行モジュール110は、図2のコンピューティングデバイス202の一部として、システムイメージ210を表すフィンガープリント214を査定サーバ206に送信するとともにそれに応じてシステムイメージ210の査定216を受信することによって、アプリケーション212に対してスキャンベースの査定を遂行することができる。
【0044】
査定サーバは、アプリケーション及び/又はシステムイメージのフィンガープリントを受信することに応じてアプリケーション及び/又はシステムイメージの査定を提供することができる任意のタイプのフィンガープリントルックアップシステムを備えることができる。例えば、査定サーバは、アプリケーション及び/又はシステムイメージの現在の査定をアプリケーション及び/又はシステムイメージのフィンガープリントと関係づけるデータベースを備える、かつ/又はそれにアクセスすることができる。いくつかの実施例では、査定サーバは、アプリケーション及び/又はシステムイメージのアプリケーション査定をクライアントデバイスの多く(例えば、数千及び/又は数百万)に提供することができる。このように、査定サーバに対して必要とされるルックアップ数を低減することによって、本明細書に記載されるシステム及び方法は、査定サーバが消費する計算リソースを大幅に低減することができる。
【0045】
システムイメージの査定は、様々な情報のうちのいずれを含むことができる。例えば、システムイメージの査定が、複数のアプリケーションの内の個別アプリケーションの査定を含むことができる。いくつかの実施例では、個別アプリケーションの査定が、個別アプリケーションが改善措置の対象となることを指摘することができる。例えば、個別アプリケーションの査定は、個別アプリケーションがマルウェアを含む、セキュリティ上の脆弱性を含む、システムパフォーマンスに悪影響を及ぼし得る、かつ/又は不適切な許可を有することを指摘することができる。本実施例では、遂行モジュール110は、個別アプリケーションに改善を実行することができる。例えば、遂行モジュール110は、個別アプリケーションを削除する、個別アプリケーションの実行を停止する、個別アプリケーションを隔離する、ユーザに個別アプリケーションについて警告する、コンピューティングデバイス上の個別アプリケーションが講じた措置を分析する、かつ/又は個別アプリケーションから許可を削除することができる。
【0046】
いくつかの実施例では、(例えば、システムイメージ内の個別アプリケーションに対して有害な査定を受信することによって)システムイメージに対して有害な査定を受信すると、遂行モジュール110は、スキャンするため単一のエンティティとしてシステムイメージを扱うのを中止し、個別的にプリインストールアプリケーションを扱うように戻すことができる。例えば、遂行モジュール110は、システムイメージを表すフィンガープリントを査定サーバに送信することが、複数のアプリケーションに対する後続のスキャンベースの査定を遂行するのに十分ではないと、個別アプリケーションの査定に基づいて判定することができる。その後、遂行モジュール110は、システムイメージを表すフィンガープリントを査定サーバに送信することが後続のスキャンベースの査定を遂行するのに十分ではないとの判定に応じて、複数のアプリケーションの内のアプリケーションそれぞれに対する個別フィンガープリントを査定サーバに送信することによって、複数のアプリケーションに対して後続のスキャンベースの査定を遂行することができる。いくつかの実施例では、他のイベントにより、遂行モジュール110がスキャンするため単一のエンティティとしてシステムイメージを扱うのを中止し、個別的にプリインストールアプリケーションを扱うように戻すことができる。例えば、遂行モジュール110は、システムイメージが(例えば、発見できないかつ/又は観察し難いマルウェアの変種を介して)危殆化されている危険にあることを指摘するメッセージを受信することができる。
【0047】
いくつかの実施例では、スキャンする目的で単一のエンティティとしてシステムイメージを扱うが、本明細書に記載されるシステムは、スキャンする目的で個別的にシステムイメージ外の(例えば、システムイメージによってプリインストールされなかった)アプリケーションを扱うことができる。例えば、識別モジュール104は、クライアントデバイスで、少なくとも1つのスキャンベースの査定の対象となる個別アプリケーションを識別することができる。判定モジュール106が、個別アプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされなかったことを判定することができる。生成モジュール108が、個別アプリケーションがクライアントデバイスのシステムイメージを介してクライアントデバイスにプリインストールされなかったことを判定したことに基づいて、個別アプリケーションを表し、他のいかなるアプリケーションも表さない個別フィンガープリントを生成することができる。その後、遂行モジュールは、個別アプリケーションを表すフィンガープリントを査定サーバに送信するとともにそれに応じて個別アプリケーションの査定を受信することによって、個別アプリケーションに対してスキャンベースの査定を遂行することができる。
【0048】
図3の工程308の一例として図4を使用すると、遂行モジュール110は、コンピューティングデバイス402の一部として、システムイメージ410のフィンガープリントを査定サーバ406に送信することによって、アプリケーション412、414、416に対してスキャンベースの査定を遂行することができる。査定サーバ406は、フィンガープリント430内のシステムイメージ410のフィンガープリントをルックアップすることができ、査定450において対応する査定を見つけることができる。その後、査定サーバ406は、システムイメージ410の査定に復帰することができる。一実施例では、この査定は、アプリケーション414がマルウェアを含むことを指摘することができる。その後、遂行モジュール110は、(例えば、アプリケーション412、414、及び416に対する個別フィンガープリントを査定サーバ406に送信することによって)個別にアプリケーション412、414、及び416における後続のスキャンベースの査定を遂行することができる。いくつかの実施例では、遂行モジュール110はまた、個別的に(例えば、システムイメージ410の一部ではない)アプリケーション422、424、及び426に対してスキャンベースの査定を遂行することができる。
【0049】
一実施例では、本明細書に記載されるシステムは、既知のROMイメージ(例えば、システムイメージ)それぞれに対して一意識別子(例えば、フィンガープリント)を作ることができる。一意識別子を用いて、システムイメージに付属する全てのアプリケーションに対して、本明細書に記載されるシステムは1回のスキャンを実行するだけでよい。クラウドルックアップをスキャンの一部として実行する場合、このクラウドルックアップを1回だけ実行してもよい。本明細書に記載されるシステムは、ROM分布を監視することができ、そして問題が検出された場合、問題を有するROMイメージ及び特別のアプリケーションを標的とするシグネチャをロールアウトすることができる。加えて又は代わりに、これらのシステムは、ROMを無効にし、個別的にアプリケーションをスキャンするように切り替えるようにクライアントデバイスそれぞれに命じることができる。ROMの大半はクリーンであると期待されるかもしれず、しかもプリインストールアプリケーションは全てのアプリケーションのうちの大部分を占めるかもしれないので、これらのシステム及び方法は、コンピューティングリソースのかなりの量を節約することができる。
【0050】
ROMイメージの一意識別子を作るため、本明細書に記載されるシステムは、どのプリインストールアプリケーションのハッシュも識別でき、これらの識別されたハッシュに基づいてハッシュを生成することができる。更に、これらのシステムは、ハッシュを計算する際の、1つ以上のコアシステムファイル及び/又はROMイメージのバージョンについての情報を含むことができる。加えて又は代わりに、本明細書に記載されるシステムは、ROMに付属する公開鍵を読み取るとともに公開鍵、ROMのバージョン及びROMのビルド番号から一意識別子を生成することによって、ROMイメージの一意識別子を作ることができる。公開鍵はまた、ROM更新パッケージを有効化するのに用いられる。いくつかの実施例では、本明細書に記載されるシステムは、デバイスがカスタマイズされたROMで危殆化されなかった(かつ/又は、例えば、危殆化されないように信頼されている)ことを検出することによって、ROMイメージの一意識別子を作ることができる。本実施例では、これらのシステムは、ROMのバージョン及びROMのビルド番号と組み合わせてデバイスのハードウェアモデルを使用して、ROMイメージの一意識別子を生成することができる。
【0051】
いくつかの実施例では、本明細書に記載されるシステムは、選択的に、システムイメージによってスキャンするためコンピューティングデバイスモデルの特別なセットを標的とすることができる。一実施例では、これらのシステムは、コンピューティングデバイスの基礎システムを変えるためにエクスプロイトを使用し得るアプリケーションが発見された場合、ROMイメージの一意識別子によってスキャンするのを中止することができる。本実施例では、これらのシステムは、個別的にアプリケーションをスキャンするように戻すことができる。
【0052】
図5は、本明細書に記載及び/又は図示される実施形態のうち1つ以上を実装することができる例示的なコンピューティングシステム510のブロック図である。例えば、コンピューティングシステム510の全て又は一部分は、単独で又は他の要素と組み合わせて、(図3に図示される工程のうち1つ以上などの)本明細書に記載される工程のうち1つ以上を実行してもよく、かつ/又はそれを実行するための手段であってもよい。コンピューティングシステム510の全て又は一部分はまた、本明細書に記載及び/若しくは図示される他の任意の工程、方法、若しくは処理を実行してもよく、かつ/又はそれを実行するための手段であってもよい。
【0053】
コンピューティングシステム510は、コンピュータ可読命令を実行することが可能な任意の単一若しくはマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム510の例として、ワークステーション、ラップトップ、クライアント側端末、サーバ、配信型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意のコンピューティングシステム若しくはデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム510は、少なくとも1つのプロセッサ514及びシステムメモリ516を含んでもよい。
【0054】
プロセッサ514は一般に、データの処理又は命令の解釈及び実行が可能な任意のタイプ又は形態の物理的処理ユニット(例えば、ハードウェア実装型中央処理ユニット)を表す。特定の実施形態では、プロセッサ514は、ソフトウェアアプリケーション又はモジュールから命令を受信することができる。これらの命令は、プロセッサ514に、本明細書で説明及び/又は示される例示的な実施形態のうちの1つ以上の機能を実行させることができる。
【0055】
システムメモリ516は一般に、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形態の揮発性又は不揮発性記憶デバイス若しくは媒体を表す。システムメモリ516の例としては、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられるが、これらに限定されない。必須ではないが、特定の実施形態において、コンピューティングシステム510は、(例えば、システムメモリ516などの)揮発性メモリユニット及び(例えば、以下で詳細に記載されるような一次ストレージデバイス532などの)不揮発性ストレージデバイスの両方を含んでもよい。一実施例では、図1のモジュール102のうちの1つ以上が、システムメモリ516にロードされてもよい。
【0056】
ある実施形態では、例示的なコンピューティングシステム510はまた、プロセッサ514及びシステムメモリ516に加えて、1つ以上の構成要素又は要素を含んでもよい。例えば、図5に示すように、コンピューティングシステム510は、メモリコントローラ518、入力/出力(I/O)コントローラ520、及び通信インタフェース522を含んでもよく、それらはそれぞれ通信インフラストラクチャ512を介して相互接続されてもよい。通信インフラストラクチャ512は、一般に、コンピューティングデバイスの1つ以上の構成要素間の通信を容易にすることが可能な、任意のタイプ又は形態のインフラストラクチャを表す。通信インフラストラクチャ512の例としては、限定するものではないが、通信バス(業界標準アーキテクチャ(ISA)、周辺装置相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバスなど)及びネットワークが挙げられる。
【0057】
メモリコントローラ518は一般に、メモリ若しくはデータを取り扱うか又はコンピューティングシステム510の1つ以上の構成要素間の通信を制御することができる任意のタイプ又は形態のデバイスを表す。例えば、特定の実施形態では、メモリコントローラ518は、通信インフラストラクチャ512を介して、プロセッサ514、システムメモリ516、及びI/Oコントローラ520間の通信を制御することができる。
【0058】
I/Oコントローラ520は、一般に、コンピューティングデバイスの入出力機能を調整及び/又は制御することができる任意のタイプ又は形態のモジュールを表す。例えば、特定の実施形態では、I/Oコントローラ520は、プロセッサ514、システムメモリ516、通信インタフェース522、ディスプレイアダプタ526、入力インタフェース530、及び記憶インタフェース534など、コンピューティングシステム510の1つ以上の要素間におけるデータの転送を制御するか又は容易にし得る。
【0059】
通信インタフェース522は、例示的なコンピューティングシステム510と1つ以上の追加のデバイスとの間の通信を容易にすることができる、任意のタイプ若しくは形態の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態において、通信インタフェース522は、コンピューティングシステム510と、追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にすることができる。通信インタフェース522の例としては、有線ネットワークインタフェース(ネットワークインタフェースカードなど)、無線ネットワークインタフェース(無線ネットワークインタフェースカードなど)、モデム、及び他の任意の好適なインタフェースが挙げられるが、これらに限定されない。少なくとも1つの実施形態では、通信インタフェース522は、インターネットなどのネットワークへの直接リンクを介して、リモートサーバへの直接接続を提供してもよい。通信インタフェース522はまた、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワークなど)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通した、かかる接続を間接的に提供してもよい。
【0060】
特定の実施形態では、通信インタフェース522はまた、外部バス又は通信チャネルを介して、コンピューティングシステム510と1つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成される、ホストアダプタを表してもよい。ホストアダプタの例としては、小型コンピュータシステムインタフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子学会(IEEE)1394ホストアダプタ、アドバンストテクノロジーアタッチメント(ATA)、パラレルATA(PATA)、シリアルATA(SATA)、及び外部SATA(eSATA)ホストアダプタ、ファイバーチャネルインタフェースアダプタ、イーサネット(登録商標)アダプタなどが挙げられるが、これらに限定されない。通信インタフェース522はまた、コンピューティングシステム510が分散型又はリモートコンピューティングに関与するのを可能にすることができる。例えば、通信インタフェース522は、実行のためにリモートデバイスから命令を受信するか又はリモートデバイスに命令を送信してもよい。
【0061】
図5に示すように、コンピューティングシステム510はまた、ディスプレイアダプタ526を介して通信インフラストラクチャ512に連結される少なくとも1つのディスプレイデバイス524を含んでもよい。ディスプレイデバイス524は一般に、ディスプレイアダプタ526によって転送される情報を視覚的に表示することができる、任意のタイプ若しくは形態のデバイスを表す。同様に、ディスプレイアダプタ526は、一般に、ディスプレイデバイス524に表示するために、通信インフラストラクチャ512から(又は当該技術分野において既知であるようにフレームバッファから)グラフィックス、テキスト、及び他のデータを転送するように構成される、任意のタイプ又は形態のデバイスを表す。
【0062】
図5に示すように、例示的なコンピューティングシステム510はまた、入力インタフェース530を介して通信インフラストラクチャ512に連結される少なくとも1つの入力デバイス528を含んでもよい。入力デバイス528は、一般に、コンピュータ又は人間のいずれかが生成した入力を、例示的なコンピューティングシステム510に提供することができる、任意のタイプ若しくは形態の入力デバイスを表す。入力デバイス528の例としては、キーボード、ポインティングデバイス、音声認識デバイス、又は他の任意の入力デバイスが挙げられるが、これらに限定されない。
【0063】
図5に示すように、例示的なコンピューティングシステム510はまた、記憶インタフェース534を介して通信インフラストラクチャ512に連結される、主要記憶デバイス532及びバックアップ記憶デバイス533を含んでもよい。ストレージデバイス532及び533は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を表す。例えば、ストレージデバイス532及び533は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであってもよい。ストレージインタフェース534は一般に、ストレージデバイス532及び533とコンピューティングシステム510の他の構成要素との間のデータを転送するためのあらゆるタイプ又は形態のインタフェース又はデバイスを表す。一実施例では、図1のデータベース120は、一次ストレージデバイス532内に記憶され得る。
【0064】
特定の実施形態において、ストレージデバイス532及び533は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取り、かつ/又はこれに書き込むように構成されてもよい。好適な取り外し可能なストレージユニットの例として、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられるが、これらに限定されない。ストレージデバイス532及び533はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム510内にロードされることを可能にするための他の同様の構造体又はデバイスを含んでもよい。例えば、ストレージデバイス532及び533は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、かつこれを書き込むように構成されてもよい。ストレージデバイス532及び533はまた、コンピューティングシステム510の一部であってもよく、又は他のインタフェースシステムを介してアクセスされる別々のデバイスであってもよい。
【0065】
多くの他のデバイス又はサブシステムをコンピューティングシステム510に接続することができる。反対に、図5に示す構成要素及びデバイスの全てが、本明細書に記載及び/又は図示される実施形態を実践するために存在する必要があるわけではない。上で言及されるデバイス及びサブシステムはまた、図5に示すものと異なる方法で相互接続されてもよい。コンピューティングシステム510はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェアの構成を採用してもよい。例えば、本明細書で開示される例示的な実施形態のうち1つ以上は、コンピュータ可読媒体上に、コンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)として符号化されてもよい。本明細書で使用するとき、語句「コンピュータ可読媒体」は一般に、コンピュータ可読命令を記憶又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、限定されないが、搬送波などの伝送型媒体、並びに磁気記憶媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク)、光学記憶媒体(例えば、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及びブルーレイ(BLU−RAY)ディスク)、電子記憶媒体(例えば、ソリッドステートドライブ及びフラッシュメディア)、並びに他の分散システムなどの非一時的媒体が挙げられる。
【0066】
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム510にロードされてもよい。次に、コンピュータ可読媒体に記憶されたコンピュータプログラムの全て又は一部分は、システムメモリ516に、並びに/又はストレージデバイス532及び533の種々の部分に記憶されてもよい。プロセッサ514によって実行されるとき、コンピューティングシステム510にロードされたコンピュータプログラムは、プロセッサ514に、本明細書に記載及び/又は図示される例示的な実施形態の1つ以上の機能を実行させてもよく、かつ/又は実行させるための手段であってもよい。加えて、又は代わりに、本明細書に記載及び/又は図示される例示的な実施形態の1つ以上は、ファームウェア及び/又はハードウェアに実装されてもよい。例えば、コンピューティングシステム510は、本明細書に開示される例示的な実施形態の1つ以上を実装するように適合された、特定用途向け集積回路(ASIC)として構成されてもよい。
【0067】
図6は、クライアントシステム610、620、及び630、並びにサーバ640及び645がネットワーク650に連結されていてもよい、例示的なネットワークアーキテクチャ600のブロック図である。上で詳述されるように、ネットワークアーキテクチャ600の全て又は一部は、単独で又は他の要素と組み合わせて、(図3に示す工程のうち1つ以上などの)本明細書で開示される工程のうち1つ以上を実行してもよく、かつ/又はそれらを実行するための手段であってもよい。ネットワークアーキテクチャ600の全て又は一部分はまた、本開示に記載される他の工程及び特性を実行するために使用されてもよく、かつ/又はそれを実行するための手段であってもよい。
【0068】
クライアントシステム610、620、及び630は一般に、図5の例示的なコンピューティングシステム510などの、任意のタイプ若しくは形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ640及び645は一般に、種々のデータベースサービスを提供し、及び/又は特定のソフトウェアアプリケーションを実行するように構成されるアプリケーションサーバ又はデータベースサーバなどの、コンピューティングデバイス又はシステムを表す。ネットワーク650は一般に、例えばイントラネット、WAN、LAN、PAN、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを表す。一実施例では、クライアントシステム610、620、及び/若しくは630、並びに/又はサーバ640及び/若しくは645は、図1からのシステム100の全て又は一部を含むことができる。
【0069】
図6に示すように、1つ以上のストレージデバイス660(1)〜(N)は、サーバ640に直接取り付けられてもよい。同様に、1つ以上のストレージデバイス670(1)〜(N)は、サーバ645に直接取り付けられてもよい。ストレージデバイス660(1)〜(N)及びストレージデバイス670(1)〜(N)は、一般に、データ及び/又は他のコンピュータ可読命令を記憶することができる任意のタイプ又は形態のストレージデバイス又は媒体を表す。特定の実施形態では、ストレージデバイス660(1)〜(N)及びストレージデバイス670(1)〜(N)は、ネットワークファイルシステム(NFS)、サーバメッセージブロック(SMB)、又は共通インターネットファイルシステム(CIFS)などの種々のプロトコルを使用して、サーバ640及び645と通信するように構成される、ネットワーク接続ストレージ(NAS)デバイスを表すことができる。
【0070】
サーバ640及びサーバ645はまた、ストレージエリアネットワーク(SAN)ファブリック680にも接続することができる。SANファブリック680は、一般に、複数のストレージデバイス間の通信を容易にすることができる任意のタイプ又は形態のコンピュータネットワーク又はアーキテクチャを表す。SANファブリック680は、サーバ640及び645と、複数のストレージデバイス690(1)〜(N)及び/又はインテリジェントなストレージアレイ695との間の通信を容易にすることができる。SANファブリック680はまた、ストレージデバイス690(1)〜(N)及びストレージアレイ695が、クライアントシステム610、620、及び630にローカルで取り付けられたデバイスかのように、ネットワーク650並びにサーバ640及び645を介して、クライアントシステム610、620、及び630と、デバイス690(1)〜(N)及び/又はインテリジェントなアレイ695との間の通信を容易にすることができる。ストレージデバイス660(1)〜(N)及びストレージデバイス670(1)〜(N)と同様に、ストレージデバイス690(1)〜(N)及びインテリジェントなストレージアレイ695は、データ及び/又は他のコンピュータ可読命令を記憶することができる任意のタイプ又は形態のストレージデバイス又は媒体を概ね表す。
【0071】
特定の実施形態において、図5の例示的なコンピューティングシステム510を参照して、図5の通信インタフェース522などの通信インタフェースは、それぞれのクライアントシステム610、620、及び630とネットワーク650との間を接続するように使用されてもよい。クライアントシステム610、620、及び630は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ640又は645上の情報にアクセスすることが可能であり得る。かかるソフトウェアにより、クライアントシステム610、620、及び630が、サーバ640、サーバ645、ストレージデバイス660(1)〜(N)、ストレージデバイス670(1)〜(N)、ストレージデバイス690(1)〜(N)、又はインテリジェントなストレージアレイ695によってホスティングされたデータにアクセスできるようになる。図6は、データを送受信するための(インターネットなどの)ネットワークの使用を示しているが、本明細書に記載及び/又は図示される実施形態は、インターネット、又は任意の特定のネットワークベースの環境に限定されない。
【0072】
少なくとも1つの実施形態において、本明細書に開示される例示的な実施形態のうち1つ以上の全て又は一部は、コンピュータプログラムとしてコード化され、サーバ640、サーバ645、ストレージデバイス660(1)〜(N)、ストレージデバイス670(1)〜(N)、ストレージデバイス690(1)〜(N)、インテリジェントなストレージアレイ695、又はこれらの任意の組み合わせ上にロードされ、これらによって実行されてもよい。本明細書に開示される例示的な実施形態のうち1つ以上の全て又は一部はまた、コンピュータプログラムとしてコード化され、サーバ640に記憶され、サーバ645によって作動し、ネットワーク650上でクライアントシステム610、620、及び630に配信されてもよい。
【0073】
上で詳述されたように、コンピューティングシステム510及び/又はネットワークアーキテクチャ600の1つ以上の構成要素は、それぞれ単独で、又は他の要素と組み合わせて、のスキャンを最適化するための例示的な方法の1つ以上のステップを実行し得る、及び/又は実行するための手段であり得る。
【0074】
前述の開示は、特定のブロック図、流れ図、及び実施例を使用して様々な実施形態を記載するが、本明細書に記載及び/又は図示される各ブロック図の構成要素、流れ図の工程、操作、及び/又は構成要素は、個別にかつ/又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア(又はこれらの任意の組み合わせの)構成を使用して実装されてもよい。それに加えて、他の多くのアーキテクチャが同じ機能性を達成するように実装可能であるので、他の構成要素内に含有される構成要素のあらゆる開示は、本質的に例示と見なされるべきである。
【0075】
いくつかの実施例では、図1の例示的なシステム100の全て又は一部分は、クラウドコンピューティング環境又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供することができる。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他のリモートインタフェースを介してアクセス可能であってもよい。本明細書に記載される様々な機能は、リモートデスクトップの環境又は任意の他のクラウドベースのコンピューティング環境を介して提供されてもよい。
【0076】
様々な実施形態において、図1の例示的なシステム100の全て又は一部分により、クラウドベースのコンピューティング環境内でのマルチテナンシーを容易にすることができる。換言すれば、本明細書に記載されるソフトウェアモジュールは、本明細書に記載される機能の1つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム(例えば、サーバ)を構成してもよい。例えば、本明細書に記載されるソフトウェアモジュールのうち1つ以上は、2つ以上のクライアント(例えば、顧客)がサーバ上で作動しているアプリケーションを共有することができるようにサーバをプログラムすることができる。このようにプログラムされたサーバは、複数の顧客(すなわち、テナント)の間で、アプリケーション、オペレーティングシステム、処理システム、及び/又はストレージシステムを共有することができる。本明細書に記載されるモジュールのうち1つ以上はまた、ある顧客が別の顧客のデータ及び/又は設定情報にアクセスすることができないように顧客ごとに、マルチテナントアプリケーションのデータ及び/又は設定情報を分割してもよい。
【0077】
様々な実施形態によると、図1の例示的なシステム100の全て又は一部分は、仮想環境内で実装されてもよい。例えば、本明細書に記載されるモジュール及び/又はデータは、仮想機械内に常駐及び/又はそこで実行してもよい。本明細書で使用するとき、語句「仮想機械」は一般に、仮想機械マネージャ(例えば、ハイパーバイザ)によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。加えて、又は代わりに、本明細書に記載されるモジュール及び/又はデータは、仮想化層内で常駐及び/又は実行してもよい。本明細書で使用するとき、語句「仮想化層」は一般に、オペレーティングシステム環境にオーバーレイする、かつ/又はそこから抽出される、任意のデータ層及び/又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション(例えば、ファイルシステムフィルタ)によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び/又はレジストリ内の場所に方向付けられる呼出しを、仮想化層内の場所にリダイレクトしてもよい。
【0078】
いくつかの実施例では、図1の例示的なシステム100の全て又は一部分は、モバイルコンピューティング環境の部分を表してもよい。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダー、携帯情報端末、ウェアラブルコンピューティングデバイス(例えば、ヘッドマウントディスプレイを備えたコンピューティングデバイス、スマートウォッチなど)などを含む、広範なモバイルコンピューティングデバイスによって実装されてもよい。いくつかの実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での1つのみのフォアグラウンドアプリケーションの提示、リモート管理特性、タッチスクリーン特性、位置及び移動データ(例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される)、システムレベルの構成への修正を制限する、及び/又は第3者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する、アプリケーションのインストールを制限するように(例えば、認可されたアプリケーションストアからのみ生じるように)制御するなど、制限されたプラットフォームを含む、1つ以上の個別の特性を有することができる。本明細書に説明される種々の機能は、モバイルコンピューティング環境に対して提供され得る、及び/又はモバイルコンピューティング環境と相互作用し得る。
【0079】
加えて、図1の例示的なシステム100の全て又は一部分は、情報管理のための1つ以上のシステムの部分を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、かつ/又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、語句「情報管理」は、データの保護、組織化、及び/又は記憶を指し得る。情報管理のためのシステムの例として、ストレージシステム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データサーチシステム、仮想化システムなどが挙げられるが、これらに限定されない。
【0080】
いくつかの実施形態では、図1の例示的なシステム100の全て又は一部分は、情報セキュリティのための1つ以上のシステムの部分を表してもよく、それによって保護されるデータを生成してもよく、かつ/又はそれと通信してもよい。本明細書で使用するとき、語句「情報セキュリティ」は、保護されたデータへのアクセスの制御を指し得る。情報セキュリティのためのシステムの例として、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子発見システムなどが挙げられるが、これらに限定されない。
【0081】
いくつかの実施例によると、図1の例示的なシステム100の全て又は一部分は、エンドポイントセキュリティのための1つ以上のシステムの部分を表してもよく、それと通信してもよく、かつ/又はそれから保護を受信してもよい。本明細書で使用するとき、語句「エンドポイントセキュリティ」は、権限がない及び/又は違法な使用、アクセス、並びに/あるいは制御からの、エンドポイントシステムの保護を指し得る。エンドポイントの保護のためのシステムの例として、マルウェア対策システム、ユーザ認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどが挙げられるが、これらに限定されない。
【0082】
本明細書に記載及び/又は図示されるプロセスパラメータ及び工程の順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に図示及び/又は記載される工程は特定の順序で示され又は考察され得るが、これらの工程は、必ずしも図示又は考察される順序で実行される必要はない。本明細書に記載及び/又は図示される種々の例示的な方法はまた、本明細書に記載若しくは図示される工程の1つ以上を省略するか、又は開示されるものに加えて追加の工程を含んでもよい。
【0083】
種々の実施形態を、完全に機能的なコンピューティングシステムの文脈において、本明細書に記載及び/又は図示してきたが、これらの例示的な実施形態の1つ以上は、実際に配布を実行するために使用されるコンピュータ可読媒体の特定のタイプにかかわらず、様々な形態のプログラム製品として配布されてもよい。本明細書で開示される実施形態はまた、あるタスクを実行するソフトウェアモジュールを使用して実装されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上に、又はコンピューティングシステム内に記憶され得る、スクリプト、バッチ、又は他の実行可能なファイルを含むことができる。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書で開示される例示的な実施形態の1つ以上を実行するようにコンピューティングシステムを構成してもよい。
【0084】
更に、本明細書に記載されるモジュールのうち1つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を1つの形態から別の形態へと変換することができる。例えば、本明細書に列挙されるモジュールのうち1つ以上は、変換されるシステムイメージのフィンガープリントを受信し、システムイメージのフィンガープリントを1つ以上のプリインストールアプリケーションの査定に変換し、変換の結果をセキュリティシステムに出力し、セキュリティ問題を解決するためこの変換の結果を使用し、更に変換の結果をストレージデバイスに記憶することができる。加えて、又は代わりに、本明細書に列挙されるモジュールのうち1つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイス上にデータを記憶し、かつ/又は別様にコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び/又は物理的コンピューティングデバイスの任意の他の部分を、1つの形態から別の形態へと変換することができる。
【0085】
前述の記述は、他の当業者が本明細書に開示される例示的な実施形態の様々な態様を最良に利用することができるように提供されてきた。この例示的な記述は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの変更例及び変形例が可能である。本明細書で開示される実施形態は、あらゆる点で例示的であり、限定的ではないものと見なされるべきである。本開示の範囲を判断する場合、添付の特許請求の範囲及びこれらの均等物を参照するべきである。
【0086】
別途記載のない限り、用語「に接続される」及び「に連結される」(並びにこれらの派生語)は、本明細書及び特許請求の範囲で使用される際、直接的接続と間接的接続(すなわち、他の要素又は構成要素を介した)との両方を許容するものとして解釈することができる。更に、用語「1つの(a)」又は「1つの(an)」は、本明細書及び特許請求の範囲で使用される際、「のうち少なくとも1つ」を意味するものとして解釈することができる。最後に、簡潔にするため、用語「含む」及び「有する」(並びにそれらの派生語)は、本明細書及び特許請求の範囲で使用される際、単語「備える」と互換性があり、同じ意味を有する。
図1
図2
図3
図4
図5
図6