一句话:提出 FlexOS,可在编译/部署时灵活定制 OS 安全与隔离策略并探索安全-性能设计空间。
现代操作系统在设计时固定了安全与隔离策略,混合用户/内核分离等硬件或软件保护机制,部署后若需调整往往要大规模重构。FlexOS 提出一种模块化 LibOS,将 OS 拆分为细粒度组件,可在编译/部署时通过多种硬件保护机制、数据共享策略和软件加固来定制隔离方案;系统还提供设计空间探索技术,帮助用户在安全与性能之间导航。作者实现原型并在 Redis、Nginx、SQLite 上评估:对 Redis 的 80 种配置进行实验,可将设计空间概率性缩减到给定性能预算下最安全的 5 种,且等效配置下性能与固定安全配置的现有方案相当或更优。
At design time, modern operating systems are locked in a specific safety and isolation strategy that mixes one or more hardware/software protection mechanisms (e.g. user/kernel separation); revisiting these choices after deployment requires a major refactoring effort. This rigid approach shows its limits given the wide variety of modern applications' safety/performance requirements, when new hardware isolation mechanisms are rolled out, or when existing ones break. We present FlexOS, a novel OS allowing users to easily specialize the safety and isolation strategy of an OS at compilation/deployment time instead of design time. This modular LibOS is composed of fine-grained components that can be isolated via a range of hardware protection mechanisms with various data sharing strategies and additional software hardening. The OS ships with an exploration technique helping the user navigate the vast safety/performance design space it unlocks. We implement a prototype of the system and demonstrate, for several applications (Redis/Nginx/SQLite), FlexOS' vast configuration space as well as the efficiency of the exploration technique: we evaluate 80 FlexOS configurations for Redis and show how that space can be probabilistically subset to the 5 safest ones under a given performance budget. We also show that, under equivalent configurations, FlexOS performs similarly or better than existing solutions which use fixed safety configurations.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@inproceedings{abs-2112-06566,
title = {FlexOS: towards flexible OS isolation},
author = {Hugo Lefeuvre and Vlad-Andrei Bădoiu and Alexander Jung and Stefan Lucian Teodorescu and Sebastian Rauch and Felipe Huici and Costin Raiciu and Pierre Olivier},
booktitle = {ASPLOS},
year = {2022},
doi = {10.1145/3503222.3507759}
}