※ Typo、記号や添字の誤り、そもそも証明の誤りがありましたら、Twitter (@Xornet_)へリプライかDM(誰でも送れます)を飛ばすか、このブログのリポジトリでIssueを立てたりプルリクを送ったりしてください。

読者が格子についての知識をある程度有している前提で書いてます。下記のサイトや書籍を読んでいると読みやすいと思います。

格子に関する記法 §

次のように記号を定義する

  • LL: nn次元格子
  • vol(L)\mathrm{vol}(L): 格子LLの体積
  • {b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}: LLの基底
    • この記事では行ベクトルで表し、それを縦に並べた行列BBLLの基底行列と呼ぶ
  • bi (1in)\boldsymbol b_i^* \ (1 \leq i \leq n): bi\boldsymbol b_iのGSOベクトル (グラムシュミットの直交化を行ったベクトル)
    • 任意の1in1 \leq i \leq nに対してb1,,bi=b1,,bi\langle\boldsymbol b_1, \dots, \boldsymbol b_i\rangle = \langle \boldsymbol b_1^*, \dots, \boldsymbol b_i^*\rangleが成り立つ
    • ここでb1,,bi:={j=1irjbjrjR}\langle \boldsymbol b_1, \dots, \boldsymbol b_i \rangle := \{\sum_{j=1}^i r_j\boldsymbol b_j \mid r_j \in \mathbb R\}とする
  • μi,j (1jin)\mu_{i,j} \ (1 \leq j \leq i \leq n): GSO係数 (便宜上、μi,i=1\mu_{i,i} = 1とする)
    • bi=j=1iμi,jbj\boldsymbol b_i = \sum_{j=1}^i \mu_{i,j}\boldsymbol b_j^*が成り立つ
  • πi (1in)\pi_i \ (1 \leq i \leq n): b1,,bi1\langle \boldsymbol b_1, \dots, \boldsymbol b_{i-1}\rangleの直交補空間に対する直交射影 (i=1i=1の時は便宜上恒等写像とする)
    • つまりπi(j=1najbj)=j=inajbj\pi_i\left(\sum_{j=1}^n a_j\boldsymbol b_j^*\right) = \sum_{j=i}^n a_j\boldsymbol b_j^*が成り立ち、特にπi(bi)=πi(j=1iμi,jbj)=bj\pi_i(\boldsymbol b_i) = \pi_i(\sum_{j=1}^i \mu_{i,j}\boldsymbol b_j^*) = \boldsymbol b_j^*が成り立つ
  • λi(L) (1in)\lambda_i(L) \ (1 \leq i \leq n): ii次逐次最小
    • 本記事ではi=1i=1の時のみ登場し、λ1(L)\lambda_1(L)LLの非零な最短ベクトルの長さとなる
    • なお1in1 \leq i \leq nに対して、ノルムがii次逐次最小となる格子ベクトルが存在することは知られており、したがって格子における非零な最短ベクトルは存在する(参考文献1: 1.4節)

定義: HKZ簡約基底 §

次を満たす格子LLの基底{b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}を「HKZ簡約基底」と呼ぶ

  1. サイズ簡約されている
  2. 任意の1in1 \leq i \leq nに対してbi=λ1(πi(L))\|\boldsymbol b_i^*\| = \lambda_1(\pi_i(L))を満たす

2の条件に登場するπi(L)\pi_i(L){πi(x)xL}\{\pi_i(\boldsymbol x) \mid \boldsymbol x \in L\}を表す。実はこれは射影格子1と呼ばれるni+1n-i+1次元格子になり、{πi(bi),,πi(bn)}\{\pi_i(\boldsymbol b_i), \dots, \pi_i(\boldsymbol b_n)\}を基底として持つ。

したがって、2の条件は各基底bi\boldsymbol b_iのGSOベクトルbi\boldsymbol b_i^*のノルムが、射影格子πi(L)\pi_i(L)の第1次逐次最小である、言い換えればbi\boldsymbol b_i^*πi(L)\pi_i(L)の非零な最短ベクトルであるということを要請している。

特にi=1i=1に関して、b1=b1\boldsymbol b_1^* = \boldsymbol b_1であり、更にπ1\pi_1は恒等写像であるから、b1=λ1(L)\|\boldsymbol b_1\| = \lambda_1(L)となって、b1\boldsymbol b_1LLの非零な最短ベクトルであることがわかる。

構成1: HKZ簡約基底の構成 §

次のようにしてnn本のLLの格子ベクトルの組{b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}を構成する。

  1. b1=λ1(L)\|\boldsymbol b_1\| = \lambda_1(L)となる格子ベクトルb1\boldsymbol b_1を用意する
  2. 射影格子π2(L)\pi_2(L)2の非零な最短ベクトルをb2\boldsymbol b_2'とするとb2=π2(b2)\boldsymbol b_2' = \pi_2(\boldsymbol b_2)となるb2L\boldsymbol b_2 \in Lが存在するはずのでこれをb2\boldsymbol b_2とする
  3. 以下同様にして、iiが小さい方から順にπi(L)\pi_i(L)の非零な最短ベクトルbi\boldsymbol b_i'に対してbi=πi(bi)\boldsymbol b_i' = \pi_i(\boldsymbol b_i)となるbiL\boldsymbol b_i \in Lを選んで基底とする

この手順の3より、bi=πi(bi)=bi\boldsymbol b_i^* = \pi_i(\boldsymbol b_i) = \boldsymbol b_i'となるので、bi\boldsymbol b_i'πi(L)\pi_i(L)の非零な最短ベクトルであることから、このようにして得られた基底は明らかにHKZ簡約基底の2番目の条件を満たす。

一方で、1番目の条件であるサイズ簡約されている事を満たすとは限らない。しかし、条件2が基底の「GSOベクトル」に依存することからGSOベクトルを変更しない簡約方法であるサイズ簡約(参考文献1: 2.2節, 参考文献2: 6節を参照)を実行しても条件2は崩れない。よって、このようにして得られた基底に対してサイズ簡約を実行すればHKZ簡約基底の2条件は満たされる。

このような構成はどのような格子に対しても行うことが出来るためHKZ簡約基底の2条件を満たす「nn本の格子ベクトルの組」3は任意の格子に対して存在する。問題は、これが本当にLLの基底であるかということである。

このように構成したベクトルの集合はLLのベクトルからなるためLLの部分格子を生成するが、LL自体を生成することは自明ではない。よって以下の補題1, 補題2を用いてLLを生成する事を示す。

補題1 §

任意のnn次元格子LLの任意の非零な最短ベクトルv\boldsymbol vに対して、LLの基底の中でvvを含むものが存在する。

)\because)

格子の次元に関する数学的帰納法で証明する。証明の方針としては、kk次元格子の基底から1つベクトルを取り除いた基底によって張られるk1k-1次元格子は元の格子の部分格子であり、元の格子の非零な最短ベクトルが含まれているなら、その部分格子でもまた非零な最短ベクトルとなる事を利用する。

n=1n=1の場合においては、明らかに補題が成り立つ4。なぜなら、x\boldsymbol xだけによって張られる1次元格子の非零な最短ベクトルは±x\pm \boldsymbol xの2つであり、{x}\{\boldsymbol x\}{x}\{-\boldsymbol x\}もこの1次元格子の基底になるからである。

n=k1 (k2)n=k-1 \ (k \geq 2)において補題が成り立つと仮定してn=kn=kの場合を考える。つまり、任意のk1k-1次元格子とその非零な最短ベクトルv\boldsymbol vに対して、v\boldsymbol vを基底ベクトルとして含む基底が存在する。

kk次元格子LLの非零な最短ベクトルをv\boldsymbol vとおく。また、LLの基底として{b1,,bk}\{\boldsymbol b_1, \dots, \boldsymbol b_k\}を用意し、基底行列をBBとおいてv=(v1,,vk)B\boldsymbol v = (v_1, \dots, v_k)Bと係数を定義する。

もしvi=0v_i = 0となるような係数が存在する場合、bi\boldsymbol b_iBBから取り除いた基底CCを考える。元の基底が格子LLを張っていたことから、CCLLの部分格子を張る基底となる。このk1k-1次元部分格子をMMとおく。vM\boldsymbol v \in Mであり、更にMMLLの部分格子でv\boldsymbol vLLの非零な最短ベクトルであったことから、v\boldsymbol vMMの非零な最短ベクトルでもある。

