FHE コンパイラ

FHE プログラムを書く際の煩雑さ(rescale / modulus switching の挿入、暗号パラメータ選択、SIMD batching)を自動化するコンパイラ。専門家でも手作業では難しい最適化を肩代わりする。

なぜ必要か

CKKS では加減算は scale と modulus が一致していないと評価できず、乗算後に rescale を入れないとノイズが指数的に増える。RNS 実装では rescale に使える素数が限られ挿入位置の選択が複雑。さらに最適なrelinearize配置は NP-Hard。これらを隠蔽するのがコンパイラの役割。

主要なコンパイラ

  • EVA (Microsoft): 暗号化ベクトル演算の DSL / 中間表現。Abstract Semantic Graph 上で rescale・mod-switch・relinearize を最適挿入し、パラメータと回転鍵を自動決定。SEAL をバックエンドに。後続の EVA Improved は Total Sum の batching を最適化。
  • CHET (Microsoft): ニューラルネット推論特化。Homomorphic Tensor Circuit と HISA の 2 段中間表現を持ち、データレイアウト選択とプロファイルガイド付き scale 決定で手チューニングを自動化(18h → 5min)。
  • HECO: ループや要素アクセスを書ける高水準言語を SIMD バッチ演算へ自動変換。要素単位の演算をベクトル全体の演算に置換し、fold パターンを 回転に削減。MLIR 上に構築、naive 比最大 3500 倍。
  • HECATE: scale と modulus を型システムに組み込み、rescale タイミングを最適化(MLIR)。
  • 先行: RampartsCingulata/ArmadilloALCHEMY、Google FHE Transpiler。

最適化の階層

  1. プログラム変換(高水準 → SIMD)
  2. 回路最適化(乗法的深さ削減)
  3. 暗号最適化(rescale / mod-switch 挿入、パラメータ選択)

SoK によれば、SIMD をどれだけ活かせるかが数桁の性能差を生む。サーベイ・分類は SoK を参照。関連クラスタ: _moc-crypto