(57)【要約】      （修正有）【課題】コンピュータ装置のオペレーティングシステムで発生する異常イベントを検出システムおよび方法を提供する。【解決手段】方法は、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生するイベントを検出する。また、検出されたイベントのコンテキストを判定し、検出されたイベントの判定されたコンテキストについて選択された特徴に基づいて、検出されたイベントのコンボリューションを生成する。さらに、検出されたネットワーク内のクライアント装置で発生するイベントの頻度に関するデータを含むデータベースをポーリングすることによって、生成されたコンボリューションのポピュラリティを判定する。ここで、クライアント装置で検出されたイベントは、コンピュータ装置で検出されたイベントに対応する。判定されたポピュラリティが閾値以下の場合、検出されたイベントが異常イベントであると判定する。【選択図】図２
2019079492.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのインタセプタによって、ソフトウェアプロセスの実行に関連付けられるオペレーティングシステムで発生するイベントを検出し、
エージェントによって、前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられるイベントのコンテキストを取得し、
前記イベントの特定された１以上の特徴に基づいて、前記イベントのコンボリューションを生成し、
比較モジュールを用いて、前記生成されたイベントのコンボリューションのポピュラリティを判定し、
前記生成されたコンボリューションのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常として分類する
ことを含む、コンピュータ装置のオペレーティングシステムにおける異常なイベントを検出する方法。
【請求項２】
前記イベントのコンテキストは、前記オペレーティングシステムでソフトウェアプロセスを実行する際に発生する前記イベントの発生に直接影響する、イベント発生時のオペレーティングシステムの状態全体を含む、請求項１に記載の方法。
【請求項３】
前記イベントのコンテキストは、前記イベントの発生時のコールスタックを含む、請求項１に記載の方法。
【請求項４】
前記コールスタックから、所定の時点で実行されているプロセスおよび機能のリスト、前記プロセスおよび機能を含むモジュールのリスト、ならびに、モジュールに転送されているデータの種類およびすべてのパラメータの値を取得することをさらに含む、請求項３に記載の方法。
【請求項５】
前記イベントのコンテキストは、前記イベントの発生前にソフトウェアプロセスにロードされたモジュールのリストをさらに含む、請求項３に記載の方法。
【請求項６】
前記モジュールのリストのうち少なくとも一つのモジュールが、実行開始されたプロセスの機能を拡張するコードを含むソフトウェアオブジェクトである、請求項５に記載の方法。
【請求項７】
前記モジュールのリストは、オペレーティングシステム・カーネルモジュールおよびダイナミック・ライブラリを含む、請求項５に記載の方法。
【請求項８】
前記イベントのコンテキストは、前記イベントの発生時に実行されたコードを含む前記ソフトウェアプロセスのメモリ部のダンプを含む、請求項１に記載の方法。
【請求項９】
前記イベントの特定された特徴として、前記ソフトウェアプロセスのメモリ部のダンプから、間接呼び出しの有無、位置独立コード、および自己書き換えコードを含む１以上の特徴を取得することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記イベントのコンテキストは、最終分岐レコード（LBR：Last  Branch  Record）ファシリティおよび分岐トレースストア（BTS:  Branch  Trace  Store）の少なくとも一つからのジャンプに関する情報を含む、請求項１に記載の方法。
【請求項１１】
前記インタセプタは少なくともイベント追跡モジュールを含む、請求項１に記載の方法。
【請求項１２】
前記エージェントによって、前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられる前記イベントのコンテキストを取得する処理においてさらに、
前記イベントの特徴の特定が可能な形でコンテキストを表示するよう、前記取得したコンテキストを変換することを含む、請求項１に記載の方法。
【請求項１３】
前記変換は、選択された特徴の量子化、前記選択された特徴のソート、前記選択された特徴の結合、貼付、前記選択された特徴のグループ化、前記選択された特徴のデータセットの設定、値の表置換、前記選択された特徴の値の算出、前記選択された特徴のデータ符号化、前記選択された特徴のデータの正規化のうち少なくとも一つを含む、請求項１２に記載の方法。
【請求項１４】
前記変換は、前記選択された特徴の正規化を含み、コールスタックに含まれるモジュール用のデバッグシンボルおよび前記ソフトウェアプロセスに関連付けられるメモリ部のダンプに関する情報を前記正規化のために取得する、請求項１２に記載の方法。
【請求項１５】
前記コンテキストは、逆アセンブルおよびエミュレーションによって変換される、請求項１２に記載の方法。
【請求項１６】
前記特定された特徴は、間接呼び出しの有無、位置独立コード、および自己書き換えコードのうち少なくとも一つを含む、請求項１５に記載の方法。
【請求項１７】
前記イベントが検出されたコンピュータ装置が存在するサブネットワークのコンテキストにおいてコンボリューションのポピュラリティを判定する、請求項１に記載の方法。
【請求項１８】
前記イベントのコンボリューションのグローバル・ポピュラリティを判定することをさらに含む、請求項１に記載の方法。
【請求項１９】
前記イベントのコンボリューションのポピュラリティを判定する処理は、
前記イベントのコンボリューションのポピュラリティに関する情報を含むデータベースをクエリし、
前記ポピュラリティに関する情報がデータベースにないと判定された場合、現時点で収集されている検出イベント数およびクライアント総数についてネットワークから情報を収集し、その後でポピュラリティを算出することを含む請求項１に記載の方法。
【請求項２０】
（ａ）前記ソフトウェアプロセスの実行に関連付けられる前記オペレーティングシステムで発生する前記イベントを検出し、（ｂ）前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられる前記イベントのコンテキストを取得するステップが、クライアントサーバシステムのクライアントとして前記コンピュータ装置によって行われ、
（ｃ）前記イベントの特定された１以上の特徴に基づいて、前記イベントのコンボリューションを生成し、（ｄ）前記比較モジュールを用いて、前記生成されたイベントのコンボリューションのポピュラリティを判定し、（ｅ）前記生成されたコンボリューションのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常として分類するステップが、前記クライアントサーバシステムのサーバによって行われ、
前記イベントの特定された１以上の特徴に基づいて前記イベントのコンボリューションを生成するステップは、前記サーバによって前記クライアントの前記エージェントから前記イベントのコンテキストを取得することをさらに含む、
請求項１に記載の方法。
【請求項２１】
（ａ）前記ソフトウェアプロセスの実行に対応して前記オペレーティングシステムで発生する前記イベントを検出し、（ｂ）前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられるイベントのコンテキストを取得し、（ｃ）前記イベントの特定された１以上の特徴に基づいて、前記イベントのコンボリューションを生成するステップが、クライアントサーバシステムのクライアントとして前記コンピュータ装置によって行われ、
（ｄ）前記比較モジュールを用いて、前記生成されたイベントのコンボリューションのポピュラリティを判定し、（ｅ）前記生成されたコンボリューションのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常として分類するステップが、前記クライアントサーバシステムのサーバによって行われ、
前記生成されたコンボリューションは、前記サーバによって前記クライアントの前記エージェントから取得する、請求項１に記載の方法。
【請求項２２】
前記コンボリューションは、前記イベントのハッシュおよびユークリッド空間内の前記イベントのベクトルのうち少なくとも一つを含む、請求項１に記載の方法。
【請求項２３】
エージェントおよびオペレーティングシステムにインストールされた少なくとも一つのインタセプタを含むクライアント装置を備え、該クライアント装置は、
少なくとも一つのインタセプタによって、ソフトウェアプロセスの実行に対応してオペレーティングシステムで発生するイベントを検出し、
前記エージェントによって、前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられるイベントのコンテキストを取得し、
サーバは、
前記イベントの特定された１以上の特徴に基づいて生成された前記イベントのコンボリューションを取得し、
比較モジュールを用いて、前記生成されたイベントのコンボリューションのポピュラリティを判定し、
前記生成されたコンボリューションのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常として分類することを含む、
コンピュータ装置のオペレーティングシステムにおける異常なイベントを検出するシステム。
【請求項２４】
前記イベントのコンボリューションは、前記イベントの特定された１以上の特徴に基づいて前記クライアント装置によって生成され、前記エージェントを用いて前記クライアント装置から取得されることを含む、請求項２３に記載のシステム。
【請求項２５】
前記イベントのコンボリューションは、前記イベントの特定された１以上の特徴に基づいて前記サーバによって生成され、前記イベントのコンテキストは前記クライアント装置の前記エージェントから前記サーバによって取得されることを含む、請求項２３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してコンピュータセキュリティの分野に関し、特に、デバイスソフトウェアに存在する脆弱性の悪用からコンピュータ装置を防御するシステムおよび方法に関する。
【背景技術】
【０００２】
今日の技術界において多様なソフトウェアアプリケーションが広く利用されている中で、悪性ソフトウェアによってコンピュータ装置に侵入する最も普及している方法の一つとして、特定の装置にインストールされたソフトウェアに存在する脆弱性の悪用がある。
【０００３】
脆弱性の悪用を回避するために、企業および／または個人は、脆弱性自体を除去する形式の受動的方法、および、実際の脆弱性の悪用を検出する形式の能動的方法の両方を使用する。受動的方法は既知の脆弱性に対して使用し、能動的方法は既知及び不明の脆弱性の両方に対して使用する。
【０００４】
従来の検出技術は、事実、既知の技術やメカニズムを使用して脆弱性の現実の悪用を検出することができる。ただし、これらの方法では残念ながら新たな悪用の原理やメカニズムを用いた新たな脆弱性の悪用技術を検出して回避することはできない。たとえば、シェルコード（ソフトウェアの脆弱性を悪用する際にペイロードとして使用されるコードの小さな断片）を実行不可能にするため、スタック内での実行を阻止する技術が開発されてきた。しかし、これに代わってreturn-oriented  programming技術が出現してきた。一般的に、return-oriented  programmingとは、実行不可能メモリやコード署名などのセキュリティ防御が存在する場合に攻撃者がコードを実行できるようにするコンピュータセキュリティ悪用技術である。
【０００５】
既存の防御技術はreturn-oriented  programmingに対して無力であることが証明されている。そこで、こうした攻撃からの防御のため、米国特許出願公開第２０１６／０１９６４２８号明細書等に記載されている新たな解決法が開発されている。これらの新たな解決法を鑑みると、コンピュータシステムの機能の通常動作からの逸脱を検出するというニーズが依然として残っている。かかる逸脱は、ソフトウェアの脆弱性を悪用した技術によってコンピュータシステムが攻撃されたことを示している可能性がある。この課題を解決できれば、常に変化し進化する脆弱性悪用技術から離れて、技術が変化しても変わらない攻撃の外的兆候に注目できる。
【発明の概要】
【０００６】
本開示では、コンピュータ装置のオペレーティングシステムで発生する異常なイベントを検出するための例示的なシステムおよび方法を提供する。具体的には、本開示におけるシステムおよび方法は、ソフトウェアの実行プロセス中にクライアント装置のオペレーティングシステムで発生する異常なイベントを検出する。
【０００７】
例示的一側面では、コンピュータ装置のオペレーティングシステムで発生する異常なイベントを検出する方法を提供する。この側面では、当該方法は、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生する少なくとも一つのイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した、当該少なくとも一つの検出されたイベントのコンテキストを判定し、判定された当該少なくとも一つの検出されたイベントのコンテキストについて選択された特徴に基づいて、当該少なくとも一つの検出されたイベントのコンボリューションを生成し、複数のクライアント装置で発生し検出される、当該少なくとも一つの検出されたイベントに対応する複数のイベントの頻度に関するデータを含むデータベースをポーリングすることにより、当該少なくとも一つの検出されたイベントについて生成されたコンボリューションのポピュラリティを判定し、判定されたポピュラリティが閾値以下の場合、当該少なくとも一つの検出されたイベントが異常なイベントであると判定する。
【０００８】
例示的方法の別の側面では、少なくとも一つの検出されたイベントのコンテキストを判定する処理において、少なくとも一つの検出されたイベントの発生時のコールスタックを判定する。ここで、コールスタックは、現在実行されている処理および機能のリスト、処理および機能を含むモジュールのリスト、および、モジュールに転送されているデータの種類や全パラメータの値のうち少なくとも一つを提供する。
【０００９】
例示的方法の別の側面では、少なくとも一つの検出されたイベントのコンテキストを判定する処理において、少なくとも一つの検出されたイベントの発生時に実行されているコードを含むソフトウェアプロセスのアドレス空間のダンプ、少なくとも最終分岐レコード（Last  Branch  Record）および分岐トレースストア（Branch  Trace  Store）からのジャンプに関連するデータ、および、少なくとも一つの検出されたイベントが発生する前にソフトウェアプロセスにロードされたモジュールのリストのうち少なくとも一つを判定する。
【００１０】
例示的方法の別の側面では、少なくとも一つの検出されたイベントのコンボリューションを生成する処理は、判定されたコンテキストについて選択された特徴の量子化、判定されたコンテキストについて選択された特徴のソート、判定されたコンテキストについて選択された特徴の結合、判定されたコンテキストについて選択された特徴のグループ化、判定されたコンテキストについて選択された特徴のデータセットの設定、判定されたコンテキストについて選択された特徴の値の表形式化、判定されたコンテキストについて選択された特徴の値の算出、判定されたコンテキストについて選択された特徴のデータ符号化、判定されたコンテキストについて選択された特徴の正規化のうち、少なくとも一つの処理を含む。
【００１１】
別の例示的側面では、当該方法は、判定されたコンテキストについて選択された特徴を文字列にコンボリューションしてハッシュ値を作成することによって、少なくとも一つの検出されたイベントのコンボリューションを生成し、作成したハッシュ値をデータベース内のハッシュ値のリストと比較することによって、生成されたコンボリューションのポピュラリティを判定して、複数のクライアント装置で発生している複数の検出されたイベントの頻度を判定する処理を含む。
【００１２】
別の例示的側面では、当該方法は、判定されたコンテキストについて選択された特徴を座標値にコンボリューションしてベクトルを作成することにより、少なくとも一つの検出されたイベントのコンボリューションを生成し、作成されたベクトル値をデータベース内のベクトルのリストと比較することによって、生成されたコンボリューションのポピュラリティを判定して、複数のクライアント装置で発生している複数の検出されたイベントの頻度を判定する処理を含む。
【００１３】
別の例示的側面では、当該方法は、少なくとも一つの検出されたイベントについて生成されたコンボリューションを、予め生成された安全なイベントのコンボリューションのリストと比較し、少なくとも一つの検出されたイベントについて生成されたコンボリューションが予め生成された安全なイベントのコンボリューションのリストにない場合、少なくとも一つの検出されたイベントを異常なイベントと判定する処理を含む。
【００１４】
当該方法の別の例示的側面では、複数の検出されたイベントの頻度は、少なくとも一つのイベントが検出された現時点での複数の検出されたイベントの合計数、および、各々少なくとも一つの検出されたイベントが発生したクライアント装置の現時点での合計数のうち少なくとも一つを含む。
【００１５】
当該方法の別の例示的側面では、データベースのポーリング処理は、アクセス可能なすべてのサブネットワーク内の第１の複数のクライアント装置に関連付けられるグローバルデータベースのポーリング処理、および、複数装置を含む一つのサブネットワーク内の第２の複数のクライアント装置に関連付けられるローカルデータのポーリング処理のうち少なくとも一つを含む。
【００１６】
別の例示的側面では、当該方法は、少なくとも一つの検出されたイベントが異常なイベントであると判定された場合にソフトウェアプロセスを削除する処理、および、隔離する処理のうち少なくとも一つを含む。
【００１７】
例示的一側面において、コンピュータ装置のオペレーティングシステムで発生する異常なイベントを検出するためのシステムを提供する。例示的一側面では、システムは、複数のクライアント装置内で発生する複数の検出されたイベントの頻度に関連するデータを含むデータベースとソフトウェアエージェントとを含む。ソフトウェアエージェントは、コンピュータ処理装置によって実行された場合、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生する少なくとも一つのイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した少なくとも一つの検出されたイベントのコンテキストを判定し、判定された少なくとも一つの検出されたイベントのコンテキストの選択された特徴に基づいて、少なくとも一つの検出されたイベントのコンボリューションを生成し、複数のクライアント装置で発生する少なくとも一つの検出されたイベントに対応する複数の検出されたイベントの頻度に関するデータを含むデータベースをポーリングすることにより、少なくとも一つの検出されたイベントの生成されたコンボリューションのポピュラリティを判定し、判定されたポピュラリティが閾値以下の場合、少なくとも一つの検出されたイベントが異常なイベントであると判定する。
【００１８】
別の例示的側面では、コンピュータ装置で発生する異常なイベントを検出するための方法を提供する。この側面では、当該方法は、安全なコンピュータ装置のオペレーティングシステムで発生する少なくとも一つの安全なイベントを検出し、安全なコンピュータ装置のオペレーティングシステムで発生する少なくとも一つの検出された安全なイベントのコンテキストを判定し、判定された少なくとも一つの検出された安全なイベントのコンテキストの選択された特徴に基づいて、少なくとも一つの検出された安全なイベントの少なくとも一つのコンボリューションを生成し、少なくとも一つのデータベースに、少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションを格納し、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生している少なくとも一つの未分類のイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した少なくとも一つの検出された未分類のイベントのコンテキストを判定し、少なくとも一つの検出された未分類のイベントの判定されたコンテキストについて選択された特徴に基づいて、少なくとも一つの検出された未分類のイベントのコンボリューションを生成し、少なくとも一つの検出された未分類のイベントの生成されたコンボリューションを、少なくとも一つのデータベースに格納されている少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションと比較することによって、少なくとも一つの検出された未分類のイベントが異常なイベントであるか判定する処理を含む。
【００１９】
別の例示的側面では、コンピュータ装置で発生する異常なイベントを検出するためのシステムを提供する。この側面では、システムは、少なくとも一つのデータベースと第１のソフトウェアエージェントを含む。第１のソフトウェアエージェントは、コンピュータ処理装置によって実行された場合、安全なコンピュータ装置のオペレーティングシステムで発生する少なくとも一つの安全なイベントを検出し、安全なコンピュータ装置のオペレーティングシステムで発生した少なくとも一つの検出された安全なイベントのコンテキストを判定し、判定された少なくとも一つの検出された安全なイベントのコンテキストの選択された特徴に基づいて、少なくとも一つの検出された安全なイベントの少なくとも一つのコンボリューションを生成し、少なくとも一つのデータベースに、少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションを格納する。当該システムはさらに第２のソフトウェアエージェントを含む。第２のソフトウェアエージェントは、コンピュータ処理装置によって実行された場合、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生している少なくとも一つの未分類のイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した少なくとも一つの検出された未分類のイベントのコンテキストを判定し、少なくとも一つの検出された未分類のイベントの判定されたコンテキストについて選択された特徴に基づいて、少なくとも一つの検出された未分類のイベントのコンボリューションを生成し、少なくとも一つの検出された未分類のイベントの生成されたコンボリューションを、少なくとも一つのデータベースに格納されている少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションと比較することによって、少なくとも一つの検出された未分類のイベントが異常なイベントであるか判定する。
【００２０】
上記の例示的側面の簡単な概要により、本開示の基本的な理解が得られるであろう。この概要は、想定されるすべての側面の包括的な概観ではなく、全ての側面の主要または必要不可欠な要素を特定するものでも、本開示の側面の一部または全部の範囲を画するものでもない。本概要は、単に、以下の本開示の詳細な説明の前置きとして、１以上の側面を簡単に述べるものである。本開示の１以上の側面は、請求の範囲において説明され例示的に提示されている特徴を含む。
【図面の簡単な説明】
【００２１】
本明細書に組み込まれて本明細書の一部を構成する添付の図面は、本開示の１以上の例示的側面を図示するものであり、詳細な説明とともにその原理および実施形態を説明するものである。
【図１】図１は、例示的一側面に係る、クライアントにインストールされたソフトウェアの実行を監視するシステムを示すブロック図である。
【図２】図２は、例示的一側面に係る、イベントのコンボリューションのポピュラリティの評価に基づいて異常なイベントを検出する方法のフローチャートである。
【図３】図３は、例示的一側面に係る、安全なイベントのコンボリューションセットを生成する方法のフローチャートである。
【図４】図４は、例示的一側面に係る、安全なイベントのコンボリューションセットに基づいて異常なイベントを検出する方法のフローチャートである。
【図５】図５は、例示的一側面により本開示のシステムおよび方法が実行される汎用コンピュータシステム（パーソナルコンピュータまたはサーバでもよい）の例を示す図である。
【発明を実施するための形態】
【００２２】
以下、図を用いて複数の側面を説明する。全体を通して、同一の構成要素については同一の参照符号を使用する。以下では、説明のため、１以上の側面を十分に理解できるよう具体的な内容を数多く記載している。ただし、一部またはすべての例において、以下の側面は、以下で詳しく説明されている具体的な設計上の内容を採用しなくとも実行可能であることは明らかであろう。他の例では、１以上の側面を説明しやすくするため、周知の構造や装置をブロック図の形式で示している。以下に、これらの側面の基本的な理解が得られるよう１以上の側面の簡単な概要を記載する。この概要は、想定されるすべての側面の包括的な概観ではなく、全ての側面の主要または必要不可欠な要素を特定するものでも、本開示の側面の一部または全部の範囲を画するものでもない。
【００２３】
本明細書において、「モジュール」（またはプログラムモジュール）は、オペレーティングシステム・カーネルモジュールまたはダイナミック・ライブラリなど、実行されているプロセスの機能を拡張するコードを含むプログラムオブジェクトとみなしてもよい。
【００２４】
本明細書において、「コンボリューション」は、たとえば、イベントの特徴が文字列にコンボリューションされたインテリジェントハッシュ、あるいは、イベントの特徴が座標などにコンボリューションされたベクトルとみなしてもよい。大まかにいって、数学的および論理的演算を実行するためにイベントの特徴（以下、「特徴」）がコンボリューションされる対象であればどのようなものでもよい。たとえば、特徴のコンボリューションとは、特徴を文字列表示、ベクトル表示、あるいはこれらの組合せに任意に変換することである。
【００２５】
本明細書において、「イベント」は、オペレーティングシステム、サービスまたはネットワークの一定の状態について特定された現象でもよい。イベントに関する情報は、何が起こったかを示す、たとえばオペレーティングシステム（またはその一部）からの、ソフトウェアメッセージ等に含まれていてもよい。つまり、オペレーティングシステムからのイベントには、プログラムの挙動に影響するプログラム「外」のものも含まれる。このようなイベントは、順序に関係なく、プログラム実行中にいつでも発生し得ることが理解されるであろう。また、例示的側面では、システム内のイベントには、プロセスの起動、モジュールのロード、ファイル操作、レジストリ操作など、通常多くの種類やタイプが含まれる。さらに、例示的一側面では、イベントのコンテキストは、イベント発生時にその発生に直接影響するオペレーティングシステムの状態全体のことをいう。コンテキスト内容の例は以下に記載する。
【００２６】
一般的に、「異常な」イベントとは、これまでに知られていない状態の発生を示す、オペレーティングシステム、サービスまたはネットワークの一定の状態について特定された現象のことをいう。特定の例では、異常なイベントとは、安全なイベント（すなわち、想定される情報セキュリティポリシーの違反や防止手段の不良、または、セキュリティに関連する可能性がある、まだ知られていない状態の発生を示す、システム、サービスまたはネットワークの一定の状態について特定された現象）である。
【００２７】
図１は、例示的一側面に係る、クライアントにインストールされたソフトウェアの実行を監視するシステムを示すブロック図である。図示するように、ソフトウェアエージェント１１０（「エージェント」）は、クライアント１００側にインストールされている。また、クライアント１００のオペレーティングシステムには、エージェント１１０に接続される１以上のインタセプタ１２０をインストールできる。特定の側面では、当業者に知られているevent  tracing  for  windows（ＥＴＷ）１２０ａがインタセプタとして使用できる。インタセプタ１２０は、オペレーティングシステム内で発生するイベントを検出し、エージェント１１０に直接通知を送信したり、エージェント１１０がアクセスするイベントログ（図１には図示されていないが、ローカルデータベース１６０に格納されている）にエントリしたりすることによって、この検出をエージェント１１０に通知する。
【００２８】
さらに、エージェント１１０は、インタセプタ１２０によって検出され得るシステム内の想定されるすべてのイベント、あるいは、１種類の特定イベントのみ（たとえば、プロセスの起動のみ）のいずれかについての通知を受信してもよい。エージェント１１０は、インタセプタ１２０が検出した特定イベントをエージェントが登録した後に使用される収集モジュール１３０を含んでもよい。収集モジュール１３０は、登録されたイベントのコンテキストを取得する。特定の例では、イベントのコンテキストは、イベント発生前のコールスタックおよびイベント発生時に実行されていたコードを格納するメモリ部のダンプを含む。コールスタックを使用することにより、少なくとも、所定の時点で実行されている処理および機能のリスト、当該処理および機能を格納するモジュールのリスト、ならびに、モジュールによってエクスポートされた関数呼び出し時などにモジュールに転送されているすべてのパラメータの種類および値のうち、１以上が得られる。また、コンテキストは、少なくとも最終分岐レコード（ＬＢＲ）および分岐トレースストア（ＢＴＳ）（参照によって本明細書に内容を取り入れている、Intel（登録商標）Microarchitecture  Codename  Nehalem  Performance  Monitoring  Unit  Programming  Guideで説明されている）といったメモリバッファやレジスタからのジャンプに関する情報を含んでもよい。この側面では、ＬＢＲおよびＢＴＳは、プログラム実行に関する情報（すなわち、ジャンプや実行分岐などのアドレス）を格納している（あるいは、所定のトレースを保持している）。特定の側面では、インタセプタ１２０はイベントを検知するとそのコンテキストを保持し、それが後にエージェント１１０の収集モジュール１３０によって取得される（たとえば、収集モジュール１３０に転送、あるいは、収集モジュール１３０からリクエストされる）。この場合、収集モジュール１３０は要求されたコンテキストすべてまたはコンテキストの特定の部分を独立して受信する必要はない。
【００２９】
例示的側面では、クライアント１１０およびサーバ２００の一方または両方は、コンボリューション生成モジュール１４０をさらに備えることができる。この側面では、収集モジュール１３０が取得したコンテキストは、コンボリューション生成モジュール１４０に送信される。一例では、コンテキストは、クライアント１００にあるコンボリューション生成モジュール１４０に送信されてもよく、別の例では、サーバ２００に送信されてもよい。コンボリューション生成モジュール１４０は、受信したコンテキストから特徴（特徴の例については以下に記載）を抽出し、コンボリューションを生成する。同様に、コンボリューション生成モジュール１４０は、イベントのコンテキストを変換する（以下参照）。上述したとおり、例示的側面におけるコンボリューションは、（特徴が文字列にコンボリューションされる）特定のハッシュだけでなく（特徴が座標にコンボリューションされる）ベクトルなどを対象としたコンボリューションを含む最も広い意味に解釈される。つまり、数学的および論理的演算を実行するためにイベントの特徴がコンボリューションされるあらゆる対象のコンボリューションを含む。任意のアルゴリズムでのイベントのコンボリューションの生成を使用できる。たとえば、ロシア特許出願公開第２，５８０，０３６号等に記載されているように、取得された特徴からファイルのハッシュを生成したり、ロシア特許出願公開第２，６１４，５５７号等に記載されているように、ファイルに対してベクトルを生成したり、ＨＴＭＬページに対して使用できる。ロシア特許出願公開第２，５８０，０３６号および第２，６１４，５５７号は、全体が参照によって本明細書に組み込まれている。
【００３０】
さらに、例示的一側面では、比較モジュール１５０がサーバ２００および／またはクライアント１１０のいずれかに設置されていてもよい。比較モジュール１５０は、生成されたイベントのコンボリューションのポピュラリティを判定し、生成されたコンボリューションを他のコンボリューション（ローカルデータベース１６０又はサーバ２００と通信するリモートデータベース１７０に保持されている安全なコンボリューションセットに含まれるコンボリューション等）と比較する。ローカルデータベース１６０は、イベントログや、特に、モジュールをプロセスにロードするイベントなど以前に検出されたイベントのコンテキストも保持する。
【００３１】
上述したシステムは、クライアント１００にインストールされたソフトウェアの実行を監視するために使用される。監視の結果、クライアント１００にインストールされているソフトウェアの脆弱性が悪用されたことによって起こり得る異常なイベントがオペレーティングシステムで検出される。なお、本開示における「クライアント」１００という用語は、クライアント−サーバパラダイムの中で使用される（すなわち、コンピュータアーキテクチャの要素であってネットワークの要素ではない）。本開示において、クライアント１００とは、サーバ２００のインタフェースによって提供されるエージェント１１０サービスを介してリクエストする、ネットワーク内の任意のコンピュータ装置を指す。サーバ２００とは、クライアント１００のエージェント１１０と通信し、収集されたデータをエージェント１１０から取得し、メッセージおよび命令を送信する（よって、クライアント１００にサービスを提供する）コンピュータ装置を指す。次に、クライアント１００にインストールされたソフトウェアの実行を監視するために、本開示により実現できる方法について説明する。
【００３２】
図２は、例示的一側面に係る、イベントのコンボリューションのポピュラリティの評価に基づいて異常なイベントを検出する方法のフローチャートである。図示するように、ステップ２１０では、クライアント１００側のオペレーティングシステムにおいて、プロセスの実行中にクライアント１００のオペレーティングシステムで発生するイベントを登録するエージェント１１０が起動される。次に、ステップ２２０において、クライアント１００のオペレーティングシステムにインストールされエージェント１１０に接続されたインタセプタ１２０は、オペレーティングシステムで発生しているイベントを検出してエージェント１１０に報告する。エージェント１１０は、ステップ２３０において、発生しているイベントを登録し、収集モジュール１３０によって当該イベントのコンテキストを受信する。
【００３３】
例示的一側面では、コンテキストは、たとえば、少なくともイベントの発生時点のコールスタックを含んでもよい。コールスタックからは、少なくとも、所定の時点で実行されている処理および機能のリスト、当該処理および機能を格納するモジュールのリスト、ならびに、モジュールに転送されているデータの種類およびすべてのパラメータの値が取得される。さらに、コールスタックは、イベントの発生時に実行されていたコードを格納するプロセスのメモリ部（アドレス空間）のダンプ、少なくともＬＢＲおよびＢＴＳからのジャンプに関する情報、および／または、ローカルデータベース１６０に保持されているイベントログなどにおいて情報がアクセス可能なイベントの発生前にプロセスにロードされたモジュールのリストなどを含んでもよい。
【００３４】
コンテキストを取得すると、ステップ２４０において、コンボリューション生成モジュール１４０は、この中から、これらの特徴に基づきイベントのコンボリューションを生成するための特徴を選択する。特定の例では、特徴を選択する前に、取得したコンテキストを変換する必要がある。コンテキストの変換は、解決しようとする課題や解析の目的の観点からデータの表現および形式を最適化することを目的として複数の方法およびアルゴリズムを組み合わせて行う。コンテキストの変換自体は、コンテキストを含むデータの情報コンテンツを変更することを目的としていない。変換は、データが最も効果的に使用されるような形式でコンテキストを表示するために実行される（変換の例は以下に記載）。
【００３５】
例示的側面において、コンボリューションを行うためのデータの変換とは、たとえば、量子化、ソート、結合（貼付）、グループ化、データセットの設定、値の表形式化、値の算出、データ符号化、正規化（スケーリング）などでもよい。
【００３６】
たとえば、コールスタック（ダンプについても同様；以下に例示）は以下の方法で変換される。デバッグシンボルは、コールスタックに含まれるモジュール用に取得され、コールスタックは、デバッグシンボルの使用によって正規化される。
デバッグシンボルをダンプの逆アセンブル結果に適用する前：
【表１】
2019079492.tif 000003
【００３７】
デバッグシンボルを適用した後：
【表２】
2019079492.tif 000004
【００３８】
逆アセンブルおよびエミュレーションによって、取得したダンプに関する一連の特徴（間接呼び出しの有無、位置独立コード、自己書き換えコードなど）が得られる。変換後、特徴が選択されコンボリューションが生成される。上述したように、使用された特徴は、ロードされたモジュールの名称およびロードの順序（イベントログから得られる）；所定時間に実行される処理および機能の名称；これらのモジュールによってエクスポートされる処理および機能の呼び出し前にモジュールに転送されるパラメータの値（コールスタックから得られる）；ジャンプに関する情報（ダンプ、ＬＢＲ、ＢＴＳから得られる）；間接呼び出しの有無、位置独立コード、自己書き換えコード（ダンプ）である。コンボリューションは、従来技術で知られているどのような方法でも生成され得る。コンテキストの変換およびコンボリューションの生成は、クライアント１００側またはサーバ２００側のいずれでも実行できる（これは、ソフトウェアの実行を監視するシステムによって実行される方法すべてについて言えることである）。なぜなら、これらの操作をサーバ２００側で実行する場合、（変換については）コンテキストおよび（コンボリューションの生成については）特徴が最初にクライアント１００によってサーバ２００に送信されるからである。ステップ２５０において、所定の時点におけるイベントのコンボリューションのポピュラリティが判定される。例示的側面では、ポピュラリティはデータベース（ローカルデータベース１６０またはリモートデータベース１７０）をポーリングすることによって判定される。
【００３９】
さらに、例示的側面では、クライアント上での検出数に関係なく、コンボリューションのポピュラリティが判定されている現時点でのイベントの合計検出数、および／または、現時点でコンボリューションのポピュラリティが判定されている所定のイベントが検出されたクライアント１００の数を特定の方法で算出したものを、ポピュラリティとして考慮する。つまり、たとえば一群の複数の装置におけるイベントの発生頻度を判定するため、クライアント装置１００において検出されたイベントに対応する複数の検出されたイベントの頻度により、ポピュラリティを考慮する。現時点とは、特定の時点であってもよく、所定の長さの期間（１マイクロ秒、１秒など）であってもよいことが理解できるであろう。
【００４０】
ポピュラリティは、たとえば調査対象であるイベントが検出されたサブネットワーク内において、グローバル（アクセス可能なすべてのサブネットワーク内）またはローカル（特定のサブネットワーク内のみのポピュラリティ）であってよい。よって、イベントのコンボリューションのポピュラリティを判定するためにアクセスされるデータベース１６０および１７０は特定の数を記憶し、この数は特定の例ではサーバ２００によって算出される。ステップ２６０では、クライアント１００で検出されたイベントは、検出されたイベントのコンボリューションのポピュラリティが現時点で閾値を下回る場合、異常であると判断される。この判定は、たとえば、クライアント装置１００のエージェント（比較モジュール１５０等）および／またはサーバ２００上の比較モジュール１５０によって実行することができる。ステップ２６０の判定においてポピュラリティが閾値を越えている場合、ステップ２７０においてイベントは安全であると判定される。あるいは、ポピュラリティが閾値より低い場合、ステップ２８０においてイベントは異常であるとみなされる。以下で詳しく説明するように、検出されたイベントが異常かどうかの判定に基づき、クライアント１００によって適切な措置がとられてもよい。
【００４１】
例示的側面では、検出されたイベントが異常か否かを判定するために使用する方法は複数あってもよい。たとえば、イベントのコンボリューションのローカル・ポピュラリティが閾値以下の場合、イベントのコンボリューションのグローバル・ポピュラリティが閾値以下の場合、および／または、イベントのコンボリューションのローカル・ポピュラリティおよびグローバル・ポピュラリティが閾値以下の場合は、検出されたイベントは異常であると判定されてもよい。
【００４２】
イベントのコンボリューションのグローバル・ポピュラリティおよびサブネットワークにおける（ローカル）ポピュラリティに対する閾値は別々に割り当てられる。異常と判断されたイベントは、後にさらに詳しく調査され、必要に応じてエージェント１１０によってクライアント１００においてブロックされる。たとえば、検出されたイベントが異常と判定された場合、クライアント装置１００（および／またはエージェント１１０）は、異常なイベントを実行したソフトウェアプロセスを削除し、ソフトウェアプロセスを隔離し、ソフトウェアプロセスが悪性であるおそれがあるとしてクライアント装置１１０のユーザに警告するなど、救済措置をとる。
【００４３】
ソフトウェアの実行を監視するシステムは、安全なイベントのコンボリューション（この結果、当該システムはいずれかの所定のイベントのコンボリューションを取得するために使用される）および安全なイベントのコンボリューションセットを生成するためにも使用される。セットが既に存在していることもあり、その場合、方法を実行する際に単に補足される。あるいは、存在しない場合もあり、方法を実行する過程で生成されて補充が開始される。
【００４４】
図３は、例示的一側面に係る、安全なイベントのコンボリューションセットを生成する方法のフローチャートである。ここで使用されている「安全な（secure）イベント」は、脆弱性の悪用や悪性ソフトウェアの実行によって発生したわけではない「安全な（safe）」イベントであるとみなすことができる。ステップ３００では、安全であるとして知られている少なくとも一つのクライアント１００側（安全なクライアントとは、悪性なソフトウェアを含んでおらず、脆弱性の悪用によって方法を実行する過程で攻撃ができないクライアントである）において、クライアント１００のオペレーティングシステムで発生する少なくとも１種類のイベントを登録するエージェント１１０（第１のソフトウェアエージェント等）がオペレーティングシステムで起動される。ここで、イベントの種類とは、プロセスの起動、モジュールのロード、ファイル操作、レジストリ操作のうちの１以上でもよい。
【００４５】
ステップ３１０では、クライアント１００のオペレーティングシステムにインストールされてエージェント１１０に接続されているインタセプタ１２０は、オペレーティングシステムで発生しているイベントを検出する。次に、ステップ３２０では、エージェント１１０は、発生しているイベントを登録し、エージェント１１０の収集モジュール１３０によってそのイベントのコンテキストを取得する。想定されるコンテキストの構成は上記に示したとおりである。ステップ３３０では、コンボリューション生成モジュール１４０がこのコンテキストから特徴を選択し、選択した特徴に基づいてイベントのコンボリューションを生成する。そして、ステップ３４０において、当該イベントのコンボリューションを安全なイベントのコンボリューションセットに追加する。特定の例では、ステップ３３０から３４０はサーバ２００上で実行され（ステップ３２０においてクライアント１００から取得されたコンテキストは「未処理（raw）」または既に変換された形式でサーバに送られる）、安全なイベントのコンボリューションセットはリモートデータベース１７０に保持されて後にいずれかの所定のクライアント１００にロードされてもよい。あるいは、クライアント１００は全セットをローカルデータベース１６０にロードすることなくデータベース１７０のポーリングを構成してもよい。
【００４６】
安全なイベントのコンボリューションセットは、クライアント１００で異常なイベントを検出するために使用される。セットそのものはデータベース１６０内にローカルに、あるいは、リモートデータベース１７０内にリモートに格納されてもよく、クライアント１００によってアクセスされ得る。
【００４７】
図４は、例示的一側面に係る、安全なイベントのコンボリューションセットに基づいて異常なイベントを検出する方法のフローチャートである。他のすべての方法と同様、ステップ４００では、クライアント１００側のオペレーティングシステムにおいて、クライアント１００のオペレーティングシステムで発生するイベントを登録する別のエージェント１１０（第２のソフトウェアエージェントなど）が起動され、ステップ４１０では、オペレーティングシステムにインストールされてエージェント１１０に接続されているインタセプタ１２０が、オペレーティングシステムで発生したイベントを検出する。たとえば、例示的側面では、これらの新たなイベントは異常か安全かの判定がまだされていないため、「未分類（unclassified）」とみなされる。次に、ステップ４２０では、エージェント１１０は発生している未分類のイベントを登録し、そのイベントのコンテキストを取得する。想定されるコンテキストの構成は上記に示したとおりである。ステップ４３０では、このコンテキストから特徴が選択され、選択された特徴に基づいて未分類のイベントのコンボリューションが生成される。ステップ４４０では、取得された未分類のイベントのコンボリューションは、上記の方法によって生成されたセットのうち予め生成された安全なイベントのコンボリューション群と比較される。次に、ステップ４５０では、比較した結果、検出されたイベントの生成されたコンボリューションが、提示された安全なイベントセットのうちのイベントのコンボリューション群内のイベントのコンボリューションのいずれとも一致しない場合、未分類のイベントは異常であると判断される。そうでない場合は、未分類のイベントは、たとえばステップ４６０に示すように安全であるとみなされる。一側面では、未分類のイベントが異常であると判定された場合、未分類のイベントに対応するソフトウェアプロセスはクライアント装置から削除または隔離される。
【００４８】
本開示では、概して、エージェント１１０、インタセプタ１２０、収集モジュール１３０、コンボリューション生成モジュール１４０、および比較モジュール１５０は、特定用途向け集積回路（ＡＳＩＣ）やフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのハードウェアを用いて、または、マイクロプロセッサシステムやプログラム命令セット、ならびにニューロシナプティック・チップなどソフトウェアとハードウェアの組合せの形式で実現される実装置、システム、コンポーネント、コンポーネントグループを使用して実行することができる。エージェント１１０、インタセプタ１２０、収集モジュール１３０、コンボリューション生成モジュール１４０、および比較モジュール１５０の機能は、ハードウェアのみによって実現される場合と、機能の一部をソフトウェアで実現し一部をハードウェアで実現するという組み合わせの形式で実現することもできる。一部の変形側面では、エージェント１１０、インタセプタ１２０、収集モジュール１３０、コンボリューション生成モジュール１４０、および比較モジュール１５０の一部は、クライアント１００およびサーバ２００の両方にも適用される汎用コンピュータの処理装置（図５に図示、および、以下に記載）上で実行されてもよい。
【００４９】
具体的には、図５は、例示的一側面により本開示のシステムおよび方法が実行される汎用コンピュータシステム（パーソナルコンピュータまたはサーバでもよい）の例を示す図である。図示されているとおり、コンピュータシステム２０は、中央処理装置２１、システムメモリ２２、および、中央処理装置２１に対応するメモリを含む様々なシステムコンポーネントを接続するシステムバス２３を備える。システムバス２３は、バスメモリまたはバスメモリ制御部、周辺バス、および他のバスアーキテクチャと相互作用可能なローカルバスを含む、先行技術で周知のいずれかのバス構造のように実現される。システムメモリは、永久メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。基本入力／出力システム（basic  input／output  system；ＢＩＯＳ）２６は、ＲＯＭ２４を使用してオペレーティングシステムをロードする時などの、パーソナルコンピュータ２０の要素間の情報転送を確実に行う基本的な処理を含む。
【００５０】
パーソナルコンピュータ２０は、データの読み取りおよび書き込みを行うハードディスク２７、取り外し可能な磁気ディスク２９の読み取りおよび書き込みを行う磁気ディスクドライブ２８、ならびに、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭおよびその他の光学情報媒体等の取り外し可能な光学ディスク３１の読み取りおよび書き込みを行う光学ドライブ３０を含む。ハードディスク２７、磁気ディスクドライブ２８、および光学ドライブ３０は、それぞれ、ハードディスクインタフェース３２、磁気ディスクインタフェース３３、および光学ドライブインタフェース３４を介して、システムバス２３に接続されている。ドライブおよびそれに対応するコンピュータ情報媒体は、コンピュータ命令、データ構造、プログラムモジュールおよびその他のパーソナルコンピュータ２０のデータを記憶するための独立電源型モジュールである。
【００５１】
本開示は、ハードディスク２７、取り外し可能な磁気ディスク２９、および取り外し可能な光学ディスク３１を使用するシステムを実行するものであるが、コントローラ５５を介してシステムバス２３に接続されるコンピュータによって読み取り可能な形式でデータを記憶できる他の種類の媒体５６（ソリッド・ステート・ドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ（ＲＡＭ）等）も利用できることを理解されたい。
【００５２】
コンピュータ２０は、記録されたオペレーティングシステム３５が保持されているファイルシステム３６、ならびに、追加プログラムアプリケーション３７、その他のプログラムモジュール３８およびプログラムデータ３９を有する。ユーザは、入力装置（キーボード４０、マウス４２）を使用してパーソナルコンピュータ２０に命令と情報を入力することができる。マイク、ジョイスティック、ゲームコントローラ、スキャナ等の他の入力装置（図示せず）を使用することもできる。これらの入力装置は、通常、シリアルポート４６を介してコンピュータシステム２０に差し込まれ、システムバスに接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などによって他の方法で接続することもできる。モニタ４７やその他のタイプの表示装置も、ビデオアダプタ４８などのインタフェースを介してシステムバス２３に接続されている。モニタ４７に加え、パーソナルコンピュータは、ラウドスピーカやプリンタ等のその他の周辺出力装置（図示せず）を装備していてもよい。
【００５３】
パーソナルコンピュータ２０は、１以上のリモートコンピュータ４９へのネットワーク接続を使用して、ネットワーク環境で動作してもよい。一台（または複数）のリモートコンピュータ４９は、上述のパーソナルコンピュータ２０の性質で説明した要素の大部分もしくはすべてを含むパーソナルコンピュータまたはサーバでもある。ルータ、ネットワークステーション、ピア装置またはその他のネットワークノードなど他の装置も、コンピュータネットワーク内に存在してもよい。
【００５４】
ネットワーク接続により、有線および／または無線ネットワークなどのローカルエリア・コンピュータネットワーク（ＬＡＮ）５０およびワイドエリア・コンピュータネットワーク（ＷＡＮ）が形成される。これらのネットワークは、企業コンピュータネットワークおよび社内ネットワークで使用され、通常はインターネットにアクセスできる。ＬＡＮまたはＷＡＮネットワークでは、パーソナルコンピュータ２０は、ネットワークアダプタまたはネットワークインタフェース５１を介して、ローカルエリア・ネットワーク５０に接続されている。ネットワークが使用されると、パーソナルコンピュータ２０は、インターネットなどのワイドエリア・コンピュータネットワークによって通信を行うモデム５４やその他のモジュールを利用することができる。内部装置または外部装置であるモデム５４は、シリアルポート４６によってシステムバス２３に接続される。なお、ネットワーク接続は単なる例示であり、ネットワークの正確な構成を示す必要はない。つまり、実際は、Bluetooth（登録商標）などの技術的通信モジュールなどによって一つのコンピュータを別のコンピュータに接続させる他の方法もある。
【００５５】
種々の側面において、ここに記載するシステムおよび方法は、ハードウェア、ソフトウェア、ファームウェアまたはその組み合わせで実行され得る。ソフトウェアで実行される場合、この方法は１以上の命令またはコードとして非一時的なコンピュータ可読媒体に記憶されてもよい。コンピュータ可読媒体はデータ記憶装置も含む。一例では、このコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、フラッシュメモリ、その他の電気、磁気または光学記憶媒体、あるいは、命令やデータ構造の形式で所望のプログラムコードを伝達または記憶するために使用し、汎用コンピュータのプロセッサからアクセス可能な、その他の媒体を含んでもよいが、これらに限定されない。
【００５６】
なお、明瞭化のため、各側面の一般的な特徴すべてについては開示しない。本開示の実際の実装を開発する際、開発者の具体的な目的を達成するためには実装に応じた数々の決定を行わなければならず、具体的な目的は実装や開発者によって異なることに留意されたい。こうした開発上の取り組みは、複雑で時間を要するものであるが、本発明の利益を享受する当業者にとっては日常の作業であることを理解されたい。
【００５７】
更に、ここで使用する用語又は表現は、あくまでも説明のためであり、限定するものではないことを理解されたい。よって、本明細書の用語又は表現は、関連技術の熟練者の知識と組み合わせて、本明細書に示す教示及び指針に照らして当業者によって解釈されたい。明細書又は特許請求の範囲における用語はいずれも、特に明記していない限り、一般的でない意味や特別な意味をもつものではない。
【００５８】
本明細書で開示した様々な側面は、本明細書で例示した既知のモジュールの、現在及び将来の既知の均等物を包含する。本明細書では、複数の側面及び応用例を示して説明したが、本明細書に開示した発明の概念の範囲内で、上記よりも多くの変形例が可能であることは、本発明の利益を享受する当業者にとって明らかであろう。
【図１】
2019079492.tif 000005
【図２】
2019079492.tif 000006
【図３】
2019079492.tif 000007
【図４】
2019079492.tif 000008
【図５】
2019079492.tif 000009
【外国語明細書】
2019079492000001.pdf