(57)【特許請求の範囲】
【請求項１】
データ処理方法であって、
１つまたは複数のデータ・レコードを取得するステップと、
領域知識に基づいて、前記１つまたは複数のデータ・レコードから特徴情報を抽出するステップと、
前記抽出された情報を、少なくとも１つの処理デバイスにより、キーＫおよび値Ｖで構成されるキー／値のペアに変換するステップであって、前記キーは前記抽出した特徴情報の特徴識別子を含む、前記変換するステップと、
少なくとも１つの処理デバイスにより、重複排除メカニズムを用いて、前記キー／値のペアが特徴ストア・データベース内にまだ存在していない場合に、前記変換されたキー／値のペアを、値の複数のバケットからなる前記特徴ストア・データベースに値のバケットとして記憶するステップであって、前記値のバケットは、前記特徴ストア・データベース内の値の特定のバケットとして識別され、前記値のタイムスタンプに基づいて、前記値が前記バケットに書き込まれる順序に関係なく、前記値を数学的集合として格納する、記憶するステップ、
を含む、データ処理方法。
【請求項２】
前記記憶するステップは、前記キーＫを用いて前記特徴ストア・データベース内のレコードをルックアップするステップと、前記ルックアップが失敗した場合、前記キーＫおよび前記値Ｖが新しいと判断し、キーＫおよび値Ｖの新たなレコードを前記特徴ストア・データベースに書き込むステップとを更に含む、請求項１に記載の方法。
【請求項３】
前記記憶するステップは、前記特徴ストア・データベース内のレコードを探索して、値Ｖが前記レコード内にまだ存在するか否かを判断するステップを更に含む、請求項１に記載の方法。
【請求項４】
前記値Ｖが前記レコード内に存在しない場合、前記値Ｖを前記レコードに加え、前記レコードを前記特徴ストア・データベースに記憶するステップを更に含む、請求項３に記載の方法。
【請求項５】
１つまたは複数の規定された収集器に前記キー／値のペアを転送するステップを更に含む、請求項４に記載の方法。
【請求項６】
前記値Ｖが前記レコード内に存在する場合、前記抽出されたキー／値のペアに関連付けられた新たなタイムスタンプＴＳを、既存の前記レコード内の前記値Ｖに既に関連付けられた既存のタイムスタンプＴＳと比較し、前記新たなタイムスタンプＴＳが前記既存のタイムスタンプＴＳよりも早い場合、前記新たなタイムスタンプＴＳを、Ｖを有する前記レコードに配置し、前記特徴ストア・データベース内の前記レコードを更新するステップを更に含む、請求項３に記載の方法。
【請求項７】
前記キー／値のペアおよびタイムスタンプＴＳを１つまたは複数の規定された収集器に転送するステップを更に含む、請求項６に記載の方法。
【請求項８】
タイムスタンプを前記キー／値のペアに関連付けるステップを更に含む、請求項１に記載の方法。
【請求項９】
前記抽出された情報は、リアルタイムの処理および履歴による処理のうちの１つまたは両方で処理される、請求項１に記載の方法。
【請求項１０】
前記データ・レコードは地理的に分散している、請求項１に記載の方法。
【請求項１１】
前記取得するステップおよび前記抽出するステップは、階層構造の収集システムを用いる、請求項１に記載の方法。
【請求項１２】
１つまたは複数のデータ・レコードから抽出された１つまたは複数の特徴をクエリするための方法であって、
複数の値のバケットからなる特徴ストア・データベースを取得するステップであって、前記特徴ストアは、キー／値のペアとして記録された１つまたは複数のデータ・レコードから抽出された特徴に含められており、ここで前記キーは抽出された特徴の特徴識別子を含み、ここで前記キー／値のペアは、前記特徴識別子を含む前記キーによって識別されるバケットに記録され、ここで前記値のバケットは、前記値のタイムスタンプに基づいて、前記値が前記バケットに書き込まれる順序に関係なく、前記値を数学的集合として格納する、取得するステップと、
少なくとも１つの処理デバイスを用いて、少なくとも１つのクエリ・キーで構成されるクエリを受信するステップであって、前記少なくとも１つのクエリ・キーが少なくとも１つの前記特徴識別子から構成される、受信するステップと、
少なくとも１つの処理デバイスを用いて、前記特徴ストア・データベースから値を取得するステップであって、キーに関連付けられた値の前記バケットの１つを取得することで、前記特徴ストア・データベースから前記クエリ・キーに合致する値を取得するステップと
１つまたは複数の取り出したキー／値のペアを返すステップと、
を含む、方法。
【請求項１３】
サポートされるキー／値のペアをレジストリに登録するステップを更に含む、請求項１２に記載の方法。
【請求項１４】
特徴を与えるクエリ・サーバを所与の名前を用いて識別するステップを更に含む、請求項１２に記載の方法。
【請求項１５】
前記所与の名前で構成される所与のクエリを前記識別されたクエリ・サーバに送信するステップを更に含む、請求項１４に記載の方法。
【請求項１６】
請求項１〜１５の何れか１項に記載の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１７】
請求項１６に記載の前記コンピュータ・プログラムをコンピュータ可読記録媒体に記録した、コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、電気、電子およびコンピュータの技術に関し、より詳細には、データを取得し処理するための技法に関する。
【背景技術】
【０００２】
多くの企業は、高度で発展するサイバー・セキュリティ脅威へのシフトによる課題に直面している。攻撃者は、例えば、複数のマシンにわたって攻撃ステップを隠し、様々なアプリケーション・プロトコルを利用するか、または長期間にわたって自身のアクティビティを拡散することによって、自身の存在を隠すかまたは少なくとも検出される確率を低減するのに役立つステルス攻撃技術を適用することが増えてきている。これらの脅威の多くは、進化型継続脅威（ＡＰＴ：advanced persistent threat）と呼ばれる。
【０００３】
そのような複雑な攻撃パターンを検出および調査することは、多岐にわたる有利な場所（vantagepoint）、様々なデータ・ソースおよび複数の抽象レイヤからのイベントの収集、記憶および解析を必要とする。多くの場合に毎秒何千イベントものレートでエクスポートされるモニタリング・データは、リアルタイム解析および履歴解析のために、収集され、記憶され、利用可能にされる必要がある。そのような負荷および多岐にわたる関連データタイプおよび変動する収集遅延により、サイバー・セキュリティ脅威の調査は大きなデータ問題となっている。多くの収集されたイベントは、（数週間または数ヶ月等の）潜在的に大きな時間窓にわたって様々なデータ・ソースにまたがるコンテキスト内に移され、ネットワークにおける進行中のアクティビティおよび過去のアクティビティの全体像を形成し、影響が少ないかまたは影響がない誤警報または異常値をフィルタリング除去して初めて意味のあるものとなる。
【０００４】
そのようなセキュリティ・インシデントへのタイムリーな対応は、データのほぼリアルタイムの解析を必要とする一方、調査は、大きな時間窓にわたる履歴データへのアクセスを必要とする。しかしながら、既存の解決策は、比較的小さな時間窓でリアルタイムにデータを処理するか、または履歴データしかサポートせず、記憶されたデータへの順次アクセスを必要とする。入力／出力（ＩＯ）限界が重要因子となっており、既存の解決策は、セットアップの増大コストおよび結果の再結合を用いてマシンの大きなクラスタにわたってＩＯを分散させることによりこれに対処している。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
未加工データを取得し処理するための改善された技法が必要とされている。（ｉ）インシデントに対するタイムリーな対応を提供するための、データの実質的にリアルタイムの解析、および（ｉｉ）調査を可能にするための、大きな時間窓にわたる履歴データへのアクセス、を可能にするデータ処理システムが更に必要とされている。
【課題を解決するための手段】
【０００６】
概して、分散型の特徴収集および相関のための方法および装置が提供される。本発明の１つの態様によれば、特徴抽出データ処理方法が、１つまたは複数のデータ・レコードを取得するステップと、領域知識に基づいて、１つまたは複数のデータ・レコードから情報を抽出するステップと、抽出された情報を、キーＫおよび値Ｖで構成されるキー／値のペアに変換するステップであって、キーは特徴識別子を含む、ステップと、重複排除メカニズムを用いて、キー／値のペアが特徴ストア（feature store）データベース内にまだ存在していない場合、キー／値のペアを特徴ストア・データベースに記憶するステップとを含む。
【０００７】
本発明の１つの態様によれば、１つまたは複数のデータ・レコードから抽出された１つまたは複数の特徴をクエリするための方法が、キーＫおよび値Ｖで構成されるキー／値のペアとして記憶された抽出された特徴で構成される特徴ストア・データベースを取得するステップであって、キーは特徴識別子を含む、取得するステップと、少なくとも１つのクエリ・キーで構成されるクエリを受信するステップと、特徴ストア・データベースからクエリ・キーに合致する値を取り出すステップと、１つまたは複数の取り出したキー／値のペアを返すステップとを含む。
【０００８】
本発明のより完全な理解、ならびに本発明の更なる特徴および利点は、以下の詳細な説明および図面を参照して得られる。
【図面の簡単な説明】
【０００９】
【図１】本発明の態様を組み込む例示的な特徴収集および相関エンジン（ＦＣＣＥ）システムのブロック図である。
【図２】本発明の態様を組み込む特徴抽出器の例示的な実施態様を示すフローチャートである。
【図３】本発明の態様を組み込む特徴収集器の例示的な実施態様を示すフローチャートである。
【図４】本発明の態様を組み込む特徴収集器の例示的な実施態様を示すフローチャートである。
【図５】本発明の態様を組み込む例示的な特徴ストアを示す図である。
【図６】本発明の態様を組み込む特徴ストアの書き込みプロセスの例示的な実施態様を示すフローチャートである。
【図７】本発明の態様を組み込む特徴ストアの読み出しプロセスの例示的な実施態様を示すフローチャートである。
【図８】例示的なレジストリ・サーバによって提供されるクエリ・サーバ登録プロセスの例示的な実施態様を示すフローチャートである。
【図９】例示的なレジストリ・サーバによって提供されるクライアント・クエリ・サーバ発見プロセスの例示的な実施態様を示すフローチャートである。
【図１０】本発明の態様を組み込むクエリ・サーバ・プロセスの例示的な実施態様を示すフローチャートである。
【図１１】例示的なサブスクリプション・サーバによって提供される新たなクライアント／パターン・サブスクリプション・プロセスの例示的な実施態様を示すフローチャートである。
【図１２】例示的なサブスクリプション・サーバによって提供される新たなマッチング特徴ストリーミング・プロセスの例示的な実施態様を示すフローチャートである。
【図１３】本発明の態様によるセキュリティ脅威の例示的な解析を示す図である。
【発明を実施するための形態】
【００１０】
本発明の態様は、特徴収集および相関エンジン（ＦＣＣＥ）を提供する。本発明の１つの態様によれば、例示的な開示されるＦＣＣＥシステムは、多様なネットワーク・データ・ソースから特徴を抽出、正規化、記憶、取り出しおよび相関付けする分散型のデータ管理システムを備える。例示的なＦＣＣＥシステムは、ソース間の連続した接続性を必要としない地理的に分散したデータ・ソースをサポートし、分散型のエンジン・アーキテクチャ内での個々のノードの障害に対し耐性を提供する。
【００１１】
本発明の別の態様によれば、領域知識を利用して、重複排除メカニズムを用いてデータが取り込まれた点のコア特徴を抽出することができ、それによって、階層構造の収集システムに関してデータ量が大幅に低減され、それによって、全てのデータセットにわたって重複排除されたコア特徴が概念的に中央の位置に到達し、ここでこれらのコア特徴はほぼリアルタイムで利用可能であるか、またはこれらのコア特徴の履歴に（in historical manner）アクセスし、サイバー脅威を検出もしくは調査することができる。
【００１２】
本発明の更に別の態様によれば、抽出される特徴ごとにキーおよび値が規定される。キーは、数学的集合として扱われる値の特定のバケットを識別するのに用いられる。数学的集合は、データが時間順序を考慮することなく取り込まれることを可能にする。このようにして、より古い履歴データセットをリアルタイム・データとともにシステム内に取り込むことができる。
【００１３】
図１は、本発明の態様を組み込む例示的な特徴収集および相関エンジン（ＦＣＣＥ）システム１００のブロック図である。図１に示すように、ＦＣＣＥシステム１００の例示的な実施形態は、特徴抽出１２０（データ・ソース１１０から未加工データを取り込み、処理して、抽出された特徴１２５を抜き出す）と、特徴集約１３０（様々なデータ・ソース１１０から抽出された特徴１２５を収集し結合する）と、特徴記憶１４０（集約され重複排除された結果１３５を記憶する）とのデータ取り込みフレームワーク１０５を備える。加えて、ＦＣＣＥシステム１００の例示的な実施形態は、データ消費者１７０の関心対象の特徴を効率的にクエリするためのインターフェースを提供する特徴取り出しレイヤ１６０を備えるデータ取り出しフレームワーク１５０を備える。
【００１４】
図１に示すように、例示的なＦＣＣＥシステム１００は、以下で図２と合わせて更に検討する少なくとも１つの特徴抽出器２００と、以下で図３および図４と合わせて更に検討する少なくとも１つの特徴収集器３００と、以下で図５〜図７と合わせて更に検討する少なくとも１つの特徴ストア４００と、オプションで、以下で図８および図９と合わせて更に検討する１つまたは複数のレジストリ・サーバ５００と、オプションで、以下で図１０と合わせて更に検討する１つまたは複数のクエリ・サーバ６００と、オプションで、以下で図７と合わせて更に検討する１つまたは複数のサブスクリプション・サーバ７００とを備える。
【００１５】
通常、以下で検討するように、例示的な特徴ストア４００は、キー／値ストアに基づき、後に高度に拡張可能な方式で相関特徴の取り出しに用いられる、未加工データに関連する特徴を記憶する。通常、例示的な特徴抽出器２００は未加工データ・ソース１１０（実物またはバッチ／記憶済み）に接続し、特徴を抽出し、これらの特徴は少なくとも１つの特徴収集器３００に転送される。例示的な実施形態では、データ・ソース１１０は、ドメイン名サーバ（ＤＮＳ）データ１１０−１と、侵入防止システム（ＩＰＳ）アラート１１０−２と、ネットフローデータ１１０−Ｎとを備える。次に、例示的な特徴収集器３００は、特徴を検証し、少なくとも１つの特徴ストア４００に記憶する。
【００１６】
ＦＣＣＥシステム１００のデータ取り出しフレームワーク１５０は、相関付けられた特徴の取り出しをサポートする。クライアント（例えば、解析アプリケーション１８０および視覚化ツール）は、選択された特徴ストア４００にクエリするか、または１つもしくは複数のクエリ・サーバ６００に、提供されたキーに合致する特徴を特徴ストア４００から返すように依頼することができる。クエリ・サーバ６００は、提供されたキーに合致する、自身の特徴ストア４００において現在利用可能な任意の特徴を返す。クライアントは、１つまたは複数のサブスクリプション・サーバ７００に特徴を要求することもできる。１つまたは複数のサブスクリプション・サーバ７００は、キーに合致する、特徴ストア４００に入る任意の新たな特徴を連続して返すことになる。クエリプロバイダ／サブスクリプションプロバイダ１６５は、特徴ストア４００、レジストリ・サーバ５００、クエリ・サーバ６００およびサブスクリプション・サーバ７００と通信するためのフロントエンドまたは中央レイヤをクライアントに提供する。
【００１７】
レジストリ・サーバ５００は、任意のコンポーネント間の接続を仲介することができる。コンポーネントはレジストリ・サーバ５００に登録し、自身の機能をレジストリ・サーバ５００に公表する。次に、他のコンポーネントおよびクライアントは、提供された機能に基づいて、任意の登録されたコンポーネントについてレジストリ・サーバ５００にクエリすることができる。
【００１８】
特徴に効率的にアクセスするために１つまたは複数の解析アプリケーション１８０を提供することができる。
【００１９】
特徴抽出
図２は、本発明の態様を組み込む特徴抽出器２００の例示的な実施態様を示すフローチャートである。通常、以下で更に検討するように、特徴抽出フェーズ１２０中、入力データ・ソース１１０ごとに、ドメイン・エキスパートは、特徴抽出器２００を用いて未加工データから特徴を抜き出す方法を指定する。各個々のデータ入力は１つまたは複数の抽出器２００に関連付けられる。次に、各個々のデータ入力から抽出された特徴は、次のフェーズに直接転送されるか、またはローカルの一時的な特徴ストア４００において重複排除されキャッシュされる。これらの一時的な特徴ストア４００は、関連付けられたデータ入力１１０からローカルで導出される知識を構成する。
【００２０】
特徴抽出器２００は、関連付けられたデータ入力１１５から特徴を抽出し、特徴を符号化して所定のフォーマットにする。より詳細には、取り込まれたデータはデータタイプ固有のコンポーネントによって復号され、データ・レコードから所望の情報が抽出される。各情報は（領域知識に基づいて）キー／値のペアに変換される。更に、各キー／値のペアにタイムスタンプ（ＴＳ）を付けることができ、特徴識別子がキー内に含まれる。次に、各キー／値のペアは符号化され、Ｋとして符号化されたキーおよびＶとして符号化された値を有する、実施態様により規定されるフォーマットにされる。
【００２１】
図２に示すように、特徴抽出器２００は初期化され、ローカル・ファイルまたはレジストリ・サーバ５００あるいはその両方から構成を読み出し、データ・ソース１１０および収集器（複数の場合もある）３００のロケーションを取り出す。特徴抽出器２００は、ステップ２０５中に、構成された収集器３００に接続し、次に、ステップ２１０中に、構成されたデータ・ソース１１０に接続する。
【００２２】
ステップ２１５中、特徴抽出器２００はリスンし、データ・ソース１１０からレコードを受信する。ステップ２２０中に、受信されたレコードはパースおよび検証される。特徴抽出器２００は、ステップ２２５中にレコードから特徴（複数の場合もある）を抽出する。抽出された特徴は、ステップ２３０中に、構成され接続された収集器３００にサブミットされ、次に、特徴抽出器２００はリスニング・ステップ２１５に戻る。
【００２３】
特徴集約
特徴抽出後、様々な抽出器においてローカル知識が集約され、１つまたは複数の特徴収集器３００を用いて大域ビューが形成される。各収集器３００は、入力として、複数の抽出器２００によって抽出される特徴をとり、任意の冗長な特徴を重複排除することによって結果を集約する。各収集器３００において、ローカル特徴ストア４００は、ローカル特徴ストア４００にフィードする全ての入力から導出され重複排除された知識を記憶するように維持される。抽出器２００と同様にして、収集器３００はオプションで新たな値を１つまたは複数の他の収集器３００に転送することができ、拡張性の目的で階層構造（例えば、ツリー）を可能にする。
【００２４】
図３は、本発明の態様を組み込む特徴収集器３００の例示的な実施態様を示すフローチャートである。通常、以下で更に検討するように、収集器３００は、複数の抽出器２００（またはピア収集器３００）によってフィードされる特徴を集約し、入力における任意の冗長性を重複排除する役割を果たす。
【００２５】
図３に示すように、特徴収集器３００は、ステップ３０５中に、構成された特徴ストア４００またはこの収集器３００から受信する他の収集器３００あるいはその両方を読み出すことによって初期化される。ステップ３１０中、この特徴収集器３００の収集器インスタンスがレジストリ・サーバ５００に登録され、このためクライアントはこの特徴収集器３００を見つけることができる。
【００２６】
特徴収集器３００は、ステップ３１５中に、クライアント（複数の場合もある）からの新たな特徴を受け入れるリスニングモードに入る。特徴収集器３００は、ステップ３２０中に、同時に複数のクライアントから特徴を受信し、正規化し、ステップ３２５中に、受信した特徴をパースおよび検証する。
【００２７】
ステップ３３０中、特徴収集器３００は（各特徴ストア４００への書き込み動作を用いて）全ての構成された特徴ストア４００および全ての構成された収集器３００に特徴を転送する。特徴収集器３００はステップ３３５中にクリーンアップし、ステップ３１５に戻り、新たなクライアント要求をリスンする。
【００２８】
新たに到着する特徴値の対Ｋ−Ｖ（タイムスタンプＴＳによって関連付けられる）について、収集器３００は図４に示すステップを実施する。ローカル特徴ストア４００に書き込まれる全ての組｛Ｋ；（ＴＳ；Ｖ）｝も、階層内の指定された収集器（複数の場合もある）３００に転送されることに留意されたい。図４に示すように、キーＫは、キー／値スタイルデータベース内のレコードをルックアップするのに用いられる。ルックアップが失敗した場合、キーＫおよび値Ｖは新しい。キーＫおよび値｛ＴＳ，Ｖ｝の新たなレコードがデータベースに書き込まれる。そうでない場合、レコードが探索され、Ｖがレコード内にまだ存在するか否かが判断される。Ｖがレコード内に存在しない場合、｛ＴＳ，Ｖ｝はレコードに加えられ、データベースに記憶され、Ｋ＋｛ＴＳ，Ｖ｝は規定された収集器３００に転送される。
【００２９】
そうでない場合、タイムスタンプＴＳは、Ｖに既に関連付けられたタイムスタンプと比較される。新たなタイムスタンプＴＳが以前のタイムスタンプよりも早い場合、新たなタイムスタンプＴＳがＶを有するレコードに配置され、データベースにおいて更新されたレコードおよびＫ＋｛ＴＳ，Ｖ｝が規定された収集器３００に転送される。
【００３０】
特徴記憶レイヤ１４０における階層の最下部において、１つまたは複数の収集器３００がルート収集器３００として指定される。ルート収集器３００は、収集された特徴、および情報にアクセスするためのクエリサービス（ＱＳ）６００のための永久記憶を提供する。
【００３１】
特徴ストア
各バケット内の特徴値は、数学的集合として扱われる。全てのそのような集合の収集により、特徴ストア（ＦＳ）４００が形成される。数値集合を使用して特徴を集約することによって、データの時間順序を考慮することなくデータを取り込むことが可能になる。これは、分散環境に有利である。更に、数学的集合は、異なる時点に利用可能になる様々なデータ入力の効率的な結合を可能にする。
【００３２】
例示的な実施態様では、特徴ストア４００はＣにおいて実施され、基礎をなす記憶メカニズムとしてカスタムキー／値ストアを利用する。特徴は、キー／値のペア自体において表される。キーおよび値の両方を、実施態様固有の符号化において符号化することができる。この符号化をシステム１００全体にわたって用いることにより、様々なコンポーネントによって、符号化データの詳細を理解する必要なく、キーおよび値を処理することができる。
【００３３】
特徴ストア管理者は、新たな特徴をストアに追加し、ストアから情報をクエリするためのＡＰＩを提供する。これらの動作の両方が非同期である（すなわち、作業はキューに入れられる）。更に、特徴ストア管理者は、特徴サブスクリプションサービス（ＳＳ）７００のためのフレームワークを提供する。
【００３４】
図５は、本発明の態様を組み込む例示的な特徴ストア４００を示す。図５に示すように、例示的な特徴ストア４００は、それぞれ値の集合Ｖａ１，Ｖａ２，．．．，およびＶｂ１，Ｖｂ２，．．．を記憶する複数のバケット４１０−Ａ、４１０−Ｂを備える。各バケット４１０−Ａ、４１０−Ｂは、対応するキー４２０−Ａ、４２０−Ｂによって一意に識別される。値は、以下で図６と合わせて更に検討するように、書き込みプロセス４５０を用いて特徴ストア４００に書き込まれ、以下で図７と合わせて更に検討するように、読み出しプロセス４８０を用いて特徴ストア４００から読み出される。
【００３５】
図６は、本発明の態様を組み込む書き込みプロセス４５０の例示的な実施態様を示すフローチャートである。通常、書き込みプロセス４５０はキー／値のペア（Ｋ，Ｖ）を特徴ストア４００に書き込む。図６に示すように、書き込みプロセス４５０は、ステップ４６０中に、最初に、キーＫに関連付けられた値のバケットを取り出す。その後、ステップ４６５中に、「Ｖ」が既にバケット内にあるか否かを判断する試験が実行される。ステップ４６５中に、「Ｖ」がまだバケット内にないと判断される場合、Ｖをバケットに加え、ステップ４７０中に、クライアント情報を除去し、ステップ４７５中に、戻る。一方、ステップ４６５中に、「Ｖ」が既にバケット内にあると判断される場合、ステップ４７５中に、戻る。
【００３６】
図７は、本発明の態様を組み込む読み出しプロセス４８０の例示的な実施態様を示すフローチャートである。通常、読み出しプロセス４８０は特徴ストア４００からキー値（Ｋ）を読み出す。図７に示すように、例示的な読み出しプロセス４８０は、ステップ４９０中に、キーＫに関連付けられた値のバケット（ＢＶ）を取り出し、ステップ４９５中に、値を返す。
【００３７】
例示的な特徴ストア４００によって値が書き込まれる順序には差がない（このため、ライブデータおよび履歴データを収容する）。更に、例示的な特徴ストア４００は、データの重複排除およびストリーミングを実行し、分散Ｉ／Ｏによる記憶および計算を提供する。
【００３８】
レジストリ・サーバ
例示的なレジストリ・サーバ５００は、以下でそれぞれ図８および図９を参照して検討するように、クエリ・サーバ登録プロセス５１０およびクライアント・クエリ・サーバ発見プロセス５５０を備える。通常、レジストリ・サーバ５００は、サービスを位置特定するのに用いられる登録サービス（ＲＳ）を提供する。例示的な実施態様は、システム１００内の全てのノードにおいてレジストリ・サーバ５００を有する。ローカル・レジストリ・サーバ５００は、ローカル・ノードにおいてのみ利用可能なサービスに関する情報のみを含む。これによって、ノードが一時的に分離または切断されるときであっても、ローカルで含まれる動作を実行することが可能になる。大域情報は、大域レジストリ・サーバ５００に転送される。実際の転送は、ローカル・レジストリ・サーバ５００にオフロードすることができる。ローカル・レジストリ・サーバ５００は、情報が最終的に大域サーバ５００に達することを確実にする役割を果たす。
【００３９】
登録情報は、キー／値のペアの組で構成される。以下の例は、ゾーンｒｃｘにおけるデータタイプＤＮＳについての（識別子ｔａｐ１を有する）タップサービスの存在を示す。このタップサービスのサービス・インターフェースは１０．１０．０．５：５５０００においてリスンする：
’ｃｌａｓｓ＝ｔａｐ，ｔｙｐｅ＝ｄｎｓ，ｚｏｎｅ＝ｒｃｘ，ｔａｐｉｄ＝ｔａｐ１，
ａｄｄｒｅｓｓ＝１０．１０．０．５，ｐｏｒｔ＝５５０００’
【００４０】
レジストリ・サーバ５００へのクエリは、キー／値のある部分組を提供し、合致する全てのエントリが返される。このため、
’ｃｌａｓｓ＝ｔａｐ，ｔｙｐｅ＝ｄｎｓ，ｚｏｎｅ＝ｒｃｘ，ｔａｐｉｄ＝ｔａｐ１’
のためのクエリは、上記に合致し、全ての値を返す。この機能は、特徴が存在し得る場所を特定するのにも用いられる。
【００４１】
図８は、本発明の態様を組み込むクエリ・サーバ登録プロセス５１０の例示的な実施態様を示すフローチャートである。クエリ・サーバ登録プロセス５１０は、ステップ５１５中に、最初にクエリ・サーバ６００からの登録要求をリスンする。その後、ステップ５２０中に、クエリ・サーバ登録プロセス５１０は、登録クエリ・サーバ６００の機能を識別するタグ（キー／値のペア）の組を受信する。
【００４２】
ステップ５２５中に、クエリ・サーバ登録プロセス５１０は、登録のための識別情報を作成し、この新たな識別子にタグをマッピングする。ステップ５３０中に、関連付けられた情報は、タグをキーとして用いてハッシュ・テーブルに記憶される。ステップ５３５中に試験が実行され、登録されたクエリ・サーバへの接続が閉じているか否かが判断される。ステップ５３５中に、登録されたクエリ・サーバへの接続が閉じていると判断される場合、ステップ５４０中に、ハッシュ・テーブルから識別情報を除去し、ステップ５１５中のリスニング状態に戻る。
【００４３】
一方、ステップ５３５中に、登録されたクエリ・サーバへの接続が閉じていないと判断される場合、ステップ５１５中のリスニング状態に進む。
【００４４】
図９は、本発明の態様を組み込むクライアント・クエリ・サーバ発見プロセス５５０の例示的な実施態様を示すフローチャートである。図９に示すように、クライアント・クエリ・サーバ発見プロセス５５０は、ステップ５６０中に、最初にクライアント要求を待つ。クライアント・クエリ・サーバ発見プロセス５５０は、ステップ５６５中にクライアントからタグ（キー／値のペア）を受信し、次に、ステップ５７０中に、提供されたキーを用いてハッシュ・テーブル内の全てのクエリ・サーバ識別子をルックアップする。
【００４５】
次に、クライアント・クエリ・サーバ発見プロセス５５０は、ステップ５７５中に、全てのタグを満たす全てのクエリ・サーバ識別子の共通集合Ｉを求め、ステップ５８０中に、識別子の集合Ｉをクライアントに返す。次に、プログラム制御はリスニング・ステップ５６０に戻る。
【００４６】
クエリ・サーバ
例示的なＦＣＣＥは、導出された知識にアクセスする複数の方法をサポートするクエリ・インターフェースを提供する。登録サービス（ＲＳ）５００を用いて、関心対象の特徴を記憶するルート収集器３００を見つけることができる。更に、クエリ・サーバ６００を利用して、特定の特徴タイプおよびキーをクエリ述部として用いて対応する特徴ストア４００をクエリすることができる。更に、ユーザはサブスクリプション・サーバ７００を用いて、関心対象の特徴タイプに関して（登録サービスによってルーティングされるような）特定の抽出器／収集器にサブスクライブすることができる。
【００４７】
クエリ・サーバ６００は、特徴ストア４００内の特徴にアクセスを提供する。特徴ストア４００は、特徴タイプ（特徴識別子）およびクエリ・キー（複数の場合もある）をクエリ述部として用いて、解析者が特徴ストア４００をルックアップすることを可能にする。クエリ・サーバ６００は、関心対象の特徴のタイプおよび１つまたは複数のクエリ・キーを示す特徴識別子を提供することができる。各クエリ・キーは特徴識別子と組み合わされ、１組の符号化キー［Ｋ］を作成する抽出ステップにおいて用いられるのと同じデータ符号化フォーマットを用いて符号化される。［Ｋ］内の符号化キーごとに、ルックアップを用いてキー／値データベースをクエリする。ルックアップが失敗する場合、何も行われないか、または失敗したキーが、ルックアップが失敗したという指示とともに送られる。そうでない場合、取り出されたレコード内の値ごとに、符号化された｛ＴＳ，Ｖ｝が復号され、Ｋ＋｛ＴＳ，Ｖ｝が送られる。
【００４８】
図１０は、本発明の態様を組み込むクエリ・サーバ・プロセス６００の例示的な実施態様を示すフローチャートである。図１０に示すように、クエリ・サーバ６００が始動されると、ステップ６０５中に、サポートされるキー／値のペアがレジストリ・サーバ５００に登録される。次に、ステップ６１０中に、クエリ・サーバ６００はクライアント要求を待ち、キーを受信する。
【００４９】
次に、クエリ・サーバ６００は、ステップ６１５中に、読み出しプロセス４８０（図７）を用いて、受信したキーにマッチする全ての値を特徴ストア４００から取り出し、ステップ６２０中に、取り出されたキー／値のペアをクライアントに送信する。次に、クエリ・サーバ６００は待機状態６１０に戻る。
【００５０】
ルート収集器３００において同一場所に配置されるクエリ・サーバ６００は、それらの特徴ストア４００に何のデータがあるかに関する、より高いレベルのキーイング情報を提供する登録を維持する。例えば、２０１２／０４／０１〜２０１２／０４／０２の日付範囲について特徴ＩＰＢｙＮａｍｅＤａｔｅを与えるクエリ・サーバ６００が特徴ストアクラス（ｆｓ）として登録される場合があり、ここで、２つの異なるクエリ・サーバ６００（ノード１０．１０．０．６および１０．１０．０．７にいてホストされる）が同じ日付の特徴を与える。
’ｃｌａｓｓ＝ｆｓ，ｆｅａｔｕｒｅ＝ＩＰＢｙＮａｍｅＤａｔｅ，ｄａｔｅ＝２０１２０４０１，ａｄｄｒｅｓｓ＝１０．１０．０．６，ｐｏｒｔ＝１２３４５’
’ｃｌａｓｓ＝ｆｓ，ｆｅａｔｕｒｅ＝ＩＰＢｙＮａｍｅＤａｔｅ，ｄａｔｅ＝２０１２０４０１，ａｄｄｒｅｓｓ＝１０．１０．０．７，ｐｏｒｔ＝１２３４５’
’ｃｌａｓｓ＝ｆｓ，ｆｅａｔｕｒｅ＝ＩＰＢｙＮａｍｅＤａｔｅ，ｄａｔｅ＝２０１２０４０２，ａｄｄｒｅｓｓ＝１０．１０．０．７，ｐｏｒｔ＝１２３４５’
【００５１】
クエリ・インターフェースは、レジストリ・サーバ５００において、’ｃｌａｓｓ＝ｆｓ，ｆｅａｔｕｒｅ＝ＩＰＢｙＮａｍｅＤａｔｅ’を要求することによって、名称ＩＰＢｙＮａｍｅＤａｔｅを有する特徴を与える全てのクエリ・サーバ６００を位置特定することができる。このクエリは、２つの登録されたクエリ・サーバ６００を返す。日付２０１２／０４／０２からの情報のみが所望される場合、クエリ・インターフェースは、
’ｃｌａｓｓ＝ｆｓ，ｆｅａｔｕｒｅ＝ＩＰＢｙＮａｍｅＤａｔｅ，ｄａｔｅ＝２０１２０４０２’
を要求する。
【００５２】
次に、クエリ・インターフェースは、結果として得られるクエリ・サーバ６００の組にクエリを直接送信する。このクエリ・サーバの組は、ＩＰアドレスおよびポート番号によって識別される。レジストリ・サーバ５００は、非常に高性能のサービスを提供するが、実際には、クエリサービスはルックアップをキャッシュし、実行される全てのクエリについて登録ルックアップを実行する必要はない。
【００５３】
サブスクリプション・サーバ
例示的なサブスクリプション・サーバ７００は、以下で図１１および図１２と合わせて更に検討するように、新たなクライアント／パターン・サブスクリプション・プロセス７１０および新たなマッチング特徴ストリーミング・プロセス７５０を含む。
【００５４】
図１１は、本発明の態様を組み込む新たなクライアント／パターン・サブスクリプション・プロセス７１０の例示的な実施態様を説明するフローチャートである。図１１に示すように、例示的な新たなクライアント／パターン・サブスクリプション・プロセス７１０は、ステップ７１５中に、最初にリスンし、クライアントからキー・マッチパターン（ＫＭＰ）を受信する。
【００５５】
次に、ステップ７２０中に、新たなクライアント／パターン・サブスクリプション・プロセス７１０は、キー・マッチパターンを特徴ストア４００に登録し、ステップ７２５中に、クライアント／マッチング・パターンをサブスクライバ・リストに記憶する。
【００５６】
ステップ７３０中に、新たなクライアント／パターン・サブスクリプション・プロセス７１０が、クライアントが切断したことを検出すると、ステップ７３５中に、クライアントはサブスクライバ・リストから除去される。
【００５７】
ステップ７４０中に、新たなクライアント／パターン・サブスクリプション・プロセス７１０が、ＫＭＰを有する他のクライアントが接続されていないことを検出する場合、ステップ７４５中に、新たなクライアント／パターン・サブスクリプション・プロセス７１０は、ＫＭＰを特徴ストアからサブスクライブ解除する。次に、プログラム制御はリスニング・ステップ７１５に戻る。
【００５８】
図１２は、本発明の態様を組み込む新たなマッチング特徴ストリーミング・プロセス７５０の例示的な実施態様を説明するフローチャートである。図１２に示すように、ステップ７６０中に、例示的な新たなマッチング特徴ストリーミング・プロセス７５０は、最初に、特徴ストア４００から、登録されたマッチング・パターンのための新たな特徴を受信する。次に、新たなマッチング特徴ストリーミング・プロセス７５０は、ステップ７６５中に、マッチング・パターンが新たな特徴に適合するクライアントをルックアップし、ステップ７７０中に、新たに受信した特徴のマッチング・パターンをサブミットしたクライアントにこれらの新たな特徴を転送する。次に、プログラム制御はステップ７５５に戻る。
【００５９】
図１３は、本発明の態様によるセキュリティ脅威の例示的な解析８００を示す。例示的な解析８００は、様々なロケーション、データ・ソースおよび期間から相関イベントを自動的に抽出する。
【００６０】
サイバー・セキュリティ攻撃はますます高度になっており、それらを検出または調査するために、大量の多種多様なデータの解析を必要とする。インシデントへのタイムリーな対応は、データのほぼリアルタイムの解析を必要とする一方、調査は、大きな時間窓に及ぶ履歴データへのアクセスを必要とする。
【００６１】
例示的な解析８００は、５つの段階８１０−１〜８１０−５において既知の悪意のあるまたは不審な外部マシン（その完全修飾ドメイン名８０５が与えられる）の影響範囲を解析する。これによって、１つの相関段階８０１−ｉの出力が、次の段階（複数の場合もある）８１０−ｉ＋１への入力として供給される。段階８１０−１において、例示的な解析８００は、外部マシンの調査中の外部ドメイン名８０５に関する全てのＩＰアドレスをルックアップする。その後、解析８００は、関連する不審な外部インフラストラクチャに関する知識を拡張させる。
【００６２】
段階８１０−２において、例示的な解析８００は、履歴およびリアルタイム両方で、これらのＩＰアドレスの任意のものを解決する全ての他の名前を見つける。これによって、本発明による知識は、（例えば、ブラックリストまたは外部調査報告により）悪意のあるアクティビティをホスティングしていると報告されたかまたは（例えば、ボットネット解析により）悪意のあるアクティブティのソースであるとしてローカルで検出された単一のシステムから、このシステムに関係するより大きなネットワークインフラストラクチャへと拡張される。
【００６３】
段階８１０−３において、例示的な解析８００は、調査期間（例えば、１ヶ月）の間にこれらの名前のうちの任意のものについて返された全てのＩＰアドレスをルックアップする。この時点において、解析は、インシデントに関連する場合がある外部インフラストラクチャに関する知識を拡張させており、この期間中に、入力の変化を伴って収集されたＤＮＳデータを３回調べている。これは並列処理するのが難しい動作である。
【００６４】
解析８００は次に、影響を受ける内部デバイスの範囲を解析する。段階８１０−４において、例示的な解析８００は、監視されるネットワークの「外側」から「内側」に解析を移し、外部名（ＤＮＳメッセージ）のうちの任意のものをルックアップするか、または外部ＩＰアドレスのうちの任意のものに接続されている（ネットワークフロー）かあるいはその両方の全ての内部デバイスを求める。フローおよびルックアップは内部ＩＰアドレスを送達する。これらの内部ＩＰアドレスは、段階８１０−４内で（履歴ＤＨＣＰ／ＡＲＰ情報を用いて）自動的にＭＡＣアドレスに変換され、次に様々なデバイス（例えば、無線ＭＡＣアドレスおよび有線ＭＡＣアドレスを単一のマシンに一体化する）に展開される。
【００６５】
次に、解析８００は、原因／影響解析およびリスク評価を実行する。段階８１０−５において、これらのデバイスから開始して、例示的な解析８００は、いずれの認証情報がこれらのデバイスにおいて用いられてきたか（ＳＳＯ、認証ログ）、およびこれらの不審なデバイスにおいて晒された可能性があるか、またはいずれの値アセットがこれらのデバイスからアクセスされたか（ネットワークフロー、高価値アセット情報）をルックアップする。
【００６６】
更なる調査されるデバイスの数は、ユーザ認証情報、または価値のあるアセットをホスティングしているアクセスされたサーバの特権に従ってそれらのデバイスを優先付けすることにより低減することができる。
【００６７】
例示的なシステムおよび製造品の詳細
当業者であれば理解するように、本発明の態様は、システム、方法またはコンピュータ・プログラム製品として実現することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または本明細書において「回路」、「モジュール」もしくは「システム」と全て包括して呼ぶことができる、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。更に、本発明の態様は、コンピュータ可読プログラムコードが実現された１つまたは複数のコンピュータ可読媒体において実現されるコンピュータ・プログラム製品の形態をとることができる。
【００６８】
本発明の１つもしくは複数の実施形態、またはその要素は、メモリと、メモリに結合され、例示的な方法ステップを実行するように動作可能な少なくとも１つのプロセッサとを備える装置の形態で実施することができる。
【００６９】
１つまたは複数の実施形態は、例えば、プロセッサと、メモリと、例えばディスプレイおよびキーボードによって既知の方法で形成される入力／出力インターフェースとを備える汎用コンピュータまたはワークステーション上で実行されるソフトウェアを利用することができる。メモリは、例えば、本明細書において説明する様々なプロセスを実施するためのコードを記憶することができる。
【００７０】
本明細書において用いられる「プロセッサ」という用語は、例えば、ＣＰＵ（中央処理装置）または他の形態の処理回路部あるいはその両方を備える処理デバイス等の任意の処理デバイスを含むように意図される。更に、「プロセッサ」という用語は、２つ以上の個々のプロセッサを指すことができる。「メモリ」という用語は、例えば、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（読み出し専用メモリ）、固定メモリデバイス（例えば、ハードドライブ）、取り外し可能メモリデバイス（例えば、ディスケット）、フラッシュメモリ等の、プロセッサまたはＣＰＵに関連付けられたメモリを含むように意図される。
【００７１】
更に、本明細書において用いられる「入力／出力インターフェース」という語句は、例えば、処理ユニットにデータを入力するための１つまたは複数のメカニズム（例えば、マウス）、および処理ユニットに関連付けられた結果を提供するための１つまたは複数のメカニズム（例えば、プリンタ）を含むように意図される。プロセッサ、メモリ、ならびにディスプレイおよびキーボード等の入力／出力インターフェースは、例えば、データ処理ユニットの一部としてバスを介して相互接続することができる。適切な相互接続は、コンピュータネットワークとインターフェースするために提供することができるネットワークカード等のネットワーク・インターフェース、およびメディアとインターフェースするために提供することができるディスケットまたはＣＤ−ＲＯＭドライブ等のメディアインターフェースにも提供することができる。
【００７２】
したがって、本明細書において説明されるように、本発明の方法を実行するための命令またはコードを含むコンピュータソフトウェアは、関連するメモリデバイス（例えば、ＲＯＭメモリ、固定メモリまたは取り外し可能メモリ）のうちの１つまたは複数に記憶することができ、利用される準備が整うと、部分的にまたは全体が（例えば、ＲＡＭ内に）ロードされ、ＣＰＵによって実施される。そのようなソフトウェアは、限定ではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含むことができる。
【００７３】
プログラムコードを記憶するかまたは実行するか、あるいはその両方を行うのに適したデータ処理システムは、システムバスを通じてメモリ素子に直接または間接的に結合された少なくとも１つのプロセッサを備える。メモリ素子は、プログラムコードの実際の実施中に用いられるローカル・メモリと、バルクストレージと、実施中にバルクストレージからコードを取り出さなくてはならない回数を低減するために少なくとも何らかのプログラムコードの一時的なストレージを提供するキャッシュメモリとを含むことができる。
【００７４】
入力／出力またはＩ／Ｏデバイス（キーボード、ディスプレイ、ポインティングデバイス等を含むがこれらに限定されない）は、（バス等を介して）直接、または介在するＩ／Ｏコントローラ（明確にするために省かれる）を通じてシステムに結合することができる。
【００７５】
ネットワーク・インターフェース等のネットワーク・アダプタは、データ処理システムが、介在するプライベート・ネットワークまたは公衆ネットワークを通じて、他のデータ処理システムまたは遠隔プリンタまたは記憶デバイスに結合されることを可能にするシステムにも結合することができる。モデム、ケーブルモデムおよびイーサネット（Ｒ）カードは、現在利用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【００７６】
特許請求の範囲を含めて、本明細書において用いられるとき、「サーバ」は、サーバ・プログラムを実行する物理的なデータ処理システムを含む。そのような物理的サーバは、ディスプレイおよびキーボードを含む場合も含まない場合もあることが理解されよう。
【００７７】
上記のように、本発明の態様は、コンピュータ可読プログラムコードが実現された１つまたは複数のコンピュータ可読において実現されるコンピュータ・プログラム製品の形態をとることができる。すなわち、１つまたは複数の配線を有するポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、ポータブル小型ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、または上記の任意の適切な組合せを含む。
【００７８】
コンピュータ可読信号媒体は、例えば、ベースバンドにおいてまたは搬送波の一部として、コンピュータ可読プログラムコードが実現された伝播データ信号を含むことができる。そのような伝播信号は、限定ではないが、電磁、光またはそれらの任意の適切な組合せを含む様々な形態のうちの任意の形態をとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でなく、命令実行システム、装置もしくはデバイスによって用いられるかまたはそれらと接続されるプログラムを通信、伝播またはトランスポートすることができる、任意のコンピュータ可読媒体とすることができる。
【００７９】
コンピュータ可読媒体上で実現されるプログラムコードは、限定ではないが、無線、有線、光ファイバーケーブル、ＲＦ等または上記の任意の適切な組合せを含む、任意の適切な媒体を用いて送信することができる。
【００８０】
本発明の態様のための動作を実行するコンピュータ・プログラムコードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語または同様のプログラミング言語等の従来の手続き型プログラミング言語等を含め、１つまたは複数のプログラミング言語の任意の組合せで書くことができる。プログラムコードは、完全にユーザコンピュータ上で実行することもできるし、スタンドアローンソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行することもできるし、部分的にユーザのコンピュータ上で、かつ部分的に遠隔コンピュータ上で実行することもできるし、完全に遠隔コンピュータまたはサーバ上で実行することもできる。後者のシナリオでは、遠隔コンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続することもできるし、（例えば、インターネットサービスプロバイダを用いてインターネットを通じて）外部コンピュータへの接続を行うこともできる。
【００８１】
本発明の態様を、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して以下で説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ・プログラム命令によって実施することができることが理解されよう。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実施する手段を作成するように、汎用コンピュータ、専用コンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供され、マシンを作り出すことができる。
【００８２】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／動作を実施する命令を含む製品を製造するように、コンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能データ処理装置または他のデバイスに特定の方式で機能するように指示することができる。
【００８３】
また、コンピュータ・プログラム命令を、コンピュータまたは他のプログラム可能装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／動作を実施するためのプロセスを提供するように、コンピュータ実装プロセスを生成させるべく、コンピュータ、他のプログラム可能データ処理装置または他のデバイス上にロードし、一連の動作ステップをコンピュータ、他のプログラム可能装置または他のデバイス上で実行することができる。
【００８４】
図に示すフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。これに関して、フローチャートまたはブロック図内の各ブロックは、指定の論理関数（複数の場合もある）を実施するための１つまたは複数の実行可能命令を含むモジュール、セグメントまたはコード部分を表すことができる。いくつかの代替的な実施態様において、ブロックに示される機能は、図に示すのと異なる順序で生じる場合があることにも留意するべきである。例えば、連続して示される２つのブロックは、実際に、実質的に同時に実行される場合もあるし、関与する機能／動作に応じて場合によっては逆の順序で実行される場合もある。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行する専用ハードウェアベースのシステム、または専用ハードウェアおよびコンピュータ命令の組合せによって実施することができることに留意されたい。
【００８５】
本明細書に記載の方法ステップは、例えば、本明細書に記載のように、そのようなステップを実行するようにプログラムされた汎用コンピュータ、またはそのようなステップを実行するためのハードウェアに関係することができる。更に、例えば、データストリームを取得しこのストリームを符号化することを含む本明細書に記載の方法ステップは、データストリームが取得されたカメラまたはマイクロフォン等の物理的なセンサに関連付けることもできる。
【００８６】
本明細書に記載の方法のうちの任意のものは、コンピュータ可読記憶媒体上に実現される別個のソフトウェアモジュールを備えるシステムを提供する追加のステップを含むことができることに留意するべきである。次に、方法ステップは、上記のように、１つまたは複数のハードウェアプロセッサ５０２上で実行される、システムの別個のソフトウェアモジュールまたはサブモジュールあるいはその両方を用いて実行することができる。いくつかの場合、専用ハードウェアを用いて本明細書に記載の機能のうちの１つまたは複数を実施することができる。更に、コンピュータ・プログラム製品は、別個のソフトウェアモジュールを有するシステムを提供することを含む、本明細書に記載の１つまたは複数の方法ステップを実行するよう実装されるようになっているコードを有するコンピュータ可読記憶媒体を備えることができる。
【００８７】
任意の場合に、本明細書に示すコンポーネントは、様々な形態のハードウェア、ソフトウェアまたはそれらの組合せにおいて実施することができることを理解するべきである。様々な形態は、例えば、特定用途向け集積回路（複数の場合もある）（ＡＳＩＣＳ）、機能回路、関連メモリを有する１つまたは複数の適切にプログラムされた汎用デジタルコンピュータ等である。本明細書において提供される本発明の教示を与えられると、当業者であれば、本発明のコンポーネントの他の実施態様を検討することができるであろう。
【００８８】
本明細書において用いられる用語は、特定の実施形態を説明する目的のみであり、本発明を限定することを意図していない。本明細書において用いられるとき、単数形「a」、「an」および「the」は、文脈により明らかに別段の指示がない場合、複数形も含むことを意図される。本明細書において用いられるとき、「含む（「comprises」または「comprising」あるいはその両方）」という用語は、述べられた特徴、完全体、ステップ、動作、要素またはコンポーネント、あるいはそれらの組合せの存在を指定するが、１つもしくは複数の他の特徴、完全体、ステップ、動作、要素、コンポーネントまたはそれらのグループ、あるいはこうしたものの組合せの存在または追加を排除するものではない。
【００８９】
以下の特許請求の範囲における、全ての手段またはステップおよび機能要素の対応する構造、材料、動作および均等物は、具体的に特許請求される他の特許請求される要素と組み合わせて機能を実行するための任意の構造、材料または動作を含むことが意図される。本発明の記載は、例証および説明の目的で提示されたが、網羅的であることも、本発明を開示される形態に限定することも意図していない。本発明の範囲および趣旨から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。実施形態は、本発明の原理および実際の応用形態を最も良く説明し、他の当業者が、検討される特定の使用に適した様々な変更形態を有する様々な実施形態について本発明を理解するのを可能にするために選ばれ、説明された。
【図１】
0006490059.tif 000002
【図２】
0006490059.tif 000003
【図３】
0006490059.tif 000004
【図４】
0006490059.tif 000005
【図５】
0006490059.tif 000006
【図６】
0006490059.tif 000007
【図７】
0006490059.tif 000008
【図８】
0006490059.tif 000009
【図９】
0006490059.tif 000010
【図１０】
0006490059.tif 000011
【図１１】
0006490059.tif 000012
【図１２】
0006490059.tif 000013
【図１３】
0006490059.tif 000014