説明

分散的な記憶及び通信

a)データを複数のデータサブセット(A,B)に分割し、b)複数のデータサブセット(A,B)からパリティデータ(P)を生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットとパリティデータ(P)とから再生成されるようにすることにより、データを記憶、検索、送信、又は受信する。ステップaとbとが、前記複数のデータサブセット及び前記パリティデータの各々に対して繰り返されることにより、更なるデータサブセットと更なるパリティデータとが生成され、d)前記更なるデータサブセットと前記更なるパリティデータとが別々の記憶場所(380)に記憶されるか、又は送信される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの記憶及び通信のための、特に、別々の格納場所にわたってデータを格納し、データを送信及び受信するための、方法及びシステムに関する。
【背景技術】
【0002】
データは、例えば、多くの、異なる技術を用いて、コンピュータシステム内に格納される。デスクトップ又はラップトップコンピュータなどの個別のコンピュータシステムが盗難又は喪失すれば、そのコンピュータシステム上に記憶されたデータもまた失われ、悲惨な結果をもたらすことになる。データを別のドライブにバックアップすればデータを維持することができるが、それでも依然として機密的な情報が失われ、第三者に利用可能となってしまうかもしれない。全体的なシステムが紛失又は盗難していない場合でさえ、個別のディスクドライブ又は他の記憶装置が故障することにより、データが紛失し、同様の破滅的な結果をもたらすことがあるかも知れない。
【0003】
RAID(redundant array of inexpensive drives)アレイは、例えば、データを様々な条件下で記憶するように構成されている。RAIDアレイは、ディスクミラーリングを用いると共に、追加のオプションのパリティディスクを用いることで、個々のディスクの故障に対する保護を行っている。しかし、RAIDアレイは、それぞれあらかじめ定められた容量を持つ固定的な数のディスクを用いてあらかじめ構成しなければならない。RAIDアレイの構成は、アレイを動的にリビルド(再構築)しないかぎり変更できず、このことは結果としてかなりのシステム停止時間に繋がるかも知れない。例えば、RAIDアレイのスペースが足りなくなった場合には、更に長い停止時間なしでは、全体の容量を増大させるために追加のディスクを追加することはできないかもしれない。また、RAIDアレイは、2つのディスク故障を容易に取り扱うことができず、別々のRAIDアレイは容易には結合できない。
【0004】
RAIDアレイを形成する複数のディスクはネットワークの異なる部分に位置していてもよいが、複数のディスクをこのように構成することは困難であり、複数のディスクを異なる場所に配置することは便利ではない。したがって、たとえRAIDアレイが1つ又は2つのディスク故障に対して障害許容力があったとしても、通常はディスク群が互いに近くに配置されているので、火事や洪水などの破滅的な事態が起こればRAIDアレイ内の全データの破壊を招く結果となる。
【0005】
入れ子レベルRAID(nested level RAID)は、更なる故障ディスクへの障害許容力を改善するかも知れないが、これらのシステムは複雑、効果であり、アレイを再構築することなく拡張することはできない。
【0006】
同様に、送信されたデータの部分は、特にノイズの多い、又はセキュア(安全)でない伝送路を経由することで、失われたり、破損したり、遮断されたりするかも知れない。
【0007】
更に、現行のデータ記憶及び/又は送信方法及び装置は、破損やデータ消失を引き起こしがちである。低レベルの破損でさえ、データの質に影響するかも知れない。このことは、データが高品質のオーディオ又はヴィジュアル資料を記録するのに用いられる場合に特にそのようである。破損は受け取った媒体からの再生中の品質に歪みや損失をもたらし得るからである。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】欧州特許出願公開第0521630号明細書
【特許文献2】米国特許出願公開第2002/124139号明細書
【発明の概要】
【発明が解決しようとする課題】
【0009】
このように、これらの問題を克服するデータのための記憶方法及びシステムが求められる。
【課題を解決するための手段】
【0010】
本発明の1つの側面によれば、データの記憶方法であって、a)前記データを複数のデータサブセットに分割するステップと、b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、c)前記複数のデータサブセット及び前記パリティデータの各々に対してステップa及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成するステップと、d)前記更なるデータサブセットと前記更なるパリティデータとを別々の記憶場所に記憶するステップと、を含む方法が提供される。このように、データが再帰的に分割され、別々のデータサブセット及びパリティデータとしていくつかの別々の記憶場所に分散される。元のデータセットは複数載せ部セットに分割される。パリティデータセットは、それらサブセットから生成される。パリティデータセットは、いずれかのデータセットが紛失又は破損した場合に、そのようなデータセットを再生成するためのメカニズムを提供する。元のデータが必要とされる場合には、サブセットとパリティデータとが、その元のデータを再生成するのに寄与してもよい。パリティデータサブセットのみが失われた場合には、何の処理も必要ではなく、元のデータは維持される。どのサブセットも失われなかった場合も、何の処理も必要ではない。処理は続行され、サブセット及びパリティデータセットのいずれかが同様の方法で再び分割され、更なるパリティデータが生成される。これにより、データサブセットのカスケード(段階的に分割されたデータサブセット群)が形成され、それらデータサブセットを一緒に戻すことで元のデータが形成される。もし、データのサブセットのいずれかが失われた場合、失われたサブセットは、前述のカスケードにおける特定のレベルにある残りのサブセットとパリティデータとから再生成してもよい。このように、カスケードは動的に成長することができ、事前に定めておく必要はない。データの各サブセット又はパリティデータは、別々に、例えば、ディスクドライブ上の隣り合う複数のセクションに、又は異なる組織又は地域にある別々のサーバに、記憶してもよい。また、実際の各々の記憶場所は、サイズ又は種類が異なっていてもよく、これにより記憶システムを更に柔軟にすることができる。
【0011】
元のデータセットが再生成できるよう、各データサブセット及びパリティデータの場所を記録してもよい。このように、第三者は、個々のデータサブセットに対してアクセスしても、残りのデータサブセット群にアクセスしなければ、元のデータにアクセスすることはできないので、場所の情報(位置情報)を用いて元のデータに対するアクセスを制限することができる。
【0012】
複数のデータサブセット及びパリティデータのうちの各々は、他のデータサブセット及びパリティデータとは別の記憶場所に記憶してもよい。しかし、2以上のデータサブセット又はパリティデータを1つの記憶場所に記憶してもよく、特に使用可能な記憶場所の数が限られている場合にはそうである。
【0013】
好適には、前記更なるデータサブセットと前記更なるパリティデータとは物理的に別々の装置に記憶される。
【0014】
好適には、前記ステップcは前記複数のデータサブセット及び前記パリティデータの各々について繰り返される。これにより、データはより効率的に分散及びカスケード化され、データの損失や傍受に対する復元力が向上する。
【0015】
また、必須ではないが、前記方法は、追加の記憶場所を設けるステップと、前記追加の記憶場所が設けられるのに伴って、前記ステップa及びbを、前記別々の記憶場所に記憶された前記更なるデータサブセット又は前記更なるパリティデータのいずれかについて繰り返すステップと、を更に含んでいてもよい。これにより、データのカスケードの動的な成長が可能になり、全体システムをリビルド(再構築)することなく、記憶容量を増大させることが可能になる。
【0016】
好適には、データはバイトごとに分割される。しかし、ビットごと、あるいは異なるビット長ごとなどのような、異なる分割方法を用いてもよい。また、個々のデータサブセットのサイズが異なっていてもよい。
【0017】
必須ではないが、前記データは2つのデータサブセットに分割してもよい。
【0018】
必須ではないが、前記データは、当該データの偶数又は奇数のステータスに従って分割してもよい。
【0019】
好適には、前記パリティデータは、前記複数のデータサブセットに対して論理関数を実行することにより生成してもよい。論理関数は、処理のための必要条件を少なくするように選べばよい。パリティデータの生成は論理関数に限られるわけではない。例えば、データの複製を用いてもよい。
【0020】
好適には、前記論理関数は排他的論理和(XOR)であってもよい。この関数(XOR)は、必要とする処理オーバーヘッドが特に低く、このため効率を向上させることができる。更に、このような関数は、簡単なハードウエアを用いて実行することができる。
【0021】
必須ではないが、前記方法は前記データを暗号化するステップを更に含んでいてもよい。これにより、セキュリティ及び/又はプライバシーが向上する。
【0022】
必須ではないが、前記別々の記憶場所は、ハードディスクドライブ、光学ディスク、フラッシュRAM、ウェブサーバ、FTPサーバ、及びネットワークファイルサーバからなるグループから選ばれる。他の記憶媒体を用いてもよく、読み書きの場所に限られるわけではない。この方法は、使用される記憶装置の種類に依存するものではない。他の多くの記憶方式の種類及び記憶場所を用いることができる。
【0023】
好適には、前記データはウェブページ又は個々のファイルである。ウェブページ又はウェブサイトは、よりセキュア(安全)に分散又はアクセスされ、盗聴又は他の形態の監視を少なくすることができる。例えば、個々のデータサブセットからは元のデータを生成し又は復元することはできない場合もある。最小限の量のデータサブセットが必要とされるようにしてもよい。すべてのデータサブセットにアクセスできる場合でさえ、例えば暗号化を用いたり、元のデータがどのように分割され生成されたかを示す詳細情報が必要になるようにしたりするなどにより、元のデータを復元する能力を制限してもよい。
【0024】
必須ではないが、前記方法は、c1)1つ又は複数の対応する認証コードを生成するために、前記複数のデータサブセット及び前記パリティデータのうちの1つ以上に関数を適用するステップ、を更に含んでいてもよい。
【0025】
好適には、前記関数はハッシュ関数である。
【0026】
必須ではないが、前記ハッシュ関数は、チェックサム、チェックディジット、フィンガープリント、ランダム化関数、誤り訂正符号、及び暗号学的ハッシュ関数からなるグループから選ばれる。
【0027】
必須ではないが、前記認証コードは前記更なるデータサブセット及び/又はパリティデータと共に記憶される。
【0028】
必須ではないが、前記認証コードはヘッダ情報として記憶される。
【0029】
本発明の第2の側面では、別々の記憶場所に記憶されたデータを検索する方法であって、a)前記別々の記憶場所からデータサブセット及びパリティデータを回収するステップと、b)前記復元されたデータサブセット及びパリティデータから、失われたデータサブセットを再生成することで、再生成されたデータサブセットを形成するステップと、
c)前記データサブセットと前記再生成されたデータサブセットとを組み合わせることにより、複数の統合されたデータセットを形成するステップであって、前記複数の統合されたデータセットは、更なるデータサブセット及び更なるパリティデータを含むことを特徴とするステップと、d)前記更なるデータサブセット及び前記更なるパリティデータから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成するステップと、e)前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより元のデータセットを形成するステップと、を含む方法を提供する。
【0030】
好適には、前記データサブセット及びパリティデータは、それぞれ物理的に別々の装置から回収される。このように、各データサブセットは、それぞれ自分自身の個別の記憶場所を、他のデータサブセットの記憶場所から遠隔(リモート)の位置に持っていてもよく、これによりセキュリティとデータの信頼性を向上させることができる。
【0031】
必須ではないが、前記元のデータセットは暗号化されており、前記方法は更に、f)前記元のデータセットを復号するステップ、を含んでいてもよい。
【0032】
好適には、前記方法は、前記別々の記憶場所の位置情報を受信するステップを更に含んでいてもよい。これにより、アクセスが容易になり、また位置情報はアクセスを制限するのに用いてもよい。
【0033】
好適には、前記別々の記憶場所は、ハードディスクドライブ、光学ディスク、フラッシュRAM、ウェブサーバ、FTPサーバ、及びネットワークファイルサーバからなるグループから選ばれた1つ又は複数のものである。
【0034】
好適には、前記別々の記憶場所は、ネットワークを介してアクセス可能であってもよい。このネットワークは、内部ネットワークでも外部ネットワークでもよく、例えばインターネットであってもよい。
【0035】
必須ではないが、前記方法は、前記データサブセット及びパリティデータのうちの1つ又は複数に対応づけられた認証コードを回収するステップと、前記対応づけられた認証コードを用いて、前記データサブセット及びパリティデータのうちの1つ又は複数を認証するステップと、認証に合格しなかったデータサブセットを、前記回収されたデータサブセット及びパリティデータから再生成することにより、再生成されてデータサブセットを形成するステップと、を更に含んでいてもよい。
【0036】
必須ではないが、前記認証コードはハッシュコードであり、前記認証ステップは、前記データサブセット及び/又はパリティデータに対してハッシュ関数を適用することにより比較用ハッシュコードを生成するステップと、この比較用ハッシュコードを、前記データサブセット及び/又はパリティデータに対応づけられた認証コードと比較するステップと、を含んでいてもよい。
【0037】
本発明の第3の側面では、データを記憶するための装置であって、a)前記データを複数のデータサブセットに分割し、b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、c)前記複数のデータサブセット及び前記パリティデータの各々に対して前記a及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成し、d)前記更なるデータサブセットと前記更なるパリティデータとを別々の記憶場所に記憶する、ように構成されたプロセッサを備える、装置が提供される。
【0038】
必須ではないが、前記プロセッサは、更に、1つ又は複数の対応する認証コードを生成するために、前記複数のデータサブセット及び前記パリティデータのいずれか1以上に関数を適用するように構成されており、前記更なるデータサブセットと前記更なるパリティデータは対応する認証コードと共に記憶されるよう構成されていてもよい。
【0039】
本発明の第4の側面では、別々の記憶場所に記憶されたデータを検索するための装置であって、a)前記別々の記憶場所からデータサブセット及びパリティデータを回収し、b)前記復元されたデータサブセット及びパリティデータから、失われたデータサブセットを再生成することで、再生成されたデータサブセットを形成し、c)前記データサブセットと前記再生成されたデータサブセットとを組み合わせることにより、複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは、更なるデータサブセット及び更なるパリティデータを含み、d)前記更なるデータサブセット及び前記更なるパリティデータから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成し、e)前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより元のデータセットを形成する、ように構成されたプロセッサを備える、装置が提供される。
【0040】
必須ではないが、前記プロセッサは、更に、前記データサブセット及びパリティデータのうちの1つ又は複数に対応づけられた認証コードを回収し、前記対応づけられた認証コードを用いて、前記データサブセット及びパリティデータのうちの1つ又は複数を認証し、認証に合格しなかったデータサブセットを、前記回収されたデータサブセット及びパリティデータから再生成することにより、再生成されてデータサブセットを形成する、よう構成されている。
【0041】
本発明の第5の側面では、データファイルを記憶するためのデータ記憶媒体であって、データサブセットと、パリティデータと、認証コードとを含み、前記データサブセットは更なるデータサブセットを生成するために組み合わせ可能であり、前記更なるデータサブセットは前記データファイルを生成するために組み合わせ可能であり、前記認証コードにより前記データサブセットを認証することができ、前記パリティデータは、失われたデータサブセット又は認証に合格しなかったデータサブセットを再生成するために、前記データサブセットと組み合わせることができる、記憶媒体が提供される。
【0042】
必須ではないが、前記データ記憶媒体はコンパクトディスク、DVD、ハードディスクドライブ、ソリッドステートドライブ、フラッシュメモリ、及びデジタルテープからなるグループから選択してもよい。
【0043】
必須ではないが、前記データファイルは、マルチメディアファイル、オーディオファイル、ビデオファイル、MPEGファイル、MP3ファイル、音楽ファイル、データベース、及びバイナリファイルからなるグループの中から選択してもよい。
【0044】
本発明の第6の側面では、データを送信する方法であって、a)前記データを分割して、複数のデータサブセットとして送信されるようにするステップと、b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、c)前記複数のデータサブセットとパリティデータとを送信するステップと、を含む方法が提供される。これにより、失われたデータが性生成できるので、データがよりセキュアに、且つより高い信頼性をもって送信されるようになる。更に、データが生成されるのに伴い、誤り率を低減するか、又は低い使用パワーにて似たような使用可能なデータレートを維持可能とするかにより、使用される通信チャンネルがよりよく利用される。
【0045】
必須ではないが、前記送信するステップは、i)前記複数のデータサブセット及び前記パリティデータの1以上に対してステップa及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成するステップと、ii)前記更なるデータサブセットと前記更なるパリティデータとを送信するステップと、を含んでいてもよい。これにより信頼性とセキュリティが向上する。
【0046】
必須ではないが、前記データサブセット及び前記パリティデータのいずれか又は全部が、異なる伝送手段を用いて送信されるようにしてもよい。
【0047】
好適には、前記異なる伝送手段は、有線、無線、インターネットプロトコル、及びモバイル通信からなるグループから選ばれた1又は複数の手段であってよい。
【0048】
好適には、前記データサブセットのいずれか又はすべてが、異なる複数のチャンネルを介して送信されてもよい。
【0049】
好適には、前記チャンネルはモバイル通信チャンネルであってよい。これを携帯電話に実装することで、通信のセキュリティ及び信頼性を向上させてもよい。
【0050】
必須ではないが、前記異なる複数のチャンネルは、異なる複数の無線周波数であってもよい。
【0051】
好適には、前記異なる複数のチャンネルの選択はあらかじめ定められていてもよい。これにより、受信機がそのデータを正常に又はより容易に受信することが可能となる。
【0052】
必須ではないが、前記方法は、前記異なる複数のチャンネルの選択結果を送信するステップを更に含んでいてもよい。
【0053】
好適には、前記選択結果はコードとして送信してもよい。これは、ユーザに選択可能としてもよいし、自動的に実施してもよい。コードは、送信器及び受信機の間で知られたものでもよいし、それら両者の間でセキュアに送信してもよい。
【0054】
必須ではないが、この方法は、前記データを暗号化するステップを更に含んでいてもよい。これによりセキュリティが向上する。この代わりに又はこれに加えて、前記コードを暗号化してもよい。
【0055】
本発明の第7の側面では、データを受信する方法であって、a)データサブセット及びパリティデータを受信するステップと、b)前記受信したデータサブセット及びパリティデータから、失われたデータサブセットを再生成することにより、再生成されたデータセットを形成するステップと、c)前記データサブセットと、再生成されたデータサブセットと、を組み合わせるステップと、を含む方法を提供する。
【0056】
必須ではないが、前記再生成されたデータサブセットは複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは更なるデータサブセットと更なるパリティデータとを含み、前記組み合わせるステップは、d)前記更なるデータサブセットと更なるパリティデータとから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成するステップと、e)前記更なるデータサブセットと、再生成された更なるデータサブセットと、を組み合わせることにおり、元のデータセットを形成するステップと、を含んでもよい。
【0057】
必須ではないが、前記受信したデータは暗号化されており、前記方法は更に、f)前記元のデータセットを復号するステップ、を含んでいてもよい。
【0058】
好適には、前記受信するステップは、前記データサブセット及びパリティデータのうちのいずれか又はすべてを、異なる複数のチャンネルから受信するステップを含んでいてもよい。
【0059】
好適には、前記異なる複数のチャンネルは、異なる複数の無線周波数であってもよい。 好適には、前記異なる複数のチャンネルは、複数の異なる携帯電話無線チャンネルであってもよい。
【0060】
必須ではないが、前記方法は、どのチャンネルがどのデータサブセット及びパリティデータを含んでいるかを示す情報を含むチャンネル情報を受信するステップを更に含んでいてもよい。
【0061】
好適には、前記組み合わせるステップでは、前記データサブセットと再生成されたデータサブセットとを、前記受信したチャンネル情報に基づき組み合わせてもよい。
【0062】
必須ではないが、前記データサブセットとパリティデータのうちのいずれか又はすべてを搬送する前記チャンネル群が受信の間に変化してもよい。このチャンネルホッピングにより、不正な受信者が元のデータをデコードしたり音声コールを盗聴したりすることをより困難にすることができる。
【0063】
好適には、前記データは、オーディオデータ、携帯電話データ、パケットデータ、ビデオデータ、リアルタイムデュプレックスデータ及びインターネットデータからなるグループから選択されたものであってもよい。更に、本発明の方法は他のデータ種類にも適用可能である。
【0064】
本発明の第8の側面では、データを送信するための装置であって、a)前記データを分割して、複数のデータサブセットとして送信されるようにし、b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにし、c)前記複数のデータサブセットとパリティデータとを送信する、ように構成されたプロセッサを備える、装置が提供される。プロセッサは、ハードウエア又はソフトウエアとして格納された処理ロジックを有していてもよい。
【0065】
好適には、前記プロセッサは、i)前記複数のデータサブセット及び前記パリティデータのいずれか1つ又は複数に対してステップa及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成し、ii)前記更なるデータサブセットと前記更なるパリティデータとを送信する、ことにより送信を行うよう構成されていてもよい。
【0066】
本発明の代休の側面では、データを受信するための装置であって、a)データサブセット及びパリティデータを受信し、b)前記受信したデータサブセット及びパリティデータから、失われたデータサブセットを再生成することにより、再生成されたデータセットを形成し、c)前記データサブセットと、再生成されたデータサブセットと、を組み合わせる、ように構成されたプロセッサを備える、装置が提供される。
【0067】
好適には、前記再生成されたデータサブセットは複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは更なるデータサブセットと更なるパリティデータとを含み、前記プロセッサは、d)前記更なるデータサブセットと更なるパリティデータとから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成し、e)前記更なるデータサブセットと、再生成された更なるデータサブセットと、を組み合わせることにより、元のデータセットを形成する、ことにより前記データサブセットを組み合わせるよう構成されていてもよい。言い換えれば、前記データは、更なるサブセットと更なるパリティデータを形成するようにカスケード化されていてもよい。元のデータは、失われたデータサブセットをパリティデータと正常に受信されたデータとから生成しつつ、そのカスケード化処理の逆の処理を実行することにより、再生成してもよい。
【0068】
本発明の第10の側面では、これまでに説明した装置、すなわち送信装置及び/又は受信装置を有するモバイルハンドセットが提供される。
【0069】
必須ではないが、上述のデータ、すなわち元のデータ、送信されるデータ、音声データ、又は安全に記憶されるべきデータは、基準データファイルに対する差分データであり、前記方法は、元のデータを前記基準データファイルと比較することにより前記差分データを求めるステップを更に含んでいてもよい。これにより、根底(元)のデータが制限されたすなわち保護された環境から離れる必要なく、データをセキュアに記憶又は送信することができる。このオプションの特徴は、以上に記載した各方法、各装置に対して実装可能である。
【0070】
差分すなわちデルタ(Δ)データが、複数のデータサブセットが組み合わされた形で(又は特定のサブセットが喪失、破損又はその他の態様で使用不可能になっていたり、認証に合格しなかったりした場合には、再生成されたサブセット群が)、記憶場所から検索されるか又は送信機から受信されると、前記プロセッサ又は前記方法は、差分データを基準データファイルに適用して根底のデータを求めるステップを行ってもよい。
【0071】
この方法は、例えば、コンピュータ装置上で実行されるコンピュータソフトウエアとして実装してもよい。このソフトウエアは、媒体上に格納されているか、あるいは信号として伝送される。例えば、1つ又は複数のコンピュータ装置は、Windows(登録商標)、Apple OS X、UNIX(登録商標)ベースのシステムなどといった適切なオペレーティングシステムを実行するデスクトップパーソナルコンピュータ又はサーバコンピュータでよい。コンピュータ装置の一例は、ハードディスクドライブその他の記憶媒体、キーボードやマウスなどの入力装置、及び表示画面を備えていてもよい。
【0072】
必須ではないが、この方法の各ステップは、単一のマシン、コンピュータ、若しくは、イントラネット又はインターネットなどのネットワークに接続された一群のコンピュータにて実行してもよい。
【0073】
本発明は、様々な方法で実現し得るものであり、以下では、単なる例示のために、添付の図面を参照しつつ、実施の形態を説明する。
【図面の簡単な説明】
【0074】
【図1】本発明の1つの側面に従う、単なる例示のためのデータの記憶のための方法のフローチャートである。
【図1a】図1に示された方法に類似の別の方法のフローチャートである。
【図2】図1の方法を用いて記憶されたデータを模式的に示す図である。
【図2a】図1aの方法を用いて記憶されたデータを模式的に示す図である。
【図3】図1の方法に従って記憶されたデータを模式的に示す図である。
【図3a】図1aの方法に従って記憶されたデータを模式的に示す図である。
【図4】図1の方法に従って記憶された、複数のクラスタに分散されたデータを持木的に示す図である。
【図4a】図1aの方法に従って記憶された、複数のクラスタに分散されたデータを持木的に示す図である。
【図5】本発明の更なる側面に従う、単なる例示のためのデータの記憶のための方法のフローチャートである。
【図6】本発明の更なる側面に従ってデータを記憶するのに用いられるネットー枠を模式的に示す図である。
【図7】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。
【図7a】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。
【図8】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。
【図8a】本発明の更なる側面に従う、単なる例示のための通信システムを模式的に示す図である。 これら図面は簡潔さを旨として記載されており、必ずしも縮尺通りに描かれているとは限らない。
【発明を実施するための形態】
【0075】
格納対象のデータは、例えば、バイナリファイルの形である。このデータは、複数のサブセット(部分)に分割されていてもよい。それら複数のデータのサブセットからパリティデータを生成し、それら複数のデータのサブセットのうちの1つ又は複数のサブセットが破壊されても、その失われたサブセットが残りのサブセット群とパリティデータとから再生できるようにしてもよい。パリティデータすなわちコントロールデータは、誤り検出の目的又は失われたデータの再生を可能にするために、元のデータから生成される。しかし、パリティデータは、元のデータに含まれる情報を超えるいかなる付加的な情報をも含んではいない。そのようなパリティデータの生成を実現し得るいくつかの論理演算がある。例えば、2つのバイナリ数に対して排他的論理和(XOR)を適用すると、結果として第3のバイナリ数が生成され、これがパリティ数である。元の2つのバイナリ数のいずれかが仮に失われたとしても、失われたバイナリ数は、単に残ったバイナリ数とパリティ数との間でXORを実行することにより復元され得る。パリティデータの計算についての更に詳細な説明については、http: //www. pcguide.-com/ref/hdd/perf/raid/concepts/genParity- c. htmlを参照されたい。パリティデータが計算された、すべてのデータサブセットとパリティデータとは別々の又は離れた複数の場所に格納してもよい。
【0076】
しかし、更なる追加の記憶場所を利用するために、パリティデータ及び複数のデータサブセットの各々を更に複数のサブセットに分割して更なるパリティデータを生成してもよい。このようにして、利用可能なすべての記憶場所が活用されるまで、又は場所数があらかじめ定められた限度に達するまで、カスケード状に次々とデータサブセット群が生成されるようにしてもよい。データは逆のプロセスを用いて復元してもよい。これには、失われたデータサブセットを、残りのデータサブセットとパリティデータから適切な再生成計算又はアルゴリズムを用いて再生成すればよい。読み出しプロセスは、1つのオリジナルデータが復元されるまで続けられる。
【0077】
1つの別の実施例では、データサブセットの真正性の確認に用いるために、データサブセット及び/又はパリティデータのうちの任意のものに対して認証コード又はハッシュコードを対応づけてもよい。真正なデータサブセットは、当該データサブセットの生成の後で故意に又は偶然に変化又は変更されてしまうことはないであろう。この別の実施例又はそのバリエーションは、この文書中を通して認証の実施例として説明される。
【0078】
図1は、データを記憶するための一例の方法10を示すフロー図である。ステップ30では、元のデータ20がデータサブセットA及びBへと分割される。元データが2つの等しい部分に分割されて、データサブセットAとBとが同サイズになるようにしてもよい。ゼロパディングを用いてサブセットAとBとが確実に同サイズになるようにしてもよい。例えば、パリティデータPを生成する前に、サブセットA及びBの末尾に付加的な0のバイト(又はビット群)を追加してもよい。データ20がサブセットA及びBへと分割された後、ステップ40にて、それらサブセットAとBに対して排他的論理和(OR)演算を行って、パリティデータセットPを生成してもよい。この代わりに、分割又は分離のステップ30の間にパリティデータPを生成してもよい。
【0079】
図1aにフロー図10’として示される認証の実施例の方法では、サブセットA及びBの生成の後、ステップ45でハッシュ関数h(n)が適用される。このハッシュ関数は、ハッシュコードh(A)及びh(B)を生成する。パリティデータPについてもハッシュを求め、ハッシュコードh(P)を生成してもよい。ハッシュ関数は、ハッシュ関数の実行又は結果として得られるハッシュコード同士の比較のための計算機パワーが受け入れ可能であるか又はシステムの性ゲインに収まるように選べばよい。ハッシュ関数は、サブセットA,B及び/又はパリティデータP(すなわちA,B及びPのうちの少なくとも1つ)に対して適用してもよい。任意の組み合わせにおいてデータサブセット又はパリティデータのうちの1つ又は複数のハッシュを求めないことにより、コンピュータのオーバーヘッドを削減してもよい。
【0080】
その結果得られる2つのデータサブセットA及びBとパリティデータセットP(及びオプションのハッシュコード)は、ステップ50にて格納してもよい。サブセットA及びBとパリティデータセットPは例えばメモリ又はハードディスクドライブに記憶してもよい。方法10は、この点でループしてもよい。ステップ60で、使用可能又は必要とされる記憶場所が更にあるかどうかが判定される。あれば、この方法はループしてステップ30に戻り、データサブセットA,B及び/又はパリティデータPのうちのいずれか又は各々が、新たな複数のサブセット及び更なるパリティデータセットへと更に分割される。ループは分割され生成される各データサブセット及び各パリティデータについて、使用可能な記憶場所が無くなるまで続行され、この方法はステップ70で停止する。
【0081】
認証の実施例では、データサブセットA及びB及び/又はパリティデータPと一緒に、ハッシュコードすなわち認証コードを、ヘッダ情報として又はそれらとは別に、例えば専用のハッシュライブラリ又はハッシュ記憶部に、記憶してもよい。
【0082】
更なる記憶場所があってこの方法のループが生じる場合に、分割データの最下層レベル、すなわち途中のデータサブセットではなく実際に記憶されるデータに達するまで、延期するようにしてもよい。これにより、効率が向上する。
【0083】
認証をしない実施例では、方法10のループの最初の回では、3つの別々のデータファイル(A,B及びP)が結果として得られ、2回の完全なループの繰り返しにより9つの別々のデータファイルが、3回の完全な繰り返しにより27個の別々のデータファイルが、それぞれ結果として得られる。別の例では、各データサブセットを同程度まで分割する必要は必ずしもない。使用可能な記憶場所がたくさんある場合、あらかじめ定められた最小サイズのサブセットが生成されるまで、サブセットを分割して更なるサブセットを生成するようにしてもよい。記憶場所群の更なる利用には、別の例として、データ紛失に対する復元力を向上させるために単純に複製することが含まれていてもよい。
【0084】
図1aに示される任所運も実施例については、3つの別々のデータファイル(A,B及びP)が生成されると共に、3つのハッシュコード(Ah,Bh及びPh)が生成される。
【0085】
データ20が9つの別々の場所へと分割されたとして、それらデータセットのうちの4つが紛失又は破損(これはオプションのハッシュコード比較により検出可能)しても、常に元のデータセット20が再生成可能とすることができる。4つよりも多くが失われた場合でさえ、結果として元のデータセット20を正確に再生することもできるが、これはどのセットが失われたかに依存するので保証の限りではない。
【0086】
図1aに示されるハッシュコードをすべての記憶したデータファイル及び/又はパリティデータについて生成して、データの破損又は調整が生じていないことを補償できるようにしてもよい。
【0087】
図2は、図1に示される方法を1回実行したときに結果として得られるデータを模式的に示す図である。方法のステップと同様のものには同じ参照符号が付されている。元のデータセット20がバイト単位に分割され、データサブセットA及びデータサブセットB(すなわち1バイトのブロックサイズ)が生成される。排他的OR演算によりパリティデータPが生成される。3つの別々の記憶場所が使用可能な場合、方法10はこの段階で停止し、3つの分散された別々のデータサブセットA,B及びPを含んだデータクラスタ150が結果として得られる。
【0088】
図2aは、ハッシュコードを含んだデータを模式的に示す別の例の図である。
【0089】
図3は、方法10のステップ30,40及び50を更に繰り返した場合の結果を示す。この場合、9つの別々の記憶場所が使用可能であり、3つのデータセットA,B及びPの各々は例えば更にそれぞれ3つのデータサブセットへと分割される。
【0090】
図3aに示すように、認証の実施例では、ハッシュコードはデータサブセット及び/又はパリティデータの最下層レベルAA,AB,AP,BA,BB,BP,PA,PB及びPPにのみ必要とされる。なぜならこれらのファイルのみが後の再生成のために格納されることになる、すなわちそれらは読み出されるときに真正性を保証するために認証を必要とするからである。
【0091】
カスケード状に次々と生成されるデータセットの中の最下層レベルのデータセットについて、様々なハッシュコードが生成され得る。
【0092】
この追加の繰り返し分割230により、データサブセットAが分割されて更なるデータセットAA及びABと更なるパリティデータAPが形成される。同様に、データサブセットBがBA及びBBへと分割され。これらを一緒に用いてパリティデータBPを形成するようにしてもよい。パリティデータPは、PA,PB及びPPへと分割してもよい。この方法のこの実施例では、3つのデータサブセットのうちの各々は同じサイズを持つものであってもよい。これら9つのデータサブセットの各々を記憶するのに用いられる9つの別々のデータ記憶位置は第2レベルのクラスタ250を形成してもよく、このクラスタ250は図4として更に詳しく示される(認証の実施例については図4aを参照)。
【0093】
すなわち、第1レベルのクラスタ150は第2レベルのクラスタ250を形成するために拡張されている。このように、元の3つのデータセットA,B及びPを記憶する必要はない(ただし、データ損失に対する復元力を向上させるための別の方法として、それらを記憶するようにしてもよい)。なぜなら、それらは第2レベルのクラスタ250内の9つのデータサブセットからそれぞれ再生することができるからである。方法10のループは、使用可能なすべての記憶場所が使用し尽くされるまで、又は各サブセットのサイズがあらかじめ定められた限界値に達するまで、又は各サブセットのサイズが特定のレベルまで小さくなるまで、必要な回数だけ繰り返してもよい。
【0094】
図5は、図1に示された方法10に従ってデータを記憶するのに用いられるシステム300を模式的示す図である。図5に示されたシステムは、認証の実施例に従ってシステム400の安全性(セキュリティ)及び信頼性を拡張するために用いられる追加オプションのステップ群を示している。中央サーバ360は、この方法を管理し、ユーザからシステムへの入力のためのリクエストを受け取る。ユーザはログオンし、暗号化鍵320を付与される。更に、(一意な)ハッシュコードの組がステップ45で生成されるようにしてもよく、それらハッシュコードはファイルの一意な識別情報として機能し、真正性を保証するのに用いてもよい。暗号化鍵はハッシュコードを生成するのに用いられる。この実施例では、ファイルがデータ20として記憶されている。データベース370は、ログイン情報及び暗号化鍵を記憶するのに用いられ、また記憶すべきファイルの名前を記憶するのにも用いられる。ユーザはステップ340でデータベースに登録を行ってファイル名を生成し、データファイルはサブセットA及びBへと分割され、それらデータサブセットからパリティデータPが生成される。データサブセットのそれぞれに対して、ステップ350にて識別情報が付与され、それら識別情報はデータベース370で管理される。複数の別々の記憶場所に対してネットワークを介してアクセス可能であり、それら複数の記憶場所は、使用可能な記憶場所群のプールを形成する。サーバ360は、実行されるべき分割の繰り返しの最大レベルを決定してもよく、この最大レベルはあらかじめ定められた設定値またはシステムパラメータにより決定してもよい。またサーバ360は、プール380内の個々の別々の記憶場所が使用可能かどうかを監視する。
【0095】
このように、個々のユーザは、特定のファイル群又はデータ記憶システム全体を、使用可能なプール380から任意の数の別々の記憶場所にわたってバックアップしてもよい。サーバ360は、それら記憶を、ユーザには見えない処理レイヤ(層)として管理してもよい。言い換えれば、いったんユーザらがシステムにアクセスすると、データの記憶部は、ユーザにとっては、通常の記憶及び検索のように見える。元のデータ20は、記憶場所のプール380から検索することができ、失われたデータがあればそれはパリティデータPを用いて、いかなる要求されたデータレイヤから再生成してもよい。サーバ360は、データのカスケード化(段階的に次々とサブセットに分割すること)のレベル、及び各データサブセットを常に監視している。また、サーバは、ハッシュコードを記憶し、管理しており、それらハッシュコードは、データサブセット群及びパリティデータと一緒に、又は別々に、記憶されてもよい。
【0096】
更に、データサブセットは暗号化鍵を用いて暗号化してもよく、ハッシュコードを用いてタンパー防止又は歪み防止機能を組み込んでもよい。このように、図5に示されるシステム300は、機密情報を格納するユーザに対して付加的な安全性を提供し、個々の別々の記憶場所のうちのいずれか又はすべてにアクセスできる第三者は、サーバ360によって管理されている元の暗号化鍵が無ければ、元のデータ20を再生することはできない。別の例では、暗号鍵は必要とされないが、元と同じハッシュコードを持つ改変したデータサブセットを生成するのには、不可能なほどに高い計算機パワーが必要とされる。また、更にセキュリティを高めるために、暗号鍵を用いてデータサブセットを暗号化してもよい。記憶プール380とユーザとの間のデータサブセットのやりとりが第三者から傍受されても、いかなるデータもその暗号鍵がなければ第三者には利用可能な状態にはならず、最小数のデータサブセットのコピーを得ることさえできない。
【0097】
方法10を実行するのに用いられるシステムの更なる例が図6に示される。図6に示されるシステム400は、インターネットやイントラネットなどのネットワークにまたがって情報を安全に分散するために用いられる。インターネット又はウェブページ420のサブセット(部分集合)群は、中央サーバ410を介してユーザマシン440に安全に分散されてもよい。中央サーバ410は、ウェブページ420を取得し、それらウェブページを図1に示される方法10に従って、別々の記憶場所に格納する。データサブセットを暗号化及び/又はハッシュ演算することで、図5を参照して説明したように、認証機能を提供してもよい。中央サーバ410は、ユーザマシン440に対し、1つ又は複数の復号コードと、特定の記憶場所430からデータを識別してその場所を求めるための情報と、元のウェブページ群420を形成するデータをどのように再生成するかの情報と、を供給する。このように、元のデータ20が別々の記憶場所430に分散されているので、ウェブページ群420は、もはや障害や攻撃を受ける単一の点(single point of failure or attack)(例えば単一のウェブサーバがダウンする)にはなりにくい。更に、ユーザコンピュータ440のネットワークトラフィックを傍受するいかなる第三者も、中央サーバ410から供給される復号鍵及び再生成情報がなければ、ウェブページ群420を形成する元データを復号又は再生することはできないであろう。
【0098】
データサブセット群及び/又はパリティデータを再ハッシュ(rehash)し、その結果得られるハッシュコードを元のものに対応するハッシュコードと比較することにより、改変を検出してもよい。相違が検出された場合。このデータサブセット又はパリティデータは、拒否され、認証されたデータセット群及び/又はパリティデータのみを用いて再生成される。ハッシュコードによる認証に失敗したデータサブセット(又は失われるか又は使用不能になったデータサブセット)のみが、再生又は再生成の必要がある。
【0099】
このようなセキュアなシステムは、例えば銀行業務のトランザクション、又はセキュアデータの他の携帯、又はシステムユーザが更なるプライバシーやセキュリティを要求するような場にふさわしい。
【0100】
中央サーバ410は、入手可能なインターネットウェブサイト又は特定の個別のウェブサイト群の全体を記憶又はキャッシュすることができ、特定の加入ユーザのみにこれらを利用可能にするようにしてもよい。中央サーバ410は、サーチエンジンの機能又はその他の中央の情報統合装置の機能を実行してもよい。このようにサーチエンジンに問合せを行うことで、復号鍵とウェブサイト又は他の検索可能な文書の場所を求めて再生成するのに用いられる情報とを含んだ検索結果が提供されるようにしてもよい。
【0101】
認証に実施例に従ったこのような記憶システムの更なる用途は、質の高い媒体を、データの歪みや紛失を避けつつ記憶、再生することである。例えば、質の高いオーディオ・ビデオ記録は、高レベルの誤り検出を用いることにより得られる。各データサブセットは、認証コード又はハッシュコードを用いることで、真正かどうかのチェックを受ける(例えば損傷)。この認証テストに合格しないデータサブセットは、受け付けられず、パリティデータと認証に合格したデータサブセット群とを用いて再生成される(パリティデータもチェックされる)。
【0102】
例えば、この記憶方法は、ハードディスクドライブ、CD、DVD、ブルーレイ(登録商標)などの光学ディスク、MP3及びMPEGタイプのエンコードのようなファイルエンコードなどに実装してもよい。この方法は質の高いマルチメディアファイルを生成するのに用いてもよい。
【0103】
図7は、通信システムを模式的に示している。2つの通信装置500及び510が,互いにデータを送受信している。これは、携帯電話ネットワークなどの通信ネットワークを介して、又は、双方向無線のように直接に行われる。以下の例では、一例として音声データが用いられる。しかし、ビデオ、ウェブ又はインターネット、及びデータファイルなどのような他の多くの種類のデータを送受信してもよい。
【0104】
図7に示されるように、データ記憶について図1を参照して説明した方法と同様の方法を用いて、音声データは複数のデータサブセットとパリティデータに分割される。これらのデータサブセットA,B及びパリティデータPは、個別のチャンネルC1,C2及びC3を介して別々に送信される。これのデータは、他の方式に従って一緒に又は別々に送信されるとともに、異なる2つの媒体、例えば無線、ケーブル及び光ファイバー送信の組み合わせ、を用いて送信されるようにしてもよい。分割の機能は、通信装置500内、又はモバイル通信基地局等の送信ネットワーク施設内で実行されてもよい。説明される機能を実装するために、携帯電話に対して追加のハードウエアを付加してもよい。この代わりに、その機能がソフトウエアとして実装されてもよい。
【0105】
データ記憶の実施例の場合と同様、別の認証の実施例として、ハッシュ関数又は他の認証のための関数からハッシュコードを生成し、送信の前にデータサブセットと対応づけてもよい。この認証実施例が図7aに示される。
【0106】
データサブセットA及びBは、分割処理の逆の処理により、組み合わされて元の音声データを形成するようにしてもよい。サブセットA又はBのどちらかが受信したデータから失われた場合、又はハッシュマッチングテストに合格しない場合、上述の記憶データの検索の場合と同様の方法で、失われたデータを、パリティデータPを用いて復元してもよい。このように、チャンネルC1,C2又はC3のうちのただ1つしか受信しない盗聴者は、音声データを再構築することができない。このように、この方式によれば、より安全でより信頼性の高い通信システム及び方法を提供することができる。各チャンネルのモード、タイプ又は周波数を異ならせることによりセキュリティを更に向上させてもよい。図7aに示される認証の実施例においてハッシュ関数の認証チェックにより、データ完全性を提供してもよい。
【0107】
図8は、図7に示される実施例に似た、更なる実施例を模式的に示す。ただし、この更なる実施例では、送信の前に更なるカスケードすなわち多層のデータ分割を実行する。音声その他の送信データを再構築するのには、更なるレベルの再組み合わせを用いなければならない。図8に示した例では、このデータ分割及びパリティデータ生成の更なるカスケード化には、各データサブセット及びパリティデータを通信するのに9つのチャンネルが必要となる。このような追加のカスケードは、データ損失に対する更なる復元力をもたらす。それらチャンネルのうちの5つから送信されたデータが失われても、データは完全に再構築することができる(ロスレス:無損失)。更にカスケード化して更なる復元力を提供してもよい。上述のデータ記憶の例と同様、データチャンネルの数は上の例と異なっていてもよい。例えば、各カスケード(分割の各段階)において、データを3つ、4つ又は5つに分割してもよい。必要なセキュリティ又は信頼性のレベルに従って、更なるカスケードレベルを用いてもよい。これにより使用可能なチャンネル(通信路)容量が更に満たされるが、そのようにすることによりデータ損失の確率を同じに維持したまま各チャンネルのパワー要件(必要条件)が低減される(シャノンの定理又は通信路符号化定理:noisy-channel coding theorem)。
【0108】
図8aに示すように、送信されるデータサブセット及び/又はパリティデータ(カスケードにおける最下層レベル)のいずれか又はその各々が、適用されるハッシュ関数を持っていてもよい。ハッシュコードは受信機へと送信される。
【0109】
また通信システムは、セキュリティ又は機能についての更なるレイヤ(層)を有していてもよい。データを受信する通信システム510は、どのデータサブセット及びパリティデータがどのチャンネルを通って送信されるのかに関する情報を必要とするかも知れない。図8及び図8aに示される例では、チャンネルC1はデータサブセットAAを送信するのに用いられ、C2はABのために用いられる,といった具合である。しかし他の組合せを用いてもよい。このような情報は、送信の前又は送信中に、例えばチャンネルとデータサブセットの特定の組合せを示すコードを送信するなどにより、通信装置500,510の間で交換してもよい。その特定の組合せは、送受信の間に変化してもよい。このことは、あらかじめ設定された又は定められた方式に従っていてもよく、又は現在の特定の組合せが、送信機と受信機との同期を維持するために送信されてもよい。通信装置500,510の両方が同時に送受信を行ってもよいし、別々に送受信を行ってもよい。
【0110】
セキュリティの更なる予防措置として、データを、基準ファイルに対する差分データすなわちデルタ(Δ)データとして記憶又は送信してもよい。この場合、データを検索又は受信するには、例えば基準ファイルへのアクセス又は基準ファイルの知識が必要とされる。
【0111】
この更なるセキュリティ予防措置は、ある種類のデータを送信したり記憶したりするのに実用上の制約又は法的な性客のあるようなところで用いてもよい。例えば、銀行業務情報又は機密情報の記憶は、特定の組織又は特定のサイトに制限されているかもしれない。しかし、これらのデータの損失のリスクが少なくなるようにデータを記憶することは、依然として必要とされるかも知れない。この場合、これらの種類の情報を前述のように異なる複数の記憶場所にまたがって分散又は送信することは,例えば暗号化を用いていたとしても、不可能かも知れない。この問題に対しては、根底のデータの代わりに差分データすなわちデルタデータを送信又は分散することにより対処してもよい。この状況では、データ保護要件は満足され、データは紛失又は破損に対して安全に保護され得る。
【0112】
例えば、この更なる変形例の処理の一例として、例えばファイルA(又は信号A)が記憶又は送信するべき根底のデータであるとする。ファイルBは基準ファイルであるとする。UNIX(登録商標)のdiff,rdiff又はrsyncなどの比較関数を用いて、ファイルAとBとの比較を行い、ファイルCを生成してもよい。
【0113】
更に別の例では、差分ファイルは、ファイルAとファイルBとにXOR関数を適用(例えばバイトごとに)することにより生成してもよい。
【0114】
このように、ファイルCは、ファイルAとファイルBとの差分を表現又は符号化したものであり、ファイルAは、ファイルBの知識又はファイルBへのアクセスがなければ、ファイルCから再生成することはできない。ファイルBは様々な異なった形態をとってもよく、例えばランダムに生成された文字列、文書、オーディオファイル、ビデオファイル、書籍のテキストデータ、あるいは、知られている又は生成された他のデータセットであってもよい。知られたデータファイル(例えばよく知られた歌のMP3ファイル)を用いることの利益は、もしユーザのコンピュータが紛失、盗難又は破損に遭ったとしても、その知られている、公的に入手可能な基準ファイルの更なるコピーを取得することにより、根底のデータを再生成し得ることである。ユーザは、自分がどの特定のファイルを利用しているのか(例えばそのユーザが好きな歌のMP3ファイル)を単に覚えていればよい。ユーザには無数の選択肢があるので、よく知られたデータファイルを用いたとしても依然として比較的高いセキュリティを維持できる。
【0115】
ファイルCからファイルAを再生成するために、差分又はデルタデータのファイルCを基準ファイルBに適用するための関数を用いてもよい。ファイルAの再生成のために、差分すなわちデルタデータのファイルCがどのように生成され符号化されたかに応じて、様々な方法が用いられる。XORの例では、ファイルAを再生するために、ファイルCとファイルCに対して更にXOR関数を適用してもよい。この適用は、例えば1バイトごとに行われてもよい。ファイルAとファイルBのサイズが異なることもよくあるであろう。ファイルAがファイルBよりも小さい場合は、単に、バイト又はファイル部分の各々の比較が完了したら、処理を停止すればよい。ファイルAがファイルBよりも大きい場合には、ファイルAの各バイトの比較が完了するまで、ファイルBの何回かコピーして用いればよい。その他の変形、差分処理及び比較関数を用いてもよい。
【0116】
差分すなわちデルタファイル(又はデータストリーム)が生成されると、これは上述の元データとして用いられ、(例えば音声データとして)送信又は記憶される。送受信の実施例では、差分データはデータストリームとして生成されてもよい。すなわち、リアルタイムで送信、受信、符号化、又は復号されてもよい。言い換えれば、差分データは複数のデータサブセットに分割され、パリティデータが生成され、これらデータサブセットが上述の方法に従って分散記憶されたり送信されたりするようにしてもよい。
【0117】
差分データの形態のデータストリームが送信される場合、基準ファイル(B)を、リアルタイムでデータストリームを順に符号化するのに用いてもよい。データストリームが基準ファイルの長さを超えている場合、送信が完了するまでその基準ファイルを再利用してもよい。例えば、音声通信では、送信が開始されるごとに、基準ファイルの最初の部分を、デジタル化された音声又はオーディオデータストリームと比較するために用い、差分データストリームを生成するようにしてもよい。この代わりに、新たな送信の各々について、基準ファイルの中で前回に最後に使用された点から続けることにより、基準ファイルの再利用を減らしてもよい。これは、セキュリティを更に向上させ得る。
【0118】
別々の実施例を説明してきたが、それら実施例の特徴は、相互に入れ替えてもよい。特にデータの操作に関してはそうである。更に、送受信の実施例に関して説明した特徴はデータ記憶の実施例と共に使用してもよいし、その逆のことをしてもよい。
【0119】
当業者には理解されるように、上述の実施例の細部は、添付する特許請求の範囲にて規定される本発明の範囲から逸脱することなく、変更してもよい。
【0120】
例えば、データは、ハードディスク、フラッシュRAM、ウェブサーバ、FTPサーバ、ネットワークファイルサーバ、又はそれらの組合せなどのような、異なる様々な種類の記憶媒体に格納してもよい。上述の例では、個々の繰り返しごとに、ファイルが2つのデータサブセット(A及びB)と1つのパリティデータブロック(P)とに分割されたが、3つ(A,B及びC)、4つ(A〜D)又はそれ以上の数のデータサブセットが生成されるようにしてもよい。
【0121】
上述の例に示したパリティデータはXOR関数から生成されていたが、他の関数を用いてもよい。例えば、ハミング、リード・ソロモン、ゴーレイ(Golay)、リード・マラー(Reed−Muller)、又は他の誤り訂正符号を用いてもよい。
【0122】
データサブセット群は、物理的に別々の場所に記憶されるか、又は同一のハードディスクドライブやクラスタ内であっても論理的に別々の場所に記憶されるようにしてもよい。
【0123】
当業者に明らかなように、上述の様々な実施例の特徴に対して、多くの組合せ、修正又は変更が可能であり、これらも本発明の一部を構成する。

