(57)【要約】【課題】記憶するデータの重複排除を行うことができる情報処理装置を提供する。【解決手段】情報処理装置の生成手段は、データに対して特権識別子と公開識別子と暗号化データを生成し、第１の保存手段は、公開可能な記憶装置に、前記公開識別子で前記暗号化データをアクセスできるように保存し、第２の保存手段は、前記特権識別子で前記公開識別子をアクセスできるように秘密裡に保存し、前記生成手段は、前記特権識別子を、前記データに対してハッシュ関数を用いて生成し、前記暗号化データを、前記特権識別子と前記データに対して暗号化関数を用いて生成し、前記公開識別子を、前記暗号化データに対してハッシュ関数用いて生成する。【選択図】図１
2019060920.tif 000002
【特許請求の範囲】
【請求項１】
データに対して特権識別子と公開識別子と暗号化データを生成する生成手段と、
公開可能な記憶装置に、前記公開識別子で前記暗号化データをアクセスできるように保存する第１の保存手段と、
前記特権識別子で前記公開識別子をアクセスできるように秘密裡に保存する第２の保存手段
を有し、
前記生成手段は、
前記特権識別子を、前記データに対してハッシュ関数を用いて生成し、
前記暗号化データを、前記特権識別子と前記データに対して暗号化関数を用いて生成し、
前記公開識別子を、前記暗号化データに対してハッシュ関数用いて生成する、
情報処理装置。
【請求項２】
前記記憶装置から、前記公開識別子から前記暗号化データを取得する取得手段と、
前記暗号化データを、前記特権識別子を用いて復号する復号手段
をさらに有する請求項１に記載の情報処理装置。
【請求項３】
前記データの取得要求を外部装置から受けた場合は、該外部装置に、前記特権識別子と前記公開識別子を送信する送信手段
をさらに有する請求項１に記載の情報処理装置。
【請求項４】
前記データを廃棄する場合は、該データに対応する特権識別子と公開識別子を削除する削除手段
をさらに有する請求項１に記載の情報処理装置。
【請求項５】
前記生成手段は、特権識別子と公開識別子の複数の組をデータとして、特権識別子と公開識別子と暗号化データを生成する、
請求項１に記載の情報処理装置。
【請求項６】
前記生成手段は、予め定められた期間より長く又は以上、使用されていない特権識別子と公開識別子の複数の組を対象として、特権識別子と公開識別子と暗号化データを生成する、
請求項５に記載の情報処理装置。
【請求項７】
コンピュータを、
データに対して特権識別子と公開識別子と暗号化データを生成する生成手段と、
公開可能な記憶装置に、前記公開識別子で前記暗号化データをアクセスできるように保存する第１の保存手段と、
前記特権識別子で前記公開識別子をアクセスできるように秘密裡に保存する第２の保存手段
として機能させ、
前記生成手段は、
前記特権識別子を、前記データに対してハッシュ関数を用いて生成し、
前記暗号化データを、前記特権識別子と前記データに対して暗号化関数を用いて生成し、
前記公開識別子を、前記暗号化データに対してハッシュ関数用いて生成する、
情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、代表的なピアツーピアネットワークにおいては、ピアツーピアネットワークのユーザーはだれでもキー及びそのキーに関連する値の検索を要求することができることを課題とし、格納されたキー値ペアへのアクセスを制限するために、ユーザーノードはピアツーピアネットワークにおけるキー値ペアを、そのキー値ペアへのアクセスを許可されたユーザーノードをリストアップしたアクセスリストと関連させて登録することができ、アクセスリストには、１つ又は複数の取出し識別子を含めることができ、情報をさらにセキュアにするために、取出し識別子及び／又はペイロードは暗号化することができ、取出しユーザーが暗号化されたペイロードを復号することを可能にするために、格納されたキー値ペアに関連するグループキーを用いてペイロードを暗号化することができ、グループキーは、取出しユーザーにとって既知のキーを用いて暗号化できることが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２３６３４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
通信回線を介して接続されているサーバー（クラウドであってもよい）に、データを記憶させる場合、データそのものを記憶させると、そのサーバーの管理者にデータの内容を知られてしまう可能性がある。そこで、データを暗号化した場合、記憶するデータの重複排除を行うことは困難である。
本発明は、記憶するデータの重複排除を行うことができる情報処理装置及び情報処理装プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、データに対して特権識別子と公開識別子と暗号化データを生成する生成手段と、公開可能な記憶装置に、前記公開識別子で前記暗号化データをアクセスできるように保存する第１の保存手段と、前記特権識別子で前記公開識別子をアクセスできるように秘密裡に保存する第２の保存手段を有し、前記生成手段は、前記特権識別子を、前記データに対してハッシュ関数を用いて生成し、前記暗号化データを、前記特権識別子と前記データに対して暗号化関数を用いて生成し、前記公開識別子を、前記暗号化データに対してハッシュ関数用いて生成する、情報処理装置である。
【０００６】
請求項２の発明は、前記記憶装置から、前記公開識別子から前記暗号化データを取得する取得手段と、前記暗号化データを、前記特権識別子を用いて復号する復号手段をさらに有する請求項１に記載の情報処理装置である。
【０００７】
請求項３の発明は、前記データの取得要求を外部装置から受けた場合は、該外部装置に、前記特権識別子と前記公開識別子を送信する送信手段をさらに有する請求項１に記載の情報処理装置である。
【０００８】
請求項４の発明は、前記データを廃棄する場合は、該データに対応する特権識別子と公開識別子を削除する削除手段をさらに有する請求項１に記載の情報処理装置である。
【０００９】
請求項５の発明は、前記生成手段は、特権識別子と公開識別子の複数の組をデータとして、特権識別子と公開識別子と暗号化データを生成する、請求項１に記載の情報処理装置である。
【００１０】
請求項６の発明は、前記生成手段は、予め定められた期間より長く又は以上、使用されていない特権識別子と公開識別子の複数の組を対象として、特権識別子と公開識別子と暗号化データを生成する、請求項５に記載の情報処理装置である。
【００１１】
請求項７の発明は、コンピュータを、データに対して特権識別子と公開識別子と暗号化データを生成する生成手段と、公開可能な記憶装置に、前記公開識別子で前記暗号化データをアクセスできるように保存する第１の保存手段と、前記特権識別子で前記公開識別子をアクセスできるように秘密裡に保存する第２の保存手段として機能させ、前記生成手段は、前記特権識別子を、前記データに対してハッシュ関数を用いて生成し、前記暗号化データを、前記特権識別子と前記データに対して暗号化関数を用いて生成し、前記公開識別子を、前記暗号化データに対してハッシュ関数用いて生成する、情報処理プログラムである。
【発明の効果】
【００１２】
請求項１の情報処理装置によれば、記憶するデータの重複排除を行うことができる。
【００１３】
請求項２の情報処理装置によれば、公開識別子から取得した暗号化データを、特権識別子を用いて復号することができる。
【００１４】
請求項３の情報処理装置によれば、データの取得要求を行った外部装置に、特権識別子と公開識別子を送信することができる。
【００１５】
請求項４の情報処理装置によれば、データを廃棄することができる。
【００１６】
請求項５の情報処理装置によれば、特権識別子と公開識別子の複数の組をデータとして、特権識別子と公開識別子と暗号化データを生成することができる。
【００１７】
請求項６の情報処理装置によれば、使用されていない特権識別子と公開識別子の複数の組を対象として、特権識別子と公開識別子と暗号化データを生成することができる。
【００１８】
請求項７の情報処理プログラムによれば、記憶するデータの重複排除を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を利用したシステム構成例を示す説明図である。
【図３】記憶装置側データテーブルのデータ構造例を示す説明図である。
【図４】デバイス側データテーブルのデータ構造例を示す説明図である。
【図５】デバイス側データテーブルのデータ構造例を示す説明図である。
【図６】暗号化データテーブルのデータ構造例を示す説明図である。
【図７】公開識別子データテーブルのデータ構造例を示す説明図である。
【図８】本実施の形態による処理例を示すフローチャートである。
【図９】本実施の形態による処理例を示すフローチャートである。
【図１０】本実施の形態による処理例を示すフローチャートである。
【図１１】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。また、「Ａ、Ｂ、Ｃ」等のように事物を列挙した場合は、断りがない限り例示列挙であり、その１つのみを選んでいる場合（例えば、Ａのみ）を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００２１】
本実施の形態である情報処理装置１００は、サーバーに記憶させるデータの重複排除を行うことができるものであって、図１の例に示すように、データ制御モジュール１０５、通信モジュール１５０を有している。
【００２２】
データ制御モジュール１０５は、データ受付モジュール１１０、生成モジュール１１５、保存（Ａ）モジュール１２０、保存（Ｂ）モジュール１２５、データ記憶モジュール１３０、取得モジュール１３５、復号モジュール１４０、出力モジュール１４５を有しており、通信モジュール１５０と接続されている。データ制御モジュール１０５は、データの制御を行う。特に、データの記憶、アクセスに関する処理を行う。
データ受付モジュール１１０は、対象となるデータ（以下、データチャンク（１個以上のデータ群）ともいう）を受け付ける。例えば、通信モジュール１５０を介して、他の外部装置（例えば、図２を用いて後述するデバイス２１０（他の情報処理装置１００を有しているデバイス２１０））からデータを受け付けてもよいし、ＵＳＢメモリ等の記憶媒体からデータを読み込んでもよいし、キーボード等のユーザーインタフェースを介してデータを受け付けてもよい。
【００２３】
生成モジュール１１５は、データ受付モジュール１１０が受け付けたデータに対して特権識別子と公開識別子と暗号化データを生成する。
生成モジュール１１５は、以下のように、特権識別子、暗号化データ、公開識別子を生成する。
（１）特権識別子を、データに対してハッシュ関数を用いて生成する。
（２）暗号化データを、特権識別子とデータに対して暗号化関数を用いて生成する。
（３）公開識別子を、暗号化データに対してハッシュ関数を用いて生成する。
なお、同じデータであれば、同じハッシュ値になり、公開識別子と暗号化データも同じになるので、重複排除を行うことができる。
データのハッシュ値そのものを利用して暗号化を行っているので、データのハッシュ値を鍵として利用しない場合に比べて、鍵の管理も容易になる。
【００２４】
また、生成モジュール１１５は、特権識別子と公開識別子の複数の組をデータとして、特権識別子と公開識別子と暗号化データを生成するようにしてもよい。つまり、データアーカイブ方法として、ローカルである情報処理装置１００には多数の（特権識別子、公開識別子）の組が保存されている場合、これ自体の（特権識別子、公開識別子）を生成し、暗号化データを記憶装置２５０に保存することで、事後的にアーカイブされたデータを復元できる。
さらに、生成モジュール１１５は、予め定められた期間より長く又は以上、使用されていない特権識別子と公開識別子の複数の組を対象として、特権識別子と公開識別子と暗号化データを生成するようにしてもよい。つまり、自動的なコンパクションを行うものである。この場合、（特権識別子、公開識別子）の組のうち、使われていなかったものをまとめて、アーカイブする。アーカイブされてしまった特権識別子は見つからなくなってしまうので、重畳されたアーカイブから、必要な特権識別子を効率的に探し出す方法として、ブルームフィルタ（Ｂｌｏｏｍ  Ｆｉｌｔｅｒ）を利用してもよい。
【００２５】
保存（Ａ）モジュール１２０は、公開可能な記憶装置（例えば、図２を用いて後述する記憶装置２５０）に、公開識別子で暗号化データをアクセスできるように保存する。
ここで「公開識別子で暗号化データをアクセスできるように保存する」として、例えば、公開識別子と暗号化データとを対応させて記憶するテーブルを生成すればよい。
【００２６】
保存（Ｂ）モジュール１２５は、データ記憶モジュール１３０と接続されている。保存（Ｂ）モジュール１２５は、特権識別子で公開識別子をアクセスできるように秘密裡にデータ記憶モジュール１３０に保存する。
ここで「特権識別子で公開識別子をアクセスできるように秘密裡に保存する」として、例えば、特権識別子と公開識別子とを対応させて記憶するテーブルを生成し、そのテーブルを秘密裡に記憶すればよい。「秘密裡に」として、他者からアクセスできないようにしていればよく、例えば、ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）セキュリティチップを用いてもよいし、そのテーブルを暗号化してもよい。
また、保存（Ｂ）モジュール１２５は、データを廃棄する場合は、そのデータに対応する特権識別子と公開識別子の組み合わせを削除するようにしてもよい。つまり、ローカルである情報処理装置１００には（特権識別子、公開識別子）の組（ペア）が保存されているが、この組を削除するだけで、リモートストレージである情報処理装置１００に保存された暗号化データを利用することはできなくなるので、早急にデータを廃棄することが可能になる。
【００２７】
データ記憶モジュール１３０は、保存（Ｂ）モジュール１２５と接続されている。データ記憶モジュール１３０は、保存（Ｂ）モジュール１２５の処理によって、特権識別子で公開識別子をアクセスできるように保存する。ここでの保存は、秘密裡に行われるが、前述したように、他者からアクセスできないようにしていればよい。ローカルである情報処理装置１００のストレージであるデータ記憶モジュール１３０にも、（特権識別子、生データ）の形では保存せず、（特権識別子、公開識別子）の形で保存しておき、生データはレンダリング時に安全に生成するようにしてもよい。例えば、保護されたメモリ内でのみ復号されるようにしてもよい。
【００２８】
取得モジュール１３５は、記憶装置（例えば、図２を用いて後述する記憶装置２５０）から、公開識別子から暗号化データを取得する。
復号モジュール１４０は、取得モジュール１３５が取得した暗号化データを、特権識別子を用いて復号する。
出力モジュール１４５は、データの取得要求を外部装置（例えば、図２を用いて後述するデバイス２１０（他の情報処理装置１００を有しているデバイス２１０））から受け付けた場合は、その外部装置に、そのデータに対応する特権識別子と公開識別子を送信する。
【００２９】
通信モジュール１５０は、データ制御モジュール１０５と接続されている。通信モジュール１５０は、例えば、図２を用いて後述するデバイス２１０（他の情報処理装置１００を有しているデバイス２１０）、記憶装置２５０と通信を行う。例えば、デバイス２１０、記憶装置２５０との間で、対象となるデータ、公開識別子等の送受信を行ってもよい。例えば、暗号化データの転送は並列に処理できる。データチャンク間に依存関係がない（独立している）ためである。そして、暗号化データの格納場所は分散できる。識別子は格納場所には依存しないためである。これらによって、データ格納の効率化・ロバスト化を図ることができる。
【００３０】
図２は、本実施の形態を利用したシステム構成例を示す説明図である。
デバイス２１０Ａは、情報処理装置１００Ａを有している。デバイス２１０Ｂは、情報処理装置１００Ｂを有している。デバイス２１０Ｃは、情報処理装置１００Ｃを有している。デバイス２１０として、データの処理（生成、取得等）を行うものであればよく、例えば、ＰＣ（パーソナルコンピュータ）、携帯情報通信機器、情報家電、ロボット、画像処理装置等がある。
デバイス２１０Ａ、デバイス２１０Ｂ、デバイス２１０Ｃ、記憶装置２５０Ａ、記憶装置２５０Ｂは、通信回線２９０を介してそれぞれ接続されている。通信回線２９０は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、公開されている記憶装置２５０による機能は、クラウドサービスとして実現してもよい。
【００３１】
例えば、ＩＯＴ（Ｉｎｔｅｒｎｅｔ  Ｏｆ  Ｔｈｉｎｇｓ）、ビックデータ化等によって、記憶するデータは大規模化してきている。データストアの容量は増えるが、記憶装置（記憶媒体）のコストは安くなる傾向はある。
また、二度と使わないかもしれないが、必要になれば参照したいデータがある。つまり、データが再利用されるか、塩漬けにされるか（二度と使われないか）は事前には計画できない。
一方、頻繁に利用するデータは素早くアクセスしたい。そして、デバイス２１０内のローカルなストレージには容量の限界がある。
そこで、データの識別子でデータ内容を同定したい。つまり異なるデータは異なる識別子を持つようにしたい。
つまり、コンテンツのハッシュ値を識別子とするデータストアについて、必要性が高まっている。
【００３２】
デバイス２１０のローカルストレージが溢れないようにするために、データチャンクを記憶装置２５０側に移行させる。
このとき、データチャンクをそのまま記憶装置２５０側に保存すると、記憶装置２５０の管理者にデータチャンクの内容が知られてしまうおそれがある。
そこで、記憶装置２５０側にデータチャンクを保存するときに暗号化することが考えられる。しかし、以下の２点が問題になる。
・暗号化（又は復号）する際の鍵の管理（つまり、データと鍵の紐付け管理を複雑化させたくない）
・データの効率的な保存（つまり、重複排除やキャッシュ制御）
【００３３】
コンテンツハッシュ型（つまり、ハッシュ値をキーとして、そのハッシュ値を持つデータを取り出せるもの）のデータストアを前提として、記憶装置２５０には暗号化されたデータが登録される。なお、記憶装置２５０には暗号化されたデータのみが登録されるようにしてもよい。
元データのハッシュ値（これを特権識別子（ｐｒｉｖｉｄ）と呼ぶ）を暗号鍵として元データを暗号化したもののハッシュ値（これを公開識別子（ｐｕｂｌｉｄ）と呼ぶ）という二種類のコンテンツハッシュを利用する。
・公開識別子を公開し、それに対応する特権識別子を知るユーザー（仲間といえるユーザー）に特権識別子を教えてもらうことによって、データを復元（回復）する。
・「データへのアクセス」をデータ自体から決定される「データを特定する識別子」と「データを復元する識別子」のペアに分解する。
ここで「データ自体から決定される」ため、「鍵の管理」と「データの効率的な保存」が両立して満たされる。
【００３４】
生成モジュール１１５が行う処理について、詳細に説明する。
基本的な関数として、次の２つを用いる。
（１）ｈ：ハッシュ関数（ｈａｓｈ  ｆｕｎｃｔｉｏｎ）
（２）ｅ：暗号化関数（ｅｎｃｉｐｈｅｒ  ｆｕｎｃｔｉｏｎ）
なお、ハッシュ関数、暗号化関数として用いられるものであれば、既存の関数であってよい。
【００３５】
諸量として、次の４つを用いる。
（１）Ｍ：データチャンク（対象とするデータである）
（２）ｓ：ｈ（Ｍ）データチャンクのハッシュ値（特権識別子）
（３）Ｃ：ｅ（ｓ，  Ｍ）暗号化されたデータチャンク（暗号化データ）
（４）ｐ：ｈ（Ｃ）暗号化されたデータチャンクのハッシュ値（公開識別子）
【００３６】
名称として、次の２つを用いる。
（１）ｐｕｂｌｉｄ：データチャンクの公開識別子（上記のｐ）
（２）ｐｒｉｖｉｄ：データチャンクの特権識別子（上記のｓ）
【００３７】
記憶装置２５０側のデータストアでは、次の２つの処理（関数）が行われる。
（１）ｂｉｎｄ（Ｃ）：データチャンクＣを送信すると保存される。
（２）ｒｅｓｏｌｖｅ（ｐ）：データチャンクのハッシュ値ｐで、対応するデータチャンクを取得できる。
記憶装置２５０では、例えば、記憶装置側データテーブル３００を記憶して、ｐとＣを管理している。つまり、公開可能な記憶装置２５０では、ｐ（公開識別子）でＣ（暗号化データ）をアクセスできるように保存されている。記憶装置２５０は、例えば、記憶装置側データテーブル３００を記憶している。図３は、記憶装置側データテーブル３００のデータ構造例を示す説明図である。記憶装置側データテーブル３００は、ｋｅｙ欄３１０、ｖａｌｕｅ欄３２０を有している。ｋｅｙ欄３１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄３２０は、ｖａｌｕｅを記憶している。つまり、ｋｅｙ欄３１０に、ｐを記憶し、ｖａｌｕｅ欄３２０にそのｐに対応するＣを記憶する。したがって、記憶装置２５０に記憶されるデータは、全て暗号化されていることになる。
【００３８】
デバイス２１０では、例えば、デバイス側データテーブル４００又はデバイス側データテーブル５００を記憶して、ｓとＭ又はｓとｐを管理している。つまり、デバイス側データテーブル４００でｓとＭを管理する場合は、ｓでデータ（生のデータ、暗号化されていないデータ）であるＭをアクセスできるようにしている。デバイス側データテーブル５００ｓとｐを管理する場合は、ｓで公開識別子であるｐをアクセスできるようにしている。
【００３９】
図４は、デバイス側データテーブル４００のデータ構造例を示す説明図である。デバイス側データテーブル４００は、ｋｅｙ欄４１０、ｖａｌｕｅ欄４２０を有している。ｋｅｙ欄４１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄４２０は、ｖａｌｕｅを記憶している。つまり、ｋｅｙ欄４１０に、ｓを記憶し、ｖａｌｕｅ欄４２０にそのｓに対応するＭを記憶する。
図５は、デバイス側データテーブル５００のデータ構造例を示す説明図である。デバイス側データテーブル５００は、ｋｅｙ欄５１０、ｖａｌｕｅ欄５２０を有している。ｋｅｙ欄５１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄５２０は、ｖａｌｕｅを記憶している。つまり、ｋｅｙ欄５１０に、ｓを記憶し、ｖａｌｕｅ欄５２０にそのｓに対応するｐを記憶する。
なお、デバイス側データテーブル４００とデバイス側データテーブル５００を統合してもよい。つまり、ｓでＭ又はｐをアクセスできるようにしてもよい。
【００４０】
暗号化データを保持するチャンクストアとして、例えば、暗号化データテーブル６００がある。なお、暗号化データのみを保持するチャンクストアとしてもよい。
図６は、暗号化データテーブル６００のデータ構造例を示す説明図である。暗号化データテーブル６００は、ｋｅｙ欄６１０、ｖａｌｕｅ欄６２０を有している。ｋｅｙ欄６１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄６２０は、ｖａｌｕｅを記憶している。つまり、ｋｅｙ欄６１０に、ｐを記憶し、ｖａｌｕｅ欄６２０にそのｐに対応するＣを記憶する。
【００４１】
公開識別子を保持する参照ストアとして、例えば、公開識別子データテーブル７００がある。なお、公開識別子のみを保持する参照ストアとしてもよい。
図７は、公開識別子データテーブル７００のデータ構造例を示す説明図である。公開識別子データテーブル７００は、ｋｅｙ欄７１０、ｖａｌｕｅ欄７２０を有している。ｋｅｙ欄７１０は、ｋｅｙを記憶している。ｖａｌｕｅ欄７２０は、ｖａｌｕｅを記憶している。つまり、ｋｅｙ欄７１０に、ｓを記憶し、ｖａｌｕｅ欄７２０にそのｓに対応するｐを記憶する。
【００４２】
デバイス２１０（情報処理装置１００）は、以下に示すような同期処理を行う。
・データチャンクは、情報処理装置１００の内部で、特権識別子で管理される（例えば、図４の例に示したデバイス側データテーブル４００を参照）。
・オンライン時（通信可能となっているとき）に暗号化データチャンクを記憶装置２５０側に送信する。
・記憶装置２５０側への送信に成功したとき、特権識別子に公開識別子を対応付ける（例えば、図５の例に示したデバイス側データテーブル５００を参照）。
・データ削減要求を受け付けたときに、公開識別子の生成されたデータチャンクを削除する。
【００４３】
デバイス２１０（情報処理装置１００）は、データチャンクに対して、公開識別子と特権識別子と暗号化データチャンクを生成し、公開識別子で暗号化データチャンクを特定できるようにする。
図８は、本実施の形態による処理例を示すフローチャートである。デバイス２１０（情報処理装置１００）の動作を示すものである。
ステップＳ８０２では、ｐｒｉｖｉｄ（Ｍ）＝ｈ（Ｍ）を計算する。つまり、ｓ＝ｈ（Ｍ）を計算する。データ生成に応じて、原データのハッシュ値（データのプライベート識別子）を計算し、データのプライベート識別子でそのデータを取得できるようにしておくものである。
ステップＳ８０４では、ｃｉｐｈｅｒ（Ｍ）＝ｅ（ｈ（Ｍ），  Ｍ）を計算する。つまり、Ｃ＝ｅ（ｐ，Ｍ）を計算する。原データをデータのプライベート識別子を暗号鍵として暗号化データを生成する。
【００４４】
ステップＳ８０６では、ｐｕｂｌｉｄ（Ｍ）＝ｈ（ｃｉｐｈｅｒ（Ｍ））を計算する。つまり、ｐ＝ｈ（Ｃ）を計算する。暗号化データのハッシュ値（データのパブリック識別子）を計算している。
ステップＳ８０８では、ｐｒｉｖｉｄ（Ｍ）とｐｕｂｌｉｄ（Ｍ）との対応を記憶する。つまり、データのパブリック識別子でそのデータのプライベート識別子を取得できるようにしておく。
ステップＳ８１０では、ｃｉｐｈｅｒ（Ｍ）を記憶装置２５０側に転送する。
この処理によって、Ｍから、ｐ、ｓ、Ｃを生成している。
【００４５】
説明の単純化のため、以下の様なファイルシステムを想定する。
・ファイルのデータ実体は固定長（例えば６４ＫｉＢ）のデータチャンクの列で実装される。
・データチャンクは、固有のＩＤを持つ。
・ファイルシステムはパス名に対して対応するデータチャンクの列を保持している。
例えば、ｆｏｏとｂａｒという二つのファイルを含むディレクトリは以下の様に実現されている。
｛
ｆｏｏ：｛ｔｙｐｅ：’ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ’，ｂｕｆ：［ｓ０，ｓ１，．．．］  ｝，
ｂａｒ：｛ｔｙｐｅ：’ｔｅｘｔ／ｐｌａｉｎ’，ｂｕｆ：［ｓ０，ｓ１，．．．］｝
｝
ここでファイル内容ｂｕｆのデータチャンクが、上で説明したデータストアに格納されている。
なお、特権識別子ｓの代わりに公開識別子ｐを使ってもよい。
また、特権識別子列［ｓ０，ｓ１，・・・］自体がデータチャンクの固定長を超えれば、再帰的に識別子に置き換えてもよい。
【００４６】
図９は、本実施の形態による処理例を示すフローチャートである。デバイス２１０（情報処理装置１００）によるデータＭの取得処理例を示すものである。つまり、データチャンクの特権識別子ｓでデータ取得を行うものである。
ステップＳ９０２では、ｓを受け付ける。
ステップＳ９０４では、ｓに対応するＭがあるか否かを判断し、ある場合はステップＳ９１２へ進み、それ以外の場合はステップＳ９０６へ進む。つまり、生のデータチャンクがあれば、それを直接利用する（ステップＳ９１２）。生のデータチャンクがない場合、公開識別子で暗号化データチャンクを取得し、特権識別子で復号する（ステップＳ９０６〜ステップＳ９１０）。
【００４７】
ステップＳ９０６では、ｓに対応するｐを取得する。
ステップＳ９０８では、記憶装置２５０からｐに対応するＣを取得する。
ステップＳ９１０では、Ｃをｓで復号する。つまり、Ｍを再現する。
ステップＳ９１２では、Ｍにアクセスする。
【００４８】
図１０は、本実施の形態による処理例を示すフローチャートである。デバイス２１０Ａがデバイス２１０Ｂからデータの取得要求を受けた場合の、デバイス２１０Ａによる処理例を示したものである。つまり、信頼できる外部ノード（デバイス２１０Ｂ）に対しては、（特権識別子、公開識別子）ペアを渡し、復号までさせてしまうものである。これによって、データチャンクの復号を分散させることができるようになる。
ステップＳ１００２では、デバイス２１０Ａが、デバイス２１０Ｂからのデータ取得要求を受け付ける。
ステップＳ１００４では、デバイス２１０Ａが、データ取得要求を許諾するか否かを判断し、許諾する場合はステップＳ１００６へ進み、それ以外の場合はステップＳ１００８へ進む。この許諾するか否かの判断は、予め定められたユーザー（デバイス２１０）であるか否かによって判断してもよいし、アクセス制御を用いてもよいし、デバイス２１０Ａのユーザーが判断してもよい。
ステップＳ１００６では、デバイス２１０Ａは、取得要求されたデータに対応する（ｓ，ｐ）のペアをデバイス２１０Ｂに応答する。
ステップＳ１００８では、デバイス２１０Ａは、デバイス２１０Ｂに許諾できない旨を応答する。
【００４９】
データのプリフェッチ処理として、以下のようにしてもよい。
データのダウンロードを行いたいデバイス２１０に、一連の公開識別子を渡し、公開データチャンクをダウンロードしておく。後で、（特権識別子、公開識別子）ペアを知ることで、リモートによって記憶装置２５０からデータを改めてダウンロードすることなく必要な元データを取得できる。
【００５０】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図１１に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部（演算部）としてＣＰＵ１１０１を用い、記憶装置としてＲＡＭ１１０２、ＲＯＭ１１０３、ＨＤ１１０４を用いている。ＨＤ１１０４として、例えばハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を用いてもよい。データ制御モジュール１０５、データ受付モジュール１１０、生成モジュール１１５、保存（Ａ）モジュール１２０、保存（Ｂ）モジュール１２５、取得モジュール１３５、復号モジュール１４０、出力モジュール１４５、通信モジュール１５０等のプログラムを実行するＣＰＵ１１０１と、そのプログラムやデータを記憶するＲＡＭ１１０２と、本コンピュータを起動するためのプログラム等が格納されているＲＯＭ１１０３と、データ記憶モジュール１３０としての機能を有する補助記憶装置（フラッシュ・メモリ等であってもよい）であるＨＤ１１０４と、キーボード、マウス、タッチスクリーン、マイク、カメラ（視線検知カメラ等を含む）等に対する利用者の操作（動作、音声、視線等を含む）に基づいてデータを受け付ける受付装置１１０６と、ＣＲＴ、液晶ディスプレイ、スピーカー等の出力装置１１０５と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース１１０７、そして、それらをつないでデータのやりとりをするためのバス１１０８により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【００５１】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図１１に示すハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図１１に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続している形態でもよく、さらに図１１に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器（携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む）、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００５２】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分若しくは全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００５３】
１００…情報処理装置
１０５…データ制御モジュール
１１０…データ受付モジュール
１１５…生成モジュール
１２０…保存（Ａ）モジュール
１２５…保存（Ｂ）モジュール
１３０…データ記憶モジュール
１３５…取得モジュール
１４０…復号モジュール
１４５…出力モジュール
１５０…通信モジュール
２１０…デバイス
２５０…記憶装置
２９０…通信回線
【図１】
2019060920.tif 000003
【図２】
2019060920.tif 000004
【図３】
2019060920.tif 000005
【図４】
2019060920.tif 000006
【図５】
2019060920.tif 000007
【図６】
2019060920.tif 000008
【図７】
2019060920.tif 000009
【図８】
2019060920.tif 000010
【図９】
2019060920.tif 000011
【図１０】
2019060920.tif 000012
【図１１】
2019060920.tif 000013