以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施の形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施の形態に限定されずに他の形態で具体化されることもできる。むしろ、ここで紹介される実施の形態は、開示された内容が徹底かつ完全になるように、そして当業者に本発明の思想を十分に送信させるために提供されることである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合に、それは、他の構成要素上に直接形成されうるか、又はそれらの間に第3の構成要素が介在されうることを意味する。
本明細書で使用された用語は、実施の形態を説明するためのもので、本発明を制限しようとするものではない。本明細書において、単数型は、特に言及しない限り、複数型も含む。明細書で使用される「含む(comprises)」及び/又は「含む(comprising)」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
以下、図面を参照して本発明を詳細に説明する。以下の特定実施の形態を述べるにおいて、色々な特定な内容は、発明をさらに具体的に説明し理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような色々な特定な内容がなくても使用されうることを認知できる。ある場合には、発明を述べるにおいて周知で発明と大きく関連のない部分は、本発明を説明するにおいて特別な理由なしで混乱を引き起こすことを防止するために述べないことを予め言及しておく。
図1は、本発明の一実施の形態に係るアンチマルウェアシステムを示す図である。
図1に示すように、アンチマルウェアシステムは、サーバ100及びアンチマルウェアデバイス200を備える。サーバ100とアンチマルウェアデバイス200とは、ネットワーク10を介して通信可能なように接続されることができる。
サーバ100は、アンチマルウェアデバイス200にマルウェアパターンDB(Database)と少なくとも一つのハッシュ係数を送信する。マルウェアパターンDBは、マルウェアパターンから構成されている。マルウェアパターンは、ウイルス、トロイの木馬、感染ファイル、悪性コードなどファイルに損傷を与えるデータである。
マルウェアパターンは、アンチマルウェアデバイス200がターゲットデータのマルウェア感染有無を検出するために使用する基準データである。マルウェアパターンは、ウイルススキャニングのためのウイルスパターンと防火壁フィルタリングのためのルールパターンとを含むことができる。ウイルスパターンとルールパターンについては後述する。
ハッシュ係数は、アンチマルウェアデバイス200からハッシュ値を算出する際に用いられる係数である。好ましくは、ハッシュ係数は、可能なかぎりハッシュ衝突を防止できる係数で選定される。本発明の一実施の形態によれば、ハッシュ係数は、マルウェアパターンのうち、ウイルスパターンを参照して選定されるウイルスハッシュ係数と、ルールパターンを参照して選定されるルールハッシュ係数とを含むことができる。
サーバ100は、アップデート用マルウェアパターンが発生すると、ハッシュ係数を再選定し、アップデート用マルウェアパターンと再選定されたハッシュ係数を含むアップデート用マルウェアパターンDBをアンチマルウェアデバイス200に送信する。
アンチマルウェアデバイス200は、少なくとも一つ以上のハッシュ係数を有するハッシュ関数を利用して、マルウェアパターンマッチングを行う。少なくとも一つ以上のハッシュ係数は、サーバ100から選定された係数である。このために、アンチマルウェアデバイス200は、サーバ100から受信されたマルウェアパターンDBに含まれたハッシュ係数をハッシュ関数の係数として使用し、マルウェアパターンをハッシュ関数の変数に代入して使用する。アンチマルウェアデバイス200は、システムオンチップ、ノート型パソコン、デスクトップパソコン、スマートフォン、スマートカード及び半導体用IP(Intellectual Property)チップのようなモバイル電子機器に該当できる。
以下では、「マルウェアパターン又は複数のマルウェアパターン」は、たびたび「マルウェアパターンデータ」と言及され、「アンチマルウェアデバイス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に示すように、ハッシュ関数フォーマットがf(H)=ax+by+czである場合、(a,b,c)は、ハッシュ係数、(x,y,z)は、変数である。したがって、サーバ100から受信された第1ハッシュ係数、すなわち、ウイルスハッシュ係数が(a1,b1,c1)である場合、ハッシュ値生成部220は、(a1,b1,c1)をそれぞれ(a,b,c)に代入して、f(H)=a1x+b1y+c1zという第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」に設定する。Value「0」は、ハッシュ値(HV)と同じインデックスがない場合に使用され、「1」は、ハッシュ値(HV)と同じインデックスがある場合に使用される。図3のパターンハッシュ値テーブル230には、ハッシュ値(HV)としてXとYとが含まれているので、図4の第1ハッシュマッチャーテーブル250には、インデックス「X」と「Y」に「1」がチェックされている。
また、テーブル生成部240は、パターンハッシュ値テーブル230と第1ハッシュマッチャーテーブル250とを利用して、第1サブマッチャーテーブル255を生成できる。第1サブマッチャーテーブル255は、マッチング部280においてウイルススキャニングのためにLPM(Light Pattern Matching)及びEPM(Exact Pattern Matching)のうち、少なくとも一つを行うのに使用されることができる。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の「Virus Pattern Data Address」は、ウイルスパターンデータが格納されたアドレスを意味する。「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ハッシュ値、プロトコルハッシュ値(protocol hash)、実際パターンメモリアドレス、次のアドレス(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)は、Not all,ALL,Not allにセットされる。このとき、202.131.29.71には、Protocolに対してALLであるルールパターンがないので、isproが0になって、後にプロトコルフラグをNot allに変える。
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形態のブロックID(BlockID)を前記ブロック化するデータとして抽出できる。仮に、抽出されたブロック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)情報、バージョンID(version ID)をサーバ1100に送信できる。アップデート部1110は、受信した情報からクライアント1200の変化有無を判断し、変化があるときには、位置決定器(location decider)を実行して、正確な位置をセットする。
その後、サーバ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に進む。
以上、本発明は、限定された実施の形態と図面により説明されたが、本発明は、上記の実施の形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施の形態に限って決まってはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって決まらねばならない。