操作系统加码主动防护:数智化有了“安全底座”

开发者圈子里流行着一个有意思的观点:操作系统每过20年左右,就会出现一次跨越式发展机遇。

上世纪六十年代开始的大型机,到上世纪八十年代的个人计算机,再到本世纪初互联网的崛起,无不和上述观点相吻合:操作系统作为连接软件和硬件的桥梁,不断催生新应用,创造新蓝海。

而正在进行中的数字化、智能化浪潮,应用场景早已呈现出指数级增长的态势,操作系统的“20年周期律”再一次被印证。

和以往有所不同的是,数智化常常被加上“产业”的前缀,承载着生产力跃迁升级、产业深度转型的使命。操作系统作为产业数智化的“底座”,既要有繁荣的生态,更要在安全上交出一份高分答卷。

01 “得安全者得天下”
时间回到1991年,21岁的Linus Torvalds编写出了拥有10000行代码的内核,选择遵循GPL协议和GNU宗旨,将其命名为“GNU/Linux”。

接下来的几年时间里,来自全世界的开发者,对Linus编写的内核代码进行了大量修改和补充,加入了GUI(图形界面)、应用等缺失部分,逐渐形成了一个完善的操作系统,也就是外界所熟知的Linux。

可能对不少消费者而言,对Linux的熟悉度远不如Windows、Android、iOS,但在服务器和数据中心领域,Linux却有着90%以上的市场份额,即使是在 Microsoft Azure上,也有一半以上的安装了Linux虚拟机。

不夸张地说,几乎整个数字世界都运行在Linux上。

为什么对安全最为看重的服务器市场,偏偏钟爱开源的Linux呢?查阅了大量资料后,我们找到了两个答案。

第一个是开放性。

因为Linux是开源的,任何人都可以自由地查看、修改和重新分发其源代码,赋予了Linux高度的灵活性和可定制性,衍生出了基于Linux的发行版操作系统,比如Ubuntu、RedHat、Debian、Centos;国内基于Linux内核的开源操作系统openEuler,以及基于openEuler的商业发行版操作系统银河麒麟、统信UOS、麒麟信安等。

第二个是安全性。

借用《大教堂与集市》作者Eric的说法,“只要眼睛多,bug容易捉”。开源软件汇集了不同领域的开发者,他们带着热情钻研代码,让漏洞更容易被发现。谷歌曾在2022年公布一份调查报告:Linux上的漏洞平均只需25天即可修复,苹果平均用了69天、Google为44天、微软则要三个月左右。

但安全是相对而言的,哪怕开源有着很高的透明度,过去几年时间里,和Linux相关的安全事件仍屡见不鲜。

2017年曝出了名为“Phoenix Talon”的一系列远程执行漏洞,其中一个漏洞为严重级别、三个为高危级别,可导致DOS攻击和远程代码执行;以及2021年轰动一时的红杉漏洞,攻击者可以通过漏洞,在默认安装的Ubuntu、Debian、Fedora、CentOS等主机将权限提升到root权限。

时间来到2024年,操作系统进一步和AI接轨,其中openEuler开源操作系统提出了“OS for AI,AI for OS”的理念,并全面增强了AI能力。

譬如颠覆了传统的命令行交互方式,基于大模型训练出了 EulerCopilot,初步实现代码辅助生成、问题智能分析、辅助运维等功能;通过异构资源统一管理与调度,实现CPU和XPU的深度融合,有效提升AI训练和推理性能。

当操作系统加速向AI演进,怎么消除潜在的安全威胁呢?

02 “从古代战舰到航母”
很长一段时间里,操作系统的安全策略都是“被动防御”。

就像Linux社区里曾普遍认为:“Security bugs are just bugs”,以至于安全防护长期依赖于bug修补。

问题在于,1991年的Linux内核仅有1万行代码,到了6.6版本的内核,代码量早已超过3000万行。巨大的代码量,加上模块之间的复杂交互关系,导致内核的安全漏洞频出,仅2023年就爆出了710个安全漏洞。

即使开源在漏洞发现到修复的效率上有优势,但漏洞产生到漏洞发现平均需要60天时间,漏洞发现到修补又需要20多天的时间,而且52%的补丁并没有真正把漏洞修复。在这样的背景下,主动防御策略逐渐成为开源社区的共识。

