Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020110800 - ENCRYPTION SYSTEM, ENCRYPTION DEVICE, DECODING DEVICE, ENCRYPTION METHOD, ENCRYPTION METHOD, DECODING METHOD, AND PROGRAM

Document

明 細 書

発明の名称 暗号システム、暗号化装置、復号装置、暗号方法、暗号化方法、復号方法及びプログラム

技術分野

0001  

背景技術

0002   0003   0004   0005   0006   0007  

先行技術文献

非特許文献

0008  

発明の概要

発明が解決しようとする課題

0009   0010  

課題を解決するための手段

0011  

発明の効果

0012  

図面の簡単な説明

0013  

発明を実施するための形態

0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137  

符号の説明

0138  

請求の範囲

1   2   3   4   5   6   7   8  

図面

1   2   3   4   5   6  

明 細 書

発明の名称 : 暗号システム、暗号化装置、復号装置、暗号方法、暗号化方法、復号方法及びプログラム

技術分野

[0001]
 本発明は、暗号システム、暗号化装置、復号装置、暗号方法、暗号化方法、復号方法及びプログラムに関する。

背景技術

[0002]
 単入力関数型暗号(以降、単に「関数型暗号」とも表す。)では、暗号文を復号するための鍵(つまり、復号鍵)に関数fを埋め込むことができる。関数fを埋め込んだ復号鍵を用いてxの暗号文を復号すると、関数値f(x)が復号される。
[0003]
 多入力関数型暗号は、単入力関数型暗号を拡張したものであり、1つの引数をもつ関数だけでなく、2以上の引数をもつ関数をも復号鍵に埋め込むことができる方式である。つまり、引数1,・・・,nにそれぞれ対応する値x 1,・・・,x nの暗号文ct 1,・・・,ct nがあるとき、引数1,・・・,nをとる関数fを埋め込んだ秘密鍵sk fを用いて暗号文ct 1,・・・,ct nを復号すると、関数値f(x 1,・・・,x n)が復号される。ただし、関数fがとる引数のうち、どれか1つでもその引数に対応する暗号文が存在しない場合は復号することができない。
[0004]
 内積関数型暗号は、扱える関数fを内積に限定した関数型暗号であり、多入力内積関数型暗号では、復号鍵にn個のベクトルy 1,・・・,y nが埋め込まれていて、n個のベクトルx 1,・・・,x nをそれぞれ暗号化したn個の暗号文ct 1,・・・,ct nを復号鍵で復号すると、関数値
[0005]
[数1]








が復号されるというものである。ここで、<・,・>は内積を表す。
[0006]
 また、関数型暗号に対して関数秘匿性という性質がある。関数秘匿性とは、関数を埋め込んだ復号鍵が、その関数を秘匿しているという性質である(ただし、内積関数型暗号の場合はベクトルが関数に相当する。)。すなわち、或る関数を埋め込んだ復号鍵の所持者であっても、その埋め込まれた関数がどのような関数であるかを知ることができないという性質である。
[0007]
 従来、関数秘匿性を有する多入力内積関数型暗号(以降、「関数秘匿多入力内積関数型暗号」とも表す。)を具体的に構成する方法が知られている(非特許文献1及び2)。

先行技術文献

非特許文献

[0008]
非特許文献1 : M. Abdalla, D. Catalano, D. Fiore, R. Gay, and B. Ursu. Multi-input functional encryption for inner products: Function-hiding realizations and constructions without pairings. Cryptology ePrint Archive, Report 2017/972, 2017. http://eprint.iacr.org/2017/972.
非特許文献2 : P. Datta, T. Okamoto, and J. Tomida. Full-hiding (unbounded) multi-input inner product functional encryption from the k-linear assumption. In M. Abdalla and R. Da-hab, editors, PKC 2018, Part II, volume 10770 of LNCS, pages 245-277. Springer, Heidelberg, Mar. 2018.

発明の概要

発明が解決しようとする課題

[0009]
 しかしながら、一般的に、多入力関数型暗号を構成することは、単入力関数型暗号を構成することに比べて難しい場合が多い。したがって、例えば、より効率的な関数秘匿多入力内積関数型暗号を構成しようとする場合、その設計や安全性分析に多大な労力が必要なると考えられる。
[0010]
 本発明は、上記の点に鑑みてなされたもので、関数秘匿内積関数型暗号を用いて関数秘匿多入力内積関数型暗号を実現することを目的とする。

課題を解決するための手段

