亚马逊AWS官方博客

突破隐私计算边界:亚马逊云科技可信执行环境助力医疗领域

背景

数字经济时代下,数据是推动发展的重要因素。但数据流动和共享带来新价值的同时也引发了多种潜在的安全问题:

  • 数据泄露和未授权访问:数据在传输、存储和处理过程中可能受到攻击或被恶意获取,导致敏感信息暴露给未经授权的第三方。
  • 数据篡改和不可信:数据在流动和共享的过程中,可能遭到篡改或被意外修改,导致数据的完整性和可信性受到破坏。
  • 合规和法律要求:需要遵守各种合规性要求和法律法规。这包括数据保护法、隐私法、行业监管标准等。
  • 数据所有权和控制:不当的数据控制和访问权限可能导致数据的滥用或未经授权的使用,破坏数据安全和隐私。

随着全球各国陆续出台针对数据使用和保护的相关法律法规(如 GDPR、医疗行业的 HIPAA、金融行业的 GLBA 等),越来越多的企业组织希望寻求关于数据隐私的新方案和技术,以满足数据安全、合规要求,同时提高与客户和合作伙伴之前的信任关系。因此隐私计算作为新的“可信数据流通范式”,被多次提及和探索。

什么是隐私计算?

隐私计算(Privacy Preserving Computing)是指通过在保证数据提供方不泄露原始数据的前提下,对数据进行分析计算,可以保障数据以“可用不可见”的方式进行安全流通。

隐私计算可以分为三大部分:

  • 多方安全计算(SMPC,Secure Multi-Party Computation):以密码学为主的技术,如安全多方协议和同态加密,以实现在加密或扰动的状态下进行计算。计算过程中,参与方之间交换的信息只包含加密或扰动后的数据,而不包含原始数据,从而保障了数据隐私。
  • 联邦学习(Federated Learning):基于人工智能与隐私保护技术融合衍生的技术。旨在建立一个基 于分布数据集的联邦学习模型,是一种在原始数据不出域的情况下,协同完成 机器学习任务的学习模式。在联邦学习实践中还需要融合各类隐私保护技术对传输信息实现进一步的保护,来构建可信联邦学习。
  • 可信执行环境(Trusted Execution Environment):基于通常由硬件和软件的组合构成,旨在提供一个受保护的执行环境,被称为安全执行环境(Secure Execution Environment)。在这个环境中,数据和代码可以被加密和隔离,从而仅允许授权的应用程序和服务进行访问。TEE 为应用程序提供了一个可信的执行环境,确保它们在一个受保护的容器内运行,不受外部攻击和恶意软件的影响。这种技术确保敏感信息不会遭受未经授权的访问,并为用户和应用程序提供了更高的数据安全性和隐私保护。

隐私计算在许多领域都具有重要的应用,特别是在涉及敏感信息的医疗、金融和个人隐私保护领域。它为数据所有者和数据使用者提供了更高的数据安全性和隐私保护,同时也促进了跨组织和跨界合作,使得共享数据更具可行性和可信度。

接下来以医疗行业中的场景进行阐述和方案介绍。

医疗行业对隐私计算的需求

医疗数据作为医疗卫生领域的重要资产,包含个人隐私信息,涉及安全和隐私等问题,因此医疗相关人员通常不愿意共享医疗数据。根据美国 HIPAA Journal 的数据(附录 2),2009 年至 2020 年期间,全美共有超过 2.68 亿份医疗记录遭到泄露,这一数字占美国人口的比例超过 81.72%。从实际情况来看,大多数医院的不同科室之间并不直接共享信息,同时医院、基层机构、药企、医保等多方数据中心尚未建立合理的信息共享机制。

随着体系建设的要求不断提高,医疗数据的交互利用的重要性日益显著。因此隐私计算再医疗行业的需求日益增长。

医疗行业中隐私计算的场景 – 智能医学影像分析

目前,医疗行业广泛应用隐私计算,主要覆盖四个主要应用领域,包括智慧医疗、医学科研、药物研发和医疗保险。

