以下、本発明の実施形態について、図面を用いて説明する。以下に述べる実施の形態は「秘密分散(Secret Sharing)」の技術を利用する場合について説明するが、本発明の適用範囲は秘密分散に限定されない。「秘密分散」とは、元のデータを、それぞれの単独では類推することが困難な複数のデータに変換し、それら複数のデータを分割又は分散して保管する技術のことである。すなわち秘密分散は、データを複数に分割する技術の一つである。したがって本発明は、データを分割する技術全般への適用が可能である。
(第1の実施形態)
図1は、第1の実施形態におけるデータ管理システム1000の構成例を示す模式図である。データ管理システム1000は、データ管理装置100(100a,100b,100c,・・・)、データ管理サーバ200(200a,200b,200c,・・・)、を備える。データ管理装置100及びデータ管理サーバ200は、無線又は有線のネットワーク(例えばインターネット)300を介して接続される。データ管理装置100は、処理装置、データ処理装置の一例である。
データ管理装置100は、記憶部及び記憶装置の一例として、データを磁気的に記憶する磁気記憶媒体(例えばHDD(Hard Disk Drive))を備える。データ管理装置100は、例えば、秘密分散処理によりオリジナルデータ(元データ)に対して分散処理し、ネットワーク300を介して分散データを各データ管理サーバ200へ送信する。データ管理装置100は、例えば、ネットワーク300を介して分散データを取得し、秘密分散処理により複数の分散データから1つの元データを復号する。
データ管理装置100は、例えば、PC(Personal Computer),携帯型情報端末(例えばスマートフォン)を含む。
図1では、データ管理装置100aはユーザAに利用され、データ管理装置100bはユーザBに利用され、データ管理装置100cはユーザCに利用される。但し、これ以外の利用形態でもよく、1つのデータ管理装置100を複数のユーザが利用してもよい。
データ管理装置100は、秘密分散アプリケーションの処理を実行する。ユーザは、暗号化処理を操作する場合と同様の手軽な感覚で、秘密分散アプリケーションの処理を操作でき、秘密分散サービスを利用できる。なお、アプリケーションを単に「アプリ」とも称する。
データ管理サーバ200は、例えば、分散ファイルを保持する。図1では、分散ファイルが3つである場合を示しているが、3つ以外の数でもよい。データ管理サーバ200では、例えば、ユーザ毎に記憶領域が予め決められており、ユーザ毎に分散データが保持される。各データ管理サーバ200(200a,200b,200c)は、例えば、各データセンタ(データセンタA,B,C)に設けられたサーバ装置である。
図2は、データ管理装置100のハードウェア構成例を示すブロック図である。
データ管理装置100は、CPU(Central Processing Unit)11、LAN(Local Area Network)接続部12、HDD13、RAM(Random Access Memory)14、ROM(Read Only Memory)15、及び操作部16を備える。
CPU11は、例えば、RAM14又はROM15からプログラム及びデータを読み出し、プログラムを実行することで、各種処理(例えば各種制御、各種設定、各種判別)を実施する。このプログラムは、各種プログラム(例えば、ソフトウェア(ソフト)、アプリケーション(アプリ)、OS((Operating System)、例えば、Windows(登録商標))、ミドルウェア、のプログラム)を広く含む。CPU11は、動作モードとして、ユーザモードとカーネルモードとを含む。
LAN接続部12は、例えば、LANケーブルが接続され、有線通信を可能にしてもよい。LAN接続部12は、例えば、無線LANアダプタを含み、無線通信を可能にしてもよい。LAN接続部12は、各種データ、ファイルを通信する通信機能を有する。
HDD13は、様々なデータ、ファイルを記憶する。HDD13の全体又は一部には、例えば、Cドライブが割り当てられる。データ管理装置100は、記憶部として、HDD13の代わりに、例えば、SSD(Solid State Drive)を備えてもよいし、外部I/Oを介してUSBメモリが接続されてもよい。
ファイルは、データの集合体により構成される。HDD13に記憶されるデータには、例えば、空データが含まれる。空データは、NULLデータのみにより構成されたデータである。空ファイルは空データの集合体により構成される。
RAM14は、各種データを記憶し、例えば、メインメモリとして用いられる。ROM15は、各種データ(例えば、書き換え不要なデータ、電源投入時に読み込まれるプログラム)が記憶される。
操作部16は、データ管理装置100のユーザからの各種操作を受け付ける。操作部16は、例えば、各種キー、ボタン、タッチパネルにより構成される。
図3は、データ管理装置100のソフトウェア構成例を示すブロック図である。図3では、データ管理装置100におけるソフトウェアのコンポーネントが、階層的に示されている。図3に図示しているが、二次記憶装置157、ストレージサーバ201、及びメモリ172は、ハードウェアである。ストレージサーバ201は、データ管理サーバ200に含まれる。
データ管理装置100は、アプリケーション処理部110(以下、アプリ処理部110)秘密分散モジュール120、及びAPI(Application Programming Interface)部130を含む。これらの部位は、アプリ領域に配され、ユーザモードにおいて動作する。
アプリ処理部110は、各種アプリの処理を実行する。アプリは、例えば、汎用アプリ、ユーティリティソフト、文書作成ソフト、表計算ソフト、プレゼンテーションソフト、データベースソフト、メールソフトを含む。アプリ処理部110により実行されるアプリを、秘密分散アプリ(秘密分散処理)に対して、第1アプリとも称する。
秘密分散モジュール120は、秘密分散処理を実行するためのソフトウェアの集合体を含み、秘密分散アプリに係る処理を行う。秘密分散モジュール120は、アクセス制御部121、外部I/O制御部122、秘密分散設定部123、及び秘密分散部124を含む。
アクセス制御部121は、データ管理装置100における所定の領域へのアクセスの可否を判別する。アクセス制御部121は、フィルタドライバ152におけるアクセス制御部153と連携し、アクセス制御部153との間でデータを送受する。アクセス制御部121は、例えば、秘密分散設定部123に保持された設定情報を参照し、アクセス先が秘密分散対象の領域(例えばドライブ、フォルダ、又はファイル)であるか否かを判別し、判別結果をフィルタドライバ152に送る。
外部I/O制御部122は、外部記憶装置との間におけるデータ送受の可否を判別し、外部記憶装置に対するアクセス制御を行う。外部記憶装置は、例えば、ネットワーク300を介して接続されたストレージサーバ201、USBを介して接続された記憶装置、LANを介して接続された記憶装置、SDカード、を含む。
秘密分散設定部123は、例えば、秘密分散処理に関する設定情報を設定、保持する。この設定情報には、例えば、秘密分散処理の対象となる領域の情報、分散ファイルの数、分散ファイルの保存先、秘密分散処理の処理方式(秘密分散方式)、分散比率、空ファイルの保存先、空ファイルの圧縮の有無、の情報が含まれる。分散ファイルの保存先の情報(アドレス情報)と、空ファイルの保存先の情報(アドレス情報)とは、対応づけて保持される。設定情報は、元データ、空データ、及び分散データを関連付けるための生成データの一例である。
分散ファイルの保存先は、例えば、ストレージサーバ201などの外部記憶装置である。秘密分散方式は、例えば、しきい値秘密分散法(k,n閾値法)、ランプ型閾値秘密分散法、を含む。空ファイルは、例えば、空データ(例えば「000・・・」(NULL)のデータ)を含む。空ファイルの保存先は、例えば、二次記憶装置157である。
秘密分散部124は、分散処理部125及び復号処理部126の少なくとも一方を含む。秘密分散処理は、分散処理及び復号処理の少なくとも一方を含む。秘密分散処理は、メモリ172においてデータが展開され、実行される。
分散処理部125は、所定の秘密分散方式を用いて、元データから複数の分散データを生成する。分散処理部125は、分散処理する際、秘密分散設定部123により保持された設定情報を参照する。例えば、分散処理部125は、設定情報に含まれる分散ファイルの保存先の情報を読み込み、外部I/O制御部122を介して、分散ファイルの保存先(例えばストレージサーバ201)へ分散ファイル(又は分散ファイルに含まれる分散データ)を送信させる。分散処理部125は、例えば、API部130を介して、二次記憶装置157へ分散ファイル(又は分散ファイルに含まれる分散データ)を送信させてもよい。
復号処理部126は、分散処理時に用いられた所定の秘密分散方式を用いて、複数の分散データから元データを生成する。復号処理部126は、復号処理する際、秘密分散設定部123により保持された設定情報を参照する。例えば、復号処理部126は、設定情報に含まれる分散ファイルの保存先の情報を読み込み、外部I/O制御部122を介して、分散ファイルの保存先(例えばストレージサーバ201)から分散ファイルを取得させる。
従って、秘密分散モジュール120は、元データを分散して複数の分散データを生成し、分散データの少なくとも1つをストレージサーバ201(データ管理サーバ200の一例)に記憶させる分散部又は分割部としての機能を有する。
API部130は、例えば、アプリの呼出手順、記述方法を定めた仕様を示すインタフェースを提供する。このインタフェースにより、例えば、各アプリの機能の一部を外部のソフトウェア(例えばOS)が参照し易くなる。また、API部130は、データをシステム領域のI/Oマネージャ151に送る。これにより、I/Oマネージャ151以下の層においてデータを使用できる。また、API部130は、データを秘密分散モジュール120へ送る。API部130は、例えば、Win32APIを含む。
データ管理装置100は、I/Oマネージャ151、フィルタドライバ152、FSD(File System Driver)155、下位ドライバ156、二次記憶装置157、リダイレクタFSD161、プロトコルドライバ162、メモリマネージャ171、及びメモリ172を含む。これらの部位は、システム領域に配され、カーネルモードにおいて動作する。
I/Oマネージャ151は、API部130と連携して、カーネルモードの領域とユーザモードの領域との間におけるデータの入出力を管理する。I/Oマネージャ151は、アプリ処理部110からのファイル操作に関する各種要求(例えば、オープン(Open)要求、クローズ(Close)要求、ライト(Write)要求、リード(Read)要求)を下層(例えば、フィルタドライバ152、FSD155)に送信し、それらの要求に対する処理の結果を受信する。この各種要求は、例えば、IRP(I/O Request Packet)に含まれる(後述の図5及び図6も参照)。
フィルタドライバ152は、アクセス制御部153及びデータ制御部154を含む。フィルタドライバ152は、I/Oマネージャ151とFSD155との間に、ドライブ毎に、配されるドライバである。フィルタドライバ152は、秘密分散モジュール120と連携する。フィルタドライバ152は、元のデータ(第1のデータの一例)とは異なる第2のデータを生成し、第1のデータを秘密分散モジュール120(分散部又は分割部の一例)へ送り、第2のデータを第1のデータの代わりに出力する制御部の一例である。
アクセス制御部153は、秘密分散モジュール120のアクセス制御部121との間でデータを送受する。アクセス制御部153は、ファイルに関する各種要求に含まれるアクセス先(例えば、ファイルの保存先)を用いて、秘密分散モジュール120に対してアクセス先が秘密分散対象の領域であるか否かを問い合わせ、秘密分散モジュール120から問い合わせ結果を受信する。
なお、本実施形態では、ファイルが秘密分散対象であるか否かは、その都度、秘密分散モジュール120に問い合わせているが、事前にアクセス制御部153に秘密分散対象であるか否かを記憶しておき、その都度問い合わせしなくてもよい。
データ制御部154は、秘密分散モジュール120の秘密分散部124との間で元データを送受する。
データ制御部154は、アプリ処理部110から元ファイルの書き込み要求を受け、秘密分散対象の領域内の元データである場合、元データの代わりに空データを生成する。データ制御部154は、生成された空データを、例えばFSD155を介して二次記憶装置157に送り、元データ(平文データを含む)を、秘密分散モジュール120を介してメモリ172へ送る。この元データは、分散処理に用いられるデータである。
データ制御部154は、アプリ処理部110から空ファイルの読み出し要求を受け、秘密分散対象の領域内の元データである場合、空データを、例えばFSD155を介して二次記憶装置157から取得し、元データ(平文データを含む)を、秘密分散モジュール120を介してメモリ172から取得する。この元データは、復号処理により得られたデータである。データ制御部154は、空ファイルを、元データを含む元ファイルに差し替えて、アプリ処理部110へ送る。
なお、空データの代わりに、他の所定のデータを用いてもよい。この所定のデータは、分散処理前又は復号処理後のデータ(元データ)から類推できない(類推されない)データにより構成される。この場合、秘密分散設定部123が保持する設定情報は、元データから類推できない所定のデータ(例えば乱数)を含む所定のファイルを生成するための情報を含んでもよい。元データは、元ファイルに含まれる。
なお、秘密分散対象の領域外の元データについては、データ制御部154は、元データをそのままFSD155に送信する。
FSD155は、ファイルシステム(例えば、FAT(File Allocation Table)、NTFS(NT File System))を管理する。
FSD155は、二次記憶装置157において空データが圧縮される場合、圧縮情報を保持し、下位ドライバ156を介して圧縮された空データを二次記憶装置157へ送る。
下位ドライバ156は、FSD155よりも下位のドライバであり、例えば、データ管理装置100の内部にあるHDD13の制御を行うハードディスクドライバである。なお、下位ドライバ156は、HDD13の代わりに、データ管理装置100の外部にあるストレージサーバと、ネットワークを介して接続し制御してもよい。
二次記憶装置157は、データ管理装置100に内蔵された記憶デバイスである。二次記憶装置157は、例えばHDD13、SSDを含む。
フィルタドライバ152、FSD155、下位ドライバ156、及び二次記憶装置157は、例えば論理ドライブ毎に配される。論理ドライブは、例えば、HDD13、SDカード、USBにおける各パーティションを含む。
リダイレクタFSD161は、データの入力元又は出力先を二次記憶装置157以外の外部記憶装置とし、外部記憶装置へアクセスするためのドライバである。
プロトコルドライバ162は、例えば、ネットワーク300を介してデータ管理装置100がストレージサーバ201と接続するためのプロトコル制御を行う。
メモリマネージャ171は、メモリ172の管理を行う。メモリマネージャ171は、例えば、メモリ172へのデータ(例えば、分散データ、元データ)の書き込み、メモリ172からのデータの読み出し(例えば、分散データ、元データ)を制御する。
メモリ172は、データ管理装置100に内蔵された記憶デバイスである。メモリ172は、例えば、RAM14を含む。メモリ172は、データを一時的に記憶する一時記憶部であり、二次記憶装置157とは異なる。
ストレージサーバ201は、例えば、データ管理サーバ200に含まれる。ストレージサーバ201には、例えば、ネットワーク300を介して分散データが転送されて保持される。ストレージサーバ201に保持された分散データは、例えば、ネットワーク300を介してメモリ172へ転送される。ストレージサーバ201は、蓄積部の一例である。
次に、データ管理サーバ200の構成例について説明する。
データ管理サーバ200は、特に図示はしないが、少なくとも、通信部及び蓄積部(例えばストレージサーバ201)を備える。通信部は、ネットワーク300を介して、データ管理装置100との間でデータ(例えば分散データ)を通信する。例えば、通信部は、データ管理装置100から分散データの読み取り要求を受けると、分散データをデータ管理装置100へ送信する。蓄積部は、データ(例えば分散データ)を蓄積する。
データ管理サーバ200は、データ管理装置100と同じ秘密分散機能を有してもよい。この場合、データ管理サーバ200では、データ管理サーバ200にあるI/Oマネージャの上層に、サーバFSDが配置される。サーバFSDは、受信部としての機能を有し、データ管理装置100からのデータを受信する。データ管理サーバ200が上記のように、データ管理装置100と同じ機能を持つ場合、空ファイルをストレージサーバ201に保存してもよいし、データ管理サーバ200で生成した空ファイルをデータ管理装置100に送信してもよい。
次に、データ管理装置100におけるデータの流れについて説明する。
図4は、データ管理装置100におけるデータの流れの一例を示す模式図である。
第1アプリにより元ファイルに含まれる元データの書き込み要求(ライト要求)が発生した場合、フィルタドライバ152は、元データと元データの属性情報(例えば、元データのサイズ、元データの保存先など、元データの各種情報を含む)とを受け、元データと空データとを差替え、空データと元データの属性情報とをFSD155へ送る。FSD155は、送られてきた空データと元データの属性情報とを関連付けて、元ファイルの代わりに、第1アプリがファイルとして扱える空ファイルを二次記憶装置157(例えばHDD13)に保持させる。フィルタドライバ152は、空データに差替えられた元データと元データの属性情報を秘密分散モジュール120に送る。秘密分散モジュール120は、元データの属性情報を参照し、元データを分散処理して、複数の分散ファイルを生成する。分散ファイルの1つは、例えばHDD13に保持されてもよいし、他の領域(例えばストレージサーバ201)に保持されてもよい。
第1アプリにより元データの読み出し要求(リード要求)が発生した場合、フィルタドライバ152は、FSD155を介してHDD13から空ファイルに含まれる空データと元データの属性情報を取得する。次に、フィルタドライバ152は、秘密分散モジュール120に元データの属性情報を送り、秘密分散モジュール120から元データを取得する。この元データは、秘密分散モジュール120が元データの属性情報を参照して取得して複数の分散ファイルから復号処理することで、得られる。フィルタドライバ152は、HDD13から取得した空データを、秘密分散モジュール120から取得した元データに差し替え、その元データと元データの属性情報を第1アプリに送る。最終的に第1アプリには、HDD13に保持された空ファイルに含まれる空データではなく、元データが渡される。
図4のように、フィルタドライバ152は、元データの属性情報(例えば、第1アプリが元データのファイル名に付加する拡張子(「.doc」など))を変えずに、元データから空データへの差し替え及び空データから元データへの差し替えを行う。第1アプリから見た場合、元データが含まれているか否かを意識することなくファイルは取り扱われる。第1アプリの書き込み要求(ライト要求)によってHDD13に保存されたファイルには、元データが含まれない。元データは、複数の分散データ(又は分割データ)となって、データ管理装置100以外の装置にそれぞれ保存される。しかしながら、第1アプリの読み出し要求(リード要求)によってHDD13から読み出されるファイルには、常に元データが含まれる。元データは、データ管理装置100以外の装置にそれぞれ保存された複数の分散データから復号される。ユーザは、元データが複数の分散データ(又は分割データ)となってデータ管理装置100以外の装置にそれぞれ保存されていることを意識することなく、元データを利用することができる。ユーザには、元データが、常にデータ管理装置100の中にあるかように見える。ユーザは、秘密分散を意識することなく、秘密分散を利用することができる。
なお、空ファイルは、0が並ぶ連続した値のため、空ファイルのデータは効率よく圧縮される。その結果、データ管理装置100は、HDD13に保存される圧縮された空ファイルのデータ量を、元データよりも大幅に削減できる。
また、空ファイルでなくとも、例えば1が並ぶ連続した値でも、効率よく圧縮することができる。
次に、データ管理装置100による分散処理時の動作例について説明する。なお、フィルタドライバ152と二次記憶装置157との間は、図4に示すようにFSD155を介して行うが、以降の説明では省略する。
図5はデータ管理装置100による分散処理時の動作例を示すシーケンス図である。図5では、一例として、I/Oマネージャ151、フィルタドライバ152、秘密分散モジュール120、二次記憶装置157、及びストレージサーバ201における動作例を説明する。なお、秘密分散モジュール120は、常時起動しており、つまり秘密分散アプリが常駐していることを想定する。
図5では、アプリ処理部110が、所定のファイル(ユーザにとって保存対象のファイル)を、所定の保存場所(例えば二次記憶装置157)に保存(書き込み)するよう指示した場合を例示する。所定のファイルは、例えば、元データ「XYZ」を含む元ファイルである。
まず、I/Oマネージャ151は、ファイルオープン要求をフィルタドライバ152へ送る(S101)。ファイルオープン要求は、例えば、IRPに含まれる。ファイルオープン要求には、例えば、操作部16を介してユーザに指示されたアドレス情報(例えば、空ファイルのアクセス先の情報)が含まれる。
フィルタドライバ152は、ファイルオープン要求を受けると、秘密分散開始通知を秘密分散モジュール120へ送る(S102)。秘密分散開始通知は、上記アドレス情報が秘密分散対象の領域か否かを問い合わせる通知であり、例えば、上記アドレス情報を秘密分散開始通知として秘密分散モジュール120へ送る。
秘密分散モジュール120は、秘密分散開始通知を受けると、秘密分散設定部123により設定された設定情報に含まれ、上記アドレス情報から分散ファイルの保存先(例えばストレージサーバ201)のアドレス情報を参照する。そして、上記アドレス情報が秘密分散対象である場合、秘密分散モジュール120は、分散ファイルを開くための分散ファイルオープン要求を各ストレージサーバ201へ送信する(S103)。ストレージサーバ201は、例えば、図1では3台存在する。
ストレージサーバ201へのアクセスに失敗した場合には、例えば、ストレージサーバ201へのアクセスが許可されていない場合、ネットワーク300に不具合がある場合、が含まれる。この場合、秘密分散モジュール120には、エラー通知が返送される。
ストレージサーバ201へのアクセスが可能な場合には、ストレージサーバ201は、分散ファイルオープン要求を受信する。ストレージサーバ201は、分散ファイルオープン要求に応じて、分散ファイルを作成し、分散ファイルを開く。ストレージサーバ201は、分散ファイルオープン要求に対して分散ファイルを開いたか否か(アクセス可否)の情報を、結果通知に含めて秘密分散モジュール120へ送信する(S104)。
秘密分散モジュール120は、各ストレージサーバ201から結果通知を受信すると、分散ファイルへのアクセス可否の情報を、結果通知に含めてフィルタドライバ152へ送る(S105)。なお、ユーザから指示されたファイルが秘密分散対象ではない場合、結果通知にて秘密分散対象ではない旨を通知し、フィルタドライバ152は、秘密分散を行わない通常の処理を行う。
S103,S104の処理は、分散ファイル数分、反復される。
フィルタドライバ152は、ファイルオープン要求を受けると、ファイルオープン要求を含むIRPを、元ファイルから置換される空ファイルを保存する保存先(例えば二次記憶装置157)へ転送する(S106)。この保存先は、例えばユーザから操作部16を介して指定された保存先である。
二次記憶装置157は、ファイルオープン要求を受信すると、空ファイルを保存可能か否かの情報を判別する。空ファイルを保存可能か否かは、例えば、二次記憶装置157において、所定のポリシーが予め定められている。所定のポリシーは、例えば、保存可能なユーザ、保存可能な期間、が含まれる。空ファイルを保存可能な場合、空ファイルを作成し、空ファイルを開く。二次記憶装置157は、ファイルオープン要求に対して空ファイルを開いたか否かの情報を、結果通知に含めてフィルタドライバ152へ送る(S107)。この結果通知は、IRPに含まれる。
フィルタドライバ152は、二次記憶装置157に対して、データ管理装置100におけるファイルシステムがNTFSの場合、NTFSの一機能である圧縮属性の設定を行う(S108)。圧縮属性の有無の情報は、例えば、秘密分散設定部123が保持する設定情報に含まれる。これにより、二次記憶装置157の使用容量を軽減できる。S108は、省略されてもよい。
フィルタドライバ152は、秘密分散モジュール120及び二次記憶装置157からの結果通知を受けると、ファイルオープン可能か否かの結果通知をI/Oマネージャ151に送る(S109)。その結果通知は、IRPのステイタス部分に含まれている。
I/Oマネージャ151は、空ファイル及び分散ファイルを開いたと通知された場合、ファイルライト要求をフィルタドライバ152へ送信する(S110)。ファイルライト要求は、IRPに含まれる。IRPのデータ部分には、例えば、平文で、元ファイルに含まれる元データ「XYZ」が格納される。
フィルタドライバ152は、ファイルライト要求を受けると、IRPに含まれる元データ(例えば「XYZ」)の代わりに空データ(例えば「000」、NULLデータ)を生成する。フィルタドライバ152は、生成された空データをIRPのデータ部分に差し替えて格納し、IRPを二次記憶装置157へ送る(S111)。フィルタドライバ152は、順次生成された空データを二次記憶装置157に順次送る。
二次記憶装置157は、フィルタドライバ152からの空データを順次受け取り、空ファイルに書き込む。二次記憶装置157は、二次記憶装置157への空ファイルの書き込みが正常に終了したか否かを示す結果通知を、フィルタドライバ152へ送る(S112)。この結果通知は、IRPに含まれて送られる。S108において圧縮属性が有効に設定されている場合、FSD155が空データを圧縮し、例えば、「0」の情報と「0」の個数の情報とを、二次記憶装置157の空ファイルに書き込む。
フィルタドライバ152は、I/Oマネージャ151からファイルライト要求を含むIRPを受け、IRPのデータ部分に含まれる元データを、秘密分散モジュール120に転送する(S113)。
秘密分散モジュール120は、フィルタドライバ152から元データを受けると、元データ(例えば「XYZ」)と設定情報とに基づいて分散処理し、複数の分散データ(例えば「xyz1」、「xyz2」、「xyz3」)を生成する。この場合、秘密分散モジュール120は、秘密分散設定部123により設定された設定情報に含まれる分散ファイルの保存先の情報を参照する。秘密分散モジュール120は、分散ファイルを書き込むための分散ファイルライト要求を、分散ファイルの保存先としての各ストレージサーバ201へ送信する(S114)。各ストレージサーバ201への分散ファイルライト要求には、各分散データが含まれる。
各ストレージサーバ201は、分散ファイルライト要求を受信すると、秘密分散モジュール120からの分散データを順次受け取り、分散ファイルに書き込む。各ストレージサーバ201は、各ストレージサーバ201への分散データの書き込みが正常に終了したか否かを示す結果通知を、秘密分散モジュール120へ送信する(S115)。
例えば、元データが「XYZ」である場合、第1のストレージサーバ201には分散データ「xyz1」が記憶され、第2のストレージサーバ201には分散データ「xyz2」が記憶され、第3のストレージサーバ201には分散データ「xyz3」が記憶される。
秘密分散モジュール120は、各ストレージサーバ201から結果を受信すると、分散ファイルの書き込みが正常に終了したか否かの情報を結果通知に含めて、フィルタドライバ152へ送る(S116)。
S114,S115の処理は、分散ファイル数分、反復される(本実施形態では3回)。S111,S112の処理とS113〜S116の処理とは、順序が逆でもよい。つまり、S111,S112の処理が、S113〜S116の処理の後でもよい。
フィルタドライバ152は、秘密分散モジュール120及び二次記憶装置157からの結果通知を受けると、分散ファイルの書き込み結果の情報を結果通知に含めて、I/Oマネージャ151に送る(S117)。この結果通知は、例えば、IRPのステイタス部分に含まれる。
S110〜S117のライト処理は、1回又は複数回実施される。例えば、先に例示したように、元データのデータ長が短い場合には、1回のライト処理で完了してもよい。元データのデータ長が長い場合には、フィルタドライバ152が元データを分割して分散処理を実施するので、複数回のライト処理が行われてもよい。
I/Oマネージャ151は、S110〜S117のライト処理が終了すると、ファイルクローズ要求をフィルタドライバ152へ送信する(S118)。ファイルクローズ要求は、IRPに含まれる。
フィルタドライバ152は、ファイルクローズ要求を受けると、ファイルクローズ要求を二次記憶装置157へ転送する(S119)。二次記憶装置157は、元ファイルと差し替えられた空ファイルの保存先である。ファイルクローズ要求は、IRPに含まれる。
二次記憶装置157は、ファイルクローズ要求を受けると、空ファイルを閉じる。二次記憶装置157は、ファイルクローズ要求に対して空ファイルを閉じたか否かの情報を、結果通知に含めてフィルタドライバ152へ送る(S120)。この結果通知は、IRPに含まれる。
フィルタドライバ152は、ファイルクローズ要求を受けると、分散処理を終了するための秘密分散終了通知を秘密分散モジュール120へ送る(S121)。秘密分散終了通知には、元ファイルを保存する保存先のアドレス情報が含まれてもよい。
秘密分散モジュール120は、秘密分散終了通知を受けると、分散ファイルを閉じるための分散ファイルクローズ要求を、各ストレージサーバ201へ送信する(S122)。
ストレージサーバ201は、分散ファイルクローズ要求を受信すると、分散ファイルを閉じる。ストレージサーバ201は、分散ファイルクローズ要求に対して分散ファイルを閉じたか否かの情報を、結果通知に含めて秘密分散モジュール120へ送信する(S123)。
秘密分散モジュール120は、各ストレージサーバ201から結果通知を受信すると、分散ファイルを閉じたか否かの情報を、結果通知に含めてフィルタドライバ152へ送る(S124)。
S121〜S124の処理は、分散ファイル数分、反復される。
フィルタドライバ152は、秘密分散モジュール120及び二次記憶装置157からの結果通知を受けると、空ファイル及び分散ファイルを閉じたか否かの情報を、結果通知に含めてI/Oマネージャ151に送る(S125)。結果通知は、例えば、IRPのステイタス部分に含まれる。
図5に示した分散処理時の動作例によれば、ユーザによる通常のデータ保存時の操作と同様の操作を受け付けることで、元ファイルから分散処理された分散データを、所定の場所へ保存できる。ユーザは、特に分散データの位置を意識していない。ユーザからは、空ファイルではなく元ファイルが管理されているように見える。空ファイルは、例えばユーザにとっての元ファイルの保存指定先に保管され、秘密分散設定部123に設定・保持される設定情報によって、分散ファイルと対応付けられている。
次に、データ管理装置100による復号処理時の動作例について説明する。
図6はデータ管理装置100による復号処理時の動作例を示すシーケンス図である。図6では、一例として、I/Oマネージャ151、フィルタドライバ152、秘密分散モジュール120、二次記憶装置157、及びストレージサーバ201における動作例を説明する。なお、秘密分散モジュール120は、常時起動しており、つまり秘密分散アプリが常駐していることを想定する。
図6では、アプリ処理部110が、所定のファイル(ユーザにとって読み出し対象のファイル)を、所定の保存場所(例えば二次記憶装置157)から読み出すよう指示した場合を例示する。この場合には、例えば、ユーザが、操作部16を介して、二次記憶装置157に記憶された空ファイルを選択した場合が含まれる。所定のファイルは、例えば、元データ「XYZ」を含む元ファイルである。
まず、I/Oマネージャ151は、アプリ処理部110から読み出し指示を受けると、ファイルオープン要求をフィルタドライバ152へ送る(S201)。ファイルオープン要求は、例えば、IRPに含まれる。ファイルオープン要求には、例えば、操作部16を介してユーザに指示されたアドレス情報(例えば、空ファイルのアクセス先の情報)が含まれてもよい。
フィルタドライバ152は、ファイルオープン要求を受けると、復号処理を開始するための秘密分散開始通知を秘密分散モジュール120へ送る(S202)。秘密分散開始通知には、上記アドレス情報が含まれている。
秘密分散モジュール120は、秘密分散開始通知を受けると、秘密分散設定部123により設定された設定情報に含まれ、上記アドレス情報(空ファイルのアドレス情報)から分散ファイルの保存先(例えばストレージサーバ201)のアドレス情報を参照する。そして、秘密分散モジュール120は、分散ファイルを開くための分散ファイルオープン要求を各ストレージサーバ201へ送信する(S203)。
ストレージサーバ201へのアクセスに失敗した場合には、秘密分散モジュール120には、エラー通知が返送され、フィルタドライバ152及びI/Oマネージャ151を介して、ユーザにエラーが通知される。
ストレージサーバ201へのアクセスが可能な場合には、ストレージサーバ201は、分散ファイルオープン要求を受信する。ストレージサーバ201は、ファイル分散ファイルオープン要求に応じて、読み出し対象の分散ファイルを開く。ストレージサーバ201は、分散ファイルオープン要求に対して分散ファイルを開いたか否か(アクセス可否)の情報を、結果通知に含めて秘密分散モジュール120へ送信する(S204)。
秘密分散モジュール120は、各ストレージサーバ201から結果通知を受信すると、分散ファイルへのアクセス可否の情報を、結果通知に含めてフィルタドライバ152へ送る(S205)。なお、ユーザから指示されたファイルが、秘密分散対象ではない場合、結果通知にて秘密分散対象ではない旨を通知し、フィルタドライバ152は、秘密分散を行わない通常の処理を行う。
S203,S204の処理は、分散ファイル数分、反復される。
フィルタドライバ152は、ファイルオープン要求を受けると、ファイルオープン要求を含むIRPを、読み出し対象のファイルから置換された空ファイルが保存された保存先(例えば二次記憶装置157)へ転送する(S206)。この保存先は、例えばユーザから操作部16を介して指定された保存先である。
二次記憶装置157は、ファイルオープン要求を受信すると、空ファイルを読み出し可能か否かの情報を判別する。空ファイルを読み出し可能か否かは、例えば、二次記憶装置157において、所定のポリシーが予め定められている。所定のポリシーは、例えば、読み出し可能なユーザ、読み出し可能な期間、が含まれる。空ファイルを読み出し可能な場合、空ファイルを開く。二次記憶装置157は、ファイルオープン要求に対して空ファイルを開いたか否かの情報を、結果通知に含めてフィルタドライバ152へ送る(S207)。この結果通知は、IRPに含まれる。
フィルタドライバ152は、秘密分散モジュール120及び二次記憶装置157からの結果通知を受けると、空ファイル及び分散ファイルを開いたか否かの情報を、結果通知に含めてI/Oマネージャ151に送る(S208)。結果通知は、例えば、IRPのステイタス部分に含まれる。
I/Oマネージャ151は、空ファイル及び分散ファイルを開いたと通知された場合、読み出し対象のファイルを読み出すためのファイルリード要求を、フィルタドライバ152へ送信する(S209)。ファイルリード要求は、例えばIRPに含まれる。
フィルタドライバ152は、ファイルリード要求を受けると、ファイルリード要求を二次記憶装置157へ転送する(S210)。ファイルリード要求は、例えばIRPに含まれる。
二次記憶装置157は、ファイルリード要求に対して、空ファイルの一部、つまり、空データ(例えば「000」、NULLデータ)を読み出し、空データをフィルタドライバ152へ送る(S211)。空データは、IRPのデータ部分に格納され、結果通知として送られる。
フィルタドライバ152は、ファイルリード要求を受けると、秘密分散モジュール120に対して、データ転送要求を送る(S212)。データ転送要求は、空ファイルの保存先の情報を含んでもよい。
秘密分散モジュール120は、データ転送要求を受けると、空ファイルに対応する分散ファイルを読み出すための分散ファイルリード要求を、分散ファイルの保存先としての各ストレージサーバ201へ送信する(S213)。
各ストレージサーバ201は、秘密分散モジュール120からの分散ファイルリード要求を受信すると、分散ファイルに格納された分散データを順次読み出す。各ストレージサーバ201は、読み出された分散データを結果通知に含めて、秘密分散モジュール120へ送信する(S214)。
例えば、第1のストレージサーバ201から分散データ「xyz1」が読み出され、第2のストレージサーバ201から分散データ「xyz2」が読み出され、第3のストレージサーバ201から分散データ「xyz3」が読み出される。
秘密分散モジュール120は、各ストレージサーバ201から各分散データを受信すると、各分散データ(例えば、「xyz1」、「xyz2」、「xyz3」)と設定情報とに基づいて復号処理し、1つの復号データとしての元データ(例えば「XYZ」)をメモリ172上に生成する。秘密分散モジュール120は、生成された元データ「XYZ」の平文を含む結果通知を、フィルタドライバ152へ送る(S215)。
S212,S213の処理は、分散ファイル数分、反復される。S210,S211の処理とS212〜S215の処理とは、順序が逆でもよい。つまり、S210,S211の処理が、S212〜S215の処理の後でもよい。
フィルタドライバ152は、二次記憶装置157から空データを含む結果通知を受け、秘密分散モジュール120から元データを含む結果通知を受ける。フィルタドライバ152は、空データを元データに差し替える。
フィルタドライバ152は、元データの平文(例えば「XYZ」)を、IRPのデータ部分に格納し、元データの読み出し結果の情報を、IRPのステイタス部分に格納する。フィルタドライバ152は、IRPを結果通知としてI/Oマネージャ151へ送る(S216)。
S209〜S216のリード処理は、1回又は複数回実施される。例えば、復号後の元データのデータ長が短い場合には、1回のリード処理で完了してもよい。復号後の元データのデータ長が長い場合には、フィルタドライバ152が元データの復号処理を複数回実施するので、複数回のリード処理が行われてもよい。
I/Oマネージャ151は、S209〜S216のリード処理が終了すると、ファイルクローズ要求をフィルタドライバ152へ送信する(S217)。ファイルクローズ要求は、IRPに含まれる。
フィルタドライバ152は、ファイルクローズ要求を受けると、ファイルクローズ要求を、二次記憶装置157へ転送する(S218)。二次記憶装置157は、読み出し対象のファイルと差し替えられた空ファイルの保存先である。ファイルクローズ要求は、IRPに含まれる。
二次記憶装置157は、ファイルクローズ要求を受けると、空ファイルを閉じる。二次記憶装置157は、ファイルクローズ要求に対して空ファイルを閉じたか否かの情報を、結果通知に含めてフィルタドライバ152へ送る(S219)。この結果通知は、IRPに含まれる。
フィルタドライバ152は、ファイルクローズ要求を受けると、分散処理を終了するための秘密分散終了通知を秘密分散モジュール120へ送る(S220)。秘密分散終了通知には、S202と同様に、空ファイルを保存する保存先のアドレス情報が含まれてもよい。
秘密分散モジュール120は、秘密分散終了通知を受けると、分散ファイルを閉じるための分散ファイルクローズ要求を、各ストレージサーバ201へ送信する(S221)。
ストレージサーバ201は、分散ファイルクローズ要求を受信すると、分散ファイルを閉じる。ストレージサーバ201は、分散ファイルクローズ要求に対して分散ファイルを閉じたか否かの情報を、結果通知に含めて秘密分散モジュール120へ送信する(S222)。
秘密分散モジュール120は、各ストレージサーバ201から結果通知を受信すると、分散ファイルを閉じたか否かの情報を、結果通知に含めてフィルタドライバ152へ送る(S223)。
S221,S222の処理は、分散ファイル数分、反復される。
フィルタドライバ152は、秘密分散モジュール120及び二次記憶装置157からの結果通知を受けると、空ファイル及び分散ファイルを閉じたか否かの情報を、結果通知に含めてI/Oマネージャ151に送る(S224)。結果通知は、例えば、IRPのステイタス部分に含まれる。
図6に示した復号処理時の動作例によれば、ユーザによる簡単な操作(例えば空ファイルの選択操作)を受け付けることで、分散ファイルが復号処理された元ファイルを、読み出し対象として取得できる。この場合、第1アプリは、特に分散ファイルの位置を意識せずに、空ファイルを取得しようとする。実際には、空ファイルから差し替えられる元ファイルを読み出し対象としており、空ファイルが分散ファイルと対応付けられている。従って、安全性高く分散して保存された分散データから元データが復号され、第1アプリが元データを取得できる。
次に、本実施形態のデータ管理システム1000と比較例のデータ管理システムとを比較する。図7(A)は、比較例のデータ管理システム1000Xを示す模式図である。図7(B)は、比較例のデータ管理システム1000Yを示す模式図である。
図7(A)では、データ管理装置100Xが、データ管理サーバ200X1,200X2から分散ファイルをダウンロードし、秘密分散アプリを用いて分散ファイルから元ファイルを復号し、元ファイルをHDD13Xに書き込む。
この場合、HDD13Xに元ファイルが書き込まれているが、例えばHDD13Xは静的(磁気的)にデータを記録する媒体であるので、一度HDD13Xに書き込まれた元データを完全に消去することは困難である。HDD13Xにおいて削除された元データは、復元される可能性もある。従って、仮に一時的であったとしても、HDD13Xに元データが書き込まれると、既存のアプリにより元ファイルが開かれる可能性がある。よって、情報が漏洩し、セキュリティが確保できない可能性がある。
元データをHDD13に記憶しない一例として、図7(B)では、データ管理装置100Yが、データ管理サーバ200Y1,200Y2から分散ファイルをダウンロードし、秘密分散アプリを用いて分散ファイルから元ファイルを復号し、元ファイルをメモリ172Yに書き込む。
この場合、メモリ172Yに元ファイルが書き込まれているが、通常のアプリは、API部130を介して、特定方向の領域(例えば、図3におけるI/Oマネージャ、FSD、下位ドライバ、二次記憶装置(例えばHDD)に対応する領域)以外に対してアクセスできない。つまり、通常のアプリは、メモリ172Yへ直接アクセスできない。そのため、メモリ172Yに書き込まれた元ファイルを開くためには、メモリ172Yに直接アクセスできるような専用のアプリを用意する必要があり、使用可能なアプリが制限される。
これに対し、データ管理システム1000によれば、元ファイルの代わりに、空ファイルを例えば二次記憶装置157(例えばHDD13)に記憶するので、元ファイルが二次記憶装置157に記憶されることによる情報漏洩のリスクを軽減でき、通常のアプリがメモリ172に直接アクセスする必要がないので、通常のアプリをそのまま利用することができる。
また、本実施形態においても、メモリ172には秘密分散処理時に元ファイルに含まれる元データが書き込まれるが、メモリ172は例えば静的(電気的)にデータを記憶し、二次記憶装置157と比較すると安全性が確保されている。つまり、メモリ172から元ファイルが削除されると、元ファイルに含まれる元データを復元することが極めて困難である。
また、二次記憶装置157に元ファイルを保持する代わりに、元ファイルと関連性のない所定のファイル(例えば空ファイル)を二次記憶装置157に保持する。この空ファイルは、秘密分散設定部123で設定・保管される設定情報により、元ファイルから分散処理された分散ファイルと紐付けされる。
なお、分散ファイルの1つを空ファイルの代わりとして利用するという方法も考えられるが、この場合、分散ファイルには、第1アプリと秘密分散アプリが両方アクセスすることになる。しかしながら、一般的なシステムでは、1つのファイルに対して、2つのアプリが同時にアクセスすることができない。そのため、本実施形態のように、第1アプリがアクセスする空ファイルと、秘密分散アプリがアクセスする分散ファイルと、をわけることで、一般的なシステムでも通常通り利用することができるようになる。
従って、専用のアプリを用いてメモリ172上の元ファイルを参照することなく、二次記憶装置157に記憶された空ファイルへのアクセスを基に、複数の分散ファイルを取得し、複数の分散ファイルから元ファイルを取得できる。
このように、空ファイルを一般的なファイルと同様に二次記憶装置157に記憶させることができるので、暗号化ファイルを二次記憶装置157に記憶させた場合と同様の手軽さで、秘密分散サービスを利用できる。また、二次記憶装置157(例えばHDD13)に元ファイルを書き込まないので、元ファイルが復元される可能性を低減でき、セキュリティを向上できる。
なお、空ファイルは、ストレージサーバ201に保持されてもよい。この場合、ストレージサーバ201では、空ファイルは、サーバFSDにより受信され、ストレージサーバ201の二次記憶装置に保持される。
(第2の実施形態)
図8は、第2の実施形態におけるデータ管理システム1000Aの構成例を示す模式図である。データ管理システム1000Aは、データ管理装置100A、データ管理サーバ200、及びコンテンツ配信サーバ400Aを備える。データ管理装置100A、データ管理サーバ200、及びコンテンツ配信サーバ400Aは、無線又は有線のネットワーク(例えばインターネット)300を介して接続される。データ管理サーバ200は、省略されてもよい。コンテンツ配信サーバ400Aは、データ管理サーバ200の1つでもよい。
図8のデータ管理システム1000Aにおいて、図1に示したデータ管理システム1000と同様の構成については、同一の符号を付し、説明を省略又は簡略化する。
データ管理装置100Aの構成は、図3に示したデータ管理装置100と同様の構成を有する。
データ管理装置100Aにおいて、外部I/O制御部122は、コンテンツ配信サーバ400Aにより生成されたサーバ設定情報を含む設定ファイル(バッチファイル)と、分散ファイルの一部と、をコンテンツ配信サーバ400Aから受信させる。
コンテンツ配信サーバ400Aから受信した設定ファイルがデータ管理装置100A上で実行されると、データ管理装置100Aは、コンテンツ配信サーバ400Aから受信した設定ファイルに含まれるサーバ設定情報に基づいて、秘密分散処理に関する設定情報を秘密分散設定部123に設定し、コンテンツ配信サーバ400Aから受信した分散ファイルの一部を、所定の保存場所(例えば、ストレージサーバ201、二次記憶装置157)に保存する。
コンテンツ配信サーバ400Aは、ネットワーク300を介してコンテンツを配信する。コンテンツは、例えば、画像データ(例えば動画、静止画含む)、映像データ、音楽データ、音声データ、文書データ、を広く含む。コンテンツ配信サーバ400Aは、ハードウェア構成として、例えば、データ管理装置100Aと同様に、CPU、LAN接続部、HDD、RAM、及びROMを備える。
図9は、コンテンツ配信サーバ400Aの構成例を示すブロック図である。コンテンツ配信サーバ400Aは、秘密分散モジュール410、通信部420、及び記憶部430を備える。コンテンツ配信サーバ400Aは、詳細には図示しないが、データ管理装置100と同様のソフトウェア構成を有してもよい。
秘密分散モジュール410は、アクセス制御部411、外部I/O制御部412、秘密分散設定部413、及び秘密分散部414を含む。秘密分散モジュール410は、コンテンツを構成する元データに関して秘密分散処理を行う。秘密分散部414は、分散処理部415及び復号処理部416を含む。
アクセス制御部411は、データ管理装置100のアクセス制御部121と同様の構成及び機能を有する。外部I/O制御部412は、データ管理装置100の外部I/O制御部122と同様の構成及び機能を有する。秘密分散設定部413は、データ管理装置100の秘密分散設定部123と同様の構成及び機能を有する。秘密分散部414は、データ管理装置100の秘密分散部124と同様の構成及び機能を有する。分散処理部415は、データ管理装置100の分散処理部125と同様の構成及び機能を有する。復号処理部416は、データ管理装置100の復号処理部126と同様の構成及び機能を有する。
通信部420は、ネットワーク300を介して、データ管理装置100との間で、各種データ(例えば、分散データ)を通信する。記憶部430は、各種データ、ファイル(例えば、分散データ、空データ、分散ファイル、設定ファイル)を記憶する。記憶部430は、データ管理装置100の二次記憶装置157と同様の構成を有する。
次に、データ管理システム1000Aにおけるデータの流れ及び動作の一例について説明する。
図10は、データ管理システム1000Aにおけるコンテンツ配信サーバ400Aとデータ管理装置100Aとの間のデータの流れの一例を示す模式図である。
データ管理システム1000Aの動作は、例えば、コンテンツの準備シーンと利用シーンとに分類される。準備シーンでは、コンテンツ配信サーバ400Aにより、コンテンツに係る元データに対して分散処理が実行され、分散データを含む配信データがデータ管理装置100へ送信される。準備シーンでは、データ管理装置100Aにより、配信データが受信され、空ファイルとコンテンツに係る分散ファイルとが所定の保存場所において保持され、秘密分散処理の実行に必要な所定の情報(設定情報)が設定される。利用シーンでは、データ管理装置100Aにより、コンテンツに係る分散ファイルに対して復号処理が実行され、元ファイルとしてのコンテンツファイルが得られる。
図10のコンテンツ配信サーバ400Aでは、分散処理部415は、コンテンツファイルとしての元ファイルに対して分散処理し、2つの分散ファイルを生成する。秘密分散の分散比率は、例えば、分散ファイル1:分散ファイル2=9:1である。なお、他の分散比率でもよく、分散ファイルが3つ以上でもよく、分散ファイルの一部が、データ管理サーバ200のストレージサーバ201に保持されてもよい。
コンテンツ配信サーバ400Aでは、分散処理部415が分散処理する場合、図示しないフィルタドライバ152により空ファイルを生成しても生成しなくてもよいが、秘密分散設定部413が、空ファイルを生成するための生成情報を保持する。空ファイルの生成情報は、秘密分散設定部413が設定情報として予め保持してもよいし、分散処理時に入力された情報に基づいて、秘密分散設定部413により生成されてもよい。
秘密分散設定部413は、サーバ設定情報を生成する。サーバ設定情報は、例えば、空ファイルの生成情報、データ管理装置100Aの秘密分散設定部123が用いる設定情報を生成するための情報、を含む。サーバ設定情報は、例えば、空ファイルの生成情報、分散ファイルの数、分散ファイルの保存先、秘密分散方式、分散比率、空ファイルを生成した際の保存先、空ファイルの圧縮の有無、元ファイルの属性情報等の情報を含む。サーバ設定情報は、分散処理部415による分散処理時に生成されてもよいし、例えばユーザが操作部16を介して、予めサーバ設定情報を設定してもよい。サーバ設定情報は、元データ、空データ、及び分散データを関連付けるための生成データの一例である。
秘密分散設定部413は、生成されたサーバ設定情報を、設定ファイル(例えばバッチファイル)に格納し、設定ファイルを記憶部430に保持させる。記憶部430は、分散処理により生成された複数の分散ファイル(例えば、分散ファイル1、分散ファイル2)と、設定ファイルと、を保持する。
記憶部430に記憶された分散ファイル1及び設定ファイルは、例えば、準備シーンにおけるデータ管理装置100Aからの送信要求に応じて、データ管理装置100Aへ送信される。記憶部430に記憶された分散ファイル2は、例えば、利用シーンにおけるデータ管理装置100Aからの送信要求に応じて、データ管理装置100Aへ送信される。
図11は、データ管理装置100Aの動作例を示すフローチャートである。図11では、S301〜S303が準備シーンにおける処理であり、S311〜S316が利用シーンにおける処理である。なお、秘密分散モジュール120は、常時起動しており、つまり秘密分散アプリが常駐していることを想定する。
データ管理装置100Aでは、例えば、ユーザが操作部16を介して、コンテンツ配信サーバ400Aが配信するコンテンツの送信を指示すると、外部I/O制御部122が、この送信要求を送信させ、コンテンツ配信サーバ400Aからコンテンツに係る配信ファイルを受信させる(S301)。この配信ファイルは、コンテンツ配信サーバ400Aの記憶部430に保持された分散ファイル1と設定ファイルとを含む。
続いて、データ管理装置100Aは、アプリ処理部110によりコンテンツに係る第1アプリの処理を実行するまでに、設定ファイルを用いてバッチ処理を実行する。バッチ処理により、設定ファイルに含まれるサーバ設定情報に基づいて、第1アプリに関連付けられる(すなわち、第1アプリによって処理可能であることを意味する)拡張子が付加された空ファイルと、秘密分散モジュール120の秘密分散設定部123が復号処理の際に用いる設定情報と、が生成される。この設定情報は、分散ファイル2の保存場所等、コンテンツ配信サーバ400Aにより実行された秘密分散処理に係る設定情報を含み、秘密分散設定部123により保持される(S302)。
設定情報が秘密分散設定部123に保持されたことで、秘密分散アプリの実行に必要な所定の情報が設定されたことになる。設定情報は、例えば、分散ファイル1、2の保存先、空ファイルの保存先、秘密分散方式、の情報を含む。
秘密分散設定部123は、分散ファイル1と空ファイルを、設定情報により指示された所定の保存先(例えば二次記憶装置157)に保持させる(S303)。なお、分散ファイル1と空ファイルの保存先は、ユーザが任意に設定できてもよいし、設定ファイルと同じ場所に生成するなど自動的に設定してもよい。また、秘密分散設定部123は、所定の保存先に保持された分散ファイルを隠しファイルにするほうが好ましい。これにより、ユーザから分散ファイル1が確認できない状態となる。
データ管理装置100Aによる準備シーンの動作例によれば、コンテンツ配信サーバ400Aから分散ファイルの一部と設定ファイルとを取得し、設定ファイルを実行することで、空ファイルの生成と設定情報の設定、保持を行うことができる。これにより、データ管理装置100Aでは、第1の実施形態における分散処理の実行後と同様の状態となる。つまり、空ファイルが所定の保存先(例えば二次記憶装置157)に保持され、分散ファイルが所定の保存先(例えば、二次記憶装置157とストレージサーバ201)に保持され、空ファイルが分散ファイルと対応付けられている。
準備シーンが終了した後、アプリ処理部110が、第1アプリを起動する(S311)。第1アプリの起動は、例えば、ユーザが操作部16を介して、空ファイルをクリックした場合に行われる。第1アプリの起動後には、図6の処理に相当する処理が開始される。
空ファイルが秘密分散対象の領域に保持されている場合、秘密分散モジュール120は、フィルタドライバ152を介して、所定の保存先(例えば二次記憶装置157)に保存されている設定情報を参照する(S312)。
外部I/O制御部122は、分散ファイル2に含まれる分散データの送信をコンテンツ配信サーバ400Aへ要求する。外部I/O制御部122は、コンテンツ配信サーバ400Aから分散ファイル2に含まれる分散データをダウンロードさせる(S313、図6のS214に相当)。
秘密分散モジュール120は、設定情報を参照し、分散ファイル1に含まれる分散データを、分散ファイル1の保存先(例えば、二次記憶装置157)から取得する(S314)。これにより、データ管理装置100Aにおいて、分散ファイル1のデータと分散ファイル2のデータとが揃う。
復号処理部126は、秘密分散設定部123に保持された設定情報を参照し、取得された分散ファイル1の分散データと分散ファイル2の分散データとを用いて、復号処理する(S315)。
フィルタドライバ152は、空ファイルに含まれる空データを二次記憶装置157から取得し、復号処理により得られた元データを秘密分散モジュール120から取得する。フィルタドライバ152は、空ファイルに含まれる空データを元データに差し替えて得られる元ファイルをアプリ処理部110へ送る(S316、図6のS216に相当)。これにより、アプリ処理部110は、元ファイルを得られる。
データ管理装置100Aによる利用シーンの動作例によれば、分散配置された分散ファイル2を利用シーンにおいて取得するので、準備シーンでは分散ファイルの一部が不足した状態であり、セキュリティを確保できる。ユーザ操作としては空ファイルの選択操作(例えばクリック)のみで、不足した分散ファイル2のダウンロード、復号処理、空ファイルと元ファイルとの差替えが行われるので、簡単に且つ安全にコンテンツを楽しむことができる。
また、例えば、有料のコンテンツ等、認証が必要なコンテンツについて、認証のタイミングは任意に設定され得る。例えば、準備シーンにおいて認証されてもよいし、利用シーンの直前において認証されてもよい。
なお、S311〜S316の処理は簡略化して説明したが、利用シーンの詳細の動作は、図6に示した復号処理時の動作例と同様である。
また、秘密分散モジュール120は、S302における設定ファイルの実行により、利用シーンの処理まで(S316まで)一括して実行してもよい。
データ管理装置100Aによれば、コンテンツの元データが分散処理されているので、データ管理装置100Aは安全に配信ファイルを受信でき、分散ファイルの一部を取得できる。また、配信ファイルに含まれる設定ファイルを実行することで、空ファイル及び設定情報を、データ管理装置100Aがコンテンツの元データを分散処理した場合と同様に取得できる。データ管理装置100Aが利用シーンにおいてコンテンツを実行する場合には、第1の実施形態における復号処理時と同様に、容易に且つ安全にコンテンツを楽しむことができる。
なお、データ管理装置100Aは、分散処理部125を有さず、分散処理機能を有しなくてもよい。コンテンツ配信サーバ400Aは、復号処理機能を有しなくてもよい。データ管理装置100A又はデータ管理サーバ200が、コンテンツ配信サーバ400Aとして動作してもよい。
(第3の実施形態)
第3の実施形態は、第2の実施形態の変形例である。
図12は、第3の実施形態におけるデータ管理システム1000Bの構成例を示す模式図である。データ管理システム1000Bは、データ管理装置100B、データ管理サーバ200、及びコンテンツ配信サーバ400Bを備える。データ管理装置100B、データ管理サーバ200、及びコンテンツ配信サーバ400Bは、無線又は有線のネットワーク(例えばインターネット)300を介して接続される。データ管理サーバ200は、省略されてもよい。コンテンツ配信サーバ400Bは、データ管理サーバ200の1つでもよい。
データ管理装置100Bの構成は、データ管理装置100Aの構成と同様であるので、構成についての説明を省略する。コンテンツ配信サーバ400Bの構成は、コンテンツ配信サーバ400Aの構成と同様であるので、構成についての説明を省略する。
データ管理システム1000Bは、データ管理システム1000Aと比較すると、以下の点が異なる。コンテンツ配信サーバ400Bでは、分散処理部415により分散処理する場合、図示しないフィルタドライバが空ファイルを生成し、分散ファイルと空ファイルとを記憶部430に保持させる。通信部420は、空ファイルの生成指示を含む設定ファイルではなく、空ファイルをデータ管理装置100Bへ送信させる。データ管理装置100Bは、コンテンツ配信サーバ400Bから、空ファイルと分散ファイルとを含む配信ファイルを受信する。
次に、データ管理装置100Bの動作例について説明する。
図13は、データ管理装置100Bの動作例を示すフローチャートである。図13では、図11に示したデータ管理装置100Aと同様の処理については、同一のステップ番号を付し、説明を省略又は簡略化する。なお、秘密分散モジュール120の秘密分散部124以外の、アクセス制御部121、外部I/O制御部122、及び秘密分散設定部123は、常時起動(常駐)しており、図13の処理開始時には、秘密分散部124は起動していないことを想定する。
準備シーンでは、データ管理装置100Bの外部I/O制御部122は、コンテンツ配信サーバ400Bから分散ファイル1及び空ファイルを受信させる(S401)。
操作部16は、秘密分散処理に係る設定操作(例えば分散ファイルの保存先及び空ファイルの保存先の設定操作)を受け付ける。秘密分散設定部123は、操作部16により受け付けた設定操作に応じた設定情報を設定し、保持する(S402)。
秘密分散設定部123は、受信された空ファイルを、設定情報により指示された所定の保存先(例えば二次記憶装置157)に保持させる(S403)。秘密分散設定部123は、受信された分散ファイル1を、設定情報により指示された所定の保存先(例えば二次記憶装置157)に保持させる(S403)。
利用シーンでは、データ管理装置100Bは、データ管理装置100Aと同様に、S311,S313〜S316の処理を実行する。但し、図13では、S312の代わりにS412の処理を実施する。S412では、フィルタドライバ152が、秘密分散モジュール120にアクセスし、秘密分散部124を起動する。
データ管理装置100Bによれば、コンテンツ配信サーバ400Bから分散ファイルの一部と空ファイルとを取得し、設定情報(例えば各ファイルの保存先の情報)を設定し、保持する。これにより、第1の実施形態における分散処理後と同様の状態となる。つまり、空ファイルが所定の保存先(例えば二次記憶装置157)に保持され、分散ファイルの一部が所定の保存先(例えばストレージサーバ201)に保持され、空ファイルが分散ファイルと対応付けられている。また、各ファイルの保存先の情報をユーザの意思により決定できるので、所望の設定情報を設定、保持できる。
(第4の実施形態)
第4の実施形態は、第2の実施形態の変形例である。
図14は、第4の実施形態におけるデータ管理システム1000Cの構成例を示す模式図である。データ管理システム1000Cは、データ管理装置100C、データ管理サーバ200、及びコンテンツ配信サーバ400Cを備える。データ管理装置100C、データ管理サーバ200、及びコンテンツ配信サーバ400Cは、無線又は有線のネットワーク(例えばインターネット)300を介して接続される。データ管理サーバ200は、省略されてもよい。コンテンツ配信サーバ400Cは、データ管理サーバ200の1つでもよい。
データ管理システム1000Cは、データ管理システム1000Aと比較すると、以下の点が異なる。コンテンツ配信サーバ400Cは、分散ファイル1Cを、配信ファイルとしてデータ管理装置100Cへ送信する。
分散ファイル1Cは、例えば、分散ファイル1のヘッダ部にサーバ設定情報を含む分散ファイルでもよい(図16(A)参照)。分散ファイル1Cは、例えば、元ファイルのヘッダ部にサーバ設定情報を含み、元ファイルの全体に対する分散処理により得られた分散ファイルでもよい(図16(B)参照)。
データ管理装置100Cは、データ管理装置100,100A,100Bと比較すると、秘密分散モジュール120の代わりに、秘密分散モジュール120Cを備える。秘密分散モジュール120Cは、秘密分散モジュール120が有する構成部に加え、ヘッダ解析部127を含む。
図15は、秘密分散モジュール120Cの構成例を示すブロック図である。ここでは、ヘッダ解析部127の構成のみ説明し、他の構成については説明を省略する。
ヘッダ解析部127は、コンテンツ配信サーバ400Cから受信された分散ファイル1Cに含まれるヘッダ部を読み込み、解析する。分散ファイル1Cのヘッダ部には、先述したサーバ設定情報が含まれる。ヘッダ解析部127は、サーバ設定情報に基づいて、設定情報と空ファイルを生成し、設定情報及び空ファイルを所定の保存場所(例えば、二次記憶装置157、秘密分散設定部123)に保持させる。ヘッダ解析部127は、例えば、秘密分散モジュール120の起動、及び第1アプリの起動を行ってもよい。
コンテンツ配信サーバ400Cの構成は、コンテンツ配信サーバ400Aの構成と同様であるので、構成についての説明を省略する。
図16(A),(B)は、分散ファイル1Cのフォーマット構成例を示す模式図である。
コンテンツ配信サーバ400Cの分散処理部415は、例えば、元ファイルを分散処理し、分散ファイル1を含む複数の分散ファイルを生成し、サーバ設定情報を生成する。秘密分散設定部413は、サーバ設定情報を、予め保持してもよいし、分散処理時に生成して保持してもよい。サーバ設定情報は、例えば、元ファイルの属性情報(例えば拡張子の情報)を含み、空ファイルの生成情報を含む。そして、分散処理部415は、生成したサーバ設定情報を分散ファイル1又は元ファイルのヘッダに付加して、分散ファイル1C(元データの場合には、ヘッダを付加したのち分散)として生成する。
つまり、コンテンツ配信サーバ400Cでは、コンテンツ配信サーバ400Aと比較すると、サーバ設定情報が、設定ファイルに含まれるのではなく、分散ファイル1C又は元ファイルのヘッダ部に含まれる点が異なる。
図16(A)に示すように、秘密分散設定部413は、データ部に分散ファイル1のデータを格納し、ヘッダ部にサーバ設定情報を格納して、分散ファイル1Cを生成し、記憶部430に保持させる。つまり、分散ファイル1Cは、分散ファイル1のデータと、サーバ設定情報と、を一つのファイルの中に含む。
図16(B)に示すように、秘密分散設定部413は、データ部に元ファイルのデータを格納し、ヘッダ部にサーバ設定情報(拡張子等の元ファイルの属性情報や秘密分散の有効期限)を格納したファイルに対して分散処理し、分散ファイルを生成してもよい。
なお、図16(B)では、データ管理装置100Cでは、ヘッダ解析部127が、空ファイルの生成前に、分散ファイル1Cのヘッダ部に対して復号処理し、サーバ設定情報を取得する。ヘッダ解析部127は、サーバ設定情報に応じて空ファイルを生成する。
図16(B)では、ヘッダ部に対しても分散処理されているので、ヘッダ部におけるセキュリティを向上できる。従って、このヘッダ部には、より秘匿性、機密性の高い情報を格納しても、情報漏洩の可能性を軽減できる。このヘッダに格納されるサーバ設定情報には、例えば、各種ID、元ファイルの有効期限を示す情報、が含まれる。秘密分散モジュール410は、生成された分散ファイル1Cを記憶部430に保持させる。
このように、図16(B)に示すフォーマット構成を用いる場合、ヘッダ部が改竄されることを抑制できる。
次に、データ管理装置100Cの動作例について説明する。
図17は、データ管理装置100Cの動作例を示すフローチャートである。図17では、分散ファイル1Cが、図16(A)に示したフォーマット構成を有する場合を想定する。なお、秘密分散モジュール120は、常時起動しており、つまり秘密分散アプリが常駐していることを想定する。
準備シーンでは、例えば、ユーザが操作部16を介して、コンテンツ配信サーバ400Cが配信するコンテンツの送信を指示すると、外部I/O制御部122が、この送信要求を送信させ、コンテンツ配信サーバ400Cからコンテンツに係る分散ファイル1Cを受信させる(S501)。この場合、コンテンツ配信サーバ400Cは、記憶部430に保持された分散ファイル1Cを送信する。分散ファイル1Cは、所定の保存先(例えば二次記憶装置157)に保持される。分散ファイル1Cには、秘密分散アプリの拡張子が付加されている。
利用シーンでは、データ管理装置100Cのユーザが、秘密分散アプリを起動する(S511)。秘密分散アプリの起動は、例えば、ユーザが操作部16を介して、分散ファイル1Cをクリックした場合に行われる。
秘密分散アプリが起動すると、ヘッダ解析部127は、例えば二次記憶装置157に保持された分散ファイル1Cを取得し、分散ファイル1Cのヘッダ部を解析し、ヘッダ部からサーバ設定情報を取得する(S512)。
ヘッダ解析部127は、サーバ設定情報に基づいて、秘密分散設定部123が用いる設定情報と、空ファイルとを生成する。ヘッダ解析部127は、この設定情報を、秘密分散設定部123に保持させる(S513)。
ヘッダ解析部127は、サーバ設定情報を参照し、分散ファイル1Cのデータ部に含まれる分散ファイル1を、所定の保存場所(例えば二次記憶装置157)又はストレージサーバ201に保持させる(S514)。
ヘッダ解析部127は、サーバ設定情報を参照し、空ファイルに第1アプリが用いる拡張子を付加し、空ファイルを所定の保存場所(例えば二次記憶装置157)に保持させる(S514)。これにより、第1アプリが空ファイルを処理可能となる。
ヘッダ解析部127は、アプリ処理部110に対して、空ファイルのアドレス情報(保存先の情報)を送り、第1アプリを起動するよう指示する(S515)。
外部I/O制御部122は、分散ファイル2に含まれる分散データの送信をコンテンツ配信サーバ400Cへ要求する。外部I/O制御部122は、コンテンツ配信サーバ400Cから分散ファイル2に含まれる分散データをダウンロードさせる(S516)。
秘密分散モジュール120Cは、設定情報を参照し、分散ファイル1に含まれる分散データを、分散ファイル1の保存先(例えば、二次記憶装置157)から取得する(S517)。これにより、データ管理装置100Cにおいて、分散ファイル1のデータと分散ファイル2のデータとが揃う。
復号処理部126は、秘密分散設定部123に保持された設定情報を参照し、取得された分散ファイル1の分散データと分散ファイル2の分散データとを用いて、復号処理する(S518)。
フィルタドライバ152は、空ファイルに含まれる空データを二次記憶装置157から取得し、復号処理により得られた元データを秘密分散モジュール120Cから取得する。フィルタドライバ152は、空データを元データに差し替えて、元データをアプリ処理部110へ送る(S519)。これにより、アプリ処理部110は、元ファイルとしてのコンテンツファイルを得られる。
なお、S501の分散ファイル1Cの受信に応じて、特別の操作をせずに、利用シーンの動作まで一括して処理してもよい。つまり、準備シーンと利用シーンとが分離されなくてもよい。
データ管理装置100Cによる動作例によれば、コンテンツ配信サーバ400Cへ一度コンテンツ配信を要求することで、例えば分散ファイル1Cの送信を要求することで、元ファイルとしてのコンテンツファイルを取得できる。ユーザ操作としては、分散ファイル1Cの選択操作(クリック)のみで、秘密分散処理に関する設定情報の保持、空ファイルの作成、不足した分散ファイルのダウンロード、復号処理、空ファイルと元ファイルとの差替えが、全て一括して行われる。従って、ユーザは、簡単に且つ安全にコンテンツを楽しむことができる。
更に、図16(B)に示したフォーマット構成を有する分散ファイル1Cを用いる場合には、元ファイルのヘッダ部についても分散処理されているので、コンテンツ配信におけるセキュリティを一層向上できる。
データ管理システム1000Cによれば、コンテンツ配信時に1つの分散ファイル1Cを受信することで、準備シーンを完了できる。また、利用シーンの開始までに分散ファイル1Cから空ファイルを生成すればよいので、例えば二次記憶装置157に保持される秘密分散に係るファイル数を低減できる。利用シーンでは、例えばユーザが操作部16を介して、分散ファイルを選択する簡単な操作で、第1アプリが元ファイルを取得できる。従って、簡単に且つ安全にコンテンツを楽しむことができる。
なお、本発明は、上記実施形態の構成に限られるものではなく、特許請求の範囲で示した機能、または本実施形態の構成が持つ機能が達成できる構成であればどのようなものであっても適用可能である。
例えば、上記実施形態では、秘密分散技術に、公知の暗号化技術を組み合わせて用いてもよい。これにより、秘密分散処理時のセキュリティを一層向上できる。
(本発明の一態様の概要)
本発明の一態様のデータ処理方法は、外部記憶装置と接続され、記憶装置を備えた処理装置におけるデータ処理方法であって、第1のデータを前記記憶装置に記憶させる書き込み指示を受信するステップと、前記第1のデータを複数の分割データに分割するステップと、前記分割データの少なくとも一部を前記外部記憶装置に記憶させるステップと、記第1のデータとは異なる第2のデータを前記記憶装置に記憶させるステップと、を備え、前記第2のデータは、前記第1のデータ及び前記複数の分割データに関連付けられている。
この方法によれば、第1のデータとは異なる第2のデータを記憶装置に記憶させるので、仮に記憶部から第2のデータが消去された後に第2のデータを推測可能であっても、第1のデータを推測することは困難である。従って、第1のデータの保存について、セキュリティを向上でき、情報漏洩のリスクを低減できる。 また、第1のデータの書き込み指示に応じて、専用のアプリケーションを用いることなく、外部記憶装置へも記憶装置へもアクセスできる。従って、ユーザによる簡単な操作により、第1のデータの書き込み要求に応じて、第2のデータを記憶装置へ書き込み、分割データを所定の保存場所に書き込みできる。
また、本発明の一態様のデータ処理方法は、前記第2のデータが、NULLデータもしくは乱数データである。
この方法によれば、第1のデータから第2のデータを簡単に生成できる。
また、本発明の一態様のデータ処理方法は、前記第2のデータが、0または1が連続したデータであり、前記記憶装置には前記第2のデータを圧縮して記憶させる。
この方法によれば、第2のデータのデータ量を削減でき、記憶部の記憶領域を効率よく使用できる。
また、本発明の一態様のデータ処理方法は、前記第1のデータ及び前記第2のデータが、同じアプリケーションで処理可能なデータであり、前記複数の分割データが、前記アプリケーションでは処理不可能なデータである。
この方法によれば、分割データの保存先において第1のデータ及び第2のデータを扱うアプリケーションを実行しても、分割データを処理できないので、ユーザが意図しない処理が行われることを防止できる。
また、本発明の一態様のデータ処理方法は、前記第1のデータ、前記第2のデータ、及び前記複数の分割データを関連付けるための生成データを生成するステップを備える。
この方法によれば、例えば、生成データに基づいて、第1のデータから分割データ及び第2のデータを一意に生成できる。また、生成データに基づいて、分割データ及び第2のデータから第1のデータを一意に生成できる。生成データを用いることで、例えばコンテンツ配信において配信される分割データから第1のデータを復元できる。従って、安全にコンテンツ配信を受けることができる。
また、本発明の一態様のデータ処理方法は、前記生成データを、前記複数の分割データに結合するステップを備える。
この方法によれば、例えば、分割データとともに生成データが保存され、又は配信されるので、生成データの管理が容易になる。
また、本発明の一態様のデータ処理方法は、前記複数の分割データに分割するステップは、秘密分散方法を用いて前記分割データを生成し、前記第1のデータを前記記憶装置に記憶させない。
この方法によれば、記憶装置に、第2のデータが記憶され、秘密分散の元データとしての第1のデータが記憶されないので、記憶装置に記憶されたデータから秘密分散の元データを復元することは困難である。また、秘密分散方法を用いることで、第1のデータの管理における安全性を更に向上できる。
また、本発明の一態様のデータ処理方法は、第1のデータから生成した分割データを記憶した外部記憶装置と接続され、前記第1のデータとは異なり、前記第1のデータと複数の分割データとに関連付けられた第2のデータを記憶した記憶装置を備えた処理装置におけるデータ処理方法であって、前記第2のデータを読み込む指示を受信するステップと、前記記憶装置から前記第2のデータを読み込むステップと、前記第2のデータに基づいて前記分割データを用いて前記第1のデータを復元するステップと、前記第1のデータを読み込み指示先に送信するステップと、を備える。
この方法によれば、第2のデータを用意することで、専用のアプリケーションを用いることなく、分割データを記憶する記憶装置と第2のデータを記憶する外部記憶装置とに同時にアクセスできる。また、ユーザによる簡単な操作により、第2のデータの書き込み要求に応じて、第2のデータを記憶装置から読み出し、分割データを外部記憶装置から読み出し、第1のデータを復元できる。
また、本発明の一態様のデータ処理方法は、前記第2のデータを読み込むステップと前記第1のデータを復元するステップとを、同時に行う。
この方法によれば、例えば、記憶装置と外部記憶装置とに同時にアクセスし、第2のデータの読み込みと、分割データの取得及び第1のデータの復元と、を同時に実施でき、復元処理を高速化できる。
また、本発明の一態様のデータ処理装置は、データ処理サーバが接続可能なデータ処理装置であって、第1のデータを分割し複数の分割データを生成し、前記分割データの少なくとも1つを前記データ処理サーバに記憶させる分割部と、前記第1のデータとは異なる第2のデータを生成し、前記第1のデータを前記分割部に送り、前記第2のデータを前記第1のデータのかわりに出力する制御部と、前記第2のデータを記憶する記憶部と、を備え、前記第2のデータは、前記第1のデータ及び前記複数の分割データに関連付けられている。
この構成によれば、第1のデータとは異なる第2のデータを記憶部に記憶させるので、仮に記憶部から第2のデータが消去された後に第2のデータを推測可能であっても、第1のデータを推測することは困難である。従って、第1のデータの保存について、セキュリティを向上でき、情報漏洩のリスクを低減できる。
また、第1のデータの書き込み指示に応じて、専用のアプリケーションを用いることなく、外部記憶装置へも記憶装置へもアクセスできる。従って、ユーザによる簡単な操作により、第1のデータの書き込み要求に応じて、第2のデータを記憶装置へ書き込み、分割データを所定の保存場所に書き込みできる。