如何通过TEE保障容器运行安全

admin 2023年12月18日13:42:42评论49 views字数 4421阅读14分44秒阅读模式
如何通过TEE保障容器运行安全


一.  概述

如今,云计算已经成为企业和个人在数字化时代中不可或缺的一部分,云上业务的广泛应用使得数据存储、处理和传输更加便捷高效。然而,随着云上业务规模的不断扩大,用户对于业务上云的安全性需求也在逐渐扩大。由于用户要将其业务托管在云厂商所提供的云平台上,这就需要用户信任云厂商不会访问或窃取用户业务中的敏感程序和数据。一般来说,对于数据存储与数据传输都具有较为通用的保护措施,可以通过对数据本身进行加密以及构建加密通道等方式提供数据存储安全与传输安全,而对于处于运行中的程序与数据的防护则较为困难,可能存在正在运行的数据被窃取或程序被篡改的风险。

TEE,全称为可信执行环境(Trusted Execution EnvironmentTEE[1],是一种可以为程序运行环境提供安全保护的技术。一般TEE是一种由硬件提供并保护的一块隔离的、安全的可信计算环境,TEE外的环境无法获取或篡改TEE中的敏感数据与代码,仅可通过TEE提供的接口对授权内容进行处理。主流TEE技术分别有Intel SGX技术、Intel TDX技术、AMD SEV技术、ARM TrustZone技术等。

在云原生环境中使用TEE技术则可以为用户上云业务提供安全的运行环境。由于TEE可以防范宿主机层面的攻击行为,用户将上云业务运行在TEE中可以有效防止云厂商或针对云厂商的攻击者对用户业务中敏感信息的访问与篡改,在保障用户业务安全性的同时移除用户对云厂商的信任,进一步实现零信任模型。运行于TEE中的容器则可称为机密容器。

本文主要从CNCFCloud Native Computing Foundation)的两个机密容器沙盒项目:Inclavare ContainersConfidential Containers入手,介绍如何通过TEE技术保护容器运行安全,构建机密容器。

二.  Inclavare Containers

Inclavare Containers[2]是由阿里云联合Intel共同打造的首个面向机密计算场景的开源容器运行时项目,并于2021914日成为CNCF官方沙箱项目(图1

如何通过TEE保障容器运行安全

图1. Inclavare Containers项目页面

Inclavare Containers依赖的TEE技术为Intel SGX技术,其基本原理是在Intel原有架构上增加了一组新的指令集和内存访问机制,使得应用程序可以在其地址空间为需要保护的代码和数据设置一个私有的、被保护的区域,一般称这个区域为“enclave”。CPU可以为这个区域的代码和数据提供机密性和完整性保护,免受拥有特殊权限的恶意软件的攻击。Inclavare Containers则是基于该技术,实现了一个容器运行时,称为enclave运行时(enclave runtime),将容器运行在由SGX技术提供的enclave中,其架构设计如图2所示。Inclavare Containers主要组件如下:
  • rune:一个CLI工具,用于根据 OCI 规范在容器中生成和运行 enclave。
  • shim-rune:位于containerd与rune之间,除了提供普通shim的能力外还提供enclave的签名和管理。
  • enclave runtime:其为rune的后端,在enclave内加载和运行受信任且受保护的应用程序。

如何通过TEE保障容器运行安全

图2. Inclavare Containers架构

在机密计算技术中,一般会使用一种叫“远程证明”方式来验证目标程序运行在TEE中,简单来说就是由TEE中的程序基于可信硬件生成一个证明信息,证明信息一般包含可信硬件基于其私有信息对证明信息的签名以防伪造或篡改。由验证者对该信息进行验证,验证者一般为程序的发起者或拥有者,使其信任程序运行在安全环境中。

在机密容器中,也需要通过远程证明来容器工作负载运行在TEE中。如图3所示,机密容器作为证明者,提供远程证明证据;Shelter作为部署在云端的验证者,记录enclave运行时的启动度量,并对机密容器提供的证据进行验证;由于SGX的远程证明协议中,其使用英特尔 EPIDIntel Enhanced Privacy ID)进行身份验证,EPID密钥由一个被称为Quoting EnclaveQE)的特殊enclave创建并管理,无法被enclave外的程序所窃取。目标enclave的证据需由QE进行验证并签名。因此在Inclavare Containers中也需引入Inclavared作为守护进程作为QE,转发机密容器与Shelter之间的流量。最终由认证服务对QE签名的证据进行验证,进而信任容器运行环境,完成远程证明。

如何通过TEE保障容器运行安全

图3. Inclavare Containers远程证明

三.  Confidential Containers

