查看原文
其他

SGX-FPGA | CPU-FPGA异构体系结构的可信执行环境



可信执行环境 (trusted execution environment,TEE)是指在设备上一个独立于不可信操作系统而存在的可信的、隔离的、独立的执行环境, 为不可信环境中的隐私数据和敏感计算提供了一个安全而机密的空间, 其安全性通常通过硬件相关的机制来保障 。本文介绍了一篇发表在DAC 2021的论文《SGX-FPGA: Trusted Execution Environment for CPU-FPGA Heterogeneous Architecture》。

1

概述

可信执行环境 (TEE)已经成为一种流行的安全原语,具有最小的可信计算基础和攻击面。然而,现有的基于 CPU  TEE 不支持 FPGA,尽管基于 FPGA 的云计算服务已经快速部署,但存在安全漏洞。

为了解决这一安全漏洞,本文提出了 SGX-FPGA设计方案,这是一种可信的硬件隔离路径,通过在异构 CPU-FPGA 架构中桥接 SGX Enclave FPGA,实现了第一个 FPGA-TEE。此外本文还在真实 CPU-FPGA 硬件上的实验证明了 SGX-FPGA 实现的高安全性和低性能开销。

在本文中,SGX-FPGA  CPU  FPGA 之间构建了一条安全的硬件隔离路径,以保护存储在两个组件和传输中的敏感数据。具体来说是设计了一个安全协议来验证通信双方并保护 CPU  FPGA 之间传输的数据,这将原始 CPU SGX enclave 的安全性扩展到对应的 FPGA enclave,同时利用物理不可克隆功能(PUF)在 FPGA 构建硬件信任根。


2



相关工作

CPU-FPGA 系统中的威胁

CPU对CPU攻击:攻击者可以操纵CPU端的软件堆栈来攻击受害用户应用程序。CPU到FPGA攻击:CPU端攻击者可以篡改CPU和FPGA均可访问的FPGA全局内存中的数据,擅自调用FPGA内核触发故障注入攻击(典型的侧信道攻击,是主动攻击,例如电压毛刺,干预时钟引脚),或者探测PCIe总线上传输的数据。FPGA 到 CPU 攻击:攻击者可以将恶意 IP 注入 FPGA,触发它,然后访问或篡改 CPU 端或 PCIe 总线上的软件数据。FPGA对FPGA的攻击:在FPGA内部,攻击者可以针对FPGA发出硬件物理攻击。本文认为硬件安全社区的FPGA安全研究已经解决了这种威胁模型,因此超出了这项工作的范围。

3



解决方案

SGX-FPGA 

当用户应用程序与 FPGA 通信时,它会通过不受信任的驱动程序、操作系统、管理程序和 PCIe 总线创建到 FPGA 的隔离路径。为了构建隔离路径,用户应用程序首先向 CPU 控制器证明它是合法 enclave 中的可信实体。然后,它使用 EllipticCurve Diffie-Hellman (ECDH) 算法与 CPU 控制器协商加密密钥,并对数据进行加密以防止不受信任方的访问。接下来,CPU 控制器通过向 PUF 发送预选质询并使用预注册质询-响应对 (CRP) 数据库验证其响应来验证 FPGA 的身份。验证完成后,CPU 控制器启动与 PUF 的另一轮通信,PUF 生成第二个加密密钥,在 CPU 控制器和 FPGA 安全监视器之间共享,以保护 CPU  FPGA 之间的双向数据通信。

需要注意的是:用户应用程序和 CPU控制器能够在自己的 enclave 中处理敏感的纯文本数据。FPGA secure monitor 从 CPU 接收加密数据,解密后通过管道传输给 FPGA 内核。这样,通过PCIe总线和全局内存传输的数据始终是加密的。因此,即使主机操作系统或 PCIe 总线受到威胁,也没有对手可以访问纯文本数据。

CPU-FPGA隔离路径建立

SGX-FPGA采用一种证明机制来建立CPU与FPGA之间的相互信任。信任建立的目标是确保一方(即 CPU 或 FPGA)正在与另一方的真实版本进行通信,从而防止攻击者通过以下方式发出CPU到FPGA或FPGA到CPU的攻击放置在CPU应用程序或FPGA IP的恶意副本。

根据 CPU 和 FPGA Enclave是否驻留在同一物理平台上,SGX-FPGA 采用两种证明模式,即本地证明远程证明

1. 本地证明本地证明在同一平台上,多个安全区相互协作之前,一个安全区必须使用英特尔 SGX 报告机制在本地对另一个安全区进行身份验证,以通过应用基于 REPORT  Diffie-Hellman 密钥交换来验证对应方是否在同一平台上运行。

1)首先,B 检索其 MRENCLAVE 值并通过不受信任的通道将其发送到 A。2)A使用EREPORT指令使用B的MRENCLAVE为B生成报告。然后 A 将此报告发回 B。A 还可以在 REPORT 中包含 Diffie-Hellman密钥交换数据,作为将来创建可信通道的用户数据。3)B 收到来自 A 的报告后,B 调用EGETKEY 指令获取报告密钥以验证报告。产生REPORT KEY 后,如果可以使用 REPORT KEY 验证 REPORT,则 B 会确保 A 与 B 位于同一平台上,因为 REPORT KEY 特定于平台。4)然后 B 使用从 A 的报告接收的MRENCLAVE 为 A 创建另一个报告,并将报告发送给 A。5)A 然后也可以执行与步骤 4 相同的操作,验证 B 与 A 位于同一平台上。6)利用报告的用户数据字段,A 和 B 可以使用Diffie-Hellman 密钥交换创建安全通道。信息交换可以通过共享对称密钥进行加密。2. 远程证明两个 enclave 不在同一台物理平台上,用户应用程序和 CPU 控制器可以通过交换和验证从远程证明中获得的证书来建立相互信任远程证明的目标是让硬件实体或硬件和软件的组合获得远程服务提供商的信任,以便服务提供商可以自信地向客户端提供所请求的机密。

