(57)【特許請求の範囲】
【請求項１】
サーバ側部分およびクライアント側部分を有するバックアップ復元システムであって、
前記サーバ側部分は、バックアップ要求および復元要求を受信し、バックアップ要求に応答して、暗号化されたデータ・ブロックおよびファイル署名を保存し、復元要求に応答して、暗号化されたデータ・ブロックを返すよう構成されており、
前記クライアント側部分は、
ファイルを継続的なバックアップ用として指定できるようにするユーザインターフェースを提供し、
継続的なバックアップ対象として指定されているファイルに対する変更を検知し、ファイル署名を計算し、ファイル署名の比較によって、バックアップオペレーションのために保存する必要があるブロックを求め、バックアップオペレーションの要求を出す作業プロセスと、
前記サーバ側部分との間で要求およびデータをやり取りするための移送プロセスとを含み、
前記ファイル署名は、
ファイルに対して行われる変更に関してお互いから比較的独立であるファイルの部分を隔てるファイル内の境界をブロック境界とする、可変長のナチュラル・ブロックにファイルを分割し、前記ナチュラル・ブロックをまとめられるナチュラル・ブロックの長さの合計における不均衡に起因してわずかに異なる長さとすることができる固定長のブロックにまとめ、該固定長のブロックごとに、該固定長のブロックの長さの表示および該固定長のブロックの暗号化ハッシュを含むブロック記述子を生成し、生成された複数のブロック記述子のシーケンスに、前記ファイル署名のバージョンを示すヘッダを付けて生成される、
前記バックアップ復元システム。
【請求項２】
それぞれの暗号化ハッシュが、ファイル暗号化キー、暗号化アルゴリズム識別子、および圧縮アルゴリズム識別子を前記固定長のブロックに付加して、固定長のフルブロックを作成し、該フルブロックに前記暗号化ハッシュ関数を適用することによって作成される、請求項１に記載のバックアップおよび復元システム。
【請求項３】
前記作業プロセスが、ファイルの現時点のタイムスタンプを、以前に記録されたタイムスタンプと定期的に比較して、前回の繰り返し以降に変更されたファイルを検知する、請求項１に記載のバックアップおよび復元システム。
【請求項４】
前記作業プロセスが、ファイルをバックアップするために前記サーバ部分へ送信する必要があるブロックを、
前記ファイルに関する現時点のファイル署名を作成し、
前記現時点のファイル署名を、以前に作成されたファイル署名と比較して、前記ファイルが最後にバックアップされた後に変更された前記ファイル内のデータ・ブロックを割り出し、
前記ファイルが最後にバックアップされた後に変更された前記ファイル内のデータ・ブロックのうちで、保存する必要があるデータ・ブロックとして前記サーバ側部分によって現時点で保存されていないデータ・ブロックを割り出し、
前記現時点のファイル署名および保存する必要がある割り出されたデータ・ブロックを前記サーバ部分へ伝送すること、
によって割り出す請求項１に記載のバックアップおよび復元システム。
【請求項５】
前記作業プロセスが、
復元すべきファイルのインスタンスのファイル署名を取得し、
前記ファイル署名内のブロック・ハッシュによって識別されるブロックのうちで、前記クライアント上で現在利用できないブロックを割り出すこと、によって、ファイルを復元するために前記サーバ部分に要求する必要があるブロックを割り出す請求項１に記載のバックアップおよび復元システム。
【請求項６】
求められたブロック・ハッシュによって識別されたそれぞれのデータ・ブロックが、継続的なバックアップ用として指定されたファイル内に前記データ・ブロックが現れる回数を問わずに、前記サーバ側部分によって１回だけ保存される、請求項１に記載のバックアップおよび復元システム。
【請求項７】
前記サーバ側部分へ伝送されたそれぞれのデータ・ブロックが、前記データ・ブロックを前記サーバ側部分へ伝送した前記クライアントしか知らないファイル暗号化キーを使用して暗号化されており、それによって前記サーバ側部分は、前記サーバ側部分によって保存されているクライアント・データにアクセスすることができない、請求項１に記載のバックアップおよび復元システム。
【請求項８】
前記サーバ側部分が、二重に暗号化されたファイル暗号化キーをクライアントのために保存しており、それによってクライアントは、紛失したファイル暗号化キーへのアクセスを前記サーバ側部分やその他のクライアントに提供することなく、前記ファイル暗号化キーを復元することができる、請求項１に記載のバックアップおよび復元システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・バックアップおよびデータ・アーカイビングに関し、詳細には、私的なコンピュータ・ユーザおよび業務上のコンピュータ・ユーザが、ウェブサービスベースのアプリケーションを介してリモート・データストレージ設備上に、データ・ファイルを含むデータをバックアップおよびアーカイブできるようにするウェブサービスベースのデータ・バックアップおよびデータ・アーカイビングに関する。
【背景技術】
【０００２】
（関連出願の相互参照）
本出願は、２００５年１０月１２日に出願された米国特許仮出願第６０／７２５，８１２号の利点を主張するものである。
【０００３】
ほんの３０年前には、大多数の私的な個人、小規模企業、および中規模企業でさえ、文書処理作業を電子タイプライタ上で実行し、個人的なデータおよび業務関連のデータを、手書きおよびタイプされた紙および用紙上に保存し、それらの紙および用紙をファイリング・キャビネット内の見出し付きのフォルダに手作業でファイルしていた。１９７０年代後半および１９８０年代の間に、ミニコンピュータベースのワープロ・システムが、そしてその後はパーソナル・コンピュータが、幅広く利用できるようになり、電子データの保存が、ファイリング・キャビネット内に保存される手書きおよびタイプされたページに比較的すばやく取って代わった。しかし、初期のマスストレージ・デバイスは、容量が小さく、堅牢性に欠けていたため、そしてコンピュータ・システムは、データ・バックアップおよびアーカイブされたデータを保存する上での有用性が限られていたため、多くの場合、電子データは、フロッピー・ディスク上に保存され、そしてそれらのフロッピー・ディスクは、見出しを付けられて、ファイリング・キャビネットのような入れ物に物理的に保存されていた。データ・バックアップおよびアーカイブされたデータは、比較的長期間にわたって確実に保存する必要がある。多くの場合、バックアップされたデータおよびアーカイブされたデータが再び必要とされることはない可能性があるが、バックアップされたデータまたはアーカイブされたデータをその後の使用のために検索する必要がある場合には、バックアップされたデータまたはアーカイブされたデータを検索する能力が、企業組織にとって、重大な、そして場合によっては致命的な結果にさえつながることがありうる。
【０００４】
パーソナル・コンピュータおよび企業のコンピューティング・システムが改良を続け、コンピュータのコスト・パフォーマンスが高まるに伴って、データ・バックアップおよびデータ・アーカイブは、現在では、ネットワーク化されたコンピュータ・システムによってアクセスできるマスストレージ・デバイス内に保存されるのが最も一般的である。図１は、小規模企業環境におけるデータ・バックアップおよびデータ・アーカイビングのためのオプションを示している。一般には、従業員や小規模事業主は、ほとんどのデータ関連作業をその従業員や事業主のパーソナル・コンピュータ１０２上で実行する。パーソナル・コンピュータは一般に、複数のディスク・ドライブを伴って購入され、それらのディスク・ドライブによって、単一のコンピュータ・システム内における予備のデータ・バックアップ（完全なディスク・ミラーリングを含む）および予備のデータ・アーカイビングが可能となる。しかし、小規模企業は一般に、パーソナル・コンピュータと、より高い性能を有する１つまたは複数のサーバ１０４とからなるネットワーク化されたシステムと、可用性がより高いフォルト・トレラントなデータストレージ・サブシステムとを採用している。このような環境においては、ＰＣ  １０２を主に使用する従業員や事業主は、その従業員や事業主自身のＰＣ  １０２内におけるあらゆるローカルなバックアップおよびアーカイビングに加えて、バックアップ・データを保存するために、およびデータをアーカイブするために、ネットワークを介して、その他のＰＣ  １０６および１０８や集中化されたサーバ１０４にアクセスすることができる。同様に、ホーム・ユーザも、自分のＰＣ上に複数のディスク・ドライブを有することができ、複数のネットワーク化されたコンピュータにわたってバックアップ・データを保存することおよびデータをアーカイブすることを可能にするネットワーク化された複数のＰＣのシステムを有する場合が多い。さらに、図１に示されている小型のシステムにおいて、書き込み可能なＣＤまたはＤＶＤ、磁気テープ、あるいはその他のタイプの物理的なストレージ・メディア上にデータをバックアップおよびアーカイブすることができ、それらのＣＤ、ＤＶＤ、あるいはテープを離れた場所に保存することができる。しかし、やはりこのような慣行は、定期的に行われるバックアップおよびアーカイビング、離れた場所に保存された情報の管理、および忘れられたり先延ばしにされたりすることが多いその他の手作業に依存している。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
残念なことに、個人および企業のコンピューティングにおける現在のトレンドおよび開発は、図１に示されている小型のコンピュータ・システムなどの効率の悪い危険な小型のコンピュータ・システムにおいてデータ・バックアップおよびデータ・アーカイビングを行うことを意図している。アプリケーションと、アプリケーションを実行するコンピュータ・システムとが、より大きく、より高性能になり続けるにつれて、日常的に作成されて個人および小規模企業のユーザによってバックアップおよびアーカイブする必要がある電子データの量が、急速に増大している。さらに、コンピュータ・システムのコスト・パフォーマンスが高まり、さまざまなアプリケーション・プログラムがますます利用可能になった結果として、より多くのアクティビティーおよびタスクが自動化されるようになるにつれて、より多くのタイプの電子データが、家庭および小規模企業のコンピュータ・ユーザによって作成されており、そうした電子データのうちの多くが、バックアップおよびアーカイブを必要とする可能性がある。新たな規制および法律によって、小規模企業は、確実にバックアップされたデータを比較的長期間にわたって保持することを求められている。たとえば、ある新たな法律は、医療記録を電子的に確実に保存することを求めており、その他の新たな法律は、有価証券取引を行う企業内のＥメールおよびその他の有価証券関連の情報を確実に電子的に保存することを求めている。これらの法律および規制は、データ・バックアップおよびデータ・アーカイビングの経費が膨大に追加される一因となっている。データ・バックアップおよびデータ・アーカイビングは、ホーム・ユーザおよび小規模企業の側に継続的な勤勉および技術的な理解を必要とする。ホーム・ユーザおよび小規模企業は、バックアップされたデータおよびアーカイブされたデータがさまざまな異なる理由で失われたり修復不能になってしまったりしないように保証する方法でデータを効果的にバックアップおよびアーカイブする上で必要とされる技術的な専門知識、時間、および慎重さに欠けている場合が多い。コンピュータ・ベンダー、オペレーティングシステム・ベンダー、ならびにその他のハードウェア、ソフトウェア、およびサービスの提供業者によって進歩がもたらされてきたが、効率のよいユーザフレンドリーなデータ・バックアップおよびデータ・アーカイビングは、多くの異なるコンポーネントをインターフェースで相互に接続することを必要とする可能性があり、多くのインターフェースは、時と共に安定もせず、またセットアップおよび管理が容易でもない可能性がある。信頼できるデータ・バックアップおよびデータ・アーカイビングは、単一の場所でのデータの壊滅的な損失を防止するために、地理的に離れた複数の場所にデータが保存されることを必要とする。たとえば、データが小規模企業内で三重や四重に重複した様式でバックアップおよびアーカイブされている場合でさえ、火災、洪水、あるいは地震は、重複して保存されているデータがすべて失われたり修復不能な損傷を受けたりする結果にたやすく結び付くおそれがある。データを地理的に離れたデータストレージ設備にバックアップおよびアーカイビングすることは、ホーム・ユーザおよび小規模企業の技術的な能力および経済的な能力を超えている場合が多い。最後に、ホーム・ユーザや小規模企業が、信頼できる効果的なデータ・バックアップおよびデータ・アーカイビングのシステムを作成して管理することができる場合でさえ、ホーム・ユーザおよび小規模企業にとって、バックアップされたデータおよびアーカイブされたデータを、不注意なまたは悪意のある無許可のアクセスから保護することは、きわめて困難である。そのようなデータは一般に、ハッカー、競合他社、ならびに詐欺的な集団および組織によってアクセスされる。これらの理由すべてから、ホーム・ユーザ、小規模企業、ならびに中規模企業およびさらに大規模な組織でさえ、ユーザーフレンドリーな、信頼できる、そしてコスト効率のよいデータ・バックアップおよびデータ・ストレージ・サービスに対する必要性を誰もが認識している。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、信頼できる、安全な、地理的に離れた、そしてコスト効率のよいデータ・バックアップ、データ・アーカイビング、ならびにバックアップおよびアーカイブされたデータの検索を必要とする私的な個人、小規模企業、およびその他の組織に対して、離れた場所でのデータ・バックアップおよびデータ・アーカイビングを提供するウェブサービスベースのデータ・バックアップ・アプリケーションおよびデータアーカイビング・アプリケーションを対象としている。本発明の一実施形態においては、個人や小規模企業の顧客が、サービス提供業者とデータバックアップ・サービスおよびデータアーカイビング・サービスを契約する。次いでサービス提供業者は、安全な信頼できるデータ・バックアップおよびデータ・アーカイビングを個人や小規模企業の顧客に提供するためにリモート・データストレージ設備と契約する。クライアント側のアプリケーションが、クライアント・コンピュータへダウンロードされ、そしてこのアプリケーションは、クライアントが、ローカルに暗号化されたデータを、離れた場所にあるデータストレージ設備に保存することを可能にするように構成される。サービス提供業者も、データストレージ設備も、クライアントによって保存された情報を復号したり、あるいはそうした情報にその他の形でアクセスしたりすることはできない。さらに、離れた場所に保存する目的でデータを暗号化するためにクライアントによって使用された１つまたは複数の暗号化キーは、もしもクライアントがローカル・コンピュータ・システムへのダメージや損害を被った場合にクライアントによって後で取り戻せるように、離れた場所にあるデータストレージ設備に安全に保存される。しかしクライアント暗号化キーは、二重に暗号化された様式で保存され、サービス提供業者またはデータ・ストレージ設備がクライアントの暗号化キーにアクセスすることを防止する。本発明の特定の実施形態はまた、離れた場所に保存された暗号化されたデータに関してローカルなインデックス付けを行うこと、および離れた場所に既に保存されているデータに対する更新を効率よく保存することを提供する。
【発明を実施するための最良の形態】
【０００７】
本発明の実施形態は、ウェブサービスベースのデータ・バックアップおよびデータ・アーカイビングのアプリケーションを対象としている。上述のように、現在では電子的なデータ・バックアップおよびデータ・アーカイビングが、ホーム・ユーザおよび小規模企業によって一般に採用されているが、データ作成の増大、ならびに信頼できるデータ・バックアップおよびデータ・アーカイビングに対する必要性に伴って、信頼できる、安全な、そして地理的に離れたデータ・バックアップおよびデータ・アーカイビングに対するニーズが増大し続けている。
【０００８】
上述のように、図１を参照すると、家庭環境や小規模企業環境内のＰＣユーザは、ローカルＰＣ上の、ならびに家庭環境や小規模企業環境内のリモートＰＣ上の、および企業環境内のサーバの双方のハードウェアおよびソフトウェアのリソースにアクセスすることができる。しかしやはり、図１を参照して上述したように、ネットワーク化されたホームコンピュータ・システムおよび小規模企業システムは、データ・バックアップおよびデータ・アーカイビングのニーズには適していない。
【０００９】
図２に示されているように、ＰＣユーザは、ローカルなハードウェアおよびソフトウェアのリソース、ならびにローカル・エリア・ネットワークを介して利用可能なハードウェアおよびソフトウェアのリソースにアクセスすることに加えて、ローカルＰＣ上で実行されるウェブ・ブラウザ２０４、およびインターネット・サービス・プロバイダによって提供されるインターネット・アクセスを介して、世界中からの膨大な量のＨＴＭＬでコード化された情報およびインターネットベースのサービス２０２にアクセスすることができる。ＰＣユーザは、インターネットを通じて数千万ページの情報にアクセスすることができ、さまざまな商品を購入するために、そしてさまざまなサービスを受けるために、インターネット上で小売取引および企業間取引を行うことができるが、残念なことに、現時点で本出願人が知っている限り、ユーザが、データ・ファイルおよびその他のファイルを、バックアップおよびアーカイビングの目的から、インターネットを通じてリモート・データストレージ設備へ継続的に、安全に、そして透過的にアップロードできるようにする方法で、ファイル名およびその他のファイル属性を含む潜在的に機密の情報を、そのリモート・データストレージ設備に対して、ハッカーに対して、そしてインターネットを通じて情報の伝送を傍受できる人物に対してさらさずにすむ方法はない。
【００１０】
インターネットを通じたアプリケーションどうしの対話のための新たな標準が、現在開発中である。この新興の標準の集まりを「ウェブ・サービス」と呼ぶ。ウェブ・サービスは、特定のポート（現在は、ポート８０および４４３を含む）に関連付けられている特定のタイプのオペレーションまたはトランザクションを定義するＨＴＴＰベースのプロトコルやＨＴＴＰＳベースのプロトコルおよびＸＭＬベースのプロトコルの集まりと考えることができる。たとえばウェブサービス・プロトコルは、クライアント・コンピュータ上で実行される特定のアプリケーション・プログラムが、特定の定義されたタスクを実行するためにそのアプリケーション・プログラムにとってのサーバベースの相手側アプリケーション・プログラムと対話することができるように定義することができる。ウェブサービスベースのアプリケーションは、医療情報をコード化および転送するためのクライアント側およびサーバ側の２つ一組になったアプリケーション・プログラムを含むことができる。別のウェブサービスベースのアプリケーションは、インターネットを通じて相互接続された２つのＰＣによって結び付いているユーザどうしやユーザのグループどうしの間においてビデオ会議を可能にするために、音声情報および視覚情報を同時に２つのピアＰＣの間で伝送して、放送および表示用として提供することができる。コンピュータ・システムのホーム・ユーザおよび小規模企業ユーザの双方がウェブ・ブラウザおよびインターネット・アクセスを現在利用できる度合いと、ウェブサービスベースのアプリケーションの台頭と、リモート・データストレージ設備への信頼できる、安全な、そしてコスト効率のよいデータ・バックアップ・サービスおよびデータ・アーカイビング・サービスに対するニーズが現在認識されているという点とが相まって、本発明がさまざまに異なる形で具体化される刺激となっている。これらの実施形態は、私的な個人、小規模企業の従業員、あるいはＰＣまたは小型のコンピュータシステムのその他のユーザが、ウェブサービスベースのアプリケーションを介してインターネットを経由してリモート・データストレージ設備へのバックアップやアーカイブを行う目的からデータを容易にコスト効率よく伝送すること、そしてバックアップされたデータおよびアーカイブされたデータをリモート・データストレージ設備から必要に応じて検索することを可能にするウェブサービスベースのデータバックアップ・サービスおよびデータアーカイビング・サービスを対象としている。
【００１１】
図４は、ホーム・ユーザ、小規模企業ユーザ、あるいはＰＣまたはその他の小型のコンピュータ・システムのその他のユーザにとって利用可能なバックアップ・リソースおよびアーカイビング・リソースを、図１の図解仕様を使用して示している。図１を参照して論じたように、家庭環境、小規模企業環境、研究環境、あるいはデータを作成して確実にバックアップおよびアーカイブすることが必要となるその他の環境内におけるＰＣ  １０２またはその他の小型のコンピュータ・システムのユーザは、ローカル・マスストレージ・デバイス、その他のハードウェア、およびローカルＰＣ  １０２内にデータを重複してバックアップおよびアーカイブするためのソフトウェアを採用することができ、離れた場所にあるネットワーク化されたＰＣ１０６および１０８上にデータをバックアップおよびアーカイブすることができ、集中化されたサーバやその他のより大規模なコンピュータ・リソース１０４上にデータをバックアップおよびアーカイブすることができ、また本発明によれば、データバックアップ／データアーカイビング・ウェブサービスベースのサービス４０２を採用して、データバックアップ／データアーカイビング・ウェブ・サービスをサポートするリモート・データストレージ設備上にデータをバックアップおよびアーカイブすることができる。ウェブ・サービスは、ローカルＰＣ  １０２上で実行されるクライアント側のデータバックアップ／データアーカイビング・アプリケーション・プログラムを介してローカルＰＣ  １０２から直接アクセスすることもでき、あるいは、集中化されたコンピューティング・リソース１０４を介して、またはリモートＰＣ１０６および１０８を通じて、データ・バックアップ／データアーカイビング・ウェブ・サービスに間接的にアクセスすることもできる。
【００１２】
データバックアップ／データアーカイビング・ウェブ・サービスは、あらゆるウェブ・サービスと同様に、オペレーション、リモート・プロシージャー・コール、あるいはその他のそのような機能インターフェースの集まりとみなすことができ、それらが集まって、定義されたウェブ・サービスを構成している。本発明のさまざまな実施形態においては、リモート・データストレージ設備は、クライアント側のデータ・ボールト・アプリケーションを実行するクライアント・コンピュータへの第１のウェブサービス・インターフェースと、クライアントが、リモート・データストレージ設備によって提供されるデータバックアップ／データアーカイビング・サービスに契約する際に経由する提携サービス提供業者への第２のウェブサービス・インターフェースとを提供するデータ・ボールトを実装する。図４は、リモート・データストレージ設備上で実行されるデータ・ボールト・ウェブサービスベースのアプリケーションの一実施形態によって提供される２つのウェブサービス・インターフェースを示している。データ・ボールト・アプリケーションは、クライアント・コンピュータへの第１のウェブサービス・インターフェースを提供し、この第１のウェブサービス・インターフェースには、クライアントによってリモート・データストレージ設備上に保存されたファイルのリストを検索すること（４０２）、リモート・データストレージ設備上に保存されているファイルを検索するための準備を要求すること（４０４）、データストレージ設備から検索するよう要求されているファイルを実際に検索すること（４０６）、リモート・データストレージ設備上への保存用としてファイルをアップロードするための準備を要求すること（４０８）、および保存用としてファイルをリモート・データストレージ設備へ実際にアップロードすること（４１０）をクライアントが行えるようにする別々のプロトコルが含まれている。一実施形態においては、データ・ボールト・ウェブベースのアプリケーションは、サードパーティーすなわち提携サービス提供業者への提携先インターフェースを提供し、この提携先インターフェースは、データ・ボールト・アプリケーションからデバイス利用情報を得ること（４１２）、提携サービス提供業者を通じてクライアント用としてデータ・ボールト・アプリケーションによって構成されているデバイスをリストアップすること（４１４）、提携サービス提供業者を介してクライアント・コンピュータ用として構成されているデバイスを無効にすること（４１６）、提携サービス提供業者のクライアント用として構成されたデバイスを有効にすること（４１８）、提携サービス提供業者を通じてクライアント用として構成されているデバイスを除去すること（４２０）、および提携サービス提供業者のクライアント用として新たなデバイスを作成すること（４２２）を提携サービス提供業者が行えるようにする。代替実施形態においては、第１および第２のデータ・ボールト・ウェブベースのインターフェースによって、さらなる機能を提供することができ、またさらなる実施形態においては、プロトコルおよび関連付けられているオペレーション、リモート・プロシージャー・コール、あるいはその他の機能インターフェースのさまざまな集まりを提供することができる。いくつかの実施形態においては、提携サービス提供業者を必要とせずに、リモート・データストレージ設備によって直接クライアントへウェブサービスベースのデータバックアップ／データアーカイビング・サービスを提供することができる。
【００１３】
図５は、本発明のさまざまな実施形態をサポートする１つの可能なハイレベルのハードウェア構成を示している。図５において、クライアント・コンピュータ５０２は、インターネットベースの通信５０８に対するサポートを含むオペレーティング・システム５０６の上でクライアント側のデータバックアップ／データアーカイビング・アプリケーション５０４を実行する。オペレーティング・システム５０６は、ＨＴＴＰＳ  ５１０プロトコルをＴＣＰ／ＩＰプロトコル５１２の上でサポートし、そしてＴＣＰ／ＩＰプロトコル５１２は、１つまたは複数のデバイスドライバ固有のプロトコル５１４の上に層を形成し、デバイスドライバ固有のプロトコル５１４は、内部バスを介してデバイス・ドライバ５１６へデータを転送し、そしてデバイス・ドライバ５１６は、ＨＴＴＰＳプロトコルおよびＴＣＰ／ＩＰプロトコルをサポートするリモート・コンピュータとの間で電子メッセージを送信および受信する。提携先のデータバックアップ／データアーカイビング・アプリケーション５２０は、提携サービス提供業者のコンピュータ５２２上で実行される。上述のように、本発明の特定の実施形態においては、クライアントは、データバックアップ・サービスおよびデータアーカイビング・サービスを提携サービス提供業者と契約する。サービスが確立されると、クライアントは、直接リモート・データストレージ設備５２４と通信して、データを保存および検索する。リモート・データストレージ設備５２４は、特定の実施形態においては、地理的に離れた複数のコンピュータ・システム５２６および５２８から構成することができ、それらの複数のコンピュータ・システムのそれぞれは、データ・ボールト・アプリケーション５２０を実行し、データ・ボールト・アプリケーション５２０は、図４を参照して上述したように、クライアント・コンピュータへの第１のウェブサービス・インターフェースと、提携サービス提供業者への第２のウェブサービス・インターフェースとを提供する。リモート・データストレージ設備は、予備のファイル・ストレージ／データベース・システム５３２および５３４を含み、この予備のファイル・ストレージ／データベース・システム５３２および５３４はそれぞれ、地理的に分散した複数のリモート・データストレージ設備コンピュータ５２６および５２８に地理的に関連付けることができ、あるいはリモートデータストレージ設備コンピュータ５２６および５２８、ならびに提携サービス提供業者５２２およびクライアント５０２の双方から地理的に離すこともできる。
【００１４】
図６Ａ〜図６Ｆは、本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示している。図６Ａ〜図６Ｆは、ウェブサービスベースのデータバックアップ／データアーカイビング・サービスの機能の象徴的な表示を採用している。図６Ａは、クライアント６０２およびデータ・ボールト６０４を示している。上述のように、クライアント６０２は、クライアント・コンピュータ上で実行されるクライアント側のウェブサービスベースのデータバックアップ／データアーカイビングサービス・アプリケーションであり、データ・ボールト６０４は、１つまたは複数のリモート・データストレージ設備コンピュータ上で実行されるウェブサービスベースのデータ・ボールト・アプリケーションである。ファイル保存オペレーションは、ウェブサービス・アプリケーションによってクライアントに提供され、一般にファイルの形態での、クライアントからデータ・ボールトへの、保存用としてのデータの伝送を提供する。はじめにクライアントは、データ・ボールト上にバックアップする、またはアーカイブする平文ファイル６０６を有する。クライアントはまた、そのクライアントだけがアクセスできる暗号化キー６０８を保持する。クライアントは、提携サービス提供業者を通じてデータバックアップ・サービスおよびデータアーカイバル・サービスを契約しており、データ保存オペレーション用に構成されている。構成の一環として、クライアントは、データ・ボールトによってデバイスを割り当てられている。すなわち、データ・ボールトの視点から見れば、クライアントは、デバイス識別子を有するリモート・デバイスである。データ・ボールトは、リモート・デバイスによって暗号化されてそのリモート・デバイスによって自分に伝送されたファイル６１０を保存する。これらのファイルは、ファイルＩＤ  ６１２などのファイルＩＤに関連付けられ、それによってデータ・ボールトは、その後のクライアントによる要求に応じて、保存されている暗号化されたファイルを検索して返すことができる。
【００１５】
したがってデータ・ボールトは、劇場、バス停、あるいはその他のそのようなサービス提供業者によって提供される衣服預け入れサービスに類似した論理的なサービスを提供する。顧客は、１つまたは複数のアイテムを預け入れることができ、それらのアイテムを表す識別タグを受け取る。サービス提供業者は、合致する識別番号を有するタグを、保管されたアイテムに取り付ける。その後、顧客は、タグを提示することによって、衣服の１つまたは複数のアイテムを取り出すことができ、サービス提供業者は、そのタグを、保管されている衣服と照合する。図６Ａ〜図６Ｆにおいては、上述の類似を強調するために、保存されている暗号化されたファイルは、衣類ラックから吊るされている衣料品として、取り付けられている識別タグと共に象徴的に表示されているが、実際には、それらのファイルは、ファイル・サーバ上に、あるいはその他の何らかのファイルストレージ設備内に電子的に保存されている。
【００１６】
データ・ボールトはまた、安全なデータベース６１４を含み、この安全なデータベース６１４は、銀行や小売店における金庫の目的を果たすものと考えることができる。このデータベースの１つの機能は、クライアントの暗号化キー６１６のアクセス不能なコピーを安全に保存することである。クライアントは、何らかの理由で暗号化キー６０８を紛失した場合には、データ・ボールトから暗号化キーを得ることができる。しかしデータ・ボールトは、自分自身では暗号化キーにアクセスすることができず、したがって、暗号化されたファイル６１０内に保存されている情報のいずれにもアクセスすることはできない。クライアントは通常、そのクライアントがデータ・ボールト内にバックアップまたはアーカイブしたすべてのファイルのローカルなリストを保持する。しかしクライアントは、もしも何らかの理由で自分のファイルのリストを紛失した場合には、暗号化されたファイル属性を安全なデータベース６１４内に保存しているデータ・ボールトからファイルの暗号化されたリストを取り出すことができる。しかしデータ・ボールトは、そのデータ・ボールト内に保存されているファイル属性情報に自分自身ではアクセスすることができない。したがって、データ・ボールト内にバックアップされた、またはアーカイブされたファイルの内容やファイルの属性に関する情報が、クライアント・コンピュータから出て行く必要は決してない。データ・ボールト上にバックアップされた、またはアーカイブされたすべてのデータは、クライアントのデータを暗号化するためにそのクライアントによって採用されている暗号化技術と同じ程度に安全であり、またそのクライアント・コンピュータしかアクセスすることができない。
【００１７】
クライアントは、平文ファイル６０６をデータ・ボールト内に保存するために、２つの異なるオペレーションを実行する。はじめに、図６Ｂに示されているように、クライアントは、そのクライアントのデバイス番号ならびに暗号化されたファイル属性をデータ・ボールトへ送信して、関連付けられているファイルを後で保存するように要求する。次いで、図６Ｃに示されているように、データ・ボールトは、クライアントが保存しようと意図しているファイルに自分が関連付けるファイルＩＤをそのクライアントに返す。やはり上述のように、属性は、データ・ボールトへ伝送される前にクライアントによって暗号化される。したがってデータ・ボールトは、暗号化された属性６１６を安全なデータベース内に保存し、そして自分自身では、それらの暗号化された属性にアクセスすることまたは、それらの暗号化された属性を読み取ることはできない。図６Ｄに示されているように、クライアントは、保存されるファイルに関するファイルＩＤを受信すると、平文ファイルを暗号化して、その平文ファイルの暗号化されたバージョン６１８を作成する。そしてクライアントは、暗号化されたファイルを、その前にデータ・ボールトによってそのクライアントに返されていたそのクライアントのデバイス番号およびファイルＩＤと共に、図６Ｅに示されているように保存用としてデータ・ボールトへ送信する。最後に、図６Ｆに示されているように、データ・ボールトは、ファイルＩＤ  ６２０に関連付けられている暗号化されたファイル６１８を、クライアントのコンピュータに関連付けられているデバイスに割り当てられているファイル・ストレージ設備内に保存し、これによってクライアントは、その後にそのファイルＩＤをデータ・ボールトに提供することによって、暗号化されたファイルを検索することができる。ファイルＩＤは、安全なデータベース６１４内の暗号化されたファイル属性およびそのデバイスに関するデバイス識別子に関連付けられており、それによって、クライアントは、もしもデータ・ボールト上にバックアップされたまたはアーカイブされたファイルを識別するローカルに保存されている情報を紛失した場合には、後でデータ・ボールトからファイルを検索する際に使用するために、そのクライアントのデバイスに関連付けられている暗号化されたファイル属性／ファイルＩＤのペアをデータ・ボールトに要求することができる。
【００１８】
図７Ａ〜図７Ｂは、ウェブサービスベースのデータバックアップ／データアーカイビング・サービスを契約するための、ならびにクライアントを初期構成するためのクライアントと提携サービス提供業者との間における対話を示している。図７Ａ〜図７Ｂは、クライアントと、提携サービス提供業者と、データ・ボールトとの間におけるウェブサービス・プロトコルに従ったデータの伝送を示している。図７Ａ〜図７Ｂにおいては、３つの列が示されており、左から右へ順にクライアント、提携サービス提供業者、およびデータ・ボールトを表している。図７Ａに示されているように、クライアントは、サービスを求める要求７０２を提携サービス提供業者へ送信し、その提携サービス提供業者は、クライアント側のウェブサービスベースのデータバックアップ／データアーカイビングサービス・アプリケーション・ソフトウェア７０４をそのクライアントへ返す。このトランザクションは、図７Ａの２つのメッセージを介して行われているように示されているが、比較的長いプロトコルを含むことができ、この比較的長いプロトコルにおいては、クライアントは、はじめに、提携サービス提供業者によって提供されるウェブ・ページに応答し、さまざまな用紙および支払情報を受信し、記入し、返信し、そしてウェブサービスベースのデータバックアップ／データアーカイビング・サービスを首尾よく契約するために、およびクライアント側のソフトウェアを受け取るために、さらなる任意のトランザクション関連のオペレーションを実行する。
【００１９】
クライアント側のソフトウェアがインストールされると、クライアント・コンピュータ上に公開／秘密暗号化キーのペアが作成され、その公開／秘密暗号化キーのペアのうちの公開暗号化キー７０６が、新たな構成を求める要求の一部としてクライアントによって提携サービス提供業者へ伝送される。次いで提携サービス提供業者は、新たなデバイスの要求を伴ったクライアントの公開暗号化キー７０８をデータ・ボールトへ伝送する。データ・ボールトは、提携サービス提供業者およびクライアントの双方のために新たなデバイスを作成し、クライアントの公開キーを使用してデバイス構成情報を応答メッセージ７１０内に暗号化し、その応答メッセージを提携サービス提供業者へ返す。提携サービス提供業者は、暗号化されたデバイス構成情報を応答メッセージ７１２内に含めて（さらに、その提携サービス提供業者によってクライアントのために作成されたパスフレーズをその応答メッセージ内に含めて）、その応答メッセージをクライアントに返す。クライアントは、応答メッセージ７１２を受信すると、提携サービス提供業者によって提供されたパスフレーズならびに暗号化されたデバイス構成情報を抽出することができ、そのクライアントの秘密暗号化キーを使用してデバイス構成情報を復号することができる。本発明の特定の実施形態においては、クライアントは、提携サービス提供業者によるパスフレーズの作成に依存せずに、１つまたは複数のパスフレーズを選択したり、あるいは提案したりすることができる。そしてデバイス構成情報は、次のデータバックアップ・オペレーションおよびデータアーカイブ・オペレーション用としてクライアント側のアプリケーションを完全に構成するためにクライアント側のソフトウェアによって使用される。提携サービス提供業者は、クライアントの秘密暗号化キーを所有していないため、データ・ボールトによってクライアントへ返されたデバイス構成情報を傍受したり、アクセスしたり、あるいは使用したりすることができないという点に留意されたい。データ・ボールトは、提携サービス提供業者によってクライアントへ返されたパスフレーズを利用することができないという点にも留意されたい。しかし、本発明の多くの実施形態においては、提携サービス提供業者は、エスクロー・サービスを用いて、クライアントのために作成されたパスフレーズ、ならびに提携サービス提供業者の秘密暗号化キーを保存することに同意し、それによって、提携サービス提供業者が、オペレーションを中断したり、あるいはデータ・ボールトから提携サービス提供業者を通じたデータバックアップ・サービスおよびデータアーカイブ・サービスを契約しているクライアント・コンピュータにとってその他の形で利用できなくなったりした場合に、クライアントに提供された１つまたは複数のパスフレーズをそれらのクライアントによって取り戻すことができ、提携サービス提供業者の秘密暗号化キーをデータ・ボールトによって取り戻すことができる。
【００２０】
次いで、図７Ｂに示されているように、クライアントは、そのクライアントのコンピュータだけに知られている新たな暗号化キーを作成し、提携サービス提供業者によって提供されるパスフレーズを用いて、その新たな暗号化キーを暗号化して、パスフレーズによって暗号化された新たな暗号化キー７１４を作成し、次いで提携サービス提供業者の公開暗号化キーを用いて、そのパスフレーズによって暗号化された新たな暗号化キーを暗号化して、二重に暗号化された新たな暗号化キー７１６を作成し、この二重に暗号化された新たな暗号化キー７１６は、クライアントによってデータ・ボールトへ送信される。データ・ボールトは、二重に暗号化された新たなクライアント暗号化キーを、そのクライアントに対して割り当てられているデバイスを表すデバイス識別子に関連付けて安全なデータベース内に保存する。この保存される二重に暗号化されたクライアント暗号化キーは、図７Ｂにおいては、保護された暗号化キー７１６として表示されている。そしてデータ・ボールトは、確認応答メッセージ７１８をクライアント・コンピュータに返信する。本発明の特定の実施形態においては、提携サービス提供業者を経由して確認応答を送信することもできる。
【００２１】
これでクライアント・コンピュータは、その後のデータバックアップ・オペレーションおよびデータアーカイブ・オペレーション用に完全に構成されている。クライアント・コンピュータは、そのクライアント・コンピュータの暗号化キーのローカルに保存されたコピーを有し、このコピーをその後に使用して、バックアップやアーカイビングのためにデータ・ボールトへ伝送されるすべてのデータを暗号化する。クライアントの暗号化キーはそのクライアントしか知らないため、またクライアントの暗号化キーはデータ・ボールト内で二重に暗号化されているため、データ・ボールトや提携サービス提供業者のいずれも、クライアントによってデータ・ボールト内に保存されている情報を復号するためにそのクライアントの暗号化キーにアクセスすることはできない。このことの重要な結果として、データ・ボールト内でクライアント・データが安全であるだけでなく、保存されているファイルに関連付けられているファイル属性も安全であり、それによって、提携サービス提供業者やデータ・ボールトのいずれも、保存されているデータ属性を読み取ったり、あるいはそれらのデータ属性にその他の形でアクセスしたりすることはできない。弁護士事務所は、たとえば、その弁護士事務所の依頼人を連想させたり、あるいはその弁護士事務所の依頼人のためにその弁護士事務所によって行われるさまざまな法的な事項や処理を連想させたりするファイル名を有する多くのファイルを保存する可能性がある。たとえこれらのファイルの内容がデータ・ボールトまたは提携サービス提供業者にとってアクセス不能であっても、ファイル名がアクセス可能であるならば、データ・ボールト、提携サービス提供業者、あるいはデータ・ボールトまたは提携サービス提供業者へのアクセスを得る悪意ある第三者によって、多くの機密情報が探り出される可能性がある。しかし、本発明の実施形態に相当するウェブサービス・プロトコルのもとでは、ファイル名、ファイルの所有者、およびその他のファイル属性は、クライアント・コンピュータを離れる前に暗号化によって完全に保護される。
【００２２】
図８は、図６Ａ〜図６Ｆに関して前述した、データをデータ・ボールト内に安全に保存するために呼び出されるクライアント側のオペレーションを示すシンプルなフローコントロール・プログラムである。ステップ８０２において、クライアントは、ファイルに関連付けられているファイル属性を暗号化し、保存要求を直接データ・ボールトへ送信する。この保存要求は、クライアント側のソフトウェアの初期構成の一環として受け取られたクライアント・コンピュータに関連付けられているデバイスを表すデバイスＩＤを含む。ステップ８０４においては、クライアントは、引き換えにデータ・ボールトからファイルＩＤを受信する。ステップ８０６においては、クライアントは、保存されるファイルを暗号化し、その暗号化したファイルをファイルＩＤと共にデータ・ボールトへ送信する。ステップ８０８においては、クライアントは、そのファイルが１つまたは複数のリモート・データストレージ設備上に首尾よく保存された旨の確認応答をデータ・ボールトから受信する。
【００２３】
図９は、クライアントのためにファイルを保存することに関連したデータ・ボールト・アプリケーションによって実行されるオペレーションを示している。ステップ９０２において、データ・ボールトは、クライアントから保存要求を受信する。データ・ボールトは、承認ステップおよび確認ステップを実行した後に、クライアントのために新たなファイルＩＤを作成する。ステップ９０６においては、データ・ボールトは、ステップ９０２において受信された保存要求からファイル属性を抽出し、それらの暗号化されたファイル属性を、新たに作成されたファイルＩＤに関連付けて安全なデータベース内に保存する。ステップ９０８においては、データ・ボールトは、ファイルＩＤをクライアントへ返す。ステップ９１０においては、データ・ボールトは、暗号化されたファイルをファイルＩＤと共にデータ・ボールト内への保存用として受信し、そしてステップ９１２においては、データ・ボールトは、暗号化されたファイルを受信した旨を、ファイルＩＤに関連付けられているデータベース項目内に記録し、暗号化されたファイルをファイル・サーバまたはその他のデータストレージ・デバイス上に保存し、そして確認応答をクライアントへ送信する。
【００２４】
クライアントによるファイルの検索は、比較的シンプルであり、ファイルを求める要求をファイルＩＤおよびデバイス識別子と共にデータ・ボールトへ送信することを含み、その要求がデータ・ボールトによって正しく確認され承認されると、データ・ボールトは、指定されたファイルをファイル・サーバ上で見つけ出し、その指定されたファイルをクライアントに返す。上述のように、クライアントは、もしも暗号化されたファイル属性／ファイルＩＤのペアのローカルなコピーを何らかの形で紛失した場合には、その情報をデータ・ボールトに要求して、データ・ボールトから受信することもできる。さらにクライアントは、もしもクライアント暗号化キーを紛失した場合には、二重に暗号化されたクライアント暗号化キーをデータ・ボールトに要求して、データ・ボールトから受信することができる。この要求は、提携サービス提供業者を通じてクライアントによって行うことができ、その場合には、提携サービス提供業者は、パスフレーズによって暗号化された暗号化キーをそのクライアントへ転送する前に、そのクライアントのために二重の暗号化の第１のレベルを復号することができる。
【００２５】
本発明の代替実施形態においては、ウェブサービスベースのデータバックアップ／データアーカイビング・サービスは、さらなるサービスを提供することができる。たとえば、本発明の一実施形態においては、ファイルの暗号化に先立って、クライアント側のアプリケーションは、ローカルなインデックス内に保存されるファイルに関するインデックス情報を作成して、そのクライアント側のアプリケーションが、テキスト文字列またはその他の検索情報に対して、離れた場所に保存されているファイルを検索できるようにする。すなわち、ローカルに保存されるインデックスは、言葉のインデックスまたはその他のデータオブジェクト・インデックスを含み、そこでは、言葉がファイルＩＤに関連付けられている。そして、ファイルが暗号化される際に、そのファイルのために作成されたインデックス情報も暗号化して、保存用として別途データ・ボールトへ送信することができる。ローカルなインデックス情報がクライアントによって何らかの形で失われた場合には、そのインデックス情報を、暗号化された形態でデータ・ボールトから取り出すことができる。
【００２６】
本発明のさまざまな実施形態によって提供されるさらなるサービスは、効率のよいファイル更新である。さまざまな実施形態においては、クライアントは、データ・ボールト上に保存するための更新されたファイルを、クライアント上にローカルに保存されている更新されたファイルの古いバージョンと比較し、それらの２つのファイルの間における差分を計算する。次いでクライアントは、それらの差分のみを、それらの差分を記述するメタデータと共に暗号化し、そして、更新されたファイルの全体を伝送するのではなく、これらの暗号化された差分およびメタデータが、保存用としてデータ・ボールトへ伝送される。データ・ボールトは、ファイルの最初のバージョンを一連の更新と共に保存することができ、そして最初の完全なバージョンおよび以降の更新の双方を返すことができ、あるいは保存されている更新されたファイルがその後にクライアントによって要求された場合には、最新の更新および要求された古い更新をすべてクライアントに返すこともできる。更新されたファイルの全体ではなく、更新された差分を暗号化して伝送することは、計算上の効率がさらによいだけでなく、伝送および保存上の効率もさらによい。
【００２７】
（本発明のさまざまな実施形態のさらに詳細な説明）
このサブセクションにおいては、本発明の実装される実施形態に関するさらに詳細な説明が提供される。図１０は、本発明の一実施形態に相当するバックアップ／復元（以下、修復という。）／アーカイビング・システムのクライアント側部分およびサーバ側部分を概観レベルで示している。バックアップ／修復／アーカイビング・システムのクライアント側部分１００２は、複数のユーザ・デバイス、一般には「ＰＣ」（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）を含む。記載されている実施形態においては、バックアップ・サービス、修復サービス、およびアーカイビング・サービスは、バックアップ／修復／アーカイビング・システムのサーバ側部分によってクライアント・デバイスの単位で提供される。すなわち、バックアップ・サービス、修復サービス、およびアーカイビング・サービスは、パーソナル・コンピュータなどの物理的なハードウェア・デバイスへ提供される。代替実施形態においては、バックアップ・サービス、修復サービス、およびアーカイビング・サービスは、ハードウェア・デバイスの特定のユーザ・パーティションへなど、より細かいレベルの単位で提供することができる。
【００２８】
クライアント・デバイスは、インターネット・プロトコル１００６の上に実装される「ＳＳＬ」（ｓｅｃｕｒｅ  ｓｏｃｋｅｔ  ｌａｙｅｒ）接続を使用した特定の実施形態においては、安全な接続を介してバックアップ／修復／アーカイビング・システムのサーバ側部分１００４と通信する。バックアップ／修復／アーカイビング・システムのサーバ側部分１００４は、１つまたは複数のウェブ・サーバ１００８と、１つまたは複数の共有ディスク・サーバ１０１０と、１つまたは複数のジョブ・サーバ１０１２と、１つまたは複数のデータベース・サーバ１０１４と、１つまたは複数のアクティブディレクトリ・サーバ１０１６と、１つまたは複数の永久データストレージ・デバイス１０１８と、オペレーション・モニタ１０２０とを含む。１つまたは複数のウェブ・サーバ１００８は、直接クライアント・デバイス１００２と対話し、したがってこれらのウェブ・サーバは、ファイアウォール１０２２〜１０２４によって、それらのクライアント・デバイス、およびバックアップ／修復／アーカイビング・システムのサーバ側部分１００４内のその他のデバイスから隔離されている。
【００２９】
図１０に示されているバックアップ／修復／アーカイビング・システムの概観は、本発明によるバックアップ／修復／アーカイビング・システムの無数の可能な構成のうちの１つを示しているにすぎない。極端な一例としては、バックアップ／修復／アーカイビング・システムのサーバ側部分の全体を単一のサーバ・コンピュータ内に実装することができ、他方の極端な一例としては、複数のコンポーネントからなる複雑なサーバ側部分をローカルに、かつ地理的に分散した形で複製して、障害および災害に対するきわめて高いレベルの耐性と、高い可用性とを提供することができる。図１１は、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分の単一サーバの実装形態を概観レベルで示している。単一サーバの実装形態は、インターネット情報サーバ・アプリケーション１１０２、アクティブ・ディレクトリ１１０４、およびＳＱＬサーバ１１０６を含み、これらが一体となって、バックアップ／修復／アーカイビング・システムのサーバ側部分の機能を単一のサーバ・コンピュータ１１０８内に提供する。図１２は、本発明の代替実施形態に相当する複雑な複製されたバックアップ／修復／アーカイビング・システムを示している。図１２に示されている複数のコンポーネントからなる複製されたバックアップ／修復／アーカイビング・システムにおいては、第１のデータ・センタ１２０２は、ひとそろいのウェブ・サーバ１２０４、データベース・サーバ１２０６、アクティブディレクトリ・サーバ１２０８、および分散型ファイルシステムの方法を用いて実装されている永久データ・ストレージ設備１２１０を含み、この第１のデータ・センタ１２０２には、グローバル・ロード・バランサ１２１２およびローカル・ロード・バランサ１２１４を介してクライアント・コンピュータからインターネットを介してアクセスすることができる。ＳＱＬの複製１２１６、アクティブディレクトリの複製１２１７、および分散型ファイルサービスの複製１２１８を使用して、第１のデータ・センタ１２０２が第２のデータ・センタ１２２０において複製され、この第２のデータ・センタ１２２０は、第１のデータ・センタから地理的に分散させることができる。したがって、図１２に示されている実施形態においては、バックアップ／修復／アーカイビング・システムの、２つの別々の、複数のコンポーネントからなるサーバ側部分が共存して、障害および災害に対する耐性ならびに高い可用性を提供する。さらなる代替実施形態においては、複数のコンポーネントからなるサーバ側部分を、三重に、四重に、あるいはさらにいっそう高いレベルで重複して複製することができる。さらに、より高性能の実装形態においては、それぞれのサーバ側部分における永久データ・ストアそのものを丸ごと複製することもでき、あるいはＲＡＩＤ−５およびＲＡＩＤ−６のストレージ・システムにおいて見られるエラー・コードのコード化に基づく冗長性など、冗長性を導入する別のタイプの技術によって重複して保存することもできる。
【００３０】
図１３Ａ〜図１３Ｃは、図１０において概観レベルで示されているバックアップ／修復／アーカイビング・システム内の基本的な機能を示している。図１３Ａは、クライアント・デバイス（図１０の１００２）内の基本的な機能を示している。バックアップ／修復／アーカイビング・システムのクライアントデバイス部分は、３つの異なるプロセスを含む。第１のプロセスは、クライアント・デバイスの端末１３０６上に表示されるアイコン１３０４を通じたインタラクティブな呼び出しなど、さまざまなルーチン呼び出し方法のうちのいずれかを介してユーザによって呼び出されるユーザインターフェース・ルーチン１３０２として実施される。このユーザインターフェース・ルーチンは、基本的なユーザ管理サービスおよびユーザ構成サービスを提供し、これらのサービスによって、ユーザは、とりわけ、バックアップ／修復／アーカイビング・システムによって継続的におよび自動的にバックアップすべきクライアント・デバイス内に常駐しているファイルおよびその他のファイルに類するオブジェクトのリスト１３１２を含むローカルに保存されているカタログ１３１０を修正すること（１３０８）ができる。カタログ１３１０はさらに、それぞれのファイルごとにファイルの変更を検知する期間、改訂数の表示、あるいは保持すべき所与のファイルまたはファイルに類するオブジェクトのインスタンス、ファイルまたはファイルに類するオブジェクトに関してユーザが望む保護のレベルの表示、およびその他のそのようなパラメータなどの構成情報を含むことができる。
【００３１】
ユーザは、クライアントデバイスのディスプレイ・モニタ１３０６上に表示されるグラフィカルユーザ・インターフェースを通じてユーザインターフェース・ルーチン１３０２へさまざまなタイプのコマンドを発することができる。コマンドは、ファイルおよびファイルに類するオブジェクトをバックアップ・リストに追加すること、またはバックアップ・リストから削除すること、１つまたは複数の特定のファイルを特定の以前にバックアップされたインスタンスへ修復するためのコマンド、バックアップ／修復／アーカイビング・システム内に保存されている改訂履歴を切り捨てるためのコマンド、およびさまざまな代替実施形態におけるさまざまなさらなるコマンドを含む。
【００３２】
２つのさらなるプロセス１３１４および１３１６が、ウィンドウズ・サービスとしてクライアント・デバイス内で継続的に実行される。第１のウィンドウズサービス・プロセス１３１４は、バックアップ・オペレーションおよび修復オペレーションを実行する役割を果たす主要なクライアント側のサービス・プロセスである。第２の継続的に実行されるウィンドウズサービス・プロセス１３１６は、バックアップ／修復／アーカイビング・システムのサーバ側部分、ならびにバックアップ／修復／アーカイビング・システムの提携先とデータをやり取りするために「ＢＩＴＳ」（ｂａｃｋｇｒｏｕｎｄ  ｉｎｔｅｌｌｉｇｅｎｔ  ｔｒａｎｓｆｅｒ  ｓｅｒｖｉｃｅ）および「ＳＳＬ」（ｓｅｃｕｒｅ  ｓｏｃｋｅｔ  ｌａｙｅｒ）を採用する移送サービスである。ＢＩＴＳは、リモート・エンティティーとデータをやり取りするためにバックグラウンド・プロセスとして予備のネットワーク帯域幅および処理サイクルを使用する。
【００３３】
主要なクライアント側のプロセス１３１４は、カタログ１３１０内に保存されているデータによって指定されているようにバックアップ／修復／アーカイビング・システムによって継続的にバックアップされるファイル１３２０などのそれぞれのファイルまたはファイルに類するオブジェクトを定期的にチェックするモニタリング機能１３１８を含む。モニタリング・プロセス１３１８は、現時点のファイル・タイムスタンプと、以前に記録されたタイムスタンプとの比較または、その他のそのような情報に基づいて、最後の定期的なモニタリング・サイクル以降にファイルが変更されているかどうかを判定する。ファイルが変更されている場合には、バックアップ・ルーチン１３２２は、そのファイルそのもの１３２４と、ローカルに保存されている情報、またはバックアップ／修復／アーカイビング・システムのサーバ側部分から得られる情報のいずれかとを使用して、変更されたファイルと、そのファイルの前のインスタンスとの間におけるブロック差分を計算する。ブロック差分とは、ファイルのうちの変更されている部分、したがって永久に保存するためにバックアップ／修復／アーカイビング・システムのサーバ側部分へ伝送する必要がある部分を含んでいると判断されたΔブロックのセットである。バックアップ／修復／アーカイビング・システムのサーバ側部分によって現時点で保存されていないと分かっているΔブロック、またはΔブロックのサブセットは、アップロード・ファイル１３２６に、ならびにローカル・キャッシュ１３２８に追加される。アップロード・ファイル１３２６は、アップロード・ファイルの待ち行列１３２８に入れられ、これらのアップロード・ファイルは、移送サービス・プロセス１３１６によってバックアップ／修復／アーカイビング・システムのサーバ側部分へ１つずつ移送される。ユーザが、ユーザインターフェース・ルーチン１３０２を通じて修復オペレーションを要求すると、主要なクライアント側のプロセス１３１４内の修復プロセス１３３０が呼び出されて、ファイルのうちで、ローカル・キャッシュ１３２８およびファイル１３３２の任意の既存の部分からローカルに得ることができるブロックを割り出し、移送サービス・プロセス１３１６を介してバックアップ／修復／アーカイビング・システムのサーバ側部分からその他の必要とされるすべてのブロックを検索し、そしてそれらの検索されたブロックと、ローカルに利用可能なブロックとを使用して、ファイル１３３２の修復されたバージョンを組み立てる。
【００３４】
図１３Ａに示されているバックアップ／修復／アーカイビング・システムのクライアント側部分は、多くの異なる可能な実装形態のうちの１つにすぎない。バックアップ機能、修復機能、カタログ機能、キャッシュ機能、移送機能、およびユーザインターフェース機能を、より少ないモジュールおよびプロセスへと統合することもでき、あるいは別の方法としては、さらにいっそう多い数の異なる機能モジュール、機能プロセス、および機能サービスへと分割することもできる。
【００３５】
図１３Ｂ〜図１３Ｃは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分（図１０の１００４）の機能的なオペレーションを示している。図１３Ｂに示されているように、１つまたは複数のウェブ・サーバ１００８は、それぞれルーティングマネージャー機能１３４０を含み、このルーティングマネージャー機能１３４０は、ＳＳＬ層１３４２およびインターネットなどの通信メディアを介して、バックアップ／修復／アーカイビング・システムがバックアップ・サービス、修復サービス、およびアーカイビング・サービスを提供するクライアント・デバイスのそれぞれの移送サービス・プロセス（図１３Ａの１３１６）と通信する。ルーティング・マネージャー１３４０は、１つまたは複数のデータベース・サーバ１０１４のうちの１つにアクセスして、クライアント・デバイスがウェブ・サーバ１００８へのＳＳＬ接続を開設した後にそのクライアント・デバイスによって提供された信用証明書を、サーバ側部分のアクティブディレクトリ・サーバ１０４によって保存されている信用証明書と照合する。１つまたは複数のデータベース・サーバ１０１４は、メタデータ・マネージャー１３４４を実行し、このメタデータ・マネージャー１３４４は、グローバル・カタログ１３４６、提携先および提携先の暗号化キー１３４８に関して保存されている情報、クライアント・デバイスに関して保存されている情報、クライアント・デバイスに関連付けられている信用証明書、およびクライアント・デバイスに関するエスクローされたファイル暗号化キー１３５０、ならびにその他の情報に相当するさまざまなデータベース・テーブルまたはファイルを管理し、そうしたデータベース・テーブルまたはファイルから情報を検索し、そうしたデータベース・テーブルまたはファイル内に情報を保存する。ルーティング・マネージャーは、接続しているクライアント・デバイスを確認すると、クライアント・デバイスからアップロード・ファイルを受け入れて、それらのアップロード・ファイルを、１つまたは複数の共有不揮発性ストレージ・サーバ１０１０によって提供される共有不揮発性ストレージ１３５２内の待ち行列に入れることができる。さらにルーティング・マネージャーは、受け取ったアップロード・ファイルに関する情報を、１つまたは複数のデータベース・サーバ１０１４のうちの１つの上で実行されているメタデータ・マネージャー１３４４へ伝送し、それによってメタデータ・マネージャーは、データベース内に保存されて１つまたは複数のデータベース・サーバのメタデータ・マネージャーによって管理されているジョブ待ち行列１３５４内へジョブ要求を入力することができる。同様に、ダウンロード・ファイル１３５６などのダウンロード・ファイルは、ルーティング・マネージャー１３４０によってクライアント・デバイスへ移送するために共有不揮発性ストレージ１３５２内のダウンロードファイル待ち行列内に保存することができる。
【００３６】
クライアント・デバイスとルーティング・マネージャーとの間において転送されるデータの大部分は、バックアップ・データに相当するアップロード・ファイルと、クライアント・デバイスによって特定のファイルまたはファイルに類するオブジェクトを修復するために必要とされる暗号化されたデータ・ブロックに相当するダウンロード・ファイルとから構成されるが、ルーティング・マネージャー１３４０は、クライアント・デバイスのためのカタログ・データに対する更新を含むコマンド、およびその他のそのような構成コマンドおよび管理コマンドなど、さらなるコマンドを受け取ることもできる。多くの場合、これらのコマンドは、ルーティング・マネージャーによって、データベース・サーバ上で実行されているメタデータ・マネージャー１３４４へ直接転送され、メタデータ・マネージャーは、これらのコマンドをすぐに実行してルーティング・マネージャーに応答を返すか、またはこれらのコマンドを後で処理するためにジョブ待ち行列内に入れる。１つまたは複数のアクティブディレクトリ・サーバ１０１６は、分散型ネットワーク・ドメイン内でネットワーク・オブジェクトを管理する役割を果たす。コンポーネント・システム、データ・リソース、およびその他のそのようなオブジェクトによって実行されるサービスおよびアプリケーションを含む、バックアップ／修復／アーカイビング・システムのサーバ側部分のさまざまなコンポーネント・システムは、１つまたは複数のアクティブディレクトリ・サーバによって作成されて管理されるグローバル・ネーム・スペースを通じてアドレス可能である。
【００３７】
図１３Ｃに示されているように、１つまたは複数のジョブ・サーバ１０１２のそれぞれの上で実行されるワークホース・ルーチン１３６０は、バックアップ・オペレーションおよび修復オペレーションを実行する役割を果たす。ワークホース・ルーチン１３６０は、データベース・サーバ１０１４の集まりの上に保存されてそれらの集まりによって管理されているジョブ待ち行列１３５４から連続したジョブを外し、ジョブ待ち行列から外されたそれらの項目によって表されているタスクを実行する。バックアップ・タスクのために、ワークホース・ルーチン１３６０は、特定のジョブ待ち行列項目１３６４に対応するアップロード・ファイル１３６２を検索し、メタデータ・マネージャー１３４４によって提供されるメタ・データを使用して、そのアップロード・ファイルを一連のファイル署名および暗号化されたデータ・ブロックへと分解し、ファイル署名を、メタデータ・マネージャー１３４４を介してデータベース１０１４内に保存し、そのファイル署名に関連付けられている暗号化されたデータ・ブロックを、１つまたは複数の永久データ・サーバ１０１８によって提供される永久データベース内に保存する。同様に、ワークホース・ルーチン１３６０は、ジョブ待ち行列１３５４から修復ジョブを外すと、必要とされる暗号化されたデータ・ブロック、保存されているファイル署名、およびその他の情報を、永久データ・ストア１０１８およびデータベース１０１４から検索し、それらの情報をダウンロード・ファイル１３６６へと組み立て、そのダウンロード・ファイルを、ルーティング・マネージャー１３４０によってクライアント・デバイスへ最終的に転送するために共有不揮発性ストレージ１３５２内のダウンロード・ファイルの待ち行列内へ入れる。
【００３８】
したがって、図１０へ戻ると、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムは、バックアップ／修復／アーカイビング・システムのサーバ側部分１００４によってバックアップ・サービス、修復サービス、およびアーカイビング・サービスを提供される潜在的に非常に多数のクライアント・デバイス１００２を含む。バックアップ／修復／アーカイビング・システムのサーバ側部分は、図１０に示されているように、複数の専用のサーバとコンピュータ・システムとを含む単一のデータ・センタにおける単一のサーバ・コンピュータ内に実装することもでき、あるいは複数のコンポーネントからなる複数の複製されたデータ・センタとして実装することもできる。バックアップ／修復／アーカイビング・システムのサーバ側部分は、クライアント・デバイスへのウェブ・インターフェースを含み、このウェブ・インターフェースは、クライアント・デバイスからの要求を受信する役割と、それらの要求を実行するためにバックアップ／修復／アーカイビング・システムのサーバ側の適切なコンポーネントへ回送する役割とを果たし、バックアップ／修復／アーカイビング・システムのサーバ側部分からクライアント・デバイスへ応答およびデータを返送する。バックアップ／修復／アーカイビング・システムのサーバ側部分は、アップロード・ファイルを一時的に保存してジョブ・サーバ１０１２へ通信するために、およびダウンロード・ファイルをジョブ・サーバ１０１２から一時的に保存してウェブ・インターフェース１００８へ通信するために使用される共有不揮発性ストレージ・スペース１０１０を含む。バックアップ／修復／アーカイビング・システムのサーバ側のデータベース部分１０１４は、クライアント・デバイスや提携先の状態を追跡把握するために必要とされるメタデータと、バックアップ／修復／アーカイビング・システムによって実行する必要がある現在のタスクとを保存し、その一方で、バックアップ／修復／アーカイビング・システムのサーバ側の永久データ・ストア部分１０１８は、クライアント・デバイスによってファイルおよびファイルに類するオブジェクトを修復するために必要とされる可能性がある暗号化されたデータ・ブロックを保存する。
【００３９】
図１４Ａ〜図１４Ｄは、対応するファイル署名および暗号化されたデータ・ブロックを作成するための、主要なサービス・プロセス（図１３Ａの１３１４）によるファイルおよびファイルに類するオブジェクトの処理を示している。図１４Ａに示されているように、ファイルまたはファイルに類するオブジェクト１４０２は、バイト、ワード、ロング・ワード、あるいはその他の基本的なデータ単位の順序付けられたシーケンスとみなすことができる。クライアント・デバイス上の主要なサービス・プロセスによって実行される第１のステップにおいては、クライアント・デバイス１４０２内に常駐しているファイルまたはファイルに類するオブジェクトが、ナチュラル・ブロックへと論理的に分割される。ナチュラル・ブロックの境界は、図１４Ａにおいては、縦の破線１４０４などの縦の破線によって示されている。ナチュラル・ブロックは、可変長を有しており、ナチュラル・ブロックの境界は、時と共にファイルに対して行われる段階的な変更に関してお互いから比較的独立することができるファイルの部分どうしを隔てるファイル内の境界に対応する。すなわち、あるファイルが、時と共に編集オペレーションおよびその他のファイル・オペレーションによって変更されるにつれて、ブロック内における複数の変更が、ブロック間にわたる複数の変更よりも高い頻度で発生するはずであり、それによって、比較的同時に発生する変更のセットが、ナチュラル・ブロック内に限定される。しかし、可変長のブロックに分割するこの方法は、ファイルまたはファイルに類するオブジェクト内におけるナチュラル・ブロックを最もよく推定するということに他ならず、ファイルの変更に関して独立したブロックへとファイルを正確に分割することを保証するものではない。
【００４０】
次のステップにおいては、一般に比較的小さなナチュラル・ブロックが順次集まって、固定長のブロック１４０８などの連続したほぼ固定長のブロックが形成される。ほぼ固定長のブロック１４０８は、たとえば、第１のステップにおいて識別された最初の４つのナチュラル・ブロック１４０６および１４１０〜１４１２を含む。次なる一式のナチュラル・ブロック１４１４〜１４１７がまとまって、次なる固定長のブロック１４１０となる。したがって、ファイルを処理する方法の最初の２つのステップの結果として、１つのファイルまたはファイルに類するオブジェクトは、段階的な変更に関してお互いから適度に独立していると推定される一式の順次並べられたほぼ固定長のブロックへと分割される。これらのほぼ固定長のブロックは、それぞれのほぼ固定長のブロックにまとめられるナチュラル・ブロックの長さの合計における不均衡に起因して、わずかに異なる長さとすることもできる。本発明の一実施形態においては、ほぼ固定長のブロックは、６４Ｋバイトに近い長さを有する。
【００４１】
図１４Ｂに示されているように、それぞれのほぼ固定長のブロックに関して、ブロック・ハッシュが計算される。本発明の一実施形態においては、クライアントデバイス・ファイル暗号化キー１４２０、圧縮アルゴリズム識別子１４２２、および暗号化アルゴリズム識別子１４２４が、ほぼ固定長のブロック１４２６内のデータと結合され、ＭＤ５ハッシュ関数１４２８などの暗号化ハッシュ関数によって処理されて、ブロック・ハッシュ１４３０が作成される。ファイル暗号化キー、圧縮アルゴリズムＩＤ、および暗号化アルゴリズムＩＤを含めることによって確実に、もしもファイル暗号化キー、圧縮アルゴリズム、あるいは暗号化アルゴリズムがクライアントによって変更された場合に、新たな暗号化キーおよび／または圧縮アルゴリズムによって暗号化および圧縮されたブロックを、以前に使用されていた暗号化キー、暗号化アルゴリズム、および／または圧縮アルゴリズムによって暗号化および／または圧縮されたブロックから容易に見分けることができるようになる。さらに、ファイル暗号化キーを含めることによって、バックアップ／修復／アーカイビング・システムのサーバ側部分を対象とした特定のタイプのセキュリティー攻撃を鈍らせることができる。ブロック・ハッシュ１４３０は、元のほぼ固定長のブロック１４２６の数値的な要約、すなわちダイジェストと考えることができる。一般には、ブロック・ハッシュは、たとえば２５６バイト、５１２バイト、１０２４バイト、あるいは２の別の累乗のバイトの固定長を有する。暗号化ハッシュ関数を使用することによって確実に、任意のクライアント・デバイス上に存在する任意のファイルまたはファイルに類するオブジェクトからそのクライアント・デバイスによって作成された２つの異なるほぼ固定長のブロックが同じブロック・ハッシュを有する可能性は、非常に小さくなる。すなわちブロック・ハッシュは、バックアップ／修復／アーカイビング・システムの全体を通じてほぼ固定長のブロックの一意の識別子であるということが、きわめて高い確率で保証される。
【００４２】
図１４Ｃに示されているように、それぞれのほぼ固定長のブロックは、そのブロックに対応するブロック・ハッシュの計算に続いて、圧縮アルゴリズム１４３２によって圧縮され、次いでクライアントのファイル暗号化キーを使用して暗号化アルゴリズム１４３４によって暗号化される。これらのステップは、以前に計算されたブロック・ハッシュ１４３０によって識別された元のほぼ固定長のデータ・ブロック１４２６に対応する一般により小さな暗号化されたデータ・ブロック１４３６を作成する。
【００４３】
図１４Ｄは、クライアント・デバイスの主要なサービス・プロセスによるファイル署名の計算を示している。図１４Ａ〜図１４Ｃを参照して上述したように、ファイルまたはファイルに類するオブジェクトはまず、ほぼ固定長のブロック１４４０〜１４４６のシーケンスへと分割される。図１４Ｂに示されているステップが、図１４Ｄにおける矢印１４４８などの矢印によって表されているように、それぞれのほぼ固定長のブロックごとに実行され、それぞれのほぼ固定長のブロックごとにブロック・ハッシュが作成される。このブロック・ハッシュは、ほぼ固定長のブロックの長さと共に、最初のほぼ固定長のブロック１４４０に対応するブロック記述子１４５０などのブロック記述子を構成する。ブロック記述子の順序付けられたシーケンスが、ファイルまたはファイル・オブジェクトの対応するほぼ固定長のブロックに対して構築され、そのブロック記述子の順序付けられたシーケンスにヘッダが添付されて、ファイル署名１４５２が形成される。ヘッダ１４５４は、署名バージョン番号を含むことができ、それによって、ファイル署名の内容および／またはフォーマットを時と共に変更することができ、それぞれのファイル署名は、ヘッダ１４５４内に含まれているバージョン識別子の結果として、自らのバージョンを表す。さらにヘッダは、署名内のブロック記述子の数、およびさらなる情報を含むことができる。ファイル署名は、ヘッダとブロック記述子とをコード化しているバイトのシーケンスやストリームによって表すことができ、あるいは、さらに複雑なデータ構造内にコード化することもできる。
【００４４】
したがって、バックアップ／修復／アーカイビング・システムの観点から見れば、バックアップ／修復／アーカイビング・システムによって継続的にモニタされバックアップされるクライアント・デバイス内に保存されているファイルまたはファイルに類するオブジェクトの特定のインスタンスは、ファイル署名／データブロックシーケンスのペアであると考えられる。ファイルまたはファイルに類するオブジェクトは、完全に再構築することができ、ファイル署名と、ファイル・データを含むほぼ固定長のブロックとによって完全に指定される。クライアントからバックアップ／修復／アーカイビング・システムのサーバ側部分へ伝送される平文の形式だがほぼ固定長のあらゆるブロックが暗号化されている場合、したがって外部のいかなるエンティティーも、それらのブロック内に含まれているデータにアクセスすることができない場合、クライアント内においては、ほぼ固定長のブロックの順序付けられたシーケンスを利用することができる。
【００４５】
図１５Ａ〜図１５Ｅは、本発明の実施形態によるファイル・インスタンシングを示している。図１５Ａは、ファイルの最初の基礎レベルのインスタンスを示している。上述のように、ファイルまたはファイルに類するオブジェクトは、クライアント・デバイス上の主要なサービス・プロセスによって処理されて、署名１５０２と、ほぼ固定長のブロック１５０４のシーケンスとが作成され、ほぼ固定長のブロック１５０４は、バックアップ／修復／アーカイビング・システムのサーバ側部分へ伝送されてそのサーバ側部分の中に保存されるために、圧縮され暗号化される。したがって、ファイル署名／ほぼ固定長のブロックシーケンスのペアは、そのファイル署名およびほぼ固定長のブロックが作成される元となったファイルまたはファイルに類するオブジェクトの内容を完全に指定する。はじめに、ファイルに対する変更を時と共に継続的にモニタしてバックアップするために、クライアントデバイスのユーザによってファイルが特定される。ファイルに対する変更が検知されて、ファイルがバックアップされるたびに、そのファイルの新たなインスタンス、すなわちバージョンが、バックアップ／修復／アーカイビング・システムの観点から作成される。ファイルが継続的なバックアップ用として最初に指定されると、図１５Ａに示されているように、ファイル署名／暗号化されたほぼ固定長のブロックシーケンスのペアが作成され、バックアップ／修復／アーカイビング・システムのサーバ側部分へ伝送されて、そのファイルの基礎レベルのインスタンスを表す。
【００４６】
図１５Ｂは、図１５Ａに示されているファイル署名／暗号化されたほぼ固定長のブロックシーケンスのペアによって記述されているファイルの最初のバックアップを示している。ファイルが変更されたり編集されたりしたことが検知されると、新たなファイル署名１５０６が、そのファイルの現在の内容から作成される。この新たなファイル署名は、前のファイル署名１５０２とブロックで位置合わせされ、図１５Ｂにおける矢印１５０８などの水平な両方向の矢印によって示されているように、対応するブロックどうしが比較される。対応するほぼ固定長のブロックに関して計算されたブロック・ハッシュが異なる場合には、その対応するほぼ固定長のブロックは、元のファイルに対して変更されている。図１５Ｂにおいては、最初のファイル署名１５０２と、新たなファイル署名１５０６との対応するブロック記述子どうしを比較することによって、ブロック記述子１５１０〜１５１２によって表されているほぼ固定長のブロックが変更されていると判断されている。これらのファイル記述子に関連付けられているほぼ固定長のブロック１５１４〜１５１６が集まって、修正されたブロック、すなわちΔブロックのリストを構成する。図１５Ｂを参照して論じたファイル署名の比較は、インテリジェントな比較であり、この比較によって、ファイルの最初のインスタンス内のブロックと、修正されたファイル内の対応するブロックとの間における対応を崩さずに、新たなブロックを元のブロック・シーケンス内に挿入することができ、元のブロックを削除することができ、ファイルに対するその他のそのような大規模な修正を行うことができる。すなわち、２つのファイル署名を対応付けて配置することができ、また挿入および削除の双方を検知することができ、これによって、一方のファイル署名内の削除および／または追加に続くブロック記述子は、他方の署名内のブロック記述子との対応を維持する。これは、遺伝子座に対応するＤＮＡのシーケンスが、サブシーケンスの挿入および削除にもかかわらず、お互いに対して位置合わせできることによく似ている。
【００４７】
したがって、図１５Ｂに示されているように、ファイルの修正や変更を検知したことに続いて、新たなファイル署名と、Δブロックのセットとを作成することができ、それによって、元のファイル署名１５０２と、ほぼ固定長のブロック１５０４の順序付けられたシーケンスとの組合せが、新たに作成されたファイル署名１５０６およびΔブロック１５１４〜１５１６と共に、元のファイル、および元のファイルの変更や修正を施された次なるバージョンの双方を完全に指定する。図１５Ｃに示されているように、元のファイル、および元のファイルの修正されたバージョンの双方のデータ内容はそれぞれ、そのファイルのインスタンス０およびインスタンス１とみなされ、ほぼ固定長のデータ・ブロック１５０４の元の順序付けられたシーケンス、ならびにΔブロック１５１８の一般により小さなセットを含む。元のブロックおよびΔブロックが、バックアップ／修復／アーカイビング・システムのサーバ側部分の永久ストア内に保存されるならば、そして元のファイル署名１５０２、およびより新しく作成された第２のファイル署名１５０６の双方が、バックアップ／修復／アーカイビング・システムのサーバ側部分のデータベース部分の中に保存されるならば、元のファイル、またはその後に修正されたファイルのいずれかを、保存されているデータ・ブロック、Δブロック、およびファイル署名から完全に修復することができる。
【００４８】
図１５Ｄに示されているように、ファイルのそれぞれの検知された修正、Δブロックの判定、および永久データ・ストア内へのΔブロックの保存を利用して、ファイルの新たなインスタンスが作成される。図１５Ｄにおいては、元のファイルがバックアップされた後に、そのファイルの６つのインスタンスが作成されている。既に述べたように、元のファイルは、ほぼ固定長のブロック１５０４の列によって表されており、それぞれの後続のインスタンスは、Δブロック１５１８および１５２３の列によって表されている。元のファイル・ブロック、およびそれぞれのインスタンスごとにΔブロックのみを保存することによって、ファイルのインスタンスのすべてを表すために保存する必要があるデータ・ブロックの数は、それぞれのインスタンスの全体を保存する場合よりも、はるかに少なくなる。その上、以降でさらに詳しく論じるように、データ・ブロックは、バックアップ／修復／アーカイビング・システムのサーバ側部分の永久ストア内に保存されて、それらのそれぞれのブロック・ハッシュによってのみインデックス付けされるため、１つのクライアント・デバイスの複数のファイル内において、あるいは複数のクライアント・デバイスにわたって分散されている複数のファイル内において現れるデータ・ブロックは、永久ストア内に１回保存するだけでよい。すなわち、特定のブロックハッシュ値によって識別されるいかなる特定のデータ・ブロックについても、その特定のデータ・ブロックが、バックアップ／修復／アーカイビング・システムによって継続的にモニタされバックアップされているさまざまなクライアント・デバイスにわたって分散しているさまざまなファイル内において何回現れるかにかかわらず、その特定のデータ・ブロックの単一のインスタンスのみを永久ストア内に保存すればよい。図１５Ｄに示されているように、１つのファイルのさまざまなインスタンスのすべてを表すために永久ストア内に保存される元のファイル・ブロックおよびΔブロックと共に、そのファイルのそれぞれの連続したインスタンスごとに作成されるファイル署名の完全なセットが、バックアップ／修復／アーカイビング・システムのサーバ側部分のデータベース部分の中に保持される。本発明の特定の実施形態においては、差分保存を使用してデータ・ブロックが保存されるのと同様に、差分保存技術を使用してファイル署名を保存することができる。すなわち、最初のファイル署名については、その全体を保存することができ、そして、次なるインスタンスと、前に保存されたインスタンスとに関して計算されたファイル署名どうしの間における差分のみが保存される。
【００４９】
図１６は、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムによってモニタされて継続的にバックアップされるクライアント・デバイス上のそれぞれのファイルごとにバックアップ／修復／アーカイビング・システムのサーバ側部分およびクライアント側部分に保存される情報をまとめている。図１６に示されているように、バックアップ／修復／アーカイビング・システムのサーバ側部分においては、ファイルに関するファイル署名履歴１６０２が、バックアップ／修復／アーカイビング・システムのサーバ側部分のデータベース部分の中に、図１５Ｅに論理的に示されているように保存される。さらに、図１５Ｄに示されているようなファイルのデータブロック履歴の圧縮され暗号化されたバージョン１６０４が、バックアップ／修復／アーカイビング・システムのサーバ側部分の永久ストア部分の中に保存される。クライアント側においては、モニタされバックアップされるそれぞれのファイルごとに、そのファイルに関して最も新しく作成されたファイル署名１６０６が保存されることが好ましい。最も新しく作成された直近のファイル署名のローカルなコピーを保持することによって、そのファイルの次なるインスタンスと、そのファイルの最も新しく保存されたインスタンスとの間における差分を、保存されているファイル署名１６０６、およびそのファイルの新たなインスタンスに関して作成された新たなファイル署名のみから計算することができ、バックアップ／修復／アーカイビング・システムのサーバ側部分に保存されている情報にアクセスする必要はない。さらに、クライアント側のデータストレージ・リソースに余裕があるため、署名キャッシュ１６０８およびデータブロック・キャッシュ１６１０をクライアント・デバイス上に保持して、修復オペレーションを容易にすることができる。最良の場合、ローカルに保存されているファイル署名およびデータ・ブロックのみを使用して、ファイルを前のバージョンすなわちインスタンスへ修復することができ、バックアップ／修復／アーカイビング・システムのサーバ側部分からファイル署名およびデータ・ブロックを検索する必要はない。しかし、もしも署名キャッシュ１６０８、データ・ブロック・キャッシュ１６１０、および最も新しく作成されたファイル署名１６０６までもが、クライアント・デバイスから削除された場合には、まずバックアップ／修復／アーカイビング・システムのサーバ側部分からの必要とされるファイル署名およびデータ・ブロックにアクセスすることによって、ファイルのそれまでに作成されてバックアップされたいかなるインスタンスも、クライアント・デバイス上で修復することができる。
【００５０】
図１７Ａ〜図１７Ｂは、本発明の実施形態に従ってファイルに関して保存されているファイル署名履歴およびデータブロック履歴からファイルの特定のインスタンスを構築するための論理演算を示している。図１７Ａは、図１５Ｅを参照して前述したようなファイルに関するファイル署名履歴を示している。ファイルの完全な最新のインスタンスを構築するためには、ファイル署名履歴内のそれぞれのブロックごとの対応するブロック記述子を、隣接しているファイル署名内のブロック・ハッシュどうしの間における差分が検知されるまで横断する必要がある。たとえば、ファイルの第６のインスタンス内の第１のデータ・ブロック（ブロック記述子１７０２によって表されている）に関しては、そのブロックに関するブロック・ハッシュが異なる２つの隣接するファイル署名を検知するために、ファイル署名履歴内のそのブロックに対応するブロック記述子が、最も新しいものから最も古いものまで横断される。図１７Ａに示されているように、ファイルの第５のインスタンス１７０８および第４のインスタンス１７１０に対応するファイル署名の対応するブロック記述子１７０４および１７０６内に保存されているブロック・ハッシュどうしの比較が、異なるものとして検知され、ファイルの第５のインスタンスに関して計算された差分ブロックが、ファイルの第６のインスタンス内に含まれるべきデータ・ブロックのバージョンであることが示される。図１７Ｂは、図１５Ｄを参照して上述したようなファイルに関するデータブロック履歴を示している。図１７Ｂにおいて見て取れるように、ファイル１７１２の第１のデータ・ブロックに対応する最も新しく保存されたデータ・ブロックは、ファイルの第５のインスタンスのバックアップ中に検知されて保存された差分ブロックである。別の例としては、ファイルの最後のブロックに関するブロック・ハッシュのすべてと、ファイル署名のすべてとがまったく同じであり、元のファイルが保存されてからそのファイルの最後のブロックが変更されておらず、したがって元のデータ・ブロックは、インスタンス６内に含まれるべきデータ・ブロックであるということが示される。
【００５１】
図１７Ａ〜図１７Ｂは、ファイルに関するファイル署名履歴およびデータブロック履歴から所与のインスタンスを論理的に再構築することを示すように意図されている。しかし、実際的な観点から見れば、ファイルの特定のインスタンスは、そのインスタンスに対応するファイル署名、およびデータ・ブロック・ストアのみを使用して完全に修復することができる。これは、ファイル署名内のそれぞれのブロック記述子が、ファイル内の対応するデータブロック位置において現れるデータ・ブロックを一意に指定するブロック・ハッシュを含むためである。
【００５２】
図１８Ａ〜図１８Ｂは、本発明の実施形態によるバージョン履歴の切り捨てを示している。図１８Ａは、図１５Ｄを参照して上述したブロック履歴を示している。ストレージ・スペースを節約するために、バックアップ／修復／アーカイビング・システムは、ファイルの最新のインスタンスのうちの数個のみを保存することを選択することができる場合がありうる。たとえば、図１８Ａに示されているように、バックアップ／修復／アーカイビング・システムは、ファイルに関するインスタンス６、５、４および３のみを保存して、インスタンス２、１、および０に関するファイル署名および不要なブロックを削除することを選択することができる。概念的には、インスタンス履歴を切り捨てること、すなわち複数の最も古く作成されたインスタンスを除去することは、図１８Ａにおける破線１８０２によって表されているように、最も古く作成されたインスタンスを選択し直して、それ以前のインスタンスに関する保存されているファイル署名、ならびにそれ以前のインスタンスに関する不要なデータ・ブロックを除去することと考えることができる。図１８Ａにおいては、不要なデータ・ブロックは、「×」記号１８０４などの「×」記号を用いて示されている。ファイルの第３のインスタンスのデータを表すデータ・ブロックは、白丸１８０６などの白丸を用いて示されている。したがって、ファイル履歴を切り捨てるために、インスタンス２、１、および０に対応するファイル署名が除去され、「×」記号を用いて図１８Ａに示されているデータ・ブロックを永久ストアから削除することができる。図１８Ｂは、図１８Ａを参照して論じたバージョンの切り捨てに続くデータブロック履歴を示している。図１５Ｂに示されているように、それまで「インスタンス３」と呼ばれていたインスタンスが、今度は「インスタンス０」１８１０と呼ばれ、インスタンス３の以前に事後変更されたそれまでのインスタンスからのデータ・ブロックが除去されている。したがってインスタンス履歴は、バックアップ／修復／アーカイビング・システムのサーバ側部分だけで切り捨てることができ、元のファイルを再構築して、除去されることになる最も新しく作成されたインスタンスまでの連続したインスタンス（最も新しく作成されたインスタンスを含む）を作成する必要はない。
【００５３】
図１９Ａ〜図１９Ｂは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システム内のセキュリティー関連のエンティティーおよびオペレーションを示している。これらのエンティティーおよびオペレーションについては、バックアップ／修復／アーカイビング・システムのクライアント側、サーバ側、および提携先側の部分に関連して論じる。これらのエンティティーおよびオペレーションについて説明する際には、単一のクライアント・デバイス１９０２、サーバ側部分１９０４、および提携先１９０６について考える。クライアント、提携先、およびサーバは、安全な接続１９０８〜１９１０を介して相互に通信する。本発明の一実施形態においては、提携先／サーバの通信は、二重に認証されたＳＳＬ接続を通じて行われる。クライアント／提携先の通信は、片側のＳＳＬの安全な接続１９０８を通じて行われ、提携先は、クライアントのために第三者の認証サービスによって認証されたＳＳＬ証明書を提供する。クライアント／サーバの最初の通信中には、一重に認証されたＳＳＬ接続１９１０が採用される。その後に、そのＳＳＬ接続は、それぞれのクライアントによるサーバへの要求に応じた信用証明書の伝送によって補強される。
【００５４】
提携先１９０６は、クライアントがサービスを契約する際に経由するサーバ１９０４から独立したエンティティーである。提携先はまた、以降で論じるように、全体的なセキュリティー戦略の非常に重要なコンポーネントである。提携先は、提携先秘密キー／提携先公開キーの暗号化キー・ペアを作成し、提携先秘密キー１９１２を提携先のシステム上に安全に保持し、提携先公開キー１９１４をバックアップ／修復／アーカイビング・システムのサーバ側部分へ提供し、次いで提携先公開キー１９１４は、サーバによってクライアントへ提供される。提携先はまた、クライアントを識別する保存されたデバイスＩＤ  １９１６を含む。クライアントも、このデバイスＩＤを保存する。このデバイスＩＤは、はじめにサーバ１９０４上で作成され、そしてサーバ１９０４内に保存される。サーバは、クライアントのために信用証明書１９１８を作成し、その後のクライアント／サーバの通信を保護するためにそれらの信用証明書をクライアントへ提供する。クライアントは、自分だけが知っているファイル暗号化キー１９２０を作成して使用する。このファイル暗号化キーを使用して、データ・ブロックが暗号化され、それらのデータ・ブロックは、サーバ１９０４へ伝送され、そしてサーバ１９０４によって保存される。クライアントはまた、クライアント暗号化キー１９２２を作成して保存し、このクライアント暗号化キー１９２２は、二重に暗号化された形式１９２４でサーバ内に保存する目的でクライアントのファイル暗号化キー１９２０を二重に暗号化するために提携先公開キー１９１２と共に使用される。
【００５５】
図１９Ｂは、ファイル暗号化キーの使用を示している。ファイル暗号化キー１９２０をクライアントによって使用して、それぞれのデータ・ブロック１９３０が暗号化され、このデータ・ブロック１９３０は、サーバ１９０４へ伝送され、そしてサーバ１９０４によって保存される。同様にクライアントは、サーバによってクライアントへ返されてクライアントのファイル・インスタンスを修復する目的で使用されるデータ・ブロックを復号するためにファイル暗号化キー１９２０を採用する。ファイル暗号化キーは、クライアントによって作成され、そのクライアントしかアクセスすることができないため、バックアップ・オペレーションおよび修復オペレーションの一環としてクライアント・デバイスからリモート・エンティティーへ伝送されるファイル・データはリモート・デバイスによってアクセスすることはできない。ファイル暗号化キーは、サーバ１９０４内でエスクローされている（１９２４）が、サーバは、このファイル暗号化キーにアクセスすることはできない。というのも、このファイル暗号化キーそのものは、クライアントだけが知っているクライアント暗号化キー１９２２、および提携先公開暗号化キー１９１２の双方によって暗号化されているためである。クライアントは、提携先が、サーバ上でエスクローされている二重に暗号化されたファイル暗号化キーを検索し、暗号化の第１の層を復号して、クライアント暗号化キーによって暗号化されているファイル暗号化キーをそのクライアント・デバイスへ返すよう要求することによって、ファイル暗号化キーを取り戻すことができる。このことによって、サーバは、クライアント・データまたはクライアントのファイル暗号化キーにアクセスすることは絶対にできず、提携先は、ファイル暗号化キーにもクライアント・データにもアクセスすることは絶対にできない。クライアントがファイル暗号化キーを紛失しても、そのことは、そのクライアントにとって致命傷にはならない。というのも、そのファイル暗号化キーは、サーバ１９０４内にエスクローされているためである。
【００５６】
図１９Ｃは、クライアント・デバイスがファイル暗号化キーを不注意に削除したり紛失したりした場合のクライアントによるファイル暗号化キーの検索を示している。ファイル暗号化キーがなければ、クライアントは、サーバによってクライアントへ返された暗号化されているデータ・ブロックを復号することができない。しかし、クライアントのファイル暗号化キーは、サーバ１９０４上で二重に暗号化された形式１９２４でエスクローされている。したがって、ファイル暗号化キーを検索するために、クライアントは、ファイル暗号化キーを検索するための要求１９３６を提携先１９０６へ送信し、次いで提携先は、その要求をサーバ１９０４へ転送する。サーバは、二重に暗号化されたファイル暗号化キー１９２４を提携先へ返し、提携先は、第１のレベルの暗号化を復号して、クライアントのクライアント暗号化キーによって一重に暗号化されているファイル暗号化キー１９３８を作成する。この一重に暗号化されているファイル暗号化キー１９３８は、クライアント１９０２へ返され、クライアント１９０２は、クライアント暗号化キーを用いてそのファイル暗号化キーを復号して、平文形式のファイル暗号化キー１９４０を再作成する。
【００５７】
図１９Ｄは、クライアントの信用証明書によって容易になるクライアント・デバイスとサーバとの間における安全な通信を示している。サーバが、現時点で変更されているクライアント・ファイルをバックアップするためにアップロード・ファイルを処理することなど、サーバからのサービスを要求する際に、クライアントは、サーバによって作成されてクライアントの初期設定中にクライアント・コンピュータへ提供されるユーザ名およびパスワードなど、信用証明書１９１８と共にそのクライアントを表すデバイスＩＤ  １９１６をその要求内に含める。サーバは、その要求を受信すると、その要求と共に含まれているデバイスＩＤおよび信用証明書を、バックアップ／修復／アーカイビング・システムのサーバ側部分のアクティブディレクトリ部分の中に保存されているデバイスＩＤ  １９１６および信用証明書と照合することによって、その要求が有効なクライアントから受信されたものであることを確認することができる。したがって、デバイスＩＤおよび信用証明書によって、サーバは、要求を、特定のクライアントから受信されたものとして識別し、その要求を確認し、バックアップ／修復／アーカイビング・システムのサーバ側部分を通じてその要求を回送し、それによって、その要求から作成された応答を、要求を行ったクライアントへ返すことができる。
【００５８】
図２０Ａ〜図２０Ｃは、クライアントの初期設定を示す一種の制御流れ図を提供し、この初期設定によって、クライアントは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分との間で要求およびデータの完全に安全なやり取りを行うことができる。はじめにステップ２００２において、クライアントは、バックアップ・サービスおよび修復サービスを受けることを求める要求を準備して、提携先へ送信する。クライアントは、提携先によって提供されるウェブ・ページとの対話を介して、提携先によって提供される初期設定ルーチンを介して、あるいは別の方法によって、要求を準備して送信することができる。ステップ２００４において、提携先は、バックアップ／修復サービスの要求をクライアントから受信し、そしてステップ２００６において、その要求が正当なクライアント・デバイスから来たものであることを確認し、そのクライアント・デバイスと、望ましくないデバイスのリストとの照合を試みることなど、その他のさらなる任意の確認を実行し、そのクライアントに関して保存されているデータ項目を確立し（このデータ項目によって、提携先は、そのクライアントを最終的に追跡把握することができ、次いでそのクライアントを識別して、そのクライアントと対話することができる）、そしてデバイス提供要求をサーバへ送信することによってサーバからの新たなデバイスの提供を要求する。受け手は、ステップ２００８においてデバイス提供要求を受信し、そしてステップ２０１０において、１回だけ使用できるデバイス・チケットを準備し、次いでサーバは、 この１回だけ使用できるデバイス・チケットを提携先へ返す。１回だけ使用できるデバイス・チケットは、クライアントが後でサーバに連絡を取る際に使用することができるＵＲＬ  ２０１２と、１回だけ使用できるチケットをバックアップ／修復／アーカイビング・システム内で一意に識別するチケットＩＤ  ２０１４と、クライアントを表すために作成されたデバイスＩＤ  ２０１６とを含む。提携先は、ステップ２０１８において、１回だけ使用できるデバイス・チケットを受信し、ステップ２０２０において、自分が保存しているクライアント情報を、チケット内に含まれているデバイスＩＤを含むように更新してから、そのチケットをクライアント・デバイスへ転送する。提携先はさらに、チケットをクライアント・デバイスへ転送する前に、そのチケットに任意選択の情報を送信することができる。たとえば、クライアント・デバイスのグループは、提携先によってそれらのクライアントのために作成された共通のクライアント暗号化キーおよびその他のそのような情報を使用することを選択することができる。チケットに付加される任意選択の情報は、このキーを含むことができる。ステップ２０２２において、クライアント・デバイスは、１回だけ使用できるチケットを受信する。ステップ２０２４において、クライアントは、図１３Ａを参照して論じたクライアント側のユーザインターフェース・ルーチンおよびサービス・プロセスを実施するクライアント側のアプリケーションをインストールする。クライアント側の実行ファイルがインストールされて実行されると、クライアント��、ステップ２０２６において、サーバとの安全な接続を確立し、自分が受信した１回だけ使用できるデバイス・チケット内に含まれているチケットＩＤ  ２０１４をサーバへ送信する。ステップ２０２８において、サーバは、チケットＩＤを受信し、そして図２０Ｂへと続いて、ステップ２０３０において、チケットＩＤを確認し、クライアントに関する以前に作成されたデバイスＩＤおよび提携先情報を受け取る。次いでサーバは、ステップ２０３２において、デバイスＩＤによって識別されたクライアント・デバイスへサービスを提供するようにバックアップ／修復／アーカイビング・システムのサーバ側部分を構成し、そしてステップ２０３４において、パスワードおよびユーザ名など、そのクライアント・デバイスのための信用証明書を作成する。次いでサーバは、ステップ２０３６において、作成されたユーザ名２０４０と、パスワード２０４２と、提携先の公開キー２０４４とを含むクライアント用の応答２０３８を準備し、その応答２０３８をクライアントへ返す。ステップ２０５０において、クライアントは、その応答を受信し、次いでステップ２０５２において、その応答内に含まれている情報を使用して、その後にサーバとの間で要求およびデータをやり取りするようにクライアント側のプロセスを構成する。ステップ２０５４において、クライアントは、パスワードに基づく方法を介して、自分のファイル暗号化キーを作成し、自分のクライアント暗号化キーを作成する。そのパスワードを覚えておくことによって、クライアントは、その後にクライアント暗号化キーを再作成することができる。そしてステップ２０５６において、クライアントは、クライアント暗号化キーを用いてファイル暗号化キーを暗号化し、次いで、その暗号化したファイル暗号化キーを、提携先の公開キーを用いて暗号化して、二重に暗号化されたファイル暗号化キーを作成する。ステップ２０５８において、クライアントは、二重に暗号化されたファイル暗号化キーをサーバへ送信し、サーバは、その二重に暗号化されたファイル暗号化キーをステップ２０６０において受信し、その二重に暗号化されたファイル暗号化キーを保存する、すなわちエスクローする。ステップ２０６２において、サーバーは、クライアントへ確認応答を返し、クライアントは、ステップ２０６４においてその確認応答を受信すると、その後にサーバへ要求を出してサーバとの間でデータをやり取りするための準備が整う。クライアントとサーバとの間における安全な接続は、短時間しか機能することができず、次なる要求およびデータのやり取りのためにクライアントによって再び確立することができる。クライアントは、デバイスＩＤおよび信用証明書をいったん所有すれば、サーバへの完全に安全な接続を任意の時点で再び確立することができる。
【００５９】
図２１は、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分の永久ストア部分によって実装されるブロック・ストアを概観レベルで示している。図２１においては、ブロック・ストア２１０２が、ブロックハッシュ・インデックス２１０４を含むものとして示されており、ブロックハッシュ・インデックス２１０４のそれぞれの項目は、ブロック・ストア内に保存されているデータ・ブロック２１０６など、特定の暗号化されたデータ・ブロックを参照する。特定のデータ・ブロックに関する参照を含むことに加えて、ブロックハッシュ・インデックス内の項目はまた、現時点でそのブロックを参照するファイル署名の数を示す参照数を含むことができる。この方法においては、いかなる特定のデータ・ブロックも、複数のクライアントにわたって分散されている複数のファイルがそのデータ・ブロックを含む可能性があるという事実にもかかわらず、その単一のインスタンスをデータ・ストア内に保存するだけでよい。ブロック・ストアによって提供されるオペレーションには、（１）クエリー、（２）検索、（３）保存、および（４）削除が含まれる。クエリー・オペレーション２１０８においては、ブロック・ストアは、ブロック・ハッシュ２１１０を受信し、ブロックハッシュ・インデックスに問い合わせて、そのブロック・ハッシュに対応する暗号化されたデータ・ブロックが現時点でブロック・ストア内に保存されているかどうかを判定する。そのブロック・ハッシュに対応するデータ・ブロックが現時点でブロック・ストア内に保存されているか否かの表示２１１２が返される。検索オペレーション２１１４においては、ブロック・ストアは、ブロック・ハッシュ２１１６を受信し、現時点で保存されている暗号化されたデータ・ブロックが、その提供されたブロック・ハッシュ２１１６に対応する場合には、ブロック・ストアからそのブロック・ハッシュに対応する暗号化されたデータ・ブロック２１１８を返す。保存オペレーション２１２０においては、ブロック・ストアは、ブロック・ハッシュおよび暗号化されたデータ・ブロックを受信し、その暗号化されたデータ・ブロックが、そのブロック・ストア内に既に保存されているものでない場合には、そのデータ・ブロックを保存し、提供されたブロック・ハッシュへのブロックハッシュ・インデックスを、そのデータ・ブロックを参照するように更新する。その暗号化されたデータ・ブロックが、そのブロック・ストア内に既に保存されている場合には、そのデータ・ブロックに関する参照数がインクリメントされる。削除オペレーション２１２６においては、ブロック・ストアは、ブロック・ハッシュを受信し、そのブロック・ハッシュが現時点でブロックハッシュ・インデックス内に存在する場合には、そのブロック・ハッシュに関する参照数をデクリメントする。参照数が０までデクリメントされた場合には、ブロックハッシュ・インデックスによって参照されるデータ・ブロックも削除され、その後に、そのブロック・ハッシュに対応するブロックハッシュインデックス項目が除去される。
【００６０】
図２１を参照して説明したブロック・ハッシュの方法およびブロック・ストアは、差分バックアップおよび差分修復の双方を可能にする。図２２は、差分バックアップを示している。図２２に示されているように、新たに更新されたファイルに関して作成された最後の署名２２０２が、クライアント上で、そのファイルに関するそれまでに作成された直近のファイル署名２２０４と比較されて、そのファイルのうちのどのブロックが変更されているか（２２０６）が判定される。これらの変更されたブロックに関するブロック・ハッシュをすべてメッセージ２２０８内にまとめることができ、そのメッセージ２２０８をサーバへ送信することができる。そしてサーバは、図２１を参照して上述したように、ブロック・ストアに対してクエリーを行って、それらのブロック・ハッシュのうちのどれが現時点でそのブロック・ストアのブロックハッシュ・インデックス内に保存されていないかを割り出す。それらのブロック・ハッシュに対応するデータ・ブロックのみを、バックアップ・プロセス中にクライアントによってサーバへ送信すればよい。したがってサーバは、現時点でブロック・ストア内に保存されていないΔブロック２２０６のブロック・ハッシュの表示２２１２を返し、そしてクライアントは、アップロード・ファイルを準備する際に、新たに作成されたファイル署名２２０２と、サーバによって返されたブロック・ハッシュ２２１２に対応するデータ・ブロックとを伝送するだけでよい。差分バックアップによって、クライアントとサーバとの間における不要なデータのやり取りがなくなる。クエリーと、データブロックの伝送との合間にデータ・ブロックがデータブロック・ストアから削除されてしまうことが絶対にないようにするために、二相コミット・プロトコルを使用することができる。
【００６１】
図２３は、差分修復を示している。差分修復においては、所望のインスタンスに関するファイル署名２３０２が、現時点でクライアント上に存在するそのファイルに関するファイル署名２３０４と比較される。この比較によって、ファイルを所望のバージョンすなわちインスタンスへと修復するために取り戻す必要があるデータを表すΔブロックのセット２３０６が作成される。しかし、これらのΔブロックのうちの一部は、クライアントによって保持されているローカル・ブロック・キャッシュ２３０８内に存在する可能性があり、したがって、ファイルを所望のインスタンスへと修復するためには、ローカルに保存されていないΔブロック２３１０のみをサーバから取り戻せばよい。ローカル・データブロック・ハッシュが広範囲に及び、所望のインスタンスが比較的最近バックアップされたものである場合には、修復オペレーションを完全にクライアント・デバイス上でローカルに実行することができる可能性もあり、暗号化されたデータ・ブロックをサーバから入手する必要はない。
【００６２】
図２４Ａ〜図２４Ｂは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのクライアント側で主要なサービス・プロセスによって実行されるバックアップ・プロセスに関する流れ図を提供する。ステップ２４０２において、新たなマニフェストおよびアップロードならびに新たなアップロード・ファイルが作成される。次いで、ステップ２４０４〜２４１１を含むｆｏｒループ内で、差分バックアップ用としてフラグを立てられている一式のファイルのうちのそれぞれのファイルが処理される。それぞれのファイルごとに、現時点のファイル署名が、ステップ２４０５において計算される。ステップ２４０６において判定した際に、以前に計算されたファイル署名がローカルに保存されていない場合には、以前に計算されたファイル署名が、ステップ２４０７においてサーバから検索される。次いでステップ２４０８において、それらのファイル署名どうしが比較されて、バックアップ・プロセスの一環として暗号化してサーバへ転送することが必要となる可能性のあるΔブロックのリストが作成される。ステップ２４０９において、このブロックのリストが、アップロード・ファイルへとまとめられ、差分比較の結果が、ステップ２４１０においてマニフェスト内に記録される。ステップ２４１１において判定した際に、より多くのファイルを処理する必要がある場合には、制御は、ステップ２４０５へ戻る。すべてのファイルが処理されると、ステップ２４１２において、アップロード・ファイルがサーバへ送信される。ステップ２４１４において、バックアップ・ルーチンは、実際にサーバへ転送する必要があるデータ・ブロックのリストをサーバから受信する。すなわちサーバは、図２２を参照して上述したように、ブロック・ストアに対してクエリーを行って、Δブロックのうちのどれがブロック・ストア内に既に保存されているかを割り出している。図２４Ｂへと続いて、バックアップ・ルーチンは、ステップ２４１６において最後のアップロード・ファイルを開き、そしてステップ２４１８〜２４２０を含むｆｏｒループ内で、サーバへ移送してサーバ上に保存する必要があるファイル署名および暗号化されたデータ・ブロックが、最後のアップロード・ファイルに追加される。ステップ２４２２において、最後のアップロード・ファイルがサーバへ伝送され、サーバは、ファイル署名をデータ・ベース内に、データ・ブロックをデータ・ストア内に保存し、そしてカタログ同期応答をクライアントに返し、これによってクライアントは、首尾よくバックアップされているすべてのファイルのファイル署名履歴を更新することを含めて、ローカル・カタログをリモート・カタログと同期化することができる。クライアントは、ステップ２４２６においてカタログ同期応答を受信し、そしてステップ２４２８において、そのカタログ同期応答に応じてローカル・カタログを同期化する。ステップ２４３０において、バックアップ・ルーチンは、カタログの同期をマニフェストと比較する。ステップ２４３２において判定した際に、サーバが問題に直面していることや、特定のバックアップ・オペレーションが首尾よく実行されていないことが判明した場合には、それらの問題が、ステップ２��３４においてさまざまな方法で処理される。たとえば、直面したあらゆる問題を是正したり改善したりするために、バックアップ要求を再び出すこともでき、一時的に不良なものとしてファイルにフラグを立てて、より総合的な修復技術を通じて修復することもでき、あるいはその他の方法を採用することもできる。最後にステップ２４３６において、マニフェストが終了し、一時的なファイルおよびデータ構造が除去されて、バックアップ・オペレーションが完了する。
【００６３】
図２５は、本発明の一実施形態に従ってクライアント・デバイス上で実行される主要なサービス・プロセスによって実行される修復オペレーションを示す制御流れ図である。ステップ２５０２において、ファイルを特定のバージョンへ修復するために修復オペレーションが呼び出される。ステップ２５０４において判定した際に、所望のバージョンに関するファイル署名がローカルで利用可能でない場合には、そのファイル署名が、ステップ２５０６においてサーバに要求される。次いでステップ２５０８において、修復ルーチンは、図２３を参照して上述したように、そのインスタンスを修復するためにはどのブロックをサーバから取り戻す必要があるかを割り出す。必要とされるブロックのリストが、ステップ２５１０においてアップロード・ファイルへとまとめられ、そしてステップ２５１２においてサーバへ伝送される。ステップ２５１４において、修復ルーチンは、必要とされるブロックおよびカタログ同期情報をサーバから受信する。ステップ２５１６において、必要に応じてローカル・カタログを更新することによってローカル・カタログが同期化されて、ファイルが首尾よく修復されたことが反映される。ステップ２５１８において、ファイルに関するデータ・ブロックが組み立てられて、ファイルの所望のインスタンスが形成され、そしてそのインスタンスが、ステップ２５２０において使用されて、既存のファイルが、修復されたファイルに置き換えられる。すなわち、図２５に示されている修復オペレーションは、既存のファイルに所望のバージョンを上書きする。あるいは修復オペレーションは、ファイルの特定のバージョンを、そのファイルの新たなインスタンスとして、または別のファイル名を有する別のファイルとして修復することを対象とすることもできる。
【００６４】
本発明のバックアップ／修復／アーカイビング・システムは、クライアント・デバイスによって使用される特定の暗号化アルゴリズム、圧縮アルゴリズム、および特定のファイル暗号化キーに関して柔軟である。上述のように、圧縮アルゴリズム、暗号化アルゴリズム、およびファイル暗号化キーに関する識別子が、ブロック・ハッシュの計算に含まれ、それによって、クライアントが、前のファイル暗号化キーを使用してファイルをバックアップした後のどこかの時点で、ファイル暗号化キーを変更しようと決めた場合には、クライアントは、新たに作成されたファイル暗号化キーの使用を開始することができ、そしてサーバは、新たなファイル暗号化キーによって暗号化されたデータ・ブロックの受信を開始することができ、その一方で、やがてサーバは、古い暗号化キーによって暗号化されたデータ・ブロックを、新たなファイル暗号化キーを用いて暗号化し直してサーバへ再び伝送するために、クライアントへ返す。すなわち、新たなファイル暗号化キーへの移行が実行されている間は、一定の期間にわたって、古いファイル暗号化キーを用いて暗号化されたデータ・ブロック、および新たなファイル暗号化キーを用いて暗号化されたデータ・ブロックの双方を、バックアップ／修復／アーカイビング・システムによって、あいまいにならないように保持することができる。
【００６５】
本発明について、特定の実施形態の点から説明したが、本発明は、この実施形態に限定されることを意図するものではない。当業者にとっては、本発明の趣旨内に収まる修正が明らかであろう。たとえば、コントロール構造、プログラミング言語、データ構造、モジュール化、およびその他の多くのそのようなプログラミング・パラメータの点で異なる実装形態を含む、ほとんど無限の数のさまざまなウェブサービスベースのデータバックアップ・アプリケーションおよびデータアーカイビング・アプリケーションが可能である。説明した実施形態は、ウェブサービス・プラットフォームとインターネット通信とを使用するリモート・データバックアップ／データアーカイビング・サービスを実装しているが、別のプロトコル標準および仕様ならびに別の通信メディアを採用する本発明の実施形態に相当するその他のリモート・データバックアップ／データアーカイビング・サービスも可能である。説明した実施形態は、クライアント側のアプリケーションおよび提携サービス提供業者のアプリケーションに対する比較的簡潔なアプリケーション・インターフェースを提供しているが、代替実施形態では、さらにいっそう複雑で機能豊富なインターフェースを提供することができる。本発明のさまざまな実施形態においてクライアントの初期設定およびデータの転送のために使用されるデータおよびメッセージを暗号化するために、さまざまな異なる公開／秘密暗号化スキーム、ハッシュベースの暗号化、対称的な暗号化、あるいはその他の暗号化技術のうちのいずれを採用することもできる。説明した実施形態は、主にデータ・ファイルのバックアップおよびアーカイビングを含むが、クライアント・コンピュータによってバックアップされる、またはアーカイブされることが必要とされるいかなるタイプのデータ・オブジェクトも、データ・ボールトに伝送して保存するために１つのファイル内にまとめることができる。それぞれのクライアント・コンピュータは、１つまたは複数のデータ・ボールトによって構成されている複数のデータバックアップ・デバイスおよびデータアーカイビング・デバイスに関連付けることができる。
【００６６】
ここまでの記述では、説明の目的から、本発明の徹底的な理解を提供するために具体的な用語を使用した。しかし、本発明を実施する上でこれらの具体的な詳細は必要とされないということが、当業者にとっては明らかであろう。本発明の具体的な実施形態に関する前述の説明は、例示および説明の目的から提示されている。それらの説明は、すべてを網羅することや、開示されている厳密な形態に本発明を限定することを意図するものではない。上述の教示を考慮すれば、多くの修正形態および変形形態が可能であることは明らかである。これらの実施形態は、本発明の原理およびその実際の応用を最もよく説明するために、それによって当業者が、考えられる特定の使用に適しているさまざまな修正形態と共に本発明およびさまざまな実施形態を最もよく利用できるようにするために示され、説明されている。
【図面の簡単な説明】
【００６７】
【図１】小規模企業におけるデータ・バックアップおよびデータ・アーカイビングのためのオプションを示す図である。
【図２】家庭環境または小規模企業環境においてＰＣユーザにとって利用可能なさらなるリソースを示す図である。
【図３】ＰＣまたはその他の小型のコンピュータ・システムのホーム・ユーザ、小規模企業ユーザ、あるいはその他のユーザにとって利用可能なバックアップおよびアーカイビングのリソースを、図１の図解仕様を使用して示す図である。
【図４】リモート・データストレージ設備上で実行されるデータ・ボールト・ウェブサービスベースのアプリケーションの一実施形態によって提供される２つのウェブサービス・インターフェースを示す図である。
【図５】本発明のさまざまな実施形態をサポートする１つの可能なハイレベルのハードウェア構成を示す図である。
【図６Ａ】本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示す図である。
【図６Ｂ】本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示す図である。
【図６Ｃ】本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示す図である。
【図６Ｄ】本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示す図である。
【図６Ｅ】本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示す図である。
【図６Ｆ】本発明の一実施形態に相当するウェブサービスベースのデータバックアップ／データアーカイビング・サービスの一態様を示す図である。
【図７Ａ】ウェブサービスベースのデータバックアップ／データアーカイビング・サービスを契約するための、ならびにクライアントを初期構成するためのクライアントと提携サービス提供業者との間における対話を示す図である。
【図７Ｂ】ウェブサービスベースのデータバックアップ／データアーカイビング・サービスを契約するための、ならびにクライアントを初期構成するためのクライアントと提携サービス提供業者との間における対話を示す図である。
【図８】図６Ａ〜図６Ｆに関して前述した、データをデータ・ボールト内に安全に保存するために呼び出されるクライアント側のオペレーションを示すシンプルなフローコントロール・プログラムである。
【図９】クライアントのためにファイルを保存することに関連したデータ・ボールト・アプリケーションによって実行されるオペレーションを示す図である。
【図１０】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのクライアント側部分およびサーバ側部分を概観レベルで示す図である。
【図１１】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分の単一サーバの実装形態を概観レベルで示す図である。
【図１２】本発明の代替実施形態に相当する複雑な複製されたバックアップ／修復／アーカイビング・システムを示す図である。
【図１３Ａ】図１０において概観レベルで示されているバックアップ／修復／アーカイビング・システム内の基本的な機能を示す図である。
【図１３Ｂ】図１０において概観レベルで示されているバックアップ／修復／アーカイビング・システム内の基本的な機能を示す図である。
【図１３Ｃ】図１０において概観レベルで示されているバックアップ／修復／アーカイビング・システム内の基本的な機能を示す図である。
【図１４Ａ】対応するファイル署名および暗号化されたデータ・ブロックを作成するための、主要なサービス・プロセス（図１３Ａの１３１４）によるファイルおよびファイルに類するオブジェクトの処理を示す図である。
【図１４Ｂ】対応するファイル署名および暗号化されたデータ・ブロックを作成するための、主要なサービス・プロセス（図１３Ａの１３１４）によるファイルおよびファイルに類するオブジェクトの処理を示す図である。
【図１４Ｃ】対応するファイル署名および暗号化されたデータ・ブロックを作成するための、主要なサービス・プロセス（図１３Ａの１３１４）によるファイルおよびファイルに類するオブジェクトの処理を示す図である。
【図１４Ｄ】対応するファイル署名および暗号化されたデータ・ブロックを作成するための、主要なサービス・プロセス（図１３Ａの１３１４）によるファイルおよびファイルに類するオブジェクトの処理を示す図である。
【図１５Ａ】本発明の実施形態によるファイル・インスタンシングを示す図である。
【図１５Ｂ】本発明の実施形態によるファイル・インスタンシングを示す図である。
【図１５Ｃ】本発明の実施形態によるファイル・インスタンシングを示す図である。
【図１５Ｄ】本発明の実施形態によるファイル・インスタンシングを示す図である。
【図１５Ｅ】本発明の実施形態によるファイル・インスタンシングを示す図である。
【図１６】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムによってモニタされて継続的にバックアップされるクライアント・デバイス上のそれぞれのファイルごとにバックアップ／修復／アーカイビング・システムのサーバ側部分およびクライアント側部分に保存される情報をまとめた図である。
【図１７Ａ】本発明の実施形態に従ってファイルに関して保存されているファイル署名履歴およびデータブロック履歴からファイルの特定のインスタンスを構築するための論理演算を示す図である。
【図１７Ｂ】本発明の実施形態に従ってファイルに関して保存されているファイル署名履歴およびデータブロック履歴からファイルの特定のインスタンスを構築するための論理演算を示す図である。
【図１８Ａ】本発明の実施形態によるバージョン履歴の切り捨てを示す図である。
【図１８Ｂ】本発明の実施形態によるバージョン履歴の切り捨てを示す図である。
【図１９Ａ】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システム内のセキュリティー関連のエンティティーおよびオペレーションを示す図である。
【図１９Ｂ】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システム内のセキュリティー関連のエンティティーおよびオペレーションを示す図である。
【図１９Ｃ】クライアント・デバイスがファイル暗号化キーを不注意に削除したり紛失したりした場合のそのクライアント・デバイスによるファイル暗号化キーの検索を示す図である。
【図１９Ｄ】クライアントの信用証明書によって容易になるクライアント・デバイスとサーバとの間における安全な通信を示す図である。
【図２０Ａ】クライアントの初期設定を示す一種の制御流れ図であり、この初期設定によって、クライアントは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分との間で要求およびデータの完全に安全なやり取りを行うことができる。
【図２０Ｂ】クライアントの初期設定を示す一種の制御流れ図であり、この初期設定によって、クライアントは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分との間で要求およびデータの完全に安全なやり取りを行うことができる。
【図２０Ｃ】クライアントの初期設定を示す一種の制御流れ図であり、この初期設定によって、クライアントは、本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分との間で要求およびデータの完全に安全なやり取りを行うことができる。
【図２１】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのサーバ側部分の永久ストア部分によって実装されるブロック・ストアを概観レベルで示す図である。
【図２２】差分バックアップを示す図である。
【図２３】差分修復を示す図である。
【図２４Ａ】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのクライアント側で主要なサービス・プロセスによって実行されるバックアップ・プロセスを示す流れ図である。
【図２４Ｂ】本発明の一実施形態に相当するバックアップ／修復／アーカイビング・システムのクライアント側で主要なサービス・プロセスによって実行されるバックアップ・プロセスを示す流れ図である。
【図２５】本発明の一実施形態に従ってクライアント・デバイス上で実行される主要なサービス・プロセスによって実行される修復オペレーションを示す制御流れ図である。
【図１】
0005563220.tif 000002
【図２】
0005563220.tif 000003
【図３】
0005563220.tif 000004
【図４】
0005563220.tif 000005
【図５】
0005563220.tif 000006
【図６Ａ】
0005563220.tif 000007
【図６Ｂ】
0005563220.tif 000008
【図６Ｃ】
0005563220.tif 000009
【図６Ｄ】
0005563220.tif 000010
【図６Ｅ】
0005563220.tif 000011
【図６Ｆ】
0005563220.tif 000012
【図７Ａ】
0005563220.tif 000013
【図７Ｂ】
0005563220.tif 000014
【図８】
0005563220.tif 000015
【図９】
0005563220.tif 000016
【図１０】
0005563220.tif 000017
【図１１】
0005563220.tif 000018
【図１２】
0005563220.tif 000019
【図１３Ａ】
0005563220.tif 000020
【図１３Ｂ】
0005563220.tif 000021
【図１３Ｃ】
0005563220.tif 000022
【図１４Ａ】
0005563220.tif 000023
【図１４Ｂ】
0005563220.tif 000024
【図１４Ｃ】
0005563220.tif 000025
【図１４Ｄ】
0005563220.tif 000026
【図１５Ａ】
0005563220.tif 000027
【図１５Ｂ】
0005563220.tif 000028
【図１５Ｃ】
0005563220.tif 000029
【図１５Ｄ】
0005563220.tif 000030
【図１５Ｅ】
0005563220.tif 000031
【図１６】
0005563220.tif 000032
【図１７Ａ】
0005563220.tif 000033
【図１７Ｂ】
0005563220.tif 000034
【図１８Ａ】
0005563220.tif 000035
【図１８Ｂ】
0005563220.tif 000036
【図１９Ａ】
0005563220.tif 000037
【図１９Ｂ】
0005563220.tif 000038
【図１９Ｃ】
0005563220.tif 000039
【図１９Ｄ】
0005563220.tif 000040
【図２０Ａ】
0005563220.tif 000041
【図２０Ｂ】
0005563220.tif 000042
【図２０Ｃ】
0005563220.tif 000043
【図２１】
0005563220.tif 000044
【図２２】
0005563220.tif 000045
【図２３】
0005563220.tif 000046
【図２４Ａ】
0005563220.tif 000047
【図２４Ｂ】
0005563220.tif 000048
【図２５】
0005563220.tif 000049