当前位置: 首页 > news >正文

开源机密计算平台:蓬莱-OpenHarmony

演讲嘉宾 | 杜   东

回顾整理 | 廖   涛

排版校对 | 李萍萍

嘉宾简介

杜东,上海交通大学助理研究员。中国计算机学会CCF会员,ACM会员。研究兴趣为操作系统与体系结构、服务器无感知(Serverless)计算、系统安全。在包括ASPLOS、ISCA、OSDI、SOSP、ACM SoCC、TOCS等国际著名会议和期刊发表/录用多篇学术论文。

内容来源

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

视频回顾

视频链接:

峰会回顾第13期 | 开源机密计算平台:蓬莱-OpenHarmony(杜东)_哔哩哔哩_bilibili

正 文 内 容

OpenHarmony赋能万物互联,存在覆盖从端到云的安全能力需求。蓬莱-OpenHarmony是一个开源机密计算平台,提供了面向OpenHarmony的可信执行环境,赋能OpenHarmony安全能力。那么,蓬莱-OpenHarmony主要做了哪些安全增强方面的工作,有哪些关键技术呢?上海交通大学助理研究员、中国计算机学会CCF会员、ACM会员杜东在第一届OpenHarmony技术峰会上给大家带来了几点分享。

01万物互联计算的安全挑战

当进入到万物互联的新场景后,存在哪些安全风险和挑战,又有哪些解决方案呢?

依靠软件本身提供系统安全能力是一种方案。但是,依赖形式化验证、类型安全语言等技术目前来加强系统安全,目前看来是较为困难的。在万物互联的场景中,开发者的背景和能力多样性倍增,各自所依靠开发软件本身处理安全风险的能力不尽相同。就算能够实现,也可能需要更多的辅助工具来配合开发者完成。

通过软硬件配合,依赖于硬件提供的安全特性来加固系统,为其提供可信执行环境(TEE)是另一种可行的系统安全加固方案。可信执行环境能够有效增强边缘设备的安全能力,例如内存隔离、I/O隔离等。依赖该方案进行安全加固的代表系统有Intel SGX、ARM TrustZone和RISC-V蓬莱或Keystone等。目前,已经发布了多个安全特性扩展和完善的可执行环境方案,为什么还要定制化设计一个蓬莱-OpenHarmony呢?因为OpenHarmony所面临的万物互联场景是有不一样的挑战和风险,主要有以下3个方面:

第一,万物互联会导致需要面临复杂的硬件环境。在异构的硬件环境下,通过一套系统把OpenHarmony的安全特性和需求支撑起来,是非常复杂的一件事。例如,端侧可能存在非常小型的低配设备,没有页表和内存隔离,但是TEE很难跑在这种配置下;又例如,在较高配的手机场景,怎么能够让小型的、没有很多基础安全能力的环境和有安全能力的环境进行协同,也是一个较大的挑战。

第二,软件栈存在差异。面向云场景,软件主要基于Linux内核和虚拟机监控器等,必要时可引入如安全OS等组件;而面向边缘及IoT,软件栈较为简单,可能基于RTOS(如OpenHarmony小型内核)等构建整个软件栈。因此,如何使得二者进行协同,是软件异构所带来的问题。

第三,操作系统国产化问题。例如OpenHarmony目前在系统安全方面已经有所成果,如何保证它的安全能力自主可控呢?这也是需要思考的一个风险和挑战。

蓬莱-OpenHarmony能够有效解决上述问题,下图是蓬莱-OpenHarmony的logo。讨论一个有趣的话题:为什么新的系统命名为蓬莱?蓬莱是中国古代神话里面的一座仙岛,其被一片黑色的冥河所包围。我们希望提供一个可信执行环境,它是和外界隔离的,里面的东西不能出来,外面的东西也不能进去。一方面能够保证内部机密数据的安全,另一方面也能够避免内部不安全因素因其特殊的地位而对外部造成损害。

02蓬莱-OpenHarmony

在蓬莱-OpenHarmony的项目中,开发了蓬莱可信执行环境并提供了通用的解决方案。目前主要做的四项工作有:(1)提出面向OpenHarmony的通用TEE架构和接口,明确架构和接口的定义,保证后续所有的TEE都能够满足某一个抽象或某一个核心接口而被纳入OpenHarmony体系中;(2)基于 RISC-V v1.10的指令集,开发了蓬莱安全硬件扩展;(3)开发固件层(M-mode) Monitor和TEE SDK的软件层;(4)提供含MMU平台和无MMU平台的两套系统支持。

2.1►►RISC-V生态

在RISC-V生态中,开发者可以自身需求定制化设计硬件而无需担心版权风险,如果硬件的特性足够好,还可以将其合入到RISC-V的官方指令集中。截至2022年,RISC-V处理器出货量达到100亿,Semico Research预测到2025年,RISC-V处理器出货量将达到800亿,构建了强大的影响力和生态。

RISC-V设备的急剧增加,逐步形成了万物互联的端边场景,RISC-V的CEO Calista Redmond预测,到2030年将有500亿联网和物联网设备需要安全和定制处理器加持,需要有足够多的安全特性以保证身边的设备能够满足计算和处理器的需求。

2.2►►面向OpenHarmony的通用TEE架构和接口

面向OpenHarmony的通用TEE架构和接口当前还处于草案的状态。如下图所示,架构本身和RISC-V无关,并未涉及到具体的架构和特性。我们认为,未来OpenHarmony的通用TEE架构和接口可能包含4层:最底层是所需要的硬件特性,其上层为安全固件;可信执行环境操作系统在安全固件的上层;最上层即用户应用层。

2.3►►蓬莱-OpenHarmony:RISC-V指令集下的TEE系统架构

蓬莱-OpenHarmony的整体架构如下图所示。蓬莱-OpenHarmony基于上述定义的OpenHarmony TEE参考架构;在硬件上进行了创新,面向万物互联异构的场景,提出了细粒度的轻量隔离,其安全特性是可配置和可选的;在软件上也进行了创新,面向多元隔离的需求,支持安全OS和轻量安全应用;此外,蓬莱-OpenHarmony也支持OpenHarmony标准、小型、轻量等配置。

2.4►►硬件异构应对案例

在硬件异构的场景中,如何实现内存隔离呢?RISC-V将整个软硬件分为硬件层、机器态、特权态以及用户态共4层。其中,硬件层RISC-V支持不同的特性及扩展;机器态即固件层,拥有比特权态更高的权限,通常负责加载操作系统或者实现安全特性;特权态运行操作系统内核,支持MMU和no-MMU平台;用户态则运行各类应用程序。可信执行环境的基础能力,要求内核和应用之间要内存隔离,云边场景可以通过内存管理模块 (MMU)/页表实现,但IoT和边缘RISC-V设备可能没有MMU,内核和应用之间缺乏隔离性。

怎么解决呢?如下图所示为一个临时解决方案,即将内核运行在机器态,机器态中有一套硬件机制PMP,可以通过PMP控制来隔离内核和用户态。例如,Linux在没有 MMU的时候,通过RISC-V机器态的PMP隔离机制实现粗粒度隔离。但随之而来出现一个问题,机器态固件和操作系统之间会存在机器态争抢,其问题根本是边缘设备硬件情况不同所导致,对于小型硬件经常存在这样的问题和风险。

在蓬莱-OpenHarmony中,提出了新的RISC-V硬件扩展:sPMP。sPMP是轻量级的内存隔离机制,存在硬件资源开销低、访存性能好的优势。有sPMP和没有sPMP的区别在什么地方呢?当没有sPMP时,机器态是有内存隔离的,但是用户态和OS态之间没有任何隔离,很难在上面运行多个APP;有sPMP后,操作系统依赖sPMP寄存器就可以实现隔离,补齐了机制缺陷。

2.5►►软件异构应对方案

在软件异构场景中,隔离域依赖于安全硬件的物理内存隔离机制,如RISC-V段隔离机制。其问题是隔离域与硬件强相关,比如PMP,最终的总体隔离数量与PMP个数是呈正相关。段隔离机制本身是有限的 (不超过16个),4组PMP寄存器现在最多只能划分出4个域,如图所示。

