基于多内核的操作系统内生安全技术

描述

【编者的话】2023年8月在北航杭州创新研究院举办了“第五届国产嵌入式操作系统技术与产业发展论坛暨嵌入式系统联谊会主题讨论会(总第29次),会议主题是“面向异构多核智能芯片的混合关键系统研究与应用”,《单片机与嵌入式系统应用》杂志社邀请报告人北京航空航天大学牛建伟教授团队和复旦大学蒋金虎教授团队撰写了两篇论文。

“基于多内核的操作系统内生安全技术”一文,针对万物互联时代设备的智能化、网络化的功能安全与网络安全的各种问题和隐患,提出了一套基于多内核的操作系统内生安全技术方案。“基于混合关键系统的工业机器人操作系统”一文,提出了基于混合关键系统的新型机器人架构设计,可以提高机器人操作系统的实时性、安全性和智能化水平。会议演讲报告公开版本已经发布在嵌入式系统联谊会的官方网站上,阅读原文可以获得。

多核芯片混合关键系统的研究体现了嵌入式系统多学科合作攻关的特点,是大模型和生成式AI风起云涌时代,工业智能系统面临的机遇和挑战,2024年嵌入式系统产业界将会继续努力攻坚克难,期待我们再聚!

0 引言

万物互联,设备越来越多,且智能化、网络化趋势日益明显,成为未来发展的一个必然方向,但同时也为系统安全带来了新的挑战与机遇,功能安全与网络安全的各种问题和隐患也随之而来。操作系统是软件架构的基石,肩负着抽象硬件资源和沟通上层用户应用与下层硬件资源的职能,面临着巨大的安全挑战。因此,操作系统安全的理论和实践至关重要。

传统的网络安全以安全事件驱动的静态被动式安全为主,功能安全则以冗余为主[1]。传统的网络安全包括以下3个发展阶段:以阻止入侵为目的的系统加固阶段、以限制破坏为目的的监测响应阶段、以系统顽存为目的的网络容侵阶段[2]。3个阶段针对不同时代下的网络功能安全问题,但均存在缺陷。系统加固阶段通过明确划分网络边界,利用用户认证、访问控制、网络隔离等手段来加固系统,在保证网络系统正常工作基础上保证信息安全,但这一阶段的技术无法应对系统漏洞等后门攻击手段。监测响应阶段则是通过特征扫描、模式匹配等技术来检测入侵,但此阶段的技术高度依赖检测能力,且无法检测新出现的入侵技术。网络容侵阶段则是通过信息生存技术将入侵影响降到最低,但目前尚无规模化使用案例,且模型的建立依赖大量先验知识,无法应对先验知识中未出现的攻击。

随着数字基础设施逐渐智能化和网络化,网络安全和功能安全日益交织、叠加,演变为内生安全问题。内生安全于2013年由邬江兴院士提出。内生安全是以网络中各类网元设备自身的安全能力为基础,利用系统架构、算法、机制或场景等内部因素获得安全功能或属性,协同配合构建的综合安全体系。内生安全具备先天构建和后天成长两大基本特征[3]。先天构建表明安全需要与系统的设计与建设同步进行,后天成长则要求系统能与自身所处环境交互,其安全能力随环境变化而动态提升[4]。因此,内生安全已被应用于蜜罐[5]、防火墙[6]、交换机[7]、路由器[8]、处理机[9]、Web服务器[10-11]、DNS服务器[12]、云平台[13-14]和网络操作系统[15]等领域,其衍生出的相关技术越发重要,其先天构建和后天成长的特性也为计算机系统提出了新的挑战。

综上,本文从内生安全的角度对操作系统进行分析,讨论操作系统内生安全面临的挑战和机遇。

1 研究现状

