功能安全Linux时代来临,聊聊Linux安全研究成果与进展

8个月前 (11-02) 阅读数 422 #科技

随着智能网联汽车行业的发展,Linux操作系统逐渐成为智能汽车核心基础软件的一部分,在智能座舱、智能驾驶等领域广泛应用。Linux系统的内核开源,为开发者提供了强大的灵活性和定制能力,通过快速迭代可以确保系统高效更新与维护,并且从成本和生态方面,相比其他商业化的操作系统,Linux 成本低廉、性能优越,使其成为众多企业开发智能汽车产品时的首选操作系统,它所具备的丰富生态体系也进一步推动了其在智能汽车各领域的广泛应用和发展。

然而,一直以来,Linux操作系统作为一种开源软件,无论是开发流程层面,还是具体软件技术细节层面都不能完全满足汽车功能安全要求,这成为Linux操作系统在智能汽车领域应用的一个重大阻碍,也是智能汽车软件功能安全面临的重大痛点。

尤其在众多国内车企的出海战略规划下,面对海外法律法规对安全的强制要求,带有Linux操作系统的智驾产品难以满足相关条件,很多产品不得不更改技术方案,迁移操作系统,由此不仅增加很多额外的成本与精力投入,而且失去了Linux操作系统的智能汽车产品性能也会有所下降。

即使在国内智能汽车开发与应用中,当对功能安全具有严格要求的时候,Linux操作系统也是无法满足和应对的,但舍弃Linux后系统性能又会有所损失。

因此,一直以来Linux与功能安全似乎成了一对鱼和熊掌不可兼得的矛盾体,Linux操作系统的安全性已成为智能汽车行业安全保障的最大难题。

既然有问题、有痛点,自然也会有办法、有答案。只是解决方案并没有那么容易,所以一直以来有很多人走在探索功能安全Linux的路上,也有很多失败的先驱,更有很多似是而非的安全改造,当然,也有一些脚踏实地的企业聚焦在功能安全Linux的研发方面,已取得一些突破性进展。无论如何,经过这些年、这些企业以及专家学者的探索改进,Linux安全性终于有了一些有价值的研究成果,Linux也有望在2026年左右成为真正满足功能安全的操作系统,功能安全Linux时代终于可能要来了!

基于调研结果和多方了解到的信息,聚焦到安全相关话题,今天和大家聊一聊Linux操作系统面临的安全挑战、功能安全Linux所需实现的安全技术与要求、当前Linux安全研究成果和进展这三方面的内容,相信智能汽车领域的从业者都会翘首期盼功能安全Linux的落地应用,尤其对于功能安全从业者,在应用Linux操作系统的过程中,真的承受了太多的安全质疑,又面对了太多的无解答案。功能安全Linux时代的到来,无疑会给智能汽车行业和产品带来巨大的安全福音。

01 Linux操作系统面临的安全挑战

说到Linux操作系统所面临的安全挑战,我们首先要追溯一下Linux的起源。

1991 年,芬兰程序员Linus Torvalds正在赫尔辛基大学攻读计算机科学博士学位,为了学习操作系统内核开发,为自己的计算机编写了一段操作系统内核代码,类似于Unix的操作系统,并将其命名为Linux,随后将源代码公开发布到互联网,全球各地的程序员逐步参与其中,贡献内容,使得内核功能不断丰富、性能不断优化稳定,Linux 社区也逐渐成为一个庞大的开源社区。

由于Linux这种开源属性,它的代码构成汇聚了世界各地顶级程序员的智慧,使得它的性能卓越,适合在复杂庞大的软件系统中应用。但同时,也是因为它的开源属性,使得它的开发流程没有统一标准,不同的程序员水平不一,编码风格各异,设计开发中思考的全面性无从保证,代码测试层面的充分性也无从考证……从功能安全角度,这些情况都可能带来系统性失效的风险。

