使用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评估,返回加密结果。客户端解密后得到明文预测。
文中提供了完整代码示例,包括框架定义、训练启动脚本和推理客户端实现。最终构建的系统能够保护数据在整个推理生命周期中的机密性。