Graviton: Trusted Execution Environments on GPUs

本文介绍了一种名为Graviton的新架构,旨在提高GPU的可信度和数据完整性。通过在GPU和runtime中部署硬件原语,如远程认证、上下文隔离和安全内存管理,作者提出了一种方法来防止恶意操作系统的攻击。尽管没有使用SGX,但Graviton的开源实现展示了在保护GPU计算和数据安全方面的创新思路。
摘要由CSDN通过智能技术生成

作者提出了Graviton:一个可以支持GPU可信执行环境的架构。我们先来看一下GPU的工作原理:
在这里插入图片描述
GPU通过runtime产生的一系列命令进行控制,再由GPU内部的命令处理器获取。
在这里插入图片描述
然而一个恶意的操作系统可以修改命令和数据。导致一个context可以访问另外一个context的内容。

Graviton的目标是计算和数据的可信性和完整性。Graviton的关键概念是重新定义硬件和软件之间的接口。

在这里插入图片描述
首先,Graviton 在GPU中布置了硬件原语:远程认证,上下文隔离,安全任务提交。其次是runtime中布置了:安全内存管理,安全内存复制和任务发布。

如何取实现远程认证? 为了实现GPU的远程认证,作者定义了:1.一个被烧入设备中的根认证密钥(EK)。2.一个用于非对称密钥生成和签名的加密引擎。认证过程:1.GPU产生AK对并且存储私钥。2.GPU用EK签署AK的公共部分,并将它用于设备驱动,反过来发送签名后AK到可信的CA。3.CA使用制造商提供的公共认可密钥存储验证签名,并生成签名的AK证书。4.证书有设备驱动程序存储,并在安全上下文创建期间使用,以向挑战者证明GPU持有并保护私有认证密钥。

如何实现安全的上下文管理? 作者使用新命令扩展了GPU的命令处理器。简要介绍一条命令:CH_CREATE 创建一条新安全通道。runtime通过以下方式验证相应:1.验证AK证书。2.使用嵌入在整数中的公共AK验证引用。3.检查在引用中的公钥是否与UKpub匹配。

任务发布 runtime解密上述CEK并且使用它加密所有发向GPU的命令。命令处理器使用CEK解密。作者使用身份验证加密和通道计数器作为IV来避免命令丢失。

如何实现安全的上下文隔离? Graviton已经保护了主机虚拟结构,代码和数据。CPU的MMIO被禁用。然后它通过命令处理器进行虚拟内存管理,这样确保使用了受保护的内存和独占使用内存的上下文资源。最后为了确保安全的命令提交,Graviton在上下文创建期间使用了会话密钥,仅仅允许runtime的拥有者执行任务。
在这里插入图片描述
为了确保安全的内存复制,他们在TEE中数据是明文,TEE外数据是密文。
在这里插入图片描述
Graviton的系统由开源GPU堆栈实现。该堆栈包括ocelot(实现了CUDA运行时API),gdev(实现了CUDA驱动程序API),以及libdrm和nouveau(实现了用户空间和内核空间的GPU设备驱动程序)。由于gdev的一些限制(例如,无法使用纹理),作者无法使用cuBLAS(NVIDIA的线性代数库)中的某些操作,如矩阵-矩阵乘法(GEMM)和矩阵-向量乘法(GEMV)。相反,作者使用了来自Magma的实现,Magma是一个具有竞争性性能的cuBLAS的开源实现。

值得注意的是,作者的实现目前尚未使用SGX(Intel Software Guard Extensions)来托管用户应用程序和GPU运行时。将该堆栈移植到SGX可以通过使用SGX特定的容器实现,但这超出了本研究的范围。SGX是Intel提供的安全扩展技术,用于保护应用程序和数据免受恶意软件和攻击的影响。作者指出,这一工作中未涉及将系统移植到SGX的具体实现。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值