(57)【要約】【課題】第三者が運営するデータ保存サービスシステム上にデータの安全性を確保してデータを保存させることができるようにする。【解決手段】データを生成するサーバ101と、データを保存する複数のデータ保存サービス103、104と、サーバ101からの保存すべきデータを加工して、複数のデータ保存サービスに分散保存させるバックアップproxy102とを備える。バックアップproxy102が有する暗号化手段は、サーバ101からの保存すべきデータを暗号化し、暗号化したバックアップデータを暗号化処理単位であるブロックを分断するように分割し、分断したデータブロックが連続して含まれないように、分割したデータを組み合わせ、その組み合わせ情報を登録表に記録し、組み合わせたデータを複数のデータ保存サービス103、104に分散保存させる。【選択図】図１
2011175578.tif 000002
【特許請求の範囲】
【請求項１】
データを第三者が運営するデータ保存サービスシステム上に保存させるデータバックアップシステムにおいて、
アプリケーション等によりバックアップすべきデータを生成する１または複数のサーバと、バックアップデータを保存する複数のデータ保存サービスシステムと、前記サーバからの保存すべきバックアップデータを加工して、前記複数のデータ保存サービスシステムに分散保存させるバックアップproxy とを備え、
前記バックアップproxy は、データ暗号化手段と、保存データを登録管理する登録表とを有し、
前記暗号化手段は、前記アプリケーションからの保存すべきバックアップデータを暗号化し、暗号化したバックアップデータを暗号化処理単位であるブロックを分断するように分割し、分断したデータブロックが連続して含まれないように、分割したデータを組み合わせ、その組み合わせ情報を前記登録表に記録し、組み合わせたデータを前記複数のデータ保存サービスシステムに分散保存させることを特徴とするデータバックアップシステム。
【請求項２】
データを第三者が運営するデータ保存サービスシステム上に保存させるデータバックアップシステムにおいて、
アプリケーション等によりバックアップすべきデータを生成する１または複数のサーバと、バックアップデータを保存する複数のデータ保存サービスシステムと、前記サーバからの保存すべきバックアップデータを加工して、前記複数のデータ保存サービスシステムに分散保存させるバックアップproxy とを備え、
前記バックアップproxy は、データ暗号化手段と、保存データを登録管理する登録表とを有し、
前記暗号化手段は、１または複数のアプリケーションからの保存すべき複数のバックアップデータのそれぞれを暗号化し、暗号化した複数のバックアップデータのそれぞれを暗号化処理単位であるブロックを分断するように分割し、同一のバックアップデータの分断したデータブロックが連続して含まれないように、他のバックアップデータと組み合わせ、その組み合わせ情報を前記登録表に記録し、組み合わせたデータを前記複数のデータ保存サービスシステムに分散保存させることを特徴とするデータバックアップシステム。
【請求項３】
前記バックアップproxy は、データ回復手段を有し、該、データ回復手段は、指定されたアプリケーションのバックアップデータを、前記管理表の情報に基づいて前記複数のデータ保存サービスシステムから取得し、取得したデータのブロックの再構成、データの復号を行ってデータを回復させることを特徴とする請求項１または２記載のデータバックアップシステム。
【請求項４】
データを第三者が運営するデータ保存サービスシステム上に保存させるデータバックアップ方法において、
アプリケーション等によりバックアップすべきデータを生成する１または複数のサーバと、バックアップデータを保存する複数のデータ保存サービスシステムと、前記サーバからの保存すべきバックアップデータを加工して、前記複数のデータ保存サービスシステムに分散保存させるバックアップproxy とを備え、
前記バックアップproxy は、データ暗号化手段と、保存データを登録管理する登録表とを有し、
前記暗号化手段は、前記アプリケーションからの保存すべきバックアップデータを暗号化し、暗号化したバックアップデータを暗号化処理単位であるブロックを分断するように分割し、分断したデータブロックが連続して含まれないように、分割したデータを組み合わせ、その組み合わせ情報を前記登録表に記録し、組み合わせたデータを前記複数のデータ保存サービスシステムに分散保存させることを特徴とするデータバック方法。
【請求項５】
データを第三者が運営するデータ保存サービスシステム上に保存させるデータバックアップ方法において、
アプリケーション等によりバックアップすべきデータを生成する１または複数のサーバと、バックアップデータを保存する複数のデータ保存サービスシステムと、前記サーバからの保存すべきバックアップデータを加工して、前記複数のデータ保存サービスシステムに分散保存させるバックアップproxy とを備え、
前記バックアップproxy は、データ暗号化手段と、保存データを登録管理する登録表とを有し、
前記暗号化手段は、１または複数のアプリケーションからの保存すべき複数のバックアップデータのそれぞれを暗号化し、暗号化した複数のバックアップデータのそれぞれを暗号化処理単位であるブロックを分断するように分割し、同一のバックアップデータの分断したデータブロックが連続して含まれないように、他のバックアップデータと組み合わせ、その組み合わせ情報を前記登録表に記録し、組み合わせたデータを前記複数のデータ保存サービスシステムに分散保存させることを特徴とするデータバックアップ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データバックアップシステム及びデータバックアップ方法に係り、特に、アプリケーション等におけるデータを、第三者が運営するデータ保存サービスシステム上に保存させる際に、そのデータの安全性を確保して保存させることができるようにしたデータバックアップシステム及びデータバックアップ方法に関する。
【背景技術】
【０００２】
データを安全に保存する方法に関する従来技術として、例えば、特許文献１等に記載された技術が知られている。この従来技術は、マルチメディアデータをネットワーク上の複数個所に分散して保存する場合に、元データに対して暗号化やダミー情報の追加等の処理を行った後で分割したり、元データを分割したデータに対して暗号化やダミー情報の追加等の処理を行うことにより安全なデータの保存を実現しようとするものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２４４５９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
暗号化されたデータは、暗号文の全文があれば平文の内容と同じ情報量を持つことになり、解読される危険性がある。そして、前述した従来技術は、暗号化したデータを分散保存することにより前述した危険をある程度回避することができるものであるが、分割したデータ片の中に、連続したデータ列が一定数以上含まれていれば、平文の一部を情報として持つことになり、やはり、暗号化データが解読される危険性があるという問題を生じてしまう。
【０００５】
本発明の目的は、前述した従来技術の問題点を解決し、第三者が運営するデータ保存サービスシステム上にデータの安全性を確保して保存させることができるようにしたデータバックアップシステム及びデータバックアップ方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明によれば前記目的は、データを第三者が運営するデータ保存サービスシステム上に保存させるデータバックアップシステムにおいて、アプリケーション等によりバックアップすべきデータを生成する１または複数のサーバと、バックアップデータを保存する複数のデータ保存サービスシステムと、前記サーバからの保存すべきバックアップデータを加工して、前記複数のデータ保存サービスシステムに分散保存させるバックアップproxy とを備え、前記バックアップproxy は、データ暗号化手段と、保存データを登録管理する登録表とを有し、前記暗号化手段は、前記アプリケーションからの保存すべきバックアップデータを暗号化し、暗号化したバックアップデータを暗号化処理単位であるブロックを分断するように分割し、分断したデータブロックが連続して含まれないように、分割したデータを組み合わせ、その組み合わせ情報を前記登録表に記録し、組み合わせたデータを前記複数のデータ保存サービスシステムに分散保存させることにより達成される。
【発明の効果】
【０００７】
本発明によれば、複数のデータ保存サービスシステムに保存されている分割したデータの１つが盗まれ他場合にも、平文を生成するために必要な情報量が揃っていないので、データを復号化することができず、データの安全性を確保することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態によるデータバックアップシステムの構成を示すブロック図である。
【図２】バックアップproxy の構成を示すブロック図である。
【図３】Data ＤＢ の構成を示す図である。
【図４】Lacate ＤＢ の構成を示す図である。
【図５】本発明の実施形態によるデータバックアップシステムでのアプリデータのバックアップ処理を説明するフローチャートである。
【図６】本発明の実施形態によるデータバックアップシステムでのアプリデータのリストア処理を説明するフローチャートである。
【図７】データ混合プログラムでの処理動作の詳細を説明するフローチャート（その１）である。
【図８】データ混合プログラムでの処理動作の詳細を説明するフローチャート（その２）である。
【図９】データ回復プログラムでの処理動作の詳細を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明によるデータバックアップシステム及びデータバックアップ方法の実施形態を図面により詳細に説明する。
【００１０】
図１は本発明の一実施形態によるデータバックアップシステムの構成を示すブロック図である。
【００１１】
本発明の実施形態によるデータバックアップシステムは、図１に示すように、それぞれがＣＰＵ、メモリ、ＨＤＤ等による記憶装置、入出力装置等を備えた情報処理装置である１または複数のサーバ１０１と、バックアップproxy １０２と、複数のオンラインストレージサービスＡ１０３、Ｂ１０４とがネットワーク１０５を介して接続可能に構成されている。
【００１２】
前述において、サーバ１０１は、Ｗｅｂアプリケーション等のサービスシステムが稼動し、保存すべきデータを生成するデスクトップＰＣやブレードＰＣ等である。また、バックアップproxy １０２は、サーバ１０１からのバックアップすべきデータを加工処理して後述する複数のオンラインストレージサービスにＡ１０３、Ｂ１０４に分散して保存する処理を行うサーバ等の情報処理装置である。また、オンランストレージサービスＡ１０３、Ｂ１０４は、それぞれ、サーバからのサービス利用者のデータを保存するサービスを提供する情報処理システムであり、通常、第三者が運営するデータ保存サービスシステムである。また、ネットワーク１０５は、サーバ１０１、バックアップproxy １０２、オンラインストレージサービスＡ１０３、Ｂ１０４等が接続されて、相互に通信可能とするインターネット、イントラネット、あるいは、その混合ネットワークである。
【００１３】
図２はバックアップproxy １０２の構成を示すブロック図である。
【００１４】
バックアップproxy １０２は、図２に示すように、プログラムの実行を行うＣＰＵ２０１と、プログラムやデータをロードするメモリ２０２と、他の情報処理装置との間でデータ交換を行う通信部２０３と、命令やデータの入力を行う入力部２０４と、システムの状態等を出力する出力部２０５と、データ混合プログラム２０８、データ回復プログラム２０９、Data ＤＢ ２１０、Locate ＤＢ ２１１、Key ２１２、File Local２１３、Data Name２１４ 、num ２１５が記憶されているＨＤＤ等による記憶装置２０６とがバス２０７を介して接続されて構成されている。
【００１５】
Data ＤＢ ２１０、Locate ＤＢ ２１１については後述する。
【００１６】
Key ２１２は、データ混合プログラム２０８やデータ回復プログラム２０９がアプリケーションのデータやバックアップデータに対して暗号化処理、復号化処理を行うときに利用する暗号鍵である。
【００１７】
File Local ２１３ は、データ混合プログラム２０８が処理途中でアプリデータを保持するための記憶領域であり、システム起動時には、データを保持していない。
【００１８】
Data Name ２１４は、データ混合プログラム２０８が処理途中で保持しているアプリデータのファイル名である。
【００１９】
num ２１５は、データ混合プログラム２０８が新たなバックアップデータを作成するときに利用する通番である。
【００２０】
通信部２０３は、有線や無線のＬＡＮ等を利用し、ネットワーク１０５を介してサーバ１０１やオンラインストレージサービスＡ１０３、Ｂ１０４との間で通信を行う機能を有する。入力部２０４は、キーボード、マウス、ペン入力、音声入力、ボタン、ジョグダイヤル、十字キー等の入力手段により構成される。出力部２０５は、ディスプレイ、印刷装置、音声出力装置等の出力手段により構成される。
【００２１】
また、データ混合プログラム２０８は、１または複数のサーバ１０１から取得したバックアップデータとして保存すべきアプリケーションのデータ（以下、アプリデータという）を暗号化、分解して、複数のバックアップデータに再構成し、複数のオンラインストレージサービスＡ１０３、Ｂ１０４に格納する暗号化手段としてのプログラムである。データ回復プログラム２０９は、指定されたアプリデータに対応する暗号化データの複数をオンラインストレージサービスＡ１０３、Ｂ１０４から取得して、分解、復号して、アプリデータを回復するプログラムである。
【００２２】
Data ＤＢ ２１０は、バックアップproxy １０２で管理しているサーバ１０１からのアプリデータの一覧情報を格納しているデータベースである。
【００２３】
図３はData ＤＢ ２１０の構成を示す図である。Data ＤＢ ２１０は、テーブル内のレコードを一意に特定する識別子である項番３０１と、管理対象であるデータのバックアップを取得した日時（年、月、日、時刻）情報を含む識別子であるアプリデータ名３０２と、前述のアプリデータの送信元サーバのネットワークアドレスであるサーバアドレス３０３と、対応するアプリデータのデータ混合プログラム２０８による処理の有無を示す処理フラグ３０４とによるレコードを複数格納して構成されている。
【００２４】
Lacate ＤＢ ２１１は、バックアップproxy １０２でサーバ１０１からのアプリデータとオンラインストレージサービスＡ１０３、Ｂ１０４に格納されているバックアップデータとの対応情報を格納しているデータベースである。
【００２５】
図４はLacate ＤＢ ２１１の構成を示す図である。Lacate ＤＢ ２１１は、分割して暗号化された複数の各アプリケーションの保存データを組み合わせて保存する際の組み合わせを登録管理する登録表であり、テーブル内のレコードを一意に特定する識別子である項番４０１と、オンラインストレージサービスＡ１０３、Ｂ１０４上のデータの識別子であるバックアップファイル名４０２と、管理対象であるデータの識別子であるアプリデータ名i ４０３及びアプリデータ名ii４０４と、アプリデータ格納領域を処理単位で示している格納ブロック数４０５とによるレコードを複数格納して構成されている。
【００２６】
図４に示すLacate ＤＢ ２１１における項番１のレコードは、バックアップファイル名として、File(1) 及び図示しないFile(2) を持ち、アプリデータ名i ４０３及びアプリデータ名ii４０４として、DateA20090707、DateA20090708を持つの２つのアプリデータが３つのブロックに保存されていることを示している。また、同様に、項番２のレコードは、バックアップファイル名として、File(3) 及び図示しないFile(4) を持ち、アプリデータ名i ４０３及びアプリデータ名ii４０４として、DateA20090709、DateA20090710を持つの２つのアプリデータが５つのブロックに保存されていることを示している。
【００２７】
図５は本発明の実施形態によるデータバックアップシステムでのアプリデータのバックアップ処理を説明するフローチャートであり、次に、これについて説明する。ここでの処理は、サーバ１０１を使用する利用者から図示しない利用者端末を介してアプリデータの保存が指示されたときに開始される。
【００２８】
（１）まず、１または複数のサーバ１０１が、サーバ１０１上でアプリケーションのサービスにより生成されるデータのバックアップを取り、保存すべきアプリデータとしてバックアップproxy １０２に送信してくるので、バックアップproxy １０２は、そのアプリデータを受信する。バックアップproxy １０２は、受信したアプリデータを、図３に示して説明したData ＤＢ ２１０に登録する。その際、バックアップproxy １０２は、アプリデータ名３０２に、送信元サーバ名や受信した日時情報を付加し、また、サーバアドレス３０３に、送信元サーバのネットワークアドレスを格納すると共に、処理フラグ３０４に、データ混合プログラム２０８による処理が行われていないことを示す「×」を設定する（ステップ５０１）。
【００２９】
（２）次に、バックアップproxy １０２は、Data ＤＢ ２１０に処理フラグ３０４が「×」となっているエントリが２つ以上あるか否かを確認し、１つしかなかった場合、ステップ５０１からの処理に戻って、別のアプリデータの受信待つ（ステップ５０２）。
【００３０】
（３）ステップ５０２の確認で、Data ＤＢ ２１０に処理フラグ３０４が「×」となっているエントリが２つ以上あった場合、バックアップproxy １０２は、Data ＤＢ ２１０から処理フラグ３０４が「×」となっているエントリを２つ選択して、データ混合プログラム２０８が、アプリデータの暗号化、分割、再構成を行ってバックアップデータのペアを作成する。データ混合プログラム２０８は、分割の処理において、暗号化したアプリデータを、暗号化の処理ブロックを跨ぐように分割する（ステップ５０３）。
【００３１】
（４）バックアップproxy １０２は、ステップ５０３の処理で作成したバックアップデータのペアをそれぞれ別のオンラインストレージサービスＡ１０３、Ｂ１０４に分散して保存させ、ステップ５０１からの処理に戻って処理を続ける（ステップ５０４）。
【００３２】
前述した本発明の実施形態によるデータバックアップシステムでのアプリデータのバックアップ処理では、それぞれが独立した２つのアプリデータについて、アプリデータの暗号化、分割、混合再構成を行うとして説明したが、本発明は、１つのアプリデータについて、アプリデータの暗号化、分割、再構成を行うようにしてもよい。また、前述した説明では、処理後のアプリデータを２つのオンラインストレージサービスに分散して保存させるとしているが、本発明は、アプリデータを３つ以上のオンラインストレージサービスに分散して保存させるようにすることもできる。さらに、本発明は、それぞれが独立した３つ以上のアプリデータについて、アプリデータの暗号化、分割、混合再構成を行うようにしてもよい。
【００３３】
図６は本発明の実施形態によるデータバックアップシステムでのアプリデータのリストア処理を説明するフローチャートであり、次に、これについて説明する。ここでの処理は、サーバ１０１を使用する利用者から図示しない利用者端末を介して保存されているアプリデータの取得が指示されたときに開始される。
【００３４】
（１）処理が開始されると、バックアップproxy １０２のデータ回復プログラム２０９は、図３に示して説明したData ＤＢ ２１０からアプリデータ名３０２とサーバアドレス３０３との組のカラムを取り出して一覧形式で出力部２０５の表示装置に表示する（ステップ６０１）。
【００３５】
（２）データ回復プログラム２０９は、出力部２０５の表示装置に表示された一覧表示から、利用者により指定されたアプリデータ名を取得する（ステップ６０２）。
【００３６】
（３）次に、データ回復プログラム２０９は、ステップ６０２の処理で取得したアプリデータ名と同じ項目を持つエントリを図４に示して説明したLocate ＤＢ ２１１から検索し、対応するバックアップファイル名のリストを取得する（ステップ６０３）。
【００３７】
（４）データ回復プログラム２０９は、ステップ６０３の処理で取得したバックアップファイル名のリストに対して、それぞれのファイルをオンラインストレージサービスから取得して、分離、再構成、復号してアプリデータを回復し、ここでの処理を終了する（ステップ６０４）。
【００３８】
図７、図８はデータ混合プログラム２０８での処理動作の詳細を説明するフローチャートであり、次に、これについて説明する。この図７、図８に示すフローは、一連のものであるので、以下では、図番を区別することなく説明を行う。また、ここでの処理は、図５に示して説明したフローのステップ５０３での処理の詳細である。
【００３９】
（１）処理を開始すると、データ混合プログラム２０８は、Data ＤＢ ２１０で選択した２つのアプリデータを、それぞれ DataX、DataY として、暗号鍵 Key２１２を用いて暗号化する。そして、 DataX、DataY のファイル名を、それぞれ変数Data NameX、変数Data NameYに設定する（ステップ７０１）。
【００４０】
（２）次に、ステップ７０１の処理で暗号化したデータEnc(DataX)、Enc(DataY)を、暗号化の処理ブロックを跨ぐように分割する。例えば、処理ブロックが128bitの処理単位であれば、最初の処理ブロックに対して64bit、次に128bit、次に128bitのデータ、……というように分割して、暗号化処理を行うブロックを分断するように分割する（ステップ７０２）。
【００４１】
（３）データ混合プログラム２０８は、次に、変数File Local２１３にデータが設定されているか否かを確認し、データが設定されていた場合、変数Loop Again Flag をTRUEに設定する。この変数は、データ混合プログラム２０８の一部の処理を繰り返し行うことにより、File Localのデータを処理するために設定される変数である（ステップ７０３、７０４）。
【００４２】
（４）次に、データ混合プログラム２０８は、変数File Localのデータブロック群を配列変数 work ArrayA［］に設定し、ステップ７０２の処理で分割したEnc(DataX)のデータブロック群を配列変数 work ArrayB［］に設定すると共に、Data Name ２１４を変数tmp Data NameAに設定し、ステップ７０１の処理で取得したData NameXをtmp Data NameBに設定する（ステップ７０５）。
【００４３】
（５）ステップ７０３の確認で、変数File Local２１３にデータがなかった場合、変数Loop Again Flag をFALSE に設定する（ステップ７１４）。
【００４４】
（６）その後、データ混合プログラム２０８は、ステップ７０２の処理で分割したEnc(DataX)のデータブロック群を配列変数 work ArrayA［］に設定し、ステップ７０２の処理で分割したEnc(DataY)のデータブロック群を配列変数 workArrayB［］に設定すると共に、ステップ７０１の処理で取得したDataNameXをtmpDataNameAに設定し、ステップ７０１の処理で取得したDataNameYをtmp Data NameB に設定する（ステップ７１５）。
【００４５】
（７）ステップ７０５、７１５の処理の後、データ混合プログラム２０８は、配列変数 work ArrayA［］と work ArrayB［］との配列数と比較し、配列変数 work ArrayA［］の配列数が work ArrayB［］の配列数より小さいか否かを判定する。この比較の処理は、これから処理するデータブロック数を決めるため、配列変数のうち配列数の小さい方を検出するものである（ステップ７０６）。
【００４６】
（８）ステップ７０６の比較判定で、配列変数 work ArrayA［］の配列数の方が小さかった場合、変数array Len に work ArrayA［］の配列数を設定し、変数arrayA Flag にTRUEを設定する。これらの設定は、これから処理するデータブロック数とどちらの変数の配列数が少なかったかを示すフラグである（ステップ７０７）。
【００４７】
（９）ステップ７０６の比較判定で、配列変数 work ArrayA［］の配列数が配列変数 work ArrayB［］の配列数と同じか、大きかった場合、変数array Len に work ArrayB［］の配列数を設定し、変数arrayA Flag にFALSE を設定する。これらの設定は、これから処理するデータブロック数とどちらの変数の配列数が少なかったかを示すフラグである（ステップ７１６）。
【００４８】
（10）ステップ７０７、あるいは、ステップ７１６の処理の後、Local ＤＢ２１１に、新たなエントリを追加する。追加するエントリには、バックアップファイル名４０２として文字列“File (num)”を設定し、アプリデータ名i ４０３として変数tmp Data NameAの値を設定すると共に、アプリデータ名ii４０４として変数tmp Data NameBの値を設定し、格納ブロック数４０５として変数array Len を設定する。ちなみに、文字列“File (num)”のnum の部分には変数num ２１５の値が入る（ステップ７０８）。
【００４９】
（11）次に、データ混合プログラム２０８は、数i に０を代入し、変数i がステップ７０７の処理で設定した変数array Len よりも小さいか否かを判定し、変数i が変数array Len よりも小さかった場合、変数i が偶数であるか否かを検証する（ステップ７０９〜７１１）。
【００５０】
（12）ステップ７１１の判定で、変数i が偶数であった場合、ファイルFile (num)に、配列変数 work ArrayA［］のi 番目のブロックデータを追加すると共に、ファイルFile (num+1)に、配列変数 work ArrayB［］のi 番目ブロックデータを追加する（ステップ７１２）。
【００５１】
（13）ステップ７１１の判定で、変数i が偶数でなかった、すなわち、奇数であった場合、ファイルFile (num)に、配列変数 work ArrayB［］のi 番目のブロックデータを追加すると共に、ファイルFile (num+1)に、配列変数 work ArrayA［］のi 番目のブロックデータを追加する（ステップ７１７）。
【００５２】
（14）ステップ７１２、あるいは、ステップ７１７の処理の後、変数i に１を加え、ステップ７１０からの処理に戻って処理を続ける（ステップ７１３）。
【００５３】
（15）ステップ７１０の判定で、変数i がステップ７０７の処理で設定した変数array Len 以上であった場合、ファイルFile(num) をオンラインストレージサービスＡ１０３にアップロードして保存させ、ファイルFile(num+1) をオンラインストレージサービスＢ１０４にアップロードして保存させる（ステップ８１７）。
【００５４】
（16）次に、変数num ２１５の値を２増加させて保存し、変数Loop Again Flag にTRUEが設定されているか否かを確認し、TRUEが設定されていた場合、変数Loop Again Flag にFALSE を設定する（ステップ８１８、８０１、８０２）。
【００５５】
（17）次に、データ混合プログラム２０８は、変数arrayA Flag にTRUEが設定されているか否かを確認し、TRUEが設定されていた場合、Data ＤＢ ２１０上のアプリデータ名３０２の中のtmp Data NameAと同じエントリの処理フラグ３０４を「○」に設定する（ステップ８０３、８２５）。
【００５６】
（18）次に、変数tmp Data NameBと変数data Name とが同一であるか否かを確認し、これらの２つの変数が同一でなかった場合、変数data Name に変数tmp Data NameBの値を設定する（ステップ８０４、８０６）。
【００５７】
（19）ステップ８０４の確認で、変数tmp Data NameBと変数data Name とが同一であであった場合、あるいは、ステップ８０６の処理の後、ステップ７０２の処理で分割したEnc(DataY)のデータブロック群を配列変数 work ArrayA［］に設定し、配列変数 work ArrayB［］のi 番目以降のブロックデータ群を配列変数 work ArrayB［］に設定する（ステップ８０５）。
【００５８】
（20）ステップ８０３の確認で、変数arrayA Flag にTRUEが設定されていなかった場合、Data ＤＢ ２１０上のアプリデータ名３０２の中のtmp Data NameBと同じエントリの処理フラグ３０４を「○」に設定する（ステップ８２６）。
【００５９】
（21）次に、変数tmp Data NameAと変数data Name とが同一であるか否かを確認し、これらの２つの変数が同一でなかった場合、変数data Name に変数tmp Data NameAの値を設定する（ステップ８０８、８１０）。
【００６０】
（22）ステップ８０８の確認で、変数tmp Data NameAと変数data Name とが同一であであった場合、あるいは、ステップ８１０の処理の後、配列変数work ArrayA［］のi番目以降のブロックデータ群を配列変数 work ArrayA［］に設定し、ステップ７０２の処理で分割したEnc(DataY)のデータブロック群を配列変数 work ArrayB［］に設定する（ステップ８０９）。
【００６１】
（23）ステップ８０５の処理の後、配列変数 work ArrayB［］が空き配列であるか否かを確認し、この確認で、配列変数 work ArrayB［］が空き配列でなかった場合、あるいは、ステップ８０９の処理の後、配列変数 work ArrayA［］が空き配列であるか否かを確認し、この確認で、配列変数 work ArrayA［］が空き配列でなかった場合、ステップ７０６からの処理に戻って処理を続ける（ステップ８０７、８１１）。
【００６２】
（24）ステップ８０１の変数Loop Again Flag にTRUEが設定されているか否かの確認で、変数Loop Again Flag にTRUEが設定されていなかった場合、arrayA Flag がTRUEに設定されているか否か確認する（ステップ８１２）。
【００６３】
（25）ステップ８１２の確認で、arrayA Flag がTRUEに設定されていた場合、あるいは、ステップ８１１の確認で、配列変数 work ArrayA［］が空き配列であった場合、変数 work ArrayB［］のi 番目以降のブロックデータ群を配列変数File Localに設定し、配列変数File Localが空き配列か否かを確認する（ステップ８１３、８１４）。
【００６４】
（26）ステップ８１２の確認で、arrayA Flag がTRUEに設定されていなかった場合、あるいは、ステップ８０７の確認で、配列変数 work ArrayB［］が空き配列であった場合、変数 work ArrayA［］のi 番目以降のブロックデータ群を配列変数File Localに設定し、配列変数File Localが空き配列か否かを確認する（ステップ８２１、８２２）。
【００６５】
（26）ステップ８１４あるいはステップ８２２の確認で、配列変数File Localが空き配列であった場合、変数data Name を空（NULL）にし、Data ＤＢ ２１０上のアプリデータ名３０２の中のtmp Data NameAと同じエントリの処理フラグ３０４を「○」に設定すると共に、Data ＤＢ ２１０上のアプリデータ名３０２の中のtmp Data NameBと同じエントリの処理フラグ３０４を「○」に設定して、ここでの処理を終了する（ステップ８１５、８１６）。
【００６６】
（27）ステップ８１４の確認で、配列変数File Localが空き配列でなかった場合、変数data Name に変数tmp Data NameBの値を設定し、Data ＤＢ ２１０上のアプリデータ名３０２の中のtmp Data NameAと同じエントリの処理フラグ３０４を「○」に設定して、ここでの処理を終了する（ステップ８１９、８２０）。
【００６７】
（28）ステップ８１４の確認で、配列変数File Localが空き配列でなかった場合、変数data Name に変数tmp Data NameAの値を設定し、Data ＤＢ ２１０上のアプリデータ名３０２の中のtmp Data NameBと同じエントリの処理フラグ３０４を「○」に設定して、ここでの処理を終了する（ステップ８２３、８２４）。
【００６８】
図９はデータ回復プログラム２０９での処理動作の詳細を説明するフローチャートであり、次に、これについて説明する。なお、ここでの処理は、図６に示して説明したフローのステップ６０４での処理の詳細である。
【００６９】
（１）データ回復プログラム２０９は、図６に示して説明したリストア処理におけるステップ６０３の処理で取得したバックアップファイルリストの先頭ファイル名に対応するバックアップファイル File(x)、 File(x+1)をオンラインストレージサービスＡ１０３、Ｂ１０４のそれぞれからダウンロードして取得する（ステップ９０１）
（２）変数tmp Array を空（NULL）にし、Local ＤＢ２１１からステップ９０１の処理で取得したファイル名 File(x)のエントリのデータを取得し、取得したデータのどのカラムに、回復するアプリデータ名があるかを調べる（ステップ９０２〜９０４）。
【００７０】
（３）ステップ９０４の調べで、回復するアプリデータ名がアプリデータ名i ４０３にあった場合、変数ｙに変数ｘの値を代入し、変数ｚに変数ｘ＋１の値を代入し、また、ステップ９０４の調べで、回復するアプリデータ名がアプリデータ名ii４０４にあった場合、変数ｙに変数ｘ＋１の値を代入し、変数ｚに変数ｘの値を代入し、その後、変数ｊに０を代入する（ステップ９０５〜９０７）。
【００７１】
（４）ステップ９０３の処理で取得したデータの格納ブロック数が変数ｊよりも大きいか否かを確認し、取得したデータの格納ブロック数が変数ｊよりも大きかった場合、変数ｊが偶数であるか否かを確認する（ステップ９０８、９０９）。
【００７２】
（５）ステップ９０９の確認で、変数ｊが偶数であった場合、ステップ９０１の処理で取得した File(y)のｊ番目のデータブロックを変数 tmp Arrayに追加し、また、ステップ９０９の確認で、変数ｊが偶数ではなく奇数であった場合、ステップ９０１の処理で取得した File(z)のｊ番目のデータブロックを変数 tmp Arrayに追加し、その後、変数ｊに１を加算して、ステップ９０８からの処理に戻って処理を続ける（ステップ９１０、９１２、９１１）。
【００７３】
（６）ステップ９０８の確認で、ステップ９０３の処理で取得したデータの格納ブロック数が変数ｊと同じか小さかった場合、図６に示して説明したリストア処理のステップ６０３の処理で取得したバックアップファイルリストの次のファイル名があるか否かを確認する（ステップ９１３）。
【００７４】
（７）ステップ９１３の確認で、ステップ６０３の処理で取得したバックアップファイルリストの次のファイル名があった場合、対応するファイル名に対応するファイル File(x)、 File(x+1)をオンラインストレージサービスＡ１０３、Ｂ１０４のそれぞれからダウンロードし、ステップ９０３からの処理に戻って処理を続ける（ステップ９１４）。
【００７５】
（８）ステップ９１３の確認で、ステップ６０３の処理で取得したバックアップファイルリストの次のファイル名がなかった場合、Data Name ２１４と回復するアプリデータ名とが同一か否かを確認し、同一であった場合、tmp Array にFile Localのデータを追加する（ステップ９１５、９１６）。
【００７６】
（９）ステップ９１５の確認で、Data Name ２１４と回復するアプリデータ名とが同一でなかった場合、あるいは、ステップ９１６の処理の後、tmp Array をkey ２１２を用いて復号し、回復したいアプリデータ名のファイルとして、ここでの処理を終了する（ステップ９１７）。
【００７７】
前述した本発明の実施形態における各処理は、処理プログラムとして構成し、装置が備えるＣＰＵに実行させることができ、また、この処理プログラムは、ＨＤ、ＤＡＴ、ＦＤ、ＭＯ、ＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ等の記録媒体に格納して、あるいは、通信回線を介したデジタルデータとして提供することができる。
【００７８】
前述した本発明の実施形態によれば、保存すべきバックアップデータを暗号化し、暗号処理単位であるブロックを分断するように複数に分割して、第三者が運営するデータ保存サービスシステム上に保存することとしているので、保存されている分割されたデータの１つが盗まれてたとしても、平文を生成するために必要な情報量が揃っていないため、データ復号化の試みを無効にし、安全にデータの保存を行うことができる。
【００７９】
また、本発明の実施形態は、さらに、暗号化して複数に分割したバックアップデータを同じバックアップデータの分断したデータブロックが連続して含まれないように、他のバックアップデータと組み合わせて、第三者が運営するデータ保存サービスシステム上に保存することとしているので、より安全にデータの保存を行うことができる。
【符号の説明】
【００８０】
１０１  サーバ
１０２  バックアップproxy
１０３、１０４  オンラインストレージサービスＡ、Ｂ
１０５  がネットワーク
２０１  ＣＰＵ
２０２  メモリ
２０３  通信部
２０４  入力部
２０５  出力部
２０６  記憶装置
２０７  バス
２０８  データ混合プログラム
２０９  データ回復プログラム
２１０  Data ＤＢ
２１１  Locate ＤＢ
２１２  Key
２１３  File Local
２１４  Data Name
２１５  num
【図１】
2011175578.tif 000003
【図２】
2011175578.tif 000004
【図３】
2011175578.tif 000005
【図４】
2011175578.tif 000006
【図５】
2011175578.tif 000007
【図６】
2011175578.tif 000008
【図７】
2011175578.tif 000009
【図８】
2011175578.tif 000010
【図９】
2011175578.tif 000011