此外,Linux在二十世纪九十年代初诞生之际,汽车功能安全还没有问世,就连功能安全母标准IEC61508第一个正式版本也还没有发布,远在七年后才得以推出。所以,Linux操作系统不会带有任何功能安全的基因,并且它的最初应用领域也只是计算机系统,不涉及功能安全问题,所以在Linux技术层面上,更多的是关注功能与性能,而不会过多考虑失效的防护技术和确定性问题。直到近年来,Linux操作系统在智能汽车领域的广泛应用,才迫使Linux需要具备功能安全属性,这就像一个人已经成年后,你再让他去改正那些早已经形成的生活习惯,并且要重新建立一套习惯与价值观,那自然不是一件容易的事。

目前在智能汽车的复杂软件系统中,Linux在底层基础软件平台中承担着重要角色。它遵循 POSIX 标准,提供多种调度策略,具备内存管理、多任务处理和多核处理,支持虚拟化技术和容器技术。Linux能够在智能汽车领域广泛应用,主要因为它有诸多优点是其他操作系统无法完全比拟和替代的。首先,它是开源和免费的操作系统,能够受到对成本极其敏感的汽车行业青睐。并且Linux性能卓越,它能够支持多个用户互不干扰地运行多个程序和任务,共同使用系统资源,这无疑非常适合智能汽车领域的软件运行场景。此外,Linux具有灵活定制功能,丰富的工具和库可以帮助用户根据自身需求灵活制定技术解决方案。

智能汽车发展的初心就是为了保障安全,提供更好的驾乘体验和安全性。随着自动驾驶等级的提升,对安全的要求越发严格。针对智能驾驶相关产品,对操作系统具有高实时、高可靠和高安全性要求。为了保证智能驾驶系统在运行时能够有效监测和处理各种故障及异常情况,快速响应运行场景及环境变化,实时传输传感器信息,及时响应控制命令,正确进行决策和控制,有要求操作系统不仅要能够全面监测任务运行异常情况,并进行相关防护,还要保证任务调度响应的确定性和实时性。因此,应用到智能汽车领域后,Linux被赋予了汽车功能安全的使命。

对于Linux而言,除了需要提供良好的操作系统功能与性能,还需要满足一系列的智能汽车法律法规及标准要求,其中就包含功能安全标准,一般分配给Linux操作系统的功能安全完整性等级是ASILB,必要时还应能够通过第三方安全评估与认证。满足这些要求对于开源的Linux是一个巨大的挑战,几乎相当于重新开发一个宏内核操作系统。

Linux难以满足功能安全目标主要源于以下原因:

  • 无责任主体:作为开源软件,汇聚全球程序员的贡献内容,对于安全性无统一开发目标,也没有主体来承担整体安全责任,这其中可能因为人员能力问题、开发需求目标不清晰而导致Linux操作系统应用在汽车领域会隐含系统性失效风险。
  • 无规范的开发和验证流程:设计开发考虑的全面性和测试验证的充分性无从追溯,无法保证Linux软件的质量,同样也隐藏着较高的系统性失效风险。
  • 无硬实时特性:Linux 操作系统原生内核的调度模块不具备硬实时特性,它的调度策略是基于时间片的抢占式调度,高优先级进程虽可以抢占低优先级进程,但缺乏确定性,并且可能存在优先级反转,从而在执行安全关键任务时缺乏硬实时的保障。并且中断可能也会存在延时,内核中还有一些非抢占式的部分,实时性不足,内存方面在分配与释放等内存管理机制也不是针对实时性任务设计的,所以在技术层面上整体无法保证关键任务的实时性和确定性。
  • 系统复杂:Linux 内核的代码量庞大并不断持续扩展,目前源代码规模已超过 3000 万行,功能安全改造面临巨大工作量。由于巨大软件代码量引入的复杂性,使得Linux的应用开发者难以深入理解代码,对代码本身缺乏全面管控,可能隐藏技术安全问题和系统性失效风险。并且Linux 作为宏内核系统,海量代码都运行在内核态地址空间中,这种情况导致功能安全软件模块无法与其他软件模块进行避免干扰的隔离。