帰納法の仮定から任意のk1k-1次元格子には任意の非零な最短ベクトルを基底ベクトルとして含むような基底が存在する。よって、MMの基底の中にはそのようなもの、つまりv\boldsymbol vを含むものが存在することから、これをCC'とおくと、CC'CCは当然同じ格子を張る。

したがって、CC'に上記で除去したbi\boldsymbol b_iを加えた基底をCCとおけば5CCBBと同じ格子を生成する。CCの構成方法から、CCは明らかにv\boldsymbol v、つまりLLの非零な最短ベクトルを基底に含むことから、この場合は補題が成り立ち、数学的帰納法を用いて任意の次元において補題が成り立つ。

v\boldsymbol v(の係数)がこれを満たさない場合を考える。

g:=gcd(v1,v2),w1=v1/g,w2=v2/gg := \gcd(v_1, v_2), w_1 = v_1/g, w_2 = v_2/gと定義すると、aw1+bw2=1aw_1 + bw_2 = 1となるような整数a,ba,bが存在する。これを用いると次の行列UUはユニモジュラ行列6になる。

U=(w1w2ba111) U = \begin{pmatrix} w_1 & w_2 & & \cr -b & a & & \cr &&1 & \cr &&&1 & \cr &&&& \ddots \cr &&&&& 1 \end{pmatrix}

よって、BBUBUBは共に格子LLを生成し、UBUBは次のような基底行列となる。

UB=(w1b1+w2b2b2b3bk) UB = \begin{pmatrix} w_1\boldsymbol b_1 + w_2\boldsymbol b_2 \cr \boldsymbol b_2' \cr \boldsymbol b_3 \cr \vdots \cr \boldsymbol b_k \end{pmatrix}

ここで、b2:=bb1+ab2\boldsymbol b_2' := -b\boldsymbol b_1 + a\boldsymbol b_2とおいた。

このLLの基底UBUBに対するv\boldsymbol vの係数は、w1,w2w_1, w_2の定義から(g,0,v3,,vk)(g, 0, v_3, \dots, v_k)となる(つまりv=(g,0,v3,,vk)UB\boldsymbol v = (g, 0, v_3, \dots, v_k)UBが成り立つ)。よって、係数に0が含まれるようなLLの基底を用意出来たことから、この場合もまた、最初の場合と同様にして補題が成り立つ事を示す事が出来る。 \Box


補題2の提示と証明の前に、次のように射影格子に関する記号を定義する。

1kn1 \leq k \leq nに対して、射影格子L(k):=πk(L)L^{(k)} := \pi_k(L)を考えると、この格子はnk+1n-k+1次元格子であり、基底として{πk(bk),,πk(bn)}\{\pi_k(\boldsymbol b_k), \dots, \pi_k(\boldsymbol b_n)\}が存在する。以後、わかりやすさのためにこの基底を{b1(k),,bnk+1(k)}\{\boldsymbol b_1^{(k)}, \dots, \boldsymbol b_{n-k+1}^{(k)}\}とおく。つまり次が成り立つ。

bi(k):=πk(bk+i1) \boldsymbol b_i^{(k)} := \pi_k(\boldsymbol b_{k+i-1})

これに限らず、(k)(k)を上付き添字で用いる時はL(k)L^{(k)}に関する数学的対象を表す。

特に、1ink+11\leq i \leq n-k+1に対して、b1(k),,bi1(k)\langle \boldsymbol b_1^{(k)}, \dots, \boldsymbol b_{i-1}^{(k)}\rangleの直交補空間への直交射影をπi(k)\pi_i^{(k)}で表す。通常の場合と同様に、i=1i=1の時は恒等写像とする。

また、以降のために必要な命題として参考文献1の1.2節より定理1.2.5を引用する。

(定理1.2.5) nn次元格子LLの基底{b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}と整数2ln2\leq l \leq nに対して次が成り立つ。

vol(πl(L))=vol(L)vol(L(b1,,bl1)) \mathrm{vol}(\pi_l(L)) =\frac{\mathrm{vol}(L)}{\mathrm{vol}(\mathcal L(\boldsymbol b_1, \dots, b_{l-1}))}

特にl=2l=2の場合を系として以後用いる

系1 §

nn次元格子LLの基底{b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}に対して次が成り立つ。

vol(π2(L))=vol(L)vol(L(b1))=vol(L)b1 \mathrm{vol}(\pi_2(L)) =\frac{\mathrm{vol}(L)}{\mathrm{vol}(\mathcal L(\boldsymbol b_1))} =\frac{\mathrm{vol}(L)}{\|\boldsymbol b_1\|}


補題2 §

構成1によって作られた格子ベクトルの組{b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}が生成する格子をMMとする。この時、vol(M)=vol(L)\mathrm{vol}(M) = \mathrm{vol}(L)が成り立つ。

)\because)

(※ nnに関する数学的帰納法で多分示すことが出来ますが、面倒なのでやってないです)

補題1より、LLの基底C:={c1,,cn}C := \{\boldsymbol c_1, \dots, \boldsymbol c_n\}の中で、c1=b1\boldsymbol c_1 = \boldsymbol b_1となるものが存在する。系1をLLの基底をCCとして、l=2l=2で適用する7と次が成り立つ。なお、当然のことだが直交射影π2\pi_2は基底CCに依存している。

vol(π2(L))=vol(L)vol(L(c1))=vol(L)c1=vol(L)b1=vol(L)b1 \mathrm{vol}(\pi_2(L)) = \frac{\mathrm{vol}(L)}{\mathrm{vol}(\mathcal L(\boldsymbol c_1))} = \frac{\mathrm{vol}(L)}{\|\boldsymbol c_1\|} = \frac{\mathrm{vol}(L)}{\|\boldsymbol b_1\|} = \frac{\mathrm{vol}(L)}{\|\boldsymbol b_1^*\|}

射影格子L(2)L^{(2)}についても同様の事を考える。この格子は先程定義したc1\boldsymbol c_1に依存するが、c1=b1\boldsymbol c_1 = \boldsymbol b_1であるから、b2\boldsymbol b_2^*L(2)L^{(2)}の非零な最短ベクトルとなり、更にこれを基底ベクトルとして含むものが存在することが補題1から言える。つまりこの基底をC(2):={c1(2),,cn1(2)}C^{(2)} := \{\boldsymbol c^{(2)}_1, \dots, \boldsymbol c^{(2)}_{n-1}\}とおくと、c1(2)=b2\boldsymbol c^{(2)}_1 = \boldsymbol b_2^*が成り立つ。よって系1をL(2)L^{(2)}の基底をC(2)C^{(2)}として適用すると次が成り立つ。

vol(π2(2)(L(2)))=vol(L(2))vol(L(c1(2)))=vol(L(2))c1(2)=vol(L(2))b2 \mathrm{vol}(\pi^{(2)}_2(L^{(2)})) = \frac{\mathrm{vol}(L^{(2)})}{\mathrm{vol}(\mathcal L(\boldsymbol c^{(2)}_1))} = \frac{\mathrm{vol}(L^{(2)})}{\|\boldsymbol c^{(2)}_1\|} = \frac{\mathrm{vol}(L^{(2)})}{\|\boldsymbol b_2^*\|}

また、L(2)L^{(2)}{c1(2),,cn1(2)}={b2,,cn1(2)}\{c_1^{(2)}, \dots, c_{n-1}^{(2)}\} = \{\boldsymbol b_2^*, \dots, c_{n-1}^{(2)}\}で生成されることから、π2(2)(L(2))\pi^{(2)}_2(L^{(2)})b1\langle \boldsymbol b_1 \rangleの直交補空間への直交射影のLLの像をb2\langle \boldsymbol b_2^* \rangleの直交補空間への直交射影に入れた像になる。したがって、結局b1,b2=b1,b2\langle \boldsymbol b_1, \boldsymbol b_2^* \rangle = \langle \boldsymbol b_1, \boldsymbol b_2 \rangleの直交補空間への直交射影をとっているため、これに対する格子LLの像がL(3)L^{(3)}になり前述の式は次のように書き直すことが出来る。

vol(L(3))=vol(L(2))b2 \mathrm{vol}(L^{(3)}) = \frac{\mathrm{vol}(L^{(2)})}{\|\boldsymbol b_2^*\|}

これと同様の事を添え字を増やしながら行っていくと、L(k)L^{(k)}b1,,bk1\langle \boldsymbol b_1^*, \dots, \boldsymbol b_{k-1}^*\rangleの直交補空間への直交射影のLLの像となり、更に構成1と補題1、系1から、任意の2kn2 \leq k \leq nに対して次が成り立つ。

vol(L(k))=vol(L(k1))bk1 \mathrm{vol}(L^{(k)}) = \frac{\mathrm{vol}(L^{(k-1)})}{\|\boldsymbol b_{k-1}^*\|}

よって、k=nk=nに対して次が成り立つ。

vol(L(n))=vol(L(n1))bn1=vol(L(n2))bn1bn2==vol(L(1))i=1n1bi \mathrm{vol}(L^{(n)}) = \frac{\mathrm{vol}(L^{(n-1)})}{\|\boldsymbol b_{n-1}^*\|} = \frac{\mathrm{vol}(L^{(n-2)})}{\|\boldsymbol b_{n-1}^*\|\|\boldsymbol b_{n-2}^*\|} = \cdots = \frac{\mathrm{vol}(L^{(1)})}{\prod_{i=1}^{n-1}\|\boldsymbol b_i^*\|}

ここで、vol(L(n))\mathrm{vol}(L^{(n)})b1,,bn1\langle \boldsymbol b_1^*, \dots, \boldsymbol b_{n-1}^*\rangleの直交補空間への直交射影のLLの像となることから、構成1よりvol(L(n))=vol(bn)=bn\mathrm{vol}(L^{(n)}) = \mathrm{vol}(\langle \boldsymbol b_n^* \rangle) = \|\boldsymbol b_n^*\|が成り立つ。また、L(1)=LL^{(1)} = Lであるから上式に代入、移項して次が成り立つ。

i=1nbi=vol(L) \prod_{i=1}^n \|\boldsymbol b_i^*\|= \mathrm{vol}(L)

左辺はvol(M)\mathrm{vol}(M)に等しいことから、vol(M)=vol(L)\mathrm{vol}(M) = \mathrm{vol}(L)が成り立つ。 \Box

定理: HKZ簡約基底の存在 §

任意の格子LLに対して構成1で構成した基底はLLのHKZ簡約基底である。

)\because)

構成1で述べたように、HKZ簡約基底の2条件は満たしているので後は「LLの基底」、つまりLLを生成する事を言えば良い。

LLの任意の部分格子MMに対して、ρ:=vol(M)vol(L)\rho := \frac{\mathrm{vol}(M)}{\mathrm{vol}(L)}とおくと、次が成り立つことが知られている(参考文献1: 1.1節)。

ρLML \rho L \subset M \subset L

よってρ=1\rho = 1であれば、L=ML=Mとなる。

構成1によって作られた基底{b1,,bn}\{\boldsymbol b_1, \dots, \boldsymbol b_n\}によって生成される格子MMLLの部分格子である。また、補題2よりvol(M)=vol(L)\mathrm{vol}(M) = \mathrm{vol}(L)が成り立つ。

以上より、ρ=vol(M)vol(L)=1\rho = \frac{\mathrm{vol}(M)}{\mathrm{vol}(L)} = 1であることからL=ML=Mが成り立つため、この基底はLLを生成する。 \Box

参考文献 §

  1. 格子暗号解読のための数学的基礎 | 近代科学社
  2. LLLを理解するぞ - みつみつみつですか?

1

射影格子に関しては参考文献1の1.2節が非常に詳しく、性質や定理もここから引用している

2

この射影格子は既にb1\boldsymbol b_1を選んでいるので定義出来る。以降も同様の事をするが既に小さい添字についての基底ベクトルを選んでいるので射影格子が定義出来る

3

これまで、そしてこれからも単にnn本の格子ベクトルの集合を「基底」と呼ぶことがあるが、格子LLを生成することを示していない(これから示す)ため、「LLの基底」とすることは厳密には誤りである。よってそれを強調するために、このような表現を用いた

4

n4n\leq 4までのnnにおいては逐次最小基底が存在することから補題が成立することが言える。詳しくは参考文献1: 1.4, 1.5節を参照のこと

5

CCが一次独立であることは明らか

6

行列式の絶対値が1であるような行列のこと。ある基底行列にユニモジュラ行列を左(基底が列ベクトルなら右)からかけて出来る基底行列も同じ格子を張るという性質がある(参考文献1: 1.1節, 参考文献2: 1, 2節)

7

当然だが、射影格子も名前の通り「格子」であるので系1を用いることが出来る