操作系统内生安全技术包括两类。一类是面向功能安全的基于冗余容错方法,例如 SpaceX卫星上的三冗余系统、博世公司开发的冗余自动驾驶系统等。另一类是面向网络安全的以移动目标防御(MTD)[16]和拟态架构为基础的内生安全防御技术。目前工业界已在嵌入式系统中大量使用 MTD,如 Morphisec公司已在50多家企业部署了基于 MTD驱动的安全方案。学术界也有大量有关 MTD理论、策略、评估的论文,ACM每年举办专题研讨会。

国内主流的内生安全技术为邬江兴院士提出的基于拟态防御的内生安全[17]。拟态防御假定带来安全问题的漏洞和后门未知且不可避免,拟态防御通过动态异构冗余架构来综合考虑功能安全和网络安全,以条件规避的方法让攻击者无法形成有效攻击[18]。拟态防御已被用于赋能网络弹性工程、典型领域工程应用(如路由交换设备、网络控制系统、工业控制系统、云计算和车联网系统等)、无线系统安全、人工智能系统应用和智能芯片等场景,并在部分系统中进行大规模工业应用[19]。因此,基于拟态架构的内生安全是一种可以从根本上提升操作系统安全防护能力的重要手段。

2 面临的挑战和机遇

操作系统为系统核心软件。一方面,操作系统肩负抽象硬件资源和为应用提供服务的功能,承担沟通上层用户应用与下层硬件资源的服务职能,隐藏硬件的繁琐细节并为用户程序提供易用的标准化接口,是应用程序执行的公共基础,因此有义务构建稳定、安全的执行环境。另一方面,操作系统还承担对硬件资源和应用程序二者的管理职能,既将异构的、复杂的硬件资源纳入统一管理,又负责应用的生命周期和资源分配的管理,是计算机系统的唯一协调者、管理者,因此有义务维护稳定、安全的系统状态。其中安全为操作系统的关键职能之一。

传统操作系统网络安全依赖于对现有攻击和漏洞的经验知识进行被动防御,无法应对未知攻击和漏洞。基于拟态安全机理的动态异构冗余的内生安全机制是当前主要的主动安全防护方法,但如何在操作系统层实现内生安全机制,则面临如下难题:

一是现有的操作系统 (如 Linux、macOS等单内核操作系统)在架构上具有脆弱性、单调性和机械性等特性,导致系统不支持内生安全所需的异构冗余属性。具有脆弱性是因为操作系统安全防护脆弱单薄,微小的错误也可能导致关键功能部件失灵,进而导致系统级的崩溃。通过冗余可以缓解因脆弱性导致的功能安全问题,但目前操作系统缺乏单机级冗余,系统部件几乎均位于系统关键路径之上,任何核心模块被入侵均可能导致系统级的崩溃。当前操作系统缺乏差异化而表现出的单调性特征导致特定系统的差分问题突出,系统安全维护工作无法根除操作系统自身的固有设计缺陷。现有操作系统在时态上表现出高度静态的机械性,这为网络攻击提供了透明的一致视图。当前大量的网络攻击依赖于运行时窥探系统的关键数据,而系统时态的动态变化将有效降低系统被攻击成功的概率。此外,当前功能安全和网络防御手段无法应对攻击逃逸后的场景。因此,需要一种新的操作系统架构来保证系统的异构冗余性。

二是如何在操作系统层构建内生安全的动态异构冗余机制。异构冗余机制要求操作系统具备冗余性、异构性和动态性。冗余性要求操作系统提供应用透明的多个执行环境,操作系统需基于应用程序的单一镜像构建多个执行环境,并在多个执行环境中执行相同程序的实例副本。异构性要求操作系统提供功能等价的异构执行环境,操作系统需支持多个执行环境并存的架构,保证应用程序在异构环境下得到等价的预期输出。动态性则要求操作系统支持执行环境集合的动态迭代。