面对功能安全挑战,目前在智能汽车领域应用Linux操作系统时,基本解决方案最主要有三种,一是通过实时补丁来提升系统调度的实时性,。以 PREEMPT_RT 为例,通过对中断处理过程、调度时机和优化内核锁等方式,提高系统的实时响应。二是采用双内核方案提升实时性,即把Linux 内核作为一个普通进程运行在另一个内核上,并增加一个中断控制的仿真机制,在Linux和中断控制器之间,记录开关中断情况。这两种方式虽然实时性有所改善,但是还远远不能说这样就满足了功能安全的要求。三是系统架构中引入虚拟机Hypervisor方案,将Linux操作系统相关任务与其他安全操作系统的相关任务进行隔离,只在Linux上运行非安全相关任务,但是这种情况对于智驾系统应用来说,如果严格划分安全任务和非安全任务,那么能运行在Linux上的任务有限;如果让部分安全任务也运行在Linux上,那也没有真正解决问题。并且这种方案还要引入另外一个满足功能安全要求的操作系统,这样又会增加成本。总之,这两种方案基本都属于治标不治本,能缓解问题严重性,但没有解决问题。

因此,目前使用Linux操作系统的智能汽车软件产品在功能安全方案上常常被比喻成“沙地建高楼”,无论在中间件和应用软件上做了多少功能安全防护,下了多少功能安全的功夫,但是操作系统不满足功能安全始终是最大的硬伤和痛点。这也是汽车行业的痛点,急需突破和解决。

02 功能安全Linux的安全技术与要求

如何让Linux操作系统成为满足ASILB的功能安全Linux呢?整体方案上主要有两种实现路径:

  • 一是把所有代码从流程和技术两方面都改造成符合功能安全标准要求的软件,这种方案最彻底,但也最难实现,主要是工作量与投入成本巨大。
  • 二是开发内核态的功能安全隔离机制,将支持功能安全要求的内容与非功能安全内容进行隔离处理。

Linux是一种宏内核,与微内核相比,它的功能更多,功能模块之间的耦合度也更高。所以要实现真正功能安全Linux,一定是实现功能安全的宏内核,而不仅仅只做到一个功能安全微内核。并且用户态Lib c/c++的功能安全也很重要,这是所有ASIL-B应用所依赖的公共软件。

基于智能汽车应用场景及功能的安全目标分配,操作系统层面会承担很多安全相关需求。功能安全Linux需要满足安全调度、安全通信、安全中断、安全同步、安全的内存管理、安全文件系统、安全启动以及安全驱动等目标。这就要求Linux内核中核心逻辑代码、IPC 通讯代码、内核软件算法库、各种网络通信协议、内存管理代码、文件系统代码、内核初始化内容、驱动框架及各类驱动程等都要达到ASILB的功能安全等级,并且随着智能汽车信息安全强标的推出,功能安全Linux信息安全相关的部分也应足够安全可靠,在权限及信息安全管理软件代码方面也应做到ASILB的功能安全等级。

为了完成ASILB的功能安全操作系统转化,Linux需要具备完善的安全机制。

时间层面的安全机制

从时间层面上,要解决实时性、确定性和超时问题。需要为用户态和内核的关键任务提供硬实时的调度策略,优化CPU资源管理,采用高精度定时器,并能够监控内核关键任务执行超时的情况,发现超时应进行安全处理。

常用的看门狗机制是一种比较经典的安全机制,对增强 Linux 内核时间响应性能也能起到比较重要的作用。看门狗本质是一种计数器,可以在设定时间内被复位。如果系统运行正常,程序会按时“喂狗”;一旦程序出现异常,没有“喂狗”,系统将会复位。

空间层面的安全机制

