JP6885325B2 - 暗号化装置、復号装置、暗号化方法、復号方法、プログラム - Google Patents

暗号化装置、復号装置、暗号化方法、復号方法、プログラム Download PDF

Info

Publication number
JP6885325B2
JP6885325B2 JP2017250124A JP2017250124A JP6885325B2 JP 6885325 B2 JP6885325 B2 JP 6885325B2 JP 2017250124 A JP2017250124 A JP 2017250124A JP 2017250124 A JP2017250124 A JP 2017250124A JP 6885325 B2 JP6885325 B2 JP 6885325B2
Authority
JP
Japan
Prior art keywords
ske
vector
key
ciphertext
cyclic group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017250124A
Other languages
English (en)
Other versions
JP2019117232A (ja
Inventor
潤一 富田
潤一 富田
プラティッシュ ダッタ
プラティッシュ ダッタ
岡本 龍明
龍明 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2017250124A priority Critical patent/JP6885325B2/ja
Publication of JP2019117232A publication Critical patent/JP2019117232A/ja
Application granted granted Critical
Publication of JP6885325B2 publication Critical patent/JP6885325B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号方式の構成に関し、特に暗号文から平文の関数値を復号する関数型暗号に関する。
単一入力関数型暗号では、暗号文を復号するための鍵(復号鍵)に関数fを埋め込むことができる。関数fを埋め込んだ復号鍵を用いて入力xの暗号文を復号すると、関数値f(x)が復号される。
複数入力関数型暗号は、単一入力関数型暗号を拡張したものであり、1つの引数をもつ関数だけでなく、2以上の引数をもつ関数をも復号鍵に埋め込むことができる方式である。つまり、引数1, …, nに対応する値x1, …, xnの暗号文ct1, …, ctnがあるとき、引数1, …, nをとる関数fを埋め込んだ復号鍵skfを用いて暗号文ct1, …, ctnを復号すると、関数値f(x1, …, xn)が復号される。ただし、関数fがとる引数のうち、どれか1つでもその引数に対応する暗号文が存在しない場合は復号することができない。
内積関数型暗号は、扱う関数fを内積に限定した関数型暗号であり、複数入力内積関数型暗号では、復号鍵にn個のベクトルy1, …, ynが埋め込まれていて、n個のベクトルx1, …, xnをそれぞれ暗号化したn個の暗号文ct1, …, ctnを復号鍵で復号すると、関数値
Figure 0006885325
が復号されるというものである。
関数型暗号に対して関数秘匿性という性質がある。この関数秘匿性とは、関数を埋め込んだ復号鍵が、その関数を秘匿しているという性質である(内積関数型暗号の場合はベクトルが関数に対応する)。すなわち、ある関数を埋め込んだ復号鍵の所持者であっても、その埋め込まれた関数がどのような関数であるかを知ることができないという性質である。
従来、関数秘匿性を持つ単一入力内積関数型暗号(非特許文献1)や複数入力内積関数型暗号(非特許文献2)は構成されている。
A. Bishop, A. Jain, and L. Kowalczyk, "Function-hiding inner product encryption", In T. Iwata and J. H. Cheon, editors, ASIACRYPT 2015, Part I, vol. 9452 of LNCS, pp. 470-491, Springer, Heidelberg, Nov./Dec. 2015. M. Abdalla, R. Gay, M. Raykova, and H. Wee, "Multi-input inner-product functional encryption from pairings", In J. Coron and J. B. Nielsen, editors, EUROCRYPT 2017, Part I, vol. 10210 of LNCS, pp. 601-626, Springer, Heidelberg, May 2017.
しかし、関数秘匿性を持つ複数入力内積関数型暗号の構成方法は知られていない。内積関数型暗号は、クラウドサーバ上のデータベースに対する統計計算などへの応用が考えられる。例えば、当該データベースが個人情報のような機微な情報を含んでいる場合、どのような計算を行っているのかをサーバから秘匿する必要があることもある。そのような場合、関数秘匿性を持つ内積関数型暗号でなければ、サーバに対して復号鍵から計算内容が漏洩する可能性がある。
そこで本発明では、関数秘匿性を持つ複数入力内積関数型暗号技術を提供することを目的とする。
本発明の一態様は、Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、kを1以上の整数、f(x1, …, xn)=Σι∈[n]xι・yιを内積関数(ただし、nは1以上の整数、y1, …, ynは内積関数の定義に用いるm次元ベクトル)、νをe(G1, G2)ν=gTを満たすZpの要素、ppをアリティn、ベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、msk=(B1, …, Bn, B1 *, …, Bn *, κ1, …, κn)をマスター秘密鍵(ただし、B1, …, BnはZp上の2m+2k+1次元正則行列、Bι *=ν(Bι -1)T (ι∈[n])、KはSKE.Genにより生成した共通鍵暗号の秘密鍵、κ1, …, κnは次式を満たす秘密鍵Kと同じビット長のビット列)とし、
Figure 0006885325
m次元ベクトル{xι}ι∈[n]から暗号文{ctι}ι∈[n]を生成する暗号化装置であって、マスター秘密鍵mskを用いて、前記ベクトル{xι}ι∈[n]から次式により2m+2k+1次元ベクトル{cι}ι∈[n]を計算するベクトル計算部と、
Figure 0006885325
秘密鍵Kを用いて、前記ベクトル{cι}ι∈[n]から、Cι=SKE.Enc(K, cι) (ι∈[n])を計算し、マスター秘密鍵mskを用いて、前記暗号文{ctι}ι∈[n](ただし、ctι=(κι, Cι, ι))を生成する暗号文生成部とを含む。
本発明の一態様は、Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、k、λを1以上の整数、νをe(G1, G2)ν=gTを満たすZpの要素、ppをベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、msk=(D, D*, K1, K2)をマスター秘密鍵(ただし、DはZp上の2m+2k+1次元正則行列、D*=ν(D-1)T、K1, K2はλビットのビット列)とし、F1:{0, 1}λ×{0, 1}λ→Zp (2m+2k+1)×(2m+2k+1), F2: {0, 1}λ×{0, 1}λ→{0, 1}λを擬似ランダム関数、S={s1, …, s|S|}を引数のインデックス集合(ただし、siはインデックス集合Sの要素を昇順に並べたときのi番目の要素)、f({xι}ι∈S)=Σι∈Sxι・yιを内積関数(ただし、yι (ι∈S)は内積関数の定義に用いるm次元ベクトル)とし、m次元ベクトル{xι}ι∈Sから暗号文{ctι}ι∈Sを生成する暗号化装置であって、マスター秘密鍵mskを用いて、擬似ランダム関数値{Wι}ι∈S(ただし、Wι=F1(K1, ι)), {κι}ι∈S(ただし、κι=F2(K2, ι))を計算する擬似ランダム関数値計算部と、マスター秘密鍵mskを用いて、前記擬似ランダム関数値{Wι}ι∈Sから行列積{Bι}ι∈S(ただし、Bι=DWι)を計算する行列積計算部と、前記行列積{Bι}ι∈Sと前記ベクトル{xι}ι∈Sから次式により2m+2k+1次元ベクトル{cι}ι∈Sを計算するベクトル計算部と、
Figure 0006885325
前記擬似ランダム関数値{κι}ι∈Sと前記ベクトル{cι}ι∈Sから前記暗号文{ctι}ι∈S(ただし、ctι=(κι, cι, ι))を生成する暗号文生成部とを含む。
本発明によれば、関数秘匿性を持つ複数入力内積関数型暗号技術を構成することができる。
内積関数型暗号システム10の構成の一例を示すブロック図。 システムパラメータ生成装置100の構成の一例を示すブロック図。 鍵生成装置200の構成の一例を示すブロック図。 暗号化装置300の構成の一例を示すブロック図。 復号装置400の構成の一例を示すブロック図。 システムパラメータ生成装置100の動作の一例を示すフローチャート。 マスター秘密鍵生成部120の動作の一例を示すフローチャート。 鍵生成装置200の動作の一例を示すフローチャート。 暗号化装置300の動作の一例を示すフローチャート。 復号装置400の動作の一例を示すフローチャート。 内積関数型暗号システム50の構成の一例を示すブロック図。 システムパラメータ生成装置500の構成の一例を示すブロック図。 鍵生成装置600の構成の一例を示すブロック図。 暗号化装置700の構成の一例を示すブロック図。 復号装置800の構成の一例を示すブロック図。 システムパラメータ生成装置500の動作の一例を示すフローチャート。 マスター秘密鍵生成部520の動作の一例を示すフローチャート。 鍵生成装置600の動作の一例を示すフローチャート。 暗号化装置700の動作の一例を示すフローチャート。 復号装置800の動作の一例を示すフローチャート。
以下、本発明の実施形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
<記法・用語>
まず、記法や基礎的概念に関する用語について説明する。
ベクトルは行ベクトルとして扱う。
集合Sからその要素sをランダムに選ぶことをs←USと表記する。
集合Sに対し、|S|を集合Sの要素数とする。
Zを整数の集合、pを素数とし、Zp=Z/pZとする。
自然数nに対してn以下の自然数の集合を[n]と表記する。
m次元ベクトル空間において、ある基底Bの一次結合でベクトルvを表すとき、それぞれの係数がa1, …, amであるとする。このとき、v=(a1, …, am)Bと表記する。
次に、本発明の実施形態で用いる要素技術について説明する。
[共通鍵暗号]
共通鍵暗号SKEは鍵生成アルゴリズムSKE.Gen、暗号化アルゴリズムSKE.Enc、復号アルゴリズムSKE.Decの3つのアルゴリズムにより構成される。つまり、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)である。鍵生成アルゴリズムSKE.Genは秘密鍵Kを出力する。暗号化アルゴリズムSKE.Encは、秘密鍵Kとメッセージmを入力とし、暗号文cを出力する。つまり、c=SKE.Enc(K, m)となる。復号アルゴリズムSKE.Decは、秘密鍵Kと暗号文cを入力とし、メッセージm(またはエラー⊥)を出力する。つまり、m=SKE.Dec(K, c)となる。
なお、本発明の実施形態で説明する内積関数型暗号技術が安全であるためには、ある種の識別不可能性(具体的には、Indistinguishability under Chosen-Plaintext Attack(選択的平文攻撃のもとでの識別不可能性))を満たす共通鍵暗号を用いる必要がある。共通鍵暗号及び上記識別不可能性については、例えば、参考非特許文献1に記載されている。
(参考非特許文献1:COSC 530: Lecture Notes on Symmetric-Key Encryption, [online], [平成29年12月4日検索]、インターネット<URL: http://people.cs.georgetown.edu/~adam/fa15530/cs530-lec4.pdf>)
[擬似ランダム関数]
PRF={Fк: FSк×Domк→Rngк}кを鍵空間{FSк}к、定義域{Domк}к、値域{Rngк}кを持つ関数族とする。このとき、もし任意の多項式時間の識別者Dに対して、関数Fкと真正ランダム関数RFк: Domк→Rngкが見分けられなければ、PRF={Fк}кを擬似ランダム関数族と呼ぶ。擬似ランダム関数の具体例は、例えば、参考非特許文献2に記載されている。
(参考非特許文献2:O.ゴールドライヒ,“現代暗号・確率的証明・擬似乱数”,シュプリンガー・フェアラーク東京,2001年)
なお、共通鍵暗号及び擬似ランダム関数は任意の一方向性関数から構成できることが広く知られている。また、実用上、共通鍵暗号を実現したものとしてAES(Advanced Encryption Standard)を用いることが多い。
[双対ペアリングベクトル空間(DPVS: Dual Pairing Vector Space)]
位数が素数pの巡回群~G1, ~G2, ~GTを考える。また、巡回群~G1, ~G2, ~GTの生成元をそれぞれG1, G2, gTとする。これらの巡回群の間には非退化双線型写像e: ~G1×~G2→~GTがあるものとする。このとき、~V=~G1 m, ~V*=~G2 mはそれぞれZp上のm次元ベクトル空間となり、これらを合わせて双対ペアリングベクトル空間DPVS=(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)と呼ぶ。詳しくは、例えば、参考非特許文献3に記載されている。
(参考非特許文献3:T. Okamoto and K. Takashima, “Fully secure functional encryption with general relations from the decisional linear assumption”, In T. Rabin, editor, CRYPTO 2010, vol. 6223 of LNCS, pp. 191-208, Springer, Heidelberg, Aug. 2010.)
また、Zp上のm次正方行列Bをランダムに選び、その双対行列B*をB*=ν(B-1)T(νはZpのランダムな値)と定義する。そして、双対ペアリングベクトル空間DPVS上の行列~B、~B*を、それぞれ行列BをG1の係数に持つ行列、行列B*をG2の係数に持つ行列と定義する。すなわち、B=(bi,j) (1≦i, j≦n), B*=(b* i,j) (1≦i, j≦n)とすると、~B=(bi,jG1) (1≦i, j≦n), ~B*=(b* i,jG2) (1≦i, j≦n)である。このとき、~B, ~B*の各行はそれぞれ~V, ~V*の基底となる。
さらに、双対ペアリングベクトル空間DPVSのベクトル(x)~B, (y)~B*に対して、e((x)~B, (y)~B*)を各要素のペアリングの積によりe(G1, G2)νx.yを求める関数とする。(x)~B, (y)~B*はそれぞれ~Bの各行を基底ベクトルとする一次結合として表されるベクトル、~B*の各行を基底ベクトルとする一次結合として表されるベクトルであり、x・yは内積を表す。
なお、以下では、巡回群~G1, ~G2, ~GTはk-線形仮定と呼ばれる性質が成り立つ双線型群であるとする。双線型群の具体例は、例えば、参考非特許文献4に記載されている。また、k-線形仮定の定義については、例えば、参考非特許文献5に記載されている。k-線形仮定が成り立つ双線型群を楕円曲線から構成する一例が参考非特許文献5に、上記楕円曲線のより一般的な構成方法が参考非特許文献6に記載されている。
(参考非特許文献4:D. Boneh and M. K. Franklin, “Identity-based encryption from the Weil pairing”, In J. Kilian, editor, CRYPTO 2001, vol. 2139 of LNCS, pp. 213-229, Springer, Heidelberg, Aug. 2001.)
(参考非特許文献5:Allison B. Lewko and Brent Waters, “Efficient pseudorandom functions from the decisional linear assumption and weaker variants”, Proceedings of the 2009 ACM Conference on Computer and Communications Security, CCS 2009, Chicago, Illinois, USA, pp. 112-120, Nov. 2009.)
(参考非特許文献6:David Freeman, Michael Scott and Edlyn Teske, “A taxonomy of pairing-friendly elliptic curves, IACR Cryptology ePrint Archive, vol. 2006, pp. 372, http://eprint.iacr.org/2006/372, 2006.)
<技術的背景>
以下、2つの関数秘匿性を持つ複数入力内積関数型暗号について説明する。1つ目が引数に制限がある複数入力内積関数型暗号であり、2つ目が引数に制限がない複数入力内積関数型暗号である。ここで、引数に制限がないとは、当該暗号の利用開始時に引数の集合を決定する必要がなく、暗号化や復号鍵生成時に任意の引数を指定できることをいう。
引数に制限がある複数入力内積関数型暗号では、暗号の利用開始時に扱う引数の集合をあらかじめ決定する必要があり、それ以降変更することができない。そして、復号鍵はその決定された引数の集合に対するものしか作ることができない。しかし、暗号化したいデータは、随時増えていくことが通常であり、利用開始時に扱う引数を固定することは非常に不都合である。このような場合に、引数に制限がない複数入力内積関数型暗号は有効である。
以下、まず、引数に制限がある複数入力内積関数型暗号について説明する。その後、引数に制限がない複数入力内積関数型暗号について説明する。
[引数に制限がある複数入力内積関数型暗号]
引数に制限がある複数入力内積関数型暗号は、Setup, KeyGen, Enc, Decの4つのアルゴリズムから構成される。
(セットアップアルゴリズムSetup(k, n, m, 1λ))
kを任意の自然数とする。ただし、kの値が大きいほど安全性は高くなる。
セットアップアルゴリズムSetupは、公開パラメータppとマスター秘密鍵mskを生成、出力する。公開パラメータppを、内積関数の引数の数であるアリティn(nは1以上の整数)、内積関数の定義に用いるベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTとする。このとき、e(G1, G2)ν=gT(νはZpの要素)となるようにする。また、マスター秘密鍵mskを以下のように生成する。
(1) Zp上の2m+2k+1次元正則行列B1, …, Bnをランダムに選ぶ。
(2) すべてのι∈[n]に対して、Bι *=ν(Bι -1)Tとする。
(3) SKE.Genにより生成した共通鍵暗号の秘密鍵Kとする。
(4) 秘密鍵Kと同じビット長λのビット列κ1, …, κnを以下の式を満たすようにランダムに選ぶ。
Figure 0006885325
(5) msk=(B1, …, Bn, B1 *, …, Bn *, κ1, …, κn)とする。
(鍵生成アルゴリズムKeyGen(pp, msk, {yι}ι∈[n]))
鍵生成アルゴリズムKeyGenは、引数のインデックス1, …, nに対応するm次元ベクトルy1, …, ynを埋め込んだ復号鍵skを生成、出力する。具体的には、復号鍵skを以下のように生成する。なお、m次元ベクトルy1, …, ynが内積関数の定義に用いるベクトルである。
(1) {rι}ι∈[n]をZpから以下の式を満たすようにランダムに選ぶ。
Figure 0006885325
(2) すべてのι∈[n]に対して、2m+2k+1次元ベクトルkιを以下のように計算する。なお、0iは0のi個の列を表す。
Figure 0006885325
つまり、ベクトルkιは行列~Bι *の各行を基底ベクトルとする一次結合として計算される。
(3) sk=SKE.Enc(K, {kι}ι∈[n])とする。
(暗号化アルゴリズムEnc(pp, msk, ι, xι))
暗号化アルゴリズムEncは、入力されたm次元ベクトルxιを引数のインデックスιに対応させて暗号化し、暗号文ctιを生成、出力する。具体的には、暗号文ctιを以下のように生成する。
(1) 2m+2k+1次元ベクトルcιを以下のように計算する。
Figure 0006885325
つまり、ベクトルcιは行列~Bιの各行を基底ベクトルとする一次結合として計算される。
(2) Cι=SKE.Enc(K, cι)とし、ctι=(κι, Cι, ι)とする。
(復号アルゴリズムDec(pp, sk, {ctι}ι∈[n]))
復号アルゴリズムDecは、引数1, …, nに対応する暗号文ct1, …, ctnを一つずつとり、復号鍵skを用いてそれらを復号、関数値Σxι・yιを生成、出力する。具体的には、関数値Σxι・yιを以下のように生成する。
(1) 共通鍵暗号の秘密鍵K'を以下の式で計算する。
Figure 0006885325
(2) {k'ι}ι∈[n]=SKE.Dec(K', sk)、c'ι=SKE.Dec(K', Cι) (ι∈[n])と計算する。
(3) hTを以下の式で計算する。
Figure 0006885325
なお、式(6)の右辺のeは、<記法・用語>で説明したように、非退化双線型写像eを用いて定義される双対ペアリングベクトル空間DPVS上の関数である。
(4) gT z=hTを満たすz(zはZpの要素)を探索し、見つかったらそれを関数値Σxι・yιとして出力する。
[引数に制限がない複数入力内積関数型暗号]
ここでは、共通鍵暗号の鍵生成アルゴリズムSKE.Genが出力する秘密鍵はλビットのビット列集合からランダムに選んだビット列であるものとする。また、kを任意の自然数として、F1, F2をF1:{0, 1}λ×{0, 1}λ→Zp (2m+2k+1)×(2m+2k+1), F2: {0, 1}λ×{0, 1}λ→{0, 1}λであるような鍵空間、定義域、値域を持つ擬似ランダム関数とする。さらに、引数のインデックス集合をSとし、集合Sの要素を昇順に並べたときのi番目の要素をsiと表記する。
引数に制限がない複数入力内積関数型暗号は、Setup, KeyGen, Enc, Decの4つのアルゴリズムから構成される。
(セットアップアルゴリズムSetup(k, m, 1λ))
kは任意の自然数とする。ただし、kの値が大きいほど安全性は高くなる。
セットアップアルゴリズムSetupは、公開パラメータppとマスター秘密鍵mskを生成、出力する。公開パラメータppを、内積関数の定義に用いるベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTとする。このとき、e(G1, G2)ν=gT(νはZpの要素)となるようにする。また、マスター秘密鍵mskを以下のように生成する。
(1) 2m+2k+1次元正則行列Dをランダムに選ぶ。
(2) D*=ν(D-1)Tとする。
(3) 擬似ランダム関数の鍵K1, K2をλビットのビット列としてランダムに選ぶ。
(4) msk=(D, D*, K1, K2)とする。
(鍵生成アルゴリズムKeyGen(pp, msk, S, {yι}ι∈S))
鍵生成アルゴリズムKeyGenは、引数のインデックス集合Sと集合Sに対応するm次元ベクトル{yι}ι∈Sを入力とし、ベクトル{yι}ι∈Sを埋め込んだ復号鍵skSを生成、出力する。具体的には、復号鍵skSを以下のように生成する。なお、m次元ベクトル{yι}ι∈Sが内積関数の定義に用いるベクトルである。
(1) すべてのι∈Sに対して、擬似ランダム関数値Wι=F1(K1, ι), κι=F2(K2, ι)を計算する。ここで、Wιは、Zp上の2m+2k+1次元行列、κιは、λビットのビット列である。
(2) すべてのι∈Sに対して、Bι *=D*(Wι -1)Tとする。Wιが一つでも逆行列を持たなかった場合は処理を終了する。
(3) {rι}ι∈SをZpから以下の式を満たすようにランダムに選ぶ。
Figure 0006885325
(4) すべてのι∈Sに対して、2m+2k+1次元ベクトルkιを以下のように計算する。
Figure 0006885325
つまり、ベクトルkιは行列~Bι *の各行を基底ベクトルとする一次結合として計算される。
(5) {kι}ι∈Sを以下のように繰り返し暗号化する。
Figure 0006885325
(6) skS=(C|S|, S)とする。
(暗号化アルゴリズムEnc(pp, msk, ι, xι))
暗号化アルゴリズムEncは、入力されたベクトルxιを引数のインデックスιに対応させて暗号化し、暗号文ctιを生成、出力する。具体的には、暗号文ctιを以下のように生成する。
(1) 擬似ランダム関数値Wι=F1(K1, ι), κι=F2(K2, ι)を計算する。
(2) Bι=DWιとする。
(3) 2m+2k+1次元ベクトルcιを以下のように計算する。
Figure 0006885325
つまり、ベクトルcιは行列~Bιの各行を基底ベクトルとする一次結合として計算される。
(4) ctι=(κι, cι, ι)とする。
(復号アルゴリズムDec(pp, skS, {ctι}ι∈S))
復号アルゴリズムDecは、引数のインデックス集合Sの要素に対応する暗号文{ctι}ι∈Sを一つずつとり、集合Sに対応する復号鍵skSを用いてそれらを復号、関数値Σxι・yιを生成、出力する。具体的には、関数値Σxι・yιを以下のように生成する。
(1) 共通鍵暗号で暗号化されている復号鍵skSを、暗号文に添付されている秘密鍵{κι}ι∈Sで繰り返し復号する。
Figure 0006885325
(2) hTを以下の式で計算する。
Figure 0006885325
なお、式(12)の右辺のeは、<記法・用語>で説明したように、非退化双線型写像eを用いて定義される双対ペアリングベクトル空間DPVS上の関数である。
(3) gT z=hTを満たすz(zはZpの要素)を探索し、見つかったらそれを関数値Σxι・yιとして出力する。
<第一実施形態>
ここでは、<技術的背景>の[引数に制限がある複数入力内積関数型暗号]で説明した内積関数型暗号を実行するシステムである内積関数型暗号システム10について説明する。
以下、<記法・用語>で説明したように、Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とする。なお、巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であるとする。
[システム構成]
図1を参照して、内積関数型暗号システム10について説明する。図1は、内積関数型暗号システム10の構成の一例を示すブロック図である。内積関数型暗号システム10は、システムパラメータ生成装置100、鍵生成装置200、暗号化装置300、復号装置400を含む。システムパラメータ生成装置100、鍵生成装置200、暗号化装置300、復号装置400は、インターネットなどのネットワーク900に接続し、相互に通信可能である。
次に、図2〜図5を参照して、システムパラメータ生成装置100、鍵生成装置200、暗号化装置300、復号装置400の各装置について説明する。図2は、システムパラメータ生成装置100の構成の一例を示すブロック図である。システムパラメータ生成装置100は、公開パラメータ生成部110、マスター秘密鍵生成部120、送受信部180、記録部190を含む。更に、マスター秘密鍵生成部120は、正則行列生成部121、双対行列計算部122、ビット列生成部123、マスター秘密鍵出力部124を含む。送受信部180は、システムパラメータ生成装置100がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部190は、システムパラメータ生成装置100の処理に必要な情報を適宜記録する構成部である。例えば、生成した公開パラメータppやマスター秘密鍵mskを記録する。また、共通鍵暗号の秘密鍵Kを記録しておく。
図3は、鍵生成装置200の構成の一例を示すブロック図である。鍵生成装置200は、Zp要素生成部210、ベクトル計算部220、復号鍵生成部230、送受信部280、記録部290を含む。送受信部280は、鍵生成装置200がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部290は、鍵生成装置200の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成装置100から取得した公開パラメータppやマスター秘密鍵mskを記録する。また、生成した復号鍵skを記録する。さらに、共通鍵暗号の秘密鍵Kを記録しておく。
図4は、暗号化装置300の構成の一例を示すブロック図である。暗号化装置300は、ベクトル計算部310、暗号文生成部320、送受信部380、記録部390を含む。送受信部380は、暗号化装置300がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部390は、暗号化装置300の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成装置100から取得した公開パラメータppやマスター秘密鍵mskを記録する。また、共通鍵暗号の秘密鍵Kを記録しておく。
図5は、復号装置400の構成の一例を示すブロック図である。復号装置400は、秘密鍵計算部410、ベクトル復号部420、双線型写像計算部430、関数値生成部440、送受信部480、記録部490を含む。送受信部480は、復号装置400がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部490は、復号装置400の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成装置100から取得した公開パラメータppを記録する。また、鍵生成装置200から取得した復号鍵skを記録する。
[各装置における処理]
以下、図6〜図10を参照して、システムパラメータ生成装置100、鍵生成装置200、暗号化装置300、復号装置400の各装置における処理について説明する。
ここで、kを1以上の整数、f(x1, …, xn)=Σι∈[n]xι・yιを内積関数(ただし、nは1以上の整数、y1, …, ynは内積関数の定義に用いるm次元ベクトル)とする。
(システムパラメータ生成装置100における処理)
システムパラメータ生成装置100は、セットアップアルゴリズムSetupに対応する処理を実行する装置である。システムパラメータ生成装置100は、公開パラメータppとマスター秘密鍵mskを生成する。以下、生成手順について説明する(図6参照)。
公開パラメータ生成部110は、公開パラメータppを生成する(S110)。公開パラメータppは、内積関数の引数の数であるアリティn、内積関数の定義に用いるベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTである。このとき、e(G1, G2)ν=gT(νはZpの要素)となるようにする。
マスター秘密鍵生成部120は、マスター秘密鍵mskを生成する(S120)。以下、図7を参照して、具体的に説明する。正則行列生成部121は、Zp上の2m+2k+1次元正則行列B1, …, Bnをランダムに生成する(S121)。
双対行列計算部122は、S121で生成した正則行列B1, …, BnからZp上の2m+2k+1次元行列である双対行列B1 *, …, Bn *を計算する(S122)。具体的には、Bι *=ν(Bι -1)T (ι∈[n])とする。
ビット列生成部123は、共通鍵暗号の秘密鍵Kと同じビット長のビット列κ1, …, κnを所定の式を満たすようにランダムに生成する(S123)。ここで、所定の式とは式(1)のことである。また、秘密鍵Kは、共通鍵暗号の鍵生成アルゴリズムSKE.Genを用いて生成された秘密鍵である。
マスター秘密鍵出力部124は、S121で生成した正則行列B1, …, Bn、S122で計算した双対行列B1 *, …, Bn *、S123で生成したビット列κ1, …, κnからマスター秘密鍵mskをmsk=(B1, …, Bn, B1 *, …, Bn *, κ1, …, κn)として生成、出力する。(S124)。
鍵生成装置200、暗号化装置300は、公開パラメータppとマスター秘密鍵mskを、復号装置400は公開パラメータppを取得し、それぞれ記録部に記録する。取得方法はどのようなものでもよく、例えば、システムセットアップ装置100が各装置に送信するようにするとよい。
(鍵生成装置200における処理)
鍵生成装置200は、鍵生成アルゴリズムKeyGenに対応する処理を実行する装置である。鍵生成装置200は、内積関数の定義に用いるm次元ベクトル{yι}ι∈[n]から復号鍵skを生成する。以下、生成手順について説明する(図8参照)。
Zp要素生成部210は、{rι}ι∈[n]をZpから所定の式を満たすようにランダムに生成する(S210)。ここで、所定の式とは式(2)のことである。
ベクトル計算部220は、マスター秘密鍵mskとm次元ベクトル{yι}ι∈[n]を用いて、S210で生成した{rι}ι∈[n]から、所定の式により2m+2k+1次元ベクトル{kι}ι∈[n]を計算する(S220)。ここで、所定の式とは式(3)のことである。
復号鍵生成部230は、共通鍵暗号の秘密鍵Kを用いて、S220で計算したベクトル{kι}ι∈[n]から、復号鍵skをsk=SKE.Enc(K, {kι}ι∈[n])として生成する(S230)。
復号装置400は復号鍵skを取得し、記録部490に記録する。取得方法はどのようなものでもよく、例えば、鍵生成装置200が復号装置400に送信するようにするとよい。
(暗号化装置300における処理)
暗号化装置300は、暗号化アルゴリズムEncに対応する処理を実行する装置である。暗号化装置300は、暗号化対象であるm次元ベクトル{xι}ι∈[n]から暗号文{ctι}ι∈[n]を生成する。以下、生成手順について説明する(図9参照)。
ベクトル計算部310は、マスター秘密鍵mskを用いて、m次元ベクトル{xι}ι∈[n]から所定の式により2m+2k+1次元ベクトル{cι}ι∈[n]を計算する(S310)。ここで、所定の式とは式(4)のことである。
暗号文生成部320は、共通鍵暗号の秘密鍵Kを用いて、S310で計算したベクトル{cι}ι∈[n]から、Cι=SKE.Enc(K, cι) (ι∈[n])を計算し、マスター秘密鍵mskを用いて、暗号文{ctι}ι∈[n](ただし、ctι=(κι, Cι, ι))を生成する(S320)。
復号装置400は暗号文{ctι}ι∈[n]を取得し、記録部490に記録する。取得方法はどのようなものでもよく、例えば、暗号化装置300が復号装置400に送信するようにするとよい。
(復号装置400における処理)
復号装置400は、復号アルゴリズムDecに対応する処理を実行する装置である。復号装置400は、暗号文{ctι}ι∈[n]から関数値f(x1, …, xn)=Σι∈[n]xι・yιを生成する。以下、生成手順について説明する(図10参照)。
秘密鍵計算部410は、暗号文{ctι}ι∈[n]から、所定の式により共通鍵暗号の秘密鍵K'を計算する(S410)。ここで、所定の式とは式(5)のことである。
ベクトル復号部420は、S410で計算した秘密鍵K'を用いて、復号鍵skと暗号文{ctι}ι∈[n]から、{k'ι}ι∈[n]=SKE.Dec(K', sk)と{c'ι}ι∈[n](ただし、c'ι=SKE.Dec(K', Cι))を計算する(S420)。
双線型写像計算部430は、S420で計算した{k'ι}ι∈[n]と{c'ι}ι∈[n]から、所定の式により双線型写像値hTを計算する(S430)。ここで、所定の式とは式(6)のことである。
関数値生成部440は、S430で計算した双線型写像値hTに対してgT z=hTを満たすZpの要素zを関数値f(x1, …, xn)として生成する(S440)。
本実施形態の発明によれば、関数秘匿性を持つ複数入力内積関数型暗号技術を構成することができる。これにより、クラウドサーバ上での計算を、複数入力内積関数型暗号を用いて実行する際に、どのような計算を行っているのかをサーバから秘匿したまま計算結果を得ることが可能になる。
<第二実施形態>
ここでは、<技術的背景>の[引数に制限がない複数入力内積関数型暗号]で説明した内積関数型暗号を実行するシステムである内積関数型暗号システム50について説明する。
以下、<記法・用語>で説明したように、Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とする。なお、巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であるとする。
[システム構成]
図11を参照して、内積関数型暗号システム50について説明する。図11は、内積関数型暗号システム50の構成の一例を示すブロック図である。内積関数型暗号システム50は、システムパラメータ生成装置500、鍵生成装置600、暗号化装置700、復号装置800を含む。システムパラメータ生成装置500、鍵生成装置600、暗号化装置700、復号装置800は、インターネットなどのネットワーク900に接続し、相互に通信可能である。
次に、図12〜図15を参照して、システムパラメータ生成装置500、鍵生成装置600、暗号化装置700、復号装置800の各装置について説明する。図12は、システムパラメータ生成装置500の構成の一例を示すブロック図である。システムパラメータ生成装置500は、公開パラメータ生成部510、マスター秘密鍵生成部520、送受信部580、記録部590を含む。更に、マスター秘密鍵生成部520は、正則行列生成部521、双対行列計算部522、鍵生成部523、マスター秘密鍵出力部524を含む。送受信部580は、システムパラメータ生成装置500がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部590は、システムパラメータ生成装置500の処理に必要な情報を適宜記録する構成部である。例えば、生成した公開パラメータppやマスター秘密鍵mskを記録する。
図13は、鍵生成装置600の構成の一例を示すブロック図である。鍵生成装置600は、擬似ランダム関数値計算部610、行列積計算部620、Zp要素生成部630、ベクトル計算部640、ベクトル暗号化部650、復号鍵生成部660、送受信部680、記録部690を含む。送受信部680は、鍵生成装置600がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部690は、鍵生成装置600の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成装置500から取得した公開パラメータppやマスター秘密鍵mskを記録する。また、生成した復号鍵sksを記録する。
図14は、暗号化装置700の構成の一例を示すブロック図である。暗号化装置700は、擬似ランダム関数値計算部710、行列積計算部720、ベクトル計算部730、暗号文生成部740、送受信部780、記録部790を含む。送受信部780は、暗号化装置700がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部790は、暗号化装置700の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成装置500から取得した公開パラメータppやマスター秘密鍵mskを記録する。
図15は、復号装置800の構成の一例を示すブロック図である。復号装置800は、ベクトル復号部810、双線型写像計算部820、関数値生成部830、送受信部880、記録部890を含む。送受信部880は、復号装置800がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部890は、復号装置800の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成装置500から取得した公開パラメータppを記録する。また、鍵生成装置600から取得した復号鍵sksを記録する。
[各装置における処理]
以下、図16〜図20を参照して、システムパラメータ生成装置500、鍵生成装置600、暗号化装置700、復号装置800の各装置における処理について説明する。
ここで、k、λを1以上の整数とする。また、F1:{0, 1}λ×{0, 1}λ→Zp (2m+2k+1)×(2m+2k+1), F2: {0, 1}λ×{0, 1}λ→{0, 1}λを擬似ランダム関数とする。さらに、S={s1, …, s|S|}を引数のインデックス集合(ただし、siはインデックス集合Sの要素を昇順に並べたときのi番目の要素)、f({xι}ι∈S)=Σι∈Sxι・yιを内積関数(ただし、yι (ι∈S)は内積関数の定義に用いるm次元ベクトル)とする。ただし、インデックス集合Sと内積関数f({xι}ι∈S)については、鍵生成装置600または暗号化装置700のいずれかによる処理開始前までに指定するようにすればよい。
(システムパラメータ生成装置500における処理)
システムパラメータ生成装置500は、セットアップアルゴリズムSetupに対応する処理を実行する装置である。システムパラメータ生成装置500は、公開パラメータppとマスター秘密鍵mskを生成する。以下、生成手順について説明する(図16参照)。
公開パラメータ生成部510は、公開パラメータppを生成する(S510)。公開パラメータppは、内積関数の定義に用いるベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTである。このとき、e(G1, G2)ν=gT(νはZpの要素)となるようにする。
マスター秘密鍵生成部520は、マスター秘密鍵mskを生成する(S520)。以下、図17を参照して、具体的に説明する。正則行列生成部521は、Zp上の2m+2k+1次元正則行列Dをランダムに生成する(S521)。
双対行列計算部522は、S521で生成した正則行列DからZp上の2m+2k+1次元行列である双対行列D*を計算する(S522)。具体的には、D*=ν(D-1)Tとする。
鍵生成部523は、擬似ランダム関数の鍵K1, K2をλビットのビット列としてランダムに生成する(S523)。
マスター秘密鍵出力部524は、S521で生成した正則行列D、S522で計算した双対行列D*、S523で生成した鍵K1, K2からマスター秘密鍵mskをmsk=(D, D*, K1, K2)として生成、出力する。(S524)。
鍵生成装置600、暗号化装置700は、公開パラメータppとマスター秘密鍵mskを、復号装置800は公開パラメータppを取得し、それぞれ記録部に記録する。取得方法はどのようなものでもよく、例えば、システムセットアップ装置500が各装置に送信するようにするとよい。
(鍵生成装置600における処理)
鍵生成装置600は、鍵生成アルゴリズムKeyGenに対応する処理を実行する装置である。鍵生成装置600は、インデックス集合Sと内積関数の定義に用いるm次元ベクトル{yι}ι∈Sから復号鍵sksを生成する。以下、生成手順について説明する(図18参照)。
擬似ランダム関数値計算部610は、マスター秘密鍵mskを用いて、擬似ランダム関数値{Wι}ι∈S(ただし、Wι=F1(K1, ι)), {κι}ι∈S(ただし、κι=F2(K2, ι))を計算する(S610)。
行列積計算部620は、マスター秘密鍵mskを用いて、S610で計算した擬似ランダム関数値{Wι}ι∈Sから行列積{Bι *}ι∈S(ただし、Bι *=D*(Wι -1)T)を計算する(S620)。
Zp要素生成部630は、{rι}ι∈SをZpから所定の式を満たすようにランダムに生成する(S630)。ここで、所定の式とは式(7)のことである。
ベクトル計算部640は、m次元ベクトル{yι}ι∈Sを用いて、S620で計算した行列積{Bι *}ι∈SとS630で生成した{rι}ι∈Sから、所定の式により2m+2k+1次元ベクトル{kι}ι∈Sを計算する(S640)。ここで、所定の式とは式(8)のことである。
ベクトル暗号化部650は、S610で計算した擬似ランダム関数値{κι}ι∈SとS640で計算したベクトル{kι}ι∈Sから所定の式によりC|S|を計算する(S650)。ここで、所定の式とは式(9)のことである。
復号鍵生成部660は、インデックス集合Sを用いて、S650で計算したC|S|から復号鍵sksをskS=(C|S|, S)として生成する(S660)。
復号装置800は復号鍵sksを取得し、記録部890に記録する。取得方法はどのようなものでもよく、例えば、鍵生成装置600が復号装置800に送信するようにするとよい。
(暗号化装置700における処理)
暗号化装置700は、暗号化アルゴリズムEncに対応する処理を実行する装置である。暗号化装置700は、インデックス集合Sと暗号化対象であるm次元ベクトル{xι}ι∈Sから暗号文{ctι}ι∈Sを生成する。以下、生成手順について説明する(図19参照)。
擬似ランダム関数値計算部710は、マスター秘密鍵mskを用いて、擬似ランダム関数値{Wι}ι∈S(ただし、Wι=F1(K1, ι)), {κι}ι∈S(ただし、κι=F2(K2, ι))を計算する(S710)。
行列積計算部720は、マスター秘密鍵mskを用いて、S710で計算した擬似ランダム関数値{Wι}ι∈Sから行列積{Bι}ι∈S(ただし、Bι=DWι)を計算する(S720)。
ベクトル計算部730は、S720で計算した行列積{Bι}ι∈Sとm次元ベクトル{xι}ι∈Sから所定の式により2m+2k+1次元ベクトル{cι}ι∈Sを計算する(S730)。ここで、所定の式とは式(10)のことである。
暗号文生成部740は、S710で計算した擬似ランダム関数値{κι}ι∈SとS730で計算したベクトル{cι}ι∈Sから暗号文{ctι}ι∈S(ただし、ctι=(κι, cι, ι))を生成する(S740)。
復号装置800は暗号文{ctι}ι∈Sを取得し、記録部890に記録する。取得方法はどのようなものでもよく、例えば、暗号化装置700が復号装置800に送信するようにするとよい。
(復号装置800における処理)
復号装置800は、復号アルゴリズムDecに対応する処理を実行する装置である。復号装置800は、暗号文{ctι}ι∈Sから関数値f({xι}ι∈S)=Σι∈Sxι・yιを生成する。以下、生成手順について説明する(図20参照)。
ベクトル復号部810は、暗号文{ctι}ι∈Sを用いて、復号鍵sksから所定の式により{k'ι}ι∈Sを計算する(S810)。ここで、所定の式とは式(11)のことである。
双線型写像計算部820は、S810で計算した{k'ι}ι∈S と暗号文{ctι}ι∈Sから、所定の式により双線型写像値hTを計算する(S820)。ここで、所定の式とは式(12)のことである。
関数値生成部830は、S820で計算した双線型写像値hTに対してgT z=hTを満たすZpの要素zを関数値f({xι}ι∈S)として生成する(S830)。
本実施形態の発明によれば、関数秘匿性を持つ複数入力内積関数型暗号技術を構成することができる。これにより、クラウドサーバ上での計算を、複数入力内積関数型暗号を用いて実行する際に、どのような計算を行っているのかをサーバから秘匿したまま計算結果を得ることが可能になる。また、暗号利用開始時に引数の集合を決める必要がなくなり、暗号化、鍵生成を行う際に引数を自由に設定できるようになるため実用上非常に便利になる。
<補記>
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD−ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (8)

  1. Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、
    前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、
    kを1以上の整数、f(x1, …, xn)=Σι∈[n]xι・yιを内積関数(ただし、nは1以上の整数、y1, …, ynは内積関数の定義に用いるm次元ベクトル)、νをe(G1, G2)ν=gTを満たすZpの要素、ppをアリティn、ベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、msk=(B1, …, Bn, B1 *, …, Bn *, κ1, …, κn)をマスター秘密鍵(ただし、B1, …, BnはZp上の2m+2k+1次元正則行列、Bι *=ν(Bι -1)T (ι∈[n])、KはSKE.Genにより生成した共通鍵暗号の秘密鍵、κ1, …, κnは次式を満たす秘密鍵Kと同じビット長のビット列)とし、
    Figure 0006885325
    m次元ベクトル{xι}ι∈[n]から暗号文{ctι}ι∈[n]を生成する暗号化装置であって、
    マスター秘密鍵mskを用いて、前記ベクトル{xι}ι∈[n]から次式により2m+2k+1次元ベクトル{cι}ι∈[n]を計算するベクトル計算部と、
    Figure 0006885325
    秘密鍵Kを用いて、前記ベクトル{cι}ι∈[n]から、Cι=SKE.Enc(K, cι) (ι∈[n])を計算し、マスター秘密鍵mskを用いて、前記暗号文{ctι}ι∈[n](ただし、ctι=(κι, Cι, ι))を生成する暗号文生成部と
    を含む暗号化装置。
  2. Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、
    前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、
    kを1以上の整数、f(x1, …, xn)=Σι∈[n]xι・yιを内積関数(ただし、nは1以上の整数、y1, …, ynは内積関数の定義に用いるm次元ベクトル)、νをe(G1, G2)ν=gTを満たすZpの要素、ppをアリティn、ベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、sk=SKE.Enc(K, {kι}ι∈[n])を復号鍵(ただし、{rι}ι∈[n]はΣι∈[n]rι=0を満たすZpの要素、B1, …, BnはZp上の2m+2k+1次元正則行列、Bι *=ν(Bι -1)T (ι∈[n])、{kι}ι∈[n]は次式で計算される2m+2k+1次元ベクトル)とし、
    Figure 0006885325
    前記復号鍵skを用いて、m次元ベクトル{x ι } ι∈[n] から生成された暗号文{ctι}ι∈[n](ただし、ctι=(κι, Cι, ι)、KはSKE.Genにより生成した共通鍵暗号の秘密鍵、κ 1 , …, κ n は次式を満たす秘密鍵Kと同じビット長のビット列、
    Figure 0006885325
    {c ι } ι∈[n] は前記ベクトル{x ι } ι∈[n] から次式により計算された2m+2k+1次元ベクトル、
    Figure 0006885325
    C ι =SKE.Enc(K, c ι ) (ι∈[n]))から関数値f(x1, …, xn)を生成する復号装置であって、
    前記暗号文{ctι}ι∈[n]から、次式により秘密鍵K'を計算する秘密鍵計算部と、
    Figure 0006885325
    前記秘密鍵K'を用いて、前記復号鍵skと前記暗号文{ctι}ι∈[n]から{k'ι}ι∈[n]=SKE.Dec(K', sk)と{c'ι}ι∈[n](ただし、c'ι=SKE.Dec(K', Cι))を計算するベクトル復号部と、
    前記{k'ι}ι∈[n]と前記{c'ι}ι∈[n]から、次式により双線型写像値hTを計算する双線型写像計算部と、
    Figure 0006885325
    前記双線型写像値hTに対してgT z=hTを満たすZpの要素zを前記関数値f(x1, …, xn)として生成する関数値生成部と
    を含む復号装置。
  3. Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、
    前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、
    k、λを1以上の整数、νをe(G1, G2)ν=gTを満たすZpの要素、ppをベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、msk=(D, D*, K1, K2)をマスター秘密鍵(ただし、DはZp上の2m+2k+1次元正則行列、D*=ν(D-1)T、K1, K2はλビットのビット列)とし、
    F1:{0, 1}λ×{0, 1}λ→Zp (2m+2k+1)×(2m+2k+1), F2: {0, 1}λ×{0, 1}λ→{0, 1}λを擬似ランダム関数、S={s1, …, s|S|}を引数のインデックス集合(ただし、siはインデックス集合Sの要素を昇順に並べたときのi番目の要素)、f({xι}ι∈S)=Σι∈Sxι・yιを内積関数(ただし、yι (ι∈S)は内積関数の定義に用いるm次元ベクトル)とし、
    m次元ベクトル{xι}ι∈Sから暗号文{ctι}ι∈Sを生成する暗号化装置であって、
    マスター秘密鍵mskを用いて、擬似ランダム関数値{Wι}ι∈S(ただし、Wι=F1(K1, ι)), {κι}ι∈S(ただし、κι=F2(K2, ι))を計算する擬似ランダム関数値計算部と、
    マスター秘密鍵mskを用いて、前記擬似ランダム関数値{Wι}ι∈Sから行列積{Bι}ι∈S(ただし、Bι=DWι)を計算する行列積計算部と、
    前記行列積{Bι}ι∈Sと前記ベクトル{xι}ι∈Sから次式により2m+2k+1次元ベクトル{cι}ι∈Sを計算するベクトル計算部と、
    Figure 0006885325
    前記擬似ランダム関数値{κι}ι∈Sと前記ベクトル{cι}ι∈Sから前記暗号文{ctι}ι∈S(ただし、ctι=(κι, cι, ι))を生成する暗号文生成部と
    を含む暗号化装置。
  4. Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、
    前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、
    k、λを1以上の整数、νをe(G1, G2)ν=gTを満たすZpの要素、ppをベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータとし、
    F1:{0, 1}λ×{0, 1}λ→Zp (2m+2k+1)×(2m+2k+1), F2: {0, 1}λ×{0, 1}λ→{0, 1}λを擬似ランダム関数、S={s1, …, s|S|}を引数のインデックス集合(ただし、siはインデックス集合Sの要素を昇順に並べたときのi番目の要素)、f({xι}ι∈S)=Σι∈Sxι・yιを内積関数(ただし、yι (ι∈S)は内積関数の定義に用いるm次元ベクトル)、skS=(C|S|, S)を復号鍵(ただし、K1, K2はλビットのビット列、Wι=F1(K1, ι) (ι∈S), κι=F2(K2, ι) (ι∈S)、DはZp上の2m+2k+1次元正則行列、D*=ν(D-1)T、Bι *=D*(Wι -1)T (ι∈S)、{rι}ι∈SはΣι∈Srι=0を満たすZpの要素、{kι}ι∈Sは次式で計算される2m+2k+1次元ベクトル)とし、
    Figure 0006885325
    前記復号鍵skS用いて、m次元ベクトル{x ι } ι∈S から生成された暗号文{ctι}ι∈S(ただし、ctι=(κι, cι, ι)、{c ι } ι∈S は行列積{B ι } ι∈S (ただし、B ι =DW ι )と前記ベクトル{x ι } ι∈S から次式により計算された2m+2k+1次元ベクトル)から関数値f({xι}ι∈S)を生成する復号装置であって、
    Figure 0006885325
    前記暗号文{ctι}ι∈S を用いて、前記復号鍵sksから次式により{k'ι}ι∈Sを計算するベクトル復号部と、
    Figure 0006885325
    前記{k'ι}ι∈S と前記暗号文{ctι}ι∈S から、次式により双線型写像値hTを計算する双線型写像計算部と、
    Figure 0006885325
    前記双線型写像値hTに対してgT z=hTを満たすZpの要素zを前記関数値f({xι}ι∈S)として生成する関数値生成部と
    を含む復号装置。
  5. Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、
    前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、
    kを1以上の整数、f(x1, …, xn)=Σι∈[n]xι・yιを内積関数(ただし、nは1以上の整数、y1, …, ynは内積関数の定義に用いるm次元ベクトル)、νをe(G1, G2)ν=gTを満たすZpの要素、ppをアリティn、ベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、msk=(B1, …, Bn, B1 *, …, Bn *, κ1, …, κn)をマスター秘密鍵(ただし、B1, …, BnはZp上の2m+2k+1次元正則行列、Bι *=ν(Bι -1)T (ι∈[n])、KはSKE.Genにより生成した共通鍵暗号の秘密鍵、κ1, …, κnは次式を満たす秘密鍵Kと同じビット長のビット列)とし、
    Figure 0006885325
    暗号化装置が、m次元ベクトル{xι}ι∈[n]から暗号文{ctι}ι∈[n]を生成する暗号化方法であって、
    マスター秘密鍵mskを用いて、前記ベクトル{xι}ι∈[n]から次式により2m+2k+1次元ベクトル{cι}ι∈[n]を計算するベクトル計算ステップと、
    Figure 0006885325
    秘密鍵Kを用いて、前記ベクトル{cι}ι∈[n]から、Cι=SKE.Enc(K, cι) (ι∈[n])を計算し、マスター秘密鍵mskを用いて、前記暗号文{ctι}ι∈[n](ただし、ctι=(κι, Cι, ι))を生成する暗号文生成ステップと
    を含む暗号化方法。
  6. Zを整数の集合、pを素数、Zp=Z/pZ、SKE=(SKE.Gen, SKE.Enc, SKE.Dec)を共通鍵暗号、~G1, ~G2, ~GTをそれぞれ位数が素数pの巡回群、G1, G2, gTをそれぞれ巡回群~G1, ~G2, ~GTの生成元、e: ~G1×~G2→~GTを非退化双線型写像、~V=~G1 m, ~V*=~G2 mをそれぞれZp上のm次元ベクトル空間(ただし、mは1以上の整数)、(p, ~G1, ~G2, ~GT, G1, G2, gT, e, ~V, ~V*)を双対ペアリングベクトル空間とし、
    前記巡回群~G1, ~G2, ~GTはk-線形仮定を満たす双線型群であり、
    kを1以上の整数、f(x1, …, xn)=Σι∈[n]xι・yιを内積関数(ただし、nは1以上の整数、y1, …, ynは内積関数の定義に用いるm次元ベクトル)、νをe(G1, G2)ν=gTを満たすZpの要素、ppをアリティn、ベクトルの次元m、巡回群~G1, ~G2, ~GTの記述、巡回群の位数p、非退化双線型写像eの記述、巡回群~G1, ~G2, ~GTの生成元G1, G2, gTからなる公開パラメータ、sk=SKE.Enc(K, {kι}ι∈[n])を復号鍵(ただし、{rι}ι∈[n]はΣι∈[n]rι=0を満たすZpの要素、B1, …, BnはZp上の2m+2k+1次元正則行列、Bι *=ν(Bι -1)T (ι∈[n])、{kι}ι∈[n]は次式で計算される2m+2k+1次元ベクトル)とし、
    Figure 0006885325
    復号装置が、前記復号鍵skを用いて、m次元ベクトル{x ι } ι∈[n] から生成された暗号文{ctι}ι∈[n](ただし、ctι=(κι, Cι, ι) 、KはSKE.Genにより生成した共通鍵暗号の秘密鍵、κ 1 , …, κ n は次式を満たす秘密鍵Kと同じビット長のビット列、
    Figure 0006885325
    {c ι } ι∈[n] は前記ベクトル{x ι } ι∈[n] から次式により計算された2m+2k+1次元ベクトル、
    Figure 0006885325
    C ι =SKE.Enc(K, c ι ) (ι∈[n]))から関数値f(x1, …, xn)を生成する復号方法であって、
    前記暗号文{ctι}ι∈[n]から、次式により秘密鍵K'を計算する秘密鍵計算ステップと、
    Figure 0006885325
    前記秘密鍵K'を用いて、前記復号鍵skと前記暗号文{ctι}ι∈[n]から{k'ι}ι∈[n]=SKE.Dec(K', sk)と{c'ι}ι∈[n](ただし、c'ι=SKE.Dec(K', Cι))を計算するベクトル復号ステップと、
    前記{k'ι}ι∈[n]と前記{c'ι}ι∈[n]から、次式により双線型写像値hTを計算する双線型写像計算ステップと、
    Figure 0006885325
    前記双線型写像値hTに対してgT z=hTを満たすZpの要素zを前記関数値f(x1, …, xn)として生成する関数値生成ステップと
    を含む復号方法。
  7. 請求項1または3に記載の暗号化装置としてコンピュータを機能させるためのプログラム。
  8. 請求項2または4に記載の復号装置としてコンピュータを機能させるためのプログラム。
