(57)【要約】【課題】  管理データの改竄検証を効率的に実行可能とし、セキュアメモリに格納する管理データ検証値を管理データのデータ量に関わらず小容量のデータとすることを可能とする構成を実現する。【解決手段】  セキュリティチップ内のメモリに、データ管理ツリーの最上位に設定されるデータ、すなわち、下位データに基づいて算出される一方向性関数に基づく算出値、例えばハッシュ値を格納し、この値を検証値として適用してデータ管理ツリーの最下層に設定される管理データの改竄検証を行う。管理データが増加した場合でも、管理データ検証値のデータ量を増加させる必要がなく、多くの管理データの改竄検証が可能となる。管理データの追加、削除、変更等のデータ更新が行われる場合も、データ管理ツリーのハッシュ値に基づくデータ検証処理を実行する構成としたので、不正なデータ更新の防止、適正なデータ管理が実現される。【選択図】  図３
2005032130.tif 000002
【特許請求の範囲】
【請求項１】
データ管理装置であり、
管理対象データを格納する管理データ記憶部と、
前記管理対象データを最下層とし、下層データに基づく一方向性関数による算出値を上位層データとして設定したｎ分岐データ管理ツリー（ｎは２以上の整数）の最上位に設定される１つの一方向性関数算出値を管理データ検証値として格納した管理データ検証値記憶部と、
前記管理データ検証値に基づく管理データの検証処理を実行する検証処理部と、
を有することを特徴とするデータ管理装置。
【請求項２】
前記一方向性関数はハッシュ関数であることを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
前記管理データ検証値記憶部は、耐タンパ構成を持つセキュリティチップ内に構成されたセキュアメモリであることを特徴とする請求項１に記載のデータ管理装置。
【請求項４】
前記検証処理部は、
耐タンパ構成を持つセキュリティチップ内に構成され、
前記検証処理部は、
前記管理データ記憶部から読み出された検証処理に必要なデータを入力して検証処理を実行する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項５】
前記管理データ検証値記憶部は、耐タンパ構成を持つセキュリティチップ内に構成されたセキュアメモリであり、
前記検証処理部は、
前記セキュアメモリから読み出された管理データ検証値を入力して、検証処理を実行する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項６】
前記ｎ分岐データ管理ツリーを構成する各ノードは、直下の階層のｎ個のデータ各々に基づくｎ個の一方向性関数算出値を格納したデータリストとして構成され、
前記検証処理部は、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータリストに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項７】
前記検証処理部は、
前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かうルートを、各階層におけるデータリスト識別情報としてのリストインデックスｊと、各リストにおける一方向性関数算出値識別情報としての一方向性関数インデックスｋとに基づいて決定し、決定ルート上のデータについての検証処理を実行する構成であることを特徴とする請求項６に記載のデータ管理装置。
【請求項８】
前記検証処理部は、
前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次実行する検証の結果、全ての照合処理の成立を条件として、データ改竄無しとの判定を行う構成であることを特徴とする請求項７に記載のデータ管理装置。
【請求項９】
前記検証処理部は、
前記データ管理ツリーにおけるデータの追加、削除、変更のいずれかを伴うデータ更新処理の際に、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって検証処理を実行し、全ての照合処理の成立を条件として、データ更新を行う構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１０】
前記検証処理部は、
前記データ管理ツリーにおける階層の増加または減少処理を伴う階層構成変更の際に、該階層構成変更に伴う更新の必要なデータの更新前データに基づく検証処理を実行し、該検証に基づきデータ改竄の無いとの判定を条件として前記階層構成変更処理を許容する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１１】
前記管理データ検証値記憶部は、
前記データ管理ツリーの最上位に設定される１つの一方向性関数算出値を管理データ検証値として格納するとともに、前記データ管理ツリーの中間階層の中間データを管理データ検証値として格納した構成であり、
前記検証処理部は、
前記中間データの下位に含まれるデータ管理ツリーを構成するデータの検証において、前記中間データを管理データ検証値として設定した検証処理を実行する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１２】
前記管理データ検証値記憶部は、
複数のデータ管理ツリーの最上位に設定される複数の一方向性関数算出値を管理データ検証値として格納した構成であり、
前記検証処理部は、
前記データ管理ツリーを構成するデータの検証において、検証対象データの含まれるデータ管理ツリーの最上位に設定される一方向性関数算出値を管理データ検証値として設定した検証処理を実行する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１３】
前記管理データ記憶部は、管理データを暗号化して格納した構成であり、
前記管理データの暗号化または復号化に適用する鍵を耐タンパ構成を持つセキュリティチップ内の記憶部に格納した構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１４】
前記管理データ記憶部は、管理データを暗号化して格納した構成であり、
前記管理データの暗号化または復号化に適用する第１の鍵を暗号化する第２の鍵を耐タンパ構成を持つセキュリティチップ内の記憶部に格納し、セキュリティチップ内での復号処理により、第１の鍵をセキュリティチップ外に出力する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１５】
前記ｎ分岐データ管理ツリーを構成する各ノードは、直下の階層のｎ個のデータ各々に基づいて生成される唯一の一方向性関数算出値を格納したデータとして構成され、
前記検証処理部は、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のｎ個のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を実行する構成であることを特徴とする請求項１に記載のデータ管理装置。
【請求項１６】
データ管理方法であり、
管理対象データを最下層とし、下層データに基づく一方向性関数による算出値を上位層データとして設定したｎ分岐データ管理ツリー（ｎは２以上の整数）の最上位に設定される１つの一方向性関数算出値を管理データ検証値としてデータ検証処理を実行するデータ検証ステップを有し、
前記データ検証ステップは、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行するステップを含むことを特徴とするデータ管理方法。
【請求項１７】
前記一方向性関数はハッシュ関数であることを特徴とする請求項１６に記載のデータ管理方法。
【請求項１８】
前記ｎ分岐データ管理ツリーを構成する各ノードは、直下の階層のｎ個のデータ各々に基づくｎ個の一方向性関数算出値を格納したデータリストとして構成され、
前記データ検証ステップは、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータリストに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行する構成であることを特徴とする請求項１６に記載のデータ管理方法。
【請求項１９】
前記データ管理方法は、さらに、
前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かうルートを、各階層におけるデータリスト識別情報としてのリストインデックスｊと、各リストにおける一方向性関数算出値識別情報としての一方向性関数インデックスｋとに基づいて決定するステップを有し、
前記データ検証ステップは、決定ルート上のデータについての検証処理を実行することを特徴とする請求項１６に記載のデータ管理方法。
【請求項２０】
前記データ管理方法は、さらに、
前記データ管理ツリーにおけるデータの追加、削除、変更のいずれかを伴うデータ更新処理の際に、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって検証処理を実行し、全ての照合処理の成立を条件として、データ更新を行うことを特徴とする請求項１６に記載のデータ管理方法。
【請求項２１】
前記データ管理方法は、さらに、
前記データ管理ツリーにおける階層の増加または減少処理を伴う階層構成変更の際に、該階層構成変更に伴う更新の必要なデータの更新前データに基づく検証処理を実行し、該検証に基づきデータ改竄の無いとの判定を条件として前記階層構成変更処理を許容することを特徴とする請求項１６に記載のデータ管理方法。
【請求項２２】
前記データ検証ステップは、
前記データ管理ツリーの中間階層の中間データを管理データ検証値として、前記中間データの下位に含まれるデータ管理ツリーを構成するデータの検証処理を実行することを特徴とする請求項１６に記載のデータ管理方法。
【請求項２３】
前記データ検証処理ステップは、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のｎ個のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を実行することを特徴とする請求項１６に記載のデータ管理方法。
【請求項２４】
管理データの検証処理をコンピュータ・システム上で実行せしめるコンピュータ・プログラムであって、
管理対象データを最下層とし、下層データに基づく一方向性関数による算出値を上位層データとして設定したｎ分岐データ管理ツリー（ｎは２以上の整数）の最上位に設定される１つの一方向性関数算出値を管理データ検証値としてデータ検証処理を実行するデータ検証ステップを有し、
前記データ検証ステップは、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行するステップを含むことを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理装置、およびデータ管理方法、並びにコンピュータ・プログラムに関する。例えば、コンテンツ、ライセンス情報や、課金情報など、改竄を防止すべき情報のデータの検証を効率的に実行することを可能とし、データの追加、削除などの更新時にも対応可能な改竄防止および検証機能を提供するデータ管理装置、およびデータ管理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
昨今、音楽データ、画像データ、ゲームプログラム等、様々なデータを、インターネット、衛星を介した通信他、有線、無線の各種通信網を介して配信するサービスが盛んになってきている。また、ＤＶＤ、ＣＤ、メモリカード等の流通可能な記憶媒体を介したコンテンツ流通も盛んになってきている。これらの流通コンテンツは、ユーザの所有する例えば、ＴＶ、ＰＣ（Personal Computer）、再生専用器、あるいはゲーム機器等に格納され、利用される。
【０００３】
ＰＣ等のユーザデバイスにおいて、上記の様々なコンテンツを利用する場合、利用コンテンツのみではなく、さらに、コンテンツの利用権情報としてのライセンス、あるいは課金情報など、様々なデータがユーザデバイスの記憶部に格納される。これらのデータは、ユーザによる不正な書き換えを防止した構成とすることが多い。
【０００４】
データ改竄の防止、および検証処理を実現する構成としてデジタル署名がある。これは、公開鍵暗号方式における秘密鍵を適用して、改竄検証用のデータ、あるいはデータ要約値を対象とした暗号処理を実行することで署名データを生成して、これを改竄検証用データとして付加するものである。
【０００５】
データが改竄されているか否かの検証を実行する場合は、署名データの生成に適用した秘密鍵に対応する公開鍵を適用して署名データの復号処理を実行して、元のデータ、すなわち、改竄検証用のデータ、あるいはデータ要約値と一致すれば、データの改竄がないと判定するものである。
【０００６】
しかし、このような、デジタル署名は、ユーザデバイスに格納されたデータが更新されるデータである場合には、そのデータが正当に更新されたデータであるか否かを保証するデータとはならない。
【０００７】
例えばある音楽コンテンツを３回だけ再生することを許容したライセンスをユーザが購入したとする。ライセンスは、ライセンスに基づくコンテンツ利用処理を実行するコンテンツ利用プログラム（例えばコンテンツプレイヤー）に従って、ユーザデバイスのハードディスク等の記憶装置に格納される。
【０００８】
コンテンツ利用プログラムは、ユーザがコンテンツを再生する毎にライセンスを書き換える。例えば、
残り再生許容回数＝２、
→残り再生許容回数＝１、
→残り再生許容回数＝０
等である。正当なコンテンツ利用を行えば、ライセンスに基づいて、コンテンツの再生は３回を超えては実行できないことになる。
【０００９】
しかし、３回だけ再生することを許容したライセンスを、ユーザがバックアップデータとして、そのまま複製して記憶装置に格納すれば、オリジナルのライセンスに基づくコンテンツ再生を３回実行した後、バックアップデータとして保持したライセンスを適用したコンテンツ利用が可能となる。
【００１０】
ライセンスに対して付加されたデジタル署名の検証を実行した場合でも、複製データにもオリジナルと同様の署名データが付加されているので、コンテンツ利用プログラムは、正当なライセンスであると判断してコンテンツ再生を許容してしまうという事態が発生する。
【００１１】
データの改竄検証のために管理データのハッシュ値を改竄検証用データとして利用する構成が例えば特許文献１に記載されている。しかし、特許文献１に記載の構成は、各管理データ毎に対応するハッシュ値を生成して、管理データ検証値として保持することが必要となり、管理データの増加に伴い、管理データ検証値も増加するという問題がある。
【特許文献１】特開２００３−８５３２１号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、上述の問題点に鑑みてなされたものであり、ライセンス情報や、課金情報など、データの更新、追加、削除などの発生する可能性のあるデータについて、改竄の検証を確実に実行することを可能としたデータ管理装置、およびデータ管理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の側面は、
データ管理装置であり、
管理対象データを格納する管理データ記憶部と、
前記管理対象データを最下層とし、下層データに基づく一方向性関数による算出値を上位層データとして設定したｎ分岐データ管理ツリー（ｎは２以上の整数）の最上位に設定される１つの一方向性関数算出値を管理データ検証値として格納した管理データ検証値記憶部と、
前記管理データ検証値に基づく管理データの検証処理を実行する検証処理部と、
を有することを特徴とするデータ管理装置にある。
【００１４】
さらに、本発明のデータ管理装置の一実施態様において、前記一方向性関数はハッシュ関数であることを特徴とする。
【００１５】
さらに、本発明のデータ管理装置の一実施態様において、前記管理データ検証値記憶部は、耐タンパ構成を持つセキュリティチップ内に構成されたセキュアメモリであることを特徴とする。
【００１６】
さらに、本発明のデータ管理装置の一実施態様において、前記検証処理部は、耐タンパ構成を持つセキュリティチップ内に構成され、前記検証処理部は、前記管理データ記憶部から読み出された検証処理に必要なデータを入力して検証処理を実行する構成であることを特徴とする。
【００１７】
さらに、本発明のデータ管理装置の一実施態様において、前記管理データ検証値記憶部は、耐タンパ構成を持つセキュリティチップ内に構成されたセキュアメモリであり、前記検証処理部は、前記セキュアメモリから読み出された管理データ検証値を入力して、検証処理を実行する構成であることを特徴とする。
【００１８】
さらに、本発明のデータ管理装置の一実施態様において、前記ｎ分岐データ管理ツリーを構成する各ノードは、直下の階層のｎ個のデータ各々に基づくｎ個の一方向性関数算出値を格納したデータリストとして構成され、前記検証処理部は、前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータリストに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行する構成であることを特徴とする。
【００１９】
さらに、本発明のデータ管理装置の一実施態様において、前記検証処理部は、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かうルートを、各階層におけるデータリスト識別情報としてのリストインデックスｊと、各リストにおける一方向性関数算出値識別情報としての一方向性関数インデックスｋとに基づいて決定し、決定ルート上のデータについての検証処理を実行する構成であることを特徴とする。
【００２０】
さらに、本発明のデータ管理装置の一実施態様において、前記検証処理部は、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次実行する検証の結果、全ての照合処理の成立を条件として、データ改竄無しとの判定を行う構成であることを特徴とする。
【００２１】
さらに、本発明のデータ管理装置の一実施態様において、前記検証処理部は、前記データ管理ツリーにおけるデータの追加、削除、変更のいずれかを伴うデータ更新処理の際に、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって検証処理を実行し、全ての照合処理の成立を条件として、データ更新を行う構成であることを特徴とする。
【００２２】
さらに、本発明のデータ管理装置の一実施態様において、前記検証処理部は、前記データ管理ツリーにおける階層の増加または減少処理を伴う階層構成変更の際に、該階層構成変更に伴う更新の必要なデータの更新前データに基づく検証処理を実行し、該検証に基づきデータ改竄の無いとの判定を条件として前記階層構成変更処理を許容する構成であることを特徴とする。
【００２３】
さらに、本発明のデータ管理装置の一実施態様において、前記管理データ検証値記憶部は、前記データ管理ツリーの最上位に設定される１つの一方向性関数算出値を管理データ検証値として格納するとともに、前記データ管理ツリーの中間階層の中間データを管理データ検証値として格納した構成であり、前記検証処理部は、前記中間データの下位に含まれるデータ管理ツリーを構成するデータの検証において、前記中間データを管理データ検証値として設定した検証処理を実行する構成であることを特徴とする。
【００２４】
さらに、本発明のデータ管理装置の一実施態様において、前記管理データ検証値記憶部は、複数のデータ管理ツリーの最上位に設定される複数の一方向性関数算出値を管理データ検証値として格納した構成であり、前記検証処理部は、前記データ管理ツリーを構成するデータの検証において、検証対象データの含まれるデータ管理ツリーの最上位に設定される一方向性関数算出値を管理データ検証値として設定した検証処理を実行する構成であることを特徴とする。
【００２５】
さらに、本発明のデータ管理装置の一実施態様において、前記管理データ記憶部は、管理データを暗号化して格納した構成であり、前記管理データの暗号化または復号化に適用する鍵を耐タンパ構成を持つセキュリティチップ内の記憶部に格納した構成であることを特徴とする。
【００２６】
さらに、本発明のデータ管理装置の一実施態様において、前記管理データ記憶部は、管理データを暗号化して格納した構成であり、前記管理データの暗号化または復号化に適用する第１の鍵を暗号化する第２の鍵を耐タンパ構成を持つセキュリティチップ内の記憶部に格納し、セキュリティチップ内での復号処理により、第１の鍵をセキュリティチップ外に出力する構成であることを特徴とする。
【００２７】
さらに、本発明のデータ管理装置の一実施態様において、前記ｎ分岐データ管理ツリーを構成する各ノードは、直下の階層のｎ個のデータ各々に基づいて生成される唯一の一方向性関数算出値を格納したデータとして構成され、前記検証処理部は、前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のｎ個のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を実行する構成であることを特徴とする。
【００２８】
さらに、本発明の第２の側面は、
データ管理方法であり、
管理対象データを最下層とし、下層データに基づく一方向性関数による算出値を上位層データとして設定したｎ分岐データ管理ツリー（ｎは２以上の整数）の最上位に設定される１つの一方向性関数算出値を管理データ検証値としてデータ検証処理を実行するデータ検証ステップを有し、
前記データ検証ステップは、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行するステップを含むことを特徴とするデータ管理方法にある。
【００２９】
さらに、本発明のデータ管理方法の一実施態様において、前記一方向性関数はハッシュ関数であることを特徴とする。
【００３０】
さらに、本発明のデータ管理方法の一実施態様において、前記ｎ分岐データ管理ツリーを構成する各ノードは、直下の階層のｎ個のデータ各々に基づくｎ個の一方向性関数算出値を格納したデータリストとして構成され、前記データ検証ステップは、前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータリストに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行する構成であることを特徴とする。
【００３１】
さらに、本発明のデータ管理方法の一実施態様において、前記データ管理方法は、さらに、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かうルートを、各階層におけるデータリスト識別情報としてのリストインデックスｊと、各リストにおける一方向性関数算出値識別情報としての一方向性関数インデックスｋとに基づいて決定するステップを有し、前記データ検証ステップは、決定ルート上のデータについての検証処理を実行することを特徴とする。
【００３２】
さらに、本発明のデータ管理方法の一実施態様において、前記データ管理方法は、さらに、前記データ管理ツリーにおけるデータの追加、削除、変更のいずれかを伴うデータ更新処理の際に、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって検証処理を実行し、全ての照合処理の成立を条件として、データ更新を行うことを特徴とする。
【００３３】
さらに、本発明のデータ管理方法の一実施態様において、前記データ管理方法は、さらに、前記データ管理ツリーにおける階層の増加または減少処理を伴う階層構成変更の際に、該階層構成変更に伴う更新の必要なデータの更新前データに基づく検証処理を実行し、該検証に基づきデータ改竄の無いとの判定を条件として前記階層構成変更処理を許容することを特徴とする。
【００３４】
さらに、本発明のデータ管理方法の一実施態様において、前記データ検証ステップは、前記データ管理ツリーの中間階層の中間データを管理データ検証値として、前記中間データの下位に含まれるデータ管理ツリーを構成するデータの検証処理を実行することを特徴とする。
【００３５】
さらに、本発明のデータ管理方法の一実施態様において、前記データ検証処理ステップは、前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のｎ個のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を実行することを特徴とする。
【００３６】
さらに、本発明の第３の側面は、
管理データの検証処理をコンピュータ・システム上で実行せしめるコンピュータ・プログラムであって、
管理対象データを最下層とし、下層データに基づく一方向性関数による算出値を上位層データとして設定したｎ分岐データ管理ツリー（ｎは２以上の整数）の最上位に設定される１つの一方向性関数算出値を管理データ検証値としてデータ検証処理を実行するデータ検証ステップを有し、
前記データ検証ステップは、
前記データ管理ツリーを構成する連続する２つの階層中、上位階層のデータに含まれる一方向性関数算出値を照合用データとし、下位の階層のデータに基づいて一方向性関数を適用して算出される値を検証データとして、検証データと照合用データが一致するか否かの判定処理を、前記データ管理ツリーの上位階層から下位階層、または下位階層から上位階層に向かって順次、実行するステップを含むことを特徴とするコンピュータ・プログラムにある。
【００３７】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＣＤやＦＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００３８】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００３９】
本発明の構成によれば、セキュリティチップ内の記憶部にデータ管理ツリーの最上位に設定される一方向性関数に基づく算出値、例えばハッシュ値を格納し、この格納値を管理データ検証値として適用し、データ管理ツリーの最下層に設定される全ての管理データの改竄検証を行うことが可能となる。管理データが増加した場合でも、セキュリティチップ内の記憶部に格納すべき管理データ検証値のデータ量を増加させる必要がなく、多くの管理データの改竄検証が可能となる。
【００４０】
さらに、本発明の構成によれば、管理データの追加、削除、変更等のデータ更新が行われる場合も、データ管理ツリーの一方向性関数に基づく算出値、例えばハッシュ値に基づくデータ検証処理を実行する構成としたので、不正なデータ更新の防止、適正なデータ管理が実現される。
【００４１】
さらに、本発明の構成によれば、セキュリティチップ内の記憶部にデータ管理ツリーの最上位に設定される一方向性関数に基づく算出値のみならず、データ管理ツリーの中間階層のデータとしての一方向性関数に基づく算出値、例えばハッシュ値を格納し、格納した中間階層データの下位にあるデータの検証には、この中間階層のデータを管理データ検証値として適用したデータ検証を実行する構成としたので、効率的な検証処理が可能となる。
【００４２】
さらに、本発明の構成によれば、データ管理ツリーの階層の増加、削減処理を適宜、実行可能な構成とし、また、データ管理ツリーの任意のデータ、あるいは中間階層のデータを管理データ検証値として設定可能な構成としたので、様々な形状を持つデータ管理ツリーに基づくデータ管理を実行可能となる。
【００４３】
さらに、本発明の構成によれば、管理データを暗号化して格納し、暗号化データに基づいて設定されるデータ管理ツリーによる管理を実行する構成とし、また暗号処理に適用する鍵をセキュリティチップに格納する構成としたので、管理データの漏洩を効果的に防止することが可能となる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明のデータ管理装置、およびデータ管理方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は、以下の項目順に行う。
１．データ管理装置の構成
２．セキュリティチップの構成
３．データ管理構成
４．管理データの検証
５．データの追加、変更、削除
６．検証ルートの決定
７．ハッシュリストの階層が１のデータ管理ツリー
８．階層の増減
９．管理データの暗号化および復号化
１０．中間階層のハッシュリストによる検証
１１．複数のデータ管理ツリーに基づく管理構成
１２．管理データ検証値をルートハッシュリストとした構成
１３．データ管理ツリーの任意部分で管理データ検証値を設定、管理する構成
１４．ハッシュ値によるデータ管理ツリー
【００４５】
［１．データ管理装置の構成］
図１に本発明の一実施例に係るデータ管理装置の構成例を示す。データ管理装置１０１は、プログラム実行機能、演算処理機能を持つＣＰＵ（Central Processing Unit）１０２を有し、ＣＰＵ１０２は、セキュリティチップ１０５へのアクセス、ホスト記憶部１０４への各種データの保存や読み出し処理制御等を行う。
【００４６】
メモリ１０３は、ＣＰＵ１０２によって実行される各種プログラム、例えば各種のアプリケーションプログラムなどを記憶するＲＯＭ（Read Only Memory）、実行プログラムのロード領域、また、各プログラム処理におけるワーク領域として機能するＲＡＭ（Random Access Memory）によって構成される。
【００４７】
ホスト記憶部１０４は、データ管理装置１０１における管理データ、すなわち、コンテンツや、ライセンス、課金データなどの様々な管理データ、及びデータ管理ツリーのハッシュリスト等を保存する。データ管理ツリーのハッシュリストについては、後段で詳細に説明する。
【００４８】
セキュリティチップ１０５ａ，１０５ｂは、データ管理装置において管理するデータの検証処理を実行する。セキュリティチップ１０５ａ，１０５ｂは、外部からの不正なアクセスによる格納データの書き換えを防止した耐タンパ構成を持つ。具体的には、セキュリティチップ内部に格納された所定の処理プログラムによってのみデータ書き換えを可能としたり、あるいは所定の認証を実行した外部装置からの入力データのみを更新データとして許容するなどの処理を行う。図には、セキュリティチップ１０５ａをデータ管理装置１０１の内部に、セキュリティチップ１０５ｂをデータ管理装置１０１の外部に設置した構成を示しているが、これらはいずれか一方に構成されればよい。すなわち、セキュリティチップは、データ管理装置の機器内部にあっても外部にあっても構わない。セキュリティチップがデータ管理装置外部にある場合はデータ管理装置とのデータ通信を可能とする。
【００４９】
［２．セキュリティチップの構成］
次に、図２を参照してセキュリティチップ１０５の構成について説明する。ＣＰＵ２０１は、セキュリティチップ１０５の外部とのデータの授受、内蔵するセキュアメモリ２０３へのアクセス、データ管理装置から入力したデータ処理、外部出力するデータに関するデータ処理等を行う。
【００５０】
メモリ２０２は、ＣＰＵ２０１によって実行される各種プログラムを記憶するＲＯＭ（Read Only Memory）、実行プログラムのロード領域、また、各プログラム処理におけるワーク領域として機能するＲＡＭ（Random Access Memory）によって構成される。
【００５１】
セキュアメモリ２０３は、ＣＰＵ２０１によって実行されるプログラムに基づいてアクセス可能なメモリ領域であり、外部からのアクセスを排除し、格納データの外部からのアクセスに基づく改竄を不能としたデータ記憶領域である。インタフェース２０４は外部とのデータ通信用インタフェースである。インタフェース２０４は、セキュリティチップ１０５内部のデータバス上のデータやメモリ２０２、セキュアメモリ２０３の格納データに対する外部からのアクセスを防止する機能を持つモジュールとした構成される。すなわちセキュリティチップ１０５は、耐タンパ構成を持つチップとして構成される。
【００５２】
［３．データ管理構成］
次に、コンテンツや、ライセンス、課金データなどの様々な管理データ、及びデータ管理ツリーの一方向性関数に基づく算出値、例えばハッシュ値からなるハッシュリストに基づくデータ管理構成について説明する。管理データ、及びデータ管理ツリーのハッシュリストは、図１のデータ管理装置１０１中のホスト記憶部１０４に格納される。なお、以下の実施例では、一方向性関数の一例としてハッシュ値を適用した例について説明するが、本発明は、ハッシュ値に限らず他の一方向性関数を適用した構成も包含するものである。
【００５３】
図３はデータ管理ツリーの階層数がｍ、管理対象データ数がｎの場合のデータ管理システムにおける管理データの構造を示している。図３において、データ管理ツリーの最下位層、すなわち、階層Ｌ＝０に管理対象データネすなわち、コンテンツや、ライセンス、課金データなどが設定される。管理対象データＤ（ｘ）は個々の管理データを表し、ｘは対象の管理データのインデックス、すなわちデータインデックスを示す。管理対象データ数がｎの場合、データインデックスｘ＝０〜ｎ−１の値として設定される。
【００５４】
階層Ｌ＝０におけるデータであるＤ（ｘ）は、例えば、コンテンツや、ライセンス、課金データなどの様々な管理データの実体データである。例えば、データＤ（０）３０４は、データインデックスｘ＝０が付与された実体データである。
【００５５】
データ管理ツリーにおいて、Ｌ＝０以外の上位階層、すなわち、階層Ｌ＞０におけるデータであるＨＬ（Ｌ，ｊ）はハッシュリストを示している。ＨＬ（Ｌ，ｊ）中のＬはデータ管理ツリーにおける階層数Ｌ＝０〜ｍ−１を示し、ｊは階層Ｌにおける対象のハッシュリストのインデックスを示す。例えば、図３において階層Ｌ＝１に示すＨＬ（１，０）３０３は、階層が１で、インデックス０のハッシュリストであることを示している。
【００５６】
ハッシュリストインデックスは、同一階層におけるハッシュリストの識別値であり、例えば図３に示すように、左端を０とし、右端を２（ｍ−１）−１として、各階層において、０〜２（ｍ−１）−１の値をとる。なお、ハッシュリストインデックスはｊとして示す。すなわち、ハッシュリストインデックスｊは、ｊ＝０〜２（ｍ−１）−１の値をもつ各階層におけるハッシュリストの識別値である。
【００５７】
１つのハッシュリストＨＬ（Ｌ，ｊ）には、下位のデータに基づいて生成されるハッシュ値が格納される。図３に示すツリーは２分岐ツリーであり、１つのノードに２つの下位ノードまたはリーフが存在する。なお、最下位層（Ｌ＝０）の要素をリーフと呼び、リーフ以外の要素をノードと呼ぶ。
【００５８】
図３に示すツリーは２分岐ツリーであるので、１つのハッシュリストＨＬ（Ｌ，ｊ）には、下位の２つのノードまたは２つのリーフに対応する２つのハッシュ値が格納される。
【００５９】
ハッシュリストＨＬ（Ｌ，ｊ）に含まれるハッシュ値ＨＬ（Ｌ，ｊ）．Ｈ（ｋ）は下位のデータに基づいて生成されるハッシュ値を示す。ｋはハッシュリストＨＬ（Ｌ，ｊ）におけるハッシュ値のインデックスを示す。２分岐ツリーの場合は、１つのハッシュリストに２つのハッシュ値が格納され、それぞれにｋ＝０，１の２つのハッシュ値インデックスのいずれかが設定される。
【００６０】
図３において、階層Ｌ＝１に示す左端のハッシュリストＨＬ（１，０）３０３には２つの下位データ、すなわち、Ｄ（０）およびＤ（１）のハッシュ値が格納される。すなわち、ＨＬ（１，０）．Ｈ（０）と、ＨＬ（１，０）．Ｈ（１）である。具体的には、
リーフＤ（０）のハッシュ値＝ＨＬ（１，０）．Ｈ（０）
リーフＤ（１）のハッシュ値＝ＨＬ（１，０）．Ｈ（１）
がＨＬ（１，０）３０３に格納されるハッシュ値である。
【００６１】
なお、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【００６２】
また、１つのノードに３つ以上の下位ノードまたはリーフを設定するツリー構成も可能である。例えば３分岐ツリーの場合は、各ハッシュリストには下位のノードまたはリーフに対応する３つのハッシュ値が格納されることになる。
【００６３】
一方向性関数算出値識別情報として設定される一方向性関数インデックス、すなわち、ハッシュ値インデックスｋは、分岐数に応じた識別値をもつ。ハッシュリストに格納される各ハッシュ値には、２分岐であれば、０，１の２つの識別値のいずれか、３分岐であれば、０，１，２の３つの識別値のいずれかが対応付けられることになる。
【００６４】
なお、必ずしも下位にノードやリーフが存在するとは限らない。このように、ハッシュリストに含めるハッシュ値を生成する下位のデータが存在しない場合の処理は任意の態様として定めることが可能である。以下では、下位データが存在しない場合には、長さ０のデータ（ｎｕｌｌ）に対するハッシュ値（Ｈａｓｈ（ｎｕｌｌ））を、ハッシュリストに設定するものとして説明する。
【００６５】
階層ツリーにおいては、ハッシュリストは、２つのカテゴリーに区分できる。すなわち、
階層Ｌ＝１におけるハッシュリストは下位の管理データのハッシュ値を含む。
階層Ｌ＞１におけるハッシュリストは下位のハッシュリストのハッシュ値を含む。
という構成である。
【００６６】
図３に示すように、最下位のリーフに管理対象データを構成し、上位ノードに下位のデータのハッシュ値をリストとして設定したハッシュリストを階層状に構成したものをデータ管理ツリーと呼ぶ。
【００６７】
なお、上述したように、各ハッシュリストに含めるハッシュ値の数は任意である。図３のツリー構成は、全てのハッシュリストが２つのハッシュ値を含む場合の２分岐ツリーの構成例である。
【００６８】
最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）３０１はデータ管理ツリーにおける最上位のハッシュリスト３０２（図３ではＨＬ（ｍ−１，０））に含まれる複数のハッシュ値、すなわち、ＨＬ（ｍ−１，０）．Ｈ（０）と、ＨＬ（ｍ−１，０）．Ｈ（１）とに基づいて生成されるハッシュ値である。
【００６９】
データ管理ツリーを構成するデータおよびハッシュリストは、図１に示すホスト記憶部１０４に格納される。また、セキュリティチップ１０５内のセキュアメモリ２０３（図２参照）には最低限、管理データ検証値として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）３０１（図３参照）を保管する。
【００７０】
セキュリティチップ１０５のセキュアメモリ２０３のメモリ容量は、比較的小容量であるため、格納可能なデータ量が限定されるが、本発明の構成では、少なくとも最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）３０１をセキュアに保持することで、リーフを構成するデータの改竄検証を実行することが可能となる。
【００７１】
［４．管理データの検証］
次に、図３に示すデータおよびハッシュリストからなる管理ツリーを格納したデータ管理装置において実行するデータ検証処理について説明する。図３に示す管理ツリーを構成するリーフの１つのデータについての検証処理例を説明する。
【００７２】
データインデックスｘをｘ＝ｄａｔａＩＤとして設定した１つの管理データ、Ｄ（ｄａｔａＩＤ）が完全でかつ最新の状態であるかを検証する処理について説明する。
【００７３】
検証処理の手法には２つの方式が存在する。第１の方式は、データ管理ツリーの階層Ｌの最上位（Ｌ＝ｍ−１）から下位に向かって検証を実行する方式である。第２の方式は、最下位（Ｌ＝０）から上位に向かって検証を実効する方式である。図４に最上位から下位への検証を行う方式についての手順を示すフローチャートを示す。図５に最下位から上位への検証を行う方式についての手順を示すフローチャートを示す。
【００７４】
検証処理は図１に示すデータ管理装置１０１内のＣＰＵ１０２の制御の下に実行してもよく、また、セキュリティチップ１０５内のＣＰＵ２０１の制御の下に行ってもよい。検証処理をデータ管理装置１０１内のＣＰＵ１０２の制御の下に実行する場合は、事前にデータ管理装置１０１はセキュリティチップ１０５のセキュアメモリ２０３に保管してある管理データ検証値を取得し、取得した管理データ検証値に基づいて検証を実行する。なお、管理データ検証値は図３における最上位ハッシュ値を含む。検証処理をセキュリティチップ１０５が行う場合は、必要な情報は適宜、データ管理装置１０１のホスト記憶部１０４から供給されるものとする。
【００７５】
（１）上位から下位方向への検証処理
まず、図４を参照して、データ管理ツリーの階層の最上位から下位へ向かって検証を行う手順について説明する。まず、ステップＳ１０１において、検証対象のデータが所属するデータ管理ツリーにおける階層を示す変数Ｌの初期化を実行する。すなわち、階層識別値Ｌの初期値を設定する。
【００７６】
なお、最終的な検証対象のデータは、通常はデータ管理ツリーにおける最下層のデータ、すなわちコンテンツ、ライセンス、課金データなどの実データである。本方式、すなわちデータ管理ツリーの階層の最上位から下位へ向かって検証を行う構成においては、検証対象のデータは、上位から順に設定され、順次、下位層に移行し最終的に最下層のデータに到達して、検証処理が終了することになる。
【００７７】
ステップＳ１０１において設定する階層識別値Ｌの初期値はＬ＝ｍ−１、すなわち、図３に示す最上位ハッシュ値３０１の直下のハッシュリストＨＬ（ｍ−１，０）の属する階層ｍ−１となる。
【００７８】
次にステップＳ１０２において、検証対象データとの照合する値、すなわち照合用ハッシュ値の初期化を行う。照合用ハッシュ値の値は、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として定義される。ステップＳ１０２では、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］の初期化を実行する。上位層から下位層に向かう検証方式においては、照合用ハッシュ値の初期値は、最上位ハッシュ値３０１（図３参照）となる。
【００７９】
ステップＳ１０３において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、検証対象データ［Ｖ＿Ｄａｔａ］を入力し、データ管理ツリーの階層の最上位から下位へ向かう検証ルートの定義情報としてのハッシュ値インデックスｋを計算する。検証対象データ［Ｖ＿Ｄａｔａ］は、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］に基づく検証対象となるデータである。最初の検証対象データは、図３におけるハッシュリスト３０２となる。このハッシュリスト３０２を、初期的に照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として設定される最上位ハッシュ値３０１と照合を行うことになる。
【００８０】
検証対象データ［Ｖ＿Ｄａｔａ］は、一般的な記述とした場合、階層ＬがＬ＞０の場合はハッシュリストＨＬ（Ｌ，ｊ）として設定される。ここでｊは階層Ｌにおけるハッシュリストインデックスである。また階層Ｌが最下層、すなわちＬ＝０の場合は、検証対象データ［Ｖ＿Ｄａｔａ］は、管理データＤ（ｄａｔａＩＤ）となる。
【００８１】
ハッシュ値インデックスｋは、データ管理ツリーの階層の最上位から下位へ向かう検証ルートを定義する値として適用可能な値である。例えば図５に示すようなデータ管理ツリーにおいて、最終検証対象データが、データ３２７である場合、その検証ルートは、最上位ハッシュ値３２１からハッシュリスト３２２，３２３，３２４，３２５，３２６、そしてデータ３２７に至るルートとなる。すなわち、最上位ハッシュ値３２１から検証対象データＤ３２７までを結ぶ経路を決定してそのルート上のハッシュリストに基づいて上位から下位へ向かって検証処理を実行すればよい。
【００８２】
検証ルート定義情報として適用されるハッシュ値インデックスｋは、最上位ハッシュ値３２１から最終検証対象データＤ３２７までを結ぶ経路を定義する値となる。図５は、ハッシュ値インデックスｋを、左側０、右側１として設定した例を示している。図５に示すデータ管理ツリーにおいて、検証対象データをデータ３２７とした場合、ｋは、順次、０，０，１，１，１という値として設定されることになる。このように２分岐ツリーの場合は、ｋは異なる２値、例えばｋ＝０または１として、２つのルートから１つを選択可能な値として定義される。３分岐ツリーの場合は、ｋ＝０，１，２等の３つの値が設定され、各処理毎に、これらの中から１つの値が設定され、ルートが決定する。なお、ルート決定処理の詳細については後述する。
【００８３】
図５に示すように、ツリー構成と、最終的な検証対象データとに基づいて検証ルートが決定される。この検証ルートの定義情報としてハッシュ値インデックスｋが利用される。ルート決定は情報処理システムで行ってもセキュリティチップで行っても良い。
【００８４】
ステップＳ１０４において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力した検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を計算により求める。なお、前述したように、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【００８５】
まず、最初にホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力する検証対象データ［Ｖ＿Ｄａｔａ］は、図３に示すハッシュリスト３０２となる。ハッシュリスト３０２には、２つのハッシュ値［ＨＬ（ｍ−１，０）．Ｈ（０）］と、［ＨＬ（ｍ−１，０）．Ｈ（１）］が含まれる。ステップＳ１０４では、２つのハッシュ値［ＨＬ（ｍ−１，０）．Ｈ（０）］と、［ＨＬ（ｍ−１，０）．Ｈ（１）］に基づいて、［Ｖ＿Ｄａｔａ］のハッシュ値である［Ｖ＿Ｈａｓｈ］を求める。具体的には、例えば２つのハッシュ値［ＨＬ（ｍ−１，０）．Ｈ（０）］と、［ＨＬ（ｍ−１，０）．Ｈ（１）］の連結データにＳＨＡ−１などのハッシュアルゴリズムを適用して検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を求める。
【００８６】
ステップＳ１０５において、検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］と、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］との照合処理を行い、両者が一致するか否かを判定する。
【００８７】
両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ１０９に進み処理を終了する。
【００８８】
ステップＳ１０５における照合において、両者が一致した場合、すなわち、
Ｐ＿Ｈａｓｈ＝Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、正当なデータ、すなわち改竄データや改竄データに基づいて生成されたハッシュ値ではないと判断される。
【００８９】
検証対象データ［Ｖ＿Ｄａｔａ］の正当性が確認されると、次に、ステップＳ１０６において、検証処理の終了判定を行う。終了の条件は検証対象のデータが所属するデータ管理ツリーにおける階層を示す階層識別値Ｌが０、すなわち、データ管理ツリーの最下位層のリーフに対応するデータを検証対象データとした処理が実行された時である。
【００９０】
本方式は、データ管理ツリーの階層の最上位から下位へ向かう検証ルートに沿って、順次、検証を実行する方式であり、Ｌ＝０が成立する場合は、さらに下位の層に検証対象データが存在しないことを意味する。従って、ステップＳ１０５の検証対象ハッシュ値と照合用ハッシュ値が一致確認において、データ管理ツリーの最下位層、すなわちＬ＝０のデータを検証対象データ［Ｖ＿Ｄａｔａ］として、このデータに基づいて生成された検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］との照合が成立した場合は、ステップＳ１０６の判定においてＬ＝０が成立し、図５に示す検証ルートすなわち最上位ハッシュ値３２１から最終検証対象データ３２７までの検証処理がすべて照合成立という結果で終了したことを意味し、検証は成功となり、ステップＳ１１０に進み、処理が正常終了する。すなわち、データ改竄がないと判定して処理が終了することになる。
【００９１】
ステップＳ１０６において、Ｌ＝０でない場合は、下位に検証対象のノードまたはリーフが存在することを意味する。この場合は、ステップＳ１０７に進み、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を更新する。すなわち、データ管理ツリーの階層の１つ下の層のハッシュ値を照合用ハッシュ値とする。
【００９２】
更新値として設定される新たな照合用ハッシュ値［Ｐ＿Ｈａｓｈ］は、直前で検証した照合用データ［Ｖ＿Ｄａｔａ］に含まれ、インデックスがｋのハッシュ値である。すなわち、［Ｖ＿Ｄａｔａ．Ｈ（ｋ）］である。
【００９３】
例えば図５において、最上位ハッシュ値３２１を照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として、ＨＬ３２２を検証用データ［Ｖ＿Ｄａｔａ］として、照合が成立した場合は、次の更新照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として、ハッシュリスト３２２に含まれる２つのハッシュ値Ｈ（０）とＨ（１）から、検証ルート定義情報として適用されるハッシュ値インデックスｋ＝０に従って、ハッシュ値Ｈ（０）が選択されて、これが更新された照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として設定される。
【００９４】
ステップＳ１０８では、検証対象のデータが所属するデータ管理ツリーにおける階層を示すＬをデクリメントする。すなわち、１つ下の階層に階層識別値Ｌの値を更新し、検証処理を１つ下の階層において実行する。
【００９５】
以下検証が失敗するか、または検証が成功するまでステップＳ１０３以下の処理を繰り返し実行する。このようにデータ管理ツリーの階層を上位から下位にたどりながら検証処理を繰り返す。最終的に最下層、すなわちＬ＝０の層のデータを検証対象データ［Ｖ＿Ｄａｔａ］として生成した検証用ハッシュ値［Ｖ＿Ｈａｓｈ］がその上の階層の照合用ハッシュ値［Ｐ＿Ｈａｓｈ］と一致すれば、検証ルート上の全ての隣接層間のデータ照合が成立したことになり、データ改竄のないことが証明され、処理が終了する。
【００９６】
検証ルート上の、いずれかのデータ間の照合が成立しない場合は、ステップＳ１０９に進み、データ改竄ありの結論を出して処理を終了する。
【００９７】
（２）下位から上位方向への検証処理
次に、図６を参照して、データ管理ツリーの階層の下位から上位へ向かって検証を行う手順について説明する。まず、ステップＳ２０１において、検証対象のデータが所属するデータ管理ツリーにおける階層を示す変数Ｌの初期化を実行する。すなわち、階層識別値Ｌの初期値を設定する。
【００９８】
この方式の場合、初期値はデータ管理ツリーの最下層の管理データを示すＬ＝０として設定する。
【００９９】
次にステップＳ２０２において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、検証対象データ［Ｖ＿Ｄａｔａ］を入力する。検証対象データ［Ｖ＿Ｄａｔａ］は、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］に基づく検証対象となるデータである。最初の検証対象データは、図５のデータ管理ツリー構成の場合、最下層のデータ３２７となる。このデータ３２７を、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として設定される直上の上位ハッシュリスト３２６に含まれる１つのハッシュ値［Ｈ（１）］と照合を行うことになる。
【０１００】
検証対象データ［Ｖ＿Ｄａｔａ］は、一般的な記述とした場合、階層ＬがＬ＞０の場合はハッシュリストＨＬ（Ｌ，ｊ）である。ここでｊは階層Ｌにおけるハッシュリストのインデックスである。また階層ＬがＬ＝０の場合は管理データＤ（ｄａｔａＩＤ）である。初期値は検証対象の管理データであるＤ（ｄａｔａＩＤ）となる。
【０１０１】
ステップＳ２０３において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力した検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を計算により求める。なお、前述したように、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【０１０２】
ステップＳ２０４では、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、照合用ハッシュ値を含むハッシュリストＨＬとしての照合用データ［Ｐ＿Ｄａｔａ］を入力し、検証ルート定義情報として適用されるハッシュ値インデックスｋを取得する。
【０１０３】
照合用データ［Ｐ＿Ｄａｔａ］は、検証対象データ［Ｖ＿Ｄａｔａ］に直結した上位層のハッシュリストである。すなわち、図５の例において、検証対象データ［Ｖ＿Ｄａｔａ］が図５に示すデータ３２７である場合、照合用データ［Ｐ＿Ｄａｔａ］は、ハッシュリスト３２６となる。ハッシュリストには複数のハッシュ値が含まれる。図５に示すように２分岐ツリーの場合はハッシュ値インデックスｋ＝０，１の２つのハッシュ値［Ｈ（０）］、［Ｈ（１）］が含まれ、このいずれかが、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として選択される。この選択のために検証ルート定義情報として適用されるハッシュ値インデックスｋを取得する。
【０１０４】
検証ルート定義情報として適用されるハッシュ値インデックスｋは、データ管理ツリーの階層の下位から上位へ向かう検証ルートを定義する値であり、例えば図５に示すようなデータ管理ツリーにおいて、検証対象データ３２７から最上位ハッシュ値３２１までのハッシュリスト３２６，３２５，３２４，３２３，３２２によって構成されるルートとなる。このルート上のハッシュリストに基づいて下位から上位へ向かって検証処理を実行すればよい。
【０１０５】
検証ルート定義情報として適用されるハッシュ値インデックスｋは、検証対象データＤ３２７から最上位ハッシュ値３２１までを結ぶ経路を定義する値となる。結果としては、先に、図４を参照して説明したルートと同一のルートが選択され、ｋは、下位層から順次、１，１，１，０，０という値として設定されることになる。
【０１０６】
ステップＳ２０５では、検証対象データ［Ｖ＿Ｄａｔａ］の直上の照合用データ（ハッシュリスト）［Ｐ＿Ｄａｔａ］から、検証ルート定義情報として適用されるハッシュ値インデックスｋに基づいて、ハッシュリストに含まれるハッシュ値から１つの照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を選択する。
【０１０７】
このように、ツリー構成と、最下層の検証対象データとに基づいて検証ルートが決定され、その検証ルートに基づいて、検証ルート定義情報として適用されるハッシュ値インデックスｋを設定する。ルート決定は情報処理システムで行ってもセキュリティチップで行っても良い。
【０１０８】
ステップＳ２０６において、検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］と、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］との照合処理を行い、両者が一致するか否かを判定する。
【０１０９】
両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ２１０に進み処理を終了する。
【０１１０】
ステップＳ２０６における照合において、両者が一致した場合、すなわち、
Ｐ＿Ｈａｓｈ＝Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、正当なデータ、すなわち改竄データや改竄データに基づいて生成されたハッシュ値ではないと判断される。
【０１１１】
検証対象データ［Ｖ＿Ｄａｔａ］の正当性が確認されると、次に、ステップＳ２０７において、次の検証対象ハッシュ値として、照合用テータ［Ｐ＿Ｄａｔａ］に含まれるハッシュ値から、検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を算出する。
【０１１２】
具体的には、照合用テータ［Ｐ＿Ｄａｔａ］に含まれる２つのハッシュ値Ｈ（０）と、Ｈ（１）に基づいて、［Ｖ＿Ｄａｔａ］のハッシュ値である［Ｖ＿Ｈａｓｈ］を求める。例えば２つのハッシュ値の連結データにＳＨＡ−１などのハッシュアルゴリズムを適用して検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を求める。
【０１１３】
ステップＳ２０８では、検証処理の処理階層判定を行う。処理階層判定は、検証対象のデータが所属するデータ管理ツリーにおける階層、つまり階層識別値Ｌがｍ−１、すなわち、階層ｍのデータ管理ツリーの最上位（ｍ）の最上位ハッシュ値の直下（階層ｍ−１）のハッシュリストを検証対象データとした処理を実行すべきか否かの判定処理として実行される。
【０１１４】
Ｌ＝ｍ−１である場合は、ステップＳ２１１に進み、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）をセットし、ステップＳ２１２において、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］、すなわち、最上位ハッシュ値と、階層ｍ−１のハッシュリストを検証用データ［Ｖ＿Ｄａｔａ］とし、このハッシュリストの格納ハッシュ値に基づいて生成する検証用ハッシュ値［Ｖ＿Ｈａｓｈ］との照合処理を実行する。この照合処理が、下位から上位へ向かう検証ルートにおける最終照合ポイントであり、この照合が成立した場合は、図５に示す検証ルートすなわち最下位データ３２７から最終検証対象ハッシュリスト３２６までの検証処理がすべて照合成立という結果で終了したことを意味し、検証は成功となり、ステップＳ２１３に進み、処理が正常終了する。すなわち、データ改竄がないと判定して処理が終了することになる。
【０１１５】
ステップＳ２１２の照合処理において、両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ２１０に進み処理を終了する。
【０１１６】
ステップＳ２０８において、Ｌ＝ｍ−１でないと判定された場合は、上位に検証対象のノードが存在することを意味する。この場合は、ステップＳ２０９に進み、Ｌ＝Ｌ＋１とする階層識別値Ｌの値の更新処理を実行する。すなわち、１つ上の階層に階層識別値Ｌの値を更新する。
【０１１７】
以下、検証が失敗するか、または検証が成功するまでステップＳ２０４以下の処理を繰り返し実行する。このようにデータ管理ツリーの階層を下位から上位にたどりながら検証処理を繰り返す。最終的にステップＳ２１２において、Ｌ＝ｍ−１の層のデータを検証対象データ［Ｖ＿Ｄａｔａ］として生成した検証用ハッシュ値［Ｖ＿Ｈａｓｈ］について、最上位ハッシュ値と一致すれば、検証ルート上の全ての隣接層間のデータ照合が成立したことになり、データ改竄のないことが証明され、処理が終了する。検証ルート上の、いずれかのデータ間の照合が成立しない場合は、ステップＳ２１０に進み、データ改竄ありの結論を出して処理を終了する。
【０１１８】
［５．データの追加、変更、削除］
次に、管理データの追加、変更、削除等のデータ更新処理を実行する場合の処理について、図７のフローチャートを参照して説明する。
【０１１９】
図７は、例えば、コンテンツ、ライセンス、課金データなどの管理データを追加、変更、削除する場合における処理のフローチャートである。ハッシュリストに含まれるハッシュ値に対応する下位のハッシュリスト、または管理データが存在しない場合、ハッシュリストに含まれるハッシュ値はサイズ０のデータ（ｎｕｌｌ）に対するハッシュ値（Ｈａｓｈ（ｎｕｌｌ））であるものとする。また、データの追加、変更、削除処理においてはデータ管理ツリーの階層数は変わらないものとする。
【０１２０】
追加、変更、削除処理では初期値として、更新前のデータ［Ｖ＿Ｄａｔａ］）として現在データ管理ツリー上に存在するデータを、更新後のデータ［Ｕ＿Ｄａｔａ］）として、更新後にデータ管理ツリーに登録されるデータをホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力するものとする。
【０１２１】
追加処理では初期値としてホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力する更新前データ［Ｖ＿Ｄａｔａ］、更新後データ［Ｕ＿Ｄａｔａ］は共に管理データ、あるいはハッシュリストであるとし、更新前データ［Ｖ＿Ｄａｔａ］は更新前は存在しない為、サイズが０のデータ（ｎｕｌｌ）であるものとする。
【０１２２】
変更処理では初期値としてホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力する更新前データ［Ｖ＿Ｄａｔａ］、更新後データ［Ｕ＿Ｄａｔａ］は共に管理データであるものとする。
【０１２３】
削除処理では初期値としてホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力する更新前データ［Ｖ＿Ｄａｔａ］、更新後データ［Ｕ＿Ｄａｔａ］は共に管理データ、あるいはハッシュリストであるとし、更新後データ［Ｕ＿Ｄａｔａ］は更新後は存在しないため、サイズが０のデータ（ｎｕｌｌ）であるものとする。
【０１２４】
追加、変更、削除処理においては、データ管理ツリー上のハッシュリストの検証処理についても併せて行う。検証処理を伴わない更新処理を許容すると追加、変更、削除に併せた改竄が行われる可能性があるからである。すなわち、攻撃者が任意のデータをデータ管理ツリーに設定してデータ更新を行ってしまう可能性を排除するために、追加、変更、削除処理においては、データ管理ツリー上のハッシュリストの検証処理を行うことを前提とする。
【０１２５】
追加、変更、削除処理等のデータ更新処理と、データ検証処理とを併せて実行する場合、先に図４を参照して説明した検証処理のようにデータ管理ツリーの階層Ｌの最上位（Ｌ＝ｍ−１）から下位へ検証を行い、データ更新処理については下位から上位へ更新しながら戻る方法とすることも可能であるが、最下位（Ｌ＝０）から上位に検証と更新を同時に行うことで、メモリ使用効率や処理時間の短縮が実現される。図７には、最下位（Ｌ＝０）から上位に検証と更新を同時に行う方式についての処理手順を示してある。
【０１２６】
追加、変更、削除処理等のデータ更新処理は、図１に示すデータ管理装置１０１内のＣＰＵ１０２の制御の下に実行してもよく、また、セキュリティチップ１０５内のＣＰＵ２０１の制御の下に行ってもよい。検証処理をデータ管理装置１０１内のＣＰＵ１０２の制御の下に実行する場合は、事前にデータ管理装置１０１はセキュリティチップ１０５のセキュアメモリ２０３に保管してある管理データ検証値を取得し、取得した管理データ検証値に基づいて検証を実行する。なお、管理データ検証値は図３における最上位ハッシュ値を含む。検証処理をセキュリティチップ１０５が行う場合は、必要な情報は適宜、データ管理装置１０１のホスト記憶部１０４から供給されるものとする。
【０１２７】
不正な更新処理が行われることを防止するため追加、変更、削除処理をセキュリティチップ１０５内で行い、更新前データ［Ｖ＿Ｄａｔａ］に対する更新後データ［Ｕ＿Ｄａｔａ］の正当性をセキュリティチップ１０５が検証、あるいは更新後データ［Ｕ＿Ｄａｔａ］そのものをセキュリティチップ１０５が生成する構成としてもよい。
【０１２８】
図７の処理フローの各ステップについて説明する。まず、ステップＳ３０１において、更新前データ［Ｖ＿Ｄａｔａ］が所属するデータ管理ツリーにおける階層を示す変数Ｌの初期化を実行する。すなわち、階層識別値Ｌの初期値を設定する。初期値はデータ管理ツリーの最下層の管理データを示すＬ＝０として設定する。なお、データ追加の場合は、前述したように、更新前データ［Ｖ＿Ｄａｔａ］は存在していないが、サイズが０のデータ（ｎｕｌｌ）を更新前データ［Ｖ＿Ｄａｔａ］として仮定する。
【０１２９】
次にステップＳ３０２において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、更新前データ［Ｖ＿Ｄａｔａ］を入力する。更新前データ［Ｖ＿Ｄａｔａ］は、データ管理ツリーの上位階層の照合用ハッシュ値［Ｐ＿Ｈａｓｈ］に基づく検証対象となる。更新前データ［Ｖ＿Ｄａｔａ］を、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として設定される直上の上位ハッシュリストに含まれる１つのハッシュ値と照合を行うことになる。
【０１３０】
更新前データ［Ｖ＿Ｄａｔａ］は、一般的な記述とした場合、階層ＬがＬ＞０の場合はハッシュリストＨＬ（Ｌ，ｊ）である。ここでｊは階層Ｌにおけるハッシュリストインデックスである。また階層ＬがＬ＝０の場合は管理データＤ（ｄａｔａＩＤ）である。初期値は検証対象の管理データであるＤ（ｄａｔａＩＤ）となる。
【０１３１】
ステップＳ３０３において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力した更新前データ［Ｖ＿Ｄａｔａ］のハッシュ値である更新前データハッシュ値［Ｖ＿Ｈａｓｈ］を計算により求める。なお、前述したように、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【０１３２】
ステップＳ３０４では、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、更新後データ［Ｕ＿Ｄａｔａ］を入力する。更新後データ［Ｕ＿Ｄａｔａ］は、更新前データ［Ｖ＿Ｄａｔａ］に入れ替えられるデータである。なお、データ削除処理の場合は、更新後データ［Ｕ＿Ｄａｔａ］は存在していないが、サイズが０のデータ（ｎｕｌｌ）を更新後データ［Ｕ＿Ｄａｔａ］として仮定する。
【０１３３】
ステップＳ３０５において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力した更新後データ［Ｕ＿Ｄａｔａ］のハッシュ値である更新後データハッシュ値［Ｕ＿Ｈａｓｈ］を計算により求める。なお、前述したように、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【０１３４】
ステップＳ３０６において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、照合用ハッシュ値を含むハッシュリストＨＬとしての照合用データ［Ｐ＿Ｄａｔａ］を入力し、更新ルート定義情報として適用されるハッシュ値インデックスｋを取得する。
【０１３５】
照合用データ［Ｐ＿Ｄａｔａ］は、検証対象となる更新前データ［Ｖ＿Ｄａｔａ］に直結した上位層のハッシュリストである。照合用データ［Ｐ＿Ｄａｔａ］は、ハッシュリストであり複数のハッシュ値が含まれる。２分岐ツリーの場合は２つのハッシュ値Ｈ（０）、Ｈ（１）が含まれ、このいずれかが、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として選択される。この選択のために更新ルート定義情報として適用されるハッシュ値インデックスｋを取得する。
【０１３６】
更新ルート定義情報として適用されるハッシュ値インデックスｋは、先に説明した検証ルート定義値ｋと同様、更新対象データから最上位ハッシュ値までを結ぶ経路を定義する値となる。
【０１３７】
ステップＳ３０７では、更新前データ［Ｖ＿Ｄａｔａ］の直上の照合用データ（ハッシュリスト）［Ｐ＿Ｄａｔａ］から、更新ルート定義情報として適用されるハッシュ値インデックスｋに基づいて、ハッシュリストに含まれるハッシュ値から１つの照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を選択する。
【０１３８】
このように、ツリー構成と、更新および検証対象データとに基づいて検証および更新ルートが決定される。ルート決定は情報処理システムで行ってもセキュリティチップで行っても良い。
【０１３９】
ステップＳ３０８において、更新前データ［Ｖ＿Ｄａｔａ］のハッシュ値である更新前データハッシュ値［Ｖ＿Ｈａｓｈ］と、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］との照合処理を行い、両者が一致するか否かを判定する。
【０１４０】
両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、更新前データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ３１５に進み処理を終了する。
【０１４１】
ステップＳ３０８における照合において、両者が一致した場合、すなわち、
Ｐ＿Ｈａｓｈ＝Ｖ＿Ｈａｓｈ
である場合は、更新前データ［Ｖ＿Ｄａｔａ］が、正当なデータ、すなわち改竄データや改竄データに基づいて生成されたハッシュ値ではないと判断される。
【０１４２】
更新前データ［Ｖ＿Ｄａｔａ］の正当性が確認されると、次に、ステップＳ３０９において、次の検証対象ハッシュ値を算出する。照合用データ［Ｐ＿Ｄａｔａ］に含まれるハッシュ値から、ハッシュ値［Ｖ＿Ｈａｓｈ］を算出し、これを新たな検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］とする。
【０１４３】
次に、ステップＳ３１０において、ステップＳ３０８の検証処理に適用したハッシュリスト［Ｐ＿Ｄａｔａ］のハッシュ値［Ｐ＿Ｄａｔａ．Ｈ（ｋ）］を更新後の値である［Ｕ＿Ｈａｓｈ］に更新する。すなわち、更新後データ［Ｕ＿Ｄａｔａ］を適用して、ハッシュ値を予め設定されたアルゴリズム、例えば、ＳＨＡ−１などを適用して算出し、これをハッシュリスト［Ｐ＿Ｄａｔａ］の新たな更新ハッシュ値［Ｐ＿Ｄａｔａ．Ｈ（ｋ）］として設定する。
【０１４４】
ステップＳ３１１では、更新ハッシュ値［Ｐ＿Ｄａｔａ．Ｈ（ｋ）］を含む更新後の［Ｐ＿Ｄａｔａ］のハッシュ値である［Ｕ＿Ｈａｓｈ］を計算により求める。
【０１４５】
ステップＳ３１２では、更新ハッシュ値［Ｐ＿Ｄａｔａ．Ｈ（ｋ）］を含む更新後の［Ｐ＿Ｄａｔａ］を、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４へ出力し格納する。ただし、この時点ではデータ管理ツリーは更新しない。
【０１４６】
データ管理装置は、更新ハッシュ値［Ｐ＿Ｄａｔａ．Ｈ（ｋ）］を含む更新後の［Ｐ＿Ｄａｔａ］を保持しておき、最終的な検証および更新シーケンスが正常に終了した時点で保持している更新後の［Ｐ＿Ｄａｔａ］を用いてデータ管理ツリーの対応部分を更新し、データ管理ツリーの更新を実行する。最終的な検証および更新シーケンスが正常に終了せず、異常終了した場合は、一時的に保持された各ノードの値としての［Ｐ＿Ｄａｔａ］の値は廃棄する。
【０１４７】
ステップＳ３１３では、検証および更新処理の処理階層判定を行う。処理階層判定は、処理対象、すなわち［Ｖ＿Ｄａｔａ］の所属するデータ管理ツリーにおける階層の判定処理として実行される。［Ｖ＿Ｄａｔａ］の所属するデータ管理ツリーにおける階層識別値Ｌがｍ−１、すなわち、階層ｍのデータ管理ツリーの最上位（ｍ）の最上位ハッシュ値の直下（階層ｍ−１）のハッシュリストが処理対象データであるか否かの判定処理として実行される。
【０１４８】
Ｌ＝ｍ−１である場合は、ステップＳ３１６に進み、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）をセットし、ステップＳ３１７において、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］、すなわち、最上位ハッシュ値と、階層ｍ−１のハッシュリストを検証用データ［Ｖ＿Ｄａｔａ］とし、このハッシュリストの格納ハッシュ値に基づいて生成する検証用ハッシュ値［Ｖ＿Ｈａｓｈ］との照合処理を実行する。この照合処理が、下位から上位へ向かう検証および更新ルートにおける最終照合ポイントであり、この照合が成立した場合は、更新対象の最下位データから最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）直下のハッシュリストまでの検証処理がすべて照合成立という結果で終了したことを意味する。
【０１４９】
ステップＳ３１８では、ステップＳ３１１において算出した更新後ハッシュ値［Ｕ＿Ｈａｓｈ］、すなわち、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）直下のハッシュリストの更新されたハッシュ値に基づいて算出した最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）［Ｕ＿Ｈａｓｈ］をセキュリティチップ１０５内のセキュアメモリ２０３に格納して処理を終了（Ｓ３１９）する。すなわち、データ検証および更新処理が終了することになる。
【０１５０】
ステップＳ３１７の照合処理において、両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ３１５に進み処理を終了する。
【０１５１】
ステップＳ３１３において、Ｌ＝ｍ−１でないと判定された場合は、上位に検証および更新対象のノードが存在することを意味する。この場合は、ステップＳ３１４に進み、Ｌ＝Ｌ＋１とする階層識別値Ｌの値の更新処理を実行する。すなわち、１つ上の階層に階層識別値Ｌの値を更新する。
【０１５２】
以下、検証が失敗するか、または検証が成功し、さらに更新処理が最上位ハッシュ値に至るまでステップＳ３０６以下の処理を繰り返し実行する。このようにデータ管理ツリーの階層を下位から上位にたどりながら検証処理および更新処理を繰り返す。最終的に最上位ハッシュ値の更新データをセキュリティチップに格納（Ｓ３１８）して処理を終了する。検証および更新過程において、いずれかのデータ間の照合が成立しない場合は、ステップＳ３１５に進み、データ改竄ありの結論を出して処理を終了する。
【０１５３】
［６．検証ルートの決定］
上述したデータ管理ツリーを適用したデータの検証あるいは更新処理において、データ検証ルートあるいは更新ルートを設定する値として、ハッシュ値インデックスｋを適用した。このハッシュ値インデックスｋを適用したルート決定方法について、以下説明する。なお、ルートの決定は情報処理システムが行ってもセキュリティチップが行っても良い。
【０１５４】
（１）ツリー上位から下位への処理におけるルート決定
データインデックスがｘ＝ｄａｔａＩＤである管理データ、Ｄ（ｄａｔａＩＤ）を検証する際に、データ管理ツリーの階層の最上位から下位への検証を行う場合を想定する。なお、上記実施例では、２分岐のツリー構成例を説明したが、ここでは任意の分岐数：ｎを持つｎ分岐ツリーにおけるルート設定処理例について説明する。
【０１５５】
図８に示すように、データ管理ツリーがハッシュリスト中に含むハッシュ値の総数がｎであるようなｎ分木の構造を持ち、データ管理ツリーの階層数をｍとしたデータ管理ツリーを想定する。
【０１５６】
最終的な検証対象のデータ、すなわちＬ＝０の最下層の最終検証対象データ３５０に対応するデータインデックスｘ＝ｄａｔａＩＤが既知であり、データ管理ツリーの検証対象の階層Ｌの値が与えられる。このとき、検証対象の階層Ｌ（Ｌ＝０〜ｍ−１）におけるハッシュリストインデックスは、ｊ＝０〜ｎ（ｍ−Ｌ−１）−１の範囲の値である。
【０１５７】
階層Ｌ、例えば図８においてＬ＝ｐの階層において、検証対象の［Ｖ＿Ｄａｔａ］に対応するハッシュリスト（Ｌ＞０）または、データ（Ｌ＝０）を決定するためには、ハッシュリストインデックスｊまたは、データインデックスｘの値を決定すればよい。ｊ，ｘは、最終検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤと、検証対象の階層Ｌに基づく下式によって算出される。
ｊ，ｘ＝ｆｌｏｏｒ（ｄａｔａＩＤ／（ｎＬ））・・・（式１）
【０１５８】
上記式において、ｆｌｏｏｒ（ｘ）はｘ以下の最大の整数値を返す関数であるとし、ｘｙはｘのｙによる累乗を示し、ｘ／ｙはｘのｙによる除算を示す。上記（式１）によって、データ管理ツリーの階層Ｌにおける検証対象のハッシュリストのハッシュインデックスｊ（Ｌ＞０）、または最下層のデータのデータインデックスｘ（Ｌ＝０）が決定される。例えば、図８において、階層Ｌ＝ｐにおいて、上記（式１）に基づいて、ｊの値が算出され、ハッシュリスト３５１が選択される。
【０１５９】
さらに、データ管理ツリーの上からに下に向かう検証を実行する場合は、ハッシュリストの照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を、上記ハッシュインデックスｊによって決定されたハッシュリスト、例えば図８のハッシュリスト３５１から選択することが必要となる。各ハッシュリストには、分岐数ｎに応じた個数のハッシュ値が格納され。それぞれにハッシュ値インデックスｋ＝０〜ｎ−１が設定されている。
【０１６０】
従って、ハッシュ値インデックスｋを決定することが必要となる。ハッシュ値インデックスｋは、最終検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤと、検証対象の階層Ｌに基づく下式によって算出される。
ｋ＝ｆｌｏｏｒ（ｄａｔａＩＤ／ｎ（Ｌ−１））ｍｏｄｎ
（ただしＬ≠０）・・・（式２）
【０１６１】
上記式において、ｆｌｏｏｒ（ｘ）はｘ以下の最大の整数値を返す関数であるとし、ｘｙはｘのｙによる累乗を示し、ｘ／ｙはｘのｙによる除算を示し、ｘｍｏｄｙはｘのｙによる剰余を示すものとする。Ｌ＝０の場合は、ハッシュ値インデックスｋの特定は不要である。
【０１６２】
上述したように、最終検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤと、検証対象のデータまたはハッシュリストの属する階層Ｌが与えられることにより、ハッシュリストインデックスｊまたは、データインデックスｘの値が（式１）によって算出され、また、ハッシュ値インデックスｋの値が（式２）によって算出される。
【０１６３】
このように、ハッシュリストインデックスｊまたは、データインデックスｘを決定し、ハッシュ値インデックスｋを算出することで、データ管理ツリーの最上位（Ｌ＝ｍ−１）から、最終検証対象データ（Ｌ＝０）のデータに至る１つのルートが決定される。検証処理は、このルートにあるハッシュリストおよびデータを対象として実行すればよい。
【０１６４】
なお、データ更新においても、検証処理を実行しながら行うものであるので、ルート決定処理は全く同様の処理として実行される。
【０１６５】
（２）ツリー下位から上位への処理におけるルート決定
次に、データインデックスがｘ＝ｄａｔａＩＤである管理データ、Ｄ（ｄａｔａＩＤ）を検証する際に、データ管理ツリーの階層の最下位から上位への検証を行う場合を想定する。任意の分岐数：ｎを持つｎ分岐ツリーにおけるルート設定処理例について説明する。
【０１６６】
すなわち、データ管理ツリーの各ハッシュリストに含まれるハッシュ値の数がｎであるようなｎ分木の構造を持ち、データ管理ツリーの階層数をｍとしたデータ管理ツリーを想定する。
【０１６７】
検証対象のデータ、すなわちＬ＝０の最下層の検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤが既知であり、データ管理ツリーの検証対象データ［Ｖ＿Ｄａｔａ］の属する階層Ｌの値が与えられる。このとき、照合用データ［Ｐ＿Ｄａｔａ］を持つ階層Ｌ＋１のハッシュリストを特定すればよい。なお、（Ｌ＝１〜ｍ−１）におけるハッシュリストインデックスは、ｊ＝０〜ｎ（ｍ−Ｌ−１）−１の範囲の値である。
【０１６８】
データ管理ツリーの下から上へ向かう検証ルートの設定において、まず、Ｌ＝０の最下層の検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤに基づいて、データＤ（ｄａｔａＩＤ）を持つデータを特定する。さらに、そのデータに連結された照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を持つ照合用ハッシュデータ［Ｐ＿Ｄａｔａ］を構成するハッシュリストを特定することが必要となる。これらのデータまたはハッシュリストを特定するための算出処理は、ハッシュリストインデックスｊまたは、データインデックスｘの値の算出処理となる。ｊ，ｘは、検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤと、検証対象のデータまたはハッシュリストの対応階層Ｌに基づく下式によって算出される。
ｊ，ｘ＝ｆｌｏｏｒ（ｄａｔａＩＤ／（ｎ（Ｌ＋１）））
（ただし、Ｌ≠ｍ−１）・・（式３）
【０１６９】
上記式において、ｆｌｏｏｒ（ｘ）はｘ以下の最大の整数値を返す関数であるとし、ｘｙはｘのｙによる累乗を示し、ｘ／ｙはｘのｙによる除算を示す。上記（式３）によって、データ管理ツリーの階層Ｌにおいて、照合用データ［Ｐ＿Ｄａｔａ］に対応するハッシュリストのハッシュインデックスｊ（Ｌ＞０）、または最下層のデータのデータインデックスｘ（Ｌ＝０）が決定される。
【０１７０】
さらに、データ管理ツリーの下からに上に向かう検証を実行する場合は、ハッシュリストの照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を、上記ハッシュインデックスｊによって決定されたハッシュリストから選択することが必要となる。各ハッシュリストには、分岐数ｎに応じた個数のハッシュ値が格納され。それぞれにハッシュ値インデックスｋ＝０〜ｎ−１が設定されている。
【０１７１】
従って、ハッシュ値インデックスｋを決定すれば、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を選択することができる。ハッシュ値インデックスｋは、検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤと、検証対象データ［Ｖ＿Ｄａｔａ］の属する階層Ｌに基づく下式によって算出される。
ｋ＝ｆｌｏｏｒ（ｄａｔａＩＤ／ｎＬ）ｍｏｄｎ
（ただしＬ≠ｍ−１）・・・（式４）
【０１７２】
上記式において、ｆｌｏｏｒ（ｘ）はｘ以下の最大の整数値を返す関数であるとし、ｘｙはｘのｙによる累乗を示し、ｘ／ｙはｘのｙによる除算を示し、ｘｍｏｄｙはｘのｙによる剰余を示すものとする。Ｌがｍ−１である場合は、セキュリティチップ１０５は検証対象データ［Ｖ＿Ｄａｔａ］とセキュリティチップ１０５内部のセキュアメモリ２０３に保存してある最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）との比較を行うため情報処理システムはセキュリティチップへデータを供給する必要がなく、上述の式に基づくデータ特定処理は省略される。
【０１７３】
上述したように、検証対象データに対応するデータインデックスｘ＝ｄａｔａＩＤと、検証対象のデータまたはハッシュリストの属する階層Ｌが与えられることにより、ハッシュリストインデックスｊまたは、データインデックスｘの値が（式３）によって算出され、また、ハッシュ値インデックスｋの値が（式４）によって算出される。
【０１７４】
このように、ハッシュリストインデックスｊまたは、データインデックスｘを決定し、ハッシュ値インデックスｋを算出することで、データ管理ツリーの最下位から、最上位のデータに至る１つのルートが決定される。検証処理は、このルートにあるハッシュリストおよびデータを対象として実行すればよい。
【０１７５】
なお、データ更新においても、検証処理を実行しながら行うものであるので、ルート決定処理は全く同様の処理として実行される。
【０１７６】
なお、上述したルート決定方法を用いてデータ管理装置１０１が検証ルートを決定する場合はデータ管理ツリーにおける検証対象の階層Ｌと階層Ｌにおける対象データのインデックスであるｊを用いてセキュリティチップ１０５に供給するデータを決定し、さらに決定したデータとハッシュ値のインデックスｋに基づいて、決定したデータまたはハッシュリストまたはハッシュ値をホスト記憶部１０４から取り出して、セキュリティチップ１０５へ入力し、セキュリティチップ１０５内において検証処理が実行される。
【０１７７】
またセキュリティチップ１０５がルートを決定する場合は、セキュリティチップ１０５において、上述した各式（式１〜４）に基づいて決定されるデータ位置情報をデータ管理装置１０１に通知し、データ管理装置１０１がセキュリティチップ１０５から入力する位置情報に基づいて、データまたはハッシュリストまたはハッシュ値をホスト記憶部１０４から取り出して、セキュリティチップ１０５へ入力し、セキュリティチップ１０５内において検証処理が実行される。
【０１７８】
［７．ハッシュリストの階層が１のデータ管理ツリー］
上述した実施例においては、ハッシュリストを複数階層としたデータ管理ツリーの構成例を説明したが、次に、ハッシュリストの階層を１つのみとした構成および処理について説明する。すなわち、ハッシュリストの階層数＝１であり、ハッシュリスト層に対して下位にデータ層を持つ階層数ｍが２の場合のデータ管理ツリーである。
【０１７９】
図９は階層数ｍが２、管理データの数がｎの場合のデータ管理ツリーの構成例を示す図である。この構成を持つデータ管理ツリーの場合、ハッシュリスト４０１は全ての管理データのハッシュ値を含むＨＬ（１，０）が一つ存在するのみである。
【０１８０】
最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）４０２はハッシュリストＨＬ（１，０）４０１のハッシュ値である。すなわち、ハッシュリストＨＬ（１，０）４０１に含まれるｎ個のハッシュ値に基づいて生成されるハッシュ値であり、例えばハッシュリストＨＬ（１，０）４０１に含まれるｎ個のハッシュ値の連結データに対してＳＨＡ−１等のハッシュアルゴリズムを適用して生成されるハッシュ値が設定される。
【０１８１】
セキュリティチップ１０５のセキュアメモリ２０３には最低限、管理データ検証値として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）４０２を格納する。他のデータ、すなわちハッシュリスト４０１および下位の管理Ｄ（０）〜Ｄ（ｎ−１）はデータ管理装置１０１のホスト記憶部１０４に保存する。
【０１８２】
［８．階層の増減］
次に、データ管理ツリーの階層の増減処理について説明する。データ管理ツリーの階層の増減処理を実行する場合、セキュリティチップ１０５のセキュアメモリ２０３に保管されている管理データ検証値を更新する処理が必要となる。
【０１８３】
階層の増減処理は、図１に示すデータ管理装置１０１内のＣＰＵ１０２の制御の下に実行してもよく、また、セキュリティチップ１０５内のＣＰＵ２０１の制御の下に行ってもよい。階層の増減処理をデータ管理装置１０１内のＣＰＵ１０２の制御の下に実行する場合は、事前にデータ管理装置１０１はセキュリティチップ１０５のセキュアメモリ２０３に保管してある管理データ検証値を取得し、取得した管理データ検証値に基づいて検証を実行する。なお、管理データ検証値は図３における最上位ハッシュ値を含む。階層の増減処理をセキュリティチップ１０５が行う場合は、必要な情報は適宜、データ管理装置１０１のホスト記憶部１０４から供給され、また、階層の増減処理による更新情報がセキュリティチップ１０５からデータ管理装置１０１に入力されホスト記憶部１０４に格納される。
【０１８４】
（１）階層の増加処理
まず、図１０を参照してデータ管理ツリーの階層を増加させる処理手順について説明する。まず、ステップＳ４０１において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、データ管理ツリーにおいて最上位ハッシュ値に直結したハッシュリストを検証対象データ［Ｖ＿Ｄａｔａ］として入力する。
【０１８５】
ステップＳ４０２において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力した検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を計算により求める。なお、前述したように、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【０１８６】
ステップＳ４０３において、検証対象データとの照合する値、すなわち照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を求める。この場合、照合用ハッシュ値は、セキュリティチップ１０５内部にある管理データ検証値である最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）となる。
【０１８７】
ステップＳ４０４において、検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］と、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］との照合処理を行い、両者が一致するか否かを判定する。
【０１８８】
両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ４１１に進み処理を終了する。
【０１８９】
ステップＳ４０４における照合において、両者が一致した場合、すなわち、
Ｐ＿Ｈａｓｈ＝Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、正当なデータ、すなわち改竄データや改竄データに基づいて生成されたハッシュ値ではないと判断される。
【０１９０】
照合に成功した場合は、ステップＳ４０５に進み、検証処理を実行したハッシュリストの上位層（階層ｍ）に新しいハッシュリストであるＮ＿Ｄａｔａを生成する。すなわち、図１１に示すように、検証処理を実行したハッシュリスト４５２と最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）４５１の間に新しいハッシュリストである新規設定ハッシュリストＮ＿Ｄａｔａ４５３を生成する。
【０１９１】
次に、ステップＳ４０６において、新規設定ハッシュリストＮ＿Ｄａｔａ４５３に含めるべき１つのハッシュ値として、検証処理を実行したハッシュリスト４５２のハッシュ値［Ｖ＿Ｈａｓｈ］を設定する。さらに、ステップＳ４０７において、その他の格納ハッシュ値は、ｎｕｌｌ（サイズが０のデータ）に対するハッシュ値（Ｈａｓｈ（ｎｕｌｌ））とする。ｎ分岐の場合、１つのハッシュリストにはｎ個のハッシュ値が格納されるので、新規設定ハッシュリストＮ＿Ｄａｔａ４５３には、検証処理を実行したハッシュリスト４５２のハッシュ値［Ｖ＿Ｈａｓｈ］の他に、ｎ−１個のハッシュ値（Ｈａｓｈ（ｎｕｌｌ））が格納されることになる。
【０１９２】
ステップＳ４０８において、新規設定ハッシュリストＮ＿Ｄａｔａ４５３の格納ハッシュ値に基づくハッシュ値Ｎ＿Ｈａｓｈを算出する。具体的には、例えばハッシュリスト４５２のハッシュ値［Ｖ＿Ｈａｓｈ］と、ｎ−１個のハッシュ値（Ｈａｓｈ（ｎｕｌｌ））との連結データに対してＳＨＡ−１等のハッシュアルゴリズムを適用したハッシュ値算出処理を実行してハッシュ値Ｎ＿Ｈａｓｈを算出する。
【０１９３】
ステップＳ４０９において、算出ハッシュ値Ｎ＿Ｈａｓｈをセキュリティチップ１０５内部にある管理データ検証値として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）を更新して、このＮ＿Ｈａｓｈをあらたな最上位ハッシュ値としてセキュアメモリ２０３に格納し、処理を終了（Ｓ４１０）する。
【０１９４】
（２）階層の減少処理
次に、図１２を参照してデータ管理ツリーの階層を減少させる処理手順について説明する。まず、ステップＳ５０１において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から、データ管理ツリーにおいて最上位ハッシュ値に直結したハッシュリストを検証対象データ［Ｖ＿Ｄａｔａ］として入力する。
【０１９５】
この場合における検証対象データ［Ｖ＿Ｄａｔａ］は、図１３に示すように、データ管理ツリーにおいて最上位のハッシュリスト４７２であり、この最上位のハッシュリスト４７２を削除してデータ管理ツリーの階層を１つ削減する。
【０１９６】
さらに、ステップＳ５０１では、ハッシュリスト４７２の削除によって新たに最上位ハッシュ値４７１に直結する最上位ハッシュリストとなるハッシュリストのハッシュ値インデックスｋを入力する。すなわち、ハッシュ値インデックスｋは、検証対象データ［Ｖ＿Ｄａｔａ］、すなわち、現在の最上位ハッシュリスト４７２において、階層をｍ−１減少後に最上位となるハッシュリストのハッシュ値を示すインデックスである。
【０１９７】
ステップＳ５０２において、ホスト記憶部（Ｈｏｓｔ  Ｓｔｏｒａｇｅ）１０４から入力した検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］を計算により求める。なお、前述したように、ハッシュ値の算出アルゴリズムは、予め設定されたアルゴリズムが適用される。例えば、ＳＨＡ−１などが適用可能である。
【０１９８】
ステップＳ５０３において、検証対象データとの照合する値、すなわち照合用ハッシュ値［Ｐ＿Ｈａｓｈ］を求める。この場合、照合用ハッシュ値は、セキュリティチップ１０５内部にある管理データ検証値である最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）となる。
【０１９９】
ステップＳ５０４において、検証対象データ［Ｖ＿Ｄａｔａ］のハッシュ値である検証対象ハッシュ値［Ｖ＿Ｈａｓｈ］と、照合用ハッシュ値［Ｐ＿Ｈａｓｈ］との照合処理を行い、両者が一致するか否かを判定する。
【０２００】
両者が一致しない場合、すなわち、
Ｐ＿Ｈａｓｈ≠Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、改竄データ、あるいは改竄データに基づいて生成されたハッシュ値を含むものと判断され、ステップＳ５０９に進み処理を終了する。
【０２０１】
ステップＳ５０４における照合において、両者が一致した場合、すなわち、
Ｐ＿Ｈａｓｈ＝Ｖ＿Ｈａｓｈ
である場合は、検証対象データ［Ｖ＿Ｄａｔａ］が、正当なデータ、すなわち改竄データや改竄データに基づいて生成されたハッシュ値ではないと判断される。
【０２０２】
照合に成功した場合は、ステップＳ５０５に進み、［Ｖ＿Ｄａｔａ］、すなわち削除予定の最上位ハッシュリスト４７２に含まれるｎ個のハッシュ値中、新たに最上位ハッシュリストとして設定する予定のハッシュリストに対応するハッシュ値インデックスｋ以外のハッシュ値が全てｎｕｌｌ（サイズが０のデータ）に対するハッシュ値（Ｈａｓｈ（ｎｕｌｌ））であるか確認する。
【０２０３】
図１３に示す例では、新たに最上位ハッシュリストとして設定する予定のハッシュリスト４７３に対応する削除予定の最上位ハッシュリスト４７２に含まれるハッシュ値のハッシュ値インデックスｋは、ｋ＝０であり、その他のハッシュ値インデックス、すなわちｋ＝１のハッシュ値がｎｕｌｌ（サイズが０のデータ）に対するハッシュ値（Ｈａｓｈ（ｎｕｌｌ））であるか確認する。図１３に示す例では２分岐ツリーであるため、１つのハッシュリストに２つのハッシュ値のみが含まれるが、ｎ分岐ツリーの場合は、ｎ個のハッシュ値が含まれる。
【０２０４】
削除予定のハッシュリストに含まれるハッシュ値中、新たに最上位ハッシュリストとして設定する予定のハッシュリストに対応するハッシュ値以外に１つでもｎｕｌｌに対するハッシュ値でない値が含まれる場合は、現時点の最上位ハッシュリストの削除を実行することなく、処理を終了する（Ｓ５０９）。
【０２０５】
削除予定のハッシュリストに含まれるハッシュ値中、新たに最上位ハッシュリストとして設定する予定のハッシュリストに対応するハッシュ値以外が、全てｎｕｌｌに対するハッシュ値である場合は、階層を１つ減少後に最上位となるハッシュリスト（図１３におけるハッシュリスト４７３）のハッシュ値である、［Ｖ＿Ｄａｔａ］、すなわち削除予定のハッシュリスト４７２のハッシュ値インデックスｋで指し示されるハッシュ値を取り出し、これをＮ＿Ｈａｓｈとする。
【０２０６】
ステップＳ５０７では、取得したハッシュ値Ｎ＿Ｈａｓｈをセキュリティチップ１０５内部にある管理データ検証値として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）を更新して、このＮ＿Ｈａｓｈをあらたな最上位ハッシュ値としてセキュアメモリ２０３に格納し、処理を終了（Ｓ５０８）する。
【０２０７】
［９．管理データの暗号化および復号化］
上述したように、管理対象となるデータは、データ管理ツリーの最下層に設定され、上位にハッシュリストが設定されて管理されることになる。管理対象データは、コンテンツや、ライセンス、あるいは課金データ等、様々なデータであるが、これらのデータが漏洩することを防止するため、データ管理装置１０１は暗号化してホスト記憶部１０４に格納することが好ましい。
【０２０８】
この管理データの暗号化および復号処理に適用する鍵（ここではストレージキーとよぶ）は、セキュリティチップ１０５のセキュアメモリ２０３に格納される。ストレージキーを用いて管理データを暗号化あるいは復号化を行うのはデータ管理装置１０１であってもセキュリティチップ１０５であっても良い。
【０２０９】
データ管理装置１０１が管理データを暗号化、復号化する場合は、セキュリティチップ１０５からストレージキーを入力し、入力したストレージキーを適用した処理を実行する。データ管理装置１０１は、予めホスト記憶部１０４に格納された暗号処理プログラムに従ってデータの暗号化あるいは復号処理を実行する。セキュリティチップ１０５内部で管理データの暗号化、復号化処理を実行する場合はセキュリティチップ１０５は、暗号化および復号化の処理能力を備えるものとする。
【０２１０】
なお、暗号化の処理対象となるのは、コンテンツ等の実データである管理データの一部とするか、あるいは管理データ全体とするか、あるいはハッシュリストも含めるなど様々な態様が可能である。これらの設定は、データ管理装置１０１において設定するか、あるいはセキュリティチップ１０５内部で予め設定された独自の処理アルゴリズムに従って判断する構成とすることが可能である。
【０２１１】
またストレージキーはセキュリティチップ１０５内部のセキュアメモリ２０３に複数格納する構成としてもよい。また、ストレージキーはセキュリティチップ１０５内部において生成あるいは削除する構成としてもよい。ストレージキーの漏洩を防止し、安全性を保つ為、ストレージキーを複数持ち、適宜、利用する鍵を変更することが好ましい。
【０２１２】
さらに安全性を高める方法としてセキュリティチップ１０５内に格納されるストレージキーを用いてエンベロープキーを暗号化および復号化し、エンベロープキーを用いて管理データの暗号化および復号化を行う構成とし、ストレージキーにより暗号化したエンベロープキーを暗号化管理データに添付して記憶する構成としてもよい。この構成により、ストレージキーに対する攻撃者への情報を減らすことが可能となり、ストレージキーの漏洩の危険性が低減される。なお、ストレージキーを用いたエンベロープキーの暗号化、復号化、およびエンベロープキーを用いた管理データの暗号化、復号化するのはデータ管理装置１０１であってもセキュリティチップ１０５であってもよい。セキュリティチップ内でのストレージキーを適用した復号処理によりエンベロープキーを生成して、セキュリティチップ外に出力する構成とすれば、ストレージキーの外部出力が行われることはなくなり、安全性が向上する。
【０２１３】
なお、暗号化処理によって格納データの変更が生じた場合は、前述のデータ更新処理と同様、データ検証を伴うデータ管理ツリーの更新処理を実行した後、ホスト記憶部１０４にデータを格納し、また、セキュリティチップ１０５のセキュアメモリ２０３に最上位ハッシュ値を格納する。復号化前のデータは前述の検証処理に従って管理データの完全性と最新性を検証し検証に問題が無ければ復号化する。これらにより、完全性、最新性の検証とともに必要に応じてデータの秘匿を可能にする。
【０２１４】
このように、管理データを暗号化して格納し、暗号化データに基づいて設定されるデータ管理ツリーによる管理を実行する構成とし、また暗号処理に適用する鍵をセキュリティチップに格納する構成としたので、管理データの漏洩を効果的に防止することが可能となる。
【０２１５】
［１０．中間階層のハッシュリストによる検証］
上述した実施例において説明したように、セキュリティチップ１０５内のセキュアメモリ２０３には、管理データ検証値として、少なくとも最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）が格納される。セキュアメモリ２０３に、さらに、データ管理ツリーの中間階層のハッシュリスト、またはそのハッシュ値を保存する事で特定のデータの検証に要する処理時間を短縮することが可能となる。このように、セキュリティチップ１０５内のセキュアメモリ２０３にデータ管理ツリーの中間階層のハッシュリスト、またはそのハッシュ値を保存し、これらの値を利用したデータ管理構成について説明する。
【０２１６】
図１４は階層数ｍが４、ハッシュリストに含めるハッシュ値の数が２である２分木の構造をもつデータ管理ツリーを示している。セキュリティチップ１０５のセキュアメモリ２０３には管理データ検証値として、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）５０１とデータ管理ツリーの中間階層にあるハッシュリストＨＬ（２，０）のハッシュ値である中間ハッシュ値（Ｍｉｄｄｌｅ  Ｈａｓｈ  Ｖａｌｕｅ）５０２を保存する。
【０２１７】
最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）５０１は、階層Ｌ＝３の最上位ハッシュリスト５１１の格納ハッシュ値に基づいて生成されるハッシュ値であり、中間ハッシュ値（Ｍｉｄｄｌｅ  Ｈａｓｈ  Ｖａｌｕｅ）５０２は、階層Ｌ＝２の中間レベルの階層にあるハッシュリスト５２１の格納ハッシュ値に基づいて生成されるハッシュ値である。
【０２１８】
図１４の例において、最下層レベル（Ｌ＝０）には、Ｄ（０）〜Ｄ（７）の８つの管理データが存在するが、これらの管理データ中、Ｄ（０）〜Ｄ（３）の４つの管理データは、中間ハッシュ値（Ｍｉｄｄｌｅ  Ｈａｓｈ  Ｖａｌｕｅ）５０２を用いて検証を行うことができる。
【０２１９】
中間ハッシュ値（Ｍｉｄｄｌｅ  Ｈａｓｈ  Ｖａｌｕｅ）５０２を用いて検証を行うことにより、階層Ｌが１と２の２階層分のハッシュリストと検証を行うのみで検証処理が完了できる。従って、検証処理時間の短縮が実現される。また、追加、変更、削除処理等の更新処理における検証も同様であり、処理時間の短縮が図れる。なお、管理データＤ（４）〜Ｄ（７）の４つの管理データは、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）５０１を用いた検証が必要であり、階層Ｌが１，２および３の３階層分のハッシュリストと検証を行うことになる。
【０２２０】
［１１．複数のデータ管理ツリーに基づく管理構成］
さらに、セキュリティチップ１０５内部のセキュアメモリ２０３に保存する管理データ検証値を複数持つ構成とすることで、複数のデータ管理ツリーを管理することが可能である。
【０２２１】
例えば、図１５に示すように、階層ｍが３、ハッシュリストに含めるハッシュ値の数が２である２分木の構造をもつデータ管理ツリーを２つに区分して設定し、セキュリティチップ１０５のセキュアメモリ２０３に、第１データ管理ツリー（ＨＴ（１））５２０の管理データ検証値として、第１データ管理ツリー（ＨＴ（１））５２０における最上位ハッシュリスト５２２のハッシュ値である第１最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ１）５２１と、第２データ管理ツリー（ＨＴ（２））５３０の管理データ検証値として、第２データ管理ツリー（ＨＴ（２））５３０における最上位ハッシュリスト５３２のハッシュ値である第２最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ２）５３１とを保管する。
【０２２２】
この構成の場合、データ検証あるいは更新を実行する場合は、データ管理装置１０１から処理対象の管理データがどのデータ管理ツリーに属するかをセキュリティチップ１０５に指示し、セキュリティチップ１０５は指示に従って、処理対象のデータ管理ツリーを選択して処理を行う。またデータ管理装置１０１からの指示に基づいて、セキュリティチップ１０５が内部のセキュアメモリ２０３で管理する管理データ検証値を追加、削除する構成とすることで管理するデータツリーの数を任意に変更することが可能となる。
【０２２３】
［１２．管理データ検証値をルートハッシュリストとした構成］
上述した実施例では、最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）をセキュリティチップ１０５内部のセキュアメモリ２０３に格納する構成とした例を説明したが、最上位ハッシュ値を算出することなく、最上位のハッシュリストそのものをセキュリティチップ１０５内部のセキュアメモリ２０３に格納する構成としてもよい。
【０２２４】
例えば、図１６に示すように、階層数ｍ＝３のデータ管理ツリーにおいて、最上位ハッシュリスト５５１からハッシュ値を算出して最上位ハッシュ値（Ｔｏｐ  Ｈａｓｈ  Ｖａｌｕｅ）を求めることなく、最上位ハッシュリスト５５１自体をセキュリティチップ１０５内部のセキュアメモリ２０３に格納する。なお、最上位ハッシュリスト５５１にはｎ分岐ツリーの場合、ｎ個のハッシュ値が含まれ、これらｎ個のハッシュ値がセキュリティチップに格納されることになる。なお、これらｎ個のハッシュ値にはハッシュ値インデックスｋが対応付けられて格納されることになる。
【０２２５】
［１３．データ管理ツリーの任意部分で管理データ検証値を設定、管理する構成］
上述した実施例では、主として１つのデータ管理ツリーに１つの管理データ検証値、すなわち、最上位ハッシュ値などを管理データ検証値として設定した例を説明したが、データ管理ツリーの任意のデータあるいはハッシュリストを管理データ検証値として設定することが可能である。
【０２２６】
例えば図１７に示すように、データ管理ツリーの任意のデータあるいはハッシュリストを管理データ検証値として設定することができる。図１７中でＤ（０）５７１はＨＬ−Ａ及びＤ−Ａを含むデータ管理ツリー５７２の管理データ検証値となる。
【０２２７】
また図１７中で１つのハッシュリスト中のハッシュ値ＨＬ（２，１）．Ｈ（１）５７３はＨＬ−Ｂ及びＤ−Ｂを含むデータ管理ツリー５７４の管理データ検証値となる。
【０２２８】
これらの管理データ検証値は、セキュリティチップ１０５内部のセキュアメモリ２０３に格納され、検証あるいは更新対象のデータの属するツリーに応じて読み出されて検証処理に適用されまた更新される。
【０２２９】
［１４．ハッシュ値によるデータ管理ツリー］
上述した実施例では、データ管理ツリーを、複数のハッシュ値を持つハッシュリストを階層化して構成した例を説明したが、ハッシュリストをハッシュ値に置き換えて設定したデータ管理ツリーに基づく管理構成も可能である。
【０２３０】
図１８に示すように、最下層（Ｌ＝０）には管理対象データＤ（０）〜Ｄ（７）を設定し、Ｌ＞０の上位層には、複数のハッシュ値からなるハッシュリストではなく、単一のハッシュ値を設定する。
【０２３１】
図１８に示すデータ管理ツリーの階層数は４、データ数は８である。図上で階層Ｌ＝０におけるデータであるＤ（ｘ）は管理データを表し、ｘは対象の管理データのインデックスを示す。階層Ｌ＞０におけるデータであるＨ（ｘ，ｙ）はハッシュ値を示し、ｘは対象のデータ管理ツリーにおける階層数を示し、ｙは階層ｘにおける対象のハッシュ値のインデックスを示す。ハッシュ値Ｈ（ｘ．ｙ）は下位の全てのデータを連結したデータに対するハッシュ値である。
【０２３２】
例えば、ハッシュ値Ｈ（１，０）５８１は、データＤ（０）とＤ（１）に基づいて生成されるハッシュ値である。具体的には、例えばデータＤ（０）とＤ（１）との連結データに基づいてＳＨＡ−１等のハッシュアルゴリズムを適用して算出した値が、ハッシュ値Ｈ（１，０）５８１となる。すなわち、ハッシュ値Ｈ（１，０）５８１は、
Ｈａｓｈ（Ｄ（０）｜｜Ｄ（１））である。（｜｜はデータの連結を表す）
【０２３３】
ハッシュ値Ｈ（２，０）５８３は、ハッシュ値Ｈ（１，０）５８１とハッシュ値Ｈ（１，１）５８２に基づいて生成されるハッシュ値である。ハッシュ値Ｈ（３，０）５８５は、ハッシュ値Ｈ（２，０）５８３とハッシュ値Ｈ（２，１）５８４に基づいて生成されるハッシュ値である。
【０２３４】
図１８は全てのハッシュリストが２つのハッシュ値を含む場合の２分木でデータ管理ツリーを構成する場合を示している。Ｈ（３，０）５８５は、データ管理ツリーにおける最上位のハッシュ値である事を示す。セキュリティチップ１０５のセキュアメモリ２０３には最低限、管理データ検証値であるＨ（３，０）の値を保管する。他のデータはデータ管理装置１０１のホスト記憶部１０４に保存する。
【０２３５】
このような、ハッシュ値を階層化したデータ管理ツリーに基づくデータ管理方法は前述のハッシュリストによるデータ管理ツリーと同様、検証、追加、変更、削除、階層の変更、暗号化、中間ノードでの検証、複数のツリーの管理等が可能である。ハッシュ値によるデータ管理ツリーとハッシュリストによるデータ管理ツリーを比較した場合、ハッシュ値によるデータ管理ツリーでは検証において複数のデータを連結してハッシュ値を計算するため、処理に要する時間が多くなる可能性がある。特に管理データのサイズが大きい場合は顕著である。しかし、管理データ以外の部分で管理に必要な情報はハッシュ値によるデータ管理ツリーの方が少なくて済むという利点がある。管理データ以外の部分で管理に必要な情報が最も少ない方法を図１９に示す。
【０２３６】
図１９は階層数ｍが２、管理データの数がｎの場合のハッシュ値によるデータ管理ツリーの例を示す図である。このデータ管理ツリー構成の場合、最上位ハッシュ値Ｈ（１，０）５９１は、全ての管理データを連結したものに対するハッシュ値となる。すなわち、
Ｈａｓｈ（Ｄ（０）｜｜Ｄ（１）｜｜Ｄ（２）｜｜Ｄ（３）｜｜…｜｜Ｄ（ｎ−１）））が１つ存在するのみである。
【０２３７】
セキュリティチップ１０５のセキュアメモリ２０３には、管理データ検証値として、ハッシュ値Ｈ（１，０）５９１のみを保管する。この場合、データ管理装置１０１のホスト記憶部１０４に保存する管理データ以外の部分で管理に必要な情報は存在しない。
【０２３８】
図２０はハッシュ値におけるデータ管理ツリーにおいて、管理データのサイズが大きい場合の検証等の処理に要する時間が短くなるように調整した場合のデータ構造である。
【０２３９】
図２０は階層数ｍが５、管理データの数が８の場合のハッシュ値によるデータ管理ツリーである。図１８との差異は、Ｌ＝１におけるハッシュ値の計算に必要な管理データの数を１に減らし、その分階層を一段増やしたことである。
【０２４０】
すなわち、階層Ｌ＝１のハッシュ値として、１つの管理データのみから生成するハッシュ値を設定した。例えば、図において、ハッシュ値Ｈ（１，０）６０１は管理データＤ（０）のみから生成されるハッシュ値である。
【０２４１】
このような構成とするとことで、管理データのサイズが大きい場合でもハッシュリストによるデータ管理ツリーと同等の時間で検証が可能となる。ただしデータ管理装置１０１のホスト記憶部１０４に保存する管理データ以外の部分で管理に必要な情報の量は結局のところ前述のハッシュリストによるデータ管理ツリーの場合と同等になる。
【０２４２】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０２４３】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０２４４】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０２４５】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０２４６】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０２４７】
本発明のデータ管理装置、およびデータ管理方法、並びにコンピュータ・プログラムは、例えば、コンテンツ、ライセンス情報や、課金情報など、改竄を防止すべき情報のデータの管理を実行する構成において適用可能である。
【０２４８】
本発明の構成は、例えばセキュリティチップ内のメモリに、データ管理ツリーの最上位に設定されるデータ、すなわち、下位データに基づいて算出される一方向性関数に基づく算出値、例えばハッシュ値を格納し、この値を検証値として適用してデータ管理ツリーの最下層に設定される管理データの改竄検証を行う構成を有するので、管理データが増加した場合でも、管理データ検証値のデータ量を増加させる必要がなく、多くの管理データの改竄検証が可能となり、様々なデータ管理を実行する用途において適用可能である。また、管理データの追加、削除、変更等のデータ更新が行われる場合も、データ管理ツリーのハッシュ値に基づくデータ検証処理を実行する構成としたので、データの追加、削除、変更などのデータ更新が行われる装置において利用可能である。
【図面の簡単な説明】
【０２４９】
【図１】本発明のデータ管理装置の構成を示す図である。
【図２】セキュリティチップの構成を示す図である。
【図３】データ管理ツリーの構成例を示す図である。
【図４】データ管理ツリーに基づくデータ検証処理手順を説明するフロー図である。
【図５】検証ルートの設定について説明する図である。
【図６】データ管理ツリーに基づくデータ検証処理手順を説明するフロー図である。
【図７】データ管理ツリーに基づくデータ更新および検証処理手順を説明するフロー図である。
【図８】ルートの設定に必要となる情報について説明する図である。
【図９】ハッシュリストの階層を１としたデータ管理ツリー構成を示す図である。
【図１０】データ管理ツリーの階層を増加する処理手順を説明するフロー図である。
【図１１】データ管理ツリーの階層を増加する処理を説明する図である。
【図１２】データ管理ツリーの階層を減少させる処理手順を説明するフロー図である。
【図１３】データ管理ツリーの階層を減少させる処理を説明する図である。
【図１４】中間ハッシュ値に基づく管理について説明する図である。
【図１５】複数のデータ管理ツリーによる管理構成を説明する図である。
【図１６】ハッシュリストを管理データ検証値として設定した例を説明する図である。
【図１７】データ管理ツリーにおける様々な要素を管理テータ検証値として設定した例を示す図である。
【図１８】ハッシュ値を階層化したデータ管理ツリー構成を示す図である。
【図１９】ハッシュ値階層を１つとして設定したハッシュ値階層化データ管理ツリー構成を示す図である。
【図２０】管理データ毎のハッシュ値を生成して、データ管理ツリーを構成した例を示す図である。
【符号の説明】
【０２５０】
１０１  データ管理装置
１０２  ＣＰＵ(Central processing Unit)
１０３  メモリ
１０４  ホスト記憶部
１０５  セキュリティチップ
２０１  ＣＰＵ(Central processing Unit)
２０２  メモリ
２０３  セキュアメモリ
２０４  インタフェース
３０１  最上位ハッシュ値
３０２  最上位ハッシュリスト
３０３  ハッシュリスト
３０４  管理データ
３２１  最上位ハッシュ値
３２２〜３２６  ハッシュリスト
３２７  管理データ
３５０  管理データ
３５１  ハッシュリスト
４０１  最上位ハッシュ値
４０２  ハッシュリスト
４５１  最上位ハッシュ値
４５２  最上位ハッシュリスト
４５３  新規設定ハッシュリスト
４７１  最上位ハッシュ値
４７２，４７３  ハッシュリスト
５０１  最上位ハッシュ値
５０２  中間ハッシュ値
５１１，５１２  ハッシュリスト
５２０  第１データ管理ツリー
５２１  第１最上位ハッシュ値
５２２  ハッシュリスト
５３０  第１データ管理ツリー
５３１  第１最上位ハッシュ値
５３２  ハッシュリスト
５５１  最上位ハッシュリスト
５７１  データ
５７２  データ管理ツリー
５７３  ハッシュ値
５７４  データ管理ツリー
５８１〜５８５  ハッシュ値
５９１  最上位ハッシュ値
６０１  ハッシュ値
【図１】
2005032130.tif 000003
【図２】
2005032130.tif 000004
【図３】
2005032130.tif 000005
【図４】
2005032130.tif 000006
【図５】
2005032130.tif 000007
【図６】
2005032130.tif 000008
【図７】
2005032130.tif 000009
【図８】
2005032130.tif 000010
【図９】
2005032130.tif 000011
【図１０】
2005032130.tif 000012
【図１１】
2005032130.tif 000013
【図１２】
2005032130.tif 000014
【図１３】
2005032130.tif 000015
【図１４】
2005032130.tif 000016
【図１５】
2005032130.tif 000017
【図１６】
2005032130.tif 000018
【図１７】
2005032130.tif 000019
【図１８】
2005032130.tif 000020
【図１９】
2005032130.tif 000021
【図２０】
2005032130.tif 000022