説明

暗号処理システム、暗号処理方法、暗号処理プログラム及び鍵生成装置

【課題】公開パラメータやマスター秘密鍵のサイズを小さくするとともに、ユーザへ与える秘密鍵の生成の処理や暗号化の処理にかかる時間を短くすることを目的とする。
【解決手段】鍵生成装置100は、各行各列に少なくとも1つは0以外の値を有する疎行列を用いて、公開パラメータやマスター秘密鍵となる基底Bと基底Bとを生成する。暗号化装置200は、基底Bにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成し、復号装置300は、基底Bにおける所定のベクトルを鍵ベクトルとして、暗号ベクトルと鍵ベクトルとについてペアリング演算を行い暗号ベクトルを復号する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、内積暗号(Inner−Product Encryption,IPE)に関するものである。
【背景技術】
【0002】
非特許文献13,16,17には内積暗号についての記載がある。
非特許文献13,16,17に記載された内積暗号では、公開パラメータやマスター秘密鍵は、ベクトル空間の基底で与えられる。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Abdalla,M., Kiltz, E., Neven,G.: Generalized key delegation for hierarchical identity−based encryption. ESORICS’07, LNCS 4734, pp. 139−154. Springer, (2007)
【非特許文献2】Attrapadung, N., Libert, B.: Functional encryption for inner product: Achieving constant−size ciphertexts with adaptive security or support for negation. PKC 2010. LNCS, vol. 6056, pp. 384−402. Springer Heidelberg (2010)
【非特許文献3】Attrapadung, N., Libert, B., De Panafieu, E.: Expressive key−policy attribute−based encryption with constant−size ciphertexts. PKC 2011. LNCS, vol. 6571, pp. 90−108. Springer Heidelberg (2011)
【非特許文献4】Bethencourt, J., Sahai, A.,Waters, B.: Ciphertext−policy attribute−based encryption. In:2007 IEEE Symposium on Security and Privacy, pp. 321−334. IEEE Press (2007)
【非特許文献5】Boneh, D., Hamburg, M.: Generalized identity based and broadcast encryption scheme. In:Pieprzyk, J. (ed.) ASIACRYPT 2008. LNCS, vol. 5350, pp. 455−470. Springer Heidelberg (2008)
【非特許文献6】Delerablee, C.: Identity−based broadcast encryption with constant size ciphertexts and private keys. In: ASIACRYPT 2007, LNCS, pp. 200−215. Springer−Verlag (2007)
【非特許文献7】Emura, K., Miyaji, A., Nomura, A., Omote, K., Soshi, M.: A ciphertext−policy attribute−based encryption scheme with constant ciphertext length. Proceedings of ISPEC 2009, LNCS, pp. 13−23. Springer−Verlag (2009)
【非特許文献8】Gentry, C., Waters, B.: Adaptive security in broadcast encryption systems (with short ciphertexts). In: Joux, A. (ed.) EUROCRYPT 2009. LNCS, vol. 5479, pp. 171−188. Springer Heidelberg (2009)
【非特許文献9】Goyal, V., Pandey, O., Sahai, A., Waters, B.: Attribute−based encryption for fine−grained access control of encrypted data. In: ACM Conference on Computer and Communication Security 2006, pp. 89−98, ACM (2006)
【非特許文献10】Herranz, J., Laguillaumie, F., Rafols, C.: Constant size ciphertexts in thereshold attribute−based encryption, In Nguyen, P.Q., Pointcheval, D. (eds.) PKC 2010. LNCS, vol. 6056, pp. 19−34. Springer Heidelberg (2010)
【非特許文献11】Katz, J., Sahai, A., Waters, B.: Predicate encryption supporting disjunctions, polynomial equations, and inner products. In: Smart, N.P. (ed.) EUROCRYPT 2008. LNCS, vol. 4965, pp. 146−162. Springer Heidelberg (2008)
【非特許文献12】Lewko, A., Sahai, A., Waters, B.: Revocation systems with very small private keys, In IEEE Symposium on Security and Privacy 2010 (2010)
【非特許文献13】Lewko, A., Okamoto, T., Sahai, A., Takashima, K., Waters, B.: Fully secure functional encryption: Attribute−based encryption and (hierarchical) inner product encryption, EUROCRYPT 2010. LNCS, Springer Heidelberg (2010) Full version is available at http://eprint.iacr.org/2010/110
【非特許文献14】Lewko, A.B., Waters, B.: New techniques for dual system encryption and fully secure HIBE with short ciphertexts. In: Micciancio, D. (ed.) TCC 2010. LNCS, vol. 5978, pp. 455−479. Springer Heidelberg (2010)
【非特許文献15】Okamoto, T., Takashima, K.: Homomorphic encryption and signatures from vector decomposition. In: Galbraith, S.D., Paterson, K.G. (eds.) Pairing 2008. LNCS, vol. 5209, pp. 57−74, Springer Heidelberg (2008)
【非特許文献16】Okamoto, T., Takashima, K.: Hierarchical predicate encryption for inner−products, In: Matsui, M. (ed.) ASIACRYPT 2009. LNCS, vol. 5912, pp. 214−231. Springer Heidelberg (2009)
【非特許文献17】Okamoto, T., Takashima, K.: Fully secure functional encryption with general relations from the decisional linear assumption. In: Rabin, T. (ed.) CRYPTO 2010. LNCS, vol. 6223, pp. 191−208. Springer Heidelberg (2010). Full version is available at http://eprint.iacr.org/2010/563
【非特許文献18】Sahai, A., Waters, B.: Fuzzy identity−based encryption. In: Cramer, R. (ed.) EUROCRYPT 2005. LNCS, vol. 3494, pp. 457−473. Springer Heidelberg (2005)
【非特許文献19】Sakai, R., Furukawa, J.: Identity−based broadcast encryption, IACR ePrint Archive: Report 2007/217 http://eprint.iacr.org/2007/217 (2007).
【非特許文献20】Waters, B.: Dual system encryption: realizing fully secure IBE and HIBE under simple assumptions. In: Halevi, S. (ed.) CRYPTO 2009. LNCS, vol. 5677, pp. 619−636. Springer Heidelberg (2009)
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献13,16,17に記載された内積暗号では、内積暗号に用いるベクトルの長さをNとすると、公開パラメータやマスター秘密鍵のサイズはNに比例し、ユーザへ与える秘密鍵の生成や暗号化の処理にNに比例する時間がかかる。
この発明は、公開パラメータやマスター秘密鍵のサイズを小さくするとともに、ユーザへ与える秘密鍵の生成の処理や暗号化の処理にかかる時間を短くすることを目的とする。
【課題を解決するための手段】
【0005】
この発明に係る暗号処理システムは、
各行各列に少なくとも1つは0以外の値を有する疎行列を用いて所定の基底Aを変形して生成された基底Bと基底Bを利用し、暗号処理を行う暗号処理システムであり、
前記基底Bにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成する暗号化装置と、
前記基底Bにおける所定のベクトルを鍵ベクトルとして、前記暗号化装置が生成した暗号ベクトルと前記鍵ベクトルとについて、ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号装置と
を備えることを特徴とする。
【発明の効果】
【0006】
この発明に係る暗号処理システムでは、公開パラメータやマスター秘密鍵となる基底Bと基底Bとを生成するために用いる行列に疎行列を用いる。これにより、公開パラメータやマスター秘密鍵のサイズが小さくなるとともに、ユーザへ与える秘密鍵の生成の処理や暗号化の処理にかかる時間が短くなる。
【図面の簡単な説明】
【0007】
【図1】零内積暗号方式と非零内積暗号方式とを実行する暗号処理システム10の構成図。
【図2】ランダムな線形変換Xの特別な形式の説明図。
【図3】実施の形態2に係る鍵生成装置100の構成図。
【図4】実施の形態2に係る暗号化装置200の構成図。
【図5】実施の形態2に係る復号装置300の構成図。
【図6】実施の形態2に係るSetupアルゴリズムの処理を示すフローチャート。
【図7】実施の形態2に係るKeyGenアルゴリズムの処理を示すフローチャート。
【図8】実施の形態2に係るEncアルゴリズムの処理を示すフローチャート。
【図9】実施の形態2に係るDecアルゴリズムの処理を示すフローチャート。
【図10】実施の形態3に係るSetupアルゴリズムの処理を示すフローチャート。
【図11】実施の形態3に係るKeyGenアルゴリズムの処理を示すフローチャート。
【図12】実施の形態3に係るEncアルゴリズムの処理を示すフローチャート。
【図13】実施の形態3に係るDecアルゴリズムの処理を示すフローチャート。
【図14】実施の形態4に係るSetupアルゴリズムの処理を示すフローチャート。
【図15】実施の形態4に係るKeyGenアルゴリズムの処理を示すフローチャート。
【図16】実施の形態4に係るEncアルゴリズムの処理を示すフローチャート。
【図17】実施の形態4に係るDecアルゴリズムの処理を示すフローチャート。
【図18】実施の形態5に係るSetupアルゴリズムの処理を示すフローチャート。
【図19】実施の形態5に係るKeyGenアルゴリズムの処理を示すフローチャート。
【図20】実施の形態5に係るEncアルゴリズムの処理を示すフローチャート。
【図21】実施の形態5に係るDecアルゴリズムの処理を示すフローチャート。
【図22】実施の形態2−4で説明した非零内積暗号方式及び零内積暗号方式と、非特許文献2に記載された非零内積暗号方式及び零内積暗号方式とを比較した図。
【図23】鍵生成装置100、暗号化装置200、復号装置300、鍵委譲装置400のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【0008】
以下、図に基づき、発明の実施の形態を説明する。
以下の説明において、処理装置は後述するCPU911等である。記憶装置は後述するROM913、RAM914、磁気ディスク920等である。通信装置は後述する通信ボード915等である。入力装置は後述するキーボード902、通信ボード915等である。出力装置は後述するRAM914、磁気ディスク920、通信ボード915、LCD901等である。つまり、処理装置、記憶装置、通信装置、入力装置、出力装置はハードウェアである。
【0009】
以下の説明における記法について説明する。
Aがランダムな変数または分布であるとき、数101は、Aの分布に従いAからyをランダムに選択することを表す。つまり、数101において、yは乱数である。
【数101】

