格子基底縮小とその応用 -...

55
格子基底縮小とその応用 清水 秀夫 (株)東芝 研究開発センター 2002/1/26 JANT

Upload: others

Post on 30-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子基底縮小とその応用

清水秀夫

(株)東芝 研究開発センター

2002/1/26 JANT

Page 2: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

•LLLアルゴリズムの紹介•最新の研究動向/成果 (トピックの紹介)

内容

Page 3: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

•1982年 A.K.Lenstra, H.W.Lenstra,Jr., L.Lovasz•格子基底縮小(lattice basis reduce)アルゴリズムの一種•格子に含まれる最短ベクトルを求める問題の近似解を 求めるアルゴリズム(基底変換アルゴリズム)。•近似の精度と実行時間(多項式時間)が証明されている。•現実には理論で示されている結果よりかなりよく動く ことが実験により示されている。•基本的なツールであり、暗号分野における様々な応用が 示されている。•優秀なフリーソフトNTL (http://www.shoup.net/NTL/)

LLLアルゴリズムの概要

“Factoring Polynomials with rational coefficients,” Math.Ann.,261,513-534, 1982

Page 4: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子(lattice)定義

を基底という。を格子という。

が線形独立のとき

},,,{)(,

,,,

21

2211

21

n

inn

nn

bbbBzbzbzbzL

bbb

K

L

K

=

∈+++=∈

ZR

•同じ格子を張る別の基底が無限に存在する•基本行操作した規定も同じ格子を張る

•同じ格子を張る基底の は同じ値を取る。

)det()( BLd =

nGLUUBLBL ∈= ),()(

)'()()'()( BdBdBLBL =⇒=

性質

Page 5: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

=

=

1211

,1001

21 BB

格子の例

−=

1211

1211

1001

1)()()()(

21

21

===

BdBdBLBL

)( 2Bd

Page 6: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子に関する問題

SVP(shortest vector problem)

CVP(closest vector problem)

SBP(smallest basis problem

格子が与えられて(基底ベクトルが与えられて)、格子に含まれる最短ベクトルを求める問題

格子と任意のベクトルxが与えられて格子に含まれるxに最も近いベクトルを求める問題

格子が与えられて最も「小さな」基底ベクトルを求める問題※「小さな」の意味は問題によって変わる

nLdnL /11 )( )( ≤λ

Page 7: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

縮小基底

Gram-Schmidtの直交化過程

),(),(

**

*

1

1

**

jj

jiij

i

jjijii

bbbb

bbb

=

−= ∑−

=

µ

µ

は内積),( ⋅⋅

縮小基底(LLL-reduced basis)

nibb

nij

iiii

ij

≤<

−≥

≤<≤≤

−− 1 ,43

1 ,21

2*1

21

2* µ

µ (条件1)

(条件2)

Page 8: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

縮小基底の性質

( )

)(2)()4(

)(2)3(

,,, ,1for

,,,max2,,,,)2(

2,)1(

4/)1(

1

/14/)1(1

21

212/)1(

21

2/)1(1

LdbLd

Ldbxxxtj

xxxbLxxx

xbLx

nni

n

i

nnt

tn

jt

n

=

≤∏≤

≤≤

≤∈∀

≤∈∀

は線形独立K

KK

縮小基底を見出す多項式時間アルゴリズムが存在する

LLLアルゴリズム(Lenstra, Lenstra, Lovasz, 1982)

Page 9: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLLアルゴリズムの概要

入力 :出力:縮小された

nbbb ,,, 21 K

nbbb ,,, 21 K

へ行くとしてを入れ替え、と

なら終了する 

へ行くとしてを満足するならが条件

正するを、満足するように修を条件

を満足すると条件は条件

)1(1)4()(

)1(1)2()3(1)2(

21,,)1(

1

11

−=≥

+=

kkbbnk

kkbb

bb

kk

k

k

kK

•停止することは証明されている(LLL 1982)•計算量は ( ) 24 max,log ibBBnO =

Page 10: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

L

L

L

L

07.149161.72359.1579

68.977

44173283489350087483181927644667881328404821105

4

3

2

1

====

=

bbbb

B

LLLアルゴリズムの例

L

L

54.862)(287.512)(

6918837099)(

4/14/)14(

4/1

=

=

=

− BdBdBd

L

L

L

L

84.764'09.500'77.473'61.433'

734702995191723173387618614231226931422917188

'

4

3

2

1

====

−−−−−

−−−

=

bbbb

B

Page 11: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

NTLを使ったコーディング例

#include <NTL/LLL.h>

main(){

mat_ZZ b;

cin >> b;LLL_FP(b);cout << b << "¥n";

}

[[105 821 404 328][881 667 644 927][181 483 87 500][893 834 732 441]

]

プログラム 入力ファイル

出力ファイル

[[88 -171 -229 -314][269 312 -142 186][76 -338 -317 172][519 -299 470 -73]]※http://www.shoup.net/ntl/

  windows/unixのフリーソフト(GPL)  C++, GMP対応

整数行列の宣言

浮動小数点LLL入力

出力

Page 12: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子(LLL)に関係する研究

格子に関する研究

•格子に含まれる最短ベクトルの長さの上界/下界•Geometries of numbersと呼ばれる分野の数学

格子に関する問題(SVP, CVP, SBP)の計算量に関する研究

格子基底縮小アルゴリズムの改良に関する研究

•C.P.Schnorrによる一連の研究(Blockwise Korkine-Zolotarev アルゴリズム, segment LLL)•Kannanのアルゴリズム

格子基底縮小アルゴリズムの応用(→後半の話題)

・暗号の解読等

•lattice暗号(Ajtai-Dwork暗号)

Page 13: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

計算量理論の成果

• SVPはNP困難。(Ajtai, STOC 1998)•近似SVP (大きさf(n)λ1以内のベクトルを見つける)について、近似<21/2もNP困難。(Micciancio, FOCS 1998)•近似(n/O(log n))1/2はNP困難ではない。(Goldreich, Goldwasser, STOC 1998)•SVP(CVP)を多項式近似できるアルゴリズムは知られていない。•∞ノルムに関する結果、SVP∞はNP困難(P. van Emde Boas, 1981)

•Ajtaiの成果。Average caseとworst caseが一致する格子に関する問題(nc-SVP)の発見(1996)

※LLLは近似=2(n-1)/2の多項式時間アルゴリズム

長い間の未解決問題

Page 14: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Ajtaiの結果のインパクト

nc-SVPに関してworst caseからaverage caseへのreductionを証明した。

•Pの外のNPでは初めて•たとえworst caseで困難でもaverage caseで困難かどうか分からないという問題を解決した。

•真の証明可能安全性への道を開いた。

Ajtai-Dwork暗号 (STOC 1997)

•理論的な暗号•漸近的な結果なのでパラメータが小さい時は解ける(Nguyen, Stern, C98)n≧32 →公開鍵≧20Mバイト (impractical)

Page 15: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子基底縮小アルゴリズムの改良

LLL

近似精度の改良

速度の向上

2^O(n(loglog n)2/log n) Schnorr(1987)実行時間O(2^n) Kannan(STOC 1983)

serial BKZ Schnorr(1994, C95) segment LLL Schnorr(2002, Calc01)parallel Wetzel (ANTS III 1998) 他ad hoc 整数版、浮動小数点版、deep insertion(Cohen)

Page 16: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

segment LLL

•C.P.Schnorrら(Calc01)•計算量•1000次元以上にも適用可能 (LLLは100次元程度まで?)•1000次元で10時間程度(800MHz PC)

)log( 3 nnO

Page 17: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLLの応用

•暗号への攻撃 ナップザック暗号への攻撃 lattice暗号への攻撃 他•法多項式の求解 一変数、多変数 応用•素因数分解への応用•代数的整数論•その他

Page 18: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLLの応用(その1)

•多項式の因数分解 (LLL 82)•ナップザック暗号に対する低密度攻撃 (Brickell C83)•Mental Poker(Shamir他79)への攻撃 (Coppersmith C84)•Low exponent RSAへの攻撃 (Hastad C85, SIAM J.Comp 88)•ナップザック暗号に対する低密度攻撃 (Lagarias他 JACM85)•ESIGNへの攻撃 (Vallee他 E88)•e乗根近似問題への適用 (Vallee他 AAEEC-6 88)•truncated congruence generatorの解読 (Frieze他 SIAM J.Comp88)•有理数暗号(Isselhorst E89)への攻撃 (Stern他 E90)•modular knapsack(Niemi E90)への攻撃 (Chee C91,Joux他 A91)•低密度攻撃の改良 (Coster他 E91)•Diophantine近似を使った素因数分解 (Schnorr E91)•小林-田村-藤波暗号の解読 (清水, 林 93)•knapsack hash(Damgard C89)への攻撃 (Joux E94)•Number Field Sieveへの応用 (Montgomery Math.Comp.94)

Page 19: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

•Chor-Rivest暗号(Chor他 IT88)への攻撃 (清水, 林 94)•Chor-Rivest暗号(Chor他 IT88)への攻撃 (Schnorr他 E95)•1変数法多項式の求解 (Coppersmith E96, JC97)•多変数法多項式の求解 (Coppersmith E96, JC97)•Diffie-Hellmanのハードコアビット (Boneh他 C96)•Hastad boundの改良 (清水 96)•一方向性関数の提案 (Buchmann他 C97)•ISO/IEC9796-3署名への攻撃 (Misarsky C97)•Qu-Vanstone暗号への攻撃 (Nguyen他 C97)•NTRU暗号(Hoffstein他C96)への攻撃 (Coppersmith他 E97)•Coppersmithアルゴリズムの改良 (Howgrave-Graham CCS97)•超楕円暗号のJacob和を求める (Buhler他 97)•Number Field Sieveへの応用 (Nguyen, ANTS III 98)•Ajtai-Dwork暗号の解析 (Nguyen他 C98)

LLLの応用(その2)

Page 20: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

•多変数多項式の求解 (Julta E98)•伊藤,岡本,満保暗号(SAC97)の解読 (Nguyen他 SAC98)•N=prqの素因数分解 (Boneh他 C99)•GGH暗号(Goldreich他C97)の解読 (Nguyen C99)•Hidden subset sum問題への適用 (Nguyen他 C99)•d<N0.292のRSAの解読 (Boneh他 E99)•笠原-村上暗号への攻撃 (清水 ISEC99)•Noisy Polynomialの補間 (Bleichenbacher他 E00)•素因数分解への応用 (Boneh STOC00)•two-third method (Vallee他Math.Comp.??)

LLLの応用(その3)

Page 21: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLL線形方程式の求解 ディオファンタス近似

Brickellの低密度攻撃

Lagariasらの低密度攻撃

Coppersmithの法多項式の求解

Howgrave-Grahamの法多項式の求解

DHのハードコアビット

直交格子

Lattice暗号への攻撃

Hastad, Valleeの法多項式の求解

Hastad攻撃d<N0.292のRSAの解読N=prqの素因数分解

ナップザック暗号の解読

LLLの応用とテクニック

Hidden subset sum その他

Page 22: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

ナップザック暗号の解読 (1)

ナップザック暗号

ナップザック暗号の解読(公開鍵と暗号文から平文を求める)

整数a1,a2,…,anとCが与えられて   a1x1+・・・+ anxn = Cを満足する解x1,x2,…,xn∈{0,1}を見出す。

公開鍵:整数a1,a2,…,an

平文:m1,…,mn∈{0,1}暗号化:a1m1+・・・+ anmn = C

※100~200次元くらいまで解ける

Page 23: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

ナップザック暗号の解読 (2)

•a1x1+・・・+ anxn = Cの解を含む格子を考える•LLLアルゴリズムで短いベクトルを求める

b1 = (1, 0,…, 0, a1)b2 = (0, 1,…, 0, a2)・・・

bn = (0, 0,…, 1, an)bn+1= (0, 0,…, 0, C)

x1b1+・・・+xnbn+xn+1bn+1 = (x1,…, xn, a1x1+・・・+anxn+xn+1C)なので最終要素= 0 かつ xn+1 = -1のときx1,…, xnはa1x1+・・・+ anxn = Cを満足する。

問題となるのは(x1,…, xn) ∈{0, 1}nとなるかどうか

Page 24: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

ナップザック暗号の解読 (3)

密度ρ= n / (max ai) = 平文空間の広さ/暗号文空間の広さ

ρ< 1

平文空間{0,1}n

暗号文空間

ρ> 1

平文空間{0,1}n

暗号文空間

SVPオラクルを仮定するとρ< 0.6463まで解ける(Lagarias他)。CVPオラクルを仮定するとρ< 0.9408まで解ける(Coster他)。

複数の平文のうちの一つだけが真の平文

Page 25: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

NTRUへの攻撃(1)

NTRUの特徴•J.Hoffstein, J.Pipher, J.H.Silverman, 1996•多項式環上の公開鍵暗号•暗号化/復号が比較的高速•現在知られている最も効率的な攻撃は lattice reduction(Coppersmith,Shamir 1997)•http://www.ntru.com/ (http://www.ntru.co.jp/)

Page 26: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

NTRUへの攻撃(2)

)1,(mod )3(1,mod1,mod )2(

,1),( )1(

1/][,

1/][,,,

1

11

−=

−−

>=

−∈

−∈∈

−−

n

nn

np

nq

xqgpfhxqfxpf

pqqpxxgf

xxhqpn

が存在すると

秘密情報

 公開情報

Z

ZZ鍵生成

)1,32(mod30182022 1615416695

1/][1

1/][132,3,11

1110987

654321

113

108532

113

109642

−+++

+++++++==

−∈−−+++−=

−∈−++−++−=

===

xxxxxxxxxxxgpfh

xxxxxxxgxxxxxxxxf

qpn

ZZ

Page 27: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

NTRUへの攻撃(3)

暗号化

)1,(mod

1/][

1/][

1/][

−+=

−∈∈

−∈

−∈

n

nq

nq

np

xqrhme

xxre

xxr

xxm

暗号化

暗号文

乱数

平文

Z

Z

Z

)1,32(mod19625730161424261114

11

111098765

432

75432

109843

−+++++

+++++=+=

−−+++−=

++−−+−=

xxxxxxxxxxxrhme

xxxxxrxxxxxm

Page 28: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

復号

)1,(mod)(mod

)1,(mod

1 −=

=−=

− n

n

xpbfcpab

xqfea

NTRUへの攻撃(3)

)1,(mod)(mod

)1,(mod)()(

11

1

−===

=+==−+=+=+==

−−

n

n

xpmfmfbfcpfmprgfmab

xqprgfmgrpfmfrhmffea

109843111

10875432

1098765432

1098765432

1)1,3(mod)3(mod

7357671011107319625730161424261114

xxxxxxbfcxxxxxxxxab

xxxxxxxxxxfeaxxxxxxxxxxe

++−−+−=−=

−−++++−−==

−−+++++−−−==

++++++++++=

Page 29: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

NTRUへの攻撃(4)•Coppersmith,Shamir(EC97)•公開情報                   から等価鍵   を求める

•                を満足する格子の短いベクトル   をLLLアルゴリズムで求める

)1,(mod(,,, 1 −= − nxqgpfhqpn',' gf

)1,(mod1 −=− nxqyhxp λyx,

=

= −−

q

qq

hhh

hhhhhh

qIHI

B nn

n

LL

MOMMMOMM

LL

LL

LL

MOMMMOMM

LL

LL

00000

0000000000

00

0000

0201

021

110

λ

λλ

λ

は定数の係数、は )/()(mod1 gfqhphi =− λ

Page 30: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Howgrave-Grahamアルゴリズム(1997)

•法多項式の小さな解(< N1/d)を求める。•Coppersmithアルゴリズムの改良(より小さな基底行列)•x0を解とする方程式を組み合わせて整数上の多項式を作る。•dual lattice(B-t)をshrinkして基底行列を生成

NN X

Nb NXa NXNXb NX a X

f Xe X d X c XXf X e X d X c X

2

2

2

2 3

2 3 4

2 3 4 5

0 0 0 0 00 0 0 0 0

0 0 00 0 0

00

p x x ax bp x x cx dx ex f

( )( )

= + +

= + + + +

2

2 4 3 2

NNNN

2

2

11

11

2

2

p xxp xp xxp x

( )( )

( )( )

1 X X2 X3 X4 X5

b1を係数とする多項式r(x)を解くことにより解を求める。

Xは定数

Page 31: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Howgrave-Grahamアルゴリズムの例

p x x xp x x x x x

X

( ) (mod )( ( ))

= + + ≡

= + + + +=

2

2 4 3 2

14 19 0 3528 234 532 361

2

を解く。

35 0 0 0 0 00 35 2 0 0 0 0

35 19 35 14 2 35 2 0 0 00 35 19 2 35 14 2 35 2 0 0

361 532 2 234 2 28 2 2 00 361 2 532 2 234 2 28 2 2

2

2

2

2 3

2 3 4

2 3 4 5

×

× × × ×

× × × × ×

× × ×

× × × ×

b1=(3, 8×2, -24×22, -8×23, -1×24, 2×25)

LLL

r(x) = 2x5-x4-8x3-24x2+8x+3=0を解いてx=3を求める。

Page 32: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

d < N0.292のRSAの解読

ed ≡1 (mod L)(p-1, q-1) = 2とするとL=(p-1)(q-1)/2=(N-p-q+1)/2なのでed+k{(N+1)/2 - (p+q)/2} = 1

k(A+s) ≡1 (mod e)

A= (N+1)/2s =(p+q)/2d=Nδ

D.Boneh, G. Durfee, Cryptanalysis of RSA with Private Key d Less than N0.292 ,CRYPTO’99

e ≒Nとするとs≒e0.5, k≒eδ

kとsを変数とする不定方程式

Wiener(IT90) 連分数を使ってδ< 0.25まで解けるBonehら(C99) LLL(Howgrave-Graham)を使ってδ< 0.292

Page 33: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

N=prqの素因数分解

pに近い値Pを知っていたとする。 t=P-pとすると

(P+t)r≡0 (mod pr)

が成立する。f(x)=(P+x)rとおくとtはf(x)≡0 (mod pr)の解になっている。ただし、prは知らないのでprの倍数Nを使ってf(x)≡0 (mod N)を解くことで代用する(Howgrave-Grahamアルゴリズム)。

実際にはPの値は知らないので、Pに関する探索を行う。

r > (log p)1/2のときに既存の方法より速くなる。

Page 34: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

その他

•Hidden subset sum problem (C99) ナップザックでaiが秘密。xiとCのペアを元に解読。•Noisy polynomial reduction (Noisy chinise remainder theorem) (E00) 曲線上に乗らない点(ノイズ)も与えられたときに補間する。•超楕円曲線•NFSへの応用 最終段で代数的数の平方根を求める。

Orthogonal lattice technique与えられた格子と直交する格子をLLLで求め、利用するテクニック

•Qu-Vanstone暗号への攻撃 (Nguyen他 C97)•Ajtai-Dwork暗号の解析 (Nguyen他 C98)•伊藤,岡本,満保暗号(SAC97)の解読 (Nguyen他 SAC98)•Hidden subset sum問題への適用 (Nguyen他 C99)•GGH暗号(Goldreich他C97)の解読 (Nguyen C99)

Page 35: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

その他

•超楕円暗号のJacob和を求める (Buhler他 97)•NFSの最終段での代数的整数の平方根を求める•最小多項式を求める

代数的整数論関連の応用

two-third method (Vallee他Math.Comp.??)

素因数分解

計算量のboundが証明されている素因数分解アルゴリズムで最速 : L2/3。

Page 36: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

まとめ

•LLLアルゴリズムの概要 近似精度と実行時間が証明されている•最近の研究動向 ユニークな研究が増えている。

フリーのLLL(C++) GMP対応 www.shoup.net/NTL/

Page 37: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

研究の分野

格子基底縮小アルゴリズム

解きたい問題

格子上の短いベクトルを見つける問題

格子基底

短いベクトル答え

問題解決の手順

問題のmappingHastadCoppersmith

効率的なアルゴリズムLenstra-Lenstra-LovaszSchnorrKorkine-Zolotarev

格子の構成法←

LLLを使った問題解決のフレームワーク

Page 38: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子基底の性質

・同じ格子を張る別の格子基底が無限に存在する。・基本行操作した基底も同じ格子を張る →ユニモジュラ変換をしても同じ格子を張る。

L(B) = L(UB), U ∈ GLn

・同じ格子を張る基底のd(・)は同じ値を取る。  L(B) = L(B’) → d(B) = d(B’)

基本行操作・ある行に-1を掛ける・ある行の整数倍を別の行に加える。

・行の交換

B =

−−

1 0 0 119770060 1 0 111400730 0 1 127800490 0 0 1899061

B'=− −

− −− −

7 11 16 030 12 3 28

4 36 20 131 20 3 41

U =− −

− − −− − −

7 11 16 130 12 3 139

4 36 20 37131 20 3 58

B’ = UBL(B) = L(B’)det(B) = 1899061, det(B’) = -1899061, det(U) = -1

Page 39: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

格子基底縮小問題

たくさんある基底の中から、基底ベクトルのユークリッドノルムが短い基底を見つけ出す。

定義は?

B =

−−

1 0 0 119770060 1 0 111400730 0 1 127800490 0 0 1899061

B'=− −

− −− −

7 11 16 030 12 3 28

4 36 20 131 20 3 41

格子基底縮小

|b1| ≒ 119977006|b2| ≒ 11140073|b3| ≒ 12780049|b4| = 1899061

|b’1| ≒ 20.64|b’2| ≒ 42.86|b’3| ≒ 41.39|b’4| ≒ 55.24

実際にLLLアルゴリズムで縮小してみた例 d(B)1/4≒37.12

Page 40: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLLアルゴリズム格子基底を入力して、基本行操作を繰り返してLLL条件を満足する格子基底を出力する多項式時間アルゴリズム

LLLアルゴリズムの計算量算術演算で数えて O n B( log )4 ( max{ })B Bij=

LLLアルゴリズム

LLL条件を満たす格子基底

格子基底

基本行演算の繰り返し

入力と出力は同じ格子を張る基底

Page 41: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLL条件条件1 | |µij ≤

12

条件2 | | | |* * *b b bi ii i i+ ≥− − −µ 1 12 3

4 12

1≤ < ≤j i n

1 < ≤i n

| | ( )( ) / /b11 4 12≤ −n nd L

∀ ≠ ∈ ≤ −x b x0 212 1 2L n  | | | |

∀ ≤ −x x x b x x x1 22 1

12

22 22, , ... , | | max{| | , | | , ... , | | }t j

nt 

・・・

ここではb*とかμの

定義は省略する

LLL条件から色々なことが証明できる

for j=1,...,t

・b1の長さとd(L)の関係

・b1の長さと最短ベクトル∈Lの長さの関係

・bjの長さとt番目に短いベクトル∈Lの長さの関係

LLLアルゴリズムの出力を{b1,b2,...,bn}としている

Page 42: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLLの応用基本型1 (横型)

B

a a aN

N

N

N

n

=

=

ε

ε

1 2

0 0 00 0 0

0 0 0

0

L

L

L

M M M O M

L

aI

ここのところが横に並んでいるので横型

(n+1)次元格子基底Bの張る格子L(B)を考える(εは小さな定数)

ab a

b

== =

( , , , ),mod ( mod , mod , , mod )

| |

a a a NN a N a N a N

n

n

1 2

1 2

K

K

が与えられて、

とする。 が小さくなるような を求める。

α α α αα

同時ディオフンタス近似

εの大きさには何か理論があったはず(^^;

Page 43: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

基本型1 (続き)

( , , , , )αε α α αa k N a k N a k Nn n1 1 2 2+ + +K

( )( )( )

( )

ε αa a aN

N

N

kk

k

n

n

1 2

1

2

0 0 00 0 0

0 0 0

L

L

L

M

L

M

×

×

×

×+

L B a k N a k N a k Na N a N a N

n n

n

( ) ( , , , , )( , mod , mod , , mod )

= + + +=

αε α α ααε α α α

1 1 2 2

1 2

K

K

∀ ∈α , , , ,k k kn1 2 K ZL(B)を書き下してみる

BをLLLに入力し、出力B’に対してα=B’11/εとしてαを求める。

| | ( ) ( )/ /( ) / / ( )b14 1 1 4 1 12 2≤ =+ +n n n n nd B N ε

Page 44: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

例 a = (122, 133, 58, 203), N=209について|αa mod N|が小さくなるαを見つける (|a|≒277.8)。

B =

1 122 133 58 2030 259 0 0 00 0 259 0 00 0 0 259 00 0 0 0 259

B'=

− − −− −

− − −

− − − −

4 30 14 27 3523 43 49 39 713 32 84 23 49

45 51 28 20 7070 7 14 84 35

| | . ( . )| | . ( . )| | . ( . )| | . ( . )| | . ( . )

bbbbb

1

2

3

4

5

55 4 55 279 7 76 3105 7 104 91035 932115 9 92 3

LLLα

α=-4のとき、(122αmod N, 133αmod N, 58αmod N, 203αmod N)= (30, -14, 27, -35)で長さは55.2。

実際の長さ

簡単のためにε=1でも求まる例題を選んでいる

Page 45: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

基本型2 (縦型)

ここのところが縦に並んでいるので縦型

(n+2)次元格子基底Bの張る格子L(B)を考える

a

x

=

+ + + ≡

=

( , , , ), ,(mod )

( , , , )

a a a C Na x a x a x C n

x x x

n

n n

n

1 2

1 1 2 2

1 2

K

L

K

が与えられて、

を満足する

を求める

B

aa

aCN

CNn

t

=

=

1 0 0 00 1 0 0

0 0 1 00 0 0 10 0 0 0

00 10 0

1

2

L

L

M M O M M M

L

L

L

I a

Page 46: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

基本型2 (続き)

( , , , , , )( , , , , , ( ) mod )

x x x t a x a x tC kNx x x t a x a x tC N

n n n

n n n

1 2 1 1

1 2 1 1

K L

K L

+ + + += + + +

+

∀ ∈x x x t kn1 2, , , , ,K ZL(B)を書き下してみる。

BをLLLに入力する。b1=(・・・,-1,0)という形ならb1の最初のn個の要素が解。

| | ( )( ) / / ( ) ( ) / / ( )b11 4 1 2 1 4 1 22 2≤ =+ + + +n n n nd B N

( )( )

( )( )( )

1 0 0 00 1 0 0

0 0 1 00 0 0 10 0 0 0

1

2

L

L

M

L

L

L

aa

aCN

n

×

×

×

×

×

xx

xtk

n

1

2

M

を満足する解が存在するなら

解が求まる。

縦型は直接解が求まる

Page 47: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

例 12345x1+13333x2+10058x3≡1033 (mod 15432)の小さな解を求める

B =

1 0 0 0 123450 1 0 0 133330 0 1 0 100580 0 0 1 10330 0 0 0 15432

B'=

− − −−

− − −−

2 3 5 1 05 0 0 0 33 3 4 3 10 2 4 5 54 5 1 7 4

LLL

b1=(-2, -3, 5, -1, 0)なのでx1=-2, x2=-3, x3=5。検算:12345*(-2)+13333*(-3)+10058*5≡ 1033 (mod 15432)|b1|≒6.25≦d(B)1/n =15432 1/5≒6.88

b1は(・・・,-1,0)という形になっている

(・・・,t,0)という形ならtの逆元を掛けて解を求める

Page 48: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

デコレーション(加速法)解が求まる可能性を高めるための技法・拡大(重み付け) 基底行列の列に重み付けすることで出力を制御する

B

aa

an

=

λλ

λ

1

2

L M L

L B X( ) ( , , )= L Lλ

・平行移動 あるベクトルδに近いベクトルを求める。

B 01δ

右下の1は重み付けする方が性能がよい

あらかじめ解の近似値が分かっている場合や、正の解のみを求めたいときに使う。

現実的にはデコレーションしないと解が求まらないことが多い

Page 49: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

例 12345x1+13333x2+10058x3≡14996 (mod 15432)を解く

B =

1 0 0 0 123450 1 0 0 133330 0 1 0 100580 0 0 149960 0 0 0 15432

2

2

2

1 2

2

λλλ

λ λλ

B'=

− −−

− −− − − −

0 5 1 1 15 0 0 0 32 0 5 5 01 1 4 2 6

1 1 7 8 4

B'=

−−− − −

− −−

3 5 17 0 018 14 2 0 06 11 2 0 30

6 16 1 30 017 17 5 30 0

λ1=λ2=1 λ1=λ2=30

(・・・,-λ1 ,0)という形になっている

重み付けをしないと解けない例

失敗 成功

実はこれも解検算:12345*6+13333*16-10058≡14996 (mod 15432)

Page 50: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

B

Naac

a N

=

= −

0 0 01 0 00 1 00 0 1

2

3

11

βββ

β mod

縦型の変形

∀ ∈= + +

x x tL B a x a x tc N x x t

2 3

2 2 3 3 2 3

, ,( ) ( ( ) mod , , , )

a x a x a x c N x a a x a x c N1 1 2 2 3 3 1 11

2 2 3 3+ + ≡ → ≡ − − +−(mod ) ( ) mod

・別の基底行列でも同じことができる。・次元数が少ないほどよい。

Page 51: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Hastadアルゴリズム(1988)d次のモニックなモジュラ方程式p(x)≡0 (mod N)の解x0<N2/d(d+1)を求めるアルゴリズム(p(x) = pdxd+pd-1xd-1+・・・+p2x2+p1x+p0)

x X

B

X p X p Xp pX N

X N

XNN

dd

dd

d

d

0

11 1 0

1

0 0 0 00 0 0 0

0 0 0 00 0 0 0

<

=

−−

ε L

L

L

M M M O M M

L

L

重み付き横型

係数をモジュラ変換して、整数上でも成立する方程式に変換する

p x n p x( ) (mod ) ' ( )0 00 0≡ → =モジュラ変換

Page 52: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Hastadアルゴリズムの例p x x x( ) (mod )= + + ≡2 1233 805 0 1399 を解く

B

X XX N

XNN

=

1 1233 8050 0 00 0 00 0 0

2

2

ε = =1 10, X

LLL

8 8 71 5558 8 71 8449 9 95 250

0 0 0

2

2

2

X XX XX X

N

− − −−

α

8x2+71x-555=0を解いてx=5が答え

Page 53: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Coppersmithアルゴリズム(1996)d次のモニックなモジュラ方程式p(x)≡0 (mod N)の解x0<N1/dを

求めるアルゴリズム

x X

B

pX p

X pX p

N

dd

dd

0

01

1

11

1 0 0 00 0 0

0 0 00 0 00 0 0 0

<

=

− −−

L

L

M M O M M M

L

L

L

( )

スタート:Bからx0が求まるかもしれない

駄目

p(x)以外にx0を解に持つ方程式を連立

させて、解が求まる可能性を高める。

xp(x), x2p(x),...とか、p(x)2,xp(x)2,x2p(x)2,...とか、p(x)3, xp(x)3,...

p z n z Xi ii

d

ii

=∑ ≡ ≈

00(mod ),

ziに関する制約が弱すぎる(重みをつけただけな)ので(1,x0,x0

2,...,x0d-1,x0

d)のような解は求まらない。

Page 54: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

Coppersmithアルゴリズム

B

p xp p xpN

NN

N

t t t t

=

X 2 2

2

2

0 0 00 0 00 0 00 0 0

0

=

1 0 0 0 0 0 0 00 0 0 0 00 0 0 0 0 10 0 0 0 0 0 10 0 0 0 0 0 0 10 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0

1

2

3

4

5

2

2

b fX a b e f

X a d eX c d

X cX

NN

NN

p x x ax bp x x cx dx ex f

( )( )

= + +

= + + + +

2

2 4 3 2

p xp p2 xp2

縦型の応用

(・・・,0,0,0,0)が解候補

(・・・,0,0,0,0)が解候補

Page 55: 格子基底縮小とその応用 - JSIAMjant.jsiam.org/006-shimizu.pdf格子(LLL)に関係する研究 格子に関する研究 •格子に含まれる最短ベクトルの長さの上界/下界

LLLのまとめ

・格子と格子基底の紹介・格子基底縮小(LLL)の紹介・応用-基本形(縦型と横型)・モジュラ方程式の解を求める

中身をあまり知らなくてもツールとして使える!!