从空间层面上,在内核态地址空间和用户态地址空间需要进行防护。通过一系列的内存保护机制防止用户态软件模块干扰内核态地址空间,以及用户态和内核态各自内部不同ASIL等级的代码之间的相互干扰。

在 Linux 内核中,虚拟内存机制通过页表来管理物理内存和虚拟内存之间的映射。当进程需要访问特定地址时,CPU 会根据页表将该地址转换为对应的物理内存地址。并且实现用户态和内核态之间的隔离,还有多种机制:

  • 特权级别:操作系统中通过不同级别的权限设置,用于控制程序对系统资源的访问权限。例如区分内核模式和用户模式,确保用户程序无法直接访问内核资源。
  • 系统调用:提供一组接口供用户程序请求内核服务,如文件操作、设备控制等。
  • 权限控制:通过用户权限和组权限设置,限制用户对系统资源的访问。
  • 虚拟文件系统:提供一个统一的文件系统接口,隐藏不同文件系统之间的差异,同时增强安全性。


此外,在运行过程中还要实施内存访问监测、配额检测和堆栈监测等机制,发现异常及时进行安全处理。

其他层面的安全机制

从其他层面上,针对运行异常,需要对内核关键任务进行程序流监控;针对数据内容,需要确保通信数据传输的正确性,也要确保文件系统的完整性,可以采用数据分区、启动镜像检查、数据校验等机制;针对安全启动,应对启动过程进行监控,确保安全合规。有些机制不仅对功能安全有贡献,对信息安全也能起到重要作用。

对于功能安全Linux,全面的故障监测和故障处理机制是必须要添加的,仅靠目前Linux社区的现有的信息安全和软件异常监测机制,还不足以满足功能安全要求,对Linux内核的功能安全提升难以起到显著的效果。因为除了安全技术措施外,软件的功能安全更依赖安全的软件开发过程。安全的开发过程是一种程序上正确和安全的保障,对于大型软件来说流程规范起到的作用非常大。因为开发过程的不安全引入的软件潜在失效是软件系统性失效最主要的来源。

功能安全Linux开发是一项艰巨的任务,对于这么复杂的宏内核,其功能安全开发的难度和成本都是非常高的,例如基于内存着色技术对页表进行二次开发,分别给予内核QM、ASILB软件模块独立的页表。新增功能安全机制的开发成本和维护成本会远高于软件安全开发过程所带来的成本。但是对于智能汽车相关企业来说,掌握功能安全Linux解决方案,包括功能安全的内核、用户态libc和GCC工具链,可以解决车载操作系统受制于国外操作系统的局面,提升自主可靠性和安全性,有效降低单车授权费和版权费成本。所以功能安全Linux的价值不容忽视,功能安全Linux时代来临是历史发展的必然。

03功能安全Linux的研究成果与进展

ELISA研究成果与进展

在功能安全Linux研究发展历程中,最广为人知的项目莫过于ELISA(Enabling Linux In Safety Applications)。2019 年 2 月, Linux 基金会发布启动的开源项目ELISA,成员包括红帽、波音、博世、日产、上汽集团、华为、Arm、 Mobileye、Elektrobit、Wind River 、Mentor等众多主流汽车软件供应商,目标能够通过定义一套通用流程,证明特定的基于 Linux 的系统满足认证所需的ASILB的安全要求。其中,红帽公司提出针对 Linux 内核的功能安全流程,将 ISO 26262-6 的软件单元设计和单元测试进行裁剪,并使用软件模块级别的规范与模块功能测试进行替代。并需要追加必要的安全分析与验证,以确保安全性的同时减少开发资源的投入。


