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)。
- 先行: Ramparts、Cingulata/Armadillo、ALCHEMY、Google FHE Transpiler。
最適化の階層
- プログラム変換(高水準 → SIMD)
- 回路最適化(乗法的深さ削減)
- 暗号最適化(rescale / mod-switch 挿入、パラメータ選択)
SoK によれば、SIMD をどれだけ活かせるかが数桁の性能差を生む。サーベイ・分類は SoK を参照。関連クラスタ: _moc-crypto