説明

セキュリティシステム、暗号化装置、復号装置、再暗号化装置、難読化装置、それらの方法、及びプログラム

【課題】内積述語暗号の機能を有する再暗号化方式を提供する。
【解決手段】W(0,1)=(h(1)a(1))r,Θ(0,1)=(h(1)b(1))s,Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1),Λ(0,1)=h(1)ζを含む暗号文ct(0,1)から、W’=W(0,1)・(h(1)a(1))r’,Θ’=Θ(0,1)・(h(1)b(1))s’,Y’=Y(0,1)・h(1)r’+s’,U’=U(0,1)+(REV)B(1),Λ’=Λ(0,1)・h(1)ζ’1=e1(W’,Z1),Ψ2=e1(Θ’,Z2),Ψ3=e1(Y’,Z3),Ω1=en+μ(U’,k*),Ω2=e1(Λ’,k0)を生成し、E(1,2)=Ψ1y,F(1,2)=Ψ2y,G(1,2)=Ψ3y・Ω1y’,Z(1,2)=Z3y,H(1,2)=Ω2y’を含む再暗号文ct(1,2)を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化技術に関し、特に再暗号化可能な暗号化技術に関する。
【背景技術】
【0002】
従来の再暗号化方式では、プロキシ装置が持っている再暗号化鍵を利用すれば、プロキシ装置は、無条件で、第1復号装置で復号可能な暗号文を第2復号装置で復号可能な暗号文に変換できる(例えば、非特許文献1,2参照)。
【0003】
プロキシ再暗号化機能を有さない(内積)述語暗号や関数暗号として、非特許文献3,4に記載された内積述語暗号や、非特許文献5に記載された関数暗号などがある。
【先行技術文献】
【特許文献】
【0004】
【非特許文献1】S. Hohenberger, G. N. Rothblum, A. Shelat, and V. Vaikuntanathan, “Securely Obfuscating Re-encryption,” In TCC, volume 4392 of Lecture Notes in Computer Science, pages 233-252, Springer, 2007.
【非特許文献2】N. Chandran, M. Chase, and V. Vaikuntanathan, “Collusion Resistant Obfuscation and Functional Re-encryption,” [online], 22 Jun 2011, [平成23年10月27日検索]、インターネット<http://eprint.iacr.org/2011/337.>
【非特許文献3】J. Katz, A. Sahai, and B. Waters, “Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products,” In EUROCRYPT, volume 4965 of Lecture Notes in Computer Science, pages 146-162, Springer, 2008.
【非特許文献4】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, volume 6110 of Lecture Notes in Computer Science, pages 62-91, Springer, 2010.
【非特許文献5】T. Okamoto and K. Takashima, “Fully Secure Functional Encryption with General Relations from the Decisional Linear Assumption,” In CRYPTO, volume 6223 of Lecture Notes in Computer Science, pages 191-208, Springer, 2010.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、内積述語暗号の機能を有する再暗号化方式は存在しない。本発明はこのような点に鑑みてなされたものであり、内積述語暗号の機能を有する再暗号化方式を提供する。
【課題を解決するための手段】
【0006】
本発明では、G, GTが巡回群であり、gが巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、基底Bと基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して巡回群GTの元を得る双線形写像である。
【0007】
暗号化装置は、r, s, ζ, ω∈Fqを選択し、第1復号装置の公開鍵(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))とn次元ベクトルx=(xι(1),...,xι(n))∈Fqnとを用い、メッセージm∈Gの第1暗号文ct(0,1)を生成する。ただし、第1暗号文ct(0,1)がW(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含み、CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}がζであり、CVι(n+1),...,CVι(Γ)からCVκを除いた要素からなるベクトルとRVι(n+1),...,RVι(Γ)からRVκを除いた要素からなるベクトルとの内積が0である。
【0008】
再暗号化装置は、r’, s’, ζ’∈Fqを選択し、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’を得、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)を得、y, y’∈Fq×に対するE(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)を生成する。REVはn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}がζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqである。
【0009】
第2復号装置は、e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}を満たすm’∈Gを復号値として得る。
【発明の効果】
【0010】
本発明では、内積述語暗号の機能を有する再暗号化方式を実現できる。
【図面の簡単な説明】
【0011】
【図1】図1は実施形態のセキュリティシステムの全体構成を説明するための図である。
【図2】図2は実施形態の暗号化装置の構成を説明するための図である。
【図3】図3は実施形態の復号装置の構成を説明するための図である。
【図4】図4は実施形態の復号装置の構成を説明するための図である。
【図5】図5は実施形態の難読化装置の構成を説明するための図である。
【図6】図6は実施形態の再暗号化装置の構成を説明するための図である。
【図7】図7A及び7Bは復号装置の秘密鍵及び公開鍵の生成方法を説明するためのフローチャートであり、図7Cは再暗号化鍵の生成方法を説明するためのフローチャートである。
【図8】図8は実施形態の暗号化方法を説明するためのフローチャートである。
【図9】図9は実施形態の再暗号化方法を説明するためのフローチャートである。
【図10】図10A及び10Bは実施形態の復号方法を説明するためのフローチャートである。
【発明を実施するための形態】
【0012】
実施形態を説明する。
〔定義〕
基本的な用語・表記を定義する。
secはセキュリティパラメータを表す1以上の整数である。qはsecビットの素数であり、G, GTは位数qの巡回群(巡回乗法群)であり、g∈Gは巡回群Gの生成元であり、gT∈GTは巡回群GTの生成元である。Fqは位数qの有限体であり、Fq×=Fq\{0}は有限体Fqから零元(加法単位元)0を除いた集合である。
【0013】
実施形態では、原則、巡回群G, GTでの演算が乗法群として乗法的に表記される。ただし、記法の便宜上の例外として、巡回群Gの元を要素とするベクトル単位の演算(結果)、及び、巡回群Gの元を要素とする行列単位の演算(結果)のみが加法的に表現(以下「便宜的加法表現」)される。加法的に表現されたとしても、このようなベクトルや行列の各要素が巡回群Gの元(巡回乗法群の元)であることに注意されたい。
【0014】
nが1以上の整数であり、x=(x1,...,xn)∈Fqnがn個の有限体Fqの元xi∈Fqを要素とするn次元ベクトル(例えば属性ベクトル)であり、v=(v1,...,vn)∈Fqnがn個の有限体Fqの元vi∈Fqを要素とするn次元ベクトル(例えば述語ベクトル)である。2つのベクトルx,vに対するx・vは、内積x・vi=1nxi・vi∈Fqを表す。1は単位ベクトル1=(1,...,1)を表す。INは有限体Fqの元を要素に持つN行N列の単位行列を表す。
【0015】
eξ(ξは1以上の整数)は、任意の直積群Gξ×Gξの元に対して巡回群GTの元を得る双線形写像(bilinear map)である。
eξ:Gξ×Gξ→GT …(1)
双線形写像eξは以下の性質を満たす。
[双線形性]双線形写像eξは、任意のλ1,λ2∈Gξ及びν1,ν2∈Fqについて以下の関係を満たす。
e(λ1ν1, λ2ν2)=e(λ1, λ2)ν1・ν2 …(2)
[非退化]eξ1, λ2)≠1∈GTを満たすλ1,λ2∈Gξが存在する。すべてのλ1∈Gξに対してeξ1, λ2)=1∈GTであるならλ2=0ξ∈Gξである。eξ(g, g)=gT∈GTを満たす。
[計算可能性]任意のλ1,λ2∈Gξに対してe(λ1, λ2)の効率的な(つまり多項式時間での)計算が可能である。
【0016】
本形態の双線形写像eξは、任意のξ,γ=(γ1,...,γξ)∈Gξ,γ*=(γ1*,...,γξ*)∈Gξ,γι∈G及びγι*∈G(ι=1,...,ξ)について、以下のように構成される。
eξ(γ, γ*)=Πι=1ξe1ι, γι*) …(3)
双線形写像e1の具体例は、有限体Fq上で定義された楕円曲線上の2点に対して定義されるWeilペアリングやTateペアリングなどのペアリングである。したがって、例えば公知のペアリングを用いることで任意のξに対する双線形写像eξを定義できる。ペアリングなどの双線形写像についての詳細は、例えば、参考文献1「D. Boneh and M. K. Franklin, “Identity-Based Encryption from the Weil Pairing,” In CRYPTO’01, volume 2139 of Lecture Notes in Computer Science, pages 213-229, Springer, 2001.」や、参考文献2「黒澤馨著,“現代暗号への招待”,サイエンス社,2010年9月10日,ISBN 978-4-7819-1262-2,第13章」などを参照されたい。
【0017】
ai∈GN (i=1,...,N)は、巡回群GのN個の元を要素とするN次元の基底ベクトルを表す。ただし、μが2以上の整数であり、N=n+μである。基底ベクトルaiの一例はg∈Gをi次元目の要素とし、残りのN-1個の要素を巡回群Gの単位元(乗法的に「1」と表現)とするN-1次元の基底ベクトルである。N次元の基底ベクトルai(i=1,...,N)の各要素をそれぞれ列挙して表記すると、以下のようになる。
a1=(g,1,1,...,1)
a2=(1,g,1,...,1) …(4)
...
aN=(1,1,1,...,g)
【0018】
ai*∈GN (i=1,...,N)は、巡回群GのN個の元を要素とするN次元の基底ベクトルを表す。基底ベクトルai*の一例はg∈Gをi次元目の要素とし、残りのN-1個の要素を巡回群Gの単位元(乗法的に「1」と表現)とするN-1次元の基底ベクトルである。N次元の基底ベクトルai*(i=1,...,N)の各要素をそれぞれ列挙して表記すると、以下のようになる。
a1*=(g,1,1,...,1)
a2*=(1,g,1,...,1) …(5)
...
aN*=(1,1,1,...,g)
【0019】
N個の基底ベクトルai(i=1,...,N)からなる基底Aは直交基底であり、巡回群G上のN次元ベクトル空間V=G×...×Gを張る(V=span<a1,...,aN>)。N次元ベクトル空間V上の任意の元γ=(γ1,...,γN)∈Vは、基底ベクトルai(i=1,...,N)とdi∈Fq(i=1,...,N)とを用い、便宜上、以下のように加法的に表記できる(便宜的加法表現)。
γ=Σi=1N di・ai …(6)
式(6)を乗法的に表記すると以下のようになる。
γ=(gd1,...,gdN) …(7)
ただし、上付き添え字の「d1」,...,「dN」は「d1」,...,「dN」を表す。
N個の基底ベクトルai(i=1,...,N)からなる基底AとN個のdi∈Fq(i=1,...,N)からベクトルd=(d1,...,dN)とを用い、N次元ベクトル空間V上の任意の元γを以下のように表記する。
γ=(d)A=(d1,...,dN)A …(8)
【0020】
N個の基底ベクトルai*(i=1,...,N)からなる基底A*は直交基底であり、巡回群G上のN次元ベクトル空間V*=G×...×Gを張る(V*=span<a1*,...,aN*>)。N次元ベクトル空間V*上の任意の元γ*=(γ1*,...,γN*)∈V*は、基底ベクトルai* (i=1,...,N)とfi∈Fq(i=1,...,N)とを用い、便宜上、以下のように加法的に表記できる(便宜的加法表現)。
γ*i=1N fi・ai* …(9)
式(9)を乗法的に表記すると以下のようになる。
γ*=(gf1,...,gfN) …(10)
ただし、上付き添え字の「f1」,...,「fN」は「f1」,...,「fN」を表す。
N個の基底ベクトルai*(i=1,...,N)からなる基底A*とN個のfi∈Fq(i=1,...,N)からベクトルf=(f1,...,fN)とを用い、N次元ベクトル空間V*上の任意の元γ*を以下のように表記する。
γ*=(f)A*=(f1,...,fN)A* …(11)
ただし、下付き添え字の「A*」はA*を表す。
【0021】
式(2)(3)(7)(10)より、γ=(d)A=(d1,...,dN)A∈V,γ*=(f)A*=(f1,...,fN)A*∈V*について、以下の関係が成り立つ。
eN(γ, γ*)=Πi=1N e1i, γi*)
i=1N e1(gdi, gfi)
=e1(g, g)d1・f1+...+dN・fN
=e1(g, g)d→・f→
=gTd→・f→ …(12)
ただし、上付き添え字の「d→」「f→」は、それぞれ「d」「f」を表す。
【0022】
また式(2)(3)より、基底ベクトルai(i=1,...,N)と基底ベクトルaj*(j=1,...,N)は以下の関係を満たす。すなわち、基底Aと基底A*とは互いに双対な直交基底(双対直交基底)である。
eN(ai, aj*)=gTδ(i,j) …(13)
ただし、δ(i,j)はクロネッカーのデルタ関数を表す。すなわち、i=jの場合にδ(i,j)=1∈Fqを満たし、i≠jの場合にδ(i,j)=0∈Fqを満たす。
【0023】
双線形写像eNがペアリングによって構成される場合、上述のような位数q,N次元ベクトル空間V,V*,巡回群G, GT,生成元g,双線形写像eNの組を「対称ペアリング群による双対ペアリングベクトル空間(DPVS:Dual Paring Vector space))と呼ぶ。
【0024】
N個の基底ベクトルai(i=1,...,N)からなる基底Aは、一様ランダムなN行N列の正則行列X=(χi,j) ←U GL(N, Fq)を用い、N次元ベクトル空間Vの基底B=(b1,...,bN)に変換可能である。GL(N, Fq)は有限体Fq上のN次元一般線形群を表し、(χi,j)は、χi,jをi行j列の要素とする行列を表す。「MENBER ←USET」は集合「SET」の要素「MENBER」を一様ランダムに選択することを意味する。基底Bの要素bi∈GN (i=1,...,N)のそれぞれは、巡回群GのN個の元を要素とするN次元の基底ベクトルであり、便宜上、以下のように加法的に表記できる(便宜的加法表現)。
bij=1N χi,j・aj (i=1,...,N) …(14)
式(14)を乗法的に表記すると以下のようになる。
bi=(gχi,1,...,gχi,N) (i=1,...,N) …(15)
ただし、上付き添え字の「χi,j」は「χi,j」を表す。
すなわち、基底B=(b1,...,bN)は巡回群Gの元を要素とするN×Nの行列とみることができ、乗法的に以下のように表記することができる。
B=((gχi,j)i,j) …(16)
【0025】
N個の基底ベクトルai*(i=1,...,N)からなる基底A*は、正則行列(θi,j)=(XT)-1を用い、N次元ベクトル空間V*の直交基底B*=(b1*,...,bN*)に変換可能である。ただし、ΞTはΞの転置を表し、Ξ-1はΞの逆行列を表し、(θi,j)はθi,j (i=1,...,N, j=1,...,N)をi行j列の要素とする行列を表す。直交基底B*の要素bi*∈GN (i=1,...,N)のそれぞれは、巡回群GのN個の元を要素とするN次元の基底ベクトルであり、便宜上、以下のように加法的に表記できる(便宜的加法表現)。
bi*j=1N θi,j・aj* (i=1,...,N) …(17)
式(17)を乗法的に表記すると以下のようになる。
bi*=(gθi,1,...,gθi,N) (i=1,...,N) …(18)
ただし、上付き添え字の「θi,j」は「θi,j」を表す。
すなわち、基底B*=(b1,...,bN)は巡回群Gの元を要素とするN×Nの行列とみることができ、乗法的に以下のように表記することができる。
B*=((gθi,j)i,j) …(19)
【0026】
i,j)=(XT)-1から(θi,j)・(Xi,j)T=INが成り立つことから、χi=(χi,1,...,χi,N),θj=(θj,1,...,θj,N)とおくと以下が成り立つ。
χi・θj=(χi,1,...,χi,N)・(θj,1,...,θj,N)
=δ(i,j)∈Fq× …(20)
【0027】
式(3)(15)(18)(20)から以下が成り立つ。
eN(bi, bj*)=Πι=1Ne1(gχi,ι, gθj,ι)
=e1(g, g)χi→・θj→
=e1(g, g)δ(i,j)
=gTδ(i,j) …(21)
すなわち、基底Bと基底B*とは互いに双対な直交基底(双対直交基底)である。基底Bは巡回群G上のN次元ベクトル空間V=G×...×Gを張り(V=span<b1,...,bN>)、基底B*は巡回群G上のN次元ベクトル空間V*=G×...×Gを張る(V*=span<b1*,...,bN*>)。
【0028】
N次元ベクトル空間V上の任意の元γ=(γ1,...,γN)∈Vは、基底ベクトルbi(i=1,...,N)とdi∈Fq(i=1,...,N)とを用い、便宜上、以下のように加法的に表記できる(便宜的加法表現)。
γ=Σi=1N di・bi …(22)
式(16)より、式(22)を乗法的に表記すると以下のようになる。
【数1】

