(58)【調査した分野】(Int.Cl.,DB名)
関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも1つのプロセッサを備えるコンピューティングデバイスによって実行され、
ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認する工程と、
前記ファイルに関連するユニークな識別子を特定する工程と、
前記ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、前記関連コンピューティングシステムのグループ内の少なくとも1つのコンピューティングシステムが前記ファイルのコピーに対して前記コンピューティングオペレーションを事前に実行したかを判断する工程と、
前記コンピューティングオペレーションを実行する代わりに、前記共有ストアから前記コンピューティングオペレーションの結果を取り込む工程と
前記ファイルに関連する前記ユニークな識別子を特定する前に、
前記ファイルは変更されないファイルと関連する位置に位置するか判断すること、
前記ファイルは既定の期間内において既定の回数より少ない回数で変更されたか判断すること、
前記ファイルは既定の期間を超えて変更されなかったか判断すること
の少なくとも1つの工程と
を含むコンピュータ実装方法。
【発明を実施するための形態】
【0014】
以下でさらに詳細に説明されるように、本開示は、概して、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのシステムおよび方法に関する。以下は、
図1〜3および5を参照して、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明もまた、
図4に関連して提供される。さらに、本明細書に記載される1つまたは複数の実施形態を実施することが可能な例示的なコンピューティングシステムおよびネットワークアーキテクチャの詳細な説明はそれぞれ、
図6および7に関連して提供される。
【0015】
図1は、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なシステム100のブロック図である。この図で示されるように、例示的なシステム100は、1つまたは複数のタスクを実行するための1つまたは複数のモジュール102を含み得る。例えば、以下でさらに詳細に説明されるように、例示的なシステム100は、ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認するようプログラムされたオペレーション識別モジュール104を含み得る。また、例示的なシステム100は、ファイルに関連するユニークな識別子を特定するようプログラムされたファイル識別モジュール106も含み得る。
【0016】
さらに、以下でさらに詳細に説明されるように、例示的なシステム100は、1)ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも1つのコンピューティングシステムが問題のファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断するように、および、2)コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込むようにプログラムされたクエリモジュール108を含み得る。個別の要素として示されているが、
図1の1つまたは複数のモジュール102は、単一のモジュールまたはアプリケーションの複数の部分を表す場合がある。
【0017】
ある実施形態では、
図1の1つまたは複数のモジュール102は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに1つまたは複数のタスクを実行させることができる1つまたは複数のソフトウェアアプリケーションまたはプログラムを表す場合がある。例えば、以下でさらに詳細に説明されるように、1つまたは複数のモジュール102は、
図2および3に示されるデバイス(例えば、仮想マシン202(1)〜(N)およびコンピューティングデバイス302(1)〜(N))、
図6のコンピューティングシステム610および/または
図7の例示的なネットワークアーキテクチャ700の複数の部分など、1つまたは複数のコンピューティングデバイス上で起動するよう格納および構成されるソフトウェアモジュールを表す場合がある。
図1の1つまたは複数のモジュール102は、1つまたは複数のタスクを実行するよう構成される1つまたは複数の専用コンピュータのすべてまたは複数の部分を表す場合もある。
【0018】
また、
図1で示されるように、例示的なシステム100は、ファイル属性データベース120も含み得る。一実施形態では、以下でさらに詳細に説明されるように、ファイル属性データベース120は、1つまたは複数のファイルハッシュ122およびファイル属性情報124を格納するよう構成され得る。ファイル属性データベース120は、単一のデータベースもしくはコンピューティングデバイスまたは複数のデータベースもしくはコンピューティングデバイスの複数の部分を表す場合がある。例えば、ファイル属性データベース120は、
図2のローカルストア212(1)〜(N)および/もしくは共有ストア216、
図3のローカルストア303(1)〜(N)および/もしくは共有ストア306、
図6のコンピューティングシステム610、ならびに/または、
図7の例示的なネットワークアーキテクチャ700の複数の部分の一部分を表す場合がある。あるいは、
図1のファイル属性データベース120は、コンピューティングデバイスによってアクセスすることが可能な1つまたは複数の物理的な個別のデバイスを表す場合があり、そのような
図2の仮想マシン202(1)〜(N)、
図3のコンピューティングデバイス302(1)〜(N)、
図6のコンピューティングシステム610および/または
図7の例示的なネットワークアーキテクチャ700の複数の部分。
【0019】
図1の例示的なシステム100は、さまざまな方法で配備することができる。一例では、例示的なシステム100のすべてまたは一部分は、
図2の例示的なホストマシン200の複数の部分を表す場合がある。
図2に示されているように、ホストマシン200は、仮想化層204を介して一式のハードウェア208と連通する複数の仮想マシン202(1)〜(N)を含み得る。一実施形態では、以下でさらに詳細に説明されるように、
図1のモジュール102は、仮想マシン202(1)〜(N)それぞれを、1)仮想マシン内のファイルに対してコンピューティングオペレーション(マルウェアスキャンなど)を実行する必要があるかを確認する、2)ファイルに関連するユニークな識別子(ファイルハッシュなど)を特定する、3)ユニークな識別子を使用して共有ストア216(以下で説明されるように、仮想マシン202(1)〜(N)によって共有され得る)にクエリを行うことによって、グループ220内の追加の仮想マシンがファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断する、ならびに、4)再度コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込むようプログラムすることができる。
【0020】
一般に、ホストマシン200は、1つまたは複数の仮想マシンをホスティングすることが可能な任意のタイプまたは形式の物理的なコンピューティングデバイスを表す。ホストマシン200の例としては、ラップトップ、デスクトップ、サーバ、携帯電話、携帯情報端末(PDA)、マルチメディアプレーヤー、組込みシステム、これらの1つもしくは複数の組合せ、
図6の例示的なコンピューティングシステム610または任意の他の適切なコンピューティングデバイスが挙げられるがこれらに限定されない。
【0021】
一般に、仮想マシン202(1)〜(N)は、コンピュータ実行可能命令を読み取ることが可能な任意のタイプまたは形式の仮想化またはエミュレート化されたコンピューティングマシンを表す。仮想マシン202(1)〜(N)の例としては、システム仮想マシン、プロセス仮想マシンまたは任意の他の適切な仮想もしくはエミュレート化コンピューティングデバイスが挙げられるがこれらに限定されない。
図2で示される例では、仮想マシン202(1)〜(N)は、仮想化層204を介してホストマシン200の根本的なハードウェア208にアクセスすることができ、ホストマシン200のコンピューティングリソースを抽象化および管理することができる。
【0022】
図2で示されるように、ハードウェア208は、他の要素としては、少なくとも1つの記憶装置を含み得る。いくつかの実施形態では、仮想化層204は、仮想マシン202(1)〜(N)それぞれに対する複数のローカルストア212(1)〜(N)にハードウェア208を抽象化することができる。以下でさらに詳細に説明されるように、ローカルストア212(1)〜(N)を使用して、他の情報としては、共有ストア216へのクエリに使用することができるキャッシュされたファイルハッシュのコピーを格納することができる。
【0023】
一般に、共有ストア216は、
図2の仮想マシン202(1)〜(N)など、関連コンピューティングシステムのグループによって共有またはアクセスされ得る任意のタイプまたは形式の物理的なまたは仮想化されたストレージを表す。いくつかの例では、共有ストア216には、コンピューティングシステム(仮想マシン202(1)〜(N)など)のグループが遭遇する複数のファイルのそれぞれに対する、1)ファイルのハッシュ、2)ファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの結果(マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも1つの分類の論理的根拠、マルウェア分析を実行する際に使用される少なくとも1つのウイルス定義セットもしくはヒューリスティックまたは同様のもの)、3)ファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの日付(ファイルに対して実行された最近のマルウェアスキャンの日付など)、および/または、4)関連コンピューティングシステム間で共有され得る潜在的に有用な任意の他の情報が入り得るファイル属性データベース(
図1および5のファイル属性データベース120など)が入っているまたは含まれる場合がある。
【0024】
いかなるタイプまたは形式の関連コンピューティングシステムのグループも、共有ストアを共有するか、または、共有ストアにアクセスすることができる。一例では、共通のホスコンピューティングデバイス上で起動している複数の仮想マシン(
図2のホストマシン200上で起動している関連コンピューティングシステムのグループ220など)は、共有ストア(共有ストア216など)にアクセスすることができる。例えば、
図2で示されるように、仮想マシン202(1)〜(N)は、仮想化層204内で起動している保護プロセス206(例えば、ハイパーバイザによって管理される)を介して保護パーティション214内に位置する共有ストア216にアクセスすることができる。
【0025】
別の例では、共通のネットワーク内に位置する複数の物理的なマシン(ネットワーク304を介して連通している
図3の関連コンピューティングシステムのグループ320など)は、共有ストアにアクセスすることができる。例えば、
図3で示されるように、コンピューティングデバイス302(1)〜(N)は、ネットワーク304を介して共有ストア306にアクセスすることができる。この例では、共有ストア306は、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、または、関連する物理的なマシンのグループによってアクセスされ得る任意の他のタイプもしくは形式の記憶装置の少なくとも一部分を表す場合がある。
【0026】
図3で示される例では、コンピューティングデバイス302(1)〜(N)は、コンピュータ実行可能命令を読み取ることが可能な任意のタイプまたは形式の物理的なコンピューティングデバイスを表す場合がある。コンピューティングデバイス302(1)〜(N)の例としては、これらに限定されないが、ラップトップ、デスクトップ、サーバ、携帯電話、携帯情報端末(PDA)、マルチメディアプレーヤー、組込みシステム、これらの1つもしくは複数の組合せ、
図6の例示的なコンピューティングシステム610または任意の他の適切なコンピューティングデバイスが挙げられる。
【0027】
図3で示される例では、ネットワーク304は、通信またはデータ転送を容易にすることが可能な任意の媒体またはアーキテクチャを表すことができる。ネットワーク304の例としては、イントラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、キャンパスエリアネットワーク(CAN)、インターネット、電力線通信(PLC)、セルラネットワーク(例えば、GSM(登録商標)ネットワーク)、
図7の例示的なネットワークアーキテクチャ700または同様のものが挙げられるがこれらに限定されない。ネットワーク304は、無線または有線接続を使用して通信またはデータ転送を容易にすることができる。一例では、コンピューティングデバイス302(1)〜(N)は、TCP/IP通信プロトコルを使用して、ネットワーク304を介して共有ストア306にアクセスすることができるか、または、共有ストア306と通信することができる。
【0028】
図4は、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なコンピュータ実装方法400のフロー図である。
図4で示される工程は、任意の適切なコンピュータ実行可能コードおよび/またはコンピューティングシステムによって実行することができる。いくつかの実施形態では、
図4で示される工程は、
図1のシステム100、
図2のホストマシン200、
図3のシステム300、
図6のコンピューティングシステム610および/または
図7の例示的なネットワークアーキテクチャ700の複数の部分の1つもしくは複数のコンポーネントによって実行することができる。
【0029】
図4で示されるように、工程402では、本明細書に記載されるさまざまなシステムの1つまたは複数は、ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認することができる。例えば、
図1のオペレーション識別モジュール104は、
図2の仮想マシン202(1)の一部として、仮想マシン202(1)内でファイルに対してコンピューティングオペレーションを実行する必要があるかを確認することができる(例えば、仮想化層204によって仮想マシン202(1)に割り当てられた記憶装置210内の記憶空間に格納されたファイル)。
【0030】
工程402においてオペレーション識別モジュール104によって特定されたコンピューティングオペレーションは、コンピューティングリソースを消費するファイルに関連して実行された任意のタイプまたは形式のコンピューティングオペレーションを表す場合がある。工程402においてオペレーション識別モジュール104によって特定され得るコンピューティングオペレーションの例としては、ファイルのマルウェア分析(例えば、ファイルが悪質なものかどうか判断するため)、ファイルのデータ損失防止分析(例えば、ファイルに機密情報が入っているかどうか判断するため)、ファイルに対するコミュニティベースのレピュテーションルックアップ(例えば、コミュニティ内のファイルの信頼性もしくはレピュテーションを判断するため)、ファイルのファイルタイプ分析、または、ファイルに対してもしくはファイルに関連して実行することができる任意の他のタイプもしくは形式のコンピューティングオペレーションが挙げられるがこれらに限定されない。
【0031】
図4に戻って、工程404では、本明細書に記載されるシステムの1つまたは複数は、ファイルに関連するユニークな識別子を特定することができる。例えば、
図1のファイル識別モジュール106は、
図2の仮想マシン202(1)の一部として、工程402において特定されたファイルに関連するユニークな識別子を特定することができる。本明細書で使用される用語「ユニークな識別子」は、一般に、ファイルをユニークに識別するための任意のタイプまたは形式の方法を表す。ユニークな識別子の例としては、MD5ハッシュ、SHA−1ハッシュ、SHA−256ハッシュまたは同様のものなどのファイルハッシュが挙げられるがこれらに限定されない。
【0032】
本明細書に記載されるシステムは、さまざまな方法で工程404を実行することができる。一例では、
図1のファイル識別モジュール106は、ファイルのハッシュを作成することによってファイルに関連するユニークな識別子を特定することができる。例えば、ファイル識別モジュール106は、最初にファイルに遭遇する際に、仮想マシン202(1)の一部として、ファイルのハッシュを作成することができる。一例では、ファイル識別モジュール106は、次いで、仮想マシン202(1)に付随するローカルストア212(1)内にこのハッシュを格納する場合がある。この例では、ファイル識別モジュール106は、後段でファイルに遭遇する際に、再度ファイルのハッシュを作成することは対照的に、ローカルストア212(1)からこのファイルのハッシュを取り込むことができる。
【0033】
上記で詳細に説明されるように、仮想マシン202(1)〜(N)は、ローカルストア212(1)〜(N)内にさまざまな情報を格納することができる。仮想マシン202(1)〜(N)がローカルストア212(1)〜(N)内に格納することができる情報のタイプの例としては、これらに限定されないが、ファイルのハッシュなどのファイルメタデータ、ファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの日付(ファイルの最近のマルウェアスキャンの日付など)、ファイルのファイル起源情報または潜在的に有用な任意の他の情報が挙げられる。
【0034】
いくつかの実施形態では、ローカルストア212(1)〜(N)内のファイルに対するファイルメタデータは、ファイルが静的であるまたは変更されない限り持続させることができる。例えば、最初にファイルに遭遇する際、
図1のファイル識別モジュール106は、ローカルストア212(1)内のファイルに対するさまざまなファイルメタデータ(ファイルハッシュなど)を作成および格納することができる。この例では、このファイルに付随するファイルメタデータは、ファイルが変更されない限り、ローカルストア212(1)内に留まることができる。しかし、ファイル識別モジュール106がファイルは変更されたと判断すれば(例えば、ファイルシステムミニフィルタを介して)、ファイル識別モジュール106は、ローカルストア212(1)から変更または修正されたファイルに付随するすべてのファイルメタデータを消去または削除することができる。このように、ファイル識別モジュール106は、ローカルストア212(1)内に格納されるファイルメタデータ(ファイルハッシュなど)を確信を持っておよび効果的に再利用することができ、新しいファイルまたは新しいバージョンのファイルに対するファイルメタデータの再計算または再生成を行うだけでよい。
【0035】
ファイルをユニークに識別するために必要なコンピューティングリソースは、ファイルに対して実行されたコンピューティングオペレーションの結果を共有するために必要なコンピューティングリソースに等しいまたはそれを超える場合がある(例えば、ファイルのハッシュ値の計算は、同じファイルに対してマルウェアスキャンを実行するのと同じまたはそれより多くのコンピューティングリソースを消費する場合がある)ため、いくつかの例では、本明細書に記載されるシステムは、仮想マシン202(1)〜(N)が遭遇したファイルの選択部分に対して工程404〜408を実行するだけでよい(すなわち、本明細書に記載されるシステムは、特定の基準を満たすファイルに関して実行されたコンピューティングオペレーションの結果をユニークに識別および共有するだけでよい)。例えば、ファイル識別モジュール106は、
図4の工程404を実行する前に、1)工程402において特定されたファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも1つの追加のコンピューティングシステム上に位置する可能性があるかどうか判断する(それにより、関連コンピューティングシステムのグループ内の1つもしくは複数のコンピューティングシステムが工程402において特定されたファイルのインスタンスに対抗した、および/または、ファイルのインスタンスに対して工程402において特定された所望のコンピューティングオペレーションを事前に実行した可能性があるかどうか潜在的に示す)、ならびに/または、2)工程402において特定されたファイルが頻繁に変更される可能性が低いかどうか判断する(それにより、今後のリソース消費型のファイルハッシュオペレーションをファイルに対して頻繁に実行する必要があり得るかどうか潜在的に示す)ことができる。
【0036】
例えば、ファイル識別モジュール106が、ファイルは非ユーザが生成したファイルが入っている可能性があるディレクトリもしくは位置(「C:/Windows(登録商標)/System32/」または「C:/Program Files/Microsoft Office/」など)に位置する、および/または、ユーザが生成したファイルが入っている可能性がある位置もしくはディレクトリ(「C:/Documents and Settings/」など)内に位置しないと判断すれば、ファイル識別モジュール106は、ファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも1つの追加のコンピューティングシステム上に位置する可能性があると判断することができ、こうして、関連コンピューティングシステムのグループ内の1つもしくは複数のコンピューティングシステムが問題のファイルに対して工程402において特定されたコンピューティングオペレーションに事前に遭遇したおよび/または同コンピューティングオペレーションを事前に実行した可能性を高くする。
【0037】
同様に、ファイル識別モジュール106が、1)ファイルは静的なもしくは変更されないファイルと一般に関連するディレクトリもしくは位置(「C:/Windows/System32/」など)に位置する、2)ファイルは既定の期間内において既定の回数より少ない回数で(例えば、1年以内に5回より少ない回数で)変更された、および/または、3)ファイルは既定の期間(例えば、1年)を超えて静的であったと判断すれば、ファイル識別モジュール106は、ファイルが頻繁に変更される可能性が低いと判断することができ、こうして、今後、比較的わずかなリソース消費型のファイルハッシュオペレーションをファイルに対して実行する必要があり得ることを潜在的に示す。
【0038】
上記の例では、ファイル識別モジュール106が、ファイルは頻繁に変更される可能性が低い、および/または、ファイルの追加のインスタンスは関連コンピューティングシステムのグループ内に位置する可能性があると判断すれば、ファイル識別モジュール106は、
図4の工程404を実行して(例えば、ファイルのハッシュを特定または作成することによって)、例示的な方法400の継続を可能にすることができる。しかし、ファイル識別モジュール106が、ファイルは頻繁に変更される可能性がある、および/または、ファイルの追加のインスタンスは関連コンピューティングシステムのグループ内に位置する可能性が低いと判断すれば、工程402の終結と同時に例示的な方法400を終了することができる(例えば、ファイル識別モジュール106は、ファイルのハッシュの特定または作成を控えることができる)が、この理由は、工程404〜408を実行するために必要なコンピューティングリソースが、工程404〜408を実行することによってグループによって一括して保存されたコンピューティングリソースに等しいまたはそれを超える場合があるためである。
【0039】
図4に戻って、工程406では、本明細書に記載されるシステムの1つまたは複数は、工程404で特定されたユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも1つのコンピューティングシステムがファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断することができる。例えば、
図1のクエリモジュール108は、グループ220内の追加の仮想マシンがファイルのインスタンスに対して工程402で特定されたコンピューティングオペレーションを事前に実行したかどうかを判断するため、
図2の仮想マシン202(1)の一部として、工程404において特定されたファイルに関連するユニークな識別子を使用して共有ストア216にクエリを行うことができる。
【0040】
上記で詳細に説明されるように、共有ストアは、
図2の仮想マシン202(1)〜(N)および/またはコンピューティングデバイス302(1)〜(N)など、関連コンピューティングシステムのグループによって共有またはアクセスされ得る。いくつかの例では、これらのコンピューティングシステムは、このファイルメタデータを共有ストア内に格納することによって、関連グループ内の他のコンピューティングシステムとファイルに付随するファイルメタデータを共有することができる。例えば、
図2の仮想マシン202(1)〜(N)および/またはコンピューティングデバイス302(1)〜(N)は、
図2の仮想マシン202(1)〜(N)および/またはコンピューティングデバイス302(1)〜(N)が遭遇するファイルに対するファイルメタデータを、共有ストア216および306内にそれぞれ格納することができる。
図2の仮想マシン202(1)〜(N)および/またはコンピューティングデバイス302(1)〜(N)が共有ストア216および306内にそれぞれ格納することができる情報のタイプの例としては、これらに限定されないが、1)ファイルのハッシュ、2)ファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの結果(マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも1つの分類の論理的根拠、マルウェア分析を実行する際に使用される少なくとも1つのウイルス定義セットもしくはヒューリスティックまたは同様のもの)、3)ファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの日付(ファイルに対して実行された最近のマルウェアスキャンの日付など)、および/または、4)関連コンピューティングシステム間で共有され得る潜在的に有用な任意の他の情報が挙げられる。
【0041】
上記で詳細に説明されるように、いかなるタイプまたは形式の関連コンピューティングシステムのグループも、共有ストアを共有するか、または、共有ストアにアクセスすることができる。共有ストアを共有するか、または、共有ストアにアクセスすることができる関連コンピューティングシステムのグループのタイプの例としては、これらに限定されないが、共通のホスコンピューティングデバイス上で起動している複数の仮想マシン(
図2のホストマシン200上で起動している関連コンピューティングシステムのグループ220など)、共通のネットワーク内に位置する複数の物理的なマシン(例えば、
図3のネットワーク304を介して互いに連通している関連コンピューティングシステムのグループ320など)、または、関連コンピューティングシステムの任意の他のグループが挙げられる。
【0042】
関与するコンピューティングシステムのタイプに応じて、この共有ストアは、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、ハイパーバイザによって管理されるローカル記憶装置の保護パーティション(例えば、
図2の仮想化層204内の共有プロセス206によってアクセスされ得る保護パーティション214)または同様のものの少なくとも一部分を表す場合がある。この共有ストアへのアクセスは、関与するコンピューティングシステムのタイプに依存し得る。例えば、LAN内に位置する物理的なマシンは、TCP/IP通信プロトコルを使用して、ネットワーク接続記憶装置またはストレージエリアネットワーク上に位置する共有ストアと通信することができる。あるいは、共通のホストマシン上に位置する仮想マシンは、仮想化層内で起動している保護プロセスを介して、ハイパーバイザによって管理される保護パーティション内に位置する共有ストアと通信することができる。いくつかの例では、この共有ストアは、ファイルハッシュに基づいてインデックスを付けることができる。
【0043】
いくつかの例では、コンピューティングシステムは、なりすましおよび/または改ざんを防ぐため、安全通信メカニズムを介してこの共有ストアにアクセスするだけでよい。例えば、共通のホストマシン上に位置する仮想マシンは、仮想化層内で起動している保護プロセスを介して、ハイパーバイザによって管理される保護パーティション内に位置する共有ストアにアクセスするだけでよい。同様に、共通のネットワークに接続された物理的なマシンは、安全な(例えば、暗号化された)通信プロトコルを使用して、ネットワーク接続記憶装置またはストレージエリアネットワーク上に位置する共有ストアと通信するだけでよい。いくつかの例では、安全通信メカニズムのロバスト性および/または攻撃性は、関連コンピューティングシステムのグループのサイズに依存し得るが、その理由は、関連コンピューティングシステムのグループのサイズが大きいほど、安全通信メカニズムへの負担はますます大きくなるためである。
【0044】
上記で詳細に説明されるように、関連コンピューティングシステムは、追加の物理的なまたは仮想マシンが特定のファイルに対して所望のコンピューティングオペレーションを事前に実行したかを判断するため、ファイルハッシュを使用して、共有ストアにクエリを行うことができる。例えば、仮想マシン202(1)は、1つまたは複数の仮想マシン202(1)〜(N)がファイルに対して所望のコンピューティングオペレーションを事前に実行したかを判断するため、特定のファイルのハッシュを使用して、共有ストア216にクエリを行うことができる。共有ストア216が仮想マシン202(1)〜(N)のいずれも問題のファイルに対して所望のコンピューティングオペレーションを事前に実行しなかったと示せば(例えば、共有ストア216に、問題のファイルに対するファイルメタデータが入っていない場合または問題のファイルに対して実行された所望のコンピューティングオペレーションの結果が入っていない場合)、仮想マシン202(1)は、問題のファイルに対して所望のコンピューティングオペレーションを実行し、次いで、コンピューティングオペレーションの結果を用いて共有ストア202(1)を更新することができる(例えば、共有ストア216内に、問題のファイルのハッシュおよび問題のファイルに対して実行されたコンピューティングオペレーションの結果などのファイルメタデータを格納することによって)。
【0045】
後の時点において、仮想マシン202(N)は、同じファイルの追加のインスタンスに対して所望のコンピューティングオペレーションを実行する前に共有ストア216にクエリを行うことによって、関連コンピューティングシステム(この場合、仮想マシン202(N))が問題のファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断することができる。この例では、仮想マシン202(N)は、工程408に関連して以下で説明されるように、再度コンピューティングオペレーションを実行する代わりに、共有ストア216から所望のコンピューティングオペレーションの結果を取り込むことができる。
【0046】
後に問題のファイルが変更されれば、および、後に仮想マシン202(1)が修正または変更されたファイルに対してコンピューティングオペレーションを実行する必要があると確認すれば、仮想マシン202(1)は、1つまたは複数の仮想マシン202(1)〜(N)が変更されたファイルに対して所望のコンピューティングオペレーションを事前に実行したかを判断するため、修正または変更されたファイルの新しいハッシュを使用して共有ストア216に再度クエリを行うことができる。上記と同様に、共有ストア216が仮想マシン202(1)〜(N)のいずれも変更されたファイルに対して所望のコンピューティングオペレーションを事前に実行しなかったと示せば(すなわち、共有ストア216に、変更されたファイルに対するファイルメタデータが入っていない場合または変更されたファイルに対して実行された所望のコンピューティングオペレーションの結果が入っていない場合)、仮想マシン202(1)は、変更されたファイルに対して所望のコンピューティングオペレーションを実行し、次いで、コンピューティングオペレーションの結果を用いて共有ストア202(1)を更新することができる。
【0047】
上記の例では、共有ストア216に、オリジナルの変更されていないファイルと変更または修正されたファイルの両方に対するファイルメタデータ(ファイルハッシュおよびコンピューティングオペレーションの結果など)が入っている場合がある。このため、1つまたは複数の仮想マシン202(1)〜(N)は、オリジナルのまたは変更されたファイルのハッシュを使用して共有ストア216にクエリを行うことによって、仮想マシン202(1)〜(N)内の追加の仮想マシンがオリジナルのファイルまたは変更されたファイルのいずれかに対して所望のコンピューティングオペレーションを事前に実行したかどうかを判断することができる。
【0048】
図5は、上記で詳細に説明されるように、
図2および3のそれぞれの共有ストア216および306などの共有ストアの一部分を表し得る例示的なファイル属性データベース120の図である。
図5で示されるように、ファイル属性データベース120には、複数のファイルのそれぞれに対する、1)ファイルのハッシュ、2)ファイルの最近のスキャンの日付、3)ファイルの最近のスキャンの日付中に使用されたウイルス定義セット、4)スキャン中にファイルに割り当てられた分類、5)スキャン中にファイルに割り当てられた少なくとも1つの分類の論理的根拠、および、6)ファイルに対するコミュニティベースのレピュテーション情報を特定する情報が入り得る。
【0049】
いくつかの例では、関連する物理的なまたは仮想マシンのグループ内の物理的なまたは仮想マシンは、追加の物理的なまたは仮想マシンが特定のファイルに対して所望のコンピューティングオペレーションを事前に実行したかどうかを判断するため、共有ストア内のファイル属性データベース120にアクセスすることができる。例えば、
図1のクエリモジュール108は、
図2の仮想マシン202(1)の一部として、グループ220内の追加の仮想マシンがハッシュ「0xEFCDAB89」を有するファイルに対してマルウェアスキャンを事前に実行したかどうかを判断するため、ファイル属性データベース120が入っている共有ストア216にクエリを行うことができる。この例では、クエリモジュール108は、ハッシュ「0xEFCDAB89」を使用して共有ストア216内のファイル属性データベース120にクエリを行うことによって、グループ220内の追加の仮想マシンが2010年1月2日の問題のファイルに対してマルウェアスキャンを事前に実行したかどうかを判断することができ、ウイルス定義セット3.1294内のシグネチャマッチングにより、問題のファイルが悪質なファイルを表すものと判断した。この例では、ファイル属性データベース120に問題のファイルに対して実行されたマルウェアスキャンの結果が入っているため、クエリモジュール108は、
図4の工程408に進むことができる。
【0050】
いくつかの例では、クエリモジュール108が、共有ストア内のファイル属性データベース120にクエリを行うことによって、関連コンピューティングシステムのグループ内の追加のコンピューティングシステムが問題のファイルに対してマルウェアスキャンを事前に実行したと判断すれば、クエリモジュール108は、この前回のマルウェアスキャン中に使用されたウイルス定義セットもしくはヒューリスティックが問題のコンピューティングシステムによって使用されるべきウイルス定義セットもしくはヒューリスティックと同一であるか、同ウイルス定義セットもしくはヒューリスティックと同様であるか、または、同ウイルス定義セットもしくはヒューリスティックより新しいものであるかどうかも判断することができる。例えば、クエリモジュール108が、
図2の仮想マシン202(1)の一部として、前回の仮想マシンは工程402において特定されたファイルに対してマルウェアスキャンを事前に実行したと判断すれば、クエリモジュール108は、この前回の仮想マシンによって使用されたウイルス定義セットもしくはヒューリスティックが仮想マシン202(1)によって現在インストールされているもしくは使用中のウイルス定義セットもしくはヒューリスティックと同一であるか、同ウイルス定義セットもしくはヒューリスティックと同様であるか、または、同ウイルス定義セットもしくはヒューリスティックより新しいものであるかどうかを判断する(例えば、共有ストア216内のファイル属性データベース120内に入っている情報を分析することによって)ことができる。そうであれば、クエリモジュール108は、例示的な方法400の工程408に進むことができる。
【0051】
しかし、クエリモジュール108が、この前回の仮想マシンによって使用されたウイルス定義セットもしくはヒューリスティックが仮想マシン202(1)によってインストールされているもしくは使用中のウイルス定義セットもしくはヒューリスティックと異なるか、または、同ウイルス定義セットもしくはヒューリスティックより古いものであると判断すれば、クエリモジュール108は、問題のファイルに対して新しいマルウェアスキャンを実行することを仮想マシン202(1)に命令することができる。この例では、クエリモジュール108は、仮想マシン202(1)による新しいマルウェアスキャンの完了と同時に、この新しいマルウェアスキャンの結果を用いて共有ストア216を更新することができる。
【0052】
図4に戻って、工程408では、本明細書に記載されるシステムの1つまたは複数は、再度コンピューティングオペレーションを実行する代わりに、共有ストアから所望のコンピューティングオペレーションの結果を取り込むことができる。例えば、
図1のクエリモジュール108は、
図2の仮想マシン202(1)の一部として、共有ストア216内のファイル属性データベース120からハッシュ「0xEFCDAB89」を有するファイルに対して実行されたマルウェアスキャンの結果を取り込むことができる。次いで、クエリモジュール108は、問題のファイルに対して追加のマルウェアスキャンを実行する代わりに、これらの結果を使用することを仮想マシン202(1)に命令することができる。工程408の完了と同時に、
図4の例示的な方法400を終了することができる。
【0053】
上記で詳細に説明されるように、関連コンピューティングシステムのグループによって共有されるストア内の共通のまたは共有されたファイルに対して実行されたリソース消費型のコンピューティングオペレーション(マルウェアスキャンまたはファイルレピュテーションルックアップなど)の結果を格納することによって、本明細書に記載されるシステムおよび方法は、関連コンピューティングシステム(ホストマシン上で起動している仮想マシンのグループまたは共通のネットワークに接続された物理的なコンピューティングデバイスのグループなど)がそのようなコンピューティングオペレーションの結果を共有および再利用することを可能にし得る。このため、これらのシステムおよび方法は、グループ間で共通して共有されるファイルに対して実行される重複コンピューティングオペレーションの数を低減することができ、グループによって一括して消費されるコンピューティングリソースの量を低減する可能性がある。
【0054】
さらに、本明細書に記載されるシステムおよび方法は、グループ内の他のコンピューティングシステムが遭遇する可能性があるファイル、および/または、頻繁に変更される可能性が低いファイルのインスタンスに対して実行されたコンピューティングオペレーションの結果を共有するだけで、そのようなファイルに対して実行されたコンピューティングオペレーションの結果を共有するために必要なコンピューティングリソースがそのようなコンピューティングオペレーションの結果を共有することによって一括して保存されたコンピューティングリソースに等しくもそれを超えることもないことを保証しようと試みる場合がある。
【0055】
図6は、本明細書に記載されるおよび/または示される1つまたは複数の実施形態を実施することが可能な例示的なコンピューティングシステム610のブロック図である。コンピューティングシステム610は、コンピュータ可読命令を実行することが可能な任意のシングルまたはマルチプロセッサコンピューティングデバイスまたはシステムを幅広く表す。コンピューティングシステム610の例としては、これらに限定されないが、ワークステーション、ラップトップ、クライアント側端末、サーバ、分配されたコンピューティングシステム、ハンドヘルドデバイスまたは任意の他のコンピューティングシステムもしくはデバイスが挙げられる。その最も基本的な構成では、コンピューティングシステム610は、少なくとも1つのプロセッサ614およびシステムメモリ616を含み得る。
【0056】
一般に、プロセッサ614は、データの処理または命令の解釈および実行が可能な任意のタイプまたは形式の処理ユニットを表す。ある実施形態では、プロセッサ614は、ソフトウェアアプリケーションまたはモジュールから命令を受け取ることができる。これらの命令は、本明細書に記載されるおよび/または示される例示的な実施形態の1つまたは複数の機能をプロセッサ614に実行させることができる。例えば、プロセッサ614は、単独でまたは他の要素と組み合わせて、本明細書に記載される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の1つもしくは複数を実行することができる、および/または、実行する手段となり得る。また、プロセッサ614は、本明細書に記載されるおよび/または示される任意の他の工程、方法またはプロセスを実行することもできる、および/または、実行する手段ともなり得る。
【0057】
一般に、システムメモリ616は、データおよび/またはコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の揮発性または非揮発性記憶装置または媒体を表す。システムメモリ616の例としては、これらに限定されないが、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリまたは任意の他の適切なメモリデバイスが挙げられる。必須ではないが、ある実施形態では、コンピューティングシステム610は、揮発性メモリユニット(例えば、システムメモリ616など)と非揮発性記憶装置(例えば、以下で詳細に説明される一次記憶装置632など)の両方を含み得る。一例では、
図1のモジュール102の1つまたは複数は、システムメモリ616にロードされ得る。
【0058】
また、ある実施形態では、例示的なコンピューティングシステム610は、プロセッサ614およびシステムメモリ616に加えて、1つまたは複数のコンポーネントまたは要素も含み得る。例えば、
図6で示されるように、コンピューティングシステム610は、メモリコントローラ618、入出力(I/O)コントローラ620および通信インターフェース622を含み得、その各々は、通信インフラ612を介して相互接続され得る。一般に、通信インフラ612は、コンピューティングデバイスの1つまたは複数のコンポーネント間の通信を容易にすることが可能な任意のタイプまたは形式のインフラを表す。通信インフラ612の例としては、これらに限定されないが、通信バス(ISA、PCI、PCIeまたは同様のバスなど)およびネットワークが挙げられる。
【0059】
一般に、メモリコントローラ618は、メモリもしくはデータを取り扱うまたはコンピューティングシステム610の1つもしくは複数のコンポーネント間の通信を制御することが可能な任意のタイプまたは形式のデバイスを表す。例えば、ある実施形態では、メモリコントローラ618は、通信インフラ612を介してプロセッサ614、システムメモリ616およびI/Oコントローラ620間の通信を制御することができる。ある実施形態では、メモリコントローラ618は、単独でまたは他の要素と組み合わせて、本明細書に記載されるおよび/または示される1つまたは複数の工程または特徴の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新などを実行することができる、および/または、実行する手段となり得る。
【0060】
一般に、I/Oコントローラ620は、コンピューティングデバイスの入出力機能を調整および/または制御することが可能な任意のタイプまたは形式のモジュールを表す。例えば、ある実施形態では、I/Oコントローラ620は、プロセッサ614、システムメモリ616、通信インターフェース622、ディスプレイアダプタ626、入力インターフェース630およびストレージインターフェース634などのコンピューティングシステム610の1つまたは複数の要素間のデータ転送を制御するかまたは容易にすることができる。I/Oコントローラ620は、例えば、単独でまたは他の要素と組み合わせて、本明細書に記載される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の1つもしくは複数を実行する、および/または、実行する手段となるよう使用することができる。また、I/Oコントローラ620は、本開示に記載される他の工程および特徴を実行する、および/または、実行する手段となるよう使用することができる。
【0061】
通信インターフェース622は、例示的なコンピューティングシステム610と1つまたは複数の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプまたは形式の通信デバイスまたはアダプタを幅広く表す。例えば、ある実施形態では、通信インターフェース622は、コンピューティングシステム610と追加のコンピューティングシステムを含むプライベートまたはパブリックネットワークとの間の通信を容易にすることができる。通信インターフェース622の例としては、これらに限定されないが、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデムおよび任意の他の適切なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース622は、インターネットなどのネットワークへの直接リンクを介してリモートサーバとの直接接続を実現することができる。また、通信インターフェース622は、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワークなど)、パーソナルエリアネットワーク、電話もしくはケーブルネットワーク、携帯電話接続、衛星データ接続または任意の他の適切な接続を通じて、そのような接続を間接的に実現することもできる。
【0062】
また、ある実施形態では、通信インターフェース622は、外部のバスまたは通信チャネルを介してコンピューティングシステム610と1つまたは複数の追加のネットワークまたは記憶装置との間の通信を容易にするよう構成されたホストアダプタを表す場合もある。ホストアダプタの例としては、これらに限定されないが、SCSIホストアダプタ、USBホストアダプタ、IEEE1394ホストアダプタ、SATAおよびeSATAホストアダプタ、ATAおよびPATAホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネットアダプタまたは同様のものが挙げられる。また、通信インターフェース622は、コンピューティングシステム610が分配されたコンピューティングまたはリモートコンピューティングに参加することを可能にする場合もある。例えば、通信インターフェース622は、実行のためにリモートデバイスから命令を受け取るか、または、リモートデバイスに命令を送信することができる。ある実施形態では、通信インターフェース622は、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の1つまたは複数を実行することができる、および/または、実行する手段となり得る。また、通信インターフェース622は、本開示に記載される他の工程および特徴を実行する、および/または、実行する手段となるよう使用することができる。
【0063】
図6で示されるように、コンピューティングシステム610は、ディスプレイアダプタ626を介して通信インフラ612と結合される少なくとも1つのディスプレイデバイス624も含み得る。一般に、ディスプレイデバイス624は、ディスプレイアダプタ626によって転送された情報を視覚的に表示することが可能な任意のタイプまたは形式のデバイスを表す。同様に、ディスプレイアダプタ626は、一般に、ディスプレイデバイス624上で表示するため、通信インフラ612から(または、当技術分野で公知のフレームバッファから)グラフィックス、テキストおよび他のデータを転送するよう構成された任意のタイプまたは形式のデバイスを表す。
【0064】
また、
図6で示されるように、例示的なコンピューティングシステム610は、入力インターフェース630を介して通信インフラ612と結合される少なくとも1つの入力デバイス628も含み得る。一般に、入力デバイス628は、例示的なコンピューティングシステム610へのコンピュータまたは人間が生成した入力を提供することが可能な任意のタイプまたは形式の入力デバイスを表す。入力デバイス628の例としては、これらに限定されないが、キーボード、ポインティングデバイス、音声認識デバイスまたは任意の他の入力デバイスが挙げられる。少なくとも1つの実施形態では、入力デバイス628は、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の1つまたは複数を実行することができる、および/または、実行する手段となり得る。また、入力デバイス628は、本開示に記載される他の工程および特徴を実行する、および/または、実行する手段となるよう使用することもできる。
【0065】
また、
図6で示されるように、例示的なコンピューティングシステム610は、ストレージインターフェース634を介して通信インフラ612と結合される一次記憶装置632およびバックアップ記憶装置633も含み得る。一般に、記憶装置632および633は、データおよび/または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。例えば、記憶装置632および633は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブまたは同様のものであり得る。一般に、ストレージインターフェース634は、記憶装置632および633とコンピューティングシステム610の他のコンポーネントとの間でデータを転送するための任意のタイプまたは形式のインターフェースまたはデバイスを表す。一例では、
図1のファイル属性データベース120は、一次記憶装置632に格納することができる。
【0066】
ある実施形態では、記憶装置632および633は、コンピュータソフトウェア、データまたは他のコンピュータ可読情報を格納するよう構成されたリムーバブルストレージユニットから読み取るおよび/または同リムーバブルストレージユニットに書き込むよう構成され得る。適切なリムーバブルストレージユニットの例としては、これらに限定されないが、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスまたは同様のものが挙げられる。また、記憶装置632および633は、コンピュータソフトウェア、データまたは他のコンピュータ可読命令をコンピューティングシステム610にロードすることを可能にするための他の同様の構造またはデバイスも含み得る。例えば、記憶装置632および633は、ソフトウェア、データまたは他のコンピュータ可読情報を読み取るおよび書き込むよう構成され得る。また、記憶装置632および633は、コンピューティングシステム610の一部であり得るか、または、他のインターフェースシステムを通じてアクセスされる別々のデバイスでもあり得る。
【0067】
ある実施形態では、記憶装置632および633は、例えば、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の1つまたは複数を実行する、および/または、実行する手段となるよう使用することができる。また、記憶装置632および633は、本開示に記載される他の工程および特徴を実行する、および/または、実行する手段となるよう使用することもできる。
【0068】
また、他の多くのデバイスまたはサブシステムを、コンピューティングシステム610に接続することができる。逆に、
図6で示されるコンポーネントおよびデバイスのすべてが、本明細書に記載されるおよび/または示される実施形態を実施するために必ずしも存在しているわけではない。また、上記で言及されたデバイスまたはサブシステムは、
図6で示されるものとは異なる形で相互接続することもできる。また、コンピューティングシステム610は、任意の数のソフトウェア、ファームウェアおよび/またはハードウェア構成を使用することもできる。例えば、本明細書に開示される1つまたは複数の例示的な実施形態は、コンピュータ可読媒体上でコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令またはコンピュータ制御論理とも呼ばれる)として符号化することができる。語句「コンピュータ可読媒体」は、一般に、コンピュータ可読命令を格納または送達することが可能な任意の形式のデバイス、キャリアまたは媒体を指す。コンピュータ可読媒体の例としては、これらに限定されないが、搬送波などの伝送型の媒体、ならびに、磁気記憶媒体(例えば、ハードディスクドライブおよびフロッピーディスク)、光記憶媒体(例えば、CD−ROMまたはDVD−ROM)、電子記憶媒体(例えば、ソリッドステートドライブおよびフラッシュメディア)および他の分配システムなどの物理的な媒体が挙げられる。
【0069】
コンピュータプログラムが入っているコンピュータ可読媒体は、コンピューティングシステム610にロードすることができる。次いで、コンピュータ可読媒体上に格納されたコンピュータプログラムのすべてまたは一部分は、次いで、システムメモリ616ならびに/または記憶装置632および633のさまざまな部分に格納することができる。プロセッサ614によって実行されると、コンピューティングシステム610にロードされたコンピュータプログラムは、プロセッサ614に、本明細書に記載されるおよび/または示される1つまたは複数の例示的な実施形態の機能を実行させる、および/または、実行する手段となるようにすることができる。それに加えてまたは代替法として、本明細書に記載されるおよび/または示される1つまたは複数の例示的な実施形態は、ファームウェアおよび/またはハードウェアで実施することができる。例えば、コンピューティングシステム610は、本明細書に開示された1つまたは複数の例示的な実施形態を実施するよう適合された特定用途向け集積回路(ASIC)として構成され得る。
【0070】
図7は、クライアントシステム710、720および730ならびにサーバ740および745をネットワーク750と結合することができる例示的なネットワークアーキテクチャ700のブロック図である。一般に、クライアントシステム710、720および730は、
図6の例示的なコンピューティングシステム610などの任意のタイプまたは形式のコンピューティングデバイスまたはシステムを表す。同様に、サーバ740および745は、一般に、さまざまなデータベースサービスを提供するよう構成された、および/または、あるソフトウェアアプリケーションを起動するよう構成された、アプリケーションサーバまたはデータベースサーバなどのコンピューティングデバイスまたはシステムを表す。一般に、ネットワーク750は、例えば、イントラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)またはインターネットを含む任意の電気通信ネットワークまたはコンピュータネットワークを表す。一例では、クライアントシステム710、720および/もしくは730は
図1のモジュール102を含み得、ならびに/または、サーバ740および/もしくは745は
図1のファイル属性データベース120を含み得る。
【0071】
図7で示されるように、1つまたは複数の記憶装置760(1)〜(N)は、サーバ740に直接取り付けることができる。同様に、1つまたは複数の記憶装置770(1)〜(N)は、サーバ745に直接取り付けることができる。記憶装置760(1)〜(N)および記憶装置770(1)〜(N)は、一般に、データおよび/または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。ある実施形態では、記憶装置760(1)〜(N)および記憶装置770(1)〜(N)は、NFS、SMBまたはCIFSなどのさまざまなプロトコルを使用して、サーバ740および745と通信するよう構成されたネットワーク接続記憶(NAS)装置を表す場合がある。
【0072】
また、サーバ740および745は、ストレージエリアネットワーク(SAN)ファブリック780に接続することもできる。一般に、SANファブリック780は、複数の記憶装置間の通信を容易にすることが可能な任意のタイプまたは形式のコンピュータネットワークまたはアーキテクチャを表す。SANファブリック780は、サーバ740および745と複数の記憶装置790(1)〜(N)および/またはインテリジェントなストレージアレイ795との間の通信を容易にすることができる。また、SANファブリック780は、装置790(1)〜(N)およびアレイ795がクライアントシステム710、720および730にローカルで接続されたデバイスのように見えるように、ネットワーク750ならびにサーバ740および745を介して、クライアントシステム710、720および730と記憶装置790(1)〜(N)および/またはインテリジェントなストレージアレイ795との通信を容易にすることもできる。記憶装置760(1)〜(N)および記憶装置770(1)〜(N)と同様に、記憶装置790(1)〜(N)およびインテリジェントなストレージアレイ795は、一般に、データおよび/またはコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。
【0073】
ある実施形態では、
図6の例示的なコンピューティングシステム610に関連して、
図6の通信インターフェース622などの通信インターフェースを使用して、各クライアントシステム710、720および730とネットワーク750との間の接続性を提供することができる。クライアントシステム710、720および730は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバ740または745上の情報にアクセスできる場合がある。そのようなソフトウェアは、クライアントシステム710、720および730がサーバ740、サーバ745、記憶装置760(1)〜(N)、記憶装置770(1)〜(N)、記憶装置790(1)〜(N)またはインテリジェントなストレージアレイ795によってホスティングされるデータにアクセスすることを可能にすることができる。
図7はデータを交換するためのネットワーク(インターネットなど)の使用について示すが、本明細書に記載されるおよび/または示される実施形態は、インターネットまたは任意の特定のネットワークベースの環境に限定されない。
【0074】
少なくとも1つの実施形態では、本明細書に開示される1つまたは複数の例示的な実施形態のすべてまたは一部分は、コンピュータプログラムとして符号化することができ、サーバ740、サーバ745、記憶装置760(1)〜(N)、記憶装置770(1)〜(N)、記憶装置790(1)〜(N)、インテリジェントなストレージアレイ795またはそれらの任意の組合せにロードし、これらによって実行することができる。また、本明細書に開示される1つまたは複数の例示的な実施形態のすべてまたは一部分は、コンピュータプログラムとして符号化することができ、サーバ740に格納し、サーバ745によって起動し、ネットワーク750上でクライアントシステム710、720および730に分配することもできる。それに応じて、ネットワークアーキテクチャ700は、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の1つまたは複数を実行することができる、および/または、実行する手段となり得る。また、ネットワークアーキテクチャ700は、本開示に記載される他の工程および特徴を実行する、および/または、実行する手段となるよう使用することもできる。
【0075】
上記で詳細に説明されるように、コンピューティングシステム610および/またはネットワークアーキテクチャ700の1つまたは複数のコンポーネントは、単独でまたは他の要素と組み合わせて、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的な方法の1つまたは複数の工程を実行することができる、および/または、実行する手段となり得る。一例では、方法は、1)ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認する工程、2)ファイルに関連するユニークな識別子を特定する工程、3)ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも1つのコンピューティングシステムがファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断する工程、ならびに、4)コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込む工程を含み得る。
【0076】
一例では、ファイルに関連するユニークな識別子を特定する工程は、ファイルのハッシュを特定する工程を含み得る。この例では、ファイルのハッシュを特定する工程は、ハッシュを作成する工程および/またはローカルストアからハッシュを取り込む工程を含み得る。また、方法は、ファイルが修正されているか判断する工程と、次いで、ローカルストアからファイルに関連する情報を消去する工程とを含み得る。
【0077】
また、いくつかの例では、方法は、ファイルに関連するユニークな識別子を特定する前に、ファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも1つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程、および/または、ファイルが頻繁に変更される可能性が低いか判断する工程も含み得る。これらの例では、ファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも1つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程は、ファイルは非ユーザが生成したファイルが入っている可能性がある位置に位置するか判断する工程、および/または、ファイルはユーザが生成したファイルが入っている可能性がある位置に位置しないか判断する工程を含み得る。同様に、ファイルが頻繁に変更される可能性が低いか判断する工程は、ファイルは静的なファイルと一般に関連する位置に位置するか判断する工程、ファイルは既定の期間内において既定の回数より少ない回数で変更されたか判断する工程、および/または、ファイルは既定の期間を超えて静的であったか判断する工程を含み得る。
【0078】
コンピューティングオペレーションの例としては、これらに限定されないが、ファイルのマルウェア分析、ファイルのデータ損失防止分析、ファイルに対するコミュニティベースのレピュテーションルックアップおよび/またはファイルのファイルタイプ分析が挙げられる。共有ストアには、ファイルのハッシュ、ファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの結果および/またはファイルに関連して実行された少なくとも1つのコンピューティングオペレーションの日付が入り得る。さらに、コンピューティングオペレーションの結果は、マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも1つの分類の論理的根拠および/またはマルウェア分析を実行する際に使用される少なくとも1つのウイルス定義セットもしくはヒューリスティックを特定する情報を含み得る。
【0079】
いくつかの例では、関連コンピューティングシステムのグループ内の少なくとも1つのコンピューティングシステムがファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断する工程は、関連コンピューティングシステムのグループ内の少なくとも1つのコンピューティングシステムが同一の、同様なまたはより最近のウイルス定義セットもしくはヒューリスティックを使用してファイルのインスタンスに対してマルウェア分析を事前に実行したか判断する工程を含み得る。
【0080】
いくつかの例では、共有ストアは、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、および/または、ハイパーバイザによって管理されるローカル記憶装置の保護パーティションの少なくとも一部分を含み得る。また、共有ストアは、ファイルハッシュに基づいてインデックスを付けることもできる。さらに、関連コンピューティングシステムのグループは、共通のホストコンピューティングデバイス上で起動している複数の仮想マシンおよび/または共通のネットワークに接続された複数の物理的なマシンを含み得る。
【0081】
また、一例では、方法は、1)ファイルに対して追加のコンピューティングオペレーションを実行する必要があるかを確認する工程、2)ユニークな識別子を使用して共有ストアにクエリを行うことによって、ファイルのインスタンスに対して追加のコンピューティングオペレーションを事前に実行しなかったか判断する工程、3)ファイルに対して追加のコンピューティングオペレーションを実行する工程、ならびに、4)追加のコンピューティングオペレーションの結果を用いて共有ストアを更新する工程も含み得る。
【0082】
前述の開示は特定のブロック図、フローチャートおよび例を使用してさまざまな実施形態について記載しているが、本明細書に記載されるおよび/または示される各ブロック図のコンポーネント、フローチャートの工程、オペレーションおよび/またはコンポーネントは、広範囲にわたるハードウェア、ソフトウェアまたはファームウェア(または、それらの任意の組合せ)構成を使用して、個別におよび/または一括して実装することができる。さらに、他のコンポーネント内に含まれるコンポーネントのいかなる開示も、他の多くのアーキテクチャを実装して同じ機能性を達成することができるため、本来は例示的なものであると見なすべきである。
【0083】
いくつかの例では、
図1の例示的なシステム100のすべてまたは一部分は、クラウドコンピューティングまたはネットワークベースの環境の複数の部分を表す場合がある。クラウドコンピューティング環境は、インターネットを介してさまざまなサービスおよびアプリケーションを提供することができる。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてのプラットホーム、サービスとしてのインフラなど)は、ウェブブラウザまたは他のリモートインターフェースを通じてアクセスすることができる。本明細書に記載されるさまざまな機能は、リモートデスクトップ環境または任意の他のクラウドベースのコンピューティング環境を通じて提供することができる。
【0084】
本明細書に記載されるおよび/または示されるプロセスパラメータおよび工程の順序は単なる例示として与えられるものであり、要望通り変更することができる。例えば、本明細書に記載されるおよび/または示される工程は特定の順番で示されるまたは論じられる場合があるが、これらの工程は、必ずしも示されるまたは論じられる順番で実行する必要があるわけではない。本明細書に記載されるおよび/または示されるさまざまな例示的な方法は、本明細書に記載されるまたは示される工程の1つもしくは複数を省略するか、または、開示される工程に加えて追加の工程を含めることもできる。
【0085】
完全に機能的なコンピューティングシステムとの関連でさまざまな実施形態が本明細書に記載されるおよび/または示されるが、これらの例示的な実施形態の1つまたは複数は、実際に分配を行うために使用される特定のタイプのコンピュータ可読媒体に関わらず、プログラム製品としてさまざまな形式で分配され得る。また、本明細書に開示される実施形態は、ある一定のタスクを実行するソフトウェアモジュールを使用して実施することもできる。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上またはコンピューティングシステムに格納することができるスクリプト、バッチまたは他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態の1つまたは複数を実行するようコンピューティングシステムを構成することができる。
【0086】
さらに、本明細書に記載される1つまたは複数のモジュールは、データ、物理的デバイスおよび/または物理的デバイスの表現をある形式から別の形式へ変換することができる。例えば、
図1のクエリモジュール108は、
図2および3の共有ストア216および306の特性または特徴を、そのようなストア内の関連コンピューティングシステムによって実行されたコンピューティングオペレーションの結果を修正または格納することによって、変換することができる。
【0087】
先の説明は、当業者が本明細書に開示される例示的な実施形態のさまざまな態様を最良に利用できるよう提供されている。この例示的な説明は、包括的であるまたは開示される形式と全く同一の形式に限定することを意図しない。多くの変更形態および変形形態を、本開示の精神および範囲から逸脱することなく作成することができる。本明細書に開示される実施形態は、すべての点において、限定的なものではなく例示的なものとして見なされるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物を参照すべきである。
【0088】
特に断りのない限り、本明細書および特許請求の範囲で使用される単数形「a」または「an」は、「少なくとも1つの(at least one of)」の意味に解釈されるものとする。さらに、使い易さを考慮して、本明細書および特許請求の範囲で使用される語「を含む(including)」および「を有する(having)」は、語「備える、含む(comprising)」と交換可能であり、同語と同じ意味を有する。