(57)【要約】【課題】コンテンツデータの属性情報等のレコードの改竄を確実に防止することができ、且つ、コンテンツカタログ情報等の管理情報の探索効率を上げることが可能な管理情報を生成する。【解決手段】一又は複数のレコードを含む葉ページ情報を生成する葉ページ情報生成し、根ページ情報の子の位置の子ページ情報または根ページ情報の子の位置のレコードの改竄をチェックするための改竄チェック情報と、根ページ情報の子の位置の子ページ情報のシリアル番号とを含む根ページ情報を生成し、根ページ情報から葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または節ページ情報の子の位置のレコードの改竄をチェックするための改竄チェック情報と、節ページ情報の子の位置の子ページ情報のシリアル番号とを含む節ページ情報を生成し、根ページ情報と、節ページ情報と、葉ページ情報とを木構造で記憶する。【選択図】図２
2010262455.tif 000002
【特許請求の範囲】
【請求項１】
複数のページ情報を木構造として、根に位置する根ページ情報から葉に位置する葉ページ情報にかけて関連付けて記憶するページ情報記憶手段と、
一又は複数のレコードを含む前記葉ページ情報を生成する葉ページ情報生成手段と、
前記根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報を生成する根ページ情報生成手段と、
前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報を生成する節ページ情報生成手段と、
を備え、
前記ページ情報記憶手段は、前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを前記木構造で記憶することを特徴とする管理装置。
【請求項２】
前記根ページ情報のシリアル番号と、前記根ページ情報の改竄をチェックするための改竄チェック情報とから構成されるルートリンク情報と、当該ルートリンク情報の改竄をチェックするための電子署名とを生成するルートリンク情報生成手段を備え、
前記ページ情報記憶手段は、前記ルートリンク情報と、前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを前記木構造で記憶することを特徴とする請求項１に記載の管理装置。
【請求項３】
前記根ページ情報生成手段は、前記木構造において前記根ページ情報を親として、親と子の関係にある１または複数のページ情報に対応するインデックス情報の担当領域を示す担当領域情報を更に生成し、
前記節ページ情報生成手段は、前記木構造において前記節ページ情報を親として、親と子の関係にある１または複数のページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、
追加対象の追加レコードと、当該レコードのインデックス情報とを入力する追加入力手段と、
前記追加入力手段により入力されたインデックス情報と、前記根ページ情報または前記節ページ情報の前記担当領域情報とに基づいて、前記追加レコードを登録する前記葉ページ情報を決定する追加葉ページ決定手段と、
前記追加葉ページ決定手段により決定された葉ページ情報に前記追加レコードを登録する登録手段と、
前記追加葉ページ決定手段により決定された葉ページ情報に新たなシリアル番号を割り当てる割当手段と、
前記追加レコードが登録された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記追加レコードの登録に基づいて更新する追加更新手段と、
を備えることを特徴とする請求項１または請求項２に記載の管理装置。
【請求項４】
前記追加ページ決定手段は、前記決定された葉ページ情報に前記追加レコードが登録可能であるかを判定する判定手段を備え、
前記判定手段により前記追加レコードが登録不可能であると判定された場合、前記葉ページ情報生成手段は、新たな葉ページ情報を生成し、
前記登録手段は、前記新たに生成された葉ページ情報に前記追加レコードを登録し、
前記割当手段は、前記新たに生成された葉ページ情報に新たなシリアル番号を割り当て、
前記追加更新手段は、前記新たに生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記追加レコードの登録に基づいて更新することを特徴とする請求項３に記載の管理装置。
【請求項５】
前記根ページ情報生成手段は、前記木構造において前記根ページを親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、
前記節ページ情報生成手段は、前記木構造において前記節ページ情報を親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、
削除対象の削除レコードのインデックス情報を入力する削除入力手段と、
前記削除入力手段により入力されたインデックス情報と、前記根ページ情報または前記節ページ情報の前記担当領域情報とに基づいて、前記削除レコードを登録する前記葉ページ情報を決定する削除葉ページ決定手段と、
前記削除葉ページ決定手段により決定された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の決定に基づいて更新する削除更新手段と、
を備えることを特徴とする請求項１から請求項４のいずれか一項に記載の管理装置。
【請求項６】
前記葉ページ情報には、当該葉ページ情報に含まれる前記レコードを検索するためのインデックス情報が含まれており、
前記根ページ情報生成手段は、前記木構造において前記根ページを親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、
前記節ページ情報生成手段は、前記木構造において前記節ページ情報を親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、
検索対象の検索レコードのインデックス情報を入力する検索入力手段と、
前記検索入力手段により入力されたインデックス情報と、前記根ページ情報または前記節ページ情報の前記担当領域情報に基づいて、前記検索レコードのインデックス情報を検索する検索手段と、
を備えることを特徴とする請求項１から請求項５のいずれか一項に記載の管理装置。
【請求項７】
複数のページ情報を木構造として管理するため、木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報を生成する根ページ情報生成ステップと、
一又は複数のレコードを含む葉ページ情報を生成する葉ページ情報生成ステップと、
前記木構造における前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報を生成する節ページ情報生成ステップと、
前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを、前記複数のページ情報として前記木構造で記憶するページ情報記憶ステップと、
をコンピュータに実現させるための情報生成プログラム。
【請求項８】
複数のページ情報を木構造として管理するため、木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報を生成する根ページ情報生成ステップと、
一又は複数のレコードを含む葉ページ情報を生成する葉ページ情報生成ステップと、
前記木構造における前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報を生成する節ページ情報生成ステップと、
前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを、前記複数のページ情報として前記木構造で記憶するページ情報記憶ステップと、
を含むことを特徴とする情報生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所望のコンテンツデータを検索する、または、管理するためのデータ構造に関する。具体的には、コンテンツデータの属性情報等のレコードの改竄を確実に防止することができるデータ構造及び検索技術に関する。
【背景技術】
【０００２】
この種のコンテンツ分散保存システムにおいて、各ノード装置は、コンテンツデータの属性情報が記述されたコンテンツカタログ情報を用いている。各ノード装置は、所望のコンテンツデータを検索し、他のノード装置又はコンテンツ管理サーバから取得可能になっている。この属性情報には、コンテンツ名、公開開始時期、公開終了時期、及びコンテンツデータの検索キーワード等の情報が含まれている。コンテンツカタログ情報は、コンテンツ管理サーバにより生成され、各ノード装置に配信される。また、コンテンツ分散保存システムにおいて、新たなコンテンツデータが追加された場合、又はコンテンツデータの利用が終了した場合には、コンテンツカタログ情報はコンテンツ管理サーバにより更新され、各ノード装置に配信される。
【０００３】
ところで、コンテンツ分散保存システムにおいて利用可能なコンテンツデータの数が増大すると、コンテンツカタログ情報のデータ量も増大する。このため、１台のノード装置にコンテンツカタログ情報を記憶しきれないという問題があった。この問題を解決するために、特許文献１には、複数に分割されたコンテンツカタログ情報を複数のノード装置が分散して記憶する構成が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２８０３０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したように各ノード装置が分割されたコンテンツカタログ情報を記憶する場合、コンテンツカタログ情報の改竄を防止するため、各コンテンツデータの属性情報毎に電子署名を付与する必要がある。
【０００６】
また、コンテンツカタログ情報に、コンテンツデータの属性情報を追加、更新または削除する場合、コンテンツカタログ情報を検索する必要がある。つまり、追加、更新または削除するコンテンツカタログ情報を挿入する位置、または削除する位置を探索する必要がある。従来では、電子署名が施されたコンテンツカタログ情報のリストの中から、所望のコンテンツデータをほぼ全探索するので効率が悪かった。
【０００７】
本発明は、以上の問題等に鑑みてなされたものである。コンテンツデータの属性情報等のレコードの改竄を確実に防止することができ、且つ、コンテンツカタログ情報等の管理情報の探索効率を上げることが可能な管理情報を生成する管理装置、情報生成プログラム、及び情報生成方法を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、複数のページ情報を木構造として、根に位置する根ページ情報から葉に位置する葉ページ情報にかけて関連付けて記憶するページ情報記憶手段と、一又は複数のレコードを含む前記葉ページ情報を生成する葉ページ情報生成手段と、前記根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報を生成する根ページ情報生成手段と、前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報を生成する節ページ情報生成手段と、を備え、前記ページ情報記憶手段は、前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを前記木構造で記憶することを特徴とする。
【０００９】
この発明によれば、一又は複数のレコードを含む葉ページ情報が生成される。また、根ページ情報の子ページ情報または根ページ情報の子の位置のレコードの改竄をチェックするための改竄チェック情報と、根ページ情報の子ページ情報のシリアル番号とを含む根ページ情報が生成される。また、節ページ情報の子の子ページ情報または節ページ情報の子の位置のレコードの改竄をチェックするための改竄チェック情報と、節ページ情報の子ページ情報のシリアル番号とを含む節ページ情報が生成される。これによりレコードの改ざんチェックを行うことができ、かつ古くなった正規のページ情報の不正な挿入・置換を防ぐことができる。また、生成された根ページ情報、節ページ情報及びページ情報からなる複数のページ情報が木構造で記憶される。
【００１０】
従って、木構造でレコードを管理することで、レコードの改竄チェックもでき、レコードの検索処理の時間が減る。
【００１１】
請求項２に記載の発明は、前記根ページ情報のシリアル番号と、前記根ページ情報の改竄をチェックするための改竄チェック情報とから構成されるルートリンク情報と、当該ルートリンク情報の改竄をチェックするための電子署名とを生成するルートリンク情報生成手段を備え、前記ページ情報記憶手段は、前記ルートリンク情報と、前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを前記木構造で記憶することを特徴とする。
【００１２】
この発明によれば、子のページ情報の改竄をチェックするチェック情報は、親のページ情報が保持している。根ページ情報の改竄チェック情報は、ルートリンク情報が保持している。ルートリンク情報には電子署名が施されており、改竄チェックを電子署名により厳密に行える。従来は全てのレコードに電子署名を施す必要があったのに対し、ルートリンク情報のみに電子署名を施すことで、子に位置するレコードの改竄を保障するために、根ページの電子署名を確かめることで、確認することができる。そのため、記憶手段に記憶される各根ページ情報および節ページ情報の改ざんチェック情報として、実施例に記載のようなメッセージダイジェストを用いることができ、各レコードのデータ量が小さくなる。また、各レコードに電子署名を施す処理が必要なくなるため、電子署名処理が不要となる。
【００１３】
請求項３に記載の発明は、前記根ページ情報生成手段は、前記木構造において前記根ページ情報を親として、親と子の関係にある１または複数のページ情報に対応するインデックス情報の担当領域を示す担当領域情報を更に生成し、前記節ページ情報生成手段は、前記木構造において前記節ページ情報を親として、親と子の関係にある１または複数のページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、追加対象の追加レコードと、当該レコードのインデックス情報とを入力する追加入力手段と、前記追加入力手段により入力されたインデックス情報と、前記根ページ情報または前記節ページ情報の前記担当領域情報とに基づいて、前記追加レコードを登録する前記葉ページ情報を決定する追加葉ページ決定手段と、前記追加葉ページ決定手段により決定された葉ページ情報に前記追加レコードを登録する登録手段と、前記追加葉ページ決定手段により決定された葉ページ情報に新たなシリアル番号を割り当てる割当手段と、前記追加レコードが登録された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記追加レコードの登録に基づいて更新する追加更新手段と、を備えることを特徴とする。
【００１４】
この発明によれば、入力されたインデックス情報と、根ページ情報または節ページ情報の担当領域情報とに基づいて、追加レコードを登録する葉ページ情報が決定される。決定された葉ページ情報に追加レコードが登録される。また、決定された葉ページ情報に新たなシリアル番号が割り当てられる。そして、追加レコードが登録された葉ページ情報から根ページ情報までの節ページ情報と根ページ情報とのシリアル番号及びチェック情報が、追加レコードの登録に基づいて更新される。
【００１５】
従って、木構造における葉ページ情報にレコードを簡単に追加することができる。
【００１６】
請求項４に記載の発明は、前記追加ページ決定手段は、前記決定された葉ページ情報に前記追加レコードが登録可能であるかを判定する判定手段を備え、前記判定手段により前記追加レコードが登録不可能であると判定された場合、前記葉ページ情報生成手段は、新たな葉ページ情報を生成し、前記登録手段は、前記新たに生成された葉ページ情報に前記追加レコードを登録し、前記割当手段は、前記新たに生成された葉ページ情報に新たなシリアル番号を割り当て、前記追加更新手段は、前記新たに生成された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記追加レコードの登録に基づいて更新することを特徴とする。
【００１７】
この発明によれば、追加レコードを登録する葉ページ情報として決定された葉ページ情報に、追加レコードが登録不可能である場合には、新たな葉ページ情報が生成される。そして、新たな葉ページ情報に追加レコードが登録される。また、新たな葉ページ情報に新たなシリアル番号が割り当てられる。そして、追加レコードが登録された葉ページ情報から根ページ情報までの節ページ情報と根ページ情報とのシリアル番号及びチェック情報が、追加レコードの登録に基づいて更新される。
【００１８】
従って、葉ページ情報に追加レコードが登録不可能であっても、新たに生成された葉ページ情報に追加レコードを登録することができる。
【００１９】
請求項５に記載の発明は、前記根ページ情報生成手段は、前記木構造において前記根ページを親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、前記節ページ情報生成手段は、前記木構造において前記節ページ情報を親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、削除対象の削除レコードのインデックス情報を入力する削除入力手段と、前記削除入力手段により入力されたインデックス情報と、前記根ページ情報または前記節ページ情報の前記担当領域情報とに基づいて、前記削除レコードを登録する前記葉ページ情報を決定する削除葉ページ決定手段と、前記削除葉ページ決定手段により決定された葉ページ情報から前記根ページ情報までの前記節ページ情報と前記根ページ情報との前記シリアル番号及び前記チェック情報を、前記葉ページ情報の決定に基づいて更新する削除更新手段と、を備えることを特徴とする。
【００２０】
この発明によれば、入力されたインデックス情報と、根ページ情報または節ページ情報の担当領域情報とに基づいて、削除レコードを登録する葉ページ情報が決定される。そして、決定された葉ページ情報から根ページ情報までの節ページ情報と根ページ情報とのシリアル番号及びチェック情報が更新される。
【００２１】
従って、例えば古くなり削除したいレコードを排除することができる。
【００２２】
請求項６に記載の発明は、前記葉ページ情報には、当該葉ページ情報に含まれる前記レコードを検索するためのインデックス情報が含まれており、前記根ページ情報生成手段は、前記木構造において前記根ページを親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、前記節ページ情報生成手段は、前記木構造において前記節ページ情報を親として、親と子の関係にあるページ情報のインデックス情報の担当領域を示す担当領域情報を更に生成し、検索対象の検索レコードのインデックス情報を入力する検索入力手段と、前記検索入力手段により入力されたインデックス情報と、前記根ページ情報または前記節ページ情報の前記担当領域情報に基づいて、前記検索レコードのインデックス情報を検索する検索手段と、を備えることを特徴とする。
【００２３】
この発明によれば、入力されたインデックス情報と、根ページ情報または節ページ情報の担当領域情報に基づいて、検索レコードのインデックス情報が検索される。
【００２４】
従って、検索対象のレコードを迅速に検索することができる。
【００２５】
請求項７に記載の発明は、複数のページ情報を木構造として管理するため、木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報を生成する根ページ情報生成ステップと、一又は複数のレコードを含む葉ページ情報を生成する葉ページ情報生成ステップと、前記木構造における前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報を生成する節ページ情報生成ステップと、前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを、前記複数のページ情報として前記木構造で記憶するページ情報記憶ステップと、をコンピュータに実現させることを特徴とする。
【００２６】
請求項８に記載の発明は、複数のページ情報を木構造として管理するため、木構造における根に位置する根ページ情報の子の位置の子ページ情報または前記根ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記根ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記根ページ情報を生成する根ページ情報生成ステップと、一又は複数のレコードを含む葉ページ情報を生成する葉ページ情報生成ステップと、前記木構造における前記根ページ情報から前記葉ページ情報までの間に位置する節ページ情報の子の位置の子ページ情報または前記節ページ情報の子の位置の前記レコードの改竄をチェックするための改竄チェック情報と、前記節ページ情報の子の位置の子ページ情報のシリアル番号とを含む前記節ページ情報を生成する節ページ情報生成ステップと、前記根ページ情報と、前記節ページ情報と、前記葉ページ情報とを、前記複数のページ情報として前記木構造で記憶するページ情報記憶ステップと、を含むことを特徴とする。
【発明の効果】
【００２７】
本発明によれば、木構造でレコードを管理することで、レコードの改竄チェックもでき、レコードの検索処理の時間が減る。
【図面の簡単な説明】
【００２８】
【図１】一実施形態に係るコンテンツ分散保存システムＳにおける各ノード装置の接続態様の一例を示す図である。
【図２】一実施形態に係るコンテンツカタログ情報の構造の一例を示す図である。
【図３】初期状態におけるカタログの情報の状態、及び、レコードが追加される場合にカタログ情報が更新される様子の一例を示す図である。
【図４】レコードが追加される場合にカタログ情報が更新される様子の一例を示す図である。
【図５】レコードが追加される場合にカタログ情報が更新される様子の一例を示す図である。
【図６】レコードが削除される場合にカタログ情報が更新される様子の一例を示す図である。
【図７】一実施形態に係るセンターサーバＳＡの概要構成例を示す図である。
【図８】一実施形態に係るノードＮｎの概要構成例を示す図である。
【図９】一実施形態に係るセンターサーバＳＡにおける制御部１１の処理例を示すフローチャートである。
【図１０】一実施形態に係るセンターサーバＳＡにおける制御部１１のルートリンク情報登録処理における処理例を示すフローチャートである。
【図１１】一実施形態に係るセンターサーバＳＡにおける制御部１１のページ情報登録処理における処理例を示すフローチャートである。
【図１２】一実施形態に係るセンターサーバＳＡにおける制御部１１のレコード追加処理における処理例を示すフローチャートである。
【図１３】一実施形態に係るセンターサーバＳＡにおける制御部１１のレコード削除処理における処理例を示すフローチャートである。
【図１４】一実施形態に係るセンターサーバＳＡにおける制御部１１のページ情報取得処理における処理例を示すフローチャートである。
【図１５】一実施形態に係るセンターサーバＳＡにおける制御部１１のレコード検索処理における処理例を示すフローチャートである。
【図１６】一実施形態に係るノードＮｎにおける制御部２１の処理例を示すフローチャートである。
【発明を実施するための形態】
【００２９】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、コンテンツ分散保存システムに本発明を適用した場合の実施形態である。
【００３０】
［１．コンテンツ分散保存システムの構成及び動作概要］
始めに、図１等を参照して、本実施形態に係るコンテンツ分散保存システムの構成及び動作概要について説明する。
【００３１】
図１は、本実施形態に係るコンテンツ分散保存システムＳにおける各ノード装置の接続態様の一例を示す図である。
【００３２】
図１の下部枠１０１内に示すように、分散保存システムＳは、複数のノード装置Ｎｎがインターネットを介して接続されることで構成される。また、図１の下部枠１０１内に示すように、ＩＸ（Internet eＸchange）３、ＩＳＰ（Internet Service Provider）４ａ，４ｂ、ＤＳＬ（Digital Subscriber Line）回線事業者の装置５ａ，５ｂ、ＦＴＴＨ（Fiber To The Home）回線事業者の装置６、及び通信回線７等によって、インターネット等のネットワーク８が構築されている。ネットワーク８は、現実世界の通信ネットワークである。なお、図１の例におけるネットワーク８には、データパケットを転送するためのルータが適宜挿入されているが、図１では図示を省略している。なお、通信回線７としては、例えば、電話回線や光ケーブル等が用いられる。
【００３３】
このようなネットワーク８には、複数のノード装置Ｎｎ（ｎ＝１，２，３・・・の何れか）が接続されている。以下、ノード装置は、「ノード」という。また、各ノードＮｎには、固有の製造番号及びＩＰ（Internet Protocol）アドレスが割り当てられている。そして、本実施形態に係るコンテンツ分散保存システムＳは、これらのノードＮｎのうち、図１の上部枠１００内に示すように、何れか複数のノードＮｎの接続により形成されるピアツーピア方式のネットワークシステムとなっている。
【００３４】
なお、図１の上部枠１００内に示すネットワーク９は、既存のネットワーク８を用いて形成された仮想的なリンクを構成するオーバーレイネットワーク９である。論理的なネットワークであるオーバーレイネットワーク９は、特定のアルゴリズム、例えば、ＤＨＴを利用したアルゴリズムにより実現される。そして、コンテンツ分散保存システムＳに接続されている各ノードＮｎには、所定桁数からなる固有の識別情報であるノードＩＤが割り当てられている。
【００３５】
また、ノードＩＤは、例えば、各ノードＮｎに個別に割り当てられたＩＰアドレス或いは製造番号を共通のハッシュ関数によりハッシュ化した値である。ノードＩＤは、ＩＤ空間に偏りなく分散して配置されることになる。ハッシュ関数としては、例えば、ＳＨＡ−１等が用いられる。また、ハッシュ化した値は、例えば、ｂｉｔ長が１６０ｂｉｔとなる。そして、このノードＩＤは、ＩＤ空間に偏りなく分散して配置されることになる。
【００３６】
なお、コンテンツ分散保存システムＳへの接続は、接続していないノードＮｎ、例えば、ノードＮ８が、接続している任意のノードＮｎに対してコンテンツ分散保存システムへの参加要求を示す参加メッセージを送信することによって行われる。コンテンツ分散保存システムＳへの参加とは、ノード装置Ｎｎが分散保存システムＳに接続され、分散保存システムＳからコンテンツデータを取得可能になることである。任意のノードＮｎは、例えば、システムＳに常時接続しているコンタクトノードである。
【００３７】
また、各ノードＮｎは、夫々、ＤＨＴを用いたルーティングテーブルを保持している。このルーティングテーブルは、コンテンツ分散保存システムＳ上における各種メッセージの転送先を規定している。具体的に、このルーティングテーブルには、ＩＤ空間内で適度に離れたノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号を含むノード情報が複数登録されている。
【００３８】
コンテンツ分散保存システムＳに接続している１台のノードは、必要最低限のノードＮｎのノード情報をルーティングテーブルとして記憶している。各ノードＮｎ間で互いに各種メッセージが転送されることで、ノード情報を記憶していないノードＮｎについてのノード情報が取得される。
【００３９】
このようなＤＨＴを用いたルーティングテーブルについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００４０】
コンテンツ分散保存システムＳは、内容の異なる様々なコンテンツデータのレプリカを所定のファイル形式で複数のノードＮｎに分散して保存する。以下、コンテンツデータは、「コンテンツ」という。そして、各ノードＮｎ間でレプリカが利用可能になっている。各コンテンツのオリジナルはセンターサーバＳＡに保存されている。例えば、ノードＮ５には、タイトルがＸＸＸの映画のコンテンツのレプリカが保存されている。一方、ノードＮ３には、タイトルがＹＹＹの映画のコンテンツのレプリカが保存される。このように、複数のノードＮｎに分散されて保存されている。以下、コンテンツのレプリカが保存されるノードＮは、「コンテンツ保持ノード」という。
【００４１】
上述のコンテンツのレプリカには、夫々、コンテンツ名及びコンテンツ毎に固有の識別情報であるコンテンツＩＤ等の情報が付加されている。このコンテンツＩＤは、例えば、コンテンツ名＋任意の数値が、上記ノードＩＤを得るときと共通のハッシュ関数によりハッシュ化されて生成される。或いは、システム管理者が、コンテンツ毎に一意のＩＤ値を付与しても良い。
【００４２】
分散保存されているコンテンツのレプリカの所在は、インデックス情報として、コンテンツのレプリカの所在を管理（記憶）しているノードＮｎ等により記憶される。以下、レプリカの所在を管理（記憶）しているノードＮｎは、「ルートノード」という。インデックス情報は、レプリカを保存したノードＮｎのノード情報と、コンテンツのコンテンツＩＤと等の組を含む。このようなルートノードは、例えば、コンテンツＩＤと最も近いノードＩＤを有するノードＮｎであるように定められる。コンテンツＩＤと最も近いノードＩＤとは、例えば、ＩＤの上位桁が最も多く一致するノードＩＤである。
【００４３】
例えば、タイトルがＸＸＸの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツのルートノードであるノードＮ４により管理される。また、例えば、タイトルがＹＹＹの映画のコンテンツのレプリカについてのインデックス情報は、そのコンテンツのルートノードであるノードＮ７により管理される。また、このようなルートノードは、例えば、コンテンツＩＤと最も近いノードＩＤを有するノードＮｎであるように定められる。コンテンツＩＤと最も近いノードＩＤとは、例えば、コンテンツＩＤと上位桁がより多く一致するノードＩＤである。
【００４４】
そして、あるノードＮｎのユーザが、所望するコンテンツのレプリカを取得したい場合、このレプリカの取得を望むノードＮｎは、メッセージを生成する。以下、ユーザによりレプリカの取得を望むノードＮｎは、「ユーザノード」という。このメッセージは、取得を望むコンテンツのコンテンツＩＤ及びユーザノードのＩＰアドレス等を含むコンテンツ所在問合せメッセージである。コンテンツ所在問合せメッセージは、コンテンツ保持ノードを検索するためのメッセージでもある。上述のコンテンツ所在問合せメッセージが、ユーザノードが取得するＤＨＴのルーティングテーブルに従って、他のノードＮｎに対して送出される。つまり、ユーザノードは、コンテンツ所在問合せメッセージを、ルートノードに向けて送出する。これにより、コンテンツ所在問合せメッセージは、コンテンツＩＤをキーとするＤＨＴルーティングによって最終的にルートノードに到着することになる。
【００４５】
各ノードＮｎにおいて、コンテンツのコンテンツ名及びコンテンツＩＤ等の属性情報は、コンテンツカタログ情報に記述されている。コンテンツカタログ情報は、センターサーバＳＡにより作成されて、後述するページ情報単位で全てのノードＮｎに配信される。このコンテンツカタログ情報の構造、内容及び作成方法等についての詳細は後述する。
【００４６】
また、上記コンテンツ所在問合せメッセージに含まれるコンテンツＩＤは、ユーザノードによって、コンテンツ名が上記共通のハッシュ関数によりハッシュ化されて生成されるようにしても良い。なお、ＤＨＴルーティングについては、特開２００６−１９７４００号公報等で公知であるので、詳しい説明を省略する。
【００４７】
上記コンテンツ所在問合せメッセージを受信したルートノードは、これに含まれるコンテンツＩＤに対応するインデックス情報をインデックス情報キャッシュから取得する。取得されたインデックス情報は、コンテンツ所在問合せメッセージの送信元であるユーザノードに対して返信される。こうしてインデックス情報を取得したユーザノードは、インデックス情報に基づいてコンテンツのレプリカをダウンロード（取得）することができる。インデックス情報に含まれるコンテンツ保持ノードのＩＰアドレス等に基づいて、ユーザノードはコンテンツ保持ノードにアクセスする。アクセスしたコンテンツ保持ノードから、コンテンツのレプリカをダウンロードすることが可能になる。この場合、ユーザノードは、この複数のコンテンツ保持ノードのうち一つのコンテンツ保持ノードを選択する。そして、ユーザノードは、選択したコンテンツ保持ノードに接続してコンテンツのレプリカをダウンロードすることができる。
【００４８】
なお、ルートノードは、このインデックス情報に含まれるＩＰアドレス等に示されたコンテンツ保持ノードに対してコンテンツ送信要求メッセージを送信し、これにより、ユーザノードは、上記コンテンツ保持ノードからそのレプリカをダウンロードすることもできる。また、上記ユーザノードは、コンテンツ所在問合せメッセージがルートノードに辿り着くまでの間に、このルートノードと同じインデックス情報をキャッシュしているキャッシュノードからこのインデックス情報を取得することもできる。
【００４９】
また、ユーザノードは、コンテンツ保持ノードからコンテンツのレプリカを取得して保存したとき、保存したユーザノードは、パブリッシュメッセージを生成する。パブリッシュメッセージは、レプリカを保存したことをルートノードへ知らせるためのメッセージである。パブリッシュメッセージは、レプリカのコンテンツＩＤ及びレプリカを保存したノード装置のノード情報を含む。パブリッシュメッセージは、ルートノードに向けて送出される。これにより、パブリッシュメッセージは、コンテンツ所在問合せメッセージと同じように、コンテンツＩＤをキーとするＤＨＴルーティングによってルートノードに到着することになる。そして、ルートノードは、パブリッシュメッセージを受信する。ルートノードは、パブリッシュメッセージに含まれるノード情報及びコンテンツＩＤの組を含むインデックス情報をインデックス情報キャッシュ領域に記憶する。こうして、上記ユーザノードは、新たに、上記コンテンツのレプリカを保持するコンテンツ保持ノードとなる。
【００５０】
［２．コンテンツカタログ情報の構造及び内容等］
次に、コンテンツカタログ情報の構造及び内容等について、図２を用いて説明する。
【００５１】
図２は、本実施形態に係るコンテンツカタログ情報の構造の一例を示す図である。なお、コンテンツカタログ情報のことを、今後単にカタログ情報という。
【００５２】
カタログ情報は、コンテンツの属性情報を一覧として管理するための情報である。この属性情報の内容はレコードに格納される。また、カタログ情報は、検索キーから一意にコンテンツを特定することができる情報である。コンテンツを特定することができるとは、コンテンツのレコードを探し出すことができることを意味する。検索キーとしては、例えば、対応するレコードやコンテンツ名を共通のハッシュ関数によりハッシュ化した値が用いられる。或いは、検索キーは、コンテンツＩＤやコンテンツ名等であっても良い。この検索キーはインデックス情報の一例である。
【００５３】
本実施形態において用いられるカタログ情報は、コンテンツの属性情報の改竄を防止するため、及び、コンテンツの検索を効率的に行うため、図２に示す探索木の構造を有している。
【００５４】
図２に示すように、カタログ情報は、木構造における根に位置するルートページ情報から葉に位置する葉ページ情報にかけて、各ページ情報が関連付けられて構成されている。ルートページ情報は、根ページ情報の一例である。直接関連付けられているページ情報同士は、親子関係を形成している。或るページ情報Ｘに対してページ情報Ｙが関連付けられているとする。つまり、ページ情報Ｘとページ情報Ｙとで親子関係を形成している。ページ情報Ｘとページ情報Ｙとのうち、ページ情報Ｘの方がルートページ情報からの距離が短い場合、ページ情報Ｘは、ページ情報Ｙから見て親に位置する親のページ情報となる。そして、ページ情報Ｙは、ページ情報Ｘから見て子に位置する子のページ情報となる。ここで、ルートページ情報からの距離とは、木構造において、根の位置から注目する節点に辿るまでのリンク数に相当する長さである。換言すると、ルートページ情報からの距離とは、ルートページ情報から関連付けを辿って注目するページ情報に至るまでに、注目するページ情報を含めて通過するページ情報の数に相当する。なお、以降の説明においては、親のページ情報を親ページ情報といい、子のページ情報を子ページ情報という。
【００５５】
親ページ情報と子ページ情報との関連付けは、リンク情報に示される。リンク情報は、親ページ情報に格納される情報であり、子ページ情報を指す情報である。このリンク情報は、子ページ情報のページ番号と、子ページ情報の改竄をチェックするためのメッセージダイジェストとを含む。
【００５６】
ページ番号は、ページ情報に固有に割り当てられたシリアル番号である。リンク情報が指すページ情報というときは、リンク情報に含まれるページ番号が割り当てられているページ情報を意味する。また、詳細は後述するが、或るページ情報が更新される場合にはこのページ情報に対して新たなページ番号が割り当てられる。ここで、本実施形態におけるページ情報の更新とは、元のページ情報の内容が更新されたページ情報を、元のページ情報とは別個のページ情報として新たに作成することを意味する。実際、ページ番号は、例えば、ページ情報がＲＡＭに格納される際の格納アドレスに対応したり、ページ情報の格納位置を示すポインタの格納アドレスであったりする。また、ページ情報がファイルとして保存される際には、ページ番号はファイル名に対応したりする。
【００５７】
メッセージダイジェストは、リンク情報が指す子ページ情報又はリンク情報が指す子ページ情報に格納されているレコードの改竄をチェックするための情報である。また、メッセージダイジェストは、改竄をチェックする対象を共通のハッシュ関数によりハッシュ化した値である。このメッセージダイジェストは改竄チェック情報の一例である。
【００５８】
カタログ情報は、更にルートリンク情報を有する（符号１００）。ルートリンク情報には、ルートページ情報へのリンク情報が格納される（符号１００１）。そして、このリンク情報は、ルートページ情報のページ番号（符号１００２）及びメッセージダイジェスト（符号１００３）を含む。また、ルートリンク情報には、電子署名が格納される（符号１００４）。電子署名は、ルートリンク情報の改竄をチェックするための情報である。電子署名には、例えば、署名値、証明書情報等の情報が含まれている。
【００５９】
ページ情報は、大別して節ページ情報（符号２００）と葉ページ情報（符号３００）とがある。
【００６０】
節ページ情報は、一つ以上の子ページ情報を持つ。節ページ情報には、セルフリンク情報（符号２００１）、子ページ情報へのリンク情報（符号２００４）及びインデックス（符号２００７）が格納される。セルフリンク情報は、このセルフリンク情報が格納されている節ページ情報自身へのリンク情報である。つまり、セルフリンク情報は、節ページ情報のページ番号（符号２００２）及びメッセージダイジェスト（符号２００３）を含む。よって、セルフリンク情報は、節ページ情報の親ページ情報に格納されているこの節ページ情報へのリンク情報と同一内容となる。
【００６１】
子ページ情報へのリンク情報は、子ページ情報のページ番号（符号２００６）及びメッセージダイジェスト（符号２００５）を含む。なお、節ページ情報において、単にリンク情報というときは、セルフリンク情報ではなく、子ページ情報へのリンク情報を意味するものとする。節ページ情報には、リンク情報を複数格納することができる。一つあたりの節ページ情報に格納可能なリンク情報の最大数は、カタログ情報の木構造としての次数に一致する。この次数は、一つの親が持ちうる子の最大数を意味する。つまり、次数は、ｎ分探索木のｎの値に該当する。
【００６２】
インデックスは、探索木の節点が持つ値、キー等と呼ばれている情報と同じ役割を持つ。このインデックスは、コンテンツのレコードが格納されているページ情報を、検索キーを用いて探索するための情報である。なお、図２に示すインデックスは、便宜上十進数で示されている。このインデックスは、インデックス情報及び担当領域情報の一例である。
【００６３】
カタログ情報の木構造は、順序性を有している。従って、節ページ情報に格納されているインデックスは、例えばその値の小さい順に配列されている。そして、リンク情報は、インデックスに対応した順序で配列されている。例えば、１番目のリンク情報は、１番目のインデックスの値以下の範囲インデックスが格納される子ページ情報への関連付けを示す。また例えば、２番目のリンク情報は、１番目のインデックスの値より大きく且つ２番目のインデックスの値以下の範囲のインデックスが格納される子ページ情報への関連付けを示す。或る節ページ情報に現在ｋ個のリンク情報が格納されている場合、この節ページ情報にはｋ−１個のインデックスが格納されている。
【００６４】
葉ページ情報は、上述したように、探索木における葉に位置するページ情報である。つまり、葉ページ情報は、子ページ情報を持たない。葉ページ情報には、セルフリンク情報（符号３００１）、レコード（符号３００４）及びインデックス（符号３００５）が格納される。セルフリンク情報は、このセルフリンク情報が格納されている葉ページ情報自身へのリンク情報である。つまり、セルフリンク情報は、葉ページ情報のページ番号（符号３００２）及びメッセージダイジェスト（符号３００３）を含む。よって、セルフリンク情報は、葉ページ情報の親ページ情報に格納されているこの葉ページ情報へのリンク情報と同一内容となる。
【００６５】
レコードとインデックスとは、一対一に対応付けられている。対応付けられているレコードとインデックスとの組は、葉ページ情報に１組又は複数組格納される。一つのレコードには、一つまたは複数のコンテンツの属性情報が設定される。例えば、レコードには、コンテンツＩＤ、コンテンツの公開開始日時、公開終了日時、コンテンツ名、キーワード等が設定される。インデックスは、対応するレコードを一意に特定するための情報である。葉ページ情報のインデックスとして用いられる情報の種類は、節ページ情報のインデックスとして用いられる情報の種類と同じである。このインデックスとして、コンテンツＩＤやコンテンツ名等が用いられる場合、この情報は、レコードの設定内容に含める必要はない。このインデックスは、インデックス情報の一例である。
【００６６】
以上説明した構成のカタログ情報を用いた場合に、コンテンツの検索を効率的に行える理由を説明する。登録されているコンテンツの個数がｎである場合、逐次探索における探索の計算量は、最悪Ｏ（ｎ）となる。一方、本実施形態に係るカタログ情報は、探索木の構造を有しているので、木が平衡した状態での探索の計算量は、周知のようにＯ（ｌｏｇ ｎ）となる。よってコンテンツの検索を効率的に行うことができる。
【００６７】
次に、コンテンツの属性情報の改竄を防止することができる理由を説明する。子ページ情報が改竄されているか否かはその親ページ情報に格納されているこの子ページ情報へのリンク情報により行われる。つまり、このリンク情報には、子ページ情報のメッセージダイジェストが含まれているので、このメッセージダイジェストで改竄チェックが行われる。このようにして、葉ページ情報からルートページ情報まで、子ページ情報の改竄有無は、その親ページ情報に格納されているリンク情報によってチェックされる。ルートページ情報の改竄有無は、ルートリンク情報によってチェックされる。
【００６８】
一般的に、メッセージダイジェストだけでは、改竄を確実に防止することはできないとされている。つまり、必要なハッシュ関数を入手することができれば、メッセージダイジェストを計算することができる。このハッシュ関数は、例えばノードＮｎ側での改竄チェックのために公開される。悪意を持った者は、ページ情報の内容を改竄し、その改竄された内容でメッセージダイジェストを計算することができる。そして、このメッセージダイジェストを親ページのリンク情報に設定してしまえば、改竄されているか否かは分からない。
【００６９】
これに対し、本実施形態に係るカタログ情報は、ルートリンク情報に、その真正性を保証するための電子署名が付与されている。例えば電子署名に公開鍵方式を用いた場合には、電子署名に必要な秘密鍵を第三者に入手されなければ、ルートリンク情報の改竄をチェックすることができる。電子署名を用いた改竄チェックによりルートリンク情報が真正なものと判断されれば、ルートリンク情報に含まれるルートページ情報のメッセージダイジェストも真正なものと判断することができる。次に、この真正なメッセージダイジェストを用いた改竄チェックによりルートページ情報が真正なものと判断されれば、ルートページ情報に格納されているリンク情報に含まれる子ページ情報のメッセージダイジェストも真正なものと判断することができる。このようにして、ルートページ情報から葉ページ情報まで、親ページ情報に格納されているリンク情報のメッセージダイジェストにより子ページ情報の真正性が保証される。結果として、カタログ情報全体の改竄防止が可能となる。
【００７０】
本実施形態においては、上述したようにルートリンク情報に対してのみ電子署名を作成しているが、全てのページ情報に対して電子署名を作成することを排除するものではない。ただし、電子署名は、証明書情報等の情報を設定する等して作成されることで、一般的に電子署名の方がメッセージダイジェストよりもセキュリティが高められている。このセキュリティを高めるための暗号化や改竄チェック時の復号化等の処理による計算量が大きく、また、電子証明書情報等の電子署名に必要なデータ量も大きくなる。そのため、電子署名よりもメッセージダイジェストの方が、計算量及びページ情報のデータ量ともに節約することができる。一方、全てのページ情報に対して電子署名を作成する場合、ルートリンク情報は必須ではない。この場合、ルートページ情報に対する電子署名を保存しておけば良い。
【００７１】
カタログ情報の改竄としては、上述したページ情報の内容自体の改竄の他に、ページ情報を古いページ情報で置き換える改竄も存在する。つまり、コンテンツの追加や削除によって、ページ情報の内容が更新されるが、これを更新される前のページ情報で置き換えるのである。古いページ情報自体も真正なものである。従って、どのページ情報が最新のものであるかを区別することができるようになっている必要がある。
【００７２】
本実施形態に係るカタログ情報は、各ページ情報に対してページ番号が割り当てられている。このページ番号は、ページ情報間で同一のものが割り当てられることはない。更に、本実施形態においては、ページ情報を更新する際、ページ情報の内容を書き換えるのではない。本実施形態においては、元のページ情報とは別個に新たなページ情報を作成し、この新たなページ情報に対して、更新した内容を設定する。このとき、新しいページ情報には、元のページ情報のページ番号とは異なるページ番号が割り当てられる。具体的には、新しいページ情報が作成される都度、過去に作成された如何なるページ情報にも割り当てられていない最新のページ番号が割り当てられる。例えば、最後に割り当てられたページ番号が１００である場合、次に新たに作成されるページ情報に割り当てられるページ番号は１０１となる。このページ番号は、親ページ情報に格納されるリンク情報内に設定される。従って、節ページ情報に格納されているリンク情報は、必ず最新の子ページ情報を指している。仮に、リンク情報のページ番号が古いページ番号に改竄された場合、それは、ページ情報の内容の改竄である。従って、前記の方法により改竄を発見することができる。
【００７３】
なお、本実施形態においては、ページ情報を更新する場合、上述したように新しいページ情報を作成しているが、ページ情報自体の内容を書き換えてもかまわない。
【００７４】
以上、図２を用いて説明したカタログ情報の構造は、あくまでも一例である。カタログ情報の構造としては、コンテンツのレコードを探索可能な木構造を有していれば、どのような構造であってもかまわない。
【００７５】
例えば、葉ページ情報だけでなく、節ページ情報中にレコードが格納されても良い。また、木構造の次数、つまり、一つの節ページ情報に格納可能なリンク情報の最大数は任意である。また、一つのページ情報に格納可能なレコードの最大数は１個でも複数個でも良い。更に、セルフリンク情報は、必須ではない。
【００７６】
また更に、節ページ情報のインデックスは必須ではない。例えば、トライ（trie）木の場合、節ページ情報のインデックスは不要である。つまり、トライ木では、木構造上におけるページ情報の位置がインデックスに対応し、検索キーのビットや文字等の値に従ってルートページ情報から葉ページ情報まで木が辿られる。例えば、ルートページ情報から葉ページ情報に向かって各節ページ情報に検索キーの最上位４ビットから４ビットずつを割り当てたとする。この場合、一つの節ページ情報に、１６個のリンク情報を要素として格納する配列がある。そして例えば、検索キーが１６進でＦ３４０５Ｂ９Ｃである場合、ルートページ情報に関しては、上位一桁目のＦが、配列のインデックスとなる。つまり、ルートページ情報における配列の１６番目に格納されているリンク情報が、次に参照すべき子ページ情報へのリンク情報となる。次に、ルートページ情報の子ページ情報に関しては、上位から２桁目の３が、配列のインデックスとなる。つまり、この子ページ情報における配列の４番目に格納されているリンク情報が、次に辿るべき子ページ情報へのリンク情報となる。こうして葉ページ情報に辿り着いたところで、検索キー全体とレコードのインデックスとが比較される。このようにして探索が行われる。
【００７７】
更にまた、葉ページ情報のインデックスも必須ではない。例えば、トライ木においては、インデックスの値が比較的離れているレコードをまとめることができる。例えば、インデックスが１６進でＦ３４０５Ｂ９ＣのレコードとＦ３４０１３Ａ２のレコードがあるとする。この２つのインデックスの上位３桁の値は同じである。この場合、上位３桁の値がＦ３４であるレコードが他に存在せず、且つ、一つの葉ページ情報がレコードを２つ以上格納可能であれば、この２つのレコードを同じ葉ページ情報に格納することができる。つまり、ルートページ情報から、Ｆ、３、４と辿って至る葉ページ情報に２つのレコードが格納される。この場合、葉ページ情報に、レコードのインデックスが必要である。一方、例えば、検索キーの上位７桁までは、必ず節ページ情報を作成するようにし、且つ、検索キーの最下位４桁目の値を葉ページ情報に割り当てるとする。この場合、葉ページ情報には、１６個のレコードを要素として格納する配列がある。このとき、インデックスがＦ３４０５Ｂ９Ｃのレコードは、ルートページ情報から、Ｆ、３、４、０、５、Ｂ、９と辿って至る葉ページ情報における配列の１０番目にレコードが格納される。この場合、葉ページ情報には、レコードのインデックスは不要である。
【００７８】
更に、具体例を示して説明する。ここでは、コンテンツのインデックスとして４進数４桁が用いられるものとする。この場合、各節ページには、４つのリンク情報を格納することができる。例えば、ルートページ情報は、インデックスの上位一桁の値が０、１、２及び３に対応するページ情報を夫々指すリンク情報を格納する配列がある。この場合、最上位の桁の値が０に対応する位置に、インデックスの上位一桁の値が０に対応するページ情報へのリンク情報が格納される。また、最上位の桁の値が１に対応する位置に、インデックスの上位一桁の値が１に対応するページ情報へのリンク情報が格納される。また、最上位の桁の値が２に対応する位置に、インデックスの上位一桁の値が２に対応するページ情報へのリンク情報が格納される。また、最上位の桁の値が３に対応する位置に、インデックスの上位一桁の値が３に対応するページ情報へのリンク情報が格納される。
【００７９】
次に、例えば、インデックスの上位一桁の値が１に対応するページ情報には、インデックスの上位二桁の値が１０、１１、１２及び１３に対応するページ情報を夫々指すリンク情報を格納する配列がある。この場合、最上位から２番目の桁の値が０に対応する位置に、インデックスの上位二桁の値が１０に対応するページ情報へのリンク情報が格納される。また、最上位から２番目の桁の値が１に対応する位置に、インデックスの上位二桁の値が１１に対応するページ情報へのリンク情報が格納される。また、最上位から２番目の桁の値が２に対応する位置に、インデックスの上位二桁の値が１２に対応するページ情報へのリンク情報が格納される。また、最上位から２番目の桁の値が３に対応する位置に、インデックスの上位二桁の値が１３に対応するページ情報へのリンク情報が格納される。
【００８０】
次に、例えば、インデックスの上位二桁の値が１０に対応するページ情報には、インデックスの上位三桁の値が１００、１０１、１０２及び１０３に対応するページ情報を夫々指すリンク情報を格納する配列がある。この場合、最上位から３番目の桁の値が０に対応する位置に、インデックスの上位三桁の値が１００に対応するページ情報へのリンク情報が格納される。
【００８１】
次に、例えば、インデックスの上位三桁の値が１０２に対応するページ情報は、葉ページ情報となる。インデックスの上位三桁の値が１０２に対応するページ情報には、インデックスの値が１０２０、１０２１、１０２２及び１０２３である４つのレコードを格納する配列がある。この場合、最下位の桁の値が０に対応する位置に、インデックスが１０２０のレコードが格納される。
【００８２】
また、木の種類としては、例えばＢ木、Ｂ＋木、赤黒木等の平衡木であっても良いし、平衡性のない単純なｎ分探索木であっても良い。
【００８３】
［３．コンテンツカタログ情報に対するレコードの追加、削除及び検索］
次に、カタログ情報へのレコードの追加、カタログ情報からのレコードの削除、及び、レコードの検索方法について、図３乃至図６を用いて説明する。
【００８４】
レコードの追加又は削除を行う場合には、カタログ情報の更新、つまり、ページ情報の更新が必要となる。このとき、本実施形態におけるページ情報の更新の原則は以下の通りである。
【００８５】
（１）ページ情報を追加するときは勿論のこと、ページ情報を更新するときも、元のページ情報の内容を更新したページ情報を新たに作成する。例えば、ページ情報をＲＡＭ上に作成する場合には、元のページ情報が格納されるアドレスとは異なるアドレスに新しいページ情報を作成する。また、ルートリンク情報を更新するときも、内容を更新したルートリンク情報を新たに作成する。
【００８６】
（２）ページ情報を新しく作成するときは、作成順にページ番号を割り当てる。
【００８７】
（３）ページ情報を新しく作成するときは、新しいページ情報のメッセージダイジェストを計算する。
【００８８】
（４）ルートリンク情報を新しく作成するときは、新しいルートリンク情報に対する電子署名を作成する。
【００８９】
（５）新しく作成されたページ情報のページ番号及びメッセージダイジェストを、このページ情報への新たなリンク情報として、親ページ情報に設定する。つまり、親ページ情報も更新する必要がある。また、ルートページ情報を新しく作成した場合は、このルートページ情報のページ番号及びメッセージダイジェストを、このページ情報への新たなリンク情報として、ルートリンク情報に設定する。つまり、ルートリンク情報も更新する必要がある。
【００９０】
（６）ページ情報の更新は、レコードが追加又は削除されるページ情報から開始し、このページ情報からルートページ情報までのパス（経路）上にあるページ情報を、ルートページ情報からの距離が長いページ情報から順に更新する。つまり、ルートページ情報が上方に、葉ページ情報が下方に位置すると仮定すると、下から順にページ情報を更新する。
【００９１】
（１）及び（２）の原則は、古いページ情報がカタログ情報に挿入されないためのものである。また、（３）乃至（５）の原則は、カタログ情報の内容の改竄を防止するためのものである。また、（６）の原則は、カタログ情報の改竄を防止するため、（５）の原則からに導き出されるものである。なお、これらの原則は、あくまでも本実施形態における原則である。例えば、前述したように、（１）の原則は本発明において必須ではない。
【００９２】
新しいページ情報が作成されることにより、古くなったページ情報、つまり、参照されなくなったページ情報は、参照されなくなった時点で削除しても良いし、削除しなくても良い。また、古くなったページ情報を定期的に削除するようにしても良い。
【００９３】
以上の原則を踏まえて、以下レコードの追加、削除及び検索の方法について説明する。
【００９４】
［３．１  初期状態］
カタログ情報における初期状態とは、レコードが一切登録されていない状態であり、且つ、レコードを登録する準備ができている状態である。この初期状態のカタログ情報は、センターサーバＳＡの後述する初期化処理から実行されるルートリンク情報登録処理において作成される。
【００９５】
図３は、初期状態におけるカタログの情報の状態、及び、レコードが追加される場合にカタログ情報が更新される様子の一例を示す図である。
【００９６】
図３（１）に示すように、先ず、空のルートページ情報３０１が作成される。空のページ情報とは、リンク情報及びレコードが全く格納されていないページ情報を意味する。このルートページ情報３０１に対してページ番号が割り当てられる。最初のページ情報の作成であるので、ページ番号として１が割り当てられる。また、ページ番号が割り当てられたルートページ情報３０１のメッセージダイジェストＨ１が計算される。ページ情報にセルフリンク情報を含ませる場合には、セルフリンク情報のメッセージダイジェストが設定される部分を除いたページ情報全体に対してメッセージダイジェストが計算される。
【００９７】
次に、ルートリンク情報１０１が作成される。ルートリンク情報には、ルートページ情報のページ番号１と、メッセージダイジェストＨ１が設定される。また、ルートリンク情報１０１の電子署名１が作成される。電子署名は、電子署名自身が設定される部分を除いたルートリンク情報全体に対して作成される。そして、電子署名１は、ルートリンク情報に設定される。このルートリンク情報１０１とルートページ情報３０１とでカタログ情報の初期状態を構成する。
【００９８】
［３．２  レコードの追加］
カタログ情報へのレコードの追加は、センターサーバＳＡの後述するレコード追加処理において行われる。新規レコードを追加する場合、新規レコードとこの新規レコードの検索キーとが必要となる。なお、検索キーは、新規レコードとは別に指定されても良いし、新規レコードに設定されているコンテンツＩＤやコンテンツ名等が用いられても良い。また、レコードの内容をハッシュ化したものを検索キーとしても良い。
【００９９】
カタログ情報の初期状態において、新規レコードＲ１が追加されるとする。ルートリンク情報１０１に設定されているリンク情報の内容から、ページ番号１のルートページ情報３０１が参照される。ルートページ情報３０１は空であるので、レコードを追加することができる。従って、図３（２）に示すように、新規レコードＲ１が追加されたルートページ情報３０２が新たに作成される。このとき、必要であれば、新規レコードの検索キーがこの新規レコードのインデックスとしてルートページ情報３０２に追加される。そして、このルートページ情報３０２に対し、最新のページ番号２が割り当てられ、メッセージダイジェストＨ２が計算される。
【０１００】
次いで、図３（３）に示すように、ページ番号２及びメッセージダイジェストＨ２が設定されたルートリンク情報１０２が新たに作成される。そして、ルートリンク情報１０２の電子署名２が作成される。
【０１０１】
次に、新規レコードＲ２が追加されるとする。ルートページ情報３０２に格納されているレコードの数は１である。葉ページ情報に格納可能なレコードの数が、例えば３であるとすると、ルートページ情報３０２に対してレコードを追加することができる。従って、図３（４）に示すように、レコードＲ１に加えて、新規レコードＲ２が追加されたルートページ情報３０３が新たに作成される。そして、このルートページ情報３０３に対し、最新のページ番号３が割り当てられ、メッセージダイジェストＨ３が計算される。
【０１０２】
次いで、図３（５）に示すように、ページ番号３及びメッセージダイジェストＨ３が設定されたルートリンク情報１０３が新たに作成される。そして、ルートリンク情報１０３の電子署名３が作成される。
【０１０３】
図４は、レコードが追加される場合にカタログ情報が更新される様子の一例を示す図である。
【０１０４】
上記と同様にして新規レコードＲ３がルートページ情報に追加される。その結果、３個のレコードを格納するルートページ情報３０４とルートリンク情報１０４とが作成される。
【０１０５】
次に、新規レコードＲ４が追加されるとする。すると、図４（１）に示すように、ルートページ情報３０４には、もはやレコードを追加する余裕がない。そこで、ページ情報の分割が行われる。この分割方法は任意であり、木の種類やアルゴリズム等によって様々である。従って、ここでは一例のみを説明する。
【０１０６】
例えば、ルートページ情報３０４の内容が３分割される。図４（２）に示すように、レコードＲ１を格納する葉ページ情報３０５と、レコードＲ３及び新規レコードＲ４を格納する葉ページ情報３０６と、レコードＲ２を格納する葉ページ情報３０７とが新たに作成される。新たに作成された葉ページ情報のうちどの葉ページ情報に新規レコードが追加されるかは、新規レコードの検索キーにより決定される。新たに作成された各葉ページ情報に対し、ページ番号が割り当てられ、メッセージダイジェストが計算される。
【０１０７】
分割前のページ情報に親ページ情報が存在するのであれば、ページ情報の分割はここで終わっても良い。しかし、分割前のページ情報がルートページ情報である場合には、親ページ情報が存在しない。分割された各ページ情報へのリンク情報を格納する親ページ情報が必要である。従って、図４（３）に示すように、ルートページ情報２０１が新たに作成される。ルートページ情報２０１には、葉ページ情報３０５、３０６及び３０７への各リンク情報が設定される。また、インデックスが必要な場合には、適切な内容のインデックスがルートページ情報２０１に設定される。そして、このルートページ情報２０１に対し、最新のページ番号８が割り当てられ、メッセージダイジェストＨ８が計算される。
【０１０８】
次いで、図４（４）に示すように、ページ番号８及びメッセージダイジェストＨ８が設定されたルートリンク情報１０４が新たに作成される。そして、ルートリンク情報１０４の電子署名５が作成される。
【０１０９】
図５は、レコードが追加される場合にカタログ情報が更新される様子の一例を示す図である。
【０１１０】
図５に示すように、カタログ情報には、ルートリンク情報１０５、ルートページ情報２０３、ルートページ情報２０３の子である節ページ情報２０２、及び、節ページ情報２０２の子である葉ページ情報３０８があるとする。ここで、新規レコードＲ１６が追加されるとする。レコード１６の検索キーと各ページ情報のインデックスとに基づいて、例えば、ルートリンク情報１０５、ルートページ情報２０３、節ページ情報２０２、葉ページ情報３０８の順に、新規レコードＲ１６を格納すべきページ情報の探索が行われる。葉ページ情報３０８に対してレコードが追加可能であれば、この葉ページ情報３０８に代わる新たな葉ページ情報３０９が作成される。葉ページ情報３０９には、葉ページ情報３０８に格納されていたレコードＲ１と新規レコードＲ１６が設定される。そして、この葉ページ情報３０９に対し、最新のページ番号３２が割り当てられ、メッセージダイジェストＨ３２が計算される。
【０１１１】
節ページ情報２０２としては、節ページ情報２０２の子ページ情報へのリンク情報が変更されるので、節ページ情報２０２に代わる新たな節ページ情報２０４が作成される。節ページ情報２０４には、節ページ情報２０２に格納されていた各リンク情報及びインデックスが設定される。また、設定されたリンク情報のうち、葉ページ情報３０８へのリンク情報であるページ番号２４及びメッセージダイジェストＨ２４が、葉ページ情報３０９へのリンク情報であるページ番号３２及びメッセージダイジェストＨ３２に書き換えられる。そして、この節ページ情報２０４に対し、最新のページ番号３３が割り当てられ、メッセージダイジェストＨ３３が計算される。
【０１１２】
ルートページ情報２０３としては、ルートページ情報２０３の子ページ情報へのリンク情報が変更されるので、ルートページ情報２０３に代わる新たなルートページ情報２０５が作成される。ルートページ情報２０５の作成方法は、節ページ情報２０４の作成方法と同様である。
【０１１３】
そして、ルートページ情報２０３へのリンク情報が変更されるので、ルートリンク情報１０５に代わる新たなルートリンク情報１０６が作成される。
【０１１４】
［３．３  レコードの削除］
カタログ情報からのレコードの削除は、センターサーバＳＡの後述するレコード削除処理において行われる。レコードを削除する場合、削除対象レコードの検索キーが必要となる。
【０１１５】
図６は、レコードが削除される場合にカタログ情報が更新される様子の一例を示す図である。
【０１１６】
カタログ情報は、図５を用いて説明した新規レコードＲ１６が追加された後の状態であるとする。ここで、削除対象のレコードの検索キーとして５が指定されたとする。検索キーの値５と各ページ情報のインデックスとに基づいて、例えば、図６（１）に示すルートリンク情報１０６、ルートページ情報２０５、節ページ情報２０４、葉ページ情報３０９の順に、検索キーに対応するレコードを格納しているページ情報の探索が行われる。
【０１１７】
葉ページ情報３０９には、レコードが格納されているので、レコードのインデックスと検索キーとが比較される。検索キーの値５は、レコードＲ１のインデックスの値５と一致する。従って、この葉ページ情報３０９に代わる新たな葉ページ情報３１０が作成される。葉ページ情報３１０には、葉ページ情報３０８に格納されていたレコードのうち、レコードＲ１以外のレコードが設定される。そして、この葉ページ情報３１０に対し、最新のページ番号３５が割り当てられ、メッセージダイジェストＨ３５が計算される。
【０１１８】
この後、節ページ情報２０４に代わる節ページ情報２０６、ルートページ情報２０５に代わるルートページ情報２０７、ルートリンク情報１０６に代わるルートリンク情報１０７が、この順に新たに作成される。これらのページ情報の作成方法は、図５を用いて説明した場合と同様である。
【０１１９】
更に、削除対象のレコードの検索キーとして８が指定されたとする。検索キーの値８と各ページ情報のインデックスとに基づいて、例えば、図６（２）に示すルートリンク情報１０７、ルートページ情報２０７、節ページ情報２０６、葉ページ情報３１０の順に探索が行われる。葉ページ情報３１０には、インデックスの値が８であるレコードＲ１６が格納されている。従って、レコードＲ１６は削除されことになる。
【０１２０】
レコードＲ１６が削除されると、葉ページ情報３１０は空になる。空になった葉ページ情報は不要であるので、葉ページ情報３１０に代わる新たな葉ページ情報を作成する必要はない。ここで、節ページ情報２０６に代わる新たな節ページ情報２０８が作成される。節ページ情報２０８には、節ページ情報２０６に格納されていた各リンク情報及びインデックスが設定される。また、設定されたリンク情報のうち、葉ページ情報３１０へのリンク情報であるページ番号３５及びメッセージダイジェストＨ３５が、何れも無効な値に書き換えられる。これにより、葉ページ情報３１０は、今後一切参照されなくなる。そして、この節ページ情報２０８に対し、最新のページ番号３８が割り当てられ、メッセージダイジェストＨ３８が計算される。
【０１２１】
この後、ルートページ情報２０７に代わるルートページ情報２０９、及び、ルートリンク情報１０７に代わるルートリンク情報１０８が、この順に新たに作成される。
【０１２２】
［３．４  レコードの検索］
レコードの検索は、センターサーバＳＡの後述するレコード検索処理において行われる。レコードを検索する場合において、検索目的のレコードを格納しているページ情報を探索する方法は、木構造におけるノードの探索方法と同じである。つまり、ページ情報の探索方法は、カタログ情報の木構造に対応する探索アルゴリズムに依存する。また、レコードを追加、削除する場合にも、同様の探索方法が用いられる。以下では、レコードの検索方法の一例を、図５を用いて説明する。
【０１２３】
図５に示すように、カタログ情報には、ルートリンク情報１０６、ルートページ情報２０５、節ページ情報２０４、及び、葉ページ情報３０９があるとする。ここで、検索対象のレコードの検索キーとして８が指定されたとする。先ず、ルートリンク情報に設定されているページ番号３４が参照される。
【０１２４】
ページ番号３４はルートページ情報２０５のページ番号であるので、次はルートページ情報２０５が参照される。ここで、検索キーとルートページ情報２０５に格納されている各インデックスとの比較が行われる。ルートページ情報２０５には、インデックスとして、１１、３７及び６８が格納されている。検索キーの値５とインデックスの値１１とを比較すると、検索キーの値の方が小さい。従って、１１よりインデックスの値が小さいページ情報を指すリンク情報に含まれるページ番号３３が参照される。なお、ルートページ情報２０５には、ページ番号３３に対応するページ情報へのリンク情報のほか、ページ番号３０、２０及び１８に対応するページ情報へのリンク情報も格納されている。ただし、図５においては、ページ番号３０、２０及び１８に対応するページ情報の図示は省略している。
【０１２５】
ページ番号３３は節ページ情報２０４のページ番号であるので、次は節ページ情報２０４が参照される。ルートページ情報２０５には、インデックスとして、３が格納されている。検索キーの値５とインデックスの値３とを比較すると、検索キーの値の方が大きい。従って、３よりインデックスの値が大きいページ情報を指すリンク情報に含まれるページ番号３２が参照される。なお、節ページ情報２０４には、ページ番号３２に対応するページ情報へのリンク情報のほか、ページ番号２３に対応するページ情報へのリンク情報も格納されている。ただし、図５においては、ページ番号２３に対応するページ情報の図示は省略している。
【０１２６】
ページ番号３２は葉ページ情報３０９のページ番号であるので、次は葉ページ情報３０９が参照される。葉ページ情報３０９には、インデックスとして、５及び８が格納されている。検索キーの値８とインデックスとを順次比較すると、レコードＲ１６のインデックスの値と検索キーの値８とが一致する。その結果、レコードＲ１６が検索される。
【０１２７】
なお、本実施形態においては、レコードの追加、削除及び検索においてページ情報の探索を行う際に、改竄チェックを行っている。この改竄チェックは、参照されるページ情報について行われる。
【０１２８】
前記の例では、最初に、ルートページ情報２０９の改竄チェックが、ルートリンク情報１０８に設定されているメッセージダイジェストＨ３４を用いて行われる。次に、節ページ情報２０８の改竄チェックが、ルートページ情報２０９に設定されているメッセージダイジェストＨ３３を用いて行われる。最後に、葉ページ情報３０９の改竄チェックが、節ページ情報２０８に設定されているメッセージダイジェストＨ３２を用いて行われる。なお、ルートリンク情報の改竄チェックは、センターサーバＳＡの後述する初期化処理で行われる。
【０１２９】
このように、ページ情報が実際に参照されるときに改竄チェックが行われるので、参照されたページ情報の真正性が確実に保証される。また、参照されるページ情報のみ改竄チェックが行われるので、効率的でもある。ただし、レコードの追加、削除及び検索の度にこのような改竄チェックを行わなくても良い。例えば、定期的に改竄チェックを行っても良いし、オペレータからの指示があったときに改竄チェックを行っても良い。
【０１３０】
［４．センターサーバＳＡの構成等］
次に、図７を参照して、センターサーバＳＡの構成及び機能について説明する。
【０１３１】
図７は、センターサーバＳＡの概要構成例を示す図である。
【０１３２】
センターサーバＳＡは、図７に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成された制御部１１を備えている。また、センターサーバＳＡは、各種データ及び各種プログラム等を記憶保存するためのＨＤ等から構成された記憶部１２を備えている。更に、センターサーバＳＡは、ネットワーク８等を通じてノードＮｎとの間の情報の通信制御を行うための通信部１３を備えている。また更に、センターサーバＳＡは、各種情報を表示するＣＲＴ，液晶ディスプレイ等の表示部１４を備えている。更にまた、センターサーバＳＡは、オペレータからの指示を受け付けこの指示に応じた指示信号を制御部１１に対して与える入力部（例えば、キーボード、マウス等）１５と、を備えている。そして、制御部１１、記憶部１２、通信部１３、表示部１４、及び入力部１５はバス１６を介して相互に接続されている。ここで、入力部１５は、本発明における追加入力手段、削除入力手段及び検索入力手段の一例である。また、記憶部１２は、本発明におけるページ情報記憶手段の一例である。記憶部１２は、揮発性のメモリであっても良いし、不揮発性のメモリであっても良い。
【０１３３】
記憶部１２には、各ノードＮｎのノードＩＤ、ＩＰアドレス及びポート番号等が記憶されている。また、記憶部１２には、カタログ情報がルートリンク情報及びページ情報単位で登録されるカタログデータベースが構築されている。更に、記憶部１２には、カタログデータベースを管理するためのデータベース管理プログラムが記憶されている。データベース管理プログラムは、情報生成プログラムの一例である。
【０１３４】
制御部１１は、ＣＰＵが記憶部１２等に記憶されたデータベース管理プログラム等のプログラムを読み出して実行することにより、本発明における葉ページ情報生成手段、根ページ情報生成手段、節ページ情報生成手段、ルートリンク情報生成手段、追加入力手段、追加葉ページ決定手段、登録手段、割当手段、判定手段、削除葉ページ決定手段、検索入力手段及び検索手段として機能する。
【０１３５】
なお、上記データベース管理プログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしても良いし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されてこの記録媒体のドライブを介して読み込まれるようにしても良い。
【０１３６】
［５．ノードＮｎの構成及び機能等］
次に、図８を参照して、ノードＮｎの構成及び機能について説明する。
【０１３７】
図８は、ノードＮｎの概要構成例を示す図である。
【０１３８】
各ノードＮｎは、図８に示すように、演算機能を有するＣＰＵ，作業用ＲＡＭ，各種データ及びプログラムを記憶するＲＯＭ等から構成されたコンピュータとしての制御部２１を備えている。また、各ノードＮｎは、各種データ及び各種プログラム等を記憶保存するためのＨＤ（ハードディスク）等から構成された記憶部２２と、受信されたコンテンツのレプリカ等を一時蓄積するバッファメモリ２３とを備えている。更に、各ノードＮｎは、コンテンツのレプリカに含まれるエンコードされたビデオデータ（映像情報）及びオーディオデータ（音声情報）等をデコードするデコーダ部２４を備えている。また更に、各ノードＮｎは、このデコードされたビデオデータ等に対して所定の描画処理を施しビデオ信号として出力する映像処理部２５と、この映像処理部２５から出力されたビデオ信号に基づき映像表示するＣＲＴ，液晶ディスプレイ等の表示部２６と、を備えている。更にまた、各ノードＮｎは、上記デコードされたオーディオデータをアナログオーディオ信号にＤ （Digital）／Ａ（Analog）変換した後これをアンプにより増幅して出力する音声処理部２７と、この音声処理部２７から出力されたオーディオ信号を音波として出力するスピーカ２８と、を備えている。また更に、各ノードＮｎは、ネットワーク８を通じて他のノードＮｎ等間の情報の通信制御を行うための通信部２９を備えている。更にまた、各ノードＮｎは、ユーザからの指示を受け付けこの指示に応じた指示信号を制御部２１に対して与える入力部（例えば、キーボード、マウス、或いは、リモコンや操作パネル等）３０を備えている。そして、制御部２１、記憶部２２、バッファメモリ２３、デコーダ部２４、通信部２９、及び入力部３０はバス３１を介して相互に接続されている。なお、ノードＮｎとしては、例えば、パーソナルコンピュータ、ＳＴＢ（Set Top Box）等を適用可能である。
【０１３９】
記憶部２２には、ＤＨＴを用いたルーティングテーブル、インデックス、並びに、コンテンツ分散保存システムＳに参加する際のアクセス先となるコンタクトノードのＩＰアドレス及びポート番号、及びセンターサーバＳＡのＩＰアドレス及びポート番号等が記憶されている。また、記憶部２２には、他のノードＮｎから取得したページ情報や、センターサーバＳＡから配信されてきたページ情報が、ファイルとして記憶される。
【０１４０】
制御部２１は、ＣＰＵが記憶部２２等に記憶されたプログラムを読み出して実行することにより、各種処理を行う。
【０１４１】
例えば、制御部２１は、コンテンツ分散保存システムＳに接続した際に、他のノードＮｎから最新のルートリンク情報及びページ情報を取得する。取得先のノードＮｎとしては、例えば、コンタクトノードであっても良い。また、制御部２１は、センターサーバＳＡから配信されてきたルートリンク情報及びページ情報を受信する。他のノードＮｎ又はセンターサーバＳＡから取得されたルートリンク情報は、ＲＡＭに格納される。また、他のノードＮｎ又はセンターサーバＳＡから取得されたページ情報は、記憶部２２に保存される。
【０１４２】
制御部２１は、ＲＡＭに記憶されたルートリンク情報及び記憶部２２に保存されたページ情報に基づいて、コンテンツのレコードの検索を行う。この検索方法は、基本的にセンターサーバＳＡにおけるレコードの検索方法と同じである。そして、制御部２１は、検索されたレコードの内容に基づいて、必要な処理を行う。例えば、制御部２１は、レコードの情報を表示部２６に表示させたり、コンテンツが公開されているか否かを判断したり、レコードに含まれているコンテンツＩＤに基づいて、コンテンツ保持ノードからコンテンツを取得したりする。
【０１４３】
なお、プログラムは、例えば、ネットワーク８上の所定のサーバからダウンロードされるようにしても良いし、例えば、ＣＤ−ＲＯＭ等の記録媒体に記録されてこの記録媒体のドライブを介して読み込まれるようにしても良い。
【０１４４】
［６．コンテンツ分散保存システムＳの動作］
次に、図９乃至図１６を参照して、本実施形態に係るコンテンツ分散保存システムＳの動作について説明する。
【０１４５】
以下においては、カタログ情報が一般的なｎ分探索木の構造を少なくとも有するものとして説明する。木の種類や構造等に特有の処理に関する説明は省略する。また、ページ情報に必須ではないセルフリンク情報に関する処理の説明は省略する。
【０１４６】
［６．１  センターサーバＳＡの動作］
図９は、本実施形態に係るセンターサーバＳＡにおける制御部１１の処理例を示すフローチャートである。
【０１４７】
図９に示す処理は、例えば、データベース管理プログラムが起動されたときに開始される。先ず、制御部１１は、ステップＳ１〜Ｓ５の初期化処理を実行する。具体的に、制御部１１は、ルートリンク情報を保存したファイルが記憶部１２に記憶されているか否かを判定する（ステップＳ１）。データベース管理プログラムの起動が初めてである場合には、ルートリンク情報は未だ作成されていない。その一方で、データベース管理プログラムの起動が初めてではない場合には、ルートリンク情報は既に作成されてファイルに保存されている。そこで、制御部１１は、ルートリンク情報を保存したファイルが記憶部１２に記憶されていない場合には（ステップＳ１：ＮＯ）、ルートリンク情報登録処理を実行する（ステップＳ２）。初期化処理から実行されたルートリンク情報登録処理では、ルートリンク情報とルートページ情報とが新規に作成される。なお、ルートリンク情報登録処理の詳細については後述する。
【０１４８】
ステップＳ１において、制御部１１は、ルートリンク情報を保存したファイルが記憶部１２に記憶されている場合には（ステップＳ１：ＹＥＳ）、このファイルからルートリンク情報を読み出してＲＡＭに格納する（ステップＳ３）。
【０１４９】
次いで、制御部１１は、このファイルに保存されている電子署名を用いてルートリンク情報の改竄をチェックする（ステップＳ４）。例えば、制御部１１は、ルートリンク情報、より具体的には、ルートページ情報のシリアル番号及びメッセージダイジェストから、メッセージダイジェストを計算する。このメッセージダイジェストの計算には、電子署名に設定されているハッシュ関数が用いられる。また、制御部１１は、電子署名の証明書情報に設定されている公開鍵を用いて電子署名の署名値を復号する。そして、制御部１１は、作成されたメッセージダイジェストと復号されたデータとが一致するか否かを判定する。ここで、一致する場合にはルートリンク情報は改竄されていないとされ、一致しない場合には改竄されている。
【０１５０】
次いで、制御部１１は、ルートリンク情報は改竄されているか否かを判定する（ステップＳ５）。このとき、制御部１１は、ルートリンク情報は改竄されている場合には（ステップＳ５：ＹＥＳ）、エラー終了とさせる。この場合は、例えば、表示部１４に、ルートリンク情報が改竄されている旨のエラー表示がなされ、データベース管理プログラムの実行が中断される。
【０１５１】
ステップＳ５において、制御部１１は、ルートリンク情報は改竄されていない場合（ステップＳ５：ＮＯ）、又は、ステップＳ２のルートリンク情報登録処理を終えた場合には、メインの処理を開始させる。
【０１５２】
先ず、制御部１１は、オペレータからの終了指示があったか否かを、入力部１５からの入力に基づいて判定する（ステップＳ６）。
【０１５３】
ステップＳ６において、制御部１１は、終了指示がない場合には（ステップＳ６：ＮＯ）、オペレータからのレコードの追加要求があったか否かを、入力部１５からの入力に基づいて判定する（ステップＳ７）。このとき、制御部１１は、レコードの追加要求があった場合には（ステップＳ７：ＹＥＳ）、レコード追加処理を実行する（ステップＳ８）。この場合、制御部１１は、例えばオペレータ操作によって入力部１５から入力された新規レコードを指定する。また、制御部１１は、別途検索キーが必要な場合には、新規レコードの検索キーをも指定する。このレコード追加処理では、入力された新規レコードがカタログ情報に追加される。なお、レコード追加処理の詳細については後述する。
【０１５４】
ステップＳ７において、制御部１１は、レコードの追加要求がなかった場合には（ステップＳ７：ＮＯ）、オペレータからのレコードの削除要求があったか否かを、入力部１５からの入力に基づいて判定する（ステップＳ９）。このとき、制御部１１は、レコードの削除要求があった場合には（ステップＳ９：ＹＥＳ）、レコード削除処理を実行する（ステップＳ１０）。この場合、制御部１１は、オペレータ操作によって入力部１５から入力された削除対象レコードの検索キーを指定する。このレコード削除処理では、指定された検索キーに対応する削除対象レコードがカタログ情報から削除される。なお、レコード削除処理の詳細については後述する。
【０１５５】
ステップＳ９において、制御部１１は、レコードの削除要求がなかった場合には（ステップＳ９：ＮＯ）、オペレータからのレコードの検索要求があったか否かを、入力部１５からの入力に基づいて判定する（ステップＳ１１）。このとき、制御部１１は、レコードの検索要求があった場合には（ステップＳ１１：ＹＥＳ）、レコード検索処理を実行する（ステップＳ１２）。この場合、制御部１１は、オペレータ操作によって入力部１５から入力された検索キーを指定する。このレコード検索処理では、指定された検索キーに対応するレコードがカタログ情報から検索される。なお、レコード検索処理の詳細については後述する。
【０１５６】
制御部１１は、ステップＳ８、Ｓ１０又はＳ１２の処理を終えたとき、或いは、ステップＳ１１において、レコードの検索要求がなかった場合には（ステップＳ１１：ＮＯ）、ステップＳ６に移行する。そして、制御部１１は、ステップＳ６においてオペレータからの終了指示があった場合には（ステップＳ６：ＹＥＳ）、本処理を終了させる。
【０１５７】
図１０は、本実施形態に係るセンターサーバＳＡにおける制御部１１のルートリンク情報登録処理における処理例を示すフローチャートである。
【０１５８】
先ず、制御部１１は、ルートページ情報があるか否かを判定する（ステップＳ１０１）。つまり、制御部１１は、ルートページ情報がＲＡＭに格納されているか否かを判定する。初期化処理からルートリンク情報登録処理が実行された場合、又は、レコード削除処理によってルートページ情報がＲＡＭから削除された場合には、ルートページ情報は存在しない。そこで、制御部１１は、ルートページ情報がない場合には（ステップＳ１０１：ＮＯ）、新規に空（から）のルートページ情報をＲＡＭ上に作成する。（ステップＳ１０２）。
【０１５９】
次いで、制御部１１は、ページ情報登録処理を実行する（ステップＳ１０３）。このとき、制御部１１は、新規に作成したルートページ情報を指定する。ページ情報登録処理では、指定されたページ情報へのリンク情報が作成され、このページ情報がファイルに保存される。これによりルートページ情報が登録される。なお、ページ情報登録処理の詳細については後述する。
【０１６０】
次いで、制御部１１は、ルートリンク情報生成手段として、作成されたリンク情報をルートリンク情報に設定する（ステップＳ１０４）。
【０１６１】
ステップＳ１０１において、制御部１１は、ルートページ情報が存在する場合には（ステップＳ１０１：ＹＥＳ）、現在のルートリンク情報が指すページ情報が現在のルートページ情報と一致するか否かを判定する（ステップＳ１０５）。レコード追加処理又はレコード削除処理においては、現在のルートリンク情報が指している古いページ情報に代わって、新たなルートページ情報が作成される。そこで、制御部１１は、現在のルートリンク情報が指すページ情報が現在のルートページ情報と一致しない場合には（ステップＳ１０５：ＮＯ）、ルートリンク情報生成手段として、ルートページ情報へのリンク情報をルートリンク情報に設定する（ステップＳ１０６）。
【０１６２】
制御部１１は、ステップＳ１０４又はＳ１０６の処理を終えると、ルートリンク情報生成手段として、ルートリンク情報の電子署名を作成する（ステップＳ１０７）。例えば、制御部１１は、ルートリンク情報、より具体的には、ルートページ情報のページ番号及びメッセージダイジェストから、メッセージダイジェストを作成する。次いで、制御部１１は、秘密鍵を用いて、作成されたメッセージダイジェストを暗号化し、署名値を得る。また、メッセージダイジェストの計算に用いたハッシュ関数、署名値、証明書情報等の情報を設定して電子署名を作成する。
【０１６３】
次いで、制御部１１は、ルートリンク情報を、作成した電子署名とともにファイルに保存する（ステップＳ１０８）。
【０１６４】
次いで、制御部１１は、作成した新しいルートリンク情報を、ルートリンク情報メッセージに含ませて全てのノードＮｎに配信する（ステップＳ１０９）。この配信は、例えば、オーバーレイマルチキャストで行われても良い。制御部１１は、ステップＳ１０５において、現在のルートリンク情報が指すページ情報が現在のルートページ情報と一致する場合、又は、ステップＳ１０９の処理を終えると、ルートリンク情報登録処理を終了させる。
【０１６５】
図１１は、本実施形態に係るセンターサーバＳＡにおける制御部１１のページ情報登録処理における処理例を示すフローチャートである。
【０１６６】
先ず、制御部１１は、割当手段として、登録対象として指定されたページ情報に、今までに割り当てられていない最新のページ番号を割り当てる（ステップＳ１５１）。次いで、制御部１１は、登録対象のページ情報のメッセージダイジェストを計算する（ステップＳ１５２）。
【０１６７】
次いで、制御部１１は、登録対象のページ情報をファイルに保存する（ステップＳ１５３）。このとき、ページ情報がどこに保存されているかが特定することができるよう、例えば、ファイル名にページ番号が付加される。
【０１６８】
次いで、制御部１１は、作成した新しいページ情報を、ページ情報メッセージに含ませて全てのノードＮｎに配信する（ステップＳ１５４）。この配信は、例えば、オーバーレイマルチキャストで行われても良い。
【０１６９】
制御部１１は、この処理を終えると、ページ情報登録処理を終了させ、割り当てたページ番号と計算したメッセージダイジェストとからなるリンク情報を、呼び出し元の処理に返却する。
【０１７０】
図１２は、本実施形態に係るセンターサーバＳＡにおける制御部１１のレコード追加処理における処理例を示すフローチャートである。
【０１７１】
先ず、制御部１１は、現在のルートリンク情報をＲＡＭから取得する（ステップＳ２０１）。次いで、制御部１１は、ページ情報取得処理を実行する（ステップＳ２０２）。このとき、制御部１１は、ルートリンク情報を指定する。ページ情報取得処理では、指定されたリンク情報が指すページ情報がファイルから取得され、ＲＡＭに格納される。取得されたページ情報は、現在参照しているページ情報とされる。なお、ページ情報取得処理の詳細については後述する。
【０１７２】
次いで、制御部１１は、追加葉ページ決定手段として、指定された検索キーと、現在参照しているページ情報に設定されているインデックスとに基づいて、担当ページ情報を決定する。担当ページ情報とは、或るレコードに対して、このレコードを格納すべきページ情報を意味する。レコードを追加する場合は、入力された新規レコードを格納すべき葉ページ情報が担当ページ情報である。
【０１７３】
具体的に、制御部１１は、取得されたページ情報が新規レコードの担当ページ情報であるか否かを判定する（ステップＳ２０３）。この判定方法は、ページ情報の構造に依存する。
【０１７４】
制御部１１は、取得されたページ情報が新規レコードの担当ページ情報ではない場合には（ステップＳ２０３：ＮＯ）、現在参照しているページ情報から、次のページ情報へのリンク情報を取得する（ステップＳ２０４）。次のページ情報とは、現在参照しているページ情報の子ページ情報のうち、次に参照するページ情報をいう。次に参照するページ情報は、指定された検索キーに対応する。この処理は、カタログ情報の探索木の構造に対応した探索アルゴリズムに従って行われる。例えば、制御部１１は、指定された検索キーと現在参照しているページ情報に設定されているインデックスとの比較によって、次のページ情報へのリンク情報を特定する。具体的に、本実施形態においては、検索キーとインデックスとの大小比較が行われる。そして、大小比較の結果、例えば、検索キーの値がインデックスの値以下である場合、検索キーの値がインデックスの値よりも大きい場合等によって次のページ情報へのリンク情報が特定される。
【０１７５】
次いで、制御部１１は、次のページ情報へのリンク情報が存在するか否かを判定する（ステップＳ２０５）。つまり、制御部１１は、次のページ情報へのリンク情報を取得することができたか否かを判定する。このとき、制御部１１は、次のページ情報へのリンク情報が存在しない場合には（ステップＳ２０５：ＮＯ）、葉ページ情報生成手段として、ステップＳ２０６において、新しい担当ページ情報をＲＡＭ上に作成する。そして、制御部１１は、登録手段として、作成した担当ページ情報上に新規レコードを追加して設定する。このとき、制御部１１は、カタログ情報の構造上必要な場合には、新規レコードの検索キーをインデックスとして、この新規レコードに対応付けて担当ページ情報に追加して設定する。例えば、後述するレコード削除処理においてレコードが削除されること等により葉ページ情報が空になると、空になった葉ページ情報が削除される。この場合、空になった葉ページ情報の親ページ情報において、この葉ページ情報を指していたリンク情報には無効な値が設定される。これによって、空になった葉ページ情報を指していたリンク情報は削除される。ただし、親ページ情報に格納されていたインデックスについては特に更新を行わない場合、その後検索キーとインデックスとの大小比較によって、無効なリンク情報が特定されることがある。つまり、ステップＳ２０５において、次のページ情報へのリンク情報が存在しないと判定される。この場合、次のページ情報、つまり、検索キーに対応して新規レコードを格納する担当ページ情報が必要になるので、ステップＳ２０６においてこの担当ページ情報が作成される。
【０１７６】
一方、制御部１１は、次のページ情報へのリンク情報が存在する場合には（ステップＳ２０５：ＹＥＳ）、ステップＳ２０２に移行する。このとき、制御部１１は、取得したリンク情報を指定して、ページ情報取得処理を実行する。
【０１７７】
ステップＳ２０３において、制御部１１は、取得されたページ情報が新規レコードの担当ページ情報である場合には（ステップＳ２０３：ＹＥＳ）、判断手段として、決定した担当ページ情報に新規レコードが追加可能であるか否かを判定する。具体的に、制御部１１は、担当ページ情報には、格納可能なレコード数の上限まで既にレコードが格納されているか否かを判定する（ステップＳ２０７）。このとき、制御部１１は、格納可能なレコード数の上限までのレコードは格納されていない場合には（ステップＳ２０７：ＹＥＳ）、葉ページ情報生成手段として、ステップＳ２０８において、現在の担当ページ情報の内容をコピーした新しい担当ページ情報をＲＡＭ上に作成する。そして、制御部１１は、登録手段として、新しい担当ページ情報に新規レコードを追加して設定する。このとき、制御部１１は、ステップＳ２０６と同様に必要に応じて、新規レコードの検索キーをインデックスとして追加設定する。
【０１７８】
一方、制御部１１は、格納可能なレコード数の上限まで既にレコードが格納されている場合には（ステップＳ２０７：ＮＯ）、葉ページ情報生成手段として、ステップＳ２０９において、ページ情報の分割を行う。具体的に、制御部１１は、カタログ情報の探索木の構造に対応する分割アルゴリズムに従って、現在の担当ページ情報の内容を分割して複数の新しいページ情報をＲＡＭ上に作成する。そして、制御部１１は、登録手段として、この新しいページ情報のうち担当ページ情報に、新規レコードを追加して設定する。例えば、担当ページ情報の内容を３つに分割する場合、元の担当ページ情報に格納されているレコードが、そのインデックスの順に、前半、中間及び後半のレコードに分けられる。例えば、元の担当ページ情報に、インデックスの値が１、２、３、４、５及び６の６つのレコードが格納されていたとする。これらのレコードを３つに均等に分ける場合、インデックスの値が１及び２のレコードが前半のレコード、インデックスの値が３及び４のレコードが中間のレコード、インデックスの値が５及び６のレコードが後半のレコードとなる。そして、夫々のレコードを格納するページ情報が作成される。新規レコードをどのページ情報に格納させるかはその検索キーに基づいて判断される。また、制御部１１は、ステップＳ２０６と同様に必要に応じて、新規レコードの検索キーをインデックスとして追加設定する。
【０１７９】
制御部１１は、ステップＳ２０６、Ｓ２０８又はＳ２０９において新しい担当ページを作成した後、ページ情報登録処理を実行する（ステップＳ２１０）。このとき、制御部１１は、新たに作成したページ情報を指定する。ページ情報登録処理では、指定されたページ情報へのリンク情報が生成され、このページ情報がファイルに保存される。これによりページ情報が登録される。なお、ステップＳ２０９において、担当ページ情報が複数の新しいページ情報に分割された場合には、この複数のページ情報夫々に対してページ情報登録処理が実行される。
【０１８０】
次いで、制御部１１は、登録されたページ情報の親ページ情報が存在するか否かを判定する（ステップＳ２１１）。例えば、ステップＳ２０５の判定において次のページ情報へのリンク情報が存在する度に、そのとき参照していたページ情報のページ番号をＲＡＭの所定領域に保存してくと良い。この所定領域を参照することによって、親ページ情報が存在するか、及び、この親ページ情報のページ番号を特定することができる。
【０１８１】
制御部１１は、親ページ情報が存在する場合には（ステップＳ２１１：ＹＥＳ）、追加更新手段として、新たに作成した葉ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。具体的に、根ページ情報生成手段及び節ページ情報生成手段として、子ページ情報のメッセージダイジェストと、この子ページ情報のページ番号を含むリンク情報が格納された親ページ情報を作成する。より詳細に、制御部１１は、元の親ページ情報の内容をコピーした新しい親ページ情報をＲＡＭ上に作成する（ステップＳ２１２）。そして、制御部１１は、新しい親ページを現在参照するページ情報とする。
【０１８２】
次いで、制御部１１は、現在参照するページ情報に格納されている古い子ページ情報を指していたリンク情報を、新しい子ページ情報を指すリンク情報に書き換える（ステップＳ２１３）。具体的に、制御部１１は、ステップＳ２１０のページ情報登録処理で生成されたリンク情報を、新しい子ページ情報を指すリンク情報とする。そして、制御部１１は、新しい子ページ情報を指すリンク情報を、古い子ページ情報を指していたリンク情報に上書きする。
【０１８３】
次いで、制御部１１は、ステップＳ２１０に移行する。このとき、制御部１１は、新たに作成した現在参照しているページ情報を指定して、ページ情報登録処理を実行する。これにより、現在参照しているページ情報が登録される。
【０１８４】
ステップＳ２１１において、制御部１１は、登録されたページ情報の親ページ情報が存在しない場合、つまり、登録されたページ情報がルートページ情報である場合には（ステップＳ２１１）、ルートリンク情報登録処理を実行する（ステップＳ２１４）。ルートリンク情報登録処理では、登録された新しいルートページ情報を指すルートリンク情報が作成される。制御部１１は、ルートリンク情報登録処理を終えると、レコード追加処理を終了させる。
【０１８５】
図１３は、本実施形態に係るセンターサーバＳＡにおける制御部１１のレコード削除処理における処理例を示すフローチャートである。
【０１８６】
先ず、制御部１１は、ステップＳ２５１〜Ｓ２５５の処理を実行する。これらの処理は、レコード追加処理におけるステップＳ２０１〜Ｓ２０５の処理と同様である。つまり、制御部１１は、現在のルートリンク情報をＲＡＭから取得する（ステップＳ２５１）。次いで、制御部１１は、ページ情報取得処理を実行する（ステップＳ２５２）。次いで、制御部１１は、削除葉ページ決定手段として、指定された検索キーと、節ページ情報に設定されているインデックスとに基づいて、担当ページ情報を決定する。具体的に、制御部１１は、取得されたページ情報が、指定された検索キーに対応する削除対象レコードの担当ページ情報であるか否かを判定する（ステップＳ２５３）。制御部１１は、取得されたページ情報が削除対象レコードの担当ページ情報ではない場合には（ステップＳ２５３：ＮＯ）、現在参照しているページ情報から、次のページ情報へのリンク情報を取得する（ステップＳ２５４）。次いで、制御部１１は、次のページ情報へのリンク情報が存在するか否かを判定する（ステップＳ２５５）。このとき、制御部１１は、次のページ情報へのリンク情報が存在しない場合には（ステップＳ２５５：ＮＯ）、レコード追加処理を終了させる。つまり、削除対象レコードを格納しているページ情報は存在しないので、レコード追加処理はここで終了する。
【０１８７】
ステップＳ２５３において、制御部１１は、取得されたページ情報が削除対象レコードの担当ページ情報である場合には（ステップＳ２５３：ＹＥＳ）、担当ページ情報は削除対象レコードを格納しているか否かを判定する（ステップＳ２５６）。この判定方法は、カタログ情報の構造に依存する。例えば、レコードとこのレコードのインデックスとが対応付けられページ情報に格納される構造の場合には、指定された検索キーで、担当ページ情報に格納されているインデックスが検索される。そして、指定された検索キーに一致するインデックスが存在する場合には、削除対象レコードは格納されていると判定される。その一方で、指定された検索キーに一致するインデックスが存在しない場合には、削除対象レコードは格納されていないと判定される。制御部１１は、担当ページ情報は削除対象レコードを格納していない場合には（ステップＳ２５６：ＮＯ）、レコード削除処理を終了させる。
【０１８８】
一方、制御部１１は、担当ページ情報は削除対象レコードを格納している場合には（ステップＳ２５６：ＹＥＳ）、葉ページ情報生成手段として、一又は複数のレコードが格納された葉ページ情報を作成する。具体的に制御部１１は、ステップＳ２５７において、現在の担当ページ情報の内容をコピーした新しい担当ページ情報をＲＡＭ上に作成する。そして、制御部１１は、新しい担当ページ情報から削除対象レコードを削除する。このとき、制御部１１は、担当ページ情報に削除対象レコードのインデックスが設定されている場合には、このインデックスも削除する。
【０１８９】
次いで、制御部１１は、作成した新しいページ情報が格納しているレコードの数とリンク情報の数が何れも０になったか否かを判定する（ステップＳ２５８）。つまり、制御部１１は、作成した新しいページ情報が空になったか否かを判定する。このとき、制御部１１は、作成した新しいページ情報が空になっていない場合には（ステップＳ２５８：ＮＯ）、このページ情報を指定して、ページ情報登録処理を実行する（ステップＳ２５９）。これにより、削除対象レコードが削除された新しいページ情報が登録される。
【０１９０】
一方、制御部１１は、作成した新しいページ情報が空になった場合には（ステップＳ２５８：ＹＥＳ）、ステップＳ２５８で空になったと判定されたページ情報をＲＡＭ上から削除する（ステップＳ２６０）。
【０１９１】
制御部１１は、ステップＳ２５９又はＳ２６０の処理を終えると、ステップＳ２６１〜Ｓ２６４の処理を実行する。これらの処理は、レコード追加処理におけるステップ２１１〜Ｓ２１４の処理と基本的には同様である。
【０１９２】
つまり、制御部１１は、ステップＳ２５９において登録されたページ情報、又は、ステップＳ２６０において削除されたページ情報の親ページ情報が存在するか否かを判定する（ステップＳ２６１）。制御部１１は、親ページ情報が存在する場合には（ステップＳ２６１：ＹＥＳ）、削除更新手段として、新たに作成した葉ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。具体的に、制御部１１は、根ページ情報生成手段及び節ページ情報生成手段として、子ページ情報のメッセージダイジェストと、この子ページ情報のページ番号を含むリンク情報が格納された親ページ情報を作成する。より詳細に、制御部１１は、元の親ページ情報の内容をコピーした新しい親ページ情報をＲＡＭ上に作成する（ステップＳ２６２）。そして、制御部１１は、新しい親ページを現在参照するページ情報とする。
【０１９３】
次いで、制御部１１は、現在参照するページ情報に格納されている古い子ページ情報を指していたリンク情報を、新しい子ページ情報を指すリンク情報に書き換える（ステップＳ２６３）。ただし、制御部１１は、子ページ情報がステップＳ２６０で削除されている場合には、古い子ページ情報を指していたリンク情報を、何も指していない状態に書き換える。例えば、ページ番号及びメッセージダイジェストに無効な値が設定される。次いで、制御部１１は、ステップＳ２６１に移行する。ステップＳ２６１において、制御部１１は、登録されたページ情報の親ページ情報が存在しない場合には（ステップＳ２６１：ＮＯ）、ルートリンク情報登録処理を実行する（ステップＳ２６４）。制御部１１は、ルートリンク情報登録処理を終えると、レコード削除処理を終了させる。
【０１９４】
図１４は、本実施形態に係るセンターサーバＳＡにおける制御部１１のページ情報取得処理における処理例を示すフローチャートである。
【０１９５】
先ず、制御部１１は、指定されたリンク情報が有効なページ情報を指しているか否かを判定する（ステップＳ３０１）。例えば、リンク情報のページ番号が無効な値に設定される場合、このリンク情報は有効なページ情報を指していない。例えば、ページ番号が１から始まるように定められている場合、ページ番号に１以上の値が設定されているリンク情報は有効であり、ページ番号に０が設定されているリンク情報は無効である。このとき、制御部１１は、指定されたリンク情報が有効なページ情報を指していない場合には（ステップＳ３０１：ＮＯ）、ページ情報取得処理を終了させる。この場合、ページ情報無しという情報が、呼び出し元の処理に返却される。
【０１９６】
一方、制御部１１は、指定されたリンク情報が有効なページ情報を指している場合には（ステップＳ３０１：ＹＥＳ）、このリンク情報に含まれるページ番号が指すファイルからページ情報を読み出してＲＡＭに格納する（ステップＳ３０２）。
【０１９７】
次いで、制御部１１は、指定されたリンク情報に含まれるメッセージダイジェストを用いて、読み出したページ情報の改竄をチェックする（ステップＳ３０３）。具体的に、制御部１１は、読み出したページ情報のメッセージダイジェストを計算する。このメッセージダイジェストの計算には、ページ情報登録処理でメッセージダイジェストを計算したときと同じハッシュ関数が用いられる。そして、制御部１１は、計算したメッセージダイジェストと指定されたリンク情報に含まれるメッセージダイジェストとが一致するか否かを判定する。ここで、一致する場合にはルートリンク情報は改竄されていないとされ、一致しない場合には改竄されている。
【０１９８】
次いで、制御部１１は、読み出したルートページ情報は改竄されているか否かを判定する（ステップＳ３０４）。このとき、制御部１１は、ページ情報は改竄されている場合には（ステップＳ３０４：ＹＥＳ）、エラー終了とさせる。この場合は、例えば、表示部１４に、ページ情報が改竄されている旨のエラー表示がなされ、データベース管理プログラムの実行が中断される。
【０１９９】
一方、制御部１１は、ページ情報は改竄されていない場合には（ステップＳ３０４：ＮＯ）、読み出したページ情報を呼び出し元の処理に返却し、ページ情報取得処理を終了させる。
【０２００】
図１５は、本実施形態に係るセンターサーバＳＡにおける制御部１１のレコード検索処理における処理例を示すフローチャートである。
【０２０１】
先ず、制御部１１は、ステップＳ３５１〜Ｓ３５５の処理を実行する。これらの処理は、レコード追加処理におけるステップＳ２０１〜Ｓ２０５の処理と同様である。つまり、制御部１１は、現在のルートリンク情報をＲＡＭから取得する（ステップＳ３５１）。次いで、制御部１１は、ページ情報取得処理を実行する（ステップＳ３５２）。次いで、制御部１１は、検索手段として、指定された検索キーと、節ページ情報に設定されているインデックスとに基づいて、担当ページ情報を決定する。具体的に、制御部１１は、取得されたページ情報が、指定された検索キーに対応するレコードの担当ページ情報であるか否かを判定する（ステップＳ３５３）。制御部１１は、取得されたページ情報が削除対象レコードの担当ページ情報ではない場合には（ステップＳ３５３：ＮＯ）、現在参照しているページ情報から、次のページ情報へのリンク情報を取得する（ステップＳ３５４）。次いで、制御部１１は、次のページ情報へのリンク情報が存在するか否かを判定する（ステップＳ３５５）。このとき、制御部１１は、次のページ情報へのリンク情報が存在しない場合には（ステップＳ３５５：ＮＯ）、指定された検索キーに対応するレコードが発見されなかった旨をオペレータに提示する（ステップＳ３５６）。例えば、発見されなかった旨のメッセージが表示部１４に表示される。
【０２０２】
ステップＳ３５３において、制御部１１は、取得されたページ情報が検索キーに対応するレコードの担当ページ情報である場合には（ステップＳ３５３：ＹＥＳ）、担当ページ情報は検索キーに対応するレコードを格納しているか否かを判定する（ステップＳ３５７）。このとき、制御部１１は、担当ページ情報は検索キーに対応するレコードを格納していない場合には（ステップＳ３５７：ＮＯ）、指定された検索キーに対応するレコードが発見されなかった旨をオペレータに提示する（ステップＳ３５６）。一方、制御部１１は、担当ページ情報は検索キーに対応するレコードを格納している場合には、発見したレコードの情報をオペレータに提示する。例えば、レコードの内容が表示部１４に表示される。制御部１１は、ステップＳ３５６又はステップＳ３５８の処理を終えると、レコード検索処理を終了させる。
【０２０３】
［６．２  ノードＮｎの動作］
図１６は、本実施形態に係るノードＮｎにおける制御部２１の処理例を示すフローチャートである。
【０２０４】
図１６に示す処理は、例えば、ノードＮｎが、コンテンツ分散保存システムＳに参加したときに開始される。先ず、制御部２１は、コンテンツ分散保存システムＳに参加している他のノードＮｎから最新のルートリンク情報及びページ情報を取得する（ステップＳ５０１）。例えば、制御部２１は、要求先のノードＮｎにメッセージを送信することにより、この要求先のノードＮｎから送信されてきたルートリンク情報及びページ情報を受信する。そして、制御部２１は、ルートリンク情報をＲＡＭに格納し、ページ情報をファイルに保存する。
【０２０５】
次いで、制御部２１は、ユーザからの終了指示があったか否かを、入力部３０からの入力に基づいて判定する（ステップＳ５０２）。
【０２０６】
ステップＳ５０２において、制御部２１は、終了指示がない場合には（ステップＳ５０２：ＮＯ）、ユーザからのレコードの検索要求があったか否かを、入力部３０からの入力に基づいて判定する（ステップＳ５０３）。このとき、制御部２１は、レコードの検索要求があった場合には（ステップＳ５０３：ＹＥＳ）、レコード検索処理を実行する（ステップＳ５０４）。このレコード検索処理では、ユーザにより指定された検索キーに対応するレコードがカタログ情報から検索される。なお、レコード検索処理の内容は、センターサーバＳＡにおけるレコード検索処理の内容と同様であるので、詳細な説明は省略する。
【０２０７】
ステップＳ５０３において、制御部２１は、レコードの検索要求がなかった場合には（ステップＳ５０３：ＮＯ）、ルートリンク情報メッセージを受信したか否かを判定する（ステップＳ５０５）。このとき、制御部２１は、ルートリンク情報メッセージを受信した場合には（ステップＳ５０５：ＹＥＳ）、このルートリンク情報メッセージに含まれる情報をルートリンク情報としてＲＡＭに設定する（ステップＳ５０６）。
【０２０８】
ステップＳ５０５において、制御部２１は、ルートリンク情報メッセージを受信していない場合には（ステップＳ５０５：ＮＯ）、ページ情報メッセージを受信したか否かを判定する（ステップＳ５０７）。このとき、制御部２１は、ページ情報メッセージを受信した場合には（ステップＳ５０７：ＹＥＳ）、このページ情報メッセージに含まれる情報をページ情報としてファイルに保存する（ステップＳ５０８）。
【０２０９】
制御部２１は、ステップＳ５０４、Ｓ５０６又はＳ５０８の処理を終えたとき、或いは、ステップＳ５０７において、ページ情報メッセージを受信していない場合には（ステップＳ５０７：ＮＯ）、ステップＳ５０２に移行する。そして、制御部１１は、ステップＳ５０２においてユーザからの終了指示があった場合には（ステップＳ５０２：ＹＥＳ）、本処理を終了させる。
【０２１０】
以上説明したように、本実施形態によれば、制御部１１が、一又は複数のレコードが格納された葉ページ情報を作成する。また、制御部１１が、ルートページ情報の子ページ情報のメッセージダイジェストと、この子ページ情報のページ番号を含むリンク情報が格納されたルートページ情報を作成する。また、制御部１１が、ルートページ情報以外の節ページ情報の子ページ情報のメッセージダイジェストと、この子ページ情報のページ番号を含むリンク情報が格納された節ページ情報を作成する。そして、制御部１１が、作成した葉ページ情報、ルートページ情報及び節ページ情報を、木構造として記憶部１２に保存する。
【０２１１】
従って、木構造でレコードを管理することで、レコードの改竄チェックもでき、レコードの検索処理の時間が減る。
【０２１２】
また、制御部１１が、ルートページ情報のメッセージダイジェストと、ルートページ情報のページ番号と、ルートリンク情報の電子署名とが格納されたルートリンク情報を作成する。そして、制御部１１が、作成したルートリンク情報を記憶部１２に保存する。
【０２１３】
従って、従来は全てのレコードに電子署名を施す必要があったのに対し、ルートリンク情報のみに電子署名を施すことで、子に位置するレコードの改竄を保障するために、根ページの電子署名を確かめることで、確認することができる。そのため、各レコードに電子署名を付与するに対し、各レコードのデータ量が小さくなる。また、各レコードに電子署名を施す処理が必要なくなるため、電子署名処理が不要となる。
【０２１４】
また、制御部１１が、入力部１５から入力された検索キーと、節ページ情報に設定されているインデックスとに基づいて、担当ページ情報を決定する。また、制御部１１が、決定した担当ページ情報に新規レコードが追加可能であるか否かを判定する。新規レコードが追加可能である場合には、制御部１１が、決定した担当ページ情報の内容に新規レコードが追加設定された新たな葉ページ情報を作成する。一方、新規レコードが追加可能ではない場合、制御部１１が、新たな葉ページ情報を作成し、新規レコードを新たな葉ページ情報に追加設定する。そして、制御部１１が、新たに作成した葉ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。また、制御部１１が、決定した葉ページ情報に、削除対象レコードが格納されている場合には、この削除対象レコードを削除した新たな葉ページ情報を作成する。そして、制御部１１が、新たに作成した葉ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。
【０２１５】
従って、木構造における葉ページ情報にレコードを簡単に追加することができる。また、担当ページ情報に新規レコードが追加不可能であっても、新たに追加した葉ページ情報に新規レコードを追加することができる。
【０２１６】
また、制御部１１が、入力部１５から入力された検索キーと、節ページ情報に設定されているインデックスとに基づいて、担当ページ情報を決定する。また、制御部１１が、決定した担当ページ情報に、削除対象レコードが格納されている場合には、この削除対象レコードを削除した新たな葉ページ情報を作成する。そして、制御部１１が、新たに作成した葉ページ情報の親ページ情報からルートページ情報までの各節ページ情報のページ番号及びメッセージダイジェストを更新する。
【０２１７】
従って、例えば古くなり削除したいレコードを排除することができる。
【０２１８】
また、制御部１１が、入力部１５により入力された検索キーと、節ページ情報に設定されているインデックスとに基づいて、担当ページ情報を決定する。制御部１１は、決定した担当ページ情報に、検索対象レコードが格納されている場合には、この検索対象レコードの情報をオペレータに提示する。
【０２１９】
従って、検索対象のレコードを迅速に検索することができる。
【０２２０】
なお、上記実施形態においては、本発明に係る管理装置を、ピアツーピアシステムにおけるサーバ装置に適用していたが、例えば、クライアント−サーバシステムにおけるサーバ装置に適用しても良い。
【０２２１】
また、本発明は、コンテンツカタログ情報の検索に限定されるものではない。汎用的なデータベースのレコードとインデックスとしても適用可能である。
【符号の説明】
【０２２２】
３  ＩＸ
４ａ、４ｂ  ＩＳＰ
５ａ、５ｂ  ＤＳＬ回線業者の装置
６  ＦＴＴＨ回線業者の装置
７  通信回線
８  ネットワーク
９  オーバーレイネットワーク
１１  制御部
１２  記憶部
１３  通信部
１４  表示部
１５  入力部
１６  バス
２１  制御部
２２  記憶部
２３  バッファメモリ
２４  デコーダ部
２５  映像処理部
２６  表示部
２７  音声処理部
２８  スピーカ
２９  通信部
３０  入力部
３１  バス
Ｎｎ  ノード
ＳＡ  センターサーバ
Ｓ  コンテンツ分散保存システム
【図１】
2010262455.tif 000003
【図２】
2010262455.tif 000004
【図３】
2010262455.tif 000005
【図４】
2010262455.tif 000006
【図５】
2010262455.tif 000007
【図６】
2010262455.tif 000008
【図７】
2010262455.tif 000009
【図８】
2010262455.tif 000010
【図９】
2010262455.tif 000011
【図１０】
2010262455.tif 000012
【図１１】
2010262455.tif 000013
【図１２】
2010262455.tif 000014
【図１３】
2010262455.tif 000015
【図１４】
2010262455.tif 000016
【図１５】
2010262455.tif 000017
【図１６】
2010262455.tif 000018