一个典型的例子,就是中关村实验室联手openEuler打造的HAOC复式内核,选择在系统的设计中构建安全体系。

由于Linux的宏内核架构是扁平化的,所有模块集中在同一个地址空间,相互之间没有任何隔离,一旦某个模块存在漏洞,可能导致整个内核被攻陷,无疑增加了构建主动防御策略的难度。

中关村实验室提出了复式内核的设计思想,尝试建立系统性的主动防护:

首先,重构了内核的结构。将内核划分为中枢核心层、普通模块层和高风险模块层。

原先的内核被划分到了普通模块层,通过持续随机化进行保护,提升漏洞供给的门槛;最关键的数据移入中枢核心层,比如业表、权限凭证、系统密钥、防控制策略、敏感指令等;将内核扩展、设备驱动划分到高风险模块,并对每个模块进行单独隔离,避免风险扩散;同时对利用硬件实现层与层之间的隔离。

然后,进行关键数据拟态。通过地址布局的持续随机化,阻止攻击者找到关键数据。

复式内核解决了漏洞威胁的横向移动,却也面临着一个棘手挑战:内核中代码交互十分频繁,对开销要求要足够小。中关村实验室梳理了处理器在内存访问、代码调试等硬件特性,巧用这些硬件实现了层级内的开销隔离。最终实现了层次内的低开销隔离,相较于传统开销方案,有着两个数据级的性能优势。

中关村实验室研究员、中国科学院计算技术研究所研究员武成岗,在操作系统大会2024上的主题演讲中打了一个形象比喻:“扁平化的宏内核架构像古代的战舰一样,攻击者很容易完成攻击,而复式内核更像现在的航母,里面有很多舱,有了舱以后,想实施攻击就变得很难。”

正如现代化航母的战斗力,HAOC内核提供了中枢核心、隔离执行保护、系统密钥保护、策略保护、页表保护、凭证保护、内核扩展隔离和驱动隔离在内的安全选项,并且得到了Linux eBPF基金会的高度认可。

03 开源的“中国范式”
2024年6月初,首个AI原生开源操作系统——openEuler 24.03 LTS正式发布,除了智能解决方案的升级,还集成了HAOC内核1.0。

经历了近半年时间的市场检验后,架构式创新带来的新机会和新应用正逐步显现:

比如代码的形式化验证,Linux内核拥有3000万行代码,理论上很难进行形式化验证,复式结构对内核进行划分后,给形式化验证提供了可行性;

再比如复式内核兼具宏内核的性能优势和微内核的安全性,在智能网联车、低空经济、商业航天等领域有着诱人的应用前景。

就在操作系统大会2024上,HAOC内核2.0正式发布,相比HAOC内核1.0实现了多项能力的升级:

1、同时具备X86和ARM两个主流架构的内核攻击防护能力;
2、对页表结构、权限凭证、访问控制策略和密钥进行安全防护,能够阻断常见的内核提权攻击;
3、对高风险驱动进行隔离管控,阻止安全风险扩散到核心内核;
4、相比HAOC内核1.0,HAOC内核2.0性能提升了20%。
对于HAOC内核的未来发展,武成岗给出了一份清晰的路线图:进一步探索复式内核架构的层内安全增强技术、继续探索软硬件协同隔离技术、验证探索高等级的形式化,以及分期分批地推进复式内核成熟技术进入社区,包括复式隔离框架进入openEuler社区、层内增强进入openEuler社区,最终进入主线Linux。

个中原因并不难理解。

内核作为操作系统安全的基础,如果内核被攻破,攻击者可能获得最高级的系统控制权限。积极参与操作系统的开源建设,和全世界的开发者一起推进复式内核的创新和应用,可以说是构筑数智化“安全底座”的不二法门。

几乎是在同一时间,openEuler社区中来自华为的核心贡献者正式成为Linux内核社区的CVE检视成员,直接参与Linux社区CVE检视,将从源头上提高CVE识别质量,随时感知CVE信息,进一步提升 openEuler社区在高危漏洞上的响应能力。

图:Linux 内核社区 CVE 检视团队

无论是复式内核的架构创新,还是深度参与Linux内核漏洞检视,无不向外界释放了这样一个信号——中国开源力量的崛起。

