(57)【要約】  関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのコンピュータ実装は、１）ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認する工程、２）ファイルに関連するユニークな識別子を特定する工程、３）ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムがファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断する工程、および、４）コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込む工程を含み得る。さまざまな他の方法、システムおよびコンピュータ可読媒体も開示される。
2013518342.tif 000002
【特許請求の範囲】
【請求項１】
関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実行され、
ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認する工程と、
前記ファイルに関連するユニークな識別子を特定する工程と、
前記ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断する工程と、
前記コンピューティングオペレーションを実行する代わりに、前記共有ストアから前記コンピューティングオペレーションの結果を取り込む工程と
を含むコンピュータ実装方法。
【請求項２】
前記コンピューティングオペレーションは、
前記ファイルのマルウェア分析、
前記ファイルのデータ損失防止分析、
前記ファイルに対するコミュニティベースのレピュテーションルックアップ、
前記ファイルのファイルタイプ分析
の少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記ファイルに関連するユニークな識別子を特定する工程は、前記ファイルのハッシュを特定することを含む、請求項１に記載の方法。
【請求項４】
前記ファイルのハッシュを特定する工程は、
前記ハッシュを作成すること、
ローカルストアから前記ハッシュを取り込むこと
の少なくとも１つを含む、請求項３に記載の方法。
【請求項５】
前記ファイルが修正されているか判断する工程と、
前記ローカルストアから前記ファイルに関連する情報を消去する工程と
をさらに含む、請求項４に記載の方法。
【請求項６】
前記ファイルに関連するユニークな識別子を特定する前に、
前記ファイルの追加のインスタンスが前記関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程、
前記ファイルが頻繁に変更される可能性が低いか判断する工程
の少なくとも１つをさらに含む、請求項１に記載の方法。
【請求項７】
前記ファイルの追加のインスタンスが前記関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程は、
前記ファイルは非ユーザが生成したファイルが入っている可能性がある位置に位置するか判断すること、
前記ファイルはユーザが生成したファイルが入っている可能性がある位置に位置しないか判断すること
の少なくとも１つを含む、請求項６に記載の方法。
【請求項８】
前記ファイルが頻繁に変更される可能性が低いか判断する工程は、
前記ファイルは静的なファイルと一般に関連する位置に位置するか判断すること、
前記ファイルは既定の期間内において既定の回数より少ない回数で変更されたか判断すること、
前記ファイルは既定の期間を超えて静的であったか判断すること
の少なくとも１つを含む、請求項６に記載の方法。
【請求項９】
前記共有ストアには、
前記ファイルのハッシュ、
前記ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの結果、
前記ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付
の少なくとも１つが入っている、請求項１に記載の方法。
【請求項１０】
前記コンピューティングオペレーションの結果は、
マルウェア分析の間に前記ファイルに割り当てられた分類、
前記マルウェア分析の間に前記ファイルに割り当てられた少なくとも１つの前記分類の論理的根拠、
前記マルウェア分析を実行する際に使用される少なくとも１つのウイルス定義セットもしくはヒューリスティック
の少なくとも１つを特定する情報を含む、請求項９に記載の方法。
【請求項１１】
前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断する工程は、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが
同一のウイルス定義セットもしくはヒューリスティックと、
同様なウイルス定義セットもしくはヒューリスティックと、
より最近のウイルス定義セットもしくはヒューリスティックと
を使用して前記ファイルのインスタンスに対してマルウェア分析を事前に実行したか判断する工程を含む、請求項１に記載の方法。
【請求項１２】
前記共有ストアは、
ネットワーク接続記憶装置、
ストレージエリアネットワーク、
ファイルサーバ、
クラウドベース記憶装置、
ハイパーバイザによって管理されるローカル記憶装置の保護パーティション
の少なくとも１つの少なくとも一部分を備える、請求項１に記載の方法。
【請求項１３】
前記共有ストアは、ファイルハッシュに基づいてインデックスが付けられる、請求項１に記載の方法。
【請求項１４】
前記関連コンピューティングシステムのグループは、
共通のホストコンピューティングデバイス上で起動している複数の仮想マシンと、
共通のネットワークに接続された複数の物理的なマシンと
を含む、請求項１に記載の方法。
【請求項１５】
前記ファイルに対して追加のコンピューティングオペレーションを実行する必要があるかを確認する工程と、
前記ユニークな識別子を使用して前記共有ストアにクエリを行うことによって、前記ファイルのインスタンスに対して前記追加のコンピューティングオペレーションを事前に実行しなかったか判断する工程と、
前記ファイルに対して前記追加のコンピューティングオペレーションを実行する工程と、
前記追加のコンピューティングオペレーションの結果を用いて前記共有ストアを更新する工程と
をさらに含む、請求項１に記載の方法。
【請求項１６】
関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのシステムであって、
ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認するようプログラムされたオペレーション識別モジュールと、
前記ファイルに関連するユニークな識別子を特定するようプログラムされたファイル識別モジュールと、
前記ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断するように、
前記コンピューティングオペレーションを実行する代わりに、前記共有ストアから前記コンピューティングオペレーションの結果を取り込むように
プログラムされたクエリモジュールと、
前記オペレーション識別モジュール、前記ファイル識別モジュールおよび前記クエリモジュールを実行するよう構成された少なくとも１つのプロセッサと
を備えるシステム。
【請求項１７】
前記ファイル識別モジュールは、前記ファイルに関連するユニークな識別子を特定する前に、
前記ファイルの追加のインスタンスが前記関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか、
前記ファイルが頻繁に変更される可能性が低いか、
の少なくとも１つを判断するようさらにプログラムされる、請求項１６に記載のシステム。
【請求項１８】
前記共有ストアには、
前記ファイルのハッシュ、
前記ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの結果、
前記ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付
の少なくとも１つが入っている、請求項１６に記載のシステム。
【請求項１９】
前記共有ストアは、
ネットワーク接続記憶装置、
ストレージエリアネットワーク、
ファイルサーバ、
クラウドベース記憶装置、
ハイパーバイザによって管理されるローカル記憶装置の保護パーティション
の少なくとも１つの少なくとも一部分を備える、請求項１６に記載のシステム。
【請求項２０】
コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、前記コンピューティングデバイスに、
ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認させる、
前記ファイルに関連するユニークな識別子を特定させる、
前記ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断させる、
前記コンピューティングオペレーションを実行する代わりに、前記共有ストアから前記コンピューティングオペレーションの結果を取り込ませる、
１つまたは複数のコンピュータ実行可能命令を含む、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
共通のホストマシン上で起動している仮想マシンまたは共通のネットワークに接続された物理的なコンピューティングデバイスなどの関連コンピューティングシステムは、多くの場合、１つまたは複数の同じファイルのインスタンスに遭遇し得る。例えば、同じオペレーティングシステムまたはサービスパックを起動するおよび／または同じベースイメージから作成される仮想マシン内のファイルは同一である割合が高い。そのため、関連コンピューティングシステムは、同じファイルのインスタンスに対して同一のまたは同様なリソース消費型のコンピューティングオペレーションを重複して実行する恐れがある。
【背景技術】
【０００２】
例えば、同じベースイメージから作成され、共通のホストで起動する３０個の仮想マシンがすべてのファイルの定期的なマルウェアスキャンを実行するよう命令される場合、これらの仮想マシンは、仮想マシン間で共有されるファイルのインスタンス（共通のシステムまたはアプリケーションファイルなど）に対して３０回の異なるマルウェアスキャンを一括して実行する可能性があり、それらはすべて同様なまたは同一の結果を得る。そのような重複オペレーションにコンピューティングリソースを浪費することに加えて、このシナリオは、根本的なホストマシンのリソースを圧倒またはオーバーランさせる恐れもあり、性能の低下および／またはシステム障害を引き起こす可能性がある。このため、本開示は、関連コンピューティングシステムのグループ間の共通のコンテンツを識別する必要があるかを確認した上で、この知識を使用して関連コンピューティングシステム間でこの共通のコンテンツに対して実行されたコンピューティングオペレーションの結果を共有する。
【発明の概要】
【課題を解決するための手段】
【０００３】
以下でさらに詳細に説明されるように、本開示は、概して、関連コンピューティングシステム間で共有されたまたは共通のファイルに対して実行されたコンピューティングオペレーション（マルウェアまたはデータ損失防止スキャンなど）の結果を共有するためのシステムおよび方法に関する。一例では、本明細書に記載される１つまたは複数のシステムは、１）ファイルに対してコンピューティングオペレーション（マルウェアまたはデータ損失防止スキャンなど）を実行する必要があるかを確認すること、２）ファイルに関連するユニークな識別子（ハッシュなど）を特定すること、３）ユニークな識別子を使用して関連コンピューティングシステムのグループ（ホストマシン上で起動している仮想マシンのグループまたは共通のネットワークに接続された物理的なコンピューティングデバイスのグループ）によって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムがファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断すること、ならびに、４）再度所望のコンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込むことによって、そのようなタスクを成し遂げることができる。
【０００４】
一例では、本明細書に記載されるシステムは、ファイルのハッシュを作成することによって、または、ローカルキャッシュもしくはストアからファイルのハッシュを取り込むことによって、ファイルに関連するユニークな識別子を特定することができる。いくつかの例では、このローカルキャッシュまたはストア内に入っているファイルハッシュは、各ハッシュに関連するファイルが静的であるまたは変更されない限り持続させることができる。例えば、本明細書に記載されるシステムがファイルは修正または変更されたと判断すれば、これらのシステムは、ローカルキャッシュまたはストアからこのファイルのファイルハッシュを消去または削除することができる。
【０００５】
いくつかの例では、共有ストア内に入っているコンピューティングオペレーション結果は、他の要素としては、マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも１つの分類の論理的根拠、および／または、マルウェア分析を実行する際に使用される少なくとも１つのウイルス定義セットもしくはヒューリスティックを特定する情報を含み得る。関与するコンピューティングシステムのタイプに応じて、この共有ストアは、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、および／または、ハイパーバイザによって管理されるローカル記憶装置の保護パーティションの少なくとも一部分を表す場合がある。いくつかの例では、この共有ストアは、ファイルハッシュを使用してインデックスを付けることができる。
【０００６】
ファイルのハッシュ値の計算に必要なコンピューティングリソースは、ファイルに関連して実行されたコンピューティングオペレーションの結果を共有するために必要なコンピューティングリソースに等しいまたはそれを超える場合がある（例えば、ファイルのハッシュ値の計算は、同じファイルに対してマルウェアスキャンを実行するのと同じまたはそれより多くのコンピューティングリソースを消費する場合がある）ため、いくつかの例では、本明細書に記載されるシステムは、頻繁に変更される可能性が低いファイル、および／または、関連コンピューティングシステムのグループ内の追加のコンピューティングシステム上に位置するもしくは同追加のコンピューティングシステムが遭遇するファイルに対して実行されたコンピューティングオペレーションの結果を共有するだけでよい。例えば、本明細書に記載されるシステムが、ファイルは頻繁に変更される可能性がある（したがって、ファイルの新しいハッシュを頻繁に生成する必要がある可能性がある）、および／または、ファイルの追加のインスタンスにグループ内の追加コンピューティングシステムが遭遇する可能性は低いと判断すれば、本明細書に記載されるシステムは、ファイルのハッシュ値の計算、および／または、ファイルに対して実行されたコンピューティングオペレーションの結果を共有しようとする試みを控える場合があるが、この理由は、これらの結果の共有に必要なコンピューティングリソースが、これらの結果を共有することによってグループによって一括して保存されたコンピューティングリソースに等しいまたはそれを超える場合があるためである。
【０００７】
一例では、本明細書に記載されるシステムが、共有ストアはグループ内の関連コンピューティングシステムのいずれも問題のファイルに対して所望のコンピューティングオペレーションを事前に実行しなかったことを示していると判断すれば、本明細書に記載されるシステムは、問題のファイルに対して所望のコンピューティングオペレーションを実行し、次いで、コンピューティングオペレーションの結果を用いて共有ストアを更新することができる。
【０００８】
以下で詳細に説明されるように、関連コンピューティングシステムのグループによって共有されるストア内の共通のまたは共有されたファイルに対して実行されたリソース消費型のコンピューティングオペレーション（マルウェアスキャンまたはファイルレピュテーションルックアップなど）の結果を格納することによって、本明細書に記載されるシステムおよび方法は、関連コンピューティングシステム（ホストマシン上で起動している仮想マシンのグループまたは共通のネットワークに接続された物理的なコンピューティングデバイスのグループなど）がそのようなコンピューティングオペレーションの結果を共有および再利用することを可能にし得る。このため、これらのシステムおよび方法は、グループ間で共通して共有されるファイルに対して実行される重複コンピューティングオペレーションの数を低減することができ、グループによって一括して消費されるコンピューティングリソースの量を低減する可能性がある。
【０００９】
さらに、本明細書に記載されるシステムおよび方法は、グループ内の他のコンピューティングシステムが遭遇する可能性があるファイル、および／または、頻繁に変更される可能性が低いファイルのインスタンスに対して実行されたコンピューティングオペレーションの結果を共有するだけで、そのようなファイルに対して実行されたコンピューティングオペレーションの結果を共有するために必要なコンピューティングリソースが、そのようなコンピューティングオペレーションの結果を共有することによって一括して保存されたコンピューティングリソースに等しくもそれを超えることもない、ことを保証しようと試みる場合がある。
【００１０】
上述の実施形態のいずれかの特徴は、本明細書に記載される一般原理に従って互いに組み合わせて使用することができる。これらのおよび他の実施形態、特徴および利点は、添付の図面および特許請求の範囲と併せて以下の詳細な説明を読み進むに従ってより完全に理解されよう。
【図面の簡単な説明】
【００１１】
添付の図面は、いくつかの例示的な実施形態を示し、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示のさまざまな原理を実証および説明する。
【００１２】
【図１】関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なシステムのブロック図である。
【図２】関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための追加の例示的なシステムのブロック図である。
【図３】関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための追加の例示的なシステムのブロック図である。
【図４】関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的な方法のフロー図である。
【図５】例示的なファイル属性データベースの図である。
【図６】本明細書に記載されるおよび／または示される１つまたは複数の実施形態を実施することが可能な例示的なコンピューティングシステムのブロック図である。
【図７】本明細書に記載されるおよび／または示される１つまたは複数の実施形態を実施することが可能な例示的なコンピューティングネットワークのブロック図である。
【００１３】
図面全体を通して、同一の参照文字および説明は、同様な要素を示すが、必ずしも同一の要素である必要はない。本明細書に記載される例示的な実施形態はさまざまな変更形態および代替形態を取ることができるが、図面では特定の実施形態が一例として示されており、本明細書に詳細に記載される。しかし、本明細書に記載される例示的な実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲の範囲内に収まるすべての変更形態、均等物および代替形態をカバーする。
【発明を実施するための形態】
【００１４】
以下でさらに詳細に説明されるように、本開示は、概して、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのシステムおよび方法に関する。以下は、図１〜３および５を参照して、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実装方法の詳細な説明もまた、図４に関連して提供される。さらに、本明細書に記載される１つまたは複数の実施形態を実施することが可能な例示的なコンピューティングシステムおよびネットワークアーキテクチャの詳細な説明はそれぞれ、図６および７に関連して提供される。
【００１５】
図１は、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なシステム１００のブロック図である。この図で示されるように、例示的なシステム１００は、１つまたは複数のタスクを実行するための１つまたは複数のモジュール１０２を含み得る。例えば、以下でさらに詳細に説明されるように、例示的なシステム１００は、ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認するようプログラムされたオペレーション識別モジュール１０４を含み得る。また、例示的なシステム１００は、ファイルに関連するユニークな識別子を特定するようプログラムされたファイル識別モジュール１０６も含み得る。
【００１６】
さらに、以下でさらに詳細に説明されるように、例示的なシステム１００は、１）ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが問題のファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断するように、および、２）コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込むようにプログラムされたクエリモジュール１０８を含み得る。個別の要素として示されているが、図１の１つまたは複数のモジュール１０２は、単一のモジュールまたはアプリケーションの複数の部分を表す場合がある。
【００１７】
ある実施形態では、図１の１つまたは複数のモジュール１０２は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに１つまたは複数のタスクを実行させることができる１つまたは複数のソフトウェアアプリケーションまたはプログラムを表す場合がある。例えば、以下でさらに詳細に説明されるように、１つまたは複数のモジュール１０２は、図２および３に示されるデバイス（例えば、仮想マシン２０２（１）〜（Ｎ）およびコンピューティングデバイス３０２（１）〜（Ｎ））、図６のコンピューティングシステム６１０および／または図７の例示的なネットワークアーキテクチャ７００の複数の部分など、１つまたは複数のコンピューティングデバイス上で起動するよう格納および構成されるソフトウェアモジュールを表す場合がある。図１の１つまたは複数のモジュール１０２は、１つまたは複数のタスクを実行するよう構成される１つまたは複数の専用コンピュータのすべてまたは複数の部分を表す場合もある。
【００１８】
また、図１で示されるように、例示的なシステム１００は、ファイル属性データベース１２０も含み得る。一実施形態では、以下でさらに詳細に説明されるように、ファイル属性データベース１２０は、１つまたは複数のファイルハッシュ１２２およびファイル属性情報１２４を格納するよう構成され得る。ファイル属性データベース１２０は、単一のデータベースもしくはコンピューティングデバイスまたは複数のデータベースもしくはコンピューティングデバイスの複数の部分を表す場合がある。例えば、ファイル属性データベース１２０は、図２のローカルストア２１２（１）〜（Ｎ）および／もしくは共有ストア２１６、図３のローカルストア３０３（１）〜（Ｎ）および／もしくは共有ストア３０６、図６のコンピューティングシステム６１０、ならびに／または、図７の例示的なネットワークアーキテクチャ７００の複数の部分の一部分を表す場合がある。あるいは、図１のファイル属性データベース１２０は、コンピューティングデバイスによってアクセスすることが可能な１つまたは複数の物理的な個別のデバイスを表す場合があり、そのような図２の仮想マシン２０２（１）〜（Ｎ）、図３のコンピューティングデバイス３０２（１）〜（Ｎ）、図６のコンピューティングシステム６１０および／または図７の例示的なネットワークアーキテクチャ７００の複数の部分。
【００１９】
図１の例示的なシステム１００は、さまざまな方法で配備することができる。一例では、例示的なシステム１００のすべてまたは一部分は、図２の例示的なホストマシン２００の複数の部分を表す場合がある。図２に示されているように、ホストマシン２００は、仮想化層２０４を介して一式のハードウェア２０８と連通する複数の仮想マシン２０２（１）〜（Ｎ）を含み得る。一実施形態では、以下でさらに詳細に説明されるように、図１のモジュール１０２は、仮想マシン２０２（１）〜（Ｎ）それぞれを、１）仮想マシン内のファイルに対してコンピューティングオペレーション（マルウェアスキャンなど）を実行する必要があるかを確認する、２）ファイルに関連するユニークな識別子（ファイルハッシュなど）を特定する、３）ユニークな識別子を使用して共有ストア２１６（以下で説明されるように、仮想マシン２０２（１）〜（Ｎ）によって共有され得る）にクエリを行うことによって、グループ２２０内の追加の仮想マシンがファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断する、ならびに、４）再度コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込むようプログラムすることができる。
【００２０】
一般に、ホストマシン２００は、１つまたは複数の仮想マシンをホスティングすることが可能な任意のタイプまたは形式の物理的なコンピューティングデバイスを表す。ホストマシン２００の例としては、ラップトップ、デスクトップ、サーバ、携帯電話、携帯情報端末（ＰＤＡ）、マルチメディアプレーヤー、組込みシステム、これらの１つもしくは複数の組合せ、図６の例示的なコンピューティングシステム６１０または任意の他の適切なコンピューティングデバイスが挙げられるがこれらに限定されない。
【００２１】
一般に、仮想マシン２０２（１）〜（Ｎ）は、コンピュータ実行可能命令を読み取ることが可能な任意のタイプまたは形式の仮想化またはエミュレート化されたコンピューティングマシンを表す。仮想マシン２０２（１）〜（Ｎ）の例としては、システム仮想マシン、プロセス仮想マシンまたは任意の他の適切な仮想もしくはエミュレート化コンピューティングデバイスが挙げられるがこれらに限定されない。図２で示される例では、仮想マシン２０２（１）〜（Ｎ）は、仮想化層２０４を介してホストマシン２００の根本的なハードウェア２０８にアクセスすることができ、ホストマシン２００のコンピューティングリソースを抽象化および管理することができる。
【００２２】
図２で示されるように、ハードウェア２０８は、他の要素としては、少なくとも１つの記憶装置を含み得る。いくつかの実施形態では、仮想化層２０４は、仮想マシン２０２（１）〜（Ｎ）それぞれに対する複数のローカルストア２１２（１）〜（Ｎ）にハードウェア２０８を抽象化することができる。以下でさらに詳細に説明されるように、ローカルストア２１２（１）〜（Ｎ）を使用して、他の情報としては、共有ストア２１６へのクエリに使用することができるキャッシュされたファイルハッシュのコピーを格納することができる。
【００２３】
一般に、共有ストア２１６は、図２の仮想マシン２０２（１）〜（Ｎ）など、関連コンピューティングシステムのグループによって共有またはアクセスされ得る任意のタイプまたは形式の物理的なまたは仮想化されたストレージを表す。いくつかの例では、共有ストア２１６には、コンピューティングシステム（仮想マシン２０２（１）〜（Ｎ）など）のグループが遭遇する複数のファイルのそれぞれに対する、１）ファイルのハッシュ、２）ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの結果（マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも１つの分類の論理的根拠、マルウェア分析を実行する際に使用される少なくとも１つのウイルス定義セットもしくはヒューリスティックまたは同様のもの）、３）ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付（ファイルに対して実行された最近のマルウェアスキャンの日付など）、および／または、４）関連コンピューティングシステム間で共有され得る潜在的に有用な任意の他の情報が入り得るファイル属性データベース（図１および５のファイル属性データベース１２０など）が入っているまたは含まれる場合がある。
【００２４】
いかなるタイプまたは形式の関連コンピューティングシステムのグループも、共有ストアを共有するか、または、共有ストアにアクセスすることができる。一例では、共通のホスコンピューティングデバイス上で起動している複数の仮想マシン（図２のホストマシン２００上で起動している関連コンピューティングシステムのグループ２２０など）は、共有ストア（共有ストア２１６など）にアクセスすることができる。例えば、図２で示されるように、仮想マシン２０２（１）〜（Ｎ）は、仮想化層２０４内で起動している保護プロセス２０６（例えば、ハイパーバイザによって管理される）を介して保護パーティション２１４内に位置する共有ストア２１６にアクセスすることができる。
【００２５】
別の例では、共通のネットワーク内に位置する複数の物理的なマシン（ネットワーク３０４を介して連通している図３の関連コンピューティングシステムのグループ３２０など）は、共有ストアにアクセスすることができる。例えば、図３で示されるように、コンピューティングデバイス３０２（１）〜（Ｎ）は、ネットワーク３０４を介して共有ストア３０６にアクセスすることができる。この例では、共有ストア３０６は、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、または、関連する物理的なマシンのグループによってアクセスされ得る任意の他のタイプもしくは形式の記憶装置の少なくとも一部分を表す場合がある。
【００２６】
図３で示される例では、コンピューティングデバイス３０２（１）〜（Ｎ）は、コンピュータ実行可能命令を読み取ることが可能な任意のタイプまたは形式の物理的なコンピューティングデバイスを表す場合がある。コンピューティングデバイス３０２（１）〜（Ｎ）の例としては、これらに限定されないが、ラップトップ、デスクトップ、サーバ、携帯電話、携帯情報端末（ＰＤＡ）、マルチメディアプレーヤー、組込みシステム、これらの１つもしくは複数の組合せ、図６の例示的なコンピューティングシステム６１０または任意の他の適切なコンピューティングデバイスが挙げられる。
【００２７】
図３で示される例では、ネットワーク３０４は、通信またはデータ転送を容易にすることが可能な任意の媒体またはアーキテクチャを表すことができる。ネットワーク３０４の例としては、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、キャンパスエリアネットワーク（ＣＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラネットワーク（例えば、ＧＳＭ（登録商標）ネットワーク）、図７の例示的なネットワークアーキテクチャ７００または同様のものが挙げられるがこれらに限定されない。ネットワーク３０４は、無線または有線接続を使用して通信またはデータ転送を容易にすることができる。一例では、コンピューティングデバイス３０２（１）〜（Ｎ）は、ＴＣＰ／ＩＰ通信プロトコルを使用して、ネットワーク３０４を介して共有ストア３０６にアクセスすることができるか、または、共有ストア３０６と通信することができる。
【００２８】
図４は、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的なコンピュータ実装方法４００のフロー図である。図４で示される工程は、任意の適切なコンピュータ実行可能コードおよび／またはコンピューティングシステムによって実行することができる。いくつかの実施形態では、図４で示される工程は、図１のシステム１００、図２のホストマシン２００、図３のシステム３００、図６のコンピューティングシステム６１０および／または図７の例示的なネットワークアーキテクチャ７００の複数の部分の１つもしくは複数のコンポーネントによって実行することができる。
【００２９】
図４で示されるように、工程４０２では、本明細書に記載されるさまざまなシステムの１つまたは複数は、ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認することができる。例えば、図１のオペレーション識別モジュール１０４は、図２の仮想マシン２０２（１）の一部として、仮想マシン２０２（１）内でファイルに対してコンピューティングオペレーションを実行する必要があるかを確認することができる（例えば、仮想化層２０４によって仮想マシン２０２（１）に割り当てられた記憶装置２１０内の記憶空間に格納されたファイル）。
【００３０】
工程４０２においてオペレーション識別モジュール１０４によって特定されたコンピューティングオペレーションは、コンピューティングリソースを消費するファイルに関連して実行された任意のタイプまたは形式のコンピューティングオペレーションを表す場合がある。工程４０２においてオペレーション識別モジュール１０４によって特定され得るコンピューティングオペレーションの例としては、ファイルのマルウェア分析（例えば、ファイルが悪質なものかどうか判断するため）、ファイルのデータ損失防止分析（例えば、ファイルに機密情報が入っているかどうか判断するため）、ファイルに対するコミュニティベースのレピュテーションルックアップ（例えば、コミュニティ内のファイルの信頼性もしくはレピュテーションを判断するため）、ファイルのファイルタイプ分析、または、ファイルに対してもしくはファイルに関連して実行することができる任意の他のタイプもしくは形式のコンピューティングオペレーションが挙げられるがこれらに限定されない。
【００３１】
図４に戻って、工程４０４では、本明細書に記載されるシステムの１つまたは複数は、ファイルに関連するユニークな識別子を特定することができる。例えば、図１のファイル識別モジュール１０６は、図２の仮想マシン２０２（１）の一部として、工程４０２において特定されたファイルに関連するユニークな識別子を特定することができる。本明細書で使用される用語「ユニークな識別子」は、一般に、ファイルをユニークに識別するための任意のタイプまたは形式の方法を表す。ユニークな識別子の例としては、ＭＤ５ハッシュ、ＳＨＡ−１ハッシュ、ＳＨＡ−２５６ハッシュまたは同様のものなどのファイルハッシュが挙げられるがこれらに限定されない。
【００３２】
本明細書に記載されるシステムは、さまざまな方法で工程４０４を実行することができる。一例では、図１のファイル識別モジュール１０６は、ファイルのハッシュを作成することによってファイルに関連するユニークな識別子を特定することができる。例えば、ファイル識別モジュール１０６は、最初にファイルに遭遇する際に、仮想マシン２０２（１）の一部として、ファイルのハッシュを作成することができる。一例では、ファイル識別モジュール１０６は、次いで、仮想マシン２０２（１）に付随するローカルストア２１２（１）内にこのハッシュを格納する場合がある。この例では、ファイル識別モジュール１０６は、後段でファイルに遭遇する際に、再度ファイルのハッシュを作成することは対照的に、ローカルストア２１２（１）からこのファイルのハッシュを取り込むことができる。
【００３３】
上記で詳細に説明されるように、仮想マシン２０２（１）〜（Ｎ）は、ローカルストア２１２（１）〜（Ｎ）内にさまざまな情報を格納することができる。仮想マシン２０２（１）〜（Ｎ）がローカルストア２１２（１）〜（Ｎ）内に格納することができる情報のタイプの例としては、これらに限定されないが、ファイルのハッシュなどのファイルメタデータ、ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付（ファイルの最近のマルウェアスキャンの日付など）、ファイルのファイル起源情報または潜在的に有用な任意の他の情報が挙げられる。
【００３４】
いくつかの実施形態では、ローカルストア２１２（１）〜（Ｎ）内のファイルに対するファイルメタデータは、ファイルが静的であるまたは変更されない限り持続させることができる。例えば、最初にファイルに遭遇する際、図１のファイル識別モジュール１０６は、ローカルストア２１２（１）内のファイルに対するさまざまなファイルメタデータ（ファイルハッシュなど）を作成および格納することができる。この例では、このファイルに付随するファイルメタデータは、ファイルが変更されない限り、ローカルストア２１２（１）内に留まることができる。しかし、ファイル識別モジュール１０６がファイルは変更されたと判断すれば（例えば、ファイルシステムミニフィルタを介して）、ファイル識別モジュール１０６は、ローカルストア２１２（１）から変更または修正されたファイルに付随するすべてのファイルメタデータを消去または削除することができる。このように、ファイル識別モジュール１０６は、ローカルストア２１２（１）内に格納されるファイルメタデータ（ファイルハッシュなど）を確信を持っておよび効果的に再利用することができ、新しいファイルまたは新しいバージョンのファイルに対するファイルメタデータの再計算または再生成を行うだけでよい。
【００３５】
ファイルをユニークに識別するために必要なコンピューティングリソースは、ファイルに対して実行されたコンピューティングオペレーションの結果を共有するために必要なコンピューティングリソースに等しいまたはそれを超える場合がある（例えば、ファイルのハッシュ値の計算は、同じファイルに対してマルウェアスキャンを実行するのと同じまたはそれより多くのコンピューティングリソースを消費する場合がある）ため、いくつかの例では、本明細書に記載されるシステムは、仮想マシン２０２（１）〜（Ｎ）が遭遇したファイルの選択部分に対して工程４０４〜４０８を実行するだけでよい（すなわち、本明細書に記載されるシステムは、特定の基準を満たすファイルに関して実行されたコンピューティングオペレーションの結果をユニークに識別および共有するだけでよい）。例えば、ファイル識別モジュール１０６は、図４の工程４０４を実行する前に、１）工程４０２において特定されたファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるかどうか判断する（それにより、関連コンピューティングシステムのグループ内の１つもしくは複数のコンピューティングシステムが工程４０２において特定されたファイルのインスタンスに対抗した、および／または、ファイルのインスタンスに対して工程４０２において特定された所望のコンピューティングオペレーションを事前に実行した可能性があるかどうか潜在的に示す）、ならびに／または、２）工程４０２において特定されたファイルが頻繁に変更される可能性が低いかどうか判断する（それにより、今後のリソース消費型のファイルハッシュオペレーションをファイルに対して頻繁に実行する必要があり得るかどうか潜在的に示す）ことができる。
【００３６】
例えば、ファイル識別モジュール１０６が、ファイルは非ユーザが生成したファイルが入っている可能性があるディレクトリもしくは位置（「Ｃ：／Ｗｉｎｄｏｗｓ（登録商標）／Ｓｙｓｔｅｍ３２／」または「Ｃ：／Ｐｒｏｇｒａｍ  Ｆｉｌｅｓ／Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ／」など）に位置する、および／または、ユーザが生成したファイルが入っている可能性がある位置もしくはディレクトリ（「Ｃ：／Ｄｏｃｕｍｅｎｔｓ  ａｎｄ  Ｓｅｔｔｉｎｇｓ／」など）内に位置しないと判断すれば、ファイル識別モジュール１０６は、ファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があると判断することができ、こうして、関連コンピューティングシステムのグループ内の１つもしくは複数のコンピューティングシステムが問題のファイルに対して工程４０２において特定されたコンピューティングオペレーションに事前に遭遇したおよび／または同コンピューティングオペレーションを事前に実行した可能性を高くする。
【００３７】
同様に、ファイル識別モジュール１０６が、１）ファイルは静的なもしくは変更されないファイルと一般に関連するディレクトリもしくは位置（「Ｃ：／Ｗｉｎｄｏｗｓ／Ｓｙｓｔｅｍ３２／」など）に位置する、２）ファイルは既定の期間内において既定の回数より少ない回数で（例えば、１年以内に５回より少ない回数で）変更された、および／または、３）ファイルは既定の期間（例えば、１年）を超えて静的であったと判断すれば、ファイル識別モジュール１０６は、ファイルが頻繁に変更される可能性が低いと判断することができ、こうして、今後、比較的わずかなリソース消費型のファイルハッシュオペレーションをファイルに対して実行する必要があり得ることを潜在的に示す。
【００３８】
上記の例では、ファイル識別モジュール１０６が、ファイルは頻繁に変更される可能性が低い、および／または、ファイルの追加のインスタンスは関連コンピューティングシステムのグループ内に位置する可能性があると判断すれば、ファイル識別モジュール１０６は、図４の工程４０４を実行して（例えば、ファイルのハッシュを特定または作成することによって）、例示的な方法４００の継続を可能にすることができる。しかし、ファイル識別モジュール１０６が、ファイルは頻繁に変更される可能性がある、および／または、ファイルの追加のインスタンスは関連コンピューティングシステムのグループ内に位置する可能性が低いと判断すれば、工程４０２の終結と同時に例示的な方法４００を終了することができる（例えば、ファイル識別モジュール１０６は、ファイルのハッシュの特定または作成を控えることができる）が、この理由は、工程４０４〜４０８を実行するために必要なコンピューティングリソースが、工程４０４〜４０８を実行することによってグループによって一括して保存されたコンピューティングリソースに等しいまたはそれを超える場合があるためである。
【００３９】
図４に戻って、工程４０６では、本明細書に記載されるシステムの１つまたは複数は、工程４０４で特定されたユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムがファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断することができる。例えば、図１のクエリモジュール１０８は、グループ２２０内の追加の仮想マシンがファイルのインスタンスに対して工程４０２で特定されたコンピューティングオペレーションを事前に実行したかどうかを判断するため、図２の仮想マシン２０２（１）の一部として、工程４０４において特定されたファイルに関連するユニークな識別子を使用して共有ストア２１６にクエリを行うことができる。
【００４０】
上記で詳細に説明されるように、共有ストアは、図２の仮想マシン２０２（１）〜（Ｎ）および／またはコンピューティングデバイス３０２（１）〜（Ｎ）など、関連コンピューティングシステムのグループによって共有またはアクセスされ得る。いくつかの例では、これらのコンピューティングシステムは、このファイルメタデータを共有ストア内に格納することによって、関連グループ内の他のコンピューティングシステムとファイルに付随するファイルメタデータを共有することができる。例えば、図２の仮想マシン２０２（１）〜（Ｎ）および／またはコンピューティングデバイス３０２（１）〜（Ｎ）は、図２の仮想マシン２０２（１）〜（Ｎ）および／またはコンピューティングデバイス３０２（１）〜（Ｎ）が遭遇するファイルに対するファイルメタデータを、共有ストア２１６および３０６内にそれぞれ格納することができる。図２の仮想マシン２０２（１）〜（Ｎ）および／またはコンピューティングデバイス３０２（１）〜（Ｎ）が共有ストア２１６および３０６内にそれぞれ格納することができる情報のタイプの例としては、これらに限定されないが、１）ファイルのハッシュ、２）ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの結果（マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも１つの分類の論理的根拠、マルウェア分析を実行する際に使用される少なくとも１つのウイルス定義セットもしくはヒューリスティックまたは同様のもの）、３）ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付（ファイルに対して実行された最近のマルウェアスキャンの日付など）、および／または、４）関連コンピューティングシステム間で共有され得る潜在的に有用な任意の他の情報が挙げられる。
【００４１】
上記で詳細に説明されるように、いかなるタイプまたは形式の関連コンピューティングシステムのグループも、共有ストアを共有するか、または、共有ストアにアクセスすることができる。共有ストアを共有するか、または、共有ストアにアクセスすることができる関連コンピューティングシステムのグループのタイプの例としては、これらに限定されないが、共通のホスコンピューティングデバイス上で起動している複数の仮想マシン（図２のホストマシン２００上で起動している関連コンピューティングシステムのグループ２２０など）、共通のネットワーク内に位置する複数の物理的なマシン（例えば、図３のネットワーク３０４を介して互いに連通している関連コンピューティングシステムのグループ３２０など）、または、関連コンピューティングシステムの任意の他のグループが挙げられる。
【００４２】
関与するコンピューティングシステムのタイプに応じて、この共有ストアは、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、ハイパーバイザによって管理されるローカル記憶装置の保護パーティション（例えば、図２の仮想化層２０４内の共有プロセス２０６によってアクセスされ得る保護パーティション２１４）または同様のものの少なくとも一部分を表す場合がある。この共有ストアへのアクセスは、関与するコンピューティングシステムのタイプに依存し得る。例えば、ＬＡＮ内に位置する物理的なマシンは、ＴＣＰ／ＩＰ通信プロトコルを使用して、ネットワーク接続記憶装置またはストレージエリアネットワーク上に位置する共有ストアと通信することができる。あるいは、共通のホストマシン上に位置する仮想マシンは、仮想化層内で起動している保護プロセスを介して、ハイパーバイザによって管理される保護パーティション内に位置する共有ストアと通信することができる。いくつかの例では、この共有ストアは、ファイルハッシュに基づいてインデックスを付けることができる。
【００４３】
いくつかの例では、コンピューティングシステムは、なりすましおよび／または改ざんを防ぐため、安全通信メカニズムを介してこの共有ストアにアクセスするだけでよい。例えば、共通のホストマシン上に位置する仮想マシンは、仮想化層内で起動している保護プロセスを介して、ハイパーバイザによって管理される保護パーティション内に位置する共有ストアにアクセスするだけでよい。同様に、共通のネットワークに接続された物理的なマシンは、安全な（例えば、暗号化された）通信プロトコルを使用して、ネットワーク接続記憶装置またはストレージエリアネットワーク上に位置する共有ストアと通信するだけでよい。いくつかの例では、安全通信メカニズムのロバスト性および／または攻撃性は、関連コンピューティングシステムのグループのサイズに依存し得るが、その理由は、関連コンピューティングシステムのグループのサイズが大きいほど、安全通信メカニズムへの負担はますます大きくなるためである。
【００４４】
上記で詳細に説明されるように、関連コンピューティングシステムは、追加の物理的なまたは仮想マシンが特定のファイルに対して所望のコンピューティングオペレーションを事前に実行したかを判断するため、ファイルハッシュを使用して、共有ストアにクエリを行うことができる。例えば、仮想マシン２０２（１）は、１つまたは複数の仮想マシン２０２（１）〜（Ｎ）がファイルに対して所望のコンピューティングオペレーションを事前に実行したかを判断するため、特定のファイルのハッシュを使用して、共有ストア２１６にクエリを行うことができる。共有ストア２１６が仮想マシン２０２（１）〜（Ｎ）のいずれも問題のファイルに対して所望のコンピューティングオペレーションを事前に実行しなかったと示せば（例えば、共有ストア２１６に、問題のファイルに対するファイルメタデータが入っていない場合または問題のファイルに対して実行された所望のコンピューティングオペレーションの結果が入っていない場合）、仮想マシン２０２（１）は、問題のファイルに対して所望のコンピューティングオペレーションを実行し、次いで、コンピューティングオペレーションの結果を用いて共有ストア２０２（１）を更新することができる（例えば、共有ストア２１６内に、問題のファイルのハッシュおよび問題のファイルに対して実行されたコンピューティングオペレーションの結果などのファイルメタデータを格納することによって）。
【００４５】
後の時点において、仮想マシン２０２（Ｎ）は、同じファイルの追加のインスタンスに対して所望のコンピューティングオペレーションを実行する前に共有ストア２１６にクエリを行うことによって、関連コンピューティングシステム（この場合、仮想マシン２０２（Ｎ））が問題のファイルのインスタンスに対して所望のコンピューティングオペレーションを事前に実行したかを判断することができる。この例では、仮想マシン２０２（Ｎ）は、工程４０８に関連して以下で説明されるように、再度コンピューティングオペレーションを実行する代わりに、共有ストア２１６から所望のコンピューティングオペレーションの結果を取り込むことができる。
【００４６】
後に問題のファイルが変更されれば、および、後に仮想マシン２０２（１）が修正または変更されたファイルに対してコンピューティングオペレーションを実行する必要があると確認すれば、仮想マシン２０２（１）は、１つまたは複数の仮想マシン２０２（１）〜（Ｎ）が変更されたファイルに対して所望のコンピューティングオペレーションを事前に実行したかを判断するため、修正または変更されたファイルの新しいハッシュを使用して共有ストア２１６に再度クエリを行うことができる。上記と同様に、共有ストア２１６が仮想マシン２０２（１）〜（Ｎ）のいずれも変更されたファイルに対して所望のコンピューティングオペレーションを事前に実行しなかったと示せば（すなわち、共有ストア２１６に、変更されたファイルに対するファイルメタデータが入っていない場合または変更されたファイルに対して実行された所望のコンピューティングオペレーションの結果が入っていない場合）、仮想マシン２０２（１）は、変更されたファイルに対して所望のコンピューティングオペレーションを実行し、次いで、コンピューティングオペレーションの結果を用いて共有ストア２０２（１）を更新することができる。
【００４７】
上記の例では、共有ストア２１６に、オリジナルの変更されていないファイルと変更または修正されたファイルの両方に対するファイルメタデータ（ファイルハッシュおよびコンピューティングオペレーションの結果など）が入っている場合がある。このため、１つまたは複数の仮想マシン２０２（１）〜（Ｎ）は、オリジナルのまたは変更されたファイルのハッシュを使用して共有ストア２１６にクエリを行うことによって、仮想マシン２０２（１）〜（Ｎ）内の追加の仮想マシンがオリジナルのファイルまたは変更されたファイルのいずれかに対して所望のコンピューティングオペレーションを事前に実行したかどうかを判断することができる。
【００４８】
図５は、上記で詳細に説明されるように、図２および３のそれぞれの共有ストア２１６および３０６などの共有ストアの一部分を表し得る例示的なファイル属性データベース１２０の図である。図５で示されるように、ファイル属性データベース１２０には、複数のファイルのそれぞれに対する、１）ファイルのハッシュ、２）ファイルの最近のスキャンの日付、３）ファイルの最近のスキャンの日付中に使用されたウイルス定義セット、４）スキャン中にファイルに割り当てられた分類、５）スキャン中にファイルに割り当てられた少なくとも１つの分類の論理的根拠、および、６）ファイルに対するコミュニティベースのレピュテーション情報を特定する情報が入り得る。
【００４９】
いくつかの例では、関連する物理的なまたは仮想マシンのグループ内の物理的なまたは仮想マシンは、追加の物理的なまたは仮想マシンが特定のファイルに対して所望のコンピューティングオペレーションを事前に実行したかどうかを判断するため、共有ストア内のファイル属性データベース１２０にアクセスすることができる。例えば、図１のクエリモジュール１０８は、図２の仮想マシン２０２（１）の一部として、グループ２２０内の追加の仮想マシンがハッシュ「０ｘＥＦＣＤＡＢ８９」を有するファイルに対してマルウェアスキャンを事前に実行したかどうかを判断するため、ファイル属性データベース１２０が入っている共有ストア２１６にクエリを行うことができる。この例では、クエリモジュール１０８は、ハッシュ「０ｘＥＦＣＤＡＢ８９」を使用して共有ストア２１６内のファイル属性データベース１２０にクエリを行うことによって、グループ２２０内の追加の仮想マシンが２０１０年１月２日の問題のファイルに対してマルウェアスキャンを事前に実行したかどうかを判断することができ、ウイルス定義セット３．１２９４内のシグネチャマッチングにより、問題のファイルが悪質なファイルを表すものと判断した。この例では、ファイル属性データベース１２０に問題のファイルに対して実行されたマルウェアスキャンの結果が入っているため、クエリモジュール１０８は、図４の工程４０８に進むことができる。
【００５０】
いくつかの例では、クエリモジュール１０８が、共有ストア内のファイル属性データベース１２０にクエリを行うことによって、関連コンピューティングシステムのグループ内の追加のコンピューティングシステムが問題のファイルに対してマルウェアスキャンを事前に実行したと判断すれば、クエリモジュール１０８は、この前回のマルウェアスキャン中に使用されたウイルス定義セットもしくはヒューリスティックが問題のコンピューティングシステムによって使用されるべきウイルス定義セットもしくはヒューリスティックと同一であるか、同ウイルス定義セットもしくはヒューリスティックと同様であるか、または、同ウイルス定義セットもしくはヒューリスティックより新しいものであるかどうかも判断することができる。例えば、クエリモジュール１０８が、図２の仮想マシン２０２（１）の一部として、前回の仮想マシンは工程４０２において特定されたファイルに対してマルウェアスキャンを事前に実行したと判断すれば、クエリモジュール１０８は、この前回の仮想マシンによって使用されたウイルス定義セットもしくはヒューリスティックが仮想マシン２０２（１）によって現在インストールされているもしくは使用中のウイルス定義セットもしくはヒューリスティックと同一であるか、同ウイルス定義セットもしくはヒューリスティックと同様であるか、または、同ウイルス定義セットもしくはヒューリスティックより新しいものであるかどうかを判断する（例えば、共有ストア２１６内のファイル属性データベース１２０内に入っている情報を分析することによって）ことができる。そうであれば、クエリモジュール１０８は、例示的な方法４００の工程４０８に進むことができる。
【００５１】
しかし、クエリモジュール１０８が、この前回の仮想マシンによって使用されたウイルス定義セットもしくはヒューリスティックが仮想マシン２０２（１）によってインストールされているもしくは使用中のウイルス定義セットもしくはヒューリスティックと異なるか、または、同ウイルス定義セットもしくはヒューリスティックより古いものであると判断すれば、クエリモジュール１０８は、問題のファイルに対して新しいマルウェアスキャンを実行することを仮想マシン２０２（１）に命令することができる。この例では、クエリモジュール１０８は、仮想マシン２０２（１）による新しいマルウェアスキャンの完了と同時に、この新しいマルウェアスキャンの結果を用いて共有ストア２１６を更新することができる。
【００５２】
図４に戻って、工程４０８では、本明細書に記載されるシステムの１つまたは複数は、再度コンピューティングオペレーションを実行する代わりに、共有ストアから所望のコンピューティングオペレーションの結果を取り込むことができる。例えば、図１のクエリモジュール１０８は、図２の仮想マシン２０２（１）の一部として、共有ストア２１６内のファイル属性データベース１２０からハッシュ「０ｘＥＦＣＤＡＢ８９」を有するファイルに対して実行されたマルウェアスキャンの結果を取り込むことができる。次いで、クエリモジュール１０８は、問題のファイルに対して追加のマルウェアスキャンを実行する代わりに、これらの結果を使用することを仮想マシン２０２（１）に命令することができる。工程４０８の完了と同時に、図４の例示的な方法４００を終了することができる。
【００５３】
上記で詳細に説明されるように、関連コンピューティングシステムのグループによって共有されるストア内の共通のまたは共有されたファイルに対して実行されたリソース消費型のコンピューティングオペレーション（マルウェアスキャンまたはファイルレピュテーションルックアップなど）の結果を格納することによって、本明細書に記載されるシステムおよび方法は、関連コンピューティングシステム（ホストマシン上で起動している仮想マシンのグループまたは共通のネットワークに接続された物理的なコンピューティングデバイスのグループなど）がそのようなコンピューティングオペレーションの結果を共有および再利用することを可能にし得る。このため、これらのシステムおよび方法は、グループ間で共通して共有されるファイルに対して実行される重複コンピューティングオペレーションの数を低減することができ、グループによって一括して消費されるコンピューティングリソースの量を低減する可能性がある。
【００５４】
さらに、本明細書に記載されるシステムおよび方法は、グループ内の他のコンピューティングシステムが遭遇する可能性があるファイル、および／または、頻繁に変更される可能性が低いファイルのインスタンスに対して実行されたコンピューティングオペレーションの結果を共有するだけで、そのようなファイルに対して実行されたコンピューティングオペレーションの結果を共有するために必要なコンピューティングリソースがそのようなコンピューティングオペレーションの結果を共有することによって一括して保存されたコンピューティングリソースに等しくもそれを超えることもないことを保証しようと試みる場合がある。
【００５５】
図６は、本明細書に記載されるおよび／または示される１つまたは複数の実施形態を実施することが可能な例示的なコンピューティングシステム６１０のブロック図である。コンピューティングシステム６１０は、コンピュータ可読命令を実行することが可能な任意のシングルまたはマルチプロセッサコンピューティングデバイスまたはシステムを幅広く表す。コンピューティングシステム６１０の例としては、これらに限定されないが、ワークステーション、ラップトップ、クライアント側端末、サーバ、分配されたコンピューティングシステム、ハンドヘルドデバイスまたは任意の他のコンピューティングシステムもしくはデバイスが挙げられる。その最も基本的な構成では、コンピューティングシステム６１０は、少なくとも１つのプロセッサ６１４およびシステムメモリ６１６を含み得る。
【００５６】
一般に、プロセッサ６１４は、データの処理または命令の解釈および実行が可能な任意のタイプまたは形式の処理ユニットを表す。ある実施形態では、プロセッサ６１４は、ソフトウェアアプリケーションまたはモジュールから命令を受け取ることができる。これらの命令は、本明細書に記載されるおよび／または示される例示的な実施形態の１つまたは複数の機能をプロセッサ６１４に実行させることができる。例えば、プロセッサ６１４は、単独でまたは他の要素と組み合わせて、本明細書に記載される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の１つもしくは複数を実行することができる、および／または、実行する手段となり得る。また、プロセッサ６１４は、本明細書に記載されるおよび／または示される任意の他の工程、方法またはプロセスを実行することもできる、および／または、実行する手段ともなり得る。
【００５７】
一般に、システムメモリ６１６は、データおよび／またはコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の揮発性または非揮発性記憶装置または媒体を表す。システムメモリ６１６の例としては、これらに限定されないが、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリまたは任意の他の適切なメモリデバイスが挙げられる。必須ではないが、ある実施形態では、コンピューティングシステム６１０は、揮発性メモリユニット（例えば、システムメモリ６１６など）と非揮発性記憶装置（例えば、以下で詳細に説明される一次記憶装置６３２など）の両方を含み得る。一例では、図１のモジュール１０２の１つまたは複数は、システムメモリ６１６にロードされ得る。
【００５８】
また、ある実施形態では、例示的なコンピューティングシステム６１０は、プロセッサ６１４およびシステムメモリ６１６に加えて、１つまたは複数のコンポーネントまたは要素も含み得る。例えば、図６で示されるように、コンピューティングシステム６１０は、メモリコントローラ６１８、入出力（Ｉ／Ｏ）コントローラ６２０および通信インターフェース６２２を含み得、その各々は、通信インフラ６１２を介して相互接続され得る。一般に、通信インフラ６１２は、コンピューティングデバイスの１つまたは複数のコンポーネント間の通信を容易にすることが可能な任意のタイプまたは形式のインフラを表す。通信インフラ６１２の例としては、これらに限定されないが、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅまたは同様のバスなど）およびネットワークが挙げられる。
【００５９】
一般に、メモリコントローラ６１８は、メモリもしくはデータを取り扱うまたはコンピューティングシステム６１０の１つもしくは複数のコンポーネント間の通信を制御することが可能な任意のタイプまたは形式のデバイスを表す。例えば、ある実施形態では、メモリコントローラ６１８は、通信インフラ６１２を介してプロセッサ６１４、システムメモリ６１６およびＩ／Ｏコントローラ６２０間の通信を制御することができる。ある実施形態では、メモリコントローラ６１８は、単独でまたは他の要素と組み合わせて、本明細書に記載されるおよび／または示される１つまたは複数の工程または特徴の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新などを実行することができる、および／または、実行する手段となり得る。
【００６０】
一般に、Ｉ／Ｏコントローラ６２０は、コンピューティングデバイスの入出力機能を調整および／または制御することが可能な任意のタイプまたは形式のモジュールを表す。例えば、ある実施形態では、Ｉ／Ｏコントローラ６２０は、プロセッサ６１４、システムメモリ６１６、通信インターフェース６２２、ディスプレイアダプタ６２６、入力インターフェース６３０およびストレージインターフェース６３４などのコンピューティングシステム６１０の１つまたは複数の要素間のデータ転送を制御するかまたは容易にすることができる。Ｉ／Ｏコントローラ６２０は、例えば、単独でまたは他の要素と組み合わせて、本明細書に記載される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の１つもしくは複数を実行する、および／または、実行する手段となるよう使用することができる。また、Ｉ／Ｏコントローラ６２０は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することができる。
【００６１】
通信インターフェース６２２は、例示的なコンピューティングシステム６１０と１つまたは複数の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプまたは形式の通信デバイスまたはアダプタを幅広く表す。例えば、ある実施形態では、通信インターフェース６２２は、コンピューティングシステム６１０と追加のコンピューティングシステムを含むプライベートまたはパブリックネットワークとの間の通信を容易にすることができる。通信インターフェース６２２の例としては、これらに限定されないが、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデムおよび任意の他の適切なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース６２２は、インターネットなどのネットワークへの直接リンクを介してリモートサーバとの直接接続を実現することができる。また、通信インターフェース６２２は、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワークなど）、パーソナルエリアネットワーク、電話もしくはケーブルネットワーク、携帯電話接続、衛星データ接続または任意の他の適切な接続を通じて、そのような接続を間接的に実現することもできる。
【００６２】
また、ある実施形態では、通信インターフェース６２２は、外部のバスまたは通信チャネルを介してコンピューティングシステム６１０と１つまたは複数の追加のネットワークまたは記憶装置との間の通信を容易にするよう構成されたホストアダプタを表す場合もある。ホストアダプタの例としては、これらに限定されないが、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ１３９４ホストアダプタ、ＳＡＴＡおよびｅＳＡＴＡホストアダプタ、ＡＴＡおよびＰＡＴＡホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネットアダプタまたは同様のものが挙げられる。また、通信インターフェース６２２は、コンピューティングシステム６１０が分配されたコンピューティングまたはリモートコンピューティングに参加することを可能にする場合もある。例えば、通信インターフェース６２２は、実行のためにリモートデバイスから命令を受け取るか、または、リモートデバイスに命令を送信することができる。ある実施形態では、通信インターフェース６２２は、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、通信インターフェース６２２は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することができる。
【００６３】
図６で示されるように、コンピューティングシステム６１０は、ディスプレイアダプタ６２６を介して通信インフラ６１２と結合される少なくとも１つのディスプレイデバイス６２４も含み得る。一般に、ディスプレイデバイス６２４は、ディスプレイアダプタ６２６によって転送された情報を視覚的に表示することが可能な任意のタイプまたは形式のデバイスを表す。同様に、ディスプレイアダプタ６２６は、一般に、ディスプレイデバイス６２４上で表示するため、通信インフラ６１２から（または、当技術分野で公知のフレームバッファから）グラフィックス、テキストおよび他のデータを転送するよう構成された任意のタイプまたは形式のデバイスを表す。
【００６４】
また、図６で示されるように、例示的なコンピューティングシステム６１０は、入力インターフェース６３０を介して通信インフラ６１２と結合される少なくとも１つの入力デバイス６２８も含み得る。一般に、入力デバイス６２８は、例示的なコンピューティングシステム６１０へのコンピュータまたは人間が生成した入力を提供することが可能な任意のタイプまたは形式の入力デバイスを表す。入力デバイス６２８の例としては、これらに限定されないが、キーボード、ポインティングデバイス、音声認識デバイスまたは任意の他の入力デバイスが挙げられる。少なくとも１つの実施形態では、入力デバイス６２８は、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、入力デバイス６２８は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００６５】
また、図６で示されるように、例示的なコンピューティングシステム６１０は、ストレージインターフェース６３４を介して通信インフラ６１２と結合される一次記憶装置６３２およびバックアップ記憶装置６３３も含み得る。一般に、記憶装置６３２および６３３は、データおよび／または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。例えば、記憶装置６３２および６３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピー（登録商標）ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブまたは同様のものであり得る。一般に、ストレージインターフェース６３４は、記憶装置６３２および６３３とコンピューティングシステム６１０の他のコンポーネントとの間でデータを転送するための任意のタイプまたは形式のインターフェースまたはデバイスを表す。一例では、図１のファイル属性データベース１２０は、一次記憶装置６３２に格納することができる。
【００６６】
ある実施形態では、記憶装置６３２および６３３は、コンピュータソフトウェア、データまたは他のコンピュータ可読情報を格納するよう構成されたリムーバブルストレージユニットから読み取るおよび／または同リムーバブルストレージユニットに書き込むよう構成され得る。適切なリムーバブルストレージユニットの例としては、これらに限定されないが、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスまたは同様のものが挙げられる。また、記憶装置６３２および６３３は、コンピュータソフトウェア、データまたは他のコンピュータ可読命令をコンピューティングシステム６１０にロードすることを可能にするための他の同様の構造またはデバイスも含み得る。例えば、記憶装置６３２および６３３は、ソフトウェア、データまたは他のコンピュータ可読情報を読み取るおよび書き込むよう構成され得る。また、記憶装置６３２および６３３は、コンピューティングシステム６１０の一部であり得るか、または、他のインターフェースシステムを通じてアクセスされる別々のデバイスでもあり得る。
【００６７】
ある実施形態では、記憶装置６３２および６３３は、例えば、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の１つまたは複数を実行する、および／または、実行する手段となるよう使用することができる。また、記憶装置６３２および６３３は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００６８】
また、他の多くのデバイスまたはサブシステムを、コンピューティングシステム６１０に接続することができる。逆に、図６で示されるコンポーネントおよびデバイスのすべてが、本明細書に記載されるおよび／または示される実施形態を実施するために必ずしも存在しているわけではない。また、上記で言及されたデバイスまたはサブシステムは、図６で示されるものとは異なる形で相互接続することもできる。また、コンピューティングシステム６１０は、任意の数のソフトウェア、ファームウェアおよび／またはハードウェア構成を使用することもできる。例えば、本明細書に開示される１つまたは複数の例示的な実施形態は、コンピュータ可読媒体上でコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令またはコンピュータ制御論理とも呼ばれる）として符号化することができる。語句「コンピュータ可読媒体」は、一般に、コンピュータ可読命令を格納または送達することが可能な任意の形式のデバイス、キャリアまたは媒体を指す。コンピュータ可読媒体の例としては、これらに限定されないが、搬送波などの伝送型の媒体、ならびに、磁気記憶媒体（例えば、ハードディスクドライブおよびフロッピーディスク）、光記憶媒体（例えば、ＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、ソリッドステートドライブおよびフラッシュメディア）および他の分配システムなどの物理的な媒体が挙げられる。
【００６９】
コンピュータプログラムが入っているコンピュータ可読媒体は、コンピューティングシステム６１０にロードすることができる。次いで、コンピュータ可読媒体上に格納されたコンピュータプログラムのすべてまたは一部分は、次いで、システムメモリ６１６ならびに／または記憶装置６３２および６３３のさまざまな部分に格納することができる。プロセッサ６１４によって実行されると、コンピューティングシステム６１０にロードされたコンピュータプログラムは、プロセッサ６１４に、本明細書に記載されるおよび／または示される１つまたは複数の例示的な実施形態の機能を実行させる、および／または、実行する手段となるようにすることができる。それに加えてまたは代替法として、本明細書に記載されるおよび／または示される１つまたは複数の例示的な実施形態は、ファームウェアおよび／またはハードウェアで実施することができる。例えば、コンピューティングシステム６１０は、本明細書に開示された１つまたは複数の例示的な実施形態を実施するよう適合された特定用途向け集積回路（ＡＳＩＣ）として構成され得る。
【００７０】
図７は、クライアントシステム７１０、７２０および７３０ならびにサーバ７４０および７４５をネットワーク７５０と結合することができる例示的なネットワークアーキテクチャ７００のブロック図である。一般に、クライアントシステム７１０、７２０および７３０は、図６の例示的なコンピューティングシステム６１０などの任意のタイプまたは形式のコンピューティングデバイスまたはシステムを表す。同様に、サーバ７４０および７４５は、一般に、さまざまなデータベースサービスを提供するよう構成された、および／または、あるソフトウェアアプリケーションを起動するよう構成された、アプリケーションサーバまたはデータベースサーバなどのコンピューティングデバイスまたはシステムを表す。一般に、ネットワーク７５０は、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）またはインターネットを含む任意の電気通信ネットワークまたはコンピュータネットワークを表す。一例では、クライアントシステム７１０、７２０および／もしくは７３０は図１のモジュール１０２を含み得、ならびに／または、サーバ７４０および／もしくは７４５は図１のファイル属性データベース１２０を含み得る。
【００７１】
図７で示されるように、１つまたは複数の記憶装置７６０（１）〜（Ｎ）は、サーバ７４０に直接取り付けることができる。同様に、１つまたは複数の記憶装置７７０（１）〜（Ｎ）は、サーバ７４５に直接取り付けることができる。記憶装置７６０（１）〜（Ｎ）および記憶装置７７０（１）〜（Ｎ）は、一般に、データおよび／または他のコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。ある実施形態では、記憶装置７６０（１）〜（Ｎ）および記憶装置７７０（１）〜（Ｎ）は、ＮＦＳ、ＳＭＢまたはＣＩＦＳなどのさまざまなプロトコルを使用して、サーバ７４０および７４５と通信するよう構成されたネットワーク接続記憶（ＮＡＳ）装置を表す場合がある。
【００７２】
また、サーバ７４０および７４５は、ストレージエリアネットワーク（ＳＡＮ）ファブリック７８０に接続することもできる。一般に、ＳＡＮファブリック７８０は、複数の記憶装置間の通信を容易にすることが可能な任意のタイプまたは形式のコンピュータネットワークまたはアーキテクチャを表す。ＳＡＮファブリック７８０は、サーバ７４０および７４５と複数の記憶装置７９０（１）〜（Ｎ）および／またはインテリジェントなストレージアレイ７９５との間の通信を容易にすることができる。また、ＳＡＮファブリック７８０は、装置７９０（１）〜（Ｎ）およびアレイ７９５がクライアントシステム７１０、７２０および７３０にローカルで接続されたデバイスのように見えるように、ネットワーク７５０ならびにサーバ７４０および７４５を介して、クライアントシステム７１０、７２０および７３０と記憶装置７９０（１）〜（Ｎ）および／またはインテリジェントなストレージアレイ７９５との通信を容易にすることもできる。記憶装置７６０（１）〜（Ｎ）および記憶装置７７０（１）〜（Ｎ）と同様に、記憶装置７９０（１）〜（Ｎ）およびインテリジェントなストレージアレイ７９５は、一般に、データおよび／またはコンピュータ可読命令を格納することが可能な任意のタイプまたは形式の記憶装置または媒体を表す。
【００７３】
ある実施形態では、図６の例示的なコンピューティングシステム６１０に関連して、図６の通信インターフェース６２２などの通信インターフェースを使用して、各クライアントシステム７１０、７２０および７３０とネットワーク７５０との間の接続性を提供することができる。クライアントシステム７１０、７２０および７３０は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバ７４０または７４５上の情報にアクセスできる場合がある。そのようなソフトウェアは、クライアントシステム７１０、７２０および７３０がサーバ７４０、サーバ７４５、記憶装置７６０（１）〜（Ｎ）、記憶装置７７０（１）〜（Ｎ）、記憶装置７９０（１）〜（Ｎ）またはインテリジェントなストレージアレイ７９５によってホスティングされるデータにアクセスすることを可能にすることができる。図７はデータを交換するためのネットワーク（インターネットなど）の使用について示すが、本明細書に記載されるおよび／または示される実施形態は、インターネットまたは任意の特定のネットワークベースの環境に限定されない。
【００７４】
少なくとも１つの実施形態では、本明細書に開示される１つまたは複数の例示的な実施形態のすべてまたは一部分は、コンピュータプログラムとして符号化することができ、サーバ７４０、サーバ７４５、記憶装置７６０（１）〜（Ｎ）、記憶装置７７０（１）〜（Ｎ）、記憶装置７９０（１）〜（Ｎ）、インテリジェントなストレージアレイ７９５またはそれらの任意の組合せにロードし、これらによって実行することができる。また、本明細書に開示される１つまたは複数の例示的な実施形態のすべてまたは一部分は、コンピュータプログラムとして符号化することができ、サーバ７４０に格納し、サーバ７４５によって起動し、ネットワーク７５０上でクライアントシステム７１０、７２０および７３０に分配することもできる。それに応じて、ネットワークアーキテクチャ７００は、単独でまたは他の要素と組み合わせて、本明細書に開示される工程の識別、決定、使用、取込み、作成、受け取り、消去、実行および更新の１つまたは複数を実行することができる、および／または、実行する手段となり得る。また、ネットワークアーキテクチャ７００は、本開示に記載される他の工程および特徴を実行する、および／または、実行する手段となるよう使用することもできる。
【００７５】
上記で詳細に説明されるように、コンピューティングシステム６１０および／またはネットワークアーキテクチャ７００の１つまたは複数のコンポーネントは、単独でまたは他の要素と組み合わせて、関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するための例示的な方法の１つまたは複数の工程を実行することができる、および／または、実行する手段となり得る。一例では、方法は、１）ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認する工程、２）ファイルに関連するユニークな識別子を特定する工程、３）ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムがファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断する工程、ならびに、４）コンピューティングオペレーションを実行する代わりに、共有ストアからコンピューティングオペレーションの結果を取り込む工程を含み得る。
【００７６】
一例では、ファイルに関連するユニークな識別子を特定する工程は、ファイルのハッシュを特定する工程を含み得る。この例では、ファイルのハッシュを特定する工程は、ハッシュを作成する工程および／またはローカルストアからハッシュを取り込む工程を含み得る。また、方法は、ファイルが修正されているか判断する工程と、次いで、ローカルストアからファイルに関連する情報を消去する工程とを含み得る。
【００７７】
また、いくつかの例では、方法は、ファイルに関連するユニークな識別子を特定する前に、ファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程、および／または、ファイルが頻繁に変更される可能性が低いか判断する工程も含み得る。これらの例では、ファイルの追加のインスタンスが関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程は、ファイルは非ユーザが生成したファイルが入っている可能性がある位置に位置するか判断する工程、および／または、ファイルはユーザが生成したファイルが入っている可能性がある位置に位置しないか判断する工程を含み得る。同様に、ファイルが頻繁に変更される可能性が低いか判断する工程は、ファイルは静的なファイルと一般に関連する位置に位置するか判断する工程、ファイルは既定の期間内において既定の回数より少ない回数で変更されたか判断する工程、および／または、ファイルは既定の期間を超えて静的であったか判断する工程を含み得る。
【００７８】
コンピューティングオペレーションの例としては、これらに限定されないが、ファイルのマルウェア分析、ファイルのデータ損失防止分析、ファイルに対するコミュニティベースのレピュテーションルックアップおよび／またはファイルのファイルタイプ分析が挙げられる。共有ストアには、ファイルのハッシュ、ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの結果および／またはファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付が入り得る。さらに、コンピューティングオペレーションの結果は、マルウェア分析の間にファイルに割り当てられた分類、マルウェア分析の間にファイルに割り当てられた少なくとも１つの分類の論理的根拠および／またはマルウェア分析を実行する際に使用される少なくとも１つのウイルス定義セットもしくはヒューリスティックを特定する情報を含み得る。
【００７９】
いくつかの例では、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムがファイルのインスタンスに対してコンピューティングオペレーションを事前に実行したかを判断する工程は、関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが同一の、同様なまたはより最近のウイルス定義セットもしくはヒューリスティックを使用してファイルのインスタンスに対してマルウェア分析を事前に実行したか判断する工程を含み得る。
【００８０】
いくつかの例では、共有ストアは、ネットワーク接続記憶装置、ストレージエリアネットワーク、ファイルサーバ、クラウドベース記憶装置、および／または、ハイパーバイザによって管理されるローカル記憶装置の保護パーティションの少なくとも一部分を含み得る。また、共有ストアは、ファイルハッシュに基づいてインデックスを付けることもできる。さらに、関連コンピューティングシステムのグループは、共通のホストコンピューティングデバイス上で起動している複数の仮想マシンおよび／または共通のネットワークに接続された複数の物理的なマシンを含み得る。
【００８１】
また、一例では、方法は、１）ファイルに対して追加のコンピューティングオペレーションを実行する必要があるかを確認する工程、２）ユニークな識別子を使用して共有ストアにクエリを行うことによって、ファイルのインスタンスに対して追加のコンピューティングオペレーションを事前に実行しなかったか判断する工程、３）ファイルに対して追加のコンピューティングオペレーションを実行する工程、ならびに、４）追加のコンピューティングオペレーションの結果を用いて共有ストアを更新する工程も含み得る。
【００８２】
前述の開示は特定のブロック図、フローチャートおよび例を使用してさまざまな実施形態について記載しているが、本明細書に記載されるおよび／または示される各ブロック図のコンポーネント、フローチャートの工程、オペレーションおよび／またはコンポーネントは、広範囲にわたるハードウェア、ソフトウェアまたはファームウェア（または、それらの任意の組合せ）構成を使用して、個別におよび／または一括して実装することができる。さらに、他のコンポーネント内に含まれるコンポーネントのいかなる開示も、他の多くのアーキテクチャを実装して同じ機能性を達成することができるため、本来は例示的なものであると見なすべきである。
【００８３】
いくつかの例では、図１の例示的なシステム１００のすべてまたは一部分は、クラウドコンピューティングまたはネットワークベースの環境の複数の部分を表す場合がある。クラウドコンピューティング環境は、インターネットを介してさまざまなサービスおよびアプリケーションを提供することができる。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットホーム、サービスとしてのインフラなど）は、ウェブブラウザまたは他のリモートインターフェースを通じてアクセスすることができる。本明細書に記載されるさまざまな機能は、リモートデスクトップ環境または任意の他のクラウドベースのコンピューティング環境を通じて提供することができる。
【００８４】
本明細書に記載されるおよび／または示されるプロセスパラメータおよび工程の順序は単なる例示として与えられるものであり、要望通り変更することができる。例えば、本明細書に記載されるおよび／または示される工程は特定の順番で示されるまたは論じられる場合があるが、これらの工程は、必ずしも示されるまたは論じられる順番で実行する必要があるわけではない。本明細書に記載されるおよび／または示されるさまざまな例示的な方法は、本明細書に記載されるまたは示される工程の１つもしくは複数を省略するか、または、開示される工程に加えて追加の工程を含めることもできる。
【００８５】
完全に機能的なコンピューティングシステムとの関連でさまざまな実施形態が本明細書に記載されるおよび／または示されるが、これらの例示的な実施形態の１つまたは複数は、実際に分配を行うために使用される特定のタイプのコンピュータ可読媒体に関わらず、プログラム製品としてさまざまな形式で分配され得る。また、本明細書に開示される実施形態は、ある一定のタスクを実行するソフトウェアモジュールを使用して実施することもできる。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体上またはコンピューティングシステムに格納することができるスクリプト、バッチまたは他の実行可能なファイルを含み得る。いくつかの実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態の１つまたは複数を実行するようコンピューティングシステムを構成することができる。
【００８６】
さらに、本明細書に記載される１つまたは複数のモジュールは、データ、物理的デバイスおよび／または物理的デバイスの表現をある形式から別の形式へ変換することができる。例えば、図１のクエリモジュール１０８は、図２および３の共有ストア２１６および３０６の特性または特徴を、そのようなストア内の関連コンピューティングシステムによって実行されたコンピューティングオペレーションの結果を修正または格納することによって、変換することができる。
【００８７】
先の説明は、当業者が本明細書に開示される例示的な実施形態のさまざまな態様を最良に利用できるよう提供されている。この例示的な説明は、包括的であるまたは開示される形式と全く同一の形式に限定することを意図しない。多くの変更形態および変形形態を、本開示の精神および範囲から逸脱することなく作成することができる。本明細書に開示される実施形態は、すべての点において、限定的なものではなく例示的なものとして見なされるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物を参照すべきである。
【００８８】
特に断りのない限り、本明細書および特許請求の範囲で使用される単数形「ａ」または「ａｎ」は、「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）」の意味に解釈されるものとする。さらに、使い易さを考慮して、本明細書および特許請求の範囲で使用される語「を含む（ｉｎｃｌｕｄｉｎｇ）」および「を有する（ｈａｖｉｎｇ）」は、語「備える、含む（ｃｏｍｐｒｉｓｉｎｇ）」と交換可能であり、同語と同じ意味を有する。
【図１】
2013518342.tif 000003
【図２】
2013518342.tif 000004
【図３】
2013518342.tif 000005
【図４】
2013518342.tif 000006
【図５】
2013518342.tif 000007
【図６】
2013518342.tif 000008
【図７】
2013518342.tif 000009
【手続補正書】
【提出日】平成24年7月31日(2012.7.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのコンピュータ実装方法であって、前記方法の少なくとも一部分は、少なくとも１つのプロセッサを備えるコンピューティングデバイスによって実行され、
ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認する工程と、
前記ファイルに関連するユニークな識別子を特定する工程と、
前記ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断する工程と、
前記コンピューティングオペレーションを実行する代わりに、前記共有ストアから前記コンピューティングオペレーションの結果を取り込む工程と
前記ファイルに関連する前記ユニークな識別子を特定する前に、
前記ファイルの追加のインスタンスが前記関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断すること、
前記ファイルが頻繁に変更される可能性が低いか判断すること
の少なくとも１つの工程と
を含むコンピュータ実装方法。
【請求項２】
前記コンピューティングオペレーションは、
前記ファイルのマルウェア分析、
前記ファイルのデータ損失防止分析、
前記ファイルに対するコミュニティベースのレピュテーションルックアップ、
前記ファイルのファイルタイプ分析
の少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記ファイルに関連するユニークな識別子を特定する工程は、前記ファイルのハッシュを特定することを含む、請求項１または２に記載の方法。
【請求項４】
前記ファイルのハッシュを特定する工程は、
前記ハッシュを作成すること、
ローカルストアから前記ハッシュを取り込むこと
の少なくとも１つを含む、請求項３に記載の方法。
【請求項５】
前記ファイルが修正されているか判断する工程と、
前記ローカルストアから前記ファイルに関連する情報を消去する工程と
をさらに含む、請求項４に記載の方法。
【請求項６】
前記ファイルの追加のインスタンスが前記関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断する工程は、
前記ファイルは非ユーザが生成したファイルが入っている可能性がある位置に位置するか判断すること、
前記ファイルはユーザが生成したファイルが入っている可能性がある位置に位置しないか判断すること
の少なくとも１つを含む、請求項１〜３のいずれか一項に記載の方法。
【請求項７】
前記ファイルが頻繁に変更される可能性が低いか判断する工程は、
前記ファイルは静的なファイルと一般に関連する位置に位置するか判断すること、
前記ファイルは既定の期間内において既定の回数より少ない回数で変更されたか判断すること、
前記ファイルは既定の期間を超えて静的であったか判断すること
の少なくとも１つを含む、請求項１〜３または６のいずれか一項に記載の方法。
【請求項８】
前記共有ストアには、
前記ファイルのハッシュ、
前記ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの結果、
前記ファイルに関連して実行された少なくとも１つのコンピューティングオペレーションの日付
の少なくとも１つが入っている、請求項１〜３、６または７のいずれか一項に記載の方法。
【請求項９】
前記コンピューティングオペレーションの結果は、
マルウェア分析の間に前記ファイルに割り当てられた分類、
前記マルウェア分析の間に前記ファイルに割り当てられた少なくとも１つの前記分類の論理的根拠、
前記マルウェア分析を実行する際に使用される少なくとも１つのウイルス定義セットもしくはヒューリスティック
の少なくとも１つを特定する情報を含む、請求項８に記載の方法。
【請求項１０】
前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断する工程は、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが
同一のウイルス定義セットもしくはヒューリスティックと、
同様なウイルス定義セットもしくはヒューリスティックと、
より最近のウイルス定義セットもしくはヒューリスティックと
を使用して前記ファイルのインスタンスに対してマルウェア分析を事前に実行したか判断する工程を含む、請求項１〜３または６〜８のいずれか一項に記載の方法。
【請求項１１】
前記共有ストアは、
ネットワーク接続記憶装置、
ストレージエリアネットワーク、
ファイルサーバ、
クラウドベース記憶装置、
ハイパーバイザによって管理されるローカル記憶装置の保護パーティション
の少なくとも１つの少なくとも一部分を備える、請求項１〜３、６〜８または１０のいずれか一項に記載の方法。
【請求項１２】
前記共有ストアは、ファイルハッシュに基づいてインデックスが付けられる、請求項１〜３、６〜８、１０または１１のいずれか一項に記載の方法。
【請求項１３】
前記関連コンピューティングシステムのグループは、
共通のホストコンピューティングデバイス上で起動している複数の仮想マシンと、
共通のネットワークに接続された複数の物理的なマシンと
を含む、請求項１〜３、６〜８または１０〜１２のいずれか一項に記載の方法。
【請求項１４】
前記ファイルに対して追加のコンピューティングオペレーションを実行する必要があるかを確認する工程と、
前記ユニークな識別子を使用して前記共有ストアにクエリを行うことによって、前記ファイルのインスタンスに対して前記追加のコンピューティングオペレーションを事前に実行しなかったか判断する工程と、
前記ファイルに対して前記追加のコンピューティングオペレーションを実行する工程と、
前記追加のコンピューティングオペレーションの結果を用いて前記共有ストアを更新する工程と
をさらに含む、請求項１〜３、６〜８または１０〜１３のいずれか一項に記載の方法。
【請求項１５】
関連コンピューティングシステム間でコンピューティングオペレーションの結果を共有するためのシステムであって、
ファイルに対してコンピューティングオペレーションを実行する必要があるかを確認するようプログラムされたオペレーション識別モジュールと、
前記ファイルに関連するユニークな識別子を特定するように、および
前記ファイルに関連する前記ユニークな識別子を特定する前に、以下の少なくとも一つすなわち、
前記ファイルの追加のインスタンスが前記関連コンピューティングシステムのグループ内の少なくとも１つの追加のコンピューティングシステム上に位置する可能性があるか判断するように、および
前記ファイルが頻繁に変更される可能性が低いか判断するように
プログラムされたファイル識別モジュールと、
前記ユニークな識別子を使用して関連コンピューティングシステムのグループによって共有される共有ストアにクエリを行うことによって、前記関連コンピューティングシステムのグループ内の少なくとも１つのコンピューティングシステムが前記ファイルのインスタンスに対して前記コンピューティングオペレーションを事前に実行したかを判断するように、
前記コンピューティングオペレーションを実行する代わりに、前記共有ストアから前記コンピューティングオペレーションの結果を取り込むように
プログラムされたクエリモジュールと、
前記オペレーション識別モジュール、前記ファイル識別モジュールおよび前記クエリモジュールを実行するよう構成された少なくとも１つのプロセッサと
を備えるシステム。
【国際調査報告】
2013518342.tif 000010
2013518342.tif 000011
2013518342.tif 000012