Improved Bootstrapping for Approximate Homomorphic Encryption
Youtube
-
HEAANのbootstrapはノイズへらない, regain level
-
Dec: Dec_sk(c) = <c, sk> mod q
- <c, sk> ~= m + q * I
- c = enc(m + q * I mod Q >> q
-
m + q * I |→ m
-
Moduluar Reduction: Id ~= 0, q-周期
-
評価がscaledなsin関数:
-
Bootstrapの手順
- 低いモジュラス q の暗号文 c = Enc(m(X)) [mod = q]
- からより大きいモジュラス q_L に ModRaise
- c = Enc(t(X)), q_L > q, t(X) = m(X) + q * I(X) [mod = q_L]
-
線型変換 CoeffToSlot で c は
Enc(t_0, … t_(N/2)-1)
Enc(t_(N/2), … t_N-1)
FFTっぽくバタフライ演算(RotL と RotR で効率的にできる)
DPでcollapsing pointsを見つけられる -
Sine Evaluation(scaled 指数評価, 虚部だけ抽出)
Enc(m_0, … m_(N/2) - 1)
Enc(m_(N/2) … m_N-1)
評価 Taylor polynomial (d_0)
Repeated Squaring (2^r)
total degree d = d_0 * 2^r ~= 1000 -
チェビシェフ補完
sin (X) ~= \sum i = 0..d b_i * T_i (X)
小さい d で精度がでる -
SlotToCoeff で q_L > q_l > q なものに
c’ = Enc(m(X)) [mod = q_l] -
HEAAN-Boot+ 実装しました
-
課題
- チェビシェフ補完をsigmoidとかRELUでやりたい
- DFTをはやくしたい
- HEAAN-RNSのbootstrapingを早くしたい
Abstract
- amortized time 0.01s (x100)
- Level Collapsing: DFTみたいな線形変換
- sin関数をTaylor近似からChebyshev近似にしてPatterson-Stockmayerアルゴリズムの修正版で評価
1. Introduction
1.1 Previous Bootstrapping Method for CKKS
- CKKS scheme from Homomorphic Encryption for Arithmetic of Approximate Numbers
- 毎回の乗算毎に 法 を減らしていく, iff メッセージのnormが よりも小さい時正しい
- そこで をより大きな法 にしたい
- todo 大きい法 にmodswitchするのはなんで出来ないのか
Bootstrapping for Approximate Homomorphic Encryption では,
- 平文 のとき小さな係数の多項式 として に復号される.
- 係数に対して を近似的に評価して を計算する
- 指数関数 のTaylor展開の 次の項を 乗して かける
虚部は
あとは, これを評価する前後で係数からスロットに変換とその逆をすれば良い
変換は Encode と Decode を準同型演算で表現すれば可能
Why the previous method does not scale well
- 近似精度を保証するために で選ばれていた
- 指数関数の評価は ops, 深さ
- 線形変換は ops, 深さ
- 暗号文がdenseだとスケールできない, レベルも改善できる
1.2 Our Contributions
- 線形変換をFFTぽくすることで 深さは必要だが, opsを少なく
- レベルの消費量とopsのトレードオフを決定するのにDPを使った
- 高速化かつslot数x2~x128に対応
- チェビシェフ補間で を近似することで精度高く, レベル減らせた () に( は小さな定数)
- を効率的に評価するために
パターソン・ストックマイヤーアルゴリズムを提案- mul ops
- を効率的に評価するために
2. Background
2.1 The CKKS Scheme
2べき , , 複素数ベクトル
を 2べき の 番目の1の原始根
Decodeアルゴリズムは剰余多項式 をとって
()
の係数表現とすると は 線形変換

- はその逆
実装する時は 特殊フーリエ変換行列 をつくって

平文多項式()を で に埋め込む
暗号化された多項式は最も近い整数係数に丸め込む必要がある
2.2 Previous Bootstrapping for CKKS
-
暗号文のモジュラスを上げる(impl: Lattigo CKKS Bootstrap > Modup)
-
- の係数は に依存する定数 で抑えられる
subsumを実行する(impl: Lattigo CKKS Bootstrap > Subsum)- field extension
-
-
係数からベクトルへ() (impl: Lattigo CKKS Bootstrap > coeffsToSlots)
- フーリエ変換の亜種を同型で評価することで実現出来る
- some
- 入力 出力 , なので2個並べる.
の時,
3. Improved Linear Transforms from Level-Collapsing
coeffToSlot,slotToCoeffの線形変換を改善する
3.1 FFT-like Algorithms
slotToCoeff:coeffToCoeff:
Bootstrapping for Approximate Homomorphic Encryption では diagonal method と BSGS を採用
- DFTのバタフライ演算と同様に線形変換で出来る

- ブートストラップの目的では
bitReverseは不要- why: ビット反転は次数2の並べ換えだけど
evalSineはSIMD演算なので並び替える必要ない
- why: ビット反転は次数2の並べ換えだけど
- SIMD演算で表すと
- は事前に計算
- todo どこから出てきたのか
- レベル, ops
collapsing: 消費レベルとopsを交換できる
3.3 Optimal Level-Collapsing from Dynamical Programming
- Algorithms in HElib
- claim 自分のやりたいことに近いので後で見る watchlater
- タスク: 入力に 線形変換列 を適用する
- 各線形変換はレベルを消費する, 変換をまとめることで最適化出来る
- ex. , と出来る
- 最適なまとめ方を見つけるのはDPで
- みたいな形になる
- 事前計算, rot と cmult で評価できる
- BSGS も使えば rotまで削減
- コストは cmult rot
4. Improved Sine Evaluation from Chebyshev Approximations
- Chebyshev Polynomials は多項式の集合
リプシッツ連続関数 on の 次 Chebyshev補間 は
- 詳細 todo
- Taylor展開による近似よりも低次数で優れた近似が出来る
4.3 Computing Cheebyshev Polynomials in FHE
- Chebyshev補間 の係数は事前に計算できる
- スカラ乗算と加算を繰り返すと誤差小さく計算できるが 乗算が必要
Paterson-Stockmeyer for Chevbyshev