基底Bとベクトルd=(d1,...,dN)とを用い、N次元ベクトル空間V*上の任意の元γを以下のように表記する。
γ=(d)B=(d1,...,dN)B …(24)
【0029】
N次元ベクトル空間V*上の任意の元γ*=(γ1*,...,γN*)∈V*は、基底ベクトルbi* (i=1,...,N)とfi∈Fq(i=1,...,N)とを用い、便宜上、以下のように加法的に表記できる(便宜的加法表現)。
γ*i=1N fi・bi* …(25)
式(19)より、式(25)を乗法的に表記すると以下のようになる。
【数2】

基底B*とベクトルf=(f1,...,fN)とを用い、N次元ベクトル空間V*上の任意の元γ*を以下のように表記する。
γ*=(f)B*=(f1,...,fN)B* …(27)
【0030】
式(2)(3)(20)より、γ=(d)B=(γ1,...,γN)=(d1,...,dN)B∈V,γ*=(f)B*=(γ1*,...,γN*)= (f1,...,fN)B*∈V*について、以下の関係が成り立つ。
eN(γ, γ*)=eN(b1, b1*)d1・f1・...・eN(bN, bN*)dN・fN
=gT(d1・f1+...+dN・fN)
=gTd→・f→ …(28)
【0031】
〔概要〕
次に、実施形態の概要を説明する。
実施形態のセキュリティシステムは、パラメータ生成装置、第1復号装置、第2復号装置、難読化装置、暗号化装置及び再暗号化装置を有する。
【0032】
パラメータ生成装置は、セキュリティシステム全体に共通なシステムパラメータを生成する機能、及び、生成したシステムパラメータを出力する機能を有する。
パラメータ生成装置は、1sec(sec個の1)を入力として、セキュリティパラメータsecに対応する双線型写像パラメータparamV=(q, g, G, GT, eN),正則行列X=(χi,j),基底B=(b1,...,bN),B*=(b1*,...,bN*)(N=n+μ)を生成する。パラメータ生成装置は、双線型写像パラメータparamVを記憶部に記憶する。
パラメータ生成装置は、n+μ個の基底ベクトルbi∈Gn+μ(i=1,...,n+μ)の一部であるΓ個の基底ベクトルbι(1),...,bι(Γ)からなるB^=(bι(1),...,bι(Γ))を生成する。ただし、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}、n+1≦Γ<n+μである。例えば、μ=2・n+2であり、Γ=n+2であり、{ι(n+3),...,ι(3・n+2)}⊂{1,...,3・n+2}であり、B^=(bι(1),...,bι(n+2))である。より具体的な例を挙げると、B^=(b1,...,bn,b2・n+1,b3・n+2)である。
パラメータ生成装置は、以下のシステムパラメータcrsを公開パラメータとして出力する。
crs=(paramV, B^) …(29)
【0033】
第1復号装置は、公開鍵と秘密鍵を生成する機能、公開鍵と秘密鍵を記憶部に記憶する機能、及び、公開鍵を出力する機能を有する。第1復号装置は、システムパラメータcrsを入力とし、a(1), b(1), c(1), τ(1)∈Fq×を選択して秘密鍵sk(1)=(a(1), b(1), c(1), τ(1))及び公開鍵pk(1)=(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)を生成する。秘密鍵sk(1)及び公開鍵pk(1)は第1復号装置の記憶部に記憶され、公開鍵pk(1)は任意の装置に送信可能とされる。
B(1)=c(1)・τ(1)・B^は、巡回群Gの元を要素とするベクトル単位の演算結果を表し、便宜上、加法的に表現されている(便宜的加法表現)。
式(16)より、B(1)=c(1)・τ(1)・B^を乗法的に表記すると以下のようになる。これはB^とc(1),τ(1)とから計算可能である。
B(1)=((gc(1)・τ(1)・χi,j)i,j) …(30)
ただし、i∈{ι(1),...,ι(Γ)}⊂{1,...,n+μ},j∈{1,...,n+μ}である。
【0034】
第2復号装置は、公開鍵と秘密鍵を生成する機能、公開鍵と秘密鍵を記憶部に記憶する機能、及び、公開鍵を出力する機能を有する。第2復号装置は、システムパラメータcrsを入力とし、a(2), b(2), c(2), τ(2)∈Fq×を選択して秘密鍵sk(2)=(a(2), b(2), c(2), τ(2))及び公開鍵pk(2)=(h(2)=gτ(2), h(2)a(2), h(2)b(1), h(2)c(1), B(2)=c(2)・τ(2)・B^)を生成する。秘密鍵sk(2)及び公開鍵pk(2)は第2復号装置の記憶部に記憶され、公開鍵pk(2)は任意の装置に送信可能とされる。
B(2)=c(2)・τ(2)・B^は、巡回群Gの元を要素とするベクトル単位の演算結果を表し、便宜上、加法的に表現されている(便宜的加法表現)。
式(16)より、B(2)=c(2)・τ(2)・B^を乗法的に表記すると以下のようになる。これはB^とc(2),τ(2)とから計算可能である。
B(2)=((gc(2)・τ(2)・χi,j)i,j) …(31)
ただし、i∈{ι(1),...,ι(Γ)}⊂{1,...,n+μ},j∈{1,...,n+μ}である。
【0035】
難読化装置は、第1復号装置の秘密鍵sk(1)、第2復号装置の公開鍵pk(2)、n次元ベクトルv=(vι(1),...,vι(n))∈Fqn、及びシステムパラメータ生成時に生成された正則行列Xを入力とし、再暗号化鍵Obf(rk1→2)を生成する機能を有する。なお、正則行列Xは秘密情報であるため、パラメータ生成装置と難読化装置が同一であるか、難読化装置が何らかの安全な手段(専用回線や記録媒体を介した情報伝達等)を用いてパラメータ生成装置から正則行列Xを取得する必要がある。同様に秘密鍵sk(1)は秘密情報であるため、難読化装置が何らかの安全な手段を用いて第1復号装置から秘密鍵sk(1)を取得する必要がある。
【0036】
難読化装置は、sk(1)=(a(1), b(1), c(1), τ(1))、pk(2)=(h(2)=gτ(2), h(2)a(2), h(2)b(1), h(2)c(1), B(2)=c(2)・τ(2)・B^)、v=(vι(1),...,vι(n))∈Fqn、及び正則行列Xを入力として、Z1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含む再暗号化鍵Obf(rk1→2)を生成する。
RVはn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、z, ρ, σ∈Fq×は乱数であり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))はn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1∈Fqである。例えば、RVが3・n+2次元ベクトルRV=(RVι(1),...,RVι(3・n+2))であり、1個のRVκ∈{RVι(n+1), RVι(n+2)}が1∈Fqであり、RVκ以外の1個のRVφ∈{RVι(n+1), RVι(n+2)}が0∈Fqであり、n個のRVε(1),...,RVε(n)∈{RVι(n+3),...,RVι(3・n+2)}が乱数ηε(1),...,ηε(n)∈Fqであり、RVε(1),...,RVε(n)以外のn個のRVυ(1),...,RVυ(n)∈{RVι(n+3),...,RVι(3・n+2)}のそれぞれが0∈Fqである。これによりより高い安全性を確保できる。より具体的な例を挙げると、v=(v1,...,vn),(RV1,..., RVn)=(σ・v1,...,σ・vn)=σ・v,(RVn+1,...,RV2・n)=(0,...,0)=0n,RV2・n+1=1,(RV2・n+2,...,RV3・n+1)=(η2・n+2,...,η3・n+1)=η∈Fqn,RV3・n+2=0であり、RVの例は以下である。
RV=(σ・v,0n,1,η,0)∈Fq3・n+2 …(32)
【0037】
B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*は、巡回群Gの元を要素とするベクトル単位の演算結果を表し、便宜上、加法的に表現されている(便宜的加法表現)。式(19)より、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*を乗法的に表記し、変形すると以下のようになる。
B(1,2)*=((gθi,j・(ρ/c(1))・c(2)・τ(2))i,j)
=((gχi,j・c(2)・τ(2)・(ρ・θi,j /c(1)・χi,j))i,j) …(33)
【0038】
難読化装置は、B(2)=((gc(2)・τ(2)・χi,j)i,j)(i∈{ι(1),...,ι(Γ)},j∈{1,...,n+μ})と正則行列Xを用いることで、gc(2)・τ(2)・χi’,j’=(gc(2)・τ(2)・χi,j)χi’,j’/χi,j(i≠i’,j≠j’)を計算でき、以下のB(2)’を生成できる。
B(2)’=((gχi,j・c(2)・τ(2))i,j) (i,j∈{1,...,n+μ}) …(34)
式(33)(34)より、難読化装置はB(2)’を用いてB(1,2)*を計算することができることが分かる。
【0039】
暗号化装置は、システムパラメータcrs、第1復号装置の公開鍵(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))又は第2復号装置の公開鍵(h(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2))、モード選択パラメータβ、n次元ベクトルx=(xι(1),...,xι(n))∈Fqn、及びメッセージm∈Gを入力とし、メッセージm∈Gの暗号文を生成する機能、及び、暗号文を出力する機能を有する。
【0040】
暗号化装置が第1復号装置で復号可能な暗号文を生成する場合、暗号化装置は、暗号文ct(0,1)(第1暗号文)及び暗号文ct(1,1)(第2暗号文)の何れかを生成する。暗号文ct(0,1)は再暗号化可能なモード(以下「第1モード」という)の暗号文であり、暗号文ct(1,1)は再暗号化不可能なモード(以下「第2モード」という)の暗号文である。本形態の再暗号化方式は「単方向単一ホップ型」であり、第1モードの暗号文が再暗号化されると第2モードの暗号文となる。モード選択パラメータβは、第1モードであるか第2モードであるかを表す。第1モードの場合、モード選択パラメータβが第1値とされ、第2モードの場合、モード選択パラメータβが第2値(≠第1値)とされる。本形態の例では、第1値を「0」とし、第2値を「1」とする(β∈{0,1})。
【0041】
暗号文ct(0,1)は、W(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含む。本形態では暗号文ct(0,1)がさらに第1値のモード選択パラメータβ=0を含む例を示す。しかしながら、モード選択パラメータを用いることなく、何れのモードが用いられたかが他の装置で特定可能なのであれば、暗号文ct(0,1)がモード選択パラメータを含まなくてもよい。
CVはn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))はn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、r, s, ω∈Fqは乱数であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が乱数ζ∈Fqである。CVι(n+1),...,CVι(Γ)からCVκを除いた要素からなるベクトルと上述のRVι(n+1),...,RVι(Γ)からRVκを除いた要素からなるベクトルとの内積が0となる。例えば、CVが3・n+2次元ベクトルCV=(CVι(1),...,CVι(3・n+2))であり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、1個のCVκ∈{CVι(n+1), CVι(n+2)}が乱数ζであり、CVκ以外の1個のCVφ∈{CVι(n+1), CVι(n+2)}が暗号化装置によって選択された乱数ψ∈Fqであり、2・n個のCVι(n+3),...,CVι(3・n+2)のそれぞれが0である。これによりより高い安全性を確保できる。より具体的な例を挙げると、x=(x 1,...,x n),(CV1,...,CVn)=(ω・x1,...,ω・xn)=ω・x,(CVn+1,...,CV2・n)=(0,...,0)=0n,CV2・n+1=ζ,(CV2・n+2,...,CV3・n+1)=(0,...,0)=0n,CV3・n+2=ψであり、CVの例は例えば以下である。
CV=(ω・x,0n,ζ,0n,ψ)∈Fq3・n+2 …(35)
【0042】
暗号文ct(1,1)は、E(1,1)=e1((h(1)a(1))r, t),F(1,1)=e1((h(1)b(1))s, t),G(1,1)=e1((h(1)r+s・m, t))・e1(t~, (h(1)c(1))ζ), Z(1,1)=t, H(1,1)=e1(t~, h(1)ζ)を含む。t, t~∈Gは乱数である。本形態では暗号文ct(1,1)がさらに第2値のモード選択パラメータβ=1を含む例を示す。しかしながら、モード選択パラメータを用いることなく、何れのモードが用いられたかが他の装置で特定可能なのであれば、暗号文ct(1,1)がモード選択パラメータを含まなくてもよい。
【0043】
暗号化装置が第2復号装置で復号可能な暗号文を生成する場合、暗号化装置は、第1モードの暗号文ct(0,2)及び第2モードの暗号文ct(1,2)’の何れかを生成する。
暗号文ct(0,2)は、W(0,2)=(h(2)a(2))r, Θ(0,2)=(h(2)b(2))s, Y(0,2)=h(2)r+s・m,U(0,2)=(CV)B(1), Λ(0,2)=h(2)ζを含む。本形態では暗号文ct(0,2)がさらに第1値のモード選択パラメータβ=0を含む例を示す。しかしながら、モード選択パラメータを用いることなく、何れのモードが用いられたかが他の装置で特定可能なのであれば、暗号文ct(0,2)がモード選択パラメータを含まなくてもよい。
暗号文ct(1,2)’は、E(1,2)’=e1((h(2)a(2))r, t),F(1,2)’=e1((h(2)b(2))s, t),G(1,2)’=e1((h(2)r+s・m, t))・e1(t~, (h(2)c(2))ζ), Z(1,2)’=t, H(1,2)’=e1(t~, h(2)ζ)を含む。本形態では暗号文ct(1,2)’がさらに第2値のモード選択パラメータβ=1を含む例を示す。しかしながら、モード選択パラメータを用いることなく、何れのモードが用いられたかが他の装置で特定可能なのであれば、暗号文ct(1,2)’がモード選択パラメータを含まなくてもよい。
【0044】
再暗号化装置は、第1復号装置の公開鍵pk(1)=(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))、暗号文ct(0,1)、及び再暗号化鍵Obf(rk1→2)を入力とし、第2復号装置が復号可能な暗号文ct(1,2)(再暗号文)を生成する機能、及び、暗号文ct(1,2)を出力する機能を有する。
再暗号化装置は、乱数r’, s’, ζ’∈Fqを用い、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’を得、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)を得、乱数y, y’∈Fq×に対するE(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む暗号文ct(1,2)を生成する。REVはn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}が乱数ζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqである。例えば、REVは3・n+2次元ベクトルREV=(REVι(1),...,REVι(3・n+2))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(3・n+2)}が乱数ζ’であり、REVκを除くREVι(1),...,REVι(3・n+2)が0∈Fqである。より具体的な例を挙げると、(REV1,...,REV2・n)=(0,...,0)=02・n,REV2・n+1=ζ’ ,(REV2・n+2,...,REV3・n+2)=(0,...,0)=0n+1であり、REVの例は以下である。
REV=(0n,0n,ζ’,0n,0)∈Fq3・n+2 …(36)
前述のように、暗号文ct(1,2)は第2モードの暗号文となる。本形態では暗号文ct(1,2)がさらに第2値のモード選択パラメータβ=1を含む例を示す。しかしながら、モード選択パラメータを用いることなく、何れのモードが用いられたかが他の装置で特定可能なのであれば、暗号文ct(1,2)がモード選択パラメータを含まなくてもよい。
【0045】
第1復号装置は、さらに、入力暗号文を復号して復号値m’を得る機能、及び、復号値m’を出力する機能を有する。第1復号装置は、入力暗号文として暗号文ct(0,1)(第1値を表すモード選択パラメータβ=0を含む入力暗号文)が得られた場合にm’=Y(0,1)/(W(0,1)1/a(1)・Θ(0,1)1/b(1))を復号値として得る。第1復号装置は、入力暗号文として暗号文ct(1,1)(第2値を表すモード選択パラメータβ=1を含む入力暗号文)が得られた場合にe1(m’, Z(1,1))=G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}を満たすm’∈Gを復号値として得る。e1(m’, Z(1,1))=G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}を満たすm’∈Gの探索は、例えば、有限体Gの元を全数探索することによって行われる。
【0046】
第2復号装置も、さらに、入力暗号文を復号して復号値m’を得る機能、及び、復号値m’を出力する機能を有する。第2復号装置は、入力暗号文として暗号文ct(0,2)(第1値を表すモード選択パラメータβ=0を含む入力暗号文)が得られた場合にm’=Y(0,2)/(W(0,2)1/a(2)・Θ(0,2)1/b(2))を復号値として得る。第2復号装置は、入力暗号文として暗号文ct(1,2)(第2値を表すモード選択パラメータβ=1を含む入力暗号文)が得られた場合にe1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}を満たすm’∈Gを復号値として得る。e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}を満たすm’∈Gの探索は、例えば、有限体Gの元を全数探索することによって行われる。暗号文ct(1,2)’が得られた場合も同様に、第2復号装置は、e1(m’, Z(1,2)’)=G(1,2)’/{H(1,2)’c(2)・E(1,2)’1/a(2)・F(1,2)’1/b(2)}を満たすm’∈Gを復号値として得る。
【0047】
<復号結果の導出>
以下に復号結果の導出を行う。
[再暗号化前の暗号文ct(0,1)の場合]
以下より正しい復号値が得られることが分かる。
m’=Y(0,1)/(W(0,1)1/a(1)・Θ(0,1)1/b(1))
=h(1)r+s・m/h(1)(r+s)
=m
[再暗号化前の暗号文ct(1,1)の場合]
式(3)より、復号時の探索用の式には以下の関係が成り立つ。
e1(m’, Z(1,1))=e1(m’, t)
G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}
=e1((h(1)r+s・m, t))・e1(t~, (h(1)c(1))ζ)/{e1(t~, h(1)ζ)c(1)・e1((h(1)a(1))r, t)1/a(1)・e1((h(1)b(1))s, t)1/b(1)}
=e1((m, t))・e1(h(1), t)(r+s)・e1(t~, h(1))c(1)・ζ/{e1(t~, h(1))c(1)・ζ・e1(h(1), t)(r+s)}
=e1((m, t))
したがって、正しい復号値が得られることが分かる。
同様に、再暗号化前の暗号文ct(0,2), ct(1,2)’についても正しく復号値が得られることが分かる。
【0048】
[再暗号化によって得られた暗号文ct(1,2)の場合]
式(2)より、暗号文ct(1,2)が含むE(1,2)は以下のように変形できる。
E(1,2)=e1((gτ(1)・a(1))r・(gτ(1)・a(1))r’,(gτ(2)・a(2))z/a(1))y
=e1(gτ(1)・(r+r’),gτ(2)・a(2)・z)y
=e1(g(τ(1)/τ(2))・τ(2)・a(2)・(r+r’),gτ(2)・y・z)
=e1(h(2)(τ(1)/τ(2))・a(2)・(r+r’), h(2)y・z) …(37)
L=τ(2)/τ(1),r-=(r+r’)/L及びt-=h(2)y・zとおくと、式(37)は以下のように表記できる。
E(1,2)=e1(h(2)a(2)・r-, t-) …(38)
ただし、上付き添え字の「r-」は「r-」を表す。
【0049】
式(2)より、暗号文ct(1,2)が含むF(1,2)は以下のように変形できる。
F(1,2)=e1((gτ(1)・b(1))s・(gτ(1)・b(1))s’,(gτ(2)・b(2))z/b(1))y
=e1(gτ(1)・(s+s’),gτ(2)・b(2)・z)y
=e1(gτ(1)・b(2)・(s+s’),gτ(2)・y・z)
=e1(g(τ(1)/τ(2))・τ(2)・b(2)・(s+s’),gτ(2)・y・z)
=e1(h(2)b(2)・(τ(1)/τ(2))・(s+s’), h(2)y・z) …(39)
L=τ(2)/τ(1),s-=(s+s’)/L及びt-=h(2)y・zとおくと、式(39)は以下のように表記できる。
F(1,2)=e1(h(2)b(2)・s-, t-) …(40)
ただし、上付き添え字の「s-」は「s-」を表す。
【0050】
式(2)(21)(28)(30)(33)より、暗号文ct(1,2)が含むG(1,2)は以下のように変形できる。
G(1,2)
=e1(gτ(1)・(r+s)・m・gτ(1)・(r’+s’), gτ(2)・z)y・en+μ((CV+REV)B(1), (RV)B(1,2)*)y’
=e1(gτ(1)・(r+s+r’+s’)・m,gτ(2)・z)y・en+μ((c(1)・τ(1)・CV’)B, ((ρ/c(1))・c(2)・τ(2)・RV)B*)y’
=e1(h(2)(τ(1)/τ(2))・(r+s+r’+s’)・m,h(2)y・z)・e1(g,g)c(2)・τ(1)・τ(2)・ρ・y’・(CV’→・RV→)…(41)
ただし、上付き添え字の「CV’→」は「CV’」を表し、「RV→」は「RV」を表す。CV’はCV’=CV+REVを満たすn+μ次元ベクトルである。n+μ次元ベクトルCVが含む1個の要素CVκ=ζをζ+ζ’に置換したものがCV’となる。
ここで、RV=(RVι(1),...,RVι(n+μ))を構成する(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、1個のRVκが1である。CV=(CVι(1),...,CVι(n+μ))を構成する(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、1個のCVκがζである。(CVι(n+1),...,CVι(Γ))からCVκを除いた要素からなるベクトルとRV=(RVι(n+1),...,RVι(Γ))からRVκを除いた要素からなるベクトルとの内積が0となる。そのため、CV’・RV=ζ+ζ’+ω・σ・x・vとなる。式(32)(35)(36)の具体例を用いて導出すると以下のようになる。
CV’=(ω・x,0n,ζ+ζ’,0n,ψ)
CV’・RV=(ω・x,0n,ζ+ζ’,0n,ψ)・(σ・v,0n,1,η,0)
=ζ+ζ’+ω・σ・x・v
したがって式(41)は以下のように変形できる。
G(1,2)
=e1(h(2)(τ(1)/τ(2))・(r+s+r’+s’)・m,h(2)y・z)・e1(g,g)c(2)・τ(1)・τ(2)・ρ・y’・(ζ+ζ’+ω・σ・x→・v→)
=e1(h(2)(τ(1)/τ(2))・(r+s+r’+s’)・m,h(2)y・z)・e1(h(1)L・ρ・y’, h(2)c(2)・(ζ+ζ’+ω・σ・x→・v→)/L) …(42)
ここで、L=τ(2)/τ(1),ζ-=(ζ+ζ’)/L,ν=(ω・σ・x・v)/L,r-=(r+r’)/L,s-=(s+s’)/L,t-=h(2)y・z及びt-’=h(1)L・ρ・y’とおくと、式(42)は以下のように表記できる。
G(1,2)=e1(h(2)((r-)+(s-))・m,t-)・e1(t-’, h(2)c(2)・((ζ-)+ν)) …(43)
ただし、上付き添え字の「r-」は「r-」を表し、「s-」は「s-」を表し、「ζ-」は「ζ-」を表す。
【0051】
t-=h(2)y・zとおくと、暗号文ct(1,2)が含むZ(1,2)は以下のように表記できる。
Z(1,2)=Z3y=h(2)y・z=t- …(44)
式(2)より、暗号文ct(1,2)が含むH(1,2)は以下のように変形できる。
H(1,2)=e1(h(1)(ζ+ζ’), h(2)ρ)y’
=e1(h(1)ρ・y’, h(2)L・(ζ+ζ’)/L) …(45)
ここでζ-=(ζ+ζ’)/L及びt-’=h(1)L・ρ・y’とおくと、式(45)は以下のように表記できる。
H(1,2)=e1(t-’, h(2)ζ-) …(46)
【0052】
式(38)(40)(43)(44)(46)より、復号時の探索用の式には以下の関係がなりたつ。
e1(m’, Z(1,2))=e1(m’, t-)
G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2)1/b(2)}
=e1(h(2)((r-)+(s-))・m,t-)・e1(t-’, h(2)c(2)・((ζ-)+ν))/{e1(t-’, h(2)ζ-)c(2)・e1(h(2)a(2)・r-, t-)1/a(2)・e1(h(2)b(2)・s-, t-)1/b(2)}
=e1(m, t-)・e1(h(2), t-)((r-)+(s-))・e1(t-’, h(2))c(2)・((ζ-)+ν)/{e1(t-’, h(2))c(2)・ζ-・e1(h(2), t-)((r-)+(s-))}
=e1(m, t-)・e1(t-’, h(2))c(2)・((ζ-)+ν)/e1(t-’, h(2))c(2)・ζ- …(47)
式(47)はν=0すなわち、内積x・v=0の場合にはe1(m, t-)となり、m’=mとなり正しく復号がなされる。一方、内積x・v≠0の場合には式(47)はe1(m, t-)とならず、正しく復号できない。以上より、n次元ベクトルxとn次元ベクトルvとの内積が0のときに復号が可能となる内積述語暗号において、再暗号化方式が実現されたことが分かる。このように本実施形態では、暗号文にn次元ベクトルxを、再暗号化鍵にn次元ベクトルvをそれぞれ埋め込み、x・v=0が成立するか否かによって正しく再暗号化が行われるかを制御することができる。
【0053】
<述語秘匿性>
実施形態のセキュリティシステムは述語秘匿性を有する。述語秘匿性とは、述語暗号方式における鍵に対応するn次元ベクトルvの秘匿性を意味する。「述語秘匿性」という呼び名は、鍵に述語ベクトルが対応し、暗号文に属性ベクトルが対応することを前提としたものである。しかしながら、鍵に属性ベクトルが対応し、暗号文に述語ベクトルが対応してもよい。鍵に対応するn次元ベクトルvが属性ベクトルである場合には「述語秘匿性」とは属性の秘匿性を意味する。これまでの述語暗号方式に述語秘匿性を持つものは存在しない。これは従来の述語暗号方式では、攻撃者が任意のn次元ベクトルv’を用いて鍵を生成し、その鍵で暗号文を復号して正しいメッセージが得られるか否かを探索することで、n次元ベクトルvに関する情報を得ることができるからである。これに対し、本実施形態では、暗号文にn次元ベクトルxを埋め込み、再暗号化鍵にn次元ベクトルvを埋め込む。そのため、攻撃者が任意のn次元ベクトルv’を用いて再暗号化鍵を生成し、その再暗号化鍵で暗号文を再暗号化しても、それによって得られるのは暗号文であり、当該攻撃者はその暗号文が正しく再暗号化されたかを判断することができない。よって、本実施形態では述語秘匿性を実現できる。
【0054】
<再暗号化鍵の難読化>
再暗号化鍵Obf(rk1→2)を含む再暗号化コードが難読化された情報となることを説明する。
[難読化の定義]
入力値INに対してOUT=CODE(IN)を出力するコードCODE、コードCODEに対応する情報Obf(CODE)、任意の入力値INに対して出力値OUT=CODE(IN)を出力するオラクル、仮想的な攻撃者ADV、シミュレータSIM、及び識別器DISを仮定する。攻撃者ADVには情報Obf(CODE)が与えられるが、シミュレータSIMには情報Obf(CODE)が与えられない。攻撃者ADV、シミュレータSIM及び識別器DISは、オラクルORAからコードCODEを与えられないが、オラクルORAに任意の入力値INを与えてそれに対する出力値OUT=CODE(IN)を得ることができる。攻撃者ADVは、情報Obf(CODE)とオラクルORAを用いて得られた情報を識別器DISに与える。シミュレータSIMは、オラクルORAを用いて得られた情報を識別器DISに与える。識別器DISは、オラクルORA及び与えられた情報を用いて当該情報を与えたものが攻撃者ADVであるかシミュレータSIMであるかを識別する。識別器DISは、情報を与えたものが攻撃者ADVであると識別した場合に1を出力し、シミュレータSIMであると識別した場合に0を出力する。以下の条件(I)〜(III)が成り立つ場合、Obf(CODE)はCODEが難読化された情報である。
(I) 任意の入力値INについて、CODE(IN)=Obf(CODE(IN))を満たす。
(II) Obf(CODE(IN))が任意の入力値INのサイズに対する多項式時間で計算可能である。
(III) 任意の攻撃者ADV及び識別器DISに対して以下を満たすシミュレータSIMが存在する。
Pr[DISORA(ADVORA(Obf(CODE)))→1]-Pr[DISORA(SIMORA)→1]<NEGL(sec) …(48)
ただし、Pr[DISORA(ADVORA(Obf(CODE)))→1]は、攻撃者ADVから情報が与えられた識別器DISが当該情報を与えたものが攻撃者ADVであると識別して1を出力する確率を表す。Pr[DISORA(SIMORA)→1]は、シミュレータSIMから情報が与えられた識別器DISが当該情報を与えたものが攻撃者ADVであると識別して1を出力する確率を表す。NEGL(sec)は、無視することができる値を出力する関数である。NEGL(sec)の出力値はセキュリティパラメータsecが大きいほど小さい。
【0055】
[再暗号化鍵Obf(rk1→2)を含む再暗号化コードの難読化]
再暗号化鍵Obf(rk1→2)は、Z1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含む。式(38)(40)(43)(44)(46)より、たとえzやρが定数(例えばz=1、ρ=1)であったとしても再暗号化された暗号文ct(1,2)を生成することはできる。しかし、z及びρを乱数とすることで再暗号化鍵Obf(rk1→2)を含む再暗号化コードが難読化される。比較のため、まずz=1の場合を想定する。
z=1の場合、再暗号化鍵Obf(rk1→2)はZ1=h(2)a(2)/a(1), Z2=h(2)b(2)/b(1), Z3=h(2), k0=h(2)ρ, k*=(RV)B(1,2)*を含む。攻撃者ADVは、再暗号化鍵Obf(rk1→2)及び第1復号装置の公開鍵を用い、以下を計算することができる。
e1(h(2)a(2)/a(1),h(1)a(1))=e1(h(2)a(2),h(1))=Υ …(49)
そのため攻撃者ADVは、Υ=e1(h(2)KEY,h(1))を満たすKEYを探索して秘密鍵a(2)に関する情報を得ることができる。一方、再暗号化鍵Obf(rk1→2)を持たないシミュレータSIMは式(49)の計算によってΥを求めることができず、KEYを探索して秘密鍵a(2)に関する情報を得ることができない。従って式(48)が満たされず、再暗号化鍵Obf(rk1→2)を含む再暗号化コードは難読化されたといえない。
【0056】
次に、zが乱数であると仮定する。乱数zに対するZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含む再暗号化鍵Obf(rk1→2)の場合、攻撃者ADVは、再暗号化鍵Obf(rk1→2)及び第1復号装置の公開鍵を用い、以下を計算することができる。
e1(h(2)a(2)・z/a(1),h(1)a(1))=e1(h(2)a(2)・z,h(1))=Υ’ …(50)
攻撃者ADVは、Υ’=e1(h(2)KEY・z,h(1))を満たすKEY・zを探索することはできるが、zが乱数であるため、Computational Diffie-Hellman仮定が真なのであれば、秘密鍵a(2)に関する情報を得ることができない。同様に攻撃者ADVは、z及びρが乱数で或る場合には、再暗号化鍵Obf(rk1→2)のその他の要素について秘密鍵b(2)やn次元ベクトルvなどの秘密情報を得ることができない。従ってz及びρが乱数である場合には式(48)が満たされ、条件(III)が満たされる。再暗号化鍵Obf(rk1→2)を含む再暗号化コードは、その他の条件(I)(II)も満たすため、難読化されたといえる。
【0057】
<安全性>
本実施形態では高い安全性を有する再暗号化方式を実現できる。特に、RV=(RVι(1),...,RVι(3・n+2))であり、1個のRVκ∈{RVι(n+1), RVι(n+2)}が1∈Fqであり、RVκ以外の1個のRVφ∈{RVι(n+1), RVι(n+2)}が0∈Fqであり、RVε(1),...,RVε(n)∈{RVι(n+3),...,RVι(3・n+2)}が乱数ηε(1),...,ηε(n)∈Fqであり、RVε(1),...,RVε(n)以外のn個のRVυ(1),...,RVυ(n)∈{RVι(n+3),...,RVι(3・n+2)}のそれぞれが0∈Fqであり、CV=(CVι(1),...,CVι(3・n+2))であり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、1個のCVκ∈{CVι(n+1), CVι(n+2)}が乱数ζであり、CVκ以外の1個のCVφ∈{CVι(n+1), CVι(n+2)}が暗号化装置によって選択された乱数ψ∈Fqであり、2・n個のCVι(n+3),...,CVι(3・n+2)のそれぞれが0であり、REV=(REVι(1),...,REVι(3・n+2))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(3・n+2)}が乱数ζ’であり、REVκを除くREVι(1),...,REVι(3・n+2)が0∈Fqである場合(例えば式(32)(35)(36)を満たす場合)、判定線形仮定(DLIN仮定)及び強Diffe-Hellman識別仮定(SDHI仮定)が真であれば、IND-CPA安全であるといえる。
【0058】
〔実施形態〕
次に、図面を参照して実施形態を説明する。
<構成>
図1に例示するように、本形態のセキュリティシステム1は、例えば、パラメータ生成装置11、暗号化装置12、復号装置13,14(第1,2復号装置)、難読化装置15及び再暗号化装置16を有し、これらはネットワークを通じて通信可能に構成されている。本形態では、説明の便宜上、1個のパラメータ生成装置、暗号化装置、難読化装置及び再暗号化装置並びに2個の復号装置を有するセキュリティシステムを例示するが、セキュリティシステムが、より多くのパラメータ生成装置、暗号化装置、難読化装置、再暗号化装置及び復号装置を有していてもよい。或いは、パラメータ生成装置と難読化装置が同一の装置であってもよいし、難読化装置と何れかの復号装置とが同一の装置であってもよい。パラメータ生成装置11、暗号化装置12、復号装置13,14(第1,2復号装置)、難読化装置15及び再暗号化装置16のそれぞれは、例えば、CPU(central processing unit), RAM(random-access memory), ROM(read-only memory)等から構成される公知又は専用のコンピュータに特別なプログラムが読み込まれることで構成される特別な装置である。
【0059】
[暗号化装置12]
図2に例示するように、本形態の暗号化装置12は、入力部12a、インタフェース部12b、一時メモリ12c、記憶部12d、制御部12e、モード切り替え部21f、選択部12g,12h、及び、暗号化部12i,12jを有する。暗号化装置12は制御部12eの制御のもとで各処理を実行する。各処理過程で得られたデータは一時メモリ12cに格納され、一時メモリ12cに格納されたデータは必要に応じて読み出されて他の処理過程で使用される。
【0060】
[復号装置13]
図3に例示するように、本形態の復号装置13は、出力部13a、インタフェース部13b、一時メモリ13c、記憶部13d、制御部13e、選択部13f、公開鍵生成部13g〜13k、モード切り替え部13m、及び、復号部13n,13pを有する。復号装置13は制御部13eの制御のもとで各処理を実行する。各処理過程で得られたデータは一時メモリ13cに格納され、一時メモリ13cに格納されたデータは必要に応じて読み出されて他の処理過程で使用される。
【0061】
[復号装置14]
図4に例示するように、本形態の復号装置14は、出力部14a、インタフェース部14b、一時メモリ14c、記憶部14d、制御部14e、選択部14f、公開鍵生成部14g〜14k、モード切り替え部14m、及び、復号部14n,14pを有する。復号装置14は制御部14eの制御のもとで各処理を実行する。各処理過程で得られたデータは一時メモリ14cに格納され、一時メモリ14cに格納されたデータは必要に応じて読み出されて他の処理過程で使用される。
【0062】
[難読化装置15]
図5に例示するように、本形態の難読化装置15は、入力部15a、インタフェース部15b、一時メモリ15c、記憶部15d、制御部15e、選択部15f,15g、及び、再暗号化鍵生成部15h,15i,15jを有する。難読化装置15は制御部15eの制御のもとで各処理を実行する。各処理過程で得られたデータは一時メモリ15cに格納され、一時メモリ15cに格納されたデータは必要に応じて読み出されて他の処理過程で使用される。
【0063】
[再暗号化装置16]
図6に例示するように、本形態の再暗号化装置16は、インタフェース部16a,16b、一時メモリ16c、記憶部16d、制御部16e、選択部16f,16i、群演算部16ga〜16ge、双線形写像演算部16ha〜16he、及び、再暗号化部16ja〜16jeを有する。再暗号化装置16は制御部16eの制御のもとで各処理を実行する。各処理過程で得られたデータは一時メモリ16cに格納され、一時メモリ16cに格納されたデータは必要に応じて読み出されて他の処理過程で使用される。
【0064】
<処理>
本形態の処理を説明する。本形態では、暗号化装置12が復号装置13で復号可能な暗号文が作成される例を説明する。暗号化装置12で作成された暗号文は、そのまま復号装置13で復号されるか、再暗号化装置16で復号装置14が復号可能な暗号文に再暗号化された後、復号装置14で復号される。
[パラメータ生成]
本形態のパラメータ生成装置11は、前述のようにシステムパラメータcrsを生成し、ネットワークを通じて送信する。システムパラメータcrsは、暗号化装置12、復号装置13,14、難読化装置15及び再暗号化装置16それぞれのインタフェース部12b,13b,14b,15b,16bで受信され、それぞれの記憶部12d,13d,14d,15d,16dに格納される。暗号化装置12、復号装置13,14、難読化装置15及び再暗号化装置16のそれぞれは、必要に応じて記憶部12d,13d,14d,15d,16dに格納されたシステムパラメータcrsを読み出して利用する。難読化装置15の記憶部15dには、さらにシステムパラメータ生成時に生成された正則行列Xが格納される。
【0065】
[秘密鍵及び公開鍵の生成]
図7Aに例示するように、復号装置13(図3)の選択部13fが、乱数a(1), b(1), c(1), τ(1)←U Fq×を一様ランダムに選択し、これらを復号装置13の秘密鍵sk(1)=(a(1), b(1), c(1), τ(1))として記憶部13dに格納する(ステップS101)。
公開鍵生成部13g〜13kは、記憶部13dに格納された秘密鍵sk(1)及びシステムパラメータcrsを用い、それぞれh(1)=gτ(1)∈G, h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^を計算し、それらを復号装置13の公開鍵pk(1)=(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))として記憶部13dに格納する(ステップS102〜S106)。公開鍵pk(1)は、必要に応じてインタフェース部13bから他の装置に対して送信される。秘密鍵sk(1)は一般に公開されないが、難読化装置15のみに対して秘密鍵sk(1)が与えられ、秘密鍵sk(1)が難読化装置15の記憶部15dに格納される。
【0066】
図7Bに例示するように、復号装置14(図4)の選択部14fが、乱数a(2), b(2), c(2), τ(2)←U Fq×を一様ランダムに選択し、これらを復号装置14の秘密鍵sk(2)=(a(2), b(2), c(2), τ(2))として記憶部14dに格納する(ステップS111)。
公開鍵生成部14g〜14kは、記憶部14dに格納された秘密鍵sk(2)及びシステムパラメータcrsを用い、それぞれh(2)=gτ(2)∈G, h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^を計算し、それらを復号装置14の公開鍵pk(2)=(h(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2))として記憶部14dに格納する(ステップS112〜S116)。公開鍵pk(2)は、必要に応じてインタフェース部14bから他の装置に対して送信される。
【0067】
[再暗号化鍵の生成]
難読化装置15(図5)は、ネットワーク及びインタフェース部13bを介して公開鍵pk(2)を取得し、それを記憶部15dに格納する。さらにn次元ベクトルv=(vι(1),...,vι(n))∈Fqnが入力部15aに入力される。図7Cに例示するように、難読化装置15の選択部15fが、乱数z, ρ, σ←U Fq×を一様ランダムに選択し(ステップS121)、選択部15gが、乱数ηε(1),...,ηε(n)∈←U Fqを一様ランダムに選択する。前述のように、乱数η=(ηε(1),...,ηε(n))の一例はη=(η2・n+2,...,η3・n+1)である(ステップS122)。再暗号化鍵生成部15hは、記憶部15dに格納されたシステムパラメータcrsと正則行列Xと公開鍵pk(2)とを用い、前述のB(2)’=c(2)・τ(2)・B(前述の式(34)では乗法的に表記)を生成する(ステップS123)。B(2)’は再暗号化鍵生成部15iに入力される。再暗号化鍵生成部15iは、B(2)’と記憶部15dに格納されたシステムパラメータcrsと正則行列Xと秘密鍵sk(1)とを用い、前述のように(式(33)(34)参照)B(1,2)*=(ρ/c(1))・c(2)・τ(2)B*を計算する(ステップS124)。再暗号化鍵生成部15jは、入力されたn次元ベクトルvと乱数z, ρ, σと乱数ηと、記憶部15dに格納されたシステムパラメータcrsと公開鍵pk(2)とを用い、前述のように、Z1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*からなる再暗号化鍵Obf(rk1→2)を生成する。前述のように、RVの一例はRV=(σ・v,0n,1,η,0)である(ステップS125)。
生成された再暗号化鍵Obf(rk1→2)は、インタフェース部15bに送られ、ネットワークを介して再暗号化装置16に送られる。再暗号化鍵Obf(rk1→2)は、再暗号化装置16(図6)のインタフェース部16bで受信され、記憶部16dに格納される。
【0068】
[暗号化処理]
暗号化装置12(図2)は、ネットワーク及びインタフェース部12bを介して公開鍵pk(1)を取得し、それを記憶部12dに格納する。図8に例示するように、暗号化装置12の入力部12aに、モード選択パラメータβ∈{0,1}、n次元ベクトルx=(xι(1),...,xι(n))∈Fqn、及びメッセージm∈Gが入力される(ステップS131)。選択部12gは、乱数r,s,ζ,ω,ψ←U Fqを一様ランダムに選択する(ステップS132)。モード切り替え部12fは、入力されたモード選択パラメータβに応じて暗号化方法を選択する(ステップS133)。β=0であった場合、モード切り替え部12fは第1モードの暗号化方法を選択する。この場合、暗号化部12iが、記憶部12dに格納されたシステムパラメータcrsと公開鍵pk(1)と、入力されたn次元ベクトルx=(xι(1),...,xι(n))とメッセージmと乱数r,s,ζ,ω,ψとを用い、暗号文ct(0,1)=[0, W(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζ]を生成する。前述のようにCVの一例は、CV=(ω・x,0n,ζ,0n,ψ)である(ステップS134)。β=1であった場合、モード切り替え部12fは第2モードの暗号化方法を選択する。この場合、まず、選択部12hが乱数t, t~U Gを一様ランダムに選択する(ステップS135)。次に、暗号化部12jが、記憶部12dに格納されたシステムパラメータcrsと公開鍵pk(1)と、入力されたn次元ベクトルx=(xι(1),...,xι(n))とメッセージmと乱数r,s,ζ,t, t~とを用い、暗号文ct(1,1)=[1, E(1,1)=e1((h(1)a(1))r, t),F(1,1)=e1((h(1)b(1))s, t),G(1,1)=e1((h(1)r+s・m, t))・e1(t~, (h(1)c(1))ζ), Z(1,1)=t, H(1,1)=e1(t~, h(1)ζ)] を生成する(ステップS136)。生成された暗号文ct(β,1)(β∈{0,1})はインタフェース部13に送られ、そこから送信(出力)される。β=0の場合に生成された暗号文ct(0,1)は、ネットワークを介して復号装置13又は再暗号化装置16に送信され、若しくは、復号装置13に送信された後に再暗号化装置16に転送される。β=1の場合に生成された暗号文ct(1,1)は、ネットワークを介して復号装置13に送信される(ステップS137)。
【0069】
[再暗号化処理]
暗号文ct(0,1)が再暗号化装置16(図6)に送信又は転送された場合、図9に示すように、インタフェース部12bで暗号文ct(0,1)が受信され(暗号文ct(0,1)の入力を受け付け)、暗号文ct(0,1)が記憶部16dに格納される。さらに再暗号化装置16は、ネットワーク及びインタフェース部12bを介して公開鍵pk(1)を取得し、それを記憶部16dに格納する(ステップS141)。選択部16fが、乱数r’, s’, ζ’←U Fqを一様ランダムに選択する(ステップS142)。群演算部16ga〜16geは、入力された乱数r’, s’, ζ’と、記憶部16に格納されたシステムパラメータcrsと暗号文ct(0,1)と公開鍵pk(1)とを用い、W’=W(0,1)・(h(1)a(1))r’,Θ’=Θ(0,1)・(h(1)b(1))s’,Y’=Y(0,1)・h(1)r’+s’,U’=U(0,1)+(REV)B(1),Λ’=Λ(0,1)・h(1)ζ’をそれぞれ計算する(ステップS143〜147)。双線形写像演算部16ha〜16heが、入力されたW’,Θ’,Y’,U’,Λ’と、記憶部16dに格納されたシステムパラメータcrsと再暗号化鍵Obf(rk1→2)とを用い、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)をそれぞれ計算する(ステップS148〜S152)。選択部16iは、乱数y, y’←U Fq×を一様ランダムに選択する(ステップS153)。再暗号化部16ja〜16jeは、入力されたΨ1=, Ψ2, Ψ3, Ω1, Ω2と乱数y, y’とを用い、E(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’をそれぞれ計算する(ステップS153〜S159)。インタフェース部16aは、暗号文ct(1,2)=[1, E(1,2), F(1,2), G(1,2), Z(1,2), H(1,2)]を送信(出力)する。暗号文ct(1,2)はネットワークを介して復号装置14に送信される(ステップS160)。
【0070】
[復号処理]
暗号文ct(β,1)(β∈{0,1})が復号装置13(図3)に送信されると、図10Aに例示するように、暗号文ct(β,1)が復号装置13のインタフェース部13bに受信(入力)される(ステップS161)。モード切り替え部13mは、暗号文ct(β,1)=[β,....]の先頭に位置する「β」が0であるかを判定する(ステップS162)。β=0であれば、復号部13nは、入力された暗号文ct(0,1)と記憶部13dに格納された秘密鍵sk(1)とを用い、m’=Y(0,1)/(W(0,1)1/a(1)・Θ(0,1)1/b(1))を復号値として計算し(ステップS163)、出力部13aが復号値m’を出力する(ステップS165)。β=1であれば、復号部13pは、入力された暗号文ct(1,1)と記憶部13dに格納された秘密鍵sk(1)とを用い、e1(m’, Z(1,1))=G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}を満たすm’∈Gを復号値として計算し(ステップS164)、出力部13aが復号値m’を出力する(ステップS165)。
【0071】
[復号処理]
暗号文ct(β,2)(β∈{0,1})が復号装置14(図4)に送信されると、図10Bに例示するように、暗号文ct(β,2)が復号装置14のインタフェース部14bに受信(入力)される(ステップS171)。モード切り替え部14mは、暗号文ct(β,2)=[β,....]の先頭に位置する「β」が0であるかを判定する(ステップS172)。β=0であれば、復号部14nは、入力された暗号文ct(0,2)=[0, W(0,2)=(h(2)a(2))r, Θ(0,2)=(h(2)b(2))s, Y(0,2)=h(2)r+s・m,U(0,2)=(CV)B(1), Λ(0,2)=h(2)ζ]と、記憶部14dに格納された秘密鍵sk(2)とを用い、m’=Y(0,2)/(W(0,2)1/a(2)・Θ(0,2)1/b(2))を復号値として計算し(ステップS173)、出力部14aが復号値m’を出力する(ステップS175)。β=1であれば、復号部14pは、入力された暗号文ct(1,2)と記憶部14dに格納された秘密鍵sk(2)とを用い、e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2)1/b(2)}を満たすm’∈Gを復号値として計算し(ステップS174)、出力部14aが復号値m’を出力する(ステップS175)。
【0072】
〔変形例等〕
本発明は上述の実施形態に限定されるものではない。例えば、上述の実施形態では、安全性の観点から乱数として一様ランダムな値が用いられたが、用途や利用環境によっては一様ランダムではない乱数が用いられてもよい。また、乱数とは真性乱数及び擬似乱数の両方を含む概念であり、乱数として真性乱数が用いられてもよいし、擬似乱数が用いられてもよい。さらに上述の実施形態で扱った乱数(例えば、t, t~,ρ, σ, r, s, ζ, ω, r’, s’, ζ’, y, y’, z, ηε(1),...,ηε(n))の少なくとも一部が、予め定められた候補の中から選択された値であったり、定数であったりしてもよい。上述のように巡回群G, GTの位数が有限体Fqの位数qと同一である場合に高い安全性を確保できるが、用途によっては巡回群G, GTの位数が有限体Fqの位数と異なっていてもよい。上述の実施形態では、qが素数であって有限体Fqが素体である例を示したが、有限体Fqが拡大体であってもよい。上記の実施形態では、各装置がネットワークを経由して情報を通信する例を示したが、装置間の情報通信の少なくとも一部が、可搬型記録媒体を介した情報のやり取りに置換されてもよい。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0073】
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【0074】
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0075】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0076】
この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0077】
1 セキュリティシステム
11 パラメータ生成装置
12 暗号化装置
13,14 復号装置
15 難読化装置
16 再暗号化装置