在openEuler社区上,像中关村实验室这样的开发者和组织还有2万多个,他们组成了109个技术兴趣小组、进行了2446次技术决策、194678次代码合入、参与了588个创新项目,极大地促进全球开源社区的繁荣与进步。

全球著名市场调研机构IDC的报告也印证了这一点:2024年中国新增服务器操作系统领域,openEuler的市场份额将达50%。开源五年来,openEuler系累计装机量突破1000万套,单2024年,openEuler的新增装机量将达到500万套。

同时也意味着,中国开发者和组织正在从开源社区的参与者,一步步成为建设者乃至主导者,不断提升在操作系统领域的话语权。

04 写在最后
30多年前,几千名散布在世界各地的开发者,通过在社区中的沟通和协作,鬼斧神工般地造就了一个世界级的操作系统。

30多年后,当世界进入到数智化时代,迫切需要一个“安全底座”的时候,同样有一群开发者默默贡献着自己的力量。不同的是,这一次有了更多的中国面孔,特别是在内核这个核心环节,让世界看到了更多的中国创新和智慧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法-快速排序-Python版详解

原题如下: 给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在 1∼10^9 范围内)&am…

【Apache paimon】-- 7 -- tag 创建与管理

目录 1、前言 2、操作说明 2.1、自动创建与删除 Tag 2.2、手动创建和删除 tag 2.3、回退到指定Tag 2.4、查询 tag 元数据和数据 2.4.1、查询 tag 元数据 2.4.2、查询 tag 数据 2.4.3、情景1:读取指定 tag 的数据 2.4.4、情景2:读取两个 tag 间的增量数据 3、其他配…

C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景

C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景 code review! 参考笔记 C++笔记之unique_ptr转移堆内空间的所有权 文章目录 C++笔记之函数入参传递std::unique_ptr 时使用 std::move的场景一.使用 std::unique_ptr 作为函数参数时的主要场景二.一个完整示例一…

找到最大“葫芦”组合

文章目录 问题描述解题思路分析1. 数据预处理2. 特殊情况处理3. 普通情况计算4. 结果输出 Java代码实现复杂度分析与优化 在经典德州扑克中,“葫芦”是一种较强的牌型。它由五张牌组成,其中三张牌面值相同,另外两张牌面值也相同。本文将探讨一…

strlwr(arr);的模拟实现(c基础)

hi , I am 36 适合对象c语言初学者 strlwr(arr)&#xff1b;函数是把arr数组变为小写字母,并返回arr 链接介绍一下strlwr(arr)&#xff1b;(c基础)-CSDN博客 下面进行My__strlwr(arr);模拟实现 #include<stdio.h> //返回值为arr(地址),于是用指针变量,原数组为字符型…

Hadoop分布式文件系统(一)——HDFS简介

目录 1. HDFS设计目标2. HDFS组件3. HDFS数据复制4. HDFS健壮性4.1 磁盘数据错误&#xff0c;心跳检测和重新复制4.2 集群均衡4.3 数据完整性4.4 元数据磁盘错误4.5 快照 5. HDFS数据组织5.1 数据块存储5.2 流水线复制5.3 文件的删除和恢复 参考 1. HDFS设计目标 1.错误检测和快…

基于UDP和TCP实现回显服务器

目录 一. UDP 回显服务器 1. UDP Echo Server 2. UDP Echo Client 二. TCP 回显服务器 1. TCP Echo Server 2. TCP Echo Client 回显服务器 (Echo Server) 就是客户端发送什么样的请求, 服务器就返回什么样的响应, 没有任何的计算和处理逻辑. 一. UDP 回显服务器 1. UD…

银行卡OCR识别API接口的作用有哪些?

在当今数字化高速发展的时代&#xff0c;各种创新技术不断涌现&#xff0c;为我们的生活带来了极大的便利。其中&#xff0c;银行卡 OCR 识别 API 接口就是一项非常实用的技术&#xff0c;它提高了业务办理的效率&#xff0c;准确性高&#xff0c;便捷性强&#xff0c;安全性高…

STM32完全学习——使用标准库完成PWM输出

一、TIM2初始化 我这里使用的是STM32F407ZGT6这个芯片&#xff0c;我这里使用的是定时器TIM2来完成PWM输出&#xff0c;由于这里没有使用中断&#xff0c;因此不需要初始化NVIC&#xff0c;下面先来进行定时器的相关初始化 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;R…

