GateAIには主要な4つのマイクロサービスがあり、
それぞれDockerコンテナとして簡単にデプロイすることができます。
4つのサービスは以下の通りです。
  • input-client 鍵の生成、推論時の入力の暗号化などを行います
  • model-client 入力平文モデルの秘密計算用コンパイルを行います
  • calculation 暗号状態で演算を行います
  •  
  • calculation-with-key 一時復号下で演算を行います
  •  
最も使われるシステム構成は、
ローカル環境にinput-client, model-client, calculation-with-key を配置し、
クラウド環境にcalculation を配置する構成ですが、
全てのサービスをクラウド環境に配置したりなど、柔軟に対応することも可能です。
鍵の生成はinput-clientにて実行されます。
4つのマイクロサービスに必要な鍵を、以下の手順で配布します。
  • ユーザはinput-clientに鍵生成の指令を送ります
  • input-client が鍵ペアの生成を行います
  • model-client に公開鍵を配布します
  • calculation に公開鍵を配布します
  •  
  • calculation-with-key に公開鍵と秘密鍵を配布します
  •  
モデル所有者はmodel-clientに対して
Kerasで学習されたh5ファイル、Scikitlearnの学習モデルのpklファイル
もしくはそれらのバイナリを指定したフォーマットで送信します。
model-clientは以下の手順で秘密計算モデルを準備します。
  • モデル所有者はmodel-clientにモデルを送信します
  • 入力モデルに対してGateAI独自オブジェクトに変換します
  • モデル内の学習パラメータを暗号化します
  • calculation で実行される層を配布します
  •  
  • calculation-with-key で実行される層を配布します
  •  
 入力データ所有者はinput-clientに対して
 推論を実行したい入力データを送信します
秘密計算を用いた推論はcalculation, calcualtion-with-key間で以下のように実行されます
  • データ所有者がinput-clientへとデータを送信します
  • input-client が入力データを暗号化します
  • input-client が暗号化されたデータをcalculation-with-keyに送信します
  • calculation-with-keyとcalculationは通信を行いながら秘密計算を実行します
  •  
  • 結果がinput-clientに戻り、input-client上で復号されます
  •  
  • データ所有者がinput-clientで結果を復号し結果を確認します
input-client
model-client
calculation-with-key
calculation
input-client
model-client
calculation-with-key
calculation
input-client
model-client
calculation-with-key
calculation