Improved Bootstrapping for Approximate Homomorphic Encryption

2022-07-04

CKKS Bootstrap

Youtube

2020-10-26

  • https://www.youtube.com/watch?v=9cCnmgPZGfw

  • 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

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

  • Bootstrapping for Approximate Homomorphic Encryption の手法を説明

  • 暗号文のモジュラスを上げる(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演算なので並び替える必要ない
    • 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

  • todo BSGS と何が違うのか

  • mult で済むが

    • の基底で表せないと計算できないので書き換えないと無理(???)

watchlater