(57)【要約】  本発明は、サイバー攻撃を防ぐ技術であるパケットフィルタのルールセットを、論理式の計算に適した木構造で表現し、処理効率を向上させるパケットフィルタ装置、及びそのパケットフィルタ方法に関する。  パケットフィルタ装置は、条件とアクションとを対応付けたルールと、ルールの条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットと、ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析部と、パケット解析部が抽出した照合情報とＺＤＤとを照合し、照合情報が合致する条件に対応付けられたアクションを実行して、パケットの通信を許可または拒否するフィルタ部とを備える。
2016185513.tif 000002
【特許請求の範囲】
【請求項１】
条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットと、
ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析部と、
前記パケット解析部が抽出した前記照合情報と前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタ部と
を備えるパケットフィルタ装置。
【請求項２】
前記フィルタ部は、前記照合情報と前記ＺＤＤとの照合において、照合が完了した前記論理変数の値を０で上書きし、前記ＺＤＤの全体に対して照合が完了した際に、０で上書きされた前記論理変数を含む前記論理式の値が０であるか否かを判定する請求項１記載のパケットフィルタ装置。
【請求項３】
前記フィルタ部は、前記ＺＤＤの全体に対して照合が完了した際に、前記ＺＤＤにより計算された前記論理式の値が０である場合に前記論理式の値の判定結果を０とし、前記ＺＤＤにより計算された前記論理式の値が１である場合に、０で上書きされた前記論理変数を含む前記論理式の値が０であれば前記論理式の値の判定結果を１とし、０で上書きされた前記論理変数を含む前記論理式の値が０でないならば前記論理式の値の判定結果を０とする請求項２記載のパケットフィルタ装置。
【請求項４】
前記ルールセットは、前記パケットを観測して得られた前記照合情報の統計的な０と１の出現傾向に従って前記論理変数のビットの値を反転させた前記論理式を表現するビット反転ＺＤＤを格納し、
前記フィルタ部は、前記ルールセットに格納された前記ビット反転ＺＤＤを用いて、前記照合情報と前記ＺＤＤとを照合する請求項１記載のパケットフィルタ装置。
【請求項５】
条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットを記憶する記憶部とパケット解析部とフィルタ部とを備えるパケットフィルタ装置のパケットフィルタ方法であって、
前記パケット解析部が、ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析ステップと、
前記フィルタ部が、前記パケット解析部が抽出した前記照合情報と前記記憶部に格納された前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタステップと
を備えるパケットフィルタ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サイバー攻撃を防ぐ技術であるパケットフィルタのルールセットを、論理式の計算に適した木構造で表現し、処理効率を向上させるパケットフィルタ装置、及びそのパケットフィルタ方法に関する。
【背景技術】
【０００２】
情報システムに対するサイバー攻撃が急増しており、サイバー攻撃への対策が求められている。サイバー攻撃の侵入経路として、ネットワークやＵＳＢメモリが代表的である。従来、ネットワークからのサイバー攻撃を防ぐ技術として、パケットフィルタがある。パケットフィルタは、ルールセットに従って、パケットの通過を許可、または拒否する仕組みである。ルールセットは、パケットが満たすべき条件と、パケットが条件を満たしたときのアクションを記述したルールとからなる。ここでアクションとは、パケット通過の許可、または拒否である。ルールセット内でのルールの並びには順序があり、その順序に従ってパケットとルールとの照合が行なわれる。パケットがルールに記述された条件を満たすことを、「パケットがルールにマッチする」、「パケットとルールがマッチする」などという。パケットフィルタは、パケットを受信すると、ルールセット内での順序に従ってパケットとルールとの照合を行ない、ルールにマッチすればそのルールに定められたアクションに従ってパケットを許可または拒否し、マッチしなければ次のルールとの照合に進む。ルールセットの最後には、デフォルトルールと呼ばれる全てのパケットにマッチするルールが置かれる。これにより、パケットが、他のどのルールにもマッチしない場合であっても、必ずデフォルトルールによって処理される仕組みになっている。【０００３】
システムやシステムに対する攻撃が複雑化するに従って、対応するパケットフィルタのルールセットは大きくなる。一方、パケットとルールとの照合は順序に従って１つ１つ行われるため、ルールの数が増えれば、それに比例して照合が完了するまでにかかる時間が増える。従って、処理を効率化するための技術が必要である。【０００４】
特許文献１には、ルールセット内でルールの順序を入れ替えることでパケットフィルタを高速化する技術が開示されている。特許文献１のアイデアは、パケットに頻繁にマッチするルールほど前方に、頻繁にマッチしないルールほど後方に置くことで処理が効率化されるというもので、その目的のためルールセット内でのルールの入れ替えを動的に行なう。すなわち、パケットフィルタの動作時に、各ルールがパケットにマッチした回数を記録し、その回数に従ってルールの入れ替えを行なう。ただし、ルールの入れ替えによってルールセットの意味が変わることは許されないので、２つのルール同士が衝突しない場合に限り、それら２つのルールを入れ替える。ここで、２つのルールが衝突するとは、それらのアクションが異なり、かつ、それらに記述されたいずれかの条件に重複があることである。例えば、宛先アドレスによって指定される条件を考える。一方のルールでは、192.168.0.1〜192.168.0.100という範囲が条件として記述され、他方のルールでは、192.168.0.50〜192.168.0.150という範囲が条件として記述されているとすると、これらの条件は重複している。【０００５】
非特許文献１には、通常の照合を行なう前に、それとは別の照合処理を行なって大部分のパケットを高速にふるい落とすことで、パケットフィルタを高速化する技術が開示されている。ルールを論理式と見なし、パケットのビット列を論理式に代入する値と見なすと、パケットがルールにマッチするのは論理式の値が１になるときであり、そのときに限られる。従って、パケットとルールとの照合を、論理式の計算で実現することができる。そこで、論理式の値の計算に適したデータ構造を用いることで、高速な照合が実現できる。非特許文献１は、ＢＤＤと呼ばれる木構造のデータ構造によって高速な照合を実現している。ただし、ＢＤＤでルールセットを表現するには、大きな記憶領域が必要であるため、ルールセット全体をＢＤＤで表すことは難しい。そこで、ＢＤＤの木の走査は、一定の深さまでで打ち切ることとしている。これを本来のパケットフィルタの前処理として行ない、大部分のパケットをふるい落とし、残ったパケットに対して通常の照合処理を行なうことで、パケットフィルタ全体の処理時間を短縮することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１７４８０８号公報
【非特許文献】
【０００７】
【非特許文献１】Ｅｌ−Ａｔａｗｙ，  ｅｔ  ａｌ．，“Ａｄａｐｔｉｖｅ  Ｅａｒｌｙ  Ｐａｃｋｅｔ  Ｆｉｌｔｅｒｉｎｇ  ｆｏｒ  Ｄｅｆｅｎｄｉｎｇ  Ｆｉｒｅｗａｌｌｓ  ａｇａｉｎｓｔ  ＤｏＳ  Ａｔｔａｃｋｓ，”ＩＥＥＥ  ＩＮＦＯＣＯＭ，２００９．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献１に記載のＢＤＤを用いるパケットフィルタは、ＢＤＤが木構造のデータ構造であるため、木構造の深さが増えるにつれ必要な記憶領域が指数関数的に増大する。従って、ルールセット全体を記憶領域に保持することができないため、ＢＤＤによる処理を一定の深さまでで打ち切る必要があるという課題があった。【０００９】
本発明は、上記のような課題を解決するためになされたもので、論理式の計算に適した木構造でルールセット全体を処理できるようにすることにより、高速なパケットフィルタを実現することを目的とする。
【課題を解決するための手段】
【００１０】
上記で述べた課題を解決するため、本発明のパケットフィルタ装置は、条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットと、ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析部と、前記パケット解析部が抽出した前記照合情報と前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタ部とを備える。【００１１】
また、本発明のパケットフィルタ方法は、条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットを記憶する記憶部とパケット解析部とフィルタ部とを備えるパケットフィルタ装置のパケットフィルタ方法であって、前記パケット解析部が、ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析ステップと、前記フィルタ部が、前記パケット解析部が抽出した前記照合情報と前記記憶部に格納された前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタステップとを備える。
【発明の効果】
【００１２】
本発明によれば、論理式をＺＤＤによって記述するようにしているので、論理式の計算のために保持すべきデータサイズを小さくでき、また、ＺＤＤを論理式の計算に使用すると計算間違いが生じるが、それを訂正する仕組みを備えるので、論理式を正しく高速に計算できるという効果が得られる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係るパケットフィルタ装置の一構成例を示す図である。
【図２】実施の形態１に係るパケットフィルタ装置の適用対象となる侵入検知装置のネットワーク構成例（その１）を示す図である。
【図３】実施の形態１に係るパケットフィルタ装置の適用対象となる侵入検知装置のネットワーク構成例（その２）を示す図である。
【図４】侵入検知装置１のハードウェア構成例を示す図である。
【図５】侵入検知のルールセットの一例を示す図である。
【図６】パケットとルールの文字列の照合を説明する図である。
【図７】ルールセットを論理式として記述する例を説明する図である。
【図８】論理式を木構造で表現する例を説明する図である。
【図９】論理式をＺＤＤによるデータ構造で表現する例を示す図である。
【図１０】二分決定木の簡約化規則を説明する図である。
【図１１】ＺＤＤによる論理式の計算結果の例を示す図である。
【図１２】ＺＤＤによる論理式の計算の流れを示すフローチャートである。
【図１３】実施の形態２に係るビット反転処理を説明する図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
以下、図を参照しながら、本実施の形態のパケットフィルタ装置の構成と動作を説明する。
図１は、実施の形態１に係るパケットフィルタ装置の一構成例を示す図である。
図２は、実施の形態１に係るパケットフィルタ装置の適用対象となる侵入検知装置のネットワーク構成例（その１）を示す図である。
図３は、実施の形態１に係るパケットフィルタ装置の適用対象となる侵入検知装置のネットワーク構成例（その２）を示す図である。
【００１５】
まず、図２と図３を用いて、パケットフィルタ装置が適用されるネットワーク構成例について説明する。
社内ＬＡＮをインターネットに接続する際、社内ＬＡＮのセキュリティを守る目的で、社内ＬＡＮとインターネットとの間の通信を制御するファイアウォールと呼ばれる装置を、社内ＬＡＮとインターネットの境界に設置するのが通常である。図２では、上述のような標準的なネットワーク構成に侵入検知装置が加わった構成となっている。すなわち、社内ＬＡＮなどの内部ネットワーク１０が、侵入検知装置１とファイアウォール９を介して、インターネットなどの外部ネットワーク８に接続されている。ここで、ファイアウォール９と侵入検知装置１は、機能的な違いから別々のブロックとして表記しているが、物理的な装置としては、別の装置であっても良いし、同じ装置であっても良い。
【００１６】
また、図３のネットワーク構成は、パケットフィルタ装置が適用されるネットワーク構成のもう１つの例を示す。図２との違いは、侵入検知装置１を設置している位置である。図２では、ファイアウォール９と内部ネットワーク１０を接続する通信回線の途中に侵入検知装置１を設置し、ファイアウォール９と内部ネットワーク１０の間の通信を遮っている。しかし、図２では、ファイアウォール９と内部ネットワーク１０の途中で通信回線を分岐させた先に侵入検知装置１を設置しており、ファイアウォール９と内部ネットワーク１０の間の通信は遮られていない。この設置位置の違いは、パケットに対する侵入検知の結果、パケットをどう処理するかに対応している。すなわち、侵入検知の結果、パケットを遮断する場合には、図２の構成が必要となるが、パケットの遮断はせず、例えばアラートを上げるのみに留める場合は、図３の構成で十分である。
【００１７】
次に、図１を用いて、実施の形態１に係るパケットフィルタ装置の構成を説明する。
図１において、侵入検知装置１は、ファイアウォール９を通過したパケットを受信する受信部２、受信したパケットの通信を許可、または拒否するパケットフィルタ装置３、通信を許可されたパケットを内部ネットワークに送信する送信部７を備える。
【００１８】
パケットフィルタ装置３は、パケット解析部４、ルールセット５、フィルタ部６を備える。
パケット解析部４は、受信したパケットを解析して、ルールの条件と照合する照合情報を抽出する。ルールセット５は、条件とアクションとを対応付けたルールを格納する。フィルタ部６は、パケットから抽出した照合情報とルールの条件とを照合し、両者が合致したルールのアクションを実行する。
【００１９】
図４は、侵入検知装置１のハードウェア構成例を示す図である。
図４において、侵入検知装置１は、一般的なコンピュータと同様のハードウェア構成として実現され、バス１１に、プロセッサ１２とメモリ１３、そして、ＬＡＮなどのネットワークポート１４と１５が接続された構成となっている。図４では、図２のシステム構成を想定した２個のネットワークポートを備えた構成であり、ネットワークポート１４が外部ネットワーク側、ネットワークポート１５が内部ネットワーク側に接続される構成となっている。
【００２０】
受信部２は、ネットワークポート１４であり、送信部７は、ネットワークポート１５である。
【００２１】
プロセッサ１２は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。メモリ１３は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。
【００２２】
プログラムは、メモリ１３にロードされた状態で、順次、プロセッサ１２に読み込まれ、実行される。このプログラムは、パケットフィルタ装置３を構成するパケット解析部４、フィルタ部６として説明している機能を実現するプログラムである。
【００２３】
また、ルールセット５が記憶する情報やデータ、フィルタ部６の処理の結果を示す情報やデータや信号値や変数値が、メモリ１３にファイルとして記憶されている。
【００２４】
なお、図４の構成は、あくまでも各装置のハードウェア構成の一例を示すものであり、各装置のハードウェア構成は図４に記載の構成に限らず、他の構成であってもよい。
【００２５】
次に、パケットフィルタ装置３のルールセット５に格納されるルールについて詳細に説明する。
図５は、侵入検知のルールセットの一例を示す図である。
図５では、侵入検知のルールセットの例として、３つのルールからなるルールセット１６を示している。ルールセット１６は、ルールの例として、ＩＰパケットの送信元アドレスと送信先アドレスを条件として照合を行ない、照合結果に応じたアクションとして、通信の許可、または拒否を行なう例を示している。ルールに含まれるアスタリスク＊は、任意の値を許すワイルドカードを表わす。ルールＲ１は、パケットの送信元アドレスが 192.168.0.* であり、かつ、送信先アドレスが 192.168.0.* であれば、そのパケットの通信を許可することを意味している。ルールＲ２は、送信元アドレスが 192.168.1.10 であり、かつ、送信先アドレスが 192.168.0.* であれば、そのパケットの通信を許可することを意味している。ルールＲ３は、送信元アドレスが 192.168.1.* であり、かつ、送信先アドレスが 192.168.0.* であれば、そのパケットの通信を拒否することを意味している。
【００２６】
通常、パケットとルールの照合は、ルールセット１６の上に書かれたルールから順番に行なわれる。従って、送信元アドレスが 192.168.1.10 で、送信先アドレスが 192.168.0.* であるパケットは、ルールＲ２とＲ３の両方を満たすが、ルールＲ２の方が先に照合されるため、ルールＲ２との照合結果に従って通信を許可される。ただし、通常このような送信元および送信先アドレスに基づく通信の制御は、ファイアウォール９の機能である。侵入検知装置１は、アドレス以外のより詳細なデータも利用して通信の制御を行なうのが普通であるが、ここでは説明のためアドレスのみで通信の制御を行なう例を示している。
【００２７】
通常、図５のルールセット１６は、テキストファイルとして記述されており、上述したパケットとルールの照合は、文字列の照合として実現される。
図６は、パケットとルールの文字列の照合を説明する図である。
図６において、ルールに記述された送信元アドレスの文字列１７と、パケットの送信元アドレスの文字列１８とを、１文字列ずつ比較することで、ルールとパケットがマッチするかどうか判定される。
【００２８】
次に、パケットフィルタのルールセットを論理式として記述する例を説明する。
図７は、ルールセットを論理式として記述する例を説明する図である。
図７では、簡単のため、アドレスを３ビット値（０から７までの整数値）とし、ルールとパケットがマッチした場合のアクションは省略している。そして、マッチの条件となる送信元と送信先の値を２進法で表記している。例えば、ルールＲ１は、送信元アドレスが１１＊で、送信先アドレスが＊＊＊であるようなパケットとマッチするが、これを１０進法で表せば、送信元アドレスが６、または７で、送信先アドレスが０〜７であるようなパケットとマッチするということである。
【００２９】
ここで、送信元と送信先のアドレスを合わせて６ビットが条件として使用されているが、このそれぞれのビットを、論理変数ｘ１,ｘ２,・・・,ｘ６と見なすことを考える。すると、ルールＲ１が満たされるのは、ｘ１とｘ２がともに１であるときであり、それ以外の論理変数の値は何でも良い。このような条件は、論理変数の論理積で表すことが可能であり、ルールＲ１の場合は、論理積１９のように表すことができる。実際、論理積１９は、ｘ１とｘ２がともに１であるとき、そのときに限り１になるので、論理積１９の値が１であるかどうかで、パケットとルールのマッチングを判定することができる。
【００３０】
ルールＲ２も同様に、論理積２０のように表すことができ、ルールＲ１とＲ２を合わせたルールは、それらの論理和２１として表すことができる。ただし、一般には、ルール間には依存関係があり、ルールを照合する順番によってフィルタリング結果が変わる。従って、単純に２１のような論理和を取ると、そのような依存関係が失われることに注意が必要である。それを防ぐには、論理和を取る前にルールの変形を行ない、２２に示すような論理和を取る必要がある。２２において、ｆ（Ｒ）は、ルールＲに対応する論理式を表すとする。２２において、論理積２３は、「ルールＲ１を満たさない、かつ、ルールＲ２を満たす」ことを意味しているので、ルールＲ１が満たされる場合は、論理積２３は満たされない、すなわち、ルールＲ２が満たされるかどうかは無視される。従って、ルールＲ１を先に照合するという元の依存関係が実現されていることがわかる。
【００３１】
次に、上述した論理式を木構造で表現する例について説明する。
図８は、論理式を木構造で表現する例を説明する図である。
図８の２４では、論理式２５が、二分決定木と呼ばれる木構造で表現されている。二分決定木では、論理変数の値に従って枝を辿ると、論理式の値が終端ノードとして与えられる。例えば、（ｘ１，ｘ２，ｘ３）＝（１，０，１）に対する論理式２５の値は１であるが、その計算は、二分決定木において、枝２６、２７、２８を辿り、終端ノード２９の値を確認することに対応している。このように、二分決定木を用いれば、論理変数の数と同じ回数の枝の走査によって論理式の値を求めることができるため、特に、論理変数の数が増えて論理式が複雑になった場合、論理式を四則演算するよりも高速に値を求めることができる。従って、パケットフィルタのルールを図７のように論理式で表現することと併せて、図８のように木構造で表現することにより、高速なパケットフィルタを実現することができる。
【００３２】
しかし、２４のような最も単純な二分決定木では、各論理変数の値０、１に対応する分岐を全てデータとして保持するため、論理変数の数が増えるとデータを保持するために必要な記憶領域が指数関数的に増え、全てのデータを保持することができなくなる。
【００３３】
そこで、本発明の基本アイデアとして、二分決定木を簡約化したＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）と呼ばれるデータ構造を利用して論理式の計算を行なう。
図９は、論理式をＺＤＤによるデータ構造で表現する例を示す図である。
図９において、３０のＺＤＤは、２４の二分決定木を、後述する簡約化規則に従って簡約化したものである。ＺＤＤは、３１のような組み合わせ集合に対する演算を行なうのに適したデータ構造である。組み合わせ集合とは、変数の組み合わせを要素とする集合であり、ＺＤＤでは、データが組み合わせ集合を満たすかどうかを効率的に判定できる。３０のＺＤＤでは、データが、組み合わせｘ１ｘ３、もしくはｘ２を満たすかどうかを判定できる。例えば、枝３２、３３を辿ると、終端ノード３４に到達し、終端ノード３４の値は１である。これは、（ｘ１，ｘ３）＝（１，１）が組み合わせ集合を満たす、具体的には、組み合わせｘ１ｘ３を満たすことに対応している。ここで本来は、ｘ２＝０であることもチェックする必要があるが、そのチェックは省略されており、ＺＤＤでは１のチェックのみを行なっているといえる。従って、大部分のビットが０であるような疎データであれば、大部分のチェックが省略される。このようにして、ＺＤＤでは、データを保持するために必要な記憶領域を、場合によっては指数関数的に減らせることが知られている。
【００３４】
次に、二分決定木の簡約化規則について説明する。
図１０は、二分決定木の簡約化規則を説明する図である。
【００３５】
図１０の３５が、簡約化規則を模式的に示している。二分決定木３６において、ノード３８に注目する。ノード３８の分岐元は部分木３７であり、ノード３８から値０で分岐した先は部分木３９であり、ノード３８から値１で分岐した先は終端ノード４０であるとし、終端ノード４０の値は０であるとする。このように、あるノードから値１で分岐した先が値０の終端ノードであるとき、そのノードを削除し、前後の部分木をつなぐ。二分決定木３６の場合、ノード３８を削除し、部分木３７と部分木３９をつなぐ簡約化が実行され、簡約化された二分決定木４１が得られる。
【００３６】
本発明では、ＺＤＤを、組み合わせ集合の演算ではなく、論理式の計算に利用する。
図１１は、ＺＤＤによる論理式の計算結果の例を示す図である。
図１１において、計算対象の論理式は４２であり、これは、図８の２５と同じものである。この論理式が、図１０の３０で示したＺＤＤで表され、この論理式の値の計算は、３０で示したＺＤＤの枝を辿ることによって行なわれる。そのようにして求めた計算結果を、図１１に示している。
【００３７】
しかし、図１１の計算結果では、（ｘ１，ｘ２，ｘ３）＝（０，１，１）、および（１，１，１）の場合に、ＺＤＤによる計算結果が間違っていることが分かる。これは、ＺＤＤでは値が０であることのチェックが省略されるためである。例えば、（ｘ１，ｘ２，ｘ３）＝（１，１，１）の場合、図１０のＺＤＤ３０において、枝３２と枝３３を辿り、終端ノード３４に到達することによって論理式の値が１と決定されるが、この過程において、変数ｘ２の値が０であることのチェックは省略され、（ｘ１，ｘ３）＝（１，１）であることのみチェックされている。（ｘ１，ｘ３）＝（１，１）であるとき、それに加え、もしｘ２＝０であれば、（ｘ１，ｘ２，ｘ３）＝（１，０，１）であり、この値の組を論理式４２に代入すれば１になるので、ＺＤＤによる計算結果は正しいことになる。この結果は、表４３のパケット６に対応している。しかし、もしｘ２＝１であれば、（ｘ１，ｘ２，ｘ３）＝（１，１，１）であり、この値の組を論理式４２に代入すれば０になるので、ＺＤＤによる計算結果は間違っていることになる。この結果は、表４３のパケット８に対応している。一方、ＺＤＤによる計算結果が０になる場合、すなわち枝を辿った結果、値が０の終端ノードに達する場合は、途中で０のチェックを省略していたとしても、すなわちチェックを省略した論理変数の値が何であっても、この計算結果は正しい。この事実は、図１０の３５で示した簡約化規則から従う。
【００３８】
以上のように、ＺＤＤでは論理式の計算が正確には行なえないため、それを訂正する仕組みが必要である。ＺＤＤによる計算間違いが生じるのは、ＺＤＤによる計算結果が１であるとき、かつ、ＺＤＤによる計算過程で値のチェックを省略した論理変数の中に、値が１であるものが含まれるときである。従って、ＺＤＤによる計算結果が１であるとき、ＺＤＤの計算過程で値のチェックを省略した変数の値が全て０であれば、ＺＤＤによる計算結果は正しい。そうでなければ、ＺＤＤによる計算結果は間違っており、正しい結果は０である。このことから、ＺＤＤによる計算結果が１であるときは、ＺＤＤの計算過程で値のチェックを省略した変数について、値が全て０であるか、そうでないかをチェックすることにより、正しい結果が得られる。
【００３９】
しかし、特定の論理変数の値のみをチェックするには、その論理変数の番号を記憶する必要があるなどコストがかかる。そこで本発明は、全ての論理変数を一括でチェックするため、以下の仕組みをフィルタ部６に備える。フィルタ部６では、ＺＤＤによる計算過程で、論理変数の値をチェックする度に、その論理変数の値を０に書き換えていく。ただし、元から０である場合は、そのままで良い。このような処理を行なうと、ＺＤＤによる計算結果が１であるとき、値が１であるべき論理変数は全て０に書き換わっており、値のチェックを省略した残りの論理変数は値が０でなければならない。そこで、個々の論理変数ではなく、全ての論理変数をまとめた全体として値が０に等しいかどうかを判定し、等しければ全体の判定結果は１で確定、等しくなければ全体の判定結果は０で確定とする。このような０判定は、通常、ＣＰＵの１命令で実行可能である。一方、既に述べた通り、ＺＤＤによる計算結果が０であるときは、このような最後の０判定は不要で、論理式の値は０で確定している。
【００４０】
上記で説明したＺＤＤによる論理式の計算を、計算間違いの訂正処理も含めて、フローチャートを用いて以下で詳細に説明する。
図１２は、ＺＤＤによる論理式の計算の流れを示すフローチャートである。
図１２の処理は、フィルタ部６により実行される。
【００４１】
まず、ステップＳ１０１で、ｎビットの入力データ４４がフィルタ部６に入力される。この入力データは、パケット解析部４が出力する、ルールの条件と照合する照合情報に相当する。フィルタ部６は、入力データ４４を、ｎビットの一時変数４５に保持する。ここで、入力データの第ｋビットが、論理変数ｘ（ｋ）に対応しているとし、一時変数４５の第ｋビットをｘ（ｋ）と表すことにする。また、一時変数４５のｎビット全体としてｘと表すことにすると、ｘ＝（ｘ（１），…，ｘ（ｎ））である。
【００４２】
次に、ステップＳ１０２からＳ１０６は、ＺＤＤにおいて枝を辿る処理に対応するループであり、これによってＺＤＤによる論理式の計算が実行される。ＺＤＤにおいて現在注目しているノードの論理変数をｘ（ｋ）とすると、ステップＳ１０３で、一時変数の第ｋビットであるｘ（ｋ）の値をチェックし、その値に従って、ステップＳ１０４で枝を辿る。そして、ステップＳ１０５で、一時変数の第ｋビットであるｘ（ｋ）を０にする。ＺＤＤの計算が完了するとループを抜け、ステップＳ１０７でＺＤＤの計算結果に従って処理を分岐させる。計算結果が０であれば、これは正しい結果であることが確定しているので、ステップＳ１０９において最終結果として０を出力する。一方、ステップＳ１０７の計算結果が１であれば、この計算結果は、まだ正しいかどうかが確定していないので、それを確定させるため、ステップＳ１０８の０判定に進む。
【００４３】
ステップＳ１０８では、一時変数ｘが０であるかどうかを判定し、０であればステップＳ１１０において最終結果１を出力し、０でなければ、ステップＳ１０９において、最終結果０を出力する。ただし、ステップＳ１０８の０判定は、各ビットｘ（ｋ）に対する０判定を合計ｎ回行なうのではなく、ｎビット値ｘに対する０判定を１回行なう。
【００４４】
以上のように、本実施の形態１のパケットフィルタ装置は、論理式をＺＤＤによって記述するようにしているので、論理式の計算のために保持すべきデータサイズを小さくでき、また、ＺＤＤを論理式の計算に使用すると計算間違いが生じるが、それを訂正する仕組みを備えるので、論理式を正しく高速に計算できるという効果が得られる。
【００４５】
実施の形態２．
ＺＤＤは、多くのビットが０であるような疎データに対して、簡約化によるサイズの縮小効果が高くなる。そこで、パケットフィルタのルールを論理式として記述する前に、対象システムで発生する実通信の統計的な性質を利用し、データが疎になるように論理変数を変換することによって、論理式をＺＤＤで記述した際のサイズをさらに小さくできる可能性がある。そこで本実施の形態２では、パケットデータにおける各ビットが０となる割合が高いか、１となる割合が高いかに応じて、パケットデータに対するビット反転処理を行なうことによって、反転後のパケットデータにおいては、各ビットが０となる割合の方が高くなるようにする。パケットデータの各ビットが０または１となる割合は、対象システムの本格運用前に、あらかじめ実通信を観測することによって得られる。
【００４６】
図１３は、実施の形態２に係るビット反転処理を説明する図である。
図１３では、論理変数の値を反転させることによって、パケットデータの各ビットが０になる割合が高くなるようにする方法を示している。
【００４７】
図１３では、パケットデータは４ビット長で、各ビットは、論理変数ｘ１，…，ｘ４に対応付けられているとする。実通信で流れるパケットを、例えば１００個観測すると、パケットの第１ビットに関して１００個の値が得られ、その内の何個が０で、何個が１であるかの統計データが得られる。このようにして、あるシステムで実通信を観測した結果得られた統計データの例を、表４８に示す。
【００４８】
表４８では、パケットの第１ビットｘ１が０である割合は９０％、１である割合は１０％であり、第１ビットでは、０が出る割合の方が高い。従って、ＺＤＤで論理式を表現した際に、ｘ１に関する部分は大きく簡約化されると期待できる。一方、第２ビットｘ２が０である割合は２０％、１である割合は８０％であり、第２ビットでは１が出る割合の方が高い。従って、ＺＤＤで論理式を表現した際に、ｘ２に関する部分はあまり簡約化されないと考えられる。そこで、第２ビットの値を反転させることによって、０である割合が８０％、１である割合が２０％であるようにする。その結果、反転させた第２ビットでは０が出る割合の方が高くなり、ＺＤＤで論理式を表現した際に、反転させたｘ２に関する部分は大きく簡約化されると期待できる。
【００４９】
なお、ビットの反転は、論理変数に対しては論理否定を取ることに対応しており、「反転させたｘ２」とは「ｘ２の論理否定」を意味する。第３、第４ビットに関しても同様であり、全体として、論理式４９で示すように、４ビット値（ｘ１，ｘ２，ｘ３，ｘ４）に対して、４ビット値０１１０との排他的論理和を行なって第２、第３ビットの値を反転させておけば、表５０に示すように、全てのビットにおいて０が出る割合の方が高くなるようにできる。このように、ビット反転処理を行なったパケットに対するルールを論理式として表わし、ＺＤＤに変換すれば、疎データに対するＺＤＤを作成したこととなり、サイズが小さいＺＤＤが得られる。このようにビット反転処理を行なって作成したＺＤＤを、ビット反転ＺＤＤと呼ぶ。ここで、元のビットとその値を反転させたビットは１対１対応しているので、ビット反転後のパケットに対するフィルタリング結果は、元のパケットに対するフィルタリング結果に等しい。従って、ビット反転処理によって、ＺＤＤのサイズを小さくしつつ、元と同じフィルタリング結果が得られる。
【００５０】
以上のように、対象システムの実通信の観測結果に基づき、必要に応じてビット反転処理を行ない、全てのビットにおいて値が０である割合の方が高くなるようにして、データが疎になるようにしているので、それに対応する論理変数を用いた論理式によってパケットフィルタのルールを表わし、そのルールをＺＤＤで表わした際に、ＺＤＤのサイズを小さくすることができるという効果が得られる。
【符号の説明】
【００５１】
１  侵入検知装置、２  受信部、３  パケットフィルタ装置、４  パケット解析部、５  ルールセット、６  フィルタ部、７  送信部、８  外部ネットワーク、９  ファイアウォール、１０  内部ネットワーク、１１  バス、１２  プロセッサ、１３  メモリ、１４，１５  ネットワークポート、１６  ルールセットの例、１７  ルールに記述された送信元アドレスの文字列、１８  パケットの送信元アドレスの文字列、１９〜２３，２５，４２，４９  論理式、２４，３６  二分決定木、２６〜２８  枝、２９，４０  終端ノード、３０  ＺＤＤ、３１  組み合わせ集合、３２，３３  枝、３４  終端ノード、３５  簡約化規則、３７，３９  部分木、３８  ノード、４１  簡約化された二分決定木、４３  ＺＤＤによる計算結果、４４  入力データ、４５〜４７  一時変数、４８  実通信を観測した結果得られた統計データの例、５０  ビット反転処理の例。
【図１】
2016185513.tif 000003
【図２】
2016185513.tif 000004
【図３】
2016185513.tif 000005
【図４】
2016185513.tif 000006
【図５】
2016185513.tif 000007
【図６】
2016185513.tif 000008
【図７】
2016185513.tif 000009
【図８】
2016185513.tif 000010
【図９】
2016185513.tif 000011
【図１０】
2016185513.tif 000012
【図１１】
2016185513.tif 000013
【図１２】
2016185513.tif 000014
【図１３】
2016185513.tif 000015
【手続補正書】
【提出日】平成29年3月22日(2017.3.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットと、
ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析部と、
前記パケット解析部が抽出した前記照合情報と前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタ部と
を備え、
前記フィルタ部は、前記照合情報と前記ＺＤＤとの照合において、照合が完了した前記論理変数の値を０で上書きし、前記ＺＤＤの全体に対して照合が完了した際に、０で上書きされた前記論理変数を含む前記論理式の値が０であるか否かを判定するパケットフィルタ装置。
【請求項２】
前記フィルタ部は、前記ＺＤＤの全体に対して照合が完了した際に、前記ＺＤＤにより計算された前記論理式の値が０である場合に前記論理式の値の判定結果を０とし、前記ＺＤＤにより計算された前記論理式の値が１である場合に、０で上書きされた前記論理変数を含む前記論理式の値が０であれば前記論理式の値の判定結果を１とし、０で上書きされた前記論理変数を含む前記論理式の値が０でないならば前記論理式の値の判定結果を０とする請求項１記載のパケットフィルタ装置。
【請求項３】
条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットと、
ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析部と、
前記パケット解析部が抽出した前記照合情報と前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタ部と
を備え、
前記ルールセットは、前記パケットを観測して得られた前記照合情報の統計的な０と１の出現傾向に従って前記論理変数のビットの値を反転させた前記論理式を表現するビット反転ＺＤＤを格納し、
前記フィルタ部は、前記ルールセットに格納された前記ビット反転ＺＤＤを用いて、前記照合情報と前記ＺＤＤとを照合するパケットフィルタ装置。
【請求項４】
条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットを記憶する記憶部とパケット解析部とフィルタ部とを備えるパケットフィルタ装置のパケットフィルタ方法であって、
前記パケット解析部が、ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析ステップと、
前記フィルタ部が、前記パケット解析部が抽出した前記照合情報と前記記憶部に格納された前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタステップと
を備え、
前記フィルタ部は、前記照合情報と前記ＺＤＤとの照合において、照合が完了した前記論理変数の値を０で上書きし、前記ＺＤＤの全体に対して照合が完了した際に、０で上書きされた前記論理変数を含む前記論理式の値が０であるか否かを判定するパケットフィルタ方法。
【請求項５】
条件とアクションとを対応付けたルールと、前記ルールの前記条件を論理変数で記述した論理式を表現するＺＤＤ（Ｚｅｒｏ−Ｓｕｐｐｒｅｓｓｅｄ  Ｂｉｎａｒｙ  Ｄｅｃｉｓｉｏｎ  Ｄｉａｇｒａｍ）とを格納するルールセットを記憶する記憶部とパケット解析部とフィルタ部とを備えるパケットフィルタ装置のパケットフィルタ方法であって、
前記パケット解析部が、ネットワークから受信したパケットを解析して照合対象となる文字列である照合情報を抽出するパケット解析ステップと、
前記フィルタ部が、前記パケット解析部が抽出した前記照合情報と前記記憶部に格納された前記ＺＤＤとを照合し、前記照合情報が合致する前記条件に対応付けられた前記アクションを実行して、前記パケットの通信を許可または拒否するフィルタステップと
を備え、
前記ルールセットは、前記パケットを観測して得られた前記照合情報の統計的な０と１の出現傾向に従って前記論理変数のビットの値を反転させた前記論理式を表現するビット反転ＺＤＤを格納し、
前記フィルタ部は、前記ルールセットに格納された前記ビット反転ＺＤＤを用いて、前記照合情報と前記ＺＤＤとを照合するパケットフィルタ方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
また、図３のネットワーク構成は、パケットフィルタ装置が適用されるネットワーク構成のもう１つの例を示す。図２との違いは、侵入検知装置１を設置している位置である。図２では、ファイアウォール９と内部ネットワーク１０を接続する通信回線の途中に侵入検知装置１を設置し、ファイアウォール９と内部ネットワーク１０の間の通信を遮っている。しかし、図３では、ファイアウォール９と内部ネットワーク１０の途中で通信回線を分岐させた先に侵入検知装置１を設置しており、ファイアウォール９と内部ネットワーク１０の間の通信は遮られていない。この設置位置の違いは、パケットに対する侵入検知の結果、パケットをどう処理するかに対応している。すなわち、侵入検知の結果、パケットを遮断する場合には、図２の構成が必要となるが、パケットの遮断はせず、例えばアラートを上げるのみに留める場合は、図３の構成で十分である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
本発明では、ＺＤＤを、組み合わせ集合の演算ではなく、論理式の計算に利用する。
図１１は、ＺＤＤによる論理式の計算結果の例を示す図である。
図１１において、計算対象の論理式は４２であり、これは、図８の２５と同じものである。この論理式が、図９の３０で示したＺＤＤで表され、この論理式の値の計算は、３０で示したＺＤＤの枝を辿ることによって行なわれる。そのようにして求めた計算結果を、図１１に示している。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
しかし、図１１の計算結果では、（ｘ１，ｘ２，ｘ３）＝（０，１，１）、および（１，１，１）の場合に、ＺＤＤによる計算結果が間違っていることが分かる。これは、ＺＤＤでは値が０であることのチェックが省略されるためである。例えば、（ｘ１，ｘ２，ｘ３）＝（１，１，１）の場合、図９のＺＤＤ３０において、枝３２と枝３３を辿り、終端ノード３４に到達することによって論理式の値が１と決定されるが、この過程において、変数ｘ２の値が０であることのチェックは省略され、（ｘ１，ｘ３）＝（１，１）であることのみチェックされている。（ｘ１，ｘ３）＝（１，１）であるとき、それに加え、もしｘ２＝０であれば、（ｘ１，ｘ２，ｘ３）＝（１，０，１）であり、この値の組を論理式４２に代入すれば１になるので、ＺＤＤによる計算結果は正しいことになる。この結果は、表４３のパケット６に対応している。しかし、もしｘ２＝１であれば、（ｘ１，ｘ２，ｘ３）＝（１，１，１）であり、この値の組を論理式４２に代入すれば０になるので、ＺＤＤによる計算結果は間違っていることになる。この結果は、表４３のパケット８に対応している。一方、ＺＤＤによる計算結果が０になる場合、すなわち枝を辿った結果、値が０の終端ノードに達する場合は、途中で０のチェックを省略していたとしても、すなわちチェックを省略した論理変数の値が何であっても、この計算結果は正しい。この事実は、図１０の３５で示した簡約化規則から従う。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
まず、ステップＳ１０１で、ｎビットの入力データ４４がフィルタ部６に入力される。この入力データは、パケット解析部４が出力する、ルールの条件と照合する照合情報に相当する。ステップＳ１０２で、フィルタ部６は、入力データ４４を、ｎビットの一時変数４５に保持する。ここで、入力データの第ｋビットが、論理変数ｘ（ｋ）に対応しているとし、一時変数４５の第ｋビットをｘ（ｋ）と表すことにする。また、一時変数４５のｎビット全体としてｘと表すことにすると、ｘ＝（ｘ（１），…，ｘ（ｎ））である。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４２
【補正方法】変更
【補正の内容】
【００４２】
次に、ステップＳ１０４からＳ１１０は、ＺＤＤにおいて枝を辿る処理に対応するループであり、これによってＺＤＤによる論理式の計算が実行される。ＺＤＤにおいて現在注目しているノードの論理変数をｘ（ｋ）とすると、ステップＳ１０６で、一時変数の第ｋビットであるｘ（ｋ）の値をチェックし、その値に従って、ステップＳ１０７で枝を辿る。そして、ステップＳ１０８で、一時変数の第ｋビットであるｘ（ｋ）を０にする。ＺＤＤの計算が完了するとループを抜け、ステップＳ１１１でＺＤＤの計算結果に従って処理を分岐させる。計算結果が０であれば、これは正しい結果であることが確定しているので、ステップＳ１１３において最終結果として０を出力する。一方、ステップＳ１１１の計算結果が１であれば、この計算結果は、まだ正しいかどうかが確定していないので、それを確定させるため、ステップＳ１１２の０判定に進む。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
ステップＳ１１２では、一時変数ｘが０であるかどうかを判定し、０であればステップＳ１１４において最終結果１を出力し、０でなければ、ステップＳ１１３において、最終結果０を出力する。ただし、ステップＳ１１２の０判定は、各ビットｘ（ｋ）に対する０判定を合計ｎ回行なうのではなく、ｎビット値ｘに対する０判定を１回行なう。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
１  侵入検知装置、２  受信部、３  パケットフィルタ装置、４  パケット解析部、５  ルールセット、６  フィルタ部、７  送信部、８  外部ネットワーク、９  ファイアウォール、１０  内部ネットワーク、１１  バス、１２  プロセッサ、１３  メモリ、１４，１５  ネットワークポート、１６  ルールセットの例、１７  ルールに記述された送信元アドレスの文字列、１８  パケットの送信元アドレスの文字列、１９〜２３，２５，４２，４９  論理式、２４，３６  二分決定木、２６〜２８  枝、２９，４０  終端ノード、３０  ＺＤＤ、３１  組み合わせ集合、３２，３３  枝、３４  終端ノード、３５  簡約化規則、３７，３９  部分木、３８  ノード、４１  簡約化された二分決定木、４３  ＺＤＤによる計算結果、４４  入力データ、４５  一時変数、４８  実通信を観測した結果得られた統計データの例、５０  ビット反転処理の例。 
【国際調査報告】
2016185513.tif 000016
2016185513.tif 000017