三是如何在操作系统层设计高效共识机制。异构环境中的同一应用可能会产生不一致的输出,系统需辨析响应差异化的根源。差异化可能来源于外部攻击、异构特性或是冗余执行环境的非一致性,需由操作系统做具体裁决。操作系统需监控收集异构环境的不同关键信息,并基于这些运行时信息和裁决策略 ,藉由表决得到异构间共识。

3 操作系统内生安全设计

操作系统作为核心基础软件 ,处于硬件和应用层之间,负责硬件资源的管理并服务于应用 ,其内生安全的架构直接决定系统层动态异构冗余过程中各模块之间的有效协同。多内核操作系统能同时运行多个异构内核 ,其结构天然符合操作系统内生安全需求 ,多内核操作系统架构如图1所示。

Linux

图1 多内核操作系统架构

Fig.1 Multi kernel operating system architecture

由图 1可知 ,多内核操作系统同时运行多个内核 ,各内核可具备同构属性或异构属性 ,内核间通过高效通信机制协同工作。多内核操作系统以内核为处理场景元素 ,可通过构建动态异构冗余的内核来提供差异化的执行环境 ,是操作系统内生安全的良好载体。

3.1 操作系统内生安全架构

基于多内核操作系统引入内生安全机制后的操作系统内生安全架构如图 2所示。

Linux

图2 操作系统内生安全架构

Fig.2Internal security architecture of the operating system

架构的难点是如何保持各个部分运行过程中的高效协同以及使用过程中的易用。因此 ,需要定义高效好用的服务接口层、内核交互接口层和资源管理层以提供对上易用服务、对内高效协同和对下高效利用的目标。服务接口层研究如何在内核和文件系统进行异构冗余变换后为应用提供简洁易用的接口 ,从而实现应用与系统层的交互和协同。内核间交互层研究为了实现各异构内核间高效的通信 ,需要交互的基本信息及交互接口主要包括通信机制和共识接口。资源管理层研究硬件资源的划分和管理 ,多个内核间的资源相对独立且隔离 ,包括计算、内存和设备资源 ,通过虚拟化技术等将资源在内核间进行划分 ,并支持资源的访问限制定义和管理。

3.2 异构冗余机制

内核是整个软件栈控制路径和特权级的核心管控模块,因此内核级异构冗余是内生安全的核心 ,除了可以保证基础核心模块的安全 ,也可以为顶层应用提供更好的支撑。因此 ,需要通过多维度的控制和数据变换来实现内核异构性 ,结合内核的特点 ,研究各种可变换的维度以及与之特性适配的变换方法、潜在的异构性、开销和易用性。同时 ,也需要结合应用端的内存布局、执行路径等需求进行设计。其系统架构如图 3所示。

Linux

图3 内核异构冗余架构

Fig.3Heterogeneous redundant architecture of kernel

冗余性设计包括多路径执行和内核间隔离。应用需分派到不同内核上多路径执行 ,执行集合中的所有内核承接执行任务并为之提供语义一致的执行环境。外部输入、环境变量、系统配置等信息也被同步复制分派到多个内核上。内核分别独立执行 ,并监控检查各自的用户程序 ,最终多个内核产生与期望一致的输出。此外 ,多个内核间应彼此隔离。以往的系统中 ,应用程序运行在低特权级 ,内核则独占高特权级 ,并统辖系统所有权限。系统通过内核实现应用间的隔离和应用与内核的隔离 ,但未知网络攻击可能以应用为载体对内核发动攻击。为提供内生安全的冗余性要求 ,某个内核的崩溃不应该引起全系统的瓦解 ,即操作系统应具备内核级容错能力。而作为处理场景元素的内核可能具有未知漏洞或后门 ,具备转化为恶意内核的风险。因此 ,系统应限制内核的特权能力 ,防止恶意内核蓄意窥探或攻击其他内核 ,从而影响整个系统的稳定 ,即多内核操作系统应具备内核级保护能力。

