技术解读|“星绽”操作系统内核开源:采用Rust语言,兼顾性能与安全

科技   2024-10-25 16:03   加拿大  


10月22日,聚焦安全可信底层技术的开源系统软件栈——“星绽”(Asterinas),由中关村实验室、蚂蚁集团、北京大学、南方科技大学等产学研机构联合对外发布,并向全球开发者开源。“星绽”系统软件栈旗下包括星绽OS和星绽机密计算两大项目,分别面向通用执行环境和可信执行环境提供安全原生的系统软件,为云计算、数据可信流通、人工智能等安全攸关的计算场景,构建安全可信的技术底座。


以下是

星绽OS的技术解读


2024年7月19日,数百万台Windows电脑遭遇蓝屏,全球陷入混乱——航班取消,手术被迫中止,新闻广播戛然而止。事后调查显示,系统崩溃源于CrowdStrike公司开发的一个Windows驱动程序中存在内存越界访问的问题。这场危机暴露出C/C++内存安全问题的严重性。如何解决内存安全问题,产业界的已经形成新的共识:Rust正在崛起,成为取代C/C++的系统编程首选语言。


星绽OS是下一代工业级别的通用OS内核,采用了创新的框内核架构,并使用新兴的Rust编程语言开发。它不仅能够兼容Linux的应用程序,还在安全性方面有望大幅领先于Linux和其他现有主流OS。


星绽OS的技术创新


在OS技术领域,一大困扰业界的技术难题是如何兼顾安全和性能。现有主流商用和开源OS,如Windows和Linux,采用的是宏内核(或接近的混合内核)架构,这种架构虽然在性能上表现优越,但由于代码量庞大且用C/C++等内存不安全的语言编写,导致系统频繁暴露于安全漏洞中,其中约有70%都是由内存安全问题引起的。


另一种经典的OS架构是微内核,比如学术界发起的seL4和Google的Zircon。顾名思义,一个基于微内核的OS在最高权限级别只保留了最少的代码,因此这部分代码出现问题的可能性大幅降低,从而更有利于保证整个OS的安全性。但这个提高的安全性是以牺牲性能为代价的:微内核之上的低权限OS组件需要频繁的跨进程通信,从而导致性能下降。



星绽OS的设计团队敏锐地意识到,随着Rust语言的崛起,传统操作系统架构的两难困境有望被打破。他们首创了全新的框内核架构(framekernel),提供了既保证高安全性,又不牺牲性能的解决方案。



框内核架构将整个操作系统内核划分为两部分:特权的“OS框架”和去特权的“OS服务”。OS框架负责将低层次的、非内存内存安全的Rust代码封装为高层次的、内存安全的接口(API),而OS服务则完全使用Rust语言中的安全部分进行开发,提供操作系统的大多数功能。



通过这种设计,星绽OS能够极大限度地减少潜在的内存安全问题,同时保持与宏内核相当的高效性能。因此,我们可以说:框内核 = 宏内核的性能 + 微内核的安全。


为什么选用星绽OS?


星绽OS正是这样一款采用了框内核OS架构的Rust语言的全新OS。作为一款定位工业强度的OS内核,它的设计目标包括:安全可靠、性能卓越、广泛使用、和生态兼容。



星绽OS的设计符合框内核架构的要求,最小化了可能引发内存安全问题的“关键代码”,从而提高了操作系统的安全性和可靠性。如下图所示,在星绽OS过去2年的迭代中,“关键代码”(图中黄色线、TCB)仅是“非关键代码”(图中蓝色线、non-TCB)约30%,这一比例大大低于传统OS(如Linux)或其他采用Rust语言的OS(如Tock、RedLeaf和Theseus等)。


根据学术界之前对Linux和OpenBSD代码演进的实证研究,蓝色线的增长(包含驱动程序)会呈现超线性,而黄色(属于OS核心)是线性(甚至次线性)增长,因此随着星绽OS的继续发展,“关键代码”的比例将进一步降低。这意味着星绽OS更加安全可信。



作为一款全新的OS内核,星绽仍然正在迅速开发和迭代中。目前,星绽支持x86和RISC-V等CPU体系架构,支持超过170个Linux系统调用,可以运行Web服务器(如Nginx)和数据库(如Redis)等常见服务器应用,预计将于2025年在云计算和机密计算等数据中心场景率先应用。


在业界公认的LMbench基准测试上,星绽OS已达到与Linux相当的性能水平,平均达到了1.05(数值表示相对于Linux的性能,大于1.0表示星绽优,小于1.0表示星绽劣)。需要指出的是,星绽OS远未达到Linux的功能丰富度和成熟度,因此性能优于Linux的部分原因是星绽相对于Linux简化了部分功能。即便如此,从该基准测试结果可以看出,星绽OS并未因提升安全性而牺牲性能。



星绽OS完全开源免费,欢迎访问代码库:

https://github.com/asterinas/asterinas


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章