JP2004528651A - コンピュータウイルス検査装置及び方法 - Google Patents

コンピュータウイルス検査装置及び方法 Download PDF

Info

Publication number
JP2004528651A
JP2004528651A JP2002584171A JP2002584171A JP2004528651A JP 2004528651 A JP2004528651 A JP 2004528651A JP 2002584171 A JP2002584171 A JP 2002584171A JP 2002584171 A JP2002584171 A JP 2002584171A JP 2004528651 A JP2004528651 A JP 2004528651A
Authority
JP
Japan
Prior art keywords
pattern
memory
data
matching
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2002584171A
Other languages
English (en)
Other versions
JP4334231B2 (ja
JP2004528651A5 (ja
Inventor
清敏 吉井
Original Assignee
ザクソン・アールアンドディ株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ザクソン・アールアンドディ株式会社 filed Critical ザクソン・アールアンドディ株式会社
Publication of JP2004528651A publication Critical patent/JP2004528651A/ja
Publication of JP2004528651A5 publication Critical patent/JP2004528651A5/ja
Application granted granted Critical
Publication of JP4334231B2 publication Critical patent/JP4334231B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

大規模で高速なネットワークを流れるデータのコンピュータウイルス感染有無を高速に検査する装置を提供する。本発明は、ホストCPUとは別に1つ以上の専用回路を備え、これによりコンピュータウイルスの感染有無の検査処理において処理負荷の高いパターンマッチング処理を実行する。専用回路を複数搭載することにより、コンピュータウイルス検査処理の全体としてのスループットを向上する。また、前記装置を一つないしは複数搭載したプロキシサーバを提供して、ネットワークのゲートウェイにおいてコンピュータウイルス検査を実施する場合のネットワークスループットの向上を図る。

Description

【技術分野】
【0001】
本発明は、コンピュータウイルスを検査するためのコンピュータウイルス検査装置及び方法に関する。
【背景技術】
【0002】
WO97/12321及びWO97/39399は、コンピュータウイルスを検査もしくは除去するためのコンピュータウイルス検査プログラムを開示する。これら従来のプログラムには次のような問題があった。
【0003】
問題(A)
パターンマッチング処理をホストCPUで処理していたため処理中のCPU負荷が高かった。しかも、一つのCPUにつき同時に瞬間的には一つの処理しかできず、処理に時間がかかるとともに、当CPUが処理する他のプロセスに大きな影響を与えた。コンピュータウイルス検出のためのパターンマッチング処理は、通常、大量のデータ同士の照合処理であるため、データ量(発見すべきウイルスパターンの数)に応じて処理時間が増大する。
【0004】
問題(B)
前記のパターンデータおよびパターンマッチングプログラムを、処理を高速化するためにメインメモリ上に常駐させておく必要があり、メインメモリを大量に消費した。
【0005】
問題(C)
前記のパターンデータおよびパターンマッチングプログラムが書き換えの容易なメインメモリ上に存在するため、コンピュータウイルスによるコンピュータウイルス検査プログラムやパターンデータの破壊行為に対して非常に脆弱であった。
【0006】
日本特開平8−179942は、上記課題(A)(B)(C)に対する回避方法を開示する。しかしながら、この先行技術による方法には次のような問題がある。
【0007】
問題(D)
先行技術の外付けの第2のCPUは、従来の方法においてホストCPUが行っていたパターンマッチングプログラムの実行を単に代行しているにすぎず、全体としての処理速度はほとんど改善しない。
【特許文献1】
WO97/12321公報
【特許文献2】
WO97/39399公報
【特許文献3】
特開平8−179942公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、前記(A)から(D)の問題を同時に解決し、コンピュータウイルスの検査を高速に行うための手段を提供することを目的とする。
【課題を解決するための手段】
【0009】
この発明に係るコンピュータウイルス検査装置は、データを含むファイルを一意に特定するファイル情報を受け、これを保持するタスクキューメモリと、前記タスクキューメモリの前記ファイル情報によって特定されるファイルを取得して記憶するファイルバッファメモリと、コンピュータウイルスを識別するためのパターンデータを記憶するパターンデータメモリと、前記ファイルバッファメモリに記憶されたファイルと前記パターンデータを照合し、一致するパターンがあるか否かを判定する一つ以上のパターンマッチング回路と、前記タスクキューメモリの前記ファイル情報に基づいて少なくとも一つの前記パターンマッチング回路を起動するスケジューラと、前記パターンマッチング回路の判定結果を前記ファイル情報に関連づけて通知する通知手段と、を備える。
【発明を実施するための最良の形態】
【0010】
発明の実施の形態1.
図1を用いて本発明の実施形態を説明する。ホストCPU101,メインメモリ102を備えるコンピュータはネットワークに接続されている。このコンピュータはバスインターフェース201を通してコンピュータウイルス検査装置1(以下、本装置という)に接続される。
【0011】
ホストCPU101により実行される通信ソフトウェアによりネットワークから受信されたデータは、一旦メインメモリ102上に記憶される。データサイズの大きい場合、そのデータの一部または全部を、ホストCPU101からアクセス可能な図示しない外部記憶装置に一時的に記憶することもある。
【0012】
メインメモリ102上に記憶されたデータは、通信のセッション単位、パケット単位、ないしはファイル単位などあらかじめ決められた単位(単位が複数種類に渡っても良い)で一つないしは複数のデータブロックを構成する。ここでは一例としてファイル単位で取り扱う場合を述べる。
【0013】
ファイル単位でメインメモリ102に記憶されたデータブロックの開始アドレスとデータ長は図2に示すメインメモリ上のテーブルに記憶される。ホストCPUにより実行されるプログラムをホストプロセスと呼ぶ。メインメモリ102に記憶されたデータブロックはホストプロセス104により記述される。以下、前記テーブルの情報を「タスク情報」と呼ぶ。
【0014】
前記データブロックの一部ないしは全部が外部記憶装置に記憶される場合、開始アドレスが不定になる可能性があるため、開始アドレスの代わりにID(任意の識別文字列)を定義し、前記開始アドレスの代替としてIDを用いてデータブロックを一意に定義しても良い。
【0015】
前記テーブルにデータブロックが定義されると、ホストプロセス104は本装置のタスクキュー202に前記テーブルの内容の一部または全部をバスインターフェース201を介して転送する。なお、タスクキューは一般にはFIFO(FIRST IN FIRST OUT)形式のメモリまたはレジスタセットにより構成される。
【0016】
タスクキュー202にタスク情報が転送されたことを検知したスケジューラ203は、本装置のDMA回路204を起動する。DMAコントローラ204は、タスク情報に基づいてメインメモリ102上のデータブロックを取得して、これを本装置のファイルバッファメモリ205上に置くとともに、スケジューラ203にファイルバッファメモリ205の準備完了状態を通知する。
【0017】
前記手順において、本装置のファイルバッファメモリ205に十分な余裕があるときは、一度に複数のデータブロックを同時にDMA転送してもよい。
【0018】
起動されたスケジューラ203は、パターンマッチング回路206を起動するとともに、これにファイルバッファメモリ205中のアドレスとデータ長を渡す。パターンマッチング回路が複数ある場合には、その一部又は全部をあらかじめ決められた手順で選定する。
【0019】
スケジューラ203及びパターンマッチング回路206は論理回路、あるいは、これと等価なコンピュータプログラム、プロセッサ(ホストCPU101が兼ねてもよい)及びメモリで構成される。
【0020】
起動されたパターンマッチング回路206は、パターンデータメモリ210からパターンデータを読み出すとともに、これとデータブロックを照合する。回路206は、一致するパターンを検出したとき,フラグ207を立てる(フラグレジスタの所定のビットをオンにする)。
【0021】
フラグ207の変化を検出した検知回路(NOTIFIER)208は、バスインターフェース201を介してホストプロセス104に通知する。ホストプロセス104(またはホストプロセスと並列に実行される検知プログラム105)は、例えば前記検知回路208のレジスタをバスインターフェース201を介して定期的にポーリングすることによってフラグ207の変化を検出し、変化があれば表示装置に注意を促すメッセージを表示して操作者にコンピュータウイルスと合致するパターンを検知したことを示す警告を行う。
【0022】
検知回路208自身が発光ダイオードや発音装置などを備えるインジケータ209を起動し、コンピュータウイルスと合致するパターンを検知したことをホストプロセスとは無関係に知らせるようにしてもよい。
【0023】
前記パターンデータメモリ210の内容は、パターン更新装置211により定期的に、あるいはユーザによる操作によって更新される。パターン更新装置211は、パターン更新プログラムとそれを実行するプロセッサ及びメモリを備える。パターン更新プログラムはメインメモリ上にあってもよく(図1の103)、また、前記プロセッサはホストCPU101が兼ねてもよい。更新データはインターネット等のネットワーク上のファイルサーバから取得し更新する。そのための方法として、パターン更新装置211がネットワーク接続手段を備え、装置211により前記ファイルサーバに接続する方法と、ネットワーク接続機能を備えたコンピュータがファイルサーバに接続し、取得した更新データをバスインターフェース201を介してパターンデータメモリ210に書き込む方法が考えられる。
【0024】
図1において、複数のパターンマッチング回路206が並列に接続されている。スケジューラ203はファイルバッファメモリ205上の複数のデータブロックをそれぞれのパターンマッチング回路206に分散して起動する。
【0025】
分散して起動するとは、例えば、第1のパターンマッチング回路に一つ目のデータブロックの情報(開始アドレス、データ長など)を渡した後、第1のパターンマッチング回路の実行完了を待つことなく第2のパターンマッチング回路に2つ目のデータブロックの情報を渡すことである。
【0026】
例えば、データブロックの先頭アドレスを第1のパターンマッチング回路206に渡すと共に、例えばデータブロックの先頭に1024を加えたアドレスを第2のパターンマッチング回路に渡すことによって、1024バイトを超えるデータブロックを分散して処理する。ただし、この方法はマッチングすべき全てのパターンデータのサイズが1024バイト未満であることが必要になり、全ての場合に利用できるわけではない。
【0027】
他のやり方として、パターンデータメモリに2つ以上の照合されるべきパターンデータが存在する場合、そのうちの少なくとも1つのパターンデータを第1のパターンマッチング回路へ渡し、残りの少なくとも1つのパターンデータを第2のパターンマッチング回路へ渡すことにより、1つのファイルを多数のパターンデータと照合する場合の合計処理時間を短縮できる。
【0028】
図1に示す回路のうち、バスインターフェース201を含む本装置の一部ないしは全部はワンチップの半導体集積回路による実装が可能である。
【0029】
次に、図1の本装置を複数搭載したコンピュータの制御プログラム及び本装置を搭載したプロキシサーバに関して説明する。
【0030】
以下、図3に示すように、本装置402(図1の符号1に相当)を402A、402Bの2つ備えるコンピュータをプロキシサーバ401として用いる場合について説明する。本装置402の搭載台数は2つに限定されない。図3では、インターネットとの接続にネットワークインターフェースカード404を備え、LAN(LOCAL AREA NETWORK)との接続に同403を備えている。
【0031】
これらの複数のコンピュータをネットワーク上で識別するために、IP(INTERNET PROTOCOL)アドレスを付与したパケットデータをネットワーク上に流す。これにより発信元及び送付先コンピュータを識別する。プロキシサーバは複数のIPアドレスによって識別されるパケットデータの中継を行う。
【0032】
402Aおよび402Bのそれぞれに対し、負荷を分配する方法はいくつか考えられるが、一例としてIPアドレスにより分配することを考える。つまり、P1およびP3というIPアドレスはAに処理を行わせ、P2というIPアドレスはBに処理を行わせるように定義する。IPアドレスに加えて、ポート番号を利用してもよい。この定義値は、図4に示すメインメモリ102内のテーブルに記憶される。メインメモリの代わりにCAM(Content Addressable Memory:連想メモリ)を利用してもよい。
【0033】
図3において、図4のテーブルの記述に従い、受信したパケットデータを402Aまたは402Bのどちらに処理させるかが決められる。このとき、図4のテーブル中の処理カウンタ501をカウントアップし、これらカウント値を監視して402Aおよび402Bの処理カウンタ501がほぼ同じになるように配分を行うことによって、ある程度均一な負荷分散を実現できる。また、P1〜P3のどちらでもない新たなIPアドレスPxを受信したときは、402Aまたは402Bのうちカウンタ値の小さい方に処理をさせるとともに、Pxをテーブルに追記する。これにより、新たなIPアドレスを持つパケットデータを適切に分配できる。
【0034】
次に、ネットワークインターフェース回路をともなうコンピュータウイルス検査装置について図1を用いて説明する。これはMAC301並びにPHY302を備え、本装置全体がネットワークインターフェース装置(NIC)の役目を兼ねる。
【0035】
このようにすることにより無駄なデータ転送を省くことができる。例えば、図3に示すようにNIC404が本装置402と独立している場合、インターネットから受信したデータが404からホストバス105を経由してメインメモリ102へ転送され、その後メインメモリ102から本装置402へと転送される。つまりホストバス105を2回経由する。これに対し、図1の装置においてNIC404と本装置402が同一装置を構成するため、これを図3に適用するとホストバス105を経由する回数が1回少なくなり、無駄なデータ転送を省くことができる。
【0036】
なお、MAC301はメディアアクセスコントローラと呼ばれ、イーサネット(登録商標)・ネットワークで接続された相互機器間のネゴシエーションやハンドシェイクなどの通信手順を管理するデバイスである。また、PHY302は物理レイヤーと呼ばれ、ネットワークを接続するケーブル等の種類によって適切な物を選んで装備するデバイスである。例えば10BASE−T規格のイーサネット(登録商標)であればツイストペアケーブルを用いるので、バイトデータからシリアルデータへの変換、ビット列から電圧信号への変換などを行う。
【0037】
この装置において、コンピュータウイルス検査がオフ(無効)の状態であれば、ネットワークからの受信データはPHY302からMAC301を経由してファイルバッファメモリ205へ一時的にバッファされ、バスインターフェース201を介してメインメモリ102に転送される。
【0038】
ここで、コンピュータウイルス検査のオン・オフの設定は、例えばファイルバッファメモリ205に設定変数を設け、当該変数をホストCPU101によって実行されるコンピュータプログラムから設定してやればよい。あるいは、当該フラグのオン・オフを切り替える電気接点スイッチを直接本装置上に設けてもよい
【0039】
コンピュータウイルス検査がオン(有効)の状態であれば、ファイルバッファメモリ205に受信データが一時的にバッファされたのち、デコーダ303(MIMEデコーダを含む)が起動されファイルバッファメモリ中の受信データをファイル形式のデータブロックにデコードする。デコードが開始された後、パターンマッチング回路206が起動され、デコードが完了した部分のデータについてコンピュータウイルス検査を開始する。コンピュータウイルスが検出されなかったときに限り、DMA204を起動して一時的にバッファされていた受信データをメインメモリ102に転送する。例えば、ファイルバッファメモリ205に設定変数を設け、これに基づきデコード前のデータ、または、デコード後のデータのいずれかを選択して転送する。
【0040】
データを送信する場合、データを受信する場合と同様の処理を行うことができる。ファイルバッファメモリ205に送信すべきデータがバッファされたとき、これをデコーダ303に入力する。デコーダ303を通したデータはパターンマッチング回路206に入力される。コンピュータウイルスが検出されなかったときに限り、ファイルバッファメモリ205からMAC301へのデータ転送が実行され、PHY302を経由して外部に送信される。
【0041】
この発明の実施の形態1によれば、多大な計算負荷を掛けるコンピュータウイルス検査処理を、ホストCPUとは別のハードウェアで処理するので、ホストCPUの負荷を軽減できる。
【0042】
更に、主要な機能のほとんどがホストCPUとは別のハードウェアとして構成されているので、他のソフトウェアへの干渉による動作不良等の影響を軽減できる。
【0043】
発明の実施の形態2.
この発明の実施の形態2は、パターンマッチング回路206に含まれるデータ照合回路、特にワイルドカード指定方法及びその回路に関する。図5は発明の実施の形態2に係る回路の模式図である。
【0044】
この回路は、照合パターンメモリA(1101)、被照合バッファメモリB(1102)及び照合回路1201を備える。図では簡単のため、被照合メモリB(1102)側にシフトレジスタを用いてFIFO(FIRST IN FIRST OUT)型バッファとしているが、照合パターンメモリA(1101)の側にシフトレジスタ機能を備えても良い。図5ではFビットは1ビットとし、F=1のときにワイルドカードとして認識するよう定義しているが、Fビットは2ビット以上であってもよい。図5の例では、F=1であれば照合回路201では当該バイト部分について無条件にA=Bと見なし、F=0であればAとBの排他的論理和(XOR)を算出してXOR値がゼロであれば合致と見なす。
【0045】
また、Fビットの代わりにDビット(2ビット以上)を用い、D>0の時は下位Nビットと同一バイトがDバイトだけ連続するものとして扱うようにしてもよい。Fビットフラグを合わせて用いればDバイト連続するワイルドカードも定義することが出来る。
【0046】
発明の実施の形態2の変形例1.
図6はマスクビットを持つ形態の一実施形態である。
図6の照合回路は、照合パターンメモリA(1101)のNビットの照合データ値の上位にMビット(図では一例として32ビット)のマスクビットを備える。まず、マスクビットMの値と被照合バッファメモリB(1102)の値から照合回路(1201)にて論理積(AND)を算出し、当該出力に対してNビット部分の排他的論理和(XOR)を算出する。これにより、マスクビットが0となっているビットに対してワイルドカード(無条件合致)が行われる。また、マスクビットが全ビットゼロである場合は被照合バッファメモリB(1102)との論理積がゼロになるので、Nビットの全部がワイルドカードとして扱われる。
【0047】
発明の実施の形態2の変形例2.
図7はこの変形例2を示す。
連続したデータストリームは被照合バッファメモリB(1102)の終端より入力される。このバッファメモリは照合すべきパターンのうち最大長のものより、大きなサイズを記憶できるようになっている。また、このレジスタ群にはパターンを照合する位置をずらすのに必要なレジスタシフト機能が備わっていても良い。
【0048】
一方、被照合バッファメモリB(1102)の先頭KバイトをインデックスIとしてアクセスすることが可能なルックアップテーブル(1301)が備えられている。ルックアップテーブルには、その先頭KバイトがインデックスIであるパターンが存在するかどうかを示す値が書き込まれる。図7では一例としてパターンリストの先頭アドレスを示すポインタが納められている。あるいは先頭NバイトがインデックスIであるパターンの個数を書き込んでも良い。その場合、ルックアップテーブルのビット幅で保持できる最大値mを定め、先頭KバイトがインデックスIであるパターン数がm個以上である場合には、ルックアップテーブルにmを超過したことを意味する特定値を書き込むように定めても良い。
【0049】
インデックスIを用いてルックアップテーブル(1301)にアクセスして、そのインデックスIに対応するパターンの数が0であることが判明した場合は、パターン照合を終える。この際、終了信号を出すことにより、入力バッファのレジスタシフト機能をトリガーして、次のパターン照合を行っても良い。インデックスIの値に対応した位置にルックアップテーブルの値Pが、後述するパターン照合回路の入力の一つとなる。
【0050】
ルックアップテーブル(1301)に書き込む値の決め方は次のとおりである。まずルックアップテーブルの全ての値を初期値Zにする。次に照合すべきパターン全部に対して順番にインデックスの計算を行う。パターンの長さが入力バッファの長さより小さい場合は、不足している部分にはワイルドカードであることを示す値を入れておく。このときインデックスの計算に必要な特定位置の内、もっとも後方にある位置に至る長さの分だけ最低限書き込めばよい。インデックスの算出に必要な特定位置のバイトの値を読み込み、その値を連結あるいは予め決めておいた計算式を使用してインデックスIを算出する。次にルックアップテーブルのインデックスIに対応する場所の値を増加させる。予め定めておいた最大値mを超える場合には、最大値mより変化させない。なおこの値の算出は予めこの回路の使用前に行い、ルックアップテーブルには最終的な値のみ書き込んでも良いし、この初期化ルールを初期化回路として組み込んでも良い。
【0051】
一方、パターン照合回路(1201)は、前述のルックアップテーブルの値Pを受ける。値Pが対応するパターンが存在しないことを示す値である場合は、パターン照合動作を行わない。値Pが対応するパターンが存在することを示す値である場合には、照合パターンメモリA(1101)の中の、インデックスIに対応する複数のパターンを記憶したパターンリストにアクセスする。このパターンリストはルックアップテーブルの値Pと連続した位置に存在しても良いし、別のルックアップテーブルを参照する形になっていても良いし、ルックアップテーブルにはパターンリストへのポインタが書き込まれており、そのポインタを利用して参照する形になっていても良い。
【0052】
パターンリストはパターンの内、インデックスIの算出に利用した以外の部分が記憶されたものである。インデックスIの算出に利用した部分も記憶しておいてパターン照合の対象としても良いが、回路が冗長となるので予め省いておく。またパターンといっしょに、そのパターンのパターン番号を組として記憶し、どのパターンに合致したかが判別できるように構成しておいても良い。
【0053】
このパターン照合回路の出力は合致するパターンが存在したかどうかである。また必要であれば合致したパターン番号も出力する。パターンが可変長である場合には、残りパターン長を記憶する方式と、照合回路が参照する長さに不足する部分に任意のデータと合致するワイルドカードをパターンの一部として持つ方式がある。前者の場合は、パターン長より後方のバイトに関しては常に合致すると判断し、後者の場合は照合回路がワイルドカードを任意のバイトと合致すると判断する。
【0054】
発明の実施の形態2、その変形例1及び変形例2は、互いに組み合わせて用いることもできる。
【0055】
発明の実施の形態2によれば、照合パターンのバイトにワイルドカードを指定できるので、検索の効率を改善し使用するメモリの消費を抑えることができる。また、変形例2によれば、パターンの一部をインデックスにしてルックアップテーブルを参照しているため、線形探索処理を減らし照合の速度を上げることが出来る。これにより、照合に要する時間の、パターン数や種類への依存度を減らし、より偏差の少ない処理時間でパターン照合を実現することができる。
【0056】
発明の実施の形態3.
この発明の実施の形態2は、パターンマッチング回路206に含まれるホワイトスペース処理回路に関する。図8は発明の実施の形態3に係る回路のブロック図を示す。
【0057】
入力されたデータ(ホワイトスペースを含む文字列データ等)は、まず入力データバッファ2101に入力される。入力データバッファ2101はFIFO(FIRST IN FIRST OUT)形式のメモリで構成され、過度の入力があった場合に入力を一時的に吸収し後段にデータを引き継ぐ役目を持っている。
【0058】
入力データバッファ2101に入力されたデータは、FIFO先端から順次マルチバイト文字判定回路2102に入力される。本回路はASCII文字など、マルチバイトを取り扱わないことが明らかなデータであれば省略することも可能である。マルチバイト文字判定回路2102は、例えばシフトJISコード体系であれば、各入力されたマルチバイト文字列の1バイト目をCとして、以下のように比較回路と論理回路を組み合わせて実現可能である。
((0x81≦C)AND(C≦0x9F))OR((0xE0≦C)AND(C≦0xEF))
【0059】
ここで0xは16進数を示し、上記演算式の結果が真ならばマルチバイト文字、偽ならばシングルバイト文字とみなす。マルチバイト文字の非先頭バイト(2バイト目以降)と識別された文字コードは、続く処理をバイパスされ被照合データバッファメモリ2110に直接入力される。同時にマルチバイト文字判定回路2102では、入力データバッファから続く1バイトを取得し、無条件で被照合データバッファメモリ2110に転記することにより2バイト文字等を処理する。
【0060】
なお、マルチバイト文字判定回路2102は設定レジスタ2201によりバイパス(無効化)設定が可能である。
【0061】
一方、JISコードのようなシフトイン(Kイン)、シフトアウトコード(Kアウト)から構成される文字体系の場合、シフトインコードをマルチバイト文字判定回路2102が検出した場合はマルチバイトステータスレジスタ2203を利用してシフトステータスの保持を行う。例えばシフトインコードの場合はマルチバイトステータスレジスタに1を記憶し、1が記憶されている間はマルチバイト文字と判断して以後の回路をバイパスして被照合データバッファメモリ2110に直接入力する。マルチバイト文字判定回路2102がシフトアウトコードを検出すると、シフトステータスレジスタはゼロにリセットされ、以後の入力データは再びシングルバイト文字として取り扱われる。
【0062】
JISコードとシフトJISコードの切り替えは設定レジスタ2201で行えるようにしても良い。
【0063】
マルチバイトチェックを受けたデータは、ホワイトスペース除去回路2103に入力される。ホワイトスペース除去回路では、あらかじめ想定されるホワイトスペース文字コード(一例として0x0D,0x0A,0x20,0x09など)と合致するコードは除去される。これは例えば入力データをCとして以下の論理回路を組み合わせて実現可能である。
(C=0x09)OR(C=0x0A)OR(C=0x0D)OR(C=0x20)
【0064】
図9はホワイトスペース除去回路の例を示す。図9の装置は、ホワイトスペースに該当するコードを文字登録レジスタ202に記憶しておき、当該レジスタ上の各コードと前記入力データCが一致するか否かでホワイトスペースを判定するものである。一方、ホワイトスペースとして定義する文字種類が多数(例えば数千バイト)にのぼる場合はRAMを使うこともできる。
【0065】
ホワイトスペース除去が行われた後、ASCIIコードの大文字小文字による照合不一致を避けるために、シングルバイト文字コードについては小文字判定回路2104(または大文字判定回路のいずれか)に入力される。小文字の判定は、例えば入力データをCとして以下の論理回路、
(C≧0x61)AND(C≦0x7A)
により判定できる。小文字と判定された文字コードは大文字に変換される。小文字(C)から大文字(C')の変換には、例えば、
C'←(C AND 0xBF)
で変換できる。
【0066】
上記一連の処理を経た入力データは、照合回路2111に入力され被照合データバッファメモリ2110に入力され、照合パターンメモリ2112と照合される。この照合は、例えば各バイト単位で排他的論理和(XOR)を取り結果がゼロであったら合致と見なすようにすればよい。
【0067】
設定レジスタ2201には2102から2105の各回路をバイパス設定するフラグが設けられ、例えば設定レジスタに接続されたコンピュータから操作可能とする。例えばあらかじめマルチバイト文字が含まれないことが明らかである英文文字列などであれば、マルチバイト文字判定回路2102をバイパスできるようにする。これにより判定効率を向上することができる。
【0068】
この発明の実施の形態によれば、テキストデータやコンピュータプログラムデータなど、ホワイトスペースを含むテキストデータからホワイトスペースを取り除くとともに英文字の大文字小文字の差を吸収した状態でデータ照合を行うことができる。これにより従来困難であったハードウェアによるテキストデータ照合処理が容易かつ高速に実現できる。
【0069】
発明の実施の形態4.
この発明の実施の形態4は、多段照合によるデータパターン検出方法及びその装置に関する。
【0070】
図10A及び図10Bは本発明の一実施形態を示す。これはネットワークトラフィック中のコンピュータウイルスを検出する。
【0071】
ネットワークのゲートウェイとして設置されたホストCPU3101には、第1のNIC(ネットワークインターフェース装置)3102と第2のNIC3103が備えられており、それぞれのネットワーク間のゲートウェイとしてデータの中継(プロキシサーバ)を行っている。ファイヤウォール機能を備えたソフトウェアと共に用いられることもある。
【0072】
一方、ホストCPU3101には、バス3106を仲介して接続された第1のサブシステム3201としてnバイトのFIFO(1段からn段まで)3202を伴ったチェックサム算出回路3203とパターン照合回路3204、及びデータパターンを記憶したRAM(ランダムアクセスメモリ)3205が備えられている。RAMは好ましくはフラッシュメモリなどの不揮発性メモリである。
【0073】
前記において、第1のデータパターンとしてRAM3205には、各コンピュータウイルスについて少なくとも1つ以上の、コンピュータウイルスデータ内の特定の連続するnバイトのチェックサム値を算出したものが記憶されている。第2のデータパターンとしてRAM3205には、前記コンピュータウイルスを特徴づけるデータエリアから抽出されたデータ列が各コンピュータウイルスについて記憶されている。
【0074】
ホストCPU3101からアクセス可能なメインメモリ3104には、コンピュータウイルス検出ソフトウェア3105が読み込まれホストCPU3101にて実行される。従来の技術では、当該ソフトウェア3105によりNIC3102と3103の間でやりとりされる全てのデータに対してコンピュータウイルス検出ソフトウェアを通して処理を行っていたため、多大な処理時間を必要としていた。従来の方法に対して、本発明では以下の流れに沿って処理を行う。
【0075】
まず、NIC3102(あるいは103)から入力されたデータは、分断されているパケットをシーケンスコードに従って繋いでメインメモリ3104に展開する。この後、サブシステム3201に搭載されたDMA(DIRECT MEMORY ACCESS)回路3210がDMAを起動してメインメモリ上のデータをサブメモリ3209に転送する。DMA回路の起動は、ホストCPU3101のアドレス空間にマップされたDMA回路3208の制御レジスタをアクセスすることによって起動する。
【0076】
DMAによってサブメモリ3209に転送する際、FIFO(3202)を経由する。このときリアルタイムにチェックサムを算出する。具体的には、FIFO(3202)の出力段(図では第n段)のデータd'がFIFOのシフトと共に廃棄されるときに、当該データd'をアキュムレータレジスタ3206から減算する。一方、入力段(図では第1段)に新たな値dが入力される毎にアキュムレータレジスタ3206に加算する。これにより、アキュムレータレジスタ3206には、FIFOの全段(第1段〜第n段)のチェックサムに相当する値が常に更新され保持される。
【0077】
より一般的には、前記演算式が正演算と逆演算による準可逆性を備える場合において、データを廃棄するとき、アキュムレータレジスタ(値をAnとする)で破棄データに対して所定の演算式の逆演算が行われ、An'が算出される。新たなデータdが入力されるとき、前記アキュムレータレジスタの値(An')及び当該入力データdを用いて前記演算式の正演算が行われ、(An+1)が算出される。以上のステップが繰り返される。
【0078】
前記の方法によりチェックサムが更新されると、あらかじめ想定されるデータパターンについて算出したチェックサムデータを記憶したRAM3205の内容と、アキュムレータレジスタ3206に記憶されたチェックサム値とをパターン照合回路3204によって照合する。照合の結果、合致するパターンが見つかれば、そのパターン番号をレジスタ3207に出力する。同時に、ホストCPU3101に対して割り込みをかける、あるいは制御レジスタを設けてホストCPUからアクセス可能なようにホストCPUのアドレス空間にマップし、制御レジスタのフラグを立て、そのフラグをホストCPUからポーリング(監視)するようにしてもよい。
【0079】
このようにしてパターン照合(粗照合)が行われその結果によってスクリーニング(ふるい分け)されたデータは、大きく分けてコンピュータウイルスの感染可能性があるもの、無いものに分けられる。このうち、感染可能性のあるものについては、パターンデータを変えて、同様にスクリーニングを繰り返してもよい。少なくとも1回以上の上記手順を経て、コンピュータウイルスの感染可能性が無いと判断されたものは、NIC3103(あるいは3102)を経てネットワークに出力される。
【0080】
一方、上記手順を経てコンピュータウイルスの感染可能性が有ると判断されたものについては、ここで初めてコンピュータウイルス検出ソフトウェア3105によって精密な感染検査が行われる。一般的に、コンピュータウイルス検出ソフトウェアによる精査は、上記で説明した単純なパターン照合処理(特に半導体集積回路を利用したパターン照合回路を用いた場合)に比べ著しく遅いので、精査を通すデータの量を減らすことによって結果として全体的なスループットは大幅に向上する。
【0081】
一方、ハードウェアを利用せずにソフトウェアのみで本発明はは実現可能である。この場合、図10のサブシステム3201については不要で、照合処理の全てをホストCPU3101とメインメモリ3104に読み込まれたソフトウェアによって前記パターン照合処理を含むスクリーニング処理を実現する。
【0082】
本発明による方法を実装したコンピュータウイルス検査装置は、従来の技術に比べスループットが高いので、ネットワークゲートウェイ装置への応用や、大規模ネットワークストレージ(記憶装置)のコンピュータウイルス検査装置などに応用できる。
【0083】
また、コンピュータウイルスではなく、所定の語句や文字列、URLなどネットワーク上のアドレスに基づいて算出されたパターンデータを用いた場合、所定の語句を含むウェブサイトや電子メールの中継を遮断するようなアクセス制限装置が実現可能である。この装置は未成年にふさわしくない用語の閲覧を遮断するための教育機関向けネットワークゲートウェイ装置などに応用できる。
【0084】
粗照合によるスクリーニングを行って、時間のかかる処理に通すデータ量を減らすことにより、装置全体としてのスループットを大幅に向上することが出来る。
【0085】
発明の実施の形態5.
この発明の実施の形態5は、キャッシュシステムによるコンピュータウイルス検出装置の負荷低減方法及びその装置に関する。
【0086】
図11は本発明の一実施形態を示す。これは、コンピュータネットワークのトラフィック中のコンピュータウイルスを検出するゲートウェイプロキシサーバである。
【0087】
コンピュータネットワークの中継点に設置されたサーバ4101は、ネットワーク的に繋がった外部サーバ4201とクライアントコンピュータ4301間においてデータの中継を行うプロキシサーバとして機能する。サーバ4101は、中継するデータのウィルスチェックを行うソフトウェア4132を記憶したメモリ4103とそれを駆動するためのCPU4102、大容量記憶装置4141、及び、NIC(ネットワークインターフェース装置)4110を備える。NICとCPU及びメモリはバスにより接続されている。ここではNICとメモリは同一バス上に接続されているが、別々のバスに接続されてもよい。
【0088】
メモリはRAMである。メモリは、ウイルスチェックを実施済みのファイルについての情報を記憶するインデックスファイル4131を記憶する。インデックスファイル4131のデータ構造の一例を図12に示す。なお、メモリ上にインデックスファイルを記憶するのはインデックスファイルへのアクセスを高速化するためであり、記憶を恒久化するために時々大容量記憶装置内に書き出して記憶される。大容量記憶装置としてハードディスク装置などを用いることが出来る。
【0089】
以下、実際の動作ステップを図13及び図14を用いて説明する。
【0090】
クライアントコンピュータ301からのファイル要求リクエストは、例えばHTTPプロトコルやFTPプロトコルに代表される手順に従って発行され処理される。
【0091】
これらのファイル要求リクエストは、サーバ101によって仲介され(ステップ1002)、まずインデックスファイル131と照合される(ステップ1003)。
【0092】
インデックスファイルに当該ファイルが存在しなければネットワークの先にある外部サーバ4201にファイル要求リクエストが転送される(ステップ1005)。外部サーバ4201は該リクエストにより特定されるファイルを送出する。
【0093】
外部サーバ4201から送出されたファイルは、一旦サーバ4101に返され(ステップ1005)、さらにウイルスチェックソフトウェア等4132によりウイルスチェックを受ける(ステップ1006)。
【0094】
ウイルスチェックの結果、ウイルスが検出されなければ当該ファイル実体のコピーをキャッシュファイル4141として大容量記憶装置4104に保存すると共にインデックスファイル4131を更新する(ステップ1008)。
【0095】
一方、ウイルスが検出されれば、ウイルスチェックソフトウェア等4132はウイルスの駆除を試みる(ステップ1101)。ウイルスの駆除に成功すれば、ウイルス駆除済みフラグをオンにして駆除済みファイルを大容量記憶装置4104に保存し、インデックスファイル4131を更新する(ステップ1104,1105)。
【0096】
ウイルスの駆除に失敗すれば、ウイルス駆除済みフラグをオフにしてインデックスファイル4131に追記する(ステップ1106,1107)。この場合はウイルスに感染したファイルの実体は大容量記憶装置4104には保存されない。
【0097】
一方、ステップ1103においてインデックスファイル4131に当該ファイルが存在した場合、インデックスファイルのフラグを照合する(ステップ1011)。
【0098】
ウイルス感染フラグがオンになっていなければウイルス未感染のファイルを取得済みであることを意味するので大容量記憶装置4104から当該インデックスによって特定されるキャッシュファイル4141の実体を取り出して(ステップ1013)要求元クライアントにファイルを送出する(ステップ1009)。
【0099】
一方、ステップ1011においてウイルス感染フラグがオンであり、ウイルス駆除済みフラグもオンであればウイルス駆除済みのファイル実体が大容量記憶装置4104に存在することを意味するので、ファイル実体を取り出してクライアントに送出する。ウイルス駆除済みフラグがオフであれば、要求元クライアントにウイルス感染ファイルであることを通知してファイル送出をストップする(ステップ1015)。
【0100】
このウイルス感染ファイルであることの通知は、電子メールで行っても良い。また、要求されたファイルに対してウイルス警告ファイルにすり替えて送出することによりユーザに注意を喚起するようにしてもよい。
【0101】
インデックスファイル4131は、例えば1時間に1回、大容量記憶装置4104に転写され記憶の恒久化が行われるようにするとよい。
【0102】
キャッシュシステムを備える場合、ウイルスチェックを経た対象ファイル自身のコピーを大容量記憶装置にも保管すると共に、前記インデックスファイルに保管日時を記録する。この保管日時は一定期間ごとに再度チェックされ、あらかじめ定めた所定の期間(例えば24時間)を越えた場合は当該ファイルの実体を大容量記憶装置4104から削除すると共に、インデックスファイル4131からも同ファイルを表すインデックス情報を削除する。
【0103】
このようにして一度取得されたウイルスチェック済みのファイルが所定の期間は大容量記憶装置内にとどまることになるので、同一ファイルのリクエストがあった場合に大容量記憶装置からファイルを取得すればよくなり、外部サーバ4201との通信時間並びに当該ファイルに対してウイルスチェックを再度行う時間を節約できる。
【0104】
その後は同様に、任意のクライアントコンピュータ4301から前記と全く同一のファイル要求リクエストがサーバ4101に送出された場合、サーバ4101は、まずインデックスファイル4131に同一ファイルへのリクエストが既に存在しないか否かをチェックする(ステップ1002)。
【0105】
チェックの結果、同一ファイルのインデックスが見つかると、フラグをチェックし、コンピュータウイルスの感染が無かった場合は大容量記憶装置4104から当該ファイルを取り出してクライアントに送出する。この場合は外部サーバ4201へのアクセスが発生しない、ウイルスチェック実施済みであるため再度チェックする必要がない、という理由により高速なレスポンスとサーバ負荷低減が期待できる。
【0106】
ネットワークの相互接続部分に本発明によるゲートウェイサーバないしはプロキシサーバを設置することにより、ネットワーク間でやりとりされるネットワークトラフィックをリアルタイムに監視するコンピュータウイルス検査装置が実現できる。
【0107】
この発明の実施の形態によれば、コンピュータウイルス検査装置の負荷を低減することができるので、少ない資源で多くのネットワークトラフィックを処理することが出来る。また、クライアントコンピュータがファイル要求リクエストを送出してからファイルがクライアントコンピュータに送出されるまでの応答時間を短縮できるため、ネットワーク遅延を縮小することができ、快適な操作性を実現できる。
【図面の簡単な説明】
【0108】
【図1】図1は、本発明の実施の形態1に係る装置の機能ブロック図である。
【図2】図2は、ファイル等を識別するために用いられるテーブルの一例である。
【図3】図3は、本装置を複数搭載したプロキシサーバの実施例を示す概念図である。
【図4】図4は、負荷分散を行うために用いられるテーブルの一例である。
【図5】図5は、本発明の実施の形態2における回路構成を示す模式図である。
【図6】図6は、本発明の実施の形態2に係る変形例1における回路構成を示す模式図である。
【図7】図7は、本発明の実施の形態2に係る変形例2における回路構成を示す模式図である。
【図8】図8は、本発明の実施の形態3における回路構成を示す模式図である。
【図9】図9は、ホワイトスペース除去回路の1例を示す模式図である。
【図10A】図10Aは、本発明の実施の形態4を示す模式図である。
【図10B】図10Bは、本発明の実施の形態4の概略フローチャートである。
【図11】図11は、本発明の実施の形態5の装置構成を表す模式図である。
【図12】図12は、インデックスファイルのデータ構造を示す一例である。
【図13】図13は、発明の実施の形態5の動作フローチャートである。
【図14】図14は、発明の実施の形態5の動作フローチャート(続き)である。

Claims (27)

  1. データを含むファイルを一意に特定するファイル情報を受け、これを保持するタスクキューメモリと、
    前記タスクキューメモリの前記ファイル情報によって特定されるファイルを取得して記憶するファイルバッファメモリと、
    コンピュータウイルスを識別するためのパターンデータを記憶するパターンデータメモリと、
    前記ファイルバッファメモリに記憶されたファイルと前記パターンデータを照合し、一致するパターンがあるか否かを判定する一つ以上のパターンマッチング回路と、
    前記タスクキューメモリの前記ファイル情報に基づいて少なくとも一つの前記パターンマッチング回路を起動するスケジューラと、
    前記パターンマッチング回路の判定結果を前記ファイル情報に関連づけて通知する通知手段と、を備えるコンピュータウイルス検査装置。
  2. 前記ファイルを前記ファイルバッファメモリに転送するためのDMA(Direct Memory Access)コントローラを備えることを特徴とする請求項1に記載のコンピュータウイルス検査装置。
  3. 前記スケジューラは、前記パターンマッチング回路が2つ以上あるとき、前記タスクキューメモリから2つ以上のタスク情報を読み出すとともに、前記タスク情報を各パターンマッチング回路に分散して与えることを特徴とする請求項1記載のコンピュータウイルス検査装置。
  4. 前記スケジューラは、前記パターンマッチング回路が2つ以上あるとき、前記タスクキューメモリから1つのタスクに関する1つのファイル情報を読み出し、これを2つ以上に分割するとともに、分割されたファイルを各パターンマッチング回路に分散して与えることを特徴とする請求項1記載のコンピュータウイルス検査装置。
  5. 前記スケジューラは、前記パターンマッチング回路が2つ以上あるとき、前記タスクキューメモリから1つのタスクに関する1つのファイル情報を読み出し、このファイルに対応する2つ以上のパターンデータを各パターンマッチング回路に分散して与えることを特徴とする請求項1記載のコンピュータウイルス検査装置。
  6. MAC(Media Access Controller)及びPHY(Physical Layer)を含むネットワークインターフェース回路を備えることを特徴とする請求項1記載のコンピュータウイルス検査装置。
  7. 請求項1乃至請求項6いずれかに記載のコンピュータウイルス検査装置を、ワンチップに集積してなる半導体集積回路。
  8. データを含むファイルを一意に特定するファイル情報を受けて、これを保持するタスクキューメモリと、
    前記タスクキューメモリのファイル情報によって特定されるファイルを取得して記憶するファイルバッファメモリと、
    コンピュータウイルスを識別するためのパターンデータを記憶するパターンデータメモリと、
    前記ファイルバッファメモリに取得されたファイルと前記パターンデータを照合し、一致するパターンがあるか否かを判定する一つ以上のパターンマッチング回路と、
    前記タスクキューメモリのファイル情報に基づいて少なくとも一つの前記パターンマッチング回路を起動するスケジューラと、
    前記パターンマッチング回路の判定結果を前記ファイル情報に関連づけて通知する通知手段と、を備えるコンピュータウイルス検査装置を2台以上備えるコンピュータであって、
    前記検査装置のそれぞれに対し、2つ以上のファイルをあらかじめ決められた配分手順に従い分散して配分することを特徴とするコンピュータ。
  9. 前記パターンマッチング回路は、
    前記パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、検査対象データを記憶する被照合バッファメモリと、前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路とを備え、
    前記照合パターンメモリはビット長N+Fのバイト列を記憶し、
    前記被照合バッファメモリはビット長Nのバイト列を記憶し、
    前記照合回路は、Fに含まれる所定のビットが所定の値であるとき、当該バイトを無条件に合致と見なすことを特徴とする請求項1記載のコンピュータウイルス検査装置。
  10. 前記パターンマッチング回路は、
    前記パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、検査対象データを記憶する被照合バッファメモリと、前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路とを備え、
    前記照合パターンメモリはビット長N+Dのバイト列を記憶し、
    前記被照合バッファメモリはビット長Nのバイト列を記憶し、
    前記照合回路は、あるアドレスにおける前記照合パターンメモリと前記被照合バッファの複数のバイト列を照合するとき、Dに対応するバイト数のデータビットが連続しているとみなすことを特徴とする請求項1記載のコンピュータウイルス検査装置。
  11. 前記パターンマッチング回路は、
    前記パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、検査対象データを記憶する被照合バッファメモリと、前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路とを備え、
    前記照合パターンメモリはビット長N+Mのバイト列を記憶し、
    前記被照合バッファメモリはビット長Nのバイト列を記憶し、
    前記照合回路は、あるアドレスにおける前記照合パターンメモリと前記被照合バッファメモリの複数のバイト列を照合するとき、前記被照合バッファメモリの対応するバイトとマスクパターンMとの論理積をもとめ、これを前記照合パターンメモリの対応するバイトと照合することを特徴とする請求項1記載のコンピュータウイルス検査装置。
  12. 前記パターンマッチング回路は、
    前記パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、検査対象データを記憶する被照合バッファメモリと、前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路と、インデックスI及びこれに対応するパターンの存在情報をもつルックアップテーブルとを備え、
    前記被照合バッファメモリの一部のデータに基づき前記ルックアップテーブルが検索され、前記パターンの存在情報が出力され、
    前記照合回路は、前記被照合バッファメモリの内容を前記パターンの存在情報に基づき選択されたパターンと照合することを特徴とする請求項1記載のコンピュータウイルス検査装置。
  13. 前記パターンマッチング回路は、
    前記パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、検査対象データを記憶する被照合バッファメモリと、前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路と、テキストデータからホワイトスペースを取り除くホワイトスペース除去回路とを備え、
    前記ホワイトスペース除去回路は、前記被照合バッファメモリの前段に設けられていることを特徴とする請求項1記載のコンピュータウイルス検査装置。
  14. さらに、入力されたデータがマルチバイト文字及びシングルバイト文字のいずれであるかを判定するマルチバイト文字判定回路を備え、
    シングルバイト文字の場合、データは続く処理をバイパスされて前記被照合バッファメモリに入力され、
    マルチバイト文字の場合、入力データバッファから続く所定数バイトが取得され、これが付加されたデータが前記被照合バッファメモリに入力されることを特徴とする請求項13記載のコンピュータウイルス検査装置。
  15. さらに、小文字/大文字判定回路と、前記小文字/大文字判定回路の出力に基づき大文字と小文字の間で変換を行う大文字/小文字変換回路とを備えることを特徴とする請求項13記載のコンピュータウイルス検査装置。
  16. さらに、ホワイトスペースとして認識する文字コードをあらかじめ設定するための文字登録レジスタを備えることを特徴とする請求項13記載のコンピュータウイルス検査装置。
  17. 照合のためのパターンデータを複数用意するステップと、
    第1のパターンデータを用いて検査対象データとの粗照合を行い、合致の可能性があるデータブロックだけを抽出する第1ステップと、
    前記抽出されたデータブロックを対象に、第2のパターンデータを用いて合致するデータパターンの特定を行う第2ステップとを備えるコンピュータウイルス検査方法。
  18. 前記第2のパターンデータの少なくとも一部を所定の演算式により変換して前記第1のパターンデータを得るステップを備えることを特徴とする請求項17記載のコンピュータウイルス検査方法。
  19. あらかじめ想定されるデータパターンから所定の演算式に基づき算出される値を記憶するパターンデータメモリと、
    入力されるデータをバッファリングするバッファメモリと、
    前記演算式に基づき当該バッファメモリの内容から前記値を算出する算出回路と、
    前記算出回路の出力を前記パターンデータメモリの値と照合する照合回路とを備えるコンピュータウイルス検査装置。
  20. 前記算出回路は、
    データを廃棄するときに、アキュムレータレジスタ(値をAnとする)で破棄データの前記演算式の逆演算を行い、An'を算出する第1のステップ、及び
    新たなデータdが入力されるときに、前記アキュムレータレジスタの値(An')及び当該入力データdを用いて前記演算式により正演算を行い、(An+1)を算出する第2ステップ、
    を繰り返すことを特徴とする請求項19記載のコンピュータウイルス検査装置。
  21. 所定の期間内にウイルスチェックを実施したファイルを特定するインデックスファイルを記憶するインデックスファイルメモリと、
    ウイルスチェック要求を受けたファイルが前記インデックスファイルに存在するかどうか検索し、この結果に基づきウイルスチェック処理を選択的にバイパスする手段とを備えるコンピュータウイルス検査装置。
  22. プロキシサーバとして用いられるコンピュータウイルス検査装置であって、
    ウイルスに対する処置が完了したファイルを記憶する大容量記憶手段と、当該大容量記憶手段に含まれるファイルのうち、所定期間アクセスされていないことを検知し、当該ファイルを削除する手段とを含むキャッシュシステムを備え、
    新たなウイルスチェック要求に基づきウイルスチェックが行われたとき、前記インデックスファイルメモリはチェックされたファイルの情報が追記され、
    クライアントコンピュータからのデータ転送リクエストの対象が前記キャッシュシステムに存在するデータであるとき、当該データがクライアントコンピュータに送出され、
    クライアントコンピュータからのデータ転送リクエストの対象が前記キャッシュシステムに存在しないデータであるとき、前記リクエストにより特定される外部のネットワーク上のサーバからデータが取得され、取得されたデータについてコンピュータウイルスの検出処理が実行され、
    コンピュータウイルスの有無に応じてクライアントコンピュータへの送出、及び、前記キャッシュシステムへの保管及び廃棄が選択的に実行されることを特徴とするコンピュータウイルス検査装置。
  23. 記憶されたファイルを予め用意されたパターンデータと照合し、一致するパターンがあるか否かを判定するパターンマッチング回路であって、
    パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、
    検査対象データを記憶する被照合バッファメモリと、
    前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路とを備え、
    前記照合パターンメモリはビット長N+Fのバイト列を記憶し、
    前記被照合バッファメモリはビット長Nのバイト列を記憶し、
    前記照合回路は、Fに含まれる所定のビットが所定の値であるとき、当該バイトを無条件に合致と見なすことを特徴とするパターンマッチング回路。
  24. 記憶されたファイルを予め用意されたパターンデータと照合し、一致するパターンがあるか否かを判定するパターンマッチング回路であって、
    パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、
    検査対象データを記憶する被照合バッファメモリと、
    前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路とを備え、
    前記照合パターンメモリはビット長N+Dのバイト列を記憶し、
    前記被照合バッファメモリはビット長Nのバイト列を記憶し、
    前記照合回路は、あるアドレスにおける前記照合パターンメモリと前記被照合バッファの複数のバイト列を照合するとき、Dに対応するバイト数のデータビットが連続しているとみなすことを特徴とするパターンマッチング回路。
  25. 記憶されたファイルを予め用意されたパターンデータと照合し、一致するパターンがあるか否かを判定するパターンマッチング回路であって、
    パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、
    検査対象データを記憶する被照合バッファメモリと、
    前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路とを備え、
    前記照合パターンメモリはビット長N+Mのバイト列を記憶し、
    前記被照合バッファメモリはビット長Nのバイト列を記憶し、
    前記照合回路は、あるアドレスにおける前記照合パターンメモリと前記被照合バッファメモリの複数のバイト列を照合するとき、前記被照合バッファメモリの対応するバイトとマスクパターンMとの論理積をもとめ、これを前記照合パターンメモリの対応するバイトと照合することを特徴とするパターンマッチング回路。
  26. 記憶されたファイルを予め用意されたパターンデータと照合し、一致するパターンがあるか否かを判定するパターンマッチング回路であって、
    前記パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、
    検査対象データを記憶する被照合バッファメモリと、
    前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路と、
    インデックスI及びこれに対応するパターンの存在情報をもつルックアップテーブルとを備え、
    前記被照合バッファメモリの一部のデータに基づき前記ルックアップテーブルが検索され、前記パターンの存在情報が出力され、
    前記照合回路は、前記被照合バッファメモリの内容を前記パターンの存在情報に基づき選択されたパターンと照合するパターンマッチング回路。
  27. 記憶されたファイルを予め用意されたパターンデータと照合し、一致するパターンがあるか否かを判定するパターンマッチング回路であって、
    パターンデータメモリから所定のパターンを受けてこれを記憶する照合パターンメモリと、
    検査対象データを記憶する被照合バッファメモリと、
    前記照合パターンメモリのバイト列を前記被照合バッファメモリのバイト列と照合する照合回路と、
    テキストデータからホワイトスペースを取り除くホワイトスペース除去回路とを備え、
    前記ホワイトスペース除去回路は、前記被照合バッファメモリの前段に設けられていることを特徴とするパターンマッチング回路。
JP2002584171A 2001-04-16 2002-04-12 コンピュータウイルス検査装置及び半導体集積回路 Expired - Fee Related JP4334231B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2001116347 2001-04-16
JP2001184010 2001-06-18
JP2001186108 2001-06-20
JP2001213484 2001-07-13
JP2001234498 2001-08-02
PCT/JP2002/003645 WO2002086717A1 (en) 2001-04-16 2002-04-12 Computer virus check device and method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009127137A Division JP4392461B2 (ja) 2001-04-16 2009-05-27 コンピュータウイルス検査装置及びアクセス制限装置並びに半導体集積回路

Publications (3)

Publication Number Publication Date
JP2004528651A true JP2004528651A (ja) 2004-09-16
JP2004528651A5 JP2004528651A5 (ja) 2005-12-22
JP4334231B2 JP4334231B2 (ja) 2009-09-30

Family

ID=27531869

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2002584171A Expired - Fee Related JP4334231B2 (ja) 2001-04-16 2002-04-12 コンピュータウイルス検査装置及び半導体集積回路
JP2009127137A Expired - Fee Related JP4392461B2 (ja) 2001-04-16 2009-05-27 コンピュータウイルス検査装置及びアクセス制限装置並びに半導体集積回路

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009127137A Expired - Fee Related JP4392461B2 (ja) 2001-04-16 2009-05-27 コンピュータウイルス検査装置及びアクセス制限装置並びに半導体集積回路

Country Status (2)

Country Link
JP (2) JP4334231B2 (ja)
WO (1) WO2002086717A1 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006012164A (ja) * 2004-06-21 2006-01-12 Microsoft Corp アイテムストア用のアンチウイルス
WO2007026423A1 (ja) * 2005-08-31 2007-03-08 Matsushita Electric Industrial Co., Ltd. Icモジュールおよびicモジュールを搭載した携帯通信端末
US7987466B2 (en) 2005-08-22 2011-07-26 Hitachi, Ltd. Storage system
JP2011522340A (ja) * 2008-06-02 2011-07-28 ドロッシュ,クラウス ハードウェアデータ保護装置
JP2011248897A (ja) * 2010-05-27 2011-12-08 Samsung Sds Co Ltd パターンマッチング方法及びシステム
JP2012118990A (ja) * 2010-11-30 2012-06-21 Samsung Sds Co Ltd アンチマルウェアスキャニングシステム及びその方法
WO2014030300A1 (ja) * 2012-08-23 2014-02-27 日本電気株式会社 マッチングシステム、マッチング方法およびマッチングプログラム
WO2014049758A1 (ja) * 2012-09-26 2014-04-03 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP2014089741A (ja) * 2010-07-21 2014-05-15 Samsung Sds Co Ltd システムオンチップ基盤のアンチマルウェアサービスを提供できるデバイス及びその方法
WO2020202442A1 (ja) * 2019-04-01 2020-10-08 e-Janネットワークス株式会社 通信システム、情報提供装置、プログラム及び情報提供方法
JP2022058599A (ja) * 2019-04-01 2022-04-12 e-Janネットワークス株式会社 通信システム
US12035139B2 (en) 2021-09-28 2024-07-09 E-Jan Networks Co. Communication system, information providing device, computer-readable medium, and information providing method

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8364833B2 (en) * 2003-09-11 2013-01-29 Bae Systems Plc Real-time network monitoring and security
DE102005014837B4 (de) 2004-08-02 2007-08-30 Mahltig, Holger Sicherheitsmodul und Verfahren zum Steuern und Kontrollieren eines Datenverkehrs eines Personalcomputers
US8863286B1 (en) 2007-06-05 2014-10-14 Sonicwall, Inc. Notification for reassembly-free file scanning
US8489534B2 (en) * 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
KR101201622B1 (ko) * 2010-08-19 2012-11-14 삼성에스디에스 주식회사 보안 기능을 가진 시스템 온 칩 및 이를 이용한 디바이스 및 스캔 방법
JP5738042B2 (ja) * 2011-03-31 2015-06-17 株式会社ラック ゲートウェイ装置、情報処理装置、処理方法およびプログラム
WO2013141545A1 (ko) * 2012-03-21 2013-09-26 삼성에스디에스 주식회사 안티-멀웨어 시스템 및 상기 시스템에서의 데이터 처리 방법
US9736260B2 (en) * 2012-06-21 2017-08-15 Cisco Technology, Inc. Redirecting from a cloud service to a third party website to save costs without sacrificing security
JP5893787B2 (ja) * 2015-04-21 2016-03-23 株式会社ラック 情報処理装置、処理方法およびプログラム
JP6711000B2 (ja) * 2016-02-12 2020-06-17 日本電気株式会社 情報処理装置、ウィルス検出方法及びプログラム
TWI739405B (zh) * 2020-04-24 2021-09-11 新唐科技股份有限公司 病毒防護晶片及病毒防護方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0795265B2 (ja) * 1985-05-10 1995-10-11 株式会社日立製作所 比較回路
JPS63225824A (ja) * 1987-03-16 1988-09-20 Agency Of Ind Science & Technol 集合演算方式
JPH0748309B2 (ja) * 1987-12-16 1995-05-24 日本電気株式会社 記号列照合メモリおよびそのカスケード接続方式
JPH0795266B2 (ja) * 1988-04-18 1995-10-11 日本電気株式会社 一致検出回路
JPH08179942A (ja) * 1994-12-27 1996-07-12 Hitachi Ltd 免疫ic,およびそれを用いた免疫icカードとコンピュータ
JP3670372B2 (ja) * 1995-12-20 2005-07-13 富士電機ホールディングス株式会社 データ転送装置
JP3754998B2 (ja) * 1997-01-31 2006-03-15 松下電器産業株式会社 情報処理装置
JPH10307776A (ja) * 1997-05-06 1998-11-17 Nec Niigata Ltd コンピュータウイルス受信監視装置及びそのシステム
JP3465815B2 (ja) * 1998-12-28 2003-11-10 株式会社Quick テキストフィルタリングシステム

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006012164A (ja) * 2004-06-21 2006-01-12 Microsoft Corp アイテムストア用のアンチウイルス
US7987466B2 (en) 2005-08-22 2011-07-26 Hitachi, Ltd. Storage system
US8220000B2 (en) 2005-08-22 2012-07-10 Hitachi, Ltd. System and method for executing files stored in logical units based on priority and input/output load of the logical units
WO2007026423A1 (ja) * 2005-08-31 2007-03-08 Matsushita Electric Industrial Co., Ltd. Icモジュールおよびicモジュールを搭載した携帯通信端末
JP4804471B2 (ja) * 2005-08-31 2011-11-02 パナソニック株式会社 Icモジュール、携帯通信端末及びデータ受信方法
JP2011522340A (ja) * 2008-06-02 2011-07-28 ドロッシュ,クラウス ハードウェアデータ保護装置
US8612708B2 (en) 2008-06-02 2013-12-17 Klaus Drosch Hardware data protection device
JP2011248897A (ja) * 2010-05-27 2011-12-08 Samsung Sds Co Ltd パターンマッチング方法及びシステム
JP2014089741A (ja) * 2010-07-21 2014-05-15 Samsung Sds Co Ltd システムオンチップ基盤のアンチマルウェアサービスを提供できるデバイス及びその方法
JP2012118990A (ja) * 2010-11-30 2012-06-21 Samsung Sds Co Ltd アンチマルウェアスキャニングシステム及びその方法
US8719931B2 (en) 2010-11-30 2014-05-06 Samsung Sds Co., Ltd. Anti-malware scanning system and method thereof
WO2014030300A1 (ja) * 2012-08-23 2014-02-27 日本電気株式会社 マッチングシステム、マッチング方法およびマッチングプログラム
WO2014049758A1 (ja) * 2012-09-26 2014-04-03 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JPWO2014049758A1 (ja) * 2012-09-26 2016-08-22 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US9699210B2 (en) 2012-09-26 2017-07-04 Fujitsu Limited Data processing device that executes virus countermeasure processing, data processing method, and recording medium storing a data processing program
WO2020202442A1 (ja) * 2019-04-01 2020-10-08 e-Janネットワークス株式会社 通信システム、情報提供装置、プログラム及び情報提供方法
JPWO2020202442A1 (ja) * 2019-04-01 2021-09-13 e−Janネットワークス株式会社 通信システム、情報提供装置、プログラム及び情報提供方法
JP7015498B2 (ja) 2019-04-01 2022-02-03 e-Janネットワークス株式会社 通信システム、情報提供装置、プログラム及び情報提供方法
JP2022058599A (ja) * 2019-04-01 2022-04-12 e-Janネットワークス株式会社 通信システム
JP7304039B2 (ja) 2019-04-01 2023-07-06 e-Janネットワークス株式会社 通信システム
US12035139B2 (en) 2021-09-28 2024-07-09 E-Jan Networks Co. Communication system, information providing device, computer-readable medium, and information providing method

Also Published As

Publication number Publication date
JP4392461B2 (ja) 2010-01-06
JP2009223908A (ja) 2009-10-01
JP4334231B2 (ja) 2009-09-30
WO2002086717A1 (en) 2002-10-31

Similar Documents

Publication Publication Date Title
JP4392461B2 (ja) コンピュータウイルス検査装置及びアクセス制限装置並びに半導体集積回路
KR101615915B1 (ko) 어드밴스드 피처를 갖는 정규 표현식 패턴에 대한 비결정성 유한 오토마톤 (nfa) 생성
US8042184B1 (en) Rapid analysis of data stream for malware presence
US7802303B1 (en) Real-time in-line detection of malicious code in data streams
JP4743894B2 (ja) データ・パケットを伝送しながらセキュリティを改良するための方法及び装置
US7467406B2 (en) Embedded data set processing
US8886680B2 (en) Deterministic finite automata graph traversal with nodal bit mapping
US9100427B2 (en) Method and an apparatus to perform multiple packet payloads analysis
TWI392288B (zh) 用於多核心通訊處理的系統及方法
US9021582B2 (en) Parallelized pattern matching using non-deterministic finite automata
US8176300B2 (en) Method and apparatus for content based searching
US8176413B2 (en) Method and apparatus for processing a parseable document
WO2000060793A2 (en) Firewall including local bus
US8566444B1 (en) Methods and system for simultaneous multiple rules checking
US8910269B2 (en) System, method, and computer program product for preventing communication of unwanted network traffic by holding only a last portion of the network traffic
JP2004528651A5 (ja)
US20060080467A1 (en) Apparatus and method for high performance data content processing
CN116015889A (zh) 数据流转发方法、装置、网络设备及存储介质
JP4027213B2 (ja) 侵入検知装置およびその方法
JP2023522742A (ja) ディープ・パケット分析
US9160688B2 (en) System and method for selective direct memory access
JP4730409B2 (ja) 処理装置
Lin et al. Hardware-software codesign for high-speed signature-based virus scanning
CHAND et al. Efficient Way of Detecting an Intrusion using Snort Rule Based Technique
JP2006157144A (ja) 監視装置、監視方法、および監視プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090623

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090623

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees