基于分级安全的OpenHarmony架构设计

news2024/9/22 13:39:19

本文转载自 OpenHarmony TSC 官方微信公众号峰会回顾第1期 | 基于分级安全的OpenHarmony架构设计

演讲嘉宾 | 付天福

回顾整理 | 廖   涛

排版校对 | 李萍萍

嘉宾简介

付天福,OpenHarmony技术指导委员会安全及机密计算TSG负责人,华为公司科学家委员会副首席科学家,终端BG/车BU首席安全架构师,安全SEG Leader。主要负责HarmonyOS/OpenHarmony操作系统安全架构设计、终端芯片安全架构、安全芯片、可信计算、移动应用生态治理架构、数据防泄漏技术、基于大数据的网络安全和应用安全检测技术等研究和产品设计。

文章内容来源

第一届开放原子开源基金会OpenHarmony技术峰会——安全及机密计算分论坛

视频回顾

峰会回顾第1期 | 基于分级安全的OpenHarmony架构设计——付天福

正 文 内 容

OpenHarmony是一个使能千行百业的操作系统,它是如何在数据的全生命周期里,基于分类分级的方式保护消费者的个人隐私和企业的核心数据资产不泄漏?又是如何在分布式互联的泛在系统里,避免一个子系统被攻陷后导致整体沦陷的问题?华为可信领域副首席科学家付天福在第一届OpenHarmony技术峰会上,从系统的体系架构层面给出了他的思路。

01分级安全的架构

付天福首先介绍了OpenHarmony分级安全架构设计的初衷和相关概念。为什么选择分级安全系统理论作为OpenHarmony安全架构的核心?OpenHarmony从使能一个灯泡、一个插座,到手机、平板,以及其他智能家居设备,如智慧屏、路由器、存储等;再到赋能工业互联网,如为煤矿里面的采煤机,交通里面的码头、港口等控制设备提供基础的操作系统软件。如果要把上述差异巨大的各类设备组合形成各自的超级终端,从追求极致安全的角度来看当然可以要求所有设备使用最可靠的安全芯片和算法,但所需成本是无法接受的。因此,对于一个由安全能力差异巨大多个设备组成的分布式系统来说,存在两个大的风险:一是机密的数据在分布式系统中处理可能会泄露,分布式系统中的弱安全设备很容易被攻陷成为肉鸡跳板来窃取数据,机密数据在超级终端中流转时也很可能会从保护妥善的强安全设备不慎流入弱安全设备从而造成泄密;二是控制指令的劫持仿冒,在工业互联网分布式互联的场景下,当一个很弱的设备被劫持后,可能会被用于伪造身份发出控制指令,或者对控制指令进行篡改,从而对整体控制网络造成不可预期的结果。

为了应对以上的两种典型的数据泄密和控制失控的风险,OpenHarmony选择了分级安全的架构设计。分级安全架构要解决两个最核心的问题:一是数据防泄露,必须从加密、隔离、身份认证以及访问控制上,加强对机密数据的访问主体进行严格控制;二是控制流可信,必须解决控制流的仿冒、劫持、篡改等风险,确保低安全等级的设备无法向高安全等级设备发出高危指令,从而避免系统失控。

OpenHarmony的两个核心的架构,抽象成信息安全领域的访问控制模型,就是为了防范数据泄密的Bell Lapadula模型(简称BLP模型)和防止系统完整性破坏的Biba模型(控制流指令不可信造成失控也是一种系统功能完整性的破坏)。

BLP模型核心规则Biba模型核心规则

主体访问客体的访问控制模型,用通俗的语言可以理解成,正确的人(主体,包括自然人、应用程序、发起控制的设备等),在正确的设备(执行访问控制的环境)上,正确的使用数据(客体,包括文件、数据、资源、被控系统等)。

1.1►►正确的人(主体)

如何保证在操作系统里提供便捷的对于人、程序以及设备等的认证是可信的呢?这就需要建立一套分类分级的机制。基于分级的理论,对单因子、多因子以及多种不同的认证形态,例如人、程序、设备等进行分级认证,认证后的可信等级越高,信任度越高,则对其做授信时就可以让其有权做更多更危险的操作。

从身份认证理论来说,单一因子的安全性不如多个因子,同一个因子在不同等级的安全环境认证,安全等级也不同,OpenHarmony制定了一套严格的多因子分级认证信任等级评估规范,来决策对主体的身份认证等级。

1.2►►正确的设备(环境)

如何保证在全场景中每一台设备的身份以及能力是可信的呢?基于分级要求,将设备安全架构分为完整性保护、漏洞防利用、隔离与访问控制、可信执行环境等几大部分,再分别对各部分进行可信分级。例如:一台设备的完整性越强,则其可信程度越高;设备的隔离机制、软件和硬件等漏洞防利用技术不同,其可信程度也不同。当一台设备完成了身份认证和可信等级认证后,就可以在特定系统里承担相应的职责,操作系统也可以根据每一台设备的身份认证和可信等级,来拒绝其承担超越能力范围的操作,例如限制其发布某敏感程度的指令和数据。

1.3►►正确的数据(客体)

如何保证数据是合法、合规的,且是按照数据主权拥有者所期望的方式被处理的呢?需要在数据的全生命周期中,由操作系统底层为应用程序赋能。例如在数据的生产阶段,如果让应用程序去自主实现数据分级是很困难的。尽管可以通过程序去设定每个数据的级别是多少,加密程度是什么,其密钥要保存在何处,密钥的访问控制机制如何设计等,但可能导致在生态环境下不可控:缺乏经验的设计人员在设计实现时可能存在巨大的安全隐患,且工作量是巨大的。

OpenHarmony提供了从数据的生产、存储、传输、使用、销毁的整个端到端流程的通用机制。例如,在数据产生时,通过设定数据等级,底层就可以基于不同的等级,自动化完成加密,开发者无需考虑其加密环境、算法、策略、密钥管理等繁琐的事情;在数据使用阶段,只要提前设定数据的使用策略,操作系统就可以帮助完成策略的执行,例如设定该数据不能打印、不能传输、不能拷贝等。这样就极大降低了数据在端到端使用过程中的泄露风险。

02OpenHarmony系统权限及访问控制架构

操作系统的分级安全架构,落实到对程序的分级管控,如何缩小TCB可信基的规模,如何实现应用程序的权限最小化?付天福介绍了OpenHarmony系统权限及访问控制架构相关的原理。对人的认证,例如支持多模态、多因子的认证在前面的版本都已经实现了,但是作为一个自然人在处理数据时,最终还是要通过应用程序进行,即必须是一段应用程序逻辑才能处理数据。如果程序的权限等级不严格区分,这个处理数据的主体就不可信,很可能一个本来应该低级别权限的应用程序处理数据,但是因为不恰当的被高权限的应用访问,导致数据泄露。因此,应用程序也需要进行分级管理。OpenHarmony将会在最新的版本发布时开源这部分的设计。

2.1►►分级策略

在Linux系统中,若一个进程被设置为uid=0(即赋予root权限),则该进程就获得了系统最高特权,可以畅通无阻地进行各种危险操作。在安卓系统中,不仅仅有Root权限的最高特权进程,还存在其他拥有特权的System进程(uid=1000)。比如无需用户授权就可以任意调取麦克风、摄像头、地理位置等权限,这就导致了许多攻击者会花费大量心思将其恶意代码注入到System进程中,或修改自身uid伪装成System进程。这就形成了在安卓体系里的两个相对脆弱的可信基(TCB, Trusted Computing Base),对系统造成巨大的安全风险。

另外,对于签名的不当使用也存在同类问题。当一个应用程序拥有系统平台签名后,它就拥有了类似于安卓System进程的许多特权,变相成为了操作系统可信基的一部分。众所周知,操作系统的可信基要求越小越好,TCB越小,系统缺陷就越少,攻击面也越少。

