(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-09
(45)【発行日】2022-12-19
(54)【発明の名称】安全性評価装置、安全性評価方法及び安全性評価プログラム
(51)【国際特許分類】
G06F 21/57 20130101AFI20221212BHJP
G09C 1/00 20060101ALI20221212BHJP
【FI】
G06F21/57 370
G09C1/00 620Z
(21)【出願番号】P 2019209073
(22)【出願日】2019-11-19
【審査請求日】2021-11-30
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【氏名又は名称】林 一好
(72)【発明者】
【氏名】成定 真太郎
(72)【発明者】
【氏名】清本 晋作
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2015-001555(JP,A)
【文献】米国特許出願公開第2019/0116035(US,A1)
【文献】石黒司,並列Gauss Sieveアルゴリズムを用いた128次元イデアル格子の最短ベクトル問題の求解,CSS2013コンピュータセキュリティシンポジウム2013論文集,2013年10月14日,第2013巻 第4号,pp.62-69
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G09C 1/00
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
イデアル格子における
第1ベクトルのローテーション
操作による当該第1ベクトルの更新、及び前記ローテーション操作により更新された前記第1ベクトルに基づく第2ベクトルの縮約を繰り返す求解部と、
前記ローテーション
操作を当該ローテーションの周期となるまで繰り返すか、又は逆ローテーショ
ン操作を
前記求解部により実行された前記ローテーション操作の回数だけ繰り返すことにより、前記
第1ベクトルを初期化する初期化部と、を備え
、
前記初期化部により初期化された前記第1ベクトルを用いて、前記求解部の処理を繰り返すことによる、前記イデアル格子を用いた最短ベクトル問題の求解時間を指標として、格子暗号の安全性を評価する安全性評価装置。
【請求項2】
前記初期化部は、初期化に掛かる前記ローテーション
操作の回数と、前記逆ローテーション
操作の回数とを比較し、少ない回数の操作により前記
第1ベクトルを初期化する請求項1に記載の安全性評価装置。
【請求項3】
コンピュータが、
イデアル格子における
第1ベクトルのローテーション
操作による当該第1ベクトルの更新、及び前記ローテーション操作により更新された前記第1ベクトルに基づく第2ベクトルの縮約を繰り返す求解ステップと、
前記ローテーション
操作を当該ローテーションの周期となるまで繰り返すか、又は逆ローテーショ
ン操作を
前記求解ステップにおいて実行された前記ローテーション操作の回数だけ繰り返すことにより、前記
第1ベクトルを初期化する初期化ステップと、
を実行し、
前記初期化ステップにおいて初期化された前記第1ベクトルを用いて、前記求解ステップの処理を繰り返すことによる、前記イデアル格子を用いた最短ベクトル問題の求解時間を指標として、格子暗号の安全性を評価する安全性評価方法。
【請求項4】
請求項1又は請求項2に記載の安全性評価装置としてコンピュータを機能させるための安全性評価プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、格子暗号の安全性を評価するための装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、格子暗号の安全性を評価するにあたって、最短ベクトル問題(SVP:Shortest Vector Problem)の求解時間が指標として用いられている。
非特許文献1では、SVPの高速求解アルゴリズムであるGauss Sieveアルゴリズムが提案された。非特許文献2では、イデアル格子という特殊な格子に関して、ローテーション操作によってベクトルの生成が高速に実現できる条件として、ベクトルの次元が2の冪乗となる場合を示し、円分多項式が既約2項式で定義されるAnti-cyclic格子として提案された。さらに、特許文献1、2及び非特許文献3において、ベクトルの次元が2の冪乗と3の冪乗との積である場合にアルゴリズムを高速化できる、既約3項式で定義されるTrinomial格子が提案された。
【0003】
イデアル格子を用いた格子暗号の1つとして、次世代公開鍵暗号の候補であるNTRU暗号(非特許文献4参照)がある。より高速なアルゴリズムを用いて暗号に対する攻撃者の計算限界を評価することで、暗号の安全性評価が実施される。これらのアルゴリズムが高速であるほど、暗号の安全性に対するより詳細な評価が可能となる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-1555号公報
【文献】特開2014-186097号公報
【非特許文献】
【0005】
【文献】D. Micciancio and P. Voulgaris. Faster exponential time algorithms for the shortest vector problem. In Proceedings of the Twenty-first Annual ACM-SIAM Symposium on Discrete Algorithms, SODA ’10, pp. 1468-1480. Society for Industrial and Applied Mathematics, 2010.
【文献】M. Schneider. Sieving for shortest vectors in ideal lattices. In Progress in Cryptology - AFRICACRYPT 2013, pp. 375-391. Springer, 2013.
【文献】T. Ishiguro, S. Kiyomoto, Y. Miyake, and T. Takagi. Parallel gauss sieve algorithm: Solving the svp challenge over a 128-dimensional ideal lattice. In Public-Key Cryptography - PKC 2014, pp. 411-428. Springer, 2014.
【文献】J. Hoffstein, J. Pipher, and J. Silverman. NTRU: A ring-based public key cryptosystem. In Algorithmic Number Theory, pp. 267-288. Springer, 1998.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、これらのアルゴリズムについて、さらなる高速化も望まれている。
【0007】
本発明は、SVPの求解アルゴリズムを、さらに高速化できる安全性評価装置、安全性評価方法及び安全性評価プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る安全性評価装置は、イデアル格子におけるベクトルのローテーションを用いて、所定回のベクトル生成及び縮約を繰り返す求解部と、前記ローテーション又は逆ローテーションの操作を、当該ローテーションの周期となるまで繰り返すことにより、前記ベクトルを初期化する初期化部と、を備える。
【0009】
前記初期化部は、初期化に掛かる前記ローテーションの回数と、前記逆ローテーションの回数とを比較し、少ない回数の操作により前記ベクトルを初期化してもよい。
【0010】
本発明に係る安全性評価方法は、イデアル格子におけるベクトルのローテーションを用いて、所定回のベクトル生成及び縮約を繰り返す求解ステップと、前記ローテーション又は逆ローテーションの操作を、当該ローテーションの周期となるまで繰り返すことにより、前記ベクトルを初期化する初期化ステップと、をコンピュータが実行する。
【0011】
本発明に係る安全性評価プログラムは、前記安全性評価装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0012】
本発明によれば、SVPの求解アルゴリズムがさらに高速化された。
【図面の簡単な説明】
【0013】
【
図2】縮約関数Reduceのアルゴリズムを示す図である。
【
図3】縮約関数ReduceRotのアルゴリズムを示す図である。
【
図4】縮約関数ReduceRot2のアルゴリズムを示す図である。
【
図5】安全性評価装置の機能構成を示すブロック図である。
【
図6】縮約関数ReduceRotWiseのアルゴリズムを示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態の一例について説明する。
本実施形態における安全性評価方法では、イデアル格子を用いた格子暗号の安全性を評価するために、SVPを高速に求解するためのイデアル格子の次元に応じた条件を選択し、条件毎に定義されたローテーション操作により、縮約と呼ばれる処理を高速化する。
【0015】
[定義]
m次元のベクトルv=(v0,…,vm-1)のユークリッドノルムを∥v∥=√(Σi=0
m-1vi
2)とする。ベクトルu=(u0,…,um-1)とv=(v0,…,vm-1)との内積を<u,v>=Σi=0
m-1uiviと表す。
n個の一次独立なm次元列ベクトルからなる行列を、B=(b0,…,bn-1)∈Rm×nと書く。Bによって生成される格子とは、基底ベクトルb0,…,bn-1の整数係数線形結合全体の集合L(B)=L(b0,…,bn-1)={Σi=0
n-1xibi|xi∈Z}のことである。Bを格子Lの基底という。本実施形態では、n=mかつbi∈Znとし、nを格子の次元と呼ぶ。格子L上の非ゼロ最短ベクトルのユークリッドノルムをλ1(L)と書く。
最短ベクトル問題(SVP)とは、格子L(B)が与えられたとき、∥v∥=λ1(L(B))となるベクトルv∈L(B)を求めることである。
【0016】
イデアルIとは、環R=Z[x]/(g(x))の部分加法群のことをいう。ただし、g(x)は、Z上のn次モニック多項式である。v(x)=Σi=0
n-1vixi∈Iに対して、その係数ベクトルv=(v0,…,vn-1)∈Zをv(x)に対応させる。このとき、集合{v=(v0,…,vn-1)∈Z|v(x)=Σi=0
n-1vixi∈I}は格子となる。このような格子を、イデアル格子と呼ぶ。
【0017】
イデアル格子は、ローテーション操作に対して合同である。すなわち、格子ベクトルv∈Lの多項式表現をv(x)としたとき、rot(v)=xv(x) mod g(x)もまたL(B)のベクトルとなる。演算rotをベクトルのローテーションという。i回のローテーションの繰り返しをroti(v)=rot(…rot(rot(v))…)と書く。ただし、rot0(v)=vである。
【0018】
n次モニック多項式g(x)には、R-LWE(Ring Learning with Error)問題等で用いられている円分多項式を使用する。m番目の円分多項式Φm(x)は次式で定義される。
Φm(x)=Π1≦k≦m,gcd(k,m)=1(x-e2πik/m)
ただし、gcd(i,j)は、自然数i,jの最大公約数を表す。例えば、Φ8(x)=x4+1、Φ12(x)=x4-x2+1等となる。
【0019】
[Gauss Sieveアルゴリズム]
格子L(B)から最短ベクトルを出力するために、Gauss Sieveアルゴリズムでは、格子L(B)に属する2つのベクトルu,vの差が小さくなる場合に、片方のベクトルをベクトルの差に置き換える処理(縮約という)が、ノルムが減少しなくなるまで再帰的に繰り返される。
これにより、格子L(B)上の2つのベクトルu,vが∥u±v∥≧max(∥u∥,∥v∥)を満たし、Gauss-reducedな状態となる。
【0020】
図1は、従来(非特許文献1)の求解アルゴリズム(Gauss Sieve)を示す図である。
図2は、従来(非特許文献1)の求解アルゴリズムで実行される縮約関数Reduceのアルゴリズムを示す図である。
【0021】
縮約関数Reduceでは、格子L(B)に属する2つのベクトルu,vを入力として、∥u-v∥と∥u∥を比較し、∥u-v∥が小さい場合に、ベクトルuが縮約される。
なお、2つのベクトルが線形従属だった場合、必ず原点ベクトルが出力される。これを衝突という。
【0022】
集合A⊂L(B)に対して、全ベクトルの組み合わせ∀u,v∈A,u≠vがGauss-reducedであるとき、集合AはPairwise-reducedであるという。
【0023】
Gauss Sieveアルゴリズムでは、Pairwise-reducedとなる格子ベクトルの集合Lが徐々に拡張されていく。まず、新しい格子ベクトルvがランダムサンプリングによって生成される。次に、vとLの全ての元との組み合わせがGauss-reducedとなるように縮約が行われ、vのノルムが減少する。このようにして縮約されたvがLに追加される。このとき、L∪{v}もPairwise-reducedである。
このような集合Lを拡張する動作を、衝突が一定回数発生するまで実施した後、L内で最も短いベクトルを格子L(B)が最短ベクトルとして出力される。
【0024】
さらに、イデアル格子の性質を利用した非特許文献2及び非特許文献3の手法では、モニック多項式g(x)としての円分多項式が既約2項式となるAnti-cyclic格子、及び既約3項式となるTrinomial格子を定義し、定義式から導かれるローテーションの操作を行うことにより、縮約を試行するためのベクトルvの生成が繰り返される。
この結果、Gauss SieveアルゴリズムによるSVPの求解が高速化された。
【0025】
図3は、従来(非特許文献2)の求解アルゴリズム(Ideal Gauss Sieve)で実行される縮約関数ReduceRotのアルゴリズムを示す図である。
縮約関数ReduceRotでは、ベクトルvの複製v’に対してローテーションを行うことにより(ステップ3)、縮約を試行するためのベクトルが繰り返し生成される。これにより、短いベクトルを生成する確率が向上した。
【0026】
図4は、従来(非特許文献3)の求解アルゴリズムで実行される縮約関数ReduceRot2のアルゴリズムを示す図である。
縮約関数ReduceRot2では、ReduceRotに対して、逆ローテーションによるベクトルの生成を同時に行う、アルゴリズムを並列化する、計算時間が最も短くなるローテーション回数kを求め縮約の試行をk回とする、という改良が施された。
【0027】
本実施形態では、さらに、Anti-cyclic格子及びTrinomial格子の概念を一般化したt-nomial格子を定義し、安全性評価装置1は、イデアル格子の次元nと、円分多項式の添字m及び項数tとを対応付けた条件に基づくローテーション及び逆ローテーションにより、縮約の処理を実行する。
【0028】
[機能構成]
図5は、本実施形態における安全性評価装置1の機能構成を示すブロック図である。
安全性評価装置1は、サーバ又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
【0029】
制御部10は、安全性評価装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0030】
記憶部20は、ハードウェア群を安全性評価装置1として機能させるための各種プログラム(安全性評価プログラム等)、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。
【0031】
制御部10は、選択部11と、求解部12と、初期化部13とを備える。制御部10は、これらの機能部により、SVPを解くための縮約の処理を実行する。
このとき、制御部10は、処理時間を計測し、格子暗号の安全性の指標として出力する。
【0032】
t-nomial格子とは、項数がtである円分多項式から生成されるイデアル格子である。ただし、t≧2とする。t-nomial格子を用いることで、一般的な次元nに対して、Gauss Sieveアルゴリズムの高速化が可能となる。
【0033】
選択部11は、安全性の評価対象である格子暗号におけるイデアル格子の次元nに対して、後述の条件1~3のいずれかを満たす円分多項式の添字m及び項数tを選択する。
なお、これらの条件式は、項数が2であるAnti-cyclic格子の場合と、項数が3であるTrinomial格子の場合とを包含している。
【0034】
求解部12は、次数nと、円分多項式の添字m及び項数tとの関係から導出されるベクトルのローテーションを用いて、所定回のベクトル生成及び縮約を繰り返す。
【0035】
初期化部13は、ローテーション又は逆ローテーションの操作を、ローテーションの周期となるまで繰り返すことにより、ベクトルvを初期化する。
このとき、初期化部13は、初期化に掛かるローテーションの回数と、逆ローテーションの回数とを比較し、少ない回数の操作によりベクトルvを初期化してよい。
【0036】
[条件1]
【数1】
なお、この条件は、モニック多項式が円分多項式Φ
m(x)=x
n+1となるイデアル格子、すなわちAnti-cyclic格子を示している。
【0037】
条件1を満たすとき、ベクトルv=(v
0,…,v
n-1)のローテーションrot(v)及び逆ローテーションrot
-1(v)は、0≦i≦n-1に対して、
【数2】
である。すなわち、ベクトルvの先頭及び末尾のみに、挿入又は削除の処理が行われる。
【0038】
【0039】
ここで、奇素数pに対して、m=2a・pb(a≧0,b≧1)のとき、t=pとなることは、円分多項式Φm(x)=Σi=0
p-1(-1)ixi2^(a-1)p^(b-1)であることから明らかである。例えば、m=36=22・32のとき、t=3となり、m=121=20・112のとき、t=11となる。
なお、p=3の場合は、モニック多項式が円分多項式Φm(x)={xn+xn/2+1(m=3a),xn-xn/2+1(m=2a3b)となるイデアル格子、すなわちTrinomial格子を示している。
【0040】
また、nの条件式は、次のように証明される。
x,yを互い素な自然数としたとき、φ(xy)=φ(x)φ(y)が成り立つ。なお、φはオイラーのトーシェント関数であり、m番目の円分多項式の次数nについて、n=φ(m)であることが知られている。また、素数p及び自然数kに対して、φ(pk)=pk-1(p-1)である。以上より、a≧1に対して、φ(2apb)=φ(2a)φ(pb)=2a-1・pb-1(p-1)である。また、a=0に対しては、m=pbより、φ(pb)=pb-1(p-1)である。
【0041】
条件2を満たすとき、ベクトルvのローテーション操作rot(v)及び逆ローテーション操作rot
-1(v)は、0≦i≦n-1,1≦l≦t-2に対して、
【数4】
である。すなわち、ベクトルvの先頭及び末尾に挿入又は削除の処理が行われ、t-2の箇所において差又は和の演算が行われる。なお、上式の演算子「-/+」は、a=0のとき-、a≠0のとき+となる。
【0042】
ローテーション及び逆ローテーションの式は、次のように証明される。
円分多項式Φm(x)とその次数nに対して、Φp^b(x)=Σi=0
p-1xip^(b-1),Φ2^a・p^b(x)=Σi=0
p-1(-1)ixi2^(a-1)p^(b-1)である。よって、それぞれxv(x) mod Φm(x)を計算することにより、ローテーションの式が得られる。
また、逆ローテーションに関しては、Φm(x)を法とする逆元x-1を計算する。a=0の場合、x-1=-Σi=0
p-1xip^(b-1)-1、a≠0の場合、x-1=Σi=0
p-1(-1)ixi2^(a-1)p^(b-1)-1となる。よって、逆ローテーションの式は、x-1v(x) mod Φm(x)に上式を代入することで得られる。
【0043】
[条件3]
2つの奇素数p,q(p<q)を、q≡1,2,p-1,p-2 mod pとなるように選ぶと、k=floor(q/p)とすると、
【数5】
【0044】
ここで、Φ2^ap^bq^c(x)とΦpq(x)の項数は等しい。このことは、次のように証明される。
奇数n>1に対して、Φ2n(x)=Φn(-x)である。また、互いに素な数s,tに対して、Φs^mt(x)=Φst(xs^(m-1))である。よって、2とpbqcとは互いに素であるため、Φ2^ap^bq^c(x)=Φ2p^bq^c(x2^(a-1))である。y=x2^(a-1)とおくと、Φ2^ap^bq^c(x)とΦ2p^bq^c(y)とは項数が等しい。次に、pbqcは奇数なので、Φ2p^bq^c(y)=Φp^bq^c(-y)である。z=-yとおくと、Φ2p^bq^c(y)とΦp^bq^c(z)とは項数が等しい。また、pとqcとは互いに素であるため、Φp^bq^c(z)=Φpq^c(zp^(b-1))である。w=zp^(b-1)とすると、Φp^bq^c(z)=Φpq^c(w)も項数は同じである。最後に、qとpとは互いに素であるため、Φpq^c(w)=Φpq(wq^(c-1))となり、項数は変化しない。
【0045】
また、次の文献Aによって、Φpq(x)の項数が示されている。
文献A: L. Carlitz. The number of terms in the cyclotomic polynomial fpq(x). The American Mathematical Monthly, Vol. 73, pp. 979-981, 1966.
【0046】
したがって、奇素数p,qに対して、上述の項数tの関係式が導出される。
例えば、p=5,q=7に対して、m=70=2・5・7を考えると、k=1に対してt=17となる。また、t<10を満たすm,tの組として、m=2a・3b・5c,t=7がある。
【0047】
条件3を満たすとき、円分多項式Φ
m(x)の係数は-1,0,1のいずれかになり、n次及び0次の係数は必ず1である。よって、係数ベクトルc=(c
1,…,c
n-1),c
i∈{-1,0,1},Σ
i=1
n-1|c
i|=t-2を用いて、Φ
m(x)=1+c
1x+…+c
n-1x
n-1+x
nと表すことができる。なお、c
i≠0である項がt-2個だけ存在する。
このとき、ベクトルvのローテーションrot(v)及び逆ローテーションrot
-1(v)は、0≦i≦n-1に対して、
【数6】
である。すなわち、ベクトルvの先頭及び末尾に挿入又は削除の処理が行われ、t-2の箇所において差又は和の演算が行われる。
【0048】
t-nomial格子の具体例として、t=5,7の場合を考える。
m=2a・5bのとき、イデアル格子は5-nomial格子となる。このとき、ローテーション操作は、a≠0の場合、rot(v)=(-vn-1,v0,…,vn/4-1+vn-1,…,vn/2-1-vn-1,…,v3n/4-1+vn-1,…,vn-2)となる。
また、m=2a・7b又はm=2a・3b・5cのとき、イデアル格子は7-nomial格子となる。m=2a・3b・5cのときは,円分多項式Φ2^a3^b5^c(x)=xn-x7n/8+x5n/8-xn/2+x3n/8-xn/8+1、又はxn+x7n/8-x5n/8-xn/2-x3n/8+xn/8+1である。このとき、ローテーション操作は、rot(v)=(-vn-1,v0,…,vn/8-1+vn-1,…,v3n/8-1-vn-1,…,vn/2-1+vn-1,…,v5n/8-1-vn-1,…,v7n/8-1+vn-1,…,vn-2)、又は(-vn-1,v0,…,vn/8-1-vn-1,…,v3n/8-1+vn-1,…,vn/2-1+vn-1,…,v5n/8-1+vn-1,…,v7n/8-1-vn-1,…,vn-2)となる。
【0049】
図6は、本実施形態における縮約関数ReduceRotWiseのアルゴリズムを示す図である。
縮約関数ReduceRot(
図3)及びReduceRot2(
図4)では、ベクトルvを再利用のために、前処理としてベクトルvの複製(v’及びv’’)が必要となっていた。Gauss Sieveアルゴリズムでは、最短ベクトルが見付かるまで、これらの縮約関数が繰り返し呼び出されるため、多数の複製処理により計算時間が増大していた。
これに対して、縮約関数ReduceRotWiseでは、ベクトルvの複製処理を、ローテーション又は逆ローテーションにより代替することで計算時間が削減される。具体的には、従来(非特許文献3)の手法と比較して、実験的に約1.5倍の高速化が実現された。
【0050】
イデアル格子L(B)に属する2つの初期ベクトルu,vに加えて、縮約の試行回数、すなわちローテーション数kが入力として与えられる。
なお、ローテーション数kは、m及びtに応じて適宜定められる。
具体的には、ローテーション操作によってベクトルのノルムが確率的に大きくなることが知られており、項数tが大きくなるほど、その確率が大きくなる。そこで、例えば、t=2のときk=m/2、t=3のときk=13、t=5のときk=6、t=7のときk=3のように、実験等により適切な回数が設定される。
【0051】
ステップ1~3において、まず、ベクトルu及びベクトルvに基づく縮約が試行され、ベクトルuが更新される。続いて、更新後のベクトルu、及びローテーション操作によって更新されたベクトルvに基づく縮約がk回試行され、ベクトルuが更新される。
【0052】
ここまでの処理により更新されたベクトルvを初期化するためには、ローテーション又は逆ローテーションのいずれか、必要な回数の少ない方が用いられてよいが、ローテーションの周期分だけ繰り返される必要がある。
ここで、円分多項式の定義から得られる帰納的関係式Φm(x)=(xm-1)/(Πd|m,d≠mΦd(x))より、xm=Φm(x)Πd|m,d≠mΦd(x)+1である。よって、xm≡1 mod Φm(x)となり、rotm(v)=xmv(x)≡v(x) mod Φm(x)=vである。
したがって、円分多項式Φm(x)に対して、ローテーションの周期はmである。なお、mが偶数の場合、周期mの代わりにm/2を使用できる。
【0053】
ステップ4において、初期化部13は、ローテーション数kと、周期までの残り回数m-kとを比較する。k≧m-kの場合、ステップ5が実行され、k<m-kの場合、ステップ7~11が実行される。
【0054】
ステップ5において、初期化部13は、順方向のローテーションをさらにm-k回繰り返すことにより、ベクトルvを初期化する。
ステップ7において、初期化部13は、k回のローテーションによって更新されたベクトルvを、同じ回数だけ逆ローテーションすることで初期化する。
【0055】
ステップ8~10において、求解部12は、逆方向の逆ローテーションによってもベクトルvを更新しつつ縮約を試みる。
これにより、求解部12は、ローテーション又は逆ローテーションによってベクトルvのノルムが増大するのを抑制し、縮約の成功率を向上させている。
ステップS11において、初期化部13は、k回の逆ローテーションによって更新されたベクトルvを、同じ回数だけローテーションすることで初期化する。
【0056】
ステップ12において、求解部12は、k+1回又は2k+1回の縮約の試行により短くなったベクトルuを出力する。
【0057】
ここで、t-nomial格子のローテーション及び逆ローテーションの操作は、それぞれO(t)の計算量で実行される。このことは、次のように証明される。
前述のローテーション及び逆ローテーションの式から、更新されるベクトルの位置はt箇所あることがわかる。このうち、ベクトルの先頭と末尾に対しては、削除及び挿入の操作がそれぞれ計算量O(1)で行われる。また、これ以外のt-2箇所では、差又は和の計算がそれぞれ計算量O(1)で行われる。よって、ローテーション及び逆ローテーションの計算量は、それぞれ合計でO(t)である。
【0058】
関数ReduceRotWiseは、ベクトルrotk(v)をvに戻す処理にO(min(k,m-k)t)の計算量が必要となる。前述のように、min(k,m-k)の値は十分に小さくなることが言えるため、実用上は、ベクトルの複製に掛かる計算量O(n)よりO(min(k,m-k)t)の方が小さく、高速化される。
【0059】
本実施形態によれば、安全性評価装置1は、安全性の評価対象である格子暗号におけるイデアル格子の次元nに対して、条件1~3のいずれかを満たす奇素数及び円分多項式の添字mを選択し、円分多項式の項数tとの関係から導出されるベクトルvのローテーション操作を用いて、所定回のベクトル生成及び縮約を繰り返す。
これにより、安全性評価装置1は、これまではSVPの求解を高速化できる次元が限定的であったイデアル格子に対して、より一般的な次元でも高速化を可能とした。例えば、これまでイデアル格子の適用がされていなかったn=80次元に対して、Gauss Sieveと比較して約10倍の高速化が達成された。
この結果、安全性評価装置1は、NTRUといったイデアル格子を用いた次世代公開鍵暗号に対して、より厳密な安全性評価を行うことができ、次元等の適切な設計に寄与できる。
【0060】
また、安全性評価装置1は、縮約の処理に伴って更新されるベクトルvを、ローテーション又は逆ローテーションの操作を周期となるまで繰り返すことにより初期化する。
これにより、安全性評価装置1は、ベクトルvの複製に伴う処理時間を削減し、SVPの求解アルゴリズムを、さらに高速化できた。例えば、n=64次元では、Gauss Sieveによる求解時間7432秒、Ideal Gauss Sieveによる求解時間177秒に対して、本実施形態のアルゴリズム(
図6)では122秒であった。また、n=80次元では、Gauss Sieveによる求解時間904860秒、Ideal Gauss Sieveによる求解時間98581秒に対して、本実施形態のアルゴリズム(
図6)では87473秒であった。
この結果、安全性評価装置1は、次世代公開鍵暗号に対して、より厳密な安全性評価を行うことができ、次元等の適切な設計に寄与できる。
【0061】
安全性評価装置1は、ベクトルの初期化に掛かるローテーションの回数と、逆ローテーションの回数とを比較し、少ない回数の操作によりベクトルvを初期化してもよい。
これにより、安全性評価装置1は、より適切な手順によりSVPの求解アルゴリズムを実行し、処理を高速化できる。
【0062】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0063】
安全性評価装置1による安全性評価方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0064】
1 安全性評価装置
10 制御部
11 選択部
12 求解部
13 初期化部
20 記憶部