前回の続きです.
全4回通しでの目次
第1回
- 本論文全体の流れ
- 2,3章について
- 4章でやりたいこと
- 4.1 Monomial Multiplication in (\mathbb{Z} / q \mathbb{Z})[X] / (p(X))
第2回(イマココ)
- 4.2 Programming the Test Polynomial
- 4.2.1 Constant coefficient
- 4.2.2 Leading coefficient
- 4.2.3 Trinomials
第3回
第4回
4.2 Programming the Test Polynomial
Lookup table が与えられたときに,どのような test polynomial ならうまくいくのかを考察します
4.2.1 Constant coefficient
まず,前回と同じ N - 1 次多項式 \displaystyle v(X) = \sum_{i = 0}^{N - 1} v_i X^i \in R[X] / (p(X)) を取り,X^{-t} v(X) の定数項(つまり,(X^{-t} v(X))_0 = (X^{-t} v(X))[0]) を K_t とします.
そして,Blind Rotation といえば,Lookup Table ということで,要素数が N の配列 T を考えます.そして,T[t] = K_t とすることで,Lookup Table を構成することができます.
逆に,Lookup Table の各要素を X^{-t} v(X) の定数項とみなすことで, v(X) を構成でき,そのことを次の命題で示します:
\underline{\mathrm{Prop1}}
\{ K_i \in R \}_{i = 0}^{N - 1} を取り,任意の 0 \leq i \leq N - 1 に対して,\displaystyle v_i = \sum_{j = 0}^i \frac{p_{i - j}}{p_0} K_j として,\displaystyle v(X) = \sum_{i = 0}^{N - 1} v_i X^i\in v_i X^i \in R[X] / (p(X)) とする.このとき,任意の 0 \leq t \leq N - 1 に対して,(X^{-t} v(X))_0 = K_t である.
証明
t に関する帰納法で示します.
step 1
t = 0 のとき,\displaystyle (X^{- 0} v(X))_0 = (v(X))_0 = v_0 = \frac{p_0}{p_0} K_0 = K_0 ゆえOKです.
step 2
次に j < t なる任意の j で成り立つと仮定します.前回の 【ePrint解説】Liberating TFHE 1/4「4.1」 から,X^{-1} v(X) = \sum_{i = 0}^{N - 1} (v_{i + 1} + (- p_0)^{-1} p_{i + 1} v_0) X^i が成り立ちます.すると,両辺の i 番目の要素に注目して,(X^{-1} v(X))_i = v_{i + 1} + (- p_0)^{-1} p_{i + 1} v_0 が成り立ちます.(v(X))_0 = v_0, (v(X))_{i + 1} = v_{i + 1} を使うと,(X^{-1} v(X))_i = (v(X))_{i + 1} - \frac{p_{i + 1}}{p_0} (v(X))_0 となります.
よって,
\begin{align*}
(X^{-t} v(X))_0
& = (X^{-1} (X^{-t + 1} v(X)))_0 \\
& = (X^{-t + 1} v(X))_1 - \frac{p_1}{p_0} (X^{-t + 1} v(X))_0 \\
& = (X^{-1} (X^{-t + 2} v(X)))_1 - \frac{p_1}{p_0} (X^{-t + 1} v(X))_0 \\
& = (X^{-t + 2} v(X))_2 - \frac{p_2}{p_0} (X^{-t + 2} v(X))_0 - \frac{p_1}{p_0} (X^{-t + 1} v(X))_0 \\
& = \cdots \\
& = (X^{-t + t} v(X))_t - \frac{p_t}{p_0} (X^{-t + t} v(X))_0 - \frac{p_{t - 1}}{p_0} (X^{-t + (t - 1)} v(X))_0 - \cdots - \frac{p_1}{p_0} (X^{-t + 1} v(X))_0 \\
& = v_t - \sum_{j = 0}^{t - 1} \frac{p_{t - j}}{p_0} (X^{- j} v(X))_0
\end{align*}
各等号について
2行目:(X^{-1} v(X))_i = (v(X))_{i + 1} - \frac{p_{i + 1}}{p_0} (v(X))_0 に対して,v(X) = X^{-t + 1} v(X), i = 0
4行目:2行目と同じ
6行目:2・4行目を繰り返し
7行目:6行目の「\frac{p_t}{p_0} (X^{-t + t} v(X))_0」以降を\sumで整理
になりますので,0 \leq j \leq t - 1 に対して,帰納法の仮定から (X^{- j} v(X))_0 = K_j なので,
\begin{align*}
(X^{-t} v(X))_0
& = v_t - \sum_{j = 0}^{t - 1} \frac{p_{t - j}}{p_0} (X^{- j} v(X))_0 \\
& = v_t - \sum_{j = 0}^{t - 1} \frac{p_{t - j}}{p_0} K_j \\
& = \sum_{j = 0}^t \frac{p_{t - j}}{p_0} K_j - \sum_{j = 0}^{t - 1} \frac{p_{t - j}}{p_0} K_j \\
& = K_t
\end{align*}
各等号について
2行目:0 \leq j leq t - 1 に対して,帰納法の仮定から (X^{- j} v(X))_0 = K_j
3行目:命題の仮定の「任意の 0 \leq i \leq N - 1 に対して,\displaystyle v_i = \sum_{j = 0}^i \frac{p_{i - j}}{p_0} K_j」
4行目:0 \leq j \leq t - 1 の部分が消えて,j = t の部分だけ残る
となるので,一般の t でも示されました.
4.2.2 Leading coefficient
今度は,Lookup Table の各要素を X^{-t} v(X) の先頭項とみなすことで, v(X) を構成します.
\underline{\mathrm{Prop2}}
\{ K_i \in R \}_{i = 0}^{N - 1} を取り,任意の 0 \leq i \leq N - 2 に対して,\displaystyle v_{N - 1} = K_0, v_i = - \sum_{j = 0}^i p_{i - j} K_{j + 1} として,\displaystyle v(X) = \sum_{i = 0}^{N - 1} v_i X^i \in R[X] / (p(X)) とする.このとき,任意の 0 \leq t \leq N - 1 に対して,(X^{-t} v(X))_{N - 1} = K_t である.
証明
こちらも t に関する帰納法で示します.
step 1
t = 0 のとき,(X^{- 0} v(X))_{N - 1} = (v(X))_{N - 1} = K_0 で,右辺も K_0 ゆえ一致します.
step 2
t = 1 のとき,前回の 【ePrint解説】Liberating TFHE 1/4「4.1」 から,任意の 0 \leq i \leq N - 1 に対して, (X^{-1} v(X))_i = v_{i + 1} + (- p_0)^{-1} p_{i + 1} v_0 ゆえ,i = N - 1 で,(X^{-1} v(X))_{N - 1} = v_N + (- p_0)^{-1} p_N v_0 が成り立ちます.v_N = 0, p_N = 1 なので,(X^{-1} v(X))_{N - 1} = (- p_0)^{-1} v_0 です.また,仮定から 任意の 0 \leq i \leq N - 2 に対して,\displaystyle v_i = - \sum_{j = 0}^i p_{i - j} K_{j + 1} ゆえ,i = 0 で v_0 = - p_0 K_1 が成り立つため,(X^{-1} v(X))_{N - 1} = (- p_0)^{-1} v_0 = (- p_0)^{-1} (- p_0 K_1) = K_1 となります.
step 3
次に j < t なる任意の j で成り立つと仮定します.特に,t = 1 で成り立つので,(v(X))_0 = v_0 = - p_0 K_1 = - p_0 (X^{-1} v(X))_{N - 1} です.つまり,(v(X))_0 = - p_0 (X^{-1} v(X))_{N - 1} となります.今,v(X) は任意なので,v(X) \mapsto X^{-j} v(X) として,(X^{-j} v(X))_0 = - p_0 (X^{-1} X^{-j} v(X))_{N - 1} です.よって,(X^{-j} v(X))_0 = - p_0 (X^{-j-1} v(X))_{N - 1} となります.
また,先ほどの命題から \displaystyle (X^{-i} v(X))_0 = v_i - \sum_{j = 0}^{i - 1} \frac{p_{i - j}}{p_0} (X^{- j} v(X))_0 が任意の 0 \leq i \leq N - 1 で成り立ちます.
*この式の導出では,前回の 【ePrint解説】Liberating TFHE 1/4「4.1」 しか,本質的には使っていないので,この場合でも成り立ちます
*Prop1 では,\displaystyle (X^{-t} v(X))_0 = v_t - \sum_{j = 0}^{t - 1} \frac{p_{t - j}}{p_0} (X^{- j} v(X))_0 と書いていましたが,今 t を書くと,帰納法の変数とバッティングするため,t \mapsto i で変数名を変更しました
よって,
\begin{align*}
-p_0 (X^{-t} v(X))_{N - 1}
& = (X^{-t + 1} v(X))_0 \\
& = v_{t - 1} - \sum_{j = 0}^{t - 2} \frac{p_{t - j - 1}}{p_0} (X^{- j} v(X))_0 \\
& = v_{t - 1} - \sum_{j = 0}^{t - 2} \frac{p_{t - j - 1}}{p_0} (- p_0 (X^{- j - 1} v(X))_{N - 1}) \\
& = v_{t - 1} + \sum_{j = 0}^{t - 2} p_{t - j - 1} (X^{- j - 1} v(X))_{N - 1} \\
& = - \sum_{j = 0}^{t - 1} p_{t - 1 - j} K_{j + 1} + \sum_{j = 0}^{t - 2} p_{t - j - 1} (X^{- j - 1} v(X))_{N - 1} \\
& = - p_0 K_t
\end{align*}
となり,示されました.
各等号について
1行目:(X^{-j} v(X))_0 = - p_0 (X^{-j-1} v(X))_{N - 1} で j = t - 1
2行目:\displaystyle (X^{-i} v(X))_0 = v_i - \sum_{j = 0}^{i - 1} \frac{p_{i - j}}{p_0} (X^{- j} v(X))_0 で j = t - 1
3行目:(X^{-j} v(X))_0 = - p_0 (X^{-j-1} v(X))_{N - 1}
4行目:p_0 の消去と符号を変更
5行目:v_i = - \sum_{j = 0}^i p_{i - j} K_{j + 1}(仮定) で i = t - 1(論文だとこの等号が消去されて成り立たない等式となっている)
6行目:j = t - 1 の場合のみが残る
4.2.3 Trinomials
この節では,N を偶数,\varepsilon を -1, 1 のいずれかとして,p(X) = X^N + \varepsilon X^{\frac{N}{2}} + 1 と置きます.
ちなみにこのとき,p(X) が円分多項式であれば,3の倍数の次数の円分多項式です.
上記の証明
\varepsilon = 1 のとき,(X{\frac{N}{2}} - 1)(X^N + X^{\frac{N}{2}} + 1) = X^{3 \frac{N}{2}} - 1 であり,
\varepsilon = -1 のとき,(X{\frac{N}{2}} + 1)(X^N - X^{\frac{N}{2}} + 1) = X^{3 \frac{N}{2}} + 1 から成り立ちます.
*この命題の逆,つまり,p(X) が3の倍数の次数の円分多項式であれば,p(X) = X^N + \varepsilon X^{\frac{N}{2}} + 1 は成り立ちません
この p(X) に限定することで,s 番目の要素を参照するだけで,v(X) を構成できます.
このとき,s 番目をどう指定するかで,test polynomial の構成が変わります
\underline{\mathrm{Prop3}}
N を正の偶数,\varepsilon = 1, -1 として,p(X) = X^N + \varepsilon X^{\frac{N}{2}} + 1 とする.s < \frac{N}{2} を非零な整数とする.\{ K_i \in R \}_{i = 0}^{N - 1} を取り,
\begin{align*}
v_i =
\begin{cases}
-\varepsilon K_{\frac{N}{2} + (i - s)} - K_{N + (i - s)} \hspace{10pt} & (0 \leq i < s) \\
K_{i - s} & (s \leq i < \frac{N}{2}) \\
-\varepsilon K_{\frac{N}{2} + (i - s)} & (\frac{N}{2} \leq i < \frac{N}{2} + s) \\
\varepsilon K_{(i - s) - \frac{N}{2}} + K_{i - s} & (\frac{N}{2} + s \leq i < N)
\end{cases}
\end{align*}
として,\displaystyle v(X) = \sum_{i = 0}^{N - 1} v_i X^i \in R[X] / (p(X)) とする.このとき,任意の 0 \leq t \leq N - 1 に対して,(X^{-t} v(X))_s = K_t である.
証明
地道に場合分けするだけなので略(めんどくさい)
上の命題では,s < \frac{N}{2} でしたが,\frac{N}{2} \leq s < N の場合でも構成できます
\underline{\mathrm{Prop4}}
N を正の偶数,\varepsilon = 1, -1 として,p(X) = X^N + \varepsilon X^{\frac{N}{2}} + 1 とする.\frac{N}{2} \leq s < N を整数とする.\{ K_i \in R \}_{i = 0}^{N - 1} を取り,
\begin{align*}
v_i =
\begin{cases}
-K_{N - (s - i)} & (0 \leq i < \frac{N}{2}) \\
-\varepsilon K_{\frac{N}{2} - (s - i)} - K_{N - (s - i)} & (\frac{N}{2} \leq i < s) \\
K_{-(s - i)} & (s \leq i < N)
\end{cases}
\end{align*}
として,\displaystyle v(X) = \sum_{i = 0}^{N - 1} v_i X^i \in R[X] / (p(X)) とする.このとき,任意の 0 \leq t \leq N - 1 に対して,(X^{-t} v(X))_s = K_t である.
証明
Prop3とほぼ同じ(つまり場合分けがめんどくさい)ので略
今回の内容はここまでです.ここまでご覧になってくださった方々ありがとうございます!
Discussion