异构性设计可从操作系统控制平面和数据平面两个方面展开。操作系统内核控制平面包括系统调用、执行路径和指令异构 ,因此操作系统内核的异构性也将围绕这 3个方面展开。系统调用是内核为应用提供服务的交互接口,直接决定应用可使用的系统服务 ,因此其动态异构对系统安全至关重要。可通过系统调用接口的运行时随机化变换 ,以及对接口语义实现模块的功能变换等设计实现不同内核系统接口的异构性。对于执行路径异构性则可通过应用执行路径进行运行时随机化变换来实现 ,如全局调度顺序、锁获取释放顺序、随机数序列产生结果等。但系统函数随机化面临实现困难、可扩展性差等问题。实现系统函数随机化需要对多内核中每一个内核提供的系统调用进行随机化实现 ,这对在架构中新增或删减内核时均带来不便。其次 ,对于异构内核提供的相似功能 ,其执行路径和执行结果也不一定完全相同 ,因此需要对不同内核的系统调用进行抽象 ,这导致工程量和难度随内核数量增加成指数上升。最后 ,部分内核间存在相似或相同的系统调用 ,如 macOS内核和 Linux内核存在相似系统调用。因此 ,攻击可以针对异构内核间的耦合部分 ,从而导致多内核操作系统无法有效识别入侵。执行路径异构则面临共识困难、实现困难等挑战。识别应用在不同内核间的执行路径来实现内生安全需要高效的共识机制来保证 ,但异构内核本身复杂性和执行路径不一致性会导致共识机制的实现困难。综上 ,内核系统控制平面仅从系统调用和执行路径来实现异构冗余并不能完全满足内生安全需求。因此 ,本文提出指令随机化方案来弥补系统函数随机化、执行路径异构等异构方案设计的缺陷。

实现指令级异构的主要技术为指令随机化 ,在编译时对可执行程序的机器码进行加密操作 ,在执行前再对每条加密过的指令进行解密 ,以此阻止恶意代码的攻击。因此,指令随机化具有天然的异构性 ,符合内生安全对操作系统异构性的需求。此外 ,相比于系统调用的随机化 ,指令随机化能保证在对应用和硬件的透明性基础上 ,在更底层、更细粒度的层面上实现异构性。

Linux

图4 指令异构冗余架构图

Fig.4Instruction heterogeneous redundancy architecture diagram

指令异构冗余架构图如图 4所示 ,从图中可知 ,本文在多内核操作系统的基础上 ,通过动态选取异构内核的指令子集并对子集中的指令进行动态随机化来加密指令 ,最后在执行时通过解析器来解密指令 ,以此实现指令级的异构。

对于内核的数据平面 ,主要包括内存布局以及加载的可执行文件格式。因此 ,对于内核的数据平面的异构性 ,也将主要围绕这两个方面展开。对于内存布局 ,应用的所有运行时数据都维护在程序的地址空间中 ,可对内存地址空间的多目标多粒度随机化 ,例如可执行程序及其共享库的加载基址、用户栈及内核栈偏移、代码段的顺序结构、数据段的栈中顺序、代码和数据在栈中的加密形式等 ,从而通过内核的异构执行机制实现应用执行期间的异构特性。对于可执行文件格式 ,每种操作系统均仅能执行特定的可执行文件格式 ,因而可以通过研究可执行文件格式变换及与之适配的加载器实现对可执行文件异构性的支持。通过上述两点实现内核数据平面的异构特性。综上 ,多内核操作系统的异构冗余机制可从指令异构、内存异构和加载方式异构 3点来实现。

3.3 高效通信和共识机制

内核间通信及共识机制是内生安全防护系统中内核间高效交互和协同的基础。其中 ,内核间通信效率是直接关系到内核间协同效率的根本 ,在单个内核操作系统中 ,进程之间的通信模式和方法丰富 ,是操作系统内核层极为重要的部分。对于跨内核间的进程或模块的通信 ,数据的传输和消息通知需要新的设计以支持上层的通信需求。基于高效内核间通信之上构建的共识机制的效率则是系统高效安全共识的关键 ,内核执行量大导致行为和结果信息量大 ,怎样快速共识是必须解决的问题。内核间通信及共识机制系统架构如图5所示。