[0011]
 上記目的を達成するため、本発明の実施の形態における暗号システムは、関数秘匿性を有する多入力内積関数型暗号により暗号化及び復号を行う暗号システムであって、ベクトル長mと前記内積関数の引数の数μとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号のセットアップアルゴリズムと、所定の条件を満たす共通鍵暗号の鍵生成アルゴリズムとを用いて、マスター秘密鍵mskと公開パラメータppとを生成するセットアップ手段と、前記マスター秘密鍵mskと、前記公開パラメータppと、前記引数のインデックスiと、ベクトルxとを入力として、前記単入力内積関数型暗号の暗号化アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記インデックスiに対応する暗号文ct iを生成する暗号化手段と、前記マスター秘密鍵mskと、前記公開パラメータppと、μ個のベクトルy 1,・・・,y μとを入力として、前記単入力内積関数型暗号の鍵生成アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記暗号文ct iを復号するための秘密鍵skを生成する秘密鍵生成手段と、前記公開パラメータppと、前記暗号文ct 1,・・・,ct μと、前記秘密鍵skとを入力として、前記単入力内積関数型暗号の復号アルゴリズムと、前記共通鍵暗号の復号アルゴリズムとを用いて、前記暗号文ct 1,・・・,ct μの復号値dを生成する復号手段と、を有することを特徴とする。

発明の効果

[0012]
 関数秘匿内積関数型暗号を用いて関数秘匿多入力内積関数型暗号を実現することができる。

図面の簡単な説明

[0013]
[図1] 本発明の実施の形態における暗号システムの全体構成の一例を示す図である。
[図2] 本発明の実施の形態におけるセットアップ装置が実行する処理の一例を示すフローチャートである。
[図3] 本発明の実施の形態における暗号化装置が実行する処理の一例を示すフローチャートである。
[図4] 本発明の実施の形態における鍵生成装置が実行する処理の一例を示すフローチャートである。
[図5] 本発明の実施の形態における復号装置が実行する処理の一例を示すフローチャートである。
[図6] コンピュータのハードウェア構成の一例を示す図である。

発明を実施するための形態

[0014]
 以下、本発明の実施の形態について説明する。本発明の実施の形態では、関数秘匿内積関数型暗号(すなわち、関数秘匿性を有する単入力内積関数型暗号)を用いて関数秘匿多入力内積関数型暗号を実現する暗号システム1について説明する。言い換えれば、本発明の実施の形態における暗号システム1は、関数秘匿内積関数型暗号から関数秘匿多入力内積関数型暗号へ汎用的に変換する。これにより、本発明の実施の形態では、関数秘匿多入力内積関数型暗号を設計するためには、(所定の性質を有する)関数秘匿内積関数型暗号さえ設計できればよくなり、関数秘匿多入力内積関数型暗号の設計に要する労力を大幅に削減することができるようになる。
[0015]
 <記法>
 まず、本明細書で用いる記法について説明する。
[0016]
 ・変数aをbと定義するという操作をa:=bと表記する。
[0017]
 ・ベクトルは列ベクトルとして扱う。
[0018]
 ・集合Sから要素sをランダムに選ぶことを
[0019]
[数2]


と表記する。
[0020]
 ・ビット列bに対して、bのビット長を|b|と表記する。
[0021]
 ・自然数nに対して剰余環Z/nZをZ nと表記する。
[0022]
 ・自然数nに対してn以下の自然数の集合を[n]と表記する。
[0023]
 ・自然数nに対してnビットの全てのビット列で構成される集合を{0,1} nと表記する。
[0024]
 ・双線型写像e:G 1×G 2→G Tをもつ素数位数pの双線型群G 1,G 2,G Tとその生成元g 1,g 2,g Tとを考える。このとき、i∈{1,2,T}及びZ p上のJ×L行列
[0025]
[数3]


に対して、[M] i
[0026]
[数4]


で定義される群要素を各要素とするJ×L行列とする。
[0027]
 <関数秘匿多入力内積関数型暗号への変換に用いる従来技術>
 本発明の実施の形態で用いる従来技術として、関数秘匿内積関数型暗号及び共通鍵暗号について説明する。
[0028]
 ・関数秘匿内積関数型暗号(つまり、関数秘匿性を有する単入力内積関数型暗号)
 変換元となる関数秘匿内積関数型暗号としては、従来技術により構成された関数秘匿内積関数型暗号を用いることができる。ここで、本発明の実施の形態で用いる関数秘匿内積関数型暗号は、剰余環Z n上で内積が計算できるものとする。ただし、復号値として必ずしも剰余環Z n上の内積値が出力される必要はなく、値同士で加法の準同型演算が可能であれば、何等かのエンコードされた値が出力されてもよい。
[0029]
 このような関数秘匿内積関数型暗号の構成方法は、いくつか知られているが、例えば、以下の参考文献1や参考文献2を参照されたい。
[0030]
 [参考文献1]
 A. Bishop, A. Jain, and L. Kowalczyk. Function-hiding inner product encryption. In T. Iwata and J. H. Cheon, editors, ASIACRYPT 2015, Part I, volume 9452 of LNCS, pages 470-491. Springer, Heidelberg, Nov. / Dec. 2015.
 [参考文献2]
 H. Lin. Indistinguishability obfuscation from SXDH on 5-linear maps and locality-5 PRGs. In J. Katz and H. Shacham, editors, CRYPTO 2017, Part I, volume 10401 of LNCS, pages 599-629. Springer, Heidelberg, Aug. 2017.
 これらの関数秘匿内積関数型暗号は、双線型群と呼ばれる数学的な構造を用いて構成されている。
[0031]
 以降では、関数秘匿内積関数型暗号のセットアップアルゴリズム、暗号化アルゴリズム、鍵生成アルゴリズム及び復号アルゴリズムをそれぞれ「Setup´」、「Enc´」、「KeyGen´」及び「Dec´」と表す。また、関数秘匿内積関数型暗号が内積を計算する剰余環の位数をnとする(つまり、変換元の関数秘匿内積関数型暗号は、剰余環Z n上で内積を計算するものとする。)。
[0032]
 ・共通鍵暗号
 共通鍵暗号は任意の一方向性関数から構成できることが知られている。ここで、本発明の実施の形態で用いる共通鍵暗号は、或る種の識別不可能性(具体的には、選択的平文攻撃のもとでの識別不可能性(Indistinguishability under Chosen-Plaintext Attack))を満たすものとする。選択的平文攻撃のもとでの識別不可能性については、例えば、以下の参考文献3を参照されたい。
[0033]
 [参考文献3]
 COSC 530: Lecture Notes on Symmetric-Key Encryption, [online], インターネット<URL: http://people.cs.georgetown.edu/~adam/fa15530/cs530-lec4.pdf>
 なお、実用上は、共通鍵暗号として、例えば、AES(Advanced Encryption Standard)やCamellia等を用いることができる。
[0034]
 以降では、共通鍵暗号の鍵生成アルゴリズム、暗号化アルゴリズム及び復号アルゴリズムをそれぞれ「SKE.Gen」、「SKE.Enc」及び「SKE.Dec」と表す。
[0035]
 <全体構成>
 本発明の実施の形態における暗号システム1は、上記の関数秘匿内積関数型暗号のSetup´、Enc´、KeyGen´及びDec´と、上記の共通鍵暗号のSKE.Gen、SKE.Enc及びSKE.Decとを用いて、関数秘匿多入力内積関数型暗号のセットアップアルゴリズムSetup、暗号化アルゴリズムEnc、鍵生成アルゴリズムKeyGen及び復号アルゴリズムDecを構成する。そこで、本発明の実施の形態における暗号システム1の全体構成について、図1を参照しながら説明する。図1は、本発明の実施の形態における暗号システム1の全体構成の一例を示す図である。
[0036]
 図1に示すように、本発明の実施の形態における暗号システム1には、セットアップ装置10と、暗号化装置20と、鍵生成装置30と、復号装置40とが含まれる。また、これらの各装置は、通信ネットワークNを介して相互に通信可能に接続されている。
[0037]
 セットアップ装置10は、セットアップアルゴリズムSetupを実行するコンピュータ又はコンピュータシステムである。
[0038]
 セットアップ装置10には、セットアップ処理部101と、記憶部102とが含まれる。セットアップ処理部101は、ベクトル長m(ただし、mは自然数)と引数の数μ(ただし、μは自然数)とを入力として、セットアップアルゴリズムSetupを実行する。セットアップアルゴリズムSetupでは、マスター秘密鍵mskと公開パラメータppとが生成及び出力される。また、記憶部102には、セットアップアルゴリズムSetupに用いられる各種情報(例えば、ベクトル長mや引数の数μ)やセットアップアルゴリズムSetupの出力結果(例えば、マスター秘密鍵mskや公開パラメータpp)等が記憶される。なお、セットアップアルゴリズムSetupには、セキュリティパラメータ1 λが入力されてもよい。
[0039]
 なお、セットアップ処理部101は、例えば、セットアップ装置10にインストールされた1以上のプログラムが、プロセッサ等の演算装置に実行させる処理により実現される。また、記憶部102は、各種メモリ(例えば、主記憶装置や補助記憶装置等)を用いて実現可能である。
[0040]
 暗号化装置20は、暗号化アルゴリズムEncを実行するコンピュータ又はコンピュータシステムである。
[0041]
 暗号化装置20には、暗号化処理部201と、記憶部202とが含まれる。暗号化処理部201は、マスター秘密鍵mskと、公開パラメータppと、引数のインデックスi∈[μ]と、ベクトルx∈Z mとを入力として、暗号化アルゴリズムEncを実行する。暗号化アルゴリズムEncでは、インデックスiに対応する暗号文ct iが生成及び出力される。また、記憶部202には、暗号化アルゴリズムEncに用いられる各種情報(例えば、マスター秘密鍵mskや公開パラメータpp、インデックスi、ベクトルx等)や暗号化アルゴリズムEncの出力結果(例えば、暗号文ct i)等が記憶される。
[0042]
 なお、暗号化処理部201は、例えば、暗号化装置20にインストールされた1以上のプログラムが、プロセッサ等の演算装置に実行させる処理により実現される。また、記憶部202は、各種メモリ(例えば、主記憶装置や補助記憶装置等)を用いて実現可能である。
[0043]
 鍵生成装置30は、鍵生成アルゴリズムKeyGenを実行するコンピュータ又はコンピュータシステムである。
[0044]
 鍵生成装置30には、鍵生成処理部301と、記憶部302とが含まれる。鍵生成処理部301は、マスター秘密鍵mskと、公開パラメータppと、μ個のベクトル{y i} i∈[μ](ただし、y i∈Z m)とを入力として、鍵生成アルゴリズムKeyGenを実行する。鍵生成アルゴリズムKeyGenでは、秘密鍵skが生成及び出力される。また、記憶部302には、鍵生成アルゴリズムKeyGenに用いられる各種情報(例えば、マスター秘密鍵mskや公開パラメータpp、ベクトル{y i} i∈[μ])や鍵生成アルゴリズムKeyGenの出力結果(例えば、秘密鍵sk)等が記憶される。
[0045]
 なお、鍵生成処理部301は、例えば、鍵生成装置30にインストールされた1以上のプログラムが、プロセッサ等の演算装置に実行させる処理により実現される。また、記憶部302は、各種メモリ(例えば、主記憶装置や補助記憶装置等)を用いて実現可能である。
[0046]
 復号装置40は、復号アルゴリズムDecを実行するコンピュータ又はコンピュータシステムである。
[0047]
 復号装置40には、復号処理部401と、記憶部402とが含まれる。復号処理部401は、公開パラメータppと、暗号文{ct i} i∈[μ]と、秘密鍵skとを入力として、復号アルゴリズムDecを実行する。復号アルゴリズムDecでは、復号値dが生成及び出力される。また、記憶部402には、復号アルゴリズムDecに用いられる各種情報(例えば、公開パラメータppや暗号文{ct i} i∈[μ]、秘密鍵sk)や復号アルゴリズムDecの出力結果(例えば、復号値d)等が記憶される。
[0048]
 なお、復号処理部401は、例えば、復号装置40にインストールされた1以上のプログラムが、プロセッサ等の演算装置に実行させる処理により実現される。また、記憶部402は、各種メモリ(例えば、主記憶装置や補助記憶装置等)を用いて実現可能である。
[0049]
 図1に示す暗号システム1の構成は一例であって、他の構成であってもよい。例えば、セットアップ装置10、暗号化装置20及び鍵生成装置30のうちの任意の2以上の装置が1つの装置として構成されていてもよい。また、暗号システム1には、複数台の復号装置40が含まれていてもよい。同様に、セットアップ装置10、暗号化装置20及び鍵生成装置30のうちの任意の1以上の装置が複数台含まれていてもよい。
[0050]
 <セットアップ>
 次に、セットアップ装置10が実行する処理(セットアップアルゴリズムSetupにより実現される処理)について、図2を参照しながら説明する。図2は、本発明の実施の形態におけるセットアップ装置10が実行する処理の一例を示すフローチャートである。
[0051]
 まず、セットアップ処理部101は、ベクトル長mと引数の数μとを入力する(ステップS101)。なお、ベクトル長mと引数の数μとの入力元は任意であり、例えば、記憶部102から入力されてもよいし、キーボード等の入力装置から入力されてもよいし、通信ネットワークNを介して接続された他の装置から入力されてもよい。
[0052]
 次に、セットアップ処理部101は、セットアップアルゴリズムSetup(m,μ)により、マスター秘密鍵mskと公開パラメータppとを生成する(ステップS102)。
[0053]
 ここで、セットアップ処理部101は、
[0054]
[数5]








として、
[0055]
[数6]


により公開パラメータppを生成する。
[0056]
 また、セットアップ処理部101は、K←SKE.Gen(つまり、共通鍵暗号の鍵生成アルゴリズムSKE.Genの出力結果をK)として、
[0057]
[数7]


とした上で、
[0058]
[数8]


とする。なお、
[0059]
[数9]








は排他的論理和を表す。
[0060]
 更に、セットアップ処理部101は、
[0061]
[数10]


として、
[0062]
[数11]


によりマスター秘密鍵mskを生成する。
[0063]
 以上によりマスター秘密鍵mskと公開パラメータppとが生成される。マスター秘密鍵mskと公開パラメータppとは、例えば、記憶部102に記憶される。また、マスター秘密鍵msk及び公開パラメータppは、例えば、通信ネットワークNを介して暗号化装置20や鍵生成装置30に送信される。
[0064]
 <暗号化>
 次に、暗号化装置20が実行する処理(暗号化アルゴリズムEncにより実現される処理)について、図3を参照しながら説明する。図3は、本発明の実施の形態における暗号化装置20が実行する処理の一例を示すフローチャートである。
[0065]
 まず、暗号化処理部201は、マスター秘密鍵mskと、公開パラメータppと、インデックスi∈[μ]と、ベクトルx∈Z mとを入力する(ステップS201)。なお、マスター秘密鍵mskと、公開パラメータppと、インデックスi∈[μ]と、ベクトルx∈Z mとの入力元は任意であり、例えば、記憶部202から入力されてもよいし、キーボード等の入力装置から入力されてもよいし、通信ネットワークNを介して接続された他の装置から入力されてもよい。
[0066]
 次に、暗号化処理部201は、暗号化アルゴリズムEnc(msk,pp,i,x)により、インデックスiに対応する暗号文ct iを生成する(ステップS202)。
[0067]
 ここで、暗号化処理部201は、
[0068]
[数12]


として、
[0069]
[数13]








とする。なお、0 mはZ mのゼロベクトルを表す。
[0070]
 そして、暗号化処理部201は、
[0071]
[数14]


として、ct i:=(K i,C i)により、インデックスiに対応する暗号文ct iを生成する。
[0072]
 以上により、インデックスiに対応する暗号文ct iが生成される。暗号文ct iは、例えば、記憶部202に記憶されてもよいし、通信ネットワークNを介して他の装置(例えば、復号装置40等)に送信されてもよい。
[0073]
 <鍵生成>
 次に、鍵生成装置30が実行する処理(鍵生成アルゴリズムKeyGenにより実現される処理)について、図4を参照しながら説明する。図4は、本発明の実施の形態における鍵生成装置30が実行する処理の一例を示すフローチャートである。
[0074]
 まず、鍵生成処理部301は、マスター秘密鍵mskと、公開パラメータppと、ベクトル{y i} i∈[μ]とを入力する(ステップS301)。なお、マスター秘密鍵mskと、公開パラメータppと、ベクトル{y i} i∈[μ]との入力元は任意であり、例えば、記憶部302から入力されてもよいし、キーボード等の入力装置から入力されてもよいし、通信ネットワークNを介して接続された他の装置から入力されてもよい。
[0075]
 次に、鍵生成処理部301は、鍵生成アルゴリズムKeyGen(msk,pp,{y i} i∈[μ])により、秘密鍵skを生成する(ステップS302)。
[0076]
 ここで、鍵生成処理部301は、
[0077]
[数15]


として、
[0078]
[数16]


とした上で、
[0079]
[数17]








とする。そして、鍵生成処理部301は、
[0080]
[数18]


として、
[0081]
[数19]


により秘密鍵skを生成する。
[0082]
 以上により秘密鍵skが生成される。秘密鍵skは、例えば、通信ネットワークNを介して復号装置40に送信される。また、このとき、秘密鍵skと共に公開パラメータppが復号装置40に送信されてもよい。
[0083]
 <復号>
 次に、復号装置40が実行する処理(復号アルゴリズムDecにより実現される処理)について、図5を参照しながら説明する。図5は、本発明の実施の形態における復号装置40が実行する処理の一例を示すフローチャートである。
[0084]
 まず、復号処理部401は、公開パラメータppと、暗号文{ct i} i∈[μ]と、秘密鍵skとを入力する(ステップS401)。なお、公開パラメータppと、暗号文{ct i} i∈[μ]と、秘密鍵skとの入力元は任意であり、例えば、記憶部402から入力されてもよいし、キーボード等の入力装置から入力されてもよいし、通信ネットワークNを介して接続された他の装置から入力されてもよい。
[0085]
 次に、復号処理部401は、復号アルゴリズムDec(pp, {ct i} i∈[μ],sk)により、復号値dを生成する(ステップS402)。
[0086]
 ここで、復号処理部401は、
[0087]
[数20]


として、
[0088]
[数21]








とすると共に、
[0089]
[数22]


とする。次に、復号処理部401は、
[0090]
[数23]


として、
[0091]
[数24]


とする。なお、○はエンコードされたZ n上の元同士の準同型演算である。
[0092]
 そして、復号処理部401は、d´をデコードすることで、復号値dを生成する。
[0093]
 以上により復号値dが生成される。復号値dは、例えば、記憶部402に記憶されてもよいし、通信ネットワークNを介して他の装置に送信されてもよい。
[0094]
 <実施例>
 上記の図2乃至図5に示す各処理では、共通鍵暗号と関数秘匿内積関数型暗号とを用いて、当該関数秘匿内積関数型暗号を関数秘匿多入力内積関数型暗号に汎用的に変換する場合について説明した。以降の実施例では、具体的な関数秘匿内積関数型暗号を用いた場合について説明する。
[0095]
 以降の実施例では、以下の参考文献4に記載されている内積関数型暗号(より具体的にはA one-SEL-SIM scheme for single-input inner product)に対して、以下の参考文献5に記載されている手法を適用することで、当該内積関数型暗号が関数秘匿性を有するように構成した関数秘匿内積関数型暗号を用いるものとする。これにより、例えば、非特許文献1や非特許文献2に記載されている関数秘匿多入力内積関数型暗号よりも効率的な関数秘匿多入力内積関数型暗号を実現することができる。
[0096]
 [参考文献4]
 Michel Abdalla, Romain Gay, Mariana Raykova, and Hoeteck Wee. Multi-input inner-product functional encryption from pairings. In Jean-Sebastien Coron and Jesper Buus Nielsen, editors, EUROCRYPT 2017, Part I, volume 10210 of LNCS, pages 601-626. Springer, Heidelberg, April / May 2017.
 [参考文献5]
 H. Lin. Indistinguishability obfuscation from SXDH on 5-linear maps and locality-5 PRGs. In J. Katz and H. Shacham, editors, CRYPTO 2017, Part I, volume 10401 of LNCS, pages 599-629. Springer, Heidelberg, Aug. 2017.
 なお、以降の実施例では、kは任意の自然数としてよい。また、pは素数である。
[0097]
  (実施例におけるセットアップ)
 図2のステップS101において、セットアップ処理部101は、ベクトル長mと引数の数μとを入力する。そして、図2のステップS102において、セットアップ処理部101は、セットアップアルゴリズムSetup(m,μ)により、マスター秘密鍵mskと公開パラメータppとを生成する。このとき、本実施例では、以下によりマスター秘密鍵mskと公開パラメータppとを生成する。
[0098]
 まず、セットアップ処理部101は、
[0099]
[数25]






として、K←SKE.Genとする。次に、セットアップ処理部101は、
[0100]
[数26]


とすると共に、
[0101]
[数27]


とする。そして、セットアップ処理部101は、
[0102]
[数28]








によりマスター秘密鍵mskを生成する。
[0103]
 また、セットアップ処理部101は、適当なk-線型仮定が成り立つ双線型群G 1,G 2,G Tを指定する情報を公開パラメータppとする。なお、k-線型仮定の定義については、例えば、以下の参考文献6を参照されたい。
[0104]
 [参考文献6]
 Allison B. Lewko and Brent Waters, "Efficient pseudorandom functions from the decisional linear assumption and weaker variants", Proceedin gs of the 2009 ACM Conference on Computer and Communications Security, CCS 2009, Chicago, Illinois, USA, pp. 112-120, Nov. 2009.
 上記の参考文献6にはk-線型仮定が成り立つ双線型群を楕円曲線から構成する例が記載されているが、このような楕円曲線のより一般的な構成方法が以下の参考文献7に記載されている。
[0105]
 [参考文献7]
 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.
 なお、上記の双線型群G 1,G 2,G Tは必ずしも楕円曲線から構成されている必要はない。これらの双線型群G 1,G 2,G Tは楕円曲線以外の方法により構成されたものであってもよい。
[0106]
  (実施例における暗号化)
 図3のステップS201において、暗号化処理部201は、マスター秘密鍵mskと、公開パラメータppと、インデックスi∈[μ]と、ベクトルx∈Z mとを入力する。そして、図3のステップS202において、暗号化処理部201は、暗号化アルゴリズムEnc(msk,pp,i,x)により、インデックスiに対応する暗号文ct iを生成する。このとき、本実施例では、以下により暗号文ct iを生成する。
[0107]
 まず、暗号化処理部201は、
[0108]
[数29]


とすると共に、
[0109]
[数30]


とした上で、
[0110]
[数31]


とする。また、暗号化処理部201は、
[0111]
[数32]








とする。そして、暗号化処理部201は、ct i=(C i,K i)により、インデックスiに対応する暗号文ct iを生成する。
[0112]
  (実施例における鍵生成)
 図4のステップS301において、鍵生成処理部301は、マスター秘密鍵mskと、公開パラメータppと、ベクトル{y i} i∈[μ]とを入力する。そして、図4のステップS302において、鍵生成処理部301は、鍵生成アルゴリズムKeyGen(msk,pp,{y i} i∈[μ])により、秘密鍵skを生成する。このとき、本実施例では、以下により秘密鍵skを生成する。
[0113]
 まず、鍵生成処理部301は、
[0114]
[数33]


とすると共に、
[0115]
[数34]


とした上で、
[0116]
[数35]


とする。また、鍵生成処理部301は、
[0117]
[数36]














とする。そして、鍵生成処理部301は、
[0118]
[数37]


として、
[0119]
[数38]


により秘密鍵skを生成する。
[0120]
  (実施例における復号)
 図5のステップS401において、復号処理部401は、公開パラメータppと、暗号文{ct i} i∈[μ]と、秘密鍵skとを入力する。そして、図5のステップS402において、復号処理部401は、復号アルゴリズムDec(pp, {ct i} i∈[μ],sk)により、復号値dを生成する。このとき、本実施例では、以下により復号値dを生成する。
[0121]
 まず、復号処理部401は、
[0122]
[数39]


として、
[0123]
[数40]


とすると共に、
[0124]
[数41]


とする。次に、復号処理部401は、
[0125]
[数42]


とする。そして、復号処理部401は、e(g 1,g 2)を底とするd´の離散対数問題を解いた結果を復号値dとして生成する。
[0126]
 <ハードウェア構成>
 最後に、本発明の実施の形態における暗号システム1に含まれるセットアップ装置10、暗号化装置20、鍵生成装置30及び復号装置40のハードウェア構成について説明する。これらの装置のハードウェアとしては、例えば、図6に示すコンピュータ500を用いて実現可能である。図6は、コンピュータ500のハードウェア構成の一例を示す図である。
[0127]
 図6に示すコンピュータ500は、入力装置501と、表示装置502と、RAM(Random Access Memory)503と、ROM(Read Only Memory)504と、プロセッサ505と、外部I/F506と、通信I/F507と、補助記憶装置508とを有する。これら各ハードウェアは、それぞれがバス509を介して通信可能に接続されている。
[0128]
 入力装置501は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置502は、例えばディスプレイ等であり、コンピュータ500の処理結果を表示する。なお、コンピュータ500は、入力装置501及び表示装置502の少なくとも一方を有していなくてもよい。
[0129]
 RAM503は、プログラムやデータを一時保持する揮発性の半導体メモリ(主記憶装置)である。ROM504は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM504には、例えば、OS(Operating System)に関する設定情報や通信ネットワークNに接続するための設定情報等が格納されている。
[0130]
 プロセッサ505は、例えばCPU(Central Processing Unit)等であり、ROM504や補助記憶装置508等からプログラムやデータをRAM503上に読み出して処理を実行する演算装置である。
[0131]
 外部I/F506は、外部装置とのインタフェースである。外部装置には、記録媒体506a等がある。コンピュータ500は、外部I/F506を介して、記録媒体506aの読み取りや書き込み等を行うことができる。
[0132]
 記録媒体506aには、例えば、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
[0133]
 通信I/F507は、コンピュータ500を通信ネットワークNに接続するためのインタフェースである。
[0134]
 補助記憶装置508は、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置508に格納されているプログラムやデータには、例えば、OS、当該OS上で各種機能を実現するアプリケーションプログラム、本発明の実施の形態における各種処理を実現するプログラム等がある。
[0135]
 本発明の実施の形態におけるセットアップ装置10、暗号化装置20、鍵生成装置30及び復号装置40は、図6に示すコンピュータ500のハードウェア構成を有することにより、上述した各種処理を実現することができる。なお、図6に示す例に限られず、コンピュータ500は、例えば、複数の演算装置(プロセッサ506)と、複数のメモリ(RAM503やROM504、補助記憶装置50)とを有していてもよい。
[0136]
 <まとめ>
 以上のように、本発明の実施の形態における暗号システム1では、所定の性質(つまり、剰余環Z n上で内積が計算可能)を有する関数秘匿内積関数型暗号を関数秘匿多入力内積関数型暗号へ汎用的に変換することができる。したがって、本発明の実施の形態における暗号システム1によれば、所定の性質を有する関数秘匿内積関数型暗号さえ安全に設計できればよくなり、関数秘匿多入力内積関数型暗号の設計に要する労力を大幅に削減することができる。ただし、上述したように、関数秘匿多入力内積関数型暗号を実現する際に用いる共通鍵暗号は、選択的平文攻撃のもとでの識別不可能性を満たしている必要がある。
[0137]
 本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。

符号の説明

[0138]
 1    暗号システム
 10   セットアップ装置
 20   暗号化装置
 30   鍵生成装置
 40   復号装置
 101  セットアップ処理部
 102  記憶部
 201  暗号化処理部
 202  記憶部
 301  鍵生成処理部
 302  記憶部
 401  復号処理部
 402  記憶部

請求の範囲

[請求項1]
 関数秘匿性を有する多入力内積関数型暗号により暗号化及び復号を行う暗号システムであって、
 ベクトル長mと前記内積関数の引数の数μとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号のセットアップアルゴリズムと、所定の条件を満たす共通鍵暗号の鍵生成アルゴリズムとを用いて、マスター秘密鍵mskと公開パラメータppとを生成するセットアップ手段と、
 前記マスター秘密鍵mskと、前記公開パラメータppと、前記引数のインデックスiと、ベクトルxとを入力として、前記単入力内積関数型暗号の暗号化アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記インデックスiに対応する暗号文ct iを生成する暗号化手段と、
 前記マスター秘密鍵mskと、前記公開パラメータppと、μ個のベクトルy 1,・・・,y μとを入力として、前記単入力内積関数型暗号の鍵生成アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記暗号文ct iを復号するための秘密鍵skを生成する秘密鍵生成手段と、
 前記公開パラメータppと、前記暗号文ct 1,・・・,ct μと、前記秘密鍵skとを入力として、前記単入力内積関数型暗号の復号アルゴリズムと、前記共通鍵暗号の復号アルゴリズムとを用いて、前記暗号文ct 1,・・・,ct μの復号値dを生成する復号手段と、
 を有することを特徴とする暗号システム。
[請求項2]
 前記所定の性質は、剰余環Z n上での内積計算が可能であることであり、
 前記所定の条件は、選択的平文攻撃のもとでの識別不可能性を満たすことである、ことを特徴とする請求項1に記載の暗号システム。
[請求項3]
 関数秘匿性を有する多入力内積関数型暗号により暗号化を行う暗号化装置であって、
 ベクトル長mと前記内積関数の引数の数μとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号のセットアップアルゴリズムと、所定の条件を満たす共通鍵暗号の鍵生成アルゴリズムとを用いて、マスター秘密鍵mskと公開パラメータppとを生成するセットアップ手段と、
 前記マスター秘密鍵mskと、前記公開パラメータppと、前記引数のインデックスiと、ベクトルxとを入力として、前記単入力内積関数型暗号の暗号化アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記インデックスiに対応する暗号文ct iを生成する暗号化手段と、
 を有することを特徴とする暗号化装置。
[請求項4]
 関数秘匿性を有する多入力内積関数型暗号により暗号化された暗号文ct 1,・・・,ct μの復号を行う復号装置であって、
 公開パラメータppと、前記暗号文ct 1,・・・,ct μと、所定の秘密鍵skとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号の復号アルゴリズムと、所定の条件を満たす共通鍵暗号の復号アルゴリズムとを用いて、前記暗号文ct 1,・・・,ct μの復号値dを生成する復号手段を有することを特徴とする復号装置。
[請求項5]
 関数秘匿性を有する多入力内積関数型暗号により暗号化及び復号を行う暗号システムが、
 ベクトル長mと前記内積関数の引数の数μとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号のセットアップアルゴリズムと、所定の条件を満たす共通鍵暗号の鍵生成アルゴリズムとを用いて、マスター秘密鍵mskと公開パラメータppとを生成するセットアップ手順と、
 前記マスター秘密鍵mskと、前記公開パラメータppと、前記引数のインデックスiと、ベクトルxとを入力として、前記単入力内積関数型暗号の暗号化アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記インデックスiに対応する暗号文ct iを生成する暗号化手順と、
 前記マスター秘密鍵mskと、前記公開パラメータppと、μ個のベクトルy 1,・・・,y μとを入力として、前記単入力内積関数型暗号の鍵生成アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記暗号文ct iを復号するための秘密鍵skを生成する秘密鍵生成手順と、
 前記公開パラメータppと、前記暗号文ct 1,・・・,ct μと、前記秘密鍵skとを入力として、前記単入力内積関数型暗号の復号アルゴリズムと、前記共通鍵暗号の復号アルゴリズムとを用いて、前記暗号文ct 1,・・・,ct μの復号値dを生成する復号手順と、
 を実行することを特徴とする暗号方法。
[請求項6]
 関数秘匿性を有する多入力内積関数型暗号により暗号化を行う暗号化装置が、
 ベクトル長mと前記内積関数の引数の数μとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号のセットアップアルゴリズムと、所定の条件を満たす共通鍵暗号の鍵生成アルゴリズムとを用いて、マスター秘密鍵mskと公開パラメータppとを生成するセットアップ手順と、
 前記マスター秘密鍵mskと、前記公開パラメータppと、前記引数のインデックスiと、ベクトルxとを入力として、前記単入力内積関数型暗号の暗号化アルゴリズムと、前記共通鍵暗号の暗号化アルゴリズムとを用いて、前記インデックスiに対応する暗号文ct iを生成する暗号化手順と、
 を実行することを特徴とする暗号化方法。
[請求項7]
 関数秘匿性を有する多入力内積関数型暗号により暗号化された暗号文ct 1,・・・,ct μの復号を行う復号装置が、
 公開パラメータppと、前記暗号文ct 1,・・・,ct μと、所定の秘密鍵skとを入力として、所定の性質を有し、かつ、関数秘匿性を有する単入力内積関数型暗号の復号アルゴリズムと、所定の条件を満たす共通鍵暗号の復号アルゴリズムとを用いて、前記暗号文ct 1,・・・,ct μの復号値dを生成する復号手順を実行することを特徴とする復号方法。
[請求項8]
 コンピュータを、請求項3に記載の暗号化装置における各手段又は請求項4に記載の復号装置における各手段のいずれかとして機能させるためのプログラム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]