(57)【特許請求の範囲】
【請求項１】
コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付け、
前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより暗号鍵を生成し、
生成された暗号鍵で前記データを暗号化し、
暗号化された暗号化データを前記データベース内の前記第２の分散鍵の格納場所に送信する、
処理を実行することを特徴とする格納方法。
【請求項２】
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む格納要求がされた、前記特定のグループ群に関するデータである、
ことを特徴とする請求項１に記載の格納方法。
【請求項３】
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む格納要求がされた、前記特定のグループ群に関するデータであり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする請求項１に記載の格納方法。
【請求項４】
コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、処理を実行し、
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む取得要求がされた、前記特定のグループ群に関するデータである、ことを特徴とする取得方法。
【請求項５】
コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、処理を実行し、
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む取得要求がされた、前記特定のグループ群に関するデータであり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、ことを特徴とする取得方法。
【請求項６】
コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第２の分散鍵を生成し、
生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、処理を実行し、
前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第２の分散鍵は、前記いずれかのグループの識別情報に関連付けられた前記特定のグループ群に固有な分散鍵である、ことを特徴とする作成方法。
【請求項７】
コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第２の分散鍵を生成し、
生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、処理を実行し、
前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、ことを特徴とする作成方法。
【請求項８】
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付ける受付部と、
前記受付部によって前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する第１の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵を取得する第２の取得部と、
前記第１の分散鍵と前記第２の取得部によって取得された第２の分散鍵を合成することにより暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記データを暗号化する暗号化部と、
前記暗号化部によって暗号化された暗号化データを前記データベース内の前記第２の分散鍵の格納場所に送信する送信部と、
を有することを特徴とする格納装置。
【請求項９】
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付ける受付部と、
前記受付部によって前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する第１の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを前記第１の取得部によって取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得する第２の取得部と、
前記第１の分散鍵と前記第２の取得部によって取得された第２の分散鍵を合成することにより前記暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記暗号化データを復号する復号部と、
前記復号部によって復号されたデータを前記要求元装置に送信する送信部と、を有し、
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む取得要求がされた、前記特定のグループ群に関するデータであり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、ことを特徴とする取得装置。
【請求項１０】
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付ける受付部と、
前記受付部によって前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する第１の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを前記第１の取得部によって取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得する第２の取得部と、
前記第１の分散鍵と前記第２の取得部によって取得された第２の分散鍵を合成することにより前記暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記暗号化データを復号する復号部と、
前記復号部によって復号されたデータを前記要求元装置に送信する送信部と、を有し、
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する前記要求元装置から、前記いずれかのグループの識別情報を含む取得要求がされた、前記特定のグループ群に関するデータである、ことを特徴とする取得装置。
【請求項１１】
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付ける受付部と、
前記受付部によって前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する取得部と、
前記いずれかのグループに固有な第２の分散鍵を生成する生成部と、
前記生成部によって生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する送信部と、を有し、
前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第２の分散鍵は、前記いずれかのグループの識別情報に関連付けられた前記特定のグループ群に固有な分散鍵である、ことを特徴とする作成装置。
【請求項１２】
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付ける受付部と、
前記受付部によって前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する取得部と、
前記いずれかのグループに固有な第２の分散鍵を生成する生成部と、
前記生成部によって生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する送信部と、を有し、
前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、ことを特徴とする作成装置。
【請求項１３】
コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付け、
前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより暗号鍵を生成し、
生成された暗号鍵で前記データを暗号化し、
暗号化された暗号化データを前記データベース内の前記第２の分散鍵の格納場所に送信する、
処理を実行させることを特徴とする格納プログラム。
【請求項１４】
コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかの
グループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、処理を実行させ、
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む取得要求がされた、前記特定のグループ群に関するデータであり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、ことを特徴とする取得プログラム。
【請求項１５】
コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、処理を実行させ、
前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する前記要求元装置から、前記いずれかのグループの識別情報を含む取得要求がされた、前記特定のグループ群に関するデータである、ことを特徴とする取得プログラム。
【請求項１６】
コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第２の分散鍵を生成し、
生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、処理を実行させ、
前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第２の分散鍵は、前記いずれかのグループの識別情報に関連付けられた前記特定のグループ群に固有な分散鍵である、ことを特徴とする作成プログラム。
【請求項１７】
コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第２の分散鍵を生成し、
生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、処理を実行させ、
前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、ことを特徴とする作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、格納方法、取得方法、作成方法、格納装置、取得装置、作成装置、格納プログラム、取得プログラム、および作成プログラムに関する。
【背景技術】
【０００２】
従来、複数人、または複数グループにおいて、データを共用する場合がある。例えば、ネットワークを経由してアクセス可能な記憶領域を貸し出すオンラインストレージサービスを利用し、貸し出された記憶領域に複数グループからアクセス可能に設定して、データを共用することがある。
【０００３】
ここで、貸し出された記憶領域にあるデータは、不正なアクセスを行う攻撃者やオンラインストレージサービスの提供者などの第三者に閲覧されたり変更されたりする危険性がある。そのため、貸し出された記憶領域にあるデータを暗号化することにより、セキュリティを担保している。
【０００４】
暗号化に関する技術として、暗号化データのヘッダ部分に、利用者固有の情報と組み合わせることにより暗号化データを復号することができるキー情報を挿入する技術がある（下記特許文献１参照）。また、関連する技術として、暗号化および復号に用いる鍵をキーサーバにおいて管理する技術がある（例えば、下記特許文献２，３参照）。また、ユーザ認証された利用者が或る文書データを利用した場合、文書データの文書ＩＤとユーザ認証したユーザＩＤとを含むアクセス実績情報を記憶手段に記録する技術がある（例えば、下記特許文献４参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−９９３８５号公報
【特許文献２】特開２００５−２０９１８１号公報
【特許文献３】特開２００５−２８６４０２号公報
【特許文献４】特開２００５−３２１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したオンラインストレージサービスから複数のグループに貸し出された共有の記憶領域に格納されたデータ群の中には、或るグループの利用者からのみアクセスを許可し、他のグループの利用者からのアクセスを禁止したいデータが存在する場合がある。しかしながら、共有の記憶領域に格納されたデータ群は、アクセス可能に設定した複数グループのいずれかに所属する利用者からアクセスされることになる。従って、或るグループの利用者の個人情報や技術情報といった他のグループの利用者からのアクセスを禁止したいデータが、他のグループの利用者からアクセスされ流出してしまう場合がある。
【０００７】
一方、利用者の所属グループを認証する機能を有する認証サーバにより、アクセス先のデータを有するグループの所属であることが認証されなかった利用者からのアクセスを禁止するように制御する場合がある。しかしながら、認証サーバを設ける場合、認証サーバの設置コストや運用コストが増大する。
【０００８】
本発明は、共有記憶領域において効率的にセキュリティの向上を図ることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、複数のグループの中のいずれかのグループに所属する要求元装置から、いずれかのグループの識別情報を含むいずれかのグループに関するデータの格納要求を受け付け、格納要求が受け付けられた場合、いずれかのグループの識別情報に関連付けられたいずれかのグループに固有な第１の分散鍵を記憶装置から取得し、複数のグループの各グループのデータ群を記憶するデータベースから、いずれかのグループの識別情報に関連付けられたいずれかのグループに固有な第２の分散鍵を取得し、第１の分散鍵と取得された第２の分散鍵を合成することにより暗号鍵を生成し、生成された暗号鍵でデータを暗号化し、暗号化された暗号化データをデータベース内の第２の分散鍵の格納場所に送信する格納方法、格納装置、および格納プログラムが提案される。
【００１０】
また、本発明の一側面によれば、複数のグループの中のいずれかのグループに所属する要求元装置から、いずれかのグループの識別情報を含むいずれかのグループに関するデータの取得要求を受け付け、取得要求が受け付けられた場合、いずれかのグループの識別情報に関連付けられたいずれかのグループに固有な第１の分散鍵を記憶装置から取得し、複数のグループの各グループのデータ群を記憶するデータベースから、いずれかのグループの識別情報に関連付けられたいずれかのグループに固有な第２の分散鍵と、データを取得された第１の分散鍵と第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、第１の分散鍵と取得された第２の分散鍵を合成することにより暗号鍵を生成し、生成された暗号鍵で暗号化データを復号し、復号されたデータを要求元装置に送信する取得方法、取得装置、および取得プログラムが提案される。
【００１１】
また、本発明の一側面によれば、複数のグループの中のいずれかのグループに所属する要求元装置から、いずれかのグループの識別情報を含むいずれかのグループに関する格納場所の作成要求を受け付け、作成要求が受け付けられた場合、いずれかのグループの識別情報に関連付けられたいずれかのグループに固有な第１の分散鍵を記憶装置から取得し、いずれかのグループに固有な第２の分散鍵を生成し、生成された第２の分散鍵といずれかのグループの識別情報とを関連付けた情報を、データベース内のいずれかのグループに固有な格納場所を指定して、データベースに送信する作成方法、作成装置、および作成プログラムが提案される。
【発明の効果】
【００１２】
本発明の一側面によれば、共有記憶領域において効率的にセキュリティの向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、情報処理装置によるデータ処理の流れを示す説明図である。
【図２】図２は、実施の形態にかかる情報処理装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、グループ鍵テーブル３００の記憶内容を示す説明図である。
【図４】図４は、情報処理装置１００の機能的構成を示すブロック図である。
【図５】図５は、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合の作成例１を示す説明図である。
【図６】図６は、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤを作成する場合の作成例２を示す説明図である。
【図７】図７は、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合の作成例３を示す説明図である。
【図８】図８は、情報処理装置１００によるディレクトリ作成処理の詳細な処理手順を示すフローチャートである。
【図９】図９は、特定ファイル作成処理の詳細な処理手順を示すフローチャートである。
【図１０】図１０は、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤへとデータｄを格納する場合の格納例１を示す説明図である。
【図１１】図１１は、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤへとデータｄを格納する場合の格納例２を示す説明図である。
【図１２】図１２は、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合の格納例３を示す説明図である。
【図１３】図１３は、情報処理装置１００によるデータ格納処理の詳細な処理手順を示すフローチャートである。
【図１４】図１４は、データ鍵合成処理の詳細な処理手順を示すフローチャートである。
【図１５】図１５は、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤのデータｄを取得する場合の取得例１を示す説明図である。
【図１６】図１６は、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤのデータｄを取得する場合の取得例２を示す説明図である。
【図１７】図１７は、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤを取得する場合の取得例３を示す説明図である。
【図１８】図１８は、情報処理装置１００によるデータ取得処理の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかる格納方法、取得方法、作成方法、格納装置、取得装置、作成装置、格納プログラム、取得プログラム、および作成プログラムの実施の形態を詳細に説明する。以降では、取得装置、格納装置、および作成装置として動作する情報処理装置を例に挙げる。まず、図１を用いて、情報処理装置によるデータ処理の流れについて説明する。
【００１５】
（情報処理装置によるデータ処理の流れ）
図１は、情報処理装置によるデータ処理の流れを示す説明図である。
【００１６】
図１に示す情報処理装置１００は、所属するグループＧに固有のグループ鍵Ｇｋを有するコンピュータである。グループ鍵Ｇｋは、例えば、情報処理装置１００が有するグループ鍵テーブルに記憶される。グループ鍵テーブルについては図３を用いて後述する。
【００１７】
情報処理装置１００は、データベース１０１のディレクトリＤからディレクトリＤ固有のディレクトリ鍵Ｄｋを取得して、ディレクトリ鍵Ｄｋとグループ鍵Ｇｋとを合成して、データ鍵ｄｋを作成する。情報処理装置１００は、作成したデータ鍵ｄｋを用いて、ディレクトリＤにデータｄを暗号化して格納し、また、ディレクトリＤから暗号化データＣｄを取得して復号する。
【００１８】
暗号化するデータｄは、例えば、情報処理装置１００の外部の要求元装置から格納要求されたデータｄであり、要求元装置から情報処理装置１００に送信される。復号する暗号化データＣｄは、例えば、情報処理装置１００の外部の要求元装置から取得要求された暗号化データＣｄであり、復号後に情報処理装置１００から要求元装置に送信される。また、情報処理装置１００自体が要求元装置であってもよい。この場合、情報処理装置１００は、暗号化するデータｄの入力を受け付ける。また、情報処理装置１００は、復号した暗号化データＣｄを出力する。以降では、簡単のため、要求元装置は、情報処理装置１００自体であるとする。
【００１９】
図１の例では、情報処理装置１００Ａ１は、グループＧＡに所属し、グループＧＡに固有のグループ鍵ＧｋＡを有する。また、情報処理装置１００Ａ２は、グループＧＡに所属し、グループＧＡに固有のグループ鍵ＧｋＡを有する。また、情報処理装置１００Ｂ１は、グループＧＢに所属し、グループＧＢに固有のグループ鍵ＧｋＢを有する。また、情報処理装置１００ＡＢは、グループＧＡとグループＧＢとに所属し、グループＧＡに固有のグループ鍵ＧｋＡと、グループＧＢに固有のグループ鍵ＧｋＢと、を有する。
【００２０】
図１に示すデータベース１０１は、暗号化データＣｄが格納される複数のディレクトリＤを有するコンピュータである。データベース１０１は、１コンピュータによる実現に限らない。例えば、データベース１０１は、複数のコンピュータにより実現されてもよい。暗号化データＣｄは、グループＧに固有のグループ鍵Ｇｋと、ディレクトリＤに固有のディレクトリ鍵Ｄｋと、を合成して得られるデータ鍵ｄｋによって暗号化されたデータｄである。ディレクトリＤには、ディレクトリ鍵ＤｋとディレクトリＤを利用可能なグループＧを示すグループ情報とを対応付けた特定ファイルＦが格納されている。
【００２１】
図１の例では、データベース１０１には、グループＧＡに所属する情報処理装置１００が利用するデータｄが暗号化されて格納されるディレクトリＤＡがある。ディレクトリＤＡには、特定ファイルＦＡが格納されている。特定ファイルＦＡは、ディレクトリＤＡを利用可能なグループを示す「ＧＡ」と、グループＧＡに固有のグループ鍵ＧｋＡと合成することにより、データ鍵ｄｋＡを生成することができるディレクトリ鍵ＤｋＡと、を対応付けた情報を含む。
【００２２】
また、データベース１０１には、グループＧＢに所属する情報処理装置１００が利用するデータｄが暗号化されて格納されるディレクトリＤＢがある。ディレクトリＤＢには、特定ファイルＦＢが格納されている。特定ファイルＦＢは、ディレクトリＤＢを利用可能なグループを示す「ＧＢ」と、グループＧＢに固有のグループ鍵ＧｋＢと合成することにより、データ鍵ｄｋＢを生成することができるディレクトリ鍵ＤｋＢと、を対応付けた情報を含む。
【００２３】
また、データベース１０１には、グループＧＡとグループＧＢとのいずれかのグループＧに所属する情報処理装置１００が利用するデータｄが暗号化されて格納されるディレクトリＤｏｒがある。ディレクトリＤｏｒには、特定ファイルＦｏｒが格納されている。
【００２４】
特定ファイルＦｏｒは、ディレクトリＤｏｒを利用可能なグループを示す「ＧＡ」「ｏｒ」「ＧＢ」を含む。また、特定ファイルＦｏｒは、「ＧＡ」と、グループＧＡに固有のグループ鍵ＧｋＡと合成することにより、データ鍵ｄｋｏｒを生成することができるディレクトリ鍵Ｄｋｏｒ１と、を対応付けた情報を含む。また、特定ファイルＦｏｒは、「ＧＢ」と、グループＧＢに固有のグループ鍵ＧｋＢと合成することにより、データ鍵ｄｋｏｒを生成することができるディレクトリ鍵Ｄｋｏｒ２と、を対応付けた情報を含む。
【００２５】
また、データベース１０１には、グループＧＡとグループＧＢとのいずれのグループＧにも所属する情報処理装置１００が利用するデータｄが暗号化されて格納されるディレクトリＤａｎｄがある。ディレクトリＤａｎｄには、特定ファイルＦａｎｄが格納されている。
【００２６】
特定ファイルＦａｎｄは、ディレクトリＤａｎｄを利用可能なグループを示す「ＧＡ」「ａｎｄ」「ＧＢ」を含む。また、特定ファイルＦａｎｄは、「ＧＡ」と、グループＧＡに固有のグループ鍵ＧｋＡと合成することにより、データ鍵ｄｋａｎｄ１を生成することができるディレクトリ鍵Ｄｋａｎｄ１と、を対応付けた情報を含む。また、特定ファイルＦａｎｄは、「ＧＢ」と、グループＧＢに固有のグループ鍵ＧｋＢと合成することにより、データ鍵ｄｋａｎｄ２を生成することができるディレクトリ鍵Ｄｋａｎｄ２と、を対応付けた情報を含む。
【００２７】
ディレクトリＤは、例えば、情報処理装置１００によって作成される。情報処理装置１００によるディレクトリＤの作成の詳細については、図５〜図９を用いて後述する。
【００２８】
まず、情報処理装置１００Ａ１が、データｄＡを暗号化して暗号化データＣｄＡを生成し、ディレクトリＤＡに暗号化データＣｄＡを格納する場合について説明する。
【００２９】
この場合、（１）情報処理装置１００Ａ１は、ディレクトリＤＡから、特定ファイルＦＡを取得し、特定ファイルＦＡの中からディレクトリ鍵ＤｋＡを取得する。（２）次に、情報処理装置１００Ａ１は、取得したディレクトリ鍵ＤｋＡと、グループ鍵ＧｋＡと、を合成して、データ鍵ｄｋＡを生成する。
【００３０】
（３）そして、情報処理装置１００Ａ１は、格納するデータｄＡを、生成したデータ鍵ｄｋＡを用いて暗号化して、暗号化データＣｄＡを生成する。（４）次に、情報処理装置１００Ａ１は、暗号化データＣｄＡをディレクトリＤＡに格納する。
【００３１】
これにより、情報処理装置１００Ａ１は、ディレクトリＤＡに格納されるデータｄＡを暗号化された状態にして、セキュリティを担保することができる。情報処理装置１００によるディレクトリＤへの暗号化データＣｄの格納の詳細については、図１０〜図１４を用いて後述する。
【００３２】
次に、情報処理装置１００Ａ２が、ディレクトリＤＡから暗号化データＣｄＡを取得し、暗号化データＣｄＡを復号してデータｄＡを生成する場合について説明する。
【００３３】
この場合、（５）情報処理装置１００Ａ２は、ディレクトリＤＡから、特定ファイルＦＡを取得し、特定ファイルＦＡの中からディレクトリ鍵ＤｋＡを取得する。（６）次に、情報処理装置１００Ａ２は、取得したディレクトリ鍵ＤｋＡと、グループ鍵ＧｋＡと、を合成して、データ鍵ｄｋＡを生成する。
【００３４】
（７）そして、情報処理装置１００Ａ２は、ディレクトリＤＡから、暗号化データＣｄＡを取得する。（８）次に、情報処理装置１００Ａ２は、生成したデータ鍵ｄｋＡを用いて、暗号化データＣｄＡを復号して、データｄＡを生成する。
【００３５】
これにより、情報処理装置１００Ａ２は、ディレクトリＤＡに格納された暗号化データＣｄＡを復号して、データｄＡを利用することができる。このように、情報処理装置１００Ａ１，１００Ａ２とは、データｄＡを共用することができる。情報処理装置１００によるディレクトリＤの暗号化データＣｄの取得の詳細については、図１５〜図１８を用いて後述する。
【００３６】
次に、情報処理装置１００Ｂ１が、ディレクトリＤＡから暗号化データＣｄＡを取得する場合について説明する。
【００３７】
この場合、（９）情報処理装置１００Ｂ１は、ディレクトリＤＡから、特定ファイルＦＡを取得し、特定ファイルＦＡの中からディレクトリ鍵ＤｋＡを取得する。（１０）ここで、情報処理装置１００Ｂ１は、グループ鍵ＧｋＡを有していないため、ディレクトリ鍵ＤｋＡを取得しても、データ鍵ｄｋＡを生成することができない。
【００３８】
（１１）結果として、情報処理装置１００Ｂ１は、ディレクトリＤＡから、暗号化データＣｄＡを取得しても、暗号化データＣｄＡを復号することができない。これにより、ディレクトリＤＡは、グループＧＡに所属する情報処理装置１００Ａ１，１００Ａ２とからは利用可能、かつ、グループＧＡに所属しない情報処理装置１００Ｂ１からは利用不可能なディレクトリＤになる。
【００３９】
また、詳細は図１１に後述するが、ディレクトリＤｏｒには、グループＧＡに所属する情報処理装置１００であってもグループＧＢに所属する情報処理装置１００であっても、暗号化データＣｄｏｒを格納することができる。また、ディレクトリＤｏｒの暗号化データＣｄｏｒは、グループＧＡに所属する情報処理装置１００であってもグループＧＢに所属する情報処理装置１００であっても、復号することができる。これにより、ディレクトリＤｏｒは、グループＧＡに所属する情報処理装置１００とグループＧＢに所属する情報処理装置１００とが共用することができるディレクトリＤになる。
【００４０】
また、詳細は図１２に後述するが、ディレクトリＤａｎｄには、グループＧＡとグループＧＢとの両方に所属する情報処理装置１００が暗号化データＣｄａｎｄを格納することができる。また、ディレクトリＤａｎｄの暗号化データＣｄａｎｄは、グループＧＡとグループＧＢとの両方に所属する情報処理装置１００が復号することができる。これにより、ディレクトリＤａｎｄは、グループＧＡとグループＧＢとの両方に所属する情報処理装置１００が利用可能なディレクトリＤになる。
【００４１】
このように、各ディレクトリＤは、特定のグループＧに所属する情報処理装置１００から利用可能なディレクトリＤになる。換言すれば、情報処理装置１００とデータベース１０１とによるシステムは、情報処理装置１００のディレクトリＤへの利用権限を認証し、認証された情報処理装置１００にディレクトリＤの利用を許可する「アクセス制御」と同様の機能を実現することができる。
【００４２】
また、データベース１０１は、情報処理装置１００から暗号化データＣｄを格納されたり、格納された暗号化データＣｄを取得されたりする。そのため、データベース１０１は、新たな機能を追加しなくてもよく、情報処理装置１００の利用者とは異なるサービス提供者によって提供され、情報処理装置１００の利用者が機能追加や機能変更をすることができないコンピュータによっても実現することができる。
【００４３】
（情報処理装置１００のハードウェア構成例）
図２は、実施の形態にかかる情報処理装置１００のハードウェア構成例を示すブロック図である。図２において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００４４】
ここで、ＣＰＵ２０１は、情報処理装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラム、取得プログラム、格納プログラム、および作成プログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御に従って磁気ディスク２０５に対するデータｄのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータｄを記憶する。
【００４５】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御に従って光ディスク２０７に対するデータｄのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータｄを記憶したり、光ディスク２０７に記憶されたデータｄをコンピュータに読み取らせたりする。
【００４６】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータｄを表示する。このディスプレイ２０８は、例えば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００４７】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータｄの入出力を制御する。Ｉ／Ｆ２０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００４８】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データｄの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４９】
スキャナ２１２は、画像を光学的に読み取り、情報処理装置１００内に画像データｄを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データｄや文書データｄを印刷する。プリンタ２１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。なお、光ディスクドライブ２０６、光ディスク２０７、ディスプレイ２０８、キーボード２１０、マウス２１１、スキャナ２１２、およびプリンタ２１３の少なくともいずれか１つは、なくてもよい。
【００５０】
（グループ鍵テーブル）
次に、図３を用いて、グループ鍵テーブルの記憶内容について説明する。グループ鍵テーブル３００は、グループ鍵Ｇｋを記憶するテーブルである。グループ鍵テーブル３００は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域により実現される。
【００５１】
図３は、グループ鍵テーブル３００の記憶内容を示す説明図である。図３に示すように、グループ鍵テーブル３００は、グループ名項目のそれぞれに対応付けて、グループ鍵項目を有し、情報処理装置１００が所属するグループＧごとにレコードを構成する。図３の例は、グループＧＡとグループＧＢとに所属する情報処理装置１００ＡＢが有するグループ鍵テーブル３００である。
【００５２】
グループ名項目には、情報処理装置１００が所属するグループＧの名称が記憶される。グループ鍵項目には、グループ名項目のグループＧに固有のグループ鍵Ｇｋが記憶される。図３の例では、情報処理装置１００ＡＢが所属するグループＧＡの名称「ＧＡ」に対応付けて、グループＧＡに固有のグループ鍵Ｇｋ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」が記憶されている。
【００５３】
（情報処理装置１００の機能的構成例）
次に、図４を用いて、情報処理装置１００の機能的構成例について説明する。図４は、情報処理装置１００の機能的構成を示すブロック図である。情報処理装置１００は、受付部４０１と、取得部４０２と、生成部４０３と、送信部４０４と、暗号化部４０５と、を含む。受付部４０１と、取得部４０２と、生成部４０３と、送信部４０４と、暗号化部４０５とは、具体的には、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００５４】
情報処理装置１００は、ディレクトリＤを作成する機能と、データｄを暗号化してディレクトリＤに格納する機能と、ディレクトリＤから暗号化データＣｄを取得して復号する機能と、を有する。
【００５５】
＜ディレクトリＤを作成する機能＞
まず、情報処理装置１００が有する機能のうち、ディレクトリＤを作成する機能について説明する。ディレクトリＤを作成する機能は、受付部４０１と、取得部４０２と、生成部４０３と、送信部４０４と、により実現される。
【００５６】
・或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合
ここで、作成されるディレクトリＤが、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤである場合を例に挙げる。この場合の作成例は図５を用いて後述する。
【００５７】
この場合、受付部４０１は、複数のグループＧの中のいずれかのグループＧに所属する要求元装置から、いずれかのグループＧの識別情報を含むいずれかのグループＧに関する格納場所の作成要求を受け付ける。
【００５８】
ここで、要求元装置とは、例えば、情報処理装置１００と通信可能であって、要求元装置の利用者から入力された情報を情報処理装置１００に送信するコンピュータである。グループＧとは、同一の識別情報を有する１または複数の要求元装置の集合である。識別情報とは、要求元装置が有する属性を示す情報であり、例えば、要求元装置を有する会社や部署を示す情報である。また、要求元装置は、例えば、情報処理装置１００自体であってもよい。
【００５９】
また、要求元装置は、利用者から識別情報の入力を受け付けて、所属するグループＧを切り替えてもよい。例えば、要求元装置は、利用者から部署「経理」の入力を受け付けた場合に部署「経理」に所属する要求元装置として動作し、利用者から部署「開発」の入力を受け付けた場合に部署「開発」に所属する要求元装置として動作し、所属する部署を切り替えてもよい。また、要求元装置は複数あってもよく、情報処理装置１００は、同一グループに所属する複数の要求元装置と通信してもよい。
【００６０】
受付部４０１は、具体的には、例えば、グループＧＡに所属する要求元装置から、グループＧＡに所属する情報処理装置１００が利用するディレクトリＤＡの作成要求を受け付ける。作成要求には、例えば、作成するディレクトリＤＡを利用するグループＧを示す識別情報「ＧＡ」と、ディレクトリＤＡの作成先を示す作成先情報が含まれる。作成先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【００６１】
受け付けられた作成要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの作成先を指定することができる。
【００６２】
この場合、取得部４０２は、受付部４０１によって作成要求が受け付けられた場合、いずれかのグループＧの識別情報に関連付けられたいずれかのグループＧに固有な第１の分散鍵を記憶装置から取得する。記憶装置とは、例えば、上述したグループ鍵テーブル３００である。第１の分散鍵とは、他の分散鍵と合成することにより、データｄの暗号化と復号とに用いられる鍵を生成するための鍵であり、上述したグループ鍵Ｇｋである。
【００６３】
取得部４０２は、具体的には、例えば、グループ鍵テーブル３００のグループ名項目から、作成要求内の識別情報「ＧＡ」を探索する。次に、取得部４０２は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【００６４】
取得されたグループ鍵Ｇｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、生成部４０３は、第１の分散鍵を用いて、第２の分散鍵を生成することができる。
【００６５】
この場合、生成部４０３は、いずれかのグループＧに固有な第２の分散鍵を生成する。第２の分散鍵とは、他の分散鍵と合成することにより、データｄの暗号化と復号とに用いられる鍵を生成するための鍵であり、上述したディレクトリ鍵Ｄｋである。
【００６６】
生成部４０３は、具体的には、例えば、作成要求されたディレクトリＤＡに格納されるデータｄの暗号化と復号とに用いられるデータ鍵ｄｋＡを生成する。次に、生成部４０３は、生成したデータ鍵ｄｋＡをグループ鍵ＧｋＡを用いて暗号化して、暗号化されたデータ鍵ｄｋＡをディレクトリ鍵ＤｋＡ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」として生成する。
【００６７】
そして、生成部４０３は、生成したディレクトリ鍵ＤｋＡ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」と、ディレクトリＤＡを利用するグループＧを示す識別情報「ＧＡ」と、を対応付けた特定ファイルＦＡを生成する。
【００６８】
生成された第２の分散鍵や特定ファイルＦは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、送信部４０４は、作成するディレクトリＤに、ディレクトリＤ固有のディレクトリ鍵Ｄｋを格納することができる。
【００６９】
この場合、送信部４０４は、生成部４０３によって生成された第２の分散鍵といずれかのグループＧの識別情報とを関連付けた情報を、データベース１０１内のいずれかのグループＧに固有な格納場所を指定して、データベース１０１に送信する。ここで、生成部４０３によって生成された第２の分散鍵といずれかのグループＧの識別情報とを関連付けた情報とは、例えば、上述した特定ファイルＦである。固有な格納場所とは、例えば、作成要求されたディレクトリＤである。
【００７０】
送信部４０４は、具体的には、例えば、データベース１０１が作成要求されたパスにディレクトリＤを作成して特定ファイルＦを格納するように、データベース１０１に作成要求されたパスを指定して特定ファイルＦを送信する。これにより、データベース１０１は、作成要求されたパスにディレクトリＤを作成し、作成したディレクトリＤに特定ファイルＦを格納することができる。
【００７１】
・複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤを作成する場合
ここで、作成されるディレクトリＤが、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤである場合を例に挙げる。この場合の作成例は図６を用いて後述する。
【００７２】
この場合、受付部４０１は、複数のグループＧの中の特定のグループＧ群のいずれかのグループＧに所属する要求元装置から、いずれかのグループＧの識別情報を含む特定のグループＧ群に関する格納場所の作成要求を受け付ける。
【００７３】
受付部４０１は、具体的には、例えば、グループＧＡとグループＧＢとに所属する要求元装置から、グループＧＡとグループＧＢとのいずれかに所属する情報処理装置１００が利用するディレクトリＤｏｒの作成要求を受け付ける。
【００７４】
作成要求には、例えば、作成するディレクトリＤｏｒを利用するグループＧを示す識別情報「ＧＡ」「ＧＢ」と、ディレクトリＤｏｒを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれかであることを示す条件情報「ｏｒ」と、が含まれる。また、作成要求には、ディレクトリＤｏｒの作成先を示す作成先情報が含まれる。作成先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【００７５】
受け付けられた作成要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。
【００７６】
この場合、取得部４０２は、受付部４０１によって作成要求が受け付けられた場合、いずれかのグループＧの識別情報に関連付けられたいずれかのグループＧに固有な第１の分散鍵を記憶装置から取得する。
【００７７】
取得部４０２は、具体的には、例えば、グループ鍵テーブル３００のグループ名項目から、作成要求内の識別情報「ＧＡ」「ＧＢ」を探索する。次に、取得部４０２は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」と、探索した「ＧＢ」に対応付けられたグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を取得する。
【００７８】
取得されたグループ鍵Ｇｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、生成部４０３は、第１の分散鍵を用いて、第２の分散鍵を生成することができる。
【００７９】
この場合、生成部４０３は、特定のグループＧ群に固有な第２の分散鍵を生成する。生成部４０３は、具体的には、例えば、作成要求されたディレクトリＤｏｒに格納するデータｄの暗号化と復号とに使用されるデータ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。次に、生成部４０３は、データ鍵ｄｋｏｒを、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて暗号化する。そして、生成部４０３は、ディレクトリ鍵Ｄｋｏｒ１になる暗号化されたデータ鍵ｄｋｏｒ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を生成する。
【００８０】
また、生成部４０３は、データ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて暗号化する。そして、生成部４０３は、ディレクトリ鍵Ｄｋｏｒ２になる暗号化されたデータ鍵ｄｋｏｒ「９９ＡＡ５６Ａ３Ｅ５ＤＤ３Ａ２」を生成する。
【００８１】
そして、生成部４０３は、特定ファイルＦｏｒを生成する。特定ファイルＦｏｒは、ディレクトリ鍵Ｄｋｏｒ１とディレクトリＤｏｒを利用するグループＧの名称「ＧＡ」とを対応付けた情報を含む。また、特定ファイルＦｏｒは、ディレクトリ鍵Ｄｋｏｒ２とディレクトリＤｏｒを利用するグループＧの名称「ＧＢ」とを対応付けた情報を含む。また、特定ファイルＦは、ディレクトリＤｏｒを利用する情報処理装置１００が、グループＧＡとグループＧＢとのいずれかに所属する情報処理装置１００であることを示す条件情報「ｏｒ」を含む。
【００８２】
生成された第２の分散鍵や特定ファイルＦは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、送信部４０４は、作成するディレクトリＤに、ディレクトリＤ固有のディレクトリ鍵Ｄｋを格納することができる。
【００８３】
この場合、送信部４０４は、生成部４０３によって生成された第２の分散鍵といずれかのグループＧの識別情報とを関連付けた情報を、データベース１０１内のいずれかのグループＧに固有な格納場所を指定して、データベース１０１に送信する。
【００８４】
送信部４０４は、具体的には、例えば、データベース１０１が作成要求されたパスにディレクトリＤを作成して特定ファイルＦを格納するように、データベース１０１に作成要求されたパスを指定して特定ファイルＦを送信する。これにより、データベース１０１は、作成要求されたパスにディレクトリＤを作成し、作成したディレクトリＤに特定ファイルＦを格納することができる。
【００８５】
・複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合
ここで、作成されるディレクトリＤが、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤである場合を例に挙げる。この場合の作成例は図７を用いて後述する。
【００８６】
この場合、受付部４０１は、複数のグループＧの中の特定のグループＧ群のいずれのグループＧにも所属する要求元装置から、特定のグループＧ群の識別情報を含む特定のグループＧ群に関する格納場所の作成要求を受け付ける。
【００８７】
受付部４０１は、具体的には、例えば、グループＧＡとグループＧＢとに所属する要求元装置から、グループＧＡとグループＧＢとのいずれにも所属する情報処理装置１００が利用するディレクトリＤａｎｄの作成要求を受け付ける。
【００８８】
作成要求には、例えば、作成するディレクトリＤａｎｄを利用するグループＧを示す識別情報「ＧＡ」「ＧＢ」と、ディレクトリＤａｎｄを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれにも所属することを示す条件情報「ａｎｄ」と、が含まれる。また、作成要求には、ディレクトリＤａｎｄの作成先を示す作成先情報が含まれる。作成先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【００８９】
受け付けられた作成要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。
【００９０】
この場合、取得部４０２は、受付部４０１によって作成要求が受け付けられた場合、特定のグループＧ群の識別情報に関連付けられた特定のグループＧ群の各グループＧに固有な第１の分散鍵を記憶装置から取得する。
【００９１】
取得部４０２は、具体的には、例えば、グループ鍵テーブル３００のグループ名項目から、作成要求内の識別情報「ＧＡ」「ＧＢ」を探索する。次に、取得部４０２は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」と、探索した「ＧＢ」に対応付けられたグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を取得する。
【００９２】
取得されたグループ鍵Ｇｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、生成部４０３は、第１の分散鍵を用いて、第２の分散鍵を生成することができる。
【００９３】
この場合、生成部４０３は、特定のグループＧ群の各グループＧに固有な第２の分散鍵群を生成する。生成部４０３は、具体的には、例えば、作成要求されたディレクトリＤａｎｄに格納するデータｄの暗号化と復号とに使用されるデータ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」とデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」の組を生成する。
【００９４】
次に、生成部４０３は、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて暗号化する。そして、生成部４０３は、ディレクトリ鍵Ｄｋａｎｄ１になる暗号化されたデータ鍵ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を生成する。
【００９５】
また、生成部４０３は、データ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」を、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ２になる暗号化されたデータ鍵ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を生成する。
【００９６】
そして、生成部４０３は、特定ファイルＦａｎｄを生成する。特定ファイルＦａｎｄは、ディレクトリ鍵Ｄｋａｎｄ１とディレクトリＤａｎｄを利用するグループＧ群の一方の名称「ＧＡ」とを対応付けた情報を含む。また、特定ファイルＦは、ディレクトリ鍵Ｄｋａｎｄ２とディレクトリＤａｎｄを利用するグループＧ群の他方の名称「ＧＢ」とを対応付けた情報を含む。また、特定ファイルＦは、ディレクトリＤａｎｄを利用する情報処理装置１００が、グループＧＡにもグループＧＢにも所属する情報処理装置１００であることを示す条件情報「ａｎｄ」を含む。
【００９７】
生成された第２の分散鍵や特定ファイルＦは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、送信部４０４は、作成するディレクトリＤに、ディレクトリＤ固有のディレクトリ鍵Ｄｋを格納することができる。
【００９８】
この場合、送信部４０４は、生成部４０３によって生成された第２の分散鍵群と特定のグループＧ群の識別情報とを関連付けた情報を、データベース１０１内の特定のグループＧ群に固有な格納場所を指定して、データベース１０１に送信する。
【００９９】
送信部４０４は、具体的には、例えば、データベース１０１が作成要求されたパスにディレクトリＤを作成して特定ファイルＦを格納するように、データベース１０１に作成要求されたパスを指定して特定ファイルＦを送信する。これにより、データベース１０１は、作成要求されたパスにディレクトリＤを作成し、作成したディレクトリＤに特定ファイルＦを格納することができる。
【０１００】
＜データｄを暗号化してディレクトリＤに格納する機能＞
次に、情報処理装置１００が有するデータｄを暗号化してディレクトリＤに格納する機能について説明する。データｄを暗号化してディレクトリＤに格納する機能は、受付部４０１と、取得部４０２と、生成部４０３と、送信部４０４と、暗号化部４０５と、により実現される。
【０１０１】
・或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合
ここで、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合を例に挙げる。この場合の格納例は図１０を用いて後述する。
【０１０２】
この場合、受付部４０１は、複数のグループＧの中のいずれかのグループＧに所属する要求元装置から、いずれかのグループＧの識別情報を含むいずれかのグループＧに関するデータｄの格納要求を受け付ける。
【０１０３】
受付部４０１は、具体的には、例えば、グループＧＡに所属する要求元装置から、グループＧＡに所属する情報処理装置１００が利用するディレクトリＤＡへのデータｄの格納要求を受け付ける。格納要求には、例えば、格納されるデータｄが含まれる。また、格納要求には、格納先のディレクトリＤＡを利用するグループＧを示す識別情報「ＧＡ」と、格納先のディレクトリＤＡを示す格納先情報が含まれる。格納先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【０１０４】
受け付けられた格納要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの場所を指定することができる。
【０１０５】
この場合、取得部４０２は、受付部４０１によって格納要求が受け付けられた場合、いずれかのグループＧの識別情報に関連付けられたいずれかのグループＧに固有な第１の分散鍵を記憶装置から取得する。
【０１０６】
取得部４０２は、具体的には、例えば、グループ鍵テーブル３００のグループ名項目から、格納要求内の識別情報「ＧＡ」を探索する。次に、取得部４０２は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０１０７】
取得されたグループ鍵Ｇｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、生成部４０３は、第１の分散鍵と第２の分散鍵を合成することができる。
【０１０８】
この場合、取得部４０２は、複数のグループＧの各グループＧのデータｄ群を記憶するデータベース１０１から、いずれかのグループＧの識別情報に関連付けられたいずれかのグループＧに固有な第２の分散鍵を取得する。
【０１０９】
取得部４０２は、具体的には、例えば、格納要求されたディレクトリＤＡから、特定ファイルＦＡを取得する。次に、取得部４０２は、特定ファイルＦＡの中から、格納要求内の識別情報「ＧＡ」が示すグループＧＡに対応するディレクトリ鍵ＤｋＡを取得する。
【０１１０】
この場合、生成部４０３は、第１の分散鍵と取得部４０２によって取得された第２の分散鍵を合成することにより暗号鍵を生成する。生成部４０３は、具体的には、例えば、ディレクトリ鍵ＤｋＡをグループ鍵ＧｋＡを用いて復号して、データ鍵ｄｋＡを生成する。
【０１１１】
生成されたデータ鍵ｄｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、暗号化部４０５は、ディレクトリＤに格納するデータｄを暗号化することができる。
【０１１２】
この場合、暗号化部４０５は、生成部４０３によって生成された暗号鍵でデータｄを暗号化する。暗号化部４０５は、具体的には、例えば、データ鍵ｄｋを用いて、データｄを暗号化する。これにより、送信部４０４は、暗号化データＣｄを送信することができる。
【０１１３】
この場合、送信部４０４は、暗号化部４０５によって暗号化された暗号化データＣｄをデータベース１０１内の第２の分散鍵の格納場所に送信する。送信部４０４は、具体的には、例えば、データベース１０１が格納要求されたパスのディレクトリＤに、暗号化データＣｄを格納するように、データベース１０１に格納要求されたパスを指定して暗号化データＣｄを送信する。これにより、データベース１０１は、格納要求されたパスのディレクトリＤに、暗号化データＣｄを格納することができる。
【０１１４】
・複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤにデータｄを格納する場合
ここで、作成されるディレクトリＤが、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤにデータｄを格納する場合を例に挙げる。この場合の格納例は図１１を用いて後述する。
【０１１５】
この場合、受付部４０１は、複数のグループＧの中の特定のグループＧ群のいずれかのグループＧに所属する要求元装置から、いずれかのグループＧの識別情報を含む特定のグループＧ群に関するデータｄの格納要求を受け付ける。
【０１１６】
受付部４０１は、具体的には、例えば、グループＧＡとグループＧＢとに所属する要求元装置から、グループＧＡとグループＧＢとのいずれかに所属する情報処理装置１００が利用するディレクトリＤｏｒの格納要求を受け付ける。
【０１１７】
格納要求には、例えば、格納されるデータｄが含まれる。また、格納要求には、格納先のディレクトリＤｏｒを利用するグループＧを示す識別情報「ＧＡ」「ＧＢ」と、ディレクトリＤｏｒを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれかであることを示す条件情報「ｏｒ」と、が含まれる。また、格納要求には、格納先のディレクトリＤｏｒを示す格納先情報が含まれる。格納先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【０１１８】
受け付けられた格納要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの場所を指定することができる。
【０１１９】
この場合、取得部４０２は、受付部４０１によって格納要求が受け付けられた場合、いずれかのグループＧの識別情報に関連付けられたいずれかのグループＧに固有な第１の分散鍵を記憶装置から取得する。
【０１２０】
取得部４０２は、具体的には、例えば、グループ鍵テーブル３００のグループ名項目から、格納要求内の識別情報「ＧＡ」を探索する。次に、取得部４０２は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０１２１】
取得されたグループ鍵Ｇｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、生成部４０３は、第１の分散鍵と第２の分散鍵を合成することができる。
【０１２２】
この場合、取得部４０２は、複数のグループＧの各グループＧのデータｄ群を記憶するデータベース１０１から、いずれかのグループＧの識別情報に関連付けられたいずれかのグループＧに固有な第２の分散鍵を取得する。
【０１２３】
取得部４０２は、具体的には、例えば、格納要求されたディレクトリＤｏｒから、特定ファイルＦｏｒを取得する。次に、取得部４０２は、特定ファイルＦｏｒの中から、格納要求内の識別情報「ＧＡ」が示すグループＧＡに対応するディレクトリ鍵ＤｋＡを取得する。
【０１２４】
この場合、生成部４０３は、第１の分散鍵と取得部４０２によって取得された第２の分散鍵を合成することにより暗号鍵を生成する。生成部４０３は、具体的には、例えば、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて、ディレクトリ鍵Ｄｋｏｒ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を復号し、データ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０１２５】
生成されたデータ鍵ｄｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、暗号化部４０５は、ディレクトリＤに格納するデータｄを暗号化することができる。
【０１２６】
この場合、暗号化部４０５は、生成部４０３によって生成された暗号鍵でデータｄを暗号化する。暗号化部４０５は、具体的には、例えば、データ鍵ｄｋを用いて、データｄを暗号化する。これにより、送信部４０４は、暗号化データＣｄを送信することができる。
【０１２７】
この場合、送信部４０４は、暗号化部４０５によって暗号化された暗号化データＣｄをデータベース１０１内の第２の分散鍵の格納場所に送信する。送信部４０４は、具体的には、例えば、データベース１０１が格納要求されたパスのディレクトリＤに、暗号化データＣｄを格納するように、データベース１０１に格納要求されたパスを指定して暗号化データＣｄを送信する。これにより、データベース１０１は、格納要求されたパスのディレクトリＤに、暗号化データＣｄを格納することができる。
【０１２８】
・複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合
ここで、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合を例に挙げる。この場合の格納例は図１２を用いて後述する。
【０１２９】
この場合、受付部４０１は、複数のグループＧの中の特定のグループＧ群のいずれのグループＧにも所属する要求元装置から、特定のグループＧ群の識別情報を含む特定のグループＧ群に関するデータｄの格納要求を受け付ける。
【０１３０】
受付部４０１は、具体的には、例えば、グループＧＡにもグループＧＢにも所属する要求元装置から、グループＧＡとグループＧＢとのいずれにも所属する情報処理装置１００が利用するディレクトリＤａｎｄへのデータｄの格納要求を受け付ける。
【０１３１】
格納要求には、例えば、格納されるデータｄが含まれる。また、格納要求には、格納先のディレクトリＤａｎｄを利用するグループＧを示す識別情報「ＧＡ」「ＧＢ」と、ディレクトリＤａｎｄを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれにも所属することを示す条件情報「ａｎｄ」と、が含まれる。また、格納要求には、格納先のディレクトリＤａｎｄを示す格納先情報が含まれる。格納先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【０１３２】
受け付けられた格納要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの場所を指定することができる。
【０１３３】
この場合、取得部４０２は、受付部４０１によって格納要求が受け付けられた場合、特定のグループＧ群の識別情報に関連付けられた特定のグループＧ群の各グループＧに固有な第１の分散鍵を記憶装置から取得する。
【０１３４】
取得部４０２は、具体的には、例えば、グループ鍵テーブル３００のグループ名項目から、格納要求内の識別情報「ＧＡ」「ＧＢ」を探索する。次に、取得部４０２は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」と、探索した「ＧＢ」に対応付けられたグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を取得する。
【０１３５】
取得されたグループ鍵Ｇｋは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、生成部４０３は、第１の分散鍵と第２の分散鍵を合成することができる。
【０１３６】
この場合、取得部４０２は、複数のグループＧの各グループＧのデータｄ群を記憶するデータベース１０１から、特定のグループＧ群の識別情報に関連付けられた特定のグループＧ群の各グループＧに固有な第２の分散鍵を取得する。
【０１３７】
取得部４０２は、具体的には、例えば、格納要求されたディレクトリＤａｎｄから、特定ファイルＦａｎｄを取得する。次に、取得部４０２は、特定ファイルＦａｎｄから、ディレクトリ鍵Ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」と、ディレクトリ鍵Ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を取得する。
【０１３８】
この場合、生成部４０３は、第１の分散鍵と取得部４０２によって取得された第２の分散鍵を合成することにより暗号鍵を生成する。生成部４０３は、具体的には、例えば、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて、ディレクトリ鍵Ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を復号する。また、生成部４０３は、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて、ディレクトリ鍵Ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を復号する。次に、生成部４０３は、復号により、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」とデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」の組を生成する。
【０１３９】
この場合、暗号化部４０５は、生成部４０３によって生成された暗号鍵でデータｄを暗号化する。データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との組を用いて、データｄを暗号化する。暗号化部４０５は、具体的には、例えば、データｄをデータ鍵ｄｋａｎｄ１を用いて暗号化し、暗号化したデータｄをデータ鍵ｄｋａｎｄ２を用いてさらに暗号化する。また、暗号化部４０５は、具体的には、例えば、データｄをデータ鍵ｄｋａｎｄ２を用いて暗号化し、暗号化したデータｄをデータ鍵ｄｋａｎｄ１を用いてさらに暗号化してもよい。また、暗号化部４０５は、データ鍵ｄｋａｎｄ１と、データ鍵ｄｋａｎｄ２と、を合成した合成鍵を用いて、データｄを暗号化してもよい。これにより、送信部４０４は、暗号化データＣｄを送信することができる。
【０１４０】
この場合、送信部４０４は、暗号化部４０５によって暗号化された暗号化データＣｄをデータベース１０１内の第２の分散鍵の格納場所に送信する。送信部４０４は、具体的には、例えば、データベース１０１が格納要求されたパスのディレクトリＤに暗号化データＣｄを格納するように、データベース１０１に格納要求されたパスを指定して暗号化データＣｄを送信する。これにより、データベース１０１は、格納要求されたパスのディレクトリＤに、暗号化データＣｄを格納することができる。
【０１４１】
＜ディレクトリＤから暗号化データＣｄを取得して復号する機能＞
次に、情報処理装置１００が有するディレクトリＤから暗号化データＣｄを取得して復号する機能について説明する。ディレクトリＤから暗号化データＣｄを取得して復号する機能は、受付部４０１と、取得部４０２と、生成部４０３と、送信部４０４と、暗号化部４０５と、により実現される。
【０１４２】
・或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤからデータｄを取得する場合
ここで、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤからデータｄを取得する場合を例に挙げる。この場合の取得例は図１５を用いて後述する。
【０１４３】
この場合、受付部４０１は、複数のグループＧの中のいずれかのグループＧに所属する要求元装置から、いずれかのグループＧの識別情報を含むいずれかのグループＧに関するデータｄの取得要求を受け付ける。
【０１４４】
受付部４０１は、具体的には、例えば、グループＧＡに所属する要求元装置から、グループＧＡに所属する情報処理装置１００が利用するディレクトリＤＡへのデータｄの取得要求を受け付ける。取得要求には、例えば、取得先のディレクトリＤＡを利用するグループＧを示す識別情報「ＧＡ」と、取得先のディレクトリＤＡを示す取得先情報が含まれる。取得先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【０１４５】
受け付けられた取得要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの場所を指定することができる。
【０１４６】
この場合、取得部４０２および生成部４０３の機能は、上述した或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合の取得部４０２および生成部４０３の機能と同様のため、ここでは説明を省略する。
【０１４７】
この場合、暗号化部４０５は、生成部４０３によって生成された暗号鍵で暗号化データＣｄを復号する。暗号化部４０５は、具体的には、例えば、生成部４０３によって生成されたデータ鍵ｄｋＡを用いて、暗号化データＣｄを復号する。復号されたデータｄは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、送信部４０４は、復号されたデータｄを要求元装置に送信することができる。
【０１４８】
この場合、送信部４０４は、暗号化部４０５によって復号されたデータｄを要求元装置に送信する。これにより、要求元装置は、復号されたデータｄを利用することができる。
【０１４９】
・複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤからデータｄを取得する場合
ここで、作成されるディレクトリＤが、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤからデータｄを取得する場合を例に挙げる。この場合の取得例は図１６を用いて後述する。
【０１５０】
この場合、受付部４０１は、複数のグループＧの中の特定のグループＧ群のいずれかのグループＧに所属する要求元装置から、いずれかのグループＧの識別情報を含む特定のグループＧ群に関するデータｄの取得要求を受け付ける。
【０１５１】
受付部４０１は、具体的には、例えば、グループＧＡとグループＧＢとに所属する要求元装置から、グループＧＡとグループＧＢとのいずれかに所属する情報処理装置１００が利用するディレクトリＤｏｒの取得要求を受け付ける。
【０１５２】
取得要求には、例えば、取得先のディレクトリＤｏｒを利用するグループＧを示す識別情報「ＧＡ」「ＧＢ」と、ディレクトリＤｏｒを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれかであることを示す条件情報「ｏｒ」と、が含まれる。また、取得要求には、取得先のディレクトリＤｏｒを示す取得先情報が含まれる。取得先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【０１５３】
受け付けられた取得要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの場所を指定することができる。
【０１５４】
この場合、取得部４０２および生成部４０３の機能は、上述した複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤにデータｄを格納する場合の取得部４０２および生成部４０３の機能と同様のため説明を省略する。
【０１５５】
この場合、暗号化部４０５は、生成部４０３によって生成された暗号鍵で暗号化データＣｄを復号する。暗号化部４０５は、具体的には、例えば、生成部４０３によって生成されたデータ鍵ｄｋＡを用いて、暗号化データＣｄを復号する。復号されたデータｄは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、送信部４０４は、復号されたデータｄを要求元装置に送信することができる。
【０１５６】
この場合、送信部４０４は、暗号化部４０５によって復号されたデータｄを要求元装置に送信する。これにより、要求元装置は、復号されたデータｄを利用することができる。
【０１５７】
・複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤからデータｄを取得する場合
ここで、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄからデータｄを取得する場合を例に挙げる。この場合の取得例は図１７を用いて後述する。
【０１５８】
この場合、受付部４０１は、複数のグループＧの中の特定のグループＧ群のいずれのグループＧにも所属する要求元装置から、特定のグループＧ群の識別情報を含む特定のグループＧ群に関するデータｄの取得要求を受け付ける。
【０１５９】
受付部４０１は、具体的には、例えば、グループＧＡにもグループＧＢにも所属する要求元装置から、グループＧＡとグループＧＢとのいずれにも所属する情報処理装置１００が利用するディレクトリＤａｎｄへのデータｄの取得要求を受け付ける。
【０１６０】
取得要求には、例えば、取得先のディレクトリＤａｎｄを利用するグループＧを示す識別情報「ＧＡ」「ＧＢ」と、ディレクトリＤａｎｄを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれにも所属することを示す条件情報「ａｎｄ」と、が含まれる。また、取得要求には、取得先のディレクトリＤａｎｄを示す取得先情報が含まれる。取得先情報とは、例えば、データベース１０１内の或る階層を示すパスである。
【０１６１】
受け付けられた取得要求は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、取得部４０２は、第１の分散鍵の取得のトリガを得ることができる。また、送信部４０４は、ディレクトリＤの場所を指定することができる。
【０１６２】
この場合、取得部４０２および生成部４０３は、上述した複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合の取得部４０２および生成部４０３の機能と同様のため説明を省略する。
【０１６３】
この場合、暗号化部４０５は、生成部４０３によって生成された暗号鍵で暗号化データＣｄを復号する。暗号化部４０５は、具体的には、例えば、生成部４０３によって生成されたデータ鍵ｄｋＡの組を用いて、暗号化データＣｄを復号する。復号されたデータｄは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、送信部４０４は、復号されたデータｄを要求元装置に送信することができる。
【０１６４】
この場合、送信部４０４は、暗号化部４０５によって復号されたデータｄを要求元装置に送信する。これにより、要求元装置は、復号されたデータｄを利用することができる。
【０１６５】
（ディレクトリＤの作成例）
次に、図５〜７を用いて、情報処理装置１００によるディレクトリＤの作成例について説明する。まず、図５を用いて、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合の作成例１について説明する。
【０１６６】
図５は、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合の作成例１を示す説明図である。図５の例では、グループＧＡに所属する情報処理装置１００Ａ１が、グループＧＡに所属する情報処理装置１００が利用するディレクトリＤＡを作成する。
【０１６７】
図５に示すように、（２１）情報処理装置１００Ａ１は、ディレクトリＤＡの作成要求を受け付けると、作成要求されたディレクトリＤＡを作成するように、データベース１０１に作成依頼を送信する。これにより、データベース１０１は、ディレクトリＤＡを作成する。
【０１６８】
（２２）次に、情報処理装置１００Ａ１は、ディレクトリＤＡに格納するデータｄの暗号化と復号とに使用されるデータ鍵ｄｋＡ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０１６９】
（２３）そして、情報処理装置１００Ａ１は、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤＡを利用するグループＧＡの名称「ＧＡ」を探索する。情報処理装置１００Ａ１は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０１７０】
次に、情報処理装置１００Ａ１は、データ鍵ｄｋＡ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて暗号化する。そして、情報処理装置１００Ａ１は、ディレクトリ鍵ＤｋＡになる暗号化されたデータ鍵ｄｋＡ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を生成する。
【０１７１】
（２４）次に、情報処理装置１００Ａ１は、生成したディレクトリ鍵ＤｋＡとディレクトリＤＡを利用するグループＧの名称「ＧＡ」とを対応付けた特定ファイルＦＡをディレクトリＤＡに格納するように、データベース１０１に格納依頼を送信する。これにより、データベース１０１は、ディレクトリＤＡに特定ファイルＦＡを格納する。
【０１７２】
これにより、グループＧＡに所属する情報処理装置１００は、特定ファイルＦＡ内のディレクトリ鍵ＤｋＡと、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋＡを生成することができる。そのため、グループＧＡに所属する情報処理装置１００は、データ鍵ｄｋＡを用いて、ディレクトリＤＡにデータｄを暗号化して格納し、ディレクトリＤＡから暗号化データＣｄを取得して復号することができる。
【０１７３】
一方、グループＧＡに所属しない情報処理装置１００は、特定ファイルＦＡ内のディレクトリ鍵ＤｋＡを取得しても、グループＧＡに固有なグループ鍵ＧｋＡを有していないため、データ鍵ｄｋＡを合成することができない。そのため、グループＧＡに所属しない情報処理装置１００は、データ鍵ｄｋＡがないため、ディレクトリＤＡに格納するデータｄを暗号化することができず、ディレクトリＤＡから暗号化データＣｄを取得して復号することができない。
【０１７４】
結果として、ディレクトリＤＡは、グループＧＡに所属する情報処理装置１００から利用可能、かつ、グループＧＡに所属しない情報処理装置１００から利用不可能なディレクトリＤになる。また、ディレクトリＤＡには、ディレクトリ鍵ＤｋＡが格納されるが、データ鍵ｄｋＡは格納されていない。そのため、データ鍵ｄｋＡの漏洩を防止することができ、セキュリティを担保することができる。
【０１７５】
次に、図６を用いて、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤを作成する場合の作成例２について説明する。
【０１７６】
図６は、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤを作成する場合の作成例２を示す説明図である。図６の例では、グループＧＡにもグループＧＢにも所属する情報処理装置１００ＡＢが、グループＧＡに所属する情報処理装置１００からもグループＧＢに所属する情報処理装置１００からも利用するディレクトリＤｏｒを作成する。
【０１７７】
図６に示すように、（３１）情報処理装置１００ＡＢは、ディレクトリＤｏｒの作成要求を受け付けると、作成要求されたディレクトリＤｏｒを作成するように、データベース１０１に作成依頼を送信する。これにより、データベース１０１は、ディレクトリＤｏｒを作成する。
【０１７８】
（３２）次に、情報処理装置１００ＡＢは、ディレクトリＤｏｒに格納するデータｄの暗号化と復号とに使用されるデータ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０１７９】
（３３）そして、情報処理装置１００ＡＢは、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤｏｒを利用する一方のグループＧＡの名称「ＧＡ」を探索する。情報処理装置１００ＡＢは、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０１８０】
次に、情報処理装置１００ＡＢは、データ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋｏｒ１になる暗号化されたデータ鍵ｄｋｏｒ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を生成する。
【０１８１】
（３４）また、情報処理装置１００ＡＢは、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤｏｒを利用する他方のグループＧＢの名称「ＧＢ」を探索する。情報処理装置１００ＡＢは、探索した「ＧＢ」に対応付けられたグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を取得する。
【０１８２】
次に、情報処理装置１００ＡＢは、データ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋｏｒ２になる暗号化されたデータ鍵ｄｋｏｒ「９９ＡＡ５６Ａ３Ｅ５ＤＤ３Ａ２」を生成する。
【０１８３】
このように、情報処理装置１００ＡＢは、（３３）と（３４）とにおいて、ディレクトリＤｏｒを共用するグループＧＡとグループＧＢとの各々に対応するグループ鍵Ｇｋを用いて、同一のデータ鍵ｄｋｏｒを暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋｏｒ１とディレクトリ鍵Ｄｋｏｒ２とを生成する。
【０１８４】
（３５）次に、情報処理装置１００ＡＢは、特定ファイルＦｏｒを生成する。特定ファイルＦｏｒは、ディレクトリ鍵Ｄｋｏｒ１とディレクトリＤｏｒを利用するグループＧの名称「ＧＡ」とを対応付けた情報を含む。また、特定ファイルＦｏｒは、ディレクトリ鍵Ｄｋｏｒ２とディレクトリＤｏｒを利用するグループＧの名称「ＧＢ」とを対応付けた情報を含む。また、特定ファイルＦは、ディレクトリＤｏｒを利用する情報処理装置１００が、グループＧＡとグループＧＢとのいずれかに所属する情報処理装置１００であることを示す条件情報「ｏｒ」を含む。
【０１８５】
そして、情報処理装置１００ＡＢは、生成した特定ファイルＦｏｒをディレクトリＤｏｒに格納するように、データベース１０１に格納依頼を送信する。これにより、データベース１０１は、ディレクトリＤｏｒに特定ファイルＦｏｒを格納する。
【０１８６】
これにより、グループＧＡに所属する情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ１と、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋｏｒを生成することができる。また、グループＧＢに所属する情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ２と、グループＧＢに固有なグループ鍵ＧｋＢと、を合成して、データ鍵ｄｋｏｒを生成することができる。
【０１８７】
そのため、グループＧＡまたはグループＧＢに所属する情報処理装置１００は、データ鍵ｄｋｏｒを用いて、ディレクトリＤｏｒにデータｄを暗号化して格納し、ディレクトリＤｏｒから暗号化データＣｄを取得して復号することができる。
【０１８８】
一方、グループＧＡにもグループＧＢにも所属しない情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ１やディレクトリ鍵Ｄｋｏｒ２を取得しても、データ鍵ｄｋｏｒを合成することができない。そのため、グループＧＡにもグループＧＢにも所属しない情報処理装置１００は、データ鍵ｄｋｏｒがないため、ディレクトリＤｏｒに格納するデータｄを暗号化することができず、ディレクトリＤｏｒから暗号化データＣｄを取得して復号することができない。
【０１８９】
結果として、ディレクトリＤｏｒは、グループＧＡまたはグループＧＢに所属する情報処理装置１００から利用可能、かつ、グループＧＡにもグループＧＢにも所属しない情報処理装置１００から利用不可能なディレクトリＤになる。また、ディレクトリＤｏｒには、ディレクトリ鍵Ｄｋｏｒ１やディレクトリ鍵Ｄｋｏｒ２が格納されるが、データ鍵ｄｋｏｒは格納されていない。そのため、データ鍵ｄｋｏｒの漏洩を防止することができ、セキュリティを担保することができる。
【０１９０】
次に、図７を用いて、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合の作成例３について説明する。
【０１９１】
図７は、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤを作成する場合の作成例３を示す説明図である。図７の例では、グループＧＡにもグループＧＢにも所属する情報処理装置１００ＡＢが、グループＧＡにもグループＧＢにも所属する情報処理装置１００から利用するディレクトリＤａｎｄを作成する。
【０１９２】
図７に示すように、（４１）情報処理装置１００ＡＢは、ディレクトリＤａｎｄの作成要求を受け付けると、作成要求されたディレクトリＤａｎｄを作成するように、データベース１０１に作成依頼を送信する。これにより、データベース１０１は、ディレクトリＤａｎｄを作成する。
【０１９３】
（４２）次に、情報処理装置１００ＡＢは、ディレクトリＤａｎｄに格納するデータｄの暗号化と復号とに使用されるデータ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」とデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」の組を生成する。
【０１９４】
（４３）そして、情報処理装置１００ＡＢは、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤａｎｄを利用するグループＧ群の一方のグループＧＡの名称「ＧＡ」を探索する。次に、情報処理装置１００ＡＢは、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０１９５】
そして、情報処理装置１００ＡＢは、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ１になる暗号化されたデータ鍵ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を生成する。
【０１９６】
（４４）また、情報処理装置１００ＡＢは、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤａｎｄを利用するグループＧ群の他方のグループＧＢの名称「ＧＢ」を探索する。次に、情報処理装置１００ＡＢは、探索した「ＧＢ」に対応付けられたグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を取得する。
【０１９７】
そして、情報処理装置１００ＡＢは、データ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」を、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ２になる暗号化されたデータ鍵ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を生成する。
【０１９８】
このように、情報処理装置１００ＡＢは、（４３）と（４４）とにおいて、ディレクトリＤａｎｄを利用するグループＧ群の各々に対応するグループ鍵Ｇｋを用いて、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２とを暗号化する。そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ１とディレクトリ鍵Ｄｋａｎｄ２とを生成する。
【０１９９】
（４５）次に、情報処理装置１００ＡＢは、特定ファイルＦａｎｄを生成する。特定ファイルＦａｎｄは、ディレクトリ鍵Ｄｋａｎｄ１とディレクトリＤａｎｄを利用するグループＧ群の一方の名称「ＧＡ」とを対応付けた情報を含む。また、特定ファイルＦは、ディレクトリ鍵Ｄｋａｎｄ２とディレクトリＤａｎｄを利用するグループＧ群の他方の名称「ＧＢ」とを対応付けた情報を含む。また、特定ファイルＦは、ディレクトリＤａｎｄを利用する情報処理装置１００が、グループＧＡにもグループＧＢにも所属する情報処理装置１００であることを示す条件情報「ａｎｄ」を含む。
【０２００】
（４６）そして、情報処理装置１００ＡＢは、生成した特定ファイルＦをディレクトリＤａｎｄに格納するように、データベース１０１に格納依頼を送信する。これにより、データベース１０１は、ディレクトリＤａｎｄに特定ファイルＦａｎｄを格納する。
【０２０１】
これにより、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ１と、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋａｎｄ１を生成することができる。また、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ２と、グループＧＢに固有なグループ鍵ＧｋＢと、を合成して、データ鍵ｄｋａｎｄ２を生成することができる。
【０２０２】
そのため、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２とを用いて、ディレクトリＤａｎｄにデータｄを暗号化して格納することができる。また、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２とを用いて、ディレクトリＤａｎｄから暗号化データＣｄを取得して復号することができる。
【０２０３】
一方、グループＧＡに所属しない情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ１を取得しても、データ鍵ｄｋａｎｄ１を合成することができない。また、グループＧＢに所属しない情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ２を取得しても、データ鍵ｄｋａｎｄ２を合成することができない。
【０２０４】
そのため、グループＧＡとグループＧＢとのいずれかに所属しない情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との少なくとも一方がないため、ディレクトリＤａｎｄに格納するデータｄを暗号化することができない。同様に、グループＧＡとグループＧＢとのいずれかに所属しない情報処理装置１００は、ディレクトリＤａｎｄから暗号化データＣｄを取得しても、復号することができない。
【０２０５】
結果として、ディレクトリＤａｎｄは、グループＧＡにもグループＧＢにも所属する情報処理装置１００から利用可能、かつ、グループＧＡとグループＧＢとのいずれかに所属しない情報処理装置１００から利用不可能なディレクトリＤになる。また、ディレクトリＤａｎｄには、ディレクトリ鍵Ｄｋａｎｄ１やディレクトリ鍵Ｄｋａｎｄ２が格納されるが、データ鍵ｄｋａｎｄ１やデータ鍵ｄｋａｎｄ２は格納されていない。そのため、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との漏洩を防止することができ、セキュリティを担保することができる。
【０２０６】
情報処理装置１００は、作成したディレクトリＤの下位に、さらに新たなディレクトリＤを作成してもよい。ここで、情報処理装置１００は、新たな特定ファイルＦを作成して新たなディレクトリＤに格納してもよい。また、情報処理装置１００は、新たなディレクトリＤでは、上位のディレクトリＤにある特定ファイルＦを流用するとして、新たなディレクトリＤには特定ファイルＦを格納しなくてもよい。
【０２０７】
（ディレクトリ作成処理）
次に、図８を用いて、情報処理装置１００によるディレクトリ作成処理の詳細な処理手順について説明する。ディレクトリ作成処理は、図５〜図７に示した作成例１〜作成例３における情報処理装置１００の処理である。
【０２０８】
図８は、情報処理装置１００によるディレクトリ作成処理の詳細な処理手順を示すフローチャートである。図８に示すように、まず、情報処理装置１００は、作成要求が入力されたか否かを判定する（ステップＳ８０１）。ここで、作成要求が入力されていない場合（ステップＳ８０１：Ｎｏ）、情報処理装置１００は、ステップＳ８０１に戻り、作成要求の入力を待つ。
【０２０９】
一方、作成要求が入力された場合（ステップＳ８０１：Ｙｅｓ）、情報処理装置１００は、作成要求されたパスにディレクトリＤを作成するように作成依頼をデータベース１０１に送信する（ステップＳ８０２）。
【０２１０】
次に、情報処理装置１００は、特定ファイルＦを作成するか否かを判定する（ステップＳ８０３）。ここで、特定ファイルＦを作成しない場合（ステップＳ８０３：Ｎｏ）、情報処理装置１００は、ディレクトリ作成処理を終了する。
【０２１１】
一方、特定ファイルＦを作成する場合（ステップＳ８０３：Ｙｅｓ）、情報処理装置１００は、図９に示す特定ファイル作成処理を実行する（ステップＳ８０４）。次に、情報処理装置１００は、特定ファイル作成処理により作成された特定ファイルＦを、ステップＳ８０２の作成依頼により作成されたディレクトリＤに格納するように格納依頼をデータベース１０１に送信する（ステップＳ８０５）。
【０２１２】
そして、情報処理装置１００は、ディレクトリ作成処理を終了する。これにより、情報処理装置１００は、利用可能なグループＧが特定されたディレクトリＤを作成することができる。
【０２１３】
（特定ファイル作成処理）
次に、図９を用いて、特定ファイル作成処理の詳細な処理手順について説明する。特定ファイル作成処理は、図８のステップＳ８０４に示した処理である。
【０２１４】
図９は、特定ファイル作成処理の詳細な処理手順を示すフローチャートである。図９に示すように、情報処理装置１００は、作成要求の中から、ディレクトリＤを利用するグループＧを示す識別情報を取得し、グループ鍵テーブル３００の中から、識別情報が示すグループＧに対応するグループ鍵Ｇｋを取得する（ステップＳ９０１）。
【０２１５】
次に、情報処理装置１００は、データ鍵ｄｋを生成する（ステップＳ９０２）。そして、情報処理装置１００は、識別情報に従って、グループ鍵Ｇｋを用いてデータ鍵ｄｋを暗号化する（ステップＳ９０３）。
【０２１６】
次に、情報処理装置１００は、暗号化により得られたディレクトリ鍵Ｄｋと識別情報とを対応付けた情報を含む特定ファイルＦを作成する（ステップＳ９０４）。そして、情報処理装置１００は、特定ファイル作成処理を終了する。これにより、情報処理装置１００は、特定ファイルＦを、ディレクトリＤに格納することができる。
【０２１７】
（ディレクトリＤへのデータｄの格納例）
次に、図１０〜１２を用いて、情報処理装置１００によるディレクトリＤへのデータｄの格納例について説明する。まず、図１０を用いて、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤへとデータｄを格納する場合の格納例１について説明する。
【０２１８】
図１０は、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤへとデータｄを格納する場合の格納例１を示す説明図である。図１０の例では、グループＧＡに所属する情報処理装置１００Ａ１が、グループＧＡに所属する情報処理装置１００が利用するディレクトリＤＡへとデータｄＡを格納する。
【０２１９】
図１０に示すように、（５１）情報処理装置１００Ａ１は、データｄＡの格納要求を受け付ける。格納要求には、データｄＡを格納するディレクトリＤＡを示すパスが含まれる。
【０２２０】
（５２）次に、情報処理装置１００Ａ１は、格納要求内のパスが示すディレクトリＤＡから、特定ファイルＦＡを取得する。そして、情報処理装置１００Ａ１は、特定ファイルＦＡから、ディレクトリＤＡを利用するグループＧＡを示す名称「ＧＡ」と、識別情報「ＧＡ」に対応付けられたディレクトリ鍵ＤｋＡ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」と、を取得する。
【０２２１】
（５３）次に、情報処理装置１００Ａ１は、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤＡを利用するグループＧＡの名称「ＧＡ」を探索する。情報処理装置１００Ａ１は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０２２２】
次に、情報処理装置１００Ａ１は、ディレクトリ鍵ＤｋＡ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて復号する。そして、情報処理装置１００Ａ１は、復号により、データ鍵ｄｋＡ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０２２３】
（５４）次に、情報処理装置１００Ａ１は、生成したデータ鍵ｄｋＡを用いて、格納要求されたデータｄＡを暗号化し、暗号化データＣｄＡを生成する。
【０２２４】
（５５）そして、情報処理装置１００Ａ１は、暗号化データＣｄＡをディレクトリＤＡに格納するように、データベース１０１に格納依頼を送信する。これにより、データベース１０１は、ディレクトリＤＡに暗号化データＣｄＡを格納する。
【０２２５】
これにより、グループＧＡに所属する情報処理装置１００は、特定ファイルＦＡ内のディレクトリ鍵ＤｋＡと、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋＡを生成することができる。そのため、グループＧＡに所属する情報処理装置１００は、データ鍵ｄｋＡを用いて、ディレクトリＤＡにデータｄを暗号化して格納することができる。
【０２２６】
一方、グループＧＡに所属しない情報処理装置１００は、特定ファイルＦＡ内のディレクトリ鍵ＤｋＡを取得しても、グループＧＡに固有なグループ鍵ＧｋＡを有していないため、データ鍵ｄｋＡを合成することができない。そのため、グループＧＡに所属しない情報処理装置１００は、データ鍵ｄｋＡがないため、ディレクトリＤＡに格納するデータｄを暗号化することができない。
【０２２７】
次に、図１１を用いて、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤへとデータｄを格納する場合の格納例２について説明する。
【０２２８】
図１１は、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤへとデータｄを格納する場合の格納例２を示す説明図である。図１１の例では、グループＧＡに所属する情報処理装置１００Ａ１が、グループＧＡに所属する情報処理装置１００からもグループＧＢに所属する情報処理装置１００からも利用するディレクトリＤｏｒへとデータｄｏｒを格納する。
【０２２９】
図１１に示すように、（６１）情報処理装置１００Ａ１は、データｄｏｒの格納要求を受け付ける。格納要求には、データｄｏｒを格納するディレクトリＤｏｒを示すパスが含まれる。
【０２３０】
（６２）次に、情報処理装置１００Ａ１は、格納要求内のパスが示すディレクトリＤｏｒから、特定ファイルＦｏｒを取得する。そして、情報処理装置１００Ａ１は、特定ファイルＦｏｒから、ディレクトリＤｏｒを利用するグループＧＡを示す名称「ＧＡ」と、識別情報「ＧＡ」に対応付けられたディレクトリ鍵Ｄｋｏｒ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を取得する。
【０２３１】
また、情報処理装置１００Ａ１は、特定ファイルＦｏｒから、ディレクトリＤｏｒを利用するグループＧＢを示す名称「ＧＢ」と、識別情報「ＧＢ」に対応付けられたディレクトリ鍵Ｄｋｏｒ２「９９ＡＡ５６Ａ３Ｅ５ＤＤ３Ａ２」を取得する。また、情報処理装置１００Ａ１は、特定ファイルＦｏｒから、ディレクトリＤｏｒを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれかに所属する情報処理装置１００であることを示す条件情報「ｏｒ」を取得する。
【０２３２】
（６３）次に、情報処理装置１００Ａ１は、条件情報「ｏｒ」を用いて、ディレクトリＤｏｒを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれかに所属すればよいと判定する。換言すれば、情報処理装置１００Ａ１は、グループＧＡとグループＧＢとのいずれかに対応するグループ鍵Ｇｋがあれば、データ鍵ｄｋｏｒを生成することができ、データｄｏｒを暗号化することができると判定する。そして、情報処理装置１００Ａ１は、グループＧＡとグループＧＢとのいずれかに対応するグループ鍵Ｇｋを取得する。
【０２３３】
情報処理装置１００Ａ１は、例えば、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤｏｒを利用する一方のグループＧＡの名称「ＧＡ」を探索する。情報処理装置１００Ａ１は、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０２３４】
次に、情報処理装置１００Ａ１は、グループＧＡに対応するディレクトリ鍵Ｄｋｏｒ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて復号する。そして、情報処理装置１００Ａ１は、復号により、データ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０２３５】
（６４）次に、情報処理装置１００Ａ１は、生成したデータ鍵ｄｋｏｒを用いて、格納要求されたデータｄｏｒを暗号化し、暗号化データＣｄｏｒを生成する。
【０２３６】
（６５）そして、情報処理装置１００Ａ１は、暗号化データＣｄｏｒをディレクトリＤｏｒに格納するように、データベース１０１に格納依頼を送信する。これにより、データベース１０１は、ディレクトリＤｏｒに暗号化データＣｄｏｒを格納する。
【０２３７】
これにより、グループＧＡに所属する情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ１と、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋｏｒを生成することができる。また、グループＧＢに所属する情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ２と、グループＧＢに固有なグループ鍵ＧｋＢと、を合成して、データ鍵ｄｋｏｒを生成することができる。そのため、グループＧＡまたはグループＧＢに所属する情報処理装置１００は、データ鍵ｄｋｏｒを用いて、ディレクトリＤｏｒにデータｄを暗号化して格納することができる。
【０２３８】
一方、グループＧＡにもグループＧＢにも所属しない情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ１やディレクトリ鍵Ｄｋｏｒ２を取得しても、データ鍵ｄｋｏｒを合成することができない。そのため、グループＧＡにもグループＧＢにも所属しない情報処理装置１００は、データ鍵ｄｋｏｒがないため、ディレクトリＤｏｒに格納するデータｄを暗号化することができない。
【０２３９】
次に、図１２を用いて、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合の格納例３について説明する。
【０２４０】
図１２は、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤにデータｄを格納する場合の格納例３を示す説明図である。図１２の例では、グループＧＡにもグループＧＢにも所属する情報処理装置１００ＡＢが、グループＧＡにもグループＧＢにも所属する情報処理装置１００から利用するディレクトリＤａｎｄへとデータｄａｎｄを格納する。
【０２４１】
図１２に示すように、（７１）情報処理装置１００ＡＢは、データｄａｎｄの格納要求を受け付ける。格納要求には、データｄａｎｄを格納するディレクトリＤａｎｄを示すパスが含まれる。
【０２４２】
（７２）次に、情報処理装置１００ＡＢは、格納要求内のパスが示すディレクトリＤａｎｄから、特定ファイルＦａｎｄを取得する。そして、情報処理装置１００ＡＢは、特定ファイルＦａｎｄから、ディレクトリＤａｎｄを利用するグループＧＡを示す名称「ＧＡ」と、識別情報「ＧＡ」に対応付けられたディレクトリ鍵Ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を取得する。
【０２４３】
また、情報処理装置１００ＡＢは、特定ファイルＦａｎｄから、ディレクトリＤａｎｄを利用するグループＧＢを示す名称「ＧＢ」と、識別情報「ＧＢ」に対応付けられたディレクトリ鍵Ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を取得する。また、情報処理装置１００ＡＢは、特定ファイルＦａｎｄから、ディレクトリＤａｎｄを利用する情報処理装置１００がグループＧＡにもグループＧＢにも所属する情報処理装置１００であることを示す条件情報「ａｎｄ」を取得する。
【０２４４】
（７３）次に、情報処理装置１００ＡＢは、条件情報「ａｎｄ」を用いて、ディレクトリＤａｎｄを利用する情報処理装置１００がグループＧＡにもグループＧＢにも所属すればよいと判定する。換言すれば、情報処理装置１００ＡＢは、グループＧＡとグループＧＢとの各々に対応するグループ鍵Ｇｋがあれば、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２の組を生成することができ、データｄａｎｄを暗号化することができると判定する。そして、情報処理装置１００ＡＢは、グループＧＡとグループＧＢとの各々に対応するグループ鍵Ｇｋを取得する。
【０２４５】
次に、情報処理装置１００ＡＢは、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤａｎｄを利用するグループＧ群の一方のグループＧＡの名称「ＧＡ」を探索する。次に、情報処理装置１００ＡＢは、探索した「ＧＡ」に対応付けられたグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。
【０２４６】
そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて復号する。そして、情報処理装置１００ＡＢは、復号により、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０２４７】
また、情報処理装置１００ＡＢは、グループ鍵テーブル３００のグループ名項目から、ディレクトリＤａｎｄを利用するグループＧ群の他方のグループＧＢの名称「ＧＢ」を探索する。次に、情報処理装置１００ＡＢは、探索した「ＧＢ」に対応付けられたグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を取得する。
【０２４８】
そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて復号する。そして、情報処理装置１００ＡＢは、復号により、データ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」を生成する。
【０２４９】
（７４）次に、情報処理装置１００ＡＢは、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」とデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」の組を用いて、データｄａｎｄを暗号化し、暗号化データＣｄａｎｄを生成する。情報処理装置１００ＡＢは、例えば、データｄａｎｄをデータ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を用いて暗号化し、暗号化されたデータｄａｎｄをデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」を用いてさらに暗号化する。
【０２５０】
（７５）そして、情報処理装置１００ＡＢは、暗号化データＣｄａｎｄをディレクトリＤａｎｄに格納するように、データベース１０１に格納依頼を送信する。これにより、データベース１０１は、ディレクトリＤａｎｄに暗号化データＣｄａｎｄを格納する。
【０２５１】
これにより、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ１と、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋａｎｄ１を生成することができる。また、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ２と、グループＧＢに固有なグループ鍵ＧｋＢと、を合成して、データ鍵ｄｋａｎｄ２を生成することができる。
【０２５２】
そのため、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との組を用いて、ディレクトリＤａｎｄにデータｄを暗号化して格納することができる。
【０２５３】
一方、グループＧＡに所属しない情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ１を取得しても、データ鍵ｄｋａｎｄ１を合成することができない。また、グループＧＢに所属しない情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ２を取得しても、データ鍵ｄｋａｎｄ２を合成することができない。
【０２５４】
そのため、グループＧＡとグループＧＢとのいずれかに所属しない情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との少なくとも一方がないため、ディレクトリＤａｎｄに格納するデータｄを暗号化することができない。
【０２５５】
情報処理装置１００は、格納要求内のパスが示すディレクトリＤに特定ファイルＦがない場合、上位のディレクトリＤにある特定ファイルＦを流用してもよい。この場合、情報処理装置１００は、上位のディレクトリＤにある特定ファイルＦ内のディレクトリ鍵Ｄｋを用いてデータ鍵ｄｋを生成し、データｄを暗号化することになる。
【０２５６】
情報処理装置１００は、データｄを暗号化すると共に、データｄに付与された識別名を暗号化してもよい。データｄに付与された識別名とは、いわゆるファイル名である。これにより、情報処理装置１００は、セキュリティを担保することができる。
【０２５７】
（データ格納処理）
次に、図１３を用いて、情報処理装置１００によるデータ格納処理の詳細な処理手順について説明する。データ格納処理は、図１０〜図１２に示した格納例１〜格納例３における情報処理装置１００の処理である。
【０２５８】
図１３は、情報処理装置１００によるデータ格納処理の詳細な処理手順を示すフローチャートである。図１３に示すように、まず、情報処理装置１００は、格納要求が入力されたか否かを判定する（ステップＳ１３０１）。ここで、格納要求が入力されていない場合（ステップＳ１３０１：Ｎｏ）、情報処理装置１００は、ステップＳ１３０１に戻り、格納要求の入力を待つ。
【０２５９】
一方、格納要求が入力された場合（ステップＳ１３０１：Ｙｅｓ）、情報処理装置１００は、格納要求されたパスにあるディレクトリＤから特定ファイルＦを取得する（ステップＳ１３０２）。次に、情報処理装置１００は、特定ファイルＦが取得できたか否かを判定する（ステップＳ１３０３）。
【０２６０】
ここで、特定ファイルＦが取得できなかった場合（ステップＳ１３０３：Ｎｏ）、情報処理装置１００は、上位ディレクトリＤがあるか否かを判定する（ステップＳ１３０４）。ここで、上位ディレクトリＤがある場合（ステップＳ１３０４：Ｙｅｓ）、情報処理装置１００は、ステップＳ１３０２に戻る。一方、上位ディレクトリＤがない場合（ステップＳ１３０４：Ｎｏ）、情報処理装置１００は、ステップＳ１３０８に移行する。
【０２６１】
一方、ステップＳ１３０３において、特定ファイルＦが取得できた場合（ステップＳ１３０３：Ｙｅｓ）、情報処理装置１００は、図１４に示すデータ鍵合成処理を実行する（ステップＳ１３０５）。
【０２６２】
次に、情報処理装置１００は、データ鍵合成処理により、データ鍵ｄｋが合成できたか否かを判定する（ステップＳ１３０６）。ここで、データ鍵ｄｋが合成できなかった場合（ステップＳ１３０６：Ｎｏ）、情報処理装置１００は、ステップＳ１３０８に移行する。
【０２６３】
一方、データ鍵ｄｋが合成できた場合（ステップＳ１３０６：Ｙｅｓ）、情報処理装置１００は、合成したデータ鍵ｄｋを用いて、格納要求されたデータｄを暗号化する（ステップＳ１３０７）。次に、情報処理装置１００は、ステップＳ１３０８に移行する。
【０２６４】
ステップＳ１３０８において、情報処理装置１００は、データｄを格納する格納依頼をデータベース１０１に送信する（ステップＳ１３０８）。次に、情報処理装置１００は、データ格納処理を終了する。これにより、データベース１０１は、ディレクトリＤに暗号化データＣｄを格納することができる。
【０２６５】
（データ鍵合成処理）
次に、図１４を用いて、データ鍵合成処理の詳細な処理手順について説明する。データ鍵合成処理は、図１３のステップＳ１３０５に示した処理である。
【０２６６】
図１４は、データ鍵合成処理の詳細な処理手順を示すフローチャートである。図１４に示すように、まず、情報処理装置１００は、特定ファイルＦ内の条件情報と、グループ鍵テーブル３００とを比較する（ステップＳ１４０１）。
【０２６７】
次に、情報処理装置１００は、条件情報が示すグループＧに対応するグループ鍵Ｇｋが、グループ鍵テーブル３００に格納されているか否かを判定する（ステップＳ１４０２）。ここで、格納されていない場合（ステップＳ１４０２：Ｎｏ）、情報処理装置１００は、データ鍵合成処理を終了する。
【０２６８】
一方、格納されている場合（ステップＳ１４０２：Ｙｅｓ）、情報処理装置１００は、条件情報に従ってグループ鍵Ｇｋを取得する（ステップＳ１４０３）。次に、情報処理装置１００は、取得したグループ鍵Ｇｋを用いて、特定ファイルＦ内のディレクトリ鍵Ｄｋを復号し、復号によりデータ鍵ｄｋを生成する（ステップＳ１４０４）。
【０２６９】
そして、情報処理装置１００は、データ鍵合成処理を終了する。これにより、情報処理装置１００は、データ鍵ｄｋを用いて、データｄを暗号化することができる。
【０２７０】
（ディレクトリＤのデータｄの取得例）
次に、図１５〜１７を用いて、情報処理装置１００によるディレクトリＤのデータｄの取得例について説明する。まず、図１５を用いて、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤのデータｄを取得する場合の取得例１について説明する。
【０２７１】
図１５は、或るグループＧに所属する情報処理装置１００から利用可能なディレクトリＤのデータｄを取得する場合の取得例１を示す説明図である。図１５の例では、グループＧＡに所属する情報処理装置１００Ａ１が、グループＧＡに所属する情報処理装置１００が利用するディレクトリＤＡのデータｄＡを取得する。
【０２７２】
図１５に示すように、（８１）情報処理装置１００Ａ１は、データｄＡの取得要求を受け付ける。取得要求には、データｄＡを取得するディレクトリＤＡを示すパスが含まれる。次に、情報処理装置１００Ａ１は、取得要求内のパスが示すディレクトリＤＡから、暗号化されたデータｄＡである暗号化データＣｄＡを取得する。
【０２７３】
（８２）の処理は、図１０の（５２）の処理と同様のため詳細な説明を省略するが、情報処理装置１００Ａ１は、取得要求内のパスが示すディレクトリＤＡの特定ファイルＦＡから、ディレクトリ鍵ＤｋＡ「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を取得する。
【０２７４】
（８３）の処理は、図１０の（５３）の処理と同様のため詳細な説明を省略するが、情報処理装置１００Ａ１は、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。次に、情報処理装置１００は、グループ鍵ＧｋＡとディレクトリ鍵ＤｋＡとを用いて、データ鍵ｄｋＡ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０２７５】
（８４）そして、情報処理装置１００Ａ１は、生成したデータ鍵ｄｋＡを用いて、取得された暗号化データＣｄＡを復号し、データｄＡを生成する。
【０２７６】
これにより、グループＧＡに所属する情報処理装置１００は、特定ファイルＦＡ内のディレクトリ鍵ＤｋＡと、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋＡを生成することができる。そのため、グループＧＡに所属する情報処理装置１００は、データ鍵ｄｋＡを用いて、ディレクトリＤＡの暗号化データＣｄを復号することができる。
【０２７７】
一方、グループＧＡに所属しない情報処理装置１００は、特定ファイルＦＡ内のディレクトリ鍵ＤｋＡを取得しても、グループＧＡに固有なグループ鍵ＧｋＡを有していないため、データ鍵ｄｋＡを合成することができない。そのため、グループＧＡに所属しない情報処理装置１００は、データ鍵ｄｋＡがないため、ディレクトリＤＡの暗号化データＣｄを復号することができない。
【０２７８】
次に、図１６を用いて、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤのデータｄを取得する場合の取得例２について説明する。
【０２７９】
図１６は、複数のグループＧのいずれに所属する情報処理装置１００からも利用可能なディレクトリＤのデータｄを取得する場合の取得例２を示す説明図である。図１６の例では、グループＧＡに所属する情報処理装置１００Ａ１が、グループＧＡに所属する情報処理装置１００からもグループＧＢに所属する情報処理装置１００からも利用するディレクトリＤｏｒのデータｄｏｒを取得する。
【０２８０】
図１６に示すように、（９１）情報処理装置１００Ａ１は、データｄｏｒの取得要求を受け付ける。取得要求には、データｄｏｒを取得するディレクトリＤｏｒを示すパスが含まれる。次に、情報処理装置１００Ａ１は、取得要求内のパスが示すディレクトリＤｏｒから、暗号化されたデータｄｏｒである暗号化データＣｄｏｒを取得する。
【０２８１】
（９２）の処理は、図１１の（６２）の処理と同様のため詳細な説明を省略するが、情報処理装置１００Ａ１は、取得要求内のパスが示すディレクトリＤｏｒの特定ファイルＦｏｒから、ディレクトリ鍵Ｄｋｏｒ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を取得する。また、情報処理装置１００Ａ１は、ディレクトリ鍵Ｄｋｏｒ２「９９ＡＡ５６Ａ３Ｅ５ＤＤ３Ａ２」、条件情報「ｏｒ」を取得する。
【０２８２】
（９３）の処理は、図１１の（６３）の処理と同様のため詳細な説明を省略するが、情報処理装置１００Ａ１は、条件情報「ｏｒ」を用いてディレクトリＤｏｒを利用する情報処理装置１００がグループＧＡとグループＧＢとのいずれかに所属すればよいと判定する。換言すれば、情報処理装置１００Ａ１は、グループＧＡとグループＧＢとのいずれかに対応するグループ鍵Ｇｋがあれば、データ鍵ｄｋｏｒを生成することができ、暗号化データＣｄｏｒを復号することができると判定する。
【０２８３】
次に、情報処理装置１００Ａ１は、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を取得する。そして、情報処理装置１００Ａ１は、グループ鍵ＧｋＡとディレクトリ鍵Ｄｋｏｒ１と用いて、データ鍵ｄｋｏｒ「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。
【０２８４】
（９４）次に、情報処理装置１００Ａ１は、生成したデータ鍵ｄｋｏｒを用いて、取得された暗号化データＣｄｏｒを復号し、データｄｏｒを生成する。
【０２８５】
これにより、グループＧＡに所属する情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ１と、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋｏｒを生成することができる。また、グループＧＢに所属する情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ２と、グループＧＢに固有なグループ鍵ＧｋＢと、を合成して、データ鍵ｄｋｏｒを生成することができる。そのため、グループＧＡまたはグループＧＢに所属する情報処理装置１００は、データ鍵ｄｋｏｒを用いて、ディレクトリＤｏｒの暗号化データＣｄｏｒを復号することができる。
【０２８６】
一方、グループＧＡにもグループＧＢにも所属しない情報処理装置１００は、特定ファイルＦｏｒ内のディレクトリ鍵Ｄｋｏｒ１やディレクトリ鍵Ｄｋｏｒ２を取得しても、データ鍵ｄｋｏｒを合成することができない。そのため、グループＧＡにもグループＧＢにも所属しない情報処理装置１００は、データ鍵ｄｋｏｒがないため、ディレクトリＤｏｒの暗号化データＣｄｏｒを復号することができない。
【０２８７】
次に、図１７を用いて、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤのデータｄを取得する場合の取得例３について説明する。
【０２８８】
図１７は、複数のグループＧのいずれにも所属する情報処理装置１００から利用可能なディレクトリＤを取得する場合の取得例３を示す説明図である。図１７の例では、グループＧＡにもグループＧＢにも所属する情報処理装置１００ＡＢが、グループＧＡにもグループＧＢにも所属する情報処理装置１００から利用するディレクトリＤａｎｄのデータｄａｎｄを取得する。
【０２８９】
図１７に示すように、（１０１）情報処理装置１００ＡＢは、データｄａｎｄの取得要求を受け付ける。取得要求には、データｄａｎｄを取得するディレクトリＤａｎｄを示すパスが含まれる。次に、情報処理装置１００ＡＢは、取得要求内のパスが示すディレクトリＤａｎｄから、暗号化されたデータｄａｎｄである暗号化データＣｄａｎｄを取得する。
【０２９０】
（１０２）の処理は、図１２の（７２）の処理と同様のため詳細な説明を省略するが、情報処理装置１００ＡＢは、取得要求内のパスが示すディレクトリＤａｎｄの特定ファイルＦａｎｄを取得する。次に、情報処理装置１００ＡＢは、特定ファイルＦから、グループＧＡを示す名称「ＧＡ」に対応付けられたディレクトリ鍵Ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を取得する。また、情報処理装置１００ＡＢは、特定ファイルＦａｎｄから、グループＧＢを示す名称「ＧＢ」に対応付けられたディレクトリ鍵Ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を取得する。また、情報処理装置１００ＡＢは、特定ファイルＦａｎｄから、条件情報「ａｎｄ」を取得する。
【０２９１】
（１０３）の処理は、図１２の（７３）の処理と同様のため詳細な説明を省略するが、情報処理装置１００ＡＢは、条件情報「ａｎｄ」を用いて、ディレクトリＤａｎｄを利用する情報処理装置１００がグループＧＡにもグループＧＢにも所属すればよいと判定する。換言すれば、情報処理装置１００ＡＢは、グループＧＡとグループＧＢとの各々に対応するグループ鍵Ｇｋがあれば、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２の組を生成することができ、暗号化データＣｄａｎｄを復号することができると判定する。
【０２９２】
そして、情報処理装置１００ＡＢは、グループＧＡとグループＧＢとの各々に対応するグループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」とグループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」とを取得する。
【０２９３】
そして、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ１「２３ＦＢ５Ａ２０ＥＣ９８９Ｆ１」を、グループ鍵ＧｋＡ「ＦＥ９Ｆ１Ａ９３０２Ｂ５８２Ｃ」を用いて復号し、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を生成する。また、情報処理装置１００ＡＢは、ディレクトリ鍵Ｄｋａｎｄ２「２Ａ８９Ｅ９ＦＣ１０Ｆ５３２Ｂ」を、グループ鍵ＧｋＢ「３Ａ９２ＥＢ８ＦＣ５１Ｆ９０２」を用いて復号し、データ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」を生成する。
【０２９４】
（１０４）次に、情報処理装置１００ＡＢは、データ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」とデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」の組を用いて、暗号化データＣｄａｎｄを復号し、データｄａｎｄを生成する。情報処理装置１００ＡＢは、例えば、暗号化データＣｄａｎｄをデータ鍵ｄｋａｎｄ１「Ｆ９２１Ｅ０Ａ２９３８Ｆ５ＣＢ」を用いて復号し、復号された暗号化データＣａｎｄをデータ鍵ｄｋａｎｄ２「９８９Ｅ２ＢＣＦ３２Ａ１０Ｆ５」を用いてさらに復号する。
【０２９５】
これにより、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ１と、グループＧＡに固有なグループ鍵ＧｋＡと、を合成して、データ鍵ｄｋａｎｄ１を生成することができる。また、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ２と、グループＧＢに固有なグループ鍵ＧｋＢと、を合成して、データ鍵ｄｋａｎｄ２を生成することができる。
【０２９６】
そのため、グループＧＡにもグループＧＢにも所属する情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との組を用いて、ディレクトリＤａｎｄの暗号化データＣｄａｎｄを復号することができる。
【０２９７】
一方、グループＧＡに所属しない情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ１を取得しても、データ鍵ｄｋａｎｄ１を合成することができない。また、グループＧＢに所属しない情報処理装置１００は、特定ファイルＦａｎｄ内のディレクトリ鍵Ｄｋａｎｄ２を取得しても、データ鍵ｄｋａｎｄ２を合成することができない。
【０２９８】
そのため、グループＧＡとグループＧＢとのいずれかに所属しない情報処理装置１００は、データ鍵ｄｋａｎｄ１とデータ鍵ｄｋａｎｄ２との少なくとも一方がないため、ディレクトリＤａｎｄの暗号化データＣｄａｎｄを復号することができない。
【０２９９】
情報処理装置１００は、格納要求内のパスが示すディレクトリＤに特定ファイルＦがない場合、上位のディレクトリＤにある特定ファイルＦを流用してもよい。この場合、情報処理装置１００は、上位のディレクトリＤにある特定ファイルＦ内のディレクトリ鍵Ｄｋを用いてデータ鍵ｄｋを生成し、暗号化データＣｄを復号することになる。
【０３００】
情報処理装置１００は、データｄに付与された識別名が暗号化されている場合、データ鍵ｄｋを用いて識別名を復号してもよい。これにより、情報処理装置１００の利用者は、データｄの識別名を把握することができる。
【０３０１】
（データ取得処理）
次に、図１８を用いて、情報処理装置１００によるデータ取得処理の詳細な処理手順について説明する。データ取得処理は、図１５〜図１７に示した取得例１〜取得例３における情報処理装置１００の処理である。
【０３０２】
図１８は、情報処理装置１００によるデータ取得処理の詳細な処理手順を示すフローチャートである。図１８に示すように、まず、情報処理装置１００は、取得要求が入力されたか否かを判定する（ステップＳ１８０１）。ここで、取得要求が入力されていない場合（ステップＳ１８０１：Ｎｏ）、情報処理装置１００は、ステップＳ１８０１に戻り、取得要求の入力を待つ。
【０３０３】
一方、取得要求が入力された場合（ステップＳ１８０１：Ｙｅｓ）、情報処理装置１００は、取得要求されたパスにあるディレクトリＤから特定ファイルＦを取得する（ステップＳ１８０２）。次に、情報処理装置１００は、特定ファイルＦが取得できたか否かを判定する（ステップＳ１８０３）。
【０３０４】
ここで、特定ファイルＦが取得できなかった場合（ステップＳ１８０３：Ｎｏ）、情報処理装置１００は、上位ディレクトリＤがあるか否かを判定する（ステップＳ１８０４）。ここで、上位ディレクトリＤがある場合（ステップＳ１８０４：Ｙｅｓ）、情報処理装置１００は、ステップＳ１８０２に戻る。一方、上位ディレクトリＤがない場合（ステップＳ１８０４：Ｎｏ）、情報処理装置１００は、ディレクトリＤからデータｄを取得し（ステップＳ１８０５）、データ取得処理を終了する。
【０３０５】
一方、ステップＳ１８０３において、特定ファイルＦが取得できた場合（ステップＳ１８０３：Ｙｅｓ）、情報処理装置１００は、図１４に示したデータ鍵合成処理を実行する（ステップＳ１８０６）。
【０３０６】
次に、情報処理装置１００は、データ鍵合成処理により、データ鍵ｄｋが合成できたか否かを判定する（ステップＳ１８０７）。ここで、データ鍵ｄｋが合成できなかった場合（ステップＳ１８０７：Ｎｏ）、情報処理装置１００は、データ取得処理を終了する。
【０３０７】
一方、データ鍵ｄｋが合成できた場合（ステップＳ１８０７：Ｙｅｓ）、ディレクトリＤから暗号化データＣｄを取得する（ステップＳ１８０８）。次に、情報処理装置１００は、合成したデータ鍵ｄｋを用いて、取得した暗号化データＣｄを復号する（ステップＳ１８０９）。そして、情報処理装置１００は、データ取得処理を終了する。これにより、情報処理装置１００は、ディレクトリＤの暗号化データＣｄを取得して復号することができる。
【０３０８】
以上説明したように、情報処理装置１００は、所属するグループＧがディレクトリＤを利用可能なグループＧであれば、ディレクトリＤにあるディレクトリ鍵ＤｋとグループＧ固有のグループ鍵Ｇｋとを合成することにより、データ鍵ｄｋを生成することができる。一方、情報処理装置１００は、所属するグループＧがディレクトリＤを利用可能なグループＧでなければ、ディレクトリ鍵Ｄｋを用いても、データ鍵ｄｋを生成することができない。
【０３０９】
これにより、情報処理装置１００は、データ鍵ｄｋを用いて、ディレクトリＤに格納するデータｄを暗号化しておくことができる。また、情報処理装置１００は、データ鍵ｄｋを用いて、ディレクトリＤに格納された暗号化データＣｄを取得して復号することができる。そして、ディレクトリＤは、利用可能なグループＧ以外からは利用できないようになる。
【０３１０】
情報処理装置１００は、ディレクトリＤを作成する場合、ディレクトリＤを利用可能なグループＧに固有のグループ鍵Ｇｋと合成することにより、データ鍵ｄｋを生成することができるディレクトリ鍵Ｄｋを生成する。次に、情報処理装置１００は、ディレクトリＤを利用可能なグループＧを示す情報とディレクトリ鍵Ｄｋとを対応付けた特定ファイルＦをディレクトリＤに格納する。これにより、情報処理装置１００は、ディレクトリＤを利用可能なグループＧに固有のグループ鍵Ｇｋを有する情報処理装置１００からのみ利用可能なディレクトリＤを作成することができる。そのため、ディレクトリＤは、利用可能なグループＧ以外からは利用できないようになる。
【０３１１】
また、情報処理装置１００によるデータｄの暗号化や暗号化データＣｄの復号は、ディレクトリＤのパスに依存しない。そのため、ディレクトリＤの格納場所をデータベース１０１において他の格納場所に移動させても情報処理装置１００は暗号化や復号が可能になる。また、ディレクトリＤの格納場所をデータベース１０１以外の他のデータベース１０１に移動させた場合も同様に情報処理装置１００は暗号化や復号が可能になる。
【０３１２】
なお、本実施の形態で説明した取得方法、格納方法、および作成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本取得プログラム、本格納プログラム、および本作成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本取得プログラム、本格納プログラム、および本作成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０３１３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０３１４】
（付記１）コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付け、
前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより暗号鍵を生成し、
生成された暗号鍵で前記データを暗号化し、
暗号化された暗号化データを前記データベース内の前記第２の分散鍵の格納場所に送信する、
処理を実行することを特徴とする格納方法。
【０３１５】
（付記２）前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む格納要求がされた、前記特定のグループ群に関するデータである、
ことを特徴とする付記１に記載の格納方法。
【０３１６】
（付記３）前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む格納要求がされた、前記特定のグループ群に関するデータであり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする付記１に記載の格納方法。
【０３１７】
（付記４）コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、
処理を実行することを特徴とする取得方法。
【０３１８】
（付記５）前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む取得要求がされた、前記特定のグループ群に関するデータである、
ことを特徴とする付記４に記載の取得方法。
【０３１９】
（付記６）前記複数のグループは特定のグループ群に分かれており、前記データは、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む取得要求がされた、前記特定のグループ群に関するデータであり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする付記４に記載の取得方法。
【０３２０】
（付記７）コンピュータが、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第２の分散鍵を生成し、
生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、
処理を実行することを特徴とする作成方法。
【０３２１】
（付記８）前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第２の分散鍵は、前記いずれかのグループの識別情報に関連付けられた前記特定のグループ群に固有な分散鍵である、
ことを特徴とする付記７に記載の作成方法。
【０３２２】
（付記９）前記複数のグループは特定のグループ群に分かれており、前記格納場所は、前記特定のグループ群のいずれのグループにも所属する要求元装置から、前記特定のグループ群の識別情報を含む作成要求がされた、前記特定のグループ群に関する格納場所であり、
前記第１の分散鍵および第２の分散鍵は、それぞれ、前記特定のグループ群の識別情報に関連付けられた前記特定のグループ群の各グループに固有な分散鍵である、
ことを特徴とする付記７に記載の作成方法。
【０３２３】
（付記１０）複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付ける受付部と、
前記受付部によって前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する第１の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵を取得する第２の取得部と、
前記第１の分散鍵と前記第２の取得部によって取得された第２の分散鍵を合成することにより暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記データを暗号化する暗号化部と、
前記暗号化部によって暗号化された暗号化データを前記データベース内の前記第２の分散鍵の格納場所に送信する送信部と、
を有することを特徴とする格納装置。
【０３２４】
（付記１１）複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付ける受付部と、
前記受付部によって前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する第１の取得部と、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを前記第１の取得部によって取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得する第２の取得部と、
前記第１の分散鍵と前記第２の取得部によって取得された第２の分散鍵を合成することにより前記暗号鍵を生成する生成部と、
前記生成部によって生成された暗号鍵で前記暗号化データを復号する復号部と、
前記復号部によって復号されたデータを前記要求元装置に送信する送信部と、
を有することを特徴とする取得装置。
【０３２５】
（付記１２）複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付ける受付部と、
前記受付部によって前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得する取得部と、
前記いずれかのグループに固有な第２の分散鍵を生成する生成部と、
前記生成部によって生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する送信部と、
を有することを特徴とする作成装置。
【０３２６】
（付記１３）コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの格納要求を受け付け、
前記格納要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより暗号鍵を生成し、
生成された暗号鍵で前記データを暗号化し、
暗号化された暗号化データを前記データベース内の前記第２の分散鍵の格納場所に送信する、
処理を実行させることを特徴とする格納プログラム。
【０３２７】
（付記１４）コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関するデータの取得要求を受け付け、
前記取得要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記複数のグループの各グループのデータ群を記憶するデータベースから、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第２の分散鍵と、前記データを取得された第１の分散鍵と前記第２の分散鍵とを合成することにより得られる暗号鍵により暗号化された暗号化データと、を取得し、
前記第１の分散鍵と取得された第２の分散鍵を合成することにより前記暗号鍵を生成し、
生成された暗号鍵で前記暗号化データを復号し、
復号されたデータを前記要求元装置に送信する、
処理を実行させることを特徴とする取得プログラム。
【０３２８】
（付記１５）コンピュータに、
複数のグループの中のいずれかのグループに所属する要求元装置から、前記いずれかのグループの識別情報を含む前記いずれかのグループに関する格納場所の作成要求を受け付け、
前記作成要求が受け付けられた場合、前記いずれかのグループの識別情報に関連付けられた前記いずれかのグループに固有な第１の分散鍵を記憶装置から取得し、
前記いずれかのグループに固有な第２の分散鍵を生成し、
生成された第２の分散鍵と前記いずれかのグループの識別情報とを関連付けた情報を、データベース内の前記いずれかのグループに固有な格納場所を指定して、前記データベースに送信する、
処理を実行させることを特徴とする作成プログラム。
【符号の説明】
【０３２９】
１００  情報処理装置
４０１  受付部
４０２  取得部
４０３  生成部
４０４  送信部
４０５  暗号化部
【図１】
0005953886.tif 000002
【図２】
0005953886.tif 000003
【図３】
0005953886.tif 000004
【図４】
0005953886.tif 000005
【図５】
0005953886.tif 000006
【図６】
0005953886.tif 000007
【図７】
0005953886.tif 000008
【図８】
0005953886.tif 000009
【図９】
0005953886.tif 000010
【図１０】
0005953886.tif 000011
【図１１】
0005953886.tif 000012
【図１２】
0005953886.tif 000013
【図１３】
0005953886.tif 000014
【図１４】
0005953886.tif 000015
【図１５】
0005953886.tif 000016
【図１６】
0005953886.tif 000017
【図１７】
0005953886.tif 000018
【図１８】
0005953886.tif 000019