可信执行环境之AMD内存加密技术概述

admin 2022年12月22日12:54:45评论64 views字数 3193阅读10分38秒阅读模式
可信执行环境之AMD内存加密技术概述


一.  引言

可信执行环境(Trusted Execution Environment,下称TEE)是目前主流隐私计算技术之一,其通过软硬件方法在中央处理器中构建一个安全的区域,保证其内部加载的程序和数据在机密性和完整性上得到保护[1]。基于硬件的TEE使用硬件支持的技术为代码的执行和环境中数据的保护提供了更好的安全性保证。目前主流TEE方案有x86架构的Intel SGX技术、Intel TDX技术、AMD SEV技术及ARM架构的TrustZone技术等[2]。

本文将简单介绍包含AMD SEV所采用的内存加密技术[3],包含安全内存加密(Secure Memory Encryption, SME)和安全加密虚拟化(Secure Encrypted Virtualization, SEV)两个部分。


二.  安全内存加密(SME)

简单来说,SME主要通过一个加密引擎对进出内存的数据进行加解密来实现。AMD在其芯片中配有内存控制器,控制器内包含高性能的AES加解密引擎。如图1所示,向内存中写入数据时,该引擎执行加密,而在从内存中读取数据时,该引擎执行解密。AES所使用的密钥会在每次系统重置时随机生成,存储在专用的硬件寄存器中并由AMD安全处理器(AMD-SP)进行管理,不会被CPU上的任何软件所访问也不会暴露在CPU芯片之外。

可信执行环境之AMD内存加密技术概述

图1  内存加解密示意图

内存页加密的控制是由操作系统或虚拟机管理器的负责页表管理的软件进行控制。其使用物理地址中的第47位,也称C-bit来标记是否加密该页。如图2所示,当C-bit置为1时,表示应加密该页,则对该内存的访问由AES引擎自动进行加密与解密。反之则不进行加解密。

可信执行环境之AMD内存加密技术概述

图2  加解密控制示意图

对于SME的使用,可分为全内存加密与部分内存加密两种。对于全内存加密,即设置所有内存的页表项C-bit为1,便可实现全内存加密,此时可以防止攻击者直接拿走内存模块后提取其内容,同时也可以防止冷启动、内存接口窥探等攻击。对于部分内存加密,其可以选择只加密部分内存区域而不是全部,可以只对敏感数据提供加密保护,相比于全内存加密而言灵活性更高,并且可以为加密与非加密的工作负载提供隔离,降低性能影响。

此外,针对操作系统或虚拟机管理器不支持的情况,SME还支持一种特殊的更简单的模式Transparent SME(TSME)。在此模式下,无论C-bit如何设置,所有内存都是加密的。但是在使用TSME模式时,其他内存加密特性均不可用。

以上便是对安全内存加密技术原理的简单介绍,下面我们将重点介绍安全加密虚拟化技术。


三.  安全加密虚拟化(SEV)

3.1  

技术架构

SEV是AMD-V技术的扩展,其支持使用一个虚拟机管理器控制并运行多台虚拟机。SEV硬件通过ASID标记虚拟机的代码与数据。在虚拟机的整个运行周期中,ASID在内存中保持不变,保证了虚拟机数据能被正确识别并且不会被系统中其他软件访问。当数据写入或读出内存时,则由AES加密引擎使用ASID所关联的密钥对数据进行加解密。如图3所示,每个虚拟机都通过ASID仅与自己的加密密钥相关联,其他虚拟机或虚拟机管理器只能访问加密后的数据,使得虚拟机之间、虚拟机与虚拟机管理器之间具有强隔离性。

可信执行环境之AMD内存加密技术概述

图3  SEV架构


3.2  

内存加密

与SME一样,SEV也是通过标记C-bit来控制页表是否被加密。但在SEV中,虚拟机可以选择其想要私有的数据内存页并通过标准CPU页表完成。对于虚拟机想要保密的内存数据,使用虚拟机的密钥进行加密;而对于与其他虚拟机或虚拟机控制器的共享内存中的共享数据,则使用虚拟机管理器的密钥加密。此时SEV虚拟机通过共享内存进行通信,而将其他内存使用密钥进行加密,保障其机密性。

