以下に添付図面を参照して、この発明にかかる格納方法、取得方法、作成方法、格納装置、取得装置、作成装置、格納プログラム、取得プログラム、および作成プログラムの実施の形態を詳細に説明する。以降では、取得装置、格納装置、および作成装置として動作する情報処理装置を例に挙げる。まず、図1を用いて、情報処理装置によるデータ処理の流れについて説明する。
(情報処理装置によるデータ処理の流れ)
図1は、情報処理装置によるデータ処理の流れを示す説明図である。
図1に示す情報処理装置100は、所属するグループGに固有のグループ鍵Gkを有するコンピュータである。グループ鍵Gkは、例えば、情報処理装置100が有するグループ鍵テーブルに記憶される。グループ鍵テーブルについては図3を用いて後述する。
情報処理装置100は、データベース101のディレクトリDからディレクトリD固有のディレクトリ鍵Dkを取得して、ディレクトリ鍵Dkとグループ鍵Gkとを合成して、データ鍵dkを作成する。情報処理装置100は、作成したデータ鍵dkを用いて、ディレクトリDにデータdを暗号化して格納し、また、ディレクトリDから暗号化データCdを取得して復号する。
暗号化するデータdは、例えば、情報処理装置100の外部の要求元装置から格納要求されたデータdであり、要求元装置から情報処理装置100に送信される。復号する暗号化データCdは、例えば、情報処理装置100の外部の要求元装置から取得要求された暗号化データCdであり、復号後に情報処理装置100から要求元装置に送信される。また、情報処理装置100自体が要求元装置であってもよい。この場合、情報処理装置100は、暗号化するデータdの入力を受け付ける。また、情報処理装置100は、復号した暗号化データCdを出力する。以降では、簡単のため、要求元装置は、情報処理装置100自体であるとする。
図1の例では、情報処理装置100A1は、グループGAに所属し、グループGAに固有のグループ鍵GkAを有する。また、情報処理装置100A2は、グループGAに所属し、グループGAに固有のグループ鍵GkAを有する。また、情報処理装置100B1は、グループGBに所属し、グループGBに固有のグループ鍵GkBを有する。また、情報処理装置100ABは、グループGAとグループGBとに所属し、グループGAに固有のグループ鍵GkAと、グループGBに固有のグループ鍵GkBと、を有する。
図1に示すデータベース101は、暗号化データCdが格納される複数のディレクトリDを有するコンピュータである。データベース101は、1コンピュータによる実現に限らない。例えば、データベース101は、複数のコンピュータにより実現されてもよい。暗号化データCdは、グループGに固有のグループ鍵Gkと、ディレクトリDに固有のディレクトリ鍵Dkと、を合成して得られるデータ鍵dkによって暗号化されたデータdである。ディレクトリDには、ディレクトリ鍵DkとディレクトリDを利用可能なグループGを示すグループ情報とを対応付けた特定ファイルFが格納されている。
図1の例では、データベース101には、グループGAに所属する情報処理装置100が利用するデータdが暗号化されて格納されるディレクトリDAがある。ディレクトリDAには、特定ファイルFAが格納されている。特定ファイルFAは、ディレクトリDAを利用可能なグループを示す「GA」と、グループGAに固有のグループ鍵GkAと合成することにより、データ鍵dkAを生成することができるディレクトリ鍵DkAと、を対応付けた情報を含む。
また、データベース101には、グループGBに所属する情報処理装置100が利用するデータdが暗号化されて格納されるディレクトリDBがある。ディレクトリDBには、特定ファイルFBが格納されている。特定ファイルFBは、ディレクトリDBを利用可能なグループを示す「GB」と、グループGBに固有のグループ鍵GkBと合成することにより、データ鍵dkBを生成することができるディレクトリ鍵DkBと、を対応付けた情報を含む。
また、データベース101には、グループGAとグループGBとのいずれかのグループGに所属する情報処理装置100が利用するデータdが暗号化されて格納されるディレクトリDorがある。ディレクトリDorには、特定ファイルForが格納されている。
特定ファイルForは、ディレクトリDorを利用可能なグループを示す「GA」「or」「GB」を含む。また、特定ファイルForは、「GA」と、グループGAに固有のグループ鍵GkAと合成することにより、データ鍵dkorを生成することができるディレクトリ鍵Dkor1と、を対応付けた情報を含む。また、特定ファイルForは、「GB」と、グループGBに固有のグループ鍵GkBと合成することにより、データ鍵dkorを生成することができるディレクトリ鍵Dkor2と、を対応付けた情報を含む。
また、データベース101には、グループGAとグループGBとのいずれのグループGにも所属する情報処理装置100が利用するデータdが暗号化されて格納されるディレクトリDandがある。ディレクトリDandには、特定ファイルFandが格納されている。
特定ファイルFandは、ディレクトリDandを利用可能なグループを示す「GA」「and」「GB」を含む。また、特定ファイルFandは、「GA」と、グループGAに固有のグループ鍵GkAと合成することにより、データ鍵dkand1を生成することができるディレクトリ鍵Dkand1と、を対応付けた情報を含む。また、特定ファイルFandは、「GB」と、グループGBに固有のグループ鍵GkBと合成することにより、データ鍵dkand2を生成することができるディレクトリ鍵Dkand2と、を対応付けた情報を含む。
ディレクトリDは、例えば、情報処理装置100によって作成される。情報処理装置100によるディレクトリDの作成の詳細については、図5〜図9を用いて後述する。
まず、情報処理装置100A1が、データdAを暗号化して暗号化データCdAを生成し、ディレクトリDAに暗号化データCdAを格納する場合について説明する。
この場合、(1)情報処理装置100A1は、ディレクトリDAから、特定ファイルFAを取得し、特定ファイルFAの中からディレクトリ鍵DkAを取得する。(2)次に、情報処理装置100A1は、取得したディレクトリ鍵DkAと、グループ鍵GkAと、を合成して、データ鍵dkAを生成する。
(3)そして、情報処理装置100A1は、格納するデータdAを、生成したデータ鍵dkAを用いて暗号化して、暗号化データCdAを生成する。(4)次に、情報処理装置100A1は、暗号化データCdAをディレクトリDAに格納する。
これにより、情報処理装置100A1は、ディレクトリDAに格納されるデータdAを暗号化された状態にして、セキュリティを担保することができる。情報処理装置100によるディレクトリDへの暗号化データCdの格納の詳細については、図10〜図14を用いて後述する。
次に、情報処理装置100A2が、ディレクトリDAから暗号化データCdAを取得し、暗号化データCdAを復号してデータdAを生成する場合について説明する。
この場合、(5)情報処理装置100A2は、ディレクトリDAから、特定ファイルFAを取得し、特定ファイルFAの中からディレクトリ鍵DkAを取得する。(6)次に、情報処理装置100A2は、取得したディレクトリ鍵DkAと、グループ鍵GkAと、を合成して、データ鍵dkAを生成する。
(7)そして、情報処理装置100A2は、ディレクトリDAから、暗号化データCdAを取得する。(8)次に、情報処理装置100A2は、生成したデータ鍵dkAを用いて、暗号化データCdAを復号して、データdAを生成する。
これにより、情報処理装置100A2は、ディレクトリDAに格納された暗号化データCdAを復号して、データdAを利用することができる。このように、情報処理装置100A1,100A2とは、データdAを共用することができる。情報処理装置100によるディレクトリDの暗号化データCdの取得の詳細については、図15〜図18を用いて後述する。
次に、情報処理装置100B1が、ディレクトリDAから暗号化データCdAを取得する場合について説明する。
この場合、(9)情報処理装置100B1は、ディレクトリDAから、特定ファイルFAを取得し、特定ファイルFAの中からディレクトリ鍵DkAを取得する。(10)ここで、情報処理装置100B1は、グループ鍵GkAを有していないため、ディレクトリ鍵DkAを取得しても、データ鍵dkAを生成することができない。
(11)結果として、情報処理装置100B1は、ディレクトリDAから、暗号化データCdAを取得しても、暗号化データCdAを復号することができない。これにより、ディレクトリDAは、グループGAに所属する情報処理装置100A1,100A2とからは利用可能、かつ、グループGAに所属しない情報処理装置100B1からは利用不可能なディレクトリDになる。
また、詳細は図11に後述するが、ディレクトリDorには、グループGAに所属する情報処理装置100であってもグループGBに所属する情報処理装置100であっても、暗号化データCdorを格納することができる。また、ディレクトリDorの暗号化データCdorは、グループGAに所属する情報処理装置100であってもグループGBに所属する情報処理装置100であっても、復号することができる。これにより、ディレクトリDorは、グループGAに所属する情報処理装置100とグループGBに所属する情報処理装置100とが共用することができるディレクトリDになる。
また、詳細は図12に後述するが、ディレクトリDandには、グループGAとグループGBとの両方に所属する情報処理装置100が暗号化データCdandを格納することができる。また、ディレクトリDandの暗号化データCdandは、グループGAとグループGBとの両方に所属する情報処理装置100が復号することができる。これにより、ディレクトリDandは、グループGAとグループGBとの両方に所属する情報処理装置100が利用可能なディレクトリDになる。
このように、各ディレクトリDは、特定のグループGに所属する情報処理装置100から利用可能なディレクトリDになる。換言すれば、情報処理装置100とデータベース101とによるシステムは、情報処理装置100のディレクトリDへの利用権限を認証し、認証された情報処理装置100にディレクトリDの利用を許可する「アクセス制御」と同様の機能を実現することができる。
また、データベース101は、情報処理装置100から暗号化データCdを格納されたり、格納された暗号化データCdを取得されたりする。そのため、データベース101は、新たな機能を追加しなくてもよく、情報処理装置100の利用者とは異なるサービス提供者によって提供され、情報処理装置100の利用者が機能追加や機能変更をすることができないコンピュータによっても実現することができる。
(情報処理装置100のハードウェア構成例)
図2は、実施の形態にかかる情報処理装置100のハードウェア構成例を示すブロック図である。図2において、情報処理装置100は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ(Hard Disk Drive)204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、情報処理装置100の全体の制御を司る。ROM202は、ブートプログラム、取得プログラム、格納プログラム、および作成プログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御に従って磁気ディスク205に対するデータdのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータdを記憶する。
光ディスクドライブ206は、CPU201の制御に従って光ディスク207に対するデータdのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータdを記憶したり、光ディスク207に記憶されたデータdをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータdを表示する。このディスプレイ208は、例えば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータdの入出力を制御する。I/F209には、例えばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データdの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、情報処理装置100内に画像データdを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データdや文書データdを印刷する。プリンタ213には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。なお、光ディスクドライブ206、光ディスク207、ディスプレイ208、キーボード210、マウス211、スキャナ212、およびプリンタ213の少なくともいずれか1つは、なくてもよい。
(グループ鍵テーブル)
次に、図3を用いて、グループ鍵テーブルの記憶内容について説明する。グループ鍵テーブル300は、グループ鍵Gkを記憶するテーブルである。グループ鍵テーブル300は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域により実現される。
図3は、グループ鍵テーブル300の記憶内容を示す説明図である。図3に示すように、グループ鍵テーブル300は、グループ名項目のそれぞれに対応付けて、グループ鍵項目を有し、情報処理装置100が所属するグループGごとにレコードを構成する。図3の例は、グループGAとグループGBとに所属する情報処理装置100ABが有するグループ鍵テーブル300である。
グループ名項目には、情報処理装置100が所属するグループGの名称が記憶される。グループ鍵項目には、グループ名項目のグループGに固有のグループ鍵Gkが記憶される。図3の例では、情報処理装置100ABが所属するグループGAの名称「GA」に対応付けて、グループGAに固有のグループ鍵Gk「FE9F1A9302B582C」が記憶されている。
(情報処理装置100の機能的構成例)
次に、図4を用いて、情報処理装置100の機能的構成例について説明する。図4は、情報処理装置100の機能的構成を示すブロック図である。情報処理装置100は、受付部401と、取得部402と、生成部403と、送信部404と、暗号化部405と、を含む。受付部401と、取得部402と、生成部403と、送信部404と、暗号化部405とは、具体的には、例えば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
情報処理装置100は、ディレクトリDを作成する機能と、データdを暗号化してディレクトリDに格納する機能と、ディレクトリDから暗号化データCdを取得して復号する機能と、を有する。
<ディレクトリDを作成する機能>
まず、情報処理装置100が有する機能のうち、ディレクトリDを作成する機能について説明する。ディレクトリDを作成する機能は、受付部401と、取得部402と、生成部403と、送信部404と、により実現される。
・或るグループGに所属する情報処理装置100から利用可能なディレクトリDを作成する場合
ここで、作成されるディレクトリDが、或るグループGに所属する情報処理装置100から利用可能なディレクトリDである場合を例に挙げる。この場合の作成例は図5を用いて後述する。
この場合、受付部401は、複数のグループGの中のいずれかのグループGに所属する要求元装置から、いずれかのグループGの識別情報を含むいずれかのグループGに関する格納場所の作成要求を受け付ける。
ここで、要求元装置とは、例えば、情報処理装置100と通信可能であって、要求元装置の利用者から入力された情報を情報処理装置100に送信するコンピュータである。グループGとは、同一の識別情報を有する1または複数の要求元装置の集合である。識別情報とは、要求元装置が有する属性を示す情報であり、例えば、要求元装置を有する会社や部署を示す情報である。また、要求元装置は、例えば、情報処理装置100自体であってもよい。
また、要求元装置は、利用者から識別情報の入力を受け付けて、所属するグループGを切り替えてもよい。例えば、要求元装置は、利用者から部署「経理」の入力を受け付けた場合に部署「経理」に所属する要求元装置として動作し、利用者から部署「開発」の入力を受け付けた場合に部署「開発」に所属する要求元装置として動作し、所属する部署を切り替えてもよい。また、要求元装置は複数あってもよく、情報処理装置100は、同一グループに所属する複数の要求元装置と通信してもよい。
受付部401は、具体的には、例えば、グループGAに所属する要求元装置から、グループGAに所属する情報処理装置100が利用するディレクトリDAの作成要求を受け付ける。作成要求には、例えば、作成するディレクトリDAを利用するグループGを示す識別情報「GA」と、ディレクトリDAの作成先を示す作成先情報が含まれる。作成先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた作成要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの作成先を指定することができる。
この場合、取得部402は、受付部401によって作成要求が受け付けられた場合、いずれかのグループGの識別情報に関連付けられたいずれかのグループGに固有な第1の分散鍵を記憶装置から取得する。記憶装置とは、例えば、上述したグループ鍵テーブル300である。第1の分散鍵とは、他の分散鍵と合成することにより、データdの暗号化と復号とに用いられる鍵を生成するための鍵であり、上述したグループ鍵Gkである。
取得部402は、具体的には、例えば、グループ鍵テーブル300のグループ名項目から、作成要求内の識別情報「GA」を探索する。次に、取得部402は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
取得されたグループ鍵Gkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、生成部403は、第1の分散鍵を用いて、第2の分散鍵を生成することができる。
この場合、生成部403は、いずれかのグループGに固有な第2の分散鍵を生成する。第2の分散鍵とは、他の分散鍵と合成することにより、データdの暗号化と復号とに用いられる鍵を生成するための鍵であり、上述したディレクトリ鍵Dkである。
生成部403は、具体的には、例えば、作成要求されたディレクトリDAに格納されるデータdの暗号化と復号とに用いられるデータ鍵dkAを生成する。次に、生成部403は、生成したデータ鍵dkAをグループ鍵GkAを用いて暗号化して、暗号化されたデータ鍵dkAをディレクトリ鍵DkA「23FB5A20EC989F1」として生成する。
そして、生成部403は、生成したディレクトリ鍵DkA「23FB5A20EC989F1」と、ディレクトリDAを利用するグループGを示す識別情報「GA」と、を対応付けた特定ファイルFAを生成する。
生成された第2の分散鍵や特定ファイルFは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、送信部404は、作成するディレクトリDに、ディレクトリD固有のディレクトリ鍵Dkを格納することができる。
この場合、送信部404は、生成部403によって生成された第2の分散鍵といずれかのグループGの識別情報とを関連付けた情報を、データベース101内のいずれかのグループGに固有な格納場所を指定して、データベース101に送信する。ここで、生成部403によって生成された第2の分散鍵といずれかのグループGの識別情報とを関連付けた情報とは、例えば、上述した特定ファイルFである。固有な格納場所とは、例えば、作成要求されたディレクトリDである。
送信部404は、具体的には、例えば、データベース101が作成要求されたパスにディレクトリDを作成して特定ファイルFを格納するように、データベース101に作成要求されたパスを指定して特定ファイルFを送信する。これにより、データベース101は、作成要求されたパスにディレクトリDを作成し、作成したディレクトリDに特定ファイルFを格納することができる。
・複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDを作成する場合
ここで、作成されるディレクトリDが、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDである場合を例に挙げる。この場合の作成例は図6を用いて後述する。
この場合、受付部401は、複数のグループGの中の特定のグループG群のいずれかのグループGに所属する要求元装置から、いずれかのグループGの識別情報を含む特定のグループG群に関する格納場所の作成要求を受け付ける。
受付部401は、具体的には、例えば、グループGAとグループGBとに所属する要求元装置から、グループGAとグループGBとのいずれかに所属する情報処理装置100が利用するディレクトリDorの作成要求を受け付ける。
作成要求には、例えば、作成するディレクトリDorを利用するグループGを示す識別情報「GA」「GB」と、ディレクトリDorを利用する情報処理装置100がグループGAとグループGBとのいずれかであることを示す条件情報「or」と、が含まれる。また、作成要求には、ディレクトリDorの作成先を示す作成先情報が含まれる。作成先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた作成要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。
この場合、取得部402は、受付部401によって作成要求が受け付けられた場合、いずれかのグループGの識別情報に関連付けられたいずれかのグループGに固有な第1の分散鍵を記憶装置から取得する。
取得部402は、具体的には、例えば、グループ鍵テーブル300のグループ名項目から、作成要求内の識別情報「GA」「GB」を探索する。次に、取得部402は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」と、探索した「GB」に対応付けられたグループ鍵GkB「3A92EB8FC51F902」を取得する。
取得されたグループ鍵Gkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、生成部403は、第1の分散鍵を用いて、第2の分散鍵を生成することができる。
この場合、生成部403は、特定のグループG群に固有な第2の分散鍵を生成する。生成部403は、具体的には、例えば、作成要求されたディレクトリDorに格納するデータdの暗号化と復号とに使用されるデータ鍵dkor「F921E0A2938F5CB」を生成する。次に、生成部403は、データ鍵dkorを、グループ鍵GkA「FE9F1A9302B582C」を用いて暗号化する。そして、生成部403は、ディレクトリ鍵Dkor1になる暗号化されたデータ鍵dkor「23FB5A20EC989F1」を生成する。
また、生成部403は、データ鍵dkor「F921E0A2938F5CB」を、グループ鍵GkB「3A92EB8FC51F902」を用いて暗号化する。そして、生成部403は、ディレクトリ鍵Dkor2になる暗号化されたデータ鍵dkor「99AA56A3E5DD3A2」を生成する。
そして、生成部403は、特定ファイルForを生成する。特定ファイルForは、ディレクトリ鍵Dkor1とディレクトリDorを利用するグループGの名称「GA」とを対応付けた情報を含む。また、特定ファイルForは、ディレクトリ鍵Dkor2とディレクトリDorを利用するグループGの名称「GB」とを対応付けた情報を含む。また、特定ファイルFは、ディレクトリDorを利用する情報処理装置100が、グループGAとグループGBとのいずれかに所属する情報処理装置100であることを示す条件情報「or」を含む。
生成された第2の分散鍵や特定ファイルFは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、送信部404は、作成するディレクトリDに、ディレクトリD固有のディレクトリ鍵Dkを格納することができる。
この場合、送信部404は、生成部403によって生成された第2の分散鍵といずれかのグループGの識別情報とを関連付けた情報を、データベース101内のいずれかのグループGに固有な格納場所を指定して、データベース101に送信する。
送信部404は、具体的には、例えば、データベース101が作成要求されたパスにディレクトリDを作成して特定ファイルFを格納するように、データベース101に作成要求されたパスを指定して特定ファイルFを送信する。これにより、データベース101は、作成要求されたパスにディレクトリDを作成し、作成したディレクトリDに特定ファイルFを格納することができる。
・複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDを作成する場合
ここで、作成されるディレクトリDが、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDである場合を例に挙げる。この場合の作成例は図7を用いて後述する。
この場合、受付部401は、複数のグループGの中の特定のグループG群のいずれのグループGにも所属する要求元装置から、特定のグループG群の識別情報を含む特定のグループG群に関する格納場所の作成要求を受け付ける。
受付部401は、具体的には、例えば、グループGAとグループGBとに所属する要求元装置から、グループGAとグループGBとのいずれにも所属する情報処理装置100が利用するディレクトリDandの作成要求を受け付ける。
作成要求には、例えば、作成するディレクトリDandを利用するグループGを示す識別情報「GA」「GB」と、ディレクトリDandを利用する情報処理装置100がグループGAとグループGBとのいずれにも所属することを示す条件情報「and」と、が含まれる。また、作成要求には、ディレクトリDandの作成先を示す作成先情報が含まれる。作成先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた作成要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。
この場合、取得部402は、受付部401によって作成要求が受け付けられた場合、特定のグループG群の識別情報に関連付けられた特定のグループG群の各グループGに固有な第1の分散鍵を記憶装置から取得する。
取得部402は、具体的には、例えば、グループ鍵テーブル300のグループ名項目から、作成要求内の識別情報「GA」「GB」を探索する。次に、取得部402は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」と、探索した「GB」に対応付けられたグループ鍵GkB「3A92EB8FC51F902」を取得する。
取得されたグループ鍵Gkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、生成部403は、第1の分散鍵を用いて、第2の分散鍵を生成することができる。
この場合、生成部403は、特定のグループG群の各グループGに固有な第2の分散鍵群を生成する。生成部403は、具体的には、例えば、作成要求されたディレクトリDandに格納するデータdの暗号化と復号とに使用されるデータ鍵dkand1「F921E0A2938F5CB」とデータ鍵dkand2「989E2BCF32A10F5」の組を生成する。
次に、生成部403は、データ鍵dkand1「F921E0A2938F5CB」を、グループ鍵GkA「FE9F1A9302B582C」を用いて暗号化する。そして、生成部403は、ディレクトリ鍵Dkand1になる暗号化されたデータ鍵dkand1「23FB5A20EC989F1」を生成する。
また、生成部403は、データ鍵dkand2「989E2BCF32A10F5」を、グループ鍵GkB「3A92EB8FC51F902」を用いて暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkand2になる暗号化されたデータ鍵dkand2「2A89E9FC10F532B」を生成する。
そして、生成部403は、特定ファイルFandを生成する。特定ファイルFandは、ディレクトリ鍵Dkand1とディレクトリDandを利用するグループG群の一方の名称「GA」とを対応付けた情報を含む。また、特定ファイルFは、ディレクトリ鍵Dkand2とディレクトリDandを利用するグループG群の他方の名称「GB」とを対応付けた情報を含む。また、特定ファイルFは、ディレクトリDandを利用する情報処理装置100が、グループGAにもグループGBにも所属する情報処理装置100であることを示す条件情報「and」を含む。
生成された第2の分散鍵や特定ファイルFは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、送信部404は、作成するディレクトリDに、ディレクトリD固有のディレクトリ鍵Dkを格納することができる。
この場合、送信部404は、生成部403によって生成された第2の分散鍵群と特定のグループG群の識別情報とを関連付けた情報を、データベース101内の特定のグループG群に固有な格納場所を指定して、データベース101に送信する。
送信部404は、具体的には、例えば、データベース101が作成要求されたパスにディレクトリDを作成して特定ファイルFを格納するように、データベース101に作成要求されたパスを指定して特定ファイルFを送信する。これにより、データベース101は、作成要求されたパスにディレクトリDを作成し、作成したディレクトリDに特定ファイルFを格納することができる。
<データdを暗号化してディレクトリDに格納する機能>
次に、情報処理装置100が有するデータdを暗号化してディレクトリDに格納する機能について説明する。データdを暗号化してディレクトリDに格納する機能は、受付部401と、取得部402と、生成部403と、送信部404と、暗号化部405と、により実現される。
・或るグループGに所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合
ここで、或るグループGに所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合を例に挙げる。この場合の格納例は図10を用いて後述する。
この場合、受付部401は、複数のグループGの中のいずれかのグループGに所属する要求元装置から、いずれかのグループGの識別情報を含むいずれかのグループGに関するデータdの格納要求を受け付ける。
受付部401は、具体的には、例えば、グループGAに所属する要求元装置から、グループGAに所属する情報処理装置100が利用するディレクトリDAへのデータdの格納要求を受け付ける。格納要求には、例えば、格納されるデータdが含まれる。また、格納要求には、格納先のディレクトリDAを利用するグループGを示す識別情報「GA」と、格納先のディレクトリDAを示す格納先情報が含まれる。格納先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた格納要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの場所を指定することができる。
この場合、取得部402は、受付部401によって格納要求が受け付けられた場合、いずれかのグループGの識別情報に関連付けられたいずれかのグループGに固有な第1の分散鍵を記憶装置から取得する。
取得部402は、具体的には、例えば、グループ鍵テーブル300のグループ名項目から、格納要求内の識別情報「GA」を探索する。次に、取得部402は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
取得されたグループ鍵Gkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、生成部403は、第1の分散鍵と第2の分散鍵を合成することができる。
この場合、取得部402は、複数のグループGの各グループGのデータd群を記憶するデータベース101から、いずれかのグループGの識別情報に関連付けられたいずれかのグループGに固有な第2の分散鍵を取得する。
取得部402は、具体的には、例えば、格納要求されたディレクトリDAから、特定ファイルFAを取得する。次に、取得部402は、特定ファイルFAの中から、格納要求内の識別情報「GA」が示すグループGAに対応するディレクトリ鍵DkAを取得する。
この場合、生成部403は、第1の分散鍵と取得部402によって取得された第2の分散鍵を合成することにより暗号鍵を生成する。生成部403は、具体的には、例えば、ディレクトリ鍵DkAをグループ鍵GkAを用いて復号して、データ鍵dkAを生成する。
生成されたデータ鍵dkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、暗号化部405は、ディレクトリDに格納するデータdを暗号化することができる。
この場合、暗号化部405は、生成部403によって生成された暗号鍵でデータdを暗号化する。暗号化部405は、具体的には、例えば、データ鍵dkを用いて、データdを暗号化する。これにより、送信部404は、暗号化データCdを送信することができる。
この場合、送信部404は、暗号化部405によって暗号化された暗号化データCdをデータベース101内の第2の分散鍵の格納場所に送信する。送信部404は、具体的には、例えば、データベース101が格納要求されたパスのディレクトリDに、暗号化データCdを格納するように、データベース101に格納要求されたパスを指定して暗号化データCdを送信する。これにより、データベース101は、格納要求されたパスのディレクトリDに、暗号化データCdを格納することができる。
・複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDにデータdを格納する場合
ここで、作成されるディレクトリDが、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDにデータdを格納する場合を例に挙げる。この場合の格納例は図11を用いて後述する。
この場合、受付部401は、複数のグループGの中の特定のグループG群のいずれかのグループGに所属する要求元装置から、いずれかのグループGの識別情報を含む特定のグループG群に関するデータdの格納要求を受け付ける。
受付部401は、具体的には、例えば、グループGAとグループGBとに所属する要求元装置から、グループGAとグループGBとのいずれかに所属する情報処理装置100が利用するディレクトリDorの格納要求を受け付ける。
格納要求には、例えば、格納されるデータdが含まれる。また、格納要求には、格納先のディレクトリDorを利用するグループGを示す識別情報「GA」「GB」と、ディレクトリDorを利用する情報処理装置100がグループGAとグループGBとのいずれかであることを示す条件情報「or」と、が含まれる。また、格納要求には、格納先のディレクトリDorを示す格納先情報が含まれる。格納先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた格納要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの場所を指定することができる。
この場合、取得部402は、受付部401によって格納要求が受け付けられた場合、いずれかのグループGの識別情報に関連付けられたいずれかのグループGに固有な第1の分散鍵を記憶装置から取得する。
取得部402は、具体的には、例えば、グループ鍵テーブル300のグループ名項目から、格納要求内の識別情報「GA」を探索する。次に、取得部402は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
取得されたグループ鍵Gkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、生成部403は、第1の分散鍵と第2の分散鍵を合成することができる。
この場合、取得部402は、複数のグループGの各グループGのデータd群を記憶するデータベース101から、いずれかのグループGの識別情報に関連付けられたいずれかのグループGに固有な第2の分散鍵を取得する。
取得部402は、具体的には、例えば、格納要求されたディレクトリDorから、特定ファイルForを取得する。次に、取得部402は、特定ファイルForの中から、格納要求内の識別情報「GA」が示すグループGAに対応するディレクトリ鍵DkAを取得する。
この場合、生成部403は、第1の分散鍵と取得部402によって取得された第2の分散鍵を合成することにより暗号鍵を生成する。生成部403は、具体的には、例えば、グループ鍵GkA「FE9F1A9302B582C」を用いて、ディレクトリ鍵Dkor1「23FB5A20EC989F1」を復号し、データ鍵dkor「F921E0A2938F5CB」を生成する。
生成されたデータ鍵dkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、暗号化部405は、ディレクトリDに格納するデータdを暗号化することができる。
この場合、暗号化部405は、生成部403によって生成された暗号鍵でデータdを暗号化する。暗号化部405は、具体的には、例えば、データ鍵dkを用いて、データdを暗号化する。これにより、送信部404は、暗号化データCdを送信することができる。
この場合、送信部404は、暗号化部405によって暗号化された暗号化データCdをデータベース101内の第2の分散鍵の格納場所に送信する。送信部404は、具体的には、例えば、データベース101が格納要求されたパスのディレクトリDに、暗号化データCdを格納するように、データベース101に格納要求されたパスを指定して暗号化データCdを送信する。これにより、データベース101は、格納要求されたパスのディレクトリDに、暗号化データCdを格納することができる。
・複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合
ここで、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合を例に挙げる。この場合の格納例は図12を用いて後述する。
この場合、受付部401は、複数のグループGの中の特定のグループG群のいずれのグループGにも所属する要求元装置から、特定のグループG群の識別情報を含む特定のグループG群に関するデータdの格納要求を受け付ける。
受付部401は、具体的には、例えば、グループGAにもグループGBにも所属する要求元装置から、グループGAとグループGBとのいずれにも所属する情報処理装置100が利用するディレクトリDandへのデータdの格納要求を受け付ける。
格納要求には、例えば、格納されるデータdが含まれる。また、格納要求には、格納先のディレクトリDandを利用するグループGを示す識別情報「GA」「GB」と、ディレクトリDandを利用する情報処理装置100がグループGAとグループGBとのいずれにも所属することを示す条件情報「and」と、が含まれる。また、格納要求には、格納先のディレクトリDandを示す格納先情報が含まれる。格納先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた格納要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの場所を指定することができる。
この場合、取得部402は、受付部401によって格納要求が受け付けられた場合、特定のグループG群の識別情報に関連付けられた特定のグループG群の各グループGに固有な第1の分散鍵を記憶装置から取得する。
取得部402は、具体的には、例えば、グループ鍵テーブル300のグループ名項目から、格納要求内の識別情報「GA」「GB」を探索する。次に、取得部402は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」と、探索した「GB」に対応付けられたグループ鍵GkB「3A92EB8FC51F902」を取得する。
取得されたグループ鍵Gkは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、生成部403は、第1の分散鍵と第2の分散鍵を合成することができる。
この場合、取得部402は、複数のグループGの各グループGのデータd群を記憶するデータベース101から、特定のグループG群の識別情報に関連付けられた特定のグループG群の各グループGに固有な第2の分散鍵を取得する。
取得部402は、具体的には、例えば、格納要求されたディレクトリDandから、特定ファイルFandを取得する。次に、取得部402は、特定ファイルFandから、ディレクトリ鍵Dkand1「23FB5A20EC989F1」と、ディレクトリ鍵Dkand2「2A89E9FC10F532B」を取得する。
この場合、生成部403は、第1の分散鍵と取得部402によって取得された第2の分散鍵を合成することにより暗号鍵を生成する。生成部403は、具体的には、例えば、グループ鍵GkA「FE9F1A9302B582C」を用いて、ディレクトリ鍵Dkand1「23FB5A20EC989F1」を復号する。また、生成部403は、グループ鍵GkB「3A92EB8FC51F902」を用いて、ディレクトリ鍵Dkand2「2A89E9FC10F532B」を復号する。次に、生成部403は、復号により、データ鍵dkand1「F921E0A2938F5CB」とデータ鍵dkand2「989E2BCF32A10F5」の組を生成する。
この場合、暗号化部405は、生成部403によって生成された暗号鍵でデータdを暗号化する。データ鍵dkand1とデータ鍵dkand2との組を用いて、データdを暗号化する。暗号化部405は、具体的には、例えば、データdをデータ鍵dkand1を用いて暗号化し、暗号化したデータdをデータ鍵dkand2を用いてさらに暗号化する。また、暗号化部405は、具体的には、例えば、データdをデータ鍵dkand2を用いて暗号化し、暗号化したデータdをデータ鍵dkand1を用いてさらに暗号化してもよい。また、暗号化部405は、データ鍵dkand1と、データ鍵dkand2と、を合成した合成鍵を用いて、データdを暗号化してもよい。これにより、送信部404は、暗号化データCdを送信することができる。
この場合、送信部404は、暗号化部405によって暗号化された暗号化データCdをデータベース101内の第2の分散鍵の格納場所に送信する。送信部404は、具体的には、例えば、データベース101が格納要求されたパスのディレクトリDに暗号化データCdを格納するように、データベース101に格納要求されたパスを指定して暗号化データCdを送信する。これにより、データベース101は、格納要求されたパスのディレクトリDに、暗号化データCdを格納することができる。
<ディレクトリDから暗号化データCdを取得して復号する機能>
次に、情報処理装置100が有するディレクトリDから暗号化データCdを取得して復号する機能について説明する。ディレクトリDから暗号化データCdを取得して復号する機能は、受付部401と、取得部402と、生成部403と、送信部404と、暗号化部405と、により実現される。
・或るグループGに所属する情報処理装置100から利用可能なディレクトリDからデータdを取得する場合
ここで、或るグループGに所属する情報処理装置100から利用可能なディレクトリDからデータdを取得する場合を例に挙げる。この場合の取得例は図15を用いて後述する。
この場合、受付部401は、複数のグループGの中のいずれかのグループGに所属する要求元装置から、いずれかのグループGの識別情報を含むいずれかのグループGに関するデータdの取得要求を受け付ける。
受付部401は、具体的には、例えば、グループGAに所属する要求元装置から、グループGAに所属する情報処理装置100が利用するディレクトリDAへのデータdの取得要求を受け付ける。取得要求には、例えば、取得先のディレクトリDAを利用するグループGを示す識別情報「GA」と、取得先のディレクトリDAを示す取得先情報が含まれる。取得先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた取得要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの場所を指定することができる。
この場合、取得部402および生成部403の機能は、上述した或るグループGに所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合の取得部402および生成部403の機能と同様のため、ここでは説明を省略する。
この場合、暗号化部405は、生成部403によって生成された暗号鍵で暗号化データCdを復号する。暗号化部405は、具体的には、例えば、生成部403によって生成されたデータ鍵dkAを用いて、暗号化データCdを復号する。復号されたデータdは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、送信部404は、復号されたデータdを要求元装置に送信することができる。
この場合、送信部404は、暗号化部405によって復号されたデータdを要求元装置に送信する。これにより、要求元装置は、復号されたデータdを利用することができる。
・複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDからデータdを取得する場合
ここで、作成されるディレクトリDが、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDからデータdを取得する場合を例に挙げる。この場合の取得例は図16を用いて後述する。
この場合、受付部401は、複数のグループGの中の特定のグループG群のいずれかのグループGに所属する要求元装置から、いずれかのグループGの識別情報を含む特定のグループG群に関するデータdの取得要求を受け付ける。
受付部401は、具体的には、例えば、グループGAとグループGBとに所属する要求元装置から、グループGAとグループGBとのいずれかに所属する情報処理装置100が利用するディレクトリDorの取得要求を受け付ける。
取得要求には、例えば、取得先のディレクトリDorを利用するグループGを示す識別情報「GA」「GB」と、ディレクトリDorを利用する情報処理装置100がグループGAとグループGBとのいずれかであることを示す条件情報「or」と、が含まれる。また、取得要求には、取得先のディレクトリDorを示す取得先情報が含まれる。取得先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた取得要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの場所を指定することができる。
この場合、取得部402および生成部403の機能は、上述した複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDにデータdを格納する場合の取得部402および生成部403の機能と同様のため説明を省略する。
この場合、暗号化部405は、生成部403によって生成された暗号鍵で暗号化データCdを復号する。暗号化部405は、具体的には、例えば、生成部403によって生成されたデータ鍵dkAを用いて、暗号化データCdを復号する。復号されたデータdは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、送信部404は、復号されたデータdを要求元装置に送信することができる。
この場合、送信部404は、暗号化部405によって復号されたデータdを要求元装置に送信する。これにより、要求元装置は、復号されたデータdを利用することができる。
・複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDからデータdを取得する場合
ここで、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDにデータdからデータdを取得する場合を例に挙げる。この場合の取得例は図17を用いて後述する。
この場合、受付部401は、複数のグループGの中の特定のグループG群のいずれのグループGにも所属する要求元装置から、特定のグループG群の識別情報を含む特定のグループG群に関するデータdの取得要求を受け付ける。
受付部401は、具体的には、例えば、グループGAにもグループGBにも所属する要求元装置から、グループGAとグループGBとのいずれにも所属する情報処理装置100が利用するディレクトリDandへのデータdの取得要求を受け付ける。
取得要求には、例えば、取得先のディレクトリDandを利用するグループGを示す識別情報「GA」「GB」と、ディレクトリDandを利用する情報処理装置100がグループGAとグループGBとのいずれにも所属することを示す条件情報「and」と、が含まれる。また、取得要求には、取得先のディレクトリDandを示す取得先情報が含まれる。取得先情報とは、例えば、データベース101内の或る階層を示すパスである。
受け付けられた取得要求は、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、取得部402は、第1の分散鍵の取得のトリガを得ることができる。また、送信部404は、ディレクトリDの場所を指定することができる。
この場合、取得部402および生成部403は、上述した複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合の取得部402および生成部403の機能と同様のため説明を省略する。
この場合、暗号化部405は、生成部403によって生成された暗号鍵で暗号化データCdを復号する。暗号化部405は、具体的には、例えば、生成部403によって生成されたデータ鍵dkAの組を用いて、暗号化データCdを復号する。復号されたデータdは、例えば、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶される。これにより、送信部404は、復号されたデータdを要求元装置に送信することができる。
この場合、送信部404は、暗号化部405によって復号されたデータdを要求元装置に送信する。これにより、要求元装置は、復号されたデータdを利用することができる。
(ディレクトリDの作成例)
次に、図5〜7を用いて、情報処理装置100によるディレクトリDの作成例について説明する。まず、図5を用いて、或るグループGに所属する情報処理装置100から利用可能なディレクトリDを作成する場合の作成例1について説明する。
図5は、或るグループGに所属する情報処理装置100から利用可能なディレクトリDを作成する場合の作成例1を示す説明図である。図5の例では、グループGAに所属する情報処理装置100A1が、グループGAに所属する情報処理装置100が利用するディレクトリDAを作成する。
図5に示すように、(21)情報処理装置100A1は、ディレクトリDAの作成要求を受け付けると、作成要求されたディレクトリDAを作成するように、データベース101に作成依頼を送信する。これにより、データベース101は、ディレクトリDAを作成する。
(22)次に、情報処理装置100A1は、ディレクトリDAに格納するデータdの暗号化と復号とに使用されるデータ鍵dkA「F921E0A2938F5CB」を生成する。
(23)そして、情報処理装置100A1は、グループ鍵テーブル300のグループ名項目から、ディレクトリDAを利用するグループGAの名称「GA」を探索する。情報処理装置100A1は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
次に、情報処理装置100A1は、データ鍵dkA「F921E0A2938F5CB」を、グループ鍵GkA「FE9F1A9302B582C」を用いて暗号化する。そして、情報処理装置100A1は、ディレクトリ鍵DkAになる暗号化されたデータ鍵dkA「23FB5A20EC989F1」を生成する。
(24)次に、情報処理装置100A1は、生成したディレクトリ鍵DkAとディレクトリDAを利用するグループGの名称「GA」とを対応付けた特定ファイルFAをディレクトリDAに格納するように、データベース101に格納依頼を送信する。これにより、データベース101は、ディレクトリDAに特定ファイルFAを格納する。
これにより、グループGAに所属する情報処理装置100は、特定ファイルFA内のディレクトリ鍵DkAと、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkAを生成することができる。そのため、グループGAに所属する情報処理装置100は、データ鍵dkAを用いて、ディレクトリDAにデータdを暗号化して格納し、ディレクトリDAから暗号化データCdを取得して復号することができる。
一方、グループGAに所属しない情報処理装置100は、特定ファイルFA内のディレクトリ鍵DkAを取得しても、グループGAに固有なグループ鍵GkAを有していないため、データ鍵dkAを合成することができない。そのため、グループGAに所属しない情報処理装置100は、データ鍵dkAがないため、ディレクトリDAに格納するデータdを暗号化することができず、ディレクトリDAから暗号化データCdを取得して復号することができない。
結果として、ディレクトリDAは、グループGAに所属する情報処理装置100から利用可能、かつ、グループGAに所属しない情報処理装置100から利用不可能なディレクトリDになる。また、ディレクトリDAには、ディレクトリ鍵DkAが格納されるが、データ鍵dkAは格納されていない。そのため、データ鍵dkAの漏洩を防止することができ、セキュリティを担保することができる。
次に、図6を用いて、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDを作成する場合の作成例2について説明する。
図6は、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDを作成する場合の作成例2を示す説明図である。図6の例では、グループGAにもグループGBにも所属する情報処理装置100ABが、グループGAに所属する情報処理装置100からもグループGBに所属する情報処理装置100からも利用するディレクトリDorを作成する。
図6に示すように、(31)情報処理装置100ABは、ディレクトリDorの作成要求を受け付けると、作成要求されたディレクトリDorを作成するように、データベース101に作成依頼を送信する。これにより、データベース101は、ディレクトリDorを作成する。
(32)次に、情報処理装置100ABは、ディレクトリDorに格納するデータdの暗号化と復号とに使用されるデータ鍵dkor「F921E0A2938F5CB」を生成する。
(33)そして、情報処理装置100ABは、グループ鍵テーブル300のグループ名項目から、ディレクトリDorを利用する一方のグループGAの名称「GA」を探索する。情報処理装置100ABは、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
次に、情報処理装置100ABは、データ鍵dkor「F921E0A2938F5CB」を、グループ鍵GkA「FE9F1A9302B582C」を用いて暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkor1になる暗号化されたデータ鍵dkor「23FB5A20EC989F1」を生成する。
(34)また、情報処理装置100ABは、グループ鍵テーブル300のグループ名項目から、ディレクトリDorを利用する他方のグループGBの名称「GB」を探索する。情報処理装置100ABは、探索した「GB」に対応付けられたグループ鍵GkB「3A92EB8FC51F902」を取得する。
次に、情報処理装置100ABは、データ鍵dkor「F921E0A2938F5CB」を、グループ鍵GkB「3A92EB8FC51F902」を用いて暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkor2になる暗号化されたデータ鍵dkor「99AA56A3E5DD3A2」を生成する。
このように、情報処理装置100ABは、(33)と(34)とにおいて、ディレクトリDorを共用するグループGAとグループGBとの各々に対応するグループ鍵Gkを用いて、同一のデータ鍵dkorを暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkor1とディレクトリ鍵Dkor2とを生成する。
(35)次に、情報処理装置100ABは、特定ファイルForを生成する。特定ファイルForは、ディレクトリ鍵Dkor1とディレクトリDorを利用するグループGの名称「GA」とを対応付けた情報を含む。また、特定ファイルForは、ディレクトリ鍵Dkor2とディレクトリDorを利用するグループGの名称「GB」とを対応付けた情報を含む。また、特定ファイルFは、ディレクトリDorを利用する情報処理装置100が、グループGAとグループGBとのいずれかに所属する情報処理装置100であることを示す条件情報「or」を含む。
そして、情報処理装置100ABは、生成した特定ファイルForをディレクトリDorに格納するように、データベース101に格納依頼を送信する。これにより、データベース101は、ディレクトリDorに特定ファイルForを格納する。
これにより、グループGAに所属する情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor1と、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkorを生成することができる。また、グループGBに所属する情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor2と、グループGBに固有なグループ鍵GkBと、を合成して、データ鍵dkorを生成することができる。
そのため、グループGAまたはグループGBに所属する情報処理装置100は、データ鍵dkorを用いて、ディレクトリDorにデータdを暗号化して格納し、ディレクトリDorから暗号化データCdを取得して復号することができる。
一方、グループGAにもグループGBにも所属しない情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor1やディレクトリ鍵Dkor2を取得しても、データ鍵dkorを合成することができない。そのため、グループGAにもグループGBにも所属しない情報処理装置100は、データ鍵dkorがないため、ディレクトリDorに格納するデータdを暗号化することができず、ディレクトリDorから暗号化データCdを取得して復号することができない。
結果として、ディレクトリDorは、グループGAまたはグループGBに所属する情報処理装置100から利用可能、かつ、グループGAにもグループGBにも所属しない情報処理装置100から利用不可能なディレクトリDになる。また、ディレクトリDorには、ディレクトリ鍵Dkor1やディレクトリ鍵Dkor2が格納されるが、データ鍵dkorは格納されていない。そのため、データ鍵dkorの漏洩を防止することができ、セキュリティを担保することができる。
次に、図7を用いて、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDを作成する場合の作成例3について説明する。
図7は、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDを作成する場合の作成例3を示す説明図である。図7の例では、グループGAにもグループGBにも所属する情報処理装置100ABが、グループGAにもグループGBにも所属する情報処理装置100から利用するディレクトリDandを作成する。
図7に示すように、(41)情報処理装置100ABは、ディレクトリDandの作成要求を受け付けると、作成要求されたディレクトリDandを作成するように、データベース101に作成依頼を送信する。これにより、データベース101は、ディレクトリDandを作成する。
(42)次に、情報処理装置100ABは、ディレクトリDandに格納するデータdの暗号化と復号とに使用されるデータ鍵dkand1「F921E0A2938F5CB」とデータ鍵dkand2「989E2BCF32A10F5」の組を生成する。
(43)そして、情報処理装置100ABは、グループ鍵テーブル300のグループ名項目から、ディレクトリDandを利用するグループG群の一方のグループGAの名称「GA」を探索する。次に、情報処理装置100ABは、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
そして、情報処理装置100ABは、データ鍵dkand1「F921E0A2938F5CB」を、グループ鍵GkA「FE9F1A9302B582C」を用いて暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkand1になる暗号化されたデータ鍵dkand1「23FB5A20EC989F1」を生成する。
(44)また、情報処理装置100ABは、グループ鍵テーブル300のグループ名項目から、ディレクトリDandを利用するグループG群の他方のグループGBの名称「GB」を探索する。次に、情報処理装置100ABは、探索した「GB」に対応付けられたグループ鍵GkB「3A92EB8FC51F902」を取得する。
そして、情報処理装置100ABは、データ鍵dkand2「989E2BCF32A10F5」を、グループ鍵GkB「3A92EB8FC51F902」を用いて暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkand2になる暗号化されたデータ鍵dkand2「2A89E9FC10F532B」を生成する。
このように、情報処理装置100ABは、(43)と(44)とにおいて、ディレクトリDandを利用するグループG群の各々に対応するグループ鍵Gkを用いて、データ鍵dkand1とデータ鍵dkand2とを暗号化する。そして、情報処理装置100ABは、ディレクトリ鍵Dkand1とディレクトリ鍵Dkand2とを生成する。
(45)次に、情報処理装置100ABは、特定ファイルFandを生成する。特定ファイルFandは、ディレクトリ鍵Dkand1とディレクトリDandを利用するグループG群の一方の名称「GA」とを対応付けた情報を含む。また、特定ファイルFは、ディレクトリ鍵Dkand2とディレクトリDandを利用するグループG群の他方の名称「GB」とを対応付けた情報を含む。また、特定ファイルFは、ディレクトリDandを利用する情報処理装置100が、グループGAにもグループGBにも所属する情報処理装置100であることを示す条件情報「and」を含む。
(46)そして、情報処理装置100ABは、生成した特定ファイルFをディレクトリDandに格納するように、データベース101に格納依頼を送信する。これにより、データベース101は、ディレクトリDandに特定ファイルFandを格納する。
これにより、グループGAにもグループGBにも所属する情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand1と、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkand1を生成することができる。また、グループGAにもグループGBにも所属する情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand2と、グループGBに固有なグループ鍵GkBと、を合成して、データ鍵dkand2を生成することができる。
そのため、グループGAにもグループGBにも所属する情報処理装置100は、データ鍵dkand1とデータ鍵dkand2とを用いて、ディレクトリDandにデータdを暗号化して格納することができる。また、グループGAにもグループGBにも所属する情報処理装置100は、データ鍵dkand1とデータ鍵dkand2とを用いて、ディレクトリDandから暗号化データCdを取得して復号することができる。
一方、グループGAに所属しない情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand1を取得しても、データ鍵dkand1を合成することができない。また、グループGBに所属しない情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand2を取得しても、データ鍵dkand2を合成することができない。
そのため、グループGAとグループGBとのいずれかに所属しない情報処理装置100は、データ鍵dkand1とデータ鍵dkand2との少なくとも一方がないため、ディレクトリDandに格納するデータdを暗号化することができない。同様に、グループGAとグループGBとのいずれかに所属しない情報処理装置100は、ディレクトリDandから暗号化データCdを取得しても、復号することができない。
結果として、ディレクトリDandは、グループGAにもグループGBにも所属する情報処理装置100から利用可能、かつ、グループGAとグループGBとのいずれかに所属しない情報処理装置100から利用不可能なディレクトリDになる。また、ディレクトリDandには、ディレクトリ鍵Dkand1やディレクトリ鍵Dkand2が格納されるが、データ鍵dkand1やデータ鍵dkand2は格納されていない。そのため、データ鍵dkand1とデータ鍵dkand2との漏洩を防止することができ、セキュリティを担保することができる。
情報処理装置100は、作成したディレクトリDの下位に、さらに新たなディレクトリDを作成してもよい。ここで、情報処理装置100は、新たな特定ファイルFを作成して新たなディレクトリDに格納してもよい。また、情報処理装置100は、新たなディレクトリDでは、上位のディレクトリDにある特定ファイルFを流用するとして、新たなディレクトリDには特定ファイルFを格納しなくてもよい。
(ディレクトリ作成処理)
次に、図8を用いて、情報処理装置100によるディレクトリ作成処理の詳細な処理手順について説明する。ディレクトリ作成処理は、図5〜図7に示した作成例1〜作成例3における情報処理装置100の処理である。
図8は、情報処理装置100によるディレクトリ作成処理の詳細な処理手順を示すフローチャートである。図8に示すように、まず、情報処理装置100は、作成要求が入力されたか否かを判定する(ステップS801)。ここで、作成要求が入力されていない場合(ステップS801:No)、情報処理装置100は、ステップS801に戻り、作成要求の入力を待つ。
一方、作成要求が入力された場合(ステップS801:Yes)、情報処理装置100は、作成要求されたパスにディレクトリDを作成するように作成依頼をデータベース101に送信する(ステップS802)。
次に、情報処理装置100は、特定ファイルFを作成するか否かを判定する(ステップS803)。ここで、特定ファイルFを作成しない場合(ステップS803:No)、情報処理装置100は、ディレクトリ作成処理を終了する。
一方、特定ファイルFを作成する場合(ステップS803:Yes)、情報処理装置100は、図9に示す特定ファイル作成処理を実行する(ステップS804)。次に、情報処理装置100は、特定ファイル作成処理により作成された特定ファイルFを、ステップS802の作成依頼により作成されたディレクトリDに格納するように格納依頼をデータベース101に送信する(ステップS805)。
そして、情報処理装置100は、ディレクトリ作成処理を終了する。これにより、情報処理装置100は、利用可能なグループGが特定されたディレクトリDを作成することができる。
(特定ファイル作成処理)
次に、図9を用いて、特定ファイル作成処理の詳細な処理手順について説明する。特定ファイル作成処理は、図8のステップS804に示した処理である。
図9は、特定ファイル作成処理の詳細な処理手順を示すフローチャートである。図9に示すように、情報処理装置100は、作成要求の中から、ディレクトリDを利用するグループGを示す識別情報を取得し、グループ鍵テーブル300の中から、識別情報が示すグループGに対応するグループ鍵Gkを取得する(ステップS901)。
次に、情報処理装置100は、データ鍵dkを生成する(ステップS902)。そして、情報処理装置100は、識別情報に従って、グループ鍵Gkを用いてデータ鍵dkを暗号化する(ステップS903)。
次に、情報処理装置100は、暗号化により得られたディレクトリ鍵Dkと識別情報とを対応付けた情報を含む特定ファイルFを作成する(ステップS904)。そして、情報処理装置100は、特定ファイル作成処理を終了する。これにより、情報処理装置100は、特定ファイルFを、ディレクトリDに格納することができる。
(ディレクトリDへのデータdの格納例)
次に、図10〜12を用いて、情報処理装置100によるディレクトリDへのデータdの格納例について説明する。まず、図10を用いて、或るグループGに所属する情報処理装置100から利用可能なディレクトリDへとデータdを格納する場合の格納例1について説明する。
図10は、或るグループGに所属する情報処理装置100から利用可能なディレクトリDへとデータdを格納する場合の格納例1を示す説明図である。図10の例では、グループGAに所属する情報処理装置100A1が、グループGAに所属する情報処理装置100が利用するディレクトリDAへとデータdAを格納する。
図10に示すように、(51)情報処理装置100A1は、データdAの格納要求を受け付ける。格納要求には、データdAを格納するディレクトリDAを示すパスが含まれる。
(52)次に、情報処理装置100A1は、格納要求内のパスが示すディレクトリDAから、特定ファイルFAを取得する。そして、情報処理装置100A1は、特定ファイルFAから、ディレクトリDAを利用するグループGAを示す名称「GA」と、識別情報「GA」に対応付けられたディレクトリ鍵DkA「23FB5A20EC989F1」と、を取得する。
(53)次に、情報処理装置100A1は、グループ鍵テーブル300のグループ名項目から、ディレクトリDAを利用するグループGAの名称「GA」を探索する。情報処理装置100A1は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
次に、情報処理装置100A1は、ディレクトリ鍵DkA「23FB5A20EC989F1」を、グループ鍵GkA「FE9F1A9302B582C」を用いて復号する。そして、情報処理装置100A1は、復号により、データ鍵dkA「F921E0A2938F5CB」を生成する。
(54)次に、情報処理装置100A1は、生成したデータ鍵dkAを用いて、格納要求されたデータdAを暗号化し、暗号化データCdAを生成する。
(55)そして、情報処理装置100A1は、暗号化データCdAをディレクトリDAに格納するように、データベース101に格納依頼を送信する。これにより、データベース101は、ディレクトリDAに暗号化データCdAを格納する。
これにより、グループGAに所属する情報処理装置100は、特定ファイルFA内のディレクトリ鍵DkAと、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkAを生成することができる。そのため、グループGAに所属する情報処理装置100は、データ鍵dkAを用いて、ディレクトリDAにデータdを暗号化して格納することができる。
一方、グループGAに所属しない情報処理装置100は、特定ファイルFA内のディレクトリ鍵DkAを取得しても、グループGAに固有なグループ鍵GkAを有していないため、データ鍵dkAを合成することができない。そのため、グループGAに所属しない情報処理装置100は、データ鍵dkAがないため、ディレクトリDAに格納するデータdを暗号化することができない。
次に、図11を用いて、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDへとデータdを格納する場合の格納例2について説明する。
図11は、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDへとデータdを格納する場合の格納例2を示す説明図である。図11の例では、グループGAに所属する情報処理装置100A1が、グループGAに所属する情報処理装置100からもグループGBに所属する情報処理装置100からも利用するディレクトリDorへとデータdorを格納する。
図11に示すように、(61)情報処理装置100A1は、データdorの格納要求を受け付ける。格納要求には、データdorを格納するディレクトリDorを示すパスが含まれる。
(62)次に、情報処理装置100A1は、格納要求内のパスが示すディレクトリDorから、特定ファイルForを取得する。そして、情報処理装置100A1は、特定ファイルForから、ディレクトリDorを利用するグループGAを示す名称「GA」と、識別情報「GA」に対応付けられたディレクトリ鍵Dkor1「23FB5A20EC989F1」を取得する。
また、情報処理装置100A1は、特定ファイルForから、ディレクトリDorを利用するグループGBを示す名称「GB」と、識別情報「GB」に対応付けられたディレクトリ鍵Dkor2「99AA56A3E5DD3A2」を取得する。また、情報処理装置100A1は、特定ファイルForから、ディレクトリDorを利用する情報処理装置100がグループGAとグループGBとのいずれかに所属する情報処理装置100であることを示す条件情報「or」を取得する。
(63)次に、情報処理装置100A1は、条件情報「or」を用いて、ディレクトリDorを利用する情報処理装置100がグループGAとグループGBとのいずれかに所属すればよいと判定する。換言すれば、情報処理装置100A1は、グループGAとグループGBとのいずれかに対応するグループ鍵Gkがあれば、データ鍵dkorを生成することができ、データdorを暗号化することができると判定する。そして、情報処理装置100A1は、グループGAとグループGBとのいずれかに対応するグループ鍵Gkを取得する。
情報処理装置100A1は、例えば、グループ鍵テーブル300のグループ名項目から、ディレクトリDorを利用する一方のグループGAの名称「GA」を探索する。情報処理装置100A1は、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
次に、情報処理装置100A1は、グループGAに対応するディレクトリ鍵Dkor1「23FB5A20EC989F1」を、グループ鍵GkA「FE9F1A9302B582C」を用いて復号する。そして、情報処理装置100A1は、復号により、データ鍵dkor「F921E0A2938F5CB」を生成する。
(64)次に、情報処理装置100A1は、生成したデータ鍵dkorを用いて、格納要求されたデータdorを暗号化し、暗号化データCdorを生成する。
(65)そして、情報処理装置100A1は、暗号化データCdorをディレクトリDorに格納するように、データベース101に格納依頼を送信する。これにより、データベース101は、ディレクトリDorに暗号化データCdorを格納する。
これにより、グループGAに所属する情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor1と、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkorを生成することができる。また、グループGBに所属する情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor2と、グループGBに固有なグループ鍵GkBと、を合成して、データ鍵dkorを生成することができる。そのため、グループGAまたはグループGBに所属する情報処理装置100は、データ鍵dkorを用いて、ディレクトリDorにデータdを暗号化して格納することができる。
一方、グループGAにもグループGBにも所属しない情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor1やディレクトリ鍵Dkor2を取得しても、データ鍵dkorを合成することができない。そのため、グループGAにもグループGBにも所属しない情報処理装置100は、データ鍵dkorがないため、ディレクトリDorに格納するデータdを暗号化することができない。
次に、図12を用いて、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合の格納例3について説明する。
図12は、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDにデータdを格納する場合の格納例3を示す説明図である。図12の例では、グループGAにもグループGBにも所属する情報処理装置100ABが、グループGAにもグループGBにも所属する情報処理装置100から利用するディレクトリDandへとデータdandを格納する。
図12に示すように、(71)情報処理装置100ABは、データdandの格納要求を受け付ける。格納要求には、データdandを格納するディレクトリDandを示すパスが含まれる。
(72)次に、情報処理装置100ABは、格納要求内のパスが示すディレクトリDandから、特定ファイルFandを取得する。そして、情報処理装置100ABは、特定ファイルFandから、ディレクトリDandを利用するグループGAを示す名称「GA」と、識別情報「GA」に対応付けられたディレクトリ鍵Dkand1「23FB5A20EC989F1」を取得する。
また、情報処理装置100ABは、特定ファイルFandから、ディレクトリDandを利用するグループGBを示す名称「GB」と、識別情報「GB」に対応付けられたディレクトリ鍵Dkand2「2A89E9FC10F532B」を取得する。また、情報処理装置100ABは、特定ファイルFandから、ディレクトリDandを利用する情報処理装置100がグループGAにもグループGBにも所属する情報処理装置100であることを示す条件情報「and」を取得する。
(73)次に、情報処理装置100ABは、条件情報「and」を用いて、ディレクトリDandを利用する情報処理装置100がグループGAにもグループGBにも所属すればよいと判定する。換言すれば、情報処理装置100ABは、グループGAとグループGBとの各々に対応するグループ鍵Gkがあれば、データ鍵dkand1とデータ鍵dkand2の組を生成することができ、データdandを暗号化することができると判定する。そして、情報処理装置100ABは、グループGAとグループGBとの各々に対応するグループ鍵Gkを取得する。
次に、情報処理装置100ABは、グループ鍵テーブル300のグループ名項目から、ディレクトリDandを利用するグループG群の一方のグループGAの名称「GA」を探索する。次に、情報処理装置100ABは、探索した「GA」に対応付けられたグループ鍵GkA「FE9F1A9302B582C」を取得する。
そして、情報処理装置100ABは、ディレクトリ鍵Dkand1「23FB5A20EC989F1」を、グループ鍵GkA「FE9F1A9302B582C」を用いて復号する。そして、情報処理装置100ABは、復号により、データ鍵dkand1「F921E0A2938F5CB」を生成する。
また、情報処理装置100ABは、グループ鍵テーブル300のグループ名項目から、ディレクトリDandを利用するグループG群の他方のグループGBの名称「GB」を探索する。次に、情報処理装置100ABは、探索した「GB」に対応付けられたグループ鍵GkB「3A92EB8FC51F902」を取得する。
そして、情報処理装置100ABは、ディレクトリ鍵Dkand2「2A89E9FC10F532B」を、グループ鍵GkB「3A92EB8FC51F902」を用いて復号する。そして、情報処理装置100ABは、復号により、データ鍵dkand2「989E2BCF32A10F5」を生成する。
(74)次に、情報処理装置100ABは、データ鍵dkand1「F921E0A2938F5CB」とデータ鍵dkand2「989E2BCF32A10F5」の組を用いて、データdandを暗号化し、暗号化データCdandを生成する。情報処理装置100ABは、例えば、データdandをデータ鍵dkand1「F921E0A2938F5CB」を用いて暗号化し、暗号化されたデータdandをデータ鍵dkand2「989E2BCF32A10F5」を用いてさらに暗号化する。
(75)そして、情報処理装置100ABは、暗号化データCdandをディレクトリDandに格納するように、データベース101に格納依頼を送信する。これにより、データベース101は、ディレクトリDandに暗号化データCdandを格納する。
これにより、グループGAにもグループGBにも所属する情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand1と、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkand1を生成することができる。また、グループGAにもグループGBにも所属する情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand2と、グループGBに固有なグループ鍵GkBと、を合成して、データ鍵dkand2を生成することができる。
そのため、グループGAにもグループGBにも所属する情報処理装置100は、データ鍵dkand1とデータ鍵dkand2との組を用いて、ディレクトリDandにデータdを暗号化して格納することができる。
一方、グループGAに所属しない情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand1を取得しても、データ鍵dkand1を合成することができない。また、グループGBに所属しない情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand2を取得しても、データ鍵dkand2を合成することができない。
そのため、グループGAとグループGBとのいずれかに所属しない情報処理装置100は、データ鍵dkand1とデータ鍵dkand2との少なくとも一方がないため、ディレクトリDandに格納するデータdを暗号化することができない。
情報処理装置100は、格納要求内のパスが示すディレクトリDに特定ファイルFがない場合、上位のディレクトリDにある特定ファイルFを流用してもよい。この場合、情報処理装置100は、上位のディレクトリDにある特定ファイルF内のディレクトリ鍵Dkを用いてデータ鍵dkを生成し、データdを暗号化することになる。
情報処理装置100は、データdを暗号化すると共に、データdに付与された識別名を暗号化してもよい。データdに付与された識別名とは、いわゆるファイル名である。これにより、情報処理装置100は、セキュリティを担保することができる。
(データ格納処理)
次に、図13を用いて、情報処理装置100によるデータ格納処理の詳細な処理手順について説明する。データ格納処理は、図10〜図12に示した格納例1〜格納例3における情報処理装置100の処理である。
図13は、情報処理装置100によるデータ格納処理の詳細な処理手順を示すフローチャートである。図13に示すように、まず、情報処理装置100は、格納要求が入力されたか否かを判定する(ステップS1301)。ここで、格納要求が入力されていない場合(ステップS1301:No)、情報処理装置100は、ステップS1301に戻り、格納要求の入力を待つ。
一方、格納要求が入力された場合(ステップS1301:Yes)、情報処理装置100は、格納要求されたパスにあるディレクトリDから特定ファイルFを取得する(ステップS1302)。次に、情報処理装置100は、特定ファイルFが取得できたか否かを判定する(ステップS1303)。
ここで、特定ファイルFが取得できなかった場合(ステップS1303:No)、情報処理装置100は、上位ディレクトリDがあるか否かを判定する(ステップS1304)。ここで、上位ディレクトリDがある場合(ステップS1304:Yes)、情報処理装置100は、ステップS1302に戻る。一方、上位ディレクトリDがない場合(ステップS1304:No)、情報処理装置100は、ステップS1308に移行する。
一方、ステップS1303において、特定ファイルFが取得できた場合(ステップS1303:Yes)、情報処理装置100は、図14に示すデータ鍵合成処理を実行する(ステップS1305)。
次に、情報処理装置100は、データ鍵合成処理により、データ鍵dkが合成できたか否かを判定する(ステップS1306)。ここで、データ鍵dkが合成できなかった場合(ステップS1306:No)、情報処理装置100は、ステップS1308に移行する。
一方、データ鍵dkが合成できた場合(ステップS1306:Yes)、情報処理装置100は、合成したデータ鍵dkを用いて、格納要求されたデータdを暗号化する(ステップS1307)。次に、情報処理装置100は、ステップS1308に移行する。
ステップS1308において、情報処理装置100は、データdを格納する格納依頼をデータベース101に送信する(ステップS1308)。次に、情報処理装置100は、データ格納処理を終了する。これにより、データベース101は、ディレクトリDに暗号化データCdを格納することができる。
(データ鍵合成処理)
次に、図14を用いて、データ鍵合成処理の詳細な処理手順について説明する。データ鍵合成処理は、図13のステップS1305に示した処理である。
図14は、データ鍵合成処理の詳細な処理手順を示すフローチャートである。図14に示すように、まず、情報処理装置100は、特定ファイルF内の条件情報と、グループ鍵テーブル300とを比較する(ステップS1401)。
次に、情報処理装置100は、条件情報が示すグループGに対応するグループ鍵Gkが、グループ鍵テーブル300に格納されているか否かを判定する(ステップS1402)。ここで、格納されていない場合(ステップS1402:No)、情報処理装置100は、データ鍵合成処理を終了する。
一方、格納されている場合(ステップS1402:Yes)、情報処理装置100は、条件情報に従ってグループ鍵Gkを取得する(ステップS1403)。次に、情報処理装置100は、取得したグループ鍵Gkを用いて、特定ファイルF内のディレクトリ鍵Dkを復号し、復号によりデータ鍵dkを生成する(ステップS1404)。
そして、情報処理装置100は、データ鍵合成処理を終了する。これにより、情報処理装置100は、データ鍵dkを用いて、データdを暗号化することができる。
(ディレクトリDのデータdの取得例)
次に、図15〜17を用いて、情報処理装置100によるディレクトリDのデータdの取得例について説明する。まず、図15を用いて、或るグループGに所属する情報処理装置100から利用可能なディレクトリDのデータdを取得する場合の取得例1について説明する。
図15は、或るグループGに所属する情報処理装置100から利用可能なディレクトリDのデータdを取得する場合の取得例1を示す説明図である。図15の例では、グループGAに所属する情報処理装置100A1が、グループGAに所属する情報処理装置100が利用するディレクトリDAのデータdAを取得する。
図15に示すように、(81)情報処理装置100A1は、データdAの取得要求を受け付ける。取得要求には、データdAを取得するディレクトリDAを示すパスが含まれる。次に、情報処理装置100A1は、取得要求内のパスが示すディレクトリDAから、暗号化されたデータdAである暗号化データCdAを取得する。
(82)の処理は、図10の(52)の処理と同様のため詳細な説明を省略するが、情報処理装置100A1は、取得要求内のパスが示すディレクトリDAの特定ファイルFAから、ディレクトリ鍵DkA「23FB5A20EC989F1」を取得する。
(83)の処理は、図10の(53)の処理と同様のため詳細な説明を省略するが、情報処理装置100A1は、グループ鍵GkA「FE9F1A9302B582C」を取得する。次に、情報処理装置100は、グループ鍵GkAとディレクトリ鍵DkAとを用いて、データ鍵dkA「F921E0A2938F5CB」を生成する。
(84)そして、情報処理装置100A1は、生成したデータ鍵dkAを用いて、取得された暗号化データCdAを復号し、データdAを生成する。
これにより、グループGAに所属する情報処理装置100は、特定ファイルFA内のディレクトリ鍵DkAと、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkAを生成することができる。そのため、グループGAに所属する情報処理装置100は、データ鍵dkAを用いて、ディレクトリDAの暗号化データCdを復号することができる。
一方、グループGAに所属しない情報処理装置100は、特定ファイルFA内のディレクトリ鍵DkAを取得しても、グループGAに固有なグループ鍵GkAを有していないため、データ鍵dkAを合成することができない。そのため、グループGAに所属しない情報処理装置100は、データ鍵dkAがないため、ディレクトリDAの暗号化データCdを復号することができない。
次に、図16を用いて、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDのデータdを取得する場合の取得例2について説明する。
図16は、複数のグループGのいずれに所属する情報処理装置100からも利用可能なディレクトリDのデータdを取得する場合の取得例2を示す説明図である。図16の例では、グループGAに所属する情報処理装置100A1が、グループGAに所属する情報処理装置100からもグループGBに所属する情報処理装置100からも利用するディレクトリDorのデータdorを取得する。
図16に示すように、(91)情報処理装置100A1は、データdorの取得要求を受け付ける。取得要求には、データdorを取得するディレクトリDorを示すパスが含まれる。次に、情報処理装置100A1は、取得要求内のパスが示すディレクトリDorから、暗号化されたデータdorである暗号化データCdorを取得する。
(92)の処理は、図11の(62)の処理と同様のため詳細な説明を省略するが、情報処理装置100A1は、取得要求内のパスが示すディレクトリDorの特定ファイルForから、ディレクトリ鍵Dkor1「23FB5A20EC989F1」を取得する。また、情報処理装置100A1は、ディレクトリ鍵Dkor2「99AA56A3E5DD3A2」、条件情報「or」を取得する。
(93)の処理は、図11の(63)の処理と同様のため詳細な説明を省略するが、情報処理装置100A1は、条件情報「or」を用いてディレクトリDorを利用する情報処理装置100がグループGAとグループGBとのいずれかに所属すればよいと判定する。換言すれば、情報処理装置100A1は、グループGAとグループGBとのいずれかに対応するグループ鍵Gkがあれば、データ鍵dkorを生成することができ、暗号化データCdorを復号することができると判定する。
次に、情報処理装置100A1は、グループ鍵GkA「FE9F1A9302B582C」を取得する。そして、情報処理装置100A1は、グループ鍵GkAとディレクトリ鍵Dkor1と用いて、データ鍵dkor「F921E0A2938F5CB」を生成する。
(94)次に、情報処理装置100A1は、生成したデータ鍵dkorを用いて、取得された暗号化データCdorを復号し、データdorを生成する。
これにより、グループGAに所属する情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor1と、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkorを生成することができる。また、グループGBに所属する情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor2と、グループGBに固有なグループ鍵GkBと、を合成して、データ鍵dkorを生成することができる。そのため、グループGAまたはグループGBに所属する情報処理装置100は、データ鍵dkorを用いて、ディレクトリDorの暗号化データCdorを復号することができる。
一方、グループGAにもグループGBにも所属しない情報処理装置100は、特定ファイルFor内のディレクトリ鍵Dkor1やディレクトリ鍵Dkor2を取得しても、データ鍵dkorを合成することができない。そのため、グループGAにもグループGBにも所属しない情報処理装置100は、データ鍵dkorがないため、ディレクトリDorの暗号化データCdorを復号することができない。
次に、図17を用いて、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDのデータdを取得する場合の取得例3について説明する。
図17は、複数のグループGのいずれにも所属する情報処理装置100から利用可能なディレクトリDを取得する場合の取得例3を示す説明図である。図17の例では、グループGAにもグループGBにも所属する情報処理装置100ABが、グループGAにもグループGBにも所属する情報処理装置100から利用するディレクトリDandのデータdandを取得する。
図17に示すように、(101)情報処理装置100ABは、データdandの取得要求を受け付ける。取得要求には、データdandを取得するディレクトリDandを示すパスが含まれる。次に、情報処理装置100ABは、取得要求内のパスが示すディレクトリDandから、暗号化されたデータdandである暗号化データCdandを取得する。
(102)の処理は、図12の(72)の処理と同様のため詳細な説明を省略するが、情報処理装置100ABは、取得要求内のパスが示すディレクトリDandの特定ファイルFandを取得する。次に、情報処理装置100ABは、特定ファイルFから、グループGAを示す名称「GA」に対応付けられたディレクトリ鍵Dkand1「23FB5A20EC989F1」を取得する。また、情報処理装置100ABは、特定ファイルFandから、グループGBを示す名称「GB」に対応付けられたディレクトリ鍵Dkand2「2A89E9FC10F532B」を取得する。また、情報処理装置100ABは、特定ファイルFandから、条件情報「and」を取得する。
(103)の処理は、図12の(73)の処理と同様のため詳細な説明を省略するが、情報処理装置100ABは、条件情報「and」を用いて、ディレクトリDandを利用する情報処理装置100がグループGAにもグループGBにも所属すればよいと判定する。換言すれば、情報処理装置100ABは、グループGAとグループGBとの各々に対応するグループ鍵Gkがあれば、データ鍵dkand1とデータ鍵dkand2の組を生成することができ、暗号化データCdandを復号することができると判定する。
そして、情報処理装置100ABは、グループGAとグループGBとの各々に対応するグループ鍵GkA「FE9F1A9302B582C」とグループ鍵GkB「3A92EB8FC51F902」とを取得する。
そして、情報処理装置100ABは、ディレクトリ鍵Dkand1「23FB5A20EC989F1」を、グループ鍵GkA「FE9F1A9302B582C」を用いて復号し、データ鍵dkand1「F921E0A2938F5CB」を生成する。また、情報処理装置100ABは、ディレクトリ鍵Dkand2「2A89E9FC10F532B」を、グループ鍵GkB「3A92EB8FC51F902」を用いて復号し、データ鍵dkand2「989E2BCF32A10F5」を生成する。
(104)次に、情報処理装置100ABは、データ鍵dkand1「F921E0A2938F5CB」とデータ鍵dkand2「989E2BCF32A10F5」の組を用いて、暗号化データCdandを復号し、データdandを生成する。情報処理装置100ABは、例えば、暗号化データCdandをデータ鍵dkand1「F921E0A2938F5CB」を用いて復号し、復号された暗号化データCandをデータ鍵dkand2「989E2BCF32A10F5」を用いてさらに復号する。
これにより、グループGAにもグループGBにも所属する情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand1と、グループGAに固有なグループ鍵GkAと、を合成して、データ鍵dkand1を生成することができる。また、グループGAにもグループGBにも所属する情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand2と、グループGBに固有なグループ鍵GkBと、を合成して、データ鍵dkand2を生成することができる。
そのため、グループGAにもグループGBにも所属する情報処理装置100は、データ鍵dkand1とデータ鍵dkand2との組を用いて、ディレクトリDandの暗号化データCdandを復号することができる。
一方、グループGAに所属しない情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand1を取得しても、データ鍵dkand1を合成することができない。また、グループGBに所属しない情報処理装置100は、特定ファイルFand内のディレクトリ鍵Dkand2を取得しても、データ鍵dkand2を合成することができない。
そのため、グループGAとグループGBとのいずれかに所属しない情報処理装置100は、データ鍵dkand1とデータ鍵dkand2との少なくとも一方がないため、ディレクトリDandの暗号化データCdandを復号することができない。
情報処理装置100は、格納要求内のパスが示すディレクトリDに特定ファイルFがない場合、上位のディレクトリDにある特定ファイルFを流用してもよい。この場合、情報処理装置100は、上位のディレクトリDにある特定ファイルF内のディレクトリ鍵Dkを用いてデータ鍵dkを生成し、暗号化データCdを復号することになる。
情報処理装置100は、データdに付与された識別名が暗号化されている場合、データ鍵dkを用いて識別名を復号してもよい。これにより、情報処理装置100の利用者は、データdの識別名を把握することができる。
(データ取得処理)
次に、図18を用いて、情報処理装置100によるデータ取得処理の詳細な処理手順について説明する。データ取得処理は、図15〜図17に示した取得例1〜取得例3における情報処理装置100の処理である。
図18は、情報処理装置100によるデータ取得処理の詳細な処理手順を示すフローチャートである。図18に示すように、まず、情報処理装置100は、取得要求が入力されたか否かを判定する(ステップS1801)。ここで、取得要求が入力されていない場合(ステップS1801:No)、情報処理装置100は、ステップS1801に戻り、取得要求の入力を待つ。
一方、取得要求が入力された場合(ステップS1801:Yes)、情報処理装置100は、取得要求されたパスにあるディレクトリDから特定ファイルFを取得する(ステップS1802)。次に、情報処理装置100は、特定ファイルFが取得できたか否かを判定する(ステップS1803)。
ここで、特定ファイルFが取得できなかった場合(ステップS1803:No)、情報処理装置100は、上位ディレクトリDがあるか否かを判定する(ステップS1804)。ここで、上位ディレクトリDがある場合(ステップS1804:Yes)、情報処理装置100は、ステップS1802に戻る。一方、上位ディレクトリDがない場合(ステップS1804:No)、情報処理装置100は、ディレクトリDからデータdを取得し(ステップS1805)、データ取得処理を終了する。
一方、ステップS1803において、特定ファイルFが取得できた場合(ステップS1803:Yes)、情報処理装置100は、図14に示したデータ鍵合成処理を実行する(ステップS1806)。
次に、情報処理装置100は、データ鍵合成処理により、データ鍵dkが合成できたか否かを判定する(ステップS1807)。ここで、データ鍵dkが合成できなかった場合(ステップS1807:No)、情報処理装置100は、データ取得処理を終了する。
一方、データ鍵dkが合成できた場合(ステップS1807:Yes)、ディレクトリDから暗号化データCdを取得する(ステップS1808)。次に、情報処理装置100は、合成したデータ鍵dkを用いて、取得した暗号化データCdを復号する(ステップS1809)。そして、情報処理装置100は、データ取得処理を終了する。これにより、情報処理装置100は、ディレクトリDの暗号化データCdを取得して復号することができる。
以上説明したように、情報処理装置100は、所属するグループGがディレクトリDを利用可能なグループGであれば、ディレクトリDにあるディレクトリ鍵DkとグループG固有のグループ鍵Gkとを合成することにより、データ鍵dkを生成することができる。一方、情報処理装置100は、所属するグループGがディレクトリDを利用可能なグループGでなければ、ディレクトリ鍵Dkを用いても、データ鍵dkを生成することができない。
これにより、情報処理装置100は、データ鍵dkを用いて、ディレクトリDに格納するデータdを暗号化しておくことができる。また、情報処理装置100は、データ鍵dkを用いて、ディレクトリDに格納された暗号化データCdを取得して復号することができる。そして、ディレクトリDは、利用可能なグループG以外からは利用できないようになる。
情報処理装置100は、ディレクトリDを作成する場合、ディレクトリDを利用可能なグループGに固有のグループ鍵Gkと合成することにより、データ鍵dkを生成することができるディレクトリ鍵Dkを生成する。次に、情報処理装置100は、ディレクトリDを利用可能なグループGを示す情報とディレクトリ鍵Dkとを対応付けた特定ファイルFをディレクトリDに格納する。これにより、情報処理装置100は、ディレクトリDを利用可能なグループGに固有のグループ鍵Gkを有する情報処理装置100からのみ利用可能なディレクトリDを作成することができる。そのため、ディレクトリDは、利用可能なグループG以外からは利用できないようになる。
また、情報処理装置100によるデータdの暗号化や暗号化データCdの復号は、ディレクトリDのパスに依存しない。そのため、ディレクトリDの格納場所をデータベース101において他の格納場所に移動させても情報処理装置100は暗号化や復号が可能になる。また、ディレクトリDの格納場所をデータベース101以外の他のデータベース101に移動させた場合も同様に情報処理装置100は暗号化や復号が可能になる。
なお、本実施の形態で説明した取得方法、格納方法、および作成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本取得プログラム、本格納プログラム、および本作成プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本取得プログラム、本格納プログラム、および本作成プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付け、
前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第2の分散鍵を取得し、
前記第1の分散鍵と取得された第2の分散鍵を合成することにより暗号鍵を生成し、
生成された暗号鍵で前記データを暗号化し、
暗号化された暗号化データを前記データベース内の前記第2の分散鍵の格納場所に送信する、
処理を実行することを特徴とする格納方法。
(付記2)前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む格納要求がされた、前記特定のグループ群に関するデータである、
ことを特徴とする付記1に記載の格納方法。
(付記3)前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む格納要求がされた、前記特定のグループ群に関するデータであり、
前記第1の分散鍵および第2の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする付記1に記載の格納方法。
(付記4)コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第2の分散鍵と、前記データを取得された第1の分散鍵と前記第2の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第1の分散鍵と取得された第2の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、
処理を実行することを特徴とする取得方法。
(付記5)前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む取得要求がされた、前記特定のグループ群に関するデータである、
ことを特徴とする付記4に記載の取得方法。
(付記6)前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む取得要求がされた、前記特定のグループ群に関するデータであり、
前記第1の分散鍵および第2の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする付記4に記載の取得方法。
(付記7)コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第2の分散鍵を生成し、
生成された第2の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、
処理を実行することを特徴とする作成方法。
(付記8)前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第2の分散鍵は、前記いずれかのグループの識別情報に関連付けられた前記特定のグループ群に固有な分散鍵である、
ことを特徴とする付記7に記載の作成方法。
(付記9)前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第1の分散鍵および第2の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする付記7に記載の作成方法。
(付記10)複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付ける受付部と、
前記受付部によって前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得する第1の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第2の分散鍵を取得する第2の取得部と、
前記第1の分散鍵と前記第2の取得部によって取得された第2の分散鍵を合成することにより暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記データを暗号化する暗号化部と、
前記暗号化部によって暗号化された暗号化データを前記データベース内の前記第2の分散鍵の格納場所に送信する送信部と、
を有することを特徴とする格納装置。
(付記11)複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付ける受付部と、
前記受付部によって前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得する第1の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第2の分散鍵と、前記データを前記第1の取得部によって取得された第1の分散鍵と前記第2の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得する第2の取得部と、
前記第1の分散鍵と前記第2の取得部によって取得された第2の分散鍵を合成することにより前記暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記暗号化データを復号する復号部と、
前記復号部によって復号されたデータを前記要求元装置に送信する送信部と、
を有することを特徴とする取得装置。
(付記12)複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付ける受付部と、
前記受付部によって前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得する取得部と、
前記いずれかのグループに固有な第2の分散鍵を生成する生成部と、
前記生成部によって生成された第2の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する送信部と、
を有することを特徴とする作成装置。
(付記13)コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付け、
前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第2の分散鍵を取得し、
前記第1の分散鍵と取得された第2の分散鍵を合成することにより暗号鍵を生成し、
生成された暗号鍵で前記データを暗号化し、
暗号化された暗号化データを前記データベース内の前記第2の分散鍵の格納場所に送信する、
処理を実行させることを特徴とする格納プログラム。
(付記14)コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第2の分散鍵と、前記データを取得された第1の分散鍵と前記第2の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第1の分散鍵と取得された第2の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、
処理を実行させることを特徴とする取得プログラム。
(付記15)コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第1の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第2の分散鍵を生成し、
生成された第2の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、
処理を実行させることを特徴とする作成プログラム。