Amazon SageMaker AI と完全準同型暗号によるエンドツーエンド暗号化ML推論
本記事では、Amazon SageMaker AI と完全準同型暗号(FHE)を組み合わせ、クラウド上で完全に暗号化された状態で機械学習推論を実行する方法を解説します。concrete-mlライブラリ(scikit-learn互換)を使用することで、FHEモデルをトレーニングし、SageMakerエンドポイントにデプロイし、クエリ、応答、中間値をすべて暗号化してSageMaker自身からも読み取れないようにします。医療、エネルギー、通信などの機密データを扱うユースケースを紹介し、詳細な実装手順を提供します。
機械学習推論では、医療記録、企業秘密、個人通信などの機密データを扱うことがよくあります。クラウド上で推論を実行しながら、クラウド事業者からデータを隠すことは可能でしょうか?本記事では、Amazon SageMaker AI と完全準同型暗号(FHE)を組み合わせ、クエリ、応答、中間値をすべて暗号化したまま推論を実行する方法を紹介します。
FHEでは、暗号化されたデータに対して復号せずに計算を実行できます。ML推論では、暗号化されたクエリをモデルに送信し、暗号化された予測結果を受け取ります。以下のシナリオで特に有用です:
- 医療:保険会社が医師に手術結果予測モデルを提供するが、患者データを第三者に開示できない。
- エネルギー:石油会社が衛星写真をMLで評価するが、機密地域の写真を第三者に見せられない。
- 通信:通信事業者が迷惑メール検出のため顧客メールを処理するが、規制により暗号化が必須。
以前のブログではSEALライブラリを使用した線形回帰によるFHE推論を紹介しましたが、本記事ではより高レベルで柔軟なconcrete-mlライブラリを使用します。concrete-mlは複数の一般的なモデルタイプを標準サポートし、scikit-learnとAPI互換性があります。
ソリューション概要
- モデル所有者がデータを準備(特徴量を[-1,1]など同じスケールに正規化)。
- 暗号化データで計算するように設計されたFHE対応モデルをトレーニング。
- モデルをSageMakerにホスティング。
- クライアントがモデルがサポートするFHEスキームでクエリを暗号化。
- 暗号化クエリをクラウドに送信し、モデルが復号せずに暗号化予測を計算。
- 暗号化応答をクライアントが復号して予測を取得。
AWS Nitro Enclavesの機密計算(暗号化を解除して隔離環境で処理)とは異なり、FHEは計算中もデータを暗号化したままにします。セキュリティはハードウェアやソフトウェアではなく数学に依存します。
前提条件
- Python 3.12環境、pip、Docker。
- AWSアカウント(ECR、S3、IAMロール)。
- 注意:concrete-mlは現在非商用利用のみ無料、商用にはライセンスが必要。
トレーニング手順
- トレーニングDockerイメージをビルド(python:3.12、cmake、sagemaker_training、concrete-ml、torchなど)。
- イメージをAmazon ECRにプッシュ。
- トレーニングスクリプト(training_script.py)を作成:データ読み込み、モデルトレーニング、FHEModelDevとして保存。
- カスタムフレームワーク(Concreteクラス)を定義してSageMakerトレーニングに統合。
- トレーニングジョブを開始。完了後、S3にserver.zip(エンドポイント用)とclient.zip(クライアント用)が生成。
推論手順
FHE推論には特別な考慮事項があります:クライアントはclient.zipからモデル情報を取得して暗号鍵を生成する必要があります。FHE暗号文はSageMakerのクエリサイズ制限を超える可能性があり、計算時間もタイムアウトを超えることがあるため、非同期推論メカニズムを使用します。
クライアントは暗号化クエリに評価鍵(公開鍵の一種)を添付して非同期SageMakerエンドポイントに送信します。エンドポイントはserver.zipを使用してモデルをロードし、FHE評価を実行して暗号化結果を返します。クライアントは復号して平文の予測を得ます。
本記事では、フレームワーク定義、トレーニング起動スクリプト、推論クライアント実装を含む完全なコード例を提供しています。このシステムにより、推論ライフサイクル全体でデータの機密性を保護できます。