那么可信执行环境如何提供可扩展的隔离域呢?在云场景中,可以利用软件隔离出更多隔离域,但在边端由于内存资源不足并不适用。针对此问题,蓬莱-OpenHarmony提供了滑动窗口的隔离域设计,使一组PMP (逻辑上) 保护多个隔离域,在上下文切换时滑动实际的保护范围。如图所示,当隔离域-1被执行时,PMP-2能够将隔离域收缩至隔离域-1的范围;反之,当隔离域-2被执行时,PMP-2也能够将隔离域收缩至隔离域-2的范围。如此一来,能够保证每一个隔离域执行时,其内存保护的范围是准确的。

03总结

总的来说,蓬莱-OpenHarmony项目为OpenHarmony在RISC-V架构下提供了安全基石,支持OpenHarmony面向万物互联的多场景安全需求。欢迎大家持续关注蓬莱-OpenHarmony项目,我们也期待更多的开发者能够加入其中,共同赋能OpenHarmony的安全底座。

相关文章:

开源机密计算平台:蓬莱-OpenHarmony

演讲嘉宾 | 杜 东 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 杜东,上海交通大学助理研究员。中国计算机学会CCF会员,ACM会员。研究兴趣为操作系统与体系结构、服务器无感知(Serverless)计算、系统安全。在包括ASPLOS、ISC…...

大一大二一心学算法的利弊

学习算法是现代计算机科学和软件工程领域中的重要组成部分。它们是解决复杂问题、优化资源利用以及提高效率的关键。学习算法的过程可以帮助培养系统性思维、分析问题能力和创造性解决方案的能力。然而,学习算法也有一些利弊,我们将在下文中详细探讨。 …...

c#using关键字的作用

https://blog.csdn.net/Mona_Zhao/article/details/91363446 using关键字的三种作用&#xff1a; 1. 引用命名空间&#xff1b; 2. 为命名空间或者类型创建别名&#xff1b; 3. 使用using语句。 &#xff08;1&#xff09;引用命名空间 类似于c和c的#include<>, pyt…...

只依赖OPENCV的工作服安全帽检测YOLOV8S

工地安全帽工作服检测Y8S&#xff0c;采用YOLOV8S训练模型&#xff0c;然后使用OPENCV的DNN调用&#xff0c;彻底拜托PYTORCH依赖&#xff0c;可以在C,PYTHON,ANDROID上跑。附件是C生成的效果测试&#xff08;只需解压将图片或者视频放入VIDEOS文件夹&#xff0c;文件夹没图片或…...

MFC|选择获取文件路径

参考&#xff1a;mfc按钮选择文件或者文件夹&#xff08;https://blog.csdn.net/qq_39433050/article/details/130261518&#xff09; 点击按钮槽函数&#xff0c;选择文件 void CMFCStartGrabDlg::OnBnClickedSelectfile() {// TODO: Add your control notification handler…...

实时操作系统Freertos开坑学习笔记:(七):队列

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、队列是什么&#xff1f;而在freertos中&#xff0c;队列是什么呢&#xff1f;①如果要进行中断、任务的交流&#xff0c;那我用全局变量行吗&#xff1f;②…...

专业游戏翻译公司怎么选择比较合适

近年来&#xff0c;游戏行业持续繁荣&#xff0c;市场需求也在不断扩大&#xff0c;其中游戏翻译的需求越来越旺盛。无论是引进游戏还是让游戏走向国际市场&#xff0c;都需要专业的翻译公司来帮忙。那么&#xff0c;怎么选择合适的游戏翻译公司呢&#xff1f;让我们一起来看看…...

阿里云Maven和Gradle仓库最新配置

文章目录 一、简介二、仓库地址三、如何配置1、Maven配置2、Gradle配置 一、简介 阿里云云效 Maven 是什么&#xff1f;    阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库&#xff0c;帮助研发人员提高研发生产效率&#xff0c;使用阿里云Maven中央仓库作为下载源&am…...

尚硅谷大数据项目《在线教育之离线数仓》笔记007

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第12章 报表数据导出 P112 01、创建数据表 02、修改datax的jar包 03、ads_traffic_stats_by_source.json文件 P113 P114 P115 P116 P117 P118 P119 P120 P121 P122【122_在…...