从2019年成立到2021年期间,ELISA项目在行业内呼声很高,但是从2022年开始,声音似乎开始变得薄弱。目前可以搜索到的研究成果进展是在2021 年 6 月,发布了基于Linux 系统的安全案例白皮书,主要是针对基于 Linux 的系统的开发和管理,提供了安全案例的指导。其他可获知的进展就是在继续开发工具和指南,以支持Linux的安全应用。从目前成果来看,ELISA主要侧重在方法论层面的流程改进,前几年确实轰轰烈烈,但近两年又有点平平淡淡,多多少少有点虎头蛇尾的感觉。

红帽公司的研究成果与进展

说到ELISA,就不得不提到其领导角色的红帽公司了。红帽公司在2021年5月宣布了一项计划,旨在为汽车行业推出经过功能安全认证且持续发展的Linux系统RHIVOS。该系统基于红帽企业Linux(RHEL)构建,并结合了操作系统的工作负载编排设计、安全进程隔离以及混合关键工作负载整合等设计理念。

红帽的安全Linux在内核态主要实现不同ASIL等级软件的隔离,即ASILB 和QM 的内核模块隔离操作,内核中增加了功能安全机制监控内核运行状态,在时间和空间层面添加了防干扰的安全机制,并且在通信方面也增加了相应安全机制。在用户态红帽提供了不同ASIL等级的APP专用通信库,以确保QM 的应用不能影响干扰 ASIL-B的应用。并且用户态的应用软件也需要遵循一定的编码规则。

2024 年 6 月,红帽公司宣布其车用操作系统的核心组件 Linux 数学库(libm.so)于已通过 exida 的 ISO 26262 ASIL-B 功能安全认证。网络资料对这一认证过程的描述是“红帽与exida合作,开发并验证了一种新方法,以满足包括ISO 26262在内的多项功能安全标准的流程目标,克服了与复杂现有开源软件(如Linux)相关的挑战”。通过这段描述加上之前红帽在ELISA的建议来看,红帽的优势核心在于流程上进行了删减,并不是完全遵循ISO26262的标准流程,而产品本身的功能安全特性目前公开资料并无详细说明,所以核心组件 Linux 数学库(libm.so)的具体功能特性、安全能力以及对于达成功能安全Linux整体目标的占比暂且还是画问号。

红帽公司一直倡导上游优先(UpStream First),也就是基于开源项目的任何修改都应该优先提交给开源项目本身,然后再包含在自己的产品中。对于这种做法,行业内褒贬声音不同。好的方面在于确保了透明度,建立共同开发迭代的生态系统,避免了专有解决方案;但另一方面也会导致Linux安全方案的固定倾向性,并且也可能会涉及知识产权问题和芯片解决方案定价权的问题。

EB的研究成果与进展

大陆集团子公司Elektrobit(简称 EB)的corbos Linux也是比较受到关注的一款Linux操作系统产品。2024 年 4月 23 日,EB 宣布推出面向功能安全应用的 EB corbos Linux for Safety Applications。

EB corbos Linux for Safety Applications主要是采用安全微内核加Hypervisor的方案,主要采用基于虚拟机监控程序的安全扩展,详见下图,其中微内核及虚拟化管理器已获得北德TUV对 SEooC方面的技术评估,符合ISO 26262 ASILB 和 IEC 61508 SIL2 两项安全标准。


EB的功能安全Linux解决方案本质还是比较保守的微内核改造,其中增加的Hypervisor部分可能会带来性能损失,并且可能会增加移植成本,这个需要在实际应用中加以验证和考虑。

赛福纳斯的研究成果与进展

赛福纳斯(Safenux)是杭州一家科技公司,也是AUTOSEMO 的成员单位,专业从事汽车智能驾驶功能安全操作系统及相关功安全合规服务,核心就是致力于研发功能安全合规的 Linux 内核产品,因为聚焦与专业,所以在功能安全Linux研究上进展很快,成果也比较显著。

在没有调研和了解赛福纳斯成果之前,我对功能安全Linux的实现还是抱着比较悲观的态度,虽然国内外对于功能安全Linux都已经开展了很多工作,并且也有了很多进展和成果,但始终感觉不够突破。要么开发流程上进行了删减,没有严格遵循ISO26262,系统性失效风险依然很大;要么在技术范围上进行了删减,没有完全进行宏内核的功能安全改造。