3.3  

密钥管理

从上面的介绍中可以看出,SEV的安全性依赖于密钥的安全性,若密钥泄露则虚拟机中的加密数据不再安全。为保护密钥安全,AMD-SP中运行的SEV固件提供了一个安全的密钥管理接口来实现。虚拟机管理器使用这个接口来启动虚拟机,并执行正常的虚拟机活动。

为保护虚拟机的安全性,SEV固件需要保证平台的真实性、虚拟机启动的认证和虚拟机数据的保密性。对于平台的认证,可通过其身份密钥来证明。该证明由AMD和平台所有者共同签署。启动认证则是向虚拟机所有者证明启动过程时安全的,SEV固件向虚拟机所有者提供与SEV相关的虚拟机状态的签名,以验证虚拟机是否处于预期状态。详细认证过程如图4所示,用户向云系统提供虚拟机镜像,SEV固件启动虚拟机,并返回固件、内核等的度量值。用户验证度量正确后,向虚拟机提供机密信息来允许虚拟机继续启动。

可信执行环境之AMD内存加密技术概述

图4  认证过程示例

虚拟机的机密性则是通过内存加密密钥的机密性来保证,SEV密钥管理接口不允许内存加密密钥以及其他任何SEV相关状态在未正确认证的情况下从固件中导出,可以防止虚拟机管理器获取密钥并窃取虚拟机中的数据。


四.  SEV应用场景

4.1  

云上应用场景

随着云计算的发展,各行各业对云的使用率不断提高,对云的需求不断增加。然而云基础设施或人员并不总是可信的,多个用户之间的共享硬件同样可能会带来安全问题。而使用SEV则会为云上虚拟机提供更好的安全隔离,且加密内存可以防止云服务商中的恶意分子窃取数据。

4.2 

 安全沙盒

SEV是围绕安全沙盒环境的理念构建的,沙盒像虚拟机一样拥有自己的磁盘和操作系统,在沙盒内运行的软件不受系统上其他软件。因此SEV可以用于创建安全的沙盒执行环境,目前比较典型的应用便是将SEV与Kata容器相结合成为机密容器。由于Kata是通过虚拟化技术实现轻量级沙盒为容器提供隔离性,将其沙盒与SEV相结合便可使容器运行在TEE中,为容器运行提供更高的安全性。


五.  总结

SEV代表了一种新的虚拟化安全范例,与传统计算系统相比,不同级别上执行的代码是隔离的,任何一方都不能访问另一方的资源,为低权限代码提供了安全性。加密虚拟机不仅可以让虚拟机免受物理威胁,还可以免受其他虚拟机甚至是虚拟机管理器本身,适用于不需要完全信任主机的虚拟机管理器和管理员场景。未来我们将继续关注相关技术的研究,我们将在下一篇介绍其他TEE方案。

参考文献

[1]. 《隐私计算白皮书》

[2]. Jauernig P, Sadeghi A R, Stapf E. Trusted execution environments: properties, applications, and challenges[J]. IEEE Security & Privacy, 2020, 18(2): 56-60.

[3]. Kaplan D, Powell J, Woller T. AMD memory encryption[J]. White paper, 2016.


内容编辑:创新研究院  王   拓
 责任编辑:创新研究院  陈佛忠

本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。

关于我们


绿盟科技研究通讯由绿盟科技创新研究院负责运营,绿盟科技创新研究院是绿盟科技的前沿技术研究部门,包括星云实验室、天枢实验室和孵化中心。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。

绿盟科技创新研究院作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。

我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。

可信执行环境之AMD内存加密技术概述

长按上方二维码,即可关注我

原文始发于微信公众号(绿盟科技研究通讯):可信执行环境之AMD内存加密技术概述

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月22日12:54:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   可信执行环境之AMD内存加密技术概述http://cn-sec.com/archives/1473214.html

发表评论

匿名网友 填写信息