説明

パターンマッチングエンジン及びこれを備えた端末装置並びにその方法

【課題】検索またはパターンマッチングエンジン及びこれを備えた端末装置並びにその方法を提供すること。
【解決手段】ターゲットデータに対する誤り検出符号を計算し、計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較し、ターゲットデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、ターゲットデータとマルウェアパターンとを比較するパターンマッチング用エンジンが開示される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検索またはパターンマッチングエンジン及びこれを備えた端末装置並びにその方法に関する。
【背景技術】
【0002】
コンピュータデバイスが多様な用途として活用されているが、例えば、PC、サーバ、携帯電話、PDA、タブレット端末、スマートフォンのようなモバイル装置は、本来の機能の他に金融取引、インターネットショッピングなどのような多様な種類の付加的な機能を支援している。
【0003】
しかしながら、このような付加的な機能は、ネットワークを介して支援される場合が多く、このような過程でウイルスのような悪性マルウェアの危険にさらされるおそれが高まっている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一つ以上の実施形態によれば、速い処理性能を有し、処理負荷が少ない検索またはパターンマッチングエンジンが提供される。
【0005】
本発明の一つ以上の実施形態によれば、速い処理性能を有し、処理負荷が少ないハードウェア基盤の検索またはパターンマッチングエンジンが提供される。
【0006】
本発明の一つ以上の実施形態によれば、速い処理性能を有し、処理負荷が少ない検索またはパターンマッチングエンジンが備えられた端末装置が提供される。
【0007】
本発明の一つ以上の実施の形態によれば、速い処理性能を有し、処理負荷が少ない検索またはパターンマッチング方法が提供される。
【課題を解決するための手段】
【0008】
本発明の例示的な実施形態の一側面によれば、パターンマッチング用エンジンは、ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、該計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する誤り検出符号比較部と、前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較するマッチャーと、を備える。
【0009】
また、本発明の他の例示的な実施形態の一側面によれば、端末装置は、マルウェアパターンを格納する格納部と、ターゲットデータの一部であるサブデータに対するエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とを比較する第1の処理と、前記サブデータのエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較する第2の処理を実行するパターンマッチング用エンジンと、を備える。
【0010】
また、本発明のさらに他の例示的な実施形態の一側面によれば、検索またはパターンマッチング方法は、該計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する第1の誤り検出符号比較ステップと、前記ターゲットデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記ターゲットデータと前記マルウェアパターンとを比較する前記ターゲットデータに関する比較ステップと、を含む。
【発明の効果】
【0011】
本発明の一つ以上の実施形態によれば、検索またはパターンマッチングにおいて速い処理性能と低処理負荷を実現するという効果がある。
【0012】
本発明の他の一つ以上の実施の形態によれば、検索またはパターンマッチング動作を行う端末装置において、バッテリー消耗を減らしつつ、高速処理を実現する効果がある。
【0013】
本発明の他の一つ以上の実施形態に係る検索またはパターンマッチングエンジンは、モバイルデバイスのような端末装置のアプリケーションプロセッサにIP(Interllectual Property)の形態で実装されるので、資源の制限されたモバイルデバイスにおいても、低負荷で高速処理を実現するという効果がある。
【図面の簡単な説明】
【0014】
【図1】本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンの構成図である。
【図2】本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【図3】本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【図4】本発明の例示的な実施形態に係るシステムインタフェースの構成図である。
【図5】本発明の例示的な実施形態に係る誤り検出符号を算出する方法を説明するための図である。
【図6】本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明するためのフローチャートである。
【図7】本発明の他の例示的な実施形態に係る検索またはパターンマッチング方法を説明するためのフローチャートである。
【図8】本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【図9】本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【発明を実施するための形態】
【0015】
以上の本発明の目的、他の目的、特徴及び利点は、添付された図面と関連した以下の好ましい実施形態により容易に理解されるはずである。しかしながら、本発明は、ここで説明される実施形態に限定されず、他の形態で具体化されてもよい。むしろ、ここで紹介される実施形態は、開示された内容が徹底かつ完全になるように、そして当業者に、本発明の思想を十分に理解してもらうために提供されるものである。本明細書において、ある構成要素が他の構成要素上にあると言及される場合には、それは、他の構成要素上に直接形成される場合もあり、それらの間に第3の構成要素が介在される場合もあることを意味する。
【0016】
また、あるエレメント(または構成要素)が他のエレメント(または構成要素)上で動作または実行されると言及されるとき、そのエレメント(または構成要素)は、他のエレメント(または構成要素)が動作または実行される環境で動作または実行されるか、または他のエレメント(または構成要素)と直接または間接的に相互作用により動作または実行されると理解されなければならない。
【0017】
あるエレメント、構成要素、装置、またはシステムが、プログラム若しくはソフトウェアからなる構成要素を含むと言及される場合には、明示的な言及がなくても、そのエレメント、構成要素、装置、またはシステムは、そのプログラム若しくはソフトウェアが実行または動作するのに必要なハードウェア(例えば、メモリ、CPU(Central Processing Unit)等)や他のプログラムまたはソフトウェア(例えば、オペレーティングシステム(OS)やハードウェアを駆動するのに必要なドライバ等)を含むと理解されなければならない。
【0018】
また、あるエレメント(または構成要素)が具現化されるに当たって、特別な言及がない限り、そのエレメント(または構成要素)は、ソフトウェア、ハードウェア、またはソフトウェア及びハードウェアのうち、如何なる形態によっても具現化可能であると理解されなければならない。
【0019】
本明細書で使用された用語は、実施形態を説明するためのものであって、本発明を限定するものではない。本明細書において、単数形は、特に言及しない限り、複数形も含む。明細書で使用される「含む」と言及された構成要素は、一つ以上の他の構成要素の存在又は追加を排除しない。
【0020】
以下、図面を参照して本発明を詳細に説明する。以下の特定の実施形態を述べるにおいて、様々に特定された内容は、発明をさらに具体的に説明し、理解を助けるために作成された。しかしながら、本発明を理解することができる程度のこの分野における知識を有した読者は、このような様々に特定された内容がなくても、本発明が実施可能であることを認知できる。ある場合には、周知で発明と大きく関連のない技術的内容は、本発明を説明するにあたって、特別な理由なしでも、読者の混乱を引き起こさないようにあえて述べないこともあることを予め言及しておく。
【0021】
図1は、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンの構成図である。
【0022】
図1に示すように、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジン(以下、マッチング用エンジンとする)は、システムインタフェース1、DB(Data Base)インタフェース3、バッファ5、7、9、19、23、テキストローダー11、ハッシュローダー13、誤り検出符号比較部15、ハッシュ値比較部17、シフトQバッファ19、シフトマッチャー21、及び、ハッシュQバッファ23を備えることができる。
【0023】
システムインタフェース1は、マッチング用エンジンが搭載される装置のシステムバスとマッチング用エンジンとを接続させることができ、DBインタフェース3は、マッチング用エンジンが搭載される装置のDBバスとマッチング用エンジンとを接続させることができる。
【0024】
バッファ5は、DBインタフェース3を介して基準データを受信して格納することができる。ここで、「基準データ」とは、マルウェアパターン、検索用テキスト、ルールパターンであるとよい。マルウェアパターン、検索用テキスト、及び、ルールパターンは、それぞれ、マルウェアパターンDB、検索用テキストDB、及び、ルールパターンDBに格納されている。マルウェアパターンは、ウイルス、アドウェア、スパイウェア、トロイの木馬などのような悪性マルウェアに対するパターンを含む。検索用テキストDBは、検索のための索引語を含み、ルールパターンDBは、パケットに対する遮断または通過を定義したルールを含む。
【0025】
本発明の例示的な実施形態によれば、マルウェアパターンDBは、悪性マルウェアに対するパターンを含み、各パターンに対するハッシュ値、各パターンに対する誤り検出符号、及び各パターンに対するハッシュ値のうちの何れか一つ以上をさらに含むことができる。
【0026】
また、本発明の例示的な実施形態によれば、検索用テキストDBは、索引語を含み、各索引語に対するハッシュ値、各索引語に対する誤り検出符号、及び各索引語に対するハッシュ値のうちの何れか一つ以上をさらに含むことができる。
【0027】
バッファ7とバッファ9とは、ダブルバッファであり、ターゲットデータを互いに交互にDBインタフェース3を介して受信して格納することができる。バッファ7とバッファ9とに格納されたターゲットデータは、互いに交互にテキストローダー11に送信される。
【0028】
本発明の例示的な実施形態によれば、ターゲットデータはファイルであるとよく、このようなターゲットデータは、複数のサブデータに分割されているとよい。このような複数のサブデータは、バッファ7とバッファ9とに交互に格納される。本明細書において、「ターゲットデータ」と「サブデータ」とを、互いに混用して使用するものの、ただし区別する実益がある場合には、両方を区別して使用する。
【0029】
テキストローダー11は、バッファ7とバッファ9とからサブデータを交互に受信して格納し、これらのサブデータは、ハッシュローダー13、及び、誤り検出符号比較部15に入力される。また、テキストローダー11は、バッファ7とバッファ9とからサブデータを交互に受信して格納し、ターゲットデータをハッシュ値比較部17に出力する。
【0030】
ハッシュローダー13は、バッファ5から基準データを受け取り、テキストローダー11からサブデータを受け取る。
【0031】
本発明の例示的な実施形態によれば、ハッシュローダー13は、サブデータのハッシュ値を計算し、該計算したサブデータのハッシュ値と基準データに含まれたハッシュ値とを互いに比較する。
【0032】
以下の表1は、基準データに対するハッシュ値を説明するために例示的に示したものである。
【0033】
【表1】

