FHE Bootstrapping
暗号文に溜まったノイズを、復号写像そのものを準同型評価することでリセットし、ふたたび乗算可能な状態へ戻す操作。Gentry が初めて示した FHE 化の鍵で、これにより leveled HE が任意深さの回路を扱える真のFHEになる。
CKKS の bootstrapping
CKKS の recryption は次の流れ(Cheon らの 2018 論文):
MODRAISE → COEFFTOSLOT → EVALEXP → IMGEXT → SLOTTOCOEFF
- Modulus raising: を大きな modulus へ持ち上げると の形になる。
- CoeffToSlot: 係数表現 を slot へ移す線形変換。
- EvalExp: 復号の剰余 を直接評価できないので で近似。 を 回 2 乗する 2 倍角公式で実装する。
- SlotToCoeff: 逆変換で元へ戻す。
誤差は (マクローリン展開 より)。
高速化の系譜
- Better Bootstrapping: Taylor は高次で不安定なので回避。
- Improved Bootstrapping: Chebyshev 補間で深さを最適化、CoeffToSlot を FFT 風に分解。Lattigo v2 に実装。
- Non-Sparse Keys(2021): 多項式評価・key-switch を最適化し double-hoisting を導入、約 14 倍高速。
- GPU / memory-centric: モジュラ乗算をメモリ中心に最適化し 100 倍超の高速化。
線形変換(CoeffToSlot/SlotToCoeff)はbaby-step giant-step (BSGS)で回転回数を減らすのが定石。TFHE の bootstrapping は逆にビット単位で頻繁に回し、関数評価も兼ねる(programmable bootstrapping)。
関連クラスタ: _moc-crypto