(57)【特許請求の範囲】
【請求項１】
ファイル分類を特定するためのコンピュータにより実施される方法であって、
第１の計算システムに記憶されている第１のファイルの識別情報を特定するステップと、
前記第１のファイルの前記識別情報を第２の計算システムに送信することにより、分類情報について前記第２の計算システムに問い合わせるステップと、
前記問い合わせに応答して、第２のファイルの識別情報および前記分類情報を受信するステップであって、前記分類情報は、前記第１および第２のファイルが信頼済みであることを示すステップと、
前記第２のファイルの前記識別情報を使用して、前記第２のファイルが前記第１の計算システムに記憶されていると判断するステップと、
前記第１および第２のファイルをセキュリティスキャンから除外することにより、前記分類情報を前記第１および第２のファイルに適用するステップと
を含む、コンピュータにより実施される方法。
【請求項２】
前記第１のファイルの識別情報を特定するステップは、前記第１のファイルのダイジェストを計算することを含み、
前記第１のファイルの前記識別情報は、前記第１のファイルの前記ダイジェストを含み、
前記第１のファイルの前記識別情報は、前記第１のファイルが記憶されているディレクトリの名称を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記ダイジェストは前記第１のファイルのハッシュを含み、
前記第１のファイルが記憶されている前記ディレクトリの前記名称は、正規化されたディレクトリパスである、請求項２に記載のコンピュータにより実施される方法。
【請求項４】
前記第２のファイルの前記識別情報は、前記第２のファイルのファイル名および前記第２のファイルのダイジェストを含み、
前記第２のファイルの前記識別情報を使用して、前記第２のファイルが前記第１の計算システムに記憶されていると判断するステップは、
前記第１の計算システムが、前記第２のファイルの前記ファイル名を有するファイルを含むと判断するステップと、
前記第２のファイルの前記ダイジェストが前記ファイル名を有する前記ファイルのダイジェストに一致すると判断するステップと
を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項５】
前記第２のファイルの前記識別情報は、前記第２のファイルのサイズを含み、
前記第２のファイルの前記識別情報を使用して、前記第２のファイルが前記第１の計算システムに記憶されていると判断するステップは、
前記第２のファイルの前記ファイル名を有する前記ファイルが前記第２のファイルと同じサイズであると判断するステップを含む、請求項４に記載のコンピュータにより実施される方法。
【請求項６】
前記第１のファイルは、第１のソフトウェアプログラムにより前記第１の計算システムにインストールされ、
前記第２のファイルは、前記第１のソフトウェアプログラムにより前記第１の計算システムにインストールされた、請求項１に記載のコンピュータにより実施される方法。
【請求項７】
ファイルのセット内の各ファイルの識別情報を受信するステップであって、
前記ファイルのセットは、前記第１のファイルをインストールしたアプリケーションに関連付けられ、
前記ファイルのセットは前記第２のファイルを含むステップと、
前記ファイルのセット内の各ファイルの分類情報を受信するステップと
をさらに含む、請求項１に記載のコンピュータにより実施される方法。
【請求項８】
ファイルのサブセット内の各ファイルの識別情報を特定するステップであって、
前記ファイルのサブセットは前記第１のファイルを含み、
前記ファイルのサブセットは、前記アプリケーションに関連付けられた前記ファイルのセットのサブセットであるステップと、
前記ファイルのサブセット内の各ファイルの前記識別情報を前記第２の計算システムに送信することにより、分類情報について前記第２の計算システムに問い合わせるステップと
をさらに含む、請求項７に記載のコンピュータにより実施される方法。
【請求項９】
ファイルの分類を特定するコンピュータにより実施される方法であって、
第１の計算システムから、前記第１の計算システムに記憶されている第１のファイルの識別情報を受信するステップと、
前記識別情報を使用して、前記第１のファイルの分類情報について分類データベースを検索するステップであって、前記分類データベースは第２の計算システムに記憶されているステップと、
前記第１のファイルに関連付けられた第２のファイルを識別するステップと、
前記第２のファイルの識別情報を前記第１の計算システムに送信するステップと、
前記第１の計算システムによって、前記第２のファイルの前記識別情報を使用して、前記第２のファイルが前記第１の計算システムに記憶されていると判断され、前記第１および第２のファイルをセキュリティスキャンから除外することにより、前記分類情報を前記第１のファイルに適用される前記第１のファイルの前記分類情報、および前記第２のファイルに適用される前記第２のファイルの分類情報を前記第１の計算システムに送信するステップと
を含む、コンピュータにより実施される方法。
【請求項１０】
前記第１のファイルの前記識別情報は、前記第１のファイルのダイジェストを含み、
前記第１のファイルの前記識別情報は、前記第１のファイルが記憶されているディレクトリの名称を含む、請求項９に記載のコンピュータにより実施される方法。
【請求項１１】
前記ダイジェストは前記第１のファイルのハッシュを含み、
前記第１のファイルが記憶されている前記ディレクトリの名称は、正規化されたディレクトリパスを含む、請求項１０に記載のコンピュータにより実施される方法。
【請求項１２】
前記第１のファイルは、第１のソフトウェアプログラムにより前記第１の計算システムにインストールされ、
前記第２のファイルを識別するステップは、前記第１のファイルが記憶されている前記ディレクトリの名称を使用して、前記第１のソフトウェアプログラムに関連付けられたディレクトリを見つけるステップを含み、
前記第２のファイルを識別するステップは、前記第１のソフトウェアプログラムに関連付けられたディレクトリが前記第２のファイルを含むと判断するステップを含む、請求項１０に記載のコンピュータにより実施される方法。
【請求項１３】
前記第２のファイルの前記識別情報は、
前記第２のファイルのファイル名、
前記第２のファイルのサイズ、
前記第２のファイルのダイジェスト
のうちの少なくとも１つを含む、請求項９に記載のコンピュータにより実施される方法。
【請求項１４】
ファイルのセット内の各ファイルの識別情報を送信するステップであって、
前記ファイルのセットは、前記第１のファイルをインストールしたアプリケーションに関連付けられ、
前記ファイルのセットは前記第２のファイルを含むステップと、
前記ファイルのセット内の各ファイルの分類情報を受信するステップと
をさらに含む、請求項９に記載のコンピュータにより実施される方法。
【請求項１５】
１つまたは複数のコンピュータ実行可能命令を含むソフトウェアプログラムであって、前記ソフトウェアプログラムは、計算装置により実行されると、前記計算装置に、
第１の計算システムに記憶されている第１のファイルの識別情報を特定すること、
前記第１のファイルの前記識別情報を第２の計算システムに送信することにより、分類情報について前記第２の計算システムに問い合わせること、
前記問い合わせに応答して、第２のファイルの識別情報および前記分類情報を受信することであって、前記分類情報は、前記第１および第２のファイルが信頼済みであることを示すこと、
前記第２のファイルの前記識別情報を使用して、前記第２のファイルが前記第１の計算システムに記憶されていると判断すること、
前記第１および第２のファイルをセキュリティスキャンから除外することにより、前記分類情報を前記第１および第２のファイルに適用すること
を実行させる、ソフトウェアプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
消費者およびビジネスは、機密データの記憶にますますコンピュータに頼っている。その結果、悪意のあるプログラマが、他人のコンピュータの違法制御およびアクセスを得る努力を増し続けているように見える。悪意のある動機を有するコンピュータプログラマは、ウィルス、トロイの木馬、ワーム、ならびに他人に属するコンピュータシステムおよびデータを損なう他のプログラムを作成してきており、作成し続ける。これら悪意のあるプログラムは多くの場合、マルウェアと呼ばれる。
【背景技術】
【０００２】
セキュリティソフトウェア企業は、マルウェアシグネチャ（例えば、マルウェアを識別するハッシュ）を作成し顧客に定期的に配布することにより、増加傾向にあるマルウェアと闘っている。例えば、セキュリティソフトウェア企業は、１日に複数回、マルウェアシグネチャ更新を顧客に送信し得る。マルウェアシグネチャを頻繁に更新することにより、セキュリティソフトウェア企業は、顧客が新しい脅威および変化する脅威から各自のコンピュータのセキュリティを保護するのを助け得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
顧客がマルウェア定義更新を受信する都度、顧客のコンピュータは多くのファイルを再スキャンして、マルウェアがコンピュータで実行されていないことを保証する必要があり得る。その結果、マルウェアシグネチャ更新を受信する都度、顧客のコンピュータはパフォーマンスヒットを受け得る。顧客のコンピュータおよびネットワークの性能損失は、シグネチャ更新のサイズおよび頻度が増大するにつれて増大する。性能損失は、負の顧客経験に繋がる恐れがある。
【０００４】
セキュリティソフトウェア開発者は、既知の良好なファイル（例えば、マルウェアがないことが分かっているファイル）をスキップすることにより、セキュリティスキャンを実行するために必要な時間およびネットワークトラフィックを低減しようとしてきた。ファイルをスキップする前に、セキュリティソフトウェアは通常、そのファイルが正当なものであり、マルウェアがないことを識別しなければならない。セキュリティソフトウェア開発者は、セキュリティスキャン時間を低減するために、既知の良好なファイルを識別する少なくとも２つの異なる方法を実施してきた。
【０００５】
第１の方法では、クライアントマシンが、既知の良好なファイルのハッシュのデータベースを保持し得る。マルウェアスキャンを実行する際、クライアントマシンはデータベースを照会して、既知の良好なファイルを識別し得る。次に、クライアントマシンは、既知のファイルをスキップし、スキャンをより迅速に完了できるようにし得る。しかし、既知の良好なファイルのハッシュのデータベースを維持することは、理想的ではない場合がある。データベースの維持には、ネットワークトラフィックを増大させる頻繁な更新が必要であり得る。データベースは大きくなる可能性もあり、期待される効率を提供しない場合がある。
【０００６】
第２の方法では、クライアントマシンがドライブをスキャンし得る。クライアントマシンは、ドライブに記憶されているファイルのハッシュを計算し、ハッシュをサーバに送信し得る。次に、サーバは、ハッシュが既知の良好なファイルに対応するか否かを判断し得る。この技法にも欠点がある。ファイルハッシュをサーバに送信することは、不必要なクライアント−サーバ通信を生み出し、大きすぎるネットワーク帯域幅を消費し得る。さらに、多くの消費者インターネット接続は非対称であり、アップロード帯域幅はダウンロード帯域幅よりもはるかに小さい。したがって、多数のハッシュを消費者のコンピュータからセキュリティソフトウェアサーバへアップロードすることは、低速でリソースを消費するプロセスであり得る。
【０００７】
本願は、２００８年５月３０日に出願された「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  Ｆｏｒ  Ｓｃａｎｎｉｎｇ  Ｆｉｌｅｓ  Ｆｏｒ  Ｍａｌｗａｒｅ」という名称の米国特許出願第１２／１３０，５５９号明細書および２００８年５月３０日に出願された「Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｄｅｔｅｒｍｉｎｉｎｇ  ａ  Ｆｉｌｅ  Ｓｅｔ」という名称の米国特許出願第１２／１３０，８３９号明細書に関連し、これら特許出願のそれぞれの開示をそのまま参照により本明細書に援用する。
【課題を解決するための手段】
【０００８】
本開示の実施形態は、信頼済みファイル（すなわち、既知の良好なファイル）をスキップすることによるセキュリティスキャン速度の増大に関する。クライアント装置（例えば、第１の計算システム）上のセキュリティモジュールは、クライアント装置上の信頼済みファイルを識別しようとし得る。信頼済みファイルを識別するプロセスにおいて、セキュリティモジュールは、クライアント装置に記憶されている第１のファイルの識別情報を特定し得る。セキュリティモジュールは、第１のファイルのダイジェストを計算することにより、識別情報を特定し得る。セキュリティモジュールは、第１のファイルが記憶されているディレクトリの名称を識別することによっても識別情報を特定し得る。セキュリティモジュールは、第１のファイルの識別情報をサーバに送信することにより、サーバに分類情報を問い合わせ得る。
【０００９】
サーバは、識別情報を使用して、第１のファイルの分類情報について分類データベースを検索し得る。例えば、サーバは、第１のファイルのダイジェストに一致するファイルダイジェストについて分類データベースを検索し得る。ファイルダイジェストの検索に加えて、またはその代替として、サーバは、識別情報内に含まれたディレクトリ名に一致する分類データベース内のディレクトリ名について検索し得る。サーバは、ディレクトリ名に関連付けられた１つまたは複数の追加ファイルも見つけ得る。次に、サーバは、追加ファイルの識別情報をクライアント装置に送信し得る。サーバは、第１のファイルおよび追加ファイルの分類情報も第１の計算装置に送信し得る。
【００１０】
分類情報は、第１のファイルおよび追加ファイルが信頼済みか否かを示し得る。ファイルが信頼済みである場合、第１の計算装置上のセキュリティソフトウェアは、それらファイルをセキュリティスキャンから除外し得る。信頼済みファイルを除外することにより、セキュリティスキャンをより効率的に実施し得る。さらに、本開示の実施形態は、クライアント装置が複数のファイルの分類情報を得るために１つのファイルダイジェストをアップロードする必要があるだけであるため、信頼済みファイルを識別するために必要なネットワーク帯域幅の量、特にクライアント側のアップロード帯域幅を低減し得る。他の実施形態では、クライアント装置は、少数のファイルダイジェストをサーバに送信し、サーバは、それらファイルおよび追加ファイルの分類情報を返し得る。
【００１１】
任意の上述した実施形態からの特徴は、本明細書において説明される一般原理に従って互いに組み合わせて使用し得る。これらおよび他の実施形態、特徴、および利点は、添付の図面および特許請求の範囲と併せて以下の詳細な説明を読んだ上でより十分に理解されるであろう。
【００１２】
添付図面は、いくつかの例示的な実施形態を示し、本明細書の一部である。以下の説明と併せて、これら図面は、本開示の様々な原理を実証し説明する。
【図面の簡単な説明】
【００１３】
【図１】本開示の実施形態を実施する例示的なネットワークのブロック図である。
【図２】特定の実施形態によるファイル分類を特定する例示的な方法の流れ図である。
【図３】特定の実施形態によるファイル分類を特定する別の例示的な方法のブロック図である。
【図４】特定の実施形態による例示的な分類情報データベースのブロック図である。
【図５】特定の実施形態によるクライアントとサーバとの例示的な通信の流れ図である。
【図６】本明細書において説明され、かつ／または図示される実施形態のうちの１つまたは複数を実施可能な例示的な計算システムのブロック図である。
【図７】本明細書において説明され、かつ／または図示される実施形態のうちの１つまたは複数を実施可能な例示的な計算ネットワークのブロック図である。
【発明を実施するための形態】
【００１４】
図面全体を通して、同一の参照文字および説明は、同様であるが必ずしも同一である必要はない要素を示す。本明細書において説明される例示的な実施形態には様々な変更および代替の形態が可能であるが、特定の実施形態が例として図面に示されており、それら特定の実施形態について本明細書において詳細に説明する。しかし、本明細書において説明される例示的な実施形態は、開示される特定の形態への限定を意図しない。むしろ、本開示は、添付の特許請求の範囲内に入るすべての変更、均等物、および代替を包含する。
【００１５】
さらに詳細に後述するように、本開示は一般に、１つまたは複数のファイルの識別情報をサーバに送信することにより、複数のファイルのファイル分類を特定するシステムおよび方法に関する。以下に詳述するように、クライアント装置上のセキュリティソフトウェアは、第１のファイルの分類情報についてサーバ上の分類データベースを照会し得る。要求に応答して、サーバは、第１のファイルの分類情報をクライアント装置に送信し得る。サーバは、第１のファイルに関連付けられた１つまたは複数の追加ファイルの識別情報および分類情報もクライアント装置に送信し得る。クライアント装置は、分類情報を使用して、クライアント装置上のファイルが信頼済みであり、セキュリティスキャンでスキップ可能であるか否かを判断し得る。本開示の実施形態は、クライアントアップストリーム帯域幅を低減すると共に、クライアントシステム上のファイルを分類するために必要なネットワーク往復要求数を最低限に抑え得る。本開示の実施形態は、様々な他の特徴および利点も提供する。
【００１６】
図１は、クライアント１２０およびサーバ１５０を有するネットワーク１００を示す。クライアント１２０およびサーバ１５０は、ネットワーク１４０を介して通信し得る。ネットワーク１４０は、インターネット、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、または他の任意の適したコンピュータネットワークであり得る。クライアント１２０は、デスクトップコンピュータ、ラップトップコンピュータ、モバイル計算装置、ネットワーク計算装置、または他の任意の適した計算装置であり得る。いくつかの実施形態では、クライアント１２０は第１の計算装置と呼ばれ得る。クライアント１２０は、セキュリティソフトウェア１２２、信頼済みファイル１２４、アプリケーション１２６、およびディレクトリ１２８を含み得る。
【００１７】
セキュリティソフトウェア１２２は、ファイルの識別情報を特定し、ファイルの分類情報について第２の計算システムに問い合わせるようにプログラムされた任意のモジュール、アプリケーション、または他のコンピュータ実行可能コードであり得る。セキュリティソフトウェア１２２は、セキュリティソフトウェア１２２（または他の任意のアプリケーション）がセキュリティスキャンで信頼済みファイルをスキップできるように、クライアント１２０上のどのファイルが信頼済みであるかを判断し得る。クライアント１２０上のファイルが信頼済みであるか否かを判断するために、セキュリティソフトウェア１２２は、ディレクトリ１２８内のファイル１３０等の第１のファイルを識別し得る。ディレクトリ１２８は、クライアント１２０上のファイルシステム内のディレクトリであり得る。
【００１８】
ファイル１３０を識別した後、セキュリティソフトウェア１２２は、ファイル１３０の識別情報を特定し得る。例えば、セキュリティソフトウェア１２２は、ファイル１３０のダイジェストを計算し得る。他の実施形態では、セキュリティソフトウェア１２２は、ファイル１３０の事前に計算されたダイジェストを識別し得る。セキュリティソフトウェア１２２は、ディレクトリ１２８のディレクトリ名を特定し得る。いくつかの実施形態では、ディレクトリ１２８のディレクトリ名は、ディレクトリ１２８の正規化されたディレクトリパスであり得る。ファイル１３０の識別情報を特定することにより、セキュリティソフトウェア１２２は、ファイル１３０全体ではなく識別情報をサーバ１５０に送信することにより、ファイル１３０の分類情報を要求可能であり得る。通常、ファイルの識別情報は、ファイル自体よりも小さいサイズであり得る。したがって、ファイルの識別情報を送信することで消費されるネットワーク帯域幅は、ファイル自体を送信するよりも少ないものであり得る。
【００１９】
セキュリティソフトウェア１２２は、ファイル１３０の識別情報をサーバ１５０に送信して、ファイル１３０の分類情報について分類情報データベース１５２を照会し得る。図４および対応する説明は、分類データベースの例および分類データベースをどのように作成し得るかを提供する。サーバ１５０は、ファイル１３０に関連付けられた分類情報について分類情報データベース１５２を検索し得る。いくつかの実施形態では、サーバ１５０は、ファイル１３０のダイジェストに一致するダイジェストについて分類情報データベース１５２を検索し得る。サーバ１５０は、ダイジェスト１６２がファイル１３０のダイジェストに一致することを発見し得る。
【００２０】
いくつかの実施形態では、ファイル１３０のダイジェストに一致するダイジェストについて分類情報データベース１５２を検索する前に、サーバ１５０は、ディレクトリ１２８のディレクトリ名に一致するディレクトリについて分類情報データベースを検索し得る。例えば、サーバ１５０は、ディレクトリ名１６０がディレクトリ１２８のディレクトリ名に一致すると判断し得る。ディレクトリ１２８のディレクトリ名に一致する分類情報データベース１５２内のディレクトリを識別した後、サーバ１５０は、ファイル１３０のダイジェストに一致するダイジェストのディレクトリに関連付けられたファイルを検索し得る。
【００２１】
分類情報データベース１５２は、ファイル１３０に関連付けられた追加のファイルダイジェストを識別し得る。例えば、分類情報データベース１５２は、ファイルダイジェスト１６４および１６６もディレクトリ名１６０に関連付けられているため、ファイルダイジェスト１６４および１６６を識別し得る。分類情報データベース１５２は、ダイジェスト１６４および１６６をクライアント１２０上のセキュリティソフトウェア１２２に送信し得る。分類情報データベース１５２は、分類情報１７０、１７２、および１７４もセキュリティソフトウェア１２２に送信し得る。
【００２２】
追加ファイルの識別情報を受信した後、セキュリティソフトウェア１２２は、これら追加ファイルがディレクトリ１２８内に含まれているか否かを判断し得る。例えば、セキュリティソフトウェア１２２は、ダイジェスト１６４および１６６がファイル１３２および１３４のダイジェストに一致するか否かを判断し得る。この判断プロセスの一環として、セキュリティソフトウェア１２２は、ファイル１３２および１３４のダイジェストを計算し得る。他の実施形態では、セキュリティソフトウェア１２２は、ファイル１３２および１３４の事前に計算されたダイジェストを識別し得る。
【００２３】
セキュリティソフトウェア１２２は、ダイジェスト１６４がファイル１３２に対応し、ダイジェスト１６６がファイル１３４に対応すると判断し得る。次に、セキュリティソフトウェア１２２は、分類情報１７２をファイル１３２に適用し、分類情報１７４をファイル１３４に適用し得る。セキュリティソフトウェア１２２は、分類情報１７０をファイル１３０に適用することもできる。分類情報１７０、１７２、および１７４により、ファイル１３０、１３２、および１３４が信頼済みであることが示される場合、セキュリティソフトウェア１２２は、ファイル１３０、１３２、および１３４をセキュリティスキャンから除外することにより、分類情報１７０、１７２、および１７４をこれらファイルに適用し得る。図１は、ディレクトリに関連付けられた（例えば、記憶された）各ファイルに別個の分類情報を示すが、いくつかの実施形態では、ディレクトリ内の各ファイルに同じ分類情報を関連付け得る。
【００２４】
図１は、クライアント１２０がアプリケーション１２６を含み得ることを示す。ディレクトリ１２８は、アプリケーション１２６によりインストールされ、かつ／またはアプリケーション１２６に他の様式で関連付けられたフォルダであり得る。分類情報データベース１５２は、アプリケーション１２６によりインストールされたファイルの分類情報を含みうる。例えば、セキュリティモジュールは、アプリケーション１２６のインストールを監視して、どのファイルがアプリケーション１２６によりインストールされるかを判断し得る。次に、セキュリティモジュールは、アプリケーション１２６によりインストールされたファイルを解析し分類し得る。図４に対応する開示では、ファイルを解析し分類するプロセスについて考察する。
【００２５】
図２は、クライアント１２０等のクライアント装置により実行し得るステップを示す流れ図である。クライアント装置上のセキュリティソフトウェアは、第１の計算システムに記憶されている第１のファイルの識別情報を特定し得る（ステップ２１０）。第１のファイルの識別情報を特定することは、第１のファイルのダイジェストを計算することを含み得る。ダイジェストは、ハッシュ等のファイル識別子であり得る。ハッシュは、値、コード、和、またはハッシュ関数（例えば、任意の長さのデータストリームの入力をとり、特定の固定サイズの値を有する出力を生成する関数）を使用して計算される他のデータであり得る。ハッシュ関数は、巡回冗長検査（ＣＲＣ）ハッシュ関数であり得る。他の実施形態では、ハッシュ関数は、メッセージ−ダイジェストアルゴリズム５（ＭＤ５）ハッシュ関数等の暗号ハッシュ関数であり得る。ハッシュ関数は、ＳＨＡ−０ハッシュ関数、ＳＨＡ−１ハッシュ関数、ＳＨＡ−２５６ハッシュ関数、またはＳＨＡ−５１２ハッシュ関数等のセキュアハッシュアルゴリズム（ＳＨＡ）暗号ハッシュ関数であってもよい。第１のファイルのハッシュは、他の任意の公開または秘密ハッシュアルゴリズムを第１のファイルに適用することによって計算してもよい。
【００２６】
第１のファイルの識別情報を特定することは、第１のファイルが記憶されているディレクトリを特定することも含み得る。例えば、セキュリティソフトウェアは、第１のファイルが記憶されているディレクトリのディレクトリ名を特定し得る。ディレクトリ名は、ディレクトリのファイルパスであり得る。いくつかの実施形態では、ディレクトリ名は、特定マシンの絶対ディレクトリパスを、ディレクトリパスのマシン固有の構成要素をなくした汎用ディレクトリパスに変換することにより作成された正規化されたディレクトリパスであり得る。換言すれば、正規化されたディレクトリパスは、クライアントマシンに固有のディレクトリパス内のデータを除去するが、ディレクトリがインストールされ得る任意のマシンに汎用のディレクトリパスの部分を保持することにより作成し得る。
【００２７】
セキュリティソフトウェアは、第１のファイルの識別情報を特定した後、分類情報について第２の計算システム（例えば、サーバ）に問い合わせし得る（ステップ２２０）。セキュリティソフトウェアは、第１のファイルの識別情報を第２の計算システムに送信することにより、第２の計算システムに問い合わせし得る。例えば、セキュリティソフトウェアは、第１のファイルのダイジェストおよびディレクトリ名を第２の計算システム上の分類情報データベースに送信し得る。
【００２８】
第１の計算システムは、問い合わせに応答して、第２のファイルの識別情報を受信し得る（ステップ２３０）。第２のファイルの識別情報は、第２のファイルのファイル名、第２のファイルのサイズ、第２のファイルのダイジェスト、および／または第２のファイルの他の任意の識別情報であり得る。第１の計算システムは、第１および第２のファイルの分類情報も受信し得る（ステップ２３０）。分類情報は、第１および第２のファイルが信頼済みであるか否かを示す分類情報であり得る。いくつかの実施形態では、分類情報は、ファイルが信頼済みであるか否かを示す両ファイルに関連付けられた単一の分類であり得る。他の実施形態では、第１の計算装置は、第１および第２のファイルのそれぞれに異なる分類情報を受信し得る。
【００２９】
セキュリティソフトウェアは、第２のファイルの識別情報を使用して、第２のファイルが第１の計算システムに記憶されていると判断し得る（ステップ２４０）。第２のファイルの識別情報を使用して、第２のファイルが第１の計算装置に記憶されていると判断することは、第１の計算装置が、第２のファイルのファイル名を有するファイルを含むと判断すること、および第２のファイルのダイジェストが、第２のファイルのファイル名を有するファイルのダイジェストに一致すると判断することを含み得る。換言すれば、セキュリティソフトウェアはまず、第１の計算装置をチェックして、第１の計算装置が、第２の計算システムから受信した名称に一致する名称を有するファイルを有するか否かを判断し得る。セキュリティソフトウェアは、ファイル名称の一致を見つけた場合、第１の計算装置上のファイルのハッシュを第２の計算装置から受信したハッシュと比較し得る。ハッシュが一致する場合、セキュリティソフトウェアは、第１の計算装置上のファイルが、第２の計算装置により識別されたファイルである（すなわち、第１の計算装置が第２のファイルを含む）と判断し得る。
【００３０】
いくつかの実施形態では、第２のファイルの識別情報は、第２のファイルのサイズを含み得る。そのような実施形態では、第２のファイルの識別情報を使用して、第２のファイルが第１の計算装置に記憶されているかを判断することは、第２のファイルのファイル名を有するファイルが第２のファイルと同じサイズであると判断することを含み得る。換言すれば、セキュリティソフトウェアは、ファイルが第２のファイルと同じサイズであると判断し、ファイルのハッシュ関数が一致すると判断し、かつ／またはファイルが同じ名称を有すると判断することにより、ファイルが第２のファイルであると判断し得る。
【００３１】
セキュリティソフトウェアは、第１および第２のファイルをセキュリティスキャンから除外することにより、分類情報を第１および第２のファイルに適用し得る（ステップ２５０）。例えば、セキュリティソフトウェアは、信頼済みファイルリストに第１および第２のファイルを含め得る。セキュリティソフトウェアは、セキュリティスキャンを実行する場合、信頼済みファイルリスト内で識別されるファイルをスキップし得る。
【００３２】
いくつかの実施形態では、ステップ２１０（第１のファイルの識別情報を特定すること）は、複数のファイルの識別情報を特定することを含み得る。例えば、セキュリティソフトウェアは、ファイルセットを含むディレクトリ内の少数のファイル（または多数のファイル）の識別情報を特定し得る。したがって、セキュリティソフトウェアは、ディレクトリ内のファイルのサブセットの識別情報を特定し得、ファイルのサブセットは第１のファイルを含み得る。そのような実施形態では、ステップ２２０は、ファイルのサブセット内の各ファイルの識別情報を第２の計算システムに送信することを含み得る。第２の計算システムは、ファイルのセットから単一のみのファイルを受信するよりも、ファイルのセットから複数のファイルを受信することにより、関連付けられたファイルのセット内の他のファイルをより迅速かつ正確に特定可能であり得る。
【００３３】
いくつかの実施形態では、ステップ２３０（第２のファイルの識別情報を受信すること）は、ファイルのセットの識別情報を受信することを含み得る。ファイルのセットは第２のファイルを含み得る。ファイルのセットは、第１のファイルが記憶されているディレクトリに関連付けられた各ファイルを含み得る。
【００３４】
図３は、ファイルの分類を特定するコンピュータにより実施される方法の流れ図を示す。図３に示されるステップは、ファイルの分類情報を要求しているクライアントと通信するサーバにより実行し得る。第２の計算システムは、第１の計算システムから第１のファイルの識別情報を受信し得る（ステップ３１０）。第１のファイルは、第１の計算システムに記憶されているファイルであり得る。第２の計算システムは、識別情報を使用して、第１のファイルの分類情報について分類データベースを検索し得る（ステップ３２０）。分類データベースは、第２の計算システムに記憶され得る。上述したように、第２の計算システムは、第１のファイルのダイジェストおよび／またはディレクトリに一致するダイジェストおよび／またはディレクトリについて分類データベースを検索することにより、第１のファイルの分類情報について分類データベースを検索し得る。
【００３５】
分類データベース内で第１のファイルを識別した後、第２の計算システムは、第１のファイルに関連付けられた第２のファイルを識別し得る（ステップ３３０）。第２の計算システムは、第１のファイルと同じディレクトリに関連付けられたファイルを検索することにより、第１のファイルに関連付けられたファイルを識別し得る。換言すれば、第１のファイルおよび第２のファイルが同じディレクトリ内に記憶されている場合、第１のファイルは第２のファイルに関連付けられ得る。
【００３６】
第２の計算システムは、第２のファイルの識別情報を第１の計算装置に送信し得る（ステップ３４０）。上述したように、第２のファイルの識別情報は、第２のファイルのダイジェスト、第２のファイルの名称、第２のファイルのサイズ、および／または第２のファイルを識別するか、もしくは第２のファイルを他のファイルから区別し得る他の任意の情報を含み得る。第２の計算システムは、第１のファイルの分類情報ならびに第２のファイルの分類情報を第１の計算装置に送信し得る（ステップ３５０）。
【００３７】
ステップ３４０および３５０は別個のステップとして示されるが、第２の計算装置はステップ３４０および３５０を同時に実行してもよい。換言すれば、第２の計算装置は、識別情報および分類情報を同時に送信してもよい。いくつかの実施形態では、第２の計算装置は、第１のファイルに関連付けられたファイルのセットを識別し得、ファイルのセットは、第２のファイルを含み得る。第２の計算装置は、ファイルのセット内の各ファイルの識別情報および分類情報を第１の計算装置に送信し得る。
【００３８】
図４は分類情報データベース４００を示す。分類情報データベース４００は、ディレクトリをファイルに関連付け得る。分類情報データベース４００は、ディレクトリのディレクトリ名をファイルのファイルダイジェストに関連付けることにより、ディレクトリをファイルに関連付け得る。例えば、ディレクトリ名４１０にファイルダイジェスト４２０、４２２、４２４、４２６、および４２８に関連付け得る。ディレクトリ名４１２にファイルダイジェスト４３０、４３２、および４３４を関連付け得る。ディレクトリ名４１４にファイルダイジェスト４４０、４４２、４４４、およびお４４６に関連付け得る。
【００３９】
分類情報データベース４００は、ファイルを分類情報に関連付けることもできる。例えば、ファイルダイジェスト４２０を分類情報４５０に関連付け、ファイルダイジェスト４２２を分類情報４５２に関連付け、ファイルダイジェスト４２４を分類情報４５４に関連付け、ファイルダイジェスト４２６を分類情報４５６に関連付け、ファイルダイジェスト４２８を分類情報４５８に関連付け得る。ファイルダイジェスト４３０、４３２、および４３４を分類情報４６０に関連付け得る。いくつかの実施形態では、分類情報をディレクトリに関連付け得る。例えば、ディレクトリ４１４を分類情報４７０に関連付け得る。したがって、ディレクトリ４１４に関連付けられたあらゆるファイルも、分類情報４７０に関連付け得る。したがって、分類情報４７０は、ファイルダイジェスト４４０、ファイルダイジェスト４４２、ファイルダイジェスト４４４、およびファイルダイジェスト４４６に対して適用される。
【００４０】
クライアントがファイルの分類情報について分類情報データベース４００を照会する場合、分類情報データベース４００は、クライアント上のファイルに一致するファイルダイジェストを検索し得る。分類情報データベース４００は、一致するファイルダイジェストを見つけると、ダイジェストに関連付けられた分類情報をクライアントに返し得る。分類情報データベース４００は、クライアント上のファイルに関連付けられた他のファイルダイジェストも返し得る。
【００４１】
一例として、クライアントは、第１のダイジェストを有する分類情報データベース４００を照会し得る。分類情報データベース４００は、第１のダイジェストがファイルダイジェスト４２４に一致すると判断し得る。分類情報データベース４００は、ファイルダイジェスト４２４の分類情報４５４を返し得る。分類情報データベース４００は、ファイルダイジェスト４２０、４２２、４２６、および４２８ならびに対応する分類情報もクライアントに返し得る。
【００４２】
分類情報データベース１５２は、分類ツールを使用して作成または追加し得る。分類ツールは、ソフトウェアアプリケーションのインストールを監視し、ソフトウェアアプリケーションによりインストールされるファイルを分類し得る。例えば、アプリケーションによりインストールされたファイルのセットを識別した後、マルウェアを探してファイルをスキャンし得る。ファイルは、マルウェアを含む確率に基づいて分類し得る。ファイルおよび対応する分類情報は、分類データベース４００等のクライアントに応対するデータベースシステムにアップロードし得る。
【００４３】
図５は、クライアント５０２とサーバ５０４との通信を示す流れ図を示す。クライアント５０２はファイルを選択し得る（ステップ５１０）。次に、クライアント５０２は、ファイルのダイジェストを計算し得る（ステップ５１５）。クライアント５０２は、ファイルのダイジェストおよびディレクトリ情報をサーバ５０４に送信し得る（ステップ５２０）。サーバ５０４は、ファイルに関連付けられたディレクトリを見つけ得る（ステップ５２５）。サーバ５０４は、ディレクトリに関連付けられた追加ファイルも識別し得る（ステップ５３０）。サーバ５０４は、追加ファイルの識別情報をクライアント５０２に送信し得る（ステップ５３５）。同時に（または別の時間に）、サーバ５０４は、元のファイルおよび追加ファイルの分類情報をクライアント５０２に送信し得る（ステップ５４０）。クライアント５０２は、サーバ５０４から情報を受信し、識別情報を使用してファイルを識別し得る（ステップ５４５）。次に、クライアント５０２は分類情報をファイルに適用し得る（ステップ５５０）。
【００４４】
図６は、本明細書において説明され、かつ／または図示される実施形態のうちの１つまたは複数を実施可能な例示的な計算システム６１０のブロック図である。計算システム６１０は、コンピュータ可読命令を実行可能な任意のシングルまたはマルチプロセッサ計算装置またはシステムを広く表す。計算システム６１０の例としては、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散計算システム、ハンドヘルド装置、または他の任意の計算システムもしくは装置が挙げられるが、これらに限定されない。最も基本的な構成では、計算システム６１０は、少なくとも１つのプロセッサ６１４およびシステムメモリ６１６を含み得る。
【００４５】
プロセッサ６１４は一般に、データを処理するか、または命令を解釈し実行することが可能な任意の種類または形態の処理ユニットを表す。特定の実施形態では、プロセッサ６１４は、命令をソフトウェアアプリケーションまたはモジュールから受け取り得る。これらの命令は、プロセッサ６１４に、本明細書において説明され、かつ／または図示される例示的な実施形態のうちの１つまたは複数の機能を実行させることができる。例えば、プロセッサ６１４は、単独でまたは他の要素と組み合わせて、本明細書において説明される特定するステップ、計算するステップ、識別するステップ、適用するステップ、使用するステップ、問い合わせるステップ、受信するステップ、および／または送信するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。プロセッサ６１４は、本明細書において説明され、かつ／または図示される他の任意のステップ、方法、またはプロセスを実行してもよく、かつ／または実行する手段であってもよい。
【００４６】
システムメモリ６１６は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の揮発性または不揮発性記憶装置または媒体を表す。システムメモリ６１６の例としては、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、または他の任意の適したメモリ装置が挙げられるが、これらに限定されない。必要ではないが、特定の実施形態では、計算システム６１０は、揮発性記憶装置（例えば、システムメモリ６１６等）および不揮発性記憶装置（例えば、詳細に後述するような一次記憶装置６３２等）の両方を含み得る。
【００４７】
特定の実施形態では、例示的な計算システム６１０は、プロセッサ６１４およびシステムメモリ６１６に加えて、１つまたは複数の構成要素または要素も含み得る。例えば、図６に示すように、計算システム６１０は、メモリコントローラ６１８、入出力（Ｉ／Ｏ）コントローラ６２０、および通信インタフェース６２２を備えることができ、これらのそれぞれは、通信基盤６１２を介して相互接続することができる。通信基盤６１２は一般に、計算装置のうちの１つまたは複数の構成要素間の通信に役立つことが可能な任意の種類または形態の基盤を表す。通信基盤６１２の例としては、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅ、または同様のバス等）およびネットワークが挙げられるが、これらに限定されない。
【００４８】
メモリコントローラ６１８は一般に、メモリもしくはデータを処理可能であるか、または計算システム６１０の１つもしくは複数の構成要素間の通信を制御可能な任意の種類または形態の装置を表す。例えば、特定の実施形態では、メモリコントローラ６１８は、通信基盤６１２を介してのプロセッサ６１４、システムメモリ６１６、およびＩ／Ｏコントローラ６２０の間での通信を制御し得る。特定の実施形態では、メモリコントローラは、単独でまたは他の要素と組み合わせて、特定すること、計算すること、識別すること、適用すること、使用すること、問い合わせること、受信すること、および／または送信すること等の本明細書において説明され、かつ／または示されるステップまたは特徴のうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。
【００４９】
Ｉ／Ｏコントローラ６２０は一般に、計算装置の入力機能および出力機能を調整し、かつ／または制御することが可能な任意の種類または形態のモジュールを表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ６２０は、プロセッサ６１４、システムメモリ６１６、通信インタフェース６２２、ディスプレイアダプタ６２６、入力インタフェース６３０、および記憶装置インタフェース６３４等の計算システム６１０の１つまたは複数の要素間のデータの転送を制御し得るか、または転送に役立ち得る。Ｉ／Ｏコントローラ６２０は、例えば、単独でまたは他の要素と組み合わせて、本明細書において説明される特定するステップ、計算するステップ、識別するステップ、適用するステップ、使用するステップ、問い合わせるステップ、受信するステップ、および／または送信するステップのうちの１つまたは複数を実行するため、かつ／またはそれ（ら）を実行する手段として使用し得る。Ｉ／Ｏコントローラ６２０は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００５０】
通信インタフェース６２２は、例示的な計算システム６１０と１つまたは複数の追加の装置との通信に役立つことが可能な任意の種類または形態の通信装置またはアダプタを広く表す。例えば、特定の実施形態では、通信インタフェース６２２は、計算システム６１０と、追加の計算システムを含む私設または公衆ネットワークとの通信に役立ち得る。通信インタフェース６２２の例としては、有線ネットワークインタフェース（ネットワークインタフェースカード等）、無線ネットワークインタフェース（無線ネットワークインタフェースカード等）、モデム、および他の任意の適したインタフェースが挙げられるが、これらに限定されない。少なくとも１つの実施形態では、通信インタフェース６２２は、インターネット等のネットワークへの直接リンクを介して、遠隔サーバへの直接接続を提供し得る。通信インタフェース６２２は、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワーク等）、パーソナルエリアネットワーク、電話網もしくはケーブル網、セルラ電話接続、衛星データ接続、または他の任意の適した接続を通して、このような接続を間接的に提供してもよい。
【００５１】
特定の実施形態では、通信インタフェース６２２は、外部バスまたは通信チャネルを介して、計算システム６１０と１つまたは複数の追加のネットワークもしくは記憶装置との通信に役立つように構成されたホストアダプタを表すこともできる。ホストアダプタの例としては、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ６９４ホストアダプタ、ＳＡＴＡホストアダプタ、ｅＳＡＴＡホストアダプタ、ＡＴＡホストアダプタおよびＰＡＴＡホストアダプタ、ファイバチャネルインタフェースアダプタ、イーサネット（登録商標）アダプタ等が挙げられるが、これらに限定されない。通信インタフェース６２２は、計算システム６１０が分散または遠隔計算を行えるようにもし得る。例えば、通信インタフェース６２２は、例えば、命令を遠隔装置から受信し得るか、または命令を実行のために遠隔装置に送信し得る。特定の実施形態では、通信インタフェース６２２は、単独でまたは他の要素と組み合わせて、本明細書において開示される特定するステップ、計算するステップ、識別するステップ、適用するステップ、使用するステップ、問い合わせるステップ、受信するステップ、および／または送信するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。通信インタフェース６２２は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行するための手段として使用することもできる。
【００５２】
図６に示すように、計算システム６１０は、ディスプレイアダプタ６２６を介して通信基盤６１２に結合された少なくとも１つの表示装置６２４を備えることもできる。表示装置６２４は一般に、ディスプレイアダプタ６２６により転送された情報を視覚的に表示可能な任意の種類または形態の装置を表す。同様に、ディスプレイアダプタ６２６は一般に、表示装置６２４に表示するために、グラフィックス、テキスト、および他のデータを通信基盤６１２から転送するように構成された任意の種類または形態の装置を表す。
【００５３】
図６に示すように、例示的な計算システム６１０は、入力インタフェース６３０を介して通信基盤６１２に結合された少なくとも１つの入力装置６２８を備えることもできる。入力装置６２８は一般に、コンピュータまたは人により生成された入力を例示的な計算システム６１０に提供可能な任意の種類または形態の入力装置を表す。入力装置６２８の例としては、キーボード、ポインティングデバイス、スピーチ認識装置、または他の任意の適した入力装置が挙げられるが、これらに限定されない。少なくとも１つの実施形態では、入力装置６２８は、単独でまたは他の要素と組み合わせて、本明細書に開示される特定するステップ、計算するステップ、識別するステップ、適用するステップ、使用するステップ、問い合わせるステップ、受信するステップ、および／または送信するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。入力装置６２８は、本開示に記載される他のステップおよび特徴を実行するため、かつ／またはそれ（ら）を実行する手段としても使用し得る。
【００５４】
図６に示すように、例示的な計算システム６１０は、記憶装置インタフェース６３４を介して通信基盤６１２に結合された一次記憶装置６３２およびバックアップ記憶装置６３３を備えることもできる。記憶装置６３２および６３３は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。例えば、記憶装置６３２および６３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フレキシブルディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であり得る。記憶装置インタフェース６３４は一般に、データを記憶装置６３２および６３３と計算システム６１０の他の構成要素との間でデータを転送する任意の種類または形態のインタフェースまたは装置を表す。
【００５５】
特定の実施形態では、記憶装置６３２および６３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されたリムーバブル記憶ユニットから読み出し、かつ／またはそれに書き込むように構成することができる。適したリムーバブル記憶ユニットの例としては、フレキシブルディスク、磁気テープ、光ディスク、フラッシュメモリ装置等が挙げられるが、これらに限定されない。記憶装置６３２および６３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を計算システム６１０にロードできるようにする他の同様の構造または装置を含んでもよい。例えば、記憶装置６３２および６３３は、ソフトウェア、データ、または他のコンピュータ可読情報を読み書きするように構成し得る。記憶装置６３２および６３３は、計算システム６１０の部分であってもよく、または他のインタフェースシステムを通してアクセスされる別個の装置であってもよい。
【００５６】
特定の実施形態では、本明細書に開示される例示的なファイルシステムは、一次記憶装置６３２に記憶され得る一方で、本明細書に開示される例示的なファイルシステムバックアップは、バックアップ記憶装置６３３に記憶され得る。記憶装置６３２および６３３は、例えば、単独でまたは他の要素と組み合わせて、本明細書に開示される特定するステップ、計算するステップ、識別するステップ、適用するステップ、使用するステップ、問い合わせるステップ、受信するステップ、および／または送信するステップのうちの１つまたは複数を実行するため、かつ／またはそれ（ら）を実行する手段としても使用し得る。記憶装置６３２および６３３は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００５７】
多くの他の装置およびサブシステムを計算システム６１０に接続し得る。逆に、図６に示される構成要素および装置のすべてが、本明細書において説明され、かつ／または図示される実施形態を実施するために存在する必要はない。上で参照された装置およびサブシステムは、図６に示す方法とは異なる方法で相互接続されてもよい。計算システム６１０は、任意の数のソフトウェア構成、ファームウェア構成、および／またはハードウェア構成を利用してもよい。例えば、本明細書に開示される例示的な実施形態のうちの１つまたは複数は、コンピュータ可読媒体上のコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ばれる）として符号化してもよい。語句「コンピュータ可読媒体」は一般に、コンピュータ可読命令を記憶可能または搬送可能な任意の形態の装置、搬送波、または媒体を指す。コンピュータ可読媒体の例としては、搬送波等の伝送型媒体、磁気記憶媒体（例えば、ハードディスクドライブおよびフレキシブルディスク）、光学記憶媒体（例えば、ＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、固体状態ドライブおよびフラッシュメディア）等の物理的な媒体、および他の分散システムが挙げられるが、これらに限定されない。
【００５８】
コンピュータプログラムを含むコンピュータ可読媒体は、計算システム６１０にロードすることができる。コンピュータ可読媒体に記憶されたコンピュータプログラムの全部または部分は次に、システムメモリ６１６および／または記憶装置６３２および６３３の様々な部分に記憶することができる。プロセッサ６１４により実行されると、計算システム６１０にロードされたコンピュータプログラムは、本明細書において説明され、かつ／または図示される例示的な実施形態のうちの１つまたは複数の機能をプロセッサ６１４に実行させ、かつ／またはプロセッサ６１４をそのような機能を実行する手段にさせることができる。これに加えて、またはこれに代えて、本明細書において説明され、かつ／または図示される例示的な実施形態のうちの１つまたは複数は、ファームウェアおよび／またはハードウェア内で実施され得る。例えば、計算システム６１０は、本明細書において開示される例示的な実施形態のうちの１つまたは複数を実施するように構成された特定用途向け集積回路（ＡＳＩＣ）として構成され得る。
【００５９】
図７は、クライアントシステム７１０、７２０、および７３０ならびにサーバ７４０および７４５をネットワーク７５０に結合し得る例示的なネットワークアーキテクチャ７００のブロック図である。クライアントシステム７１０、７２０、および７３０は一般に、図６の例示的な計算システム６１０等の任意の種類または形態の計算装置またはシステムを表す。同様に、サーバ７４０および７４５は一般に、様々なデータベースサービスを提供し、かつ／または特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバまたはデータベースサーバ等の計算装置またはシステムを表す。ネットワーク７５０は一般に、例えば、イントラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、またはインターネットを含む、任意の通信ネットワークまたはコンピュータネットワークを表す。
【００６０】
図７に示すように、１つまたは複数の記憶装置７６０（１）−（Ｎ）は、サーバ７４０に直接取り付けることができる。同様に、１つまたは複数の記憶装置７７０（１）−（Ｎ）も、サーバ７４５に直接取り付けることができる。記憶装置７６０（１）−（Ｎ）および記憶装置７７０（１）−（Ｎ）は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。特定の実施形態では、記憶装置７６０（１）−（Ｎ）および記憶装置７７０（１）−（Ｎ）は、ＮＦＳ、ＳＭＢ、またはＣＩＦＳ等の様々なプロトコルを使用してサーバ７４０および７４５と通信するように構成されたネットワーク接続記憶装置（ＮＡＳ）を表し得る。
【００６１】
サーバ７４０および７４５は、ストレージエリアネットワーク（ＳＡＮ）ファブリック７８０に接続することもできる。ＳＡＮファブリック７８０は一般に、複数の記憶装置間の通信に役立つことが可能な任意の種類または形態のコンピュータネットワークまたはアーキテクチャを表す。ＳＡＮファブリック７８０は、サーバ７４０および７４５と複数の記憶装置７９０（１）−（Ｎ）および／またはインテリジェントストレージアレイ７９５との通信に役立ち得る。ＳＡＮファブリック７８０は、ネットワーク７５０ならびにサーバ７４０および７４５を介して、クライアントシステム７１０、７２０、および７３０と記憶装置７９０（１）−（Ｎ）および／またはインテリジェントストレージアレイ７９５との通信にも、装置７９０（１）−（Ｎ）およびアレイ７９５がクライアントシステム７１０、７２０、および７３０にローカルに接続された装置として見えるように、役立ち得る。記憶装置７６０（１）−（Ｎ）および記憶装置７７０（１）−（Ｎ）と同様に、記憶装置７９０（１）−（Ｎ）およびインテリジェントストレージアレイ７９５は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または媒体を表す。
【００６２】
特定の実施形態において、図６の例示的な計算システム６１０を参照すると、図６の通信インタフェース６２２等の通信インタフェースを使用して、各クライアントシステム７１０、７２０、および７３０とネットワーク７５０との間に接続を提供し得る。クライアントシステム７１０、７２０、および７３０は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用して、サーバ７４０または７４５上の情報にアクセス可能であり得る。このようなソフトウェアは、クライアントシステム７１０、７２０、および７３０が、サーバ７４０、サーバ７４５、記憶装置７６０（１）−（Ｎ）、記憶装置７７０（１）−（Ｎ）、記憶装置７９０（１）−（Ｎ）、またはインテリジェントストレージアレイ７９５によりホストされるデータにアクセスできるようにし得る。図７は、データ交換にネットワーク（インターネット等）を使用することを示すが、本明細書において説明され、かつ／または図示される実施形態は、インターネットまたは特定のいかなるネットワークベースの環境にも限定されない。
【００６３】
少なくとも１つの実施形態では、本明細書において開示される例示的な実施形態のうちの１つまたは複数の全部または部分は、コンピュータプログラムとして符号化し、サーバ７４０、サーバ７４５、記憶装置７６０（１）−（Ｎ）、記憶装置７７０（１）−（Ｎ）、記憶装置７９０（１）−（Ｎ）、インテリジェントストレージアレイ７９５、またはこれらの任意の組み合わせにロードし、それ（ら）により実行することができる。本明細書に開示される例示的な実施形態のうちの１つまたは複数の全部または部分は、コンピュータプログラムとして符号化し、サーバ７４０に記憶し、サーバ７４５により実行され、ネットワーク７５０を介して、クライアントシステム７１０、７２０、および７３０に分配させることもできる。したがって、ネットワークアーキテクチャ７００は、単独でまたは他の要素と組み合わせて、本明細書に開示される特定するステップ、計算するステップ、識別するステップ、適用するステップ、使用するステップ、問い合わせるステップ、受信するステップ、および／または送信するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。ネットワークアーキテクチャ７００は、本開示に説明される他のステップおよび特徴を実行するために、かつ／または実行する手段として使用することもできる。
【００６４】
上に詳述したように、計算システム６１０および／またはネットワークアーキテクチャ７００の構成要素のうちの１つまたは複数は、単独で、または他の要素と併せて、本明細書において説明され、かつ／または図示される例示的な方法のうちの１つまたは複数のステップを実行し得、かつ／または実行する手段であり得る。例えば、ファイルの分類を特定するコンピュータにより実施される方法は、第１の計算システムに記憶されている第１のファイルの情報を特定することを含み得る。この方法は、第１のファイルの識別情報を第２の計算システムに送信することにより、分類情報について第２の計算システムに問い合わせることも含み得る。この方法は、第２のファイルの識別情報を受信すること、および分類情報を受信することも含み得る。分類情報は、第１および第２のファイルが信頼済みであることを示し得る。この方法は、第２のファイルの識別情報を使用して、第２のファイルが第１の計算システムに記憶されていると判断することを含み得る。この方法は、第１および第２のファイルをセキュリティスキャンから除外することにより、分類情報を第１および第２のファイルに適用することをさらに含み得る。
【００６５】
いくつかの実施形態では、第１のファイルの識別情報を特定することは、第１のファイルのダイジェストを計算することを含み得る。少なくとも１つの実施形態では、第１のファイルの識別情報は、第１のファイルのダイジェストを含み得、第１のファイルの識別情報は、第１のファイルが記憶されているディレクトリの名称を含みうる。
【００６６】
様々な実施形態によれば、ダイジェストは第１のファイルのハッシュを含み得、第１のファイルが記憶されているディレクトリの名称は、正規化されたディレクトリパスを含み得る。様々な実施形態によれば、第２のファイルの識別情報は、第２のファイルのファイル名および第２のファイルのダイジェストを含み得る。第２のファイルの識別情報を使用して、第２のファイルが第１の計算システムに記憶されていると判断することは、第１の計算装置が、第２のファイルのファイル名を有するファイルを含み、第２のファイルのダイジェストが、ファイル名を有するファイルのダイジェストに一致すると判断することを含み得る。
【００６７】
様々な実施形態では、第２のファイルの識別情報は、第２のファイルのサイズを含み得る。第２のファイルの識別情報を使用して、第２のファイルが第１の計算装置に記憶されていると判断することは、第２のファイルのファイル名を有するファイルが、第２のファイルと同じサイズであると判断することを含み得る。
【００６８】
様々な実施形態によれば、第１のファイルは、第１のソフトウェアプログラムにより第１の計算装置にインストールされ、第２のファイルも第１のソフトウェアプログラムにより第１の計算装置にインストールされた。少なくとも１つの実施形態では、方法は、ファイルのセット内の各ファイルの識別情報を受信することを含み得る。ファイルのセットは、第１のファイルをインストールしたアプリケーションに関連付け得る。ファイルのセットは第２のファイルを含み得る。方法は、ファイルのセット内の各ファイルの分類情報を受信することも含み得る。特定の実施形態によれば、方法は、ファイルのサブセット内の各ファイルの識別情報を特定することをさらに含み得る。ファイルのサブセットは第１のファイルを含み得る。ファイルのサブセットは、アプリケーションに関連付けられたファイルのセットのサブセットであり得る。方法は、ファイルのサブセット内の各ファイルの識別情報を第２の計算システムに送信することにより、識別情報について第２の計算システムに問い合わせすることも含み得る。
【００６９】
特定の実施形態では、ファイルの分類を特定するコンピュータにより実施される方法は、第１の計算システムに記憶されている第１のファイルの識別情報を受信することを含み得る。方法は、識別情報を使用して、第１のファイルの分類情報について分類データベースを検索することも含み得る。分類データベースは第２の計算システムに記憶し得る。方法は、第１のファイルに関連付けられた第２のファイルを識別すること、および第２のファイルの識別情報を第１の計算システムに送信することを含み得る。方法は、第１のファイルの分類情報および第２のファイルの分類情報を第１の計算システムに送信することをさらに含み得る。
【００７０】
いくつかの実施形態では、第１のファイルの識別情報は第１のファイルのダイジェストを含み得る。第１のファイルの識別情報は、第１のファイルが記憶されているディレクトリの名称も含み得る。様々な実施形態によれば、ダイジェストは第１のファイルのハッシュを含み得る。第１のファイルが記憶されているディレクトリの名称は、正規化されたディレクトリパスを含み得る。
【００７１】
いくつかの実施形態では、第１のファイルは、第１のソフトウェアプログラムにより第１の計算装置にインストールされ得る。様々な実施形態では、第２のファイルを識別することは、第１のファイルが記憶されているディレクトリの名称を使用して、第１のソフトウェアプログラムに関連付けられたディレクトリを見つけ得る。いくつかの実施形態では、第２のファイルを識別することは、第１のソフトウェアプログラムに関連付けられたディレクトリが第２のファイルを含み得ると判断することを含み得る。
【００７２】
少なくとも１つの実施形態によれば、第２のファイルの識別情報は、第２のファイルのファイル名、第２のファイルのサイズ、および第２のファイルのダイジェストのうちの少なくとも１つを含み得る。方法は、ファイルのセット内の各ファイルの識別情報を送信することも含み得る。ファイルのセットに、第１のファイルをインストールしたアプリケーションを関連付け得る。方法は、ファイルのセット内の各ファイルの分類情報を受信することも含み得る。様々な実施形態によれば、方法は、ファイルのサブセット内の各ファイルの識別情報を受信することをさらに含み得る。識別情報は、第１の計算システムから受信し得る。ファイルのサブセットは、第１のファイルを含み得、ファイルのサブセットは、アプリケーションに関連付けられたファイルのセットのサブセットであり得る。
【００７３】
上記開示に、特定のブロック図、フローチャート、および例を使用して様々な実施形態を説明したが、本明細書において説明され、かつ／または図示される各ブロック図の構成要素、フローチャートのステップ、動作、および／または構成要素は、独立して、かつ／または集合的に、広範囲のハードウェア構成、ソフトウェア構成、またはファームウェア構成（またはこれらの任意の組み合わせ）を使用して実施し得る。さらに、他の構成要素内に含まれる構成要素のいかなる開示も、同じ機能を達成するために、他の多くの構造を実施可能なため、例示的な性質のものであるとみなされるべきである。
【００７４】
本明細書において説明され、かつ／または図示されるプロセスパラメータおよびステップシーケンスは、単なる例として与えられ、必要に応じて変更が可能である。例えば、本明細書において図示され、かつ／または説明されるステップは、特定の順序で図示または説明され得るが、これらのステップは、必ずしも図示または説明された順序で実行される必要はない。本明細書において説明され、かつ／または図示される例示的な様々な方法は、本明細書において説明されるか、もしくは図示されるステップのうちの１つもしくは複数を省いてもよく、または開示されるステップに加えて他のステップを含んでもよい。
【００７５】
さらに、様々な実施形態を完全に機能する計算システムの文脈の中で本明細書において説明し、かつ／または図示したが、配布を実際に実行するために使用されるコンピュータ可読媒体の特定の種類に関係なく、これら例示的な実施形態のうちの１つまたは複数を様々な形態のプログラム製品として配布してもよい。本明細書に開示される実施形態は、特定のタスクを実行するソフトウェアモジュールを使用して実施してもよい。これらソフトウェアモジュールは、コンピュータ可読記憶媒体または計算システムに記憶可能なスクリプト、バッチ、または他の実行可能ファイルを含み得る。いくつかの実施形態では、これらソフトウェアモジュールは、本明細書において開示された例示的な実施形態のうちの１つまたは複数を実行するように、計算システムを構成し得る。
【００７６】
上記説明は、当業者が本明細書に開示された例示的な実施形態の様々な態様を最良に利用できるようにするために提供された。この例示的な説明は、網羅的でではなく、また、開示される任意の厳密な形態への限定されることを意図されない。多くの変更および変形が、本開示の主旨および範囲から逸脱せずに可能である。本明細書に開示される実施形態は、あらゆる点で、限定ではなく例示としてみなされるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物を参照すべきである。
【００７７】
別段に記される場合を除き、本明細書および特許請求の範囲において使用される場合、用語「ａ」または「ａｎ」は、「少なくとも１つの」を意味するものと解釈されるべきである。さらに、使いやすさのために、単語「含む」および「有する」は、本明細書および特許請求の範囲において使用される場合、単語「備える」と同義であり、同じ意味を有する。
【図１】
0005520291.tif 000002
【図２】
0005520291.tif 000003
【図３】
0005520291.tif 000004
【図４】
0005520291.tif 000005
【図５】
0005520291.tif 000006
【図６】
0005520291.tif 000007
【図７】
0005520291.tif 000008