(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた管理計算機にて実施するデータの署名生成方法であって、
前記管理計算機が、計算機から第１のデータＭｎを受信する第１のステップと、
前記管理計算機が、当該管理計算機の記憶部で時系列に記憶されている、過去に発生した複数の第１のデータＭｎのそれぞれを含む複数の第２のデータＳｉから、所定の時系列の間隔で複数の第２のデータＳｉを選択する第２のステップと、
前記管理計算機が、前記選択した複数の第２のデータＳｉのそれぞれについて、ハッシュ値を演算する第３のステップと、
前記管理計算機が、前記計算機から受信した第１のデータＭｎと、前記選択した複数の第２のデータＳｉのハッシュ値と、を合わせて署名対象データを生成する第４のステップと、
前記管理計算機が、前記署名対象データに対して予め設定された鍵でデジタル署名を付与して第２のデータＳｎを生成し、前記生成した第２のデータＳｎを順次時系列順で前記記憶部に保持する第５のステップと、
を含み、
前記第２のステップは、
前記管理計算機が、時系列上の所定の間隔で１以上の第２のデータＳｉを選択する際に、１個前および初項Ｎ、公比２、の等比数列である一般項ｎ×２＾（ｐ−１）の個数前の第２のデータＳｎから選択することを特徴とするデータの署名生成方法。
【請求項２】
請求項１に記載のデータの署名生成方法であって、
前記第３のステップは、
前記管理計算機が、複数の第２のデータＳｉのハッシュ値をそれぞれ演算する代わりに、演算対象の第２のデータＳｉのハッシュ値を含む他の第２のデータＳｎを前記記憶部から取得し、当該取得した第２のデータＳｎから演算対象の第２のデータＳｉのハッシュ値を複製して取得する事を特徴とするデータの署名生成方法。
【請求項３】
プロセッサとメモリを備えた管理計算機にて実施するデータの署名検証方法であって、
前記管理計算機は、計算機から受信した第１のデータと当該管理計算機の記憶部に保持されている第２のデータから取得した１以上の第２のデータＳｉのハッシュ値と、を合わせたデータに対して予め設定された鍵でデジタル署名を付与して第２のデータＳｎを生成し、前記生成した第２のデータＳｎを前記記憶部へ時系列順に保持し、
前記署名検証方法は、
前記管理計算機が、検証対象の第２のデータＳｉを受け付ける第６のステップと、
前記管理計算機が、前記記憶部で時系列順に保持されている、過去に生成された前記第１のデータのそれぞれを含む複数の第２のデータＳｎから、前記第２のデータＳｉのハッシュ値を含む第２のデータＳｍを選択する第７のステップと、
前記管理計算機が、前記選択した第２のデータＳｍを検証する第８のステップと、
前記管理計算機が、前記記憶部に保持されている前記第２のデータＳｉのハッシュ値を演算し、当該演算したハッシュ値と、前記第２のデータＳｍに含まれる前記第２のデータＳｉのハッシュ値とに基づき、前記記憶部に保持されている前記第２のデータＳｉを検証する第９のステップと、
を含み、
前記第７のステップは、
前記第２のデータＳｍを選択する際に、複数の単独で検証可能な第２のデータＳｍのうち、前記複数のハッシュチェーンを間欠的に辿る回数が最小になる前記単独で検証可能な第２のデータＳｍを選択し、
前記第８のステップは、
前記検証対象の第２のデータＳｉから、単独で検証可能な第２のデータＳｍまでを、順次検証する際に、第２のデータＳｉから演算したハッシュ値と、当該ハッシュ値を含む第２のデータＳｍとが一致しなかった場合、または、第２のデータＳｍが存在しない場合に、当該ハッシュ値を含む他の第２のデータＳｍを前記記憶部から取得して比較対象とし、検証を続行することを特徴とするデータの署名検証方法。
【請求項４】
プロセッサとメモリを備えた管理計算機であって、
計算機から受信した第１のデータＭｎと、前記管理計算機の記憶部に保持されている第２のデータＳｎから取得した１以上の第２のデータＳｉのハッシュ値と、を合わせたデータに対してあらかじめ設定された鍵でデジタル署名を付与して第２のデータＳｎを生成し、前記生成した第２のデータＳｎを記憶部に保持する署名生成処理を行う制御部を有し、
前記署名生成処理は、
計算機から第１のデータＭｎ（ｎは自然数）を受信し、
当該管理計算機の記憶部で時系列に記憶されている、過去に発生した複数の第１のデータＭｎのそれぞれを含む複数の第２のデータＳｉから、所定の時系列の間隔で複数の第２のデータＳｉを選択し、
前記該選択した複数の第２のデータＳｉのそれぞれについて、ハッシュ値を演算し、
前記計算機から受信した第１のデータＭｎと、前記選択した複数の第２のデータＳｉのハッシュ値と、を合わせて署名対象データを生成し、
前記署名対象データに対して予め設定された鍵でデジタル署名を付与して第２のデータＳｎを生成し、前記生成した第２のデータＳｎを順次時系列順で前記記憶部に保持し、
時系列上の所定の間隔で１以上の第２のデータＳｉを選択する際に、１個前および初項Ｎ、公比２、の等比数列である一般項ｎ×２＾（ｐ−１）の個数前の第２のデータＳｉから選択することを特徴とする管理計算機。
【請求項５】
請求項４に記載の管理計算機であって、
前記管理計算機は、
複数の第２のデータＳｉのハッシュ値をそれぞれ演算する代わりに、演算対象の第２のデータＳｉのハッシュ値を含む他の第２のデータＳｎを前記記憶部から取得し、当該取得した第２のデータＳｎから演算対象の第２のデータＳｉのハッシュ値を複製して取得する事を特徴とする管理計算機。
【請求項６】
プロセッサとメモリを備えた管理計算機であって、
前記管理計算機の記憶部に保持された複数の第２のデータＳｎと検証対象の第２のデータＳｉをもとに、複数のハッシュチェーンを間欠的に辿って真正性の検証を行う署名検証処理を行う制御部を有し、
前記署名検証処理は、
前記検証対象の第２のデータＳｉを受け付け、
前記記憶部で時系列順に保持されている、過去に生成された第１のデータのそれぞれを含む複数の第２のデータＳｎから、前記第２のデータＳｉのハッシュ値を含む第２のデータＳｍを選択し、
前記選択した第２のデータＳｍを検証し、
前記記憶部に保持されている前記第２のデータＳｉのハッシュ値を演算し、当該演算したハッシュ値と、前記第２のデータＳｍに含まれる前記第２のデータＳｉのハッシュ値とに基づき、前記記憶部に保持されている前記第２のデータＳｉを検証し、
前記検証対象の第２のデータＳｎから、単独で検証可能な第２のデータＳｍまでを、順次検証する際に、第２のデータＳｉから演算したハッシュ値と、当該ハッシュ値を含む第２のデータＳｍとが一致しなかった場合、または、第２のデータＳｍが存在しない場合に、当該ハッシュ値を含む他の第２のデータＳｍを前記記憶部から取得して比較対象とし、検証を続行し、
前記単独で検証可能な第２のデータＳｍを選択する際に、複数の単独で検証可能な第２のデータＳｍのうち、前記複数のハッシュチェーンを間欠的に辿る回数が最小になる前記単独で検証可能な第２のデータＳｍを選択することを特徴とする管理計算機。
【発明の詳細な説明】
【参照による取り込み】
【０００１】
本出願は、平成２３年（２０１１年）１０月１４日に出願された日本特許出願特願２０１１−２２７３０８の優先権を主張し、その内容を参照することにより、本出願に取り込む。
【技術分野】
【０００２】
本発明は、大量かつ随時発生すログデータまたはデータの真正性を長期間保証するためのデジタル署名技術に関する。
【背景技術】
【０００３】
政府で検討が進められている国民ＩＤにおける連係情報の記録、金融システムの取引データ、医療情報の利活用に係るアクセス履歴の保存など、大量かつ随時発生するログデータの真正性を長期間保証する技術が注目されつつある。
【０００４】
電子的なデータの真正性を保証するための技術としてはデジタル署名があるが、デジタル署名は３〜５年で有効期限が切れてしまうことが長期間保存する事を目的としたときの課題であった。これを解決するための手法として、全てのデータの署名時に、１個前の署名済みデータが改ざんされていないことを確認してからハッシュ値を計算し、署名対象データと合わせて署名する方法が行なわれている。これにより、全てのデータが１個前の署名済みデータのハッシュ値を含むハッシュチェーンを構成する。ハッシュチェーンを構成することで、過去の署名と最新の署名をハッシュ値でつなげることができ、過去に行なった署名を最新の署名で保証することができる。つまり、署名の有効期限が切れた場合でも、有効期限が切れていない署名によって保証されているデータ（以下、「トラストポイント」と称する）からハッシュチェーンをたどる事で、過去のデータの真正性を保証する事ができる。すなわちハッシュチェーンをたどるとは、検証済みデータに含まれる１個前の署名済みデータのハッシュ値と１個前の署名済みデータから計算したハッシュ値を比較することで、１個前の署名済みデータが改ざんされていないことを検証する作業をハッシュチェーンを構成する署名済みデータで繰り返す事を言う。
【０００５】
しかし、大量のログデータの真正性を長期間担保することを目的としたとき、全てのログデータに対して署名を付与すると計算機の負荷が増大する。また、あるログデータが改ざんされた場合にそれ以前のログデータの真正性が保証されなくなる。さらに、特定のログデータの真正性を検証したい場合にトラストポイント（署名が有効期限内のログデータ）から特定のログデータまでの全てのハッシュチェーンをひとつずつ確認しなければならず計算機の負荷が増大するという課題がある。
【０００６】
これらの課題を解決するために特許文献１ではハッシュチェーンを構成するデータに対する署名を、複数個に１回とすることで、署名回数を低減し、計算機の負荷を低減する手法を開示している。このとき、１個前のデータが改ざんされていないことを保証する方法として、１個前のデータのハッシュ値を耐タンパー装置に保存する方法を開示している。つまり、耐タンパー装置に保存されているハッシュ値と１個前のデータから計算したハッシュ値を比較して検証することで、１個前のデータが改ざんされていないことを確認できる。
【０００７】
また、あるデータが改ざんされた場合におけるそれ以前のログデータの真正性の保証については、複数のログデータのハッシュ値を合わせ、合わせたハッシュ値のハッシュ値を取る事でハッシュ値をツリー状の階層構造にし、ツリーの下部が改ざんされた場合に改ざんの影響範囲を特定範囲に限定する方法が開示されている。
【０００８】
政府で検討が進められている国民ＩＤにおける連係情報の記録、金融システムの取引データ、医療情報の利活用に係るアクセス履歴の保存など、大量かつ随時発生するログデータの真正性を長期間保証する技術が注目されつつある。
【０００９】
電子的なデータの真正性を保証するための技術としてはデジタル署名があるが、デジタル署名は３〜５年で有効期限が切れてしまうことが長期間保存する事を目的としたときの課題であった。これを解決するための手法として、全てのデータの署名時に、１個前の署名済みデータが改ざんされていないことを確認してからハッシュ値を計算し、署名対象データと合わせて署名する方法が行なわれている。これにより、全てのデータが１個前の署名済みデータのハッシュ値を含むハッシュチェーンを構成する。ハッシュチェーンを構成することで、過去の署名と最新の署名をハッシュ値でつなげることができ、過去に行なった署名を最新の署名で保証することができる。つまり、署名の有効期限が切れた場合でも、有効期限が切れていない署名によって保証されているデータ（以下、「トラストポイント」と称する）からハッシュチェーンをたどる事で、過去のデータの真正性を保証する事ができる。すなわちハッシュチェーンをたどるとは、検証済みデータに含まれる１個前の署名済みデータのハッシュ値と１個前の署名済みデータから計算したハッシュ値を比較することで、１個前の署名済みデータが改ざんされていないことを検証する作業をハッシュチェーンを構成する署名済みデータで繰り返す事を言う。
【００１０】
しかし、大量のログデータの真正性を長期間担保することを目的としたとき、全てのログデータに対して署名を付与すると計算機の負荷が増大する。また、あるログデータが改ざんされた場合にそれ以前のログデータの真正性が保証されなくなる。さらに、特定のログデータの真正性を検証したい場合にトラストポイント（署名が有効期限内のログデータ）から特定のログデータまでの全てのハッシュチェーンをひとつずつ確認しなければならず計算機の負荷が増大するという課題がある。
【００１１】
これらの課題を解決するために特許文献１ではハッシュチェーンを構成するデータに対する署名を、複数個に１回とすることで、署名回数を低減し、計算機の負荷を低減する手法を開示している。このとき、１個前のデータが改ざんされていないことを保証する方法として、１個前のデータのハッシュ値を耐タンパー装置に保存する方法を開示している。つまり、耐タンパー装置に保存されているハッシュ値と１個前のデータから計算したハッシュ値を比較して検証することで、１個前のデータが改ざんされていないことを確認できる。
【００１２】
また、あるデータが改ざんされた場合におけるそれ以前のログデータの真正性の保証については、複数のログデータのハッシュ値を合わせ、合わせたハッシュ値のハッシュ値を取る事でハッシュ値をツリー状の階層構造にし、ツリーの下部が改ざんされた場合に改ざんの影響範囲を特定範囲に限定する方法が開示されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第ＷＯ２００８／０２６２３８号
【発明の概要】
【発明が解決しようとする課題】
【００１４】
前記特許文献１では、ハッシュツリー構造を作ることで改ざんの影響範囲を特定範囲として限定することが開示されている。しかし、あるノードの真正性をそのノードの上位ノードによって担保する構造を取っているため、最上位ノードに相当するハッシュ値が改ざんされた場合に、ハッシュツリー全体の真正性が失われるという脆弱性がある。このため、あるデータが改ざんされた場合でもハッシュチェーンの真正性を保つという課題は限定的にしか解決されていない。
【００１５】
また、前記、ハッシュツリー構造を生成する際に、複数のログデータのハッシュ値を合わせてからハッシュ値を生成することが開示されているが、当該複数のハッシュ値が改ざんされていない事を担保する方法については開示されていない。例えば、ひとつ前のログデータを耐タンパー装置に保存するのと同様に、複数のログデータも耐タンパー装置に保存する方法が考えられるが、大量のログデータを取り扱う事を考えた場合、複数のログデータを全て耐タンパー装置に保存しておく事は耐タンパー装置の容量を超える可能性がある。耐タンパー装置と同様の機能をソフトウェア的に実行する事で容量の問題は解決できるが、その場合、ハッシュツリーの生成時の計算機の負荷が過大になると考えられる。このように、大量のログデータに対して、複雑なハッシュチェーンを生成する場合は、計算機の負荷を低減する必要がある。
【００１６】
また、前記特許文献１では、過去の特定のデータの真正性を確かめたい場合に、現在から過去の特定のデータまでの全てのハッシュチェーンをたどらなければならず、計算に時間がかかるという課題があった。
【００１７】
そこで、本発明は、上記事情に鑑みてなされたものであり、大量かつ随時発生するログデータまたはデータの真正性を長期間保証するためのデジタル署名技術において、あるデータが改ざんされた場合におけるその他のデータの真正性の維持と、特定のログデータの検証を迅速に行うことを目的とする。さらに、デジタル署名を生成する際の計算機の負荷を低減することを目的とする。
【課題を解決するための手段】
【００１８】
本発明は、プロセッサとメモリを備えた管理計算機にて実施するデータの署名生成方法であって、前記管理計算機が、計算機から第１のデータＭｎを受信する第１のステップと、前記管理計算機が、当該管理計算機の記憶部で時系列に記憶されている、過去に発生した複数の第１のデータＭｎのそれぞれを含む複数の第２のデータＳｉから、所定の時系列の間隔で複数の第２のデータＳｉを選択する第２のステップと、前記管理計算機が、前記選択した複数の第２のデータＳｉのそれぞれについて、ハッシュ値を演算する第３のステップと、前記管理計算機が、前記計算機から受信した第１のデータＭｎと、前記選択した複数の第２のデータＳｉのハッシュ値と、を合わせて署名対象データを生成する第４のステップと、前記管理計算機が、前記署名対象データに対して予め設定された鍵でデジタル署名を付与して第２のデータＳｎを生成し、前記生成した第２のデータＳｎを順次時系列順で前記記憶部に保持する第５のステップと、を含み、前記第２のステップは、前記管理計算機が、時系列上の所定の間隔で１以上の第２のデータＳｉを選択する際に、１個前および初項Ｎ、公比２、の等比数列である一般項ｎ×２＾（ｐ−１）の個数前の第２のデータＳｎから選択することを特徴とするデータの署名生成方法。
【００１９】
また、プロセッサとメモリを備えた管理計算機にて実施するデータの署名検証方法であって、前記管理計算機は、計算機から受信した第１のデータと当該管理計算機の記憶部に保持されている第２のデータから取得した１以上の第２のデータのハッシュ値と、を合わせたデータに対して予め設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータを前記記憶部へ時系列順に保持し、前記署名検証方法は、前記管理計算機が、検証対象の第２のデータＳｉを受け付ける第６のステップと、前記管理計算機が、前記記憶部で時系列順に保持されている、過去に生成された前記第１のデータのそれぞれを含む複数の第２のデータＳｎから、前記第２のデータＳｉのハッシュ値を含む第２のデータＳｍを選択する第７のステップと、前記管理計算機が、前記選択した第２のデータＳｍを検証する第８のステップと、前記管理計算機が、前記記憶部に保持されている前記第２のデータＳｉのハッシュ値を演算し、当該演算したハッシュ値と、前記第２のデータＳｍに含まれる前記第２のデータＳｉのハッシュ値とに基づき、前記記憶部に保持されている前記第２のデータＳｉを検証する第９のステップと、を含み、前記第７のステップは、前記第２のデータＳｍを選択する際に、複数の単独で検証可能な第２のデータＳｍのうち、前記複数のハッシュチェーンを間欠的に辿る回数が最小になる前記単独で検証可能な第２のデータＳｍを選択し、前記第８のステップは、前記検証対象の第２のデータＳｉから、単独で検証可能な第２のデータＳｍまでを、順次検証する際に、第２のデータＳｉから演算したハッシュ値と、当該ハッシュ値を含む第２のデータＳｍとが一致しなかった場合、または、第２のデータＳｍが存在しない場合に、当該ハッシュ値を含む他の第２のデータＳｍを前記記憶部から取得して比較対象とし、検証を続行する。
【発明の効果】
【００２０】
したがって、本発明は、大量かつ随時発生するデータの真正性を長期間保証するためのデジタル署名技術において、全ての第２のデータ（例えば、ログレコード）が複数個前の第２のデータのハッシュ値を複数個持つことにより、複数のハッシュチェーンを構成する。これにより、ある第２のデータが改ざんされた場合でも、他のハッシュチェーンによってその他の第２のデータの真正性は担保することができる。このとき、複数個前の第２のデータの検証を効率的に行い、デジタル署名の検証ステップを低減でき、デジタル署名生成時の計算機の負荷を低減しながら第２のデータを生成する事ができる。
【００２１】
また、第２のデータの生成時に複数個前の第２のデータに対するハッシュチェーンを作る事で、ハッシュチェーンの検証処理が削減されるため、検証対象の第２のデータを高速に検証する事ができる。さらに、第２のデータの生成時に複数個前の第２のデータが改ざんされているかどうかを検証する処理を行なうため、第２のデータの改ざんを早期に発見できる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態を示し、データ処理システムの構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態を示し、ログ管理サーバの機能の概略構成の一例を示すブロック図である。
【図３】本発明の第１の実施形態を示し、アプリケーションサーバの機能の概略構成の一例を示すブロック図である。
【図４】本発明の第１の実施形態を示し、ログ管理サーバ及びアプリケーションサーバのハードウェア構成の一例を示すブロック図である。
【図５】本発明の第１の実施形態を示し、複数のハッシュチェーンを構成するログレコードの詳細を示す図である。
【図６】本発明の第１の実施形態を示し、複数のハッシュチェーンのリンク構造の一例を示す図である。
【図７】本発明の第１の実施形態を示し、ログレコードを生成する処理の一例を示すフローチャートである。
【図８】本発明の第１の実施形態を示し、高速検証を行う際にログを辿る一例を示す図である。
【図９】本発明の第１の実施形態を示し、高速検証の処理の一例を示すフローチャートである。
【図１０】本発明の第２の実施形態を示し、高速検証を行う際にログを辿る一例を示す図である。
【図１１】本発明の第２の実施形態を示し、高速検証の処理の一例を示すフローチャートである。
【図１２】本発明の第３の実施形態を示し、情報連携システムの構成の一例を示すブロック図である。
【図１３】本発明の第３の実施形態を示し、情報連携処理の一例を示すフローチャートである。
【図１４】本発明の第４の実施形態を示し、他のハッシュチェーンの集合体との接続を構成するログレコードの詳細を示す図である。
【図１５】本発明の第４の実施形態を示し、他のハッシュチェーンの集合体との接続を構成するリンク構造の一例を示す図である。
【図１６】本発明の第５の実施形態を示し、ログ管理システムの構成の一例を示すブロック図である。
【図１７】本発明の第５の実施形態を示し、ログ管理クライアントの概略構成の一例を示すブロック図である。
【図１８】本発明の第５の実施形態を示し、ログ管理サーバとログ管理クライアントによってログレコードを生成する処理の一例を示すフローチャートである。
【図１９】本発明の第５の実施形態を示し、ログ管理サーバとログ管理クライアントによって検証を行う処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下に、本発明の一実施形態について、図１〜図９の図面を用いて説明する。
【００２４】
まず、本発明の第一の実施形態の構成について、図１を用いて説明する。
【００２５】
図１は、本発明の第一の実施形態が適用されたデータ処理システムの一例を示すブロック図である。
【００２６】
本実施形態では、利用者の計算機に対して業務アプリケーションやデータベース等を提供するアプリケーションサーバ１０２−１〜アプリケーションサーバ１０２−Ｌ（以下、アプリケーションサーバの総称の符号は１０２とする）と、アプリケーションサーバ１０２のログを収集して管理するログ管理サーバ１０１と、それぞれのサーバを接続するネットワーク１０３からなる。
【００２７】
次に、図１のシステムを構成する各装置について説明する。
【００２８】
まず、図２を用いて、ログ管理サーバ１０１を説明する。図２はログ管理サーバ１０１の機能要素の一例を示すブロック図である。
【００２９】
ログ管理サーバ１０１は、アプリケーションサーバ１０２から送付されたログデータからログレコードを生成したり、ユーザからの要求に応じてログレコードの検証及び真正性の判定を行う処理部２０１と、ログ管理サーバ１０１が生成したログデータや処理に必要な鍵等のデータを記憶する記憶部２０２と、ユーザ又は管理者からの入力を受け付ける入出力部２１０と、アプリケーションサーバ１０２から出力されるログデータを受取る通信部２１１を有する。なお、以下では、アプリケーションサーバ１０２が出力するログをログデータとし、ログ管理サーバ１０１で後述するように処理したログをログレコードとする。
【００３０】
処理部２０１はログデータとログレコードのハッシュ値を合わせたデータに署名を付与する署名生成部２０３と、ログレコードの署名を検証する署名検証部２０４と、ログレコードに含まれるハッシュ値と当該ハッシュ値の元となるログレコードを比較して検証するハッシュ値比較部２０５と、ログレコードのハッシュ値を取りハッシュ値を生成するハッシュ値生成部２０６と、これらを制御する制御部２０７を有する。
【００３１】
記憶部２０２は、署名処理などが終了したログを記憶するログレコード保持部２０８と署名生成、検証を行なうための秘密鍵と証明書及び公開鍵を保持しておく、秘密鍵・証明書保持部２０９を有する。秘密鍵・証明書はたとえば、耐タンパー装置に保存しておくことも考えられる。
【００３２】
なお、図示はしないが、署名検証部２０４がハッシュ値比較部２０５を含み、署名生成部２０３がハッシュ値生成部２０６を含んでいてもよい。
【００３３】
次に、図３を用いて、アプリケーションサーバ１０２を説明する。図３はアプリケーションサーバ１０２の機能要素の一例を示すブロック図である。
【００３４】
アプリケーションサーバ１０２はアプリケーションを実行し、ログを出力するための処理部３０１と、記憶部３０２と、ユーザからの入力を受け付ける入出力部３０７と、ログ管理サーバ１０１や他のアプリケーションサーバと通信を行うための通信部３０８を有する。
【００３５】
処理部３０１はアプリケーションサーバ１０２で生成されるログをログ管理サーバ１０１に送付する処理を行うログ出力処理部３０３と、アプリケーションの実行などを行うアプリケーション処理部３０４と、これらを制御する制御部３０５を有する。
【００３６】
記憶部３０２はアプリケーションを実行するために必要なデータを記憶するアプリケーションデータ保持部３０６を有する。
【００３７】
なお、図２、図３に例示する、ログ管理サーバ１０１、アプリケーションサーバ１０２の処理部２０１、３０１は、例えば、図４に示すような、ＣＰＵ４０１と、メモリ４０２と、ハードディスク等の外部記憶装置４０４と、インターネットやネットワーク１０３を介して他装置と通信を行なうための通信装置４０３と、キーボードやマウス等の入力装置４０５と、表示装置やプリンタ等の出力装置４０６と、可搬性を有する記憶媒体４０８から情報を読み取る読取装置４０７と、これらの各装置間を接続する内部通信線４０９を備えた、一般的な電子計算機において、ＣＰＵ４０１がメモリ４０２上にロードされた所定のプログラムを実行することにより、具現化できる。
【００３８】
上記各装置は、ＣＰＵ４０１と記憶装置とを備える一般的な計算機、あるいは一般的な計算機と同等の機能を有するプログラムやハードウェアを用いて実現することができる。
【００３９】
そして、ＣＰＵ４０１が外部記憶装置４０４からメモリ４０２上にロードされた所定のプログラムを実行することにより、上述の各処理部を実現できる。すなわち、通信部２１１、３０８は、ＣＰＵ４０１が通信装置４０３を利用することにより実現される。入出力部２１０、３０７は、ＣＰＵ４０１が入力装置４０５や出力装置４０６や読取装置４０７を利用することにより実現される。また、記憶部２０２、３０２は、ＣＰＵ４０１がメモリ４０２や外部記憶装置４０４を利用することにより実現される。また、処理部２０１、３０１は、ＣＰＵ４０１のプロセスとして実現される。
【００４０】
これらのプログラムは、あらかじめ、上記電子計算機内のメモリ４０２または外部記憶装置４０４に格納されていても良いし、必要なときに、上記電子計算機が利用可能な、着脱可能な記憶媒体４０８から、または通信媒体（ネットワーク１０３など、またはそれらの上を伝搬する搬送波やデジタル信号など）を介して他の装置から、導入されてもよい。
【００４１】
また、本実施例では、図１〜図３に示されるような構成により実現できるとしているが、本発明は当該構成に限定されるものではない。ログ管理サーバ１０１だけでなく、アプリケーションサーバ１０２にログレコードを管理する機能があってもよい。
【００４２】
次に、図５を用いてログ管理サーバ１０１のログレコード保持部２０８に保持されるログレコードの詳細について説明する。本実施形態では、一例として、複数個前のログレコードとして３個前のログレコードと６個前のログレコードを含む場合を説明する。なお、これらのログレコードはログ管理サーバ１０１の署名生成部２０３で生成される。
【００４３】
ひとつのログレコード５０１は、アプリケーションサーバ１０２から送信されたログデータ本体であるログデータ５０２と、ログデータ５０２を表すユニークなＩＤであるデータＩＤ５０３と、１個前のログレコードのハッシュ値である１個前のハッシュ値５０４と、１個前のハッシュ値５０４を表すユニークなＩＤである連結用ＩＤ１５０５と、３個前のログレコードのハッシュ値である３個前のハッシュ値５０６と、３個前のハッシュ値を表すユニークなＩＤである連結用ＩＤ２５０７と、６個前のログレコードのハッシュ値である６個前のハッシュ値５０８と、６個前ハッシュ値を表すユニークなＩＤである連結用ＩＤ３５０９（以後、連結用ＩＤ１〜連結用ＩＤ３の総称を『連結用ＩＤ』と称する）と、各フィールド５０２〜５０９に対してデジタル署名を付与した署名５１０からなる。
【００４４】
以後、ａ番目のログレコードをログレコードＳａと称する。また、以下、ログレコードＳ８を例に具体的に説明する。ログレコードＳ８には、ログデータ５０２であるＭ８とログデータＭ８のデータＩＤ５０３である８と、１個前のハッシュ値５０４であるＨ（Ｓ７）（『Ｈ（Ｓ７）』はＳ７から計算したハッシュ値を示す。以下同様）と連結用ＩＤ１である「７」と、３個前のハッシュ値５０６であるＨ（Ｓ５）と連結用ＩＤ２である「５」と、６個前のハッシュ値５０８であるＨ（Ｓ２）と連結用ＩＤ３である「２」と、ログデータＭ８とＨ（Ｓ７）とＨ（Ｓ５）とＨ（Ｓ２）に対して署名した結果である署名５１０からなる。
【００４５】
ログ管理サーバ１０１の署名生成部２０３は、アプリケーションサーバ１０２から受信したログデータについて、１個前（直前）のログレコードのハッシュ値５０４と、３個前のログレコードのハッシュ値５０６とをそれぞれ演算し、６個前のログレコードのハッシュ値５０８は３個前のログレコードから複製し、当該ログレコードにデジタル署名を付与する。また、署名生成部２０３は、１個前、３個前及び６個前のログレコードに連結用ＩＤを付与する。
【００４６】
なお、図５のログレコードは、アプリケーションサーバ１０２で処理を行った特定のデータのログデータからログ管理サーバ１０１が生成したログレコードの署名５１０の履歴を示したものである。ログレコード保持部２０８には、アプリケーションサーバ１０２で処理したデータのそれぞれについて、図５で示すようなログレコードの署名５１０の履歴が格納される。
【００４７】
次に、図６のハッシュチェーン６０１の構造を用いて図５で例示したログレコードのハッシュチェーンの構造を可視化したものを示す。図５で示したように、ひとつのログレコードは１個前と３個前と６個前のハッシュ値を含んでおり、図６で示すように、全てのログレコードは１個前と３個前と６個前のハッシュ値によってログレコードの連鎖（ハッシュチェーン）がそれぞれ構成される。つまり、ひとつのログレコードから、複数のハッシュチェーンが生成されている。
【００４８】
次に、本実施の形態によるデータ処理システムの処理の一例について説明する。まず、図７を用いてログレコードの生成方法の例を示す。図７は図５のログレコードを一つ生成する時のログ管理サーバ１０１の制御部２０７が行う処理の一例を示すフローチャートである。ここでは、図４のログレコードＳ１１を生成する処理を例に説明する。なお、図７の処理は、ログ管理サーバ１０１がログデータを受信したとき等、所定のタイミングで実行される。
【００４９】
制御部２０７はアプリケーションサーバ１０２からログデータＭ１１を受け取る事で当該処理を開始する。まず、通信部２１１から取得したログデータＭ１１を新たなログレコードとして、ログレコード保持部２０８に保存する（ステップ７０１）。なお、新たなログレコードの生成は、署名生成部２０３で行うようにしても良い。
【００５０】
次に、署名検証部２０４は、ログレコード保持部２０８に保存されている一個前のログレコードであるログレコードＳ１０を検証する（ステップ７０２）。すなわち、署名検証部２０４は、秘密鍵・証明書保持部２０９に予め保存されている証明書から公開鍵を取得し、ログレコードＳ１０の署名５１０に対して前記公開鍵を適用して解読したデータを取得し、取得したデータとログレコードＳ１０のハッシュ値を比較する。署名検証部２０４は、デジタル署名された署名５１０からログデータＭ１０、ハッシュ値Ｈ（Ｓ９）、Ｈ（Ｓ７）、Ｈ（Ｓ４）を公開鍵で取得し、ログレコードＳ１０のログデータ５０２と、ハッシュ値５０４、５０６、５０８と比較することでログレコードＳ１０の真正性を検証する。つまり、デジタル署名された署名５１０に含まれるログデータとハッシュ値が、ログレコードＳ１０のログデータ５０２と、各ハッシュ値５０４、５０６、５０８にそれぞれ等しければ、当該ログレコードＳ１０は改ざんされていない正当なデータであることが保証される。なお、署名検証部２０４の検証は、デジタル署名された署名５１０に含まれるハッシュ値と、ログレコードＳ１０の各ハッシュ値５０４、５０６、５０８について行うようにしてもよい。
【００５１】
署名検証部２０４は、検証した結果、ログレコードＳ１０が改ざんされていないことが確認された場合（ステップ７０２で検証成功）、署名生成部２０３のハッシュ値生成部２０６によりログレコードＳ１０のハッシュ値を生成し、データＩＤ５０３である「１０」と共にログレコード保持部２０８に保存する（ステップ７０４）。これにより、Ｓ１０が改ざんされていない事を署名検証部２０４が検証した上で、署名生成部２０３は１個前のログレコードＳ１０のハッシュ値をログレコードＳ１１のハッシュチェーンに追加できる。一方、１個前のログレコードＳ１０が改ざんまたは消去されている場合には、ステップ７０３へ進んで、署名検証部２０４は後述するようにエラー処理を実施する。
【００５２】
次に、ログレコード保持部２０８に保存されている３個前のログレコードであるログレコードＳ８を、署名検証部２０４によって上記ステップ７０２と同様に検証し、検証結果が正しい場合（ステップ７０５で検証成功）には、ハッシュ値生成部２０６によりログレコードＳ８のハッシュ値を生成し、連結用ＩＤ１５０６である「８」と共にログレコード保持部２０８に保存する（ステップ７０７）。これにより、ログレコードＳ８が改ざんされていない事を署名検証部２０４が検証した上で、ハッシュ値生成部２０６は３個前のログレコードＳ８のハッシュ値をログレコードＳ１１のハッシュチェーンに追加できる。一方、３個前のログレコードＳ８が改ざんまたは消去されている場合には、ステップ７０６へ進んで、署名検証部２０４は後述するようにエラー処理を実施する。
【００５３】
また、３個前のログレコードＳ８には６個前のログレコードのハッシュ値Ｈ（Ｓ５）も保存されているため、ハッシュ値生成部２０６はハッシュ値Ｈ（Ｓ５）を複製して連結用ＩＤ２５０９の「５」と共にログレコード保持部２０８に保存する（ステップ７０８）。このとき、３個前のログレコードＳ８が改ざんされていない事は、ステップ７０５で既に検証されているため、当該ログレコードＳ８の一部であるＨ（Ｓ５）も改ざんされていない事は検証済みである。
【００５４】
次に、アプリケーションサーバ１０２から取得したログデータ（メッセージ）Ｍ１１とハッシュ値Ｈ（Ｓ１０）、Ｈ（Ｓ８）、Ｈ（Ｓ５）と、これらのハッシュ値のＩＤである、データＩＤ５０３である「１１」、連結用ＩＤである「１０」、「８」、「５」に対して署名生成部２０３がデジタル署名を行う。すなわち、署名生成部２０３は、秘密鍵・証明書保持部２０９に保存されている秘密鍵を用いて、前記ログデータに対する署名値を計算する。次に、署名生成部２０３は、得られた署名５１０をログレコード保持部２０８に保存する（ステップ７０９）。
【００５５】
上記ステップ７０１〜７０９の処理によって、ログ管理サーバ１０１は、受信したログデータＭ１１からログレコードＳ１０、Ｓ８、Ｓ５のハッシュ値に秘密鍵でデジタル署名を行ったログレコードＳ１１を生成して、ログレコード保持部２０８に格納する。
【００５６】
以上の処理において、複数個前のログレコードの選択の仕方として、Ｎ×２＾（ｐ−１）個前のログレコードを取得する例を示す。
【００５７】
ただし、Ｎは自然数の定数、ｐは１〜ｎまでの値を取る自然数の変数で、ｎは複数個前のハッシュ値をいくつ取得するか表す値である。なお、上記図５の例では、直前のログレコードと、Ｎ×２＾（ｐ−１）個前のログレコードをｎ個取得する例を示した。
【００５８】
ログレコードごとに行う改ざんされていない事の検証と、ハッシュ値の計算は、１回のハッシュ値の比較とハッシュ値の複製によって行う事が出来るため、ログレコードを生成する時のログ管理サーバ１０１の演算負荷が軽減される。
【００５９】
Ｎ＝３、ｐ＝｛１、２、３、４｝、ｎ＝４として具体的に説明する。このとき選択される複数個前のログレコードは、ｐ＝１のとき３個前、ｐ＝２のとき６個前、ｐ＝３のとき１２個前、ｐ＝４のとき２４個前となり全てのログレコードは、３個前、６個前、１２個前、２４個前のログレコードのハッシュ値を持つ。署名生成部２０３が新しいログレコードを生成する場合は、３個前のログレコードを署名検証部２０４で検証したあとは、３個前のログレコードに含まれる６個前のログレコード（３個前のログレコードにとっては３個前のログレコード）のハッシュ値を取得して複製すると共に、取得したハッシュ値と、６個前のログレコードから計算したハッシュ値とを比較して６個前のログレコードの検証を行う。署名検証部２０４で検証された６個前のログレコードは、１２個前（６個前のログレコードにとっては６個前）のログレコードのハッシュ値を含むため、１２個前のハッシュ値を取得して複製すると共に、取得したハッシュ値と１２個前のログレコードから計算したハッシュ値を比較して１２個前のログレコードの検証を行う。署名検証部２０４で検証された１２個前のログレコードは２４個前（１２個前のログレコードにとっては１２個前）のログレコードを含むため、これを複製して処理を終了する。
【００６０】
このように、署名生成部２０３では、１回の署名検証処理と２回のハッシュ値の比較処理と、４回の複製処理を行う事により３個前、６個前、１２個前、２４個前のハッシュ値を含んだログレコードを生成する事ができる。
【００６１】
一方、署名検証部２０４が実行するステップ７０３とステップ７０６のエラー処理は、ログレコードの検証処理が失敗し、検証対象のログレコードが改ざんまたは消去された可能性がある事をユーザに警告する。例えば、エラーメッセージと共に、改ざんされたログレコードのデータＩＤ５０３をユーザが利用する計算機へ出力し、当該計算機の出力装置４０６に表示する。
【００６２】
以上のように、本発明では、特定のログデータの新たなログレコードを生成する際には、特定のログデータに関する複数のログレコードを署名５１０の時系列順に並べ、直前のログレコードと、署名５１０の新しいものから古いログレコードに向けて、所定の間隔Ｎ個毎にｎ個のログレコードを選択する。そして、ログ管理サーバ１０１は、直前のログレコードと、Ｎ個前のログレコードのハッシュ値をそれぞれ演算する。そして、Ｎ個前よりも古い（Ｎ×２以降）ログレコードのハッシュ値は、Ｎ個前のログレコードに格納されているハッシュ値を複製する。ログ管理サーバ１０１は、新たなログレコードにｎ＋１個のハッシュ値を格納するが、実際にハッシュ値を演算するのは直前のログレコードとＮ個前のログレコードの２回で済み、その他は複製すればよいので、演算負荷を低減することができる。
【００６３】
換言すれば、ログ管理サーバ１０１は、新たなログレコードを生成する際に、デジタルの署名５１０の時系列上の所定の間隔で複数のログレコードを選択し、当該選択した複数のログレコードのうち最新のログレコードのハッシュ値を演算し、直前のログレコードのハッシュ値を演算する。そして、ログ管理サーバ１０１は、選択した複数のログレコードのうち最新のログレコード以外のハッシュ値は、各ログレコード保持するハッシュ値を複製するのである。
【００６４】
次に、図８と図９を用いて特定のログレコードの高速検証方法の一例を示す。ここで、特定のデータとは、入出力部２１０がユーザの計算機から検証の要求を受け付けたログレコードや、入力装置２１２から検証の要求を受け付けたログレコードである。
【００６５】
図８は、高速検証を行う際にログを辿る一例を示す図である。図８の高速検証ルート８０１は、ログレコードＳ１１をトラストポイントとした時に、Ｓ１を検証する最短ルートを例示した図である。このとき、ログレコードＳ１〜Ｓ１０の署名は既に有効期限が切れているものと仮定する。ここでは一例として、３ステップで検証する例を示している。この例ではログレコードに含まれるハッシュ値のうち、一番古い６個前のログレコードＳ５のハッシュ値について署名５１０とハッシュ値の比較検証を行う事で、ひとつずつハッシュチェーンをたどるのに比べてステップ数を省略することができる。このとき、一番古いハッシュ値が特定データより古い場合は二番目に古いハッシュ値についてハッシュ値の比較を行い、二番目に古いハッシュ値が特定データより古い場合は三番目に古いハッシュ値について比較していくように、徐々に省略範囲を狭くして行く事で、最少のステップでの特定データの真正性の検証を実現している。
【００６６】
図８の例では、ログレコードＳ１１に含まれるハッシュ値のうち、最も古い６個前のログレコードＳ５について、署名検証部２０４は、ログレコードＳ１１に含まれるハッシュ値Ｈ（Ｓ５）と、ログレコードＳ５のハッシュ値を計算して検証を行う。
【００６７】
次に、署名検証部２０４は、ログレコードＳ５に含まれる最古のハッシュ値Ｈ（Ｓ２）とログレコードＳ２のハッシュ値を計算して上記と同様に検証を行う。
【００６８】
最後に、署名検証部２０４は、ログレコードＳ２に含まれる最古（直前）のハッシュ値Ｈ（Ｓ１）とログレコードＳ１についてハッシュ値を計算して上記と同様に検証を行う。
【００６９】
以上の３回の検証によって、署名検証部２０４は、ログレコードＳ１１がログレコードＳ１の真正なデータであることを保証することができる。これにより、ログレコードＳ１〜Ｓ１０の全てを辿ることなく、ログ管理サーバ１０１は、要求されたログレコードＳ１１の真正性についてログレコードＳ５、Ｓ２を辿ることで、迅速に検証を行うことができる。
【００７０】
図９は、署名検証部２０４で行われる図８の高速検証ルート８０２の検証処理の一例を示すフローチャートを表したものである。以下に図９の詳細な説明を行う。
【００７１】
まず、検証を行うログレコードを入出力部２１０から取得して、トラストポイントの選定を行う。トラストポイントは署名の有効期限が切れていないログレコードで、かつ、検証対象のログデータに一番近いログレコードを選定する。この場合、図８に示したログレコードＳ１〜Ｓ１０までの署名は有効期限が切れていると仮定されているため、ログレコードＳ１１がトラストポイントとして選定される（ステップ９０１）。
【００７２】
次に、トラストポイントの署名を署名検証部２０４で検証する（ステップ９０２）。トラストポイントが検証された場合、検証済みのログレコードのデータＩＤを保持する変数ｘをトラストポイントのデータＩＤで初期化する（ステップ９０４）。図８の例に従うと、ここでは変数ｘに「１１」が代入される。以下、変数ｘが検証対象のＩＤ（図８の例に従うとＩＤは１）に到達するまでステップ９０６からステップ９０８を繰り返す（ステップ９０５）。
【００７３】
一方、署名検証部２０４は、ステップ９０２でログレコードの検証に失敗した場合には、ステップ９０３へ進んで後述するエラー処理を実行する。
【００７４】
署名検証部２０４は、ログレコードＳｘのログレコードに含まれる連携ＩＤのうち、検証対象のログレコードのデータＩＤと同一か、検証対象のログレコードより新しいもののうち、一番古い連結用ＩＤを選択して、変数ｘに代入する（ステップ９０６）。具体的には図５におけるログレコードＳ１１に含まれるハッシュ値のうち、上記条件を満たすハッシュ値Ｈ（Ｓ５）の連結用ＩＤは「５」のため、変数ｘには「５」が代入される。
【００７５】
次に、ハッシュ値比較部２０５により、ハッシュ値Ｈ（Ｓ５）とログレコードＳ５のハッシュ値を計算した値との比較を行い、図５に示したハッシュチェーン６０１の部分的な検証を行なう（ステップ９０７）。これにより、署名検証部２０４は、ログレコードＳ５が改ざんされていないことを保証する。
【００７６】
ログレコードＳ５は検証対象のログレコードではないため、ステップ９０６から９０８を繰り返す。すなわち、ログレコードＳ５に含まれるハッシュ値のうち、上記条件を満たすＨ（Ｓ２）とＳ２のハッシュ値を計算した値との比較を行い、図６に示したハッシュチェーン６０１の部分的な検証をさらに行なう。ログレコードＳ２は検証対象ログレコードではないため、ログレコードＳ２に含まれるハッシュ値のうち、上記条件を満たすＨ（Ｓ１）と、ログレコードＳ１のハッシュ値を計算した値との比較を行い、ハッシュチェーンの部分的な検証を行い、検証対象のログレコードの検証が終了する。
【００７７】
ステップ９０３のエラー処理では、署名検証部２０４は、トラストポイントのデータが改ざんまたは消去された可能性がある事をユーザに警告する。例えば、エラーメッセージと共に、改ざんされたログレコードのデータＩＤ５０３を、ユーザの計算機に送信し、当該計算機の出力装置４０６に表示する。
【００７８】
このステップ９０３のエラー処理では、ステップ９０１へ戻って、新しいトラストポイントの選定を行なう。このとき、新しいトラストポイントは署名の有効期限が切れていないログレコードで、かつ、検証対象のログデータに一番近いログレコードを選定し、かつ、エラーが発生したログレコードではないものとする。その後、上述したステップ９０２以降の処理を実行する。
【００７９】
また、署名検証部２０４は、ステップ９０７でログレコードの検証に失敗した場合には、ステップ９０８へ進んで後述するエラー処理を実行する。
【００８０】
ステップ９０８のエラー処理では、検証処理が失敗し当該ログレコードが改ざんまたは消去された可能性がある事をユーザに警告する。例えば、エラーメッセージと共に、改ざんされたログレコードのデータＩＤ５０３を、ユーザの計算機に送信し、当該計算機の出力装置４０６に表示する。
【００８１】
次に、このステップ９０３のエラー処理では、他の検証ルートで特定データの検証を続行するようにしてもよい。例えば、図８に示した高速検証ルート８０１以外の検証ルートを選択することも可能である。例えば、他の検証ルートの選定方法としては、検証済みログレコードに含まれる他のハッシュ値から発生する検証ルートや、検証済みログレコードを保証していたログレコードに含まれる他のハッシュ値から発生する検証ルートを選定することが考えられる。
【００８２】
一例として、上記特定データの検証処理において、ログレコードＳ５のデータが検証に失敗した場合を示す。署名検証部２０４は、まず、トラストポイントとしてログレコードＳ１１を選定する（ステップ９０１）。署名検証部２０４により、選定したトラストポイントのログレコードＳ１１の検証を行い（ステップ９０２）、変数ｘに「１１」を代入する（ステップ９０４）。「１１」は検証対象データのデータＩＤではないため（ステップ９０５）、ログレコードＳ１１に含まれるハッシュ値のうち、検証対象ログデータのデータＩＤと同一か、検証対象ログデータより新しいもののうち、一番古い連結用ＩＤという条件を満たす、ＩＤが「５」を変数ｘに代入する（ステップ９０６）。次に、ハッシュ値Ｈ（Ｓ５）とログレコードＳ５をハッシュ値比較部２０５により検証する（ステップ２０５）。ここで、ログレコードＳ５は上述したように検証に失敗するため、エラー処理（ステップ９０８）が行われ、ユーザへの警告と他の検証ルートが選定される。この例では、ログレコードＳ１１に含まれる他のハッシュ値であるＨ（Ｓ８）とＨ（Ｓ１０）のうち、より検証対象のＳ１に近いハッシュ値であるＨ（Ｓ８）を、新たな検証ルートとして選択する。次に、ハッシュ値Ｈ（Ｓ８）とログレコードＳ８をハッシュ値比較部２０５により検証する（ステップ９０８）。ログレコードＳ８は検証可能なため、上記で説明した通常の特定データの検証の処理が行われ、ステップ９０６〜ステップ９０８が繰り返される。具体的には、ログレコードＳ８に含まれるハッシュ値のうち、ハッシュ値Ｈ（Ｓ２）が選択され（ステップ９０６）、ハッシュ値Ｈ（Ｓ２）とログレコードＳ２から計算したハッシュ値をハッシュ値比較部２０５により検証する（ステップ９０８）。検証されたハッシュ値Ｈ（Ｓ２）に含まれる、ハッシュ値Ｈ（Ｓ１）とログレコードＳ１から計算したハッシュ値がハッシュ値比較部２０５により検証され、Ｓ１の検証が終了する。このように、あるデータが改ざんまたは消去された場合でも、トラストポイントのログレコードに含まれる他のログレコードのハッシュ値を利用することで、検証に失敗した場合でもログレコードの検証を行う事ができ、真正性の検証を確実に行うことができる。
【００８３】
以上、本発明の第一実施形態について説明した。
【００８４】
本実施の形態によれば、大量かつ随時発生するデータの真正性を長期間保証するためのデジタル署名技術において、全てのログレコードが複数個前のログレコードのハッシュ値を複数個持つことにより、複数のハッシュチェーンを構成する。
【００８５】
これにより、あるログレコードが改ざんされた場合でも、他のハッシュチェーンによってその他のログレコードの真正性は担保される。
【００８６】
このとき、複数個前のログレコードの検証を効率的に行い、デジタル署名の検証ステップを減らす事で、デジタル署名生成時の計算機の負荷を低減しながらログレコードを生成する事ができる。
【００８７】
また、生成時に複数個前のログレコードに対するハッシュチェーンを作る事で、ハッシュチェーンの検証処理が削減されるため、特定データの高速検証を実現する事ができる。
【００８８】
さらに、ログレコード生成時に複数個前のログレコードが改ざんされているかどうかを検証する処理を行なうため、ログレコードの改ざんを早期に発見できる可能性がある。
【００８９】
なお、本発明は、上記の実施形態に限定される物ではなく、その要旨の範囲内で数々の変形が可能である。
【００９０】
第一実施形態では、３個前、６個前のログレコードを取得するとしているが、いくつ前のログレコードのハッシュ値をいくつ取るかは任意に設定でき、Ｎ個前（Ｎは定数）としてもよく、ランダムな値の個数前のログレコードとしてもよい。つまり、過去の複数個前のログレコードから複数取得するようにしてもよい。また、一定時間前のログレコードのハッシュ値を取るという設定も可能である。上記のように任意でログレコードのハッシュ値を取得する場合、ログ生成時のログレコードが改ざんされていない事の確認と特定データの検証における特定データまでの検証ルートの構築手法は、周知または公知のグラフ理論を応用する事で最適なルートを計算可能である。
【００９１】
また、本実施形態では、図１〜図３に示されるような構成により実現できるとしているが、本発明は上記構成に限定されるものではない。ログ管理サーバ１０１だけでなく、アプリケーションサーバ１０２に図５のログレコードを生成し、管理する機能があってもよい。
【００９２】
さらに、上記実施形態では、アプリケーションサーバ１０２はログが発生するごとにログデータをログ管理サーバ１０１に送付しているが、例えば、一日に発生したログデータをファイルにまとめてからログ管理サーバ１０１に送付する事も可能である。この場合、ファイルがログ管理サーバ１０１に送付される前に改ざんされる可能性があるため、その対策として、アプリケーションサーバ１０２にハッシュチェーンを生成する機能を持たせることや、タイムスタンプを活用することが考えられる。送付されたファイルのログ管理サーバ１０１における処理方式としては、ファイル中のログレコードによりハッシュチェーンを作る方式や、ファイルそのものをログデータのように扱い、ファイル単位のハッシュチェーンを作る方式などが考えられる。
【００９３】
また、本実施形態では、検証するデータをログデータとした例を示したが、電子データにデジタル署名を行う計算機システムに適用することができる。
【００９４】
図１０、図１１を用いて本発明の特定のログレコードの高速検証方法の第二の実施形態の例を示す。本第二の実施形態の特徴は、ハッシュチェーンの検証回数が最小となるトラストポイントを選定し、選定したトラストポイントと検証対象のハッシュチェーンの検証を行い、さらに検証に使用したハッシュチェーンを出力することである。第一の実施形態では、署名の有効期限が切れていないログレコードで、かつ、検証対象のログレコードに一番近いログレコードをトラストポイントとして選定しているが、本実施形態では、署名の有効期限が切れていないログレコードで、かつハッシュチェーンの検証回数が最小となる署名をトラストポイントとして選定する。
【００９５】
本実施形態は第一の実施形態において、図８と図９を用いて説明した高速検証方法を変更した方法であり、図１〜図７を用いて説明したシステム構成やログレコード生成方法で、ログレコードが生成されていることを前提とする。
【００９６】
この時、トラストポイントは有効期限が切れていない署名であり、通常の電子証明書は通常５年程度の有効期限があることから、ある時点において、署名の有効期限が切れていないログレコード（トラストポイント）が複数存在することとなる。たとえば、５年間の有効期限の電子証明書を用いる場合、最大で５年間のログレコードすべてトラストポイントとすることができる。
【００９７】
図１０は本実施の形態において高速検証を行う際にハッシュチェーンを辿る一例を示す図である。図１０では、例としてログレコードＳ１１〜Ｓ１３が署名の有効期限が切れていないログレコードとし、Ｓ１を検証対象のログレコードとする。この時、署名の有効期限が切れていないログレコードなど、トラストポイントになりうるログレコードの集合は図２の記憶部２０２に記憶され、例えばＤＢやファイルなどに記憶される。
【００９８】
以下に処理方法を説明する。本実施の形態では、トラストポイントを最初に確定せず、ハッシュチェーンの検証と並行してトラストポイントの選定を行う。具体的には、検証対象のＳ１とハッシュチェーンで接続されているＳ７、Ｓ１３のハッシュチェーンの検証と並行して、Ｓ１とハッシュチェーンで接続されているＳ７、Ｓ１３の署名の有効期限を確かめ、トラストポイントとなりうる署名が見つかった場合にハッシュチェーンを辿るのを終了し、当該署名をトラストポイントとする。そして、トラストポイントの署名検証を行い、検証対象であるＳ１とトラストポイントがハッシュチェーンで接続されており、検証対象であるＳ１が改ざんされていないことを確かめる。
【００９９】
以上より、検証対象のＳ１はＳ１１〜Ｓ１３のログレコードのうち、Ｓ１３をトラストポイントとして検証を行うと、２回のハッシュ値検証で検証が終了する。
【０１００】
図１１は、署名検証部２０４で行われる図１０の検証回数が最小になる検証ルート１００１の検証処理の一例を示すフローチャートを表したものである。以下に図１１の詳細な説明を行う。
【０１０１】
まず、検証を行うログレコードを入出力部２１０から取得し、取得したログレコードのＩＤを、検証対象のログレコードのＩＤを保持する変数ｘに代入する（ステップ１１０１）。具体的には、ｘに「１」を代入する。
【０１０２】
次に、署名検証部２０４はＳｘのハッシュ値を持つログレコードを算出し、算出したログレコードのうち最新のログレコードのＩＤを比較対象のログレコードのＩＤを保持する変数ｙに代入する。（ステップ１１０２）。具体的には、検証対象のログレコード（Ｓ１）のハッシュ値を持つのはＳ２、Ｓ４、Ｓ７のログレコードであり、そのうちの最新のものであるＳ７のログレコードの連結用ＩＤ「７」が変数ｙに代入される。
次に、ハッシュ値比較部２０５により、ログレコードＳｙに含まれるハッシュ値Ｈ（Ｓｘ）とログレコードＳｘのハッシュ値を計算した値との比較を行い、図６に示したハッシュチェーン６０１の部分的な検証を行う（ステップ１１０３）。具体的には、Ｓ７に含まれるハッシュ値Ｈ（Ｓ１）とログレコードＳ１のハッシュ値を計算した値を比較する。これにより、署名検証部２０４はログレコードＳ１が改ざんされていないことを確認する。
【０１０３】
次に、署名検証部２０４はログレコードＳｙがトラストポイントとして登録されているか確認を行い、登録されていない場合に変数ｘに変数ｙを代入し、ステップ１１０２に進む。具体的にはＳ７はトラストポイントとして登録されていないため、変数ｘにＳ７の連結用ＩＤ「７」を代入し、Ｓ７のハッシュ値を持つログレコードであるＳ８、Ｓ１０、Ｓ１３のうち、最新のものであるＳ１３を変数ｙに代入し（ステップ１１０２）、Ｓ１３に含まれるハッシュ値Ｈ（Ｓ７）とログレコードＳ７のハッシュ値を計算した値を比較する（ステップ１１０３）。
【０１０４】
次に、署名検証部２０４はログレコードＳ１３がトラストポイントとして登録されていることを確認し、ステップ１１０６に進みログレコードＳ１３の署名検証を行う。ログレコードＳ１３の署名検証に成功した場合、ログレコードＳ１３に含まれるハッシュ値Ｈ（Ｓ７）が改ざんされていないことが確認できる。以上の全ての処理に成功した場合、トラストポイントとして選択したログレコードＳ１３の署名検証、およびトラストポイントから検証対象のログレコードＳ１までのハッシュチェーンの検証が確認できた事になる。
次に、署名検証部２０４は、検証結果と、検証に使用したログレコードのリストをユーザに提示して検証対象のログレコードの検証が終了する（ステップ１１０８）。検証に使用したログレコードのリストとは、具体的には、Ｓ１、Ｓ７、Ｓ１３であり、これらの一連のログレコードのデータＩＤ５０３をユーザに提示する。なお、ユーザは、当該一連のログレコードのデータＩＤ５０３をキーに、ログレコード保持部２０８から当該一連のログレコードを取得してもよい。
【０１０５】
なお、ステップ１１０４、ステップ１１０７のエラー処理では、署名検証部２０４は、記憶部２０２に記録されているログレコードＳｙが改ざんまたは消去された可能性があることをユーザに警告する。たとえば、エラーメッセージと共に、改ざんされたログレコードのデータＩＤ５０３を、ユーザの計算機に送信し、当該計算機の出力装置４０６に表示する。
【０１０６】
このステップ１１０４、ステップ１１０７のエラー処理では、他の検証ルートで特定データの検証を続行するようにしてもよい。たとえば、図１０に示した検証回数が最小になる検証ルート１００１以外の検証ルートを選択することも可能である。たとえば、他の検証ルートの選定方法としては、検証済みログレコードに含まれる他のハッシュ値から発生する検証ルートや、検証済みログレコードを保証していたログレコードに含まれる他のハッシュ値から発生する検証ルートを選定することが考えられる。
【０１０７】
以上、本発明の第二実施形態について説明した。本実施形態により、複数のトラストポイントから最適なトラストポイントを選定することで、ハッシュ値の検証回数を最小にし、最古のトラストポイントを選択する、第一の実施形態で示した方法よりさらに高速に検証を行うことを可能とする。
【０１０８】
また、検証に使用したログレコードのリストをユーザに提示することで、検証結果のエビデンスを第三者に提供すことが可能となる。ユーザは当該提示されたログレコードのリストに含まれる一連のログレコードを、ログレコード保持部２０８から取得し、第三者に提供することができる。第三者はログ管理サーバ１０１にアクセスすることなく、ユーザから提供されたログレコードのリストを用いて検証対象のログレコードの真正性を検証することができる。すなわち、第三者はユーザから提供されたエビデンス情報を用いて、自身で検証対象のログレコードの真正性を確認することができる。
【０１０９】
なお、本第二実施形態では、３個前と６個前のログレコードのハッシュ値を含む場合を想定しているが、いくつ前のログレコードをいくつ含むかは任意に設定でき、設定した方法において、ハッシュチェーンの検証回数が最小となるトラストポイントを選定できるようにする。選定方法の一例としては、周知または公知のグラフ理論を応用することがある。
【０１１０】
次に、図１２、図１３を用いて本発明における第三の実施形態の構成について説明する。本実施形態の特徴は、第一及び第二の実施形態で記述したデータ処理システムを、情報連携システムに適用したものである。
【０１１１】
情報連携システムとは、ある人物や企業等の組織に関する情報を、情報照会システムと情報提供システムという異なる組織間でやり取りする際に、中継を行うシステムである。たとえば、情報照会システムと情報提供システムがある人物や企業等の組織を、異なるＩＤで管理している場合等に、情報照会システムＩＤから情報提供システムのＩＤへ変換を行い、情報連携を中継する。
【０１１２】
情報連携システムでやり取りされる情報は個人や企業等の組織に関するセンシティブな情報も多く含むため、処理に関わった情報照会システムと情報提供システムの情報ややり取りされた個人情報の種類等を証跡として保存しておく必要があり、これら情報連携の証跡をログデータとしてログ管理サーバで保管する。
【０１１３】
本実施形態は第一の実施形態において、図１〜図３を用いて説明したデータ処理システムを、情報連携システムに適用したものであり、図５〜図７を用いて説明したログレコードが生成され、図８、図９、または第二の実施形態において説明した処理によって高速検証が可能になる。
【０１１４】
図１２は、本発明の第三の実施形態が適用された情報連携システムにおけるログデータ処理の一例を示すブロック図である。
【０１１５】
情報連携システムと情報照会システム及び情報提供システムはインターネットや広域ＷＡＮ等のネットワーク１０３で接続されている。情報連携システムはログ管理サーバ１０１と情報中継装置１２０１から構成され、組織内ネットワーク１２０２で接続されている。情報照会システムと情報提供システムは情報連携装置１２０３１〜１２０３２（「情報連携装置１２０３」と総称する）とログ管理サーバ１２０４１〜１２０４Ｎから構成され、組織内ネットワーク１２０２１〜１２０２Ｎで接続されている。
【０１１６】
次に、図１２の情報連携システムを構成する各装置について説明する。情報中継装置１２０１と情報連携装置１２０３はアプリケーションサーバ１０２と同様の構成からなる。すなわち、情報連携に関わる処理をアプリケーション処理部３０４によって行い、情報連携の証跡とすべきデータをログ出力処理部３０３によって出力する。
【０１１７】
次に、図１３を用いて本実施の形態による、情報連携システムにおけるログデータ処理の一例について説明する。情報照会システムの情報連携装置１２０３は、情報連携装置１２０３の操作者等からの情報連携開始指示を受けたタイミング等で、情報中継装置１２０１に対して情報連携要求を送付する（ステップＳ１３０１）。情報連携要求を行った情報照会システムはその記録をログ管理サーバ１２０４に出力し（ステップＳ１３０２）、ログ管理サーバ１２０４は、図７の処理を行うことで記録に署名を付与し、保管する（ステップＳ１３０３）。
【０１１８】
情報連携要求を受信した情報中継装置１２０１は、連携対象個人または組織を表すＩＤを、情報照会システムで使用されるＩＤから情報提供システムで使用されるＩＤへ変換を行う等の情報中継処理を行う（ステップＳ１３０４）。そして、情報中継装置１２０１は、情報提供システムの情報連携装置１２０３に対して情報連携要求を送信し（ステップＳ１３０５）、ステップＳ１３０４とステップＳ１３０５の処理結果の記録をログ管理サーバ１２０４に出力する（ステップＳ１３０６）。ログ管理サーバ１２０４は、図７の処理を行うことで記録に署名を付与し、保管する（ステップＳ１３０７）。
【０１１９】
情報連携要求を受信した情報提供システムの情報連携装置１２０３は情報連携要求に応じて送信する情報の生成等の処理を行い（ステップＳ１３０８）、その結果を情報照会システムに送信する（ステップＳ１３０９）。情報連携装置１２０３は、ステップＳ１３０８とステップＳ１３０９の処理の結果のログデータをログ管理サーバ１２０４に出力し（ステップＳ１３１０）、ログ管理サーバ１２０４は、図７の処理を行うことで署名を付与し、保管する（ステップＳ１３１１）。
【０１２０】
要求した情報を受信した情報照会システムの情報連携装置１２０３は、その受信結果をログ管理サーバ１２０４に出力し（ステップＳ１３１２）、ログ管理サーバ１２０４は図７の処理を行うことで署名を付与して保管する（ステップＳ１３１３）。さらに、情報照会システムの情報連携装置１２０３は情報中継装置に受信結果を送付し（ステップＳ１３１４）、ステップ１３１４の処理の結果の記録をログ管理サーバ１２０４に出力し、ログ管理サーバ１２０４は、図７の処理を行うことで、当該記録に署名を付与し、保管する（ステップ１３１６）。
【０１２１】
次に、受信結果を受信した情報中継装置１２０１は、受信処理の結果をログ管理サーバ１２０４に出力し（ステップＳ１３１７）、ログ管理サーバ１２０４は図７の処理を行うことで署名を付与して保管する。
【０１２２】
また、ステップＳ１３０９で要求された情報を送付した情報照会システムは、その送信結果を情報中継装置に送信し（ステップＳ１３１９）、その結果の記録をログ管理サーバ１２０４に出力し（ステップＳ１３２０）、ログ管理サーバ１２０４は、図７の処理を行うことでログに署名を付与し、保管する（ステップＳ１３２１）。
【０１２３】
ステップＳ１３１９の送信結果を受信した情報中継装置は、受信結果をログ管理サーバ１２０４に出力し（ステップＳ１３２２）、ログ管理サーバ１２０４は図７の処理を行うことでログに署名を付与し、保管する（ステップＳ１３２３）。
【０１２４】
以上、本発明の第三実施形態について説明した。
【０１２５】
本実施形態によれば、通信が発生する毎に情報連携に関わる処理の記録を生成し情報連携の証跡として長期間真正性を保証する必要があるユースケースに対して、証跡の真正性を長期間保証するためのデジタル署名技術における、全てのログレコードが複数個前のログレコードのハッシュ値を複数個持つことにより、複数のハッシュチェーンを構成する。
【０１２６】
これにより、あるログレコードが改ざんされた場合でも、他のハッシュチェーンによってその他のログレコードの真正性は担保される。
【０１２７】
このとき、複数個前のログレコードの検証を効率的に行い、デジタル署名の検証ステップを減らす事で、デジタル署名生成時の計算機の負荷を低減しながらログレコードを生成する事ができる。
【０１２８】
また、生成時に複数個前のログレコードに対するハッシュチェーンを作る事で、ハッシュチェーンの検証処理が削減されるため、特定データの高速検証を実現する事ができる。
【０１２９】
なお、本実施形態の例では、Ｓ１３０９において、情報提供システムの機関から、情報照会システムの機関に対して情報連携結果を応答するアクセストークン方式を説明しているが、情報提供システムの機関から情報連携システムを経由して情報照会システムの機関に対して情報連携を行う、ゲートウェイ方式を使用した情報連携においても、情報連携の証跡の真正性を保つことができる。
【０１３０】
図１４、図１５を用いて本発明のハッシュチェーン生成時にさらに複雑性を向上する第四の実施形態の例を示す。
【０１３１】
本実施形態の特徴は、複数のハッシュチェーンからなるハッシュチェーンの集合体が複数存在する場合に、あるハッシュチェーンの集合体のログレコードに、他のハッシュチェーンの集合体のログレコードの複数個前のハッシュ値を含めることで、ハッシュチェーンの集合体を接続する事である。
【０１３２】
ハッシュチェーンの集合体が複数存在する場合とは、たとえば、アプリケーションサーバ１０２毎にハッシュチェーンの集合体を作成する場合がある。すなわち、アプリケーションサーバ１０２１から出力されたログデータからログレコードを生成する際に、アプリケーションサーバ１０２１の３個前のログデータから生成されたログレコードのハッシュ値と、アプリケーションサーバ１０２１の６個前のログデータから生成されたログレコードのハッシュ値を含めることで、アプリケーションサーバ１０２１のハッシュチェーンの集合体を構成する。以上より、アプリケーションサーバと同数の複数のハッシュチェーンの集合体が存在することとなる。
【０１３３】
なお、本実施形態では、一例としてハッシュチェーンの集合体が２つ存在する（仮にアプリケーションサーバ１０２１の集合体を「集合体ｓ」、アプリケーションサーバ１０２２の集合体を「集合体ｔ」と呼ぶ）場合を説明する。
【０１３４】
本実施形態は、図１〜図１０を用いて行った第一の実施形態の説明のうち、ログレコードの生成方法で生成するログレコードの詳細内容（図５〜図６）について改良を行ったものであり、図８〜図９または第二の実施形態において説明した処理によって高速検証が可能になる。
【０１３５】
まず、図１４を用いて、ログレコードの詳細について説明する。
【０１３６】
集合体ｓのひとつのログレコード１４０１は、図５に示した５０２〜５１０のフィールドに加えて、集合体を識別するためのユニークＩＤである集合体ＩＤ１４０２と、集合体ｔの３個前のログレコードのハッシュ値である集合体ｔの３個前のハッシュ値１４０３と、ｔの３個前のハッシュ値１４０３を表すユニークなＩＤである連結用ＩＤ１４０４と、集合体ｔの６個前のログレコードのハッシュ値である、ｔの６個前のハッシュ値１４０５と、ｔの６個前のハッシュ値１４０５を表すユニークなＩＤである連結用ＩＤ１４０６と、からなる。なお、連結用ＩＤは集合体のＩＤを含め、連結用ＩＤから集合体を識別できることとする。また、署名１４０７は図５の署名５１０と同様で、フィールド５０２〜５０９、１４０２〜１４０６に対するデジタル署名である。
【０１３７】
ログ管理サーバ１０１の署名生成部２０３は、アプリケーションサーバ１０２１から受信したログデータについて、アプリケーションサーバ１０２１のハッシュチェーンの集合体（集合体ｓ）の１個前、３個前、６個前のログレコードのハッシュ値を実施形態１と同様に生成する。署名生成部２０３は、さらに、アプリケーションサーバ１０２２のハッシュチェーンの集合体（集合体ｔ）の３個前のログレコードのハッシュ値１４０３を演算し、集合体ｔの６個前のハッシュ値を集合体ｔの３個前のハッシュ値から複製し、当該ログレコードにデジタル署名を付与する。また、署名生成部２０３は、集合体ｓの１個前、３個前、６個前のログレコードと、集合体ｔの３個前、６個前のログレコードに連結用ＩＤを付与する。
【０１３８】
次に、図１５のハッシュチェーンの構造１５０１を用いて、図１４で例示したログレコードのハッシュチェーンの構造を可視化したものを示す。図１５で示すように、集合体ｓのログレコードは自集合体の１個前と３個前と６個前のハッシュ値と、集合体ｔの３個前と６個前のハッシュ値を含んでおり、図１５で示すように、すべてのログレコードは自集合体の１個前と３個前と６個前のハッシュ値と、集合体ｔの３個前と６個前のハッシュ値によってログレコードの連鎖（ハッシュチェーン）がそれぞれ構成される。つまり、集合体ｓ、集合体ｔの間にもハッシュチェーンが構成されている。
【０１３９】
通常、図１４、図１５を用いて方法を用いて生成したハッシュチェーンは、第一の実施形態、第二の実施形態で説明した方法で検証するが、攻撃者によって秘密鍵が漏えいするなど、自集合体中にトラストポイントが存在しない場合は、他集合体に存在するトラストポイントと検証対象をつなぐハッシュチェーンを辿ることで検証する。
【０１４０】
以上、第四の実施形態を説明した。本実勢形態を適用すると、他の集合体との間にハッシュチェーンを生成される。これにより、チェーンの複雑性が向上し、攻撃に対する耐性が向上する。たとえば、ある集合体に対応する秘密鍵が漏えいするなどにより、署名が失効した場合においても、他の集合体の署名が失効していなければその集合体からハッシュチェーンを辿るなどして、検証を行うことができる。
【０１４１】
なお、本実施形態の結果生成されるログレコードは第二の実施形態の高速検証、第三の実施形態の情報連携システムにおいても適用可能である。
【０１４２】
次に、図１６〜図１８を用いて本発明における第五の実施形態の構成について説明する。
【０１４３】
本第五の実施形態の特徴は、第三の実施例で説明した、情報照会システムや情報提供システムなどにおいて、それぞれログ管理サーバを配置するのではなく、共通化可能な機能をログ管理サーバとして複数システムで共有し、共有不可能な部分をログ管理クライアントとして各システムに配置する点である。  具体的には、ログ管理クライアントはハッシュ値を計算する機能を持ち、ログデータのハッシュ値を計算したのちに、当該ハッシュ値をログ管理サーバに送付する。ログ管理サーバはログ管理クライアントから受け取ったハッシュ値に対して署名を行う。
【０１４４】
本実施形態は第三の実施形態において、図１３を用いて説明したタイミングでログが出力され、第一の実施例、第四の実施例で説明したログレコードが生成され、第一の実施形態と第二の実施形態で説明した高速検証を行う。
【０１４５】
図１６は、本発明の第五の実施形態が適用されたログ管理システムの一例を示すブロック図である。ログ管理システムと情報照会システム及び情報提供システムはインターネットや広域ＷＡＮ等のネットワーク１０３で接続されている。ログ管理システムはログ管理サーバ１０１から構成される。情報照会システムと情報提供システムは情報連携装置１２０３１〜１２０３２（「情報連携装置１２０３」と総称する）とログ管理クライアント１６０１１〜１６０１Ｎから構成され、組織内ネットワーク１２０５１〜１２０５Ｎで接続されている。
【０１４６】
次に、図１７を用いて、ログ管理クライアント１６０３を説明する。図１７はログ管理クライアント１６０３の機能要素の一例を示すブロック図である。
【０１４７】
ログ管理クライアント１６０３は、情報連携装置１２０３から送付されたログデータからログデータのハッシュ値を計算したり、ログ管理サーバに検証要求を行う処理部１７０１と、情報連携装置１２０３から送付されたログデータ等を記憶する記憶部１７０２と、ユーザ又は管理者からの入力を受取る入出力部１７０７と、情報連携装置１２０３から出力されるログデータを受取る通信部１７０８を有する。
【０１４８】
処理部１７０１はログデータのハッシュ値を生成するハッシュ値生成部１７０３と、ログ管理サーバに検証要求を行う署名検証要求部１７０４と、それらを制御する制御部１７０５を有する。
【０１４９】
記憶部１７０２はログデータを記憶するログデータ保持部１７０６を有する。
【０１５０】
ログ管理システムを使用する情報照会システムまたは情報提供システムは、それぞれの秘密鍵をログ管理システムに対して送付し、ログ管理システムは秘密鍵・証明書保持部２０９にそれらを保存する。
【０１５１】
なお、図１７に例示したログ管理クライアント１６０３は、第一の実施形態のログ管理サーバ１０１、アプリケーションサーバ１０２と同様に、図４に示すような装置および同等の機能を有するプログラムやハードウェアを用いて実現することができる。
【０１５２】
次に、図１８を用いて本実施の形態による、ログ生成処理の一例について説明する。
【０１５３】
情報連携装置１２０３はステップ１３０２、１３１０、１３１２、１３１５、１３２０のタイミングで、ログ管理クライアント１６０１にログデータを送信する（ステップＳ１８０１）。ログデータを受信したログ管理クライアントはログデータ保持部１７０６にログデータを保存し、ハッシュ値生成部１７０３でログデータのハッシュ値を生成し（ステップＳ１８０２）、ログ管理サーバにログデータのハッシュ値を送信する（ステップＳ１８０３）。
【０１５４】
ログデータのハッシュ値を受信したログ管理サーバ１０１は、図６の処理を行うことでログに署名を付与（ステップＳ１８０４）し、保管する（ステップＳ１８０５）し、処理結果を応答する（ステップＳ１８０６）。この時、上記で説明した通り、ログ管理サーバはログ管理クライアントから送付されたログデータのハッシュ値に対して署名を行うため、ログレコード５０１におけるログデータはＨ（Ｍ１）となり、署名５１０はＳｉｇｎ（Ｈ（Ｍ１）｜｜ＩＶ｜｜ＩＶ｜｜ＩＶ）となる。次に、図１８を用いて、本実施の形態によるログ検証処理の一例について説明する。
【０１５５】
ログ管理クライアント１６０３は記憶部１７０２に保持されている検証対象のログデータを取得し、ハッシュ値生成部１７０３でログデータのハッシュ値を生成（ステップＳ１９０１）し、ログ管理サーバにログデータのハッシュ値を送信する（ステップＳ１９０２）。
【０１５６】
ログデータのハッシュ値を受信したログ管理サーバは、受信したログデータのハッシュ値を検索キーに、当該ログデータを含むログレコードを検索（ステップＳ１９０３）し、検索したログレコードを図９または図１１の処理を行うことで検証し（ステップＳ１９０４）、その検証結果をログ管理クライアントに応答（ステップＳ１９０５）する。
【０１５７】
応答を受けたログ管理クライアントは送信したハッシュ値を含むログレコードが存在することからログデータが改ざんされていないことを確認して、検証を終了する。
【０１５８】
以上、第五の実施形態を説明した。本実施形態を適用すると、第三の実施形態において、情報照会システムまたは情報提供システム側のコストを最小限にして、情報連携の記録等のログデータの真正性を保証できる。
【０１５９】
この時、ログ管理クライアントにおいて、ログデータそのものでなく、ログデータのハッシュ値を計算してログ管理サーバに送信することで、ネットワーク１０３の負荷を減らすことができる。
【０１６０】
なお、ネットワーク１０３が十分な性能を備えている場合等においてはログデータをログ管理サーバに送信して管理してもよい。
【０１６１】
また、ログ管理クライアントが秘密鍵の記憶、署名生成機能を持ち、署名の保存のみをログ管理システムが行うことも可能である。
【０１６２】
また、ステップＳ１８０６において、ログ管理サーバがログ管理クライアントに対して、データＩＤ５０３や集合体ＩＤ１４０２などログレコードを識別する情報合わせて応答してもよい。さらに、ログ管理サーバが検索を行う際に、当該識別する情報を使用して検索してもよい。
【０１６３】
以上のように、本発明はデジタル署名に有効期限のあるデータを検証する計算機や計算機システムに適用することができ、特に、ヒステリシス署名を行う計算機システムに好適である。
【０１６４】
＜１＞
プロセッサとメモリを備えた管理計算機にて実施するデータの真正性保証方法において、計算機から受信した第１のデータと前記管理計算機のデータ保持部に保持されている第２のデータから取得した１以上の第２のデータのハッシュ値と、を合わせたデータに対して予め設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータをデータ保持部に保持する署名生成処理と、前記データ保持部に保持された複数の第２のデータと検証対象の第２のデータをもとに、複数のハッシュチェーンを間欠的に辿って真正性の検証を行う署名検証処理を実施し、
前記署名生成処理は、
前記計算機から第１のデータを受信する第１のステップと、
前記データ保持部に保持されている第２のデータのうち、時系列上の所定の間隔で複数の第２のデータを選択する第２のステップと、
前記選択した複数の第２のデータのハッシュ値をそれぞれ演算する第３のステップと、
前記計算機から受信した第１のデータと、前記選択した複数の第２のデータのハッシュ値と、を合わせて署名対象データを生成する第４のステップと、
前記署名対象データに対して予め設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータを順次時系列順に前記データ保持部に保持する第５のステップと、
を含み、
前記署名検証処理は、
検証対象の第２のデータを受け付ける第６のステップと、
単独で検証可能な第２のデータを前記データ保持部から取得して検証する第７のステップと、
前記検証対象の第２のデータから、前記単独で検証可能な第２のデータまでを、前記第２のデータから演算したハッシュ値と、当該ハッシュ値を含む第２のデータとを順次比較することで検証を行い、複数ハッシュチェーンを間欠的に辿って検証する第８のステップと、
を含む事を特徴とするデータの真正性保証方法。
【０１６５】
＜２＞
＜１＞に記載のデータの真正性保証方法であって、
前記第２のステップは、
前記管理計算機が、時系列上の所定の間隔で１以上の第２のデータを選択する際に、１個前および初項Ｎ、公比２、の等比数列である一般項ｎ×２＾（ｐ−１）の個数前の第２のデータから選択する事を特徴とするデータの真正性保証方法。
【０１６６】
＜３＞
＜１＞に記載のデータの真正性保証方法であって、
前記第３のステップは、
前記管理計算機が、複数の第２のデータのハッシュ値をそれぞれ演算する代わりに、演算対象の第２のデータのハッシュ値を含む他の第２のデータをデータ保持部から取得し、当該取得した第２のデータから演算対象の第２のデータのハッシュ値を複製して取得する事を特徴とするデータの真正性保証方法。
【０１６７】
＜４＞
＜１＞に記載のデータの真正性保証方法であって、
前記第３のステップは、複数の第２のデータのそれぞれの真正性を確認する第９のステップをさらに含み、
前記第９のステップは、複数の第２のデータのそれぞれを検証対象として、前記第６のステップから第８のステップを実行することを特徴とするデータの真正性保証方法。
【０１６８】
＜５＞
＜１＞に記載のデータの真正性保証方法であって、
前記第８のステップは、
前記検証対象の第２のデータから、前記単独で検証可能な第２のデータまでを、順次比較する際に、第２のデータから演算したハッシュ値と、当該ハッシュ値を含む第２のデータとが一致しなかった場合、または、第２のデータが存在しない場合に、当該ハッシュ値を含む他の第２のデータをデータ保持部から取得して比較対象とし、検証を続行する事を特徴とするデータの真正性保証方法。
【０１６９】
＜６＞
＜１＞に記載のデータの真正性保証方法であって、
前記第７のステップは、
前記単独で検証可能な第２のデータを選択する際に、複数の単独で検証可能な第２のデータのうち、前記複数のハッシュチェーンを間欠的に辿る回数が最小になる前記単独で検証可能な第２のデータを選択する事を特徴とするデータの真正性保証方法。
【０１７０】
＜７＞
＜１＞に記載のデータの真正性保証方法であって、
前記第８のステップにおいて、前記複数のハッシュチェーンを間欠的に辿った際に検証に用いた全ての第２のデータを前記管理計算機の利用者に提示する事を特徴とするデータの真正性保証方法。
【０１７１】
＜８＞
＜１＞に記載のデータの真正性保証方法であって、
前記管理計算機は、前記計算機を含んで中継システムを構成しており、前記中継システムは、前記計算機から構成される複数の処理システムと接続されており、
前記中継システムを介して、前記複数の処理システムのうちのひとつの処理システムから他の処理システムに、電子データからなる第３のデータを送信する際に、
前記中継システムを構成する前記計算機が、前記第３のデータがある処理システムから他の処理システムに送信された処理の記録を第１のデータとして生成し、前記中継システムを構成する前記管理計算機に送信する事を特徴とするデータの真正性保証方法。
【０１７２】
＜９＞
＜１＞に記載のデータの真正性保証方法であって、前記管理計算機が複数の前記計算機と接続され、
前記第１のステップは、
前記複数の前記計算機のうち、いずれの計算機から受信したものかを特定し、
前記第２のステップは、
前記管理計算機が、時系列上の所定の間隔で複数の第２のデータを選択する際に、
前記データ保持部に保持されている第２のデータを前記計算機毎に管理・保持し、前記第１のステップで特定した計算機に対応して別々に管理・保持されている第２のデータを選択し、
前記第５のステップは、
前記管理計算機が、前記生成した第２のデータを順次時系列順に前記データ保持部に保持する際に、前記計算機毎に別々に管理・保持することで、
前記計算機毎に複数ハッシュチェーンを各々構成する事を特徴とするデータの真正性保証方法。
【０１７３】
＜１０＞
＜９＞に記載のデータの真正性保証方法であって、
前記第２のステップは、
前記管理計算機が時系列上の所定の間隔で複数の第２のデータを選択する際に、前記第５のステップにより、前記計算機毎に管理・保持されている時系列順の第２のデータより、前記第１のステップで特定した計算機に対応して管理・保持されている第２のデータと、前記特定した計算機以外の計算機に対応して管理・保持されている第２のデータと、を選択する事を特徴とするデータの真正性保証方法。
【０１７４】
＜１１＞
＜１＞に記載のデータの真正性保証方法であって、
前記第１のステップにおいて、
前記計算機は、当該計算機が保持する第４のデータのハッシュデータを計算し、前記第４のデータを前記計算機のデータ保持部に保持し、前記ハッシュデータを管理計算機に送信し、前記管理計算機は前記ハッシュデータを第１のデータとして受信し、
前記第６のステップにおいて、
前記計算機は検証対象の第４のデータをデータ保持部から取得し、取得した第４のデータのハッシュデータを計算し、前記ハッシュデータを管理計算機に送信し、前記管理計算機は前記ハッシュデータを第１のデータとして受信する、
事を特徴とするデータの真正性保証方法。
【０１７５】
＜１２＞
プロセッサとメモリを備えた管理計算機であって、
計算機から受信した第１のデータと、前記管理計算機のデータ保持部に保持されている第２のデータから取得した１以上の第２のデータのハッシュ値と、を合わせたデータに対してあらかじめ設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータをデータ保持部に保持する署名生成処理と、前記データ保持部に保持された複数の第２のデータと検証対象の第２のデータをもとに、複数のハッシュチェーンを間欠的に辿って真正性の検証を行う署名検証処理を行う制御部を具備し、
前記署名生成処理は、
前記計算機から第１のデータを受信し、
前記データ保持部に保持されている第２のデータのうち、時系列上の所定の間隔で複数の第２のデータを選択し、
前記選択した複数の第２のデータのハッシュ値をそれぞれ演算し、
前記計算機から受信した第１のデータと、前記選択した複数の第２のデータのハッシュ値と、を合わせて署名対象データを生成し、
前記署名対象データに対して予め設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータを順次時系列順に前記データ保持部に保持し、
前記署名検証処理は、
検証対象の第２のデータを受け付け、
単独で検証可能な第２のデータを前記データ保持部から取得して検証し、
前記検証対象の第２のデータから、前記単独で検証可能な第２のデータまでを、前記第２のデータから演算したハッシュ値と、当該ハッシュ値を含む第２のデータとを順次比較することで検証を行い、複数ハッシュチェーンを間欠的に辿って検証する、
事を特徴とする管理計算機。
【０１７６】
＜１３＞
プロセッサとメモリを備えたコンピュータにて実行する、データの真正性保証プログラムを格納した計算機読み取り可能な非一時的な記憶媒体であって、
計算機から受信した第１のデータと、管理計算機のデータ保持部に保持されている第２のデータから取得した１以上の第２のデータのハッシュ値と、を合わせたデータに対してあらかじめ設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータをデータ保持部に保持する署名生成処理と、前記データ保持部に保持された複数の第２のデータと検証対象の第２のデータをもとに、複数のハッシュチェーンを間欠的に辿って真正性の検証を行う署名検証処理と、を前記コンピュータに実行させ、
前記署名生成処理は、
前記計算機から第１のデータを受信する手順と、
前記データ保持部に保持されている第２のデータのうち、時系列上の所定の間隔で複数の第２のデータを選択する手順と、
前記選択した複数の第２のデータのハッシュ値をそれぞれ演算する手順と、
前記計算機から受信した第１のデータと、前記選択した複数の第２のデータのハッシュ値と、を合わせて署名対象データを生成する手順と、
前記署名対象データに対して予め設定された鍵でデジタル署名を付与して第２のデータを生成し、前記生成した第２のデータを順次時系列順に前記データ保持部に保持する手順と、を含み、
前記署名検証処理は、
検証対象の第２のデータを受け付ける手順と、
単独で検証可能な第２のデータを前記データ保持部から取得して検証する手順と、
前記検証対象の第２のデータから、前記単独で検証可能な第２のデータまでを、前記第２のデータから演算したハッシュ値と、当該ハッシュ値を含む第２のデータとを順次比較することで検証を行い、複数ハッシュチェーンを間欠的に辿って検証する手順と、を含む、
事を特徴とするデータの真正性保証プログラムを格納した計算機読み取り可能な非一時的な記憶媒体。
【図１】
0005989183.tif 000002
【図２】
0005989183.tif 000003
【図３】
0005989183.tif 000004
【図４】
0005989183.tif 000005
【図５】
0005989183.tif 000006
【図６】
0005989183.tif 000007
【図７】
0005989183.tif 000008
【図８】
0005989183.tif 000009
【図９】
0005989183.tif 000010
【図１０】
0005989183.tif 000011
【図１１】
0005989183.tif 000012
【図１２】
0005989183.tif 000013
【図１３】
0005989183.tif 000014
【図１４】
0005989183.tif 000015
【図１５】
0005989183.tif 000016
【図１６】
0005989183.tif 000017
【図１７】
0005989183.tif 000018
【図１８】
0005989183.tif 000019
【図１９】
0005989183.tif 000020