1)首先,ISV enclave向远程服务提供商发出初始请求,其中包括平台声称当前是其成员的EPID 组。2)如果服务提供商希望为声称的组的成员提供服务,它可以通过向 IAS请求更新的SigRL(包含同一EPID组已撤销的所有成员的签名)来继续后面的工作。3)然后,服务提供商构造一个质询消息。4)如果飞地支持请求的签名模式,它调用EREPORT指令来创建一个本地可验证的报告,地址是平台的 QE。为了在 enclave 和服务提供商之间建立经过验证的安全通道,可以将新生成的临时公钥添加到报告的用户数据字段中。报告和SP 的质询被发送给 QE。5)QE 调用EGETKEY以获取REPORT KEY并验证报告。如果成功,QEEGETKEY再次调用attestation key来解密平台的远程证明密钥(EPID私钥)。认证密钥先是用来根据签名模式对challenged的basename或者一个随机值签名来生成一个签名的标识符。(如果使用的是非随机的basename,则签名是伪匿名,否则是全匿名的),然后使用认证密钥计算平台身份签名(MRENCLAVE)上的两个知识签名。第一个证明身份签名是由英特尔认证的密钥签署的。第二种是一个不可撤销的证明,它证明用于身份签名的密钥没有在challenged的SigRL中列出。然后使用IAS的公钥生成并加密最终的QUOTE,并将结果发送回应用程序。(QUOTE包含认证enclave的身份、执行模式细节(例如SVN级别)和其他数据)6)enclave 然后将其转发QUOTE给SP进行验证。7)由于QUOTE是加密的,因此只能由英特尔进行验证。因此,服务提供商只需将QUOTE转发给IAS进行验证。8)IAS首先根据QUOTE的身份签名验证其EPID证明,从而检查QUOTE。首先验证这个平台没有在Priv-RL(一个EPID组里的所有被撤销的私钥)这个撤销列表中列出,之后计算撤销列表中每个私钥对Quote 的basename签名,并验证这些签名均不等于Quote的身份签名,从而验证平台未在Priv-RL组中列出。这完成了平台的有效性检查。然后IAS创建一个新的认证验证报告作为对SP的响应。认证验证报告包括平台为认证enclave生成的QUOTE结构。

CPU控制器构建通往 FPGA 的安全路径

基于PUF的CRP认证协议来验证FPGA器件的真实性。特别是,CPU 控制器维护一个预先注册的 CRP 数据库,作为验证 PUF 和 FPGA 组件的基础。认证过程:CPU 控制器从数据库中随机选择一个挑战,并通过 PCIe 总线将其发送到FPGA 安全监视器。然后,FPGA 安全监视器将质询转发给PUF,并将 PUF 响应传输回 CPU 控制器。通过将 PUF 响应与质询/响应数据库中的条目进行比较,CPU 控制器可以确定 FPGA 是否可信。


4



实验结论

1. CPU 到 CPU 攻击SGX 通过创建飞地并将敏感数据与不受信任的组件隔离开来提供防御软件攻击的能力 。2. CPU-to-FPGA Attack:由于SGX-FPGA通过PCIe总线将加密数据发送到全局内存,而加密密钥只在CPU控制器和FPGA安全监视器之间共享,所以只有FPGA安全监视器可以解密 数据并将其传输到FPGA 内核。

整个过程中,FPGA全局内存中没有数据清空。此外,受保护的 FPGA 内核只能通过 FPGA 安全监视器访问,这消除了来自CPU 端的受感染用户应用程序攻击 FPGA 内核的可能性。

3. FPGA-to-CPU 攻击:SGX-FPGA 能够防御 FPGA-to-CPU 攻击,因为用户应用程序仅将敏感数据存储在 enclave 中,并始终在将其导出到不受信任的环境之前对其进行加密。此外,CPU 控制器处理 enclave 中的敏感数据,并仅以加密形式将其发送到FPGA 端。因此,恶意 IP 无法访问敏感数据。此外本文还通过与没有安全保护的基线系统进行比较,评估SGX-FPGA带来的时序开销,同时也评估了由 PUF 和 FPGA 安全监视器引起的 FPGA 端的资源开销,达到比较满意的效果。
本文来源:SecurityLabUJN作者:孔繁星
如果您对可信执行环境感兴趣,欢迎参加本周六我们社区举办的线下沙龙,活动现场会有专家老师分享TEE的相关内容~
活动地点以及时间如下:时间:2023年4月1日(本周六)下午14:00-17:00地点:浙江省杭州市滨江区西兴街道联慧街188号安恒大厦报名方式:扫码报名


END

往期推荐


1.全同态加密知识体系整理(上)
2.联邦学习安全聚合:基于安全多方计算的经典方案3.椭圆曲线密码在多方安全计算中的应用4.隐私求交| Simple, Fast Malicious Multiparty Private Set Intersection


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存