【文献】
江村 恵太、宮地 充子、面 和成,“匿名IDベース暗号を用いたセキュアチャネルフリー検索可能公開鍵暗号方式の一般的構成法”,2011年 暗号と情報セキュリティシンポジウム SCIS2011 [CD−ROM],日本,電子情報通信学会情報セキュリティ研究専門委員会,2011年 1月25日,4C2−6,p.1−8
【文献】
吉田 麗生、永井 彰、小林 鉄太郎,“複数ユーザーで利用可能な内積述語検索可能暗号”,コンピュータセキュリティシンポジウム2010 論文集 [第二分冊],日本,一般社団法人情報処理学会,2010年10月12日,第2010巻、第9号,p.687−692
【文献】
鈴木 秀輔、齋藤 泰一,“Proxy Re−encryptionによる暗号メール共有法”,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2008年 2月28日, Vol.107、No.525,p.449−453
【文献】
Michel Abdalla, Mihir Bellare, Dario Catalano, Eike Kiltz, Tadayoshi Kohno, Tanja Lange, John Malone-Lee, Gregory Neven, Pascal Paillier, and Haixia Shi,“Searchable Encryption Revisited: Consistency Properties, Relation to Anonymous IBE, and Extensions”,Advances in Cryptology - CRYPTO 2005: 25th Annual International Cryptology Conference,[online],2005年 8月14日,pp.205-222,[retrieved on 2014-12-16]. Retrieved from the Internet,URL,<http://www.iacr.org/cryptodb/archive/2005/CRYPTO/927/927.pdf>
【文献】
Feng Bao, Robert H. Deng, Xuhua Ding, and Yanjiang Yang ,“Private Query on Encrypted Data in Multi-user Settings”,LNCS, Information Security Practice and Experience,Springer,2008年 4月,Vol.4991,pp.71-85
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
実施形態1.
以下、本発明の実施形態について図面を参照して説明する。
図1は、本発明による暗号データ検索システムの構成例を示すブロック図である。本実施形態の暗号データ検索システムは、
図1に示すように、暗号データを登録するデータ登録装置10と、暗号データを記憶するデータベース装置50と、サービスプロバイダ装置20と、1つ以上のユーザ装置40-1,40-2,…,40-Nと、プロキシサーバ装置30とを含む。また、各装置は、LANやインターネット等の通信ネットワークを介して相互に接続されている。
【0016】
サービスプロバイダ装置20は、暗号データを生成するために用いる公開鍵pk_sおよびそれに対応する秘密鍵sk_sを生成する。サービスプロバイダ装置20は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
【0017】
図2は、サービスプロバイダ装置の構成例を示すブロック図である。サービスプロバイダ装置20は、
図2に示すように、鍵生成部201と、プロキシ鍵生成部202と、データ登録部203とを含む。
【0018】
鍵生成部201は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。鍵生成部201は、データを暗号化するために用いるサービスプロバイダの公開鍵pk_sおよびそれに対応する秘密鍵sk_sを生成する機能を備えている。
【0019】
プロキシ鍵生成部202は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。プロキシ鍵生成部202は、秘密鍵sk_sと、ユーザiの秘密鍵sk_iとを入力として、暗号化したまま暗号データの検索を可能とするプロキシ鍵rk_iを生成する機能を備えている。
【0020】
データ登録部203は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。データ登録部203は、プロキシ鍵rk_iをプロキシサーバ装置30に登録する機能を備えている。
【0021】
プロキシサーバ装置30は、ユーザ装置40-i(ユーザ装置40-1〜40-3を包括的に表現したものであって、i=1〜3である)から受信した検索要求に対して、サービスプロバイダの秘密鍵およびユーザiの秘密鍵から生成されたユーザiに対応するプロキシ鍵を用いて、暗号化したまま検索を可能とする検索クエリを生成する。また、プロキシサーバ装置30は、データベース装置50から検索クエリに対応した暗号データを検索する。プロキシサーバ装置30は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
【0022】
図3は、プロキシサーバ装置の構成例を示すブロック図である。プロキシサーバ装置30は、
図3に示すように、クエリ変換部301と、検索要求部302と、検索結果送信部303とを含む。
【0023】
クエリ変換部301は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。クエリ変換部301は、ユーザ装置40-iから受信したユーザクエリQ_iと、記憶しているプロキシ鍵rk_iとを入力として、データベース装置50が記憶する暗号データに対して暗号化したまま検索を行うための検索クエリQ_sを生成する機能を備えている。
【0024】
検索要求部302は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。検索要求部302は、検索クエリQ_sを用いてデータベース装置50に検索要求を行う機能を備えている。
【0025】
検索結果送信部303は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。検索結果送信部303は、検索要求に応じてデータベース装置50から抽出された検索結果をユーザ装置40-iに送信する機能を備えている。
【0026】
ユーザ装置40-iは、暗号データに対して暗号化したまま検索を行う検索要求を発行する。ユーザ装置40-iは、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
【0027】
図4は、ユーザ装置の構成例を示すブロック図である。ユーザ装置40-iは、
図4に示すように、登録要求部401-iと、鍵生成部402-iと、プロキシ鍵生成部403-iと、クエリ生成部404-iとを含む。
【0028】
登録要求部401-iは、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。登録要求部401-iは、サービスへの登録を要求する機能を備えている。
【0029】
鍵生成部402-iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。鍵生成部402-iは、ユーザiの公開鍵pk_iおよびそれに対応する秘密鍵sk_iを生成する機能を備えている。
【0030】
プロキシ鍵生成部403-iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。プロキシ鍵生成部403-iは、サービスプロバイダの秘密鍵sk_sと、ユーザiの秘密鍵sk_iとを入力として、暗号化したまま暗号データの検索を可能とするプロキシ鍵rk_iを生成する機能を備えている。
【0031】
クエリ生成部404-iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。クエリ生成部404-iは、データを検索するためのユーザクエリQ_iを生成する機能を備えている。
【0032】
図5は、データ登録装置10の構成例を示すブロック図である。データ登録装置10は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。
【0033】
データ登録装置10は、
図5に示すように、サービスプロバイダの公開鍵pk_sおよびデータM(以下、メッセージMともいう)を入力として、暗号データ(以下、検索可能暗号データともいう)を生成する検索可能暗号データ生成部101を含む。検索可能暗号データ生成部101は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。なお、本実施形態では、検索可能暗号データとは、所定の条件下で検索可能な暗号化されたデータである。ただし、検索可能暗号データは、所定の条件下で検索可能であり、無条件に検索可能であるわけではない。
【0034】
データベース装置50は、光ディスク装置や磁気ディスク装置等の記憶装置を備えている。データベース装置50の記憶装置は、検索可能暗号化データを含むデータベースを記憶している。データベース装置50は、例えば、データベースサーバであり、パーソナルコンピュータ等の情報処理装置によって実現される。データベース装置50は、データの検索や登録などの要求を受信して処理を行い、結果を返信する機能を備えている。
【0035】
次に、暗号データ検索システムの動作について説明する。本実施形態の暗号データ検索システムは、サービスプロバイダ鍵生成処理、ユーザ登録処理、データ登録処理および検索処理を実行する。以下、各処理について説明する。
【0036】
(サービスプロバイダ鍵生成処理)
サービスプロバイダ鍵生成処理について説明する。
図6は、サービスプロバイダ鍵生成処理の一例を示す流れ図である。
【0037】
サービス管理者が入力操作を行うと、サービスプロバイダ装置20は、サービス管理者の入力操作に従って、セキュリティパラメータを入力とし、サービスプロバイダの公開鍵pk_sおよび秘密鍵sk_sを生成する(
図6のKEYGEN1)。
【0038】
次いで、サービスプロバイダ装置20は、公開鍵pk_sを公開し(すなわち、ネットワークを介したアクセスに応じて配信可能とする)、秘密鍵sk_sを秘密裏に(すなわち、公開せずに)管理する(
図6のKEYGEN2)。
【0039】
(ユーザ登録処理)
次に、ユーザ登録処理について説明する。
図7は、ユーザ登録処理の一例を示す流れ図である。
【0040】
ユーザiが入力操作を行うと、ユーザ装置40-iは、ユーザiの入力操作に従って、セキュリティパラメータを入力し、ユーザiの公開鍵pk_iおよび秘密鍵sk_iを生成する。
図7に示す例では、ユーザ装置40-Aは、ユーザAの入力操作に従って、セキュリティパラメータを入力し、ユーザAの公開鍵pk_Aおよび秘密鍵sk_Aを生成する(
図7のUREG1)。
【0041】
次いで、ユーザ装置40-iは、サービスプロバイダ装置20に対して、ユーザ登録要求を送信する。
図7に示す例では、ユーザ装置40-Aは、サービスプロバイダ装置20に対して、ユーザ登録要求を送信する(
図7のUREG2)。
【0042】
ユーザ登録要求を受信したサービスプロバイダ装置20と、ユーザ装置40-iとは、対話しながら(具体的には、相互に通信を行いながら)プロキシ鍵rk_iを生成する。このとき、ユーザ登録要求にユーザiの秘密鍵sk_iを含めて送信することにより、サービスプロバイダ装置20は、単独でプロキシ鍵rk_iを生成することができる。その場合には、サービスプロバイダ装置20とユーザ装置40-iとは、特に対話を行わない。
図7に示す例では、サービスプロバイダ装置20とユーザ装置40-Aとは、対話しながらプロキシ鍵rk_Aを生成する(
図7のUREG3)。
【0043】
次いで、サービスプロバイダ装置20は、プロキシサーバ装置30に、ユーザを識別するデータと生成したプロキシ鍵rk_iとを対応付けたデータ(ユーザi,rk_i)を送信し、記憶させる。
図7に示す例では、サービスプロバイダ装置20は、プロキシサーバ装置30に、ユーザを識別するデータと生成したプロキシ鍵rk_Aとを対応付けたデータ(ユーザA,rk_A)を送信し、記憶させる(
図7のUREG4)。
【0044】
(データ登録処理)
次に、データ登録処理について説明する。
図8は、データ登録処理の一例を示す流れ図である。
【0045】
データ登録者が登録操作を行うと、データ登録装置10は、データ登録者の登録操作に従って、サービスプロバイダの公開鍵pk_sと、登録したいメッセージMとを入力として、検索可能暗号文E(pk_s,M)を生成する(
図8のDREG1)。
【0046】
次いで、データ登録装置10は、検索可能暗号文E(pk_s,M)をデータベース装置50に送信し、記憶させる(
図8のDREG2)。
【0047】
(検索処理)
次に、検索処理について説明する。
図9は、検索処理の一例を示す流れ図である。
【0048】
ユーザiが入力操作を行うと、ユーザ装置40-iは、ユーザiの入力操作に従って、ユーザiの秘密鍵sk_iと、検索対象キーワードKWとを入力し、ユーザクエリTR(sk_i,KW)を生成する。そして、ユーザ装置40-iは、生成したユーザクエリTR(sk_i,KW)をプロキシサーバ装置30に送信する。
【0049】
図9に示す例では、ユーザAが入力操作を行うと、ユーザ装置40-Aは、ユーザAの入力操作に従って、ユーザAの秘密鍵sk_Aと、検索対象キーワードKWとを入力し、ユーザクエリTR(sk_A,KW)を生成する(
図9のSRC1)。そして、ユーザ装置40-Aは、生成したユーザクエリTR(sk_A,KW)をプロキシサーバ装置30に送信する。
【0050】
次いで、プロキシサーバ装置30は、受信したユーザクエリTR(sk_i,KW)と、記憶しているプロキシ鍵rk_iとを入力として、検索クエリTR(sk_s,KW)を生成し、データベース装置50に送信する。例えば、プロキシサーバ装置30は、受信したユーザクエリTR(sk_i,KW)と、記憶しているユーザを識別するデータと生成したプロキシ鍵rk_iとを対応付けたデータ(ユーザi,rk_i)とに基づいて、プロキシ鍵を特定する。そして、プロキシサーバ装置30は、受信したユーザクエリTR(sk_i,KW)と、特定したプロキシ鍵rk_iとを入力として、検索クエリTR(sk_s,KW)を生成する。
【0051】
図9に示す例では、プロキシサーバ装置30は、受信したユーザクエリTR(sk_A,KW)と、記憶しているプロキシ鍵rk_Aとを入力として、検索クエリTR(sk_s,KW)を生成し、データベース装置50に送信する(
図9のSRC2)。
【0052】
次いで、データベース装置50は、内部に記憶した暗号文の集合および検索クエリTR(sk_s,KW)を入力として、検索結果Resultを生成し、検索結果Resultをプロキシサーバ装置30に送信する(
図9のSRC3)。具体的には、データベース50装置は、記憶している検索可能暗号化データから受信した検索クエリTR(sk_s,KW)に基づいてデータを検索して抽出し、検索結果としてプロキシサーバ装置30に送信する。
【0053】
次いで、プロキシサーバ装置30は、検索結果Resultをユーザ装置40-iに送信する。
図9に示す例では、プロキシサーバ装置30は、検索結果Resultをユーザ装置40-Aに送信する(
図9のSRC4)。
【0054】
次に、具体例を用いて暗号データ検索システムの動作を説明する。なお、以降、a^bと記載することでaのb乗を表す。
【0055】
まず、ペアリング関数について説明する。G,G_Tを位数qを持つ巡回群とし、g_1,g_2をそれぞれGの生成元としたとき、ペアリング関数e:G×G→G_Tは、任意のZ_qの元a,bに対して以下の性質を満たす2入力1出力の関数である。
・e(g_1^a,g_2^b)=e(g_1,g_2)^{ab}
・e(g_1,g_2)≠1
【0056】
次に、非特許文献1に記載された検索可能暗号方式について説明する。非特許文献1に記載された方式は、秘密鍵を持つユーザのみが検索可能な検索可能暗号方式である。各エンティティに対してシステムパラメータとしてq,G,G_T,Gの生成元g,ペアリング関数e:G×G→G_T、任意のビット列からGへのハッシュ関数H_1、G_Tの元からkビットのビット列へのハッシュ関数H_2が与えられている。
【0057】
(非特許文献1に記載された鍵生成処理)
ユーザは、Z_qからランダムにxを選択する。次いで、ユーザは、g^xを計算する。そして、ユーザは、秘密鍵をx、公開鍵をg^xとし、公開鍵を公開する。なお、具体的には、情報処理装置がユーザの操作に従ってこれらの処理を実行する。
【0058】
(非特許文献1に記載された検索可能暗号データ生成処理)
データ登録者は、公開鍵g^xと、登録したいデータMとを入力として、Z_qからランダムにrを選択し、検索可能暗号データ(C_1,C_2)=(H_2(e(H_1(M),(g^x)^r)),g^r)を生成し、データベースに送信して記憶させる。なお、具体的には、情報処理装置がデータ登録者の操作に従ってこれらの処理を実行する。
【0059】
(非特許文献1に記載された検索処理)
ユーザは、検索キーワードKWと、秘密鍵xとを入力として、Q=H_1(KW)^sを生成し、検索クエリとしてデータベースに送信する。なお、具体的には、情報処理装置がユーザの操作に従ってこれらの処理を実行する。データベースは、自身が記憶している検索可能暗号データの集合{(C_1,C_2)}の各要素に対して、C_1=H_2(e(Q,C_2))が成立するか否かを確認する。そして、データベースは、等号が成立した検索可能暗号データ(C_1,C_2)を検索結果として出力する。なお、具体的には、データベースを記憶する記憶装置を備えた情報処理装置が検索クエリを受信し、これらの処理を実行する。
【0060】
次に、本実施形態の暗号データ検索システムが実行するサービスプロバイダ鍵生成、ユーザ登録、データ登録および検索の各処理について説明する。各エンティティに対して、システムパラメータとして、q,G,G_T,Gの生成元g,ペアリング関数e:G×G→G_T、任意のビット列からGへのハッシュ関数H_1、G_Tの元からkビットのビット列へのハッシュ関数H_2が与えられている。
【0061】
(サービスプロバイダ鍵生成処理)
サービスプロバイダ鍵生成処理の具体例について説明する。
図10は、サービスプロバイダ鍵生成処理の具体例を示す流れ図である。
【0062】
図10に示すように、サービスプロバイダ装置20は、非特許文献1に記載された鍵生成処理と同様の処理を実行する(
図10のKEYGEN1)。
【0063】
次いで、サービスプロバイダ装置20は、生成したサービスプロバイダの公開鍵をpk_s=g^sとして公開し、秘密鍵をsk_s=sとして保管する(
図10のKEYGEN2)。
【0064】
(ユーザ登録処理)
次に、ユーザ登録処理の具体例について説明する。
図11は、ユーザ登録処理の具体例を示す流れ図である。
【0065】
ユーザ装置40-iは、ユーザiの操作に従って、非特許文献1の鍵生成処理と同様の処理を実行し、公開鍵pk_i=g^{x_i}と、秘密鍵(x_i)とを生成する(
図11のUREG1)。
【0066】
次いで、ユーザ装置40-iは、ユーザ登録要求をサービスプロバイダ装置20に送信する(
図11のUREG2)。
【0067】
さらに、ユーザ装置40-iは、秘密鍵x_iをサービスプロバイダ装置20に送信する。すると、サービスプロバイダ装置20は、プロキシ鍵rk_i=s/x_iを生成し、プロキシサーバ装置30にユーザを識別するデータと生成したプロキシ鍵とを対応付けたデータ(ユーザi,rk_i)を送信する(
図11のUREG3)。
【0068】
次いで、プロキシサーバ装置30は、ユーザを識別するデータとプロキシ鍵とを対応付けたデータ(ユーザi,rk_i)を記憶部に記憶する(
図11のUREG4)。
【0069】
(データ登録処理)
次に、データ登録処理の具体例について説明する。
図12は、データ登録処理の具体例を示す流れ図である。
【0070】
データ登録装置10は、データ登録者の登録操作に従って、サービスプロバイダの公開鍵pk_sおよび登録するデータMを入力として、非特許文献1の検索可能暗号データ生成処理を実行する(
図12のDREG1)。具体的には、データ登録装置10は、検索可暗号データとして(C_1,C_2)=(H_2(e(H_1(M),pk_s^r)),g^r)を生成する。
【0071】
次いで、データ登録装置10は、検索可能暗号データ(C_1,C_2)をデータベース装置50に送信し、記憶させる(
図12のDREG2)。
【0072】
(検索処理)
次に、検索処理の具体例について説明する。
図13は、検索処理の具体例を示す流れ図である。ここでは、データベース装置50は、データ登録処理によってN個の検索可能暗号データ{(C_1,C_2)_i}を記憶しているとする。
【0073】
ユーザ装置40-iは、ユーザiの入力操作に従って、秘密鍵sk_iと、検索対象キーワードKWとを入力として、ユーザクエリTR(sk_i,KW)=H_1(KW)^{x_i}を生成し、プロキシサーバ装置30に送信する(
図13のSRC1)。
【0074】
次いで、プロキシサーバ装置30は、受信したユーザクエリTR(sk_i,KW)と、プロキシ鍵rk_iとを入力として、検索クエリTR(sk_s,KW)=TR(sk_i,KW)^{rk_i}=H_1(KW)^{s}を生成し、データベース装置50に送信する(
図13のSRC2)。
【0075】
次いで、データベース装置50は、自身が記憶している検索可能暗号データの集合{(C_1,C_2)}の各要素に対して、C_1=H_2(e(TR(sk_i,KW),C_2))が成立するか否かを確認する。そして、データベース装置50は、等号が成立した検索可能暗号データ(C_1,C_2)を検索結果としてプロキシサーバ装置30に送信する(
図13のSRC3)。
【0076】
次いで、プロキシサーバ装置30は、受信した検索結果をユーザ装置40-iに送信する(
図13のSRC4)。
【0077】
なお、プロキシサーバ装置30は、安全のために、検索を行う前にユーザ認証を行うことが望ましい。ユーザ認証の方法として、例えば、既存のID/Passwordを用いた方法や、電子署名を用いた方法などを用いることができる。
【0078】
また、プロキシ鍵生成処理に関しては、マルチパーティ計算を行うことにより、サービスプロバイダの秘密鍵s、ユーザiの秘密鍵x_iを互いに秘密にしたままs/x_iを計算できることが知られている。本システムにおいても、マルチパーティ計算を利用してs/x_iを計算してもよい。
【0079】
さらに、本実施形態では、検索可能暗号データのデータサイズを小さくするためにハッシュ関数H_2を用いているが、H_2を省略しても構わない。
【0080】
本実施形態では、検索可能暗号データは(C_1,C_2)=(H_2(e(H_1(M),pk_s^r)),g^r)となる。秘密鍵sk_sまたはユーザiの秘密鍵sk_iおよびプロキシ鍵rk_iを用いずに、サービスプロバイダの公開鍵および(C_1,C_2)だけを用いて、検索処理を行うことは難しい。また、プロキシサーバ装置はs/aを保持するが、sまたはa(すなわち、サービスプロバイダの秘密鍵またはユーザの秘密鍵)が分からない限り、検索クエリを生成することもできない。したがって、プロキシサーバ装置の管理者が悪意を持って行動した場合でも、データベースに記憶された検索可能暗号データの集合に対して、任意のキーワードに対する検索を行うことができない。
【0081】
以上に説明したように、本実施形態の第1の効果は、異なる公開鍵・秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答できることにある。これにより、1つのデータに対して複数ユーザが暗号化したまま検索を行うことが可能となる。
【0082】
また、本実施形態の第2の効果は、データベース内に記憶された検索可能暗号データが漏洩した場合であっても、サービスプロバイダの秘密鍵が漏洩しなければ、データの内容に関するいかなる情報も漏えいしないことにある。これにより、万が一データベース内のデータが漏洩した場合にも、情報漏えいの被害を軽減できる。
【0083】
したがって、本実施形態の暗号データ検索システムは、異なる公開鍵・秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。
【0084】
実施形態2.
次に、本発明の第2の実施形態について説明する。本実施形態の暗号データ検索システムは、第1の実施形態と同様の構成を備えている。また、本実施形態では、ユーザ装置は、
図14に示すように、第1の実施形態の構成に加えて、署名・検証鍵生成部405-iと、署名データ生成部406-iとを含む。署名・検証鍵生成部405-iおよび署名データ生成部406-iは、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。
【0085】
本実施形態では、電子署名を利用する。まず、電子署名について説明する。電子署名には、鍵生成、署名生成および署名検証の3つのアルゴリズムがある。
【0086】
鍵生成アルゴリズムは、セキュリティパラメータを入力とし、署名を生成するための鍵である署名鍵skと、署名を検証するための鍵である検証鍵vkとを生成する。例えば、本実施形態では、署名・検証鍵生成部405-iが、セキュリティパラメータを入力とし、署名鍵skと検証鍵vkとを生成する。
【0087】
署名生成アルゴリズムは、署名対象メッセージMと、署名者の署名鍵skとを入力とし、署名データ(M,σ)を出力する。例えば、本実施形態では、署名データ生成部406-iが、署名対象メッセージMと署名者の署名鍵skとを入力とし、署名データ(M,σ)を生成して出力する。
【0088】
署名検証アルゴリズムは、署名データ(M,σ)と、署名者の検証鍵vkとを入力とし、受理または不受理を示す検証結果を出力する。例えば、本実施形態では、データベース装置50が、署名データ(M,σ)と、署名者の検証鍵vkとを入力とし、受理または不受理を示す検証結果を出力する。
【0089】
次に、本実施形態の暗号データ検索システムのサービスプロバイダ鍵生成、ユーザ登録、データ登録、検索の各処理について説明する。ここでは、各エンティティに対してシステムパラメータとして、q,G,G_T,Gの生成元g,ペアリング関数e:G×G→G_T、任意のビット列からGへのハッシュ関数H_1、G_Tの元からkビットのビット列へのハッシュ関数H_2が与えられている。
【0090】
(サービスプロバイダ鍵生成処理)
本実施形態のサービスプロバイダ鍵生成処理について説明する。サービスプロバイダ装置20は、非特許文献1に記載された鍵生成処理と同様の処理を実行する。次いで、サービスプロバイダ装置20は、生成したサービスプロバイダの公開鍵をpk_s=g^sとして公開し、秘密鍵をsk_s=sとして保管する。
【0091】
(ユーザ登録処理)
次に、ユーザ登録処理について説明する。ユーザ装置40-iは、ユーザiの操作に従って、署名生成の鍵生成を行い、検証鍵vk_iと秘密鍵sk_iとを生成する。
【0092】
次いで、ユーザ装置40-iは、ユーザ登録要求をサービスプロバイダ装置20に送信する。さらに、ユーザ装置40-iは、検証鍵vk_iをサービスプロバイダ装置20に送信する。
【0093】
次いで、サービスプロバイダ装置20は、サービスプロバイダの秘密鍵sk_sおよびユーザの検証鍵vk_iを、プロキシサーバ装置30に送信する。
【0094】
次いで、プロキシサーバ装置30は、ユーザを識別する情報と検証鍵とを対応付けたデータ(ユーザi,vk_i)およびサービスプロバイダの秘密鍵sk_sを記憶部に記憶する。
【0095】
(データ登録処理)
次に、データ登録処理について説明する。本実施形態のデータ登録処理は、第1の実施形態のデータ登録処理と同様である。
【0096】
データ登録装置10は、データ登録者の登録操作に従って、サービスプロバイダの公開鍵pk_sおよび登録するデータMを入力として、非特許文献1の検索可能暗号データ生成処理を実行する。具体的には、データ登録装置10は、検索可能暗号データとして(C_1,C_2)=(H_2(e(H_1(M),pk_s^r)),g^r)を生成する。
【0097】
次いで、データ登録装置10は、検索可能暗号データ(C_1,C_2)をデータベース装置50に送信し、記憶させる。
【0098】
(検索処理)
次に、検索処理について説明する。ここでは、データベース装置50は、データ登録処理によってN個の検索可能暗号データ{(C_1,C_2)_i}を記憶しているとする。
【0099】
ユーザ装置40-iは、ユーザiの入力操作に従って、検索対象キーワードKWを入力として、ユーザクエリH_1(KW)を生成し、プロキシサーバ装置30に送信する。
【0100】
次いで、プロキシサーバ装置30は、受信したユーザクエリH_1(KW)と、サービスプロバイダの秘密鍵sk_sとを入力として、検索クエリTR(sk_s,KW)=H_1(KW)^{s}を生成し、ユーザ装置40-iに送信する。
【0101】
次いで、ユーザ装置40-iは、受信した検索クエリTR(sk_s,KW)と、署名鍵sk_iとを入力として、検索クエリTR(sk_s,KW)に対して署名データ(TR(sk_s,KW),σ)を生成し、データベース装置50に送信する。
【0102】
次いで、データベース装置50は、ユーザ装置40-iから受信した署名データ(TR(sk_s,KW),σ)と、ユーザiの検証鍵vk_iとを入力として、署名検証を行う。
【0103】
署名検証結果が拒否であった場合、データベース装置50は、ユーザiに署名が拒否であった旨を通知し、動作を停止する。一方、署名検証結果が受理であった場合、データベース装置50は、自身が記憶している検索可能暗号データの集合{(C_1,C_2)}の各要素に対して、C_1=H_2(e(TR(sk_i,KW),C_2))が成立するか否かを確認する。そして、データベース装置50は、等号が成立した検索可能暗号データ(C_1,C_2)を検索結果としてユーザ装置40-iに送信する。
【0104】
プロキシサーバ装置30は、安全のために、検索を行う前にユーザ認証を行うことが望ましい。ユーザ認証の方法として、例えば、既存のID/Passwordを用いた方法や、電子署名を用いた方法などを用いることができる。
【0105】
本実施形態では、データベースが検索を行う際に、検索クエリに付与された電子署名の検証を行う。また、プロキシサーバ装置はs(すなわち、サービスプロバイダの秘密鍵)を保持するため、任意のキーワードに対する検索クエリを生成できるが、ユーザの電子署名を生成することができない。そのため、プロキシサーバ装置の管理者が悪意を持って行動した場合であっても、データベースに記憶された検索可能暗号データの集合に対して、任意のキーワードに対する検索を行うことができない。
【0106】
したがって、本実施形態の暗号データ検索システムは、異なる公開鍵・秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。
【0107】
なお、本発明は、上記に示した実施形態に限定されるものではなく、本発明の技術思想の範囲内において、実施例を適宜変更して実施可能である。
【0108】
次に、本発明による暗号データ検索システムの最小構成について説明する。
図15は、暗号データ検索システムの最小の構成例を示すブロック図である。
図15に示すように、暗号データ検索システムは、最小の構成要素として、サービス提供装置2と、データ登録装置1と、データベース装置5と、ユーザ装置4と、プロキシ装置3とを備えている。
【0109】
図15に示す最小構成の暗号データ検索システムでは、サービス提供装置2は、データを暗号化するためのサービス公開鍵およびサービス公開鍵に対応したサービス秘密鍵を生成する。また、サービス提供装置2は、データの検索を要求するユーザ装置4が生成したユーザ秘密鍵とサービス秘密鍵とを入力として、ユーザ装置4ごとのプロキシ鍵を生成し、プロキシ装置3に送信する。また、データベース装置5は、データ登録装置1がサービス公開鍵およびデータを入力として生成した検索可能暗号データを記憶する。
【0110】
ユーザ装置4は、データベース装置5に記憶された検索可能暗号データに対して、データの検索を要求するためのユーザクエリを、ユーザ秘密鍵を用いて生成し、プロキシ装置3に送信する。すると、プロキシ装置3は、ユーザ装置4から受信したユーザクエリとサービス提供装置2から受信したユーザ装置4ごとのプロキシ鍵とを入力として、データベース装置5に記憶されている検索可能暗号データの検索を要求するための検索クエリを生成する。
【0111】
従って、最小構成の暗号データ検索システムによれば、異なる公開鍵・秘密鍵を有する複数ユーザからの検索要求に対し検索結果を回答でき、かつデータ漏洩による被害を低減することができる。
【0112】
なお、本実施形態では、以下の(1)〜(5)に示すような暗号データ検索システムの特徴的構成が示されている。
【0113】
(1)暗号データ検索システムは、サービス提供装置(例えば、サービスプロバイダ装置20によって実現される)と、データ登録装置(例えば、データ登録装置10によって実現される)と、データベース装置(例えば、データベース装置50によって実現される)と、ユーザ装置(例えば、ユーザ装置40-iによって実現される)と、プロキシ装置(例えば、プロキシサーバ装置30によって実現される)とを備え、サービス提供装置は、データを暗号化するためのサービス公開鍵(例えば、pk_s)およびサービス公開鍵に対応したサービス秘密鍵(例えば、sk_s)を生成し(例えば、鍵生成部201によって実現される)、データの検索を要求するユーザ装置が生成したユーザ秘密鍵(例えば、pk_i)とサービス秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵(例えば、rk_i)を生成し、プロキシ装置に送信し(例えば、プロキシ鍵生成部202によって実現される)、データ登録装置は、サービス公開鍵およびデータ(例えば、データM)を入力として、検索可能暗号データを生成し(例えば、検索可能暗号データ生成部101によって実現される)、データベース装置は、検索可能暗号データを記憶し、ユーザ装置は、データベース装置に記憶された検索可能暗号データに対して、データの検索を要求するためのユーザクエリ(例えば、Q_i)を生成し、プロキシ装置に送信し(例えば、クエリ生成部404-iによって実現される)、プロキシ装置は、ユーザ装置から受信したユーザクエリとサービス提供装置から受信したユーザ装置ごとのプロキシ鍵とを入力として、データベース装置に記憶されている検索可能暗号データの検索を要求するための検索クエリ(例えば、Q_s)を生成し(例えば、クエリ変換部301によって実現される)、ユーザ装置は、さらに、ユーザ秘密鍵を用いてユーザクエリを生成することを特徴とする。
【0114】
(2)暗号データ検索システムにおいて、サービス提供装置は、サービス秘密鍵とユーザ秘密鍵とを入力として、ユーザ装置ごとのプロキシ鍵を生成し、プロキシ装置は、ユーザクエリおよびプロキシ鍵を入力として、検索クエリを生成し、データベース装置は、検索クエリとデータベース装置が記憶する検索可能暗号データとを入力として、検索結果を生成するように構成されていてもよい。
【0115】
(3)暗号データ検索システムにおいて、データ登録装置は、素数位数qを持つ群G,G_T、e()をGの元2つを入力としてG_Tの群への写像であるペアリング関数、gを群Gの生成元、H_1を任意のビット列からG上へのハッシュ関数、H_2をG_Tからkビットのビット列上へのハッシュ関数、Mをメッセージ、Z_qの乱数r、sをサービス秘密鍵、g
sをサービス公開鍵としたとき、H_2(e(H_1(M),g
s)
r),g
rを含む検索可能暗号データを生成し、ユーザ装置は、aをユーザ秘密鍵、g
aをユーザ公開鍵とし、検索キーワードをKWとしたとき、H_1(KW)
aを含むユーザクエリを生成するように構成されていてもよい。
【0116】
(4)暗号データ検索システムにおいて、プロキシ装置は、ユーザ装置のプロキシ鍵がs/aを含み、検索キーワードをKWとしたとき、H_1(KW)
sを含む検索クエリを生成するように構成されていてもよい。
【0117】
(5)暗号データ検索システムにおいて、ユーザ装置は、検証鍵と署名鍵とを生成し(例えば、検証・署名鍵生成405-iによって実現される)、プロキシ装置が生成した検索クエリと署名鍵とを入力として、署名データを生成し(例えば、署名データ生成406-iによって実現される)、データベース装置は、署名データと検証鍵とを入力として、署名検証を行うように構成されていてもよい。