财神爷站:绿色安全的手机App下载平台
所在位置:首页 > 新闻资讯 > 什么是机密计算?Rust语言和机密计算是什么关系?

什么是机密计算?Rust语言和机密计算是什么关系?

发布时间:2022-08-04 21:40来源:财神爷站

  云原生时代,Go?语言凭借其原生支持高并发等特性,一跃成为云原生基层设施建设首选语言,荣登各大编程语言排行榜前列,成为用户增长最快的新兴编程语言之一。而相比之下,同样以取代?C/C++为目的被创造出来的另一门新语言?Rust?在很长一段时间里则不温不火,陷入“叫好不叫座”的尴尬境地。

  幸运的是,随着云原生浪潮逐渐进入下半场,企业和用户对数据的安全性有了更高的要求,“可信原生”与“机密计算”等数据安全新概念被业界提出,并吸引了大批软硬件巨头入场布局,也让?Rust?这门注重内存安全的高性能编程语言迎来了绝佳的发展机遇。

  深耕金融、支付相关技术领域的蚂蚁集团是国内外机密计算技术领域的先行者,其开源的?SOFAEnclave?机密计算解决方案被包括微软在内的多家云计算巨头采用,团队输出的相关技术论文也多次在国际顶会发表,受到工业界和学术界的广泛认可。为深入了解这一前沿技术领域,我们邀请到了蚂蚁集团机密计算总监闫守孟,为我们揭开机密计算的神秘面纱。

  什么是机密计算?

  随着云计算的快速发展,越来越多的关键性服务和高价值数据被迁移到了云端,云安全也因此成为学术界和工业界关注的一个焦点。

  机密计算填补了当前云安全的一项空白?——?使用中数据(Data-in-use)的加密。过去通行的做法是对数据在存储中(比如硬盘)和传输中(比如网络)加密,而在使用中(比如内存)解密,以便处理。而机密计算可以保护使用中数据的机密性和完整性。

  也就是说,通过机密计算技术,一些对数据安全性要求极高的传统企业如金融、银行、政企等客户,也可以放心地使用公有云服务。

  目前,多家云计算巨头都在不约而同地推广这项技术:微软已于?2017?年?7?月宣布开始接受?Azure?机密计算的早期试用申请;IBM?于?2017?年?12?月宣布?IBM?云数据保护(Cloud?Data?Guard)的预览版;谷歌也于?2018?年?5?月开源了名为?Asylo?的机密计算框架。

  2019?年?8?月,Linux?基金会宣布联合多家科技巨头组建“机密计算联盟(Confidential?Computing?Consortium,简称?CCC)”,创始成员包括阿里巴巴、Arm、百度、谷歌、IBM、英特尔、微软、红帽、瑞士通以及腾讯。让机密计算技术进入了更多开发者的视野。

  那么,机密计算究竟是如何实现的呢?

  实际上,上述所有云计算巨头在实现机密计算时都离不开一种称为“可信执行环境(TEE)”的技术。

  顾名思义,TEE?提供一种与不可信环境隔离的安全计算环境,正是这种隔离和可信验证机制使得机密计算成为可能。

  TEE?一般是直接基于硬件实现的,比如?Intel?SGX,Intel?TDX,AMD?SEV,ARM?TrustZone,以及?RISC-V?Keystone?等;基于虚拟化技术也可以构造?TEE,比如微软的?VSM,Intel?的?Trusty?for?iKGT?&?ACRN。

  其中,Intel?软件防护拓展(Software?Guard?Extensions,简称?SGX)是目前商用?CPU?中最为先进的?TEE?实现,它提供了一套新的指令集使得用户可以定义称为?Enclave?的安全内存区域。CPU?保证?Enclave?与外界强隔离,并提供内存加密和远程证明机制,从而保护?Enclave?代码和数据的机密性、完整性和可验证性。不同于之前的?TEE?实现,比如?ARM?TrustZone,SGX?每个?APP?都可以有自己独立的?TEE,甚至可以创建多个?TEE,而?TrustZone?是整个系统有一个?TEE;这里也省去了向设备厂商申请将?TA?(可信应用)装入?TEE?的过程。由于?SGX?的先进性,目前云端机密计算领域甚至已公认用?Enclave?这个词来指代?TEE。

  通过机密计算技术,能够解决那些业务数据敏感的用户对云原生平台不信任的问题,也由此引出了“可信原生”的概念,即让云原生基础设施在用户一侧更加可信。

  机密计算应用开发难点

  显然,这一技术的成熟意味着包括金融、政企等业务数据敏感的用户上云成为可能,市场前景广阔。虽然这些听起来很美,但机密计算在实际应用中仍面临很多的挑战。

  首先,Enclave?是一个受限的环境,从编程接口到编程模型都跟开发者熟悉的?Linux?环境有很大不同。

  其次,开发者要花力气学习市面上的多种不同?Enclave?硬件架构。

  再有,目前主流的集群调度系统(如?K8s)还不支持?Enclave,限制了?Enclave?的大规模使用。

  以基于?Intel?SGX?CPU?开发机密计算应用程序为例。

  SGX?应用是一种基于划分的模型:在用户态的(不可信)应用程序(上图红色部分)可以嵌入?SGX?TEE?保护的区域(上图绿色部分),被称为?Enclave。支持?SGX?的?Intel?CPU?保证?Enclave?中的受保护内容是在内存中加密的,并且与外界强隔离。外界的代码如果想进入?Enclave?中执行其中的可信代码必须通过指定的入口点,后者可以实施访问控制和安全检查以保证?Enclave?无法被外界滥用。

  由于?SGX?应用程序是基于这种划分的架构,应用开发者通常需要使用某种?SGX?SDK,比如?Intel?SGX?SDK、Open?Enclave?SDK、?Google?Asylo?或?Apache?Rust?SGX?SDK等。但无论使用上述哪种?SDK,开发者会遭遇下面的开发困境:

  必须将目标应用做二分:开发者需要决定哪些组件应该置于?Enclave?内部,哪些置于?Enclave?外部,以及双方如何通信。对于复杂的应用,确定高效、合理且安全的划分方案本身就是一件颇具挑战的工作,更不要说实施划分所需的工程量。

  被限定在某个编程语言:无论使用上述哪种?SDK?开发,一个开发者都将被限定在该?SDK?所支持的语言,这通常意味着?C/C++(当使用?Intel?SGX?SDK、Open?Enclave?SDK?或?Google?Asylo?时),而无法使用?Java、Python、Go?等更加友好的编程语言。

  只能获得很有限的功能:出于硬件限制和安全考虑,Enclave?中是无法直接访问?Enclave?外的(不可信)OS?的。由于?Enclave?中缺乏?OS?的支持,各种?SDK?只能提供普通不可信环境下的一个很小的功能子集,这使得很多现有的软件库或工具都无法在?Enclave?中运行。

  上述困境使得为?SGX?开发应用成为一件十分痛苦的事,制约了?SGX?和机密计算的普及度和接受度。

  蚂蚁机密计算软件栈?SOFAEnclave

  为了解决这些挑战,蚂蚁开发了?SOFAEnclave?机密计算软件栈,分为如图所示的三个部分:

  Occlum?LibOS

  Occulum?是蚂蚁开源的?TEE?操作系统,也是?CCC?机密计算联盟中第一个由中国公司发起的开源项目。

  Occlum?提供?POSIX?编程接口,支持多种主流语言(C/C++,?Java,?Python,?Go,?Rust?等),支持多种安全文件系统。可以说,Occlum?提供了一个兼容?Linux?的?Enclave?运行环境,使得机密计算可以轻松支持已有的应用,也使得机密应用开发者复用原有开发技能。Occlum?不但在工业界场景中得到了广泛的应用,而且也在系统顶会?ASPLOS?2020?发表了学术论文,代表了机密计算业界的领先水平。

  从架构上来看,Occlum?不但提供基本的类似?Linux?的操作系统能力,而且提供一个类似?Docker?的用户使用接口,比如这里的?Occlum?build?和?Occlum?run?等都跟?docker?的命令类似。

  社区方面,Occlum是阿里巴巴?Inclavare?Containers?的缺省运行时,也在与?Hyperledger?Avalon?等其他社区项目合作。同时,Occlum?已经捐赠给机密计算联盟?CCC,目前是唯一一个来自中国的开源项目。另外,值得一提的是,微软?Azure?Cloud?在去年?9?月的?Microsoft?Ignite?大会上介绍机密计算技术的新进展?时,还公开推荐在?Azure?上基于?Occlum?开发机密计算应用。

  Occlum?开源地址:https://github.com/occlum/occlum

  HyperEnclave

  前面提到,市场上目前有多种?Enclave?硬件平台。这些?Enclave?各有特点,但也给开发者带来了较大的学习负担。作为这些硬件的用户,蚂蚁技术团队其实希望有一个统一的?Enclave?抽象,另外,他们也希望能对?Enclave?的启动和证明有更灵活的控制。

  针对上述问题,蚂蚁机密计算团队提出了机密计算硬件虚拟化技术?HyperEnclave。这是一个统一的?Enclave?平台。作为抽象层,它既能映射到现有的各种?Enclave?硬件实现,也能使用未来的硬件能力,比如?Intel?MKTME/TDX。“它甚至可以支持没有?Enclave?扩展的机器,在这种机器上我们基于虚拟化技术实现了隔离机制?——?我们开发了一个Type?1.5?的?hypervisor?用来创建和管理基于虚拟化的?Enclave。在可信方面,我们基于可信计算技术(如?TPM?等)实现了由用户灵活掌控的信任机制。”

  基于?HyperEnclave,加上?AMD?SEV?或者?Intel?MKTME?等内存加密硬件能力,HyperEnclave?也可以防护物理攻击。有趣的是,HyperEnclave?支持现有的?Enclave?SDK。这意味着用户已有的只能跑在?x86?平台的?Encalve?应用,现在可以运行在?HyperEnclave?支持的任何硬件平台上(包括国产?CPU),极大的缓解了用户?Enclave?代码跨平台移植的困扰,同时使得用户对信任链有更灵活的控制。

  详细看一下这个系统的生命周期各阶段。首先?Linux?系统像往常一样启动。接着,hypervisor?模块开始加载。Hypervisor?加载完毕之后,会把原来的?Linux?host?降级为一个不被信任的?guest。

  这个?Hypevisor?支持创建?Enclave?虚拟机。Enclave?虚拟机支持传统机密计算?SDK?提供的二分式编程模型。Enclave?虚拟机也支持利用?Occlum?将整个应用运行在?Enclave?里面。

  总结一下这个虚拟化技术的特点:

  第一,安全第一的设计原则。TCB?是一个非常小的、可形式化验证的、用内存安全语言?RUST?开发的?hypervisor。

  第二,支持基于?TPM/TXT?的?Enclave?可信启动和远程证明。

  第三,兼容?Linux?已有生态。前面提到这是一个?Type?1.5?Hypervisor,顾名思义这是一个兼具Type?1?&?Type?2?特点的?Hypervisor,更明确地说就是,它?boot?like?type?2,?但?run?like?type?1。这样一来我们可以很好地适应目前主流的?Linux?部署方式。另外,这个?Hypervisor?也可以跟?demoted?Linux?里面的?KVM?很好地配合。

  第四,我们可以比较容易地引入硬件提供的内存加密能力,比如?Intel?MKTME/TDX?或者?AMD?SEV。

  KubeTEE

  前面提到的?Occlum?和?HyperEnclave?都还是针对单个计算节点的技术。但是目前的互联网应用都是基于大规模集群的,尤其是基于?Kubernetes?的。Kubernetes?提供了很多基础的集群管理、调度、和监控能力,但这些能里并不能很好适用到机密计算场景。首先我们需要让Kubernetes?能够认识?Enclave?硬件,将?enclave?暴露给容器,监控?Enclave?资源,并处理Enclave?特有的事务比如远程证明等等。

  闫守孟团队研发的?KubeTEE?就是?Kubernetes?和?Enclave?也就是?TEE?的有机结合。基于KubeTEE,用户可以使用?kubernetes?的工作流程来轻松管理机密计算集群,部署?Enclave?服务,使用?Enclave?中间件等等。

  KubeTEE?也包含一个叫做?AECS?的组件,基于机密计算的远程证明机制,简化集群内?Enclave?的密钥分发和部署过程。

  通过以上三个组件,蚂蚁开源的?SOFAEnclaves?技术栈解决了机密计算目前实际应用中的三大难题。相关技术和理念在工业界和学术界都获得了广泛认可,处于世界领先水平。

  Rust?闪耀机密计算

  我们注意到,在蚂蚁开源的?SOFAEnclaves?软件栈中,Rust?语言扮演了十分重要的角色。其中?Occlum?和?HypeEnclave?两大组件都主要由?Rust?语言开发完成。

  闫守孟告诉我们,作为一门兼顾安全性与高性能的新兴编程语言,Rust?语言在蚂蚁集团内部已经被广泛运用,尤其是他所在的机密计算领域,Rust?语言成为了项目开发的主力语言。

  “我们的东西基本上都是用?Rust?写的。一方面是?Rust?语言生态已经足够成熟,其内存安全等特性是我们非常看重的。此外,Rust?的开发效率也非常高,大大提升了我们团队的生产力。”

  据悉,在蚂蚁机密计算技术团队中,有一位资深的?Rust?布道师?——?Occlum?的核心开发者田洪亮。关于?Rust?语言在蚂蚁内部的推广,这里面还有一个小故事。

  当时,在蚂蚁内部,Java?技术栈是主流,而田洪亮则是?Rust?语言的忠实拥趸,虽然公司允许他用?Rust?开展工作,但知音难觅的他有点小郁闷。不过很快,田洪亮参加了支付宝内部的一个编程比赛,100?名参赛同事里面只有他一个人用?Rust,其他人要么用?Java?要么用?Python,从性能上来说,要比?Rust?慢很多。这一下田洪亮相当于开挂,在这场比赛中“大杀特杀”。

  正是通过这场比赛,Rust?的名声在公司内打响了,有不少同事对?Rust?表示兴趣。于是趁热打铁,田洪亮在公司内分享了关于?Rust?的公开课,还成为阿里云的?Rust?布道师。

  在云计算领域,Rust?语言已经受到越来越多云服务厂商的重视。去年?11?月,AWS?将?Rust?编译器?联合创始人?Felix?Klock?纳入麾下,同时开放了近?120?个?Rust?相关职位,进一步扩充其?Rust?开发团队;今年?2?月,微软也释出招聘信息,宣布组建?Rust?开发人员团队;2?月?9?日,Mozilla?宣布联合?AWS、微软、谷歌等云计算巨头成立?Rust?基金会,将?Rust?语言在云计算领域的地位推向一个全新的高度。

  与此同时,在?Gartner?发布的?2020?年云安全技术成熟度曲线报告中,机密计算被列为?33?种重要技术之一,并预测其在未来?5?-?10?年内将成为最普遍的云原生安全技术。?蒸蒸日上的?Rust?或将伴随着机密计算的兴起迎来一轮新的爆发。

  闫守孟表示,“我们希望?SOFAEnclave?机密计算软件栈能帮助大家降低机密计算的门槛,促进云原生到可信原生的演进。SOFAEnclave?的三个组件中,Occlum、KubeTEE?已经开源,HyperEnclave?也即将开源。希望跟业界加强交流合作!”

  • 热门资讯
  • 最新资讯
  • 下载排行榜
  • 热门排行榜