(57)【特許請求の範囲】
【請求項１】
予め定められた規則に基づいて入力データのデータ配列を変更するデータ変更部と、
前記データ変更部からの変更データを複数のデータピースに分割するデータ分割部と、
前記データ分割部からの任意の数のデータピースを用いて、前記データピースのパリティデータを生成するパリティ演算部と、
予め定められた演算アルゴリズムを用いて、前記入力データ固有の演算値及び前記パリティデータの演算値を算出する演算値算出部と、
前記演算値算出部の算出する前記入力データ固有の演算値及び前記パリティデータの演算値並びに前記データ変更部の変更履歴が関連付けられたメタデータを格納するメタデータ格納部と、
前記演算値算出部の算出する前記入力データ固有の演算値及び前記パリティデータの演算値を、前記パリティ演算部の生成する前記パリティデータに付して分散用データを構成する分散用データ構成部と、
前記分散用データ構成部の構成する前記分散用データを、前記パリティデータの演算値に適合する識別子を有するクライアントのうちの任意のクライアントに対して送信するサーバ分散用データ送受信部と、
を備えるデータ分散保管装置。
【請求項２】
前記データピースの演算値に適合する識別子を有するクライアントからは取得可能であるけれども前記データピースの演算値に適合しない識別子を有するクライアントからは取得不可能な状態で、前記分散用データ構成部の構成する前記分散用データを格納する分散用データ格納部を、
さらに備えることを特徴とする請求項１に記載のデータ分散保管装置。
【請求項３】
前記サーバ分散用データ送受信部は、前記分散用データ構成部の構成する前記分散用データを、前記データピースの演算値に一致する識別子を有するクライアント及び前記演算アルゴリズムを用いて導き出される数値空間において前記データピースの演算値付近に位置する演算値に対応する識別子を有するクライアントのうちの少なくともいずれかのクライアントに送信する
ことを特徴とする請求項１又は２に記載のデータ分散保管装置。
【請求項４】
前記メタデータ格納部の格納する前記メタデータを取得するメタデータ取得部と、
前記メタデータ取得部の取得する前記メタデータに含まれる前記データピースの演算値に適合するクライアントから、前記メタデータに含まれる前記入力データ固有の演算値が付されている前記分散用データを回収する分散用データ回収部と、
前記メタデータ取得部の取得する前記メタデータに含まれる前記データピースの演算値に従って、前記分散用データ回収部の回収する前記分散用データを配列し、前記データピースを結合するデータ結合部と、
前記メタデータ取得部の取得する前記メタデータに含まれる前記データ変更部の履歴に基づいて、前記データ結合部からの結合データを前記入力データに復元するデータ復元部と、
を備えることを特徴とする請求項１から３のいずれかに記載のデータ分散保管装置。
【請求項５】
前記演算値算出部は、予め定められた演算アルゴリズムを用いて、前記入力データ自体の演算値をさらに算出し、
前記メタデータ格納部は、前記演算値算出部の算出する前記入力データ自体の演算値をさらに含む前記メタデータを格納し、
前記入力データ自体の演算値を算出した前記演算アルゴリズムを用いて前記データ復元部の復元データの演算値を算出し、算出した前記復元データの演算値を、前記メタデータ取得部の取得する前記メタデータに含まれる前記入力データ自体の演算値と照合する演算値照合部をさらに備える
ことを特徴とする請求項４に記載のデータ分散保管装置。
【請求項６】
予め定められた規則に基づいて入力データのデータ配列を変更するデータ変更手順と、
前記入力データを変更した変更データを複数のデータピースに分割し、前記データピースのパリティデータを生成するデータ分割手順と、
予め定められた演算アルゴリズムを用いて、前記入力データ固有の演算値及び前記パリティデータの演算値を算出する演算値算出手順と、
前記入力データ固有の演算値及び前記パリティデータの演算値並びに前記データ変更手順における変更履歴が関連付けられたメタデータを格納するメタデータ格納手順と、
前記入力データ固有の演算値及び前記パリティデータの演算値を前記パリティデータに付して分散用データを構成し、当該分散用データを格納する分散用データ格納手順と、
前記分散用データを、前記分散用データに付されている前記パリティデータの演算値に適合する識別子を有するクライアントのうちの任意のクライアントに対して送信するサーバ分散用データ送信手順と、
を順に有するデータ分散保管方法。
【請求項７】
前記分散用データ格納手順において、前記データピースの演算値に適合する識別子を有するクライアントからは取得可能であるけれども前記データピースの演算値に適合しない識別子を有するクライアントからは取得不可能な状態で、前記分散用データを格納することを特徴とする請求項６に記載のデータ分散保管方法。
【請求項８】
前記サーバ分散用データ送信手順において、前記分散用データを、前記データピースの演算値に一致する識別子を有するクライアント及び前記演算アルゴリズムを用いて導き出される数値空間において前記データピースの演算値付近に位置する演算値に対応する識別子を有するクライアントのうちの少なくともいずれかのクライアントに送信する
ことを特徴とする請求項６又は７に記載のデータ分散保管方法。
【請求項９】
前記メタデータ格納手順において格納した前記メタデータを取得するメタデータ取得手順と、
前記メタデータ取得手順で取得した前記メタデータに含まれる前記データピースの演算値に適合するクライアントから、前記メタデータに含まれる前記入力データ固有の演算値が付されている前記分散用データを回収する分散用データ回収手順と、
前記メタデータ取得手順で取得した前記メタデータに含まれる前記データピースの演算値に従って、前記分散用データ回収手順で回収した前記分散用データを配列し、前記データピースを結合するデータ結合手順と、
前記メタデータ取得手順で取得した前記メタデータに含まれる前記変更履歴に基づいて、前記データ結合手順で結合した結合データを前記入力データに復元するデータ復元手順と、
を前記サーバ分散用データ送信手順の後に順に有することを特徴とする請求項６から８のいずれかに記載のデータ分散保管方法。
【請求項１０】
前記演算値算出手順において、予め定められた演算アルゴリズムを用いて、前記入力データ自体の演算値をさらに算出し、
前記メタデータ格納手順において、前記演算値算出手順で算出した前記入力データ自体の演算値をさらに含む前記メタデータを格納し、
前記入力データ自体の演算値を算出した前記演算アルゴリズムを用いて前記データ復元手順で復元した復元データ自体の演算値を算出し、算出した前記復元データ自体の演算値を、前記メタデータ取得手順で取得した前記メタデータに含まれる前記入力データ自体の演算値と照合する演算値照合手順を前記データ復元手順の後にさらに有する
ことを特徴とする請求項９に記載のデータ分散保管方法。
【請求項１１】
請求項６から１０のいずれかに記載のデータ分散保管方法をコンピュータに実行させるためのプログラム。
【請求項１２】
請求項６から１０のいずれかに記載のデータ分散保管方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークを用いて複数の物理的装置、複数の論理的装置又はこれらを組み合わせた複数のクライアントへデータの保管を行うデータ分散保管装置及び方法及びプログラム及び記録媒体に関する。
【背景技術】
【０００２】
近年データの電子化が急速に進み、サーバへのデータ蓄積量は顕著な増加を見せている。こうしたデータのうち、業務遂行やサービスの提供に重要なデータは、ＢＣＰ（事業継続計画）などの概念で示されるように、災害や不慮の事故、サイバーテロなど悪意あるアクセスから守られ、システム停止やデータ損失を最小限に抑えるための仕組みが必要とされている。こうした中、サーバの置かれた場所を物理的に保護し、これらを相互に接続し、相互にバックアップを行うシステムや、クラウドを利用したバックアップシステムが提案され、管理の仕組みも徐々に普及しつつある。また、ディザスタリカバリ（災害復旧）というキーワードでデータを分散保管する仕組みも、様々な手法が提案されている。
【０００３】
守秘の必要なデータを有線や無線ネットワークで送信し、データを作成した装置とは別の装置に保管する場合、送出者がデータをＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）といった暗号を用いて暗号化し、保管先のクライアントへ送付することが一般的である。
【０００４】
高い守秘性能と同時に冗長性を確保するために、データを分散して保管するデータ分散保管装置が提案されている（例えば、特許文献１から３及び非特許文献１及び２を参照。）。たとえば、特許文献１のデータ分散保管装置は、保管するデータを撹拌して分割し、分割したデータピースをネットワーク上の複数のクライアントに分散して保管する。これにより、従来の一対一の暗号化とは異なった考え方による守秘性の向上、保管の確実性と処理の軽量化を実現している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＷＯ２００７／１１１０８６号公報
【特許文献２】特開２０１０−４５６７０号公報
【特許文献３】特開２０１０−９２３３７号公報
【非特許文献】
【０００６】
【非特許文献１】宮保憲治、「災害時に備えたディザスタリカバリ技術の新しい展開」、ＩＰＥＪ  Ｊｏｕｒｎａｌ、Ｖｏｌ．２１、Ｎｏ．１２、ｐｐ．８−ｐｐ．１１（２００９）
【非特許文献２】Ｋｅｎｊｉ  Ｍｏｒｉ，  Ｙｏｉｃｈｉｒｏ  Ｕｅｎｏ，  Ｓｕｚｕｋｉ  Ｓｈｕｉｃｈｉ，  Ｋａｚｕｏ  Ｉｃｈｉｈａｒａ  ，  Ｎｏｒｉｈａｒｕ  Ｍｉｙａｈｏ，“Ｓｔｕｄｙ  ｏｎ  ｔｈｅ  ｐｅｒｆｏｒｍａｎｃｅ  ｅｖａｌｕａｔｉｏｎ  ａｐｐｌｙｉｎｇ  ｔｏ  ｔｈｅ  ｐｕｌｌ−ｔｙｐｅ  ｎｅｔｗｏｒｋ  ｍｅｃｈａｎｉｓｍ  ｆｏｒ  ｒｅａｌｉｚｉｎｇ  ｔｈｅ  ｄｉｓａｓｔｅｒ  ｒｅｃｏｖｅｒｙ  ｓｙｓｔｅｍ”，２０１０年電子情報通信学会総合大会（英語セッションシンポジウム），２０１０．３．１６，ｐ．Ｓ４２−Ｓ４３
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１から３のデータ分散保管装置は、データピースを送信すべきクライアントの情報を管理しなければならないため、クライアントの情報を管理するテーブルが肥大化する。このため、クライアントの情報管理におけるデータ分散保管装置の負荷が大きいという問題があった。
【０００８】
そこで、本発明は、データ分散保管装置の負荷を軽減することのできるデータ分散保管装置及び方法及びプログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本願発明のデータ分散保管装置は、予め定められた規則に基づいて入力データのデータ配列を変更するデータ変更部と、前記データ変更部からの変更データを複数のデータピースに分割するデータ分割部と、予め定められた演算アルゴリズムを用いて、前記入力データ固有の演算値及び前記データピースの演算値を算出する演算値算出部と、前記演算値算出部の算出する前記入力データ固有の演算値及び前記データピースの演算値並びに前記データ変更部の変更履歴が関連付けられたメタデータを格納するメタデータ格納部と、前記演算値算出部の算出する前記入力データ固有の演算値及び前記データピースの演算値を、前記データ分割部からの各データピースに付して分散用データを構成する分散用データ構成部と、前記分散用データ構成部の構成する前記分散用データを、前記分散用データに付されている前記データピースの演算値に適合する識別子を有するクライアントのうちの任意のクライアントに対して送信するサーバ分散用データ送受信部と、を備える。
【００１０】
分散用データ構成部がデータピースに特定の演算値を付し、サーバ分散用データ送受信部がデータピースを特定の演算値に適合するクライアントのみに送信するため、データ分散保管装置は分散用データをどのクライアントに保管したかを管理する必要がない。これにより、本願発明のデータ分散保管装置は、データ分散保管装置の負荷を軽減することができる。
パリティ演算部を備えるため、データピースの冗長保管を行うことができる。ここで、パリティデータを保管するため、効率よく冗長保管を行うことができる。
【００１１】
本願発明のデータ分散保管装置では、前記データピースの演算値に適合する識別子を有するクライアントからは取得可能であるけれども前記データピースの演算値に適合しない識別子を有するクライアントからは取得不可能な状態で、前記分散用データ構成部の構成する前記分散用データを格納する分散用データ格納部を、さらに備えてもよい。
分散用データ格納部を備えるため、クライアントから分散用データの有無を確認された際に分散用データがあれば送信するプル型の構成とすることができる。これにより、本願発明のデータ分散保管装置は、分散用データをクライアントにの通信に要する負荷を軽減することができる。
【００１３】
本願発明のデータ分散保管装置では、前記サーバ分散用データ送受信部は、前記分散用データ構成部の構成する前記分散用データを、前記データピースの演算値に一致する識別子を有するクライアント及び前記演算アルゴリズムを用いて導き出される数値空間において前記データピースの演算値付近に位置する演算値に対応する識別子を有するクライアントのうちの少なくともいずれかのクライアントに送信してもよい。
本発明により、データ分散保管装置にアクセスしているクライアントのなかにデータピースの演算値に一致する識別子を有するクライアントがない場合であっても、分散用データを速やかにクライアントに送信することができる。
【００１４】
本願発明のデータ分散保管装置では、前記メタデータ格納部の格納する前記メタデータを取得するメタデータ取得部と、前記メタデータ取得部の取得する前記メタデータに含まれる前記データピースの演算値に適合するクライアントから、前記メタデータに含まれる前記入力データ固有の演算値が付されている前記分散用データを回収する分散用データ回収部と、前記メタデータ取得部の取得する前記メタデータに含まれる前記データピースの演算値に従って、前記分散用データ回収部の回収する前記分散用データを配列し、前記データピースを結合するデータ結合部と、前記メタデータ取得部の取得する前記メタデータに含まれる前記データ変更部の履歴に基づいて、前記データ結合部からの結合データを前記入力データに復元するデータ復元部と、を備えてもよい。
メタデータ取得部及び分散用データ回収部を備えるため、データピースに付された特定の演算値を用いて分散用データを回収することができる。データ結合部及びデータ復元部を備えるため、分散用データを用いて入力データを復元することができる。ここで、データピースに付された特定の演算値を用いているため、データ分散保管装置は分散用データをどのクライアントに保管したかを管理する必要がない。これにより、本願発明のデータ分散保管装置は、データ分散保管装置の負荷を軽減することができる。
【００１５】
本願発明のデータ分散保管装置では、前記演算値算出部は、予め定められた演算アルゴリズムを用いて、前記入力データ自体の演算値をさらに算出し、前記メタデータ格納部は、前記演算値算出部の算出する前記入力データ自体の演算値をさらに含む前記メタデータを格納し、前記入力データ自体の演算値を算出した前記演算アルゴリズムを用いて前記データ復元部の復元データの演算値を算出し、算出した前記復元データの演算値を、前記メタデータ取得部の取得する前記メタデータに含まれる前記入力データ自体の演算値と照合する演算値照合部をさらに備えてもよい。
演算値照合部を備えるため、復元データと入力データとが一致するか否かを判定することができる。判定結果を用いて回収したデータピースの真偽を判定することができるため、本願発明のデータ分散保管装置は、クライントのなかに悪意ある参加を試みるクライアントがあった場合にこれを排除することができる。
【００１６】
上記目的を達成するために、本願発明のデータ分散保管方法は、予め定められた規則に基づいて入力データのデータ配列を変更するデータ変更手順（Ｓ１０２）と、前記入力データを変更した変更データを複数のデータピースに分割するデータ分割手順（Ｓ１０３）と、予め定められた演算アルゴリズムを用いて、前記入力データ固有の演算値及び前記データピースの演算値を算出する演算値算出手順（Ｓ１０４）と、前記入力データ固有の演算値及び前記データピースの演算値並びに前記データ変更手順における変更履歴が関連付けられたメタデータを格納するメタデータ格納手順（Ｓ１０５）と、前記入力データ固有の演算値及び前記データピースの演算値を前記各データピースに付して分散用データを構成し、当該分散用データを格納する分散用データ格納手順（Ｓ１０６）と、前記分散用データを、前記分散用データに付されている前記データピースの演算値に適合する識別子を有するクライアントのうちの任意のクライアントに対して送信するサーバ分散用データ送信手順（Ｓ１０７）と、を順に有する。
【００１７】
分散用データ格納手順においてデータピースに特定の演算値を付し、サーバ分散用データ送信手順においてデータピースを特定の演算値に適合するクライアントのみに送信するため、データ分散保管装置は分散用データをどのクライアントに保管したかを管理する必要がない。これにより、本願発明のデータ分散保管方法は、データ分散保管装置の負荷を軽減することができる。
また、パリティ演算部を備えるため、データピースの冗長保管を行うことができる。ここで、パリティデータを保管するため、効率よく冗長保管を行うことができる。
【００１８】
本願発明のデータ分散保管方法では、前記分散用データ格納手順において、前記データピースの演算値に適合する識別子を有するクライアントからは取得可能であるけれども前記データピースの演算値に適合しない識別子を有するクライアントからは取得不可能な状態で、前記分散用データ構成部の構成する前記分散用データを格納してもよい。
本発明により、クライアントから分散用データの有無を確認された際に分散用データがあれば送信するプル型の構成とすることができる。これにより、分散用データをクライアントの通信に要する負荷を軽減することができる。
【００２０】
本願発明のデータ分散保管方法では、前記サーバ分散用データ送信手順において、前記分散用データを、前記データピースの演算値に一致する識別子を有するクライアント及び前記演算アルゴリズムを用いて導き出される数値空間において前記データピースの演算値付近に位置する演算値に対応する識別子を有するクライアントのうちの少なくともいずれかのクライアントに送信してもよい。
本発明により、データ分散保管装置にアクセスしているクライアントのなかにデータピースの演算値に一致する識別子を有するクライアントがない場合であっても、分散用データを速やかにクライアントに送信することができる。
【００２１】
本願発明のデータ分散保管方法では、前記メタデータ格納手順において格納した前記メタデータを取得するメタデータ取得手順（Ｓ２０１）と、前記メタデータ取得手順で取得した前記メタデータに含まれる前記データピースの演算値に適合するクライアントから、前記メタデータに含まれる前記入力データ固有の演算値が付されている前記分散用データを回収する分散用データ回収手順（Ｓ２０２）と、前記メタデータ取得手順で取得した前記メタデータに含まれる前記データピースの演算値に従って、前記分散用データ回収手順で回収した前記分散用データを配列し、前記データピースを結合するデータ結合手順（Ｓ２０３）と、前記メタデータ取得手順で取得した前記メタデータに含まれる前記変更履歴に基づいて、前記データ結合手順で結合した結合データを前記入力データに復元するデータ復元手順（Ｓ２０４）と、を前記サーバ分散用データ送信手順の後に順に有する。
メタデータ取得手順及び分散用データ回収手順を有するため、データピースに付された特定の演算値を用いて分散用データを回収することができる。データ結合手順及びデータ復元手順を有するため、分散用データを用いて入力データを復元することができる。ここで、データピースに付された特定の演算値を用いているため、データ分散保管装置は分散用データをどのクライアントに保管したかを管理する必要がない。これにより、本願発明のデータ分散保管方法は、データ分散保管装置の負荷を軽減することができる。
【００２２】
本願発明のデータ分散保管方法では、前記演算値算出手順において、予め定められた演算アルゴリズムを用いて、前記入力データ自体の演算値をさらに算出し、前記メタデータ格納手順において、前記演算値算出手順で算出した前記入力データ自体の演算値をさらに含む前記メタデータを格納し、前記入力データ自体の演算値を算出した前記演算アルゴリズムを用いて前記データ復元手順で復元した復元データ自体の演算値を算出し、算出した前記復元データ自体の演算値を、前記メタデータ取得手順で取得した前記メタデータに含まれる前記入力データ自体の演算値と照合する演算値照合手順（Ｓ２０５）を前記データ復元手順の後にさらに有してもよい。
演算値照合手順を有するため、復元データと入力データとが一致するか否かを判定することができる。判定結果を用いて回収したデータピースの真偽を判定することができるため、本願発明のデータ分散保管方法は、クライントのなかに悪意ある参加を試みるクライアントがあった場合にこれを排除することができる。
【００２３】
本願発明のプログラムは、本発明のデータ分散保管方法をコンピュータに実行させる。
本発明により、コンピュータを用いて本発明のデータ分散保管方法を実行することができる。これにより、本願発明のプログラムは、データ分散保管装置の負荷を軽減することができる。
【００２４】
本願発明の記録媒体は、本発明のデータ分散保管方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
本発明により、コンピュータを用いて本発明のデータ分散保管方法を実行することができる。これにより、本願発明のプログラムは、データ分散保管装置の負荷を軽減することができる。
【００２５】
なお、上記各発明は、可能な限り組み合わせることができる。
【発明の効果】
【００２６】
本発明によれば、データ分散保管装置の負荷を軽減することのできるデータ分散保管装置及び方法及びプログラム及び記録媒体を提供することができる。
【図面の簡単な説明】
【００２７】
【図１】実施形態１に係るデータ分散保管システムの一例を示す。
【図２】実施形態１に係るデータ分散保管方法の一例を示すシーケンス図である。
【図３】本実施形態において扱うデータの一例を示す。
【図４】分散用データＤｊの一例を示す。
【図５】分散用データ格納部の格納する分散用データの一例を示す。
【図６】サーバ分散用データ送受信部の送信する分散用データの一例を示す。
【図７】実施形態２に係るデータ分散保管システムのフロチャートを示す。
【図８】実施形態３に係るデータ分散保管システムの一例を示す。
【図９】実施形態３において扱うデータの一例を示す。
【図１０】実施形態４に係るデータ分散保管システムの一例を示す。
【図１１】実施形態４に係るデータ分散保管方法の一例を示すシーケンス図である。
【図１２】分散用データＤｊを回収する際のデータ分散保管システムの動作の一例を示すフロチャートである。
【発明を実施するための形態】
【００２８】
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は、以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００２９】
（実施形態１）
図１に、実施形態１に係るデータ分散保管システムの一例を示す。本実施形態に係るデータ分散保管システムは、データ分散保管装置１Ａと、Ｍ台のクライアント３１〜３Ｍと、データ分散保管装置１Ｂと、を備える。図１では、Ｍ台のクライアント３１〜３Ｍのうちのｉ番目のクライアント３ｉ（ｉは１〜Ｍの任意の整数。）のみを記載した。データ分散保管装置１Ａ及び１Ｂとクライアント３１〜３Ｍとは、通信ネットワークで接続されている。
【００３０】
データ分散保管装置１Ａは、複数のクライアント３１〜３Ｍに入力データを分散させるための構成を備える。例えば、データ分散保管装置１Ａは、データ変更部１１と、データ分割部１２と、演算値算出部１３と、メタデータ格納部１４と、分散用データ構成部１５と、分散用データ格納部１６と、サーバ分散用データ送受信部１７と、メタデータ収集部１９と、を備える。
【００３１】
クライアント３ｉは、識別子ＩＤｉを有し、識別子ＩＤｉに対応したデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに適合する分散用データＤｊを保管する。例えば、クライアント３は、分散用データ取得部３１と、分散用データ格納部３２と、クライアント分散用データ送受信部３３と、を備える。
【００３２】
クライアント３ｉとしてはＰＣや、携帯電話など蓄積機能を有するあらゆる通信装置が利用可能であり、ユーザは、当該の通信装置に、アプリケーション（以下、ＤＲＴ（Ｄｉｓｔｒｉｂｕｔｉｏｎ  ａｎｄ  Ｒａｋｅ  Ｔｅｃｈｎｏｌｏｇｙ）アプリケーションと記述）をインストールしてシステムに参加することができる。クライアントとしてはＰＣや、携帯電話など蓄積機能を有するあらゆる通信装置が利用可能であり、ユーザは、当該の通信装置に、アプリケーション（以下ＤＲＴアプリケーションと記述）をインストールしてシステムに参加することができる。
【００３３】
データ分散保管装置１Ｂは、複数のクライアント３１〜３Ｍから分散用データＤ１〜ＤＮを回収して入力データを復元する。例えば、データ分散保管装置１Ｂは、メタデータ取得部２１と、分散用データ回収部２２と、データ結合部２３と、データ復元部２４と、を備える。
【００３４】
図２は、実施形態１に係るデータ分散保管方法の一例を示すシーケンス図である。本実施形態に係るデータ分散保管方法は、入力データ取得手順Ｓ１０１と、データ変更手順Ｓ１０２と、データ分割手順Ｓ１０３と、演算値算出手順Ｓ１０４と、メタデータ格納手順Ｓ１０５と、分散用データ格納手順Ｓ１０６と、サーバ分散用データ送信手順Ｓ１０７と、メタデータ送信手順Ｓ１０８と、分散用データ取得手順Ｓ３０１と、分散用データ格納手順Ｓ３０２と、クライアント分散用データ送信手順Ｓ３０３と、メタデータ取得手順Ｓ２０１と、分散用データ回収手順Ｓ２０２と、データ結合手順Ｓ２０３と、データ復元手順Ｓ２０４と、を順に有する。本実施形態に係るデータ分散保管プログラムは、本実施形態に係るデータ分散保管方法をコンピュータに実行させるためのプログラムである。
【００３５】
図３に、本実施形態において扱うデータの一例を示す。以下、図１、図２及び図３を参照しながら、本実施形態に係るデータ分散保管方法について説明する。
【００３６】
入力データ取得手順Ｓ１０１では、データ分散保管装置１Ａが入力データＩを取得する。例えば、ＤＲＴアプリケーションからアクセス可能なサーバのフォルダ内に入力データＩが格納されると、データ分散保管装置１Ａは入力データＩを取得する。
【００３７】
データ分散保管装置１Ａは、保管すべきデータを認識すると、データ変更手順Ｓ１０２を実行する。データ変更手順Ｓ１０２では、データ変更部１１が、予め定められた規則に基づいて入力データＩのデータ配列を変更する。これにより、入力データＩを変更した変更データＣがデータ分割部１２に入力される。予め定められた規則は、例えば、一体化関数、生成した順若しくは日時、チェックサム、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）又は入力データＩの特定部分のビット列である。
【００３８】
データ分割手順Ｓ１０３では、データ分割部１２が、変更データＣを複数のデータピースＰ１〜ＰＮに分割する。
【００３９】
演算値算出手順Ｓ１０４では、演算値算出部１３が、予め定められた演算アルゴリズムを用いて、入力データＩ固有の演算値ＯＩ及びデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮを算出する。入力データＩ固有の演算値ＯＩは、例えば、入力データＩのファイル名の演算値である。予め定められた演算アルゴリズムは、例えば、ハッシュ関数である。この場合、演算値算出部１３は、入力データＩのファイル名のハッシュ値を算出することによって、入力データＩ固有の演算値ＯＩを算出する。演算値算出部１３は、データピースＰｊのハッシュ値を算出することによって、演算値ＯＰｊを算出する。入力データＩ固有の演算値ＯＩは、入力データＩのファイル名に限らず、例えば、入力データＩそのものの演算値であってもよいし、入力データＩのヘッダ情報の演算値であってもよい。
【００４０】
メタデータ格納手順Ｓ１０５では、メタデータ格納部１４が、入力データＩ固有の演算値ＯＩ及びデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮ並びにデータ変更手順Ｓ１０２における変更履歴の関連付けられたメタデータＭを格納する。メタデータＭは、入力データＩのファイル名、入力データＩ固有の演算値ＯＩ、各データピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮ、データ変更部１１の変更履歴及びデータ分割部１２の分割履歴を含む。メタデータＭは、各データピースＰ１〜ＰＮの並び、各データピースＰ１〜ＰＮの暗号鍵を含んでいてもよい。
【００４１】
分散用データ格納手順Ｓ１０６では、分散用データ構成部１５が演算値算出部１３の算出する入力データＩ固有の演算値ＯＩ及びデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮを、データ分割部１２からの各データピースＰ１〜ＰＮに付して分散用データＤ１〜ＤＮを構成する。そして、分散用データ格納部１６が、分散用データＤ１〜ＤＮを格納する。図４に、分散用データＤｊの一例を示す。分散用データＤｊは、入力データＩ固有の演算値ＯＩ及びデータピースＰｊの演算値ＯＰｊを含む。管理情報は、例えば、チェックサムである。
【００４２】
分散用データ格納部１６は、データピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに適合する識別子ＩＤｉを有するクライアント３からは取得可能であるけれどもデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに適合しない識別子ＩＤｉを有するクライアント３ｉからは取得不可能な状態で、分散用データ構成部１５の構成する分散用データＤ１〜ＤＮを格納する。例えば、クライアントの識別子を参照してアクセス制限をかける。
【００４３】
例えば、図５に示すように、演算値ＯＩが「１２３４５」で演算値ＯＰｊが「６６１２」のデータピースＰｊを含む分散用データＤｊが分散用データ格納部１６に格納されている。この場合、演算値ＯＰｊに一致する「６６１２」の識別子ＩＤｉを有するクライアント３ｉは、分散用データＤｊを取得することができる。一方、演算値ＯＰｊに適合しない「５１４７」の識別子ＩＤ１を有するクライアント３１は、分散用データＤｊを取得することはできない。
【００４４】
ここで、演算値ＯＰｊと識別子ＩＤｉとが適合する場合には、分散用データＤＰｊと演算値ＯＰｊとが一致する場合と、演算アルゴリズムを用いて導き出される数値空間においてデータピースＰｊの演算値ＯＰｊ付近に位置する演算値に一致する場合と、も含む。例えば、図５に示すように、クライアント３Ｍの識別子「７７００」がハッシュ空間においてデータピースＰ２の演算値ＯＰ２「７７７７」付近に位置する演算値「７７００」に対応する場合、クライアント３Ｍは分散用データＤ２を取得することができる。
【００４５】
クライアント３ｊから分散用データＤ１〜ＤＮの有無を確認された際に、サーバ分散用データ送信手順Ｓ１０７を実行する。図６に、サーバ分散用データ送受信部の送信する分散用データの一例を示す。サーバ分散用データ送信手順Ｓ１０７では、サーバ分散用データ送受信部１７が、分散用データＤ１〜ＤＮをクライアント３１〜３Ｎに送信する。この仕組みにより送信先の存在を確認する必要がないため、通信効率を向上化させることができる。特に相手先がいない場合の通信タイムアウトは数秒から数十秒かかるため、保管すべきデータが一時的に大量に発生した場合でも輻輳が発生しにくくなる特徴を持ち、更に、輻輳のためのトラフィック制御自体も不要となる。
【００４６】
クライアント３ｉは、ＤＲＴアプリケーションの起動時にデータ分散保管装置１Ａと通信を行い、保管すべきデータＤｊがあるか否かを確認する。その後も一定期間ごとにクライアント３ｉはデータ分散保管装置１Ａに保管すべきデータＤｊがあるか否かを確認する。このとき、ＤＲＴアプリケーションはクライアント３ｉ内で動作しているＣＰＵの負荷を監視し、ＣＰＵの使用率が規定の閾値を超えた場合は確認を行わない仕組みを持たせてもよい。
【００４７】
ここで、各分散用データＤｊには、各データピースＰｊの演算値ＯＰｊが付されている。一方、各クライアント３ｉは識別子ＩＤｉを有している。サーバ分散用データ送受信部１７は、分散用データＤ１〜ＤＮを、分散用データＤ１〜ＤＮに付されているデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに適合する識別子を有するクライアントのうちの任意のクライアント３ｉに対して送信する。
【００４８】
このとき、クライアント３ｉは分散用データ取得手順Ｓ３０１及び分散用データ格納手順Ｓ３０２を実行する。分散用データ取得手順Ｓ３０１では、分散用データ取得部３１が、分散用データＤｊを受信する。分散用データ格納手順Ｓ３０２では、分散用データ格納部３２が、分散用データＤｊを格納する。これにより、分散用データＤ１〜ＤＮがクライアント３１〜３Ｍに分散して保管される。
【００４９】
メタデータ格納手順Ｓ１０５の後、データ分散保管装置１ＢがメタデータＭを取得する。例えば、メタデータ送信手順Ｓ１０８及びメタデータ取得手順Ｓ２０１を実行する。メタデータ取得手順Ｓ２０１では、メタデータ取得部２１が、メタデータ格納部１４にアクセスして、メタデータ格納手順Ｓ１０５において格納したメタデータＭを取得する。このとき、データ分散保管装置１Ａがメタデータ送信手順Ｓ１０８を実行して、メタデータＭをデータ分散保管装置１Ｂに送信する。
【００５０】
分散用データ回収手順Ｓ２０２では、分散用データ回収部２２が、クライアント３１〜３Ｍから分散用データＤ１〜ＤＮを回収する。例えば、分散用データ回収部２２は、メタデータＭに含まれるデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに適合するクライアントに対して、メタデータＭに含まれる入力データＩ固有の演算値ＯＩが付されている分散用データの回収指示を送信する。例えば、図５及び図６に示すように、入力データＩの復元を行う場合、演算値ＯＰｊ「６６１２」に適合する識別子「６６１２」を有するクライアント３ｉに対して、演算値ＯＩ「１２３４５」が付されている分散用データの送信を指示する。
【００５１】
そして、分散用データ回収部２２は、メタデータＭに含まれるデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに適合する各クライアント３１〜３Ｍから、メタデータＭに含まれる入力データＩ固有の演算値ＯＩが付されている分散用データＤ１〜ＤＮを回収する。このとき、クライアント３ｉがクライアント分散用データ送信手順Ｓ３０３を実行する。
【００５２】
ここで、演算値ＯＰ１〜ＯＰＮに一致する場合だけでなく、演算値ＯＰ１〜ＯＰＮ付近に位置する演算値に一致するクライアント３１〜３Ｍからも分散用データＤ１〜ＤＮを回収する。これにより、分散用データ回収部２２のアクセス範囲が自動的に広がるため、同一の分散用データを保管するクライアントが少なく、分散用データの回収に時間を要する場合であっても、分散用データを速やかに回収することができる。管理テーブルではなく演算値で管理することによって分散データの回収遅延を防ぐため、不特定多数のクライアントが参加する場合であっても、管理テーブルのライフサイクル管理が非常に重くなる事態を避けることができる。
【００５３】
クライアント分散用データ送信手順Ｓ３０３では、クライアント分散用データ送受信部３３が、分散用データ格納部３２に、メタデータＭに含まれる入力データＩ固有の演算値ＯＩが付されている分散用データＤｊが格納されているか否かを確認する。そして、メタデータＭに含まれる入力データＩ固有の演算値ＯＩが付されている分散用データＤｊが格納されている場合には、クライアント分散用データ送受信部３３が、その分散用データＤｊを送信する。
【００５４】
クライアントから分散用データＤ１〜ＤＮの有無を確認された際に分散用データＤ１〜ＤＮがあれば送信するように指示を行う型の構成であることが好ましい。この時、クライアント３１〜３Ｍは指示されたデータがあれば送信を行う。この仕組みによりデータ分散保管装置１Ｂは分散用データＤ１〜ＤＮをどのクライアント３１〜３Ｍに保管したかを管理する必要がなくなり、従来の方式と比べ、管理に要する負荷を大きく軽減できる。このように、クライアント３１〜３Ｍを直接的に管理する必要がない。また、データ分散保管装置１Ｂの処理負荷を軽くできるだけでなく、クライアント３１〜３Ｍの増減（システムのスケーラビリティ）に対して、柔軟に対応できる特徴となる。
【００５５】
データ結合手順Ｓ２０３では、データ結合部２３が、メタデータＭに含まれるデータピースＰ１〜ＰＮの演算値ＯＰ１〜ＯＰＮに従って、分散用データ回収手順Ｓ２０２で回収した分散用データＤ１〜ＤＮを配列し、データピースＰ１〜ＰＮを結合する。例えば、メタデータＭの演算値ＯＰ１〜ＯＰＮがデータ分割部１２で分割したデータの順に配列されている場合、データ結合部２３は、分散用データＤ１〜ＤＮの演算値ＯＰ１〜ＯＰＮを読み出し、メタデータＭから演算値ＯＰ１〜ＯＰＮの順に分散用データＤ１〜ＤＮを並べ、並べた順に分散用データＤ１〜ＤＮに含まれるデータピースＰ１〜ＰＮを結合する。そして、データ結合部２３は、結合データＢをデータ復元部２４に出力する。
【００５６】
データ復元手順Ｓ２０４では、データ復元部２４が、メタデータＭに含まれる変更履歴に基づいて、結合データＢを入力データＩに復元する。例えば、データ変更部１１が入力データの一体化を行う場合、データ復元部２４は、メタデータＭからデータ変更部１１の一体化関数を読み出し、読み出した一体化関数を用いて結合データＢの逆一体化処理を行う。これにより、データ復元部２４は、入力データＩを復元することができる。
【００５７】
なお、データ分散保管装置１Ａは、さらにデータ分散保管装置１Ｂの機能を備えていてもよい。例えば、データ分散保管装置１Ａが、さらにメタデータ取得部２１と、分散用データ回収部２２と、データ結合部２３と、データ復元部２４と、を備えていてもよい。同様に、データ分散保管装置１Ｂも、さらにデータ分散保管装置１Ａの機能を備えていてもよい。
【００５８】
本実施形態に係るデータ分散保管システム及びデータ分散保管方法は、クライアント３１〜３Ｍに固定アドレスを付与することなく、分散用データＤ１〜ＤＮの保管及び回収をすることができる。これにより、分散用データＤ１〜ＤＮの保管と回収に係る通信を著しく効率化することができる。また、どのクライアント３１〜３Ｍにどの分散用データＤ１〜ＤＮが保管されているかを管理する必要がなくなるため、クライアント３１〜３Ｍの状態を管理するための通信や記憶容量がデータ分散保管装置１Ａ及び１Ｂに不要となり、不特定多数が参加するシステムの構築を容易にできる。また、システムにクライアントを増減させる場合、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇの手法を応用し、新たな装置が徐々にシステムに参加し、滞り無く装置を除外できる仕組みにより、システムのスケーラビリティを確保し、運用を容易にできる。
【００５９】
さらに、本実施形態に係るデータ分散保管システム及びデータ分散保管方法は、クライアント３１〜３Ｍを起点とするアクセス方法（プル型通信）の手法の採用が可能になっている。これにより、分散用データＤ１〜ＤＮ回収時の遅延時間を最短化することができる。
【００６０】
入力データＩの演算値を指定することで、１台のクライアント３ｉが複数の分散用データを保管している場合であっても、１度の回収指示ですべての分散用データを回収することができる。
【００６１】
（実施形態２）
図７に、本実施形態に係るデータ分散保管システムのフロチャートを示す。本実施形態に係るデータ分散保管システムでは、実施形態１で説明した図２に示す分散用データ取得手順Ｓ３０１において、図１に示すクライアント３ｉは、ＤＲＴアプリケーションの起動時（Ｓ４１２）にデータ分散保管装置１Ａと通信を行い（Ｓ４１３）、保管すべきデータＤｊがあるか否かを確認する（Ｓ４１４）。このとき、クライアント３ｉは、データ分散保管装置１Ａからの分散用データの回収指示があるか否かも確認する（Ｓ４１５）。そして、分散用データの回収指示がある場合は、回収を優先してステップＳ４１６を実行する。
【００６２】
ステップＳ４１６では、クライアント３ｉは、データ分散保管装置１Ａへの確認でデータ分散保管装置１Ａから回収すべき分散用データＤｊの情報をうけとった場合には、ローカルに保管している分散用データＤｊのうち該当するデータをデータ分散保管装置１Ａに送信する。保管すべきデータがある場合には（Ｓ４１７）、分散用データがある場合は受信して、保管する（Ｓ４１８）。
【００６３】
本実施形態では、クライアント３１〜３Ｍからのアクセスを起点とするため、配信先管理によって生じる回収効率の差が生じない。これにより、システムの簡略化が可能になる。更に配信先を、例えば、ハッシュで規定することにより、回収指示が膨大になることを回避する仕組みを有する。
【００６４】
また、本実施形態に係るデータ分散保管システムでは、実施形態１で説明したデータ分散保管装置１Ａは、さらにデータ分散保管装置１Ｂの機能を備え、以下の動作を行うことが好ましい。
ステップＳ４１１では、クライアント３ｉが起動処理を行う。このとき、クライアント３ｉは、予め登録されたアクセス先やＰＣの固有情報を取得する。ステップＳ４１１は、クライアント３ｉ起動後に自動的に実行してもよいし、クライアント３ｉ起動中に常に実行するようにしてもよいし、別のトリガで任意のタイミングに任意の期間実行してもよい。また、ステップＳ４１１において、起動のためのパスワード入力を要求してもよい。ステップＳ４１２では、ステップＳ４１１で取得する各種情報や認証結果に基づきＤＲＴアプリケーションを起動する。
【００６５】
ステップＳ４１３では、クライアント３ｉが、予め登録されたアクセス先であるデータ分散保管装置１ＡとＩＰ通信可能であるか否かを確認する。この確認は、例えば、ｈｔｔｐやｈｔｔｐｓといった汎用のウエブブラウザ用のプロトコルを用いてもよいし、他の方法でもよい。確認の際に、クライアント３ｉが正しく対象としている装置かどうかを、データ分散保管装置１Ａが確認してもよい。この場合、データ分散保管装置１Ａは、自己認証局として、データ分散保管装置１Ａが予め発行した証明書とクライアント３ｉの送信する証明書とを照合する手順をとってもよい。この手順は、ベリサインなどに代表される公的な認証サービスを使っても良い。
【００６６】
ステップＳ４１４では、クライアント３ｉが、保管すべき分散用データの有無を確認する。例えば、クライアント３ｉは、分散用データの有無を確認するためのデータ確認パケットをデータ分散保管装置１Ａに送出し、その応答である応答パケットを待つ。データ確認パケット及び応答パケットは多くのネットワーク環境で単一パケットとなるよう情報量を制限して効率的な送信ができるように配慮することが望ましい。このような情報量の最大値をｐａｔｈＭＴＵ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔ）と言い、一般的には１４００〜１５００程度の数値が採用される。
【００６７】
ステップＳ４１５では、クライアント３ｉが、応答パケットの内容を確認し、分散用データの回収を指示する回収指示があるかどうかを判断する。回収指示があった場合は、ステップＳ４１６で該当する全ての分散用データを、データ分散保管装置１Ａへ送信する。ステップＳ４１５において回収指示がない場合は、ステップＳ４１７に移行する。
【００６８】
ステップＳ４１７では、クライアント３ｉが、受け取るべき保管データがあるかどうかを確認し、ある場合にはステップＳ４１８に移行し、ない場合にはステップＳ４１９に移行する。ステップＳ４１８では、クライアント３ｉが、分散用データを受信して格納する。このとき、パケット内通信の効率化のため、クライアント３ｉの受け取るべき分散用データは応答パケット内に含まれていることが好ましい。また受け取るべきデータは分割されているが、ｐａｔｈＭＴＵを勘案し１パケット内に収まるサイズとする。更に受け取るべき分散用データが複数ある場合、受信するパケットも複数となるが、この際パケット内には受信すべき残りパケット数が埋め込まれているため、クライアント３ｉはこのパケット数を参照し、０になるまで受信を繰り返す。ステップＳ４１９では、ステップＳ４１８で前述の残りパケット数が０になると受信を完了し、待機状態に移行する。所定の時間待機後、ステップＳ４１３へ戻る。
【００６９】
ステップＳ４２１では、データ分散保管装置１Ａが起動処理を行う。ステップＳ４２１はデータ分散保管装置１Ａの内部の動作であり、本実施形態ではデータ分散保管装置１Ａの起動後すぐに実行する。ステップＳ４２１は、データ分散保管装置１Ａの起動以外のトリガで、任意のタイミングに実行してもよい。
【００７０】
ステップＳ４２１の後、ステップＳ４２２、ステップＳ４２８及びステップＳ４３１を実行する。ステップＳ４２２、ステップＳ４２８及びステップＳ４３１は、データ分散保管装置１Ａの内部で分化して並列動作するソフトウェアプロセスが担当する。本実施形態では並列動作としたが、演算性能が比較的低い機器においては、ステップＳ４２２、ステップＳ４２８及びステップＳ４３１を順次処理してもよい。
【００７１】
ステップＳ４２２では、データ分散保管装置１Ａが、保管すべき入力データを監視している。保管すべき入力データがない場合は規定時間待機し、定期的に監視を継続する。保管すべき入力データを検出した場合はステップＳ４２３に移る。
ステップＳ４２３では、データ分散保管装置１Ａが、保管すべき入力データを一体化し、送信パケット単位で分割処理を行い、分散用データを一時的にデータ分散保管装置１Ａ内へ保管する。本実施形態では一時的な分散用データをデータベースに登録しているが、ファイルとして一時保管しても良い。処理後はステップＳ４２２に戻り、入力データの監視を継続する。
【００７２】
ステップＳ４３１では、データ分散保管装置１Ａが、入力データを復元するための分散用データの回収依頼を待つ。回収依頼は、例えば、入力データの保管を依頼したユーザが、ｗｅｂアプリケーションを用いて復元動作を指示することによって発生する。回収依頼のトリガは主にユーザ操作であるが、入力データの損失を検出した場合など自動的に依頼が発生しても良い。回収依頼がない場合は、定期的に回収依頼を監視し、回収依頼を検出した場合はステップＳ４３２に移る。
【００７３】
ステップＳ４３２では、データ分散保管装置１Ａが、内部のキャッシュに分散用データが存在していないかどうか確認を行う。クライアント３ｉへ分散用データの回収指示を送信する前に、分散用データの確認を行うことで、分散用データを効率的に回収することができる。
ステップＳ４３３では、データ分散保管装置１Ａが、自己のキャッシュ内に復元可能な分散用データが揃っているか否かを判定し、キャッシュ内に復元可能な全ての分散用データが揃っていない場合はステップＳ４３４へ移行し、キャッシュ内に復元可能なデータが全て揃っている場合はステップＳ４３６へ移行する。
【００７４】
ステップＳ４３４では、データ分散保管装置１Ａが、各クライアント３ｉから分散用データを回収する。このとき、データ分散保管装置１Ａは、クライアント３ｉのステップＳ４１４で送出されるパケットへの応答の際に回収指示を送信する。また、キャッシュ内になかった分散用データを選択的に回収してもよい。
ステップＳ４３５では、データ分散保管装置１Ａが、回収すべき分散用データの回収が完了したか否かを判定し、復元可能な分散用データが揃うまで受信待機する。回収が完了するまで分散用データを回収し続け、回収が完了した時点でステップＳ４３６へ移行する。
【００７５】
ステップＳ４３６では、データ分散保管装置１Ａが、回収した分散用データを用いて入力データを復元する。例えば、回収された分散用データを合成して逆一体化を行う。
ステップＳ４３７では、データ分散保管装置１Ａが、復元した入力データをユーザに送信する。例えば、予め定められたデータの格納場所又はユーザ指定の格納場所に復元した入力データを送信する。
【００７６】
ステップＳ４２８では、データ分散保管装置１Ａが、保管すべき分散用データがあるか否かを確認する旨の保管確認をクライアント３ｉから受信し、分散用データを保管可能なクライアント３ｉを確認する。ステップＳ４２８は、ステップＳ４２３で生成された分散用データ群をクライアント３ｉ群へ送信するためのソフトウェアプロセスが担当する。但しこれはデータ分散保管装置１Ａが主体となって、アクセス可能なクライアント３ｉへ分散用データを配布し回収するためのステップであり、実施形態１と複合し、プッシュ形態とプルの形態を共存させて動作する場合のステップである。ステップＳ４２８は、ステップＳ４２３の処理が完了すると実行するが、定期的に実行してもよい。
【００７７】
ステップ４２４では、ステップＳ４３５で回収が完了していない分散用データがあるか否かを判定し、ある場合にはステップＳ４２５に移行し、ない場合にはステップＳ４２６に移行する。ステップＳ４２５では、クライアント３ｉへ分散用データの回収指示を送信して分散用データを回収する。本実施形態では、ここで回収したデータの復元も別のソフトウェアプロセスであるステップＳ４３５、ステップＳ４３６に処理を委ねている。これは実施形態１でのプッシュ型アクセスが可能なクライアントと、実施形態２のプル型のみ可能なクライアントが混在した場合の手順の複雑さを回避している。
【００７８】
ステップＳ４２６では、クライアント３ｉへ配信すべき分散用データがあるか否かを判定し、あればステップＳ４２７に移行し、なければステップＳ４２８へ移行する。ステップＳ４２７では、分散用データをクライアント３ｉへ送信する。
【００７９】
（実施形態３）
本実施形態に係るデータ分散保管システムは、データピースＰ１〜ＰＮを複製することで冗長保管を行う。従来システムでは、例えば、複製数として３０（３０冗長）などの例でシステム構成を行うことが考えられる。これはクライアントが常時通電し、通信可能な状態が保障されない装置を前提としているためであり、データ分散保管装置など可用性が高いクライアントを想定する場合は、過剰な冗長設計となる場合がある。例えば、２冗長の場合が、最低の冗長保管数となるが、その場合でも実保管容量は物理的保管容量の半分となる。このように、信頼性と可用性が高いクライアントを想定する場合、効率を考慮した冗長保管の仕組みが必要である。
【００８０】
図８に、本実施形態に係るデータ分散保管システムの一例を示す。本実施形態に係るデータ分散保管システムでは、実施形態１のデータ分散保管装置１Ａがパリティ演算部１８をさらに備える。そして、図２に示すデータ分割手順Ｓ１０３においてデータピースＰ１〜ＰＮのパリティデータを生成することを特徴とする。
【００８１】
図９に、本実施形態において扱うデータの一例を示す。ステップＳ２２１，Ｓ２２２，Ｓ２２３，Ｓ２２４，Ｓ２２５はデータをクライアント３１〜３３へ保管する処理を示し、ステップＳ２２５，Ｓ２２６，Ｓ２２７，Ｓ２２８，Ｓ２２９は保管したデータを回収する処理を模式化したものである。簡単のため、図８に示すＮが６であり、Ｍが３であり、Ｋが３である場合について示した。以下、本実施形態の特徴について説明する。
【００８２】
図２に示すデータ分割手順Ｓ１０３において、さらに、パリティ演算部１８が、２個のデータピースＰ１及びＰ２を用いて、１個のパリティデータＰｐ１を生成する。パリティ演算部１８は、データピースＰ１〜Ｐ６のうちの２つを用いてもよいし、３つ以上を用いてもよい。パリティデータＰｐ１〜Ｐｐ３の生成方法は、可逆演算であればよく、例えば、加算又は減算又はこれらの組み合わせを用いて行うことができる。これにより、ステップＳ２２３に示すデータピースＰ１〜Ｐ６及びパリティデータＰｐ１〜Ｐｐ３が分散用データ構成部１５に入力される。
【００８３】
ここで、パリティ演算部１８の用いるデータピースＰ１〜Ｐ６の数は、可変であることが好ましい。例えば、通信や回線の状態、回収の時間、通信の精度、クライアント３１〜３３からの応答時間又はクライアント３１〜３３のアクセス頻度によって、パリティ演算部１８の用いるデータピースＰ１〜Ｐ６の数を変化させる。
【００８４】
演算値算出手順Ｓ１０４において、演算値算出部１３が、演算アルゴリズムを用いて、パリティデータＰｐ１〜Ｐｐ３の演算値ＯｐＰ１〜ＯｐＰ３をさらに算出する。そして、分散用データ格納手順Ｓ１０６において、分散用データ構成部１５が、入力データＩ固有の演算値ＯＩ及びパリティデータＰｐ１〜Ｐｐ３の演算値ＯｐＰ１〜ＯｐＰ３をパリティデータＰｐ１〜Ｐｐ３に付して分散用データＤｐ１〜Ｄｐ３をさらに構成する。そして、分散用データ格納部１６が、分散用データＤｐ１〜Ｄｐ３をさらに格納する。
【００８５】
サーバ分散用データ送信手順Ｓ１０７において、サーバ分散用データ送受信部１７が、分散用データＤｐ１〜Ｄｐ３を、パリティデータＰｐ１〜Ｐｐ３の演算値ＯｐＰ１〜ＯｐＰ３に適合する識別子ＩＤ１〜ＩＤ３を有するクライアント３１〜３３にさらに送信する。これにより、パリティデータＰｐ１〜Ｐｐ３の含まれた分散用データＤｐ１〜Ｄｐ３がクライアント３１〜３３に保管される。
【００８６】
分散用データ回収手順Ｓ２０２では、分散用データ回収部２２が、さらに、クライアント３１〜３３から分散用データＤｐ１〜Ｄｐ３も回収する。そして、分散用データＤ１〜Ｄ６のなかで回収できないデータがあるときは、分散用データＤｐ１〜Ｄｐ３を用いて分散用データＤ１〜Ｄ６を算出する。このとき、演算値算出部１３の用いている演算アルゴリズムが必要になるため、メタデータ格納手順Ｓ１０５において、メタデータ収集部１９は演算値算出部１３の用いている演算アルゴリズムも収集する。そして、メタデータ格納１４は、演算値算出部１３の用いている演算アルゴリズムもメタデータＭに格納する。これにより、分散用データ回収部２２は、分散用データＤ１〜Ｄ６のすべてが収集できない場合であっても、分散用データＤｐ１〜Ｄｐ３を用いて分散用データＤ１〜Ｄ６のすべてを回収することができる。
【００８７】
さらに本実施形態のデータ分散保管方法の具体例を説明する。クライアント３１〜３３のうちの十分に信頼性が高いものを想定する場合、分割の際にパリティ処理を加えることで冗長度を最適化し、蓄積コストを低減させることができる。またこの時回収のための通信を最適化し、回収時間を最短化した上でパリティ分の通信量増加を避けることができる。
【００８８】
例えば、図９に示すステップＳ２２４及びステップＳ２２５において、クライアント３１〜３３のうちのいくつかのデータを束ね、そのうち、１つをパリティデータの保管として利用する方法をとることができる。例えば、３つのクライアント３１〜３３がある場合、うち、２つのクライアント３１及びクライアント３２に二種類のデータピースＰ１及びＰ２を保管し、残りの１つのクライアント３３には、この二種類のデータのパリティデータＰｐ１を保管することも、可能である。上記の場合、クライアント３１〜３３の有効容量は２／３となるため約６７％となる。クライアントを５つとした場合は４／５となり、８０％まで改善できる。
【００８９】
しかしながらこの方式では、システムを運用している中で束ねるクライアントの数を変更する場合に煩雑な処理となる。そこで、本実施形態では、ステップＳ２２２の一体化処理の段階で上記の処理を行うこととし、配信及び回収の仕組みを、極力、単純化できる構成により、実現する。
【００９０】
例えば、図９に示すステップＳ２２３からＳ２２５における保管の際は、データ分割部１２が分割する際にパリティデータＰｐ１〜Ｐｐ３を付加している。例えばデータ２つに対して１つのパリティを付加しており、６つに分割されたデータピースＰ１〜Ｐ６が２つづつ３つのブロックを構成し、それぞれにパリティデータＰｐ１〜Ｐｐ３が付与される。
【００９１】
図９に示すステップＳ２２７における回収の際、パリティデータＰｐ１〜Ｐｐ３とデータピースＰ１〜Ｐ６は区別なく回収され、復元が行われる。ステップＳ２２７では最初のブロックで２番目のデータを破線で示しているが、これはデータピースＰ２が失われて回収できなかったことを示している。同様に２つめのブロックは全てのデータピースＰ３〜Ｐ４が回収され、３つめのブロックではパリティデータＰｐ３が回収できない例を示している。
【００９２】
最初のブロックでは失われた２つめのデータピースＰ２を１つめのデータピースＰ１、及びパリティデータＰｐ１から復元する。２つめ及び３つめのブロックでは、データが回収できているのでパリティデータＰｐ２及びＰｐ３は破棄される。この後有効なデータピースＰ１〜Ｐ６が揃ったので、図９に示すステップＳ２２８における逆一体化処理を行い、入力データＩの復元が行われる。
【００９３】
分散用データＤ１〜ＤＮの回収をデータ分散保管装置１Ｂ主体（プッシュ型）で行う場合、データ回収時に、データピースＰ１〜ＰＮが一切損失していない場合に通信量が保管総量と同じく１．５倍となる。しかし、分散用データＤ１〜ＤＮが回収できない場合のみに、パリティデータＰｐ１〜Ｐｐ３を回収する仕組みと変更してこの方法を行えば、この通信量が１．５倍になるというデメリットは回避できる。
【００９４】
一方、クライアント主体（プル型）で回収を行う場合は、１つのブロックを構成する３つのデータのうち２つが揃った時点で回収は完了するので、分散用データ回収部２２はこの時点で回収依頼を打ち切ることも可能である。その際には通信量が前記のように１．５倍になることはない特徴が発揮できる。
【００９５】
（実施形態４）
分割して配信されたデータを改竄して意図したデータを入力データＩとして復元させることは原理上不可能である。しかし、悪意ある参加があった場合には、保管した分散用データＤｊを変更し、回収指示に対して誤ったデータを分散用データＤｊとして返送したり、回収指示に対して全く異なるデータを返送して、入力データＩの復元を妨害することは原理上可能である。
【００９６】
分散用データＤｊに付与されている管理情報を用いれば、単純な改竄はデータ分散保管装置１Ｂ側で排除可能である。しかしながら、管理情報の照合は、通信エラー等を想定したものであり、演算値ＯＩ又は演算値ＯＰｊの改竄まで行う、悪意的な行為を含めた対策を、対象としたものではない。演算値ＯＩ又は演算値ＯＰｊの改竄までを行った場合、データ分散保管装置１Ｂの復元した復元データＲが入力データＩと異なるデータとなってしまう。
【００９７】
そこで、本実施形態に係るデータ分散保管システムは、クライント３１〜３Ｍのなかに悪意ある参加を試みるクライアントがあった場合に、これを排除することを特徴とする。
【００９８】
図１０に、本実施形態に係るデータ分散保管システムの一例を示す。本実施形態に係るデータ分散保管システムは、データ分散保管装置１Ａにおける演算値算出部１３が異なり、データ分散保管装置１Ｂがさらに演算値照合部２５を備える。
【００９９】
図１１は、本実施形態に係るデータ分散保管方法の一例を示すシーケンス図である。本実施形態に係るデータ分散保管方法は、図２に示すデータ復元手順Ｓ２０４の後に、演算値照合手順Ｓ２０５と、不正データ排除手順Ｓ２０６と、をさらに有する。
【０１００】
図２に示す演算値算出手順Ｓ１０４において、演算値算出部１３が、予め定められた演算アルゴリズムを用いて、入力データＩ自体の演算値ＯＯをさらに算出する。そして、メタデータ格納手順Ｓ１０５において、メタデータ格納部１４は、演算値算出手順Ｓ１０４で算出した入力データＩ自体の演算値ＯＯをさらに含むメタデータＭを格納する。
【０１０１】
サーバ分散用データ送信手順Ｓ１０７では、サーバ分散用データ送受信部１７が、分散用データＤ１〜ＤＮをクライアント３１〜３Ｍに冗長分散させる。例えば、図６に示すように、クライアント３ｉ＋１の識別子「６６１４」がハッシュ空間においてデータピースＰｊの演算値ＯＰｊ「６６１２」付近に位置する演算値「６６１４」に一致する場合、サーバ分散用データ送受信部１７が、分散用データＤｊを２台以上のクライアント３ｉ及び３ｉ＋１に送信する。
【０１０２】
図１２は、分散用データＤｊを回収する際のデータ分散保管システムの動作の一例を示すフロチャートである。
ステップＳ３１１では、分散用データ回収部２２が、分散用データの回収指示を取得したか否かを判定する。分散用データ回収部２２が分散用データの回収指示を取得すると、ステップＳ３１２に移行する。
【０１０３】
ステップＳ３１２では、分散用データ回収部２２が図１１に示す分散用データ回収手順Ｓ２０２を実行する。ステップＳ３１２では、ステップＳ３１９〜ステップＳ３２３を実行する。ステップＳ３１９では、分散用データ回収部２２がクライアント３１〜３Ｍからアクセスがあったか否かを判定する。アクセスがあった場合、ステップＳ３２０へ移行する。ステップＳ３２０では、回収した分散用データＤｊに含まれるデータピースＰｊの演算値ＯＰｊ例えばハッシュ値を算出する。ステップＳ３２１では、算出した演算値ＯＰｊがメタデータＭに含まれる演算値ＯＰｊに適合するか否かを判定し、適合しなければその分散用データＤｊを廃棄し（ステップＳ３２３）、適合すればステップＳ３２２へ移行する。ステップＳ３２２では、全ての分散用データＤ１〜ＤＮが予め定められた個数そろっているか否かを判定する。全ての分散用データＤ１〜ＤＮが予め定められた個数そろっていなければ、ステップＳ３１９へ移行し、全ての分散用データＤ１〜ＤＮが予め定められた個数揃うまでステップＳ３１９〜ステップＳ３２２を繰り返す。ステップＳ３２２において全ての分散用データＤ１〜ＤＮが予め定められた個数そろっていれば、ステップＳ３１２を終了する。
【０１０４】
ステップＳ３１３では、データ結合部２３がデータ結合手順Ｓ２０３を実行するとともに、データ復元部２４が図１１に示すデータ復元手順２０４を実行する。データ復元手順Ｓ２０４では、データ復元部２４が、結合データＢを入力データＩに復元した復元データＲを出力する。
【０１０５】
ステップＳ３１４では、演算値照合部２５が、図１１に示す演算値照合手順Ｓ２０５を実行する。演算値照合手順Ｓ２０５では、演算値照合部２５は、入力データＩ自体の演算値ＯＯを算出した演算アルゴリズムを用いて復元データＲ自体の演算値ＯＲを算出する。そして、演算値照合部２５は、復元データＲ自体の演算値ＯＲを、メタデータ取得手順Ｓ２０１で取得したメタデータＭに含まれる入力データＩ自体の演算値ＯＯと照合する。演算値ＯＲと演算値ＯＯとが一致すれば、演算値照合部２５は、復元データＲを入力データＩとして出力し、分散用データＤ１〜ＤＮの回収を終了する。
【０１０６】
ステップＳ３１４において、演算値ＯＲと演算値ＯＯとが一致しない場合、データ分散保管装置１Ｂは、図１１に示す不正データ排除手順Ｓ２０６を実行する。不正データ排除手順Ｓ２０６では、データ分散保管装置１Ｂは、改めて分散用データＤ１〜ＤＮの回収を行うが、通常とは異なる動作でデータ回収を行う。以下に、この方法をｄｏｕｂｔモードと記述する。
【０１０７】
ｄｏｕｂｔモードでは、データ回収依頼は通常と同一であるが、アクセスしてきたクライアント３ｊが当該分散用データＤｊを持ち、これを回収できたとしても、通常とは異なり、ひとつのデータピースＰｊにつき、冗長保管されている２つの分散用データＤｊの回収が完了するまで各クライアント３１〜３Ｍへの回収依頼を停止しない。
【０１０８】
実際には、データが完成し、演算値ＯＲと演算値ＯＯとが一致すること（入力データＩが確実に復元できたこと）を確認するまで回収依頼は停止していない方法を実現することが想定される。この方法はｄｏｕｂｔモードでの回収効率を改善するために有益であり、トラフィック量に余裕がある場合は回収レーテンシの短縮が実現できる。
【０１０９】
具体的には、ｄｏｕｂｔモードの不正データ排除手順Ｓ２０６では、図１２に示すステップＳ３１５、ステップＳ３１６、ステップＳ３１７及びステップＳ３１８を実行する。ステップＳ３１５では、演算値照合部２５は、分散用データ回収部２２に、分散用データＤｊを回収させる。分散用データ回収部２２は、図１１に示す分散用データ回収手順Ｓ２０２と同様に、分散用データＤ１〜ＤＮを回収する。このとき、分散用データＤ１〜ＤＮを揃える予め定められた個数は、２以上の数であり、奇数であることが好ましい。
【０１１０】
ステップＳ３１６では、分散用データ回収部２２は、データピースＰｊを回収するために２つの分散用データＤｊを回収した後、２つの分散用データＤｊのデータピースＰｊを比較し、同一であれば一方の分散用データＤｊをデータ結合部２３へ出力する。２つの分散用データＤｊが同一でない場合は更に３つめの回収を行い、多数決ロジックにより復元に使用する分散用データＤｊを特定してデータ結合部２３へ出力する。これを各分散用データＤ１〜ＤＮについて行う。
【０１１１】
ステップＳ３１７では、データ結合部２３が、分散用データ回収部２２の出力する分散用データＤ１〜ＤＮを用いてデータピースＰ１〜ＰＮを結合する。そして、データ復元部２４がデータ結合部２３からの結合データＢを復元する。そして、演算値照合部２５が、データ復元部２４からの復元データＲの演算値ＯＲと入力データＩ自体の演算値ＯＯを照合する。そして、演算値ＯＲと演算値ＯＯとが一致すれば、演算値照合部２５は、復元データＲを入力データＩとして出力し、分散用データＤ１〜ＤＮの回収を終了する。
【０１１２】
上記の方法を用いた場合でも、復元ができない時には、分散用データ回収部２２の回収する分散用データＤｊの数を２つ単位で増やし、例えば、５個回収したり、７個回収したり等の、回収数を増やす動作を実施し、多数決ロジックで正しいデータの特定を試みる方法を用いることが好ましい。
【０１１３】
なお、演算値ＯＲと演算値ＯＯとが一致し、入力データＩが復元できた場合は、誤ったデータを回収したクライアント３ｉが特定できるため、このクライアント３ｉは以後は、システムから除外し、当該クライアント３ｉが担当していた分散用データは、改めて他の冗長保管先から複製を行う。この際は、２以上の保管先から同一データを回収し比較を行うことにより、悪意ある異常データがシステム内に固定されることを防ぐことが可能である。
【０１１４】
システムに悪意あるアクセスを行うクライアントがあった場合、冗長保管された分散用データＤｊを利用し、これを効率的に排除することができる。
【０１１５】
（実施形態５）
本実施形態に係るデータ分散保管システムは、実施形態１で説明したサーバ分散用データ送受信部１７がデータを配信するにあたり、配信先をランダムに決定するか、又は生成順に配布する最もシンプルな方法などの動作を実施するために、二種類以上の配信先決定ロジックを有する。
【０１１６】
配信先をランダムに決定する場合、例えば、データピースＰ１〜ＰＮから演算される演算値ＯＰ１〜ＯＰＮを基準として送信先のクライアント３１〜３Ｍを決定する方法である。送信先の決定方法には各種の演算が実施可能であるが、入力データＩの偏りに影響されないハッシュ値のようなダイジェスト値を用いる方法は、本方式に適用可能な演算方法の一例である。この場合には、分割されたデータピースＰ１〜ＰＮの一部もしくは全体から演算値を算出し、同様にアクセスしてくるクライアント３１〜３Ｍの識別子ＩＤ１〜ＩＤＭの演算値と比較して、この演算値が一致した場合、もしくは一定範囲で合致するに送信対象とすることができる。この仕組みにより、回収する分散用データＤ１〜ＤＮが一時的に大量に発生した場合、クライアント３ｉへの回収指示コマンド内の回収データリストが膨大になることを避ける事ができる。
【０１１７】
なおクライアント３ｉがある程度大量に存在しないと送信効率が低下する場合があるため、小規模なシステムでは演算値の範囲を拡大したり縮小することも可能である。
【０１１８】
生成順に配布する最もシンプルな方法などの動作を実施する場合、例えば、サーバ分散用データ送受信部１７は、クライアント３ｉのアクセス頻度（平均インターバル）と提供するデータ容量、平均通信速度、および過去の回収確率から決定される信頼性パラメータで端末群をグループ分けし、保管すべきデータピースＰ１〜ＰＮの種類や信頼性に応じてグループを決定する方法が挙げられる。
【０１１９】
パラメータに多少の差異があるほか、信頼性パラメータには時系列の履歴情報が必要となるが、本方式においては、データ分散保管装置１Ａの処理を軽くするため、計算は、主として、クライアント３ｉ側で行う点が、大きく異なる特徴である。具体的にはＤＲＴアプリケーションが過去１４日間のアクセスインターバル、（アクセス回数÷１４日で計算されるものではなく、処理完了から次のアクセス開始までの時間の平均）、提供データ量（許容する最大データ量ではなく実際に保管しているデータ量）、保管する際の通信ビットレートの平均、データ回収の際の通信ビットレートの平均を記録し、データ分散保管装置１Ａのアクセスの際にこれらのパラメータを同時に送信する方法が可能である。また分散用データＤｊの回収確率については、データ分散保管装置１Ａ側でなければ算出することができないため、この値のみ、サーバ分散用データ送受信部１７が算出する方法が好ましい。
【０１２０】
ここで提供データ量については、許容する最大データ量ではなく、実際に保管しているデータ量とすることは、新しくシステムに参加したクライアントを“徐々に信頼する”仕組みとして有効である。この理由は、システムに参加した当初は保管している分散用データがないため、アクセス頻度が高く、通信レートが高くとも信頼性パラメータは低く、信頼性が保管端末の属性だけで決定されず、実績を反映することになるためである。
【０１２１】
サーバ分散用データ送受信部１７はこれらのデータを受取り、データ分散保管装置１Ａ側で記録しているデータ回収確率と併せて保管し、次の送信の決定要素として使用することができる。
【０１２２】
サーバ分散用データ送受信部１７は平均アクセスインターバルおよび通信ビットレートの情報からクライアント毎のデータ回収のための平均所要時間が計算できるため、不確定になりがちな回収のための所要時間を、ある程度の範囲に縮減する事ができるようになる。また逆に、ある程度不確定で良いデータについては、所要時間が大きくなるクライアントへ送信し、システムとしてデータ種類や、サービス品質に応じた調整が可能となる。
【０１２３】
これらの２つは組み合わせて、もしくはどちらかのみでの運用も可能で、比較的小規模なシステムでは後者のグルーピングのみを採用したり、クライアントの稼働がある程度保障されている社内のイントラネット環境などでは前者の演算値ベースの送信のみを採用したりすることができる。更に、データピースの演算値で配信先をグループ化することで、後のデータ回収時の通信効率を改善できる。
【０１２４】
（実施形態６）
本実施形態に係るデータ分散保管システムは、実施形態１で説明したサーバ分散用データ送受信部１７が、各クライアント３１〜３Ｍの各種情報を用いて保管の冗長度を決定するためにも用いる。
【０１２５】
ほぼ同様なパラメータを持つクライアントのグループで、例えば４冗長（同一のデータを４カ所に保管する）の場合、各クライアントのアクセス間隔（アクセスインターバル）Ｔｉが同一であり、４つのクライアントが非同期に動作している場合、回収するデータの通信時間を簡単のため０とすれば、期待される平均回収時間はインターバルの半分を更に台数で割った値、すなわちＴｉ／８となる。これを基準とし、平均回収時間がある閾値を超えた場合、有効な冗長分散がなされていないと判断し、冗長度を上げる必要があると判断する。本システムでは、例えば閾値として、１．８倍を採用することが考えられる。これは実動作において冗長度が低い場合に平均回収時間がインターバル時間に相当する程度（二倍弱）となる場合があるためで、この日常的に起こりうる最悪値の近傍を閾値とする方法が望ましい。
【０１２６】
また十分な実保管容量が確保できる場合は上限と下限を設定した上で冗長度の自動的な増減を行う方法が好ましい。
【０１２７】
なおクライアント側では、前記の期待しない同期動作を避けるため、起動後、最初の待ち時間は、設定された待ち時間を最大とするランダムな待ち時間とする方法をとることができる。これにより同一の分散用データを保管する複数のクライアントが、最短時間でデータ分散保管装置の回収指示に対応できるようになる。この理由は、複数のクライアントが同期して動作する場合、平均回収時間はインターバルの半分となってしまうためであり、各クライアントはランダムにアクセスを行うことが、データ分散保管装置１Ｂが回収すべきデータの発生後、最も短い時間でアクセスを受けることになるからである。
【０１２８】
なお、不特定多数のクライアントが参加するシステムにおいては、ある程度容量属性を抽象化する必要があるが、これは実施形態５で説明したグループ化の際に属性として付与することができる。
【０１２９】
（実施形態７）
実施形態１で説明したデータ分散保管システムにおいて分散用データＤ１〜ＤＮを分散して保管するにあたり、その処理の時系列の情報（メタデータＭ）はブロック暗号化のパスワードに相当する重要なデータである。一体化処理と分割の前後でブロック暗号化を行うことも可能であり、その場合もメタデータにパスワードが含まれることが想定される。
【０１３０】
従来の方式では、このメタデータは他の専用の管理装置に保管され運用される。この際、メタデータの損失に備え分散して保管する方法もあり、またメタデータ自体を冗長保管するような運用も考えられる。
【０１３１】
メタデータをデータ分散保管装置１Ａ内で保持する方法も想定できるが、この場合、メタデータを通信しないため、セキュリティ上は望ましい形となる。しかしながら、データ分散保管装置１Ａの故障時にはメタデータＭが失われる可能性があり、この場合、分散して保管した分散用データＤ１〜ＤＮが復元できなくなる可能性を回避する仕組みが必要である。
【０１３２】
また異なったデータ分散保管装置１Ｂがクライアント３１〜３Ｍからデータを回収する場合、このメタデータＭを共有する必要がある。もしデータ分散保管装置１Ｂが外部ネットワークに存在した場合は、このメタデータＭがインターネット等のネットワーク上で通信されることになり、セキュリティ上は、推奨できない運用法となる可能性がある。
【０１３３】
まずデータ分散保管装置１ＡのメタデータＭを保管する場合、データ分散保管装置１Ａのハードウェア故障を想定し、必ず物理的に他のハードウェアにメタデータＭを保管する方法が好ましい。本方式では、二台以上のデータ分散保管装置１Ａ，１Ｂを設置することにより、メタデータＭの損失を回避する仕組みを用いる方法が好ましい。従来方式は、秘密分散方式などで管理装置を冗長化しているが、データ分散保管装置１Ａ，１Ｂを複数設置することにより、メタデータＭを相互に保持し冗長性を持たせ、また専用の管理装置を不要とすることで管理装置自体の冗長性を確保する必要性を、排除することが可能である。
【０１３４】
具体的には、データ分散保管装置１Ａとデータ分散保管装置１Ｂが近傍で動作している場合、データ分散保管装置１Ａが処理したデータのメタデータＭをデータ分散保管装置１Ｂにも保管する。例えば、メタデータをＳＱＬのデータベースに登録し、他方のデータ分散保管装置へのメタデータ登録と自データ分散保管装置への登録を行ったのち、実ファイルを削除対象とする方法をとることが好ましい。
【０１３５】
また大規模なシステムにおいて複数のデータ分散保管装置１Ａ，１Ｂを設置する場合は、各データ分散保管装置１Ａ，１Ｂを論理的にリング状に配置し、右回りで次のデータ分散保管装置１Ｂに自データ分散保管装置１Ａのメタデータを登録する方法も可能である。これはｈｔｔｐ：／／ｗｗｗ８．ｏｒｇ／ｗ８−ｐａｐｅｒｓ／２ａ−ｗｅｂｓｅｒｖｅｒ／ｃａｃｈｉｎｇ／ｐａｐｅｒ２．ｈｔｍｌ  に示されるように、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇと呼ばれる手法である。一般的にｗｅｂのキャッシュに使われている手法であるが、本方式ではこれを分散保管のために活用することが可能である。
【０１３６】
スケーラビリティやダイナミックな構成変更を伴わないシステムであれば、こうした手法を用いない実装も可能である。以下にこの方式を採用した場合の新たな工夫と実現手段を述べる。具体的にはｗｅｂキャッシュの用途においては、キャッシュが追加された際のキャッシュアウトを回避するために用いられるが、保管の場合にはキャッシュとしての使用と異なり、ヒットしないことは許容されず、キャッシュアウトに相当するデータの損失は一時的なトラフィック増加にとどまらないことが大きな問題となる可能性がある。そのため、データ分散保管装置追加時ではなくデータ分散保管装置削除時の処理に新たな工夫が必要となる。また冗長保管を行う為の工夫も、新たな手段として追加する必要がある。
【０１３７】
以下に具体的な実現例を述べる。
まず保管すべき入力データＩは演算値ＯＩとしてハッシュ値を計算され、ハッシュ値に応じたデータ分散保管装置１Ｂがこれを担当する。ハッシュ値は、例えば３２ビット値で３２ビットの数値空間に存在するそれぞれのデータ分散保管装置アドレスを２５６個づつ登録している場合を想定する。保管すべきデータから計算されたハッシュ値より小さいもっとも近傍なポイントに登録されているデータ分散保管装置１Ｂがこのデータの処理を担当する。このデータ分散保管装置１Ｂは保管データを処理した後、リング上の右隣へこのデータを冗長保管する。
【０１３８】
システムにデータ分散保管装置を追加する場合は、３２ビットの数値空間に同様に２５６のポイントを追加し、動作を開始する。この仕組みによりデータ分散保管装置の追加直後から全てのデータ分散保管装置へ均等に作業を分散させることが可能となる。
【０１３９】
更に、システムからデータ分散保管装置を減らす場合は、当該データ分散保管装置のポイントを３２ビットの数値空間上から削除し、新たなリングで計算した次のデータ分散保管装置の、また次のデータ分散保管装置に、所有しているメタデータのデータベースを移管する方法が好ましい。このとき、次のデータ分散保管装置は既に自分のＤＢのコピーを持っている。
【０１４０】
この仕組みによりデータ分散保管装置削除後も他のデータ分散保管装置に再設定することなく、システムの運用が継続できる。
【０１４１】
次に外部のデータ分散保管装置１Ｂがクライアント３ｉのデータを取り出す場合の仕組みをのべる。外部ネットワークのデータ分散保管装置１Ｂは、通常は、上記の相互メタデータ順次冗長保管方式は使用できない場合が想定される。外部ネットワークではデータ分散保管装置間の通信を物理的に保護することが難しいためである。よって十分な暗号化を施して共有し、メタデータＭ自体はネットワーク上では、通信しない仕組みが好ましい。
【０１４２】
メタデータＭは、一種の共通鍵暗号化の共通キーに相当するため、これを交換、共有する仕組みとしては、ＣＨＡＰ、もしくはＤＨ法による鍵交換手法（公開鍵暗号）などが、使用可能である。しかし、メタデータはファイルやフォルダなど暗号化単位毎に異なり、これを類推できないため、チャレンジ演算ができない（データ分散保管装置側へダイジェスト値を送る事ができない）ため、ＣＨＡＰなどの手法は使用できない。またＤＨ法では生成される共通キーはランダムであるためメタデータとはできない。そこで、ＤＨ法を利用して取得するファイル毎に共通キーを生成し、その共通キーで交換する情報を暗号化する方法などが好ましい。
【０１４３】
データ分散保管装置１Ａは対象ファイルのメタデータＭを所有しており、データ分散保管装置１Ｂは所有していない。ここでデータ分散保管装置１Ｂは必要な入力データＩの演算値ＯＩからデータ分散保管装置１Ａがこの入力データＩのメタデータＭを所有していることを知る。これは前記のＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇの手法に該当する。
【０１４４】
データ分散保管装置１Ｂは乱数を秘密キーとしてデータ分散保管装置１Ａとの間に共通キーを生成する。これはＤＨ法による共通キー生成の手法を応用したものである。データ分散保管装置１Ｂは共通キーで暗号化した取得ファイル情報をデータ分散保管装置１Ａに送る。この際の暗号化は軽量である必要はないため、さまざまな選択肢がある。例えばファイル識別のための文字列に共通キーを用いたＡＥＳ暗号化や、文字列に共通キーをＸＯＲした上で６回の一体化処理を行った上でＡＥＳ暗号化を施す方法が考えられる。更にＲＡＤＩＵＳなどのホスト認証の仕組みをこれに組み合わせることで、より、守秘性能が向上する。
【０１４５】
データ分散保管装置１Ａはデータ分散保管装置１Ｂが要求するファイルのメタデータＭを同様な暗号化を施して送信する。データ分散保管装置１Ｂは取得したメタデータに従い、ネットワーク上に分散している分散用データＤ１〜ＤＮを回収する。
【０１４６】
この方法はデータ分散保管装置１Ｂが能動的に配信を行う場合、すなわちデータ分散保管装置１Ｂがクライアント３１〜３Ｍを特定して、アクセス可能な場合に実現可能な方法であり、クライアント３１〜３Ｍを起点としたアクセスを前提とする場合には実現が困難であった。
【０１４７】
以下に、クライアントを起点としたアクセスを行う場合の拡張方法を述べる。まずメタデータＭを保管しないデータ分散保管装置１Ｂは、メタデータＭを保管するデータ分散保管装置１Ａに回収したいデータを申告する。メタデータＭをデータ分散保管装置１Ａから受け取るところまでは前述の手法と同じである。
【０１４８】
このあとデータ分散保管装置１Ａは申告されたデータを持つと思われるクライアント３１〜３Ｍからのアクセスを受け付けた後、データ分散保管装置１Ｂへアクセスする旨の指示を行う。クライアント３１〜３Ｍはデータ分散保管装置１Ｂにアクセスし、回収すべき分散用データＤ１〜ＤＮがあるかどうかを確認する。
【０１４９】
データ分散保管装置１Ｂは回収データについて通常と同様の手順でクライアント３１〜３Ｍと通信を行う。データ分散保管装置１Ｂはデータを回収後、データ分散保管装置１Ａに回収完了を通知する。データ分散保管装置１Ａはデータ分散保管装置１Ｂから回収完了が通知されるか、もしくは規定時間経過後にデータ分散保管装置１Ｂへの再アクセス指示をとりやめる。
【０１５０】
この方法によりクライアント起点（プル型）の保管システムであっても異なったデータ分散保管装置がデータを回収することが可能となる。このように、複数のデータ分散保管装置が存在する場合、相互に管理情報を保管する仕組みにより専用の管理装置を不要とし、運用コスト、設備コストを低減することができる。また上記の相互保管方法に工夫を行ったことでスケーラビリティを確保し、規模の増減に容易に対応することができる。加えて遠隔地にある複数のデータ分散保管装置が分散された同一のデータを回収する仕組みをＤＨ法を応用して実装し、これを安全に行うことを可能とした。
【０１５１】
（実施形態８）
実施形態１から７に係るデータ分散保管システムは、通信ネットワーク上のデータ分散保管装置１Ａ及び１Ｂを検索する検索サーバ（不図示）をさらに備えていてもよい。
【０１５２】
検索サーバ（不図示）は、クライアント３ｉから検索の依頼を受けると、登録されているデータ分散保管装置の中からランダムにひとつを選択し、これをクライアント３ｉに通知する。通信すべきデータ分散保管装置を決定されたクライアント３ｉの動作はデータ分散保管装置１Ａを指定して保管する場合と同様である。
【０１５３】
クライアント３ｉが検索サーバ（不図示）にデータ分散保管装置１Ａを指定した場合、クライアント３ｉは、指定したデータ分散保管装置１Ａの分散用データＤｊを保管する。
【０１５４】
クライアント３ｉが検索サーバ（不図示）にデータ分散保管装置１Ａを指定しない場合、クライアント３ｉは、インターネット等の通信ネットワーク上の任意のデータ分散保管装置からの分散用データＤｊを保管する。この場合は、通信ネットワーク上のデータ分散保管装置を検索する検索サーバ（不図示）へアクセスし、分散用データを有するデータ分散保管装置（不図示）を検索してアクセスすることになる。
【産業上の利用可能性】
【０１５５】
本発明は、情報通信産業に適用することができる。
【符号の説明】
【０１５６】
１Ａ、１Ｂ：データ分散保管装置
３１、３２、３３、３ｉ、３ｉ＋１、３Ｍ：クライアント
１１：データ変更部
１２：データ分割部
１３：演算値算出部
１４：メタデータ格納部
１５：分散用データ構成部
１６：分散用データ格納部
１７：サーバ分散用データ送受信部
１８：パリティ演算部
１９：メタデータ収集部
２１：メタデータ取得部
２２：分散用データ回収部
２３：データ結合部
２４：データ復元部
２５：演算値照合部
３１：分散用データ取得部
３２：分散用データ格納部
３３：クライアント分散用データ送受信部
【図１】
0005594828.tif 000002
【図２】
0005594828.tif 000003
【図３】
0005594828.tif 000004
【図４】
0005594828.tif 000005
【図５】
0005594828.tif 000006
【図６】
0005594828.tif 000007
【図７】
0005594828.tif 000008
【図８】
0005594828.tif 000009
【図９】
0005594828.tif 000010
【図１０】
0005594828.tif 000011
【図１１】
0005594828.tif 000012
【図１２】
0005594828.tif 000013