高安全的操作系统一般都会尽可能缩小自己的TCB,并且基于分级安全架构,来限制特权应用程序的规模。在现代操作系统鼻祖MULTICS在1965年设计的时候,安全架构的设计初衷是“即使它被间谍渗透控制了,仍然能够保证操作系统的数据等都是安全的”, MULTICS划时代引入了MLS的安全模型,并基于这一模型来实施系统的分级安全体系架构。分级安全的架构也是做高端操作系统的基本共识。而我们经常看到的高安全操作系统如QNX、L4等基于微内核架构的设计,也是采取了无特权Rootless设计架构。

OpenHarmony也借鉴了这些历史上典型的高安全架构的操作系统体系架构,来设计自身的分级安全架构模型,解决系统架构的Rootless无特权设计。

2.2►►实现逻辑

在OpenHarmony操作系统中,应用程序分3级,如下图所示。其中,System Core层包含了操作系统最核心的基础功能,如资源的管理和程序的调度、管控等;System Basic层包含了操作系统对外提供的基础服务;而所有消费者可下载安装的三方应用程序只有Normal权限,即都包含在Normal层中。如此一来,OpenHarmony成倍的缩减了操作系统的可信基规模,一切应用程序都只能运行在最低等级的Normal级上,如果需要访问System Basic或者System Core的API,只需要对应用程序API权限进行授权管控。因此,只要保证OpenHarmony的Basic和Core内核的安全,应用程序就几乎不能继续恶意行为。

OpenHarmony分级权限架构模型

基于上述分级策略,在OpenHarmony生态中,所有的应用程序都可以按照预期去实现其应做的功能。例如天气类型的软件可以专注做好天气相关功能,由于它的权限极为有限,因此它就无法窃取用户隐私,出售用户数据牟利。如果能够保证操作系统的纯净和安全,在风险管控上就容易很多,从根本上就保证了OpenHarmony生态的纯净安全。

2.3►►数据防泄漏

数据泄露风险是当前数据安全领域最痛点的问题,因此, OpenHarmony提供了一个重要的基础能力:数据防泄漏。OpenHarmony为数据提供了全套的生命周期管理机制,除了在本机上创建、存储、使用、传输和销毁数据进行严格的策略管控,OpenHarmony还可以确保在数据被发送到另一台设备后,数据仍然严格按照发送数据的主权拥有者制定的安全策略来管控数据的使用。OpenHarmony具备这样的能力,无论是个人场景,还是企业场景,都能够保证数据发送后的可控。

OpenHarmony数据防泄漏解决方案能在哪些场景下应用呢?数字版权保护是一个很好的应用场景:比如说,OpenHarmony可以助力国家数字图书馆的落地和发展,在确保图书版权不泄露的前提下,在一台OpenHarmony的设备上,可以任意浏览图书馆的图书文献而不必担心这些宝贵的资产被恶意分发失控。如果能够获得普及,有利于提高国民素质,保障数据在可控的前提下进行分享从而保障版权人的权益,让国民只需通过一台OpenHarmony的平板或者电脑就可以随时随地接入,从而浏览感兴趣的内容。另一个可能的典型应用是,在自媒体领域,OpenHarmony体系可以保护自媒体创作者的高质量作品的所有权和产权,保障其合法权益,同时也可以促进高质量作品的产出。

此外,数据防泄漏也是维护企业核心数据资产不泄露的关键一环。为了防止数据资产泄密,我们看到在当前移动互联网已经极度普及的情况下,还有很多保密单位还是通过光盘刻录的方式进行数据共享,其流程相当繁琐,需要通过登记、领导签字、刻光盘、实物转移、光盘销毁、责任人再签字等手续,很不利于协同合作和效率提升。如果在操作系统底层提供分类分级保护的能力,同时又能够保证数据发送出去后仍然可以严格受控,我们就将一些机密文档实施一个文档一个密钥加密,这个文件加密密钥的保存、使用、加解密、访问控制等都在一个独立的安全芯片中进行,通常安全芯片都具备硬件三防能力,这样即使面临设备丢失等情况下,如果被暴力破解,也能够保证数据不泄密,安全性就大大增加了,也提升了数据共享的效率。

从上面可以看出,由于数据加密后,传递的是密文,因此数据传输可以保证不会泄密。而加密密钥和文件的权限,则封装在基于加密机公钥加密的数字信封中,由DLP服务器和OpenHarmony共同完成认证鉴权、解密、权限管控,确保了数据在离开数据主体后,依然完整受控。

03总结

付天福最后提到,OpenHarmony基于分级的安全架构能够在使能千行百业时,基于严格的数据防泄漏BLP模型和控制流指令保障的Biba模型,使能移动互联网、企业办公等场景,确保数据不泄露,且在数据被发送后仍然能够严格受控不泄密;在使能产业互联网时,能够严格保障控制流的安全可信,确保只有高安全设备才能控制低安全设备,低安全设备不能反向控制高安全设备,为产业互联网的可靠、可控、稳定运行提供了最基础的保障。在未来的新版本中,OpenHarmony会逐渐发布新功能和新特性,欢迎所有对设计和实现一套高安全操作系统有兴趣的学者、工程师和我们一起,把OpenHarmony的安全能力底座做得更强,把各种应用的场景变得更丰富,去赋能万物互联,为国家数字经济保驾护航,为中国的系统软件提供最基础的根底座。

点击关注了解更多OpenHarmony TSC技术干货内容

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

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

相关文章

机器人“瓦力”近在咫尺?谷歌最新的RT-2 AI模型简介

“首创”的机器人 AI 模型能够识别垃圾并执行复杂的动作。 上周五,谷歌 DeepMind 宣布了机器人变形器 2(RT-2),这是一种“首次推出”的视觉-语言-行动(VLA)模型,利用从互联网上抓取的数据&…

理解 CSS 中的 Containing Block

前言 在开始本文之前先来看一个例子&#xff0c;下面一段简单的 html 代码&#xff0c;布局很简单&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"w…

clickhouse调研报告2

由Distributed表发送分片数据 clickhouse分区目录合并 clickhouse副本协同流程 clickhouse索引查询逻辑 clickhouse一级索引生成逻辑(两主键) clickhouse的data目录下包含如下目录: [root@brfs-stress-01 201403_10_10_0]# ll /data01/clickhouse/data total 4 drwxr-x---…

【Linux操作系统】网络配置详解:从原理到实践(详细通俗讲明DNS)

导语&#xff1a;网络配置是Linux系统中的一项重要任务&#xff0c;合理的网络配置可以保证计算机与其他设备的正常通信。本文将详细介绍Linux网络配置的原理和实践&#xff0c;包括网络配置原理、查看网络IP和网关、测试网络连通性、网络环境配置、设置主机名和hosts映射以及主…

获取全部的地区并生成表格

思路 写文章的时间2023-8-4&#xff0c;大部分网页设置的区域都是先是省&#xff0c;然后通过省获取对应的市&#xff0c;再通过市获取对应的区&#xff0c;以此类推。所以模拟的请求也是按照这个逻辑&#xff0c;先获取所有的省&#xff0c;再获取所有的市&#xff0c;最后获取…

【2023华数杯全国大学生数学建模竞赛】C题 母亲身心健康对婴儿成长的影响第一、二问

第一问部分截图 第二问部分截图 参考文献 理论和可直接运行代码获取参见&#xff1a;理论和可直接运行代码获取参见&#xff1a;理论和可直接运行代码获取参见&#xff1a;理论和可直接运行代码获取参见&#xff1a; 有人看的话更新后续问题思路。

【项目经验】产研流程(超级详细的步骤)

一、产研流程简述 项目立项-——定需求——Sprint需求宣讲会——技术方案——技术方案评审会——开发及单元测试——测试用例评审会——提测——测试——Sprint评审会——发版——Sprint复盘会 二、产研流程详情 以下部分根据Sprint里程碑节点进行循环&#xff08;sprint周期…

Java8实战-总结12

Java8实战-总结12 Lambda表达式Lambda 和方法引用实战第1步&#xff1a;传递代码第2步&#xff1a;使用匿名类第3步&#xff1a;使用Lambda表达式第4步&#xff1a;使用方法引用 复合Lambda表达式的有用方法比较器复合逆序比较器链 函数复合 Lambda表达式 Lambda 和方法引用实…

【C++】从无到有了解并掌握C++面向对象编程的三大特性——封装、继承、多态

前置知识&#xff1a;类和对象 参考书籍&#xff1a;《C Primer 第五版》 目录 什么是面向过程&#xff1f;什么是面向对象&#xff1f; 一、封装 1、封装的含义以及如何实现封装 1.1 访问限定符&#xff08;访问说明符&#xff09; 1.2 什么是封装&#xff1f; 2、封装的优点…

2023年华数杯选题人数发布!!

该选题人数&#xff0c;主要基于根据各个平台开赛后12小时各项数据统计&#xff0c;进行评估&#xff08;方法见注释&#xff09;&#xff0c;最终得出2023年华数杯选选题人数&#xff0c;大致为 题号选题人数A120B159C420 注释&#xff1a;选题人数来源&#xff1a;源自各个平…

Java字符串常量池以及new String(“abc“)到底创建了几个对象?各种字符串到底相不相等?

new String(“abc”)到底创建了几个对象&#xff1f; 字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串&#xff08;String 类&#xff09;专门开辟的一块区域&#xff0c;主要目的是为了避免字符串的重复创建。 1.如果字符串常量池中不存在“abc”的引用&#xff…

GD32F103VE外部中断

GD32F103VE外部中断线线0~15&#xff0c;对应外部IO口的输入中断。它有7个中断向量&#xff0c;外部中断线0 ~ 4分别对应EXTI0_IRQn ~ EXTI4_IRQn中断向量&#xff1b;外部中断线 5 ~ 9 共用一个 EXTI9_5_IRQn中断向量&#xff1b;外部中断线10~15 共用一个 EXTI15_10_IRQn中断…

深入探索Vue.js核心技术与跨平台开发uni-app实战

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 前言 在当今Web应用不断…

小程序商城免费搭建之java商城 电子商务Spring Cloud+Spring Boot+二次开发+mybatis+MQ+VR全景+b2b2c bbc

​ 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前…

7、Kubernetes核心技术 - Secret

目录 一、Secret概述 二、Secret 三种类型 2.1、Opaque 2..2、kubernetes.io/dockerconfigjson 2.3、kubernetes.io/service-account-token 三、Secret创建 3.1、命令行方式创建 Secret 3.2、yaml方式创建 Secret 四、Secret解码 五、Secret使用 5.1、将 Secret 挂载…

Mybatis实现JsonObject对象与JSON之间交互

项目中使用PostGresql数据库进行数据存储&#xff0c;表中某字段为Json类型&#xff0c;用于存储Json格式数据。PG数据库能够直接存储Json算是一大特色&#xff0c;很多特定情境下使用直接存储Json字段数据能够大量节省开发时间&#xff0c;提高后台数据查询和转换效率。 1、基…

第三章 图论 No.1单源最短路及其综合应用

文章目录 1129. 热浪1128. 信使1127. 香甜的黄油1126. 最小花费920. 最优乘车903. 昂贵的聘礼1135. 新年好340. 通信线路342. 道路与航线341. 最优贸易 做乘法的最短路时&#xff0c;若权值>0&#xff0c;只能用spfa来做&#xff0c;相等于加法中的负权边 1129. 热浪 1129.…

Spring接口ApplicationRunner的作用和使用介绍

在Spring框架中&#xff0c;ApplicationRunner接口是org.springframework.boot.ApplicationRunner接口的一部分。它是Spring Boot中用于在Spring应用程序启动完成后执行特定任务的接口。ApplicationRunner的作用是在Spring应用程序完全启动后&#xff0c;执行一些初始化任务或处…

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…

python二级用哪个版本的软件,二级python用哪个版本

大家好&#xff0c;给大家分享一下python二级用哪个版本的软件&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; Python开发软件可根据其用途不同分为两种&#xff0c;一种是Python代码编辑器&#xff0c;一种是Python集成开发工具&#xff…