(57)【要約】【課題】  先行する挙動の系列が後続の挙動に影響を与え得る動作対象に対して、異常動作の検出および原因の特定を可能にする。【解決手段】  希少挙動部分系列計算部１４２は、動作主体の挙動系列１６０を１以上含む挙動系列の集合１７１を受け取り、系列中に現れる珍しい部分系列（希少挙動部分系列１７２）を計算する。挙動系列検索部１４３は、挙動系列の集合１７１から、希少挙動部分系列１７２を含む挙動系列の集合１７３を抽出する。挙動到達原因究明部１４４は、希少挙動部分系列を含む挙動系列の集合１７３の中から、共通の部分系列１７４を求め、さらに、共通の部分系列１７４のうち、希少挙動部分系列１７２より前に出現する挙動を、希少挙動部分系列１７２の発生原因とみなし、到達原因１７５として出力する。【選択図】  図１  
2005141459.tif 000002
【特許請求の範囲】
【請求項１】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、
検索対象の挙動を指定する挙動指定手段と、
前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、
前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段と、
を備えることを特徴とする異常挙動検出装置。
【請求項２】
前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出する希少挙動部分系列計算手段を備えることを特徴とする請求項１記載の異常挙動検出装置。
【請求項３】
前記挙動指定手段として、検索対象の挙動をユーザから受け付ける挙動受付手段を備えることを特徴とする請求項１記載の異常挙動検出装置。
【請求項４】
前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、検索対象の挙動をユーザから受け付ける挙動受付手段とを備えることを特徴とする請求項１記載の異常挙動検出装置。
【請求項５】
前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする請求項１乃至４の何れか１項に記載の異常挙動検出装置。
【請求項６】
前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段を備えることを特徴とする請求項１乃至４の何れか１項に記載の異常挙動検出装置。
【請求項７】
前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段と、該依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段とを備えることを特徴とする請求項１乃至４の何れか１項に記載の異常挙動検出装置。
【請求項８】
前記挙動相関関係発見手段で抽出された挙動を保持する手段を有し、前記動作主体から新たに得られる挙動を監視し、前記保持した挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする請求項６または７記載の異常挙動検出装置。
【請求項９】
前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段を備えることを特徴とする請求項１乃至４の何れか１項に記載の異常挙動検出装置。
【請求項１０】
前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段と、該挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段とを備えることを特徴とする請求項１乃至４の何れか１項に記載の異常挙動検出装置。
【請求項１１】
前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする請求項９または１０記載の異常挙動検出装置。
【請求項１２】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、
前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、
を備えることを特徴とする異常挙動検出装置。
【請求項１３】
検索対象となる挙動または挙動部分系列を、ユーザから受け付ける挙動受付手段と、
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、
前記挙動受付手段でユーザから受け付けた挙動または挙動部分系列を含む挙動系列の集合を、前記記憶手段に記憶された処理対象挙動系列の集合から検索し、該検索された集合を新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、
前記記憶手段に記憶された処理対象挙動系列の集合から、共通の部分系列を抽出してユーザに提示する挙動到達原因究明手段と、
前記記憶手段に記憶された処理対象挙動系列の集合から、希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、
を備えることを特徴とする異常挙動検出装置。
【請求項１４】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、
前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、
前記動作主体から新たに得られる挙動を監視し、希少挙動部分系列到達原因として検出された前記部分系列と一致する挙動が前記動作主体で行われた際に警告を発する予兆検出手段を備えることを特徴とする異常挙動検出装置。
【請求項１５】
検索対象となる挙動または挙動部分系列を、ユーザから受け付ける挙動受付手段と、
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、
前記挙動受付手段でユーザから受け付けた挙動または挙動部分系列を含む挙動系列の集合を、前記記憶手段に記憶された処理対象挙動系列の集合から検索し、該検索された集合を新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、
前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段と、
前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動が前記動作主体で行われた際に警告を発する予兆検出手段とを備えることを特徴とする異常挙動検出装置。
【請求項１６】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第１の挙動系列の集合および前記検出された希少挙動部分系列を含まない第２の挙動系列の集合を抽出する挙動系列検索手段と、
前記抽出された第１の挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、
前記挙動到達原因究明手段で検出された部分系列から、前記第２の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因として検出する挙動相関関係発見手段と、
を備えることを特徴とする異常挙動検出装置。
【請求項１７】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、
前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、
前記挙動到達原因究明手段で検出された部分系列に現れる挙動のうち、前記挙動系列に現れる挙動と依存関係にある挙動を、被依存挙動到達原因として求める依存関係解析手段と、
を備えることを特徴とする異常挙動検出装置。
【請求項１８】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第１の挙動系列の集合および前記検出された希少挙動部分系列を含まない第２の挙動系列の集合を抽出する挙動系列検索手段と、
前記抽出された第１の挙動系列の集合中に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、
前記挙動到達原因究明手段で検出された部分系列から、前記第２の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因として検出する挙動相関関係発見手段と、
前記挙動相関関係発見手段で検出された強い相関のある希少挙動到達原因のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段とを備えることを特徴とする異常挙動検出装置。
【請求項１９】
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第１の挙動系列の集合および前記検出された希少挙動部分系列を含まない第２の挙動系列の集合を抽出する挙動系列検索手段と、
前記抽出された第１の挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、
前記挙動到達原因究明手段で検出された部分系列のうち、前記検索対象の挙動と依存関係にある挙動を被依存挙動到達原因として検出する依存関係解析手段と、
前記依存関係解析手段で検出された被依存挙動到達原因のうち、前記第２の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある被依存挙動到達原因として検出する挙動相関関係発見手段とを備えることを特徴とする異常挙動検出装置。
【請求項２０】
ａ）入力手段が、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶するステップ、
ｂ）挙動指定手段が、検索対象の挙動を指定するステップ、
ｃ）挙動系列検索手段が、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶するステップ、
ｄ）挙動到達原因究明手段が、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出するステップ、
を含むことを特徴とする異常挙動検出方法。
【請求項２１】
前記挙動指定手段は、前記入力された挙動系列の集合から希少挙動部分系列を検出し、該検出した希少挙動部分系列を検索対象の挙動として指定することを特徴とする請求項２０記載の異常挙動検出方法。
【請求項２２】
前記挙動指定手段は、検索対象の挙動をユーザから受け付けることを特徴とする請求項２０記載の異常挙動検出方法。
【請求項２３】
前記挙動指定手段は、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示した後、検索対象の挙動をユーザから受け付けることを特徴とする請求項２０記載の異常挙動検出方法。
【請求項２４】
予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする請求項２０乃至２３の何れか１項に記載の異常挙動検出方法。
【請求項２５】
挙動相関関係発見手段が、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップを更に含むことを特徴とする請求項２０乃至２３の何れか１項に記載の異常挙動検出方法。
【請求項２６】
依存関係解析手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップと、挙動相関関係発見手段が、前記依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップとを、更に含むことを特徴とする請求項２０乃至２３の何れか１項に記載の異常挙動検出方法。
【請求項２７】
予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする請求項２５または２６記載の異常挙動検出方法。
【請求項２８】
依存関係解析手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップを更に含むことを特徴とする請求項２０乃至２３の何れか１項に記載の異常挙動検出方法。
【請求項２９】
挙動相関関係発見手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップ、依存関係解析手段が、前記挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップを更に含むことを特徴とする請求項２０乃至２３の何れか１項に記載の異常挙動検出方法。
【請求項３０】
予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする請求項２８または２９記載の異常挙動検出方法。
【請求項３１】
コンピュータを、
先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段、
検索対象の挙動を指定する挙動指定手段、
前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段、
前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段、
として機能させることを特徴とするプログラム。
【請求項３２】
前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出する希少挙動部分系列計算手段を備えることを特徴とする請求項３１記載のプログラム。
【請求項３３】
前記挙動指定手段として、検索対象の挙動をユーザから受け付ける挙動受付手段を備えることを特徴とする請求項３１記載のプログラム。
【請求項３４】
前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、検索対象の挙動をユーザから受け付ける挙動受付手段とを備えることを特徴とする請求項３１記載のプログラム。
【請求項３５】
前記コンピュータを、更に、
前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、
として機能させることを特徴とする請求項３１乃至３４の何れか１項に記載のプログラム。
【請求項３６】
前記コンピュータを、更に、
前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、
として機能させることを特徴とする請求項３１乃至３４の何れか１項に記載のプログラム。
【請求項３７】
前記コンピュータを、更に、
前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、
前記依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、
として機能させることを特徴とする請求項３１乃至３４の何れか１項に記載のプログラム。
【請求項３８】
前記コンピュータを、更に、
前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、
として機能させることを特徴とする請求項３６または３７記載のプログラム。
【請求項３９】
前記コンピュータを、更に、
前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、
として機能させることを特徴とする請求項３１乃至３４の何れか１項に記載のプログラム。
【請求項４０】
前記コンピュータを、更に、
前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、
前記挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、
として機能させることを特徴とする請求項３１乃至３４の何れか１項に記載のプログラム。
【請求項４１】
前記コンピュータを、更に、
前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、
として機能させることを特徴とする請求項３９または４０記載のプログラム。
【請求項４２】
挙動系列の集合から挙動系列を１つずつ入力する入力手段と、
入力した挙動系列を挙動に分解する分解手段と、
挙動中の数値を抽出する数値抽出手段と、
挙動中の数値のうち正常な値と判定した数値をそれが抽出された挙動と共に保存する正常値保存手段と、
正常な値と判定する範囲の上限値および下限値を保持する正常範囲設定手段と、
正常値より明確に大きな数値をそれが抽出された挙動と共に上方異常値として保存する上方異常値保存手段と、
上方異常値と判定する範囲の上限値および下限値を保持する上方異常範囲設定手段と、
正常値より明確に小さな数値をそれが抽出された挙動と共に下方異常値として保存する下方異常値保存手段と、
下方異常値と判定する範囲の上限値および下限値を保持する下方異常範囲設定手段と、
前記数値抽出部で抽出された数値をその挙動と共に、前記正常値保存手段、前記上方異常値保存手段および前記下方異常値保存手段の何れかに保存し、必要に応じて前記正常範囲設定手段、前記上方異常範囲設定手段および前記下方異常範囲設定手段の設定の変更、異なる保存部間の保存内容の統合、および保存内容の移送を行うことにより、各挙動中の数値を正常な値のグループである正常グループ、正常グループの数値とは明確に大きな数値のグループである上方異常グループ、正常グループの数値とは明確に小さな数値のグループである下方グループの３つのグループに分類する分類手段と、前記上方異常値保存手段に保存された上方異常グループに属する数値を抽出した挙動、および前記下方異常値保存手段に保存された下方異常グループに属する数値を抽出した挙動を希少挙動として出力する出力手段とを備えることを特徴とする希少挙動部分系列計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、先行する挙動の系列が後続の挙動に影響を与え得る動作対象の異常挙動検出装置および異常挙動検出方法に関し、特に計算機プログラムの実行時情報から珍しい挙動を検出することによって、バグ箇所の特定やバグの検出を容易にした異常挙動検出装置および異常挙動検出方法に関する。
【背景技術】
【０００２】
計算機プログラムに対する従来の異常挙動検出装置の一例が、特許文献１に記載されている。図２３に示すように、この従来の異常挙動検出装置は、実行可能化手段２００１と、プログラム再実行手段２００２と、依存関係解析手段２００３と、分割検証制御手段２００４と、正誤判断受付手段２００５とから構成されている。
【０００３】
このような構成を有する従来の異常挙動検出装置は次のように動作する。まず、実行可能化手段２００１が、ソースプログラム２００６を計算機上で実行可能な形式の実行可能プログラム２００７に変換し、プログラム再実行手段２００２で実行する。実行可能プログラム２００７を実行した結果、プログラム中のある実行時点において、ある変数の値に誤りがあったとする。この誤りの発生している実行時点を異常点と呼ぶ。依存関係解析手段２００３は、実行開始時点から異常点に至るまでに実行された命令系列の中から、異常点における誤った変数の値に影響を与えた命令系列を抽出する。この抽出には、プログラムスライシングと呼ばれる技術が用いられる。プログラムスライシングは、データフローと制御フローという２つのフローを解析することで、変数の値や命令の制御に関する依存関係を解析する技術である。
【０００４】
ある変数の値が決定する際に他の変数の値が利用されているとき、この変数間のデータの依存関係のことをデータフローという。一方、一般のプログラムは条件分岐やループを持つが、ある命令が実行される原因となった条件分岐やループの制御の流れを制御フローという。制御フローは、条件文やループ文がもつ条件式中の変数の値によって決定される。このとき、変数の値に関するデータフローや、この変数の値を決定した代入文に関する制御フローをたどっていくことで、変数値の決定に影響を及ぼした可能性のある命令群を抽出することができる。
【０００５】
依存関係解析手段２００３は、実行開始時点から異常点に至るまでに実行された命令の系列を二分する分割点を決定する。プログラム再実行手段２００２は、分割点までプログラムを実行し、分割点における各変数の値や制御フローの情報を取得して、依存関係解析手段２００３に渡す。依存関係解析手段２００３は、受けとった変数値や制御フローに誤りがないかを、正誤判断受付手段２００５を通じてユーザに問い合わせる。分割検証制御手段２００４は、ユーザからの問合せ結果を受けて、異常の原因が分割点の前後のどちらにあるかを判断する。分割点におけるデータや制御フローに誤りがあった場合は、分割点を異常点とみなして、依存関係解析手段２００３による分割操作を繰り返す。分割点におけるデータや制御フローに誤りがなかった場合は、分割点を実行開始時点として、分割操作を繰り返す。
【０００６】
このように、分割後の問合せと問合せ結果の検証を繰り返すことで、異常の原因となった命令や命令の不足を機械的に特定することができる。
【特許文献１】特開平９―３０５４３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１では、プログラムスライシングと呼ばれる技術を用いることにより、多少なりとも異常の原因を特定する作業を容易にしてはいるものの、未だ異常の原因を特定するまでには一般に長い時間を必要とする。その理由は、ある命令文Ｓの結果に影響を与えている命令文の集合は、命令文Ｓの前に現れる命令文の大部分になる場合が多く、それらのどれが異常原因かを調べる作業は、結局、プログラム全体を調べるのとあまり違わないからである。
【０００８】
また、特許文献１による方法では、異常の観測された変数に関するデータフローと制御フロー情報を解析する必要があるため、変数値の異常がユーザに観測されてからでないと解析が始められないという課題もある。
【０００９】
[発明の目的]
本発明の第１の目的は、異常の原因を素早く特定できる異常挙動検出装置およびその方法を提供することにある。
【００１０】
本発明の第２の目的は、異常が実際に観測される前の、異常の疑いの段階で、異常の検出や分析が可能な異常挙動検出装置およびその方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、検索対象の挙動を指定する挙動指定手段と、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段と、を備えることを特徴とする。
【００１２】
本発明の第２の異常挙動検出装置は、第１の異常挙動検出装置において、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出する希少挙動部分系列計算手段を備えることを特徴とする。
【００１３】
本発明の第３の異常挙動検出装置は、第１の異常挙動検出装置において、前記挙動指定手段として、検索対象の挙動をユーザから受け付ける挙動受付手段を備えることを特徴とする。
【００１４】
本発明の第４の異常挙動検出装置は、第１の異常挙動検出装置において、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、検索対象の挙動をユーザから受け付ける挙動受付手段とを備えることを特徴とする。
【００１５】
本発明の第５の異常挙動検出装置は、第１乃至第４の何れかの異常挙動検出装置において、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする。
【００１６】
本発明の第６の異常挙動検出装置は、第１乃至第４の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段を備えることを特徴とする。
【００１７】
本発明の第７の異常挙動検出装置は、第１乃至第４の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段と、該依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段とを備えることを特徴とする。
【００１８】
本発明の第８の異常挙動検出装置は、第６または第７の異常挙動検出装置において、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする。
【００１９】
本発明の第９の異常挙動検出装置は、第１乃至第４の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段を備えることを特徴とする。
【００２０】
本発明の第１０の異常挙動検出装置は、第１乃至第４の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段と、該挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段とを備えることを特徴とする。
【００２１】
本発明の第１１の異常挙動検出装置は、第９または第１０の異常挙動検出装置において、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする。
【００２２】
本発明の第１２の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、を備えることを特徴とする。
【００２３】
本発明の第１３の異常挙動検出装置は、検索対象となる挙動または挙動部分系列を、ユーザから受け付ける挙動受付手段と、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、前記挙動受付手段でユーザから受け付けた挙動または挙動部分系列を含む挙動系列の集合を、前記記憶手段に記憶された処理対象挙動系列の集合から検索し、該検索された集合を新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、前記記憶手段に記憶された処理対象挙動系列の集合から、共通の部分系列を抽出してユーザに提示する挙動到達原因究明手段と、前記記憶手段に記憶された処理対象挙動系列の集合から、希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、を備えることを特徴とする。
【００２４】
本発明の第１４の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、前記動作主体から新たに得られる挙動を監視し、希少挙動部分系列到達原因として検出された前記部分系列と一致する挙動が前記動作主体で行われた際に警告を発する予兆検出手段を備えることを特徴とする。
【００２５】
本発明の第１５の異常挙動検出装置は、検索対象となる挙動または挙動部分系列を、ユーザから受け付ける挙動受付手段と、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、前記挙動受付手段でユーザから受け付けた挙動または挙動部分系列を含む挙動系列の集合を、前記記憶手段に記憶された処理対象挙動系列の集合から検索し、該検索された集合を新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段と、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動が前記動作主体で行われた際に警告を発する予兆検出手段とを備えることを特徴とする。
【００２６】
本発明の第１６の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第１の挙動系列の集合および前記検出された希少挙動部分系列を含まない第２の挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された第１の挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列から、前記第２の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因として検出する挙動相関関係発見手段と、を備えることを特徴とする。
【００２７】
本発明の第１７の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列に現れる挙動のうち、前記挙動系列に現れる挙動と依存関係にある挙動を、被依存挙動到達原因として求める依存関係解析手段と、を備えることを特徴とする。
【００２８】
本発明の第１８の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第１の挙動系列の集合および前記検出された希少挙動部分系列を含まない第２の挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された第１の挙動系列の集合中に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列から、前記第２の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因として検出する挙動相関関係発見手段と、前記挙動相関関係発見手段で検出された強い相関のある希少挙動到達原因のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段とを備えることを特徴とする。
【００２９】
本発明の第１９の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第１の挙動系列の集合および前記検出された希少挙動部分系列を含まない第２の挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された第１の挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列のうち、前記検索対象の挙動と依存関係にある挙動を被依存挙動到達原因として検出する依存関係解析手段と、前記依存関係解析手段で検出された被依存挙動到達原因のうち、前記第２の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある被依存挙動到達原因として検出する挙動相関関係発見手段とを備えることを特徴とする。
【００３０】
本発明の第１の異常挙動検出方法は、ａ）入力手段が、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶するステップ、ｂ）挙動指定手段が、検索対象の挙動を指定するステップ、ｃ）挙動系列検索手段が、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶するステップ、ｄ）挙動到達原因究明手段が、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出するステップ、を含むことを特徴とする。
【００３１】
本発明の第２の異常挙動検出方法は、第１の異常挙動検出方法において、前記挙動指定手段は、前記入力された挙動系列の集合から希少挙動部分系列を検出し、該検出した希少挙動部分系列を検索対象の挙動として指定することを特徴とする。
【００３２】
本発明の第３の異常挙動検出方法は、第１の異常挙動検出方法において、前記挙動指定手段は、検索対象の挙動をユーザから受け付けることを特徴とする。
【００３３】
本発明の第４の異常挙動検出方法は、第１の異常挙動検出方法において、前記挙動指定手段は、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示した後、検索対象の挙動をユーザから受け付けることを特徴とする。
【００３４】
本発明の第５の異常挙動検出方法は、第１乃至第４の何れかの異常挙動検出方法において、予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする。
【００３５】
本発明の第６の異常挙動検出方法は、第１乃至第４の何れかの異常挙動検出方法において、挙動相関関係発見手段が、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップを更に含むことを特徴とする。
【００３６】
本発明の第７の異常挙動検出方法は、第１乃至第４の何れかの異常挙動検出方法において、依存関係解析手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップと、挙動相関関係発見手段が、前記依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップとを、更に含むことを特徴とする。
【００３７】
本発明の第８の異常挙動検出方法は、第６または第７の異常挙動検出方法において、予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする。
【００３８】
本発明の第９の異常挙動検出方法は、第１乃至第４の何れかの異常挙動検出方法において、依存関係解析手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップを更に含むことを特徴とする。
【００３９】
本発明の第１０の異常挙動検出方法は、第１乃至第４の何れかの異常挙動検出方法において、挙動相関関係発見手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップ、依存関係解析手段が、前記挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップを更に含むことを特徴とする。
【００４０】
本発明の第１１の異常挙動検出方法は、第９または第１０の異常挙動検出方法において、予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする。
【００４１】
本発明の第１のプログラムは、コンピュータを、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段、検索対象の挙動を指定する挙動指定手段、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段、として機能させることを特徴とする。
【００４２】
本発明の第２のプログラムは、第１のプログラムにおいて、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出する希少挙動部分系列計算手段を備えることを特徴とする。
【００４３】
本発明の第３のプログラムは、第１のプログラムにおいて、前記挙動指定手段として、検索対象の挙動をユーザから受け付ける挙動受付手段を備えることを特徴とする。
【００４４】
本発明の第４のプログラムは、第１のプログラムにおいて、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、検索対象の挙動をユーザから受け付ける挙動受付手段とを備えることを特徴とする。
【００４５】
本発明の第５のプログラムは、第１乃至第４の何れかのプログラムにおいて、前記コンピュータを、更に、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された共通な挙動と一致する挙動を検出した際に警告を発する予兆検出手段、
として機能させることを特徴とする。
【００４６】
本発明の第６のプログラムは、第１乃至第４の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、として機能させることを特徴とする。
【００４７】
本発明の第７のプログラムは、第１乃至第４の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、前記依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、として機能させることを特徴とする。
【００４８】
本発明の第８のプログラムは、第６または第７のプログラムにおいて、前記コンピュータを、更に、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、として機能させることを特徴とする。
【００４９】
本発明の第９のプログラムは、第１乃至第４の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、として機能させることを特徴とする。
【００５０】
本発明の第１０のプログラムは、第１乃至第４の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、前記挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、として機能させる。
【００５１】
本発明の第１１のプログラムは、第９または第１０のプログラムにおいて、前記コンピュータを、更に、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、として機能させることを特徴とする。
【００５２】
本発明の希少挙動部分系列計算装置は、挙動系列の集合から挙動系列を１つずつ入力する入力手段と、入力した挙動系列を挙動に分解する分解手段と、挙動中の数値を抽出する数値抽出手段と、挙動中の数値のうち正常な値と判定した数値をそれが抽出された挙動と共に保存する正常値保存手段と、正常な値と判定する範囲の上限値および下限値を保持する正常範囲設定手段と、正常値より明確に大きな数値をそれが抽出された挙動と共に上方異常値として保存する上方異常値保存手段と、上方異常値と判定する範囲の上限値および下限値を保持する上方異常範囲設定手段と、正常値より明確に小さな数値をそれが抽出された挙動と共に下方異常値として保存する下方異常値保存手段と、下方異常値と判定する範囲の上限値および下限値を保持する下方異常範囲設定手段と、前記数値抽出部で抽出された数値をその挙動と共に、前記正常値保存手段、前記上方異常値保存手段および前記下方異常値保存手段の何れかに保存し、必要に応じて前記正常範囲設定手段、前記上方異常範囲設定手段および前記下方異常範囲設定手段の設定の変更、異なる保存部間の保存内容の統合、および保存内容の移送を行うことにより、各挙動中の数値を正常な値のグループである正常グループ、正常グループの数値とは明確に大きな数値のグループである上方異常グループ、正常グループの数値とは明確に小さな数値のグループである下方グループの３つのグループに分類する分類手段と、前記上方異常値保存手段に保存された上方異常グループに属する数値を抽出した挙動、および前記下方異常値保存手段に保存された下方異常グループに属する数値を抽出した挙動を希少挙動として出力する出力手段とを備えることを特徴とする。
【発明の効果】
【００５３】
本発明の第１の異常挙動検出装置および方法ならびにプログラムによれば、動作主体の挙動に関する統計データから例外的な挙動、すなわち異常を検出し、異常の原因として怪しい挙動を素早く特定することができる。その理由は、計算機プログラムのような、先行する挙動が後続の挙動に影響を与え得る動作主体では、異常に至る過程において多く観測された挙動を異常挙動に到達した原因（挙動到達原因）とみなせるためである。
【００５４】
本発明の第２の異常挙動検出装置および方法ならびにプログラムによれば、ユーザに負担をかけずに異常な挙動とその原因を素早く特定することができる。その理由は、入力された挙動系列の集合から希少挙動部分系列を自動的に検出する希少挙動部分系列計算手段を備えているからである。
【００５５】
本発明の第３の異常挙動検出装置および方法ならびにプログラムによれば、ユーザが注目したい挙動に関して、挙動が起きた原因を特定することができる。その理由は、ユーザが指定した挙動や挙動部分系列を挙動受付手段が受け付け、受け付けた挙動や挙動部分系列を含む挙動系列の中から、挙動到達原因究明手段によって系列中の共通の挙動が求められるためである。
【００５６】
本発明の第４の異常挙動検出装置および方法ならびにプログラムによれば、例外的な挙動や挙動到達原因を徐々に絞り込むことができる。その理由は、ユーザによる挙動や挙動部分系列の入力と、希少挙動部分系列および挙動到達原因の計算とを繰返し行うためである。
【００５７】
本発明の第５、第８、第１１の異常挙動検出装置および方法ならびにプログラムによれば、珍しい挙動やユーザが指定した挙動が実際に発生する前に、発生する可能性があることを知ることができる。その理由は、新たに受信される挙動系列中に挙動到達原因が含まれているかどうかを、予兆検出手段が検査するためである。
【００５８】
本発明の第６の異常挙動検出装置および方法ならびにプログラムによれば、異常の原因としての怪しい挙動をより正確に特定することができる。その理由は、挙動相関関係発見手段を備えているため、珍しい挙動が起きる以前に高い確率で現れ、珍しい挙動が起きない場合にはほとんど現れないような挙動を発見できるためである。
【００５９】
本発明の第７の異常挙動検出装置および方法ならびにプログラムによれば、第６の異常挙動検出装置および方法ならびにプログラムに比べて、異常の原因としての怪しい挙動を更に正確に特定することができる。その理由は、依存関係解析手段により、珍しい挙動が起きる以前に高い確率で現れる挙動のうち、珍しい挙動がデータフローや制御フローの観点から依存している挙動のみを抽出しており、更に挙動相関関係発見手段により結果を絞り込んでいるためである。
【００６０】
本発明の第９の異常挙動検出装置および方法ならびにプログラムによれば、異常の原因としての怪しい挙動をより正確に特定することができる。その理由は、依存関係解析手段により、珍しい挙動が起きる以前に高い確率で現れる挙動のうち、珍しい挙動がデータフローや制御フローの観点から依存している挙動のみを抽出しているためである。
【００６１】
本発明の第１０の異常挙動検出装置および方法ならびにプログラムによれば、第９の異常挙動検出装置および方法ならびにプログラムに比べて、異常の原因としての怪しい挙動を更に正確に特定することができる。その理由は、挙動相関関係発見手段を備えているため、珍しい挙動が起きる以前に高い確率で現れ、珍しい挙動が起きない場合にはほとんど現れないような挙動を発見し、更に依存関係解析手段によって結果を絞り込んでいるためである。
【発明を実施するための最良の形態】
【００６２】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００６３】
図１を参照すると、本発明の第１の実施の形態にかかる異常挙動検出装置１００は、処理装置１１０と記憶装置１２０と出力装置１３０とを含んで構成され、処理装置１１０は、入力部１４１、希少挙動部分系列計算部１４２、挙動系列検索部１４３、挙動到達原因究明部１４４および出力部１４５を備え、記憶装置１２０は、記憶部１５１〜１５４を備えている。
【００６４】
入力部１４１は、動作主体の挙動系列１６０を外部から１個以上入力し、挙動系列の集合１７１として記憶部１５１に記憶する。動作主体は、先行する挙動の系列が後続の挙動に影響を与え得るものであり、例えば計算機である。入力部１４１は、動作主体から得られる挙動系列１６０をオンラインで取得して記憶部１５１に記憶するものであっても良いし、動作主体から得られた１個以上の挙動系列１６０をオフラインで入力して記憶部１５１に記憶するものであっても良い。
【００６５】
希少挙動部分系列計算部１４２は、記憶部１５１から挙動系列の集合１７１を入力し、系列中に現れる珍しい部分系列を計算（検出）し、希少挙動部分系列１７２として記憶部１５２に記憶する。
【００６６】
挙動系列検索部１４３は、記憶部１５１から挙動系列の集合１７１を入力し、記憶部１５２から希少挙動部分系列１７２を入力し、挙動系列の集合１７１から希少挙動部分系列１７２を含む全ての挙動系列を検索し、希少挙動部分系列を含む挙動系列の集合１７３として記憶部１５３に記憶する。
【００６７】
挙動到達原因究明部１４４は、記憶部１５３から希少挙動部分系列を含む挙動系列の集合１７３を入力し、この挙動系列の集合１７３中に共通に現れる挙動或いはほぼ共通に現れる挙動、つまり、高い確率（頻度）で現れる挙動を検出し、共通部分系列１７４として記憶部１５４に記憶する。また挙動到達原因究明部１４４は、記憶部１５２から希少挙動部分系列１７２を入力し、共通部分系列１７４において、希少挙動部分系列１７２より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因１７５として検出し、記憶部１５４に記憶する。
【００６８】
出力部１４５は、記憶装置１２０に記憶された希少挙動部分系列１７２、共通部分系列１７４および希少挙動部分系列到達原因１７５をディスプレイ装置などの出力装置１３０に出力する。記憶装置１２０に記憶されたその他のデータを出力装置１３０に出力するようにしても良い。
【００６９】
次に、図１及び図２のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００７０】
まず、入力部１４１は、１個以上の動作主体の挙動系列１６０を外部より受信し、記憶部１５１に記憶する（図２のステップＡ１）。ここで、挙動とは、関数呼出しやメソッド呼出し、命令文の実行、例外やシグナルの発生といった計算機プログラムの動作のほか、オブジェクト指向プログラムにおけるオブジェクトの動作、編集や電子メールの送信等のプログラムに対する操作、ソフトウェアのアップグレード等を指す。挙動系列とは、動作主体が動作を開始して停止するまでの挙動の系列を指す。たとえば、「メソッドＭの呼出し、変数xに整数値278を代入、メソッドＬの呼出し」のようなものが、挙動系列である。挙動系列の集合１７１は、動作主体の複数回の動作を観測することによって得られる。
【００７１】
次に、希少挙動部分系列計算部１４２は、挙動系列の集合１７１に対して、系列中に現れる珍しい部分系列（希少挙動部分系列）を計算する（ステップＡ２）。希少挙動部分系列計算部１４２で求められた希少挙動部分系列１７２は、記憶部１５２に一旦保存されて挙動系列検索部１４３に与えられるほか、出力部１４５により必要に応じて出力装置１３０から出力される。
【００７２】
部分系列の珍しさを計算する方法としては、次の２つの方法がある。第１の方法は、系列中の部分系列自体の出現確率を計算する方法で、第２の方法は、挙動の中身の珍しさを計算する方法である。
【００７３】
部分系列の珍しさを計算する第１の方法では、系列中の部分系列に関する統計を取り、各部分系列に関する出現確率を計算する。出現確率の低い部分系列が、珍しい部分系列である。出現確率の計算には、部分系列を独立事象とみなして事象の起きる確率を求める方法と、マルコフモデルおよび隠れマルコフモデルのような推移確率を用いる方法がある。
【００７４】
部分系列の珍しさを計算する第２の方法では、挙動の中で扱われる変数値、および時間、場所等を示す数値やカテゴリ値によって、挙動の珍しさを計算する。数値の珍しさの計算では、ある数値の近傍に他の数値が存在しない数値を、珍しい数値とみなすことができる。具体的には、0以上の閾値をa、数値をnとしたとき、n-aからn+aまでの数値を、nの近傍と定義する。たとえば、閾値を10としたとき、数値100の近傍は、90から110までの数である。
【００７５】
数値の集合に対する正常値や珍しい値は、一般に、ある範囲を持つ。また、先に処理した値が正常値となり、後から処理された値が、正常値のどの値の近傍からも逸脱していた場合は、珍しい値となる。たとえば、閾値が10のとき、数値の集合が100,105,99,82,112,79の順番で処理された場合は、正常値が99から112までの値であり、珍しい値は79から82までの値である。一方、数値の集合が82,100,105,99,112,79の順番で処理された場合は、正常値が79から82までの値となり、珍しい値が99から112までの値となる。
【００７６】
数値nの近傍は、1以上の閾値bを使って、n/bからn*bまでの数値として定義することもできる。たとえば、閾値が10のとき、数値52の近傍は、5.2から520までの数である。
【００７７】
一方、ものの名前や種類といったカテゴリ値は、出現確率を使って珍しさを定義できる。たとえば、ある変数に文字列ABCが2回、XYZが100回代入された場合、文字列ABCの代入の方が珍しい挙動となる。つまり、カテゴリ値の珍しさに関しては、カテゴリ値の出現回数を数値データとみなし、出現回数が平均出現回数の近傍を下回るようなカテゴリ値を、珍しい値として求める。
【００７８】
変数値に関しては、変数の初期値と実行途中の値と実行終了時の値とに分けて、珍しさを計算することもできる。たとえば変数xの値が、ほとんどの場合、計算中は0から100の間を変化し、計算終了時には0になるとする。このとき、あるときだけ変数xの値が100で終了した場合は、この100を珍しい値とみなし、終了直前の変数xへの代入を珍しい挙動とみなす。
【００７９】
希少挙動部分系列計算部の幾つかの実施例については、後に詳細に説明する。
【００８０】
さて、希少挙動部分系列計算部１４２によって求められた希少挙動部分系列１７２が記憶部１５２に記憶されると、次に挙動系列検索部１４３は、記憶部１５１に記憶されている挙動系列の集合１７１中の各挙動系列と、記憶部１５２に記憶された希少挙動部分系列１７２とのマッチングを行い、希少挙動部分系列１７２を含む（複数の）挙動系列を抽出し、抽出した挙動系列の集合を、希少挙動部分系列を含む挙動系列の集合１７３として記憶部１５３に記憶する（ステップＡ３）。
【００８１】
最後に、挙動到達原因究明部１４４は、希少挙動部分系列を含む挙動系列の集合１７３の中から共通の挙動を求める（ステップＡ４）。具体的には、系列の集合１７３に対する最長共通部分系列を計算する。２つの系列に対する最長共通部分系列（LCS: Longest Common  Subsequence）の計算方法は広く知られており、たとえば以下の文献にアルゴリズムが紹介されている。
R.コルメン, C.ライザーソン, R.リベスト著, 浅野哲夫他訳. アルゴリズムイントロダクション２.近代科学社,1995.
【００８２】
２系列に対する最長共通部分系列の計算を複数回行うことで、複数の系列に対する最長共通部分系列を求めることができ、求められた最長共通部分系列は共通部分系列１７４として記憶部１５４に記憶される。ここで、挙動到達原因究明部１４４は、最長共通部分系列ではなく、出現確率の高い挙動を求めるものであっても良い。
【００８３】
また、挙動到達原因究明部１４４は、求めた最長共通部分系列のうち、記憶部１５２に記憶されている希少挙動部分系列１７２より前に出現する挙動を、希少挙動部分系列の発生原因（希少挙動部分系列到達原因１７５）とみなし、記憶部１５４に記憶する。
【００８４】
出力部１４５は、記憶部１５４に記憶された共通部分系列（最長共通部分系列）１７４や希少挙動部分系列到達原因１７５を出力装置１３０に出力する。
【００８５】
計算機のように、関数呼出し等の挙動によって状態を変化させながら動作する動作主体では、ある挙動によって状態の一部が不正になったまま動作し続け、あるとき、その不正な部分を利用したために、例外やシグナル等の通常とは異なる挙動が引き起こされることが多い。挙動到達原因究明部１４４は、状態を不正にした可能性のある挙動を特定している。つまり、本実施の形態は計算機プログラムのほか、挙動と状態の変化に関連があるような動作主体の異常挙動検出に適用できる。
【００８６】
このように本実施の形態によれば、動作主体の例外的な挙動、すなわち異常を検出し、異常な挙動に至る過程において多く観測された挙動を求めることで、異常の原因として怪しい挙動を素早く特定することができるという効果が得られる。
【００８７】
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
[第１の実施の形態の実施例１]
【００８８】
まず、第１の実施例では、挙動としてJava（登録商標）プログラムなどのメソッド呼出しを考える。また、希少挙動部分系列の計算には、一次のマルコフモデル、すなわち１段階の推移確率を用いる。いま、動作主体であるプログラムに様々な入力を与えながら複数回の実行を行い、メソッド呼出し系列の集合が得られたとする。このメソッド呼出し系列の集合は、入力部１４１によって、記憶部１５１に挙動系列の集合１７１として記憶され、希少挙動部分系列計算部１４２と挙動系列検索部１４３とに与えられる。
【００８９】
メソッド呼出しＸの後にメソッド呼出しＹが呼ばれることを「Ｘ→Ｙ」と書き、ＸからＹへの推移と呼ぶことにすると、希少挙動部分系列計算部１４２は、統計データから、確率の低い推移を計算によって求める。たとえば、挙動系列の集合１７１中にＸ→Ｙが２回、Ｘ→Ｚが３回出現しており、Ｘからの推移が他にない場合、Ｘ→Ｙの推移確率は2/(2+3)=0.4、Ｘ→Ｚの推移確率は3/(2+3)=0.6と計算される。メソッド呼出し系列中のすべての推移に関する統計を取ることで、図３に示すような一次マルコフモデルが得られたとする。図３において、ノードは挙動を表し、アークについた数値は推移確率を表している。もっとも推移確率の低い、すなわち珍しい推移はＫ→Ｅであるので、このＫ→Ｅが希少挙動部分系列１７２として挙動系列検索部１４３に与えられる。また、出力部１４５によってＫ→Ｅをディスプレイやファイルに出力することもできる。ここではもっとも推移確率の低い推移だけを求めたが、決められたＮに対して、推移確率が低い方から順にＮ個の推移を求めてもよい。
【００９０】
挙動系列検索部１４３は、記憶部１５１が保持するメソッド呼出し系列の集合１７１の中から、希少挙動部分系列として与えられたＫ→Ｅを含む挙動系列を抽出する。挙動系列検索部１４３は、抽出したメソッド呼出し系列の集合を、希少挙動部分系列を含む挙動系列の集合１７３として記憶部１５３に保存し、挙動到達原因究明部１４４に与える。
【００９１】
挙動到達原因究明部１４４は、希少挙動部分系列を含む挙動系列の集合１７３として与えられたメソッド呼出し系列の集合に対して、各系列に共通するメソッド呼出しを見つける。たとえば、推移Ｋ→Ｅを含む挙動系列の集合が、
（１）Ｂ→Ｇ→Ｋ→Ｋ→Ｅ→Ａ、
（２）Ｂ→Ｆ→Ｇ→Ｋ→Ｅ、
（３）Ａ→Ｂ→Ｇ→Ｋ→Ｅ→Ａ→Ｂ→Ｔ、
の３つであるとき、共通部分はＢ→＊→Ｇ→Ｋ→Ｅとなる。ここで、「Ｂ→＊→Ｇ」はメソッド呼出しＢとメソッド呼出しＧとの間に０個以上のメソッド呼出しが起きていることを表す。Ｋ→Ｅが通常とは異なる推移（つまり希少挙動部分系列１７２）であるとき、Ｋ→Ｅの以前に起きているＢ→＊→Ｇを、Ｋ→Ｅの原因とみなす。なぜなら、計算機はプログラムにしたがって内部状態を変化させながら動作しており、メソッド呼出しＢやＧ、あるいはメソッド呼出しＢの後にメソッド呼出しＧが呼ばれることで、内部状態に異常が発生した可能性が高いからである。
【００９２】
なお、同じ種類の誤りが複数のメソッド呼出しに含まれている場合、誤りを含んだメソッドのうちの任意の１つが呼ばれただけで異常が発生する可能性があるため、系列中の共通部分を求めるだけでは正しい原因が見つからない恐れがある。そのため、共通部分だけではなく、系列中に高い確率で現れる挙動や推移を障害の原因として求めるのが望ましい。例えば、推移Ｋ→Ｅを含む挙動系列の集合として、上記（１）〜（３）の３つの挙動系列以外に、次のような挙動系列があったとする。
（４）Ｐ→Ｇ→Ｋ→Ｋ→Ｅ→Ａ
この場合、４つの挙動系列すべてに共通な部分系列は、希少挙動部分系列Ｋ→Ａそのものだけになり、希少挙動部分系列到達原因が見つからないが、系列中に高い確率で現れる挙動や推移を求めると、Ｂ→＊→Ｇが特定できることになる。
[第１の実施の形態の実施例２]
【００９３】
次に、第２の実施例を用いて本実施の形態の動作を説明する。
【００９４】
第２の実施例では、挙動として、ある電子メールソフトウェア（メーラ）の動作を考える。メーラの動作としては、メールの送信や受信、添付ファイルの実行、およびこれらの動作に付随して、送受信の時間や送受信したメールの数などの数値データがある。ここでは、１人のユーザが１日に使用するメーラの動作を１つの挙動系列とする。たとえば、「１０時３５分に２０通のメールを受信、１０時５０分に添付ファイルabc.exeを実行、１１時２０分に５通のメールを送信」のようなものがメーラの挙動系列である。複数のユーザがメーラを一定期間使用した結果得られる挙動系列の集合が、入力部１４１によって記憶部１５１に挙動系列の集合１７１として記憶され、挙動系列検索部１４３と希少挙動部分系列計算部１４２に与えられたものとする。なお、挙動は、メーラが動作を行うたびにこれらの手段に逐一与えられるものとする。
【００９５】
ここでは挙動の珍しさとして、数値の珍しさを用いる。送受信の時間は、何時何分という形式ではなく、０時から何分経過したかを数値として扱うことで、ある閾値に対して珍しさを定義できる。たとえば、１０時３５分は10*60+35=635となる。ここでは簡単のため、メールの送受信数だけを考える。
【００９６】
あるとき、希少挙動部分系列計算部１４２が、珍しい挙動として「２００通のメールを送信」を検出したとする。ここではこの珍しい挙動を「例外的に多数のメールを送信」として扱う。希少挙動部分系列計算部１４２は、「例外的に多数のメールを送信」を希少挙動部分系列１７２として挙動系列検索部１４３に与える。また、出力部１４５は、例外的に多数のメールを送信したことをディスプレイやファイル等の出力装置１３０に出力するか、あるいはシステム管理者にメール等の手段を用いて知らせる。
【００９７】
挙動系列検索部１４３は、挙動系列の集合１７１から、例外的に多数のメールを送信した挙動を含む系列を抽出し、希少挙動部分系列を含む挙動系列の集合１７３として挙動到達原因究明部１４４に与える。例外的に多数のメールを送信した挙動を含む系列が１つしか存在しない間は、その１系列が挙動到達原因究明部１４４によって求まるだけで、原因は特定されない。しかし、時間の経過とともに、例外的に多数のメールを送信した系列が複数収集されたとすると、以下のようにして原因が特定される。
【００９８】
今、収集された系列が以下の３つであるとする。
（１）５通のメールを受信、添付ファイルddd.exeを実行、３通のメールを送信、２５０通のメールを送信
（２）２７通のメールを受信、添付ファイルddd.exeを実行、３２０通のメールを送信
（３）５通のメールを受信、ddd.exeを実行、８通のメールを受信、添付ファイルabc.txtを開く、１８０通のメールを送信
【００９９】
このとき、各挙動系列の送受信数を無視すると、例外的に多数のメールを送信する前に出現している共通の部分系列は、「メールを受信、添付ファイルddd.exeを実行」となる。例外的に多数のメールを送信した原因としてはコンピュータウィルスへの感染等が考えられるが、感染原因として、受信したメールの添付ファイルddd.exeの実行が怪しいことがわかる。挙動到達原因究明部１４４はこの共通の部分系列を記憶部１５４に保存し、出力部１４５によって出力あるいは管理者に通知する。これにより、管理者はコンピュータウィルスへの感染を的確に対処することができる。
【０１００】
［第２の実施の形態］
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【０１０１】
図４を参照すると、本発明の第２の実施の形態にかかる異常挙動検出装置２００は、処理装置２１０と記憶装置２２０と出力装置２３０と入力装置２７０とを含んで構成され、処理装置２１０は、入力部２４１、希少挙動部分系列計算部２４２、挙動系列検索部２４３、挙動到達原因究明部２４４、出力部２４５および挙動受付部２４６を備え、記憶装置２２０は、記憶部２５１〜２５４を備えている。
【０１０２】
入力部２４１は、動作主体の挙動系列２６０を外部から１個以上入力し、挙動系列の集合２７１として記憶部２５１に記憶する。動作主体は、先行する挙動の系列が後続の挙動に影響を与え得るものであり、例えば計算機である。入力部２４１は、動作主体から得られる挙動系列２６０をオンラインで取得して記憶部２５１に記憶するものであっても良いし、動作主体から得られた１個以上の挙動系列２６０をオフラインで入力して記憶部２５１に記憶するものであっても良い。
【０１０３】
挙動受付部２４６は、入力装置２７０を通じてユーザから、挙動や挙動部分系列の選択を受け付ける。受け付けた挙動や挙動部分系列は、記憶部２５２に、挙動あるいは挙動部分系列２７２として一旦記憶され、挙動系列検索部２４３に与えられる。
【０１０４】
挙動系列検索部２４３は、記憶部２５１から挙動系列の集合２７１を入力し、記憶部２５２から挙動あるいは挙動部分系列２７２を入力し、挙動系列の集合２７１から挙動あるいは挙動部分系列２７２を含む全ての挙動系列を検索し、この検索結果で元の挙動系列の集合２７１を置き換える。
【０１０５】
挙動到達原因究明部２４４は、記憶部２５１から挙動系列の集合２７１を入力し、この挙動系列の集合２７１中に共通に現れる挙動或いはほぼ共通に現れる挙動、つまり、高い確率（頻度）で現れる挙動を検出し、挙動到達原因２７３として記憶部２５４に記憶する。
【０１０６】
希少挙動部分系列計算部２４２は、記憶部２５１から挙動系列の集合２７１を入力し、系列中に現れる珍しい部分系列を計算（検出）し、希少挙動部分系列２７４として記憶部２５３に記憶する。
【０１０７】
出力部２４５は、記憶装置２２０に記憶された挙動到達原因２７３、希少挙動部分系列２７４をディスプレイ装置などの出力装置２３０に出力する。記憶装置２２０に記憶されたその他のデータを出力装置２３０に出力するようにしても良い。
【０１０８】
次に、図４及び図５のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【０１０９】
まず、入力部２４１は、１個以上の動作主体の挙動系列２６０を外部より受信し、記憶部２５１に記憶する（図５のステップＢ１）。ここで、挙動、挙動系列の意義は第１の実施の形態と同様である。
【０１１０】
次に、挙動受付部２４６は、ユーザから挙動あるいは挙動部分系列の入力を受け付ける（ステップＢ２）。ユーザからの入力が与えられない場合は、処理を終了する。入力が与えられると、ユーザから入力された挙動あるいは挙動部分系列が記憶部２５２に記憶され、次に、挙動系列検索部２４３は、記憶部２５１に記憶された挙動系列の集合２７１の中から、記憶部２５２に記憶された挙動あるいは挙動部分系列２７２を含む全ての系列を検索する（ステップＢ３）。
【０１１１】
ユーザから与えられる挙動や挙動部分系列は複数あっても良い。また、複数の挙動や挙動部分系列を与えるときは、その１つ１つを指定しても良いが、検索のための条件式を使って値の範囲等を指定し、複数の挙動を与えることもできる。たとえば、「変数xに0未満の値が代入される挙動」や「挙動Ａを含まない挙動系列」のような条件式を与えて、挙動系列を検索することができる。検索の結果得られた挙動系列集合は、記憶部２５１に新たな挙動系列の集合２７１として記憶される（ステップＢ４）。
【０１１２】
次に、挙動到達原因究明部２４４は、記憶部２５１に記憶された挙動系列の集合２７１の中から、共通の挙動あるいは出現確率の高い挙動を挙動到達原因として求め（ステップＢ５）、記憶部２５４に挙動到達原因２７３として記憶するとともに、出力部２４５によって必要に応じて出力装置２３０から出力する。この挙動到達原因究明部２４４により、ユーザから指定された挙動や挙動部分系列に対する挙動到達原因を求めることで、たとえば、変数xに0未満の値が代入されるのはどのようなときか、といった情報を提供することができる。
【０１１３】
次に、希少挙動部分系列計算部２４２は、記憶部２５１に記憶された挙動系列の集合２７１の中から、第１の実施の形態における希少挙動部分系列計算部１４２と同様に、珍しい部分系列を計算し（ステップＢ６）、記憶部２５３に希少挙動部分系列２７４として記憶すると共に、出力部２４５によって必要に応じて出力装置２３０から出力する。これにより、ユーザが注目する挙動を含んだ挙動系列の集合や、ある条件下における挙動系列の集合に対して、例外的な挙動を特定することができる。
【０１１４】
挙動到達原因究明部２４４および希少挙動部分系列計算部２４２の処理が終わると、挙動受付部２４６は再びユーザからの入力を待つ。ユーザから挙動や挙動部分系列、検索条件式が与えられると、前回検索した挙動部分系列集合である挙動系列の集合２７１の中から、新たに与えられた条件に合致する挙動系列を検索する。ステップＢ２−Ｂ６を繰り返すことで、多数の挙動系列の中から、ユーザの注目したい挙動系列を徐々に絞り込んでいくことができる。
【０１１５】
次に、本実施の形態の効果について説明する。
【０１１６】
本実施の形態では、挙動や挙動部分系列をユーザから受け付ける挙動受付部２４６を備えているため、希少挙動部分系列や挙動到達原因、あるいは任意の挙動のうち、ユーザが注目する挙動に関して、挙動が起きた原因を特定することができる。
【０１１７】
また、本実施の形態ではさらに、挙動や挙動部分系列に関する条件式を受け付けられるように構成されているため、ある条件下における例外的な挙動を検出することができる。
【０１１８】
また、本実施の形態ではさらに、ユーザによる挙動や挙動部分系列の入力と、希少挙動部分系列および挙動到達原因の計算とを繰り返し行えるように構成されているため、例外的な挙動や挙動到達原因を徐々に絞り込んでいくことができる。
【０１１９】
［第２の実施の形態の実施例１］
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
【０１２０】
第１の実施の形態における第１の実施例と同様の記法を用いて説明する。図６は、本実施例の出力装置２３０に表示されるウィンドウ画面のイメージを示したものである。ウィンドウ画面は、ソースプログラム表示部２３１、クラス階層表示部２３２、希少変数値表示部２３３、希少メソッド系列表示部２３４、挙動到達原因表示部２３５および詳細表示部２３６で構成される。
【０１２１】
ソースプログラム表示部２３１は、動作主体であるプログラムのソースプログラムを表示する。クラス階層表示部２３２は、ソースプログラム中のある箇所が、クラス階層中のどこに位置するかを表示する。
【０１２２】
まず、プログラムを複数回実行した結果得られるメソッド呼出し系列の集合が、入力部２４１によって外部から入力され、挙動系列の集合２７１として記憶部２５１に記憶されているものとする。ユーザが注目すべき挙動の情報を持たない場合、与えられたすべてのメソッド呼出し系列が抽出されるように、挙動受付部２４６に対して検索条件としての挙動あるいは挙動部分系列２７２を与えることができる。このとき挙動受付部２４６で抽出されたメソッド呼出し系列集合（つまり、挙動系列の集合２７１そのもの）は、記憶部２５１を通じて希少挙動部分系列計算部２４２と挙動到達原因究明部２４４に与えられる。すべての挙動を抽出した場合、挙動到達原因にはほとんど意味がないため、挙動到達原因究明部２４４の処理や出力を抑制することができる。
【０１２３】
希少挙動部分系列計算部２４２は、与えられたメソッド呼出し系列集合に対し、複数の珍しい変数の値や珍しい部分系列を計算し、希少挙動部分系列２７４として記憶部２５３に保存するとともに、出力部２４５によって、計算した珍しい変数の値を図６の希少変数値表示部２３３に出力し、珍しいメソッド系列を希少メソッド系列表示部２３４に出力する。出力された珍しい変数の値や部分系列の中から、ユーザが、整数型の変数xに値-3276が代入されていることに注目したとする。
【０１２４】
整数型の変数xへの-3276の代入が選択されると、希少挙動部分系列計算部２４２は、出力部２４５によって、図６の詳細表示部２３６に、なぜ-3276が珍しい値として検出されたかを表示する。第１の実施の形態で述べたように、珍しい値は、通常の値の範囲の近傍から外れた値として検出されるため、希少挙動部分系列計算部２４２は、通常の値の範囲や珍しい値との差異等を視覚的に表示する。
【０１２５】
このとき、変数xに負の整数が代入されるのがおかしいということをユーザが希少変数値表示部２３３を見て気がついた、あるいは知っていたとする。この場合、変数xに負の整数が代入されているメソッド呼出し系列を検索するように、挙動受付部２４６から新たな条件式が記憶部２５２を通じて挙動系列検索部２４３に与えられると、挙動系列検索部２４３は、与えられた条件式を満足する系列を検索し、結果を記憶部２５１を通じて挙動到達原因究明部２４４および希少挙動部分系列計算部２４２に与える。
【０１２６】
挙動到達原因究明部２４４は、与えられたメソッド呼出し系列集合の中から、すべての系列に共通する挙動や出現確率の高い挙動を求め、これを記憶部２５４に記憶するとともに出力部２４５によって図６の挙動到達原因表示部２３５に表示する。これによりユーザは、変数xに負の整数が代入される原因となったメソッド呼出しを知ることができる。
【０１２７】
希少挙動部分系列計算部２４２は、与えられたメソッド呼出し系列集合に対し、再度、珍しい部分系列や珍しい変数の値を計算して出力する。
【０１２８】
たとえば、当初珍しい挙動として検出されていた希少推移Ｋ→Ｅがあり、ユーザは、Ｋ→Ｅの発生条件が変数xとyの値に依存することを知っていたとする。このとき、発生条件が「ある実行時点においてx=0,y=1のとき」のように固定的である場合は、Ｋ→Ｅが発生する挙動系列の共通部分を求めることで、発生条件が明らかになる。しかし、発生条件が「x=0,y=1あるいはx＞128のとき」のように多少複雑である場合には、共通部分を求めるだけでは発生条件（挙動到達原因）が得られない。
【０１２９】
このような場合は、挙動系列検索部２４３に条件を与えて、変数値に関する条件を少しずつ限定していくのが有効である。たとえば、最初は条件としてx＜128を与え、徐々にx＜32やx＜1のように条件を絞り込んでいくことができる。絞込みに成功すると、希少推移Ｋ→Ｅは、希少挙動ではなく、変数値の条件を満たす挙動系列中の共通部分として求まるようになる。
【０１３０】
ユーザが、希少挙動部分系列や挙動到達原因の提示する情報にこれ以上意味がないと判断すると、挙動受付部２４６への入力は中止され、処理が終了する。
［第３の実施の形態］
【０１３１】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【０１３２】
図７を参照すると、本発明の第３の実施の形態にかかる異常挙動検出装置３００は、図１に示した第１の実施の形態にかかる異常挙動検出装置１００と比べて、処理装置３１０が予兆検出部１４６を有する点で異なる。
【０１３３】
予兆検出部１４６は、挙動到達原因究明部１４４が求めた希少挙動部分系列到達原因１７５を記憶部１５４から受け取って内部に挙動到達原因として保存し、動作主体３７０から新たに受信した挙動系列３７１の中に挙動到達原因が存在していた場合に、出力装置１３０を通じてユーザに警告を発行する。メール等の他の手段で警告を発行しても良い。
【０１３４】
次に、図７及び図８のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【０１３５】
図８のステップＡ１〜Ａ４で示される本実施の形態における入力部１４１、希少挙動部分系列計算部１４２、挙動系列検索部１４３および挙動到達原因究明部１４４の動作は、第１の実施の形態の対応する部分の動作と同一のため、説明を省略する。
【０１３６】
第１の実施の形態では、希少挙動部分系列到達原因１７５が求まった時点で処理を終了していたが、本実施の形態では、挙動到達原因究明部１４４が求めた希少挙動部分系列到達原因１７５を予兆検出部１４６に与える。予兆検出部１４６は、動作主体３７０から新たに受信される挙動系列３７１を監視して、挙動系列の中に挙動到達原因が存在していた場合に警告を発行する（ステップＣ１）。ここでは、１つの挙動系列がまとめて受信されるのではなく、先頭の挙動から随時受信されることを想定している。これにより希少挙動が発生する可能性を事前に予測することができる。
【０１３７】
このように本実施の形態によれば、新たに受信される挙動系列中に挙動到達原因が含まれているかどうかを検査できるように構成されているため、珍しい挙動が実際に発生する前に、発生する可能性があることを知ることができるという効果がある。
【０１３８】
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
【０１３９】
第１の実施の形態における第１の実施例と同様の記法と例を用いて説明する。
【０１４０】
もっとも推移確率の低い、すなわち通常とは異なる推移がＫ→Ｅであり、Ｋ→Ｅの挙動到達原因がＢ→＊→Ｇであったとする。挙動到達原因Ｂ→＊→Ｇは、予兆検出部１４６に与えられる。
【０１４１】
予兆検出部１４６は、新たに受信される挙動系列３７１を逐一監視し、メソッド呼出しＢの後にメソッド呼出しＧが出現するような挙動系列を検出すると、異常な推移Ｋ→Ｅが実際に観測される前に、異常が発生する可能性が高いとして管理者等に警告を発する。警告を受け取った管理者は、実際に異常が発生する前に、なんらかの対策をとることができる。
【０１４２】
［第４の実施の形態］
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。
【０１４３】
図９を参照すると、本発明の第４の実施の形態にかかる異常挙動検出装置４００は、図７に示した第３の実施の形態にかかる異常挙動検出装置３００と比較して、処理装置４１０が希少挙動部分系列計算部１４２の代わりに、入力装置４８０を通じてユーザから挙動系列検索部１４３の検索条件となる挙動あるいは挙動部分系列４７２を受け付ける挙動受付部１４７を備える点で異なる。
【０１４４】
図９及び図１０のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【０１４５】
まず、入力部１４１は、１個以上の動作主体の挙動系列１６０を外部より受信し、記憶部１５１に記憶する（ステップＡ１）。次に、挙動受付部１４７は、ユーザから挙動あるいは挙動部分系列の入力を受け付け、記憶部１５２に記憶する（ステップＤ１）。次に、挙動系列検索部１４３は、記憶部１５１に記憶された挙動系列の集合１７１の中から、記憶部１５２に記憶された挙動あるいは挙動部分系列４７２を含む全ての系列を検索し、結果を記憶部１５３に記憶する（ステップＤ２）。検索の結果得られた挙動系列の集合１７３は、挙動到達原因究明部１４４に与えられる。
【０１４６】
図１０のステップＡ４とＣ１で示される本実施の形態における挙動到達原因究明部１４４および予兆検出部１４６の動作は、第３の実施の形態の対応する部分の動作と同一のため、説明を省略する。
【０１４７】
プログラムは、プログラム中の処理が失敗した時のために、例外処理を行うためのメソッドや関数が用意されていることが多い。ユーザはこの例外処理のためのメソッドや関数を挙動受付部１４７に与えておくことで、例外処理が発生した原因を特定し、その後、例外処理が発生する可能性がある場合に、発生を事前に知ることができる。
【０１４８】
このように本実施の形態によれば、ユーザから指定された挙動の到達原因が、新たな挙動系列に含まれているかどうかを検査できるように構成されているため、指定された挙動が実際に発生する前に、発生の可能性を知ることができるという効果がある。
【０１４９】
［第５の実施の形態］
次に、本発明の第５の実施の形態について図面を参照して詳細に説明する。
【０１５０】
図１１を参照すると、本発明の第５の実施の形態にかかる異常挙動検出装置５００は、図１に示した第１の実施の形態にかかる異常挙動検出装置１００と比較して、処理装置５１０が挙動相関関係発見部５４６を備えている点と、挙動系列検索部５４３の動作などが相違する。
【０１５１】
挙動系列検索部５４３は、挙動系列の集合５７１から、希少挙動部分系列５７２を含む挙動系列の集合５７３および希少挙動部分系列５７２を含まない挙動系列の集合５７４を抽出して、記憶部５５３、５５４に記憶する。
【０１５２】
挙動到達原因究明部５４４は、第１の実施の形態の挙動到達原因究明部１４４と同様に、希少挙動部分系列５７２を含む挙動系列の集合５７３から、希少挙動部分系列５７２より前に高い確率で出現する部分系列を検出して希少挙動部分系列到達原因５７６として記憶部５５５に記憶する。
【０１５３】
挙動相関関係発見部５４６は、希少挙動部分系列到達原因５７６から、希少挙動部分系列を含まない挙動系列の集合５７４に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因５７７として検出して記憶部５５６に記憶する。
【０１５４】
次に、図１１及び図１２のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【０１５５】
図１２のステップＡ１〜Ａ３で示される本実施の形態における入力部５４１、希少挙動部分系列計算部５４２および挙動系列検索部５４３の動作は、第１の実施の形態の対応する部分の動作と同一のため、説明を省略する。
【０１５６】
第１の実施の形態では、ステップＡ３において、挙動系列検索部５４３が希少挙動部分系列５７２を含む挙動系列だけを、最初に与えられた挙動系列の集合５７１の中から検索していた。本実施の形態ではさらに、挙動系列検索部５４３が、挙動系列の集合５７１の中から、希少挙動部分系列５７２を含まない挙動系列を検索し、記憶部５５４に記憶する（ステップＥ１）。検索の結果求まった、希少挙動部分系列を含む挙動系列の集合５７３は挙動到達原因究明部５４４に与えられ、希少挙動部分系列を含まない挙動系列の集合５７４は、挙動相関関係発見部５４６に与えられる。
【０１５７】
挙動到達原因究明部５４４と挙動相関関係発見部５４６とで究明部５４７を構成する。究明部５４７は、希少挙動部分系列を含む挙動系列の集合５７３中には存在するが、希少挙動部分系列を含まない挙動系列の集合５７４中には存在しない挙動を、希少挙動部分系列５７２と強い相関のある挙動として求める（ステップＥ２）。あるいは、希少挙動部分系列を含む挙動系列の集合５７３中における出現確率は高いが、希少挙動部分系列を含まない挙動系列の集合５７４中における出現確率が低い挙動を求めても良い。
【０１５８】
すなわち、挙動到達原因究明部５４４は、第１の実施の形態の挙動到達原因究明部１４４と同様に、希少挙動部分系列を含む挙動系列の集合５７３中に共通するあるいは頻出する挙動を共通部分系列５７５として抽出し、共通部分系列５７５中で、希少挙動部分系列５７２より前に高い確率で出現する部分系列を希少挙動部分系列到達原因５７６として検出し、記憶部５５５に記憶する。次に、挙動相関関係発見部５４６は、希少挙動部分系列到達原因５７６のうち、希少挙動部分系列を含まない挙動系列の集合５７４中に出現しないあるいはほとんど出現しない挙動を、強い相関のある希少挙動到達原因５７７として求め、記憶部５５６に記憶する。したがって、強い相関のある希少挙動到達原因５７７は、第１の実施の形態によって求まる希少挙動部分系列到達原因１７５の一部である。
【０１５９】
本実施の形態は、第２の実施の形態における挙動受付部２４６を追加することで、ユーザから指定された挙動や挙動部分系列に対して、強い相関のある挙動到達原因を求めることもできる。また、本実施の形態に、第３の実施の形態における予兆検出部１４６を追加することで、強い相関のある希少挙動到達原因５７７を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
【０１６０】
このように本実施の形態によれば、珍しい挙動が起きる以前に高い確率で現れ、珍しい挙動が起きない場合にはほとんど現れないような挙動が発見できるように構成されているため、珍しい挙動やユーザが指定した挙動が起きる原因をより高い精度で特定することができるという効果がある。
【０１６１】
［第５の実施の形態の実施例１］
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
【０１６２】
第１の実施の形態における第１の実施例と同様の記法および例を用いて説明する。
【０１６３】
もっとも推移確率の低い、すなわち通常とは異なる推移がＫ→Ｅであり、推移Ｋ→Ｅを含む挙動系列の集合が、
（１）Ｂ→Ｇ→Ｋ→Ｋ→Ｅ→Ａ、
（２）Ｂ→Ｆ→Ｇ→Ｋ→Ｅ、
（３）Ａ→Ｂ→Ｇ→Ｋ→Ｅ→Ａ→Ｂ→Ｔ、
の３つであったとする。このとき、推移Ｋ→Ｅの挙動到達原因は「Ｂ→＊→Ｇ」となる。一方、推移Ｋ→Ｅを含まない挙動系列の集合中に、メソッド呼出しＢは出現しているが、メソッド呼出しＧは出現していなかったとする。この場合、メソッド呼出しＢは推移Ｋ→Ｅの発生に影響を与えないが、メソッド呼出しＧは推移Ｋ→Ｅの発生と強い相関がある。挙動相関関係発見部５４６はこのメソッド呼出しＧを強い相関のある挙動到達原因として求める。つまり、メソッド呼出しＧが起きた後は、推移Ｋ→Ｅが起きる可能性が非常に高いといえる。
【０１６４】
プログラムの動作をリアルタイムに監視しており、推移Ｋ→Ｅが重大な障害であることがすでにわかっている場合を考える。本実施の形態に第３の実施の形態における予兆検出部を追加した構成では、メソッド呼出しＧの発生を常時監視することで、推移Ｋ→Ｅが実際に発生してしまう前に、プログラムの実行を強制終了するなどの対応を行うことができる。
【０１６５】
［第６の実施の形態］
次に、本発明の第６の実施の形態について図面を参照して詳細に説明する。
【０１６６】
図１３を参照すると、本発明の第６の実施の形態にかかる異常挙動検出装置６００は、図１に示した第１の実施の形態にかかる異常挙動検出装置１００と比較して、依存関係情報６８１を記憶する記憶装置６８０を有し、処理装置６１０が依存関係解析部６４６を備えている点で異なる。
【０１６７】
記憶装置６８０に記憶された依存関係情報６８１は、挙動系列の集合６７１中の各挙動が有する命令群の情報と、プログラムスライシングによって得られる命令間の依存関係の情報を含む。
【０１６８】
依存関係解析部６４６は、命令間の依存関係情報を用いて、挙動間の依存関係を求める。
【０１６９】
次に、図１３及び図１４のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【０１７０】
図１４のステップＡ１〜Ａ４で示される本実施の形態における入力部６４１、希少挙動部分系列計算部６４２、挙動系列検索部６４３および挙動到達原因究明部６４４の動作は、第１の実施の形態の対応する部分の動作と同一のため、説明を省略する。
【０１７１】
本実施の形態では、挙動到達原因究明部６４４で求められた希少挙動部分系列に対する挙動到達原因６７５が、希少挙動部分系列６７２とともに依存関係解析部６４６に与えられる。依存関係解析部６４６は、挙動到達原因６７５のうち、希少挙動部分系列６７２と依存関係にあるものだけを求め、被依存挙動到達原因６７６として記憶部６５５に記憶するとともに、出力部６４５によって出力装置６３０に出力する（ステップＦ１）。依存関係解析部６４６は具体的には以下のような処理を行う。
【０１７２】
依存関係解析部６４６は、まず、依存関係情報６８１を使って、希少挙動部分系列６７２に含まれる命令の集合を抽出し、これらの命令が依存する命令の集合を被依存命令として求める。次に、挙動到達原因６７５中の各挙動に含まれる命令の集合を抽出し、各挙動が被依存命令を含んでいるかどうかを調べる。そして、挙動到達原因６７５のうち、被依存命令を含んだ挙動の集合を被依存挙動到達原因６７６として求める。依存関係解析部６４６は、必要に応じて、この被依存挙動到達原因６７６を出力部６４５によって出力装置６３０から出力する。
【０１７３】
本実施の形態は、第２の実施の形態における挙動受付部２４６を追加することで、ユーザから指定された挙動や挙動部分系列に対して、被依存挙動到達原因を求めることもできる。また、本実施の形態に、第３の実施の形態における予兆検出部１４６を追加することで、被依存挙動到達原因６７６を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
【０１７４】
このように本実施の形態によれば、珍しい挙動が起きる以前に高い確率で現れる挙動のうち、珍しい挙動がデータフローや制御フローの観点から依存している挙動のみを抽出できるように構成されているため、珍しい挙動が起きる原因をより高い精度で特定することができるという効果がある。
【０１７５】
［第６の実施の形態の実施例１］
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
【０１７６】
第１の実施の形態における第１の実施例と同様の記法および例を用いて説明する。
【０１７７】
もっとも推移確率の低い、すなわち通常とは異なる推移がＫ→Ｅであり、推移Ｋ→Ｅを含む挙動系列の集合が、
（１）Ｂ→Ｇ→Ｋ→Ｋ→Ｅ→Ａ、
（２）Ｂ→Ｆ→Ｇ→Ｋ→Ｅ、
（３）Ａ→Ｂ→Ｇ→Ｋ→Ｅ→Ａ→Ｂ→Ｔ、
の３つであったとする。このとき、推移Ｋ→Ｅの挙動到達原因は「Ｂ→＊→Ｇ」となる。一方、メソッド呼出しＫは命令i,jを含んでおり、メソッド呼出しＥは命令kを含んでいたとする。プログラムスライシングによって、データフローと制御フローを解析することにより、命令i,j,kが依存する、すなわち命令i,j,kの実行結果に影響を与え得る命令の集合（被依存命令集合）が、命令e,f,g,hであることがわかるとする。また、メソッド呼出しＧは命令f,gを含んでいるが、メソッド呼出しＢは被依存命令集合のうちのいずれの命令も含んでいなかったとする。このとき、メソッド呼出しＧが推移Ｋ→Ｅの発生に影響を与えた可能性が高いため、依存関係解析部６４６は、このメソッド呼出しＧを被依存挙動到達原因６７６として求め、提示する。
【０１７８】
［第７の実施の形態］
たとえば、図１１に示した第５の実施の形態と図１３に示した第６の実施の形態とを組み合わせ、図１５の第７の実施の形態にかかる異常挙動検出装置７００に示されるように、挙動相関関係発見部５４６の後段に依存関係解析部６４６を設けるようにしても良い。この場合、依存関係解析部６４６は、まず、依存関係情報６８１を使って、希少挙動部分系列５７２に含まれる命令の集合を抽出し、これらの命令が依存する命令の集合を被依存命令として求める。次に、強い相関のある希少挙動到達原因５７７中の各挙動に含まれる命令の集合を抽出し、各挙動が被依存命令を含んでいるかどうかを調べる。そして、挙動到達原因５７７のうち、被依存命令を含んだ挙動の集合を被依存挙動到達原因６７６として求める。依存関係解析部６４６は、必要に応じて、この被依存挙動到達原因６７６を出力部６４５によって出力装置６３０から出力する。
【０１７９】
また、この第７の実施の形態に対して、第２の実施の形態における挙動受付部２４６を追加することで、ユーザから指定された挙動や挙動部分系列に対して、被依存挙動到達原因を求めることもできる。さらに、この第７の実施の形態に、第３の実施の形態における予兆検出部１４６を追加することで、被依存挙動到達原因６７６を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
【０１８０】
［第８の実施の形態］
図１５に示した第７の実施の形態では、挙動相関関係発見部５４６の後段に依存関係解析部６４６を設けたが、それとは逆に図１６の第８の実施の形態にかかる異常挙動検出装置８００に示すように、依存関係解析部６４６の後段に挙動相関関係発見部５４６を設けるようにしても良い。この場合、挙動相関関係発見部５４６は、被依存挙動到達原因６７６のうち、希少挙動部分系列を含まない挙動系列の集合５７４中に出現しないあるいはほとんど出現しない挙動を、強い相関のある被依存挙動到達原因８７７として抽出し、記憶部５５６に記憶するとともに、必要に応じて出力部５４５により出力装置５３０から出力する。
【０１８１】
また、この第８の実施の形態に対して、第２の実施の形態における挙動受付部２４６を追加することで、ユーザから指定された挙動や挙動部分系列に対して、被依存挙動到達原因８７７を求めることもできる。さらに、この第８の実施の形態に、第３の実施の形態における予兆検出部１４６を追加することで、被依存挙動到達原因８７７を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
【０１８２】
次に、希少挙動部分系列計算部の実施例について図面を参照して詳細に説明する。
【０１８３】
［希少挙動部分系列計算部の実施例１］
図１７は第１の実施例にかかる希少挙動部分系列計算部の処理例を示すフローチャートであり、系列中の部分系列自体の出現確率を計算することにより、部分系列の珍しさを計算する一例を示す。希少挙動部分系列計算部の入力は、挙動系列の集合（図１の１７１等）であり、出力は希少挙動部分系列（図１の１７２等）である。
【０１８４】
図１７を参照すると、本実施例にかかる希少挙動部分系列計算部は、入力の挙動系列の集合中に未処理の挙動系列がまだあるかどうかを調べ（ステップＳ１０１）、あれば、そのうちの１つの挙動系列を挙動に分解し（ステップＳ１０２）、分解された各挙動毎にその出現数を１増やす（ステップＳ１０３、Ｓ１０４）。入力の挙動系列の集合中の全ての挙動系列についての処理を終えると、すべての挙動の出現数の合計を求め（ステップＳ１０５）、各挙動の出現数を出現数の合計で割って各挙動の出現確率を求め（ステップＳ１０６）、求めた出現確率に基づいて挙動をソートする（ステップＳ１０７）。そして、出現確率の低い方から順にある個数（１以上の予め定められた個数）の挙動を希少挙動として出力する（ステップＳ１０８）。
【０１８５】
［希少挙動部分系列計算部の実施例２］
図１８は第２の実施例にかかる希少挙動部分系列計算部の処理例を示すフローチャートである。本実施例は、系列中の部分系列自体の出現確率を計算することにより、部分系列の珍しさを計算する点で図１７に示した実施例と同じであるが、図１７の実施例では出現確率の計算に部分系列を独立事象とみなして事象の起きる確率を求めたのに対し、本実施例では、一次マルコフモデルによる推移確率を用いる点が相違する。実施例１と同様、希少挙動部分系列計算部の入力は、挙動系列の集合（図１の１７１等）であり、出力は希少挙動部分系列（図１の１７２等）である。
【０１８６】
図１８を参照すると、本実施例にかかる希少挙動部分系列計算部は、入力の挙動系列の集合中に未処理の挙動系列がまだあるかどうかを調べ（ステップＳ２０１）、あれば、そのうちの１つの挙動系列を図３に示したような挙動の推移に分解し（ステップＳ２０２）、分解された各挙動の推移毎にその出現数を１増やす（ステップＳ２０３、Ｓ２０４）。入力の挙動系列の集合中の全ての挙動系列についての処理を終えると、各挙動の推移Ｓ→Ｄに関して、未処理の推移の始点Ｓがまだあるかどうかを調べ（ステップＳ２０５）、あれば、そのうちの１つの推移の始点Ｓに注目して、その始点Ｓをもつすべての挙動推移の出現数の合計を求め（ステップＳ２０６）、その始点Ｓをもつ各挙動推移の出現数を出現数の合計で割り、図３に例示したような各挙動推移の推移確率を求める（ステップＳ２０７）。これを全ての推移の始点Ｓについて繰り返した後、求めた推移確率に基づいてすべての挙動推移をソートし（ステップＳ２０８）、推移確率の低い方から順にある個数（１以上の予め定められた個数）の挙動推移を希少挙動部分系列として出力する（ステップＳ２０９）。
【０１８７】
［希少挙動部分系列計算部の実施例３］
図１９は第３の実施例にかかる希少挙動部分系列計算部のブロック図であり、挙動中の数値の珍しさを用いて希少挙動を求める一例を示す。
【０１８８】
図１９を参照すると、本実施例の希少挙動部分系列計算部１０００は、挙動系列の集合（図１の１７１等）から挙動系列を１つずつ入力する入力部１００１と、入力した挙動系列を挙動に分解する分解部１００２と、挙動中の数値を抽出する数値抽出部１００３と、挙動中の数値のうち正常な値と判定した数値をそれが抽出された挙動と共に保存する正常値保存部１００４と、正常な値と判定する範囲の上限値１００５および下限値１００６を保持する正常範囲設定部１００７と、正常値より明確に大きな数値をそれが抽出された挙動と共に上方異常値として保存する上方異常値保存部１００８と、上方異常値と判定する範囲の上限値１００９および下限値１０１０を保持する上方異常範囲設定部１０１１と、正常値より明確に小さな数値をそれが抽出された挙動と共に下方異常値として保存する下方異常値保存部１０１２と、下方異常値と判定する範囲の上限値１０１３および下限値１０１４を保持する下方異常範囲設定部１０１５と、数値抽出部１００３で抽出された数値をその挙動と共に、その数値と各設定部１００７、１０１１、１０１５の範囲との比較結果に基づいて正常値保存部１００４、上方異常値保存部１００８および下方異常値保存部１０１２の何れかに保存し、必要に応じて正常範囲設定部１００７、上方異常範囲設定部１０１１および下方異常範囲設定部１０１５の設定の変更、異なる保存部１００４、１００８、１０１２間の保存内容の統合、および保存内容の移送を行うことにより、各挙動中の数値を正常な値のグループである正常グループ、正常グループの数値とは明確に大きな数値のグループである上方異常グループ、正常グループの数値とは明確に小さな数値のグループである下方異常グループの３つのグループに分類する分類部１０１６と、上方異常値保存部１００８に保存された上方異常グループに属する数値を抽出した挙動、および下方異常値保存部１０１２に保存された下方異常グループに属する数値を抽出した挙動を希少挙動として出力する出力部１０１７とを備えている。
【０１８９】
図２０〜図２２は本実施例の希少挙動部分系列計算部１０００の処理例を示すフローチャートであり、Ｓ３０１〜Ｓ３２４（図２０）、Ｓ３３１〜Ｓ３４８（図２１）、Ｓ３５１〜Ｓ３６７（図２２）は各ステップを示す。このうち、ステップＳ３０１、Ｓ３０３は入力部１００１に、ステップＳ３０２は分解部１００２に、ステップＳ３０４は数値抽出部１００３に、ステップＳ３２４は出力部１０１７に、それら以外のステップは分類部１０１６に、それぞれ対応している。
【０１９０】
本実施例の希少挙動部分系列計算部１０００は、数値の集合から、上方の異常値（正常値よりずっと大きな値）と、下方の異常値（正常値よりずっと小さな値）を求める。正常値、上方の異常値、下方の異常値は、それぞれ複数あり、値の「範囲」を持つ。
【０１９１】
たとえば、値nの近傍をn-aからn+a(a=10)までと定義し、数値の集合を10,13,58,59,71,78,83,102とした場合、近傍の数値同士でグループを作ると、以下のようになる。
グループ１：［10,13］
グループ２：［58,59］
グループ３：［71,78,83］
グループ４：［102］
【０１９２】
本実施例の希少挙動部分系列計算部１０００は、正常値と上方、下方の異常値との３つのグループを計算するため、グループが４つ以上になると、隣り合うグループを１つに融合する。融合の仕方は、入力される数値の順番によって変わる。
【０１９３】
たとえば、上記のグループ１とグループ２を融合すると、以下のような３つのグループになる。
上方の異常値のグループ：［102］
正常値のグループ：［71,78,83］
下方の異常値のグループ：［10,13,58,59］
【０１９４】
これらの各グループに属する数値は、上方異常値保存部１００８、正常値保存部１００４、下方異常値保存部１０１２に保存されるが、そのとき、正常値や異常値の「範囲」を、それぞれのグループの最小値の近傍の小さい方の値から、最大値の近傍の大きい方の値と定め、上方異常範囲設定部１０１１、正常範囲設定部１００７および下方異常範囲設定部１０１５に設定する。たとえば上の例の場合、以下のようになる。なお、各グループどうしで範囲に重なりがあっても構わない。
上方異常範囲設定部１０１１：下限値92〜上限値112
正常範囲設定部１００７：下限値61〜上限値93
下方異常範囲設定部１０１５：下限値0〜上限値69
【０１９５】
以下、図２０〜図２２のフローチャート中、わかりづらい箇所を説明する。
【０１９６】
図２０のステップＳ３１２でＹＥＳと判定される場面は、正常値と下方の異常値の間に、どちらからも近い値が追加されたために、異常値がなくなってしまう場合である。例えば、上の例に数値63が追加されると、63は正常値の範囲と下方の異常値の範囲の両方に属するため、異常値が正常値よりずっと低い値ではなくなるという理由から、下方の異常値を正常値の方に組み込んでしまう。つまり、以下のようなグループ分けになる。
上方の異常値のグループ：［102］  下限値92〜上限値112
正常値のグループ：［10,13,58,59,63,71,78,83］  下限値0〜上限値93
下方の異常値のグループ：［なし］  下限値および上限値  なし
【０１９７】
同様に図２０のステップＳ３１９でＹＥＳと判定される場面は、上方の異常値が正常値に組み込まれてしまう場合である。
【０１９８】
図２１のステップＳ３４１でＹＥＳと判定される場面は、下方の異常値よりずっと小さな値が追加される場合である。例えば、上の例に数値-10が追加された場合を考える。この場合、分類部１０１６は、-10が異常値としてより重要と考え、これまでの下方の異常値を正常値に組み込み、以下のようにグループを再構成する（ステップＳ３４２〜Ｓ３４４、Ｓ３３３、Ｓ３３４）。
上方の異常値のグループ：［102］  下限値92〜上限値112
正常値のグループ：［10,13,58,59,71,78,83］  下限値0〜上限値93
下方の異常値のグループ：［-10］  下限値-20〜上限値0
【０１９９】
ただし、上方の異常値がまだ存在しなかったときは（ステップＳ３４２でＮｏ）、
正常値→上方の異常値
下方の異常値→正常値
追加の値→下方の異常値
というように、グループが一段スライドする。たとえば、
上方の異常値のグループ：［なし］
正常値のグループ：［71,78,83］
下方の異常値のグループ：［10,13,58,59］
のところに、-10が追加されると、
上方の異常値のグループ：［71,78,83］
正常値のグループ：［10,13,58,59］
下方の異常値のグループ：［-10］
となる。
【０２００】
図２２のステップＳ３６０でＹＥＳとなる場面は、同様に、上方の異常値よりずっと大きな値が追加されて、グループが変化する場合を表している。
【０２０１】
以上、本発明の実施の形態および実施例について説明したが、本発明は以上の実施の形態および実施例にのみ限定されず、その他各種の付加変更が可能である。また、本発明の異常挙動検出装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態における処理装置内の各機能手段として機能させる。
【図面の簡単な説明】
【０２０２】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示す流れ図である。
【図３】本発明の第１の実施の形態における第１の実施例において、挙動の推移確率を表す一次マルコフモデルの具体例を示す図である。
【図４】本発明の第２の実施の形態の構成を示すブロック図である。
【図５】本発明の第２の実施の形態の動作を示す流れ図である。
【図６】本発明の第２の実施の形態の実施例における出力装置の表示例を示す図である。
【図７】本発明の第３の実施の形態の構成を示すブロック図である。
【図８】本発明の第３の実施の形態の動作を示す流れ図である。
【図９】本発明の第４の実施の形態の構成を示すブロック図である。
【図１０】本発明の第４の実施の形態の動作を示す流れ図である。
【図１１】本発明の第５の実施の形態の構成を示すブロック図である。
【図１２】本発明の第５の実施の形態の動作を示す流れ図である。
【図１３】本発明の第６の実施の形態の構成を示すブロック図である。
【図１４】本発明の第６の実施の形態の動作を示す流れ図である。
【図１５】本発明の第７の実施の形態の構成を示すブロック図である。
【図１６】本発明の第８の実施の形態の構成を示すブロック図である。
【図１７】本発明で用いる希少挙動部分系列計算部の第１の実施例の動作を示す流れ図である。
【図１８】本発明で用いる希少挙動部分系列計算部の第２の実施例の動作を示す流れ図である。
【図１９】本発明で用いる希少挙動部分系列計算部の第３の実施例の構成を示すブロック図である。
【図２０】本発明で用いる希少挙動部分系列計算部の第３の実施例の動作を示す流れ図である。
【図２１】本発明で用いる希少挙動部分系列計算部の第３の実施例の動作を示す流れ図である。
【図２２】本発明で用いる希少挙動部分系列計算部の第３の実施例の動作を示す流れ図である。
【図２３】従来の技術の構成を示すブロック図である。
【符号の説明】
【０２０３】
１００…異常挙動検出装置
１１０…処理装置
１２０…記憶装置
１３０…出力装置
１４１…入力部
１４２…希少挙動部分系列計算部
１４３…挙動系列検索部
１４４…挙動到達原因究明部
１４５…出力部
１５１〜１５４…記憶部
１６０…動作主体の挙動系列
１７１…挙動系列の集合
１７２…希少挙動部分系列
１７３…希少挙動部分系列を含む挙動系列の集合
１７４…共通部分系列
１７５…希少挙動部分系列到達原因
【図１】
2005141459.tif 000003
【図２】
2005141459.tif 000004
【図３】
2005141459.tif 000005
【図４】
2005141459.tif 000006
【図５】
2005141459.tif 000007
【図６】
2005141459.tif 000008
【図７】
2005141459.tif 000009
【図８】
2005141459.tif 000010
【図９】
2005141459.tif 000011
【図１０】
2005141459.tif 000012
【図１１】
2005141459.tif 000013
【図１２】
2005141459.tif 000014
【図１３】
2005141459.tif 000015
【図１４】
2005141459.tif 000016
【図１５】
2005141459.tif 000017
【図１６】
2005141459.tif 000018
【図１７】
2005141459.tif 000019
【図１８】
2005141459.tif 000020
【図１９】
2005141459.tif 000021
【図２０】
2005141459.tif 000022
【図２１】
2005141459.tif 000023
【図２２】
2005141459.tif 000024
【図２３】
2005141459.tif 000025