Aが集合であるとき、数102は、Aからyを一様に選択することを表す。つまり、数102において、yは一様乱数である。
【数102】

ベクトル表記は、位数qの有限体Fにおけるベクトル表示を表す。例えば、数103である。
【数103】

数104は、数105に示す2つのベクトルxとvとの数106に示す内積を表す。
【数104】

【数105】

【数106】

は、行列Xの転置行列を表す。
(i=1,...,n)が空間Vのベクトルの要素であるとき、つまり、数107であるとき、数108は、数109によって生成される部分空間を表す。
【数107】

【数108】

【数109】

数110に示す基底Bと基底Bとに対して、数111である。
【数110】

【数111】

j=1,...,nのn個のベクトルに対して、eは、数112に示す標準基底ベクトルを示す。
【数112】

GL(n,F)は、有限体Fにおける次数nの一般線形群を表す。
【0010】
また、以下の説明において、ベクトルを意味する“→”が下付き文字又は上付き文字に付されている場合、この“→”は下付き文字又は上付き文字に上付きで付されていることを意味する。同様に、基底Bにおける“*”が下付き文字又は上付き文字に付されている場合、この“*”は下付き文字又は上付き文字に上付きで付されていることを意味する。また、同様に、空間Vにおけるtが下付き文字又は上付き文字に付されている場合、この“t”は下付き文字又は上付き文字に下付きで付されていることを意味する。
【0011】
また、以下の説明において、暗号処理とは、暗号化処理、復号処理、鍵生成処理を含むものである。
【0012】
実施の形態1.
この実施の形態では、内積暗号を実現する基礎となる概念と、内積暗号の構成とについて説明する。
第1に、内積暗号の概念を説明する。
第2に、内積暗号を実現するための空間である双対ペアリングベクトル空間(Dual Pairing Vector Spaces,DPVS)を説明する。
第3に、以下の実施の形態で説明する内積暗号方式の基本構成を説明する。
第4に、以下の実施の形態で説明する内積暗号方式を実行する暗号処理システム10の基本構成を説明する。
第5に、以下の実施の形態で説明する内積暗号方式の基本的な考え方を説明する。
【0013】
<第1.内積暗号の概念>
まず、関数型暗号(Functional Encryption)について説明する。
関数型暗号は、進歩した暗号の概念である。また、関数型暗号は、公開鍵暗号(Public−Key Encryption,PKE)やIDベース暗号(Identity−Based Encryption,IBE)の一般化である。関数型暗号システムでは、暗号文を特定するパラメータyにパラメータxが適切に関連付けられているなら、受信者はパラメータxに対応する秘密鍵を用いて暗号文を復号できる。つまり、復号には、ある関係R((x,y)に対して成立する関係R)に対してR(x,y)=1ことが必要である。
【0014】
内積暗号は、関数型暗号の一種である。
内積暗号には、零内積暗号(Zero Inner Product Encryption,ZIPE)と、非零内積暗号(Non−zero Inner Product Encryption,NIPE)とがある。
【0015】
零内積暗号では、ベクトルxに対して暗号化された暗号文は、x・y=0であるベクトルyと関連付けられた秘密鍵で復号することができる。つまり、x・y=0である場合に限り、RZIPE(x,y)=1であることが必要である。
【0016】
非零内積暗号では、ベクトルxに対して暗号化された暗号文は、x・y≠0であるベクトルyと関連付けられた秘密鍵で復号することができる。つまり、x・y≠0である場合に限り、RNIPE(x,y)=1であることが必要である。
【0017】
<第2.双対ペアリングベクトル空間>
まず、対称双線形ペアリング群(Symmetric Bilinear Pairing Groups)について説明する。
対称双線形ペアリング群(q,G,G,g,e)は、素数qと、位数qの巡回加法群Gと、位数qの巡回乗法群Gと、要素g≠0∈Gと、多項式時間で計算可能な非退化双線形ペアリング(Nondegenerate Bilinear Pairing)e:G×G→Gとの組である。非退化双線形ペアリングは、e(sg,tg)=e(g,g)stであり、e(g,g)≠1である。
以下の説明において、Gbpgを、1λを入力として、セキュリティパラメータをλとする双線形ペアリング群のパラメータparam:=(q,G,G,g,e)の値を出力するアルゴリズムとする。
【0018】
次に、双対ペアリングベクトル空間について説明する。
双対ペアリングベクトル空間(q,V,G,A,e)は、対称双線形ペアリング群(param:=(q,G,G,g,e))の直積によって構成することができる。双対ペアリングベクトル空間(q,V,G,A,e)は、素数q、数113に示す有限体F上のN次元ベクトル空間V、位数qの巡回群G、空間Vの標準基底A:=(a,...,a)の組であり、以下の演算(1)(2)を有する。ここで、aは、数114に示す通りである。
【数113】

【数114】

【0019】
演算(1):非退化双線形ペアリング
空間Vにおけるペアリングは、数115によって定義される。
【数115】

これは、非退化双線形である。つまり、e(sx,ty)=e(x,y)stであり、全てのy∈Vに対して、e(x,y)=1の場合、x=0である。また、全てのiとjとに対して、e(a,a)=e(g,g)δi,jである(このδi,jはδi,jを意味する)。ここで、i=jであれば、δi,j=1であり、i≠jであれば、δi,j=0である。また、e(g,g)≠1∈Gである。
【0020】
演算(2):標準写像
数116に示す空間Vにおける線形変換φi,jは、数117によって容易に実現することができる。
【数116】

【数117】