Linux

图5 内核间通信和共识机制系统架构 Fig.5Inter kernel communication and consensus architecture

内核间高效通信旨在探究如何在单主机上实现兼顾安全与效率的通信机制。既往的进程间通信或远程过程调用需要高特权级的参与以保证安全隔离 ,故由内核实现并监督管理通信过程。而在多内核架构中 ,内核由通信过程的中介变为主体 ,且均运行在特权模式 ,因此需要实现高特权下的新型通信方式。而现有的远程过程调用手段包括网络通信等方式,不适用于单主机上的通信,应发掘基于内存等片上及片间的高效通信方式。因此,内核间通信既要求充分利用单主机通信的高效,又要求内核间隐私保护,即兼顾共享和隔离。

共识机制研究高效准确的共识机制,以及共识所依赖的请求分发、代理合并以及表决协同等关键技术。由于异构内核迥异的运行逻辑,执行应用时所呈现的特征也各不相同,可能展示差异化的执行结果,如不同的系统调用类型与次数、不同的进程间通信次数等。因此,系统需实现异构的监控组件以收集异构内核特定的运行时信息,同时综合所有内核的响应经由表决得到共识。因此,基于内生安全需求,要求操作系统能容许欺诈的类拜占庭共识算法,通过预设的裁决算法和策略对是否发生随机错误或蓄意攻击达成共识。

4 相关工作

目前工业界的操作系统内生安全工作包括 SpaceX公司的三冗余系统、博世公司的冗余自动驾驶系统等,学术界则集中在移动目标防御 MTD和拟态防御。移动目标防御通过动态或静态排列组合、变形、变换或混淆来转移攻击者攻击。Thompson等人[20]提出在多内核环境下实现移动目标防御。移动目标防御虽然能通过随机性、多样性和动态性技术来为攻击者提供随机且变化的底层系统视图,以放大网络攻击开销,但这些特性不能改变漏洞或后门的逻辑性质,攻击依然可能通过短路或协同等方式来攻破防御措施。操作系统级的拟态防御则是通过动态异构冗余综合考虑功能安全和网络安全。复旦大学[21]于 2023年提出在多内核操作系统上实现动态异构冗余架构,为内生安全的操作系统方案提供了思路。

5 结语

本文针对日益突出的内生安全问题,从操作系统级提出内生安全解决方案。针对目前单内核操作在架构上不支持内生安全异构性、操作系统层构建内生安全的动态异构冗余机制不成熟和操作系统共识机制设计困难等问题,设计了基于多内核的操作系统内生安全架构,并从异构冗余机制、高效通信和共识机制上展开设计方案。随着拟态技术与 AI[22]、IoT、Cloud、Data与 SDN等新型技术深度融合,将逐渐形成“拟态 +”AICDS共生生态。例如,CNN[23]、RNN[24]、GNN[25]、GRU[26]等神经网络算法驱动的人工智能技术,可用于优化拟态多模裁决、态势感知、数据计算等性能,因此,可将 AI用于分析操作系统架构的安全态势不足;操作系统内生安全可用于IoT中的智能驾驶辅助系统(ADAS)、车联网防御系统[27],弥补因物联网[28]连接泛在、数据聚合、平台各异、设备复杂和可靠性存在较大隐患等缺陷[29]。但目前操作系统内生安全的事实性安全性能有待提高,部署成本有待降低,且面临在非协同多模决策下存在攻击逃逸空间、异构度增益与执行体同步互相掣肘、安全与功能难以平衡和现有内生安全组件拟态熵有限等多重挑战[30],与各类技术结合的诸多研究点有待突破。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分