(57)【要約】  情報処理装置（２０００）は、出力対象のイベントグラフ（１０）を取得する。イベントグラフ（１０）は、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す。情報処理装置（２０００）は、スコア情報を用いて、出力対象のイベントグラフ（１０）の中から、スコアが閾値以上であるイベントグラフ（１０）と一致するサブグラフを特定する。スコア情報は、複数のイベントグラフ（１０）それぞれと、イベントグラフ（１０）によって表されるイベント列の発生回数に基づくスコアとを対応づけている。情報処理装置（２０００）は、出力対象のイベントグラフ（１０）を、特定されたサブグラフと他の部分とを互いに識別できる態様で出力する。
2020100186.tif 000002
【特許請求の範囲】
【請求項１】
複数のイベントグラフそれぞれと、イベントグラフによって表されるイベント列の発生回数に基づくスコアとを対応づけたスコア情報を用い、出力対象のイベントグラフを構成するサブグラフの中から、前記スコアが閾値以上であるイベントグラフと一致するサブグラフを特定する特定部と、
前記出力対象のイベントグラフを、前記特定されたサブグラフと他の部分とを互いに識別できる態様で出力する出力部と、を有し、
前記イベントグラフは、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す、情報処理装置。
【請求項２】
前記出力部は、前記特定されたサブグラフよりも他の部分を強調して出力する、請求項１に記載の情報処理装置。
【請求項３】
前記出力部は、前記特定されたサブグラフを集約して出力する、請求項１に記載の情報処理装置。
【請求項４】
イベントグラフを取得し、そのイベントグラフについて前記スコアを算出することで、そのイベントグラフのスコア情報を生成又は更新する生成部を有する、請求項１乃至３いずれか一項に記載の情報処理装置。
【請求項５】
前記生成部は、前記イベントグラフのスコアとそのイベントグラフによって表されるイベント列の発生回数とが正の相関を持つように、前記イベントグラフのスコアを算出する、請求項４に記載の情報処理装置。
【請求項６】
前記生成部は、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した装置の数に基づいて算出する、請求項４又は５に記載の情報処理装置。
【請求項７】
前記生成部は、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した対象装置のユーザに割り当てられた重みに基づいて算出する、請求項４乃至６いずれか一項に記載の情報処理装置。
【請求項８】
前記イベントグラフは、ユーザの入力操作に応じた第１の生成処理と、定期的に実行される第２の生成処理の双方によって生成され、
前記生成部は、前記イベントグラフのスコアを、そのイベントグラフが前記第１の生成処理によって生成された回数と、そのイベントグラフが前記第２の生成処理によって生成された回数との線形和として算出する、請求項４乃至７いずれか一項に記載の情報処理装置。
【請求項９】
前記特定部は、入力操作により指定された前記イベントの主体又は客体を表すノードを含むイベント列を表すイベントグラフを、前記出力対象のイベントグラフとして取得する、請求項１乃至８いずれか一項に記載の情報処理装置。
【請求項１０】
コンピュータによって実行される制御方法であって、
複数のイベントグラフそれぞれと、イベントグラフによって表されるイベント列の発生回数に基づくスコアとを対応づけたスコア情報を用い、出力対象のイベントグラフを構成するサブグラフの中から、前記スコアが閾値以上であるイベントグラフと一致するサブグラフを特定する特定ステップと、
前記出力対象のイベントグラフを、前記特定されたサブグラフと他の部分とを互いに識別できる態様で出力する出力ステップと、を有し、
前記イベントグラフは、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す、制御方法。
【請求項１１】
前記出力ステップにおいて、前記特定されたサブグラフよりも他の部分を強調して出力する、請求項１０に記載の制御方法。
【請求項１２】
前記出力ステップにおいて、前記特定されたサブグラフを集約して出力する、請求項１０に記載の制御方法。
【請求項１３】
イベントグラフを取得し、そのイベントグラフについて前記スコアを算出することで、そのイベントグラフのスコア情報を生成又は更新する生成ステップを有する、請求項１０乃至１２いずれか一項に記載の制御方法。
【請求項１４】
前記生成ステップにおいて、前記イベントグラフのスコアとそのイベントグラフによって表されるイベント列の発生回数とが正の相関を持つように、前記イベントグラフのスコアを算出する、請求項１３に記載の制御方法。
【請求項１５】
前記生成ステップにおいて、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した装置の数に基づいて算出する、請求項１３又は１４に記載の制御方法。
【請求項１６】
前記生成ステップにおいて、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した対象装置のユーザに割り当てられた重みに基づいて算出する、請求項１３乃至１５いずれか一項に記載の制御方法。
【請求項１７】
前記イベントグラフは、ユーザの入力操作に応じた第１の生成処理と、定期的に実行される第２の生成処理の双方によって生成され、
前記生成ステップにおいて、前記イベントグラフのスコアを、そのイベントグラフが前記第１の生成処理によって生成された回数と、そのイベントグラフが前記第２の生成処理によって生成された回数との線形和として算出する、請求項１３乃至１６いずれか一項に記載の制御方法。
【請求項１８】
前記特定ステップにおいて、入力操作により指定された前記イベントの主体又は客体を表すノードを含むイベント列を表すイベントグラフを、前記出力対象のイベントグラフとして取得する、請求項１０乃至１７いずれか一項に記載の制御方法。
【請求項１９】
請求項１０乃至１８いずれか一項に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムの活動を把握する技術に関する。
【背景技術】
【０００２】
コンピュータ上で動作するプログラムの活動を把握するために、プログラムの活動をグラフで表現する技術が開発されている。ここでいうグラフとは、ノードの集合及びノード間を接続するエッジの集合で構成されるデータ構造を意味する。【０００３】
プログラムの活動をグラフ化する技術を開示している先行技術文献には、例えば特許文献１がある。特許文献１は、コンピューティングシステムに対する攻撃を検出するために、不審イベントをエッジとし、なおかつその不審イベントの主体及び客体をそれぞれノードとするイベント相関グラフを生成する技術を開示している。より具体的には、不審イベントの属性に基づいて不審性スコアが定義され、イベント相関グラフを構成するエッジ及びノードの不審性スコアから攻撃スコアを算出することにより、攻撃の検知が行われる。ここで、攻撃スコアの算出方法の一つとして、イベント相関グラフのサイズに基づいて算出する方法が開示されている。さらに特許文献１には、生成したイベント相関グラフを管理者に提示することも開示されている。【０００４】
また、グラフの表示に関する技術を開示している先行技術文献として、特許文献２がある。特許文献２は、ユーザ間を連結して表すソーシャルグラフにおいて、各ユーザの発言等に基づいてグラフをセグメント化して表示する技術を開示している。さらに、各セグメントが他のユーザに与える影響力を表すセグメント影響力を算出し、閾値以上のセグメント影響力を持つセグメントのグラフのみを表示するという技術も開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１６−５２８６５６号公報
【特許文献２】特開２０１５−１６４００８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
システム上では、様々なプログラムが様々な活動を行いうる。そのため、プログラムの活動の全てをグラフ上で一様に表すと、特定の目的を持ってグラフを閲覧するユーザにとって、グラフが煩雑になってしまうおそれがある。【０００７】
特許文献１には、イベント相関グラフのサイズに基づいて攻撃スコアを算出する際、攻撃スコアを算出する前に、不審性スコアが低いノードやエッジをイベント相関グラフから削除してもよいことが開示されている。しかしながら、不審性スコア以外の指標に基づいてノードやエッジを削除することは開示されていない。また、管理者に提示するイベント相関グラフについては、このように一部のノードやエッジを削除することが開示されていない。【０００８】
特許文献２は、グラフ化の対象がプログラムの活動ではない。そのため、開示されているグラフ表示の制御方法は、セグメント影響力という、プログラムの活動には関係ない指標を用いたものである。【０００９】
本発明は上記の課題に鑑みてなされたものであり、その目的の一つは、プログラムの活動を表すグラフの見やすさを向上させる技術を提供することである。
【課題を解決するための手段】
【００１０】
本発明の情報処理装置は、１）複数のイベントグラフそれぞれと、イベントグラフによって表されるイベント列の発生回数に基づくスコアとを対応づけたスコア情報を用い、出力対象のイベントグラフを構成するサブグラフの中から、スコアが閾値以上であるイベントグラフと一致するサブグラフを特定する特定部と、２）出力対象のイベントグラフを、特定されたサブグラフと他の部分とを互いに識別できる態様で出力する出力部と、を有する。
イベントグラフは、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す。【００１１】
本発明の制御方法は、コンピュータによって実行される。当該制御方法は、１）複数のイベントグラフそれぞれと、イベントグラフによって表されるイベント列の発生回数に基づくスコアとを対応づけたスコア情報を用い、出力対象のイベントグラフを構成するサブグラフの中から、スコアが閾値以上であるイベントグラフと一致するサブグラフを特定する特定ステップと、２）出力対象のイベントグラフを、特定されたサブグラフと他の部分とを互いに識別できる態様で出力する出力ステップと、を有する。
イベントグラフは、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す。【００１２】
本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
【発明の効果】
【００１３】
本発明によれば、プログラムの活動を表すグラフの見やすさを向上させる技術が提供される。
【図面の簡単な説明】
【００１４】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
【図１】実施形態１の情報処理装置の動作の概要を例示する図である。
【図２】実施形態１の情報処理装置の構成を例示する図である。
【図３】情報処理装置を実現するための計算機を例示する図である。
【図４】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図５】イベント情報をテーブル形式で例示する図である。
【図６】互いに異なる対象装置について生成されるグラフを連結することで１つのイベントグラフを生成する方法を例示する図である。
【図７】スコアが閾値以上のイベントグラフと一致するサブグラフと、スコアが閾値未満のイベントグラフと一致するサブラフとが重複するケースを例示する図である。
【図８】図７のケースにおける特定サブグラフを例示する図である。
【図９】第１態様に比較的目立たない線を用い、第２態様に比較的目立つ線を用いたイベントグラフを例示する図である。
【図１０】第１態様のノードやエッジのサイズを、第２態様のノードやエッジのサイズよりも小さくするケースを例示する図である。
【図１１】特定サブグラフが集約表示されるケースを例示する図である。
【図１２】内部のエッジが省略された特定サブグラフを例示する図である。
【図１３】実施形態２の情報処理装置の機能構成を例示する図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１６】
［実施形態１］
＜概要＞
図１は、本実施形態の情報処理装置２０００の動作の概要を例示する図である。図１は、情報処理装置２０００の動作についての理解を容易にするための概念的な説明を表す図であり、情報処理装置２０００の動作を具体的に限定するものではない。
【００１７】
情報処理装置２０００は、出力対象のイベントグラフ１０を取得し、出力する。イベントグラフ１０は、ノード１２の集合及びノード１２間を接続するエッジ１４の集合で構成されるデータ構造である。イベントグラフ１０では、エッジ１４及びそのエッジ１４によって接続される２つのノード１２により、１つのイベントが表される。
【００１８】
イベントとは、プロセス（実行中のプログラム）が何らかの客体に対して行った活動を表す。エッジ１４は、イベントにおけるプロセスの活動内容を表す。そして、エッジ１４によって接続される２つのノード１２がそれぞれ、イベントの主体と客体を表す。イベントの主体はプロセスである。イベントの客体は、プロセスやファイルなどである。例えば或るプロセスが発生させるイベントは、他のプロセスの起動、他のプロセスとの通信、又はファイルへのアクセスなどである。
【００１９】
ここで、図１では、向きを表す矢印をエッジ１４として出力することで、イベントの流れを表している。具体的には、エッジ１４の始点と接続されているノード１２がイベントの主体を表し、エッジ１４の終点と接続されているノード１２がイベントの客体を表す。そして、エッジ１４が表す方向に向かって順にノード１２を見ていくことで、イベントの時系列を把握することができる。以下、１つ以上のイベントを時系列で並べたものを、イベント列と呼ぶ。
【００２０】
なお、エッジ１４の出力態様は、必ずしも向きを表すものに限定されず、直線などの向きを表さないものであってもよい。エッジ１４が向きを表さない態様で出力される場合、例えば、「イベントグラフ１０において、イベントの流れは左から右へ向かう向きで表される」といったルールを定めておき、そのルールに従ってイベントグラフ１０を生成するようにする。
【００２１】
情報処理装置２０００によって出力されるイベントグラフ１０は、例えば、対象装置の監視を行うユーザによって利用される。ユーザは、イベントグラフ１０を閲覧することにより、対象装置の状況を把握する。より具体的には、ユーザは、イベントグラフ１０を閲覧することにより、対象装置において異常な状態を表すイベントが発生していないかどうかを確認する。異常な状態を表すイベントとは、例えば、マルウエアが介在していると考えられるイベントなどである。ただし、ここでいう「異常」は、セキュリティ上の異常には限定されない。例えば、プログラムのバグによってプロセスが想定外の動作を行っているなどといった異常も含まれる。
【００２２】
ここで、イベントグラフ１０を見ることで対象装置に異常がないかどうかを把握したいといった目的を持つユーザにとって、出力されるイベントグラフ１０を構成する各要素の重要さは、互いに異なる可能性がある。具体的には、イベントグラフ１０のうち、異常な活動によって発生するイベント列を表す部分の方が、通常の活動によって発生するイベント列を表す部分よりも重要であると考えられる。
【００２３】
この点、異常な活動によって発生するイベント列の発生回数は、通常の活動によって発生するイベント列の発生回数よりも少ないと考えられる。そのため、発生回数が比較的少ないイベント列を表す部分の方が、発生回数が比較的多いイベント列を表す部分よりも重要である蓋然性が高い。
【００２４】
そこで情報処理装置２０００は、複数のイベントグラフ１０それぞれをスコアと対応づけたスコア情報を用いて、出力対象のイベントグラフ１０の中から、スコアが閾値以上であるイベントグラフ１０と一致するサブグラフを特定する。イベントグラフ１０のスコアは、そのイベントグラフ１０によって表されるイベント列の発生回数（そのイベントグラフ１０が生成された回数）に基づいて定められた値である。例えばイベントグラフ１０のスコアは、そのイベントグラフ１０によって表されるイベント列の発生回数と正の相関を持つ値として定められる。
【００２５】
そして情報処理装置２０００は、スコアが閾値以上であるイベントグラフ１０と一致するサブグラフと、その他の部分とが、互いに識別できる態様で、出力対象のイベントグラフ１０を出力する。「その他の部分」は、スコアが閾値未満であるイベントグラフ１０と一致するサブグラフか、又はスコア情報に示されるイベントグラフ１０のいずれとも一致しないサブグラフとなる。
【００２６】
例えば図１では、プロセス p1 がファイル f1 へ書き込みを行うことを表すサブグラフ１と、プロセス p2 がファイル f1 を読み込むことを表すサブグラフ２はいずれも、スコアが閾値（５０）以上のイベントグラフ１０と一致する。一方、プロセス p2 がファイル f2 へ書き込むことを表すサブグラフ３と一致するイベントグラフ１０は、スコアが閾値未満である。そこで、情報処理装置２０００は、サブグラフ１及び２を点線で表し、なおかつサブグラフ３を実線で表すように出力している。
【００２７】
このような出力を行うことにより、出力対象のイベントグラフ１０は、スコアが閾値以上のイベントグラフ１０と一致する部分とそれ以外の部分という、重要度合いが互いに異なる部分が互いに異なる態様で出力される。これにより、ユーザにとってイベントグラフ１０が見やすいものになる。より具体的には、ユーザが、出力されたイベントグラフ１０の中から、重要度合いが高い部分を容易に把握できるようになり、イベントグラフ１０の重要部分（例えばセキュリティ上の脅威）の見落としを減らすことができる。
【００２８】
以下、本実施形態の情報処理装置２０００についてさらに詳細に説明する。
【００２９】
＜情報処理装置２０００の機能構成の例＞
図２は、実施形態１の情報処理装置２０００の構成を例示する図である。情報処理装置２０００は、特定部２０２０及び出力部２０４０を有する。特定部２０２０は、スコア情報を用い、出力対象のイベントグラフ１０の中から、スコアが閾値以上であるイベントグラフ１０と一致するサブグラフを特定する。出力部２０４０は、出力対象のイベントグラフ１０を、特定部２０２０によって特定されたサブグラフと他の部分とを互いに識別できる態様で出力する。
【００３０】
＜情報処理装置２０００のハードウエア構成＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００３１】
図３は、情報処理装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、Personal Computer（PC）、サーバマシン、タブレット端末、又はスマートフォンなどである。計算機１０００は、情報処理装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００３２】
計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。プロセッサ１０４０は、CPU（Central Processing Unit）、GPU（Graphics Processing Unit）、又は FPGA（Field-Programmable Gate Array）などのプロセッサである。メモリ１０６０は、RAM（Random Access Memory）などを用いて実現される主記憶装置である。ストレージデバイス１０８０は、ハードディスクドライブ、SSD（Solid State Drive）、メモリカード、又は ROM（Read Only Memory）などを用いて実現される補助記憶装置である。ただし、ストレージデバイス１０８０は、RAM など、主記憶装置を構成するハードウエアと同様のハードウエアで構成されてもよい。
【００３３】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。ネットワークインタフェース１１２０は、計算機１０００を通信網に接続するためのインタフェースである。この通信網は、例えば LAN（Local Area Network）や WAN（Wide Area Network）である。ネットワークインタフェース１１２０が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
【００３４】
ストレージデバイス１０８０は、情報処理装置２０００の機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【００３５】
＜対象装置について＞
対象装置は、PC、サーバマシン、タブレット端末、又はスマートフォンなどといった任意のコンピュータである。また、対象装置は物理マシンには限定されず、仮想マシンであってもよい。
【００３６】
対象装置は、１つであってもよいし、複数であってもよい。例えば情報処理装置２０００は、複数の対象装置それぞれについてイベントグラフ１０を生成する。ただし後述するように、複数の対象装置が互いに通信している場合、各対象装置について生成されるイベントグラフ１０を連結することにより、複数の対象装置について１つのイベントグラフ１０を生成してもよい。このように複数の対象装置について生成された１つのイベントグラフ１０は、複数の対象装置から成るコンピュータシステム（以下、対象システム）について生成されたイベントグラフ１０として見ることもできる。
【００３７】
＜処理の流れ＞
図４は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。特定部２０２０は、出力対象のイベントグラフ１０を取得する（Ｓ１０２）。特定部２０２０は、スコア情報を用いて、出力対象のイベントグラフ１０の中から、スコアが閾値以上のイベントグラフ１０と一致するサブグラフを特定する（Ｓ１０４）。出力部２０４０は、Ｓ１０４で特定されたサブグラフとその他の部分とを識別可能な態様で、出力対象のイベントグラフ１０を出力する（Ｓ１０６）。
【００３８】
＜イベントについて＞
前述したように、イベントとは、プロセスが何らかの客体に対して行った活動である。或るプロセスが他のプロセスを客体として活動する場合、これらのプロセスは互いに同一の OS（Operating System）上で動作するものであってもよいし、互いに異なる OS 上で動作するものであってもよい。後者の例としては、例えば、ソケットインタフェースを利用することで、或るプロセスが他の OS 上で動作する別のプロセスと通信を行うことが考えられる。
【００３９】
例えばイベントは、主体、客体、活動内容、及び発生時刻という４つの要素を表す情報によって識別される。そこで例えば、イベント情報は、主体を表す主体情報、客体を表す客体情報、活動の内容を表す内容情報、及び発生時刻の組み合わせを示す。
【００４０】
主体情報は、例えば、そのイベントを発生させたプロセスを識別する情報である。以下、プロセスを識別する情報をプロセス識別情報と呼ぶ。プロセス識別情報は、例えば、プロセスの名称を示す。その他にも例えば、プロセス識別情報は、プロセス ID（Identifier）、プロセスに対応するプログラムの実行ファイルの名称やパス、実行ファイルのハッシュ値やデジタル署名、又は実行ファイルで実現されるアプリケーションの名称などである。なお、プロセス識別情報は、実行ファイルのパスとプロセスＩＤの組み合わせなど、複数の識別子の組み合わせであってもよい。
【００４１】
客体情報は、例えば、その客体の種別及び識別情報である。客体の種別は、例えば、プロセス、ファイル、又はソケットなどである。客体がプロセスである場合、客体情報にはそのプロセスのプロセス識別情報が含まれる。
【００４２】
客体がファイルである場合、客体情報には、そのファイルを識別する情報（以下、ファイル識別情報）が含まれる。ファイル識別情報は、例えばそのファイルの名称やパスなどである。また、客体がファイルである場合、客体情報は、そのファイルのハッシュ値や、ファイルシステムの識別情報とそのファイルシステム上でそのファイルを構成するディスクブロックの識別情報（inode 番号やオブジェクト ID）との組み合わせなどであってもよい。
【００４３】
客体がソケットである場合、例えば客体情報には、ソケットに割り当てられた識別子が含まれる。
【００４４】
活動内容を表す情報（以下、内容情報）は、例えば、種々ある活動内容に予め割り当てておく識別子である。例えば、「プロセスを起動する」、「プロセスを停止する」、「ファイルをオープンする」、「ファイルからデータを読み込む」、「ファイルにデータを書き込む」、「ソケットをオープンする」、「ソケットからデータを読み込む」、又は「ソケットにデータを書き込む」などといった活動の内容に、互いに異なる識別子を割り当てておく。なお、ソケットに対するアクセスは、そのソケットに対応づけられた他の装置へのアクセスを意味する。
【００４５】
イベントグラフ１０の生成には、対象装置で発生した各イベントを表す情報が必要である。以下、この情報をイベント情報と呼ぶ。例えばイベント情報は、対象装置で発生した各イベントについて、主体情報、客体情報、内容情報、及び発生時刻の組み合わせを示す。
【００４６】
図５は、イベント情報をテーブル形式で例示する図である。以下、図５のテーブルをテーブル２００と呼ぶ。テーブル２００は、主体情報２０２、客体情報２０４、内容情報２０６、及び発生時刻２０７を含む。主体情報２０２は、プロセス名２０８及びパス２１０が含まれている。客体情報２０４には、種別２１２及び識別情報２１４が含まれている。発生時刻２０７は、イベントが発生した時刻を示す。
【００４７】
例えばイベント情報は、対象装置で発生した各イベントについての情報をログに記録しておくことで生成することができる。発生したイベントについての情報をログに記録しておく技術には、既存の技術を利用することができる。
【００４８】
＜イベントグラフ１０の生成について＞
イベントグラフ１０は、前述したイベント情報に基づいて生成される。イベントグラフ１０の生成は、情報処理装置２０００によって行われてもよいし、情報処理装置２０００以外の装置によって行われてもよい。以下では説明をわかりやすくするため、イベントグラフ１０が情報処理装置２０００によって生成されるものと仮定する。
【００４９】
イベントグラフ１０におけるエッジ１４及びノード１２は、イベント情報によって定められる。具体的には、内容情報がエッジ１４を定め、主体情報と客体情報それぞれがエッジ１４によって接続される２つのノード１２を定める。ここで、エッジ及びその両端のノードを定める情報を用いてグラフを生成する技術には、既存の技術を利用することができる。
【００５０】
基本的には、或るイベントにおける客体と他のイベントにおける主体が一致する場合、前者と後者を同じノード１２で表すことにより、複数のイベントについての情報が連結されたイベントグラフ１０が生成されていく。
【００５１】
ただし、イベントグラフ１０は、発生時刻を考慮して生成されることが好適である。例えば、或るイベントの客体が他のイベントの主体となる場合、前者のイベントの発生時刻は、後者のイベントの発生時刻よりも早くなる。そこで情報処理装置２０００は、このようにイベント間の発生時刻の順序を考慮して生成されるようにする。
【００５２】
また、或るイベントの客体と他のイベントの主体が同一であったとしても、前者のイベントと後者のイベントが、連結されるべき一連のイベントとは言えないことがある。具体的には、前者のイベントの発生時刻と後者のイベントの発生時刻が大きく異なる場合、これらのイベントは一連のイベントではなく独立して発生したイベントであると考えられ、これらのイベントを連結することは好ましくないと考えられる。
【００５３】
そこで例えば、連結するイベント間について、発生時刻の閾値を定めておく。そして、情報処理装置２０００は、或るイベント情報によって示される客体と他のイベント情報によって示されるイベントの主体が一致する場合、後者のイベント情報によって示される発生時刻と前者のイベント情報によって示される発生時刻との差分が、上記閾値以下であるか否かを判定する。
【００５４】
差分が上記閾値以下である場合、情報処理装置２０００は、前者のイベントの客体を示すノード１２と、後者のイベントの主体を示すノード１２とを同一のノード１２のものとすることで、これらのイベントを連結する。一方、差分が上記閾値より大きい場合、情報処理装置２０００は、前者のイベントの客体を表すノード１２と、後者のイベントの主体を表すノード１２とを互いに異なるノード１２とすることで、これらのイベントを連結しない。
【００５５】
なお、生成された全てのイベントグラフ１０が出力対象とされる必要はない。例えば、イベントグラフ１０の生成は定期的に行われ、イベントグラフ１０の出力はユーザによる入力操作が行われた時のみ行われるようにしてもよい。この場合、定期的に生成されるイベントグラフ１０は、例えば、前述したスコア情報の生成に利用される。スコア情報の生成方法については後述する。
【００５６】
＜＜対象装置が複数存在するケースについて＞＞
対象装置が複数存在する場合、例えば情報処理装置２０００は、対象装置ごとにイベントグラフ１０を生成する。ただし前述したように、互いに通信している複数の対象装置については、これらの対象装置についてのイベントグラフ１０を連結することが好適である。
【００５７】
複数の対象装置それぞれについて生成されたイベントグラフ１０は、例えば、対象装置同士の通信に関するイベントを表すノード１２を介して連結される。対象装置同士の通信は、例えばソケットインタフェースを利用して行われる。例えば、対象装置から他の対象装置に対するデータの送信は、ソケットに対する書き込み動作などで実現される。一方、他の対象装置から送信されたデータの受信は、ソケットに対する読み込み動作などで実現される。
【００５８】
そこで情報処理装置２０００は、例えば、互いに異なる対象装置において行われたソケットを客体とするイベントについてマッチングを行うことで、互いに異なる対象装置について生成されたイベントグラフ１０を連結する。図６は、互いに異なる対象装置について生成されるグラフを連結することで１つのイベントグラフ１０を生成する方法を例示する図である。
【００５９】
図６の上段では、それぞれ異なる対象装置について生成されたイベントグラフ１０−１とイベントグラフ１０−２とが連結されていない。イベントグラフ１０−１では、ノード１２−１によって表されるプロセスｐ１が、ノード１２−２によって表されるソケットｓ１に対し、データの書き込みを行っている。イベントグラフ１０−２では、ノード１２−３によって表されるプロセスｐ２が、ノード１２−４によって表されるソケットｓ２に対し、データの読み込みを行っている。
【００６０】
ここで、ソケットｓ１とソケットｓ２が通信可能に接続されている（両者の間でコネクションが確立されている）とする。そうすると、プロセスｐ１は、ソケットｓ１及びｓ２を介し、プロセスｐ２に対してデータを送信していることになる。
【００６１】
そこで、情報処理装置２０００は、上述したソケットｓ１とｓ２とを連結することで、イベントグラフ１０−１とイベントグラフ１０−２とを連結し、１つのイベントグラフ１０を生成する（図６の下段参照）。
【００６２】
なお、どのソケットとどのソケットが通信可能に接続されているのかは、例えば、各ソケットが持つネットワークに関する情報（通信相手のポート番号やＩＰアドレス）とをマッチングすることで特定することができる。
【００６３】
＜スコア情報について＞
スコア情報は、イベントグラフ１０と、そのイベントグラフ１０の生成回数（すなわち、イベントグラフ１０によって表されるイベント列の発生回数）に基づくスコアとを対応づけた情報である。スコア情報は、記憶装置に予め記憶されているものとする。この記憶装置を、スコア情報記録部と呼ぶ。
【００６４】
例えばスコア情報は、図１に示したように、イベントグラフとスコアとを対応づけたテーブルとして構成される。ここで、図１の例では、スコア情報に示される全てのイベントグラフ１０が、２つのノード１２と１つのエッジから構成されている。しかしながら、スコア情報に示されるイベントグラフ１０の構成は、このような構成に限定されず、任意の大きさのグラフとすることができる。
【００６５】
イベントグラフ１０のスコアは、例えば、そのイベントグラフ１０の生成回数と正の相関を持つ値として定められる。すなわち、イベントグラフ１０のスコアは、そのイベントグラフ１０の生成回数が多いほど大きい値として定められる。イベントグラフ１０のスコアの定め方のバリエーションについては、実施形態２で説明する。
【００６６】
＜出力対象のイベントグラフ１０の取得＞
特定部２０２０は、出力対象のイベントグラフ１０を取得する。例えば特定部２０２０は、定期的に生成されるイベントグラフ１０を取得し、取得したイベントグラフ１０を出力対象のイベントグラフ１０として扱う。
【００６７】
その他にも例えば、出力対象のイベントグラフ１０は、ユーザの入力操作に応じて取得される。例えばこのユーザ操作は、対象装置において主体又は客体となるオブジェクト（プロセスやファイルなど）を指定する操作である。例えば情報処理装置２０００は、この入力操作に応じてイベント情報を取得し、取得したイベント情報を用いて、指定されたオブジェクトが含まれるイベントグラフ１０を生成する。「指定されたオブジェクトが含まれるイベントグラフ１０」とは、例えば、指定されたオブジェクトを表すノード１２が始点ノード又は終点ノードであるグラフである。情報処理装置２０００は、生成されたイベントグラフ１０を、出力対象のイベントグラフ１０として扱う。上記所定期間は、予め定められていてもよいし、ユーザの入力操作によって指定されてもよい。
【００６８】
ユーザの入力操作の他の例は、期間を指定する入力操作である。この場合、情報処理装置２０００は、指定された期間に対象装置で発生したイベントを示すイベント情報を取得し、取得したイベント情報を用いてイベントグラフ１０を生成する。ここで、或る指定された期間に発生したイベントについてイベントグラフ１０を生成する場合、互いに連結されない複数のイベントグラフ１０が生成される可能性がある。この場合、情報処理装置２０００は、生成された全てのイベントグラフ１０それぞれを出力対象のイベントグラフ１０として扱ってもよいし、一部のイベントグラフ１０（例えば、ユーザによって選択されたイベントグラフ１０）を出力対象のイベントグラフ１０として扱ってもよい。
【００６９】
＜スコアの判定：Ｓ１０４＞
特定部２０２０は、スコア情報を用いて、出力対象のイベントグラフ１０から、スコアが閾値以上のイベントグラフ１０と一致するサブグラフを特定する（Ｓ１０４）。ここで、特定されたサブグラフを、特定サブグラフとも呼ぶ。
【００７０】
具体的には、特定部２０２０は、スコア情報に示されるイベントグラフ１０と一致するサブグラフが、出力対象のイベントグラフ１０に含まれているか否かを判定する。含まれている場合、特定部２０２０は、そのサブグラフと一致するイベントグラフ１０のスコアが閾値以上であるか否かを判定する。そして、スコアが閾値以上である場合、特定部２０２０は、そのサブグラフを特定サブグラフとして特定する。一方、スコアが閾値未満であるサブグラフについては、特定サブグラフとして特定されない。また、出力対象のイベントグラフ１０に含まれるサブグラフのうち、スコア情報に示されているイベントグラフ１０のいずれとも一致しないサブグラフも、特定サブグラフとして特定されない。
【００７１】
ここで、出力対象のイベントグラフ１０において、スコアが閾値以上のイベントグラフ１０と一致するサブグラフと、スコアが閾値未満のイベントグラフ１０と一致するサブグラフとが、互いに重複することがある。図７は、スコアが閾値以上のイベントグラフ１０と一致するサブグラフと、スコアが閾値未満のイベントグラフ１０と一致するサブラフとが重複するケースを例示する図である。図７において、サブグラフＡは、スコアが閾値以上のイベントグラフ１０と一致しており、サブグラフＢは、スコアが閾値未満のイベントグラフ１０と一致している。サブグラフＡとＢは、ノード n2 からノード n6 までの部分が、互いに重複している。
【００７２】
イベントグラフ１０を見ることで対象装置に異常がないかどうかを把握したいといった目的を持つユーザにとって、スコアが閾値未満のイベントグラフ１０と一致するサブグラフ（すなわち、発生回数が比較的少ないイベント列を表すグラフ）は、注目すべきイベント列を表しているといえる。よって、スコアが閾値未満のイベントグラフ１０と一致するサブグラフは、その全体が比較的目立つ態様で出力されることが好ましい。
【００７３】
そこで例えば、出力対象のイベントグラフ１０において、スコアが閾値以上のイベントグラフ１０と一致するサブグラフと、スコアが閾値未満のイベントグラフ１０と一致するサブグラフとが互いに重複する場合、特定部２０２０は、スコアが閾値以上のイベントグラフ１０と一致するサブグラフから重複部分を除外したサブグラフを、特定サブグラフとする。こうすることで、出力されたイベントグラフ１０を見たユーザが、発生回数が比較的少ない一連のイベント列全体を容易に把握できるようになる。
【００７４】
図８は、図７のケースにおける特定サブグラフを例示する図である。図７において、サブグラフＡのうち、ノード n2 からノード n6 の部分は、サブグラフＢと重複している。そこで図８に示すように、特定部２０２０は、サブグラフＡから、ノード n2 からノード n6 までの部分を除いた部分を、特定サブグラフとする。
【００７５】
＜＜グラフの同定について＞＞
２つのグラフが一致するか否かの判定は、これらを構成するノード１２とエッジ１４が一致するか否かを判定することで実現できる。ただし、２つのノード１２が実質的には互いに同じ主体や客体を表す場合でも、これらのノード名が完全には一致しない場合がある。例えば、同内容のファイルのパスが、対象装置ごとに異なることがある。より具体的には、fileA.exe という実行ファイルのパスが、或る対象装置では「C:\dir1\fileA.exe」である一方で、他の対象装置では「D:\dir2\fileA.exe」であるといったケースである。
【００７６】
そこで例えば、ノード名がファイルのパスを示す場合、情報処理装置２０００は、ファイルのパスのうち、ファイル名の部分のみを比較することで、ノード名の一致を判定してもよい。ただし、情報処理装置２０００は、対比するノード名において、ファイルのパスが完全に一致する場合以外は、それらが互いに異なるノードを表すと判定するように構成されてもよい。
【００７７】
＜イベントグラフ１０の出力：Ｓ１０６＞
出力部２０４０は、出力対象のイベントグラフ１０を出力する（Ｓ１０６）。この際、特定サブグラフ（スコアが閾値以上のイベントグラフ１０と一致するサブグラフ）とそれ以外の部分は、互いに識別できる態様で出力される。以下、特定サブグラフの出力態様を第１態様と呼び、それ以外の部分の出力態様を第２態様と呼ぶ。
【００７８】
ここで、イベントグラフ１０のスコアがその生成回数と正の相関を持つように定められる場合、特定サブグラフは、比較的発生回数が多いイベント列を表すため、それ以外の部分と比較し、重要度が低いと言える。そこで、特定サブグラフよりもそれ以外の部分の方が目立つように出力することが好ましい。言い換えれば、第２態様を、第１態様よりも目立つ態様（強調した態様）とすることが好ましい。
【００７９】
そこで例えば、第１態様では比較的目立たない線（例えば点線、細い線、又は薄い線）を用い、第２態様では比較的目立つ線（例えば実線、太い線、又は濃い線）を用いるようにする。図９は、第１態様に比較的目立たない線を用い、第２態様に比較的目立つ線を用いたイベントグラフ１０を例示する図である。図９において、出力対象のイベントグラフ１０は図７に示したものであり、特定サブグラフは図８に示したものである。そして、イベントグラフ１０において、特定サブグラフは点線で表されており、それ以外の部分は実線で表されている。
【００８０】
その他にも例えば、第１態様ではノード１２やエッジ１４のサイズを比較的小さくし、第２態様ではノード１２やエッジ１４のサイズを比較的大きくする。図１０は、第１態様のノード１２やエッジ１４のサイズを、第２態様のノード１２やエッジ１４のサイズよりも小さくするケースを例示する図である。図１０においても、出力対象のイベントグラフ１０は図７に示したものであり、特定サブグラフは図８に示したものである。そして、イベントグラフ１０において、特定サブグラフは比較的小さいサイズで出力されており、それ以外の部分は比較的大きいサイズで出力されている。
【００８１】
その他にも例えば、第１態様では複数のノード１２やエッジ１４を集約するようにし、第２態様ではこのような集約を行わないようにしてもよい。すなわち、特定サブグラフを集約して表示したイベントグラフ１０が出力される。図１１は、特定サブグラフが集約出力されるケースを例示する図である。図１１においても、出力対象のイベントグラフ１０は図７に示したものであり、特定サブグラフは図８に示したものである。
【００８２】
ここで、図８に示した特定サブグラフは２つに分断されている。そこで図１１では、これら分断されている箇所それぞれが集約されている。ここで、複数のノードを集約した１つのノードを、代表ノードと呼ぶ。図１１では、ノード n1 と n5 が１つの代表ノードに集約され、なおかつノード n4 とノード n7 が、１つの代表ノードに集約されている。
【００８３】
代表ノードの形態（形状、色、模様など）は、通常のノード１２の形態と異なるものとすることが好適である。こうすることで、ユーザが、代替ノードが複数のノード１２やエッジ１４を集約したものであることを、直感的に把握することができる。
【００８４】
集約表示の方法は、図１１に示した形態に限定されない。例えば、特定サブグラフに含まれるノード１２間のエッジのみを省略するようにしてもよい。図１２は、内部のエッジが省略された特定サブグラフを例示する図である。
【００８５】
出力対象のイベントグラフ１０の出力先には、様々なものを採用できる。例えば出力部２０４０は、情報処理装置２０００に接続されているディスプレイ装置にイベントグラフ１０を出力する。こうすることで、ディスプレイ装置にイベントグラフ１０が表示される。その他にも例えば、出力部２０４０は、情報処理装置２０００以外の他の装置にイベントグラフ１０を出力（送信）してもよい。その他にも例えば、出力部２０４０は、イベントグラフ１０を記憶装置に出力してもよい（記憶させてもよい）。なお、グラフをディスプレイ装置に表示させる技術、他の装置に送信する技術、及び記憶装置に記憶させる技術には、いずれも既存の技術を利用することができる。
【００８６】
ここで、ディスプレイ装置にイベントグラフ１０を表示させる際、特定サブグラフについて、サイズを小さくしたり集約表示を行ったりすると、これらを行わない場合と比較し、イベントグラフ１０全体のサイズを小さくすることができる。すなわち、イベントグラフ１０を画像として表す場合に、その画像サイズを小さくすることができる。よって、イベントグラフ１０を表す画像を生成する処理に利用するプロセッサ資源の削減、生成した画像を記憶しておくために利用する記憶領域の削減、及び生成した画像を表示させるために利用するディスプレイ装置の画面領域の削減を実現できる。また、イベントグラフ１０の画像サイズを小さくすると、ディスプレイ装置の解像度が比較的低くても、イベントグラフ１０をディスプレイ装置に表示することができる。すなわち、イベントグラフ１０を表示させるために必要なディスプレイ装置の解像度を低く抑えることができる。
【００８７】
＜特定サブグラフの出力態様の変更＞
情報処理装置２０００は、出力対象のイベントグラフ１０を出力した後、特定サブグラフの出力態様を変更するユーザ操作を受け付けてもよい。例えば情報処理装置２０００は、ユーザが特定サブグラフに対して所定の操作（例えばダブルクリック）を加えたことに応じて、特定サブグラフの出力態様を第１態様から第２態様に変更する。このようにすることで、特定サブグラフを目立ちにくい態様で出力しつつ、ユーザがその内容を詳細に把握したいと思ったときには、その内容を詳細に把握できるようにする。
【００８８】
［実施形態２］
実施形態２の情報処理装置２０００は、スコア情報を生成する機能を有する。その他の点を除き、実施形態の情報処理装置２０００が持つ機能は、実施形態１の情報処理装置２０００が持つ機能と同様である。
【００８９】
＜機能構成の例＞
図１３は、実施形態２の情報処理装置２０００の機能構成を例示する図である。実施形態２の情報処理装置２０００は、生成部２０６０をさらに有する。生成部２０６０は、イベントグラフ１０を取得し、そのイベントグラフ１０についてのスコア情報を生成または更新する。
【００９０】
＜ハードウエア構成の例＞
実施形態２の情報処理装置２０００を実現する計算機のハードウエア構成は、実施形態１と同様に、例えば図３によって表される。ただし、本実施形態の情報処理装置２０００を実現する計算機１０００のストレージデバイス１０８０には、本実施形態の情報処理装置２０００の機能を実現するプログラムモジュールがさらに記憶される。
【００９１】
＜スコア情報の生成方法＞
情報処理装置２０００は、スコア情報の生成や更新にまだ利用されていないイベントグラフ１０を取得する。例えばこのイベントグラフ１０は、情報処理装置２０００又はそれ以外の装置によって新たに生成されたイベントグラフ１０である。
【００９２】
まず生成部２０６０は、取得したイベントグラフ１０と一致するイベントグラフ１０のスコア情報が、スコア情報記憶部２０に記憶されているか否かを判定する。取得したイベントグラフ１０と一致するイベントグラフ１０のスコア情報が記憶されている場合、生成部２０６０は、そのスコア情報が示すスコアを増加させるように、そのスコア情報を更新する。一方、取得したイベントグラフ１０と一致するイベントグラフ１０のスコア情報がスコア情報記憶部２０に記憶されていない場合、生成部２０６０は、取得したイベントグラフ１０について、新たなスコア情報を生成する。
【００９３】
また、取得したイベントグラフ１０と一致するイベントグラフ１０のスコア情報がスコア情報記憶部２０に記憶されているか否かにかかわらず、生成部２０６０は、取得したイベントグラフ１０に内包されるイベントグラフ１０（すなわち、取得したイベントグラフ１０のサブグラフ）のスコア情報が、スコア情報記憶部２０に記憶されているか否かを判定する。或るイベントグラフ１０によって表されるイベント列が発生したことは、そのイベントグラフ１０のサブグラフによって表されるイベント列も発生したことを意味する。そこで生成部２０６０は、取得したイベントグラフ１０のサブグラフのスコア情報がスコア情報記憶部２０に記憶されている場合、そのスコア情報のスコアを増加させるように、そのスコア情報を更新する。
【００９４】
＜＜設定するスコアの決定方法＞＞
生成部２０６０は、イベントグラフ１０が示すイベント列の発生回数（すなわち、イベントグラフ１０の生成回数）に基づく値として、そのイベントグラフ１０のスコア情報が示すスコアを決定する。例えば生成部２０６０は、イベントグラフ１０のスコアを、そのイベントグラフ１０の生成回数と正の相関を持つ値として定める。すなわち、イベントグラフ１０の生成回数が多いほど、そのイベントグラフ１０のスコア情報が示すスコアを大きくする。
【００９５】
例えば生成部２０６０は、イベントグラフ１０の生成回数を、そのイベントグラフ１０のスコアとする。その他にも例えば、イベントグラフ１０の生成回数をスコアに変換する単調非減少関数を定めておく。生成部２０６０は、その関数にイベントグラフ１０の生成回数を入力することで、イベントグラフ１０のスコアを算出する。この単調非減少関数は、予め生成部２０６０に設定されていてもよいし、生成部２０６０からアクセス可能な記憶装置に記憶されていてもよい。なお、イベントグラフ１０の生成回数は、スコア情報に含めて記憶しておく。
【００９６】
ここでスコアの算出に用いられるイベントグラフ１０の生成回数は、過去全ての期間の生成回数であっても良いし、過去所定期間の生成回数であってもよい。後者の場合、スコア情報には、イベントグラフ１０が過去に生成された時刻を全て記録しておく。そして生成部２０６０は、イベントグラフ１０の生成回数を、そのイベントグラフ１０のスコア情報に記憶されている過去の生成時刻のうち、現在時刻から過去所定期間の間に含まれるもののみをカウントすることで算出する。なお、現在時刻から過去所定期間に含まれなくなった生成時刻については、スコア情報から削除するようにしてもよい。
【００９７】
＜＜＜対象装置の数の考慮＞＞＞
ここで、対象装置が複数ある場合、イベントグラフ１０によって表されるイベント列は、より多くの対象装置で発生するほど、対象システムにおける一般的な挙動を表していると考えられる。そのため、イベントグラフ１０のスコアは、そのイベントグラフ１０が発生した対象装置の数を考慮して定められてもよい。
【００９８】
例えば生成部２０６０は、前述したようにイベントグラフ１０の生成回数に基づいて算出されるスコアに、そのイベントグラフ１０によって示されるイベント列が発生した対象装置の割合を乗算することで得られる値を、スコア情報に設定するスコアとする。ここで、「イベントグラフ１０によって示されるイベント列が発生した対象装置の割合」とは、イベントグラフ１０によって示されるイベント列が発生した対象装置の数を、対象装置の総数で割った値である。
【００９９】
このようにイベントグラフ１０によって示されるイベント列が発生した対象装置の割合を考慮してイベントグラフ１０のスコアを定めることにより、そのイベント列が対象システムの一般的な挙動を表すかどうかを、より正確にスコアに反映することができる。
【０１００】
＜＜＜ユーザの考慮＞＞＞
ここで、対象装置を利用するユーザによって、その対象装置で発生したイベント列の重要度合いが異なることがある。例えば、対象装置が利用されている組織で長い期間働いているユーザなど、対象装置の扱いに慣れているユーザが対象装置を利用した場合、その対象装置で発生したイベント列は、その組織における通常の活動によって生じたイベント列（例えば、その組織で一般に利用されているアプリケーションを利用することで発生したイベント列）である蓋然性が高い。すなわち、正常な活動を表すイベント列である蓋然性が高い。一方で、組織に新たに配属されたユーザなど、対象装置の扱いに慣れていないユーザが対象装置を利用した場合、その対象装置で発生したイベント列は、その組織における通常の活動とは異なる活動によって生じたイベント列（例えば、その組織では一般に利用されていないアプリケーションを利用することで発生したイベント列）である蓋然性が高い。すなわち、異常な活動を表すイベント列である蓋然性が高い。
【０１０１】
そこで生成部２０６０は、イベントグラフ１０の生成回数をユーザごとにカウントしてもよい。この場合、例えば生成部２０６０は、各ユーザに与えられた重みに基づいて、イベントグラフ１０のスコアを算出する。具体的には、生成部２０６０は、イベントグラフ１０のスコアを、ユーザに与えられた重みとそのユーザについてカウントされた発生回数とを掛けた値の合計値や平均値（すなわち、重み付き平均）などとして算出する。このように各ユーザに与えられた重みを考慮することで、イベントグラフ１０のスコアが、そのイベントグラフ１０によって表されるイベント列が正常なものであるかどうかを精度よく表すようにすることができる。
【０１０２】
また、各ユーザに重みを与える代わりに、ユーザのグループに重みを与えてもよい。この場合、イベントグラフ１０の生成回数はグループごとにカウントされる。
【０１０３】
＜＜＜イベントグラフ１０が生成された契機の考慮＞＞＞
実施形態１で述べたように、イベントグラフ１０は、ユーザ操作を契機として生成されてもよいし、定期的に生成されてもよい。さらに、ユーザ操作を契機とする生成と定期的な生成の双方が行われてもよい。そして、ユーザ操作を契機とする生成と定期的な生成の双方が行われる場合、どちらを契機としてイベントグラフ１０が生成されたかが、スコアに反映されるようにしてもよい。
【０１０４】
例えばスコア情報において、イベントグラフ１０の生成回数を、ユーザ操作を契機とする生成処理による生成回数と、定期的な生成処理による生成回数とで別々に記録しておく。そして、生成部２０６０は、これら２種類の生成回数に基づいてイベントグラフ１０のスコアを決定する。例えば生成部２０６０は、イベントグラフ１０のスコアを、そのイベントグラフ１０がユーザ操作を契機とする生成処理で生成された回数と、そのイベントグラフ１０が定期的な生成処理によって生成された回数との線形和（重み付き平均など）として算出する。
【０１０５】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【０１０６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
１．  複数のイベントグラフそれぞれと、イベントグラフによって表されるイベント列の発生回数に基づくスコアとを対応づけたスコア情報を用い、出力対象のイベントグラフを構成するサブグラフの中から、前記スコアが閾値以上であるイベントグラフと一致するサブグラフを特定する特定部と、
前記出力対象のイベントグラフを、前記特定されたサブグラフと他の部分とを互いに識別できる態様で出力する出力部と、を有し、
前記イベントグラフは、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す、情報処理装置。
２．  前記出力部は、前記特定されたサブグラフよりも他の部分を強調して出力する、１．に記載の情報処理装置。
３．  前記出力部は、前記特定されたサブグラフを集約して出力する、１．に記載の情報処理装置。
４．  イベントグラフを取得し、そのイベントグラフについて前記スコアを算出することで、そのイベントグラフのスコア情報を生成又は更新する生成部を有する、１．乃至３．いずれか一つに記載の情報処理装置。
５．  前記生成部は、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列の発生回数と正の相関を持つ値として算出する、４．に記載の情報処理装置。
６．  前記生成部は、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した装置の数に基づいて算出する、４．又は５．に記載の情報処理装置。
７．  前記生成部は、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した対象装置のユーザに割り当てられた重みに基づいて算出する、４．乃至６．いずれか一つに記載の情報処理装置。
８．  前記イベントグラフは、ユーザの入力操作に応じた第１の生成処理と、定期的に実行される第２の生成処理の双方によって生成され、
前記生成部は、前記イベントグラフのスコアを、そのイベントグラフが前記第１の生成処理によって生成された回数と、そのイベントグラフが前記第２の生成処理によって生成された回数との線形和として算出する、４．乃至７．いずれか一つに記載の情報処理装置。
９．  前記特定部は、入力操作により指定された前記イベントの主体又は客体を表すノードを含むイベント列を表すイベントグラフを、前記出力対象のイベントグラフとして取得する、１．乃至８．いずれか一つに記載の情報処理装置。
【０１０７】
１０．  コンピュータによって実行させる制御方法であって、
複数のイベントグラフそれぞれと、イベントグラフによって表されるイベント列の発生回数に基づくスコアとを対応づけたスコア情報を用い、出力対象のイベントグラフを構成するサブグラフの中から、前記スコアが閾値以上であるイベントグラフと一致するサブグラフを特定する特定ステップと、
前記出力対象のイベントグラフを、前記特定されたサブグラフと他の部分とを互いに識別できる態様で出力する出力ステップと、を有し、
前記イベントグラフは、プログラムの活動に関連するイベントにおける活動内容をエッジとして表し、なおかつそのイベントの主体と客体それぞれをノードとして表す、制御方法。
１１．  前記出力ステップにおいて、前記特定されたサブグラフよりも他の部分を強調して出力する、１０．に記載の制御方法。
１２．  前記出力ステップにおいて、前記特定されたサブグラフを集約して出力する、１０．に記載の制御方法。
１３．  イベントグラフを取得し、そのイベントグラフについて前記スコアを算出することで、そのイベントグラフのスコア情報を生成又は更新する生成ステップを有する、１０．乃至１２．いずれか一つに記載の制御方法。
１４．  前記生成ステップにおいて、前記イベントグラフのスコアとそのイベントグラフによって表されるイベント列の発生回数とが正の相関を持つように、前記イベントグラフのスコアを算出する、１３．に記載の制御方法。
１５．  前記生成ステップにおいて、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した装置の数に基づいて算出する、１３．又は１４．に記載の制御方法。
１６．  前記生成ステップにおいて、前記イベントグラフのスコアを、そのイベントグラフによって表されるイベント列が発生した対象装置のユーザに割り当てられた重みに基づいて算出する、１３．乃至１５．いずれか一つに記載の制御方法。
１７．  前記イベントグラフは、ユーザの入力操作に応じた第１の生成処理と、定期的に実行される第２の生成処理の双方によって生成され、
前記生成ステップにおいて、前記イベントグラフのスコアを、そのイベントグラフが前記第１の生成処理によって生成された回数と、そのイベントグラフが前記第２の生成処理によって生成された回数との線形和として算出する、１３．乃至１６．いずれか一つに記載の制御方法。
１８．  前記特定ステップにおいて、入力操作により指定された前記イベントの主体又は客体を表すノードを含むイベント列を表すイベントグラフを、前記出力対象のイベントグラフとして取得する、１０．乃至１７．いずれか一つに記載の制御方法。
【０１０８】
１９．  １０．乃至１８．いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【図１】
2020100186.tif 000003
【図２】
2020100186.tif 000004
【図３】
2020100186.tif 000005
【図４】
2020100186.tif 000006
【図５】
2020100186.tif 000007
【図６】
2020100186.tif 000008
【図７】
2020100186.tif 000009
【図８】
2020100186.tif 000010
【図９】
2020100186.tif 000011
【図１０】
2020100186.tif 000012
【図１１】
2020100186.tif 000013
【図１２】
2020100186.tif 000014
【図１３】
2020100186.tif 000015
【国際調査報告】
2020100186.tif 000016
2020100186.tif 000017
2020100186.tif 000018
2020100186.tif 000019