Qt Qt::UniqueConnection 底层调用

在这里插入图片描述 步骤1&#xff1a; 1&#xff1a;判断槽函数连接方式&#xff0c; 以及信号对象是否有效2&#xff1a; 信号计算格式是否 大于 signal_index 目前调试 signal_index 不太清楚怎末计算的&#xff08;有清楚的帮忙街道&#xff09;3&#xff1a;获取槽函数对…

7-10 解一元二次方程

7-10 解一元二次方程 分数 20 全屏浏览 切换布局 作者 李祥 单位 湖北经济学院 请编写程序&#xff0c;解一元一次方程 ax2bxc0 。 已知一元二次方程的求根公式为&#xff1a; 要求&#xff1a; 若 a0&#xff0c;则为一元一次方程。 若 b0&#xff0c;则方程有唯一解&…

Oracle - 多区间按权重取值逻辑 ,分时区-多层级-取配置方案(三)

本篇紧跟第一篇&#xff0c; 和 第二篇无关 Oracle - 多区间按权重取值逻辑 &#xff0c;分时区-多层级-取配置方案 Oracle - 多区间按权重取值逻辑 &#xff0c;分时区-多层级-取配置方案(二) 先说需求&#xff1a; 某业务配置表&#xff0c;按配置的时间区间及组织层级取方…

prompt

1解释概念 中文指令&#xff1a;请借助费曼学习法&#xff0c;以简单的语言解释[特定概念]是什么&#xff0c;并提供一个例子来说明它如何应用。 Prompt:Please use the Feynman Learning Technique to explain [specific concept] insimple language,and provide an example …

(免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在大学生在线计算机类专业考研学习网站管理的要求下&#xff0c;开发一…

「Mac玩转仓颉内测版32」基础篇12 - Cangjie中的变量操作与类型管理

本篇将深入探讨 Cangjie 编程语言中的变量操作与类型管理&#xff0c;涵盖变量的定义、作用域、类型推断、常量、变量遮蔽、类型转换等方面的知识。通过这些概念的学习&#xff0c;开发者将更好地理解和灵活掌握变量的使用与管理技巧。 关键词 变量定义类型推断常量变量作用域…

Python和R基因组及蛋白质组学和代谢组学

&#x1f335;Python片段 1. 数据处理与清理 基因组病理学的数据通常非常庞大&#xff0c;且可能包括 DNA 或 RNA 测序结果、基因表达数据等。Python 提供了高效的数据处理工具。 工具和库 Pandas: 用于加载、清理和操作数据。Numpy: 用于高效的数值计算。Dask: 用于大规模数…

【华为云函数工作流】python的函数中如何获取请求链接中带的参数

背景 通过调用函数的url&#xff0c;将参数传递给函数执行&#xff0c;函数里如何获取这个参数 过程 下一个简单的demo如下 参考这个链接https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0420.html写一个demo&#xff0c;这个是百度视频云获取token的…

Varjo:垂直起降机混合现实培训解决方案

混合电动垂直起降机&#xff08;VTOL&#xff09;作为一种新型的航空运输机具有超越传统汽车的安全性、与飞机相当的速度以及无与伦比的灵活起降功能。电动垂直起降机能够在建筑顶部、直升机场或是没有跑道的地区起飞或降落&#xff0c;且排放要远远低于由航空汽油驱动的传统飞…

AWTK fscript 中的 大端小端扩展函数

fscript 是 AWTK 内置的脚本引擎&#xff0c;开发者可以在 UI XML 文件中直接嵌入 fscript 脚本&#xff0c;提高开发效率。本文介绍一下 fscript 中的 ** 大端小端扩展函数 ** 1.is_little 判断当前 CPU 是否是小端。 原型 is_little() > bool示例 print(is_little());2…

Mybatis中使用原生sql与参数进行查询

Mybatis中使用原生sql与参数进行查询.md 一、mapper中定义接口二、mapper对应的xml三、使用样例 有时需要使用原生sql和参数进行动态查询&#xff08;比如可能是通过参数或配置的sql或sql片段执行查询&#xff0c;可能需要用到原生sql查询场景&#xff09;&#xff0c;使用方式…