(57)【要約】      （修正有）【課題】データ保存サービスにデータを保存する際、各種リソースを効率的に活用して迅速にファイル転送を行う。【解決手段】第１コンピュータシステムと第２コンピュータシステム間のデータ転送は、第２コンピュータシステムの並列サーバ１０８を使用する。複数のデータチャンク１０６は集合的にデータオブジェクト１０２を含む。データチャンクは、暗号化されて並列チャンネルを介して第２コンピュータシステムへ送られ、第２コンピュータシステムはコンピューティングリソースサービスプロバイダのデータ保存サービス１０４であってもよい。データオブジェクト、またはその一部は、データ保存システムから並行的にダウンロードされてもよい。【選択図】図１
2019061694.tif 000002
【特許請求の範囲】
【請求項１】
命令が記憶されたコンピュータ読み取り可能記憶媒体であって、前記命令は、コンピュータシステムの１つ以上のプロセッサにより実施されると、前記コンピュータシステムに、
第１データチャンク及び第２データチャンクにデータオブジェクトを分割させ、
前記第１データチャンクに対して第１初期化べクトルを用いて且つ前記第２データチャンクに対して前記第１初期化ベクトルとは異なる第２初期化ベクトルを用いて並行的に暗号化されるように、同じ暗号鍵を用いて前記第１データチャンク及び前記第２データチャンクのそれぞれを別々に暗号化させ、
少なくとも前記第１データチャンク及び前記第２データチャンクが、データ保存サービスの複数のサーバに並行的に送信され、前記第１データチャンク及び前記第２データチャンクが前記第１データチャンクを識別する識別子を用いて前記データ保存サービスから集合的に読み出されるように、該データ保存サービスに対して前記第１データチャンク及び前記第２データチャンクを送信させ、
前記第１データチャンクと前記第１初期化べクトルとを連結させ、及び前記第２データチャンク前記第２初期化べクトルとを連結させて、前記データ保存サービスに保存させ、
前記第２データチャンクを前記第１データチャンクに対応付けさせる、コンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１３年１２月３日に「データ転送最適化」とう名称で出願されたＵ.Ｓ. Ｐａｔｅｎｔ Ａｐｐｌｉｃａｔｉｏｎ Ｎｏ.１４，０９５，８９８の全開示内容を参照により全ての目的において包含するものである。
【背景技術】
【０００２】
現代のコンピュータシステムにおいてデータ転送の必要性は普遍のものである。例えば、データが、そのデータが保存された場所から遠隔的に生成される事も多い。処理、バックアップなどの様々な目的のために、あるコンピュータシステムから別のコンピュータシステムにデータを転送する必要がある場合がある。さらに、データ収集技術が発達するにつれ、転送するデータ量は増加する。インターネットや携帯通信ネットワークなどの現代コンピュータネットワークにより提供されるデータ転送のインフラストラクチャは複雑で一般に効率的なものである。
【発明の概要】
【課題を解決するための手段】
【０００３】
これにも関わらず、データをある場所から別の場所に転送する能力を妨げる制約には様々なものがある。例えば、通信制御プロトコル（ＴＣＰ）は、両者間によりデータ転送を認証する必要がある前に送受信可能なデータ量を制限する。パケットを認証するのに要する時間は、転送に使用されない時間である。他の例としては、転送前にデータを暗号化すると、暗号化及び／または複合化システムの処理能力に基づいて転送処理が遅くなることがある。また、受信システムは、ファイルサーバのディスク速度などの様々な要因によりデータを受信可能な速度において制限される場合がある。また、データ転送の従来技術では、他のリソースを十分活用せずに、一部のリソース（処理能力、バンド幅など）を多用している。
【図面の簡単な説明】
【０００４】
本開示による様々な実施形態を以下の図面に基づいて説明する。
【図１】本開示の様々な技術を示す図である。
【図２】様々な実施形態を実施可能な環境の説明的な一例を示す図である。
【図３】少なくとも１つの実施形態によるデータ保存システムの説明的な一例を示す図である。
【図４】少なくとも１つの実施形態によるデータ保存システムの説明的な他の例を示す図である。
【図５】少なくとも１つの実施形態によるデータ転送処理の説明的な一例を示す図である。
【図６】少なくとも１つの実施形態によるデータのアップロード処理の説明的な一例を示す図である。
【図７】少なくとも１つの実施形態によるデータのアップロード処理の説明的な一例を示す図である。
【図８】少なくとも１つの実施形態によるデータ変換を示す図である。
【図９】少なくとも１つの実施形態によるデータのダウンロード処理の説明的な一例を示す図である。
【図１０】少なくとも１つの実施形態による、遠隔地に保存されたメディアファイルの再生処理の説明的な一例を示す図である。
【図１１】様々な実施形態が実施可能な環境を示す図である。
【発明を実施するための形態】
【０００５】
以下の説明において、様々な実施形態を説明する。説明のため、具体的な構成と詳細を提示して実施形態が完全に理解されるようにするが、当業者は、そのような具体的な詳細が無くとも実施形態は実施可能であることを理解するであろう。また、公知の構成については省略したり、簡略化したりして説明対象の実施形態が曖昧になることを避ける場合がある。
【０００６】
本明細書で説明し、提案する技術は、コンピュータシステム間の効率的なデータ送信を可能にすることを含む。幾つかの実施例では、クライアントコンピュータシステムは、データ保存サービスへ、及び／またはデータ保存サービスからデータを送信する。例えば、データ保存サービスは、コンピューティングリソースサービスプロバイダにより操作されてもよく、クライアントコンピュータシステムはコンピューティングリソースサービスプロバイダの顧客のコンピュータシステムであってもよい。他の実施形態において、クライアントコンピュータシステムとデータ保存サービスは、同じ組織の制御下で操作されるシステムであってもよい。
【０００７】
幾つかの実施形態では、クライアントコンピュータシステムは、データ保存システムへ効率的にデータを転送する様々な並行化技術を利用する。例えば、クライアントコンピュータシステムは、データ保存サービスに並行的に送信される複数のデータチャンク（単に「チャンク」とも呼ばれる）にデータオブジェクトを分割してもよい。データオブジェクトをビット列と考えると、例えば、データチャンクは連続するビット列であってもよいが、データオブジェクトをデータチャンクに分割するより複雑な方法を使用してもよい。クライアントコンピュータシステムは、データチャンクに対して様々なデータ操作や他の動作を行ってもよい。幾つかの実施例では、クライアントコンピュータシステムは、各データチャンクをそれぞれ暗号化する。各データチャンクは、例えば同じ暗号鍵を使用して暗号化されてもよい。いくつの例では、暗号アルゴリズムは初期化ベクトル（ノンスなど）を使用し、各データチャンクに対して異なる初期化ベクトルを使用してもよい。初期化ベクトルは、各データチャンクに対してランダムまたは疑似ランダム（つまり確率的に）生成されてもよく、シーケンス（例えば、整数列）から順番に初期ベクトルを取得するなどして非ランダムに各データチャンクに対して取得されてもよい。また、クライアントコンピュータシステムは、データチャンク対するチャンクチェックサムの算出、１つ以上のデータ圧縮アルゴリズム及び／または他の動作などの他の動作をデータチャンクに並行的に行ってもよい。
【０００８】
また、クライアントコンピュータシステムは、データ保存サービスにデータチャンクを転送する様々な並行化技術を利用してもよい。例えば、幾つかの実施形態では、クライアントコンピュータシステムは、データチャンクの異なるセットをデータ保存サービスの異なるサーバに送信してもよい。例えば、クライアントコンピュータシステムは、各データチャンク（またはデータチャンクをセットに分ける場合の各セット）に対するアップロードリクエストを別々に提出してもよい。各リクエストは同じサービス終点識別子（例えばＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を使用して開始されてもよく、データ保存サービスはリクエストを処理するサーバのネットワークアドレスで各リクエストの開始に応答してもよい。このようにして、データはデータ保存サービスに転送され、単一のサーバが受信データを受信することができる速度などの個々のサーバの物理的な制約を克服してもよい。各暗号化されたデータチャンクは、後の復号化において初期化ベクトルを使用できるように、データチャンクを暗号化用の初期化ベクトルと共にデータ保存サービスに転送されてもよい。
【０００９】
幾つかの実施形態では、暗号化されたデータチャンク群（及び、幾つかの実施形態では、初期化ベクトル）を単一のデータオブジェクトとしてデータ保存サービスに処理させるような態様でデータ保存サービスにデータチャンクを送信させる。例えば、データ保存サービスは暗号データチャンク（及び、場合によって初期化ベクトル）を単一の識別子（該データ保存システムに固有の論理データコンテナ名や該論理データコンテナ内に固有のオブジェクト識別子などの複数の情報を含んだ識別子であってもよい）と対応付けさせる構成であってもよい。他の例では、暗号化されたデータチャンク群は、暗号化されたチャンクの連結（幾つかの実施形態では、初期化ベクトル）を含んでいてもよい単一のデータオブジェクトとしてデータ保存サービスからダウンロード可能であってもよい。暗号化データチャンクのデータ保存サービスへの送信のリクエストは、データ保存システムが対応関係の生成及び／または単一のデータオブジェクトとして処理するように構成されていてもよい。
【００１０】
下記に詳細に説明されるものを含む、本開示の範囲内であるとされるその他の構成や変形例は、データ転送の従来技術に対して数多くの技術的利点を提供する。例えば、本明細書に説明される数多くの技術を使用すれば、転送される各データチャンクが別々のファイルの転送であるため、転送の信頼性を向上させることができる。よって、チェックサム時にマッチしないことで判定を行ってもよいチャンクの転送の失敗は、データオブジェクト全体ではなく当該データチャンクのみを再送すればよい。よって、データ転送は速度が速くなるだけでなく、回復力がより増加したものになる。
【００１１】
図１は、本開示の様々な態様を示す図１００示す。図１００に示すように、図１００は、ファイルやその他のデータの集合体であってもよいデータオブジェクト１０２を示す。本開示の様々な態様は、データ保存サービス１０４のデータオブジェクト１０２の保存を可能にする。本開示の様々な実施形態では、データオブジェクトは複数のデータチャンク１０６に分解される。各データチャンク１０６はデータオブジェクト１０２に対応するデータの一部を含むものであってもよい。例えば、幾つかの実施形態では、各データチャンク１０６はデータオブジェクト１０２のビット列に対応する。一般に、データチャンク１０６は、データオブジェクト１０２を構成するのに使用可能なデータを集合的に含むが、各データチャンク１０６は、データオブジェクト１０２のデータ全てを個々に有していなくてもよい。
【００１２】
図１に示すように、本開示の様々な態様は、インターネットなどのネットワークを介してデータ保存サービス１０４に効率的に転送を行うことを提供する。図１に示すように、データ保存サービス１０４は並行的にデータチャンクを複数の通信チャンネルを介して受け取ってもよい。例えば、データ保存サービス１０４の複数のサーバ１０８は同時にチャンク１０６を受取ってもよい。このようにして、データオブジェクト１０２が単一のサーバ１０８に転送した場合に達成可能なスループットに対して集合的なスループットが得られる。なお、図１には全てのデータチャンク１０６がデータ保存サービス１０４に並行的に提供される場合を示すが、本開示の様々な実施形態には、データチャンク１０６の一部が並行的に転送され、残りが順次転送される実施形態も含まれていることに留意する。例えば、データチャンク１０６の転送は、Ｎ個のデータチャンクをＭ個のサーバに転送すること（Ｎ及びＭは、Ｍ＜Ｎの整数）を含んでもよい。このようにして、データチャンクの少なくとも幾つかが順次転送され、幾つかが並行的に転送されてもよい。
【００１３】
下記により詳細に説明するが、並行化は、暗号化やエラーのない送信などのデータチャンク１０６に関する様々な動作を行う目的の為、チェックサムの並行算出及び／または照合を使用するなどして使用することができる。
【００１４】
図２は、本開示の様々な実施形態が実施可能な環境２００の、説明のための一例を示す。環境２００では、コンピューティングリソースサービスプロバイダ２０２は顧客２０４に対して様々なサービスを提供してもよい。顧客２０４は、コンピューティングリソースサービスプロバイダ２０２により提供された様々なサービスを使用して、様々な地理的な位置に位置しうるその従業員に情報を更新したり配信したりしうる組織であってもよい。また、顧客２０４は、遠隔地に位置する作業グループにコンテンツを送信する様々なサービスを使用しうる個人であってもよい。図２に示すように、顧客２０４は、インターネットなどの１つ以上の通信ネットワーク２０６を介してコンピューティングリソースサービスプロバイダ２０２と通信するものであってもよい。顧客２０４からコンピューティングリソースサービスプロバイダ２０２への幾つかの通信は、コンピューティングリソースサービスプロバイダ２０２に、本明細書に記載された様々な技術やその変形例による動作を行わせるものであってもよい。
【００１５】
上記のように、コンピューティングリソースサービスプロバイダ２０２は、その顧客に様々なコンピューティングリソースサービスを提供するものであってもよい。該コンピューティングリソースサービスプロバイダによって提供されるサービスは、この実施例では、仮想コンピュータシステムサービス２０８、ブロックレベルデータ保存サービス２１０、暗号サービス２１２（鍵管理システムとも称す）、データ保存サービス２１４及び、１つ以上の他のサービス２１６を含むが、本開示の全ての実施形態がそのようなサービス全てを含むものではなく、本明細書に明記したサービスに対して追加のサービスが追加ないし代替として提供されてもよい。各サービスは、適切に構成されたＡＰＩ呼出を、ウェブサービスリクエストを介して様々なサービスに対して提出することを顧客２０４が行えるようにする１つ以上のウェブサービスインタフェースを備えていてもよい。また、各サービスは、サービス同士がアクセスすることを可能にする１つ以上のサービスインタフェースを備えていてもよい（例えば、仮想コンピュータシステムサービス２０８の仮想コンピュータシステムにデータのデータ保存サービスへの保存やデータのデータ保存サービスからの読み出し、及び／またはブロックデータ保存サービスにより提供される１つ以上のブロックレベルデータ記憶装置へのアクセスを可能にする）。
【００１６】
仮想コンピュータシステムサービス２０８は、コンピューティングリソースサービスプロバイダ２０２の顧客２０４を代表する仮想コンピュータシステムについての仮想機械の例を例示化するように構成されたコンピュータリソース群であってもよい。コンピューティングリソースサービスプロバイダ２０２の顧客２０４が、仮想コンピュータシステムのサービスと相互作用（適切に構成され認証されたＡＰＩ呼出を介して）して、コンピューティングリソースサービスプロバイダ２０２によりホストされ操作される物理的コンピュータ装置として例示化される仮想コンピュータシステムを提供し操作してもよい。ウェブサイトをサポートするサーバとして動作する、ビジネスアプリケーションを操作する、または一般に顧客用計算用能力として提供されるなど様々な目的のために使用されてもよい。仮想コンピュータシステム用の他の用途としては、データベースアプリケーション、電子取引アプリケーション、ビジネスアプリケーション及び／または他のアプリケーションのサポートなどであってもよい。
【００１７】
ブロックレベルデータ保存サービス２１０は、ブロックレベル保存装置（及び／またはそれを仮想化したもの）を使用する顧客２０４のためにデータを保存するように集合的に動作するコンピューティングリソース群を備えてもよい。ブロックレベルデータ保存サービス２１０のブロックレベルデータ記憶装置は、例えば、コンピュータシステム用の論理ユニット（例えば仮想装置）として働くように仮想コンピュータシステムサービス２０８により提供される仮想コンピュータシステムに動作可能に備えられたものであってもよい。ブロックレベル保存装置は、仮想コンピュータシステムサービス２０８が一時的なデータ保存のみを提供し得る対応する仮想コンピュータシステムにより使用される／生成されるデータを持続的に保存可能なものであってもよい。
【００１８】
図２に示すように、コンピューティングリソースサービスプロバイダ２０２は、下記に図３を参照してより詳細を示す暗号サービスを操作するものであってもよい。一般に暗号サービスは、コンピューティングリソースサービスプロバイダの顧客用の暗号鍵を管理し、使用するように集合的に構成されたコンピューティングリソース群であってもよい。暗号サービス２１２により使用される鍵は、顧客が暗号動作（暗号化、復号化、及びメッセージの署名など）及び／または鍵の交換などの他の動作を行うためのリクエストを提出する際に参照できる、対応する識別子を有していてもよい。暗号サービスは、認証されていない者によるアクセスを避けるため、暗号鍵を安全に保つ構成であってもよい。
【００１９】
上記のように、コンピューティングリソースサービスプロバイダ２０２は、オンデマンドデータ保存サービス及び／またはアーカイブデータ保存サービスを備えていてもよい１つ以上のデータ保存サービス２１４も備えていてもよい。オンデマンドデータ保存サービスは、データを保存／アクセスするためのリクエストを同期して処理するように構成されたコンピューティングリソース群であってもよい。オンデマンドデータ保存サービスは、オンデマンドデータ保存サービス２０８にデータを素早く見つけ、読み出しことを可能にするコンピューティングリソース（例えば、データベース）を使用して、データのリクエストに応答してそのデータを提供させるように動作するものであってもよい。例えば、オンデマンドデータ保存サービスは、データオブジェクトに対するリクエストが呼び出されると、そのリクエストに応答してデータオブジェクトの提供が行えるように（または、データオブジェクトのストリーミングが開始できるように）保存データを保持してもよい。上記のように、オンデマンドデータ保存サービスに保存されるデータは、データオブジェクトを構成していてもよい。データオブジェクトは、ある程度のサイズ上の制約がある可能性がある以外は、任意のサイズであってもよい。よって、オンデマンドデータ保存サービスは、様々なサイズの多数のデータオブジェクトを保存してもよい。オンデマンドデータ保存サービスは、オンデマンドデータ保存サービス２１０により保存されたデータオブジェクトに関連する他の動作を呼び出す、または実行するために顧客２０４に使用されてもよいデータオブジェクトの識別子とデータオブジェクトとを対応させるキー値を記憶するものとして動作するものであってもよい。オンデマンドデータ保存サービスは、暗号サービス２１２にアクセス可能なものであってもよい。例えば、幾つかの実施形態では、暗号サービスはオンデマンドデータ保存サービスを使用して、顧客の鍵を復号可能な鍵が暗号サービス２１２の特定の装置にのみアクセス可能である暗号化形態の顧客の鍵を保存する。顧客、他のサービス、または他のエンティティによるデータ保存サービスへのアクセスは、適切に構成されたＡＰＩ呼出を介したものであってもよい。
【００２０】
アーカイブ保存システムは、オンデマンドデータ保存サービスと異なって動作するものであってもよい。例えば、アーカイブ保存システムは、データアクセスに関する性能を犠牲にして保存のコストを削減するようにデータ保存するものとして構成されてもよい。説明のための一例として、アーカイブ保存システムは、データ動作（つまり、データの保存や読出し）を非同期に行ってバッチ処理と並行化によるコスト節約を利用するように構成されていてもよい。例えば、アーカイブ保存システムのクライアントは、アーカイブ保存システムに保存されているデータオブジェクトにアクセスすることのリクエストを受け、リクエストをまとめ、リクエストをバッチ処理し、リクエストされたデータを追加のリクエストを使用して読出し可能な状態にしてもよい。非同期処理により、アーカイブ保存システムは、例えばデータオブジェクトを１つ以上のアーカイブデータ記憶装置から読み出し、１つ以上のステージングデータ記憶装置に該データを書き込み、そこからデータを入手可能にするなどしてデータオブジェクトが読み出し可能な状態になったら、データオブジェクトを読み出すリクエストを別に要求してもよい。
【００２１】
一方、オンデマンド保存システムは、データアクセスに対してより良い性能を提供する構成であってもよい。例えば、オンデマンド保存システムは、データを保存及び／またはデータにアクセスすることの複数のリクエストを同期的に処理するように構成されてもよい。アーカイブ保存システムに関するより良い性質を可能にするために、オンデマンド保存システムは、オンデマンド保存システムがアーカイブ保存システムに関して素早くデータを見つけ読み出すことを可能にする追加のコンピューティングリソース（例えばデータベース）を用いて動作するものであってもよい。オンデマンド保存システムは、同期データアクセスを提供するものであってもよい。例えば、オンデマンド保存システムは、データオブジェクトに対するリクエストが呼び出されると、そのリクエストに応答してデータオブジェクトの提供が行えるように（または、データオブジェクトのストリーミングが開始できるように）保存データを保持してもよい。
【００２２】
図２に示す環境では、通知サービス２１６が含まれている。通知サービス２１６は、顧客がアプリケーション（または人）に通知したいトピックを生成し、そのようなトピックについてクライアントを登録し、メッセージを発行し、そのようなメッセージをクライアントの選択したプロトコル（例えば、ＨＴＴＰ、Ｅメール、ＳＭＳなど）を介して送信するのに使用することができるウェブサービスまたは他のインタフェースとブラウザに基づいた管理コンソールを提供するように集合的に構成されたコンピューティングリソースを備えていてもよい。通知サービスは、「プッシュ」機構を使用して定期的にチェックする必要なくクライアントに通知してもよく、新しい情報や更新情報について「プル」機構を用いてクライアントに通知してもよい。通知サービスは、仮想コンピュータシステムサービスで実行中のアプリケーションのモニタリング、ワークフローシステム、時間依存の情報更新、携帯アプリケーション、その他多数の様々な目的のために使用されるものであってもよい。
【００２３】
また、コンピューティングリソースサービスプロバイダ２０２は、１つ以上の他のサービス２１８をその顧客２０４の必要に基づいて維持する構成であってもよい。例えば、コンピューティングリソースサービスプロバイダ２０２は、その顧客２０４用のデータベースサービスを維持してもよい。データベースサービスは、集合的に動作して１人以上の顧客２０４用の１つ以上のデータベースを操作するコンピューティングリソース群であってもよい。コンピューティングリソースサービスプロバイダ２０２の顧客２０４が、適切に構成されたＡＰＩ呼出を使用してデータベースサービスからデータベースを操作し管理してもよい。結果、これにより顧客２０４は、データベースでの動作を維持させることができ、また該動作をスケーリングできる可能性がある。他のサービスとしては、オブジェクトレベルアーカイブデータ保存サービス、他のサービスを管理及び／またはモニタするサービス、及び／または他のサービスが挙げられるが、これらに限定されない。
【００２４】
図２に示すように、様々な実施形態において、コンピューティングリソースサービスプロバイダ２０２は、認証システム２２０及びポリシ管理サービス２２２を備えている。一実施形態では、認証システムは、顧客のユーザの認証に関わる動作を行うように構成されたコンピュータシステム（つまりコンピューティングリソース群）である。例えば、サービスの１つは、ユーザから認証サービスへの情報を提供し、ユーザが認証をリクエストするかどうかを示す情報を返信として受けとるものであってもよい。ユーザが認証を求めるかの判断は、如何なる好適な方法によって行われてもよく、実施される認証が様々な実施形態間で変化してもよい。例えば、幾つかの実施形態では、ユーザは、サービスに送信されるメッセージに電子署名する（つまり、ユーザが電子署名したメッセージによりコンピュータシステムが操作される）。電子署名は、被認証エンティティ（例えばユーザ）と認証システムの両方に提供される秘密情報（例えば、ユーザに対応付けられた鍵ペアのプライベート鍵）を使用して生成されてもよい。リクエストとリクエストの証明は、認証システムに提供され、認証システムが、秘密情報を使用して、受け取った署名と比較する参照署名を求めて、リクエストが認証されるかどうかを判断してもよい。
【００２５】
リクエストが認証された場合、認証サービスは、未処理のリクエストを履行するかどうか及び／または、リクエストが認証された暗号サービスなどの他のサービスについて認証し、それにより他のサービスが動作できるようにするなどの他の動作を行うかどうかを判断するのにサービスが使用できる情報をサービスに提供してもよい。例えば、認証サービスは、リクエストの認証性を検証するために他のサービスが分析できるトークンを提供してもよい。電子署名及び／またはトークンの有効性は、さまざまに限定されたものであってもよい。一実施例では、電子署名及び／またはトークンは、少なくとも部分的に、電子署名及び／またはトークンに認証のために含まれているタイムスタンプの入力と取られる関数（例えば、ハッシュに基づくメッセージ認証コード）に基づいて生成される。提出された電子署名及び／またはトークンに対して検証を行うエンティティは、受け取ったタイムスタンプが十分に最新のものか（例えば、現時点から所定の時間以内）を確認し、受け取ったタイムスタンプ用の参照署名／トークンを生成するものであってもよい。提出された電子署名及び／またはトークンを生成するのに使用されたタイムスタンプが十分最新でない場合及び／または提出された電子署名及び／またはトークンと参照署名及び／またはトークンがマッチしない場合、認証は失敗する。このようにして、もし電子署名の漏洩が起こる場合、電子署名を短時間のみ有効とし、漏洩により起こりうる被害を制限できる。また、信頼性を検証する他の方法も本開示の範囲内であるとされることに留意する。
【００２６】
ポリシ管理サービス２２２は、一実施形態では、コンピューティングリソースサービスプロバイダの顧客のためにポリシを管理するように構成されたコンピュータシステムである。ポリシ管理サービス２２２は、顧客がポリシ管理に関するリクエストを提出可能にするインタフェースを備えていてもよい。そのようなリクエストは、例えば、顧客のポリシを追加、削除、変更、または修正する、または既存のポリシなどのインベントリを提供するなどの他の管理動作を行うリクエストであってもよい。ポリシ管理サービス２２２は、他のサービスとインタフェースで接続され、リクエストがなされた顧客に対応するポリシに基づいて該サービスが未処理のリクエストを履行可能かどうかを、サービスが判断できるようにしてもよい。例えば、サービスがリクエストを受けると、サービス（そのような情報をローカルにキャッシュしていない場合）が、リクエストに関する情報（及び／またはリクエストそのもの）を、その顧客に対するポリシを分析し、顧客の既存のポリシがリクエストを履行し得るかを判断して、その判断に基づきサービスに情報を提供するポリシ管理システムに送信してもよい。
【００２７】
図３に、様々な実施形態によるデータ保存サービス３００の説明の為の一例を示す。データ保存サービスは、図２に関して上記に説明されたようなオンデマンド保存サービスを操作するのに使用されるコンピューティングリソースプロバイダのサービスであってもよい。図３に示すように、データ保存サービスは、リクエスト処理サブシステム３０２や管理サブシステム３０４などの様々なサブシステムを備えている。また、データ保存サービス３００は、複数のデータ記憶サーバ３０６と、下記に詳細に説明するようなデータ保存サービス３０６間に保存された様々なオブジェクトについてのメタデータを保存し得るメタデータ記憶装置３０８とを備えていてもよい。一実施形態では、リクエスト処理サブシステム３０２は、データ保存サービス３００に提出されたリクエストを集団的に処理するように構成された、ウェブサーバやアプリケーションサーバなどのコンピューティングリソース群である。リクエスト処理サブシステムは、例えば、データ保存サービス３００の顧客がデータ保存サービス３００により処理されるリクエストを提出することを可能にするウェブサービスインタフェースを提供する１つ以上のウェブサーバを備えていてもよい。リクエスト処理サブシステム３０２は、ポリシがリクエストの履行させるどうか、リクエストが承認されるものかどうか（例えば、好適な暗号鍵を使用して電子的に署名されたものかどうか）などのリクエストの処理に関する様々な判断をするように構成されたコンピュータシステムを備えていてもよい。
【００２８】
リクエスト処理サブシステムの構成要素は、データ保存サービス３００の他の構成要素と（例えば、ネットワーク通信を介して）相互作用する。例えば、リクエスト処理サブシステム３０２に提出されたリクエストの幾つかは、本実施例ではデータ保存サービス３０６により保存されているデータオブジェクトを含んでいるコンピューティングリソースの管理に関するものであってもよい。リクエスト処理サブシステムは、例えば、リクエストを受信し、処理してコンピューティングリソースを変更する構成であってもよい。例えば、幾つかの実施例では、データオブジェクトは論理データコンテナに論理的に編成される。論理データコンテナに対応付けられたデータオブジェクトは、例えば、論理データコンテナに入っていると言ってもよい。データ処理サブシステムへのリクエストとしては、論理データコンテナの作成、論理データコンテナの削除、論理データコンテナのインベントリの提供、１つ以上の論理データコンテナに対するアクセスコントロールポリシの提供またはアクセスなどのリクエストが挙げられる。
【００２９】
そのようなリクエストを、リクエスト処理サブシステム３０２により受け取ると、管理サブシステム３０４にて処理されてもよい。可能であれば、リクエスト処理サブシステム３０２及び／または管理サブシステム３０４にて処理される様々なリクエストは、管理サブシステム３０４がデータオブジェクトに関するメタデータを更新し、メタデータ記憶装置３０８に保存されている論理データコンテナと対応させる。リクエスト処理サブシステム３０２により処理されるかもしれない他のリクエストとしては、データオブジェクトに関する動作を実行するリクエストが挙げられる。リクエストは、例えば、データ保存サービス３００へのデータオブジェクトをアップロードするリクエスト、データ保存サービス３００からデータオブジェクトをダウンロードするリクエスト、データ保存サービス３００に保存されているデータオブジェクトを削除するリクエスト、及び／または実行され得る他の動作のリクエストが挙げられる。
【００３０】
幾つかの動作は様々な方法で実行されてもよい。例えば、下記に説明するように、リクエスト処理サブシステム３０２は、シングルパートアップロード／ダウンロード能力に加えてマルチパートアップロード及び／またはダウンロード能力を提供するものであってもよい。そのような能力は、例えば、データオブジェクトが比較的大きい環境において有利である。例えば、リクエスト処理サブシステム３０２のサーバにシングル接続を用いた特定の大きいデータオブジェクトの通信では、データ転送量によってリクエストが失敗する可能性がより高くなる。マルチパートアップロード／ダウンロード能力は、データオブジェクトを一度にまとめてアップロードすることにより起こるそのような問題の可能性を低くし得る。これにより、１つのパートのアップロードまたはダウンロードが失敗した場合、データオブジェクト全体ではなく、そのパートの再送のみが必要になる。同様に、受信エンティティによるチェックサムの検証もデータオブジェクトの異なるパートを介して並行的に実行されてもよい。
【００３１】
データオブジェクトの動作（例えば、アップロード、ダウンロード、削除）に関するリクエスト処理サブシステム３０２は、リクエスト処理サブシステム３０２と１つ以上のデータ保存サーバ３０６間の相互作用を含むものであってもよい。データ保存サーバ３０６は、データオブジェクトの持続性のために、１つ以上の記憶装置に通信可能に接続されたコンピュータシステムであってもよい。例えば、オブジェクトをアップロードするリクエストを処理するため、リクエスト処理サブシステムは、持続的保存のためデータ保存サーバ３０６にデータを送信してもよい。なお、幾つかの実施形態では、クライアント（例えば、顧客）コンピュータシステムは、リクエスト処理サブシステムのサーバを介する代わりに、データ保存サーバ３０６に直接データを送信してもよいことに留意する。
【００３２】
幾つかの実施形態では、リクエスト処理サブシステム３０２は、個々のデータ保存サーバ３０６及び／または対応するデータ記憶装置が失敗した場合にデータの再読出し可能性を可能にするために、データを冗長に保存するために複数のデータ保存サーバ３０６にデータを送信する。例えば、幾つかの実施形態では、リクエスト処理サブシステムは、データ保存サーバ３０６間に保存されたマルチパーツにデータオブジェクトを分割するための抹消符号化などのコーディングスキームの冗長性を使用する。該パーツは、所定の数のパーツが失われた場合でも、データオブジェクトが、なおアクセス可能な残りのパーツから再構成できるように構成されていてもよい。同様に、データオブジェクトまたはその一部をダウンロードするリクエストを処理するため、リクエスト処理サブシステム３０２は、データ保存サーバ３０６の１つ以上と通信して、それにより保存されたデータにアクセスする。例えば、データ冗長性のための抹消符号化を使用する実施形態では、リクエスト処理サブシステムは、複数のデータオブジェクトからデータにアクセスし、データ保存サーバ３０６から受け取ったパーツからデータオブジェクトを再構成してもよい。
【００３３】
リクエスト処理サブシステム３０２とデータ保存サーバ３０６間のデータ転送を効果的に行うことを可能にするため、及び／または一般にリクエストの処理を素早く行うことを可能にするため、リクエスト処理サブシステムは、データ保存サーバ３０６間のデータの位置を見つけることが可能な１つ以上のデータベースを備えていてもよい。例えば、リクエスト処理サブシステム３０２は、データオブジェクトのデータにアクセスするデータ保存サーバ３０６間の位置とデータオブジェクトの識別子とを対応させるように機能するキー値記憶装置を動作させてもよい。
【００３４】
図４は、データ保存サービス４００の説明的な一例である。データ保存サービス４００は、例えば、図２に関連して上記で説明したアーカイブデータ保存サービスであってもよい。つまり、データ保存サービス４００は、例えばコンピューティングリソースサービスプロバイダの顧客として１人以上のユーザに代わりデータをアーカイブするように構成されたアーカイブデータ保存であってもよい。図４に示すように、データ保存サービス４００は、様々な実施形態では、サービスの動作を可能にする複数のサブシステムを備える。例えば、一実施形態では、データ保存サービス４００は、データ保存サービス４００に対するリクエストがデータ保存サービス４００のユーザにより提出され得る１つ以上のウェブサーバを備えるシステムであってよいウェブインタフェースシステム４０２を備えていてもよい。一般に、ウェブインタフェースシステム４０２は、データ保存サービス４００に受け取ったアプリケーションプログラミングインタフェース（ＡＰＩ）呼出により１つ以上の動作をさせるためにデータ保存サービス４００に対する適切に構成されたＡＰＩ呼出を受取るように構成された如何なるシステムであってもよい。
【００３５】
様々な実施形態では、データ保存サービス４００は、上記で説明したような１つ以上の動作を非同期に実行する。例えば、ウェブインタフェースシステム４０２に提出された幾つかのリクエストに関しては、データ保存サービス４００は、リクエストに対する応答から別々にリクエストの履行した結果を提供してもよい。説明的な一例としては、データ保存サービス４００は、ウェブインタフェースシステム４０２にて、データ保存サービス４００により保存されたデータ保存オブジェクトを読み出すリクエストを受け取ってもよい。データ保存サービス４００は、リクエストされたデータを含まないが、提出されたリクエストを認証する情報及び／またはデータ保存サービス４００によりリクエストが処理されることを示す情報など他の情報を含んでもよい応答にてリクエストに応答してもよい。ジョブ識別子などの情報の例を以下に示す。これらの例では、データ保存サービス４００がリクエストされたデータを利用可能な状態にすると、データ保存サービス４００が、データに対する別々のリクエストに応答するなどしてデータを提供してもよい。
【００３６】
上記のように、データ保存サービス４００によるリクエストの幾つかのタイプの履行は、非同期的に実行される。これを達成するために、データ保存サービス４００は、ジョブトラッキングシステム４０４を備えていてもよい。ジョブトラッキングシステム４０４は、データ保存サービス４００へのリクエストの所定のタイプの履行のトラッキング、特にデータ保存サービス４００により非同期的に履行されたリクエストのトラッキングに関する様々な動作を実行するように構成されたコンピュータシステムであってもよい。一例として、データ保存サービス４００がウェブインタフェースシステム４０２においてリクエストを受けた時に、そのリクエストが非同期的に履行されるタイプだった場合、ウェブインタフェースシステム４０２はリクエストについてジョブトラッキングシステム４０４に通知してもよい。通知は、ウェブインタフェースシステム４０２からジョブトラッキングシステム４０４にデータ保存サービス４００の内部ネットワークを介して電子通信を使用して行われてもよい。ジョブトラッキングシステム４０４は、リクエストを処理するワークフローであってもよいジョブの識別子を生成してもよい。識別子は、例えば、連続して生成されても、他の方法で生成されてもよい。ジョブトラッキングシステム４０４は、ジョブトラッキングシステム４０４が開始したジョブについてのリクエストの履行をトラッキングするため、データ保存サービス４００の１つ以上の他の構成要素と相互作用してもよい。
【００３７】
ジョブトラッキングシステム４０４がジョブの完了を検知すると（例えば、データを取得し、取得したデータをダウンロード可能な状態にするワークフローの完了を検知すると）、ジョブトラッキングシステム４０４が、電子メッセージを、データ保存サービスのユーザにジョブ完了通知を提供するように構成されたシステムであってもよい通知システム４０６に送信してもてもよい。通知は、１つ以上の特定の受信先に電子通信で送るなどの好適な如何なる方法で行われてもよい。通知システム４０６は、データ保存サービス４００のユーザが様々通信トピックを登録し、ユーザが登録したトピックに対してメッセージが発行されると、ユーザがメッセージの電子通信を受け取るという構成であってもよい。このようにして、例えば、顧客は、ジョブがいつ完了したかを判断でき、対応するリクエストの履行であるジョブ完了の結果が利用可能になる。データ読出しジョブの例では、例えば、データ保存サービス４００のユーザが通知システム４０６からのメッセージを使用して、リクエストされたデータがダウンロード可能かを判断してもよい。次いでユーザがダウンロード可能なデータをダウンロードするリクエストを提出してもよい。なお、通知を受け取った１人以上のユーザが必須ではなく、対応するジョブが生成されたウェブインタフェースシステム４０２にリクエストを提出した同じユーザであってもよい。さらに、様々な実施形態では、ジョブの結果をデータ保存サービス４００から取得したユーザは、ジョブを実行させたリクエストをデータ保存サービス４００に最初に提出したのと同じユーザであってもよいが、必ずしもその必要はない。例えば、一ユーザは、データを読出し可能な状態にすることをリクエストし、他のユーザが利用可能になったデータをリクエストして受け取ってもよい。
【００３８】
図４に示すように、データ保存サービス４００はデータ暗号化システム４０８を備えている。データ暗号化システム４０８は、データ保存サービス４００に提出されたリクエストを処理するための様々なワークフローの処理を可能にするため、データのフローをデータ保存サービス４００の様々な構成要素を介して連携させ、適切に暗号化及び／または復号化するように構成されたコンピュータシステムであってもよい。例えば、ウェブインタフェースシステム４０２にデータ保存サービス４００にリクエストを提出して、データ保存サービス４００にデータオブジェクトをアップロードする場合、ウェブインタフェースシステム４０２は、リクエストを提出したユーザからデータオブジェクトを取得し、該データオブジェクトをアップロードステージングシステム４１０に提供してもよい。アップロードステージングシステム４１０は、図４にデータ記憶装置４１２を備える非一時的データ保存システム４２０として示されている長期アーカイブ記憶装置に保存されたデータオブジェクトを移動させるまで、データを保存するように構成された一時的データ保存システムの一例である。特に、アップロードステージングシステム４１０は、一次的データ保存部の一例であり、データ暗号化システム４０８がアップロードステージングシステム４１０からデータオブジェクトを読出し、データオブジェクトを暗号化し、暗号化されたデータオブジェクトをアーカイブ保存用非一時的データ保存システム４２０のデータ記憶装置４１２に送信するまでアップロードされたデータオブジェクトを保持してもよい。
【００３９】
同様に、データ保存サービス４００は、データ保存サービス４００のユーザによりデータオブジェクトが読み出されるまでデータオブジェクトを保存するように構成されたコンピュータシステムであってもよいダウンロードステージングシステム４１４を備えていてもよい。例えば、データ保存装置４１２が保存しているデータオブジェクトを読み出すというウェブインタフェースシステム４０２に対するリクエストをデータ保存サービス４００が受け取ると、データ暗号化システム４０８が、データ記憶装置４１２から暗号化されたデータオブジェクトを取得してもよく、そして暗号化されたデータオブジェクトを復号化し、復号化されたデータオブジェクトをダウンロードステージングシステム４１４に送信してもよい。ユーザまたは他のユーザが、ウェブインタフェースシステム４０２に、ダウンロードステージングシステム４１４からデータオブジェクトをダウンロードするという次のリクエストを送信してもよい。そしてダウンロードステージングシステム４１４が、データオブジェクトをウェブインタフェースシステム４０２に提供し、次いでウェブインタフェースシステム４０２がデータオブジェクトを、該データオブジェクトをリクエストしたユーザに提供してもよい。なお、データ暗号化システム４０８により復号化されると、データオブジェクトの送信は、プレーンテキスト形態のデータオブジェクトにて行われなくてもよいことに留意する。例えば、データオブジェクトは、該データオブジェクトをリクエストしたユーザにデータオブジェクトを送信する際に１回以上ＳＳＬまたは他の安全な接続を介した送信のために再暗号化されてもよい。様々な暗号化及び復号化動作を行うため、データ暗号化システム４０８は、以下により詳細に説明するデータ暗号化システム４０８により使用される鍵を保存するように構成されたシステムである鍵保存システム４１６を参照して動作してもよい。
【００４０】
上記構成要素に加え、データ保存サービス４００は、アンチエントロピシステム４１８を備えていてもよい。アンチエントロピシステム４１８は、データ保存システムに関する様々なアンチエントロピ動作を実行するように構成されたシステムであってもよい。その様な動作としては、例えば、記憶スペースに保存されたデータを保存するのにデータ記憶スペースがもう必要ない場合に、そのスペースを再利用することが挙げられる。また、アンチエントロピシステムは、より効率的にデータを再書き込みするなど保存を効率面とコスト面において最適化する様々な動作を実行するものであってもよい。下記に説明するように、アンチエントロピシステムは、様々な場合に、データ保存システムにて保存されたコンテンツ暗号化鍵を暗号化するように構成されていてもよい。例えば、鍵暗号化鍵が備えられている場合、アンチエントロピシステムは、鍵暗号化鍵により暗号化されたコンテンツ暗号化鍵を見つけ、見つけた鍵を新しい鍵暗号化鍵を用いて暗号化してもよい。アンチエントロピシステム４１８は、データ保存サービス４００にデータオブジェクトを保存すること／データ保存サービス４００からデータオブジェクトを読み出すことの一部として実行される読出し及び書き込み動作などのデータ保存サービス４００の他の動作との干渉を避けるように動作してもよい。例えば、アンチエントロピシステム４１８は、干渉を避けるように動作を開始し中断してもよい。
【００４１】
図５は、一実施形態によるデータの転送を行うプロセス５００の説明的な一例を示す図である。プロセス５００は、如何なる好適なシステムにより実行されてもよい。例えば、幾つかの実施形態では、プロセス５００は、データの転送先及び転送元であるシステムのクライアントコンピュータシステムにより実行される。一例として、プロセス５００は、コンピューティングリソースサービスプロバイダの顧客の顧客コンピュータシステムにより実行されてもよい。幾つかの実施形態では、システムは実行コードによりプロセス５００を実行する。例えば、幾つかの実施形態では、プロセス５００を実行するコンピュータシステムは、コンピュータシステムにプロセス５００を実行させるよう構成されたＪａｖａ（登録商標）や他のクライアントによりプロセス５００を実行してもよい。
【００４２】
一実施形態では、プロセス５００は、データオブジェクトからの複数のチャンクの生成５０２を含む。データオブジェクトからのチャンク生成５０２は、個々にではなく集合的にデータオブジェクトの全てのデータを含む複数のパーツにデータオブジェクトを分割することで実行されてもよい。例えば、幾つかの実施形態では、データオブジェクトを含むビットの列の連続する部分列としてチャンクを生成してもよい。部分列は均一のサイズを有するように構成されていてもよい。よって、生成されたチャンク５０２は、データオブジェクトのサイズが均一のサイズにより等しく分割できない場合、最後の列以外すべて均一サイズを有していてもよい。なお、本開示の様々な例により、連結されるとデータオブジェクトを生成することができるビット列に関して様々な実施形態が説明されているが、データオブジェクトをチャンクに分割する他の方法を行ってもよいことに留意する。例えば、上記のようにデータオブジェクトは、抹消符号などの符号化スキームの冗長性を使用してパーツに分圧されてもよい。チャンクは、生成されたパーツの１つであってもよい。なお、残りのチャンク以外の均一サイズのチャンクを本開示を通して使用するが、本明細書において説明される技術は、非均一チャンクサイズを使用する実施形態やビット列の異なる位置（例えば先頭）に意外なサイズのデータチャンクが現れる実施形態でも適用可能である。例えば、非均一サイズのチャンクの異なるチャンクサイズについてのメタデータの持続的な保存により、非均一チャンクサイズを使用可能にしてもよい。他の変形例も本開示の範囲内にあると考えられる。
【００４３】
図５に示すように、プロセス５００は、生成されたチャンクの暗号化５０４を含む。生成されたチャンクは、暗号化５０４にて如何なる好適な方法で暗号化されてもよい。幾つかの例では、各チャンクは、対称鍵暗号を使用して暗号化５０４にて暗号化される。つまり、暗号化プリミティブを使用する暗号は、暗号化と復号化の両方に使用可能な鍵を入力とする。幾つかの実施形態では、暗号は暗号化のために並行化不可能なものである。つまり、暗号化のプロセスは、チャンクの様々な部分の暗号化が並行の別々のプロセッサにより実行不能なように構成されていてもよい。例えば、ブロックの暗号化が前回のブロックの暗号化の結果に依存する場合、チャンクの暗号化は、ブロックとも称されるチャンクのサブ部分の暗号化を含んでいてもよい。暗号化のために並行化が不可能な暗号の例としては、アドバンス暗号化スタンダードのブロック暗号チェイニングモード（ＡＥＳ−ＣＢＣ）を含む。なお、本開示の様々な実施形態は、ＡＥＳ−ＣＢＣの使用を説明するが、アドバンス暗号化スタンダード（ＡＥＳ）の異なるモードなど他の暗号を使用してもよいことに留意する。また、説明のため対称暗号システムを使用するが、暗号アルゴリズムの他のタイプも本開示の範囲に含まれていると考えられる。例えば、本明細書で説明された技術は公開鍵暗号システムを使用するために採用されていてもよい。
【００４４】
ＡＥＳ−ＣＢＣなどの好適な幾つかの暗号は、ランダムまたは疑似ランダム（つまり確率的に）生成された値、またはランダムに生成されていない他の値を含んでいてもよい初期化ベクトルを使用する。多くの用途では、初期化ベクトルはノンスとも称される。よって、チャンクの暗号化５０４は１つ以上の初期化ベクトルの生成と仕様を含んでいてもよい。幾つかの実施形態では、異なる初期化ベクトルを暗号化された各チャンクに対して使用される。なお、幾つかの実施形態では、（つまり１つ以上のデータチャンクを暗号化するのに）暗号化の際に２回以上同じ初期化ベクトルを使用する可能性がゼロではないが小さい方法を採用してもよい。例えば、初期化ベクトルとして使用されるランダムまたは疑似ランダムに生成された値を用いる場合、データチャンクに対応するデータチャンクのセットを暗号化するプロセスの際に同じ値を生成する可能性がゼロではない。許容可能なサイズの可能な値のスペース内において値をランダムまたは疑似ランダムに生成することにより、発生したイベントなどの可能性を許容レベルに留めることができる。一般に同じ暗号化鍵を用いて初期化ベクトルを繰り返し使用する可能性は、許容可能なレベルに留めることができる。
【００４５】
なお、幾つかの実施形態では、チャンクの暗号化５０４は、少なくとも幾つかのチャンクについて並行的に行われる。例えば、マルチプロセッサシステム（１つ以上のマルチコアプロセッサを備えるシステム）の複数のプロセッサが、同時に異なるチャンクに対して暗号化動作を行ってもよい。なお、幾つかの実施形態では、チャンクの暗号化５０４を行うのに使用される暗号は暗号化について並行化不可能であるが、チャンクは並行的に暗号化されてもよいことに留意する。つまり、ＡＥＳ−ＣＢＣなどの並行化不可能な暗号を異なるプロセッサで同時に使用してもよい。
【００４６】
一実施形態では、プロセス５００は、暗号化されたチャンクのデータ保存サービスへの並行的な送信５０６を含む。暗号化されたチャンクのデータ保存サービスへの並行的な送信５０６は、如何なる好適な方法で実行されてもよい。例えば、幾つかの実施形態では、別々のアップロードリクエストがデータチャンクそれぞれについてデータ保存サービスを提出する。このようにして、データ保存サービスは、プロセス５００を実行するシステムとデータ保存サービスのウェブまたは他のサーバ間の複数の接続を同時に促進できる。なお、図５では、暗号化されたチャンクのデータ保存サービスへの並行的な送信５０６を示したが、暗号化されたチャンクの送信は、一部の暗号化されたチャンクが並行的に送信され、残りが順次送信されてもよいことに留意する。さらに、本開示の範囲内にあると考えられる他の変形例は、暗号化データチャンクを組み合わせて、より大きなデータチャンクを形成し、少なくともその一部が並行的に送信される実施形態を含む。反対に、暗号化されたデータチャンクが、より小さいデータチャンクに分割され、データ保存サービスに個々に送信され、その一部が並行的に送信されてもよい。
【００４７】
なお、図５には、データ保存サービスへの暗号化チャンクの送信５０６を示したが、データ保存サービスに追加の情報を送信してもよいことに留意する。例えば、上記のように、送信は、データ保存サービスに提出されたウェブサービスリクエストに準拠したものであってもよい。ウェブサービスリクエストは、信頼性などについての情報を提供するリクエストのタイプを示す様々なパラメータを含んでいてもよい。また、下記のように、幾つかの実施形態では、１つ以上の初期化ベクトルを使用してチャンクを暗号化する。そのような実施形態では、１つ以上の初期化ベクトルを、該１つ以上の初期化ベクトルが後に復号化のために使用できるようにデータ保存サービスにより暗号化チャンクと共に保存されるチャンクと共に送信してもよい。しかし、幾つかの実施形態では、初期化ベクトルを、データ保存サービスまたはプロセス５００を実行する他のシステムによりチャンクとは別に保存してもよい。幾つかの実施形態では、各チャンクは、チャンクを暗号化するのに使用された初期化ベクトルと共に送信される。例えば、初期化ベクトル及びチャンクは連結されてもよく、チャンクのデータと初期化ベクトルの両方を符号化する（データチャンクやチャンクとも称される）ビット列を形成する。図８を参照して一例を説明する。このようにして後にチャンクがダウンロードされたときに初期化ベクトルはダウンロードされたデータから抽出することができる。
【００４８】
データオブジェクトのチャンクをアップロードした後ある時点で、プロセス５００は、データ保存サービスからデータチャンクをダウンロードすることを含んでいてもよい。図５にて点線で示すように、ダウンロードはアップロードと非対照的に実行されてもよい。なお、様々な図に関して図示または説明された他の動作も、互いに対して非同期的に実行されてもよいが、それについては必ずしも図示しないことに留意する。図５に戻ると、ユーザは、データオブジェクトへのアクセスを希望してもよく、よってデータ保存サービスからデータオブジェクトにアクセスするリクエストを提出してもよい。よって、図５に示すように、プロセス５００は、暗号化されたチャンクの並行的なダウンロード５０８を含んでいてもよい。なお、チャンクの暗号化及び／または送信同様、チャンクのダウンロードは、チャンクの全部ではなく一部が並行的にダウンロードされ、残りが順次ダウンロードされてもよいことに留意する。また、上記のように、チャンクは初期化ベクトルなどの他のデータと共に保存されてもよく、よって、暗号化されたチャンクのダウンロード５０８は、データチャンクと共に含まれる他のデータをダウンロードすることを含んでいてもよい。
【００４９】
図５に示すように、プロセスは、ダウンロードされたチャンクの復号化５１０を含んでいてもよく、復号化は如何なる好適な方法で行われてもよく、また、一般にデータチャンクが暗号化される方法により行われてもよい。例えば、あるチャンクを暗号化するのに使用された同じ暗号鍵及び初期化ベクトルを該チャンクの暗号化を行うのに使用された同じ暗号に従って該チャンクを復号化するのに使用してもよい。なお、図示しないが、例えば、チャンクと共に保存された初期化ベクトルからデータオブジェクトのデータを分離するなどして、データ記憶からダウンロードされたデータからチャンクを抽出するなどの追加の動作を行ってよい。
【００５０】
図５に示す動作において、プロセス５００は、復号化したチャンクのアセンブリング５１２を含み、データオブジェクトを形成してもよい。データオブジェクトを形成する復号化したチャンクのアセンブリング５１２は、如何なる好適な方法及び一般にデータオブジェクトが分割された方法で実行されてもよい。例えば、上記のように、幾つかの実施形態では、データオブジェクトはビット列であり、チャンクはビットの部分列の連続である。よって、復号化されたチャンクのアセンブリングは、ビットの部分列を連結し、データオブジェクトを形成することを含んでもよい。他の例では、抹消符号スキームを採用してチャンクを再アセンブルしてデータオブジェクトにするなどの異なるタイプの処理を行ってもよい。一般に、データチャンクをアセンブルしてデータオブジェクトを形成する動作は、データオブジェクトを分割するのに使用される１つ以上の方法にしたがってもよい。
【００５１】
上記のように、本明細書で説明した全てのプロセス同様、プロセス５００の変形例も本開示の範囲内にあると考えられる。例えば、図５には、データオブジェクトが分割され、データ保存サービスにパーツとして送信されるプロセスが示されている。該パーツは後にデータ保存サービスからダウンロードされてもよい。変形例として、例えば、データオブジェクトの一部をダウンロードしてアセンリングするものが挙げられる。下記に詳細に説明する一例としては、データオブジェクトは、メディアファイルであり、メディアファイルの最初ではない時点から該メディアファイルの再生をすることが望まれる場合などでは、メディアファイルの一部のみをダウンロードしてもよい。なお、プロセス５００は、一般的なデータに対して採用されてもよいが、本明細書で説明する技術では、データオブジェクトが一定のサイズである完全なデータオブジェクトの形態のデータに限定されているわけではない。プロセス５００は、例えば、１つ以上の入力からストリーミングされるデータ（例えば、動画撮像及び／または音声録音装置）など経時的に変化するデータセットからのデータなど一定のサイズを有しないデータを分割してデータ保存サービスに送信するのに使用されてもよい。他の変形例も本開示の範囲内にあると考えられる。
【００５２】
図６に一実施形態によるデータ保存サービスにデータを提供するプロセスの説明の為の一例を示す。プロセス６００は、図５を参照して上記にて説明されたプロセス５００を実行するシステムなどの如何なる好適なシステムにより実行されてもよい。一実施形態では、プロセス６００は、データオブジェクトからのチャンクの生成６０２を含む。データオブジェクトからのチャンクの生成は、ビットの部分列にデータオブジェクトを分割するなどで実行されてもよい。プロセス６００は、データオブジェクト用暗号鍵の取得６０４も含んでいてよい。暗号鍵の取得６０４は、揮発性または不揮発性メモリから暗号鍵を取得するなど如何なる好適な方法にて実行されてもよい。例えば、幾つかの実施形態では、プロセス６００は、ランダム、疑似ランダム及び／または如何なる好適な方法による暗号鍵の生成を含む。他の実施形態では、他のソースから暗号鍵を取得してもよい。例えば、幾つかの実施形態では、データ保存サービスは暗号鍵を生成して、該暗号鍵を、プロセス６００を実行するシステムに提供する。他のエンティティが暗号鍵を提供するそのような実施形態では、暗号鍵は安全チャンネルを介して提供されてもよい。例えば、安全鍵交換プロトコルを、暗号鍵を転送するのに使用してもよい。例えば、公開鍵暗号アルゴリズム（暗号システム）を使用して、プロセス６００を実行するシステムにより保持される公開鍵を使用して暗号鍵を暗号化してもよい。プロセス６００を実行するシステムは、暗号化された暗号鍵の復号化を、暗号鍵を暗号化するのに使用される公開鍵に対応する秘密鍵を使用して行うってもよい。一般に、プロセス６００を実行するシステムへの暗号の転送には、如何なる方法を使用してもよい。
【００５３】
一実施形態では、プロセス６００は、マルチパーツアップロードを開始するため、データ保存システムへのリクエストの提出６０６を含む。データ保存サービスは、例えば、マルチパートアップロードを開始するためのＡＰＩ発呼を行う能力を提供するものであってもよく、マルチパートアップロードを開始するリクエストへ応答して、データ保存サービスにアップロードされる異なるパーツに跨って使用可能な識別子を含む応答を提供してもよい。また、図示はしないが、プロセス６００は、マルチパートアップロードを開始するリクエストから応答を受け取ることを含んでいてもよい。図６に示すように、プロセス６００は、第１初期化ベクトルの生成６０８と、暗号鍵及び該初期化ベクトルを使用して行われる第１チャンクの暗号化６１０も含んでいてもよい。なお、第１チャンクは、データオブジェクトを生成するために順番に連結可能な一連のチャンクの最初のものであるが、必要ではない。プロセス６００における「第１」という形容詞は、プロセス６００を実行する際に暗号化される第１データチャンクに適用することを意図するためにのみ使用される。
【００５４】
チャンクの暗号化６１０が実行されると、プロセス６００は、アップロードリクエストを処理するのに構成されたデータ保存サービスのウェブサーバであってもよい保存サービスエンドポイントへの第１チャンクのアップロードの提出６１２を含んでいてもよい。なお、保存サービスエンドポイントは、マルチパートアップロードを開始するリクエストを受け取ったコンピュータシステムとは別のコンピュータシステムであってもよい。例えば、幾つかの実施形態では、１つ以上のウェブサーバに分解可能なデータ保存サービスのユニフォームリソースロケータ（ＵＲＬ）を使用してリクエストが提出される。リクエストを受け取ったウェブサーバは、（例えばアップロードされるデータを受信するなどして）リクエストを処理して操作可能なサーバのインターネットプロトコル（ＩＰ）アドレスや他の識別子を、リクエストに応じて提供してもよい。異なるリクエストは、１つ以上のロードバランシング技術にしたがうなどして異なるサーバが識別されるようにしてもたらしてもよい。よって、例えば、プロセス６００の実行時に、リクエストは異なる物理的にサーバコンピュータシステムに提出されてもよい。
【００５５】
よって、図６に示すように、プロセス６００は、アップロードされたリクエストに応じて、アップロードを処理するサーバの識別子の受信６１４を含む。その後、アップロードの実行６１６を、識別されたサーバに対して行われるものであってもよい。その後、アップロードする追加のチャンクがあるかどうかの判定６１８を行ってもよく、アップロードする追加するチャンクがあると判定６１８にて判定された場合、プロセス６００は、次の初期化ベクトルの生成６０８と、暗号鍵及び次の初期化ベクトルを使用して行われる次のチャンク暗号化６１０とを含んでいてもよい。アップロードリクエストは、上記のように提出６１２にて提出されてもよく、その後、次のチャンクの処理をするサーバの識別子は、上記のように受信６１４にて受領されてもよい。その後、識別されたサーバへのアップロードを開始６１６してもよく、その後、追加のチャンクの有無の判定６１８を行ってもよい。追加のチャンクがあると判断された場合、図６及び上記に示したように、判定６１８にてアップロードする追加のチャンクがないと判断するまで、所定の動作を繰り返してもよい。次いで、プロセス６００は、行われたアップロードをモニタすること、全てのチャンクがアップロードされたと判定６２０にて判定されるまで、全てのチャンクがアップロードされていることを判定する判定６２０を繰り返すことを含んでいてもよい。判定６２０にて、全てのチャンクがアップロードされたと判定されると、プロセス６００は、マルチパートアップロードを完了するリクエストの提出６０２を含んでいてもよい。リクエストは、上記にて示すようにデータ保存サービスに提出されてもよい。
【００５６】
データ保存サービスは、データオブジェクト用メタデータを（データ保存サービスの観点から）更新すること、及びデータオブジェクト用の識別子と、データオブジェクトのデータとを対応付けることでマルチパートアップロードを完了するリクエストを処理してもよい。データ保存サービスは、アップロードされたチャンクをデータオブジェクト内に集めることや、冗長符号化スキームをデータオブジェクトに適用すること、データオブジェクトをデータ保存装置内に冗長保存することなどと言った追加の動作を実行してもよい。データ保存サービスは、幾つかの実施形態では、冗長復号化スキームを各アップロードされたチャンクに別々に適用する。
【００５７】
本明細書で説明した全てのプロセス同様、プロセス６００の変形例も本開示の範囲内であると考えられる。例えば、図６に図示しないが、チャンクの暗号化は、上記のように並行プロセスにて実行され、それによりデータオブジェクトのチャンクの一部またはすべてがプロセス６００を実行するシステムにて、またはおそらく分散型システムの構成要素である他のシステムにて並行的に処理されてもよい。上記または下記に示すような他の変形例も本開示の範囲内にあると考えられる。図７に、上記のようなデータ保存サービスにデータを送信するのに使用され得るプロセス７００の説明のための一例を示す。例えば、プロセス７００は、図７を参照して説明されたプロセス６００の変形例であってもよく、よって、好適なシステムにて実行されるものであってもよい。
【００５８】
図７に示すように、プロセス７００は、上記のようにデータオブジェクトからのチャンクの生成７０２を含んでいる。暗号鍵の取得７０４は上記のようであってもよい。上述したように、データオブジェクトのチャンクの暗号化は、並行的に行われてもよい。よって、プロセス７００は、複数のデータ処理ユニットに暗号鍵とチャンクの配信７０６を含んでいる。データ処理ユニットは、例えば、プロセス７００を実行するシステムのプロセッサであってもよい。データ処理ユニットは、分散型システムにおける他のコンピュータシステムであってもよい。例えば、暗号鍵とチャンクは、暗号化を行ってもよい複数のコンピュータシステムにネットワークを介して配信されてもよい。一般に、データ処理ユニットは、暗号化を実行可能な如何なるプロセッサまたはコンピュータシステムであってもよい。データ処理ユニットへチャンクに含めて暗号鍵を配信する配信７０６は、利用可能なチャンクの数とデータ処理ユニットの数に基づいていてもよい様々な方法で実行されてもよい。例えば、幾つかの実施形態では、チャンクの重複しないサブセットを暗号鍵と共にデータ処理ユニットに提供する。説明の為の一例では、１０００個のチャンクが、４つのプロセッサなどの４つのデータ処理ユニットにある場合、データ処理ユニットへ暗号鍵とチャンクを配信する配信７０６は、４つの利用可能なデータ処理ユニットのそれぞれに２５０個のチャンクを提供することを含んでいてもよい。勿論、チャンクの他の数やデータ処理ユニット他の数も本開示の範囲に含まれると考えられる。
【００５９】
データ処理ユニットは、上記のようにチャンクを暗号化してもよい。例えば、各データ処理ユニットは、そのデータ処理ユニットが暗号化する各チャンクに対して異なる初期化ベクトルを使用してもよい。よって、データ処理ユニットへの暗号鍵とチャンクの配信７０６を行う際には、プロセス７０８は、データ処理ユニットからの暗号化チャンク及び初期化ベクトルの取得７０８をそれに応じて含んでいてもよい。なお、幾つかの実施例は、初期化ベクトルを使用しないので、プロセス７００はデータ処理ユニットから提供された初期化ベクトルを排除するように変形されていてもよいことに留意する。なお、データ処理ユニットからの暗号化チャンクと初期化ベクトルの取得は様々な実施形態により様々な方法で実行されてもよい。例えば、データ処理ユニットは、各チャンクの暗号化が完了すると、初期化ベクトルを暗号化されたチャンクに提供してもよい。他の例では、データ処理ユニットは、複数のチャンクの暗号化であるバッチが完了すると、暗号化されたチャンクのバッチを提供してもよい。
【００６０】
一実施形態では、プロセス７００は、上記のようにマルチパートアップロードを開始するリクエストの提出７１０を含んでいる。プロセス７００は、チャンク／初期化ベクトルペアの並行的アップロードの開始７１２も含んでいてもよい。チャンク／初期化ベクトルペアは、チャンクと、該チャンクの暗号化に使用される初期化ベクトルを含むデータ群であってもよい。上記で説明した全ての並行的プロセス同様、幾つかのチャンクを並行的にアップロードし、残りのチャンクを順次アップロードしてもよい。ある時点で、アップロードを完了し終え、よってプロセス７００は、全てのチャンク／初期ベクトルぺアのアップロードが完了したことの検知７１４を含んでいてもよい。例えば、プロセス７００を実行するシステムは、各アップロードをモニタしてもよく、最後のチャンク／初期化ベクトルペアが完了しアップロードが完了したことを検知するとアップロードの完了を検知してもよい。全てのチャンク／初期化ベクトルペアのアップロードが完了すると、プロセス７１４は、上記のようなマルチパートアップロードを完了するリクエストの提出７１６を含んでいてもよい。
【００６１】
上記したように、データの様々な変換を、本明細書で説明した様々なプロセスの実行の際に行ってもよい。そのような変換は、例えば、暗号化を含んでいてもよいが、圧縮、重複排除、その他のタイプのデータ変換などの他の変換を含んでいてもよい。図８に、データ主体がシステムによりどのように保存され、次いでデータオブジェクトをデータ保存サービスに送るかという点の変換の説明のための一例を示す。つまり、図８は、顧客コンピュータシステムやデータ保存サービスなどの異なるシステムにおいてデータオブジェクトをどのように保存するかという点における違いを示す。図８に示すように、データオブジェクトは、複数のチャンクを含むものであってもよい。この特定の例では、データオブジェクト８００は、整数Ｎ個のチャンクを含み、該チャンクは、上記のように、連結されたビット列であってもよく、データオブジェクト８００のサイズは、チャンクのサイズで均一に分割できない場合には最後の列を除いて全ての列は均一サイズで構成されるが、最後のチャンクは異なるサイズであってもよい。
【００６２】
なお、本明細書で説明した技術の変形例は、均一のチャンクサイズを有するように使用されてもよい。例えば、ゼロビットではない追加のビットをデータオブジェクトに追加し、データオブジェクトに均一のチャンクサイズにより均一に分割可能なサイズを与えてもよい。また、上記のように、本開示の様々な実施形態では、均一のチャンクサイズを必ずしも使用する必要はなく、どのビットがどのチャンクに属するかを判定可能にする追加のメタデータを保存することで可能にしてもよい非均一チャンクサイズを採用してもよい。図８に戻ると、図示するように、データオブジェクト８００の変換と保存データサービスへの通信に基づいて、データオブジェクトのデータが保存される方法は異なる。特に、図８に示すように、様々な実施形態では、データ保存サービスは、データオブジェクト８００以外のデータを含むがデータオブジェクト８００を取得するのに使用可能な異なるデータオブジェクト８０２としてデータオブジェクト８００を保存する。
【００６３】
図８に示すように、データ保存サービスは、チャンク／初期化ベクトルペア８０４群としてデータオブジェクト８０２を保存している。この特定の例では、初期化ベクトルを形成するビットと、各チャンク／初期化ベクトルペア８０４は、連結された初期化ベクトルを使用して暗号化されたチャンクを形成するビットを各チャンク／初期化ベクトルペア８０４は含むが、他の構成も本開示の範囲内にあると考えられる。図８に示すように、データ保存サービスは、それが保存しているデータオブジェクト８０２が、連結されたチャンク／初期化ベクトルペア８０４を含むビット列を保存しているかのように動作してもよい。例えば、データ保存サービスにより保存されたデータオブジェクト８０２は、識別子を特定するリクエストをデータ保存サービスにダウンロードを提出するなどしてデータ保存サービスからデータオブジェクト８０２と読み出すのに使用可能な識別子と対応付けされていてもよい。幾つかの例では、識別子は、論理データコンテナの識別子と該論理データコンテナ内のデータオブジェクトの識別子を含むが、他の構成も本開示の範囲内にあると考えられる。データ保存サービスは、データオブジェクト８０２内のデータをデータオブジェクトとして扱うので、ユーザは、例えば、データオブジェクト８０２を特定してリクエストをデータ保存サービスに提出してもよく、図８に示すデータは、単一のデータオブジェクトとしてダウンロードにて提供され得る。そうでなければ、データオブジェクトのデータはデータ保存サービス内のデータオブジェクトとして他の方法で処理され得る。
【００６４】
図９は、一実施形態によりデータ保存サービスからデータオブジェクトを取得するのに使用されてもよいプロセス９００の説明をするための例を示す。データオブジェクトは、上記で説明したプロセス及び／またはその変形例の１つの実行によりデータ保存サービスに保存されてもよい。図９に示すように、プロセス９００は、チャンクサイズ、オブジェクトサイズ、及び暗号鍵の取得９０２を含む。チャンクサイズ、オブジェクトサイズ、暗号鍵は、同じまたは別々の動作にて取得されてもよい。幾つかの実施例では、オブジェクトチャンク、オブジェクトサイズと暗号鍵は、上記で説明したメタデータ記憶装置などにメタデータとして保存されている。チャンクサイズ、オブジェクトサイズ、及び暗号鍵の取得は、例えば、メタデータ記憶装置からのデータを取得するリクエストを提出するなどして実行され得る。チャンクサイズ、オブジェクトサイズ、及び暗号鍵の取得は、他の方法として、ローカルまたは他の遠隔記憶装置からの情報にアクセスするなどして実行されてもよい。図９に示される、プロセス９００はチャンク／初期化ベクトルペアに対するバイト範囲の判定９０４を含む。図８に図示する例では、チャンク／初期化ベクトルペアのそれぞれは、データオブジェクト８０２を形成するビット列に対応するものであってもよい。バイト範囲は、チャンク／初期化ベクトルが開始される第１ビット（最初のビットに保存される追加のデータが保存されてない場合は第１ビット）から開始される、初期化ベクトルのサイズと暗号化されたチャンクのサイズの合計（すなわち、チャンク／初期化ベクトルペアを合わせたサイズ）に等しい長さの範囲を特定することで判定可能である。バイト範囲を算出する際に、最終チャンク／初期化ベクトルペアは、他のチャンク／初期化ベクトルペアの範囲より小さい範囲に対応するものであってもよい。もちろん、他のタイプのデータが保存されている他の実施形態における異なるデータ構成は、異なる範囲になってもよい。
【００６５】
なお、プロセス９００の変形例も本開示の範囲内であり、他の情報を取得し使用してバイト範囲を得てもよい。一実施形態では、プロセス９００は、判定されたバイト範囲を用いてチャンク／初期化ベクトルペアの並行的ダウンロードの開始９０６を含んでいる。並行的ダウンロードの開始は、例えば、図８を参照して上記で説明したデータオブジェクト８０２の別々の範囲のダウンロードのそれぞれのリクエストを提出することで実行されてもよい。様々なチャンク／初期化ベクトルペアのダウンロードは、モニタされていてもよく、第１チャンク／初期化ベクトルペアのダウンロード完了の検知９０８を行われてもよい。第１チャンク／初期化ベクトルペアのダウンロード完了が検知９０８にて検知されると、プロセス９００は、チャンクの復号をするための暗号鍵と初期化ベクトルの使用９１０を含んでいてもよい。例えば、初期化ベクトルと暗号化されたチャンクが連結されている実施形態では、初期化ベクトルと暗号化されたチャンクは、上記連結されたものから抽出されてもよく、復号されたチャンクを得るために使用されてもよい。
【００６６】
追加のチャンク／初期化ベクトルペアがあるかどうかの判定９１２を実行してもよい。もし、判定９１２にて追加のチャンク／初期化ベクトルペアがあると判定した場合、プロセス９００は、次のチャンク／初期化ベクトルペアのダウンロード完了の検知９０８を含んでいてもよく、次のチャンク／初期化ベクトルペアからの暗号鍵及び初期化ベクトルペアの使用９１０を実行することにより対応するチャンクを復号化してもよい。追加のチャンク／初期化ベクトルペアがないと判定９１２にて判定した場合、図９に示すように、プロセス９００のサブプロセスを繰り返してもよい。この時点で、復号化されたチャンクのアセンブル９１４にて、データオブジェクトを形成してもよく、アセンブルは、データオブジェクトが分割されるとチャンクを形成するような方法にしたがう変形の実施形態により変化してもよい。
【００６７】
本明細書で説明される全てのプロセス同様、変形例も本開示の範囲内にあると考えられる。例えば、復号化は並行にて、ダウンロードの完了が検知されると実行されてもよく、プロセス９００は、暗号化されたチャンクを復号化するように構成されたデータプロセスユニットへのダウンロードチャンクの配信を含んでいてもよい。また、データオブジェクトのアセンブル９１４は、全てのダウンロードが完了する前に開始されてもよい。例えば、データオブジェクトは、データチャンクが復号化されるにつれ、一部ずつアセンブルされてもよい。
【００６８】
上記のように本開示の変形例は、データオブジェクトの全てのデータをアップロード及び／またはダウンロードするものではないものも含む。図１０に、メディアファイルを処理するプロセス１０００の説明のための一例を示す。図１０の例では、メディアファイルは画像ファイルであるが、プロセス１０００は、音声ファイルや、完全なダウンロードが望ましくない及び／または必要ではない他の情報セットなどの他のメディアに適用されてもよい。図１０に戻ると、プロセス１０００は、一実施形態では、動画ファイルの再生開始時の取得１００２を含んでいてもよく、再生開始時間は、ユーザが動画（または他のメディア）ファイルの再生の開始を希望する時間であってもよい。再生開始時間は、メディアファイルの開始時間と同じであってもよく、異なってもよい。該開始時間は再生が開始できる最も早い時間である。例えば、メディアファイルがある時間長さを有する場合、開始時間はゼロ分ゼロ秒に対応してもよいが、開始時間はゼロ分ゼロ秒後の時間に対応したものであってもよい。再生開始時間の取得１００２は、如何なる好適な方法により実行されてもよい。例えば、ユーザが、グラフィカルユーザインタフェースとの相互作用を介して、複数の利用可能な開始時間より再生時間を画面から選択するなどして再生開始時間を示してもよい。開始時間は、ユーザに開始時間を選択するように促すことを必ずしも要しない他の方法にて取得されてもよい。例えば、ユーザが動画ファイルの視聴を開始し、次いで停止した場合、データはどこで動画ファイルの視聴が停止されたかを示すよう保存されてもよい。その場合、開始時間は、開始時間として、または少なくとも部分的に開始時間に基づいて決定されてもよい。
【００６９】
図１０に示すように、プロセス１０００は、選択された開始時間に対応するバイト範囲にて開始するバイト範囲の決定１００４を含んでいてもよい。バイト範囲の判定１００４は、動画ファイルが暗号化された方法に依存したものであってもよい様々な実施形態により様々な方法により実行されてもよい。幾つかの実施形態では、データチャンクと動画ファイル間でマッピングが維持される。各データチャンクは、例えば、データチャンクが再生を開始するのに使用可能な動画ファイルの時間に対応付けられていてもよい。他の例では、バイト範囲は、動画ファイルが再生される時間である動画ファイルの長さと、動画フィルのメタデータを除いたものであってもよい動画ファイルを含むデータ量間の線形関係を生成することで判定されてもよい。線形関係は、バイト範囲に対応する選択された開始時間に対応する推定を生成するのに使用されてもよい。推定は、正しいデータチャンクを選択するためのプロセスの基礎として使用されてもよい。例えば、推定されたチャンクが開始時間の前の時間を暗号化する場合、続くチャンクを取得し確認してもよい。同様に、推定されたチャンクは開始時間後の時間を暗号化する場合、開始時間に対応するチャンクが判明するまで、より早いチャンクを取得し、確認してもよい。
【００７０】
判定１００４にて開始時間に対応するバイト範囲で開始するバイト範囲を判定すると、プロセス１０００は、開始時間に対応するチャンクで開始するチャンクの並行的なダウンロードの開始１００６を含んでいてもよい。チャンクがダウンロードされると、ダウンロードされたチャンクは、アセンブル１００８にて不完全なデータオブジェクトに形成され動画ファイルの再生は、開始時間で開始１０１０され得る。なお、開始時間の動画の再生は、全てのチャンクのダウンロード及び／またはアセンブル後に必ずしも行われる必要はないことに留意する。例えば、十分なデータチャンクがダウンロードされ、選択された開始時間に動画ファイルの視聴を開始するのに十分なデータを含むバッファを満たすと、追加のチャンクがダウンロードされアセンブルされている間に再生を開始してもよい。なお、図示しないが、暗号化、復号化などの処理を他の動作を図１０に示すプロセス１０００の性能により実行されてもよい。
【００７１】
図１１に、様々な実施形態による態様を実施する環境１１００の一例の態様を示す。ウェブに基づく環境を説明のために使用するが、適宜異なる環境を使用して様々な実施形態を実施してもよいことは理解されるであろう。環境は、電子クライアント装置１１０２を備えている。電子クライアント装置１１０２は、適切なネットワーク１１０４を介したリクエスト、メッセージ、情報の送受信を行うことができ、その装置のユーザに情報を送り返すことができる好適な如何なる装置を含むことができる。そのようなクライアント装置の例としては、パーソナルコンピュータ、携帯電話、携帯メッセージ装置、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯端末、内蔵コンピュータシステム、電子書籍リーダなどが挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ＬＡＮ、その他の同様のネットワークやそれらの組み合わせなど如何なる好適なネットワークを含んでいてもよい。そのようなシステムに使用される構成要素は、少なくとも部分的に選択されたネットワーク及び／または環境によるものであってもよい。そのようなネットワークを介しての通信のためのプロトコルと構成要素は公知のものであり、本明細書では詳細に説明しない。ネットワークを介しての通信は、有線または無線接続、及びそれらの組み合わせで可能にされたものであってもよい。この例では、ネットワークはインターネットを含み、環境は、リクエストの受信と、それに応じたコンテンツの提供のためにウェブサーバ１１０６を備えるが、他のネットワークでは同様の目的のため代替の装置を使用することができることは当業者にとって自明であろう。
【００７２】
上記説明のための環境は、少なくとも１つのアプリケーションサーバ１１０８とデータ記憶装置１１１０を備える。なお、データを適切なデータ記憶装置から取得するなどのタスクを実行するように相互作用可能に連結または構成されている幾つかのアプリケーションサーバ、層、その他の素子、プロセスや構成要素が備えられていることは理解されよう。サーバは、本明細書においては、ハードウェア装置や仮想コンピュータシステムなど様々な方法にて実装されてもよい。ある文脈においては、サーバはコンピュータシステム上で実行されるプログラミングモジュールを指す場合がある。本明細書において、「データ記憶装置」という用語は、データの保存、アクセス、読み出しを行うことができる任意の装置またはそれらの組み合わせを称すものであり、任意の標準、分散、またはクラスタ化環境における任意の組み合わせ及び数のデータサーバ、データベース、データ記憶装置、及びデータ保存媒体を含むものであってもよい。アプリケーションサーバは、必要に応じてデータ記憶装置と一体化される任意の好適なハードウェア及びソフトウェアを備え、クライアント装置用の１つ以上のアプリケーションの態様を実行して、アプリケーションのアクセス及びビジネスロジックの幾つか（または大部分）を処理するものであってもよい。アプリケーションサーバは、データ記憶装置と協働するアクセス制御サービスを提供するものであってもよく、ユーザに転送されるテキスト、グラフィック、音声及び／または動画を生成することができ、ハイパーテキストマークアップ言語（ＨＴＭＬ）、エクステンシブルマークアップ言語（ＸＭＬ）またはこの例において他の適切な構造化言語の形態でウェブサーバによりユーザに提供されるものであってもよい。全てのリクエストと応答の処理は、クライアント装置１１０２とアプリケーションサーバ１１０８間のコンテンツの送信同様、ウェブサーバにて処理されてもよい。なお、ウェブサーバ及びアプリケーションサーバは必要ではなく、単に構成要素の一例であり、本明細書において説明する構造化コードは本明細書のどこかで説明された如何なる好適な装置やホスト機器上で実行されてもよい。また、単一の装置で実行されるものとして本明細書で説明した動作は、文脈からそうでないことが明らかでない限り、分散型システムを形成し得る複数の装置により集合的に実行されてもよい。
【００７３】
データ記憶装置１１１０は、本開示の特定の態様に関するデータを保存するための幾つかの別々のデータテーブル、データベース、または他のデータ保存機構と媒体を含んでいてもよい。例えば、図示したデータ記憶装置は、生産側にコンテンツを提供するのに使用することができる生産データ１１１２及びユーザ情報１１１６を保存する機構を備えていてもよい。また、データ記憶装置は、報告、分析、または他の目的のために使用することが可能なログデータ１１１４を保存する機構を備えているように示されている。なお、上記で列記した機構の何れかの好適なものの保存可能またはデータ記憶装置１１１０における追加の機構に保存可能なページ画像情報及びアクセス権情報などの、記憶装置に保存する必要があり得る他の多数の態様が存在し得ることは理解されよう。データ記憶装置１１１０は、それと対応するロジックを介して動作可能であり、アプリケーションサーバ１１０８から命令を受け取り、それに応答してデータを取得、更新、または処理をすることができる。一実施例では、ユーザは、ユーザにより動作される装置を介して、あるタイプのアイテムのサーチリクエストを提出してもよい。この場合、データ記憶装置はユーザ情状にアクセスして、ユーザの身元を確認してもよく、カタログ詳細情報にアクセスしてそのタイプのアイテムに関する情報を取得することができる。次いでユーザがユーザ装置１１０２上でブラウザを介して視聴可能なウェブページに結果を列記するなどして、情報をユーザに返すことができる。対象の特定のアイテムの情報は、ブラウザの専用ページまたはウィンドウにて視聴することができる。また、本開示の実施形態は、ウェブページの内容に必ずしも限定されないが、一般のリクエストの処理により一般的に採用可能なものであってもよく、リクエストが必ずしもコンテンツのリクエストである必要はないことに留意する。
【００７４】
各サーバは、典型的には、一般的な管理用及びそのサーバの動作用の実行可能プログラムを提供するオペレーティングシステムを備えており、典型的には該サーバのプロセッサによる実行時に該サーバに所望の機能を実行させることができる命令を保存するコンピュータ読み取り可能記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読取専用メモリなど）を備えている。オペレーティングシステムの好適な実装とサーバの一般的な機能は公知または市販のものであり、当業者により、特に本開示を参照して容易に実施される。
【００７５】
一実施形態の環境は、１つ以上のコンピュータネットワークまたは直接的な接続を用いて通信リンクを介して相互接続されている幾つかのコンピュータシステム及び構成要素を使用する分散型コンピューティング環境である。しかし、その様なシステムは図１１に図示するものより構成要素の数が少ないまたは多いシステムでも同様に動作可能であることは当業者には明白であろう。よって、図１１のシステム１１００が示すものは、単に説明のためのものであり、本開示の範囲を限定するものではない。
【００７６】
また、様々な実施形態は、場合によっては、多数のアプリケーションの任意のものを操作するのに使用可能な１つ以上のユーザコンピュータ、コンピューティング装置または処理装置を含んでいてもよい多種多様なオペレーティング環境に実装可能である。ユーザまたはクライアント装置としては、多数のネットワークプロトコルやメッセージングプロトコルをサポート可能な、標準オペレーティングシステムを実行するデスクトップ、ラップトップまたはタブレットコンピュータなどの多数の汎用パーソナルコンピュータ、及び携帯ソフトウェアを実行するセル、無線、携帯装置の内の任意のものが挙げられる。そのようなシステムは、また、開発及びデータベース管理などの目的の市販のオペレーティングシステム及び他の公知のアプリケーションの多種多様な任意のものを実行する多数のワークステーションを備えていてもよい。また、これらの装置は、ネットワークを介して通信可能なダミー端末、シンクライアント、ゲームシステム、他の装置などの他の電子装置を備えていてもよい。
【００７７】
本開示の様々な実施形態は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、開放型システム間相互接続（ＯＳＩ）モデルの様々な層で動作するプロトコル、ファイル転送プロトコル（ＦＴＰ）、ユニバーサルプラグアンドプレイ（ＵｐｎＰ）、ネットワークファイルシステム（ＮＦＳ）、コモンインターネットファイルシステム（ＣＩＦＳ）及びアップルトークなどの多種多様な市販のプロトコルの任意のものを使用する通信をサポートする、当業者が精通しているであろう少なくとも１つのネットワークを使用している。ネットワークは、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ−Ａｒｅａ  Ｎｅｔｗｏｒｋ）、仮想プライベートネットワーク、インターネット、イントラネット、公衆交換回線網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせであってもよい。
【００７８】
ウェブサーバを使用する実施形態では、ウェブサーバは、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ Ｔｒａｎｓｆｅｒ Ｐｒｏｔｏｃｏｌ）サーバ、ＦＴＰサーバ、ＣＧＩ（Ｃｏｍｍｏｎ Ｇａｔｅｗａｙ Ｉｎｔｅｒｆａｃｅ）サーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、及びビジネスアプリケーションサーバなどの多様なサーバやミッドティアアプリケーションの任意のものを実行可能である。また、サーバは、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃  またはＣ＋＋などの任意のプログラミング言語、またはＰｅｒｌ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、またはＴＣｌやそれらの組み合わせなどのスクリプト言語で書かれた１つ以上のスクリプトまたはプログラムとして実装されてもよい１つ以上のウェブアプリケーションを実行するなどして、ユーザ装置からのリクエストに応じてプログラムやスクリプトを実行可能なものであってもよい。また、サーバは、例えばＯｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）などから市販されているものが例として挙げられるが、それらに限定されないデータサーバを備えていてもよい。
【００７９】
環境は、上記のように様々なデータ記憶装置や他のメモリ及び記憶媒体を備えることができる。これらは、記憶媒体上の１つ以上のコンピュータに対してローカルな場所からネットワークを介してコンピュータの何れかまたは全てから遠隔な場所まで様々な場所に配置されてもよい。特定の１組の実施形態では、当業者が精通しているＳＡＮ（Ｓｔｏｒａｇｅ−Ａｒｅａ  Ｎｅｔｗｏｒｋ）に情報を置いてもよい。同様に、コンピュータ、サーバまたは他のネットワーク装置に属する機能を実行するのに必要な如何なるファイルも適宜ローカル及び／または遠隔に保存してもよい。システムがコンピュータ化された装置を含む場合、そのような装置はそれぞれバスを介して電気的に接続されてもよいハードウェア要素を備えていてもよく、該要素は、例えば、少なくとも１つの中央処理装置（ＣＰＵまたはプロセッサ）、少なくとも１つの入力装置（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッドなど）及び少なくとも１つの出力装置（例えば、表示装置、プリンタ、またはスピーカなど）を備えている。そのようなシステムは、ディスクドライブ、光学記憶装置及びランダムアクセスメモリ（ＲＡＭ）や読み取り専用メモリ（ＲＯＭ）などの固体記憶装置、また取り外し可能媒体装置、メモリカード、フラッシュカードなどの１つ以上の記憶装置を備えていてもよい。
【００８０】
また、そのような装置は、上記のように、コンピュータ読み取り可能記憶媒体読取装置、通信装置（例えば、モデム、ネットワークカード（有線または無線）赤外線通信装置など）、及び作業メモリを備えてもよい。コンピュータ読み取り可能記憶媒体読取装置は、一次的及び／またはより永続的にコンピュータ読み取り可能な情報を保持、保存、及び送受信するための遠隔、ローカル、固定及び／または取り外し可能な記憶装置及び記憶媒体が挙げられるコンピュータ読み取り可能な記憶媒体と接続または受信するよう構成されたものであってもよい。また、システム及び様々な装置は、典型的には、クライアントアプリケーションやウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを備えた少なくとも１つの作業メモリ装置内に配置された多数のソフトウェアアプリケーション、モジュール、サービス、または他の素子を備える。なお、代替的な実施形態は、上記以外の多数の変形例を有し得ることに留意する。例えば、カスタマイズされたハードウェアを使用してもよく、及び／またはハードウェア、ソフトウェア（アプレットなどの携帯ソフトウェアを含む）またはその両方に特定の要素を実装してもよい。また、他のコンピューティング装と接続するネットワーク入力装置／出力装置などの他のコンピューティング装置も使用してもよい。
【００８１】
コードやコードの一部を保持する記憶媒体及びコンピュータ読み取り可能媒体としては、本技術分野にて公知または使用されている如何なる好適な媒体が含まれてもよく、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどの情報の保存及び／または送信のための任意の方法または技術で実装された、揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体などの、ＲＡＭ、ＲＯＭ、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、または他のメモリ技術、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置または、所望の情報を保存するのに使用可能で、システム装置によりアクセス可能な他の如何なる媒体などの記憶媒体や通信媒体が挙げられるが、それらに限定されない。本開示と本明細書で説明された技術に基づき、当業者は様々な実施形態を実施する他の方法及び／または方法を見出すであろう。
【００８２】
よって、明細書と図面は、限定をするものではなく、説明的なものであると理解されるものである。特許請求の範囲において記載する本発明のより広い精神と範囲から逸脱することなく様々な修正や変更を加えられることができることは明らかであろう。
【００８３】
他の変形例も本開示の精神に含まれている。よって、開示された技術には様々な変形例や代替の構造を適用可能であるが、説明したその実施形態を図面に示して、詳細を上記に説明した。なお、本発明を特定の形態や開示した形態に限定する意図はなく、添付の特許請求の範囲に含まれる全ての変形例や代替の構成、均等物を包含することを意図することを理解されよう。
【００８４】
開示された実施形態を説明する文章（特に以下の特許請求の範囲の文）における「ａ」及び「ａｎ」及び「ｔｈｅ」や同様の指示語の使用は、特に明記されるか文脈から明らかでない限り、単数と複数の両方を包含するものである。「ｃｏｍｐｒｉｓｉｎｇ」、「ｈａｖｉｎｇ」、「ｉｎｃｌｕｄｉｎｇ」、「ｃｏｎｔａｉｎｉｎg」（備える、有する、設ける、含む）」は明記しない限りオープンエンドの用語として解釈されるものである。「接続される」という用語は、修飾されず物理的接続を意味する場合は、何か介在するものがあるとしても、一部または全体が含まれ、接続され、または連結される状態と解釈されるものである。本明細書における数値範囲の記載は、特に明記しない場合は、その範囲内の個々の値を示す簡略な方法としてのものであり、各値は、それぞれ別途明細書に記載されているかのように明細書に組み込まれている。「セット」や「サブセット」という用語（例えば、「項目のセット」）の使用は、特に明記しないか、文脈に矛盾しない限り、１つ以上の部材を含む非空の群である。また、特に明記しないか、文脈に矛盾しない限り、対応するセットの「サブセット」という用語は、該対応するセットの好適なサブセットを必ずしも示すものではなく、該サブセットと該対応するセットは同じものでありうる。
【００８５】
「Ａ、Ｂ及びＣの少なくとも１つ」または「Ａ、Ｂ及びＣの少なくとも１つ」などの句などの接続語は、特に明記しないか、文脈に明らかに矛盾しない限り、アイテムやタームなどがＡまたはＢまたはＣ、またはＡ及びＢ及びＣの非空の任意のサブセットであってもよいことを示すために一般的に使用される文章として理解されるものである。例えば、上記接続句において使用される３の部材のセットの説明の為の一例、「Ａ、Ｂ及びＣの少なくとも１つ」及び「Ａ、Ｂ及びＣの少なくとも１つ」は、以下のセットの何れも示すものである：｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝。よって、一般にその様な接続語は、少なくとも１つのＡ、少なくとも１つのＢ及び少なくとも１つのＣがそれぞれ存在することをある実施形態では必要であることを意味することを意図したものではない。
【００８６】
本明細書で説明したプロセスの動作は、本明細書で明記するか、文脈に明らかに矛盾しない限り、好適な如何なる順番で実施されてもよい。本明細書で説明したプロセス（またはその変形例及び／またはそれらの組み合わせ）は、実行可能な命令と共に構成された１つ以上のコンピュータシステムの制御下に実行されてもよく、ハードウェアまたはその組み合わせにより、１つ以上のプロセッサ上で集合的に実行されるコード（例えば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装されてもよい。コードは、コンピュータ読み取り可能記憶媒体に、例えば、１つ以上のプロセッサにて実行可能な複数の命令を含むコンピュータプログラムの形態で保存されていてもよい。コンピュータ読み取り可能記憶媒体は、非一時的なものである。
【００８７】
本明細書において提供された全ての如何なる例示または例示的言語（例えば、「など」）の使用は、本発明の実施形態をよりよく説明するためのものであり、特許請求の範囲において記載されていない限り、本発明の範囲を限定するものではない。本明細書における文言は、特許請求の範囲に記載されていない構成要素が本発明の実施において必須であるという解釈を導くものではない。
【００８８】
本発明者らに知られる本発明を実施するための最良の形態を含む本開示の好ましい実施形態を本明細書において説明した。これらの好ましい実施形態の変形例は、前記の説明を読んだ当業者には明らかであろう。発明者らはそのような変形例を当業者が当的に実施しると予想すし、本開示の実施例は、本明細書において具体的に説明したもの以外の方法で実施されることを本発明者らは意図する。よって、本開示の範囲は、適用法が許容する、添付の特許請求の範囲に記載の構成の全ての変形例及び均等物を包含する。また、全ての可能な変形例における上記の要素の如何なる組み合わせも、本明細書において明記されるか、文脈と明らかに矛盾しないかぎり、本開示の範囲に包含される。
【００８９】
発行物、特許出願、及び特許を含む本明細書において引用された全ての参照は、各参照が個々に具体的に参照により組み込まれ、全体が本明細書に記載されている場合と同程度に参照により組み込まれている。
【００９０】
本開示の実施形態は、以下の項を鑑みて説明することができる。
１．命令が記憶されたコンピュータ読み取り可能記憶媒体であって、前記命令は、コンピュータシステムの１つ以上のプロセッサにより実施されると、前記コンピュータシステムに、
複数のデータチャンクを取得させ、
少なくとも複数のデータチャンクの第１サブセットが前記複数のデータチャンクの第１サブセットの各チャンクに異なる初期化ベクトルを使用して並行的に暗号化するように前記複数のデータチャンクのそれぞれを暗号化させ、
少なくとも前記それぞれ暗号化された複数のデータチャンクの第２サブセットが並行的に前記データ保存サービスの複数のサーバに送信され、前記それぞれ暗号化された複数のデータチャンクがデータオブジェクトとして前記データ保存サービスにより集合的に管理されるように、前記それぞれ暗号化された複数のデータチャンクをデータ保存サービスへ送信させる、コンピュータ読み取り可能記憶媒体。
２．第１項に記載のコンピュータ読み取り可能記憶媒体であって、前記データチャンクのそれぞれの暗号化は、前記データチャンクのそれぞれを同じ暗号鍵にて暗号化することを含むコンピュータ読み取り可能記憶媒体。
３．第１項ないし第２項に記載のコンピュータ読み取り可能記憶媒体であって、前記それぞれ暗号化された複数のデータチャンクのそれぞれのデータ保存サービスへの送信は、前記それぞれ暗号化された複数のデータチャンクのそれぞれについて、該データチャンクと、該データチャンクを取得するのに使用される対応する初期化ベクトルの両方を含むデータオブジェクトのサブオブジェクトを送信することを含むコンピュータ読み取り可能記憶媒体。
４．第１項ないし第３項に記載のコンピュータ読み取り可能記憶媒体であって、前記命令はさらに、コンピュータシステムに、前記それぞれ暗号化された複数のデータチャンクのそれぞれについて、該データチャンクを含むデータオブジェクト内のデータの範囲を特定するリクエストをデータ保存サービスに提出して、前記データ保存サービスから、少なくとも前記それぞれ暗号化された複数のデータチャンクのサブセットをダウンロードさせるコンピュータ読み取り可能記憶媒体。
５．第４項に記載のコンピュータ読み取り可能記憶媒体であって、前記それぞれ暗号化された複数のデータチャンクのサブセットのダウンロードは、前記サブセットのデータチャンクの少なくとも幾つかの均一なデータチャンクサイズと前記データオブジェクトのデータオブジェクトサイズに基づいて、前記サブセットからのそれぞれ暗号化された各データチャンクにそれぞれ対応する複数の範囲を判定することを含むコンピュータ読み取り可能記憶媒体。
６．システムであって、
複数のプロセッサと、
該システムに
前記複数のプロセッサ間に分散することで集合的にデータオブジェクトを含む複数のデータチャンク各データチャンクを、複数のサブセットの各サブセットが異なる初期化ベクトルを用いて処理されるように処理させ、
前記データ保存サービスの複数のサーバに集合的に前記複数の処理されたデータチャンクを受信させるとことで、前記複数の処理されたデータチャンクをデータ保存サービスに転送させる
前記プロセッサの少なくとも１つにより実行可能な命令が符号化されているメモリと、を備えるシステム。
７．第６項に記載のシステムであって、前記命令は、さらにシステムに、
前記複数の処理されたデータチャンクの少なくとも１つのサブセットに対するチェックサム動作を並行的に実行させ、
前記複数の処理されたデータチャンクのサブセットの前記データ保存サービスへの転送を認証するのに前記チェックサム動作の結果を使用させるシステム。
８．第６項ないし第７項に記載のシステムであって、前記データ保存サービスへの前記複数の処理されたデータチャンクの転送は、前記複数の処理されたデータチャンクを第２データオブジェクトとして集合的に前記データ保存サービスに保存されるように実行されるシステム。
９．第６項ないし第８項に記載のシステムであって、
前記データチャンクの処理は、対応する初期化ベクトルを用いて前記データチャンクを暗号化することを含み、
各データチャンクは、異なる対応する初期化ベクトルを用いて暗号化され、
前記データ保存サービスへの前記複数の処理されたデータチャンクの転送は、各処理されたデータチャンクを、該データチャンクを取得するのに使用される対応する初期化ベクトルと共に転送することを含むシステム。
１０．第６項ないし第９項に記載のシステムであって、前記命令は、さらにシステムに、
前記複数の処理されたデータチャンクの好適なサブセットを、前記複数の処理されたデータチャンクの好適な他のサブセットをダウンロードすることなく、選択的にダウンロードさせ、
前記選択的にダウンロードされた好適なサブセットから前記データオブジェクトの少なくとも一部を再構成させるシステム。
１１．コンピュータに実装される方法であって、
実行可能な命令と共に構成された１つ以上のコンピュータシステムの制御制御下において、
第１の複数のデータチャンクにデータオブジェクトを分割することと、
集合的にデータオブジェクトを構成するのに使用可能な前記第１の複数のデータチャンクの複数のサブセットの各サブセットを異なる初期化ベクトルを用いて暗号化するように前記第１の複数のデータチャンクを別々に暗号化することと、
データ保存サービスへ、少なくとも部分的に前記第１の複数のデータチャンクに基づく第２の複数のデータチャンクを、前記データ保存サービスの別々のサーバにそれぞれ対応する複数の並列チャンネルを用いて送信することと、を含む方法。
１２．第１１項に記載のコンピュータに実装される方法であって、前記第２の複数のデータチャンクの各データチャンクは、前記第１の複数のデータチャンクからの暗号化されたデータチャンクと、該暗号化されたデータチャンクを生成するのに使用される初期化ベクトルとを含む方法。
１３．第１１項ないし第１２項に記載のコンピュータに実装される方法であって、前記第１の複数のデータチャンクと前記第２の複数のデータチャンクは、同数の成員を含むデータチャンクのセットである方法。
１４．第１１項ないし第１３項に記載のコンピュータに実装される方法であって、前記第１の複数のデータチャンクの別々の暗号化は、少なくとも前記複数のデータチャンクのサブセットを並行的に暗号化することを含む方法。
１５．第１４項に記載のコンピュータに実装される方法であって、前記第１の複数のデータチャンクの別々の暗号化は、並行化不可能な暗号プリミティブを用いることを含む方法。
【図１】
2019061694.tif 000003
【図２】
2019061694.tif 000004
【図３】
2019061694.tif 000005
【図４】
2019061694.tif 000006
【図５】
2019061694.tif 000007
【図６】
2019061694.tif 000008
【図７】
2019061694.tif 000009
【図８】
2019061694.tif 000010
【図９】
2019061694.tif 000011
【図１０】
2019061694.tif 000012
【図１１】
2019061694.tif 000013