12月10日,2022中国计算机大会(CNCC2022)可信隐私计算研讨会上,蚂蚁集团主导开源的可信执行环境(TEE)开源操作系统Occlum正式发布v1.0版。该版本与此前版本相比具有更高的稳定性和完备性,在线程调度、网络和存储IO方面最高有5倍的大幅度性能提升。v1.0版还首次上线了蚂蚁集团与英特尔联合研发的Spark大数据分析方案,可帮助Spark用户无缝地迁移至TEE机密计算环境中。此次升级将有力推动TEE机密计算迈向大规模生产应用。本文将介绍Occlum发展历程和技术原理,并详解Occlum v1.0技术亮点。
Occlum是用于多种TEE的内存安全多任务用户态的开源操作系统,可以让应用负载很方便地部署在TEE中,来保证用户隐私数据在整个计算过程中的机密性和完整性。当前Occlum可以支持的TEE包括 Intel SGX和蚂蚁集团自主研发的国产TEE-HyperEnclave。2018年,Occlum科研小组开始了预研和验证。2019年3月,蚂蚁集团在内部孵化了Occlum项目,同年6月蚂蚁集团将Occlum开源在了Github上,9月发布了第一个社区版本。Occlum也在开源社区快速迭代,平均1到2个月就会发布一个社区版本。2020年3月,Occlum首次在计算机系统国际顶会ASPLOS’2020上发表论文——在论文中提出了Occlum是实现在Intel SGX 上的单个Enclave内安全高效的多任务用户态操作系统。正是因为Occlum采用的是在单个Enclave内实现LibOS的方案,使得Occlum无论是在资源占用上,还是运行效率上都优于其他LibOS的实现方案。2021年,为了让Occlum在机密计算社区有更好的发展,蚂蚁集团决定将Occlum捐献给Linux基金会机密计算联盟CCC,Occlum也成为了机密计算联盟社区首个由中国科技公司发起的开源项目。Occlum发展到今天已经历时了4年的研发和打磨,在开源社区上发布了40多个版本,并获得了1000多的Github Star。作为TEE软件基础设施,Occlum已在诸多隐私计算企业和行业客户得到了广泛应用。Occlum是蚂蚁集团隐语可信隐私计算技术栈可信基座的重要构成,保障数据“可用不可见”。Occlum也是阿里巴巴 Inclavare Containers 的缺省运行时,在与 Hyperledger Avalon 等其他社区项目合作。值得一提的是,微软 Azure Cloud在2020年9月的 Microsoft Ignite 大会上介绍机密计算技术的新进展时,还公开推荐在 Azure 上基于 Occlum 开发机密计算应用。为了让Linux原生应用无需修改和编译,无缝地迁移到Enclave中,在Occlum v1.0中已经实现了150多个兼容Linux的系统调用。支持了大多数主流编程语言,包括: C/C++ 、Java、 Python 、Golang 、Rust 、shell脚本等等。同时Occlum开源仓库中提供了许多Linux应用,例如:SQLite TensorFlow、OpenVino、PyTorch、Redis、MySQL、Spark、Flink等是如何运行在Occlum上的Demo演示,以及在K8S上部署可扩展的基于Occlum的安全推理实例的参考实现方案。首先,在易用性上,Occlum的使用方式是类似容器的使用体验。用户通过几个简单命令就可以把应用程序部署到TEE中。第二个特点——高效。Occlum是高性能的多任务系统,支持多进程,它采用了单地址空间架构,因此多个进程共享同一个 Enclave,因此Occlum在TEE里就可以很快地完成进程启动和进程间通信。第三个特点——实用。Occlum支持多种文件系统,比如:加密文件系统、内存文件系统等等,从功能上可以满足应用的各种文件 I/O 需求,并且可以透明的加密应用在运行中需要存储在磁盘上的数据。第四个特点——内存安全。Occlum 是业内第一个用内存安全语言Rust编写的LibOS ,Rust语言是追求内存安全,且不带来额外性能损耗的编程语言。Occlum采用Rust语言编写可以杜绝低级的内存安全错误 ,从而提高Occlum整体内核代码的安全性,在托管安全关键的应用程序时更值得信赖 。3)引入4大核心技术,让运行用户的应用负载更加高效首先,Occlum v1.0提出了以异步为中心的设计思路,重新设计了整个Occlum代码架构,使用了Rust 语言的异步特性,基于Rust轻量级协程和异步运行时在Enclave里实现了高效的线程调度机制,尤其是对于机器学习和分布式编排等大型应用来说可大幅提高计算性能。其次,Occlum v1.0中创新性地引入了Linux 新一代异步I/O操作接口io_uring,并且支持了大部分IO操作(包括网络IO/磁盘IO),利用这一新特性, 再搭配Rust异步运行时,Occlum具有了接近Linux原生的网络IO性能。第三 ,Occlum v1.0吸收了蚂蚁集团自主研发的新一代基于日志结构的可信虚拟块设备,可以使现有主流文件系统具有对磁盘I/O的安全保护能力,安全性高于Linux内核中现有各种文件I/O或磁盘I/O保护方案,同时也高于同类TEE的保护方案 比如:SGX-PFS。由于可信虚拟块设备采用了全新的追加写式的日志结构设计,IO性能也会有较大提升。第四,Occlum v1.0采用了基于按需分配的动态内存管理设计,不仅提高了Enclave物理内存的利用率,并且可以大大缩短应用加载到TEE中的时间。蚂蚁集团研发人员对比了Occlum v1.0和上一个社区版本0.29的性能测试数据。可以看到Occlum v1.0的线程调度性能是上一版本的5倍,当应用线程数量越多时,v1.0的调度性能的优势会越加明显。在网络传输速度和文件IO吞吐量上,与上一个版本相比也有2倍和3倍的性能提升,尤其是网络IO上,在同等的环境下可以接近Linux原生的网络传输速度。4)首次上线了蚂蚁集团与英特尔联合研发的Spark大数据分析方案蚂蚁集团和Intel BigDL团队合作,将Apache Spark分布式大数据处理应用运行在了Occlum中,基于这个能力,蚂蚁集团和Intel团队联合发布了《基于Occlum和BigDL构建端到端的安全分布式Spark大数据分析方案》,这项方案也上线到了Occlum v1.0版本中。与现在业界已有的Spark on SGX的方案对比,本次方案除了支持多种部署模式外,在Spark能力支持上也弥补了上述已有方案的不足。通过在Occlum提供的安全运行环境上,基于BigDL构建了一个分布式的隐私保护机器学习平台(PPML),能够保护端到端的(包括数据输入、数据分析、机器学习、深度学习等各个阶段)的分布式人工智能应用。与传统的隐私计算框架不同,该方案提供了一个可以运行标准大数据应用的环境,希望帮助现有的大数据/分布式应用无缝地迁移到端到端安全的环境中,并且强化每个环节的安全性。通过Spark in Occlum能力,可以让现有的Spark应用,直接运行到TEE环境中,而不用做任何代码修改,并且可以根据数据规模进行横向拓展,从而轻松支持TB级别的数据规模;另一方面,负责完整性的远程证明功能,也被无感的添加到了整个流程中,应用开发者不需要显式的增加远程证明代码,即可通过Occlum和BigDL提供的远程证明功能实现实例的远程证明和校验。该方案已经在微软Azure机密计算博客频道上线,并且该方案也是开源的。未来Occlum会继续深耕在隐私计算领域,积极探索新的技术方向。随着当前TEE硬件架构的发展,为了满足更多在不同运算场景下的安全需求,Occlum将会支持GPU TEE,将CPU 提供的TEE安全能力拓展到GPU上,确保数据可以安全地转移到更强大的计算硬件设备上。为了实现这个目标我们仍然面临着诸多的安全挑战。Occlum也在为明年Intel即将带来的新一代TEE TDX做准备,Occlum计划从用户态操作系统向内核态操作系统演进。同时,Occlum一直倡导与生态伙伴的协作,未来会进一步强化在云端的分布式隐私保护方案的创新与实践 ,积极开展在开源社区上的交流,也欢迎更多的生态伙伴探索技术并开展合作。编辑:陈十九
审核:商密君
大家好,为了更好地促进同业间学术交流,商密君现开启征文活动,只要你对商用密码、网络安全、数据加密等有自己的独到见解和想法,都可以积极向商密君投稿,商密君一定将您的声音传递给更多的人。点击购买《2020-2021中国商用密码产业发展报告》
来源:蚂蚁技术AntTech
注:内容均来源于互联网,版权归作者所有,如有侵权,请联系告知,我们将尽快处理。
还没有评论,来说两句吧...