(57)【特許請求の範囲】
【請求項１】
データを時系列に記憶するデータ時系列記憶手段と、
前記データ時系列記憶手段に記憶されているデータを、該データを時系列に沿って分割
した複数の分割データに分けて、記憶するデータ分割記憶手段と、
前記データ分割記憶手段に記憶されている分割データ毎に、該分割データを所定の要約
関数で要約して得た要約を記憶する分割要約記憶手段と、
前記分割要約記憶手段から、要約を読み出す要約読出手段と、
前記要約読出手段により読み出された要約に要約された元の分割データを、前記データ
分割記憶手段から読み出す分割データ読出手段と、
前記分割データ読出手段により読み出された分割データを前記所定の要約関数で要約し
て要約を取得する読出要約取得手段と、
前記要約読出手段により読み出された要約と、前記読出要約取得手段により取得された
要約と、が一致するか否かを判別する要約一致判別手段と、
前記要約一致判別手段により要約が一致すると判別されたときに、前記分割データ読出
手段により読み出された分割データが、前記データ時系列記憶手段に記憶されているデー
タに含まれているか否かを判別する分割データ含有判別手段と、
前記分割データ含有判別手段により分割データが前記データ時系列記憶手段に記憶され
ているデータに含まれていないと判別されたときに、前記データ時系列記憶手段に記憶さ
れているデータが変更されていることを示す情報を出力するデータ変更情報出力手段と、を備え、
更に、
データを時系列に取得するデータ取得手段と、
前記データ取得手段により取得されたデータを前記データ時系列記憶手段に記録するデ
ータ時系列記録制御手段と、
データを分割するタイミングを指示する分割タイミング指示手段と、
前記データ取得手段により取得されたデータを前記分割タイミング指示手段により指示
されたタイミングで区切って得た分割データを前記データ分割記憶手段に記録するデータ
分割記録制御手段と、
前記データ分割記録制御手段により前記データ分割記憶手段に記録される分割データを
前記所定の要約関数で要約して要約を取得する記録要約取得手段と、
前記記録要約取得手段により取得された要約を前記分割要約記憶手段に記録する分割要
約記録制御手段と、を備え、
前記要約読出手段は、前記分割要約記憶手段から、要約を順次読み出す要約順次読出手
段を有し、
前記分割要約記録制御手段により実行される処理と前記要約順次読出手段により実行さ
れる処理とは、並列処理され、
更に、
前記分割タイミング指示手段により指示される複数のタイミングの中の１のタイミング
で前記データ時系列記憶手段に記憶されているデータを分割した大分割データを取得する
大分割データ取得手段と、
前記大分割データ取得手段により大分割データが取得されたときに、前記分割要約記憶
手段から、すべての要約を読み出す大分割用要約読出手段と、
前記大分割用要約読出手段により読み出された要約毎に、該要約に要約された元の分割
データを、前記データ分割記憶手段から読み出す大分割用分割データ読出手段と、
前記大分割用分割データ読出手段により読み出された分割データ毎に、該分割データを
前記所定の要約関数で要約して要約を取得する大分割用読出要約取得手段と、
分割データ毎に、前記大分割用要約読出手段により読み出された要約と、前記大分割用
読出要約取得手段により取得された要約と、が一致するか否かを判別する大分割用要約一
致判別手段と、
前記大分割用要約一致判別手段により分割データ毎に要約がすべて一致すると判別され
たときに、前記大分割用分割データ読出手段により読み出されたすべての分割データを分
割された順に結合し、該結合したデータを前記所定の要約関数で要約して要約を取得する
結合データ要約取得手段と、
前記大分割データ取得手段により取得された大分割データを前記所定の要約関数で要約
して要約を取得する大分割データ要約取得手段と、
前記結合データ要約取得手段により取得された要約と、前記大分割データ要約取得手段
により取得された要約と、が一致するか否かを判別する大分割データ要約一致判別手段と
、
前記大分割データ要約一致判別手段により要約が一致しないと判別されたときに、前記
大分割データ取得手段により取得された大分割データが変更されていることを示す情報を
出力する大分割データ変更情報出力手段と、を備える、
データ変更検知装置。
【請求項２】
前記要約一致判別手段により要約が一致しないと判別されたときに、前記分割データ読
出手段により前記データ分割記憶手段から読み出された分割データが変更されていること
を示す情報を出力する分割データ変更情報出力手段を、更に備える、
ことを特徴とする請求項１に記載のデータ変更検知装置。
【請求項３】
前記要約順次読出手段は、前記分割要約記憶手段から、すべての要約を順次読み出し、
すべての要約を読み出し終えると、すべての分割要約を順次読み出すことを繰り返す、
ことを特徴とする請求項１又は２に記載のデータ変更検知装置。
【請求項４】
前記データ分割記録制御手段は、
前記データ取得手段により取得されたデータを前記データ分割記憶手段に記録する取得
データ記録手段と、
前記取得データ記録手段により記録されたデータを、前記分割タイミング指示手段によ
り指示されるタイミングで区切って、分割データに分割する記録データ分割手段と、
前記取得データ記録手段により記録されたデータを、前記記録データ分割手段による分
割で得られた分割データに分けて、前記データ分割記憶手段に記録する分割データ記録手
段と、を有し、
前記記録要約取得手段は、
前記データ取得手段により取得されたデータを一時的に記憶するデータ一時記憶手段と
、
前記記録データ分割手段によりデータが分割されたタイミングで、前記データ一時記憶
手段から、一時的に記憶されているデータを取り出す一時データ取出手段と、
前記一時データ取出手段により取り出されたデータを分割データとして、該分割データ
を前記所定の要約関数で要約して要約を取得する一時記録要約取得手段と、を有し、
前記データ変更検知装置は、
前記記録データ分割手段による分割で得られた分割データを前記所定の要約関数で要約
して要約を取得する分割指示要約取得手段と、
前記分割指示要約取得手段により取得された要約と、前記一時記録要約取得手段により
取得された要約と、が一致するか否かを判別する分割指示要約一致判別手段と、
前記分割指示要約一致判別手段により要約が一致しないと判別されたときに、前記記録
データ分割手段による分割で得られた分割データが変更されていることを示す情報を出力
する分割指示データ変更情報出力手段と、を更に備える、
ことを特徴とする請求項１乃至３の何れか一項に記載のデータ変更検知装置。
【請求項５】
主記憶装置と補助記憶装置とを備えており、
前記主記憶装置は、前記分割要約記憶手段を有し、
前記補助記憶装置は、前記データ時系列記憶手段と前記データ分割記憶手段とを有する
、
ことを特徴とする請求項１乃至４の何れか一項に記載のデータ変更検知装置。
【請求項６】
前記要約関数は、ハッシュ関数であり、
前記分割要約記憶手段は、所定のハッシュ関数を用いて分割データから算出したハッシ
ュ値を要約として記憶し、
前記読出要約取得手段は、前記所定のハッシュ関数を用いて分割データから算出したハ
ッシュ値を要約として取得する、
ことを特徴とする請求項１乃至５の何れか一項に記載のデータ変更検知装置。
【請求項７】
データを時系列に記憶するデータ時系列記憶部と、
前記データ時系列記憶部に記憶されているデータを、該データを時系列に沿って分割し
た複数の分割データに分けて、記憶するデータ分割記憶部と、
前記データ分割記憶部に記憶されている分割データ毎に、該分割データを所定の要約関
数で要約して得た要約を記憶する分割要約記憶部と、を備える装置を用いるデータ変更検
知方法であって、
前記分割要約記憶部から、要約を読み出す要約読出ステップと、
前記要約読出ステップにより読み出された要約に要約された元の分割データを、前記デ
ータ分割記憶部から読み出す分割データ読出ステップと、
前記分割データ読出ステップにより読み出された分割データを前記所定の要約関数で要
約して要約を取得する読出要約取得ステップと、
前記要約読出ステップにより読み出された要約と、前記読出要約取得ステップにより取
得された要約と、が一致するか否かを判別する要約一致判別ステップと、
前記要約一致判別ステップにより要約が一致すると判別されたときに、前記分割データ
読出ステップにより読み出された分割データが、前記データ時系列記憶部に記憶されてい
るデータに含まれているか否かを判別する分割データ含有判別ステップと、
前記分割データ含有判別ステップにより分割データが前記データ時系列記憶部に記憶さ
れているデータに含まれていないと判別されたときに、前記データ時系列記憶部に記憶さ
れているデータが変更されていることを示す情報を出力するデータ変更情報出力ステップ
と、を備え、
更に、
データを時系列に取得するデータ取得ステップと、
前記データ取得ステップにより取得されたデータを前記データ時系列記憶部に記録するデータ時系列記録制御ステップと、
データを分割するタイミングを指示する分割タイミング指示ステップと、
前記データ取得ステップにより取得されたデータを前記分割タイミング指示ステップにより指示されたタイミングで区切って得た分割データを前記データ分割記憶部に記録するデータ分割記録制御ステップと、
前記データ分割記録制御ステップにより前記データ分割記憶部に記録される分割データを前記所定の要約関数で要約して要約を取得する記録要約取得ステップと、
前記記録要約取得ステップにより取得された要約を前記分割要約記憶部に記録する分割要約記録制御ステップと、を備え、
前記要約読出ステップは、前記分割要約記憶部から、要約を順次読み出す要約順次読出ステップを有し、
前記分割要約記録制御ステップにより実行される処理と前記要約順次読出ステップにより実行される処理とは、並列処理され、
更に、
前記分割タイミング指示ステップにより指示される複数のタイミングの中の１のタイミングで前記データ時系列記憶部に記憶されているデータを分割した大分割データを取得する大分割データ取得ステップと、
前記大分割データ取得ステップにより大分割データが取得されたときに、前記分割要約記憶部から、すべての要約を読み出す大分割用要約読出ステップと、
前記大分割用要約読出ステップにより読み出された要約毎に、該要約に要約された元の分割データを、前記データ分割記憶部から読み出す大分割用分割データ読出ステップと、
前記大分割用分割データ読出ステップにより読み出された分割データ毎に、該分割データを前記所定の要約関数で要約して要約を取得する大分割用読出要約取得ステップと、
分割データ毎に、前記大分割用要約読出ステップにより読み出された要約と、前記大分割用読出要約取得ステップにより取得された要約と、が一致するか否かを判別する大分割用要約一致判別ステップと、
前記大分割用要約一致判別ステップにより分割データ毎に要約がすべて一致すると判別されたときに、前記大分割用分割データ読出ステップにより読み出されたすべての分割データを分割された順に結合し、該結合したデータを前記所定の要約関数で要約して要約を取得する結合データ要約取得ステップと、
前記大分割データ取得ステップにより取得された大分割データを前記所定の要約関数で要約して要約を取得する大分割データ要約取得ステップと、
前記結合データ要約取得ステップにより取得された要約と、前記大分割データ要約取得ステップにより取得された要約と、が一致するか否かを判別する大分割データ要約一致判別ステップと、
前記大分割データ要約一致判別ステップにより要約が一致しないと判別されたときに、前記大分割データ取得ステップにより取得された大分割データが変更されていることを示す情報を出力する大分割データ変更情報出力ステップと、を備える、
データ変更検知方法。
【請求項８】
コンピュータを、
データを時系列に記憶するデータ時系列記憶手段、
前記データ時系列記憶手段に記憶されているデータを、該データを時系列に沿って分割
した複数の分割データに分けて、記憶するデータ分割記憶手段、
前記データ分割記憶手段に記憶されている分割データ毎に、該分割データを所定の要約
関数で要約して得た要約を記憶する分割要約記憶手段、
前記分割要約記憶手段から、要約を読み出す要約読出手段、
前記要約読出手段により読み出された要約に要約された元の分割データを、前記データ
分割記憶手段から読み出す分割データ読出手段、
前記分割データ読出手段により読み出された分割データを前記所定の要約関数で要約し
て要約を取得する読出要約取得手段、
前記要約読出手段により読み出された要約と、前記読出要約取得手段により取得された
要約と、が一致するか否かを判別する要約一致判別手段、
前記要約一致判別手段により要約が一致すると判別されたときに、前記分割データ読出
手段により読み出された分割データが、前記データ時系列記憶手段に記憶されているデー
タに含まれているか否かを判別する分割データ含有判別手段、
前記分割データ含有判別手段により分割データが前記データ時系列記憶手段に記憶され
ているデータに含まれていないと判別されたときに、前記データ時系列記憶手段に記憶さ
れているデータが変更されていることを示す情報を出力するデータ変更情報出力手段、として機能させ、
更に、
データを時系列に取得するデータ取得手段、
前記データ取得手段により取得されたデータを前記データ時系列記憶手段に記録するデ
ータ時系列記録制御手段、
データを分割するタイミングを指示する分割タイミング指示手段、
前記データ取得手段により取得されたデータを前記分割タイミング指示手段により指示
されたタイミングで区切って得た分割データを前記データ分割記憶手段に記録するデータ
分割記録制御手段、
前記データ分割記録制御手段により前記データ分割記憶手段に記録される分割データを
前記所定の要約関数で要約して要約を取得する記録要約取得手段、
前記記録要約取得手段により取得された要約を前記分割要約記憶手段に記録する分割要
約記録制御手段、として機能させ、
前記要約読出手段は、前記分割要約記憶手段から、要約を順次読み出す要約順次読出手段、として機能し、
前記分割要約記録制御手段により実行される処理と前記要約順次読出手段により実行さ
れる処理とは、並列処理され、
更に、
前記分割タイミング指示手段により指示される複数のタイミングの中の１のタイミング
で前記データ時系列記憶手段に記憶されているデータを分割した大分割データを取得する
大分割データ取得手段、
前記大分割データ取得手段により大分割データが取得されたときに、前記分割要約記憶
手段から、すべての要約を読み出す大分割用要約読出手段、
前記大分割用要約読出手段により読み出された要約毎に、該要約に要約された元の分割
データを、前記データ分割記憶手段から読み出す大分割用分割データ読出手段、
前記大分割用分割データ読出手段により読み出された分割データ毎に、該分割データを
前記所定の要約関数で要約して要約を取得する大分割用読出要約取得手段、
分割データ毎に、前記大分割用要約読出手段により読み出された要約と、前記大分割用
読出要約取得手段により取得された要約と、が一致するか否かを判別する大分割用要約一
致判別手段、
前記大分割用要約一致判別手段により分割データ毎に要約がすべて一致すると判別され
たときに、前記大分割用分割データ読出手段により読み出されたすべての分割データを分
割された順に結合し、該結合したデータを前記所定の要約関数で要約して要約を取得する
結合データ要約取得手段、
前記大分割データ取得手段により取得された大分割データを前記所定の要約関数で要約
して要約を取得する大分割データ要約取得手段、
前記結合データ要約取得手段により取得された要約と、前記大分割データ要約取得手段
により取得された要約と、が一致するか否かを判別する大分割データ要約一致判別手段、
前記大分割データ要約一致判別手段により要約が一致しないと判別されたときに、前記
大分割データ取得手段により取得された大分割データが変更されていることを示す情報を
出力する大分割データ変更情報出力手段、として機能させる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ等のデータの変更を検知するデータ変更検知装置等に関する。
【背景技術】
【０００２】
コンピュータに障害が発生したときにその原因を特定する等のために、コンピュータでは処理内容をログとして記録しておくことが一般的に行われている。
【０００３】
このログは、また、コンピュータへの不正侵入が行われた際に、それを検知するためにも利用されている。しかしながら、コンピュータへの不正侵入者は、時に、コンピュータへの侵入の痕跡を消そうとして、既に記録されているログを改ざんしようとする場合がある。このような改ざんからログを保護するためには、その改ざん行為を困難にするような対策又は検知できるような仕組みが必要である。
【０００４】
デジタルデータが改ざんされていないことを保証するための技術としては、例えば、デジタル署名がある。
そして、このデジタル署名を利用して、ログのように時系列で連続して発生するデジタルデータを改ざんから保護しようとする技術がある（例えば、特許文献１参照）。
【０００５】
具体的には、特許文献１に記載の技術では、ログの記憶時には、ログのデータが発生すると、発生した現データとその直前に発生した前データとを組み立て、組み立てたデータにデジタル署名を施し、デジタル署名が施された保管データを保管ファイルに追加書き込みする。そして、ログの検証時には、保管ファイルの先頭から保管データを取り出し、取り出した保管データのデジタル署名を検証して、保管データが改ざんされていないかを検証する。更に、保管データの前データと、その直前に取り出した保管データの現データと、の一致を検証して、保管データの連続性も検証する。
【特許文献１】特開２００３−１４３１３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記技術では、ログデータを改ざんから保護するためのデータ処理をログデータに直接施しているため、そのログデータを記録するログファイル（保管ファイル）は、例えば、ログデータを単純にそのまま記録する一般のログファイルとは、そのフォーマットが異なる。
【０００７】
そのため、例えば、一般のフォーマットのログファイルに記録されているログデータを利用して何らかの処理を行うように、コンピュータシステムが既にシステム化されている場合には、上記技術を適用するには、ログデータを利用する処理が上記技術に適合するようにシステムを再構築する必要があり、大変である。
【０００８】
本発明は、上記実状に鑑みてなされたものであり、ログ等の時系列に生成されるデータの記録様式を変更することなく、記録済みデータの変更を容易に検知することができるデータ変更検知装置等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の観点に係るデータ変更検知装置は、
データを時系列に記憶するデータ時系列記憶手段と、
前記データ時系列記憶手段に記憶されているデータを、該データを時系列に沿って分割
した複数の分割データに分けて、記憶するデータ分割記憶手段と、
前記データ分割記憶手段に記憶されている分割データ毎に、該分割データを所定の要約
関数で要約して得た要約を記憶する分割要約記憶手段と、
前記分割要約記憶手段から、要約を読み出す要約読出手段と、
前記要約読出手段により読み出された要約に要約された元の分割データを、前記データ
分割記憶手段から読み出す分割データ読出手段と、
前記分割データ読出手段により読み出された分割データを前記所定の要約関数で要約し
て要約を取得する読出要約取得手段と、
前記要約読出手段により読み出された要約と、前記読出要約取得手段により取得された
要約と、が一致するか否かを判別する要約一致判別手段と、
前記要約一致判別手段により要約が一致すると判別されたときに、前記分割データ読出
手段により読み出された分割データが、前記データ時系列記憶手段に記憶されているデー
タに含まれているか否かを判別する分割データ含有判別手段と、
前記分割データ含有判別手段により分割データが前記データ時系列記憶手段に記憶され
ているデータに含まれていないと判別されたときに、前記データ時系列記憶手段に記憶さ
れているデータが変更されていることを示す情報を出力するデータ変更情報出力手段と、を備え、
更に、
データを時系列に取得するデータ取得手段と、
前記データ取得手段により取得されたデータを前記データ時系列記憶手段に記録するデ
ータ時系列記録制御手段と、
データを分割するタイミングを指示する分割タイミング指示手段と、
前記データ取得手段により取得されたデータを前記分割タイミング指示手段により指示
されたタイミングで区切って得た分割データを前記データ分割記憶手段に記録するデータ
分割記録制御手段と、
前記データ分割記録制御手段により前記データ分割記憶手段に記録される分割データを
前記所定の要約関数で要約して要約を取得する記録要約取得手段と、
前記記録要約取得手段により取得された要約を前記分割要約記憶手段に記録する分割要
約記録制御手段と、を備え、
前記要約読出手段は、前記分割要約記憶手段から、要約を順次読み出す要約順次読出手
段を有し、
前記分割要約記録制御手段により実行される処理と前記要約順次読出手段により実行さ
れる処理とは、並列処理され、
更に、
前記分割タイミング指示手段により指示される複数のタイミングの中の１のタイミング
で前記データ時系列記憶手段に記憶されているデータを分割した大分割データを取得する
大分割データ取得手段と、
前記大分割データ取得手段により大分割データが取得されたときに、前記分割要約記憶
手段から、すべての要約を読み出す大分割用要約読出手段と、
前記大分割用要約読出手段により読み出された要約毎に、該要約に要約された元の分割
データを、前記データ分割記憶手段から読み出す大分割用分割データ読出手段と、
前記大分割用分割データ読出手段により読み出された分割データ毎に、該分割データを
前記所定の要約関数で要約して要約を取得する大分割用読出要約取得手段と、
分割データ毎に、前記大分割用要約読出手段により読み出された要約と、前記大分割用
読出要約取得手段により取得された要約と、が一致するか否かを判別する大分割用要約一
致判別手段と、
前記大分割用要約一致判別手段により分割データ毎に要約がすべて一致すると判別され
たときに、前記大分割用分割データ読出手段により読み出されたすべての分割データを分
割された順に結合し、該結合したデータを前記所定の要約関数で要約して要約を取得する
結合データ要約取得手段と、
前記大分割データ取得手段により取得された大分割データを前記所定の要約関数で要約
して要約を取得する大分割データ要約取得手段と、
前記結合データ要約取得手段により取得された要約と、前記大分割データ要約取得手段
により取得された要約と、が一致するか否かを判別する大分割データ要約一致判別手段と
、
前記大分割データ要約一致判別手段により要約が一致しないと判別されたときに、前記
大分割データ取得手段により取得された大分割データが変更されていることを示す情報を
出力する大分割データ変更情報出力手段と、を備える。
【００１０】
また、本発明の第２の観点に係るデータ変更検知方法は、
データを時系列に記憶するデータ時系列記憶部と、
前記データ時系列記憶部に記憶されているデータを、該データを時系列に沿って分割し
た複数の分割データに分けて、記憶するデータ分割記憶部と、
前記データ分割記憶部に記憶されている分割データ毎に、該分割データを所定の要約関
数で要約して得た要約を記憶する分割要約記憶部と、を備える装置を用いるデータ変更検
知方法であって、
前記分割要約記憶部から、要約を読み出す要約読出ステップと、
前記要約読出ステップにより読み出された要約に要約された元の分割データを、前記デ
ータ分割記憶部から読み出す分割データ読出ステップと、
前記分割データ読出ステップにより読み出された分割データを前記所定の要約関数で要
約して要約を取得する読出要約取得ステップと、
前記要約読出ステップにより読み出された要約と、前記読出要約取得ステップにより取
得された要約と、が一致するか否かを判別する要約一致判別ステップと、
前記要約一致判別ステップにより要約が一致すると判別されたときに、前記分割データ
読出ステップにより読み出された分割データが、前記データ時系列記憶部に記憶されてい
るデータに含まれているか否かを判別する分割データ含有判別ステップと、
前記分割データ含有判別ステップにより分割データが前記データ時系列記憶部に記憶さ
れているデータに含まれていないと判別されたときに、前記データ時系列記憶部に記憶さ
れているデータが変更されていることを示す情報を出力するデータ変更情報出力ステップ
と、を備え、
更に、
データを時系列に取得するデータ取得ステップと、
前記データ取得ステップにより取得されたデータを前記データ時系列記憶部に記録するデータ時系列記録制御ステップと、
データを分割するタイミングを指示する分割タイミング指示ステップと、
前記データ取得ステップにより取得されたデータを前記分割タイミング指示ステップにより指示されたタイミングで区切って得た分割データを前記データ分割記憶部に記録するデータ分割記録制御ステップと、
前記データ分割記録制御ステップにより前記データ分割記憶部に記録される分割データを前記所定の要約関数で要約して要約を取得する記録要約取得ステップと、
前記記録要約取得ステップにより取得された要約を前記分割要約記憶部に記録する分割要約記録制御ステップと、を備え、
前記要約読出ステップは、前記分割要約記憶部から、要約を順次読み出す要約順次読出ステップを有し、
前記分割要約記録制御ステップにより実行される処理と前記要約順次読出ステップにより実行される処理とは、並列処理され、
更に、
前記分割タイミング指示ステップにより指示される複数のタイミングの中の１のタイミングで前記データ時系列記憶部に記憶されているデータを分割した大分割データを取得する大分割データ取得ステップと、
前記大分割データ取得ステップにより大分割データが取得されたときに、前記分割要約記憶部から、すべての要約を読み出す大分割用要約読出ステップと、
前記大分割用要約読出ステップにより読み出された要約毎に、該要約に要約された元の分割データを、前記データ分割記憶部から読み出す大分割用分割データ読出ステップと、
前記大分割用分割データ読出ステップにより読み出された分割データ毎に、該分割データを前記所定の要約関数で要約して要約を取得する大分割用読出要約取得ステップと、
分割データ毎に、前記大分割用要約読出ステップにより読み出された要約と、前記大分割用読出要約取得ステップにより取得された要約と、が一致するか否かを判別する大分割用要約一致判別ステップと、
前記大分割用要約一致判別ステップにより分割データ毎に要約がすべて一致すると判別されたときに、前記大分割用分割データ読出ステップにより読み出されたすべての分割データを分割された順に結合し、該結合したデータを前記所定の要約関数で要約して要約を取得する結合データ要約取得ステップと、
前記大分割データ取得ステップにより取得された大分割データを前記所定の要約関数で要約して要約を取得する大分割データ要約取得ステップと、
前記結合データ要約取得ステップにより取得された要約と、前記大分割データ要約取得ステップにより取得された要約と、が一致するか否かを判別する大分割データ要約一致判別ステップと、
前記大分割データ要約一致判別ステップにより要約が一致しないと判別されたときに、前記大分割データ取得ステップにより取得された大分割データが変更されていることを示す情報を出力する大分割データ変更情報出力ステップと、を備える。
【００１１】
また、本発明の第３の観点に係るプログラムは、
コンピュータを、
データを時系列に記憶するデータ時系列記憶手段、
前記データ時系列記憶手段に記憶されているデータを、該データを時系列に沿って分割
した複数の分割データに分けて、記憶するデータ分割記憶手段、
前記データ分割記憶手段に記憶されている分割データ毎に、該分割データを所定の要約
関数で要約して得た要約を記憶する分割要約記憶手段、
前記分割要約記憶手段から、要約を読み出す要約読出手段、
前記要約読出手段により読み出された要約に要約された元の分割データを、前記データ
分割記憶手段から読み出す分割データ読出手段、
前記分割データ読出手段により読み出された分割データを前記所定の要約関数で要約し
て要約を取得する読出要約取得手段、
前記要約読出手段により読み出された要約と、前記読出要約取得手段により取得された
要約と、が一致するか否かを判別する要約一致判別手段、
前記要約一致判別手段により要約が一致すると判別されたときに、前記分割データ読出
手段により読み出された分割データが、前記データ時系列記憶手段に記憶されているデー
タに含まれているか否かを判別する分割データ含有判別手段、
前記分割データ含有判別手段により分割データが前記データ時系列記憶手段に記憶され
ているデータに含まれていないと判別されたときに、前記データ時系列記憶手段に記憶さ
れているデータが変更されていることを示す情報を出力するデータ変更情報出力手段、として機能させ、
更に、
データを時系列に取得するデータ取得手段、
前記データ取得手段により取得されたデータを前記データ時系列記憶手段に記録するデ
ータ時系列記録制御手段、
データを分割するタイミングを指示する分割タイミング指示手段、
前記データ取得手段により取得されたデータを前記分割タイミング指示手段により指示
されたタイミングで区切って得た分割データを前記データ分割記憶手段に記録するデータ
分割記録制御手段、
前記データ分割記録制御手段により前記データ分割記憶手段に記録される分割データを
前記所定の要約関数で要約して要約を取得する記録要約取得手段、
前記記録要約取得手段により取得された要約を前記分割要約記憶手段に記録する分割要
約記録制御手段、として機能させ、
前記要約読出手段は、前記分割要約記憶手段から、要約を順次読み出す要約順次読出手段、として機能し、
前記分割要約記録制御手段により実行される処理と前記要約順次読出手段により実行さ
れる処理とは、並列処理され、
更に、
前記分割タイミング指示手段により指示される複数のタイミングの中の１のタイミング
で前記データ時系列記憶手段に記憶されているデータを分割した大分割データを取得する
大分割データ取得手段、
前記大分割データ取得手段により大分割データが取得されたときに、前記分割要約記憶
手段から、すべての要約を読み出す大分割用要約読出手段、
前記大分割用要約読出手段により読み出された要約毎に、該要約に要約された元の分割
データを、前記データ分割記憶手段から読み出す大分割用分割データ読出手段、
前記大分割用分割データ読出手段により読み出された分割データ毎に、該分割データを
前記所定の要約関数で要約して要約を取得する大分割用読出要約取得手段、
分割データ毎に、前記大分割用要約読出手段により読み出された要約と、前記大分割用
読出要約取得手段により取得された要約と、が一致するか否かを判別する大分割用要約一
致判別手段、
前記大分割用要約一致判別手段により分割データ毎に要約がすべて一致すると判別され
たときに、前記大分割用分割データ読出手段により読み出されたすべての分割データを分
割された順に結合し、該結合したデータを前記所定の要約関数で要約して要約を取得する
結合データ要約取得手段、
前記大分割データ取得手段により取得された大分割データを前記所定の要約関数で要約
して要約を取得する大分割データ要約取得手段、
前記結合データ要約取得手段により取得された要約と、前記大分割データ要約取得手段
により取得された要約と、が一致するか否かを判別する大分割データ要約一致判別手段、
前記大分割データ要約一致判別手段により要約が一致しないと判別されたときに、前記
大分割データ取得手段により取得された大分割データが変更されていることを示す情報を
出力する大分割データ変更情報出力手段、として機能させる。
【発明の効果】
【００１２】
本発明によれば、記録済みデータの変更を容易に検知することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
【００１４】
［第１の実施の形態］
本発明の第１の実施の形態では、時系列に生成されるデータとしてログデータを例にとり、コンピュータシステムにおいて、記録されているログデータの改ざんを検知するログ改ざん検知アプリケーションについて説明する。
【００１５】
図１は、本実施の形態に係るログ改ざん検知アプリケーション１がコンピュータシステムに実装されている様子を示す図である。
図示するように、コンピュータシステム内において、ログ改ざん検知アプリケーション１は、ログを出力するログ出力アプリケーション２と、ログ出力アプリケーション２から出力されるログを記憶するログ記憶部３との間で動作するよう実装される。
【００１６】
このように、ログ改ざん検知アプリケーション１をログ出力アプリケーション２とは別のアプリケーションとしてコンピュータシステムに適用することにより、コンピュータシステム内において現状で動作しているアプリケーションを変更する必要がない。また、ログ改ざん検知アプリケーション１をログ出力アプリケーション２の外に実装するため、ログ出力アプリケーション２の内に実装する場合に比べて、コンピュータシステムへの実装が容易である。
【００１７】
図２は、コンピュータシステムの一般的な構成を概略的に示すブロック図である。
図示するように、コンピュータシステムは、入力部４１と、出力部４２と、通信部４３と、計時部４４と、記憶部４５と、制御部４６と、を備える。また、コンピュータシステムのこれらの各部は、バス４７を介して互いに接続されている。
【００１８】
入力部４１は、キーボード、マウス等の入力装置を備える。入力部４１には、ユーザによる入力操作に応じて様々な情報が入力される。
出力部４２は、ディスプレイ、プリンタ等の出力装置を備え、様々な情報を出力する。
【００１９】
通信部４３は、通信インタフェースを備え、インターネット等の通信ネットワーク（図示せず）を介して、他のコンピュータシステムと通信を行う。
計時部４４は、時計回路等を備え、日付や時刻を刻む。
【００２０】
記憶部４５は、ハードディスク等の補助記憶装置を備え、様々な情報やプログラム等を記憶する。例えば、記憶部４５には、ログ改ざん検知アプリケーション１、ログ出力アプリケーション２等のコンピュータシステムに実装されているアプリケーションのプログラムが格納される。
【００２１】
制御部４６は、ＣＰＵ（Central Processing Unit）５１、ＲＯＭ（Read Only Memory）５２、ＲＡＭ（Random Access Memory）５３等から構成され、データの演算処理を行うと共に、コンピュータシステムの全体を制御する。制御部４６における演算処理及び制御処理は、具体的には、ＣＰＵ５１が、ＲＡＭ５３を作業領域として使用して各種データを一時的に記憶させながら、ＲＯＭ５２に記憶されている制御プログラムを実行することにより行われる。
【００２２】
ログ改ざん検知アプリケーション１は、ＲＯＭ５２や記憶部４５に記憶されているプログラムに従った制御部４６の処理により動作する。
【００２３】
図３は、ログ改ざん検知アプリケーション１の機能を概略的を示すブロック図である。
図示するように、ログ改ざん検知アプリケーション１は、ログ情報受付処理部１１と、ログ情報出力処理部１２と、ログ改ざん検知処理部１３と、ログ改ざん検知用メモリ１４と、を備える。
【００２４】
ログ改ざん検知アプリケーション１は、ログ情報受付処理部１１による処理と、ログ情報出力処理部１２による処理と、ログ改ざん検知処理部１３による処理とを、スレッド（Thread）を用いて並列処理する。
【００２５】
ログ改ざん検知用メモリ１４は、ログ改ざん検知アプリケーション１が実装されているコンピュータシステムの主記憶装置（メインメモリ）であるＲＡＭ５３の一部を利用したメモリである。ログ改ざん検知用メモリ１４は、ログ情報の改ざんを検知するために用いられるバッファ１５及び後述するハッシュ値保存テーブル１６を備える。
【００２６】
一方で、ログ記憶部３は、ログ改ざん検知アプリケーション１が実装されているコンピュータシステムの補助記憶装置である記憶部４５の一部を利用した記憶部である。ログ記憶部３は、ログ情報を保存するために用いられる閲覧用ログ保存エリア３１及びチェック用ログ保存エリア３２を備える。
【００２７】
閲覧用ログ保存エリア３１は、ログ情報を利用して処理を行う任意のアプリケーションが閲覧するための閲覧用ログファイルを保存するエリアである。また、ここに保存される閲覧用ログファイルは、ログ改ざん検知アプリケーション１が実装されるコンピュータシステムが元々使用しているログファイルと同一形式のログファイルである。そのため、ログ情報に関しては、ログ改ざん検知アプリケーション１が実装されても、実装前と同じ運用方法でコンピュータシステムを稼働することができる。
【００２８】
チェック用ログ保存エリア３２は、ログ情報の改ざんを検知するために使用されるチェック用ログファイルを保存するエリアである。ここに保存されるチェック用ログファイルには、閲覧用ログファイルに記録されるログ情報と同一のログ情報が小分けに分割されて記録される。つまり、チェック用ログファイルは、閲覧用ログファイルを複数に分割したログファイルである。
【００２９】
ログ情報受付処理部１１は、ログ出力アプリケーション２から出力されたログ情報をバッファ１５に一時的に保存する。バッファ１５は、ログ情報を蓄積する。
【００３０】
ログ情報出力処理部１２は、バッファ１５にログ情報が保存される毎に、保存されたログ情報を複製する。そして、複製したログ情報を、ログ記憶部３の閲覧用ログ保存エリア３１とチェック用ログ保存エリア３２とに出力する。
【００３１】
また、ログ情報出力処理部１２は、閲覧用ログファイルとチェック用ログファイルとのローテーション処理を行う。
【００３２】
具体的には、閲覧用ログファイルのローテーション条件は、ログ改ざん検知アプリケーション１が実装されるコンピュータシステムにおける元々のローテーション条件と同じである。本実施の形態においては、閲覧用ログファイルのローテーション条件を例えば１日間隔とする。なお、このローテーション条件は、出力されるログ情報量、コンピュータシステムの処理能力、記憶容量等に応じて適宜設定可能である。
【００３３】
また、チェック用ログファイルのローテーション条件は、閲覧用ログファイルを更に複数のログファイルに分割するように設定される。本実施の形態においては、チェック用ログファイルのローテーション条件を例えば５秒間隔とする。なお、このローテーション条件は、出力されるログ情報量、コンピュータシステムの処理能力、記憶容量等、更には、閲覧用ログファイルのローテーション条件等に応じて適宜設定可能である。
【００３４】
閲覧用ログファイルのローテーションによって、閲覧用ログ保存エリア３１に出力されたログ情報は分割され、例えば１日毎に、新しい閲覧用ログファイルが生成される。また、チェック用ログファイルのローテーションによって、チェック用ログ保存エリア３２に出力されたログ情報は分割され、例えば５秒毎に、新しいチェック用ログファイルが生成される。
【００３５】
更に、ログ情報出力処理部１２は、チェック用ログファイルのローテーションと同じタイミングで、バッファ１５から、その時点で蓄積されているログ情報を取り出し、取り出したログ情報のハッシュ値を求める。そして、求めたハッシュ値を、ログ情報の改ざんを検知するために使用するハッシュ値保存テーブル１６に保存する。
【００３６】
ログ改ざん検知処理部１３は、閲覧用ログ保存エリア３１内の閲覧用ログファイルと、チェック用ログ保存エリア３２内のチェック用ログファイルと、ハッシュ値保存テーブル１６と、を相互に比較し、ログ情報の改ざんを検知する。
【００３７】
次に、ログ情報受付処理部１１、ログ情報出力処理部１２、及びログ改ざん検知処理部１３のそれぞれが実行する処理を更に具体的に説明する。
なお、これらの各処理も、ログ改ざん検知アプリケーション１の一機能として、制御部４６の処理により実行される。また、これらの各処理は、ログ改ざん検知アプリケーション１の動作中、常に実行される。
【００３８】
まず、ログ情報受付処理部１１により実行されるログ情報受付処理を説明する。
図４は、ログ情報受付処理の手順の一例を示すフローチャートである。
ログ情報受付処理においては、まず、ログ情報受付処理部１１は、ログ出力アプリケーション２からログ情報が出力されたか否かを判別する（ステップＳ１０１）。
【００３９】
ログ出力アプリケーション２からログ情報が出力されていない場合には（ステップＳ１０１；Ｎｏ）、ステップＳ１０１に戻り、ログ情報受付処理部１１は、ログ情報が出力されるまでウェイト処理する。
【００４０】
一方、ログ出力アプリケーション２からログ情報が出力された場合には（ステップＳ１０１；Ｙｅｓ）、ログ情報受付処理部１１は、出力されたログ情報を受け付け、受け付けたログ情報をバッファ１５に保存する（ステップＳ１０２）。
そして、ステップ１０１に戻り、ログ情報受付処理部１１は、ログ情報をバッファ１５に保存する処理を繰り返す。
【００４１】
ログ情報受付処理部１１は、以上の処理をログ改ざん検知アプリケーション１が終了するまで繰り返す。
このログ情報受付処理により、ログ出力アプリケーション２へのインタフェースが提供されると共に、バッファ１５にログ情報が蓄積される。
【００４２】
次に、ログ情報出力処理部１２により実行されるログ情報出力処理を説明する。
このログ情報出力処理では、ログ情報をログファイルに記録する処理をメインに行う。具体的には、バッファ１５内に追記されたログ情報が、閲覧用ログファイルとチェック用ログファイルとの２つのログファイルに出力される。更に、計時部４４がタイマーとして使用され、特定の時間が経過したことを契機に、閲覧用ログファイルとチェック用ログファイルとのそれぞれのローテーション処理が行われる。
【００４３】
図５は、ログ情報出力処理の手順の一例を示すフローチャートである。
ログ情報出力処理においては、まず、ログ情報出力処理部１２は、バッファ１５にログ情報が追記されたか否かを判別する（ステップＳ１１１）。具体的には、ログ情報出力処理部１２は、ログ情報受付処理（図４）のステップＳ１０２の処理によって、バッファ１５にログ情報が新たに保存されたか否かを判別する。
【００４４】
バッファ１５にログ情報が追記された場合には（ステップＳ１１１；Ｙｅｓ）、ログ情報出力処理部１２は、追記されたログ情報を複製し、複製したログ情報を、閲覧用ログ保存エリア３１及びチェック用ログ保存エリア３２に出力する（ステップＳ１１２）。閲覧用ログ保存エリア３１とチェック用ログ保存エリア３２とに出力されたログ情報は、それぞれ、閲覧用ログ保存エリア３１内の閲覧用ログファイルとチェック用ログ保存エリア３２内のチェック用ログファイルとに記録される。
【００４５】
バッファ１５にログ情報が追記されていない場合には（ステップＳ１１１；Ｎｏ）、ステップＳ１１２をスキップする。
このステップＳ１１２の処理とログ情報受付処理（図４）のステップＳ１０２の処理とによって、ログ出力アプリケーション２からログ情報が出力される毎に、出力されたログ情報は複製され、バッファ１５と、閲覧用ログ保存エリア３１（閲覧用ログファイル）と、チェック用ログ保存エリア３２（チェック用ログファイル）と、の３つの記憶領域に同一のログ情報が追加して記録されていく。
【００４６】
次に、ログ情報出力処理部１２は、チェック用ログファイルのローテーション時間が経過したか否かを判別する（ステップＳ１１３）。具体的には、チェック用ログファイルのローテーション時間が例えば５秒に設定されている場合には、ログ情報出力処理部１２は、計時部４４で時間を計り、５秒の経過を判別する。なお、チェック用ログファイルのローテーション時間は予め設定されて、例えばＲＯＭ５２に記録されている。
【００４７】
チェック用ログファイルのローテーション時間が経過していない場合には（ステップＳ１１３；Ｎｏ）、ステップＳ１１１に戻り、ログ情報出力処理部１２は、ログ情報の閲覧用ログ保存エリア３１及びチェック用ログ保存エリア３２への出力を繰り返す。
【００４８】
そして、チェック用ログファイルのローテーション時間が経過すると（ステップＳ１１３；Ｙｅｓ）、ログ情報出力処理部１２は、閲覧用ログファイルのローテーション時間が経過したか否かを判別する（ステップＳ１１３−１）。具体的には、閲覧用ログファイルのローテーション時間が例えば１日に設定されている場合には、ログ情報出力処理部１２は、計時部４４で時間を計り、１日の経過を判別する。なお、閲覧用ログファイルのローテーション時間は予め設定されて、例えばＲＯＭ５２に記録されている。
閲覧用ログファイルのローテーション時間が経過している場合には（ステップＳ１１３−１；Ｙｅｓ）、ログ情報出力処理部１２は、閲覧用ログファイルのローテーション時間が経過したことを示す閲覧用ローテーションフラグを立て（ステップＳ１１３−２）、閲覧用ログファイルのローテーション時間が経過していない場合には（ステップＳ１１３−１；Ｎｏ）、ステップＳ１１３−２をスキップする。
次に、ログ情報出力処理部１２は、チェック用ログファイルのローテーションを行う（ステップＳ１１４）。例えば、チェック用ログファイルのローテーション時間が５秒に設定されている場合には、チェック用ログファイルのローテーションが５秒間隔で行われる。これにより、５秒毎に、５秒の間にチェック用ログ保存エリア３２に出力されたログ情報を記録したチェック用ログファイルが生成される。
【００４９】
続いて、ログ情報出力処理部１２は、ローテーションによって生成されたチェック用ログファイルを識別するためのチェック用ログファイルのファイル名を取得する（ステップＳ１１５）。
【００５０】
次に、ログ情報出力処理部１２は、バッファ１５内のログ情報からハッシュ値を算出し（ステップＳ１１６）、算出したハッシュ値をハッシュ値保存テーブル１６に保存して（ステップＳ１１７）、バッファ１５を初期化する（ステップＳ１１８）。
【００５１】
具体的には、チェック用ログファイルのローテーション時間が５秒の場合には、ログ情報出力処理部１２は、バッファ１５から、５秒間で蓄積されたログ情報を読み出し、読み出したログ情報に所定のハッシュ関数を適用してハッシュ値を求める。そして、求めたハッシュ値を、ステップＳ１１５で取得したチェック用ログファイルのファイル名と関連付けて、ハッシュ値保存テーブル１６に記録する。更に、ログ情報出力処理部１２は、バッファ１５を初期化して、バッファ１５内のログ情報を削除する。
【００５２】
これにより、バッファ１５に保存されるログ情報は、５秒毎にバッファから取り出され、取り出されたログ情報のハッシュ値が算出される。バッファ１５に保存されるログ情報と、チェック用ログ保存エリア３２に出力されるログ情報と、は同じであるため、ステップＳ１１６で算出されるハッシュ値は、ステップＳ１１４でのローテーションにより生成されたチェック用ログファイルに記録されているログ情報のハッシュ値に相当する。
【００５３】
ハッシュ値保存テーブル１６に保存されたハッシュ値は、後に、ログ改ざん検知処理部１３がチェック用ログファイルの改ざんを検知するために使用される。つまり、本実施の形態では、ハッシュ値は、ログ情報の完全性を確認するために利用される。
【００５４】
ここで、ハッシュについて説明する。ハッシュには、次の特徴がある。
（１）ハッシュ関数に入力される元のデータのサイズに関わらず、一定の長さでデータが出力される。なお、出力されるデータの長さはハッシュ関数のアルゴリズムによって異なる。
（２）元のデータが異なる場合には、同一のハッシュ値が得られることはほとんどない。
（３）ハッシュ値が分かっていても、元のデータを算出できない。
本実施の形態では、特に上記（２）の特徴に基づき、ハッシュを使用して、ログファイルが改ざんされていないかをチェックする。
【００５５】
本実施の形態で使用するハッシュ関数は、ハッシュ値の衝突攻撃に対する耐性が高いＳＨＡ−２５６やＳＨＡ−５１２を使用することが理想的である。しかしながら、本実施の形態では、短期間に定期的にログファイルを監視することを想定しているため、より高速な性能を有するＳＨＡ−１を使用することとする。なお、出力されるログ情報量、コンピュータシステムの処理能力、記憶容量等に応じて、他のハッシュ関数を使用しても良い。
なお、使用される所定のハッシュ関数は、例えばＲＯＭ５２に予め記録されている。
【００５６】
バッファ１５の初期化が終了すると、ログ情報出力処理部１２は、閲覧用ローテーションフラグが立っているか否かを判別する（ステップＳ１１９）。
【００５７】
閲覧用ローテーションフラグが立っていない場合には（ステップＳ１１９；Ｎｏ）、ステップＳ１１１に戻り、ログ情報出力処理部１２は、ステップＳ１１１〜Ｓ１１８の処理を繰り返す。
【００５８】
これにより、閲覧用ログファイルのローテーション時間が経過するまでの間、チェック用ログファイルのローテーション時間が経過する毎に、チェック用ログファイルが生成され続け、更に、生成されたチェック用ログファイルに記録されているログ情報のハッシュ値（バッファ１５内のログ情報のハッシュ値に相当）が、ハッシュ値保存テーブル１６に保存される。
【００５９】
図６は、閲覧用ログファイルのローテーション時間が経過するまでの間の、チェック用ログ保存エリア３２、ハッシュ値保存テーブル１６、及び閲覧用ログ保存エリア３１のそれぞれのデータ構成例を示す図である。
【００６０】
例えば、チェック用ログファイルのローテーション時間が５秒であって、ログ改ざん検知アプリケーション１が動作を開始してから１分２秒が経過しているような場合には、チェック用ログファイルのローテーションは既に１２回行われ、図６（ａ）に示すように、チェック用ログ保存エリア３２には、ローテーション済みの１２個のチェック用ログファイルＬｏｇ１〜１２と、ログ情報を現在記録中のチェック用ログファイルと、が存在する。
【００６１】
そして、その場合、図６（ｂ）に示すように、ハッシュ値保存テーブル１６には、ローテーションにより生成されたチェック用ログファイルＬｏｇ１〜１２のそれぞれに対応するハッシュ値が保存される。チェック用ログファイルがローテーションされるとレコード番号が採番され、ハッシュ値保存テーブル１６には、レコード番号毎に、チェック用ログファイルのファイル名とハッシュ値とを含むレコードデータが記録される。
【００６２】
また、図６（ｃ）に示すように、閲覧用ログ保存エリア３１には、ログ情報を現在記録中の閲覧用ログファイルが存在する。なお、この閲覧用ログファイルには、チェック用ログファイルＬｏｇ１〜１２と記録中のチェック用ログファイルとに記録されているログ情報が、時系列に連続して記録されている。
【００６３】
図５に戻り、ステップＳ１１９で、閲覧用ローテーションフラグが立っていると（ステップＳ１１９；Ｙｅｓ）、ログ情報出力処理部１２は、閲覧用ログファイルのローテーションを行う（ステップＳ１２０）。例えば、閲覧用ログファイルのローテーション時間が１日に設定されている場合には、閲覧用ログファイルのローテーションが１日毎に行われる。これにより、１日毎に、１日の間に閲覧用ログ保存エリア３１に出力されたログ情報を記憶した閲覧用ログファイルが生成される。
【００６４】
続いて、ログ情報出力処理部１２は、ハッシュ値保存テーブル１６を初期化して（ステップＳ１２１）、ステップＳ１１１に戻る。つまり、ハッシュ値保存テーブル１６は、閲覧用ログファイルがローテーションされるまでの間は、チェック用ログファイルのローテーション毎にハッシュ値が追加されていき、閲覧用ログファイルがローテーションされるとクリアされる。
又、ハッシュ値保存テーブル１６をクリアする前にハッシュ値保存テーブル１６をファイル等に記憶することで、チェック用ログ、閲覧用ログの改竄を事後必要時にチェックすることもできる。ハッシュ値保存テーブル１６をファイル等に記憶する場合はハッシュ値保存テーブル１６そのものの改竄を防止するために暗号化等するのが好ましい。
【００６５】
ログ情報出力処理部１２は、以上の処理をログ改ざん検知アプリケーション１が終了するまで繰り返す。
このログ情報出力処理により、例えばチェック用ログファイルのローテーション間隔が５秒で、閲覧用ログファイルのローテーション間隔が１日の場合には、１日に、例えば数十バイト〜数百バイトのチェック用ログファイルが１７２８０個生成され、閲覧用ログファイルが１個生成される。
なお、チェック用ログファイル及び閲覧用ログファイルのローテーション間隔を適宜変更することで、ログファイルの出力量（数）を変えることができる。
【００６６】
次に、上述したログ情報出力処理と並行して、ログ改ざん検知処理部１３により実行される並列ログ改ざん検知処理を説明する。この並列ログ改ざん検知処理では、チェック用ログファイルに記録されているチェック用ログ情報と、閲覧用ログファイルに記録されている閲覧用ログ情報と、が改ざんされていないかが、ログ情報出力処理とは独立して定期的にチェックされる。
また、並列ログ改ざん検知処理を実行する際には、ログのローテーション前にチェックを実行することで、ローテーション直前の改ざんについてもチェックすることもできる。
【００６７】
図７は、並列ログ改ざん検知処理の手順の一例を示すフローチャートである。
並列ログ改ざん検知処理においては、まず、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６のレコード番号を指定するための変数ｎをｎ＝１とする（ステップＳ１３１）。
【００６８】
次に、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６にレコードｎが存在するか否かを判別する（ステップＳ１３２）。
レコードｎが存在しない場合には（ステップＳ１３２；Ｎｏ）、ステップＳ１３１に戻る。例えば、ハッシュ値保存テーブル１６が初期化されたことにより、ハッシュ値保存テーブル１６にハッシュ値が１つも保存されていないような場合には、レコード１は存在しないため、ログ改ざん検知処理部１３は、ウェイト処理により、ハッシュ値保存テーブル１６にハッシュ値が保存されるまで待つ。
【００６９】
レコードｎが存在している場合には（ステップＳ１３２；Ｙｅｓ）、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６から、レコードｎのファイル名及びハッシュ値を読み出す（ステップＳ１３３）。
次に、ログ改ざん検知処理部１３は、読み出したファイル名のチェック用ログファイルを、チェック用ログ保存エリア３２から読み出す（ステップ１３４）。
【００７０】
続いて、ログ改ざん検知処理部１３は、読み出したチェック用ログファイルに記録されているチェック用ログ情報からハッシュ値を算出する（ステップＳ１３５）。なお、ここでのハッシュ値の算出には、ログ情報出力処理（図５）のステップＳ１１６でのハッシュ値の算出に用いたハッシュ関数を用いる。
【００７１】
そして、ログ改ざん検知処理部１３は、ステップ１３３で読み出したハッシュ値と、ステップＳ１３５で算出したハッシュ値と、を比較し、一致するか否かを判別する（ステップＳ１３６）。
【００７２】
その結果、ハッシュ値が一致しなかった場合には（ステップＳ１３６；Ｎｏ）、ログ改ざん検知処理部１３は、チェック用ログ情報の改ざんを検知する（ステップＳ１３７）。例えば、ログ改ざん検知処理部１３は、ハッシュ値が一致していない場合には、チェック用ログ情報が改ざんされていると判断して、その旨を示す情報を、ステップＳ１３３で読み出したファイル名と共に出力部４２に出力し、ログ管理者等に改ざんの検知を報知する。
【００７３】
一方、ハッシュ値が一致した場合には（ステップＳ１３６；Ｙｅｓ）、ログ改ざん検知処理部１３は、チェック用ログ情報は改ざんされていないと判断して、続けて、そのチェック用ログ情報が閲覧用ログ情報に含まれているか否かを判別する（ステップＳ１３８）。具体的には、ログ改ざん検知処理部１３は、閲覧用ログ保存エリア３１から、記録中の閲覧用ログファイルに既に記録されている閲覧用ログ情報を読み出し、読み出した閲覧用ログ情報の中に、その一部として、ステップＳ１３４で読み出したチェック用ログファイルに記録されているチェック用ログ情報が含まれているか否かを判別する。
なお、このステップＳ１３８では、上記具体例以外にも、ステップＳ１３４で読み出したチェック用ログファイルに近い時間のチェック用ログファイルを含めて、閲覧用ログファイルとつきあわせてチェックしても良い。更には、すべてのチェック用ログファイルを閲覧用ログファイルとつきあわせてチェックしても良い。
【００７４】
その結果、チェック用ログ情報が閲覧用ログ情報に含まれていない場合には（ステップＳ１３８；Ｎｏ）、ログ改ざん検知処理部１３は、閲覧用ログ情報の改ざんを検知する（ステップＳ１３９）。例えば、ログ改ざん検知処理部１３は、チェック用ログ情報が閲覧用ログ情報に含まれていない場合には、閲覧用ログ情報が改ざんされていると判断して、その旨を示す情報を、ステップＳ１３３で読み出したファイル名と共に出力部４２に出力して、ログ管理者等に改ざんの検知を報知する。
【００７５】
一方、チェック用ログ情報が閲覧用ログ情報に含まれている場合には（ステップＳ１３８；Ｙｅｓ）、ログ改ざん検知処理部１３は、チェック用ログ情報及び閲覧用ログ情報は共に改ざんされていないと判断して、次の処理に進む。
【００７６】
このような方法で、ログ情報の改ざんを検知するのは、ハッシュ値保存テーブル１６、チェック用ログファイル、閲覧用ログファイルの順に、改ざんされる可能性が高くなっていくことに起因する。
【００７７】
ハッシュ値保存テーブル１６は、ログ改ざん検知アプリケーション１がコンピュータシステムの主記憶装置内のログ改ざん検知用メモリ１４に格納するものであるため、改ざんは困難である。
チェック用ログファイルは、コンピュータシステムの補助記憶装置内のログ記憶部３に格納されるため、ハッシュ値保存テーブル１６に比べて改ざんされる可能性が高い。
【００７８】
閲覧用ログファイルは、チェック用ログファイルと同様にログ記憶部３に格納されるものであるが、チェック用ログファイルがログ改ざん検知アプリケーション１のみによって使用されるものであるのに対し、閲覧用ログファイルは、他のアプリケーションによって閲覧されることを前提としているファイルであるため、最も改ざんされる可能性が高い。
【００７９】
そのため、ログ改ざん検知処理部１３は、まず、ハッシュ値保存テーブル１６に基づいて、チェック用ログファイルが改ざんされていないかを確認し、次に、改ざんされていないことが確認されたチェック用ログファイルに基づいて、閲覧用ログファイルが改ざんされていないかを確認する。
【００８０】
ステップＳ１３７〜Ｓ１３９で、ログ情報の改ざんの有無が判断されると、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６内の次のレコードを処理するために、ｎの値に１を加算し（ステップＳ１４０）、ステップＳ１３２に戻る。
【００８１】
これにより、ハッシュ値保存テーブル１６内のレコードデータが順次読み出され、レコード毎にログ情報の改ざんがチェックされる。そして、すべてのレコードが処理されると、ステップＳ１３２で処理すべきレコードが存在しないと判別され（ステップＳ１３２；Ｎｏ）、ｎの値がｎ＝１に再設定され（ステップＳ１３１）、再び、ハッシュ値保存テーブル１６内のレコード１から順に処理を開始する。
尚、処理順序は上記順番に限られず、一番最近に登録されたレコードから順に処理するなど所定の順番としても良い。
【００８２】
ログ改ざん検知処理部１３は、以上の処理をログ改ざん検知アプリケーション１が終了するまで繰り返す。
【００８３】
この並列ログ改ざん検知処理は、図５に示したログ情報出力処理と、並列して処理される。従って、並列ログ改ざん検知処理で使用されるハッシュ値保存テーブル１６は、ログ情報出力処理によってチェック用ログファイルがローテーションされる毎に、レコード数が増加していく。
【００８４】
そのため、ハッシュ値保存テーブル１６のレコード数が最大のときであっても、そのすべてのレコードを、チェック用ログファイルがローテーションする間に処理できるように、レコードデータ（ファイル名及びハッシュ値）の読み出し間隔を設定しておくと、改ざん検知能力がより高くなる。また、そのような処理が可能なように、コンピュータシステムの処理能力に応じて、チェック用ログファイル及び閲覧用ログファイルの各ローテーション時間を適宜変更するようにしても良い。
【００８５】
また、上述した並列ログ改ざん検知処理を、チェック用ログの改ざんを検知するための並列チェック用ログ改ざん検知処理と、閲覧用ログの改ざんを検知するための並行閲覧用ログ改ざん検知処理と、の２つに分けて、それぞれを更に並列に処理するようにしても良い。
【００８６】
並列チェック用ログ改ざん検知処理は、具体的には例えば、図７に示した並列ログ改ざん検知処理において、ステップＳ１３８及びＳ１３９を削除すれば良い。
【００８７】
また、並列閲覧用ログ改ざん検知処理は、具体的には例えば、図７に示した並列ログ改ざん検知処理において、ステップＳ１３３でチェック用ログファイルのファイル名だけを読み出し、ステップＳ１３５〜１３７の処理を削除すれば良い。
【００８８】
このように、並列ログ改ざん検知処理を並列チェック用ログ改ざん検知処理と並列閲覧用ログ改ざん検知処理とに分けた場合には、処理速度に違いがある場合に、速い方の処理を遅い方の処理に合わせることなく、実行することができる。
【００８９】
本実施の形態では、ログ情報の改ざんの検知を、ログ情報出力処理と並列に処理される並列ログ改ざん検知処理で行っている。しかしながら、ログ情報の改ざんの検知を、ログ情報出力処理の中で行うようにしても良い。
そこで、ログ情報出力処理の中でログ情報の改ざんを検知する場合を、本発明の第２の実施の形態として以下に説明する。
【００９０】
［第２の実施の形態］
本発明の第２の実施の形態では、ログ情報出力処理において、チェック用ログファイル及び閲覧用ログファイルのローテーションを契機に、ログ改ざん検知処理を実行する。
【００９１】
図８は、本発明の第２の実施の形態におけるログ情報出力処理の手順の一例を示すフローチャートである。
図８においては、図５に示した第１の実施の形態におけるログ情報出力処理と同一のステップには同一の符号を付し、重複を避けるためにその説明を省略する。
【００９２】
第２の実施の形態におけるログ情報出力処理は、第１の実施の形態におけるログ情報出力処理と、ステップＳ２０１及びＳ２０２のみが異なる。
第２の実施の形態におけるログ情報出力処理は、チェック用ログファイルをローテーションした後に、バッファ１５内のログ情報からハッシュ値を算出すると（ステップＳ１１６）、チェック用ログファイルローテーション時ログ改ざん検知処理を実行する（ステップＳ２０１）。また、閲覧用ログファイルをローテーションすると（ステップＳ１２０）、閲覧用ログファイルローテーション時ログ改ざん検知処理を実行する（ステップＳ２０２）。
【００９３】
チェック用ログファイルローテーション時ログ改ざん検知処理（ステップＳ２０１）及び閲覧用ログファイルローテーション時ログ改ざん検知処理（ステップＳ２０２）は、ログ情報出力処理部１２が、ログ改ざん検知処理部１３にログ改ざん検知処理の実行を要求することにより、実行される。
以下、チェック用ログファイルローテーション時ログ改ざん検知処理及び閲覧用ログファイルローテーション時ログ改ざん検知処理を具体的に説明する。
【００９４】
図９は、チェック用ログファイルローテーション時ログ改ざん検知処理の手順の一例を示すフローチャートである。
ログ改ざん検知処理部１３は、まず、ステップＳ１１４（図８）でローテーションされたチェック用ログファイルを、チェック用ログ保存エリア３２から読み出す（ステップＳ２１１）。
【００９５】
次に、ログ改ざん検知処理部１３は、読み出したチェック用ログファイルに記録されているチェック用ログ情報からハッシュ値を算出する（ステップＳ２１２）。なお、ここでのハッシュ値の算出には、ステップＳ１１６（図８）でのハッシュ値の算出に用いたハッシュ関数を用いる。
【００９６】
そして、ログ改ざん検知処理部１３は、ステップＳ１１６（図８）でバッファ１５内のログ情報から算出したハッシュ値と、ステップＳ２１２で算出したハッシュ値と、を比較し、一致するか否かを判別する（ステップＳ２１３）。
【００９７】
その結果、ハッシュ値が一致しなかった場合には（ステップＳ２１３；Ｎｏ）、ログ改ざん検知処理部１３は、チェック用ログ情報の改ざんを検知して（ステップＳ２１４）、図８のログ情報出力処理に戻る。なお、この場合、ステップＳ１１７（図８）において、ハッシュ値保存テーブル１６には、ハッシュ値に代えて、例えば、改ざんを検知した旨を示す情報等を保存しても良い。
【００９８】
一方、ハッシュ値が一致した場合には（ステップＳ２１３；Ｙｅｓ）、ログ改ざん検知処理部１３は、チェック用ログ情報は改ざんされていないとして、そのまま、図８のログ情報出力処理に戻る。
【００９９】
このようにチェック用ログファイルローテーション時ログ改ざん検知処理においては、チェック用ログファイルのローテーションのタイミングで、チェック用ログファイルに記録されたログ情報と、バッファ１５に記録されたログ情報と、が同一であるか否かが判断される。従って、例えば、ログ情報を記録中のチェック用ログファイルが改ざんされたような場合であっても、そのチェック用ログファイルのローテーション時に改ざんを検知することができる。
【０１００】
図１０及び図１１は、閲覧用ログファイルローテーション時ログ改ざん検知処理の手順の一例を示すフローチャートである。
この閲覧用ログファイルローテーション時ログ改ざん検知処理では、閲覧用ログファイルのローテーションのタイミングで、ローテーションされた閲覧用ログファイルが改ざんされていないかが判断される。
【０１０１】
そのため、まず、ステップＳ２２１〜Ｓ２２８（図１０）で、ハッシュ値保存テーブル１６に保存されているすべてのハッシュ値に基づき、チェック用ログファイルが改ざんされていないかが判断される。そして、チェック用ログファイルが改ざんされていないと判断された場合に、ステップＳ２２９〜Ｓ２３６（図１１）で、改ざんされていないと判断されたすべてのチェック用ログファイルに基づき、閲覧用ログファイルが改ざんされていないかが判断される。
【０１０２】
閲覧用ログファイルローテーション時ログ改ざん検知処理においては、まず、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６のレコード番号を指定するための変数ｎをｎ＝１とする（図１０のステップＳ２２１）。
【０１０３】
次に、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６にレコードｎが存在するか否かを判別する（ステップＳ２２２）。
【０１０４】
レコードｎが存在している場合には（ステップＳ２２２；Ｙｅｓ）、ログ改ざん検知処理部１３は、ハッシュ値保存テーブル１６から、レコードｎのファイル名及びハッシュ値を読み出す（ステップＳ２２３）。
次に、ログ改ざん検知処理部１３は、読み出したファイル名のチェック用ログファイルを、チェック用ログ保存エリア３２から読み出す（ステップＳ２２４）。
【０１０５】
続いて、ログ改ざん検知処理部１３は、読み出したチェック用ログファイルに記録されているチェック用ログ情報からハッシュ値を算出する（ステップＳ２２５）。なお、ここでのハッシュ値の算出には、ログ情報出力処理（図８）のステップＳ１１６でハッシュ値の算出に用いたハッシュ関数を用いる。
【０１０６】
そして、ログ改ざん検知処理部１３は、ステップ２２３で読み出したハッシュ値と、ステップＳ２２５で算出したハッシュ値と、を比較し、一致するか否かを判別する（ステップＳ２２６）。
【０１０７】
その結果、ハッシュ値が一致した場合には（ステップＳ２２６；Ｙｅｓ）、ログ改ざん検知処理部１３は、チェック用ログ情報は改ざんされていないと判断して、ハッシュ値保存テーブル１６内の次のレコードを処理するために、ｎの値に１を加算し（ステップＳ２２７）、ステップＳ２２２に戻る。
【０１０８】
そして、ステップＳ２２２〜Ｓ２２７の処理を繰り返すことにより、ハッシュ値保存テーブル１６内のレコードデータが順次読み出されて、レコード毎にログ情報の改ざんがチェックされる。そして、ハッシュ値保存テーブル１６に記録されているすべてのレコードについてハッシュ値が一致し（ステップＳ２２６；Ｙｅｓ）、処理すべきレコードが存在しなくなると（ステップＳ２２２；Ｎｏ）、チェック用ログファイルは改ざんされていないと判断されて、閲覧用ログファイルの改ざんを判断するためのステップＳ２２９〜Ｓ２３６（図１１）の処理に進む。
【０１０９】
一方、レコード毎の処理において、ハッシュ値が一致しないことが１つでもあった場合には（ステップＳ２２６；Ｎｏ）、ログ改ざん検知処理部１３は、チェック用ログ情報の改ざんを検知し（ステップＳ２２８）、図８のログ情報出力処理に戻る。
【０１１０】
ステップＳ２２９〜Ｓ２３６（図１１）の処理では、ログ改ざん検知処理部１３は、まず、ハッシュ値保存テーブル１６からレコード番号順にすべてのファイル名を読み出す（ステップＳ２２９）。
次に、ログ改ざん検知処理部１３は、読み出したすべてのファイル名のチェック用ログファイルを、チェック用ログ保存エリア３２から読み出す（ステップＳ２３０）。
【０１１１】
続いて、ログ改ざん検知処理部１３は、読み出したチェック用ログファイルに記録されているチェック用ログ情報を読み出した順に結合する（ステップＳ２３１）。この結合により、複数のチェック用ログファイルに分割されてチェック用ログ保存エリア３２に保存されているログ情報が、閲覧用ログファイルに記録されているログ情報と同様の、分割されていない状態に戻される。
【０１１２】
そして、ログ改ざん検知処理部１３は、結合したチェック用ログ情報からハッシュ値を算出する（ステップＳ２３２）。なお、ここでのハッシュ値の算出には、ログ情報出力処理（図８）のステップ１１６でハッシュ値の算出に用いたハッシュ関数を用いれば良い。
【０１１３】
次に、ログ改ざん検知処理部１３は、ステップＳ１２０（図８）でローテーションされた閲覧用ログファイルを、閲覧用ログ保存エリア３１から読み出す（ステップＳ２３３）。
【０１１４】
続いて、ログ改ざん検知処理部１３は、読み出した閲覧用ログファイルに記録されている閲覧用ログ情報からハッシュ値を算出する（ステップＳ２３４）。なお、ここでのハッシュ値の算出には、ステップＳ２３２でハッシュ値の算出に用いたハッシュ関数を用いる。
【０１１５】
そして、ログ改ざん検知処理部１３は、ステップＳ２３２で算出したハッシュ値と、ステップＳ２３４で算出したハッシュ値とを、比較し、一致するか否かを判別する（ステップＳ２３５）。
【０１１６】
その結果、ハッシュ値が一致しなかった場合には（ステップＳ２３５；Ｎｏ）、ログ改ざん検知処理部１３は、閲覧用ログ情報の改ざんを検知して（ステップＳ２３６）、図８のログ情報出力処理に戻る。
【０１１７】
一方、ハッシュ値が一致した場合には（ステップＳ２３５；Ｙｅｓ）、ログ改ざん検知処理部１３は、閲覧用ログ情報は改ざんされていないとして、そのまま、図８のログ情報出力処理に戻る。
【０１１８】
このように閲覧用ログファイルローテーション時ログ改ざん検知処理においては、閲覧用ログファイルがローテーションされた直後に、ローテーションされた閲覧用ログファイルが改ざんされていないかが判断される。従って、例えば、ローテーションされた閲覧用ログファイルにデジタル署名を施して保管するような場合には、改ざんされていないことが確認された閲覧用ログファイルにデジタル署名が施される。
【０１１９】
また、チェック用ログファイル及び閲覧用ログファイルのローテーション間隔を変化させることで、チェック用ログファイルローテーション時ログ改ざん検知処理及び閲覧用ログファイルローテーション時ログ改ざん検知処理における改ざん検知のタイミングを変化させることができる。
【０１２０】
［第３の実施の形態］
上記第１及び第２の実施の形態では、本発明をアプリケーションに適用した場合を説明した。
そこで、次に、本発明を装置に適用した場合を、本発明の第３の実施の形態として説明する。
【０１２１】
図１２は、本発明の第３の実施の形態に係るログ改ざん検知装置１００の機能的な構成を概略的に示すブロック図である。
図示するように、ログ改ざん検知装置１００は、ログデータ時系列記憶部１０１と、ログデータ分割記憶部１０２と、ハッシュ値記憶部１０３と、ハッシュ値読出部１０４と、分割ログデータ読出部１０５と、読出ハッシュ値算出部１０６と、ハッシュ値一致判別部１０７と、分割ログデータ含有判別部１０８と、ログデータ改ざん情報出力部１０９と、を備える。
【０１２２】
なお、ログ改ざん検知装置１００の物理的な構成は、図２に示したコンピュータシステムの構成と同一とすることができるため、図２を参照することによりその説明を省略する。
【０１２３】
ログデータ時系列記憶部１０１は、ログデータを時系列に記憶する。具体的には、ログデータ時系列記憶部１０１は、例えば、記憶部４５内の閲覧用ログ保存エリア３１（図３参照）である。
【０１２４】
ログデータ分割記憶部１０２は、ログデータ時系列記憶部１０１に記憶されているログデータを、そのログデータを時系列に沿って分割した複数の分割ログデータに分けて、記憶する。具体的には、ログデータ分割記憶部１０２は、例えば、記憶部４５内のチェック用ログ保存エリア３２（図３参照）であり、分割ログデータは、例えば、チェック用ログファイルである。
【０１２５】
ハッシュ値記憶部１０３は、ログデータ分割記憶部１０２に記憶されている分割ログデータ毎に、その分割ログデータからハッシュ関数を用いて算出したハッシュ値を記憶する。具体的には、ハッシュ値記憶部１０３は、例えば、ＲＡＭ５３内のハッシュ値保存テーブル１６（図３参照）である。ハッシュ値記憶部１０３には、分割ログデータを識別するためのファイル名等の分割ログデータＩＤと、その分割ログデータのハッシュ値と、が関連付けて記憶されている。
【０１２６】
ハッシュ値読出部１０４は、ハッシュ値記憶部１０３から、ハッシュ値を読み出す。具体的には、ハッシュ値読出部１０４は、ハッシュ値記憶部１０３から、分割ログデータＩＤとハッシュ値とを読み出す。
【０１２７】
分割ログデータ読出部１０５は、ハッシュ値読出部１０４により読み出されたハッシュ値が算出された元の分割ログデータを、ログデータ分割記憶部１０２から読み出す。具体的には、分割ログデータ読出部１０５は、ハッシュ値読出部１０４が読み出した分割ログデータＩＤで識別される分割ログデータを、ログデータ分割記憶部１０２から読み出す。
【０１２８】
読出ハッシュ値算出部１０６は、分割ログデータ読出部１０５により読み出された分割ログデータからハッシュ関数を用いてハッシュ値を算出する。なお、ここで用いられるハッシュ関数は、ハッシュ値記憶部１０３に記憶されているハッシュ値の算出に用いられたハッシュ関数である。
【０１２９】
ハッシュ値一致判別部１０７は、ハッシュ値読出部１０４により読み出されたハッシュ値と、読出ハッシュ値算出部１０６により算出されたハッシュ値と、が一致するか否かを判別する。ログデータ分割記憶部１０２に記憶されている分割ログデータが改ざんされている場合には、改ざん前のデータから算出されるハッシュ値と、改ざん後のデータから算出されるハッシュ値と、は異なるため、改ざんを検知することができる。
【０１３０】
分割ログデータ含有判別部１０８は、ハッシュ値一致判別部１０７によりハッシュ値が一致すると判別されたときに、分割ログデータ読出部１０５により読み出された分割ログデータが、ログデータ時系列記憶部１０１に記憶されているログデータに含まれているか否かを判別する。具体的には、分割ログデータ含有判別部１０８は、分割ログデータ読出部１０５により読み出された分割ログデータのデータ列が、ログデータ時系列記憶部１０１に記憶されているログデータのデータ列の一部であるか否かを判別する。
【０１３１】
ログデータ改ざん情報出力部１０９は、分割ログデータ含有判別部１０８により分割ログデータがログデータ時系列記憶部１０１に記憶されているデータに含まれていないと判別されたときに、ログデータ時系列記憶部１０１に記憶されているログデータが改ざんされていることを示す情報を出力する。具体的には、ログデータ改ざん情報出力部１０９は、ログデータが改ざんされていることを示す情報を、例えば、出力部４２に出力し、その情報をディスプレイ等に表示させる。
【０１３２】
なお、上記のハッシュ値読出部１０４、分割ログデータ読出部１０５、読出ハッシュ値算出部１０６、ハッシュ値一致判別部１０７、分割ログデータ含有判別部１０８、及びログデータ改ざん情報出力部１０９の機能は、制御部４６により実現される。
【０１３３】
以上説明した第３の実施の形態に係るログ改ざん検知装置１００よれば、ログデータ時系列記憶部１０１に記憶されるログデータ自体に改ざん検知用の処理を施すことなく、ログデータ時系列記憶部１０１に記憶されているログデータの改ざんを簡単に検知することができる。
【０１３４】
［第４の実施の形態］
次に、上記第３の実施の形態に係るログ改ざん検知装置１００に、更に、機能を付加した場合を、第４の実施の形態として説明する。
【０１３５】
図１３は、本発明の第４の実施の形態に係るログ改ざん検知装置１００の機能的な構成を示すブロック図である。
なお、図１３において、図１２に示した第３の実施の形態に係るログ改ざん検知装置と同一の構成要素には同一の符号付し、重複を避けるためにその説明を省略する。
【０１３６】
第４の実施の形態に係るログ改ざん検知装置１００は、ログデータ時系列記憶部１０１と、ログデータ分割記憶部１０２と、ハッシュ値記憶部１０３と、ログ読出処理部２００と、ログ記録処理部３００と、並列処理制御部４００と、を備える。
【０１３７】
ログ読出処理部２００は、ログデータを読み出してその改ざんを検知するための処理部である。ログ読出処理部２００は、図１２に示したハッシュ値読出部１０４と、分割ログデータ読出部１０５と、読出ハッシュ値算出部１０６と、ハッシュ値一致判別部１０７と、分割ログデータ含有判別部１０８と、ログデータ改ざん情報出力部１０９と、に加えて、更に、分割ログデータ改ざん情報出力部２０１を備える。
【０１３８】
分割ログデータ改ざん情報出力部２０１は、ハッシュ値一致判別部１０７によりハッシュ値が一致しないと判別されたときに、分割ログデータ読出部１０５によりログデータ分割記憶部１０２から読み出された分割ログデータが改ざんされていることを示す情報を出力する。具体的には、分割ログデータ改ざん情報出力部２０１は、分割ログデータが改ざんされていることを示す情報を、例えば、出力部４２に出力し、その情報をディスプレイ等に表示させる。
【０１３９】
このように、ログ読出処理部２００に、分割ログデータ改ざん情報出力部２０１を加えることにより、ログデータ時系列記憶部１０１に記憶されているログデータが改ざんされている場合だけでなく、ログデータ分割記憶部１０２に記憶されている分割ログデータが改ざんされている場合も、その旨をログ管理者等に報知することができる。
【０１４０】
ログ記録処理部３００は、ログデータを記録するための処理部である。ログ記録処理部３００は、ログデータ取得部３０１と、ログデータ時系列記録制御部３０２と、分割タイミング指示部３０３と、ログデータ分割記録制御部３０４と、記録ハッシュ値算出部３０５と、ハッシュ値記録制御部３０６と、を備える。
【０１４１】
ログデータ取得部３０１は、ログデータを時系列に取得する。なお、ログデータ取得部３０１が取得するログデータは、ログ改ざん検知装置１００が内部で生成するものであっても、他の装置が出力するものであっても良い。
【０１４２】
ログデータ時系列記録制御部３０２は、ログデータ取得部３０１により取得されたログデータをログデータ時系列記憶部１０１に記録する。
分割タイミング指示部３０３は、ログデータを分割するタイミングを指示する。ログデータを分割するタイミングは、例えば、チェック用ログ保存エリア３２に保存されるチェック用ログファイルをローテーションするタイミングである。
【０１４３】
ログデータ分割記録制御部３０４は、ログデータ取得部３０１により取得されたログデータを分割タイミング指示部３０３により指示されたタイミングで区切って得た分割ログデータをログデータ分割記憶部１０２に記録する。
【０１４４】
記録ハッシュ値算出部３０５は、ログデータ分割記録制御部３０４によりログデータ分割記憶部１０２に記録される分割ログデータからハッシュ関数を用いてハッシュ値を算出する。具体的には、記録ハッシュ値算出部３０５は、まず、分割ログデータを取得する。この際、記録ハッシュ値算出部３０５は、例えば、ログデータ分割記録制御部３０４と同じように、ログデータ取得部３０１により取得されたログデータと分割タイミング指示部３０３により指示されたタイミングとに基づき分割ログデータを取得する。なお、記録ハッシュ値算出部３０５は、分割ログデータをログデータ分割記録制御部３０４から取得するようにしても良い。また、ここで用いられるハッシュ関数は、読出ハッシュ値算出部１０６がハッシュ値の算出に用いるハッシュ関数と同じハッシュ関数である。
【０１４５】
ハッシュ値記録制御部３０６は、記録ハッシュ値算出部３０５により算出されたハッシュ値をハッシュ値記憶部１０３に記録する。
以上のような構成のログ記録処理部３００により、ログデータが記録されていくと共に、ログ読出処理部２００がログデータの改ざんを検知するために使用する分割ログデータ毎のハッシュ値が、ハッシュ値記憶部１０３に順次追加して記録されていく。
【０１４６】
一方、ログ読出処理部２００のハッシュ値読出部１０４は、ハッシュ値順次読出部２０２を有する。このハッシュ値順次読出部２０２は、ハッシュ値記憶部１０３に記憶されているハッシュ値を、ハッシュ値記憶部１０３から順次読み出す。
【０１４７】
並列処理制御部４００は、ログ記録処理部３００とログ読出処理部２００とを並列処理させる。これにより、具体的には、ハッシュ値記録制御部３０６により実行されるハッシュ値記憶部１０３への記録処理とハッシュ値順次読出部２０２により実行されるハッシュ値記憶部１０３からの読出処理とが、並列処理される。
従って、本実施の形態によれば、ログデータを記録しながら、記録済みのログデータの改ざんを迅速に検知することができる。
【０１４８】
また、ハッシュ値順次読出部２０２は、ハッシュ値記憶部１０３から、すべてのハッシュ値を順次読み出し、すべてのハッシュ値を読み出し終えると、すべてのハッシュ値を順次読み出すことを繰り返す。
従って、本実施の形態によれば、改ざん検知処理が実行済みのログデータに対して、改ざんが行われた場合であっても、繰り返しの改ざん検知処理によって、その改ざんを早急に検知することができる。
【０１４９】
なお、上記のログ読出処理部２００、ログ記録処理部３００、及び並列処理制御部４００の機能は、制御部４６により実現される。
【０１５０】
次に、ログ改ざん検知装置１００が、ログデータを分割するタイミングでログ改ざん検知処理を行う機能を、図１４及び図１５を用いて説明する。
図１４は、ログデータ分割記憶部１０２に記録されるログデータが分割されるタイミングでログ改ざん検知処理を行うログ改ざん検知装置１００の要部の機能的な構成を示すブロック図である。
図１５は、ログデータ時系列記憶部１０１に記録されるログデータが分割されるタイミングでログ改ざん検知処理を行うログ改ざん検知装置１００の要部の機能的な構成を示すブロック図である。
【０１５１】
まず、ログデータ分割記憶部１０２に記録されるログデータが分割されるタイミングでログ改ざん検知処理を行う場合には、図１４に示すように、図１３に示したログデータ分割記録制御部３０４は、取得ログデータ記録部５０１と、記録ログデータ分割部５０２と、分割ログデータ記録部５０３と、を有する。
【０１５２】
取得ログデータ記録部５０１は、ログデータ取得部３０１により取得されたログデータをログデータ分割記憶部１０２に記録する。
記録ログデータ分割部５０２は、取得ログデータ記録部５０１により記録されたログデータを、分割タイミング指示部３０３により指示されるタイミングで区切って、分割ログデータに分割する。
分割ログデータ記録部５０３は、取得ログデータ記録部５０１により記録されたログデータを、記録ログデータ分割部５０２による分割で得られた分割ログデータに分けて、ログデータ分割記憶部１０２に記録する。
【０１５３】
また、図１３に示した記録ハッシュ値算出部３０５は、ログデータ一時記憶部５０４と、一時ログデータ取出部５０５と、一時記録ハッシュ値算出部５０６と、を有する。
【０１５４】
ログデータ一時記憶部５０４は、ログデータ取得部３０１により取得されたログデータを一時的に記憶する。具体的には、ログデータ一時記憶部５０４は、例えば、ＲＡＭ５３内のバッファ１５（図３参照）である。
【０１５５】
一時ログデータ取出部５０５は、記録ログデータ分割部５０２によりログデータが分割されたタイミングで、ログデータ一時記憶部５０４から、一時的に記憶されているログデータを取り出す。具体的には、一時ログデータ取出部５０５は、分割タイミング指示部３０３により指示されるタイミングを得ることによって、記録ログデータ分割部５０２によりログデータが分割されるタイミングを得る。
【０１５６】
一時記録ハッシュ値算出部５０６は、一時ログデータ取出部５０５により取り出されたログデータを分割ログデータとして、その分割ログデータからハッシュ関数を用いてハッシュ値を算出する。なお、ここで用いられるハッシュ関数は、読出ハッシュ値算出部１０６がハッシュ値の算出に用いるハッシュ関数と同じハッシュ関数である。
【０１５７】
ログ改ざん検知装置１００は、図１３に示した構成要素以外に、更に、分割指示ハッシュ値算出部５０７と、分割指示ハッシュ値一致判別部５０８と、分割指示ログデータ改ざん情報出力部５０９と、を備える。
【０１５８】
分割指示ハッシュ値算出部５０７は、記録ログデータ分割部５０２による分割で得られた分割ログデータからハッシュ関数を用いてハッシュ値を算出する。なお、ここで用いられるハッシュ関数は、一時記録ハッシュ値算出部５０６がハッシュ値の算出に用いるハッシュ関数と同じハッシュ関数である。
【０１５９】
分割指示ハッシュ値一致判別部５０８は、分割指示ハッシュ値算出部５０７により算出されたハッシュ値と、一時記録ハッシュ値算出部５０６により算出されたハッシュ値と、が一致するか否かを判別する。
【０１６０】
分割指示ログデータ改ざん情報出力部５０９は、分割指示ハッシュ値一致判別部５０８によりハッシュ値が一致しないと判別されたときに、記録ログデータ分割部５０２による分割で得られた分割ログデータが改ざんされていることを示す情報を出力する。
【０１６１】
次に、図１５を参照して、ログデータ時系列記憶部１０１に記録されるログデータが分割されるタイミングでログ改ざん検知処理を行う場合を説明する。
図１５に示すように、ログ改ざん検知装置１００は、図１３に示した構成要素以外に、更に、大分割ログデータ取得部６０１と、大分割用ハッシュ値読出部６０２と、大分割用分割ログデータ読出部６０３と、大分割用読出ハッシュ値算出部６０４と、大分割用ハッシュ値一致判別部６０５と、結合ログデータハッシュ値算出部６０６と、大分割ログデータハッシュ値算出部６０７と、大分割ログデータハッシュ値一致判別部６０８と、大分割ログデータ改ざん情報出力部６０９と、を備える。
【０１６２】
大分割ログデータ取得部６０１は、分割タイミング指示３０３により指示される複数のタイミングの中の１のタイミングでログデータ時系列記憶部１０１に記憶されているログデータを分割した大分割ログデータを取得する。大分割ログデータは、例えば、閲覧用ログファイルである。また、分割タイミング指示３０３により指示される複数のタイミングの中の１のタイミングは、例えば、閲覧用ログファイルがローテーションされるタイミングである。
【０１６３】
大分割用ハッシュ値読出部６０２は、大分割ログデータ取得部６０１により大分割ログデータが取得されたときに、ハッシュ値記憶部１０３から、すべてのハッシュ値を読み出す。
【０１６４】
大分割用分割ログデータ読出部６０３は、大分割用ハッシュ値読出部６０２により読み出されたハッシュ値毎に、そのハッシュ値が算出された元の分割ログデータを、ログデータ分割記憶部１０２から読み出す。
【０１６５】
大分割用読出ハッシュ値算出部６０４は、大分割用分割ログデータ読出部６０３により読み出された分割ログデータ毎に、その分割ログデータからハッシュ関数を用いてハッシュ値を算出する。なお、ここで用いられるハッシュ関数は、ハッシュ値記憶部１０３に記憶されているハッシュ値の算出に用いられたハッシュ関数である。
【０１６６】
大分割用ハッシュ値一致判別部６０５は、分割ログデータ毎に、大分割用ハッシュ値読出部６０２により読み出されたハッシュ値と、大分割用読出ハッシュ値算出部６０４により算出されたハッシュ値と、が一致するか否かを判別する。
【０１６７】
結合ログデータハッシュ値算出部６０６は、大分割用ハッシュ値一致判別部６０５により分割ログデータ毎にハッシュ値がすべて一致すると判別されたときに、大分割用分割ログデータ読出部６０３により読み出されたすべての分割ログデータを分割された順に結合し、その結合したログデータからハッシュ関数を用いてハッシュ値を算出する。
【０１６８】
大分割ログデータハッシュ値算出部６０７は、大分割ログデータ取得部６０１により取得された大分割ログデータからハッシュ関数を用いてハッシュ値を算出する。なお、ここで用いられるハッシュ関数は、結合ログデータハッシュ値算出部６０６がハッシュ値の算出に用いるハッシュ関数と同じハッシュ関数である。
【０１６９】
大分割ログデータハッシュ値一致判別部６０８は、結合ログデータハッシュ値算出部６０６により算出されたハッシュ値と、大分割ログデータハッシュ値算出部６０７により算出されたハッシュ値と、が一致するか否かを判別する。
【０１７０】
大分割ログデータ改ざん情報出力部６０９は、大分割ログデータハッシュ値一致判別部６０８によりハッシュ値が一致しないと判別されたときに、大分割ログデータ取得部６０１により取得された大分割ログデータが変更されていることを示す情報を出力する。
【０１７１】
以上説明した第４の実施の形態に係るログ改ざん検知装置１００においては、図１３のログ読出処理部２００により、ログ改ざん検知アプリケーション１における図７の並列ログ改ざん検知処理が実行される。また、図１３のログ記録処理部３００により、図４のログ情報受付処理と図５のログ情報出力処理とが実行される。
【０１７２】
更に、図１４に示したログ改ざん検知装置１００の構成により、ログ改ざん検知アプリケーション１における図９のチェック用ログファイルローテーション時ログ改ざん検知処理が実行される。また、図１５に示したログ改ざん検知装置１００の構成により、ログ改ざん検知アプリケーション１における図１０及び図１１の閲覧用ログファイルローテーション時ログ改ざん検知処理が実行される。
【０１７３】
以上、本発明の実施の形態を説明したが、本発明を実施するにあたっては、種々の形態による変形及び応用が可能であり、上記実施の形態に限られるものではない。
【０１７４】
また、上記実施の形態の説明に用いたブロック図、フローチャート、画面図等は、本発明の趣旨を逸脱しない範囲で適宜変更しても良い。
例えば、上記実施の形態では、一定の時間が経過したときにログファイルのローテーションを行う場合を説明しているが、ログファイルが一定のデータサイズになったときに、ローテーションを行うようにしても良い。
【０１７５】
また、上記実施の形態では、ログ改ざんの検知に、ログデータにハッシュ関数を適用して算出したハッシュ値を用いている。しかしながら、ログデータに、ハッシュ関数以外の他の要約関数を適用して要約を生成し、その要約を用いてログ改ざんの検知を行っても良い。
【０１７６】
また、上記実施の形態では、本発明を、ログデータの改ざんを検知する場合に適用している。しかしながら、データはログデータ以外であっても良く、本発明を、例えば、時系列に出力されるデータの改ざん、削除、追加等の様々な変更を検知する場合に適用しても良い。
【０１７７】
また、上記実施の形態に係るログ改ざん検知装置１００により実行される機能は、ソフトウェアに限らず、専用のハードウェアによって実現することもできる。また、ログ改ざん検知装置１００を、通常のコンピュータシステムによって実現することもできる。
【０１７８】
例えば、上記実施の形態では、ログ改ざん検知装置１００において、動作プログラムがＲＯＭ等に予め記憶されているものとして説明した。しかし、上述の処理動作を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto-Optical disk）等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、上述の処理動作を実行する装置を構成しても良い。
【０１７９】
また、プログラムをインターネット等の通信ネットワーク上の所定のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するようにしても良い。更に、通信ネットワークを介してプログラムを転送しながら起動実行することによっても、上述の処理を達成することができる。
また、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合等には、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等しても良い。
【０１８０】
［その他の実施の形態］
上記実施の形態で、バッファを使用したログの不正改ざんを検知する方法を示した。ここでは、上記実施の形態における方法の機能拡張について述べる。以下の機能を追加・拡張することで、更に、上記実施の形態で示した方法を強化できる。
【０１８１】
（ディレイ（遅延）処理）
上記実施の形態で示した方法は、定期チェックを短期間に実施することにより迅速に不正改ざんを検知することにフォーカスしてきた。ここでは、逆の発想で、チェック用ログの出力タイミングを遅くすることで、上記実施の形態で示した方法をより強化できる。
【０１８２】
図１６は、ディレイ処理を適用したログ改ざん検知アプリケーションの実装例を示す図である。
通常、不正侵入者の心理として、侵入後はツール等を使用し目的の行為（情報の不正取得や改ざん）を早急に済ませ、１分でも早くログアウトしたいと考える。図１６に示すディレイ処理を行うことによって、アプリケーションから出力されるログ情報を遅延させることで、以下のメリットがある。
【０１８３】
１．不正侵入者が、ログ情報が遅延することを知らない場合
仮に、上記実施の形態で示した方法でも保護できない改ざん方法があった場合でも、不正侵入者がログアウトした後で、ログ情報が出力されるため、不正行為を検知できる。
２．不正侵入者が、ログ情報が遅延することを知っている場合
仮に、不正侵入者がログ情報が遅延して出力されることを知っていた場合であっても、ログ情報が出力されるまで不正侵入者をシステム内に拘束することが可能になる。
【０１８４】
（バースト・トラフィック対応処理）
突発的にログ情報が大量に出力される現象（バースト・トラフィック）が発生した場合、上記実施の形態では、異常時の対応については特に示していない為、想定外の動作をする可能性（プロセスの停止やハングなど）がある。
このような事象が発生した場合の対処方法として、ハッシュ値の算出や改ざんチェックを一時的に停止し、ログ情報の採取だけを行う。
【０１８５】
図１７は、バースト・トラフィック対応処理を適用したログ改ざん検知アプリケーションの実装例を示す図である。
図１７に示すバースト・トラフィック対応処理を行うことによって、動作する機能を縮小することで、リソース枯渇によるシステムの性能低下を防ぐことが可能となる。ただし、Ｉ／Ｏ処理が追いつかないほどのトラフィックの場合は、従来からも対処不可能である。仮に対応する為には、大量のキャッシュを搭載したストレージ等が必要になる。
【図面の簡単な説明】
【０１８６】
【図１】本発明の第１の実施の形態に係るログ改ざん検知アプリケーションがコンピュータシステムに実装されている様子を示す図である。
【図２】コンピュータシステムの一般的な構成を概略的に示すブロック図である。
【図３】ログ改ざん検知アプリケーションの機能を概略的を示すブロック図である。
【図４】本発明の第１の実施の形態におけるログ情報受付処理の手順の一例を示すフローチャートである。
【図５】本発明の第１の実施の形態におけるログ情報出力処理の手順の一例を示すフローチャートである。
【図６】チェック用ログ保存エリア、ハッシュ値保存テーブル、及び閲覧用ログ保存エリアのそれぞれのデータ構成例を示す図である。
【図７】本発明の第１の実施の形態における並列ログ改ざん検知処理の手順の一例を示すフローチャートである。
【図８】本発明の第２の実施の形態におけるログ情報出力処理の手順の一例を示すフローチャートである。
【図９】チェック用ログファイルローテーション時ログ改ざん検知処理の手順の一例を示すフローチャートである。
【図１０】閲覧用ログファイルローテーション時ログ改ざん検知処理の手順の一例を示すフローチャートである。
【図１１】閲覧用ログファイルローテーション時ログ改ざん検知処理の手順の一例を示すフローチャートである。
【図１２】本発明の第３の実施の形態に係るログ改ざん検知装置の機能的な構成を概略的に示すブロック図である。
【図１３】本発明の第４の実施の形態に係るログ改ざん検知装置の機能的な構成を示すブロック図である。
【図１４】ログデータ分割記憶部に記録されるログデータが分割されるタイミングでログ改ざん検知処理を行うログ改ざん検知装置の要部の機能的な構成を示すブロック図である。
【図１５】ログデータ時系列記憶部に記録されるログデータが分割されるタイミングでログ改ざん検知処理を行うログ改ざん検知装置の要部の機能的な構成を示すブロック図である。
【図１６】本発明の他の実施の形態におけるディレイ処理を適用したログ改ざん検知アプリケーションの実装例を示す図である。
【図１７】本発明の他の実施の形態におけるバースト・トラフィック対応処理を適用したログ改ざん検知アプリケーションの実装例を示す図である。
【符号の説明】
【０１８７】
１  ログ改ざん検知アプリケーション
２  ログ出力アプリケーション
３  ログ記憶部
１１  ログ情報受付処理部
１２  ログ情報出力処理部
１３  ログ改ざん検知処理部
１４  ログ改ざん検知用メモリ
１５  バッファ
１６  ハッシュ値保存テーブル
３１  閲覧用ログ保存エリア
３２  チェック用ログ保存エリア
４１  入力部
４２  出力部
４３  通信部
４４  計時部
４５  記憶部
４６  制御部
４７  バス
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
１００  ログ改ざん検知装置
１０１  ログデータ時系列記憶部
１０２  ログデータ分割記憶部
１０３  ハッシュ値記憶部
１０４  ハッシュ値読出部
１０５  分割ログデータ読出部
１０６  読出ハッシュ値算出部
１０７  ハッシュ値一致判別部
１０８  分割ログデータ含有判別部
１０９  ログデータ改ざん情報出力部
２００  ログ読出処理部
２０１  分割ログデータ改ざん情報出力部
２０２  ハッシュ値順次読出部
３００  ログ記録処理部
３０１  ログデータ取得部
３０２  ログデータ時系列記録制御部
３０３  分割タイミング指示部
３０４  ログデータ分割記録制御部
３０５  記録ハッシュ値算出部
３０６  ハッシュ値記録制御部
４００  並列処理制御部
５０１  取得ログデータ記録部
５０２  記録ログデータ分割部
５０３  分割ログデータ記録部
５０４  ログデータ一時記憶部
５０５  一時ログデータ取出部
５０６  一時記録ハッシュ値算出部
５０７  分割指示ハッシュ値算出部
５０８  分割指示ハッシュ値一致判別部
５０９  分割指示ログデータ改ざん情報出力部
６０１  大分割ログデータ取得部
６０２  大分割用ハッシュ値読出部
６０３  大分割用分割ログデータ読出部
６０４  大分割用読出ハッシュ値算出部
６０５  大分割用ハッシュ値一致判別部
６０６  結合ログデータハッシュ値算出部
６０７  大分割ログデータハッシュ値算出部
６０８  大分割ログデータハッシュ値一致判別部
６０９  大分割ログデータ改ざん情報主力部
【図１】
0005045489.tif 000002
【図２】
0005045489.tif 000003
【図３】
0005045489.tif 000004
【図４】
0005045489.tif 000005
【図５】
0005045489.tif 000006
【図６】
0005045489.tif 000007
【図７】
0005045489.tif 000008
【図８】
0005045489.tif 000009
【図９】
0005045489.tif 000010
【図１０】
0005045489.tif 000011
【図１１】
0005045489.tif 000012
【図１２】
0005045489.tif 000013
【図１３】
0005045489.tif 000014
【図１４】
0005045489.tif 000015
【図１５】
0005045489.tif 000016
【図１６】
0005045489.tif 000017
【図１７】
0005045489.tif 000018