以下、異常操作検知装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態において、ユーザが装置に対して行った2以上の正常な操作の集合である正常操作集合を用いて、受け付けられた操作集合の異常性を判断し、当該判断結果に関するレポートを構成し、出力する異常操作検知装置について説明する。なお、ユーザは、後述する被検査者と言っても良い。
なお、レポートは、例えば、異常であると判断された操作に対応する箇所であり、操作集合の中の箇所が視覚的に分かるレポートである。また、レポートは、例えば、ユーザ識別子と装置識別子のうちの1以上の識別子ごとに、1または2以上の操作集合を統計処理した結果である。また、レポートは、例えば、画面動画の時間軸を示すタイムラインの中の箇所であり、異常情報が異常であることを示す箇所であり、操作集合の中の箇所が、異常でない箇所と比較して、視覚的に区別可能なタイムラインを含むレポートである。
また、操作集合は、ユーザの操作により発生した内部イベントを含んでも良い。また、操作集合は、ログインからログアウトまでの1セッションの操作の集合であることは好適である。
また、本実施の形態において、異常性の検知は、例えば、後述する1セッション単位のログデータの外れ値検知、後述する新規な2以上の連続する操作の検知による判断、希な操作の検知による判断等があり得る。
また、本実施の形態において、正常操作集合は、2以上のいずれかの手順書に対応しており、受け付けられた操作集合に対する手順書に対応する正常操作集合を用いて、異常性を判断し、判断結果を出力する異常操作検知装置について説明する。なお、操作集合は、操作ログと言っても良い。
さらに、本実施の形態において、機械学習のアルゴリズムを用いて、異常性を判断し、判断結果を出力する異常操作検知装置について説明する。
図1は、本実施の形態における異常操作検知装置Aのブロック図である。異常操作検知装置Aは、格納部1、受付部2、処理部3、および出力部4を備える。
格納部1は、例えば、判断元情報格納部11、希操作情報格納部12、および手順書情報格納部13を備える。処理部3は、例えば、学習部31、判断部32、およびレポート構成部33を備える。
判断部32は、例えば、手順書決定手段321、正常操作集合選択手段322、および判断手段323を備える。
格納部1には、各種の情報が格納される。各種の情報とは、例えば、後述する判断元情報、後述する希操作情報、後述する手順書情報、後述する異常情報、画面動画である。画面動画とは、操作された装置の画面の動画である。画面動画は、2以上のフィールドを有する。フィールドは、画面の静止画である。画面動画を構成する2以上のいずれかのフィールドと、操作集合に含まれる操作情報とは、通常、対応付いている。
判断元情報格納部11には、判断元情報が格納される。判断元情報は、異常性の判断に使用される情報である。判断元情報は、2以上の正常操作集合に基づく情報である。正常操作集合は、2以上の正常操作情報に関する情報である。正常操作情報は、システム運用時の情報システムに対する正常な操作を特定する情報である。正常操作情報は、例えば、コマンド名である。正常操作情報は、例えば、操作対象のウィンドウを識別するウィンドウ識別子(例えば、ウィンドウタイトル、ウィンドウIDなど)とユーザがキーボードに入力した情報(例えば、コマンド名、コマンド名と引数[例えば、データベース名、ファイル名、変数名、データ等])とを含む。正常操作情報は、例えば、ユーザの操作により発生した内部イベントを特定する情報を含む。内部イベントは、例えば、OSが発生させるイベント、アプリケーションが発生させるイベントである。
正常操作集合は、例えば、2以上の正常操作情報から構成されるベクトルである正常操作ベクトルでも良い。正常操作ベクトルは、例えば、2以上の正常操作情報が有する単語(例えば、コマンド名、ファイル名など)の出現頻度を要素として有するベクトルである。正常操作ベクトルは、例えば、2以上の正常操作情報に対して、Bag-of-Wordsを用いてベクトル化した情報である。なお、正常操作集合から正常操作ベクトルを取得するアルゴリズムは問わない。
正常操作集合は、例えば、正常な2以上の操作列を示す2以上の正常操作情報である。正常操作集合は、例えば、情報システムに対する操作ログであり、2以上の正常な命令列であり、例えば、「useradd, mkdir, su, passwd、・・・」、「useradd, passwd, usermod・・・」、「touch, sudo, useradd・・・」である。なお、情報システムとは、コンピュータ、コンピュータ上のアプリケーション、コンピュータシステム等であり、例えば、銀行の情報システムである。また、命令列は、通常、時系列の命令列である。
判断元情報は、2以上の正常操作集合を用いて、機械学習のアルゴリズムにより構成された学習器であっても良い。なお、学習器は、例えば、後述する学習部31が取得した情報である。
また、各正常操作集合は、例えば、手順書に対応付いている。手順書に対応付いていることは、手順書を識別する手順書識別子に対応付いていることでも良いし、手順書のファイルに対応付いていることでも良い。また、手順書とは、情報システムの運用、情報システムの操作に用いられるドキュメントである。手順書は、マニュアルと言っても良い。また、手順書は、例えば、パッチをシステムに適用する際に参照するパッチ適用手順書、操作のログを取得する際に参照するログ取得手順書、ユーザを追加登録する場合に参照するユーザ追加手順書等である。
また、2以上の各正常操作集合は、操作に使用された1または2以上の手順書に対応づいて、グループ化されて格納されていることは好適である。2以上の各正常操作集合をグループ化する処理は、2以上の正常操作ベクトルをグループ化する処理であり、例えば、ベクトル間の距離を用いて正常操作ベクトルをグループ化する。かかるグループ化の処理は公知技術であるので、詳細な説明を省略する。なお、かかる処理は、処理部3が行うことは好適である。
かかることは、手順書または手順書のグループごとに、正常操作集合を分類することは、以下の操作の特性に基づいており、有効である。つまり、システム運用の現場では手順書を用いた操作が徹底されて行われることが多く、同一の手順書を用いた操作の内容は似る性質がある。その特性を利用し、収集した操作ログ(操作集合)を用いて、当該操作ログに対応する手順書と同一の手順書を用いた新たな操作の内容と比較し、後述するように、異常操作を検知することは有効である。
また、2以上の各正常操作集合は、操作対象のサーバ装置ごとにグループ化されて格納されていても良い。これは、企業におけるサーバ装置は、用途ごとに構築されるケースが多くみられる。そして、サーバ装置ごとに見た場合、行われる業務は、パッチ適用やログ取得等の数種類から10数種類である場合が多い。かかるシステム運用の特性を利用し、操作対象のサーバ装置ごとに正常操作集合をグループ化し、グループごとに正常操作集合を利用して、後述するように、異常操作を検知することは有効である。なお、サーバ装置ごとにグループ化されている場合、例えば、2以上の各正常操作集合は、サーバ装置を識別するサーバ識別子に対応付いている。なお、サーバ識別子は後述する装置識別子の一例である。
希操作情報格納部12には、1または2以上の希操作情報が格納される。希操作情報は、希な操作を特定する操作情報である。操作情報は、操作に関する情報である。操作情報は、例えば、操作を特定する命令、使用される情報名(ファイル名、データベース名など)、命令または情報(引数など)を特定するIDである。操作情報は、操作により発生する内部イベントでも良い。
希操作情報は、例えば、希な操作を特定する命令である。希操作情報は、例えば、希に使用される情報名でも良い。希操作情報は、例えば、命令または情報(引数など)を特定するIDである。希操作情報格納部12の希操作情報は、例えば、判断元情報格納部11の2以上の正常操作集合から、後述する処理部3により取得された情報である。
手順書情報格納部13には、1または2以上の手順書情報が格納される。手順書情報は、手順書に関する情報である。手順書情報は、手順書のファイルでも良いし、手順書のファイルから構成されたベクトルでも良い。手順書情報は、例えば、手順書のファイルに含まれる用語の出現頻度を要素とするベクトルである。手順書情報は、例えば、手順書のファイルをBag-of-Wordsを用いてベクトル化した情報(ベクトル)である。
また、手順書情報格納部13に、2以上の手順書情報がグループ化されていても良い。つまり、手順書情報格納部13には、似た2以上の手順書情報がグループ化されていても良い。手順書情報が、例えば、ベクトルである場合、クラスタリングされたベクトルの集合がグループを構成する。なお、似た2以上の手順書情報は、例えば、各手順書情報から構成されたベクトル間の距離の予め決められた条件を満たすほど近いベクトルに対応する2以上の手順書情報である。また、ベクトルの集合を分類し、グループ化する技術は公知技術であるので説明は省略する。また、手順書情報がグループ化されている場合、各グループを代表するベクトルが手順書情報格納部13に格納されていても良い。グループを代表するベクトルは、例えば、グループに属する1以上のベクトルの平均値のベクトルである。
受付部2は、各種の指示や情報等を受け付ける。各種の指示や情報等とは、例えば、操作集合、判断指示、学習指示、レポート出力指示である。
受付部2は、操作集合と画面動画とを受け付けても良い。かかる場合、画面動画を構成する2以上のいずれかのフィールドと、操作集合に含まれる操作情報とは、通常、対応付いている。
受付部2は、後述するタイムラインの画像の中の一の箇所を指定する箇所指示を受け付けても良い。
操作集合は、被検査者が情報システムに対して行った操作を特定する2以上の操作情報を有する情報である。操作集合は、例えば、ログインからログアウトまでの1セッションの操作情報の集合等であるが、予め決められた条件を満たす量の操作の情報の集合でも良い。予め決められた条件を満たす量の操作とは、1時間単位の操作、予め決められた量以上の操作情報等である。なお、被検査者とは、ユーザであり、異常な操作を行ったか否かを検査される者である。また、情報システムとは、例えば、サーバ装置であるが、ユーザが情報等を直接に入力する端末でも良いし、端末とサーバとの組等でも良い。
受付部2は、操作集合を、被検査者を識別するユーザ識別子と情報システムを識別する装置識別子のうちの1以上の識別子に対応付けて、受け付けることは好適である。受付部2は、例えば、1以上の識別子と対に、操作集合を受け付ける。受付部2は、例えば、1以上の識別子と対に、順次、操作情報を受け付ける。
判断指示は、操作集合の異常性に関する判断を行う指示である。判断指示は、操作集合または操作集合を特定する情報を含む。判断指示は、手順書識別子を有しても良い。また、判断指示は、サーバ装置を識別するサーバ識別子を有しても良い。なお、サーバ識別子は、装置識別子でも良い。また、判断指示は、ユーザ識別子を有しても良い。
学習指示は、2以上の正常操作集合を用いて、後述する学習器を構成する指示である。学習指示は、手順書を特定する情報を含んでも良い。手順書を特定する情報は、例えば、手順書識別子、手順書のグループを特定するグループ識別子である。学習指示は、2以上の正常操作集合を含んでも良いし、2以上の正常操作集合を特定する情報(例えば、ファイル名、データベース名など)を含んでも良い。また、学習指示は、1以上の異常操作集合を含んでも良いし、1以上の異常操作集合を特定する情報(例えば、ファイル名、データベース名など)を含んでも良い。
なお、操作集合は、情報システムに対して被験者が行った操作の集合を、情報システムが有する図示しない記録部が取得し、記録した情報である。操作集合は、被検査者が情報システムに対して、ログインからログアウトまでの1セッションの間に行った2以上の操作の操作情報を有する情報であることは好適である。ただし、操作集合は、1セッションの間の一部の期間の操作の操作情報の情報でも良い。
レポート出力指示は、レポートの出力を行うことの指示である。レポート出力指示は、出力するレポートの種類を示す種類情報を有しても良い。種類情報は、例えば、異常箇所明示レポートであることを特定する情報(例えば、「1」)、統計レポートであることを特定する情報(例えば、「2」)である。なお、レポートとは、情報の集合である。レポートは、例えば、ファイルであるが、そのデータ構造は問わない。
異常箇所明示レポートとは、異常情報が異常であると判断された異常箇所が、異常でないと判断された正常箇所と比較して、視覚的に区別可能なレポートである。異常箇所明示レポートは、操作集合を含むことは好適である。
統計レポートとは、ユーザ識別子ごと、装置識別子ごと、またはユーザ識別子と装置識別子の組ごとに、異常情報を統計処理した結果である統計処理結果を含むレポートである。
ここで、受け付けとは、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付け、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付けなどを含む概念である。
処理部3は、各種の処理を行う。各種の処理とは、例えば、学習部31、判断部32、レポート構成部33が行う処理である。各種の処理とは、例えば、受付部2が受け付けた操作情報を格納部1に蓄積する処理である。各種の処理とは、例えば、受付部2が受け付けた操作情報を、ユーザ識別子と装置識別子のうちの1以上の識別子と対にして、格納部1に蓄積する処理である。
処理部3は、例えば、受付部2が箇所指示を受け付けた場合、当該箇所指示に対応する箇所に対する操作情報を取得し、当該操作情報と対になるフィールドを、画面動画を構成するフィールドから決定する。なお、フィールドの決定とは、例えば、当該フィールドの取得、当該フィールドの識別子の取得等である。
学習部31は、機械学習のアルゴリズムにより、2以上の正常操作集合に対して学習処理を行い、学習器を構成する。
学習部31は、例えば、受付部2が学習指示を受け付けた場合に、当該学習指示に従って、2以上の正常操作集合に対して学習処理を行い、学習器を構成する。
なお、学習指示が手順書を特定する情報を含んでいる場合、学習部31は、当該手順書を特定する情報により特定される手順書に対応する2以上の正常操作集合を判断元情報格納部11から取得し、当該2以上の正常操作集合に対して学習処理を行い、学習器を構成することは好適である。また、学習部31は、1または2以上のグループごとに、2以上の正常操作集合を判断元情報格納部11から取得し、当該2以上の正常操作集合に対して学習処理を行い、学習器を構成することは好適である。なお、かかる処理により、手順書ごと、またはグループごとに学習器を構成できる。
また、機械学習のアルゴリズムは、例えば、深層学習、SVM、SVR、決定木、ランダムフォレスト等であり、問わない。
学習部31は、例えば、2以上の正常操作集合、または2以上の正常操作集合から取得されるベクトルを、機械学習の処理を行う公知のソフトウェア(例えば、TinySVM,FastText,TensorFlow ,Scikit-learnなど)に引数として与え、当該ソフトウェアを実行することにより、学習器を取得する。
学習部31は、機械学習のアルゴリズムにより、2以上の正常操作集合(正例)と、2以上の異常操作集合(負例)とを用いて学習処理を行い、学習器を構成しても良い。かかる場合、負例は、予め与えられていることは好適であるが、学習部31が自動生成しても良い。例えば、学習部31は、2以上の各正常操作集合から構成される2以上の各ベクトルとの距離が閾値以上の1以上のベクトルを自動生成する。例えば、学習部31は、2以上の各正常操作集合から構成される2以上のベクトルの平均値のベクトル(2以上のベクトルの要素の平均値を要素とするベクトル)との距離が閾値以上の1以上のベクトルを自動生成する。
判断部32は、判断元情報と、受付部2が受け付けた操作集合とを用いて、異常情報を取得する。異常情報は、受付部2が受け付けた操作集合に対する異常性に関する情報である。異常情報は、例えば、異常であることを示す情報、正常であることを示す情報、受付部2が受け付けた操作集合の中の異常な箇所を示す箇所情報等である。箇所情報は、例えば、異常な命令列、希操作情報、受付部2が受け付けた操作集合の中の希操作情報を特定する情報である。箇所情報は、例えば、操作集合の中のオフセット、行番号等である。
異常情報は、例えば、上述したグループごとの異常性に関する情報である。異常情報は、例えば、異常性に関するレポートでも良い。
判断部32は、受付部2が受け付けた操作集合に対応付いている識別子(ユーザ識別子と情報システムを識別する装置識別子のうちの1以上の識別子)に対応付けて、取得した異常情報を蓄積することは好適である。なお、異常情報の蓄積先は、例えば、格納部1であるが、外部の装置等で良く、蓄積先は問わない。
判断部32は、例えば、受付部2が受け付けた操作集合から入力ベクトルを構成し、入力ベクトルと2以上の正常操作ベクトルとを用いて、異常情報を取得する。なお、入力ベクトルは、操作集合ベクトルと言っても良い。
判断部32は、例えば、受付部2が受け付けた操作集合に対応する手順書を決定し、手順書に対応する2以上の正常操作集合を用いて異常情報を取得する。
判断部32は、例えば、受付部2が受け付けた操作集合を、機械学習のアルゴリズムにより、学習器に適用し、異常情報を取得する。なお、かかる異常情報を取得する処理は、例えば、機械学習を実現するソフトウェア(実行モジュール、関数、またはメソッド等)に、操作集合を特定する情報(例えば、操作集合が含まれるファイルのファイル名、操作集合が含まれるファイルのファイルポインタ、操作集合自体等)と学習器を特定する情報(学習器のファイル名、学習器のファイルのファイルポインタ等)とを引数として与え、当該ソフトウェアを実行する処理である。
判断部32は、例えば、以下の(1)から(3)のうちの1以上の方法で異常を判断する。なお、(1)は外れ値検知、(2)は新規時系列特徴による検知、(3)は希少特徴による検知という。
(1)外れ値検知
外れ値検知とは、異常性の判断対象の操作集合の全体が、正常操作集合に対して、外れているか否かを判断することである。
判断部32は、例えば、受付部2が受け付けた操作集合の全体を、判断元情報に対して適用し、外れ値に関する異常情報を取得する。
判断部32は、例えば、受付部2が受け付けた操作集合の全体から構成されるベクトルである操作集合ベクトルと、2以上の各正常操作集合から構成されるベクトルである各正常操作集合ベクトルとの距離を取得し、距離の平均値が閾値以上であるか否かを判断する。判断部32は、例えば、距離の平均値が閾値以上または閾値より大きい場合は、異常であることを示す異常情報を取得し、距離の平均値が閾値以下または閾値未満である場合は、正常であることを示す異常情報を取得する。
また、判断部32は、例えば、2以上の各正常操作集合から構成される正常操作集合ベクトルの平均値を取得し、当該平均値と、操作集合の全体から構成される操作集合ベクトルとの距離を取得し、距離が閾値以上であるか否かを判断する。判断部32は、例えば、距離が閾値以上または閾値より大きい場合は、異常であることを示す異常情報を取得し、距離が閾値以下または閾値未満である場合は、正常であることを示す異常情報を取得する。
判断部32は、例えば、受付部2が受け付けた操作集合と、判断元情報格納部11の判断元情報を比較して、lofによる外れ値検知を行っても良い。さらに具体的には、判断部32は、例えば、受付部2が受け付けた操作集合から取得した操作集合ベクトルと、判断元情報格納部11の2以上の各正常操作集合ベクトルとを比較して、lofによる外れ値検知を行っても良い。なお、lofによる外れ値検知は公知技術であるので、説明を省略する。
また、判断部32は、例えば、受付部2が受け付けた操作集合の全体を、上述した学習器に適用し、機械学習のアルゴリズムにより異常情報を取得する。なお、学習器が、異常か正常かを分類する学習器である場合、判断部32は、受付部2が受け付けた操作集合の全体を、上述した学習器に適用し、機械学習のアルゴリズムにより、異常か正常かを示す異常情報を取得する。異常か正常かを分類する学習器は、例えば、正常な1以上の操作集合(正例)と異常な1以上の操作集合(負例)との両方を、機械学習のアルゴリズムにより学習させた結果であることは好適である。さらに詳細には、異常か正常かを分類する学習器は、例えば、正常な1以上の各操作集合から取得した1以上のベクトル(1以上の正例)と異常な1以上の各操作集合から取得した1以上のベクトル(1以上の負例)との両方を、機械学習のアルゴリズムにより学習させた結果であることは好適である。
(2)新規時系列特徴による検知
新規時系列特徴による検知とは、異常性の判断対象の操作集合の中に、正常操作集合には出現しない、または出現し難い時系列の操作列の存在に関する異常性の検知である。
判断部32は、連続操作情報を、判断元情報格納部11の2以上の正常操作集合に対して適用し、異常情報を取得する。なお、連続操作情報とは、時間的に連続する2以上の操作の操作情報である。連続操作情報は、2以上の操作情報を有する。
判断部32は、例えば、受付部2が受け付けた操作集合から、2または3以上の連続する操作列の情報である1または2以上の操作情報を取得し、取得した操作情報が判断元情報格納部11の2以上の正常操作集合に含まれるか否かを検知する。そして、判断部32は、例えば、判断元情報格納部11の2以上の正常操作集合に含まれない新規な連続操作情報の出現数または出現割合を取得する。そして、判断部32は、例えば、かかる出現数または出現割合が閾値以上または閾値より大きい場合、異常であることを示す異常情報を取得し、閾値以下または閾値より小さい場合、正常であることを示す異常情報を取得する。なお、判断部32は、例えば、かかる出現数または出現割合をパラメータとする増加関数を用いて算出した値を異常スコアとして取得しても良い。なお、異常スコアは、異常情報の一例である。また、新規な連続操作情報の出現割合は、例えば、「受付部2が受け付けた操作集合の中の新規な連続操作情報の出現数/受付部2が受け付けた操作集合の中の連続操作情報の数」により算出される。
(3)希少特徴による検知
希少特徴による検知とは、異常性の判断対象の操作集合の中に、正常操作集合には出現しない、または出現し難い操作の存在に関する異常性の検知である。
判断部32は、受付部2が受け付けた操作集合の中に、希操作情報格納部12の1以上の各希操作情報の存在に関する希操作存在情報を取得し、希操作存在情報を用いて異常情報を取得する。希操作存在情報とは、例えば、希操作情報の含有率(希操作情報の数/操作情報の数)、希操作情報の存在数、希操作情報が存在するか否かなどである。
手順書決定手段321は、受付部2が受け付けた操作集合を用いて、手順書を決定する。手順書決定手段321は、例えば、受付部2が受け付けた操作集合からベクトルを構成し、当該ベクトルと、手順書情報格納部13のベクトルである2以上の各手順書情報との距離を算出し、距離が最も小さい手順書情報に対応する手順書を、採用する手順書として決定する。手順書決定手段321は、例えば、受付部2が受け付けた操作集合からベクトルを構成し、当該ベクトルと、手順書情報格納部13に格納されている各グループのベクトルとの距離を算出し、距離が最も小さいグループに対応する手順書を、採用する手順書として決定する。
手順書決定手段321は、受付部2が受け付けた手順書識別子を取得することにより、手順書を決定しても良い。
正常操作集合選択手段322は、手順書決定手段321が決定した手順書に対応する2以上の正常操作集合を判断元情報格納部11から取得する。かかる場合、正常操作集合は、手順書に対応付いている。正常操作集合選択手段322は、例えば、手順書決定手段321が取得した手順書識別子と対になる2以上の正常操作集合を判断元情報格納部11から取得する。また、正常操作集合選択手段322は、受付部2が受け付けた判断指示に含まれるサーバ識別子と対になる2以上の正常操作集合を判断元情報格納部11から取得しても良い。
判断手段323は、正常操作集合選択手段322が取得した2以上の正常操作集合を用いて異常情報を取得する。なお、判断手段323は、手順書決定手段321と正常操作集合選択手段322とを有さず、すべての正常操作集合を用いて、異常情報を取得しても良い。
なお、判断手段323が2以上の正常操作集合を用いて異常情報を取得する処理は、上述したので、再度の説明を省略する。判断手段323が2以上の正常操作集合を用いて異常情報を取得する処理は、例えば、上述した(1)は外れ値検知、(2)は新規時系列特徴による検知、(3)は希少特徴による検知である。
レポート構成部33は、判断部32が取得した異常情報を用いて、異常に関するレポートを構成する。
レポート構成部33は、例えば、操作集合の中の箇所であり、異常情報が異常であると判断された異常箇所が、異常でないと判断された正常箇所と比較して、視覚的に区別可能なレポートであり、操作集合を含むレポートを構成する。つまり、レポート構成部33は、例えば、判断部32が取得した異常情報を用いて、異常箇所明示レポートを構成する。判断部32が取得した異常情報が、受付部2が受け付けた操作集合の中の異常な箇所を示す情報を含む場合、レポート構成部33は、例えば、当該操作集合の中の異常な箇所を、異常でない箇所と比較して目立つ態様となるようなレポートを構成する。かかるレポートは、操作集合の中の異常な箇所の1以上の各属性値(例えば、文字色、フォント、背景色等)を、正常な箇所の対応する属性値と異なる属性値とした操作集合の情報(例えば、操作集合のファイル)である。
レポート構成部33は、例えば、判断部32が取得した異常情報を用いて、統計レポートを構成する。レポート構成部33は、例えば、判断部32が取得した異常情報を統計処理し、統計レポートを構成する。
レポート構成部33は、例えば、ユーザ識別子ごとに異常情報を統計処理し、統計処理結果を含むレポートを構成する。レポート構成部33は、例えば、一のユーザ識別子と対になる操作集合を用いて取得された1以上の異常情報を統計処理し、統計処理結果を含む統計レポートを構成する。レポート構成部33は、例えば、一のユーザ識別子と対になる操作集合を用いて取得された1以上の異常情報を用いて、正常操作集合数と異常操作集合数とを取得し、当該正常操作集合数と異常操作集合数とを用いて、正常な操作集合の割合または異常な操作集合の割合を有する統計レポートを取得する。また、レポート構成部33は、例えば、一のユーザ識別子と対になる操作集合を用いて取得された1以上の異常情報を用いて、正常操作集合数と、異常操作集合数とのうちの1以上の数を有する統計レポートを取得する。なお、正常操作集合数とは、異常であると判断された箇所を含まない操作集合(正常な操作集合)の数である。また、異常操作集合数とは、異常であると判断された箇所を含む操作集合(異常な操作集合)の数である。また、レポート構成部33は、例えば、一のユーザ識別子と対になる1または2以上の操作集合の異常な操作の箇所の全体に対する割合等を含む統計レポートを構成しても良い。
レポート構成部33は、例えば、装置識別子ごとに異常情報を統計処理し、統計処理結果を含むレポートを構成する。なお、装置識別子とは、通常、ユーザがアクセスするサーバの識別子である。装置識別子は、例えば、1または2以上の手順書の識別子と対応付いている。レポート構成部33は、例えば、一の装置識別子と対になる操作集合を用いて取得された1以上の異常情報を統計処理し、統計処理結果を含む統計レポートを構成する。レポート構成部33は、例えば、一の装置識別子と対になる操作集合を用いて取得された1以上の異常情報を用いて、正常操作集合数と異常操作集合数とを取得し、当該正常操作集合数と異常操作集合数とを用いて、正常な操作集合の割合または異常な操作集合の割合を有する統計レポートを取得する。また、レポート構成部33は、例えば、一の装置識別子と対になる操作集合を用いて取得された1以上の異常情報を用いて、正常操作集合数と、異常操作集合数とのうちの1以上の数を有する統計レポートを取得する。また、レポート構成部33は、例えば、一の装置識別子と対になる1または2以上の操作集合の異常な操作の箇所の全体に対する割合等を含む統計レポートを構成しても良い。
レポート構成部33は、例えば、ユーザ識別子と装置識別子の組ごとに、異常情報を統計処理し、統計処理結果を含むレポートを構成する。レポート構成部33は、例えば、一のユーザ識別子と装置識別子の組(以下、一の組)と対になる操作集合を用いて取得された1以上の異常情報を統計処理し、統計処理結果を含む統計レポートを構成する。レポート構成部33は、例えば、一の組と対になる操作集合を用いて取得された1以上の異常情報を用いて、正常操作集合数と異常操作集合数とを取得し、当該正常操作集合数と異常操作集合数とを用いて、正常な操作集合の割合または異常な操作集合の割合を有する統計レポートを取得する。また、レポート構成部33は、例えば、一の組と対になる操作集合を用いて取得された1以上の異常情報を用いて、正常操作集合数と、異常操作集合数とのうちの1以上の数を有する統計レポートを取得する。また、レポート構成部33は、例えば、一の組と対になる1または2以上の操作集合の異常な操作の箇所の全体に対する割合等を含む統計レポートを構成しても良い。
レポート構成部33は、例えば、タイムラインレポートを構成する。タイムラインレポートとは、画面動画の時間軸を示すタイムラインの中の箇所であり、異常情報が異常であることを示す箇所であり、操作集合の中の箇所が、異常でない箇所と比較して、視覚的に区別可能なタイムラインを含むレポートである。レポート構成部33は、例えば、異常情報が異常であることを示す操作情報に対応する画面動画の箇所を特定し、当該箇所が正常な操作情報に対応する画面動画の箇所と区別可能なタイムラインの画像を構成する。タイムラインとは、画面動画を構成するフィールドの、画面動画全体の中の位置を示す情報であり、例えば、バー状の形状であるが、その形状は問わない。
出力部4は、レポート構成部33が構成したレポートを出力する。出力部4は、判断部32が取得した異常情報を出力しても良い。出力部4は、画面動画とタイムラインとを出力する。出力部4は、タイムラインのみを出力しても良い。ここで、出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置(例えば、図示しない端末装置)への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。
格納部1、判断元情報格納部11、希操作情報格納部12、および手順書情報格納部13は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
格納部1等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部1等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部1等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部1等で記憶されるようになってもよい。
受付部2は、無線または有線の通信手段で実現されても良い。
処理部3、学習部31、判断部32、レポート構成部33、手順書決定手段321、正常操作集合選択手段322、および判断手段323は、通常、MPUやメモリ等から実現され得る。処理部3等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
出力部4は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部4は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。なお、出力部4は、通信手段で実現されても良い。
次に、異常操作検知装置Aの動作例について、図2のフローチャートを用いて説明する。
(ステップS201)受付部2は、判断指示を受け付けたか否かを判断する。判断指示を受け付けた場合はステップS202に行き、判断指示を受け付けなかった場合はステップS208に行く。
(ステップS202)判断部32は、ステップS201で判断指示に対応する操作集合を取得する。判断部32は、例えば、判断指示が有する操作集合を取得する。判断部32は、操作集合に対応付いているユーザ識別子と装置識別子とをも取得することは好適である。
(ステップS203)判断部32は、ステップS202で取得した操作集合に対して、外れ値検知処理を行う。外れ値検知処理の例について、図3のフローチャートを用いて説明する。なお、判断部32は、外れ値検知処理の結果である異常情報を、取得したユーザ識別子と装置識別子とに対応付けて蓄積することは好適である。
(ステップS204)判断部32は、ステップS202で取得した操作集合に対して、新規時系列特徴による検知処理を行う。新規時系列特徴検知処理の例について、図4のフローチャートを用いて説明する。なお、判断部32は、新規時系列特徴検知処理の結果である異常情報を、取得したユーザ識別子と装置識別子とに対応付けて蓄積することは好適である。
(ステップS205)判断部32は、ステップS202で取得した操作集合に対して、希少特徴による検知処理を行う。希少特徴検知処理の例について、図5のフローチャートを用いて説明する。なお、判断部32は、希少特徴検知処理の結果である異常情報を、取得したユーザ識別子と装置識別子とに対応付けて蓄積することは好適である。
(ステップS206)処理部3は、ステップS203、ステップS204、およびステップS205で取得した異常情報のうちの1以上の異常情報を用いて出力する異常情報を構成する。
(ステップS207)出力部4は、ステップS206で構成された異常情報を出力する。ステップS201に戻る。なお、ここで、出力部4は、例えば、異常情報を格納部1に蓄積する。出力部4は、例えば、異常情報を、ユーザ識別子と装置識別子のうちの1以上の識別子と対にして格納部1に蓄積する。
(ステップS208)受付部2は、レポート出力指示を受け付けたか否かを判断する。レポート出力指示を受け付けた場合はステップS209に行き、レポート出力指示を受け付けなかった場合はステップS211に行く。
(ステップS209)レポート構成部33は、レポート出力指示に対応する異常情報を用いて、レポートを構成する。かかるレポート構成処理の例について、図6のフローチャートを用いて説明する。
(ステップS210)出力部4は、ステップS209で構成されたレポートを出力する。ステップS201に戻る。
(ステップS211)受付部2は、学習指示を受け付けたか否かを判断する。学習指示を受け付けた場合はステップS212に行き、学習指示を受け付けなかった場合はステップS201に戻る。
(ステップS209)学習部31は、学習処理を行う。ステップS201に戻る。学習処理の例について、図8のフローチャートを用いて説明する。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、ステップS203の外れ値検知処理の例について、図3のフローチャートを用いて説明する。
(ステップS301)判断部32は、カウンタiに1を代入する。
(ステップS302)判断部32は、i番目の正常操作集合が、判断元情報格納部11に存在するか否かを判断する。i番目の正常操作集合が存在する場合はステップS303に行き、存在しない場合はステップS305に。
(ステップS303)判断部32は、i番目の正常操作集合を判断元情報格納部11から取得し、i番目の正常操作集合からベクトルを取得する。なお、かかるベクトルは、正常操作ベクトルである。
(ステップS304)判断部32は、カウンタiを1、インクリメントする。ステップS302に戻る。
(ステップS305)判断部32は、ステップS202で取得された操作集合から操作集合ベクトルを取得する。
(ステップS306)判断部32は、ステップS305で取得した操作集合ベクトルが、ステップS303で取得した2以上の正常操作ベクトルに対して、外れ値か否かを判断する。外れ値ある場合はステップS307に行き、外れ値でない場合はステップS308に行く。なお、外れ値か否かは、例えば、lofにより取得される。
(ステップS307)判断部32は、変数「第一異常情報」に「異常」を示す値を代入する。上位処理にリターンする。なお、かかる値は、検査対象の操作集合が外れ値であることを示す。
(ステップS308)判断部32は、変数「第一異常情報」に「正常」を示す値を代入する。上位処理にリターンする。なお、かかる値は、検査対象の操作集合が外れ値でないことを示す。
次に、ステップS204の新規時系列特徴検知処理の例について、図4のフローチャートを用いて説明する。
(ステップS402)判断部32は、ステップS202で取得された操作集合の中でi番目の連続操作情報が存在するか否かを判断する。i番目の連続操作情報が存在する場合はステップS403に行き、i番目の連続操作情報が存在しない場合はステップS406に行く。
(ステップS403)判断部32は、ステップS202で取得された操作集合の中からi番目の連続操作情報を取得する。なお、判断部32は、例えば、2以上の操作情報の列である操作集合の中から、カレントの操作情報をずらしながら、n個(nは2または3以上の自然数)の連続する操作情報の列である連続操作情報を取得する。なお、ずらす間隔は、通常、1であるが、n等でも良い場合があり得る。
(ステップS404)判断部32は、ステップS403で取得したi番目の連続操作情報の、判断元情報格納部11の2以上の正常操作集合における出現回数を取得する。
(ステップS405)判断部32は、カウンタiを1、インクリメントする。ステップS402に戻る。
(ステップS406)判断部32は、ステップS404で取得した連続操作情報の出現回数を用いて、第二異常情報を取得する。上位処理にリターンする。
なお、判断部32は、例えば、ステップS404で取得した出現回数が第一の閾値以下または第一の閾値未満(例えば、0)である連続操作情報の数を取得し、当該数が第二の閾値以上または第二の閾値より大きい場合に、変数「第二異常情報」に「異常」を示す値を代入する。また、判断部32は、例えば、ステップS404で取得した出現回数が第一の閾値以下または第一の閾値未満(例えば、0)である連続操作情報の数を取得し、当該数が第二の閾値以下または第二の閾値未満である場合に、変数「第二異常情報」に「正常」を示す値を代入する。
また、判断部32は、例えば、ステップS404で取得した出現回数が第一の閾値以下または第一の閾値未満(例えば、0)である連続操作情報の数を取得し、当該数を用いて、検査対象の操作集合における割合を取得し、当該割合が第二の閾値以上または第二の閾値より大きい場合に、変数「第二異常情報」に「異常」を示す値を代入する。また、判断部32は、例えば、ステップS404で取得した出現回数が第一の閾値以下または第一の閾値未満(例えば、0)である連続操作情報の割合を取得し、当該割合が第二の閾値以下または第二の閾値未満である場合に、変数「第二異常情報」に「正常」を示す値を代入する。
また、判断部32は、例えば、変数「第二異常情報」に「異常」を示す値を代入した元になった連続操作情報の箇所を示す箇所情報を、変数「第二異常情報」に対応付けて、格納部1に蓄積しても良い。なお、箇所情報は、操作集合の中の箇所を特定する情報である。箇所情報は、例えば、行数を示す情報、アドレス、操作集合のファイル内でのオフセット等である。
次に、ステップS205の希少特徴検知処理について、図5のフローチャートを用いて説明する。
(ステップS501)判断部32は、初期化処理を行う。初期化処理は、変数「希操作回数」に0を代入する処理を含む。
(ステップS502)判断部32は、取得した操作集合(検査対象の操作集合)の中の各要素の出現回数を取得する。なお、要素は、通常、操作情報である。
(ステップS503)判断部32は、カウンタiに1を代入する。
(ステップS504)判断部32は、取得した操作集合(検査対象の操作集合)の中に、i番目の要素が存在するか否かを判断する。i番目の要素が存在する場合はステップS505に行き、i番目の要素が存在しない場合はステップS509に行く。
(ステップS505)判断部32は、取得した操作集合(検査対象の操作集合)の中のi番目の要素を取得する。
(ステップS506)判断部32は、ステップS505で取得したi番目の要素が希操作情報であるか否かを判断する。i番目の要素が希操作情報である場合はステップS507に行き、i番目の要素が希操作情報でない場合はステップS508に行く。i番目の要素が希操作情報であるか否かは、例えば、希操作情報格納部12にi番目の要素が存在するか否かにより行う。つまり、判断部32は、i番目の要素が希操作情報格納部12に存在する場合は、i番目の要素が希操作情報であると判断する。また、判断部32は、i番目の要素が判断元情報格納部11の2以上の正常操作集合に存在する数または割合を算出し、数または割合が閾値以下または閾値より小さい場合に、i番目の要素が希操作情報であると判断する。また、判断部32は、例えば、希操作情報が出現する箇所を示す箇所情報を、格納部1に蓄積しても良い。箇所情報は、操作集合の中の箇所を特定する情報である。
(ステップS507)判断部32は、変数「希操作回数」を1、インクリメントする。
(ステップS508)判断部32は、カウンタiを1、インクリメントする。ステップS504に戻る。
(ステップS509)判断部32は、変数「希操作回数」の値が条件を満たすか否かを判断する。条件を満たす場合はステップS510に行き、条件を満たさない場合はステップS511に行く。なお、ここで、判断部32は、変数「希操作回数」の値が予め決められた条件を満たすほど大きいか否かを判断する。
(ステップS510)判断部32は、変数「第三異常情報」に「異常」であることを示す値を代入する。上位処理にリターンする。変数「第三異常情報」が「異常」であることを示す値である場合、希少な操作が多数行われたことを示す。
(ステップS511)判断部32は、変数「第三異常情報」に「正常」であることを示す値を代入する。上位処理にリターンする。
次に、ステップS209のレポート構成処理の例について、図6のフローチャートを用いて説明する。
(ステップS601)レポート構成部33は、異常箇所明示レポートを構成するか否かを判断する。異常箇所明示レポートを構成する場合はステップS602に行き、異常箇所明示レポートを構成しない場合はステップS608に行く。なお、レポート構成部33は、例えば、受け付けられたレポート出力指示に含まれる種類情報が異常箇所明示レポートを示す情報であるか否かを判断する。また、レポート構成部33は、例えば、受け付けられたレポート出力指示に操作集合を特定する情報が含まれるか否かを判断する。操作集合を特定する情報が含まれる場合は、レポート構成部33は、異常箇所明示レポートを構成すると判断し、操作集合を特定する情報が含まれない場合は、レポート構成部33は、異常箇所明示レポートを構成しないと判断する。
(ステップS602)レポート構成部33は、受け付けられたレポート出力指示に対応する操作集合を取得する。なお、例えば、レポート出力指示が操作集合を特定する情報を含む場合、レポート構成部33は、当該操作集合を特定する情報により特定される操作集合を格納部1から読み出す。また、例えば、レポート構成部33は、レポート出力指示に含まれる操作集合を取得する。
(ステップS603)レポート構成部33は、カウンタiに1を代入する。
(ステップS604)レポート構成部33は、ステップS602で取得した操作集合に対応するi番目の箇所情報が格納部1に存在するか否かを判断する。i番目の箇所情報が存在する場合はステップS605に行き、存在しない場合はステップS607に行く。
(ステップS605)レポート構成部33は、ステップS602で取得した操作集合の中のi番目の箇所情報が示す箇所の属性値を変更する。
(ステップS606)レポート構成部33は、カウンタiを1、インクリメントする。ステップS604に戻る。
(ステップS607)レポート構成部33は、異常箇所明示レポートを取得する。
(ステップS608)レポート構成部33は、統計レポートを構成するか否かを判断する。統計レポートを構成する場合はステップS609に行き、統計レポートを構成しない場合は上位処理にリターンする。なお、レポート構成部33は、例えば、受け付けられたレポート出力指示に含まれる種類情報が統計レポートを示す情報であるか否かを判断する。また、レポート構成部33は、例えば、受け付けられたレポート出力指示にユーザ識別子、装置識別子のうちの1以上の識別子が含まれるか否かを判断する。1以上の識別子が含まれる場合は、レポート構成部33は、統計レポートを構成すると判断し、1以上の識別子が含まれない場合は、レポート構成部33は、統計レポートを構成しないと判断する。
(ステップS609)レポート構成部33は、統計レポートを作成する処理を行う。上位処理にリターンする。かかる統計レポート作成処理について、図7のフローチャートを用いて説明する。
なお、図6のフローチャーにおいて、タイムラインレポートを構成しても良いことは言うまでもない。
次に、ステップS609の統計レポート作成処理について、図7のフローチャートを用いて説明する。
(ステップS701)レポート構成部33は、ユーザごとの統計レポートを作成するか否かを判断する。ユーザごとの統計レポートを作成する場合はステップS702に行き、ユーザごとの統計レポートを作成しない場合はステップS710に行く。
(ステップS702)レポート構成部33は、カウンタiに1を代入する。
(ステップS703)レポート構成部33は、操作集合または異常情報に対応付いているi番目のユーザ識別子が存在するか否かを判断する。i番目のユーザ識別子が存在する場合はステップS704に行き、i番目のユーザ識別子が存在しない場合はステップS709に行く。
(ステップS704)レポート構成部33は、i番目のユーザ識別子と対応付く操作集合または異常情報を用いて、正常操作集合数を取得する。
(ステップS705)レポート構成部33は、i番目のユーザ識別子と対応付く操作集合または異常情報を用いて、異常操作集合数を取得する。
(ステップS706)レポート構成部33は、ステップS704で取得した正常操作集合数とステップS705で取得した異常操作集合数とを用いて、統計処理結果(例えば、異常の割合)を取得する。
(ステップS707)レポート構成部33は、i番目のユーザ識別子に対応付けて、ステップS706で取得した統計処理結果を格納部1に蓄積する。
(ステップS708)レポート構成部33は、カウンタiを1、インクリメントする。ステップS703に戻る。
(ステップS709)レポート構成部33は、ユーザごとの統計レポートを取得する。上位処理にリターンする。
(ステップS710)レポート構成部33は、装置ごとの統計レポートを作成するか否かを判断する。装置ごとの統計レポートを作成する場合はステップS711に行き、装置ごとの統計レポートを作成しない場合はステップS719に行く。
(ステップS711)レポート構成部33は、カウンタiに1を代入する。
(ステップS712)レポート構成部33は、操作集合または異常情報に対応付いているi番目の装置識別子が存在するか否かを判断する。i番目の装置識別子が存在する場合はステップS713に行き、i番目の装置識別子が存在しない場合はステップS718に行く。
(ステップS713)レポート構成部33は、i番目の装置識別子と対応付く操作集合または異常情報を用いて、正常操作集合数を取得する。
(ステップS714)レポート構成部33は、i番目の装置識別子と対応付く操作集合または異常情報を用いて、異常操作集合数を取得する。
(ステップS715)レポート構成部33は、ステップS713で取得した正常操作集合数とステップS714で取得した異常操作集合数とを用いて、統計処理結果(例えば、異常の割合)を取得する。
(ステップS716)レポート構成部33は、i番目の装置識別子に対応付けて、ステップS715で取得した統計処理結果を格納部1に蓄積する。
(ステップS717)レポート構成部33は、カウンタiを1、インクリメントする。ステップS712に戻る。
(ステップS718)レポート構成部33は、装置ごとの統計レポートを取得する。上位処理にリターンする。
(ステップS719)レポート構成部33は、組ごとの統計レポートを作成するか否かを判断する。組ごとの統計レポートを作成する場合はステップS720に行き、組ごとの統計レポートを作成しない場合は上位処理にリターンする。
(ステップS720)レポート構成部33は、カウンタiに1を代入する。
(ステップS721)レポート構成部33は、操作集合または異常情報に対応付いているi番目の組が存在するか否かを判断する。i番目の組が存在する場合はステップS722に行き、i番目の組が存在しない場合はステップS727に行く。
(ステップS722)レポート構成部33は、i番目の組と対応付く操作集合または異常情報を用いて、正常操作集合数を取得する。
(ステップS723)レポート構成部33は、i番目の組と対応付く操作集合または異常情報を用いて、異常操作集合数を取得する。
(ステップS724)レポート構成部33は、ステップS722で取得した正常操作集合数とステップS723で取得した異常操作集合数とを用いて、統計処理結果(例えば、異常の割合)を取得する。
(ステップS725)レポート構成部33は、i番目の組に対応付けて、ステップS715で取得した統計処理結果を格納部1に蓄積する。
(ステップS726)レポート構成部33は、カウンタiを1、インクリメントする。ステップS721に戻る。
(ステップS727)レポート構成部33は、組ごとの統計レポートを取得する。上位処理にリターンする。
なお、図7のフローチャートにおいて、レポート構成部33は、ユーザごとの統計レポート、装置ごとの統計レポート、組ごとの統計レポートのうちの2以上の統計レポートを取得しても良い。
また、図7のフローチャートにおいて、レポート構成部33は、取得した統計レポートを格納部1に蓄積することは好適である。
次に、ステップS209の学習処理について、図8のフローチャートを用いて説明する。
(ステップS801)学習部31は、カウンタiに1を代入する。
(ステップS802)学習部31は、i番目の正常操作集合が存在するか否かを判断する。i番目の正常操作集合が存在する場合はステップS803に行き、i番目の正常操作集合が存在しない場合はステップS805に行く。
(ステップS803)学習部31は、i番目の正常操作集合から正常操作ベクトルを構成する。
(ステップS804)学習部31は、カウンタiを1、インクリメントする。ステップS802に戻る。
(ステップS805)学習部31は、カウンタjに1を代入する。
(ステップS806)学習部31は、j番目の異常操作集合が存在するか否かを判断する。j番目の異常操作集合が存在する場合はステップS803に行き、j番目の異常操作集合が存在しない場合はステップS805に行く。
(ステップS807)学習部31は、j番目の異常操作集合から異常操作ベクトルを構成する。
(ステップS808)学習部31は、カウンタjを1、インクリメントする。ステップS802に戻る。
(ステップS809)学習部31は、2以上の正常操作ベクトル、および1以上の異常操作ベクトルを用いて、機械学習のアルゴリズムにより学習処理を行い、操作集合が正常か否かを判断するための学習器を構成する。
(ステップS810)学習部31は、ステップS809で構成された学習器を判断元情報格納部11に蓄積する。上位処理にリターンする。
なお、図8のフローチャートにおいて、学習部31は、手順書ごと、または手順書のグループごと、またはサーバ装置ごとに学習器を構成し、蓄積することは好適である。
以下、本実施の形態における異常操作検知装置Aの具体的な動作例について説明する。まず、判断元情報格納部11に判断元情報が蓄積される2つの具体例(具体例1、具体例2)について説明する。次に、異常検知のためのクラスタ選択の処理を具体例3で説明する。次に、外れ値検知、新規時系列特徴による検知、希少特徴による検知の各々の異常検知を、具体例4、具体例5、具体例6を用いて説明する。次に、異常操作検知装置Aが異常箇所明示レポートを出力する場合を、具体例7を用いて説明する。また、異常操作検知装置Aが統計レポートを出力する場合を、具体例8を用いて説明する。さらに、異常操作検知装置Aがタイムラインレポートを出力する場合を、具体例9を用いて説明する。
(具体例1)
判断元情報格納部11に判断元情報が蓄積される具体例1を、図9を参照して説明する。具体例1において、ユーザが、端末装置を用いてサーバ装置にログインし、ログアウトするまでの期間、システム運用のための各種の正常な操作を行った、とする。なお、ユーザは、手順書をもとに作業を実施した、とする。
そして、図示しない端末装置では、ユーザが手順書をもとに入力した正常な操作の操作情報(例えば、ウィンドウタイトル、およびキーボード入力)を記録し、ログデータ(操作集合)を蓄積した、とする。そして、端末装置から異常操作検知装置Aにログデータと、サーバ識別子とユーザ識別子とが送信された、とする。なお、ログデータは、正常操作集合であり、1セッション(ログインからログアウトまで)分の操作集合である。また、サーバ識別子は、ユーザが操作したシステムを構成するサーバ装置であり、端末装置に格納されていた、とする。なお、サーバ識別子は、ここでは、装置識別子である。また、ユーザ識別子も端末装置に格納されていた、とする。
次に、異常操作検知装置Aの受付部2は、端末装置から正常操作集合とサーバ識別子とユーザ識別子とを受信する。
次に、異常操作検知装置Aの処理部3は、正常操作集合を、例えば、Bag-of-Wordsを用いて、ベクトル化し、正常操作集合ベクトルを構成し、サーバ識別子とユーザ識別子とに対応付けて、判断元情報格納部11に蓄積する。
また、処理部3は、各サーバ識別子に対応付いている2以上の正常操作集合ベクトルを、クラスタリングする。そして、かかるクラスタリングの結果、各サーバ識別子に対応付いている2以上の正常操作集合ベクトルは、手順書ごとにグループ化される、とする。
なお、端末装置から異常操作検知装置Aにログデータと、サーバ識別子と、手順書識別子とユーザ識別子とが送信されても良い。かかる場合、異常操作検知装置Aの受付部2は、端末装置から正常操作集合とサーバ識別子と手順書識別子とユーザ識別子とを受信する。そして、処理部3は、正常操作集合を、例えば、Bag-of-Wordsを用いて、ベクトル化し、正常操作集合ベクトルを構成し、当該正常操作集合ベクトルを、受信されたサーバ識別子と手順書識別子とユーザ識別子とに対応付けて、判断元情報格納部11に蓄積する。
以上の処理が、多数のユーザの操作に対して行われた、とする。すると、異常操作検知装置Aの判断元情報格納部11には、2以上の正常操作集合ベクトルが蓄積される。なお、正常操作集合ベクトルは、判断元情報の一例である。
以上の具体例1の処理の概要を図9に示す。図9では、Bag-of-Wordsにより、正常操作集合に対して単語出現頻度行列化が行われ、例えば、操作情報「ls」が「3」、「ping」が「2」とする正常操作集合ベクトルが構成される。また、正常操作集合ベクトルに対して、サーバ識別子と手順書識別子とに対応するクラスタリングが行われる。また、図9において、一のユーザが複数の手順書に基づいて一のサーバ装置に対して操作を行っているが、一のユーザが複数の手順書に基づいて複数のサーバ装置に対して操作を行っても良いし、複数のユーザが一のサーバ装置に対して操作を行っても良いし、複数のユーザが一の操作を行っても良い。
(具体例2)
判断元情報格納部11に判断元情報が蓄積される具体例2を、図10を参照して説明する。 具体例2において、手順書情報格納部13に2以上の手順書情報が格納されている、とする。ここで、手順書情報は、例えば、操作の手順が記載されたファイルである。
そして、処理部3は、2以上の各手順書情報を、例えば、Bag-of-Wordsでベクトル化する。そして、処理部3は、取得した手順書のベクトルを、クラスタリングし、似た手順書の集合を生成し、クラスタリングされた(例えば、手順書のグループ識別子に対応付けられた)手順書のベクトルを手順書情報格納部13に蓄積する。なお、手順書情報をベクトル化するアルゴリズムは問わない。
また、具体例2において、ユーザが、システム運用のために、端末装置を用いてサーバ装置にログインし、ログアウトするまでの期間、各種の正常な操作を行った、とする。なお、ユーザは、ある手順書をもとに作業を実施した、とする。
そして、図示しない端末装置では、ユーザが手順書をもとに入力した正常な操作の操作情報(ウィンドウタイトル、およびキーボード入力)を記録し、ログデータを蓄積した、とする。そして、端末装置から異常操作検知装置Aにログデータが送信された、とする。なお、ログデータは、正常操作集合であり、1セッション(ログインからログアウトまで)分の操作集合である。
次に、異常操作検知装置Aの受付部2は、端末装置から正常操作集合を受信する。
次に、異常操作検知装置Aの処理部3は、正常操作集合を、例えば、Bag-of-Wordsを用いて、ベクトル化し、正常操作集合ベクトルを構成し、判断元情報格納部11に蓄積する。
次に、処理部3は、取得した正常操作集合ベクトルと、手順書情報格納部13の手順書のベクトルの集合から、取得した正常操作集合ベクトルに対応する手順書のベクトルの集合を決定する。処理部3は、例えば、手順書のグループごとに、手順書のベクトルの代表値である代表ベクトルを取得し、正常操作集合ベクトルと最も距離が近い代表ベクトルと対応付ける。なお、代表ベクトルは、例えば、手順書の各ベクトルの各要素の平均値からなる要素の集合である。
以上の処理が、ユーザの多数の操作に対して行われた、とする。すると、異常操作検知装置Aの判断元情報格納部11には、2以上の正常操作集合ベクトルが、手順書に対応付いて蓄積される。
また、2以上の正常操作集合ベクトルは、ユーザ識別子またはサーバ識別子のうちの1以上の識別子に対応付いて、判断元情報格納部11に蓄積されても良い。かかる場合、異常操作検知装置Aの受付部2は、正常操作集合とユーザ識別子またはサーバ識別子のうちの1以上の識別子とを端末装置から受信する。
以上の具体例2の処理の概要を図10に示す。図10において、手順書情報からベクトルが構成され、正常操作集合(ログデータ)からベクトルが構成されている。また、手順書のベクトルがクラスタリングされている。さらに、クラスタリングされた手順書のベクトルの集合と、正常操作集合ベクトルの集合とが対応付いている。
(具体例3)
異常検知のためのクラスタ選択の処理を説明する具体例3を、図11を参照して説明する。 具体例3において、被験者が、システム運用のために、端末装置を用いてサーバ装置にログインし、ログアウトするまでの期間、手順書Aに基づいて、各種の操作を行った、とする。
そして、端末装置では、被験者が手順書Aをもとに入力した操作の操作情報(ウィンドウタイトル、およびキーボード入力)を記録し、ログデータを蓄積した、とする。そして、端末装置から異常操作検知装置Aにログデータを含む判断指示が送信された、とする。なお、ログデータは、検査対象の操作集合であり、1セッション(ログインからログアウトまで)分の操作集合である。
次に、異常操作検知装置Aの受付部2は、端末装置から操作集合を含む判断指示を受信する。
判断部32は、判断指示に対応する操作集合を取得する。次に、判断部32は、操作集合から、例えば、Bag-of-Wordsを用いて、操作集合ベクトルを構成する。
次に、判断部32の手順書決定手段321は、当該操作集合ベクトルを用いて、当該操作集合ベクトルに最も近似するベクトル群である、手順書Aのベクトル群を決定する。
次に、正常操作集合選択手段322は、手順書Aに対応する2以上の正常操作集合を判断元情報格納部11から取得する。つまり、正常操作集合選択手段322は、手順書Aによるログの情報を取得する。
以上の具体例3の処理の概念を示す図は、図11である。
(具体例4)
外れ値検知の処理を説明する具体例4を、図12を参照して説明する。
判断部32は、例えば、具体例3で取得した手順書Aに対応する2以上の各正常操作集合から正常操作集合ベクトルを取得する。かかる2以上の正常操作集合ベクトル(学習データと言っても良い)は、図12の1201である、とする。なお、図12の1201は、正常ログ群である。
次に、判断部32は、端末装置から受信された操作集合から操作集合ベクトルを取得する。かかる操作集合ベクトルは、図12の1202である、とする。なお、図12の1202は、新規ログである。
そして、判断部32は、操作集合ベクトル1202と2以上の正常操作集合ベクトル1201とを比較して、lofによる外れ値検知を行い、操作集合ベクトル1202は外れ値である、と判断した、とする。
次に、判断部32は、変数「第一異常情報」に「異常」を示す値を代入する。そして、判断部32は、端末装置から受信された操作集合または当該操作集合から取得した操作集合ベクトルに対応付けて、「異常」を示す情報(例えば、「1」)、ユーザ識別子(例えば、「ユーザA」)、サーバ識別子(例えば、「サーバA」)を蓄積する。なお、かかる場合、端末装置から操作集合とユーザ識別子とサーバ識別子とが送信され、受付部2が当該情報を受信した、とする。
(具体例5)
新規時系列特徴による検知の処理を説明する具体例5を、図13を参照して説明する。具体例5において、例えば、判断部32は、1セッション内のログデータを特徴抽出したものをbigramによる時系列データにする。そして、判断部32は、過去の学習データには存在しない時系列の特徴数をカウントし、閾値を超えたか否かで異常検知する、とする。
判断部32は、例えば、具体例3で取得した手順書Aに対応する2以上の正常操作集合を取得する。
次に、判断部32は、端末装置から受信された新規のログである操作集合の中から、2つの操作情報である連続操作情報を、1つずつ操作情報をずらしながら取得していく。そして、判断部32は、各連続操作情報が、2以上の正常操作集合の中に出現するか否かを判断する。なお、図11において、新規のログである操作集合の中の「E→B」の連続操作情報は、2以上の正常操作集合の中に出現しない。なお、ここで、端末装置から操作集合に加えて、ユーザ識別子とサーバ識別子のうちの1以上の識別子も受信されている、とする。
次に、判断部32は、2以上の正常操作集合の中に出現しなかった連続操作情報の数を算出する。また、判断部32は、2以上の正常操作集合の中に出現しなかった連続操作情報の箇所を示す箇所情報も取得する。なお、箇所情報は、端末装置から受信された操作集合の中の箇所を示す情報であり、例えば、操作集合内でのオフセット、操作集合内でのレコード番号、または操作集合内での行番号などである。
次に、判断部32は、2以上の正常操作集合の中に出現しなかった連続操作情報の数が閾値以上であるか否かを判断する。ここで、判断部32は、閾値未満である、と判断した、とする。
次に、判断部32は、変数「第二異常情報」に「正常」を示す値を代入する。そして、判断部32は、端末装置から受信された操作集合または当該操作集合から取得した操作集合ベクトルに対応付けて、「正常」を示す情報(例えば、「0」)、ユーザ識別子(例えば、「ユーザA」)、およびサーバ識別子(例えば、「サーバA」)を蓄積する。なお、ここで、判断部32は、箇所情報(例えば、オフセット)を異常情報として蓄積しても良い。
(具体例6)
希少特徴による検知の処理を説明する具体例6を、図14を参照して説明する。具体例6において、例えば、判断部32は、1セッション内のログデータを特徴抽出し、過去の学習データに、閾値A以下の数しか存在しない特徴の含有率が閾値Bを超えたか否かで異常検知する、とする。なお、特徴は、ここでは、操作情報である。
まず、判断部32は、具体例3で取得した手順書Aに対応する2以上の正常操作集合から各操作情報と出現回数との組の情報を、多数取得する。そして、判断部32は、出現回数が閾値A以下の操作情報(ここでは「Z」)を希操作情報として、希操作情報格納部12に蓄積する。
次に、判断部32は、端末装置から受信された新規のログである操作集合の中から、順に2以上の各操作情報を取得する。そして、判断部32は、2以上の各操作情報に対して、希操作情報格納部12に存在するか否かを判断し、希操作情報格納部12に存在する希操作情報に該当する操作情報の割(含有率)を算出する。なお、判断部32は、2以上の各操作情報から、希操作情報に該当する操作情報を検知した場合、当該操作情報の箇所を示す箇所情報を格納部1に蓄積することは好適である。また、判断部32は、かかる箇所情報と、希操作情報または希操作情報を特定する情報とを対応付けて、格納部1に蓄積することは好適である。
次に、判断部32は、含有率が閾値B以上または閾値Bより大きいか否かを判断する。ここで、判断部32は、含有率が閾値B以上または閾値Bより大きいと判断し、変数「第三異常情報」に「異常」を示す値を代入する。
そして、処理部3は、例えば、取得した第一異常情報、第二異常情報、第三異常情報のうち、例えば、「異常」であると判断された第一異常情報、第三異常情報とを用いて、出力する異常情報を構成した、とする。
次に、出力部4は、構成された異常情報を出力する。かかる出力例は、図15である。図15において、新規ログが、外れ値であること、および新規ログ内の希少特徴(Z)が明示されている。
(具体例7)
今、具体例4から具体例6で説明した処理により、図16に示す異常情報管理表が格納部1に蓄積された、とする。異常情報管理表は、異常情報を管理する表である。異常情報管理表は、「ID」「操作集合識別子」「ユーザ識別子」「装置識別子」「異常情報」を有する1または2以上のレコードを含む表である。「異常情報」は、「外れ値検知結果」「新規時系列特徴検知結果」「希少特徴検知結果」の属性を有する。
図16において、「ID」はレコードを識別する情報である。「操作集合識別子」は操作集合を識別する情報であり、ここでは、例えば、操作集合が格納されたファイル名である。また、「ユーザ識別子」は操作集合の中の操作情報に対応する操作を行ったユーザの識別子である。また、「装置識別子」は操作集合の中の操作情報に対応する操作が行われたサーバの識別子である。また、「外れ値検知結果」の属性値が「0」である場合は、外れ値検知の結果が「正常」であったことを示す。また、「外れ値検知結果」の属性値が「1」である場合は、外れ値検知の結果が「異常」(外れ値)であったことを示す。また、「新規時系列特徴検知結果」「希少特徴検知結果」は、各々の異常であった箇所のオフセットである。オフセットは、操作集合の中のオフセットである。また、異常であった箇所は、複数存在しても良いことは言うまでもない。なお、ここでは、「新規時系列特徴検知結果」「希少特徴検知結果」にオフセットが記載されている場合、各々新規時系列特徴検知の結果が異常であること、希少特徴検知の結果が異常であることを示す。
かかる状況において、異常操作検知装置Aの受付部2は、レポート出力指示を受け付けた、とする。また、かかるレポート出力指示は、操作集合識別子「I002」を有し、異常箇所明示レポートを出力する指示である、とする。
次に、レポート構成部33は、受け付けられたレポート出力指示に含まれる操作集合識別子「I002」により識別される操作集合を格納部1から取得する。また、レポート構成部33は、操作集合識別子「I002」により識別される操作集合から取得された異常情報であり、操作集合識別子「I002」と対になる「新規時系列特徴検知結果」「希少特徴検知結果」を取得する。かかる「新規時系列特徴検知結果」「希少特徴検知結果」は、オフセット「86,273,519,1026・・・」「821,2056,・・・」である。
次に、レポート構成部33は、取得した操作集合の中の上記のオフセットを開始の箇所とする一連の命令の属性値(例えば、文字色)を、異常を示す文字色(例えば、「赤」)に変更する。
次に、レポート構成部33は、一部の命令の属性値を変更した操作集合を取得する。かかる操作集合は、異常箇所明示レポートである。
次に、出力部4は、当該異常箇所明示レポートを出力する。かかるレポートの出力例は、図17の1701である。図17において、従来は、1702に示すような操作ログ(操作集合)の全体である全体ログを監査人がチェックしており、その監査業務の負担が甚大であった。一方、上述したように、異常箇所明示レポートを得ることにより、監査人は、異常を示す属性値の箇所(図17の1703)のみを監査すれば足り、監査業務の負担の大幅な軽減を図ることができる。なお、図17は、異常箇所明示レポートのイメージを説明する図である。
(具体例8)
今、具体例4から具体例6で説明した処理により、図16に示す異常情報管理表が格納部1に蓄積された、とする。
かかる状況において、異常操作検知装置Aの受付部2は、レポート出力指示を受け付けた、とする。また、かかるレポート出力指示は、「ユーザ識別子」「装置識別子」の組ごとの統計レポートを構成する指示である、とする。
次に、レポート構成部33は、図16を参照し、組ごとに、「異常が検知された操作集合の数/すべての操作集合の数」を取得する、とする。つまり、レポート構成部33は、例えば、「(ユーザA,サーバA)=2/100」(ユーザA,サーバAと対になる操作集合が「100」存在し、かつ「外れ値検知結果」「新規時系列特徴検知結果」「希少特徴検知結果」のいずれかが「0」以外の情報である場合(異常である場合)が「2」であることを示す)を取得した、とする。また、レポート構成部33は、例えば、「(ユーザA,サーバB)=0/100」(ユーザA,サーバAと対になる操作集合が「100」存在し、かつ「外れ値検知結果」「新規時系列特徴検知結果」「希少特徴検知結果」のいずれかが「0」以外の情報である場合(異常である場合)が「0」であることを示す)を取得した、とする。その他、レポート構成部33は、「(ユーザA,サーバC)=0/100」「(ユーザA,サーバE)=1/100」・・・「(ユーザF,サーバE)=0/50」を取得した、とする。
次に、レポート構成部33は、取得した上記の情報から、横軸が「装置識別子」、縦軸が「ユーザ識別子」からなる表であり、組ごとの「異常が検知された操作集合の数/すべての操作集合の数」、および各装置識別子ごとの合計、各ユーザ識別子ごと合計を有する表を構成した、とする。なお、かかる表は、統計処理結果であり、統計レポートである。
次に、出力部4は、構成された統計レポートを出力する。かかる出力例は、図18である。
(具体例9)
今、具体例4から具体例6で説明した処理により、図16に示す異常情報管理表が格納部1に蓄積された、とする。また、格納部1には、例えば、操作集合識別子「I002」で識別される操作集合に含まれる操作情報と対応付いているフィールを複数有する画面動画が格納されている、とする。
かかる状況において、異常操作検知装置Aの受付部2は、レポート出力指示を受け付けた、とする。また、かかるレポート出力指示は、操作集合識別子「I002」を有し、タイムラインレポートを出力する指示である、とする。
次に、レポート構成部33は、レポート出力指示が有する操作集合識別子「I002」と対になる画面動画を格納部1から取得する。
次に、レポート構成部33は、操作集合識別子「I002」と対になる「新規時系列特徴検知結果」「希少特徴検知結果」を図16の表から取得する。そして、レポート構成部33は、「新規時系列特徴検知結果」のオフセットの値が示す箇所が異常であることを示すタイムラインの画像を構成する。なお、画像のデータ構造は問わない。また、レポート構成部33は、「希少特徴検知結果」のオフセットの値が示す箇所が異常であることを示すタイムラインの画像を構成する。なお、画像のデータ構造は問わない。そして、レポート構成部33は、「新規時系列特徴検知結果」のタイムラインの画像、「希少特徴検知結果」のタイムラインの画像を取得する。
次に、レポート構成部33は、例えば、画面動画と、「新規時系列特徴検知結果」のタイムラインの画像と、「希少特徴検知結果」のタイムラインの画像とを有するタイムラインレポートを構成する。
次に、出力部4は、当該タイムラインレポートを出力する。かかるレポートの出力例は、図19である。図19において、1901は、タイムラインの表示である。1902は、「新規時系列特徴検知結果」のタイムラインの画像である。1903は、「希少特徴検知結果」のタイムラインの画像である。1904は、画面動画である。1902、1903において、画面動画の全体の中のどの時点(箇所)での異常操作が多いかが、容易に視覚的に理解可能である。
また、レポート構成部33は、指示を受け付け得るタイムラインの画像を構成することは好適である。つまり、レポート構成部33は、指示を受け付けた場合に、処理部3が、当該指示された箇所(時点)に対応する画面動画を取得するようなタイムラインの画像を構成することは好適である。かかる場合、ユーザが1902または1903のいずれかの箇所をマウス等の指示手段を用いて指示した場合、受付部2は、出力されているタイムラインの画像の中の一の箇所を指定する箇所指示を受け付ける。次に、処理部3は、当該箇所指示に対応する箇所に対する操作情報を取得する。次に、処理部3は、当該取得した操作情報と対になるフィールドを決定する。なお、かかるフィールドは、画面動画の中のフィールドである。そして、出力部4は、当該フィールドを出力する。かかる処理により、例えば、異常操作が行われた箇所の操作画面が直ちに出力でき、異常操作の原因究明に役立つ。
次に、出力部4は、1904の画面動画の領域を、決定されたフィールドにする。なお、出力部4は、当該フィールドから画面動画を再生しても良い。
以上、本実施の形態によれば、システム運用において検知された異常操作に関する適切なレポートを出力できる。
また、本実施の形態によれば、システム運用において検知された異常操作に関するレポートであり、操作集合の中の異常な操作の箇所を明示したレポートを出力できる。
また、本実施の形態によれば、システム運用において検知された異常操作に関するレポートであり、ユーザごと、装置ごと、またはユーザと装置の組ごとに統計処理した結果のレポートを出力できる。
また、本実施の形態によれば、システム運用において精度高く異常操作を検知でき、かつ異常操作に関するレポートを出力できる。
また、本実施の形態によれば、システム運用において、異常操作を検知できる。その結果、監査者の労力が削減できる。
また、本実施の形態によれば、1ログ内での異常度合の高い箇所も特定し、全般的に監査量の削減が期待できる。
なお、本実施の形態において、主に、1セッション内のログデータを用いて、異常性を検知した。しかし、例えば、異常操作検知装置Aが、被験者が操作する端末装置から操作情報をリアルタイムに受信し、蓄積された2以上の操作情報に対して異常性を検知する処理を行っても良い。なお、異常操作検知装置Aが異常性を検知する処理を開始するトリガーは、受信された2以上の操作情報の量が予め決められた条件を満たすほど多くなった場合、または被験者の操作時間が予め決められた条件を満たすほど長くなった場合等が好適である。
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における異常操作検知装置Aを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、システム運用時の情報システムに対する正常な操作を特定する2以上の正常操作情報に関する2以上の正常操作集合に基づく判断元情報が格納される判断元情報格納部にアクセス可能なコンピュータを、被検査者が情報システムに対して行った操作を特定する2以上の操作情報を有する操作集合を受け付ける受付部と、前記判断元情報と、前記受付部が受け付けた操作集合とを用いて、当該操作集合に対する異常性に関する情報である異常情報を取得する判断部と、前記異常情報を用いて、異常に関するレポートを構成するレポート構成部と、前記レポートを出力する出力部として機能させるためのプログラムである。
また、図20は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の異常操作検知装置A等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図20は、このコ
図20において、コンピュータシステム300は、CD-ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
図21において、コンピュータ301は、CD-ROMドライブ3012に加えて、MPU3013と、MPU3013、CD-ROMドライブ3012に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
コンピュータシステム300に、上述した実施の形態の異常操作検知装置A等の機能を実行させるプログラムは、CD-ROM3101に記憶されて、CD-ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD-ROM3101またはネットワークから直接、ロードされても良い。
プログラムは、コンピュータ301に、上述した実施の形態の異常操作検知装置A等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
なお、上記プログラムにおいて、情報を送信するステップや、情報を受信するステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されても良いことは言うまでもない。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。