【文献】
三原 直樹 NAOKI MIHARA,Secret Share技術を用いた統合文書管理システム(DACS)内文書の秘密分散バックアップ環境開発 Development of Document Backup System for DACS(Document Archiving and Communication System) By Using Secret Sharing,第34回医療情報学連合大会論文集 (第15回日本医療情報学会学術大会) 医療情報学 第34巻 Suppl. Japan Journal of Medical Informatics,2014年11月 5日,pp.656〜659
(58)【調査した分野】(Int.Cl.,DB名)
前記ファイルの前記起動は、復元される前記ファイルメタデータに基づいて表示される前記ファイルに関する標識に対するユーザ入力によって要求される、請求項1に記載のコンピュータプログラム。
前記第1の分散ファイル及び前記第1の分散ファイルメタデータは、外部記憶装置である第1の記憶装置から読み出され、前記第2の分散ファイル及び前記第2の分散ファイルメタデータは、前記第1の記憶装置とは異なる第2の記憶装置から読み出される、請求項3に記載のコンピュータプログラム。
前記制御モジュールは、前記第1の記憶装置の前記情報処理装置への接続の検出に応じて、前記仮想ドライブを起動する、ようにさらに構成される、請求項4に記載のコンピュータプログラム。
秘密データを分散することにより形成された複数の分散データのうちの少なくとも2つの分散データを結合することにより前記秘密データを復元することの可能な秘密分散法を用いて、情報処理装置において実行される秘密管理方法であって、
前記情報処理装置の所定のドライブが起動される際に、少なくとも第1の分散ファイルメタデータ及び第2の分散ファイルメタデータから、前記秘密分散法を用いて前記所定のドライブ内のファイルのファイルメタデータを復元することと、
前記ファイルの起動が要求された後に、少なくとも第1の分散ファイル及び第2の分散ファイルから、前記秘密分散法を用いて前記ファイルを復元することと、
を含む方法。
秘密分散法を用いて秘密データを分散することにより形成された複数の分散データのうちの少なくとも2つの分散データを結合することにより、前記秘密データを復元する、ように構成される秘密分散モジュールと、
前記複数の分散データの各々の、対応する記憶装置のデータ領域からの読み出し又は当該データ領域への書き込みを制御する、ように構成される制御モジュールと、
を含む情報処理システムであって、
前記情報処理システムの所定のドライブ内のファイルのファイルイメージは、少なくとも第1の分散ファイル及び第2の分散ファイルへと分散され、当該ファイルのファイルメタデータは、少なくとも第1の分散ファイルメタデータ及び第2の分散ファイルメタデータへと分散され、
前記制御モジュールは、
前記所定のドライブが起動される際に、少なくとも前記第1の分散ファイルメタデータ及び前記第2の分散ファイルメタデータから、前記秘密分散モジュールに前記ファイルメタデータを復元させ、
前記ファイルの起動が要求された後に、少なくとも前記第1の分散ファイル及び前記第2の分散ファイルから、前記秘密分散モジュールに前記ファイルを復元させる、
ようにさらに構成される、情報処理システム。
【発明を実施するための形態】
【0018】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0019】
また、以下の順序で説明を行う。
1.システムの概要
(1)システム構成例
(2)用語の意味
2.装置の構成
(1)ハードウェア構成例
(2)データ構成例
(3)機能構成例
3.処理の流れ
(1)仮想ドライブ生成
(2)ファイル分散
(3)仮想ドライブ復元
(4)ファイル復元
4.まとめ
5.変形例
(1)ファイル分散−第1の変形例
(2)ファイル分散−第2の変形例
(3)その他の変形例
【0020】
<1.システムの概要>
(1)システム構成例
図1Aは、本開示に係る技術が適用され得るシステムの概要を示している。
図1Aを参照すると、秘密情報管理システム1は、情報処理装置100と、外部記憶装置400とを含む。
【0021】
情報処理装置100は、例えば、ノートブックPC(Personal Computer)、タブレットPC、デスクトップPC、スマートフォン、セルラーフォン、ナビゲーション端末又はPDA(Personal Digital Assistant)などの、いかなる種類の情報端末又は電子装置であってもよい。ユーザは、情報処理装置100上で、様々な形態のデータを扱う。情報処理装置100上で扱われるデータは、ユーザ又は情報処理装置100の管理者が秘密にすることを望むデータ(以下、秘密データという)を含む。秘密データは、例えば、テキスト、文書、通信メッセージ、画像、映像、音声、設定データ又は実行可能ファイルといった、いかなる形式のデータであってもよい。情報処理装置100は、メインメモリと二次記憶装置とを備える。メインメモリは、典型的には、揮発性メモリ(例えば、RAM(Random Access Memory))である。二次記憶装置は、不揮発性の記憶媒体を有する、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)であってよい。
【0022】
外部記憶装置400は、情報処理装置100の何らかの接続インタフェースを介して情報処理装置100へと接続される記憶装置である。外部記憶装置400は、不揮発性の記憶媒体を有する。外部記憶装置400は、例えば、USB(Universal Serial Bus)メモリ、IC(Integrated Circuit)カード、メモリカード(例えば、SDカード)又は外付けHDDのような、情報の記憶を主な目的とした周辺装置であってもよい。また、外部記憶装置400は、例えばPC又はスマートフォンなどの、情報処理装置100に類似する種類の情報端末又は電子装置であってもよい。また、外部記憶装置400は、例えば、インターネット又はLAN(Local Area Network)などのネットワークを介してアクセスされ得る、NAS(Network Attached Storage)、クラウドサーバ又はデータサーバなどのネットワーク装置であってもよい。外部記憶装置400の情報処理装置100との接続は、有線接続であってもよく又は無線接続であってもよい。情報処理装置100の接続インタフェースは、接続端子、接続ケーブルを受け入れるコネクタ、又はアンテナ及び無線フロントエンドなど、いかなる形態のインタフェースであってもよい。
【0023】
後述するいくつかの実施形態において、本開示に係る技術により保護される秘密データは、秘密分散法を用いてN個(Nは2以上の整数)の分散データへと分散される。そして、N個の分散データのうちの少なくとも1つが、外部記憶装置400へと書き込まれる。秘密データの作成、閲覧及び更新は、情報処理装置100上で生成される仮想ドライブ内で行われる。秘密データは、不揮発性メモリにより記憶される実体的なファイルとしては存在せず、揮発性メモリ(典型的には、メインメモリ)内にのみ記憶されるファイルイメージとして保持される。仮想ドライブは、外部記憶装置400が情報処理装置100へと接続されている状態で生成され、仮想ドライブのアンマウント又は外部記憶装置400の接続切断に応じて消失する。一例として、仮想ドライブを生成するための仮想ドライブメタデータもまた、秘密分散法を用いて複数の分散メタデータへと分散され、それら分散メタデータのうちの少なくとも1つが外部記憶装置400へと書き込まれる。これは、外部記憶装置400を情報処理装置100へ接続しない限り、秘密データをユーザが扱うための場所を提供する仮想ドライブが生成されないこと、及びその仮想ドライブ自体も秘密分散法によって保護されることを意味する。例えば、秘密データのみを秘密分散法を用いて分散する従来の手法では、初めて作成されている途中の、分散前のデータは保護されない。データ作成の途中で頻繁にユーザが秘密分散処理を実行しなければならないとすれば、そうした操作はユーザにとって煩雑である。対照的に、ここで説明される実施形態によれば、秘密データをユーザが扱うための場所を提供する仮想ドライブ自体が、秘密分散法によって保護される。即ち、仮想ドライブを作業場所として作業が行われる限り、データは作業の当初から保護される。
【0024】
また、アプリケーションの実行ファイル、ドライバ及びデータを含む包括的なデータセットを単一のイメージとして分散する従来の手法では、アプリケーションを扱う都度、大規模なイメージデータを暗号化し及び復号することを要し、無視できない処理遅延が発生する。イメージデータのサイズを抑制するためには、保護対象のアプリケーションを縮減せざるを得ない。対照的に、ここで説明される実施形態によれば、仮想ドライブ内のデータは、いかなる種類のアプリケーションによっても扱われることができる。また、メタデータも仮想ドライブ内のファイルも別々に処理され得るため、処理遅延はごくわずかである。
【0025】
さらに、特定のアプリケーションに関連するデータ又は特定の種類のデータのみを秘密分散法を用いて分散する手法では、ユーザ又はシステム管理者が保護対象を予め適切に設定することを要する。こうした設定が不適切に行われた場合又は設定が行われなかった場合には、保護されるべき秘密データが漏洩のリスクにさらされる。現実的には、パスワードの設定又は更新といった簡単な作業ですらユーザは怠りがちであるため、セキュリティの目的でユーザに課せられる負担はできる限り小さい方が望ましい。この点において、ここで説明される実施形態によれば、ユーザは、外部記憶装置400を情報処理装置100へ接続するという直感的なアクションによって仮想ドライブを利用することを可能とされる。そして、一旦仮想ドライブが生成されれば、ユーザは、その仮想ドライブ内で、通常の情報端末上のデータ領域で作業するのと同様の感覚で秘密データを扱うことができる。さらに、作業が終了すれば、ユーザは、外部記憶装置400を情報処理装置100から接続切断するだけで、第三者による秘密データへのアクセスを不能とすることができる。これは、情報端末のシャットダウンを契機として秘密分散処理を実行してディスク上の秘密データを削除する従来の手法が、情報端末への不正侵入又は情報端末の盗難による情報漏洩のリスクを十分に解消できていない点とは対照的である(事後的なデータの遠隔削除は、情報漏洩を防ぐには遅すぎる可能性がある)。
【0026】
図1Bは、本開示に係る技術が適用され得るシステムの第1の応用例を示している。
図1Aの例では、秘密情報管理システム1が1つの外部記憶装置400のみを含んでいるが、
図1Bに示した第1の応用例では、秘密情報管理システム1aは、情報処理装置100aに加えて、2つの外部記憶装置400a、400bを含む。例えば、外部記憶装置400aは、情報処理装置100aへと直接的に接続され得るUSBメモリである。外部記憶装置400bは、無線通信インタフェースを介して情報処理装置100aへ接続され得るデータサーバである。情報処理装置100aにおいて秘密分散法を用いて秘密データから分散された分散データのうちの少なくとも1つは、外部記憶装置400aへ書き込まれ得る。分散データのうちの少なくとも他の1つは、外部記憶装置400bへ書き込まれ得る。情報処理装置100aの二次記憶装置は、分散データのうちの1つ以上を記憶してもよく、又は記憶しなくてもよい。
【0027】
図1Cは、本開示に係る技術が適用され得るシステムの第2の応用例を示している。
図1Cに示した第2の応用例では、秘密情報管理システム1bは、情報処理装置100bに加えて、2つの外部記憶装置400a、400cを含む。外部記憶装置400cは、ユーザにより携帯され又はユーザにより装着され得る端末装置である。情報処理装置100bにおいて秘密分散法を用いて秘密データから分散された分散データのうちの少なくとも1つは、外部記憶装置400aへ書き込まれ得る。分散データのうちの少なくとも他の1つは、外部記憶装置400cへ書き込まれ得る。情報処理装置100bの二次記憶装置は、分散データのうちの1つ以上を記憶してもよく、又は記憶しなくてもよい。
【0028】
これら応用例から理解されるように、本開示に係る技術において、秘密データは、秘密分散法を用いていくつの分散データへと分散されてもよい。また、それら分散データは、物理的に異なる少なくとも2つの記憶装置へと書き込まれればよく、それら記憶装置は、任意の接続形態で接続可能ないかなる種類の装置を含んでもよい。また、後に詳しく説明される、情報処理装置において実行されるコンピュータプログラムは、必ずしも情報処理装置の内部の媒体(非一時的なコンピュータ読取可能な媒体)に予め記憶されていなくてもよく、例えば実行時に外部記憶装置400bのような外部のサーバからダウンロードされ又は呼び出されてもよい。
【0029】
なお、本明細書におけるこれ以降の説明において、秘密情報管理システム1、1a及び1bは、符号の末尾のアルファベットを省略することにより、秘密情報管理システム1と総称される。同様に、情報処理装置100、100a及び100bは情報処理装置100、外部記憶装置400、400a、400b及び400cは外部記憶装置400とそれぞれ総称される。また、多くの例において、説明の簡明さのために、秘密データは秘密分散法を用いて2つの分散データへと分散されるものとする。但し、これらは、本開示に係る技術の範囲を限定するものではない。
【0030】
(2)用語の意味
以下、本明細書で使用される主な用語の典型的な意味について説明する。
a)秘密分散法(secret splitting/secret sharing)
秘密分散法とは、秘密にすることが望まれる情報を所定の方式で変換し、変換後の情報を複数の断片(シェアともいう)へと分散する技術である。情報変換方式を適切に選択することで、個々の断片から元の情報を推測することが不能となる。元の情報を復元するためにはある数以上の断片を結合することを要し、これら断片を物理的に別個の装置に記憶させることで、例えば1つの装置の紛失又は盗難といったセキュリティリスクに対する保護が提供される。複数の断片への分散の前の変換、及び複数の断片を結合した後の逆変換を、それぞれ暗号化及び復号ともいう。秘密分散法のため使用されるよく知られた情報変換方式の1つは、1997年にR. Rivest氏により提案されたAONT(All Or Nothing Transform)方式である。AONT−CBC(Cipher Block Chaining)方式及びAONT−OAEP(Optimal Asymmetric Encryption Padding)などのAONT方式の派生が存在し、例えばAONT−CBC方式は小ブロック単位の高速な暗号化に適している。後述する実施形態では、AONT方式が利用され得る。AONT方式は、変換の前後で情報量を大きく変化させない点で、情報端末での扱いに良好に適している。但し、本開示に係る技術は、閾値方式などの他の情報変換方式にも適用可能である。
【0031】
b)分散データ(split data)
分散データとは、秘密分散法を用いて秘密データを分散することにより形成されるデータの個々の断片をいう。上述したように、秘密データは、例えば、テキスト、文書、通信メッセージ、画像、映像、音声、設定データ又は実行可能ファイルといった、いかなる形式のデータであってもよい。
【0032】
c)仮想ドライブ(virtual drive)
仮想ドライブとは、物理的実体としては存在しないものの、ユーザ又はアプリケーションからは存在しているように見える、仮想化された記憶領域(ドライブ)をいう。後述する実施形態において、秘密データは、仮想ドライブ内に保持される。
【0033】
d)ファイルイメージ(file image)
ファイルイメージとは、仮想ドライブ内の秘密データの一表現形式である。例えば二次記憶装置上に記憶され得る通常のファイルと区別するために、このファイルイメージとの語が使用される。ファイルイメージが秘密分散法を用いて分散されると、分散ファイルが形成される。本開示に係る技術は、ユーザ又はアプリケーションにより扱われる一般的なファイルのみならず、システムが暗黙的に扱う制御ファイル(例えば、ドライブ内の階層的なフォルダ構成を定義する制御ファイルなど)をも、秘密分散の対象とされるファイルイメージとして扱うことができる。
【0034】
e)仮想ドライブメタデータ(virtual drive meta-data)
仮想ドライブメタデータとは、仮想ドライブを生成する際に利用されるメタデータをいう。一例として、仮想ドライブメタデータは、生成すべき仮想ドライブのドライブ名及びドライブサイズ(容量)を含む。仮想ドライブのドライブ名は、例えば仮想ドライブ内のファイルへユーザ又はアプリケーションがアクセスする際のファイルパスの一部になり得る。ドライブ名は、例えば、Windows(登録商標)OSにおけるドライブレターであってもよい。仮想ドライブメタデータは、さらに、仮想ドライブの作成日時、更新日時及び使用済み領域サイズなどのその他のデータを含んでもよい。分散メタデータとは、仮想ドライブメタデータを秘密分散法を用いて分散することにより形成されるデータをいう。
【0035】
f)ファイルメタデータ(file meta-data)
ファイルメタデータとは、個々のファイルの属性を表すメタデータをいう。一例として、ファイルメタデータは、ファイル名、ファイルパス、作成日時、更新日時及びファイルサイズを含む。分散ファイルメタデータとは、ファイルメタデータを秘密分散法を用いて分散することにより形成されるデータをいう。後述する実施形態において、ファイルイメージが復元されなくても、分散ファイルメタデータからファイルメタデータを復元することにより、仮想ドライブ内のファイルに関する標識を例えばファイルシステムを通じて画面上に表示することが可能とされる。
【0036】
g)分散ドライブ(split drive)
分散ドライブとは、分散ファイル、分散メタデータ及び分散ファイルメタデータなどを含み得る分散データの書き込み先となる実ドライブ(又は実ドライブ上のデータ領域)をいう。分散ドライブの記憶領域は、メタデータ領域と、ファイルデータ領域とから構成され得る。メタデータ領域には、分散メタデータ及び分散ファイルメタデータが書き込まれる。ファイルデータ領域には、分散ファイルが書き込まれる。各分散ドライブには、各分散ドライブを一意に識別するための分散ドライブ識別子が付与される。分散ドライブ識別子は、例えば、互いに対応する分散ドライブ(同じ秘密データから分散された分散データがそれぞれ書き込まれるドライブ)の間で共通する文字列と、それら分散ドライブを区別する枝番号との連結であってもよい。こうした識別子は、例えば、分散ドライブ間の対応関係の検証のために利用され得る。
【0037】
<2.装置の構成>
(1)ハードウェア構成例
図2は、一実施形態に係る情報処理装置100のハードウェア構成の一例を示している。
図2を参照すると、情報処理装置100は、プロセッサ101、メインメモリ102、ディスプレイ103、入力インタフェース104、二次記憶装置105、及び1つ以上の接続インタフェース106を備える。プロセッサ101は、例えばCPU(Central Processing Unit)又はMPU(Micro Processing Unit)であってよい。プロセッサ101は、例えば二次記憶装置105又は他の何らかの記憶媒体により記憶されるコンピュータプログラムを実行することにより、秘密情報管理システム1又は情報処理装置100の動作全般を制御する。メインメモリ102は、例えばRAMのような揮発性メモリであってよい。ディスプレイ103は、例えば液晶ディスプレイ(LCD)又は有機発光ダイオード(OLED)ディスプレイであってよい。入力インタフェース104は、例えばタッチパネル、キーパッド、キーボード又はポインティングデバイスなどを含んでよく、ユーザ入力を受け付けるように構成される。二次記憶装置105は、例えばHDD又はSSDであってよい。一例として、二次記憶装置105は、分散データが書き込まれる分散ドライブとして使用され得る。接続インタフェース106は、接続されるべき外部記憶装置400の種類に応じて、例えばUSBインタフェース、ICカードインタフェース、メモリカードインタフェース、有線LANインタフェース、無線LANインタフェース又はセルラー通信インタフェースなどを含んでよい。
【0038】
(2)データ構成例
図3は、二次記憶装置105及び外部記憶装置400により記憶され得るデータの構成の一例を示している。
【0039】
図3を参照すると、二次記憶装置105には、制御モジュールプログラム50及び秘密分散モジュールプログラム60が記憶されている。制御モジュールプログラム50及び秘密分散モジュールプログラム60は、情報処理装置100のプロセッサ101を、それぞれ制御モジュール10及び秘密分散モジュール30(
図4参照)として機能させるための命令セットを含む。制御モジュール10は、秘密分散モジュール30により形成される複数の分散データの各々の、対応する記憶装置のデータ領域からの読み出し及び/又は当該データ領域への書き込みを制御するモジュールである。秘密分散モジュール30は、制御モジュール10による制御の下で、秘密分散法を用いて秘密データを分散することにより複数の分散データを形成し、及びそれら複数の分散データのうちの少なくとも2つの分散データを結合することにより元のデータを復元するためのモジュールである。
【0040】
外部記憶装置400の予め定義される記憶領域には、基本構成情報75が記憶される。基本構成情報75は、例えば、分散ドライブ数Nと、N個の分散ドライブパスと、秘密分散アルゴリズムのバージョンとを含み得る。分散ドライブの数が固定的である場合(例えば、常に秘密データが2つの分散データへと分散される場合)には、分散ドライブ数Nは省略されてよい。例えば、N=2の場合、第1の分散ドライブパスは、制御モジュール10が第1の分散ドライブ70aへアクセスするためのパスを表し、第2の分散ドライブパスは、制御モジュール10が第2の分散ドライブ70bへアクセスするためのパスを表す。
【0041】
外部記憶装置400は、第1の分散ドライブ70aをさらに含む。二次記憶装置105は、第2の分散ドライブ70bをさらに含む。外部記憶装置400の第1の分散ドライブ70aは、第1の分散ドライブ識別子71a、第1の分散メタデータ80a、第1の分散ファイルメタデータ90a及び第1の分散ファイル91aを記憶する。二次記憶装置105の第2の分散ドライブ70bは、第2の分散ドライブ識別子71b、第2の分散メタデータ80b、第2の分散ファイルメタデータ90b及び第2の分散ファイル91bを記憶する。
【0042】
第1の分散ドライブ識別子71aは、複数の分散ドライブのうちの第1の分散ドライブ70aを一意に識別する。第2の分散ドライブ識別子71bは、複数の分散ドライブのうちの第2の分散ドライブ70bを一意に識別する。第1の分散メタデータ80a及び第2の分散メタデータ80bは、仮想ドライブを生成するための仮想ドライブメタデータを秘密分散法を用いて分散することにより形成された分散データである。
【0043】
第1の分散ファイルメタデータ90a及び第2の分散ファイルメタデータ90b、並びに第1の分散ファイル91a及び第2の分散ファイル91bは、仮想ドライブ内に保護されるべきファイルが作成され、そのファイルの保存が要求された場合に、それぞれの分散ドライブ内に記憶され得る。第1の分散ファイルメタデータ90a及び第2の分散ファイルメタデータ90bは、仮想ドライブ内のファイルのファイルメタデータを秘密分散法を用いて分散することにより形成された分散データである。第1の分散ファイル91a及び第2の分散ファイル91bは、仮想ドライブ内のファイルのファイルイメージを秘密分散法を用いて分散することにより形成された分散データである。
図3には、1セットの分散ファイルメタデータ及び分散ファイルのみを示しているが、実際には、仮想ドライブ内のファイルの数だけ、分散ファイルメタデータ及び分散ファイルのセットが記憶され得る。
【0044】
(3)機能構成例
図4は、一実施形態に係る情報処理装置100の論理的な機能構成の一例を示している。なお、本開示に係る技術に直接的に関連しない機能は、図から省略されている。
図4を参照すると、情報処理装置100は、上述した制御モジュール10及び秘密分散モジュール30に加えて、ファイルシステム40及びUI(User Interface)モジュール45を有する。
【0045】
制御モジュール10は、ドライブ設定機能11、仮想ドライブメタデータ分散機能12、分散ドライブ連携機能13、イベント監視機能14、仮想ドライブメタデータ復元機能15、仮想ドライブ管理機能16、ファイル分散機能17及びファイル復元機能18を有する。
【0046】
ドライブ設定機能11は、生成されるべき仮想ドライブの設定データを取得して、仮想ドライブメタデータを作成するための機能である。ドライブ設定機能11は、例えば、UIモジュール45を介してディスプレイ103の画面上に対話的なGUIを表示させ、ユーザ又はシステム管理者により入力インタフェース104を用いて入力される設定データを取得してもよい。その代わりに、ドライブ設定機能11は、他の装置において予め作成された設定データファイルを外部のデータサーバから受信することにより、設定データを取得してもよい。ドライブ設定機能11は、同様に、基本構成情報75及び分散ドライブ識別子71a、71bのための設定データをも取得し得る。
【0047】
仮想ドライブメタデータ分散機能12は、ドライブ設定機能11により作成される仮想ドライブメタデータを、分散に関する設定(例えば、分散ドライブ数N及びドライブごとの分散サイズ)に従って、秘密分散モジュール30に少なくとも第1の分散メタデータ80a及び第2の分散メタデータ80bへと分散させる。
【0048】
分散ドライブ連携機能13は、外部記憶装置400に第1の分散ドライブ70aが存在しない場合には、外部記憶装置400の予め定義される記憶領域に基本構成情報75を書き込み、第1の分散ドライブ70aのデータ領域を作成し、第1の分散ドライブ70aに第1の分散ドライブ識別子71aを書き込む。そして、分散ドライブ連携機能13は、仮想ドライブメタデータから分散された第1の分散メタデータ80aを第1の分散ドライブ70aへと書き込む。また、分散ドライブ連携機能13は、二次記憶装置105に第2の分散ドライブ70bが存在しない場合には、二次記憶装置105に第2の分散ドライブ70bのデータ領域を作成し、第2の分散ドライブ70bに第2の分散ドライブ識別子71bを書き込む。そして、分散ドライブ連携機能13は、仮想ドライブメタデータから分散された第2の分散メタデータ80bを第2の分散ドライブ70bへと書き込む。
【0049】
イベント監視機能14は、ファイルシステム40、UIモジュール45及び接続インタフェース106において発生するイベントを監視し及び検出する。イベント監視機能14により検出されるイベントは、例えば、次を含み得る:
−ファイル保存要求
−仮想ドライブのアンマウント要求
−外部記憶装置400の情報処理装置100への接続
−外部記憶装置400の情報処理装置100からの接続切断
−仮想ドライブの起動(オープン)
−仮想ドライブ内のフォルダの起動
−仮想ドライブ内のファイルの起動
例えば、ユーザが文書編集アプリケーションに編集された文書ファイルを保存することを指示した場合、イベント監視機能14は、文書編集アプリケーションからのファイル保存要求をファイルシステム40を介して検出し得る。
【0050】
仮想ドライブメタデータ復元機能15は、分散メタデータが対応する記憶装置へとそれぞれ書き込まれ、外部記憶装置400が情報処理装置100から接続切断された後、あるイベントの検出に応じて、第1の分散メタデータ80aを分散ドライブ連携機能13を通じて第1の分散ドライブ70aから読み出す。また、仮想ドライブメタデータ復元機能15は、対応する第2の分散メタデータ80bを分散ドライブ連携機能13を通じて第2の分散ドライブ70bから読み出す。そして、仮想ドライブメタデータ復元機能15は、少なくとも第1の分散メタデータ80a及び第2の分散メタデータ80bから、秘密分散モジュール30に仮想ドライブメタデータを復元させる。仮想ドライブメタデータの復元の契機となるイベントは、例えば、第1の分散メタデータ80aを記憶している外部記憶装置400の情報処理装置100への接続を含む。あるいは、仮想ドライブメタデータの復元は、仮想ドライブへのアクセス権限のあるユーザの認証の成功後に行われてもよい。
【0051】
仮想ドライブメタデータ復元機能15は、仮想ドライブメタデータの復元を開始する前に、分散ドライブ間又は分散メタデータ間の対応関係を検証してもよい。例えば、仮想ドライブメタデータ復元機能15は、それぞれの分散ドライブが有する分散ドライブ識別子が所定の文字列を含んでいるか、及び/又は作成日時若しくは更新日時などのタイムスタンプが一致するかなどを判定することにより、上述した対応関係を検証することができる。仮想ドライブメタデータ復元機能15は、対応関係が不正であると判定された場合、仮想ドライブメタデータの復元を中止してもよい。
【0052】
仮想ドライブ管理機能16は、仮想ドライブメタデータ復元機能15により復元される仮想ドライブメタデータに基づいて、仮想ドライブを生成する。仮想ドライブ管理機能16は、例えば、ファイルシステム40に仮想ドライブの設定を登録することにより、仮想ドライブを生成し得る。一例として、仮想ドライブ管理機能16は、仮想ドライブ内の秘密データを、揮発性メモリ(典型的には、メインメモリ102)内にのみ記憶されるファイルイメージとして保持する。ここでの仮想ドライブ内の秘密データとは、ユーザが仮想ドライブ内で扱ういかなる種類のデータであってもよい。また、仮想ドライブ管理機能16は、仮想ドライブのアンマウントのためのアンマウント要求が検出された場合に、仮想ドライブを無効化する。仮想ドライブ管理機能16は、外部記憶装置400の情報処理装置100からの接続切断が検出された場合にも、仮想ドライブを無効化する。仮想ドライブ管理機能16は、例えば、ファイルシステム40に登録された仮想ドライブの設定を消去することにより、仮想ドライブを無効化し得る。このように仮想ドライブが無効化されると、ユーザ又は第三者は、仮想ドライブ内のデータへアクセス不能となる。
【0053】
ファイル分散機能17は、仮想ドライブ内のファイルの保存が要求された場合に、当該ファイルのファイルイメージを秘密分散モジュール30に秘密分散法を用いて少なくとも第1の分散ファイル91a及び第2の分散ファイル91bへと分散させる。第1の分散ファイル91aは、分散ドライブ連携機能13により、第1の分散ドライブ70aへ書き込まれる。第2の分散ファイル91bは、分散ドライブ連携機能13により、第2の分散ドライブ70bへ書き込まれる。また、ファイル分散機能17は、保存されるべきファイルのファイルメタデータを、秘密分散モジュール30に少なくとも第1の分散ファイルメタデータ90a及び第2の分散ファイルメタデータ90bへと分散させる。第1の分散ファイルメタデータ90aは、分散ドライブ連携機能13により、第1の分散ドライブ70aへ書き込まれる。第2の分散ファイルメタデータ90bは、分散ドライブ連携機能13により、第2の分散ドライブ70bへ書き込まれる。こうしたファイルメタデータは、仮想ドライブ内のファイルに関する標識をUIモジュール45に画面上へ表示させるために使用され得る。
【0054】
分散ドライブ連携機能13は、第1の動作モードにおいて、ファイル保存要求の検出に応じて、第1の分散ファイル91aを第1の分散ドライブ70aへ、第2の分散ファイルを第2の分散ドライブ70bへ書き込んでもよい。第1の動作モードは、ファイル保存の時点で直接的に分散ファイルが分散ドライブに書き込まれることから、例えばダイレクトモードと呼ばれ得る。
【0055】
また、分散ドライブ連携機能13は、第2の動作モードにおいて、ファイル保存要求の検出に応じてファイル分散機能17によりファイルイメージが第1の分散ファイル91a及び第2の分散ファイル91bへと分散された後、さらに仮想ドライブのアンマウントのためのアンマウント要求の検出を待ってから、第1の分散ファイル91aを第1の分散ドライブ70aへ書き込んでもよい。第2の動作モードにおいて、ファイル保存要求の検出からアンマウント要求の検出までの間、分散ファイルは、仮想ドライブ管理機能16により揮発性メモリ内に保持され得る。第2の動作モードは、ファイル保存の時点では少なくとも1つの分散ファイルが分散ドライブに書き込まれずメモリ内にキャッシュされることから、例えばキャッシュモードと呼ばれ得る。システムの動作モードは、ユーザのニーズに依存して、予め固定的に設定されてもよく、又は複数のモードの間で動的に切替え可能であってもよい。
【0056】
仮想ドライブ管理機能16は、仮想ドライブ内に1つ以上のファイルが存在する場合、仮想ドライブの生成後に自動的に、又はファイルシステム40を介して仮想ドライブがオープンされた後、それらファイルに関する標識を、UIモジュール45に画面上へ表示させてよい。ファイルに関する標識を生成するために必要とされるファイルメタデータは、第1の分散ファイルメタデータ90a及び第2の分散ファイルメタデータ90bから復元される。分散ドライブ連携機能13は、第1の分散ファイルメタデータ90aを第1の分散ドライブ70aから読み出し、第2の分散ファイルメタデータ90bを第2の分散ドライブ70bから読み出す。ファイル復元機能18は、少なくとも第1の分散ファイルメタデータ90a及び第2の分散ファイルメタデータ90bから、秘密分散モジュール30にファイルメタデータを復元させて、仮想ドライブ内のファイルに関する標識の表示を可能にする。ファイルに関する標識は、例えば、ドライブ内のファイルの一覧の各アイテムに相当し、ファイル名、ファイルサイズ、アイコン及び更新日などを含み得る。
【0057】
さらに、ファイル復元機能18は、表示されたファイルに関する標識に対するユーザ入力(例えば、ファイル名又はアイコンのダブルクリック又はタップなど)によって、仮想ドライブ内のファイルの起動が要求された場合に、当該ファイルのファイルイメージから分散された複数の分散ファイルのうちの少なくとも第1の分散ファイル91a及び第2の分散ファイル91bを、分散ドライブ連携機能13を通じて、第1の分散ドライブ70a及び第2の分散ドライブ70bからそれぞれ読み出す。そして、ファイル復元機能18は、少なくとも第1の分散ファイル91a及び第2の分散ファイル91bから、起動されるべきファイルのファイルイメージを秘密分散モジュール30に復元させる。なお、ファイル復元機能18は、ファイルの起動の要求を待つことなく、仮想ドライブ内の特定のファイルのファイルイメージを復元してもよい。
【0058】
制御モジュール10は、ここで説明した様々な動作の任意のタイミングで、ユーザにパスワードの入力を求めてもよい。例えば、制御モジュール10は、外部記憶装置400の接続が検出された場合に、分散メタデータを対応する分散ドライブから読み出す前にユーザにパスワードの入力を求め、パスワード認証が成功したときに限って分散メタデータを読み出してもよい。
【0059】
秘密分散モジュール30は、暗号化機能31、分散機能32、結合機能33及び復号機能34を有する。暗号化機能31は、制御モジュール10による制御の下で、指定されたデータ(例えば、仮想ドライブメタデータ、ファイルメタデータ又はファイルイメージ)を、例えばAONT方式で暗号化する。分散機能32は、暗号化機能31により暗号化された(AONT変換された)データを、指定された個数の、それぞれ指定されたサイズを有する分散データへと分散する。結合機能33は、復元されるべきデータから秘密分散法を用いて形成された複数の分散データのうちの少なくとも2つの分散データを結合して、結合データを生成する。復号機能34は、少なくとも2つの分散データに基づく結合データから、元のデータをAONT方式で復号することにより、秘密データを復元する。
【0060】
一例として、秘密分散モジュール30は、ブロック単位でこれら暗号化、分散、結合及び復号という動作を実行する。ここでのブロックサイズは、ファイルシステム40のアロケーションユニットのサイズ(例えば、NTFSであれば4096バイト)に一致していることが望ましい。秘密分散処理の処理単位のサイズが大きい場合、処理時間は分散すべきデータのデータサイズに対して線型的ではなくむしろ指数関数的に増加する。一方、ファイルシステムのアロケーションサイズ程度の小さい処理単位で秘密分散処理を実行すれば、データサイズに対する処理時間の増加を、ほぼ線型的な増加にまで抑制することができる。
【0061】
ファイルシステム40は、情報処理装置100上で動作するオペレーティングシステムがファイルを管理するために有するシステムモジュールである。例えばNTFS、FAT又はFAT32などといった、いかなる種類のファイルシステムが利用されてもよい。情報処理装置100上の様々なアプリケーションと制御モジュール10及び秘密分散モジュール30との間にファイルシステム40が介在する構成によって、それらアプリケーションが制御モジュール10及び秘密分散モジュール30の存在を認識する必要性が回避される。上述したファイルシステム40のアロケーションユニットのサイズに合わせた秘密分散の動作と、ファイルシステム40を介在させる構成とによって、秘密情報管理システム1を、多様なアプリケーション及びオペレーティングシステムが実行される多くのプラットフォーム上で、個別の機能修正を要することなく円滑に動作させることが可能となる。
【0062】
ファイルシステム40又は情報処理装置100上で動作するオペレーティングシステムは、制御モジュール10からの仮想ドライブの設定の登録を受け付ける。一旦登録された仮想ドライブは、ユーザ又はアプリケーションの視点からは、他の物理的な又は論理的なディスクドライブと同様に扱われる。即ち、ユーザは、仮想ドライブ内で、ファイルの更新、移動、コピー、ファイル名の変更、フォルダ(ディレクトリ)の作成及びフォルダの属性の設定といった様々な作業を、通常のドライブとの違いを意識することなく行うことができる。
【0063】
UIモジュール45は、制御モジュール10及びファイルシステム40がユーザとのインタラクションを行うためのユーザインタフェースを提供する。例えば、UIモジュール45は、ディスプレイ103の画面上にGUIを表示させ、入力インタフェース104を介してユーザ入力を受け付ける。UIモジュール45は、音声UI又はジェスチャUIなどといった、非視覚的なユーザインタフェースを提供してもよい。
【0064】
<3.処理の流れ>
次に、秘密情報管理システム1における動作の流れについて詳細に説明する。
【0065】
(1)仮想ドライブ生成
図5は、仮想ドライブを新たに生成するための仮想ドライブ生成処理の流れの一例を示すフローチャートである。
【0066】
まず、制御モジュール10は、ステップS1において、生成されるべき仮想ドライブの設定データを取得して、仮想ドライブメタデータを作成する。ここで作成される仮想ドライブメタデータは、例えば、新たな仮想ドライブのドライブ名及び容量を含み得る。
【0067】
次に、制御モジュール10は、ステップS2において、作成された仮想ドライブメタデータを秘密分散モジュール30に暗号化させ、ステップS3において、暗号化された仮想ドライブメタデータを第1及び第2の分散メタデータ80a、80bへと分散させる。
【0068】
そして、制御モジュール10は、ステップS4において、外部記憶装置400に第1の分散ドライブ70aを作成し、ステップS5において、二次記憶装置105に第2の分散ドライブ70bを作成する。なお、この段階では、第1及び第2の分散ドライブ70a、70bに、データ及びファイルは書き込まれていない。なお、当然ながら、ステップS4は、外部記憶装置400が接続インタフェース106を介して情報処理装置100へ接続された状態において実行される。
【0069】
次に、ステップS6において、制御モジュール10は、作成した第1及び第2の分散ドライブ70a、70bを互いに対応付けるために、第1の分散ドライブ識別子71aを第1の分散ドライブ70aへ、第2の分散ドライブ識別子71bを第2の分散ドライブ70bへと書き込む。また、制御モジュール10は、外部記憶装置400の予め定義される記憶領域に基本構成情報75を書き込む。基本構成情報75は、例えば、外部記憶装置400内の第1の分散ドライブ70aの分散ドライブパス及び二次記憶装置105内の第2の分散ドライブ70bの分散ドライブパスを含む。それにより、後に制御モジュール10がそれぞれの分散ドライブへとアクセスすること、並びに分散ドライブ識別子及びその他のメタデータを照合して分散ドライブ間の対応関係を検証することが可能となる。
【0070】
次に、制御モジュール10は、ステップS7において、第1の分散ドライブ70aへ第1の分散メタデータ80aを書き込む。また、制御モジュール10は、ステップS8において、第2の分散ドライブ70bへ第2の分散メタデータ80bを書き込む。
【0071】
次に、制御モジュール10は、ステップS9において、第1及び第2の分散ドライブ70a、70bに対応する新たな仮想ドライブを生成する。より具体的には、制御モジュール10は、例えば、仮想ドライブメタデータに含まれる設定データをファイルシステム40に登録することにより、仮想ドライブを生成し得る。制御モジュール10は、ステップS1において作成され又は取得された仮想ドライブメタデータをここで利用してもよい。その代わりに、制御モジュール10は、第1及び第2の分散ドライブ70a、70bへそれぞれ書き込まれた第1及び第2の分散メタデータ80a、80bから、秘密分散モジュール30に仮想ドライブメタデータを復元させてもよい。
【0072】
最後に、ステップS10において、新たに生成された仮想ドライブが、ディスプレイ103の画面上に表示される。なお、制御モジュール10は、仮想ドライブ自体(例えば、仮想ドライブのアイコンなど)を表示させる代わりに、仮想ドライブが生成されたことを通知するメッセージを、ディスプレイ103の画面上に表示させてもよい。
【0073】
以上をもって、
図5に示した仮想ドライブ生成処理は終了する。
【0074】
(2)ファイル分散
図6は、ファイルを秘密分散法を用いて分散するためのファイル分散処理の流れの一例を示すフローチャートである。
【0075】
ステップS11において、制御モジュール10は、仮想ドライブ内のファイルについてのファイル保存要求を検出する。一例として、仮想ドライブ内のファイルの保存は、仮想ドライブ以外のドライブ(例えば、実体のあるドライブ)により記憶されているファイルの仮想ドライブ内への移動を契機として行われてもよい。他の例として、仮想ドライブ内のファイルの保存は、仮想ドライブ内に既に存在するファイルが更新された後の、仮想ドライブ内での当該ファイルの上書き保存を契機として行われてもよい。ファイル保存要求は、例えば保存されるべきファイルに対応付けられるアプリケーション(例えば、文書ファイルの場合には、文書編集アプリケーション)又はオペレーティングシステムから、ファイルシステム40を介して検出され得る。
【0076】
上述したファイル保存要求が検出されると、制御モジュール10は、ステップS12において、保存されるべきファイルのファイルイメージを、メインメモリ102内の仮想ドライブのための記憶領域に記憶させる。ファイルイメージは、例えば、ブロックごとにメインメモリ102の対応するメモリアドレスへと書き込まれる。ブロックサイズは、例えば1ブロック当り4096byteであってよい。
【0077】
次に、ステップS13において、制御モジュール10は、仮想ドライブ内の保存されるべきファイルのファイルイメージを、秘密分散モジュール30に暗号化させる。ファイルイメージは、例えば、メインメモリ102に記憶されているファイルイメージのブロックの各々について、ブロック単位で暗号化される。
【0078】
次に、ステップS14において、制御モジュール10は、暗号化されたファイルイメージを、秘密分散モジュール30に第1及び第2の分散ファイル91a、91bへと分散させる。ここでの暗号化されたファイルイメージの分散もまた、ブロック単位で行われ得る。例えば、ファイルイメージのブロック数が3個である場合、それら3個のブロックの各々が、例えば4byteの第1の分散ファイル91a及び4092byteの第2の分散ファイル91bへと分散され得る。
【0079】
また、制御モジュール10は、保存されるべきファイルのファイルメタデータをも、秘密分散モジュール30に暗号化させ、第1及び第2の分散ファイルメタデータ90a、90bへと分散させる。なお、ファイルメタデータの暗号化及び分散もまた、ブロック単位で行われ得る。
【0080】
次に、制御モジュール10は、ステップS15において、第1の分散ファイル91a及び第1の分散ファイルメタデータ90aを、第1の分散ドライブ70aへと書き込む。また、制御モジュール10は、ステップS16において、第2の分散ファイル91b及び第2の分散ファイルメタデータ90bを、第2の分散ドライブ70bへと書き込む。第1の分散ファイル91aは、第1の分散ドライブ70aのファイルデータ領域に、第2の分散ファイル91bは、第2の分散ドライブ70bのファイルデータ領域に書き込まれる。第1の分散ファイルメタデータ90aは、第1の分散ドライブ70aのメタデータ領域に、第2の分散ファイルメタデータ90bは、第2の分散ドライブ70bのメタデータ領域に書き込まれる。なお、当然ながら、ステップS15は、外部記憶装置400が接続インタフェース106を介して情報処理装置100へ接続された状態において実行される。
【0081】
その後、ステップS17において、仮想ドライブのアンマウント要求が検出されると、制御モジュール10は、ステップS18において、仮想ドライブを無効化する。それにより、例えば画面から仮想ドライブの表示が消失する。さらに、外部記憶装置400が情報処理装置100から接続切断され得る。なお、仮想ドライブのアンマウント要求が入力又は検出されることなく、突然に外部記憶装置400が接続切断された場合(例えば、USBメモリが引き抜かれた場合)にも、制御モジュール10は、接続切断の検出に応じて、仮想ドライブを無効化し、画面から仮想ドライブの表示を消失させてもよい。
【0082】
以上をもって、
図6に示したファイル分散処理は終了する。
【0083】
(3)仮想ドライブ復元
図7は、仮想ドライブを復元するための仮想ドライブ復元処理の流れの一例を示すフローチャートである。また、
図8は、復元された仮想ドライブの概略的なデータ構成の一例を示している。
【0084】
まず、制御モジュール10は、ステップS21において、接続インタフェース106を介する外部記憶装置400の情報処理装置100への接続を検出する。制御モジュール10は、当該接続の検出に応じて、ステップS22において、外部記憶装置400により記憶されている基本構成情報75を読み出し、外部記憶装置400の第1の分散ドライブ70aへアクセスする。また、制御モジュール10は、ステップS23において、二次記憶装置105の第2の分散ドライブ70bへアクセスする。制御モジュール10は、この時点で、これら分散ドライブ内のデータセットを読み出し、メインメモリ102へと展開してもよい。第1の分散ドライブ70aのデータセットには第1の分散ドライブ識別子71aが、第2の分散ドライブ70bのデータセットには第2の分散ドライブ識別子71bがそれぞれ含まれる。
【0085】
次に、制御モジュール10は、ステップS24において、第1及び第2の分散ドライブ70a、70bの間の対応関係を検証する。例えば、制御モジュール10は、第1の分散ドライブ識別子71a及び第2の分散ドライブ識別子71bが所定の共通的な文字列を含んでおり、かつ期待される枝番を正確に有しているかを判定してもよい。また、制御モジュール10は、作成日時又は更新日時などのタイムスタンプが一致するかを判定してもよい。
【0086】
ステップS25において、2つの分散ドライブの間の対応関係が正常であると判定されると、仮想ドライブ復元処理はステップS27へ進む。2つの分散ドライブの間の対応関係が正常ではないと判定されると、仮想ドライブ復元処理は中止され得る。仮想ドライブ復元処理が中止された場合、制御モジュール10は、UIモジュール45を介して、仮想ドライブの生成に失敗した旨を通知するエラーメッセージを出力してもよい。その代わりに、制御モジュール10は、悪意ある第三者から秘密データの存在を隠蔽するために、何らのエラーメッセージも出力しなくてもよい。
【0087】
ステップS27において、制御モジュール10は、第1の分散ドライブ70a(又はメインメモリ102へ展開済みの場合にはメインメモリ102)から、第1の分散メタデータ80aを読み出す。また、ステップS28において、制御モジュール10は、第2の分散ドライブ70b(又はメインメモリ102へ展開済みの場合にはメインメモリ102)から、第2の分散メタデータ80bを読み出す。
【0088】
次に、ステップS29において、制御モジュール10は、読み出した第1及び第2の分散メタデータ80a、80bを秘密分散モジュール30に結合させる。また、ステップS30において、制御モジュール10は、第1及び第2の分散メタデータ80a、80bの結合メタデータから、仮想ドライブメタデータを秘密分散モジュール30に復号させる。
【0089】
次に、ステップS31において、制御モジュール10は、秘密分散法を用いた復号によって復元された仮想ドライブメタデータ80に基づいて、仮想ドライブ81を生成する(
図8参照)。
【0090】
最後に、このようにして復元された仮想ドライブ81が、ステップS32において、ディスプレイ103の画面上に表示される。なお、仮想ドライブ(例えば、仮想ドライブのアイコン)を表示させる代わりに、仮想ドライブが復元されたことを通知するメッセージが、画面上に表示されてもよい。
【0091】
なお、仮想ドライブが復元された後、制御モジュール10は、第1及び第2の分散ファイルメタデータ90a、90bからファイルメタデータ90をさらに復元してもよい。また、制御モジュール10は、ファイルシステム40を介して仮想ドライブの起動が検出された場合に、第1及び第2の分散ファイルメタデータ90a、90bからファイルメタデータ90を復元してもよい。仮想ドライブの起動は、例えば、画面上に表示される仮想ドライブのアイコンに対するユーザ入力(例えば、ダブルクリック又はタップなど)を通じて要求され得る。例えば、制御モジュール10は、第1の分散ドライブ70a(又はメインメモリ102)から第1の分散ファイルメタデータ90aを、第2の分散ドライブ70b(又はメインメモリ102)から第2の分散ファイルメタデータ90bを読み出す。そして、制御モジュール10は、読み出した第1及び第2の分散ファイルメタデータ90a、90bから、秘密分散モジュール30にファイルメタデータ90を復元させる。
【0092】
図8には、一例として1つのファイルメタデータ90のみが示されているが、仮想ドライブ内に複数のファイルが存在する場合には、制御モジュール10は、それらファイルそれぞれのファイルメタデータ90を秘密分散モジュール30に復元させてもよい。例えば、仮想ドライブの階層的なフォルダ構成の中の最上位のフォルダ内のファイルのファイルメタデータのみが復元されてもよい(他のファイルのファイルメタデータは、対応するフォルダがオープンされた後に復元され得る)。また、仮想ドライブの容量に依存して制限された数のファイルのファイルメタデータのみが復元されてもよい。復元されたファイルメタデータ90は、ファイルシステム40へと受け渡される。そして、ファイルシステム40は、仮想ドライブが起動されると、仮想ドライブ内のファイルの各々に関する標識(例えば、ファイル一覧内のアイテム又はアイコンなど)を生成して、生成された標識を画面上へ表示させる。
【0093】
以上をもって、
図7に示した仮想ドライブ復元処理は終了する。
【0094】
(4)ファイル復元
図9は、ファイルを秘密分散法を用いて復元するためのファイル復元処理の流れの一例を示すフローチャートである。
【0095】
まず、制御モジュール10は、仮想ドライブがアクティブな状態において、ステップS41にて、仮想ドライブ内のファイルのファイル起動要求を検出する。ファイルの起動は、例えば、ファイルメタデータ90に基づいて表示されたファイルに関する標識に対するユーザ入力を通じて要求され得る。
【0096】
ファイル起動要求の検出に応じて、制御モジュール10は、ステップS42において、第1の分散ドライブ70aから、起動されるべきファイルに対応する第1の分散ファイル91aを読み出す。また、制御モジュール10は、ステップS43において、第2の分散ドライブ70bから、当該ファイルに対応する第2の分散ファイル91bを読み出す。
【0097】
次に、制御モジュール10は、ステップS44において、読み出した第1及び第2の分散ファイル91a、91bを、秘密分散モジュール30に結合させる。また、ステップS45において、制御モジュール10は、復元すべきファイルのファイルイメージを、第1及び第2の分散ファイル91a、91bの結合ファイルから秘密分散モジュール30に復号させる。
【0098】
次に、制御モジュール10は、ステップS46において、復号の結果として復元されたファイルイメージをファイルシステム40へ受け渡し、ユーザの所望のファイルを例えば当該ファイルに関連付けられているアプリケーションを通じて起動させる。
【0099】
以上をもって、
図9に示したファイル復元処理は終了する。
【0100】
<4.まとめ>
上述した実施形態によれば、情報処理装置のプロセッサを、秘密分散モジュール及び制御モジュールとして機能させるためのコンピュータプログラムが提供される。当該情報処理装置は、外部記憶装置である第1の記憶装置と接続されるように構成される接続インタフェースと、上記プロセッサと、揮発性メモリとを備える。秘密分散モジュールは、複数の分散データのうちの少なくとも2つの分散データを結合することにより秘密データを復元する、ように構成される。制御モジュールは、複数の分散データの各々の、対応する記憶装置のデータ領域からの読み出し及び/又は当該データ領域への書き込みを制御する、ように構成される。上記秘密データは仮想ドライブ内に保持され、上記仮想ドライブを生成するための仮想ドライブメタデータは少なくとも2つの分散メタデータへと分散される。上記制御モジュールは、上記第1の分散メタデータを上記第1の記憶装置から読み出し、第2の分散メタデータを第2の記憶装置から読み出し、少なくともこれら2つの分散メタデータから上記秘密分散モジュールに上記仮想ドライブメタデータを復元させ、復元された上記仮想ドライブメタデータに基づいて上記仮想ドライブを生成する。
【0101】
かかる構成によれば、秘密データをユーザが扱うための場所を提供する仮想ドライブ自体を秘密分散法によって保護することができる。仮想ドライブ内の秘密データもまた秘密分散法によって保護されることから、上述した構成は、秘密データを二重の障壁によって漏洩のリスクから保護する仕組みを提供する。また、仮想ドライブにおいてユーザがデータを作成すれば、その作成の当初から当該データは保護される。
【0102】
ある実施例において、上記仮想ドライブ内の上記秘密データは、揮発性メモリ内にのみ記憶されるファイルイメージとして保持され得る。それにより、秘密データが復元された後に情報処理装置がハッキングされたとしても、例えば二次記憶装置のディスクからの秘密データの漏洩は防止される。
【0103】
ある実施例において、上記第1の分散メタデータは、上記第1の記憶装置の上記情報処理装置への接続の検出に応じて、上記第1の記憶装置から読み出され得る。それにより、仮想ドライブの生成から消滅までのライフサイクルが、外部記憶装置の接続及び接続切断というユーザにとって直観的に把握可能なアクションに結び付けられる。仮想ドライブ内のデータ又はファイルは、仮想ドライブが情報処理装置上に存在している間にのみ、ユーザによりアクセス可能である。よって、ユーザは、外部記憶装置の接続状態を意識するだけで、データを適切に秘密に管理することができる。データの作成、閲覧及び更新といった作業は、仮想ドライブ内で行われる限り、通常の情報端末上での(保護される必要のない)データについての作業と同様にして行われてよい。
【0104】
ある実施例において、上記仮想ドライブのアンマウントのためのアンマウント要求が検出された場合、又は上記第1の記憶装置の接続切断が検出された場合に、上記仮想ドライブは無効化され得る。即ち、ユーザは、例えば作業終了時又は作業中断時の明示的なアンマウント要求によって、仮想ドライブへのアクセスを不能にして秘密データの保護を確実化することができる。また、ユーザは、外部記憶装置の接続切断という直感的なアクションによっても、仮想ドライブへのアクセスを不能にして秘密データの保護を確実化することができる。上記仮想ドライブの無効化は、メモリ上に保持されている仮想ドライブ内のデータの消去を含んでもよい。あるいは、仮想ドライブ内のデータの消去は、上記仮想ドライブの無効化よりも遅い時点まで猶予されてもよい。
【0105】
ある実施例において、上記仮想ドライブは、上記情報処理装置のファイルシステムに当該仮想ドライブの設定を登録することにより生成され得る。また、上記ファイルシステムから上記仮想ドライブの上記設定を消去することにより、上記仮想ドライブは無効化され得る。このように、既存のファイルシステムの機能性を活用して仮想ドライブを実現し、アプリケーションと秘密分散技術との間にファイルシステムを介在させることで、既存の及び将来的に開発される多様なアプリケーションにインパクトを与えることなく、システムの円滑な動作を提供することができる。
【0106】
ある実施例において、上記制御モジュールは、上記仮想ドライブ内のファイルの起動が要求された場合に、当該ファイルのファイルイメージを上記秘密分散法を用いて分散することにより形成された複数の分散ファイルのうちの少なくとも2つの分散ファイルを対応する記憶装置からそれぞれ読み出し、少なくともそれら2つの分散ファイルから、起動されるべき上記ファイルの上記ファイルイメージを上記秘密分散モジュールに復元させ得る。これは、仮想ドライブ内のファイルの起動が要求されるまで当該ファイルのファイルイメージの復元は実行されず、起動されないファイルのファイルイメージは復元されないことを意味する。かかる構成によれば、一度に大規模なデータセットを復元する必要が無いため、処理の待ち時間が低減される。必要最低限のファイルのファイルイメージしか仮想ドライブ内に保持されないため、ドライブ内の全てのデータをまとめて暗号化(分散)/復号(結合)するような技術と比較して、セキュリティレベルが強化される。
【0107】
ある実施例において、上記仮想ドライブ内のファイルのファイルメタデータは、複数の分散ファイルメタデータへと分散され、上記制御モジュールは、少なくとも2つの分散ファイルメタデータを対応する記憶装置からそれぞれ読み出し、少なくともそれら2つの分散ファイルメタデータから上記秘密分散モジュールに上記ファイルメタデータを復元させて、上記仮想ドライブ内の上記ファイルに関する標識の表示を可能にし得る。かかる構成によれば、仮想ドライブ、仮想ドライブ内のファイルへアクセスするために必要とされるファイルメタデータ、及びファイルという3つのレイヤにわたる三重の障壁によって秘密データを保護することができる。例えば、上記仮想ドライブ内のファイルの上記起動が、復元される上記ファイルメタデータに基づいて表示される上記ファイルに関する上記標識に対するユーザ入力によって要求されるような構成が採用されてもよい。この場合、あるファイルを復元するためにはそのファイルのファイルメタデータを復元しなければならず、そのファイルメタデータへアクセスするためには仮想ドライブメタデータを復元しなければならないといった、秘密分散処理のチェーンが構築され、セキュリティレベルは一層強化され得る。これらメタデータ及びファイルの読み出し(メモリへの展開)及び復元は、ユーザ入力に応じて最小の範囲内で実行されてもよく、又はメモリ容量の制約の下で、ユーザ入力に先立って実行されてもよい。後者の場合には、データ読み出しに起因する待ち時間が短縮され、ユーザ入力に対するシステムの応答性が向上し得る。
【0108】
ある実施例において、上記制御モジュールは、上記仮想ドライブ内のファイルの保存が要求された場合に、当該ファイルのファイルイメージを上記秘密分散モジュールに上記秘密分散法を用いて少なくとも2つの分散ファイルへと分散させ得る。1つの分散ファイルは上記第1の記憶装置へ書き込まれ、他の1つの分散ファイルは上記第2の記憶装置へ書き込まれ得る。かかる構成によれば、仮想ドライブ内でファイルの保存が要求される都度、当該ファイルのファイルイメージを分散させて、ファイルの保護が確実化される。ファイル保存のための上記要求の検出に応じて、少なくともそれら2つの分散ファイルが即座に上記第1の記憶装置及び上記第2の記憶装置へそれぞれ書き込まれる動作モードにおいては、これら分散ファイルが同一の装置上に存在する時間を最小化して、強固なセキュリティを実現することができる。
【0109】
ある実施例において、上記仮想ドライブは、上記情報処理装置のファイルシステムに上記仮想ドライブの設定を登録することにより生成され、上記制御モジュールは、ファイル保存のための上記要求を、上記ファイルシステムを介して検出し得る。かかる構成によれば、様々なイベントを契機としてユーザ又はアプリケーションから発せられるファイル保存要求を受け付けるための共通的なプログラムインタフェースを、複雑なロジックを要することなく低コストで実装することが可能となる。
【0110】
なお、本明細書では、仮想ドライブメタデータ、ファイルメタデータ及びファイルイメージの各々について暗号化及び復号が実行される例を主に説明した。しかしながら、かかる例に限定されず、これらの全て又は一部について、暗号化及び復号が省略され、分散及び結合のみが実行されてもよい。例えば、仮想ドライブメタデータについて暗号化及び復号が省略される場合にも、ファイルメタデータ及びファイルという2つのレイヤにわたる二重の保護を提供することができる。暗号化及び復号の省略は、システムの負荷を低減させ得る。また、仮想ドライブメタデータは、分散されることなく暗号化されるだけで、上記外部記憶装置へ書き込まれてもよい。
【0111】
また、本明細書では、秘密データを秘密分散法を用いて2つの分散データへと分散する例を主に説明した。しかしながら、上で説明したように、仮想ドライブ内の秘密データは、2つ以上のいかなる数の分散データへと分散されてもよい。また、分散データの書き込み先の装置が複数である限り、複数の分散データのうちのどれがどの記憶装置へと書き込まれてもよい。例えば、
図1Cに例示したように、ユーザにより携帯され得る端末装置(例えば、企業の社員が携帯するICカード型の社員証)に追加的な分散データを書き込むことにより、そうした端末装置に秘密データへのアクセスのための認証用デバイスとしての役割を与えることができる。記憶容量の小さい装置には、例えば、仮想ドライブメタデータから分散された分散メタデータの一断片のみが書き込まれてもよい。
【0112】
<5.変形例>
(1)ファイル分散−第1の変形例
図10は、ファイルを秘密分散法を用いて分散するためのファイル分散処理の流れの第1の変形例を示すフローチャートである。
図6に示したファイル分散処理は、上述した第1の動作モード(ダイレクトモード)における処理の一態様であり、一方で
図10に示したファイル分散処理は、上述した第2の動作モード(キャッシュモード)における処理の一態様である。
図10のステップS51〜S54は、
図6のステップS11〜S14と同様に実行され得る。
【0113】
ステップS51において、制御モジュール10は、仮想ドライブ内のファイルについてのファイル保存要求を検出する。ファイル保存要求が検出されると、制御モジュール10は、ステップS52において、保存されるべきファイルのファイルイメージを、メインメモリ102内の仮想ドライブのための記憶領域に記憶させる。次に、ステップS53において、制御モジュール10は、仮想ドライブ内の保存されるべきファイルのファイルイメージを、秘密分散モジュール30に暗号化させる。次に、ステップS54において、制御モジュール10は、暗号化されたファイルイメージを、秘密分散モジュール30に第1及び第2の分散ファイル91a、91bへと分散させる。また、制御モジュール10は、保存されるべきファイルのファイルメタデータを、秘密分散モジュール30に暗号化させ、第1及び第2の分散ファイルメタデータ90a、90bへと分散させる。
【0114】
次に、制御モジュール10は、ステップS55において、第1及び第2の分散ファイル91a、91b、並びに第1及び第2の分散ファイルメタデータ90a、90bをメインメモリ102に記憶させる。この時点では、これら分散ファイル及び分散メタデータの対応する記憶装置への書き込みは行われない。
【0115】
その後、ステップS56において、仮想ドライブのアンマウント要求が検出されると、制御モジュール10は、ステップS57において、仮想ドライブを無効化する。それにより、例えば画面から仮想ドライブの表示が消失する。また、制御モジュール10は、ステップS58おいて、第1の分散ファイル91a及び第1の分散ファイルメタデータ90aを、第1の分散ドライブ70aへと書き込む。また、制御モジュール10は、ステップS59において、第2の分散ファイル91b及び第2の分散ファイルメタデータ90bを、第2の分散ドライブ70bへと書き込む。なお、当然ながら、ステップS58は、外部記憶装置400が接続インタフェース106を介して情報処理装置100へ接続された状態において実行される。
【0116】
以上をもって、
図10に示したファイル分散処理は終了する。
【0117】
(2)ファイル分散−第2の変形例
図11は、ファイルを秘密分散法を用いて分散するためのファイル分散処理の流れの第2の変形例を示すフローチャートである。
図11に示したファイル分散処理は、上述した第2の動作モード(キャッシュモード)における処理の一態様である。
図11のステップS61〜S64は、
図10のステップS51〜S54と同様に実行され得る。
【0118】
ステップS61において、制御モジュール10は、仮想ドライブ内のファイルについてのファイル保存要求を検出する。ファイル保存要求が検出されると、制御モジュール10は、ステップS62において、保存されるべきファイルのファイルイメージを、メインメモリ102内の仮想ドライブのための記憶領域に記憶させる。次に、ステップS63において、制御モジュール10は、仮想ドライブ内の保存されるべきファイルのファイルイメージを、秘密分散モジュール30に暗号化させる。次に、ステップS64において、制御モジュール10は、暗号化されたファイルイメージを、秘密分散モジュール30に第1及び第2の分散ファイル91a、91bへと分散させる。また、制御モジュール10は、保存されるべきファイルのファイルメタデータを、秘密分散モジュール30に暗号化させ、第1及び第2の分散ファイルメタデータ90a、90bへと分散させる。
【0119】
次に、制御モジュール10は、ステップS65において、第2の分散ファイル91b及び第2の分散ファイルメタデータ90bを第2の分散ドライブ70bへと書き込む。また、制御モジュール10は、ステップS66において、第1の分散ファイル91a及び第1の分散ファイルメタデータ90aをメインメモリ102に記憶させる。この時点では、第1の分散ファイル91a及び第1の分散ファイルメタデータ90aの外部記憶装置400への書き込みは行われない。
【0120】
その後、ステップS67において、仮想ドライブのアンマウント要求が検出されると、制御モジュール10は、ステップS68において、仮想ドライブを無効化する。それにより、例えば画面から仮想ドライブの表示が消失する。また、制御モジュール10は、ステップS69おいて、第1の分散ファイル91a及び第1の分散ファイルメタデータ90aを、第1の分散ドライブ70aへと書き込む。なお、当然ながら、ステップS69は、外部記憶装置400が接続インタフェース106を介して情報処理装置100へ接続された状態において実行される。
【0121】
以上をもって、
図11に示したファイル分散処理は終了する。
【0122】
上述した第1の変形例又は第2の変形例によれば、分散ファイル及び分散ファイルメタデータの少なくとも外部記憶装置400への書き込みが、ファイル保存ではなく仮想ドライブのアンマウントのタイミングで行われる。それにより、外部記憶装置400へのアクセス回数が低減され、ファイル保存に伴う処理の遅延が低減される。分散ドライブへの書き込み前の分散ファイル及び分散ファイルメタデータは、情報処理装置100のメインメモリ102上で保持される。即ち、ユーザが突然に(例えば、仮想ドライブをアンマウントすることなく)外部記憶装置400を情報処理装置100から接続切断したとしても、分散ファイル及び分散ファイルメタデータがメインメモリ102上で保全されるため、ユーザの意図に反してファイルの更新内容が失われてしまう事態が防止される。外部記憶装置400が情報処理装置100へと再接続されれば、メインメモリ102上の最新の分散ファイル及び分散ファイルメタデータの外部記憶装置400の分散ドライブへの書き込みは再び可能となる。
【0123】
第1の変形例及び第2の変形例は、例えば、外部記憶装置400が無線で情報処理装置100へ接続されるシナリオにおいて一層有益である。なぜなら、無線接続は、無線チャネルの条件(例えば、信号強度、雑音レベル及び他デバイスからの干渉など)に依存して、比較的頻繁に遮断され得るが、上述した動作モードでは、無線チャネルの条件に影響されることなく分散ファイルの一貫性が確実に保たれるからである。なお、長い時間にわたって1セットの分散ファイル(例えば、第1の分散ファイル91a及び第2の分散ファイル91b)を同一の装置上に保持しておくことは、セキュリティの観点からは好ましくない。そこで、制御モジュール10は、例えばタイマで時間を計測し、接続切断からの経過時間が予め定義される時間を上回る場合に、メインメモリ102上の分散ファイル及び分散ファイルメタデータを消去してもよい。
【0124】
(3)その他の変形例
本開示のまた別の観点によれば、情報処理装置のプロセッサを、秘密分散法を用いて秘密データを分散することにより複数の分散データを形成する、ように構成される秘密分散モジュールと、上記複数の分散データの各々の、対応する記憶装置のデータ領域からの読み出し又は当該データ領域への書き込みを制御する、ように構成される制御モジュールと、として機能させるためのコンピュータプログラムであって、上記制御モジュールは、上記秘密データを仮想ドライブ内に保持するようにさらに構成され、上記制御モジュールは、第1の記憶装置の上記情報処理装置への接続の検出に応じて、上記仮想ドライブを生成するための少なくとも暗号化された仮想ドライブメタデータを上記第1の記憶装置から読み出し、上記仮想ドライブメタデータを復号し、復号された上記仮想ドライブメタデータに基づいて、上記仮想ドライブを生成し、上記第1の記憶装置の上記情報処理装置からの接続切断が検出された場合に、上記仮想ドライブを無効化する、ようにさらに構成され、上記仮想ドライブ内のファイルのファイルイメージは、上記秘密分散モジュールにより少なくとも第1の分散ファイル及び第2の分散ファイルへと分散され、上記第1の分散ファイルは、上記第1の記憶装置へ書き込まれ、上記第2の分散ファイルは、上記第1の記憶装置とは異なる第2の記憶装置へ書き込まれる、コンピュータプログラムが提供されてもよい。また、対応する秘密管理方法、及び情報処理システムが提供されてもよい。
【0125】
かかる構成によれば、秘密データをユーザが扱うための場所を提供する仮想ドライブを生成するためのメタデータは、少なくとも暗号化によって保護される。仮想ドライブ内の秘密データは秘密分散法によって保護される。従って、秘密データをやはり二重の障壁によって漏洩のリスクから保護することができる。また、仮想ドライブの生成から消滅までのライフサイクルを、外部記憶装置の接続及び接続切断というユーザにとって直観的に把握可能なアクションに結び付けることもできる。
【0126】
本開示のまた別の観点によれば、情報処理装置のプロセッサを、秘密分散法を用いて秘密データを分散することにより複数の分散データを形成する、ように構成される秘密分散モジュールと、上記複数の分散データの各々の、対応する記憶装置のデータ領域への書き込みを制御する、ように構成される制御モジュールと、として機能させるためのコンピュータプログラムであって、上記秘密データは、上記情報処理装置の仮想ドライブ内に保持され、上記制御モジュールは、上記仮想ドライブを生成するための仮想ドライブメタデータを取得し、取得された上記仮想ドライブメタデータに基づいて、上記情報処理装置のファイルシステムに上記仮想ドライブの設定を登録することにより、上記仮想ドライブを生成し、上記ファイルシステムを介して、上記仮想ドライブ内で扱われるファイルの保存についてのファイル保存要求を検出し、上記ファイル保存要求が検出された場合に、保存されるべき上記ファイルのファイルイメージを上記秘密分散モジュールに上記秘密分散法を用いて少なくとも第1の分散ファイル及び第2の分散ファイルへと分散させる、ようにさらに構成され、上記第1の分散ファイルは、外部記憶装置である第1の記憶装置へ書き込まれ、上記第2の分散ファイルは、上記第1の記憶装置とは異なる第2の記憶装置へ書きまれる、コンピュータプログラムが提供されてもよい。また、対応する秘密管理方法、及び情報処理システムが提供されてもよい。
【0127】
かかる構成によれば、仮想ドライブ上で扱われる秘密データを秘密分散法を用いて保護する仕組みと、ユーザが直接的に操作するアプリケーションとの間にファイルシステムが介在することになる。それにより、様々なイベントを契機としてユーザ又はアプリケーションから発せられるファイル保存要求を、仮想ドライブが共通的なプログラムインタフェースを通じて受け付けることが可能となり、複雑なロジックを要しない低コストでの秘密分散技術の実装が可能となる。また、アプリケーションに改修のインパクトを与えることなく、システムの円滑な動作を実現することができる。
【0128】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【0129】
例えば、本明細書においてフローチャートを用いて説明した処理は、必ずしもフローチャートに示された順序で実行されなくてもよい。いくつかの処理ステップは、並列的に実行されてもよい。また、追加的な処理ステップが採用されてもよく、一部の処理ステップが省略されてもよい。
【0130】
本明細書において説明したコンピュータプログラムは、情報処理装置の内部又は外部に設けられる非一時的なコンピュータ読取可能な媒体に格納される。そして、それらプログラムの各々は、例えば、実行時にRAMへとロードされ、プロセッサにより実行される。コンピュータ読取可能な媒体は、例えば、ROM(Read Only Memory)、CD(Compact Disk)、DVD(Digital Versatile Disc)、HDD、SSD、光磁気ディスク、磁気ディスク、磁気テープ、カセットテープ若しくは半導体メモリ、又はこれらの組合せなどといった、いかなる種類の媒体であってもよい。
【解決手段】情報処理装置のプロセッサを、秘密分散モジュールと、データの読み出し又は書き込みを制御する制御モジュールと、として機能させるためのコンピュータプログラムが提供される。所定のドライブ内のファイルのファイルイメージは複数の分散ファイルへと分散され、当該ファイルのファイルメタデータは複数の分散ファイルメタデータへと分散される。上記制御モジュールは、上記所定のドライブが起動される際に、少なくとも第1の分散ファイルメタデータ及び第2の分散ファイルメタデータから、上記秘密分散モジュールに上記ファイルメタデータを復元させ、上記ファイルの起動が要求された後に、少なくとも第1の分散ファイル及び第2の分散ファイルから、上記秘密分散モジュールに上記ファイルを復元させる、ようにさらに構成される。対応する方法及びシステムもまた提供される。