以智慧医疗中的“智能医学影像分析”为例。现代医学影像管理的需求日益增长,传统的医学影像管理方法已不再适应。因此,无胶片化影像科和数字化医院已经成为现代化医疗发展的必然趋势。

医生在诊断过程中需要手动查看大量影像图片,导致诊断效率低且人力成本高。同时,由于医生经验和知识水平不同,诊断结果可能因人而异。因此,引入现代化的医学影像管理和辅助诊断技术,如人工智能,成为提高诊断效率和准确性的重要途径。在这一过程中,确保原始影像数据不外泄也是需要考虑的重要因素。

医疗科技企业具备创新的技术实力,可以提供人工智能辅助诊断的解决方案、算法和模型。这些相关算法模型作为医疗科技企业的核心竞争力,属于其知识产权。因此,在与医院等医疗机构合作时,必须考虑如何以安全的方式交付,并确保在运行过程中不受到恶意攻击和破解的影响。

基于可信执行环境的医疗图像分析方案

本方案目的在于保证医疗数据不出私域且知识产权不被破解的前提下进行医疗影像分析,从而实现 AI 辅助诊断。使用 Amazon Nitro Enclaves 作为可信执行环境(TEE),配合 Amazon Key Management Service 以及 Amazon EKS 进行构建。

医疗科技企业在交付算法模型到医疗机构前,对其进行加密,此加密必须只能在特定的可信执行环境中方可进行解密。

医疗机构接收到医疗科技的交付程序后,运行在可信执行环境中,并将数据传送到其中进行推理和预测。过程中医疗机构无法嗅探、干预以及侵入运行在可信执行环境中的程序,达到对模型可用而不可见。

逻辑架构图

  1. 医疗科技企业构建人工智能模型用于特定医疗影像的辅助诊断,如脑部肿瘤、肺炎等。
  2. 医疗科技企业使用自有密钥对模型进行加密。此加密只能由唯一密钥进行解密,且该密钥保留在医疗科技企业私域内(如亚马逊云科技账号)。
  3. 医疗科技企业通过将以加密可交付的模型推送给医院的环境中。
  4. 当医院运行来自医疗科技企业的加密模型进行时, 会进入等待模型解密的状态 (首次影响预测请求会触发解密,第 5 步)。解密是需要访问医疗科技企业的密钥,同时请求必须由此模型在安全执行环境中进行。
  5. 当医生首次发起医疗影像预测的请求,原始图片会使用医院的密钥进行加密。同时会触发第 4 步中等待的模型解密作业,后续请求无需重复解密。
  6. 加密后的医疗影像数据将送往安全执行环境进行预测。
  7. 在安全执行环境内对图片进行解密。
  8. 返回预测结果给医生,以实现辅助诊断。

以下以”乳腺癌钼靶图片分类”为例子。

传统情况下医生对乳腺癌钼靶图片的分析需要使用“内侧斜位(Mediolateral Oblique,MLO)视图”和“颅尾”(Cranial Caudal,CC)视图”进行判断,但无论从数量、效率和准确率来说都带来了极大的挑战(样例图片如下,该数据来自于开源公开数据,附录 3)。

L(eft)-CC      L(eft)-MLO

随着人工智能技术的发展,使用深度学习进行乳腺钼靶图片的辅助诊断成为新的提速增效的手段。医疗机构/医生通过”辅助诊断应用”,将钼靶图片加密并发送到安全执行环境(Secure Execution Environment)进行病症预测(安全执行环境中运行了来自技术提供方的加密 AI 模型),得到“良性”或”恶性”的概率作为结果,以实现辅助诊断以及效率提升(约为~20s)。

以下部分从技术角度进行分析。

基于 Amazon Web Services 服务的参考架构

步骤描述:

在模型技术提供方(医疗科技):

  1. 用户通过使用 Amazon Cloud9(或 Amazon EC2)对预测模型和算法进行加密。
  2. 加密过程中使用本方 KMS key 对预测模型进行加密,构建 Enclave Image File(.eif),生成用于运行的 Docker Image 并推送到本方 Amazon Elastic Container Registry(ECR)。
  3. 通过 Amazon ECR 的镜像复制(Replication)功能将本方镜像推送到数据拥有方 Amazon ECR(需要双方提前配置)。

在数据拥有方(医疗机构):

  1. 本方使用并在 EKS 中运行模型技术提供侧同步的镜像。
  2. 医疗诊断方用户使用 Cloud9(或 EC2)对在存在 S3 的原始图片数据进行加密,并存到 S3 中。
  3. 医疗诊断方用户通过使用 WebUI 选择需要进行推理的图片,并发送预测请求。
  4. 推理的图片信息会由 Client Backend 通过 VSock 发送到服务器端(运行在 Nitro Enclave 中)。
  5. 当服务器端首次接收到图像预测请求,会从服务器程序(Server pod)发起一个获取解密模型的请求。该请求通过 VSock 传送到 EC2 Parent Instance, 并发送至位于医疗科技侧的 KMS ,通过验证后(是否由 IRSA 发起、是否由特定 EIF 发起)获得解密模型的密钥并返回至服务器程序(Server pod)解密模型。
  6. 服务器程序(Server pod)解密模型后对加密医疗影像进行解密和推理,使用医疗诊断方的 KMS(访问原理同 8)。
  7. 推理的结果通过 VSock 发送到客户端程序(Client Frontend),并在前端呈现给医疗诊断方用户。

原理剖析

本方案核心原理是 Amazon Nitro Enclaves 与 Amazon KMS 的整合,被加密的推理模型运行在隔离的 Enclaves 实例中,能且仅能在 Enclaves 实例中进行解密。Nitro Enclaves 与 KMS 实现了“Remote Attestation(远程认证)” (下文详细描述),通过限制对 KMS 的访问从而控制推理模型的解密,防止被恶意攻击和破解。对于需要进行推理的数据,采取同样的方式运行在 Enclaves 中并解密,因此保证明文状态仅出现在 Enclaves 内部,从而保证推理数据安全。

其流程图如下:

  1. 用户通过父实例(底层 Amazon EC2 实例)客户端发起数据处理请求。
  2. (2-1)请求会调用 getlAMToken() 函数获取在 EC2 种实用的 IAM Role 凭证(如果是运行在 Amazon EKS 则需要获取对应的 IAM Role for Service Account); (2-2)指定对应数据在 S3 的路径; (2-3)通过调用 KMS 服务对数据进行加密。
  3. 完成数据加密后,通过 VSock 发送凭证并向 Enclaves 请求数据处理(VSock 是一个用于虚拟机和主机之间进行高性能通信的网络协议, 它可以加速虚拟机间的数据传输,提供低延迟和高吞吐量的网络通信,尤其适用于高性能计算、大规模数据处理等对通信性能要求较高的应用场景,参考附录 5)。
  4. (4-1) Nitro Enclave 通过请求内容获得加密的 Data Key;(4-2) 使用凭据和证明(Attestation)并通过 VSock 请求 KMS generate Data Key API 进行 Data Key 的解密。
  5. 获得解密后的 Data Key 并对数据进行解密。
  6. 进行业务逻辑的处理(如 AI 模型推理、联合计算等)。
  7. 将处理后的结果通过 VSock 发送给父实例。
  8. 对处理结果进行加密存储或者展示。

技术提供方使用 KMS 对知识产权资产进行加密操作,并封装打包成文 Nitro Enclave Image(EIF)。每次成功构建 EIF 后,Nitro sdk 都会输出一系列 PCR值。PCR 是 Platform Configuration Registers 的简称,指的是在构建应用过程中使用相关的平台信息(如 Kernel/application 等)生成的测量值,用于实现 Cryptographic Attestation(安全验证),详情参考附录 6。

PCR 值会由于以下操作而变化:

  • 应用代码改动(包括主动改动或者被篡改)
  • 构建 EIF 的操作系统内核的改变(Kernel)

因此 PCR 值可以简单理解为对于当前 EIF 的“不可变的身份认证信息”(后文提及的安全防护也是基于 PCR 值进行)。

