(57)【要約】  分散クラウドストレージシステムは、クライアントプラットフォームと、複数の遠隔のクラウドストレージプラットフォームとの間に論理的に存在するクラウドストレージブローカを含む。クラウドストレージブローカは、クラウドストレージブローカまたはクライアントにだけ知られている鍵を定義する第１および第２のルールに従って、データ項目を複数の部分へと分割し、およびその部分を複数の選択されたクラウドストレージプラットフォームに割り振ることを含むクラウドストレージプロセスの実行を仲介する。データ項目を取り出すことが望ましい何らかの後の時間に、ストレージから鍵が取り出され、ルールが反対に実行されてデータ項目が取得され、および再度組み立てられる。
2014515521.tif 000002
【特許請求の範囲】
【請求項１】
クライアントプラットフォームが、クラウドストレージブローカおよび複数の遠隔のクラウドストレージプラットフォームに動作可能に接続されるクラウドコンピューティングモデルに従ってクライアントにデータストレージサービスを提供するための、クラウドストレージブローカにおける装置であって、
ユーザインターフェースと、
クラウドストレージインターフェースと、
メモリと、
ユーザインターフェース、クラウドストレージインターフェース、およびメモリに動作可能に結合された少なくとも１つのプロセッサであり、
（ａ）データ項目に関連するクラウドストレージサービスを求めるクライアント要求を受け取ること、
（ｂ）データ項目のクラウドストレージのために、複数の遠隔のクラウドストレージプラットフォームの中から、データ項目の割り振られた部分をそれぞれが記憶する選択されたクラウドストレージプラットフォームを選ぶこと、
（ｃ）データ項目を、複数の選択されたクラウドストレージプラットフォームの数に対応する複数の部分に分割する仕方を規定する第１のルールを特定すること、
（ｄ）選択されたクラウドストレージプラットフォームの中に各部分を割り振る仕方を規定する第２のルールを特定すること、および
（ｅ）第１および第２のルールの標示をクライアントに伝達し、それにより、クライアントが、データ項目を、第１のルールに従って部分に分割し、および各部分を、第２のルールに従って、選択されたクラウドストレージプラットフォーム中に割り振ることを可能にすること
を実施するように構成された少なくとも１つのプロセッサと
を備える、装置。
【請求項２】
各データストレージトランザクションに対して使用される第１および第２のルールの少なくとも一方を作成するためのルール生成器と、
各データストレージトランザクションに対して使用される第１および第２のルールの標示を維持するためのファイルストレージインデックスと
をさらに備える、請求項１に記載の装置。
【請求項３】
少なくとも１つのプロセッサが、
（ｆ）データ項目に関連するデータの取出しサービスを求めるクライアント要求を受け取ること、
（ｇ）データ項目を記憶するために使用された第１および第２のルールの標示を特定するために、ファイルストレージインデックスに照会すること、
（ｈ）第１および第２のルールの標示をクライアントに伝達し、それにより、クライアントが、第１および第２のルールの逆を行うことによりデータ項目を取り出し、および再度組み立てることを可能にすること
を実施するようにさらに構成される、請求項２に記載の装置。
【請求項４】
クライアントプラットフォームが、クラウドストレージブローカおよび複数の遠隔のクラウドストレージプラットフォームに動作可能に接続されるクラウドコンピューティングモデルに従ってクライアントにデータストレージサービスを提供するための、クラウドストレージブローカにおける装置であって、
ユーザインターフェースと、
クラウドストレージインターフェースと、
メモリと、
ユーザインターフェース、クラウドストレージインターフェース、およびメモリに動作可能に結合された少なくとも１つのプロセッサであり、
（ａ）データ項目に関連するクラウドストレージサービスを求めるクライアント要求を受け取ること、
（ｂ）データ項目のクラウドストレージのために、複数の遠隔のクラウドストレージプラットフォームの中から、データ項目の割り振られた部分をそれぞれが記憶する選択されたクラウドストレージプラットフォームを選ぶこと、
（ｃ）データ項目を、複数の選択されたクラウドストレージプラットフォームの数に対応する複数の部分に分割する仕方を規定する第１のルールを特定すること、
（ｄ）選択されたクラウドストレージプラットフォームの中に各部分を割り振る仕方を規定する第２のルールを特定すること、
（ｅ）データ項目を取得すること、および
（ｆ）データ項目を、第１のルールに従って部分に分割し、および各部分を、第２のルールに従って、選択されたクラウドストレージプラットフォームの中に割り振ること
を実施するように構成された少なくとも１つのプロセッサと
を備える、装置。
【請求項５】
各データストレージトランザクションに対して使用される第１および第２のルールの少なくとも一方を作成するためのルール生成器と、
各データストレージトランザクションに対して使用される第１および第２のルールのレコード、または第１および第２のルールの標示を維持するためのファイルストレージインデックスと
をさらに備える、請求項４に記載の装置。
【請求項６】
少なくとも１つのプロセッサが、
（ｇ）データ項目に関連するデータの取出しサービスを求めるクライアント要求を受け取ること、
（ｈ）データ項目を記憶するために使用された第１および第２のルールの標示を特定するために、ファイルストレージインデックスに照会すること、
（ｉ）データ項目を取り出し、および再度組み立てるために、第１および第２のルールの逆を実行して、再度組み立てられたデータ項目を得ること、
（ｊ）再度組み立てられたデータ項目をクライアントに送達すること
を実施するようにさらに構成される、請求項４に記載の装置。
【請求項７】
クライアントプラットフォームが、クラウドストレージブローカおよび複数の遠隔のクラウドストレージプラットフォームに動作可能に接続されるクラウドコンピューティングモデルに従ってクライアントにデータストレージサービスを提供するための方法であって、クラウドストレージブローカが、
データ項目に関連するクラウドストレージサービスを求めるクライアント要求を受け取るステップと、
データ項目のクラウドストレージのために、複数の遠隔のクラウドストレージプラットフォームの中から、データ項目の割り振られた部分をそれぞれが記憶する選択されたクラウドストレージプラットフォームを選ぶステップと、
データ項目を、複数の選択されたクラウドストレージプラットフォームの数に対応する複数の部分に分割する仕方を規定する第１のルールを特定するステップと、
選択されたクラウドストレージプラットフォームの中に各部分を割り振る仕方を規定する第２のルールを特定するステップと、
第１および第２のルールの標示をクライアントに伝達し、それにより、クライアントが、データ項目を、第１のルールに従って部分に分割し、および各部分を、第２のルールに従って、選択されたクラウドストレージプラットフォームの中に割り振ることを可能にするステップと
を実施することを含む、方法。
【請求項８】
クライアントプラットフォームが、クラウドストレージブローカおよび複数の遠隔のクラウドストレージプラットフォームに動作可能に接続されるクラウドコンピューティングモデルに従ってクライアントにデータストレージサービスを提供するための方法であって、クラウドストレージブローカが、
データ項目に関連するクラウドストレージサービスを求めるクライアント要求を受け取るステップと、
データ項目のクラウドストレージのために、複数の遠隔のクラウドストレージプラットフォームの中から、データ項目の割り振られた部分をそれぞれが記憶する選択されたクラウドストレージプラットフォームを選ぶステップと、
データ項目を、複数の選択されたクラウドストレージプラットフォームの数に対応する複数の部分に分割する仕方を規定する第１のルールを特定するステップと、
選択されたクラウドストレージプラットフォームの中で各部分を割り振る仕方を規定する第２のルールを特定するステップと、
データ項目を取得するステップと、
データ項目を、第１のルールに従って部分に分割し、および各部分を、第２のルールに従って、選択されたクラウドストレージプラットフォームの中に割り振るステップと
を実施することを含む、方法。
【請求項９】
クラウドストレージブローカおよび複数の遠隔のクラウドストレージプラットフォームに動作可能に接続されるクライアントプラットフォームを含むクラウドストレージシステムにおいて、データ項目の分散クラウドストレージを提供する方法であって、
データ項目を第１のルールに従って複数の部分に分割するステップと、
部分を、第２のルールに従って複数の選択されたクラウドストレージプラットフォームに割り振るステップであり、複数の部分が、複数の選択されたクラウドストレージプラットフォームの数に対応する、ステップと、
後でデータを取り出すために、第１および第２のルールの標示を保持するステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ安全性に関し、より詳細には、分散された「クラウド」コンピューティング環境におけるデータ安全性に関する。
【背景技術】
【０００２】
クラウドコンピューティングは、パケットベースの仮想化された「クラウド」インフラストラクチャからコンピューティング資源およびサービスを提供するための概念であり、顧客は、オンプレミス（ｏｎ−ｐｒｅｍｉｓｅ）のハードウェアおよびストレージ資源を利用するのではなく、遠隔のクラウドサービスプラットフォームから、オンデマンドでコンピューティング資源および／またはサービスにアクセスすることができる。顧客は、オンプレミスストレージ資源の代替または補完するものとして、例えば、オフプレミス（ｏｆｆ−ｐｒｅｍｉｓｅ）データセンタストレージ資源にアクセスするためにクラウドを活用することができる。クラウドコンピューティングソリューションは、プライベートクラウド（例えば、企業のイントラネットの範囲内に存在する）、パブリッククラウド（例えば、インターネット）、またはハイブリッドクラウド（例えば、パブリッククラウドとプライベートクラウドの組合せ）を利用することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、クラウドモデルに関連する問題、およびその広く普及した採用に対する障害は、データ安全性の問題である。クラウドの仮想化された性質は、コンピューティング資源が、複数の装置および／または複数のクラウドプロバイダにわたって分散される可能性があり、顧客には、自分のデータがどこに、どのようにして記憶されているか、あるいは誰がデータにアクセスできるのかに関して明確さに欠けることを意味する。さらに、クラウドは、多くの末端ユーザ（信頼できない、または未知のユーザを含む）に共用されており、それにより、データに対する脆弱性の窓が開かれる可能性がある。
【課題を解決するための手段】
【０００４】
この問題は、クライアントプラットフォームと、複数の遠隔のクラウドストレージプラットフォーム（例えば、限定することなく、データセンタサーバ、および関連するストレージ資源など）との間に論理的に存在するクラウドストレージブローカを組み込む分散クラウドストレージシステムにより対処され、および技術的な進歩が当技術分野で達成される。所与のデータストレージトランザクションに対して、クラウドストレージブローカは、クライアントデータ項目のクラウドストレージのために、指定されたクラウドストレージプラットフォームを選択し、第１のルールに従ってデータ項目を複数の部分に分割するステップと、第２のルールに従って、その部分を、選択されたクラウドストレージプラットフォームに割り振るステップとを含むクラウドストレージプロセスの実行を仲介することになる。したがって、第１および第２のルールは、データ項目の分散されたクラウドストレージを達成するための「鍵」を定義するが、その方法は、鍵保持者にのみ知られており、またクラウドストレージの分散された性質により、データを、侵害されたプラットフォームから発見される脆弱性を低減する。
【０００５】
一実装形態（本明細書で「パススルーモデル」と呼ぶ）では、クラウドストレージブローカが、データフローに直接参加する、すなわち、クラウドストレージブローカは、データ項目をクライアントから受け取り、クライアントのために、第１および第２のルールに従って、データ項目を分割し、および選択されたクラウドストレージプラットフォームに割り振る。他の実装形態（本明細書で「エンタープライズモデル」と呼ぶ）では、クラウドストレージブローカは、データフローに直接参加しないが、どのようにデータ項目を分割し、および割り振るかをクライアントに命令して、クライアントそれ自体が、データ項目を分割し、選択されたクラウドストレージプラットフォームに割り振ることを可能にする。その後、実装形態に応じて、関連するルールへの所有権またはアクセス権を有するクラウドストレージブローカまたはクライアントにより、データ取出しが達成されうる。
【０００６】
本発明の前述の、および他の利点は、以下の詳細な記述を読み、図面を参照すれば明らかになろう。
【図面の簡単な説明】
【０００７】
【図１】従来技術によるクラウドストレージシステムのブロック図である。
【図２】本発明の実施形態によるクラウドストレージブローカを含む分散クラウドストレージシステムのブロック図である。
【図３】本発明の実施形態によるクラウドストレージブローカの機能的な構成要素を示すブロック図である。
【図４】本発明の実施形態による分散クラウドストレージシステムのパススルーモデルを示すブロック図である。
【図５】本発明の実施形態による分散クラウドストレージシステムのエンタープライズモデルを示すブロック図である。
【図６】本発明の実施形態に従って、クラウドストレージプロセスを実行するために、クラウドストレージブローカおよび／またはユーザプラットフォームにより実施されるステップを示す流れ図である。
【図７】本発明の実施形態に従って、クラウド取出しプロセスを実行するために、クラウドストレージブローカおよび／またはユーザプラットフォームにより実施されるステップを示す流れ図である。
【発明を実施するための形態】
【０００８】
図１は、従来技術によるクラウドストレージシステム１００を示している。クラウドストレージシステム１００は、ネットワーク１０４によりデータセンタ（図示のように、サーバ１０６および関連するストレージ資源１０８を含む）に相互接続された１つまたは複数のユーザプラットフォーム１０２を含む。典型的なデータセンタは、建物の１つまたは複数の階を占める可能性のあるラックに取り付けられた複数のサーバ１０６を含む。ストレージ資源１０８は、各サーバ１０６内に存在することができるが、あるいはデータセンタのラック内に、またはその横に並んだ別個の構成要素（図示せず）内に存在することができる。用語「クラウドストレージプラットフォーム」は、本明細書で、サーバ１０６およびその関連するストレージ資源１０８を共に包含することが理解されよう。したがって、複数のサーバおよびストレージ資源からなる典型的なデータセンタは、複数のクラウドストレージプラットフォームを含むことが理解されよう。
【０００９】
ユーザプラットフォーム１０２は、ローカルなデータ項目（例えば、データファイルまたは同様のものなど）を名目上含む、例えば、ラップトップコンピュータ、デスクトップコンピュータ、またはモバイルコンピューティング装置などを備えることができ、またそれは、必要に応じて、ユーザまたは管理者により操作されて、おそらくクラウドストレージプラットフォームを活用し、データ項目のオフプレミスストレージが行われる。ネットワークトポロジおよび／またはユーザ安全性の必要性に応じて、ネットワーク１０４は、例えば、企業のイントラネット、インターネット、またはその何らかの組合せを備えることができ、またユーザのデータ項目は、クラウドストレージプラットフォームに移送される、または記憶される前に暗号化されることも、されないこともありうる。
【００１０】
しかし、概して、ネットワークトポロジとは関係なく、従来技術によるクラウドストレージソリューションは、ユーザのデータ項目を単一の場所／プラットフォームに記憶させるシングルスレッド処理モデルを使用することが知られている。例えば、図１で示されているように、末端ユーザ１０２からのデータは、完全に単一のクラウドストレージプラットフォーム（単一のサーバ１０６およびその関連するストレージ資源１０８を含む）内に記憶され、データは、単一のデータセンタ内に位置する。したがって、クラウドストレージプラットフォーム（サーバ１０６またはストレージ資源１０８のいずれか）が侵害された場合、ユーザデータは、信頼できない、または未知のユーザによる発見に対して脆弱である。
【００１１】
それとは対照的に、本発明の実施形態は、マルチスレッド処理モデルを使用し、それにより、クライアントのデータ項目は部分へと分割され、また複数の部分は、複数のクラウドプラットフォーム中で分散され、したがって、どの所与のプラットフォームもデータ項目の一部だけを含むので、データ項目が発見されることに対する脆弱性を大幅に低減させ、未知の、または信頼できないユーザが、データ項目がどのように分割されたか、または割り振られたかを発見できる可能性が低減される。
【００１２】
図２を参照すると、本発明の実施形態による分散クラウドストレージシステム２００は、ネットワーク２０６を介して、クラウドストレージブローカ２０４、および複数のクラウドストレージプラットフォーム２０８、２１０（すなわち、各クラウドストレージプラットフォームは、サーバ２０８およびその関連するストレージ資源２１０を含む）に論理的に接続された１つまたは複数のユーザプラットフォーム２０２を含む。便宜上、サーバは、「サーバＢ」、「サーバＢ」などと示され、またそれらは、異なるクラウドストレージプラットフォームＡ、Ｂ、Ｃなどに対応することが理解されよう。サーバＡ、Ｂ、Ｃなど（したがって、クラウドストレージプラットフォームＡ、Ｂ、Ｃなど）は、例えば、限定することなく、データセンタの、または異なる地理的位置を有する異なるデータセンタ中のラック、様々なラック、または様々な階の様々な物理的位置に対応する複数の物理的な、および／または地理的な位置の中で分散されている。
【００１３】
ユーザプラットフォーム２０２は、プロセッサおよびメモリ（図示せず）を有し、ユーザまたは管理者がクラウドに記憶することを望む可能性のあるローカルなデータ項目（例えば、データファイルまたは同様のものなど）を名目上含む、例えば、これだけに限らないが、ラップトップコンピュータ、デスクトップコンピュータ、またはモバイルコンピューティング装置を備えることができる。クラウドストレージブローカ２０４は、例えば、限定することなく、プロセッサ２０８およびメモリ２１０を有し、およびユーザプラットフォーム２０２と選択されたクラウドストレージプラットフォーム２０８、２１０との間のクラウドストレージおよび取出しトランザクションを仲介するように動作可能なウェブベースのコンピューティングプラットフォームを備える。ネットワーク２０６は、例えば、企業のイントラネット、インターネット、またはそれらの何らかの組合せを含むことができる。したがって、クラウドストレージブローカ２０４は、企業のファイアウォールの内部に、または外部に存在することができる。
【００１４】
概して、本明細書で述べる実施形態によれば、クラウドストレージトランザクションは、ユーザが、クラウドストレージブローカ２０４にデータストレージサービスを要求することにより開始される。ユーザのプライバシの必要性に応じて、ユーザは、データ項目をクラウドストレージブローカに送り、クラウドストレージブローカにデータ項目のクラウドストレージを実行するように要求することができる、またはユーザは、データ項目のクラウドストレージをユーザが実行するための命令をクラウドストレージブローカが仲介する（すなわち、クラウドストレージブローカをデータフローの中に含めることなく、ユーザ自体がデータ項目のクラウドストレージを実行できるようにする）ように要求することができる。その後、クラウドストレージブローカは、データストレージトランザクションのために使用される指定されたクラウドストレージプラットフォームを選択し、およびクラウドストレージプロセスを実行または仲介して、データ項目を部分に分割し、およびその部分を、鍵保持者であるクラウドストレージブローカまたはユーザにだけ知られている秘密の方法で、選択されたクラウドストレージプラットフォーム中で分散させる。
【００１５】
例えば、図２で示すように、末端ユーザ２０２からのデータは、３つの部分（データフラグメント１、２、および３で示される）に分割され、各部分は、「鍵」を定義するクラウドストレージブローカまたはユーザにだけ知られているルールに従って、３つの異なるクラウドストレージプラットフォームＡ、Ｂ、Ｃの中で分散される。クライアントデータは、秘密鍵により分割され、および複数のクラウドストレージプラットフォームＡ、Ｂ、Ｃの中で分散されるので、またクラウドストレージプラットフォームのそれぞれが、異なる物理的および／または地理的位置に対応しているので、クライアントデータは、クラウドストレージプラットフォームＡ、Ｂ、またはＣが侵害された場合であっても、発見に対する脆弱性が比較的少なくなる。
【００１６】
図３は、クラウドストレージブローカ３０４の論理的なハードウェア構成の実施形態を示している。論理的なハードウェア構成は、例えば、限定することなく、ユーザ要求を受け取り、処理すること、ユーザのデータ項目を受け取ること、認証情報を交換すること、クラウドストレージまたは取出しトランザクションに関連する命令もしくはルールを伝達することなど、クラウドストレージまたは取出しトランザクションと同時に、末端ユーザプラットフォーム３０２との通信を行うように動作可能なユーザインターフェース３０６を含む。論理的なハードウェア構成は、例えば、限定することなく、データ項目のクラウドストレージのためにクラウドストレージプラットフォームＡ、Ｂ、Ｃを選択することに関する情報を求めてクラウドストレージプロバイダにポーリングする、および／またはモニタすること、データ項目の割り振られた部分を各プラットフォームに送ること、またはデータ項目の割り振られた部分を各プラットフォームから取り出すことなど、クラウドストレージまたは取出しトランザクションと同時に、１つまたは複数のクラウドストレージプロバイダ３１８と通信するように動作可能なクラウドストレージインターフェース３０８をさらに含む。
【００１７】
ユーザインターフェース３０６およびクラウドストレージインターフェース３０８は、クラウドストレージ処理モジュール３１０およびクラウド取出し処理モジュール３１２に動作可能に接続される。クラウドストレージおよび取出し処理モジュール３１０、３１２は、例えば、限定することなく、クラウドストレージおよび取出しトランザクションを実行または仲介するために、メモリ２１０（図２）に記憶されたプログラムコード（例えば、これだけに限らないが、オペレーティングシステムファームウェア／ソフトウェア、およびアプリケーションソフトウェアなどを含む）を実行するように動作可能なプロセッサ２０８（図２）により実施することができる。
【００１８】
理解されるように、ユーザインターフェース３０６、クラウドストレージインターフェース３０８、ならびにクラウドストレージプロセスおよびクラウド取出し処理モジュール３１０、３１２は、１つまたは複数の物理的な装置で実施することができ、また有線、無線、またはパケットベースのリンクを含む１つまたは複数の通信技術を実施できる論理的なハードウェアコンポーネントである。論理的なコンポーネントのそれぞれは、ファームウェア、マイクロチップ（例えば、ＡＳＩＣなど）、ハードウェア装置で実行可能なソフトウェア、ハードウェア、特殊化したハードウェア、および／または同様のものを含むことができる。
【００１９】
図示されているように、クラウドストレージおよび取出し処理モジュール３１０、３１２は、ファイルストレージインデックス３１４、および１つまたは複数のルール生成器（鍵生成器とも呼ばれる）３１６に動作可能に接続される。ファイルストレージインデックス３１４およびルール生成器３１６は、１つまたは複数の物理的な装置、および／またはソフトウェアモジュールで実施でき、またクラウドストレージブローカ３０４の内部に、または外部に存在することのできる機能的要素である。
【００２０】
一実施形態では、ファイルストレージインデックス３１４は、様々なユーザのデータ項目（例えば、「ファイル」）に関連する情報と、クラウドストレージトランザクションの完了と同時にクラウドストレージ処理モジュールにより提供される、分割され、および／またはクラウドに記憶された方法とを記憶し、またその情報は、クラウド取出しトランザクションを実施するクラウド取出し処理モジュールにより、後にアクセスされうる。例えば、これだけに限らないが、ファイルストレージインデックスは、、各データ項目を分割してモジュールＡ、Ｂ、Ｃの中で分散させるために、クラウドストレージ処理モジュールにより使用された鍵、ルールまたは命令に対してインデックスが付されたユーザデータ項目の、ファイル名または他の標示を含むことができる。何らかの後の時間に、クラウド取出し処理モジュールは、データ項目を取り出して再構成できるように、個々のデータ項目を分割し、および分散するために使用された鍵、ルール、または命令を見出すために、ファイルストレージインデックスに照会することができる。
【００２１】
ルール生成器３１６は、クラウドストレージトランザクションと同時に、データ項目を分割し、割り振るための鍵、ルール、または命令を生成する、または導出する。一実施形態では、ルール生成器３１６は、データ項目を分割し、複数のクラウドストレージプラットフォームに割り振るために、別個の（「第１および第２の」）ルールを規定する。したがって、第１および第２のルールは、データ項目の分散クラウドストレージを達成するための鍵を定義し、その方法は、鍵保持者にだけ知られている。理解されるように、鍵、ルール、または命令は、ユーザ安全性の必要性、ファイルサイズ、選択されたクラウドストレージプラットフォームの数などに応じて、複雑さが変化する可能性がある。
【００２２】
例えば、これだけに限定されないが、複雑さの下端では、ルール生成器は、選択されたクラウドストレージプラットフォームの数に対応する等しい部分へとファイルを分割するための第１のルールと、特定のシーケンスで、各部分を選択されたプラットフォームに割り振るための第２のルールとを規定することができる。他の例として、第１のルールは、ファイルを（例えば、ファイルサイズの所定の部分に基づく）所定サイズのフラグメントへと細分するように規定し、また第２のルールは、ファイルが完全に細分されるまで、フラグメントを選択されたプラットフォームに順次割り振るように規定することができる。
【００２３】
複雑さが高いレベルでは、ルール生成器は、データ項目をどのように分割するか、および／または分散させるかを求めるために、乱数もしくは疑似乱数に基づいて、ルールを作成または導出することができる。乱数は、ルール生成器またはクラウドストレージブローカ内に存在できる乱数生成器により生成される。例えば、これだけに限らないが、所定の範囲（例えば、２と２０の間）に制限された乱数を生成する乱数生成器を考える。細分するサイズを求めるために、乱数は、所定の細分サイズ（例えば、番号２＝６４バイト、番号３＝１２８バイトなど）へとマップすることができる。この例では、ルール生成器は、したがって、２と２０の間の乱数を生成し、および生成された乱数に応じたサイズを有するフラグメントへとファイルを細分する第１のルールを規定することができる。ルール生成器は、次いで、どれだけ多くのクラウドストレージプラットフォームを使用するか（例えば、番号２＝２個のプラットフォーム、番号３＝３個のプラットフォームなど）を求めるために、同じ乱数または次の乱数に基づき、第２のルールを規定することもできる。複雑さの高いレベルではさらに、一連の乱数を使用することができ、その場合、一連の連続する乱数は、様々な細分サイズおよび様々なプラットフォームを指定する（例えば、番号２＝プラットフォーム＃２、番号３＝プラットフォーム＃３」など）。
【００２４】
前に述べたように、本発明は、ユーザ安全性の必要性、ネットワークトポロジ、および同様のものなどに応じて、様々な方法で実施することができる。本明細書で「パススルーモデル」と呼ばれる一実施形態では（図４）、クラウドストレージブローカはデータフローに直接参加する、すなわち、クラウドストレージブローカは、クライアントからデータ項目を受け取り、およびデータ項目を、クライアントのための第１および第２のルールに従って分割し、選択されたクラウドストレージプラットフォームに割り振る。したがって、図４で示すように、クラウドストレージブローカ４０４は、末端ユーザ４０２と、選択された様々なクラウドストレージプラットフォーム４０８（サーバＡ、Ｂ、Ｃ）との間に論理的に存在し、またクラウドストレージブローカ４０２は、末端ユーザ４０２および選択されたサーバＡ、Ｂ、Ｃと対話して、所与のデータ項目のクラウドストレージを実行するが、ユーザ４０２は、サーバＡ、Ｂ、Ｃと直接対話しない。図示されているように、クラウドストレージブローカ４０４は、２つのルール生成器４１０に動作可能に接続され、そこから、クラウドストレージブローカ４０４は、データ項目を分割し、割り振るための第１および第２のルール（Ｍ、Ｎ）を取得することができ、またクラウドストレージブローカ４０４は、データ項目を記憶するために、ルールＭ、Ｎを実行する。
【００２５】
任意選択で、図４で示すように、末端ユーザ４０２は、ブローカエージェント４０６（例えば、訪問先（ｖｉｓｉｔｅｄ）ネットワークのサービングノードなど）により、クラウドストレージブローカ４０４と対話することができる。一実施形態では、クラウドストレージトランザクションは、末端ユーザ４０２が要求（および要求と同時に、データ項目）をブローカエージェント４０６に送ることにより開始され、またブローカエージェントは、要求およびデータ項目をクラウドストレージブローカ４０４に転送する。その後、クラウドストレージブローカ４０４は、ルール（Ｍ、Ｎ）を実行して、データ項目を分割し、上記で述べたように、選択されたクラウドストレージプラットフォームに実質的に割り振る。クラウド取出しトランザクションは、同様に、末端ユーザがブローカエージェント４０６を通してクラウドストレージブローカ４０４と対話することにより開始される。
【００２６】
代替的に、ブローカエージェント４０６は、ブローカ４０４の機能をエミュレーションすることができる。一実施形態では、例えば、クラウドストレージトランザクションは、末端ユーザ４０２が、要求（および要求と同時にデータ項目）をブローカエージェント４０６に送ることにより開始され、ブローカエージェントは、ルール（Ｍ、Ｎ）を取得するためにブローカ４０４に照会する、または代替的に、ブローカエージェントは、データ項目を分割し、割り振るために独立してルール（Ｍ、Ｎ）を特定することができ、またブローカエージェント４０６は、ルール（Ｍ、Ｎ）を実行して、データ項目を分割し、および選択されたクラウドストレージプラットフォームに割り振る。同様に、ブローカエージェント４０６は、ブローカ４０４の機能をエミュレーションして、クラウド取出しトランザクションを実行することができる。
【００２７】
本明細書で「エンタープライズモデル」と呼ばれる他の実装形態では（図５）、クラウドストレージブローカは、データフローに直接参加することはないが、データ項目をどのように分割し、割り振るかをクライアントに命令し、クライアントそれ自体が、データ項目を分割し、およびそれを選択されたクラウドストレージプラットフォームに割り振ることを可能にする。したがって、図５で示されるように、クラウドストレージブローカ５０４は、末端ユーザ５０２に論理的に接続され、および所与のデータ項目のクラウドストレージを仲介するために末端ユーザと対話するが、クラウドストレージブローカは、サーバＡ、Ｂ、Ｃと（少なくともクラウドストレージを実行する目的で）直接対話することはない。クラウドストレージブローカ５０４は、２つのルール生成器５１０に動作可能に接続され、そこから、クラウドストレージブローカ４０４は、データ項目を分割し、割り振るための第１および第２のルール（Ｍ、Ｎ）を取得することができ、またクラウドストレージブローカ５０４は、ルールＭ、Ｎを末端ユーザ５０２に伝達して、ユーザが、データ項目を記憶するためにルールＭ、Ｎを実行できるようにする。
【００２８】
任意選択で、末端ユーザ５０２は、ブローカエージェント（図５に示されていない）により、クラウドストレージブローカ５０４と対話することができる。例えば、ブローカエージェントは、末端ユーザのローミングを訪問先ネットワークに収容するために使用することができる。このような場合では、エンタープライズモデルにおけるクラウドストレージトランザクションは、末端ユーザ４０２が要求をブローカエージェントに送ることにより開始され、ブローカエージェントは、その要求をクラウドストレージブローカ５０４に転送する。その後、クラウドストレージブローカ４０４は、データ項目を分割し、およびそれを選択されたクラウドストレージプラットフォームに割り振るためのルール（Ｍ、Ｎ）を特定し、およびそのルールをブローカエージェントにより末端ユーザに伝達し、また末端ユーザは、ルールを実行してデータ項目の分散クラウドストレージを達成する。
【００２９】
代替的に、ブローカエージェントは、ブローカ５０４の機能をエミュレーションすることができる。一実施形態では、例えば、エンタープライズモデルにおけるクラウドストレージトランザクションは、末端ユーザ４０２がブローカエージェントに要求を送ることにより開始され、ブローカエージェントはブローカ５０４に照会して、データ項目を分割し、およびそれを選択されたクラウドストレージプラットフォームに割り振るためのルール（Ｍ、Ｎ）を特定し（または代替的に、ブローカエージェントは独立してルールＭ、Ｎを特定する）、ブローカエージェントは、ルールを末端ユーザに伝達し、および末端ユーザがそのルールを実行してデータ項目の分散クラウドストレージを達成する。
【００３０】
図６は、適用可能な場合に、本発明の実施形態による分散クラウドストレージトランザクションを実行するための、クラウドストレージブローカおよびユーザプラットフォームにより実施されるステップを示す流れ図である。例えば、これだけに限らないが、図６のステップは、分散クラウドストレージトランザクションを実行するために、図４に関して述べたパススルーモデルにおける末端ユーザプラットフォーム４０２と共にクラウドストレージブローカ４０４により、または図５に関して述べられたエンタープライズモデルにおける末端ユーザプラットフォーム５０２と共にクラウドストレージブローカ５０４により実施されうる。方法は、ユーザプラットフォーム４０２、５０２が、ユーザ名およびパスワード、または他の適切なセキュリティパラメータをクラウドストレージブローカに伝達し、クラウドストレージブローカは、その後、トランザクションを開始するために、供給されたセキュリティパラメータに基づいてユーザを認証すること前提としている。理解されるように、様々な程度の複雑さを有し、およびより少ない、より多くの、または様々なタイプのセキュリティパラメータを利用する、いくつかの認証方式のうちのいずれかにより、セッションが確立されうる。
【００３１】
ステップ６０２で、クラウドストレージブローカは、データ項目（例えば、データファイル）のクラウドストレージを求めるユーザ要求を受け取る。ユーザ要求は、限定することなく、データストレージを求めるユーザ要求を伝える、および要求と同時に情報（例えば、ファイル名、ファイルサイズなど）を伝えるキーストローク、キーストロークもしくはキーパッドの組合せ、または表現を含む、概して、ユーザからの通信の任意のインスタンスを含むことができる。
【００３２】
一実施形態では、ステップ６０４で、クラウドストレージブローカは、要求と同時に１つまたは複数のユーザが選択したセキュリティパラメータ、または性能パラメータを受け取る。例えば、これだけに限らないが、ユーザは、データストレージトランザクションに関連する待ち時間、地理的な場所、支払い（例えば、場所の数）の程度、コスト、安全性レベル、暗号化、または同様のものに関する要件またはプリファレンスを指定することもできる。
【００３３】
ステップ６０６で、クラウドストレージブローカは、ユーザが選択したセキュリティパラメータまたは性能パラメータと一致する、データ項目のストレージに使用されるクラウドストレージプラットフォーム（例えば、サーバＡ、Ｂ、Ｃ）を選択する。一実施形態では、サーバ選択は乱数生成器に基づき、使用されるプラットフォームの量（Ｘ）を決定することを含み、その後に、サーバ選択を最適化するために、複数のサーバの中から重み付けされた作業負荷、コスト、および待ち時間の要因を考慮する重み付けアルゴリズムに従って特定のプラットフォームの選択が行われる。例えば、これだけに限らないが、使用されるプラットフォームの量（Ｘ）は、２と２０の間の乱数に応じて決定することができ、またＸ個のプラットフォームのうちの個々のプラットフォームの選択は、重み付けされた作業負荷、コスト、および待ち時間の要因を考慮する重み付けアルゴリズムに基づいて決めることができる。
【００３４】
ステップ６０８、６１０で、クラウドストレージブローカは、データ項目を細分し、分散させるためのルール（Ｍ、Ｎ）を取得する、または作成する。例えば、これだけに限らないが、ルールＭ、Ｎは、図３に関連して述べられた任意の方法で得ることができる。前に述べたように、ルールＭ、Ｎは、ユーザ安全性の必要性、ファイルサイズ、選択されたクラウドストレージプラットフォームの数などに応じて、複雑さが変わる可能性がある。
【００３５】
ステップ６１２で、クラウドストレージブローカがデータフローに参加するか（例えば、パススルーモデル（図４））、それともクラウドストレージブローカは、データフローに参加しないようにするか（例えば、エンタープライズモデル（図５））に関して判定が行われる。クラウドストレージブローカがデータフローに参加する場合、プロセスはステップ６１４から６２０へと進み、そうではなく、クラウドストレージブローカが、データフローに参加しない場合、プロセスはステップ６２２から６２８へと進む。
パススルーモデル
ステップ６１４で、クラウドストレージブローカは、ユーザからデータ項目を取得する。
【００３６】
ステップ６１６、６１８で、クラウドストレージブローカは、データ項目を部分へと細分し、および各部分を、選択されたクラウドストレージプラットフォームＡ、Ｂ、Ｃの中で割り振るためにルール（Ｍ、Ｎ）を実行する。一実施形態では、クラウドストレージブローカは、データ部分をプラットフォームＡ、Ｂ、Ｃに分散する前に、クラウドストレージプラットフォームＡ、Ｂ、Ｃとの安全な接続（例えば、標準のＨＴＴＰＳプロトコルを用いる）を開く。
【００３７】
ステップ６２０で、クラウドストレージブローカは、データ項目を後で取り出し、および再構成できるようにするために、ルール（Ｍ、Ｎ）またはルール（Ｍ、Ｎ）の標示を保持する。例えば、これだけに限らないが、クラウドストレージブローカは、プラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを示すルール（Ｍ、Ｎ）、またはプラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを導出するために使用された乱数（複数可）などのルール（Ｍ、Ｎ）の標示を、ファイルストレージインデックスに送ることができる。
【００３８】
エンタープライズモデル
ステップ６２２で、クラウドストレージブローカは、ルール（Ｍ、Ｎ）、またはルール（Ｍ、Ｎ）の標示をユーザに送る。例えば、これだけに限らないが、クラウドストレージブローカは、プラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを示すルール（Ｍ、Ｎ）、またはプラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを導出するために使用された乱数（複数化）などのルール（Ｍ、Ｎ）の標示を、ユーザプラットフォームに送ることができる。一実施形態では、クラウドストレージブローカはまた、ルール（Ｍ、Ｎ）をユーザに送る前に、ユーザプラットフォームと選択されたクラウドストレージプラットフォームＡ、Ｂ、Ｃとの間で安全な接続（例えば、標準のＨＴＴＰＳプロトコルを用いる）を開く。
【００３９】
ステップ６２４、６２６で、ユーザは、データ項目を部分に細分し、および各部分を、選択されたクラウドストレージプラットフォームの中に割り振るためのルール（Ｍ、Ｎ）を実行する。
【００４０】
ステップ６２８で、ユーザまたはクラウドストレージブローカは、データ項目を後で取り出し、再構成できるように、ルールまたはルール（Ｍ、Ｎ）の標示を保持する。例えば、これだけに限らないが、ユーザまたはクラウドストレージブローカは、プラットフォームの数もしくは識別情報、細分サイズおよびシーケンスの標示、またはプラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを導出するために使用された乱数（複数可）をファイルストレージインデックスに送ることができる。
【００４１】
図７は、適用可能な場合、本発明の実施形態による分散クラウドストレージからデータ項目を取り出すために、クラウドストレージブローカおよびユーザプラットフォームにより実施されるステップを示す流れ図である。例えば、これだけに限らないが、図７のステップは、取出しトランザクションを実行するために、図４に関して述べられたパススルーモデルにおける末端ユーザプラットフォーム４０２と共にクラウドストレージブローカ４０４により、または図５に関して述べられたエンタープライズモデルにおける末端ユーザプラットフォーム５０２と共にクラウドストレージブローカ５０４により実施することができる。方法は、ユーザプラットフォーム４０２、５０２が、ユーザ名およびパスワード、または他の適切なセキュリティパラメータをクラウドストレージブローカに伝達し、その後、クラウドストレージブローカが、トランザクションを開始するために、供給されたセキュリティパラメータに基づいてユーザを認証することを前提としている。理解されるように、様々な程度の複雑さを有し、およびより少ない、より多くの、または様々なタイプのセキュリティパラメータを利用するいくつかの認証方式のいずれかにより、セッションが確立されうる。
【００４２】
ステップ７０２で、クラウドストレージブローカは、データ項目（例えば、データファイル）の取出しを求めるユーザ要求を受け取る。ユーザ要求は、限定することなく、データ取出しを求めるユーザ要求を伝える、および要求と同時に情報（例えば、ファイル名）を伝えるキーストローク、キーストロークもしくはキーパッドの組合せ、または表現を含む、概して、ユーザからの通信の任意のインスタンスを含むことができる。
【００４３】
ステップ７０４で、クラウドストレージブローカは、データ項目を分割し、分散するために使用されたルール（Ｍ、Ｎ）、またはルール（Ｍ、Ｎ）の標示を取得するために、ファイルストレージインデックスに照会する。例えば、これだけに限らないが、クラウドストレージブローカは、ファイルストレージインデックスから、プラットフォームの数もしくは識別情報、細分サイズおよびシーケンスの標示、またはプラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを導出するために使用された乱数（複数可）を取り出すことができる。
【００４４】
ステップ７０６で、クラウドストレージブローカがデータフローに参加するか（例えば、パススルーモデル（図４））、それともクラウドストレージブローカは、データフローに参加しないようにするか（例えば、エンタープライズモデル（図５））に関して判定が行われる。クラウドストレージブローカがデータフローに参加する場合、プロセスはステップ７０８から７１２へと進み、そうではなく、クラウドストレージブローカが、データフローに参加しない場合、プロセスはステップ７１４から７１８へと進む。
【００４５】
パススルーモデル
ステップ７０８、７１０で、クラウドストレージブローカは、ルール（Ｍ、Ｎ）の逆を実行して、選択されたクラウドストレージプラットフォームの中からユーザデータ項目の割り振られた部分を取り出し、および取り出された部分からデータ項目を再度組み立てる。ルール（Ｍ、Ｎ）の逆とは、データ項目の取出し、および再組立を達成するために、ルール（Ｍ、Ｎ）を反対に実行することを意味するものと理解されよう。
【００４６】
ステップ７１２で、クラウドストレージブローカは、再度組み立てられたデータ項目をユーザに送達する。
【００４７】
エンタープライズモデル
ステップ７１４で、クラウドストレージブローカは、ルール（Ｍ、Ｎ）、またはルール（Ｍ、Ｎ）の標示をユーザに送る。例えば、これだけに限らないが、クラウドストレージブローカは、プラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを示すルール（Ｍ、Ｎ）、またはプラットフォームの数もしくは識別情報、細分サイズおよびシーケンスを導出するために使用された乱数（複数可）などのルール（Ｍ、Ｎ）の標示をユーザプラットフォームに送ることができる。
【００４８】
ステップ７１６、７１８で、ユーザは、ルール（Ｍ、Ｎ）の逆を実行して、選択されたクラウドストレージプラットフォームの中からユーザデータ項目の割り振られた部分を取り出し、および取り出した部分からデータ項目を再度組み立てる。ルール（Ｍ、Ｎ）の逆とは、データ項目の取出し、および再組立を達成するために、ルール（Ｍ、Ｎ）を反対に実行することを意味するものと理解されよう。
【００４９】
図１−７および前述の記述は、本発明をどのようにして製作し、および使用するかを当業者に教示するために、本発明の特定の例示的な実施形態を示している。前述の実施形態は、すべての点において限定するものではなく、例示的なものに過ぎないと見なされるべきである。本発明は、添付の特許請求の範囲により示される本発明の範囲から逸脱することなく、他の特定の形態で実施することができる。特許請求の範囲の均等性の意味および範囲に含まれるすべての変更は、その範囲に包含されるべきである。
【００５０】
例えば、本明細書で使用される用語「末端ユーザプラットフォーム」は、概して、名目上、有効なユーザにより動作され、およびクラウドストレージまたは取出しトランザクションを実行するためにクラウドストレージブローカと通信するように動作可能な、これだけに限らないが、ラップトップコンピュータ、デスクトップコンピュータ、パーソナルコンピュータ（ＰＣ）を含む任意のコンピュータ装置、あるいはこれだけに限らないが、携帯情報端末（ＰＤＡ）、タブレットＰＣ、または携帯電話を含む任意のモバイルコンピューティング装置として定義される。
【００５１】
本明細書で使用される用語「クラウドストレージブローカ」は、概して、末端ユーザプラットフォームに論理的に接続され、およびクラウドストレージまたは取出しトランザクションを仲介もしくは実行する論理的なハードウェアコンポーネントとして定義される。最も典型的には、アクティビティまたはトランザクションは、認証手続きに従って行われ、その場合、ユーザは、クラウドストレージブローカへのアクセス権を得るために、また見かけ上安全なセッションを確立するために、パスワードまたは同様のものを供給する。クラウドストレージブローカは、限定することなく、ウェブベースのプラットフォーム、または民間もしくは政府企業のファイアウォールの内部に存在するプラットフォームを含むことができ、複数のプラットフォーム中に、もしくは単一の物理的なプラットフォームの複数の機能コンポーネント中に分散させることができ、および／または末端ユーザのプラットフォームと同じプラットフォーム中に共に位置することができる。クラウドストレージブローカのコンポーネントは、マイクロチップ（例えば、ＡＳＩＣ）、ハードウェア装置で実行可能なソフトウェア、ハードウェア、特殊化されたハードウェア、および／または同様のものを含むことができる。
【００５２】
本明細書で使用される用語「クラウドストレージプラットフォーム」は、概して、クラウドストレージブローカに論理的に接続され、およびクラウドストレージトランザクションと同時にユーザデータ項目を記憶するように動作可能な論理的なハードウェアコンポーネントとして定義される。クラウドストレージプラットフォームは、限定することなく、データセンタ内に存在するサーバおよびその関連するストレージ資源を備えることができるが、あるいはそれは、複数のサーバ、ストレージ資源、および／またはデータセンタ中で分散された（またはデータセンタの複数のラックおよび／または階に分散された）仮想化されたプラットフォームを備えることができる。反対に、複数の仮想化されたクラウドストレージプラットフォームが、個々のサーバ、ストレージ資源、および／またはデータセンタ（あるいはデータセンタの個々のラックおよび／または階）の内部に共に位置することができる。
【図１】
2014515521.tif 000003
【図２】
2014515521.tif 000004
【図３】
2014515521.tif 000005
【図４】
2014515521.tif 000006
【図５】
2014515521.tif 000007
【図６】
2014515521.tif 000008
【図７】
2014515521.tif 000009
【国際調査報告】
2014515521.tif 000010
2014515521.tif 000011
2014515521.tif 000012