IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7429086分散による難読化に基づくセキュアなデータ・ストレージ
<>
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図1
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図2
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図3
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図4
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図5
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図6
  • 特許-分散による難読化に基づくセキュアなデータ・ストレージ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-30
(45)【発行日】2024-02-07
(54)【発明の名称】分散による難読化に基づくセキュアなデータ・ストレージ
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240131BHJP
   G06F 21/62 20130101ALI20240131BHJP
【FI】
G09C1/00 650Z
G06F21/62 318
【請求項の数】 8
(21)【出願番号】P 2021563596
(86)(22)【出願日】2020-03-23
(65)【公表番号】
(43)【公表日】2022-07-05
(86)【国際出願番号】 IB2020052695
(87)【国際公開番号】W WO2020222049
(87)【国際公開日】2020-11-05
【審査請求日】2022-08-24
(31)【優先権主張番号】16/397,392
(32)【優先日】2019-04-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】モル、ジョージス-ヘンリー
(72)【発明者】
【氏名】オウドット、オリビエ
(72)【発明者】
【氏名】カプラン、フィリッペ
(72)【発明者】
【氏名】ノデット、ザビアー
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2004-171207(JP,A)
【文献】米国特許出願公開第2018/0060612(US,A1)
【文献】国際公開第2008/056667(WO,A1)
【文献】特開2009-122731(JP,A)
【文献】国際公開第2015/089623(WO,A1)
【文献】特開2004-265194(JP,A)
【文献】特開2000-122861(JP,A)
【文献】特開2011-119985(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/62
G06F 16/182
(57)【特許請求の範囲】
【請求項1】
データを安全に格納するための方法であって、
コンピュータ・プロセッサが、データを格納するための要求を受信することであって、前記データが複数の要素を含んでいる、前記受信することと、
前記コンピュータ・プロセッサが、前記データの前記複数の要素を各数値に変換することと、
前記コンピュータ・プロセッサが、1つまたは複数のエンコーディング・アルゴリズムを、変換された前記データに適用することによって、エンコードされたデータの複数の要素を生成することであって、前記エンコードされたデータの前記複数の要素のが、変換された前記データの前記複数の要素のに等しい、前記生成することと、
前記コンピュータ・プロセッサが、前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの2つ以上のサブセットに重複せずに分散することと、
前記コンピュータ・プロセッサが、通信ユニットにより、前記エンコードされたデータの前記2つ以上のサブセットを、対応するの2つ以上のストレージ・システムに送信すること
を実行する、方法
【請求項2】
データを安全に格納するための方法であって、
コンピュータ・プロセッサが、データを格納するための要求を受信することであって、前記データが複数の要素を含んでいる、前記受信することと、
前記コンピュータ・プロセッサが、1つまたは複数のエンコーディング・アルゴリズムを前記データに適用することによって、エンコードされたデータの複数の要素を生成することであって、前記エンコードされたデータの前記複数の要素の数が、前記データの前記複数の要素の数に等しい、前記生成することと、
前記コンピュータ・プロセッサが、前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの2つ以上のサブセットに重複せずに分散することと、
前記コンピュータ・プロセッサが、通信ユニットにより、前記エンコードされたデータの前記2つ以上のサブセットを、対応する数の2つ以上のストレージ・システムに送信することと
を実行し、前記データをエンコードすることが、
前記コンピュータ・プロセッサが、前記データの前記複数の要素をエンコードするための1つまたは複数のエンコーディング・アルゴリズムを識別することをさらに含み、少なくとも1つのエンコーディング・アルゴリズムが、前記データの前記複数の要素のその後の要素をエンコードするために、前記データの第1の前にエンコードされた要素の利用を指示する方法。
【請求項3】
データを安全に格納するための方法であって、
コンピュータ・プロセッサが、データを格納するための要求を受信することであって、前記データが複数の要素を含んでいる、前記受信することと、
前記コンピュータ・プロセッサが、1つまたは複数のエンコーディング・アルゴリズムを前記データに適用することによって、エンコードされたデータの複数の要素を生成することであって、前記エンコードされたデータの前記複数の要素の数が、前記データの前記複数の要素の数に等しい、前記生成することと、
前記コンピュータ・プロセッサが、前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの2つ以上のサブセットに重複せずに分散することと、
前記コンピュータ・プロセッサが、通信ユニットにより、前記エンコードされたデータの前記2つ以上のサブセットを、対応する数の2つ以上のストレージ・システムに送信することと
を実行し、前記方法は、
前記コンピュータ・プロセッサが、セキュリティの指示に基づいて、前記データの前記複数の要素のエンコーディングをさらに難読化することを決定することと、
前記コンピュータ・プロセッサが、前記データのエンコーディング中に適用するためのデータ・キーを選択することであって、前記データ・キーが、数値を表す2つ以上の要素を含んでいる、前記選択することと、
前記コンピュータ・プロセッサが、エンコーディング・アルゴリズムに関連付けられた1つまたは複数のルールに基づいて、前記データ・キーの少なくとも1つの要素を前記データの各要素に適用すること
をさらに含む方法。
【請求項4】
前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの前記2つ以上のサブセットに重複せずに分散することが、
前記コンピュータ・プロセッサ、循環的方法で、前記エンコードされたデータの前記複数の要素のその後の要素を、前記エンコードされたデータの前記2つ以上のサブセットに分散するこ
をさらに含む、請求項1ないしの何れか一項に記載の方法。
【請求項5】
データを安全に格納するための方法であって、
コンピュータ・プロセッサが、データを格納するための要求を受信することであって、前記データが複数の要素を含んでいる、前記受信することと、
前記コンピュータ・プロセッサが、1つまたは複数のエンコーディング・アルゴリズムを前記データに適用することによって、エンコードされたデータの複数の要素を生成することであって、前記エンコードされたデータの前記複数の要素の数が、前記データの前記複数の要素の数に等しい、前記生成することと、
前記コンピュータ・プロセッサが、前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの2つ以上のサブセットに重複せずに分散することと、
前記コンピュータ・プロセッサが、通信ユニットにより、前記エンコードされたデータの前記2つ以上のサブセットを、対応する数の2つ以上のストレージ・システムに送信することと
を実行し、前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの前記2つ以上のサブセットに重複せずに分散することが、
前記コンピュータ・プロセッサが、少なくとも第1のエンコーディング・アルゴリズムの構造に基づいて、前記エンコードされたデータの前の要素に対応する値が、前記データのその後の要素をエンコードするために利用されるということを決定することと、
前記コンピュータ・プロセッサが、前記エンコードされたデータの前記その後の要素が、前記エンコードされたデータの前記その後の要素をエンコードするために利用される前記エンコードされたデータの前記前の要素を含んでいる前記エンコードされたデータの別のサブセットと異なるエンコードされたデータのサブセットに割り当てられるように、前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの前記2つ以上のサブセットに分散すること
をさらに含む方法。
【請求項6】
前記2つ以上のストレージ・システムが、異なる地理的位置でのストレージ・システムである、請求項1ないしの何れか一項に記載の方法。
【請求項7】
データを安全に格納するためのコンピュータ・プログラムであって、
コンピュータ・プロセッサに、
データを格納するための要求を受信するためのプログラム命令であって、前記データが複数の要素を含んでいる、前記プログラム命令と、
前記データの前記複数の要素を各数値に変換するためのプログラム命令と、
1つまたは複数のエンコーディング・アルゴリズムを、変換された前記データに適用することによって、エンコードされたデータの複数の要素を生成するためのプログラム命令であって、前記エンコードされたデータの前記複数の要素のが、変換された前記データの前記複数の要素のに等しい、前記プログラム命令と、
前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの2つ以上のサブセットに重複せずに分散するためのプログラム命令と、
前記エンコードされたデータの前記2つ以上のサブセットを、対応するの2つ以上のストレージ・システムに送信するためのプログラム命令と、を実行させるためのコンピュータ・プログラム。
【請求項8】
データを安全に格納するためのコンピュータ・システムであって、前記コンピュータ・システムが、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読ストレージ媒体と、
前記1つまたは複数のコンピュータ・プロセッサのうちの少なくとも1つによって実行するために前記コンピュータ可読ストレージ媒体に格納されたプログラム命令とを備えており、前記プログラム命令が、
データを格納するための要求を受信するためのプログラム命令であって、前記データが複数の要素を含んでいる、前記プログラム命令と、
前記データの前記複数の要素を各数値に変換するためのプログラム命令と、
1つまたは複数のエンコーディング・アルゴリズムを、変換された前記データに適用することによって、エンコードされたデータの複数の要素を生成するためのプログラム命令であって、前記エンコードされたデータの前記複数の要素の、変換された前記データの前記複数の要素のに等しい、前記プログラム命令と、
前記エンコードされたデータの前記複数の要素を前記エンコードされたデータの2つ以上のサブセットに重複せずに分散するためのプログラム命令と、
前記エンコードされたデータの前記2つ以上のサブセットを、対応するの2つ以上のストレージ・システムに送信するためのプログラム命令とを含む、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、データ・セキュリティの分野に関連しており、より詳細には、データをエンコードし、エンコードされたデータの一部を異なるクラウドストレージ位置に分散することによってデータを難読化することに関連している。
【背景技術】
【0002】
クラウド・コンピューティングは、インターネットを経由して、構成可能なコンピューティング・システムのリソースの共有プールへの遍在するアクセスを可能にする情報技術パラダイムである。クラウド・コンピューティング・サービスの一部の利用者(例えば、会社、組織、政府機関)は、さまざまなデータ処理システムを所有していることがあるが、追加の計算リソース(例えば、柔軟な拡張性)を提供するクラウド・コンピューティング・サービスを利用して、コストを削減することができる。クラウド・コンピューティング・サービスのその他の利用者は、ユーザと会社の間のインターフェイスとしてクラウドを利用して、ユーザのより近くでアプリケーションおよび機能を配布することによって応答時間を改善し、唯一のデータ処理の位置で発生する可能性のあるネットワークの混雑を減らし、顧客満足体験を改善する。さまざまなビジネス機能を処理することに加えて、クラウド・コンピューティング・プロバイダは、IaaS(infrastructure as a service)モデルを介して、個人、インターネットベースのサービス・プロバイダ、および企業に、大容量のクラウドストレージ・ソリューションを提供することができる。1つの例では、企業は、Webサイトを社内でホストすることができるが、ストレージをIaaSプロバイダに外部委託することができる。
【0003】
クラウド・ストレージは、デジタル・データが論理的プールに格納されるコンピュータ・データ・ストレージのモデルである。物理ストレージは、複数のサーバ(場合によっては、複数の位置)に広がることができ、物理的環境は、通常、ホストしている企業(すなわち、サービス・プロバイダ)によって所有され、管理される。加えて、クラウド・コンピューティング・プロバイダは、認証およびアクセスの監視、ファイアウォール、ユーザの分離、侵入の検出および防止、ならびにセキュリティ情報およびイベント・ロギング・システムなどの、さまざまなセキュリティ対策を利用して、格納された情報およびデータを保護する。したがって、クラウドストレージ・プロバイダは、データ・ストレージに関する地理的多様性およびプロバイダの多様性を求めているデータ所有者に、大量のストレージ容量、容量のジャストインタイムの管理、セキュリティ、および耐久性、ならびにデータへの「どこでも、いつでも」可能なアクセスを提供する。
【発明の概要】
【0004】
本発明の態様は、データを安全に格納するための方法、コンピュータ・プログラム製品、およびシステムを開示する。この方法は、少なくとも1つのコンピュータ・プロセッサが、データを格納するための要求を受信することを含み、このデータは複数の要素を含んでいる。この方法は、少なくとも1つのコンピュータ・プロセッサが、1つまたは複数のエンコーディング・アルゴリズムをデータに適用することによって、エンコードされたデータの複数の要素を生成することをさらに含み、エンコードされたデータの複数の要素の量は、データの複数の要素の量に等しい。この方法は、少なくとも1つのコンピュータ・プロセッサが、エンコードされたデータの複数の要素を、エンコードされたデータの2つ以上のサブセットに重複せずに分散することをさらに含む。この方法は、少なくとも1つのコンピュータ・プロセッサが、エンコードされたデータの2つ以上のサブセットを、対応する量の2つ以上のストレージ・システムに送信することをさらに含む。
【図面の簡単な説明】
【0005】
図1】本発明の一実施形態に従う、クラウド・コンピューティング環境の一部の機能ブロック図である。
図2】本発明の一実施形態に従ってセキュア・データ分散プログラムの動作ステップを示すフローチャートである。
図3】本発明の一実施形態に従ってセキュア・データ再構築プログラムの動作ステップを示すフローチャートである。
図4】本発明の少なくとも1つの実施形態に従って、データ・キーを利用してデータをエンコードし、エンコードされたデータを格納する前にエンコードされたデータをチャンクに分散し、メタデータを利用して、情報をエンコードされたデータのチャンクに関連付ける例を示す図である。
図5】本発明の一実施形態に従う、コンピュータのコンポーネントのブロック図である。
図6】本発明の一実施形態に従ってクラウド・コンピューティング環境を示す図である。
図7】本発明の一実施形態に従ってクラウド・コンピューティング環境の機能的抽象レイヤのセットを示す図である。
【発明を実施するための形態】
【0006】
本発明の実施形態は、クラウド・コンピューティングによって、企業が情報技術(IT:information technology)インフラストラクチャの初期費用を防ぐか、または最小限に抑えることができるということを認識する。加えて、本発明の実施形態は、多くの企業が、アプリケーションをクラウドに移行しており、さまざまな企業が、複数のクラウド・プラットフォームおよび複数のサービス・プロバイダをデータおよびアプリケーションに利用しているということを認識する。しかし、データの所有者は、特定のサービス・プロバイダに縛られることを望まないことがある。データの所有者は、データの移行においてデータを失うことなく、著しい努力をせずに、別のプロバイダに切り替えるための柔軟性を必要とする。格納されているデータの重要度が増すことに応じて、格納されているデータの可用性および耐久性を保証するために、データ所有者の期待は、より信頼できるメカニズムが準備されることを必要とするように発展している。本発明の実施形態は、クラウドサービス・プロバイダが、公開された政府統計、地図作成情報、社会的に共有された情報、気象データ、ニュースなどのパブリック・データを、クラウド上にすでに格納しているということを認識する。しかし、本発明の実施形態は、セキュリティの問題、信用の問題、プライバシーに対する懸念、規制などのために、プライベート・データが通常はパブリッククラウドに格納されないということも認識する。このような状況において、データ所有者は、セキュリティ、冗長性をさらに保証し、データ漏洩の脅威の可能性を減らすために、データを単一のクラウド内に格納する代わりに、複数のクラウド・プラットフォームにわたってデータを格納しようとする。
【0007】
本発明の実施形態は、クラウドストレージ・システム、パブリック・クラウド・システム、またはハイブリッド・クラウド・システム、あるいはその組み合わせなどの、複数のクラウド・プラットフォーム間で分散されるセキュアな形式に基づいて、データを信頼できる形態で安全に格納するための解決策を提供する。本明細書に記載されたデータのセキュアな分散された形式は、チャンクと呼ばれ、さらに具体的には、エンコードされたデータのチャンクと呼ばれる。エンコードされたデータの各チャンクは、データのエンコードされた要素のより大きいセットから一意に分散されたデータの要素のサブセット(例えば、より小さいグループ)である。本発明の実施形態は、エンコードされたデータの要素をエンコードされたデータの2つ以上のチャンクに分散する前に、セキュアな分散された格納のためのデータをエンコードする。本発明の実施形態は、1つまたは複数のデータ内の依存関係、再帰的アクション、または元のデータの少なくとも1つの要素もしくはエンコードされるデータの少なくとも1つの前の要素またはその両方の漸進的(すなわち、インデックス付けされた)利用、あるいはその組み合わせを利用して、データの要素をエンコードする。本発明の一部の実施形態は、元のデータをさらに難読化するために、1つまたは複数のエンコード・アルゴリズムによって利用される他の情報から成るデータ・キーも利用する。本発明の実施形態は、可逆的機能を利用して、データをエンコードおよびデコードする。
【0008】
本発明の実施形態は、エンコードされたデータの単一のチャンクが失われたか、破損したか、または取り出されなかった場合に、元のデータの全体を再構成(例えば、再現、再生)してデコードすることができなくなるように、エンコードされたデータをエンコードされたデータのチャンクに分散することによって、データをさらに保護することができる。追加の実施形態では、エンコードされたデータの個別のチャンクを、分離してデコードすることはできない。本発明のさまざまな実施形態は、大局処理とは対照的に、1つまたは複数のデータ内の要素の依存関係および再帰的動作(例えば、アクション、計算)を利用して、エンコードされたデータのすべてのチャンクが取り出されない限り、元のデータ全体を再構成することを不可能にし、エンコーディング・アルゴリズムおよびデコーディング・アルゴリズムに加えて、エンコードされたデータの分散アルゴリズムが知られている。
【0009】
したがって、本発明の一部の実施形態は、エンコードされたデータの単一のバイトまたは要素の損失または破損にも応答して、元のデータ全体を再構成することを不可能にする。データ内の要素の依存関係の例は、データの現在の要素の値をエンコードすることが、データの要素の現在の値および少なくとも1つの前のエンコードされたデータの要素の値に基づくことである。現在のデータの値をエンコードするために少なくとも1つの前の元のデータの値を含めることなどの、追加の依存関係はそれぞれ、元のデータをエンコードしてエンコードされたデータのチャンクに分散することに関連する本発明のセキュリティの特徴をさらに強化する。エンコードされたデータをデコードすることも、エンコードされたデータの要素の現在の値および少なくとも1つの前のエンコードされたデータの要素の値などの、データ内の要素の依存関係を含む。少なくとも1つの前のデコードされたデータの要素の値を利用して、エンコードされたデータの現在の要素の値をデコードすることなどの、追加の依存関係はそれぞれ、デコーディング・アルゴリズムのセキュリティをさらに強化する。
【0010】
本発明のさまざまな実施形態は、エンコードされたデータの1つのチャンクを、元のデータに対応するエンコードされたデータのチャンクを格納するために選択された異なる地理的位置またはクラウドストレージ・プロバイダあるいはその両方の各々に分散することによって、プライベート・データに関連するセキュリティをさらに改善する。1つの例では、少なくとも2つのクラウドストレージ・プロバイダが、同じ都市内で使用できるストレージ容量を有している場合、エンコードされたデータの2つのチャンクが、この都市内で格納されてよい。
【0011】
本発明の一部の実施形態は、1つまたは複数のクラウドストレージ・プロバイダがデータのバックアップを提供しないなどの場合の災害復旧のために、または1つの地理的位置が問題(例えば、自然災害、停電、ネットワーク崩壊など)による影響を受ける場合でも、二次ストレージ位置にアクセスすることに基づいて、タイムリーな方法で元のデータがまだ回復可能であることを保証するために、エンコードされたデータのチャンクの重複を利用する。本発明の実施形態は、チェックサムまたはハッシュ関数などの、当該技術において知られた1つまたは複数のデータ検証を利用して、エンコードされたデータまたはデコードされたデータあるいはその両方の取り出されたチャンクの完全性を保証する。
【0012】
本発明の実施形態の実装は、さまざまな形態を取ってよく、以下では、各図を参照して例示的な実装の詳細が説明される。
【0013】
ここで、各図を参照して本発明が詳細に説明される。図1は、本発明の1つの実施形態に従って、クラウド・コンピューティング・ノード10(図6に関してさらに詳細に説明される)などのクラウド・コンピューティング環境(概して、環境100と指定される)の一部を示す機能ブロック図である。環境100の実施形態は、ネットワーク130を経由してすべて相互接続されたシステム102および複数のクラウドストレージ位置(例えば、ストレージ120A~ストレージ120N)を含んでいる。図1は、単に1つの実装の例を提供しており、さまざまな実施形態を実装できる環境に関して、どのような制限も意味していない。特許請求の範囲に列挙されている本発明の範囲から逸脱することなく、当業者によって、示された環境に対する多くの変更が行われてよい。
【0014】
他の実施形態では、図1は、クラウド・コンピューティング環境(概して、環境100と指定される)とは異なるネットワーク・コンピューティング環境またはストレージ・アーキテクチャの一部を示している機能ブロック図である。1つの例では、ストレージ120A~ストレージ120Nのうちの1つまたは複数は、ネットワーク接続ストレージ(NAS:network-attached storage)システムもしくはデバイス、ストレージ・エリア・ネットワーク(SAN:storage area networks)、またはその他のストレージ・デバイス、あるいはその組み合わせなどの、さまざまな種類のストレージ・システムを表してよい。
【0015】
システム102およびストレージ120A~ストレージ120Nは、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ(PC:personal computers)、デスクトップ・コンピュータ、パーソナル・デジタル・アシスタント(PDA:personal digital assistants)、スマートフォン、ウェアラブル・デバイス(例えば、スマート・グラス、スマート・ウォッチなど)、または当該技術において知られた任意のプログラム可能なコンピュータ・システムであってよい。特定の実施形態では、システム102およびストレージ120A~ストレージ120Nは、データ・センターおよびクラウド・コンピューティング・アプリケーションにおいて一般的であるように、ネットワーク130を介してアクセスされたときにシームレスなリソースの単一のプールとして機能するクラスタ化されたコンピュータおよびコンポーネント(例えば、データベース・サーバ・コンピュータ、アプリケーション・サーバ・コンピュータなど)を利用する、コンピュータ・システムを表す。システム102およびストレージ120A~ストレージ120Nは、本発明の実施形態に従って、図5に関してさらに詳細に示され、説明されるように、コンポーネントを含んでよい。一般に、ストレージ120A~ストレージ120Nは、機械可読のプログラム命令を実行し、ネットワーク130を介してシステム102と通信することができる、任意のプログラム可能な電子デバイスまたはプログラム可能な電子デバイスの組み合わせを表す。
【0016】
システム102は、ストレージ103、セキュア・データ分散プログラム200、およびセキュア・データ再構成プログラム300を含んでいる。システム102は、Webサイト・インターフェイス、1つまたは複数のWebデーモン、データベース管理システム、ネットワーク・マッピング・プログラム、ネットワーク通信プログラム、さまざまな数学的変換、統計的変換などを実行するためのさまざまな機能またはプログラムあるいはその両方などの、さまざまなプログラムも含んでいる。1つの実施形態では、システム102は、クラウド・コンピューティング・システム内の1つまたは複数のコンピューティング・システムを表す。別の実施形態では、システム102は、会社、大学、企業などの組織の1つまたは複数のコンピューティング・システムを表す。一部の実施形態では、システム102は、ネットワーク130および1つまたは複数の通信プログラムもしくは通信プロトコルまたはその両方を利用して、ストレージ120A~ストレージ120Nをポーリングするか、または照会して、物理的位置、ストレージ・プロバイダの情報、ストレージのコスト、サービス水準合意(SLA:service level agreements)、データ・バックアップ機能などの、ストレージ位置の可用性に関連する情報を取得する。システム102は、その後、セキュア・データ分散プログラム200によってアクセスするために、ストレージ情報107内に情報を格納してよい。
【0017】
1つの実施形態では、ストレージ103は、データ104、データ・キー105、セキュリティ・アルゴリズム106、およびストレージ情報107を含んでいる。ストレージ103は、さまざまなテーブル、リスト、連想配列、データベース、またはその他のプログラム、あるいはその組み合わせを含んでもよい(図示されていない)。データ104は、分散された格納のためのデータをエンコードすること、およびエンコードされたデータをエンコードされたデータのチャンクに分散することの両方による難読化に基づいて、データのセキュアな分散された格納のためにシステム102を利用する1つまたは複数の実体(例えば、ユーザ、プログラム、企業、組織など)に関連付けられた複数のデータを含む。さまざまな実施形態では、データ104内のデータは、ネットワーク130を介して、さまざまな実体または実行中のプログラム(図示されていない)あるいはその両方によってシステム102にアップロードされるか、または転送される。別の実施形態では、データ104内のデータは、1つまたは複数の実行中のプログラム(図示されていない)によってシステム102内で生成される。
【0018】
データ・キー105は、分散して格納されるデータをエンコードおよびデコードするために1つのセキュリティ・アルゴリズムによって利用される複数のキーを含む。一実施形態では、データ・キー105は、さまざまな構造または形式あるいはその両方のデータ・キーを含む。1つの例では、データ・キー105内のデータ・キーは、ランダムな数値、英字、記号、またはこれらの組み合わせに基づいてよい。別の例では、データ・キーは、システム102にアクセスしているユーザまたはプログラムによって入力されたパスワードまたはパス・フレーズであってよい。一部の実施形態では、データ・キー105内のデータ・キーは、π、√2、または分数の最初の10桁などの、ルールに基づく。一部の実施形態では、分散プログラム200は、1つまたは複数のプログラム(例えば、関数)を実行して、データ・キー105のデータ・キー内の情報をインデックス付けされた数値に変換する。1つのシナリオでは、変換されたデータ・キーが、データ・キー105内に格納され、元のデータ・キーにそれぞれ関連付けられる。別のシナリオでは、変換されたデータ・キーが、ストレージ情報107内に格納され、エンコードされたデータの複数のチャンクに関連付けられたストレージ位置ID、チャンクID、シーケンス・データなどの、分散された格納のためのデータに関連する他の情報に関連付けられる。
【0019】
セキュリティ・アルゴリズム106は、セキュアな分散された格納のためのデータを準備するために利用される複数のアルゴリズムを含む。セキュリティ・アルゴリズム106は、データをエンコードし、エンコードされたデータをエンコードされたデータの複数のチャンクに分散し、エンコードされたデータの複数の取り出されたチャンクからエンコードされたデータを再構成(すなわち、再構築)し、エンコードされたデータをデコードするためのアルゴリズムを含む。以下では、本発明を実践するためのアルゴリズムのセットの例が提示され、図4に関してさらに詳細に説明される。セキュリティ・アルゴリズム106内のセキュリティ・アルゴリズムは、システム102の管理者によって開発されるか、またはシステム102のユーザによって開発されるか、あるいはその両方によって開発され、ユーザに関連付けられたデータに関連して利用されてよい。
【0020】
さまざまな実施形態では、セキュリティ・アルゴリズム106内のデータ・エンコード・アルゴリズムは、ソース・データの構成を利用してさまざまな変換を実行する(例えば、エンコードする)、可逆的機能(すなわち、アルゴリズム)である。1つの実施形態では、セキュリティ・アルゴリズム106内の1つまたは複数のアルゴリズムが、データ・キー105内のデータ・キーを利用して、データのエンコーディング中にデータの要素をさらに難読化する。一実施形態では、セキュリティ・アルゴリズム106は、データ・キー内の情報をインデックス付けされた数値に変換するため、またはデータ・キーを作成するため、あるいはその両方のための1つまたは複数のプログラム(例えば、関数)も含む。
【0021】
一部の実施形態では、アルゴリズムは1つまたは複数の制約を含む。1つのシナリオでは、データ・エンコード・アルゴリズムは、格納するデータ内のデータのすべての要素の最大値より少なくとも1大きい値でなければならない変数(例えば、max_val)などの、制約を含む。1つの例では、バイナリ・データを格納することに関して、データの要素のその値の範囲が0~255になる可能性がある場合、max_val=256である。別のシナリオでは、データ・エンコード・アルゴリズムがデータを再帰的にエンコードし、現在のエンコード値が、データの1つまたは複数の前にエンコードされた要素に対応する値に基づく場合(例えば、データ内の要素の依存関係)、データ分散アルゴリズムは、エンコードされたデータの異なるチャンクにおいて相互作用するエンコードされたデータの要素を格納するように制約される。一実施形態では、セキュリティ・アルゴリズム106は、データの要素がエンコードされるかどうか、およびどのようにエンコードされるかに影響を与える1つまたは複数の他の基準(例えば、ルール)を含む。1つの例では、エンコード・アルゴリズムに含まれる基準は、K[i]=0である場合にE[i]=D[i]であるということを提示してよい。
【0022】
セキュリティ・アルゴリズム106をさらに参照すると、以下では、分散された格納のためのデータに含まれているデータの複数の要素をエンコードすることと、データのエンコードされた要素をエンコードされたデータのチャンクに分散することと、分散して格納されたデータにアクセスする必要があることに応答して、エンコードされたデータの複数の格納されたチャンクからエンコード・データを取り出して再構成することと、その後、再構成されたエンコード済みデータをデコードしてデータを再生することとのためのセキュリティ・アルゴリズムのセットの実施形態例が提示される。
【0023】
以下の例示的なアルゴリズムでは、「%」記号はモジュロ(すなわち、モジュラス)演算を表す。例えば、エンコード・アルゴリズムの対は、E[0]=(D[0]+K[0])%max_valを含む(本明細書では、アルゴリズムED1と呼ばれる)。ここで、E[0]は、データの第1の要素(インデックス値[i]=0)のエンコード値を表す。本明細書において使用されるとき、インデックス位置およびインデックス値は、交換可能である。K[0]は、セキュアな分散された格納のためのデータに割り当てられたデータ・キー105のデータ・キーの第1の値(インデックス値[i]=0)である。本明細書において利用されるモジュロ演算(すなわち、%)に関して、%記号の左側の要素(すなわち、(D[0]+K[0]))に対応する値は、被除数である。%記号の右側の要素(すなわち、max_val)に対応する値は、除数であり、E[0]は、データの第1の要素のモジュロ演算によって生成された余りに等しい。一実施形態では、エンコード・アルゴリズムは、セキュアな分散された格納のためのデータのデータの要素の量に等しい(例えば、同じ)量のエンコードされたデータの要素を生成する。
【0024】
第1のデータ値の後のデータの要素(例えば、i>0のインデックス値)に対応するデータ値の場合は、E[i]=(E[i-1]+D[i-1]+D[i]+K[i%key_size])%max_valである(本明細書では、アルゴリズムED2と呼ばれる)。アルゴリズムED2は、エンコーディング制約(例えば、データ内の要素の依存関係)または少なくとも1つの再帰的アクションあるいはその両方を含む。現在の要素のエンコード値(データ値D[i]の対応する要素のE[i])は、データ・キーの要素(例えば、K[i%key_size])によって変更され、前のエンコード値E[i-1]および前のデータ値D[i-1]の両方によってさらに変更される。アルゴリズムED2内で、K[i%key_size]の項は、key_size<data_sizeであることに応答して、0~(key_size-1)の範囲のインデックス値を生成することに基づいて、データの要素に適用してエンコードするために、データ・キーからの要素の循環的選択を生成する。Data_sizeは、セキュアな分散された格納のためのデータの要素の数(すなわち、量)に対応する値である。
【0025】
セキュリティ・アルゴリズム106をさらに参照し、以下では、例示的なエンコード・アルゴリズムに関連付けられた制約に基づいて、関連するデータ「チャンク化」アルゴリズムが説明される。一実施形態では、分散された格納のためのエンコードされたデータを受信するために選択された位置の数(すなわち、量)に基づいて、生成されるチャンクの量(nb_chunks)は、2以上、かつデータに使用できるストレージ位置の量以下である。1つの例では、データ・チャンク化アルゴリズムおよびデータ要素分散アルゴリズムのセットは、「チャンク」(すなわち、C)内に含まれている要素の量に対応するサイズ値を含み、このサイズ値は、エンコードされたデータの一部から成り、size[c]=(data_size+nb_chunks-1-c)div nb_chunksによって表される(本明細書では、アルゴリズムCD1と呼ばれる)。ここで、cはチャンクに対応するインデックス値である。説明されたアルゴリズム内の関数「div」は、被除数(すなわち、(data_size+nb_chunks-1-c))の値および除数(すなわち、nb_chunks)の値の整数除算を表す。
【0026】
一実施形態では、データのエンコードされた要素をチャンクに分散することは、各チャンクおよび各チャンク内のデータの要素に対応するインデックス値を循環的に生成するアルゴリズムに基づく。それに応じて、生成されたインデックス値に対応するデータのエンコードされた要素が、チャンクに分散されるか、または割り当てられる。1つの例では、C[c][j]=E[c+j*nb_chunks](本明細書では、アルゴリズムCD2と呼ばれる)は、エンコードされた情報をチャンクに割り当て、0<=c<nb_chunksかつ0<=j<size[c]であり、ここで「c」はエンコードされたデータのチャンクのインデックス値を表し、「j」はエンコードされたデータのチャンク内のエンコードされたデータの要素に対応するインデックス値を表す。一部の実施形態では、チャンクの「c」のインデックス値は、チャンクに対応する識別子(ID)にそれぞれ関連付けられる。加えて、一部のシナリオでは、チャンクIDは、チャンクへのエンコードされたデータの分散に関連するシーケンス(例えば、1、2、3、...)に対応する。他のシナリオでは、エンコードされたデータのチャンクのシーケンスは、連想配列などを介して、チャンクIDに間接的に関連付けられ得る。
【0027】
セキュリティ・アルゴリズムの現在のセットを続行し、一実施形態では、チャンクに分散されたデータの複数の要素からエンコードされたデータを再構成する(例えば、分散アルゴリズムを逆転して再現する)ことに対応するアルゴリズムが、0<=i<データサイズの場合に、E[i]=C[i%nb_chunks][i div nb_chunks]によって表される(本明細書では、アルゴリズムRE1と呼ばれる)。ここで、アルゴリズムRE1の[i%nb_chunks]の項は、チャンク・インデックスまたは関連するチャンクIDあるいはその両方に対応し、[i div nb_chunks]は、チャンク内の要素の設定されたインデックス値に対応する(「j」に関して前に説明されており、0<=j<size[c]である)。
【0028】
再構成されたエンコード済みデータに適用される対応するデコーディング・アルゴリズムの対が、データ・セキュリティ・アルゴリズムの例示的なセットを完成させる。ここで、max_valの値は、データをエンコードするために利用されるmax_valの値と同じであり、ここで、インデックス値は、再構成されたエンコード済みデータの要素に対応する。例えば、再構成されたエンコード済みデータの初期の(すなわち、第1の)要素をデコードするために、D[0]=(E[0]-K[0]+max_val)%max_valが利用される(本明細書では、アルゴリズムDE1と呼ばれる)。さらに、再構成されたエンコード済みデータのその後の要素をデコードするために、0<i<data_sizeの場合に、D[i]=(E[i]-E[i-1]-D[i-1]-K[i%key_size]+nb_chunks*max_val)%max_valである(本明細書では、アルゴリズムDE2と呼ばれる)。データを保護することに関して前述したように、アルゴリズムDE2は、エンコードされたデータのチャンクが欠落しているか、または破損している場合に元のデータの全体を回復不能にするように少なくとも1つの再帰的アクションまたはデータ内の依存関係を含む。
【0029】
ストレージ情報107は、分散された格納のために準備されているか、またはエンコードされたデータのチャンクとしてストレージ120A~ストレージ120Nにすでに格納されているか、あるいはその両方である、複数のデータに関連する情報を含む。1つの実施形態では、ストレージ情報107は、データを格納したか、または分散して格納されたデータにアクセスしたか、あるいはその両方である1つまたは複数の実体、ストレージ位置ID、チャンクID、エンコードされたデータの複数のチャンクに関連付けられたシーケンス(例えば、分散アルゴリズムに基づくチャンクIDシーケンス)、データのエンコーディング中に利用されるデータ・キー、データの完全性検証/情報などの、分散された格納のためのデータに関連する情報を含む。一部の実施形態では、ストレージ情報107内の情報は、1つまたは複数のテーブルまたはデータベースあるいはその両方などのデータ構造内に格納される。さまざまな実施形態では、エンコードされたデータのチャンクに関連するメタデータ(図4に関してさらに詳細に説明される)も、ストレージ情報107内に含まれ、分散された格納のために、元のデータまたは元のデータに関連付けられた参照にさらに関連付けられる。
【0030】
別の実施形態では、ストレージ情報107内の一部の情報は、ネットワーク130を介して複数のストレージ・プロバイダに照会し、物理的位置、ストレージ・プロバイダ情報、ストレージのコストなどの、ストレージ120A~ストレージ120Nに関連する情報を取得するシステム102によって、取得される。一実施形態では、ストレージ位置IDは、ストレージ・プロバイダまたはストレージ・システムの対応する物理的(例えば、地理的)位置あるいはその両方にさらに関連付けられる。一部のシナリオでは、ストレージIDはシステム102によって割り当てられる。他のシナリオでは、ストレージIDは、ストレージ120A~ストレージ120Nにそれぞれ関連付けられたストレージ・プロバイダによってシステム102に提供された情報に対応する。
【0031】
一部の実施形態では、セキュア・データ分散プログラム200およびセキュア・データ再構成プログラム300は、アプリの所有者または開発者あるいはその両方が、アプリの複数のバージョンのサポートを可能にするために加入するサービスである。セキュア・データ分散プログラム200およびセキュア・データ再構成プログラム300は、セキュリティ86(図6および図7に関してさらに詳細に説明される)などの、クラウド・コンピューティング環境50の管理レイヤ80の機能のうちの1つを介して実装されてよい。代替または追加として、セキュア・データ分散プログラム200およびセキュア・データ再構成プログラム300は、データ・セキュリティ96(図6および図7に関してさらに詳細に説明される)などの、クラウド・コンピューティング環境50のワークロード・レイヤ90の仮想化された特徴のうちの1つを介して実装されてよい。別の実施形態では、セキュア・データ分散プログラム200およびセキュア・データ再構成プログラム300は、エンコードされたデータのチャンクをシステム102に関連付けられた他の内部ストレージ位置に格納するために、メインフレーム、ネットワーク・コンピューティング環境、または分散コンピューティング環境、あるいはその組み合わせなどの、別のアーキテクチャ内で動作しているパブリック・クラウドストレージ環境と異なるストレージ環境内、またはそのような環境に加えたストレージ環境内、あるいはその両方のストレージ環境内で、実装される。
【0032】
セキュア・データ分散プログラム200は、パブリック・クラウドストレージ環境などのクラウド内のセキュアな格納のためのデータを準備するプログラムである。他のストレージ環境内で動作するために、セキュア・データ分散プログラム200のさまざまな態様が実装され得る。1つの実施形態では、セキュア・データ分散プログラム200は、1つまたは複数のエンコーディング・アルゴリズムを利用して、分散された格納のためのデータの要素を数値形式でエンコードする。セキュア・データ分散プログラム200は、データ・キーを利用して、データの要素のエンコーディングをさらに難読化してよい。さまざまな実施形態では、セキュア・データ分散プログラム200は、1つまたは複数の分散アルゴリズムを利用して、データのエンコードされた要素をエンコードされたデータのチャンクに分散する。一実施形態例では、エンコードされたデータをエンコードされたデータのチャンクに分散することによって、セキュア・データ分散プログラム200は、元のデータに関連付けられたエンコードされたデータのチャンクのすべてが取り出され、エンコードされたデータのチャンクへのデータのエンコードされた要素の分散順序も知られない限り、元のデータ全体を回復不能にすることができる。
【0033】
別の実施形態では、セキュア・データ分散プログラム200が、分散された格納のためのデータがすでに格納されており、データの現在のバージョンが変更されているということを決定した場合、セキュア・データ分散プログラム200は、データの現在のバージョンに対応するエンコードされたデータのチャンクを格納する前に、バックアップ指示がないことに基づいて、分散されたストレージ内のエンコードされたデータのチャンクを削除する。セキュア・データ分散プログラム200は、1つまたは複数のストレージ位置を再利用して、データの現在のバージョンに対応するエンコードされたデータのチャンクを格納してよく、またはセキュア・データ分散プログラム200は、データの現在のバージョンに対応するエンコードされたデータのチャンクを格納するためのストレージの異なるセットを選択してよい。一実施形態では、セキュア・データ分散プログラム200は、エンコードされたデータのチャンクをストレージ位置のセットに送信する前に、1つまたは複数のセキュリティ・アルゴリズムの性能を改善するために、分散された格納のためのデータをシステム102のRAM(図示されていない)に移行する。
【0034】
セキュア・データ再構成プログラム300は、分散して格納されたデータを識別し、分散して格納されたデータを含んでいるエンコードされたデータの複数のチャンクを取り出し、エンコードされたデータの複数の取り出されたチャンクからエンコードされたデータを再構成した後に、エンコードされたデータをデコードするプログラムである。1つの実施形態では、セキュア・データ再構成プログラム300は、2つ以上のクラウドストレージ位置に分散されたエンコードされたデータの複数のチャンクからデータを再構成するように動作する。一部の実施形態では、セキュア・データ再構成プログラム300は、ユーザまたはプログラムあるいはその両方が、分散して格納されたデータにアクセスすることを示していることに応答して、セキュリティ・プログラム、関数、またはAPI、あるいはその組み合わせによって自動的に実行される。
【0035】
さまざまな実施形態では、セキュア・データ再構成プログラム300は、エンコードされたデータの複製されたチャンクまたはバックアップされたチャンクを利用して、エンコードされたデータを再構成する。セキュア・データ再構成プログラム300は、1つまたは複数のデータ完全性検証方法を利用して、エンコードされたデータの複製されたチャンクが、エンコードされたデータの欠落、または破損したチャンクの正確な複製であることを保証することができる。一実施形態では、セキュア・データ再構成プログラム300は、1つまたは複数のセキュリティ・アルゴリズムの性能を改善するために、エンコードされたデータまたは再構成されたエンコード済みデータあるいはその両方の取り出されたチャンクを、システム102のRAM(図示されていない)内に格納する。
【0036】
1つの実施形態では、システム102は、ネットワーク130を介して、ストレージ120A~ストレージ120Nと通信する。別の実施形態では、ネットワーク130は、システム102を、ソフトウェア契約の監視(図7に関してさらに詳細に説明される)などの1つまたは複数のサービスを含んでいるクラウド・コンピューティング環境50(図6に関してさらに詳細に説明される)の1つまたは複数のノードに接続してもよい。1つの例では、ネットワーク130は、本発明の1つまたは複数の実施形態を利用するためのライセンスが付与されたアプリに関連するネットワーク・トラフィックをシステム102にルーティングするネットワーク・エージェント/デーモンを含んでよい。代替として、ネットワーク130は、本発明の実施形態を利用するためのライセンスが付与されていないアプリに関連するネットワーク・トラフィックを、クラウド・コンピューティング環境50内の別のノードにルーティングしてよい。
【0037】
例えば、ネットワーク130は、ローカル・エリア・ネットワーク(LAN:local area network)、電気通信ネットワーク、イントラネットなどの無線ローカル・エリア・ネットワーク(WLAN:wireless local area network)、インターネットなどの広域ネットワーク(WAN:wide area network)、またはこれらの任意の組み合わせであることができ、有線接続、無線接続、または光ファイバ接続を含むことができる。一般に、ネットワーク130は、本発明の実施形態に従って、システム102とストレージ120A~ストレージ120Nの間の通信をサポートする接続およびプロトコルの任意の組み合わせであることができる。さまざまな実施形態では、ネットワーク130は、有線接続、無線接続、または光学的接続を介してローカルに動作し、接続およびプロトコル(例えば、パーソナル・エリア・ネットワーク(PAN:personal area network)、近距離無線通信(NFC:near field communication)、レーザー、赤外線、超音波など)の任意の組み合わせであることができる。一部の実施形態では、ネットワーク130の実例は、クラウド・コンピューティング環境50の2つ以上の仮想化された実体(図示されていない)を接続する仮想LAN(VLAN:virtual LAN)である。他の実施形態では、ネットワーク130は、ネットワーク・コンピューティング環境である環境100の実例内の1つまたは複数のLANまたはVLANあるいはその両方を表し、システム102とストレージ120A~ストレージ120Nの間の通信を可能にする。
【0038】
1つの実施形態では、ストレージ120A~ストレージ120Nは、それぞれ異なる地理的位置の複数のストレージ・システムを表す。さまざまな実施形態では、ストレージ120A~ストレージ120Nのうちの1つまたは複数は、クラウドストレージ・システム内またはクラウド・コンピューティング環境内あるいはその両方に含まれる。一部の実施形態では、ストレージ120の各実例をホストするクラウドストレージ・システムまたはクラウド・コンピューティング環境あるいはその両方は、2つ以上の異なるベンダーまたはクラウドサービス・プロバイダに対応する。別の実施形態では、ストレージ120A~ストレージ120Nは、システム102に関連付けられたネットワーク・コンピューティング環境、分散コンピューティング環境などの複数のストレージ・システムまたはストレージ・デバイスあるいはその両方を表す。
【0039】
図2は、セキュア・データ分散プログラム200の動作ステップを示すフローチャートであり、このプログラムは、本発明の実施形態に従って、データをエンコードし、エンコードされたデータをデータのより小さいセットに分散し、データのより小さいセットを複数のストレージ位置に送信することによって、データを安全に格納する。さまざまな実施形態では、セキュア・データ分散プログラム200によって識別されたか、または更新されたか、あるいはその両方を実行された情報の一部が、その後、分散して格納されたデータを取り出して再構成するために、セキュア・データ分散プログラム300の態様によって利用される。
【0040】
ステップ202で、セキュア・データ分散プログラム200が、分散された格納のためのデータを識別する。1つの実施形態では、セキュア・データ分散プログラム200は、ユーザ、プログラム、セキュリティ機能から取得された情報に基づいて、またはデータに関連付けられたセキュリティ・ルールに基づいて、あるいはその両方に基づいて、分散された格納のためのデータをデータ104内で識別する。一部の実施形態では、セキュア・データ分散プログラム200は、データを分散するためのストレージ位置の量に対応する値または値の範囲、データ・キー(例えば、キー長、キーID、データ・キーに関連するルールなど)に関連付けられた指示、格納するデータを含んでいる要素から識別された最大値などの、セキュアな分散された格納のためのデータに関連付けられた他の情報を決定する。別の実施形態では、セキュア・データ分散プログラム200は、データ・キー105内、セキュリティ・アルゴリズム106内、またはストレージ情報107内、あるいはその組み合わせ内の、セキュアな分散された格納のためのデータに関連付けられた情報を決定する。セキュア・データ分散プログラム200は、コストまたは政府規制などの、セキュアな分散された格納のためのデータに関連付けられた制約を識別してよい。
【0041】
一実施形態では、セキュア・データ分散プログラム200は、システム102にインストールされたさまざまな機能またはプログラム(図示されていない)あるいはその両方を利用して、さまざまな数学的変換、統計的変換などを実行し、データに対応するサイズ、データに関連するmax_val、キーおよびデータの要素のインデックス値などの、分散された格納のためのデータに関連する情報を取得し、分散された格納のためのデータに関連付けられた情報をリンクするテーブル/連想配列を生成してよい。さまざまな実施形態では、セキュア・データ分散プログラム200は、データ・エンコーディング・アルゴリズム、データ・チャンク化アルゴリズム、およびデータ分散アルゴリズムなどの、分散された格納のためのデータに関連して利用されるアルゴリズムのセットも識別する。
【0042】
ステップ204で、セキュア・データ分散プログラム200は、データの分散されたストレージの位置のセットを決定する。一実施形態では、セキュア・データ分散プログラム200は、ストレージ情報107内の使用できる情報に基づいて、データの分散されたストレージの位置またはストレージIDあるいはその両方のセットを決定する。その後、セキュア・データ分散プログラム200は、ストレージ情報107内のデータの分散されたストレージに関連する他の情報を含むか、または更新するか、あるいはその両方を実行してよい。さまざまな実施形態では、セキュア・データ分散プログラム200は、ネットワーク130を利用して、1つまたは複数のクラウドストレージ・プロバイダをポーリングし、分散された格納のためのデータを含んでいるエンコードされたデータのチャンクを格納するために使用できるストレージ120A~ストレージ120Nなどの位置を識別する。1つの実施形態では、セキュア・データ分散プログラム200は、分散された格納のためのデータ(ステップ202)に関連付けられたストレージ位置の量に関連する情報に基づいて、位置のセットを決定する。
【0043】
別の実施形態では、セキュア・データ分散プログラム200は、1つまたは複数のクラウドストレージ・プロバイダをポーリングすることに応答して識別された使用可能な位置の量に基づいて、データの分散された格納のための位置のセットを決定する。一部の実施形態では、セキュア・データ分散プログラム200は、分散された格納のためのデータに関連付けられた情報によって指示されたストレージ位置の量に加えて、1つまたは複数のストレージ位置を識別する。その後、セキュア・データ分散プログラム200は、1つまたは複数の制約またはルールを利用して、データの分散されたストレージの位置のセットを決定する。他の実施形態では、セキュア・データ分散プログラム200は、クラウドストレージ環境と異なる1つまたは複数のストレージ・アーキテクチャに基づいて、データの分散されたストレージのストレージ位置のセットを決定する。
【0044】
ステップ206で、セキュア・データ分散プログラム200が、分散された格納のためのデータをエンコードする。セキュア・データ分散プログラム200は、1つまたは複数のエンコード・アルゴリズムを利用して、分散された格納のための元のデータの複数の要素にそれぞれ関連付けられた、エンコードされたデータの複数の要素を生成する。1つの実施形態では、セキュア・データ分散プログラム200は、セキュアな分散された格納のためのデータに関連付けられた情報によって指示されたセキュリティ・アルゴリズム106内の1つまたは複数のエンコード・アルゴリズムを利用して、分散された格納のためのデータをエンコードする。別の実施形態では、セキュア・データ分散プログラム200は、セキュリティ・アルゴリズム106から選択された1つまたは複数のエンコード・アルゴリズムを利用して、分散された格納のためのデータをエンコードする。
【0045】
一部の実施形態では、セキュア・データ分散プログラム200は、1つまたは複数のエンコード・アルゴリズムを利用して、データ・キーからの1つまたは複数の数値を適用することによって、エンコードされたデータをさらに難読化する(図4に関してさらに詳細に説明される)。セキュア・データ分散プログラム200が、データ・キーが1つまたは複数のルールに基づいているか、または非数値の文字を含んでいるか、あるいはその両方であるということを決定した場合、セキュア・データ分散プログラム200は、1つまたは複数の変換またはルールあるいはその両方を利用して、数値を含んでいるデータ・キーのバージョンを生成する。さまざまな実施形態では、セキュア・データ分散プログラム200は、max_val変数、データ・キー105からのデータ・キー、1つまたは複数の利用されるエンコード・アルゴリズムを識別する情報、データ・キーの数値のバージョン、エンコードされたデータに対応するチェックサムまたはハッシュ値などの、分散された格納のためのデータをエンコードすることに関連する識別された情報に基づいて、セキュアな分散された格納のためのデータに関連付けられた情報を更新する。
【0046】
ステップ208で、セキュア・データ分散プログラム200は、エンコードされたデータを、エンコードされたデータの複数のチャンクに分散する。一実施形態では、セキュア・データ分散プログラム200は、エンコードされたデータを、ストレージ位置の決定されたセット内のストレージ位置の量に対応する量(例えば、nb_chunks)の、エンコードされたデータのチャンクに分散する。セキュア・データ分散プログラム200は、ID、シーケンス情報、およびエンコードされたデータのチャンクに対応するサイズ値(図4に関してさらに詳細に説明される)、エンコードされたデータのチャンクごとのチェックサムまたはハッシュ値などの情報を、さらに決定するか、または関連付けるか、あるいはその両方を実行してよい。
【0047】
一部の実施形態では、セキュア・データ分散プログラム200は、(セキュリティ・アルゴリズム106に関して前に説明された)分散された格納のためのデータに関連付けられた情報によって指示された、セキュリティ・アルゴリズム106内の1つまたは複数のデータ・チャンク化アルゴリズムおよびデータ分散アルゴリズムを利用して、エンコードされたデータを分散する。別の実施形態では、セキュア・データ分散プログラム200は、セキュリティ・アルゴリズム106から選択された1つまたは複数のデータ・チャンク化アルゴリズムおよびデータ分散アルゴリズムを利用して、エンコードされたデータを分散する。さまざまな実施形態では、セキュア・データ分散プログラム200が、利用されるエンコード・アルゴリズムがデータ内の要素の依存関係を含んでいるということを決定した場合、セキュア・データ分散プログラム200は、データ内の要素の依存関係と互換性があるデータ分散アルゴリズムを利用する(図4に関してさらに詳細に説明される)。
【0048】
ステップ210で、セキュア・データ分散プログラム200は、位置のセット内の格納のために、エンコードされたデータの複数のチャンクを送信する。さまざまな実施形態では、セキュア・データ分散プログラム200は、1つまたは複数の通信プロトコルを実行し、ネットワーク130を介して、エンコードされたデータのチャンクを格納するクラウドベースのストレージ位置の(例えば、ストレージ120A~ストレージ120Nから)決定されたセットとの通信を確立し、認証する(例えば、アクセスを確立する)。1つの実施形態では、セキュア・データ分散プログラム200が、エンコードされたデータの送信されたチャンクの各々が正常に格納されたという確認応答を受信することに応答して、セキュア・データ分散プログラム200は、元のデータをデータ104から削除する。一部の実施形態では、セキュア・データ分散プログラム200が、エンコードされたデータのチャンクをストレージ位置の決定されたセットからのストレージ位置内に格納できない場合(例えば、認証の失敗、タイムアウト、接続の問題、問題、別の可用性の問題など)、セキュア・データ分散プログラム200は、決定された1つまたは複数の追加の(例えば、代替の)ストレージ位置から、エンコードされたデータのチャンクの別のストレージ位置を選択する。
【0049】
1つの実施形態では、セキュア・データ分散プログラム200が、エンコードされたデータの送信されたチャンクの各々が正常に格納されたという確認応答を受信することに応答して、セキュア・データ分散プログラム200は、エンコードされたデータのチャンクに対応する位置を識別するストレージ情報107を更新する。セキュア・データ分散プログラム200は、データの分散されたストレージに関連する情報を格納するメタデータ情報またはその他のデータ構造(例えば、メタデータ、テーブル、連想配列など)あるいはその両方を更新するなどの、データの分散されたストレージに関連する情報に基づいて、ストレージ情報107を更新する。
【0050】
図3は、セキュア・データ再構成プログラム300の動作ステップを示すフローチャートであり、このプログラムは、本発明の実施形態に従って、セキュアな格納のために複数の位置に分散されたエンコードされたデータの複数のチャンクを取り出し、再び組み立て、デコードすることによって、セキュアな格納のために分散されたデータを復元する。
【0051】
ステップ302で、セキュア・データ再構成プログラム300は、分散して格納されたデータに関連する情報を識別する。セキュア・データ再構成プログラム300は、ユーザ、ソフトウェア・アプリケーション、またはシステムの機能、あるいはその組み合わせなどの、システム102を利用している1つまたは複数の実体から要求を受信することに基づいて、分散してシステム102に格納されたデータを取り出して復元するための要求に応答してよい。一実施形態では、セキュア・データ再構成プログラム300は、ストレージ情報107内の情報に基づいて、分散して格納されたデータに関連する情報を識別する。1つの例では、セキュア・データ再構成プログラム300は、チャンクID、エンコードされたデータのチャンクに関連するシーケンス(例えば、チャンクIDシーケンス)、エンコードされたデータのチャンクに対応するストレージ位置、分散された格納のためのデータを準備するために利用されるセキュリティ・アルゴリズムのセット、データのエンコーディング中に適用されるデータ・キーなどの、分散して格納されたデータに関連するストレージ情報107内の情報を識別する。セキュア・データ再構成プログラム300は、再構成されたデータを格納するための指定された位置を識別してもよい。一部の実施形態では、セキュア・データ再構成プログラム300は、エンコードされたデータのチャンクの追加のコピーを分散するために、セキュア・データ分散プログラム200がバックアップ(例えば、複製)方針を利用したかどうか、データ完全性検証の情報、およびエンコードされたデータのチャンクの追加のコピーのストレージに関連する情報などの、分散されたデータの他の情報も識別する。
【0052】
ステップ304で、セキュア・データ再構成プログラム300は、分散して格納されたデータに対応するエンコードされたデータのチャンクを取り出す。セキュア・データ再構成プログラム300は、ストレージ情報107内の分散して格納されたデータに関連する識別された情報を利用して、分散して格納されたデータに対応するエンコードされたデータのチャンクに対応するストレージ位置を識別する。一部の実施形態では、セキュア・データ再構成プログラム300は、1つまたは複数の通信プロトコルを実行し、ネットワーク130を介して、取り出すエンコードされたデータのチャンクを格納するストレージ120の実例との通信を確立し、認証する(例えば、アクセスを確立する)。さまざまな実施形態では、セキュア・データ再構成プログラム300は、ストレージ120A~ストレージ120Nから識別されたクラウドストレージ位置(例えば、異なる地理的位置)から、エンコードされたデータのチャンクを取り出す。
【0053】
別の実施形態では、セキュア・データ再構成プログラム300が、分散して格納されたデータに対応するエンコードされたデータのチャンクを正常に取り出すことに応答して、セキュア・データ再構成プログラム300は、エンコードされたデータのチャンクを各ストレージ位置から削除する。代替として、セキュア・データ再構成プログラム300は、分散して格納されたデータに関連する情報に基づいて、エンコードされたデータのチャンクを各ストレージ位置内に残してよい。
【0054】
一実施形態では、セキュア・データ再構成プログラム300が、分散して格納されたデータに対応するエンコードされたデータのチャンクを格納する1つまたは複数の位置がアクセス可能でないということを決定した場合(例えば、ネットワークの問題、サーバの問題など)、セキュア・データ再構成プログラム300は、セキュア・データ分散プログラム200が、複製方針を利用して、分散して格納されたデータに対応するエンコードされたデータのチャンクを分散したかどうかを判定する。セキュア・データ分散プログラム200が複製方針を利用したということの決定に応答して、セキュア・データ再構成プログラム300は、一次ストレージ位置から取り出すことができないエンコードされたデータのチャンクを格納している1つまたは複数の他の(例えば、二次的な、代替の)位置を、ストレージ120A~ストレージ120Nから識別する。
【0055】
ステップ304をさらに参照すると、他の実施形態では、セキュア・データ再構成プログラム300は、さまざまな通信方法を利用して、異なるストレージ・ノード、サーバ、SANシステム、またはNASシステム、あるいはその組み合わせなどの、クラウドストレージ位置と異なるか、またはクラウドストレージ位置に加えて、エンコードされたデータのチャンクを格納しているストレージ120A~ストレージ120Nの1つまたは複数の他の実例へのアクセスを確立する。一実施形態では、ストレージ120A~ストレージ120Nの他の実例のうちの1つまたは複数は、同じ地理的位置または物理的位置あるいはその両方にあることができる。
【0056】
ステップ306で、セキュア・データ再構成プログラム300は、エンコードされたデータの取り出されたチャンクから、エンコードされたデータを再構成する。一実施形態では、セキュア・データ再構成プログラム300は、セキュリティ・アルゴリズム106内に含まれている、データを再構成するための1つまたは複数のアルゴリズム、および分散して格納されたデータに関連する情報を利用して、エンコードされたデータのチャンクに分散されたエンコードされたデータの複数の要素から、エンコードされたデータを再構成する。1つの実施形態では、セキュア・データ再構成プログラム300は、チャンクIDまたはチャンク・シーケンス情報あるいはその両方を利用して、分散して格納されたデータに対応するエンコードされたデータを再構成する(例えば、再び組み立てる、再構築する、再生する)。別の実施形態では、セキュア・データ再構成プログラム300は、エンコードされたデータのチャンクに関連付けられたメタデータを利用して、分散して格納されたデータに対応するエンコードされたデータを再構成する。さまざまな実施形態では、セキュア・データ再構成プログラム300は、分散して格納されたデータに対応する元のエンコードされたデータに適用されたデータ・チャンク化アルゴリズムおよびデータ分散アルゴリズムのプロセスを逆転する1つまたは複数の再構成アルゴリズムを利用する。
【0057】
ステップ308で、セキュア・データ再構成プログラム300は、再構成されたエンコード済みデータをデコードする。セキュア・データ再構成プログラム300は、分散して格納されたデータに対応する再構成されたエンコード済みデータをデコードする。さまざまな実施形態では、セキュア・データ再構成プログラム300は、分散して格納されたデータに対応するエンコードされたデータをデコードすることに関連する、ステップ302で取得された他の情報を識別する。1つの例では、セキュア・データ再構成プログラム300は、分散された格納のためのデータをエンコードするために利用されるデータ・キー、データ・キーに関連する情報(例えば、キー・サイズ、データ・キー生成ルールなど)、および分散された格納のためのデータをエンコードするために利用されたエンコード・アルゴリズムに対応するデコード・アルゴリズムを識別する。1つの実施形態では、セキュア・データ再構成プログラム300は、データ・キー105内に格納されている識別されたデータ・キーおよびセキュリティ・アルゴリズム106内に含まれている対応するデコード・アルゴリズムを利用することによって、再構成されたエンコード済みデータをデコードする。別の実施形態では、セキュア・データ再構成プログラム300は、ストレージ情報107に含まれ、分散して格納されたデータに関連付けられている、識別されたデータ・キーまたはデータ・キー生成ルールあるいはその両方を利用することによって、再構成されたエンコード済みデータをデコードする。
【0058】
図4は、本発明の実施形態に従って、セキュリティ・アルゴリズムのセット(例えば、アルゴリズムED1、ED2、CD1、CD2、RE1、DE1、およびDE2)を利用して、データの複数の要素をエンコードし、その後、エンコードされたデータのチャンクのエンコードされた要素を分散することに基づいて、セキュアな分散された格納のためのデータの複数の要素を含んでいるデータを準備する例である。図4は、セキュアな分散された格納のためのデータに適用されるセキュリティ・アルゴリズムのさまざまな態様の一部の出力も示している。
【0059】
データ401は、セキュアな分散された格納のためのデータの例である。一実施形態では、データ401は、「A」などの、名前またはその他の識別子(例えば、データID)に関連するメタデータ(図示されていない)を関連付けている。データ401に関連付けられたメタデータは、ストレージ情報107に含まれてよい。この例では、データ401は、データの15個の要素から成る。この例では、行402は、データ401のデータの要素に対応する0~14の範囲のインデックス位置(例えば、インデックス値)を示している。図に示された例では、インデックス位置i=0で、データ401内のデータの対応する要素の値が14であり、i=10で、データの対応する要素の値が1である。一実施形態では、セキュア・データ分散プログラム200が、データ401のデータをエンコードするために、(ステップ202で)max_val=24(例えば、23+1)を決定する。加えて、セキュア・データ分散プログラム200が、データ401内のデータの要素の量に対応する値(すなわち、data_size=15)を決定する。
【0060】
加えて、セキュア・データ分散プログラム200は、データ・キーに関連付けられた指示などの、データ401に関連付けられた情報に基づいて、データ401に割り当てられたエンコード・アルゴリズムがkey_size=3のキーを指示するということも決定する。図に示された例では、キー403は、0、1、および2の各インデックス位置を有する3つの要素3、1、および9から成る。一実施形態では、キー403の3つの要素が数値であるため、セキュア・データ分散プログラム200は、キー403内の情報の追加の変換も操作も必要ではないということを決定する。
【0061】
一実施形態では、セキュア・データ分散プログラム200は、(セキュリティ・アルゴリズム106に関して前に説明された)アルゴリズムED1およびアルゴリズムED2(E[0]=(D[0]+K[0])%max_valおよびE[i]=(E[i-1]+D[i-1]+D[i]+K[i%key_size])%max_val)を利用して、セキュアな分散された格納のためのデータ401をエンコードするということを(ステップ202で)決定する。
【0062】
1つの例では、セキュア・データ分散プログラム200は、データ401を(ステップ206で)エンコードする。一実施形態では、例示的なエンコード関数のK[i%key_size]の項は、データ・キー403からの値をデータ401の要素に循環的に適用してエンコードする。この例では、列404が、キー403に適用されたK[i%key_size]の項の出力である。例示的なエンコード・アルゴリズムの対内のK[0]およびK[i]の項に基づいて、列404の各要素が、対応するインデックス値を有するデータ401の要素のデータ値にそれぞれ適用される。例えば、i=6の場合、K[6]=3であり、この値が、データ401のデータD[6]の要素(すなわち、17)をエンコードすることに応答して利用される。
【0063】
この例では、エンコードされたデータ410は、キー403ならびにアルゴリズムED1およびアルゴリズムED2を利用してデータ401をエンコードするセキュア・データ分散プログラム200の出力を示している。一実施形態では、データ401のデータの要素のインデックス値は、エンコードされたデータ410のデータの要素のインデックス値にも対応している。一部の実施形態では、セキュア・データ分散プログラム200は、指示されたエンコード・アルゴリズムのうちの少なくとも1つがデータ内の要素の依存関係を含むということも(ステップ206で)決定する。例えば、上記のエンコード・アルゴリズムは、前のエンコード値(すなわち、E[i-1])およびデータの要素の対応する前の値(すなわち、D[i-1])に関連付けられたデータ内の要素の依存関係を含んでいる。
【0064】
一実施形態では、セキュア・データ分散プログラム200は、分散されたデータ(すなわち、データ401)を受信して格納するためのサイトの量に対応する値が4であり、したがって、作成するデータまたはチャンクのサブセットの量が4である(例えば、nb_chunks=4)ということを(ステップ204で)決定する。さらに、セキュア・データ分散プログラム200が、データ401をエンコードするために利用されるアルゴリズム(すなわち、アルゴリズムED2)が、1つまたは複数のデータ内の要素の依存関係を含んでいるということを決定することに応答して、セキュア・データ分散プログラム200は、エンコードされたデータ410が4つのチャンクに分散されるということ、およびデータの各チャンクが、エンコードされたデータ410のE[5]およびE[6]などの連続的な対応するインデックス値を有するデータ要素を含むことを制限されるということを決定する。一部の実施形態では、チャンクの「c」のインデックス値は、要素420のチャンクIDなどの、分散された格納のためのデータのチャンクに対応する識別子(ID)に、それぞれ関連付けられる。
【0065】
この例では、チャンクID1がチャンク430Aに関連付けられ、チャンクID2がチャンク430Bに関連付けられ、チャンクID3がチャンク430Cに関連付けられ、チャンクID4がチャンク430Dに関連付けられる。一部の実施形態では、セキュア・データ分散プログラム200は、データ401の分配された格納に関連付けられたセキュリティ・アルゴリズムのセットが、1つまたは複数のデータ・チャンク化アルゴリズムを含むということを識別する。データ・チャンク化アルゴリズムの1つの態様は、チャンクに対応するインデックス値に基づいて、「チャンクID」内に含まれている要素の量に対応するサイズ値を決定する。一実施形態例では、チャンクに対応するサイズが、アルゴリズムCD1によって決定される。1つの例では、チャンク430Bに関連付けられたチャンクID2は、チャンク・インデックス値(chunk index value)=1と、エンコードされたデータ410の4つの要素がチャンク430Bに割り当てられることを示す対応するサイズ値=4とを有する。
【0066】
一実施形態では、セキュア・データ分散プログラム200は、エンコードされたデータ410を、エンコードされたデータの4つのチャンクに循環的に分散する。図に示された例では、セキュア・データ分散プログラム200は、データ・チャンク化アルゴリズムを利用して、データの4つのチャンクへの分散のために、エンコードされたデータ410内のエンコードされたデータの要素に対応するインデックス値を循環的に決定する。それに応じて、セキュア・データ分散プログラム200は、決定されたインデックス値に対応するエンコードされたデータの要素を、チャンクIDに対応するチャンクに(ステップ208で)分散する。この例では、セキュア・データ分散プログラム200は、アルゴリズムCD2を利用して、エンコードされたデータ410を、1、2、3、および4の対応するIDを有するチャンクに分散し、ここで、「c」はチャンクのインデックス値に対応し、「j」はチャンク内の要素に対応するインデックス値を表す。例えば、データの第3のチャンク(すなわち、チャンク430C)の最後の要素のインデックス値をアルゴリズムCD2に入力すると、C[2][3]=E[2+3*4]=E[14]が得られ、この値は、エンコードされたデータ410内の21の値に等しい。
【0067】
この例では、要素420に関連付けられたチャンクIDに対応する網掛けによって、循環的分散データのエンコードされたデータ410が示されている。一部の実施形態では、セキュア・データ分散プログラム200は、データ401に関連付けられたエンコードされたデータのチャンクの順序を示すチャンクIDを利用する。1つの例では、網掛けなしで示されたエンコードされたデータ410の要素がチャンクID1に対応し(すなわち、17、15、20、および2のエンコード値)、斑点の網掛けで示されたエンコードされたデータ410の要素がチャンクID2に対応し(すなわち、10、7、22、および19のエンコード値)、クロスハッチングの網掛けで示されたエンコードされたデータ410の要素がチャンクID3に対応し(すなわち、22、12、0、および21のエンコード値)、高密度の斑点の網掛けで示されたエンコードされたデータ410の要素がチャンクID4に対応する(すなわち、9、9、および14のエンコード値)。
【0068】
この例では、チャンク430Aは、エンコードされたデータの要素のセットと、チャンクID1のエンコードされたデータ410の要素の対応する順序とを表している。同様に、チャンク430Bは、エンコードされたデータの要素のセットと、チャンクID2のエンコードされたデータ410の要素の対応する順序とを表しており、チャンク430Cは、エンコードされたデータの要素のセットと、チャンクID3のエンコードされたデータ410の要素の対応する順序とを表しており、チャンク430Dは、エンコードされたデータの要素のセットと、チャンクID4のエンコードされたデータ410の要素の対応する順序とを表している。
【0069】
さまざまな実施形態では、セキュア・データ分散プログラム200が、エンコードされたデータ410の分散されたストレージに関連するデータ401に関連付けられたメタデータを生成する。この例では、メタデータ431Aは、チャンク430Aに関連するメタデータを表している。同様に、メタデータ431Bはチャンク430Bに関連するメタデータを表しており、メタデータ431Cはチャンク430Cに関連するメタデータを表しており、メタデータ431Dはチャンク430Dに関連するメタデータを表している。一実施形態では、セキュア・データ分散プログラム200は、元のデータ(例えば、データ401)に対応するデータID、チャンクID識別子、および位置識別子を示すメタデータを生成する。メタデータ431は、メタデータ・スキームの例を示している。図に示された例では、メタデータ431Bは「A2+25」であり、これは、チャンク430BがデータID「A」および「2」のチャンクIDに関連付けられており、「+」がデータ・デリネータ(data delineator)の例であり、このデリネータの右側の情報が、エンコードされたデータの対応するチャンクを格納することに関連付けられたストレージ識別子「25」を示すということを示している。さまざまな実施形態では、ストレージ識別子は、エンコードされたデータのチャンクを格納することが識別された、ストレージ情報107内のストレージIDまたはストレージ位置あるいはその両方に対応する(図2のステップ204またはステップ208あるいはその両方)。一実施形態では、エンコードされたデータのチャンクに関連するメタデータは、ストレージ情報107内に含まれ、セキュアな分散された格納のための元のデータにさらに関連付けられる。
【0070】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0071】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0072】
特徴は、次のとおりである。
【0073】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0074】
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0075】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
【0076】
迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0077】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【0078】
サービス・モデルは、次のとおりである。
【0079】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらに個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0080】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0081】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、ここで、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御し、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御する。
【0082】
デプロイメント・モデルは、次のとおりである。
【0083】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ動作される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0084】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0085】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0086】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0087】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0088】
図5はさまざまなコンピューティング・デバイスを表しており、クラウド・コンピューティング・ノード10(図6において説明される)は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、クラウド・コンピューティング・ノード10は、本明細書に記載された本発明の実施形態の機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【0089】
いずれにせよ、クラウド・コンピューティング・ノード10は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。実施形態例では、クラウド・コンピューティング・ノード10はシステム102を表している。さまざまな実施形態では、クラウド・コンピューティング・ノード10は、ハードウェア要素もしくはコンピューティング・デバイスまたはその両方のハードウェアの物理的実例(例えば、RISCベースのサーバ62、サーバ63など)、または図7に関してさらに説明されるハードウェア要素、コンピューティング・デバイスの仮想化された実例(例えば、仮想サーバ71、仮想ストレージ72、仮想ネットワーク73など)、あるいはその両方を表してよい。
【0090】
図5に示されているように、一部の実施形態では、クラウド・コンピューティング・ノード10内のコンピュータ・システム500は、システム102などの汎用コンピューティング・デバイスの形態で示されている。他の実施形態では、コンピュータ・システム500は、ストレージ120A~ストレージ120Nなどのクラウド・コンピューティング環境50に接続された1つまたは複数のコンピューティング・デバイスを表す。コンピュータ・システム500は、ソフトウェアおよびデータ510を含んでいるシステムの例である。コンピュータ・システム500は、プロセッサ501、メモリ502、キャッシュ503、永続的ストレージ505、通信ユニット507、入出力(I/O:input/output)インターフェイス506、および通信ファブリック504を含んでいる。
【0091】
通信ファブリック504は、メモリ502、キャッシュ503、永続的ストレージ505、通信ユニット507、および入出力(I/O)インターフェイス506の間の通信を提供する。通信ファブリック504は、プロセッサ(マイクロプロセッサ、通信プロセッサ、およびネットワーク・プロセッサなど)、システム・メモリ、周辺機器、およびシステム内の任意のその他のハードウェア・コンポーネントの間で、データまたは制御情報あるいはその両方を渡すために設計された、任意のアーキテクチャを使用して実装され得る。例えば、通信ファブリック504は、PCI(peripheral component interconnects)バスなどの1つまたは複数のバス、またはクロスバ・スイッチを使用して実装され得る。
【0092】
メモリ502および永続的ストレージ505は、コンピュータ可読ストレージ媒体である。この実施形態では、メモリ502はランダム・アクセス・メモリ(RAM)を含んでいる。一般に、メモリ502は、任意の適切な揮発性または不揮発性のコンピュータ可読ストレージ媒体を含むことができる。キャッシュ503は、メモリ502から最近アクセスされたデータ、および最近アクセスされたデータに近いデータを保持することによって、プロセッサ501の性能を向上させる高速なメモリである。
【0093】
本発明の実施形態を実践するために使用されるプログラム命令およびデータは、永続的ストレージ505、およびキャッシュ503を介して各プロセッサ501のうちの1つまたは複数によって実行するためのメモリ502に格納されてよい。一実施形態では、永続的ストレージ505は、磁気ハード・ディスク・ドライブを含んでいる。磁気ハード・ディスク・ドライブに対する代替または追加として、永続的ストレージ505は、半導体ハード・ドライブ、半導体ストレージ・デバイス、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory)、フラッシュ・メモリ、あるいはプログラム命令またはデジタル情報を格納できる任意のその他のコンピュータ可読ストレージ媒体を含むことができる。一実施形態では、ストレージ103は永続的ストレージ505に含まれる。
【0094】
永続的ストレージ505によって使用される媒体は、取り外し可能であってもよい。例えば、取り外し可能ハード・ドライブを、永続的ストレージ505に使用できる。その他の例としては、永続的ストレージ505の一部でもある別のコンピュータ可読ストレージ媒体に転送するためのドライブに挿入される、光ディスクおよび磁気ディスク、サム・ドライブ、ならびにスマート・カードが挙げられる。ソフトウェアおよびデータ510は、キャッシュ503およびメモリ502のうちの1つまたは複数のメモリを介して各プロセッサ501のうちの1つまたは複数によってアクセスするか、または実行するか、あるいはその両方を行うために、永続的ストレージ505に格納される。システム102に関して、ソフトウェアおよびデータ510は、データ104、データ・キー105、セキュリティ・アルゴリズム106、ストレージ情報107、セキュア・データ分散プログラム200、セキュア・データ再構成プログラム300、およびさまざまなプログラム(図示されていない)を含んでいる。ストレージ120A~ストレージ120Nに関して、ソフトウェアおよびデータ510は、さまざまなプログラムおよびデータ(図示されていない)をそれぞれ含んでいる。
【0095】
これらの例では、通信ユニット507は、システム102およびストレージ120A~ストレージ120Nのリソースを含む、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット507は、1つまたは複数のネットワーク・インターフェイス・カードを含む。通信ユニット507は、物理的通信リンクまたは無線通信リンクのいずれか、あるいはその両方を使用して通信を提供できる。本発明の実施形態を実践するために使用されるプログラム命令およびデータは、通信ユニット507を介して永続的ストレージ505にダウンロードされてよい。
【0096】
I/Oインターフェイス506は、ノード10の実例などの各コンピューティング・システムに接続されてよい他のデバイスとのデータの入力および出力を可能にする。例えば、I/Oインターフェイス506は、キーボード、キーパッド、タッチ・スクリーン、またはその他の適切な入力デバイス、あるいはその組み合わせなどの、外部デバイス508への接続を提供してよい。外部デバイス508は、例えばサム・ドライブ、ポータブル光ディスクまたはポータブル磁気ディスク、およびメモリ・カードなどの、ポータブル・コンピュータ可読ストレージ媒体を含むこともできる。本発明の実施形態を実践するために使用されるソフトウェアおよびデータ510は、そのようなポータブル・コンピュータ可読ストレージ媒体に格納することができ、I/Oインターフェイス506を介して永続的ストレージ505に読み込むことができる。I/Oインターフェイス506は、ディスプレイ509にも接続される。
【0097】
また、I/Oインターフェイス506は、1つまたは複数のデバイスが、コンピュータ・システム/サーバ500または任意のデバイス(例えば、ネットワーク・カード、モデムなど)あるいはその両方と情報をやりとりできるようにし、コンピュータ・システム/サーバ500が、1つまたは複数の他のコンピューティング・デバイスと通信できるようにする。このような通信は、I/Oインターフェイス506を介して行うことができる。さらに、コンピュータ・システム/サーバ500は、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、通信ユニット507を介して通信することができる。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ500と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0098】
ディスプレイ509は、データをユーザに表示するためのメカニズムを提供し、例えば、コンピュータのモニタであってよい。ディスプレイ509は、タブレット・コンピュータまたはスマートフォンのディスプレイなどの、タッチ・スクリーンとして機能することもできる。
【0099】
図6は、クラウド・コンピューティング環境50の例を示している。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、PDA(personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。図6に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。加えて、クラウド・コンピューティング・ノード10およびコンピューティング・デバイス54A~Nの実例は、本発明の実施形態に従って、図5に関してすでに示され、さらに詳細に説明されたコンポーネントを含んでよい。
【0100】
図7は、クラウド・コンピューティング環境50(図6)によって提供される機能的抽象レイヤの例示的なセットを示している。図7に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0101】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0102】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0103】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。セキュリティ86は、クラウドの利用者およびタスクの識別情報の検証を行うとともに、データおよびその他のリソースの保護を行う。さまざまな実施形態では、セキュリティ86は、エンコードされてチャンク化されたデータを、異なる物理的位置で、ハードウェアおよびソフトウェア・レイヤ60の複数のサーバまたはストレージ・システムに分散することによって、ユーザまたは企業のデータを保護する、1つまたは複数のシステムベースの機能または加入サービス(例えば、セキュア・データ分散プログラム200およびセキュア・データ再構成プログラム300)あるいはその両方を含む。一部の実施形態では、セキュリティ86は、管理レイヤ80の他の側面を利用して、異なるベンダーまたはクラウドストレージ・プロバイダのハードウェアおよびソフトウェア・レイヤ60内のリソースに対するアクセス権限を取得し、ユーザまたは企業のエンコードされてチャンク化されたデータを格納する。
【0104】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびセキュリティ96が挙げられる。さまざまな実施形態では、セキュリティ86に対する代替または追加として、セキュリティ96は、エンコードされてチャンク化されたデータを、異なる物理的位置で、ハードウェアおよびソフトウェア・レイヤ60の複数のサーバまたはストレージ・システムに分散することによってクラウド内のデータを保護するためにユーザが呼び出す、セキュア・データ分散プログラム200およびセキュア・データ再構成プログラム300などの、1つまたは複数のソフトウェア・アプリケーションを含む。
【0105】
本明細書に記載されたプログラムは、アプリケーションに基づいて識別され、本発明の特定の実施形態において、そのアプリケーションに関して実装される。ただし、本明細書における任意の特定のプログラムの名前は単に便宜上使用されていると理解されるべきであり、したがって、本発明は、そのような名前によって識別されたか、または暗示されたか、あるいはその両方によって任意の特定のアプリケーションのみで使用するように制限されるべきではない。
【0106】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有しているコンピュータ可読ストレージ媒体を含んでよい。
【0107】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0108】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0109】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0110】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0111】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0112】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0113】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0114】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。本発明の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際のアプリケーション、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするため選択されている。
図1
図2
図3
図4
図5
図6
図7