(57)【要約】【課題】  通信遅延の増大を防ぎ、プロトコルの種類よらずにアプリケーション層プロトコルにおける不正な通信メッセージの検出をする。【解決手段】  中継装置１０は、通信メッセージをパケット毎に中継する中継装置であって、受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断部１３と、受信すべき順序で受信されたものでないと判断された場合、パケットを保持しておくと共に、パケットの中継を行うよう制御するパケット保持部１４と、受信されたパケットのペイロードと保持されたパケットのペイロードとを合併する合併部１５と、パケットのペイロードが予め定められたルールを満たすものであるか否かを検証する検証部１６と、パケットがルールを満たすとされた場合に当該パケットの中継を行うよう制御する中継制御部１７とを備える。【選択図】  図１
2005347853.tif 000002
【特許請求の範囲】
【請求項１】
通信メッセージをパケット毎に中継する中継装置であって、
受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断手段と、
前記順序判断手段により前記パケットが前記受信すべき順序で受信されたものでないと判断された場合、当該パケットを保持しておくと共に、当該パケットの中継を行うよう制御するパケット保持手段と、
前記パケット保持手段により保持されたパケットが当該保持された後に受信されたパケットと併せて検証すべきものであるか否かを、前記受信すべき順序に基づいて判断して、当該判断に基づき当該受信されたパケットのペイロードと当該保持されたパケットのペイロードとを合併する合併手段と、
前記順序判断手段により前記受信すべき順序でパケットが受信されたと判断された場合に、当該パケットのペイロード、又は前記合併手段により合併された当該パケットのペイロードが予め定められたルールを満たすものであるか否かを検証すると共に、当該検証内容に関する情報を前記通信メッセージにおける次の検証に用いるために保持しておく検証手段と、
前記検証手段により前記パケットが前記ルールを満たすとされた場合に当該パケットの中継を行うよう制御し、前記検証手段により前記パケットが前記ルールを満たさないとされた場合に当該パケットの中継を禁止するよう制御する中継制御手段と、
を備える中継装置。
【請求項２】
前記検証手段による検証、及び検証内容に関する情報の保持は、オートマトンを用いることにより行われることを特徴とする請求項１に記載の中継装置。
【請求項３】
通信メッセージをパケット毎に中継する中継装置におけるパケットフィルタリング方法であって、
受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断ステップと、
前記順序判断ステップにおいて前記パケットが前記受信すべき順序で受信されたものでないと判断された場合、当該パケットを保持しておくと共に、当該パケットの中継を行うよう制御するパケット保持ステップと、
前記パケット保持ステップにおいて保持されたパケットが当該保持された後に受信されたパケットと併せて検証すべきものであるか否かを、前記受信すべき順序に基づいて判断して、当該判断に基づき当該受信されたパケットのペイロードと当該保持されたパケットのペイロードとを合併する合併ステップと、
前記順序判断ステップにおいて前記受信すべき順序でパケットが受信されたと判断された場合に、当該パケットのペイロード、又は前記合併ステップにおいて合併された当該パケットのペイロードが予め定められたルールを満たすものであるか否かを検証すると共に、当該検証内容に関する情報を前記通信メッセージにおける次の検証に用いるために保持しておく検証ステップと、
前記検証ステップにおいて前記パケットが前記ルールを満たすとされた場合に当該パケットの中継を行うよう制御し、前記検証ステップにおいて前記パケットが前記ルールを満たさないとされた場合に当該パケットの中継を禁止するよう制御する中継制御ステップと、
を備えるパケットフィルタリング方法。
【請求項４】
前記検証ステップにおける検証、及び検証内容に関する情報の保持は、オートマトンを用いることにより行われることを特徴とする請求項３に記載のパケットフィルタリング方法。
【請求項５】
通信メッセージをパケット毎に中継する中継装置に、
受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断処理と、
前記順序判断処理により前記パケットが前記受信すべき順序で受信されたものでないと判断された場合、当該パケットを保持しておくと共に、当該パケットの中継を行うよう制御するパケット保持処理と、
前記パケット保持処理により保持されたパケットが当該保持された後に受信されたパケットと併せて検証すべきものであるか否かを、前記受信すべき順序に基づいて判断して、当該判断に基づき当該受信されたパケットのペイロードと当該保持されたパケットのペイロードとを合併する合併処理と、
前記順序判断処理により前記受信すべき順序でパケットが受信されたと判断された場合に、当該パケットのペイロード、又は前記合併処理により合併された当該パケットのペイロードが予め定められたルールを満たすものであるか否かを検証すると共に、当該検証内容に関する情報を前記通信メッセージにおける次の検証に用いるために保持しておく検証処理と、
前記検証処理により前記パケットが前記ルールを満たすとされた場合に当該パケットの中継を行うよう制御し、前記検証処理により前記パケットが前記ルールを満たさないとされた場合に当該パケットの中継を禁止するよう制御する中継制御処理と、
を実行させるためのパケットフィルタリングプログラム。
【請求項６】
前記検証処理による検証、及び検証内容に関する情報の保持は、オートマトンを用いることにより行われることを特徴とする請求項５に記載のパケットフィルタリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信メッセージをパケット毎に中継する中継装置、当該中継装置におけるパケットフィルタリング方法、及びパケットフィルタリングプログラムに関する。
【背景技術】
【０００２】
従来から、インターネット網等の通信システムにおいて、外部からの攻撃を防ぐために、ネットワーク上で送受信されるデータをフィルタリングする様々な技術が提案されている。外部からの攻撃の例として、バッファ溢れ攻撃やフォーマット文字列攻撃等が存在するが、このような種類の攻撃の多くは、ＯＳＩ（Open Systems Interconnection）参照モデルのアプリケーション層のプロトコル（例えば、ＨＴＴＰ（HyperText Transfer Protocol）やＳＭＴＰ（Simple Mail Transfer Protocol）等が相当する）に定められた通信規約に違反した通信メッセージを用いて攻撃を行う。
【０００３】
アプリケーション層のプロトコルに違反したメッセージは、データの中身、即ちパケットのペイロード（パケットのうちヘッダの情報を除いた、本来転送したいデータ本体）に不正の原因があるので、パケットのヘッダ情報を参照して不正なデータを検出するパケットフィルタリングでは検出されない。アプリケーション層プロトコルにおける不正メッセージを検出するには、データの中身を参照する必要があり、このようにして不正メッセージを検出するものとして、アプリケーションゲートウェイがある（例えば、下記非特許文献１参照）。
【非特許文献１】伊藤幸夫，紫藤政義，野口修著「図解・標準  最新ＶＰＮハンドブック」秀和システム、２００３年５月、ｐ．５６−６１
【発明の開示】
【発明が解決しようとする課題】
【０００４】
アプリケーションゲートウェイは、サーバとクライアントとの間に介在するプロキシの一種であり、送受信されるデータをメッセージストリームとして監視する。即ち、パケットとしてネットワークを流れるデータをアプリケーションゲートウェイにおいて通信メッセージとして再構成し、再構成された通信メッセージを解析することにより不正を検出する。従って、アプリケーションゲートウェイでは、通信メッセージが不正なものでないと判断するまでパケットを中継しないため、ネットワークにおけるパケットの流れが一旦中断されて通信遅延の原因となる。また、アプリケーションゲートウェイは、上記不正な通信メッセージの検出をプロトコル毎に行うため、プロトコルの数だけ必要となる。
【０００５】
本発明は、上記課題を解決するために成されたものであり、通信遅延の増大を防ぎ、プロトコルの種類よらずにアプリケーション層プロトコルにおける不正な通信メッセージの検出をすることができる中継装置、パケットフィルタリング方法及びパケットフィルタリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
このような目的を達成するために、本発明による中継装置は、通信メッセージをパケット毎に中継する中継装置であって、受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断手段と、順序判断手段によりパケットが受信すべき順序で受信されたものでないと判断された場合、当該パケットを保持しておくと共に、当該パケットの中継を行うよう制御するパケット保持手段と、パケット保持手段により保持されたパケットが当該保持された後に受信されたパケットと併せて検証すべきものであるか否かを、受信すべき順序に基づいて判断して、当該判断に基づき当該受信されたパケットのペイロードと当該保持されたパケットのペイロードとを合併する合併手段と、順序判断手段により受信すべき順序でパケットが受信されたと判断された場合に、当該パケットのペイロード、又は合併手段により合併された当該パケットのペイロードが予め定められたルールを満たすものであるか否かを検証すると共に、当該検証内容に関する情報を通信メッセージにおける次の検証に用いるために保持しておく検証手段と、検証手段により前記パケットがルールを満たすとされた場合に当該パケットの中継を行うよう制御し、検証手段により前記パケットが前記ルールを満たさないとされた場合に当該パケットの中継を禁止するよう制御する中継制御手段と、を備えることを特徴とする。
【０００７】
上記した中継装置によれば、パケットを受信する度にペイロードに関して不正の検証を行って当該パケットを送信するので、アプリケーション層プロトコルにおける不正な通信メッセージの検出において通信遅延の増大を防ぐことができる。また、不正の検証に用いるルールはアプリケーション層プロトコルの種類によらずに設定できるので、プロトコルの種類よらずに不正な通信メッセージの検出をすることができる。
【０００８】
また、検証手段による検証、及び検証内容に関する情報の保持は、オートマトンを用いることにより行われることが好ましい。オートマトンを用いることにより、検証、及び検証内容の保持を行うための上記のルールを宣言的に記述することができ、ルールの作成、検証及び保守が容易となる。
【０００９】
ところで、本発明は、上記のように中継装置の発明として記述できる他に、以下のようにパケットフィルタリング方法及びパケットフィルタリングプログラムの発明としても記述することができる。これらはカテゴリーが異なるだけで、実質的に同一の発明であり、同様の作用・効果を奏する。
【００１０】
本発明によるパケットフィルタリング方法は、通信メッセージをパケット毎に中継する中継装置におけるパケットフィルタリング方法であって、受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断ステップと、順序判断ステップにおいてパケットが前記受信すべき順序で受信されたものでないと判断された場合、当該パケットを保持しておくと共に、当該パケットの中継を行うよう制御するパケット保持ステップと、パケット保持ステップにおいて保持されたパケットが当該保持された後に受信されたパケットと併せて検証すべきものであるか否かを、受信すべき順序に基づいて判断して、当該判断に基づき当該受信されたパケットのペイロードと当該保持されたパケットのペイロードとを合併する合併ステップと、順序判断ステップにおいて受信すべき順序でパケットが受信されたと判断された場合に、当該パケットのペイロード、又は前記合併ステップにおいて合併された当該パケットのペイロードが予め定められたルールを満たすものであるか否かを検証すると共に、当該検証内容に関する情報を通信メッセージにおける次の検証に用いるために保持しておく検証ステップと、検証ステップにおいてパケットがルールを満たすとされた場合に当該パケットの中継を行うよう制御し、検証ステップにおいて前記パケットが前記ルールを満たさないとされた場合に当該パケットの中継を禁止するよう制御する中継制御ステップと、を備えることを特徴とする。また、検証ステップにおける検証、及び検証内容に関する情報の保持は、オートマトンを用いることにより行われることが好ましい。
【００１１】
本発明によるパケットフィルタリングプログラムは、通信メッセージをパケット毎に中継する中継装置に、受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する順序判断処理と、順序判断処理により前記パケットが受信すべき順序で受信されたものでないと判断された場合、当該パケットを保持しておくと共に、当該パケットの中継を行うよう制御するパケット保持処理と、パケット保持処理により保持されたパケットが当該保持された後に受信されたパケットと併せて検証すべきものであるか否かを、受信すべき順序に基づいて判断して、当該判断に基づき当該受信されたパケットのペイロードと当該保持されたパケットのペイロードとを合併する合併処理と、順序判断処理により前記受信すべき順序でパケットが受信されたと判断された場合に、当該パケットのペイロード、又は合併処理により合併された当該パケットのペイロードが予め定められたルールを満たすものであるか否かを検証すると共に、当該検証内容に関する情報を通信メッセージにおける次の検証に用いるために保持しておく検証処理と、検証処理により前記パケットがルールを満たすとされた場合に当該パケットの中継を行うよう制御し、検証処理によりパケットがルールを満たさないとされた場合に当該パケットの中継を禁止するよう制御する中継制御処理と、を実行させることを特徴とする。また、検証処理による検証、及び検証内容に関する情報の保持は、オートマトンを用いることにより行われることが好ましい。
【発明の効果】
【００１２】
上述のように本発明によれば、パケットを受信する度にペイロードに関して不正の検証を行って当該パケットを送信するので、アプリケーション層プロトコルにおける不正な通信メッセージの検出において通信遅延の増大を防ぐことができる。また、不正の検証に用いるルールはアプリケーション層プロトコルの種類によらずに設定できるので、プロトコルの種類よらずに不正な通信メッセージの検出をすることができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しつつ本発明の好適な実施形態について詳細に説明する。なお、図面の説明においては、同一又は相当部分には同一符号を付し、重複する説明を省略する。
【００１４】
図１に、本実施形態に係る中継装置１０の構成を示す。中継装置１０は、送信元２０から送信されるパケットを送信先３０に送信することにより、パケットの中継を行う。中継装置１０は、具体的にはＣＰＵ及びメモリ等から構成されており、例えばルータやブリッジ等の情報処理装置により実現されることが好ましい。送信元２０は、例えばデータを送信するサーバ装置、あるいは別の中継装置が相当する。送信先３０は、例えばデータの送信先であるクライアント装置が相当する。
【００１５】
ここでパケットとは、通信メッセージであるデータを、ネットワークを介して送受信するために小さく分割して送信先等のアドレス等の制御情報を付加したデータをさす。一連のパケットは、データの送信先により受信されると、再編成されて元のデータに戻される。パケットのサイズは、データリンク層におけるデータ送信可能なサイズによって決定される。
【００１６】
本実施形態では、パケットの送信はＴＣＰ（Transmission Control Protocol）による例を主に用いる。パケットは、通信メッセージであるデータが分割された際に上述した制御情報を格納したヘッダが付加される。このヘッダには、パケットからデータを正しく再構成（復元）するための順序の情報であるシーケンス番号等が格納されている。データの再構成は、シーケンス番号が若いものから順番にパケットのペイロードを連結させることにより行われる。なお、送信された一連のパケットは、データの送信先で必ずしもシーケンス番号の順番通りに受信されるとは限らない。これは、各パケットがネットワーク上の異なるルートを経由して中継される等の理由からである。シーケンス番号は、ペイロードのサイズに基づいて次のように決定される。例えば、最初のパケットのシーケンス番号が２００１で、ペイロードのサイズが１０００バイトだとすると、次のパケットのシーケンス番号は３００１、その次のパケットのシーケンス番号は４００１となる。
【００１７】
パケットの分割と再構成の簡単な例を図２に示す。図２に示すように、データの送信側で送信するデータを、再構成するための“１”、“２”、“３”、“４”という順番の情報を各パケットのヘッダに付加して分割し、その順番で送信したとする。データの受信側では、必ずしも“１”、“２”、“３”、“４”という順番でパケットを受信するとは限らず、図２に示すように“１”、“３”、“２”、“４”という順番でパケットを受信する場合がある。そのような場合でも、パケットのヘッダに含まれる順番の情報を参照してデータを再構成することができる。
【００１８】
引き続いて、中継装置１０の各機能について説明する。図１に示すように、中継装置１０は、受信部１１と、送信部１２と、順序判断部１３（順序判断手段）と、パケット保持部１４（パケット保持手段）と、合併部１５（合併手段）と、検証部１６（検証手段）と、中継制御部１７（中継制御手段）とを備える。なお、中継装置１０は、プロキシのように、送信先３０に送信される通信メッセージに係る全てのパケットを中継するものであるとする。
【００１９】
受信部１１は、送信元２０から送信された中継すべきパケットを受信する部分である。送信部１２は、受信部１１により受信された中継すべきパケットを所定の送信先３０に送信する部分である。
【００２０】
順序判断部１３は、受信部１１により受信されたパケットを参照して、そのパケットが受信すべき順序で受信されたものであるか否かを判断する部分である。ここで、受信すべき順序としては、例えばデータを再構成する順番、即ちシーケンス番号が若い順番が用いられるのがよい。受信すべき順序で受信されたものであるか否かの判断は、例えばパケットのヘッダの情報を参照して行われることが好ましい。判断結果に関する情報は、パケット保持部１４、合併部１５及び検証部１６にそれぞれ送信される。
【００２１】
パケット保持部１４は、順序判断部１３により、受信されたパケットが受信すべき順序で受信されたものでないと判断された場合、この受信されたパケット（のコピー）を保持しておく部分である。また、パケット保持部１４は、このパケットを所定の送信先３０に送信するように送信部１２を制御する。
【００２２】
合併部１５は、パケット保持部１４により保持されているパケットが、当該保持された後に受信部１１により受信されたパケットと併せて検証されるべきものであるか否かを判断し、当該判断に基づいて受信されたパケットのペイロードと保持されているパケットのペイロードとを合併する部分である。ここでの検証は、検証部１６による検証である。具体的な判断方法等は後述する。
【００２３】
検証部１６は、順序判断部１３により、受信されたパケットが受信すべき順序で受信されたものであると判断された場合、パケットのペイロードが予め定められたルールを満たすものであるか否かを検証する部分である。ここで、検証対象となるパケットのペイロードは、受信されたパケットのペイロードが合併部１５によりパケット保持部１４に保持されたパケットのペイロードと合併されたものである場合は、合併されたペイロードであるものとする。また、検証部１６は、同一の通信メッセージにおける次の検証に用いるために、当該検証内容に関する情報を保持しておく。同一の通信メッセージにおける次のパケットの検証において、保持された検証内容に関する情報を用いることによりメッセージストリームを検証することと同様の効果を得ることができる。不正な通信メッセージの検出は、受信したパケットのみをルールで検証するのみでは不十分で、パケットから構成されるメッセージストリームを検証することにより可能となるからである。なお、同一の通信メッセージにおいて、受信したパケット（のコピー）を全て保持しておき、これらを用いて受信したパケットまでを、その都度再構成して、そのデータに対して検証を行うことも可能である。
【００２４】
検証部１６による検証は、具体的には、検証対象となるペイロードを文字列のデータとして扱い、この文字列データが予め定められたルールを満たすか否かを判断することにより行うのがよい。ここで予め定められたルールはアプリケーション層プロトコル定められた通信規約に違反した通信メッセージを検出するものを用いるのが好ましい。そのようなルールは、例えば当該文字列データが所定のパターンに当てはまる、あるいは当てはまらないというものがある。また、それ以外にも、文字列以外の制御コードが含まれないなどがある。これは、不正な通信メッセージには、制御コードが含まれるものが多く、それを検出するためのものである。また、このルールに特定のプロトコルに対応したものを含ませることとすると、そのプロトコルにおける不正な通信メッセージの検出をより精度よく行うことが可能となる。
【００２５】
中継制御部１７は、検証部１６によりパケットがルールを満たすとされた場合に当該パケットの送信を行うよう送信部１２を制御し、検証部１６によりパケットがルールを満たさないとされた場合に当該パケットの送信を禁止するよう送信部１２を制御する部分である。
【００２６】
以下、図３のフローチャートを用いて、本実施形態における中継装置１０により実行される処理を説明する。本処理は、送信元２０から送信先３０に送信される、通信メッセージに係るパケットが中継装置１０により中継されるときに行われる。ＴＣＰでは、送信元２０と中継装置１０との間にはコネクションが確立された後、パケットの送信がなされる。
【００２７】
パケットが送信されると、中継装置１０では、受信部１１が到着したパケットを受信する（Ｓ０１）。受信部１１は、受信したパケットがどのコネクションによるものかを、パケットのヘッダ情報に含まれる、送信元２０及び送信先３０のＩＰ（Internet Protocol）アドレス、送信元２０及び送信先３０のポート番号、並びにアプリケーション層プロトコルを特定する情報等を参照することにより特定し、保持しておく。また、受信部１１は、パケットのヘッダ情報を参照することによりパケットがどの通信メッセージのものか特定する。また、受信部１１は、これらの情報や中継装置１０が保持するルーティングテーブルに基づいて送信先３０（中継先）を特定する。
【００２８】
続いて、順序判断部１３が、受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する（Ｓ０２）。当該判断は、受信されたパケットを読出し、パケットのヘッダに含まれるシーケンス番号を参照することにより行う。
【００２９】
例えば、図２における“１”のパケットにように、受信すべき順序で受信されているものであると判断された場合、続いて合併部１５が、受信したパケットと合併すべきパケットがパケット保持部１４により保持されているパケットの中に有るか否かの判断を行う（Ｓ０３）。“１”のパケットの場合は、同一の通信メッセージにおける最初に受信したパケットなので、合併すべきパケットは存在しない。なお、図２においてはパケットからデータを再構成することとしているが、中継装置１０においては、通常、データは再構成しない。
【００３０】
続いて、検証部１６が受信したパケットのペイロードがルールを満たすものであるか否かを検証する（Ｓ０５）。ここで、パケットがルールを満たすもの、即ち不正な通信メッセージに係るものでないと判断された場合は、中継制御部１７が、このパケットを送信先３０に送信するよう送信部１２に対して制御を行う。制御を受けた送信部１２は、パケットの送信を行う（Ｓ０６）。なお、ここでの不正な通信メッセージに係るものでないとの判断は、受信されたパケットまでの情報からの判断である。即ち、この判断以降に受信されるパケットの情報から、不正な通信メッセージに係るものであるとされる場合がある。また、パケットがルールを満たすものであると判断された場合、検証部１６は、検証内容に関する情報を保持しておく。この時点でその通信メッセージにおける全てのパケットを送信した場合、処理は終了となる（Ｓ０８）。
【００３１】
検証部１６による検証により、パケットがルールを満たさないもの、即ち不正な通信メッセージに係るものであるとされた場合は、中継制御部１７が、このパケットを送信先３０に送信するのを禁止するよう送信部１２に対して制御を行う。制御を受けた送信部１２は、パケットの送信を禁止する（Ｓ０７）。パケットの送信が禁止されると、それ以降受信したパケットについても、全て送信を禁止し、処理は終了となる。なお、一連のパケットの検証処理において、途中のパケットでパケットがルールを満たさないものと判断された場合は、それ以前のパケットは送信先３０に既に送信されてしまっているが、送信先３０では、通常、パケットが全て到着するまでデータをアプリケーション層に上げないので、不正な通信メッセージによる攻撃等を防ぐことができる。
【００３２】
Ｓ０８において、全てのパケットを送信していない場合は、引き続いて受信部１１がパケットの受信を行う（Ｓ０１）。続いて、順序判断部１３が、受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する（Ｓ０２）。ここで、例えば図２における“３”のパケットにように、受信すべき順序で受信されたものでない（“３”のパケットより前に受信すべき“２”のパケットより前に受信している）と判断された場合は、パケット保持部１４がそのパケット（のコピー）を保持する（Ｓ０９）続いて、パケット保持部１４は、そのパケットを送信先３０に送信するよう送信部１２に対して制御を行う。制御を受けた送信部１２は、パケットの送信を行う（Ｓ１０）。この処理により、受信すべき順序より早い順序で受信されたパケットが、パケット保持部１４により保持されたこととなる。
【００３３】
引き続いて、受信部１１がパケットの受信を行い（Ｓ０１）、順序判断部１３が受信されたパケットが受信すべき順序で受信されたものであるか否かを判断する（Ｓ０２）。ここで、例えば図２における“２”のパケットにように、“１”のパケットまでが検証されており、受信すべき順序で受信されているものであると判断された場合、続いて合併部１５が、受信したパケットと合併すべきパケットがパケット保持部１４により保持されているパケットの中に有るか否かの判断を行う（Ｓ０３）。その判断のために、順序判断部１３は、パケット保持部１４により保持されるパケットを読出し、パケットのヘッダのシーケンス番号を参照する。この判断は、保持されたパケットが受信されたパケットと併せて検証すべきものであるか否かを、受信すべき順序に基づいて判断することにより行う。例えば、受信されたパケットの後に続く順番のパケットが、保持されたパケットの中にある場合、その保持されたパケットは受信されたパケットと併せて検証すべきものであると判断され、それらは合併されるものと判断される。例えば、図２の例で“３”のパケットが保持されており、“２”のパケットが受信された場合、“３”のパケットは“２”のパケットに続くものであるので、保持された“３”のパケットは受信された“２”のパケットと合併されるものと判断される。
【００３４】
続いて、合併部１５は、それらのパケットのペイロード同士を、検証部１６により検証が可能となるように合併させる（Ｓ０４）。続いて、検証部１６が合併されたペイロードがルールを満たすものであるか否かを検証する（Ｓ０５）。ここでの検証は、同じ通信メッセージに係るパケットの検証が、この検証の前に行われている場合は、検証部１６に保持されている検証内容に関する情報を用いる。図２における例では、“２”及び“３”のパケットのペイロードに関して検証を行う場合、その前に行われた“１”の検証内容を参照することにより行う。
【００３５】
ここで、パケットがルールを満たすもの、即ち不正な通信メッセージに係るものでないと判断された場合は、中継制御部１７が、このパケットを送信先３０に送信するよう送信部１２に対して制御を行う。制御を受けた送信部１２は、パケットの送信を行う（Ｓ０６）。パケット保持部１４により保持されているパケットは既に送信がなされているので、ここで送信されるパケットには保持されているパケットを含まないこととするのが好ましい。この時点でその通信メッセージにおける全てのパケットを送信した場合、処理は終了となる（Ｓ０８）。ルールを満たさないものと判断された場合は、上述の処理と同様である。
【００３６】
本実施形態に係る中継装置１０によれば、パケットを受信する度にペイロードに関して不正の検証を行って当該パケットを送信するので、アプリケーション層プロトコルにおける不正な通信メッセージの検出において通信遅延の増大を防ぐことができる。また、不正の検証に用いるルールはアプリケーション層プロトコルの種類によらずに設定できるので、プロトコルの種類よらずに不正な通信メッセージの検出をすることができる。
【００３７】
なお、検証部１６による検証、及び検証内容の保持は、オートマトンを用いることにより行われることとするのが好ましい。オートマトンによる検証は、パケットのペイロードの内容に基づいた状態遷移により行うことができる。また、検証内容の保持はオートマトンでの状態を検証内容に対応するものとしておき、その状態を検証部１６により検証を行うごとに保持しておくことにより行うことができる。
【００３８】
オートマトンによる表現としては、例えば図４に示すようなものがある。例えば、まず図４（ａ）に示すように正規表現を用いて英字からなるメッセージを“echo_message”として定義しておく。また、図４（ｂ）に示すように初期状態（INITIAL）として、“receive”という状態を定義する。状態“receive”は、ペイロードの内容が“echo_message”に合致する場合、状態“reply”に遷移することを括弧内で定義している。図４（ｃ）に示すように状態“reply”は、受信したパケットを送信する状態である。即ち、図４（ａ）〜（ｃ）で示されるオートマトンは、このように、パケットのペイロードが英字からなる文字列であることを判定することができる。また、図４（ｄ）に示すように、メッセージ長のサイズを判断することもできる。
【００３９】
このようにオートマトンを用いることにより、検証、及び検証内容の保持を行うための上記のルールを宣言的に記述することができ、ルールの作成、検証及び保守が容易となる。またアプリケーション層プロトコルにおける通信メッセージのやりとりを厳密に記述することができる。
【００４０】
また、分割されたパケットが更に分割されるフラグメンテーションが起きた場合は、フラグメントされたデータに含まれるフラグ等を参照して、パケットの順番を判断し、上述の処理を行うことができる。
【００４１】
上述した一連の処理を中継装置１０に実行させるためのパケットフィルタリングプログラムについて説明する。図５に示すように、パケットフィルタリングプログラム４１は、中継装置１０に備えられる記録媒体４０に形成されたプログラム格納領域４０ａ内に格納される。
【００４２】
パケットフィルタリングプログラム４１は、順序判断モジュール４１ａと、パケット保持モジュール４１ｂと、合併モジュール４１ｃと、検証モジュール４１ｄと、中継制御モジュール４１ｅとを備えて構成される。順序判断モジュール４１ａを実行させて実現する機能は、中継装置１０が備える順序判断部１３の機能と同様である。同様に、パケット保持モジュール４１ｂはパケット保持部１４の機能に、合併モジュール４１ｃは合併部１５の機能に、検証モジュール４１ｄは検証部１６の機能に、中継制御モジュール４１ｅは中継制御部１７の機能にそれぞれ対応している。
【００４３】
パケットフィルタリングプログラム４１は、その一部若しくは全部が、通信回線等の伝送媒体を介して伝送され、他の機器により受信されて記録（インストールを含む）される構成としてもよい。また、上記のプログラムは、コンピュータ読取可能な記録媒体に記録して頒布することが可能である。このような記録媒体には、例えばハードディスク及びフレキシブルディスク等の磁気媒体、ＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭ等の光学媒体、フロプティカルディスク等の磁気光学媒体、あるいは、プログラム命令を実行又は格納するように特別に配置された、例えばＲＡＭ、ＲＯＭ、及び半導体不揮発性メモリなどのハードウェアデバイスなどが含まれる。また、このような記録媒体からプログラム等を読み取る記録媒体読取用のドライブ（例えばフレキシブルディスクドライブ等）を中継装置１０に対して接続しておいてもよい。
【図面の簡単な説明】
【００４４】
【図１】実施形態に係る中継装置の構成を示す図である。
【図２】パケットの送信及び受信の順番の例を示した図である。
【図３】実施形態において中継装置で実行される処理を示すフローチャートである。
【図４】オートマトンの表現の例を示す図である。
【図５】実施形態に係るパケットフィルタリングプログラムの構成を示す図である。
【符号の説明】
【００４５】
１０…中継装置、１１…受信部、１２…送信部、１３…順序判断部、１４…パケット保持部、１５…合併部、１６…検証部、１７…中継制御部、２０…送信元、３０…送信先、４０…記録媒体、４０ａ…プログラム格納領域、４１…パケットフィルタリングプログラム、４１ａ…順序判断モジュール、４１ｂ…パケット保持モジュール、４１ｃ…合併モジュール、４１ｄ…検証モジュール、４１ｅ…中継制御モジュール。
【図１】
2005347853.tif 000003
【図２】
2005347853.tif 000004
【図３】
2005347853.tif 000005
【図４】
2005347853.tif 000006
【図５】
2005347853.tif 000007