(57)【特許請求の範囲】
【請求項１】
パケットフィルタリング処理に用いられるルールであって、優先順位が設定されたルールの集合を記憶する段階と、
各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域と当該ルールとの対応関係を示すマトリックス空間データであって、前記優先順位の情報を含む前記マトリックス空間データを生成するマトリックス空間データ生成段階と、
前記マトリックス空間データを参照して、統合可能なルールの組み合わせを特定する統合可能ルール特定段階と、
前記記憶されたルール集合に属するルールであって、前記可能統合ルール特定段階において特定された組み合わせをなすルール同士を統合するルール統合段階と、
を有し、
前記極小領域は、ルールの条件部分に記述される属性の種類の数に応じた次元数の空間内に配置されるものであって、前記マトリックス空間データにおいて、各極小領域ごとに当該極小領域に対応するルールが関連付けられ、ルールデータごとに当該ルールデータに対応する極小領域が関連付けられている、フィルタリングルール分析方法。
【請求項２】
前記統合可能ルール特定段階は、
動作が共通しデフォルトルールでない２つのルールのうちの一方のルールに対応する極小領域の数と前記２つのルールのうちの他方のルールに対応する極小領域の数との和が、前記２つのルールによって定まる領域に対応する極小領域の数と一致するときに、前記２つのルールの組み合わせを統合可能なルールの組み合わせの候補とする段階と、
前記候補とした組み合わせをなす２つのルールによって定まる領域に対応する極小領域のうち、前記２つのルールによって定まる領域の頂点を含む各極小領域が、前記２つのルールのいずれかに対応する場合に、前記２つのルールの組み合わせを統合可能なルールの組み合わせとする段階と、
を有する、請求項１に記載の方法。
【請求項３】
前記統合可能ルール特定段階と前記ルール統合段階とを、前記統合可能ルール特定段階において統合可能なルールの組み合わせを特定できなくなるまで繰り返す、請求項１または２に記載の方法。
【請求項４】
前記マトリックス空間データ生成段階は、生成したマトリックス空間データのうち、デフォルトルールのみに対応付けられた極小領域のデータを削除する段階を有する、請求項１乃至３のうちのいずれか１項に記載の方法。
【請求項５】
前記マトリックス空間データ生成段階は、各ルールの適用条件としてルール内に記述されるパケットの属性の範囲の開始点の値から所定値を減算した値と、前記属性の範囲の終了点の値に所定値を加算した値とを用いて、各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域を定める段階を備える、請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
パケットフィルタリング処理に用いられるルールであって、優先順位が設定されたルールの集合を記憶するルール記憶手段と、
各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域と当該ルールとの対応関係を示すマトリックス空間データであって、前記優先順位の情報を含む前記マトリックス空間データを生成するマトリックス空間データ生成手段と、
前記マトリックス空間データを参照して、統合可能なルールの組み合わせを特定する統合可能ルール特定手段と、
前記ルール記憶手段に記憶されたルール集合に属するルールであって、前記統合可能ルール特定手段によって特定された組み合わせをなすルール同士を統合するルール統合手段と、
を備え、
前記極小領域は、ルールの条件部分に記述される属性の種類の数に応じた次元数の空間内に配置されるものであって、前記マトリックス空間データにおいて、各極小領域ごとに当該極小領域に対応するルールが関連付けられ、ルールデータごとに当該ルールデータに対応する極小領域が関連付けられている、フィルタリングルール分析システム。
【請求項７】
パケットの属性を入力するパケット属性入力手段と、
前記マトリックス空間データ生成手段によって生成されたマトリックス空間データを用いて、前記パケットの属性がどの極小領域に該当するかを判定し、前記パケットの属性が該当する極小領域に対応するルールに応じた動作を確認することによって、入力された属性を有するパケットがパケットフィルタリング処理で通過を許可されるか否かを判定する通過テスト手段と、
をさらに備える請求項６に記載のシステム。
【請求項８】
前記パケット属性入力手段は、パケットの属性として、開始点及び終了点によって表わされるパケットの属性の範囲を入力し、
前記通過テスト手段は、前記パケットの属性の範囲がどの極小領域に該当するのかを判定する、
請求項７に記載のシステム。
【請求項９】
前記ルール記憶手段は、ルールの集合を複数組記憶し、
前記マトリックス空間データ生成手段は、各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点を、前記複数組のルールの集合に含まれる全てのルールから抽出し、前記開始点及び終了点を用いて、ルールの集合ごとに前記マトリックス空間データを生成し、
さらに、複数のマトリックス空間データ同士の間で対応する極小領域におけるルールの動作が一致するか否かを判定することによって、各ルールの集合に基づくパケットフィルタリング処理が同一の処理になるか否かを判定する同一性分析手段を備える、請求項６に記載のシステム。
【請求項１０】
前記同一性分析手段は、複数のマトリックス空間データ同士の間で対応する極小領域におけるルールの動作が一致しないと判定した場合に、前記極小領域の範囲を出力する、請求項９に記載のシステム。
【請求項１１】
前記マトリックス空間データ生成手段によって生成された前記マトリックス空間データを参照して、削除したとしてもパケットフィルタリング処理に影響を及ぼさないルールを特定し、前記特定したルールを削除するルール削除手段をさらに備える、請求項６に記載のシステム。
【請求項１２】
前記マトリックス空間データ生成手段によって生成された前記マトリックス空間データを参照して、各ルールの適用条件としてルール内に記述される属性の範囲によって特定される領域のうち、存在しないとしてもパケットフィルタリング処理に影響を及ぼさない領域を排除するように当該ルールを修正するルール修正手段をさらに備える、請求項６に記載のシステム。
【請求項１３】
前記ルール修正手段は、一のルールの適用条件として記述された属性の範囲のうち、より優先度が高い他のルールの適用条件として記述された属性の範囲と重なる領域を特定し、当該領域における一の属性以外の全属性の範囲が、前記一のルールの適用条件として元々記述されていた属性の範囲と一致する場合に、前記一のルールにおける前記一の属性の範囲を狭めるように修正する、請求項１２に記載のシステム。
【請求項１４】
前記ルール修正手段は、適用条件として記述された属性の範囲の一部が、より優先度が高い他のルールの適用条件として記述された属性の範囲と重なるルールを、前記極小領域ごとに分割し、分割して得られた複数のルールのうち、より優先度が高い他のルールの適用条件として記述された属性の範囲と重なるルールを削除する、請求項１２に記載のシステム。
【請求項１５】
実際にパケットフィルタリング処理対象となった複数のパケットの属性を参照して、前記各極小領域ごとに、当該極小領域に属性が含まれるパケットの数をカウントする頻度分析手段と、
カウントされたパケット数が多い順に前記極小領域をソートし、前記極小領域の一部または全部と、当該極小領域に対応するルールとに基づいて新たなルールを作成するルール作成手段と、
をさらに有する請求項６に記載のシステム。
【請求項１６】
前記ルール作成手段は、ソートした極小領域のうち、カウントされたパケット数が多い順に所定数の極小領域を選択し、当該極小領域と、当該極小領域に対応するルールとに基づいて新たなルールを作成して、元々存在していたルールの集合に追加する、請求項１５に記載のシステム。
【請求項１７】
前記ルール作成手段は、新たに作成したルールを追加したルールの集合のうち、削除したとしてもパケットフィルタリング処理に影響を及ぼさないルールを特定し、当該ルールを削除する、請求項１６に記載のシステム。
【請求項１８】
前記ルール作成手段は、ソートした極小領域を全て順番に選択し、選択した極小領域と、当該極小領域に対応するルールとに基づいて、新たなルールを作成し、作成したルールのみによって新たなルールの集合を作成する、請求項１５に記載のシステム。
【請求項１９】
前記ルール化手段は、隣接する極小領域であって、前記頻度分析手段によってカウントされたパケットの数の差が所定範囲内である極小領域同士を結合して、１つの極小領域とし、当該極小領域の結合後に新たなルールを作成する、請求項１５乃至１８のいずれか１項に記載のシステム。
【請求項２０】
前記統合可能ルール特定手段は、動作が共通しデフォルトルールでない２つのルールのうちの一方のルールに対応する極小領域の数と前記２つのルールのうちの他方のルールに対応する極小領域の数との和が、前記２つのルールによって定まる領域に対応する極小領域の数と一致するときに、前記２つのルールの組み合わせを統合可能なルールの組み合わせの候補とし、候補とした組み合わせをなす２つのルールによって定まる領域に対応する極小領域のうち、前記２つのルールによって定まる領域の頂点を含む各極小領域が、前記２つのルールのいずれかに対応する場合に、前記２つのルールの組み合わせを統合可能なルールの組み合わせとする、請求項６に記載のシステム。
【請求項２１】
前記統合可能ルール特定手段が、統合可能なルールの組み合わせを特定し、前記ルール統合手段が、特定された組み合わせをなすルール同士を統合することを、前記統合可能ルール特定手段が統合可能なルールの組み合わせを特定できなくなるまで繰り返す、請求項６または２０に記載のシステム。
【請求項２２】
前記マトリックス空間データ生成手段は、生成したマトリックス空間データのうち、デフォルトルールのみに対応付けられた極小領域のデータを削除する、請求項６乃至２１のいずれか１項に記載のシステム。
【請求項２３】
前記マトリックス空間データ生成手段は、各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点の値から所定値を減算した値と、前記属性の範囲の終了点の値に所定値を加算した値とを用いて、各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域を定める、請求項６乃至２２のいずれか１項に記載のシステム。
【請求項２４】
パケットフィルタリング処理に用いられるルールであって、優先順位が設定されたルールの集合を記憶するルール記憶領域を備えたコンピュータに、
各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域と当該ルールとの対応関係を示すマトリックス空間データであって、前記優先順位の情報を含む前記マトリックス空間データを生成する処理
前記マトリックス空間データを参照して、統合可能なルールの組み合わせを特定する統合可能ルール特定処理、及び
ルール記憶手段に記憶されたルール集合に属するルールであって、統合可能ルール特定手段によって特定された組み合わせをなすルール同士を統合するルール統合処理
を実行させ、
前記極小領域は、ルールの条件部分に記述される属性の種類の数に応じた次元数の空間内に配置されるものであって、前記マトリックス空間データにおいて、各極小領域ごとに当該極小領域に対応するルールが関連付けられ、ルールデータごとに当該ルールデータに対応する極小領域が関連付けられている、プログラム。
【請求項２５】
前記コンピュータに、前記統合可能ルール特定処理において、
動作が共通しデフォルトルールでない２つのルールのうちの一方のルールに対応する極小領域の数と前記２つのルールのうちの他方のルールに対応する極小領域の数との和が、前記２つのルールによって定まる領域に対応する極小領域の数と一致するときに、前記２つのルールの組み合わせを統合可能なルールの組み合わせの候補とする処理、及び
前記候補とした組み合わせをなす２つのルールによって定まる領域に対応する極小領域のうち、前記２つのルールによって定まる領域の頂点を含む各極小領域が、前記２つのルールのいずれかに対応する場合に、前記２つのルールの組み合わせを統合可能なルールの組み合わせとする処理
を実行させる請求項２４に記載のプログラム。
【請求項２６】
前記コンピュータに、前記統合可能ルール特定処理及び前記ルール統合処理を、統合可能なルールの組み合わせを特定できなくなるまで繰り返す処理を実行させる請求項２４または２５に記載のプログラム。
【請求項２７】
前記コンピュータに、前記マトリックス空間データのうち、デフォルトルールのみに対応付けられた極小領域のデータを削除する極小領域削除処理を実行させる、請求項２４乃至２６のいずれか１項に記載のプログラム。
【請求項２８】
前記コンピュータに、各ルールの適用条件としてルール内に記述されるパケットの属性の範囲の開始点の値から所定値を減算した値と、前記属性の範囲の終了点の値に所定値を加算した値とを用いて、各ルールの適用条件として当該ルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域を定める処理、を実行させる請求項２４乃至２７のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットフィルタリングのルールを分析するフィルタリングルール分析方法及びシステムに関する。
【背景技術】
【０００２】
企業や組織において、その運用するネットワークのセキュリティに対する関心が高まってきている。【０００３】
自社のネットワークを防御する方法の一つとして、ファイアウォールを用いる方法がある。ファイアウォールは、外部ネットワークと、内部ネットワークすなわち防御すべきネットワークとを接続するゲートウェイまたはルータに搭載されるネットワーク機器またはソフトウェアである。ファイアウォールは、ネットワークを流れるパケットを検査し、そのパケットを通過させたり、遮断したりすることによって、不正なアクセス等から内部ネットワークを防御する。ファイアウォールで行われる処理を、一般に、パケットフィルタリングという。ファイアウォールは、パケット属性（例えば、送信元アドレスやポート、送信先アドレスやポート、プロトコルの種類等）を条件にしたルールの集合に基づいて、パケットの検査を行う。ファイアウォールは、例えば、「自社ネットワークの公開サーバのアドレスの特定のポートに向かう特定のプロトコルを持つパケットの通過は許可する」等のルールの集合に基づいて、パケットの通過を許可するか否かの検査を行う。ルールの集合は、ポリシーと呼ばれる。現在では、一般的なファイアウォールにおけるポリシーのルール数は数十から数百に及び、しかも各ルールの条件は複雑であるため、セキュリティの専門家ですらポリシー全体としてどうなっているのかを理解することは難しくなってきている。したがってファイアウォールにおけるポリシーを最適な形で維持、管理することは、ネットワークセキュリティを維持する上で大きな課題である。【０００４】
現在、ファイアウォールのポリシーがどうなっているのかの把握は、ポリシーを一覧表示するＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を実現するソフトウェアを使用して、専門家が人手で行なっている。ポリシーのルールが最適な集合になっているのかを判断したり、ポリシーのルールが最適な集合になっていない場合にそれを最適なルール集合に整形したりする等のポリシー管理についても、人手でおこなっているのが実情である。【０００５】
特開２０００−１７４８０８号公報には、ポリシーのルール間の順序を変えることでファイアウォールのパケットフィルタリング処理効率を上げる技術が記載されている。特開２０００−１７４８０８号公報に記載のデータパケットフィルタの動作方法は、パケットフィルタリングのルールにおいて、着信パケットに頻繁にマッチするルールほどルール順序の前方に移動することによって、パケットフィルタリングの処理効率を上げるものである。この方法では、あるルールと別のルールをペアとし、そのペアでルールが衝突するかどうかをチェックする。衝突とは、あるルールと別のルールを互いに入れ替えることによってルール全体の意味が変わることである。具体的には、アクションが異なり、かつ、プロトコル、ソースアドレス、ソースポート、デスティネーションアドレス、デスティネーションポートのいずれかに交わり、すなわちフィールドの交わりがあることが、ルールの衝突である。この方法では、全てのペアについて衝突か衝突でないかをチェックし、衝突データを示す衝突テーブル生成する。ルールが受信パケットにマッチした回数をマッチカウントと呼ぶことにして、最後に、各ルールのマッチカウントに基づいて、マッチカウントの高いルールを前方に移動する。このとき、ルールの順序を入れ替えてもポリシー全体としては変化しない、すなわちルール同士が衝突しないという制約の元で、ルールの順序を入れ替える。このアルゴリズムには、バブルソート等のソーティングアルゴリズムが用いられる。【０００６】
特開２００３−３３３０８４号公報には、ファイアウォールのポリシーにルールを追加する際に、どこに新しいルールを追加挿入するかを決定する方法が記載されている。この方法では、新しいルールと既存のルールを順に比較し、新しいルールを一部または全て含むようなルールが既存ルールにあった場合、その既存ルールの直前にその新しいルールを挿入する。ルールの包含関係をチェックするアルゴリズムは、以下のようになものである。まず、新しいルールを選択する。そして、既存のルールを順に一つずつ選択する。選択したルール同士で、インタフェースの照合、プロトコルの照合、チェインの照合、アドレスの照合、ポートの照合を行い、いずれかで不一致があった場合は、次の既存のルールを選択し、同様の照合を行う。一致している場合には、アクションの照合を行い、アクションが一致した場合には、選択した既存のルールの直前に挿入する。アクションが一致しない場合には、挿入するか否かの判断をユーザに促す。【０００７】
特開２００３−３３３０８４号公報に記載された方法では、特開２０００−１７４８０８号公報に記載されているルールのペアのフィールドの交わりを判定するステップとほぼ同様の技術を用いている。この特開２００３−３３３０８４号公報には、ルールに有効時刻という情報を加え、ある一定時間ごとにルール集合を走査し、有効時刻が現時刻と一致または超えている場合はそのルールを削除することも記載されている。この技術により、古いルールを適宜消去できるようになっている。【０００８】
岡城純孝、松田勝志、小川隆一、「セキュリティ運用管理のためのポリシー言語ＳＣＣＭＬ」、情報処理学会研究報告、Ｖｏｌ．  ２００４，  Ｎｏ．  １２９，  ｐｐ．  ８９−９４には、様々なセキュリティ機器の設定情報を統一的に表現可能なポリシー言語であるＳＣＣＭＬ（Ｓｅｃｕｒｉｔｙ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｃｏｏｒｄｉｎａｔｏｒ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）について記載されている。
【特許文献１】特開２０００−１７４８０８号公報
【特許文献２】特開２００３−３３３０８４号公報
【非特許文献１】岡城純孝、松田勝志、小川隆一、「セキュリティ運用管理のためのポリシー言語ＳＣＣＭＬ」、情報処理学会研究報告、Ｖｏｌ．  ２００４，  Ｎｏ．  １２９，  ｐｐ．  ８９−９４
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特開２０００−１７４８０８号公報に記載の方法は、ルールの入れ替えを行い、フィルタリング処理の高速化を実現している。しかしながらこの方法は、ポリシーとして結局どうなっているのかを知りたいという管理者の要求や、ポリシーが最適な形になっているかどうかを知りたいという管理者の要求や、ポリシーを最適な形にしたいという管理者の要求には応えることができず、その上、アルゴリズム的にルールの入れ替えができないルール集合の場合、すなわち任意の２つのルール間で衝突が起こるようなルール集合の場合、フィルタリング処理の高速化を行うこともできない。【００１０】
特開２００３−３３３０８４号公報に記載の方法は、新たに追加するルールをどこに挿入するかの決定を行っているだけなので、ポリシーとして結局どうなっているのかを知りたいという管理者の要求や、ポリシーが最適な形になっているかどうかを知りたいという管理者の要求や、ポリシーを最適な形にしたいという管理者の要求には応えられない。またこの方法では、有効時刻が設定されているルール集合で、現時刻以前の有効時刻を持つルールを削除してはいるが、有効時刻の設定がない一般的なパケットフィルタリングにおいては不要になったルールを削除してルールを最適な形にしたいという管理者の要求には応えられない。【００１１】
パケットフィルタリングのルールを検証する際には、パケットフィルタリング処理を行うネットワーク機器が複数存在する場合に、各機器におけるパケットフィルタリング処理の同一性を判断できることが好ましい。【００１２】
本発明の目的は、ファイアウォールのフィルタリングルールの管理を支援し、ルール間の関係の把握や、どのようなパケットが通過を許可されどのようなパケットが遮断されるのかというルール全体すなわちポリシーの把握を容易にすることができる、フィルタリングルール分析方法及びシステムを提供することにある。【００１３】
本発明の別の目的は、複雑になったルールの集合においてそのルールの集合を最適化することができるフィルタリングルール分析方法及びシステムを提供することにある。【００１４】
本発明の別の目的は、パケットフィルタリング処理を高速に行うことができるフィルタリングルール分析方法及びシステムを提供することにある。【００１５】
本発明のさらに別の目的は、複数の機器におけるパケットフィルタリング処理の同一性を判断できるフィルタリングルール分析方法及びシステムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明によれば、フィルタリングルール分析方法は、パケットフィルタリング処理に用いられるルールであって、優先順位が設定されたルールの集合を記憶する段階と、各ルールの適用条件としてそのルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域とそのルールとの対応関係を示す空間データであって、優先順位の情報を含む空間データを生成する空間データ生成段階と、を有する。【００１７】
本発明のフィルタリングルール分析方法においては、統合可能なルールの組み合わせを特定する統合可能ルール特定段階と、記憶されたルール集合に属するルールであって、可能統合ルール特定段階において特定された組み合わせをなすルール同士を統合するルール統合段階と、を備えていてもよい。そのように構成することで、ルール同士を統合することができ、ルール同士を統合することにより、ルールの数を減少させることができ、管理者にルールを理解させやすくすることができる。【００１８】
空間データ生成段階には、生成した空間データのうち、デフォルトルールのみに対応付けられた極小領域のデータを削除する段階を設けるようにしてもよい。そのように構成することにより、極小領域のデータを少なくすることができ、各ルール間の関係を把握しやすくすることができる。また、極小領域の数を減少させることができるので、メモリ消費を低減することができる。【００１９】
本発明によれば、フィルタリングルール分析システムは、パケットフィルタリング処理に用いられるルールであって、優先順位が設定されたルールの集合を記憶するルール記憶手段と、各ルールの適用条件としてそのルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域とそのルールとの対応関係を示す空間データであって、優先順位の情報を含む空間データを生成する空間データ生成手段と、を備える。【００２０】
本発明のフィルタリングルール分析システムは、さらに、空間データ生成手段によって生成された空間データを用いて、各ルールの適用条件として記述された属性の範囲の重なりを分析する重なり分析手段を備えていてもよい。この構成では、重なり分析手段が、各ルールの適用条件として記述された属性の範囲の重なりを分析するので、フィルタリングルールの管理において、ルール間の関係を把握することができるようになる。このような重なり分析手段は、一のルールに記述された属性の範囲が、その一のルールよりも優先順位が高い他のルールに記述された属性の範囲に含まれる状態または一部重複する状態を検出する構成であってもよい。そのような構成により、より優先順位の高いルールによって隠されることになるルールが検出されるので、ルール間の関係を把握することができる。【００２１】
本発明のフィルタリングルール分析システムは、パケットの属性を入力するパケット属性入力手段と、空間データ生成手段によって生成された空間データを用いて、パケットの属性がどの極小領域に該当するかを判定し、パケットの属性が該当する極小領域に対応するルールに応じた動作を確認することによって、入力された属性を有するパケットがパケットフィルタリング処理で通過を許可されるか否かを判定する通過テスト手段と、を備えた構成であってもよい。このような構成によれば、どのようなパケットが通過を許可され、どのようなパケットが遮断されるのかというルール全体の把握を容易に行うことができる。【００２２】
本発明のシステムでは、ルール記憶手段は、ルールの集合を複数組記憶し、空間データ生成手段が、各ルールの適用条件としてルール内に記述されるパケットの属性の範囲の開始点及び終了点を、複数組のルールの集合に含まれる全てのルールから抽出し、その開始点及び終了点を用いて、ルールの集合ごとに空間データを生成し、複数の空間データ同士の間で対応する極小領域におけるルールの動作が一致するか否かを判定することによって、各ルールの集合に基づくパケットフィルタリング処理が同一の処理になるか否かを判定する同一性分析手段を備えた構成であってもよい。このような構成によれば、複数の機器におけるパケットフィルタリング処理の同一性を判断できる。同一性分析手段は、複数の空間データ同士の間で対応する極小領域におけるルールの動作が一致しないと判定した場合に、極小領域の範囲を出力する構成であってもよい。【００２３】
本発明のシステムでは、空間データ生成手段によって生成された空間データを参照して、削除したとしてもパケットフィルタリング処理に影響を及ぼさないルールを特定し、ルールを削除するルール削除手段を備えた構成としてもよい。このような構成では、ルール削除手段が不要なルールを削除するので、ルールの集合を最適化することができる。空間データ生成手段によって生成された空間データを参照して、各ルールの適用条件としてルール内に記述される属性の範囲によって特定される領域のうち、存在しないとしてもパケットフィルタリング処理に影響を及ぼさない領域を排除するようにルールを修正するルール修正手段を備えた構成としてもよい。このような構成によれば、ルール修正手段によるルールの修正によって、ルールの集合を最適化することができる。ルール修正手段は、一のルールの適用条件として記述された属性の範囲のうち、より優先度が高い他のルールの適用条件として記述された属性の範囲と重なる領域を特定し、その領域における一の属性以外の全属性の範囲が、一のルールの適用条件として元々記述されていた属性の範囲と一致する場合に、一のルールにおける一の属性の範囲を狭めるように修正する構成であってもよい。あるいはルール修正手段は、適用条件として記述された属性の範囲の一部が、より優先度が高い他のルールの適用条件として記述された属性の範囲と重なるルールを、極小領域ごとに分割し、分割して得られた複数のルールのうち、より優先度が高い他のルールの適用条件として記述された属性の範囲と重なるルールを削除する構成であってもよい。【００２４】
本発明のシステムは、実際にパケットフィルタリング処理対象となった複数のパケットの属性を参照して、各極小領域ごとに、極小領域に属性が含まれるパケットの数をカウントする頻度分析手段と、カウントされたパケット数が多い順に極小領域をソートし、極小領域の一部または全部と、その極小領域に対応するルールとに基づいて新たなルールを作成するルール作成手段とを備えた構成であってもよい。このような構成によれば、ルール作成手段は、カウントされたパケット数が多い順に極小領域をソートし、その極小領域の一部または全部と、その極小領域に対応するルールとに基づいて新たなルールを作成する。したがって、実際にパケットフィルタリング処理対象となったパケットに即したルールが新たに作成されるので、パケットフィルタリング処理を高速化することができる。【００２５】
ルール作成手段は、ソートした極小領域のうち、カウントされたパケット数が多い順に所定数の極小領域を選択し、その極小領域と、その極小領域に対応するルールとに基づいて新たなルールを作成して、元々存在していたルールの集合に追加してもよい。あるいはルール作成手段は、新たに作成したルールを追加したルールの集合のうち、削除したとしてもパケットフィルタリング処理に影響を及ぼさないルールを特定し、そのようなルールを削除する構成であってもよい。このような構成によれば、ルールの集合を最適化することができる。さらにルール作成手段は、ソートした極小領域を全て順番に選択し、選択した極小領域と、その極小領域に対応するルールとに基づいて、新たなルールを作成し、作成したルールのみによって新たなルールの集合を作成する構成であってもよい。さらにはルール化手段を設け、ルール化手段が、隣接する極小領域であって、頻度分析手段によってカウントされたパケットの数の差が所定範囲内である極小領域同士を結合して、１つの極小領域とし、極小領域の結合後に新たなルールを作成するようにしてもよい。【００２６】
本発明のフィルタリングルール分析システムは、統合可能なルールの組み合わせを特定する統合可能ルール特定手段と、ルール記憶手段に記憶されたルール集合に属するルールであって、統合可能ルール特定手段によって特定された組み合わせをなすルール同士を統合するルール統合手段とを備えた構成であってもよい。このような構成によれば、ルール同士を統合することができる。ルール同士を統合することにより、ルールの数を減少させることができ、管理者にルールを理解させやすくすることができる。統合可能ルール特定手段は、動作が共通しデフォルトルールでない２つのルールのうちの一方のルールに対応する極小領域の数と他方のルールに対応する極小領域の数との和が、２つのルールによって定まる領域に対応する極小領域の数と一致するときに、２つのルールの組み合わせを統合可能なルールの組み合わせの候補とし、候補とした組み合わせをなす２つのルールによって定まる領域に対応する極小領域のうち、２つのルールによって定まる領域の頂点を含む各極小領域が、２つのルールのいずれかに対応する場合に、２つのルールの組み合わせを統合可能なルールの組み合わせとする構成であってもよい。あるいは統合可能ルール特定手段が、統合可能なルールの組み合わせを特定し、ルール統合手段が、特定された組み合わせをなすルール同士を統合することを、統合可能ルール特定手段が統合可能なルールの組み合わせを特定できなくなるまで繰り返す構成であってもよい。【００２７】
本発明において空間データ生成手段は、生成した空間データのうち、デフォルトルールのみに対応付けられた極小領域のデータを削除する構成であってもよい。このような構成によれば、極小領域のデータを少なくすることができ、各ルール間の関係を把握しやすくすることができる。その上、極小領域の数を減少させることができるので、メモリ消費を低減することができる。あるいは空間データ生成手段は、各ルールの適用条件としてルール内に記述されるパケットの属性の範囲の開始点の値から所定値を減算した値と、属性の範囲の終了点の値に所定値を加算した値とを用いて、各ルールの適用条件としてルール内に記述されるパケットの属性の範囲の開始点及び終了点によって特定される極小領域を定める構成であってもよい。【００２８】
本発明によれば、ファイアウォールのフィルタリングルールの管理において、ルール間の関係の把握や、どのようなパケットが通過を許可され、どのようなパケットが遮断されるのかというルール全体の把握を容易に行うことができる。本発明によれば、複雑になったルールの集合においてルールの集合を最適化することができ、パケットフィルタリング処理を高速化することができ、複数の機器におけるパケットフィルタリング処理の同一性を判断することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１の実施形態のフィルタリングルール分析システムの構成を示すブロック図である。
【図２】マトリックス化部によるマトリックス空間データ作成処理の例を示すフローチャートである。
【図３】重なり分析部による処理の例を示すフローチャートである。
【図４】重なり分析部による処理の例を示すフローチャートである。
【図５】ルール集合の例を示す図である。
【図６】ルール集合を２次元平面で表わした模式図である。
【図７】マトリックスデータを２次元平面で表わした模式図である。
【図８】マトリックスのデータの記述形式の例を示す図である。
【図９】ルールデータの例を示す図である。
【図１０】マトリックスデータの例を示す図である。
【図１１】重なり分析部による分析結果の例を示す図である。
【図１２】各ルールデータを２次元平面で表わした模式図である。
【図１３】重なり分析部による分析結果の例を示す図である。
【図１４】本発明の第２の実施形態のフィルタリングルール分析システムの構成を示すブロック図である。
【図１５】通過テスト部によるテスト処理の例を示すフローチャートである。
【図１６】ルール集合から導出されたマトリックスデータを２次元平面で表わした模式図である。
【図１７】テストパケットの周辺の２次元空間を示す模式図である。
【図１８】通過テスト部によるテスト処理結果の例を示す図である。
【図１９】本発明の第３の実施形態のフィルタリングルール分析システムの構成を示すブロック図である。
【図２０】通過テスト部における処理の例を示すフローチャートである。
【図２１】ネットワーク構成の例を示す図である。
【図２２】ルール集合の例を示す図である。
【図２３】ルールのリストが追記されたマトリックスデータの例を示す図である。
【図２４】通過テスト部によるテスト処理結果の例を示す図である。
【図２５Ａ】ルール集合及びテストパケットを示す図である。
【図２５Ｂ】ルール集合及びテストパケットを示す図である。
【図２６】本発明の第４の実施形態のフィルタリングルール分析システムを示すブロック図である。
【図２７】マトリックス化部によるマトリックス空間データ作成処理の例を示すフローチャートである。
【図２８】同一性分析部による処理の例を示すフローチャートである。
【図２９】ネットワーク構成の例を示す図である。
【図３０】ルール集合の例を示す図である。
【図３１】同一性分析部による分析結果の例を示す図である。
【図３２】ルール集合の例を示す図である。
【図３３】同一性分析部による分析結果の例を示す図である。
【図３４】本発明の第５の実施形態のフィルタリングルール分析システムを示すブロック図である。
【図３５】ルール削除部によるルール削除やルール修正の処理経過の例を示すフローチャートである。
【図３６】ルール削除部によるルール削除やルール修正の処理経過の例を示すフローチャートである。
【図３７】ルール削除部によるルール削除やルール修正の処理経過の例を示すフローチャートである。
【図３８】ルール削除部による判定例を示す図である。
【図３９】縮小の具体例を示す図である。
【図４０】縮小の具体例を示す図である。
【図４１Ａ】縮小可能な場合の例を示す図である。
【図４１Ｂ】縮小不可能な場合の例を示す図である。
【図４２】縮小不可能な場合の例を示す図である。
【図４３】残り領域が矩形状態である場合に、各軸の無限大方向及び無限小方向から残り領域を見た状況を示す図である。
【図４４】残り領域が矩形状態でない場合に、各軸の無限大方向及び無限小方向から残り領域を見た状況を示す図である。
【図４５】ルール削除部が、ルールを縮小できるかどうかを判定し、ルールを縮小する場合を２次元空間で模式的に示した説明図である。
【図４６】ルール削除部が、ルールを縮小できるかどうかを判定し、ルールを縮小する場合を３次元空間で模式的に示した図である。
【図４７】ルール集合の例を示す図である。
【図４８】ルール集合を２次元空間で示した模式図である。
【図４９】ルール削除部の処理に伴うルール集合の変化を示す模式図である。
【図５０】ルール削除部の処理に伴うルール集合の変化を示す模式図である。
【図５１】ルール削除部の処理に伴うルール集合の変化を示す模式図である。
【図５２】ルール削除部による処理結果の例を示す図である。
【図５３】ルールを増加させて縮小を行う場合の例を示す模式図である。
【図５４】本発明の第６の実施形態のフィルタリングルール分析システムを示すブロック図である。
【図５５】頻度分析部による処理の例を示すフローチャートである。
【図５６】ルール化部による新たなルール集合作成処理の一例を示すフローチャートである。
【図５７】ルール化部による新たなルール集合作成処理の他の例を示すフローチャートである。
【図５８】マトリックスデータの結合の例を示す模式図である。
【図５９】ルール集合の例を示す図である。
【図６０】パケット履歴の例を示す図である。
【図６１】マトリックスデータ２次元平面で表わした模式図である。
【図６２】頻度分析部の処理によって得られるマトリックスデータの例を示す図である。
【図６３】バッファにコピーされたルール集合の変化を示す図である。
【図６４】新たに生成されたルール集合の例を示す図である。
【図６５】本発明の第７の実施形態のフィルタリングルール分析システムにおけるマトリックス化部の動作の例を示すフローチャートである。
【図６６】削除されるマトリックスデータの例を示す図である。
【図６７】本発明の第８の実施形態のフィルタリングルール分析システムを示すブロック図である。
【図６８】ルール統合部によるルール統合の処理経過の例を示すフローチャートである。
【図６９】統合候補を求める処理の処理経過の例を示すフローチャートである。
【図７０】統合候補としたルールの組み合わせに対して統合可能であるか否かを確認する処理の処理経過の例を示すフローチャートである。
【図７１Ａ】ルールデータの例を示す図である。
【図７１Ｂ】ルールデータの例を示す図である。
【図７２】ＭｑとＭａ＋Ｍｂとの比較を示す説明図である。
【図７３】２つのルールが重なっている部分のマトリックス数と、２個のルールでできる最小多次元立方体Ｑを構成するマトリックスのうち、２つのルールと無関係なマトリックス数が一致する場合の例を示す説明図である。
【図７４Ａ】ルールの領域の境界上のパケットを示す図である。
【図７４Ｂ】ルールの領域の境界上のパケットを示す図である。
【図７５Ａ】ルールの各属性の開始点を表わす値から所定値を減算した値と、ルールの各属性の終了点を表わす値に所定値を加算した値とを境界点とした場合のマトリックスの例を示す説明図である。
【図７５Ｂ】ルールの各属性の開始点を表わす値から所定値を減算した値と、ルールの各属性の終了点を表わす値に所定値を加算した値とを境界点とした場合のマトリックスの例を示す説明図である。
【符号の説明】
【００３０】
１００    ルール記憶部
１２０    マトリックス空間記憶部
１３０，１３１    マトリックス化部
１４０    重なり分析部
１５０，１５１    通過テスト部
１６０    同一性分析部
１７０    ルール削除部
１８０    頻度分析部
１９０    ルール化部
２００    ルール統合部
９２０    入力装置
９３０    出力装置
９４０    テスト入力装置
【発明を実施するための最良の形態】
【００３１】
次に、本発明を実施の形態について図面を参照して説明する。なお、以下の説明において、ファイアウォールのパケットフィルタリングルールとルータのアクセス制御ルールは、同様のルールであるので、両者を併せてパケットフィルタリングルールと記すことがあり、これらを単にルールと記す場合もある。【００３２】
第１の実施形態：
図１に示す本発明の第１の実施形態のフィルタリングルール分析システムは、ルール分析システム１００と、入力装置９２０と、出力装置９３０とを備えている。ルール分析システム１００は、ルール記憶部１１０と、マトリックス空間記憶部１２０と、マトリックス化部１３０と、重なり分析部１４０とを備える。【００３３】
入力装置９２０は、任意のフィルタリングルールの集合を独自の形式の記述で表わしたルール集合９１０をルール分析システム１００に入力する。ここで、独自の形式の記述は、特定のネットワーク機器、例えば特定のファイアウォールや特定のルータ等に依存した記述ではなく、各種ネットワーク機器に依存しない共通の形式の記述であってもよい。独自の形式の記述は、例えば、特定のネットワーク機器におけるルールの記述形式を、統一的に用いる記述形式として採用し、その形式で表わした記述であってもよい。以下の説明では、ルール集合９１０が、各種ネットワーク機器に依存しない共通の形式で記述されている場合を例にして説明する。【００３４】
ルール分析システム１００は、ルール記憶部１１０と、マトリックス空間記憶部１２０と、マトリックス化部１３０と、重なり分析部１４０とを備える。ルール記憶部１１０は、入力装置９２０によって入力されたフィルタリングルールの集合すなわち独自の形式で記述されたルールの集合を記憶する。マトリックス空間記憶部１２０は、ルールを多次元のマトリックス空間データとして記憶する。マトリックス空間データについては、後述する。マトリックス化部１３０は、独自の形式で記述されたルールをマトリックス空間データに変換し、マトリックス空間記憶部１２０に記憶させる。重なり分析部１４０は、マトリックス空間データを参照してルールの重なりを分析する。【００３５】
出力装置９３０は、ルール分析システム１００によって分析される結果を出力する。【００３６】
マトリックス化部１３０及び重なり分析部１４０は、例えば、プログラムに従って動作するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって実現される。なお、プログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。ルール記憶部１１０及びマトリックス空間記憶部１２０は、例えば、記憶装置によって実現される。出力装置９３０は、例えば、ディスプレイ装置によって実現される。入力装置９２０は、例えば、各種ネットワーク機器に依存する形式で記述されたルールの集合を、ネットワーク機器に依存しない形式で記述されたルール集合９１０に変換して出力するルール変換システム（不図示）とのインタフェースによって実現される。【００３７】
なお、ここで述べたルール変換システム（不図示）は、各種ネットワーク機器に接続され、その各種ネットワーク機器から、機器に依存する形式で記述されたルールを収集する。そして、ルール変換システムは、各種セキュリティ機器におけるルールの記述仕様に関する知識と、ルール集合９１０に含まれるルールのフォーマット情報とを記憶し、これらの知識を参照して、収集したルールから、独自の形式のルールを生成する。ルール変換システムは、このようにして生成されたルールの集合を、ルール集合９１０として出力する。なお、ルール変換システムにルールを収集させるサブルーチンや、収集したルールから独自の形式のルールをルール変換システムに生成させるサブルーチンは、例えば、各種ネットワーク機器ごとに予め用意される。【００３８】
次に、入力装置９２０が入力するルール集合９１０に含まれるルールについて説明する。フィルタリングルールは、一般に条件部分と実行部分からなるＩＦ−ＴＨＥＮルールである。条件部分（ＩＦ部）には、パケットの属性であるソース（発信元）アドレス、ソースポート、デスティネーション（あて先）アドレス、デスティネーションポート、プロトコルを用いた範囲が条件として記述される。例えば、「デスティネーションポートの範囲が０番〜８０番で、プロトコルの範囲がＴＣＰである。」等の条件が記述される。条件として記述される属性の組み合わせは任意であり、条件に記述された属性の範囲すべてを満たすパケットが、その条件部分を含むルールの適用対象となる。ルールの条件部分に記述されていない属性がある場合、条件部分は、その記述されていない属性に関しては全ての範囲を示しているものとする。例えば、上記の「デスティネーションポートの範囲が０番〜８０番で、プロトコルの範囲がＴＣＰである。」という条件の例では、デスティネーションポートとプロトコル以外の属性に関しては、全ての範囲を示しているものとする。すなわち、この条件の下では、パケットのデスティネーションポートが０〜８０の範囲であり、かつ、プロトコルがＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）であるパケット全てが条件に合致するパケットとなる。すなわち、ルールの適用条件としてルール内に記述された属性の範囲とは、パケットの通過許可または不許可の判定をする際にそのルールが適用される条件として記述され、パケットの各属性がそれぞれ、ルールの適用条件として記述された各属性の範囲に含まれるならば、そのパケットに関する通過許可または不許可の判定時にそのルールが適用され得ることを示すものである。実行部分（ＴＨＥＮ部）には、条件部分に合致したパケットの通過を許可するか許可しないか（アクションと呼ぶ。）を記述する。【００３９】
このようなルールが順に記述されたものが、パケットフィルタリングのルール集合である。各ルールには、順番（優先順位と記す場合もある。）が定められている。パケットフィルタリングを行うネットワーク機器は、あるパケットが到達すると、ルール集合のルールの条件部分を順にそのパケットの属性と比較する。そして、そのパケットの属性と合致したルールが見つかると、そのルールの実行部分のアクションに応じた処理を行う。特別なルールにデフォルトルールがある。デフォルトルールは、パケットがデフォルトルールを除くその他のルールの何れにも合致しない場合に実行されるルールである。すなわち、デフォルトルールは、どのようなパケットでも合致する最も広い条件部分を持つルールであり、その書式はＩＦ−ＴＨＥＮ形式になっていないこともある。これは、デフォルトルールであることが認識できれば、ＩＦ部分は必要ないためである。デフォルトルールは、一般にルール集合の先頭または最後尾に順序付けられる。本実施の形態では、デフォルトルールの順番は最後であるものとする。なお、前述のルール変換システム（不図示せず）が、ネットワーク機器から収集したルールの集合を独自の形式の記述のルール集合９１０に変換した場合であっても、ルール集合９１０に含まれる各ルールは、元のネットワーク機器におけるルールの順番を保持しているものとする。
【００４０】
次に、図１に示したフィルタリングルール分析システムの動作を説明する。入力装置９２０は、ルール集合９１０をルール分析システム１００に入力して、そのルールの集合をルール記憶部１１０に記憶させる。ここでは説明を単純化するため、１つのネットワーク機器のルールの集合であって、機器に依存しない独自の形式の記述で表わされたルールの集合が入力されてルール記憶部１１０に記憶されるものとする。なお、入力装置９２０は、ルールの集合の記述形式を、コンピュータ（具体的にはルール分析システム１００）が扱いやすいように変換してもよい。【００４１】
ルール分析システム１００においてマトリックス化部１３０は、ルールの条件部分で用いられる５種類の属性、すなわちソースアドレス、ソースポート、デスティネーションアドレス、デスティネーションポート、プロトコルのそれぞれを軸とする５次元空間を作る。マトリックス化部１３０は、その５次元空間の中に各ルールを配置した場合における各ルールの属性の範囲の開始点と終了点の交差でできる極小領域を作る。このような極小領域のことをマトリックスと呼ぶ。さらに、マトリックス化部１３０は、各ルールとマトリックスの関係、各マトリックスとルールの関係を表わしたマトリックス空間データを作る。ここでは、一般的に用いられる５つの属性、すなわちソースアドレス、ソースポート、デスティネーションアドレス、デスティネーションポート、プロトコルを用いて５次元空間としているが、属性の数は５に限られるものではなく、いくつであっても構わない。５次元空間の場合、あるルールは、その５次元空間内のある５次元領域を表わすこととなる。【００４２】
図２は、マトリックス化部１３０によるマトリックス空間データ作成処理の例を示すフローチャートである。なお、図２およびそれ以降に示すフローチャートにおいて、「残っている」という表現は、「ある要素の集合に含まれる要素のうち、選択済みを表わすチェックが付いていない要素がある」ということを意味する。ここで、チェックとは、要素が選択済みであることを示す情報である。なお、図２およびそれ以降に示す各種フローチャートにおいて、「１つ選ぶ」という表現は、「集合に含まれる要素のうち１つの要素を選ぶと同時にその要素にチェックをつける」ことを意味する。何らかの要素が残っているか否かの判定処理が行われ、要素が残っていると判定された場合に、残っている要素から１つ選ぶ処理が続く。【００４３】
マトリックス化部１３０は、ステップＳ１０１において、ルールの条件部分で用いられる属性（例えば５種類の属性）のいずれかが残っているか否かを判定する。いずれかの属性が残っているならば、マトリックス化部１３０は、ステップＳ１０２において、その属性の中から一つの属性を選び、ステップＳ１０３において、ルール記憶部１１０に記憶されている全てのルールの条件部分から、ステップＳ１０２で選択した属性に関する開始点と終了点を収集する。ここでは、開始点と終了点の総称を境界点と呼ぶ。次に、マトリックス化部１３０は、ステップＳ１０４において、ステップＳ１０３で収集した境界点をソートする。このときマトリックス化部１３０は、収集した境界点の中に重複する境界点、すなわち同じ値を持つ境界点がある場合には、同じ値を持つ境界点のうち一つだけを残し、同じ値を持つ他の境界点については削除して、ソート処理を行う。ステップＳ１０４の後、再びステップＳ１０１に移行する。マトリックス化部１３０は、ステップＳ１０２〜Ｓ１０４の一連の処理を全ての属性について行う。全ての属性について境界点のソートが完了すると、ステップＳ１０１において、属性が残っていない状態となるので、次に、ステップＳ１０５に処理が移行する。【００４４】
ステップＳ１０５では、マトリックス化部１３０は、全ての属性（各軸）の隣り合う２つの境界点でできる極小領域の情報（マトリックスデータ）を作成する。５種類の各属性に対応する各軸を有する５次元空間の場合、この極小領域も５次元領域となる。各軸の隣り合う２つの境界点でできる極小領域を、上述したようにマトリックスと呼んでいる。マトリックス化部１３０は、属性の範囲、すなわち隣り合う境界点のペアを各属性ごとに記述することによって、マトリックスの情報すなわちマトリックスデータを作成する。【００４５】
ステップＳ１０５の後、マトリックス化部１３０は、ルール記憶部１１０に記録されているルール全てについて順に、以下のステップＳ１０６〜Ｓ１０８の処理を行う。まず、マトリックス化部１３０は、ステップＳ１０６において、ルールが残っているか否かを判定し、残っているルールがあるならば、ステップ１０７において、残っているルールの中から順番に従って一つのルールを選び、ステップＳ１０８において、ステップＳ１０７で選んだルールを構成するマトリックスを列挙し、ステップＳ１０７で選んだルールと、そのマトリックスとを関係付ける。ルールには、各属性の範囲とアクションが記述されているので、ステップＳ１０８では、その記述にマトリックス名のリストを加えればよい。このような記述のことをルールデータと呼ぶ。なお、ルールを構成するマトリックスとは、ルールの条件部分が示す属性の範囲に含まれる各マトリックスである。またステップＳ１０８では、マトリックス化部１３０は、ステップＳ１０７で選んだルールを構成するマトリックスそれぞれについて、そのルールと関係付ける。マトリックスデータには、各ルールと同様に、各属性の範囲が記述されているので、マトリックスデータにルール名を加えればよい。ステップＳ１０８の後、再びステップＳ１０６に処理が移行することによって、上述したように、マトリックス化部１３０は、ステップＳ１０７〜Ｓ１０８の一連の処理を全てのルールについて行うが、この一連の処理は、ルール記憶部１１０に記憶されたルール集合における各ルールの順番通りに行われる。したがって、一つのマトリックス（マトリックスデータ）に加えられるルールが２つ以上ある場合、マトリックスデータに加えられるルール名は、ルールの順番を維持する。例えば、ルール集合におけるルールの順番が｛Ｒ１、Ｒ２、Ｒ３、Ｒ４｝となっており、あるマトリックスにＲ２とＲ４が関係付けられるとする。この場合、そのマトリックスのマトリックスデータには、｛Ｒ２、Ｒ４｝という順でルール名のリストが加えられていくが、｛Ｒ４、Ｒ２｝という順になることはない。全てのルールについて、ステップＳ１０７，Ｓ１０８の処理が完了すると、ステップＳ１０６において、ルールが残っていない状態となるので、この場合、マトリックス空間データ作成処理が終了する。【００４６】
マトリックス化部１３０は、図２に示すマトリックス空間データ作成処理によって作成したルールデータ（すなわち、マトリックス名が追加されたルールデータ）とマトリックスデータ（すなわち、ルール名が追加されたルールデータ）をマトリックス空間記憶部１２０に記憶させる。ルールデータとマトリックスデータの全集合を総称してマトリックス空間データと呼ぶ。【００４７】
マトリックス化部１３０がマトリックス空間データをマトリックス空間記憶部１２０に記憶させた後、重なり分析部１４０は、マトリックス空間記憶部１２０に記憶されたマトリックス空間データを参照し、ルール間の重なりを見つけだし、その結果を出力装置９３０を用いて出力する。図３及び図４は、重なり分析部１４０による処理の例を示すフローチャートである。重なり分析部１４０は、全てのルールについてステップＳ２０２以降の処理を行い、全てのルールについて処理が完了してルールが残っていない状態になった場合に、処理を終了する。以下、重なり分析部１４０での処理を詳しく説明する。【００４８】
まず、重なり分析部１４０は、ステップＳ２０１において、ステップＳ２０２以降の処理を行っていないルールが残っているか否かを判定する。そのようなルールが残っている場合には、重なり分析部１４０は、マトリックス空間記憶部１２０に記憶されたルール（ルールデータ）から、昇順に一つルールを選ぶ。ここで、「昇順に」とは、予め定められているルールの順番通りにという意味である。ステップＳ２０２で選択するルールをＡとする。重なり分析部１４０は、ステップＳ２０３において、ルールＡがデフォルトルールであるか否かを判定し、ルールＡがデフォルトルールである場合、処理を終了する。本実施の形態では、デフォルトルールの順番は、ルール集合に含まれるルールのうち最後であるとしている。したがって、ステップＳ２０２で最後のルールを選択すると、ステップＳ２０３で「はい」の側に分岐することとなって、処理が終了する。そのため、ステップＳ２０１で「いいえ」の側に分岐することはありえないので、実際には、ステップＳ２０１の処理は行わなくてもよい。【００４９】
ステップＳ２０３においてルールＡがデフォルトルールでない場合、重なり分析部１４０は、ステップＳ２０４において、ルールＡを構成するマトリックスを列挙する。ルールＡのルールデータには、ルールＡを構成するマトリックスがリストとして記載されているため、重なり分析部１４０は、ステップＳ２０４においてルールデータを参照すればよい。次に、重なり分析部１４０は、ステップＳ２０５において、ルールＡを構成するマトリックスのマトリックスデータに加えられたルールのリストを調べ、ルールＡを構成するマトリックスの全てのマトリックスデータにおいて、先頭ルールがルールＡ以外であるか否かを判定する。ルールＡを構成するマトリックスの全てのマトリックスデータのいずれにおいても、先頭ルールがルールＡ以外であるならば、処理はステップＳ２０７に移行する。ステップＳ２０５において先頭ルールがルールＡであるマトリックスデータが１つでもあった場合、処理はステップＳ２０６に移行する。ステップＳ２０６では、重なり分析部１４０は、ルールＡを構成するマトリックスの全てのマトリックスデータのうちの一部のみでルールＡが先頭ルールになっているのか、あるいは、ルールＡを構成するマトリックスの全てのマトリックスデータでルールＡが先頭ルールになっているのかを判定する。ルールＡを構成するマトリックスの全てのマトリックスデータのうちの一部のみでルールＡが先頭ルールになっている場合、処理はステップＳ２０９に移行する。ルールＡを構成するマトリックスの全てのマトリックスデータでルールＡが先頭ルールになっている場合、処理はステップＳ２０１に移行し、上述した処理が繰り返されることとなる。【００５０】
ステップＳ２０５において「はい」側に分岐した場合、すなわちルールＡを構成するマトリックスの全てのマトリックスデータのいずれにおいても先頭ルールがルールＡ以外であった場合、重なり分析部１４０は、図４のステップＳ２０７において、そのルールＡ以外の先頭ルールを列挙する。ステップＳ２０７で列挙されるルールの集合をＢとする。Ｂは、１つ以上のルールの集合である。ステップＳ２０７の後、重なり分析部１４０は、ステップＳ２０８において、出力装置９３０によって、「ルールＡはルール集合ＢによってＣｏｎｃｅａｌｅｄである」旨を出力する。「Ｃｏｎｃｅａｌｅｄ」とは、あるルールが、そのルールより優先順位の高い他のルール（このルールは１つとは限らない）によって完全に隠されている状態であることを意味する。すなわち、あるルールが、そのルールより優先順位の高い他のルールに完全に隠され、どのようなパケットが送られてきたとしても、より優先順位の高い他のルールが発火し（適用され）、隠されたルール自身は発火することがない（適用されない）ということを意味する。ステップＳ２０８で「ルールＡはルール集合ＢによってＣｏｎｃｅａｌｅｄである」という分析結果を出力した後には、処理はステップＳ２０１に移行し、ステップＳ２０１以降の処理が繰り返される。【００５１】
ステップＳ２０６において「はい」側に分岐した場合、すなわちルールＡを構成するマトリックスの全てのマトリックスデータのうちの一部のみでルールＡが先頭ルールになっている場合、重なり分析部１４０は、図４のステップＳ２０９において、そのルールＡ以外の先頭ルールを列挙する。ステップＳ２０９で列挙されるルールの集合をＣとする。続いて、重なり分析部１４０は、ステップＳ２１０において、ルール集合Ｃに含まれるルールのうち、ステップＳ２１１以降の処理が行われていないルールが残っているか否かを判定する。ルール集合Ｃにそのようなルールが残っていなければ、処理はステップＳ２０１に移行し、ステップＳ２０１以降の処理が繰り返される。一方、ステップＳ２１０においてルール集合Ｃにそのようなルールが残っているならば、重なり分析部１４０は、ステップＳ２１１において、残っているルールの中からルールを一つ選ぶ。ステップＳ２１１で選んだルールをルールＤとする。その後、重なり分析部１４０は、ステップＳ２１２において、ルールＡとルールＤに共通のマトリックスを収集する。ルールＤは、ルールＡより順番が先のルールであるので、重なり分析部１４０は、ルールＡを構成するマトリックスのうち、マトリックスデータにおいてルールＤがルールＡより先にリストアップされているマトリックスを列挙すればよい。【００５２】
次に重なり分析部１４０は、ステップＳ２１３において、ステップＳ２１２で収集したマトリックスで構成される領域を特定する。この領域をＥとする。なお、ステップＳ２１２で収集するマトリックスが、ルールＤを先頭ルールとするマトリックスでないのは、ルールＤよりも順番が上位のルールが、ルールＤの内部にある可能性があるからである。ステップＳ２１３で領域Ｅを特定した後、重なり分析部１４０は、ステップＳ２１４において、出力装置９３０を用いて、「ルールＤによって、ルールＡの範囲（領域）ＥがＯｖｅｒｌａｐｐｅｄである」旨を出力する。「Ｏｖｅｒｌａｐｐｅｄ」とは、あるルールがそのルール自身よりも優先順位の高い他のルール（このルールは１つとは限らない）によって、一部分の領域が隠されている状態であることを意味する。ステップＳ２１４で、「ルールＤによって、ルールＡの範囲ＥがＯｖｅｒｌａｐｐｅｄである」という分析結果を出力した後には、処理はステップＳ２０１に移行し、ステップＳ２０１移行の処理が繰り返される。【００５３】
出力装置９３０は、上述したようにステップＳ２０８あるいはステップＳ２１４において、重なり分析部１４０にしたがって分析結果の出力を行う。分析結果の出力態様は、特に限定されない。例えば、ディスプレイ装置によって出力装置９３０を実現して、分析結果を表示出力してもよい。あるいは、ＣＰＵによって出力装置９３０を実現して、分析結果をファイルとして出力してもよい。【００５４】
なお、図２に示すマトリックス化部１３０での処理手順や、図３及び図４に示す重なり分析部１４０での処理手順は、処理手順の一例を示すものである。マトリックス化部１３０での処理手順や重なり分析部１４０での処理手順は、これらの図に示されたものに限定されない。他の処理手順によって上述と同様の結果を得てもよい。【００５５】
次に、具体例を用いて、第１の実施の形態における動作を説明する。【００５６】
既に説明したように、ルール集合９１０（図１参照）に含まれるフィルタリングルールは、例えば、特定のネットワーク機器（特定のファイアウォールや特定のルータ等）に依存した記述ではなく、各種ネットワーク機器に依存しない共通の形式で記述されていてもよい。このような共通な形式として、上述したポリシー言語ＳＣＣＭＬがある。あるいは、特定のネットワーク機器におけるルールの記述形式を、統一的に用いる記述形式として採用し、その形式でフィルタリングルールが記述されていてもよい。いずれの場合であっても、ネットワーク機器に依存した記述形式から、簡単な１対１の文法上の置換によって、ルール集合９１０に含まれる各フィルタリングルールに変換することができる。ルール集合９１０に含まれる各ルールは、元のネットワーク機器におけるルールの順番を保持しているものとする。ただし、元のネットワーク機器におけるデフォルトルールの順番が最初であっても最後であっても、ルール集合９１０におけるデフォルトルールの順番は最後であるものとする。デフォルトルールの条件部分は、すべての属性の最大領域（最大範囲）をそれぞれ示しているものとする。【００５７】
入力装置９２０は、ルール集合９１０をルール分析システム１００に入力し、ルールの集合をルール記憶部１１０に記憶させる。既に説明したように、入力装置９２０は、入力したルールの集合の記述形式を、コンピュータ（具体的にはルール分析システム１００）が扱いやすいように変換してもよい。本例では、入力装置９２０は、入力したルールの集合を、図５に例示するようなデータ構造で表わされるルールの集合に変換し、そのルールの集合をルール記憶部１１０に記憶させるものとする。ただし、図５に例示するデータ構造は、例示であり、他のデータ構造で表わされるルールの集合に変換してもよい。【００５８】
図５に例示するルール記述の形式すなわちルールのデータ構造について説明する。図５は、８個のルール（Ｒ１〜Ｒ８）からなるルールの集合を示している。それぞれのルールは、第１属性の開始点、第１属性の終了点、第２属性の開始点、第２属性の終了点というように、第ｎ属性の開始点、第ｎ属性の終了点まで記述され、最後にアクションが記述される。ただし、図５に示す例では、第３属性以降の開始点と終了点については「中略」としている。例えば、ルール１（Ｒ１）は、第１属性の開始点、終了点はそれぞれ３，５であり、同様に、第２属性の開始点、終了点はそれぞれ５，７である。よって、Ｒ１では、第１属性が３〜５の範囲であり、第２属性が５〜７の範囲である場合に、Ｄというアクションを実行することを意味する。なお、ルール中に記載されたＤは、「Ｄｅｎｙ」の略であり、通過を許可しないというアクションを示す。ルール中に記載されたＡは、「Ａｌｌｏｗ」の略であり、通過を許可するというアクションを示す。【００５９】
実際のフィルタリングルールの条件部分が示す属性のうち、ソースアドレスやデスティネーションアドレスは、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスで表わされており、したがってソースアドレス及びデスティネーションアドレスは、０．０．０．０〜２５５．２５５．２５５．２５５という範囲内すなわちＩＰアドレス空間内における開始点及び終了点として表わされる。ソースポートやデスティネーションポートの範囲は、０〜６５５３５という範囲内における開始点及び終了点で表わされる。プロトコルは、ＴＣＰのみ、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）のみ、または、ＴＣＰ及びＵＤＰという範囲で表わされる。ここでは単純化のために、全ての属性の範囲を、０〜ｍという整数の範囲として表わして説明する。ＩＰアドレス空間やプロトコルは、フィルタリングルール上での表現は違うものの、ポートと同様な全順序をもつ一次元線分（あるいは点）として表わされるため、上述の０〜ｍという整数の範囲で表わした説明であっても、この説明をＩＰアドレス空間やプロトコルに容易に適用することが可能である。例えば、ＴＣＰを０、ＵＤＰを１とすれば、「ＴＣＰのみ」は、開始点及び終了点を０にすることで表わすことができ、「ＴＣＰ及びＵＤＰ」という範囲は開始点を０、終了点を１とすることで表わすことができる。【００６０】
上述したようにルールを記述したデータがルールデータであり、図５に示すデータがルールデータに該当する。図５に示すルールデータにおいて「中略」とした第３属性以降の開始点及び終了点がないものとし、図５に示すルールデータの２つの属性（第１属性及び第２属性）について２次元空間で表わすと、図６に示すようになる。図６においてＸ軸（横軸）は第１属性に対応し、Ｙ軸（縦軸）は第２属性に対応する。各ルールの条件部分における第１属性及び第２属性によって定まる範囲を矩形で表わしている。ルールのアクションが「通過を許可」を意味するＡの場合は、その矩形を白色で表わし、アクションが「通過を禁止」を意味するＤの場合は、矩形内に模様、具体的には多数の点を描画した模様を付して表わしている。図６では、ルールの優先順位が低い矩形が下層になり、ルールの優先順位が高い矩形ほど上層になるように、重ねて描画している。図６では、２つの属性によって定まる範囲を２次元で表わしているが、ルールの条件部分が示す属性が５個ある場合には、５次元空間として表わされることになる。【００６１】
マトリックス化部１３０は、ルール記憶部１１０によって記憶されるルールデータを参照し、マトリックス空間データを作成し、マトリックス空間記憶部１２０に記録する。マトリックス化部１３０による処理の具体例を、図２及び図５〜図１０を用いて以下に説明する。図５に示すルールデータの場合、「中略」とした部分も含めて第ｎ属性までのｎ個の属性があるが、以下の説明では、最初の２つの属性を用いて説明する。属性の数は何個であっても同様の処理を繰り返せばよい。【００６２】
マトリックス化部１３０は、最初にステップＳ１０１（図２参照）に移行したときに、属性が２つ残っているのでステップＳ１０２に移行し、最初の属性（第１属性）を選択する。続く、ステップＳ１０３では、全てのルールＲ１〜Ｒ８（図５参照）から、選択した第１属性の開始点及び終了点を収集する。図５に示すルールデータの場合、マトリックス化部１３０は、Ｒ１から３と５を、Ｒ２から２と８を、Ｒ３から１１と１３を、Ｒ４から５と９を、Ｒ５から１と７を、Ｒ６から１０と１４を、Ｒ７から４と７を、Ｒ８から０と１５を、それぞれ収集する。次のステップＳ１０４では、マトリックス化部１３０は、これらの境界点のうち、重複する境界点を削除し、その上で境界点をソートする。この結果、第１属性については、０、１、２、３、４、５、７、８、９、１０、１１、１３、１４、１５という値が得られる。マトリックス化部１３０は、同様の処理（ステップＳ１０１〜Ｓ１０４）を第２属性についても行う。この結果、第２属性については、０、１、３、４、５、７、８、１０、１１、１２、１３という値が得られる。第２属性について処理が完了してステップＳ１０１に移行した場合、他の属性が残っていないため、ステップＳ１０５に移行する。【００６３】
ステップＳ１０５では、マトリックス化部１３０は、ある属性の隣り合う２つの境界点の間の範囲と、別の属性の隣り合う２つの境界点の間の範囲によって定められる極小領域（マトリックス）を作成する。マトリックス化部１３０は、各属性おける隣り合う２つの境界点を変化させることにより、作成し得るマトリックスを全て作成する。例えば、図６に示すように各軸（各属性）ごとに境界点が得られている場合には、図７に示すような１３０個のマトリックスを作成する。【００６４】
マトリックスのデータの記述形式の例を図８に示す。本例では、１番目から１３０番目までのマトリックスがあり、それぞれＭ００１〜Ｍ１３０とする。そして、それぞれのマトリックスは、ルールデータと同様に、各属性の開始点と終了点のペアの列挙して記述することにより表わされる。例えば、マトリックスＭ００１は、第１属性が０〜１の範囲で、第２属性が０〜１の範囲の領域である。図８に示す例では３つ目以降の属性については省略している。上述したようにマトリックスを記述したデータをマトリックスデータと呼ぶが、図８に示すデータがマトリックスデータに該当する。【００６５】
次に、マトリックス化部１３０は、ルール記憶部１１０に記憶されているルールデータ全てについて、順に、ステップＳ１０６〜Ｓ１０８の処理を行う。まず、最初にステップＳ１０６に移行したときにはルールが全て残っているため、ステップＳ１０７に移行する。最初にステップＳ１０７に移行したときには、マトリックス化部１３０は、最初のルールＲ１を選択する。そして、ステップＳ１０８に移行し、そのルールＲ１を構成するマトリックスを列挙する。Ｒ１は、図７からも明らかなように、Ｍ０５６とＭ０５７の２つのマトリックスから構成されている。なお、Ｍ０５６は、図７に示すＭ０５３の３つ隣りのマトリックスであり、Ｍ０５７は、さらにその一つ隣りのマトリックスである。マトリックス化部１３０は、図９の１行目の下線部分に示すように、Ｒ１のルールデータの最後にこれら２つのマトリックスＭ０５６，Ｍ０５７を追記する。さらにマトリックス化部１３０は、それら２つのマトリックスＭ０５６，Ｍ０５７のマトリックスデータの最後に選択したルール（ここではＲ１）を追記する。例えば、Ｍ０５６のマトリックスデータに関しては、Ｍ０５６＝（３、４、５、７、後略）に対して「Ｒ１」を追記し、Ｍ０５６＝（３、４、５、７、中略、Ｒ１）とする。Ｍ０５７のマトリックスデータに関しても同様である。【００６６】
ステップＳ１０８の処理が終了すると、ステップＳ１０６に処理が戻り、残りのルール全てについて同様の処理が行われる。その結果、ルールデータには、図９に示すように、マトリックスのリストが追記され、マトリックスデータには、図１０に示すように、ルールのリストが追記される。なお、既に説明したように、ルールデータとマトリックスデータの全集合を総称してマトリックス空間データと呼ぶ。マトリックス化部１３０は、マトリックス空間データをマトリックス空間記憶部１２０に記録して、処理を終了する。【００６７】
図２に示すフローチャートでは、ステップＳ１０５の後、昇順に、すなわちルールの順番通りに、ルールを１つずつ選び、ルールデータに構成しているマトリックスのリストを追加する。ただし、デフォルトルールは全てのマトリックスから構成されるため、デフォルトルールのルールデータには、全てのマトリックスから構成されることを示すデータを追加するだけでもよい。図９に示す例では、全てのマトリックスから構成されることを示すデータとして、「ＡＬＬ」というデータを追記している。マトリックス化部１３０は、マトリックスデータに関係付けられるルールの最後には、無条件でデフォルトルールを追加してもよい。【００６８】
次に、重なり分析部１４０による処理の具体例を、図３〜図４及び図１１〜図１３を用いて説明する。重なり分析とは、２つのルール間の条件部分の重なりを調べることである。パケットフィルタリングでは、ルールを優先順位の高い方から順に調べ、あるパケットの属性が合致するルール（条件部分）が見つかると、そのルールの実行部分に記載されているアクションに従って動作が行われる。そのため、そのルールより優先順位の低いルールは、上記のパケットの属性と照合されない。すなわち、同じパケットの属性に合致するような条件部分を有するルールが２つある場合、フィルタリング処理においては、優先順位の低い方のルールは意味をなさない。重なり分析では、このようなルールを検出する。【００６９】
重なり分析部１４０は、マトリックス空間記憶部１２０に記憶されているマトリックス空間データのルールデータを優先順位の高い方から順に調べる。図５に示すルール集合に基づいて作成されたマトリックス空間データのルールデータは図９に示す通りである。最初にステップＳ２０１に移行したときにはルールデータは全て残っているので、ステップＳ２０２に移行する。最初にステップＳ２０２に移行したときには、重なり分析部１４０は、まず、ルールＲ１を選択する。ステップＳ２０２で選択されたルールをルールＡとするので、ここではルールＲ１をルールＡとする。【００７０】
次に、重なり分析部１４０は、ステップＳ２０３において、ルールＡがデフォルトルールかどうかを調べる。図９に示すルールデータでは、デフォルトルールはＲ８であるため、ここでは処理は「いいえ」の側に分岐してステップＳ２０４に移行する。重なり分析部１４０は、ステップＳ２０４では、ルールＡを構成するマトリックスを列挙する。ルールＡを構成するマトリックスは、ルールデータのアクション部分の後を参照すれば、即時に判別することができる。ここではマトリックスＭ０５６，Ｍ０５７が列挙される。次のステップＳ２０５では、重なり分析部１４０は、列挙したマトリックスの先頭ルールを調べ、先頭ルールが全てルールＡ以外になっているか否かを判定する。列挙したマトリックスはＭ０５６とＭ０５７であり、重なり分析部１４０は、これらのマトリックスに関係付けられたルールのリストを調べる。例えばマトリックスＭ０５６に関係付けられたルールのリストは、図１０のマトリックスデータを参照するとＲ１とＲ２とＲ８であることが分かる（図１０の１１行目の下線部参照）。そしてこのマトリックスに関係付けられた先頭ルールは、Ｒ１である。また同様に、Ｍ０５７に関係付けられたルールにおける先頭ルールもＲ１である。すなわち、マトリックスＭ０５６，Ｍ０５７に関係付けられたルールの先頭ルールは全てＲ１（ルールＡ）であるため、ステップＳ２０５では「いいえ」の側に処理が分岐し、ステップＳ２０６に移行する。なお、ここでは説明のためにＭ０５６とＭ０５７双方の先頭ルールを調べたが、実際には、Ｍ０５６を調べれば先頭ルールがルールＡとなり、全ての先頭ルールがルールＡ以外になることはないため、Ｍ０５７に関して調べる必要はない。【００７１】
ステップＳ２０６においても、重なり分析部１４０は、ステップＳ２０５と同様に先頭ルールを調べ、ルールＡを構成するマトリックスのマトリックスデータのうち、１つでも先頭ルールがＡ以外のものがあれば、ステップＳ２０９に移行する。選択したルールがＲ１の場合は、ステップＳ２０６における判定で、ルールＡを構成するマトリックスＭ０５６，Ｍ０５５７の全てにおいて先頭ルールがルールＡとなるため、ステップＳ２０６において「いいえ」の側に処理が分岐してステップＳ２０１に戻る。ここでは説明のために、再度、Ｍ０５６をＭ０５７双方の先頭ルールをチェックしたが、実際には、ステップＳ２０５で調べたマトリックスに関して再度調べる必要はない。図３に示すフローチャートではステップＳ２０５の判定の後に、ステップＳ２０６の判定を行っているが、フラグ等を用いることによってステップＳ２０５の判定処理とステップＳ２０６の判定処理とを同時に行ってもよい。【００７２】
１つ目のルール（Ｒ１）の処理が済むと、重なり分析部１４０は、次のルールに関しても同様の処理を行う。図９に示す例では、Ｒ１の処理が終わったため、Ｒ２〜Ｒ８のルールが残っている。従って、重なり分析部１４０は、ステップＳ２０１において、ルールが残っていると判定し、ステップＳ２０２に移行する。ステップＳ２０２では、重なり分析部１４０は、ルールＲ２を選択し、ルールＲ２をルールＡとする。Ｒ２はデフォルトルールではないため、ステップＳ２０３では「いいえ」の側に処理が分岐してステップＳ２０４に移行する。ステップＳ２０４において、重なり分析部１４０は、ルールＡ（ここではＲ２）を構成するマトリックスを列挙する。図９を参照すると、ルールＡを構成するマトリックスは、Ｍ０４２、Ｍ０４３、Ｍ０４４、中略、Ｍ１１０、Ｍ１１１の３０個のマトリックスである。次に、ステップＳ２０５において、重なり分析部１４０は、上述の３０個のマトリックスの先頭ルールを調べる。例えば、Ｍ０４２の先頭ルールはＲ２で、Ｍ０５６の先頭ルールはＲ１である。ステップＳ２０５では全ての先頭ルールがＡでない場合に「はい」と判断されるため、ＡがＲ２の場合は「いいえ」の側に処理が分岐してステップＳ２０６に移行する。ステップＳ２０６では、マトリックスＭ０５６とＭ０５７の先頭ルールがＲ１であるため、３０個のマトリックスのうち、２個のマトリックスの先頭ルールがＡ以外となる。そのため、ステップＳ２０６では処理は「はい」の側に分岐し、ステップＳ２０９に移行する。【００７３】
ステップＳ２０９では、重なり分析部１４０は、３０個のマトリックスにおける先頭ルールのうち、ルールＡでない先頭ルールを列挙する。ステップＳ２０２で選択したルールがＲ２の場合、先頭ルールがＲ２（＝Ａ）でないルールはＲ１となる。ステップＳ２０９で列挙されるルールの集合をＣとする。本例ではルール集合Ｃに含まれるルールは、Ｒ１だけであるが、ルール集合Ｃに含まれる複数のルールが含まれることもある。重なり分析部１４０は、ルール集合Ｃに含まれる全てのルールに対して、続くステップＳ２１０〜Ｓ２１４の処理を行う。本例では、Ｃ＝｛Ｒ１｝が成立し、ルール集合ＣにルールＲ１のみが含まれているので、ステップＳ２１０〜Ｓ２１４の一連の処理は、Ｒ１について１回だけ行われる。そして、ステップＳ２１４の後、再度ステップＳ２１０に移行したときには、ルール集合Ｃにルールが残っていない状態になるので、処理はステップＳ２０１に移行する。【００７４】
ルール集合Ｃに含まれるルールＲ１に対するステップＳ２１０〜Ｓ２１４の処理は、以下のようになる。まず、重なり分析部１４０は、ステップＳ２１０においてルール集合ＣにルールＲ１が残っていると判定し、ステップＳ２１１において、ルール集合Ｃからルールを一つ選択する。ステップＳ２１１で選択したルールをルールＤとする。本例では、ルールＲ１がルールＤとなる。次に、重なり分析部１４０は、ステップＳ２１２において、ルールＡ（ここではＲ２）とルールＤ（ここではＲ１）に共通なマトリックスを収集する。ルールＲ２を構成する３０個のマトリックスのうち、マトリックスデータにおいてルールＲ１がルールリストに入っているマトリックスが、ルールＡとルールＤに共通のマトリックスである。本例では、Ｍ０５６とＭ０５７の２つのマトリックスが、ルールＡとルールＤに共通のマトリックスである。重なり分析部１４０は、ステップＳ２１２で収集したマトリックスで構成される領域の範囲を特定する。この範囲をＥとする。マトリックスデータによると、Ｍ０５６の領域は、（３，４，５，７，後略）であり、Ｍ０５７の領域は、（４，５，５，７，後略）である。従って、重なり分析部１４０は、この２つのマトリックスで構成される領域の範囲ＥがＥ＝（３，５，５，７，後略）であると特定する。続いて、重なり分析部１４０は、ステップＳ２１４において、「ルールＤ（ここではＲ１）によって、ルールＡ（ここではＲ２）の範囲ＥがＯｖｅｒｌａｐｐｅｄである」という分析結果を、出力装置９３０を用いて出力し、ステップＳ２１０に移行する。既に説明したように、ルール集合ＣにはＲ１だけしか含まれていなかったので、ステップＳ２１０の判定結果は「いいえ」となり、処理はステップＳ２０１に移行する。【００７５】
ステップＳ２０１において、選択されていないルールがあると判定された場合、処理はステップＳ２０２に移行し、重なり分析部１４０は、順番通りにルールを１つ選択する。ステップＳ２０２で選択するルールがＲ３またはＲ４である場合、ステップＳ２０５，Ｓ２０６における判定結果はいずれも「いいえ」となるので、処理は、再度、ステップＳ２０１に移行する。ステップＳ２０２で選択するルールがＲ５またはＲ６である場合、ステップＳ２０６における判定結果は「はい」となるので、ステップＳ２０９以降の処理が実行される。この結果、ステップＳ２０３でＲ２を選択した場合と同様に、「ルールＤによって、ルールＡの範囲ＥがＯｖｅｒｌａｐｐｅｄである」という分析結果が出力される。【００７６】
ステップＳ２０２で選択するルールがＲ７である場合について説明する。図６に示すようにルールＲ７は、ルールＲ２に隠されているルールである。ルールＡがルールＲ７である場合、ステップＳ２０３の後、処理はステップＳ２０４に移行する。ステップＳ２０４では、重なり分析部１４０は、ルールＡ（ここではＲ７）を構成するマトリックスを列挙する。ルールＡを構成するマトリックスは、Ｍ０８３，Ｍ０８４，Ｍ０９６，Ｍ０９７の４個である。重なり分析部１４０は、ステップＳ２０５において、これら４個のマトリックスの先頭ルールを調べる。これら４つのマトリックスの先頭ルールは、いずれもＲ２であり、全てルールＡ（すなわちＲ７）とは異なっている。従って、ステップＳ２０５では処理は「はい」側に分岐し、ステップＳ２０７に移行する。ステップＳ２０７において、重なり分析部１４０は、ルールＡを構成する全マトリックスの先頭ルールを列挙する。このルールの集合をＢとする。ルールＡがＲ７である場合、ルールＡを構成するマトリックスの先頭ルールは全てＲ２である。従って、ルール集合ＢにはルールＲ２だけが含まれ、Ｂ＝｛Ｒ２｝となる。次に、重なり分析部１４０は、ステップＳ２０８において、「ルールＡはルール集合ＢによってＣｏｎｃｅａｌｅｄである」という分析結果を、出力装置９３０を用いて出力する。【００７７】
続いて、処理はステップＳ２０１を経てステップＳ２０２に移行し、ステップＳ２０２において、重なり分析部１４０は、最後に残っているＲ８を選択する。Ｒ８はデフォルトルールであるので、ステップＳ２０３では「はい」側に処理が分岐し、処理が終了する。【００７８】
図３及び図４に示すフローチャートでは、昇順にルールを一つずつ選んで、そのルールを完全に隠してしまう他のルールの集合があるか、あるいは、そのルールを一部隠してしまう他のルールの集合があるかを分析している。先頭ルールは、最も優先順位が高いので、他のルールに一部または全部が隠されることがない。従って、ステップＳ２０２において先頭ルールを選択せず、最初にステップＳ２０２に移行したときに２番目のルールを選択して、以降、ステップＳ２０２では順番通りにルールを１つ選択していってもよい。この場合、先頭ルールに関する処理を行わずに済むので、処理の高速化を図れる。デフォルトルールすなわち最後尾のルールは、必ず他のルールに一部または全部隠されることになるので、デフォルトルールに関してはステップＳ２０４以降の処理を行わないようにしている。しかし、より詳細な重なり分析のために、デフォルトルールに関してもステップＳ２０４の処理を行い、ステップ２０８またはステップＳ２１４でデフォルトルールについての分析結果を出力してもよい。この場合、ステップＳ２０３の判定処理を行わなければよい。【００７９】
分析結果の出力態様は、特に限定されるものではない。例えば、分析結果を表示出力してもよいし、音声出力してもよいし、あるいはファイルとして出力してもよい。また、ルール分析システム１００と通信ネットワークを介して接続される別システムに出力装置９３０を設け、その別システムにおいて分析結果を出力してもよい。この場合、ルール分析システム１００と通信ネットワークを介して接続される別システムの利用者に分析結果を知らせることができる。出力装置９３０がディスプレイ装置であり、分析結果を表示出力する場合の分析結果の表示例を、図１１に示す。【００８０】
上記では、ステップＳ２０８，Ｓ２１４において分析結果を順次出力する場合を説明したが、重なり分析部１４０による処理が完了した後に、分析結果をまとめて表示してもよい。この場合、重なり分析部１４０は、ステップＳ２０８，Ｓ２１４において、「ルールＤによって、ルールＡの範囲ＥがＯｖｅｒｌａｐｐｅｄである」等の分析結果を一時記憶装置（不図示）に記録しておけばよい。そして、重なり分析部１４０による処理すなわち図３，図４に示す処理が完了した後、一時記憶装置に記録された分析結果を出力装置９３０がまとめて出力してもよい。【００８１】
図１２に示すように模式的に表わされるルールデータを対象にして、重なり分析を行った場合の分析結果の表示例を図１３に示す。図１３に示す例では、「Ｒ５がＲ３とＲ４によってＣｏｎｃｅａｌｅｄ」であるだけでなく、より詳細に「Ｒ３によって（５，７，７，１０，後略）の領域がＣｏｎｃｅａｌｅｄ」等の分析結果も表示している。このように、Ｃｏｎｃｅａｌｅｄとなる領域についてより詳細な分析結果を出力する場合には、ステップＳ２０７の処理を、ステップＳ２０９〜Ｓ２１３と同様に行えばよい。【００８２】
第１の実施形態のフィルタリングルール分析システムの利点を説明する。このフィルタリングルール分析システムによれば、どれほど複雑なフィルタリングルールであっても、各ルール間の関係を把握することができる。その理由は、マトリックス化部１３０が、ルールをマトリックス空間データに変換し、重なり分析部１４０が、任意のルールを構成するマトリックスを網羅的に調査することでルール間の重なり関係、特にあるルールが別のルールによって完全に隠された関係であることや、あるルールが別のルールによって一部隠された関係であること分析するからである。このシステムによれば、条件部分に示される属性数が多いフィルタリングルールであっても、各ルール間の関係を把握することができる。その理由は、任意の数の属性であってもルールをマトリックス空間データに変換でき、ルール間の重なり関係を、属性別で分析するのではなく、マトリックスを用いて分析するからである。【００８３】
第２の実施形態：
次に本発明の第２の実施形態のフィルタリングルール分析システムを説明する。第２の実施形態のフィルタリングルール分析システムを示す図１４においては、第１の実施形態におけるものと同様の構成要素については、図１におけるものと同一の参照符号を付し、重複する説明を省略する。第２の実施形態のフィルタリングルール分析システムは、図１に示すものと同様のものであるが、ルール分析システム１００において重なり分析部の代わりに通過テスト部１５０が設けられている点で、図１に示したものと異なっている。さらに、本実施形態のフィルタリングルール分析システムは、テスト入力装置９４０を備えている。【００８４】
テスト入力装置９４０は、ルール集合９１０がルール全体として、どのようなパケットの通過を許可し、どのようなパケットの通過を禁止するのかをテストするためのデータをルール分析システム１００に入力するために設けられている。テストするためのデータは、例えば、パケットの属性で表わされている。テスト入力装置９４０は、例えば、キーボード等の入力装置によって実現される。【００８５】
通過テスト部１５０は、テスト入力装置９４０が入力したデータとマトリックス空間データとに基づいて、ルール集合に基づくパケットフィルタリング処理において、どのようなパケットの通過を許可し、どのようなパケットの通過を禁止するのかをテストする。通過テスト部１５０は、例えば、プログラムに従って動作するＣＰＵによって実現される。プログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。本実施形態において、出力装置９３０は、通過テスト部１５０によるテスト結果を出力する。【００８６】
次に、第２の実施形態のフィルタリングルール分析システムの動作について説明する。なお、第１の実施形態のシステムにおけるものと同様の動作については、詳細な説明を省略する。マトリックス空間記憶部１２０にマトリックス空間データが記憶されるまでの入力装置９２０及びマトリックス化部１３０での動作は、第１の実施形態と同様である。【００８７】
ルール分析システム１００の利用者は、ルール集合９１０がどのようなパケットを通過させるのかをテストする目的で、テスト入力装置９４０を用いて、パケットまたはパケットの範囲をルール分析システム１００に入力する。ここで入力するパケットまたはパケットの範囲とは、実際のパケットではなく、パケットの属性である。一般にパケットは、パケットの属性であるソースアドレス、ソースポート、デスティネーションアドレス、デスティネーションポート、プロトコルの他に、パケットの内容であるペイロードを含んでいる。パケットフィルタリングは、一般にペイロード部分は参照せずにパケットの属性部分のみを参照するため、テスト入力装置９４０に与えるテストデータはパケットの属性のみで十分である。通常、ネットワークを流れるパケットでは、上述のパケットの属性全てがある特定の値を持っている。すなわち、５個の属性の５次元空間で表わすと、ある点となる。テスト入力装置９４０は、このようなパケットの属性をルール分析システム１００に入力する。テスト入力装置９４０は、ある特定の値ではなく、ある範囲として表わされたパケットの属性についてもルール分析システム１００に入力する。一部または全部の属性がある範囲として表わされた場合、５個の属性を表わすと、５次元空間では、５次元以下の次元の領域となる。例えば、ある１つの属性についてのみ範囲を指定した場合は、１次元の領域（すなわち、線）として表わされる。ある２つの属性についてのみ範囲を指定した場合は、２次元の領域（すなわち、平面）として表わされる。ある３つの属性についてのみ範囲を指定した場合は、３次元の領域（すなわち、立体）として表わされる。同様に、ある４つ、または５つの属性についてのみ範囲を指定した場合には、それぞれ４次元、または５次元の領域として表わされる。以下、パケットの範囲も含めたパケットの属性をテストパケットと呼ぶ。テスト入力装置９４０は、通過テスト部１５０にテストパケットを入力する。【００８８】
通過テスト部１５０は、入力されたテストパケットがルール集合９１０のルール集合で通過が許可されるのか許可されないのかをテストする。図１５は、この通過テスト部１５０によるテスト処理の例を示すフローチャートである。通過テスト部１５０は、テスト入力装置９４０を介してテストパケットを入力すると、テスト処理を開始する。まず、通過テスト部１５０は、ステップＳ３０１において、テストパケットの領域、すなわちテストパケットとして入力された属性が示す領域が、マトリックス空間記憶部１２０によって記憶されるマトリックス空間データの複数のマトリックスにまたがっているか否かを判定する。この判定処理は、以下のように行えばよい。通過テスト部１５０は、各属性ごとに、テストパケットの属性の範囲を指定する開始点及び終了点が、ステップＳ１０４（図２参照）で決定された境界点のうち隣りあう境界点の間に収まっているか否かを判定する。この場合、開始点及び終了点が、隣り合う境界点と合致する場合も、隣りあう境界点の間に収まっていると判定するものとする。そして、全ての属性に関して、テストパケットの属性の範囲を指定する開始点及び終了点が、隣り合う境界点の間に収まっていれば、テストパケットの領域が１つのマトリックスの領域内に収まると判定する。いずれかの属性において、テストパケットの属性の範囲を指定する開始点及び終了点が、隣り合う境界点の間に収まっていなければ、テストパケットの領域が複数のマトリックスにまたがっていると判定する。【００８９】
ステップＳ３０１においてテストパケットの領域がある１つのマトリックスの領域内に収まる場合には、処理はステップＳ３０２に移行し、テストパケットの領域が複数のマトリックスにまたがる場合には、処理はステップＳ３０４に移行する。【００９０】
ステップＳ３０２において、通過テスト部１５０は、テストパケットを含むマトリックスを特定する。ステップＳ３０２で特定したマトリックスをＦとする。続いて、通過テスト部１５０は、マトリックスＦのマトリックスデータを参照してそのマトリックスデータにおける先頭ルールを特定し、さらに、ステップＳ３０３において、その先頭ルールのルールデータにおけるアクションを参照し、そのアクションが示す内容を、出力装置９３０から出力して、処理を終了する。【００９１】
一方、ステップＳ３０４では、通過テスト部１５０は、テストパケットを含む複数のマトリックス、すなわち、テストパケットの領域がまたがって存在している複数のマトリックスを列挙する。このマトリックスの集合をＧとする。通過テスト部１５０は、集合Ｇに含まれる各マトリックスごとに、アクションを特定する。このアクションを特定する動作は、ステップＳ３０３と同様に行えばよい。すなわち、通過テスト部１５０は、集合Ｇに含まれる各マトリックスごとに、マトリックスデータを参照してそのマトリックスデータにおける先頭ルールを特定し、その先頭ルールのルールデータにおけるアクションを参照すればよい。通過テスト部１５０は、マトリックスごとにアクションを特定した上で、集合Ｇに含まれるマトリックスをアクションごとに分類し、ステップＳ３０５において、同一のアクションによって分類されたマトリックスを統合し、統合された領域とテストパケットの領域との重なり領域を求める。マトリックスを統合してテストパケットとの重なり領域を求める処理も、アクションごとに行う。その後、通過テスト部１５０は、ステップＳ３０６において、求めた重なり領域をアクションごとに出力装置９３０から出力し、処理を終了する。【００９２】
本実施形態において、ステップＳ３０３，Ｓ３０６における出力態様は、特に限定されるものではない。例えば、ディスプレイ装置によって実現された出力装置９３０に表示出力させてもよいし、あるいは、ファイルとして出力してもよい。【００９３】
なお、図１５に示した通過テスト部１５０の処理手順は、単なる一例である。同様の結果を得るために他の処理手順を採用することも可能である。【００９４】
次に、具体例を用いて、第２の実施形態のフィルタリングルール分析システムにおける動作を説明する。ここでは、ルール集合９１０は、ルール全体として、どのようなパケットの通過を許可し、どのようなパケットの通過を禁止するのかを調べる対象となるルールの集合であるとする。ルール集合９１０がルール分析システム１００に入力され、マトリックス空間データとしてマトリックス空間記憶部１２０に記憶されるまでの動作は、第１の実施形態の場合と同様であるので説明を省略する。【００９５】
マトリックス空間記憶部１２０は、図５に例示したルール集合から導出されたマトリックス空間データを記憶しているものとする。ここで、テスト入力装置９４０がテストパケットＴ１をルール分析システム１００に入力したとする。テストパケットの記述形式は、マトリックスデータの初期値（図８参照）と同様であり、各属性の開始点と終了点のペアの列挙して記述する形式であるものとする。テストパケットＴ１は、Ｔ１＝（４，５，５，６，後略）であるとする。テスト入力装置９４０は、テストパケットを通過テスト部１５０に送る。【００９６】
通過テスト部１５０は、図１５に示すフローチャートに従って動作し、テスト入力装置９４０を介してテストパケットが入力されると処理を開始する。通過テスト部１５０は、まず、ステップＳ３０１において、入力された上記のテストパケットＴ１の領域が複数のマトリックスにまたがっているか否かを判定する。テストパケットの領域が複数のマトリックスにまたがっているかどうかは、図２に示すステップＳ１０４においてマトリックス化部１３０により作成されソートされた各属性の境界値と、テストパケットの属性の範囲を指定する開始点及び終了点とを比較することによって判断することができる。例えば、図５に示すルール集合の場合、１つ目の属性のソートされた境界値は、０，１，３，４，５，７，…（以下、略）である。テストパケットＴ１の１つ目の属性の範囲は、４〜５である。マトリックスは２つの隣り合う境界値で定められるため、４〜５は１つのマトリックスの領域である。この比較を全ての属性について行い、テストパケットＴ１の全ての属性について１つのマトリックス領域内であるならば、テストパケットの領域がある１つのマトリックスの領域内に収まっていると判定し、そうでなければ、テストパケットの領域が複数のマトリックスにまたがっていると判定すればよい。通過テスト部１５０は、このような判定方法により、テストパケットＴ１が一つのマトリックスに収まっていると判定し、その結果、ステップＳ３０１では処理は「いいえ」の側に分岐する。【００９７】
図１６は、図５に示すルール集合において第２属性までしか記述されていないものとして、図５に示すルール集合から導出されたマトリックスデータを２次元空間に表わした模式図である。図１６では、テストパケットＴ１等も示している。なお、テストパケットにおいても第２属性までしか記述されていないものとする。テストパケットの領域は、図１６では便宜的に角丸四角形で表わしている。【００９８】
テストパケットＴ１が一つのマトリックスに収まっているとステップＳ３０１において判定したのち、通過テスト部１５０は、ステップＳ３０２において、テストパケットＴ１を含むマトリックスを特定する。このとき、通過テスト部１５０は、テストパケットの各属性の範囲を包含しているマトリックスを特定すればよい。ステップＳ３０２で特定したマトリックスをＦとする。本例では、図１６に示すように、テストパケットＴ１を含むマトリックスは、Ｍ０５７すなわち図１６に示すＭ０５３の４つ隣りのマトリックスである。従って、Ｍ０５７がマトリックスＦとなる。【００９９】
次のステップＳ３０３において、通過テスト部１５０は、マトリックスＦ（Ｍ０５７）のマトリックスデータを参照して、そのマトリックスデータにおける先頭ルールを特定する。マトリックスＦのマトリックスデータは、Ｍ０５７＝（４、５、５、７、中略、Ｒ１、Ｒ２、Ｒ８）である。従って、先頭ルールはＲ１である。さらに、通過テスト部１５０は、その先頭ルールＲ１のルールデータにおけるアクションを参照して、そのアクションが示す内容を出力装置９３０から出力する。Ｒ１のルールデータは、Ｒ１＝（３、５、５、７、中略、Ｄ、Ｍ０５６、Ｍ０５７）であるから、アクションはＤ（通過を許可しない）であることが分かる。従って、テストパケットＴ１に関しては通過を許可しない旨を出力装置９３０から出力する。【０１００】
次に、マトリックスをまたぐようなテストパケットが入力された場合の動作を説明する。通過テスト部１５０は、テスト入力装置９４０を介してテストパケットＴ２が入力されたとする。ここで、テストパケットＴ２は、Ｔ２＝（６、９、６、９、後略）であるとする。なお、テストパケットＴ２が第２属性までしかないものとして２次元空間にＴ２を表わすと、Ｔ２は、図１６に示すように表わされる。【０１０１】
テストパケットＴ２の領域が複数のパケットにまたがっているとステップＳ３０１で判定すると、通過テスト部１５０は、ステップＳ３０４に移行して、テストパケットを含む複数のマトリックスを列挙する。ここで通過テスト部１５０は、各属性がいずれもテストパケットの各属性の一部を含んでいるマトリックスを全て列挙すればよい。ステップＳ３０４で列挙されたマトリックスの集合をＧとする。図１７は、テストパケットＴ２の周辺の二次元空間を示す模式図である。本例では、テストパケットＴ２は、図１７に示すＭ０５８〜Ｍ０６０、Ｍ０７１〜Ｍ０７３、及びＭ０８４〜Ｍ０８６の各マトリックスにまたがっている。従って、これらのマトリックスの集合が集合Ｇとなる。すなわち、Ｇ＝｛Ｍ０５８、Ｍ０５９、Ｍ０６０、Ｍ０７１、Ｍ０７２、Ｍ０７３、Ｍ０８４、Ｍ０８５、Ｍ０８６｝である。【０１０２】
次のステップＳ３０５では、通過テスト部１５０は、集合Ｇに含まれる各マトリックスごとにアクションを特定する。マトリックスごとのアクションを特定する動作は、ステップＳ３０３においてマトリックスＦのアクションを特定する動作と同様に行えばよい。図１７では、アクションがＡ（通過を許可する）であるマトリックスを白色領域で示し、アクションがＤ（通過を許可しない）であるマトリックスには模様（多数の点を描画した模様）を付して示している。通過テスト部１５０は、アクションがＡであるマトリックスすなわち通過を許可するマトリックスであるＭ０５８，Ｍ０５９，Ｍ０７１，Ｍ０７２，Ｍ０８４，Ｍ０８５を統合して、領域を作成する。この領域は、（５，８，５，１０，後略）と表わせる。同様に、通過テスト部１５０は、アクションがＤであるマトリックスすなわち通過を許可しないマトリックスであるＭ０６０，Ｍ０７３，Ｍ０８６を統合して、領域を作成する。この領域は、（８，９，５，１０，後略）と表わせる。通過テスト部１５０は、この２つの領域それぞれについて、テストパケットＴ２との重なり領域を求める。アクションがＡである領域（５，８，５，１０，後略）とＴ２との重なり領域は、（６、８、６、９、後略）と求められる。アクションがＤである領域（８，９，５，１０，後略）とＴ２との重なり領域は、（８、９、６、９、後略）と求められる。次に、通過テスト部１５０は、ステップＳ３０６において、求めた重なり領域をアクションごとに出力装置９３０から出力する。すなわち、通過テスト部１５０は、テストパケットＴ２の領域のうち、通過が許可される領域と、通過が許可されない領域をそれぞれ出力する。【０１０３】
通過テスト部１５０による処理結果すなわちテスト結果の出力態様は、特に限定されるものではない。例えば、表示出力や音声出力であってもよいし、あるいはファイルとして出力してもよい。また、ルール分析システム１００と通信ネットワークを介して接続される別システムに出力装置９３０を設け、その別システムにおいてテスト結果を出力してもよい。この場合、ルール分析システム１００と通信ネットワークを介して接続される別システムの利用者にテスト結果を知らせることができる。出力装置９３０がディスプレイ装置であり、テスト結果を表示出力する場合の分析結果の表示例を図１８に示す。なお図１８では、テストパケットとして上記のテストパケットＴ１，Ｔ２が入力された場合の結果の表示例を示している。【０１０４】
上記の例では、ステップＳ３０３，Ｓ３０６において、テスト結果を順次出力する場合を示したが、通過テスト部１５０による処理が完了した後に、テスト結果をまとめて表示してもよい。この場合、通過テスト部１５０は、ステップＳ３０３，Ｓ３０６においてテスト結果を一時記憶装置（不図示）に記録しておけばよい。通過テスト部１５０による図１５に示す処理が完了した後、一時記憶装置に記録されたテスト結果を出力装置９３０がまとめて出力してもよい。【０１０５】
第２の実施形態のフィルタリングルール分析システムの利点について説明する。第２の実施形態のフィルタリングルール分析システムによれば、どのような複雑なフィルタリングルールであっても、また属性数が多いフィルタリングルールであっても、ルール全体でどのようなパケットが通過するかどうかを把握することができる。その理由は、任意のテストパケットを入力することで、ルール全体としてそのテストパケットが通過するかしないかをテストするためである。【０１０６】
第３の実施形態：
次に本発明の第３の実施形態のフィルタリングルール分析システムを説明する。第３の実施形態のフィルタリングルール分析システムを示す図１９においては、第２の実施形態におけるものと同様の構成要素については、図１４におけるものと同一の参照符号を付し、重複する説明を省略する。ただし、第３の実施形態のフィルタリング分析ツールでは、通過テスト部の動作は第２の実施形態の場合と異なるので、通過テスト部に対して第２の実施形態の場合と異なる参照符号を付与するものとする。【０１０７】
第３の実施形態のフィルタリングルール分析システムは、通過テスト部１５１を備えている。このフィルタリングルール分析システムでは、ルール集合として、複数のルールの集合、すなわち複数のネットワーク機器それぞれに対応するルール集合）が入力装置９２０からルール分析システム１００に入力される。マトリックス化部１３０は、複数のルール集合からマトリックス空間データを作成し、マトリックス空間記憶部１２０に記憶させる。マトリックス化部１３０の動作は、第１の実施形態の場合と同様である。マトリックス空間記憶部１２０は、複数のルール集合から作成されたマトリックス空間データを記憶する。通過テスト部１５１は、このマトリックス空間データとテストパケットとに基づいて、複数のルール集合全体として、換言すれば、複数のネットワーク機器全体として、どのようなパケットを通過させ、どのようなパケットを通過させないのかをテストする。通過テスト部１５１は、例えば、プログラムに従って動作するＣＰＵによって実現される。なお、プログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。【０１０８】
次に、本実施形態のフィルタリングルール分析システムの動作について説明する。本実施形態では、上述したように、入力装置９２０には、複数（２つ以上）のルール集合が入力される。入力装置９２０がルール分析システム１００に入力するルール集合が複数であったとしても、マトリックス空間データを作成して、マトリックス空間記憶部１２０に記憶させるまでの動作は、第１の実施形態及び第２の実施形態の場合と同様である。ただし、複数のルール集合には順番が設定されているものとする。そして、マトリックス化部１３０は、各ルール集合に基づいて作成された各マトリックス空間データにおいてもこの順番が維持されるように、マトリックス空間データを作成する。例えば、パケットが順番に２つのファイアウォールに流されるとする。そして、最初のファイアウォールに対応するルール集合をＲ１００、次のファイアフォールに対応するルール集合をＲ２００とする。この場合、Ｒ１００が最初のルール集合であり、Ｒ２００が２番目のルール集合であると予め順番が設定され、そのように順番が設定されたルール集合Ｒ１００、Ｒ２００が入力装置９２０に入力される。マトリックス化部１３０は、ルール集合Ｒ１００，Ｒ２００の順番がそのまま維持されるように、ルール集合Ｒ１００，Ｒ２００からマトリックス空間データを作成する。このとき、ルール集合Ｒ１００に含まれる各ルールの順番が維持されるように、マトリックス化部１３０は、ルール集合Ｒ１００のルールデータの順番を定める。ただし、デフォルトルールのルールデータは、ルール集合Ｒ１００のルールデータにおける最後のものとする。同様に、ルール集合Ｒ２００に含まれる各ルールの順番が維持されるように、ルール集合Ｒ２００のルールデータの順番を定める。このときも、デフォルトルールのルールデータは、ルール集合Ｒ２００のルールデータにおける最後のものとする。さらに、ルール集合Ｒ１００のルールデータの後に、ルール集合Ｒ２００の各ルールデータが続くように順番を定める。例えば、Ｒ１００のルールがＲ１１、Ｒ１２、Ｒ１３とあり、Ｒ１３がデフォルトルールであって、Ｒ２００のルールがＲ２１、Ｒ２２とあり、Ｒ２２がデフォルトルールであるとする。この場合、マトリックス化部１３０は、ルールデータの順番を、Ｒ１１，Ｒ１２，Ｒ１３，Ｒ２１，Ｒ２２と定めてマトリックス空間データを生成する。【０１０９】
ルール集合Ｒ１００のルールの条件部分に示される属性が５種類で、ルール集合Ｒ２００のルールの条件部分に示される属性が４種類である場合、ルール集合Ｒ１００にあってルール集合Ｒ２００にはない属性がルール集合Ｒ２００のルールの条件部に示されているものとして、マトリックス化部１３０はマトリックス空間データを作成する。この場合、ルール集合Ｒ２００に追加する属性の範囲は、その属性のとり得る全範囲とする。このように、複数のルール集合において属性の種類が異なる場合、マトリックス化部１３０は、あるルール集合にはないが他のルール集合にはある属性を、そのルール集合に追加する。【０１１０】
以下の説明において、マトリックスデータに追記されるルールのリストのうち、同じルール集合に属するルールの組をルールセットと呼ぶ。【０１１１】
図２０は、通過テスト部１５１における処理の一例を示している。第２の実施形態における通過テスト部１５０による処理と同じ処理に関しては、図１５におけるものと同一の参照符号を付して、その詳細な説明を省略する。本実施の形態では、第２の実施の形態におけるステップＳ３０３（図１５）の代わりに、ステップＳ３０９（図２０）の処理を行う。また第２の実施形態におけるステップＳ３０５（図１５）の代わりに、ステップＳ３１０（図２０）の処理を行う。【０１１２】
通過テスト部１５１は、第２の実施形態の場合と同様に、ステップＳ３０１において、テストパケットの領域が複数のマトリックスにまたがっているか否かを判定し、１つのマトリックスの領域内に収まる場合には、ステップＳ３０２に移行して、テストパケットを含むマトリックスＦを特定する。ステップＳ３０２の次のステップＳ３０９では、通過テスト部１５１は、マトリックスＦのアクションを特定し、そのアクションが示す内容を、出力装置９３０から出力する。ただし、マトリックスＦのアクションを特定する処理が、第２の実施形態におけるステップＳ３０３（図１５参照）とは異なる。本実施の形態では、通過テスト部１５１は、以下のようにマトリックスＦのアクションを特定する。【０１１３】
まず、通過テスト部１５１は、マトリックスＦのマトリックスデータを参照してそのマトリックスデータにおける先頭ルールを特定する。この先頭ルールは、１番目のルールセットにおける先頭ルールでもある。通過テスト部１５１は、この先頭ルールのルールデータにおけるアクションを参照し、アクションがＡ、すなわち「通過を許可する」である場合には、次のルールセットにおける先頭ルールをマトリックスデータに追記されたリストの中から特定する。通過テスト部１５１は、この先頭ルールのルールデータにおけるアクションを参照し、アクションがＡである場合には、さらに次のルールセットにおける先頭ルールをマトリックスデータに追記されたリストの中から特定する。このような動作を繰り返し、ルールデータにおけるアクションがＤ、すなわち「通過を許可しない」となるものがあった場合には、通過テスト部１５１は、マトリックスＦのアクションがＤであると定める。一方、最後のルールセットにおける先頭ルールをマトリックスデータに追記されたリストの中から特定し、そのルールのルールデータにおけるアクションがＡであった場合には、通過テスト部１５１は、マトリックスＦのアクションがＡであると定める。【０１１４】
例えば、マトリックスＦのマトリックスデータに追記されているルールが（Ｒ１１、Ｒ１３、Ｒ２１、Ｒ２２）であり、Ｒ１１のアクションがＡ（「通過を許可する」）である場合は、通過テスト部１５１は、ルールデータ中の次のルールセットの先頭ルールのアクションを出力する。この例では、Ｒ２１のアクションが出力される。ルール集合が３個以上あった場合は、２個目以降のルールセットの先頭ルールが「通過を許可する」である限り、通過テスト部１５１は、次のルールセットの先頭ルールを探し、アクションがＤ（「通過を許可しない」）である場合はそこで終了して、そのアクションを出力する。全てのルールセットの先頭ルールが「通過を許可する」の場合は、通過テスト部１５１は、「通過を許可する」を出力する。ここでは、先頭ルールＲ１１のアクションがＡであるものとして説明したが、Ｒ１１のアクションがＤである場合には、通過テスト部１５１は、そのまま「通過を許可しない」旨を出力する。【０１１５】
ステップＳ３０１においてテストパケットが複数のマトリックスにまたがっていると判定した場合にはステップＳ３０４に移行し、通過テスト部１５１は、テストパケットを含む複数のマトリックスを列挙する。このマトリックスの集合を集合Ｇとする。【０１１６】
次のステップＳ３１０では、通過テスト部１５１は、集合Ｇに含まれる各マトリックスごとにアクションを特定し、集合Ｇに含まれるマトリックスをアクションごとに分類する。そして、通過テスト部１５０は、同一のアクションによって分類されたマトリックスを統合し、統合された領域とテストパケットの領域との重なり領域を求める。ただし、集合Ｇに含まれる各マトリックスごとにアクションを特定する場合には、ステップＳ３０９と同様に、各マトリックスのアクションを特定する。すなわち、集合Ｇに含まれるあるマトリックスのアクションを特定する場合には、通過テスト部１５１は、以下のように処理を行う。【０１１７】
まず、通過テスト部１５１は、マトリックスのマトリックスデータを参照してそのマトリックスデータにおける先頭ルールを特定する。この先頭ルールは、１番目のルールセットにおける先頭ルールでもある。通過テスト部１５１は、この先頭ルールのルールデータにおけるアクションを参照し、アクションがＡである場合には、次のルールセットにおける先頭ルールをマトリックスデータに追記されたリストの中から特定する。通過テスト部１５１は、この先頭ルールのルールデータにおけるアクションを参照し、アクションがＡである場合には、さらに次のルールセットにおける先頭ルールをマトリックスデータに追記されたリストの中から特定する。このような動作を繰り返し、ルールデータにおけるアクションがＤ、すなわち「通過を許可しない」となるものがあった場合には、通過テスト部１５１は、マトリックスＦのアクションがＤであると定める。一方、最後のルールセットにおける先頭ルールをマトリックスデータに追記されたリストの中から特定し、そのルールのルールデータにおけるアクションがＡであった場合には、通過テスト部１５１は、マトリックスＦのアクションがＡであると定める。【０１１８】
次のステップＳ３０６では、通過テスト部１５１は、求めた重なり領域をアクションごとに出力装置９３０から出力する
なお、図２０に示す通過テスト部１５１の処理手順は、単なる一例である。同様の結果を得るために他の処理手順を採用することも可能である。【０１１９】
次に、具体例を用いて、第３の実施形態のフィルタリングルール分析システムの動作を説明する。ここでは、図２１に示すようなネットワーク構成におけるルータ８２０及びファイアウォール８３０が、ルータ８２０及びファイアウォール８３０全体としてどのようなパケットを通過させ、どのようなパケットを通過させないのかをテストするものとする。図２１に示すネットワーク構成では、例えばインターネットなどの外部ネットワーク８１０、ルータ８２０、ファイアウォール８３０、ＰＣ（パーソナルコンピュータ）８４０が、この順に接続されている。外部ネットワーク８１０からＰＣ８４０に送られるパケットは、ルータ８２０を通過し、さらにファイアウォール８３０を通過しないと、ＰＣ８４０に到達しない。ルータ８２０には、図２２に示すルール集合Ｒ１００（ルールＲ１１〜Ｒ１３）が設定されているものとする。同様に、ファイアウォール８３０には、図２２に示すルール集合Ｒ２００（ルールＲ２１，Ｒ２２）が設定されているものとする。ただし図２２では、各ルールを、ネットワーク機器に依存しない形式で記述している。図２２では、各ルール集合ごとに、各ルールを模式的に２次元空間として図示している。なお、図２２は、後述するテストパケットＴ３の領域も示している。【０１２０】
図２２に示す各ルール集合Ｒ１００，Ｒ２００が入力装置９２０から入力され、ルール記憶部１１０に記憶されているものとする。なお、入力装置９２０には、例えば、ルータ８２０やファイアウォール８３０からルールを収集し、そのルールを独自の形式の記述のルールに変換するルール変換システム（不図示）が出力したルールが入力されていてもよい。【０１２１】
マトリックス化部１３０は、ルール記憶部１１０によって記憶されている各ルール集合Ｒ１００，Ｒ２００からマトリックス空間データを作成し、生成したマトリックス空間記憶データをマトリックス空間記憶部１２０に記憶させる。このとき、マトリックス化部１３０は、ルールの順番をＲ１１，Ｒ１２，Ｒ１３，Ｒ２１，Ｒ２２と定めてマトリックス空間データを作成する。従って、マトリックスデータに追記されるルールのリストにおいて、最初にＲ１００に属するルールが先に記述され、その後にＲ２００に属するルールが記述される。このようにルールのリストが追記されたマトリックスデータの例を図２３に示す。なお、作成されたマトリックス空間データに基づいてルールの模式図を表わすとすると、図２２に示す２つの模式図を重ねた模式図となる。【０１２２】
続いて、通過テスト部１５１は、テスト入力装置９４０を介してテストパケットＴ３を入力したとする。テストパケットＴ３は、Ｔ３＝（４、６、４、５、後略）であるものとする。本例において、テストパケットＴ３の領域は、複数のマトリックスにまたがらない。従って、ステップＳ３０１（図２０参照）の判定の後、処理はステップＳ３０２に移行する。本例では、通過テスト部１５１は、ステップＳ３０２において、テストパケットを含むマトリックスがＭＴ０１（図２３参照）であると特定する。すなわち、通過テスト部１５１は、ＭＴ０１をマトリックスＦとする。【０１２３】
続いてステップＳ３０９において、通過テスト部１５１は、マトリックスＦ（ＭＴ０１）のマトリックスデータにおける先頭ルールを特定する。この先頭ルールはＲ１２であり（図２３のＭＴ０１を参照）、通過テスト部１５１は、Ｒ１２のルールデータにおけるアクションを参照する。このアクションはＡ（「通過を許可する」）なので、通過テスト部１５１は、マトリックスＦ（ＭＴ０１）のマトリックスデータにおける次のルールセットの先頭ルールを探す。この先頭ルールはＲ２２である（図２３のＭＴ０１を参照）。通過テスト部１５１は、Ｒ２２のルールデータにおけるアクションを参照する。このアクションはＤ（「通過を許可しない」）である。よって、通過テスト部１５１は、マトリックスＦのアクションがＤすなわち「通過を許可しない」であると定め、「通過を許可しない」旨を出力装置に出力する。このとき、どのルール集合に基づくパケットフィルタリングで通過を許可され、どのルール集合に基づくパケットフィルタリングで通過を許可されなかったかかについても出力してよい。本例では、最初のルールセットの先頭ルールのアクションはＡであり、次のルールセットの先頭アクションがＤであったので、最初のルール集合Ｒ１００に基づくパケットフィルタリングでは通過を許可され、２番目のルール集合Ｒ２００に基づくパケットフィルタリングでは通過が許可されないことを出力してもよい。【０１２４】
この結果、テストパケットＴ３は、ＰＣ４４０までは到達しないことがわかる。１つ目のルール集合であるＲ１００のパケットフィルタリング機器であるルータ８２０では、テストパケットＴ３は通過を許可されるが、２つ目のルール集合であるＲ２００のパケットフィルタリング機器であるファイアウォール８３０では、通過を許可されないことが分かる。【０１２５】
入力されたテストパケットが、例えば、（３、４、２、３、後略）であるとする。この場合も処理はステップＳ３０１（図２０参照）の後、ステップＳ３０２に移行する。本例では、通過テスト部１５１は、テストパケットを含むマトリックスがＭＴ０２（図２３参照）であると特定する。すなわち、通過テスト部１５１は、ＭＴ０２をマトリックスＦとする。この後のステップＳ３０９において、通過テスト部１５１は、マトリックスＦ（ＭＴ０２）のマトリックスデータにおける先頭ルールを特定する。図２３に示すように、この先頭ルールはＲ１１であり、通過テスト部１５１は、Ｒ１１のルールデータにおけるアクションを参照する。このアクションはＤであるので、通過テスト部１５１は、そこでアクションを特定する処理を終了して、「通過を許可しない」旨を出力する。【０１２６】
入力されたテストパケットが、例えば、（４、７、１、２、後略）であるとする。この場合も、処理はステップＳ３０２に移行し、この例では、通過テスト部１５１は、テストパケットを含むマトリックスがＭＴ０３（図２３参照）であると特定する。すなわち、ＭＴ０３をマトリックスＦとする。この後のステップＳ３０９において、通過テスト部１５１は、マトリックスＦ（ＭＴ０３）のマトリックスデータにおける先頭ルールを特定する。図２３に示すようにこの先頭ルールはＲ１２であり、Ｒ１２のアクションはＡである。そのため、通過テスト部１５１は、次のルールセットにおける先頭ルールを探す。この先頭ルールはＲ２１であり、Ｒ２１のアクションもＡである。次のルールセットは存在しないので、通過テスト部１５１は、この時点でアクションを特定する処理を終了して、「通過を許可する」旨を出力する。【０１２７】
通過テスト部１５１による処理結果（テスト結果）の出力態様は、特に限定されるものではなく、例えば、表示出力や音声出力であってもよいし、あるいはファイルとして出力してもよい。また、ルール分析システム１００と通信ネットワークを介して接続される別システムに出力装置９３０を設け、その別システムにおいてテスト結果を出力してもよい。この場合、ルール分析システム１００と通信ネットワークを介して接続される別システムの利用者にテスト結果を知らせることができる。出力装置９３０がディスプレイ装置であり、テスト結果を表示出力する場合の分析結果の表示例を図２４に示す。なお、ステップＳ３０９，Ｓ３０６では、出力すべきテスト結果を一時記憶装置（不図示）に記録しておいて、その後、一時記憶装置に記録されたテスト結果を出力装置９３０が出力してもよい。【０１２８】
以上の説明は、図２０に示すフローチャートのステップＳ３０１の後に、ステップＳ３０２に移行する場合のものである。次に、ステップＳ３０１からステップＳ３１０に移行して、マトリックスの統合を行う場合の具体例を示す。テストパケットとしてＴ４＝（１，４，１，４，後略）を入力したとする。図２２と同様にＴ４を模式的に表わすと、図２５Ａに示すようになる。テストパケットＴ４を入力した場合、Ｔ４の領域は、複数のマトリックスにまたがる。従って、図２０に示すステップＳ３０１の判定の後、処理は、ステップＳ３０４に移行する。図２５Ｂに示すように、テストパケットＴ４は、９個のマトリックスＭ００１〜Ｍ００９にまたがっているとする。この場合、通過テスト部１５１は、ステップＳ３０４において、Ｍ００１〜Ｍ００９の各マトリックスを列挙する。そして、このマトリックスの集合が集合Ｇとなる。【０１２９】
ステップＳ３１０では、通過テスト部１５１は、集合Ｇに含まれる各マトリックスごとにアクションを特定する。本例では、図２５Ｂに示すように、通過テスト部１５１は、ルール集合Ｒ２００のルールＲ２２に基づいて、Ｍ００１，Ｍ００２，Ｍ００４，Ｍ００７，Ｍ００８のアクションはＤであると特定し、ルール集合Ｒ１００のルール１１に基づいて、Ｍ００５，Ｍ００６のアクションはＤであると特定し、ルール集合Ｒ２００のルールＲ２１に基づいて、Ｍ００３，Ｍ００９のアクションはＡであると特定する。通過テスト部１５１は、同一のアクションによって分類されたマトリックスを統合する。本例では、Ｍ００１，Ｍ００２，Ｍ００４〜Ｍ００６，Ｍ００７，Ｍ００８が統合されることになるが、これらのマトリックスの領域は図２５Ｂに示すように矩形とはならず、凸形となる。この場合、各属性の開始点及び終了点のペアを列挙することによって統合された領域を表わすことはできない。そこで、同一アクションのマトリックスを統合する際には、まず、統合すべき領域内における最大矩形領域を特定し、その領域を各属性の開始点及び終了点のペアを列挙することによって表わす。本例では、Ｍ００１，Ｍ００２，Ｍ００４，Ｍ００５，Ｍ００７，Ｍ００８によって最大矩形領域が得られる。よって、この最大矩形領域を各属性の開始点及び終了点のペアを列挙することによって表わす。この領域は、（１，３，１，４，後略）と表わされる。また、統合すべき領域内における残りの領域に関しても、最大矩形領域と特定し、その領域を各属性の開始点及び終了点のペアで表わすことを繰り返す。本例では、残りの領域はＭ００６であり、このＭ００６の領域を各属性の開始点及び終了点のペアで表わせばよい。この領域は、（３，４，２，３，後略）と表わされる。よって、アクションＤのマトリックスの統合結果は、（１，３，１，４，後略）及び（３，４，２，３，後略）となる。【０１３０】
アクションＡのマトリックスＭ００３とＭ００９は離れて存在しているので、通過テスト部１５１は、離れて存在している領域、ここではマトリックスごとに、各属性の開始点及び終了点のペアで領域を表わせばよい。【０１３１】
そして、通過テスト部１５１は、ステップＳ３０６において、各アクションの各領域ごとに、テストパケットとの重なり領域を求め、求めた重なり領域をアクションとともに出力する。【０１３２】
第３の実施形態のフィルタリングルール分析システムの利点について説明する。第３の実施形態のフィルタリングルール分析システムによれば、複数のパケットフィルタリング機器によってフィルタリングを行うような環境で、どのような複雑なフィルタリングルールであっても、また、属性数が多いフィルタリングルールであっても、複数のパケットフィルタリング機器全体でどのようなパケットが通過するかどうかを把握することができる。その理由は、複数のルール集合からマトリックス空間データを作成し、そのマトリックス空間データに基づいてテストパケットが通過するかしないかをテストするためである。【０１３３】
第４の実施形態：
次に本発明の第４の実施形態のフィルタリングルール分析システムを説明する。第４の実施形態のフィルタリングルール分析システムを示す図２６においては、第１の実施形態におけるものと同様の構成要素については、図１におけるものと同一の参照符号を付し、重複する説明を省略する。第２の実施形態のフィルタリングルール分析システムは、図１に示すものと同様のものであるが、ルール分析システム１００において重なり分析部の代わりに同一性分析部１６０が設けられている点で、図１に示したものと異なっている。第４の実施形態のフィルタリング分析ツールでは、マトリクス化部の動作は第１の実施形態の場合と異なるので、マトリクス化部に対して第１の実施形態の場合と異なる参照符号を付与するものとする。【０１３４】
この実施形態では、ルール記憶部１１０に複数のルール集合が記憶されているものとする。マトリックス化部１３１は、その複数のルール集合の数だけマトリックス空間データを作成する。すなわち、マトリックス化部１３１は、各ルール集合ごとに、それぞれマトリックス空間データを作成するとともに、各ルール集合に対応する各マトリックス空間データを作成する際に、各ルール集合から得られる全ての境界点を用いてマトリックスデータを作成する。【０１３５】
同一性分析部１６０は、各ルール集合に基づくパケットフィルタリング動作が同一の動作になるか否かについて分析する。同一性分析部１６０は、例えば、プログラムに従って動作するＣＰＵによって実現される。このプログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。【０１３６】
次に、本実施形態のフィルタリングルール分析システムの動作について説明する。既に述べたようにこの実施形態では、ルール記憶部１１０に複数のルール集合が記憶されるが、入力装置９２０は、複数のルール集合をルール分析システム１００に入力し、各ルール集合をそれぞれルール記憶部１１０に記憶させればよい。【０１３７】
図２７は、マトリックス化部１３１によるマトリックス空間データ作成処理の例を示している。図２７に示すステップＳ１０１〜Ｓ１０４の処理は、第１の実施形態におけるステップＳ１０１〜Ｓ１０４（図２参照）の処理と同様である。ただし、第１の実施形態では、ステップＳ１０３において、１つのルール集合に含まれる全てのルールの条件部分から、ステップＳ１０２で選択した属性に関する開始点及び終了点を収集していた。この第４の実施形態では、マトリックス化部１３１は、ステップＳ１０３において、ルール記憶部１１０に記憶されている全ルール集合に含まれる全てのルールの条件部分から、ステップＳ１０２で選択した属性に関する開始点と終了点を収集する。そして、マトリックス化部１３１は、ステップＳ１０４において、全ルール集合に含まれる全てのルールから収集した境界点（開始点及び終了点）をソートする。なお、境界点の中に重複する境界点、すなわち同じ値を持つ境界点がある場合、同じ値を持つ境界点のうち一つだけを残し、同じ値を持つ他の境界点については削除する点に関しては、第４の実施形態は、第１の実施形態と同様である。【０１３８】
ステップＳ１０１において、属性が残っていないと判定された場合、処理は、ステップＳ１１１に移行する。ステップＳ１１１では、マトリックス化部１３１は、ルール記憶部１１０に記憶されている各ルール集合ごとにマトリックスデータを作成する。一つのルール集合に対応するマトリックスデータを作成する処理は、第１の実施形態におけるステップＳ１０５（図２参照）と同様である。ただし、第４の実施形態では、マトリックスデータ作成の際に、ステップＳ１０４でソートした境界点を用いる。なお、図２７に示すステップＳ１１１では、「２組作る」と記載しているが、ルール記憶部１１０に記憶されているルール集合の数が３つ以上であっても、各ルール集合ごとにマトリックスデータを作成する。【０１３９】
続いて、マトリックス化部１３１は、ステップＳ１１２，１１３において、各ルール集合ごとにマトリックス空間データを作成する。図２７に示した例では、２組目のルール集合についてマトリックス空間データを作成した後に処理を終了しているが、ルール記憶部１１０に記憶されているルール集合の数が３つ以上である場合も、上述したように、各ルール集合ごとにマトリックスデータが作成される。なお、ステップＳ１１２，１１３に示した１つのルール集合に対応するマトリックス空間データを作成する処理では、第１の実施形態と同様に、ステップＳ１０６〜Ｓ１０８（図２参照）の処理を繰り返し実行すればよい。【０１４０】
各ルール集合と１対１に対応するマトリックス空間データが複数組作成された場合、各マトリックス空間データに含まれるルールデータの数が異なることはあるが、各マトリックス空間データに含まれるマトリックスデータの数は共通である。この理由は、全てのルール集合から境界点（属性の開始点及び終了点）を収集してその境界点をソートし、いずれのマトリックスデータもこのソート結果により得られる境界点を用いて作成しているからである。【０１４１】
同一性分析部１６０は、ルール記憶部１１０に記録されている複数のルール集合が同じ意味を持つルール集合であるかどうかを検査する。換言すれば、同一性分析部１６０は、各ルール集合に基づくパケットフィルタリング動作が同一の動作になるか否かについて分析する。【０１４２】
図２８は、同一性分析部１６０による処理の例を示している。各ルール集合ごとに対応するマトリックス空間データが存在するので、マトリックス空間データは複数組存在することになる。ここでは、２つのルール集合とそれぞれ１対１に対応する２組のマトリックス空間データが存在する場合を例にして説明する。この２組のマトリックス空間データに含まれるルールデータ数が異なっていても、マトリックスデータの数は同数である。以下の説明では、１組目のマトリックス空間データにおけるマトリックスを基準に説明する。【０１４３】
同一性分析部１６０は、基準とする１組目のマトリックス空間データにおける全てのマトリックスデータを順次選択しながら、ステップＳ４０１〜Ｓ４０３に示すループ処理を行う。まず、同一性分析部１６０は、ステップＳ４０１において、基準とするマトリックス空間データにおいて未選択のマトリックスデータが残っているか否かを判定する。マトリックスデータ全てについてチェックが済んでいる場合、すなわち全てのマトリックスデータが選択済みである場合には、処理はステップＳ４０４に移行し、未選択のマトリックスデータが残っている場合には、同一性分析部１６０は、ステップＳ４０２において、基準とするマトリックス空間データにおける未選択のマトリックスデータを１つ選択する。【０１４４】
次に、同一性分析部１６０は、選択した１組目のマトリックスデータに対応するマトリクスデータを２組目のマトリックス空間データの中から選択する。すなわち、同一性分析部１６０は、各属性においてペアとなる境界点が、選択した１組目のマトリックスデータと共通のマトリックスデータを、２組目のマトリックス空間データの中から選択する。同一性分析部１６０は、ステップＳ４０３において、選択した２つのマトリックスデータにおける先頭ルールのアクションを調べ、アクションが異なっているならば、バッファ（不図示）に記録する。このとき同一性分析部１６０は、先頭ルールのアクションが異なっている２つのマトリックスデータを特定できる情報をバッファに記録すればよい。例えば、各マトリックス空間データにおける１３番目のマトリックスデータをＭ０１３として識別していて、２つのマトリックス空間データからそれぞれ選択したＭ０１３の先頭ルールのアクションが異なっている場合には、同一性分析部１６０は、バッファに「Ｍ０１３」と記録すればよい。あるいは、選択した各マトリックスデータの最後尾に、先頭ルールのアクションを追記したものをバッファに記録してもよい。例えば、「１組目  Ｍ０１３＝（１４，１５，０，１，中略，Ｄ）、２組目  Ｍ０１３＝（１４，１５，０，１，中略，Ａ）」等の形式でバッファに記録してもよい。なお、２つのマトリックスデータの先頭ルールのアクションが共通であれば、同一性分析部１６０は、バッファに対する記録は行わない。【０１４５】
ステップＳ４０３の後、処理はステップＳ４０１に移行する。基準とするマトリックス空間データにおいて未選択のマトリックスデータが残っているならば、ステップＳ４０２以降の処理が繰り返される。【０１４６】
ステップＳ４０１において「いいえ」の側に分岐した場合、すなわち基準とするマトリックス空間データにおいて未選択のマトリックスデータが残っていない場合には、同一性分析部１６０は、ステップＳ４０４において、バッファにマトリックスの情報が記録されているかどうかを判定する。ここでマトリックスの情報が記録されていなければ、同一性分析部１６０は、ステップＳ４０６において、ルール記憶部１１０に記録されている２組のルール集合が同じ意味を持つルール集合であることを、出力装置９３０から出力する。ステップＳ４０４においてマトリックスの情報が記録されている場合には、同一性分析部１６０は、ステップＳ４０５において、２組のルール集合の持つ意味に差異があること、すなわち、２組のルール集合それぞれに基づくパケットフィルタリング動作が異なることを、出力装置９３０から出力する。このとき、同一性分析部１６０は、バッファに記録され、かつ先頭ルールのアクションが異なっているマトリックスの情報も、出力装置９３０から出力する。さらに、異なっているアクションをそれぞれ表示するようにしてもよい。【０１４７】
なお、図２７に示すマトリックス化部１３１の処理手順は、単なる一例である。同様の結果を得るために他の処理手順を採用することも可能である。図２８に示す同一性分析部１６０の処理手順も、単なる一例である。同様の結果を得るために他の手順を採用することも可能である。上記の例では、ルール集合が２組の場合の動作の説明を行ったが、２組以上の任意の数のルール集合が存在する場合の動作も同様である。【０１４８】
次に、具体例を用いて、第４の実施形態のフィルタリングルール分析システムの動作を説明する。ここでは、図２１に示すようなネットワーク構成に含まれるルータ８２０とファイアウォール８３０のパケットフィルタリング動作の同一性、または、図２９に示すような外部ネットワーク８１０とＰＣ８６０，８８０との間に設けられる２つのファイアウォール８５０，８７０のパケットフィルタリング動作の同一性を分析する場合を例にして説明する。なお、このとき、図２１に示すルータ８２０、ファイアウォール８３０には、それぞれ図３０に示すルール集合Ｒ３００（ルールＲ３１〜Ｒ３３）、ルール集合Ｒ４００（ルールＲ４１〜Ｒ４５）がフィルタリングルールとして設定されているものとする。図２９に示す各ファイアウォール８５０，８７０には、それぞれ図３０に示すルール集合Ｒ３００（ルールＲ３１〜Ｒ３３）、ルール集合Ｒ４００（ルールＲ４１〜Ｒ４５）が設定されているものとする。図３０では、図２２と同様にルールを記述し、ルールの模式図も図示している。【０１４９】
図３０に示す各ルール集合Ｒ３００，Ｒ４００が入力装置９２０から入力され、ルール記憶部１１０に記憶されているものとする。なお、入力装置９２０には、例えば、図２１に示すルータ８２０やファイアウォール８３０からルールを収集し、あるいは、図２９に示すファイアウォール８５０，８７０からルールを収集し、それらのルールを独自の形式の記述のルールに変換するルール変換システム（不図示）が出力したルールが入力されればよい。【０１５０】
図２１に示すネットワーク構成の場合、ルータ８２０とファイアウォール８３０に全く同じ処理を行うフィルタリングルールを設定することで、多重に防御し、セキュリティを頑健にしているものとする。このような構成は多段防御と呼ばれている。一方、図２９のネットワーク構成の場合、全く同じ環境を複数用意することで、ＰＣの負荷を分散させているものとする。このような構成は多重化と呼ばれる。いずれの場合にも、フィルタリング処理では同じ処理をしなければならない。本例では、このようなフィルタリング処理の同一性を検査する。【０１５１】
図２９に例示する構成では、ファイアウォール８５０とファイアウォール８７０として同一機種（あるいは同一ソフトウェア）のファイアウォールが用いられていた場合は、ルールも同じものが使える。この場合には、ルール文字列の照合で同一性を検証できる。しかし、同一機種（あるいは同一ソフトウェア）のファイアウォールであっても、ルールを作成した人やルールの作成時期によって、ルール構成が異なる場合がある。ある１つのルールであっても、複数の書き方がある上、複数のルールで１つのルールと同じ意味を持たせることもあり、ルール文字列の照合だけでは同一性が簡単には検証できない。本実施形態のフィルタリングルール分析システムは、このような場合の同一性の検証を行う。【０１５２】
マトリックス化部１３１がルール集合Ｒ３００及びＲ４００に対応するマトリックス空間データを２組作り、マトリックス空間記憶部１２０に記録するまでの処理は、第１の実施形態とほぼ同様である。第４の実施形態が第１の実施形態と異なる点は、ステップＳ１０７において、２組のルール集合Ｒ３００，Ｒ４４０に含まれる全てのルールから開始点及び終了点（境界点）を収集し、ステップＳ１０４において、その境界点をソートして、マトリックス空間データを作る点である。第１の実施形態では、１つのルール集合からしか境界点を収集していない。【０１５３】
図３０に例示する２組のルール集合Ｒ３００，Ｒ４００からマトリックス空間データを作成した場合、１組目のマトリックス空間データは、３個のルールデータ（Ｒ３１〜Ｒ３３）と、３０個のマトリックスデータを含む。２組目のマトリックス空間データは、５個のルールデータ（Ｒ４１〜Ｒ４５）と、３０個のマトリックスデータを含む。１次元目（第１属性）における境界点は（０、１、２、４、７、８）であり、隣接する２つ境界点で出来る極小領域は５個である。２次元目（第２属性）における境界点は（０、１、２、３、４、５、７）であり、隣接する２つ境界点で出来る極小領域は６個である。そのため、マトリックスデータの数は、５×６＝３０となる。なお、ここでは説明を簡単にするため、第３属性以降については無視している。【０１５４】
マトリックス化部１３１が２組のマトリックス空間データをマトリックス空間記憶部１２０に記録した後、同一性分析部１６０は、その２組のマトリックス空間データを用いて分析を行う。図３０に示す２組のルール集合から作成した各マトリックス空間データは、それぞれ３０個のマトリックスデータを含んでいる。そのため、図２８に示すフローチャートにおいて、同一性分析部１６０は、ステップＳ４０１〜Ｓ４０３のループを３０回繰り返す。以下、１組目のルール集合Ｒ３００に対応するマトリックス空間データを基準とする場合を例に挙げて説明する。【０１５５】
同一性分析部１６０は、ステップＳ４０１において、基準とするマトリックス空間データにおいて未選択のマトリックスデータが残っているか否かを判定する。最初にステップＳ４０１に移行した場合、３０個のマトリックスデータが残っているため、ステップＳ４０１では「はい」側に分岐して、同一性分析部１６０は、ステップＳ４０２において、そのマトリックスデータのうちの１つを選択する。同一性分析部１６０は、例えば、先頭のマトリックスデータ（０、１、０、１、中略、Ｒ３３）を選択する。続いてステップＳ４０３において、同一性分析部１６０は、そのマトリックスデータに対応するデータを、２組目のマトリックス空間データから選択する。ここでマトリックスデータに対応するデータとは、各属性においてペアとなる境界点が、選択した１組目のマトリックスデータと共通であるマトリックスデータのことである。ここで選択されるマトリックスデータは、この場合は２組目における先頭のマトリックスデータとなり、（０、１、０、１、中略、Ｒ４５）である。同一性分析部１６０は、選択したマトリックスデータにおける先頭ルールのルールデータを参照して、先頭ルールのアクションを調べる。ここでは、同一性分析部１６０は、先頭ルールＲ３３とＲ４５のルールデータを参照して、アクションを調べる。先頭ルールＲ３３とＲ４５のルールデータにおいて、アクションはいずれもＤであるから、同一性分析部１６０は、先頭のマトリックスに関しては、バッファに記録しない。アクションが異なっている場合には、同一性分析部１６０は、先頭ルールのアクションが異なっている２つのマトリックスデータを特定できる情報をバッファに記録する。同一性分析部１６０は、この処理を、基準とするマトリックス空間データにおける全てのマトリックスデータを順に選択して行う。【０１５６】
その後、ステップＳ４０４において、同一性分析部１６０は、バッファにマトリックスの情報が記録されているかどうかを判定する。図３０に例示するルール集合に基づいて作成した２組のマトリックス空間データを用いて、ステップＳ４０１〜Ｓ４０３の処理を繰り返した場合、バッファには何も記録されない。そのため、処理はステップＳ４０６に移行し、同一性分析部１６０は、２組のルール集合Ｒ３００，Ｒ４００が同じ意味を持つルール集合であることを、出力装置９３０から出力する。【０１５７】
同一性分析部１６０による処理結果すなわち同一性分析結果の出力態様は、特に限定されるものではなく、例えば表示出力や音声出力であってもよいし、あるいはファイルとして出力してもよい。また、ルール分析システム１００と通信ネットワークを介して接続される別システムに出力装置９３０を設け、その別システムにおいて同一性分析結果を出力してもよい。この場合、ルール分析システム１００と通信ネットワークを介して接続される別システムの利用者に同一性分析結果を知らせることができる。出力装置９３０がディスプレイ装置であり、同一性分析結果を表示出力する場合の分析結果の表示例を図３１に示す。【０１５８】
なお、ステップＳ４０５，Ｓ４０６では、出力すべき同一性分析結果を一時記憶装置（不図示）に記録しておいて、その後、一時記憶装置に記録された同一性分析結果を出力装置９３０が出力してもよい。【０１５９】
上記の具体例は、２組のルール集合が同じ意味を持つルール集合であることを出力する場合に関するものである。そこで以下に、２組のルール集合が異なる意味を持つルール集合であることを出力する場合の例を示す。図３２に示すルール集合Ｒ８００（Ｒ８１〜Ｒ８３）及びルール集合Ｒ９００（Ｒ９１〜Ｒ９５）がルール記憶部１１０に記憶され、この２組のルール集合Ｒ８００，Ｒ９００に基づいてマトリックス化部１３１が作成したマトリックス空間データがマトリックス空間記憶部１２０に記憶されているものとする。なお、図３２では、図３０と同様にルールを記述し、ルールの模式図も図示している。ここではルール集合Ｒ８００に対応するマトリックス空間データを基準としているとする。【０１６０】
同一性分析部１６０は、ルール集合Ｒ８００に対応するマトリックス空間データから順次マトリックスデータを選択し、ステップＳ４０１〜Ｓ４０３の処理を繰り返す。同一性分析部１６０は、ステップＳ４０２においてルール集合Ｒ８００のマトリックス空間データから（２，３，１，２，中略，Ｒ８２，Ｒ８３）というマトリックスデータを選択した場合、次のステップＳ４０３では、ルール集合Ｒ９００のマトリックス空間データから（２，３，１，２，中略，Ｒ９５）というマトリックスデータを選択する。同一性分析部１６０は、選択したマトリックスデータにおける先頭ルールのルールデータを参照して、先頭ルールのアクションを調べる。ここでは、先頭ルールＲ８２とＲ９５のルールデータを参照して、アクションを調べる。先頭ルールＲ９２のルールデータではアクションはＡであり、Ｒ９５のルールデータではアクションはＤである。従ってアクションが異なるので、同一性分析部１６０は、このマトリックスの情報やアクションの情報を、例えば「１組目（２，３，１，２，中略、Ａ）、２組目（２，３，１，２，中略、Ｄ）」等の形式でバッファに記録する。【０１６１】
各マトリックスデータについて、ステップＳ４０１〜Ｓ４０３に示したループ処理が完了して、処理がステップＳ４０４に移行した場合、バッファは上記のように記録されている。この場合、同一性分析部１６０は、ステップＳ４０５において、例えば、ルール集合Ｒ８００，Ｒ９００に基づくフィルタリング動作が異なること、バッファに記録していたマトリックスの情報、どちらのルール集合でアクションがＡとなり、どちらのルール集合でアクションがＤとなっているか等を、出力装置９３０から出力する。この出力結果の例を、図３３に示す。【０１６２】
次に、第４の実施形態のフィルタリングルール分析システムの利点について説明する。第４の実施形態のフィルタリングルール分析システムによれば、複数のパケットフィルタリング機器がどのような複雑なフィルタリングルールで設定されていても、それらのフィルタリング機器が全く同一のフィルタリング処理を行うかどうかを知ることができる。その理由は、それぞれのルール集合で実現するフィルタリング処理をルールとは無関係にマトリックス単位で比較して同じアクションかどうかをチェックするからである。【０１６３】
第５の実施形態：
次に本発明の第５の実施形態のフィルタリングルール分析システムを説明する。第５の実施形態のフィルタリングルール分析システムを示す図３４においては、第１の実施形態におけるものと同様の構成要素については、図１におけるものと同一の参照符号を付し、重複する説明を省略する。第５の実施形態のフィルタリングルール分析システムは、図１に示すものと同様のものであるが、ルール分析システム１００において重なり分析部の代わりにルール削除部１７０が設けられている点で、図１に示したものと異なっている。ルール削除部１７０は、マトリックス空間データを参照して、ルール記憶部１１０に記憶されているルール集合内のルールのうち、削除可能と判定されるルールを削除する。ルール削除部１７０は、ルールの条件部分に記述されている属性の範囲が冗長に記述されていると判定した場合に、そのルールの記述を修正する。ルール削除部１７０は、例えば、プログラムに従って動作するＣＰＵによって実現される。なお、プログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。【０１６４】
次に、本実施形態のフィルタリングルール分析システムの動作について説明する。なお、第１の実施形態と同様の動作については、その詳細な説明を省略する。マトリックス空間記憶部１２０にマトリックス空間データが記憶されるまでの入力装置９２０、マトリックス化部１３０の動作は、第１の実施形態の場合と同様である。【０１６５】
マトリックス化部１３０がマトリックス空間データをマトリックス空間記憶部１２０に記憶させた後、ルール削除部１７０は、上記のルール削除処理及びルールの修正処理を実行する。図３５〜図３７は、ルール削除部１７０によるルール削除やルール修正の処理手順の例を示している。【０１６６】
ルール削除部１７０は、まず、ステップＳ５０１において、ルール記憶部１１０に記憶されているルール集合をバッファ（不図示）にコピーし、次に、バッファにコピーしたルール集合中のルールのうち、デフォルトルール以外の全てのルールに対してステップＳ５０２〜Ｓ５０６のループ処理を進める。このループ処理においてルール削除部１７０は、ステップＳ５０２において、バッファにコピーされたルール集合中のデフォルトルール以外のルールのうち、未選択のルールが残っているか否かを判定する。そのようなルールが残っているならば、ルール削除部１７０は、ステップＳ５０３において、デフォルトルール以外のルールであって未選択のルールを降順に、すなわちルールの優先順位が低いものから順に、１つ選択する。ステップＳ５０３で選択されるルールをＩとする。次に、ルール削除部１７０は、ステップＳ５０４において、ルールＩを構成するマトリックスに対応するマトリックスデータのうち、先頭ルールがルールＩとなっていないマトリックスデータを列挙する。ステップＳ５０４で列挙されるマトリックスデータの集合をＪとする。続いて、ルール削除部１７０は、ステップＳ５０５において、マトリックスデータの集合Ｊと、ルールＩを構成するマトリックスに対応するマトリックスデータの集合とが一致しているか否かを判定する。この２つの集合が一致しているならば、処理はステップＳ５０６に移行する。ここで、マトリックスデータの集合Ｊと、ルールＩを構成するマトリックスに対応するマトリックスデータの集合とが一致しているということは、ルールＩを構成するマトリックスのマトリックスデータ全てにおいて先頭ルールがルールＩ以外であり、第１の実施の形態で説明した「Ｃｏｎｃｅａｌｅｄ」と同じく、ルールＩが別の優先度の高い１つ以上のルールによって完全に隠されていることを意味している。ステップＳ５０６に移行した場合、ルール削除部１７０は、他のルールによって完全に隠されることになるＣｏｎｃｅａｌｅｄな状態のルールＩを削除する。一方、ステップＳ５０５において２つのルール集合が一致していなければ、ルールＩを削除することなく、処理はステップＳ５０２に移行する。このステップＳ５０２〜Ｓ５０６のループ処理によって、バッファにコピーされたルール集合内からＣｏｎｃｅａｌｅｄなルールが削除される。【０１６７】
ステップＳ５０２において、処理が「いいえ」側に分岐した場合、すなわちデフォルトルール以外のルールのうち、未選択のルールが残っていないと判定した場合、ルール削除部１７０は、ステップＳ５０７において、バッファに記憶されているルール集合内の各ルールに付けられたチェックをリセットする。ここでチェックとは、選択済みを表わす情報のことである。ステップＳ５０２以降のルール処理を行い、デフォルトルール以外の全ルールを選択すると、その各ルールにチェックが付けられた状態になるので、ステップＳ５０７では、そのチェックがリセット、すなわち全て取り去されることになる。【０１６８】
次に、ルール削除部１７０は、バッファから削除されなかったルールのうち、デフォルトルール以外の全てのルールに対して、ステップＳ５０８から始まり再びステップＳ５０８に戻るループ処理（図３６参照）を進める。ルール削除部１７０は、まず、ステップＳ５０８において、バッファに記憶されているルール集合中のデフォルトルール以外のルールのうち、未選択のルールが残っているか否かを判定する。そのようなルールが残っているならば、ルール削除部１７０は、ステップＳ５０９において、デフォルトルール以外のルールであって未選択のルールを降順に、すなわちルールの優先順位が低いものから順に、１つ選択する。ステップＳ５０９で選択されるルールをＫとする。次に、ルール削除部１７０は、ステップＳ５１０において、以下の３つの条件を満足するルールを列挙する。第１の条件は、「ルールが、ルールＫを構成するマトリックスに完全に含まれるルールであって、ルールＫより優先順位の高いルールであること」という条件である。ここで、「ルールが、ルールＫを構成するマトリックスに完全に含まれるルールである」とは、換言すると、「ルールに対応する各マトリックスデータ全体が示す属性が示す範囲が、ルールＫに対応する各マトリックスデータ全体が示す属性の範囲に収まっている」という状態を意味する。第２の条件は、「ルールに対応する各マトリックスデータ全てにおいて、そのルール自身が先頭ルールになっていること」という条件である。第３の条件は、「ルールのアクションがルールＫのアクションと同一であること」という条件である。ルール削除部１７０は、第１から第３の条件を全て満足するルールを列挙する。ステップＳ５１０で列挙されたルールの集合をＬとする。【０１６９】
続いて、ルール削除部１７０は、ルール集合Ｌに含まれる全てのルールに対してステップＳ５１１〜Ｓ５１４のループ処理を進める。このループ処理においてルール削除部１７０は、まず、ステップＳ５１１において、ルール集合Ｌに含まれるルールのうち未選択のルールが残っているか否かを判定する。未選択のルールが残っていれば、ルール削除部１７０は、ステップＳ５１２において、ルール集合Ｌ中の未選択のルールを１つ選択する。ステップＳ５１２で選択されるルールをＭとする。続いて、ルール削除部１７０は、優先順位がルールＫとルールＭとの間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールを検索する。そして、そのようなルールがあった場合、ルール削除部１７０は、ステップＳ５１３において、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールのアクションと、ルールＭのアクションとが一致しているか否かを判定する。換言すると、ルールＭを構成する各マトリックスの全マトリックスデータのルールリストにおいて、ルールＭの次のルールのアクションとルールＭのアクションとが一致しているか否かが判定される。なお、ルールＭよりも優先順位が１つ低いルールは、マトリックスによって異なる場合がある。ステップＳ５１３で、一致していると判定した場合には、ルール削除部１７０は、ステップＳ５１４において、バッファに記録されているルールの中からルールＭを削除する。ステップＳ５１３において一致していないと判定された場合には、処理はそのままステップＳ５１１に移行する。【０１７０】
ここで、２次元空間に模式的に表わしたルールを用いて、ステップＳ５１３の判定例を説明する。図３８は、ステップＳ５１３における判定例を示す模式的説明図である。図３８では、アクションがＡのルールを白色領域で示し、アクションがＤのルールについては、多数の点を描画した模様を付した領域で示している。図３８に示す例１では、優先順位がルールＫとルールＭとの間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールとして、Ｒ１，Ｒ２が存在することを示している。このとき、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールは、Ｒ１である。ルールＭのアクションはＡであり、ルールＲ１のアクションはＤである。従って、ルール削除部１７０は、アクションが一致しないと判定してステップＳ５１３では「いいえ」の側に分岐し、ルールＭを削除せずにステップＳ５１１に移行する。図３８に示す例２では、優先順位がルールＫとルールＭとの間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールとして、Ｒ１，Ｒ２が存在することを示している。このとき、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールは、Ｒ１である。ルールＭのアクションはＡであり、ルールＲ１のアクションもＡである。従って、ルール削除部１７０は、アクションが一致すると判定してステップＳ５１３では「はい」の側に分岐し、ステップＳ５１４において、ルールＭを削除する。図３８に示す例３では、優先順位がルールＫとルールＭとの間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールとして、Ｒ１〜Ｒ３が存在することを示している。このとき、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールは、Ｒ１またはＲ２である。ルールＭのアクションはＡであり、ルールＲ１，Ｒ２のアクションもＡである。従って、ルール削除部１７０は、アクションが一致すると判定してステップステップＳ５１３では「はい」の側に分岐し、ステップＳ５１４において、ルールＭを削除する。図３８に示す例４では、優先順位がルールＫとルールＭとの間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールとして、Ｒ１〜Ｒ３が存在することを示している。このとき、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールは、Ｒ１またはＲ２である。ルールＭのアクションはＡであり、Ｒ２のアクションはＤである。従って、ルールＡを構成する一部のマトリックスでは、アクションが一致しない。よって、ルール削除部１７０は、ルールＭを削除せずにステップＳ５１１に移行する。【０１７１】
ルール集合Ｌの全ルールについてステップＳ５１１以降のループ処理が終了したならば、ステップＳ５１１で「いいえ」の側に分岐し、処理はステップＳ５０８に移行する。このステップＳ５０８から始まりステップＳ５０８に戻るループ処理によって、自身より優先順位の低いルールの存在により不要と判断されるルールが、バッファ内から削除されることになる。【０１７２】
ステップＳ５０８において、バッファに記憶されているルール集合中のデフォルトルール以外のルールのうち、未選択のルールが残っていないと判定した場合、処理はステップＳ５１５に移行する。ステップＳ５１５では、ルール削除部１７０は、バッファに記憶されているルール集合内の各ルールに付けられたチェックをリセットする。この処理は、ステップＳ５０７と同様のものである。【０１７３】
次に、ルール削除部１７０は、バッファから削除されなかったルールのうち、デフォルトルール以外の全てのルールに対して、ステップＳ５１６から始まり再びステップＳ５１６に戻るループ処理（図３７参照）を進める。このループ処理においてルール削除部１７０は、まず、ステップＳ５１６において、バッファに記憶されているルール集合中のデフォルトルール以外のルールのうち、未選択のルールが残っているか否かを判定する。そのようなルールが残っているならば、ルール削除部１７０は、ステップＳ５１７において、デフォルトルール以外のルールであって未選択のルールを降順に、すなわちルールの優先順位が低いものから順に、１つ選択する。ステップＳ５１７で選択されるルールをＮとする。次に、ルール削除部１７０は、ステップＳ５１８において、ルールＮを構成するマトリックスのマトリックスデータにおいて、ルールＮ以外のルールが先頭ルールとなっているものがあるか否かを判定する。そのようなマトリックスデータがなければ、処理はステップＳ５１６に移行する。ステップＳ５１８においてそのようなマトリックスデータが存在すれば、ルール削除部１７０は、そのマトリックスデータを列挙して、ステップＳ５１９に移行する。【０１７４】
ステップＳ５１９では、ルールＮを構成するマトリックスのマトリックスデータであって、ルールＮ以外のルールが先頭ルールとなっているマトリックスデータが表わす領域をある次元Ｏ）について縮小できるか否か、すなわちルールＮをある次元Ｏについて縮小できるか否かを調べる。縮小できない場合には、処理はステップＳ５１６に移行し、縮小できる場合には、処理はステップＳ５２０に移行する。【０１７５】
ここで、縮小について説明する。次元Ｏは、ルールの条件部分に記述されるいずれかの属性を意味する。ルールＮを次元Ｏについて縮小するとは、次元Ｏが示す属性の範囲を狭めることにより、ルールＮの条件部分の属性を変更することである。以下に、具体例を示す。図３９は、縮小の具体例を示す説明図である。図３９では、ルールＲ１，Ｒ２を模式的に示している。例３９０Ａに示すように、Ｒ１方がＲ２よりも優先順位が高いものとする。ルールＲ１の条件部分が示す第１属性の範囲は「７〜１０」であり、第２属性の範囲は「２〜７」である。同様に、ルールＲ２の条件部分が示す第１属性の範囲は「１〜８」であり、第２属性の範囲は「３〜６」である。この場合、グラフ３９０Ｂにおいて斜線部で示した属性の範囲に当てはまるパケットに対しては、ルールＲ１が先に適用され、ルールＲ２に関しては適用されることがない。そこで、ルールＲ２の第１属性の範囲を「１〜８」から、「１〜７」に狭めるように修正することで、例３９０Ｃに示すように、ルールＲ２中の適用されることがない不要な領域をなくすことができる。このような属性の範囲の修正が、「縮小」に該当する。本例では、第１属性が次元Ｏに該当し、第１属性についてルールＲ２を縮小していることになる。このような縮小を行っても、ルールＲ１，Ｒ２全体としての意味は変わらない。すなわちパケットフィルタリングの動作は変わらない。【０１７６】
図３９では、２次元空間で表わした模式図を用いて説明したが、属性の数が３つ以上であっても、同様に縮小処理を行える。図４０も縮小の具体例を示す説明図である。図４０では、第１属性から第３属性までの各属性の範囲によって表わされるマトリックスを模式的に示している。図４０において（ａ）に示す２つのルールＲ７２，Ｒ７１があったとする。ここでは、Ｒ７１の優先順位の方がＲ７２よりも高いものとする。そして、（ｂ）に示すように、各ルールＲ７１，Ｒ７２の条件部分の属性が示す範囲は一部において重なっているものとする。（ｃ）では、ルールＲ７２の条件部分の属性が示す範囲のうち、ルールＲ１の条件部分の属性が示す範囲と重なる範囲に、多数の点を描画した模様を付してＲ７２を示している。この模様を付した領域は、ルールＲ７１と重複し、ルールＲ７１の方が優先順位が高いため、この領域に当てはまるパケットに対しては、ルールＲ７２が適用されることはない。よって、ルールＲ７１の条件部分が示す属性のうち、第１属性すなわち図４０に示すＸ軸に対応する属性の範囲を狭めることにより、Ｒ７２を縮小することができる。【０１７７】
なお、図３９、図４０では、それぞれ、２次元空間、３次元空間における模式図を用いて説明した。属性の種類が、ソースアドレス、ソースポート、デスティネーションアドレス、デスティネーションポート、プロトコルの５種類である場合、ルールの条件部分の属性が示す範囲は、５次元空間の範囲となる。以下、説明を簡単にするため、２次元空間や３次元空間における範囲で説明する。【０１７８】
次に、縮小可能な場合と縮小不可能な場合とを比較して説明する。あるルールの条件部分が示す属性の範囲のうち、他のルールの属性の範囲との重複領域を除いた領域が、矩形状態になっていれば、そのルールは縮小可能である。ここで、矩形状態とは、各属性の範囲が、開始点及び終了点のペアによって表わされる状態を意味する。すなわち、矩形状態とは、各属性の範囲が、（Ａ１，Ａ２，Ｂ１，Ｂ２，Ｃ１，Ｃ２，Ｄ１，Ｄ２，Ｅ１，Ｅ２，…）のように表わすことができる状態を意味する。図４１Ａは縮小可能な状態を示し、図４１Ｂは縮小不可能な場合を示している。図４１Ａに示すルールＲ５２は、その領域の一部（７、９、３、１０、後略）をＲ５１により隠されており、この部分を除いた領域（１、７、３、１０、後略）は矩形状態になっている。すなわち、（１，７，３，１０）という開始点及び終了点のペアによって表わすことができる。この場合、領域（１、７、３、１０、後略）における第２属性の範囲は、元々のルールで指定されていた第２属性の範囲３〜１０と一致している。なお第３属性以降においても一致しているものとする。この場合、第１属性についてルールＲ５２を縮小することが可能であり、具体的にはＲ５２の領域を（１、７、３、１０、後略）に縮小することが可能である。ここでは、第１属性の範囲を１〜９から１〜７に修正している。図４１Ｂに示すルールＲ６２は、その領域の一部（７、９、３、８、後略）がＲ６１により隠されているが、この部分を除いたＲ６２の領域は矩形状態になっていない。すなわち、（Ａ１，Ａ２，Ｂ１，Ｂ２，…）という開始点及び終了点のペアによって表わすことができない。図４１Ｂに示す例では、ルールＲ６２を縮小することができない。【０１７９】
図４０で示したルールＲ７１，Ｒ７２の重複領域が、図４２に示す領域２５０であるとする。図４２において、白色領域で示したマトリックスのマトリックスデータにおける先頭ルールはＲ７２である。一方、模様を付した領域によって示したマトリックスのマトリックスデータにおける先頭ルールはＲ７１である。ルール７２の条件部分が示す属性の範囲のうち、他のルールの属性の範囲との重複領域２５０を除いた領域は、矩形状態になっていない。すなわち、（Ａ１，Ａ２，Ｂ１，Ｂ２，…）という開始点及び終了点のペアによって表わすことができない。よって、図４２に示す例では、ルールＲ７２を縮小することができない。一方、図４０において（ｃ）で示した例では、ルール７２の条件部分が示す属性の範囲のうち、他のルールの属性の範囲との重複領域は矩形状態となっている。すなわち、（Ａ１，Ａ２，Ｂ１，Ｂ２，…）という形式で属性の範囲を表わすことができる。よって、図４０の（ｃ）に示す例では、Ｒ７２を縮小可能である。【０１８０】
あるルールの条件部分が示す属性の範囲のうち、他のルールの属性の範囲との重複領域を除いた領域を残り領域と呼ぶことにする。この残り領域が矩形状態である場合、各軸の無限大方向及び無限小方向から残り領域を見た場合、全て矩形状態となる。図４３は、残り領域が矩形状態である場合に、各軸の無限大方向及び無限小方向から残り領域を見た状況を示す説明図である。図４３に示す例では、残り領域が（１，３，１，４，１，４）と表わされる。図４３に示すように、いずれの方向から見ても、矩形状態になっている。例えば、Ｙ軸及びＺ軸（あるいは、Ｘ軸及びＹ軸、Ｘ軸及びＺ軸）に対応する２つの属性の範囲が開始点及び終了点のペアで表わせる状態になっている。図４４は、残り領域が矩形状態でない場合に、各軸の無限大方向及び無限小方向から残り領域を見た状況を示す説明図である。図４４に示す例では、残り領域が開始点及び終了点のペアの並びによって表わすことができず、例えば（１，３，１，４，１，４）、（３，４，１，２，１，４）及び（３，４，２，４，１，２）という領域の組み合わせでなければ表わすことができない。この場合、図４４に示すように、Ｘ軸、Ｙ軸、Ｚ軸それぞれの無限大方向から残り領域を見た場合、矩形状態とはならない。【０１８１】
ステップＳ５１９において、ルールＮをある次元Ｏについて縮小できるか否かを調べる場合、例えば、以下のように調べればよい。ルール削除部１７０は、ルールＮを構成するマトリックスのマトリックスデータであって、ルールＮ以外のルールが先頭ルールとなっているマトリックスデータが表わす領域すなわち重複領域において、次元Ｏに対応する属性以外の全属性が元々ルールＮで指定されていた属性の範囲と一致している範囲が存在するかを調べればよい。そのような領域が存在するならば、その領域をなくすように次元Ｏに対応する属性の範囲を狭め、ルールを縮小することができる。【０１８２】
なお、フィルタリングルールは、全ての属性（次元）について開始点と終了点の組み合わせで条件を記述するため、縮小後のルールの条件部分においても各属性は開始点と終了点の組み合わせで記述されなければならない。このとき、縮小後のルールの条件部分に含まれる属性の中から任意の２つの属性を取り出した場合、その２つの属性は矩形状態になっている。言い換えれば、その２つの属性に対応する軸、例えば前述のＸ軸、Ｙ軸等が互いに直交するという仮定のもとでは、取り出された２つの属性は矩形をなすことになる。【０１８３】
ステップＳ５２０において、ルール削除部１７０は、ルールＮにおける属性の範囲を狭めるようにそのルールＮを修正すなわち縮小する。そして、ルール削除部１７０は、元々バッファに記憶されていたルールＮと、修正したルールとを入れ替える。図４５は、ルール削除部１７０が、ルールを縮小できるかどうかを判定し、ルールを縮小する場合を２次元空間で模式的に示した説明図である。図４５では、ルールの重複部分を斜線で示している。ルール削除部１７０は、ルールＮにおける他のルールとの重複部分（図４５に示す斜線部分）を判定する。この重複分には、Ｘ軸に対応する属性以外の全属性、ここではＹ軸に対応する属性が、元々ルールＮで指定されていた属性の範囲と一致している部分が含まれる。すなわち、図４５に示す右側２列分のマトリックスにおいて、Ｙ軸に対応する範囲は、元々ルールＮで指定されていた範囲と一致する。従って、ルール削除部１７０は、縮小可能と判定し、図４５に示す右側２列分のマトリックスをなくすように、Ｘ軸に対応する属性の範囲を狭めて、ルールＮを修正する。【０１８４】
図４６は、ルール削除部１７０が、ルールを縮小できるかどうかを判定し、ルールを縮小する場合を３次元空間で模式的に示した説明図である。図４６では、多数の点を描画した模様を付すことによってルールの重複部分を表わしている。まず、図４６の上段に模式的に示したルールについて説明する。ルール削除部１７０は、このルールにおける他のルールとの重複部分を判定する。この重複部分では、Ｘ軸に対応する属性以外の全属性、ここではＹ軸、Ｚ軸に対応する各属性が、元々ルールＮで指定されていた属性の範囲と一致している。従って、ルール削除部１７０は、縮小可能と判定する。そして、図４６の上段において、模様を付して示したマトリックスをなくすように、Ｘ軸に対応する属性の範囲を狭めて、ルールＮを修正する。次に、図４６の下段に模式的に示したルールについて説明する。この場合、重複部分において、Ｘ軸に対応する属性以外の全属性、ここではＹ軸、Ｚ軸に対応する各属性が、元々ルールＮで指定されていた属性の範囲と一致しているような領域は存在しない。従って、ルール削除部１７０は、縮小不可能と判定し、ステップＳ５２０の縮小処理を行わずにステップＳ５１６に移行する。【０１８５】
図３７に示すステップＳ５１６から始まってステップＳ５１６に戻るループ処理を繰り返すことにより、Ｏｖｅｒｌａｐｐｅｄなルールのうち、縮小可能なルールがバッファにおいて入れ替えられる。【０１８６】
ステップＳ５１６において、バッファに記憶されているルール集合中のデフォルトルール以外のルールのうち、未選択のルールが残っていないと判定されて、「いいえ」の側に処理が分岐した場合、ルール削除部１７０は、ステップＳ５２１において、バッファの内容、具体的にはルールの集合や、削除したルールの情報、縮小したルールの情報を出力装置９３０から出力する。【０１８７】
なお、図３５から図３７に示すルール削除部１７０の処理手順は単なる一例であり、同様の結果を得るために他の処理手順を採用することも可能である。ここでは、ルール集合が１組存在する場合を例に動作の説明を行ったが、第３の実施形態のように、２組以上の任意のルール集合が存在していてもよい。そして、複数の各ルール集合について、ルールの削除や縮小を行ってもよい。【０１８８】
次に、具体例を用いて、第５の実施形態のフィルタリングルール分析システムの動作を説明する。ここでは、ルール集合として、図４７に示すＲ１〜Ｒ９からなるルール集合が入力されてルール記憶部１１０に記憶され、このルール集合に基づいてマトリックス空間データが作成され、マトリックス空間記憶部１２０に記憶されているものとする。マトリックス空間データをマトリックス空間記憶部１２０に記憶するまでの処理は、第１の実施形態と同様である。図４８は、図４７に示すルール集合を２次元空間に模式的に示した説明図である。【０１８９】
ルール削除部１７０の処理について図４７及び図４８に例示したルール集合を用いて説明する。まず、ルール削除部１７０は、ステップＳ５０１において、ルール記憶部１１０に記憶されているルール集合をバッファにコピーし、デフォルトルールであるＲ９（図４７参照）以外の８個の各ルールの中に未選択のものがあれば、ステップＳ５０２の後ステップＳ５０３に移行し、未選択のルールを降順に１つずつ選択する。すなわち、ステップＳ５０２から始まるループ処理では、ステップＳ５０３に処理が移行する度に、Ｒ８，Ｒ７，…，Ｒ１の順にルールが１つずつ選択される。ステップＳ５０３で選択されたルールをＩとする。ルール削除部１７０が最初にステップＳ５０３に移行してルールを選択した場合、ルール８を選択するので、ルールＲ８がルールＩとなる。ステップＳ５０４では、ルール削除部１７０は、ルールＩ（Ｒ８）を構成するマトリックスに対応するマトリックスデータのうち、先頭ルールがルールＲ８となっていないマトリックスデータを列挙する。ルール８を構成する各マトリックスに対応するマトリックスデータでは、いずれも先頭ルールがＲ６またはＲ７となっている。従って、ルール削除部１７０は、ステップＳ５０５において「はい」の側に分岐し、ステップＳ５０６において、ルールＩ（ここではＲ８）を削除する。【０１９０】
再びステップＳ５０３に移行してルール削除部１７０がルールＲ７を選択した場合、ルールＲ７を構成するマトリックスに対応するマトリックスデータには、先頭ルールがＲ７になるものが存在する。従って、ルール削除部１７０は、ステップＳ５０５では「いいえ」の側に分岐し、ステップＳ５０２に移行する。再びステップＳ５０３に移行してルールＲ６を選択した場合も同様である。【０１９１】
再びステップＳ５０３に移行してステップ削除部１７０がルールＲ５を選択した場合、ルールＲ５を構成するマトリックスに対応する全てのマトリックスデータで、先頭ルールがＲ５以外のルール、具体的にはＲ３になっている。従って、ルール削除部１７０は、Ｒ８選択時と同様にステップＳ５０５で「はい」の側に分岐し、ステップＳ５０６においてＲ５を削除する。以降、ステップＳ５０３で、Ｒ４〜Ｒ１を選択した場合には、ルール削除部１７０は、Ｒ７選択時と同様にステップＳ５０５で「いいえ」の側に分岐し、ステップＳ５０２に移行する。Ｒ１を選択後、再びステップＳ５０２に移行したときには、ルールが残っていないので、処理はステップＳ５０７に移行する。そして、ルール削除部１７０は、削除されなかったルールのチェックをリセットする。ここまでの処理において、ルールＲ８，Ｒ５が削除され、ルールＲ１〜Ｒ４，Ｒ６，Ｒ７，Ｒ９が残っている。このルール集合（Ｒ１〜Ｒ４，Ｒ６，Ｒ７，Ｒ９）を模式的に表わすと、図４９に示すようになる。ステップＳ５０７の後、処理はステップＳ５０８に移行する。【０１９２】
ルール削除部１７０は、ステップＳ５０８において、このルール集合に含まれる７個のルールのうち、デフォルトルールＲ９以外の６個のルールの中に未選択のものが残っていれば、ステップＳ５０９に移行する。ステップＳ５０９に移行するごとに、ルール削除部１７０は、その６個のルールを降順に、ここではＲ７，Ｒ６，Ｒ４，Ｒ３，…の順に、１つずつ選択する。ステップＳ５０９で選択されたルールをＫとする。最初にステップＳ５０９に移行してルールを選択した場合、ルール削除部１７０はルールＲ７を選択するので、ルールＲ７がルールＫとなる。次に、ステップＳ５１０において、ルール削除部１７０は、「ルールが、ルールＫを構成するマトリックスに完全に含まれるルールである」という第１の条件、「ルールに対応する各マトリックスデータ全てにおいて、そのルール自身が先頭ルールになっていること」という第２の条件、及び「ルールのアクションがルールＫのアクションと同一であること」という第３の条件を満足するルールを列挙する。ルールＲ７がルールＫであるとき、第１の条件を満たすルールは、Ｒ１，Ｒ２である。このうち、Ｒ２は第２の条件を満足しない。Ｒ１は、第２の条件及び第３の条件も満足する。従って、この場合、ルール削除部１７０は、Ｒ１を選択する。よって、ステップＳ５１０で列挙されたルールの集合Ｌには、ルールＲ１のみが含まれることになる。【０１９３】
次に、ルール削除部１７０がステップＳ５１１の判定を行った場合、ルール集合Ｌ内にルールＲ１が選択されずに残っているので、「はい」の側に分岐して、ステップＳ５１２において、ルール集合ＬからルールＲ１を１つ選択する。ステップＳ５１２で選択されたルールをＭとする。次のステップＳ５１３において、ルール削除部１７０は、優先順位がルールＫ（ここではＲ７）と、ルールＭ（ここではＲ１）との間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールを検索する。この場合、Ｒ２が検索される。そして、ルール削除部１７０は、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールのアクションと、ルールＭのアクションとが一致しているか否かを判定する。ここでは、ルールＭ（Ｒ１）を構成する各マトリックスのうち、一部のマトリックスでは、ルールＭより優先度が１つ低いルールはＲ２であり、残りのマトリックスでは、ルールＭより優先度が１つい低いルールはＲ７である（図４９参照）。そして、ルールＲ２，Ｒ７のアクションは、いずれもルールＭ（Ｒ１）のアクションと一致する。従って、ルール削除部１７０は、ステップＳ５１３で「はい」の側に分岐し、ステップＳ５１４においてルールＲ１を削除し、ステップＳ５１１に移行する。ルール集合Ｌ内には未選択のルールが残っていないので、処理は、ステップＳ５１１では「いいえ」の側に分岐し、ステップＳ５０８に移行する。【０１９４】
次に、ルール削除部１７０は、ステップＳ５０９においてＲ６を選択し、Ｒ６をルールＫとする。次に、ステップＳ５１０において、ルール削除部１７０は、「ルールが、ルールＫを構成するマトリックスに完全に含まれるルールである」という第１の条件、「ルールに対応する各マトリックスデータ全てにおいて、そのルール自身が先頭ルールになっていること」という第２の条件、及び「ルールのアクションがルールＫのアクションと同一であること」という第３の条件を満足するルールを列挙する。ルールＲ６がルールＫである場合、第１の条件を満たすルールは、Ｒ３，Ｒ４である。このうち、Ｒ４は第２の条件を満足しない。Ｒ３は、第２の条件及び第３の条件も満足する。よって、ステップＳ５１０で列挙されたルールの集合Ｌには、ルールＲ３のみが含まれる。【０１９５】
次に、ルール削除部１７０がステップＳ５１１の判定を行った場合、ルール集合Ｌ内にルールＲ３が選択されずに残っているので、処理は「はい」の側に分岐し、ステップＳ５１２においてルール集合ＬからルールＲ３が１つ選択される。次のステップＳ５１３において、ルール削除部１７０は、優先順位がルールＫ（ここではＲ６）とルールＭ（ここではＲ３）との間のルールであって、条件部分に記述された属性の示す範囲がルールＭの条件部分に記述された属性が示す範囲と一部でも重複するルールを検索する。この場合、Ｒ４が検索される。そして、ルール削除部１７０は、ルールＭを構成する各マトリックスにおいて、ルールＭよりも優先順位が１つ低いルールのアクションと、ルールＭのアクションとが一致しているか否かを判定する。ここでは、ルールＭ（Ｒ３）を構成する各マトリックスのうち、一部のマトリックスでは、ルールＭより優先度が１つ低いルールはＲ４となる（図４９参照）。そして、ルールＲ４のアクションはルールＲ３のアクションと一致しない。従って、ルール削除部１７０は、ステップＳ５１３における「いいえ」の側に分岐して、ルールＭ（Ｒ３）を削除せずに、ステップＳ５１１に移行する。ルール集合Ｌ内には未選択のルールが残っていないので、処理はステップＳ５１１の「いいえ」の側に分岐し、ステップＳ５０８に移行する。【０１９６】
続いてルール削除部１７０がステップＳ５０９においてルールＲ４を選択して、Ｒ４をルールＫとした場合、「ルールが、ルールＫを構成するマトリックスに完全に含まれるルールである」という第１の条件、「ルールに対応する各マトリックスデータ全てにおいて、そのルール自身が先頭ルールになっていること」という第２の条件、及び「ルールのアクションがルールＫのアクションと同一であること」という第３の条件を満足するルールは存在しない。よって、ステップＳ５１０の処理によって得られるルールの集合Ｌは空集合である。従って、ステップＳ５１１では、ルール削除部１７０は、ルール集合Ｌにルールは残っていないと判定して「いいえ」の側に分岐し、再びステップＳ５０８に移行する。以降、ステップＳ５０９でＲ３，Ｒ２が選択された場合の動作は、Ｒ４が選択された場合の動作と同様である。なお、Ｒ１は削除済みであるので、ステップＳ５０９でＲ１が選択されることはない。【０１９７】
ルールＲ２をルールＫとして選択した後、再度ステップＳ５０８に移行した場合、未選択のルールは残っていないので、ルール削除部１７０の処理はステップＳ５１５に移行する。ルール削除部１７０は、ステップＳ５１５において、ステップＳ５０８から始まるループ処理で削除されなかったルールのチェックをリセットする。ステップＳ５１５終了時において、バッファに記憶されているルール集合（Ｒ２〜Ｒ４，Ｒ６，Ｒ７，Ｒ９）を模式的に表わすと、図５０に示すようになる。ステップＳ５１５の後、処理はステップＳ５１６に移行する。【０１９８】
ルール削除部１７０は、ステップＳ５１６において、このルール集合に含まれるルールのうち、デフォルトルールＲ９以外の５個のルールの中に未選択のものが残っていれば、「はい」の側に分岐して、ステップＳ５１７に移行する。ステップＳ５１７に移行するごとに、ルール削除部１７０は、その５個のルールを降順に、ここでは、Ｒ７，Ｒ６，Ｒ４，Ｒ３，Ｒ２の順に１つずつ選択する。ステップＳ５１７で選択されたルールをＮとする。最初にステップＳ５１７に移行してルールが選択された場合、ルールＲ７が選択されるので、ルールＲ７がルールＮとなる。次に、ルール削除部１７０は、ステップＳ５１８において、ルールＮ（ここではＲ７）を構成するマトリックスのマトリックスデータにおいて、ルールＮ以外のルールが先頭ルールとなっているものがあるか否かを判定する。ルールＲ７のマトリックスデータの中には、Ｒ１，Ｒ２，Ｒ６を先頭ルールとするものがあるので、処理は、ステップＳ５１８では「はい」の側に分岐し、ステップＳ５１９に移行する。【０１９９】
ステップＳ５１９では、ルール削除部１７０は、ルールＮをある次元（属性）について縮小できるか否かを判定する。例えば、ルール削除部１７０は、ルールＮを構成するマトリックスのマトリックスデータであって、ルールＮ以外のルールが先頭ルールとなっているマトリックスデータが表わす領域すなわち重複領域において、ある次元Ｏに対応する属性以外の全属性が元々ルールＮで指定されていた属性の範囲と一致している範囲が存在するかを調べればよい。そのような範囲があれば、次元ＯについてルールＮを縮小できる。ルールＮ（Ｒ７）を構成するマトリックスのマトリックスデータであって、ルールＮ以外のルールＲ６が先頭ルールとなっているマトリックスデータが表わす領域（７，８，３，１１，後略）に着目する。この領域における第２属性の範囲は、３〜１１であり、元々Ｒ７において第２属性の範囲として指定されていた３〜１１と一致する。同様に、第３属性以降に関しても一致しているものとする。すると、第１属性以外の全ての属性に関して領域（７，８，３，１１，後略）の範囲と、元々Ｒ７において指定されていた範囲は全て一致する。よって、ステップＳ５１９において、ルール削除部１７０は、Ｒ７を第１属性について縮小可能であると判定し、「はい」の側に分岐してステップＳ５２０に移行する。ステップＳ５２０では、ルール削除部１７０は、上記の領域（７，８，３，１１，後略）をなくすように、ルールＲ７の第１属性の範囲を元々の“１〜８”から“１〜７”に修正する。この結果、ルールＲ７は、第１属性について縮小されることになる。その後、処理はステップＳ５１６に移行する。【０２００】
次に、ステップＳ５１７でＲ６を選択した場合、ステップＳ５１８の判定では「はい」側に分岐することになる。しかし、ルールＲ６を構成するマトリックスのマトリックスデータであって、ルールＲ６以外のルールが先頭ルールとなっているマトリックスデータが表わす領域、すなわち重複領域において、ある属性以外の全属性が元々ルールＲ６で指定されていた属性の範囲と一致しているような範囲は存在しない。したがって、処理は、ステップＳ５１９において「いいえ」側に分岐し、Ｒ６を縮小せずにステップＳ５１６に移行することになる。次に、ステップＳ５１７でＲ４が選択された場合の動作は、Ｒ６が選択された時と同様である。【０２０１】
次に、ステップＳ５１７においてルール削除部１７０がＲ３を選択した場合、ルールＮ（ここではＲ３）を構成するマトリックスのマトリックスデータにおいて、ルールＮ以外のルールが先頭ルールとなっているものはない。したがって、ステップＳ５１８では処理は「いいえ」側に分岐し、Ｒ３を縮小せずにステップＳ５１６に移行する。次に、ステップＳ５１７でＲ２が選択された場合の動作は、Ｒ３が選択された時と同様である。以上の処理が終了した時点におけるルール集合（Ｒ２，Ｒ３，Ｒ４，Ｒ６，Ｒ７，Ｒ９）を模式的に示すと、図５１に示すようになる。【０２０２】
Ｒ２が選択された後、処理がステップＳ５１６に移行した場合、ルールは残っていないので、ルール削除部１７０は、ステップＳ５１６の「いいえ」側に分岐し、ステップＳ５２１において、バッファに記憶されているルールの集合や、削除したルールの情報、縮小したルールの情報を出力装置９３０から出力し、処理を終了する。出力装置９３０がディスプレイ装置であり、バッファに記憶されているルールの集合や、削除したルールの情報、縮小したルールの情報を表示出力する場合の表示例を図５２に示す。【０２０３】
ルール削除部１７０による処理結果、すなわちバッファに残っているルール集合、削除したルールの情報、縮小したルールの情報の出力態様は、特に限定されるものではなく、表示出力や音声出力であってもよいし、あるいはファイルとして出力してもよい。また、ルール分析システム１００と通信ネットワークを介して接続される別システムに出力装置９３０を設け、その別システムにおいてルール削除部１７０による処理結果を出力してもよい。この場合、ルール分析システム１００と通信ネットワークを介して接続される別システムの利用者に処理結果を知らせることができる。【０２０４】
上記の例では、図５１と図５２に示すようにルールＲ２は削除されない。本来は、ルールＲ１が削除されたのと同じ理由でＲ２も削除されるべきである。図３５〜図３７に示すルール削除部１７０の処理手順ではＲ２は削除できない。しかし、ステップＳ５０８から始まりステップＳ５０８に戻るループ処理を、削除可能なルールが存在しなくなるまで繰り返したり、ステップＳ５１６で「いいえ」側に分岐した場合に、再度ステップＳ５０２から処理をやり直し、ルールの削除や修正が行われなくなるまで、ステップＳ５０２以降の処理を繰り返してもよい。このように、ルール削除部１７０による処理を繰り返せば、図５１に示すＲ２のように残ったルールを容易に削除できる。【０２０５】
次に、第５の実施形態のフィルタリングルール分析システムの利点について説明する。第５の実施形態のフィルタリングルール分析システムによれば、どれほど複雑なフィルタリングルールであっても、不要なルールの削除や冗長なルールの修正ができる。その理由は、ルールをマトリックス空間データに変換して、任意のルールを構成するマトリックスを網羅的に調査することで、別のルールによって完全に隠されたルールを削除したり、別のルールによって一部隠されたルールを修正するからである。【０２０６】
第５の実施形態における上述した縮小方法では、ルールの数は変わらない。例えば、図５０は縮小前のルールを示し、図５１は縮小後のルールを示しているが、いずれもルールの数は６個であり、Ｒ７の縮小前後でルールの数は変わっていない。ルール削除部１７０は、１つのルールを構成するマトリックスごとにそのルールを分割して、複数のルールを生成し、他のルールに隠されることになるルールを削除することによって、縮小と同様の結果を得てもよい。図５３は、この場合の例を示す説明図である。ルールＲ３は、一部の領域を、より優先度の高いルールＲ１，Ｒ２によって隠されている。Ｒ３とＲ１との重複領域における各属性の範囲は、元々Ｒ３で指定されていた属性の範囲と一致しない。よって、既に説明した縮小方法では、Ｒ３とＲ１との重複領域をなくすようにＲ３を縮小することはできない。同様に、Ｒ３とＲ２との重複領域をなくすようにＲ３を縮小することはできない。そこで、ルール削除部１７０は、ルールＲ３を構成するマトリックスごとにルールＲ３を分割してもよい。図５３に示す例では、ルールＲ３は９個のマトリックスから構成される。よって、ルール削除部１７０は、ルールＲ３から９個のルールを作成する。この９個のルールのうち、１つのルールはＲ１によって隠され、別の１つのルールはＲ２によって隠される。ルール削除部１７０は、分割したルールのうち、他のルールによって隠されるルールを削除すればよい。すると、ルールＲ３の領域のうちルールＲ１，Ｒ２との重複領域をなくすようにルールＲ３を縮小したことになる。ただし、ルールＲ３を分割して９個のルールを作成し、そこから２個のルールを削除しているので、元々Ｒ３であったルールとして７個のルールが残る。従って、この縮小方法では、ルールの数は増加する。【０２０７】
第６の実施形態：
次に本発明の第６の実施形態のフィルタリングルール分析システムを説明する。第６の実施形態のフィルタリングルール分析システムを示す図５４においては、第１の実施形態におけるものと同様の構成要素については、図１におけるものと同一の参照符号を付し、重複する説明を省略する。第６の実施形態のフィルタリングルール分析システムは、図１に示すものと同様のものであるが、ルール分析システム１００において重なり分析部の代わりに頻度分析部１８０とルール化部１９０とが設けられている点で、第１の実施形態のものと異なっている。ルール分析システム１００には、パケット履歴９５０も入力されるようになっている。パケット履歴９５０は、実際にパケットフィルタリング処理を実行しているネットワークシステム内でパケットフィルタリング処理の対象となったパケット、換言すれば、ネットワークシステム内においてパケットフィルタリング処理を行う機器に実際に到達したパケットについての履歴情報である。ただし、このパケット履歴９５０（パケットの履歴情報）には、実際にパケットフィルタリング処理の対象となった各パケットの属性の情報が含まれていればよく、各パケットのペイロード部分の情報については含まれていなくてもよい。パケット履歴９５０には、実際にパケットフィルタリング処理の対象となった一定量分のパケットの情報が含まれていればよい。【０２０８】
頻度分析部１８０は、パケット履歴９５０が入力され、実際にパケットフィルタリング処理の対象となったパケットの属性を参照する。そして、頻度分析部１８０は、生成済みのマトリックスデータに対し、マトリックスデータの属性の範囲に含まれるパケットの数を示すパケットの頻度の情報を付加する。【０２０９】
ルール化部１９０は、頻度の情報が付加されマトリックスデータに基づいて、実際にパケットフィルタリング処理の対象となったパケットに応じたルールを作成する。そして、そのルールを用いて、新たなルール集合を作成する。【０２１０】
頻度分析部１８０及びルール化部１９０は、例えば、プログラムに従って動作するＣＰＵによって実現される。なお、プログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。【０２１１】
次に、第６の実施形態のフィルタリングルール分析システムの動作について説明する。なお、第１の実施形態と同様の動作については、その詳細な説明を省略する。マトリックス空間記憶部１２０にマトリックス空間データが記憶されるまでの入力装置９２０、マトリックス化部１３０の動作は、第１の実施形態の場合と同様である。【０２１２】
マトリックス空間記憶部１２０にマトリックス空間データが記憶された後、頻度分析部１８０は、パケット履歴９５０に含まれる各パケットの情報を順に入力される。頻度分析部１８０は、パケット履歴９５０に含まれる各パケット、具体的には各パケットの属性を１つずつ調べ、マトリックスデータに頻度情報を付加する。図５５は、頻度分析部１８０による処理の一例を示している。まず、頻度分析部１８０は、ステップＳ６０１において、マトリックス空間記憶部１２０に記録されているマトリックス空間データに含まれる全てのマトリックスデータに対して、頻度情報の初期値を付加する。ここでは、頻度分析部１８０は、全てのマトリックスデータの最後尾に、頻度情報の初期値として“０”を追加すればよい。【０２１３】
次に、頻度分析部１８０は、パケット履歴９５０から１つずつパケットを選択してステップＳ６０２〜Ｓ６０５の一連の処理を行うことを繰り返し、パケット履歴９５０に含まれる全てのパケットに対してこの一連の処理を行う。【０２１４】
頻度分析部１８０は、ステップＳ６０２において、パケット履歴９５０に未選択のパケットが残っているか否かを判定する。パケットが残っている場合、頻度分析部１８０は、ステップＳ６０３において、パケット履歴９５０の中から未選択のパケットを選択する。ステップＳ６０３で選択したパケットをＰＫとする。頻度分析部１８０は、ステップＳ６０４において、パケットＰＫを含むマトリックス、すなわち属性の範囲内にパケットＰＫの属性を含むマトリックスデータをマトリックス空間データの中から選択する。ステップＳ６０４で選択したマトリックスデータをＭＴＲとする。そして、頻度分析部１８０は、ステップＳ６０５において、選択したマトリックスデータＭＴＲの頻度情報に１を加算し、ステップＳ６０２に移行する。一方、ステップＳ６０２において、パケットが残っていないと判定した場合、頻度分析部１８０は処理を終了する。【０２１５】
以上の処理によって、各マトリックスにどれだけのパケットが含まれるのか、換言すると、各マトリックスデータの属性の範囲内に属性が含まれるパケットがどれだけ存在するのかが、頻度情報としてマトリックスデータの最後尾に付加されることになる。【０２１６】
頻度分析部１８０によってマトリックスデータに頻度情報が付加されると、次にルール化部１９０が新たなルール集合を作成する。ルール化部１９０による新たなルール集合の作成処理方法として、ここでは２種類の異なる方法を示す。これらの方法は、図５６及び図５７にそれぞれ示されている。ただし、ルール化部１９０による処理は、この２種類の方法に限定されるものではなく、ルール化部１９０は、他の方法によってルール集合を作成してもよい。【０２１７】
図５６は、ルール化部１９０による新たなルール集合作成処理の一例を示している。この方法では、まず、ルール化部１９０は、ステップＳ７０１において、ルール記憶部１１０に記憶されているルール集合を、バッファ（不図示）にコピーする。ステップＳ７０１でバッファにコピーされたルール集合をＴとする。続いて、ルール化部１９０は、ステップＳ７０２において、マトリックス空間記憶部１２０に記憶されているマトリックスデータを、頻度情報の値の大きい順にソートし、次に、ステップＳ７０３において、変数Ｕの初期値を１に設定する。変数Ｕは、頻度情報の値の大きい順にソートされたマトリックスデータのうち、所定順位までのマトリックスデータを抽出するために用いる変数である。ルール化部１９０は、変数Ｕの値が予め定められた設定値以下である場合、ステップＳ７０４〜Ｓ７０７のループ処理を繰り返す。この予め定められた設定値は、上記の所定順位を示す値であり、マトリックスデータの総数未満の値として定められる。この設定値は、ルール分析システム１００の利用者またはルール分析システム１００によって予め設定される。【０２１８】
ステップＳ７０４〜Ｓ７０７のループ処理において、ルール化部１９０は、まずステップＳ７０４において、変数Ｕが予め定められた設定値以下であるか否かを判定する。変数Ｕが設定値以下であれば、ルール化部１９０は、ステップＳ７０５において、ステップＳ７０２でソートしたマトリックスデータの中からＵ番目のマトリックスデータを選択し、そのマトリックスデータをルールの形式に変換する。ステップＳ７０５での変換によって得られるルールをＶとする。マトリックスデータは、（領域、ルールリスト、頻度）という形式で記述されている。ルールは、（領域、アクション）という形式で記述される。従って、ステップＳ７０５では、ルール化部１９０は、マトリックスデータの領域すなわち各属性の範囲の部分を抽出し、その領域の後に、ルールリストの先頭ルールのアクションを追加することによって、ルールＶを作成すればよい。続いて、ルール化部１９０は、ステップＳ７０６において、ルール集合ＴのＵ番目のルールとしてルールＶを挿入し、挿入前にＵ番目以降であった各ルールの順位を順次１つずつ後ろにずらす。次に、ルール化部１９０は、ステップＳ７０７において、変数Ｕに１を加算し、ステップＳ７０４に移行する。【０２１９】
ステップＳ７０４において変数Ｕが設定を超えている場合、すなわちステップＳ７０４で「いいえ」の側に分岐した場合、処理は、ステップＳ７０８に移行する。ステップＳ７０８では、元のルール集合Ｔ、すなわちステップＳ７０１でコピーした状態のルール集合Ｔに含まれるルールのうち、不要なルールが削除される。ステップＳ７０１でのコピー時から存在するルールの削除条件は、以下の条件である。すなわち、ステップＳ７０１でのコピー時から存在するルール（Ｒ＿ｏｒｉｇｉｎａｌ）は、Ｒ＿ｏｒｉｇｉｎａｌを構成する全マトリックスのマトリックスデータから新たなルールが作成され、その新たに作成された全ルールがＲ＿ｏｒｉｇｉｎａｌよりも優先順位の高いルールとして挿入されていることを条件に、削除される。ルール化部１９０は、それぞれルールについてステップＳ７０１でのコピー時から上記の削除条件を満たしているかを判定し、削除条件を満たしているルールを削除する。そして、ルール化部１９０は、ステップ７０９において。ステップＳ７０８で不要なルールが削除されたルール集合Ｔを出力装置９３０から出力する。【０２２０】
図５７は、ルール化部１９０による新たなルール集合作成処理の他の例を示している。図５７に示す方法では、マトリックスデータの総数と同数のルールを作成する。図５７に示す方法では、図５６に示す方法のようなルール集合のコピー（ステップＳ７０１）やルールの削除（ステップＳ７０８）等の処理は行わない。図５７に示す方法では、まず、ステップＳ８０１において、ルール化部１９０は、マトリックス空間記憶部１２０に記憶されているマトリックスデータを、頻度情報の値の大きい順にソートする。この処理は、図５６のステップＳ７０２と同様である。次に、ルール化部１９０は、ステップＳ８０２において、空集合であるルール集合Ｗを準備する。次に、ルール化部１９０は、ステップＳ８０３において、ステップＳ８０１におけるソート結果の順に、すなわち頻度情報の値の大きい順に、各マトリックスデータを変換して新たなルールを作成し、そのルールを作成順にルール集合Ｗに追加する。ステップＳ８０３において、新たなルールを作成する処理は、図５６のステップＳ７０５においてルールＶを作成する処理と同様である。全てのマトリックスデータに基づいてルールを作成し、作成した各ルールをルール集合Ｗに追加した後、ルール化部１９０は、ステップＳ８０４において、ルール集合Ｗを出力装置９０２から出力する。【０２２１】
なお、図５５に示す頻度分析部１８０の処理手順は、単なる一例である。同様の結果を得るために他の処理手順を採用することも可能である。図５６や図５７に示すルール化部１９０の処理手順も、単なる一例である。同様の結果を得るために他の処理手順を採用することも可能である。ルール化部１９０は、図５６や図５７とは異なる処理手順によって、図５６や図５７に示す処理手順と同様の結果を得てもよい。【０２２２】
図５５や図５７に示すルール化部１９０の処理では、ステップＳ７０５やステップＳ８０３に示すように、マトリックスデータ単位にルール化を行っている。ルール化を行う前に、互いに隣接するマトリックスのマトリックスデータであって、頻度情報の値が近い複数のマトリックスデータを結合して、新たなマトリックスデータを作成し、そのマトリックスデータからルールを作成してもよい。結合後のマトリックスからルールを作成する処理は、ステップＳ７０５においてルールＶを作成する処理と同様である。マトリックスデータを結合する場合、例えば、以下の３つの条件を満たしていることを条件に結合すればよい。第１の条件は、マトリックス同士が隣接していて、結合によって得られるマトリックスの各属性を境界点のペアによって表わせることである。第２の条件は、結合しようとする各マトリックスデータの頻度情報の値が近いことである。すなわち、結合しようとする各マトリックスデータの頻度情報の最大値と最小値との差が所定の閾値以下であることである。第３の条件は、結合しようとする各マトリックスデータの先頭ルールのアクションが共通であることである。【０２２３】
例えば、図５８に示すような２次元のマトリックスの場合、マトリックス１，２は隣接していて、マトリックス１，２のマトリックスデータを結合した場合、各属性は境界点のペアによって表わすことができる。この例では、各属性は、０及び２というペア、及び１及び２というペアで表わすことができる。従って、マトリックス１，２に関しては第１の条件を満たす。マトリックス１，２の各マトリックスデータの頻度情報の値の差が所定の閾値以下であれば、第２の条件も満たす。マトリックス１，２のマトリックスデータの先頭ルールのアクションが共通であれば、第３の条件も満たす。この３つの条件が全て満たされていれば、ルール化部１９０は、マトリックス１，２のマトリックスデータを結合し、その結合により得られたマトリックスデータからルールを作成してもよい。なお、図５８に示すマトリックス３は、マトリックス１，２や、マトリックス４と隣接していないので、第３の条件を満たさない。従って、マトリックス１，２や、マトリックス４と結合することはできない。同様に、図５８に示すマトリックス４も、マトリックス１，２や、マトリックス３と結合することはできない。【０２２４】
本実施形態では、最終的に作成されるルールの数を制限してその範囲でマトリックスデータを結合してルールを作成してもよい。【０２２５】
次に、具体例を用いて、第６の実施形態のフィルタリングルール分析システムの動作を説明する。ここでは、ルール集合９１０（図５４参照）として、図５９に例示するルールＲ１，Ｒ２からなるルール集合が入力され、ルール記憶部１１０に記憶されているものとする。そのルール集合に基づいてマトリックス空間データが作成され、マトリックス空間記憶部１２０に記憶されているものとする。マトリックス空間データをマトリックス空間記憶部１２０に記憶するまでの処理は、第１の実施形態の場合と同様である。なお、図５９では、各ルールの模式図も示している。本例では、頻度分析部１８０は、図６０に例示するパケット履歴を入力するものとする。パケット履歴には、実際にパケットフィルタリング処理の対象となったパケットの属性の情報が含まれる。従って、この属性の情報は、各属性の値そのものを示し、例えば第１属性等の各属性の範囲を示すわけではない。図６０に示す例では、第１属性、第２属性の値そのものを示している。本例では、このようなパケットの情報がＨ１〜Ｈ１０００までの１０００個あるものとする。【０２２６】
図６１は、図５９に示すルール集合に基づいて作成されたマトリックスデータ２次元平面で表わした模式図である。作成されたマトリックスデータは、図６１に示すＭ１〜Ｍ９の９個のマトリックスに対応する。頻度分析部１８０は、作成された９個のマトリックスデータと、入力するパケット履歴（図６０参照）とを用いて、図５５に示す処理を実行する。その結果得られるマトリックスデータの例を図６２に示す。図５５に示す処理において、頻度分析部１８０は、図６２において下線で示すように、各マトリックスデータの最後尾に頻度情報を付加する。【０２２７】
ルール化部１９０は、図５６のステップＳ７０１において、ルール集合をバッファにコピーする。そして、ルール化部１９０は、図６２の下線部に示す頻度情報に基づいてマトリックスデータをソートし、図５６のステップＳ７０２において、各マトリックスデータに順位を付ける。図６２では、この順位も示している。本例では、ステップＳ７０４の判定で用いる設定値が２であるものとする。【０２２８】
図６３は、バッファにコピーされたルール集合Ｔの変化を示している。ステップＳ７０１でコピーされたときには、ルール集合Ｔは、図６３に示す状態Ｒ７０１となっている。【０２２９】
最初に処理がステップＳ７０４に移行したときの変数Ｕの値は１である。従って、変数Ｕは、設定値２以下であるので、ステップＳ７０４において処理は「はい」の側に分岐し、ルール化部１９０は、ステップＳ７０５において、順位が１（変数Ｕの値）であるマトリックスデータからルールＶを生成する。順位が１位であるマトリックスデータ、すなわち頻度情報の値が最も大きいマトリックスデータは、この場合、図６２に示すＭ４である。このマトリックスデータＭ４に基づいてルールＶを作成すると、ルールＶ＝（０、３、１、４、中略、Ｄ）となる。このルールＶは、マトリックスデータＭ４から領域すなわち各属性の範囲）の情報（０，３，１，４，…）を抽出し、先頭ルールＲ２のアクションＤ（図５９参照）を追加したすることによって作成したものである。次に、ルール化部１９０は、ルールＶを１番目のルールとしてルール集合Ｔに挿入し、ステップＳ７０６において、挿入前に１番目以降であった各ルールを１つずつ後ろにずらす。このときのルール集合Ｔの状態は、図６３に示す状態Ｒ７０２となる。続いて、ルール化部１９０は、ステップＳ７０７において、変数Ｕに１を加算しＵの値を２とする。【０２３０】
次にステップＳ７０４に移行したとき、変数Ｕの値は２であり、設定値２以下であるので、処理はステップＳ７０４の「はい」側に分岐し、ルール化部１９０は、ステップＳ７０５において順位が２（変数Ｕの値）であるマトリックスデータからルールＶを生成する。順位が２位であるマトリックスデータ、すなわち頻度情報の値が２番目に大きいマトリックスデータは、図６２に示すＭ７である。このマトリックスデータＭ７に基づいてルールＶを作成すると、ルールＶ＝（０，３，４，７，中略，Ｄ）となる。ルール化部１９０は、ステップＳ７０６において、このルールＶを２番目のルールとしてルール集合Ｔに挿入し、挿入前に２番目以降であった各ルールを１つずつ後ろにずらす。このときのルール集合Ｔの状態は、図６３に示す状態Ｒ７０３となる。ルール化部１９０は、ステップＳ７０７において、変数Ｕに１を加算しＵの値を３とする。【０２３１】
次にステップＳ７０４に移行したとき、変数Ｕの値は３であり、設定値２を超えているので、処理はステップＳ７０８に移行する。ステップＳ７０８において、ルール化部１９０は、ステップＳ７０１でのコピー時から存在するルールＲ１，Ｒ２（図５９参照）を削除するかどうかを判定し、削除すると判定されたルールをルール集合Ｔから削除する。Ｒ１を構成する全マトリックスのマトリックスデータから新たなルールが作成され、その新たに作成された全ルールがＲ１よりも優先順位の高いルールとして挿入されているわけでないので、Ｒ１は削除されない。同様に、Ｒ２も削除されない。よって、本例では、ステップＳ７０３ではルールは削除されない。【０２３２】
ここで、マトリックスデータＭ５における頻度情報の値が大きく、マトリックスデータＭ５に基づいて作成したデータをルールＲ１より優先順位の高いルールとして挿入していたと仮定する。すると、ルールＲ１を構成する全マトリックスのマトリックスデータＭ５から新たなルールを作成し、そのルールをＲ１より優先順位の高いルールとして挿入していることになる。ここでは、全マトリックスは１つのマトリックスである。この場合、ルール化部１９０は、ステップＳ７０８においてＲ１を削除すると判定し、Ｒ１を削除する。この場合、マトリックスデータＭ５に基づいて作成され挿入されたルールは、元から存在するＲ１と同一のルールである。この説明では、マトリックスデータＭ５の領域と、ルールＲ１の領域とが同一である場合を示したが、ルールを構成するマトリックスが複数ある場合でも、同様に、上記の「ステップＳ７０１でのコピー時から存在するルールＲ＿ｏｒｉｇｉｎａｌを構成する全マトリックスのマトリックスデータから新たなルールが作成され、その新たに作成された全ルールがＲ＿ｏｒｉｇｉｎａｌよりも優先順位の高いルールとして挿入されている」という条件を満たしていれば、ルールＲ＿ｏｒｉｇｉｎａｌを削除する。【０２３３】
ルール化部１９０は、ステップＳ７０８の後、ルール集合Ｔを出力装置９３０から出力する。本例では、ルール化部１９０は、図６３に示す状態Ｒ７０３のルール集合Ｔを出力する。【０２３４】
上述した説明では、図５６に示す処理手順にステップＳ７０８の処理を含めているが、ステップＳ７０８の処理の代わりに、第５の実施形態におけるルール削除部１７０がＣｏｎｃｅａｌｅｄなルールを削除する処理と同様の処理を行ってもよい。【０２３５】
ルール化部１９０は、図５６に示す処理ではなく図５７に示す処理を実行する場合、ステップＳ８０１において、図６２に示す各マトリックスデータをソートする。このソート結果における各マトリックスデータの順番は、図６２に示す通りである。ルール化部１９０は、ステップＳ８０３において、１番目のマトリックスデータＭ４から１番目のルールＲ１＝（０、３、１、４、中略、Ｄ）を作成し、ルール集合Ｗに追加し、同様に、２番目のマトリックスデータＭ７から２番目のルールＲ２＝（０，３，４，７，中略，Ｄ）を作成し、ルール集合Ｗに追加する。以下同様に、ルール化部１９０は、９番目のマトリックスデータから９番目のルールＲ９を作成し、ルール集合Ｗに追加する。この結果得られるルール集合Ｗを図６４に示す。ステップＳ８０４において、ルール化部１９０は、図６４に示すルール集合Ｗを出力装置９３０から出力する。【０２３６】
ルール化部１９０による処理結果、すなわち作成されたルール集合の出力態様は、特に限定されるものではなく、表示出力や音声出力であってもよいし、あるいはファイルとして出力してもよい。また、ルール分析システム１００と通信ネットワークを介して接続される別システムに出力装置９３０を設け、その別システムにおいてルール集合を出力してもよい。この場合、ルール分析システム１００と通信ネットワークを介して接続される別システムの利用者にルール集合を知らせることができる。【０２３７】
次に、第６の実施形態のフィルタリングルール分析システムの利点について説明する。第６の実施形態にフィルタリングルール分析システムよれば、どれほど複雑なフィルタリングルールであっても、フィルタリング処理を高速化することができる。その理由は、ルールをマトリックス空間データに変換して、パケット履歴からそれらのマトリックスの頻度を計算し、頻度順にマトリックスを並び変えることで、パケットフィルタリング処理を行う数多くネットワーク機器に過去において到着しているパケットと同様の属性のパケットを優先順位の高いルールでマッチさせることができるように、ルール集合を修正したり、各ルールを作成し直したりして、新しいルール集合を作成しているからである。【０２３８】
第７の実施形態：
次に本発明の第７の実施形態のフィルタリングルール分析システムを説明する。このフィルタリングルール分析システムは、図１に示した第１の実施形態のフィルタリングルール分析システムと同様の構成であるが、マトリックス化部１３０の動作が異なっている。以下、第７の実施形態のフィルタリングルール分析システムについて、図１を参照して説明する。なお、マトリックス化部１３０以外の各構成要素については第１の実施形態の場合と同様であるので、説明を省略する。【０２３９】
本実施形態では、マトリックス化部１３０は、第１の実施形態の場合と同様にステップＳ１０１〜ステップＳ１０８の処理を実行するが、作成したマトリックス空間データの中から、ルールリストとしてデフォルトルール、より具体的にはデフォルトルールのルール名のみが追加されているマトリックスデータを削除する処理も実行する。このようなマトリックスデータの削除処理を行う点で、第７の実施形態は第１の実施形態と異なっている。【０２４０】
図６５は、第７の実施の形態におけるマトリックス化部１３０の動作の一例を示している。マトリックス化部１３０は、ステップＳ１０１〜Ｓ１０８に示すように、ルール記憶部１１０に記憶されているルール集合を用いて、マトリックス空間データを作成する。マトリックス空間データを作成するステップＳ１０１〜Ｓ１０８の処理は、第１の実施形態で説明したステップＳ１０１〜Ｓ１０８（図２参照）と同様の処理である。そして、ステップＳ１０６においてルールが残っていないと判定した場合、処理はステップＳ１０６の「いいえ」側に分岐し、マトリックス化部１３０は、ステップＳ１０９において、ルールが残っていないと判定するまでに作成したマトリックスデータの中から、ルールリストとしてデフォルトルールのみが追加されているマトリックスデータを削除する。例えば、マトリックスデータＭ００１に追加されているルールリストが｛Ｒ１、Ｒ７、Ｒ８｝であり、マトリックスデータＭ００２に追加されているルールリストが｛Ｒ８｝であり、マトリックスデータＭ００３に追加されているルールリストが｛Ｒ６、Ｒ８｝であるとし、デフォルトルールのルール名がＲ８であるとすると、ルールリストとしてデフォルトルールのみが追加されているマトリックスデータはＭ００２であるので、マトリックス化部１３０は、ルールが残っていないと判定するまでに作成したマトリックスデータの中から、マトリックスデータＭ００２を削除する。ルールリストとしてデフォルトルールのみが追加されているマトリックスデータが他にも存在すれば、マトリックス化部１３０はそのマットリックスデータも削除する。【０２４１】
マトリックス化部１３０は、図６５に示すステップＳ１０１〜Ｓ１０９までの処理の結果得られたマトリックス空間データをマトリックス空間記憶部１２０に記憶させる。マトリックス化部１３０がマトリックス空間データをマトリックス空間記憶部１２０に記憶させた後、重なり分析部１４０は、マトリックス空間記憶部１２０に記憶されたマトリックス空間データを参照し、ルール間の重なりを見つけだし、その結果を出力装置９３０を用いて出力する。この重なり分析部１４０の処理は、第１の実施形態の場合と同様であるので説明を省略する。【０２４２】
次に具体例を用いて、第７の実施形態のフィルタリングルール分析システムの動作を説明する。第１の実施形態で例示した図５に示すルール集合がルール記憶部１１０に記憶されているものとして説明する。第１の実施形態で例示したように、図５に示すルール集合に対してマトリックス化部１３０がステップＳ１０１〜Ｓ１０８の処理を実行することにより、図９に示すルールデータ及び図１０に示すマトリックスデータが生成される。本実施形態におけるマトリックス化部１３０は、ステップＳ１０６でルールが残っていないと判定した場合、ステップＳ１０９において、ルールリストとしてデフォルトルールのみが追加されているマトリックスデータを削除する。【０２４３】
図６６は、削除されるマトリックスデータの例を示している。図６６に例示するマトリックスデータの中で、ルールリストとしてデフォルトルール（ここではＲ８）のみが追加されているマトリックスデータは、Ｍ００１，Ｍ０１３，Ｍ０１４，Ｍ１３０等である。マトリックス化部１３０は、各マトリックスデータのルールリストを参照し、デフォルトルールのみが追加されているこれらのマトリックスデータを削除する。なお、図６６に示したマトリックスデータは、マトリックスデータ全体の一部であり、削除されるマトリックスデータを全て図６６に示しているわけではない。【０２４４】
次に、第７の実施形態のフィルタリングルール分析システムの利点について説明する。第７の実施形態のフィルタリングルール分析システムによれば、複雑なフィルタリングルールが多数あるルール集合であっても、各ルール間の関係を把握することができる。その理由は、生成したマトリックスデータからルール間の関係を把握することに無関係なデフォルトルールにのみ関係するマトリックスデータを削除するので、多数のルールがルール集合に含まれていてもマトリックスデータの数を少なくすることができるからである。マトリックスデータの数を減少させることができるので、コンピュータのメモリ消費を低減することができる。【０２４５】
第７の実施形態では、第１の実施形態におけるマトリックス空間データ作成処理にステップＳ１０９の処理を追加した場合を示した。上述の第５の実施形態及び第６の実施形態において、マトリックス化部１３０の動作は第１の実施形態と同様であると説明したが、第５の実施形態及び第６の実施形態においても、マトリックス化部１３０は、マトリックス空間データ作成処理において図６５に示すようにステップＳ１０９の処理を実行してもよい。第２の実施形態においても、マトリックス化部１３０は、マトリックス空間データ作成処理に図６５のステップＳ１０９の処理を追加してもよい。ただしこの場合、通過テスト部１５０（図１４参照）は、ステップＳ３０１（図１５参照）の処理の前に、テストパケットを含むマトリックスのマトリックスデータが全て削除されずに残っているか、一部だけ削除されていて一部は残っているか、あるいは全て削除されているかを判定する。テストパケットを含むマトリックスのマトリックスデータが全て削除されずに残っていると判定した場合、通過テスト部１５０は、そのままステップＳ３０１（図１５参照）以降の処理を実行すればよい。【０２４６】
テストパケットを含むマトリックスのマトリックスデータのうち一部だけ削除されていて一部は残っていると判定した場合、通過テスト部１５０は、削除されずに残っているマトリックスデータを対象にしてステップＳ３０１（図１５参照）以降の処理を実行すればよい。そして、通過テスト部１５０は、テストパケットのうち、マトリックスデータが残っていない領域については、デフォルトルールのアクションに応じてパケットが通るか通らないかを表示すればよい。例えば、削除されずに残っているマトリックスデータを対象にしてステップＳ３０１以降の処理が実行されて、「（６，８，６，９，後略）の領域ならば通ります。」、「（８，９，６，９，後略）の領域ならば通りません。」という表示が行われたとする。この場合、通過テスト部１５０は、テストパケットのうち、マトリックスデータが残っていない領域については、例えば「その他の領域」等と表示して、デフォルトルールのアクションが“Ａ”の場合「その他の領域については通ります。」と表示し、デフォルトルールのアクションが“Ｄ”の場合、「その他の領域については通りません」と表示すればよい。【０２４７】
テストパケットを含むマトリックスのマトリックスデータが全て削除されていると判定した場合、通過テスト部１５０は、デフォルトルールのアクションが“Ａ”ならば「テストパケットは通ります」等と表示し、デフォルトルールのアクションが“Ｄ”ならば「テストパケットは通りません」等と表示すればよい。【０２４８】
第３の実施形態においても、マトリックス化部１３０は、マトリックス空間データ作成処理に図６５に示すステップＳ１０９の処理を追加してもよい。ただし、第３の実施形態では、図２３に例示するように、ルールリストとして複数のルール集合のルールが追加されるので、第３の実施形態でのマトリックス空間データ作成処理にステップＳ１０９の処理を追加する場合、マトリックス化部１３０は、マトリックス空間データ作成に用いた複数のルール集合それぞれのデフォルトルールのみがルールリストに追加されているマトリックスデータを削除する。例えば、マトリックス空間データ作成に用いた複数のルール集合が図２２に示すルール集合Ｒ１００，Ｒ２００であったとする。ルール集合Ｒ１００のデフォルトルールはＲ１３であり、ルール集合Ｒ２００のデフォルトルールはＲ２２である。従って、本例の場合、マトリックス化部１３０は、ルールリストとしてＲ１３及びＲ２２のみが追加されたマトリックスデータを削除すればよい。【０２４９】
第３の実施形態で、ステップＳ１０９の処理を追加した場合、通過テスト部１５１（図１９参照）は、ステップＳ３０１（図２０参照）の処理の前に、テストパケットを含むマトリックスのマトリックスデータが全て削除されずに残っているか、一部だけ削除されていて一部は残っているか、あるいは全て削除されているかを判定する。テストパケットを含むマトリックスのマトリックスデータが全て削除されずに残っていると判定した場合、通過テスト部１５１は、そのままステップＳ３０１（図２０参照）以降の処理を実行すればよい。【０２５０】
一方、テストパケットを含むマトリックスのマトリックスデータのうち一部だけ削除されていて一部は残っていると判定した場合、通過テスト部１５１は、削除されずに残っているマトリックスデータを対象にしてステップＳ３０１（図２０参照）以降の処理を実行して、そのマトリックスデータの領域に関して、図２４に例示するような表示を行えばよい。そして、テストパケットのうち、マトリックスデータが残っていない領域については、通過テスト部１５１は、ルール集合の順番に各ルール集合のデフォルトルールのアクションを参照していく。デフォルトルールのアクションが“Ａ”である場合には、次のデフォルトルールのアクションを参照する。デフォルトルールのアクションが“Ｄ”となった場合には、通過テスト部１５１は、その時点でデフォルトルールのアクションの参照を停止して、「テストパケット内の他の領域については通りません。」等の表示を行えばよい。最後のルール集合のデフォルトルールを参照した場合、通過テスト部１５１は、そのデフォルトルールのアクションが“Ａ”ならば「テストパケット内の他の領域については通ります。」等と表示し、そのデフォルトルールのアクションが“Ｄ”ならば「テストパケット内の他の領域については通りません。」等と表示すればよい。【０２５１】
テストパケットを含むマトリックスのマトリックスデータが全て削除されていると判定した場合、通過テスト部１５１は、ルール集合の順番に各ルール集合のデフォルトルールのアクションを参照していく。デフォルトルールのアクションが“Ａ”である場合には、次のデフォルトルールのアクションを参照する。デフォルトルールのアクションが“Ｄ”となった場合には、通過テスト部１５１は、その時点でデフォルトルールのアクションの参照を停止して、「テストパケットは通りません。」等と表示すればよい。最後のルール集合のデフォルトルールを参照した場合、通過テスト部１５１は、そのデフォルトルールのアクションが“Ａ”ならば「テストパケットは通ります。」等と表示し、そのデフォルトルールのアクションが“Ｄ”ならば「テストパケットは通りません。」等と表示すればよい。【０２５２】
第４の実施形態においても、マトリックス化部１３１は、マトリックス空間データ作成処理に図６５のステップＳ１０９の処理を追加してもよい。第４の実施形態では、１つのルール集合に対応するマトリックス空間データを作成する処理、例えば、図２７に示すステップＳ１１２，Ｓ１１３の処理において、ステップＳ１０６〜Ｓ１０８のループ処理を繰り返す。この１つのルール集合に対応するマトリックス空間データを作成する処理の最後に、マトリックス化部１３１は、図６５に示すステップＳ１０９と同様の処理を実行すればよい。【０２５３】
第４の実施形態においてステップＳ１０９の処理を追加した場合、ステップＳ４０３において、選択した１組目のマトリックスデータに対応するマトリックスデータを２組目のマトリックス空間データから選択できない場合がある。これは、ステップＳ１０９の処理を追加したことにより、２組目のマトリックス空間データからマトリックスデータの一部が削除されているためである。この場合、同一性判定部１６０は、２組目のマトリックス空間データに対応するルール集合のデフォルトルールのアクションを参照し、選択した１組目のマトリックスデータの先頭ルールのアクションと同一かどうかを調べればよい。この２つのアクションが同一かどうかを判定した後の処理はステップＳ４０３と同様である。基準とするマトリックス空間データにおけるマトリックスデータの一部がステップＳ１０９の処理によって削除される場合もある。したがって、ステップＳ４０１においてルールが残っていないと判定したならば、同一性分析部１６０は、２組目のマトリックス空間データのマトリックスデータのうち未だ選択されていないものを基準として、ステップＳ４０１〜Ｓ４０３の処理を繰り返す。ただし、２組目のマトリックス空間データのマトリックスデータのうち未だ選択されていないものに対応する１組目のマトリックス空間データのマトリックスデータは、ステップＳ１０９の処理により削除されていることになるので、ステップＳ４０３では、１組目のマトリックス空間データに対応するルール集合のデフォルトルールのアクションを参照し、選択した２組目のマトリックスデータの先頭ルールのアクションと同一かどうかを調べればよい。【０２５４】
第８の実施形態：
次に本発明の第８の実施形態のフィルタリングルール分析システムを説明する。第８の実施形態のフィルタリングルール分析システムを示す図６７においては、第１の実施形態におけるものと同様の構成要素については、図１におけるものと同一の参照符号を付し、重複する説明を省略する。第８の実施形態のフィルタリングルール分析システムは、図１に示すものと同様のものであるが、ルール分析システム１００において重なり分析部の代わりにルール統合部を備える点で、第１の実施形態のものと異なっている。【０２５５】
ルール統合部２００は、マトリックス空間データを参照して、ルール記憶部１１０に記憶されているルール集合内のルールのうち、統合可能と判定されるルールを統合する。ルール統合部２００は、例えば、プログラムに従って動作するＣＰＵによって実現される。なお、プログラムは、例えば、ルール分析システム１００が備えるプログラム記憶装置（不図示）に記憶される。【０２５６】
次に、第８の実施形態のフィルタリングルール分析システムの動作について説明する。なお、第１の実施形態と同様の動作については、その詳細な説明を省略する。マトリックス空間記憶部１２０にマトリックス空間データが記憶されるまでの入力装置９２０、マトリックス化部１３０の動作は、第１の実施形態の場合と同様である。【０２５７】
このフィルタリングルール分析システムでは、マトリックス化部１３０がマトリックス空間データをマトリックス空間記憶部１２０に記憶させた後、ルール統合部２００は、ルールを統合する処理を実行する。図６８〜図７０は、ルール統合部２００によるルール統合の処理手順の例を示している。【０２５８】
図６８に示すように、ルール統合部２００は、まず、ステップＳ９１０において、統合できる可能性のあるルールの組み合わせ、すなわち統合候補を求め、次に、ステップＳ９２０において、ステップＳ９１０で統合候補としたルールの組み合わせに対して、統合可能であるか否かを確認する。そして、ルール統合部２００は、ステップＳ９３０において、統合可能であるルールの組み合わせを統合し、ルール集合を修正する。
【０２５９】
図６９は、ステップＳ９１０の統合候補を求める処理の処理手順の例を示している。統合できる可能性のあるルールの組み合わせ、すなわち統合候補を求めるときに、ルール統合部２００は、ステップＳ９１１において、まずマトリックス空間記憶部１２０に記憶されているルールデータを参照して、所定の条件を満たすルール（ルールデータ）の組み合わせを全て抽出する。ただし、ここで抽出するルールの組み合わせは、いずれも２つのルールの組み合わせである。この所定の条件とは、デフォルトルールのルールデータを含んでいないこと、及び２つのルールデータのアクションが共通であることである。すなわち、ルール統合部２００は、ステップＳ９１１で、デフォルトルール以外のルールであって、アクションが共通である２つのルールの組み合わせを全て抽出する。【０２６０】
続いて、ルール統合部２００は、ステップＳ９１２において、ステップＳ９１１で抽出した組み合わせのうち、未だステップＳ９１３で選択されていない組み合わせが残っているか否かを判定する。未選択の組み合わせが残っていると判定された場合、処理はステップＳ９１３に移行し、未選択の組み合わせが残っていないと判定された場合には、統合候補となる組み合わせを求める処理は終了する。【０２６１】
ステップＳ９１３においてルール統合部２００は、未選択の組み合わせのうちの一つの組み合わせを選択する。すなわち、ルール統合部２００は、未選択の組み合わせのうちの一つの組み合わせを構成する２つのルール（ルールデータ）を選択する。ステップＳ９１３で選択されるこの２つのルールをそれぞれＲａ，Ｒｂとする。ルールＲａ，Ｒｂは、いずれもデフォルトルールではなく、また、ルールＲａ，Ｒｂのアクションは共通である。【０２６２】
次に、ルール統合部２００は、ステップＳ９１４において、ルールＲａを構成するマトリックスの数をカウントする。ルールデータには、マトリックスのリストが最後尾に記録されている。従って、任意のルールを構成するマトリックス数をカウントするには、そのルールデータに記録されているマトリックスのリスト内のマトリックス名の数をカウントすればよい。ルールＲａを構成するマトリックスの数、すなわちステップＳ９１４でカウントされるマトリックスの数をＭａとする。ルール統合部２００は、ステップＳ９１５において、ステップＳ９１４と同様に、ルールＲｂを構成するマトリックスの数をカウントする。ルールＲｂを構成するマトリックスの数、すなわちステップＳ９１５でカウントされるマトリックスの数をＭｂとする。【０２６３】
次に、ルール統合部２００は、ステップＳ９１６において、ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑを仮想的に作り、最小多次元立方体Ｑを構成するマトリックスの数を求める。ここで、ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑとは、各属性の開始点としてルールＲａ，Ｒｂの対応する属性の開始点のうち値の小さい方の開始点を選択し、各属性の終了点としてルールＲａ，Ｒｂの対応する属性の終了点のうち値の大きい方の終了点を選択した場合に、各属性ごとに選択した開始点及び終了点によって定められる領域のことである。例えば、第１属性の開始点としてルールＲａ，Ｒｂの第１属性の開始点のうち値の小さい方の開始点を選択し、第１属性の終了点としてルールＲａ，Ｒｂの第１属性の終了点のうち値の大きい方の終了点を選択する。第２属性以降の開始点及び終了点についても同様に選択していく。このように選択された各属性の開始点及び終了点によって定められる領域が、最小多次元立方体となる。なお、ここでは、便宜上「最小多次元立方体」と記すが、最小多次元立方体Ｑは、厳密な意味での立方体（３次元空間内に存在する立方体）とは限らない。例えば、ルールＲａ，Ｒｂの属性がそれぞれ２つしかなければ、最小多次元立方体Ｑは２次元の領域となる。例えば、ルールＲａ，Ｒｂの属性がそれぞれ４つ以上存在すれば、最小多次元立方体Ｑは４次元以上の空間の領域となる。【０２６４】
最小多次元立方体Ｑを構成するマトリックスとは、最小多次元立方体Ｑの領域と重なるマトリックスのことである。最小多次元立方体Ｑを構成するマトリックスの数は、マトリックス化部１３０が求めた境界点を用いて算出することができる。ルール統合部２００は、最小多次元立方体Ｑの属性の開始点から終了点までの範囲を境界点で分割した結果得られる領域（範囲）の数を各属性ごとに求め、属性ごとに求めたその数の積を計算することにより、最小多次元立方体Ｑを構成するマトリックスの数を求めることができる。以下に、具体例を示す。ここでは、各ルールデータに記述されている属性は２種類であり、各ルールデータには第１属性及び第２属性の開始点及び終了点が記述されているものとする。Ｘ軸（第１属性に対応）上の境界点が０，１０，４０，６０，８０，１００であり、Ｙ軸（第２属性に対応）上の境界点が０，１０，２０，５０，７０，８０，９０，１００であるとする。ルールＲａのルールデータが（１０，６０，２０，９０，後略）であり、ルールＲｂのルールデータが（４０，８０，５０，１００，後略）であるとする。すると、最小多次元立方体Ｑの範囲は、（１０，８０，２０，１００）となる。最小多次元立方体Ｑの第１属性の開始点“１０”から終了点“８０”までの範囲を、Ｘ軸上の境界点１０，４０，６０，８０で分割した結果得られる領域の数は、３個である。具体的には、１０〜４０の範囲、４０〜６０の範囲、及び６０〜８０の範囲の３個である。最小多次元立方体Ｑの第２属性の開始点“２０”から終了点“１００”までの範囲を、Ｙ軸上の境界点２０，５０，７０，８０，９０，１００で分割した結果得られる領域の数は、５個である。具体的には、２０〜５０の範囲、５０〜７０の範囲、７０〜８０の範囲、８０〜９０の範囲、及び９０〜１００の範囲の５個である。従って、本例における最小多次元立方体Ｑを構成するマトリックス数は、３×５＝１５個と求められる。以下、ステップＳ９１６で求めるマトリックス数、すなわち最小多次元立方体Ｑを構成するマトリックス数をＭｑとする。【０２６５】
Ｍｑを求めた後、ルール統合部２００は、ステップＳ９１７において、ステップＳ９１４で求めたＭａとステップＳ９１５で求めたＭｂとの和が、ステップＳ９１６で求めたＭｑと等しいか否かを判定する。ＭａとＭｂとの和がＭｑであるならば、すなわちＭａ＋Ｍｂ＝Ｍｑが成立するならば、ルール統合部２００は、ステップＳ９１８において、ステップＳ９１３で選択したルールＲａ，Ｒｂの組み合わせをバッファ（不図示）に記憶させる。ステップＳ９１８の後、ステップＳ９１２以降の処理を繰り返す。ステップＳ９１７においてＭａとＭｂとの和がＭｑでないならば、すなわちＭａ＋Ｍｂ＝Ｍｑが成立しないならば、ルール統合部２００は、ステップＳ９１８に移行せず、ステップＳ９１２以降の処理を繰り返す。【０２６６】
ステップＳ９１２において、未選択の組み合わせが残っていないと判定した時点においてバッファに記憶されているルールの組み合わせが、統合できる可能性のあるルールの組み合わせ、すなわち統合候補である。バッファには、マトリックス空間記憶部１２０に記憶されていたルールデータの組み合わせが統合候補として記憶されることになる。ただしステップＳ９３０（図６８参照）では、ルール記憶部１１０に記憶されているルール集合に含まれるルール同士を統合する。【０２６７】
図７０は、図６８においてステップＳ９２０として示した、統合候補としたルールの組み合わせに対して統合可能であるか否かを確認する処理の処理手順の例を示している。ルール統合部２００は、ステップＳ９１０の後、具体的には、ステップＳ９１２で未選択の組み合わせが残っていないと判定した後、統合候補としたルールの組み合わせに対して統合可能であるか否かを確認する処理を開始する。ルール統合部２００は、まず、ステップＳ９２１において、バッファに記憶されているルールの組み合わせのうち、後述のステップＳ９２２で選択されていない組み合わせが残っているか否かを判定する。未選択の組み合わせがバッファに残っていなければ、処理を終了する。未選択の組み合わせがバッファに残っていれば、ルール統合部２００は、ステップＳ９２２に移行する。【０２６８】
ステップＳ９２２では、ルール統合部２００は、バッファから未だ選択されていないルールの組み合わせを選択する。ここで選択された組み合わせを構成するルールをルールＲａ，Ｒｂとする。ルール統合部２００は、ステップＳ９２２において、ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係するか否かを判定する。ここで、頂点とは、各属性の開始点または終了点の組み合わせにより決定される点である。従って、最小多次元立方体Ｑの頂点は、最小多次元立方体Ｑを定める各属性の開始点または終了点の組み合わせによって決定される点であり、例えば、第１属性の開始点、第２属性の終了点、第３属性の開始点、…等の組み合わせによって決定される点等が頂点となる。上記の「頂点が、ルールＲａまたはルールＲｂに関係する」とは、頂点を含む頂点マトリックスのマトリックスデータのルールリストにルールＲａまたはルールＲｂの記述が含まれていることを意味する。従って、「ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係する」とは、その最小多次元立方体Ｑの個々の頂点を含む各頂点マトリックスのマトリックスデータのルールリストにルールＲａまたはルールＲｂの記述が含まれていることを意味する。すなわち、最小多次元立方体Ｑの個々の頂点を含む各頂点マトリックスが、ルールＲａを構成するマトリックスまたはルールＲｂを構成するマトリックスであるということである。最小多次元立方体Ｑの頂点マトリックスとは、最小多次元立方体Ｑを構成するマトリックスのうち、最小多次元立方体Ｑの頂点を含むマトリックスのことである。【０２６９】
最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係するか否かを判定する場合には、ルール統合部２００は、最小多次元立方体Ｑの全ての頂点マトリックスのマトリックスデータのルールリストにルールＲａまたはルールＲｂの記述が含まれているか否かを判定すればよい。最小多次元立方体Ｑの全ての頂点マトリックスのマトリックスデータのルールリストにルールＲａまたはルールＲｂの記述が含まれていれば、Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係することとなる。いずれかの頂点マトリックスのマトリックスデータのルールリストに、ルールＲａとルールＲｂのいずれの記述もなければ、関係しないことになる。ルール統合部２００は、最小多次元立方体Ｑを構成する各マトリックスの中から、最小多次元立方体Ｑの頂点を含むマトリックスを特定することによって、最小多次元立方体Ｑの頂点マトリックスを特定すればよい。【０２７０】
なお、最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係する場合には、最小多次元立方体Ｑの個々の属性の開始点は、ルールＲａの対応する属性の開始点またはルールＲｂの対応する属性の開始点のいずれかになる。最小多次元立方体Ｑの個々の属性の終了点は、ルールＲａの対応する属性の終了点またはルールＲｂの対応する属性の終了点のいずれかになる。【０２７１】
ステップＳ９２２において、ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係すると判定された場合、処理はステップＳ９２３に移行する。ステップＳ９２３においてルール統合部２００は、ステップＳ９２２で選択したルールの組み合わせをバッファ（不図示）に記録する。このバッファは、ステップＳ９１０、より具体的にはステップＳ９１８において組み合わせを記録するバッファとは異なるバッファである。少なくとも、ステップＳ９１８で組み合わせを記録する記録領域と、ステップＳ９２３で組み合わせを記録する記録領域が異なっていればよい。以下の説明において、ステップＳ９２３で組み合わせを記録するバッファのことをルール統合用バッファと呼ぶ。ステップＳ９２３の後、処理はステップＳ９２１に移行する。ステップＳ９２２において、ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係しないと判定した場合には、ステップＳ９２３の組み合わせの記録を行うことなく、処理はステップＳ９２１に移行する。【０２７２】
ステップＳ９２１において未選択の組み合わせが残っていないと判定した時点において、ルール統合用バッファに記憶されている各組み合わせは、それぞれ、ルール統合可能であると確認された２つのルールを表わしている。【０２７３】
ルール統合部２００は、ステップＳ９２０の後、図７０に示すステップＳ９２１で未選択の組み合わせが残っていないと判定した後、ステップＳ９３０において、ルールの統合が可能であると確認した各組み合わせごとに、ルール記憶部１１０に記憶されている２つのルールを統合する。このステップＳ９３０において、ルール統合部２００は、以下の処理を実行すればよい。ルール統合部２００は、ステップＳ９２０後にルール統合用バッファに記憶されている各組み合わせを参照し、各組み合わせが示す２つのルールを、ルール記憶部１１０に記憶されているルール集合の中から特定する。そして、その２つのルールの組ごとに、２つのルールを統合する。以下の説明では、ステップＳ９２０後にルール統合用バッファに記憶されている各組み合わせが表わしているルールであって、ルール記憶部１１０に記憶されているルール集合の中から特定されたルールをＲａ，Ｒｂとする。【０２７４】
ルール統合部２００は、統合可能なルールＲａ，Ｒｂをルール記憶部１１０に記憶されているルール集合の中から特定した後、新たなルールの各属性の開始点として、ルールＲａの対応する属性の開始点とルールＲｂの対応する属性の開始点のうち値の小さい方の開始点を選択し、新たなルールの各属性の終了点として、ルールＲａの対応する属性の終了点とルールＲｂの対応する属性の終了点のうち値の大きい方の終了点を選択して、新たなルール、すなわちＲａとＲｂを統合したルールの各属性の開始点及び終了点を定めればよい。ルールＲａ，Ｒｂの対応する属性の開始点同士や終了点同士の値が等しいときには、ルール統合部２００は、その等しい値を新たなルールの開始点や終了点とすればよい。ルール統合部２００は、ルールＲａ，Ｒｂに共通のアクションを、新たなルール、すなわちＲａとＲｂを統合したルールのアクションとして定めればよい。【０２７５】
例えば、統合対象となるルールＲａ，Ｒｂがそれぞれ（２０，９０，５０，１２０，Ａ）、（９０，１４０，５０，１２０，Ａ）であるとする。ルール統合部２００は、Ｒａ，Ｒｂを統合した新たなルールの第１属性の開始点として、ルールＲａの第１属性の開始点“２０”とルールＲｂの第１属性の開始点“９０”のうち値が小さい方の開始点“２０”を選択し、新たなルールの第１属性の開始点とする。ルール統合部２００は、新たなルールの第１属性の終了点として、ルールＲａの第１属性の終了点“９０”とルールＲｂの第１属性の終了点“１４０”のうち値が大きい方の終了点“１４０”を選択し、新たなルールの第１属性の終了点とする。上述のように、ルールＲａ，Ｒｂの対応する属性の開始点同士や終了点同士の値が等しいときには、ルール統合部２００は、その等しい値を新たなルールの開始点や終了点とすればよい。本例では、Ｒａ，Ｒｂの第２属性の開始点はともに“５０”であり、Ｒａ，Ｒｂの第２属性の終了点はともに“１２０”である。従って、本例では、ルール統合部２００は、新たなルールの第２属性の開始点、終了点をそれぞれ“５０”，“１２０”とする。本例では、ルール統合部２００は、Ｒａ，Ｒｂに共通のアクション“Ａ”を、新たなルールのアクションとする。従って、本例の場合、ルール統合部２００は、ルールＲａ，Ｒｂを統合した新たなルールとして、（２０，１４０，５０，１２０，Ａ）というルールを、ルール記憶部１１０に記憶されているルール集合に追加する。【０２７６】
ルール統合部２００は、ステップＳ９３０において、統合対象とした２つのルールをルール記憶部１１０に記憶されているルール集合から削除する。すなわち、ルール統合部２００は、ステップＳ９３０で２つのルールを統合する場合、統合対象となる２つのルールをルール集合から削除する処理と、その２つのルールを統合した新たなルールを作成しルール集合に追加する処理とを行う。ルール統合部２００は、このような処理を、統合可能なルールＲａ，Ｒｂの組ごとに行う。【０２７７】
上記の説明では、統合可能な２個のルールの組み合わせを選び出し、その２個のルールを統合して新たなルールを作成している。この処理を繰り返すことで、３個以上のルールを統合することも可能である。例えば、まず、２つのルールＲａ，Ｒｂを統合してＲｃを作成し、その後、ステップＳ９１０以降の処理を行ってＲｃと他のルールとを統合した新たなルールを作成してもよい。なおこの場合、ルール集合の修正だけではなく、マトリックス空間データの修正も行わなければならない。例えば、マトリックス化部１３０が、統合されたルールが追加されたルール集合を用いて、新たにマトリックス空間データを作成し、その後、再びステップＳ９１０以降の処理を行えばよい。このように、統合処理を繰り返す場合、ルール統合部２００が統合可能なルールの組み合わせを特定できなくなるまで繰り返す。すなわち、ステップＳ９１２で「いいえ」側に分岐したときにバッファに組み合わせが記録されていない場合、あるいはステップＳ９２１で「いいえ」側に分岐したときにバッファに組み合わせが記録されていない場合に、統合処理の繰り返しを終了すればよい。【０２７８】
上記のように統合処理を繰り返さない場合であっても、マトリックス空間データと、ルール統合後にルール記憶部１１０に記憶されているルール集合との整合をとるために、マトリックス化部１３０が、統合されたルールが追加されたルール集合を用いて、新たにマトリックス空間データを作成してもよい。【０２７９】
次に、第８の実施形態のフィルタリングルール分析システムの利点について説明する。第８の実施形態のフィルタリングルール分析システムによれば、どのような複雑なフィルタリングルールであっても、統合可能な２つのルールを統合することができる。その理由は、ルールからマトリックス空間データを生成し、所定の条件をみたす２つのルールを構成するマトリックス数及びその２つのルールでできる最小多次元立方体を構成するマトリックス数を比較して統合候補を求め、その統合候補に関して、最小多次元立方体Ｑの全ての頂点が、ルールＲａまたはルールＲｂに関係するか否かを判定して統合可能かどうかを調べることができるからである。【０２８０】
ルールを統合すれば、ルールの数を減少させることができ、管理者にルールを理解させやすくすることができる。新たなルールの順位を定める場合には、例えば、管理者が統合後のルールを確認して、そのルールの順位を決定すればよい。ただし、統合後のルールの順位決定方法は、管理者が確認して決定する方法に限定されない。【０２８１】
次に、具体例を用いて、第８の実施形態のフィルタリングルール分析システムの動作を説明する。ルール集合９１０が入力され、マトリックス空間データとしてマトリックス空間記憶部１２０に記憶されるまでの動作は、第１の実施形態と同様であるので説明を省略する。マトリックス空間記憶部１２０は、マトリックス空間データに含まれるルールデータとして、図７１Ｂに例示するルールデータを記憶しているものとする。図７１Ａは、図７１Ｂに例示するルールデータが示す各ルール及びマトリックス化部１３０に作成された各マトリックスを表わす模式図である。なお、図７１Ｂにおいて矢印で示した数は、各ルールを構成するマトリックスの数を表わしている。【０２８２】
ルール統合部２００は、ステップＳ９１１において、図７１Ｂに例示するルールデータを参照して、デフォルトルール以外のルールであって、アクションが共通である２つのルール（ルールデータ）の組み合わせを全て抽出する。本例では、ルール統合部２００は、（Ｒ２，Ｒ３）、（Ｒ２，Ｒ４）、（Ｒ２，Ｒ５）、（Ｒ２，Ｒ６）、（Ｒ３，Ｒ４）、（Ｒ３，Ｒ５）、（Ｒ３，Ｒ６）、（Ｒ４，Ｒ５）、（Ｒ４，Ｒ６）、（Ｒ５，Ｒ６）の１０種類の組み合わせを抽出する。これらの組み合わせは、いずれもアクションが“Ａ”で共通する。なお、図７１Ｂに示すルールＲ１のアクションは“Ｄ”であり、アクションが“Ｄ”となる他のルールはデフォルトルールＲ７しかない。よって、本例では、Ｒ１を含む組み合わせは抽出されない。【０２８３】
以降、ルール統合部２００は、各組あわせを構成するルールデータを選択して、Ｍａ，Ｍｂ，Ｍｑを求め、Ｍａ＋Ｍｂ＝Ｍｑであるならば、選択したルールデータの組み合わせをバッファに記録する処理、すなわちステップＳ９１２以降の処理を繰り返す。ステップＳ９１２において組み合わせが残っていなければ、統合候補を求める処理が終了する。【０２８４】
図７２は、上記の１０種類の各組み合わせにおけるＭｑと、Ｍａ＋Ｍｂとを比較して示している。図７２において、Ｍ（Ｒａ＋Ｒｂ）は、ルールＲａとルールＲｂとによってできる最小多次元立方体Ｑを構成するマトリックスの数を示している。例えば、“Ｍ（Ｒ２＋Ｒ３）＝３６”は、ルールＲ２，Ｒ３でできる最小多次元立方体Ｑを構成するマトリックスの数が３６個であることを示している。等号あるいは不等号の右側に示したＭ（Ｒ２）等の記載は、各ルールを構成するマトリックス数を表わしている。例えば、Ｍ（Ｒ２）は、ルールＲ２を構成するマトリックス数を表わしている。図７２に示すように、２つのルールによってできる最小多次元立方体Ｑを構成するマトリックス数Ｍｑと、２つのルールそれぞれを構成するマトリックス数の和Ｍａ＋Ｍｂとが等しくなる２つのルールの組み合わせは、ルールＲ３とルールＲ５の組み合わせのみである。従って、ステップＳ９１２においてルール統合部２００が、ステップＳ９１２において、組み合わせが残っていないと判定した場合、バッファにはルールＲ３とルールＲ５の組み合わせのみが記録されていることになる。【０２８５】
ルールＲ４とルールＲ６との組み合わせに着目すると、図７１Ａ，図７１Ｂに示すように、参照ルールＲ４，Ｒ６は、第２属性の範囲が一致し、ルールＲ４が示す領域とルールＲ６が示す領域とが分離されていない。そのため、ルールＲ４とルールＲ６の組み合わせもバッファに記録されてしかるべきと考えることもできるが、本実施形態では、ルールＲ４とルールＲ６の組み合わせは、統合候補から除外され、バッファに記録されない。本実施形態において、ルール分析システム１００が、第５の実施形態と同様にルール削除部１７０（図３４参照）を備え、第５の実施形態で説明した縮小を実行してもよい。そして、その後、ルール統合部２００が、ステップＳ９１０以降の処理を実行してもよい。その場合には、縮小の結果、ルールＲ４とルールＲ６との組み合わせに関してもステップＳ９１７で「はい」と判定され、ルールＲ４とルールＲ６との組み合わせもバッファに記録されることになる。ただし、ここでは、ルールＲ３とルールＲ５の組み合わせのみがバッファに記録されたものとして説明する。【０２８６】
ルール統合部２００は、ステップＳ９２１において、ルールＲ３とルールＲ５の組み合わせが残っていると判定し、ステップＳ９２２において、ルールＲ３とルールＲ５とによってできる最小多次元立方体Ｑの全ての頂点が、ルールＲ３またはルールＲ５に関係するか否かを判定する。本例の場合、ルールＲ３とルールＲ５とによってできる最小多次元立方体Ｑの全ての頂点が、ルールＲ３またはルールＲ５に関係するので、ルール統合部２００は、ステップＳ９２３において、ルールＲ３とルールＲ５との組み合わせをルール統合用バッファに記録する。本例では、以上の処理によって、未選択の組み合わせが存在しなくなるので、ステップＳ９２１において処理は「いいえ」の側に分岐し、統合候補としたルールの組み合わせに対して統合可能であるか否かを確認する処理が終了する。【０２８７】
上記のようにステップＳ９２２の判定を行う理由について説明する。ステップＳ９２２の判定を行うのは、２つのルールが重なっている部分のマトリックス数と、２個のルールでできる最小多次元立方体Ｑを構成するマトリックスのうち、２つのルールと無関係なマトリックス数が偶然一致する場合があり、そのような場合を排除するためである。図７３は、２つのルールが重なっている部分のマトリックス数と、２個のルールでできる最小多次元立方体Ｑを構成するマトリックスのうち、２つのルールと無関係なマトリックス数が一致する場合の例を示している。図７３に示す例では、２つのルールが重なっている部分のマトリックス数は２個である。また、最小多次元立方体Ｑを構成するマトリックスのうち、２つのルールと無関係なマトリックス数も２個である。このような場合、ステップＳ９１７（図６９参照）では「はい」と判定されるが、ルールを統合することはできない。本実施形態では、ステップＳ９２２の判定で「はい」となる組み合わせのみをステップＳ９２３において記録するようにして、図７３に例示するような統合できない２つのルールの組み合わせがステップＳ９２３において記録されることを防止している。【０２８８】
図６８に示すステップＳ９２０の後、ステップＳ９２１において「いいえ」側に分岐した場合、ルール統合部２００は、ステップＳ９３０において、ルール記憶部１１０に記憶されているルール集合に対してルールＲ３，Ｒ５の削除を行うとともに、ルールＲ３，Ｒ５を統合した新たなルールを追加する。【０２８９】
以上では、ステップＳ９１１（図６９参照）においてルールの組み合わせを抽出する際、マトリックス空間記憶部１２０に記憶されているルールデータを参照してルールの組み合わせを抽出する場合を説明した。この代わりに、ステップＳ９１１においてルールの組み合わせを抽出する場合、ルール記憶部１１０に記憶されているルール集合を参照してルールの組み合わせを抽出してもよい。この場合、ステップＳ９１４〜ステップＳ９１６、ステップＳ９２２に示すマトリックス数を求める処理等で、マトリックス空間記憶部１２０に記憶されているマトリックス空間データを参照してもよい。【０２９０】
上述の説明では、マトリックス化部１３０の動作は第１の実施形態と同様であると説明した。しかしながらマトリックス化部１３０は、マトリックス空間データ作成処理に、第７の実施形態で説明したステップＳ１０９の処理を行ってもよい。すなわち、マトリックス化部１３０は、第７の実施形態で示したマトリックス化部１３０と同様の動作を行ってもよい。【０２９１】
上記の各実施形態では、ルールの各属性の開始点及び終了点を境界点として説明した。開始点及び終了点を境界点とすると、ルールの領域の境界上のパケットの属性が複数のマトリックスの境界上に位置することになる。図７４Ａ、図７４Ｂは、ルールの領域の境界上のパケットを示す説明図である。図７４Ａに示すように、ルールＲ１とルールＲ２の境界上に、第１属性及び第２属性がともに“２”であるパケットが存在するとする。開始点及び終了点を境界点としてマトリックスを定める場合、第１属性及び第２属性がともに“２”であるパケットは、ルールＲ１を構成するマトリックスとルールＲ２を構成するマトリックスとの境界上に位置することになる。各属性が１つの値のみで示されるパケットは、マトリックスの境界上に存在することがないようにし、ただ１つのマトリックスの境界の内側に含まれるようにすることが好ましい。そこで、ルールの各属性の開始点及び終了点を境界点とするのではなく、ルールの各属性の開始点を表わす値から所定値を減算した値と、ルールの各属性の終了点を表わす値に所定値を加算した値とを境界点としてもよい。そのように境界点を定めれば、図７４Ａに示すパケットのように、各属性が１つの値のみで示されるパケットは、ただ１つのマトリックスの境界の内部に含まれる。【０２９２】
図７４Ｂは、そのような状態を示している。図７４Ｂに示す例では、例えば所定値を０．５として、ルールＲ１の第１属性の開始点“２”からこの所定値を減算した“１．５”、ルールＲ１の第１属性の終了点“４”にこの所定値を加算した“４．５”等を境界点としている。また、ルールＲ１の第２属性の開始点“２”から所定値０．５を減算した“１．５”、ルールＲ１の第２属性の終了点“３”に所定値０．５を加算した“３．５”を境界点としている。図７４Ｂに示すマトリックスＭｘは、このような第１属性の境界点“１．５”，“４．５”、及び第２の属性の境界点“１．５”，“３．５”によって規定されるマトリックスである。このように、境界点を定めることにより、図７４Ａに示す各属性の値が“２”のパケットは、マトリックスＭｘの境界の内部に存在することになる。【０２９３】
以下、上述した各実施形態の変形例として、上述のように、ルールの各属性の開始点を表わす値から所定値を減算した値とルールの各属性の終了点を表わす値に所定値を加算した値とを境界点とする場合について説明する。【０２９４】
上述の各実施形態において、上記のように境界点を定める場合、マトリックス化部１３０（あるいはマトリックス化部１３１）は、ステップＳ１０３（図２、図２７、図６５等を参照）において、ルール記憶部１１０に記憶されている全てのルールの条件部分から、直前のステップＳ１０２で選択した属性に関する開始点及び終了点を収集する。そして、マトリックス化部１３０（あるいはマトリックス化部１３１）は、収集した開始点から所定値を減算した値、及び収集した終了点に所定値を加算した値をそれぞれ境界点し、次のステップＳ１０４において、その境界点をソートし、重複する境界点を削除すればよい。【０２９５】
上記の減算や加算で用いる所定値は、以下のように定めればよい。ある属性に対応する所定値は、その属性の相異なる２つの値の差の最小値未満の値であればよい。例えば、属性がＩＰアドレス（ソースアドレスやデスティネーションアドレス）である場合、そのアドレスは、“ｗｗｗ．ｘｘｘ．ｙｙｙ．ｚｚｚ”等のように表わされるが、このアドレスは３２ビットのデータで表わされるので、整数で表わすこともできる。よって、アドレスの相異なる２つの値の差の最小値は“１”となる。従って、各アドレスを３２ビットで表わされる整数としたときに、所定値を１未満の値（例えば０．５など）として定め、３２ビットの整数で表わされるアドレス開始点からその所定値を減算し、また、３２ビットの整数で表わされるアドレス終了点にその所定値を加算して境界点を求めればよい。【０２９６】
ポート番号は、０〜６５５３５の整数である。従って、属性がポート番号（ソースポートやデスティネーションポート）である場合、ポート番号の相異なる２つの値の差の最小値も“１”となる。よって、属性がポート番号である場合、所定値を１未満の値（例えば０．５など）として定め、開始点からその所定値を減算し、また、終了点にその所定値を加算して境界点を求めればよい。【０２９７】
属性となるプロトコルは、予め数値に変換される。よって、相異なるプロトコルに対応する値の差の最小値未満の値を所定とすればよい。例えば、ＴＣＰを“０”、ＵＤＰを“１”とする場合、各プロトコルに対応する値の差の最小値は１である。よって、所定値を１未満の値（例えば０．５など）として定め、開始点からその所定値を減算し、また、終了点にその所定値を加算して境界点を求めればよい。【０２９８】
各属性ごとに、開始点から所定値を減算した値、終了点に所定値を加算した値をそれぞれ境界点とし、その境界点をソートして重複する境界点を削除した後に、その境界点を用いてステップＳ１０５（図１等参照）の処理を実行してマトリックスを作成すればよい。すなわち、マトリックス化部１３０（あるいはマトリックス化部１３１）は、その境界点を用いて、全ての属性の隣り合う２つの境界点でできるマトリックスデータを作成する。そして、その後、マトリックス化部１３０（あるいはマトリックス化部１３１）は、ステップＳ１０６〜ステップＳ１０８の処理によりマトリックス空間データを作成すればよい。ただし、マトリックス空間データに含まれるルールデータは、ルール記憶部１１０に記憶されるルールデータに、ルールを構成するマトリックスのリストが追加されることにより生成される。従って、マトリックス空間データに含まれるルールデータの属性は、元々、ルール記憶部１１０に記憶されていたルールデータの属性と同一であり、開始点から所定値を減算した値や、終了点に所定値を加算した値が記述されるわけではない。【０２９９】
一方、マトリックス空間データに含まれるマトリックスデータは、ルールの各属性の開始点を表わす値から所定値を減算した値とルールの各属性の終了点を表わす値に所定値を加算した値とを境界点とし、その境界点を用いて生成される。従って、マトリックス空間データに含まれるマトリックスデータでは、上記のように求められた境界点が、各属性の開始点、終了点として記述される。すなわち、マトリックスデータにおける各属性の開始点、終了点は、元々、ルール記憶部１１０に記憶されていたルールデータにおける各属性の開始点、終了点とは一致しない。【０３００】
このように、ルールの各属性の開始点を表わす値から所定値を減算した値とルールの各属性の終了点を表わす値に所定値を加算した値とを境界点としてマトリックス空間データを作成した場合には、「ルールを構成するマトリックス」とは、以下のようなマトリックスの集合を意味するものとする。すなわち、「ルールを構成するマトリックス」とは、マトリックスのそれぞれの属性の範囲が、ルールの条件部分が示す属性の範囲の少なくとも一部と重複しているマトリックスの集合のことを意味する。【０３０１】
図７５Ａ，図７５Ｂは、ルールの各属性の開始点を表わす値から所定値を減算した値と、ルールの各属性の終了点を表わす値に所定値を加算した値とを境界点とした場合のマトリックスの例を示す。図７５Ａに示すように、ルールＲ１の第１属性の開始点、終了点がそれぞれ２，４であり、ルールＲ２の第１属性の開始点、終了点がそれぞれ１，２であるとする。所定値を０．５とする。すると、ルールＲ１，Ｒ２から求められる第１属性の境界点は、１．５（＝２−０．５）、４．５（＝４＋０．５）、０．５（＝１−０．５）、２．５（＝２＋０．５）となる。ルールＲ１，Ｒ２から求められる第２属性の境界点は、１．５（＝２−０．５）、３．５（＝３＋０．５）、１．５（＝２−０．５）、３．５（＝３＋０．５）となる。【０３０２】
ルールＲ１，Ｒ２から求められる第１属性の境界点をソートすると、０．５，１．５，２．５，４．５となる。また、ルールＲ１，Ｒ２から求められる第２属性の境界点をソートし、また、重複する境界点を削除すると、１．５，３．５となる。よって、この第１属性の境界点０．５，１，５，２，５，４．５、及び第２属性の境界点１．５，３．５によって、図７５Ｂに破線で示すような３つのマトリックスが得られる。【０３０３】
ルールの各属性の開始点を表わす値から所定値を減算した値とルールの各属性の終了点を表わす値に所定値を加算した値とを境界点としてマトリックス空間データを作成した場合、マトリックスデータに含まれる各属性の開始点や終了点を表示するときには、所定値を加算したり、減算したりした結果を表示する。例えば、図４に示すステップＳ２１４のように、重なり分析結果として、あるルールＤによってあるルールＡのマトリックスＥの範囲がＯｖｅｒｌａｐｐｅｄであると出力する場合がある。この場合、重なり分析部１４０は、マトリックスＥにおける各属性の範囲を出力する際、マトリックスＥのマトリックスデータにおける各属性の開始点に所定値に加算した値や、各属性の終了点から所定値を減算した値を出力する。すなわち、ステップＳ１０３で所定値を減算したり、所定値を加算する前の値、言い換えれば、ルールデータに記述されているいずれかの開始点やいずれかの終了点に合致する値を出力する。【０３０４】
第８の実施形態で説明した最小多次元立方体Ｑは、マトリックスデータではなく、ルール（ルールデータ）によって定められる。最小多次元立方体Ｑの各頂点は、ルールデータに記述される各属性の開始点や終了点の組み合わせによって定められるので、最小多次元立方体Ｑの各頂点は、ステップＳ１０３で所定値の加算や減算を行った境界点から特定されるわけではない。また、最小多次元立方体Ｑの領域は、最小多次元立方体Ｑを構成するマトリックス全体の領域に包含されることになる。【０３０５】
以上説明した本発明の好ましい実施の形態において、バッファは、ルール記憶部１１０やマトリックス空間記憶部１２０の記憶領域の一部であってもよいし、ルール記憶部１１０やマトリックス空間記憶部１２０とは別の記憶装置であってもよい。マトリックス化部１３０，１３１は、空間データ作成手段に相当する。マトリックス空間データは、空間データに相当する。ルール化部１９０は、ルール作成手段に相当する。また、ルール統合部２００は、統合可能ルール特定手段及びルール統合手段に相当する。
【産業上の利用可能性】
【０３０６】
本発明は、パケットフィルタリングを行うネットワーク機器やソフトウェアのルール設定管理に適用することができる。
【図１】
0004662080.tif 000002
【図２】
0004662080.tif 000003
【図３】
0004662080.tif 000004
【図４】
0004662080.tif 000005
【図５】
0004662080.tif 000006
【図６】
0004662080.tif 000007
【図７】
0004662080.tif 000008
【図８】
0004662080.tif 000009
【図９】
0004662080.tif 000010
【図１０】
0004662080.tif 000011
【図１１】
0004662080.tif 000012
【図１２】
0004662080.tif 000013
【図１３】
0004662080.tif 000014
【図１４】
0004662080.tif 000015
【図１５】
0004662080.tif 000016
【図１６】
0004662080.tif 000017
【図１７】
0004662080.tif 000018
【図１８】
0004662080.tif 000019
【図１９】
0004662080.tif 000020
【図２０】
0004662080.tif 000021
【図２１】
0004662080.tif 000022
【図２２】
0004662080.tif 000023
【図２３】
0004662080.tif 000024
【図２４】
0004662080.tif 000025
【図２５Ａ】
0004662080.tif 000026
【図２５Ｂ】
0004662080.tif 000027
【図２６】
0004662080.tif 000028
【図２７】
0004662080.tif 000029
【図２８】
0004662080.tif 000030
【図２９】
0004662080.tif 000031
【図３０】
0004662080.tif 000032
【図３１】
0004662080.tif 000033
【図３２】
0004662080.tif 000034
【図３３】
0004662080.tif 000035
【図３４】
0004662080.tif 000036
【図３５】
0004662080.tif 000037
【図３６】
0004662080.tif 000038
【図３７】
0004662080.tif 000039
【図３８】
0004662080.tif 000040
【図３９】
0004662080.tif 000041
【図４０】
0004662080.tif 000042
【図４１Ａ】
0004662080.tif 000043
【図４１Ｂ】
0004662080.tif 000044
【図４２】
0004662080.tif 000045
【図４３】
0004662080.tif 000046
【図４４】
0004662080.tif 000047
【図４５】
0004662080.tif 000048
【図４６】
0004662080.tif 000049
【図４７】
0004662080.tif 000050
【図４８】
0004662080.tif 000051
【図４９】
0004662080.tif 000052
【図５０】
0004662080.tif 000053
【図５１】
0004662080.tif 000054
【図５２】
0004662080.tif 000055
【図５３】
0004662080.tif 000056
【図５４】
0004662080.tif 000057
【図５５】
0004662080.tif 000058
【図５６】
0004662080.tif 000059
【図５７】
0004662080.tif 000060
【図５８】
0004662080.tif 000061
【図５９】
0004662080.tif 000062
【図６０】
0004662080.tif 000063
【図６１】
0004662080.tif 000064
【図６２】
0004662080.tif 000065
【図６３】
0004662080.tif 000066
【図６４】
0004662080.tif 000067
【図６５】
0004662080.tif 000068
【図６６】
0004662080.tif 000069
【図６７】
0004662080.tif 000070
【図６８】
0004662080.tif 000071
【図６９】
0004662080.tif 000072
【図７０】
0004662080.tif 000073
【図７１Ａ】
0004662080.tif 000074
【図７１Ｂ】
0004662080.tif 000075
【図７２】
0004662080.tif 000076
【図７３】
0004662080.tif 000077
【図７４Ａ】
0004662080.tif 000078
【図７４Ｂ】
0004662080.tif 000079
【図７５Ａ】
0004662080.tif 000080
【図７５Ｂ】
0004662080.tif 000081