説明

検索可能暗号システム、検索可能暗号方法、ストレージ装置、検索装置、及び登録者装置

【課題】キーワードの暗号文を含むデータベースを検索する権限が付与された登録ユーザの検索権限を失効させることが可能なシステムを提供する。
【解決手段】ストレージ装置にタグ情報を含む暗号化データベースが格納される。タグ情報は、登録ユーザの属性及びキーワードに対応するベクトルに対応する暗号文と登録ユーザの検索者鍵の像である第1値とを含む。この暗号文は第1値と登録ユーザの補間鍵との組の像である第2値を暗号化した暗号文である。検索装置は、登録ユーザの属性及び検索キーワードに対応するベクトルに対応する復号鍵である検索クエリを生成する。検索代行装置は、登録ユーザの補間鍵を格納し、検索クエリを復号鍵として暗号化データベースのタグ情報に含まれる暗号文を復号して得られる復号値が、当該タグ情報に含まれる第1値と当該補間鍵格納部に格納された補間鍵との組に対応するかを検証する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化されたデータベースの検索が可能な検索可能暗号技術に関する。
【背景技術】
【0002】
暗号化文書からあらかじめキーワードを抽出し、それらのキーワードの暗号文を含むデータベースを構成し、各キーワードが暗号化されたままの状態で部分一致検索を行って検索結果を得る検索可能暗号方式が非特許文献1,2に開示されている。非特許文献1,2では、暗号化条件や復号条件を述語論理で記述することが可能な述語暗号(例えば、非特許文献3から5参照)を利用して検索可能暗号方式を実現している。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】R. Yoshida, S. Oda, and T. Kobayashi., "Public-key encryption with partial matching keyword search," In Symp. on Cryptography and Information Security, 2010.
【非特許文献2】N. Matsuda, M. Hattori, T. Ito, and T. Yoneda., "Secure data center systems with hierarchical predicate encryption," In Symp. on Cryptography and Information Security, 2010.
【非特許文献3】A. B. Lewko, T. Okamoto, A. Sahai, K. Takashima, and B. Waters., "Fully secure functional encryption: Attribute-based encryption and (hierarchical) inner product encryption," In EUROCRYPT, pp. 62-91, 2010.
【非特許文献4】J. Katz, A. Sahai, and B. Waters., "Predicate encryption supporting disjunctions, polynomial equations, and inner products," In EUROCRYPT, pp. 146-162, 2008.
【非特許文献5】T. Okamoto and K. Takashima., "Hierarchical predicate encryption for inner-products," In ASIACRYPT, pp. 214-231, 2009.
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の方式では、キーワードの暗号文を含むデータベースを利用する権限が付与された登録ユーザの利用権限を失効させることが困難であった。
【0005】
本発明はこのような点に鑑みてなされたものであり、キーワードの暗号文を含むデータベースを利用する権限が付与された登録ユーザの利用権限を失効させることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明のストレージ装置には、検索対象情報に対応するタグ情報を含む暗号化データベースが格納される。タグ情報は、第1ベクトルに対応する暗号文cと登録ユーザの検索者鍵sxuの像である第1値hとを含む。また、第1ベクトルは、登録ユーザの属性に対して設定されたベクトルと検索対象情報のキーワードに対して設定されたベクトルとを含み、暗号文cが第1値hと登録ユーザの補間鍵ckuとの組の像である第2値r'を或る暗号方式に則って暗号化した暗号文である。この暗号方式は、暗号文に対応するベクトルと復号鍵に対応するベクトルとが特定の論理式の真理値を真にする関係にあるときに当該暗号文が当該復号鍵で復号可能な方式である。
【0007】
本発明の検索装置は、第2ベクトルに対応する復号鍵である検索クエリを上記暗号方式に則って生成する。第2ベクトルは、登録ユーザの属性に対応するベクトルと検索キーワードに対応するベクトルとを含む。
【0008】
検索代行装置は、登録ユーザの補間鍵ckuを格納し、検索クエリを復号鍵として暗号化データベースのタグ情報に含まれる暗号文cを復号して得られる復号値mes'が、当該タグ情報に含まれる第1値hと当該補間鍵格納部に格納された補間鍵ckuとの組に対応するかを検証する。
【発明の効果】
【0009】
本発明では、タグ情報が補間鍵ckuを用いて生成され、検索クエリを復号鍵としてタグ情報に含まれる暗号文cを復号して得られる復号値mes'が第1値hと補間鍵ckuとの組に対応することを検証することで、検索クエリに対して検索対象情報のキーワードがヒットしたか否かを判定できる。一方、検索代行装置による登録ユーザの補間鍵ckuの利用が禁止された場合、タグ情報の生成や検証ができなくなる。これにより、キーワードの暗号文を含むデータベースを利用する権限が付与された登録ユーザの利用権限を失効させることができる。
【図面の簡単な説明】
【0010】
【図1】図1は、実施形態の検索可能暗号システムの全体構成を説明するための図である。
【図2】図2Aは、実施形態の管理装置の機能構成を説明するための図であり、図2Bは、実施形態の管理装置の機能構成を説明するための図である。
【図3】図3は、実施形態の登録装置の機能構成を説明するための図である。
【図4】図4は、実施形態の検索代行装置の機能構成を説明するための図である。
【図5】図5Aは、実施形態のストレージ装置の機能構成を説明するための図である。図5Bは、暗号化データベース格納部に格納される暗号化データベースのデータ構成を説明するための図である。
【図6】図6は、実施形態の検索装置の機能構成を説明するための図である。
【図7】図7は、一括方式によって鍵情報kM*を生成する処理を説明するためのフローチャートである。
【図8】図8は、委託方式によって鍵情報kM*を生成する処理を説明するためのフローチャートである。
【図9】図9は、委託方式によって鍵情報kM*を生成する処理を説明するためのフローチャートである。
【図10】図10は、データベース登録の処理を説明するためのフローチャートである。
【図11】図11は、検索処理を説明するためのフローチャートである。
【図12】図12は、登録失効処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施形態を説明する。
【0012】
〔概要〕
以下に説明する各実施形態では、関数暗号方式を用いて検索可能暗号方式を構成する。関数暗号方式とは、暗号文に対応するベクトルと復号鍵に対応するベクトルとが特定の論理式の真理値を真にする関係にあるときに当該暗号文が当該復号鍵で復号可能となる暗号方式である。関数暗号方式の例は、非特許文献1から5などに開示されている内積述語暗号方式や階層的内積述語暗号方式などの述語暗号方式や、参考文献1「T. Okamoto, K. Takashima, "Fully Secure Functional Encryption with General Relations from the Decisional Linear Assumption," Advances in Cryptology - CRYPTO 2010, Lecture Notes in Computer Science, 2010, Volume 6223/2010, 191-208」などに開示されている方式などである。すなわち、関数暗号方式には、内積述語暗号方式や階層的内積述語暗号方式などの述語暗号方式が含まれる。また、本発明で利用する関数暗号方式は非特許文献1から5や参考文献1に開示された方式に限定されず、どのような方式が用いられてもよい。
【0013】
各実施形態の検索可能暗号方式では、ストレージ装置の暗号化データベース格納部に、検索対象情報に対応するタグ情報を含む暗号化データベースが格納される。このタグ情報は、第1ベクトルに対応する暗号文cと登録ユーザの検索者鍵sxuの像である第1値hとを含む。第1ベクトルは、登録ユーザの属性に対して設定されたベクトルと検索対象情報のキーワードに対して設定されたベクトルとを含む。また、暗号文cは、第1値hと登録ユーザの補間鍵ckuとの組の像である第2値r'を関数暗号方式に則って暗号化した暗号文である。登録ユーザが利用する検索装置は、第2ベクトルに対応する復号鍵である検索クエリを関数暗号方式に則って生成する。この第2ベクトルは、登録ユーザの属性に対応するベクトルと検索キーワードに対応するベクトルとを含む。検索クエリは検索代行装置に送られる。検索代行装置は登録ユーザの補間鍵ckuを格納している。この検索代行装置は、検索クエリを復号鍵として暗号化データベースのタグ情報に含まれる暗号文cを復号して復号値mes'を得る。検索代行装置は、この復号値mes'がタグ情報に含まれる第1値hと補間鍵ckuとの組に対応するかを検証する。ここで、復号値mes'がタグ情報に含まれる第1値hと補間鍵ckuとの組に対応する場合、検索クエリに対してタグ情報に対応するキーワードがヒットしたことになる。これにより、登録ユーザによる暗号化データベースの検索が可能となっている。一方、検索代行装置による補間鍵ckuの利用が禁止された場合にはこのような判定ができず、利用が禁止された補間鍵ckuに対応する登録ユーザは暗号化データベースの検索を行うことができない。このように検索代行装置による補間鍵ckuの利用を禁止することにより、利用を禁止した補間鍵ckuに対応する登録ユーザの検索権限を失効させることができる。また、登録ユーザの検索権限を失効させるために暗号化データベースを変更する必要はない。
【0014】
また、各実施形態の検索可能暗号方式では、登録ユーザが利用する登録者装置が登録ユーザの検索者鍵sxuを格納している。登録者装置は、登録ユーザの検索者鍵sxuの像である第1値hを生成し、これを検索代行装置に送る。検索代行装置は、当該検索代行装置に格納された当該登録ユーザの補間鍵ckuを用い、第1値hと補間鍵ckuとの組の像である第3値e^を生成する。第3値e^は登録者装置に送られる。登録者装置は、第3値e^の像である第2値r'を生成し、前述の第1ベクトルを用いて関数暗号方式に則って第2値r'を暗号化して暗号文cを生成し、暗号文cと第1値hとを含むタグ情報を生成する。実施形態では、登録者装置に格納された検索者鍵sxuと検索代行装置に格納された補間鍵ckuとを用いてタグ情報が生成されるため、登録者装置や検索代行装置が単独で正しいタグ情報を生成することができない。これにより、登録者装置や検索代行装置が単独に不正なタグ情報を生成する事態を抑制できる。さらに、検索代行装置による補間鍵ckuの利用を禁止することにより、利用を禁止した補間鍵ckuに対応する登録ユーザのタグ情報の生成権限を失効させることもできる。
【0015】
なお、検索権限やタグ情報の生成権限を失効させる場合には、例えば、管理装置が失効させる登録ユーザを示す失効情報を検索代行装置に入力する。失効情報が入力された検索代行装置は、当該失効情報が示す登録ユーザに対応する補間鍵ckuの検索代行装置での使用を禁止する。これにより、当該登録ユーザの検索権限やタグ情報の生成権限が失効する。
【0016】
また、各実施形態の検索可能暗号方式では、管理者秘密鍵axが管理者装置に格納されている。管理者秘密鍵axは補間鍵ckuや検索者鍵sxuが生成される前に生成された情報である。登録ユーザに対応する補間鍵ckuは、当該登録ユーザに対応する検索者鍵sxuと管理者秘密鍵axとの組の像である。これにより、登録者装置に格納された検索者鍵sxuから補間鍵ckuが推測されることを防止できるとともに、検索代行装置に格納された補間鍵ckuから検索者鍵sxuが推測されることを防止できる。
【0017】
〔実施形態〕
次に、本発明の実施形態を説明する。本形態では、関数暗号方式として階層的内積述語暗号方式を用いる。
【0018】
<定義>
まず、本形態で使用する用語や記号を定義する。
【0019】
行列:「行列」とは演算が定義された集合の元を矩形に並べたものを表す。環の元を要素とするものだけではなく、群の元を要素とするものも「行列」と表現する。
(・)T:(・)Tは・の転置行列を表す。
(・)-1:(・)-1は・の逆行列を表す。
∧:∧は論理積を表す。
∨:∨は論理和を表す。
Z:Zは整数集合を表す。
sec:secはセキュリティパラメータ(sec∈Z, sec>0)を表す。
Fq:Fqは位数qの有限体を表す。位数qは1以上の整数であり、例えば、素数や素数のべき乗値を位数qとする。すなわち、有限体Fqの例は素体やそれを基礎体とした拡大体である。
0F:0Fは有限体Fqの加法単位元(零元)を表す。一般化した加法単位元を0と表す。
1F:1Fは有限体Fqの乗法単位元を表す。一般化した乗法単位元を1と表す。
δ(i,j):δ(i,j)はクロネッカーのデルタ関数を表す。i=jの場合にδ(i,j)=1Fを満たし、i≠jの場合にδ(i,j)=0Fを満たす。
E:Eは有限体Fq上で定義された楕円曲線を表す。
G1, G2,GT:G1, G2, GTは位数qの巡回群を表す。巡回群G1, G2の具体例は、楕円曲線Eのp等分点からなる有限集合E[p]やその部分群である。G1=G2であってもよいしG1≠G2であってもよい。また、巡回群GTの具体例は、有限体Fqを基礎体とする拡大体を構成する有限集合である。その一例は、有限体Fqの代数閉包における1のp乗根からなる有限集合である。
【0020】
なお、本形態では、巡回群G1, G2上で定義された演算を加法的に表現し、巡回群GT上で定義された演算を乗法的に表現する。すなわち、χ∈Fq及びΩ∈G1に対するχ・Ω∈G1は、Ω∈G1に対して巡回群G1で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G1に対するΩ12∈G1は、Ω1∈G1とΩ2∈G1とを被演算子として巡回群G1で定義された演算を行うことを意味する。同様に、χ∈Fq及びΩ∈G2に対するχ・Ω∈G2は、Ω∈G2に対して巡回群G2で定義された演算をχ回施すことを意味し、Ω1, Ω2∈G2に対するΩ12∈G2は、Ω1∈G2とΩ2∈G2とを被演算子として巡回群G2で定義された演算を行うことを意味する。一方、χ∈Fq及びΩ∈GTに対するΩχ∈GTは、Ω∈GTに対して巡回群GTで定義された演算をχ回施すことを意味し、Ω12∈GTに対するΩ1・Ω2∈GTは、Ω1∈GTとΩ2∈GTとを被演算子として巡回群GTで定義された演算を行うことを意味する。
【0021】
n:nは1以上の整数を表す。
ζ:ζは1以上の整数を表す。ζの一例は2又は3である。
G1n+ζ:G1n+ζはn+ζ個の巡回群G1の直積を表す。
G2n+ζ:G2n+ζはn+ζ個の巡回群G2の直積を表す。
g1, g2,gT:g1, g2, gTは巡回群G, G1, G2, GTの生成元を表す。
V:Vはn+ζ個の巡回群G1の直積からなるn+ζ次元のベクトル空間を表す。
V*:V*はn+ζ個の巡回群G2の直積からなるn+ζ次元のベクトル空間を表す。
e:eは直積G1n+ζと直積G2n+ζとの直積G1n+ζ×G2n+ζを巡回群GTに写す非退化な双線形写像(bilinear map)を表す。双線形写像eは、巡回群G1のn+ζ個の元γβ(β=1,...,n+ζ)と巡回群G2のn+ζ個の元γβ*(β=1,...,n+ζ)とを入力とし、巡回群GTの1個の元を出力する。
e:G1n+ζ×G2n+ζ→GT …(1)
【0022】
双線形写像eは以下の性質を満たす。
【0023】
[双線形性]すべてのΓ1∈G1n+ζ,Γ2∈G2n+ζ及びν,κ∈Fqについて以下の関係を満たす。
e(ν・Γ1,κ・Γ2)=e(Γ12)ν・κ …(2)
【0024】
[非退化性]すべてのΓ1∈G1n+ζ,Γ2∈G2n+ζを巡回群GTの単位元に写す関数ではない。
【0025】
[計算可能性]あらゆる
Γ1∈G1n+ζ,Γ2∈G2n+ζ …(3)
についてe(Γ12)を効率的に計算するアルゴリズムが存在する。
【0026】
本形態では、巡回群G1と巡回群G2との直積G1×G2を巡回群GTに写す非退化な双線形写像を計算するための関数
Pair:G1×G2→GT …(4)
を用いて双線形写像eを構成する。本形態の双線形写像eは、巡回群G1のn+ζ個の元γβ (β=1,...,n+ζ)からなるn+ζ次元ベクトル(γ1,...,γn+ζ)と、巡回群G2のn+ζ個の元γβ*(β=1,...,n+ζ)からなるn+ζ次元ベクトル(γ1*,...,γn+ζ*)との入力に対し、巡回群GTの1個の元
e=Πβ=1n+ζPair(γβ, γβ*) …(5)
を出力する関数である。
【0027】
なお、双線形写像Pairは、巡回群G1の1個の元と巡回群G2の1個の元との組を入力とし、巡回群GTの1個の元を出力する関数であり、以下の性質を満たす。
【0028】
[双線形性]すべてのΩ1∈G1,Ω2∈G2及びν,κ∈Fqについて以下の関係を満たす。
【0029】
Pair(ν・Ω1,κ・Ω2)=Pair(Ω12)ν・κ …(6)
[非退化性]すべての
Ω1∈G1,Ω2∈G2 …(7)
を巡回群GTの単位元に写す関数ではない。
【0030】
[計算可能性]あらゆるΩ1∈G1,Ω2∈G2についてPair(Ω12)を効率的に計算するアルゴリズムが存在する。
【0031】
なお、双線形写像Pairの具体例は、WeilペアリングやTateペアリングなどのペアリングである(例えば、参考文献2「Alfred. J. Menezes,ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS, KLUWER ACADEMIC PUBLISHERS, ISBN0-7923-9368-6,pp. 61-81」、参考文献3「RFC 5091: Identity-Based Cryptography Standard (IBCS) #1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems」等参照)。
【0032】
ai(i=1,...,n+ζ):aiは巡回群G1のn+ζ個の元を要素とするn+ζ次元の基底ベクトルを表す。基底ベクトルaiの一例は、κ1・g1∈G1をi次元目の要素とし、残りのn個の要素を巡回群G1の単位元(加法的に「0」と表現)とするn+ζ次元の基底ベクトルである。この場合、n+ζ次元の基底ベクトルai(i=1,...,n+ζ)の各要素をそれぞれ列挙して表現すると、以下のようになる。
【0033】
a1=(κ1・g1,0,0,...,0)
a2=(0,κ1・g1,0,...,0) …(8)
...
an+ζ=(0,0,0,...,κ1・g1)
ここで、κ1は加法単位元0F以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ1=1Fである。基底ベクトルaiは直交基底であり、巡回群G1のn+ζ個の元を要素とするすべてのn+ζ次元ベクトルは、n+ζ次元の基底ベクトルai(i=1,...,n+ζ)の線形和によって表される。すなわち、n+ζ次元の基底ベクトルaiはベクトル空間Vを張る。
【0034】
ai*(i=1,...,n+ζ):巡回群G2のn+ζ個の元を要素とするn+ζ次元の基底ベクトルを表す。基底ベクトルai*の一例は、κ2・g2∈G2をi次元目の要素とし、残りのn個の要素を巡回群G2の単位元(加法的に「0」と表現)とするn+ζ次元の基底ベクトルである。この場合、基底ベクトルai*(i=1,...,n+ζ)の各要素をそれぞれ列挙して表現すると、以下のようになる。
【0035】
a1*=(κ2・g2,0,0,...,0)
a2*=(0,κ2・g2,0,...,0) …(9)
...
an+ζ*=(0,0,0,...,κ2・g2)
ここで、κ2は加法単位元0F以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ2=1Fである。基底ベクトルai*は直交基底であり、巡回群G2のn+ζ個の元を要素とするすべてのn+ζ次元ベクトルは、n+ζ次元の基底ベクトルai*(i=1,...,n+ζ)の線形和によって表される。すなわち、n+ζ次元の基底ベクトルai*はベクトル空間V*を張る。
【0036】
なお、基底ベクトルaiと基底ベクトルai*とは、0Fを除く有限体Fqの元τ=κ1・κ2について
e(ai, aj*)=gTτ・δ(i,j) …(10)
を満たす。すなわち、i=jの場合には、式(5)(6)の関係から、
e(ai, aj*)= Pair(κ1・g12・g2)・Pair(0, 0)・...・Pair(0, 0)
= Pair(g1, g2)κ1・κ2・Pair(g1, g2)0・0・...・Pair(g1, g2)0・0
= Pair(g1, g2)κ1・κ2=gTτ
を満たす。一方、i≠jの場合には、e(ai, aj*)=Πi=1n+ζ Pair(ai, aj*)の右辺は、Pair(κ1・g12・g2)を含まず、Pair(κ1・g1,0)と Pair(0,κ2・g2)とPair(0,0)との積になる。さらに、式(6)の関係からPair(g1, 0)=Pair(0, g2)=Pair(g1, g2)0を満たす。そのため、i≠jの場合には、
e(ai, aj*)=e(g1, g2)0=gT0
を満たす。
【0037】
特に、τ=κ1・κ2=1Fである場合(例えば、κ12=1Fの場合)、
e(ai, aj*)=gTδ(i,j) …(11)
を満たす。ここで、gT0=1は巡回群GTの単位元であり、gT1=gTは巡回群GTの生成元である。この場合、基底ベクトルaiと基底ベクトルai*とは双対正規直交基底であり、ベクトル空間Vとベクトル空間V*とは、双線形写像を構成可能な双対ベクトル空間〔双対ペアリングベクトル空間(DPVS:Dual Paring Vector space)〕である。
【0038】
A:基底ベクトルai(i=1,...,n+ζ)を要素とするn+ζ行n+ζ列の行列を表す。例えば、基底ベクトルai(i=1,...,n+ζ)が式(8)によって表現される場合、行列Aは、
【0039】
【数1】

となる。
【0040】
A*:基底ベクトルai*(i=1,...,n+ζ)を要素とするn+ζ行n+ζ列の行列を表す。例えば、基底ベクトルai*(i=1,...,n+ζ)が式(9)によって表現される場合、行列A*は、
【0041】
【数2】

となる。
【0042】
X:有限体Fqの元を要素とするn+ζ行n+ζ列の行列を表す。基底ベクトルaiの座標変換に用いられる。行列Xのi行j列(i=1,...,n+ζ,j=1,...,n+ζ)の要素をχi,j∈Fqとすると、行列Xは、
【0043】
【数3】

となる。なお、行列Xの各要素χi,jを変換係数と呼ぶ。
【0044】
X *:X *は行列Xの逆行列の転置行列X*=(X-1)Tを表す。基底ベクトルai*の座標変換に用いられる。行列X*のi行j列の要素をχi,j*∈Fqとすると、行列X*は、
【0045】
【数4】

となる。なお、行列X*の各要素χi,j*を変換係数と呼ぶ。
【0046】
この場合、n+ζ行n+ζ列の単位行列をIとするとX・(X*)T=Iを満たす。すなわち、単位行列
【0047】
【数5】

に対し、
【0048】
【数6】

を満たす。ここで、n+ζ次元ベクトル
χi=(χi,1,...,χi,n+ζ) …(18)
χj→*=(χj,1*,...,χj,n+ζ*) …(19)
を定義する。すると、式(17)の関係から、n+ζ次元ベクトルχiとχj→*との内積は、
χi・χj→*=δ(i,j) …(20)
となる。
【0049】
bi:biは巡回群G1のn+ζ個の元を要素とするn+ζ次元の基底ベクトルを表す。行列Xを用いて基底ベクトルai(i=1,...,n+ζ)を座標変換することで得られる。具体的には、基底ベクトルbiは、
bij=1n+ζχi,j・aj …(21)
の演算によって得られる。例えば、基底ベクトルaj(j=1,...,n+ζ)が式(8)によって表現される場合、基底ベクトルbiの各要素をそれぞれ列挙して表現すると、以下のようになる。
【0050】
bi=(χi,1・κ1・g1i,2・κ1・g1 ,...,χi,n+ζ・κ1・g1) …(22)
巡回群G1のn+ζ個の元を要素とするすべてのn+ζ次元ベクトルは、n+ζ次元の基底ベクトルbi(i=1,...,n+ζ)の線形和によって表される。すなわち、n+ζ次元の基底ベクトルbiは前述のベクトル空間Vを張る。
【0051】
bi*:bi*は巡回群G2のn+ζ個の元を要素とするn+ζ次元の基底ベクトルを表す。行列X*を用いて基底ベクトルai*(i=1,...,n+ζ)を座標変換することで得られる。具体的には、基底ベクトルbi*は、
bi*j=1n+ζχi,j*・aj* …(23)
の演算によって得られる。例えば、基底ベクトルaj*(j=1,...,n+ζ)が式(9)によって表現される場合、基底ベクトルbi*の各要素をそれぞれ列挙して表現すると、以下のようになる。
【0052】
bi*=(χi,1*・κ2・g2i,2*・κ2・g2 ,...,χi,n+ζ*・κ2・g2) …(24)
となる。巡回群G2のn+ζ個の元を要素とするすべてのn+ζ次元ベクトルは、n+ζ次元の基底ベクトルbi*(i=1,...,n+ζ)の線形和によって表される。すなわち、n+ζ次元の基底ベクトルbi*は前述のベクトル空間V*を張る。
【0053】
なお、基底ベクトルbiと基底ベクトルbi*とは、0Fを除く有限体Fqの元τ=κ1・κ2について
e(bi, bj*)=gTτ・δ(i,j) …(25)
を満たす。すなわち、式(5)(20)(22)(24)の関係から、
【0054】
【数7】

を満たす。特に、τ=κ1・κ2=1Fである場合(例えば、κ12=1Fの場合)、
e(bi, bj*)=gTδ(i,j) …(26)
を満たす。この場合、基底ベクトルbiと基底ベクトルbi*とは、双対ペアリングベクトル空間(ベクトル空間Vとベクトル空間V*)の双対正規直交基底である。
【0055】
なお、式(25)の関係を満たすのであれば、式(8)(9)で例示したもの以外の基底ベクトルai及びai*や、式(21)(23)で例示したもの以外の基底ベクトルbi及びbi*を用いてもよい。
【0056】
B:Bは基底ベクトルbi(i=1,...,n+ζ)を要素とするn+ζ行n+ζ列の行列。B=X・Aを満たす。例えば、基底ベクトルbiが式(22)によって表現される場合、行列Bは、
【0057】
【数8】

となる。
【0058】
B*:B*は基底ベクトルbi*(i=1,...,n+ζ)を要素とするn+ζ行n+ζ列の行列を表す。B*=X*・A*を満たす。例えば、基底ベクトルbi*(i=1,...,n+ζ)が式(24)によって表現される場合、行列B*は、
【0059】
【数9】

となる。
【0060】
〔階層的内積述語暗号方式〕
次に、階層的内積述語暗号方式について説明する。階層的内積述語暗号方式は内積述語暗号方式の一種である。内積述語暗号方式とは、暗号文に対応するベクトルと復号鍵に対応するベクトルとの内積が0となるときに当該暗号文が当該復号鍵で復号可能となる暗号方式である。内積述語暗号では、内積が0となることと論理式の真理値が真となることとが等価である。
【0061】
[内積と論理式の真理値との関係]
内積述語暗号では、論理和や論理積からなる論理式を多項式で表現する。
【0062】
まず、「x1がη1である」という命題1と「x2がη2である」という命題2との論理和 (x11)∨(x22)を
(x11)・(x22) …(29)
という多項式で表現する。すると、各真理値と式(29)の関数値との関係は以下のようになる。
【0063】
【表1】

[表1]から分かるように、論理和(x11)∨(x22)が真である場合、式(29)の関数値は0になり、論理和(x11)∨(x22)が偽である場合、式(29)の関数値は0以外の値となる。すなわち、論理和(x11)∨(x22)が真であることと、式(29)の関数値が0となることとは等価である。よって、論理和は式(29)で表現できる。
【0064】
また、「x1がη1である」という命題1と「x2がη2である」という命題2との論理積 (x11)∧(x22)を
ι1・(x11)+ι2・(x22) …(30)
という多項式で表現する。ただし、ι1及びι2は乱数である。すると、真理値と式(30)の関数値とは以下の関係となる。
【0065】
【表2】

[表2]から分かるように、論理積 (x11)∧(x22)が真である場合、式(30)の関数値は0になり、論理積 (x11)∧(x22)が偽である場合、式(30)の関数値は0以外の値となる。すなわち、論理積 (x11)∧(x22)が真であることと、式(30)の関数値が0となることとは等価である。よって、論理積は式(30)で表現できる。
【0066】
以上から、論理和や論理積からなる任意の論理式を多項式で表現できることが分かる。例えば、論理式{(x11)∨(x22)}∧(x33)∧(x44)は、多項式
ι1・{(x11)・(x22)}+ι2・(x33)+ι3・(x44) …(31)
で表現できる。以下、このように論理式を表現する多項式のことを述語多項式と呼ぶ。
【0067】
述語多項式は2つのベクトルの内積で表現できる。すなわち、述語多項式は、各項の不定元成分と1とを各要素とするベクトルと、各項の係数成分を各要素とするベクトルとの内積に等しい。例えば、式(31)の述語多項式は、各項の不定元成分と1を各要素とするベクトル(x1・x2, x1, x2, x3, x4, 1)と、各項の係数成分を各要素とするベクトル(ι1, -ι1・η2, -ι1・η1, ι2, -ι2・η33, ι1・η1・η23・η4)との内積に等しい。
【0068】
そのため、述語多項式の値が0であるか否かと、述語多項式の各項の不定元成分と1とを各要素とするベクトルと各項の係数成分を各要素とするベクトルとの内積が0であるか否かとは等価である。言い換えると、論理式の真理値が真であるか否かと、当該論理式を示す述語多項式の各項の不定元成分と1とを各要素とするベクトルと各項の係数成分を各要素とするベクトルとの内積が0であるか否かとは等価である。
【0069】
[階層的内積述語暗号方式の基本構成]
内積述語暗号方式では、述語多項式の各項の不定元成分と1とを各要素とするベクトル及び述語多項式の各項の係数成分を各要素とするベクトルの何れか一方が暗号文に埋め込まれ、他方が復号鍵に埋め込まれる。そして、これらのベクトルの内積が0となるときに当該暗号文が当該復号鍵で復号できる。内積述語暗号方式の一種である階層的内積述語暗号方式もこの性質を持つが、階層的内積述語暗号方式ではさらに階層的な処理によって復号鍵を生成できる。すなわち、階層的内積述語暗号方式では属性が階層化され、各階層までの属性に対応する鍵情報が存在するとともに、上位の階層に対応する鍵情報を用いて下位の階層に対応する鍵情報を生成できる。そして、このような階層的な処理によって生成された最終的な鍵情報が復号鍵となる。以下に階層的内積述語暗号方式の基本構成を例示する。以下では、階層的内積述語暗号方式を用いて鍵カプセル化メカニズムKEM (Key Encapsulation Mechanisms)を構成する場合の基本構成を例示する。ただし、これは本発明を限定するものではない。
【0070】
《前提》
深さdの属性空間の階層フォーマットを以下の式によって定義する。ただし、dは1以上n以下の整数である。
【0071】
ξ=(n,d;ξ1,...,ξd) (0=ξ01<...<ξd=n) …(32)
有限体Fqの元を要素とするξωω-1(ω=1,...,d)次元のベクトル(零ベクトルを除く)を階層ωに対応するベクトル
【0072】
【数10】

とし、階層1から階層m(m≦d)までに対応するベクトルを(x1,...,xm)とする。有限体Fqの元を要素とするξωω-1次元(ω=1,...,d)のベクトル(零ベクトルを除く)を階層ωに対応するベクトル
【0073】
【数11】

とし、階層1から階層mまでに対応するベクトルを(v1,...,vm)とする。
【0074】
《Setup:セットアップ》
−入力:セキュリティパラメータsec
−出力:階層フォーマットξ,マスタ秘密鍵msk,公開パラメータmpk
Setupの一例では、セキュリティパラメータsecの単調増加関数値をnとし、階層フォーマットξ=(n,d;ξ1,...,ξd)が定められる。また、この例ではζ=3とし、n+3次元の基底ベクトルai(i=1,...,n+3)を要素とするn+3行n+3列の行列Aと、基底ベクトルai*(i=1,...,n+3)を要素とするn+3行n+3列の行列A*と、座標変換のためのn+3行n+3列の行列X,X*とが選択される。次に、式(21)に従って座標変換されたn+3次元の基底ベクトルbi(i=1,...,n+3)が算出され、式(23)に従って座標変換されたn+3次元の基底ベクトルbi*(i=1,...,n+3)が算出される。
【0075】
この例では、基底ベクトル(b1*,...,bn*,bn+1*,bn+2*,bn+3*)と行列Xとがマスタ秘密鍵mskとして出力され、基底ベクトル(b1,...,bn,bn+1+bn+2,bn+3)、ベクトル空間V, V*、セキュリティパラメータsec、有限体Fq、楕円曲線E、巡回群G1, G2,GT、生成元g1, g2, gT、双線形写像eなどが公開パラメータmpkとして出力される。
【0076】
《GenKey:鍵情報生成》
−入力:マスタ秘密鍵msk,公開パラメータmpk,ベクトル(v1,...,vm)
−出力:ベクトル(v1,...,vm)に対応する鍵情報km*
GenKeyの一例では、まず、有限体Fqから元σα,ω,Ψ,Φα∈Fq (α=0,...,m+1,ξm+1,...,n; ω=1,...,m)が任意に選択される。この例では、これらとマスタ秘密鍵mskである基底ベクトル(b1*,...,bn*,bn+1*,bn+2*,bn+3*)とベクトル(v1,...,vm)とを用い、ベクトル(v1,...,vm)に対応する鍵情報
【0077】
【数12】

が生成されて出力される。ただし、
【0078】
【数13】

である。
【0079】
《Delegate(m'):鍵情報生成委譲》
−入力:公開パラメータmpk,鍵情報km'*,ベクトルvm'+1
−出力:ベクトル(v1,...,vm'+1)に対応する鍵情報km'+1*
階層的内積述語暗号方式では、マスタ秘密鍵mskを用いることなく、公開パラメータmpk,鍵情報km'*,ベクトルvm'+1からベクトル(v1,...,vm'+1)に対応する鍵情報km'+1*を生成できる。ただし、m'=1,...,d-1である。
【0080】
Delegate(m')の一例では、有限体Fqから元σ'α,ω,Ψ',Φ'α∈Fq (α=0,...,m'+2,ξm'+1+1,...,n; ω=1,...,m'+1)が任意に選択される。この例では、これらと鍵情報km'*とベクトルvm'+1と用い、ベクトル(v1,...,vm'+1)に対応する鍵情報
【0081】
【数14】

が生成されて出力される。ただし、
【0082】
【数15】

である。
【0083】
《Enc:暗号化》
−入力:公開パラメータmpk,ベクトル(v1,...,vm),平文mes
−出力:暗号文(c1,c2)
Encの一例では、まず、有限体Fqから任意の元υ1,...,υdn+3,υが選択される。そして、これらと公開パラメータmpkとベクトル(x1,...,xm)とを用い、暗号文
【0084】
【数16】

が生成される。また、gTτ・υを共通鍵とし、所定の共通鍵暗号方式に則って平文mesの暗号文c2が生成される。暗号文c2の一例は、
c2=gTτ・υ・mes …(44)
である。なお、前述のように定数τの一例はτ=1Fである。その後、以上のように生成された暗号文(c1,c2)が出力される。
【0085】
《Dec:復号》
−入力:公開パラメータmpk,ベクトル(v1,...,vm)に対応する鍵情報km*,暗号文(c1,c2)
−出力:復号値mes'
Decの一例では、
mes'=c2/e(c1,km,0*) …(45)
によって復号値mes'を計算する。
【0086】
暗号文c1と鍵情報km*のkm,0*とが式(1)の双線形写像e(この例ではζ=3)に入力されると、式(2)(25)の性質から、
【0087】
【数17】

を満たす。なお、σω及びσは有限体Fqの元である。Delegate(m')がなされることなく鍵情報km*が生成された場合にはσω0,ωである。Delegate(m')が1回以上なされた場合には、GenKeyに使用された有限体Fqの元σα,ωやDelegate(m')時に使用された有限体Fqの元σ'α,ωやΦ'αに応じてσωの値が定まる。ここで、すべてのω=1,...,mについて内積vω・xω=0Fであれば、式(46)は、
e(c1,km,0*)=gTτ・υ …(47)
と変形できる。式(44)(45)(47)より、すべてのω=1,...,mについて内積vω・xω=0Fである場合にmes'=mesとなり、正しく復号がなされることがわかる。
【0088】
<構成>
図1は、実施形態の検索可能暗号システム1の全体構成を説明するための図である。
【0089】
図1に例示するように、本形態の検索可能暗号システム1は、管理装置110−m(m=1,...,M)と登録装置120−u(u=1,...,U)と検索代行装置130とストレージ装置140と検索装置150−u(u=1,...,U)とを有する。なお、M及びUはそれぞれ1以上の整数である。また、管理装置110−mは、検索可能暗号システム1のm番目の管理者が使用する装置である。本形態では、小さいmに対応する管理者ほど強い管理権限を持つ。すなわち、m=1に対応する管理者が最も強い権限を持つ。また、登録装置120−u及び検索装置150−uは、検索可能暗号システム1を利用するu番目の登録ユーザが使用する装置である。また、各装置は他の装置へ情報を提供可能なように構成されている。装置間の情報提供はネットワークを通じて行われてもよいし、可搬型記録媒体を介して行われてもよい。
【0090】
[管理装置]
図2Aは、実施形態の管理装置110−1の機能構成を説明するための図であり、図2Bは、実施形態の管理装置110−(m’+1)(m'=1,...,M-1)の機能構成を説明するための図である。
【0091】
図2Aに例示するように、管理装置110−1は、入力部111−1と出力部112−1とマスタ秘密鍵格納部113−1と管理者秘密鍵格納部114−1と制御部115−1とベクトル設定部116a−1と鍵情報生成部116b−1と補間鍵生成部116d−1と検索者鍵生成部116c−1と失効情報生成部116e−1とを有する。図2Bに例示するように、管理装置110−(m’+1)は、入力部111−(m’+1)と出力部112−(m’+1)と制御部115−(m’+1)とベクトル設定部116a−(m’+1)と鍵情報生成部116b−(m’+1)とを有する。管理装置110−mは、例えば、CPU(central processing unit),RAM(random-access memory),ROM(read-only memory)などを有する公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。また、管理装置110−mは、それぞれ、制御部115−mの制御のもと各処理を実行する。また、管理装置110−mでの各演算結果は、図示していない一時メモリに格納され、必要に応じて読み出されて使用される。
【0092】
[登録装置]
図3は、実施形態の登録装置120−uの機能構成を説明するための図である。
【0093】
図3に例示するように、登録装置120−uは、入力部121−uと出力部122−uと属性格納部123a−uと登録キーワード格納部123b−uと検索者鍵格納部123c−uと制御部125−uと写像部126a−u,126d−uと乱数生成部126b−u,126c−uとベクトル設定部126e−uと暗号化部126f−uとタグ情報生成部126g−uとを有する。登録装置120−uは、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。また、登録装置120−uは、それぞれ、制御部125−uの制御のもと各処理を実行する。なお、図面表記の便宜上、図3には2つの入力部121−uが記載されているが、これは入力部の種類や個数を限定するものではない。また、登録装置120−uでの各演算結果は、図示していない一時メモリに格納され、必要に応じて読み出されて使用される。
【0094】
[検索代行装置130]
図4は、実施形態の検索代行装置130の機能構成を説明するための図である。
【0095】
図4に例示するように、検索代行装置130は、入力部131と出力部132と補間鍵格納部133と制御部135と写像部136と検証処理部137とを有する。検索代行装置130は、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。また、検索代行装置130は、それぞれ、制御部135の制御のもと各処理を実行する。また、検索代行装置130での各演算結果は、図示していない一時メモリに格納され、必要に応じて読み出されて使用される。なお、図面表記の便宜上、図4には2つの入力部131が記載されているが、これは入力部の種類や個数を限定するものではない。
【0096】
[ストレージ装置140]
図5Aは、実施形態のストレージ装置140の機能構成を説明するための図である。
【0097】
図5Aに例示するように、ストレージ装置140は、入力部141と出力部142と暗号化データベース格納部143と制御部145と読み書き部146とを有する。ストレージ装置140は、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。また、ストレージ装置140は、制御部135の制御のもと各処理を実行する。
【0098】
図5Bは、暗号化データベース格納部143に格納される暗号化データベースのデータ構成を説明するための図である。
【0099】
図5Bに例示するように、暗号化データベース格納部143には、文書などの検索対象情報Texttiの暗号文CT(Textti)と検索対象情報Texttiのキーワードに対応する暗号化情報であるタグ情報Tag(ti,u)とが互いに対応付けられて格納されている。暗号文CT(Textti)を生成するための検索対象情報Texttiの暗号化方式には限定はなく、任意の既存の暗号化方式(共通鍵暗号方式,公開鍵暗号方式,関数暗号方式など)でよい。タグ情報Tag(ti,u)は暗号文CT(Textti)を検索するための情報である。ストレージ装置140は、タグ情報Tag(ti,u)が与えられても、それに対応する検索キーワードを知ることができない。タグ情報Tag(ti,u)の生成方法の詳細は後述する。
【0100】
[検索装置150−u]
図6は、実施形態の検索装置150−uの機能構成を説明するための図である。
【0101】
図6に例示するように、検索装置150−uは、入力部151−uと出力部152−uと鍵情報格納部153−uと検索対象情報復号鍵格納部154−uと制御部155−uとベクトル設定部156−uと検索クエリ生成部157−uと復号部158−uとを有する。検索装置150−uは、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。また、検索装置150−uは、それぞれ、制御部155−uの制御のもと各処理を実行する。なお、図面表記の便宜上、図6には2つの入力部151−uが記載されているが、これは入力部の種類や個数を限定するものではない。
【0102】
<事前処理>
前述したSetupが実行され、階層フォーマットξ,マスタ秘密鍵msk,公開パラメータmpkが定められる。マスタ秘密鍵mskは、管理装置110−1(図2A)のマスタ秘密鍵格納部113−1に安全に格納され、管理装置110−m,登録装置120−u,検索装置150−u及び検索代行装置130が、公開パラメータmpkを用いた処理が可能なように構成される。また、管理装置110−m及び登録装置120−uが階層フォーマットξに従った処理が可能なように構成される。
【0103】
管理装置110−1(図2A)の管理者秘密鍵格納部114−1には、有限体Fqの任意の元である管理者秘密鍵ax∈Fqが安全に格納されているものとする。
【0104】
登録装置120−u(図3)の登録キーワード格納部123b−uには、登録を行う検索対象情報Texttiの暗号文CT(Textti)と検索対象情報Texttiに対応するキーワードWTとが格納されている。キーワードWTは、例えば、検索対象情報Texttiに含まれるキーワード又はキーワードの集合である。さらに、登録装置120−uの属性格納部123a−uには、登録装置120−uを利用するユーザの属性を表す情報(以下、単に「属性」という)が格納されている。ユーザの属性の例は、ユーザが所属するグループを表す情報(会社名、所属部門、課、担当、グループなど)、住所、年齢、職業、趣味などである。
【0105】
検索装置150−u(図6)の検索対象情報復号鍵格納部154−uには、登録装置120−u(図3)の登録キーワード格納部123b−uに格納された暗号文CT(Textti)を復号するための検索対象情報復号鍵Keytiが格納されている。
【0106】
<ユーザ登録>
ユーザ登録では、管理装置110−mが登録ユーザの属性に対して設定されたベクトル(v1,...,vM)に対応する鍵情報kM*を生成する。鍵情報kM*の生成方式は大きく分けて2通り存在する。
【0107】
一つ目の方式は、管理装置110−1が前述のGenKeyのみに従って鍵情報kM*を生成する方式である(一括方式)。このような方式は小規模グループに適したものであるといえる。二つ目の方式は、管理装置110−1が前述のGenKeyに従い、その他の管理装置110−(m’+1)が前述のDelegate(m')に従い、鍵情報kM*を生成する方式である(委託方式)。このような方式は階層化された大規模グループに適したものであるといえる。
【0108】
[一括方式]
図7は、一括方式によって鍵情報kM*を生成する処理を説明するためのフローチャートである。
【0109】
一括方式では、最も強い権限をもつm=1に対応する管理者の管理装置110−1のみによって鍵情報kM*を生成する。
【0110】
まず、管理装置110−1(図2A)の入力部111−1に登録ユーザの属性ATTが入力される。属性ATTはM層ATT1,...,ATTMに階層化されている。各層に対応する属性ATTmを部分属性と呼ぶことにし、小さいmに対応する部分属性ATTmほど上位の属性を表すものとする。例えば、M=2の場合、属性ATTは2層の部分属性ATT1及びATT2からなり、この場合の部分属性の例は、
ATT1=(○○株式会社,○○部門) …(48)
ATT2=(○○課,○○担当,○○グループ) …(49)
である(ステップS101)。
【0111】
入力された属性ATTはベクトル設定部116a−1に入力される。ベクトル設定部116a−1は、階層フォーマットξ及びシステム内で定められた規則に従って属性ATTに対応するベクトル(v1,...,vM)を設定する。例えば、ベクトル設定部116a−1は、まず、階層フォーマットξ及びシステム内で定められた規則に従い、属性ATTを表すベクトル(x1,...,xM)を式(33)に従って設定し、内積xω・vω=0Fとなる式(34)に従ったベクトル(v1,...,vM)を属性ATTに対応するベクトルとする。式(48)(49)の例を用いて説明すると、例えば、ベクトル設定部116a−1は、部分属性ATT1を「○○株式会社」を表すx1及び「○○部門」を表すx2を要素とする2次元のベクトル
x1=(x1,x2) …(50)
に変換し、部分属性ATT2を「○○課」を表すx3、「○○担当」を表すx4、及び「○○グループ」を表すx5を要素とする3次元のベクトル
x2=(x3,x4,x5) …(51)
に変換し、属性ATTを表すベクトル(x1,x2)=(x1,x2,x3,x4,x5)を設定し、内積xω・vω=0Fとなるベクトル(v1,v2)=(v1,v2,v3,v4,v5)を属性ATTに対応するベクトルとする。なお、システム内で定められた規則に基づいて定められるのであれば、属性ATTを表すベクトル(x1,...,xM)をどのように定めるかについては特に限定はなく、属性ATTごとにベクトル(x1,...,xM)が定まるのであればどのような方法でもよい(ステップS102)。
【0112】
生成されたベクトル(v1,...,vM)は鍵情報生成部116b−1に入力される。鍵情報生成部116b−1は、マスタ秘密鍵格納部113−1からマスタ秘密鍵mskを読み出し、m=Mとした前述のGenKeyに従い、ベクトル(v1,...,vM)に対応する鍵情報kM*を生成する。例えば、鍵情報生成部116b−1は、m=Mとした式(35)-(38)に従って鍵情報kM*を生成する。生成された鍵情報kM*は出力部112−1に送られる(ステップS103)。
【0113】
また、検索者鍵生成部116c−1が、有限体Fqから任意の元を選択し、それを登録ユーザの検索者鍵sxu∈Fqとする。生成された検索者鍵sxuは出力部112−1及び補間鍵生成部116d−1に送られる(ステップS104)。
【0114】
検索者鍵sxuが送られた補間鍵生成部116d−1は、管理者秘密鍵格納部114−1から管理者秘密鍵axを抽出し、当該検索者鍵sxuと管理者秘密鍵axとの組の像である補間鍵ckuを生成する。例えば、補間鍵生成部116d−1は、
【0115】
【数18】

によって補間鍵ckuを生成する。生成された補間鍵ckuは出力部112−1に送られる(ステップS105)。
【0116】
出力部112−1は、鍵情報kM*(M≦d-1)及び検索者鍵sxuを出力する。鍵情報kM*は登録ユーザが使用する検索装置150−u(図6)の入力部151−uに入力され、鍵情報格納部153−uに格納される。検索者鍵sxuは登録ユーザが使用する登録装置120−u(図3)の入力部121−uに入力され、検索者鍵格納部123c−uに格納される(ステップS106)。
【0117】
また、出力部112−1(図2A)は、補間鍵ckuを出力する。補間鍵ckuは検索代行装置130(図4)の入力部131に入力され、登録ユーザに対応付けられて補間鍵格納部133に格納される(ステップS107)。
【0118】
[委託方式]
図8及び9は、委託方式によって鍵情報kM*を生成する処理を説明するためのフローチャートである。
【0119】
委託方式では、最も強い権限をもつm=1に対応する管理者の管理装置110−1が前述のGenKeyに従って鍵情報k1*を生成し、上位階層の鍵情報を受け取った下位階層の管理者の管理装置110−(m’+1)が前述のDelegate(m')に従って鍵情報を生成していき、最終的に鍵情報kM*が生成される。
【0120】
まず、管理装置110−1(図2A)の入力部111−1に登録ユーザの部分属性ATT1が入力される(ステップS111)。
【0121】
入力された部分属性ATT1はベクトル設定部116a−1に入力される。ベクトル設定部116a−1は、階層フォーマットξ及びシステム内で定められた規則に従って部分属性ATT1に対応するベクトルv1を設定する。例えば、ベクトル設定部116a−1は、まず、階層フォーマットξ及びシステム内で定められた規則に従い、部分属性ATT1を表すベクトルx1を式(33)に従って設定し、内積x1・v1=0Fとなる式(34)に従ったベクトルv1を部分属性ATT1に対応するベクトルとする。式(48)(49)の例を用いて説明すると、例えば、ベクトル設定部116a−1は、式(50)によって部分属性ATT1を表すベクトルx1を設定し、内積x1・v1=0Fとなる式(51)のベクトルv1を、部分属性ATT1に対応するベクトルとする(ステップS112)。
【0122】
生成されたベクトルv1は鍵情報生成部116b−1に入力される。鍵情報生成部116b−1は、マスタ秘密鍵格納部113−1からマスタ秘密鍵mskを読み出し、m=1とした前述のGenKeyに従い、ベクトルv1に対応する鍵情報k1*を生成する。例えば、鍵情報生成部116b−1は、m=1とした式(35)-(38)に従って鍵情報k1*を生成する。生成された鍵情報k1*は出力部112−1に送られる(ステップS113)。
【0123】
また、一括方式と同じステップS104及びS105の処理が実行される。出力部112−1はステップS104で得られた検索者鍵sxuを出力する。検索者鍵sxuは登録ユーザが使用する登録装置120−u(図3)の入力部121−uに入力され、検索者鍵格納部123c−uに格納される(ステップS116)。また、出力部112−1はステップS105で得られた補間鍵ckuを出力する。補間鍵ckuは検索代行装置130(図4)の入力部131に入力され、登録ユーザに対応付けられて補間鍵格納部133に格納される(ステップS107)。さらに、出力部112−1はステップS113で得られた鍵情報k1*を出力する。
【0124】
鍵情報k1*は管理装置110−2に入力される。管理装置110−2以降では前述したDelegate(m')(m'=1,...,M-1)に従って鍵生成が行われる。以下では管理装置110−m’から鍵情報km'*を受け取る管理装置110−(m’+1)の処理を一般化して説明する。
【0125】
まず、鍵情報km'*が管理装置110−(m’+1)(図2B)の入力部111−(m’+1)に入力され、鍵情報生成部116b−(m’+1)に入力される(ステップS120)。また、部分属性ATTm'+1がベクトル設定部116a−(m’+1)に入力される。ベクトル設定部116a−(m’+1)は、階層フォーマットξ及びシステム内で定められた規則に従って部分属性ATTm'+1に対応するベクトルvm'+1を設定する。例えば、ベクトル設定部116a−(m’+1)は、まず、階層フォーマットξ及びシステム内で定められた規則に従い、部分属性ATTm'+1を表すベクトルxm'+1を式(33)に従って設定し、内積xm'+1・vm'+1=0Fとなる式(34)に従ったベクトルvm'+1を部分属性ATTm'+1に対応するベクトルとする。生成されたベクトルvm'+1は鍵情報生成部116b−(m’+1)に入力される(ステップS122)。
【0126】
鍵情報km'*とベクトルvm'+1とが入力された鍵情報生成部116b−(m’+1)は、前述のDelegate(m')に従って、ベクトル(v1,...,vm'+1)に対応する鍵情報km'+1*を生成する。例えば、鍵情報生成部116b−(m’+1)は、式(39)-(42)に従って鍵情報km'+1*を生成する。生成された鍵情報km'+1*は出力部112−(m’+1)に送られる(ステップS123)。出力部112−(m’+1)は鍵情報km'+1*を出力する(ステップS128)。
【0127】
m'+1<Mの場合、出力された鍵情報km'+1*は下位階層の管理装置110−(m’+2)に入力され、m'+1を新たなm'としてステップS120−S128の処理が実行される。一方、m'+1=Mの場合、出力された鍵情報km'+1*=kM*は、登録ユーザが使用する検索装置150−u(図6)の入力部151−uに入力され、鍵情報格納部153−uに格納される。
【0128】
<データベース登録>
図10は、データベース登録の処理を説明するためのフローチャートである。
【0129】
登録ユーザは登録装置120−uを用い、以下のようにデータベース登録を行うことができる。
【0130】
まず、登録装置120−u(図3)の写像部126a−uが、登録キーワード格納部123b−uから検索対象情報Texttiに対応する登録用のキーワードWTを抽出する(ステップS131)。また、乱数生成部126b−uが、キーワードWTに対して有限体Fqの任意の元である選択値rwT∈Fqを選択する。選択値rwTは写像部126a−uに入力される(ステップS132)。写像部126a−uは、さらに検索者鍵格納部123c−uから検索者鍵sxuを抽出し、WT,sxu,rwTを用いて値hを生成する(登録ユーザの検索者鍵sxuの像である第1値h)。例えば、写像部126a−uは、入力値に対して巡回群G1の元を出力する擬似ランダム関数Hσを用い、
【0131】
【数19】

で表される値hを生成する。なお、どのような擬似ランダム関数Hσを用いてもかまわないが、例えば、鍵付きハッシュ関数を擬似ランダム関数Hσとして用いることができる(ステップS133)。生成された値hは出力部122−u及びタグ情報生成部126g−uに送られる。出力部122−uは値hを出力する(ステップS134)。
【0132】
登録装置120−uから出力された値hは、検索代行装置130(図4)の入力部131に入力され、写像部136に送られる。写像部136は、補間鍵格納部133から登録装置120−uを利用する登録ユーザに対応する補間鍵ckuを抽出する。写像部136は、当該値hと補間鍵ckuとの組の像である値e^を生成する。例えば、写像部136は、当該値hと補間鍵ckuとの組に式(4)の双線形写像Pairを施して値e^を生成する。すなわち、
e^=Pair(h,cku)∈GT …(54)
で表される値e^を生成する(ステップS135)。値e^は出力部132に送られ、出力部132は値e^を出力する(ステップS136)。
【0133】
検索代行装置130から出力された値e^は、登録装置120−u(図3)の入力部121−uに入力され、写像部126d−uに送られる。写像部126d−uは値e^の像である値r'を生成する。例えば、まず乱数生成部126c−uが巡回群GTの任意の元である選択値rを生成して写像部126d−u及びタグ情報生成部126g−uに送り(ステップS137)、写像部126d−uが、
r'=r・e^ …(55)
で表される値r'を生成する。値r'は暗号化部126f−uに送られる(ステップS138)。
【0134】
ベクトル設定部126e−uが、登録キーワード格納部123b−uから、ステップS131で抽出されたものと同じ登録用のキーワードWTを抽出する。ベクトル設定部126e−uは、システム内で定められた規則に従い、登録用のキーワードWTを表すベクトルxM+1を式(33)のように生成する。システム内で定められた規則に従うのであれば、登録用のキーワードWTを表すベクトルxM+1をどのように定めるかに限定はない。すなわち、システム内で定められた規則に従って検索方式(完全一致検索、前方一致検索、後方一致検索、部分一致検索など)と検索用のキーワードWQとの組に対してベクトルvM+1が定まり、当該検索方式と検索用のキーワードWQとの組に対して登録用のキーワードWTがヒットする場合に内積xM+1・vM+1=0Fとなるのであれば、ベクトルxM+1をどのように定めてもよい。例えば、ベクトル設定部126e−uは、非特許文献1に記載された登録キーワードから属性ベクトルを生成する技術を用いてベクトルxM+1を生成できる。検索方式としては、例えば、非特許文献1に記載された「完全一致検索」「部分一致検索」「前方一致検索」「後方一致検索」「完全不一致検索」「含まれない」などとすることができるが、以下では一例として検索方式が「部分一致検索」である場合のベクトルxM+1の生成方法を例示する。
【0135】
[検索方式が部分一致検索である場合の例]
登録用のキーワードWTの文字数をΘとし、登録用のキーワードWTの先頭からθ番目の文字に割り当てられた有限体Fqの元をxθ(1≦θ≦Θ)とする。また、検索用のキーワードWQの文字数をΡとし、検索用のキーワードWQの先頭からρ番目の文字に割り当てられた有限体Fqの元をsρ(1≦ρ≦Ρ)とする。この場合、登録用のキーワードWTと検索用のキーワードWQとが部分一致した場合に真理値が真となる論理式に対応する述語多項式の一例は、
【0136】
【数20】

となる。ただし、rdε,ρは有限体Fqからランダムに選択される元である。この場合、式(56)のxθを不定元とみなした場合における、式(56)の各項の不定元成分と1Fとを各要素とするベクトルをxM+1とすればよい([検索方式が部分一致検索である場合の例]の説明終わり)。生成されたベクトルxM+1は暗号化部126f−uに送られる(ステップS139)。
【0137】
また、ベクトル設定部126e−uが、属性格納部123a−uから登録ユーザの属性ATTを抽出する。この属性ATTは当該登録ユーザのユーザ登録時に用いられたものと同じである。ベクトル設定部126e−uは、階層フォーマットξ及びシステム内で定められた規則に従って属性ATTを表すベクトル(x1,...,xM)を設定する。当該ベクトル(x1,...,xM)とユーザ登録時のステップS103で設定されたベクトル(v1,...,vM)とは、ω=1,...,Mについて内積xω・vω=0Fを満たす。生成されたベクトル(x1,...,xM)は暗号化部126f−uに送られる(ステップS140)。
【0138】
暗号化部126f−uは、x1,...,xM,xM+1(第1ベクトル)を用い、値r'を前述したEncによって暗号化した暗号文cを生成する。例えば、暗号化部126f−uは、d=M+1とした式(43)に従って暗号文c1を生成し、mes=r'とした式(44)に従って暗号文c2を生成し、暗号文c=(c1,c2)を出力する。生成された暗号文cはタグ情報生成部126g−uに送られる(ステップS141)。
【0139】
タグ情報生成部126g−uは、暗号文cと値hとを含むタグ情報を生成する。本形態の場合、タグ情報生成部126g−uは、送られたc,h,rを含むタグ情報
Tag(ti,u)=(tag1,tag2,tag3)=(c,h,r) …(57)
を生成する(ステップS142)。生成されたタグ情報Tag(ti,u)は出力部122−uに送られる。また、登録キーワード格納部123b−uから読み出された暗号文CT(Textti)が出力部122−uに送られる。出力部122−uは、暗号文CT(Textti)とタグ情報Tag(ti,u)とを出力する。これらの組はストレージ装置140(図5A)の入力部141に入力され、書込み部146から暗号化データベース格納部143に格納される(図5B)。
【0140】
<検索>
図11は、検索処理を説明するためのフローチャートである。
【0141】
登録ユーザは検索装置150−u(図6)を用い、以下のように検索を行うことができる。
【0142】
まず、検索を行う登録ユーザによって選択された検索用のキーワードwQが入力部151−uに入力される(ステップS151)。検索用のキーワードwQはベクトル設定部156−uに送られる。ベクトル設定部156−uは、システム内で定められた規則に従い、検索方式と検索用のキーワードWQに対応するベクトルvM+1を設定する。ベクトルvM+1は、検索方式と検索用のキーワードWQとの組に対し、ベクトルxM+1に対応する登録用のキーワードWTがヒットする場合に内積xM+1・vM+1=0Fを満たすものである。例えば、ベクトル設定部156−uは、非特許文献1に記載された検索キーワードから述語ベクトルを生成する技術を用いてベクトルvM+1を生成できる。例えば、前述した[検索方式が部分一致検索である場合の例]によって登録用のキーワードWTに対応するベクトルxM+1が定められるならば、式(56)の各項の係数成分を各要素とするベクトルがvM+1とされる(ステップS152)。
【0143】
生成された検索用のキーワードWQに対応するベクトルvM+1は、検索クエリ生成部157−uに送られる。検索クエリ生成部157−uは、鍵情報格納部153−uから鍵情報kM*を抽出する。検索クエリ生成部157−uは、kM*,vM+1を用い、m'=Mとした前述のDelegate(m')によって、v1,...,vM及びvM+1(第2ベクトル)に対応する鍵情報(復号鍵)である検索クエリkM+1*を生成する。例えば、検索クエリ生成部157−uは、m'=M(M≦d-1)とした式(39)-(42)に従って検索クエリkM+1*を生成する。なお、m=d-1の場合には式(42)のkm'+1,α*を含まない(ステップS153)。生成された検索クエリkM+1*は出力部152−uに送られる。出力部152−uは検索クエリkM+1*を出力する(ステップS154)。
【0144】
検索クエリkM+1*は、検索代行装置130(図4)の入力部131に入力され、検証処理部137及び制御部135に送られる。制御部135は、補間鍵格納部133を参照し、検索クエリkM+1*に対応する登録ユーザの補間鍵ckuが利用可能であるかを検証する。検索クエリkM+1*に対応する登録ユーザの補間鍵ckuが利用可能でない場合とは、検索クエリkM+1*に対応する登録ユーザの補間鍵ckuが補間鍵格納部133に格納されていない場合や、後述する登録失効処理によって補間鍵格納部133に格納された補間鍵ckuの使用が禁止されている場合である(ステップS155)。
【0145】
ここで、検索クエリkM+1*に対応する登録ユーザの補間鍵ckuが利用可能でない場合には、出力部132が「該当なし」を表す⊥を出力して処理を終了する(ステップS163)。
【0146】
一方、検索クエリkM+1*に対応する登録ユーザの補間鍵ckuが利用可能である場合には、検索代行装置130はストレージ装置140(図5A)にアクセスし、暗号化データベース格納部143に格納されたタグ情報Tag(ti,u)の取得を要求するための情報を出力部131から出力する。この情報はストレージ装置140の入力部141に入力されて読み書き部146に送られる。ストレージ装置140の読み書き部146は、暗号化データベース格納部143から何れかのタグ情報Tag(ti,u)を読み出し、出力部142はそれを検索代行装置130に送る。タグ情報Tag(ti,u)は検索代行装置130(図4)の入力部131に入力され、検証処理部137に送られる(ステップS156)。
【0147】
検証処理部137は、補間鍵格納部133から検索クエリkM+1*に対応する登録ユーザの補間鍵ckuを抽出し、kM+1*及びckuを用いてタグ情報Tag(ti,u)を検証する。すなわち、検証処理部137は、検索クエリkM+1*を復号鍵としてタグ情報Tag(ti,u)に含まれるtag1=cを前述したDecに従って復号して得られる復号値mes'が、当該タグ情報Tag(ti,u)に含まれるtag2=hと補間鍵ckuとの組に対応するかを検証する。例えば、検証処理部137は、タグ情報Tag(ti,u)に含まれるtag2=hとckuとの組に双線形写像pairを施して得られる値をe~とした場合におけるmes'/e~がタグ情報Tag(ti,u)に含まれるtag3=rと等しいかを検証する。すなわち、例えば、tag1=(c1,c2),mes'=c2/e(c1,kM+1,0*),e~=pair(tag2,cku)とした場合に、
tag3=mes'/e~ …(58)
を満たすかが検証される。満たす場合には検証合格となる(ステップS157)。
【0148】
ここで、検証合格とならなかった場合(ステップS158)、検索代行装置130はストレージ装置140に対して未検証のタグ情報Tag(ti,u)が暗号化データベース格納部143内に存在するかを問い合わせるための情報を出力部132から出力する。この情報はストレージ装置140(図5A)の入力部141に入力され、読み書き部146に送られる。読み書き部146は、暗号化データベース格納部143を検索して未検証のタグ情報Tag(ti,u)が暗号化データベース格納部143内に存在するか否かを判定し、その判定結果が出力部142から出力される。判定結果は、検索代行装置130(図4)の入力部131に入力され、制御部135に送られる。ここで、未検証のタグ情報Tag(ti,u)が暗号化データベース格納部143内に存在しない旨の応答があった場合、検索代行装置130の出力部132が「該当なし」を表す⊥を出力して処理を終了する(ステップS163)。一方、未検証のタグ情報Tag(ti,u)が暗号化データベース格納部143内に存在する旨の応答があった場合には、ステップS156に戻る。
【0149】
一方、ステップS157で検証合格となった場合(ステップS158)、検索代行装置130はストレージ装置140に対し、検証合格となったタグ情報Tag(ti,u)に対応する検証対象情報の暗号文CT(Textti)の出力を要求するための情報を出力部132から出力する。この情報はストレージ装置140(図5A)の入力部141に入力され読み書き部146に送られる。読み書き部146は、検証合格となったタグ情報Tag(ti,u)に対応する検証対象情報の暗号文CT(Textti)を暗号化データベース格納部143から抽出し、出力部142に送る。出力部142は暗号文CT(Textti)を出力する。暗号文CT(Textti)は、検索代行装置130(図4)の入力部131に入力され、検証処理部137に送られる(ステップS160)。暗号文CT(Textti)は、出力部132に送られて出力され、検索装置(図6)の入力部151−uに入力される(ステップS161)。暗号文CT(Textti)は、復号部158−uに送られる。復号部158−uは検索対象情報復号鍵格納部154−uから検索対象情報復号鍵Keytiを読み出し、これを用いて暗号文CT(Textti)を復号して検索対象情報Texttiを出力する(ステップS162)。
【0150】
<登録失効処理>
図12は、登録失効処理を説明するためのフローチャートである。
【0151】
管理装置110−1(図2A)が或る登録ユーザの登録を失効させる場合、まず、管理装置110−1の失効情報生成部116e−1が、登録を失効させる登録ユーザを表す失効情報Revuを生成し、出力部112−1に送る(ステップS171)。出力部112−1は失効情報Revuを出力し、この失効情報Revuは検索代行装置130(図4)の入力部131に入力される(ステップS172)。失効情報Revuは制御部135に送られ、制御部135は失効情報Revuが示す登録ユーザに対応する補間鍵ckuの検索代行装置130での使用を禁止する。これにより、検索代行装置130は当該補間鍵ckuに対応する登録ユーザのデータベース登録や検索処理を正しく実行できなくなり、当該登録ユーザはデータベース登録や検索処理を行うことができなくなる。
【0152】
この具体的な処理方法に限定はないが、例えば以下の方法を例示できる。
【0153】
[例1]
例1では、各登録ユーザに対応する補間鍵ckuが「検索代行装置130での使用が可能なグループ」と「検索代行装置130での使用が禁止されたグループ」とに区分されて補間鍵格納部133に格納可能とされている。写像部136及び検証処理部137は「検索代行装置130での使用が可能なグループ」に属する補間鍵ckuを利用することはできるが、「検索代行装置130での使用が禁止されたグループ」に属する補間鍵ckuを利用することはできない。
【0154】
前述のユーザ登録時には各ユーザに対応する補間鍵ckuは「検索代行装置130での使用が可能なグループ」に区分されて補間鍵格納部133に格納される。一方、失効情報Revuが制御部135に入力された場合には、制御部135は失効情報Revuが示す登録ユーザに対応する補間鍵ckuを「検索代行装置130での使用が禁止されたグループ」に移す。
【0155】
[例2]
例2では、各登録ユーザに対応する補間鍵ckuが「写像部136及び検証処理部137での使用が可能なグループ」と「検証処理部137での使用が可能だが写像部1367での使用が禁止されたグループ」と「写像部136及び検証処理部137での使用が禁止されたグループ」とに区分されて補間鍵格納部133に格納可能とされている。
【0156】
写像部136は「写像部136及び検証処理部137での使用が可能なグループ」に属する補間鍵ckuを利用することはできるが、その他のグループに属する補間鍵ckuを利用することはできない。検証処理部137は、「写像部136及び検証処理部137での使用が可能なグループ」及び「検証処理部137での使用が可能だが写像部1367での使用が禁止されたグループ」に属する補間鍵ckuを利用することはできるが、その他のグループに属する補間鍵ckuを利用することはできない。
【0157】
前述のユーザ登録時には各ユーザに対応する補間鍵ckuは「写像部136及び検証処理部137での使用が可能なグループ」に区分されて補間鍵格納部133に格納される。一方、失効情報Revuが制御部135に入力された場合には、制御部135は失効情報Revuが示す登録ユーザに対応する補間鍵ckuを「検証処理部137での使用が可能だが写像部1367での使用が禁止されたグループ」又は「写像部136及び検証処理部137での使用が禁止されたグループ」に移す。どちらに移すかは、例えば、同じ登録ユーザに対して失効情報Revuが何回入力されたかによって定められてもよいし、失効情報Revuがどちらに移すかを指定してもよい。
【0158】
[例3]
例3では、失効情報Revuが制御部135に入力された場合に、制御部135が失効情報Revuが示す登録ユーザに対応する補間鍵ckuを補間鍵格納部133から削除する。
【0159】
[例4]
例1及び例2に加え、いったん登録を失効させた登録ユーザの登録を復活させる機能が設けられてもよい。
【0160】
〔変形例〕
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上記実施形態で説明した階層的内積述語暗号方式の基本構成ではζ=3の場合を例示した。しかし、ζがその他の1以上の整数であってもよい。マスタ秘密鍵mskが含む基底ベクトルをζについて一般化すると(b1*,...,bn*,bn+1*,...,bn+ζ*)となり、公開パラメータmpkが含む基底ベクトルをζについて一般化すると(b1,...,bn,bn+1,...,bn+ζ)となる。前述した式(36)-(38),(43)(44)(46)をζについてそれぞれ一般化すると、例えば、以下の式(36')-(38'),(43')(44')(46')のようになる。
【0161】
【数21】

ただし、φω,0,φω,αは有限体Fqから選択された任意の元であり、Ωは0以上ζ以下の整数である。また、有限体Fqの元である定数constに対して以下を満たす。定数constの具体例は1Fである。
【0162】
【数22】

【数23】

ただし、υωは有限体Fqから選択された任意の元である。
【0163】
c2=gTτ・υ・const・mes …(44')
【0164】
【数24】

また、上記の実施形態では、関数暗号方式として、Setup,GenKey,Delegate(m'),Enc,Decを含む階層的内積述語暗号方式を利用する場合を例示した。しかし、Delegate(m')を有しない内積述語暗号方式などの関数暗号方式を利用してもよい。この場合には、例えば、検索装置150−uがそれぞれマスタ秘密鍵mskの一部である基底ベクトル
【0165】
【数25】

を保持し、kM*,vM+1を用い、
【0166】
【数26】

を検索クエリとして出力してもよい。その他、Delegate(m')を有しない参考文献1の方式を用いてもかまわない。
【0167】
また、式(53)の代わりに、検索者鍵sxuの像であるその他の値をhとしてもよい。例えば、巡回群G1の任意の元randに対する、
【0168】
【数27】

を用いてもよい。
【0169】
また、上述した有限体上の元や演算が有限環上の元や演算に置換された構成でもよい。また、登録装置と検索装置とが一体であってもよいし、検索代理装置とストレージ装置とが一体であってもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0170】
〔プログラム等〕
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0171】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0172】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0173】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0174】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0175】
1 検索可能暗号システム
110−m 管理装置
120−u 登録装置
130 検索代行装置
140 ストレージ装置
150−u 検索装置

【特許請求の範囲】
【請求項1】
暗号文に対応するベクトルと復号鍵に対応するベクトルとが特定の論理式の真理値を真にする関係にあるときに当該暗号文が当該復号鍵で復号可能な暗号方式を用いた検索可能暗号システムであって、
ストレージ装置と検索装置と検索代行装置とを有し、
前記ストレージ装置は、
検索対象情報に対応するタグ情報を含む暗号化データベースを格納する暗号化データベース格納部を含み、前記タグ情報が第1ベクトルに対応する暗号文cと登録ユーザの検索者鍵sxuの像である第1値hとを含み、前記第1ベクトルが前記登録ユーザの属性に対して設定されたベクトルと前記検索対象情報のキーワードに対して設定されたベクトルとを含み、前記暗号文cが前記第1値hと前記登録ユーザの補間鍵ckuとの組の像である第2値r'を前記暗号方式に則って暗号化した暗号文であり、
前記検索装置は、
第2ベクトルに対応する復号鍵である検索クエリを前記暗号方式に則って生成する検索クエリ生成部を含み、前記第2ベクトルが登録ユーザの属性に対応するベクトルと検索キーワードに対応するベクトルとを含み、
前記検索代行装置は、
前記登録ユーザの補間鍵ckuを格納する補間鍵格納部と、前記検索クエリを復号鍵として前記暗号化データベースの前記タグ情報に含まれる前記暗号文cを復号して得られる復号値decが、当該タグ情報に含まれる前記第1値hと当該補間鍵格納部に格納された前記補間鍵ckuとの組に対応するかを検証する検証処理部と、を含む、
ことを特徴とする検索可能暗号システム。
【請求項2】
請求項1の検索可能暗号システムであって、
登録者装置をさらに有し、
前記登録者装置は、
前記検索者鍵sxuを格納する検索者鍵格納部と、前記第1値hを生成する第1写像部と、を含み、
前記検索代行装置は、
前記第1値hと前記補間鍵格納部に格納された前記補間鍵ckuとの組の像である第3値e^を生成する第3写像部をさらに含み、
前記登録者装置は、
前記第3値e^の像である前記第2値r'を生成する第2写像部と、前記第1ベクトルを用い、前記暗号方式に則って前記第2値r'を暗号化して前記暗号文cを生成する暗号化部と、前記暗号文cと前記第1値hとを含む前記タグ情報を生成するタグ情報生成部と、をさらに含む、
ことを特徴とする検索可能暗号システム。
【請求項3】
請求項1又は2の検索可能暗号システムであって、
管理者秘密鍵axを格納する管理者装置をさらに有し、
前記補間鍵ckuが前記検索者鍵sxuと前記管理者秘密鍵axとの組の像である、
ことを特徴とする検索可能暗号システム。
【請求項4】
請求項1から3の何れかの検索可能暗号システムであって、
前記検索代行装置は、
失効させる登録ユーザを示す失効情報の入力を受け付ける入力部と、前記失効情報が示す前記登録ユーザに対応する前記補間鍵ckuの前記検索代行装置での使用を禁止する制御部と、をさらに含む、
ことを特徴とする検索可能暗号システム。
【請求項5】
請求項1から4の何れかの検索可能暗号システムであって、
前記第1値hが、前記検索対象情報のキーワードをwTとし、擬似ランダム関数をHσとし、第1選択値をrwTとした場合における、
【数28】

であり、
前記第2値r'が、前記第1値hと前記登録ユーザの補間鍵ckuとの組に双線形写像を施して得られる第3値をe^とし、第2選択値をrとした場合における、r'=r・e^であり、
前記タグ情報がさらに前記第2選択値rを含む、
ことを特徴とする検索可能暗号システム。
【請求項6】
請求項5の検索可能暗号システムであって、
前記検証処理部は、
前記タグ情報に含まれる前記第1値hと前記補間鍵格納部に格納された前記補間鍵ckuとの組に双線形写像を施して得られる値をe~とした場合におけるmes'/e~が前記タグ情報に含まれる前記第2選択値rと等しいかを検証する、
ことを特徴とする検索可能暗号システム。
【請求項7】
暗号文に対応するベクトルと鍵に対応するベクトルとが特定の論理式の真理値を真にする関係にあるときに当該暗号文が当該鍵で復号可能な暗号方式を用いた検索可能暗号方法であって、
検索装置で、登録ユーザの属性に対応するベクトルと検索キーワードに対応するベクトルとを含む第2ベクトルに対応する鍵である検索クエリを前記暗号方式に則って生成する検索クエリ生成ステップと、
登録ユーザの補間鍵ckuを格納する検索代行装置で、前記検索クエリを鍵として暗号化データベースのタグ情報に含まれる暗号文cを復号して得られる復号値mes'が、当該タグ情報に含まれる前記第1値hと前記補間鍵ckuとに対応するかを検証するステップと、有し、
前記暗号化データベースは、
検索対象情報に対応する前記タグ情報とを含み、前記タグ情報が第1ベクトルに対応する前記暗号文cと登録ユーザの検索者鍵sxuの像である前記第1値hとを含み、前記第1ベクトルが前記登録ユーザの属性に対して設定されたベクトルと前記検索対象情報のキーワードに対して設定されたベクトルとを含み、前記暗号文cが前記第1値hと前記登録ユーザの補間鍵ckuとの組の像である第2値r'を前記暗号方式に則って暗号化した暗号文である、
ことを特徴とする検索可能暗号方法。
【請求項8】
請求項1から6の何れかの検索可能暗号システムが有するストレージ装置。
【請求項9】
請求項1から6の何れかの検索可能暗号システムが有する検索装置。
【請求項10】
請求項2の検索可能暗号システムが有する登録者装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2012−79192(P2012−79192A)
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願番号】特願2010−225451(P2010−225451)
【出願日】平成22年10月5日(2010.10.5)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】