使用Amazon SageMaker AI和全同態加密實現端到端的加密機器學習推理
本文介紹如何利用Amazon SageMaker AI和全同態加密(FHE)技術,在雲上執行完全加密的機器學習推理。透過concrete-ml庫,您可以訓練FHE模型並部署到SageMaker端點,確保查詢、響應和中間結果全程加密,即使雲服務商也無法讀取資料。文中涵蓋醫療、能源、通訊等敏感資料場景,並提供了詳細的實施步驟。
機器學習推理經常涉及處理敏感資料,如醫療記錄、商業機密或個人通訊。能否在雲上執行推理的同時,對雲服務商隱藏資料?本文展示瞭如何結合Amazon SageMaker AI與全同態加密(FHE)實現這一目標:查詢、響應和中間值在全部過程中保持加密,即使SageMaker本身也無法讀取。
FHE允許對密文直接計算,無需解密。在ML推理中,使用者可將加密查詢傳送給模型,得到加密預測結果。以下場景尤為適用:
- 醫療:保險公司向醫生提供手術結果預測模型,但醫生無法因隱私法規暴露患者資料。
- 能源:石油公司利用ML評估衛星照片,但不能將敏感位置照片交給第三方。
- 電信:運營商需檢測垃圾郵件,但法規要求客戶資訊全程加密。
此前,AWS部落格曾介紹手動使用SEAL庫實現線性迴歸FHE推理。本文則採用更靈活的高層庫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獲取模型資訊以生成金鑰;密文可能超過SageMaker查詢大小限制;計算耗時可能超過超時時間。因此採用非同步推理,並自定義通訊機制。
客戶端加密查詢並附加評估金鑰(一種公鑰),傳送至SageMaker非同步端點。端點使用server.zip檔案載入模型,執行FHE評估,返回加密結果。客戶端解密後得到明文預測。
文中提供了完整程式碼示例,包括框架定義、訓練啟動指令碼和推理客戶端實現。最終構建的系統能夠保護資料在整個推理生命週期中的機密性。