【0034】
ターゲットデータが1,2,3,4,5,6,7,8,...,D−1,D,D+1,D+2,D+3,...,100からなる、100バイトから構成されていると仮定する。このような場合、ハッシュローダー13は、ターゲットデータのうち、最初の3バイト(1,2,3)をサブデータとしてハッシュ値を求めることができる。このように求めたハッシュ値と上記表1でのハッシュ値のうちの何れか一つとが一致すると、サブデータは、シフトQバッファ19に格納される。
【0035】
一方、両方が互いに一致しないと、ハッシュローダー13は、次の3バイト(2,3,4)をサブデータとしてハッシュ値を求め、このように求めたハッシュ値と上記表1でのハッシュ値のうちの何れか一つとが一致すると、当該サブデータについて、後述する誤り検出符号比較部15による処理が行われる。一致しない場合には、ハッシュローダー13は、その次の3バイト(3,4,5)をサブデータとしてハッシュ値を求め、そのハッシュ値と上記表1でのハッシュ値のうちの何れか一つが一致すると、当該サブデータについて、後述する誤り検出符号比較部15による処理が行われる。ハッシュローダー13は、サブデータの各々に対して上記のような動作を繰り返す。一方、サブデータに関する数値や位置は例示に過ぎず、本発明がこれらの数値や位置に限定されないことはもちろんである。
【0036】
本発明の他の例示的な実施形態によれば、基準データにハッシュ値が含まれていなくても良く、このような場合、ハッシュローダー13は、基準データのハッシュ値を計算し、該計算した基準データのハッシュ値とサブデータのハッシュ値とを互いに比較できる。
【0037】
誤り検出符号比較部15は、基準データの誤り検出符号と、サブデータの誤り検出符号とを互いに比較できる。一方、両方の誤り検出符号が一致する場合にのみ、シフトマッチャー21は、シフトQバッファ19に格納されたサブデータと基準データとの間のマッチング動作を行う。
【0038】
本発明の例示的な実施形態によれば、誤り検出符号比較部15は、両方の誤り検出符号が互いに一致しないと、その結果をシステムレジスタ25に格納することができる。このような場合、該当サブデータに対するマッチング動作は行われない。
【0039】
本発明の例示的な実施形態によれば、基準データの誤り検出符号と一致する誤り検出符号を有したサブデータが、シフトQバッファ19に格納される。この場合、シフトマッチャー21は、誤り検出符号とハッシュ値とが全部一致する場合にのみマッチング動作を行う。
【0040】
ここで、誤り検出符号は、CRC(Cyclic Redundancy Check)値またはチェックサム(Check Sum)であるとよい。ただし、これらは例示に過ぎず、本発明がこれらの値にのみ限定されないことは理解されなければならない。
【0041】
本発明の他の例示的な実施形態によれば、誤り検出符号比較部15は、テキストローダー11からサブデータを受け取って誤り検出符号を計算でき、このようなサブデータの誤り検出符号と基準データの誤り検出符号とを比較できる。
【0042】
本発明の例示的な実施形態によれば、サブデータに対するマッチング動作が行われる前に、誤り検出符号比較部15は、サブデータに対する誤り検出符号を1個または複数計算してもよい。図5は、本発明の例示的な実施形態に係る誤り検出符号を算出する方法を説明するための図である。図5と上記の表1を参照しながら、誤り検出符号が複数である場合を説明する。
【0043】
例えば、基準データは、P1,P2,P3,...PM個のパターンから構成され、ターゲットデータは、1,2,3,4,5,6,7,8,...,D−1,D,D+1,D+2,D+3,D+4,D+5...,100なら成る、100バイトから構成されると仮定する。また、ここで、1,2,3をグループ化する1番目の位置、2,3,4をグループ化する2番目の位置、...D,D+1,D+2をグループ化するN番目の位置、D+1,D+2,D+3をグループ化するN+1番目の位置、D+2,D+3,D+4をグループ化するN+2番目の位置、D+3,D+4,D+5をグループ化するN+3番目の位置と仮定し、ハッシュローダー13は、3バイトずつをサブデータとしてハッシュ値を求めると仮定する。
【0044】
サブデータのN番目の位置に対するハッシュ値を「Z」とすると、表1においてそういうハッシュ値「Z」を有する基準データは、「kdldigiogkdicdkeidlclldidldl...dodlg」である。このような場合、誤り検出符号比較部15は、サブデータのN番目の位置の誤り検出符号(E_N)と、N+1番目の誤り検出符号(E_N+1)、N+2番目の誤り検出符号(E_N+2)、N+3番目の誤り検出符号(E_N+3)の値を計算する。
【0045】
そして、前記計算した誤り検出符号と、基準データ「kdldigiogkdicdkeidlclldidldldldl...dodlg」において「gkdicdke」に対する誤り検出符号、「idlclldi」に対する誤り検出符号、「dldldldl」に対する誤り検出符号がそれぞれ比較され、これらが全部一致する場合に、シフトマッチャー21は、サブデータと「kdldigiogkdicdkeidlclldidldldldl...dodlg」とを比較する動作を行う。
【0046】
ここで、基準データの「gkdicdke」に対する誤り検出符号、「idlclldi」に対する誤り検出符号、「dldldldl」に対する誤り検出符号は、予め計算されて表1に追加的に含まれていてもよいが、これと異なって誤り検出符号比較部15が計算してもよい。
【0047】
すなわち、誤り検出符号比較部15は、一つの基準データに対して複数の誤り検出符号を計算できる。上述した実施形態では、4個を計算する場合を例に挙げたが、これは例示に過ぎず、このような数値にのみ本願発明が限定されないことはもちろんである。
【0048】
ハッシュ値比較部17は、テキストローダー11からターゲットデータを受け取ってハッシュアルゴリズムを適用してその値を計算し、このように計算したハッシュ値と基準データのハッシュ値とを比較する。ハッシュ値比較部17は、ターゲットデータに対して計算したハッシュ値と基準データのハッシュ値とが一致する場合、その結果をシステムレジスタ25に格納することができる。
【0049】
本発明の例示的な実施形態によれば、ターゲットデータに対して計算したハッシュ値と基準データのハッシュ値とが一致する場合には、ターゲットデータにマルウェアパターンが含まれたとみなして、そのターゲットデータに対しては、シフトマッチャー21がマッチング動作を行わない。
【0050】
本発明の例示的な実施形態によれば、ハッシュアルゴリズムは、MD5(Message−Digest algorithm 5)またはSHA(Secure Hash Algorithm)でありうる。
【0051】
シフトQバッファ19は、サブデータのハッシュ値が基準データのものと一致し、サブデータの誤り検出符号が基準データのものと一致する、そのサブデータを格納する。そして、シフトQバッファ19に格納されたサブデータに対してのみシフトマッチャー21によりマッチング動作が行われる。
【0052】
シフトマッチャー21は、サブデータと基準データとを比較して一致するかどうかに対する結果をシステムレジスタ25に格納し、両方が一致する場合に、該当サブデータは、ハッシュQバッファ23に格納される。
【0053】
シフトマッチャー21は、サブデータの一部(中間バイトと最後バイト)と基準データの一部とを比較して両方が一致する場合に、サブデータの全体と基準データの全体とを比較できるが、これは例示に過ぎず、シフトマッチャー21は、一致するかどうかに関わらずサブデータの全体と基準データの全体とを比較することも可能である。
【0054】
ハッシュQバッファ23は、基準データと一致するサブデータを格納する。このように格納されたサブデータを利用して検索またはパターンマッチング用エンジンを動作させるファームウェア(図示せず)は、複雑な文法的パターンなどがターゲットデータにあるかどうかを判断できる。
【0055】
一方、図示していないが、検索またはパターンマッチング用エンジンを動作させるファームウェア(図示せず)は、システムインタフェース1及び/またはデータベースインタフェース3を介して検索またはパターンマッチング用エンジンを制御できる。
【0056】
なお、図1の構成において、ハッシュ値比較部17が省略されてもよい。また、ハッシュ値比較部17の有無に関らず、ハッシュローダー13、誤り検出符号比較部15のいずれか一方が省略されていてもよい。この場合、シフトQバッファ19には、ハッシュ値が基準データのものと一致するサブデータか、誤り検出符号が基準データのものと一致するサブデータのいずれかが格納され、シフトQバッファ19に格納されたサブデータに対して、シフトマッチャー21がマッチング動作を行うとよい。
【0057】
さらには、誤り検出符号比較部15は、サブデータに対する誤り検出符号を計算する場合を例示して説明したが、ターゲットデータに対する誤り検出符号を計算しても構わない。この場合、ハッシュローダー13は省略され、シフトQバッファ19には、誤り検出符号が基準データのものと一致するターゲットデータが格納され、シフトマッチャー21が当該ターゲットデータについてマッチング動作を行うとよい。
【0058】
図2は、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図である。
【0059】
図2に示すように、本発明の例示的な実施形態に係る端末装置100は、アプリケーションプロセッサ110、第1メモリ130、及び第2メモリ140を備えることができる。ここで、端末装置100は、PC、スマートフォン、PDA、モバイル機器、ネットワーキングが可能な埋め込みデバイス、または携帯電話のように検索またはパターンマッチングの必要性がある装置であれば、いかなる装置でも良い。
【0060】
アプリケーションプロセッサ110は、中央処理装置(CPU)120と、検索またはパターンマッチング用エンジン150を備えることができる。ここで、検索またはパターンマッチング用エンジン150は、図1において説明した本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンのうちの何れか一つであるとよい。
【0061】
本発明の例示的な実施形態によれば、図2に示すように、検索またはパターンマッチング用エンジン150は、IP(Interllectual Property)の形態でアプリケーションプロセッサに内蔵されるとよい。
【0062】
第1メモリ130には、検索またはパターンマッチング用エンジン150を動作させるためのファームウェアが格納され、ファームウェアは、第2メモリ140にロードされて動作する。
【0063】
検索またはパターンマッチング用エンジン150は、図1において説明したように、システムインタフェースとデータベースインタフェースとを有することができ、このようなインタフェースを介してファームウェアが検索またはパターンマッチング用エンジン150を制御することができる。
【0064】
図3に示すように、本発明の他の例示的な実施形態に係る端末装置200は、アプリケーションプロセッサ(AP)210とシステムオンチップ290とを備えることができる。また、図示していないが、アプリケーションプロセッサ210の制御下で動作するアプリケーションがさらに備えられていてもよい。
【0065】
ここで、システムオンチップ290は、中央処理装置(CPU)260、インタフェース(IF)270、メモリ280、及び検索またはパターンマッチング用エンジン250を備えるとよい。ここで、検索またはパターンマッチング用エンジン250は、図1において説明した本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンのうちの何れか一つであるとよい。
【0066】
メモリ280には、検索またはパターンマッチング用エンジン250を制御するファームウェアがロードされ、中央処理装置260を利用してエンジン250を制御する。
【0067】
インタフェース270は、システムオンチップ290とアプリケーションプロセッサにより動作するアプリケーションとを接続する機能を果たすことができる。一例として、インタフェース270は、ウェブブラウザのようなアプリケーションとのインタフェーシング機能を果たすインタフェース、アンチマルウェアスキャニングのためのユーザインタフェースアプリケーションとのインタフェーシング機能を果たすインタフェース、検索のためのアプリケーションとのインタフェーシング機能を果たすインタフェースを備えることができる。ここで、これらのアプリケーションは、例えば、AP210によって動作される。
【0068】
以上のように、図1ないし図3を参照して説明した検索またはパターンマッチング用エンジンは、多様に変形されてもよく、例えば、検索またはパターンマッチング用エンジンは、i)検索語をスキャニングする検索用エンジン(SCエンジン)、ii)マルウェアをスキャニングするパターンマッチング用エンジン(AMエンジン)またはiii)パケットデータをフィルタリングするファイアウォールエンジン(FWエンジン)のうちの何れか一つのエンジンであるとよい。
【0069】
例えば、図8は、図2の実施形態の変形例であって、本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図を示したものである。
【0070】
図8に示すように、本発明の例示的な実施形態に係る端末装置300は、アプリケーションプロセッサ310、第1メモリ330、及び第2メモリ340を備えることができる。これらの構成要素のうち、図2における構成要素の番号と下2桁が同一の構成要素の動作は、図2における当該構成要素の動作と同一または類似するので、詳細な説明は省略する。
【0071】
アプリケーションプロセッサ310は、中央処理装置(CPU)320と、複数のエンジンからなるエンジン部355とを備えることができる。
【0072】
エンジン部355は、検索語をスキャニングする検索用エンジン(Searching Engine:SCエンジン)353、マルウェアをスキャニングするパターンマッチング用エンジン(AM:Anti−Malware Engine:AMエンジン)350、及びiii)パケットデータをフィルタリングするファイアウォールエンジン(Firewall Engine:FWエンジン)351を備えることができ、これらのエンジンは、本発明の例示的な実施形態によって説明された検索またはパターンマッチング用エンジンである。
【0073】
図8の本発明の例示的な実施形態によれば、エンジン部355は、IP(Interllectual Property)の形態でアプリケーションプロセッサに内蔵されるとよく、上述したように、複数のエンジン(AMエンジン、SCエンジン、FWエンジン)を備えることができる。
【0074】
AMエンジン350、SCエンジン353、及びFWエンジン351の動作は、図2において説明した検索またはパターンマッチング用エンジンの動作と同一または類似している。すなわち、AMエンジン350は、マルウェアパターンDBとターゲットデータ(例えば、ファイル)とをマッチングさせて、両方が一致しているかどうかを判定し、SCエンジン353は、検索用テキストDBとターゲットデータ(例えば、検索語)とをマッチングさせて、ターゲットデータが検索用テキストDBに含まれているかどうかを判定する。また、FWエンジン351は、ルールパターンDBとターゲットデータ(例えば、パケットデータ)とをマッチングさせて、両方が一致しているかどうかを判定し、その結果に応じて、ターゲットデータの外部との送受信を遮断または通過させることができる。
【0075】
図8には示されていないが、端末装置300は、基準データ(例えば、マルウェアパターンDB、検索用テキストDB、またはルールパターンDB)を格納する格納部をさらに備えてもよく、パケットデータを外部から受信または送信するNIC(Network Interface Card)をさらに備えてもよい。NICを介して外部から受信されるパケットデータは、ウェブブラウザのようなアプリケーションに伝達される前に、FWエンジン351を介して通過するかどうかが決定されるとよい。また、外部に送信されるパケットデータもやはり、FWエンジン351を介して通過するかどうかが決定された後に、通過すると決定された場合に、NICを介して外部に送信されるとよい。
【0076】
また、図9は、本発明の他の例示的な実施形態に係る検索またはパターンマッチング用エンジンを有した端末装置の構成図を示した図であって、図3の変形例である。
【0077】
図9に示すように、本発明の他の例示的な実施形態に係る端末装置400は、アプリケーションプロセッサ(AP)410とシステムオンチップ490とを備えることができる。また、図示されていないが、アプリケーションプロセッサ410の制御下で動作するアプリケーションがさらに備えられていてもよい。
【0078】
ここで、システムオンチップ490は、中央処理装置(CPU)460、インタフェース(IF)470、メモリ480、及びエンジン部455を備えるとよい。ここで、エンジン部455は、検索語をスキャニングする検索用エンジン(Searching Engine:SCエンジン)453、マルウェアをスキャニングするパターンマッチング用エンジン(AM:Anti−Malware Engine:AMエンジン)450、及びiii)パケットデータをフィルタリングするファイアウォールエンジン(Firewall Engine:FWエンジン)451を備えるとよく、これらのエンジンは、本発明の例示的な実施形態に係る検索またはパターンマッチング用エンジンであるとよい。
【0079】
図9の構成要素のうち、図3における構成要素の番号と下2桁が同一の構成要素の動作は、図3における当該構成要素の動作と同一または類似するので、詳細な説明は省略する。
【0080】
AMエンジン450、SCエンジン453、及びFWエンジン451の動作は、図3において説明した検索またはパターンマッチング用エンジンの動作と同一または類似している。すなわち、AMエンジン450は、マルウェアパターンDBとターゲットデータ(例えば、ファイル)とをマッチングさせて、両方が一致しているかどうかを判定し、SCエンジン453は、検索用テキストDBとターゲットデータ(例えば、検索語)とをマッチングさせて、ターゲットデータが検索用テキストDBに含まれていているかどうかを判定する。また、FWエンジン451は、ルールパターンDBとターゲットデータ(例えば、パケットデータ)とをマッチングさせて、両方が一致しているかどうかを判定し、その結果に応じてターゲットデータの外部との送受信を遮断または通過させることができる。
【0081】
図9には示されていないが、端末装置400は、基準データ(例えば、マルウェアパターンDB、検索用テキストDB、またはルールパターンDB)を格納する格納部をさらに備えてもよく、パケットデータを外部から受信又は送信するNIC(Network Interface Card)をさらに備えてもよい。NICを介して外部から受信されるパケットデータは、ウェブブラウザのようなアプリケーションに送信される前に、通過するかどうかがFWエンジン451により決定されるとよい。また、外部に送信されるパケットデータもやはり、通過するかどうかがFWエンジン451により決定された後に、通過すると決定された場合に、NICを介して外部に送信されるとよい。一方、NICは、システムオンチップ490の内部に内蔵されて実装されるか、または/及びバス471に接続されてもよい。
【0082】
システムオンチップ490の内部にNIC(以下、システムオンチップNICとする)が内蔵されて実装された場合、システムオンチップNICを介して外部からパケットデータが受信される。システムオンチップNICを介して受信されたパケットデータは、FWエンジン451に送信され、FWエンジン451によって通過と決定された後にパケットデータを処理するアプリケーションに伝達される。これに対し、外部にパケットデータを送信しようとする場合にも、まずFWエンジン451にパケットデータが伝達され、FWエンジン451により通過と決定された後に、NICを介して外部に送信される。
【0083】
バス471にNIC(以下、NICとする)が接続された場合にも、以上に類似した動作が行われる。すなわち、外部からパケットデータをNICが受信すると、該当するアプリケーションに伝達される前に、まずシステムオンチップのFWエンジン451に伝達されて、通過するかどうかがFWエンジン451により決定される。そして、通過と決定されたパケットデータのみをアプリケーションに伝達される。反対の場合、外部にパケットデータを送信しようとする場合にも、まず、FWエンジン451にパケットデータが伝達されて、通過するかどうかが決定され、通過と決定されたパケットデータがアプリケーションプログラムに伝達される。
【0084】
以上のように、図8と図9では、エンジン部は、3個のエンジン(AMエンジン、FWエンジン、SCエンジン)を備えると説明したが、これは例示に過ぎず、これらのエンジンのうちの何れか一つまたは二つのエンジンを備えるようにエンジン部が構成されてもよい。あるいは、検索またはパターンマッチングエンジンが一つのハードウェアとして構成され、上記の三つのエンジンの機能を兼用できるように構成されてもよい。
【0085】
図4は、本発明の例示的な実施形態に係るシステムインタフェースの構成図である。
【0086】
図4に示すように、インタフェース1は、システムバスと接続機能を担当するシステムインタフェース、マイクロコントローラユニットと接続を担当するインタフェース、マイクロコントローラユニット(以下、MCU)、及びマルチプレクサー(以下、MUX)をさらに備えるとよい。
【0087】
本発明の例示的な実施形態によれば、MCUインタフェースを介してスキャニングの対象になるターゲットデータが格納された位置情報、ターゲットデータの大きさ情報、ターゲットデータに対してマッチングするマッチャー情報がMCUに送信され、MCUは、そういう情報をMUXを介してレジスタ25に送信する。以後、レジスタ25に格納された情報により検索またはパターンマッチングするエンジンは、コンフィギュラブル(Configurable)に動作できる。
【0088】
また、検索またはパターンマッチングエンジンにより発生する割込み(interrupt)もMCUにより処理される。
【0089】
システムレジスタ25は、例えば、検索またはパターンマッチングエンジンのバッファの動作のためのレジスタ、検索またはパターンマッチングのためのレジスタ、エラー検出のためのレジスタ、ハッシュ値マッチングのためのレジスタ、及び上述したレジスタを制御するための制御レジスタを備えるとよい。
【0090】
図6は、ハッシュ値比較部17の構成が省略された場合の本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明するためのフローチャートである。
【0091】
以下、図6と図1とを参照して、本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明する。
【0092】
バッファ7、9は、ターゲットデータを受信して、サブデータを格納する(S101)。
【0093】
テキストローダー11は、バッファ7、9にアクセスし、処理対象となるサブデータを取得する(S103)。
【0094】
ハッシュローダー13は、テキストローダー11を介して受け取ったサブデータのハッシュ値を計算し、このハッシュ値と基準データのハッシュ値とを比較する(S105)。ハッシュ値と基準データのハッシュ値が一致する場合(S107:Y)、後述のS109の処理が実行されるが、そうでない場合(S107:N)、マッチング結果をレジスタに記録する(S115)。
【0095】
ハッシュ値と基準データのハッシュ値が一致する場合(S107:Y)、誤り検出符号比較部15は、テキストローダー11を介してサブデータを受け取り、該受け取ったサブデータに対する誤り検出符号を計算し、このように計算した誤り検出符号と基準データの誤り検出符号とを比較する(S109)。
【0096】
シフトマッチャー21は、サブデータの誤り検出符号と基準データの誤り検出符号とが一致する場合(S111:Y)に、シフトQバッファ19に格納されたサブデータと基準データとを比較する(S113)。
【0097】
シフトマッチャー21は、システムレジスタにマッチング結果をレジスタに記録する(S115)。一方、シフトマッチャー21は、サブデータの誤り検出符号と基準データの誤り検出符号とが一致しない場合(S111:N)には、マッチング結果をレジスタに記録する(S115)。そして、全サブデータについて比較を終了していない場合(S117:N)、S103〜S117までの処理を繰り返す。全サブデータについて比較を終了した場合(S117:Y)、ターゲットデータに対するマッチング動作を終了する。
【0098】
図7は、誤り検出符号比較部15の構成が省略された場合の本発明の他の例示的な実施形態に係る検索またはパターンマッチング方法を説明するための図である。
【0099】
以下、図7と図1とを参照して、本発明の例示的な実施形態に係る検索またはパターンマッチング方法を説明する。
【0100】
バッファ7、9は、ターゲットデータを受信してテキストローダー11に伝達する(S201)。
【0101】
ハッシュ値比較部15は、テキストローダー11を介してターゲットデータに関するテキストを受け取り、該受け取ったテキストに対してハッシュアルゴリズムを適用してテキスト全体のハッシュ値(以下、第1のハッシュ値と呼ぶ)を計算し、このように計算した第1のハッシュ値と基準データの第1のハッシュ値とを比較する(S203)。
【0102】
第1のハッシュ値が互いに一致すると(S205:Y)、ハッシュ値比較部15は、その結果をレジスタ25に記録し(S215)、全サブデータについて比較を終了した(S217:Y)ので、ターゲットデータに対するマッチング動作を終了する。
【0103】
第1のハッシュ値が互いに一致しない場合(S205:N)、テキストローダー11は、バッファ7、9にアクセスし、処理対象となるサブデータを取得する(S207)。
【0104】
つぎに、ハッシュローダー13は、テキストローダー11を介して受け取った3バイトごとのテキスト(サブデータ)のハッシュ値(以下、第2のハッシュ値と呼ぶ)を計算し、この第2のハッシュ値と基準データの第2のハッシュ値とを比較する(S209)。
【0105】
第2のハッシュ値が互いに一致する場合(S211:Y)には、基準データとターゲットデータとを比較し(S213)、ステップS213の比較結果をレジスタ25に記録する(S215)。
【0106】
一方、第2のハッシュ値が互いに一致しない場合(S211:N)には、その結果をレジスタ25に記録する(S215)そして、全サブデータについて比較を終了していない場合(S217:N)、S207〜S217までの処理を繰り返す。全サブデータについて比較を終了した場合(S217:Y)、ターゲットデータに対するマッチング動作を終了する。
【0107】
図6と図7は、それぞれ、ハッシュ値比較部17の構成が省略された場合、誤り検出符号比較部15の構成が省略された場合の実施形態の動作について説明したに過ぎない。他の構成が省略された場合、あるいは、図1の構成がすべて存在する場合の本発明の実施形態の動作についても類推することができる。例えば、ハッシュ値比較部17及びハッシュローダー13が省略される場合、図6においてS105とS107が省略されればよい。また、図1の構成がすべて存在する場合の本発明の実施形態の動作は、図7のS211とS213との間に、図6のS109とS111の処理がなされればよい。
【0108】
また、図6は、誤り検出符号比較部15は、サブデータを処理する場合を説明しているが、ターゲットデータを処理する場合、S103〜S107、S117の処理が省略されればよい。あるいは、図7において、S207、S217の処理が省略され、S209、S211に代えて、図6のS109、S111の処理が実行されてもよい。図1に誤り検出符号比較部15がターゲットデータを処理する場合について詳細に説明したので、その説明を参照されたい。
【0109】
本明細書に説明された多様な技術は、ハードウェアまたはソフトウェア、またはこれらの適切な組合せにより具現化されうる。したがって、検索またはパターンマッチングエンジンとその方法の全てまたは一部は、ハードウェアのみから構成されるか、またはハードウェアとソフトウェアとの組合せ、またはソフトウェアのみから構成されうる。ソフトウェアから構成される場合には、フロッピーディスク(登録商標)、CD−ROM、ハードドライブ、または任意のその他コンピュータ読み取り可能格納媒体などの実体的な媒体に具現化されたプログラムコード(すなわち、命令語)の形態を取ることができる。
【0110】
また、本発明の一つ以上の例示的な実施形態に係る検索またはパターンマッチングエンジン及びこれを備えた端末装置並びにその方法は、電気線またはケーブル、光ファイバなどの送信媒体を介してまたは任意のその他形態の送信を介して送信されるプログラムコードの形態により具現化されて、通信を介して実施でき、このような送信媒体も、本発明の一実施形態に該当するはずである。
【0111】
以上、本発明は、限定された実施形態と図面により説明されたが、本発明は、上記の実施形態に限定されるものではなく、本発明が属する分野における通常の知識を有した者であればこのような記載から多様な修正及び変形が可能である。したがって、本発明の範囲は、説明された実施形態に限定されてはならず、後述する特許請求の範囲だけでなく、この特許請求の範囲と均等なものによって定められねばならない。
【符号の説明】
【0112】
1 システムインタフェース
3 DB(Deta Base)インタフェース
5、7、9、19、23 バッファ
11 テキストローダー
13 ハッシュローダー
15 誤り検出符号比較部
17 ハッシュ値比較部
21 シフトマッチャー