【特許請求の範囲】
【請求項1】
データの記憶方法であって、
a)前記データを複数のデータサブセットに分割するステップと、
b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、
c)前記複数のデータサブセット及び前記パリティデータの各々に対してステップa及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成するステップと、
d)前記更なるデータサブセットと前記更なるパリティデータとを別々の記憶場所に記憶するステップと、
を含む方法。
【請求項2】
請求項1に記載の方法であって、前記更なるデータサブセットと前記更なるパリティデータとは物理的に別々の装置に記憶される、方法。
【請求項3】
請求項1又は2に記載の方法であって、前記ステップcは前記複数のデータサブセット及び前記パリティデータの各々について繰り返される、方法。
【請求項4】
請求項1〜3のいずれか1項に記載の方法であって、追加の記憶場所を設けるステップと、前記追加の記憶場所が設けられるのに伴って、前記ステップa及びbを、前記別々の記憶場所に記憶された前記更なるデータサブセット又は前記更なるパリティデータのいずれかについて繰り返すステップと、を更に含む方法。
【請求項5】
請求項1〜4のいずれか1項に記載の方法であって、前記データを暗号化するステップを更に含む方法。
【請求項6】
請求項1〜5のいずれか1項に記載の方法であって、前記別々の記憶場所は、ハードディスクドライブ、光学ディスク、フラッシュRAM、ウェブサーバ、FTPサーバ、及びネットワークファイルサーバからなるグループから選ばれる、方法。
【請求項7】
請求項1〜6のいずれか1項に記載の方法であって、前記データはウェブページである、方法。
【請求項8】
請求項1〜7のいずれか1項に記載の方法であって、
c1)1つ又は複数の対応する認証コードを生成するために、前記複数のデータサブセット及び前記パリティデータの1つ以上に関数を適用するステップ、
を更に含む方法。
【請求項9】
請求項8に記載の方法であって、前記関数はハッシュ関数である、方法。
【請求項10】
請求項9に記載の方法であって、前記ハッシュ関数は、チェックサム、チェックディジット、フィンガープリント、ランダム化関数、誤り訂正符号、及び暗号学的ハッシュ関数からなるグループから選ばれる、方法。
【請求項11】
請求項8〜10のいずれか1項に記載の方法であって、前記認証コードは前記更なるデータサブセット及び/又はパリティデータと共に記憶される,方法。
【請求項12】
請求項11に記載の方法であって、前記認証コードはヘッダ情報として記憶される、方法。
【請求項13】
別々の記憶場所に記憶されたデータを検索する方法であって、
a)前記別々の記憶場所からデータサブセット及びパリティデータを回収するステップと、
b)前記復元されたデータサブセット及びパリティデータから、失われたデータサブセットを再生成することで、再生成されたデータサブセットを形成するステップと、
c)前記データサブセットと前記再生成されたデータサブセットとを組み合わせることにより、複数の統合されたデータセットを形成するステップであって、前記複数の統合されたデータセットは、更なるデータサブセット及び更なるパリティデータを含むことを特徴とするステップと、
d)前記更なるデータサブセット及び前記更なるパリティデータから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成するステップと、
e)前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより元のデータセットを形成するステップと、
を含む方法。
【請求項14】
請求項13に記載の方法であって、前記データサブセット及びパリティデータは、それぞれ物理的に別々の装置から回収される、方法。
【請求項15】
請求項13又は14に記載の方法であって、前記元のデータセットは暗号化されており、前記方法は更に、
f)前記元のデータセットを復号するステップ、
を含む、方法。
【請求項16】
請求項13〜15のいずれか1項に記載の方法であって、前記別々の記憶場所の位置情報を受信するステップを更に含む、方法。
【請求項17】
請求項13〜16のいずれか1項に記載の方法であって、前記別々の記憶場所は、ハードディスクドライブ、光学ディスク、フラッシュRAM、ウェブサーバ、FTPサーバ、及びネットワークファイルサーバからなるグループから選ばれた1つ又は複数のものである、方法。
【請求項18】
請求項13〜16のいずれか1項に記載の方法であって、
前記データサブセット及びパリティデータのうちの1つ又は複数に対応づけられた認証コードを回収するステップと、
前記対応づけられた認証コードを用いて、前記データサブセット及びパリティデータのうちの1つ又は複数を認証するステップと、
認証に合格しなかったデータサブセットを、前記回収されたデータサブセット及びパリティデータから再生成することにより、再生成されてデータサブセットを形成するステップと、
を更に含む、方法。
【請求項19】
請求項18に記載の方法であって、前記認証コードはハッシュコードであり、前記認証ステップは、前記データサブセット及び/又はパリティデータに対してハッシュ関数を適用することにより比較用ハッシュコードを生成するステップと、この比較用ハッシュコードを、前記データサブセット及び/又はパリティデータに対応づけられた認証コードと比較するステップと、を含む方法。
【請求項20】
請求項1〜19のいずれか1項に記載の方法であって、前記別々の記憶場所はネットワークを介してアクセス可能である、方法。
【請求項21】
データを記憶するための装置であって、
a)前記データを複数のデータサブセットに分割し、
b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、
c)前記複数のデータサブセット及び前記パリティデータの各々に対して前記a及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成し、
d)前記更なるデータサブセットと前記更なるパリティデータとを別々の記憶場所に記憶する、
ように構成されたプロセッサを備える、装置。
【請求項22】
請求項21に記載の装置であって、前記プロセッサは、更に、1つ又は複数の対応する認証コードを生成するために、前記複数のデータサブセット及び前記パリティデータのいずれか1つ以上に関数を適用するように構成されており、前記更なるデータサブセットと前記更なるパリティデータは対応する認証コードと共に記憶されるよう構成されている、装置。
【請求項23】
別々の記憶場所に記憶されたデータを検索するための装置であって、
a)前記別々の記憶場所からデータサブセット及びパリティデータを回収し、
b)前記復元されたデータサブセット及びパリティデータから、失われたデータサブセットを再生成することで、再生成されたデータサブセットを形成し、
c)前記データサブセットと前記再生成されたデータサブセットとを組み合わせることにより、複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは、更なるデータサブセット及び更なるパリティデータを含み、
d)前記更なるデータサブセット及び前記更なるパリティデータから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成し、
e)前記更なるデータサブセットと再生成された更なるデータサブセットとを組み合わせることにより元のデータセットを形成する、
ように構成されたプロセッサを備える、装置。
【請求項24】
請求項23に記載の装置であって、前記プロセッサは、更に、前記データサブセット及びパリティデータのうちの1つ又は複数に対応づけられた認証コードを回収し、
前記対応づけられた認証コードを用いて、前記データサブセット及びパリティデータのうちの1つ又は複数を認証し、
認証に合格しなかったデータサブセットを、前記回収されたデータサブセット及びパリティデータから再生成することにより、再生成されてデータサブセットを形成する、
よう構成されている、装置。
【請求項25】
請求項23又は24に記載の装置であって、更に複数の記憶場所を含む、装置。
【請求項26】
データファイルを記憶するためのデータ記憶媒体であって、データサブセットと、パリティデータと、認証コードとを含み、前記データサブセットは更なるデータサブセットを生成するために組み合わせ可能であり、前記更なるデータサブセットは前記データファイルを生成するために組み合わせ可能であり、前記認証コードにより前記データサブセットを認証することができ、前記パリティデータは、失われたデータサブセット又は認証に合格しなかったデータサブセットを再生成するために、前記データサブセットと組み合わせることができる、記憶媒体。
【請求項27】
請求項26に記載のデータ記憶媒体であって、前記記憶媒体はコンパクトディスク、DVD、ハードディスクドライブ、ソリッドステートドライブ、フラッシュメモリ、及びデジタルテープからなるグループから選択される、記憶媒体。
【請求項28】
請求項26又は27に記載のデータ記憶媒体であって、前記データファイルは、マルチメディアファイル、オーディオファイル、ビデオファイル、MPEGファイル、MP3ファイル、音楽ファイル、データベース、及びバイナリファイルからなるグループの中から選択される、記憶媒体。
【請求項29】
データを送信する方法であって、
a)前記データを分割して、複数のデータサブセットとして送信されるようにするステップと、
b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにするステップと、
c)前記複数のデータサブセットとパリティデータとを送信するステップと、
を含む方法。
【請求項30】
請求項29に記載の方法であって、前記送信するステップは、
i)前記複数のデータサブセット及び前記パリティデータの1以上に対してステップa及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成するステップと、
ii)前記更なるデータサブセットと前記更なるパリティデータとを送信するステップと、
を含む、方法。
【請求項31】
請求項29又は30に記載の方法であって、前記データサブセット及び前記パリティデータのいずれか又は全部が、異なる伝送手段を用いて送信される、方法。
【請求項32】
請求項31に記載の方法であって、前記異なる伝送手段は、有線、無線、インターネットプロトコル、及びモバイル通信からなるグループから選ばれた1又は複数の手段である、方法。
【請求項33】
請求項29〜32のいずれか1項に記載の方法であって、前記データサブセットのいずれか又はすべてが、異なる複数のチャンネルを介して送信される、方法。
【請求項34】
請求項33に記載の方法であって、前記チャンネルはモバイル通信チャンネルである、方法。
【請求項35】
請求項33又は34に記載の方法であって、前記異なる複数のチャンネルは、異なる複数の無線周波数である、方法。
【請求項36】
請求項33〜35のいずれか1項に記載の方法であって、前記異なる複数のチャンネルの選択はあらかじめ定められている、方法。
【請求項37】
請求項36に記載の方法であって、前記異なる複数のチャンネルの選択結果を送信するステップを更に含む、方法。
【請求項38】
請求項37に記載の方法であって、前記選択結果はコードとして送信される、方法。
【請求項39】
請求項1〜12及び29〜38のうちのいずれか1項に記載の方法であって、前記データはバイト単位で分割される、方法。
【請求項40】
請求項1〜12及び29〜39のうちのいずれか1項に記載の方法であって、前記データは2つのデータサブセットに分割される、方法。
【請求項41】
請求項40に記載の方法であって、前記データは、当該データの偶数又は奇数のステータスに従って分割される、方法。
【請求項42】
請求項1〜12及び29〜41のうちのいずれか1項に記載の方法であって、前記パリティデータは、前記複数のデータサブセットに対して論理関数を実行することにより生成される、方法。
【請求項43】
請求項42に記載の方法であって、前記論理関数は排他的論理和である、方法。
【請求項44】
請求項1〜12及び29〜43のうちのいずれか1項に記載の方法であって、前記データを暗号化するステップを更に含む、方法。
【請求項45】
データを受信する方法であって、
a)データサブセット及びパリティデータを受信するステップと、
b)前記受信したデータサブセット及びパリティデータから、失われたデータサブセットを再生成することにより、再生成されたデータセットを形成するステップと、
c)前記データサブセットと、再生成されたデータサブセットと、を組み合わせるステップと、
を含む方法。
【請求項46】
請求項45に記載の方法であって、前記再生成されたデータサブセットは複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは更なるデータサブセットと更なるパリティデータとを含み、前記組み合わせるステップは、
d)前記更なるデータサブセットと更なるパリティデータとから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成するステップと、
e)前記更なるデータサブセットと、再生成された更なるデータサブセットと、を組み合わせることにおり、元のデータセットを形成するステップと、
を含む、方法。
【請求項47】
請求項46に記載の方法であって、前記受信したデータは暗号化されており、前記方法は更に、
f)前記元のデータセットを復号するステップ、
を含む、方法。
【請求項48】
請求項45〜47のいずれか1項に記載の方法であって、前記受信するステップは、前記データサブセット及びパリティデータのうちのいずれか又はすべてを、異なる複数のチャンネルから受信するステップを含む、方法。
【請求項49】
請求項48に記載の方法であって、前記異なる複数のチャンネルは、異なる複数の無線周波数である、方法。
【請求項50】
請求項48及び49に記載の方法であって、前記異なる複数のチャンネルは、複数の異なる携帯電話無線チャンネルである、方法。
【請求項51】
請求項48〜50のいずれか1項に記載の方法であって、どのチャンネルがどのデータサブセット及びパリティデータを含んでいるかを示す情報を含むチャンネル情報を受信するステップを更に含む、方法。
【請求項52】
請求項51に記載の方法であって、前記組み合わせるステップでは、前記データサブセットと再生成されたデータサブセットとを、前記受信したチャンネル情報に基づき組み合わせる、方法。
【請求項53】
請求項48〜52のいずれか1項に記載の方法であって、前記データサブセットとパリティデータのうちのいずれか又はすべてを搬送する前記チャンネルが受信の間に変化する、方法。
【請求項54】
請求項29〜53のいずれか1項に記載の方法であって、前記データは、オーディオデータ、携帯電話データ、パケットデータ、ビデオデータ、リアルタイムデュプレックスデータ及びインターネットデータからなるグループから選択されたものである、方法。
【請求項55】
データを送信するための装置であって、
a)前記データを分割して、複数のデータサブセットとして送信されるようにし、
b)前記複数のデータサブセットからパリティデータを生成することで、前記複数のデータサブセットのうちの1つ又は複数のデータサブセットが、残りデータサブセットと前記パリティデータとから再生成されるようにし、
c)前記複数のデータサブセットとパリティデータとを送信する、
ように構成されたプロセッサを備える、装置。
【請求項56】
請求項55に記載の装置であって、前記プロセッサは、
i)前記複数のデータサブセット及び前記パリティデータのいずれか1つ又は複数に対してステップa及びbを繰り返し、更なるデータサブセットと更なるパリティデータとを生成し、
ii)前記更なるデータサブセットと前記更なるパリティデータとを送信する、
ことにより送信を行うよう構成されている、方法。
【請求項57】
データを受信するための装置であって、
a)データサブセット及びパリティデータを受信し、
b)前記受信したデータサブセット及びパリティデータから、失われたデータサブセットを再生成することにより、再生成されたデータセットを形成し、
c)前記データサブセットと、再生成されたデータサブセットと、を組み合わせる、
ように構成されたプロセッサを備える、装置。
【請求項58】
請求項57に記載の装置であって、前記再生成されたデータサブセットは複数の統合されたデータセットを形成し、前記複数の統合されたデータセットは更なるデータサブセットと更なるパリティデータとを含み、前記プロセッサは、
d)前記更なるデータサブセットと更なるパリティデータとから、失われた更なるデータサブセットを再生成することにより、再生成された更なるデータサブセットを形成し、
e)前記更なるデータサブセットと、再生成された更なるデータサブセットと、を組み合わせることにより、元のデータセットを形成する、
ことにより前記データサブセットを組み合わせるよう構成されている、装置。
【請求項59】
請求項55〜58のいずれか1項に記載の装置を有するモバイルハンドセット。
【請求項60】
請求項1〜12,29〜44のいずれか1項に記載の方法であって、前記データは、基準データファイルに対する差分データであり、前記方法は、元のデータを前記基準データファイルと比較することにより前記差分データを求めるステップを更に含む、方法。
【請求項61】
請求項13〜20のいずれか1項に記載の方法であって、前記データは、基準データファイルに対する差分データであり、前記方法は、前記差分データを前記基準データファイルに適用することにより根底のデータを求めるステップを更に含む、方法。
【請求項62】
請求項45〜54のいずれか1項に記載の方法であって、前記組み合わせられたデータセットは、基準データファイルに対する差分データであり、前記方法は、前記差分データを前記基準データファイルに適用することにより根底のデータを求めるステップを更に含む、方法。
【請求項63】
請求項21〜22,55〜56のいずれか1項に記載の装置であって、前記複数のデータサブセットに分割されたデータは、基準データファイルに対する差分データであり、前記プロセッサは、更に、前記データを前記基準データファイルと比較することにより前記差分データを求めるよう構成されている、装置。
【請求項64】
請求項23又は24のいずれか1項に記載の装置であって、前記元のデータセットは、基準データファイルに対する差分データであり、前記プロセッサは、更に、前記差分データを前記基準データファイルに適用することにより根底のデータを求めるよう構成されている、装置。
【請求項65】
請求項57〜59のいずれか1項に記載の装置であって、前記組み合わせられたデータセットは、基準データファイルに対する差分データであり、前記プロセッサは、更に、前記差分データを前記基準データファイルに適用することにより根底のデータを求めるよう構成されている、装置。

【図1】
image rotate

【図1a】
image rotate

【図2】
image rotate

【図2a】
image rotate

【図3】
image rotate

【図3a】
image rotate

【図4】
image rotate

【図4a】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図7a】
image rotate

【図8】
image rotate

【図8a】
image rotate


【公表番号】特表2012−501508(P2012−501508A)
【公表日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2011−525607(P2011−525607)
【出願日】平成21年9月1日(2009.9.1)
【国際出願番号】PCT/GB2009/002101
【国際公開番号】WO2010/026366
【国際公開日】平成22年3月11日(2010.3.11)
【出願人】(511055566)エクスタス グローバル リミテッド (2)
【Fターム(参考)】