技术提供方的 KMS key policy 中,需要增加对于密钥访问的条件,获得对于知识产权解密密钥的条件必须是同时满足:

  • 来自指定的 IAM 角色的请求(本方案为数据拥有方的 IRSA – IAM Role for Service Account)
  • 来自拥有指定 PCR 值的 EIF 请求

KMS Key Policy 整合 PCR 值例子如下图:

{
    "Sid": "Allow use of IRSA",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::<ACCOUNT_ID>:role/privacy-computing-eks-irsa-role"
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
            "StringEqualsIgnoreCase": {
                "kms:RecipientAttestation:PCR0": "<PCR0 from eif output>"
        }
    }
}

因此数据拥有方无法单独使用 IAM 角色在 EIF 外获得解密密钥以进行恶意破解知识产权操作,实现对技术提供方资产保护。

AWS Nitro Enclaves 是亚马逊云科技基于 Nitro 安全芯片系统构建、基于专用硬件虚拟化实现的可信执行环境服务。它包括:

  • Nitro Card:用于实现私有化网络 VPC/EBS 的访问
  • Nitro Secure Chip:集成到主板并提供硬件资源保护的安全芯片
  • Nitro Hypervisor:轻量级虚拟化层,管理内存和 CPU 的分配以及提高裸金属服务器性能

注意:Amazon Nitro Enclaves 属于 C/S 模式(即客户端/服务器端),因此需要构建两个应用来接受(客户端)和处理(服务器端)数据。医疗科技企业构建服务器端,医疗机构构建客户端。

对于 Nitro Enclaves 应用,一般构建服务器端程序有 3 个步骤:

  1. 基于程序构建 Docker Image(最内层核心逻辑应用)。
  2. 使用 nitro-cli 构建 EIF (在可信执行环境中运行的文件,enclaves image file)。
  3. (可选)如果是使用 Amazon EKS 运行,则需要再构建一个触发 EIF 的 Docker Image;如果是 Amazon EC2 运行,则跳过。

医疗科技企业侧

以“乳腺癌分类” (Breast Cancer Classification)为例,其目录结构如下:

医疗科技企业需要在服务器端代码中实现对于加密模型的解密,解密操作需要在对医疗数据推理前完成(首次推理请求会触发此解密)。医疗科技企业使用己方 Amazon KMS key 对推理模型 “ImageOnly__ModeImage_weights.p” 进行加密, 并构建构建 Docker Image 以及 EIF。样例代码如下:

python3 ./encrypt_model.py --kms_arn=${model_kms_key_arn_id}
    
 # Build Docker Image - 1st level
 docker build -t breast-cancer-classifier:latest .

 # Build EIF - 2nd level
 sudo nitro-cli build-enclave --docker-uri breast-cancer-classifier:latest --output-file breast-cancer-classifier.eif

当构建完成后,会输出 PCR 值(参考上文的介绍)。

由于本方案采用 Amazon EKS 的方式进行实现,因此需要构建触发 EIF 的 Docker Image(3rd level),并需要推送至本方 ECR(由于本方案前提是医疗企业与医疗机构的 ECR 已经设置了自动同步,因此 Docker Image 会同步到医疗机构侧)。

docker build -t breast-cancer-classifier:latest_eif -f Dockerfile.eif .

当内含 EIF 的 docker image 在医疗机构侧的 EKS 中运行,会进入等待模型解密的状态。首次推理请求会触发此解密。

医疗机构侧

医疗机构侧需要构建客户端来接收数据处理请求,并发送至 Nitro Enclaves 服务器端。客户端使用医疗机构侧的 KMS 对医疗影像图片(钼靶)进行加密,并触发推理预测请求。

例子如下:

#b - Trigger the classification and model decryption
python3 client.py --filePath ./0_L_CC.png.encrypted

推理预测请求通过 VSock 将数据传送到服务器端,并等待处理结果。代码段如下:

WORKLOAD = {
    "irsa_credential": retrieve_irsa_tokens(),
    "region"         : _region,
    'encrypted_data' : encrypted_file_base64_string,
    'classifier_view': classifier_view
}

# Send data to server
# The port should match the server running in enclave
port = 5000
# Create a vsock socket object and Connect to the server
s = socket.socket(socket.AF_VSOCK, socket.SOCK_STREAM)