python考研志愿填报模拟系统vue

本系统提供给管理员对学生、院校、研究生信息、专业信息、学院信息等诸多功能进行管理。本系统对于学生输入的任何信息都进行了一定的验证&#xff0c;为管理员操作提高了效率&#xff0c;也使其数据安全性得到了保障。本考研志愿填报模拟系统以Django作为框架&#xff0c;B/S模…...

【LeetCode-面试经典150题-day20】

目录 70.爬楼梯 198.打家劫舍 139.单词拆分 322.零钱兑换 300.最长递增子序列 70.爬楼梯 题意&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 提示&#xff1a; 1 < n < …...

回归与聚类算法系列②:线性回归

目录 1、定义与公式 2、应用场景 3、特征与目标的关系分析 线性回归的损失函数 为什么需要损失函数 损失函数 ⭐如何减少损失 4、优化算法 正规方程 梯度下降 优化动态图 偏导 正规方程和梯度下降比较 5、优化方法GD、SGD、SAG 6、⭐线性回归API 7、实例&#…...

springBoot:redis使用

需求&#xff1a;查询酒店房间列表 1、引入依赖 <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2、配置yml文件 server:port: 80…...

cmake 选择 vs编译器

QQ:2967732156 QQ交流群&#xff1a;622684416 // 编译VS2017版本的Tars&#xff0c; Release版本 // win32 cmake .. -G "Visual Studio 15 2017" -D CMAKE_BUILD_TYPERelease // x64 cmake .. -G "Visual Studio 15 2017 Win64" -D CMAKE_BUILD_…...

项目(智慧教室)第一部分:cubemx配置,工程文件的移植,触摸屏的检测,项目bug说明

第一章&#xff1a;需求与配置 一。项目需求 二。实现外设控制 注意&#xff1a; 先配置引脚&#xff0c;再配置外设。否则会出现一些不可预料的问题 1.时钟&#xff0c;串口&#xff0c;灯&#xff0c;蜂鸣器配置 &#xff08;1&#xff09;RCC配置为外部时钟&#xff0c;修…...

Springboot集成redis--不同环境切换

1.单机配置 spring:redis:mode: singletonhost: 127.0.0.1port: 6379lettuce:pool:max-active: 8 #连接池最大阻塞等待时间&#xff08;使用负值表示没有限制max-idle: 2 #连接池中的最大空闲连接min-idle: 1 #连接池最大阻塞等待时间&#xff08;使用负值表示没有限…...

稀疏数组的实现

文章目录 目录 文章目录 前言 一 什么是稀疏数组? 二 稀疏数组怎么存储数据? 三 稀疏数组的实现 总结 前言 大家好,好久不见了,这篇博客是数据结构的第一篇文章,望大家多多支持! 一 什么是稀疏数组? 稀疏数组&#xff08;Sparse Array&#xff09;是一种数据结构&a…...

表达式语言的新趋势!了解SPEL如何改变开发方式

文章首发地址 SpEL&#xff08;Spring Expression Language&#xff09;是一种表达式语言&#xff0c;由Spring框架提供和支持。它可以在运行时对对象进行解析和计算&#xff0c;用于动态地构建和操作对象的属性、方法和表达式。以下是SpEL的一些特性和功能&#xff1a; 表达式…...

一套成熟的实验室信息管理系统(云LIS源码)ASP.NET CORE

一套成熟的实验室信息管理系统&#xff0c;集前处理、检验、报告、质控、统计分析、两癌等模块为一体的网络管理系统。它的开发和应用将加快检验科管理的统一化、网络化、标准化的进程。 LIS把检验、检疫、放免、细菌微生物及科研使用的各类分析仪器&#xff0c;通过计算机联…...

NPM使用技巧

NPM使用技巧 前言技巧全局模块位置PowerShell报错安装模块冲突 NPM介绍NPM命令使用方法基本命令模块命令查看模块运行命令镜像管理 常用模块rimrafyarn 前言 本文包含NodeJS中NPM包管理器的使用技巧&#xff0c;具体内容包含NPM介绍、NPM命令、常用模块等内容&#xff0c;还包…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...