(57)【特許請求の範囲】
【請求項１】
データの記憶方法であって、
前記データを複数の第１レベルデータサブセットに分割することで第１レベルクラスタを生成するステップと、
前記複数の第１レベルデータサブセットから第１レベルパリティデータを生成するステップであって、前記複数の第１レベルデータサブセットのうちの各々の第１レベルデータサブセットが、前記複数の第１レベルデータサブセットのうちの他の第１レベルデータサブセットと前記第１レベルパリティデータとから再生成されるようにするステップであって、前記複数の第１レベルデータサブセットと前記第１レベルパリティデータとは第１レベルクラスタを形成するステップと、
前記第１レベルクラスタの形成に続き、前記第１レベルクラスタ内の前記複数の第１レベルデータサブセット及び前記第１レベルパリティデータを複数の第２レベルデータサブセットに分割することにより第２レベルクラスタを形成するステップであって、前記複数の第２レベルデータサブセット内の第２レベルデータサブセットの数は前記第１レベルクラスタ内の第１レベルデータサブセットの数よりも多い、ステップと、
前記複数の第２レベルデータサブセットから第２レベルパリティデータを生成することで、前記複数の第２レベルデータサブセット内の各第２レベルデータサブセットが前記複数の第２レベルデータサブセットのうちの他の第２レベルデータサブセットと当該第２レベルパリティデータとから再生成されるようにするステップであって、前記複数の第２レベルデータサブセットと当該第２レベルパリティデータとは第２レベルクラスタを形成するステップと、
前記第２レベルクラスタの形成に続き、前記複数の第２レベルデータサブセット内の前記各第２レベルデータサブセットと前記各第２レベルパリティデータを、異なる、物理的に別々の記憶場所に記憶するステップであって、前記物理的に別々の記憶場所は、相互に遠隔の位置にあり且つ外部ネットワークを介してアクセスされる異なる複数の種類の記憶媒体に位置している、ステップと、
複数の追加の記憶場所を設けるステップと、
前記複数の追加の記憶場所が設けられるのに伴って、
前記第２レベルクラスタ内の前記第２レベルデータサブセットのうちの１つ又は複数を、複数の更なるデータサブセットに分割するステップと、
前記複数の更なるデータサブセットから更なるパリティデータを生成することで、前記複数の更なるデータサブセット内の更なるデータサブセットが前記複数の更なるデータサブセットのうちの他の更なるデータサブセットと前記更なるパリティデータとから再生成されるようにするステップと、
前記更なるデータサブセットとの各々と前記更なるパリティデータとを前記複数の追加の記憶場所に記憶するステップであって、前記複数の追加の記憶場所は物理的に別々であり且つ相互に遠隔の位置にあり且つ外部ネットワークを介してアクセスされる、ステップと、を含む方法。
【請求項２】
請求項１に記載の方法であって、前記データを暗号化するステップを更に含む方法。
【請求項３】
請求項１〜２のいずれか１項に記載の方法であって、前記データはウェブページである、方法。
【請求項４】
請求項１〜３のいずれか１項に記載の方法であって、
１つ又は複数の対応する認証コードを生成するために、前記複数の第２レベルデータサブセット及び前記第２レベルパリティデータ、又は、前記複数の更なるデータサブセット及び前記更なるパリティデータ、のうちの１つ又は複数に関数を適用するステップ、
を更に含む方法。
【請求項５】
請求項４に記載の方法であって、前記関数はハッシュ関数である、方法。
【請求項６】
請求項４又は５に記載の方法であって、前記１つ又は複数の対応する認証コードのうちの１つの認証コードを前記複数の第２レベルデータサブセット又は前記第２レベルパリティデータ、又は、前記複数の更なるデータサブセット及び前記更なるパリティデータ、のうちの少なくとも１つと共に記憶するステップ、を更に含み、前記１つ又は複数の対応する認証コードのうちの前記１つの認証コードは、前記複数の第２レベルデータサブセット又は前記第２レベルパリティデータ、又は、前記複数の更なるデータサブセット及び前記更なるパリティデータ、のうちの前記少なくとも１つと対応づけられている、方法。
【請求項７】
物理的に別々の記憶場所に記憶されたデータを検索する方法であって、
請求項１に記載の方法に従って前記物理的に別々の記憶場所に記憶された第２レベルデータサブセット及び第２レベルパリティデータ、並びに更なるデータサブセット及び更なるパリティデータ、を回収するステップであって、前記物理的に別々の記憶場所は相互に遠隔の位置にあり且つ外部ネットワークを介してアクセスされる異なる複数の種類の記憶媒体に位置していることを特徴とする、ステップと、
失われた更なるデータサブセットがあれば、前記回収された複数の更なるデータサブセット及び更なるパリティデータから、その失われた更なるデータサブセットを再生成することで、再生成された更なるデータサブセットを形成するステップと、
前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより、第２レベルデータサブセットを形成するステップと、
失われた第２レベルデータサブセットがあれば、前記回収された複数の第２レベルデータサブセット及び第２レベルパリティデータから、その失われた第２レベルデータサブセットを再生成することで、再生成された第２レベルデータサブセットを形成するステップであって、前記回収された複数の第２レベルデータサブセット及び第２レベルパリティデータ並びに再生成された第２レベルデータサブセットは第２レベルクラスタを形成する、ステップと、
前記第２レベルクラスタの形成に続き、前記第２レベルデータサブセットと再生成された第２レベルデータサブセットとを組み合わせることにより、複数の第１レベルデータサブセット及び第１レベルパリティデータを形成するステップと、
失われた第１レベルデータサブセットがあれば、前記複数の第１レベルデータサブセット及び前記第１レベルパリティデータから、その失われた第１レベルデータサブセットを再生成することにより、再生成された第１レベルデータサブセットを形成するステップであって、前記複数の第１レベルデータサブセット、第１レベルパリティデータ、及び再生された第１レベルデータサブセットは前記第１レベルクラスタを形成する、ステップと、
前記第１レベルクラスタの形成に続き、前記第１レベルデータサブセットと再生成された第１レベルデータサブセットとを組み合わせることにより元のデータセットを形成するステップと、
を含む方法。
【請求項８】
請求項７に記載の方法であって、前記元のデータセットは暗号化されており、前記方法は更に、
前記元のデータセットを復号するステップ、
を含む、方法。
【請求項９】
請求項７又は８に記載の方法であって、前記物理的に別々の記憶場所の位置情報を受信するステップを更に含む、方法。
【請求項１０】
請求項７〜９のいずれか１項に記載の方法であって、
前記第２レベルデータサブセット及び第２レベルパリティデータ、又は、前記更なるデータサブセット又は更なるパリティデータ、のうちの１つ又は複数に対応づけられた認証コードを回収するステップと、
前記対応づけられた認証コードを用いて、前記第２レベルデータサブセット及び第２レベルパリティデータ、又は、前記更なるデータサブセット又は更なるパリティデータ、のうちの１つ又は複数を認証するステップと、
認証に合格しなかった第２レベルデータサブセットがあれば、その合格しなかった第２レベルデータサブセットを、前記回収された第２レベルデータサブセット及び第２レベルパリティデータから再生成することにより、再生成された第２レベルデータサブセットを形成するか、又は、認証に合格しなかった更なるデータサブセットがあれば、その合格しなかった更なるデータサブセットを、前記回収された更なるデータサブセット及び更なるパリティデータから再生成することにより、再生成された更なるデータサブセットを形成する、ステップと、
を更に含む、方法。
【請求項１１】
請求項１０に記載の方法であって、前記認証コードはハッシュコードであり、前記認証ステップは、前記データサブセット及び／又はパリティデータに対してハッシュ関数を適用することにより比較用ハッシュコードを生成するステップと、この比較用ハッシュコードを、前記データサブセット及び／又はパリティデータに対応づけられた認証コードと比較するステップと、を含む方法。
【請求項１２】
データを記憶するための装置であって、
前記データを複数の第１レベルデータサブセットに分割することで第１レベルクラスタを生成し、
前記複数の第１レベルデータサブセットから第１レベルパリティデータを生成することで、前記複数の第１レベルデータサブセットのうちの各第１レベルデータサブセットが、前記複数の第１レベルデータサブセットのうちの他の第１レベルデータサブセットと前記第１レベルパリティデータとから再生成されるようにし、前記複数の第１レベルデータサブセットと前記第１レベルパリティデータとは第１レベルクラスタを形成し、
前記第１レベルクラスタの形成に続き、前記第１レベルクラスタ内の前記複数の第１レベルデータサブセット及び前記第１レベルパリティデータを複数の第２レベルデータサブセットに分割し、複数の第２レベルデータサブセット内の第２レベルデータサブセットの数は前記第１レベルクラスタ内の第１レベルデータサブセットの数よりも多く、
前記複数の第２レベルデータサブセットから第２レベルパリティデータを生成することで、前記複数の第２レベルデータサブセット内の各第２レベルデータサブセットが前記複数の第２レベルデータサブセットのうちの他の第２レベルデータサブセットと当該第２レベルパリティデータとから再生成されるようにし、前記複数の第２レベルデータサブセットと当該第２レベルパリティデータとは第２レベルクラスタを形成し、
前記第２レベルクラスタの形成に続き、前記複数のデータサブセットとパリティデータとを物理的に別々の記憶場所に記憶し、前記物理的に別々の記憶場所は相互に遠隔の位置にあり且つ外部ネットワークを介してアクセスされる異なる複数の種類の記憶媒体に位置しており、
複数の追加の記憶場所を識別し、
前記複数の追加の記憶場所が識別されるのに伴って、
前記第２レベルクラスタ内の前記第２レベルデータサブセットのうちの１つ又は複数を、複数の更なるデータサブセットに分割し、
前記複数の更なるデータサブセットから更なるパリティデータを生成することで、前記複数の更なるデータサブセット内の更なるデータサブセットが前記複数の更なるデータサブセットのうちの他の更なるデータサブセットと前記更なるパリティデータとから再生成されるようにし、
前記更なるデータサブセットとの各々と前記更なるパリティデータを前記複数の追加の記憶場所に記憶するステップであって、前記複数の追加の記憶場所は物理的に別々であり且つ相互に遠隔の位置にあり且つ外部ネットワークを介してアクセスされる、
ように構成されたプロセッサ、を備える、装置。
【請求項１３】
請求項１２に記載の装置であって、前記プロセッサは、更に、１つ又は複数の対応する認証コードを生成するために、前記複数の第２レベルデータサブセット又は前記第２レベルパリティデータのうちの１つ以上のものに関数を適用するように構成されており、前記複数のデータサブセット又は前記パリティデータのうちの前記１つ以上のものが、対応する認証コードと共に記憶されるよう構成されている、装置。
【請求項１４】
請求項１に記載の方法に従って物理的に別々の記憶場所に記憶されたデータを検索するための装置であって、
相互に遠隔の位置にあり且つ外部ネットワークを介してアクセスされる異なる複数の種類の記憶媒体である前記物理的に別々の記憶場所から複数の第２レベルデータサブセット及び第２レベルパリティデータ並びに更なるデータサブセット及び更なるパリティデータ、を回収し、
失われた更なるデータサブセットがあれば、前記回収された複数の更なるデータサブセット及び更なるパリティデータから、その失われた更なるデータサブセット再生成することで、再生成された更なるデータサブセットを形成し、
前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより、第２レベルデータサブセットを形成し、
失われた第２レベルデータサブセットがあれば、前記回収された複数の第２レベルデータサブセット及び第２レベルパリティデータから、その失われた第２レベルデータサブセットを再生成することで、再生成された第２レベルデータサブセットを形成し、前記回収された複数の第２レベルデータサブセット及び第２レベルパリティデータ並びに再生成された第２レベルデータサブセットは第２レベルクラスタを形成し、
前記第２レベルクラスタの形成に続き、前記第２レベルデータサブセットと前記再生成された第２レベルデータサブセットとを組み合わせることにより、複数の第１レベルデータサブセット及び第１レベルパリティデータを形成し、
失われた第１レベルデータサブセットがあれば、前記複数の第１レベルデータサブセット及び前記第１レベルパリティデータから、その失われた第１レベルデータサブセットを再生成することにより、再生成された第１レベルデータサブセットを形成し、前記複数の第１レベルデータサブセット、第１レベルパリティデータ、及び再生された第１レベルデータサブセットは第１レベルクラスタを形成し、
前記第１レベルクラスタの形成に続き、前記第１レベルデータサブセットと再生成された第１レベルデータサブセットとを組み合わせることにより元のデータセットを形成する、
ように構成されたプロセッサを備える、装置。
【請求項１５】
請求項１４に記載の装置であって、前記プロセッサは、更に、前記第２レベルデータサブセット及び第２レベルパリティデータ又は、前記更なるデータサブセット又は更なるパリティデータ、のうちの１つ又は複数に対応づけられた認証コードを回収し、
前記対応づけられた認証コードを用いて、前記第２レベルデータサブセット及び第２レベルパリティデータ、又は、前記更なるデータサブセット又は更なるパリティデータ、のうちの１つ又は複数を認証し、
認証に合格しなかった第２レベルデータサブセットがあれば、その合格しなかった第２レベルデータサブセットを、前記回収された第２レベルデータサブセット及び第２レベルパリティデータから再生成することにより、再生成された第２レベルデータサブセットを形成するか、又は、認証に合格しなかった更なるデータサブセットがあれば、その合格しなかった更なるデータサブセットを、前記回収された更なるデータサブセット及び更なるパリティデータから再生成することにより、再生成された更なるデータサブセットを形成する、
よう構成されている、装置。
【請求項１６】
請求項１〜６のいずれか１項に記載の方法であって、前記第２レベルパリティデータは、前記複数の第２レベルデータサブセットに対して、排他的論理和論理関数を実行することにより求められる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの記憶及び通信のための、特に、別々の格納場所にわたってデータを格納し、データを送信及び受信するための、方法及びシステムに関する。
【背景技術】
【０００２】
データは、例えば、多くの、異なる技術を用いて、コンピュータシステム内に格納される。デスクトップ又はラップトップコンピュータなどの個別のコンピュータシステムが盗難又は喪失すれば、そのコンピュータシステム上に記憶されたデータもまた失われ、悲惨な結果をもたらすことになる。データを別のドライブにバックアップすればデータを維持することができるが、それでも依然として機密的な情報が失われ、第三者に利用可能となってしまうかもしれない。全体的なシステムが紛失又は盗難していない場合でさえ、個別のディスクドライブ又は他の記憶装置が故障することにより、データが紛失し、同様の破滅的な結果をもたらすことがあるかも知れない。
【０００３】
ＲＡＩＤ(redundant array of inexpensive drives)アレイは、例えば、データを様々な条件下で記憶するように構成されている。ＲＡＩＤアレイは、ディスクミラーリングを用いると共に、追加のオプションのパリティディスクを用いることで、個々のディスクの故障に対する保護を行っている。しかし、ＲＡＩＤアレイは、それぞれあらかじめ定められた容量を持つ固定的な数のディスクを用いてあらかじめ構成しなければならない。ＲＡＩＤアレイの構成は、アレイを動的にリビルド（再構築）しないかぎり変更できず、このことは結果としてかなりのシステム停止時間に繋がるかも知れない。例えば、ＲＡＩＤアレイのスペースが足りなくなった場合には、更に長い停止時間なしでは、全体の容量を増大させるために追加のディスクを追加することはできないかもしれない。また、ＲＡＩＤアレイは、２つのディスク故障を容易に取り扱うことができず、別々のＲＡＩＤアレイは容易には結合できない。
【０００４】
ＲＡＩＤアレイを形成する複数のディスクはネットワークの異なる部分に位置していてもよいが、複数のディスクをこのように構成することは困難であり、複数のディスクを異なる場所に配置することは便利ではない。したがって、たとえＲＡＩＤアレイが１つ又は２つのディスク故障に対して障害許容力があったとしても、通常はディスク群が互いに近くに配置されているので、火事や洪水などの破滅的な事態が起こればＲＡＩＤアレイ内の全データの破壊を招く結果となる。
【０００５】
入れ子レベルＲＡＩＤ(nested level RAID)は、更なる故障ディスクへの障害許容力を改善するかも知れないが、これらのシステムは複雑、高価であり、アレイを再構築することなく拡張することはできない。
【０００６】
同様に、送信されたデータの部分は、特にノイズの多い、又はセキュア（安全）でない伝送路を経由することで、失われたり、破損したり、遮断されたりするかも知れない。
【０００７】
更に、現行のデータ記憶及び／又は送信方法及び装置は、破損やデータ消失を引き起こしがちである。低レベルの破損でさえ、データの質に影響するかも知れない。このことは、データが高品質のオーディオ又はヴィジュアル資料を記録するのに用いられる場合に特にそのようである。破損は受け取った媒体からの再生中の品質に歪みや損失をもたらし得るからである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】欧州特許出願公開第０５２１６３０号明細書
【特許文献２】米国特許出願公開第２００２／１２４１３９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
このように、これらの問題を克服するデータのための記憶方法及びシステムが求められる。
【課題を解決するための手段】
【００１０】
本発明の１つの側面によれば、データの記憶方法であって、ａ）前記データを複数のデータサブセットに分割するステップと、ｂ）前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの１つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、ｃ）前記複数のデータサブセット及び前記パリティデータの各々に対してステップａ及びｂを繰り返し、更なるデータサブセットと更なるパリティデータとを生成するステップと、ｄ）前記更なるデータサブセットと前記更なるパリティデータとを別々の記憶場所に記憶するステップと、を含む方法が提供される。このように、データが再帰的に分割され、別々のデータサブセット及びパリティデータとしていくつかの別々の記憶場所に分散される。元のデータセットは複数のサブセットに分割される。パリティデータセットは、それらサブセットから生成される。パリティデータセットは、いずれかのデータセットが紛失又は破損した場合に、そのようなデータセットを再生成するためのメカニズムを提供する。元のデータが必要とされる場合には、サブセットとパリティデータとが、その元のデータを再生成するのに寄与してもよい。パリティデータサブセットのみが失われた場合には、何の処理も必要ではなく、元のデータは維持される。どのサブセットも失われなかった場合も、何の処理も必要ではない。処理は続行され、サブセット及びパリティデータセットのいずれかが同様の方法で再び分割され、更なるパリティデータが生成される。これにより、データサブセットのカスケード（段階的に分割されたデータサブセット群）が形成され、それらデータサブセットを一緒に戻すことで元のデータが形成される。もし、データのサブセットのいずれかが失われた場合、失われたサブセットは、前述のカスケードにおける特定のレベルにある残りのサブセットとパリティデータとから再生成してもよい。このように、カスケードは動的に成長することができ、事前に定めておく必要はない。データの各サブセット又はパリティデータは、別々に、例えば、ディスクドライブ上の隣り合う複数のセクションに、又は異なる組織又は地域にある別々のサーバに、記憶してもよい。また、実際の各々の記憶場所は、サイズ又は種類が異なっていてもよく、これにより記憶システムを更に柔軟にすることができる。
【００１１】
元のデータセットが再生成できるよう、各データサブセット及びパリティデータの場所を記録してもよい。このように、第三者は、個々のデータサブセットに対してアクセスしても、残りのデータサブセット群にアクセスしなければ、元のデータにアクセスすることはできないので、場所の情報（位置情報）を用いて元のデータに対するアクセスを制限することができる。
【００１２】
複数のデータサブセット及びパリティデータのうちの各々は、他のデータサブセット及びパリティデータとは別の記憶場所に記憶してもよい。しかし、２以上のデータサブセット又はパリティデータを１つの記憶場所に記憶してもよく、特に使用可能な記憶場所の数が限られている場合にはそうである。
【００１３】
好適には、前記更なるデータサブセットと前記更なるパリティデータとは物理的に別々の装置に記憶される。
【００１４】
好適には、前記ステップｃは前記複数のデータサブセット及び前記パリティデータの各々について繰り返される。これにより、データはより効率的に分散及びカスケード化され、データの損失や傍受に対する復元力が向上する。
【００１５】
また、必須ではないが、前記方法は、追加の記憶場所を設けるステップと、前記追加の記憶場所が設けられるのに伴って、前記ステップａ及びｂを、前記別々の記憶場所に記憶された前記更なるデータサブセット又は前記更なるパリティデータのいずれかについて繰り返すステップと、を更に含んでいてもよい。これにより、データのカスケードの動的な成長が可能になり、全体システムをリビルド（再構築）することなく、記憶容量を増大させることが可能になる。
【００１６】
好適には、データはバイトごとに分割される。しかし、ビットごと、あるいは異なるビット長ごとなどのような、異なる分割方法を用いてもよい。また、個々のデータサブセットのサイズが異なっていてもよい。
【００１７】
必須ではないが、前記データは２つのデータサブセットに分割してもよい。
【００１８】
必須ではないが、前記データは、当該データの偶数又は奇数のステータスに従って分割してもよい。
【００１９】
好適には、前記パリティデータは、前記複数のデータサブセットに対して論理関数を実行することにより生成してもよい。論理関数は、処理のための必要条件を少なくするように選べばよい。パリティデータの生成は論理関数に限られるわけではない。例えば、データの複製を用いてもよい。
【００２０】
好適には、前記論理関数は排他的論理和（ＸＯＲ）であってもよい。この関数（ＸＯＲ）は、必要とする処理オーバーヘッドが特に低く、このため効率を向上させることができる。更に、このような関数は、簡単なハードウエアを用いて実行することができる。
【００２１】
必須ではないが、前記方法は前記データを暗号化するステップを更に含んでいてもよい。これにより、セキュリティ及び／又はプライバシーが向上する。
【００２２】
必須ではないが、前記別々の記憶場所は、ハードディスクドライブ、光学ディスク、フラッシュＲＡＭ、ウェブサーバ、ＦＴＰサーバ、及びネットワークファイルサーバからなるグループから選ばれる。他の記憶媒体を用いてもよく、読み書きの場所に限られるわけではない。この方法は、使用される記憶装置の種類に依存するものではない。他の多くの記憶方式の種類及び記憶場所を用いることができる。
【００２３】
好適には、前記データはウェブページ又は個々のファイルである。ウェブページ又はウェブサイトは、よりセキュア（安全）に分散又はアクセスされ、盗聴又は他の形態の監視を少なくすることができる。例えば、個々のデータサブセットからは元のデータを生成し又は復元することはできない場合もある。最小限の量のデータサブセットが必要とされるようにしてもよい。すべてのデータサブセットにアクセスできる場合でさえ、例えば暗号化を用いたり、元のデータがどのように分割され生成されたかを示す詳細情報が必要になるようにしたりするなどにより、元のデータを復元する能力を制限してもよい。
【００２４】
必須ではないが、前記方法は、ｃ１）１つ又は複数の対応する認証コードを生成するために、前記複数のデータサブセット及び前記パリティデータのうちの１つ以上に関数を適用するステップ、を更に含んでいてもよい。
【００２５】
好適には、前記関数はハッシュ関数である。
【００２６】
必須ではないが、前記ハッシュ関数は、チェックサム、チェックディジット、フィンガープリント、ランダム化関数、誤り訂正符号、及び暗号学的ハッシュ関数からなるグループから選ばれる。
【００２７】
必須ではないが、前記認証コードは前記更なるデータサブセット及び／又はパリティデータと共に記憶される。
【００２８】
必須ではないが、前記認証コードはヘッダ情報として記憶される。
【００２９】
本発明の第２の側面では、別々の記憶場所に記憶されたデータを検索する方法であって、ａ）前記別々の記憶場所からデータサブセット及びパリティデータを回収するステップと、ｂ）前記回収されたデータサブセット及びパリティデータから、失われたデータサブセットを再生成することで、再生成されたデータサブセットを形成するステップと、
ｃ）前記データサブセットと前記再生成されたデータサブセットとを組み合わせることにより、複数の統合されたデータセットを形成するステップであって、前記複数の統合されたデータセットは、更なるデータサブセット及び更なるパリティデータを含むことを特徴とするステップと、ｄ）前記更なるデータサブセット及び前記更なるパリティデータから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成するステップと、ｅ）前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより元のデータセットを形成するステップと、を含む方法を提供する。
【００３０】
好適には、前記データサブセット及びパリティデータは、それぞれ物理的に別々の装置から回収される。このように、各データサブセットは、それぞれ自分自身の個別の記憶場所を、他のデータサブセットの記憶場所から遠隔（リモート）の位置に持っていてもよく、これによりセキュリティとデータの信頼性を向上させることができる。
【００３１】
必須ではないが、前記元のデータセットは暗号化されており、前記方法は更に、ｆ）前記元のデータセットを復号するステップ、を含んでいてもよい。
【００３２】
好適には、前記方法は、前記別々の記憶場所の位置情報を受信するステップを更に含んでいてもよい。これにより、アクセスが容易になり、また位置情報はアクセスを制限するのに用いてもよい。
【００３３】
好適には、前記別々の記憶場所は、ハードディスクドライブ、光学ディスク、フラッシュＲＡＭ、ウェブサーバ、ＦＴＰサーバ、及びネットワークファイルサーバからなるグループから選ばれた１つ又は複数のものである。
【００３４】
好適には、前記別々の記憶場所は、ネットワークを介してアクセス可能であってもよい。このネットワークは、内部ネットワークでも外部ネットワークでもよく、例えばインターネットであってもよい。
【００３５】
必須ではないが、前記方法は、前記データサブセット及びパリティデータのうちの１つ又は複数に対応づけられた認証コードを回収するステップと、前記対応づけられた認証コードを用いて、前記データサブセット及びパリティデータのうちの１つ又は複数を認証するステップと、認証に合格しなかったデータサブセットを、前記回収されたデータサブセット及びパリティデータから再生成することにより、再生成されてデータサブセットを形成するステップと、を更に含んでいてもよい。
【００３６】
必須ではないが、前記認証コードはハッシュコードであり、前記認証ステップは、前記データサブセット及び／又はパリティデータに対してハッシュ関数を適用することにより比較用ハッシュコードを生成するステップと、この比較用ハッシュコードを、前記データサブセット及び／又はパリティデータに対応づけられた認証コードと比較するステップと、を含んでいてもよい。
【００３７】
本発明の第３の側面では、データを記憶するための装置であって、ａ）前記データを複数のデータサブセットに分割し、ｂ）前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの１つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、ｃ）前記複数のデータサブセット及び前記パリティデータの各々に対して前記ａ及びｂを繰り返し、更なるデータサブセットと更なるパリティデータとを生成し、ｄ）前記更なるデータサブセットと前記更なるパリティデータとを別々の記憶場所に記憶する、ように構成されたプロセッサを備える、装置が提供される。
【００３８】
必須ではないが、前記プロセッサは、更に、１つ又は複数の対応する認証コードを生成するために、前記複数のデータサブセット及び前記パリティデータのいずれか１以上に関数を適用するように構成されており、前記更なるデータサブセットと前記更なるパリティデータは対応する認証コードと共に記憶されるよう構成されていてもよい。
【００３９】
本発明の第４の側面では、別々の記憶場所に記憶されたデータを検索するための装置であって、ａ）前記別々の記憶場所からデータサブセット及びパリティデータを回収し、ｂ）前記復元されたデータサブセット及びパリティデータから、失われたデータサブセットを再生成することで、再生成されたデータサブセットを形成し、ｃ）前記データサブセットと前記再生成されたデータサブセットとを組み合わせることにより、複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは、更なるデータサブセット及び更なるパリティデータを含み、ｄ）前記更なるデータサブセット及び前記更なるパリティデータから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成し、ｅ）前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより元のデータセットを形成する、ように構成されたプロセッサを備える、装置が提供される。
【００４０】
必須ではないが、前記プロセッサは、更に、前記データサブセット及びパリティデータのうちの１つ又は複数に対応づけられた認証コードを回収し、前記対応づけられた認証コードを用いて、前記データサブセット及びパリティデータのうちの１つ又は複数を認証し、認証に合格しなかったデータサブセットを、前記回収されたデータサブセット及びパリティデータから再生成することにより、再生成されてデータサブセットを形成する、よう構成されている。
【００４１】
本発明の第５の側面では、データファイルを記憶するためのデータ記憶媒体であって、データサブセットと、パリティデータと、認証コードとを含み、前記データサブセットは更なるデータサブセットを生成するために組み合わせ可能であり、前記更なるデータサブセットは前記データファイルを生成するために組み合わせ可能であり、前記認証コードにより前記データサブセットを認証することができ、前記パリティデータは、失われたデータサブセット又は認証に合格しなかったデータサブセットを再生成するために、前記データサブセットと組み合わせることができる、記憶媒体が提供される。
【００４２】
必須ではないが、前記データ記憶媒体はコンパクトディスク、ＤＶＤ、ハードディスクドライブ、ソリッドステートドライブ、フラッシュメモリ、及びデジタルテープからなるグループから選択してもよい。
【００４３】
必須ではないが、前記データファイルは、マルチメディアファイル、オーディオファイル、ビデオファイル、ＭＰＥＧファイル、ＭＰ３ファイル、音楽ファイル、データベース、及びバイナリファイルからなるグループの中から選択してもよい。
【００４４】
本発明の第６の側面では、データを送信する方法であって、ａ）前記データを分割して、複数のデータサブセットとして送信されるようにするステップと、ｂ）前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの１つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、ｃ）前記複数のデータサブセットとパリティデータとを送信するステップと、を含む方法が提供される。これにより、失われたデータが性生成できるので、データがよりセキュアに、且つより高い信頼性をもって送信されるようになる。更に、データが生成されるのに伴い、誤り率を低減するか、又は低い使用パワーにて似たような使用可能なデータレートを維持可能とするかにより、使用される通信チャンネルがよりよく利用される。
【００４５】
必須ではないが、前記送信するステップは、ｉ）前記複数のデータサブセット及び前記パリティデータの１以上に対してステップａ及びｂを繰り返し、更なるデータサブセットと更なるパリティデータとを生成するステップと、ｉｉ）前記更なるデータサブセットと前記更なるパリティデータとを送信するステップと、を含んでいてもよい。これにより信頼性とセキュリティが向上する。
【００４６】
必須ではないが、前記データサブセット及び前記パリティデータのいずれか又は全部が、異なる伝送手段を用いて送信されるようにしてもよい。
【００４７】
好適には、前記異なる伝送手段は、有線、無線、インターネットプロトコル、及びモバイル通信からなるグループから選ばれた１又は複数の手段であってよい。
【００４８】
好適には、前記データサブセットのいずれか又はすべてが、異なる複数のチャンネルを介して送信されてもよい。
【００４９】
好適には、前記チャンネルはモバイル通信チャンネルであってよい。これを携帯電話に実装することで、通信のセキュリティ及び信頼性を向上させてもよい。
【００５０】
必須ではないが、前記異なる複数のチャンネルは、異なる複数の無線周波数であってもよい。
【００５１】
好適には、前記異なる複数のチャンネルの選択はあらかじめ定められていてもよい。これにより、受信機がそのデータを正常に又はより容易に受信することが可能となる。
【００５２】
必須ではないが、前記方法は、前記異なる複数のチャンネルの選択結果を送信するステップを更に含んでいてもよい。
【００５３】
好適には、前記選択結果はコードとして送信してもよい。これは、ユーザに選択可能としてもよいし、自動的に実施してもよい。コードは、送信器及び受信機の間で知られたものでもよいし、それら両者の間でセキュアに送信してもよい。
【００５４】
必須ではないが、この方法は、前記データを暗号化するステップを更に含んでいてもよい。これによりセキュリティが向上する。この代わりに又はこれに加えて、前記コードを暗号化してもよい。
【００５５】
本発明の第７の側面では、データを受信する方法であって、ａ）データサブセット及びパリティデータを受信するステップと、ｂ）前記受信したデータサブセット及びパリティデータから、失われたデータサブセットを再生成することにより、再生成されたデータセットを形成するステップと、ｃ）前記データサブセットと、再生成されたデータサブセットと、を組み合わせるステップと、を含む方法を提供する。
【００５６】
必須ではないが、前記再生成されたデータサブセットは複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは更なるデータサブセットと更なるパリティデータとを含み、前記組み合わせるステップは、ｄ）前記更なるデータサブセットと更なるパリティデータとから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成するステップと、ｅ）前記更なるデータサブセットと、再生成された更なるデータサブセットと、を組み合わせることにおり、元のデータセットを形成するステップと、を含んでもよい。
【００５７】
必須ではないが、前記受信したデータは暗号化されており、前記方法は更に、ｆ）前記元のデータセットを復号するステップ、を含んでいてもよい。
【００５８】
好適には、前記受信するステップは、前記データサブセット及びパリティデータのうちのいずれか又はすべてを、異なる複数のチャンネルから受信するステップを含んでいてもよい。
【００５９】
好適には、前記異なる複数のチャンネルは、異なる複数の無線周波数であってもよい。  好適には、前記異なる複数のチャンネルは、複数の異なる携帯電話無線チャンネルであってもよい。
【００６０】
必須ではないが、前記方法は、どのチャンネルがどのデータサブセット及びパリティデータを含んでいるかを示す情報を含むチャンネル情報を受信するステップを更に含んでいてもよい。
【００６１】
好適には、前記組み合わせるステップでは、前記データサブセットと再生成されたデータサブセットとを、前記受信したチャンネル情報に基づき組み合わせてもよい。
【００６２】
必須ではないが、前記データサブセットとパリティデータのうちのいずれか又はすべてを搬送する前記チャンネル群が受信の間に変化してもよい。このチャンネルホッピングにより、不正な受信者が元のデータをデコードしたり音声コールを盗聴したりすることをより困難にすることができる。
【００６３】
好適には、前記データは、オーディオデータ、携帯電話データ、パケットデータ、ビデオデータ、リアルタイムデュプレックスデータ及びインターネットデータからなるグループから選択されたものであってもよい。更に、本発明の方法は他のデータ種類にも適用可能である。
【００６４】
本発明の第８の側面では、データを送信するための装置であって、ａ）前記データを分割して、複数のデータサブセットとして送信されるようにし、ｂ）前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの１つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにし、ｃ）前記複数のデータサブセットとパリティデータとを送信する、ように構成されたプロセッサを備える、装置が提供される。プロセッサは、ハードウエア又はソフトウエアとして格納された処理ロジックを有していてもよい。
【００６５】
好適には、前記プロセッサは、ｉ）前記複数のデータサブセット及び前記パリティデータのいずれか１つ又は複数に対してステップａ及びｂを繰り返し、更なるデータサブセットと更なるパリティデータとを生成し、ｉｉ）前記更なるデータサブセットと前記更なるパリティデータとを送信する、ことにより送信を行うよう構成されていてもよい。
【００６６】
本発明の第９の側面では、データを受信するための装置であって、ａ）データサブセット及びパリティデータを受信し、ｂ）前記受信したデータサブセット及びパリティデータから、失われたデータサブセットを再生成することにより、再生成されたデータセットを形成し、ｃ）前記データサブセットと、再生成されたデータサブセットと、を組み合わせる、ように構成されたプロセッサを備える、装置が提供される。
【００６７】
好適には、前記再生成されたデータサブセットは複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは更なるデータサブセットと更なるパリティデータとを含み、前記プロセッサは、ｄ）前記更なるデータサブセットと更なるパリティデータとから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成し、ｅ）前記更なるデータサブセットと、再生成された更なるデータサブセットと、を組み合わせることにより、元のデータセットを形成する、ことにより前記データサブセットを組み合わせるよう構成されていてもよい。言い換えれば、前記データは、更なるサブセットと更なるパリティデータを形成するようにカスケード化されていてもよい。元のデータは、失われたデータサブセットをパリティデータと正常に受信されたデータとから生成しつつ、そのカスケード化処理の逆の処理を実行することにより、再生成してもよい。
【００６８】
本発明の第１０の側面では、これまでに説明した装置、すなわち送信装置及び／又は受信装置を有するモバイルハンドセットが提供される。
【００６９】
必須ではないが、上述のデータ、すなわち元のデータ、送信されるデータ、音声データ、又は安全に記憶されるべきデータは、基準データファイルに対する差分データであり、前記方法は、元のデータを前記基準データファイルと比較することにより前記差分データを求めるステップを更に含んでいてもよい。これにより、根底（元）のデータが制限されたすなわち保護された環境から離れる必要なく、データをセキュアに記憶又は送信することができる。このオプションの特徴は、以上に記載した各方法、各装置に対して実装可能である。
【００７０】
差分すなわちデルタ（Δ）データが、複数のデータサブセットが組み合わされた形で（又は特定のサブセットが喪失、破損又はその他の態様で使用不可能になっていたり、認証に合格しなかったりした場合には、再生成されたサブセット群が）、記憶場所から検索されるか又は送信機から受信されると、前記プロセッサ又は前記方法は、差分データを基準データファイルに適用して根底のデータを求めるステップを行ってもよい。
【００７１】
この方法は、例えば、コンピュータ装置上で実行されるコンピュータソフトウエアとして実装してもよい。このソフトウエアは、媒体上に格納されているか、あるいは信号として伝送される。例えば、１つ又は複数のコンピュータ装置は、Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  ＯＳ  Ｘ、ＵＮＩＸ（登録商標）ベースのシステムなどといった適切なオペレーティングシステムを実行するデスクトップパーソナルコンピュータ又はサーバコンピュータでよい。コンピュータ装置の一例は、ハードディスクドライブその他の記憶媒体、キーボードやマウスなどの入力装置、及び表示画面を備えていてもよい。
【００７２】
必須ではないが、この方法の各ステップは、単一のマシン、コンピュータ、若しくは、イントラネット又はインターネットなどのネットワークに接続された一群のコンピュータにて実行してもよい。
【００７３】
本発明は、様々な方法で実現し得るものであり、以下では、単なる例示のために、添付の図面を参照しつつ、実施の形態を説明する。
【図面の簡単な説明】
【００７４】
【図１】本発明の１つの側面に従う、単なる例示のためのデータの記憶のための方法のフローチャートである。
【図１ａ】図１に示された方法に類似の別の方法のフローチャートである。
【図２】図１の方法を用いて記憶されたデータを模式的に示す図である。
【図２ａ】図１ａの方法を用いて記憶されたデータを模式的に示す図である。
【図３】図１の方法に従って記憶されたデータを模式的に示す図である。
【図３ａ】図１ａの方法に従って記憶されたデータを模式的に示す図である。
【図４】図１の方法に従って記憶された、複数のクラスタに分散されたデータを持木的に示す図である。
【図４ａ】図１ａの方法に従って記憶された、複数のクラスタに分散されたデータを持木的に示す図である。
【図５】本発明の更なる側面に従う、単なる例示のためのデータの記憶のための方法のフローチャートである。
【図６】本発明の更なる側面に従ってデータを記憶するのに用いられるネットー枠を模式的に示す図である。
【図７】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。
【図７ａ】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。
【図８】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。
【図８ａ】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。  これら図面は簡潔さを旨として記載されており、必ずしも縮尺通りに描かれているとは限らない。
【発明を実施するための形態】
【００７５】
格納対象のデータは、例えば、バイナリファイルの形である。このデータは、複数のサブセット（部分）に分割されていてもよい。それら複数のデータのサブセットからパリティデータを生成し、それら複数のデータのサブセットのうちの1つ又は複数のサブセットが破壊されても、その失われたサブセットが残りのサブセット群とパリティデータとから再生できるようにしてもよい。パリティデータすなわちコントロールデータは、誤り検出の目的又は失われたデータの再生を可能にするために、元のデータから生成される。しかし、パリティデータは、元のデータに含まれる情報を超えるいかなる付加的な情報をも含んではいない。そのようなパリティデータの生成を実現し得るいくつかの論理演算がある。例えば、２つのバイナリ数に対して排他的論理和（ＸＯＲ）を適用すると、結果として第３のバイナリ数が生成され、これがパリティ数である。元の２つのバイナリ数のいずれかが仮に失われたとしても、失われたバイナリ数は、単に残ったバイナリ数とパリティ数との間でＸＯＲを実行することにより復元され得る。パリティデータの計算についての更に詳細な説明については、http: //www. pcguide.-com/ref/hdd/perf/raid/concepts/genParity- c. htmlを参照されたい。パリティデータが計算された、すべてのデータサブセットとパリティデータとは別々の又は離れた複数の場所に格納してもよい。
【００７６】
しかし、更なる追加の記憶場所を利用するために、パリティデータ及び複数のデータサブセットの各々を更に複数のサブセットに分割して更なるパリティデータを生成してもよい。このようにして、利用可能なすべての記憶場所が活用されるまで、又は場所数があらかじめ定められた限度に達するまで、カスケード状に次々とデータサブセット群が生成されるようにしてもよい。データは逆のプロセスを用いて復元してもよい。これには、失われたデータサブセットを、残りのデータサブセットとパリティデータから適切な再生成計算又はアルゴリズムを用いて再生成すればよい。読み出しプロセスは、１つのオリジナルデータが復元されるまで続けられる。
【００７７】
１つの別の実施例では、データサブセットの真正性の確認に用いるために、データサブセット及び／又はパリティデータのうちの任意のものに対して認証コード又はハッシュコードを対応づけてもよい。真正なデータサブセットは、当該データサブセットの生成の後で故意に又は偶然に変化又は変更されてしまうことはないであろう。この別の実施例又はそのバリエーションは、この文書中を通して認証の実施例として説明される。
【００７８】
図１は、データを記憶するための一例の方法１０を示すフロー図である。ステップ３０では、元のデータ２０がデータサブセットＡ及びＢへと分割される。元データが２つの等しい部分に分割されて、データサブセットＡとＢとが同サイズになるようにしてもよい。ゼロパディングを用いてサブセットＡとＢとが確実に同サイズになるようにしてもよい。例えば、パリティデータＰを生成する前に、サブセットＡ及びＢの末尾に付加的な０のバイト（又はビット群）を追加してもよい。データ２０がサブセットＡ及びＢへと分割された後、ステップ４０にて、それらサブセットＡとＢに対して排他的論理和（ＯＲ）演算を行って、パリティデータセットＰを生成してもよい。この代わりに、分割又は分離のステップ３０の間にパリティデータＰを生成してもよい。
【００７９】
図１ａにフロー図１０’として示される認証の実施例の方法では、サブセットＡ及びＢの生成の後、ステップ４５でハッシュ関数ｈ（ｎ）が適用される。このハッシュ関数は、ハッシュコードｈ（Ａ）及びｈ（Ｂ）を生成する。パリティデータＰについてもハッシュを求め、ハッシュコードｈ（Ｐ）を生成してもよい。ハッシュ関数は、ハッシュ関数の実行又は結果として得られるハッシュコード同士の比較のための計算機パワーが受け入れ可能であるか又はシステムの制限に収まるように選べばよい。ハッシュ関数は、サブセットＡ，Ｂ及び／又はパリティデータＰ（すなわちＡ，Ｂ及びＰのうちの少なくとも１つ）に対して適用してもよい。任意の組み合わせにおいてデータサブセット又はパリティデータのうちの１つ又は複数のハッシュを求めないことにより、コンピュータのオーバーヘッドを削減してもよい。
【００８０】
その結果得られる２つのデータサブセットＡ及びＢとパリティデータセットＰ（及びオプションのハッシュコード）は、ステップ５０にて格納してもよい。サブセットＡ及びＢとパリティデータセットＰは例えばメモリ又はハードディスクドライブに記憶してもよい。方法１０は、この点でループしてもよい。ステップ６０で、使用可能又は必要とされる記憶場所が更にあるかどうかが判定される。あれば、この方法はループしてステップ３０に戻り、データサブセットＡ,Ｂ及び／又はパリティデータＰのうちのいずれか又は各々が、新たな複数のサブセット及び更なるパリティデータセットへと更に分割される。ループは分割され生成される各データサブセット及び各パリティデータについて、使用可能な記憶場所が無くなるまで続行され、この方法はステップ７０で停止する。
【００８１】
認証の実施例では、データサブセットＡ及びＢ及び／又はパリティデータＰと一緒に、ハッシュコードすなわち認証コードを、ヘッダ情報として又はそれらとは別に、例えば専用のハッシュライブラリ又はハッシュ記憶部に、記憶してもよい。
【００８２】
更なる記憶場所があってこの方法のループが生じる場合に、ハッシュ生成は、分割データの最下層レベル、すなわち途中のデータサブセットではなく実際に記憶されるデータに達するまで、延期するようにしてもよい。これにより、効率が向上する。
【００８３】
認証をしない実施例では、方法１０のループの最初の回では、３つの別々のデータファイル（Ａ，Ｂ及びＰ）が結果として得られ、２回の完全なループの繰り返しにより９つの別々のデータファイルが、３回の完全な繰り返しにより２７個の別々のデータファイルが、それぞれ結果として得られる。別の例では、各データサブセットを同程度まで分割する必要は必ずしもない。使用可能な記憶場所がたくさんある場合、あらかじめ定められた最小サイズのサブセットが生成されるまで、サブセットを分割して更なるサブセットを生成するようにしてもよい。記憶場所群の更なる利用には、別の例として、データ紛失に対する復元力を向上させるために単純に複製することが含まれていてもよい。
【００８４】
図１ａに示される任所運も実施例については、３つの別々のデータファイル（Ａ，Ｂ及びＰ）が生成されると共に、３つのハッシュコード（Ａh，Ｂh及びＰh）が生成される。
【００８５】
データ２０が９つの別々の場所へと分割されたとして、それらデータセットのうちの４つが紛失又は破損（これはオプションのハッシュコード比較により検出可能）しても、常に元のデータセット２０が再生成可能とすることができる。４つよりも多くが失われた場合でさえ、結果として元のデータセット２０を正確に再生することもできるが、これはどのセットが失われたかに依存するので保証の限りではない。
【００８６】
図１ａに示されるハッシュコードをすべての記憶したデータファイル及び／又はパリティデータについて生成して、データの破損又は調整が生じていないことを補償できるようにしてもよい。
【００８７】
図２は、図１に示される方法を１回実行したときに結果として得られるデータを模式的に示す図である。方法のステップと同様のものには同じ参照符号が付されている。元のデータセット２０がバイト単位に分割され、データサブセットＡ及びデータサブセットＢ（すなわち１バイトのブロックサイズ）が生成される。排他的ＯＲ演算によりパリティデータＰが生成される。３つの別々の記憶場所が使用可能な場合、方法１０はこの段階で停止し、３つの分散された別々のデータサブセットＡ，Ｂ及びＰを含んだデータクラスタ１５０が結果として得られる。
【００８８】
図２ａは、ハッシュコードを含んだデータを模式的に示す別の例の図である。
【００８９】
図３は、方法１０のステップ３０，４０及び５０を更に繰り返した場合の結果を示す。この場合、９つの別々の記憶場所が使用可能であり、３つのデータセットＡ，Ｂ及びＰの各々は例えば更にそれぞれ３つのデータサブセットへと分割される。
【００９０】
図３ａに示すように、認証の実施例では、ハッシュコードはデータサブセット及び／又はパリティデータの最下層レベルＡＡ，ＡＢ，ＡＰ，ＢＡ，ＢＢ，ＢＰ，ＰＡ，ＰＢ及びＰＰにのみ必要とされる。なぜならこれらのファイルのみが後の再生成のために格納されることになる、すなわちそれらは読み出されるときに真正性を保証するために認証を必要とするからである。
【００９１】
カスケード状に次々と生成されるデータセットの中の最下層レベルのデータセットについて、様々なハッシュコードが生成され得る。
【００９２】
この追加の繰り返し分割２３０により、データサブセットＡが分割されて更なるデータセットＡＡ及びＡＢと更なるパリティデータＡＰが形成される。同様に、データサブセットＢがＢＡ及びＢＢへと分割され。これらを一緒に用いてパリティデータＢＰを形成するようにしてもよい。パリティデータＰは、ＰＡ，ＰＢ及びＰＰへと分割してもよい。この方法のこの実施例では、３つのデータサブセットのうちの各々は同じサイズを持つものであってもよい。これら９つのデータサブセットの各々を記憶するのに用いられる９つの別々のデータ記憶位置は第２レベルのクラスタ２５０を形成してもよく、このクラスタ２５０は図４として更に詳しく示される（認証の実施例については図４ａを参照）。
【００９３】
すなわち、第１レベルのクラスタ１５０は第２レベルのクラスタ２５０を形成するために拡張されている。このように、元の３つのデータセットＡ，Ｂ及びＰを記憶する必要はない（ただし、データ損失に対する復元力を向上させるための別の方法として、それらを記憶するようにしてもよい）。なぜなら、それらは第２レベルのクラスタ２５０内の９つのデータサブセットからそれぞれ再生することができるからである。方法１０のループは、使用可能なすべての記憶場所が使用し尽くされるまで、又は各サブセットのサイズがあらかじめ定められた限界値に達するまで、又は各サブセットのサイズが特定のレベルまで小さくなるまで、必要な回数だけ繰り返してもよい。
【００９４】
図５は、図１に示された方法１０に従ってデータを記憶するのに用いられるシステム３００を模式的示す図である。図５に示されたシステムは、認証の実施例に従ってシステム４００の安全性（セキュリティ）及び信頼性を拡張するために用いられる追加オプションのステップ群を示している。中央サーバ３６０は、この方法を管理し、ユーザからシステムへの入力のためのリクエストを受け取る。ユーザはログオンし、暗号化鍵３２０を付与される。更に、（一意な）ハッシュコードの組がステップ４５で生成されるようにしてもよく、それらハッシュコードはファイルの一意な識別情報として機能し、真正性を保証するのに用いてもよい。暗号化鍵はハッシュコードを生成するのに用いられる。この実施例では、ファイルがデータ２０として記憶されている。データベース３７０は、ログイン情報及び暗号化鍵を記憶するのに用いられ、また記憶すべきファイルの名前を記憶するのにも用いられる。ユーザはステップ３４０でデータベースに登録を行ってファイル名を生成し、データファイルはサブセットＡ及びＢへと分割され、それらデータサブセットからパリティデータＰが生成される。データサブセットのそれぞれに対して、ステップ３５０にて識別情報が付与され、それら識別情報はデータベース３７０で管理される。複数の別々の記憶場所に対してネットワークを介してアクセス可能であり、それら複数の記憶場所は、使用可能な記憶場所群のプールを形成する。サーバ３６０は、実行されるべき分割の繰り返しの最大レベルを決定してもよく、この最大レベルはあらかじめ定められた設定値またはシステムパラメータにより決定してもよい。またサーバ３６０は、プール３８０内の個々の別々の記憶場所が使用可能かどうかを監視する。
【００９５】
このように、個々のユーザは、特定のファイル群又はデータ記憶システム全体を、使用可能なプール３８０から任意の数の別々の記憶場所にわたってバックアップしてもよい。サーバ３６０は、それら記憶を、ユーザには見えない処理レイヤ（層）として管理してもよい。言い換えれば、いったんユーザらがシステムにアクセスすると、データの記憶部は、ユーザにとっては、通常の記憶及び検索のように見える。元のデータ２０は、記憶場所のプール３８０から検索することができ、失われたデータがあればそれはパリティデータＰを用いて、いかなる要求されたデータレイヤから再生成してもよい。サーバ３６０は、データのカスケード化（段階的に次々とサブセットに分割すること）のレベル、及び各データサブセットを常に監視している。また、サーバは、ハッシュコードを記憶し、管理しており、それらハッシュコードは、データサブセット群及びパリティデータと一緒に、又は別々に、記憶されてもよい。
【００９６】
更に、データサブセットは暗号化鍵を用いて暗号化してもよく、ハッシュコードを用いてタンパー防止又は歪み防止機能を組み込んでもよい。このように、図５に示されるシステム３００は、機密情報を格納するユーザに対して付加的な安全性を提供し、個々の別々の記憶場所のうちのいずれか又はすべてにアクセスできる第三者は、サーバ３６０によって管理されている元の暗号化鍵が無ければ、元のデータ２０を再生することはできない。別の例では、暗号鍵は必要とされないが、元と同じハッシュコードを持つ改変したデータサブセットを生成するのには、不可能なほどに高い計算機パワーが必要とされる。また、更にセキュリティを高めるために、暗号鍵を用いてデータサブセットを暗号化してもよい。記憶プール３８０とユーザとの間のデータサブセットのやりとりが第三者から傍受されても、いかなるデータもその暗号鍵がなければ第三者には利用可能な状態にはならず、最小数のデータサブセットのコピーを得ることさえできない。
【００９７】
方法１０を実行するのに用いられるシステムの更なる例が図６に示される。図６に示されるシステム４００は、インターネットやイントラネットなどのネットワークにまたがって情報を安全に分散するために用いられる。インターネット又はウェブページ４２０のサブセット（部分集合）群は、中央サーバ４１０を介してユーザマシン４４０に安全に分散されてもよい。中央サーバ４１０は、ウェブページ４２０を取得し、それらウェブページを図１に示される方法１０に従って、別々の記憶場所に格納する。データサブセットを暗号化及び／又はハッシュ演算することで、図５を参照して説明したように、認証機能を提供してもよい。中央サーバ４１０は、ユーザマシン４４０に対し、１つ又は複数の復号コードと、特定の記憶場所４３０からデータを識別してその場所を求めるための情報と、元のウェブページ群４２０を形成するデータをどのように再生成するかの情報と、を供給する。このように、元のデータ２０が別々の記憶場所４３０に分散されているので、ウェブページ群４２０は、もはや障害や攻撃を受ける単一の点（single point of failure or attack）（例えば単一のウェブサーバがダウンする）にはなりにくい。更に、ユーザコンピュータ４４０のネットワークトラフィックを傍受するいかなる第三者も、中央サーバ４１０から供給される復号鍵及び再生成情報がなければ、ウェブページ群４２０を形成する元データを復号又は再生することはできないであろう。
【００９８】
データサブセット群及び／又はパリティデータを再ハッシュ（rehash）し、その結果得られるハッシュコードを元のものに対応するハッシュコードと比較することにより、改変を検出してもよい。相違が検出された場合。このデータサブセット又はパリティデータは、拒否され、認証されたデータセット群及び／又はパリティデータのみを用いて再生成される。ハッシュコードによる認証に失敗したデータサブセット（又は失われるか又は使用不能になったデータサブセット）のみが、再生又は再生成の必要がある。
【００９９】
このようなセキュアなシステムは、例えば銀行業務のトランザクション、又はセキュアデータの他の携帯、又はシステムユーザが更なるプライバシーやセキュリティを要求するような場にふさわしい。
【０１００】
中央サーバ４１０は、入手可能なインターネットウェブサイト又は特定の個別のウェブサイト群の全体を記憶又はキャッシュすることができ、特定の加入ユーザのみにこれらを利用可能にするようにしてもよい。中央サーバ４１０は、サーチエンジンの機能又はその他の中央の情報統合装置の機能を実行してもよい。このようにサーチエンジンに問合せを行うことで、復号鍵とウェブサイト又は他の検索可能な文書の場所を求めて再生成するのに用いられる情報とを含んだ検索結果が提供されるようにしてもよい。
【０１０１】
認証に実施例に従ったこのような記憶システムの更なる用途は、質の高い媒体を、データの歪みや紛失を避けつつ記憶、再生することである。例えば、質の高いオーディオ・ビデオ記録は、高レベルの誤り検出を用いることにより得られる。各データサブセットは、認証コード又はハッシュコードを用いることで、真正かどうかのチェックを受ける（例えば損傷）。この認証テストに合格しないデータサブセットは、受け付けられず、パリティデータと認証に合格したデータサブセット群とを用いて再生成される（パリティデータもチェックされる）。
【０１０２】
例えば、この記憶方法は、ハードディスクドライブ、ＣＤ、ＤＶＤ、ブルーレイ（登録商標）などの光学ディスク、ＭＰ３及びＭＰＥＧタイプのエンコードのようなファイルエンコードなどに実装してもよい。この方法は質の高いマルチメディアファイルを生成するのに用いてもよい。
【０１０３】
図７は、通信システムを模式的に示している。２つの通信装置５００及び５１０が，互いにデータを送受信している。これは、携帯電話ネットワークなどの通信ネットワークを介して、又は、双方向無線のように直接に行われる。以下の例では、一例として音声データが用いられる。しかし、ビデオ、ウェブ又はインターネット、及びデータファイルなどのような他の多くの種類のデータを送受信してもよい。
【０１０４】
図７に示されるように、データ記憶について図１を参照して説明した方法と同様の方法を用いて、音声データは複数のデータサブセットとパリティデータに分割される。これらのデータサブセットＡ，Ｂ及びパリティデータＰは、個別のチャンネルＣ１，Ｃ２及びＣ３を介して別々に送信される。これのデータは、他の方式に従って一緒に又は別々に送信されるとともに、異なる２つの媒体、例えば無線、ケーブル及び光ファイバー送信の組み合わせ、を用いて送信されるようにしてもよい。分割の機能は、通信装置５００内、又はモバイル通信基地局等の送信ネットワーク施設内で実行されてもよい。説明される機能を実装するために、携帯電話に対して追加のハードウエアを付加してもよい。この代わりに、その機能がソフトウエアとして実装されてもよい。
【０１０５】
データ記憶の実施例の場合と同様、別の認証の実施例として、ハッシュ関数又は他の認証のための関数からハッシュコードを生成し、送信の前にデータサブセットと対応づけてもよい。この認証実施例が図７ａに示される。
【０１０６】
データサブセットＡ及びＢは、分割処理の逆の処理により、組み合わされて元の音声データを形成するようにしてもよい。サブセットＡ又はＢのどちらかが受信したデータから失われた場合、又はハッシュマッチングテストに合格しない場合、上述の記憶データの検索の場合と同様の方法で、失われたデータを、パリティデータＰを用いて復元してもよい。このように、チャンネルＣ１，Ｃ２又はＣ３のうちのただ１つしか受信しない盗聴者は、音声データを再構築することができない。このように、この方式によれば、より安全でより信頼性の高い通信システム及び方法を提供することができる。各チャンネルのモード、タイプ又は周波数を異ならせることによりセキュリティを更に向上させてもよい。図７ａに示される認証の実施例においてハッシュ関数の認証チェックにより、データ完全性を提供してもよい。
【０１０７】
図８は、図７に示される実施例に似た、更なる実施例を模式的に示す。ただし、この更なる実施例では、送信の前に更なるカスケードすなわち多層のデータ分割を実行する。音声その他の送信データを再構築するのには、更なるレベルの再組み合わせを用いなければならない。図８に示した例では、このデータ分割及びパリティデータ生成の更なるカスケード化には、各データサブセット及びパリティデータを通信するのに９つのチャンネルが必要となる。このような追加のカスケードは、データ損失に対する更なる復元力をもたらす。それらチャンネルのうちの５つから送信されたデータが失われても、データは完全に再構築することができる（ロスレス：無損失）。更にカスケード化して更なる復元力を提供してもよい。上述のデータ記憶の例と同様、データチャンネルの数は上の例と異なっていてもよい。例えば、各カスケード（分割の各段階）において、データを３つ、４つ又は５つに分割してもよい。必要なセキュリティ又は信頼性のレベルに従って、更なるカスケードレベルを用いてもよい。これにより使用可能なチャンネル（通信路）容量が更に満たされるが、そのようにすることによりデータ損失の確率を同じに維持したまま各チャンネルのパワー要件（必要条件）が低減される（シャノンの定理又は通信路符号化定理：noisy-channel coding theorem）。
【０１０８】
図８ａに示すように、送信されるデータサブセット及び／又はパリティデータ（カスケードにおける最下層レベル）のいずれか又はその各々が、適用されるハッシュ関数を持っていてもよい。ハッシュコードは受信機へと送信される。
【０１０９】
また通信システムは、セキュリティ又は機能についての更なるレイヤ（層）を有していてもよい。データを受信する通信システム５１０は、どのデータサブセット及びパリティデータがどのチャンネルを通って送信されるのかに関する情報を必要とするかも知れない。図８及び図８ａに示される例では、チャンネルＣ１はデータサブセットＡＡを送信するのに用いられ、Ｃ２はＡＢのために用いられる，といった具合である。しかし他の組合せを用いてもよい。このような情報は、送信の前又は送信中に、例えばチャンネルとデータサブセットの特定の組合せを示すコードを送信するなどにより、通信装置５００，５１０の間で交換してもよい。その特定の組合せは、送受信の間に変化してもよい。このことは、あらかじめ設定された又は定められた方式に従っていてもよく、又は現在の特定の組合せが、送信機と受信機との同期を維持するために送信されてもよい。通信装置５００，５１０の両方が同時に送受信を行ってもよいし、別々に送受信を行ってもよい。
【０１１０】
セキュリティの更なる予防措置として、データを、基準ファイルに対する差分データすなわちデルタ（Δ）データとして記憶又は送信してもよい。この場合、データを検索又は受信するには、例えば基準ファイルへのアクセス又は基準ファイルの知識が必要とされる。
【０１１１】
この更なるセキュリティ予防措置は、ある種類のデータを送信したり記憶したりするのに実用上の制約又は法的な制約のあるようなところで用いてもよい。例えば、銀行業務情報又は機密情報の記憶は、特定の組織又は特定のサイトに制限されているかもしれない。しかし、これらのデータの損失のリスクが少なくなるようにデータを記憶することは、依然として必要とされるかも知れない。この場合、これらの種類の情報を前述のように異なる複数の記憶場所にまたがって分散又は送信することは，例えば暗号化を用いていたとしても、不可能かも知れない。この問題に対しては、根底のデータの代わりに差分データすなわちデルタデータを送信又は分散することにより対処してもよい。この状況では、データ保護要件は満足され、データは紛失又は破損に対して安全に保護され得る。
【０１１２】
例えば、この更なる変形例の処理の一例として、例えばファイルＡ（又は信号Ａ）が記憶又は送信するべき根底のデータであるとする。ファイルＢは基準ファイルであるとする。ＵＮＩＸ（登録商標）のｄｉｆｆ，ｒｄｉｆｆ又はｒｓｙｎｃなどの比較関数を用いて、ファイルＡとＢとの比較を行い、ファイルＣを生成してもよい。
【０１１３】
更に別の例では、差分ファイルは、ファイルＡとファイルＢとにＸＯＲ関数を適用（例えばバイトごとに）することにより生成してもよい。
【０１１４】
このように、ファイルＣは、ファイルＡとファイルＢとの差分を表現又は符号化したものであり、ファイルＡは、ファイルＢの知識又はファイルＢへのアクセスがなければ、ファイルＣから再生成することはできない。ファイルＢは様々な異なった形態をとってもよく、例えばランダムに生成された文字列、文書、オーディオファイル、ビデオファイル、書籍のテキストデータ、あるいは、知られている又は生成された他のデータセットであってもよい。知られたデータファイル（例えばよく知られた歌のＭＰ３ファイル）を用いることの利益は、もしユーザのコンピュータが紛失、盗難又は破損に遭ったとしても、その知られている、公的に入手可能な基準ファイルの更なるコピーを取得することにより、根底のデータを再生成し得ることである。ユーザは、自分がどの特定のファイルを利用しているのか（例えばそのユーザが好きな歌のＭＰ３ファイル）を単に覚えていればよい。ユーザには無数の選択肢があるので、よく知られたデータファイルを用いたとしても依然として比較的高いセキュリティを維持できる。
【０１１５】
ファイルＣからファイルＡを再生成するために、差分又はデルタデータのファイルＣを基準ファイルＢに適用するための関数を用いてもよい。ファイルＡの再生成のために、差分すなわちデルタデータのファイルＣがどのように生成され符号化されたかに応じて、様々な方法が用いられる。ＸＯＲの例では、ファイルＡを再生するために、ファイルＣとファイルＣに対して更にＸＯＲ関数を適用してもよい。この適用は、例えば１バイトごとに行われてもよい。ファイルＡとファイルＢのサイズが異なることもよくあるであろう。ファイルＡがファイルＢよりも小さい場合は、単に、バイト又はファイル部分の各々の比較が完了したら、処理を停止すればよい。ファイルＡがファイルＢよりも大きい場合には、ファイルＡの各バイトの比較が完了するまで、ファイルＢの何回かコピーして用いればよい。その他の変形、差分処理及び比較関数を用いてもよい。
【０１１６】
差分すなわちデルタファイル（又はデータストリーム）が生成されると、これは上述の元データとして用いられ、（例えば音声データとして）送信又は記憶される。送受信の実施例では、差分データはデータストリームとして生成されてもよい。すなわち、リアルタイムで送信、受信、符号化、又は復号されてもよい。言い換えれば、差分データは複数のデータサブセットに分割され、パリティデータが生成され、これらデータサブセットが上述の方法に従って分散記憶されたり送信されたりするようにしてもよい。
【０１１７】
差分データの形態のデータストリームが送信される場合、基準ファイル（Ｂ）を、リアルタイムでデータストリームを順に符号化するのに用いてもよい。データストリームが基準ファイルの長さを超えている場合、送信が完了するまでその基準ファイルを再利用してもよい。例えば、音声通信では、送信が開始されるごとに、基準ファイルの最初の部分を、デジタル化された音声又はオーディオデータストリームと比較するために用い、差分データストリームを生成するようにしてもよい。この代わりに、新たな送信の各々について、基準ファイルの中で前回に最後に使用された点から続けることにより、基準ファイルの再利用を減らしてもよい。これは、セキュリティを更に向上させ得る。
【０１１８】
別々の実施例を説明してきたが、それら実施例の特徴は、相互に入れ替えてもよい。特にデータの操作に関してはそうである。更に、送受信の実施例に関して説明した特徴はデータ記憶の実施例と共に使用してもよいし、その逆のことをしてもよい。
【０１１９】
当業者には理解されるように、上述の実施例の細部は、添付する特許請求の範囲にて規定される本発明の範囲から逸脱することなく、変更してもよい。
【０１２０】
例えば、データは、ハードディスク、フラッシュＲＡＭ、ウェブサーバ、ＦＴＰサーバ、ネットワークファイルサーバ、又はそれらの組合せなどのような、異なる様々な種類の記憶媒体に格納してもよい。上述の例では、個々の繰り返しごとに、ファイルが２つのデータサブセット（Ａ及びＢ）と１つのパリティデータブロック（Ｐ）とに分割されたが、３つ（Ａ，Ｂ及びＣ）、４つ（Ａ〜Ｄ）又はそれ以上の数のデータサブセットが生成されるようにしてもよい。
【０１２１】
上述の例に示したパリティデータはＸＯＲ関数から生成されていたが、他の関数を用いてもよい。例えば、ハミング、リード・ソロモン、ゴーレイ（Ｇｏｌａｙ）、リード・マラー（Ｒｅｅｄ−Ｍｕｌｌｅｒ）、又は他の誤り訂正符号を用いてもよい。
【０１２２】
データサブセット群は、物理的に別々の場所に記憶されるか、又は同一のハードディスクドライブやクラスタ内であっても論理的に別々の場所に記憶されるようにしてもよい。
【０１２３】
当業者に明らかなように、上述の様々な実施例の特徴に対して、多くの組合せ、修正又は変更が可能であり、これらも本発明の一部を構成する。
【図１】
0005905068.tif 000002
【図１ａ】
0005905068.tif 000003
【図２】
0005905068.tif 000004
【図２ａ】
0005905068.tif 000005
【図３】
0005905068.tif 000006
【図３ａ】
0005905068.tif 000007
【図４】
0005905068.tif 000008
【図４ａ】
0005905068.tif 000009
【図５】
0005905068.tif 000010
【図６】
0005905068.tif 000011
【図７】
0005905068.tif 000012
【図７ａ】
0005905068.tif 000013
【図８】
0005905068.tif 000014
【図８ａ】
0005905068.tif 000015