(57)【要約】【課題】完全なクライアント−サーバ変換ストリームを再構成し、復号器および／またはデコンプレッサを適用し、多次元内容プロファイル化および／または加重されたコンテキスト内のキーワードを使用して結果的なデータ流を解析する方法を提供する。【解決手段】この方法は例えばデータがそのオリジナルの形態および／または文書タイプから変更されている場合でも、データの押出しを検出することを可能にする。復号器はまた例えばｅメール添付のような隠れた転送機構を明らかにすることができる。この方法は更に無許可（例えば不正）の暗号化されたセッションを検出し、違法と見られるデータの転送を停止することができる。この方法は例えば２Ｇｂｐｓ（全二重方式）が可能な押出し防止マシンを構築することを可能にする。【選択図】図１
2007507763.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークデータを受信し、
クライアント−サーバ通信セッションをネットワークデータから再構成し、
ネットワークデータを通して、（ｉ）統計的検出および（ii）キーワードベース検出の少なくとも一方を使用してクライアント−サーバ通信セッションを解析することによって情報の漏洩を検出するステップを含んでいる方法。
【請求項２】
さらに、１以上のアプリケーションプロトコルを検出し検査するためクライアント−サーバ通信セッションを復号するステップを含み、
クライアント−サーバ通信セッションは１以上のアプリケーションプロトコルを含んでいる請求項１記載の方法。
【請求項３】
１以上のアプリケーションプロトコルは少なくとも（i）ｐｄｆ、（ii）ｈｔｔｐ、（iii）ｅメール、（iv）ｅメール添付物、（v）ｆｔｐ、（vi）ｚｉｐ、（vii）ｍｓワード、（viii）ｍｓエクセル、（ix）ｈｔｍｌ、（x）ｘｍｌ、（xi）ｇｚｉｐ、（xii）ｔａｒ、（xiii）プレインテキストの１つを含んでいる請求項２記載の方法。
【請求項４】
クライアント−サーバ通信セッションは少なくとも（i）ＴＣＰ、（ii）ＩＰ、（iii）イーサネット（登録商標）のうちの１つを含んでいる請求項１記載の方法。
【請求項５】
統計ベースの検出は多次元内容プロファイル化を含んでいる請求項１記載の方法。
【請求項６】
統計ベースの検出はドメイン特定高レベル特性を含んでいる請求項１記載の方法。
【請求項７】
ドメイン特定高レベル特性は少なくとも（i）社会保険番号、（ii）クレジットカード番号、（iii）郵便アドレス、（v）ｅメールアドレスのうちの１つを含んでいる請求項６記載の方法。
【請求項８】
キーワードベースの検出は１以上の加重されたキーワードを含んでいる請求項１記載の方法。
【請求項９】
情報はデジタル資産を含んでいる請求項１記載の方法。
【請求項１０】
さらに、任意の無許可の暗号化されたセッションを検出するためにネットワークデータを解析するステップを含んでいる請求項１記載の方法。
【請求項１１】
ネットワーク通信を受信し、
少なくとも内容の再構成と、実時間でのネットワーク通信の走査及び認識とを行うことにより、ネットワーク通信を介するデータの無許可の転送および／または不当な転送を防止するステップを含んでいる方法。
【請求項１２】
内容の走査と認識は多次元内容プロファイル化を含んでいる請求項１１記載の方法。
【請求項１３】
内容の走査と認識はローカルデータについて行われる請求項１１記載の方法。
【請求項１４】
十分に飽和されたギガビット速度でネットワーク通信を介するデータの無許可の転送および／または違法の転送を阻止する請求項１１記載の方法。
【請求項１５】
ネットワークデータを受信し、
ネットワークデータを介する情報の漏洩を少なくとも多次元内容プロファイル化を適用することにより防止するステップを含んでいる方法。
【請求項１６】
情報はデジタル資産を含んでいる請求項１５記載の方法。
【請求項１７】
多次元内容プロファイル化は情報の構造を考慮して行われる請求項１５記載の方法。
【請求項１８】
符号化された情報を有するマシン読取り可能な媒体において、
前記情報がマシンにより読取られ実行されるとき、
ネットワークデータを受信し、
クライアント−サーバ通信セッションをネットワークデータから再構成し、
ネットワークデータを通して、（ｉ）統計的検出および（ii）キーワードベースの検出の少なくとも一方を使用してクライアント−サーバ通信セッションを解析することによって情報の漏洩を検出するステップを含んでいる方法を実行するマシン読取り可能な媒体。
【請求項１９】
符号化された情報を有するマシン読取り可能な媒体において、
前記情報がマシンにより読取られ実行されるとき、
ネットワーク通信を受信し、
少なくとも内容の再構成と、実時間でのネットワーク通信の走査及び認識とを行うことにより、ネットワーク通信を介するデータの無許可の転送および／または不当な転送を防止するステップを含んでいる方法を実行するマシン読取り可能な媒体。
【請求項２０】
符号化された情報を有するマシン読取り可能な媒体において、
前記情報がマシンにより読取られ実行されるとき、
ネットワークデータを受信し、
ネットワークデータを介する情報の漏洩を少なくとも多次元内容プロファイル化を適用することにより防止するステップを含んでいる方法を実行するマシン読取り可能な媒体。
【請求項２１】
ネットワークデータを受信する受信機と、
前記受信機に結合されているプロセッサとを具備し、このプロセッサは
（ｉ）クライアント−サーバ通信セッションをネットワークデータから再構成し、
（ii）ネットワークデータを通して、（ｉ）統計的検出および（ii）キーワードベースの検出の少なくとも一方を使用してクライアント−サーバ通信セッションを解析することによって情報の漏洩を検出するように構成されている装置。
【請求項２２】
ネットワーク通信を受信する受信機と、
前記受信機に結合されているプロセッサとを具備し、このプロセッサは少なくとも内容の再構成と、実時間でのネットワーク通信の走査及び認識とを行うことにより、ネットワーク通信を介するデータの無許可の転送および／または不当な転送を防止するように構成されている装置。
【請求項２３】
ネットワーク通信を受信する受信機と、
前記受信機に結合されているプロセッサとを具備し、このプロセッサはネットワークデータを介する情報の漏洩を少なくとも多次元内容プロファイル化を適用することにより防止するように構成されている装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク通信に関し、特に、本発明は例えば情報の漏洩の防止および／または不正の暗号化の検出のための、ネットワーク内容の解析に関する。
【背景技術】
【０００２】
一般的に内容の走査は比較的よく開発されている分野である。ほとんどの応用では、内容の走査はキーワードベースであるが、より進歩した応用では通例の表現またはパターン突合せ／文書分類の統計的な方法を使用する。この方法自体は多くの文書分類問題に対して適用されている。統計的な分類子の適切な応用の１例はスパン濾波であり、ここではベイズ分類子は９８％の正確度を示す。
【０００３】
（例えばネットワークチャンネルを通っての情報の漏洩を防止する）デジタル資産保護の分野はかなり新しい。これまでの商用のシステムは既存の分野からの方法及びツールを借りており、キーワードの存在を調べるためにデータのオフライン解析に集中している。デジタル資産保護の最も開発された部分はｅメールの転送および交換ソフトウェアへのアドオンとして動作するｅメールスキャナである。この分野の製品はキーワードベースおよびｒｅｇｅｘｐベースの濾波を提供し、外界へ攻撃的またはその他の不正なｅメールを伝送する行為を防止し、生じ得る訴訟から会社を保護することに焦点を置いている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
デジタル資産保護分野は最近、特に米国政府のプライバシー保護法、例えば財務機関をターゲットとするグラム−リーチ−ブリレイ法案（“ＧＬＢＡ”）およびヘルスケア提供業者の健康保険移動継続及び責任法案（“ＨＩＰＡＡ”）のために、注意を引き始めた。例えばクレジットカード番号及び医療記録の漏洩は訴訟に数百万ドルかかるので、これらの事件を停止させなければならない。
【課題を解決するための手段】
【０００５】
本発明は１特徴によれば、ネットワークデータを受信し、クライアント−サーバ通信セッションをネットワークデータから再構成し、ネットワークデータを通して、（ｉ）統計的検出および（ii）キーワードベース検出の少なくとも一方を使用してクライアント−サーバ通信セッションを解析することによって情報の漏洩を検出するステップを含んでいる方法を提供する。
【０００６】
別の特徴によれば、本発明はネットワーク通信を受信し、少なくとも内容の再構成、実時間でのネットワーク通信の走査及び認識を行うことにより、ネットワーク通信を介するデータの無許可および／または不当な転送を防止するステップを含んでいる方法を提供する。
【０００７】
更に別の特徴によれば、本発明はネットワークデータを受信し、ネットワークデータを介する情報の漏洩を少なくとも多次元内容プロファイル化を適用することにより防止するステップを含んでいる方法を提供する。
【０００８】
本発明の更に別の特徴によれば、本発明は符号化された情報を有するマシンの読取り可能な媒体を提供し、この情報がマシンにより読取られて実行されるとき、ネットワークデータを受信し、クライアント−サーバ通信セッションをネットワークデータから再構成し、ネットワークデータを通して、（ｉ）統計的検出および（ii）キーワードベース検出の少なくとも一方を使用してクライアント−サーバ通信セッションを解析することによって情報の漏洩を検出するステップを含んでいる方法を実行させる。
【０００９】
本発明の更に別の特徴によれば、本発明は符号化された情報を有するマシンの読取り可能な媒体を提供し、それはこの情報がマシンにより読取られ実行されるとき、ネットワーク通信を受信し、少なくとも内容の再構成、実時間でのネットワーク通信の走査及び認識を行うことにより、ネットワーク通信を介するデータの無許可および／または不当な転送を防止するステップを含んでいる方法を実行させる。
【００１０】
更に別の特徴によれば、本発明は符号化された情報を有するマシンの読取り可能な媒体を提供し、この情報がマシンにより読取られ実行されるとき、ネットワークデータを受信し、ネットワークデータを介する情報の漏洩を少なくとも多次元内容プロファイル化を適用することによって防止するステップを含んでいる方法を実行させる。
【００１１】
更に別の特徴によれば、本発明はネットワークデータを受信する受信機と、受信機に結合されたプロセッサとを具備し、このプロセッサが（ｉ）クライアント−サーバ通信セッションをネットワークデータから再構成し、（ii）ネットワークデータを通して、（ｉ）統計的検出および（ii）キーワードベース検出の少なくとも一方を使用してクライアント−サーバ通信セッションを解析することによって情報の漏洩を検出する装置を提供する。
【００１２】
本発明の更に別の特徴によれば、本発明はネットワーク通信を受信する受信機と、その受信機に結合されたプロセッサとを具備し、プロセッサが少なくとも内容の再構成、実時間でのネットワーク通信の走査及び認識を行うことにより、ネットワーク通信を介するデータの無許可および／または不当な転送を防止する装置を提供する。
【００１３】
更なる別の特徴によれば、本発明はネットワーク通信を受信する受信機と、受信機に結合されたプロセッサとを具備し、プロセッサがネットワークデータを介する情報の漏洩を少なくとも多次元内容プロファイル化を適用することにより防止する装置を提供する。
【発明を実施するための最良の形態】
【００１４】
［略語のリスト］
ＧＬＢＡ          グラム  リーチ  ブリレイ法案  
ＨＩＰＡＡ        健康保険移動継続及び責任法案  
ＩＰ              インターネットプロトコル  
ＴＣＰ            伝送制御プロトコル  
ＤＦ              デジタル指紋  
ＨＴＭＬ          ハイパーテキストマークアップ言語  
ＦＳＡ            有限状態オートマトン
ＰＤＦ            移動可能文書フォーマット  
ＨＴＴＰ          ハイパーテキスト伝送プロトコル  
ＦＴＰ            ファイル転送プロトコル  
ＸＭＬ            拡張可能なマークアップ言語  
ＳＳＮ            社会保険番号  
ＯＳ              オペレーティングシステム  
ＡＰＩ            アプリケーションプログラミングインターフェース  
ＮＩＣ            ネットワークインターフェースカード  
ＦＤ              全二重方式  
ＳＰＡＮ          交換ポート解析装置  
ＣＰＵ            中央処理装置  
ＳＭＰ            対称マルチ処理  
ＩＰＣ            プロセス間通信  
ＤｏＳ            サービスの否認  
ＰＣＡＰ          パケット捕捉  
ＰＬＲ            パケット損失比  
ＲＡＭ            ランダムアクセスメモリ  
ＦＤＣ            フリー記述子チェーン  
ＳＭＴＰ          シンプルメール転送プロトコル  
ＭＣＰ            多次元内容プロファイリング  
ＭＩＭＥ          多目的インターネットメール拡張  
ＴＡＲ            テープアーカイブ  
ＡＫＤ            自動キーワード発見  
ＡＩＲ            警告情報記録  
ＤＲＭ            デジタル利権管理  
ＡＣＰ            自動内容プロファイラ  
ＦＩＦＯ          先入れ−先出し  
ＶＭ              バーチャルマシン  
ＡＳＣＩＩ        米国情報交換用標準符号  
ＣＣＮ            クレジットカード番号  
ＶＰＮ            バーチャル私設ネットワーク  
ＲＥＤ            不正暗号化検出器  
ＳＳＬ／ＴＬＳ    秘密保護ソケット層／転送層セキュリティ  
ＮＣＡＰ          ネットワーク内容解析プラットフォーム  
ＭＵＴＥＸ        相互−排他的ロック  
ＵＤＰ            ユーザデータグラムプロトコル  
ＡＣＬ            アクセス制御リスト  
ＳＮＭＰ          シンプルネットワーク管理プロトコル  
ＲＯＭ            読取り専用メモリ
【００１５】
［本発明を実行するためのモード］  
ほぼあらゆる組織は、例えば患者の記録、顧客のクレジットカード番号、化学構造および／または顧客リストを含む貴重な情報をそのネットワークに維持している。過去６年間にわたって、調査した組織の約２０％がネットワークの所有情報の盗難を認識している。そのとき、彼等の報告した経済的損失は８５０パーセントも増加し、所有情報の盗難はコンピュータの誤使用による経済的損失の最大の原因になった。
【００１６】
組織はそれらのデータを守るために間接的な方法、即ち例えばハッカーからの防御、ソフトウェアパッチ、ユーザ認証、物理的なセキュリティのような基本ネットワークセキュリティの実施を使用している。より直接的な方法はデータ自体の流れ（例えばアウトフロー）を単に観察するか、および／または１以上の間接的な方法と組合わせることである。
【００１７】
本発明の１実施形態は情報の流出（例えばアウトフロー）を監視し阻止する方法を提供する。情報は感知可能情報、個人情報および／または知的財産のようなデジタル資産を含むことができる。この方法はネットワークトラフィックを捕捉し、内容の走査と認識を例えば実時間および／またはオフラインで行うことができる。その方法は（ｉ）データの無許可の移動、（ii）情報の漏洩および／または（iii）デジタル資産のバルク転送を検出および／または阻止するために使用されることができる。デジタル資産には顧客のリスト、クライアント及び患者の記録、財務情報、クレジットカード番号および／または社会保険番号を含まれることができる。
【００１８】
本発明の方法は完全なクライアント−サーバ変換ストリームを再構成し、復号器および／またはデコンプレッサを適用し、および／または１以上の内容スキャナを用いて結果的なデータを解析する。１以上の内容スキャナは多次元内容プロファイル化、加重されたコンテキスト内のキーワードおよび／またはデジタル指紋を含んでいてもよい。本発明の方法はさらに個人のネットワークパケットを扱う深いパケット検査を行うことができる。その方法は更に例えば共通の圧縮、集合、ファイルフォーマットおよび／または符号化スキーマを“剥離”できる内容復号の１以上の階層を提供し、処理に適した形態で実際の内容を抽出することができる。さらに、復号器は例えばｅメール添付物のような隠れた転送機構を明らかにすることができる。この方法は（例えば統計的および／またはキーワードプロファイル）データをプロファイルし、例えばデータがそのオリジナルの形態および／または文書タイプから変更されていてもデータの流出を検出できる。この方法はまた無許可（例えば不正）の暗号化されたセッションを検出し、違法と見られるデータの転送を停止することができる。この方法は（例えば１Ｇｂｐｓネットワークを含む）実時間ネットワークトラフィックで動作でき、例えば無許可の情報転送を防止するために全二重方式が可能な（例えば１以上のＧｂｐｓ）マシンを構築することを可能にする。
【００１９】
多次元内容のプロファイル化は文書（例えばテキスト、二進データ、データファイル）の特徴を捕捉し、文書の寿命に共通の変化、即ち編集、幾つかの独立したバージョン、類似の文書のセット等への分岐を許容する。これはキーワードの走査と指紋との両者に対する後継として考慮され、両技術の能力を結合している。
【００２０】
キーワード走査は比較的効率的でユーザに平易の文書分類方法である。これはテキストで逐語的に一致する非常に特別なワードのセットに基づいている。走査に使用される辞書は通信では不適切なワード、極秘のプロジェクト、製品、およびまたはプロセスのコードワードおよび／またはそれらの使用のコンテキストとは独立して疑いが生じるその他のワードを含んでいる。突合せはセット状のストリング整合アルゴリズムに基づいたシングルパス突合せ装置により実行されることができる。ゴーグルに精通する人はキーワード検索の信号対雑音比がキーワード自体の特有性と、キーワードとそれらが捕捉した概念とのマッピングの正確度にしたがって、良好な状態から許可できない状態まで変化することを立証できる。
【００２１】
デジタル指紋（“ＤＦ”）はゼロに近づく偽の陽性度によって、ある文書および／またはデータファイルの正確なレプリカを正確に指摘できる。この方法は秘密保護ハッシュアルゴリズム（例えばＳＨＡ−１とＭＤ５）によりメッセージダイジェストを計算できる。ＤＦは特定のデータファイルの無許可のコピーを検出し、および／またはファイルがみだりに変更されていないことを証明できる。ＤＦを流出検出に応用する問題は稀であり、それはＤＦがコンテキストの小さい変化に対して高感度であるからであり、例えば極秘情報と知的財産を構成する任意の実在のデータセットが時間において“凍結”され、オリジナル形態でのみ利用可能であるならば、非常に稀である。不完全な情報（例えば文書の一部）または異なる形態の同一の情報（例えばＨＴＭＬとして送信されるワード文書）或いは付加的な句読点符号を有する同一の文書は完全に気づかれずにＤＦベースの検出器を通過できる。これらの欠点にもかかわらず、ＤＦは依然として内容の変化を抽出する幾つかの方法の上部の第２の層として有用である（例えばケースフォールディング、白色空間正規化、ワード順序正規化、ワードステミング、ワードの代わりにＳＯＵＮＤＥＸコードの使用）。
【００２２】
内容プロファイル化はある文書クラスに属す文書を識別するための１以上の技術を含むことができる。同一のクラスの文書は例えばプロファイル化のような予備プロセスの期間中に決定された類似の統計的特性を共有する。プロファイル化はクラス（正の学習セット）に属する文書の代表的なセットと、それに付随してそのクラスに類似しているがそのクラスに属さない（負の学習セット）文書とを利用する。クラスのプロファイル化プロセスは一度行われ、統計的特性の結果的なセット（例えばプロファイル）はそのクラス中のメンバーであるかについての試験に使用される。
【００２３】
プロファイルの品質はそのクラスの全ての文書に共通する特徴を捕捉するプロファイル化アルゴリズムの能力にしたがっており、異なる特性の多数の関連しない特徴の使用によって改良される。各特徴はディメンション（例えば１つの文書と別の文書とでは異なる量的尺度）を規定できる。セキュリティ装置の内容プロファイル化は複数の異なる特徴を使用でき（例えば４００以上の異なる特徴）、これはネットワークを通過するデータについて実時間で計算されることができる。ネットワークを通過する各文書は多次元スペース中の単一点にマップされることができ、このスペース中のその位置はクラスのメンバー（例えば２以上のクラスのメンバーが識別されることができる）の計算に使用されることができ、警報および／または反応尺度をトリガーする。
【００２４】
内容プロファイル化方法は数世紀にわたり暗号解読により使用されており、古代ローマ人は個人の手紙の頻度の変化に基づいた簡単な解析方法を知っていた。依然として貴重であるが、簡単な統計的特性は、高レベルの統計的方法により補足されるときに最良に作用し、例えばワードおよび文章のようなより大きいエレメントで動作する。
【００２５】
多次元のプロファイラは複数（例えば約２００）の低レベルの統計的尺度で動作し、残りは高レベルの統計的尺度である。高レベルの統計はある一般的な問題領域（例えば個人の健康記録に関する極秘の個人情報、銀行口座情報、顧客リスト、クレジットカード情報、郵便アドレス、ｅメール、個人の経歴等）を念頭において設計されており、新しいドメイン特定次元を付加することにより他の領域を新しいターゲットとすることができる。
【００２６】
所定のエレメントの全体的な使用を要約している個々の高レベルおよび低レベル特徴に加えて、プロファイラは文書の空間的構造に専用の複数（例えば１００以上）の次元を有してもよく、これはエレメントの相互の同時発生および整列を含んでいる。１例として、これは郵便アドレスでは、州の名称とジップコードが非常に類似の頻度を有し、ジップコードがすぐその後に続く州の名称で相互にインターリーブすることを捕捉できる。空間的解析は文書の全体構造の捕捉に使用されてもよく、ターゲットクラスに類似の使用パターンを有する索引、語彙目録、その他のタイプの文書は容易にいじることができない。
【００２７】
文書の学習セットのプロファイル化はセット中の文書と同数の点を多次元属性スペースに発生できる。各点は個々の文書（または文書のセクション）を表し、（クラス内では）“＋”としてマークされ、（クラス外では）“−”とマークを付される。最終的な学習行為は“＋”と“−”点を最小のオーバーラップによって分離する属性スペースの最も簡単な区分化を計算することができる。この区分化は有限状態オートマトン（“ＦＳＡ”）に基づいてデータ駆動アルゴリズムに自動的に“デジタル化”されることができ、その有限状態オートマトンは例えば高い信頼度とワイヤ速度で“群衆の中の顔”を識別できる高速度シングルパス走査エンジンとして動作する。
【００２８】
本発明の方法は以下の特徴を個別にまたは組合わせて含むことができる。  
・データ（例えば企業データ）の流出を識別し、阻止するためにパケットレベルでネットワークトラフィックを監視する；
・例えば顧客リスト、クライアント及び患者の記録等のようなデジタル資産の“バルク”転送に焦点を置く；
・例えば最小の構造要求を有する実時間ネットワークベース；
・ＴＣＰセッションの再構成；
・トラフィックの全ての層（例えばＰＤＦ、イーサネット（登録商標）、ＩＰ、ＴＣＰ、ＨＴＴＰ）を明らかにし、解析する；
・データ転送に使用される全ての普及しているプロトコル（例えばｅメール、ＦＴＰ、ＨＴＴＰ）のマルチレベル復号化；
・ネストされたデータ層（例えば添付物、ＺＩＰアーカイブ）の深い検査；
・普及しているデータフォーマット（例えばＭＳワード、ＭＳエクセル、ＨＴＭＬ、ＸＭＬ、普通テキスト）の検査；
・統計的および／またはキーワードベースの検出；
・ローカルデータに対する本発明の方法の態様を調節するために自動プロファイル化及びキーワード発見のための１以上のツール；
・例えば文書構造を考慮に入れた多次元解析；
・統計的解析のためのドメイン特定高レベル特徴（例えばＳＳＮ、クレジットカード番号、郵便アドレス、ｅメールアドレス）；
・オンタイム応答、実時間での違法通信の閉路；および／または
・不正暗号化（例えば無許可に暗号化された通信チャンネル）の検出
【００２９】
１以上のこれらの特性はネットワーク機器に組込まれることができる。機器は自蔵され、タスクの的を絞られており、および／または企業のデジタル資産に関するネットワーク使用方針のセットを設定及び強化することを可能にする。
【００３０】
この方法は既製のＬｉｍｕｘ（登録商標）オペレーティングシステム（“ＯＳ”）とインテル（登録商標）ベースのハードウェアでインストールされ、その機器がスタンドアロンネットワーク機器として機能することを可能にする。この方法はネットワークパケット捕捉のためＬｉｍｕｘ（登録商標）システムＡＰＩを使用できる。この方法はＬｉｍｕｘ（登録商標）特定実時間スケジュール化設備と標準的なＵＮＩＸ（登録商標）プロセス間通信（“ＩＰＣ”）チャンネルも使用できる。この方法は更に一般的な管理目的（例えば警報情報の構成と、それの遠隔コンソールへの送信）用にＵＮＩＸ（登録商標）ネットワーク化ＡＰＩを使用する。この方法はパケット捕捉のために１以上のネットワークインターフェースカード（“ＮＩＣ”）も使用できる。ＮＩＣは（例えば割当てられたＩＰアドレスのない）ＯＳにより十分に付勢されず、“乱”モードで使用されることができる。この方法は例えばＦＤ／ＳＰＡＮモードでＮＩＣの随意選択的な番号を聞くことができる。この方法の多数のインスタンスは機器で動作することもできる。この方法は不正なＴＣＰセッションを分解するためにＴＣＰセッションキラーモジュールを含み、パケットを特定されたネットワークセグメントに注入するために別々のＮＩＣを使用することができる。
【００３１】
マシンの読取り可能な媒体（例えばＣＤ）は例えばペンティアム（登録商標）ＩＶおよび／またはより高いＣＰＵを有するＰＣハードウェアで動作する任意のＬｉｎｕｘ（登録商標）７．３＋にインストールされるようにその方法によりプログラムされることができる。ギガビットのインテル（登録商標）ＮＩＣはネットワークのスニフに使用されることができる。機器は６４ビットＰＣＩ／Ｘバスと、対応するインテル（登録商標）プロ６４ビットの１Ｇｂｐｓカードを含むことができる。
【００３２】
機器のインストールは３つの行為を含むことができる。  
・強化されたＬｉｎｕｘ（登録商標）カーネルと、必要なＬｉｎｕｘ（登録商標）ユーティリティセットのインストール；
・この方法によるソフトウェアのインストール；および／または
・特別なハードウェア構造に一致するためのソフトウェアの構成／同調
【００３３】
図１は幾つかのモジュールを含んでいるシステム（例えばプラットフォーム）の１実施形態を示している。このシステムは種々の応用、例えばＴＣＰ／ＩＰネットワークデータ交換の内容を含むネットワークトラフィックの全ての層をアクセスするのに適している。システムは例えば汎用ハードウェア（例えばギガビットＮＩＣを有するマルチプロセッサ  インテル（登録商標）／Ｌｉｎｕｘ（登録商標）ボックス）を使用して十分に飽和されたギガビットトラフィックで動作することができる。システムはスケール可能であり、例えばネットワークスニフおよび解析的応用をＩＰＣを経て通信する幾つかのモジュールに分解することによって対称マルチ処理（“ＳＭＰ”）構造で１以上のＣＰＵの効率的な使用を可能にする。
【００３４】
このシステムはネットワークデータ交換の効率的で正確な再構成を行う。システムは（１）例えば乱調モードで動作するネットワークインターフェースカードの支援により、ネットワークを経て伝播する個々のパケットを捕捉し、（２）パケットを復号し基本的な転送層（例えばＩＰ）を明らかにし、（３）断片化されたパケットを合体し、（４）進行中の双方向データ交換（例えばセッション）とＴＣＰセッションに対して追跡し、（５）各データセッションの両側を再構成し、それらの全体的な内容を内容解析層に対して利用可能にすることができる。
【００３５】
このような再構成は幾つかの要因によって複雑にされる。要因の１つは速度であり、現代のネットワーク化装置は最新のギガビットイーサネット（登録商標）標準方式をサポートし、したがって多くのネットワークセグメントは７００乃至８００Ｍｂｐｓ以上に到達する効率的な速度で動作する。このような接続を続けるために、スニフコンポーネントは十分に高速であり、それによってそれぞれのパケットは捕捉され、（例えば個別的またはセッションの一部としての）その内容の解析には十分な時間が残される。別の要因は正確度であり、受動的なアプリケーションであるスニファは全ての場合において全てのトラフィックを再構成するために必要な全ての情報をもたない可能性がある（そうするためには、通信ホストの内部状態にアクセスしなければならない）。スニファが全二重方式のストリームまたは非対称的にルートされるトラフィックを解析するならば、状態は更に複雑になり、幾つかの関連するネットワークストリームは別々のＮＩＣを介して捕捉され、単一通信チャンネルとして解析されることができる。
【００３６】
この問題に対する既存のオープンソースおよび所有の解決策は多くのカウントで不足する。効率的な策はＩＢＭ（登録商標）のパワーＮＰネットワークプロセッサのような特別なハードウェアに依存するものであり、そうではないものは非常に遅く、理想的な高速度ネットワーク環境で有用であるには不正確である。
【００３７】
この問題を解決するシステムでさえも任意の特別なハードウェアに依存しない。システムはパケットスニフ、断片化解除、復号、ＩＰおよびＴＣＰセッション追跡、例えばギガビット速度での層２−７の再構成および／または解析を行うことができる。更にシステムは一時的なイベント記憶及びイベントスプーラで支援される統一されたイベント処理手段を含むことができる。
【００３８】
システムは多数のＣＰＵを利用し、内容解析アルゴリズムのスケール能力を与えるように設計されている。このスケール能力はアプリケーション全体を多数のモジュールに分解し、それらをフレキシブルなＩＰＣ機構を介して所定の構造に適するように接続することにより実現される。プラットフォームのＡＰＩは処理モジュールの以下のような接続方法を含むことができる。  
・インライン。パケット解析装置はフレームワークと共に同一の実行可能なものにコンパイルされ、主要なパケット処理サイクルでその時間シェアを取る。この方法は単一プロセッサハードウェアに対して適切である。  
・パケットレベル並列。例えばＩＰおよびＴＣＰリアセンブラにより復号され最初に処理された後、パケットは更に解析されるため循環待ち行列を使用して別々のプロセスに対して利用される。例えば１以上（例えば３２まで）の外部解析装置は単一の待ち行列に取り付けられることができる。１つの選択肢はまたそれらの間でのラウンドロビンパケット分配により幾つかの独立した待ち行列を設定することを含む。および／または  
・ストリームレベル並列。ＴＣＰストリームリアセンブラは再構成されたストリームデータを循環ストリーム待ち行列に与えることができる。この待ち行列はクライアント−サーバの会話全体の内容を解析するように設計されているプログラムの役目を行う。例えば１以上（例えば３２まで）の外部解析装置は単一の待ち行列に接続されることができる。また多数の待ち行列はそれらの間のラウンドロビン分配により構成されることができる。
【００３９】
インラインおよび外部内容解析コンポーネントの両者は例えばメッセージベースのＡＰＩを介して中央イベント処理コンポーネントを呼出すことによりイベントを発生できる。イベント処理コンポーネントは規則的な優先順位により別々のプロセスで作動する。これは入力待ち行列からイベントを獲得し、それらを一時的なファイル記憶装置に書込むことができる。一貫したイベント記憶装置は情報損失を最小にしてネットワークの故障をしのぐために使用されることができる。
【００４０】
イベント処理コンポーネントはスニファ自体に対するサービスの否認（“ＤｏＳ”）アタックの可能な影響を最小にするために設計されることができる。これはシリーズ全体を全ての情報を圧縮形態で記憶する１つの“結合された”事象に圧縮することによって一連の同一または類似の事象に応答でき、同一のイベントに対しては、結合されたイベントはイベントカウントと共に単一のイベントからの情報を含むことができる。
【００４１】
イベントプロセッサにより集められた情報は例えばイベントスプーリングコンポーネントによってその目的地（例えばデータ採掘コンソールのような別々のイベント解析コンポーネント）へ送信されることができる。イベントスプーラはこれらがスプールディレクトリに書込まれるとき新しいイベントの追跡を維持できる。新しいイベントのそれぞれは暗号化され、１以上の目的地に送信されることができる。イベントスプーラは別々の低い優先順位のプロセスとして動作することができる。
【００４２】
［パケット捕捉］  
パケット捕捉モジュール（例えば図１参照）の１実施形態は高速度で確実なパケット捕捉および／またはギガビットが可能なネットワークスニファ用に構成されることができる。単一ＮＩＣの半二重モードでは、パケット捕捉モジュールはストックハードウェア（例えばギガビットインテル（登録商標）ＮＩＣを有するＬｉｎｕｘ（登録商標）／インテル（登録商標）ボックス上のｌｉｂｐｃａｐ）における通常のパケット捕捉方法よりも２倍の速度アップを与える。この速度アップは例えばハードウェア中断、システム呼出し、データコピーのような時間がかかる行為を最小にし、パケット処理により多くの時間を残すことによって実現されることができる。実在のネットワークトラフィックはヘエロジーニアスである。通常のパケットサイズの分布は約８０バイトおよび１５００バイトで最大である傾向がある。時間におけるパケット速度の分布は非常に不均一である。適合目的地ホストとは異なって、ネットワークスニファはその必要性にしたがってパケット速度を折衝する能力をもたない。それ故、スニフしているトラフィックの適切なバッファを行うために設計され、このようにして各パケット当り寸法の定められた処理ウィンドウが与えられるように設計されることができる。
【００４３】
各ハードウェアの中断は潜在的にコンテキストの切換を生じて、これは新型のインテル（登録商標）ＣＰＵでは非常に高価な動作である。中断を最小にするために、パケット捕捉モジュールはカスタム化されたインテル（登録商標）ドライバを利用して、インテル（登録商標）ＮＩＣの遅延された中断モードを十分に使用することができる。システムの呼数は最新のＬｉｎｕｘ（登録商標）カーネルにより支援されるパケットソケットモードへのいわゆる“ターボ”拡張を利用することによって減少されることができる（例えばＰＡＣＫＥＴ＿ＲＸ＿ＲＩＮＧソケットオプション）。
【００４４】
十分な潜在性まで使用するとき、変更されたドライバ及びターボモードはＮＩＣデータバッファへ最速の可能なアクセスを行い、１００％の容量でのポーリングは捕捉されたパケット当り約０．００１中断／システム呼だけ（償却）を生じる。トラフィック中の瞬間的なサージに対処するため、パケット捕捉モジュールはパケットバッファに対して数メガバイトを割当てることができる。大きいバッファはまたＩＰデフラグメンタおよびＴＣＰリアセンブラにより発生された不規則な遅延により生じるパケット損失を減少させることができる。
【００４５】
パケット捕捉モジュールは多数のＮＩＣを使用してＦＤ／ＳＰＡＮモードで動作し、十分なセッション再構成のサポートを行う。乱調モードで動作する多数のＮＩＣから来るパケットは幾つかのパケットバッファを同時にポーリングすることによりインターリーブされることができる。ポーリング戦略は付加的なコンテキスト交換またはシステム呼出しを誘起せずに、各バッファがその注意のシェアを得ることができる。
【００４６】
パケット捕捉モジュールは幾つかのロード・オン・デマンドダイナミックライブラリとして構成されることができる。“汎用目的”ライブラリは随意の数の選択的なＮＩＣを処理する。１（ＨＤモード）と２（ＦＤモード）ＮＩＣ用に最適化されたハードコード化パラメータを有するバージョンも存在する。プログラミングＡＰＩはＰＣＡＰに似ている（機能的な違いのために十分な両立性は実際的ではない）。汎用目的のライブラリは多数のインターフェース（例えば“ｅｔｈ１：ｅｔｈ３：ｅｔｈ５”）を有するインターフェース初期化ストリングを受取る。
【００４７】
パケット到着時間の分配用のＴＣＰ指向モデルを有する実際のトラフィックとシミュレートされたトラフィックの測定は、パケットバッファ及びピックアップに対する改良が平均２０％だけパケット処理の時間スロットを増加することを示した。同一のトラフィックでは、これは０．５−１Ｇｂｐｓゾーンではパケット損失比（“ＰＬＲ”）で３０％乃至５０％の減少につながり、同じＰＬＲカットオフ及びトラフィック飽和レベルである場合、センサが１．５倍以上のロードを処理することを可能にする。
【００４８】
パケット捕捉モジュール（例えば図２参照）はＬｉｎｕｘ（登録商標）高速度ネットワーク捕捉インターフェースを使用するように構成されることができる。このインターフェースはＮＩＣドライバスペース内でリングバッファを割当て、これを直接的に受取人のプロセスにマップし、カーネルから目的地プロセスへデータをコピーするためのシステム呼出しのオーバーヘッドを除去する。リングバッファの付加的な利点はネットワークトラフィックにおけるサージとパケット処理の遅延を効率的に平滑にすることである。
【００４９】
パケット捕捉モジュールはロード・オン・デマンドダイナミックライブラリの形態でＣ言語を使用して実行されることができる。１ＮＩＣ、２ＮＩＣ、および随意選択的な量のＮＩＣで使用するのに適した３つのライブラリが存在する。
【００５０】
［パケット捕捉モジュールＡＰＩ］  
パケット捕捉モジュールは標準的なＵＮＩＸ（登録商標）ダイナミックライブラリインターフェースを使用して構成されることができる。これはロード・オン・デマンドダイナミックライブラリとしてパケット捕捉モジュールで使用されることができる。異なる数のＮＩＣ（例えば１、２、ユーザ特定）用に最適化されたパケット捕捉モジュールライブラリが幾つか存在する。パケット捕捉モジュールＡＰＩは例えば、特別な数のＮＩＣ名称を含んでいる特別にフォーマットされたストリングを予測する初期化呼を除いて、全てのインスタンスに対して同一である。
【００５１】
パケット捕捉モジュールは以下の機能をエクスポートできる。  
・void*init(char*iface, char*errbuf, char*nr_blocks)  
・iface：“ｅｔｈ１”のようなＮＩＣ名称ストリング。多数のインターフェースの場合、ifaceストリングは“ｅｔｈ１：ｅｔｈ３：ｅｔｈ２”のようになる。  
・errbuf：呼者が与えたエラーバッファに対するポインタであり、例えば５１２バイト以上である。  
・nr_blocks：ＮＩＣドライバにより割り当てられるリクエストされた量のブロック。nr_blocksが０であるならば、デフォルト値がリクエストされる。  
・void fini (void*handler)  
・handler：対応するinit( )functionにより戻される値  
・void stat (void*handler, pc_st*stat)  
・handler：対応するinit( )functionにより戻される値  
・stat：統計データ構造  
・int linktype (void*handler)  
・handler：対応するinit( )functionにより戻される値  
・int loop (void*handler, pc_catcher_t*func, char*arg)  
・handler：対応するinit( )functionにより戻される値  
・func：パケットデータを受取るユーザ特定機能に対するアドレス  
・arg：func( )に通過される随意選択的なアーギュメント
【００５２】
［パケット捕捉モジュールの初期化］  
方法はパケット捕捉ダイナミックライブラリをロードし、そのｉｎｔ（  ）ｆｕｎｃｔｉｏｎを呼ぶことができる。この機能はＮＩＣ名称に対する入力ストリングをパーズし、発見された各ＮＩＣは以下のことを行う。  
・パケットソケットを生成する；
・特定されたサイズを有するリングバッファを割当てるようにＮＩＣドライブにリクエストする；
・結果的なバッファをそのメモリスペースにマップする。および／または
・バッファセグメントの最初を指向する内部バッファマーカを初期化する。
【００５３】
初期化後、方法（例えば図３参照）はループ（）機能を呼出す。ループ（）機能は方法の寿命期間、例えば致命的なエラーが生じるまでまたは方法が終端信号を受信するまで動作する。ループ（）はラウンドロビン方法でＮＩＣバッファをポールできる。各バッファの現在のセグメントはドライバ（例えば図２参照）により初期化された制御フィールドをチェックすることによりデータの準備について確認されることができる。セグメントに利用可能なデータがないならば、次のＮＩＣバッファがチェックされることができる。全てのバッファが空であるならば、ループ（）は例えばポール（）システム呼を使用して、方法を中断することができる。
【００５４】
新しいデータが利用可能になったとき、またはタイムアウト（例えば１秒のタイムアウト）後、いずれのデータが最初に来ても、方法は再開されることができる。タイムアウトの場合、ユーザ特定機能はＮＵＬＬアーギュメントで呼出されることができる。これはトラフィックがないことを監視するタスクを有するあるパケットプロセッサで有用である。ユーザ機能が呼出された後、方法はポール（）を経て再度中断されることができる。利用可能なデータの場合、方法はいずれのＮＩＣバッファが現在データを有するか否かを見るためにポール（）により戻された結果をチェックすることができ、バッファの最後にチェックされたセグメントに直接ジャンプでき、その後に通常のバッファポーリング手順を再開する。ポール（）が１を超える準備バッファについて通報するならば、方法はセーブされたバッファインデックスから通常の手順を再開できる。
【００５５】
パケット捕捉モジュールは方法が終了する理由を見つけたとき停止する。パケット捕捉ＡＰＩからのｆｉｎｉ（）機能は制御ソケットを閉じることができる。ＵＮＩＸ（登録商標）標準プロセルの終了手順は全ての通信チャンネルを閉じ、その方法により使用された全てのメモリを再要求する。したがって、ｆｉｎｉ（）を呼ぶ必要はない。
【００５６】
［ＩＰデフラグメンタ］  
ＩＰデフラグメンタ（例えば図１参照）の１実施形態はネットワークスニファの特別な要求を満たすために構成されることができる。多目的のＩＰデフラグメンタはトラフィックが合法でフラグメント化が稀であるとする仮定下で設計されている。パケット検査アプリケーションのベースとして作用するネットワークスニファは大きなロード下で動作し、ＤｏＳアタックが存在しても安定でなければならない。高速度および／または頑丈なパケット再構成を行うことに加えて、違法のフラグメントが到着するとすぐにそれを検出して反応することができる。パケット検査アプリケーションはその後、低反応待ち時間を含み、“標準的な”ＩＰスタックを分解するように特別に設計されたアタックに耐えることができる。ネットワークスニファのＩＰデフラグメンタは次の構成可能な選択肢を与える。：即ち最小のフラグメントサイズ、パケット当り最大数のフラグメント、最大の再構成されたパケットサイズ、パケット再構成タイムアウト等を提供できる。ＩＰデフラグメンタは任意のフラグメント順序で良好に等しく実行するように構成されている。
【００５７】
デフラグメンタは低いフラグメント当りのオーバーヘッドを含み、違法および／またはランダムにオーバーラップするフラグメントによりネットワークに押し寄せるＤｏＳアタックを処理するためにフラグメント単位（および／またはパケット単位のオーバーヘッド）に集中する。フラグメント当りのオーバーヘッドの最小化は初期化／完了化相の負担を低下させ、および／またはフラグメント間の処理を（例えば均一に）分配することにより実現されることができる。結果として、無効なフラグメントストリームはプロセス中で早期に認識され、最初の無効のフラグメントに後続する全てのフラグメントに対してほとんど時間を費やさない。初期化／完結化時間の最小化はセキュリティ装置をターゲットとする幾つかのＤｏＳアタックで使用される非常に短いフラグメントにおいてデフラグメンタの性能にプラスの影響を与えることもできる。この改良によってＮＩＣ及びパケット捕捉ライブラリにより与えられるバッファ能力を良好に使用することができる。
【００５８】
デフラグメンタは例えば１ＧＢＰＳを超えるスループットを与え、例えば大きい無効のフラグメントでは１９Ｇｂｐｓに到達できる。無効のフラグメントでは、デフラグメンタの早期の無効フラグメントの検出は６倍の性能増加につながる。ＩＰフラグメントの順序はＩＰデフラグメンタ性能に影響を与えない。
【００５９】
比較のために、Ｓｎｏｒｔ  ｖ２．０のデフラグメンタは例えば平均してＩＰデフラグメンタ性能よりも３倍遅いスコアである。小さいフラグメントおよび／または無効のフラグメントにおける低スループットは大きいロードを処理し、ギガビットネットワークにおけるＤｏＳに耐えるための全体的なパケット検査アプリケーション能力に影響するボトルネックである。
【００６０】
ＩＰデフラグメンタ（例えば図４参照）の１実施形態は正確で高速度のＩＰパケットデフラグメンタであるように構成されることができる。ＩＰデフラグメンタのサブルーチンはパケット捕捉モジュールから来る各ネットワークパケット当り一度呼ばれることができる。サブルーチンはＩＰフラグメント属性についてパケットをチェックできる。属性が発見されたならば、パケットはフラグメントと考慮されることができ、フラグメント処理／再構成サブルーチンに送信されることができる。フラグメントはまた次のプロセッサモジュールへ送信されることもでき、ＳＮＯＲＴＲＡＮのようなパケットプロセッサはフラグメントを含む受信された全てのパケットを走査する必要がある。適切な再構成後、再構成されたＩＰパケットは更に処理するように依頼されてもよい。不良であると見られるかおよび／または別々に構成された要求を満たしていないＩＰフラグメントは例えば警報設備を使用して報告されることができる。ＩＰデフラグメンタは受信されたフラグメント、デフラグメントされたパケット、発生された警報等をカウントするために統計メモリプールを使用することができる。
【００６１】
［ＩＰデフラグメンタ構造パラメータ］  
ＩＰデフラグメンタは以下の構造パラメータを受入れることができる。  
・mempool：これはメモリプールのサイズと、対応するハッシュテーブルのサイズを設定する。値は小、中、大、巨大である。  
・最大サイズ：これは“合法に”再構成されたＩＰパケットの最大サイズを設定する。ＩＰデフラグメンタは警報を発生し、再構成された長さが特定された値よりも大きいならばパケットを捨てる。デフォルト値は１０ＫＢである。  
・最小サイズ：これは“合法に”再構成されたＩＰパケットの最小サイズを設定する。ＩＰデフラグメンタは警報を発生し、再構成された長さが特定された値よりも小さいならばそのパケットを捨てる。デフォルト値は１０００ＫＢバイトである。および／または  
・タイムアウト：これはＩＰパケットの再構成のためのタイムアウトを設定する。ＩＰデフラグメンタは警報を発生し、この特定のパケットの再構成時間が特定された値を超えるならば、そのパケットを捨てる。デフォルト値は３０秒である。
【００６２】
［ＩＰデフラグメンタ初期化手順］  
ＩＰデフラグメンタ初期化サブルーチンｉｐｄｅｆｒａｇ＿ｉｎｉｔ（）はスタートアップ期間に呼出されることができる。このサブルーチンは構造ファイルを読み、対応するハッシュテーブル（サイズは構造ファイル中で設定されることができる）と共にデフラグメンタセッション記述子のプールを割当てることができる。ＩＰデフラグメンタはパケット処理位相期間中にダイナミックにメモリを割当てず、全てのリクエストされたリソースは初期化段中に予め割当てられることができる。性能を改良するために、割当てられたメモリは例えばＬｉｎｕｘ（登録商標）ｍｌｏｃｋ（）システム呼を使用することによってスワッピングから除外されることができる。ｍｌｏｃｋ（）を呼出した後、割当てられたメモリはｂｚｅｒｏ（）呼を使用して初期化され、全ての必要なページがメモリにロードされ、そこにロックされ、それ故ページの故障がパケット処理相中に生じないことを確実にする。ｉｐｄｅｆｒａｇ＿ｉｎｉｔ（）はｍｌｏｃｋ（）呼出しが成功することを確実にするため管理者の特権下で呼出されることができる。
【００６３】
割当て後、プールからの全てのセッション記述子は逐次的に一方方向のフリー記述子チェーン（例えば図５参照）に挿入されることができる。このチェーンはパケット処理相中に割当ておよび割当て解除サブルーチンにより使用されることができる。
【００６４】
ＩＰデフラグメンタのパケット処理（例えば図８参照）の１実施形態はエントリ点、即ちｉｐ＿ｄｅｆｒａｇ（）を含んでおり、これは新しいパケットデータがパケット捕捉モジュールから来る度に呼出されることができる。ｉｐ＿ｄｅｆｒａｇ（）はパケットがＩＰフラグメント属性を有すること、例えばＭＦフラグおよび／またはフラグメントオフセットがゼロではないかをチェックする。パケットがＩＰフラグメントとして認識されるならば、その長さは確認され、最後のものを除く全てのＩＰフラグメントは８で割算することが可能なペイロード長を有する。警報は不正確な長さのフラグメントで発生され、その後このようなフラグメントは無視される。
【００６５】
入来するパケットがＩＰフラグメントとして認識されていないならば、ｉｐ＿ｄｅｆｒａｇ（）はタイムアウトしたエレメントの記述子エイジチェーン（例えば図６参照）で最も古いエレメントをチェックし、発見されたならばそれらの割当てを解除する。割当て解除サブルーチンはデフラグメンタセッション記述子をリセットし、それをハッシュテーブルおよび記述子エイジチェーン（例えば図６参照）から除去してそれをフリー記述子チェーン（例えば図５参照）の最初に置き、フリー記述子チェーン（“ＦＤＣ”）の変数を調節する。
【００６６】
そうでなければ、フラグメントのＩＰ  ｉｄとそのプロトコル、ソース及び目的地アドレスは入来するフラグメントのセッション記述子にアクセスするためのハッシュ値の計算に使用されることができる。そのフラグメントに対してセッション記述子が発見されないならば、新しいセッション記述子が割当てられる。割当てサブルーチンは記述子をＦＤＣ変数（図５参照）により参照されるフリー記述子チェーンのヘッドから取り、その後ＦＤＣをチェーン中の次の記述子へ切換える。新しく割当てられた記述子の参照は以下の２つの位置に挿入されることができる。
【００６７】
・計算されたハッシュ値を使用するハッシュテーブルおよび／または
・“最も若い”エントリとして、２方向の記述子エイジチェーン、変数ＴＣ＿ｙｏｕｎｇ（図６参照）を調節する。
【００６８】
フリー記述子チェーンが空であるならば、統計共有プールからの割当て失敗カウンタはインクリメントされ、記述子エイジチェーンからの最も古い記述子が再使用されることができる。これは以下のことを確実にする。
【００６９】
・この方法はクラッシュなしにリソース不足を処理できる。および／または
・新しいＩＰパケットは古いＩＰパケットよりも高い優先順位を有する。現代のネットワークでは３０秒のＩＰの再構成タイムアウトは稀であり、通常は不当行為を示す。
【００７０】
デフラグメンタセッション記述子（例えば図７参照）は２つの部分、即ち制御データとペイロードバッファを含むことができる。入来するＩＰフラグメントからのペイロードデータは対応するセッション記述子のペイロードバッファへコピーされることができる。記述子中のＩＰオフセットビットマスクのフラグは、いずれの再構成されたＩＰパケットの８バイトチャンクがコピーされるかを正確に識別するように設定されることができる。
【００７１】
既にマークされているチャンクを有する任意の新しいＩＰフラグメントは警報を発生させる。対応するデフラグメンタ記述子は不良としてマークされる。不良記述子に属する次の各フラグメントは無視される。前述したように、不良記述子は結果として（例えばそのタイムアウトが満了するとき）割当てを解除されることができる。この方法は以下のことを可能にする。
【００７２】
・不当のＩＰフラグメント（ティアドロップアタック等）は警報の送信後でも識別されることができる。  
・各不当セッション当りただ１つの警報だけが発生される。および／または  
・不当なＩＰフラグメントはフリー記述子チェーンでリソース不足を生じる。
【００７３】
デフラグメンタセッション記述子により参照される再構成されたＩＰパケットは以下の条件を満たすならば完全であると考慮される。  
・全てのフラグメントがコピーされる（例えばＩＰオフセットビットマスクにギャップがない）。  
・最後のＩＰフラグメントが受信される。および／または
・再構成されたペイロードの結果的な長さが対応するセッションからの全てのペイロードフラグメントの合計に等しい。
【００７４】
再構成されたパケットは必要ならば新しいＩＰおよび層４チェックサムを受信する。その後、更に処理するために残りのパイプラインに送信されることができる。
【００７５】
パケット転送が完了するとき、対応するデフラグメンタセッション記述子は前述したように割当てを解除されることができる。
【００７６】
［ＴＣＰリアセンブラ］  
ＴＣＰリアセンブラの１実施形態（例えば図１参照）は多ギガビットデータ処理を行うことができる。これは再構成されたネットワークデータを例えば内容走査及び暗号化検出のようなモジュールに供給できる。またＴＣＰストリーム属性を、処理された各ネットワークパケットに割当てることができ、例えば深いパケット検査モジュールによりパケットを解析することを可能にする。
【００７７】
ＴＣＰリアセンブラはＴＣＰセッションを追跡し、各オープンセッションを説明する情報のリストを維持し、および／またはセッションに属すパケットを連結して、クライアント及びサーバストリームの全体内容が内容検査の上位レベルに通過されることができる。ＴＣＰリアセンブラは多層の再構成と内容検査を行うことができる。“深い”パケット検査、全二重方式の接続の一方の側のみの処理および／または確率的検出器の機会を改善するためのデータストリーム内の随意選択的な領域の再構成のような部分的な解決策は適切ではない。
【００７８】
ＴＣＰリアセンブラは実在のパケットストリームの複雑さに対処するのに十分精巧である。パケット検査装置のリアセンブラが直面する問題はＴＣＰ／ＩＰスタックの問題とはかなり異なり、乱調モードでスニファＮＩＣにより見られるパケットは予測された順序で来るのではなく、したがって伝統的な状態図はほとんど使用されず、標準的なタイムアウトはタップ及びルータにより導入される種々の遅延のために調節される必要があり、クライアント及びサーバの内部状態を計算するための十分な情報はパケットストリームに存在しない可能性がある。
【００７９】
パケットスニファのためのＴＣＰストリームリアセンブラは例えば任意の“標準的な”ＴＣＰ／ＩＰスタックよりも良好な進歩したネットワークの厳しい環境で動作する。ＴＣＰリアセンブラはＴＣＰ  ＳＹＮフラッド保護、メモリのオーバーロード保護等を含むことができる。パケットスニファ用のＴＣＰ／ＩＰストリームリアセンブラは高速であってもよい。
【００８０】
ＴＣＰリアセンブラはパケット捕捉層に結合され、それによって任意の数のＮＩＣを同時に観察し、および／または異なるネットワークストリームから採取したデータをインターリーブすることができる。パケット捕捉層は例えば全二重方式のＴＣＰストリーム中でのクライアントとサーバデータ、および／または非対称的なルートで伝送されたパケットの確実な再構成を可能にし、各ストリームはセッション制御情報のために他のものに依存する。
【００８１】
ＴＣＰリアセンブラは次のような１以上のモードで動作できる。  
・セッションの追跡のみ。このモードはＴＣＰパケットの方向（例えばクライアントからサーバまたはその逆）と正当性の追跡だけを必要とするアプリケーションに適している。ＳＭＰ設定では、方向情報はパケットレベルのＡＰＩを介して受取人のアプリケーションに利用可能にされる。  
・セッション追跡および部分的なＴＣＰストリーム再構成。クライアント−サーバの会話の初期部分は構成可能なカットオフ値により限定されるバッファ中に集められることができる。ＳＭＰ設定では、再構成されたストリームはストリームレベルのＡＰＩを介して受取人のアプリケーションに利用可能にされる。このモードは不当なパケットを含んでいるＴＣＰセッションのアプリケーションロギング初期セグメントで構成されることができる。デフォルトカットオフ値は会話のサーバ部分に対する８ＫＢとクライアント部分に対する８ＫＢである。および／または
・セッション追跡および進歩したＴＣＰストリーム再構成。クライアント−サーバの会話は予め割当てられたバッファチェーン中に集められることができる。デフォルトにより、会話毎に１６００ＫＢまで集められることができる（例えば方向当り８００ＫＢ）。サイズパラメータは構成可能であり、必要なときに増加されることができる。再構成されたストリームはＳＭＰ設定で受取人のアプリケーションに利用可能にされる。長いＴＣＰセッションで通常の“ＴＣＰシーケンススキップ”効果は観察され、不正および／またはウィンドウ外のパケットから弁別される。このモードは例えば再構成されたストリームが再度層毎に分解され／復号され、内容を解析されるアプリケーションではストリーム再構成を転送する。
【００８２】
ＴＣＰリアセンブラはマルコフネットワークの簡単化された状態遷移図の回想に基づいている。各ソケット対は入来パケットのタイプ、その通し番号、最も最近の“ベース点”（例えば先のパケットまたはキー遷移に対応するパケット）に関するそのタイミングとに基づいて状態から状態で切換えることにより会話を追跡する別々の有限状態オートマトンにマップされることができる。リアセンブラは場所外のパケット（例えば応答パケット後に来るリクエストパケット）を処理しなければならないので、遷移はパケットタイプに独占的に依存しない。各状態で、自動化は会話の実際の状態が何であるかについて幾つかの“推測”を維持し、入来するパケットに基づいて“最良”のものを選択することができる。いずれの“推測”がより良好に予測しても、パケットの外観は会話の観察された状態の“最良”特性として採取され、新しい“推測”が次の行為のために形成される。
【００８３】
ＴＣＰリアセンブラはハードコード化されたプラン及び遷移も含み、固定されインライン置換されたパラメータはコードの最適化を可能にする。結果的なリアセンブラは通常のトラフィックで１．５乃至２Ｇｂｐｓ（またはその前後）の平均スループットを含むことができる。平均パケット長が８０バイトであるとき、特別に準備されたＳＹＮフラッド／ＤｏＳアタックでは２５０Ｍｂｐｓまで下がる可能性がある。
【００８４】
ＴＣＰリアセンブラは十分に飽和された１Ｇｂｐｓトラフィックを処理するのに十分な高速度である。ＳＭＰ構造の第２のＣＰＵで動作する分離したパケットレベルの検査プロセスまたは１以上の別のＴＣＰストリーム復号器／解析装置と組合わせて、プラットフォームは広範囲のギガビットが可能なネットワーク監視解決法の基礎を与えることができる。比較では、Ｓｎｏｒｔストリーム４のような現在利用可能なオープンソース解決手段は汎用ハードウェアでギガビットトラフィックを維持するための詐欺およびトリックを必要とする。Ｓｎｏｒｔ２では、これは制限されたデフォルト設定（クライアントのみ、幾つかのよく知られたポート）と、“ＨＴＴＰフロー制御”プロセッサのような人工的なフィルタを意味し、デフォルトモードのトラフィックの８０％程を無視する。Ｓｎｏｒｔ２設定による実験によって、ストリーム４のスループットは実際のボトルネックであることが明らかになり、Ｓｎｏｒｔがパケットを“予測可能”から“ランダム”に落とす方法の単なる変化においてより多くのパケットを可能にする。
【００８５】
ＴＣＰリアセンブラモジュールのサブルーチン（例えば図９参照）はＩＰデフラグメンタから来る各ネットワークパケット当り一度呼出される。そのルーチンはパケットがＴＣＰパケットであることを確認できる。パケットがＴＣＰパケットであるならば、そのパケットはＴＣＰ処理／再構成のために送信される。パケットは（存在するならば）それが属すＴＣＰセッションのアドレスによって注釈を付けられ、（構造にしたがって）更に処理するようにそのパイプラインに依頼されることができる。
【００８６】
パケット及び対応するセッションは違法のＴＣＰフラグの組合せをチェックされることができる（合法であることの規定は別々に構成されることができる）。違法のパケット及びセッションは警報設備を通して報告され、および／または構造に応じて破棄される。ＴＣＰリアセンブラはクライアント−サーバの会話データと共にＴＣＰセッションを再構成し、例えばＵＮＩＸ（登録商標）ＩＰＣ共有メモリおよびセマフォ−プールを使用して、さらに処理するためにそれらを解析モジュールへ送信することができる。解析モジュールは別々のＵＮＩＸ（登録商標）プロセスとして動作できる。これらはＴＣＰセッションデータを検索するためにＩＰＣチャンネルを使用することができる。ＴＣＰリアセンブラは再構成されたセッション、発生された警報等をカウントするために統計メモリプールも使用できる。
【００８７】
［ＴＣＰリアセンブラ構造パラメータ］  
ＴＣＰリアセンブラは以下の構造パラメータを受入れることができる。
【００８８】
・alert：違法パケットとＴＣＰセッションに警報を発生する。  
・evasion_alert：ＴＣＰパケットが予測されるＴＣＰウィンドウに適合しない場合に警報を発生する。  
・noclient：会話のクライアント部分を再構成しない（ソケット対）。  
・noserver：会話のサーバ部分を再構成しない。  
・plimit：特定のクライアント−サーバ会話を再構成するために使用されるメモリバッファの最大量を設定する。  
・pring：再構成されたデータを解析装置へ送信するために使用されるペイロードリングのサイズを設定する。  
・mempool：ＴＣＰセッション記述子に対して使用されるメモリのプールサイズおよび対応するハッシュテーブルサイズを設定する。値は小、中、大、巨大である。  
・payload：クライアントサーバの会話を再構成するために使用されるメモリバッファの総量とそれらの総寸法を設定する。セッション当りの限度はplimitパラメータにより設定されることができる。
【００８９】
［ＴＣＰリアセンブラの初期化］  
ＴＣＰリアセンブラの初期化サブルーチンであるｔｃｐｓ＿ｉｎｉｔ（）はセットアップ中に呼出される。サブルーチンは構造ファイルを読み、以下のメモリプールを割当てるためにＵＮＩＸ（登録商標）共有メモリを使用できる。  
・ＴＣＰセッション記述子；
・セッション記述子プールにアクセスするためのハッシュテーブル；
・ペイロードバッファおよび／または
・ＴＣＰセッションリングバッファ
メモリ割当てサイズは構造パラメータに基づいて計算される。サイズ３２のＵＮＩＸ（登録商標）セマフォ−のセットも割当てられることができる。
【００９０】
ＴＣＰリアセンブラはパケット処理相中にメモリをダイナミックに割当てず、全てのリクエストされたリソースは初期化段階中に予め割当てられることができる。割当てられ共有されたメモリはｓｈｍｃｔｌ（）システム呼のＬｉｎｕｘ（登録商標）ＳＨＭ＿ＬＯＣＫオプションの使用によってスワッピングから除外されることができる。ロックのリクエスト後、割当てられたメモリはｂｚｅｒｏ（）呼を使用して初期化され、全ての必要なページがメモリにロードされ、そこにロックされ、それ故ページの故障がパケット処理相中に生じないことを確実にする。ｔｃｐ＿ｓｔｒｅａｍ＿ｉｎｉｔ（）はｓｈｍｃｔｌ（）呼が成功したことを確証するため管理者の特権下で呼出されることができる。
【００９１】
必要なセグメントが既に割当てられ、全てのサイズが正しいならば、ｔｃｐ＿ｓｔｒｅａｍ＿ｉｎｉｔ（）はそれらをリセットせずに既存のメモリプールに取り付けることができる。更に、モジュールは再スタートするならばメモリの割当てを解除しない。これは“ソフト再スタート”特性をサポートするために行われ、再ロードされたアプリケーションは既存のＴＣＰセッションデータを使用し続け、丁度再ロードの瞬間にパケットを失う。
【００９２】
ＴＣＰリアセンブラはメモリ（例えば大量のＲＡＭ）を必要とする。全てのリクエストされたメモリを得るため、アプリケーションは標準的なスタートアップ手順中にＳＨＭＭＡＸシステムを増加するためにｓｙｓｃｔｌ（）を利用できる。
【００９３】
割当て後、ＴＣＰセッション記述子とペイロードバッファは逐次的にフリーセッションチェーンとフリーペイロードチェーンへそれぞれ挿入される（例えば図１０参照）。これらのチェーンはパケット処理相中に割当ておよび割当て解除サブルーチンにより使用されることができる。
【００９４】
［ＴＣＰセッション割当て及び状態遷移］  
ＴＣＰセッションの全二重方式特性を反映するために、記述子はクライアント及びサーバストリームを説明する２つの同一のサブ構造を含むことができる。各ストリームで認識される状態はLISTEN、SYN_RCVD、SYN_SENT、ESTABLISHED、CLOSEDを含むことができる。両ストリームのライフサイクルはCLOSED状態で開始できる。通常のＴＣＰ／ＩＰトラフィックでは、ストリーム遷移図（例えば図１１参照）にしたがって、状態はESTABLISHEDにアップグレードされ、最終的にCLOSEDに戻る。
【００９５】
ストリームの記述子フィールドＩＳＮはＳＹＮとＳＹＮ＿ＡＣＫパケットが受信されるときＳＥＱ番号の保存に使用される。このフィールドは後にＴＣＰペイロード再構成と付加的なＴＣＰセッション検査に使用されることができる。
【００９６】
ＴＣＰセッション記述子はそれ自身の状態フラグを有するそのストリームの遷移にしたがい、セッションの通常状態、即ちUNESTABLISHED、ESTABLISHED、CLOSEDを反映する。
【００９７】
図１２はセッション状態遷移図の１実施形態を示している。各セッションはUNESTABLISHED状態で開始できる。クライアントおよびサーバストリームの両者がESTABLISHEDに切換えられるとき、ESTABLISHED状態にアップグレードされる。セッションは両ストリームがCLOSED状態に切換えられるときCLOSEDであってもよい。
【００９８】
各セッション状態はセッションエイジチェーンの特定の場所に対応してもよい（例えば図１３参照）。セッション割当てサブルーチンは以下の行為を行う。  
・記述子はｂｚｅｒｏ（）を呼出すことにより初期化される。  
・記述子はハッシュテーブルに位置付される。  
・記述子はフリーセッションチェーンから除去される。  
・記述子はUNESTABLISHEDエイジチェーンのヘッドに位置付けられ、および／または  
・特有のセッションｉｄは記述子のｓｉｄフィールドに割当てられる。
【００９９】
セッション毎のアップグレードにより、セッション状態遷移図にしたがって、記述子は現在のエイジチェーンから除去され、次のチェーンのヘッドに置かれる。
【０１００】
［ＴＣＰセッションの割当て解除］  
ＴＣＰセッション記述子はこの特定のセッションに属す最も最近のパケットの時間を維持するｅｔｉｍｅと呼ばれるフィールドを含むことができる。ＴＣＰリアセンブラにより受信されるそれぞのパケットでは、エイジチェーンの最後のセッションは例えばｓｅｓ＿ｒｅｃｙｃｌｅ（）サブルーチンによりタイムアウトに対して試験されることができる。使用されるタイムアウトはセッション状態に依存している。
【０１０１】
・UNESTABLISHED：１２秒  
・ESTABLISHED：６００秒  
・CLOSED：３０秒
【０１０２】
ｓｅｓ＿ｒｅｃｙｃｌｅ（）手順は、受信されたパケット毎に割当てを解除するための古いセッションの最大数を決定するモジュール−幅ＲＣ＿ＬＶＬ変数を見ることもできる。この数はパケット当り２つの古いセッションから開始し、例えばパケット当り３０程度のセッションで終了する（ＲＣ＿ＬＶＬ値に基づいてセッション数を計算するためのテーブルが存在し、ここでＲＣ＿ＬＶＬ自体は１から７の範囲である）。ｓｅｓ＿ｒｅｃｙｃｌｅ（）手順は限度を計算し、必要ならばＲＣ＿ＬＶＬをデクレメントし（最小値は１である）、UNESTABLISHED、CLOSED、ESTABLISHEDの順序でＡＳＣ＿ｏｌｄ側（例えば図１３参照）からセッションエイジチェーンへ接近する。各チェーンで、最後から古いセッションの割当てを解除し、その後、必要ならば古いセッションがなくなるまで、または限度に到達するまで逐次的に次のチェーンへ移動する。
【０１０３】
ＲＣ＿ＬＶＬはハッシュテーブルへの新しいセッションの挿入期間中に衝突がある度に増加される。これはリアセンブラがＴＣＰリアセンブラオーバーロード状態モードにあるとき最大値に割当てられることもできる。
【０１０４】
割当て解除サブルーチンはハッシュテーブルとセッションエイジチェーンからセッション記述子を除去し、これを例えばＦＳＣ＿ｔａｉｌ変数を使用してフリーセッションチェーンの最後へ転送する。割当て解除手順中にリセットされるセッションデータがない場合、このようにしてデータはその後の割当て期間中にリセットされるまで依然として非同期モジュールにより使用されることができる。
【０１０５】
セッションがその集められたペイロードデータを有するならば、サブルーチンはセッションアドレスとセッションｉｄをＴＣＰセッションリングバッファ中へ挿入し、セマフォ−アレイをリセットし、セッションデータが非同期処理で利用可能であることを示す。非同期処理モジュールは与えられたセッションｉｄとｓｉｄフィールドに割当てられたセッションｉｄとを比較して、データがまだ重ね書きされないことを確認し、処理を開始する。
【０１０６】
ＴＣＰセッション情報はまたセッションがCLOSED状態にアップグレードされるならばＴＣＰセッションリングバッファへ挿入されることができる。提出後、ペイロードバッファはセッションから切離される。セッション記述子のフリーのフィールドはＴＣＰリアセンブラがデータを二度提出しないようにする。
【０１０７】
［ＴＣＰリアセンブラオーバーロード状態の処理］  
ＴＣＰリアセンブラオーバーロード状態の１実施形態は割当てリクエストを満足するために利用可能なフリーセッション記述子が存在しないときに生じる。メモリプール構造パラメータがネットワークトラフィックで不適切であるならば、またはネットワークセグメントがＴＣＰ  ｓｙｎ−ｆｌｏｏｄアタックを受けているとき、これは発生することができる。このモードに切換えるとき、ＴＣＰリアセンブラはＲＣ＿ＬＶＬ変数をその最大値に設定でき、フリーセッション量が例えばセッションプール全体の１０％を下回るようになるまで新しいセッションの割当てを中止する。これは既存のセッションを追跡し、それらのペイロードデータを集め続ける。
【０１０８】
［ＴＣＰセッション待ち行列ＡＰＩ］  
ＴＣＰセッションリングバッファとセマフォアレイは例えばＵＮＩＸ（登録商標）ＩＰＣ設備を使用してＴＣＰリアセンブラ初期化相期間に割当てられることができる。バッファは許可を有する任意のプロセスに対してアクセス可能である。図１４はＴＣＰセッションアドレス、セッションｉｄ、ビットマスクとして扱われる整数値（例えば３２ビット）を含んでいる各バッファセクタを示している。セマフォアレイは３２のセマフォを含むことができる。
【０１０９】
各非同期処理モジュールはリングバッファとセマフォアレイに取り付けられるように、０と３１の間の特有のＩＤ番号を特定するｔｃｐｐｌｃｌ＿ｉｎｉｔ（）サブルーチンを呼出すことができる。与えられるｉｄはセマフォアレイの特定のセマフォおよびビットマスク中の対応するビットを参照するために他のＡＰＩ機能により使用されることができる。プロセスはその後、次に利用可能なＴＣＰセッションを得るためにｔｃｐｐｌｃｌ＿ｎｅｘｔ（）を呼出すことができる。
【０１１０】
ＴＣＰリアセンブラは以下の行為を行うことにより処理するための新しいセッションを提出する。  
・セッションアドレス及びセッションｉｄをリングバッファの次のセクタに位置させ、  
・このセクタのビットマスクをリセットし、および／または  
・セマフォアレイをリセットする。
【０１１１】
クライアント側のｔｃｐｐｌｃｌ＿ｎｅｘｔ（）サブルーチンは例えばｓｅｍｗａｉｔ（）呼出しを使用して、ＩＤ特定セマフォを待機する。バッファの準備ができたとき、セグメントづつバッファを通り、次のセクタのビットが既に設定されていることを発見するまでビットマスク中にｉｄ特定ビットを設定する。この状態はまだ有効なデータがなく、再度ｓｅｍｗａｉｔ（）を呼ぶ時間であることを意味している。ＡＰＩはＴＣＰセッションおよび再構成されたペイロードデータにおける十分な情報をアプリケーションに供給する。利用可能になるとすぐに、情報は処理されることができる。
【０１１２】
［ＴＣＰペイロード再構成］  
セッション記述子がESTABLISHED状態に切換えられる度に、クライアントなしおよびサーバなしの構造パラメータにより許容されるならば、ペイロードバッファはフリーペイロードチェーンから取られ、初期化され、クライアントおよび／またはサーバストリーム記述子へ割当てられることができる。
【０１１３】
特定のセッションに属すパケットの空ではないペイロードはそれぞれセッションがCLOSED状態にアップグレードされるか、例えばｐｌｉｍｉｔパラメータ（例えば図１５参照）により特定されるようにペイロードバッファの数が限度を超えるまで、ペイロードバッファの対応する場所にコピーされることができる。バッファ内のパケットペイロードの位置はパケットのＳＥＱ番号、ストリームのＩＳＮ、ストリームのベースフィールドの値の組合せにより決定されることができる。後者はサブルーチンにより計算されることができ、新型のＴＣＰスタックは長いＴＣＰセッションに対してＳＥＱ番号をランダムに増加する傾向があり、ベースフィールドはこれらの変化を補償する。
【０１１４】
ｐｌ＿ａｌｌｏｃ（）サブルーチンは例えばｐｌｉｍｉｔ値までペイロードバッファをチェーンに付加するために使用される。空のフリーペイロードチェーンの場合、ｐｌ＿ａｌｌｏｃ（）は以下の動作を行う。  
・統計プール中のペイロード故障カウンタをインクリメントし、  
・完了したとして現在のペイロードチェーンをマークし、後のバウンド外のペイロードコピーを防止し、および／または  
・エラーを呼者へ戻す。
【０１１５】
セッションがCLOSED状態に到達するとき、またはセッションタイムアウトのためにペイロードバッファがESTABLISHED状態から割当てを解除されるとき、ｓｅｓ＿ｆｒｅｅ（）サブルーチンは以下のことを行う。  
・ＴＣＰセッションをＴＣＰセッションリングバッファへ提出し、
・ペイロードバッファをフリーペイロードチェーンの最後に付加し、および／または
・セッションが二度提出されないようにセッション記述子のフリーにされたフィールドを設定する。
【０１１６】
ｓｅｓ＿ｆｒｅｅ（）サブルーチンはペイロードおよび／またはセッションデータを消去せず、単にバッファを利用可能としてマークし、バッファはＴＣＰセッション待ち行列ＡＰＩを介して非同期アプリケーションにより処理される。
【０１１７】
［パケット処理サイクルの概要］  
ＴＣＰリアセンブラのエントリ点サブルーチンｔｃｐｓ（）は新しいパケットデータがＩＰデフラグメンタから来る度に呼出されることができる。最初に、ｔｃｐｓ（）はｓｅｓ＿ｒｅｃｙｃｌｅ（）を呼び（ＴＣＰセッション割当て解除セクションを参照）、データが本当にＴＣＰパケットであるかをチェックできる（例えば図１６参照）。入来するパケットがＴＣＰパケットとして認識されないならば、ｔｃｐｓ（）は終了する。
【０１１８】
ＴＣＰパケットはその後、多数の違法のＴＣＰフラグの組合せに対して証明される（例えばＳＹＮとＦＩＮフラグの両者の存在）。警報構成フラグが設定されているならば、警報が無効のＴＣＰパケットで発生され、その後、このようなパケットは無視される。
【０１１９】
他方、警報構成フラグが設定されていないならば、パケットソースと目的地アドレスとポート（ソケット対情報）はハッシュ値を計算し、パケットの対応するセッション記述子を識別するために使用されることができる。パケット解析相はフラグ及びパケットベアと、セッション記述子が発見されたか否かに基づいて後続する。この相は違法パケットを識別しようとし、例えばパケットがＳＹＮフラグを含み、セッション記述子が既に割当てられているならば、解析はストリームのＩＳＮとパケットのＳＥＱ番号との比較と、対応するタイムアウトの試験を含むことができる。この特定の解析の結果として、このパケットは以下のように認識されることができる。  
・ＴＣＰ再送信試行；
・新しいＴＣＰセッションの開始；および／または
・ＴＣＰセッションスプーフ／ハイジャックの試行
【０１２０】
この解析によって決定された違法のＴＣＰパケットは無視および／または報告される。
【０１２１】
この点において、全ての違法パケットは濾波されることができる。セッション／パケットの組合せは次に解析されることができる。セッション状態及びパケットフラグ／ペイロードにしたがって、１以上の以下の行為が行われる。  
・パケットのペイロードはペイロードバッファ中に記憶される。  
・新しいセッションが割当てられる。  
・ストリームの状態がアップグレードされる。  
・セッションの状態がアップグレードされる。  
・セッションはＴＣＰセッションリングバッファに提出される。および／または  
・ストリームのベース値はストリームのＳＥＱ値の突然のジャンプを補償するために増加される。
【０１２２】
ｔｃｐｓ（）の最後で、パケットはそれが属すＴＣＰセッションのアドレスを注釈として付けられ、さらに処理するため残りのパイプラインへ送られる。
【０１２３】
［ＴＣＰリアセンブラのアンロード］  
ＴＣＰリアセンブラは通常のエグジット期間中にａｔｅｘｉｔ（）設備を使用して共有されたリソースの割当てを解除できる。アプリケーションが再構成サイクル中に再構成リクエストを例えばプロセス管理者から受信しているならば、共有されたメモリとセマフォアレイはそのままにされる。モジュールはその再構成ファイルを再度読み、全ての他のモジュールが通常の動作を継続する。再ロード動作は迅速であり、再ロードされたＴＣＰリアセンブラモジュールはそれらを再設定せずに、共有されたリソースへ再度取り付けられ、その任務を続ける。
【０１２４】
［ペイロード復号器］  
プラットフォームの１実施形態は実時間ネットワークトラフィック（例えば１００Ｍｂｐｓおよび／またはそれより高いか低い）で動作し、例えば共通の圧縮、集合、ファイルフォーマット化、符号化スキーマを“剥離する”内容復号の多数の層によりサポートされ、処理に適切な形態で実際の内容を抽出する。ペイロード復号器の１実施形態（例えば図１参照）は既知のデータフォーマットのペイロードを検査し、それをそれぞれの復号器の支援により復号し、復号された内容に対して同一の手順を反復する（例えば図１７参照）動作を繰返し行う。ペイロード復号器は例えば種々のマイクロソフトオフィスフォーマット、ｅメール、ＨＴＭＬ／ＸＭＬ、圧縮されたデータ、ＨＴＴＰ、その他の普及しているＴＣＰベースのプロトコル等のための複数の復号器（例えば約１４個の復号器）を含んでいる。ペイロード復号器はこれがその入力データをさらに復号できなくなるか、またはそのメモリ限度に到達するとき停止する。いずれにせよ、復号されたデータチャンクは検査のために例えば１以上の内容スキャナ（例えばキーワードおよび／またはＭＣＰスキャナ）に送信される。
【０１２５】
ペイロード復号器は１以上の復号器を含むことができる。
【０１２６】
・ＳＭＴＰメールセッション；
・複数パートのＭＩＭＥエンベロープ；
・引用−印刷可能なメール添付物；
・ベース６４メール添付物；
・８ビット二進メール添付物；
・ＺＩＰアーカイブ；
・ＧＺｉｐアーカイブ；
・ＴＡＲアーカイブ；
・マイクロソフトワード文書；
・マイクロソフトエクセル文書；
・マイクロソフトパワーポイント文書；
・ポストスクリプト文書；
・ＸＭＬ文書；および／または
・ＨＴＭＬ文書
【０１２７】
普通の平文および／または二進文書は直接走査され、任意の特殊化された復号をもたない。付加的な復号器は例えば復号器ＡＰＩの支援によりシステムにプラグされることができる。
【０１２８】
［初期化］  
内容復号器モジュールの初期化相はクライアントとして登録されるようにＴＣＰセッションリアセンブラＡＰＩを呼ぶことにより開始できる。その後、メモリは統計情報を記録するために割当てられ、ローカルメモリ管理機構は初期化されることができる。個々の復号器は利用可能な復号器についての情報を集収するｉｎｉｔ＿ｄｅｃｏｄｅｒ（）手順を呼出すことにより登録され、これを共有されるメモリの全般的な統計情報領域にコピーできる。そのｉｎｉｔ（）方法を呼出すことにより、各復号器を初期化することもでき、復号器がそれらの固有のデータを初期化させることを可能にする。
【０１２９】
［メモリの割当て］  
復号器は例えばｄｑ＿ａｌｌｏｃ（）手順を呼出すことにより各復号されたコンポーネントデータブロックに対して新しいデータバッファを割当てることができる。幾つかの復号器（例えばマイクロソフトワード）は復号されたデータに対して単一のデータブロックを割当て、他（例えばＺＩＰ）はコンポーネント当り１ブロックにより多数のブロックを割当てることができる。ｄｑ＿ａｌｌｏｃ（）を呼出すと、オリジナルペイロード内の復号されたバッファの位置を特有に識別する階層的“パス”を組立てるために使用される位置情報と共に、リクエストされたメモリサイズを伝送する。復号パスは識別の成功を報告し、統計及び復号の進行情報を与えるために使用されることができる。
【０１３０】
ｄｑ＿ａｌｌｏｃ（）の呼者によりリクエストされるメモリは物理的理由または人工的な制限の結果として利用可能ではない可能性がある。各モジュールはその自分のメモリキャップを有し、それによってそれぞれのプロセスはその限度内にとどまり、全体的なシステム性能は入来データが常に正しいという仮定にしたがわない。ＺＩＰのような幾つかの復号器は復号されたメモリブロックに対して評価されたサイズだけを提供でき、１以上の復号器はより小さいブロックを受ける準備がされており、したがって部分的な復号に限定される。全ての復号器は部分的な復号をサポートするために書込まれることができる。
【０１３１】
［フォーマット認識及び復号］  
復号器は共通の復号器ＡＰＩ復号（）方法によって呼出される。各復号器はそれ自身のフォーマット認識を行い、不一致または内部復号の失敗の場合には“認識されないフォーマット”結果を戻す。復号器がデータブロックをｄｑ＿ａｌｌｏｃ（）を介して割当てるならば、“認識されない”結果を戻す前に、ｄｑ＿ｃｌｅａｒ（）を介してそれらをフリーにすることができる。復号器はメモリ限定による部分的な結果を発生し、これは失敗として考慮されない。バッファが復号されるとすぐに、そのメモリはフリーにされ、ループから排除される（１以上の復号されたバッファにより効率的に置換される）。
【０１３２】
メモリ制限に加えて、内容復号器は復号待ち行列の長さに別々の限度を設定し、復号“ツリー”のサイズと、結果として全てのそのエレメントを復号するのに必要な時間を限定する（例えば図１８参照）。高ロード設定では、これによって与えられたペイロードのそれぞれのコンポーネントを復号する必要性と、次のペイロードが利用可能になる前に復号を終了する必要性とを平衡させることができる。待ち行列の長さのパラメータのデフォルト値（ＤＱ＿ＭＡＸ＿ＬＥＮ）は（約）１００である。
【０１３３】
復号の待ち行列が制限されるという事実は復号ツリーの横断戦略に影響を与える。内容復号器は“深さ１”戦略を使用し、例えば多数のブロックを不完全に復号する代わりに、少なくとも幾つかのブロックを“最後まで”復号する嗜好を与える。
【０１３４】
［走査］  
適切な復号器が（さらに）発見されないか、または人工的な限定（例えば復号ツリーの“リーフ”）のために、もはや復号が可能ではないデータバッファは例えばキーワードおよびＭＣＰスキャナのような検査のために送信されることができる。各ペイロードは“生”および／または復号された形態で検査されることができる。
【０１３５】
［内容の走査］  
内容走査は情報（例えば機密情報および知的財産）の無許可の転送を阻止することを目的としている。
【０１３６】
［キーワードスキャナ］  
キーワード走査は簡単で比較的効率的なユーザに便利な文書分類方法である。これはテキストにおいて文字が一致する１組のワードに基づいている。走査に使用される辞書は通信において不適切なワード、機密プロジェクトのコードワード、製品またはプロセスおよび／またはそれらの使用のコンテキストとは独立して容疑が生じる他のワードを含んでいる可能性がある。幾つかのコンテキスト情報は多ワードのフレーズの使用により考慮されることができるが、大きいテキストに対しては、これは組合せによる爆発につながる。
【０１３７】
自動キーワード発見（ＡＫＤ）ツールの１実施形態はキーワードおよび／またはキーフレーズを発見することができ、キーフレーズの長さのしきい値はパラメータとして入力されることができる。ＡＫＤツールはファイルのリストを受取り、テキスト情報を抽出し、“正”の訓練セット（例えば“保護された”クラスに属す文書）のためのワードおよび／またはフレーズ頻度辞書を準備する。これらの辞書は標準辞書および／または負の訓練セット（例えば“他”文書を表す）から準備された辞書に対して比較される。標準的なベイズの分類手順（例えばCheeseman, P., Self, M., Kelly, J., Taylor, W., Freeman, D.とStutz, J.（１９８８年）のべイズ分類を参照。人工知能における第７回全国会議、ミネソタ州セントポール、６０７乃至６１１頁収録）は正のセットの頻度が負のセットの頻度とは非常に異なるキーワードおよび／またはキーフレーズに重みを割当てるために使用される。結局、正規化された重みは１以上のキーワードおよび／またはキーフレーズに割当てられ、これらは分類され、ツールは例えばトップ１００（またはその前後）を手作業の検査のために戻す。
【０１３８】
加重されたキーワードおよび／またはキーフレーズのリストは、キーワードの存在についてペイロード復号器から出てくるデータの各チャンクを走査するキーワードスキャナコンポーネントにロードされることができる。突合せはセット状ストリング突合せアルゴリズム（例えばSetwise Boyer-Moore-Horspool）に基づいてシングルパス突合せ装置により実行されることができる(例えばG.A. Stephen、String Search-Technical Report TR-92-gas-0.1、ノースウェルズ大学、1992年10月参照)。一致が存在するならば、スコアリング機能により評価され、予め設定されたスコアしきい値に到達するならば、警報が発生されることができる。
【０１３９】
［ＡＫＤツールデータフロー］  
ＡＫＤツールは例えば所有文書および／またはデータベースのようなカスタマ特定データに基づいて、キーワードおよびキーワードフレーズの両者を発見できる。ＡＫＤは伝統的な“ナイーブな”ベイズ学習アルゴリズムに基づいている。このアルゴリズムはむしろ簡単であり、その仮定は実用においてほとんど常に侵害されるが、最近の研究により、ナイーブなベイズ学習は実用において非常に効率的であり、体系的に改良が困難であることが示された。確率的な文書分類はアルゴリズムのアプリケーション領域の１つである。
【０１４０】
アルゴリズムは正と負のデータ（例えば文書）の両者の代表的な訓練セットを使用できる（例えば図１９参照）。セットはワード／フレーズ頻度辞書の構成に使用されることができる。正と負のセットの辞書がその後比較され、ワード／フレーズはベイズの確率評価値を割当てられる。高い評価値を有するワード／フレーズは正または負の訓練サンプルのいずれか一方と緊密に関連するので、サンプル文書のタイプの推定に使用されることができる。組合わされた辞書からのワード／フレーズは結果的な加重により分類され、アルゴリズムは例えばその上位１００を戻すことができる。
【０１４１】
負のセットは大きく、例えば負のセットの局部的に計算された頻度辞書とビジネス書状の公共頻度辞書とを組合わせている。特別なアプリケーション領域では、ドメイン特定頻度辞書は負の訓練セットを表すために使用されることができる。
【０１４２】
正の訓練セットは正の頻度辞書の計算に使用されることができる。辞書のサイズは変化するので、両辞書の頻度カウントは３つの最もよく使用される英語のワード（例えば“ｔｈｅ”、“ｏｆ”、“ａｎｄ”）のそれぞれのカウントを使用して正規化されることができる。非英語のアプリケーション領域は特殊化された正規化ルールを使用できる（例えばワードカウント全体により正規化される）。
【０１４３】
キーワードを発生する基本ワード頻度ベースのパスに加えて、ＡＫＤはキーフレーズを得ることを可能にする。キーフレーズは正確性が高いのでキーワードよりも有効であるが、直接的な組合せ列挙が非常に低い実用値の大きな辞書で生じる。ＡＫＤは例えばデータベース記録のような混合されたテキスト／二進ファイルに適している非組合せ方法を使用できる。これはＵｎｉｘ（登録商標）“ストリング”ユーティリィにより与えられるものと等価のテキストストリング抽出アルゴリズムに基づいている。データファイルはデータストリームが中断される（例えば二進からテキストまたはその逆に切換える）場所を決定するためにマークされ、２つの中断間の短いテキストストリングが“キーフレーズ”として採取される。これらのキーフレーズはその後、負の訓練セット中で識別され、それぞれのキーフレーズの頻度辞書が生成されることができる。これらの辞書は前述のキーワード辞書と類似の方法で使用されることができる。
【０１４４】
最も有効なキーワード／キーフレーズが識別され、それらの加重が計算されるとき、最後の作業は最大の頻度を計算することである。最大の頻度は、通常偽の陽性の識別を生じさせる多数のキーワード一致に対するキーワードスキャナの感度を制限するために使用されることができる。
【０１４５】
最大の頻度は同一の正規化された頻度辞書を使用して計算されることができる。スキャナの感度を低下するため、１０００バイトの訓練データ当りの平均一致数の２倍が“有効”キーワード／キーフレーズ一致の限度として取られることができる。この限度を超える全ての一致は無視されることができる（例えばこれらは最終スコアに貢献しない）。
【０１４６】
［キーワードスキャナデータフロー］  
キーワードスキャナはセット状のストリング突合せアルゴリズムに基づいている。例えばキーワードスキャナは有限状態オートマトン（ＦＳＡ）を使用するBoyer-Moore-Horspoolアルゴリズムのセット状拡張を使用することができる。入力ストリングのセット（例えばキーワードおよび／またはキーフレーズ）はＬｅｘスキャナツールと同じ技術を使用してＦＳＡに変えられることができる。さらに、Boyer-Moore-Horspoolスキップテーブルはサブリニア検索時間を実現するために付加されることができる。メモリの要求は大きくなるが、アルゴリズムの性能はキーワード／キーフレーズの数と共に大きくならない。また、アルゴリズムの性能はセット中の最短のストリングの長さにしたがう（例えば本当に短いストリングは性能を線状にし、アルゴリズムの速度を低下させる）。
【０１４７】
突合せは“並列に”行われ、アルゴリズムがデータにわたって１回のパスしか必要としないことを意味している（例えば図２０参照）。全ての一致は別々の一致カウントアレイにおいてフラグされることができる。アレイはキーワード／キーフレーズ当り１つのカウンタを含むことができる。
【０１４８】
最初に、全てのカウンタはゼロに設定される。各一致の度に、それぞれのカウンタはインクリメントされる。スキャナがデータブロックの最後に到達するとき、カウンタアレイはＡＫＤツールにより行われる先行プロファイル化にしたがって、頻度の一致の重要度を減少するように正規化されることができる。このツールは例えば所有文書及びデータベースのようなカスタマ特定データに基づいてキーワードとキーフレーズの両者を発見することができる。発見された各キーワード／キーフレーズは２つの関連する番号、即ち各一致に対するスコアと、入力データの１０００バイト当りの最大の一致数と共に戻されることができる。両者の数値は訓練データに基づいて計算され、これらはキーワードとその予測される頻度の相対的な重要度を反映している。
【０１４９】
正規化は各一致カウンタを、与えられたキーワード／キーフレーズの最大の一致カウント以下に制限できる（例えば入力バッファのサイズに調節される）。その後、カウンタは対応する一致スコアと乗算され、合計され、正規化されて、１０００バイト当りの出力スコアを得ることができる。
【０１５０】
文書の一致を評価するため、キーワードスキャナは出力スコアを構成可能なしきい値と比較できる。
【０１５１】
［初期化］  
モジュールはキーワード／キーフレーズデータを、−ｋパラメータを介して特定された外部ファイルから例えばｌｏａｄｋｗｖ（）ルーチンを介して、押出し防止モジュールへロードすることにより初期化されることができる。コマンドラインは共通の構成ファイルに記憶され、キーワードファイルはユーザのサンプルデータファイルからＡＫＤツールにより生成されることができる。各キーワードファイルは識別情報（例えば訓練セット名）、１以上の警報情報記録（例えば警報ＩＤ、説明、スコアしきい値）、キーワードのリスト／相対スコア／一致限度の３倍を含むことができる。新しいメモリブロックが各キーワードファイルに割当てられることができ、ロードされたキーワードファイルはチェーン中に維持され、対応するスコアの計算に使用されることができる。
【０１５２】
キーワードファイルのロード後、モジュールは内容復号器から来るデータを受取るためにそれ自体を登録する。また、警報を発生できるように、プラットフォームの警報設備との接続を設定してもよい。
【０１５３】
最後の初期化動作はキーワードファイルでＦＳＡを構築することである。キーワードの各セットは例えばＡｈｏ−Ｃｏｒａｓｉｃｋ接頭ツリー整合装置に基づいて有限状態オートマトンを計算するために使用される。オートマトンは例えば接頭が多数のパターンで開始しても、それぞれのプレフィックスが１つのみの状態により表されるような構造にされている。Ａｈｏ−ＣｏｒａｓｉｃｋスタイルのＦＳＡには同一のストリングセットから計算されたBoyer-Moore-Horspoolスキップテーブルが付随する。ＦＳＡは対応するスキップテーブルと共に１回のパスで全てのキーワードの一致についてデータを走査できる。使用されるアルゴリズムはセット状のBoyer-Moore-Horspoolストリング検索であってもよい。
【０１５４】
各入来するデータブロックに対しては、ロードされたキーワードのファイル毎に１スコアで、一致スコアのリストが計算される。キーワードファイルのスコアを計算するため、ｆｓａ＿ｓｅａｒｃｈ（）手順が対応するＦＳＡと、パラメータとしてのスキップテーブルにより呼出される。ｆｓａ＿ｓｅａｒｃｈ（）手順はカウンタアレイの一致カウンタをインクリメントすることにより全てのキーワードの一致を登録できる。アレイはキーワード／キーフレーズ当り１つのカウンタを含むことができ、カウンタは最初にゼロに設定され、各一致でインクリメントされることができる。
【０１５５】
検索が終了するとき、カウンタは与えられたキーワードセットのデータブロックのスコアの計算に使用されることができる。スコアを計算するために、各カウンタはそれぞれの一致限度に対してチェックされ、キーワードファイルからロードされることができる。カウンタがその一致限度よりも大きいならば、その値は一致限度に設定される。全てのカウンタがこのようにしてクリップされるとき、これらはそれぞれの相対スコア値により乗算され、キーワードファイルからロードされることができる。相対スコアにより乗算されたカウンタは加算され、その結果は例えば１０００バイトのブロックサイズまで正規化され、与えられたキーワードファイルにおける最終スコアを生成する。
【０１５６】
最終スコアはしきい値と比較され、キーワードファイルからロードされた対応する警報情報記録（ＡＩＲ）リストに記憶されることができる。与えられたスコア以下の最大のしきい値は警報が発生されるものを限定し、警報の発生に必要な全ての情報は対応するＡＩＲに記憶されることができる。
【０１５７】
［多次元内容プロファイル化（ＭＣＰ）スキャナ］  
キーワード走査のように、ＭＣＰは文書および／またはデータファイルの特性（例えば基本特性）を捕捉でき、文書の寿命において共通の分散、即ち編集、幾つかの独立するバージョンへの分岐、類似の文書のセット等を許容する。ＭＣＰはキーワード走査および／またはデジタル指紋の能力を組合わせることができる（Tomas Sander（編集者）、Security and Privacy in Digital Rights Management、ACM CCS-8 Workshop DRM 2001、米国ペンシルベニア州フィラデルフィアで2001年11月５日に開催）。
【０１５８】
内容プロファイル化はある文書クラスに属する文書の識別をターゲットとする技術の組合せである。同じクラスの文書は例えばプロファイル化と呼ばれる先行プロセス過程で決定される類似の統計特性を共有する。自動内容プロファイラ（ＡＣＰ）ツールは必要ならば負の訓練セット（そのクラスに類似するが属さない文書）を伴ってそのクラス（正の訓練セット）に属す文書の代表的なセットを受取ることができる。クラスのプロファイル化プロセスは一度だけ行われ、統計特性の結果的なセット（例えばプロファイル）はクラスのメンバーシップについて検査するために使用される。
【０１５９】
プロファイルの品質はプロファイル化アルゴリズムにおけるクラスの全ての文書に共通の特性を捕捉する能力にしたがっており、これは異なる特性の多数の関連しない特徴の使用によって改良されることができる。各特徴は次元（例えば１つの文書から別の文書で変化する量的尺度）を規定できる。内容プロファイル化コンポーネントは例えばネットワークを通る全てのデータに対して実時間で計算される４００の異なる特徴よりも多い（または少ない）特徴を使用できる。各文書（例えばペイロード復号器により戻されるデータチャンク）は多次元スペース中の単一点にマップされ、スペース中のその位置はクラスのメンバーシップの計算に使用され（２以上のクラスのメンバーシップが識別されることができる）、警報および／または応答手段をトリガーすることができる。
【０１６０】
内容プロファイル化方法は多年にわたり、暗号解析により使用されてきた。しかし依然として貴重で簡単な統計特性は高レベルの統計方法で補足されるとき最良に動作し、ワード及び文章のようなより大きいエレメントで動作する。
【０１６１】
多次元プロファイラは約２００の低レベルの統計尺度と１００程度の高レベルの統計的尺度の組合せにより動作できる。高レベルの統計特性はあるビジネスに関連する問題領域（例えば“個人”の健康記録、銀行の口座情報、顧客リスト、クレジットカード情報、郵便アドレス、ｅメール、個人の経歴、ＳＳＮ等に関する機密の個人情報の保護）を念頭において設計されており、新しいドメイン特定次元を付加することにより他の領域を新しいターゲットとすることができる。
【０１６２】
所定のエレメントの全体的な使用を要約している個々の高レベルおよび低レベル特性に加えて、プロファイラは文書の空間的構造に専用の１００を超える次元を有し、これにはエレメントの相互の同時発生および整列が含まれている。１例として、これは郵便アドレスでは、州の名称とジップコードが非常に類似の頻度を有し、ジップコードがすぐその後に続く州の名称と相互にインターリーブすることを捕捉できる。空間的解析は文書の全体構造の捕捉に使用され、ターゲットクラスに類似の使用パターンを有する索引、語彙目録、その他のタイプの文書は容易にいじることができない。
【０１６３】
ＡＣＰツールが訓練文書セットをプロファイルするとき、そのセット中の文書と同数の点を多次元属性スペースに発生できる。各点は個々の文書（または文書のセクション）を表し、（クラス中では）“＋”としてマークされ、（クラス外では）“−”とマークを付される。最終的な学習行為は“＋”と“−”点を最小のオーバーラップによって分離する属性スペースの最も簡単な区分を計算することができる。この区分は有限状態オートマトン（“ＦＳＡ”）に基づいてデータ駆動アルゴリズムに自動的に“デジタル化”されることができ、その有限状態オートマトンは高速のシングルパス走査エンジンとして動作する。
【０１６４】
プロファイラにより発生されるＦＳＡはペイロード復号器から来るデータの各チャンクを点検するＭＣＰスキャナコンポーネント中へロードされることができる。“保護される”文書のクラス中のメンバーシップの確率尺度は各データチャンクに対して計算されることができる。設定されたしきい値に到達するならば、警報が発生されることができる。
【０１６５】
ＭＣＰが発生する警報は文書タイプに応じて、例えば相対的加重に基づいてキーワードスキャナにより発生される警報と組合わされることができる。内容走査方法の組合せにより保護されるデータは確実に認識される。
【０１６６】
ＭＣＰモジュールはファースト・イン・クラスの流出防止システムで動作できる。防止モードはデータが完全に転送される前に、実時間の解析および不当セッションの終了を命令する。ＡＰＩは随意選択的（構成可能な）数の接続点を可能にし、各点は主パケット捕捉サイクルと並列に動作する３２までの内容走査モジュールに、再構成されたセッションデータに対する基準値を送信できる。各接続点にはラウンドロビンベースで再構成されたセッションデータへのリンクが与えられることができる。接続点自体は例えばＦＩＦＯ能力を自動オーバーフロー保護と組合わせるリングバッファとして構成されることができる。これは最後の１２８セッションを保持し、独立的にバッファ中の各モジュール位置を追跡し、トラフィック中のスパイクと内容解析モジュール処理速度の差を効率的に平滑にする。
【０１６７】
経験によって、小中企業で一般的なネットワークトラフィックでは、高速度のＮＩＣを有する２プロセッサインテル（登録商標）ベースのハードウェアの使用で十分であることが示されている。大企業または密集ネットワークラインは４プロセッササーバでより多くの処理パワーを使用できる。
【０１６８】
［ＡＣＰツールデータフロー］  
自動内容プロファイラ（ＡＣＰ）ツールは必要ならば負の訓練セット（そのクラスに類似するが属さない文書）を伴ってそのクラス（正の訓練セット）に属す文書の代表的なセットを受取ることができる。クラスのプロファイル化プロセスは一度だけ行われ、統計特性の結果的なセット（例えばプロファイル）はＭＣＰスキャナにより使用されることができる。
【０１６９】
ＡＣＰツールは３つの相（図２１参照）で動作できる。第１に、正及び負の訓練セットの全ての文書はＭＣＰスキャナにより動作時間で使用される同一のアルゴリズムによって測定されることができる。このアルゴリズムは多次元スペースの１点として各文書を表す（統計属性当り１次元、全体で（約）４２０次元）。スコア決定は既存のプロファイルを必要とするので、走査アルゴリズムの最終的なスコア決定動作は使用されない。第１の相の最後に、例えば４２０次元のスペース中に２セットの点が存在し、それらのセットは正と負の訓練セットに対応していてもよい。
【０１７０】
結果的なセットは異なる次元に沿って種々の程度にオーバーラップできる。第２の相の仕事は正と負のセットを表す点を効率的に分離するために超平面の実際のセットを発見することである（図２２参照）。アルゴリズムは本来、統計的であるので、確率基準が分離品質を決定するために使用されることができる。超平面位置の関数としての不適切な分類のベイズの条件的確率は簡単な下降アルゴリズムにより最小にされる。スキャナの作動時間性能を改良するために、軸の１つに直交する超平面だけを使用できる（単一の次元に対する投影により動作できる）。この方法は実行が簡単なプロファイルを生成し、その品質は考慮される次元の数（例えば多数）のため、ほとんどの場合に十分である。与えられた次元の最小の有効な分離品質が得られないならば、その次元は無視される。分離超平面の組合わされたセットの品質全体もベイズの統計基準により評価されることができる。
【０１７１】
超平面のセットが計算されるとき、最終的な動作はそれをスキャナにロードされることのできるフォーマット（例えばプロファイル）に変換することである。ＭＣＰスキャナはマシン（例えば正規化された次元における約２０の簡単な算術的演算を実行できる仮想マシン（“ＶＭ”））の支援によりプロファイルを解釈できる。ハードコード化されたパラメータ化されたスコアの計算機の代りにＶＭを使用することによって、分離表面の実行可能な表示においていくらかのフレキシブル性が可能であり、これは直交しない超平面またはハンドコード化されたプロファイルで、そのままの状態（ａｓ−ｉｓ）で使用されることができる（プロファイルは手作業で編集されることのできる読取り可能なＡＳＣＩＩ表示を有することができる）。
【０１７２】
結果的なプロファイルは初期化時にＭＣＰスキャナにロードされることができる。ＭＣＰスキャナは多数のプロファイルをサポートでき、各データブロックに対して測定アルゴリズムは一度作動でき、スコア計算アルゴリズムはロードされるプロファイル数と同じ回数だけ動作できる。
【０１７３】
最大の頻度は同一の正規化された頻度辞書を使用して計算されることができる。スキャナの感度を低下させるために、１０００バイトの訓練データ当りの平均一致数×２が“有効”キーワード／キーフレーズ一致の限度として採用されることができる。この限度を超える全ての一致は無視されてもよい（例えばこれらは最終スコアに貢献しない）。
【０１７４】
［ＭＣＰスキャナデータフロー］  
ＭＣＰスキャナは有限状態オートマトン（ＦＳＡ）に基づいている。ＦＳＡは各状態を表すコードフラグメントのセットおよび状態から状態への転送の制御を行うジャンプのセットとして符号化される（例えばレベル１状態を示し、計算を追跡する、低レベル特性（［例えば文字及び数字のカウンタ］に関する図２５を参照する）。（付加的な状態は高レベル特性の計算を可能にするためにエキストラ状態変数に記憶されることができる）。ＦＳＡは初期状態で開始し、入力ストリームが空になるときに停止する。状態を表す各フラグメントは入力ストリームから抽出される次のデータバイト／符号の値に応じて、１組のアクションを符号化する。ＭＣＰのＦＳＡはハードコード化され、これは例えば並列に動作する実行カウンタの数を計算するアルゴリズムを実行できる。ＭＣＰは（約）５００の実行カウンタを使用することができ、各状態は入力バイトに基づいて、それらのいくつかを更新できる。異なる意味を有する以下の多数のＭＣＰカウンタが存在する。  
・文字カウンタ：あるクラスの文字数  
・文字位置カウンタ：あるクラスの文字の最後の位置  
・文字距離カウンタ：あるクラスの文字間の距離の合計  
・数値カウンタ：１0進数の実行値（ＳＳＮ／ＣＣＮ／．．．）  
・ストリング値カウンタ：ストリングの実行値（例えば上位レベルのドメイン名）  
・特徴カウンタ：異なるタイプの高レベル“特徴”の数  
・特徴位置カウンタ：高レベル特徴の最後の位置  
・特徴距離カウンタ：ある特徴間の距離の合計
【０１７５】
ＭＣＰは順番にカウンタを更新し（図２３参照）、特徴は現在のＦＳＡ状態、文字カウンタの値、数字／ストリング値カウンタの内容に基づいて計算されることができる。各特徴はこれを予め定められた特徴のハッシュテーブルの検索（これは２文字の州略称、ＺＩＰコード、上位レベルのドメイン名、ｅメールアドレスにより動作する）および／または専用の検査アルゴリズム（ＳＳＮまたはＣＣＮに対するチェックサムまたは範囲）により検査されることができる。ＳＳＮのような特徴が計算されるとき、アルゴリズムはそれぞれの高レベルのカウンタを更新できる。２層構造は入力データの多数の特徴の効率的なワンパス“並列”計算を可能にする。
【０１７６】
全てのデータが処理されるとき、カウンタは出力次元の値の計算：すなわち入力データの比較的独立した特徴に使用されることができる。各次元は１以上のカウンタの値に基づいている。次元はカウンタ値の正規化により計算され、正規化は以下の動作を含むことができる。  
・バイトの総数によりカウンタを分割し、
・相対的な“デルタ”尺度を得るために相互にカウンタを減算し、
・相対的な“ファクタ”尺度を得るため相互によりカウンタを割算し、
・得られた尺度を減算及び割算する。
【０１７７】
ＭＣＰのＦＳＡはドメイン特定次元（例えばカスタマ／クライアント情報）方向に調節されることができるが、特定のカスタマに特定されない。ＭＣＰのＦＳＡは複数（例えば４２０）の出力次元を計算できる。
【０１７８】
最後の動作は出力スコアの計算である（例えば図２４参照）。この動作はカスタマデータに基づいて統計プロファイルを構築する別々のＭＣＰプロファイル化ツールにより処理されるデータを使用することができる。プロファイルは多次元（例えば４２０次元）スペースを２つのサブスペースに分割する多次元表面であり、そのサブスペースの一方はターゲット文書（識別される必要のあるデータ）のセットに対応する。ＭＣＰはそれぞれスペースを２つのサブスペースに切断する超平面のセットとして分割表面を表し、サブスペースの一方はターゲットサブスペースを含んでいる。
【０１７９】
ターゲットサブペースのメンバーシップの計算は各超平面に対して一連の計算を使用することができ、問題の点が全ての超平面の“右”側にあるならば、これはターゲットサブスペースに属する。出力スコアは与えられた点と全ての超平面との間の距離の和として計算されることができる（超平面の“誤った”側は負の距離として扱われる）。スコアはＡＣＰツールにより“プログラムされる”簡単なバーチャルマシン（ＭＣＰスコアＶＭ、以下の表１を参照）により計算されることができる。正のスコアは適切なサブスペースメンバーシップを保証せず、負のスコアは非メンバーシップを保証する。ＭＣＰプロファイル化ツールにより計算される多次元表面は丁度真の文書メンバーシップの近似であるので、ターゲットサブスペースの適切なメンバーシップは必要条件ではない。文書のメンバーシップを評価するために、ＭＣＰスキャナは出力スコアを構成可能なしきい値と比較することができる。
【０１８０】
［構成の詳細］  
モジュールはプロファイルデータを、例えば−ｆパラメータを介して特定された外部ファイルからｌｏａｄｆｐｖ（）ルーチンを介して、流出防止モジュールへロードすることにより初期化されることができる。コマンドラインは共通の構成ファイルに記憶され、プロファイルファイルはユーザのサンプルデータファイルからＡＣＰツールにより生成されることができる。各プロファイルファイルは識別情報（プロファイル名）、１以上の警報情報記録（警報ＩＤ，説明、スコアしきい値）、ＭＣＰスコアＶＭ指令のリストを含むことができる。新しいメモリブロックが各プロファイルに対して割当てられることができ、ロードされたプロファイルはチェーン中に維持され、対応するスコアの計算に使用されることができる。
【０１８１】
プロファイルのロード後、モジュールは内容復号器から来るデータを受取るためそれ自体を登録できる。また、警報を発生できるように、プラットフォームの警報設備との接続を設定してもよい。
【０１８２】
各入来するデータブロックに対しては、ＭＣＰスキャナは出力次元のセットを計算できる。出力次元は実行カウンタのアレイから計算されることができる。このアレイは複数（例えば８）のサブディビジョンを含むことができる。  
１．大文字のカウンタ（ＵＣディビジョン）
２．小文字のカウンタ（ＬＣディビジョン）
３．ジップコードカウンタ（ＺＩＰディビジョン）
４．州略称カウンタ（ＳＴＥディビジョン）
５．Ｅメールアドレスカウンタ（ＡＴディビジョン）
６．上位レベルドメイン名カウンタ（ＴＬＤディビジョン）
７．クレジットカード番号カウンタ（ＣＣＮディビジョン）
８．社会保険番号カウンタ（ＳＳＮディビジョン）
各サブディビジョンは６０（またはその前後）のカウンタを含み、値、位置および／または距離を追跡する。全てのカウンタは特定化されたものを除いて３２ビットの整数であり、ＳＳＮとＣＣＮの追跡に使用される（例えば６４ビットの整数は長い番号で使用されることができる）。高レベルの値は特定化された検査アルゴリズムにより検査され、ＳＳＮとＣＣＮを除く全ての分割では、検査部はｂｓｅａｒｃｈ（）ルーチンを介して合法値の予め分類されたアレイにおいて集収された情報を検索することを含んでいる。ＳＳＮとＣＣＮでは、特定化された検査コードは番号が許容された範囲内であり、不可能なディジットを含まず、チェックサム試験にパスすることを確認できる。
【０１８３】
低及び高レベルのエレメントの相対的な位置の計算は距離カウンタに基づいている。各サブディビジョンは例えば５０個（またはその前後）の距離カウンタを使用でき、それぞれ０乃至４９の文字によりスペースを開けられた同一のタイプの２つ特徴の発生をカウントする。小文字では、最も最近の大文字への距離がカウントされ、高レベル特徴では、付加的なカウンタがジップコード、上位レベルのドメイン名、ｅメールアドレス間の距離を追跡する。ひとまとめにして、カウンタはユーザ記録に典型的で、名称、郵便アドレス、ｅメールアドレス、社会保険、クレジットカード番号の組合せ（幾つかのエレメントは存在しなくてもよい）を含んでいる文書構造を正しい順序で捕捉する。
【０１８４】
ＭＣＰスキャナは例えば約２０の簡単な算術演算を正規化された次元で行うことのできる簡単なバーチャルマシン（ＭＣＰスコアＶＭ）の支援によりプロファイルを解釈できる。ハードコード化されたパラメータ化されたスコアの計算機の代りにＶＭを使用することによって、分離表面の実行可能な表示においていくらかの柔軟性が可能であり、これは直交しない超平面またはハンドコード化されたプロファイルで、そのままの状態（ａｓ−ｉｓ）で使用されることができる（プロファイルは手作業で編集されることのできる読取り可能なＡＳＣＩＩ表示を有することができる）。ＭＣＰプロファイル化ツールにより計算される多次元表面の特性が簡単であるので、５（程度）の少ない演算が使用されることができる。
【０１８５】
表１：共通スコアＶＭコマンド  
ＶＭ演算                        説  明
FPOP_GT[i,c]      カウンタｉと定数ｃとの間に差を付加する  
FPOP_GTS[i,c,s]  カウンタｉと定数ｃとの間に差を付加し、ｓでスケールする  
FPOP_LT[i,c]      カウンタｉと定数ｃとの間に反転した差を付加する  
FPOP_LTS[i,c,s]  カウンタｉと定数ｃとの間に差を付加し、ｓでスケールする  
FPOP_DIFF[i,j,s]  カウンタｉとｊとの間に絶対差を付加し、ｓでスケールする
【０１８６】
各コマンドはある値を最初にゼロに設定されている実行スコアカウンタへ付加できる。結果的なスコアは１０００バイトへ正規化され、しきい値と比較され、対応する警報情報記録（ＡＩＲ）リストに記憶される。スコア以下である最大のしきい値は警報が発生されるものを規定し、警報を発生するために必要な全ての情報は対応するＡＩＲに記憶されることができる。
【０１８７】
［詐欺の暗号化検出］  
ｅコマース技術の開発と共に、新しいプロセッサのコンピュータ処理パワーが増加したことにより、デスクトップコンピュータ市場には、特別目的の政府のプロジェクトのみに従来利用可能であった多数の高品質の暗号アルゴリズムが利用できるようになった。インターネットの買物客およびハイテクビジネスのための新しい技術の利点を過大評価することは難しく、機密性及びセキュリティの増加は全体的なコンピュータ化時代に必要なこととなった。多くの技術的進歩のように、強力な暗号化は両刃の剣である。全ての通信に対するプライバシーとセキュリティを保証することにより、これは例えば知的財産の盗難のような違法行為を隠す。
【０１８８】
“詐欺”暗号化はコンピュータネットワークに対する新しい脅威として認識される。無線ＬＡＮ、ａｄ−ｈｏｃセットアップ、“半公共”および承認されていないＶＰＮの増加によって、ネットワークは外部からの無許可のアクセスに対して脆弱にされている。またビジネス界ではそれぞれのトランザクションと通信チャンネルを暗号化するための現代のコンピュータ技術にたよる風潮もあり、状況を更に悪化している。ＩＴ人員はいずれの接続が許可されているかを弁別することがもはやできなくなり、他人の家庭のコンピュータへの暗号化された接続はしばしばｅコマースサーバへの許可された接続から弁別することができない。承認されていないＶＰＮの設定はより容易になっている。Ｐ２Ｐソフトウェアの流行の増加は企業のネットワークの脆弱性を増加させ、ＨＴＴＰを通過するトンネル化によって合法のｅコマーストラフィックを装うソフトウェアは明白なユーザリクエストがなくても（例えば何かをインストールする副効果として）インストールされることができる。承認されていないＶＰＮは周囲の防御に“穴”を生成し、これが所有データを無許可の位置から離れたイントラネットコンピュータへ転送するかそのイントラネットコンピュータを動作できるようになれば直に、周囲の防御は効率的になくなる。
【０１８９】
このような風潮では、幾つかのコンピュータセキュリティの専門家は、イントラネット上の各個々のコンピュータをそれらが会社のファイヤウォール外のある点から直接アクセスできるかのように保護することによって内部の防御にを中心とすることを推奨している。この戦略は部分的に問題を解決するが、このような解決策の総費用は通常、非常に高価である。“周囲”を構成するコンピュータの数は通常非常に少なく、ゆっくりと成長しているが、イントラネット全体は非常に大きく高速度で成長しており、絶え間ない注意が必要である（例えばパッチ及び新しいサービスパックは通常、同一のホストにインストールされるセキュリティソフトウェアと矛盾する）。適切な訓練を受けた人員の不足を考慮すると、各内部コンピュータの追求は大部分の組織では実用的ではない。
【０１９０】
比較において、より率直で経済的な解決策は、承認されたセッションのみ（例えば部門間のＶＰＮおよび限定された量のよく知られたｅコマースサイト）に暗号化を限定して全ての外部の接続を監視し制御することである。この解決方法は周囲防御を維持するためのコスト全体を低く維持し、内部コンピュータは、従来のように、規則的な方法で秘密保護される必要がある。詐欺の通信チャンネルの制御は“内部セキュリティ全体”戦略の潜在的価格の数分の１しか付加されない。
【０１９１】
この問題解決方法は、無許可のＶＰＮ状のチャンネルが設けられたとき、全ての秘密保護接続を追跡し、セキュリティ人員に警報を与える詐欺暗号検出器（ＲＥＤ）コンポーネントを含んでいる。付加的な利点として、これは暗号化されたセッションを絶えずチェックでき、そのパラメータは暗号化強度のプロトコルバージョンの設定された範囲外等である。
【０１９２】
ＲＥＤコンポーネントは感度の高い情報領域の境界を横切る暗号化されたトラフィックのための合法パラメータのセット（ソース、目的地、プロトコル、キーの長さ等）を与えることにより構成されることができる。これは（アマゾンの秘密保護サーバで書籍を購入するような）共通のｅコマース行為と、秘密保護Ｐ２Ｐチャンネルを設定する試みとを区別できる。許可されたＶＰＮはＲＥＤの可能にされたソース／目的地／ポートリストで特定されることができ、したがって通常のオフィス間トラフィックは何等の警報も生じない。
【０１９３】
ＲＥＤは例えば再構成されたＴＣＰセッションデータフィードからその情報を獲得する専用のプロセスとして動作できる。オンザフライＴＣＰセッションの再構成により、ＳＳＬセッションとその属性が適切に認識されることができる。各セッションは暗号化をチェックされ（例えばＳＳＬ／ＴＬＳの全ての共通のバリエーションが認識されることができる）、これが暗号化されているならば、そのパラメータ（クライアントＩＰ、サーバＩＰ、ポート、期間、バージョン等）は許可されたＶＰＮのリストと比較されることができる。普通のｅコマーストラフィックは内部から開始された短いセッションを別々に処理することにより、デフォルトによって可能にされることができる。
【０１９４】
ＲＥＤコンポーネントにより集められた情報は中央化されたイベントプロセッサへ送信され、コンソールに転送され、ここで記憶され、多数のセンサから来るその他の関連するイベントと共に処理されることができる。これにより“詐欺のＶＰＮ”の試みと他のネットワークポリシーの侵害との相関、および中央化された法律情報の記憶とデータの採掘が可能である。
【０１９５】
［ＲＥＤデータフロー］  
ＲＥＤは例えばＴＣＰセッションリアセンブラモジュールにより与えられる再構成されたＴＣＰセッションで動作できる。ＲＥＤは解析されるセッションが暗号化されているか否かを決定し、暗号化されているならば、暗号化パラメータが構造ファイルに特定されているポリシーに一致しているか否かを決定する。
【０１９６】
ＲＥＤはＳＳＬおよび／またはＴＬＳセッションを検出するように構成されることができる（例えば前述のＳＳｌバージョン２．０と前述のＴＬＳバージョン１．０）。ＲＥＤはキーマテリアルにアクセスせず、したがってセッションの内容を解読できないが、初期のハンドシェークおよび暗号文一式の交渉メッセージが明白に送信され、セッションは暗号化され、選択された暗号文一式は検出器に対して有効である。
【０１９７】
ＲＥＤはプロトコルの積層構造にしたがい、交換されている情報へのアクセスを得るためにその層を復号することができる。ＳＳＬｖ２．０とＳＳＬｖ３．０／ＴＬＳ１．０は異なる記録及びメッセージフォーマットを有し、別々の復号手順により処理されることができるが、全体的な復号器の機能は同一であってもよい（図２６参照）。
【０１９８】
最初に、ＲＥＤはＳＳＬ／ＴＬＳ記録プロトコル層を復号して、その上部にあるメッセージを検査する。次に、ＲＥＤは交渉された暗号文一式上に情報を含んでいるＣｌｉｅｎｔＨｅｌｌｏおよび／またはＳｅｒｖｅｒＨｅｌｌｏメッセージを識別することができる。
【０１９９】
前述の任意の行為において、復号が失敗したならば、ＲＥＤは暗号化されていないセッションを考慮できる。セキュリティプロトコルは厳密であり、接続は誤ったまたは紛失データでは設定されない。復号が成功したならば、ＲＥＤは会話の符号化に使用される初期暗号文一式上の情報を獲得できる（暗号文一式は会話の途中で変更されることができるが、これは明白に行われないので、ＲＥＤはその次の変化を追跡できない）。
【０２００】
セッションが暗号化され、内容の暗号化に使用される暗号文一式では、ＲＥＤは以下のチェックを行うことができる。  
・ローカルポリシーにしたがって、与えられ通信されるパーティは秘密保護接続を設定できる
・暗号文一式は今日の標準方式により強力である
・通信の期間は許容された範囲内である。
【０２０１】
ＲＥＤの構造ファイルにより、いずれのパーティ（ＩＰアドレス）が秘密保護チャンネルを設定できるかの特定が可能である（クライアントとサーバは弁別され、秘密保護接続のイニシエータに別々の限定が存在する）。このような各記録に対しては、可能にされたポート、接続の総期間の限度、暗号文一式における最小の強度についての情報が存在する。ポートは暗号化されているサービス（例えばＨＴＴＰ）の制限に使用され、期間の限度はＳＳＬベースのｅコマースで使用される短いセッションを、長く潜在的に違法のセッションから弁別するために使用されることができる。接続が可能にされるならば、その暗号文一式の強度はこの接続に特定された最小の許容可能レベルと比較されることができる。
【０２０２】
構造により明示的に可能にされない接続を設定する全ての試みは検出され、システムの警報処理バックエンドへ警報の形態で送信される。その構造にしたがって、警報はオペレータに報告されることができ、および／または即座の行動（進行中の接続のブレークダウン）を取ることができる。
【０２０３】
［プロセスマネジャ］  
ネットワーク内容解析プラットフォーム（“ＮＣＡＰ”）で構築されたアプリケーションは例えば並列で動作する幾つかのＵＮＩＸ（登録商標）プロセスを含むことができる。プロセスの数及びそれらの機能の数は変化できる。他方で、次のような機能、即ちスタート、停止、再構成が行われることができる。再構成は単に幾つかの特別な機能またはモジュールを表すプロセスの特別なグループに対して必要とされ、残りのアプリケーションは任意の共有されたデータを失わずに継続されなければならない。
【０２０４】
“スタート”および“終了”は正常なブートアップ／シャットダウンシーケンス期間中にＯＳにより発せられることができる。“再構成”リクエストは特定のモジュール（例えばルールセット更新手順）のオンザフライ再ロードを行うための自動化されたダウンロード設備から送られてもよい。総再構成時間は最小にされることができる。この手順期間中に、アプリケーションは部分的にのみ操作可能できる。
【０２０５】
スタートアップ手順は幾つかのＮＣＡＰモジュール（図２７参照）を起動できる。これらのモジュールはそれらの機能を行うための異なるＩＰＣリソースを割当ておよび／または必要とする。ＩＰＣデッドロック依存性はアプリケーションプラニング段で解決されるが、開始シーケンスは自動的であり、必要なリソースが直ちに利用可能ではない場合に、頑丈なモジュール回復を確実に可能にする。
【０２０６】
時には、支援者の状況を容易にする付加的な特徴は再構成リクエストを手作業で出す能力と、アプリケーション全体を手作業で開始／停止する能力と、標準的なシステムユーティリティを介して利用可能ではない全ての必要な内部情報と共に現在実行しているプロセスをリストする能力とである。
【０２０７】
プロセス管理装置の１実施形態は全体的なＮＣＡＰベースのアプリケーションに対して起動装置／モニタとして動作する信頼性のあるプロセスを提供するように構成されることができる。その特徴は以下を含んでいる。  
・フレキシブルな構造；随意選択的な数のプログラムのサポート、
・標準的なエラー報告設備、
・自動的なモジュール回復、
・オーバーロード保護回復：モジュールが数回続けて起動後すぐに止まったならば、次回、基本的な問題が解決されるまでの遅延後に、再スタートされる。  
・標準的な再構成設備はアプリケーションの共有されたデータを保護する特殊化されたモジュールグループを再スタートする。
【０２０８】
適切な許可後、更に別のＩＰＣチャンネルを使用して主管理プロセスに接続する特別な制御ユーティリティも開発されることができる。これはリストをサポートし、グループコマンドを再ロードすることができ、自動アップロード設備に対する一般的なインターフェースを提供する。
【０２０９】
［イベントスプーラ］  
イベントスプーラの１実施形態はイベント処理用の一般的なＡＰＩを提供する。またこれは統計及びプロセス、フィルタを集収し、暗号化されたチャンネルを使用してデータをネットワークにわたって確実に転送できる。これはさらに実在のネットワークの厳しい条件においても“開始”および“忘却”モードで動作できる。
【０２１０】
ＮＣＡＰはイベントの形態で情報を伝送できる。イベントは独立した処理と、その後の記憶及びデータ採掘に適した情報の最小の基本ピースであってもよい。発生されるイベントは例えば適時で確実な方法でイベント処理／データ採掘コンソールに転送されることができる。イベント処理モジュールは結果的な情報の処理と、その情報のデータベースへの記憶と、必要ならばＳＮＭＰおよび／またはｅメール警報を送信する付加的な層を適用できる。
【０２１１】
種々のＮＣＡＰモジュールにより発生されたイベントはスプールファイル中に記憶されることができる。モジュールはまた実時間の統計データ（例えば処理される複数のパケット、プロトコル分配、モジュール特定情報）を記憶するためＩＰＣを使用する。統計データは偶然的なパワー停止の場合にリセットされることができる。イベントデータはファイルシステムレベルを有する。付加的な利点として、バッファされたイベントストリームは中央イベントデータベースへの記憶／再ロードを可能にするために圧縮形態でバックアップされることができる。
【０２１２】
イベントスプーラは随意選択的な数のイベントスプールディレクトリと統計データブロックを監視するように構成されることができる。これは異なるデータソースを独立して監視できる。各イベントスプールファイルはＦＩＦＯ順に専用のＵＮＩＸ（登録商標）プロセス（スプールモニタ）により処理されることができる。各統計ブロックは構成可能な間隔を有する状態コレクタプロセスにより定期的にポールされることができる。スプールモニタはモニタの現在の状態についての完全な情報を含んでいる独立した二進チェックポイントファイルを生成できる。イベントスプーラはパワーサイクルの場合、各待ち行列の最後の不完全なトランザクションから連続することができる。
【０２１３】
イベントスプーラはモジュラアプリケーションであってもよい。これはデータを集め、それを論理ストリーム（例えばイベントストリーム、統計ストリーム等）の形態で導く。これはロードオンデマンドデータ処理モジュール（プラグイン）用のＡＰＩを有することができる。各ストリームは随意選択的な数のプラグインに関連されることができる。プラグインは特定のストリームの内部構造についての知識を有する唯一のモジュールである。イベントスプーラはこのように構成される場合、幾つかのデータ処理モジュール間で共有されることのできる汎用目的のＭＵＴＥＸ状リソースを提供できる。このようなアーキテクチャは容易な拡張能力を可能にし、コードのメンテナンス労力を減少する。新しいデータタイプの処理（例えばＴＣＰセッションデータ）をイベントスプーラに付加することは、単に構造ファイルの変更とこのデータタイプを認識するプラグインを書込む労力に転化する。
【０２１４】
センサ側で動作するイベント圧縮アルゴリズムに加えて、イベント処理モジュールはイベント処理（例えば事後処理）と、データ受信時の相関を行うことができる。信頼性のある秘密保護ネットワークデータ転送は次の組込み特徴、即ちチェックサム検査、再送信時間計算アルゴリズムによるパケットまたはセッションレベルの再送信、サーバ側のＡＣＬ検査、オンザフライデータ圧縮、暗号化を有するＵＤＰベースのネットワークプロトコルを使用して開発されることができる。イベント処理モジュールは例えばポート８０／ＵＤＰにおいてイベントスプーラ聴取のサーバ部分（“ネットスプール”）を動作できる。これはセンサの名称によりタグ付けされている各許可されたセンサからデータストリームを受取ることができる。論理的なストリームタイプに基づいて、ネットスプールはそのデータを付加的な処理へ送信し、そのデータを記憶するためにプラグインを呼出すことができる。構造に基づいて、これはｅメール／ＳＮＭＰメッセージを発生し、そのオリジナルデータを更に処理するために送信することもできる。ネットワークの停止の場合には、スプールモニタおよび／またはネットスプールは（漸進的にタイムアウト間隔を増加して）３０分までデータを送信しようと試み、その後終了する。終了したプロセスは主イベントスプーラプロセスにより再スタートされ、不完全なトランザクションを継続できる。サイクルはデータ送信が成功するまで存続できる。
【０２１５】
図２８は分布モードで動作するイベントスプーラの１実施形態を示している。センサはまた動作しているネットスプールプロセスを有し、これはローカルクライアント接続のみを可能にできる。スプールモニタと状態コレクタはデータを送信することができるが、機器当りデータストリームの１ソースのみを有することができる。構造はセンサホストのそれぞれのモジュールで自動ＭＵＴＥＸスタイルのロックを行うことができる。
【０２１６】
イベントスプーラは例えばＮＣＡＰベースのアプリケーション内の全てのモジュールにより発生されるイベントを集めて転送することができる。イベントスプーラはＵＮＩＸ（登録商標）ＩＰＣと、相互及び残りのシステムと通信するためのネットワーク化とを使用する特殊化されたサブプロセスを有するマルチプロセス分布アプリケーションとして構成されることができる。
【０２１７】
イベントスプーラアプリケーションに含まれることのできるサブプロセスのリストを以下に示す。  
・ａｌｅｒｔｄ：ＵＮＩＸ（登録商標）メッセージングを使用して解析モジュールからイベントを集める。ユーザにより破棄されたイベントを濾波する  
・ｅｖｓｐｏｏｌ：スプーラプロセス管理装置  
・ｓｔａｔｕｓ  ｃｏｌｌｅｃｔｏｒ：共有された統計プールを保存する
・ｓｐｏｏｌ  ｍｏｎｉｔｏｒ：特定のスプールディレクトリからイベントデータを取る。
【０２１８】
プロセスマネジャはａｌｅｒｔｅｄプロセス（図２９参照）を開始し、ＩＰＣメッセージプールに添付し、および／またはファイルから警報マップをマップする。その後、事象フレームの入来を待機する。フレームを受信すると、これはそのフレームから警報ｉｄ情報を復号し、警報マップセットに対してそれをチェックする。警報ｉｄが送信を許容されるならば、ａｌｅｒｔｅｄプロセスはフレームをスプールファイルへ位置させることができる。
【０２１９】
警報フレームはスプールモニタによりスプーラファイルから取られることができ、これはｅｖｓｐｏｏｌの監督下で実行される。スプールモニタのタスクは１つづつスプールファイルからフレームをピックアップし、各フレームにストリームラベル及びセンサ名をプリペンドし、チェックポイントファイル中の現在のスプールポインタを追跡し、結果的なフレームをネットスプールプロセスに送信することである。データは所有者の、信頼性のある秘密保護されたＵＤＰベースのプロトコルにより送信されることができる。イベントデータはそれが送信されるまでスプールファイル中に維持されることができる。特別に開発されたネットワークプロトコルとチェックポイントファイルはそのアプリケーションがネットワークの停止とハードウェアのリブートに耐えることを確実にできる。
【０２２０】
ネットスプールプロセスはフレームを受信し、その構造に応じてこれを別のネットワークスプールに送信するか、ローカルデータベースプラグインに送信するか、またはその両者である。データベースプラグインはロードオンデマンドのダイナミックライブラリとして構成されることができる。事後処理の付加的な層はイベント相関を含むことができる。
【０２２１】
ネットスプールは状態コレクタから情報を集めることもできる。状態コレクタはＮＣＡＰベースのアプリケーションの統計プールに対して割当てられた共有されたメモリセグメントのコピーを作り、これを（予め構成された時間間隔で）そのデータベースへ反復的に送信する。
【０２２２】
［ＴＣＰキラー］  
ＴＣＰキラーモジュールの１実施形態は例えば実時間でＴＣＰセッションを停止することにより不当なトラフィックに反応する能力を提供する。
【０２２３】
ＴＣＰキラーモジュールはＬｉｎｕｘ（登録商標）パケットソケットＡＰＩを利用できる。このインターフェースはＮＩＣドライバへ直接接続し、人工的に発生されたパケットをその出力待ち行列中に位置させる能力を提供する。そのドライバはユーザスペースプログラムから（層２のヘッダを含む）完全なネットワークパケットを受取り、これを変更せずにネットワークへ注入する。ネットワーク解析装置が十分に高速であるならば、これは不当と判断される場合に、進行中のＴＣＰセッションを停止するためにＴＣＰ  ＲＳＴパケットを発生することができる。
【０２２４】
これは適切なＳＥＱ及びソケット対属性を有するＴＣＰ  ＲＳＴパケットをクライアントとサーバコンピュータの両者へ送信することによりそれを行うことができる。特別なソケット対でＴＣＰ  ＲＳＴパケットを受信した後、ホストのＴＣＰ／ＩＰスタックは接続を閉じ、データバッファをフラッシュし、エラーをユーザアプリケーションに戻すことができる（“ピアによる接続のリセット”は標準的なエラーメッセージである）。
【０２２５】
ＴＣＰキラーが取り付けられたアプリケーションは通常のネットワーク動作アクチビティに干渉するので、モジュールの性質において別々のオーバーライド制御を有することができる。ＴＣＰキラーモジュールはＮＣＡＰアプリケーションからのいずれのセッション終端リクエストが承諾され、いずれが無視されるかの制御を含んでいてもよい。制御機構は可能なリセットターゲットリスト（ＩＰフィルタ）に含まれるかそれらから除外されるように目的地アドレスとポート範囲を特定する別々の構造ファイルと、ＲＳＴパケット命令（警報マップ）を含んだ各警報ＩＤに対するリセットパケット生成を許可／却下する“ビットマップ”ファイルとを含んでいる。
【０２２６】
ＴＣＰキラーモジュールはＵＮＩＸ（登録商標）メッセージングＩＰＣを使用して、そのクライアント（例えばローカルアプリケーション）と通信する別々のＵＮＩＸ（登録商標）プロセスとして構成されることができる。これはスタートアップ期間に構造ファイルからＩＰフィルタリストを読み出し、警報マップファイルを共有モードでメモリへマップすることができ、受られるようにｔｃｐｋｃからの変更を許容する。モジュールの再スタートはＩＰフィルタ情報が変更される必要がある場合にのみ必要とされる。標準的な再スタート手順はプロセス管理装置によって行われることができる。再スタートはＮＣＡＰベースのアプリケーションにおける他のプロセスに影響しない。
【０２２７】
［ＴＣＰキラーモジュールＡＰＩ］  
ＴＣＰキラーＡＰＩはＵＮＩＸ（登録商標）メッセージング設備を使用できる。ＴＣＰキラーはスタートアップ手順期間中にＮＣＡＰコアにより割当てられたメッセージ待ち行列に取り付けられることができる。待ち行列のＩＤは全てのＮＣＡＰモジュールに知られてもよい。
【０２２８】
ＴＣＰキラープロセスはｔｃｐｋ＿ｔ構造により説明されるフォーマットのメッセージバッファを予測する。ｔｃｐｋ＿ｔ構造はＴＣＰ  ＲＳＴパケットの生成に必要な警報ｉｄおよび層２／３／４情報を含むことができる。
【０２２９】
［ＴＣＰキラーモジュールの初期化］  
ＴＣＰキラーはプロセス管理装置により開始されることができる。これはＮＩＣ名、警報マップ名、ＩＰフィルタ構造ファイル名をコマンドラインから得ることができる。これはＩＰフィルタ情報を読取り、解釈し、警報マップファイルをメモリへマップすることができる。
【０２３０】
次の動作は例えば特定されたＮＩＣ名を有するパケットソケットを開くことによってＮＩＣドライバへの制御接続を開くことである。初期化相の最後に、モジュールは特定されたＮＩＣをＮＯＡＲＰモードに設定することができる。
【０２３１】
初期化後、ＴＣＰキラーはセッション終端リクエストを待機し、それらを受取り、ＩＰフィルタと警報マップを用いて受信されたリクエストを濾波し、可能ならばそのリクエストで与えられた情報を使用してＴＣＰ  ＲＳＴパケットを発生する無限ループに入ることができる。
【０２３２】
前述したように、警報マップはパケットを送信する場所の方向、即ちクライアント側、サーバ側またはその両者を特定できる。両者の側が特定されるならば、ＴＣＰキラーモジュールは連続して２つのパケットを発生して送信し、その一方は接続のサーバ側用に生成され、他方はクライアント側用である。
【０２３３】
［ＴＣＰキラーモジュールの再構成］  
ｔｃｐｋｃコマンドラインユーティリティは警報マップ情報を更新する方法を提供する。これは特定された二進マップファイルを変更することができ、その変更はこのファイルをそのメモリにマップされた状態に維持する実行中のＴＣＰキラープロセスに対して即時に利用可能にされる。
【０２３４】
ＩＰフィルタ情報を変更するために、ＴＣＰキラーモジュールは再スタートされることを必要とする。これはプロセス管理装置が提供する標準的な機構によって行われることができる。ＴＣＰキラーモジュールの再スタートは他のＮＣＡＰベースのモジュールに影響しない。
【０２３５】
［ＴＣＰキラーモジュールのアップロード］  
ＴＣＰキラーモジュールはＮＣＡＰベースのアプリケーションが退出する理由を発見するとき停止する。ＵＮＩＸ（登録商標）標準退出手順は全ての通信チャンネルを閉じ、プロセスにより使用されている全てのメモリを再度要求するので、モジュールは何等の特別な行動も取らない。
【０２３６】
マシンの読取り可能な媒体は符号化された情報を含み、これはマシンにより読取られ実行されるとき、例えば説明した実施形態（例えば１以上の説明した方法）を行う。マシンの読取り可能な媒体はプログラム可能なパラメータであり、実行可能な命令、非プログラム可能なパラメータおよび／または他のデータを含む情報を記憶することができる。マシンの読取り可能な媒体は読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、非揮発性メモリ、光ディスク、磁気テープおよび／または磁気ディスクを備えることができる。マシンの読取り可能な媒体はさらに、例えばマシン（例えばコンピュータ）により読取られ、復調／復号され、実行されることのできる指令を伝達するように変調されたまたは他の方法で操作された搬送波を含むことができる。マシンは１以上のマイクロプロセッサ、マイクロ制御装置および／または他の論理素子のアレイを具備することができる。
【０２３７】
先の説明を考慮すると、説明した実施形態がソフトウェア、ファームウェアおよび／またはハードウェアで実行されることができることは当業者には明白であろう。本発明の実行に使用される実際のソフトウェアコードまたは特殊化された制御ハードウェアは本発明を限定するものではない。すなわち、実施形態の動作及び態様については実際のソフトウェアコードまたは特殊化されたハードウェアコンポーネントを特別に参照せずに説明した。当業者がここでの説明に基づいて本発明の実施形態を実行するためのソフトウェアおよび／または制御ハードウェアを設計できることが明らかに理解できるので、このような特別な参照がなくても適応することができる。
【０２３８】
当業者が本発明を実行し、或いは使用することができるようにするために、前述の実施形態を説明した。これらの実施形態に対する種々の変形が可能であり、ここで与えた一般原理は他の実施形態にも同様に適用されるであろう。例えば本発明はハードワイヤ回路として、特定用途用集積回路に製造される回路構造として、または非揮発性メモリにロードされるファームウェアプログラムとして、或いは論理素子のアレイにより実行可能な指令であるコードのようなマシンの読取り可能なコードとしてデータ記憶媒体から、またはデータ記憶媒体へロードされるソフトウェアプログラムとして、部分的にまたは全体として実行されることができ、このようなコードはマイクロプロセッサまたは他のデジタル信号処理装置または幾つかの他のプログラム可能なマシンまたはシステムとして論理素子のアレイにより実行可能である。このように、本発明は前述の実施形態に限定されることを意図するものではなく、任意の特別な指令のシーケンスおよび／または任意の特定のハードウェア構造はむしろここでの任意の方法で開示された原理及び優秀な特性と一貫した最も広い技術的範囲にしたがうべきである。
【図面の簡単な説明】
【０２３９】
【図１】ネットワーク内容解析プラットフォームの１実施形態のブロック図。
【図２】図１のパケット捕捉の１実施形態のブロック図。
【図３】図１のパケット捕捉の１実施形態のフロー図。
【図４】図１のＩＰデフラグメンタの１実施形態のブロック図。
【図５】ＩＰデフラグメンタのフリー記述子チェーンの１実施形態の概略図。
【図６】ＩＰデフラグメンタ記述子のエイジチェーンの１実施形態の概略図。
【図７】ＩＰデフラグメンタセッション記述子の構造の１実施形態の概略図。
【図８】図１のＩＰデフラグメンタの１実施形態のフロー図。
【図９】図１のＴＣＰリアセンブラの１実施形態のブロック図。
【図１０】ＴＣＰリアセンブラのフリーセッション及びペイロードチェーンの１実施形態の概略図。
【図１１】ストリーム遷移の１実施形態の概略図。
【図１２】ＴＣＰセッション遷移の１実施形態の概略図。
【図１３】ＴＣＰセッションエイジチェーンの１実施形態の概略図。
【図１４】ＴＣＰセッションリングバッファの１実施形態の概略図。
【図１５】ＴＣＰペイロードチェーンの１実施形態の概略図。
【図１６】図１のＴＣＰリアセンブラの１実施形態のフロー図。
【図１７】図１の内容復号器の１実施形態のフロー図。
【図１８】内容復号ツリーの１実施形態の概略図。
【図１９】自動キーワード発見ツールの１実施形態のフロー図。
【図２０】図１のキーワードスキャナの１実施形態のフロー図。
【図２１】自動内容プロファイラツールの１実施形態のフロー図。
【図２２】超平面計算の１実施形態のフロー図。
【図２３】図１の多次元内容のプロファイル化スキャナの１実施形態のフロー図。
【図２４】出力スコア計算の１実施形態のフロー図。
【図２５】内容スキャナの有限状態オートマトンの１実施形態の概略図。
【図２６】図１の不正暗号化検出器の１実施形態のフロー図。
【図２７】図１のプロセス管理装置の１実施形態のブロック図。
【図２８】図１のイベントスプーラの１実施形態のブロック図。
【図２９】図１のイベントスプーラの１実施形態のフロー図。
【図３０】図１のＴＣＰキラーの１実施形態のブロック図。
【図３１】図１のＴＣＰキラーの１実施形態のフロー図。
【図１】
2007507763.tif 000003
【図２】
2007507763.tif 000004
【図３】
2007507763.tif 000005
【図４】
2007507763.tif 000006
【図５】
2007507763.tif 000007
【図６】
2007507763.tif 000008
【図７】
2007507763.tif 000009
【図８】
2007507763.tif 000010
【図９】
2007507763.tif 000011
【図１０】
2007507763.tif 000012
【図１１】
2007507763.tif 000013
【図１２】
2007507763.tif 000014
【図１３】
2007507763.tif 000015
【図１４】
2007507763.tif 000016
【図１５】
2007507763.tif 000017
【図１６】
2007507763.tif 000018
【図１７】
2007507763.tif 000019
【図１８】
2007507763.tif 000020
【図１９】
2007507763.tif 000021
【図２０】
2007507763.tif 000022
【図２１】
2007507763.tif 000023
【図２２】
2007507763.tif 000024
【図２３】
2007507763.tif 000025
【図２４】
2007507763.tif 000026
【図２５】
2007507763.tif 000027
【図２６】
2007507763.tif 000028
【図２７】
2007507763.tif 000029
【図２８】
2007507763.tif 000030
【図２９】
2007507763.tif 000031
【図３０】
2007507763.tif 000032
【図３１】
2007507763.tif 000033