(57)【特許請求の範囲】
【請求項１】
暗号文に対応する情報と復号鍵に対応する情報とが特定の関係を満たす場合に前記暗号文が前記復号鍵で復号可能となる暗号方式を用いた検索可能暗号システムであって、
Pが1以上の整数であり、Uが2以上の整数であり、i∈{1,...,P}であり、情報W(i)に対応する暗号文がIND(i)であり、情報Vに対応する復号鍵がQであり、前記暗号文IND(i)及び前記復号鍵Qが前記暗号方式に則って得られるものであり、前記暗号文IND(i)を正しく復号して得られる値がKEY(i)であり、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、
検索装置とU個の計算装置CM(1),...,CM(U)とを有し、
前記検索装置は、
i∈{1,...,P}のそれぞれに対応する暗号文C(i)とインデックス(IND(i), T(i), r(i))とを含む暗号化データベースが格納された記憶部と、
前記復号鍵Qの入力を受け付ける入力部と、
j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)であり、前記復号鍵Qと、集合SUB(j)のすべての元t(j)についてのt(j)∈SUB(j)のそれぞれに対応するIND(t(j)), MAP(T(t(j)),r(t(j)))と、を計算装置CM(j)に対して出力する出力部と、を含み、
前記計算装置CM(j)は、
前記復号鍵Qを用いて前記暗号方式に則って前記暗号文IND(t(j))を復号することで前記像MAP(T(t(j)),r(t(j)))が得られるかを検証する検証部を含む、
検索可能暗号システム。
【請求項２】
請求項１の検索可能暗号システムであって、
Nが2以上の整数であり、前記情報W(i)及び前記情報Vがベクトルであり、前記暗号文IND(i)が前記情報W(i)に対応するN次元ベクトル(T(i,1),...,T(i,N))であり、前記復号鍵Qが前記情報Vに対応するN次元ベクトル(Q(1),...,Q(N))であり、eが双線形写像であり、前記復号鍵Qを用いて前記暗号方式に則って前記暗号文IND(t(j))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記情報W(i)と前記情報Vとの内積が0のときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たす、検索可能暗号システム。
【請求項３】
Pが1以上の整数であり、BU, Nが2以上の整数であり、i∈{1,...,P}であり、ベクトルW(i)に対応する暗号文がN次元ベクトル(T(i,1),...,T(i,N))であり、ベクトルVに対応する復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、eが双線形写像であり、前記復号鍵(Q(1),...,Q(N))を用いて前記暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記ベクトルW(i)と前記ベクトルVとの内積が0のときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、
検索装置とBU個の計算装置BM(1),...,BM(BU)とを有し、
前記検索装置は、
y∈{1,...,BU}, y’∈{1,...,BU-1}, BS(1)={1,...,N}, BS(y’+1)=BS(y’)-BSUB(y’), BSUB(y’)⊂BS(y’), BSUB(BU)=BS(BU)であり、((T(i,1),...,T(i,N)), MAP(T(i),r(i))),(Q(1),...,Q(N))を用い、集合BSUB(y)のすべての元bt(y)について、bt(y)∈BSUB(y)のそれぞれに対応するT(i, bt(y)),Q(bt(y))を計算装置BM(y)に対して出力する出力部を含み、
前記計算装置BM(y)は、e(T(i,bt(y)),Q(bt(y)))を計算する双線形写像計算部を含み、
前記検索装置は、y∈{1,...,BU}のそれぞれに対応する前記計算装置BM(y)で計算されたe(T(i, bt(y)),Q(bt(y)))を用いてΠn=1N e(T(i,n),Q(n))を計算し、それによって前記像MAP(T(i),r(i))が得られるかを検証する検証部を含む、
検索可能暗号システム。
【請求項４】
請求項２又は３の検索可能暗号システムであって、
EUが2以上の整数であり、Kが2以上の整数であり、k∈{1,...,K}であり、(W(i,1),...,W(i,K))がK次元ベクトルであり、(b1,k,...,bN,k)がN次元ベクトルであり、前記N次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、
EU個の計算装置EM(1),...,EM(EU)をさらに有し、f∈{1,...,EU}, f’∈{1,...,EU-1},ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)であり、計算装置EM(f)が、集合ESUB(f)のすべての元et(f)についてet(f)∈ESUB(f)のそれぞれに対応するT(i, et(f))=Σk=1K W(i,k)・bet(f),kを計算する、検索可能暗号システム。
【請求項５】
請求項２から４の何れかの検索可能暗号システムであって、
QUが2以上の整数であり、K’が2以上の整数であり、k’∈{1,...,K’}であり、(V(1),...,V(K’))がK’次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、前記N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、
QU個の計算装置QM(1),...,QM(QU)をさらに有し、g∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)であり、計算装置QM(g)が、集合QSUB(g)のすべての元qt(g)についてqt(g)∈QSUB(g)のそれぞれに対応するQ(qt(g))=Σk’=1K’ V(k’)・bqt(g),k’*を計算する、検索可能暗号システム。
【請求項６】
Pが1以上の整数であり、EU, QU, U, N, K, K’が2以上の整数であり、i∈{1,...,P}, k∈{1,...,K}, k’∈{1,...,K’}であり、(b1,k,...,bN,k)がN次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、(W(i,1),...,W(i,K))がK次元ベクトルであり、暗号文であるN次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、(V(1),...,V(K’))がK'次元ベクトルであり、復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、前記N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、eが双線形写像であり、前記復号鍵(Q(1),...,Q(N))を用いて前記暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記暗号文(T(i,1),...,T(i,N))が前記復号鍵(Q(1),...,Q(N))で正しく復号できたときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、ERND及びQRNDがERND・QRND=1を満たし、
EU個の計算装置EM(1),...,EM(EU)とQU個の計算装置QM(1),...,QM(QU)とU個の計算装置CM(1),...,CM(U)とを有し、
f∈{1,...,EU}, f’∈{1,...,EU-1}, ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)であり、計算装置EM(f)が、集合ESUB(f)のすべての元et(f)について、et(f)∈ESUB(f)のそれぞれに対応するERND・T(i, et(f))=ERND・Σk=1K W(i,k)・bet(f),kを生成し、
g∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)であり、計算装置QM(g)が、集合QSUB(g)のすべての元qt(g)について、qt(g)∈QSUB(g)のそれぞれに対応するQRND・Q(qt(g))=QRND・Σk’=1K’ V(k’)・bqt(g),k’*を計算し、
j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)であり、計算装置CM(j)が、集合SUB(j)のすべての元t(j)についての、t(j)∈SUB(j)のそれぞれに対応するΠn=1N e(ERND・T(t(j),n), QRND・Q(n))を計算し、それによって前記像MAP(T(t(j)),r(t(j)))が得られるかを検証する、検索可能暗号システム。
【請求項７】
請求項６の検索可能暗号システムであって、
ERND及びQRNDが乱数である、検索可能暗号システム。
【請求項８】
請求項１から７の何れかの検索可能暗号システムであって、
前記値r(i)が乱数である、検索可能暗号システム。
【請求項９】
請求項１から８の何れかの検索可能暗号システムであって、
前記像MAP(T(i),r(i))がT(i)/r(i)である、検索可能暗号システム。
【請求項１０】
暗号文に対応する情報と復号鍵に対応する情報とが特定の関係を満たす場合に前記暗号文が前記復号鍵で復号可能となる暗号方式を用いた検索可能暗号システムに用いられる検索装置であって、
Pが1以上の整数であり、Uが2以上の整数であり、i∈{1,...,P}であり、情報W(i)に対応する暗号文がIND(i)であり、情報Vに対応する復号鍵がQであり、前記暗号文IND(i)及び前記復号鍵Qが前記暗号方式に則って得られるものであり、前記暗号文IND(i)を正しく復号して得られる値がKEY(i)であり、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、
i∈{1,...,P}のそれぞれに対応する暗号文C(i)とインデックス(IND(i), T(i), r(i))とを含む暗号化データベースが格納された記憶部と、
前記復号鍵Qの入力を受け付ける入力部と、
j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)であり、前記復号鍵Qと、集合SUB(j)のすべての元t(j)についてのt(j)∈SUB(j)のそれぞれに対応するIND(t(j)), MAP(T(t(j)),r(t(j)))と、を計算装置CM(j)に対して出力する出力部と、
を有する検索装置。
【請求項１１】
Pが1以上の整数であり、BU, Nが2以上の整数であり、i∈{1,...,P}であり、ベクトルW(i)に対応する暗号文がN次元ベクトル(T(i,1),...,T(i,N))であり、ベクトルVに対応する復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、eが双線形写像であり、前記復号鍵(Q(1),...,Q(N))を用いて前記暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記ベクトルW(i)と前記ベクトルVとの内積が0のときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、
y∈{1,...,BU}, y’∈{1,...,BU-1}, BS(1)={1,...,N}, BS(y’+1)=BS(y’)-BSUB(y’), BSUB(y’)⊂BS(y’), BSUB(BU)=BS(BU)であり、((T(i,1),...,T(i,N)), MAP(T(i),r(i))),(Q(1),...,Q(N))を用い、集合BSUB(y)のすべての元bt(y)について、bt(y)∈BSUB(y)のそれぞれに対応するT(i, bt(y)),Q(bt(y))を計算装置BM(y)に対して出力する出力部と、
y∈{1,...,BU}のそれぞれに対応する前記計算装置BM(y)で計算されたe(T(i, bt(y)),Q(bt(y)))を用いてΠn=1N e(T(i,n),Q(n))を計算し、それによって前記像MAP(T(i),r(i))が得られるかを検証する検証部と、
を有する検索装置。
【請求項１２】
Pが1以上の整数であり、EU, QU, U, N, K, K’が2以上の整数であり、i∈{1,...,P}, k∈{1,...,K}, k’∈{1,...,K’}であり、(b1,k,...,bN,k)がN次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、(W(i,1),...,W(i,K))がK次元ベクトルであり、暗号文であるN次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、(V(1),...,V(K’))がK’次元ベクトルであり、復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、前記N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、eが双線形写像であり、前記復号鍵(Q(1),...,Q(N))を用いて前記暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記暗号文(T(i,1),...,T(i,N))が前記復号鍵(Q(1),...,Q(N))で正しく復号できたときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、ERND及びQRNDがERND・QRND=1を満たし、
f∈{1,...,EU}, f’∈{1,...,EU-1}, ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)であり、集合ESUB(f)のすべての元et(f)について、et(f)∈ESUB(f)のそれぞれに対応するERND・T(i, et(f))=ERND・Σk=1K W(i,k)・bet(f),kを生成する暗号化部と、
ERND・T(i, et(f))を出力する出力部と、
を有する計算装置。
【請求項１３】
Pが1以上の整数であり、EU, QU, U, N, K, K’が2以上の整数であり、i∈{1,...,P}, k∈{1,...,K}, k’∈{1,...,K’}であり、(b1,k,...,bN,k)がN次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、(W(i,1),...,W(i,K))がK次元ベクトルであり、暗号文であるN次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、(V(1),...,V(K’))がK’次元ベクトルであり、復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、前記N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、eが双線形写像であり、前記復号鍵(Q(1),...,Q(N))を用いて前記暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記暗号文(T(i,1),...,T(i,N))が前記復号鍵(Q(1),...,Q(N))で正しく復号できたときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、ERND及びQRNDがERND・QRND=1を満たし、
g∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)であり、計算装置QM(g)が、集合QSUB(g)のすべての元qt(g)について、qt(g)∈QSUB(g)のそれぞれに対応するQRND・Q(qt(g))=QRND・Σk’=1K’ V(k’)・bqt(g),k’*を計算する復号鍵生成部と、
QRND・Q(qt(g))を出力する出力部と、
を有する計算装置。
【請求項１４】
Pが1以上の整数であり、EU, QU, U, N, K, K’が2以上の整数であり、i∈{1,...,P}, k∈{1,...,K}, k’∈{1,...,K’}であり、(b1,k,...,bN,k)がN次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、(W(i,1),...,W(i,K))がK次元ベクトルであり、暗号文であるN次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、(V(1),...,V(K’))がK’次元ベクトルであり、復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、前記N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、eが双線形写像であり、前記復号鍵(Q(1),...,Q(N))を用いて前記暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1N e(T(i,n),Q(n))を計算する処理であり、前記暗号文(T(i,1),...,T(i,N))が前記復号鍵(Q(1),...,Q(N))で正しく復号できたときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が前記値KEY(i)であり、ERND及びQRNDがERND・QRND=1を満たし、
j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)であり、計算装置CM(j)が、集合SUB(j)のすべての元t(j)についてt(j)∈SUB(j)のそれぞれに対応するΠn=1N e(ERND・T(t(j),n),QRND・Q(n))を計算し、それによって前記像MAP(T(t(j)),r(t(j)))が得られるかを検証する検証部を有する計算装置。
【請求項１５】
請求項１０又は１１の検索装置としてコンピュータを機能させるためのプログラム。
【請求項１６】
請求項１２から１４の何れかの計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号文検索技術に関し、特に、暗号文に対応する情報と復号鍵に対応する情報とが特定の関係を満たす場合に暗号文が復号鍵で復号可能となる暗号化方式を用いた暗号文検索技術に関する。
【背景技術】
【０００２】
述語暗号方式（「関数暗号方式」ともいう）は、暗号文に対応する情報と復号鍵に対応する情報とが特定の関係を満たす場合に、当該暗号文が当該復号鍵で復号可能となる暗号化方式である（例えば、非特許文献１，２，４等参照）。例えば、述語暗号方式の一つである内積述語暗号方式では、命題論理が属性ベクトルと述語ベクトルの二つのベクトルで表現され、それらの内積が0であるか否かが命題論理の真偽値に対応する。これら二つのベクトルの一方に暗号文が対応し、他方に復号鍵が対応し、暗号文に対応するベクトルと復号鍵に対応するベクトルとの内積が0の場合に、当該暗号文が当該復号鍵で復号できる。
【０００３】
これまで述語暗号方式を応用した様々な方式が提案されており、その一つに、述語暗号方式を応用した公開鍵型の検索可能暗号方式がある（例えば、非特許文献３，５，６，７等参照）。検索可能暗号方式は、検索対象の平文（テキスト等）が暗号化することで得られた暗号文（以下「検索対象の暗号文」）を検索するための技術である。検索可能暗号方式では、検索対象暗号文を復号することなく、検索対象の平文が検索キーワードにヒットするものかそうでないかを判定する。
【０００４】
従来の検索可能暗号方式では、検索対象の平文の検索ヒット条件に対応する属性ベクトルを埋め込んだインデックスと当該検索対象の暗号文とが対応つけられた暗号化データベースが生成される。この例のインデックスは内積述語暗号方式に則った暗号文である。暗号化データベースは、検索キーワードに対応する述語ベクトルを埋め込んだクエリを用いて検索される。この例のクエリは内積述語暗号方式に則った復号鍵である。内積述語暗号方式に則ってインデックスをクエリで正しく復号できるか否か（真偽値が真であるか否か）の結果に基づき、検索キーワードが検索条件にヒットするか否かを判定する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】J. Katz, A. Sahai, and B. Waters. Predicate encryption supporting disjunctions, polynomial equations, and inner products. In EUROCRYPT, pp. 146-162, 2008.
【非特許文献２】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.
【非特許文献３】N. Matsuda, M. Hattori, T. Ito, and T. Yoneda, “Secure datacenter systems with hierarchical predicate encryption,” In Symp. on Cryptography and Information Security, 2010.
【非特許文献４】T. Okamoto and K. Takashima, “Hierarchical predicate encryption for inner-products,” In ASIACRYPT, pp. 214-231, 2009.
【非特許文献５】R. Yoshida, A. Nagai, and T. Kobayashi, “Hierarchical predicate encryption with keyword search in multi-user setting,” In Computer Security Symposium, 2010.
【非特許文献６】R. Yoshida, A. Nagai, T. Kobayashi, and H. Fuji, “An algorithm for inner-product batch searchable encryption,” In Symp. on Cryptography and Information Security, 2011.
【非特許文献７】R. Yoshida, S. Oda, and T. Kobayashi, “Public-key encryption with partial matching keyword search,” In Symp. on Cryptography and Information Security, 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、検索可能暗号方式での演算効率及び安全性を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
第１の本発明では、暗号文に対応する情報と復号鍵に対応する情報とが特定の関係を満たす場合に暗号文が復号鍵で復号可能となる暗号方式を用い、Pが1以上の整数であり、Uが2以上の整数であり、i∈{1,...,P}であり、情報W(i)に対応する暗号文がIND(i)であり、情報Vに対応する復号鍵がQであり、暗号文IND(i)及び復号鍵Qが当該暗号方式に則って得られるものであり、暗号文IND(i)を正しく復号して得られる値がKEY(i)であり、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が値KEY(i)である。第１の本発明の検索装置は、i∈{1,...,P}のそれぞれに対応する暗号文C(i)とインデックス(IND(i), T(i), r(i))とを含む暗号化データベースを用い、復号鍵Qと、集合SUB(j)のすべての元t(j)についてのt(j)∈SUB(j)のそれぞれに対応するIND(t(j)), MAP(T(t(j)),r(t(j)))と、を計算装置CM(j)に対して出力する。ただし、j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)である。第１の本発明の計算装置CM(j)は、復号鍵Qを用いて上記暗号方式に則って暗号文IND(t(j))を復号することで像MAP(T(t(j)),r(t(j)))が得られるかを検証する。このように検証を並列処理することによって演算効率が向上する。さらに検索装置がT(t(j))そのものではなくMAP(T(t(j)),r(t(j)))を出力するため、T(t(j))から「暗号文IND(t(j))に対応する情報」を得るための情報が漏洩する可能性を低減できる。
【０００８】
第２の本発明では、Pが1以上の整数であり、BU, Nが2以上の整数であり、i∈{1,...,P}であり、ベクトルW(i)に対応する暗号文がN次元ベクトル(T(i,1),...,T(i,N))であり、ベクトルVに対応する復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、eが双線形写像であり、復号鍵(Q(1),...,Q(N))を用いて暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1Ne(T(i,n),Q(n))を計算する処理であり、ベクトルW(i)とベクトルVとの内積が0のときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が値KEY(i)である。第２の本発明の検索装置は、((T(i,1),...,T(i,N)), MAP(T(i),r(i))),(Q(1),...,Q(N))を用い、集合BSUB(y)のすべての元bt(y)について、bt(y)∈BSUB(y)のそれぞれに対応するT(i, bt(y)),Q(bt(y))を計算装置BM(y)に対して出力する。ただし、y∈{1,...,BU}, y’∈{1,...,BU-1}, BS(1)={1,...,N}, BS(y’+1)=BS(y’)-BSUB(y’), BSUB(y’)⊂BS(y’), BSUB(BU)=BS(BU)である。第２の本発明の計算装置BM(y)はe(T(i, bt(y)),Q(bt(y)))を計算し、第２の本発明の検索装置は、y∈{1,...,BU}のそれぞれに対応する計算装置BM(y)で計算されたe(T(i, bt(y)),Q(bt(y)))を用いてΠn=1N e(T(i,n),Q(n))を計算し、それによって像MAP(T(i),r(i))が得られるかを検証する。このように双線形写像の計算を並列処理することによって演算効率が向上する。さらに、検索装置がT(i)そのものではなくMAP(T(i),r(i))を用いるため、T(t(j))からベクトルW(i)を得るための情報が漏洩する可能性を低減できる。
【０００９】
第３の本発明では、Pが1以上の整数であり、EU, QU, U, N, K, K’が2以上の整数であり、i∈{1,...,P}, k∈{1,...,K}, k’∈{1,...,K’}であり、(b1,k,...,bN,k)がN次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、(W(i,1),...,W(i,K))がK次元ベクトルであり、暗号文であるN次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、(V(1),...,V(K’))がK’次元ベクトルであり、復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、eが双線形写像であり、復号鍵(Q(1),...,Q(N))を用いて暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1Ne(T(i,n),Q(n))を計算する処理であり、暗号文(T(i,1),...,T(i,N))が復号鍵(Q(1),...,Q(N))で正しく復号できたときにKEY(i)=Πn=1Ne(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が値KEY(i)であり、ERND及びQRNDがERND・QRND=1を満たす。計算装置EM(f)が、集合ESUB(f)のすべての元et(f)について、et(f)∈ESUB(f)のそれぞれに対応するERND・T(i, et(f))=ERND・Σk=1K W(i,k)・bet(f),kを生成し、計算装置QM(g)が、集合QSUB(g)のすべての元qt(g)について、qt(g)∈QSUB(g)のそれぞれに対応するQRND・Q(qt(g))=QRND・Σk’=1K’ V(k’)・bqt(g),k’*を計算し、計算装置CM(j)が、集合SUB(j)のすべての元t(j)について、t(j)∈SUB(j)のそれぞれに対応するΠn=1N e(ERND・T(t(j),n), QRND・Q(n))を計算し、それによって像MAP(T(t(j)),r(t(j)))が得られるかを検証する。ただし、f∈{1,...,EU}, f’∈{1,...,EU-1},ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)であり、g∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)であり、j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)である。このような並列処理によって演算効率が向上する。さらに、T(i, et(f))ではなくERND・T(i, et(f))を用い、Q(n)ではなくQRND・Q(n)を用いることで安全性が向上する。
【発明の効果】
【００１０】
本発明では、検索可能暗号方式での演算効率及び安全性が向上する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施形態の検索可能暗号システムの構成を説明するためのブロック図である。
【図２】図２Ａは、実施形態の鍵生成装置の構成を説明するためのブロック図である。図２Ｂは、実施形態の登録装置の構成を説明するためのブロック図である。図２Ｃは、検索要求装置の構成を説明するためのブロック図である。
【図３】図３Ａは、実施形態の検索装置の構成を説明するためのブロック図である。図３Ｂは、実施形態の計算装置の構成を説明するためのブロック図である。
【図４】図４Ａは、実施形態の検索処理を説明するための図である。図４Ｂは、実施形態の並列処理を説明するための図である。
【図５】図５Ａは、実施形態の検索装置の構成を説明するためのブロック図である。図５Ｂは、実施形態の計算装置の構成を説明するためのブロック図である。
【図６】図６Ａは、実施形態の検索処理を説明するための図である。図６Ｂは、実施形態の並列処理を説明するための図である。
【図７】図７は、実施形態の検索可能暗号システムの構成を説明するためのブロック図である。
【図８】図８Ａは、実施形態の鍵生成装置の構成を説明するためのブロック図である。図８Ｂは、実施形態の計算装置の構成を説明するためのブロック図である。
【図９】図９Ａは、実施形態の登録装置の構成を説明するためのブロック図である。図９Ｂは、実施形態の計算装置の構成を説明するためのブロック図である。
【図１０】図１０Ａは、実施形態の登録処理を説明するための図である。図１０Ｂは、実施形態の並列処理を説明するための図である。
【図１１】図１１Ａは、実施形態のクエリ生成処理を説明するための図である。図１１Ｂは、実施形態の並列処理を説明するための図である。
【発明を実施するための形態】
【００１２】
〔概要〕
実施形態の概要を説明する。以下に説明する各実施形態では、暗号文に対応する情報と復号鍵に対応する情報とが特定の関係を満たす場合に暗号文が復号鍵で復号可能となる暗号方式（以下「特定の暗号方式」という）を用いて検索可能暗号方式を構成する。「特定の暗号方式」の例は、非特許文献１，２，４などに開示されている内積述語暗号方式や関数暗号方式などである。「特定の暗号方式」が内積述語暗号方式の例では、暗号文に対応するベクトルと復号鍵に対応するベクトルとの内積が0であるときに当該暗号文が当該復号鍵で復号できる。
【００１３】
第１実施形態では、Pが1以上の整数であり、Uが2以上の整数であり、i∈{1,...,P}であり、情報W(i)に対応する暗号文がIND(i)であり、情報Vに対応する復号鍵がQであり、暗号文IND(i)及び復号鍵Qが上記特定の暗号方式に則って得られるものであり、暗号文IND(i)を正しく復号して得られる値がKEY(i)であり、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が値KEY(i)である。第１実施形態の検索可能暗号システムは検索装置とU個の計算装置CM(1),...,CM(U)とを有する。第１実施形態の検索装置は、i∈{1,...,P}のそれぞれに対応する暗号文C(i)とインデックス(IND(i), T(i), r(i))とを含む暗号化データベースを格納し、復号鍵（クエリ）Qの入力を受け付け、復号鍵Qと、集合SUB(j)のすべての元t(j)についてのt(j)∈SUB(j)のそれぞれに対応するIND(t(j)), MAP(T(t(j)),r(t(j)))と、を計算装置CM(j)に対して出力する。ただし、j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)である。第１実施形態の計算装置CM(j)は、復号鍵Qを用いて上記特定の暗号方式に則って暗号文IND(t(j))を復号することで像MAP(T(t(j)),r(t(j)))が得られるかを検証する。像MAP(T(i),r(i))の例はT(i)/r(i)であり、値r(i)の例は乱数である。内積述語暗号方式が特定の暗号方式として用いられる場合、復号鍵Qを用いて暗号方式に則って暗号文IND(t(j))を復号する処理はΠn=1N e(T(i,n),Q(n))を計算する処理であり、情報W(i)と情報Vとの内積が0のときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たす。ただし、Nが2以上の整数であり、情報W(i)及び情報Vがベクトルであり、暗号文IND(i)が情報W(i)に対応するN次元ベクトル(T(i,1),...,T(i,N))であり、復号鍵Qが情報Vに対応するN次元ベクトル(Q(1),...,Q(N))であり、eが双線形写像である。
【００１４】
第１実施形態では、jのそれぞれに対応する計算装置CM(j)がt(j)∈SUB(j)のそれぞれに対応するIND(t(j)), MAP(T(t(j)),r(t(j)))の検証をそれぞれ実行するため、検証処理の演算効率が向上する。さらに検索装置は、T(t(j))そのものではなく、MAP(T(t(j)),r(t(j))を出力する。そのため、計算装置CM(j)がT(t(j))を攻撃者に漏洩し、T(t(j))から「暗号文IND(t(j))に対応する情報」を得るための情報が攻撃者に漏洩する可能性を低減できる。特に、像MAP(T(i),r(i))がT(i)/r(i)であり、r(i)が乱数である場合、攻撃者はT(i)の情報を全く得ることができず、より高い安全性を実現できる。
【００１５】
第２実施形態では、Pが1以上の整数であり、BU, Nが2以上の整数であり、i∈{1,...,P}であり、ベクトルW(i)に対応する暗号文がN次元ベクトル(T(i,1),...,T(i,N))であり、ベクトルVに対応する復号鍵（クエリ）がN次元ベクトル(Q(1),...,Q(N))であり、eが双線形写像であり、復号鍵(Q(1),...,Q(N))を用いて暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1Ne(T(i,n),Q(n))を計算する処理であり、ベクトルW(i)とベクトルVとの内積が0のときにKEY(i)=Πn=1N e(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が値KEY(i)である。第２実施形態の検索可能暗号システムは、検索装置とBU個の計算装置BM(1),...,BM(BU)とを有する。第２実施形態の検索装置は、((T(i,1),...,T(i,N)), MAP(T(i),r(i))),(Q(1),...,Q(N))を用い、集合BSUB(y)のすべての元bt(y)について、bt(y)∈BSUB(y)のそれぞれに対応するT(i, bt(y)),Q(bt(y))を計算装置BM(y)に対して出力する。ただし、y∈{1,...,BU}, y’∈{1,...,BU-1}, BS(1)={1,...,N}, BS(y’+1)=BS(y’)-BSUB(y’), BSUB(y’)⊂BS(y’), BSUB(BU)=BS(BU)である。第２実施形態の計算装置BM(y)は、e(T(i, bt(y)),Q(bt(y)))を計算し、第２実施形態の検索装置は、y∈{1,...,BU}のそれぞれに対応する計算装置BM(y)で計算されたe(T(i, bt(y)),Q(bt(y)))を用いてΠn=1N e(T(i,n),Q(n))を計算し、それによって像MAP(T(i),r(i))が得られるかを検証する。なお、像MAP(T(i),r(i))の例はT(i)/r(i)であり、値r(i)の例は乱数である。
【００１６】
第２実施形態では、yのそれぞれに対応する計算装置BM(y)がe(T(i, bt(y)),Q(bt(y)))をそれぞれ計算するため、検証処理の演算効率が向上する。さらに、検索装置はMAP(T(t(j)),r(t(j))を用いるため、検索装置がT(t(j))を攻撃者に漏洩し、T(t(j))からベクトルW(i)を得るための情報が攻撃者に漏洩する可能性を低減できる。特に、像MAP(T(i),r(i))がT(i)/r(i)であり、r(i)が乱数である場合、攻撃者はT(i)の情報を全く得ることができず、より高い安全性を実現できる。
【００１７】
第３実施形態は、第１，２実施形態の変形例である。第３実施形態では、EU, QUが2以上の整数であり、K, K’が2以上の整数であり、k∈{1,...,K}, k’∈{1,...,K’}であり、(W(i,1),...,W(i,K))がK次元ベクトルであり、(b1,k,...,bN,k)がN次元ベクトルであり、N次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たす。(V(1),...,V(K’))がK’次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たす。第３実施形態の検索可能暗号システムは、EU個の計算装置EM(1),...,EM(EU)とQU個の計算装置QM(1),...,QM(QU)をさらに有する。計算装置EM(f)は、集合ESUB(f)のすべての元et(f)について、et(f)∈ESUB(f)のそれぞれに対応するT(i, et(f))=Σk=1K W(i,k)・bet(f),kを計算し、計算装置QM(g)はqt(g)∈QSUB(g)のそれぞれに対応するQ(qt(g))=Σk’=1K’ V(k’)・bqt(g),k’*を計算する。ただし、f∈{1,...,EU}, f’∈{1,...,EU-1}, ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)である。またg∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)である。
【００１８】
第３実施形態では、インデックスを構成するN次元ベクトル(T(i,1),...,T(i,N))の要素や、クエリであるN次元ベクトル(Q(1),...,Q(N))の要素を複数の計算装置で並列に計算できるため、演算効率が向上する。
【００１９】
第４実施形態では、Pが1以上の整数であり、EU, QU, U, N, K, K’が2以上の整数であり、i∈{1,...,P}, k∈{1,...,K}, k’∈{1,...,K’}であり、(b1,k,...,bN,k)がN次元ベクトルであり、(b1,k’*,...,bN,k’*)がN次元ベクトルであり、(W(i,1),...,W(i,K))がK次元ベクトルであり、暗号文であるN次元ベクトル(T(i,1),...,T(i,N))の各要素T(i,n) (n∈{1,...,N})がT(i,n)=Σk=1K W(i,k)・bn,kを満たし、(V(1),...,V(K’))がK’次元ベクトルであり、復号鍵がN次元ベクトル(Q(1),...,Q(N))であり、N次元ベクトル(Q(1),...,Q(N))の各要素Q(n) (n∈{1,...,N})がQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たし、eが双線形写像であり、復号鍵(Q(1),...,Q(N))を用いて暗号文(T(i,1),...,T(i,N))を復号する処理がΠn=1Ne(T(i,n),Q(n))を計算する処理であり、暗号文(T(i,1),...,T(i,N))が復号鍵(Q(1),...,Q(N))で正しく復号できたときにKEY(i)=Πn=1Ne(T(i,n),Q(n))を満たし、或る値T(i)及びr(i)からなる組の像MAP(T(i),r(i))が値KEY(i)であり、ERND及びQRNDがERND・QRND=1を満たす。ERND及びQRNDの例は乱数である。第４実施形態の検索可能暗号システムは、EU個の計算装置EM(1),...,EM(EU)とQU個の計算装置QM(1),...,QM(QU)とU個の計算装置CM(1),...,CM(U)とを有する。計算装置EM(f)が、集合ESUB(f)のすべての元et(f)について、et(f)∈ESUB(f)のそれぞれに対応するERND・T(i, et(f))=ERND・Σk=1K W(i,k)・bet(f),kを生成し、計算装置QM(g)が、集合QSUB(g)のすべての元qt(g)について、qt(g)∈QSUB(g)のそれぞれに対応するQRND・Q(qt(g))=QRND・Σk’=1K’ V(k’)・bqt(g),k’*を計算し、計算装置CM(j)が、集合SUB(j)のすべての元t(j)について、t(j)∈SUB(j)のそれぞれに対応するΠn=1N e(ERND・T(t(j),n), QRND・Q(n))を計算し、それによって像MAP(T(t(j)),r(t(j)))が得られるかを検証する。ただし、f∈{1,...,EU}, f’∈{1,...,EU-1},ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)であり、g∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)であり、j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)である。なお、像MAP(T(i),r(i))の例はT(i)/r(i)であり、値r(i)の例は乱数である。
【００２０】
第４実施形態では、このような並列処理を行うため、演算効率が向上する。さらに、T(i, et(f))ではなくERND・T(i, et(f))を用い、Q(n)ではなくQRND・Q(n)を用いることで安全性が向上する。特に、ERND及びQRNDが乱数である場合には攻撃者はT(i, et(f))やQ(n)の情報を全く得ることができず、より高い安全性を実現できる。また、像MAP(T(i),r(i))がT(i)/r(i)であり、r(i)が乱数である場合、攻撃者はT(i)の情報を全く得ることができず、より高い安全性を実現できる。
【００２１】
〔詳細〕
各実施形態の詳細を説明する。
＜定義＞
各実施形態で使用される用語や記号を定義する。
(・)T：(・)Tは・の転置行列を表す。
(・)-1：(・)-1は・の逆行列を表す。
Fq：Fqは位数qの有限体を表す。位数qは１以上の整数であり、例えば、素数や素数のべき乗値を位数qとする。
0：0は有限体Fqの加法単位元（零元）を表す。
1：1は有限体Fqの乗法単位元を表す。
δ(ν,ξ)：δ(ν,ξ)はクロネッカーのデルタ関数を表す。ν=ξの場合にδ(ν,ξ)=1を満たし、ν≠ξの場合にδ(ν,ξ)=0を満たす。
1/α：1/αはαの逆元を表す。
α∈β：αがβの元であることを表す。
α⊂β：αがβの真部分集合であることを表す。
E：Eは有限体Fq上で定義された楕円曲線を表す。
G1, G2,GT：G1, G2, GTは位数qの群を表す。G1=G2であってもよいしG1≠G2であってもよい。群G1, G2,GTの具体例は巡回群である。群G1, G2上で定義された演算を加法的に表現し、群GT上で定義された演算を乗法的に表現する。
η：ηは1以上の整数を表す。
ζ：ζは1以上の整数を表す。ζの一例は２又は３である。
N：NはN=η+ζを満たす2以上の整数である。
G1η+ζ：G1η+ζはη+ζ個の群G1の直積を表す。
G2η+ζ：G2η+ζはη+ζ個の群G2の直積を表す。
g1, g2,gT：g1, g2, gTは群G, G1, G2, GTの生成元を表す。
【００２２】
e：eは群G1と群G2との直積G1×G2を群GTに写す非退化な双線形写像（bilinear map）を表す。双線形写像eは双線形性、非退化性及び計算可能性を有する。双線形写像eの具体例は、WeilペアリングやTateペアリングなどのペアリングである。
e:G1×G2→GT      …(1)
【００２３】
ME：MEは直積G1η+ζと直積G2η+ζとの直積G1η+ζ×G2η+ζを群GTに写す非退化な双線形写像を表す。双線形写像MEは、双線形性、非退化性及び計算可能性を有する。
ME：G1η+ζ×G2η+ζ→GT      …(2)
双線形写像MEは、群G1のη+ζ個の元γβ (β=1,...,η+ζ)からなるη+ζ次元ベクトル(γ1,...,γη+ζ)と、群G2のη+ζ個の元γβ*(β=1,...,η+ζ)からなるη+ζ次元ベクトル(γ1*,...,γη+ζ*)とについて以下を満たす。
ME=Πβ=1η+ζ e(γβ, γβ*)      …(3)
【００２４】
aν(ν=1,...,η+ζ)：aνは群G1のη+ζ個の元を要素とするη+ζ次元の基底ベクトルを表す。基底ベクトルaνの一例は、κ1・g1∈G1をν次元目の要素とし、残りのη個の要素を群G1の単位元（加法的に「0」と表現）とするη+ζ次元の基底ベクトルである。この場合、η+ζ次元の基底ベクトルaν(ν=1,...,η+ζ)の各要素をそれぞれ列挙して表現すると、以下のようになる。
a1=(κ1・g1,0,0,...,0)
a2=(0,κ1・g1,0,...,0)       …(4)
...
aη+ζ=(0,0,0,...,κ1・g1)
κ1は加法単位元0以外の有限体Fqの元からなる定数であり、κ1∈Fqの具体例はκ1=1である。
【００２５】
aν*(ν=1,...,η+ζ)：群G2のη+ζ個の元を要素とするη+ζ次元の基底ベクトルを表す。基底ベクトルaν*の一例は、κ2・g2∈G2をν次元目の要素とし、残りのη個の要素を群G2の単位元（加法的に「0」と表現）とするη+ζ次元の基底ベクトルである。この場合、基底ベクトルaν*(ν=1,...,η+ζ)の各要素をそれぞれ列挙して表現すると、以下のようになる。
a1*=(κ2・g2,0,0,...,0)
a2*=(0,κ2・g2,0,...,0)        …(5)
...
aη+ζ*=(0,0,0,...,κ2・g2)
κ2は加法単位元0以外の有限体Fqの元からなる定数であり、κ2∈Fqの具体例はκ2=1である。
【００２６】
基底ベクトルaνと基底ベクトルaν*とは、0を除く有限体Fqの元τ=κ1・κ2について以下を満たす。
ME(aν, aξ*)=gTτ・δ(ν,ξ)       …(6)
特にτ=κ1・κ2=1である場合（例えば、κ1=κ2=1の場合）、以下を満たす。
ME(aν, aξ*)=gTδ(ν,ξ)      …(7)
gT0=1は群GTの単位元であり、gT1=gTは群GTの生成元である。
【００２７】
A：基底ベクトルaν(ν=1,...,η+ζ)を要素とするη+ζ行η+ζ列の行列を表す。例えば、基底ベクトルaν(ν=1,...,η+ζ)が式(4)によって表現される場合、行列Aは以下のようになる。
【数１】
0005651609.tif 000002
【００２８】
A*：基底ベクトルaν*(ν=1,...,η+ζ)を要素とするη+ζ行η+ζ列の行列を表す。例えば、基底ベクトルaν*(ν=1,...,η+ζ)が式(5)によって表現される場合、行列A*は以下のようになる。
【数２】
0005651609.tif 000003
【００２９】
X：有限体Fqの元を要素とするη+ζ行η+ζ列の行列を表す。行列Xは基底ベクトルaνの座標変換に用いられる。行列Xのν行ξ列(ν=1,...,η+ζ,ξ=1,...,η+ζ)の要素をχν,ξ∈Fqとすると、行列Xは以下のようになる。
【数３】
0005651609.tif 000004
【００３０】
X *：X *は行列Xの逆行列の転置行列Ｘ*=(Ｘ-1)T=(ＸT)-1を表す。行列X*のν行ξ列の要素をχν,ξ*∈Fqとすると、行列Ｘ*は以下のようになる。
【数４】
0005651609.tif 000005
η+ζ行η+ζ列の単位行列をIとするとＸ・(Ｘ*)T=Ｉを満たす。
【００３１】
bν：bνは群G1のη+ζ個の元を要素とするη+ζ次元の基底ベクトルを表す。行列Xを用いて基底ベクトルaν(ν=1,...,η+ζ)を座標変換することで得られる。具体的には、基底ベクトルbνは、
bν=Σξ=1η+ζχν,ξ・aξ      …(12)
の演算によって得られる。例えば、基底ベクトルaξ(ξ=1,...,η+ζ)が式(4)によって表現される場合、基底ベクトルbνの各要素をそれぞれ列挙して表現すると、以下のようになる。
bν=(χν,1・κ1・g1 ,χν,2・κ1・g1 ,...,χν,η+ζ・κ1・g1)    …(13)
【００３２】
bν*：bν*は群G2のη+ζ個の元を要素とするη+ζ次元の基底ベクトルを表す。行列X*を用いて基底ベクトルaν*(ν=1,...,η+ζ)を座標変換することで得られる。具体的には、基底ベクトルbν*は以下の演算によって得られる。
bν*=Σξ=1η+ζχν,ξ*・aξ*      …(14)
例えば、基底ベクトルaξ*(ξ=1,...,η+ζ)が式(5)によって表現される場合、基底ベクトルbν*の各要素をそれぞれ列挙して表現すると、以下のようになる。
bν*=(χν,1*・κ2・g2 ,χν,2*・κ2・g2 ,...,χν,η+ζ*・κ2・g2)  …(15)
【００３３】
基底ベクトルbνと基底ベクトルbν*とは、0を除く有限体Fqの元τ=κ1・κ2について以下を満たす。
ME(bν, bξ*)=gTτ・δ(ν,ξ)      …(16)
特に、τ=κ1・κ2=1である場合（例えば、κ1=κ2=1の場合）、以下を満たす。
ME(bν, bξ*)=gTδ(ν,ξ)      …(17)
式(16)の関係を満たすのであれば、式(4)(5)で例示したもの以外の基底ベクトルaν及びaν*や、式(12)(14)で例示したもの以外の基底ベクトルbν及びbν*を用いてもよい。
【００３４】
B：Bは基底ベクトルbν(ν=1,...,η+ζ)を要素とするη+ζ行η+ζ列の行列。B=X・Aを満たす。例えば、基底ベクトルbνが式(13)によって表現される場合、行列Bは以下のようになる。
【数５】
0005651609.tif 000006
【００３５】
B*：B*は基底ベクトルbν*(ν=1,...,η+ζ)を要素とするη+ζ行η+ζ列の行列を表す。B*=X*・A*を満たす。例えば、基底ベクトルbν*(ν=1,...,η+ζ)が式(15)によって表現される場合、行列B*は以下のようになる。
【数６】
0005651609.tif 000007
【００３６】
〔内積述語暗号方式〕
内積述語暗号方式で鍵カプセル化メカニズムKEM (Key Encapsulation Mechanisms)を構成する例を示す。この構成はSetup，GenKey，Enc，Decを含む。
《Setup：セットアップ》
−入力：セキュリティパラメータsec
−出力：マスタ鍵情報MSK，公開パラメータPK
Setupの一例では、セキュリティパラメータsecに対して行列A, A*, X, X*が選択され、前述の座標変換によって行列B, B*が生成される。行列B*がマスタ鍵情報MSKとして出力され、行列B、有限体Fq、楕円曲線E、群G1, G2, GT、生成元g1, g2, gT、双線形写像eなどが公開パラメータPKとして出力される。
【００３７】
《GenKey：復号鍵生成》
−入力：マスタ鍵情報MSK，ベクトルv→=(v1,...,vη)
−出力：ベクトルv→に対応する復号鍵D*
GenKeyの一例では、有限体Fqから元σ,σι-η∈Fqが選択される。そして、マスタ鍵情報MSKである行列B*を用い、ベクトルv→に対応する復号鍵
D*=σ・(Σμ=1ηvμ・bμ*)+Σι=η+1η+ζ'σι-η・bι*∈G2η+ζ'    …(20)
が生成され、出力される。ただし、σ,σι-ηは乱数などの変数や定数などであり、ζ'≦ζである（例えばζ=3, ζ'=2）。またΣι=η+1η+ζ'σι-ηはシステムで共有される定数値とされる。以下では
Σι=η+1η+ζ'σι-η=1      …(21)
とされた例を説明する。
【００３８】
《Enc：暗号化》
−入力：公開パラメータPK，ベクトルw→=(w1,...,wη)，平文mes
−出力：暗号文(C1，C2)
Encの一例では、行列Bなどの公開パラメータPKと、有限体Fqの元である乱数υ0,υ1,...,υζと、ベクトルw→とを用い、暗号文
C1=υ0・(Σμ=1ηwμ・bμ)+Σμ=η+1η+ζυμ-η・bμ∈G1η+ζ      …(22)
が生成される。ただし、
υ1=...=υζ'      …(23)
を満たす（例えばζ'=2のときにはυ1=υ2）。また、gTτ・υ1を共通鍵KEYとし、所定の共通鍵暗号方式に則って平文mesの暗号文C2が生成される。暗号文C2は或る写像MAPに対してgTτ・υ1=MAP(C2, mes)を満たす。暗号文C2の一例は、
C2=gTτ・υ1・mes      …(24)
である。添え字のυ1はυ1を意味する。定数τの一例はτ=1である。式(24)の例ではMAP(C2, mes)=C2/mesを満たす。生成された暗号文(C1，C2)は出力される。
【００３９】
《Dec：復号》
−入力：ベクトルv→に対応する復号鍵D*，暗号文(C1，C2)
−出力：復号値mes'
Decの一例では、暗号文C1と復号鍵D*とが双線形写像MEに入力され、その演算結果を共通鍵KEY=ME(C1,D*)とし、前記所定の共通鍵暗号方式に則って暗号文C2を共通鍵KEY=ME(C1,D*)で復号し、復号値mes'が得られる。式(24)のように暗号文C2が生成される場合には、以下のように復号値mes'が求められる。
mes'=C2/ME(C1,D*)∈GT      …(25)
内積w→・v→=0であれば、ME(C1,D*)=gTτ・υ1を満たしてmes'=mesとなり、正しく復号される。
【００４０】
〔第１実施形態〕
第１実施形態の詳細を説明する。本形態では「特定の暗号方式」として内積述語暗号方式を用いる例を示すが、これは本発明を限定するものではない（第２〜４の実施形態も同様）。
【００４１】
＜構成＞
図１に例示するように、本形態の検索可能暗号システム１は、鍵生成装置１１０と登録装置１２０と検索要求装置１３０と検索装置１４０とU個（U≧2）の計算装置１５０−１〜Ｕを有し、これらはネットワークを通じて通信可能である。
【００４２】
図２Ａに例示するように、本形態の鍵生成装置１１０は、入力部１１１と出力部１１２とマスタ鍵情報記憶部１１３と制御部１１４と鍵情報生成部１１５とメモリ１１６とを有する。図２Ｂに例示するように、本形態の登録装置１２０は、入力部１２１と出力部１２２と制御部１２４とベクトル設定部１２５ａと乱数生成部１２５ｂと暗号化部１２５ｃとインデックス生成部１２５ｄとメモリ１２６とを有する。図２Ｃに例示するように、本形態の検索要求装置１３０は、入力部１３１と出力部１３２と制御部１３４とベクトル設定部１３５とメモリ１３６とを有する。
【００４３】
図３Ａに例示するように、本形態の検索装置１４０は、入力部１４１と出力部１４２とデータベース（ＤＢ）記憶部１４３と制御部１４４と並列処理依頼部１４５ａと抽出部１４５ｂとメモリ１４６とを有する。なお、記載の便宜上、図３Ａには２個の入力部１４１が記載されているが、これは実際の入力部１４１の個数と無関係である（以降引用する図面についても同様）。図３Ｂに例示するように、本形態の計算装置１５０−ｊ（j∈{1,...,U}）は、入力部１５１−ｊと出力部１５２−ｊと制御部１５４−ｊと検証部１５５−ｊとメモリ１５６−ｊとを有する。
【００４４】
なお、鍵生成装置１１０、登録装置１２０、検索要求装置１３０、検索装置１４０、及び計算装置１５０−１〜Ｕのそれぞれは、例えば、CPU(central processing unit),RAM(random-access memory),ROM(read-only memory)などを有する公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。鍵生成装置１１０、登録装置１２０、検索要求装置１３０、検索装置１４０、及び計算装置１５０−１〜Ｕのそれぞれは、それぞれが有する制御部１１４、１２４、１３４、１４４、及び制御部１５４−１〜Ｕの制御のもと各処理を実行する。鍵生成装置１１０、登録装置１２０、検索要求装置１３０、検索装置１４０、及び計算装置１５０−１〜Ｕのそれぞれでの演算結果は、それぞれが有するメモリ１１６、１２６、１３６、１４６、及び１５６−１〜Ｕに格納され、必要に応じて読み出されて他の演算に使用される。
【００４５】
＜事前処理＞
前述したSetupが実行され、マスタ鍵情報MSK，公開パラメータPKが定められる。マスタ鍵情報MSKは、鍵生成装置１１０（図２Ａ）のマスタ鍵情報記憶部１１３に格納され、公開パラメータPKは、鍵生成装置１１０、登録装置１２０、検索要求装置１３０、検索装置１４０、及び計算装置１５０−１〜Ｕのそれぞれで利用可能なように設定される。
【００４６】
＜データベース登録処理＞
登録装置１２０（図２Ｂ）の入力部１２１には、検索装置のＤＢ記憶部１４３に登録するP個の検索対象情報Text(i)(i∈{1,...,P},P≧1)と当該検索対象情報Text(i)にそれぞれ対応する登録用のキーワードKWT(i)が入力される。登録用のキーワードKWT(i)はベクトル設定部１２５ａに入力される。ベクトル設定部１２５ａは、システム内で定められた規則に従って、登録用のキーワードKWT(i)に対応するη次元ベクトルW(i)=(w1,i,...,wη,i)(i∈{1,...,P})を設定する。システム内で定められた規則に従って検索方式（完全一致検索、前方一致検索、後方一致検索、部分一致検索など）と検索用のキーワードKWQとの組に対してη次元ベクトルV=(v1,...,vη)が定まり、当該検索方式と検索用のキーワードKWQとの組に対して登録用のキーワードKWTがヒットする場合に内積(w1,i,...,wη,i)・(v1,...,vη)=0となるのであれば、ベクトルW(i)=(w1,i,...,wη,i)をどのように定めてもよい。例えば、ベクトル設定部１２５ａは、非特許文献７に記載された登録用のキーワードから属性ベクトルを生成する技術を用いてベクトルW(i)=(w1,i,...,wη,i)を生成する。P個の検索対象情報Text(i)及びベクトルW(i)=(w1,i,...,wη,i)(i∈{1,...,P})は暗号化部１２５ｃに送られる。乱数生成部１２５ｂはP個の乱数r(i)(i∈{1,...,P})を生成し、P個の乱数r(i)(i∈{1,...,P})は暗号化部１２５ｃに送られる。
【００４７】
暗号化部１２５ｃは、有限体Fqの元である乱数υ0,i,υ1,i,...,υζ,iを生成する。暗号化部１２５ｃは、乱数υ0,i,υ1,i,...,υζ,iとベクトルW(i)=(w1,i,...,wη,i)を用い、式(22)の(w1,...,wη)に(w1,i,...,wη,i)を代入し、式(22)の(υ0,υ1,...,υζ)に(υ0,i,υ1,i,...,υζ,i)を代入し、i(i∈{1,...,P})のそれぞれに対応するN次元ベクトル(N=η+ζ)である暗号文IND(i)=(T(i,1),...,T(i,N))を得る。
また暗号化部１２５ｃは、gTτ・υ1,iを共通鍵KEY(i)とし、所定の共通鍵暗号方式に則って乱数r(i)の暗号文T(i)を生成する。暗号文T(i)はgTτ・υ1,i=MAP(T(i), r(i))を満たす。添え字のυ1，iはυ1,iを意味する。なお、暗号文IND(i)=(T(i,1),...,T(i,N))を正しく復号することでKEY(i)=gTτ・υ1,iが得られる。例えば暗号化部１２５ｃは、乱数r(i)と乱数υ1,iとを用い、式(24)のmesにr(i)を代入し、式(24)のυ1に乱数υ1,iを代入し、i(i∈{1,...,P})のそれぞれに対応する暗号文T(i)を得る。
さらに暗号化部１２５ｃは、システム内で定められた任意の暗号化方式（共通鍵暗号方式や公開鍵暗号方式等）に則って検索対象情報Text(i)を暗号化して暗号文C(i)を生成する。
【００４８】
i(i∈{1,...,P})のそれぞれに対応するC(i)，(T(i,1),...,T(i,N)), T(i), r(i)はインデックス生成部１２５ｄに入力される。インデックス生成部１２５ｄは、(T(i,1),...,T(i,N)), T(i), r(i)の組み合わせを暗号文C(i)に対応するインデックスとして対応付ける。i(i∈{1,...,P})のそれぞれに対応する暗号文C(i)とそれに対応付けられたインデックス(T(i,1),...,T(i,N)), T(i), r(i)とは出力部１２２に入力される。出力部１２２はこれらを出力する。暗号文C(i)とインデックス(T(i,1),...,T(i,N)), T(i), r(i)とは、例えば可搬型記憶媒体又は安全な通信路を経由し、検索装置１４０（図３Ａ）に送られる。
【００４９】
暗号文C(i)とインデックス(T(i,1),...,T(i,N)), T(i), r(i)とは検索装置１４０の入力部１４１に入力され、ＤＢ記憶部１４３に格納される。これにより、ＤＢ記憶部１４３には、以下のような暗号化データベースが格納される。
C(1), I1=((T(1,1),...,T(1,N)), T(1), r(1))
C(2), I2=((T(2,1),...,T(2,N)), T(2), r(2))      …(26)
...
C(P), IP=((T(P,1),...,T(P,N)), T(P), r(P))
【００５０】
＜検索処理＞
検索用のキーワードKWQが検索要求装置１３０（図２Ｃ）の入力部１３１に入力される。検索用のキーワードKWQはベクトル設定部１３５に送られる。ベクトル設定部１３５は、システム内で定められた規則に従い、検索方式と検索用のキーワードKWQとに対応するη次元ベクトルV=(v1,...,vη)を設定する。ベクトルV=(v1,...,vη)は、検索方式と検索用のキーワードKWQとの組に対し、ベクトルW(i)=(w1,i,...,wη,i)に対応する登録用のキーワードKWT(i)がヒットする場合に内積(w1,i,...,wη,i)・(v1,...,vη)=0となるものである。例えば、ベクトル設定部１３５は、非特許文献７に記載された検索用のキーワードから述語ベクトルを生成する技術を用いてベクトルV=(v1,...,vη)を生成する。
【００５１】
ベクトルV=(v1,...,vη)は出力部１３２に入力される。出力部１３２は、ネットワーク経由でベクトルV=(v1,...,vη)を鍵生成装置１１０（図２Ａ）に送信する。ベクトルV=(v1,...,vη)は、鍵生成装置１１０の入力部１１１に入力され、鍵情報生成部１１５に送られる。鍵情報生成部１１５は、有限体Fqの元である乱数σ,σι-η∈Fqを生成する。鍵情報生成部１１５は、乱数σ,σι-η∈FqとベクトルV=(v1,...,vη)とマスタ鍵情報記憶部１１３に格納された行列B*とを用い、式(20)に従って、N次元ベクトル(N=η+ζ)である復号鍵D*=(Q(1),...,Q(N))をクエリQとして生成する。クエリQ=(Q(1),...,Q(N))は出力部１１２に入力される。出力部１１２は、ネットワーク経由でクエリQを検索要求装置１３０（図２Ｃ）に送信する。検索要求装置１３０は、入力部１３１でクエリQを受信し、さらに出力部１３２からネットワーク経由で検索装置１４０（図３Ａ）にクエリQを送信する。
【００５２】
図４Ａに例示するように、クエリQ=(Q(1),...,Q(N))は、検索装置１４０の入力部１４１に入力され（ステップＳ１０１）、並列処理依頼部１４５ａに入力される。並列処理依頼部１４５ａは、記憶部１４３に格納されている式(26)の暗号化データベースを用い、集合SUB(j)のすべての元t(j)について、t(j)∈SUB(j)のそれぞれに対応するMAP(T(t(j)),r(t(j)))を生成する。例えば、式(24)に従って暗号文T(t(j))が生成される場合、MAP(T(t(j)),r(t(j)))としてT(t(j))／r(t(j))が生成される。また、j∈{1,...,U}, j’∈{1,...,U-1}, S(1)={1,...,P}, S(j’+1)=S(j’)-SUB(j’), SUB(j’)⊂S(j’), SUB(U)=S(U)であり、t(j)∈SUB(j)である。一例を挙げるとU=Pかつt(j)=jである。並列処理依頼部１４５ａは、クエリQ=(Q(1),...,Q(N))と、集合SUB(j)のすべての元t(j)について、t(j)∈SUB(j)のそれぞれに対応するIND(t(j))=(T(t(j),1),...,T(t(j),N))、MAP(T(t(j)),r(t(j)))及び識別子ID(t(j))を含む並列処理情報を生成し、出力部１４２に送る（ステップＳ１０２）。出力部１４２は、クエリQ=(Q(1),...,Q(N))とIND(t(j))=(T(t(j),1),...,T(t(j),N))とMAP(T(t(j)),r(t(j)))と識別子ID(t(j))とを含む並列処理情報のそれぞれを、ネットワーク経由で、j∈{1,...,U}のそれぞれに対応する計算装置１５０−ｊ（図３Ｂ）に送信する（ステップＳ１０３）。
【００５３】
図４Ａに例示するように、j∈{1,...,U}のそれぞれに対応する並列処理情報は、計算装置１５０−ｊの入力部１５１−ｊに入力され、検証部１５５−ｊに送られる（ステップＳ１１１）。検証部１５５−ｊは、クエリQ=(Q(1),...,Q(N))を用いて内積述語暗号方式に則って暗号文IND(t(j))=(T(t(j),1),...,T(t(j),N))を復号することで像MAP(T(t(j)),r(t(j)))が得られるかを検証する。すなわち、検証部１５５−ｊは、(T(t(j),1),...,T(t(j),N))と(Q(1),...,Q(N))とを双線形写像MEに入力し、その演算結果MEt(j)がMAP(T(t(j)),r(t(j)))となるかを検証する。例えば、式(24)に従って暗号文T(t(j))が生成される場合、検証部１５５−ｊは、
MEt(j)=Πn=1N e(T(t(j),n), Q(n))      …(27)
を計算し、
MEt(j)=T(t(j))/r(t(j))      …(28)
を満たすかを判定する（ステップＳ１１１）。
【００５４】
MEt’(j)=MAP(T(t’(j)),r(t’(j)))を満たすt’(j)が存在した場合（真）、検証部１５５−ｊは、MEt’(j)=MAP(T(t’(j)),r(t’(j)))を満たすt’(j)に対応する識別子ID(t’(j))を出力部１５２−ｊに送る。出力部１５２−ｊは、ネットワーク経由で識別子ID(t’(j))を検証装置１４０に送信し（ステップＳ１１３）、処理を終了する。一方、MEt’(j)=MAP(T(t’(j)),r(t’(j)))を満たすt’(j)が存在しなかった場合（偽）、計算装置１５０−ｊは識別子を出力することなく処理を終了する。
【００５５】
計算装置１５０−ｊのそれぞれから送信された識別子ID(t’(j))は、検索装置１４０（図３Ａ）の入力部１４１に入力され、抽出部１４５ｂに送られる（ステップＳ１０４）。抽出部１４５ｂは識別子ID(t’(j))が表すt’(j)に対応する暗号文C(t’(j))をＤＢ記憶部１４３から抽出し、出力部１４２に送る（ステップＳ１０５）。出力部１４２は、暗号文C(t’(j))をネットワーク経由で検索要求装置１３０に送信する（ステップＳ１０６）。
【００５６】
〔第２実施形態〕
第２実施形態の詳細を説明する。以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する処理部・ステップについては、第１実施形態と同じ参照番号を用いて説明を簡略化する。
【００５７】
＜構成＞
図１に例示するように、本形態の検索可能暗号システム２は、鍵生成装置１１０と登録装置２２０と検索要求装置１３０と検索装置２４０とBU個（BU≧2）の計算装置２５０−１〜ＢＵを有し、これらはネットワークを通じて通信可能である。
【００５８】
図２Ｂに例示するように、本形態の登録装置２２０は、入力部１２１と出力部１２２と制御部２２４とベクトル設定部１２５ａと乱数生成部１２５ｂと暗号化部１２５ｃとインデックス生成部２２５ｄとメモリ１２６とを有する。図５Ａに例示するように、本形態の検索装置２４０は、入力部２４１と出力部２４２とデータベース（ＤＢ）記憶部２４３と制御部２４４と並列処理依頼部１４５ａと抽出部２４５ｂとメモリ２３６とを有する。図５Ｂに例示するように、本形態の計算装置２５０−ｙ（y∈{1,...,BU}）は、入力部２５１−ｙと出力部２５２−ｙと制御部２５４−ｙと双線形写像計算部２５５−ｙとメモリ２５６−ｙとを有する。
【００５９】
なお、登録装置２２０、検索装置２４０、及び計算装置２５０−１〜ＢＵのそれぞれは、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。登録装置２２０、検索装置２４０、及び計算装置２５０−１〜ＢＵのそれぞれは、それぞれが有する制御部２２４、２４４、及び制御部２５４−１〜ＢＵの制御のもと各処理を実行する。登録装置２２０、検索装置２４０、及び計算装置２５０−１〜ＢＵのそれぞれでの演算結果は、それぞれが有するメモリ１２６、２４６、及び２５６−１〜Ｕに格納され、必要に応じて読み出されて他の演算に使用される。
【００６０】
＜事前処理＞
登録装置１２０、検索装置１４０、及び計算装置１５０−１〜Ｕが登録装置２２０、検索装置２４０、及び計算装置２５０−１〜ＢＵに置換される以外、第１実施形態と同じである。
【００６１】
＜データベース登録処理＞
第１実施形態との相違点は、登録装置２２０（図２Ｂ）のインデックス生成部２２５ｄが、((T(i,1),...,T(i,N)), MAP(T(i), r(i)))を暗号文C(i)に対応するインデックスとして生成し、検索装置２４０のＤＢ記憶部２４３に以下のような暗号化データベースが格納される点である。なお、MAP(T(i), r(i)))の例はT(i)／r(i)である。
C(1), I1=((T(1,1),...,T(1,N)), MAP(T(1), r(1)))
C(2), I2=((T(2,1),...,T(2,N)), MAP(T(2), r(2)))      …(29)
...
C(P), IP=((T(P,1),...,T(P,N)), MAP(T(P), r(P)))
【００６２】
＜検索処理＞
第１実施形態と同様に検索要求装置１３０（図２Ｃ）から出力されたクエリQ=(Q(1),...,Q(N))は、図６Ａに例示するように、検索装置２４０（図５Ａ）の入力部２４１に入力され（ステップＳ１０１）、並列処理依頼部２４５ａに入力される。並列処理依頼部２４５ａは、ＤＢ記憶部２４３に格納されている式(29)の暗号化データベースとクエリQ=(Q(1),...,Q(N))を用い、集合BSUB(y)のすべての元bt(y)について、bt(y)∈BSUB(y)のそれぞれに対応する並列処理依頼情報T(i, bt(y)),Q(bt(y))を生成し、出力部２４２に送る（ステップＳ２０２）。ただし、y∈{1,...,BU}, y’∈{1,...,BU-1}, BS(1)={1,...,N}, BS(y’+1)=BS(y’)-BSUB(y’), BSUB(y’)⊂BS(y’), BSUB(BU)=BS(BU)であり、bt(y)∈BSUB(y)である。一例を挙げるとBU=Nかつbt(y)=yである。出力部２４２は、集合BSUB(y)のすべての元bt(y)について、bt(y)∈BSUB(y)のそれぞれに対応するT(i, bt(y)),Q(bt(y))を、ネットワーク経由で計算装置２５０−ｙ（図５Ｂ）に送信する（ステップＳ２０３）。
【００６３】
図６Ｂに例示するように、bt(y)∈BSUB(y)のそれぞれに対応するT(i, bt(y)),Q(bt(y))は、計算装置２５０−ｙの入力部２５１−ｙに入力され、双線形写像計算部２５５−ｙに送られる（ステップＳ２１１）。双線形写像計算部２５５−ｙは、双線形写像e(T(i, bt(y)),Q(bt(y)))を計算し、その計算結果（双線形写像計算結果）e(T(i, bt(y)),Q(bt(y)))を出力部２５２−ｙに送る（ステップＳ２１２）。出力部２５２−ｙは、双線形写像計算結果e(T(i, bt(y)),Q(bt(y)))を、ネットワーク経由で検索装置２４０に送信する（ステップＳ２１３）。
【００６４】
図６Ａに例示するように、計算装置２５０−ｙのそれぞれから送信された双線形写像計算結果e(T(i, bt(y)),Q(bt(y)))は、検索装置２４０（図５Ａ）の入力部２４１に入力され、検証部２４５ｃに送られる（ステップＳ２０４）。検証部２４５ｃは、ＤＢ記憶部２４３に格納されている式(29)の暗号化データベースと双線形写像計算結果e(T(i, bt(y)),Q(bt(y)))とを用い、i∈{1,...,P}のそれぞれについて、MEi=Πn=1N e(T(i,n),Q(n))を計算し、MEi=MAP(T(i),r(i))を満たすか検証する。例えば、式(24)に従って暗号文T(t(j))が生成される場合、検証部２４５ｃは、MEi=T(i)/r(i)を満たすかを検証する（ステップＳ２１４）。
【００６５】
MEi=MAP(T(i),r(i))を満たすiを表す識別子ID(i)は抽出部１４５ｂに送られる。抽出部１４５ｂは識別子ID(i)が表すiに対応する暗号文C(i)をＤＢ記憶部１４３から抽出し、出力部１４２に送る（ステップＳ２０５）。出力部１４２は、暗号文C(i)をネットワーク経由で検索要求装置１３０に送信する（ステップＳ２０６）。
【００６６】
〔第３実施形態〕
第３実施形態の詳細を説明する。本形態は第１の実施形態の変形例であり、インデックスやクエリの生成を複数の計算装置で並列に実行する。以下では、第１実施形態との相違点を中心に説明し、第１実施形態と共通する処理部・ステップについては、第１実施形態と同じ参照番号を用いて説明を簡略化する。
【００６７】
＜構成＞
図７に例示するように、本形態の検索可能暗号システム３は、鍵生成装置３１０と登録装置３２０と検索要求装置１３０と検索装置１４０とU個（U≧2）の計算装置１５０−１〜ＵとEU個（EU≧2）の計算装置３５０−１〜ＥＵとQU個（QU≧2）の計算装置３６０−１〜ＱＵとを有し、これらはネットワークを通じて通信可能である。
【００６８】
図８Ａに例示するように、本形態の鍵生成装置３１０は、入力部３１１と出力部３１２とマスタ鍵情報記憶部１１３と制御部３１４と並列処理依頼部３１５ａとクエリ生成部３１５ｂとメモリ３１６とを有する。図８Ｂに例示するように、本形態の計算装置３６０−ｇ（ｇ∈{1,...,QU}）は、入力部３６１−ｇと出力部３６２−ｇと制御部３６４−ｇとクエリ計算部３６５−ｇとメモリ３６６−ｇとを有する。
【００６９】
図９Ａに例示するように、本形態の登録装置３２０は、入力部３２１と出力部３２２と制御部３２４とベクトル設定部１２５ａと乱数生成部１２５ｂと暗号化部３２５ｃとインデックス生成部３２５ｄとメモリ３２６とを有する。なお、記載の便宜上、図９Ａには２個の出力部３２２が記載されているが、これは実際の出力部３２２の個数と無関係である。図９Ｂに例示するように、本形態の計算装置３５０−ｆ（f∈{1,...,EU}）は、入力部３５１−ｆと出力部３５２−ｆと制御部３５４−ｆとインデックス計算部３５５−ｆとメモリ３５６−ｆとを有する。
【００７０】
なお、鍵生成装置３１０、登録装置３２０及び計算装置３５０−１〜ＥＵ，３６０−１〜ＱＵのそれぞれは、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。鍵生成装置３１０、登録装置３２０及び計算装置３５０−１〜ＥＵ，３６０−１〜ＱＵのそれぞれは、それぞれが有する制御部３１４、３２４、３６４−１〜ＱＵ及び３５４−１〜ＥＵの制御のもと各処理を実行する。鍵生成装置３１０、登録装置３２０及び計算装置３５０−１〜ＥＵ、３６０−１〜ＱＵのそれぞれでの演算結果は、それぞれが有するメモリ３１６、３２６、３５６−１〜ＥＵ、３６６−１〜ＱＵに格納され、必要に応じて読み出されて他の演算に使用される。
【００７１】
＜事前処理＞
前述したSetupが実行され、マスタ鍵情報MSK，公開パラメータPKが定められる。マスタ鍵情報MSKは、鍵生成装置３１０（図８Ａ）のマスタ鍵情報記憶部１１３に格納され、公開パラメータPKは、鍵生成装置３１０、登録装置３２０、検索要求装置１３０、検索装置１４０、U個（U≧2）の計算装置１５０−１〜Ｕ、EU個（EU≧2）の計算装置３５０−１〜ＥＵ、及びQU個（QU≧2）の計算装置３５０−１〜ＱＵのそれぞれで利用可能なように設定される。
【００７２】
＜データベース登録処理＞
インデックスを構成するN次元ベクトルIND(i)=(T(i,1),...,T(i,N))は以下の関係を満たす。ただし、Kが2以上の整数であり、k∈{1,...,K}であり、(W(i,1),...,W(i,K))がK次元ベクトルであり、bk=(b1,k,...,bN,k)が基底ベクトルである（式(12)）。
IND(i)=Σk=1K W(i,k)・bk
=(W(i,1)・b1,1,...,W(i,1)・bN,1)+(W(i,2)・b1,2,...,W(i,2)・bN,2)
+...+(W(i,K)・b1,K,...,W(i,K)・bN,K)
=(Σk=1K W(i,k)・b1,k, Σk=1K W(i,k)・b2,k,..., Σk=1K W(i,k)・bN,k)  …(30)
すなわち、暗号文である(T(i,1),...,T(i,N))の各要素T(i,n)(n∈{1,...,N})は、T(i,n)=Σk=1K W(i,k)・bn,kを満たす。本形態では、(T(i,1),...,T(i,N))の各要素T(i,n)の計算を複数の計算装置３５０−１〜ＥＵで実行する。以下では式(22)に従って(T(i,1),...,T(i,N))が生成される例を説明する。式(22)はK=Nの場合の例であり、以下ではK=Nの場合の例を示す。
【００７３】
図１０Ａに例示するように、登録装置３２０（図９Ａ）の入力部３２１に、検索装置のＤＢ記憶部１４３に登録するP個の検索対象情報Text(i)(i∈{1,...,P},P≧1)と当該検索対象情報Text(i)にそれぞれ対応する登録用のキーワードKWT(i)が入力される（ステップＳ３０１）。登録用のキーワードKWT(i)はベクトル設定部１２５ａに入力される。ベクトル設定部１２５ａは、第１実施形態と同様にシステム内で定められた規則に従って、登録用のキーワードKWT(i)に対応するη次元ベクトルW(i)=(w1,i,...,wη,i)(i∈{1,...,P})を設定する（ステップＳ３０２）。
【００７４】
P個の検索対象情報Text(i)及びベクトルW(i)=(w1,i,...,wη,i)(i∈{1,...,P})は並列処理依頼部３２５ｅに送られる。本形態の並列処理依頼部３２５ｅは、有限体Fqの元である乱数υ0,i,υ1,i,...,υζ,iを生成し、ベクトル(w1,i,...,wη,i)と乱数υ0,i,υ1,i,...,υζ,iとを用い、以下のように(W(i,1),...,W(i,K)) (K=N)を生成する。
(W(i,1),...,W(i,K))=(υ0,i・w1,i,...,υ0,i・wη,i, υ1,i,...,υζ,i)  …(31)
(W(i,1),...,W(i,K))及びbk=(b1,k,...,bN,k)は並列処理情報として出力部３２２に送られる。出力部３２２は、計算装置３５０−ｆ（f∈{1,...,EU}）のそれぞれに対し、集合ESUB(f)のすべての元et(f)について、et(f)∈ESUB(f)のそれぞれに対応する(bet(f),1,...,bet(f),K)及び(W(i,1),...,W(i,K))を出力する。ただし、f∈{1,...,EU}, f’∈{1,...,EU-1}, ES(1)={1,...,N}, ES(f’+1)=ES(f’)-ESUB(f’), ESUB(f’)⊂ES(f’), ESUB(EU)=ES(EU)であり、et(f)∈ESUB(f)である。例えば、EU=Nかつet(f)=fである（ステップＳ３０３）。
【００７５】
et(f)∈ESUB(f)のそれぞれに対応する(bet(f),1,...,bet(f),K)及び(W(i,1),...,W(i,K))は、ネットワークを経由して計算装置３５０−ｆ（f∈{1,...,EU}）に送信される。図１０Ｂに例示するように、(bet(f),1,...,bet(f),K)及び(W(i,1),...,W(i,K))は、計算装置３５０−ｆ（図９Ｂ）の入力部３５１−ｆに入力され（ステップＳ３１１）、インデックス計算部３５５−ｆに入力される。インデックス計算部３５５−ｆは、これらを用いてインデックスの要素T(i, et(f))=Σk=1K W(i,k)・bet(f),kを計算する（ステップＳ３１２）。インデックスの要素T(i, et(f))は出力部３５２−ｆに入力され、そこからネットワーク経由で登録装置３２０（図９Ａ）に送信される（ステップＳ３１３）。
【００７６】
図１０Ａに例示するように、計算装置３５０−ｆ（f∈{1,...,EU}）のそれぞれから送信されたインデックスの要素T(i, et(f))は、登録装置３２０の入力部３２１に入力され、暗号化部３２５ｃに送られる（ステップＳ３０４）。暗号化部３２５ｃは、送られたインデックスの要素T(i, et(f))からIND(i)=(T(i,1),...,T(i,N))を生成する（ステップＳ３０４）。
【００７７】
乱数生成部１２５ｂはP個の乱数r(i)(i∈{1,...,P})を生成し、P個の乱数r(i)(i∈{1,...,P})は暗号化部３２５ｃに送られる（ステップＳ３０５）。暗号化部１２５ｃには、さらにステップＳ３０３で並列処理依頼部３２５ｅが生成した乱数υ1,iが入力される。暗号化部１２５ｃは、gTτ・υ1,iを共通鍵KEY(i)とし、所定の共通鍵暗号方式に則って乱数r(i)の暗号文T(i)を生成する。暗号文T(i)はgTτ・υ1,i=MAP(T(i), r(i))を満たす。例えば暗号化部３２５ｃは、乱数r(i)と乱数υ1,iとを用い、式(24)のmesにr(i)を代入し、式(24)のυ1に乱数υ1,iを代入し、i(i∈{1,...,P})のそれぞれに対応する暗号文T(i)を得る。さらに暗号化部１２５ｃに検索対象情報Text(i)が入力され、暗号化部１２５ｃは、システム内で定められた任意の暗号化方式に則って検索対象情報Text(i)を暗号化して暗号文C(i)を生成する（ステップＳ３０６）。
【００７８】
i(i∈{1,...,P})のそれぞれに対応するC(i)，(T(i,1),...,T(i,N)), T(i), r(i)はインデックス生成部３２５ｄに入力される。インデックス生成部３２５ｄは、(T(i,1),...,T(i,N)), T(i), r(i)の組み合わせを暗号文C(i)に対応するインデックスとして対応付ける（ステップＳ３０７）。i(i∈{1,...,P})のそれぞれに対応する暗号文C(i)とそれに対応付けられたインデックス(T(i,1),...,T(i,N)), T(i), r(i)とは出力部３２２に入力される。出力部３２２はこれらを出力する。暗号文C(i)とインデックス(T(i,1),...,T(i,N)), T(i), r(i)とは、例えば可搬型記憶媒体又は安全な通信路を経由し、検索装置１４０（図３Ａ）に送られ、式(26)のように検索装置１４０のＤＢ記憶部１４３に格納される（ステップＳ３０８）。
【００７９】
＜検索処理＞
クエリであるN次元ベクトルQ=(Q(1),...,Q(N))は以下の関係を満たす。ただし、(V(1),...,V(K’))がK’次元ベクトルであり、bk’*=(b1,k’*,...,bN,k’*)が基底ベクトルである（式(14)）。
Q=Σk’=1K’ V(k’)・bk’*
=(V(1)・b1,1*,...,V(1)・bN,1*)
+(V(2)・b1,2*,...,V(2)・bN,2*)+...+(V(K’)・b1,K’*,...,V(K’)・bN,K’*)
=(Σk’=1K’ V(k’)・b1,k’*, Σk’=1K’ V(k’)・b2,k’*,..., Σk’=1K’ V(k’)・bN,k’*)
…(32)
すなわち、復号鍵である(Q(1),...,Q(N))の各要素Q(n)(n∈{1,...,N})はQ(n)=Σk’=1K’ V(k’)・bn,k’*を満たす。本形態では、(Q(1),...,Q(N))の各要素Q(n)の計算を複数の計算装置３６０−１〜ＱＵで実行する。なお、式(20)はK’=η+ζ'≦Nの場合の例であり、以下ではK’=η+ζ'の場合の例を示す。
【００８０】
第１実施形態と同様に検索要求装置１３０（図２Ｃ）から送信されたベクトルV=(v1,...,vη)は、鍵生成装置３１０（図８Ａ）の入力部３１１に入力され（ステップＳ３２１）、並列処理依頼部３１５ａに入力される。本形態の並列処理依頼部３１５ａは、有限体Fqの元である乱数σ,σι-η∈Fqを生成し、ベクトル(v1,...,vη)と乱数σ,σι-η∈Fqとを用い、以下のように(V(1),...,W(K’)) (K’=η+ζ')を生成する。
(V(1),...,V(K’))=(σ・v1,...,σ・vη, σ1,...,σζ’)      …(33)
(V(1),...,V(K’))及びマスタ鍵情報記憶部１１３から読み出された行列B*を構成する基底ベクトルbk’*=(b1,k’*,...,bN,k’*)は並列処理情報として出力部３１２に送られる。出力部３２２は、計算装置３６０−ｇ（g∈{1,...,QU}）のそれぞれに対し、集合QSUB(g)のすべての元qt(g)について、qt(g)∈QSUB(g)のそれぞれに対応する(b1,k’*,...,bN,k’*)及び(V(1),...,V(K’))を出力する。ただし、g∈{1,...,QU}, g’∈{1,...,QU-1}, QS(1)={1,...,N}, QS(g’+1)=QS(g’)-QSUB(g’), QSUB(g’)⊂QS(g’), QSUB(QU)=QS(QU)であり、qt(g)∈QSUB(g)である。例えば、QU=Nかつqt(f)=gである（ステップＳ３２２）。
【００８１】
qt(g)∈QSUB(g)のそれぞれに対応する(b1,k’*,...,bN,k’*)及び(V(1),...,V(K’))は、ネットワークを経由して計算装置３６０−ｇ（g∈{1,...,QU}）に送信される。図１１Ｂに例示するように、(b1,k’*,...,bN,k’*)及び(V(1),...,V(K’))は、計算装置３６０−ｇ（図８Ｂ）の入力部３６１−ｇに入力され（ステップＳ３３１）、クエリ計算部３６５−ｇに入力される。クエリ計算部３６５−ｇは、これらを用いてクエリの要素Q(qt(g))=Σk’=1K’ V(k’)・bqt(g),k’*を計算する（ステップＳ３３２）。クエリの要素Q(qt(g))は出力部３６２−ｇに入力され、そこからネットワーク経由で鍵生成装置３１０（図８Ａ）に送信される（ステップＳ３３３）。
【００８２】
図１１Ａに例示するように、計算装置３６０−ｇ（g∈{1,...,QU}）のそれぞれから送信されたクエリの要素Q(qt(g))は、鍵生成装置３１０の入力部３１１に入力され、クエリ生成部３１５ｂに送られる（ステップＳ３２３）。クエリ生成部３１５ｂは、送られたクエリの要素Q(qt(g))からインデックスQ=(Q(1),...,Q(N))を生成する（ステップＳ３２４）。クエリQ=(Q(1),...,Q(N))は出力部３１２に入力される。出力部３１２は、ネットワーク経由でクエリQを検索要求装置１３０（図２Ｃ）に送信する（ステップＳ３２５）。検索要求装置１３０は、入力部１３１でクエリQを受信し、さらに出力部１３２からネットワーク経由で検索装置１４０（図３Ａ）にクエリQを送信する。その後、第１実施形態のステップＳ１０１以降の処理が実行される。
【００８３】
〔第３実施形態の変形例〕
第３実施形態では、第１実施形態のインデックスの生成及びクエリの生成を複数の計算装置で実行する例を示した。しかしながら、第２実施形態のインデックスの生成及びクエリの生成を複数の計算装置で実行してもよい。この場合、ステップＳ３０８で、式(26)のように暗号化データベースが検索装置１４０のＤＢ記憶部１４３に格納されるのではなく、式(29)のように暗号化データベースが検索装置２４０のＤＢ記憶部２４３に格納される。また、ステップＳ３２５以降、第１実施形態のステップＳ１０１以降の処理が実行される代わりに、第２実施形態のステップＳ１０１以降の処理が実行される。
【００８４】
〔第４実施形態〕
第４実施形態の詳細を説明する。本形態は第１，３の実施形態の変形例である。以下では、第１，３実施形態との相違点を中心に説明し、第１，３実施形態と共通する処理部・ステップについては、第１，３実施形態と同じ参照番号を用いて説明を簡略化する。
【００８５】
＜構成＞
図７に例示するように、本形態の検索可能暗号システム４は、鍵生成装置３１０と登録装置３２０と検索要求装置１３０と検索装置１４０とU個（U≧2）の計算装置１５０−１〜ＵとEU個（EU≧2）の計算装置４５０−１〜ＥＵとQU個（QU≧2）の計算装置４６０−１〜ＱＵとを有し、これらはネットワークを通じて通信可能である。
【００８６】
図８Ｂに例示するように、本形態の計算装置４６０−ｇ（ｇ∈{1,...,QU}）は、入力部３６１−ｇと出力部３６２−ｇと制御部４６４−ｇとクエリ計算部４６５−ｇとメモリ３６６−ｇとを有する。図９Ｂに例示するように、本形態の計算装置４５０−ｆ（f∈{1,...,EU}）は、入力部３５１−ｆと出力部３５２−ｆと制御部４５４−ｆとインデックス計算部４５５−ｆとメモリ３５６−ｆとを有する。
【００８７】
なお、計算装置４５０−１〜ＥＵ，４６０−１〜ＱＵのそれぞれは、例えば、公知のコンピュータ又は専用コンピュータに特別なプログラムが読み込まれて構成される特別な装置である。計算装置４５０−１〜ＥＵ，４６０−１〜ＱＵのそれぞれは、それぞれが有する制御部４６４−１〜ＱＵ及び４５４−１〜ＥＵの制御のもと各処理を実行する。計算装置３５０−１〜ＥＵ、３６０−１〜ＱＵのそれぞれでの演算結果は、それぞれが有するメモリ３５６−１〜ＥＵ、３６６−１〜ＱＵに格納され、必要に応じて読み出されて他の演算に使用される。
【００８８】
＜事前処理＞
計算装置３５０−１〜ＥＵ及び計算装置３５０−１〜ＱＵが計算装置４５０−１〜ＥＵ及び計算装置４５０−１〜ＱＵに置換される以外、第３実施形態と同様である。
【００８９】
＜データベース登録処理＞
図１０Ａに例示するように、第３実施形態のステップＳ３０１〜Ｓ３０３の処理が実行される。図１０Ｂに例示するように、(bet(f),1,...,bet(f),K)及び(W(i,1),...,W(i,K))は、計算装置４５０−ｆ（図９Ｂ）の入力部３５１−ｆに入力され（ステップＳ３１１）、インデックス計算部４５５−ｆに入力される。インデックス計算部４５５−ｆは、これらを用いてインデックスの要素ERND・T(i, et(f))=ERND・Σk=1K W(i,k)・bet(f),kを計算する（ステップＳ４１２）。なお、ERNDは例えば乱数であり、前述のようにERND及びQRNDがERND・QRND=1を満たす。インデックスの要素ERND・T(i, et(f))は出力部４５２−ｆに入力され、そこからネットワーク経由で登録装置３２０（図９Ａ）に送信される（ステップＳ４１３）。その後、T(i, et(f))をERND・T(i, et(f))として、第３実施形態のステップＳ３０４〜Ｓ３０８の処理が実行される。
【００９０】
＜検索処理＞
図１１Ａに例示するように、第３実施形態のステップＳ３２１及びＳ３２２の処理が実行される。qt(g)∈QSUB(g)のそれぞれに対応する(b1,k’*,...,bN,k’*)及び(V(1),...,V(K’))は、ネットワークを経由して計算装置４６０−ｇ（g∈{1,...,QU}）に送信される。図１１Ｂに例示するように、(b1,k’*,...,bN,k’*)及び(V(1),...,V(K’))は、計算装置４６０−ｇ（図８Ｂ）の入力部３６１−ｇに入力され（ステップＳ３３１）、クエリ計算部４６５−ｇに入力される。クエリ計算部４６５−ｇは、これらを用いてクエリの要素QRND・Q(qt(g))=QRND・Σk’=1K’ V(k’)・bqt(g),k’*を計算する（ステップＳ４３２）。クエリの要素QRND・Q(qt(g))は出力部３６２−ｇに入力され、そこからネットワーク経由で鍵生成装置３１０（図８Ａ）に送信される（ステップＳ４３３）。その後、Q(qt(g))をQRND・Q(qt(g))として、第３実施形態のステップＳ３２３〜Ｓ３２５の処理が実行される。その後、Q(qt(g))をQRND・Q(qt(g))とし、T(i, et(f))をERND・T(i, et(f))として、第１実施形態のステップＳ１０１以降の処理が実行される。
【００９１】
〔第４実施形態の変形例１〕
第４実施形態では、Q(qt(g))をQRND・Q(qt(g))とし、T(i, et(f))をERND・T(i, et(f))とし、第１実施形態のインデックスの生成及びクエリの生成を複数の計算装置で実行する例を示した。しかしながら、Q(qt(g))をQRND・Q(qt(g))とし、T(i, et(f))をERND・T(i, et(f))とし、第２実施形態のインデックスの生成及びクエリの生成を複数の計算装置で実行してもよい。
【００９２】
〔第４実施形態の変形例２〕
その他、計算装置３５０−１〜ＥＵで生成されたインデックスの要素と、計算装置３６０−１〜ＱＵで生成されたクエリの要素とが、登録装置３２０や検索要求装置１３０を経由せずに、計算装置１５０−１〜Ｕに直接送信され、計算装置１５０−１〜Ｕが検証処理を実行してもよい。
【００９３】
〔その他の変形例〕
本発明は上述の実施の形態に限定されるものではない。例えば、上記の各実施形態で説明した有限体上の元や演算が群上での元や演算に置換されてもよいし、環上での元や演算に置換されてもよい。登録装置と検索装置とが一体であってもよいし、検索要求装置と検索装置とが一体であってもよい。装置間の情報がネットワークを通じて行われる代わりに、可搬型記録媒体を介して行われてもよい。非特許文献５〜７の検索可能暗号方式に本発明を適用してもよいし、その他の検索可能暗号方式に本発明を適用してもよい。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００９４】
〔プログラム〕
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００９５】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な（non-transitory）記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【００９６】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００９７】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００９８】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部がハードウェアで実現されてもよい。
【符号の説明】
【００９９】
１〜４  検索可能暗号システム
１１０，３１０  鍵生成装置
１２０，２２０，３２０  登録装置
１３０  検索要求装置
１４０，２４０  検索装置
１５０，３５０，３６０，４５０，４６０  計算装置
【図１】
0005651609.tif 000008
【図２】
0005651609.tif 000009
【図３】
0005651609.tif 000010
【図４】
0005651609.tif 000011
【図５】
0005651609.tif 000012
【図６】
0005651609.tif 000013
【図７】
0005651609.tif 000014
【図８】
0005651609.tif 000015
【図９】
0005651609.tif 000016
【図１０】
0005651609.tif 000017
【図１１】
0005651609.tif 000018