【特許請求の範囲】
【請求項1】
ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、該計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する誤り検出符号比較部と、
前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較するマッチャーと、
を備えることを特徴とするパターンマッチング用エンジン。
【請求項2】
前記サブデータのハッシュ値とマルウェアパターンのハッシュ値とを比較するハッシュローダーをさらに備え、
前記マッチャーは、また、前記サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較することを特徴とする請求項1に記載のパターンマッチング用エンジン。
【請求項3】
前記ターゲットデータに対するハッシュアルゴリズムを適用してハッシュ値を計算し、該計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較するハッシュ値比較部をさらに備え、
前記誤り検出符号比較部、前記マッチャー、及び、前記ハッシュローダーは、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、実行されることを特徴とする請求項2に記載のパターンマッチング用エンジン。
【請求項4】
前記サブデータを前記ハッシュローダーと前記誤り検出符号比較部にそれぞれ提供するテキストローダーをさらに備えることを特徴とする請求項3に記載のパターンマッチング用エンジン。
【請求項5】
前記ターゲットデータを前記ハッシュ値比較部に提供するテキストローダーをさらに備えることを特徴とする請求項4に記載のパターンマッチング用エンジン。
【請求項6】
前記ターゲットデータ、又は、前記サブデータを互いに交互に格納する第1バッファと第2バッファとをさらに備え、
前記第1バッファと前記第2バッファとは、互いに交互に前記ターゲットデータ、又は、前記サブデータを前記テキストローダーに提供することを特徴とする請求項5に記載のパターンマッチング用エンジン。
【請求項7】
マルウェアパターンを格納する格納部と、
ターゲットデータの一部であるサブデータに対するエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とを比較する第1の処理と、前記サブデータのエラー検出用値誤り検出符号と前記マルウェアパターンのエラー検出用値誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較する第2の処理を実行するパターンマッチング用エンジンと、
を備えることを特徴とする端末装置。
【請求項8】
前記パターンマッチング用エンジンは、また、サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とを比較する第3の処理を実行し、前記サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致する場合に、前記第2の処理を実行することを特徴とする請求項7に記載の端末装置。
【請求項9】
前記パターンマッチング用エンジンは、また、前記ターゲットデータに対するハッシュ値を計算し、該計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較し、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、前記第1の処理、前記第2の処理、及び、前記第3の処理を実行することを特徴とする請求項8に記載の端末装置。
【請求項10】
アプリケーションプロセッサをさらに備え、
前記パターンマッチング用エンジンは、前記アプリケーションプロセッサのIPの形態で内蔵されることを特徴とする請求項7に記載の端末装置。
【請求項11】
前記パターンマッチング用エンジンは、システムオンチップの形態で構成され、
前記ファームウェアを格納する格納部は、前記システムオンチップに備えられたことを特徴とする請求項7に記載の端末装置。
【請求項12】
前記システムオンチップは、前記ファームウェアを動作させるプロセッサをさらに備えることを特徴とする請求項11に記載の端末装置。
【請求項13】
ターゲットデータに対する誤り検出符号を計算し、該計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する第1の誤り検出符号比較ステップと、
前記ターゲットデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記ターゲットデータと前記マルウェアパターンとを比較する前記ターゲットデータに関する比較ステップと、
を含むことを特徴とする検索またはパターンマッチング方法。
【請求項14】
前記ターゲットデータに対するハッシュ値を計算し、該計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較する前記ターゲットデータのハッシュ値に関する比較ステップをさらに含み、
前記第1の誤り検出符号比較ステップ、及び、前記ターゲットデータに関する比較ステップは、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、実行されることを特徴とする請求項13に記載の検索またはパターンマッチング方法。
【請求項15】
ターゲットデータの一部であるサブデータに対する誤り検出符号を計算し、該計算した誤り検出符号とマルウェアパターンの誤り検出符号とを比較する第2の誤り検出符号比較ステップと、
前記サブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致する場合に、前記サブデータと前記マルウェアパターンとを比較する前記サブデータに関する比較ステップと、
を備えることを特徴とする検索またはパターンマッチング方法。
【請求項16】
前記サブデータのハッシュ値と、マルウェアパターンのハッシュ値とを比較する前記サブデータのハッシュ値に関する比較ステップをさらに含み、
前記サブデータのハッシュ値と前記マルウェアパターンのハッシュ値とが互いに一致する場合に、前記サブデータに関する比較ステップが実行されることを特徴とする請求項15に記載の検索またはパターンマッチング方法。
【請求項17】
前記ターゲットデータに対するハッシュ値を計算し、該計算したハッシュ値と前記マルウェアパターンのハッシュ値とを比較する前記ターゲットデータのハッシュ値に関する比較ステップをさらに含み、
前記第2の誤り検出符号比較ステップ、前記サブデータに関する比較ステップ、及び、前記サブデータのハッシュ値に関する比較ステップは、前記ターゲットデータのハッシュ値と前記マルウェアパターンのハッシュ値が一致しない場合にのみ、実行されることを特徴とする請求項16に記載の検索またはパターンマッチング方法。
【請求項18】
前記ターゲットデータと前記マルウェアパターンのハッシュ値とが互いに一致すると、前記誤り検出符号と前記ハッシュ値とが一致したかどうかに関わらず、前記ターゲットデータに前記マルウェアパターンが含まれたと判断するステップをさらに含むことを特徴とする請求項14又は17に記載の検索またはパターンマッチング方法。
【請求項19】
ターゲットデータから複数のサブデータを構成するステップと、
前記サブデータをダブルバッファに書き込むステップをさらに含み、
前記第2の誤り検出符号比較ステップは、前記複数のサブデータをダブルバッファの一方のバッファから順次読み込んで、前記読み込まれたサブデータから前記誤り検出符号をそれぞれ計算し、
前記ターゲットデータに関する比較ステップは、前記読み込まれたサブデータの誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致したときに行われることを特徴とする請求項15に記載の検索またはパターンマッチング方法。
【請求項20】
ターゲットデータから複数のサブデータを構成するステップと、
前記サブデータをダブルバッファに書き込むステップをさらに含み、
前記サブデータのハッシュ値に関する比較ステップは、前記複数のサブデータをダブルバッファの一方のバッファから順次読み込んで、前記読み込まれたサブデータからハッシュ値を順次計算し、
前記第2の誤り検出符号比較ステップは、前記サブデータのハッシュ値に関する比較ステップにおいて、前記マルウェアパターンのハッシュ値とハッシュ値が一致する前記読み込まれたサブデータである第1のサブデータ、及び、前記第1のサブデータの後に続く少なくとも一つ以上のサブデータに対する誤り検出符号をそれぞれ計算し、該計算した複数の誤り検出符号と前記マルウェアパターンの誤り検出符号とを比較し、
前記複数の誤り検出符号と前記マルウェアパターンの誤り検出符号とが互いに一致したときに、前記サブデータに関する比較ステップが実行されることを特徴とする請求項16に記載の検索またはパターンマッチング方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−109761(P2013−109761A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2012−251053(P2012−251053)
【出願日】平成24年11月15日(2012.11.15)
【出願人】(510294195)サムソン エスディーエス カンパニー リミテッド (33)
【Fターム(参考)】