(57)【特許請求の範囲】
【請求項１】
少なくとも一つ以上のハッシュ係数を有したハッシュ関数を利用して、マルウェアパターンに対するハッシュ値とターゲットデータに対するハッシュ値とを生成するハッシュ値生成部と、
前記マルウェアパターンのハッシュ値と、前記ターゲットデータのハッシュ値とをマッチングさせるハッシュマッチャー部と、
前記ハッシュマッチャー部によるマッチングが成功すると、前記マルウェアバターンと前記ターゲットデータとをマッチングさせるマッチング部とを備え、
前記ハッシュ係数及び／又はハッシュ関数は、ネットワークを介して接続したサーバから前記マルウェアパターンと共に受信されたものであり、
前記マルウェアパターンがアップデートされる場合、アップデート用マルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ係数及び／ 又はハッシュ関数も変更されることを特徴とするアンチマルウェアデバイス。
【請求項２】
前記ハッシュ係数及び／又はハッシュ関数は、前記マルウェアパターンに適用される複数のハッシュ関数から生成される各々のハッシュ衝突結果のうち、最小のハッシュの衝突結果に基づいて決まったことであることを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項３】
前記ハッシュ値生成部は、
前記サーバからアップデート用マルウェアパターンを受信する場合、前記アップデート用マルウェアバターンと共に送信されたハッシュ係数を利用して、前記ハッシュ値を再生成することを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項４】
前記変更されたハッシュ係数及び／又はハッシュ関数は、前記アップデート用マルウェアパターンに含まれており、
前記ハッシュ値生成部は、前記アップデート用マルウェアパターンに含まれた変更されたハッシュ係数及び／又はハッシュ関数を利用してハッシュ値を再生成することを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項５】
前記アップデート用マルウェアパターンからなるアップデート用マルウェアパターンＤＢは、ヘッダ情報が記載されるヘッダ項目と、前記変更されたハッシュ係数及び／又はハッシュ関数が記載されるハッシュ項目とを含むことを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項６】
前記ハッシュ関数は、前記アンチマルウェアデバイスに送信するマルウェアパターンに対するハッシュ値を導出したとき、前記導出されるハッシュ値が相互衝突する確率が最小になるように決まることを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項７】
前記ハッシュ値生成部から生成される前記マルウェアパターンに対するハッシュ値が互いに衝突する回数が基準値を超えるとき、前記ハッシュ係数及び／ 又はハッシュ関数に対するアップデートを要請するアップデート要請部をさらに備えることを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項８】
前記マルウェアパターンは、ウイルススキャニングのためのウイルスパターン及びファイアウォールフィルタリングのためのルールパターンのうち、少なくとも一つを含み、前記ハッシュ係数は、前記ウイルススキャニングのためのウイルスハッシュ係数及び前記ファイアウォールフィルタリングのためのルールハッシュ係数のうち、少なくとも一つを含むことを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項９】
前記アンチマルウェアデバイスは、システムオンチップ、ノート型パソコン、デスクトップパソコン、スマートフオン、スマートカード及び半導体用ＩＰチップのうちの何れか一つに該当することを特徴とする請求項１に記載のアンチマルウェアデバイス。
【請求項１０】
ハッシュ係数を有したハッシュ関数を利用してマルウェアパターンマッチングを行うアンチマルウェアデバイスにマルウェアパターンを送信するサーバであって、
前記アンチマルウェアデバイスにマルウェアパターンを送信するとき、前記ハッシュ係数を前記マルウェアパターンと共に送信するアップデート部を備え、
前記アップデート部が送信するハッシュ係数は、前記アンチマルウェアデバイスに送信されるマルウェアパターンのハッシュ値を算出するのに用いられ、
前記アンチマルウェアデバイスに送信されるマルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ係数を選定するハッシュ係数選定部をさらに備え、
前記アップデート部が送信するハッシュ係数は、前記ハッシュ係数選定部により選定されたハッシュ係数であることを特徴とするサーバ。
【請求項１１】
前記ハッシュ係数選定部は、
前記アンチマルウェアデバイスに送信するマルウェアパターンを前記ハッシュ関数に適用したとき、導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用するか、又は導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を選定することを特徴とする請求項１０に記載のサーバ。
【請求項１２】
前記ハッシュ係数選定部は、
前記マルウェアパターンをアップデートするデータがある場合、アップデート用マルウェアパターンと前記アンチマルウェアデバイスが予め格納しているルウェアパターン全部をハッシュ関数に適用したとき、導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用するか、又は導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を選定することを特徴とする請求項１０に記載のサーバ。
【請求項１３】
アンチマルウェアデバイスに送信するマルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ関数を選定するハッシュ関数選定部をさらに備えることができ、
前記アップデート部は、前記ハッシュ関数選定部により選定されたハッシュ関数を、前記アンチマルウェアデバイスに送信するマルウェアパターンと共にアンチマルウェアデバイスに送信することを特徴とする請求項１０に記載のサーバ。
【請求項１４】
前記マルウェアパターンは、ウイルススキャニングのためのウイルスパターン及びファイアウォールフィルタリングのためのルールパターンのうち、少なくとも一つを含み、前記ハッシュ係数は、前記ウイルススキャニングのためのウイルスハッシュ係数及び前記ファイアウォールフィルタリングのためのルールハッシュ係数のうち、少なくとも一つを含むことを特徴とする請求項１０に記載のサーバ。
【請求項１５】
ハッシュ係数を利用してマルウェアパターンマッチング動作を行う方法であって、
マルウェアパターンのハッシュ値が相互衝突する確率が最小になるように、前記マルウェアパターンを参照して前記ハッシュ係数を選定するステップと、
前記選定されたハッシュ係数を使用して、前記マルウェアパターンに対するハッシュ値を算出するステップと、
前記マルウェアパターンに対するハッシュ値のうち、少なくとも一つと前記
ターゲットデータに対するハッシュ値とのマッチングが成功すると、前記マルウェアパターンと前記ターゲットデータとをマッチングするステップと、
前記マルウェアパターンが変更されると、前記変更されたマルウェアパターンに対するハッシュ値が互いに衝突する確率が最小になるようにするハッシュ係数を再選定するステップとを含むマルウェアパターンマッチング方法。
【請求項１６】
前記再選定されたハッシュ係数を使用して、前記変更されたマルウェアパターンに対するハッシュ値を再算出するステップをさらに含み、  
前記再選定されるハッシュ係数は、前記変更されたマルウェアパターンを参照して選定されたことであることを特徴とする請求項１５に記載のマルウェアパターンマッチング方法。
【請求項１７】
前記ハッシュ係数を選定するステップは、
用意した候補ハッシュ係数の各々を使用して、前記マルウェアパターンのハッシュ値を求めるステップと、
前記候補ハッシュ係数の各々に対して求めたマルウェアパターンのハッシュ値の分散値が最も低い候補ハッシュ係数を、前記ターゲットデータのハッシュ値を求めるためのハッシュ係数として選定するステップとを含むことを特徴とする請求項１５に記載のマルウェアパターンマッチング方法。
【請求項１８】
ハッシュ関数を利用してマルウェアパターンのハッシュ値を計算するステップと、
前記ハッシュ関数を利用してターゲットデータに対するハッシュ値を計算するステップと、
前記マルウェアパターンに対するハッシュ値と前記ターゲットデータに対するハッシュ値とのマッチングが成功すると、前記マルウェアパターンと前記ターゲットデータとをマッチングするステップと、
前記計算されたマルウェアパターンのハッシュ値が互いに衝突されるかどうかを判断するステップと、
判断結果、前記マルウェアパターンのハッシュ衝突回数が予め設定された基準回数より多い場合、前記ハッシュ関数又は前記ハッシュ関数を構成するハッシュ係数を再選定するステップとを含む、ハッシュ関数を利用したマルウェアパターンマッチング方法。
【請求項１９】
前記ハッシュ係数を再選定するステップは、
候補ハッシュ係数を選定するステップと、
前記候補ハッシュ係数を利用して、前記マッチングさせるステップにて使用されるマルウェアパターンに対するハッシュ値を求める第１ステップと、
前記候補ハッシュ係数の中から、前記第１ステップにて求めたハッシュ値を比較して、ハッシュ衝突が最小になるようにするハッシュ係数を選定するステップとを含むことを特徴とする請求項１８に記載のマルウェアパターンマッチ
ング方法。
【請求項２０】
前記ハッシュ係数を再選定するステップは、
候補ハッシュ係数を選定するステップと、
前記候補ハッシュ係数を利用して、前記マッチングさせるステップにて使用されるマルウェアパターンのハッシュ値を求める第１ステップと、
前記第１ステップにて求めたハッシュ値に対する各々の分散値を求め、前記候補ハッシュ係数の中から前記分散値が最も小さなハッシュ係数を選定するステップとを含むことを特徴とする請求項２０に記載のマルウェアパターンマッチング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アンチマルウェアデバイス、サーバ及びマルウェアパターンマッチング方法に関し、さらに詳細には、ウイルスパターンマッチング時にハッシュ衝突を最小化できるアンチマルウェアデバイス、サーバ及びマルウェアパターンマッチング方法に関する。
【背景技術】
【０００２】
マルウェア（Ｍａｌｗａｒｅ）は、コンピュータウイルス、トロイの木馬、悪性コード（Ｍａｌｉｃｉｏｕｓ  Ｃｏｄｅ）等、コンピュータに悪影響をおよぼすことができるすべてのソフトウェアのことを総称する。マルウェアは、添付ファイルを開けてみたり、ソフトウェアをダウンロードしてインストールする従来の通念から外れて、単に有名検索ページのリンクやイメージをクリックするだけでも望まないソフトウェアがインストールされ、システムがハイジャックされうる恐れがあるので、注意が必要である。
【０００３】
一方、コンピュータと比較して運営体制及びファイルシステムの偏重がより少なく、利用されるデータの重要度が相対的に落ちるため、無線通信システムに対するモバイルウイルスの認識及び被害は大きくないのが現状である。
【０００４】
しかしながら、携帯端末機のハードウェアが高級化し、携帯端末機において行われるアプリケーションが多様化し複雑になるにつれて、従来のコンピュータを攻撃していたマルウェアが携帯端末機にも深刻な弊害を起こすおそれが高まっている。特に、ワイブロ（ＷｉＢｒｏ）等無線携帯インターネットサービスが広がる傾向につれて、既存コンピュータ用アプリケーションプログラムの脆弱点を攻撃する悪性コードに加えて、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ）、ＭＭＳ（Ｍｕｌｔｉｍｅｄｉａ  Ｍｅｓｓａｇｉｎｇ  Ｓｙｓｔｅｍ）等、携帯端末機用アプリケーションプログラム及びサービスの脆弱点を攻撃するモバイル悪性コード（ｍｏｂｉｌｅ  ｍａｌｗａｒｅ）が登場している。このような各種悪性コードは、携帯端末機の誤動作を誘発しデータを削除したりユーザの個人情報を流出したりする等、深刻な被害を与えることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
そこで、本発明は従来の問題を解決するためになされたものであって、その目的は、サーバでハッシュ衝突を防止するためのハッシュ係数又はハッシュ関数を選定する作業を行い、選定されたハッシュ係数又はハッシュ関数をアンチマルウェアデバイスに送信することによって、ハッシュ衝突を最小化できるアンチマルウェアデバイス、サーバ及びマルウェアパターンマッチング方法を提供することにある。
【０００６】
また、本発明の目的は、アンチマルウェアシステムのサーバからハッシュ係数を算出してクライアントでのハッシュ衝突を防止できるアンチマルウェアデバイス、サーバ及びマルウェアパターンマッチング方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成すべく、本発明は、少なくとも一つ以上のハッシュ係数を有したハッシュ関数を利用して、マルウェアパターンに対するハッシュ値とターゲットデータに対すハッシュ値とを生成するハッシュ値生成部と、前記マルウェアパターンのハッシュ値と、前記ターゲットデータのハッシュ値とをマッチングさせるハッシュマッチャー部と、前記ハッシュマッチャー部によるマッチングが成功すると、前記マルウェアバターンと前記ターゲットデータとをマッチングさせるマッチング部とを備え、前記ハッシュ係数及び／又はハッシュ関数は、ネットワークを介して接続したサーバから前記マルウェアパターンと共に受信されたものであり、前記マルウェアパターンがアップデートされる場合、アップデート用マルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ係数及び／ 又はハッシュ関数も変更されることを特徴とするアンチマルウェアデバイスを提供する。
【０００８】
一方、上記の目的を達成すべく、ハッシュ係数を有したハッシュ関数を利用してマルウェアパターンマッチングを行うアンチマルウェアデバイスにマルウェアパターンを送信するサーバであって、前記アンチマルウェアデバイスにマルウェアパターンを送信するとき、前記ハッシュ係数を前記マルウェアパターンと共に送信するアップデート部を備え、前記アップデート部が送信するハッシュ係数は、前記アンチマルウェアデバイスに送信されるマルウェアパターンのハッシュ値を算出するのに用いられ、前記アンチマルウェアデバイスに送信されるマルウェアパターンに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、前記ハッシュ係数を選定するハッシュ係数選定部をさらに備え、前記アップデート部が送信するハッシュ係数は、前記ハッシュ係数選定部により選定されたハッシュ係数であることを特徴とするサーバが提供される。
【０００９】
上記目的を達成すべく、ハッシュ係数を利用してマルウェアパターンマッチング動作を行う方法であって、マルウェアパターンのハッシュ値が相互衝突する確率が最小になるように、前記マルウェアパターンを参照して前記ハッシュ係数を選定するステップと、前記選定されたハッシュ係数を使用して、前記マルウェアパターンに対するハッシュ値を算出するステップと、前記マルウェアパターンに対するハッシュ値のうち、少なくとも一つと前記ターゲットデータに対するハッシュ値とのマッチングが成功すると、前記マルウェアパターンと前記ターゲットデータとをマッチングするステップと、前記マルウェアパターンが変更されると、前記変更されたマルウェアパターンに対するハッシュ値が互いに衝突する確率が最小になるようにするハッシュ係数を再選定するステップとを含むマルウェアパターンマッチング方法が提供される。
【００１０】
一方、上記の目的を達成すべく、ハッシュ関数を利用してマルウェアパターンのハッシュ値を計算するステップと、前記ハッシュ関数を利用してターゲットデータに対するハッシュ値を計算するステップと、前記マルウェアパターンに対するハッシュ値と前記ターゲットデータに対するハッシュ値とのマッチングが成功すると、前記マルウェアパターンと前記ターゲットデータとをマッチングするステップと、前記計算されたマルウェアパターンのハッシュ値が互いに衝突されるかどうかを判断するステップと、判断結果、前記マルウェアパターンのハッシュ衝突回数が予め設定された基準回数より多い場合、前記ハッシュ関数又は前記ハッシュ関数を構成するハッシュ係数を再選定するステップとを含む、ハッシュ関数を利用したマルウェアパターンマッチング方法が提供される。
【発明の効果】
【００１１】
本発明によれば、サーバ側のコンピュータ環境を利用してサーバでハッシュ衝突を最小化できる作業を行って最適のハッシュ係数（Ｈａｓｈ  Ｃｏｅｆｆｉｃｉｅｎｔ）値を構成して、クライアントシグネチャー（Ｓｉｇｎａｔｕｒｅ）ＤＢと共にクライアントに送信するために、従来のクライアント側の制限されたメモリ格納空間とコンピュータパワーによる問題を解決するという効果がある。
【００１２】
これにより、本発明においてクライアントは、負荷消費が多く減少し、結果的な部分のみを処理すれば良いので、性能上の向上も期待することができる。
【００１３】
また、本発明では、ハッシュ衝突が最小になるため、パターン検出時にも速く処理できるという効果がある。
【００１４】
そして、小型コンピュータデバイスでは、ハッシュ衝突が少ないほどメモリ接近が少なくなるために、速い速度と少ないメモリ使用によってバッテリー消費も減らすことができるという効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施の形態に係るアンチマルウェアシステムを示す図である。
【図２】本発明の実施の形態によってアンチマルウェアデバイスに送信されるマルウェアパターンデータのパケット及び／又はファイルの形態を説明するための図である。
【図３】ハッシュ値生成部が第１マルウェアパターンデータのうち、ウイルスパターンデータに対するハッシュ値を生成する一連の過程を示す模式図である。
【図４】第１ハッシュマッチャーテーブルと第１サブマッチャーテーブルの一例を示す図である。
【図５】パターンＤＢ部の一例を示す図である。
【図６】第２ハッシュマッチャーテーブルと第２サブマッチャーテーブルの一例を示す図である。
【図７】本発明の他の実施の形態に係るアンチマルウェアシステムを示す図である。
【図８】本発明の一実施の形態に係るマルウェアパターンマッチング方法のうち、サーバの動作を説明するためのフローチャートである。
【図９】本発明の一実施の形態に係るアンチマルウェアデバイスのマルウェアパターンマッチング方法を説明するためのフローチャートである。
【図１０】本発明の一実施の形態に係るアンチマルウェアシステムのマルウェアパターンマッチング方法のうち、アップデート方法を説明するためのフローチャートである。
【図１１】本発明の他の実施の形態に係るアンチマルウェアシステムを示す図である。
【図１２】本発明の他の実施の形態に係るアンチマルウェアシステムにおけるハッシュ衝突防止方法を行う基本プロセスを示すフローチャートである。
【図１３】本発明の他の実施の形態に係るステップＳ１２０９であるブロック生成プロセスを説明するためのフローチャートである。
【図１４】本発明の他の実施の形態に係るステップＳ１２１１である衝突回避プロセスを説明するためのフローチャートである。
【図１５】本発明の他の実施の形態に係るステップＳ１４１１であるハッシュ関数処理過程を説明するためのフローチャートである。
【図１６】本発明の他の実施の形態に係るサーバで行うアップデート過程を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に送信させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第３の構成要素が介在されうることを意味する。
【００１７】
本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される「含む（ｃｏｍｐｒｉｓｅｓ）」及び／又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【００１８】
以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。
【００１９】
図１は、本発明の一実施の形態に係るアンチマルウェアシステムを示す図である。
【００２０】
図１に示すように、アンチマルウェアシステムは、サーバ１００及びアンチマルウェアデバイス２００を備える。サーバ１００とアンチマルウェアデバイス２００とは、ネットワーク１０を介して通信可能なように接続されることができる。
【００２１】
サーバ１００は、アンチマルウェアデバイス２００にマルウェアパターンＤＢ（Ｄａｔａｂａｓｅ）と少なくとも一つのハッシュ係数を送信する。マルウェアパターンＤＢは、マルウェアパターンから構成されている。マルウェアパターンは、ウイルス、トロイの木馬、感染ファイル、悪性コードなどファイルに損傷を与えるデータである。
【００２２】
マルウェアパターンは、アンチマルウェアデバイス２００がターゲットデータのマルウェア感染有無を検出するために使用する基準データである。マルウェアパターンは、ウイルススキャニングのためのウイルスパターンと防火壁フィルタリングのためのルールパターンとを含むことができる。ウイルスパターンとルールパターンについては後述する。
【００２３】
ハッシュ係数は、アンチマルウェアデバイス２００からハッシュ値を算出する際に用いられる係数である。好ましくは、ハッシュ係数は、可能なかぎりハッシュ衝突を防止できる係数で選定される。本発明の一実施の形態によれば、ハッシュ係数は、マルウェアパターンのうち、ウイルスパターンを参照して選定されるウイルスハッシュ係数と、ルールパターンを参照して選定されるルールハッシュ係数とを含むことができる。
【００２４】
サーバ１００は、アップデート用マルウェアパターンが発生すると、ハッシュ係数を再選定し、アップデート用マルウェアパターンと再選定されたハッシュ係数を含むアップデート用マルウェアパターンＤＢをアンチマルウェアデバイス２００に送信する。
【００２５】
アンチマルウェアデバイス２００は、少なくとも一つ以上のハッシュ係数を有するハッシュ関数を利用して、マルウェアパターンマッチングを行う。少なくとも一つ以上のハッシュ係数は、サーバ１００から選定された係数である。このために、アンチマルウェアデバイス２００は、サーバ１００から受信されたマルウェアパターンＤＢに含まれたハッシュ係数をハッシュ関数の係数として使用し、マルウェアパターンをハッシュ関数の変数に代入して使用する。アンチマルウェアデバイス２００は、システムオンチップ、ノート型パソコン、デスクトップパソコン、スマートフォン、スマートカード及び半導体用ＩＰ（Intellectual Property）チップのようなモバイル電子機器に該当できる。
【００２６】
以下では、「マルウェアパターン又は複数のマルウェアパターン」は、たびたび「マルウェアパターンデータ」と言及され、「アンチマルウェアデバイス２００に送信するマルウェアパターンデータ」又は「アンチマルウェアデバイス２００が予め格納しているマルウェアパターンデータ」は、「第１マルウェアパターンデータ」と言及され、「アンチマルウェアデバイス２００に送信するハッシュ係数」は、「第１ハッシュ係数」と言及され、「第１ハッシュ係数を有するハッシュ関数」は、第１ハッシュ関数」として言及される。
【００２７】
また、以下の説明では、サーバ１００からアンチマルウェアデバイス２００に送信される第１マルウェアパターンデータがウイルスパターンデータであると、ウイルスパターンデータと共に送信される第１ハッシュ係数は、ウイルスハッシュ係数でありうる。また、サーバ１００からアンチマルウェアデバイス２００に送信される第１マルウェアパターンデータがルールパターンデータであると、ルールパターンデータと共に送信される第１ハッシュ係数は、ルールハッシュ係数でありうる。また、サーバ１００からアンチマルウェアデバイス２００に送信される第１マルウェアパターンデータがウイルスパターンデータとルールパターンデータをすべて含んでいると、共に送信される第１ハッシュ係数は、ウイルスハッシュ係数とルールハッシュ係数とを含むことができる。本発明の一実施の形態において、サーバ１００は、ハッシュ係数選定部１１０及びアップデート部１２０を備える。
【００２８】
ハッシュ係数選定部１１０は、第１マルウェアパターンデータにハッシュ関数を適用する場合、最小のハッシュ衝突結果を発生するハッシュ関数に基づいて、アンチマルウェアデバイス２００に送信する第１ハッシュ係数を選定する。
【００２９】
一例として、ハッシュ係数選定部１１０は、第１マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用して、第１ハッシュ係数を選定できる。詳細に説明すれば、ハッシュ係数選定部１１０は、用意した複数の候補ハッシュグループ（ＧN，Ｎ＝１，２，…）を使用して、第１マルウェアパターンデータのハッシュ値を求めることができる。各候補ハッシュグループは、少なくとも一つ以上の候補ハッシュ係数からなる。例えば、第１候補ハッシュグループＧ１は、候補ハッシュ係数｛ａ1，ｂ1，ｃ1｝を含み、第２候補ハッシュグループは、候補ハッシュ係数｛ａ2，ｂ2，ｃ2｝を含むと仮定する。ハッシュ係数選定部１１０は、ハッシュ関数に候補ハッシュグループ（Ｇ1，Ｇ2，…）の候補ハッシュ係数を適用して、候補ハッシュグループの各々に対するハッシュ値を算出できる。このとき、ハッシュ係数選定部１１０は、アンチマルウェアデバイス２００で使用中である第１マルウェアパターンデータを参照して、ハッシュ値を算出できる。ハッシュ係数選定部１１０は、ハッシュ値の衝突回数（すなわち、ハッシュ衝突回数）を候補ハッシュグループごとにカウントし、ハッシュ衝突が最も少ない候補ハッシュグループのハッシュ係数を第１ハッシュ係数として選定できる。
【００３０】
又は、ハッシュ係数選定部１１０は、第１マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を第１ハッシュ係数として選定できる。すなわち、ハッシュ係数選定部１１０は、候補ハッシュグループの各々に対するハッシュ値が算出されると、ハッシュ値の分散値を候補ハッシュグループ別に算出する。ハッシュ係数選定部１１０は、候補ハッシュグループ別に算出された分散値のうち、最小の分散値が算出されるようにした候補ハッシュグループを確認し、該確認された候補ハッシュグループのハッシュ係数を第１ハッシュ係数として選定できる。
【００３１】
アップデート部１２０は、アンチマルウェアデバイス２００に第１マルウェアパターンデータを送信するとき、選定された第１ハッシュ係数をマルウェアパターンデータと共に送信できる。アップデート部１２０が送信する第１ハッシュ係数は、アンチマルウェアデバイス２００に送信される第１マルウェアパターンデータのハッシュ値を算出するのに用いられることができる。
【００３２】
図２は、本発明の実施の形態によってアンチマルウェアデバイスに送信されるマルウェアパターンデータのパケット及び／又はファイルの形態を説明するための図である。
【００３３】
図２に示すように、パケット及び／又はファイルは、ヘッダ項目３１０、ハッシュ項目３２０及びデータ項目３３０を備える。アップデート部１２０は、ヘッダ項目３１０にヘッダ情報を記載し、ハッシュ項目３２０に第１ハッシュ係数を記載し、データ項目３３０に第１マルウェアパターンデータを記録する。アップデート部１２０は、各項目３１０、３２０、３３０にデータが記載されると、パケット及び／又はファイルをＳＶＤ形式でアンチマルウェアデバイス２００に送信できる。
【００３４】
一方、第１マルウェアパターンデータをアップデートするデータがある場合について説明すれば、以下のとおりである。以下では、「第１マルウェアパターンデータのうち、アップデートされるデータ」を「アップデート用マルウェアパターンデータ」とし、アップデート用マルウェアパターンデータをさらに参照して再選定されるハッシュ係数を「第２ハッシュ係数」とし、「第２ハッシュ係数を有するハッシュ関数」を「第２ハッシュ関数」とする。
【００３５】
ハッシュ係数選定部１１０は、アップデート用マルウェアパターンデータと第１マルウェアパターンデータのすべてをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用して、第２ハッシュ係数を選定できる。又は、ハッシュ係数選定部１１０は、アップデート用マルウェアパターンデータと第１マルウェアパターンデータのすべてをハッシュ関数に適用したときに導出されるハッシュ値の分散値が最小になるようにするハッシュ係数を第２ハッシュ係数として選定できる。
【００３６】
アップデート部１２０は、選定された第２ハッシュ係数とアップデート用マルウェアパターンデータを共にアンチマルウェアデバイス２００に送信できる。図２を参照して説明すれば、アップデート部１２０は、ヘッダ項目３１０にヘッダ情報を記載し、ハッシュ項目３２０に変更された第２ハッシュ係数を記載し、データ項目３３０にアップデート用マルウェアパターンデータを記載して、パケット及び／又はファイルをアンチマルウェアデバイス２００に送信できる。
【００３７】
再度図１に示すように、本発明の一実施の形態に係るアンチマルウェアデバイス２００は、パターンＤＢ２１０、ハッシュ値生成部２２０、パターンハッシュ値テーブル２３０、テーブル生成部２４０、第１ハッシュマッチャーテーブル２５０、第１サブマッチャーテーブル２５５、第２ハッシュマッチャーテーブル２６０、第２サブマッチャーテーブル２６５、ハッシュマッチャー部２７０及びマッチング部２８０を備えることができる。
【００３８】
アンチマルウェアデバイス２００は、サーバ１００から第１マルウェアパターンデータと第１ハッシュ係数を含むマルウェアパターンＤＢを図２のようなＳＶＤ形式で受信する。マルウェアパターンＤＢのうち、第１マルウェアパターンデータは、パターンＤＢ２１０形態でメモリ（図示せず）に格納され、第１ハッシュ係数は、ハッシュ値生成部２２０に入力される。
【００３９】
パターンＤＢ２１０は、サーバ１００から受信された第１マルウェアパターンデータを格納する。第１マルウェアパターンデータは、ターゲットデータのマルウェア感染有無を検出するために、マッチング部２８０がターゲットデータとのマッチング動作を行う時に用いられることができる。
【００４０】
サーバ１００から受信された第１マルウェアパターンデータがウイルスパターンデータとルールパターンデータをすべて含んでいる場合、パターンＤＢ２１０は、ウイルスパターンＤＢとルールパターンＤＢとを含むことができる。ウイルスパターンＤＢとルールパターンＤＢとは、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−ｃｈｉｐ、ＳＯＣ）に備えられたメモリ（図示せず）に格納されていることができる。
【００４１】
ウイルスパターンＤＢは、ウイルスパターンデータの集合体であって、ターゲットデータに対してウイルススキャニング動作を行う時に用いられる。すなわち、ウイルスパターンデータは、ターゲットデータのウイルス感染有無を検出するために用いられる。
【００４２】
ルールパターンＤＢは、ルールパターンデータを格納するデータベースである。ルールパターンデータは、外部から流入したパケットデータのフィルタリングのために、すなわち、パケットデータを遮断（ｂｌｏｃｋ）するか、又は通過（ａｌｌｏｗ）させるかを決定するために用いられる。ルールパターンデータは、ユーザにより直接設定されるか、又はサーバ１００でデフォルトとして設定されてユーザデバイスに送信されることができる。
【００４３】
ハッシュ値生成部２２０は、サーバ１００から受信された少なくとも一つ以上の第１ハッシュ係数とパターンＤＢ２１０に格納された第１マルウェアパターンデータとを利用して、第１マルウェアパターンデータに対するハッシュ値（ＨP）を生成できる。すなわち、ハッシュ値生成部２２０は、ウイルスパターンデータに対するハッシュ値（ＨV）を生成するか、又はルールパターンデータに対するハッシュ値（ＨR）を生成できる。したがって、以下の説明でハッシュ値（ＨP）は、ハッシュ値（ＨV）又はハッシュ値（ＨR）を意味できる。
【００４４】
第１ハッシュ係数は、第１マルウェアパターンデータに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいてサーバ１００で選定される。また、第１ハッシュ関数は、アンチマルウェアデバイス２００に送信される第１マルウェアパターンデータに対するハッシュ値をランダムに導出したとき、導出されるハッシュ値が相互衝突する確率が最小になるように決まった関数である。
【００４５】
ハッシュ値生成部２２０は、第１ハッシュ係数を有する第１ハッシュ関数を利用して、第１マルウェアパターンデータに対するハッシュ値を生成できる。
【００４６】
まず、図３〜図５を参照して、アンチマルウェアデバイス２００がウイルスパターンデータとウイルスハッシュ係数を利用してウイルスパターンデータに対するハッシュ値を生成し、ウイルススキャニングを行う過程について説明する。
【００４７】
図３は、ハッシュ値生成部が第１マルウェアパターンデータのうち、ウイルスパターンデータに対するハッシュ値を生成する一連の過程を示す模式図である。
【００４８】
図３に示すように、ハッシュ関数フォーマットがｆ（Ｈ）＝ａｘ＋ｂｙ＋ｃｚである場合、（ａ，ｂ，ｃ）は、ハッシュ係数、（ｘ，ｙ，ｚ）は、変数である。したがって、サーバ１００から受信された第１ハッシュ係数、すなわち、ウイルスハッシュ係数が（ａ1，ｂ1，ｃ1）である場合、ハッシュ値生成部２２０は、（ａ1，ｂ1，ｃ1）をそれぞれ（ａ，ｂ，ｃ）に代入して、ｆ（Ｈ）＝ａ1ｘ＋ｂ1ｙ＋ｃ1ｚという第１ハッシュ関数を作ることができる。そして、ハッシュ値生成部２２０は、パターンＤＢ２１０に格納されたウイルスパターンデータの値を（ｘ，ｙ，ｚ）に入力して、ウイルスパターンデータの各々に対するハッシュ値（ＨV）を生成できる。変数として入力される値は、ウイルスパターンデータから入力されうるすべての場合の数を有することができる。すなわち、入力されうる場合の数が１００個であると、１個のウイルスパターンデータに対するハッシュ値は、最大１００個生成されることができる。
【００４９】
すべてのウイルスパターンデータに対するハッシュ値（ＨV）が生成されると、ハッシュ値生成部２２０は、パターンハッシュ値テーブル２３０を生成できる。
【００５０】
パターンハッシュ値テーブル２３０は、ハッシュ値生成部２２０から生成されたハッシュ値（ＨV）及びハッシュ値（ＨV）に対応するウイルスパターンデータのパターンをマッピングしたテーブルであって、メモリ（図示せず）にロードされることができる。図３において、ウイルスパターンデータのうち、いずれか一つのハッシュ値が「Ｘ」である場合、前記いずれか一つに該当するウイルスパターンデータのパターンは、「ａｂｃｄｅｆｇ」を有する。
【００５１】
テーブル生成部２４０は、パターンハッシュ値テーブル２３０を参照して、第１ハッシュマッチャーテーブル２５０と第１サブマッチャーテーブル２５５とを生成できる。
【００５２】
図４は、第１ハッシュマッチャーテーブルと第１サブマッチャーテーブルの一例を示す図である。
【００５３】
図４の右側に示すテーブルを参照すると、テーブル生成部２４０は、第１ハッシュ関数から生成されうるすべてのハッシュ値（ＨV）がインデックス（ＩＮＤＥＸ）として決まることができる。すなわち、テーブル生成部２４０は、第１ハッシュ関数に入力されうるすべてのウイルスパターンデータを入力する場合、生成されるすべてのハッシュ値をインデックスとして使用する。したがって、図４のインデックス項目には、図３において生成されたウイルスパターンデータのハッシュ値（ＸとＹ）が含まれている。
【００５４】
テーブル生成部２４０は、パターンハッシュ値テーブル２３０のハッシュ値（ＨV）とすべてのインデックスとを比較して、ハッシュ値（ＨV）と同じインデックスがあると、その同じインデックスを「１」に設定する。Ｖａｌｕｅ「０」は、ハッシュ値（ＨV）と同じインデックスがない場合に使用され、「１」は、ハッシュ値（ＨV）と同じインデックスがある場合に使用される。図３のパターンハッシュ値テーブル２３０には、ハッシュ値（ＨV）としてＸとＹとが含まれているので、図４の第１ハッシュマッチャーテーブル２５０には、インデックス「Ｘ」と「Ｙ」に「１」がチェックされている。
【００５５】
また、テーブル生成部２４０は、パターンハッシュ値テーブル２３０と第１ハッシュマッチャーテーブル２５０とを利用して、第１サブマッチャーテーブル２５５を生成できる。第１サブマッチャーテーブル２５５は、マッチング部２８０においてウイルススキャニングのためにＬＰＭ（Ｌｉｇｈｔ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ）及びＥＰＭ（Ｅｘａｃｔ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ）のうち、少なくとも一つを行うのに使用されることができる。ＬＰＭとＥＰＭについての説明は後述する。
【００５６】
図５に示すように、テーブル生成部２４０は、第１ハッシュマッチャーテーブル２５０のすべてのインデックスのうち、ハッシュ値（ＨV）と一致するインデックス（ＸとＹを含む）を基準に第１サブマッチャーテーブル２５５を生成できる。以下では、「すべてのインデックスのうち、ハッシュ値（ＨV）と一致するインデックス」を「マッチングインデックス」とする。
【００５７】
テーブル生成部２４０は、マッチングインデックスに該当するウイルスパターンデータの各々の中間値（ｍｉｄｄｌｅ）と最後値（ｔａｉｌ）、そしてウイルスパターンデータが格納されたアドレスを利用して、第１サブマッチャーテーブル２５５を生成できる。マッチングインデックスに該当するウイルスパターンデータの各々の中間値と最後値とは、パターンハッシュ値テーブル２３０を参照できる。例えば、マッチングインデックスが「Ｘ」である場合、「Ｘ」のパターンは、「ａｂｃｄｅｆｇ」である。テーブル生成部２４０は、「ａｂｃｄｅｆｇ」のうち、中間値である「ｄ」と最後値である「ｇ」とをパターンハッシュ値テーブル２３０から確認することができる。
【００５８】
図４の「Ｖｉｒｕｓ  Ｐａｔｔｅｒｎ  Ｄａｔａ  Ａｄｄｒｅｓｓ」は、ウイルスパターンデータが格納されたアドレスを意味する。「ｏｆｆｓｅｔ１」は、パターンの最初値と中間値までのオフセット、「ｏｆｆｓｅｔ２」は、パターンの最初値と最後値までのオフセットである。
【００５９】
第１ハッシュマッチャーテーブル２５０からインデックスと同じハッシュ値（ＨV）が２つ以上発見されると、ハッシュ衝突が発生したと見なされる。「衝突パターンのｏｆｆｓｅｔ」は、第１ハッシュマッチャーテーブル２５０からインデックスと同じハッシュ値（ＨV）が例えば２つ発見される場合、２つのハッシュ値（ＨV）のうち、いずれか一つに割り当てられるマッチングインデックスを意味する。２つのハッシュ値（ＨP）に該当するウイルスパターンデータは、互いに異なるので、２つのハッシュ値（ＨV）全部に対する中間値と最後値も異なりうる。したがって、テーブル生成部２４０は、２つのハッシュ値（ＨV）のうちのいずれか一つには、異なるマッチングインデックスを割り当てて第１サブマッチャーテーブル２５５を生成する。図５の場合、マッチングインデックス「Ｘ」の衝突パターンオフセットは、「Ｚ」である。これは、「Ｚ」というマッチングインデックスに同じハッシュ値（ＨV）がマッピングされていることを意味する。
【００６０】
また、図１に示すように、ハッシュ値生成部２２０は、ウイルススキャニング対象であるターゲットデータを受け取って、ターゲットデータに対するハッシュ値をさらに生成できる。ターゲットデータは、予め定義されたサイズに分割されたサブデータ（Ｓ１，Ｓ２，Ｓ３，…）からなることができる。このような場合、ハッシュ値生成部２２０は、サブデータを順次に受け取って各サブデータに対するハッシュ値（ＨS）を生成できる。ハッシュ値生成部２２０は、生成されたサブデータに対するハッシュ値（ＨS）をマッチング部２８０に提供できる。以下では、第１サブデータ（Ｓ１）及び第１サブデータに対するハッシュ値（ＨS1）を例に挙げて説明する。
【００６１】
ハッシュマッチャー部２７０は、ハッシュ値生成部２２０から第１サブデータに対するハッシュ値（ＨS1）を受け取ることができる。ハッシュマッチャー部２７０は、第１ハッシュマッチャーテーブル２５０のうち、「１」のチェックされたマッチングインデックス（例えば、ＸとＹ）に、第１サブデータのハッシュ値（ＨS1）をマッチングさせることができる。「１」のチェックされたマッチングインデックスは、ウイルスパターンデータのハッシュ値（ＨV）のうちの一部である。
【００６２】
マッチングの成功有無は、ハッシュマッチャー部２７０と連動するハードウェア（図示せず）で判断できる。ハードウェアは、第１ハッシュマッチャーテーブル２５０のうち、「１」のチェックされたマッチングインデックス（例えば、ＸとＹ）に、第１サブデータのハッシュ値（ＨS1）と一致するマッチングインデックスがあると、マッチングが成功したと判断できる。例えば、第１サブデータのハッシュ値（ＨS1）が「Ｘ」である場合、マッチングインデックスに「Ｘ」が含まれていると、ハードウェアは、マッチングが成功したと判断される。
【００６３】
ハッシュマッチャー部２７０によるマッチングが成功すると、マッチング部２８０は、ウイルスパターンデータのうち、少なくとも一つと第１サブデータのパターンとをマッチングさせることができる。詳細に説明すれば、マッチング部２８０は、ハッシュ値（ＨS1）と一致するマッチングインデックス（例えば、Ｘ）に該当するウイルスパターンデータと第１サブデータのパターンとをマッチングする動作を行うことができる。これは、「第１サブデータのハッシュ値（ＨS1）と一致するマッチングインデックス」は、ウイルスパターンデータを第１ハッシュ関数に代入して生成されたハッシュ値であるためである。ウイルスパターンデータと第１サブデータのパターンとをマッチングした結果は、マルウェアの感染有無の判断に影響を及ぼす。
【００６４】
このために、マッチング部２８０は、ＬＰＭ方式及びＥＰＭ方式を使用することができる。
【００６５】
ＬＰＭ方式は、ウイルスパターンデータと第１サブデータの中間値と最後値を利用してパターンをマッチングする方式である。詳細に説明すれば、マッチング部２８０は、第１サブデータのハッシュ値（ＨＳ1）と一致するマッチングインデックス（例えば、Ｘ）の中間値と最後値とを第１サブマッチャーテーブル２５５から確認する。また、マッチング部２８０は、入力される第１サブデータの中間値と最後値とを確認する。マッチング部２８０は、確認されたマッチングインデックスの中間値と第１サブデータの中間値とをマッチングさせ、マッチングインデックスの最後値と第１サブデータの最後値とをマッチングさせる。
【００６６】
ＬＰＭ方式を使用した結果、中間値が互いに一致しないか、又は最後値が互いに一致しないと、第１サブデータには、ウイルスパターンデータのパターンが存在しないことを意味する。したがって、第１サブデータは、マルウェアにより感染しない正常なデータとして判別できる。
【００６７】
反面、ＬＰＭ方式を使用した結果、中間値が互いに一致し、最後値が互いに一致すると、マッチング部２８０は、ＥＰＭ方式を適用してパターンマッチング動作を行うことができる。詳細に説明すれば、マッチング部２８０は、ＬＰＭ方式の結果、中間値と最後値とがすべて一致すると、ウイルスパターンデータと第１サブデータのすべての位置の値を利用してパターンをマッチングできる。
【００６８】
このために、マッチング部２８０は、第１サブマッチャーテーブル２５５を参照してマッチングインデックス（Ｘ）にマッピング格納されたウイルスパターンデータのアドレスを確認する。マッチング部２８０は、確認されたアドレスに格納されたウイルスパターンデータのパターンをメモリ（図示せず）から読み込む。メモリには、パターンＤＢ２１０又はパターンハッシュ値テーブル２３０がロードされていることができる。図５は、パターンＤＢ２１０の一例を示す図である。マッチング部２８０は、該当アドレスに格納されたウイルスパターンデータの全体パターン「ａｂｃｄｅｆｇ」と第１サブデータの全体パターンとをマッチングさせる。
【００６９】
以下、図６を参照してアンチマルウェアデバイス２００がルールパターンデータとルールハッシュ係数とを利用してルールパターンデータに対するハッシュ値を生成し、フィルタリングを行う過程について説明する。
【００７０】
図６は、第２ハッシュマッチャーテーブルと第２サブマッチャーテーブルの一例を示す図である。
【００７１】
まず、ハッシュ値生成部２２０は、サーバ１００から受信したルールハッシュ係数を前のハッシュ関数に適用して第１ハッシュ関数を作ることができる。そして、ハッシュ値生成部２２０は、パターンＤＢ２１０に格納されたルールパターンデータの少なくとも一部の値を第１ハッシュ関数に入力して、ルールパターンデータの各々に対するハッシュ値（ＨR）を生成できる。これは、図３を参照して説明したハッシュ値（ＨR）の生成と似ている。
【００７２】
すべてのルールパターンデータに対するハッシュ値（ＨR）が生成されると、ハッシュ値生成部２２０は、ルールパターンハッシュ値テーブル（図示せず）を生成できる。ルールパターンハッシュ値テーブル（図示せず）は、ハッシュ値生成部２２０から生成されたハッシュ値（ＨR）及びハッシュ値（ＨR）に対応するルールパターンデータのパターンをマッピングしたテーブルであって、メモリ（図示せず）にロードされうる。
【００７３】
すべてのルールパターンデータに対するハッシュ値（ＨR）が生成されると、テーブル生成部２４０は、ルールパターンハッシュ値テーブル（図示せず）を参照して第２ハッシュマッチャーテーブル２６０と第２サブマッチャーテーブル２６５とを生成できる。
【００７４】
図６に示すように、第２ハッシュマッチャーテーブル２６０は、インデックス（キー値）と存在有無を表す項目とを含む。テーブル生成部２４０は、第１ハッシュ関数から生成されうるすべてのハッシュ値（ＨR）をインデックスとして決めることができる。テーブル生成部２４０は、ルールパターンデータから生成されたハッシュ値（ＨR）とすべてのインデックスとを比較して、第２ハッシュマッチャーテーブル２６０を生成できる。図６において存在有無項目の値が１であるのは、インデックスと同じハッシュ値（ＨR）が存在し、「０」は、インデックスと同じハッシュ値（ＨR）が無いことを意味する。これは、図４を参照して説明した第１ハッシュマッチャーテーブル２５０の生成と似ている。
【００７５】
図６の第２ハッシュマッチャーテーブル２６０には、インデックス「Ｘ」に「１」がチェックされているので、生成されたすべてのルールパターンデータに対するハッシュ値（ＨR）には、「Ｘ」が存在することが分かる。
【００７６】
また、テーブル生成部２４０は、ルールパターンハッシュ値テーブル（図示せず）と第２ハッシュマッチャーテーブル２６０とを利用して、第２サブマッチャーテーブル２６５を生成できる。
【００７７】
テーブル生成部２４０は、第２ハッシュマッチャーテーブル２６０のすべてのインデックスのうち、ハッシュ値（ＨR）と一致するインデックス（Ｘ、Ａを含む）を基準に第２サブマッチャーテーブル２６５を生成できる。以下、「すべてのインデックスのうち、ハッシュ値（ＨR）と一致するインデックス」を「マッチングインデックス」とする。
【００７８】
第２サブマッチャーテーブル２６５は、ＩＰとポートに対してのみサブ（Ｓｕｂ）を有し、各サブは、他の値から構成される。
【００７９】
ＩＰサブは、インデックス、中間値（ｍｉｄ）、最後値（ｔａｉｌ）、すべてのプロトコルに適用されるルールパターンの存在有無（ｉｓｐｒｏ）、すべてのポートに適用されるルールパターンの存在有無（ｉｓｐｏｒｔ）、実際パターンメモリアドレス、次のアドレス（ｎｅｘｔ）などの値から構成される。
【００８０】
ポートサブは、インデックス、ＩＰハッシュ値、プロトコルハッシュ値（ｐｒｏｔｏｃｏｌ  ｈａｓｈ）、実際パターンメモリアドレス、次のアドレス（ｎｅｘｔ）などの値から構成される。
【００８１】
ＩＰサブの中間値は、ＩＰアドレスの第３番目のバイト値を有し、最後値は、ＩＰアドレスの最後のバイト値を有する。こういうバイトの位置選定により、ＩＰｖ４の場合、ハッシュマッチャー部２７０にてＩＰの前の２バイト、中間値、最後値でＩＰアドレスに対する検証を行うことができる。マッチングインデックスに該当するルールパターンデータの中間値と最後値とは、ルールパターンデータであるパケットのヘッダから確認されることができる。
【００８２】
ｉｓｐｒｏ値は、すべてのプロトコルに適用されるルールパターンの存在有無（ｉｓｐｒｏ）を意味し、該当インデックス値の実際ルールパターン中に１個のプロトコルでもＡＬＬであると１、そうでないと０の値を有する。
【００８３】
ｉｓｐｒｏという要素を有するようになれば、フラグ（ＩＰ，Ｐｒｏｔｏｃｏｌ，Ｐｏｒｔ）の範囲を該当ＩＰのルールに合せて再構成できるようになる。例えば、［ｉｎ，２０２．１３１．２９．７１，ＴＣＰ，８０，Ａｌｌｏｗ］、［ｉｎ，２０２．１３１．２９．７０，ＡＬＬ，８０，Ａｌｌｏｗ］のようなルールパターンが２個あるときに、フラグ（ＩＰ，Ｐｒｏｔｏｃｏｌ，Ｐｏｒｔ）は、Ｎｏｔ  ａｌｌ，ＡＬＬ，Ｎｏｔ  ａｌｌにセットされる。このとき、２０２．１３１．２９．７１には、Ｐｒｏｔｏｃｏｌに対してＡＬＬであるルールパターンがないので、ｉｓｐｒｏが０になって、後にプロトコルフラグをＮｏｔ  ａｌｌに変える。
【００８４】
ｉｓｐｏｒｔ値は、すべてのポートに適用されるルールパターンの存在有無（ｉｓｐｏｒｔ）を意味し、該当インデックス値の実際ルールパターン中に１個のポートでもＡＬＬであると１、そうでないと０の値を有する。これは、ｉｓｐｒｏの役割と似ている。
【００８５】
実際パターンメモリアドレスは、該当ルールパターンデータが実際に格納されている所のメモリアドレス値を有し、次のアドレス（ｎｅｘｔ）は、第２サブマッチャーテーブル２６５のインデックスである１個のハッシュ値に複数のルールパターンが存在するとき、次のパターンサブを探索するのに必要な値である。次のアドレス（ｎｅｘｔ）は、第１サブマッチャーテーブル２５５の「衝突パターンのｏｆｆｓｅｔ」と似ている。
【００８６】
本発明におけるポートサブのＩＰハッシュ値とプロトコルハッシュ値とは、該当ルールのポートとＩＰ、プロトコルの連関性を与えるためのものであり、ここで連関性を有する要素がない場合、結局は、ポートを中心にルールパターン全体を検索しなければならない。
【００８７】
また、図１に示すように、ハッシュ値生成部２２０は、フィルタリング対象であるターゲットデータを受け取って、ターゲットデータに対するハッシュ値（ＨF）をさらに生成してマッチング部２８０に提供できる。ハッシュ値生成部２２０は、ターゲットデータのパケットのＩＰアドレス、ポート、プロトコルなど多様な情報の各々に対するハッシュ値（ＨF）を生成できる。
【００８８】
第２ハッシュマッチャーテーブル２６０と第２サブマッチャーテーブル２６５とが生成されると、ハッシュマッチャー部２７０は、ハッシュ値生成部２２０からターゲットサブデータに対するハッシュ値（ＨF）を受け取ることができる。ハッシュマッチャー部２７０は、第２ハッシュマッチャーテーブル２６０のうち、「１」のチェックされたマッチングインデックス（例えば、ＸとＡ）に、ターゲットデータのハッシュ値（ＨF）をマッチングさせることができる。
【００８９】
ハッシュマッチャー部２７０によるマッチングが成功すると、マッチング部２８０は、ハッシュ値（ＨF）と一致するマッチングインデックス（例えば、Ｘ）に該当するルールパターンデータとターゲットデータのパターンとをマッチングして、フィルタリングを行うことができる。パターンマッチングのために、マッチング部２８０は、第２サブマッチャーテーブル２６５を参照してＬＰＭ方式及びＥＰＭ方式を使用することができる。これは、ウイルスパターンデータのパターンマッチングにおいて説明した方式と同様なので、詳細な説明は省略する。ハッシュマッチャー部２７０とマッチング部２８０とは、ハードウェアロジックで具現されることができる。パターンマッチングにより、ルールパターンデータとターゲットデータとのパターンが一致すると、ターゲットデータは遮断されうる。一方、また図１に示すように、第１マルウェアパターンデータがアップデートされる場合、すなわち、アップデート用マルウェアパターンデータがある場合、アップデート用マルウェアパターンデータの特性に基づいて第１ハッシュ係数及び第１ハッシュ関数も変更されうる。これは、アップデート用マルウェアパターンデータに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、サーバ１００においてハッシュ係数を再生成するためである。再生成されるハッシュ係数又は変更された第１ハッシュ関数は、上述した第２ハッシュ係数である。したがって、サーバ１００から提供される第２ハッシュ係数は、アップデート用マルウェアパターンデータに含まれている。
【００９０】
ハッシュ値生成部２２０は、サーバ１００からアップデート用マルウェアパターンデータを受信する場合、アップデート用マルウェアパターンデータと共に送信された第２ハッシュ係数を利用してハッシュ値を再生成できる。すなわち、ハッシュ値生成部２２０は、アップデート用マルウェアパターンデータと共にサーバ１００から受信された第２ハッシュ係数を有する第２ハッシュ関数を利用して、ハッシュ値を再生成できる。したがって、アップデート用マルウェアパターンデータからなるアップデート用マルウェアパターンＤＢは、ヘッダ情報の記載されるヘッダ項目３１０と、第２ハッシュ係数の記載されるハッシュ項目３２０とを備えることができる。また、アップデート用マルウェアパターンデータは、パターンＤＢ２１０に追加されることができる。その後、ハッシュ値生成部２２０、テーブル生成部２４０、ハッシュマッチャー部２７０及びマッチング部２８０の動作は、第１マルウェアパターンデータが入力された場合と似ているので、詳細な説明は省略する。
【００９１】
上述した本発明の一実施の形態によれば、サーバ１００は、アンチマルウェアデバイス２００にハッシュ係数を含むマルウェアパターンデータを送信できる。アンチマルウェアデバイス２００は、サーバ１００から受信されたハッシュ係数を利用してハッシュ関数を決め、パターンマッチングを行うことができる。
【００９２】
図７は、本発明の他の実施の形態に係るアンチマルウェアシステムを示す図である。
【００９３】
図７に示すように、アンチマルウェアシステムは、サーバ６００及びアンチマルウェアデバイス７００を備える。アンチマルウェアシステムにおけるサーバ６００とアンチマルウェアデバイス７００とは、ネットワーク２０を介して通信可能なように接続されることができる。図７に示すサーバ６００及びアンチマルウェアデバイス７００は、図１〜図６を参照して説明したサーバ１００及びアンチマルウェアデバイス２００と似ているので、詳細な説明は省略する。
【００９４】
ただし、図１のサーバ１００は、ハッシュ係数を選定してアンチマルウェアデバイス７００に送信する。反面、図７に示すサーバ６００は、ハッシュ係数が適用されたハッシュ関数を選定して、アンチマルウェアデバイス７００に送信できる。アンチマルウェアデバイス７００は、受信されたハッシュ関数を利用して、第１マルウェアパターンデータのハッシュ値とターゲットデータのハッシュ値とを生成できる。
【００９５】
このために、本発明の他の実施の形態に係るサーバ６００は、ハッシュ関数選定部６１０及びアップデート部６２０を備える。
【００９６】
ハッシュ関数選定部６１０は、第１マルウェアパターンデータを対象にアンチマルウェアエンジンからパターンデータをすべて検出しながら速く検索できる関数を選定し、このように選定された関数に対する最適の係数値をハッシュ係数として選定して、アンチマルウェアデバイス７００に送信する第１ハッシュ関数を決めることができる。
【００９７】
一例に、ハッシュ関数選定部６１０は、与えられた第１マルウェアパターンデータを対象にいくつかのハッシュ関数のうち、最適のパターン検出と速い検索を行うことのできる関数を選定する。そして、ハッシュ関数選定部６１０は、図１のハッシュ係数選定部１１０で使用したアルゴリズムを利用して第１ハッシュ係数を選定し、第１ハッシュ係数を既存のハッシュ関数にアップデートして、第１ハッシュ関数と第１ハッシュ係数とを選定できる。
【００９８】
又は、ハッシュ関数選定部６１０は、図１のハッシュ係数選定部１１０から算出した分散値を利用して第１ハッシュ係数を選定し、第１ハッシュ係数を既存のハッシュ関数にアップデートして第１ハッシュ関数を選定できる。
【００９９】
第１マルウェアパターンデータをアップデートするデータがある場合にも、ハッシュ関数選定部６１０は、新しいアップデート用マルウェアパターンデータとアンチマルウェアデバイス７００に送信された第１マルウェアパターンデータを利用して、第２ハッシュ関数を再選定できる。
【０１００】
アップデート部６２０は、アンチマルウェアデバイス７００に第１マルウェアパターンデータを送信するとき、選定された第１ハッシュ関数をマルウェアパターンデータと共に送信できる。送信される第１ハッシュ関数は、アンチマルウェアデバイス７００に送信される第１マルウェアパターンデータのハッシュ値を生成するのに使用されることができる。
【０１０１】
また、サーバ６００は、アンチマルウェアデバイス７００からの要請があると、必要なアップデート用マルウェアパターンデータと共にアップデート用ハッシュ関数をアンチマルウェアデバイス７００に送信する。
【０１０２】
本発明の実施の形態において、サーバ６００からアンチマルウェアデバイス７００に送信される第１マルウェアパターンデータがウイルスパターンデータであると、ウイルスパターンデータと共に送信される第１ハッシュ関数は、ウイルスハッシュ関数でありうる。また、サーバ６００からアンチマルウェアデバイス７００に送信される第１マルウェアパターンデータがルールパターンデータであると、ルールパターンデータと共に送信される第１ハッシュ関数は、ルールハッシュ関数でありうる。また、サーバ６００からアンチマルウェアデバイス７００に送信される第１マルウェアパターンデータがウイルスパターンデータとルールパターンデータを全部含んでいると、共に送信される第１ハッシュ関数は、ウイルスハッシュ関数とルールハッシュ関数とを含むことができる。
【０１０３】
一方、本発明の他の実施の形態に係るアンチマルウェアデバイス７００は、パターンＤＢ７１０、ハッシュ値生成部７２０、パターンハッシュ値テーブル７３０、テーブル生成部７４０、第１ハッシュマッチャーテーブル７５０、第１サブマッチャーテーブル７５５、第２ハッシュマッチャーテーブル７６０、第２サブマッチャーテーブル７６５、ハッシュマッチャー部７７０、マッチング部７８０及びアップデート要請部７９０を備えることができる。
【０１０４】
図７のパターンＤＢ７１０、パターンハッシュ値テーブル７３０、テーブル生成部７４０、第１ハッシュマッチャーテーブル７５０、第１サブマッチャーテーブル７５５、第２ハッシュマッチャーテーブル７６０、第２サブマッチャーテーブル７６５、ハッシュマッチャー部７７０、マッチング部７８０は、図１のパターンＤＢ２１０、パターンハッシュ値テーブル２３０、テーブル生成部２４０、第１ハッシュマッチャーテーブル２５０、第１サブマッチャーテーブル２５５、第２ハッシュマッチャーテーブル２６０、第２サーブマッチャーテーブル２６５、ハッシュマッチャー部２７０及びマッチング部２８０と同一である。
【０１０５】
ただし、ハッシュ値生成部７２０は、サーバ６００から受信された第１ハッシュ関数を利用して、第１マルウェアパターンデータのハッシュ値とサブデータのハッシュ値とを生成する。例えば、第１マルウェアパターンデータがウイルスパターンデータであると、ハッシュ値生成部７２０は、ウイルスハッシュ関数を利用してウイルスパターンデータに対するハッシュ値を生成する。
【０１０６】
アップデート要請部７９０は、ハッシュ値生成部７２０から生成された第１マルウェアパターンデータに対するハッシュ値が互いに衝突する回数が基準値を超えると、第１ハッシュ係数又は第１ハッシュ関数に対するアップデートをサーバ６００に要請できる。また、アップデート要請部７９０は、第１ハッシュ係数だけでなく第１マルウェアパターンデータのアップデートをサーバ６００に要請することもできる。アップデート要請部７９０は、選択的に備えられることができる。
【０１０７】
アップデート要請部７９０は、第１サブマッチャーテーブル７５５をモニターリングして、ハッシュ衝突回数をカウントできる。一例に、アップデート要請部７９０は、第１サブマッチャーテーブル７５５の「衝突パターンオフセット」項目に記載されるマッチングインデックスの個数をハッシュ衝突回数として使用することができる。又は、ハッシュ衝突回数は、カウンタ（図示せず）によりカウントできる。
【０１０８】
上述した本発明の他の実施の形態によれば、サーバ６００は、アンチマルウェアデバイス７００にハッシュ関数を含むマルウェアパターンデータを送信できる。アンチマルウェアデバイス７００は、サーバ６００から受信されたハッシュ関数を利用してハッシュ値を生成し、パターンマッチングを行うことができる。
【０１０９】
図８は、本発明の一実施の形態に係るマルウェアパターンマッチング方法のうち、サーバの動作を説明するためのフローチャートである。
【０１１０】
図８の動作は、図１又は図７を参照して説明したサーバ１００、６００のうちの何れか一つにより行われることができる。
【０１１１】
ステップＳ８１０にて、サーバは、複数の候補ハッシュグループ（ＧN，Ｎ＝１，２，…）を選定できる。例えば、第１候補ハッシュグループＧ１は、候補ハッシュ係数として｛ａ1，ｂ1，ｃ1｝を含み、第２候補ハッシュグループは、候補ハッシュ係数として｛ａ2，ｂ2，ｃ2｝を含むことができる。
【０１１２】
ステップＳ８２０にて、サーバは、候補ハッシュグループの各々に対するハッシュ値を算出できる。すなわち、サーバは、ハッシュ関数に候補ハッシュグループ（Ｇ1，Ｇ2，…）の候補ハッシュ係数を適用して、候補ハッシュグループの各々に対するハッシュ値を算出できる。このとき、サーバは、アンチマルウェアデバイスにおいて使用中であるマルウェアパターンデータをハッシュ関数に代入して、ハッシュ値を算出できる。
【０１１３】
ステップＳ８３０にて、サーバは、候補ハッシュグループ別に算出されたハッシュ値を比較して、候補ハッシュグループ別に発生したハッシュ衝突回数を確認することができる。
【０１１４】
ステップＳ８４０にて、サーバは、ハッシュ衝突が最も少ない候補ハッシュグループを確認し、該確認された候補ハッシュグループの候補ハッシュ係数をアンチマルウェアデバイスに送信するハッシュ係数として選定できる。
【０１１５】
ステップＳ８５０にて、サーバは、ステップＳ８４０にて選定されたハッシュ係数、ステップＳ８２０にてハッシュ値算出時に参照したマルウェアパターンデータをアンチマルウェアデバイスに送信できる。
【０１１６】
一方、サーバが分散値を利用してハッシュ係数を選定する場合、サーバは、ステップＳ８３０及びステップＳ８４０の代りにステップＳ８６０及びステップＳ８７０を行うことができる。
【０１１７】
ステップＳ８６０にて、サーバは、ステップＳ８２０にて算出されたハッシュ値の分散値を候補ハッシュグループ別に算出できる。
【０１１８】
ステップＳ８７０にて、サーバは、候補ハッシュグループ別に算出された分散値のうち、最小の分散値を算出した候補ハッシュグループを確認し、該確認された候補ハッシュグループのハッシュ係数をアンチマルウェアデバイスに送信するハッシュ係数として選定できる。
【０１１９】
これにより、サーバは、マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするハッシュ係数を選定できる。また、サーバは、マルウェアパターンデータがウイルスパターンデータの場合、ウイルスパターンデータを考慮してウイルスハッシュ係数を選定し、マルウェアパターンデータがルールパターンデータの場合、ルールパターンデータを考慮してルールハッシュ係数を選定できる。
【０１２０】
図９は、本発明の一実施の形態に係るアンチマルウェアデバイスのマルウェアパターンマッチング方法を説明するためのフローチャートである。
【０１２１】
図９の動作は、図１又は図７を参照して説明したアンチマルウェアデバイス２００、７００のうちの何れか一つにより行われることができる。
【０１２２】
ステップＳ９０５にて、アンチマルウェアデバイスは、サーバからマルウェアパターンＤＢを受信することができる。マルウェアパターンＤＢは、ターゲットデータのマルウェア感染有無を判断するために、パターンマッチングに用いられるマルウェアパターンデータとハッシュ係数とを含む。ステップＳ９０５にて受信されるマルウェアパターンデータがウイルススキャニングのためのウイルスパターンデータである場合、ハッシュ係数は、ウイルスパターンデータを考慮して選定されたウイルスハッシュ係数である。また、受信されるマルウェアパターンデータがルールパターンデータである場合、ハッシュ係数は、ルールパターンデータを考慮して選定されたルールハッシュ係数でありうる。また、受信されるマルウェアパターンデータがウイルスパターンデータとルールパターンデータとをすべて含んでいる場合、共に送信されるハッシュ係数は、ウイルスハッシュ係数とルールハッシュ係数とを含むことができる。
【０１２３】
ステップＳ９１０にて、アンチマルウェアデバイスは、受信されたマルウェアパターンデータをパターンＤＢに格納又はアップデートする。
【０１２４】
また、ステップＳ９１５にて、アンチマルウェアデバイスは、ハッシュ関数のハッシュ係数を受信されたハッシュ係数に変更できる。
【０１２５】
ステップＳ９２０にて、アンチマルウェアデバイスは、受信されたハッシュ係数が適用されたハッシュ関数にマルウェアパターンデータを代入して、マルウェアパターンデータの各々に対するハッシュ値を生成し、生成されたハッシュ値を利用してパターンハッシュ値テーブルをアップデートできる。既存にパターンハッシュ値テーブルがない場合には、生成されたハッシュ値を利用してパターンハッシュ値テーブルを新規に生成できる。
【０１２６】
ステップＳ９２５にて、アンチマルウェアデバイスは、パターンハッシュ値テーブルを参照してハッシュマッチャーテーブルとサブマッチャーテーブルとをアップデートできる。既存にハッシュマッチャーテーブルとサブマッチャーテーブルとがない場合、アンチマルウェアデバイスは、ハッシュマッチャーテーブルとサブマッチャーテーブルとを新規に生成できる。これは、図４及び図５を参照して詳述される。
【０１２７】
ステップＳ９３０にて、アンチマルウェアデバイスは、ターゲットデータをサブデータ単位で受け取ってサブデータに対するハッシュ値を生成できる。アンチマルウェアデバイスは、ステップＳ９１５にてアップデートされたハッシュ関数にサブデータを代入して、ハッシュ値を生成できる。
【０１２８】
ステップＳ９３５にて、アンチマルウェアデバイスは、ハッシュ値のマッチング動作を行う。すなわち、アンチマルウェアデバイスは、ハッシュマッチャーテーブルのうち、マッチングインデックス（すなわち、ハッシュマッチャーテーブルのうち、「１」がチェックされたインデックス）に、生成されたサブデータのハッシュ値をマッチングさせることができる。
【０１２９】
ステップＳ９４０にて、アンチマルウェアデバイスは、マッチングインデックスのうち、何れか一つとサブデータのハッシュ値との一致有無を判断できる。
【０１３０】
判断結果、サブデータのハッシュ値がマッチングインデックスのうち、何れか一つと一致すると（Ｓ９４０−Ｙ）、ステップＳ９４５にて、アンチマルウェアデバイスは、ＬＰＭ動作を行うことができる。ＬＰＭ方式は、マルウェアパターンデータとサブデータの中間値と最後値とを利用してパターンをマッチングする方式である。
【０１３１】
ステップＳ９５０にて、アンチマルウェアデバイスは、マルウェアパターンデータとサブデータの中間値との一致有無と、マルウェアパターンデータとサブデータの最後値との一致有無を判断できる。
【０１３２】
判断結果、中間値と最後値がすべて一致すると（Ｓ９５０−Ｙ）、ステップＳ９５５にて、アンチマルウェアデバイスは、ＥＰＭ動作を行うことができる。ＥＰＭ方式は、マルウェアパターンデータとサブデータのすべての位置の値を利用して、パターンをマッチングする方式である。
【０１３３】
ステップＳ９６０にて、アンチマルウェアデバイスは、マルウェアパターンデータとサブデータの全体が一致するかどうかを判断できる。
【０１３４】
判断結果、全体が一致すると（Ｓ９６０−Ｙ）、ステップＳ９６５にて、アンチマルウェアデバイスは、サブデータがマルウェアパターンに該当すると判断できる。
【０１３５】
反面、全体のうちの何れか一つの値でも一致しないと（Ｓ９６０−Ｎ）、ステップＳ９７０にて、アンチマルウェアデバイスは、サブデータが正常なパターンに該当すると判断できる。
【０１３６】
一方、ステップＳ９４０及びＳ９５０での結果が一致しない場合、ステップＳ９７５にて、アンチマルウェアデバイスは、現在処理されたサブデータがターゲットデータの最後のサブデータであるかどうかを判断する。
【０１３７】
最後のサブデータではないと、アンチマルウェアデバイスは、ステップＳ９３５に進んで次のサブデータに対するパターンマッチングを行う。
【０１３８】
図１０は、本発明の一実施の形態に係るアンチマルウェアシステムのマルウェアパターンマッチング方法のうち、アップデート方法を説明するためのフローチャートである。
【０１３９】
図１０の動作は、図１又は図７を参照して説明したサーバ１００、６００のうちの何れか一つと、アンチマルウェアデバイス２００、７００のうちの何れか一つにより行われることができる。
【０１４０】
ステップＳ１０１０にて、アンチマルウェアデバイスは、ハッシュ衝突が発生すると、ステップＳ１０２０にてハッシュ衝突回数をカウント又は確認することができる。アンチマルウェアデバイスは、ステップＳ９２０にて生成されたマルウェアパターンデータに対するハッシュ値が互いに衝突する回数をカウントできる。アンチマルウェアデバイスは、ステップＳ９２５にて生成されたサブマッチャーテーブルの衝突パターンオフセットの回数からハッシュ衝突回数が分かる。
【０１４１】
ステップＳ１０３０にて、アンチマルウェアデバイスは、ステップＳ１０２０にて確認されたハッシュ衝突回数と基準値とを比較できる。
【０１４２】
比較結果、ステップＳ１０２０にて確認されたハッシュ衝突回数が基準値を超えると（Ｓ１０３０−Ｙ）、ステップＳ１０４０にて、アンチマルウェアデバイスは、サーバにマルウェアパターンデータとハッシュ係数のアップデートを要請できる。
【０１４３】
ステップＳ１０５０にて、サーバは、アンチマルウェアデバイスの要請により、ハッシュ衝突が発生する確率が最小になるようにするハッシュ係数又はハッシュ関数を再選定できる。サーバは、以前に参照したマルウェアパターンデータとアップデート用マルウェアパターンデータとを参照して、ハッシュ係数又はハッシュ関数を再選定できる。これは、図８の過程と似ていることができる。
【０１４４】
ステップＳ１０６０にて、サーバは、ステップＳ１０５０にて参照したアップデート用マルウェアパターンデータと再選定されたハッシュ係数又はハッシュ関数をアンチマルウェアデバイスに送信できる。
【０１４５】
図１１は、本発明の他の実施の形態に係るアンチマルウェアシステムを示す図である。
【０１４６】
図１１に示すように、アンチマルウェアシステムは、サーバ１１００及びクライアント１２００を備える。
【０１４７】
サーバ１１００は、マルウェアパターンＤＢをアップデートし、クライアント１２００からマルウェアを検出する過程においてハッシュ衝突が発生するのを防止するために、ハッシュ衝突を防止できるハッシュ係数を算出し、算出されたハッシュ係数をクライアント１２００に送信する。サーバ１１００は、図１及び図７を参照して説明したサーバ１００、６００のうちの何れか一つであるか、又は同様に動作できる。また、マルウェアパターンＤＢは、図１及び図７を参照して説明したマルウェアパターンＤＢでありうる。
【０１４８】
クライアント１２００は、サーバ１１００からマルウェアパターンＤＢをダウンロードして、マルウェアの感染有無を検出できる。クライアント１２００は、図１及び図７を参照して説明したアンチマルウェアデバイス２００、７００のうちの何れか一つであるか、又は同様に動作できる。ただし、クライアント１２００は、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−ｃｈｉｐ、ＳＯＣ）形態で具現されることができる。
【０１４９】
本発明の実施の形態においてサーバ１１００は、クライアント１２００からアップデート要請があると、必要なアップデート情報と共にハッシュ係数をクライアント１２００に送信できる。アップデート情報は、サーバ１１００から選定されたハッシュ係数又はハッシュ関数とマルウェアパターンデータを含むことができる。
【０１５０】
サーバ１１００は、マルウェアパターンＤＢをアップデートするためのアップデート部１１１０と、ハッシュ係数を計算するための衝突回避部１１２０とを備えてなる。
【０１５１】
アップデート部１１１０は、図１及び図７のアップデート部１２０、６２０のうち、少なくとも一つで行う機能をさらに提供できる。アップデート部１１１０は、マルウェアパターン入力処理部１１１１、ブロック生成処理部１１１２及びアップデート情報構成部１１１４を備える。
【０１５２】
マルウェアパターン入力処理部１１１１は、クライアント１２００に送信するマルウェアパターンデータの入力を処理する。
【０１５３】
ブロック生成処理部１１１２は、ブロックを生成し、アップデート情報構成部１１１４は、アップデート情報を構成する。一例に、アップデート情報構成部１１１４は、ハッシュ係数選定部１１２２から選定されたハッシュ係数及びハッシュ関数選定部１１２３から選定されたハッシュ関数のうちの何れか一つをハッシュ項目３２０に記載し、マルウェアパターンデータをデータ項目３３０に記載してアップデート情報、すなわち、マルウェアパターンＤＢを構成できる。
【０１５４】
衝突回避部１１２０は、累積ブロックＤＢ１１２１、ハッシュ係数選定部１１２２及びハッシュ関数選定部１１２３を備える。累積ブロックＤＢ１１２１は、累積ブロック情報を格納する。ハッシュ係数選定部１１２２は、ハッシュ係数を選定し、ハッシュ関数選定部１１２３は、ハッシュ関数を選定する。
【０１５５】
ハッシュ係数選定部１１２２は、図１のハッシュ係数選定部１１０の機能を行うことができる。すなわち、ハッシュ係数選定部１１２２は、マルウェアパターンデータに対するハッシュ関数を介した最小のハッシュ衝突結果に基づいて、クライアント１２００に送信するハッシュ係数を選定できる。一例に、ハッシュ係数選定部１１２２は、マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値が相互衝突する確率が最小になるようにするアルゴリズムを使用して、ハッシュ係数を選定できる。又は、ハッシュ係数選定部１１２２は、マルウェアパターンデータをハッシュ関数に適用したときに導出されるハッシュ値の分散値を利用して、ハッシュ係数を選定できる。
【０１５６】
ハッシュ関数選定部１１２３は、図７のハッシュ関数選定部６１０の機能を行うことができる。すなわち、ハッシュ関数選定部１１２３は、ハッシュ係数選定部１１２２で使用する方式でハッシュ係数を選定し、該選定されたハッシュ係数が適用されるハッシュ関数を選定する。
【０１５７】
一方、クライアント１２００は、アンチマルウェアアプリケーション部１２１０及びアンチマルウェアシステムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−ｃｈｉｐ）部１２２０を備える。
【０１５８】
アンチマルウェアアプリケーション部１２１０は、アンチマルウェアに必要な環境設定及びドライバーを提供できる。このために、アンチマルウェアアプリケーション部１２１０は、環境設定及びＤＢアップデート要請部１２１１、ＤＢ処理モジュール１２１２、ＳＯＣ呼び出し部１２１３及びスキャンキュー及びドライバーモジュール１２１４を備える。
【０１５９】
環境設定及びＤＢアップデート要請部１２１１は、アンチマルウェア動作のための環境を設定し、サーバ１１００にマルウェアパターンＤＢのアップデートを要請できる。環境設定及びＤＢアップデート要請部１２１１は、図７のアップデート要請部７９０の機能をさらに提供できる。
【０１６０】
ＤＢ処理モジュール１２１２は、マルウェアパターンＤＢ、すなわち、マルウェアパターンデータとハッシュ関数又はハッシュ係数を管理できる。ＳＯＣ呼び出し部１２１３は、ＳＯＣを呼び出す。
【０１６１】
スキャンキュー及びドライバーモジュール１２１４は、クライアント１２００でパターンマッチングを行うのに必要な各種ドライバーを提供及び／又は駆動できる。
【０１６２】
アンチマルウェアシステムオンチップ部１２２０は、マルウェアパターンＤＢを利用して、マルウェアに感染したデータを検出する。このために、アンチマルウェアシステムオンチップ部１２２０は、検索エンジン１２１１、パターンマッチングモジュール１２２２、ＤＢマネジャーモジュール１２２３、ファイルデータ処理モジュール１２２４、パケットデータ処理モジュール１２２５及び防火壁ルールマネジャーモジュール１２２６を備える。
【０１６３】
検索エンジン１２１１は、マルウェアパターンの検索を担当する。検索エンジン１２１１は、図１及び図７のハッシュ値生成部２２０、７２０、テーブル生成部２４０、７４０及びハッシュマッチャー部２７０、７７０の機能を行うハードウェアでありうる。したがって、検索エンジン１２１１は、マルウェアパターンデータのハッシュ値とサブデータのハッシュ値とを生成し、パターンハッシュ値テーブルを生成し、ハッシュ値マッチングを行うことができる。
【０１６４】
パターンマッチングモジュール１２２２は、マルウェアパターンデータとサブデータとのパターンマッチングを行う。パターンマッチングモジュール１２２２は、図１及び図７のマッチング部２８０、７８０に該当できる。
【０１６５】
ＤＢマネジャーモジュール１２２３は、マルウェアパターンＤＢを管理する。例えば、ＤＢマネジャーモジュール１２２３は、検索エンジン１２１１でハッシュ値を生成するように、マルウェアパターンデータをメモリ（図示せず）にロードできる。
【０１６６】
ファイルデータ処理モジュール１２２４は、ファイルデータを処理し、パケットデータ処理モジュール１２２５は、パケットデータを処理する。例えば、パケットデータ処理モジュール１２２４は、ターゲットデータを一定単位を有するサブデータに分割できる。各々のサブデータは、検索エンジン１２１１に提供されてサブデータに対するハッシュ値を生成する場合に使用される。
【０１６７】
防火壁ルールマネジャーモジュール１２２６は、防火壁ルールを管理する。
【０１６８】
以下では、図１１のような構造を有するアンチマルウェアシステムにおけるハッシュ衝突を防止するための方法を図１２〜図１６を参照して説明する。図１２〜図１６は、本発明の他の実施の形態に係るアンチマルウェアシステムにおけるハッシュ衝突防止方法を説明するためのフローチャートである。図１２〜図１６のハッシュ衝突防止方法を行うアンチマルウェアシステムは、図１１に示すサーバ１１００とクライアント１２００とを備えるシステムでありうる。
【０１６９】
図１２は、本発明の他の実施の形態に係るアンチマルウェアシステムにおけるハッシュ衝突防止方法を行う基本プロセスを示すフローチャートである。
【０１７０】
図１２に示すように、サーバは、マルウェアパターンＤＢのブロック化のための基礎値をセットして初期化する（Ｓ１２０１）。
【０１７１】
新しいマルウェアパターンデータ、すなわち、アップデート用マルウェアパターンデータが入力される（Ｓ１２０３）と、サーバは、新しいブロック作業が必要であるかどうかを確認する（Ｓ１２０５）。
【０１７２】
新しいブロック作業が必要な場合、サーバは、マルウェアパターンデータを決まったフォーマットにＤＢ化して、マルウェアパターンＤＢに格納する（Ｓ１２０７）。
【０１７３】
そして、サーバは、マルウェアパターンデータに対して新しいブロック生成プロセスを実施してブロックを生成する（Ｓ１２０９）。
【０１７４】
サーバは、ステップＳ１２０９にて生成されたブロックに対するハッシュ衝突を回避するための衝突回避プロセスを実施する（Ｓ１２１１）。衝突回避プロセスの実施により、サーバは、ハッシュ係数を選定できる。また、ステップＳ１２１１には、図示していないが、衝突回示プロセスの実施により、サーバは、ハッシュ関数を選定することもできる。
【０１７５】
次に、サーバは、衝突回避プロセスを介して選定されたハッシュ係数又はハッシュ関数を格納する（Ｓ１２１３）。
【０１７６】
図１３は、本発明の他の実施の形態に係るステップＳ１２０９であるブロック生成プロセスを説明するためのフローチャートである。
【０１７７】
図１３に示すように、サーバは、ステップＳ１２０７にてＤＢ化されて格納されたマルウェアパターンデータを読む（Ｓ１３０１）。
【０１７８】
そして、サーバは、マルウェアパターンデータからブロック化するデータを抽出する（Ｓ１３０３）。例えば、サーバは、マルウェアパターンデータにある位置（ｌｏｃａｔｉｏｎ）、ＯＳ情報、入力時期によって、ｌｏｃａｔｉｏｎＩＤ＿ＯＳＩＤ＿ＹＹＹＹＭＭＤＤ形態のブロックＩＤ（ＢｌｏｃｋＩＤ）を前記ブロック化するデータとして抽出できる。仮に、抽出されたブロックＩＤと同じブロックＩＤが既に存在していると、サーバは、抽出されたブロックのバージョンをアップグレードできる。以後、サーバは、該当ブロックに対する大きさ及びデータ、ｍｄ５値、使用有無、入力者、入力時期に対して入力する。
【０１７９】
次に、サーバは、ステップＳ１３０３にて抽出されたデータを利用してブロックを生成する（Ｓ１３０５）。
【０１８０】
そして、サーバは、生成されたブロックデータをマルウェアパターンＤＢに格納する（Ｓ１３０７）。
【０１８１】
図１４は、本発明の他の実施の形態に係るステップＳ１２１１である衝突回避プロセスを説明するためのフローチャートである。
【０１８２】
図１４に示すように、サーバは、マルウェアパターンＤＢからブロックデータを確認する（Ｓ１４０１）。
【０１８３】
サーバは、ブロックデータを介して新しく追加されたブロックがあるかどうかを確認する（Ｓ１４０３）。
【０１８４】
新しく追加されたブロックがあると、サーバは、追加されたブロックのブロックデータを全体マルウェアパターンＤＢに追加する（Ｓ１４０５）。
【０１８５】
サーバは、マルウェアパターンＤＢにあるマルウェアパターンデータに対するハッシュ係数を計算するために初期化を実施する（Ｓ１４０７）。
【０１８６】
そして、サーバは、複数の候補係数値を選定する（Ｓ１４０９）。複数の候補係数値は、図１を参照して説明した、各々１個以上の候補ハッシュ係数を有する複数の候補ハッシュグループ（ＧN，Ｎ＝１，２，…）のような形態を有することができる。
【０１８７】
サーバは、ステップＳ１４０９にて選定された候補係数値を利用して、マルウェアパターンデータに対してハッシュ関数処理を行う（Ｓ１４１１）。
【０１８８】
サーバは、ステップＳ１４１１のハッシュ関数処理結果を比較して、ハッシュ衝突を最小化させるハッシュ係数を選定する（Ｓ１４１３）。
【０１８９】
図１５は、本発明の他の実施の形態に係るステップＳ１４１１であるハッシュ関数処理過程を説明するためのフローチャートである。
【０１９０】
図１５に示すように、サーバは、メモリ格納場所の大きさ及び係数値の範囲を含む情報を初期化する（Ｓ１５０１）。
【０１９１】
そして、サーバは、係数マトリックスとハッシュ関数テーブルとを構成する（Ｓ１５０３、Ｓ１５０５）。係数マトリックスは、ステップＳ１４０９にて選定された複数の候補係数値を有する候補ハッシュグループでありうる。例えば、係数マトリックスは、Ｇ1＝｛ａ1，ｂ1，ｃ1｝，Ｇ2＝｛ａ2，ｂ2，ｃ2｝，Ｇ3＝｛ａ3，ｂ3，ｃ3｝，…であって、複数で構成されることができる。
【０１９２】
サーバは、マルウェアパターンＤＢからマルウェアパターンデータを読み込む（Ｓ１５０７）。
【０１９３】
そして、サーバは、読み込んだマルウェアパターンデータをハッシュ関数に適用できる形態に変換する（Ｓ１５０９）。
【０１９４】
サーバは、ハッシュ関数に係数マトリックスの候補係数値と変換させたマルウェアパターンデータとを適用してハッシュ値を求め、該求めたハッシュ値をハッシュ関数テーブルに適用する（Ｓ１５１１）。ステップＳ１５１１にてサーバは、候補ハッシュグループ別にハッシュ値を求め、ハッシュ関数テーブルに適用する。
【０１９５】
サーバは、ハッシュ関数テーブルの値に対する分散値を求める（Ｓ１５１３）。すなわち、サーバは、候補ハッシュグループの各々に対するハッシュ値が算出されると、ハッシュ値の分散値を候補ハッシュグループ別に算出する。
【０１９６】
次に、サーバは、候補ハッシュグループ別に算出された分散値の中から最小分散値を表す係数マトリックスを選定する（Ｓ１５１５）。選定された係数マトリックスをなす候補係数は、クライアントに送信されるハッシュ係数である。
【０１９７】
一方、本発明においてクライアント１２００は、アップデートを受けようとする時点にサーバ１１００にアップデートを要請する。このとき、クライアント１２００自身が有したチェックサム（ｃｈｅｃｋｓｕｍ）、デバイス実行環境、位置（ｌｏｃａｔｉｏｎ）情報、バージョンＩＤ（ｖｅｒｓｉｏｎ  ＩＤ）をサーバ１１００に送信できる。アップデート部１１１０は、受信した情報からクライアント１２００の変化有無を判断し、変化があるときには、位置決定器（ｌｏｃａｔｉｏｎ  ｄｅｃｉｄｅｒ）を実行して、正確な位置をセットする。
【０１９８】
その後、サーバ１１００は、アップデート情報構成部１１１４を実行して、クライアント１２００に必要なブロック情報とそれに応じる作業種類（ａｐｐｅｎｄ／ｄｏｗｎｌｏａｄ／ａｄｄ／ｄｅｌｅｔｅ／ｒｅｐｌａｃｅ）、アップデート用マルウェアパターンデータ及びそれに応じて再選定されたハッシュ係数も共にクライアント１２００に送信する。
【０１９９】
該当情報を受信したクライアント１２００は、ブロックと作業情報で自身のブロックに対するアップデートを実施した後、結果をサーバ１１００側に送信し、サーバ１１００は、これを格納し作業を終了する。
【０２００】
図１６は、本発明の他の実施の形態に係るサーバで行うアップデート過程を示すフローチャートである。
【０２０１】
図１６に示すように、サーバは、クライアントから最後のアップデート情報の変化があるかどうかを確認する（Ｓ１６０１）。
【０２０２】
変化があると、サーバは、クライアントのアップデート情報をアップデートする（Ｓ１６１９）。
【０２０３】
アップデート情報の変化がないと、サーバは、クライアントにブロックが存在しているかどうかを確認する（Ｓ１６０３）。
【０２０４】
クライアントにブロックが存在すると、サーバは、ブロック情報を基準にバージョンＩＤが異なるか、それともブロック個数が異なるかを確認する（Ｓ１６０５）。
【０２０５】
バージョンＩＤが異なると、サーバは、クライアントブロックに対する情報をクライアントに要請する（Ｓ１６１３）。
【０２０６】
そして、サーバは、クライアントから該当ブロック情報を受け付ける（Ｓ１６１５）。
【０２０７】
サーバは、ブロック別に作業種類（Ａｄｄ／ｒｅｍｏｖｅ／ｒｅｐｌａｃｅ／ｕｐｄａｔｅ）を判断して、該当作業に必要な情報を構成する（Ｓ１６１７）。
【０２０８】
ステップＳ１６０５にてブロック個数が異なると、サーバは、ブロック付加（Ａｐｐｅｎｄ）情報を構成する（Ｓ１６０７）。
【０２０９】
そして、サーバは、クライアントに送信するブロックに対するハッシュ係数を読み込む（Ｓ１６０９）。
【０２１０】
サーバは、読み込んだハッシュ係数を利用して、ブロック別にアップデートする最終情報を構成してクライアントに送信する（Ｓ１６１１）。
【０２１１】
以後サーバは、再度ステップＳ１６０１に戻ってプロセスを繰り返す。
【０２１２】
ステップＳ１６０３にて、クライアント１２００にブロックが存在しないと、サーバは、直にステップＳ１６０９に進む。
【０２１３】
以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。
【符号の説明】
【０２１４】
１００、６００      サーバ
２００、７００      アンチマルウェアデバイス
１１０      ハッシュ係数選定部
１２０      アップデート部
２１０、７１０      パターンＤＢ
２２０、７２０      ハッシュ値生成部
２３０、７３０      パターンハッシュ値テーブル
２４０、７４０      テーブル生成部
２５０、７５０      第１ハッシュマッチャーテーブル
２５５、７５５      第１サブマッチャーテーブル
２６０、７６０      第２ハッシュマッチャーテーブル
２６５、７６５      第２サブマッチャーテーブル
２７０、７７０      ハッシュマッチャー部
２８０、７８０      マッチング部
７９０      アップデート要請部
１１００      サーバ
１１１０      アップデート部
１１２０      衝突回避部
１２１０      アンチマルウェアアプリケーション部
１２２０      ＳＯＣ部
【図１】
0005378458.tif 000002
【図２】
0005378458.tif 000003
【図３】
0005378458.tif 000004
【図４】
0005378458.tif 000005
【図５】
0005378458.tif 000006
【図６】
0005378458.tif 000007
【図７】
0005378458.tif 000008
【図８】
0005378458.tif 000009
【図９】
0005378458.tif 000010
【図１０】
0005378458.tif 000011
【図１１】
0005378458.tif 000012
【図１２】
0005378458.tif 000013
【図１３】
0005378458.tif 000014
【図１４】
0005378458.tif 000015
【図１５】
0005378458.tif 000016
【図１６】
0005378458.tif 000017