Confidential Containers[3]是一个由阿里云、AMDARMIBM、英特尔、微软、红帽、Rivos等知名软硬件公司参与的开源项目,于202238日成为CNCF官方沙箱项目(图4)。该项目旨在为云原生应用提供TEE技术支持,保障云原生应用的运行时安全。

如何通过TEE保障容器运行安全

图4. Confidential Containers项目页面

Confidential Containers早期工作基于KATA容器项目[4]KATA容器通过引入虚拟化技术,将每个pod运行在一个经过裁剪的、轻量化的虚拟机中,为podpodpod与宿主机之间提供了虚拟化级的隔离。而TEE技术中,AMD SEV技术与Intel TDX技术都是能够提供安全加密虚拟化能力的TEE技术,其基本原理是为虚拟机提供内存加密能力,虚拟机内运行环境则可视为TEE区域,其中SEV使用cpu上的安全处理器来创建并管理虚拟机内存加解密密钥,而TDX则是基于SGX构建一个安全可信区域来达到类似目的。将KATA所用轻量化虚拟机与SEV/TDX对虚拟机提供的安全加密虚拟机相结合,将每个pod运行在受TEE保护的虚拟机中,实现对云原生程序运行时的保护,即为Confidential Containers主要工作思路。其架构设计如图5所示。

如何通过TEE保障容器运行安全

图5. 基于虚拟化的Confidential Containers架构

通常TEE仅是对程序运行环境的保护,而Confidential Containers不仅要保护容器运行环境,其架构设计中还体现了对容器镜像本身机密性的保护。如图5所示,镜像仓库中存有加密后的容器镜像,其解密密钥由密钥管理服务所保管。当容器运行时,搭载容器运行的虚拟机运行代理程序,与程序拥有者侧的密钥代理服务通信,并提供证明信息,证明其运行在受可信硬件保护的TEE环境中。密钥代理服务分别代理程序拥有者的密钥管理服务与验证服务,仅在验证了容器运行环境为TEE后才将容器镜像解密密钥传递给虚拟机内代理程序,最终由虚拟机内代理对镜像进行解密,并挂载运行,完成容器运行。

Confidential Containers旨在打造更为通用的云原生机密计算解决方案,因此其除了上述基于虚拟化的机密容器方案外,也具有一个叫做“enclave-cc”的子项目,基于SGX技术提供机密容器能力,对其我们一般称为基于进程级机密容器,其基本思路与基于虚拟化的思路一致,不同之处在于该方案改由enclave程序代替安全按虚拟机,起到代理、容器管理的作用,其架构如图6所示。

如何通过TEE保障容器运行安全

图6. 基于进程级的Confidential Containers架构

四.  总结与展望

从前文中不难看出,Inclavare Containers目标较为明确,其主要目标是为容器提供机密运行时,而并没有考虑容器镜像本身的安全,技术上也仅依赖于SGX这一TEE技术。而Confidential Containers则是想打造一个更为全面、完整、通用的云原生机密计算体系架构,其不仅在底层支持SEVTDXSGX等多种TEE技术来作为安全底座,更是在其架构中描述了一个完整启动机密容器的流程体系。而从社区活跃度上看,Inclavare Containers已经有两年没有发布新版本,其社区从今年年初也逐渐不活跃,据笔者观察,Inclavare Containers项目中也存在名为“enclave-cc”的分支,因此猜测其已投入Confidential Containers项目中,作为该项目的“enclave-cc”继续发展。而Confidential Containers则宣称其每六周发布一个新版本,截至目前已于20231110日发布v0.8.0版本。由此可见Confidential Containers则是目前最值得关注的机密容器项目。

然而,Confidential Containers依旧处于建设时期,其很多组件仍处于不断变化中,从其每个版本的发布说明中可以看出,部分旧版本组件会被新版本组件所替代,部分组件则会进行重写。此外其在发布说明中也提到了其当前项目存在的局限性。总而言之,机密容器的发展仍处于早期,其可能是未来提高云原生安全的手段之一,是实现零信任云原生环境的一个解决方案,但其距离成熟还有很长的一段路要走。未来我们将继续保持对机密容器项目以及相关技术的关注与研究。

参考文献

[1].https://en.wikipedia.org/wiki/Trusted_execution_environment
[2].https://github.com/inclavare-containers/inclavare-containers
[3].https://github.com/confidential-containers/confidential-containers
[4].https://katacontainers.io/

内容编辑:创新研究院 王   拓
    责任编辑:创新研究院 董炳佑

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

关于我们


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

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

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

如何通过TEE保障容器运行安全

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

原文始发于微信公众号(绿盟科技研究通讯):如何通过TEE保障容器运行安全

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月18日13:42:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何通过TEE保障容器运行安全http://cn-sec.com/archives/2291281.html

发表评论

匿名网友 填写信息