JP2017250124A 2017-12-26 2017-12-26 暗号化装置、復号装置、暗号化方法、復号方法、プログラム Active JP6885325B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017250124A JP6885325B2 (ja) 2017-12-26 2017-12-26 暗号化装置、復号装置、暗号化方法、復号方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017250124A JP6885325B2 (ja) 2017-12-26 2017-12-26 暗号化装置、復号装置、暗号化方法、復号方法、プログラム

Publications (2)

Publication Number Publication Date
JP2019117232A JP2019117232A (ja) 2019-07-18
JP6885325B2 true JP6885325B2 (ja) 2021-06-16

Family

ID=67304414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017250124A Active JP6885325B2 (ja) 2017-12-26 2017-12-26 暗号化装置、復号装置、暗号化方法、復号方法、プログラム

Country Status (1)

Country Link
JP (1) JP6885325B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4565628B2 (ja) * 2004-11-26 2010-10-20 日本電信電話株式会社 秘密計算方法及びシステム、並びにプログラム
JP5606351B2 (ja) * 2011-02-09 2014-10-15 三菱電機株式会社 暗号処理システム、鍵生成装置、暗号化装置、復号装置、鍵委譲装置、暗号処理方法及び暗号処理プログラム
CN104081390B (zh) * 2012-01-25 2017-11-03 三菱电机株式会社 数据检索装置、数据检索方法、数据检索程序、数据登记装置、数据登记方法、数据登记程序以及信息处理装置
WO2014184894A1 (ja) * 2013-05-15 2014-11-20 三菱電機株式会社 暗号システム、暗号方法及び暗号プログラム
JP2015099961A (ja) * 2013-11-18 2015-05-28 三菱電機株式会社 情報配信システム、サーバ装置、情報生成装置、端末装置、情報配信方法及びプログラム

