(57)【要約】データ通信ネットワークのデータトラフィックにおける侵入を検出するための侵入検出方法であって、その方法は、データトラフィックをパースして、データトラフィックのプロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出することと、抽出されたプロトコルフィールドを、そのプロトコルフィールドのモデルと関連付けることであって、そのモデルは、モデルのセットから選択されることと、抽出されたプロトコルフィールドのコンテンツが、モデルで定義された通りの安全領域内にあるかどうかを評価することと、抽出されたプロトコルフィールドのコンテンツが、安全領域外であることが確定された場合に侵入検出信号を生成することを備える。モデルのセットは、プロトコルフィールドのセットの各プロトコルフィールドに対応するモデルを備えることができる。
2014522167.tif 000002
【特許請求の範囲】
【請求項１】
データ通信ネットワークのデータトラフィックにおける侵入を検出するための侵入検出方法であって、
−前記データトラフィックをパースして、前記データトラフィックのプロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出するステップと、
−前記抽出されたプロトコルフィールドを、そのプロトコルフィールドのそれぞれのモデルと関連付けるステップであって、前記モデルは、モデルのセットから選択されることと、
−前記抽出されたプロトコルフィールドのコンテンツが、前記モデルで定義された通りの安全領域内にあるかどうかを評価するステップと、
−前記抽出されたプロトコルフィールドの前記コンテンツが、前記安全領域外であることが確定された場合、侵入検出信号を生成するステップと
を備えることを特徴とする方法。
【請求項２】
モデルの前記セットは、演算子プロトコルフィールドのモデルおよび引数プロトコルフィールドのモデルを備え、前記関連付けおよび評価は、前記演算子プロトコルフィールドおよび前記引数プロトコルフィールドに対して実行されることを特徴とする請求項１に記載の侵入検出方法。
【請求項３】
モデルの前記セットは、マーシャリングプロトコルフィールドのモデルをさらに備え、前記関連付けおよび評価は、前記マーシャリングプロトコルフィールドに対して実行されることを特徴とする請求項２に記載の侵入検出方法。
【請求項４】
複数のモデル型が提供され、前記抽出されたプロトコルフィールドのモデル型は、前記抽出されたプロトコルフィールドの特性に基づいて前記複数のモデル型から選択され、前記抽出されたプロトコルフィールドの前記モデルは、前記選択されたモデル型に基づいて構築されることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項５】
前記プロトコルフィールドの前記特性は、前記プロトコルフィールドのデータ型を備え、
−前記抽出されたプロトコルフィールドのデータ型を決定するステップと、
−前記決定されたデータ型を使用して前記モデル型を選択するステップとを備える方法を特徴とする請求項４に記載の侵入検出方法。
【請求項６】
前記プロトコルフィールドの前記特性は、前記プロトコルフィールドのセマンティックを備え、
−前記抽出されたプロトコルフィールドのセマンティックを決定するステップと、
−前記決定されたセマンティックを使用して前記モデル型を選択するステップとを備える方法を特徴とする請求項４乃至５に記載の侵入検出方法。
【請求項７】
モデルの前記セットは、プロトコルフィールドの前記セットの各プロトコルフィールドに対してそれぞれのモデルを備えることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項８】
前記フィールドの前記モデルは、学習段階中に決定され、
前記学習段階は、
−前記データトラフィックをパースして、前記データトラフィックに適用される前記プロトコルの少なくとも１つのプロトコルフィールドを抽出するステップと、
−前記抽出されたプロトコルフィールドを、そのプロトコルフィールドの前記モデルと関連付けるステップであって、前記モデルは、モデルの前記セットから選択されるステップと、
−前記抽出されたプロトコルフィールドのコンテンツを使用して、前記抽出されたプロトコルフィールドの前記モデルを更新するステップと
を備えることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項９】
前記抽出されたプロトコルフィールドと前記モデルのうちの１つとの間でどの関連付けも行われない場合、
−前記抽出されたプロトコルフィールドの新しいモデルを作成し、および前記新しいモデルをモデルの前記セットに付加するステップを特徴とする請求項８に記載の侵入検出方法。
【請求項１０】
前記パーシングが、前記フィールドが前記プロトコルに従っていると確定することができない場合、前記侵入検出信号がさらに生成されることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１１】
前記抽出されたフィールドを、モデルの前記セットのうちのどの前記モデルにも関連付けることができない場合、前記侵入検出信号がさらに生成されることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１２】
前記プロトコルは、アプリケーション層プロトコル、セッション層プロトコル、トランスポート層プロトコルまたは下位レベルのプロトコルスタックプロトコルのうちの少なくとも１つであることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１３】
前記方法は、前記侵入検出信号の生成に応答して、
−前記プロトコルフィールドまたは前記プロトコルフィールドを包含するデータパケットを除去するステップと、
−侵入警告メッセージを発するおよび出力するステップとのうちの少なくとも１つを備えることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１４】
前記プロトコルフィールドの前記モデルは、
−許容できるプロトコルフィールド値のセットと、
−プロトコルフィールド値の数値分布と、
−許容できるプロトコルフィールド値の領域の定義とのうちの少なくとも１つを備えることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１５】
前記プロトコルフィールドの前記モデルは、
−許容できるアルファベット、数字、シンボル、およびスクリプトの定義を備えることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１６】
前記プロトコルフィールドの前記モデルは、事前に定義された侵入署名のセットを備えることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１７】
モデルの前記セットは、１つのプロトコルフィールドに対して２つのモデルを備え、前記２つのモデルのうちの固有の１つは、別のプロトコルフィールドの値に基づく前記１つのプロトコルフィールドと関連付けられることを特徴とする前記請求項のうちのいずれかに記載の侵入検出方法。
【請求項１８】
データ通信ネットワークのデータトラフィックにおける侵入を検出するための侵入検出システムであって、
−前記データトラフィックをパースして、前記データトラフィックのプロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出するパーサと、
−前記抽出されたプロトコルフィールドを、そのプロトコルフィールドのそれぞれのモデルと関連付けるエンジンであって、前記モデルは、モデルのセットから選択されることと、
−前記抽出されたプロトコルフィールドのコンテンツが、前記モデルで定義された通りの安全領域内にあるかどうかを評価するモデルハンドラと、
−前記抽出されたプロトコルフィールドの前記コンテンツが、前記安全領域外であることが確定された場合、侵入検出信号を生成するアクチュエータとを備えることを特徴とするシステム。
【請求項１９】
モデルの前記セットは、演算子プロトコルフィールドのモデルおよび引数プロトコルフィールドのモデルを備え、前記エンジンは、前記演算子プロトコルフィールドおよび前記引数プロトコルフィールドに対する前記関連付けおよび評価を実行するために配置されることを特徴とする請求項１８に記載の侵入検出システム。
【請求項２０】
モデルの前記セットは、マーシャリングプロトコルフィールドのモデルをさらに備え、前記エンジンは、前記マーシャリングプロトコルフィールドに対する前記関連付けおよび評価を実行するために配置されることを特徴とする請求項１９に記載の侵入検出システム。
【請求項２１】
複数のモデル型が提供され、前記システムは、前記抽出されたプロトコルフィールドの特性に基づいて前記複数のモデル型から前記抽出されたプロトコルフィールドのモデル型を選択し、および前記選択されたモデル型に基づいて前記抽出されたプロトコルフィールドのモデルを構築するために配置されることを特徴とする請求項１８乃至２０のいずれかに記載の侵入検出システム。
【請求項２２】
前記プロトコルフィールドの前記特性は、前記プロトコルフィールドのデータ型を備え、
前記システムは、
−前記抽出されたプロトコルフィールドのデータ型を決定するステップと、
−前記決定されたデータ型を使用して前記モデル型を選択するステップとのために配置されることを特徴とする請求項２１に記載の侵入検出システム。
【請求項２３】
前記プロトコルフィールドの前記特性は、前記プロトコルフィールドのセマンティックを備え、
前記システムは、
−前記抽出されたプロトコルフィールドのセマンティックを決定するステップと、
−前記決定されたセマンティックを使用して前記モデル型を選択するステップとのために配置されることを特徴とする請求項２１乃至２２に記載の侵入検出システム。
【請求項２４】
モデルの前記セットは、プロトコルフィールドのセットの各プロトコルフィールドに対してそれぞれのモデルを備えることを特徴とする請求項１８乃至２３のいずれかに記載の侵入検出システム。
【請求項２５】
学習段階中に動作されるためにさらに配置され、前記モデルのうちの少なくとも１つを学習する前記学習段階であって、前記モデルハンドラは、前記学習段階中に前記抽出されたプロトコルフィールドのコンテンツを使用して前記抽出されたプロトコルフィールドの前記モデルを更新するために配置されることを特徴とする請求項１８乃至２４のいずれかに記載の侵入検出システム。
【請求項２６】
前記エンジンは、前記学習段階中にさらに配置されることであって、前記抽出されたプロトコルフィールドと前記モデルのうちの１つとの間でどの関連付けも行われない場合、前記抽出されたプロトコルフィールドの新しいモデルを作成し、および前記新しいモデルをモデルの前記セットに付加することを特徴とする請求項２５に記載の侵入検出システム。
【請求項２７】
前記パーサが、前記フィールドが前記プロトコルに従っていると確定することができないという前記パーサからの表示に応答して、前記アクチュエータは、前記侵入検出信号を生成するためにさらに配置されることを特徴とする請求項１８乃至２６のいずれかに記載の侵入検出システム。
【請求項２８】
前記エンジンが、前記抽出されたフィールドを、モデルの前記セットのうちのどの前記モデルにも関連付けることができないという前記エンジンからの表示に応答して、前記アクチュエータは、前記侵入検出信号を生成するためにさらに配置されることを特徴とする請求項１８乃至２７のいずれかに記載の侵入検出システム。
【請求項２９】
前記プロトコルは、アプリケーション層プロトコル、セッション層プロトコル、トランスポート層プロトコルまたは下位レベルのプロトコルスタックプロトコルのうちの少なくとも１つであることを特徴とする請求項１８乃至２８のいずれかに記載の侵入検出システム。
【請求項３０】
前記アクチュエータは、前記侵入検出信号の生成に応答して、
−前記プロトコルフィールドまたは前記プロトコルフィールドを包含するデータパケットを除去するステップと、
−侵入警告メッセージを発するおよび出力するステップとのために配置されることを特徴とする請求項１８乃至２９のいずれかに記載の侵入検出システム。
【請求項３１】
前記プロトコルフィールドの前記モデルは、
−許容できるプロトコルフィールド値のセットと、
−プロトコルフィールド値の数値分布と、
−許容できるプロトコルフィールド値の領域の定義とのうちの少なくとも１つを備えることを特徴とする請求項１８乃至３０のいずれかに記載の侵入検出システム。
【請求項３２】
前記プロトコルフィールドの前記モデルは、
−許容できるアルファベット、数字、シンボル、およびスクリプトの定義を備えることを特徴とする請求項１８乃至３１のいずれかに記載の侵入検出システム。
【請求項３３】
前記プロトコルフィールドの前記モデルは、事前に定義された侵入署名のセットを備えることを特徴とする請求項１８乃至３２のいずれかに記載の侵入検出システム。
【請求項３４】
モデルの前記セットは、１つのプロトコルフィールドに対して２つのモデルを備え、前記エンジンは、前記２つのモデルのうちの固有の１つを、別のプロトコルフィールドの値に基づく前記１つのプロトコルフィールドに関連付けるために配置されることを特徴とする請求項１８乃至３３のいずれかに記載の侵入検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信ネットワークの分野に関し、詳細には、データ通信ネットワークにおいてメッセージを分類し、例えば、そのようなデータ通信ネットワークにおいて悪意のある侵入を検出する分野に関する。
【背景技術】
【０００２】
多くのデータ通信ネットワークでは、悪意のある侵入を検出する検出システムがデプロイされている。そのような侵入は、攻撃者または感染したコンピュータからの、サーバ、コンピュータまたは他の機器の機能に影響を及ぼす恐れのあるデータを備える。
【０００３】
そのような侵入検出システムには主に、署名ベースの侵入検出システムと異常ベースの侵入検出システムとの２種類がある。
【０００４】
署名ベースの侵入検出システム（ＳＢＳ）は、パターンマッチング技法に依存している。そのシステムは、署名のデータベース、即ち、過去に攻撃を受けたことが分かっているデータ列を包含する。これらの署名は、検査データにマッチする。マッチが見つかると、警告が発せられる。新たな攻撃が明らかになった後、その署名のデータベースは、専門家によって更新される必要がある。
【０００５】
これとは異なり、異常ベースの侵入検出システム（ＡＢＳ）は、最初に、いわゆる「学習段階」において通常のネットワークトラフィックを記述する統計モデルを構築する。その後、いわゆる「学習段階」において、システムは、データを解析して、統計モデルから著しく逸脱するトラフィックまたはアクションを攻撃として分類する。異常ベースのシステムの利点は、ゼロ日攻撃、即ち、まだ専門家によって攻撃と見なされていない攻撃を検出できることである。大部分の攻撃を検出するために、ＡＢＳは、ネットワークのトラフィックペイロードを検査する必要がある。既存の方法は、（生）パケットペイロードまたはその一部のいずれかに適用される、ｎ−グラム解析に基づく。
【０００６】
しかしながら、一部のデータ通信ネットワークでは、悪意のあるデータは、本物のデータと非常に似ている。これは、いわゆるＳＣＡＤＡ（Supervisory Control and Data Acquisition）ネットワークあるいは産業用制御ネットワークの場合に当てはまる。ＳＣＡＤＡあるいは他の産業用制御ネットワークのプロトコルメッセージは、データ通信ネットワークのアプリケーション層上のコンピュータとサーバと他の機器との間で交換される。これらのプロトコルメッセージは、マシンを制御する命令を備えることができる。悪意のある命令を有するプロトコルメッセージ（「回転速度が１００ｒｐｍに設定されている」）は、本物の命令（「回転速度が１０ｒｐｍに設定されている」）と非常に似ている場合がある。
【０００７】
悪意のあるデータが本物のデータと非常に似ている場合、悪意のあるデータは、異常ベースの侵入検出システムによって通常または本物のデータに分類される可能性があり、ネットワークのコンピュータ、サーバおよび他の機器の機能を危うくする恐れがある。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Bolzoni, D. and Etalle, S.(2008),Boosting Web Intrusion Detection Systems by Inferring Positive Signatures. In: Confederated International Conferences On the Move to Meaningful Internet Systems (OTM).
【非特許文献２】“Anomalous payload-based network intrusion detection”(RAID. pages 203-222, 2004) by Ke Wang and Salvatore J. Stolfo.
【非特許文献３】“POSEIDON: a2-tier Anomaly-based Network” (IWIA, pages 144-156. IEEE Computer Society, 2006) by Damiano Bolzoni, Emmanuele Zambon, Sandro Etalle, and Pieter Hartel.
【非特許文献４】Michalis Polychronakis, Kostas G. Anagnostakis, and Evangelos P. Markatos, Comprehensive Shellcode Detection using Runtime Heuristics. In Proceedings of the 26th Annual Computer Security Applications Conference (ACSAC). December 2010, Austin, TX, USA.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、改善された侵入検出システムおよび／または方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の態様に従って、データ通信ネットワークのデータトラフィックにおける侵入を検出するための侵入検出方法が提供され、その方法は、
−データトラフィックをパースして、データトラフィックのプロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出することと、
−抽出されたプロトコルフィールドを、そのプロトコルフィールドのそれぞれのモデルと関連付けることであって、そのモデルは、モデルのセットから選択されることと、
−抽出されたプロトコルフィールドのコンテンツが、モデルで定義された通りの安全領域内にあるかどうかを評価することと、
−抽出されたプロトコルフィールドのコンテンツが、安全領域外であることが確定された場合に侵入検出信号を生成することを備える。
【００１１】
データトラフィックのパーシングは、データネットワーク上でどのデータ通信が行われているかに従って、プロトコルの個々のフィールド（「プロトコルフィールド」と呼ぶ）の識別を可能にする。その後、フィールド（「プロトコルフィールド」）とモデルとの間の関連付けが（上手くいけば）行われる。そこへ、モデルのセットが提供される。以下でより詳細に説明するように、抽出されたプロトコルフィールドに適したモデルが選択される。プロトコルフィールドのコンテンツが、通常の、安全で許容できる領域内であるか否かを確定するために、プロトコルフィールドは、その後、モデルを使用して評価される。後者の場合、適したアクションを実行できる。プロトコルメッセージをパースすることによって、データトラフィックの個々のプロトコルフィールドを識別でき、そして特定のプロトコルフィールドの評価に適したモデルを選択できる。従って、例えば、各プロトコルフィールドが、その固有のプロトコルフィールドに適合したそれぞれのモデルを適用し、例えば、プロトコルフィールドの型および／またはコンテンツに適合したモデルを適用して、種々のモデルを適用して種々のプロトコルフィールドを評価できる、十分な評価を行うことができる。本発明に従った侵入検出方法は、コンピュータ実装の侵入検出方法にすることができる。パーサ（即ち、パーシング）は、事前定義されたプロトコル仕様を利用できる。また、例えば、プロトコルが未知である場合、ネットワークのデータトラフィックをモニタし、そこからプロトコル仕様を導くことによってそのプロトコルを学習できる。
【００１２】
本明細書の文脈において、プロトコルという用語は、データネットワーク経由で送信されるメッセージの一部またはすべてのコンテンツを定義するルールのセットであると理解する。ネットワークプロトコルは、ＰＤＵ（プロトコルデータユニット）としても知られる、プロトコルメッセージの定義を備えることができる。プロトコルメッセージ（ＰＤＵ）はさらに、１または複数のフィールドを備えることができる。さまざまな型のフィールドが存在し得る。フィールドは、別のＰＤＵ、または「原子」データエンティティ（例えば、数字、文字列またはバイナリが不透明なオブジェクト）のいずれかを備えることができる。以下でより詳細に説明するように、ネットワークプロトコルを木として体系化することができ、節がＰＤＵに、木の葉が原子データエンティティ（フィールド）になる。各フィールド（または各フィールドに関係するフィールド）に対し、別個のモデルを提供できる。例として、プロトコルメッセージが、ある人の個人データ（例えば、名前、住所および個人用の設定）を備えていると仮定すると、個人データを送信するプロトコルメッセージは、「名前」、「住所」、および「個人用の設定」のフィールドを備えることが可能である。「名前」フィールドはさらに、例えば、「姓」、「名」、「ログイン名」などのフィールドを備えることが可能である。「住所」フィールドは、例えば、「自宅住所」および「勤務先住所」のフィールドを備えることが可能である。「自宅住所」フィールドは、例えば、「自宅住所の番地」、「自宅住所の電話番号」、「自宅住所の郵便番号」、「自宅住所の都市名」を備えることができ、一方、「勤務先住所」は、例えば、「勤務先住所の番地」、「勤務先住所の電話番号」、「勤務先住所の郵便番号」、「勤務先住所の都市名」などのフィールドを備えることができる。フィールドごとに別個のモデルを構築できる。例えば、フィールドの一つ一つに、それぞれ別個のモデルを提供することが可能である。実施形態において、フィールドのサブセットに同じモデルを適用でき、例えば、「勤務先住所の都市名」および「自宅住所の都市名」のフィールドは、同じモデルを適用できる。
【００１３】
データトラフィックという用語は、ネットワーク経由で通信されるデータストリーム、データパケットなどの、任意のデータを備えるものと理解する。データネットワークという用語は、（例えば、デジタル）データの送信を可能にする任意のデータ通信体系を備えるものと理解する。ネットワークは、インターネットなどの、公衆網を備えるまたはそれに接続されてもよいし、および／または承認されたユーザまたは承認された機器のみにアクセスが許可される私的ネットワークまたは仮想私的ネットワークを備えてもよい。有線接続、ガラスファイバー接続、無線接続および／またはその他の接続を経由して送信を行うことができる。モデルという用語は、プロトコルフィールドを評価するために、そのプロトコルフィールドに適用するルールまたはルールのセットを備えるものと理解する。モデルは、通常の、本物または侵入されていないプロトコルメッセージを記述できる。学習段階で多くのプロトコルメッセージを使用すればするほど、モデルは、通常の、本物または侵入されていないプロトコルメッセージを多く記述できる。
【００１４】
侵入という用語は、データを受信するコンピュータシステムにとって恐らく有害であり、データネットワークに接続されたコンピュータシステム上で稼動するアプリケーションにとって恐らく有害であり、またはデータネットワークに接続されたデバイスの動作、インストール、装置などにとって恐らく有害である、望ましくない任意のデータを備えるものと理解する。
【００１５】
実施形態において、モデルのセットは、各プロトコルフィールドのプロトコルフィールドのセットに対して、それぞれのモデルを備える。従って、各プロトコルフィールドに対し、そのプロトコルフィールドに固有に適合したモデルを適用できるので、より正確な結果を得ることができる。
【００１６】
実施形態において、モデルのセットは、１つのプロトコルフィールドに対して２つのモデルを備え、その１つのプロトコルフィールドに対する２つのモデルのうちの固有の１つは、場合によってはモデルの精度がさらに上がるように、別のフィールドの値に基づいて選択される。
【００１７】
同様に、実施形態においてプロトコルフィールドに対する時間列の解析を実行でき、そこでモデルのセットは、１つのプロトコルフィールドに対して少なくとも２つのモデルを備え、２つのモデルのうちの第１のモデルは、データトラフィックが観察される第１の時間間隔と関連付けられ、そしてモデルのうちの第２のモデルは、データトラフィックが観察される第２の時間間隔と関連付けられ、その第２の時間間隔を、例えば、第１の時間間隔と重複しない時間間隔とする。
【００１８】
実施形態において、フィールドのモデルは、学習段階で決定され、その学習段階は、
−データトラフィックをパースして、そのデータトラフィックにおいて適用されるプロトコルの少なくとも１つのプロトコルフィールドを抽出することと、
−抽出されたプロトコルフィールドを、そのプロトコルフィールドのモデルと関連付けることであって、そのモデルは、モデルのセットから選択されることと、
−抽出されたプロトコルフィールドのコンテンツを使用して、抽出されたプロトコルフィールドのモデルを更新することを備える。
【００１９】
従って、学習段階でデータトラフィックを観察でき、そして抽出されたプロトコルフィールドのコンテンツを適用して、そのプロトコルフィールドが関連付けられた対応するモデルを更新できる。抽出されたプロトコルフィールドとモデルのうちの１つとの間で関連付けが行われない場合、その抽出されたプロトコルフィールドに対する新しいモデルが作成されて、モデルのセットに付加される。
【００２０】
従って、プロトコルメッセージが構築される学習段階を２つの段階に区別できる。このような学習段階におけるプロトコルメッセージは、通信プロトコルに基づいて構築されてもよいし、またはデータ通信ネットワークのデータトラフィックから読み出されてもよい。
【００２１】
プロトコルメッセージをそれらの構造体およびプロトコルフィールドの値で記述できるので、そのモデルは、学習段階のプロトコルフィールドおよびその値に関連させることができる。学習段階の種々のプロトコルフィールドは、種々のデータ型を有し得る。即ち、プロトコルフィールドの値は、数（整数、浮動少数点数など）、文字列、ブール値または２進値であってよい。これを、通信プロトコルによって定義できる。そのモデルを、少なくとも１つのプロトコルフィールドのデータ型に従って構築できる。
【００２２】
決定されたプロトコルフィールドおよび／または上述のプロトコルフィールドの決定された値は、モデルと比較され、そしてその比較に基づいて分類される。プロトコルメッセージは、異常として、即ち、モデルによる比較に基づいて定義された安全領域外であると（従って、恐らく危険であると）分類されることもある。
【００２３】
学習段階において、モデルに学習させるために適用されるプロトコルメッセージをネットワークのデータトラフィックから取得できる。代替としてまたはそれに加えて、シミュレーションデータを適用できる。学習段階において、侵入の恐れのあるプロトコルメッセージを統計的方法で識別できる。即ち、モデル（複数）に学習させるプロトコルメッセージを使用する前に、使用頻度の低いプロトコルメッセージまたは普通でないコンテンツを有するプロトコルメッセージを除去できる。代替としてまたはそれに加えて、演算子は、ある種のプロトコルメッセージを侵入と見なし、そして学習の前にそのようなプロトコルメッセージが除去されるか、またはそれに従ってモデルが修正されるいずれかである。
【００２４】
上述の学習段階以外でモデル（複数）に学習させる（即ち、訓練する）代替手段を適用できる。例えば、プロトコルおよびアプリケーションを検査することによってモデルを導いて、そこから期待されるプロトコルメッセージ、そのフィールドおよび／またはフィールドの値を作成し、そしてそこからモデル、またはモデルのセットを構築できる。また、このような検査によるモデル（複数）の構築とモデル（複数）の学習との組み合わせを適用できる。例えば、最初に、学習段階でモデル（複数）を学習し、その後、プロトコルメッセージ、そのフィールドおよび／またはフィールドの値の周知の振る舞いおよび結果として生じる発生および／またはコンテンツの情報に基づいて、学習したモデル（複数）を適応させる。
【００２５】
実施形態において、侵入検出信号は、パーシングが、フィールドがプロトコルに従っていると確定することができないので、プロトコルに従わない（例えば、正しく形成されていないプロトコルメッセージの）フィールドが検出された場合にもアクションを実行することができるようにさらに生成される。
【００２６】
実施形態において、侵入検出信号は、抽出されたフィールドをモデルのセットのどのモデルとも関連付けることができない場合、適したモデルが提供されていないのであれば、抽出されたフィールドがプロトコルに従う可能性のある場合にもアクションを実行することができるようにさらに生成される。可能性のあるプロトコルフィールドのサブセットのみを、例えば、制御アプリケーションにおいて使用し、例えば、プロトコルに従うが、通常は適用されないプロトコルフィールドが読み出された時に警告を発するようにさせることがよくある。
【００２７】
方法を種々のプロトコル層で適用できる。例えば、プロトコルは、アプリケーション層プロトコル、セッション層プロトコル、トランスポート層プロトコルさらに下位レベルのネットワークプロトコルスタックのうちの少なくとも１つであってよい。データ通信ネットワークのアプリケーション層を、国際標準化機構で決定された開放型システム間相互接続モデル（ＯＳＩモデル）で定義できる。アプリケーション層において、コンピュータまたはサーバ上で稼動するソフトウェアは、プロトコルメッセージを送信することによって互いに通信できる。プロトコルメッセージは、ＳＣＡＤＡあるいは産業用制御ネットワークのプロトコルメッセージ、ウィンドウズ（登録商標）系オフィスオートメーションネットワークのプロトコルメッセージ、ＨＴＴＰプロトコルメッセージなどであってよい。
【００２８】
ソフトウェア間の通信は、プロトコルメッセージ（の一部）の構造体および可能性のある値が定義された、ある種の通信プロトコルに従うことができる。プロトコルメッセージの構造体を、プロトコルメッセージのプロトコルフィールドによってさらに記述できる。ソフトウェアは、通信プロトコルに従っていないプロトコルメッセージを処理することができない場合もある。
【００２９】
実施形態において、侵入検出信号の生成に応答して、方法は、
−プロトコルフィールドまたはプロトコルフィールドを包含するデータパケットを除去することと、
−侵入警告メッセージを発するおよび出力することのうちの少なくとも１つをさらに備える。例えば、プロトコルフィールドまたはプロトコルフィールドを包含するデータパケットなどを孤立させるような、その他の侵入検出アクションを適用できる。
【００３０】
実施形態において、プロトコルフィールドのモデルは、
−許容できるプロトコルフィールド値のセットと、
−許容できるプロトコルフィールド値の領域の定義とのうちの少なくとも１つを備える。
【００３１】
プロトコルフィールドが数値を備える場合、単純なモデルを提供することによって、データ処理の負荷を下げてプロトコルフィールドを検査することを可能にする。
【００３２】
実施形態において、プロトコルフィールドのモデルは、
−許容できるアルファベット(letters)、数字(digits)、シンボル、およびスクリプトの定義を備える。プロトコルフィールドが文字または文字列を備える場合、単純なモデルを提供することによって、データ処理の負荷を下げてプロトコルフィールドを検査することを可能にする。
【００３３】
実施形態において、プロトコルフィールドのモデルは、周知の攻撃に関する情報を考慮に入れることができるように、事前に定義された侵入署名のセットを備える。上述の（例えば、許容できるプロトコルフィールド値のセット、許容できるプロトコルフィールド値の領域の定義、許容できるアルファベット(letters)、数字(digits)、シンボル、およびスクリプトの定義を備える）ようなモデルと事前に定義された侵入署名のセットとの組み合わせは、固有のフィールドごとに、そのフィールドの通常のコンテンツのモデルとそのフィールドに対する１または複数の固有の侵入署名とを組み合わせて適用できるので、非常に効果的である。
【００３４】
実施形態において、プロトコルは、プリミティブなプロトコルフィールドと複合的プロトコルフィールドとを備え、複合的プロトコルフィールドはさらに、少なくとも１つのプリミティブなプロトコルフィールドを備え、そこでそれぞれのモデルは、各プリミティブなプロトコルフィールドのモデルのセットで提供される。従って、複合的（即ち、プロトコルフィールドが自身で「番地名」、「電話番号」、「郵便番号」、および「都市名」を備える「住所」などの、プロトコルフィールドを備える）であるプロトコルフィールドが、自身の基本的（プリミティブな）プロトコルフィールドに分割できることによって、プリミティブなプロトコルフィールドのそれぞれに適したモデルを適用することが可能となるような、効率の良い侵入検出を提供できる。
【００３５】
学習段階の少なくとも１つのプロトコルフィールドのモデルおよび／または学習段階の少なくとも１つのプロトコルフィールドの値を、学習段階の少なくとも１つのプロトコルフィールドのデータ型に従って構築できるので、そのモデルは、通常の、本物または侵入されていないプロトコルメッセージを記述することが、プロトコルフィールドのデータ型を考慮に入れていないモデルよりも正確である。
【００３６】
数字データ型でプロトコルフィールドを記述するために最適化されたモデルは、文字列または２進データ型でプロトコルフィールドを記述するよりも正確でない（または適さない）場合もあり得る。同様に、文字列データ型でプロトコルフィールドを記述するのに最適なモデルは、数字または２進データ型でプロトコルフィールドを記述するよりも正確でない場合もあり得る。従って、モデルを構築する場合、モデルの精度は、プロトコルフィールドのデータ型を考慮に入れることによって改善される。
【００３７】
実施形態において、複数のモデル型が提供される。抽出されたプロトコルフィールドのモデル型は、抽出されたプロトコルフィールドの特性に基づいて、学習段階の複数のモデル型から選択され、そして抽出されたプロトコルフィールドのモデルは、選択されたモデル型に基づいて構築される。
【００３８】
固有のプロトコルフィールドのモデルを取得するために、いくつかのステップを実行できる。前述したように、複数の異なるモデル型を適用できる。最初に、使用可能なモデル型のセットからのある種のモデル型が、固有のプロトコルフィールド用に選択される。ひとたびある種のプロトコルフィールドに対するモデル型が決定されると、そのプロトコルフィールドに対するモデルが構築される。本明細書の他の部分で説明したように、そのモデルを、学習段階のデータトラフィックの解析を用いた例として構築できる。プロトコルフィールドの特性は、そのプロトコルフィールド自身のデータ、プロトコルの文脈におけるプロトコルフィールドの意味などに適した任意の特性であってよい。一部の例を以下に説明する。異なるモデル型を採用することによって、異なるフィールド値の型に固有であるモデリング技法を適用することと、プロトコルのプロトコルフィールドまたはプロトコルに適用される文脈の意味、役割および重要度によって多少制限のあるやり方で、値の安全領域に適応することの両方が可能である。一般に、異なるモデル型は、特定のプロトコルフィールド値が侵入されたか否かを確定するために、異なる型の基準を適用できる。例えば、異なる型のモデルは、値の領域、値の数値分布、値のセット、演算子のセット、テキスト値のセット、状態記述のセット、テキスト文字のセットまたは領域、テキストエンコーディングのセット／領域などのいずれかを適用できる。モデル型という用語は、従って、ある値が安全領域内であるかどうかを決定するために、ある型の値およびその基準に対する安全領域を定義する経験則を一緒にした、ある値型で許可された演算のセットとして理解できる。
【００３９】
モデル型の選択は、常時、即ち、侵入のモニタリングおよび検出中だけでなく、学習段階中にも実行されることができる。学習段階中、モデル型は、特定のプロトコルフィールドのモデルを構築するプロセスの一部として選択できる。検出中、特定のプロトコルフィールドのモデルが一貫した結果を提供しないように見える場合、異なるモデル型を選択できる。
【００４０】
プロトコルフィールド値（複数）のデータ型、および／またはパースされたプロトコルフィールド（複数）のセマンティックを使用して、モデル型の選択を実行できる。実施形態において、プロトコルフィールドの特性は、プロトコルフィールドのデータ型を備え、その方法は、
−抽出されたプロトコルフィールドのデータ型を決定することと、
−決定されたデータ型を使用してモデル型を選択することを備える。
【００４１】
プロトコルフィールド値のデータ型（「数字」、「文字列」、「アレイ」、「セット」など）を、例えば、プロトコル仕様から抽出できる。あるいは、プロトコルフィールド値のデータ型を、例えば、ネットワークトラフィックを観察することによって推論できる。一実施形態において、フィールド値は、正規表現によって推論される。例えば、正規表現^［０−９］＋＄を使用して、数値整数型フィールド値を特定できる。プロトコルフィールド値のデータ型にマッチする適切なモデル型を選択することによって、より信頼性のある検出結果をもたらすことができるモデルを取得できる。
【００４２】
モデル型の選択は、さらにまたはその代わりに、プロトコルフィールド値のデータ型に基づいて、パースされたプロトコルフィールドのセマンティックに基づいて行うことができる。従って、実施形態において、プロトコルフィールドの特性は、プロトコルフィールドのセマンティックを備えることができ、その方法は、
−抽出されたプロトコルフィールドのセマンティックを決定することと、
−決定されたセマンティックを使用してモデル型を選択することを備える。
【００４３】
パースされたプロトコルフィールドにセマンティックを割り当てることができる。セマンティックの割り当ては、学習段階中に手動によって、観察したネットワークデータから推論することによって、プロトコル仕様から情報を抽出することによってなど、種々のやり方で実行できる。例えば、複数のモデル型がある種のプロトコルフィールドの値型に使用可能である場合、セマンティックは、最も適切なモデル型を選択するために適用されることができる。例えば、数値型のプロトコルフィールド値に対し、そのようなプロトコルフィールド値の領域を包含するモデル型、プロトコルフィールド値のセットを包含するモデル型などを活用できる。セマンティックを考慮に入れ、好適には、セマンティックならびにプロトコルフィールドの値型の両方を考慮に入れることによって、そのような特定のプロトコルフィールドに最も適した適切なモデル型を割り当てることが可能となる。
【００４４】
セマンティックの使用の例は、数値領域がどのように「厳密か」をフィールドの重要度に基づいて決定するためのものであってよい。言い換えれば、プロトコルフィールドのセマンティックが、このフィールドはセキュリティ上の理由で重要であると提案すれば、より緩やかな領域（例えば、学習段階中に観察された最大値の２倍および最小値の半分）が適用されるであろう、反対の場合に比べて、より厳密な数値領域を適用できる。
【００４５】
プロトコルフィールドの値型および／またはプロトコルのセマンティックに従ったモデル型をプロトコルフィールドに割り当てることによって、プロトコルフィールドのデータのコンテンツを考慮に入れるモデル型が割り当てられ、従って、プロトコルフィールドのコンテンツに従ってモデルを適合させることが可能になる。例えば、フィールドの型が数値整数であり、そしてそのセマンティックが、このフィールドが別のフィールド長を包含するということであれば、数値分布型のモデルを選択できる。一方、フィールドの型が数値整数であり、そしてそのフィールドのセマンティックがメッセージ型であれば、数値設定型のモデルを選択できる。第３の例として、フィールドの型が数値整数であり、そしてそのフィールドのセマンティックがモーターの速度であれば、厳密な数値領域型のモデルを適用できる。
【００４６】
実施形態において、モデルのセットは、演算子のプロトコルフィールドのモデルと引数のプロトコルフィールドのモデルとを備え、演算子のプロトコルフィールドおよび引数のプロトコルフィールドに対する関連付けおよび評価が実行される。プロトコルは、（命令、呼び出しなどの）演算子を包含するプロトコルフィールドと、演算子が適用する被演算子（即ち、引数）を包含するプロトコルフィールドとを備えることができる。本発明の実施形態に従って、それぞれのモデルは、引数を備えるプロトコルフィールドだけでなく演算子を備えるプロトコルフィールドとも関連付けが可能であることに留意されたい。従って、侵入された引数の値を認識できるだけでなく、侵入の可能性のある演算子も認識できる。また、演算子が最も適切なモデル型の割り当てを許可することを考慮に入れ、演算子は、通常、事前定義されたあるデータ型を包含する１または複数の引数の後に続くことから、従って、侵入検出の精度を改善できる。
【００４７】
さらに、プロトコルメッセージを、送信ホストによって要求された時に受信ホスト（複数）で実行される演算の仕様とすることができる。それにより、プロトコルメッセージは、演算子フィールド（即ち、どのような演算が要求されるかについての仕様）、引数フィールド（即ち、どのような方法で演算を実行すべきかについての仕様）、およびマーシャリングフィールド（即ち、要求される演算と直接関連していないフィールドであるが、メッセージを正しく受信して変換する、またはより一般的には、ネットワーク通信を処理するためにホストが必要とするパラメータを包含する）を備えることができる。マーシャリングは、オブジェクトのメモリ表現を、記憶または送信に適したデータフォーマットに変換するプロセスとして理解でき、典型的には、データを、コンピュータプログラムの異なる部分の間で移動させる、またはあるプログラムから別のプログラムに移動させなければならない場合に使用される。
【００４８】
例えば、ＨＴＴＰリクエストは、演算子を指定するメソッドフィールド（例えば、ＧＥＴ、ＰＯＳＴ、ＰＵＴなど）、メソッドの引数（例えば、／ｉｎｄｅｘ．ｐｈｐ？ｉｄ＝３）を包含するＵＲＬフィールド、および演算自体と関連していないが、ホストが通信するために使用される情報（例えば、ヘッダＣｏｎｔｅｔ−ｌｅｎｇｔｈ：１００は、リクエストメッセージ本体が１００バイト長であると指定する）を包含するいくつかのヘッダフィールド（例えば、Ｃｏｎｔｅｔ−ｌｅｎｇｔｈ：１００）を包含する。
【００４９】
別の例として、Ｍｏｄｂｕｓ／ＴＣＰリクエストメッセージは、受信するＰＬＣ／ＲＴＵデバイス上でどのような演算が実行されるかを特定する関数コードフィールド、望ましい演算の引数を指定するデータレジスタの変数、演算と直接関連していないいくつかの他のフィールド（例えば、レジスタカウントフィールド、データ長フィールドなど）を包含し、それらは、受信するホストが、どのような方法でメッセージをパースするかを（例えば、いくつのレジスタが送信されるかを）理解するために必要とされる。
【００５０】
攻撃または侵入の試みは、悪意のあるデータをこれらの異なるフィールドのそれぞれに注入することによって実行され得る。同様に、異なるフィールドの値が通常とは異なっている理由により、このような攻撃または侵入の試みを検出できる。演算子およびマーシャリングフィールドの検査は、攻撃または侵入の試みを検出する精度を上げることができる。それによって、実施形態において、モデルのセットは、マーシャリングプロトコルフィールドのモデルをさらに備え、マーシャリングプロトコルフィールドに対する関連付けおよび評価がさらに実行される。
【００５１】
例えば、バッファオーバーフロー攻撃は、文字列フィールドに、受信ホストによって割り当てられたバッファよりも多い文字を注入することによって実行され得る。文字列フィールドが普通でない文字値を包含する理由により、このような攻撃を検出できる。一方、完全に有効なテキスト文字のみを悪意のあるペイロードとして使用することによって成功する攻撃が、実行され得る。同じ攻撃は、その後、別のフィールドが、文字列長が通常よりも長いと指定する理由により、検出され得る。これは、正当な文字列長の最大許可値が、受信するホストによって割り当てられるバッファのサイズになるので、必然的に真である。
【００５２】
さらに、検出精度をさらに上げる、または不適切な警告が生成される回数をさらに減らすために、異なる固有のモデル型を演算子フィールド、引数フィールドおよびマーシャリングフィールドに使用できる。異なる演算子フィールドに対し、（同じまたは異なるモデル型の）異なるモデルを使用できる。異なる引数フィールドに対し、（同じまたは異なるモデル型の）異なるモデルを使用できる。異なるマーシャリングフィールドに対し、（同じまたは異なるモデル型の）異なるモデルを使用できる。モデル型は、例えば、データ型および上述のようなセマンティックに基づいて選択されてもよい。
【００５３】
本発明に従った侵入検出システムおよび方法は、テキストデータトラフィック（即ち、テキストプロトコル）またはバイナリデータトラフィック（即ち、バイナリプロトコル）などの、任意の型のデータトラフィックに適用されてよいことに留意されたい。一般に、テキストプロトコルの仕様は、そのほとんどのフィールド値の型記述を持たない。例えば、ＨＴＴＰプロトコルの仕様は、テキスト文字列としてパースされなければならないヘッダ値またはパラメータ値と型を関連付けない。このような場合、トラフィックを検査することによってフィールドの型を推論する必要がある。一方、この振る舞いは、バイナリプロトコルには存在せず、その仕様は、適切なパーシングを可能にするために、すべてのプロトコルフィールドの型を含む必要がある。このため、バイナリプロトコルでは、フィールドの値型を推論する不確実性がないので、本技術をバイナリプロトコルに適用することは、テキストプロトコルに適用するよりもずっと正確である。特に、パースされるプロトコルフィールドのデータ型およびセマンティックを考慮に入れる場合、バイナリデータのストリームは、データ型および／またはセマンティックに基づいて各プロトコルフィールドの適したモデル型をパースして選択するという意味において、バイナリデータのコンテンツを考慮することが可能になるという、意味が与えられる。バイナリプロトコルにおいて、プロトコルフィールドのデータ型という用語は、プロトコルフィールドの（バイナリ）データ、即ち、例えば、数字、文字列などの、別のデータ型を表すバイナリデータで表されるデータとして理解されたい。
【００５４】
一般に、プロトコルメッセージは、プリミティブなプロトコルフィールドと複合的プロトコルフィールドとを備えることができる。複合的プロトコルフィールドは、２以上のサブプロトコルフィールドを備え、サブプロトコルフィールドのそれぞれをプリミティブなプロトコルフィールドまたは複合的プロトコルフィールドにできる。複合的プロトコルフィールドのモデルは、学習段階で観察されるプロトコルフィールドのインスタンスのカウンタを備えることができる。プロトコルフィールドが所定の回数（閾値）よりも少なく観察された場合、検出段階中に複合的プロトコルフィールドを観察して、侵入検出信号を生成させることができる。複合的プロトコルフィールドのセマンティックに従って、セキュリティに関する重要度を変えることができる。従って、例えば、セキュリティに関するフィールドの重要度に従ってセマンティックを使用して、異なるモデル型またはモデルの異なる感度を指定できる。例えば、セキュリティに関係のない複合的フィールドの場合、観察されたインスタンスの閾値を、生成された不適切な侵入検出信号の量を制限するように変更でき、従って、ユーザビリティが改善する。さらに、複合的フィールドのセマンティックをそのサブフィールドに伝搬できることによって、モデル型およびモデル設定のより正確な選択が可能となる。例えば、セキュリティと非常に関係する複合的フィールドに包含された数値型の基本フィールドを、数値領域型のモデルよりも厳密に安全領域の値を定義できる、数値設定型のモデルに関連付けることができ、従って、侵入検出精度が改善する。
【００５５】
本発明の別の態様に従って、データ通信ネットワークのデータトラフィックにおける侵入を検出するための侵入検出システムが提供され、
−データトラフィックをパースして、データトラフィックのプロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出するパーサと、
−抽出されたプロトコルフィールドを、そのプロトコルフィールドのそれぞれのモデルと関連付けるエンジンであって、そのモデルは、モデルのセットから選択されることと、
−抽出されたプロトコルフィールドのコンテンツが、モデルで定義された通りの安全領域内にあるかどうかを評価することモデルハンドラと、
−抽出されたプロトコルフィールドのコンテンツが、安全領域外であることが確定された場合に侵入検出信号を生成するアクチュエータとを備える。
【００５６】
本発明に従ったシステムを用いて、本発明に従った方法と同じまたは同様の効果を実現できる。また、本発明に従った方法を参照して説明されるのと同じまたは同様の実施形態を提供して、同じまたは同様の効果を実現できる。パーサ、エンジン、モデルハンドラおよびアクチュエータを、データ処理デバイスによって実行されるのに適したソフトウェア命令によって実装できる。それらは、同じデータ処理デバイスによって実行される同じソフトウェアプログラムに実装されてもよいし、または２以上の異なるデータ処理デバイスにおいて実行されてもよい。例えば、パーサは、データトラフィックが通過するロケーションにおいてローカルに実行されてよいし、一方、エンジン、モデルハンドラおよびアクチュエータは、例えば、安全なロケーションにおいてリモートに置かれてよい。また、異なる場所からのデータをモニタでき、それによって、例えば、パーサを各場所で提供でき、各パーサからの出力データは、単一のエンジン、モデルハンドラおよびアクチュエータに送信される。
【００５７】
上述した方法およびシステムは、侵入検出のみに適用されるものではないことに留意されたい。この目的の代替または追加として、上述した方法およびシステムをモニタリング目的に適用できる。例えば、工場、データセンターなどの、独立施設のデータネットワークのデータトラフィックをモニタできる。それぞれまたはある種のプロトコルフィールドに対し、安全または望ましい動作状態を表すモデルを定義できる。上述した方法およびシステムを適用して、そのような動作状態以外のステータスを検出できる。あるいは、事前に安全または望ましい動作状態を定義する代わりに、本明細書で説明したようなシステムおよび／または方法を学習段階に適用でき、それによって、学習段階で取得されるモデルは、モニタする時に動作の記述を取得することが可能になる。転送されるデータは、適切なプロトコルフィールドのモデルを学習するために適用されるデータなど、動作状態が導かれる情報を備えることができる。例えば、工場のデータネットワークでは、モーターの速度、反応装置の温度、水圧だけでなく、エラーメッセージ、プロシージャコールなどにも関連する制御情報を転送できる。このようなデータを、望ましいまたは安全な動作状態を定義する事前定義されたモデルと比較するか、またはモデルに学習させるためのいずれかに使用でき、よって、学習するモデルからステータスを導く。モニタリングは、システム／ネットワークの管理者にとって重要な意味を持つある種のプロトコルフィールド（またはプロトコルフィールドの組み合わせ）の値を観察することによって工場またはコンピュータネットワークの「健全な」状態を検査することを備えることができ、そしてコンピュータネットワークまたは工業プロセスなどの興味深いイベントを定義できる。よって、本明細書の侵入検出という用語が適用される場合、これは、モニタリングも指すものとして理解できる。
【００５８】
限定されない実施形態が開示された以下の説明および添付の概略図を参照し、例のみによって本発明のさらなる効果および特徴を説明する。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態に係る侵入検出システムを備えるデータ通信ネットワークの例を概略的に示す図である。
【図２】本発明の実施形態に係る侵入検出システムの要旨を概略的に示す図である。
【図３】本発明の実施形態に係る方法の学習段階の要旨を概略的に示す図である。
【図４】本発明の実施形態に係る方法の侵入検出段階の要旨を概略的に示す図である。
【図５】本発明の実施形態に係る侵入検出システムおよび方法を示す概略的なブロック図である。
【発明を実施するための形態】
【００６０】
図１において、本発明の実施形態に係る、プロトコルメッセージを分類する侵入検出システムを有するデータ通信ネットワークの例の要旨の概略を示す。このネットワークにおいて、パーソナルコンピュータ１４（またはワークステーション１５）は、サーバ１３と接続している。ネットワークを、ファイアウォール１７経由でインターネット１６に接続できる。
【００６１】
データ通信ネットワークにおいて、悪意のあるソフトウェアに感染された場合、侵入または攻撃は、インターネット１６またはパーソナルコンピュータ１４が発生源となる。
【００６２】
データ通信ネットワークは、ＳＣＡＤＡあるいは産業用制御ネットワークとする。そのようなネットワークにおいて、機械１２は、リモート端末装置（ＲＴＵ）１１またはプログラマブルロジックコントローラ（ＰＬＣ）上で稼動するソフトウェアによって制御される。サーバ１３上で稼動するソフトウェアは、ＲＴＵ１１上で稼動するソフトウェアにメッセージを送信できる。ＲＴＵ１１上のソフトウェアは、プロトコルメッセージを機械に送信でき、その機械上でもソフトウェアが稼動できる。
【００６３】
ユーザは、パーソナルコンピュータ１４またはワークステーション１５上で稼動するソフトウェア経由で、パーソナルコンピュータ１４またはワークステーション１５上で稼動するソフトウェアとサーバ１３上で稼動するソフトウェアとの間でプロトコルメッセージを交換することによって、サーバ１３と通信できる。
【００６４】
侵入検出システム１０は、図１に示すように、ＲＴＵ１１とネットワークのリマインダとの間、またはＲＴＵ１１と機械１２との間（図示せず）に位置付けされる。侵入検出システム１０は、プロトコルメッセージをデータ通信ネットワークから読み出すことができ、パーソナルコンピュータ１４またはワークステーション１５上で稼動するソフトウェアとサーバ１３上で稼動するソフトウェアとの間、サーバ１３上で稼動するソフトウェアとＲＴＵ１１上で稼動するソフトウェアとの間、またはＲＴＵ１１上で稼動するソフトウェアと機械１２のデータ処理デバイス上で稼動するソフトウェアとの間で読み出しを交換できる。
【００６５】
通信プロトコルを、デジタルプロトコルメッセージフォーマットの形式記述およびこれらのメッセージを計算システム（上で稼動するソフトウェア）内または間で交換するルールとして定義できる。通信プロトコルは、通信のシンタックス、セマンティック、および同期化の記述を含むことができる。データ通信ネットワークのアプリケーション層のプロトコルメッセージは、１または複数のフィールドを包含でき、そのフィールドは、それらのデータ型で特徴付けられる。例えば、フィールドは、メッセージの全長を数値または文字列値で表すことができる。
【００６６】
プロトコルメッセージに関するより多くの情報を用いて、通常の、本物または侵入されていないプロトコルメッセージを記述するモデルは、データ通信ネットワーク内で交換される各プロトコルメッセージの各プロトコルフィールドの通常または本物の値に関するより多くの情報を含むことができる。異常、即ち、モデルで記述された通りのデータ通信ネットワークの通常の振る舞いから逸脱するものを見つけるために、その後モデルを（例えば、リアルタイムで）使用して、データ通信ネットワークの生データトラフィックからプロトコルメッセージを分類できる。
【００６７】
図２は、本発明の実施形態に係る、侵入検出システム１０の実施形態の要旨の概略を示す。侵入検出システム１０は、データ通信ネットワークの（例えば）アプリケーション層のプロトコルメッセージの少なくとも１つのプロトコルフィールドを読み出すために配置された、ネットワークプロトコルパーサ２１を備える。学習段階において、プロトコルメッセージを入力２５経由で取得できる。ネットワークプロトコルパーサ２１を、侵入検出システムの定期的な動作中だけでなく任意選択の学習段階中にも使用できる。抽出されたプロトコルメッセージに関する情報をエンジン２３に転送できる。
【００６８】
侵入検出システムは、エンジン２３、モデルのセット２６およびモデルハンドラ２４をさらに備える。エンジン２３は、プロトコルフィールドのデータ型および／またはセマンティックに基づいて選択されるように、抽出されたプロトコルフィールドを、あるモデル型のモデルと関連付けるために配置される。それに加え、エンジンは、モデルのセット２６を備えるまたはそれにアクセスできる。エンジンは、抽出されたプロトコルフィールドを、そのプロトコルフィールドに固有である、例えば、フィールドのデータ型および／またはセマンティックに固有のモデルと関連付ける。それに加え、モデルのセット２６は、各モデルがプロトコルフィールドのうちの１（または複数の）に固有である、異なるモデルを備える。学習段階において、どのモデルも抽出されたプロトコルフィールドにまだ使用可能になっていない場合、エンジンは、抽出されたプロトコルフィールドのモデルを作成して、それをモデルのセットに付加する。抽出されたプロトコルフィールドに関する情報をハンドラ２４に転送できる。
【００６９】
ハンドラ２４は、その後、抽出されたプロトコルフィールドのコンテンツが侵入されたと見なされているか否かを評価するために、抽出されたプロトコルフィールドがモデルに適合しているか否かを評価する。学習段階において、抽出されたプロトコルフィールドのコンテンツを用いてモデルを更新できる。ハンドラは、出力２７経由でメッセージを出力できる。
【００７０】
検出システムは、プロトコルフィールド（の値）が侵入されたと見なされた、即ち、関連付けられたモデルで定義された安全領域外である場合、侵入検出信号を生成するアクチュエータ２２をさらに備えることができる。侵入検出信号の生成に応答して、侵入検出アクション、例えば、警告の発生、データパケットまたはプロトコルフィールドのフィルタリング（それによって、例えば、データパケットまたはプロトコルフィールドを除去する）を備えるアクションを実行できる。パーサがプロトコルフィールドを特定できない可能性がある場合（データパケットがプロトコルに従わないことを意味する）、および／またはモデルハンドラが侵入検出動作中に、抽出されたプロトコルフィールドをそのセットからのモデルと関連付けることができない可能性がある場合（データパケットが、通常送信されるプロトコルフィールドを備えていないことを意味する）にも、侵入検出信号を生成できる。
【００７１】
各プロトコルフィールドに対し、固有のモデルが使用され、好適には、それぞれの異なるプロトコルフィールドに対して異なるモデルが使用されて、そのプロトコルフィールドに専用のモデルを使用して、そのプロトコルフィールドを評価できるように、各プロトコルフィールドに対する最適な評価を実行できるようにする。
【００７２】
実施形態において、モデルは、少なくとも２つのモデル型を使用して構築されており、少なくとも２つのモデル型のうちの第１のモデル型は、第１のデータ型を有するプロトコルフィールドに最適化（またはそれのみに機能する）され、少なくとも２つのモデル型のうちの第２のモデル型は、第２のデータ型を有するプロトコルフィールドに最適化される。第１のモデル型が、ある数字データ型、文字列データ型またはバイナリデータ型を有するプロトコルフィールドに最適化され、そして第２のモデル型が、別の数字データ型、文字列データ型またはバイナリデータ型を有するプロトコルフィールドに最適化される場合があり得る。
【００７３】
例えば、数字データ型を有するプロトコルフィールドＡ１の値では、モデルＭ−ｌ−Ａ１は、数値を記述することを意図として構築される。数字データ型を有するプロトコルフィールドＡ２の値では、モデルＭ−ｌ−Ａ２は、同様に、数値を記述することを意図として構築される。文字列データ型を有するプロトコルフィールドＡ３の値では、モデルＭ−Ｓ−Ａ３は、文字列値の記述が最適化または適合されるように構築される。同じデータ型を有する異なるプロトコルフィールドのモデル、例えば、モデルＭ−ｌ−Ａ１およびＭ−ｌ−Ａ２は、同じモデルアーキテクチャを使用して構築されるが、プロトコルフィールドＡ１とＡ２との間の差異を表すために、異なるコンテンツ（例えば、異なる許容領域、異なる許容値など）を有することができる。
【００７４】
数値を記述するモデル型および文字列値を記述するモデル型は、プロトコルメッセージの数値と文字列値との両方の、すべての値を記述するように最適化された単一のモデルよりは、数値と文字列値との両方をそのプロトコルフィールド内に備えるプロトコルメッセージの値を記述するほうがより良いまたは正確であることが理解できる。
【００７５】
検出侵入システム１０は、学習段階中にモデルを構築するために配置される。本発明の実施形態に係る、検出侵入システム１０の機能および方法について、図３および図４を参照してさらに説明する。図３は、学習段階を概略的に示し、図４は、侵入検出段階を概略的に示す。
【００７６】
図３では、学習段階のステップが概略的に示されている。ステップａ１：データトラフィックをパースして、データトラフィックに適用されるプロトコルの少なくとも１つのプロトコルフィールドを抽出する。ステップａ２：抽出されたプロトコルフィールドを、そのプロトコルフィールドのモデルと関連付けることであって、そのモデルは、モデルのセットから選択される。ステップａ３：モデルのセットの既存のモデルに対してどの関連付けも行うことができない場合、抽出されたプロトコルフィールドの新しいモデルを作成し、そして新しいモデルをモデルのセットに付加する。ステップａ４：抽出されたプロトコルフィールドのコンテンツを使用して、抽出されたプロトコルフィールドのモデルを更新する。
【００７７】
一般に、プロトコルメッセージは、プリミティブなプロトコルフィールドと複合的プロトコルフィールドとを備えることができる。複合的プロトコルフィールドは、２以上のサブプロトコルフィールドを備え、サブプロトコルフィールドのそれぞれをプリミティブなプロトコルフィールドまたは複合的プロトコルフィールドにできる。プリミティブなプロトコルフィールドをより多くのプロトコルフィールドに分割することができない。このように、プロトコルメッセージは、プロトコルフィールドの木構造を備えると言える。例えば、プロトコルメッセージにおいて、複合的プロトコルフィールド“ｍｓｇ＿ｂｏｄｙ”は、プリミティブなプロトコルフィールド“ｍｓｇ＿ｌｅｎ”と複合的プロトコルフィールド“ｍｓｇ＿ｄａｔａ”から構成される。複合的プロトコルフィールド“ｍｓｇ＿ｄａｔａ”は、プリミティブなプロトコルフィールド“ｍｓｇ＿ｔｙｐｅＡ”および“ｍｓｇ＿ｔｙｐｅＢ”を備えることができる。本明細書におけるプロトコルフィールドという用語は、このような木構造の任意のレベルにおける任意のプリミティブなプロトコルフィールドを指す。
【００７８】
異なるモデル型を使用できる。例えば、プロトコルフィールドのモデル型は、例えば、数字モデル型、文字列モデル型またはバイナリモデル型のうちの１つであってよい。抽出されたプロトコルフィールドが数値を備えることが分かった場合、数字モデル型をそのプロトコルフィールドに適用できる。抽出されたプロトコルフィールドが文字列値を備えることが分かった場合、文字列モデル型をそのプロトコルフィールドに適用できる。（例えば、テキストプロトコルにおいて）学習段階中にネットワークプロトコルパーサが、プロトコルフィールドのデータ型が数字データ型であるか文字列データ型であるかを確定できない場合、より汎用的なモデル型としてバイナリデータ型モデルが適用される場合があり得る。
【００７９】
上述したように、モデルのセットは、各プロトコルフィールドに対してそれぞれのモデルを備えることができる。数字データ型を有するプロトコルフィールドのモデルは、文字列データ型を有するプロトコルフィールドのモデルとは異なって構築されてよい（即ち、異なる種類から構成されるまたは異なるモデルアーキテクチャを有してよい）。モデルは各データ型に最適化できるので、そのモデルは、通常の、本物または侵入されていないプロトコルメッセージを記述することが、プロトコルフィールドのデータ型を考慮に入れていないモデルよりも正確である。
【００８０】
異なる種類のデータ型に対する異なる種類のモデル型の例を以下に説明する。数字データ型に対し、２つのモデル型を適用でき、第１のモデル型は、長さを表すプロトコルフィールドであり、第２のモデル型は、列挙を表すプロトコルフィールドである。
【００８１】
プロトコルフィールドが列挙（例えば、値のセット）を表す場合、そのモデルは、学習段階中に読み出されたプロトコルフィールドのすべての値にセットＳを備える。空のセットから開始した後、学習段階中にプロトコルフィールドとして特定された各値をそのセットに付加する。侵入検出段階において、プロトコルメッセージは、それに対応して決定されたプロトコルフィールドの値が、例えば、セットＳの一部でない場合、異常として分類される。
【００８２】
プロトコルフィールドが長さを表す場合、そのモデルは、学習段階中にプロトコルフィールドの値の分布を近似して構築される。学習段階中、分布の近似値の平均μおよび分散σ２は、プロトコルフィールドのコンテンツとして決定されたすべての値のサンプル平均およびサンプル分散に基づいて計算される。分布の近似値の平均μおよび分散σ２を用いて、すべての値の確率が計算される。侵入検出段階中、プロトコルフィールドの決定された値の確率が所定の閾値よりも低い場合、この値を有するプロトコルメッセージは、異常として分類される。
【００８３】
ブール型のプロトコルフィールドのモデルは、例えば、サンプル数で平均したブール値をモニタし、その平均値を事前に決定された閾値と比較できる。このようなモデルの例を以下に示す。
【００８４】
学習段階中、確率Ｐｔは、フィールドの値が真であると計算され、そして確率Ｐｆ（１−Ｐｔ）は、フィールドの値が偽であると計算される。
【００８５】
２−学習段階中にフィールド値のｎサンプルの列が考慮されて、その後、そのような値の列を観察する二項確率、ＰｔおよびＰｆが計算される。確率は、その後、ある閾値ｔと比較され、ｐ＿ｓａｍｐｌｅ＜ｔであれば、警告が発せられる。例えば、学習段階中に同数の真値と偽値が観察されると仮定する。よってＰｔ〜１／２とＰｆ〜１／２となる。値が５から０．１までの列の確率閾値を設定する。これより、侵入検出段階中に列［ｆａｌｓｅ，ｆａｌｓｅ，ｆａｌｓｅ，ｆａｌｓ，ｆａｌｓｅ］を観察することを考慮する。二項確率をｐ＿ｓａｍｐｌｅ＝Ｐ（ｔｒｕｅ＝０）＝０．０３１２５＜０．１とする。この場合、警告を発する。ＡＳＣＩＩおよびＵｎｉｃｏｄｅ文字列を処理することができる文字列のモデル型の例を以下に説明する。最初に、ＡＳＣＩＩ文字列のモデル型を説明する。
【００８６】
ＡＳＣＩＩ文字列のモデル型は、２つのブール値とリストとを備える。第１のブール値（アルファベット）は、アルファベットが見つかれば真に設定され、第２のブール値（数字）は、数字が見つかれば真に設定され、そしてそのセット（シンボル）は、見つかったすべてのシンボルを記録する。文字列フィールドを所与として、文字列がアルファベット、数字を包含するかどうか、およびどのシンボルであるかを教える関数ｆ（ｓ）が定義される。例えば、文字列“ｕｓｅｒＮａｍｅ？＃！”の場合、
【００８７】
【数１】
2014522167.tif 000003
【００８８】
となる。学習段階中、文字列ｓを所与として、モデルＭが以下のように更新される。
【００８９】
【数２】
2014522167.tif 000004
【００９０】
文字列の文字は、次々と評価される。各文字に対して、エンジンは、その型を検証し、そして文字がアルファベットまたは数字のいずれかである場合、エンジンは、それに従って対応するフラグを「真」に設定してモデルを更新する。現在の文字がシンボルである場合、現在のシンボルのセットに付加される。シンボルがすでに存在している場合、２度は付加されない。
【００９１】
侵入検出段階中、文字列ｓを所与として、
【００９２】
【数３】
2014522167.tif 000005
【００９３】
であれば、警告が発せられる。文字列の文字は、再度、次々と評価される。検証プロセスは、直接的(straightforward)である。現在の文字がアルファベット（または数字）のいずれかである場合、エンジンは、所与のフィールドに対してアルファベット文字（または数字文字）が以前に観察されたことを検証する。この検証が失敗した場合、警告が発せられる。文字がシンボルである場合、エンジンは、所与のシンボルが以前に観察されたことを検証する。この検証が失敗した場合、警告が発せられる。
【００９４】
最初に、モデルＭが以下のように定義される。
【００９５】
【数４】
2014522167.tif 000006
【００９６】
Ｕｎｉｃｏｄｅ文字列に使用され得るような、文字列のモデル型の別の例を以下に説明する。Ｕｎｉｃｏｄｅ文字列に対するモデリングおよび検出技法は、ＡＳＣＩＩ文字列のモデリングと同様である。ＡＳＣＩＩではないＵｎｉｃｏｄｅ文字は、ＡＳＣＩＩアルファベットとして扱われ、即ち、文字列がＵｎｉｃｏｄｅ文字を包含するのであれば、ブール値「アルファベット」は、真に設定される。さらに、学習段階中に見られるＵｎｉｃｏｄｅスクリプトのセット（例えば、ラテン文字、キリル文字、アラビア文字）は、記憶される。この付加的な情報を用いて、例えば、未知のＵｎｉｃｏｄｅ文字（恐らく学習段階中に見られるスクリプトとは異なるスクリプトに属する）が文字列内に存在するかどうかが検出される。
【００９７】
もう少し詳細に言えば、Ｕｎｉｃｏｄｅ文字列フィールドｓを所与として、文字列がアルファベット、数字を包含するかどうか、どのシンボルであるかおよびどのＵｎｉｃｏｄｅスクリプトであるかを教える関数ｆ（ｓ）を定義する。例えば、文字列“ｍｕ３ｓｏａｆａ？＃！”の場合、
【００９８】
【数５】
2014522167.tif 000007
【００９９】
となる。Ｕｎｉｃｏｄｅ文字列に対し、モデルＭは、ＡＳＣＩＩ文字列と同じまたは同様の動作を実行することによって初期化され、および付加的なフィールド「スクリプト」をフィールド「シンボル」と同様に処理することによって更新される。
【０１００】
バイナリプロトコルフィールドのモデル型のさらにいくつかの例を以下に提供する。
【０１０１】
バイナリデータ型に対し、ペイロードの解析に基づく周知の異常ベースの侵入検出システムからのモデルが適用される。
【０１０２】
バイナリモデルの例は、１−グラム解析を基にする。連続ｎバイト列ではｎ−グラムである。
【０１０３】
１バイト長のバイナリフィールドを所与として、最初に、各バイト列の相対頻度を包含するベクトルｆを計算する。言い換えれば、バイト値ｖを所与として、ｖに対応するｆの成分は、
【０１０４】
【数６】
2014522167.tif 000008
【０１０５】
によって与えられる。学習段階中、相対頻度ベクトルは、各バイト値の平均および標準偏差を計算するために適用される。従って、ｎバイナリフィールドの列ｂ１．．ｂｎを所与として、それらに関連するバイト列の相対頻度ベクトル（ｆ１．．ｆｎ）である、２つのベクトルμおよびσが、各バイト値（０から２５５まで）のそれぞれの平均および標準偏差を包含するように計算される。この例のこれらの２つのベクトルは、バイナリモデルを形成する。
【０１０６】
検査段階中、バイナリフィールド値ｓを所与として、関連する相対頻度ベクトルｆｓが最初に計算される。その後、適切な関数Ｆ（例えば、正規化されたユークリッド距離）を適用して、ｆｓと学習段階中に構築されたモデルとの間の距離を決定する。結果として生じる距離が事前に決定された閾値を超える場合、警告が発せられる。
【０１０７】
学習値のセットｂ１．．ｂｎをサブセットに分割することによって、前述したモデルのより正確なバージョンを取得できる。学習値のセットをサブセットに分割するために、自己組織化マップ（ＳＯＭ）などのクラスタリングアルゴリズムを入力値（ｂ１．．ｂｎ）に適用できる。別個のモデル（即ち、アレイペアμ、σ）を、その後、各サブセットとして構築できる。
【０１０８】
侵入検出段階中、クラスタアルゴリズムがバイナリフィールド値（ｓ）に実行される。前述したように、テストは、その後、結果とし生じるクラスタに関連付けられるモデルに適用される。
【０１０９】
バイナリモデルの第３の例は、いわゆるネットワークエミュレータである。ネットワークエミュレータは、危険な実行可能命令がバイトのセット内部に包含されているかどうかを決定できるアルゴリズムである。バイト列を所与として、そのアルゴリズムは、最初に、既存のバイト値を関連するアセンブリ命令に変換する（逆アセンブリ）。その後、そのアルゴリズムは、危険または疑わしいと認識される命令列（例えば、典型的には、周知の攻撃の悪意のあるシェルコード内部で見つかる、ＮＯＰ命令の長い列）を見つけようと試みる。このような列が見つかった場合、警告が発せられる。この型のバイナリモデルは、訓練段階を必要としないことに留意されたい。
【０１１０】
バイナリフィールドが、データがネットワークプロトコル仕様で指定されていない構造体に従って体系化された、いわゆるバイナリラージオブジェクト（ＢＬＯＢ）を包含する場合、本明細書で説明した同じアプローチを適用して、基本フィールド（例えば、数値フィールド、文字列フィールド、ブールフィールドなど）が抽出されて処理されるまで、ＢＬＯＢをその構成フィールドにさらに分割できる。例えば、バイナリプロトコルフィールドは、仕様が存在するＧＩＦまたはＪＰＥＧ画像を包含できるが、そのような仕様は、ネットワークプロトコル仕様自体の一部ではない。この場合、ＧＩＦまたはＪＰＥＧ画像の仕様を使用して、フィールド値をその基本構成フィールドにさらに分割できる可能性がある。その後、それに従ってオブジェクトの構成フィールドのモデルが選択されて構成される。そのような別の事例は、バイナリフィールドが、通信するホストのうちの１つの全メモリ領域（例えば、Ｍｏｄｂｕｓプロトコルの一部として交換されるＰＬＣのマップメモリ）を包含する場合に生じる。このメモリ領域の構造は、他のドキュメント（例えば、ＰＬＣベンダー仕様）で定義されてもよいし、十分なデータサンプルを観察することによって推論されてもよい。このような情報を使用して、メモリ領域を基本フィールドにさらに分割でき、基本フィールドは、その後、本明細書で説明した技法に従って処理され得る。
【０１１１】
さらに、文字列データ型に対し、非特許文献１で説明されたようなモデルが適用されてよい。バイナリデータ型に対し、ペイロードの解析に基づく周知の異常ベースの侵入検出システムからのサブモデルが適用される。例は、非特許文献２に見られるものであってよい。この著作において、著者は、ｎ−グラム解析を活用して異常を検出する、ＰＡＹＬと呼ばれるシステムを提示している。連続ｎバイト列ではｎ−グラムである。１−グラムの相対頻度および標準偏差（１バイト列）が解析されて、学習段階中に構築された検出モデルに記憶される。その後、侵入検出段階中、（ペイロード長値を使用して）適切なモデルが選択されて、流入するトラフィックを比較するために使用される。
【０１１２】
別の例が、非特許文献３に見られる。この論文において、著者は、検出モデルを選択する（および構築する）ペイロード長を廃棄するが、その代わりにペイロードデータを前処理して、その出力を適切な検出モードを選択するために使用するニューラルネットワークを使用して改善されたシステムを、ＰＡＹＬの最上に構築している。
【０１１３】
さらなる例が、非特許文献４に見られる。この論文において、著者は、「ネットワークエミュレータ」を提示している。このソフトウェアコンポーネントは、経験則を実装して、ソフトウェア経由で物理的ＣＰＵをシミュレートする。ネットワークエミュレータは、入力データが実行可能（および有害な）コードを包含するかどうかを検査することができる。実施形態において、パーシングプロセスは、以下のステップを備える。  
ｉ）データ通信ネットワークからデータパケットを集めるステップ
ｉｉ）ＩＰパケットをデフラグするステップ
ｉｉｉ）ＴＣＰセグメントをリアセンブルするステップ
ｉｖ）アプリケーションデータを読み出すステップ
【０１１４】
前述したように、モデルが関連付けられるフィールドのセマンティックに従って、異なるモデル型を選択することが可能である。モデルによって定義される安全領域を広げるまたは狭めるセマンティックに従って、１または複数の（各モデル型に固有の）モデルパラメータを調整することも可能である。ここで、モデル型を選択するまたはモデルパラメータを調整するセマンティックのフィールドを使用したいくつかの例を提供する。
【０１１５】
プロトコルのメッセージ型を表す数値フィールドの場合、数値列挙型のモデルを使用できる。このようなモデル型は、モデルで列挙されたメッセージ型のみが安全領域と定義されることを確認させる。学習段階中にモデルが自動的に構築される場合、観察されるすべてのメッセージ型が安全と見なされる。モデルが手動で構築される場合、許可されるメッセージのセットを固有のセキュリティポリシーに従って構築できる。例えば、セキュリティポリシーは、読み込まれた動作のみがある種のホスト上で実行されることを課すことができる。この場合、許可されたメッセージのセットは、読み込まれたメッセージのみを包含する。
【０１１６】
エンジン速度を表す数値フィールドの場合、工業プロセスの文脈において、数値領域のモデルを使用できる。このようなモデル型は、エンジン速度が安全と見なされている値よりも下または上に設定されないことを確認させる。学習段階中にモデルが自動的に構築される場合、最小／最大許可値を、学習段階中に観察された最小／最大速度に（精密な範囲で）設定できる。モデルが手動で構築される場合、最小および最大範囲の値を、エンジンの技術仕様に基づいて、速度が動作の許容条件の範囲内であることを確認するように設定できる。
【０１１７】
セキュリティに関連するフィールドの長さ（例えば、文字列バッファの長さ）を表す数値フィールドの場合、数値分布型のモデルを使用できる。さらに、フィールドがセキュリティと非常に関係するので、バッファオーバーフロー攻撃のターゲットになる恐れがあっても、高確率の閾値を設定できる。このように、モデルで定義される安全エリアは、学習段階中に観察される同じ数値分布で生成される高確率を有する値に制限される。言い換えれば、フィールド長値が、学習段階中に以前に観察されたものに対して大きすぎる場合、その値は異常と見なされ、従って恐らく攻撃と見なされる。例えば、オーバーフロー攻撃を実行するために使用されるシェルコードは、バッファの通常のコンテンツよりも大きい可能性があり、従って、バッファフィールド長の異常値を生成する。
【０１１８】
人の名前を表す文字列フィールドの場合、文字列型のモデルを選択でき、そしてそのモデルに含まれないシンボル文字数のデフォルト閾値を非常に低いレベルに設定できる。人の名前は、多数のシンボルを包含することが期待されないので、デフォルト閾値を非常に低いレベルに設定することは、観察された値がモデルに存在するシンボルを包含する場合に侵入検出信号が直ちに生成されることを確実にする。これは、一重または二重の引用符、コンマなどの特殊文字を活用する、いわゆるＳＱＬ注入攻撃の場合に当てはまる。
【０１１９】
図４は、侵入検出プロセスのステップを概略的に示す。ステップｂ１：データトラフィックをパースして、データトラフィックのプロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出する。ステップｂ２：抽出されたプロトコルフィールドを、そのプロトコルフィールドのモデルと関連付けることであって、そのモデルは、モデルのセットから選択される。ステップｂ３：抽出されたプロトコルフィールドのコンテンツが、モデルで定義された通りの安全領域内にあるかどうかを評価する。ステップｂ４：抽出されたプロトコルフィールドのコンテンツが、安全領域外であることが確定された場合に侵入検出信号を生成する（例えば、プロトコルフィールドを備える抽出されたプロトコルフィールドまたはプロトコルメッセージをフィルタリングした後に続いて、ユーザへの警告、またはその他の侵入検出アクションを生成する）。
【０１２０】
実施形態において、パーシングが、フィールドがプロトコルに従っていると確定することができない場合または抽出されたフィールドをモデルのセットのどのモデルとも関連付けることができない場合に侵入検出信号をさらに生成できる。
【０１２１】
図５は、本特許出願において提案される概念の要旨を例として概略的に示す。プロセスは、プロトコルメッセージの少なくとも１つのプロトコルフィールドを抽出するためにネットワークトラフィックをパースすること（５００）から開始する。第２のステップは、抽出されたプロトコルフィールドを、そのプロトコルフィールドのモデルと関連付けること（５０１）であって、そのモデルは、モデルのセットから選択されることを備える。モデルのセットは、異なるモデル型を備えることができ、そのモデルのセットは、図５の５１３で表される。抽出されたプロトコルフィールドのモデル型の選択を、値型のプロトコルフィールド（５１１で表される）とプロトコルフィールドに関連付けられるセマンティック（５１２で表される）との両方によって決定できる。異なるモデル型のセット（５１３）は、入力としても提供され、その異なるモデル型は、数値領域モデル、数値設定（列挙）モデル、数値分布モデル、ＡＳＣＩＩ文字列モデル、Ｕｎｉｃｏｄｅモデル、ブールモデル、ｎ−グラムベースのバイナリモデル、ネットワークエミュレータ、侵入検出署名のセットなどを含むことができる。パースされたプロトコルフィールドをそれに対応する（あるモデル型の）モデルと関連付けるプロセスは、このような演算の引数（５０９で表される）を記述するフィールドを用いて動作を記述するフィールドの依存性を考慮に入れることによって改善されることもできる。より一般的には、あるフィールド値の別のフィールド値に対する任意の依存性（５１０で表される）は、パースされたプロトコルフィールドをそれに対応するモデルと関連付ける時に、同じフィールドに対する複数のモデルが、同じメッセージ内の別のフィールドの値に従って構築されるようなやり方で考慮されることができる。学習段階中、選択されたモデル型のモデルが、パースされたプロトコルフィールドでは存在しない場合、そのようなモデルを作成できる（ステップ５１５）。同様に、モデルがすでに存在する場合、そのモデルを学習段階中に更新して、パースされた現在のフィールド値を、モデルで定義された安全領域に含むようにできる（ステップ５１６）。パーシングが、ネットワークデータで観察されたフィールドがプロトコル仕様に従っていると確定することができない場合、侵入検出信号を生成できる（ステップ５０８）。検出段階中、パースされたフィールドを、選択されたモデル型の既存のモデルに関連付けることができない場合、侵入検出信号を生成できる（ステップ５０４）。一方、パースされたフィールドを、選択されたモデル型の既存のモデルに関連付けることができる場合、そのモデルで定義された安全領域に対してフィールド値を評価できる（ステップ５０３）。パースされたプロトコルフィールド値が、モデルで定義された安全領域内にない場合、侵入検出信号を生成できる（ステップ５０５）。最後に、上述した理由のいずれかの理由により、侵入検出信号が生成された場合、異常値を有するプロトコルフィールドと関連付けられたプロトコルメッセージをネットワークトラフィックから除去すること(ステップ５０６)、または侵入警告メッセージを発するまたは出力すること（ステップ５０７）などの、さらなる���テップをとることができる。
【０１２２】
開示された実施形態は、各種形態に具体化することができる本発明を単に例示するものであることを理解されたい。従って、本明細書で説明した固有の構造的および機能的な詳細は、限定として解釈されず、単に特許請求の範囲の基礎として、および適切に詳述した実質的に任意の構造において本発明をさまざまに実施することを当業者に教示するための代表的な基礎として解釈される。さらに、本明細書で使用された用語および語句は、限定されることを意図せず、むしろ、本発明の理解しやすい説明を与えることを意図する。上述した実施形態の要素は、他の実施形態を形成するために組み合わされてもよい。
【０１２３】
本明細書で使用される用語「１つ“ａ”」または「１つ“ａｎ”」は、１または複数のものとして定義される。本明細書で使用される、別のという用語は、少なくとも第２のまたはそれ以上のものとして定義される。本明細書で使用される、含むおよび／または有するという用語は、備える（即ち、他の要素またはステップを除外しない）として定義される。特許請求の範囲の任意の引用符号は、特許請求の範囲または本発明の範囲を限定するものとして解釈されてはならない。ある手段が、相互に異なる従属クレームに記載されているという単なる事実は、利益のためにこれらの手段を組み合わせて使用してはいけないことを示すものではない。本発明の範囲は、以下の特許請求の範囲によってのみ限定される。
【図１】
2014522167.tif 000009
【図２】
2014522167.tif 000010
【図３】
2014522167.tif 000011
【図４】
2014522167.tif 000012
【図５】
2014522167.tif 000013
【国際調査報告】
2014522167.tif 000014
2014522167.tif 000015
2014522167.tif 000016