ここで、線形変換φi,jを標準写像と呼ぶ。
【0021】
以下の説明において、Gdpvsを、1λ(λ∈自然数)、N∈自然数を入力として、セキュリティパラメータがλであり、N次元の空間Vとする双対ペアリングベクトル空間のパラメータparam:=(q,V,G,A,e)の値を出力するアルゴリズムとする。
【0022】
なお、ここでは、上述した対称双線形ペアリング群により、双対ペアリングベクトル空間を構成した場合について説明する。非対称双線形ペアリング群により双対ペアリングベクトル空間を構成することも可能である。以下の説明を、非対称双線形ペアリング群により双対ペアリングベクトル空間を構成した場合に応用することは容易である。
【0023】
<第3.内積暗号方式の基本構成>
まず、零内積暗号方式について説明する。
零内積暗号方式における関係RZIPEは、ベクトルx∈F\{0}と、ベクトルv∈F\{0}とにおいて定義される。そして、x・v=0である場合に限り、関係RZIPE(x,v):=1である。
同様に、非零内積暗号方式における関係RNIPEは、ベクトルx∈F\{0}と、ベクトルv∈F\{0}とにおいて定義される。そして、x・v≠0である場合に限り、関係RNIPE(x,v):=1である。
【0024】
零内積暗号方式と非零内積暗号方式とは、Setup、KeyGen、Enc、Decの4つのアルゴリズムを備える。
(Setup)
Setupアルゴリズムは、セキュリティパラメータλが入力され、公開パラメータpkと、マスター秘密鍵skとを出力する確率的アルゴリズムである。
(KeyGen)
KeyGenアルゴリズムは、ベクトルvと、公開パラメータpkと、マスター秘密鍵skとを入力として、復号鍵skv→を出力する確率的アルゴリズムである。
(Enc)
Encアルゴリズムは、メッセージmと、ベクトルxと、公開パラメータpkとを入力として、暗号文ctx→を出力する確率的アルゴリズムである。
(Dec)
Decアルゴリズムは、ベクトルxの下で暗号化された暗号文ctx→と、ベクトルvに対する復号鍵skv→と、公開パラメータpkとを入力として、メッセージm、又は、識別情報⊥を出力するアルゴリズムである。識別情報⊥は、復号できなかったことを示す情報である。
【0025】
<第4.暗号処理システム10の基本構成>
図1は、零内積暗号方式と非零内積暗号方式とを実行する暗号処理システム10の構成図である。
鍵生成装置100は、セキュリティパラメータλを入力としてSetupアルゴリズムを実行して、公開パラメータpkとマスター秘密鍵skとを生成する。そして、鍵生成装置100は、生成した公開パラメータpkを公開する。また、鍵生成装置100は、ベクトルvを入力としてKeyGenアルゴリズムを実行して、復号鍵skv→を生成して復号装置300へ秘密裡に配布する。
暗号化装置200は、メッセージmと、ベクトルxと、公開パラメータpkとを入力としてEncアルゴリズムを実行して、暗号文ctx→を生成する。暗号化装置200は、生成した暗号文ctx→を復号装置300へ送信する。
復号装置300は、公開パラメータpkと、復号鍵skv→と、暗号文ctx→とを入力としてDecアルゴリズムを実行して、メッセージm’(=m)又は識別情報⊥を出力する。
【0026】
<第5.暗号方式の基本的な考え方>
双対ペアリングベクトル空間を暗号処理に適用した典型的なアプリケーションでは、双対基底(又は正規直交基底)のペアである基底Bと基底Bとが生成される。基底Bと基底Bとは、GL(N,F)から一様に選択された、完全にランダムな線形変換X(基底変換行列)を用いて生成される。特に、基底Bと基底Bとは、それぞれ、線形変換Xと、(X−1とにより、標準基底Aを変換して生成される。なお、Nは、span<B>とspan<B>との次元数である。
そして、双対ペアリングベクトル空間を暗号処理に適用した典型的なアプリケーションでは、基底Bの一部(B^という)が公開パラメータとして用いられ、これに対応する基底Bの一部(B^という)が秘密鍵又はトラップドアとして用いられる。
【0027】
以下の実施の形態で説明する内積暗号では、上述した完全にランダムな線形変換Xに代えて、X∈GL(N,F)であるランダムな線形変換Xの特別な形式を用いる。この特別な形式の線形変換Xにより、暗号文又は秘密鍵のサイズを小さくすることができるとともに、処理に時間のかかるペアリング演算の数を減らすことができる。
【0028】
図2は、特別な形式の線形変換Xの説明図である。
図2(a)は、完全にランダムな線形変換Xを示し、図2(b)は、特別な形式の線形変換Xを示す。図2(a)(b)において、四角が示す部分は成分の値が0以外の乱数であることを示し、図2(b)において、空白部分は成分の値が0であることを示している。また、図2(b)において、斜線が入れられた四角が示す部分は成分の値が同じ値であることを示す。なお、ここでは、N=5としている。
図2(a)に示すように、従来の線形変換Xは、N(ここでは、5=25)のサイズであった。これに対して、図2(b)に示すように、以下の実施の形態で説明する内積暗号で用いる線形変換X(以下、新しい線形変換X)は、N+1(ここでは、5+1=6)のサイズである。
【0029】
上述したように、基底Bと基底Bとは、線形変換Xを用いて標準基底Aを変換して生成される。そのため、基底Bと基底Bとのサイズは、線形変換Xのサイズに比例する。また、上述したように、基底Bと基底Bとは、その一部が公開パラメータと秘密鍵にされる。したがって、公開パラメータと秘密鍵とのサイズは、線形変換Xのサイズに比例する。つまり、従来の線形変換Xを用いた場合、公開パラメータと秘密鍵とのサイズは、Nに比例する。これに対して、新しい線形変換Xを用いた場合、公開パラメータと秘密鍵とのサイズは、N+1に比例する。
その結果、従来の線形変換Xを用いた場合、ユーザ鍵の生成の処理や暗号化の処理にNに比例した時間がかかっていた。これに対して、新しい線形変換Xを用いた場合、ユーザ鍵の生成の処理や暗号化の処理にN+1に比例した時間になる。つまり、新しい線形変換Xを用いた場合、計算時間が、Nのオーダーになる。
【0030】
次に、非零内積暗号方式を例として、定数サイズの暗号文と効率的な復号を実現する具体的な方法について説明する。
なお、暗号文のサイズを説明する場合、ベクトルの記述は暗号文の一部に含めないものとする。復号鍵のサイズを説明する場合も同様に、ベクトルの記述は暗号文の一部に含めないものとする。
【0031】
以下の実施の形態で説明する非零内積暗号方式を簡略化したものを用いて説明する。
簡略化した非零内積暗号方式における暗号文は、2つのベクトル要素(c,c)∈G×Gと、c∈Gとからなる。秘密鍵は、2つのベクトル要素k,k∈G×Gからなる。なお、(c,c)∈G×Gとは、cがGの5個の要素であり、cがGのn個の要素であることを意味する。同様に、k,k∈G×Gとは、kがGの5個の要素であり、kがGのn個の要素であることを意味する。
そのため、暗号文のサイズを定数サイズにするには、c∈Gをnについての定数サイズに圧縮する必要がある。
【0032】
数118に示す特別な線形変換Xを用いる。
【数118】

ここで、μ,μ’,...,μ’は有限体Fから一様に選択された値であり、線形変換Xにおける空白は定数値0∈Fであることを示す。定数値0とは、値が0に固定されていることを意味する。つまり、μ,μ’,...,μ’は0も取り得る一様乱数であるのに対して、線形変換Xにおける空白は値が0に固定されている。また、H(n,F)とは、有限体Fを要素とするn次元の行列の集合を意味する。
【0033】
システムパラメータ又はDPVSの公開基底は、数119に示す基底Bである。
【数119】

【0034】
:=(x,...,x)に関連付けられた暗号文を、数120に示す暗号文cとする。
【数120】

ここで、ωは有限体Fから一様に選択された値である。
【0035】
すると、暗号文cは、数121に示す2つのグループの要素C,Cと、ベクトルxとに圧縮できる。
【数121】

暗号文cは、(x,...,xn−1,C)によって得られるためである。なお、i=1,...,n−1の各iについて、x=xωμgである。
したがって、暗号文(ベクトルxを除いた部分)は、2つのグループの要素とすることができ、nについての定数サイズとなる。
【0036】
:=(b)を、B:=(b)の双対正規直交基底とし、基底Bを、簡略化した非零内積暗号方式におけるマスター秘密鍵であるとする。(c,k,c)を、e(c,k)=gζ・gωδであり、c:=gζm∈Gであると規定する。また、ベクトルvに対する秘密鍵を、k:=(δvB*=δ(v+・・・+v)のように設定する。
基底Bと基底Bとの双対正規直交性により、e(c,k)=gωδ(x→・v→)が成立する。そのため、復号者は、x・v≠0である場合に限り、gωδを計算できる。つまり、復号者は、数122によりメッセージmを得ることができる。
【数122】

【0037】
暗号文cは、(x,...,xn−1,C)∈Gとして表され、秘密鍵kは、(K,...,K)のn組に分解される。そのため、e(c,k)の値は、数123である。
【数123】

【0038】
つまり、e(c,k)を計算するには、Gにおけるn−1個のスカラー乗法と、2つのペアリング演算とで十分である。すなわち、復号には、少ない数(定数)のペアリング演算だけが必要となる。一般に、ペアリング演算は、処理時間がかかる演算であるため、ペアリング演算の数を減らすことにより、処理全体としての処理時間を短くすることができる。
【0039】
なお、簡略化した非零内積暗号方式では、暗号文cはベクトルxが設定される基底ベクトル(実際の符号化部)のみを備え、秘密鍵kはベクトルvが設定される基底ベクトル(実際の符号化部)のみを備えた。
以下の実施の形態で説明する非零内積暗号方式では、安全性を高めるため、暗号文cと秘密鍵kとに、実際の符号化部に加え、秘匿部と、秘密鍵ランダム化部と、暗号文ランダム化部とのための基底ベクトルを加える。
そのため、線形変換Xを数124のように拡張する。
【数124】

ここで、各Xi,jは、数118に示すX∈H(n,F)である。そして、ベクトル空間は、4つの直交する部分空間で構成される。つまり、ベクトル空間は、符号化部と、秘匿部と、秘密鍵ランダム化部と、暗号文ランダム化部とのための4つの直交する部分空間で構成される。
【0040】
実施の形態2.
実施の形態2では、暗号文のサイズを定数サイズとした非零内積暗号方式について説明する。
【0041】
図3は、実施の形態2に係る鍵生成装置100の構成図である。図4は、実施の形態2に係る暗号化装置200の構成図である。図5は、実施の形態2に係る復号装置300の構成図である。
図6と図7とは、実施の形態2に係る鍵生成装置100の動作を示すフローチャートである。なお、図6は、実施の形態2に係るSetupアルゴリズムの処理を示すフローチャートであり、図7は、実施の形態2に係るKeyGenアルゴリズムの処理を示すフローチャートである。図8は、実施の形態2に係る暗号化装置200の動作を示すフローチャートであり、実施の形態2に係るEncアルゴリズムの処理を示すフローチャートである。図9は、実施の形態2に係る復号装置300の動作を示すフローチャートであり、実施の形態2に係るDecアルゴリズムの処理を示すフローチャートである。
【0042】
なお、以下の説明において、入力されるベクトルx:=(x,...,x)は、L=1,...,n−1の各整数Lについてx≠0であり、入力されるベクトルv:=(v,...,v)は、v≠0であるとする。
【0043】
鍵生成装置100について説明する。
図3に示すように、鍵生成装置100は、マスター鍵生成部110、マスター鍵記憶部120、情報入力部130、復号鍵生成部140、鍵配布部150を備える。マスター鍵生成部110は、空間生成部111、行列生成部112、基底生成部113、鍵生成部114を備える。復号鍵生成部140は、乱数生成部141、鍵要素生成部142を備える。
【0044】
図6に基づき、Setupアルゴリズムの処理について説明する。
(S101:空間生成ステップ)
空間生成部111は、セキュリティパラメータ1λを入力として、処理装置によりGbpgを実行して、対称双線形ペアリング群のパラメータparam:=(q,G,G,g,e)を生成する。
さらに、空間生成部111は、N:=5、N:=4nを設定する。そして、空間生成部111は、t=0,1の各tについて、セキュリティパラメータ1λと、Nと、対称双線形ペアリング群のパラメータparamとを入力として、処理装置によりGdpvsを実行して、双対ペアリングベクトル空間のパラメータparamVt:=(q,V,G,A,e)を生成する。
【0045】
(S102:線形変換生成ステップ)
行列生成部112は、数125に示すように、処理装置により線形変換Xを生成する。
【数125】

なお、数125における(χ0,i,ji,j=1,...,5は、行列χ0,i,jの添え字i,jに関する行列という意味という意味である。
また、行列生成部112は、数126に示すように、処理装置により線形変換Xを生成する。
【数126】

数126におけるL(N,F)は、数127に示す通りである。
【数127】

なお、以下、{μi,j,μ’i,j,Li,j=1,...,4;L=1,...,nは、線形変換Xにおける定数値0以外の要素を示す。
【0046】
(S103:基底B生成ステップ)
基底生成部113は、数128に示すように、処理装置により基底Bと変数Bi,jと変数B’i,j,Lとを生成する。
【数128】

また、基底生成部113は、数129に示すように、処理装置により基底Bと基底Bとを生成する。
【数129】

【0047】
(S104:基底B^生成ステップ)
鍵生成部114は、数130に示すように、処理装置により基底B^と、基底B^と、基底B^とを生成する。
【数130】

【0048】
(S105:マスター鍵生成ステップ)
鍵生成部114は、処理装置により公開パラメータpk:=(1λ,param,B^,{Bi,j,B’i,j,Li=1,4;j=1,...,4;L=1,...,n)とし、マスター秘密鍵sk:={B^t=0,1とする。そして、鍵生成部114は、公開パラメータpkと、マスター秘密鍵skとをマスター鍵記憶部120に記憶する。
なお、param:=({paramVtt=0,1,g)である。
【0049】
つまり、S101からS105において、鍵生成装置100は、数131に示すアルゴリズムG(1)obを用いた、数132に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター秘密鍵skとを生成する。
【数131】

【数132】

なお、公開パラメータは、例えば、ネットワークを介して公開され、暗号化装置200や復号装置300が取得可能な状態にされる。
【0050】
S103では、基底Bを生成せず、代わりに変数Bi,jを生成した。基底Bを生成するのであれば、数133のようになる。
【数133】

数133の行列における空白部分は成分の値が0∈Gであることを示している。基底Bは、基底Bの正規直交基底である。つまり、e(b1,i,b1,j)=gであり、1≦i≠j≦4nの整数i,jに対して、e(b1,i,b1,j)=1である。
【0051】
図7に基づき、KeyGenアルゴリズムの処理について説明する。
(S111:情報入力ステップ)
情報入力部130は、ベクトルvを入力装置により入力する。
【0052】
(S112:乱数生成ステップ)
乱数生成部141は、数134に示すように、処理装置により乱数を生成する。
【数134】

【0053】
(S113:要素k生成ステップ)
鍵要素生成部142は、数135に示すように、処理装置により復号鍵skv→の要素である要素kを生成する。
【数135】

なお、上述したように、数110に示す基底Bと基底Bとに対して、数111である。したがって、数135は、基底Bの基底ベクトルb0,1の係数としてδを設定し、基底ベクトルb0,2の係数として0を設定し、基底ベクトルb0,3の係数として1を設定し、基底ベクトルb0,4の係数としてφを設定し、基底ベクトルb0,5の係数として0を設定することを意味する。
【0054】
(S114:要素k生成ステップ)
鍵要素生成部142は、数136に示すように、処理装置により復号鍵skv→の要素である要素kを生成する。
【数136】

数136は、数135と同様に、基底Bの基底ベクトルb1,1,...,b1,nの係数としてδv,...,δvを設定し、基底ベクトルb1,n+1,...,b1,2nの係数として0を設定し、基底ベクトルb1,2n+1,...,b1,3nの係数としてφ,...,φを設定し、基底ベクトルb1,3n+1,...,b1,4nの係数として0を設定することを意味する。
【0055】
(S115:鍵配布ステップ)
鍵配布部150は、S111で入力したベクトルvと、S113で生成した要素kと、S114で生成した要素kとを要素とする復号鍵skv→を、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ配布する。もちろん、復号鍵skv→は、他の方法により復号装置300へ配布されてもよい。
【0056】
つまり、S111からS114において、鍵生成装置100は、数137に示すKeyGenアルゴリズムを実行して、復号鍵skv→を生成する。そして、S115において、鍵生成装置100は、生成された復号鍵skv→を復号装置300へ配布する。
【数137】

【0057】
暗号化装置200について説明する。
図4に示すように、暗号化装置200は、公開パラメータ取得部210、情報入力部220、暗号文生成部230、データ送信部240を備える。暗号文生成部230は、乱数生成部231、暗号要素生成部232を備える。
【0058】
図8に基づき、Encアルゴリズムの処理について説明する。
(S121:公開パラメータ取得ステップ)
公開パラメータ取得部210は、例えば、通信装置によりネットワークを介して、鍵生成装置100が生成した公開パラメータpkを取得する。
【0059】
(S122:情報入力ステップ)
情報入力部220は、ベクトルxを入力装置により入力する。
また、情報入力部220は、メッセージmを入力装置により入力する。
【0060】
(S123:乱数生成ステップ)
乱数生成部231は、数138に示すように、処理装置により乱数を生成する。
【数138】

【0061】
(S124:要素c生成ステップ)
暗号要素生成部232は、数139に示すように、処理装置により暗号文ctx→の要素である要素cを生成する。
【数139】

数139は、数135と同様に、基底Bの基底ベクトルb0,1の係数として−ωを設定し、基底ベクトルb0,2の係数として0を設定し、基底ベクトルb0,3の係数としてζを設定し、基底ベクトルb0,4の係数として0を設定し、基底ベクトルb0,5の係数としてηを設定することを意味する。
【0062】
(S125:要素C生成ステップ)
暗号要素生成部232は、数140に示すように、処理装置により暗号文ctx→の要素である要素C1,jと要素C2,jとを生成する。
【数140】

【0063】
(S126:要素c生成ステップ)
暗号要素生成部232は、数141に示すように、処理装置により暗号文ctx→の要素である要素cを生成する。
【数141】

【0064】
(S127:データ送信ステップ)
データ送信部240は、S122で入力したベクトルxと、S124で生成した要素cと、S125で生成した要素C1,j,C2,jと、S126で生成した要素cとを要素とする暗号文ctx→を、例えば通信装置によりネットワークを介して復号装置300へ送信する。もちろん、暗号文ctx→は、他の方法により復号装置300へ送信されてもよい。
【0065】
つまり、S121からS126において、暗号化装置200は、数142に示すEncアルゴリズムを実行して、暗号文ctx→を生成する。そして、S127において、暗号化装置200は、生成された暗号文ctx→を復号装置300へ送信する。
【数142】

【0066】
復号装置300について説明する。
図5に示すように、復号装置300は、復号鍵取得部310、データ受信部320、ペアリング演算部330、メッセージ計算部340を備える。
【0067】
図9に基づき、Decアルゴリズムの処理について説明する。
(S131:復号鍵取得ステップ)
復号鍵取得部310は、例えば、通信装置によりネットワークを介して、鍵生成装置100から配布されたskv→を取得する。
また、復号鍵取得部310は、鍵生成装置100が生成した公開パラメータpkを取得する。
【0068】
(S132:データ受信ステップ)
データ受信部320は、例えば、通信装置によりネットワークを介して、暗号化装置200が送信した暗号文ctx→を受信する。
【0069】
(S133:値D計算ステップ)
ペアリング演算部330は、数143に示すように、処理装置により値Dを計算する。
【数143】

ここで、要素kは、(K,...,K4n)∈G4nの4n組に分解される。
【0070】
(S134:ペアリング演算ステップ)
ペアリング演算部330は、数144に示すように、処理装置によりペアリング演算を実行して、値Fを計算する。
【数144】

【0071】
(S135:メッセージ計算ステップ)
メッセージ計算部340は、数145に示すように、処理装置によりメッセージm’を計算する。
【数145】

【0072】
つまり、S131からS135において、復号装置300は、数146に示すDecアルゴリズムを実行して、メッセージm’を計算する。
【数146】

【0073】
なお、数133からB:=(b1,1,...,b1,4n)は、{Bi,j,B’i,j,Li,j=1,...,4;L=1,...,nによって特定される。また、Setupアルゴリズムの出力に含まれる{Bi,j,B’i,j,Li=1,4;j=1,...,4;L=1,...,nは、B^:=(b1,1,...,b1,n,b1,3n+1,...,b1,4n)によって特定される。
そして、Decアルゴリズムは、数147に示すDec’アルゴリズムのように記述することができる。
【数147】

【0074】
数148に示すように、Dec'アルゴリズムを用いた場合、x・v≠0であれば、F=gζが得られる。そのため、c=gζmをFで除することにより、メッセージm’(=m)が得られる。
【数148】

【0075】
実施の形態2で説明した非零内積暗号方式では、暗号文ctx→は、数139に示す要素cで5個と、数140に示す、j=1,...,4の各整数jについての要素C1,j及び要素C2,jで8個との合計13個のGの要素を含む。また、数141に示す要素cで1個のGの要素を含む。つまり、暗号文ctx→は、nについて定数サイズである。
【0076】
また、実施の形態2で説明した非零内積暗号方式では、復号処理(Decアルゴリズム)は、数144に示すe(c,k)で5個と、Πj=1(e(C1,j,D)・e(C2,j,Kjn))で8個との合計13個のみペアリング演算を実行する。つまり、復号処理は、少ない数のペアリング演算のみ必要となる。
【0077】
実施の形態3.
実施の形態3では、秘密鍵のサイズを定数サイズとした非零内積暗号方式について説明する。
【0078】
鍵生成装置100、暗号化装置200、復号装置300の構成は、それぞれ図3、図4、図5に示す実施の形態2に係る鍵生成装置100、暗号化装置200、復号装置300の構成と同一である。
図10と図11とは、実施の形態3に係る鍵生成装置100の動作を示すフローチャートである。なお、図10は、実施の形態3に係るSetupアルゴリズムの処理を示すフローチャートであり、図11は、実施の形態3に係るKeyGenアルゴリズムの処理を示すフローチャートである。図12は、実施の形態3に係る暗号化装置200の動作を示すフローチャートであり、実施の形態3に係るEncアルゴリズムの処理を示すフローチャートである。図13は、実施の形態3に係る復号装置300の動作を示すフローチャートであり、実施の形態3に係るDecアルゴリズムの処理を示すフローチャートである。
【0079】
なお、以下の説明において、入力されるベクトルv:=(v,...,v)は、L=1,...,n−1の各整数Lについてv≠0であり、入力されるベクトルx:=(x,...,x)は、x≠0であるとする。
【0080】
鍵生成装置100について説明する。
図10に基づき、Setupアルゴリズムの処理について説明する。
S201からS202までの処理は、図6に示すS101からS102までの処理と同じである。
【0081】
(S203:基底B生成ステップ)
基底生成部113は、実施の形態2における基底Bと変数Bi,jと同様に、数149に示すように、処理装置により基底Dと変数Di,jと変数D’i,j,Lとを生成する。
【数149】

また、基底生成部113は、実施の形態2における基底Bと基底Bと同様に、数150に示すように、処理装置により基底Dと基底Dとを生成する。
【数150】

そして、基底生成部113は、基底Dを基底Bとし、基底Dを基底Bとし、基底Dを基底Bとする。また、基底生成部113は、i,j=1,...,4の各整数i,jと、L=1,...,nの各整数Lとについて、変数Di,jを変数Bi,jとし、変数D’i,j,Lを変数B’i,j,Lとする。
【0082】
(S204:基底B^生成ステップ)
鍵生成部114は、数151に示すように、処理装置により基底B^と、基底B^と、基底B^とを生成する。
【数151】

【0083】
(S205:マスター鍵生成ステップ)
鍵生成部114は、処理装置により公開パラメータpk:=(1λ,param,{B^t=0,1)とし、マスター秘密鍵sk:=B^,{Bi,j,B’i,j,Li=1,3;j=1,...,4;L=1,...,nとする。そして、鍵生成部114は、公開パラメータpkと、マスター秘密鍵skとをマスター鍵記憶部120に記憶する。
なお、param:=({paramVtt=0,1,g)である。
【0084】
つまり、S201からS205において、鍵生成装置100は、数152に示すアルゴリズムG(2)obを用いた、数153に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター秘密鍵skとを生成する。ここで、数152に示すように、アルゴリズムG(2)obは、数131に示すアルゴリズムG(1)obを用いる。
【数152】

【数153】

なお、公開パラメータは、例えば、ネットワークを介して公開され、暗号化装置200や復号装置300が取得可能な状態にされる。
【0085】
図11に基づき、KeyGenアルゴリズムの処理について説明する。
S211からS213までの処理は、図7に示すS111からS113までの処理と同じである。
【0086】
(S214:要素K生成ステップ)
鍵要素生成部142は、数154に示すように、処理装置により復号鍵skv→の要素である要素K1,jと要素K2,jとを生成する。
【数154】

【0087】
(S215:鍵配布ステップ)
鍵配布部150は、S211で入力したベクトルvと、S213で生成した要素kと、S214で生成した要素K1,j,K2,jとを要素とする復号鍵skv→を、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ配布する。もちろん、復号鍵skv→は、他の方法により復号装置300へ配布されてもよい。
【0088】
つまり、S211からS214において、鍵生成装置100は、数155に示すKeyGenアルゴリズムを実行して、復号鍵skv→を生成する。そして、S215において、鍵生成装置100は、生成された復号鍵skv→を復号装置300へ配布する。
【数155】

【0089】
暗号化装置200について説明する。
図12に基づき、Encアルゴリズムの処理について説明する。
S221からS224までの処理は、図8に示すS121からS124までの処理と同じである。
【0090】
(S225:要素c生成ステップ)
暗号要素生成部232は、数156に示すように、処理装置により暗号文ctx→の要素である要素cを生成する。
【数156】

数156は、数135と同様に、基底Bの基底ベクトルb1,1,...,b1,nの係数としてωx,...,ωxを設定し、基底ベクトルb1,n+1,...,b1,3nの係数として0を設定し、基底ベクトルb1,3n+1,...,b1,4nの係数としてη,...,ηを設定することを意味する。
【0091】
S226の処理は、図8に示すS126の処理と同じである。
【0092】
(S227:データ送信ステップ)
データ送信部240は、S222で入力したベクトルxと、S224で生成した要素cと、S225で生成した要素cと、S226で生成した要素cとを要素とする暗号文ctx→を、例えば通信装置によりネットワークを介して復号装置300へ送信する。もちろん、暗号文ctx→は、他の方法により復号装置300へ送信されてもよい。
【0093】
つまり、S221からS226において、暗号化装置200は、数157に示すEncアルゴリズムを実行して、暗号文ctx→を生成する。そして、S227において、暗号化装置200は、生成された暗号文ctx→を復号装置300へ送信する。
【数157】

【0094】
復号装置300について説明する。
図13に基づき、Decアルゴリズムの処理について説明する。
S231からS232までの処理は、図9に示すS131からS132までの処理と同じである。
【0095】
(S233:値D計算ステップ)
ペアリング演算部330は、数158に示すように、処理装置により値Dを計算する。
【数158】

ここで、要素cは、(C,...,C4n)∈G4nの4n組に分解される。
【0096】
(S234:ペアリング演算ステップ)
ペアリング演算部330は、数159に示すように、処理装置によりペアリング演算を実行して、値Fを計算する。
【数159】

【0097】
S235の処理は、図9に示すS135の処理と同じである。
【0098】
つまり、S231からS235において、復号装置300は、数160に示すDecアルゴリズムを実行して、メッセージm’を計算する。
【数160】

【0099】
なお、B:=(b1,1,...,b1,4n)は、{Bi,j,B’i,j,Li,j=1,...,4;L=1,...,nによって特定される。また、Setupアルゴリズムの出力に含まれる{Bi,j,B’i,j,Li=1,3;j=1,...,4;L=1,...,nは、B^:=(b1,1,...,b1,n,b1,2n+1,...,b1,3n)によって特定される。
そして、Decアルゴリズムは、数161に示すDec’アルゴリズムのように記述することができる。
【数161】

【0100】
実施の形態3で説明した非零内積暗号方式では、復号鍵skv→は、数135に示す要素kで5個と、数154に示す、j=1,...,4の各整数jについての要素K1,j及び要素K2,jで8個との合計13個のGの要素を含む。つまり、復号鍵skv→は、nについて定数サイズである。
【0101】
また、実施の形態3で説明した非零内積暗号方式では、復号処理(Decアルゴリズム)は、数159に示すe(c,k)で5個と、Πj=1(e(D,K1,j)・e(Cjn,K2,j))で8個との合計13個のみペアリング演算を実行する。つまり、復号処理は、少ない数のペアリング演算のみ必要となる。
【0102】
実施の形態4.
実施の形態4では、暗号文のサイズを定数サイズとした零内積暗号方式について説明する。
【0103】
鍵生成装置100、暗号化装置200、復号装置300の構成は、それぞれ図3、図4、図5に示す実施の形態2に係る鍵生成装置100、暗号化装置200、復号装置300の構成と同一である。
図14と図15とは、実施の形態4に係る鍵生成装置100の動作を示すフローチャートである。なお、図14は、実施の形態4に係るSetupアルゴリズムの処理を示すフローチャートであり、図15は、実施の形態4に係るKeyGenアルゴリズムの処理を示すフローチャートである。図16は、実施の形態4に係る暗号化装置200の動作を示すフローチャートであり、実施の形態4に係るEncアルゴリズムの処理を示すフローチャートである。図17は、実施の形態4に係る復号装置300の動作を示すフローチャートであり、実施の形態4に係るDecアルゴリズムの処理を示すフローチャートである。
【0104】
なお、以下の説明において、入力されるベクトルx:=(x,...,x)は、L=1,...,n−1の各整数Lについてx≠0であり、入力されるベクトルv:=(v,...,v)は、v≠0であるとする。
【0105】
鍵生成装置100について説明する。
図14に基づき、Setupアルゴリズムの処理について説明する。
(S301:空間生成ステップ)
空間生成部111は、セキュリティパラメータ1λを入力として、処理装置によりGbpgを実行して、対称双線形ペアリング群のパラメータparam:=(q,G,G,g,e)を生成する。
さらに、空間生成部111は、N:=4n+1を設定する。そして、空間生成部111は、セキュリティパラメータ1λと、Nと、対称双線形ペアリング群のパラメータparamとを入力として、処理装置によりGdpvsを実行して、双対ペアリングベクトル空間のパラメータparamVt:=(q,V,G,A,e)を生成する。
【0106】
(S302:線形変換生成ステップ)
行列生成部112は、数162に示すように、処理装置により線形変換Xを生成する。
【数162】

数162におけるL’(N,F)は、数163に示す通りである。
【数163】

なお、以下、{χ0,0,χ0,j,χi,0,L,μi,j,μ’i,j,Li,j=1,...,4;L=1,...,nは、線形変換Xにおける定数値0以外の要素を示す。
【0107】
(S303:基底B生成ステップ)
基底生成部113は、数164に示すように、処理装置により変数B0,0と変数B0,jと変数Bi,0,Lと変数Bi,jと変数B’i,j,Lとを生成する。
【数164】

また、基底生成部113は、数165に示すように、処理装置により基底Bを生成する。
【数165】

【0108】
(S304:基底B^生成ステップ)
鍵生成部114は、数166に示すように、処理装置により基底B^を生成する。
【数166】

【0109】
(S305:マスター鍵生成ステップ)
鍵生成部114は、処理装置により公開パラメータpk:=(1λ,param,B^,{B0,0,B0,j,Bi,0,L,Bi,j,B’i,j,Li=1,4;j=1,...,4;L=1,...,n)とし、マスター秘密鍵sk:=B^とする。そして、鍵生成部114は、公開パラメータpkと、マスター秘密鍵skとをマスター鍵記憶部120に記憶する。
なお、param:=(param,g)である。
【0110】
つまり、S301からS305において、鍵生成装置100は、数167に示すアルゴリズムG(3)obを用いた、数168に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター秘密鍵skとを生成する。
【数167】

【数168】

なお、公開パラメータは、例えば、ネットワークを介して公開され、暗号化装置200や復号装置300が取得可能な状態にされる。
【0111】
図15に基づき、KeyGenアルゴリズムの処理について説明する。
S311の処理は、図7に示すS111の処理と同じである。
【0112】
(S312:乱数生成ステップ)
乱数生成部141は、数169に示すように、処理装置により乱数を生成する。
【数169】

【0113】
(S313:要素k生成ステップ)
鍵要素生成部142は、数170に示すように、処理装置により復号鍵skv→の要素である要素kを生成する。
【数170】

数170は、数135と同様に、基底Bの基底ベクトルbの係数として1を設定し、基底ベクトルb,...,bの係数としてδv,...,δvを設定し、基底ベクトルbn+1,...,b2nの係数として0を設定し、基底ベクトルb2n+1,...,b3nの係数としてφv,...,φvを設定し、基底ベクトルb3n+1,...,b4nの係数として0を設定することを意味する。
【0114】
(S314:鍵配布ステップ)
鍵配布部150は、S313で生成した要素kを要素とする復号鍵skv→を、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ配布する。もちろん、復号鍵skv→は、他の方法により復号装置300へ配布されてもよい。
【0115】
つまり、S311からS313において、鍵生成装置100は、数171に示すKeyGenアルゴリズムを実行して、復号鍵skv→を生成する。そして、S314において、鍵生成装置100は、生成された復号鍵skv→を復号装置300へ配布する。
【数171】

【0116】
暗号化装置200について説明する。
図16に基づき、Encアルゴリズムの処理について説明する。
S321からS322までの処理は、図8に示すS121からS122までの処理と同じである。
【0117】
(S323:乱数生成ステップ)
乱数生成部231は、数172に示すように、処理装置により乱数を生成する。
【数172】

【0118】
(S324:要素C生成ステップ)
暗号要素生成部232は、数173に示すように、処理装置により暗号文ctx→の要素である要素Cと要素C1,jと要素C2,jとを生成する。
【数173】

【0119】
S325の処理は、図8に示すS126の処理と同じである。
【0120】
(S326:データ送信ステップ)
データ送信部240は、S322で入力したベクトルxと、S324で生成した要素C,C1,j,C2,jと、S325で生成した要素cとを要素とする暗号文ctx→を、例えば通信装置によりネットワークを介して復号装置300へ送信する。もちろん、暗号文ctx→は、他の方法により復号装置300へ送信されてもよい。
【0121】
つまり、S321からS325において、暗号化装置200は、数174に示すEncアルゴリズムを実行して、暗号文ctx→を生成する。そして、S326において、暗号化装置200は、生成された暗号文ctx→を復号装置300へ送信する。
【数174】

【0122】
復号装置300について説明する。
図17に基づき、Decアルゴリズムの処理について説明する。
S331からS332までの処理は、図9に示すS131からS132までの処理と同じである。
【0123】
(S333:値D計算ステップ)
ペアリング演算部330は、数175に示すように、処理装置により値Dを計算する。
【数175】

ここで、要素kは、(K,...,K4n)∈G4n+1の(4n+1)組に分解される。
【0124】
(S334:ペアリング演算ステップ)
ペアリング演算部330は、数176に示すように、処理装置によりペアリング演算を実行して、値Fを計算する。
【数176】

【0125】
S335の処理は、図9に示すS135の処理と同じである。
【0126】
つまり、S331からS335において、復号装置300は、数177に示すDecアルゴリズムを実行して、メッセージm’を計算する。
【数177】

【0127】
なお、B:=(b,...,b4n)は、{B0,0,B0,j,Bi,0,L,Bi,j,B’i,j,Li,j=1,...,4;L=1,...,nによって特定される。また、Setupアルゴリズムの出力に含まれる{B0,0,B0,j,Bi,0,L,Bi,j,B’i,j,Li=1,4;j=1,...,4;L=1,...,nは、B^:=(b,...,b,b3n+1,...,b4n)によって特定される。
そして、Decアルゴリズムは、数178に示すDec’アルゴリズムのように記述することができる。
【数178】

【0128】
数179に示すように、Dec'アルゴリズムを用いた場合、x・v=0であれば、F=gζが得られる。そのため、c=gζmをFで除することにより、メッセージm’(=m)が得られる。
【数179】

【0129】
実施の形態4で説明した零内積暗号方式では、暗号文ctx→は、数173に示す要素Cで1個と、j=1,...,4の各整数jについての要素C1,j及び要素C2,jで8個との合計9個のGの要素を含む。また、要素cで1個のGの要素を含む。つまり、暗号文ctx→は、nについて定数サイズである。
【0130】
また、実施の形態4で説明した零内積暗号方式では、復号処理(Decアルゴリズム)は、数176に示すe(C,K)で1個と、Πj=1(e(C1,j,D)・e(C2,j,Kjn))で8個との合計9個のみペアリング演算を実行する。つまり、復号処理は、少ない数のペアリング演算のみ必要となる。
【0131】
実施の形態5.
実施の形態5では、秘密鍵のサイズを定数サイズとした零内積暗号方式について説明する。
【0132】
鍵生成装置100、暗号化装置200、復号装置300の構成は、それぞれ図3、図4、図5に示す実施の形態2に係る鍵生成装置100、暗号化装置200、復号装置300の構成と同一である。
図18と図19とは、実施の形態5に係る鍵生成装置100の動作を示すフローチャートである。なお、図18は、実施の形態5に係るSetupアルゴリズムの処理を示すフローチャートであり、図19は、実施の形態5に係るKeyGenアルゴリズムの処理を示すフローチャートである。図20は、実施の形態5に係る暗号化装置200の動作を示すフローチャートであり、実施の形態5に係るEncアルゴリズムの処理を示すフローチャートである。図21は、実施の形態5に係る復号装置300の動作を示すフローチャートであり、実施の形態5に係るDecアルゴリズムの処理を示すフローチャートである。
【0133】
なお、以下の説明において、入力されるベクトルv:=(v,...,v)は、L=1,...,n−1の各整数Lについてv≠0であり、入力されるベクトルx:=(x,...,x)は、x≠0であるとする。
【0134】
鍵生成装置100について説明する。
図18に基づき、Setupアルゴリズムの処理について説明する。
S401からS402までの処理は、図14に示すS301からS302までの処理と同じである。
【0135】
(S403:基底B生成ステップ)
基底生成部113は、実施の形態4における変数B0,0と変数B0,jと変数Bi,0,Lと変数Bi,jと変数B’i,j,Lと同様に、数180に示すように、処理装置により変数D0,0と変数D0,jと変数Di,0,Lと変数Di,jと変数D’i,j,Lとを生成する。
【数180】

また、基底生成部113は、実施の形態4における基底Bと同様に、数181に示すように、処理装置により基底Dを生成する。
【数181】

そして、基底生成部113は、基底Dを基底Bとする。また、基底生成部113は、i,j=1,...,4の各整数i,jと、L=1,...,nの各整数Lとについて、変数D0,0を変数B0,0とし、変数D0,jを変数B0,jとし、変数Di,0,Lを変数Bi,0,Lとし、変数Di,jを変数Bi,jとし、変数D’i,j,Lを変数B’i,j,Lとする。
【0136】
(S404:基底B^生成ステップ)
鍵生成部114は、数182に示すように、処理装置により基底B^を生成する。
【数182】

【0137】
(S405:マスター鍵生成ステップ)
鍵生成部114は、処理装置により公開パラメータpk:=(1λ,param,B^)とし、マスター秘密鍵sk:=({B0,0,B0,j,Bi,0,L,Bi,j,B’i,j,Li=1,3;j=1,...,4;L=1,...,n)とする。そして、鍵生成部114は、公開パラメータpkと、マスター秘密鍵skとをマスター鍵記憶部120に記憶する。
なお、param:=(param,g)である。
【0138】
つまり、S401からS405において、鍵生成装置100は、数183に示すアルゴリズムG(4)obを用いた、数184に示すSetupアルゴリズムを実行して、公開パラメータpkとマスター秘密鍵skとを生成する。ここで、数183に示すように、アルゴリズムG(4)obは、数167に示すアルゴリズムG(3)obを用いる。
【数183】

【数184】

なお、公開パラメータは、例えば、ネットワークを介して公開され、暗号化装置200や復号装置300が取得可能な状態にされる。
【0139】
図19に基づき、KeyGenアルゴリズムの処理について説明する。
S411からS412までの処理は、図15に示すS311からS312までの処理と同じである。
【0140】
(S413:要素K生成ステップ)
鍵要素生成部142は、数185に示すように、処理装置により復号鍵skv→の要素である要素Kと要素K1,jと要素K2,jとを生成する。
【数185】

【0141】
(S414:鍵配布ステップ)
鍵配布部150は、S411で入力したベクトルvと、S313で生成した要素K,K1,j,K2,jとを要素とする復号鍵skv→を、例えば通信装置によりネットワークを介して秘密裡に復号装置300へ配布する。もちろん、復号鍵skv→は、他の方法により復号装置300へ配布されてもよい。
【0142】
つまり、S411からS413において、鍵生成装置100は、数186に示すKeyGenアルゴリズムを実行して、復号鍵skv→を生成する。そして、S414において、鍵生成装置100は、生成された復号鍵skv→を復号装置300へ配布する。
【数186】

【0143】
暗号化装置200について説明する。
図20に基づき、Encアルゴリズムの処理について説明する。
S421からS423までの処理は、図16に示すS321からS323までの処理と同じである。
【0144】
(S424:要素c生成ステップ)
暗号要素生成部232は、数187に示すように、処理装置により暗号文ctx→の要素である要素cを生成する。
【数187】

数187は、数135と同様に、基底Bの基底ベクトルbの係数としてζを設定し、基底ベクトルb,...,bの係数としてωx,...,ωxを設定し、基底ベクトルbn+1,...,b3nの係数として0を設定し、基底ベクトルb3n+1,...,b4nの係数としてηx,...,ηxを設定することを意味する。
【0145】
S425の処理は、図16に示すS325の処理と同じである。
【0146】
(S426:データ送信ステップ)
データ送信部240は、S422で入力したベクトルxと、S424で生成した要素cと、S425で生成した要素cとを要素とする暗号文ctx→を、例えば通信装置によりネットワークを介して復号装置300へ送信する。もちろん、暗号文ctx→は、他の方法により復号装置300へ送信されてもよい。
【0147】
つまり、S421からS425において、暗号化装置200は、数188に示すEncアルゴリズムを実行して、暗号文ctx→を生成する。そして、S426において、暗号化装置200は、生成された暗号文ctx→を復号装置300へ送信する。
【数188】

【0148】
復号装置300について説明する。
図21に基づき、Decアルゴリズムの処理について説明する。
S431からS432までの処理は、図17に示すS331からS332までの処理と同じである。
【0149】
(S433:値D計算ステップ)
ペアリング演算部330は、数189に示すように、処理装置により値Dを計算する。
【数189】

ここで、要素cは、(C,...,C4n)∈G4n+1の(4n+1)組に分解される。
【0150】
(S434:ペアリング演算ステップ)
ペアリング演算部330は、数190に示すように、処理装置によりペアリング演算を実行して、値Fを計算する。
【数190】

【0151】
S435の処理は、図17に示すS335の処理と同じである。
【0152】
つまり、S431からS435において、復号装置300は、数191に示すDecアルゴリズムを実行して、メッセージm’を計算する。
【数191】

【0153】
なお、B:=(b,...,b4n)は、{B0,0,B0,j,Bi,0,L,Bi,j,B’i,j,Li,j=1,...,4;L=1,...,nによって特定される。また、Setupアルゴリズムの出力に含まれる{B0,0,B0,j,Bi,0,L,Bi,j,B’i,j,Li=1,3;j=1,...,4;L=1,...,nは、B^:=(b,...,b,b2n+1,...,b3n)によって特定される。
そして、Decアルゴリズムは、数192に示すDec’アルゴリズムのように記述することができる。
【数192】

【0154】
実施の形態5で説明した零内積暗号方式では、復号鍵skv→は、数185に示す要素Kで1個と、j=1,...,4の各整数jについての要素K1,j及び要素K2,jで8個との合計9個のGの要素を含む。つまり、復号鍵skv→は、nについて定数サイズである。
【0155】
また、実施の形態5で説明した零内積暗号方式では、復号処理(Decアルゴリズム)は、数190に示すe(C,K)で1個と、Πj=1(e(D,K1,j)・e(Cjn,K2,j))で8個との合計9個のみペアリング演算を実行する。つまり、復号処理は、少ない数のペアリング演算のみ必要となる。
【0156】
なお、以上の実施の形態では、図2(b)に示す線形変換Xを用いた。しかし、線形変換Xは、図2(b)に示すものに限らない。例えば、図2(b)における斜線が入れられた四角が示す部分をそれぞれ異なる値としてもよい。また、図2(b)では、N列における全ての成分を定数値0以外の乱数としたが、N列ではなく、他のいずれか少なくとも1列における全ての成分を定数値0以外の乱数としてもよい。
より一般的には、線形変換Xは、各行各列に少なくとも1つは定数値0以外の値を有する疎行列であればよい。さらに、線形変換Xは、n行n列の行列である場合、定数値0以外の値として、少なくともn個の異なる値を有しているとよい。さらに、線形変換Xは、少なくとも1つの列における全ての成分が定数値0以外の値であるとよい。さらに、線形変換Xは、対角成分と、少なくとも1つの列における全ての成分が定数値0以外の値であるとよい。さらに、線形変換Xは、全ての成分が定数値0以外の値である列を除き、対角成分の値が同一であるとよい。
このような線形変換Xを用いた場合であっても、従来の線形変換Xを用いた場合に比べ、公開パラメータと秘密鍵とのサイズは小さくなる。また、ユーザ鍵の生成や暗号化の処理の処理時間も短くなる。
但し、線形変換Xの形式によっては、ペアリング演算の数を減らすことができない場合もある。
【0157】
以上の実施の形態では、ベクトル空間は、符号化部と、秘匿部と、秘密鍵ランダム化部と、暗号文ランダム化部とのための4つの直交する部分空間で構成した。そして、これに対応するため、数124に示すように、線形変換Xを、n行n列の行列Xi,j(i,j=1,...,4)を用いて構成した。線形変換Xのこの構成は、秘匿部と秘密鍵ランダム化部と暗号文ランダム化部との部分空間が、符号化部の部分空間と同じn次元であることを前提としている。
しかし、秘匿部と秘密鍵ランダム化部と暗号文ランダム化部との部分空間は、符号化部の部分空間と同じn次元でなくてもよい。例えば、秘匿部の部分空間はn×u次元、秘密鍵ランダム化部の部分空間はn×w次元、暗号文ランダム化部の部分空間はn×z次元(u,w,zは0以上の整数)であってもよい。この場合、数193に示すように、線形変換Xを、n行n列の行列Xi,j(i,j=1,...,1+u+w+z)を用いて構成すればよい。
【数193】

【0158】
関数型暗号の一種として、IDベースレボケーション(Identity−Based Revocation,IBR)やIDベースブロードキャスト暗号(Identity−Based Broadcast Encryption,IBBE)がある(非特許文献1,5,6,8,19,12参照)。
IDベースレボケーションでは、暗号文は識別子の集合S=(ID,...,ID)に対して暗号化され、ID∈SでないIDと関連付けられた秘密鍵によって暗号文は復号される。つまり、復号には、ID∈Sでない場合に限り、RIBR(ID,S)=1であることが必要である。
IDベースブロードキャスト暗号では、暗号文は識別子の集合S=(ID,...,ID)に対して暗号化され、ID∈SであるIDと関連付けられた秘密鍵によって暗号文は復号される。つまり、復号には、ID∈Sである場合に限り、RIBBE(ID,S)=1であることが必要である。
【0159】
S:={ID,...,ID}である場合に、S(X):=Σi=0:=Πi=1(X−ID)とする。そして、ベクトルv:=(v,v,...,v)とし、ベクトルx:=(1,ID,...,ID)とする。
すると、実施の形態2,3で説明した非零内積暗号方式は、IDベースレボケーション方式となり、実施の形態4,5で説明した零内積暗号方式は、IDベースブロードキャスト暗号方式となる。
つまり、以上の実施の形態で説明した内積暗号方式により、IDベースレボケーション方式及びIDベースブロードキャスト暗号方式を実現できる。この場合においても、暗号文又は復号鍵をnについての定数サイズとすることができ、少ない数のペアリング演算で復号することができる。
【0160】
実施の形態2−4で説明した具体的な暗号方式以外にも、非特許文献13、15、16、17等で説明されている暗号方式に、上述した線形変換Xを適用することで、公開パラメータと秘密鍵とのサイズは小さくなる。また、ユーザ鍵の生成や暗号化の処理の処理時間も短くなる。
【0161】
図22は、実施の形態2−4で説明した非零内積暗号方式及び零内積暗号方式と、非特許文献2に記載された非零内積暗号方式及び零内積暗号方式とを比較した図である。
なお、図22において、|G|、|G|、|F|、P、Mは、それぞれGのサイズ、Gのサイズ、Fのサイズ、ペアリング演算、Gにおけるスカラー積演算を示している。また、CT、SK、IP、DBDHは、それぞれ暗号文、秘密鍵(復号鍵)、内積、決定的双線形Diffie−Hellmanを示している。
【0162】
実施の形態6.
以上の実施の形態では、双対ベクトル空間において暗号処理を実現する方法について説明した。実施の形態6では、双対加群において暗号処理を実現する方法について説明する。
【0163】
つまり、以上の実施の形態では、素数位数qの巡回群において暗号処理を実現した。しかし、合成数Mを用いて数194のように環Rを表した場合、環Rを係数とする加群においても、上記実施の形態で説明した暗号処理を適用することができる。
【数194】

【0164】
以上の実施の形態で説明したアルゴリズムにおけるFをRに変更すれば、双対加群における暗号処理を実現することができる。
【0165】
次に、実施の形態における暗号処理システム10(鍵生成装置100、暗号化装置200、復号装置300)のハードウェア構成について説明する。
図23は、鍵生成装置100、暗号化装置200、復号装置300、鍵委譲装置400のハードウェア構成の一例を示す図である。
図23に示すように、鍵生成装置100、暗号化装置200、復号装置300、鍵委譲装置400は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、LCD901(Liquid Crystal Display)、キーボード902(K/B)、通信ボード915、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920(固定ディスク装置)の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。磁気ディスク装置920は、所定の固定ディスクインタフェースを介して接続される。
【0166】
ROM913、磁気ディスク装置920は、不揮発性メモリの一例である。RAM914は、揮発性メモリの一例である。ROM913とRAM914と磁気ディスク装置920とは、記憶装置(メモリ)の一例である。また、キーボード902、通信ボード915は、入力装置の一例である。また、通信ボード915は、通信装置の一例である。さらに、LCD901は、表示装置の一例である。
【0167】
磁気ディスク装置920又はROM913などには、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
【0168】
プログラム群923には、上記の説明において「マスター鍵生成部110」、「マスター鍵記憶部120」、「情報入力部130」、「復号鍵生成部140」、「鍵配布部150」、「公開パラメータ取得部210」、「情報入力部220」、「暗号文生成部230」、「データ送信部240」、「復号鍵取得部310」、「データ受信部320」、「ペアリング演算部330」、「メッセージ計算部340」等として説明した機能を実行するソフトウェアやプログラムやその他のプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、上記の説明において「公開パラメータpk」、「マスター秘密鍵sk」、「復号鍵skv→」、「暗号文ctx→」等の情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶される。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPU911の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPU911の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0169】
また、上記の説明におけるフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、その他光ディスク等の記録媒体やICチップに記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体や電波によりオンライン伝送される。
また、上記の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜装置」として説明するものは、「〜回路」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。さらに、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、ROM913等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、上記で述べた「〜部」としてコンピュータ等を機能させるものである。あるいは、上記で述べた「〜部」の手順や方法をコンピュータ等に実行させるものである。
【符号の説明】
【0170】
10 暗号処理システム、100 鍵生成装置、110 マスター鍵生成部、111 空間生成部、112 行列生成部、113 基底生成部、114 鍵生成部、120 マスター鍵記憶部、130 情報入力部、140 復号鍵生成部、141 乱数生成部、142 鍵要素生成部、150 鍵配布部、200 暗号化装置、210 公開パラメータ取得部、220 情報入力部、230 暗号文生成部、231 乱数生成部、232 暗号要素生成部、240 データ送信部、300 復号装置、310 復号鍵取得部、320 データ受信部、330 ペアリング演算部、340 メッセージ計算部。

【特許請求の範囲】
【請求項1】
各行各列に少なくとも1つは定数値0以外の値を有する疎行列を用いて所定の基底Aを変形して生成された基底Bと基底Bを利用し、暗号処理を行う暗号処理システムであり、
前記基底Bにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成する暗号化装置と、
前記基底Bにおける所定のベクトルを鍵ベクトルとして、前記暗号化装置が生成した暗号ベクトルと前記鍵ベクトルとについて、ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号装置と
を備えることを特徴とする暗号処理システム。
【請求項2】
前記疎行列は、n行n列(nは2以上の整数)の行列であり、定数値0以外の値として、少なくともn個の異なる値を有する
ことを特徴とする請求項1に記載の暗号処理システム。
【請求項3】
前記疎行列は、少なくとも1つの列における全ての成分が定数値0以外の値である
ことを特徴とする請求項2に記載の暗号処理システム。
【請求項4】
前記疎行列は、対角成分と、少なくとも1つの列における全ての成分が定数値0以外の値である
ことを特徴とする請求項3に記載の暗号処理システム。
【請求項5】
前記疎行列は、全ての成分が定数値0以外の値である列を除き、対角成分の値が同一である
ことを特徴とする請求項4に記載の暗号処理システム。
【請求項6】
前記疎行列は、数1に示す行列である
ことを特徴とする請求項5に記載の暗号処理システム。
【数1】

【請求項7】
前記暗号処理システムは、1行1列からn行n列までの値が数2に示す疎行列であるN行N列(Nはn以上の整数)の線形変換Xを用いて、数3に示すように前記基底Aから生成された基底Bと基底Bとを用い、
前記暗号化装置は、数4を含むベクトルを前記暗号ベクトルとして生成し、
前記復号装置は、数5を含むベクトルkを前記鍵ベクトルとして、前記暗号ベクトルを復号する
ことを特徴とする請求項1に記載の暗号処理システム。
【数2】

【数3】

【数4】

【数5】

【請求項8】
前記数2に示す疎行列の値B(i=1,...,n−1)の値は同一の値Bであり、
前記暗号化装置は、数6を含むベクトルCと数7を含むベクトルCとを含むベクトルを前記暗号ベクトルとして生成し、
前記復号装置は、数8に示すDを計算して、数9に示すペアリング演算を行う
ことを特徴とする請求項7に記載の暗号処理システム。
【数6】

【数7】

【数8】

【数9】

【請求項9】
前記数2に示す疎行列の値B(i=1,...,n−1)の値は同一の値Bであり、
前記暗号化装置は、数10を含むベクトルCと数11を含むベクトルCとを含むベクトルを前記暗号ベクトルとして生成し、
前記復号装置は、数12に示すDを計算して、数13に示すペアリング演算を行う
ことを特徴とする請求項7に記載の暗号処理システム。
【数10】

【数11】

【数12】

【数13】

【請求項10】
前記暗号処理システムは、1行1列からn行n列までの値が数14に示す疎行列であるN行N列(Nはn以上の整数)の線形変換Xを用いて、数15に示すように前記基底Aから生成された基底Bと基底Bとを用い、
前記暗号化装置は、数16を含むベクトルcを前記暗号ベクトルとして生成し、
前記復号装置は、数17を含むベクトルを前記鍵ベクトルとして、前記暗号ベクトルを復号する
ことを特徴とする請求項1に記載の暗号処理システム。
【数14】

【数15】

【数16】

【数17】

【請求項11】
前記数14に示す疎行列の値B(i=1,...,n−1)の値は同一の値Bであり、
前記復号装置は、数18を含むベクトルKと数19を含むベクトルKとを含むベクトルを前記鍵ベクトルとして、数20に示すDを計算して、数21に示すペアリング演算を行う
ことを特徴とする請求項10に記載の暗号処理システム。
【数18】

【数19】

【数20】

【数21】

【請求項12】
前記数14に示す疎行列の値B(i=1,...,n−1)の値は同一の値Bであり、
前記復号装置は、数22を含むベクトルKと数23を含むベクトルKとを含むベクトルを前記鍵ベクトルとして、数24に示すDを計算して、数25に示すペアリング演算を行う
ことを特徴とする請求項10に記載の暗号処理システム。
【数22】

【数23】

【数24】

【数25】

【請求項13】
各行各列に少なくとも1つは0以外の値を有する疎行列を用いて所定の基底Aを変形して生成された基底Bと基底Bを利用し、暗号処理を行う暗号処理方法であり、
暗号化装置が、前記基底Bにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成し、
復号装置が、前記基底Bにおける所定のベクトルを鍵ベクトルとして、前記暗号化装置が生成した暗号ベクトルと前記鍵ベクトルとについて、ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する
ことを特徴とする暗号処理方法。
【請求項14】
各行各列に少なくとも1つは0以外の値を有する疎行列を用いて所定の基底Aを変形して生成された基底Bと基底Bを利用し、暗号処理を行う暗号処理プログラムであり、
前記基底Bにおけるベクトルであって、所定の情報を埋め込んだベクトルを暗号ベクトルとして生成する暗号化処理と、
前記基底Bにおける所定のベクトルを鍵ベクトルとして、前記暗号化処理で生成した暗号ベクトルと前記鍵ベクトルとについて、ペアリング演算を行い前記暗号ベクトルを復号して前記所定の情報に関する情報を抽出する復号処理と
をコンピュータに実行させることを特徴とする暗号処理プログラム。
【請求項15】
公開鍵暗号における公開パラメータと秘密鍵とを生成する鍵生成装置であり、
各行各列に少なくとも1つは0以外の値を有する疎行列を含む線形変換Xを生成する行列生成部と、
前記行列生成部が生成した線形変換Xを用いて、所定の基底Aから数26に示すように基底Dと基底Dとを生成する基底生成部と、
前記基底生成部が生成した前記基底Dと前記基底Dとの一方の基底の少なくとも一部の基底ベクトルを公開パラメータとし、他方の基底の少なくとも一部の基底ベクトルを秘密鍵として生成するマスター鍵生成部と
を備えることを特徴とする鍵生成装置。
【数26】


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate