JP5768732B2 - 暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム - Google Patents

暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム Download PDF

Info

Publication number
JP5768732B2
JP5768732B2 JP2012015396A JP2012015396A JP5768732B2 JP 5768732 B2 JP5768732 B2 JP 5768732B2 JP 2012015396 A JP2012015396 A JP 2012015396A JP 2012015396 A JP2012015396 A JP 2012015396A JP 5768732 B2 JP5768732 B2 JP 5768732B2
Authority
JP
Japan
Prior art keywords
encryption key
bit length
calculated
dimensions
key
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.)
Expired - Fee Related
Application number
JP2012015396A
Other languages
English (en)
Other versions
JP2013156348A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012015396A priority Critical patent/JP5768732B2/ja
Publication of JP2013156348A publication Critical patent/JP2013156348A/ja
Application granted granted Critical
Publication of JP5768732B2 publication Critical patent/JP5768732B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラムに関する。
従来、暗号化したままで平文に対するデータ操作を行える準同型暗号の技術が知られている。例えば、平文同士を加算した後に暗号化した結果と、各平文の暗号文同士を加算した結果とが一致する準同型暗号の一例として、Additive ElGamal暗号方式が知られている。また、平文同士を積算した後に暗号化した結果と、各平文の暗号文同士を積算した結果とが一致する準同型暗号の一例として、RSA暗号方式が知られている。
以下、準同型暗号に用いる秘密鍵および公開鍵を生成する暗号鍵生成装置の一例について説明する。例えば、暗号鍵生成装置は、秘密鍵として用いる行列の次元の数nと、各要素のビット長tとを選択する。そして、暗号鍵生成装置は、各成分の絶対値がtビット以下の整数となるn次元の乱数ベクトルv=(v、v、…vn−1)を生成する。その後、暗号鍵生成装置は、生成した乱数ベクトルvから以下の式(1)に示す行列Vを生成し、生成した行列Vを秘密鍵とする。
Figure 0005768732
また、暗号鍵生成装置は、行列Vに対して行基本変形を施し、エルミート標準形である行列Bを生成する。そして、暗号鍵生成装置は、生成した行列Bを公開鍵とする。
特開2011−145512号公報
C. Gentry, "Fully Homomorphic encryption using ideal lattices", STOC 2009, pp. 169-178, 2009. C. Gentry and S. Halevi, "Implementing Gentry’s Fully Homomorphic Encryption Scheme", EUROCRYPT 2011, LNCS 6632, pp. 129-148, 2011. 矢嶋純、安田雅哉、下山武司、小暮淳、「Gentry準同型暗号に対するLLL攻撃実験について」、コンピュータセキュリティシンポジウム2011論文集、3号、pp. 576 581, 2011. 矢嶋純、安田雅哉、下山武司、小暮淳、「Gentry準同型暗号に対するLLL攻撃実験(II)」信学技報, vol. 111, no. 285, ISEC2011-36, pp. 13-17, 2011. 安田雅哉、矢嶋純、下山武司、小暮淳、「格子版完全準同型暗号の安全性について」信学技報, vol. 111, no. 204, ISEC2011-33, pp. 43-50, 2011.
しかしながら、上述した準同型暗号の技術では、次元の数nと各要素のビット長tとが適切に選択されなかった場合は、公開鍵と暗号文とに格子縮約アルゴリズムを適用して平文を求める格子縮約攻撃により、暗号文が容易に解読されてしまうという問題がある。
ここで、生成した暗号鍵と公開鍵とが格子縮約攻撃に対して安全性を有するか判別するため、実際に格子縮約攻撃を行うことで、暗号の解読が可能か否かを検証する手法も考えられる。しかし、暗号鍵と公開鍵を生成する度に、格子縮約攻撃を行う場合は、膨大な計算量が必要となるため、計算資源や計算時間の観点から非現実的である。
本願に開示の技術は、1つの側面では、格子縮約攻撃に対して安全性を有する暗号鍵を生成する。
1つの側面では、暗号鍵生成装置は、暗号鍵として用いられる行列の次元数と当該行列の各要素のビット長とを選択する。また、暗号鍵生成装置は、選択した次元数とビット長とを用いて、格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出し、格子縮約攻撃の成功率が所定の値以下となる次元数とビット長から算出される係数と算出したエルミートファクタとの積が、算出したキーパラメータよりも大きいか否かを判別する。そして、暗号鍵生成装置は、エルミートファクタと係数との積がキーパラメータよりも大きいと判別した場合には、選択した次元数とビット長とを用いて、暗号鍵を生成する
1つの側面では、格子縮約攻撃に対して安全性を有する暗号鍵を生成する。
図1は、暗号鍵生成装置の機能構成の一例を説明するための図である。 図2は、n=256の際にLLLアルゴリズムを用いた格子縮約攻撃の実験結果を説明するための図である。 図3は、n=512の際にLLLアルゴリズムを用いた格子縮約攻撃の実験結果を説明するための図である。 図4は、n=512の際にBKZアルゴリズムを用いた格子縮約攻撃の実験結果を説明するための図である。 図5は、LLLアルゴリズムを用いた格子縮約攻撃に対する安全な入力パラメータ(n、t)の範囲を説明するための図である。 図6は、BKZアルゴリズムを用いた格子縮約攻撃に対する安全な入力パラメータ(n、t)の範囲を説明するための図である。 図7は、暗号パラメータ生成部が実行する処理の流れを説明するためのフローチャートである。 図8は、安全性判定部が実行する処理の流れを説明するためのフローチャートである。 図9は、暗号鍵生成部が実行する処理の流れを説明するためのフローチャートである。 図10は、暗号鍵生成プログラムを実行するコンピュータの一例を説明するための図である。
以下に添付図面を参照して本願に係る暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラムについて説明する。
以下の実施例1では、暗号鍵生成装置の一例を説明する。なお、暗号鍵生成装置は、少なくとも、格子縮約攻撃に対して安全性を有する秘密鍵と公開鍵との組を生成する装置である。
まず、暗号鍵生成装置が生成する公開鍵と秘密鍵とについて説明する。公開鍵とは、公開鍵暗号方式において、平文の暗号化を行う際に用いられ、平文の送信元に対して配布される暗号鍵であり、行列形式で表される。また、秘密鍵とは、公開鍵暗号方式において、平文の復号化を行う際に用いられ、平文の送信先が保持する暗号鍵であり、行列形式で表される。
なお、公開鍵は、秘密鍵となる行列のエルミート標準形となる行列である。なお、エルミート標準形とは、ある整数行列に対して整数乗の行基本変形を施すことで得られる下三角行列、または、上三角行列である。
次に、2つの情報処理装置が、公開鍵と暗号鍵とを用いて、公開鍵暗号方式による暗号文の送受信を行う例について説明する。なお、以下の説明においては、暗号文の送信先となる情報処理装置は、従来の方式を用いて秘密鍵Vおよび公開鍵Bを生成する暗号鍵生成装置を有するものとする。例えば、送信先の情報処理装置は、公開鍵Bと秘密鍵Vとを生成し、暗号文の送信元となる情報処理装置に公開鍵Bを送付する。
一方、送信元の情報処理装置は、各成分が「0」又は「1」となるn次元の乱数ベクトルu=(u、u、…、un−1)を選択する。次に、送信元の情報処理装置は、フレッシュ暗号文となるベクトルa=2u+beを生成する。ここでeは、e=(1、0、…0)を満たすベクトルである。次に、送信元の情報処理装置は、以下の式(2)を用いて、暗号文cを生成し、生成した暗号文cを送信する。ここで、式(2)のB−1とは、公開鍵Bの逆行列である。また、式(2)中の[a×B−1]とは、a×B−1に最も近い整数値を示す関数である。
Figure 0005768732
一方、送信先の情報処理装置は、暗号文cを取得した場合には、以下の式(3)を用いて、n次元ベクトルa’を生成する。そして、送信先の情報処理装置は、生成したn次元ベクトルa’の第1成分となるa’を取得し、取得したa’を2で除算した余りを暗号文cの復号結果として取得する。
Figure 0005768732
次に、数値例を用いて、秘密鍵と公開鍵とを用いた暗号化および復号化の例を説明する。なお、以下の例では、送信先の情報処理装置が次元数n=4、ビット長t=7の秘密鍵および公開鍵を生成し、送信元の情報処理装置が平文b=1を送信する例について説明する。
例えば、送信先の情報処理装置は、秘密鍵および公開鍵を生成するためのパラメータとして、次元数n=4、ビット長t=7を選択する。このような場合には、送信元の情報処理装置は、絶対値が7ビット以下の整数となる4次元の乱数ベクトルvを生成する。詳細な数値例を挙げると、送信元の情報処理装置は、v=(112、99、−125、77)を生成する。このような場合には、送信元の情報処理装置は、以下の式(4)で示す秘密鍵Vを生成する。
Figure 0005768732
次に、送信元の情報処理装置は、式(4)で示す秘密鍵Vのエルミート標準形を算出することで、以下の式(5)で示す公開鍵Bを生成する。その後、送信元の情報処理装置は、生成した公開鍵Bを送信元の情報処理装置に配布する。
Figure 0005768732
一方、送信元の情報処理装置は、成分が「0」または「1」となる4次元の乱数ベクトルとしてu=(1、0、1、1)を選択し、フレッシュ暗号文a=2u+be=(3、0、2、2)を計算する。そして、送信元の情報処理装置は、以下の式(6)に示すように、通知された公開鍵Bを用いて、平文b=1から暗号文c=(−199178684、0、0、0)を生成し、生成した暗号文cを送信元の情報処理装置へ送信する。
Figure 0005768732
このような場合には、送信先の情報処理装置は、式(3)を用いて暗号文cからa’=(3、0、2、2)を算出する。さらに、送信先の情報処理装置は、a’=(3、0、2、2)の第1成分となる「3」を取得し、取得した「3」を2で割った余り「1」を復号結果として取得する。なお、上述した例については、フレッシュ暗号文aと式(3)を用いて暗号文cから算出されるa’とが一致するため、暗号化および復号化を適切に行える。
しかしながら、上述した例では、送信先の情報処理装置が選択する次元数nとビット長tとが適切ではない場合に、LLLアルゴリズムやBKZアルゴリズムを用いた格子縮約攻撃によって、暗号文と公開鍵Bから容易に平文bを取得できるという問題がある。また、秘密鍵Vと公開鍵Bとを生成するたびに、格子縮約攻撃を実行し、安全性を検証する手法は、計算資源や計算時間の観点から非現実的である。
一方、実施例1に開示する暗号鍵生成装置は、秘密鍵Vと公開鍵Bとを生成するたびに格子縮約攻撃を実行せずとも、格子縮約攻撃に対する安全性を有する秘密鍵Vと公開鍵Bとを生成できる。以下、このような暗号鍵生成装置について図1を用いて説明する。
図1は、暗号鍵生成装置の機能構成の一例を説明するための図である。図1に示すように、暗号鍵生成装置1は、暗号パラメータ生成部10、安全性判定部11、暗号鍵生成部12を有する。また、暗号鍵生成装置1は、入力装置2および出力装置3と接続する。
入力装置2は、暗号鍵生成装置1に生成させる秘密鍵の次元数nとビット長tと解読成功確率pとを利用者が入力するための装置であり、例えば、キーボードやマウス等の装置である。ここで、解読成功確率pとは、暗号鍵生成装置1に生成させる秘密鍵および公開鍵による暗号化に対して許容する格子縮約攻撃の成功確率を示す。
出力装置3は、暗号鍵生成装置1が生成した秘密鍵および公開鍵を出力するための装置である。なお、図1に示す例では、暗号鍵生成装置1は、生成した秘密鍵および公開鍵を出力装置3に出力するが、実施例は、これに限定されるものではない。例えば、暗号鍵生成装置1は、公開鍵のみを出力するとともに、出力した公開鍵によって暗号化された暗号文を復号する復号化装置に対して秘密鍵を出力することとしてもよい。
暗号パラメータ生成部10は、入力装置から次元数nとビット長tと解読成功確率pとを受信すると、受信した次元数nとビット長tと解読成功確率pとを安全性判定部11に通知する。また、安全性判定部11は、通知された次元数nとビット長tから生成される秘密鍵と公開鍵に対する格子縮約攻撃の成功率が通知された解読成功確率p以下となるか否かを判別し、判別結果を暗号パラメータ生成部10に通知する。
このため、暗号パラメータ生成部10は、安全性判定部11から格子縮約攻撃の成功率が解読成功確率p以下となる旨の通知として「Yes」を受付けると、安全性判定部11に通知した次元数nとビット長tとを暗号鍵生成部12に通知する。また、暗号鍵生成部12は、暗号パラメータ生成部10から次元数nとビット長tとの通知を受付けた場合には、通知された次元数nとビット長tとを用いて、秘密鍵Vと公開鍵Bとを生成し、生成した秘密鍵Vと公開鍵Bとを暗号パラメータ生成部10に出力する。その後、暗号パラメータ生成部10は、暗号鍵生成部12が出力した秘密鍵Vと公開鍵Bとを出力装置3に出力する。
一方、暗号パラメータ生成部10は、安全性判定部11から格子縮約攻撃の成功率が解読成功確率pよりも大きい旨の通知として「No」を受付けると、新たな次元数nとビット長tとを選択し、新たに選択した次元数nとビット長tと解読成功確率pとを安全性判定部11に通知する。例えば、暗号パラメータ生成部10は、前回通知したビット長tから1デクリメントした値を新たなビット長tとし、安全性判定部11に通知する。
安全性判定部11は、暗号パラメータ生成部10から次元数nとビット長tと解読成功確率pとを取得した場合には、次元数nとビット長tから格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出する。そして、安全性判定部11は、格子縮約攻撃の成功率がp以下となる次元数nとビット長tから算出される係数と算出したエルミートファクタとの積が、算出したキーパラメータよりも大きいか否かを判別する。
その後、安全性判定部11は、算出した係数とエルミートファクタとの積が、算出したキーパラメータよりも大きい場合には、格子縮約攻撃の成功率が解読成功確率p以下となる旨を示す通知として「Yes」を暗号パラメータ生成部10に通知する。一方、安全性判定部11は、算出した係数とエルミートファクタとの積が、算出したキーパラメータよりも小さい場合には、格子縮約攻撃の成功率が解読成功確率pよりも大きい旨を示す通知として「No」を暗号パラメータ生成部10に通知する。
以下、安全性判定部11が実行する処理を具体的に説明する。まず、安全性判定部11は、暗号パラメータ生成部10から次元数n、ビット長t、解読成功確率pを取得する。すると、安全性判定部11は、次元数nを用いて、格子縮約アルゴリズムのエルミートファクタを算出する。
ここで、エルミートファクタとは、次元数nの行列に対して格子縮約アルゴリズムを用いることにより縮小した基底を示す行列を算出し、算出した行列の各行、又は、各列から求められる最小のノルムを行列の判別式の1/n乗で除算した値である。ここで、ノルムとは、ベクトルの各成分の2乗の和の2乗根となる値である。このようなエルミートファクタは、格子縮約アルゴリズムによりそれぞれ異なる値を有しており、LLLアルゴリズムのエルミートファクタはδ(n)=1.018、BKZアルゴリズムのエルミートファクタは、δ(n)=1.01となることが知られている。
また、安全性判定部11は、次元数nとビット長tとを用いて、以下の式(7)に示すキーパラメータδ(n,t)を算出する。なお、式(7)中のπとは円周率を示し、eとは、自然対数の値である。
Figure 0005768732
また、安全性判定部11は、解読成功確率がp以下となる秘密鍵Vと公開鍵Bとを生成するための次元数nとビット長tとを抽出する。次に、安全性判定部11は、抽出した次元数nとビット長tとを用いて、エルミートファクタδ(n)とキーパラメータδ(n、t)を算出する。また、安全性判定部11は、算出したエルミートファクタδ(n)とキーパラメータδ(n、t)とから、係数c=δ(n、t)/δ(n)を導出する。そして、安全性判定部11は、次元数nとビット長tとから算出したエルミートファクタとキーパラメータとが、以下の式(8)を満たすか否かを判別する。
Figure 0005768732
すなわち、安全性判定部11は、格子縮約攻撃の成功率がp以下となる次元数nとビット長tから算出される係数と、暗号パラメータ生成部10から取得した次元数nから算出されるエルミートファクタとの積を算出する。そして、安全性判定部11は、係数とエルミートファクタとの積が、暗号パラメータ生成部10から取得した次元数nとビット長tとから算出されるキーパラメータよりも大きいか否かを判別する。
そして、安全性判定部11は、次元数nとビット長tとから算出したエルミートファクタとキーパラメータとが、以下の式(8)を満たす場合には、解読成功確率がp以下となる旨を示す通知として「Yes」を暗号パラメータ生成部10に通知する。一方、安全性判定部11は、次元数nとビット長tとから算出したエルミートファクタとキーパラメータとが、以下の式(8)を満たさない場合には、解読成功確率がpよりも大きい旨を示す通知として「No」を暗号パラメータ生成部10に通知する。
ここで、安全性判定部11は、解読成功確率がp以下となる秘密鍵Vと公開鍵Bとを生成するための次元数nとビット長tとを任意の方法で抽出し、係数cを算出してよい。例えば、安全性判定部11は、実際に格子縮約攻撃を行うことで、解読成功確率がp以下となる次元数nとビット長tとを抽出してもよい。
すなわち、安全性判定部11は、次元数の候補となるn’およびビット長の候補となるt’をランダムに選択し、選択した次元数の候補n’およびビット長の候補t’を暗号パラメータ生成部10に送信する。すると、暗号パラメータ生成部10は、次元数の候補n’およびビット長の候補t’を暗号鍵生成部12に通知し、次元数の候補n’およびビット長の候補t’から1/p個のランダムな暗号鍵を生成させる。
また、暗号パラメータ生成部10は、次元数の候補n’およびビット長の候補t’から生成させた1/p個の暗号鍵を安全性判定部11に送信する。そして、安全性判定部11は、暗号パラメータ生成部10から受信した暗号鍵に対して格子縮約攻撃を実施し、解読成功確率p’を算出する。
安全性判定部11は、ビット長の候補t’から1をデクリメントした次元数の候補n’および新たなビット長の候補t’−1を暗号パラメータ生成部10に通知し、暗号鍵生成部12に生成させた暗号鍵に対して、再度格子縮約攻撃を実行する。このような処理を繰り返すことで、安全性判定部11は、解読成功確率がp以下となる次元数nとビット長tとを抽出してもよい。
なお、安全性判定部11は、上述した処理を1度だけ行い、処理結果を記憶してもよい。例えば、安全性判定部11は、上述した処理を格子縮約アルゴリズムおよび解読成功確率pごとにあらかじめ行い、格子縮約アルゴリズムごとに、解読成功確率pと、係数cとを対応付けて記憶する。そして、安全性判定部11は、暗号パラメータ生成部10から通知された解読成功確率pと対応付けられた係数cを用いて式(8)を満たすか否かを判別してもよい。
このような場合には、安全性判定部11は、次元数nおよびビット長tから生成する暗号鍵が格子縮約攻撃に対して安全性を有するか否かを、計算資源を浪費することなく、迅速におこなうことができる。なお、例えば、安全性判定部11は、格子縮約攻撃として、LLLアルゴリズムを用いた格子縮約攻撃、または、BKZアルゴリズムを用いた格子縮約攻撃を採用できるが、これ以外にも、任意のアルゴリズムを用いた格子縮約攻撃を採用できる。
ここで、解読成功確率がp以下となる次元数nとビット長tとから算出した係数とエルミートファクタとの積が、キーパラメータよりも大きいか否かを安全性判定部11が判定することで、解読成功確率がp以下か否かを判定できる点について説明する。まず、格子縮約アルゴリズムを用いて格子縮約攻撃を行う情報処理装置が実行する処理について説明する。例えば、情報処理装置は、暗号文cと公開鍵Bとを用いて、式(9)に示す(n+1)×(n+1)行列Cを生成する。
Figure 0005768732
ここで、行列Cの行ベクトルを(b、b、…、b)とし、(b、b、…、b)を係数とする線形結合の元a+a+…+aのなす集合Sを考える。ここで、a〜aおよびb〜bは、整数であるものとする。また、(b、b、…、b)は行列Cの基底ベクトルであり、集合Sを基底ベクトル(b、b、…、b)が生成する格子と呼ぶ。
ここで、公開鍵暗号方式で通信を行う情報処理装置は、暗号文cを秘密鍵Vを用いて復号する際には、式(3)中のベクトルa’を算出する。このとき、(n+1)次元ベクトルである(a’、1)は、集合Sに元として含まれ、集合Sに含まれるベクトルの中で最小のノルムを持つ。
一方、行列Cに対して格子縮約アルゴリズムを適用することで算出される縮小した基底を示す行列を行列Dとすると、行列Dの行ベクトルは、ベクトル(a’、1)と同じ集合Sに含まれることとなる。また、格子縮約アルゴリズムによって算出される行列Dの第1行ベクトルは、最も少ないノルムを有する傾向がある。このため、行列Dの第1行ベクトルをdとしたとき、d=(a’、1)となる可能性が高い。
すると、d=(a’、1)を従属するような状態において、公開鍵Bと暗号文cから算出することができる行列Cに格子縮約アルゴリズムを適用した行列Dから、式(3)に示すベクトルa’を算出することができる。ここで、ベクトルa’の第1成分を2で割った余りを算出すると、暗号文cの復号結果となるので、情報処理装置は、暗号文cと公開鍵Bから復号結果を得ることができる。
上述したように、行列Cに格子縮約アルゴリズムを適用して得られる行列Dの第1ベクトルであるdのノルムが集合Sの中で最小となる場合には、格子縮約攻撃が成功することとなる。ここで、非特許文献5によると、δ(n、t)>cδ(n)が成り立つ場合には、dのノルムが集合Sの中で最小となり、格子縮約攻撃が成功する点が示されている。
ここで、係数cは、解読成功確率pの値と格子縮約アルゴリズムの種類のみに依存する値である。また、δ(n、t)=cδ(n)を満たす(n、t)を安全な入力パラメータ(n、t)の境界値とすると、次元数nを固定した際に、t≦tを満たすビット長を用いて生成される暗号鍵の解読成功確率が同じ傾向を有する。また、次元数tを固定した際に、n≧nを満たす次元数を用いて生成される暗号鍵の解読成功確率が同じ傾向を有する。
このため、安全性判定部11は、次元数nとビット長tとが、解読成功確率pと格子縮約アルゴリズムとに係る係数cを用いて、δ(n、t)<cδ(n)を満たすか否かを判別することにより、解読成功確率がp以下となるか否かを判別することができる。
次に、図を用いて、次元数nを固定した際に、t≦tを満たすビット長で暗号鍵の解読成功確率が同じ傾向を有する点、および、次元数tを固定した際に、n≧nを満たす次元数で生成される暗号鍵の解読成功確率が同じ傾向を有する点について説明する。なお、以下の説明では、図2〜図4を用いて、格子縮約攻撃による解読成功確率の平均について説明し、その後、図5、図6を用いて、係数c=δ(n、t)/δ(n)から求められる安全な次元数nとビット長tとの関係について説明する。
図2は、n=256の際にLLLアルゴリズムを用いた格子縮約攻撃の実験結果を説明するための図である。図2に示す例では、次元数nを256に固定し、秘密鍵のビット長を変化させながら生成した暗号鍵に対し、LLLアルゴリズムによる格子縮約攻撃の成功確率の平均を示した。また、図2に示す例では、横軸をビット長とし、縦軸を成功確率とした。
例えば、図2に示す例では、秘密鍵のビット長が4である際に、格子縮約攻撃の成功確率の平均が0パーセントとなり、秘密鍵のビット長が5である際に、格子縮約攻撃の成功確率の平均が4.62パーセントとなった。また、秘密鍵のビット長が6である際には格子縮約攻撃の成功確率の平均が79.65パーセントとなり、秘密鍵のビット長が7である際に、格子縮約攻撃の成功確率の平均が99.9パーセントとなった。また、秘密鍵のビット長が8である際に、格子縮約攻撃の成功確率が100パーセントとなった。
また、図3は、n=512の際にLLLアルゴリズムを用いた格子縮約攻撃の実験結果を説明するための図である。図3に示す例では、次元数nを512に固定し、秘密鍵のビット長を変化させながら生成した暗号鍵に対し、LLLアルゴリズムによる格子縮約攻撃の成功確率を示した。また、図3に示す例では、図2と同様に横軸をビット長とし、縦軸を成功確率とした。
例えば、図3に示す例では、秘密鍵のビット長が11、12である際に、格子縮約攻撃の成功確率が0パーセントとなり、秘密鍵のビット長が13である際に、格子縮約攻撃の成功確率の平均が31.8パーセントとなった。また、秘密鍵のビット長が14である際には格子縮約攻撃の成功確率の平均が98.8パーセントとなり、秘密鍵のビット長が15である際に、格子縮約攻撃の成功確率が100パーセントとなった。
また、図4は、n=512の際にBKZアルゴリズムを用いた格子縮約攻撃の実験結果を説明するための図である。図4に示す例では、次元数nを512に固定し、秘密鍵のビット長を変化させながら生成した暗号鍵に対し、BKZアルゴリズムによる格子縮約攻撃の成功確率を示した。また、図3に示す例では、図2と同様に横軸をビット長とし、縦軸を成功確率とした。
例えば、図4に示す例では、秘密鍵のビット長が6以下の際に、格子縮約攻撃の成功確率が0パーセントとなり、秘密鍵のビット長が7である際に、格子縮約攻撃の成功確率の平均が0.5パーセントとなった。また、秘密鍵のビット長が8である際には格子縮約攻撃の成功確率の平均が97.3パーセントとなり、秘密鍵のビット長が9である際に、格子縮約攻撃の成功確率が100パーセントとなった。
ここで、p=0.1、n=256とし、LLLアルゴリズムのエルミートファクタを用いて係数cを算出した場合には、c=0.08となる。ここで、横軸を次元数n、縦軸をビット長tとし、c=0.08の際に式(8)を満たす境界値をプロットすると、図5のようになる。図5は、LLLアルゴリズムを用いた格子縮約攻撃に対する安全な入力パラメータ(n、t)の範囲を説明するための図である。なお、図5に示す例では、次元数nとビット長tとの組み合わせが、図5に示す折れ線グラフよりも下の範囲に含まれる場合には、解読成功確率が0.1パーセント以下となる。
例えば、図5に示す例では、次元数n=256の際、ビット長tの境界値t’が、4.99以下の際に、解読成功確率が0.1パーセント以下となる。一方、図2を参照すると、ビット長tが4以下の場合には、解読成功確率が0.1以下となることが確認できる。また、図5に示す例では、次元数n=512の際、ビット長tの境界値t’が、11.08以下の際に、解読成功確率が0.1パーセント以下となる。一方、図3を参照すると、ビット長tが12以下の場合には、解読成功確率が0.1以下となることが確認できる。
一方、図6は、BKZアルゴリズムを用いた格子縮約攻撃に対する安全な入力パラメータ(n、t)の範囲を説明するための図である。なお、図6に示す例では、図5と同様に、BKZアルゴリズムのエルミートファクタを用いて算出した係数cを用いた際に、式(8)を満たす境界値をプロットした。
例えば、図6に示す例では、次元数n=512の際、ビット長tの境界値t’が、6.99以下の際に、解読成功確率が0.1パーセント以下となる。一方、図4を参照すると、ビット長tが6以下の場合には、解読成功確率が0.1以下となることが確認できる。
このように、次元数nが変化しても、式(8)を用いることで、同一の係数cによって定まる安全な次元数nおよびビット長tの組み合わせを適切に求めることができる。よって、nが大きい値になった場合であっても、式(8)を用いることで、解読成功確率がp未満となるか否かを正しく判別することができる。
なお、図5および図6に示すように、格子縮約アルゴリズムが変化した場合には、係数cの値が変化するため、安全な次元数nおよびビット長tの組み合わせが変化する。しかしながら、図3および図4を比較することで明らかな通り、異なる格子縮約アルゴリズムが適用された場合にも、係数cから求められる安全な次元数nおよびビット長tの組み合わせの傾向が類似する。このため、格子縮約アルゴリズムが異なる場合であっても、対応する係数cを算出することで、式(8)を用いた判定を行うことができる。
以上のように、安全性判定部11は、格子縮約アルゴリズムに応じたエルミートファクタとキーパラメータと用いて、解読成功確率がp以下となる次元数nおよびビット長tを抽出し、抽出した次元数nおよびビット長tを用いて係数cを算出する。そして、安全性判定部11は、算出した係数cと式(8)を用いることにより、暗号パラメータ生成部10から通知された次元数nおよびビット長tから生成される暗号鍵の解読成功確率がp未満か否かを判別することができる。
図1に戻って、暗号鍵生成部12は、安全性判定部11が、次元数nとビット長tとから生成される暗号鍵の解読成功確率がp以下となる場合には、暗号鍵を生成する。具体的には、暗号鍵生成部12は、安全性判定部11が次元数nとビット長tとから生成される暗号鍵の解読成功確率がp以下となると判別した場合には、暗号パラメータ生成部10から次元数nとビット長tとを取得する。
このような場合には、暗号鍵生成部12は、次元数nの乱数ベクトルvを選択し、式(1)に示す行列Vを生成する。また、暗号鍵生成部12は、生成した行列Vのエルミート標準形となる行列Bを算出する。この際、暗号鍵生成部12は、行列Bの第1行に含まれる要素のうち第1列目の要素が判別式として抽出する。そして、暗号鍵生成部12は、抽出した判別式を2で除算した余りが1である場合には、算出した行列Vを秘密鍵Vとし、行列Bを公開鍵Bとして暗号パラメータ生成部10に出力する。一方、暗号鍵生成部12は、抽出した判別式を2で除算した余りが1ではない場合には、再度、次元数nの乱数ベクトルvを選択し、行列Vの生成を行う。
次に、数値例を用いて、暗号鍵生成装置1が格子縮約攻撃に対して安全な秘密鍵Vおよび公開鍵Bを出力する処理について説明する。例えば、暗号鍵生成装置1は、入力装置から、要求される次元数n、ビット長t、解読成功確率pとして(n、t、p)=(512、20、0.1)を取得する。
このような場合には、安全性判定部11は、n=256の際に解読成功確率が0.1以下となる(n,t)を抽出する。例えば、安全性判定部11は、ランダムに選択した(n’、t’)=(256、4)を用いて暗号鍵の候補を生成し、生成した候補に対して格子縮約攻撃を行う処理を、1/p=1000回実行し、何回解読に成功したかを記録する。次に、安全性判定部11は、(n’、t’)=(256、3)として同様の格子縮約攻撃を行い、攻撃成功確率がp=0.1以下となるtが得られるまで繰り返す。
この結果、安全性判定部11は、n’=256の際に解読成功確率pが0.1以下となるt’がt’<5であると判別する。この結果、安全性判定部11は、n=256、t=5を抽出する。次に、安全性判定部11は、式(7)に(n、t)を代入してキーパラメータδ(n、t)=7.758を算出する。また、安全性判定部11は、n0=256を用いて、LLLアルゴリズムのエルミートファクタδ(n)=96.257を算出する。この結果、安全性判定部11は、係数c=δ(n、t)/δ(n)=0.08を算出する。
次に、安全性判定部11は、暗号パラメータ生成部10から通知された次元数n=512とビット長t=20からエルミートファクタδ(n)およびキーパラメータδ(n、t)を算出し、式(8)を満たすか否かを判別する。ここで、n=512、t=20の場合には、δ(n、t)=216×(513/(2×3.14×2.72))1/2=359148となり、cδ(n)−δ(n、t)=−358407となる。この結果、安全性判定部11は、n=512、t=20の場合は、式(8)を満たさないと判別する。
このような場合には、暗号パラメータ生成部10は、tの値を1デクリメントし、n=512、t=19を通知することとなる。このような処理を継続すると、安全性判定部11は、n=512、t=10となった際に、cδ(n)−δ(n、t)=390.498と算出し、式(8)を満たすと判別する。この結果、暗号パラメータ生成部10は、n=512、t=10を暗号鍵生成部12に通知し、秘密鍵Vおよび公開鍵Bを生成させる。その後、暗号パラメータ生成部10は、暗号鍵生成部12が生成した秘密鍵Vおよび公開鍵Bを出力装置3に送信する。
このように、暗号鍵生成装置1は、次元数nとビット長tとを用いて、格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出する。また、暗号鍵生成装置1は、解読成功確率がp以下となる次元数nとビット長tから算出する係数と、次元数nから算出するエルミートファクタとの積が、次元数nとビット長tとから算出するキーパラメータより大きいか否かを判別する。そして、暗号鍵生成装置1は、次元数nとビット長tから算出する係数と、次元数nから算出するエルミートファクタとの積が、次元数nとビット長tとから算出するキーパラメータより大きい場合には、次元数nとビット長tから秘密鍵Vと公開鍵Bを生成する。
このため、暗号鍵生成装置1は、秘密鍵Vおよび公開鍵Bを生成するたびに、格子縮約攻撃を行う事で安全性を判別せずとも、格子縮約攻撃に対して安全性を有する秘密鍵Vおよび公開鍵Bを算出することができる。また、暗号鍵生成装置1は、格子縮約アルゴリズムごとの係数cを予め記憶する場合は、格子縮約攻撃に対して安全性を有する暗号鍵を迅速に生成し、出力することができる。
例えば、暗号パラメータ生成部10、安全性判定部11、暗号鍵生成部12とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
次に、図を用いて、暗号鍵生成装置1が有する暗号パラメータ生成部10、安全性判定部11、暗号鍵生成部12が実行する処理の流れについて説明する。まず、図7を用いて、暗号パラメータ生成部10が実行する処理の流れについて説明する。
図7は、暗号パラメータ生成部が実行する処理の流れを説明するためのフローチャートである。図7に示す例では、暗号パラメータ生成部10は、入力装置2から、次元数n、ビット長t、解読成功確率pを取得する(ステップS101)。次に、暗号パラメータ生成部10は、取得した次元数n、ビット長t、解読成功確率pを安全性判定部11に出力する(ステップS102)。
そして、暗号パラメータ生成部10は、安全性判定部11の出力が「Yes」であるか否かを判別し(ステップS103)、Yesである場合には(ステップS103肯定)、次元数nとビット長tを暗号鍵生成部12に出力する(ステップS104)。その後、暗号パラメータ生成部10は、暗号鍵生成部12が生成した秘密鍵Vと暗号鍵Bを出力し(ステップS105)、処理を終了する。
一方、暗号パラメータ生成部10は、安全性判定部11の出力が「No」である場合には(ステップS103否定)、異なる次元数n、または、ビット長tを選択する(ステップS106)。そして、暗号パラメータ生成部10は、ステップS102の処理を実行する。
次に、図8を用いて、安全性判定部11が実行する処理の流れについて説明する。図8は、安全性判定部が実行する処理の流れを説明するためのフローチャートである。例えば、図8に示す例では、安全性判定部11は、暗号パラメータ生成部10から次元数n、ビット長t、解読成功確率pを取得する(ステップS201)。次に、安全性判定部11は、解読成功確率がp以下となるδ(n、t)を導出する(ステップS202)。
また、安全性判定部11は、係数c=δ(n、t)/δ(n)を算出する(ステップS203)。また、安全性判定部11は、ステップS201で取得した次元数nとビット長tとを用いて、エルミートファクタδ(n)とキーパラメータδ(n、t)を算出する(ステップS204)。そして、安全性判定部11は、cδ(n)−δ(n、t)>0を満たすか否かを判別する(ステップS205)。
その後、安全性判定部11は、ステップS201で取得した次元数nとビット長tとがcδ(n)−δ(n、t)>0を満たす場合は(ステップS205肯定)、「Yes」を暗号パラメータ生成部10に出力し(ステップS206)、処理を終了する。一方、安全性判定部11は、、ステップS201で取得した次元数nとビット長tとがcδ(n)−δ(n、t)>0を満たさない場合は(ステップS205否定)、「No」を暗号パラメータ生成部10に出力し(ステップS207)、処理を終了する。
次に、図9を用いて、暗号鍵生成部12が実行する処理の流れについて説明する。図9は、暗号鍵生成部が実行する処理の流れを説明するためのフローチャートである。図9に示す例では、暗号鍵生成部12は、暗号パラメータ生成部10から、次元数nとビット長tとを取得する(ステップS301)。すると、暗号鍵生成部12は、n次元の乱数ベクトルvを生成し、生成した乱数ベクトルvから式(1)を用いて行列Vを生成する(ステップS302)。次に、暗号鍵生成部12は、行列Vのエルミート標準形となる行列Bを生成する(ステップS303)。
そして、暗号鍵生成部12は、行列Bの(1、1)成分、すなわち、行列Bの1行目に含まれる各要素のうち、1列目に位置する要素の値を2で割った余りが1であるか否かを判別する(ステップS304)。その後、暗号鍵生成部12は、行列Bの(1、1)成分の値を2で割った余りが1である場合には(ステップS304肯定)、行列Vを秘密鍵とし、行列Bを公開鍵として、暗号パラメータ生成部10に出力し(ステップS305)、処理を終了する。一方、暗号鍵生成部12は、行列Bの(1、1)成分の値を2で割った余りが0となる場合には(ステップS304否定)、新たなn次元の乱数ベクトルvを生成し、生成した乱数ベクトルvから行列Vを生成する(ステップS302)。
上述したように、暗号鍵生成装置1は、選択した次元数nとビット長tとを用いて、格子縮約アルゴリズムのエルミートファクタδ(n)とキーパラメータδ(n、t)を算出する。また、暗号鍵生成装置1は、解読成功確率がp以下となる次元数nとビット長tから係数cを算出し、cδ(n)−δ(n、t)>0を満たすか否かを判別する。
そして、暗号鍵生成装置1は、cδ(n)−δ(n、t)>0を満たす場合には、次元数nとビット長tとを用いて、秘密鍵Vと公開鍵Bを生成する。このため、暗号鍵生成装置1は、秘密鍵Vと公開鍵Bを生成する度に格子縮約攻撃を行わずとも、格子縮約攻撃に対して安全性を有する秘密鍵Vと公開鍵Bを生成することができる。
また、暗号鍵生成装置1は、cδ(n)−δ(n、t)>0を満たさない場合には、ビット長tから1をデクリメントしたビット長を新たに選択し、次元数nと新たに選択したtとがcδ(n)−δ(n、t)>0を満たすか否かを判別する。このため、暗号鍵生成装置1は、入力された次元数nに対して安全性を有するビット長tを用いた秘密鍵Vと公開鍵Bを生成することができる。
また、暗号鍵生成装置1は、解読成功確率がp以下となる次元数nとビット長tから係数c=δ(n、t)/δ(n)を算出し、cδ(n)−δ(n、t)>0を満たすか否かを判別する。このため、暗号鍵生成装置1は、次元数nとビット長tとから生成させる秘密鍵Vと公開鍵Bが安全性を有するか否かを正しく判別することができる。
また、暗号鍵生成装置1は、ランダムに選択した次元数n’とビット長t’とを用いて、解読成功確率pの逆数と同数の暗号鍵候補を生成する。そして、暗号鍵生成装置1は、生成した暗号鍵候補に対する格子縮約攻撃を行うことで、解読成功確率がp以下となる次元数nとビット長tとを算出する。
このため、暗号鍵生成装置1は、格子縮約アルゴリズムの種別と、解読成功確率pとの組み合わせによって定まる係数cを保持していない場合にも、解読成功確率がp以下となる次元数nとビット長tとを算出することで、係数cを取得することができる。この結果、暗号鍵生成装置1は、任意の格子縮約アルゴリズムと、解読成功確率pとの組み合わせを満たす秘密鍵Vと公開鍵Bとを出力することができる。
また、暗号鍵生成装置1は、LLLアルゴリズム、または、BKZアルゴリズムを用いた格子縮約攻撃に対して、解読成功確率がp以下となる次元数nとビット長tとを算出する。このため、暗号鍵生成装置1は、LLLアルゴリズム、または、BKZアルゴリズムに対して、解読成功確率がp以下となる秘密鍵Vと公開鍵Bとを出力することができる。
なお、暗号鍵生成装置1は、実際にランダムに生成した暗号鍵に対する格子縮約攻撃を行うとしても、一般に用いられる次元数nやビット長tよりも小さい値の次元数n’およびビット長t’を生成する。そして、暗号鍵生成装置1は、生成した次元数n’およびビット長t’に基づいて、次元数nおよびビット長tを算出し、算出した次元数nおよびビット長tから係数cを算出する。
このため、暗号鍵生成装置1は、実際に格子縮約攻撃を行う場合にも、計算量を削減し、現実的な時間内で係数cを算出することができる。ここで、係数cは、次元数nやビット長tの値によらない値である。このため、暗号鍵生成装置1は、一般に用いられる次元数nやビット長tと比較して小さな次元数nおよびビット長tから係数cを算出した場合にも、次元数nやビット長tが安全性を有するか否かを適切に判別することができる。
また、暗号鍵生成装置1は、格子縮約アルゴリズムの種類ごとに、あらかじめ、解読成功確率がp以下となる次元数nとビット長tから係数cを導出して保持する。そして、暗号鍵生成装置1は、入力された解読成功確率pに応じた係数cを用いて、入力された次元数nとビット長tとがcδ(n)−δ(n、t)>0を満たすか否かを判別する。このため、暗号鍵生成装置1は、計算資源をさらに削減することができる。
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)次元数n、ビット長tの入力について
上述した暗号鍵生成装置1は、入力装置2を介して、次元数n、ビット長t、解読成功確率pを取得し、取得した次元数n、ビット長tから算出される秘密鍵Vおよび公開鍵Bが解読成功確率pを満たすか否かを判別した。しかし実施例は、これに限定されるものではない。
例えば、暗号鍵生成装置1は、次元数n、ビット長tの入力を行わずとも、解読成功確率がp以下となる秘密鍵Vおよび公開鍵Bを自動的に出力しても良い。例えば、暗号パラメータ生成部10は、次元数nとビット長tとをランダムに生成する。そして、暗号パラメータ生成部10は、ランダムに生成した次元数n、ビット長t、解読成功確率pを安全性判定部11に出力する。
そして、暗号パラメータ生成部10は、ランダムに生成した次元数nおよびビット長tから生成される暗号鍵の解読成功確率がp以上となる場合、すなわち、安全性判定部11から「No」を受信した場合には、ビット長tから1をデクリメントする。そして、暗号パラメータ生成部10は、次元数nとビット長(t−1)を安全性判定部11に出力する。以上の処理を繰り返すことで、暗号鍵生成装置1は、次元数nおよびビット長tの指定を取得せずとも、解読成功確率がp以下となる秘密鍵Vと公開鍵Bとを生成することができる。
また、暗号鍵生成装置1は、次元数nのみの指定を受付けることとしてもよい。このような場合には、暗号パラメータ生成部10は、ランダムに生成したビット長t’と指定された次元数nと、固定の解読成功確率pとを安全性判定部11に出力する。そして、暗号パラメータ生成部10は、安全性判定部11が「Yes」を出力するまで、ビット長t’をデクリメントすることとしてもよい。
以下、数値を用いた具体例を説明する。例えば、暗号鍵生成装置1は、入力装置2から、要求される次元数n、解読成功確率pとして(n、p)=(1024、0.1)を取得する。このような場合には、安全性判定部11は、解読成功確率が0.1以下となる(n,t)を抽出する。
例えば、安全性判定部11は、ランダムに選択した(n’、t’)=(256、4)を用いて暗号鍵の候補を生成し、生成した候補に対して格子縮約攻撃を行う処理を、1/p=1000回実行し、何回解読に成功したかを記録する。次に、安全性判定部11は、(n’、t’)=(256、3)として同様の格子縮約攻撃を行い、攻撃成功確率がp=0.1以下となるtが得られるまで繰り返す。
この結果、安全性判定部11は、n’=256の際に解読成功確率pが0.1以下となるt’がt’<5であると判別する。この結果、安全性判定部11は、n=256、t=5を抽出する。次に、安全性判定部11は、式(7)に(n、t)を代入してキーパラメータδ(n、t)=7.758を算出する。また、安全性判定部11は、n0=256を用いて、LLLアルゴリズムのエルミートファクタδ(n)=96.257を算出する。この結果、安全性判定部11は、係数c=δ(n、t)/δ(n)=0.08を算出する。
次に、暗号パラメータ生成部10は、ランダムに選択したビット長として、t=25と次元数n=1024と、解読成功確率p=0.1とを安全性判定部11に通知する。すると、安全性判定部11は、暗号パラメータ生成部10から通知された次元数n=1024とビット長t=25からエルミートファクタδ(n)およびキーパラメータδ(n、t)を算出し、式(8)を満たすか否かを判別する。ここで、n=1024、t=25の場合には、cδ(n)−δ(n、t)=−9377540となる。この結果、安全性判定部11は、n=1024、t=25の場合は、式(8)を満たさないと判別する。
このような場合には、暗号パラメータ生成部10は、tの値を1デクリメントし、n=1024、t=24を通知することとなる。このような処理を継続すると、安全性判定部11は、n=1024、t=24となった際に、cδ(n)−δ(n、t)=−1254893となるので、式(8)を満たさないと判別する。
このため、暗号パラメータ生成部10は、n=1024、t=23を安全性判定部11に通知する。すると、安全性判定部11は、cδ(n)−δ(n、t)=2806429となるので、式(8)を満たすと判別し、暗号パラメータ生成部10に「Yes」を出力する。この結果、暗号パラメータ生成部10は、n=1024、t=23を暗号鍵生成部12に出力し、秘密鍵Vと公開鍵Bを生成させる。
さらに、暗号鍵生成装置1は、安全なビット長のうち、最も大きい値のビット長を用いて秘密鍵Vと暗号鍵Bとを生成することとしてもよい。例えば、暗号パラメータ生成部10は、安全性判定部11が「Yes」を出力した場合には、ビット長tをインクリメントし、インクリメントしたビット長(t+1)を安全性判定部11に入力する処理を実行する。その後、暗号パラメータ生成部10は、安全性判定部11が「No」を出力した場合には、前回入力したビット長を暗号鍵生成部12に出力することとしてもよい。
一方、暗号鍵生成装置1は、指定されたビット長tから、解読成功確率がp以下となる次元数nと出力することとしてもよい。例えば、暗号パラメータ生成部10は、次元数n’をランダムに選択し、安全性判定部11に次元数n’、ビット長t、解読成功確率pとを出力する。そして、暗号パラメータ生成部10は、安全性判定部11が「No」を出力した場合には、次元数n’を1インクリメントし、新たな次元数n’+1、ビット長t、解読成功確率pを安全性判定部11に入力する。
以上の処理を繰り返し、安全性判定部11が「Yes」を出力した場合には、暗号パラメータ生成部10は、安全性判定部11に入力した次元数とビット長tと解読成功確率pとを暗号鍵生成部12に入力することとしてもよい。また、暗号パラメータ生成部10は、cδ(n)がδ(n、t)よりも小さい場合には、前回選択した次元数nを2倍にした値を新たな次元数nとして選択しても良い。
以下、数値を用いた具体例を説明する。なお、以下の説明においては、安全性判定部11が係数c=0.08をすでに算出し、保持しているものとする。例えば、暗号パラメータ生成部10は、ビット長t=28、解読成功確率p=0.1を取得する。このような場合には、暗号パラメータ生成部10は、2のべき乗となる次元数n’をランダムに選択する。例えば、暗号パラメータ生成部10は、次元数n’=512を選択する。そして、暗号パラメータ生成部10は、次元数n’=512、ビット長t=28、解読成功確率p=0.1を安全性判定部11に通知する。
すると、安全性判定部11は、cδ(n)−δ(n、t)=−96408254051576となるため、「No」を出力する。このような場合には、暗号パラメータ生成部10は、次元数n’を2倍し、n’=1024として、安全性判定部11に入力する。すると、安全性判定部11は、cδ(n)−δ(n、t)=−136275393938182となるため、「No」を出力する。
この結果、暗号パラメータ生成部10は、新たな次元数として、n’=1024×2=2048を安全性判定部11に入力する。すると、安全性判定部11は、cδ(n)−δ(n、t)=396899861581922となるため、式(8)を満たすと判別し、「Yes」を出力する。このため、暗号パラメータ生成部10は、次元数n=2048、ビット長t=28を暗号鍵生成部12に入力し、秘密鍵Vと公開鍵Bとを生成させる。
このように、暗号鍵生成装置1は、cδ(n)がδ(n、t)よりも小さい場合には、前回選択した次元数nに1インクリメントする等して、新たな次元数nを選択しなおす。そして、暗号鍵生成装置1は、cδ(n)がδ(n、t)よりも大きくなるまで、安全性を判別する。このため、暗号鍵生成装置1は、任意のビット数tに対して安全な次元数nを短時間で算出し、算出した次元数nを用いて、安全性を有する秘密鍵Vと公開鍵Bとを生成することができる。
(2)係数cを用いた処理について
上述した暗号鍵生成装置1は、指定された解読成功確率pを満たす次元数nとビット長tから係数cを算出し、算出した係数cを用いて、次元数nとビット長tから生成される秘密鍵Vと公開鍵Bが安全性を有するか判別した。しかし、実施例は、これに限定されるものではない。
すなわち、暗号鍵生成装置1は、図5および図6に示すように、係数cを保持する場合には、任意の次元数nにおいて解読成功確率がp以下となるビット長tを識別することができる。このため、暗号鍵生成装置1は、保持する係数cを用いて、任意の次元数nにおいて解読成功確率がp以下となるビット長tを識別し、識別したビット長を用いて秘密鍵Vと公開鍵Bとを算出することとしてもよい。同様に、暗号鍵生成装置1は、保持する係数cを用いて、任意のビット長tにおいて解読成功確率がp以下となる次元数nを識別し、識別した次元数nを用いて、秘密鍵Vと公開鍵Bとを算出することとしてもよい。
(3)秘密鍵Vと公開鍵Bについて
上述した暗号鍵生成装置1は、各要素がビット長t以下となるランダムな整数であるn次元の乱数ベクトルvと式(1)とを用いて、秘密鍵Vを生成した。しかし、実施例はこれに限定されるものではない。
例えば、暗号鍵生成装置1は、終結式res(x+1、v)の解が、ビット長t以下の十分に小さい整数sと任意の素数pとの積となるように乱数ベクトルvを生成する。そして、暗号鍵生成装置1は、生成した乱数ベクトルvと式(1)とを用いて、秘密鍵Vを生成することとしてもよい。
(4)プログラム
ところで、実施例1に係る暗号鍵生成装置1は、ハードウェアを利用して各種の処理を実現する場合を説明した。しかし、実施例はこれに限定されるものではなく、あらかじめ用意されたプログラムを構成情報管理装置、又は、補完装置が有するコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図10を用いて、実施例1に示した暗号鍵生成装置1と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図10は、暗号鍵生成プログラムを実行するコンピュータの一例を説明するための図である。
図10に例示されたコンピュータ100は、ROM(Read Only Memory)110、HDD(Hard Disk Drive)120、RAM(Random Access Memory)130、CPU(Central Processing Unit)140がバス160で接続される。また、コンピュータ100は、他のコンピュータと通信を行うためのI/O(Input Output)150がバス160で接続される。
RAM130には、暗号鍵生成プログラム131が記憶されており、CPU140が読み出して実行することによって、図10に示す例では、暗号鍵生成プロセス141として機能するようになる。なお、暗号鍵生成プロセス141は、図1に示す暗号鍵生成装置1が有する暗号パラメータ生成部10、安全性判定部11、暗号鍵生成部12と同様の機能を発揮する。
なお、本実施例で説明した暗号鍵生成プログラムは、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical Disc)、DVD(Digital Versatile Disc)などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読み出されることによって実行することもできる。
1 暗号鍵生成装置
2 入力装置
3 出力装置
10 暗号パラメータ生成部
11 安全性判定部
12 暗号鍵生成部

Claims (11)

  1. 暗号鍵と公開鍵とを生成する暗号鍵生成装置が実行する暗号鍵生成方法において、
    前記暗号鍵生成装置が有する安全性判別部が、暗号鍵として用いられる行列の次元数と当該行列の各要素のビット長とを用いて、格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出し、子縮約攻撃の成功率が所定の値以下となる次元数とビット長から算出される係数と当該算出したエルミートファクタとの積が、当該算出したキーパラメータよりも大きいか否かを判別し、
    前記安全性判定部が、前記エルミートファクタと前記係数との積が前記キーパラメータよりも大きいと判別した場合には、前記暗号鍵生成装置が有する暗号鍵生成部が、前記元数とビット長とを用いて、暗号鍵を生成する
    処理を前記暗号鍵生成装置が実行することを特徴とする暗号鍵生成方法。
  2. 前記安全性判定部が、前記エルミートファクタと前記係数との積が前記キーパラメータよりも小さいと判別した場合には、前記暗号鍵生成装置が有する暗号パラメータ生成部が、前回選択したビット長から1デクリメントしたビット長を新たに選択しなおす処理をらに実行することを特徴とする請求項1に記載の暗号鍵生成方法。
  3. 前記安全性判定部が、前記エルミートファクタと前記係数との積が前記キーパラメータよりも小さいと判別した場合には、前記暗号鍵生成装置が有する暗号パラメータ生成部が、前回選択した次元数から1インクリメントした次元数を新たに選択しなおす処理をらに実行することを特徴とする請求項1に記載の暗号鍵生成方法。
  4. 前記安全性判定部が、格子縮約攻撃の成功率が所定の値以下となる次元数とビット長とを用いて、格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出し、当該算出したキーパラメータを当該算出したエルミートファクタで除算することで、前記係数を導出する処理を行し、元数とビット長とを用いて、前記エルミートファクタとキーパラメータとを算出し、前記導出した係数と当該算出したエルミートファクタとの積が、当該算出したキーパラメータよりも大きいか否かを判別することを特徴とする請求項1〜3のいずれか1つに記載の暗号鍵生成方法。
  5. 前記安全性判定部が、ランダムに選択した次元数とビット長とを用いて、前記所定の値の逆数と同数の暗号鍵候補を生成し、当該生成した暗号鍵候補に対する格子縮約攻撃を行うことで、前記格子縮約攻撃の成功率が所定の値以下となる次元数とビット長とを算出する処理をらに実行し、記算出した前記格子縮約攻撃の成功率が所定の値以下となる次元数とビット長とを用いて、前記係数を導出することを特徴とする請求項4に記載の暗号鍵生成方法。
  6. 前記安全性判定部が、前記格子縮約攻撃の成功率が所定の値以下となる次元数とビット長とを算出する際に、LLLアルゴリズムを用いた格子縮約攻撃を行うことを特徴とする請求項5に記載の暗号鍵生成方法。
  7. 前記安全性判定部が、前記格子縮約攻撃の成功率が所定の値以下となる次元数とビット長とを算出する際に、BKZアルゴリズムを用いた格子縮約攻撃を行うことを特徴とする請求項5に記載の暗号鍵生成方法。
  8. 前記安全性判定部が、格子縮約攻撃の成功率が所定の値以下となる次元数とビット長とを用いてあらかじめ導出された前記係数を保持する処理をらに実行し、記保持した係数と前記算出したエルミートファクタとの積が、前記算出したキーパラメータよりも大きいか否かを判別することを特徴とする請求項1〜3のいずれか1つに記載の暗号鍵生成方法。
  9. 前記安全性判定部が、前記エルミートファクタと前記係数との積が前記キーパラメータよりも大きいと判別した場合には、前記元数の乱数ベクトルであって、前記ット長以下の整数と、任意の素数との積を終結式の解とする乱数ベクトルを算出し、当該算出した乱数ベクトルを用いて、暗号鍵を生成する処理を実行することを特徴とする請求項1〜8のいずれか1つに記載の暗号鍵生成方法。
  10. 暗号鍵として用いられる行列の次元数と当該行列の各要素のビット長とを選択する選択部と、
    前記選択部が選択した次元数とビット長とを用いて、格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出し、格子縮約攻撃の成功率が所定の値以下となる次元数とビット長から算出される係数と前記算出したエルミートファクタとの積が、当該算出したキーパラメータよりも大きいか否かを判別する判別部と、
    前記判別部が、前記エルミートファクタと前記係数との積が前記キーパラメータよりも大きいと判別した場合には、前記選択部が選択した次元数とビット長とを用いて、暗号鍵を生成する生成部と
    を有することを特徴とする暗号鍵生成装置。
  11. 暗号鍵と公開鍵とを生成するコンピュータに処理を実行させるための暗号鍵生成プログラムであって、
    前記コンピュータに、
    暗号鍵として用いられる行列の次元数と当該行列の各要素のビット長とを選択する選択機能
    前記選択機能が選択した次元数とビット長とを用いて、格子縮約アルゴリズムのエルミートファクタとキーパラメータとを算出し、格子縮約攻撃の成功率が所定の値以下となる次元数とビット長から算出される係数と前記算出したエルミートファクタとの積が、当該算出したキーパラメータよりも大きいか否かを判別する判別機能
    前記判別機能が、前記エルミートファクタと前記係数との積が前記キーパラメータよりも大きいと判別した場合には、前記選択機能が選択した次元数とビット長とを用いて、暗号鍵を生成する生成機能
    を実現させるための暗号鍵生成プログラム。
JP2012015396A 2012-01-27 2012-01-27 暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム Expired - Fee Related JP5768732B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012015396A JP5768732B2 (ja) 2012-01-27 2012-01-27 暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012015396A JP5768732B2 (ja) 2012-01-27 2012-01-27 暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム

Publications (2)

Publication Number Publication Date
JP2013156348A JP2013156348A (ja) 2013-08-15
JP5768732B2 true JP5768732B2 (ja) 2015-08-26

Family

ID=49051611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012015396A Expired - Fee Related JP5768732B2 (ja) 2012-01-27 2012-01-27 暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム

Country Status (1)

Country Link
JP (1) JP5768732B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084523A (zh) * 2020-09-29 2020-12-15 深圳壹账通智能科技有限公司 文本加密方法及装置、终端设备、存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001282103A (ja) * 2000-01-25 2001-10-12 Murata Mach Ltd 暗号化方法
JP4567364B2 (ja) * 2003-04-24 2010-10-20 パナソニック株式会社 パラメータ生成装置、暗号化システム、復号化システム、暗号装置、暗号化方法、復号化方法、およびプログラム
JP4720136B2 (ja) * 2004-09-24 2011-07-13 富士ゼロックス株式会社 暗号化装置、暗号化方法およびプログラム
JP2011033809A (ja) * 2009-07-31 2011-02-17 Kanazawa Inst Of Technology 鍵生成装置、およびその装置を利用可能な暗号化装置ならびに復号装置

Also Published As

Publication number Publication date
JP2013156348A (ja) 2013-08-15

Similar Documents

Publication Publication Date Title
JP6083234B2 (ja) 暗号処理装置
US9413729B2 (en) Symmetric encryption apparatus and storage medium, and symmetric decryption apparatus and storage medium
JP6413598B2 (ja) 暗号処理方法、暗号処理装置、及び暗号処理プログラム
Bos et al. Improved security for a ring-based fully homomorphic encryption scheme
KR102251697B1 (ko) 암호화 장치, 암호화 방법 및 컴퓨터 판독가능 기록매체
KR101795771B1 (ko) 정수 기반 준동형 암호 기법에서 압축 암복호화를 제공하는 시스템 및 방법
JP6459658B2 (ja) 暗号処理装置、暗号処理方法、および暗号処理プログラム
EP2750323A1 (en) Encryption processing apparatus and method
JP6421576B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP6413743B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
WO2013150880A1 (ja) 暗号化装置、復号化装置、暗号化方法、復号化方法、及びプログラム
KR20150073753A (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
JP5852551B2 (ja) 関数型暗号システム、鍵生成装置、暗号化装置、復号装置、関数型暗号方法、およびプログラム
KR20160131798A (ko) 연산 에러 검출이 가능한 준동형 암호 방법 및 그 시스템
CN111526002A (zh) 一种基于格的多身份的全同态加密方法
US8526602B2 (en) Adjustment-value-attached block cipher apparatus, cipher generation method and recording medium
JP5732429B2 (ja) 秘密分散システム、データ分散装置、データ復元装置、秘密分散方法、およびプログラム
CN113794561A (zh) 一种公钥可搜索加密方法及系统
JP2014002230A (ja) 認証暗号化装置、認証復号装置、およびプログラム
KR20150122494A (ko) 암호화 장치, 암호화 방법, 복호화 방법 및 컴퓨터 판독가능 기록매체
WO2014112523A1 (ja) 復号サービス提供装置、処理装置、安全性評価装置、プログラム、および記録媒体
JP5768732B2 (ja) 暗号鍵生成方法、暗号鍵生成装置および暗号鍵生成プログラム
JP7125857B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム
CN106936568B (zh) 一种基于格的密码分析方法及装置
JP2017038336A (ja) 復号方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150417

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: 20150526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150608

R150 Certificate of patent or registration of utility model

Ref document number: 5768732

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees