(57)【要約】【課題】  自身のコピーを作成する度に暗号化・難読化を行いファイルのデータ構造を改変する、自己変貌型マルウェアを効率的かつ高精度に削除する。【解決手段】  構造が類似しているデータに対して、一致もしくは近似した値を生成する、ファジーハッシュアルゴリズムを用いて、マルウェアと判定されたファイルのファジーハッシュ値（以下、ＦＨ値）を、サーバ装置で求め、クライアント装置に配信する。次に、クライアント装置において、同一のＦＨ値を持つファイルを列挙し、正規ファイルのＥｘａｃｔハッシュ値を格納したホワイトリストＤＢを参照し、受信したファイルがＤＢに無い場合は、自己変貌型マルウェアと判断し、クライアント装置から削除する。受信したファイルがＤＢ内に有る場合はマルウェアと正規ファイルのＦＨ値との間に衝突が発生したと判断し、ＦＨアルゴリズムの閾値を改善する。【選択図】図１
2015011626.tif 000002
【特許請求の範囲】
【請求項１】
自己変貌型マルウェアを効率的かつ高精度に削除する自己変貌型マルウェア削除装置であって、
ファジーハッシュ値が、ある特定値と一致するファイルを装置内部から探索して送出するクライアント装置と、
前記クライアント装置から受信した前記ファイルが既知の正規ファイルでないことを、一方向性ハッシュ関数を用いて検証することで、正規ファイルの誤削除を防止するサーバ装置を有することを特徴とする自己変貌型マルウェア削除装置。
【請求項２】
前記特定値は、前記サーバ装置から前記クライアント装置にネットワークを介して与えられることを特徴とする請求項１に記載の自己変貌型マルウェア削除装置。
【請求項３】
前記サーバ装置は、前記特定値とファジーハッシュ値が一致するファイルが正規ファイルであった際に、前記特定値を算出するファジーハッシュ演算の方法を変更するフィードバック部を有し、
前記特定値は、特定ファイルのファジーハッシュ値であることを特徴とする請求項２に記載の自己変貌型マルウェア削除装置。
【請求項４】
前記サーバ装置は、前記特定値と一致するファイルがマルウェアファイルであった際に、前記クライアント装置にネットワークを介して送信し、
前記ファイルを削除することを特徴とする請求項２に記載の自己変貌型マルウェア削除装置。
【請求項５】
前記クライアント装置は、前記装置内部でファイルが作成されるのを監視し、作成されたファイルのファイルパス、ファイル作成時刻をファイルＤＢに記録するファイル作成監視部を有することを特徴とする請求項４に記載の自己変貌型マルウェア削除装置。
【請求項６】
前記サーバ装置は、
前記特定値を算出するファジーハッシュ演算部で用いる閾値を変える際に、
前記特定値が同一である前記正規ファイルと前記マルウェアファイルを用いて、閾値改善を行い、
前記特定値が同一である前記正規ファイルと前記マルウェアファイルを別々のクラスタに分別するようなファジーハッシュ値を算出するために、前記ファジーハッシュ演算部の閾値を改善することを特徴とする請求項３に記載の自己変貌型マルウェア削除装置。
【請求項７】
前記フィードバック部は、
前記クライアント装置から受信した前記正規ファイルを前記閾値改善に利用し、
前記フィードバック部で改善された閾値を用いて演算したマルウェアファイルのファジーハッシュ値を新規特定値とすることを特徴とする請求項３に記載の自己変貌型マルウェア削除装置。
【請求項８】
前記マルウェアファイルは、前記クライアント装置から前記サーバ装置に前記ネットワークを介して送信され、さらに前記マルウェア検知装置に送信されることを特徴とする請求項７に記載の自己変貌型マルウェア削除装置。
【請求項９】
クライアント装置とサーバ装置を有する自己変貌型マルウェア削除装置における自己変貌型マルウェア削除方法であって、
前記クライアント装置は、作成又は実行の対象であるファイルを監視し、
前記サーバ装置は、前記作成又は実行の対象であるファイルを解析し、
前記サーバ装置は、前記解析結果に基づいて、前記作成又は実行の対象であるファイルが自己変貌型マルウェアであるかどうかを判定し、
前記サーバ装置は、前記作成又は実行の対象であるファイルが自己変貌型マルウェアである場合は、前記クライアント装置に対して対象ファイルの削除を指示し、
前記サーバ装置は、前記自己変貌型マルウェアと予め保持した正規ファイルとでファジーハッシュ値との間に衝突が発生したと判断した場合、ファジーハッシュ値算出のアルゴリズムの閾値を改善する、ことを特徴とする自己変貌型マルウェア削除方法。
【請求項１０】
前記ファイル監視の際に、
前記クライアント装置のファイル作成監視部は、ファイル作成を監視し、ファイル作成時にファイルパスとファイル作成時刻をファイルＤＢに格納し、
前記ファイルの解析の際に、
前記クライアント装置のファイル実行監視部は、ファイル実行時にファイルの不審性を検査し、前記サーバ装置は、不審とみなされたファイルを解析する、
ことを特徴とする請求項９に記載の自己変貌型マルウェア削除方法。
【請求項１１】
前記サーバ装置は、ファジーハッシュ演算部によって求めたマルウェアファイルのファジーハッシュ値及び、前記ファジーハッシュ値に対応する閾値を前記クライアント装置へ送信する、
ことを特徴とする請求項９に記載の自己変貌型マルウェア削除方法。
【請求項１２】
前記クライアント装置の削除部は、ファイルＤＢに含まれるファイルのファジーハッシュ値を演算し、前記サーバ装置から入力として与えられたマルウェアファイルのファジーハッシュ値と比較し、両値が一致した場合、当該ファイルがマルウェアであると判定された場合、前記クライアント装置から前記ファイルを削除する、
ことを特徴とする請求項１１に記載の自己変貌型マルウェア削除方法。
【請求項１３】
前記サーバ装置は、
受信したファイルのＥｘａｃｔハッシュ値を計算し、ホワイトリストＤＢと照合し、値が一致したファイルは誤マッチＤＢへ、値が不一致であったファイルはブラックリストＤＢへ格納し、クライアントに結果を送信し、
前記サーバ装置のフィードバック部は、受付部より誤マッチＤＢへの新しい入力ファイルを受信し、ファイルのデータを基に誤マッチＤＢ、ブラックリストＤＢ、閾値ＤＢ、パラメータＤＢを参照し、ファジーハッシュ値算出のアルゴリズムで用いる最適閾値を求める、
ことを特徴とする請求項９に記載の自己変貌型マルウェア削除方法。
【請求項１４】
前記フィードバック部は複数のFH演算部を持ち、前記特定値とFH値が一致するファイルが正規ファイルであった場合に別のFH演算部に切り替える
ことを特徴とする請求項３に記載の自己変貌型マルウェア削除装置
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自身のコピーを作成する度に暗号化・難読化を行いファイルのデータ構造を改変する、自己変貌型マルウェアを効率的かつ高精度に削除する装置及び方法に関する。
【背景技術】
【０００２】
近年、情報漏えいや不正アクセス等の脅威をもたらすコンピュータウイルスやスパイウェア、ボットプログラムといった悪意のある不正プログラム（以降、マルウェア）が問題となっている。また、２０１１年以降、自身のコピーを作成する度に暗号化・難読化を行いファイルのデータ構造を改変する、自己変貌型マルウェアが増加傾向にある。自己変貌型マルウェアは、自身のコピーを作成する際、ファイルパスもランダムに変化するため、ファイルパス指定での削除も困難である。
【０００３】
これに伴い、特許文献１では、携帯端末向けの信頼できるアプリケーションをサーバが所持するホワイトリストに記録し、ホワイトリスト以外のアプリケーションのプログラムや各種設定情報のインストールを検知した際、削除することでマルウェアの削除を実現している。
【０００４】
非特許文献１では、構造が類似しているデータに対して、一致もしくは近似した値を生成するファジーハッシュアルゴリズムを用いて、ＰＣ内のディスクをスキャンし、マルウェアと同値のファジーハッシュ値（ＦＨ値）を生成するファイルをマルウェアと見なし、削除を行うことで自己変貌型マルウェアの効果的な削除を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１８５７４５号公報
【非特許文献】
【０００６】
【非特許文献１】電子情報通信学会  第１４回情報通信システムセキュリティ研究会予稿集  マルウェア解析システムを用いたマルウェア自動駆除手法の検討(発行年月日：2011年6月9日)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に記載の、ホワイトリストのみを用いたマルウェア駆除装置では、端末内のすべてのファイルの確認をサーバ側で行う必要があるため、ファイル転送によるネットワーク負荷がかかるという課題がある。
【０００８】
また、非特許文献１に記載の装置は、正規ファイルであってもマルウェアのＦＨ値と一致する可能性があるため、誤削除が発生する課題がある。
【課題を解決するための手段】
【０００９】
本装置（自己変貌型マルウェア削除装置）は、クライアント装置、サーバ装置、マルウェア外部検知装置の３つの装置から構成される。本装置では、クライアント装置内のファイルをマルウェア外部検知装置で解析し、マルウェアと判定されたファイルのＦＨ値を、特定のＦＨアルゴリズムを用いてサーバ装置で求め、クライアント装置に配信する。
【００１０】
次に、クライアント装置において、同一のＦＨ値を持つファイルを列挙し、サーバ装置に送信する。再びサーバ装置では、正規ファイルのＥｘａｃｔハッシュを格納したホワイトリストＤＢを参照し、受信したファイルがＤＢに無い場合は、自己変貌型マルウェアと判断し、クライアント装置から削除する。ここで、Ｅｘａｃｔハッシュとは、ＳＨＡ−１のような一方向性関数により生成されたハッシュ値を指す。ＦＨ値と異なり、異なる2つのファイルのＥｘａｃｔハッシュ値が衝突する確率は極めて低い。受信したファイルがＤＢ内に有る場合は、マルウェアと正規ファイルのＦＨ値との間に衝突が発生したと判断し、ＦＨアルゴリズムの閾値を改善する。閾値を改善することで、マルウェアと構造が類似している正規ファイルのＦＨ値の衝突が解消され、クライアント装置−サーバ装置間で、正規ファイルが不要に転送されることが無くなり、処理が効率化される。
【００１１】
本装置の主な処理部は、クライアント装置のファイル作成監視部、ファイル実行監視部、削除部、クライアント側ファジーハッシュ演算部、問い合わせ部、サーバ装置の中継部、フィードバック部、サーバ側ファジーハッシュ演算部、送信部、受付部、マルウェア外部検知装置の解析部、結果送信部の１２個の処理部である。以下では、各処理部が属する装置をＣＬ（クライアント装置）、ＳＶ（サーバ装置）及びＭＷ（マルウェア外部検知装置）と略記する場合がある。
【００１２】
本装置では、各処理部を用いて、以下の手順で処理が行われる。
（１）ファイル監視及び解析：
ＣＬのファイル作成監視部はファイル作成を監視し、ファイル作成時にファイルパスとファイル作成時刻をファイルＤＢに格納する。
【００１３】
ＣＬのファイル実行監視部は、ファイル実行時にファイルの不審性を検査し、不審とみなされたファイルをマルウェア外部検知装置の解析部に送信する。
【００１４】
ＳＶの中継部は、ファイル作成監視部からファイルを受信し、マルウェア外部検知装置の解析部にファイルを送信する。
【００１５】
ＭＷの解析部は、サーバ装置の中継部から受信したファイルの解析を行い、結果送信部へマルウェアファイルを送信する。
【００１６】
ＭＷの結果送信部は、解析部から受信した解析結果を送信部へ送信する。
【００１７】
（２）自己変貌型マルウェアの判定：
サーバ装置の送信部は、マルウェア外部検知装置の結果送信部からマルウェアファイル実行時刻を受信し、ファジーハッシュ演算部にマルウェアファイルを送信し、ファジーハッシュ演算部よりマルウェアより受信したＦＨ（ファジーハッシュ）を基に閾値ＤＢを参照し、ファジーハッシュ演算部へ最適な閾値とＦＨ値を送信し、最適な閾値を受信し、クライアントの削除部へ送信する。
【００１８】
ＳＶのサーバ側ファジーハッシュ演算部は、送信部またはフィードバック部からファイルと閾値を受信し、ＦＨ値を演算し、送信部またはファジーハッシュ演算部へＦＨ値が一致したファイルと閾値とＦＨ値を送信する。
【００１９】
（３）対象ファイルの削除：
クライアント装置の削除部は、ファイルＤＢに含まれるファイルのＦＨ値を演算し、入力として与えられたマルウェアファイルのＦＨ値と比較する。両値が一致した場合、ファイルを問い合わせ部へ送信する。後段で、問い合わせ部から、当該ファイルがマルウェアであるという通知を受けた場合、クライアント装置から削除する。
【００２０】
ＣＬのクライアント側ファジーハッシュ演算部は、削除部からファイルと閾値を受信し、ＦＨ値を演算し、ファイルとＦＨ値を削除部へ送信する。
【００２１】
ＣＬの問い合わせ部は、削除部よりＦＨ値が一致したファイルを受信し、そのファイルをサーバ装置の受付部へ送信する。後段で、受付部より削除対象ファイルを受信し、削除部へそのファイルを送信する。
【００２２】
（４）ＦＨアルゴリズムの改善：
ＳＶの受付部は、問い合わせ部から受信したファイルのＥｘａｃｔハッシュ値を計算し、ホワイトリストＤＢと参照し、値が一致したファイルは誤マッチＤＢへ、値が不一致であったファイルはブラックリストＤＢへ格納し、クライアントに結果を送信する。
【００２３】
ＳＶのフィードバック部は、受付部より誤マッチＤＢへの新しい入力ファイルを受信し、ファイルのデータを基に誤マッチＤＢ、ブラックリストＤＢ、閾値ＤＢ、パラメータＤＢを参照し、ＦＨアルゴリズムで用いる最適閾値を求める。
【発明の効果】
【００２４】
本発明によれば、自身のコピーを作成する度に暗号化・難読化を行いファイルのデータ構造を改変する、自己変貌型マルウェアを効率的かつ高精度な削除が実現される。
【図面の簡単な説明】
【００２５】
【図１】本実施例を実施するためのシステムの全体構成を示す図である。
【図２】クライアント装置の物理構成を示す図である。
【図３】クライアント装置の論理構成を示す図である。
【図４】サーバ装置の物理構成を示す図である。
【図５】サーバ装置の論理構成を示す図である。
【図６Ａ】ファイルＤＢのレコード例を示す図である。
【図６Ｂ】ファイルＤＢのレコード例を示す図である。
【図７】閾値ＤＢのレコード例を示す図である。
【図８】ホワイトリストＤＢのレコード例を示す図である。
【図９】誤マッチＤＢのレコード例を示す図である。
【図１０】ブラックリストＤＢのレコード例を示す図である。
【図１１】パラメータＤＢのレコード例を示す図である。
【図１２】ファイル作成監視部処理のフローチャートを示す図である。
【図１３】ファイル実行監視部処理のフローチャートを示す図である。
【図１４】削除部処理のフローチャートを示す図である。
【図１５】クライアント側ファジーハッシュ演算部処理のフローチャートを示す図である。
【図１６】問い合わせ部処理のフローチャートを示す図である。
【図１７】中継部処理のフローチャートを示す図である。
【図１８】フィードバック部処理のフローチャートを示す図である。
【図１９】サーバ側ファジーハッシュ演算部処理のフローチャートを示す図である。
【図２０】送信部処理のフローチャートを示す図である。
【図２１】受付部処理のフローチャートを示す図である。
【図２２】解析部処理のフローチャートを示す図である。
【図２３】結果送信部処理のフローチャートを示す図である。
【図２４】クライアント装置のシーケンスを示す図である。
【図２５】サーバ装置のシーケンスを示す図である。
【図２６】サーバ装置のフィードバック部が実行される際のシーケンスを示す図である。
【図２７】最適閾値の導出を示す図である。
【図２８】本実施例の処理概要を示す図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施形態を図面に示す。また、実施例を基に説明する。本実施例では、ファジーハッシュアルゴリズムにおいて、peHashを用いる。peHashとは、非特許文献１で用いているファジーハッシュアルゴリズムである。
【００２７】
本実施例では、自己変貌型マルウェアを、３種類の装置がネットワークを介して連携して解析するシステムについて説明する。本実施例を説明した後に、変更例について述べる。
【００２８】
図１は、本発明を実施するためのシステムの全体構成を示す図である。即ち、本実施例の自己変貌型マルウェア削除装置は、図１に示すシステムによって実現される。本システムを構成する要素として、クライアント装置１００、サーバ装置２００、マルウェア外部検知装置３００、通信ネットワーク４００、通信ネットワーク５００の５つがある。
【００２９】
クライアント装置１００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。クライアント装置１００は、ファイルが起動された度に、起動したファイル本体、ファイル起動時刻を、マルウェア外部検知装置３００に送信し、解析を指令する。クライアント装置１００の構成の詳細および、他の装置との通信の詳細については、後述する。
【００３０】
サーバ装置２００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。サーバ装置２００は、マルウェア外部検出装置３００から送信された結果に従い、受信したファイルに対してファジーハッシュ演算を行い、ＦＨ値を算出する。サーバ装置２００の構成の詳細および他の装置との通信の詳細については後述する。
【００３１】
マルウェア外部検知装置３００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。マルウェア外部検知装置３００は、クライアント装置１００から受信したファイルの解析を行い、ファイルの解析結果をサーバ装置２００に送信する。マルウェア外部検知装置の構成の詳細および、他の装置との通信の詳細については後述する。
【００３２】
通信ネットワーク４００、５００はＷＡＮ（Wide Area Network）やＬＡＮ（Local Area Network）、携帯電話、ＰＨＳ等の公衆回路網でもよい。
【００３３】
ここで、図２８を用いて本実施例における処理概要を説明する。図２８の矢印に示した（  ）内の数字は、図１に示した各ラインの番号である。
【００３４】
本装置は、図１に示すように、クライアント装置、サーバ装置、マルウェア外部検知装置の３つの装置から構成される。本装置では、クライアント装置内のファイル(1)をマルウェア外部検知装置で解析し(2,3)、マルウェアと判定されたファイルのＦＨ値を、特定のＦＨアルゴリズムを用いてサーバ装置で求め(4-6)、クライアント装置に配信する(7,10)。
【００３５】
次に、クライアント装置において、同一のＦＨ値を持つファイルを列挙し、サーバ装置に送信する(14-16)。再びサーバ装置では、正規ファイルのＥｘａｃｔハッシュを格納したホワイトリストＤＢを参照し、受信したファイルがＤＢに無い場合は(20)、自己変貌型マルウェアと判断し、クライアント装置から削除する。ここで、Ｅｘａｃｔハッシュとは、ＳＨＡ−１のような一方向性関数により生成されたハッシュ値を指す。ＦＨ値と異なり、異なる2つのファイルのＥｘａｃｔハッシュ値が衝突する確率は極めて低い。受信したファイルがＤＢ内に有る場合(19)は、マルウェアと正規ファイルのＦＨ値との間に衝突が発生したと判断し(21-25)、ＦＨアルゴリズムの閾値を改善する。閾値を改善することで、マルウェアと構造が類似している正規ファイルのＦＨ値の衝突が解消され、クライアント装置−サーバ装置間で、正規ファイルが不要に転送されることが無くなり、処理が効率化される。
【００３６】
以下では、図１に示した各ラインに対応して、本実施例における処理の概要を説明する。
（１）ファイル監視及び解析：
ライン１において、クライアント装置１００でファイルが作成されるたび、ファイルパスとファイル作成時刻をファイルＤＢに記録する。
【００３７】
ライン２において、クライアント装置１００でファイルが実行される度、サーバ装置２００の中継部２２１にファイル本体とファイル実行時刻を送信する。
【００３８】
ライン３において、外部検知装置３００の解析部３２１に、中継部２２１が受信したファイル本体とファイル実行時刻を送信する。
【００３９】
ライン４において、解析部３２１で受信したファイルを解析した結果を結果送信部３２２へ送信する。
【００４０】
ライン５において、解析したファイルがマルェアの場合、結果送信部３２２から、解析結果、マルウェアファイル、ファイル実行時刻をサーバ装置２００の送信部２２２へ送信する。
【００４１】
（２）自己変貌型マルウェアの判定：
ライン６において、送信部２２２は、受信したマルウェアファイルをサーバ側ファジーハッシュ演算部２２３へ送信する。
【００４２】
ライン７において、サーバ側ファジーハッシュ演算部２２３は受信したマルウェアファイルのＦＨ値を送信部２２２へ送信する。
【００４３】
ライン８では、受信したマルウェアファイルとＦＨ値をブラックリストＤＢ２５４に記録する。
【００４４】
ライン９において、サーバ側ファジーハッシュ演算部２２３が演算したＦＨ値を基に閾値ＤＢ２５１を参照し、最適閾値とマルウェアの可能性が高いＦＨ値を1つ以上取得する。
【００４５】
ライン１０において、送信部２２２は、マルウェアファイルのデフォルトＦＨ値、Ｅｘａｃｔハッシュ値、最適閾値、ファイル実行時刻、マルウェアの可能性が高いＦＨ値をクライアント装置１００の削除部１２３へ送信する。
【００４６】
（３）対象ファイルの削除：
ライン１１において、削除部１２３は受信したファイル実行時刻を基にファイルＤＢ１５１を参照し、受信したファイル実行時刻から前後一定時間内に作成されたファイルを取得する。
【００４７】
ライン１２において、ファイルＤＢ１５１を参照して得たファイルとライン１０で受信した最適閾値とファイルをクライアント側ファジーハッシュ演算部１２４へ送信する。
【００４８】
ライン１３において、クライアント側ファジーハッシュ演算部１２４は、演算したＦＨ値を削除部１２３へ送信する。
【００４９】
ライン１４において、削除部１２３は、ライン１０で受信したマルウェアとＦＨ値が一致したファイル、デフォルトＦＨ値を問い合わせ部１２５へ送信する。
【００５０】
ライン１５において、問い合わせ部１２５は、ＦＨ値が一致したファイル、デフォルトＦＨ値をサーバ装置２００の受付部２２５へ送信する。
【００５１】
ライン１６において、受付部２２５は、ライン１５で受信したファイルのＥｘａｃｔハッシュ値がホワイトリストＤＢ２５２に存在するか問い合わせる。
【００５２】
ライン１７において、ホワイトリストＤＢ２５２を参照した結果をクライアント装置１００の問い合わせ部１２５へ送信する。
【００５３】
ライン１８において、ホワイトリストＤＢ２５２に存在しなかったＥｘａｃｔハッシュ値を削除部１２３へ送信する。
【００５４】
（４）ＦＨアルゴリズムの改善：
ライン１９において、受付部２２５は、Ｅｘａｃｔハッシュ値がホワイトリストＤＢ２５２内に存在した受信ファイルを、誤マッチファイルとして誤マッチＤＢ２５３に記録する。
【００５５】
ライン２０において、受付部２２５は、ホワイトリストＤＢ２５２内に存在しなかった受信ファイルを、マルウェアファイルとしてブラックリストＤＢ２５４に記録する。
【００５６】
ライン２１において、受付部２２５は、ホワイトリストＤＢ２５２内に存在した受信ファイル（以下、誤マッチファイル呼ぶ）及びデフォルト閾値で算出したＦＨ値をフィードバック部２２４に送信する。
【００５７】
ライン２２において、フィードバック部２２４は、受信したデフォルトＦＨ値を基に誤マッチファイルＤＢ２５３を参照し、デフォルトＦＨ値が一致するファイルを取得する。
【００５８】
ライン２３において、フィードバック部２２４は、受信したデフォルトＦＨ値を基にブラックリストＤＢ２５４を参照し、デフォルトＦＨ値が一致するファイルを取得する。
【００５９】
ライン２４において、フィードバック部２２４で用いるパラメータをパラメータＤＢ２５５から取得する。
【００６０】
ライン２５において、フィードバック部２２４は、受信したデフォルトＦＨ値を基に閾値ＤＢ２５１を参照し、最適閾値を取得する。
【００６１】
ライン２６において、フィードバック部２２４は、サーバ側ファジーハッシュ演算部２２３に閾値とファイルを送信する。
【００６２】
ライン２７において、ライン２６で受信したファイルを演算して得られたＦＨ値をフィードバック部２２４へ送信する。
【００６３】
尚、変更例として、サーバ装置内の各処理部及びＤＢは異なる装置に格納されておいてもよい。この場合、各ラインはネットワークを通じた通信となる。また、ネットワーク４００及びネットワーク５００は同一のネットワークであってもよい。
【００６４】
図２はクライアント 装置１００の物理構成を示す図である。クライアント装置１００は装置本体１１０と入出力装置１７０から構成される。装置本体１１０は、ＣＰＵ１２０、メモリ１３０、インタフェイス１４０、外部記憶装置１５０、バス１６０を備えている。
【００６５】
ＣＰＵ１２０は処理を実行するための演算装置である。メモリ１３０はＣＰＵ１２０で実行する命令のセットがプログラムとして記述されたデータを含む記憶媒体である。
【００６６】
メモリ１３０には、マルウェア解析プログラム１３１が含まれている。そしてこのマルウェア解析プログラム１３１がＣＰＵ１２０で実行されることによって、各処理部が具現化される。具体的な解析手順については後述する。
【００６７】
インタフェイス１４０は、クライアント装置１００を 通信ネットワーク４００と接続するための通信装置である。ＬＡＮカードなどの通信機器がこれに対応する。インタフェイス１４０は、図中においてＩＦと記述することがある。
【００６８】
外部記憶装置１５０は、ＨＤＤ(HARD DISK DRIVE)などの記憶媒体から構成され、ファイルＤＢ１５１を記録する。このＤＢの具体的内容については後述する。
【００６９】
バス１６０は、ＣＰＵ１２０、メモリ１３０、インタフェイス１４０、外部記憶装置１５０、入出力装置１７０を接続する。
【００７０】
入出力装置１７０は、クライアント装置１００に対して、クライアントによりデータの入力、及びクライアント装置１００内のデータの出力を行うための装置である。入出力装置の一例としては、キーボードやマウス、ディスプレイ がある。具体的な入出力については後述する。
【００７１】
図３はクライアント装置１００の機能的な構成、及び物理的な各装置との関係を示す図である。
【００７２】
ＣＰＵ１２０は、ファイル作成監視部１２１、ファイル実行監視部１２２、クライアント側ファジーハッシュ演算部１２４、削除部１２３、問い合わせ部１２５を実行する。ファイル作成監視部１２１、ファイル実行監視部１２２、クライアント側ファジーハッシュ演算部１２４、削除部１２３、問い合わせ部１２５の各処理を実行するためのプログラムは、メモリ１３０内のマルウェア削除プログラム１３１に含まれ、このプログラム１３１をＣＰＵ１２０によって実行することで具現化される。
【００７３】
ファイル作成監視部１２１は、ファイル作成を検知するとともにファイルＤＢ１５１に記録する。詳細については後述する。
【００７４】
ファイル実行監視部１２２は、ファイル実行を検知するとともにマルウェア外部検知装置３００にファイルとファイル実行時刻を送信する。詳細については後述する。
【００７５】
クライアント側ファジーハッシュ演算部１２４は、削除部１２３よりファイルと閾値を受信し、ＦＨ値を演算し、ファイルとＦＨ値を削除部１２３へ送信する。詳細については後述する。
【００７６】
削除部１２３、サーバ装置２００の送信部２２２より、ＦＨ値、ファイル実行時刻、閾値、を受信する。ファイル実行時刻よりファイルＤＢ１５１を照合し、得られたファイルをクライアント装置１００のクライアント側ファジーハッシュ演算部１２４へ送信する。ＦＨ値が一致したファイルを問い合わせ部１２５に送信し、削除対象ファイルを問い合わせ部１２５より受信し、削除を実行する。詳細については後述する。
【００７７】
問い合わせ部１２５は、削除部１２３よりＦＨ値が一致したファイルを受信し、受信したファイルをサーバ装置２００の受付部２２５へ送信する。その後、受付部２２５より削除対象を受信し、削除部１２３へ削除対象ファイルを送信する。詳細については後述する。
【００７８】
図４は、サーバ装置２００の物理構成を示す図である。サーバ装置２００は、装置本体２１０と入出力装置２７０から構成される。
【００７９】
装置本体２１０は、ＣＰＵ２２０、メモリ２３０、インタフェイス２４０、外部記憶装置２５０、バス２６０を備えている。
【００８０】
ＣＰＵ２２０は処置を実行するための演算装置である。メモリ２３０はＣＰＵ２２０で実行する命令のセットがプログラムとして記述されたデータを含む記憶媒体である。
【００８１】
メモリ２３０には、自己変貌型マルウェア解析プログラム２３１が含まれている。自己変貌型マルウェア解析プログラム２３１がＣＰＵ２２０で実行されることによって、各処理部が具現化される。プログラムの具体的な管理手順については後述する。
【００８２】
インタフェイス２４０は、サーバ装置を通信ネットワーク５００と接続するための通信装置である。ＬＡＮカードなどの通信機器がこれに対応する。インタフェイス２４０は、図中においてＩＦと記述することがある。
【００８３】
インタフェイス２４１は、サーバ装置を通信ネットワーク４００と接続するための通信装置である。ＡＮカードなどの通信機器がこれに対応する。インタフェイス２４０は、図中においてＩＦと記述することがある。
【００８４】
外部記憶装置２５０は、ＨＤＤ(HARD DISK DRIVE)などの記憶媒体から構成され、誤マッチＤＢ２５１、ホワイトリストＤＢ２５２、ブラックリストＤＢ２５３、閾値ＤＢ２５４、パラメータＤＢ２５５を記録する。このＤＢの具体的内容については後述する。
【００８５】
バス２６０は、ＣＰＵ２２０、メモリ２３０、ＩＦ２４０、外部記憶装置２５０、入出力装置２７０を接続する。
【００８６】
入出力装置２７０はサーバ装置２００に対して、管理者によるデータの入力、及びサーバ装置内のデータ出力を行うための装置である。入出力装置の一例としてはキーボードやマウス、ディスプレイがある。具体的な入出力内容については後述する。
【００８７】
図５は、サーバ装置２００の機能的な構成、及び物理的な各装置との関係を示す図である。
【００８８】
ＣＰＵ２２０は、中継部２２１、送信部２２２、サーバ側ファジーハッシュ演算部２２３、フィードバック部２２４、受付部２２５を実行する。中継部２２１、受付部２２５、送信部２２２、サーバ側ファジーハッシュ演算部２２４、フィードバック部２２５の各処理を実行するためのプログラムは、メモリ２３０内の自己変貌型マルウェア解析プログラム２３１をＣＰＵ２２０によって実行することで具現化される。
【００８９】
中継部２２１は、クライアント装置１００のファイル実行監視部１２２からファイルを受信し、マルウェア外部検知装置３００の解析部３２１にファイルを送信する。詳細については後述する。
【００９０】
送信部２２２は、マルウェア外部検知装置３００の結果送信部３２２より、マルウェアファイルとファイル実行時刻を受信する。サーバ側ファジーハッシュ演算部２２３にマルウェアファイルを送信する。サーバ側ファジーハッシュ演算部２２３よりマルウェアファイルのＦＨ値を受信し、このＦＨ値を基に閾値ＤＢ２５１を参照し、最適閾値とマルウェアの可能性が高いＦＨ値を取得する。最適閾値とマルウェアファイルをサーバ側ファジーハッシュ演算部２２３へ送信する。最適閾値より算出したＦＨ値をサーバ側ファジーハッシュ演算部２２３より受信し、最適閾値より算出したＦＨ値とマルウェアの可能性が高いＦＨ値をクライアント装置１００の削除部１２３に送信する。詳細については後述する。
【００９１】
サーバ側ファジーハッシュ演算部２２３は、送信部２２２またはフィードバック演算部２２４からファイルと閾値を受信する。受信したファイルと閾値を基にＦＨ値を算出する。そのＦＨ値と一致したファイルと閾値を送信部２２２またはサーバ側ファジーハッシュ演算部２２３に送信する。
【００９２】
フィードバック部２２４は、受付部２２５より、新しい誤マッチファイルを受信する。新しいファイルのＦＨ値を基に誤マッチＤＢ２５３、ブラックリストＤＢ２５４、パラメータＤＢ２５５を参照する。サーバ側ファジーハッシュ演算部２２３に各ＤＢより得られた、ファイル、最適な閾値、パラメータを送信する。サーバ側ファジーハッシュ演算部２２３より受信した結果から算出したＦＨ値を基にクラスタに分類し、最適閾値を算出する。求められた最適閾値を閾値ＤＢ２５１に記録する。詳細については後述する。
【００９３】
受付部２２５は、クライアント装置１００の問い合わせ部１２５よりＦＨ値が一致したファイルを受信する。受信したファイルのＥｘａｃｔハッシュ値を計算し、ホワイトリストＤＢを参照する。ここで、Ｅｘａｃｔハッシュ値と一致したファイルを誤マッチＤＢ２５３に記録し、Ｅｘａｃｔハッシュが一致しなかったファイルをブラックリストＤＢ２５４に記録する。また、クライアント装置１００に結果を送信する。詳細については後述する。
【００９４】
図６Ａ及び図６Ｂは、ファイルＤＢ１５１の構成を示す図である。ファイルＤＢ１５１は、ファイル作成監視部１２１が作成したファイル作成時刻とファイルパスを保存する。各レコードは、クライアント装置１００でファイルの作成を監視するファイル作成監視部１２１により、ファイルパスとファイル作成時刻を示す。ファイルＩＤ１００１は、ファイルＤＢ１５１内のレコードを一意に認識するのに用いられる。ファイルパス１００２はクライアント装置１００に作成されたファイルのパスを記録する。ファイル作成時刻１００３はクライアント装置１００に作成されたファイルの作成時刻を記録する。
【００９５】
尚、図６Ａ及び図６Ｂにおける、クライアント装置１とクライアント装置２はそれぞれ異なるクライアント装置１００であり、各々異なる内容のファイルＤＢ１５１を持つ。図６Ａの例では、クライアント装置１のファイルＤＢ１５１では、２０１３年１月１３日０時３４分４２秒にファイルＡ１が作成された。その際、ファイル作成監視部１２１はファイルＩＤ１００１：「１」、ファイルパス１００２：「C:\MyDocument\A1.exe」、ファイル作成時刻１００３：「２０１３年１月１３日０時３４分４２秒」が記録される。
【００９６】
図７は、閾値ＤＢ２５１の構成を示す図である。閾値ＤＢ２５１は、サーバ側ファジーハッシュ演算部２２３とフィードバック部２２４により、算出された結果を保存する。各レコードは、サーバ側ファジーハッシュ演算部２２３により算出されたＦＨ値と、フィードバック部２２４により求められた最適閾値とその閾値から算出したＦＨ値でマルウェアの可能性があるＦＨ値を示す。
【００９７】
閾値ＩＤ１１０１は、閾値ＤＢ２５１内のレコードを一意に認識するのに用いられる。デフォルトＦＨ値１１０２は、デフォルト閾値を用いて算出したＦＨ値を記録する。（ＤＢ内を参照する際のＫｅｙとなる）最適閾値でＦＨ値を算出した際、マルウェアの可能性が高いＦＨ値を記録する。最適閾値１１０３は、参照されたデフォルトＦＨ値に対応する最適閾値を記録する。マルウェアの可能性が高いＦＨ値１１０４は、最適閾値より算出したＦＨ値でマルウェアに該当したＦＨ値を記録する。
【００９８】
図７の例では、閾値ＩＤ１１０１が「１」のデフォルト閾値１１０２には、あるマルウェアファイルをデフォルト閾値で演算して求めた「ＦＨ値be86c0aa1e67…6e14」が記録されており、デフォルト閾値で演算した「ＦＨ値be86c0aa1e67…6e14」の最適閾値１１０３は３、マルウェアの可能性が高いＦＨ値１１０４は「h1=be86c0aa1e67…b16a」、「h3=be86c0aa1e67…5aee」の２つが記録されている。
【００９９】
図８は、ホワイトリストＤＢ２５２の構成を示す図である。ホワイトリストＤＢ２５２は、予めＥｘａｃｔハッシュ演算により算出したＥｘａｃｔハッシュ値を保存してある。
【０１００】
ホワイトリストＩＤ１３０１は、ホワイトリストＤＢ２５２内のレコードを一意に認識するのに用いられる。このため、ホワイトリストＩＤ１３０１はホワイトリストＤＢ２５２内でユニークである。Ｅｘａｃｔハッシュ値１３０２は、Ｅｘａｃｔハッシュ演算により算出した正規ファイルのＥｘａｃｔハッシュ値を記録してある。本実施例では、ホワイトリストＩＤ１３０１の「１」には、Ｅｘａｃｔハッシュ値１３０２にae84b2d0… が記録されている。
【０１０１】
図９は、誤マッチＤＢ２５３の構成を示す図である。各レコードは、マルウェアファイルとＦＨ値が一致した正規ファイルを示す。
【０１０２】
誤マッチＩＤ１４０１は、誤マッチＤＢ２５３内のレコードを一意に認識するのに用いられる。このため、誤マッチＩＤ１４０１は、誤マッチＤＢ２５３内でユニークである。ファイル本体１４０２は、マルウェアファイルとＦＨ値が一致した正規ファイル本体を記録する。ファジーハッシュ値（デフォルト）１４０３は、マルウェアファイルとＦＨ値が一致した正規ファイルのＦＨ値を記録する。図９の例では、誤マッチＩＤ１４０１の「１」には、ファイル本体１４０２にaaa.exe、デフォルトＦＨ値１４０３に12a45e1e2a… が記録されている。
【０１０３】
図１０は、ブラックリストＤＢ２５４の構成を示す図である。各レコードはマルウェアファイルのＦＨ値と一致し、Ｅｘａｃｔハッシュ値と一致しなかった、マルウェアファイルを示す。ブラックリストＩＤ１５０１は、ブラックリストＤＢ２５４内のレコードを一意に認識するのに用いられる。このため、ブラックリストＩＤ１５０１は、ブラックリストＤＢ２５４内でユニークである。ファイル本体１５０２は、ライン１５を通じてファイルのうち、ホワイトリストＤＢ２５２内のＥｘａｃｔハッシュ値と一致しなかったファイル本体を記録する。ファジーハッシュ値（デフォルト）１５０３は、デフォルト閾値を用いた場合のファイルのＦＨ値を記録する。図１０の例では、ブラックリストＩＤ１５０１の「１」には、ファイル本体１５０２としてB1.exeが記録されており、デフォルトＦＨ値１５０３として7ad0e2ce7gd2…a7da が記録されている。
【０１０４】
図１１は、パラメータＤＢ２５５の構成を示す図である。各レコードはＦＨ値よりクラスタ分けを行う際のパラメータを示す。
【０１０５】
ユーザＩＤ１６０１は、パラメータＤＢ２５５内のレコードを一意に認識するのに用いられる。このため、ユーザＩＤ１６０１は、パラメータＤＢ２５５内でユニークである。
【０１０６】
パラメータα１６０２は、予め設定してあるαの値が記録してある。図１１の例では、パラメータＩＤ１６０１の「１」には、パラメータα１６０２として０．９が記録されている。
【０１０７】
図１２は、クライアント装置１００のファイル作成監視部１２１で実行される、ファイル作成監視部処理のフローを示している。
【０１０８】
処理Ｓ２１０１では、ファイル作成監視部１２１は、クライアント装置１００でのファイル作成を検知する。具体的には、ファイル作成に利用されるシステムコールを監視するなど、既知の方法を用いる。
【０１０９】
処理Ｓ２１０２では、検知した新規作成ファイルのファイルパス（１００２）とファイル作成時刻（１００３）をファイルＤＢ１５１に記録する。
【０１１０】
図１３は、クライアント装置１００のファイル実行監視部１２２で実行される、ファイル実行監視部処理フローを示している。
【０１１１】
処理Ｓ２２０１では、ファイル実行監視部１２２が、クライアント装置１００でのファイル実行を検知する。具体的には、プロセス起動に作成されるシステムコールを監視するなど、既知の方法を用いる。
【０１１２】
処理Ｓ２２０２では、検知した新規実行ファイルのファイル本体とファイル実行時刻をサーバ装置２００の中継部２２１に送信する。
【０１１３】
図１４は、クライアント装置１００の削除部１２３で実行される、削除部処理フローを示している。
【０１１４】
処理Ｓ２３０１では、削除部１２３がサーバ装置２００の送信部２２２から、マルウェアファイルのデフォルトＦＨ値、最適ＦＨ値、マルウェアの可能性があるＦＨ値、前記ＦＨ値の演算に使用された最適閾値、ファイル実行時刻、マルウェアのＥｘａｃｔハッシュ値を受信する。
【０１１５】
処理Ｓ２３０２では、受信したファイル実行時刻を基に、一定時間前後（例えば６０分）に作成されたファイルをファイルＤＢ１５１で照合し、ファイルパスの情報を取得する。
【０１１６】
処理Ｓ２３０３では、ファイルＤＢ１５１を照合して得られたファイルをＥｘａｃｔハッシュ演算し、受信したマルウェアのＥｘａｃｔハッシュ値と等しいファイルを削除する。
【０１１７】
処理Ｓ２３０４では、ファイルＤＢ１５１より取得したファイル及び最適閾値をクライアント側ファジーハッシュ演算部１２４へ送信する。
【０１１８】
処理Ｓ２３０５では、処理Ｓ２３０３で送信したファイルのＦＨ値をクライアント側ファジーハッシュ演算部１２４より受信する。
【０１１９】
処理Ｓ２３０６では、処理Ｓ２３０１で受信していたＦＨ値と処理Ｓ２３０５で受信したＦＨ値を比較し、ＦＨ値が一致したファイルとデフォルトＦＨ値を問い合わせ部１２５へ送信する。
【０１２０】
処理Ｓ２３０７では、削除対象ファイルを問い合わせ部１２５から受信する。
【０１２１】
処理Ｓ２３０８では、処理Ｓ２３０６で受信した削除対象ファイルの削除を行う。
【０１２２】
変更例として、受信したファイル実行時刻を基に検索する時間幅はクライアント装置毎に設定することが可能である。
【０１２３】
図１５は、クライアント装置１００のクライアント側ファジーハッシュ演算部１２４で実行される、クライアント側ファジーハッシュ演算部処理フローを示している。
【０１２４】
図１５の処理Ｓ２４０２〜Ｓ２４０８は、ファイルの各構成要素の特徴量をそれぞれ部分ハッシュ値に変換して連結する処理である。後述する図１９の処理も同様である。
【０１２５】
処理Ｓ２４０１では、削除部１２３からファイルと最適閾値を受信する。
【０１２６】
処理Ｓ２４０２では、Windows（登録商標）の実行ファイルフォーマットの構成要素の一部であるcharacteristicsより、以下の値を演算する。hash[0] := characteristics[0…7] XOR characteristics[8…15]。 尚、XORは排他的論理和演算を示す。
【０１２７】
処理Ｓ２４０３では、Windowsの実行ファイルフォーマットの構成要素の一部であるsubsystemより、以下の値を演算する。hash[1] := subsystem[0…7] XOR subsystem[8…15]。
【０１２８】
処理Ｓ２４０４では、Windowsの実行ファイルフォーマットの構成要素の一部であるstackcommitより、以下の値を演算する。hash[2]:= stackcommit[8…15] XOR stackcommit[16…23] XOR stackcommit[24…31]。
【０１２９】
処理Ｓ２４０５では、Windowsの実行ファイルフォーマットの構成要素の一部であるheapcommitより、以下の値を演算する。hash[3]:= heapcommit[8…15] XOR heapcommit[16…23] XOR heapcommit[24…31]。
【０１３０】
処理Ｓ２４０６では、セクション毎に、Windowsの実行ファイルフォーマットの構成要素の一部であるvirtaddressより、以下の値を演算する。shash[0] := virtaddress[9…31]。
【０１３１】
処理Ｓ２４０７では、セクション毎に、Windowsの実行ファイルフォーマットの構成要素の一部であるrawsizeより、以下の値を演算する。shash[1]:= rawsize[8…31]。
【０１３２】
処理Ｓ２４０８では、実行ファイルのセクション毎に、Windowsの実行ファイルフォーマットの構成要素の一部であるcharacteristicsより、以下の値を演算する。shash[2] := characteristics[16…23] XOR characteristics[24…31]。
【０１３３】
処理Ｓ２４０９では、各セクション毎に受信した閾値を用いて下記の値を計算する。 
Kolmogorovはデータの複雑性を表す値である。尚、Lengthはデータサイズを返す関数、bzip2はデータのbzip2圧縮処理を行う関数である。shash[3]:= Kolmogorov∈ [0…閾値] ⊂ N （N：自然数）、Kolmogorov=(Length(bzip2(セクション))/Length(セクション))×閾値。
【０１３４】
処理Ｓ２４１０では、処理Ｓ２４０２〜処理Ｓ４２０９より算出した、hash[0]〜shash[2]、及び各セクションのhash[0]〜hash[3]を連結してFH値を生成 する。
【０１３５】
処理Ｓ２４１１では、ＦＨ値を削除部１２３へ送信する。
【０１３６】
図１６は、クライアント装置１００の問い合わせ部１２５で実行される、問い合わせ部処理フローを示している。
【０１３７】
処理Ｓ２５０１では、削除部１２３より、マルウェアとＦＨ値が一致したファイルを受信する。
【０１３８】
処理Ｓ２５０２では、受信したファイルをサーバ装置２００の受付部２２５へ送信する。
【０１３９】
処理Ｓ２５０３では、受付部２２５より、送信したファイルがマルウェアか否かの判定結果を受信する。
【０１４０】
処理Ｓ２５０４では、削除部１２３へ削除対象のファイルを送信する。
【０１４１】
図１７は、サーバ装置２００の中継部２２１で実行される中継部処理フローを示している。
【０１４２】
処理Ｓ２６０１では、クライアント装置１００のファイル実行監視部１２２からファイルとファイル実行時刻を受信する。
【０１４３】
処理Ｓ２６０２では、マルウェア外部検知装置３００の解析部３２１にファイルとファイル実行時刻を送信する。
【０１４４】
図１８は、サーバ装置２００の送信部２２２で実行される、送信部処理フローを示している。
【０１４５】
処理Ｓ２７０１では、マルウェア外部検知装置３００の結果送信部３２２より、マルウェアファイルとファイル実行時刻を受信する。
【０１４６】
処理Ｓ２７０２では、サーバ側ファジーハッシュ演算部２２３にマルウェアファイルを送信する。
【０１４７】
処理Ｓ２７０３では、サーバ側ファジーハッシュ演算部２２３からマルウェアファイルのデフォルトＦＨ値を受信する。
【０１４８】
処理Ｓ２７０４では、受信したマルウェアとマルウェアファイルのデフォルトＦＨ値をブラックリスト２５４に記録する。
【０１４９】
処理Ｓ２７０５では、受信したデフォルトＦＨ値を基に閾値ＤＢ２５１を参照し、最適な閾値とマルウェアの可能性が高いＦＨ値を受信する。
【０１５０】
処理Ｓ２７０６では、最適閾値とマルウェアファイルを、再度、サーバ側ファジーハッシュ演算部２２３へ送信する。
【０１５１】
処理Ｓ２７０７では、サーバ側ファジーハッシュ演算部２２３より、最適閾値より算出したＦＨ値を受信する。
【０１５２】
処理Ｓ２７０８では、受信したマルウェアファイルのＥｘａｃｔハッシュ値を算出する。
【０１５３】
処理Ｓ２７０９では、処理Ｓ２７０６より算出したＦＨ値と処理Ｓ２７０７より算出したＥｘａｃｔハッシュ値とマルウェアの可能性が高いＦＨ値をクライアント装置１００の削除部１２３に送信する。
【０１５４】
図１９は、サーバ装置２００のサーバ側ファジーハッシュ演算部２２３で実行される、サーバ側ファジーハッシュ演算部処理フローを示している。
【０１５５】
処理Ｓ２８０１では、送信部２２２またはフィードバック部２２４からファイルと閾値を受信する。
【０１５６】
処理Ｓ２８０２では、Windowsの実行ファイルフォーマットの構成要素の一部であるcharacteristicsより、以下の値を演算する。hash[0]:= characteristics[0…7] XOR characteristics[8…15]。 
処理Ｓ２８０３では、Windowsの実行ファイルフォーマットの構成要素の一部であるsubsystemより、以下の値を演算する。hash[1]:= subsystem[0…7] XOR subsystem[8…15]。
を演算し、hash[1]を求める。
【０１５７】
処理Ｓ２８０４では、Windowsの実行ファイルフォーマットの構成要素の一部であるstackcommitより、以下の値を演算する。hash[2]:= stackcommit[8…15] XOR stackcommit[16…23] XOR stackcommit[24…31]。
【０１５８】
処理Ｓ２８０５では、Windowsの実行ファイルフォーマットの構成要素の一部であるheapcommitより、以下の式を演算する。hash[3]:= heapcommit[8…15] XOR heapcommit[16…23] XOR heapcommit[24…31]
処理Ｓ２８０６では、実行ファイルのセクション毎に、Windowsの実行ファイルフォーマットの構成要素の一部であるviratddressより、以下の値を演算する。shash[0]:= virtaddress[9…31]
処理Ｓ２８０７では、実行ファイルのセクション毎に、Windowsの実行ファイルフォーマットの構成要素の一部であるrawsizeより、以下の値を演算する。shash[1]:= rawsize[8…31]
処理Ｓ２８０８では、実行ファイルのセクション毎に、Windowsの実行ファイルフォーマットの構成要素の一部であるcharacteristicsより、以下の式を演算する。shash[2]:= characteristics[16…23] XOR characteristics[24…31]。
【０１５９】
処理Ｓ２８０９では、セクション毎に受信した閾値を用いて下記の値を計算する。 Kolmogorovはデータの複雑性値を表す。Lengthはデータサイズを返す関数、bzip2はデータのbzip2圧縮処理を実行する関数である。
hash[3]:= Kolmogorov∈ [0…閾値] ⊂ N （N：自然数）
Kolmogorov=(Length(bzip2(セクション))/Length(セクション))×閾値
処理Ｓ２８１０では、処理Ｓ２４０２〜処理Ｓ２４０９より算出した、hash[0]〜hash[2]、及び各セクションのhash[0]〜hash[3]を結合してＦＨ値を生成する。
【０１６０】
処理Ｓ２８１１では、ＦＨ値を、演算部の呼び出し元である送信部２２２またはフィードバック部２２４へ送信する。
【０１６１】
図２０では、サーバ装置２００のフィードバック部２２４で実行される、フィードバック部処理フローを示している。
【０１６２】
処理Ｓ２９０１では、サーバ装置２００の受付部２２５より、誤マッチファイル、デフォルトＦＨ値を受信する。
【０１６３】
処理Ｓ２９０２では、誤マッチファイルのデフォルトＦＨ値を基に誤マッチＤＢ２５３を参照し、ＦＨ値が一致するファイルを全て取得する。
【０１６４】
処理Ｓ２９０３では、新ファイルのデフォルトＦＨ値を基にブラックリストＤＢ２５４を参照し、ＦＨ値が一致するファイルを全て取得する。
【０１６５】
処理Ｓ２９０４では、デフォルトＦＨ値を基に閾値ＤＢ２５１を参照し、最適閾値を取得する。
【０１６６】
処理Ｓ２９０５では、パラメータＤＢ２５５を参照し、パラメータαを取得する。
【０１６７】
処理Ｓ２９０６では、現在の最適閾値を基準として、最適閾値±nの範囲にある閾値tを用いて処理Ｓ２９０７〜処理Ｓ２９０８を実行する。
【０１６８】
処理Ｓ２９０７では、サーバ側ファジーハッシュ演算部２２３に、処理Ｓ２９０２で取得した誤マッチＤＢ内のファイル、処理Ｓ２９０３で取得したブラックリスト内のファイル、新誤マッチファイル、及び最適閾値を送信し、各ファイルのＦＨ値を取得する。
【０１６９】
処理Ｓ２９０８では、閾値=tを用いて誤マッチＤＢ２５３、ブラックリストＤＢ２５４内のファイルのＦＨ値を計算する。そして、ＦＨ値を基に、ファイルをクラスタリングする。各クラスタCti(0≦i≦Nt)には、ＦＨ値が等しいファイルが含まれる。なお、Ntはクラスタの数を示す。 
処理Ｓ２９０９では、処理Ｓ２９０７で示した閾値tの範囲で、処理Ｓ２９０８を繰り返す。
【０１７０】
処理Ｓ２９１０では、各クラスタCti内のマルウェアの数をMtiとする。
【０１７１】
処理Ｓ２９１１では、各クラスタCti内の正規ファイルの数をBtiとする。
【０１７２】
処理Ｓ２９１２では、各クラスタにおいて、Eval(Cti)=Mti / Btiを算出する。
【０１７３】
処理Ｓ２９１３では、閾値tを用いたときのクラスタ評価値XtをXt=ΣEval(C’tj) / N  より算出する。但し、C’t={Cti|Eval(Cti>α)}
処理Ｓ２９１４では、Xtが最大となるtを、新しい最適閾値tとする。
【０１７４】
処理Ｓ２９１５では、閾値ＤＢ２５１に、処理Ｓ２９１４で求めた新しい最適閾値tを最適閾値１１０３の閾値として記録する。C’t内のクラスタに含まれるＦＨ値を、マルウェアの可能性が高いＦＨ値１１０４に記録する。
【０１７５】
図２１では、サーバ装置２００の受付部２２５で実行される、受付部処理フローを示している。
【０１７６】
処理Ｓ３００１では、問い合わせ部１２５からマルウェアファイルのＦＨ値と一致したファイルを受信する。
【０１７７】
処理Ｓ３００２では、受信したファイルのＥｘａｃｔハッシュ値を計算する。
【０１７８】
処理Ｓ３００３では、Ｅｘａｃｔハッシュ値がホワイトリストＤＢ２５２に含まれるかどうか照合する。
【０１７９】
処理Ｓ３００４では、処理Ｓ３００３でホワイトリストＤＢ２５２と照合し、Ｅｘａｃｔハッシュ値が該当した場合、そのファイルを正規ファイルと見なし、誤マッチＤＢ２５３にファイルとデフォルトＦＨ値を記録する。
【０１８０】
処理Ｓ３００５では、処理Ｓ３００３でホワイトリストＤＢ２５２と照合し、Ｅｘａｃｔハッシュ値が該当しなかった場合、そのファイルをマルウェアファイルと見なし、ブラックリストＤＢ２５４にファイルとデフォルトＦＨ値を記録する。
【０１８１】
処理Ｓ３００６では、Ｅｘａｃｔハッシュが一致したため、クライアント装置１００の問い合わせ部１２５にファイルの照合結果及びＥｘａｃｔハッシュ値を送信する。
【０１８２】
処理Ｓ３００７では、フィードバック部２２４にマルウェアとＦＨ値が一致した正規ファイルのデフォルトＦＨ値を送信する。
【０１８３】
処理Ｓ３００８では、Ｅｘａｃｔハッシュ値が一致しなかったため、結果と削除対象ファイルのＥｘａｃｔハッシュ値を問い合わせ部１２５へ送信する。
【０１８４】
図２２では、マルウェア外部検知装置３００の解析部３２１で実行される、解析部処理フローを示している。
【０１８５】
処理Ｓ３１０１では、サーバ装置２００の中継部２２１からファイルを受信する。
【０１８６】
処理Ｓ３１０２では、受信したファイルの解析を実施する。
【０１８７】
処理Ｓ３１０３では、マルウェア外部検知装置３００の結果送信部３２２へ解析結果とマルウェアと判定したファイルが存在した場合、マルウェアファイルを送信する。
【０１８８】
図２３では、マルウェア外部検知装置３００の結果送信部３２２で実行される、結果送信部処理フローを示している。
【０１８９】
処理Ｓ３２０１では、マルウェア外部検知装置３００の解析部３２１から解析結果とファイルを受信する。
【０１９０】
処理Ｓ３２０２、Ｓ３２０３では、解析結果とファイルをサーバ装置２００の送信部２２２へ送信する。
【０１９１】
図２４〜図２７において、図６〜図１１の各ＤＢのデータを用いて具体例を説明する。本実施例では、先ず、ファイルＢ（Ｘ）を有するクライアント装置１を用いる。ファイルＢ（Ｘ）とはマルウェアファイルである。ファイルＢの削除処理を通じて、フィードバック部２２４にて、マルウェアファイルＸに対する閾値は改善される。
【０１９２】
続いて、クライアント装置２において同じマルウェアＸが実行される。しかし、クライアント装置１において、マルウェアＸに対する閾値は改善されているため、送信するデータの量が減ることにより、ネットワーク負荷の低減、解析速度の向上につながる。詳細は、図２４以降の説明で記載する。
【０１９３】
なお、図２４〜図２６の各ライン上、又はラインからの吹き出しに記載されている内容は、当該ラインで伝送される情報を示す。
【０１９４】
図２４では、クライアント装置１００の各処理部のシーケンスを示している。
【０１９５】
処理Ｓ２１０１〜処理Ｓ２１０２ではライン１を通じて、クライアント装置１００で新しいマルウェアＸのファイルBが作成されたため、マルウェアＸのファイルBのファイルパスとファイル作成時刻を送信する。本実施例では、マルウェアＸのファイルBがクライアント装置１００で、２０１３年１月１３日１時２５分０８秒に作成されたため、ファイルＤＢ１５１のファイルパス１００２にマルウェアＸのファイルBのパスである、C:\MyDocument\B.exe が記録され、ファイル作成時刻２００３に２０１３年１月１３日１時２５分０８秒が記録される。また、ファイルＩＤは「６」である。
【０１９６】
処理Ｓ２２０１〜処理Ｓ２２０２ではライン２を通じて、マルウェアＸのファイルBが実行された際、ファイルBとファイルBの実行時刻をサーバ装置２００の中継部２２１に送信する。本実施例では、ファイルBがクライアント装置１００で、２０１３年１月１３日１時２５分０８秒に実行されたため、ファイル実行監視部１２２は、ファイルBとファイルB実行時刻である「２０１３年１月１３日１時２５分０８秒」をサーバ装置２００の中継部２２１に送信する。
【０１９７】
処理Ｓ２６０１〜処理Ｓ２６０２ではライン３を通じて、サーバ装置２００の中継部２２１が受信したファイルBとファイルB実行時刻をマルウェア外部検知装置３００の解析部３２１に送信する。本実施例では、ファイルBとマルウェアＸのファイルB実行時刻：２０１３年１月１３日１時２５分０８秒をマルウェア外部検知装置３００の解析部３２１に送信する。
【０１９８】
処理Ｓ３１０１〜処理Ｓ３１０３ではライン５を通じて、マルウェア外部検知装置３００の解析部３２１が受信したファイルBの解析を行い、解析結果とファイルBをマルウェア外部検知装置３００の結果送信部３２２へ送信し、結果送信部３２２からサーバ装置２００の送信部２２２へ送信する。本実施例では、ファイルBはマルウェアファイルである。そのため、解析結果はマルウェアと判定される。以上より、解析部３２１は「解析結果：ファイルB＝マルウェアファイル」及びファイルBをマルウェア外部検知装置３００の結果送信部３２２へ送信する。結果送信部３２２は受信した情報をそのままサーバ装置２００の送信部２２２へ送信する。
【０１９９】
ここで、サーバ装置２００では、受信したファイルBのＦＨ値を、最適閾値を用いて演算する。ここでの処理の流れは図２６の処理Ｓ２７０１〜２７０３から処理Ｓ２５０１〜処理Ｓ２５０２の通りである。
【０２００】
処理Ｓ２９０１〜処理Ｓ２９０７では、ライン１０を通じてサーバ装置２００の送信部２２２からクライアント装置１００の削除部１２３へ、マルウェアファイルのＦＨ値、マルウェアファイルのＥｘａｃｔハッシュ値、最適閾値、ファイル実行時刻、マルウェアの可能性が高いＦＨ値、を送信する。本実施例では、デフォルト閾値でファイルＢのＦＨ値を演算したところ「7ad0e2fe7gd2…a7df」となった。ここで、この時点では、閾値ＩＤ＝Ｎのレコードは、閾値ＤＢ２５１に登録されていないと想定する。このため、ＦＨ値に対応する最適閾値は閾値ＤＢ２５１に存在せず、最適閾値はデフォルト閾値とする。また、マルウェアの可能性が高いＦＨ値も閾値ＤＢ２５１に登録されていないため、送信しない。また、「デフォルト閾値＝２」とする。以上より、「マルウェアＸのファイルＢのＦＨ値＝7ad0e2fe7gd2…a7df」、「マルウェアＸのファイルＢのＥｘａｃｔハッシュ値＝3a2c1a8e7…」、「最適閾値＝２」、「ファイル実行時刻＝２０１３年１月１３日１時２５分０８秒」をクライアント装置１００の削除部１２３へ送信する。
【０２０１】
処理Ｓ２３０１〜処理Ｓ２３０４では、ライン１１を通じて削除部１２３からファイル実行時刻を基に、ファイルＤＢ１５１を参照し、時刻が近いファイルを取得する。取得したファイルのＥｘａｃｔハッシュ値を演算し、マルウェアファイルと同じＥｘａｃｔハッシュ値のファイルを削除する。その後、ライン１２を通じて残りのファイルをクライアント側ファジーハッシュ演算部１２４へ送信する。
【０２０２】
本実施例では、「ファイル実行時刻：２０１３年１月１３日１時２５分０８秒」を基に、ファイル実行時刻の前後６０分に作成されたファイルを取得する。図６のクライアント装置１のファイルＤＢ１５１を参照した結果、
「ファイルＩＤ＝１」、「ファイルパス＝C\MyDocument\A1.exe」、「ファイル作成時刻＝２０１３年１月１３日０時３４分４２秒」
「ファイルＩＤ＝２」、「ファイルパス＝C\MyDocument\DeskTop\A2.exe」、「ファイル作成時刻＝２０１３年１月１３日０時５３分０秒」
「ファイルＩＤ＝３」、「ファイルパス＝C\MyDocument\A3.exe」、「ファイル作成時刻＝２０１３年１月１３日１時１３分１２秒」
「ファイルＩＤ＝４」、「ファイルパス＝C\MyDocument\A4.exe」、「ファイル作成時刻＝２０１３年１月１３日１時１７分１０秒」
「ファイルＩＤ＝５」、「ファイルパス＝C\MyDocument\A5.exe」、「ファイル作成時刻＝２０１３年１月１３日１時１８分２３秒」
「ファイルＩＤ＝６」、「ファイルパス＝C\MyDocument\B.exe」、「ファイル作成時刻＝２０１３年１月１３日１時２５分８秒」
「ファイルＩＤ＝７」、「ファイルパス＝C\MyDocument\A6.exe」、「ファイル作成時刻＝２０１３年１月１３日１時４５分５９秒」
「ファイルＩＤ＝８」、「ファイルパス＝C\MyDocument\A7.exe」、「ファイル作成時刻＝２０１３年１月１３日１時４９分５９秒」
「ファイルＩＤ＝９」、「ファイルパス＝C\MyDocument\B1.exe」、「ファイル作成時刻＝２０１３年１月１３日１時５２分３４秒」
「ファイルＩＤ＝１０」、「ファイルパス＝C\MyDocument\A8.exe」、「ファイル作成時刻＝２０１３年１月１３日１時５５分４０秒」
「ファイルＩＤ＝１１」、「ファイルパス＝C\MyDocument\B2.exe」、「ファイル作成時刻＝２０１３年１月１３日１時５９分４５秒」
「ファイルＩＤ＝１２」、「ファイルパス＝C\MyDocument\B3.exe」、「ファイル作成時刻＝２０１３年１月１３日２時５分１１秒」
「ファイルＩＤ＝１３」、「ファイルパス＝C\MyDocument\B4.exe」、「ファイル作成時刻＝２０１３年１月１３日２時１４分４２秒」
「ファイルＩＤ＝１４」、「ファイルパス＝C\MyDocument\B5.exe」、「ファイル作成時刻＝２０１３年１月１３日２時１６分２３秒」
「ファイルＩＤ＝１５」、「ファイルパス＝C\MyDocument\B6.exe」、「ファイル作成時刻＝２０１３年１月１３日２時２３分２３秒」
「ファイルＩＤ＝１６」、「ファイルパス＝C\MyDocument\B7.exe」、「ファイル作成時刻＝２０１３年１月１３日２時２４分３２秒」
の以上１６個のファイルを取得する。先ず、マルウェアファイルを削除するため、１６個ファイルのＥｘａｃｔハッシュ値を求める。ＥＨは、ファイルのＥｘａｃｔハッシュ値を求める関数である。
ファイルＡ１のＥｘａｃｔハッシュ値「ＥＨ（Ａ１）＝ae84b2d0…  」
ファイルＡ２のＥｘａｃｔハッシュ値「ＥＨ（Ａ２）＝e46aa487…  」
ファイルＡ３のＥｘａｃｔハッシュ値「ＥＨ（Ａ３）＝ae3a4bd5…  」
ファイルＡ４のＥｘａｃｔハッシュ値「ＥＨ（Ａ４）＝a4e7c12…  」
ファイルＡ５のＥｘａｃｔハッシュ値「ＥＨ（Ａ５）＝57c90bde… 」
ファイルＢのＥｘａｃｔハッシュ値  「ＥＨ（Ｂ）＝3a2c1a8e7…」
ファイルＡ６のＥｘａｃｔハッシュ値「ＥＨ（Ａ６）＝ae14a567…」
ファイルＡ７のＥｘａｃｔハッシュ値「ＥＨ（Ａ７）＝1b2e4ab2…」
ファイルＢ１のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ１）＝2e3c4b7…」
ファイルＡ８のＥｘａｃｔハッシュ値  「ＥＨ（Ａ８）＝c1a28e4…」
ファイルＢ２のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ２）＝4b7bc13…」
ファイルＢ３のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ３）＝27bec3d…」
ファイルＢ４のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ４）＝b37ceb1…」
ファイルＢ５のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ５）＝e4bbe74…」
ファイルＢ６のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ６）＝3cb7a41…」
ファイルＢ７のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ７）＝ac1b8e2…」
以上より、受信したＥｘａｃｔハッシュ値3a2c1a8e7…と一致するファイルＢを削除し、残り１５個のファイルをファジーハッシュ演算部１２４へ送信する。
【０２０３】
処理Ｓ２４０１〜処理Ｓ２４１１では、削除部１２３から取得したファイルをクライアント側ファジーハッシュ演算部１２４が演算し、ライン１２を通じてそのＦＨ値を削除部１２３へ送信する。
【０２０４】
本実施例では、クライアント側ファジーハッシュ演算部はファイルＡ１、Ａ２、Ａ３、Ａ４、Ａ５、Ｂ、Ａ６、Ａ７、Ｂ１、Ａ８、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のファイルを演算する。各々のＦＨ値を演算するため、Windowsの実行ファイルフォーマットの構成要素の一部であるcharacteristics、subsystem、stackcommit、heapcommit、virtaddress、rawsize及び、ファイルの各セクションの特徴量であるKolmogorov値を用いて、ＦＨ値を演算する。演算した結果、
ファイルＡ１のＦＨ値（Ａ１）＝7ad0e2ce7gd2…a7da 、
ファイルＡ２のＦＨ値（Ａ２）＝83a19b153b3… 、
ファイルＡ３のＦＨ値（Ａ３）＝7ad0e2ce7gd2…a7da 、
ファイルＡ４のＦＨ値（Ａ４）＝1e24a7be42…、
ファイルＡ５のＦＨ値（Ａ５）＝7ad0e2ce7gd2…a7da 、
ファイルＡＢのＦＨ値（Ａ６）＝7ad0e2ce7gd2…a7da 、
ファイルＡ６のＦＨ値（Ｂ）＝7ad0e2ce7gd2…a7da 、
ファイルＡ７のＦＨ値（Ａ７）＝a0e4cc8c1… 
ファイルＢ１のＦＨ値（Ｂ１）＝7ad0e2ce7gd2…a7da
ファイルＡ８のＦＨ値（Ａ８）＝a1c2d73eg2…, 
ファイルＢ２のＦＨ値（Ｂ２）＝7ad0e2ce7gd2…a7da
ファイルＢ３のＦＨ値（Ｂ３）＝7ad0e2ce7gd2…a7da
ファイルＢ４のＦＨ値（Ｂ４）＝7ad0e2ce7gd2…a7da
ファイルＢ５のＦＨ値（Ｂ５）＝7ad0e2ce7gd2…a7da
ファイルＢ６のＦＨ値（Ｂ６）＝7ad0e2ce7gd2…a7da
ファイルＢ７のＦＨ値（Ｂ７）＝7ad0e2ce7gd2…a7da
以上より、受信した１５個のファイルのＦＨ値を削除部１２３へ送信する。
処理Ｓ２３０５〜処理Ｓ２３０６では、ライン１４を通じてファイル実行時刻とファイル作成時間が近いファイルのＦＨ値を受信した削除部１２３は、ＦＨ値が一致したファイルとデフォルトＦＨ値を、問い合わせ部１２５へ送信する。
【０２０５】
本実施例では、削除部１２３が受信した１５個のファイルのＦＨ値、とマルウェアファイルの「ＦＨ値：7ad0e2ce7gd2…a7da」を比較したところ、ファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７の値は等しかった。そこで削除部１２３は１１個のファイル、ファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７を問い合わせ部１２５へ送信する。なお、本実施例では、デフォルト閾値＝最適閾値である。
【０２０６】
処理Ｓ２５０１〜処理Ｓ２５０２では、ライン１５を通じて問い合わせ部１２５は、ＦＨ値が一致したファイル、デフォルトＦＨ値をサーバ装置２００の受付部２２５へ送信する。
【０２０７】
本実施例では、ＦＨ値：7ad0e2ce7gd2…a7daと比較した結果、ファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＦＨ値が一致した。本来、１５個のファイルを送信するはずだが、１１個に限定することができた。以上より、ファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７と最適閾値（＝デフォルト閾値）で演算した「ＦＨ値＝7ad0e2ce7gd2…a7da 」をサーバ装置２００の受付部２２５へ送信する。
【０２０８】
処理Ｓ３００１〜処理Ｓ３００２では、受信したファイルのＥｘａｃｔハッシュ値を算出し、ホワイトリストＤＢ２５２と参照する。本実施例ではファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＥｘａｃｔハッシュ値を求める。
ファイルＡ１のＥｘａｃｔハッシュ値「ＥＨ（Ａ１）＝ae84b2d0…  」
ファイルＡ３のＥｘａｃｔハッシュ値「ＥＨ（Ａ３）＝ae3a4bd5…  」
ファイルＡ５のＥｘａｃｔハッシュ値「ＥＨ（Ａ５）＝57c90bde… 」
ファイルＡ６のＥｘａｃｔハッシュ値「ＥＨ（Ａ６）＝ae14a567…」
ファイルＢ１のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ１）＝2e3c4b7…」
ファイルＢ２のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ２）＝4b7bc13…」
ファイルＢ３のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ３）＝27bec3d…」
ファイルＢ４のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ４）＝b37ceb1…」
ファイルＢ５のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ５）＝e4bbe74…」
ファイルＢ６のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ６）＝3cb7a41…」
ファイルＢ７のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ７）＝ac1b8e2…」
以上の結果をホワイトリストＤＢ２５２と参照した結果、ファイルＡ１、Ａ３、Ａ５、Ａ６は正規ファイルであることが判明、ファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７はマルウェアファイルであることが判明した。
【０２０９】
処理Ｓ３００３〜処理Ｓ３００５では、ライン１７を通じてサーバ装置２００の受付部２２５は照合を行った結果を、クライアント装置１００の問い合わせ部１２５へ送信する。
【０２１０】
本実施例では、サーバ装置２００の受付部２２５は正規ファイルと判明した、ファイルＡ１、Ａ３、Ａ５、Ａ６のＥｘａｃｔハッシュ値をクライアント装置１００の問い合わせ部１２５に送信する。また、マルウェアファイルと判明した、ファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＥｘａｃｔハッシュ値も同様に、クライアント装置１００の問い合わせ部１２５に送信する。
【０２１１】
処理Ｓ２５０３〜処理Ｓ２５０４では、ライン１８を通じてクライアント装置１００の問い合わせ部１２５からマルウェアファイルのＥｘａｃｔハッシュ値を削除部１２３に送信する。本実施例では、ファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＥｘａｃｔハッシュ値「ＥＨ（Ｂ１）＝2e3c4b7…」「ＥＨ（Ｂ２）＝4b7bc13…」「ＥＨ（Ｂ３）＝27bec3d…」「ＥＨ（Ｂ４）＝b37ceb1…」「ＥＨ（Ｂ５）＝e4bbe74…」「ＥＨ（Ｂ６）＝3cb7a41…」「ＥＨ（Ｂ７）＝ac1b8e2…」を送信する。
【０２１２】
処理Ｓ２３０７〜処理Ｓ２３０８では、ライン１８を通じて受信したＥｘａｃｔハッシュ値を基にファイルを参照し、Ｅｘａｃｔハッシュ値が一致するファイルを削除する。
【０２１３】
図２５では、ＥｘａｃｔハッシュがホワイトリストＤＢ２５２と一致した際の、サーバ装置２００の各処理部のシーケンスを示している。
【０２１４】
処理Ｓ２２０１〜処理Ｓ２２０２ではライン１を通じて、クライアント装置１００のファイル実行監視部１２２がサーバ装置２００の中継部２２１へ実行されたファイルとファイル実行時刻を送信する。本実施例では、クライアント装置１００のファイル実行監視部１２２は、マルウェアＸのファイルBと「マルウェアＸのファイルB実行時刻：２０１３年１月１３日１時２５分０８秒」をサーバ装置２００の中継部２２１へ送信する。
【０２１５】
処理Ｓ２６０７ではライン３を通じて、受信したファイルとファイル実行時刻をマルウェア外部検知装置の解析部へ送信する。本実施例では、ファイルBと「マルウェアＸのファイルB実行時刻：２０１３年１月１３日１時２５分０８秒」を解析部へ送信する。
【０２１６】
処理Ｓ３１０１〜処理Ｓ３１０３では、マルウェア外部検知装置３００の解析部３２１が受信したマルウェアファイルの解析結果とマルウェアファイルBをマルウェア外部検知装置３００の結果送信部３２２へ送信する。その後、ライン５を通じて、結果送信部３２２からサーバ装置２００の送信部２２２へマルウェアファイルの解析結果とファイルB、「マルウェアＸのファイルB実行時刻：２０１３年１月１３日１時２５分０８秒」を、送信する。本実施例では、ファイルBはマルウェアと判定される。以上より、解析部は「解析結果：マルウェアＸのファイルB＝マルウェアファイル」、ファイルBをマルウェア外部検知装置３００の結果送信部へ送信し、結果送信部３２２は受信した「解析結果：マルウェアＸのファイルB＝マルウェアファイル」、ファイルB、「マルウェアＸのファイルB実行時刻：２０１３年１月１３日１時２５分０８秒」をサーバ装置２００の送信部２２２へ送信する。
【０２１７】
処理Ｓ２７０１〜処理Ｓ２７０３ではライン６を通じて、送信部２２２では、受信したマルウェアファイルをサーバ側ファジーハッシュ演算部２２３へ送信する。
【０２１８】
本実施例では、送信部２２２は受信したマルウェアファイルであるファイルBをサーバ側ファジーハッシュ演算部２２３へ送信する。
【０２１９】
Ｓ２８０１〜Ｓ２８１１では、サーバ側ファジーハッシュ演算部２２３は、送信部２２２より受信したファイルを演算し、ライン７を通じて送信部２２２へＦＨ値を送信する。本実施例では、サーバ側ファジーハッシュ演算部２２３では、送信部２２２より受信したファイルから、ＦＨ値を演算するため、Windowsの実行ファイルフォーマットの構成要素の一部であるcharacteristics、subsystem、stackcommit、heapcommit、virtaddress、rawsize及び、ファイルの各セクションの特徴量であるKolmogorov値を用いて、ＦＨ値を演算する。ここで用いる閾値は、「デフォルト閾値＝２」である。演算した結果、マルウェアＸのファイルBの「ＦＨ値＝7ad0e2fe7gd2…a7df」 を得た。サーバ側ファジーハッシュ演算部２２３は、マルウェアＸのファイルBの「ＦＨ値＝7ad0e2fe7gd2…a7df」を送信部２２２へ送信する
処理Ｓ２７０４ではライン８を通じて、送信部２２２は、マルウェアファイルとサーバ側ファジーハッシュ演算部２２３より受信したデフォルトＦＨ値をブラックリストＤＢ２５４に記録する。
【０２２０】
本実施例では、ファイルＢのデフォルトＦＨ値7ad0e2ce7gd2…a7daとファイルＢをブラックリストＤＢ２５４に記録する。
処理Ｓ２７０５〜処理Ｓ２７０６では、ライン９を通じてサーバ側ファジーハッシュ演算部２２３より受信したデフォルトＦＨ値を基に、閾値ＤＢ２５１を参照し、参照して得られた最適閾値とファイルを、ライン６を通じてサーバ側ファジーハッシュ演算部２２３へ送信する。
【０２２１】
本実施例では参照した結果、閾値ＤＢ２５１にサーバ側ファジーハッシュ演算部２２３より受信したデフォルトＦＨ値は存在しないため、送信部２２２は、「最適閾値＝デフォルト閾値」となる。また、デフォルトＦＨ値が閾値ＤＢ２５１に存在しなかったため、マルウェアの可能性が高いＦＨ値も存在しない。
【０２２２】
処理Ｓ２８０１〜処理Ｓ２８１１ではライン７を通じて、サーバ側ファジーハッシュ演算部２２３は、送信部２２２より受信した最適閾値を用いてＦＨ値を演算し、送信部２２２に送信する。
【０２２３】
本実施例では、最適閾値＝デフォルト閾値であるため、ここで演算は行わない。
【０２２４】
処理Ｓ２７０６〜処理Ｓ２７０９では、ライン１０を通じて、送信部２２２は、マルウェアファイルのＥｘａｃｔハッシュ値、マルウェアファイルのＦＨ値、最適な閾値、ファイル実行時刻、マルウェアの可能性が高いＦＨ値を、クライアント装置１００の削除部１２３へ送信する。本実施例では、まず、ファイルＢのＥｘａｃｔハッシュ値3a2c1a8e7…を求める。以上より、送信部は「マルウェアＸのファイルＢのＥｘａｃｔハッシュ値：3a2c1a8e7…」、「ＦＨ値（B(Ｘ)）＝7ad0e2ce7gd2…a7da」、「最適閾値＝２」、「ファイルB実行時刻：２０１３年１月１３日１時１４分３０秒」をクライアント装置１００の削除部１２３へ送信する。
【０２２５】
上記のデータを受信したクライアント装置１００では、ファイルＤＢ１５１を参照し、実行時刻と近い時刻に作成されたファイルを取得し、受信した最適閾値を用いて、ＦＨ値を演算し、マルウェアファイルのＦＨ値と比較を行う。
以上より、Ｓ２５０１〜Ｓ２５０２ではライン１５を通じて、クライアント装置１００の問い合わせ部１２５から、マルウェアファイルの可能性が高いＦＨ値と一致したファイル、デフォルトＦＨ値を、サーバ装置の受付部２２５は受信する。
【０２２６】
本実施例では、クライアント装置１００の問い合わせ部１２５から、ファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７、デフォルトＦＨ値で演算した「ＦＨ値：7ad0e2ce7gd2…a7da」サーバ装置２００の受付部２２５は受信する。
処理Ｓ３００１〜処理Ｓ３００２では、Ｅｘａｃｔハッシュを用いて、Ｅｘａｃｔハッシュ値を演算し、ホワイトリストＤＢ２５２と参照する。本実施例ではファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＥｘａｃｔハッシュ値を求める。
ファイルＡ１のＥｘａｃｔハッシュ値「ＥＨ（Ａ１）＝ae84b2d0…  」
ファイルＡ３のＥｘａｃｔハッシュ値「ＥＨ（Ａ３）＝ae3a4bd5…  」
ファイルＡ５のＥｘａｃｔハッシュ値「ＥＨ（Ａ５）＝57c90bde… 」
ファイルＡ６のＥｘａｃｔハッシュ値「ＥＨ（Ａ６）＝ae14a567…」
ファイルＢ１のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ１）＝2e3c4b7…」
ファイルＢ２のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ２）＝4b7bc13…」
ファイルＢ３のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ３）＝27bec3d…」
ファイルＢ４のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ４）＝b37ceb1…」
ファイルＢ５のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ５）＝e4bbe74…」
ファイルＢ６のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ６）＝3cb7a41…」
ファイルＢ７のＥｘａｃｔハッシュ値  「ＥＨ（Ｂ７）＝ac1b8e2…」
以上の結果を、ライン１６を通じてホワイトリストＤＢ２５２と参照する。参照した結果、ファイルＡ１、Ａ３、Ａ５、Ａ６は正規ファイルであることが判明、ファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７はマルウェアファイルであることが判明した。
【０２２７】
図２６では、図２５の続きとなる、Ｅｘａｃｔハッシュ値が一致した際のサーバ装置２００の各機能部のシーケンスを示している。
【０２２８】
処理Ｓ３００３〜処理Ｓ３００５では、受付部２２５が受信したファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＥｘａｃｔハッシュ値をホワイトリストＤＢに照合する。照合を行った結果、ファイルＡ１、Ａ３、Ａ５、Ａ６のＥｘａｃｔハッシュ値はホワイトリストＤＢ２５２の情報と一致、ファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７は一致しなかったことが判明した。そこで、サーバ装置２００の受付部２２５はファイルＡ１、Ａ３、Ａ５、Ａ６を正規ファイル、ファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７はマルウェアファイルとみなし、の問い合わせ部１２５に
ライン１７を通じて、「正規ファイルであるＡ１、Ａ３、Ａ５、Ａ６のＥｘａｃｔハッシュ値」、「マルウェアであるファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７のＥｘａｃｔハッシュ値」を送信する。
【０２２９】
ライン１９では、誤マッチＤＢ２５３にマルウェアファイルとＦＨ値が一致した正規ファイルを記録する。本実施例では、ファイルＡ１、Ａ３、Ａ５、Ａ６と「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」を記録する。
ライン２０では、ブラックリストＤＢ２５４にマルウェアファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７を記録する。本実施例では、マルウェアファイルＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７と「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」 を記録する。
正規ファイルがマルウェアファイルのＦＨ値と一致したため、ファジーハッシュ演算の精度向上のため、最適な閾値の計算をおこなう。そこで、ライン２１では、フィードバック部２２４へデフォルトＦＨ値を送信する。本実施例では、ファイルＡ１、Ａ３、Ａ５、Ａ６の「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」 をフィードバック部２２４へ送信する。
処理Ｓ２９０１〜処理Ｓ２９０５では、ライン２０にて受信した、デフォルト閾値で演算したＦＨ値を用いて、誤マッチＤＢ２５３、ブラックリストＤＢ２５４、閾値ＤＢ２５１を参照する。また、パラメータＤＢを参照し、パラメータを取得する。
【０２３０】
本実施例では、ファイルＡ１、Ａ３、Ａ５、Ａ６、「最適閾値＝２」、ファイルＡ１、Ａ３、Ａ５、Ａ６の「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」をフィードバック部２２４は受信している。そこで、「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」を基に、ライン２２を通じて、誤マッチＤＢ２５３を参照する。参照した結果、ファイルＡ１、Ａ３、Ａ５、Ａ６を取得する。続いて、ライン２３を通じて、ブラックリストＤＢを参照する。参照した結果、ファイルＢ、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７を取得する。次に、ライン２５を通じて、閾値ＤＢ２５１を参照し、「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」の最適閾値を取得する。本実施例では、「デフォルトＦＨ値＝7ad0e2ce7gd2…a7da」は存在しないため、最適閾値はデフォルト閾値とする。さらに、ライン２４を通じて、パラメータＤＢを参照して、パラメータα＝0.9を取得する。
【０２３１】
処理Ｓ２９０６ではライン２６を通じて、フィードバック部２２４は、「正規ファイルファイルＡ１、Ａ３、Ａ５、Ａ６」と「マルウェアファイルＢ、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７」と、「最適閾値＝２」をサーバ側ファジーハッシュ演算部２２３へ送信する。
【０２３２】
処理Ｓ２８０１〜処理Ｓ２８１１は、フィードバック部２２４より受信したファイルを最適閾値によりＦＨ値を演算し、ライン２７を通じてフィードバック部２２４へ送信する。
【０２３３】
処理Ｓ２９０６では、ライン２７を通じて、ＦＨ値と一致した正規ファイルとマルウェアファイル、最適閾値をサーバ側ファジーハッシュ演算部２２３へ送信する。本実施例では、ファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７
最適閾値＝２をサーバ側ファジーハッシュ演算部２２３へ送信する。また、ここでは最適な閾値を求めるため、現状の最適閾値を基にいくつかの閾値でファジーハッシュ演算を行い、ライン２７を通じて、結果をフィードバック部２２４へ送信する。
【０２３４】
Ｓ２９０７〜Ｓ２９１５において、最適閾値２とファイルＡ１、Ａ３、Ａ５、Ａ６、Ｂ、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７の１２個のファイルを用いて最適閾値を求める。最適閾値の導出については図２７を参照。
【０２３５】
閾値２±n（n=0,1,2…）で再計算してクラスタ分けを行い、新たな最適閾値を求める。（１）閾値＝１のとき
クラスタC11={A1,A3,A5,A6,B,B1,B2,B3,B4,B5,B6,B7}
M11=8, B21=4より、
Eval(C11)=8/5=1.6>α
以上より、N1=1、X1=1.6/1=1.6
（２）閾値＝２のとき
クラスタC21={A1,A3,A5,A6,B,B1,B2,B3,B4,B5,B6,B7}
M21=8, B21=4より、
Eval(C12)=8/5=1.6>α
以上より、N2=1、X2=1.6/1=1.6
（３）閾値＝３のとき
クラスタC31={B, B1, B2, B4}
M31=4, B31=0より、
Eval(C31)=4/1=4 >α
クラスタC32={B3, B5, B6, B7}
M32=4, B32=0より、
Eval(C32)=4/1=4>α
クラスタC33={A1, A3, A5, A6}
M33=0,B33=5より
Eval(C33)=0/5=0<α
以上より、N3=2、X3=(4+4)/2=4
（４）閾値＝４のとき
クラスタ  C41={B, B1, B2, B4}
M41=4, B41=0より、
Eval(C41)=4/1=4>α(0.9)
クラスタ  C42={B3, B5}
M42=2, B42=0より、
Eval(C42)=2/1=2>α(0.9)
クラスタ  C43={B6,B7}
M43=2, B43=0より、
Eval(C43)= 2/1=2>α(0.9)
クラスタ  C44={A1, A3, A5, A6}
M44=0,B44=5より
Eval(C44)=0/5=0<α(0.9)
以上より、N4=3、X4=(4+2+2)/3=2.66666
（５）閾値＝５のとき
クラスタ  C51={B, B1, B2, B4}
M51=4, B15=0より、
Eval(C51)=4/1=4
クラスタ  C52={B3, B5}
M52=2, B52=0より、
Eval(C52)=2/1=2
クラスタ  C53={B6,B7}
M53=2, B53=0より、
Eval(C53)= 2/1=2
クラスタ  C54={A1, A3}
M54=0,B54=2より
Eval(C54)=0/2=0
クラスタ  C55={A5, A6}
M55=0,B44=2より
Eval(C55)=0/2=0
以上より、N5=3、X5=(4+2+2)/3=2.66666 
以上の計算結果より、最適閾値は３となる。よって新しい閾値t＝３とマルウェアの可能性が高いＦＨ値として、閾値３で演算した際、Eval(Cti)の値がパラメータα（＝0.9）以上のクラスタのＦＨを閾値ＤＢ２５１に記録する
本実施例では、クラスタC31の「ＦＨ値7ad0e2ce7gd2…72cd」とクラスタC32の「ＦＨ値7ad0e2ce7gd2…c62e」を閾値ＤＢ２５１に記録する。
【０２３６】
以上より、クライアント装置１により、閾値ＤＢ２５１、誤マッチＤＢ２５３、ブラックリストＤＢ２５４にはマルウェアＸの情報が記録されている。
【０２３７】
続いて、クライアント装置２でもマルウェアＸのファイルが実行された際の処理の流れについて説明する。以下詳細である。
【０２３８】
ファイル作成監視部１２１は、ライン１において、クライアント装置（２）内でファイルＣが作成された際、ファイルパスとファイル作成時刻をファイルＤＢ１５１に記録する。本実施例では、２０１３年１月１４日２時１５分０秒にファイルＣが作成されたため、ファイルＩＤ１００１の４００にファイルパス「C:\MyDomcument\C.exe」、ファイル作成時刻１００３に「２０１３年１月１４日２時１５分０秒」が記録される。
【０２３９】
ファイル実行監視部１２２は、ライン２においてファイルＣが実行された際、実行されたファイルとファイル実行時刻をサーバ装置２００の中継部２２１に送信する。本実施例では、ファイルＣとファイル実行時刻２０１３年１月１３日２時１５分０秒をサーバ装置２００の中継部２２１に送信する。
【０２４０】
中継部２２１は、ライン３において受信したファイルとファイル実行時刻をマルウェア外部検知装置３００の解析部３２１に送信する。本実施例では、ファイルＣとファイル実行時刻２０１３年１月１３日２時１５分０秒を解析部３２１に送信する。
【０２４１】
解析部３２１は、ライン４において受信したファイルを解析し、結果送信部３２２に解析結果、ファイル、ファイル実行時刻を送信する。本実施例では、「解析結果：ファイルＣ＝マルウェアファイル」、ファイルＣとファイル実行時刻２０１３年１月１３日２時１５分０秒を結果送信部３２２に送信する。
【０２４２】
結果送信部３２２は、ライン５において、受信した解析結果、ファイル、ファイル実行時刻をサーバ装置２００の送信部２２２に送信する。本実施例では、「解析結果：ファイルＣ＝マルウェアファイル」、ファイルＣとファイル実行時刻２０１３年１月１３日２時１５分０秒を送信部２２２に送信する。
【０２４３】
送信部２２２は、ライン６において、マルウェアファイルをサーバ側ファジーハッシュ演算部２２３に送信する。本実施例では、ファイルＣをサーバ側ファジーハッシュ演算部２２３に送信する。
【０２４４】
サーバ側ファジーハッシュ演算部２２３は、ライン７において、受信したマルウェアファイルから算出したデフォルトＦＨ値を送信部２２２へ送信する。本実施例では、ファイルＣのＦＨ値＝7ad0e2ce7gd2…a7daを送信部２２２へ送信する。
【０２４５】
送信部２２２は、ライン９において受信したデフォルト閾値より算出したＦＨ値を基に閾値ＤＢを参照する。参照し、最適な閾値とマルウェアの可能性が高いＦＨ値を取得する。本実施例では、最適な閾値＝３、マルウェアの可能性が高いＦＨ値＝7ad0e2ce7gd2…72cd 、7ad0e2ce7gd2…c62eを取得する。
【０２４６】
送信部２２２はライン６において、最適な閾値とマルウェアファイルを再び、サーバ側ファジーハッシュ演算部２２３に送信する。本実施例では、ファイルＣと最適な閾値３をサーバ側ファジーハッシュ演算部２２３へ送信する。
【０２４７】
サーバ側ファジーハッシュ演算部２２３はライン７において、マルウェアファイルを最適な閾値で演算したＦＨ値を送信部２２２へ送信する。本実施例では、ＦＨ値＝7ad0e2ce7gd2…c62eを送信部２２２へ送信する。
【０２４８】
送信部２２２は、最適閾値より算出したマルウェアファイルのＦＨ値とマルウェアの可能性が高いＦＨ値を比較し、一致したファイルのデータを削除部１２３に送信する。また、再度ファイルＣを送信しないようにするため、ファイルＣのＥｘａｃｔハッシュ値を算出し、Ｅｘａｃｔハッシュ値を削除部１２３へ送信する。以上より、一致したファイルのＥｘａｃｔハッシュ値、マルウェアファイルのＦＨ値、最適閾値、マルウェアの可能性が高いＦＨ値をクライアント装置１００の削除部１２３に送信する。本実施例ではＥｘａｃｔハッシュ値c4a85bb2e…、ＦＨ値7ad0e2ce7gd2…72cd 、7ad0e2ce7gd2…c62e、ファイル実行時刻２０１３年１月１３日２時１５分０秒、最適閾値＝３をクライアント装置１００の削除部１２３へ送信する。
【０２４９】
削除部は、ライン１１において、受信したファイルの実行時刻を基にファイルＤＢ１５１を参照し、前後６０分に作成されたファイルを取得する。本実施例では、以下の２つが該当する。
ファイルＩＤ＝４００、ファイルパス＝C:\MyDocument\C.exe、ファイル作成時刻＝２０１３年１月１４日２時１５分０秒
ファイルＩＤ＝５００、ファイルパス＝C:\MyDocument\C1.exe、ファイル作成時刻＝２０１３年１月１４日２時２１分３２秒
ファイルＩＤ＝６００、ファイルパス＝C:\MyDocument\Ａ1.exe、ファイル作成時刻＝２０１３年１月１４日２時２１分３３秒
ファイルＩＤ＝７００、ファイルパス＝C:\MyDocument\Ａ２.exe、ファイル作成時刻＝２０１３年１月１４日２時２１分３４秒
これら４つのファイルを取得する。
【０２５０】
削除部は、４つのファイルのＥｘａｃｔハッシュ値を算出する。
【０２５１】
比較した結果、受信したＥｘａｃｔハッシュ値は、ファイルＣのＥｘａｃｔハッシュ値と一致したため、ファイルＣを削除する。
【０２５２】
次に削除部は、ライン１２において、最適な閾値とファイル作成時刻が近いファイルをクライアント側ファジーハッシュ演算部１２４へ送信する。本実施例では、最適閾値である３とファイルＣ１をクライアント側ファジーハッシュ演算部１２４へ送信する。
【０２５３】
クライアント側ファジーハッシュ演算部は、ライン１３において演算したＦＨ値を削除部１２３へ送信する。
【０２５４】
削除部１２３では、ライン１４においてマルウェアの可能性が高いＦＨ値と、クライアント側ファジーハッシュ演算部１２４から受信したＦＨ値の比較を行う。本実施例ではファイルＣ１のＦＨ値＝7ad0e2ce7gd2…c62eとなり一致したため、ファイルＣ１とデフォルトＦＨ値を問い合わせ部１２５へ送信する。一方、クライアント装置１の処理時に、フィードバック部２２４にて最適閾値が改善されたため、ファイルＡ１、Ａ２のＦＨ値は7ad0e2ce7gd2…c62eとは一致しない。このため、問い合わせ部１２５へは送信されず、処理負荷が軽減される。
【０２５５】
問い合わせ部１２５では、ライン１５において削除部より受信した、ファイルＣ１とデフォルトＦＨ値をサーバ装置２００の受付部２２５へ送信する。
【０２５６】
受付部２２５では、受信したファイルＣ１のＥｘａｃｔハッシュ値を求め、ホワイトリストＤＢ２５２と参照する。ファイルＣ１の「Ｅｘａｃｔハッシュ値：a7b1e24…」はホワイトリストＤＢ２５２に存在しないため、ファイルＣ１をマルウェアファイルと見なす。さらに、ライン２０においてファイルＣ１と「デフォルト閾値＝7ad0e2ce7gd2…a7da」をブラックリストＤＢ２５４に記録する。また、ライン１７において、クライアント装置１００の問い合わせ部１２５にファイルＣ１の「Ｅｘａｃｔハッシュ値：a7b1e24…」をマルウェアファイルとのハッシュ値として、送信する。
【０２５７】
問い合わせ部１２５では、ライン１８においてサーバ装置２００より受信した「Ｅｘａｃｔハッシュ値：a7b1e24…」を削除部１２３へ送信する。
【０２５８】
削除部１２３では、受信した「Ｅｘａｃｔハッシュ値：a7b1e24…」に該当するファイルを削除する。
【０２５９】
＜＜別の実施例＞＞
本発明の別の実施例として、サーバ装置２００のフィードバック部２２４では、非特許文献２、非特許文献３などの複数種類のファジーハッシュ演算部を持っており、あるファジーハッシュ演算部を用いてフィードバック部２２４においてクラスタリングを行った際に、誤マッチが多い場合は別のファジーハッシュ演算部に切り替えることが可能である。その際、クライアント装置、サーバ装置でも同種のファジーハッシュ演算部に切り替えて演算を行う。
【符号の説明】
【０２６０】
１００：クライアント装置、２００：サーバ装置、３００：マルウェア外部検知装置、４００、５００：ネットワーク、１２１：ファイル作成監視部、１２２：ファイル実行監視部、１２３：削除部、１２４：クライアント側ファジーハッシュ演算部、１２５：問い合わせ部、１５１：ファイルＤＢ、２２１：中継部、２２２：送信部、２２３：サーバ側ファジーハッシュ演算部、２２４：フィードバック部、２２５：受付部、２５１：閾値ＤＢ、２５２：ホワイトリストＤＢ、２５３：誤マッチＤＢ、２５４：ブラックリストＤＢ、２５５：パラメータＤＢ
【図１】
2015011626.tif 000003
【図２】
2015011626.tif 000004
【図３】
2015011626.tif 000005
【図４】
2015011626.tif 000006
【図５】
2015011626.tif 000007
【図６Ａ】
2015011626.tif 000008
【図６Ｂ】
2015011626.tif 000009
【図７】
2015011626.tif 000010
【図８】
2015011626.tif 000011
【図９】
2015011626.tif 000012
【図１０】
2015011626.tif 000013
【図１１】
2015011626.tif 000014
【図１２】
2015011626.tif 000015
【図１３】
2015011626.tif 000016
【図１４】
2015011626.tif 000017
【図１５】
2015011626.tif 000018
【図１６】
2015011626.tif 000019
【図１７】
2015011626.tif 000020
【図１８】
2015011626.tif 000021
【図１９】
2015011626.tif 000022
【図２０】
2015011626.tif 000023
【図２１】
2015011626.tif 000024
【図２２】
2015011626.tif 000025
【図２３】
2015011626.tif 000026
【図２４】
2015011626.tif 000027
【図２５】
2015011626.tif 000028
【図２６】
2015011626.tif 000029
【図２７】
2015011626.tif 000030
【図２８】
2015011626.tif 000031