【特許請求の範囲】
【請求項1】
暗号化装置と第1復号装置と第2復号装置と再暗号化装置とを有するセキュリティシステムであって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、前記第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、前記第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、
前記暗号化装置は、
r, s, ζ, ω∈Fqを選択する第1選択部と、
前記第1復号装置の公開鍵(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))とn次元ベクトルx=(xι(1),...,xι(n))∈Fqnとを用い、メッセージm∈Gの第1暗号文ct(0,1)を生成する第1暗号化部と、を含み、
前記第1暗号文ct(0,1)がW(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含み、CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が前記ζであり、CVι(n+1),...,CVι(Γ)からCVκを除いた要素からなるベクトルとRVι(n+1),...,RVι(Γ)からRVκを除いた要素からなるベクトルとの内積が0であり、
前記再暗号化装置は、
r’, s’, ζ’∈Fqを選択する第2選択部と、
W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’を得る群演算部と、
Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)を得る双線形写像演算部と、
y, y’∈Fq×に対するE(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)を生成する再暗号化部と、を含み、
REVがn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}が前記ζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqであり、
前記第2復号装置は、
e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}
を満たすm’∈Gを復号値として得る第2復号部を含む、セキュリティシステム。
【請求項2】
請求項1のセキュリティシステムであって、
前記z及びρが乱数である、セキュリティシステム。
【請求項3】
請求項1又は2のセキュリティシステムであって、
前記暗号化装置は、さらに、
t, t~∈Gを選択する第3選択部と、
E(1,1)=e1((h(1)a(1))r, t), F(1,1)=e1((h(1)b(1))s, t), G(1,1)=e1((h(1)r+s・m, t))・e1(t~, (h(1)c(1))ζ), Z(1,1)=t, H(1,1)=e1(t~, h(1)ζ)を含む第2暗号文ct(1,1)を生成する第2暗号化部と、を含む、セキュリティシステム。
【請求項4】
請求項3のセキュリティシステムであって、
前記第1復号装置は、入力暗号文として前記第1暗号文ct(0,1)が得られた場合にm’=Y(0,1)/(W(0,1)1/a(1)・Θ(0,1)1/b(1))を復号値として得、入力暗号文として前記第2暗号文ct(1,1)が得られた場合にe1(m’, Z(1,1))=G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}を満たすm’∈Gを復号値として得る第1復号部を含む、セキュリティシステム。
【請求項5】
請求項3又は4のセキュリティシステムであって、
t, t~∈Gが乱数である、セキュリティシステム。
【請求項6】
請求項1から5の何れかのセキュリティシステムであって、
前記ρ, σ, r, s, ζ, ω, r’, s’, ζ’, y, y’が乱数である、セキュリティシステム。
【請求項7】
請求項1から6の何れかのセキュリティシステムであって、
前記巡回群G, GTの位数がqである、セキュリティシステム。
【請求項8】
請求項1から7の何れかのセキュリティシステムであって、
μ=2・n+2であり、Γ=n+2であり、B^=(bι(1),...,bι(n+2))であり、{ι(n+3),...,ι(3・n+2)}⊂{1,...,3・n+2}であり、RVが3・n+2次元ベクトルRV=(RVι(1),...,RVι(3・n+2))であり、1個のRVκ∈{RVι(n+1), RVι(n+2)}が1であり、RVκ以外の1個のRVφ∈{RVι(n+1), RVι(n+2)}が0であり、n個のRVε(1),...,RVε(n)∈{RVι(n+3),...,RVι(3・n+2)}が乱数ηε(1),...,ηε(n)∈Fqであり、RVε(1),...,RVε(n)以外のn個のRVυ(1),...,RVυ(n)∈{RVι(n+3),...,RVι(3・n+2)}のそれぞれが0であり、CVが3・n+2次元ベクトルCV=(CVι(1),...,CVι(3・n+2))であり、1個のCVκ∈{CVι(n+1), CVι(n+2)}が前記ζであり、CVκ以外の1個のCVφ∈{CVι(n+1), CVι(n+2)}が乱数ψ∈Fqであり、2・n個のCVι(n+3),...,CVι(3・n+2)のそれぞれが0である、セキュリティシステム。
【請求項9】
選択部と暗号化部とを有する暗号化装置であって、
Gが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqnに対する(d)BがΣi=1n+μdi・biであり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、
前記選択部が、r, s, ζ, ω∈Fqを選択し、
前記暗号化部が、前記第1復号装置の公開鍵(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))とn次元ベクトルx=(xι(1),...,xι(n))∈Fqnとを用い、メッセージm∈Gの第1暗号文ct(0,1)を生成し、前記第1暗号文ct(0,1)がW(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含み、CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が前記ζである、暗号化装置。
【請求項10】
インタフェース部と復号部とを有する復号装置であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=( bι(1),...,bι(Γ))であり、当該復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、当該復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、他の復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記他の復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、
前記インタフェース部が、W(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含む第1暗号文ct(0,1)、又は、E(1,1)=e1((h(1)a(1))r, t), F(1,1)=e1((h(1)b(1))s, t), G(1,1)=e1((h(1)r+s・m, t))・e1(t~, (h(1)c(1))ζ), Z(1,1)=t, H(1,1)=e1(t~, h(1)ζ)を含む第2暗号文ct(1,1)である入力暗号文の入力を受け付け、CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が前記ζであり、CVι(n+1),...,CVι(Γ)からCVκを除いた要素からなるベクトルとRVι(n+1),...,RVι(Γ)からRVκを除いた要素からなるベクトルとの内積が0であり、
前記復号部が、入力暗号文として前記第1暗号文ct(0,1)が前記インタフェース部に入力された場合にm’=Y(0,1)/(W(0,1)1/a(1)・Θ(0,1)1/b(1))を復号値として得、入力暗号文として前記第2暗号文ct(1,1)が前記インタフェース部に入力された場合にe1(m’, Z(1,1))=G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}を満たすm’∈Gを復号値として得る、復号装置。
【請求項11】
インタフェース部と復号部とを有する復号装置であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、当該復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、当該復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、他の復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記他の復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’であり、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)であり、REVがn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}が前記ζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqであり、
前記インタフェース部が、E(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)の入力を受け付け、
前記復号部が、e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}
を満たすm’∈Gを復号値として得る、復号装置。
【請求項12】
選択部と群演算部と双線形写像演算部と再暗号化部とを有する再暗号化装置であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、
前記選択部が、r’, s’, ζ’∈Fqを選択し、
前記群演算部が、W(0,1), Θ(0,1), Y(0,1), U(0,1), Λ(0,1)を含む第1暗号文ct(0,1)に対して、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’を得、REVがn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}が前記ζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqであり、
前記双線形写像演算部が、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)を得、
前記再暗号化部が、y, y’∈Fq×に対するE(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)を生成する、再暗号化装置。
【請求項13】
選択部と再暗号化鍵生成部とを有する難読化装置であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、
前記選択部が、z, ρ, σ∈Fq×を生成し、
前記再暗号化鍵生成部が、n次元ベクトルv=(vι(1),...,vι(n))∈Fqnに対して、Z1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含む再暗号化鍵を生成し、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1である、難読化装置。
【請求項14】
請求項13の難読化装置であって、
前記z及びρが乱数である、難読化装置。
【請求項15】
暗号化装置で、r, s, ζ, ω∈Fqを選択するステップと、
前記暗号化装置で、第1復号装置の公開鍵(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))とn次元ベクトルx=(xι(1),...,xι(n))∈Fqnとを用い、メッセージm∈Gの第1暗号文ct(0,1)を生成するステップと、
再暗号化装置で、r’, s’, ζ’∈Fqを選択するステップと、
前記再暗号化装置で、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’を得るステップと、
前記再暗号化装置で、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)を得るステップと、
前記再暗号化装置で、y, y’∈Fq×に対するE(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)を生成するステップと、
第2復号装置で、e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}を満たすm’∈Gを復号値として得るステップと、を有し、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、前記第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、前記第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、前記第1暗号文ct(0,1)がW(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含み、CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が前記ζであり、CVι(n+1),...,CVι(Γ)からCVκを除いた要素からなるベクトルとRVι(n+1),...,RVι(Γ)からRVκを除いた要素からなるベクトルとの内積が0であり、REVがn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}が前記ζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqである、セキュリティ方法。
【請求項16】
選択部と暗号化部とを有する暗号化装置が実行する暗号化方法であって、
Gが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、
前記選択部で、r, s, ζ, ω∈Fqを選択するステップと、
前記暗号化部で、前記第1復号装置の公開鍵(h(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1))とn次元ベクトルx=(xι(1),...,xι(n))∈Fqnとを用い、メッセージm∈Gの第1暗号文ct(0,1)を生成するステップと、を有し、
前記第1暗号文ct(0,1)がW(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含み、CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が前記ζである暗号化方法。
【請求項17】
インタフェース部と復号部とを有する復号装置が実行する復号方法であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、当該復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、当該復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、他の復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記他の復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、
前記インタフェース部で、W(0,1)=(h(1)a(1))r, Θ(0,1)=(h(1)b(1))s, Y(0,1)=h(1)r+s・m,U(0,1)=(CV)B(1), Λ(0,1)=h(1)ζを含む第1暗号文ct(0,1)、又は、E(1,1)=e1((h(1)a(1))r, t), F(1,1)=e1((h(1)b(1))s, t), G(1,1)=e1((h(1)r+s・m, t))・e1(t~, (h(1)c(1))ζ), Z(1,1)=t, H(1,1)=e1(t~, h(1)ζ)を含む第2暗号文ct(1,1)である入力暗号文の入力を受け付けるステップと、
入力暗号文として前記第1暗号文ct(0,1)が前記インタフェース部に入力された場合に、前記復号部で、m’=Y(0,1)/(W(0,1)1/a(1)・Θ(0,1)1/b(1))を復号値として得、入力暗号文として前記第2暗号文ct(1,1)が前記インタフェース部に入力された場合に、前記復号部で、e1(m’, Z(1,1))=G(1,1)/{H(1,1)c(1)・E(1,1)1/a(1)・F(1,1)1/b(1)}を満たすm’∈Gを復号値として得るステップと、を有し、
CVがn+μ次元ベクトルCV=(CVι(1),...,CVι(n+μ))∈Fqn+μであり、(CVι(1),...,CVι(n))がn次元ベクトルω・x=(ω・xι(1),...,ω・xι(n))であり、何れか1個のCVκ∈{CVι(n+1),...,CVι(Γ)}が前記ζであり、CVι(n+1),...,CVι(Γ)からCVκを除いた要素からなるベクトルとRVι(n+1),...,RVι(Γ)からRVκを除いた要素からなるベクトルとの内積が0である、復号方法。
【請求項18】
インタフェース部と復号部とを有する復号装置が実行する復号方法であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、当該復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、当該復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、他の復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記他の復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’であり、REVがn+μ次元ベクトルREV=(REVι(1),...,REVι(n+μ))∈Fqn+μであり、何れか1個のREVκ∈{REVι(1),...,REVι(n+μ)}が前記ζ’であり、REVκを除くREVι(1),...,REVι(n+μ)が0∈Fqであり、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)であり、
前記インタフェース部で、E(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)の入力を受け付けるステップと、
前記復号部で、e1(m’, Z(1,2))=G(1,2)/{H(1,2)c(2)・E(1,2)1/a(2)・F(1,2) 1/b(2)}
を満たすm’∈Gを復号値として得るステップと、を有する復号方法。
【請求項19】
選択部と群演算部と双線形写像演算部と再暗号化部とを有する再暗号化装置が実行する再暗号化方法であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、z, ρ, σ∈Fq×であり、vがn次元ベクトルv=(vι(1),...,vι(n))∈Fqnであり、B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、再暗号化鍵がZ1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含み、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1であり、ξが1以上の整数であり、eξが直積群Gξ×Gξの元に対して前記巡回群GTの元を得る双線形写像であり、
前記選択部で、r’, s’, ζ’∈Fqを選択するステップと、
前記群演算部で、W(0,1), Θ(0,1), Y(0,1), U(0,1), Λ(0,1)を含む第1暗号文ct(0,1)に対して、W’=W(0,1)・(h(1)a(1))r’, Θ’=Θ(0,1)・(h(1)b(1))s’, Y’=Y(0,1)・h(1)r’+s’, U’=U(0,1)+(REV)B(1), Λ’=Λ(0,1)・h(1)ζ’を得るステップと、
前記双線形写像演算部で、Ψ1=e1(W’,Z1), Ψ2=e1(Θ’,Z2), Ψ3=e1(Y’,Z3), Ω1=en+μ(U’,k*), Ω2=e1(Λ’,k0)を得るステップと、
前記再暗号化部で、y, y’∈Fq×に対するE(1,2)=Ψ1y, F(1,2)=Ψ2y, G(1,2)=Ψ3y・Ω1y’, Z(1,2)=Z3y, H(1,2)=Ω2y’を含む再暗号文ct(1,2)を生成するステップと、
を有する再暗号化方法。
【請求項20】
選択部と再暗号化鍵生成部とを有する難読化装置が実行する鍵難読化方法であって、
G, GTが巡回群であり、gが前記巡回群Gの生成元であり、Fqが位数qの有限体であり、Fq×=Fq\{0}であり、nが1以上の整数であり、μが2以上の整数であり、bi∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B=(b1,...,bn+μ)がn+μ個の前記基底ベクトルbi(i=1,...,n+μ)からなる基底であり、bi*∈Gn+μ(i=1,...,n+μ)のそれぞれが前記巡回群Gのn+μ個の元を要素とするn+μ次元の基底ベクトルであり、B*=(b1*,...,bn+μ*)がn+μ個の前記基底ベクトルbi*(i=1,...,n+μ)からなる基底であり、前記基底Bと前記基底B*とは双対直交基底であり、n+μ次元ベクトルd=(d1,...,dn+μ)∈Fqn+μに対する(d)BがΣi=1n+μdi・biであり、n+μ次元ベクトルf=(f1,...,fn+μ)∈Fqn+μに対する(f)B*がΣi=1n+μfi・bi*であり、Γがn+1≦Γ<n+μの整数であり、{ι(1),...,ι(Γ)}⊂{1,...,n+μ}であり、B^=(bι(1),...,bι(Γ))であり、第1復号装置の秘密鍵がa(1), b(1), c(1), τ(1)∈Fq×であり、前記第1復号装置の公開鍵が(h(1)=gτ(1), h(1)a(1), h(1)b(1), h(1)c(1), B(1)=c(1)・τ(1)・B^)であり、第2復号装置の秘密鍵がa(2), b(2), c(2), τ(2)∈Fq×であり、前記第2復号装置の公開鍵が(h(2)=gτ(2), h(2)a(2), h(2)b(2), h(2)c(2), B(2)=c(2)・τ(2)・B^)であり、
前記選択部で、z, ρ, σ∈Fq×を生成するステップと、
前記再暗号化鍵生成部で、n次元ベクトルv=(vι(1),...,vι(n))∈Fqnに対して、Z1=(h(2)a(2))z/a(1), Z2=(h(2)b(2))z/b(1), Z3=h(2)z, k0=h(2)ρ, k*=(RV)B(1,2)*を含む再暗号化鍵を生成するステップと、を有し、
B(1,2)*=(ρ/c(1))・c(2)・τ(2)・B*であり、RVがn+μ次元ベクトルRV=(RVι(1),...,RVι(n+μ))∈Fqn+μであり、ι(i)∈{1,...,n+μ}(i=1,...,n+μ)であり、{ι(1),...,ι(n)}⊂{1,...,n+μ}であり、(RVι(1),..., RVι(n))がn次元ベクトルσ・v=(σ・vι(1),...,σ・vι(n))であり、何れか1個のRVκ∈{RVι(n+1),...,RVι(Γ)}が1である、難読化方法。
【請求項21】
請求項20の難読化方法であって、
前記z及びρが乱数である、難読化方法。
【請求項22】
請求項9の暗号化装置としてコンピュータを機能させるためのプログラム。
【請求項23】
請求項10又は11の復号装置としてコンピュータを機能させるためのプログラム。
【請求項24】
請求項12の再暗号化装置としてコンピュータを機能させるためのプログラム。
【請求項25】
請求項13又は14の難読化装置としてコンピュータを機能させるためのプログラム。

【図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