摘要
- 旨在基于最先进的数据中心技术(如资源池和 PCIe 交换)实现跨多个服务器的安全和非敏感计算任务的计算资源动态分配;可以真正支持大规模计算或数据密集型 (CDI) 计算的异构 TEE 设计, 无需任何芯片级更改
- 集中管理服务器机架的所有计算单元,利用 PCIe ExpressFabric 将其加速器分配给同一机架上的服务器节点,以执行非敏感的 CDI 任务,并将它们移回安全区域以响应对机密计算的需求。
- 设计运行一个精简的 TCB 堆栈,用于在安全控制器 (SC) 上进行安全管理,同时将大量软件(例如 AI 运行时、GPU 驱动程序等)留给运行飞地的集成微服务器。代理系欸按可以运行完整的软件堆栈,由 SC 验证和保护,在接触敏感数据之前,只涉及必要的功能,如(解)加密、远程认证、PCIe 结构配置等。HETEE和外界以及不同飞地之间的隔离通过PCIe交换机和代理在物理上实现。
架构设计
设计目标
- 硬件修改少,便于部署
- 小TCB
- 有限攻击面
- 低性能开销
- 威胁模型:软件攻击、硬件攻击、固件、PaaS模型
设计概述
保护平台即服务(PaaS),相比于之前的工作Graviton和HIX,不需要芯片级的更改,将侧信道攻击面降至最低。
如下图:
- 使用 PCIe ExpressFabric 作为机架内的高速、低延迟资源共享网络,将本地计算服务器节点连接到异构计算单元池;
- HETEE Box管理异构单元,将它们动态分配给计算任务,并通过多个模块将它们相互隔离,包括security controlled、proxy node和具有 PCIe 接口的加速器资源;
- 用户支持:提供了一组 API 和一个库,供远程用户使用 TEE 服务,通过远程证明协商共享密钥建立信任,后续消息受到机密性和完整性保护
- Configuration messages:远程用户向 SC 发送配置消息以创建新的 HETEE enclave
- Code messages+ Data messages:AI模型代码和敏感数据
设计挑战
- C1:共享计算资源并保证隔离
- 利用PCIe ExpressFabric将安全区与其他安全区以及不受信任的操作系统进行动态和物理隔离
- C2:减少TCB
- 采用了一种独特的两级隔离策略,SC是唯一受信任的节点,运行一组具有集成安全和管理代码的固件;代理节点运行用于控制加速器和执行AI运行时的繁重软件堆栈。
C1:弹性资源分配和隔离
PCIe交换结构:软件定义,高性能灵活拓扑
- 池安全加速器的弹性分配
- 安全状态的池加速器可以动态分配为安全资源
- 下图a所示,①服务器节点首先将用户的加密请求和数据转发给SC,②SC解密消息并将内容传递给控制安全加速器的代理节点。③通过动态网络配置,我们可以根据计算需求在资源池中分配加速器,实现更好的资源利用率和效率。
- 安全/不安全环境中的安全模式切换
- 动态切换,在不同服务器处理非敏感计算任务时共享计算单元
- HETEE Box通过重新配置PCIe交换机网络动态分配给开箱即用的节点,节点可以直接管理和使用加速器
- 这种情况发生时,加速器会从安全状态变为不安全状态。因此,当设备返回池执行敏感任务时,需要将其恢复到安全状态
C2:分层隔离和TCB简化
采用了一种独特的两级隔离策略,SC是唯一受信任的节点,运行一组具有集成安全和管理代码的固件;代理节点运行用于控制加速器和执行AI运行时的繁重软件堆栈。代理节点位于 TCB 之外,在物理和逻辑上与 SC 分离,但由 SC 控制。
- 在计算任务时,每个代理节点管理一个 enclave 及其所有计算单元,但已被 SC 与外界隔离
- 初始软件堆栈的完整性由 SC 验证,并通过证明向飞地用户(数据所有者)证明
- enclave 的物理隔离减少了与其他 enclave 和不受信主机的资源共享,最大限度减少侧信道攻击面
- 计算完成后,将对节点进行清理,并通过安全重启将分配给安全区的所有计算单元恢复到信任状态
安全控制器
利用CPU+FPGA构建了原型,主要功能如下:
- 安全启动:由FPGA上的测量模块和mCPU的固件代码执行,mCPU负责SC本身的安全性,以及恢复代理节点的可信状态
- 资源分配:根据安全或非安全要求动态配置 PCIe 结构,目的是将加速器分配给计算节点、隔离用于安全区管理的资源、加速器的安全状态高效切换
- 远程认证:认证模块在FPGA芯片内部实现,以支持加密操作(密钥建立、身份验证等),以在远程用户和HETEE盒之间建立信任
- 消息加解密/调度/辅助隔离和控制/身份验证/完整性检查
消息隔离和控制如图: - 在FPGA板上,该板与运行基于固件的SC安全管理的mCPU板分开,减少了不受信任的输入数据
- 机架上不受信任的服务器节点只能访问存储加密消息的硬件队列(即密文数据/代码消息队列和密文配置队列,灰色部分)
- HETEE Box内的代理节点只能访问明文硬件消息队列(即明文数据/代码消息队列)
- 为每个安全区分配一对队列,灰色的加密数据和绿色的明文数据,执行身份验证和完整性检查
代理节点
- 每个 enclave 都在单独的代理节点上运行,任务切换(或 enclave destroy)期间,SC 会强制代理节点重新启动并重置其状态
- 代理节点管理SC动态分配给enclave的加速器,运行简化的 Linux 和用户级软件堆栈
- 代理节点接受SC下发的代码和数据消息,在其本地AI软件栈上运行远端用户编写的AI模型
- 将结果打包成发送到 SC 的结果消息,并最终通过加密通道传递给远程用户
- 一旦代理节点重新启动,SC 就会确保此堆栈的完整性,并且堆栈仅服务于当前的计算任务
- 计算单元和代理节点都运行在同一飞地内,使它们能够高效安全交互
- 代理节点需要具有强大 I/O 能力的 CPU,即使其计算能力相对较弱;实现中选择了微服务器作为代理节点,集成了低端至强E3处理器,省成本和功耗
- 代理节点软件位于TCB外(OS/TensorFlow framework/GPU driver等)
安全分析
- 物理攻击保护:MCU系统和一组传感器
- 软件攻击保护:主机软件可以被攻击者完全控制;PaaS背景代理软件有威胁
- 信任链:背书密钥存储在加密的FPGA比特流,FPGA比特流->SC固件源码->代理CPU固件
- 侧信道:物理隔离以避免共享资源
- TCB分析:
- SC,FPGA加密比特流和mCPU固件
- GPU固件(代理CPU固件由SC验证,不包含在TCB内)
- 防止物理攻击的MCU
性能评估
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论