赛福纳斯的Safenux Linux 内核产品是针对宏内核进行的功能安全开发,全面添加安全机制,并且开发流程上完全遵照ISO26262,凭借这两点,让我们很期待真正的功能安全Linux问世。

2024年10月21日,赛福纳斯对外宣布Safenux Linux实现了内核原生代码功能安全的突破,S01 Kernel已获得德凯颁发的ISO26262 ASILB功能安全产品认证。作为SEooC的S01 Kernel预期将会与Safenux Linux内核中的其他子系统(同样为SEooC)进行集成,并最终形成一个完全具备功能安全完整的Safenux Linux内核。Safenux Linux内核将作为SEooC在智驾操作系统或计算平台中作为宏内核使用,这一目标预计2025至2026年能够得以实现。


赛福纳斯核心内核子系统S01 Kernel是Safenux Linux内核中的一个子系统,包含了系统时钟、系统电源、调度、锁、信号、系统中断、进程管理、权限控制等操作系统内核最基本的功能。


众所周知,各家企业对外宣传往往都会夸大其词。虽然赛福纳斯从目前对外信息展示来看,Safenux Linux是让我们无比期待的真正功能安全Linux,但实际情况是否如此,我还是持怀疑态度。作为安全从业者,我最关心的两个点一是Safenux Linux内核是否是真正的宏内核,二是功能安全上的工作做得是否足够和规范。

昨天正好有机会接触到赛福纳斯内部相关技术人员,我针对疑问详细了解了情况,据内部证实,Safenux Linux确实一个满足功能安全的Linux宏内核,而不是常常被用作功能安全Linux障眼法的微内核。此外,从技术人员展示的资料来看,安全方面也确实做了足够的工作,在每一个技术细节里都做了功能安全的考虑,对于各种失效情况,添加了全面的安全机制进行防护。

这个结果无疑是振奋人心的,期待以赛福纳斯为代表的国内高科技企业,能够引领功能安全Linux时代,期待完整的功能安全Linux落地实现并广泛应用。

除了上面提到的几家比较知名或专注的功能安全Linux开发项目及企业,汽车产业链中还有很多企业也在探索Linux的安全性,例如英伟达THOR 芯片预计会支持 Linux+QNX 版本的 DRIVE OS,其中安全 Linux 叫做 DRIVE OS Linux with Safety Extensions,具有实时补丁、QoS 保障和一些安全扩展特性;风河基于开源 YOCTO 项目,增强可靠性和信息安全支持,提供商用 Linux;英特尔的安全关键 Linux 项目,支持现有Linux 用于安全关键环境;以及国内中兴、零束、斑马智行和一些主机厂也分别进行了Linux操作系统相关的安全方案设计。但是这些都不是原生代码的改进,大多数是从系统方案层面增加虚拟机,在Linux内核增加补丁等方式实现。并且目前这些针对Linux安全研究的成果也没有获得第三方认证机构的证明,所以还不足以用来预测功能安全Linux的落地。

综上所述,从智能汽车行业发展与Linux安全性研究进展来看,虽然进展和成果不一,但功能安全Linux时代确实来临了,国外以红帽、EB为代表,国内以赛福纳斯为代表,从不同的方向上证明了功能安全Linux探索可行性,尤其是赛福纳斯的宏内核原生代码通过ASILB认证,这应该是功能安全Linux的重大突破,也是真正功能安全Linux最希望的实现方式。让我们一起期待2026年功能安全Linux问题彻底解决的那一天,只有功能安全Linux真正实现,智能汽车的安全性才能得到切实保障,我们拭目以待。

版权声明

本文仅作者转发或者创作,不代表旺旺头条立场。
如有侵权请联系站长删除

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门