s.connect((cid, port))

# receive data from the server
s.send(str.encode(json.dumps(WORKLOAD)))

# Retrieve resposne
response = s.recv(RECEIVE_MSG_QUOTA)  # .decode()

结果输出

当服务器端首次接收到请求,会触发模型解密(解密密钥来自于医疗科技,参考KMS Key policy)。

模型解密后对钼靶图片预测请求进行处理,并得到输出:

在客户端,选择需要进行预测的图片,并点击`Predict`(如下图):

请求会经过 Client 将数据发送到后端运行在 Nitro Enclaves 的模型,等待 10-20 秒,前端显示推理结果(如下):

总结

本方案基于 Amazon Nitro Enclaves 构建可信执行环境,在保护医疗数据不出私域的情况下,保护了医疗知识产权不泄漏,实现基于可信执行环境的医疗影像分析。同时本方案相关技术和设计可以被应用到其他行业场景中,实现多行业场景覆盖,如:

  • 医疗行业:在安全执行环境中进行蛋白质结构分析预测,数据不出私域且保护蛋白质分析预测模型
  • 金融行业:在安全执行环境中进行暗池交易,从而防止因为大单导致市场波动
  • 能源行业:在安全执行环境中使用多方数据进行能源采购、用量预测,实现原始数据无法嗅探
  • 媒体行业:在安全执行环境中对电影片源进行解密、签名和再加密,防止片源在加解密过程中存在真空状态导致外泄

本方案优点在于提供框架和可复用的架构及流程,方便客户定制自己的资产保护和数据处理方案,实现协作方数据不出私域的情况下进行知识产权的安全交付使用。由于 Nitro Enclaves 可对资源(CPU/内存)进行调整,因此同等资源需求的情况下,本方案的成本对比其他 TEE 方案更优(约为 20%)。

常见问题

Q:因为模型最终运行在数据提供方的私有 EKS 中,解密后的模型是否可能存在被盗窃?

A:不会。因为:1)模型解密会存在 Enclaves 隔离环境中,哪怕是执行 kubectl 进入 pod 中,也无法窥探 EIF 中的内容; 2)解密模型存在运行时环境,且 Nitro Enclaves 没有持久化存储,当容器中之运行后,无法获取其解密的文件。

附录

  1. 数字中国发展报告(2022 年)
  2. HIPAA Journal 报告
  3. 乳腺癌分类开源代码
  4. DeepLearning 在乳腺癌钼靶论文
  5. VSock 简介
  6. Nitro Enclaves PCRs

本篇作者

陈伟明

亚马逊云科技金融行业解决方案架构师,拥有超过 10 年的外资银行团队管理、开发和交付经验。专注在金融行业(资本市场、保险、银行)解决方案的构建和实现。曾担任智能金融犯罪风险管理和交易反欺诈平台负责人, 包括机器学习、人工智能、DevOps、云计算和云原生架构设计与实现。

方康

方康,卡内基梅隆大学计算机硕士,现任大中华地区亚马逊医疗 & 生命科学行业解决方案架构师。在加入亚马逊之前就职于华大基因,任职首席云架构师,负责开发和维护基因组学领域云计算平台, 为全球合作伙伴提供基因组学数据管理,转化和分析方案。同时致力于基因组学数据管理与分析,HPC(高性能计算集群)与异构计算,工作流语言,数据转化与压缩和生命科学数据的合规与安全等领域的应用。

熊俊峰

亚马逊云科技行业解决方案架构师,主要领域包括 AI/ML,制造业和医疗健康。曾就职于腾讯三年,负责国家医学影像云平台的产品架构设计和图像处理算法的开发工作。研究方向包括大语言模型和计算机视觉等,以第一作者发表 SCI 和国际会议论文 13 篇,以第一发明人申请发明专利 11 项。

陈博宇

亚马逊云科技行业解决方案架构师,负责能源行业的解决方案和技术支持,并负责助力企业实现可持续发展的方案咨询和架构设计。曾就职于金风科技 5 年,担任算法工程师,负责风力发电机的控制策略和算法的开发工作。