(57)【特許請求の範囲】
【請求項１】
ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバであり、
データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信するプロキシサーバ通信部と、
前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化部と、を備え、
前記プロキシサーバ通信部は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、プロキシサーバであって、
前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成部をさらに備え、
前記プロキシサーバ通信部は、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、
前記プロキシサーバ通信部は、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、
前記プロキシサーバは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行うタグ検証部をさらに備える、
プロキシサーバ。
【請求項２】
ユーザ端末とストレージサーバと受領サーバと請求項１に記載のプロキシサーバとを備える暗号化データ管理システム。
【請求項３】
ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバのコンピュータに、
データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信する通信機能と、
前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化機能と、を実現させるためのコンピュータプログラムであり、
前記通信機能は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、コンピュータプログラムであって、
前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成機能をさらに前記コンピュータに実現させ、
前記通信機能は、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、
前記通信機能は、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、
前記コンピュータプログラムは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行うタグ検証機能をさらに前記コンピュータに実現させる、
コンピュータプログラム。
【請求項４】
ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける暗号化データ管理方法であり、
前記プロキシサーバは、データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信し、
前記プロキシサーバは、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行い、
前記プロキシサーバは、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、暗号化データ管理方法であって、
前記プロキシサーバは、前記受領サーバから取得した検索キーワードについてのトラップドアを生成し、
前記プロキシサーバは、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、
前記プロキシサーバは、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、
前記プロキシサーバは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行う、
暗号化データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化データ管理システム、プロキシサーバ、暗号化データ管理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
近年、パーソナルデータの利用が検討されている。例えば個人の滞在している位置を示す位置情報などのライフログデータを、通信ネットワークを介して他者がアクセスできる場所（例えば、クラウドストレージサーバ等）に保管しておくことにより、ライフログデータの活用が容易になると考えられる。しかしながら、プライバシ保護の観点からライフログデータの取り扱いには慎重を期することが肝要である。このため、例えば、ユーザがクラウドストレージサーバに保管したライフログデータに対して、当該ユーザが許可した他者にのみアクセスを可能にすることが、プライバシ保護の対策として挙げられる。また、ライフログデータへのアクセス制御については柔軟できることが望ましい。例えば、通常は位置情報を提供していても、ある特定の区域内にいる場合の位置情報は提供しないといったことである。また、クラウドストレージサーバを管理するクラウドストレージ事業者に対して該クラウドストレージサーバで保管されているライフログデータを秘匿することにより、ライフログデータを預けているユーザの安心感が増す。これらの点を解決するためにライフログデータを暗号化してクラウドストレージサーバに保管しておくことが考えられる。
【０００３】
従来の暗号技術として、例えばプロキシ再暗号化（Proxy Re-Encryption：PRE）技術や検索可能暗号技術などの暗号技術が知られている。プロキシ再暗号化技術は、ファイルを暗号化したまま、他の鍵で暗号化したファイルに変換する技術である（例えば、非特許文献１参照）。検索可能暗号技術は、暗号化されたファイルを復号化することなく検索する技術である（例えば、非特許文献２参照）。また、検索可能暗号の処理時間を短縮する「Secure Indexes」という技術が知られている（例えば、非特許文献３参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】M. Blaze, G. Bleumer, and M. Strauss, “Divertible protocols and atomic proxy cryptography”, Advances in Cryptology EUROCRYPT'98, pp.127-144, Springer, 1998.
【非特許文献２】D. Boneh, G. Di Crescenzo, R. Ostrovsky, and G. Persiano. “Public key encryption with keyword search.”, In EUROCRYPT ’04, pp.506-522, 2004.
【非特許文献３】E. Goh, “Secure Indexes”,Cryptology ePrint Archive, Report 2003/216, 2003.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上述した従来のプロキシ再暗号化技術や検索可能暗号技術を利用して暗号化データの共用を行う場合に、暗号処理の負荷が重いという課題がある。また、「Secure Indexes」技術では、検索可能暗号の処理時間を短縮できるが、誤検索「False Positive」が発生する場合がある。
【０００６】
本発明は、このような事情を考慮してなされたものであり、プロキシ再暗号化技術や検索可能暗号技術を利用して暗号化データの共用を行う場合に、暗号処理についての負荷を軽減できる、暗号化データ管理システム、プロキシサーバ、暗号化データ管理方法およびコンピュータプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００７】
本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバであり、データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信するプロキシサーバ通信部と、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化部と、を備え、前記プロキシサーバ通信部は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、プロキシサーバであって、前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成部をさらに備え、前記プロキシサーバ通信部は、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、前記プロキシサーバ通信部は、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、前記プロキシサーバは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行うタグ検証部をさらに備える、プロキシサーバである。
本発明の一態様は、ユーザ端末とストレージサーバと受領サーバと上記のプロキシサーバとを備える暗号化データ管理システムである。
本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバのコンピュータに、データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信する通信機能と、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化機能と、を実現させるためのコンピュータプログラムであり、
前記通信機能は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、コンピュータプログラムであって、前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成機能をさらに前記コンピュータに実現させ、前記通信機能は、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、前記通信機能は、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、前記コンピュータプログラムは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行うタグ検証機能をさらに前記コンピュータに実現させる、コンピュータプログラムである。
本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける暗号化データ管理方法であり、前記プロキシサーバは、データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信し、前記プロキシサーバは、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行い、前記プロキシサーバは、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、暗号化データ管理方法であって、
前記プロキシサーバは、前記受領サーバから取得した検索キーワードについてのトラップドアを生成し、前記プロキシサーバは、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、前記プロキシサーバは、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、前記プロキシサーバは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行う、暗号化データ管理方法である。
（１）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムであり、前記ユーザ端末は、前記ストレージサーバ及び前記プロキシサーバと通信するユーザ端末通信部と、データの暗号化データを生成するデータ暗号化部と、前記データの暗号化データについての鍵の暗号化データを生成する鍵暗号化部と、前記受領サーバについての再暗号化鍵を生成する鍵生成部と、を備え、前記ユーザ端末通信部は、前記データの暗号化データ及び前記鍵の暗号化データを前記ストレージサーバへ送信し、前記再暗号化鍵を前記プロキシサーバへ送信し、前記ストレージサーバは、前記ユーザ端末、前記プロキシサーバ及び前記受領サーバと通信するストレージサーバ通信部と、前記ユーザ端末から取得した前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する暗号化データ記憶部と、を備え、前記ストレージサーバ通信部は、前記鍵の暗号化データを前記プロキシサーバへ送信し、前記データの暗号化データを前記受領サーバへ送信し、前記プロキシサーバは、前記ユーザ端末、前記ストレージサーバ及び前記受領サーバと通信するプロキシサーバ通信部と、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記再暗号化鍵で再暗号化を行う再暗号化部と、を備え、前記プロキシサーバ通信部は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、前記受領サーバは、前記ストレージサーバ及び前記プロキシサーバと通信する受領サーバ通信部と、前記プロキシサーバから取得した前記再暗号化された鍵の暗号化データを復号化して鍵を取得し、該取得した鍵で、前記ストレージサーバから取得した前記データの暗号化データを復号化する復号化部と、を備える、暗号化データ管理システムである。
【０００８】
（２）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムであり、前記ユーザ端末は、前記ストレージサーバ及び前記プロキシサーバと通信するユーザ端末通信部と、データの暗号化データを生成するデータ暗号化部と、前記データについてのタグに基づいたインデックスを生成するインデックス生成部と、前記受領サーバについての再暗号化鍵を生成する鍵生成部と、を備え、前記ユーザ端末通信部は、前記データの暗号化データ及び前記インデックスを前記ストレージサーバへ送信し、前記再暗号化鍵を前記プロキシサーバへ送信し、前記ストレージサーバは、前記ユーザ端末及び前記プロキシサーバと通信するストレージサーバ通信部と、前記ユーザ端末から取得した前記データの暗号化データと前記インデックスとを関連付けて格納する暗号化データ記憶部と、前記プロキシサーバから取得したトラップドアに基づいて前記インデックスに関連付けられている暗号化データを検索する暗号検索部と、を備え、前記ストレージサーバ通信部は、前記検索の結果であるデータの暗号化データを前記プロキシサーバへ送信し、前記プロキシサーバは、前記ユーザ端末、前記ストレージサーバ及び前記受領サーバと通信するプロキシサーバ通信部と、前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成部と、前記トラップドアに基づく検索の結果として前記ストレージサーバから取得したデータの暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化部と、を備え、前記プロキシサーバ通信部は、前記再暗号化されたデータの暗号化データを前記受領サーバへ送信し、前記受領サーバは、前記プロキシサーバと通信する受領サーバ通信部と、前記プロキシサーバから取得した前記再暗号化されたデータの暗号化データを復号化する復号化部と、を備える、暗号化データ管理システムである。
【０００９】
（３）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバであり、データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信するプロキシサーバ通信部と、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化部と、を備え、前記プロキシサーバ通信部は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、プロキシサーバである。
（４）本発明の一態様は、上記（３）のプロキシサーバにおいて、前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成部をさらに備え、前記プロキシサーバ通信部は、前記データについてのタグに基づいたインデックスを前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバへ前記トラップドアを送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるインデックス及び該インデックスに関連付けられている前記鍵の暗号化データを受信し、該受信したインデックス及び前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、プロキシサーバである。
（５）本発明の一態様は、上記（４）のプロキシサーバにおいて、前記プロキシサーバ通信部は、前記データについてのタグの暗号化データを該タグに基づいたインデックス、前記データの暗号化データ及び前記鍵の暗号化データと関連付けて格納する前記ストレージサーバから、前記トラップドアに基づいた検索の結果であるタグの暗号化データを受信し、前記プロキシサーバは、前記受信したタグの暗号化データの復号結果と前記検索キーワードに基づいてタグの検証を行うタグ検証部をさらに備える、プロキシサーバである。
【００１０】
（６）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバであり、データの暗号化データと前記データについてのタグに基づいたインデックスとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記インデックスとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバに格納されている前記データの暗号化データの提供を受ける受領サーバと通信するプロキシサーバ通信部と、前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成部と、前記プロキシサーバ通信部により前記ストレージサーバから取得したデータの暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化部と、をさらに備え、前記プロキシサーバ通信部は、前記トラップドアを前記ストレージサーバへ送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるデータの暗号化データを受信し、前記再暗号化されたデータの暗号化データを前記受領サーバへ送信する、プロキシサーバである。
【００１１】
（７）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記ユーザ端末であり、前記ストレージサーバ及び前記プロキシサーバと通信するユーザ端末通信部と、データの暗号化データを生成するデータ暗号化部と、前記データの暗号化データについての鍵の暗号化データを生成する鍵暗号化部と、前記受領サーバについての再暗号化鍵を生成する鍵生成部と、を備え、前記ユーザ端末通信部は、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバへ前記データの暗号化データ及び前記鍵の暗号化データを送信し、前記ストレージサーバから取得した前記鍵の暗号化データに対して前記再暗号化鍵で再暗号化を行う前記プロキシサーバへ前記再暗号化鍵を送信する、ユーザ端末である。
【００１２】
（８）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記ユーザ端末であり、前記ストレージサーバ及び前記プロキシサーバと通信するユーザ端末通信部と、データの暗号化データを生成するデータ暗号化部と、前記データについてのタグに基づいたインデックスを生成するインデックス生成部と、前記受領サーバについての再暗号化鍵を生成する鍵生成部と、を備え、前記ユーザ端末通信部は、前記データの暗号化データと前記インデックスとを関連付けて格納する前記ストレージサーバへ前記データの暗号化データ及び前記インデックスを送信し、前記受領サーバの検索キーワードについてのトラップドアに基づいた検索の結果として前記ストレージサーバから取得したデータの暗号化データに対して前記再暗号化鍵で再暗号化を行う前記プロキシサーバへ前記再暗号化鍵を送信する、ユーザ端末である。
【００１３】
（９）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける暗号化データ管理方法であり、前記ユーザ端末が、データの暗号化データを生成し、前記データの暗号化データについての鍵の暗号化データを生成し、前記データの暗号化データ及び前記鍵の暗号化データを前記ストレージサーバへ送信し、前記受領サーバについての再暗号化鍵を生成し、前記再暗号化鍵を前記プロキシサーバへ送信し、前記ストレージサーバが、前記ユーザ端末から取得した前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納し、前記鍵の暗号化データを前記プロキシサーバへ送信し、前記データの暗号化データを前記受領サーバへ送信し、前記プロキシサーバが、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記再暗号化鍵で再暗号化を行い、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信し、前記受領サーバが、前記プロキシサーバから取得した前記再暗号化された鍵の暗号化データを復号化して鍵を取得し、該取得した鍵で、前記ストレージサーバから取得した前記データの暗号化データを復号化する、暗号化データ管理方法である。
【００１４】
（１０）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける暗号化データ管理方法であり、前記ユーザ端末が、データの暗号化データを生成し、前記データについてのタグに基づいたインデックスを生成し、前記データの暗号化データ及び前記インデックスを前記ストレージサーバへ送信し、前記受領サーバについての再暗号化鍵を生成し、前記再暗号化鍵を前記プロキシサーバへ送信し、前記ストレージサーバが、前記ユーザ端末から取得した前記データの暗号化データと前記インデックスとを関連付けて格納し、前記プロキシサーバが、前記受領サーバから取得した検索キーワードについてのトラップドアを生成し、前記トラップドアを前記ストレージサーバへ送信し、前記ストレージサーバが、前記プロキシサーバから取得したトラップドアに基づいて前記インデックスに関連付けられている暗号化データを検索し、前記検索の結果であるデータの暗号化データを前記プロキシサーバへ送信し、前記プロキシサーバが、前記トラップドアに基づいた検索の結果として前記ストレージサーバから取得したデータの暗号化データに対して、前記ユーザ端末から取得した前記再暗号化鍵で再暗号化を行い、前記再暗号化されたデータの暗号化データを前記受領サーバへ送信し、前記受領サーバが、前記プロキシサーバから取得した前記再暗号化されたデータの暗号化データを復号化する、暗号化データ管理方法である。
【００１５】
（１１）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバのコンピュータに、データの暗号化データと前記データの暗号化データについての鍵の暗号化データとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記鍵の暗号化データとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバから前記データの暗号化データを取得する前記受領サーバと通信する通信機能と、前記ストレージサーバから取得した前記鍵の暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化機能と、を実現させるためのコンピュータプログラムであり、前記通信機能は、前記再暗号化された鍵の暗号化データを前記受領サーバへ送信する、コンピュータプログラムである。
【００１６】
（１２）本発明の一態様は、ユーザ端末とストレージサーバとプロキシサーバと受領サーバを備える暗号化データ管理システムにおける前記プロキシサーバのコンピュータに、データの暗号化データと前記データについてのタグに基づいたインデックスとを前記ストレージサーバへ送信する前記ユーザ端末、前記データの暗号化データと前記インデックスとを関連付けて格納する前記ストレージサーバ、及び前記ストレージサーバに格納されている前記データの暗号化データの提供を受ける受領サーバと通信する通信機能と、前記受領サーバから取得した検索キーワードについてのトラップドアを生成するトラップドア生成機能と、前記通信機能により前記ストレージサーバから取得したデータの暗号化データに対して、前記ユーザ端末から取得した前記受領サーバについての再暗号化鍵で再暗号化を行う再暗号化機能と、を実現させるためのコンピュータプログラムであり、前記通信機能は、前記トラップドアを前記ストレージサーバへ送信し、前記ストレージサーバから前記トラップドアに基づいた検索の結果であるデータの暗号化データを受信し、前記再暗号化されたデータの暗号化データを前記受領サーバへ送信する、コンピュータプログラムである。
【発明の効果】
【００１７】
本発明によれば、プロキシ再暗号化技術や検索可能暗号技術を利用して暗号化データの共用を行う場合に、暗号処理についての負荷を軽減できるという効果が得られる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１実施形態に係る暗号化データ管理システムの構成を示すブロック図である。
【図２】本発明の第１実施形態に係る暗号化データ管理方法の手順を示すシーケンスチャートである。
【図３】本発明の第２実施形態に係る暗号化データ管理システムの構成を示すブロック図である。
【図４】本発明の第２実施形態に係る暗号化データ管理方法の手順を示すシーケンスチャートである。
【図５】本発明の第３実施形態に係る暗号化データ管理システムの構成を示すブロック図である。
【図６】本発明の第３実施形態に係る暗号化データ管理方法の手順を示すシーケンスチャートである。
【発明を実施するための形態】
【００１９】
以下、図面を参照し、本発明の実施形態について説明する。はじめにプロキシ再暗号化処理と検索可能暗号処理について説明する。
【００２０】
［プロキシ再暗号化処理］
プロキシ再暗号化処理は、アルゴリズムＰＫＧ，Ｅ，Ｄ，ＲＧ，Ｒから構成される。鍵生成アルゴリズムＰＫＧは、セキュリティパラメータｋを入力として、鍵ペア（ｐｋ，ｓｋ）を出力する。暗号化アルゴリズムＥは、ユーザＡの鍵ｐｋ＿Ａとメッセージｍを入力として、暗号文ｃ＿Ａを出力する。復号アルゴリズムＤは、ユーザＡの鍵ｓｋ＿Ａと暗号文ｃ＿Ａを入力として、メッセージｍを出力する。再暗号化鍵生成アルゴリズムＲＧは、ユーザＡの鍵ｐｋ＿Ａ，ｓｋ＿Ａと、ユーザＢの鍵ｐｋ＿Ｂとを入力として、再暗号化鍵ｒｋ＿（Ａ，Ｂ）を出力する。再暗号化アルゴリズムＲは、再暗号化鍵ｒｋ＿（Ａ，Ｂ）と暗号文ｃ＿Ａを入力として、再暗号化された暗号文ｃ＿Ｂを出力する。ここで、たとえ再暗号化鍵ｒｋ＿（Ａ，Ｂ）を所有していても、メッセージｍに関する情報は全く得られない。このプロキシ再暗号化処理は、例えば非特許文献１に記載されている。
【００２１】
［検索可能暗号処理］
検索可能暗号処理は、アルゴリズムＳＫＧ，ＴＤ，ＢＩ，ＳＩから構成される。鍵生成アルゴリズムＳＫＧは、セキュリティパラメータｋを入力として、マスター鍵ｍｋを出力する。トラップドア生成アルゴリズムＴＤは、マスター鍵ｍｋとキーワードｗを入力として、トラップドアｔ＿ｗを出力する。インデックス生成アルゴリズムＢＩは、マスター鍵ｍｋと文書ｄを入力として、インデックスｉ＿ｄを出力する。インデックス検索アルゴリズムＳＩは、トラップドアｔ＿ｗとインデックスｉ＿ｄを入力として、文書ｄにキーワードｗが含まれている場合には１を出力し、そうではない場合には０を出力する。この検索可能暗号処理は、例えば非特許文献２に記載されている。
【００２２】
［第１実施形態］
図１は、本発明の第１実施形態に係る暗号化データ管理システムの構成を示すブロック図である。図１において、ユーザ端末１０、ストレージサーバ３０、プロキシサーバ５０及び受領サーバ７０は、それぞれに通信ネットワーク９０に接続しており、通信ネットワーク９０を介して相互にデータを送受できるようになっている。
【００２３】
ユーザ端末１０は、ストレージサーバ３０に対して、データの暗号化データの保管を依頼するものである。ユーザ端末１０は、通信部１１（ユーザ端末通信部）、鍵生成部１２、データ暗号化部１３、インデックス生成部１４、タグ設定部１５及びデータ記憶部１６を備える。通信部１１は、通信ネットワーク９０を介して、他の装置とデータの送受を行う。鍵生成部１２は鍵の生成を行う。データ暗号化部１３はデータの暗号化を行う。インデックス生成部１４はインデックスの生成を行う。タグ設定部１５はタグの設定を行う。データ記憶部１６はデータを記憶する。
【００２４】
ユーザ端末１０は、メモリ及びＣＰＵ（中央演算処理装置）等により構成され、該ユーザ端末１０の機能を実現するためのコンピュータプログラムをＣＰＵが実行することによりその機能を実現させるものである。ユーザ端末１０として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。また、ユーザ端末１０として、スマートフォン等の携帯通信端末装置、タブレット型のコンピュータ装置、据置き型のパーソナルコンピュータ装置などを利用してもよい。
【００２５】
ストレージサーバ３０は、通信部３１（ストレージサーバ通信部）、暗号検索部３２及び暗号化データ記憶部３３を備える。通信部３１は、通信ネットワーク９０を介して、他の装置とデータの送受を行う。暗号検索部３２は、暗号化データ記憶部３３に記憶されている暗号化データの検索を行う。暗号化データ記憶部３３は暗号化データを記憶する。
【００２６】
ストレージサーバ３０は、メモリ及びＣＰＵ等により構成され、該ストレージサーバ３０の機能を実現するためのコンピュータプログラムをＣＰＵが実行することによりその機能を実現させるものである。ストレージサーバ３０として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【００２７】
プロキシサーバ５０は、通信部５１（プロキシサーバ通信部）、トラップドア生成部５２、再暗号化部５３、アクセス権検証部５４及びアクセス権記憶部５５を備える。通信部５１は、通信ネットワーク９０を介して、他の装置とデータの送受を行う。トラップドア生成部５２はトラップドアの生成を行う。再暗号化部５３は暗号化データの再暗号化を行う。アクセス権検証部５４は、ストレージサーバ３０に保管されている暗号化データへのアクセス権の検証を行う。アクセス権記憶部５５は、ストレージサーバ３０に保管されている暗号化データへのアクセス権の情報を記憶する。
【００２８】
プロキシサーバ５０は、メモリ及びＣＰＵ等により構成され、該プロキシサーバ５０の機能を実現するためのコンピュータプログラムをＣＰＵが実行することによりその機能を実現させるものである。プロキシサーバ５０として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【００２９】
受領サーバ７０は、ストレージサーバ３０に保管されているデータの暗号化データの提供を受けるものである。受領サーバ７０は、通信部７１（受領サーバ通信部）と復号化部７２を備える。通信部７１は、通信ネットワーク９０を介して、他の装置とデータの送受を行う。復号化部７２は暗号化データの復号化を行う。
【００３０】
受領サーバ７０は、メモリ及びＣＰＵ等により構成され、該受領サーバ７０の機能を実現するためのコンピュータプログラムをＣＰＵが実行することによりその機能を実現させるものである。受領サーバ７０として、汎用のコンピュータ装置を使用して構成してもよく、又は、専用のハードウェア装置として構成してもよい。
【００３１】
次に、図２を参照して、図１に示される第１実施形態に係る暗号化データ管理システムの動作を説明する。図２は、本発明の第１実施形態に係る暗号化データ管理方法の手順を示すシーケンスチャートである。以下、ユーザ端末１０、ストレージサーバ３０、プロキシサーバ５０、受領サーバ７０のいずれか複数の間におけるデータのやり取りは、各通信部によって通信ネットワーク９０を介して行われるものとする。
【００３２】
ユーザ端末１０は、事前に、鍵生成部１２により鍵を生成する。鍵生成部１２は、鍵生成アルゴリズムＰＫＧを実行し、セキュリティパラメータｋを入力として、鍵ペア（ｐｋ＿Ａ，ｓｋ＿Ａ）を取得する。鍵ｓｋ＿Ａは秘密に取得されてユーザ端末１０内に安全に保持される。ユーザ端末１０は、鍵ｐｋ＿Ａを公開する。受領サーバ７０も同様にして、鍵ペア（ｐｋ＿Ｂ，ｓｋ＿Ｂ）を取得する。鍵ｓｋ＿Ｂは秘密に取得されて受領サーバ７０内に安全に保持される。受領サーバ７０は、鍵ｐｋ＿Ｂを公開する。
【００３３】
また、ユーザ端末１０の鍵生成部１２は、鍵生成アルゴリズムＳＫＧを実行し、マスター鍵ｍｋを取得する。ユーザ端末１０は、マスター鍵ｍｋをプロキシサーバ５０へ送信する。
【００３４】
（ステップＳ１０１）ユーザ端末１０のデータ記憶部１６には、ストレージサーバ３０に預けるデータｖが記憶されている。ユーザ端末１０のタグ設定部１５は、データｖについてのタグを設定する。ここでは、説明の便宜上、２つのタグｕ＿１，ｕ＿２を設定することとする。例えば、データｖがユーザの詳細な滞在場所と滞在時刻を示す位置情報であるとする。この場合、タグｕ＿１，ｕ＿２として、該滞在場所と滞在時刻を粗くした情報として設定する。例えば、滞在場所に関するタグとして「渋谷」、滞在時刻に関するタグとして「１月上旬」、くらいに、他者に知られてもそれほど気にならないレベルに曖昧化させる。
【００３５】
ユーザ端末１０のデータ暗号化部１３は、暗号化アルゴリズムＥを実行して、データｖを自己の公開鍵ｐｋ＿Ａで暗号化し、暗号化データＥ（ｐｋ＿Ａ，ｖ）を取得する。また、ユーザ端末１０のインデックス生成部１４は、データｖについての全てのタグｕ＿１，ｕ＿２を１つの文書ｄとし、マスター鍵ｍｋを使用して文書ｄに対しインデックス生成アルゴリズムＢＩを実行し、インデックスｉ＿ｄを取得する。
【００３６】
ユーザ端末１０は、ストレージサーバ３０に対して、インデックスｉ＿ｄと暗号化データＥ（ｐｋ＿Ａ，ｖ）を送信する。ストレージサーバ３０は、該受信したインデックスｉ＿ｄと暗号化データＥ（ｐｋ＿Ａ，ｖ）を関連付けて暗号化データ記憶部３３に格納する。
【００３７】
（ステップＳ１０２）ユーザ端末１０は、プロキシサーバ５０に対して、アクセス権の情報を設定する。該アクセス権の情報として、例えば、ユーザ端末１０からストレージサーバ３０へ預けたデータの提供を許可する相手の事業者を示す情報が挙げられる。また、該アクセス権の情報として、例えば、データの提供を許可しない時間帯や、データの提供相手の居場所などが挙げられる。プロキシサーバ５０は、ユーザ端末１０から設定されたアクセス権の情報を該ユーザ端末１０の識別情報に関連付けてアクセス権記憶部５５に格納する。
【００３８】
（ステップＳ１０３）受領サーバ７０は、ストレージサーバ３０で保管されている暗号化データの検索をプロキシサーバ５０に依頼する。受領サーバ７０は、該暗号化データの検索のための検索キーワードｘを、プロキシサーバ５０へ送信する。プロキシサーバ５０は、該検索の依頼を受けると、該受領サーバ７０についてのアクセス権の有無を、アクセス権記憶部５５に記憶されているアクセス権の情報に基づいて判断する。ここでは、該受領サーバ７０がアクセス権を有すると判断されたとする。
【００３９】
（ステップＳ１０４）プロキシサーバ５０のトラップドア生成部５２は、マスター鍵ｍｋと受領サーバ７０から受信した検索キーワードｘとを使用してトラップドア生成アルゴリズムＴＤを実行し、トラップドアｔ＿ｘを取得する。プロキシサーバ５０は、該取得したトラップドアｔ＿ｘを、ストレージサーバ３０へ送信する。
【００４０】
（ステップＳ１０５）ストレージサーバ３０の暗号検索部３２は、暗号化データ記憶部３３に記憶されている全ての暗号化データについてのインデックスに対し、プロキシサーバ５０から受信したトラップドアｔ＿ｘを使用してインデックス検索アルゴリズムＳＩを実行する。この結果として、インデックス検索アルゴリズムＳＩは、検索キーワードｘが含まれているインデックスに対して１を出力する。ストレージサーバ３０は、該１が出力されたインデックスに関連付けられている暗号化データを、プロキシサーバ５０へ送信する。ここでは、検索キーワードｘがタグｕ＿１に等しく、インデックスｉ＿ｄに対して１が出力されたために、インデックスｉ＿ｄに関連付けられている暗号化データＥ（ｐｋ＿Ａ，ｖ）がプロキシサーバ５０へ送信されたとする。
【００４１】
（ステップＳ１０６）プロキシサーバ５０は、ユーザ端末１０に対して、受領サーバ７０についての再暗号化鍵を要求する。ユーザ端末１０の鍵生成部１２は、該再暗号化鍵の要求に応じて、自己の鍵ｐｋ＿Ａ，ｓｋ＿Ａと、受領サーバ７０の公開鍵ｐｋ＿Ｂとを使用して再暗号化鍵生成アルゴリズムＲＧを実行し、再暗号化鍵ｒｋ＿（Ａ，Ｂ）を取得する。ユーザ端末１０は、該取得した再暗号化鍵ｒｋ＿（Ａ，Ｂ）をプロキシサーバ５０へ送信する。
なお、このステップＳ１０６の代わりに、事前に、ユーザ端末１０の鍵生成部１２が受領サーバ７０についての再暗号化鍵ｒｋ＿（Ａ，Ｂ）を生成し、ユーザ端末１０が該再暗号化鍵ｒｋ＿（Ａ，Ｂ）をプロキシサーバ５０へ送信しておいてもよい。
【００４２】
（ステップＳ１０７）プロキシサーバ５０の再暗号化部５３は、ストレージサーバ３０から取得した暗号化データＥ（ｐｋ＿Ａ，ｖ）に対し、ユーザ端末１０から取得した再暗号化鍵ｒｋ＿（Ａ，Ｂ）を使用して再暗号化アルゴリズムＲを実行し、再暗号化された暗号化データＥ（ｐｋ＿Ｂ，ｖ）を取得する。このとき、プロキシサーバ５０は、データｖについての何の情報も得ることがない。プロキシサーバ５０は、該取得した暗号化データＥ（ｐｋ＿Ｂ，ｖ）を受領サーバ７０へ送信する。受領サーバ７０の復号化部７２は、復号アルゴリズムＤを実行して、暗号化データＥ（ｐｋ＿Ｂ，ｖ）を自己の秘密鍵ｓｋ＿Ｂで復号化し、データｖを取得する。
【００４３】
上述した第１実施形態によれば、プロキシサーバ５０が、ストレージサーバ３０に保管されている暗号化データの検索のためのトラップドアを生成し、該トラップドアに基づいた検索結果の暗号化データをストレージサーバ３０から受け取り、該受け取った暗号化データを受領サーバ７０についての再暗号化鍵で再暗号化する。このため、受領サーバ７０は、該再暗号化された暗号化データを自己の鍵で復号化できるので、ストレージサーバ３０に暗号化データを預けたユーザ端末１０についての鍵を有する必要がない。これにより、ストレージサーバ３０に暗号化データを預けるユーザ端末１０が複数存在しても、データの提供を受ける受領サーバ７０は、該複数のユーザ端末１０毎の鍵を有さなくてもよく、暗号処理についての負荷を軽減できるという効果が得られる。
【００４４】
［第２実施形態］
第２実施形態は、上述した第１実施形態の変形例である。
図３は、本発明の第２実施形態に係る暗号化データ管理システムの構成を示すブロック図である。この図３において、図１の各部に対応する部分には同一の符号を付している。以下、第１実施形態と異なる点を主に説明する。
【００４５】
図３において、ユーザ端末１０は、図１の構成に対してさらに鍵暗号化部１７を備える。鍵暗号化部１７は鍵の暗号化を行う。
【００４６】
図４は、本発明の第２実施形態に係る暗号化データ管理方法の手順を示すシーケンスチャートである。以下、図４を参照して、図３に示される第２実施形態に係る暗号化データ管理システムの動作について、第１実施形態と異なる点を主に説明する。以下、ユーザ端末１０、ストレージサーバ３０、プロキシサーバ５０、受領サーバ７０のいずれか複数の間におけるデータのやり取りは、各通信部によって通信ネットワーク９０を介して行われるものとする。
【００４７】
まず第１実施形態と同様に、事前に、ユーザ端末１０は、鍵ペア（ｐｋ＿Ａ，ｓｋ＿Ａ）を取得し、鍵ｓｋ＿Ａをユーザ端末１０内に安全に保持し、鍵ｐｋ＿Ａを公開する。受領サーバ７０も同様に、鍵ペア（ｐｋ＿Ｂ，ｓｋ＿Ｂ）を取得し、鍵ｓｋ＿Ｂを受領サーバ７０内に安全に保持し、鍵ｐｋ＿Ｂを公開する。また、ユーザ端末１０は、マスター鍵ｍｋを取得し、該マスター鍵ｍｋをプロキシサーバ５０へ送信する。
【００４８】
（ステップＳ１０１ａ）ユーザ端末１０の鍵生成部１２は、データｖを暗号化する鍵として乱数ｒを生成する。ユーザ端末１０のデータ暗号化部１３は、共通鍵暗号方式によりデータｖを乱数ｒで暗号化し、暗号化データＥ（ｒ，ｖ）を取得する。ユーザ端末１０の鍵暗号化部１７は、暗号化アルゴリズムＥを実行して、データｖを暗号化した鍵（乱数ｒ）を自己の公開鍵ｐｋ＿Ａで暗号化し、暗号化データＥ（ｐｋ＿Ａ，ｒ）を取得する。また、ユーザ端末１０は、第１実施形態と同様に、データｖについてのタグｕ＿１，ｕ＿２からインデックスｉ＿ｄを取得する。
【００４９】
ユーザ端末１０は、ストレージサーバ３０に対して、インデックスｉ＿ｄと暗号化データＥ（ｐｋ＿Ａ，ｒ）と暗号化データＥ（ｒ，ｖ）とを送信する。ストレージサーバ３０は、該受信したインデックスｉ＿ｄと暗号化データＥ（ｐｋ＿Ａ，ｒ）と暗号化データＥ（ｒ，ｖ）とを関連付けて暗号化データ記憶部３３に格納する。
【００５０】
次いで、上述した第１実施形態と同様に、ステップＳ１０２，Ｓ１０３，Ｓ１０４が行われる。次いで、ステップＳ１０５ａが行われる。
（ステップＳ１０５ａ）ストレージサーバ３０の暗号検索部３２は、暗号化データ記憶部３３に記憶されている全ての暗号化データについてのインデックスに対し、プロキシサーバ５０から受信したトラップドアｔ＿ｘを使用してインデックス検索アルゴリズムＳＩを実行する。この結果として、インデックス検索アルゴリズムＳＩは、検索キーワードｘが含まれているインデックスに対して１を出力する。ストレージサーバ３０は、該１が出力されたインデックスに関連付けられているインデックス及び鍵の暗号化データを、プロキシサーバ５０へ送信する。ここでは、検索キーワードｘがタグｕ＿１に等しく、インデックスｉ＿ｄに対して１が出力されたために、インデックスｉ＿ｄと該インデックスｉ＿ｄに関連付けられている暗号化データＥ（ｐｋ＿Ａ，ｒ）とがプロキシサーバ５０へ送信されたとする。
【００５１】
次いで、上述した第１実施形態と同様に、ステップＳ１０６が行われる。なお、このステップＳ１０６の代わりに、事前に、ユーザ端末１０からプロキシサーバ５０へ、受領サーバ７０についての再暗号化鍵ｒｋ＿（Ａ，Ｂ）を送信しておいてもよい。
次いで、ステップＳ１０７ａが行われる。
（ステップＳ１０７ａ）プロキシサーバ５０の再暗号化部５３は、ストレージサーバ３０から取得した暗号化データＥ（ｐｋ＿Ａ，ｒ）に対し、ユーザ端末１０から取得した再暗号化鍵ｒｋ＿（Ａ，Ｂ）を使用して再暗号化アルゴリズムＲを実行し、再暗号化された暗号化データＥ（ｐｋ＿Ｂ，ｒ）を取得する。プロキシサーバ５０は、該取得した暗号化データＥ（ｐｋ＿Ｂ，ｒ）と、ストレージサーバ３０から取得したインデックスｉ＿ｄとを受領サーバ７０へ送信する。
【００５２】
（ステップＳ１１０）受領サーバ７０は、プロキシサーバ５０から取得したインデックスｉ＿ｄをストレージサーバ３０へ送信する。ストレージサーバ３０は、該インデックスｉ＿ｄに関連付けられている暗号化データＥ（ｒ，ｖ）を受領サーバ７０へ送信する。
【００５３】
受領サーバ７０の復号化部７２は、復号アルゴリズムＤを実行して、プロキシサーバ５０から取得した暗号化データＥ（ｐｋ＿Ｂ，ｒ）を自己の秘密鍵ｓｋ＿Ｂで復号化し、鍵（乱数ｒ）を取得する。受領サーバ７０の復号化部７２は、該取得した鍵（乱数ｒ）を使用して、ストレージサーバ３０から取得した暗号化データＥ（ｒ，ｖ）を復号化し、データｖを取得する。
【００５４】
上述した第２実施形態によれば、データｖの暗号についての鍵をプロキシ再暗号化して受領サーバ７０（復号側）へ渡すようにしている。これにより、データｖについてはプロキシ再暗号化処理を行う必要がなく、データｖについての暗号方式は限定されず任意の暗号方式を利用できる。例えば、上述した第２実施形態のように、共通鍵暗号方式によりデータｖを暗号化できる。一般に、共通鍵暗号方式は公開鍵暗号方式よりも処理時間を短くできる。これにより、暗号処理についての負荷を軽減できる。
【００５５】
また、第２実施形態によれば、プロキシサーバ５０は、鍵の暗号化データをストレージサーバ３０から受信し、該鍵の暗号化データを再暗号化した暗号化データを受領サーバ７０へ送信する。これは、データの暗号化データやデータの暗号化データを再暗号化した暗号化データを送受するよりも、通信データ量を削減できる。
【００５６】
［第３実施形態］
第３実施形態は、上述した第２実施形態の変形例である。第３実施形態では、検索可能暗号の処理時間を短縮する「Secure Indexes」技術を使用する。この「Secure Indexes」技術は、検索可能暗号の処理時間を短縮できるが、誤検索「False Positive」が発生する場合がある。「False Positive」とは、文書ｄに含まれていないキーワードを用いてトラップドアを生成したにもかかわらず、文書ｄから生成されたインデックスであると誤判定してしまうエラーである。このエラーが発生すると、ユーザ端末１０が受領サーバ７０への提供を許可していない文書が受領サーバ７０に提供されてしまう、という問題が生じる可能性がある。本第３実施形態では、検索可能暗号の処理時間を短縮する「Secure Indexes」技術を使用したときに、「False Positive」の発生による問題を防ぐことを図る。
【００５７】
図５は、本発明の第３実施形態に係る暗号化データ管理システムの構成を示すブロック図である。この図５において、図３の各部に対応する部分には同一の符号を付している。以下、第２実施形態と異なる点を主に説明する。
【００５８】
図５において、ユーザ端末１０は、図３の構成に対してさらにタグ暗号化部１８を備える。タグ暗号化部１８はタグの暗号化を行う。プロキシサーバ５０は、図３の構成に対してさらにタグ検証部５６を備える。タグ検証部５６はタグの検証を行う。
【００５９】
図６は、本発明の第３実施形態に係る暗号化データ管理方法の手順を示すシーケンスチャートである。以下、図６を参照して、図５に示される第３実施形態に係る暗号化データ管理システムの動作について、第２実施形態と異なる点を主に説明する。以下、ユーザ端末１０、ストレージサーバ３０、プロキシサーバ５０、受領サーバ７０のいずれか複数の間におけるデータのやり取りは、各通信部によって通信ネットワーク９０を介して行われるものとする。
【００６０】
まず第１実施形態と同様に、事前に、ユーザ端末１０は、鍵ペア（ｐｋ＿Ａ，ｓｋ＿Ａ）を取得し、鍵ｓｋ＿Ａをユーザ端末１０内に安全に保持し、鍵ｐｋ＿Ａを公開する。受領サーバ７０も同様に、鍵ペア（ｐｋ＿Ｂ，ｓｋ＿Ｂ）を取得し、鍵ｓｋ＿Ｂを受領サーバ７０内に安全に保持し、鍵ｐｋ＿Ｂを公開する。また、ユーザ端末１０は、マスター鍵ｍｋを取得し、該マスター鍵ｍｋをプロキシサーバ５０へ送信する。また、第３実施形態では、プロキシサーバ５０は、一般的な公開鍵暗号の鍵生成アルゴリズムを実行し、鍵ｓｋ＿Ｐを秘密に取得してプロキシサーバ５０内に安全に保持し、また取得した鍵ｐｋ＿Ｐを公開する。
【００６１】
（ステップＳ１０１ｂ）ユーザ端末１０の鍵生成部１２は、データｖを暗号化する鍵として乱数ｒを生成する。ユーザ端末１０のデータ暗号化部１３は、共通鍵暗号方式によりデータｖを乱数ｒで暗号化し、暗号化データＥ（ｒ，ｖ）を取得する。ユーザ端末１０の鍵暗号化部１７は、暗号化アルゴリズムＥを実行して、データｖを暗号化した鍵（乱数ｒ）を自己の公開鍵ｐｋ＿Ａで暗号化し、暗号化データＥ（ｐｋ＿Ａ，ｒ）を取得する。また、ユーザ端末１０は、第１実施形態と同様に、データｖについてのタグｕ＿１，ｕ＿２からインデックスｉ＿ｄを取得する。
【００６２】
ユーザ端末１０のタグ暗号化部１８は、各タグｕ＿１，ｕ＿２をプロキシサーバ５０の公開鍵ｐｋ＿Ｐで暗号化し、暗号化データＥ（ｐｋ＿Ｐ，ｕ＿１）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿２）を取得する。ユーザ端末１０は、ストレージサーバ３０に対して、インデックスｉ＿ｄと暗号化データＥ（ｐｋ＿Ａ，ｒ）と暗号化データＥ（ｒ，ｖ）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿１）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿２）を送信する。ストレージサーバ３０は、該受信したインデックスｉ＿ｄと暗号化データＥ（ｐｋ＿Ａ，ｒ）と暗号化データＥ（ｒ，ｖ）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿１）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿２）を関連付けて暗号化データ記憶部３３に格納する。
【００６３】
次いで、上述した第１実施形態と同様に、ステップＳ１０２，Ｓ１０３，Ｓ１０４が行われる。次いで、ステップＳ１０５ｂが行われる。
（ステップＳ１０５ｂ）ストレージサーバ３０の暗号検索部３２は、暗号化データ記憶部３３に記憶されている全ての暗号化データについてのインデックスに対し、プロキシサーバ５０から受信したトラップドアｔ＿ｘを使用してインデックス検索アルゴリズムＳＩを実行する。この結果として、インデックス検索アルゴリズムＳＩは、検索キーワードｘが含まれているインデックスに対して１を出力する。ストレージサーバ３０は、該１が出力されたインデックスに関連付けられているインデックス、鍵の暗号化データ及びタグの暗号化データを、プロキシサーバ５０へ送信する。ここでは、検索キーワードｘがタグｕ＿１に等しく、インデックスｉ＿ｄに対して１が出力されたために、インデックスｉ＿ｄと該インデックスｉ＿ｄに関連付けられている暗号化データＥ（ｐｋ＿Ａ，ｒ）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿１）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿２）とがプロキシサーバ５０へ送信されたとする。
【００６４】
次いで、上述した第１実施形態と同様に、ステップＳ１０６が行われる。なお、このステップＳ１０６の代わりに、事前に、ユーザ端末１０からプロキシサーバ５０へ、受領サーバ７０についての再暗号化鍵ｒｋ＿（Ａ，Ｂ）を送信しておいてもよい。
次いで、ステップＳ１２０が行われる。
（ステップＳ１２０）プロキシサーバ５０のタグ検証部５６は、自己の秘密鍵ｓｋ＿Ｐを使用して暗号化データＥ（ｐｋ＿Ｐ，ｕ＿１）と暗号化データＥ（ｐｋ＿Ｐ，ｕ＿２）をそれぞれ復号化し、タグｕ＿１，ｕ＿２を取得する。次いで、タグ検証部５６は、ステップＳ１０３で受領サーバ７０から取得した検索キーワードｘがタグｕ＿１，ｕ＿２のいずれかと一致しているかを判定する。この判定の結果、検索キーワードｘがタグｕ＿１，ｕ＿２のいずれかと一致している場合には「False Positive」が発生していないと考えられる。この場合には、上述した第２実施形態と同様に、ステップＳ１０７ａが行われ、プロキシサーバ５０は、暗号化データＥ（ｐｋ＿Ｂ，ｒ）とインデックスｉ＿ｄとを受領サーバ７０へ送信する。
【００６５】
一方、該判定の結果、検索キーワードｘがタグｕ＿１，ｕ＿２のいずれとも不一致である場合には「False Positive」が発生していると考えられる。この場合には、プロキシサーバ５０は処理を中止する。したがって、受領サーバ７０には、暗号化データＥ（ｐｋ＿Ｂ，ｒ）及びインデックスｉ＿ｄが送信されない。
【００６６】
上記ステップＳ１２０で検索キーワードｘがタグｕ＿１，ｕ＿２のいずれかと一致し、ステップＳ１０７ａで暗号化データＥ（ｐｋ＿Ｂ，ｒ）とインデックスｉ＿ｄとが受領サーバ７０へ送信された場合には、上述した第２実施形態と同様に、ステップＳ１１０が行われる。このステップＳ１１０により、受領サーバ７０はデータｖを取得する。
【００６７】
上述した第３実施形態によれば、検索可能暗号の処理時間を短縮できる「Secure Indexes」技術を使用した際に発生する誤検索「False Positive」を検出することができる。これにより、「False Positive」の発生により、ユーザ端末１０が受領サーバ７０への提供を許可していない文書が受領サーバ７０に提供されてしまう、という問題を防ぐことができる。
【００６８】
また、プロキシサーバ５０は、ストレージサーバ３０から取得した暗号化データＥ（ｐｋ＿Ａ，ｒ）の再暗号化を行う前に、タグの検証（ステップＳ１２０）を行う。これにより、タグの検証が失敗した場合（「False Positive」の発生ありの場合）には、暗号化データＥ（ｐｋ＿Ａ，ｒ）の再暗号化を実施しないようにすることができるので、暗号処理についての負荷を軽減できる。
【００６９】
上述した第１，２，３実施形態によれば、プロキシ再暗号化によって、ユーザ端末１０からストレージサーバ３０へ預けられたデータの暗号化データの安全性及び利便性が向上する。例えば、ストレージサーバ３０の管理者（例えば、クラウドストレージ事業者など）は該データの暗号化データを復号できないので、ストレージサーバ３０の管理者に対する該データの漏洩を防ぐことができる。一方、受領サーバ７０の利用者は、該データの暗号化データ、又は、該データの暗号化データについての鍵の暗号化データが該受領サーバ７０についての再暗号化鍵で再暗号化されたものを取得して復号化できるので、該データを取得することができる。
【００７０】
さらに、上述した第１，２，３実施形態によれば、検索可能暗号によって、ストレージサーバ３０に格納された暗号化データを復号化することなく、そのままで検索を行うことができるので、ストレージサーバ３０の管理者に対して暗号化データの内容を秘匿できる。また、検索キーワードについてもストレージサーバ３０の管理者に対して秘匿できる。
【００７１】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【００７２】
例えば、図２、図４、図６に示す各ステップを実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Digital Versatile Disk）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００７３】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００７４】
１０…ユーザ端末、１１…通信部（ユーザ端末通信部）、１２…鍵生成部、１３…データ暗号化部、１４…インデックス生成部、１５…タグ設定部、１６…データ記憶部、１７…鍵暗号化部、１８…タグ暗号化部、３０…ストレージサーバ、３１…通信部（ストレージサーバ通信部）、３２…暗号検索部、３３…暗号化データ記憶部、５０…プロキシサーバ、５１…通信部（プロキシサーバ通信部）、５２…トラップドア生成部、５３…再暗号化部、５４…アクセス権検証部、５５…アクセス権記憶部、５６…タグ検証部、７０…受領サーバ、７１…通信部（受領サーバ通信部）、７２…復号化部
【図１】
0006348004.tif 000002
【図２】
0006348004.tif 000003
【図３】
0006348004.tif 000004
【図４】
0006348004.tif 000005
【図５】
0006348004.tif 000006
【図６】
0006348004.tif 000007