"少なくとも一つ以上のハッシュ係数を有したハッシュ関数を利用して、マルウェアパターンに対するハッシュ値とターゲットデータに対するハッシュ値とを生成するハッシュ値生成部と、前記マルウェアパターンのハッシュ値に、前記ターゲットデータのハッシュ値をマッチングさせるハッシュマッチャー部と、前記ハッシュマッチャー部によるマッチングが成功すると、前記マルウェアパターンと前記ターゲットデータとをマッチングさせるマッチング部とを備えるアンチマルウェアデバイス。前記ハッシュ係数及び/又はハッシュ関数は、前記マルウェアパターンに適用される複数のハッシュ関数から生成される各々のハッシュ衝突結果のうち、最小のハッシュ衝突結果に基づいて決まったことであることを特徴とする請求項1に記載のアンチマルウェアデバイス。前記ハッシュ係数及び/又はハッシュ関数は、ネットワークを介して接続したサーバから前記マルウェアパターンと共に受信されたことであることを特徴とする請求項1に記載のアンチマルウェアデバイス。前記ハッシュ値生成部は、前記サーバからアップデート用マルウェアパターンを受信する場合、前記アップデート用マルウェアパターンと共に送信されたハッシュ係数を利用して、前記ハッシュ値を再生成することを特徴とする請求項3に記載のアンチマルウェアデバイス。前記マルウェアパターンがアップデートされる場合、アップデート用マルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ係数及び/又はハッシュ関数も変更されることを特徴とする請求項1に記載のアンチマルウェアデバイス。前記変更されたハッシュ係数及び/又はハッシュ関数は、前記アップデート用マルウェアパターンに含まれており、前記ハッシュ値生成部は、前記アップデート用マルウェアパターンに含まれた変更されたハッシュ係数及び/又はハッシュ関数を利用してハッシュ値を再生成することを特徴とする請求項5に記載のアンチマルウェアデバイス。前記アップデート用マルウェアパターンからなるアップデート用マルウェアパターンDBは、ヘッダ情報が記載されるヘッダ項目と、前記変更されたハッシュ係数及び/又はハッシュ関数が記載されるハッシュ項目とを含むことを特徴とする請求項5に記載のアンチマルウェア端末装置。前記ハッシュ関数は、前記アンチマルウェアデバイスに送信するマルウェアパターンに対するハッシュ値を導出したとき、前記導出されるハッシュ値が相互衝突する確率が最小になるように決まることを特徴とする請求項1に記載のアンチマルウェアデバイス。前記ハッシュ値生成部から生成される前記マルウェアパターンに対するハッシュ値が互いに衝突する回数が基準値を超えるとき、前記ハッシュ係数及び/又はハッシュ関数に対するアップデートを要請するアップデート要請部をさらに備えることを特徴とする請求項1に記載のアンチマルウェアデバイス。前記マルウェアパターンは、ウイルススキャニングのためのウイルスパターン及び防火壁フィルタリングのためのルールパターンのうち、少なくとも一つを含み、前記ハッシュ係数は、前記ウイルススキャニングのためのウイルスハッシュ係数及び前記防火壁フィルタリングのためのルールハッシュ係数のうち、少なくとも一つを含むことを特徴とする請求項1に記載のアンチマルウェアデバイス。前記アンチマルウェアデバイスは、システムオンチップ、ノート型パソコン、デスクトップパソコン、スマートフォン、スマートカード及び半導体用IPチップのうちの何れか一つに該当することを特徴とする請求項1に記載のアンチマルウェアデバイス。ハッシュ係数を有したハッシュ関数を利用してマルウェアパターンマッチングを行うアンチマルウェアデバイスにマルウェアパターンを送信するサーバであって、前記アンチマルウェアデバイスにマルウェアパターンを送信するとき、前記ハッシュ係数を前記マルウェアパターンと共に送信するアップデート部を備えるサーバ。前記アップデート部が送信するハッシュ係数は、前記アンチマルウェアデバイスに送信されるマルウェアパターンのハッシュ値を算出するのに用いられることであることを特徴とする請求項12に記載のサーバ。前記アンチマルウェアデバイスに送信されるマルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ係数を選定するハッシュ係数選定部をさらに備え、前記アップデート部が送信するハッシュ係数は、前記ハッシュ係数選定部により選定されたハッシュ係数であることを特徴とする請求項12に記載のサーバ。前記ハッシュ係数選定部は、前記アンチマルウェアデバイスに送信するマルウェアパターンを前記ハッシュ関数に適用したとき、導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用するか、又は導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を選定することを特徴とする請求項14に記載のサーバ。前記ハッシュ係数選定部は、前記マルウェアパターンをアップデートするデータがある場合、アップデート用マルウェアパターンと前記アンチマルウェアデバイスが予め格納しているマルウェアパターン全部をハッシュ関数に適用したとき、導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用するか、又は導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を選定することを特徴とする請求項14に記載のサーバ。アンチマルウェアデバイスに送信するマルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ関数を選定するハッシュ関数選定部をさらに備えることができ、前記アップデート部は、前記ハッシュ関数選定部により選定されたハッシュ関数を、前記アンチマルウェアデバイスに送信するマルウェアパターンと共にアンチマルウェアデバイスに送信することを特徴とする請求項12に記載のサーバ。前記マルウェアパターンは、ウイルススキャニングのためのウイルスパターン及び防火壁フィルタリングのためのルールパターンのうち、少なくとも一つを含み、前記ハッシュ係数は、前記ウイルススキャニングのためのウイルスハッシュ係数及び前記防火壁フィルタリングのためのルールハッシュ係数のうち、少なくとも一つを含むことを特徴とする請求項12に記載のサーバ。ハッシュ係数を利用してマルウェアパターンマッチング動作を行う方法であって、マルウェアパターンのハッシュ値が相互衝突する確率が最小になるように、前記マルウェアパターンを参照して前記ハッシュ係数を選定するステップと、前記選定されたハッシュ係数を使用して、前記マルウェアパターンに対するハッシュ値を算出するステップと、前記マルウェアパターンに対するハッシュ値のうち、少なくとも一つと前記ターゲットデータに対するハッシュ値とがマッチングされる場合に、前記マルウェアパターンと前記ターゲットデータとをマッチングさせるステップとを含むマルウェアパターンマッチング方法。前記マルウェアパターンが変更されると、前記変更されたマルウェアパターンに対するハッシュ値が互いに衝突する確率が最小になるようにするハッシュ係数を再選定するステップをさらに含むことを特徴とする請求項19に記載のマルウェアパターンマッチング方法。前記再選定されたハッシュ係数を使用して、前記変更されたマルウェアパターンに対するハッシュ値を再算出するステップをさらに含み、前記再選定されるハッシュ係数は、前記変更されたマルウェアパターンを参照して選定されたことであることを特徴とする請求項20に記載のマルウェアパターンマッチング方法。前記ハッシュ係数を選定するステップは、用意した候補ハッシュ係数の各々を使用して、前記マルウェアパターンのハッシュ値を求めるステップと、前記候補ハッシュ係数の各々に対して求めたマルウェアパターンのハッシュ値の分散値が最も低い候補ハッシュ係数を、前記ターゲットデータのハッシュ値を求めるためのハッシュ係数として選定するステップとを含むことを特徴とする請求項19に記載のマルウェアパターンマッチング方法。ハッシュ関数を利用してマルウェアパターンのハッシュ値を計算するステップと、前記ハッシュ関数を利用してターゲットデータに対するハッシュ値を計算するステップと、前記マルウェアパターンに対するハッシュ値と前記ターゲットデータに対するハッシュ値とがマッチングされる場合に、前記マルウェアパターンと前記ターゲットデータとをマッチングさせるステップと、前記計算されたマルウェアパターンのハッシュ値が互いに衝突されるかどうかを判断するステップとを含むことを特徴とするハッシュ関数を利用したマルウェアパターンマッチング方法。判断結果、前記マルウェアパターンのハッシュ衝突回数が予め設定された基準回数より多い場合、前記ハッシュ関数又は前記ハッシュ関数を構成するハッシュ係数を再選定するステップを含むことを特徴とする請求項23に記載のマルウェアパターンマッチング方法。前記ハッシュ係数を再選定するステップは、候補ハッシュ係数を選定するステップと、前記候補ハッシュ係数を利用して、前記マッチングさせるステップにて使用されるマルウェアパターンに対するハッシュ値を求める第1ステップと、前記候補ハッシュ係数の中から、前記第1ステップにて求めたハッシュ値を比較して、ハッシュ衝突が最小になるようにするハッシュ係数を選定するステップとを含むことを特徴とする請求項24に記載のマルウェアパターンマッチング方法。前記ハッシュ係数を再選定するステップは、候補ハッシュ係数を選定するステップと、前記候補ハッシュ係数を利用して、前記マッチングさせるステップにて使用されるマルウェアパターンのハッシュ値を求める第1ステップと、前記第1ステップにて求めたハッシュ値に対する各々の分散値を求め、前記候補ハッシュ係数の中から前記分散値が最も小さなハッシュ係数を選定するステップとを含むことを特徴とする請求項24に記載のマルウェアパターンマッチング方法。そこで、本発明は従来の問題を解決するためになされたものであって、その目的は、サーバでハッシュ衝突を防止するためのハッシュ係数又はハッシュ関数を選定する作業を行い、選定されたハッシュ係数又はハッシュ関数をアンチマルウェアデバイスに送信することによって、ハッシュ衝突を最小化できるアンチマルウェアデバイス、サーバ及びマルウェアパターンマッチング方法を提供することにある。また、本発明の目的は、アンチマルウェアシステムのサーバからハッシュ係数を算出してクライアントでのハッシュ衝突を防止できるアンチマルウェアデバイス、サーバ及びマルウェアパターンマッチング方法を提供することにある。上記の目的を達成すべく、本発明は、少なくとも一つ以上のハッシュ係数を有したハッシュ関数を利用して、マルウェアパターンに対するハッシュ値とターゲットデータに対するハッシュ値とを生成するハッシュ値生成部と、前記マルウェアパターンのハッシュ値に、前記ターゲットデータのハッシュ値をマッチングさせるハッシュマッチャー部と、前記ハッシュマッチャー部によるマッチングが成功すると、前記マルウェアパターンと前記ターゲットデータとをマッチングさせるマッチング部とを備えるアンチマルウェアデバイスを提供する。一方、上記の目的を達成すべく、ハッシュ係数を有したハッシュ関数を利用してマルウェアパターンマッチングを行うアンチマルウェアデバイスにマルウェアパターンを送信するサーバは、前記アンチマルウェアデバイスにマルウェアパターンを送信するとき、前記ハッシュ係数を前記マルウェアパターンと共に送信するアップデート部を備える。上記の目的を達成すべく、ハッシュ係数を利用してマルウェアパターンマッチング動作を行う方法は、マルウェアパターンのハッシュ値が相互衝突する確率が最小になるように、前記マルウェアパターンを参照して前記ハッシュ係数を選定するステップと、前記選定されたハッシュ係数を使用して、前記マルウェアパターンに対するハッシュ値を算出するステップと、前記マルウェアパターンに対するハッシュ値のうち、少なくとも一つと前記ターゲットデータに対するハッシュ値とがマッチングされる場合に、前記マルウェアパターンと前記ターゲットデータとをマッチングさせるステップとを含む。一方、上記の目的を達成すべく、ハッシュ関数を利用してマルウェアパターンのハッシュ値を計算するステップと、前記ハッシュ関数を利用してターゲットデータに対するハッシュ値を計算するステップと、前記マルウェアパターンに対するハッシュ値と前記ターゲットデータに対するハッシュ値とがマッチングされる場合に、前記マルウェアパターンと前記ターゲットデータとをマッチングさせるステップと、前記計算されたマルウェアパターンのハッシュ値が互いに衝突されるかどうかを判断するステップとを含むハッシュ関数を利用したマルウェアパターンマッチング方法が提供される。本発明によれば、サーバ側のコンピュータ環境を利用してサーバでハッシュ衝突を最小化できる作業を行って最適のハッシュ係数HashCoefficient値を構成して、クライアントシグネチャーSignatureDBと共にクライアントに送信するために、従来のクライアント側の制限されたメモリ格納空間とコンピュータパワーによる問題を解決するという効果がある。これにより、本発明においてクライアントは、負荷消費が多く減少し、結果的な部分のみを処理すれば良いので、性能上の向上も期待することができる。また、本発明では、ハッシュ衝突が最小になるため、パターン検出時にも速く処理できるという効果がある。そして、小型コンピュータデバイスでは、ハッシュ衝突が少ないほどメモリ接近が少なくなるために、速い速度と少ないメモリ使用によってバッテリー消費も減らすことができるという効果がある。以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に送信させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第3の構成要素が介在されうることを意味する。本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される含むcomprises及び/又は含むcomprisingと言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。図1は、本発明の一実施の形態に係るアンチマルウェアシステムを示す図である。図1に示すように、アンチマルウェアシステムは、サーバ100及びアンチマルウェアデバイス200を備える。サーバ100とアンチマルウェアデバイス200とは、ネットワーク10を介して通信可能なように接続されることができる。サーバ100は、アンチマルウェアデバイス200にマルウェアパターンDBDatabaseと少なくとも一つのハッシュ係数を送信する。マルウェアパターンDBは、マルウェアパターンから構成されている。マルウェアパターンは、ウイルス、トロイの木馬、感染ファイル、悪性コードなどファイルに損傷を与えるデータである。マルウェアパターンは、アンチマルウェアデバイス200がターゲットデータのマルウェア感染有無を検出するために使用する基準データである。マルウェアパターンは、ウイルススキャニングのためのウイルスパターンと防火壁フィルタリングのためのルールパターンとを含むことができる。ウイルスパターンとルールパターンについては後述する。ハッシュ係数は、アンチマルウェアデバイス200からハッシュ値を算出する際に用いられる係数である。好ましくは、ハッシュ係数は、可能なかぎりハッシュ衝突を防止できる係数で選定される。本発明の一実施の形態によれば、ハッシュ係数は、マルウェアパターンのうち、ウイルスパターンを参照して選定されるウイルスハッシュ係数と、ルールパターンを参照して選定されるルールハッシュ係数とを含むことができる。サーバ100は、アップデート用マルウェアパターンが発生すると、ハッシュ係数を再選定し、アップデート用マルウェアパターンと再選定されたハッシュ係数を含むアップデート用マルウェアパターンDBをアンチマルウェアデバイス200に送信する。アンチマルウェアデバイス200は、少なくとも一つ以上のハッシュ係数を有するハッシュ関数を利用して、マルウェアパターンマッチングを行う。少なくとも一つ以上のハッシュ係数は、サーバ100から選定された係数である。このために、アンチマルウェアデバイス200は、サーバ100から受信されたマルウェアパターンDBに含まれたハッシュ係数をハッシュ関数の係数として使用し、マルウェアパターンをハッシュ関数の変数に代入して使用する。アンチマルウェアデバイス200は、システムオンチップ、ノート型パソコン、デスクトップパソコン、スマートフォン、スマートカード及び半導体用IPIntellectualPropertyチップのようなモバイル電子機器に該当できる。以下では、マルウェアパターン又は複数のマルウェアパターンは、たびたびマルウェアパターンデータと言及され、アンチマルウェアデバイス200に送信するマルウェアパターンデータ又はアンチマルウェアデバイス200が予め格納しているマルウェアパターンデータは、第1マルウェアパターンデータと言及され、アンチマルウェアデバイス200に送信するハッシュ係数は、第1ハッシュ係数と言及され、第1ハッシュ係数を有するハッシュ関数は、第1ハッシュ関数として言及される。また、以下の説明では、サーバ100からアンチマルウェアデバイス200に送信される第1マルウェアパターンデータがウイルスパターンデータであると、ウイルスパターンデータと共に送信される第1ハッシュ係数は、ウイルスハッシュ係数でありうる。また、サーバ100からアンチマルウェアデバイス200に送信される第1マルウェアパターンデータがルールパターンデータであると、ルールパターンデータと共に送信される第1ハッシュ係数は、ルールハッシュ係数でありうる。また、サーバ100からアンチマルウェアデバイス200に送信される第1マルウェアパターンデータがウイルスパターンデータとルールパターンデータをすべて含んでいると、共に送信される第1ハッシュ係数は、ウイルスハッシュ係数とルールハッシュ係数とを含むことができる。本発明の一実施の形態において、サーバ100は、ハッシュ係数選定部110及びアップデート部120を備える。ハッシュ係数選定部110は、第1マルウェアパターンデータにハッシュ関数を適用する場合、最小のハッシュ衝突結果を発生するハッシュ関数に基づいて、アンチマルウェアデバイス200に送信する第1ハッシュ係数を選定する。一例として、ハッシュ係数選定部110は、第1マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用して、第1ハッシュ係数を選定できる。詳細に説明すれば、ハッシュ係数選定部110は、用意した複数の候補ハッシュグループGN,N=1,2,...を使用して、第1マルウェアパターンデータのハッシュ値を求めることができる。各候補ハッシュグループは、少なくとも一つ以上の候補ハッシュ係数からなる。例えば、第1候補ハッシュグループG1は、候補ハッシュ係数{a1,b1,c1}を含み、第2候補ハッシュグループは、候補ハッシュ係数{a2,b2,c2}を含むと仮定する。ハッシュ係数選定部110は、ハッシュ関数に候補ハッシュグループG1,G2,...の候補ハッシュ係数を適用して、候補ハッシュグループの各々に対するハッシュ値を算出できる。このとき、ハッシュ係数選定部110は、アンチマルウェアデバイス200で使用中である第1マルウェアパターンデータを参照して、ハッシュ値を算出できる。ハッシュ係数選定部110は、ハッシュ値の衝突回数すなわち、ハッシュ衝突回数を候補ハッシュグループごとにカウントし、ハッシュ衝突が最も少ない候補ハッシュグループのハッシュ係数を第1ハッシュ係数として選定できる。又は、ハッシュ係数選定部110は、第1マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を第1ハッシュ係数として選定できる。すなわち、ハッシュ係数選定部110は、候補ハッシュグループの各々に対するハッシュ値が算出されると、ハッシュ値の分散値を候補ハッシュグループ別に算出する。ハッシュ係数選定部110は、候補ハッシュグループ別に算出された分散値のうち、最小の分散値が算出されるようにした候補ハッシュグループを確認し、該確認された候補ハッシュグループのハッシュ係数を第1ハッシュ係数として選定できる。アップデート部120は、アンチマルウェアデバイス200に第1マルウェアパターンデータを送信するとき、選定された第1ハッシュ係数をマルウェアパターンデータと共に送信できる。アップデート部120が送信する第1ハッシュ係数は、アンチマルウェアデバイス200に送信される第1マルウェアパターンデータのハッシュ値を算出するのに用いられることができる。図2は、本発明の実施の形態によってアンチマルウェアデバイスに送信されるマルウェアパターンデータのパケット及び/又はファイルの形態を説明するための図である。図2に示すように、パケット及び/又はファイルは、ヘッダ項目310、ハッシュ項目320及びデータ項目330を備える。アップデート部120は、ヘッダ項目310にヘッダ情報を記載し、ハッシュ項目320に第1ハッシュ係数を記載し、データ項目330に第1マルウェアパターンデータを記録する。アップデート部120は、各項目310、320、330にデータが記載されると、パケット及び/又はファイルをSVD形式でアンチマルウェアデバイス200に送信できる。一方、第1マルウェアパターンデータをアップデートするデータがある場合について説明すれば、以下のとおりである。以下では、第1マルウェアパターンデータのうち、アップデートされるデータをアップデート用マルウェアパターンデータとし、アップデート用マルウェアパターンデータをさらに参照して再選定されるハッシュ係数を第2ハッシュ係数とし、第2ハッシュ係数を有するハッシュ関数を第2ハッシュ関数とする。ハッシュ係数選定部110は、アップデート用マルウェアパターンデータと第1マルウェアパターンデータのすべてをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用して、第2ハッシュ係数を選定できる。又は、ハッシュ係数選定部110は、アップデート用マルウェアパターンデータと第1マルウェアパターンデータのすべてをハッシュ関数に適用したときに導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を第2ハッシュ係数として選定できる。アップデート部120は、選定された第2ハッシュ係数とアップデート用マルウェアパターンデータを共にアンチマルウェアデバイス200に送信できる。図2を参照して説明すれば、アップデート部120は、ヘッダ項目310にヘッダ情報を記載し、ハッシュ項目320に変更された第2ハッシュ係数を記載し、データ項目330にアップデート用マルウェアパターンデータを記載して、パケット及び/又はファイルをアンチマルウェアデバイス200に送信できる。再度図1に示すように、本発明の一実施の形態に係るアンチマルウェアデバイス200は、パターンDB210、ハッシュ値生成部220、パターンハッシュ値テーブル230、テーブル生成部240、第1ハッシュマッチャーテーブル250、第1サブマッチャーテーブル255、第2ハッシュマッチャーテーブル260、第2サブマッチャーテーブル265、ハッシュマッチャー部270及びマッチング部280を備えることができる。アンチマルウェアデバイス200は、サーバ100から第1マルウェアパターンデータと第1ハッシュ係数を含むマルウェアパターンDBを図2のようなSVD形式で受信する。マルウェアパターンDBのうち、第1マルウェアパターンデータは、パターンDB210形態でメモリ図示せずに格納され、第1ハッシュ係数は、ハッシュ値生成部220に入力される。パターンDB210は、サーバ100から受信された第1マルウェアパターンデータを格納する。第1マルウェアパターンデータは、ターゲットデータのマルウェア感染有無を検出するために、マッチング部280がターゲットデータとのマッチング動作を行う時に用いられることができる。サーバ100から受信された第1マルウェアパターンデータがウイルスパターンデータとルールパターンデータをすべて含んでいる場合、パターンDB210は、ウイルスパターンDBとルールパターンDBとを含むことができる。ウイルスパターンDBとルールパターンDBとは、システムオンチップSystem-on-chip、SOCに備えられたメモリ図示せずに格納されていることができる。ウイルスパターンDBは、ウイルスパターンデータの集合体であって、ターゲットデータに対してウイルススキャニング動作を行う時に用いられる。すなわち、ウイルスパターンデータは、ターゲットデータのウイルス感染有無を検出するために用いられる。ルールパターンDBは、ルールパターンデータを格納するデータベースである。ルールパターンデータは、外部から流入したパケットデータのフィルタリングのために、すなわち、パケットデータを遮断blockするか、又は通過allowさせるかを決定するために用いられる。ルールパターンデータは、ユーザにより直接設定されるか、又はサーバ100でデフォルトとして設定されてユーザデバイスに送信されることができる。ハッシュ値生成部220は、サーバ100から受信された少なくとも一つ以上の第1ハッシュ係数とパターンDB210に格納された第1マルウェアパターンデータとを利用して、第1マルウェアパターンデータに対するハッシュ値HPを生成できる。すなわち、ハッシュ値生成部220は、ウイルスパターンデータに対するハッシュ値HVを生成するか、又はルールパターンデータに対するハッシュ値HRを生成できる。したがって、以下の説明でハッシュ値HPは、ハッシュ値HV又はハッシュ値HRを意味できる。第1ハッシュ係数は、第1マルウェアパターンデータに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいてサーバ100で選定される。また、第1ハッシュ関数は、アンチマルウェアデバイス200に送信される第1マルウェアパターンデータに対するハッシュ値をランダムに導出したとき、導出されるハッシュ値が相互衝突する確率が最小になるように決まった関数である。ハッシュ値生成部220は、第1ハッシュ係数を有する第1ハッシュ関数を利用して、第1マルウェアパターンデータに対するハッシュ値を生成できる。まず、図3~図5を参照して、アンチマルウェアデバイス200がウイルスパターンデータとウイルスハッシュ係数を利用してウイルスパターンデータに対するハッシュ値を生成し、ウイルススキャニングを行う過程について説明する。図3は、ハッシュ値生成部が第1マルウェアパターンデータのうち、ウイルスパターンデータに対するハッシュ値を生成する一連の過程を示す模式図である。図3に示すように、ハッシュ関数フォーマットがfH=axbyczである場合、a,b,cは、ハッシュ係数、x,y,zは、変数である。したがって、サーバ100から受信された第1ハッシュ係数、すなわち、ウイルスハッシュ係数がa1,b1,c1である場合、ハッシュ値生成部220は、a1,b1,c1をそれぞれa,b,cに代入して、fH=a1xb1yc1zという第1ハッシュ関数を作ることができる。そして、ハッシュ値生成部220は、パターンDB210に格納されたウイルスパターンデータの値をx,y,zに入力して、ウイルスパターンデータの各々に対するハッシュ値HVを生成できる。変数として入力される値は、ウイルスパターンデータから入力されうるすべての場合の数を有することができる。すなわち、入力されうる場合の数が100個であると、1個のウイルスパターンデータに対するハッシュ値は、最大100個生成されることができる。すべてのウイルスパターンデータに対するハッシュ値HVが生成されると、ハッシュ値生成部220は、パターンハッシュ値テーブル230を生成できる。パターンハッシュ値テーブル230は、ハッシュ値生成部220から生成されたハッシュ値HV及びハッシュ値HVに対応するウイルスパターンデータのパターンをマッピングしたテーブルであって、メモリ図示せずにロードされることができる。図3において、ウイルスパターンデータのうち、いずれか一つのハッシュ値がXである場合、前記いずれか一つに該当するウイルスパターンデータのパターンは、abcdefgを有する。テーブル生成部240は、パターンハッシュ値テーブル230を参照して、第1ハッシュマッチャーテーブル250と第1サブマッチャーテーブル255とを生成できる。図4は、第1ハッシュマッチャーテーブルと第1サブマッチャーテーブルの一例を示す図である。図4の右側に示すテーブルを参照すると、テーブル生成部240は、第1ハッシュ関数から生成されうるすべてのハッシュ値HVがインデックスINDEXとして決まることができる。すなわち、テーブル生成部240は、第1ハッシュ関数に入力されうるすべてのウイルスパターンデータを入力する場合、生成されるすべてのハッシュ値をインデックスとして使用する。したがって、図4のインデックス項目には、図3において生成されたウイルスパターンデータのハッシュ値XとYが含まれている。テーブル生成部240は、パターンハッシュ値テーブル230のハッシュ値HVとすべてのインデックスとを比較して、ハッシュ値HVと同じインデックスがあると、その同じインデックスを1に設定する。Value0は、ハッシュ値HVと同じインデックスがない場合に使用され、1は、ハッシュ値HVと同じインデックスがある場合に使用される。図3のパターンハッシュ値テーブル230には、ハッシュ値HVとしてXとYとが含まれているので、図4の第1ハッシュマッチャーテーブル250には、インデックスXとYに1がチェックされている。また、テーブル生成部240は、パターンハッシュ値テーブル230と第1ハッシュマッチャーテーブル250とを利用して、第1サブマッチャーテーブル255を生成できる。第1サブマッチャーテーブル255は、マッチング部280においてウイルススキャニングのためにLPMLightPatternMatching及びEPMExactPatternMatchingのうち、少なくとも一つを行うのに使用されることができる。LPMとEPMについての説明は後述する。図5に示すように、テーブル生成部240は、第1ハッシュマッチャーテーブル250のすべてのインデックスのうち、ハッシュ値HVと一致するインデックスXとYを含むを基準に第1サブマッチャーテーブル255を生成できる。以下では、すべてのインデックスのうち、ハッシュ値HVと一致するインデックスをマッチングインデックスとする。テーブル生成部240は、マッチングインデックスに該当するウイルスパターンデータの各々の中間値middleと最後値tail、そしてウイルスパターンデータが格納されたアドレスを利用して、第1サブマッチャーテーブル255を生成できる。マッチングインデックスに該当するウイルスパターンデータの各々の中間値と最後値とは、パターンハッシュ値テーブル230を参照できる。例えば、マッチングインデックスがXである場合、Xのパターンは、abcdefgである。テーブル生成部240は、abcdefgのうち、中間値であるdと最後値であるgとをパターンハッシュ値テーブル230から確認することができる。図4のVirusPatternDataAddressは、ウイルスパターンデータが格納されたアドレスを意味する。offset1は、パターンの最初値と中間値までのオフセット、offset2は、パターンの最初値と最後値までのオフセットである。第1ハッシュマッチャーテーブル250からインデックスと同じハッシュ値HVが2つ以上発見されると、ハッシュ衝突が発生したと見なされる。衝突パターンのoffsetは、第1ハッシュマッチャーテーブル250からインデックスと同じハッシュ値HVが例えば2つ発見される場合、2つのハッシュ値HVのうち、いずれか一つに割り当てられるマッチングインデックスを意味する。2つのハッシュ値HPに該当するウイルスパターンデータは、互いに異なるので、2つのハッシュ値HV全部に対する中間値と最後値も異なりうる。したがって、テーブル生成部240は、2つのハッシュ値HVのうちのいずれか一つには、異なるマッチングインデックスを割り当てて第1サブマッチャーテーブル255を生成する。図5の場合、マッチングインデックスXの衝突パターンオフセットは、Zである。これは、Zというマッチングインデックスに同じハッシュ値HVがマッピングされていることを意味する。また、図1に示すように、ハッシュ値生成部220は、ウイルススキャニング対象であるターゲットデータを受け取って、ターゲットデータに対するハッシュ値をさらに生成できる。ターゲットデータは、予め定義されたサイズに分割されたサブデータS1,S2,S3,...からなることができる。このような場合、ハッシュ値生成部220は、サブデータを順次に受け取って各サブデータに対するハッシュ値HSを生成できる。ハッシュ値生成部220は、生成されたサブデータに対するハッシュ値HSをマッチング部280に提供できる。以下では、第1サブデータS1及び第1サブデータに対するハッシュ値HS1を例に挙げて説明する。ハッシュマッチャー部270は、ハッシュ値生成部220から第1サブデータに対するハッシュ値HS1を受け取ることができる。ハッシュマッチャー部270は、第1ハッシュマッチャーテーブル250のうち、1のチェックされたマッチングインデックス例えば、XとYに、第1サブデータのハッシュ値HS1をマッチングさせることができる。1のチェックされたマッチングインデックスは、ウイルスパターンデータのハッシュ値HVのうちの一部である。マッチングの成功有無は、ハッシュマッチャー部270と連動するハードウェア図示せずで判断できる。ハードウェアは、第1ハッシュマッチャーテーブル250のうち、1のチェックされたマッチングインデックス例えば、XとYに、第1サブデータのハッシュ値HS1と一致するマッチングインデックスがあると、マッチングが成功したと判断できる。例えば、第1サブデータのハッシュ値HS1がXである場合、マッチングインデックスにXが含まれていると、ハードウェアは、マッチングが成功したと判断される。ハッシュマッチャー部270によるマッチングが成功すると、マッチング部280は、ウイルスパターンデータのうち、少なくとも一つと第1サブデータのパターンとをマッチングさせることができる。詳細に説明すれば、マッチング部280は、ハッシュ値HS1と一致するマッチングインデックス例えば、Xに該当するウイルスパターンデータと第1サブデータのパターンとをマッチングする動作を行うことができる。これは、第1サブデータのハッシュ値HS1と一致するマッチングインデックスは、ウイルスパターンデータを第1ハッシュ関数に代入して生成されたハッシュ値であるためである。ウイルスパターンデータと第1サブデータのパターンとをマッチングした結果は、マルウェアの感染有無の判断に影響を及ぼす。このために、マッチング部280は、LPM方式及びEPM方式を使用することができる。LPM方式は、ウイルスパターンデータと第1サブデータの中間値と最後値を利用してパターンをマッチングする方式である。詳細に説明すれば、マッチング部280は、第1サブデータのハッシュ値HS1と一致するマッチングインデックス例えば、Xの中間値と最後値とを第1サブマッチャーテーブル255から確認する。また、マッチング部280は、入力される第1サブデータの中間値と最後値とを確認する。マッチング部280は、確認されたマッチングインデックスの中間値と第1サブデータの中間値とをマッチングさせ、マッチングインデックスの最後値と第1サブデータの最後値とをマッチングさせる。LPM方式を使用した結果、中間値が互いに一致しないか、又は最後値が互いに一致しないと、第1サブデータには、ウイルスパターンデータのパターンが存在しないことを意味する。したがって、第1サブデータは、マルウェアにより感染しない正常なデータとして判別できる。反面、LPM方式を使用した結果、中間値が互いに一致し、最後値が互いに一致すると、マッチング部280は、EPM方式を適用してパターンマッチング動作を行うことができる。詳細に説明すれば、マッチング部280は、LPM方式の結果、中間値と最後値とがすべて一致すると、ウイルスパターンデータと第1サブデータのすべての位置の値を利用してパターンをマッチングできる。このために、マッチング部280は、第1サブマッチャーテーブル255を参照してマッチングインデックスXにマッピング格納されたウイルスパターンデータのアドレスを確認する。マッチング部280は、確認されたアドレスに格納されたウイルスパターンデータのパターンをメモリ図示せずから読み込む。メモリには、パターンDB210又はパターンハッシュ値テーブル230がロードされていることができる。図5は、パターンDB210の一例を示す図である。マッチング部280は、該当アドレスに格納されたウイルスパターンデータの全体パターンabcdefgと第1サブデータの全体パターンとをマッチングさせる。以下、図6を参照してアンチマルウェアデバイス200がルールパターンデータとルールハッシュ係数とを利用してルールパターンデータに対するハッシュ値を生成し、フィルタリングを行う過程について説明する。図6は、第2ハッシュマッチャーテーブルと第2サブマッチャーテーブルの一例を示す図である。まず、ハッシュ値生成部220は、サーバ100から受信したルールハッシュ係数を前のハッシュ関数に適用して第1ハッシュ関数を作ることができる。そして、ハッシュ値生成部220は、パターンDB210に格納されたルールパターンデータの少なくとも一部の値を第1ハッシュ関数に入力して、ルールパターンデータの各々に対するハッシュ値HRを生成できる。これは、図3を参照して説明したハッシュ値HRの生成と似ている。すべてのルールパターンデータに対するハッシュ値HRが生成されると、ハッシュ値生成部220は、ルールパターンハッシュ値テーブル図示せずを生成できる。ルールパターンハッシュ値テーブル図示せずは、ハッシュ値生成部220から生成されたハッシュ値HR及びハッシュ値HRに対応するルールパターンデータのパターンをマッピングしたテーブルであって、メモリ図示せずにロードされうる。すべてのルールパターンデータに対するハッシュ値HRが生成されると、テーブル生成部240は、ルールパターンハッシュ値テーブル図示せずを参照して第2ハッシュマッチャーテーブル260と第2サブマッチャーテーブル265とを生成できる。図6に示すように、第2ハッシュマッチャーテーブル260は、インデックスキー値と存在有無を表す項目とを含む。テーブル生成部240は、第1ハッシュ関数から生成されうるすべてのハッシュ値HRをインデックスとして決めることができる。テーブル生成部240は、ルールパターンデータから生成されたハッシュ値HRとすべてのインデックスとを比較して、第2ハッシュマッチャーテーブル260を生成できる。図6において存在有無項目の値が1であるのは、インデックスと同じハッシュ値HRが存在し、0は、インデックスと同じハッシュ値HRが無いことを意味する。これは、図4を参照して説明した第1ハッシュマッチャーテーブル250の生成と似ている。図6の第2ハッシュマッチャーテーブル260には、インデックスXに1がチェックされているので、生成されたすべてのルールパターンデータに対するハッシュ値HRには、Xが存在することが分かる。また、テーブル生成部240は、ルールパターンハッシュ値テーブル図示せずと第2ハッシュマッチャーテーブル260とを利用して、第2サブマッチャーテーブル265を生成できる。テーブル生成部240は、第2ハッシュマッチャーテーブル260のすべてのインデックスのうち、ハッシュ値HRと一致するインデックスX、Aを含むを基準に第2サブマッチャーテーブル265を生成できる。以下、すべてのインデックスのうち、ハッシュ値HRと一致するインデックスをマッチングインデックスとする。第2サブマッチャーテーブル265は、IPとポートに対してのみサブSubを有し、各サブは、他の値から構成される。IPサブは、インデックス、中間値mid、最後値tail、すべてのプロトコルに適用されるルールパターンの存在有無ispro、すべてのポートに適用されるルールパターンの存在有無isport、実際パターンメモリアドレス、次のアドレスnextなどの値から構成される。ポートサブは、インデックス、IPハッシュ値、プロトコルハッシュ値protocolhash、実際パターンメモリアドレス、次のアドレスnextなどの値から構成される。IPサブの中間値は、IPアドレスの第3番目のバイト値を有し、最後値は、IPアドレスの最後のバイト値を有する。こういうバイトの位置選定により、IPv4の場合、ハッシュマッチャー部270にてIPの前の2バイト、中間値、最後値でIPアドレスに対する検証を行うことができる。マッチングインデックスに該当するルールパターンデータの中間値と最後値とは、ルールパターンデータであるパケットのヘッダから確認されることができる。ispro値は、すべてのプロトコルに適用されるルールパターンの存在有無isproを意味し、該当インデックス値の実際ルールパターン中に1個のプロトコルでもALLであると1、そうでないと0の値を有する。isproという要素を有するようになれば、フラグIP,Protocol,Portの範囲を該当IPのルールに合せて再構成できるようになる。例えば、[in,202.131.29.71,TCP,80,Allow]、[in,202.131.29.70,ALL,80,Allow]のようなルールパターンが2個あるときに、フラグIP,Protocol,Portは、Notall,ALL,Notallにセットされる。このとき、202.131.29.71には、Protocolに対してALLであるルールパターンがないので、isproが0になって、後にプロトコルフラグをNotallに変える。isport値は、すべてのポートに適用されるルールパターンの存在有無isportを意味し、該当インデックス値の実際ルールパターン中に1個のポートでもALLであると1、そうでないと0の値を有する。これは、isproの役割と似ている。実際パターンメモリアドレスは、該当ルールパターンデータが実際に格納されている所のメモリアドレス値を有し、次のアドレスnextは、第2サブマッチャーテーブル265のインデックスである1個のハッシュ値に複数のルールパターンが存在するとき、次のパターンサブを探索するのに必要な値である。次のアドレスnextは、第1サブマッチャーテーブル255の衝突パターンのoffsetと似ている。本発明におけるポートサブのIPハッシュ値とプロトコルハッシュ値とは、該当ルールのポートとIP、プロトコルの連関性を与えるためのものであり、ここで連関性を有する要素がない場合、結局は、ポートを中心にルールパターン全体を検索しなければならない。また、図1に示すように、ハッシュ値生成部220は、フィルタリング対象であるターゲットデータを受け取って、ターゲットデータに対するハッシュ値HFをさらに生成してマッチング部280に提供できる。ハッシュ値生成部220は、ターゲットデータのパケットのIPアドレス、ポート、プロトコルなど多様な情報の各々に対するハッシュ値HFを生成できる。第2ハッシュマッチャーテーブル260と第2サブマッチャーテーブル265とが生成されると、ハッシュマッチャー部270は、ハッシュ値生成部220からターゲットサブデータに対するハッシュ値HFを受け取ることができる。ハッシュマッチャー部270は、第2ハッシュマッチャーテーブル260のうち、1のチェックされたマッチングインデックス例えば、XとAに、ターゲットデータのハッシュ値HFをマッチングさせることができる。ハッシュマッチャー部270によるマッチングが成功すると、マッチング部280は、ハッシュ値HFと一致するマッチングインデックス例えば、Xに該当するルールパターンデータとターゲットデータのパターンとをマッチングして、フィルタリングを行うことができる。パターンマッチングのために、マッチング部280は、第2サブマッチャーテーブル265を参照してLPM方式及びEPM方式を使用することができる。これは、ウイルスパターンデータのパターンマッチングにおいて説明した方式と同様なので、詳細な説明は省略する。ハッシュマッチャー部270とマッチング部280とは、ハードウェアロジックで具現されることができる。パターンマッチングにより、ルールパターンデータとターゲットデータとのパターンが一致すると、ターゲットデータは遮断されうる。一方、また図1に示すように、第1マルウェアパターンデータがアップデートされる場合、すなわち、アップデート用マルウェアパターンデータがある場合、アップデート用マルウェアパターンデータの特性に基づいて第1ハッシュ係数及び第1ハッシュ関数も変更されうる。これは、アップデート用マルウェアパターンデータに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、サーバ100においてハッシュ係数を再生成するためである。再生成されるハッシュ係数又は変更された第1ハッシュ関数は、上述した第2ハッシュ係数である。したがって、サーバ100から提供される第2ハッシュ係数は、アップデート用マルウェアパターンデータに含まれている。ハッシュ値生成部220は、サーバ100からアップデート用マルウェアパターンデータを受信する場合、アップデート用マルウェアパターンデータと共に送信された第2ハッシュ係数を利用してハッシュ値を再生成できる。すなわち、ハッシュ値生成部220は、アップデート用マルウェアパターンデータと共にサーバ100から受信された第2ハッシュ係数を有する第2ハッシュ関数を利用して、ハッシュ値を再生成できる。したがって、アップデート用マルウェアパターンデータからなるアップデート用マルウェアパターンDBは、ヘッダ情報の記載されるヘッダ項目310と、第2ハッシュ係数の記載されるハッシュ項目320とを備えることができる。また、アップデート用マルウェアパターンデータは、パターンDB210に追加されることができる。その後、ハッシュ値生成部220、テーブル生成部240、ハッシュマッチャー部270及びマッチング部280の動作は、第1マルウェアパターンデータが入力された場合と似ているので、詳細な説明は省略する。上述した本発明の一実施の形態によれば、サーバ100は、アンチマルウェアデバイス200にハッシュ係数を含むマルウェアパターンデータを送信できる。アンチマルウェアデバイス200は、サーバ100から受信されたハッシュ係数を利用してハッシュ関数を決め、パターンマッチングを行うことができる。図7は、本発明の他の実施の形態に係るアンチマルウェアシステムを示す図である。図7に示すように、アンチマルウェアシステムは、サーバ600及びアンチマルウェアデバイス700を備える。アンチマルウェアシステムにおけるサーバ600とアンチマルウェアデバイス700とは、ネットワーク20を介して通信可能なように接続されることができる。図7に示すサーバ600及びアンチマルウェアデバイス700は、図1~図6を参照して説明したサーバ100及びアンチマルウェアデバイス200と似ているので、詳細な説明は省略する。ただし、図1のサーバ100は、ハッシュ係数を選定してアンチマルウェアデバイス700に送信する。反面、図7に示すサーバ600は、ハッシュ係数が適用されたハッシュ関数を選定して、アンチマルウェアデバイス700に送信できる。アンチマルウェアデバイス700は、受信されたハッシュ関数を利用して、第1マルウェアパターンデータのハッシュ値とターゲットデータのハッシュ値とを生成できる。このために、本発明の他の実施の形態に係るサーバ600は、ハッシュ関数選定部610及びアップデート部620を備える。ハッシュ関数選定部610は、第1マルウェアパターンデータを対象にアンチマルウェアエンジンからパターンデータをすべて検出しながら速く検索できる関数を選定し、このように選定された関数に対する最適の係数値をハッシュ係数として選定して、アンチマルウェアデバイス700に送信する第1ハッシュ関数を決めることができる。一例に、ハッシュ関数選定部610は、与えられた第1マルウェアパターンデータを対象にいくつかのハッシュ関数のうち、最適のパターン検出と速い検索を行うことのできる関数を選定する。そして、ハッシュ関数選定部610は、図1のハッシュ係数選定部110で使用したアルゴリズムを利用して第1ハッシュ係数を選定し、第1ハッシュ係数を既存のハッシュ関数にアップデートして、第1ハッシュ関数と第1ハッシュ係数とを選定できる。又は、ハッシュ関数選定部610は、図1のハッシュ係数選定部110から算出した分散値を利用して第1ハッシュ係数を選定し、第1ハッシュ係数を既存のハッシュ関数にアップデートして第1ハッシュ関数を選定できる。第1マルウェアパターンデータをアップデートするデータがある場合にも、ハッシュ関数選定部610は、新しいアップデート用マルウェアパターンデータとアンチマルウェアデバイス700に送信された第1マルウェアパターンデータを利用して、第2ハッシュ関数を再選定できる。アップデート部620は、アンチマルウェアデバイス700に第1マルウェアパターンデータを送信するとき、選定された第1ハッシュ関数をマルウェアパターンデータと共に送信できる。送信される第1ハッシュ関数は、アンチマルウェアデバイス700に送信される第1マルウェアパターンデータのハッシュ値を生成するのに使用されることができる。また、サーバ600は、アンチマルウェアデバイス700からの要請があると、必要なアップデート用マルウェアパターンデータと共にアップデート用ハッシュ関数をアンチマルウェアデバイス700に送信する。本発明の実施の形態において、サーバ600からアンチマルウェアデバイス700に送信される第1マルウェアパターンデータがウイルスパターンデータであると、ウイルスパターンデータと共に送信される第1ハッシュ関数は、ウイルスハッシュ関数でありうる。また、サーバ600からアンチマルウェアデバイス700に送信される第1マルウェアパターンデータがルールパターンデータであると、ルールパターンデータと共に送信される第1ハッシュ関数は、ルールハッシュ関数でありうる。また、サーバ600からアンチマルウェアデバイス700に送信される第1マルウェアパターンデータがウイルスパターンデータとルールパターンデータを全部含んでいると、共に送信される第1ハッシュ関数は、ウイルスハッシュ関数とルールハッシュ関数とを含むことができる。一方、本発明の他の実施の形態に係るアンチマルウェアデバイス700は、パターンDB710、ハッシュ値生成部720、パターンハッシュ値テーブル730、テーブル生成部740、第1ハッシュマッチャーテーブル750、第1サブマッチャーテーブル755、第2ハッシュマッチャーテーブル760、第2サブマッチャーテーブル765、ハッシュマッチャー部770、マッチング部780及びアップデート要請部790を備えることができる。図7のパターンDB710、パターンハッシュ値テーブル730、テーブル生成部740、第1ハッシュマッチャーテーブル750、第1サブマッチャーテーブル755、第2ハッシュマッチャーテーブル760、第2サブマッチャーテーブル765、ハッシュマッチャー部770、マッチング部780は、図1のパターンDB210、パターンハッシュ値テーブル230、テーブル生成部240、第1ハッシュマッチャーテーブル250、第1サブマッチャーテーブル255、第2ハッシュマッチャーテーブル260、第2サーブマッチャーテーブル265、ハッシュマッチャー部270及びマッチング部280と同一である。ただし、ハッシュ値生成部720は、サーバ600から受信された第1ハッシュ関数を利用して、第1マルウェアパターンデータのハッシュ値とサブデータのハッシュ値とを生成する。例えば、第1マルウェアパターンデータがウイルスパターンデータであると、ハッシュ値生成部720は、ウイルスハッシュ関数を利用してウイルスパターンデータに対するハッシュ値を生成する。アップデート要請部790は、ハッシュ値生成部720から生成された第1マルウェアパターンデータに対するハッシュ値が互いに衝突する回数が基準値を超えると、第1ハッシュ係数又は第1ハッシュ関数に対するアップデートをサーバ600に要請できる。また、アップデート要請部790は、第1ハッシュ係数だけでなく第1マルウェアパターンデータのアップデートをサーバ600に要請することもできる。アップデート要請部790は、選択的に備えられることができる。アップデート要請部790は、第1サブマッチャーテーブル755をモニターリングして、ハッシュ衝突回数をカウントできる。一例に、アップデート要請部790は、第1サブマッチャーテーブル755の衝突パターンオフセット項目に記載されるマッチングインデックスの個数をハッシュ衝突回数として使用することができる。又は、ハッシュ衝突回数は、カウンタ図示せずによりカウントできる。上述した本発明の他の実施の形態によれば、サーバ600は、アンチマルウェアデバイス700にハッシュ関数を含むマルウェアパターンデータを送信できる。アンチマルウェアデバイス700は、サーバ600から受信されたハッシュ関数を利用してハッシュ値を生成し、パターンマッチングを行うことができる。図8は、本発明の一実施の形態に係るマルウェアパターンマッチング方法のうち、サーバの動作を説明するためのフローチャートである。図8の動作は、図1又は図7を参照して説明したサーバ100、600のうちの何れか一つにより行われることができる。ステップS810にて、サーバは、複数の候補ハッシュグループGN,N=1,2,...を選定できる。例えば、第1候補ハッシュグループG1は、候補ハッシュ係数として{a1,b1,c1}を含み、第2候補ハッシュグループは、候補ハッシュ係数として{a2,b2,c2}を含むことができる。ステップS820にて、サーバは、候補ハッシュグループの各々に対するハッシュ値を算出できる。すなわち、サーバは、ハッシュ関数に候補ハッシュグループG1,G2,...の候補ハッシュ係数を適用して、候補ハッシュグループの各々に対するハッシュ値を算出できる。このとき、サーバは、アンチマルウェアデバイスにおいて使用中であるマルウェアパターンデータをハッシュ関数に代入して、ハッシュ値を算出できる。ステップS830にて、サーバは、候補ハッシュグループ別に算出されたハッシュ値を比較して、候補ハッシュグループ別に発生したハッシュ衝突回数を確認することができる。ステップS840にて、サーバは、ハッシュ衝突が最も少ない候補ハッシュグループを確認し、該確認された候補ハッシュグループの候補ハッシュ係数をアンチマルウェアデバイスに送信するハッシュ係数として選定できる。ステップS850にて、サーバは、ステップS840にて選定されたハッシュ係数、ステップS820にてハッシュ値算出時に参照したマルウェアパターンデータをアンチマルウェアデバイスに送信できる。一方、サーバが分散値を利用してハッシュ係数を選定する場合、サーバは、ステップS830及びステップS840の代りにステップS860及びステップS870を行うことができる。ステップS860にて、サーバは、ステップS820にて算出されたハッシュ値の分散値を候補ハッシュグループ別に算出できる。ステップS870にて、サーバは、候補ハッシュグループ別に算出された分散値のうち、最小の分散値を算出した候補ハッシュグループを確認し、該確認された候補ハッシュグループのハッシュ係数をアンチマルウェアデバイスに送信するハッシュ係数として選定できる。これにより、サーバは、マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするハッシュ係数を選定できる。また、サーバは、マルウェアパターンデータがウイルスパターンデータの場合、ウイルスパターンデータを考慮してウイルスハッシュ係数を選定し、マルウェアパターンデータがルールパターンデータの場合、ルールパターンデータを考慮してルールハッシュ係数を選定できる。図9は、本発明の一実施の形態に係るアンチマルウェアデバイスのマルウェアパターンマッチング方法を説明するためのフローチャートである。図9の動作は、図1又は図7を参照して説明したアンチマルウェアデバイス200、700のうちの何れか一つにより行われることができる。ステップS905にて、アンチマルウェアデバイスは、サーバからマルウェアパターンDBを受信することができる。マルウェアパターンDBは、ターゲットデータのマルウェア感染有無を判断するために、パターンマッチングに用いられるマルウェアパターンデータとハッシュ係数とを含む。ステップS905にて受信されるマルウェアパターンデータがウイルススキャニングのためのウイルスパターンデータである場合、ハッシュ係数は、ウイルスパターンデータを考慮して選定されたウイルスハッシュ係数である。また、受信されるマルウェアパターンデータがルールパターンデータである場合、ハッシュ係数は、ルールパターンデータを考慮して選定されたルールハッシュ係数でありうる。また、受信されるマルウェアパターンデータがウイルスパターンデータとルールパターンデータとをすべて含んでいる場合、共に送信されるハッシュ係数は、ウイルスハッシュ係数とルールハッシュ係数とを含むことができる。ステップS910にて、アンチマルウェアデバイスは、受信されたマルウェアパターンデータをパターンDBに格納又はアップデートする。また、ステップS915にて、アンチマルウェアデバイスは、ハッシュ関数のハッシュ係数を受信されたハッシュ係数に変更できる。ステップS920にて、アンチマルウェアデバイスは、受信されたハッシュ係数が適用されたハッシュ関数にマルウェアパターンデータを代入して、マルウェアパターンデータの各々に対するハッシュ値を生成し、生成されたハッシュ値を利用してパターンハッシュ値テーブルをアップデートできる。既存にパターンハッシュ値テーブルがない場合には、生成されたハッシュ値を利用してパターンハッシュ値テーブルを新規に生成できる。ステップS925にて、アンチマルウェアデバイスは、パターンハッシュ値テーブルを参照してハッシュマッチャーテーブルとサブマッチャーテーブルとをアップデートできる。既存にハッシュマッチャーテーブルとサブマッチャーテーブルとがない場合、アンチマルウェアデバイスは、ハッシュマッチャーテーブルとサブマッチャーテーブルとを新規に生成できる。これは、図4及び図5を参照して詳述される。ステップS930にて、アンチマルウェアデバイスは、ターゲットデータをサブデータ単位で受け取ってサブデータに対するハッシュ値を生成できる。アンチマルウェアデバイスは、ステップS915にてアップデートされたハッシュ関数にサブデータを代入して、ハッシュ値を生成できる。ステップS935にて、アンチマルウェアデバイスは、ハッシュ値のマッチング動作を行う。すなわち、アンチマルウェアデバイスは、ハッシュマッチャーテーブルのうち、マッチングインデックスすなわち、ハッシュマッチャーテーブルのうち、1がチェックされたインデックスに、生成されたサブデータのハッシュ値をマッチングさせることができる。ステップS940にて、アンチマルウェアデバイスは、マッチングインデックスのうち、何れか一つとサブデータのハッシュ値との一致有無を判断できる。判断結果、サブデータのハッシュ値がマッチングインデックスのうち、何れか一つと一致するとS940-Y、ステップS945にて、アンチマルウェアデバイスは、LPM動作を行うことができる。LPM方式は、マルウェアパターンデータとサブデータの中間値と最後値とを利用してパターンをマッチングする方式である。ステップS950にて、アンチマルウェアデバイスは、マルウェアパターンデータとサブデータの中間値との一致有無と、マルウェアパターンデータとサブデータの最後値との一致有無を判断できる。判断結果、中間値と最後値がすべて一致するとS950-Y、ステップS955にて、アンチマルウェアデバイスは、EPM動作を行うことができる。EPM方式は、マルウェアパターンデータとサブデータのすべての位置の値を利用して、パターンをマッチングする方式である。ステップS960にて、アンチマルウェアデバイスは、マルウェアパターンデータとサブデータの全体が一致するかどうかを判断できる。判断結果、全体が一致するとS960-Y、ステップS965にて、アンチマルウェアデバイスは、サブデータがマルウェアパターンに該当すると判断できる。反面、全体のうちの何れか一つの値でも一致しないとS960-N、ステップS970にて、アンチマルウェアデバイスは、サブデータが正常なパターンに該当すると判断できる。一方、ステップS940及びS950での結果が一致しない場合、ステップS975にて、アンチマルウェアデバイスは、現在処理されたサブデータがターゲットデータの最後のサブデータであるかどうかを判断する。最後のサブデータではないと、アンチマルウェアデバイスは、ステップS935に進んで次のサブデータに対するパターンマッチングを行う。図10は、本発明の一実施の形態に係るアンチマルウェアシステムのマルウェアパターンマッチング方法のうち、アップデート方法を説明するためのフローチャートである。図10の動作は、図1又は図7を参照して説明したサーバ100、600のうちの何れか一つと、アンチマルウェアデバイス200、700のうちの何れか一つにより行われることができる。ステップS1010にて、アンチマルウェアデバイスは、ハッシュ衝突が発生すると、ステップS1020にてハッシュ衝突回数をカウント又は確認することができる。アンチマルウェアデバイスは、ステップS920にて生成されたマルウェアパターンデータに対するハッシュ値が互いに衝突する回数をカウントできる。アンチマルウェアデバイスは、ステップS925にて生成されたサブマッチャーテーブルの衝突パターンオフセットの回数からハッシュ衝突回数が分かる。ステップS1030にて、アンチマルウェアデバイスは、ステップS1020にて確認されたハッシュ衝突回数と基準値とを比較できる。比較結果、ステップS1020にて確認されたハッシュ衝突回数が基準値を超えるとS1030-Y、ステップS1040にて、アンチマルウェアデバイスは、サーバにマルウェアパターンデータとハッシュ係数のアップデートを要請できる。ステップS1050にて、サーバは、アンチマルウェアデバイスの要請により、ハッシュ衝突が発生する確率が最小になるようにするハッシュ係数又はハッシュ関数を再選定できる。サーバは、以前に参照したマルウェアパターンデータとアップデート用マルウェアパターンデータとを参照して、ハッシュ係数又はハッシュ関数を再選定できる。これは、図8の過程と似ていることができる。ステップS1060にて、サーバは、ステップS1050にて参照したアップデート用マルウェアパターンデータと再選定されたハッシュ係数又はハッシュ関数をアンチマルウェアデバイスに送信できる。図11は、本発明の他の実施の形態に係るアンチマルウェアシステムを示す図である。図11に示すように、アンチマルウェアシステムは、サーバ1100及びクライアント1200を備える。サーバ1100は、マルウェアパターンDBをアップデートし、クライアント1200からマルウェアを検出する過程においてハッシュ衝突が発生するのを防止するために、ハッシュ衝突を防止できるハッシュ係数を算出し、算出されたハッシュ係数をクライアント1200に送信する。サーバ1100は、図1及び図7を参照して説明したサーバ100、600のうちの何れか一つであるか、又は同様に動作できる。また、マルウェアパターンDBは、図1及び図7を参照して説明したマルウェアパターンDBでありうる。クライアント1200は、サーバ1100からマルウェアパターンDBをダウンロードして、マルウェアの感染有無を検出できる。クライアント1200は、図1及び図7を参照して説明したアンチマルウェアデバイス200、700のうちの何れか一つであるか、又は同様に動作できる。ただし、クライアント1200は、システムオンチップSystem-on-chip、SOC形態で具現されることができる。本発明の実施の形態においてサーバ1100は、クライアント1200からアップデート要請があると、必要なアップデート情報と共にハッシュ係数をクライアント1200に送信できる。アップデート情報は、サーバ1100から選定されたハッシュ係数又はハッシュ関数とマルウェアパターンデータを含むことができる。サーバ1100は、マルウェアパターンDBをアップデートするためのアップデート部1110と、ハッシュ係数を計算するための衝突回避部1120とを備えてなる。アップデート部1110は、図1及び図7のアップデート部120、620のうち、少なくとも一つで行う機能をさらに提供できる。アップデート部1110は、マルウェアパターン入力処理部1111、ブロック生成処理部1112及びアップデート情報構成部1114を備える。マルウェアパターン入力処理部1111は、クライアント1200に送信するマルウェアパターンデータの入力を処理する。ブロック生成処理部1112は、ブロックを生成し、アップデート情報構成部1114は、アップデート情報を構成する。一例に、アップデート情報構成部1114は、ハッシュ係数選定部1122から選定されたハッシュ係数及びハッシュ関数選定部1123から選定されたハッシュ関数のうちの何れか一つをハッシュ項目320に記載し、マルウェアパターンデータをデータ項目330に記載してアップデート情報、すなわち、マルウェアパターンDBを構成できる。衝突回避部1120は、累積ブロックDB1121、ハッシュ係数選定部1122及びハッシュ関数選定部1123を備える。累積ブロックDB1121は、累積ブロック情報を格納する。ハッシュ係数選定部1122は、ハッシュ係数を選定し、ハッシュ関数選定部1123は、ハッシュ関数を選定する。ハッシュ係数選定部1122は、図1のハッシュ係数選定部110の機能を行うことができる。すなわち、ハッシュ係数選定部1122は、マルウェアパターンデータに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、クライアント1200に送信するハッシュ係数を選定できる。一例に、ハッシュ係数選定部1122は、マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用して、ハッシュ係数を選定できる。又は、ハッシュ係数選定部1122は、マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値の分散値を利用して、ハッシュ係数を選定できる。ハッシュ関数選定部1123は、図7のハッシュ関数選定部610の機能を行うことができる。すなわち、ハッシュ関数選定部1123は、ハッシュ係数選定部1122で使用する方式でハッシュ係数を選定し、該選定されたハッシュ係数が適用されるハッシュ関数を選定する。一方、クライアント1200は、アンチマルウェアアプリケーション部1210及びアンチマルウェアシステムオンチップSystem-on-chip部1220を備える。アンチマルウェアアプリケーション部1210は、アンチマルウェアに必要な環境設定及びドライバーを提供できる。このために、アンチマルウェアアプリケーション部1210は、環境設定及びDBアップデート要請部1211、DB処理モジュール1212、SOC呼び出し部1213及びスキャンキュー及びドライバーモジュール1214を備える。環境設定及びDBアップデート要請部1211は、アンチマルウェア動作のための環境を設定し、サーバ1100にマルウェアパターンDBのアップデートを要請できる。環境設定及びDBアップデート要請部1211は、図7のアップデート要請部790の機能をさらに提供できる。DB処理モジュール1212は、マルウェアパターンDB、すなわち、マルウェアパターンデータとハッシュ関数又はハッシュ係数を管理できる。SOC呼び出し部1213は、SOCを呼び出す。スキャンキュー及びドライバーモジュール1214は、クライアント1200でパターンマッチングを行うのに必要な各種ドライバーを提供及び/又は駆動できる。アンチマルウェアシステムオンチップ部1220は、マルウェアパターンDBを利用して、マルウェアに感染したデータを検出する。このために、アンチマルウェアシステムオンチップ部1220は、検索エンジン1211、パターンマッチングモジュール1222、DBマネジャーモジュール1223、ファイルデータ処理モジュール1224、パケットデータ処理モジュール1225及び防火壁ルールマネジャーモジュール1226を備える。検索エンジン1211は、マルウェアパターンの検索を担当する。検索エンジン1211は、図1及び図7のハッシュ値生成部220、720、テーブル生成部240、740及びハッシュマッチャー部270、770の機能を行うハードウェアでありうる。したがって、検索エンジン1211は、マルウェアパターンデータのハッシュ値とサブデータのハッシュ値とを生成し、パターンハッシュ値テーブルを生成し、ハッシュ値マッチングを行うことができる。パターンマッチングモジュール1222は、マルウェアパターンデータとサブデータとのパターンマッチングを行う。パターンマッチングモジュール1222は、図1及び図7のマッチング部280、780に該当できる。DBマネジャーモジュール1223は、マルウェアパターンDBを管理する。例えば、DBマネジャーモジュール1223は、検索エンジン1211でハッシュ値を生成するように、マルウェアパターンデータをメモリ図示せずにロードできる。ファイルデータ処理モジュール1224は、ファイルデータを処理し、パケットデータ処理モジュール1225は、パケットデータを処理する。例えば、パケットデータ処理モジュール1224は、ターゲットデータを一定単位を有するサブデータに分割できる。各々のサブデータは、検索エンジン1211に提供されてサブデータに対するハッシュ値を生成する場合に使用される。防火壁ルールマネジャーモジュール1226は、防火壁ルールを管理する。以下では、図11のような構造を有するアンチマルウェアシステムにおけるハッシュ衝突を防止するための方法を図12~図16を参照して説明する。図12~図16は、本発明の他の実施の形態に係るアンチマルウェアシステムにおけるハッシュ衝突防止方法を説明するためのフローチャートである。図12~図16のハッシュ衝突防止方法を行うアンチマルウェアシステムは、図11に示すサーバ1100とクライアント1200とを備えるシステムでありうる。図12は、本発明の他の実施の形態に係るアンチマルウェアシステムにおけるハッシュ衝突防止方法を行う基本プロセスを示すフローチャートである。図12に示すように、サーバは、マルウェアパターンDBのブロック化のための基礎値をセットして初期化するS1201。新しいマルウェアパターンデータ、すなわち、アップデート用マルウェアパターンデータが入力されるS1203と、サーバは、新しいブロック作業が必要であるかどうかを確認するS1205。新しいブロック作業が必要な場合、サーバは、マルウェアパターンデータを決まったフォーマットにDB化して、マルウェアパターンDBに格納するS1207。そして、サーバは、マルウェアパターンデータに対して新しいブロック生成プロセスを実施してブロックを生成するS1209。サーバは、ステップS1209にて生成されたブロックに対するハッシュ衝突を回避するための衝突回避プロセスを実施するS1211。衝突回避プロセスの実施により、サーバは、ハッシュ係数を選定できる。また、ステップS1211には、図示していないが、衝突回示プロセスの実施により、サーバは、ハッシュ関数を選定することもできる。次に、サーバは、衝突回避プロセスを介して選定されたハッシュ係数又はハッシュ関数を格納するS1213。図13は、本発明の他の実施の形態に係るステップS1209であるブロック生成プロセスを説明するためのフローチャートである。図13に示すように、サーバは、ステップS1207にてDB化されて格納されたマルウェアパターンデータを読むS1301。そして、サーバは、マルウェアパターンデータからブロック化するデータを抽出するS1303。例えば、サーバは、マルウェアパターンデータにある位置location、OS情報、入力時期によって、locationID_OSID_YYYYMMDD形態のブロックIDBlockIDを前記ブロック化するデータとして抽出できる。仮に、抽出されたブロックIDと同じブロックIDが既に存在していると、サーバは、抽出されたブロックのバージョンをアップグレードできる。以後、サーバは、該当ブロックに対する大きさ及びデータ、md5値、使用有無、入力者、入力時期に対して入力する。次に、サーバは、ステップS1303にて抽出されたデータを利用してブロックを生成するS1305。そして、サーバは、生成されたブロックデータをマルウェアパターンDBに格納するS1307。図14は、本発明の他の実施の形態に係るステップS1211である衝突回避プロセスを説明するためのフローチャートである。図14に示すように、サーバは、マルウェアパターンDBからブロックデータを確認するS1401。サーバは、ブロックデータを介して新しく追加されたブロックがあるかどうかを確認するS1403。新しく追加されたブロックがあると、サーバは、追加されたブロックのブロックデータを全体マルウェアパターンDBに追加するS1405。サーバは、マルウェアパターンDBにあるマルウェアパターンデータに対するハッシュ係数を計算するために初期化を実施するS1407。そして、サーバは、複数の候補係数値を選定するS1409。複数の候補係数値は、図1を参照して説明した、各々1個以上の候補ハッシュ係数を有する複数の候補ハッシュグループGN,N=1,2,...のような形態を有することができる。サーバは、ステップS1409にて選定された候補係数値を利用して、マルウェアパターンデータに対してハッシュ関数処理を行うS1411。サーバは、ステップS1411のハッシュ関数処理結果を比較して、ハッシュ衝突を最小化させるハッシュ係数を選定するS1413。図15は、本発明の他の実施の形態に係るステップS1411であるハッシュ関数処理過程を説明するためのフローチャートである。図15に示すように、サーバは、メモリ格納場所の大きさ及び係数値の範囲を含む情報を初期化するS1501。そして、サーバは、係数マトリックスとハッシュ関数テーブルとを構成するS1503、S1505。係数マトリックスは、ステップS1409にて選定された複数の候補係数値を有する候補ハッシュグループでありうる。例えば、係数マトリックスは、G1={a1,b1,c1},G2={a2,b2,c2},G3={a3,b3,c3},...であって、複数で構成されることができる。サーバは、マルウェアパターンDBからマルウェアパターンデータを読み込むS1507。そして、サーバは、読み込んだマルウェアパターンデータをハッシュ関数に適用できる形態に変換するS1509。サーバは、ハッシュ関数に係数マトリックスの候補係数値と変換させたマルウェアパターンデータとを適用してハッシュ値を求め、該求めたハッシュ値をハッシュ関数テーブルに適用するS1511。ステップS1511にてサーバは、候補ハッシュグループ別にハッシュ値を求め、ハッシュ関数テーブルに適用する。サーバは、ハッシュ関数テーブルの値に対する分散値を求めるS1513。すなわち、サーバは、候補ハッシュグループの各々に対するハッシュ値が算出されると、ハッシュ値の分散値を候補ハッシュグループ別に算出する。次に、サーバは、候補ハッシュグループ別に算出された分散値の中から最小分散値を表す係数マトリックスを選定するS1515。選定された係数マトリックスをなす候補係数は、クライアントに送信されるハッシュ係数である。一方、本発明においてクライアント1200は、アップデートを受けようとする時点にサーバ1100にアップデートを要請する。このとき、クライアント1200自身が有したチェックサムchecksum、デバイス実行環境、位置location情報、バージョンIDversionIDをサーバ1100に送信できる。アップデート部1110は、受信した情報からクライアント1200の変化有無を判断し、変化があるときには、位置決定器locationdeciderを実行して、正確な位置をセットする。その後、サーバ1100は、アップデート情報構成部1114を実行して、クライアント1200に必要なブロック情報とそれに応じる作業種類append/download/add/delete/replace、アップデート用マルウェアパターンデータ及びそれに応じて再選定されたハッシュ係数も共にクライアント1200に送信する。該当情報を受信したクライアント1200は、ブロックと作業情報で自身のブロックに対するアップデートを実施した後、結果をサーバ1100側に送信し、サーバ1100は、これを格納し作業を終了する。図16は、本発明の他の実施の形態に係るサーバで行うアップデート過程を示すフローチャートである。図16に示すように、サーバは、クライアントから最後のアップデート情報の変化があるかどうかを確認するS1601。変化があると、サーバは、クライアントのアップデート情報をアップデートするS1619。アップデート情報の変化がないと、サーバは、クライアントにブロックが存在しているかどうかを確認するS1603。クライアントにブロックが存在すると、サーバは、ブロック情報を基準にバージョンIDが異なるか、それともブロック個数が異なるかを確認するS1605。バージョンIDが異なると、サーバは、クライアントブロックに対する情報をクライアントに要請するS1613。そして、サーバは、クライアントから該当ブロック情報を受け付けるS1615。サーバは、ブロック別に作業種類Add/remove/replace/updateを判断して、該当作業に必要な情報を構成するS1617。ステップS1605にてブロック個数が異なると、サーバは、ブロック付加Append情報を構成するS1607。そして、サーバは、クライアントに送信するブロックに対するハッシュ係数を読み込むS1609。サーバは、読み込んだハッシュ係数を利用して、ブロック別にアップデートする最終情報を構成してクライアントに送信するS1611。以後サーバは、再度ステップS1601に戻ってプロセスを繰り返す。ステップS1603にて、クライアント1200にブロックが存在しないと、サーバは、直にステップS1609に進む。以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。"