Also Published As

Publication number Publication date
JP2019117232A (ja) 2019-07-18

Similar Documents

Publication Publication Date Title
JP5985123B1 (ja) 秘匿検索システム、管理装置、秘匿検索方法及び秘匿検索プログラム
JP5144991B2 (ja) 暗号文復号権限委譲システム
JP6363032B2 (ja) 鍵付替え方向制御システムおよび鍵付替え方向制御方法
CN110635909B (zh) 一种基于属性的抗合谋攻击的代理重加密方法
WO2012132136A1 (ja) 暗号処理システム、鍵生成装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
JP5432736B2 (ja) 暗号化された情報のためのキーワード検索システム、キーワード検索方法、検索要求装置、検索代行装置、プログラム、記録媒体
JP5814880B2 (ja) 暗号システム、暗号方法、暗号プログラム及び復号装置
JPWO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
KR20130036044A (ko) 비밀 분산 시스템, 분산 장치, 분산 관리 장치, 취득 장치, 비밀 분산 방법, 프로그램, 및 기록 매체
CN110169010B (zh) 同态运算装置、加密系统和计算机能读取的存储介质
Sokouti et al. Medical image encryption: an application for improved padding based GGH encryption algorithm
JP2013156675A (ja) 暗号文検索システム、検索情報生成装置、検索実行装置、検索要求装置、暗号文検索方法、検索情報生成方法、検索実行方法、検索要求方法、およびプログラム
WO2007011071A1 (ja) タイム装置、暗号化装置、復号化装置、暗号化/復号化システム
JP5325755B2 (ja) 暗号文復号権限委譲システム、暗号文復号権限委譲方法、暗号文変換装置、復号権限所持者用装置および暗号文変換プログラム
JP5135070B2 (ja) 暗号文復号権限委譲システム
JP2013243441A (ja) 秘密分散システム、データ分散装置、データ復元装置、秘密分散方法、およびプログラム
Li et al. Efficient and adaptively secure attribute-based proxy reencryption scheme
Nayak et al. SEMKC: secure and efficient computation over outsourced data encrypted under multiple keys
JP5469618B2 (ja) 暗号化システム、復号方法、鍵更新方法、鍵生成装置、受信装置、代理計算装置、プログラム
JP2010160235A (ja) 検索システム、端末装置、データベース装置、検索方法及びプログラム
JP6971917B2 (ja) 復号装置、暗号化装置及び暗号システム
WO2019220900A1 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム
JP7325689B2 (ja) 暗号文変換システム、変換鍵生成方法、及び、変換鍵生成プログラム
JP6885325B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、プログラム
JP5713947B2 (ja) プロキシ暗号システム,プロキシ暗号方法,委託装置,プロキシ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210426

R150 Certificate of patent or registration of utility model

Ref document number: 6885325

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150