【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行
导读:本文介绍ACAI,其构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器,同时保持与现有应用程序的兼容性和安全性,能够实现对加速器的安全访问。
原文链接:ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture | USENIX
ACAI: Protecting Accelerator Execution with Arm Confidential Computing Architecture
一、背景介绍
随着可信执行环境在CPU中的发展,机密计算取得一定成果,可以确保用户的代码和数据免受恶意租户和具有特权的管理员的侵害,但租户无法在可信执行环境的保护下安全使用GPU和FPGA等加速器。
在云计算环境下,用户希望在不可信云平台部署安全敏感应用,同时利用加速器满足大工作量需求,而当前可信执行主要在CPU层面,未延伸到加速器,这就需要解决机密计算在加速器使用上的安全和性能问题。
Arm在2021年宣布了机密计算架构(CCA)规范,它通过颗粒保护检查实现了硬件级别访问控制,隔离了机密虚拟机(Realm VMs)。作者尝试基于CCA进行设计,使得机密虚拟机可以安全地访问加速器。
二、 现状分析
为实现对加速器的安全访问,研究设立以下两个目标:
- 构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器。
- 同时保持与现有应用程序的兼容性和安全性。
现有硬件对可信执行环境的支持如Intel SGX主要是进程级抽象,且在使用加速器方面存在不足。对于加速器与机密计算的结合,一些方案存在如需要硬件修改且性能和面积受限,以及加速器无法判断主机安全和CPU端TEE需考虑安全设备访问等问题。同时,现有如加密通信的bounce-buffer设计存在内存和计算开销大、兼容性差等缺陷。因此面临以下三个问题:
- 如何在不破坏CCA保护的情况下允许外部加速器访问Realm内存?
- 如何确保来自不同加速器的访问被隔离到与其连接的相应虚拟机的指定共享区域,并阻止恶意外设的访问?
- 如何隔离所有可能的I/O和内存访问路径,防止软件和物理对手的攻击?
三、应对设计
- 选择Arm CCA:选择Arm CCA作为基础,因为它是即将推出的扩展,可在Arm的固定虚拟平台上实验,且其本身支持总线级访问控制和内存保护。CCA架构引入了粒度保护表(GPT)追踪物理地址,通过粒度保护检查(GPCs)对处理单元增强,GPCs根据GPT的限制对安全领域内存的访问进行检查,防止外部访问领域内存。同时因为有总线级别的加密性及完整性保护机制,物理攻击者无法篡改主内存的数据。
- 设计思路:提出ACAI,扩展Arm CCA的安全常量到设备端访问。为设备安全标记为realm - mode以利用隔离,使用设备侧MMU(SMMU)实现VM级隔离,重新利用硬件加密支持保护设备通信,在VM创建流程中加入设备认证。以此身份与所有权的管理、内存区域保护和设备生命周期管理。
- 身份与所有权:设备经过认证后被赋予唯一不可伪造身份,并仅能被一个realm VM访问和配置,确保设备与realm VM一对一绑定。同时保证设备与realm VM之间内存映射安全且兼容CCA,包括主机和设备侧的地址转换,以及两者的同步。
- 创建保护内存区域:再realm VM和加速器之间建立共享保护内存区域,位于realm世界内存中。通过RMM和SMMU页表确定只有指定设备和realm VM可访问,防止恶意设备和VM干扰。同时利用GPT将SMMU数据结构标记为仅在根模式下可访问,防止还有hypervisor篡改映射,同时引入SMMU接口,让hypervisor按照规则请求更新。
- 设备生命周期管理:设备连接时,在realm VM创建过程中附加加速器,确保相关内存区域符合安全常量。包括重置加速器、移动其配置空间到realm世界等操作。由monitor初始化设备并执行认证协议,确保设备正确初始化、认证、并收集报告,防止设备被篡改或替换。最后仅在realm VM销毁阶段允许hypervisor分离设备,确保设备内存和状态正确清理,防止数据泄露和安全漏洞。
- 架构图:
四、技术解析
4.1 内存保护
在内存方面,ACAI设置了realm VM和设备间的共享内存区域(保护区域),通过多种机制确保内存访问的安全,如确保设备和realm的初始状态及身份映射,以及保证内存区域的安全访问和正确的地址转换。
4.2 设备管理
在设备管理上,利用IDE确保设备有唯一身份且不重叠,通过一系列流程如在创建VM时同时进行安全的加速器连接,在设备连接和初始化过程中保证配置正确和身份认证。
在应对恶意组件时,针对不可信hypervisor、恶意的co-tenants、其他的恶意设备和物理攻击者等可能的威胁,ACAI通过多种机制如密钥保护、身份验证、内存隔离和加密等措施进行防护,确保系统安全。
ACAI的安全常量有效保证了CPU和设备TEE的安全组合,各种攻击都难以突破其防御,维系了系统的保密性和完整性。
插图:(a)-(c)潜在的攻击,(d)ACAI保护
五、验证评估
实验设置:在Arm FVP和Cortex-A35板上进行原型实现,使用Rodinia测试集的GPU基准测试和自定义的FPGA基准测试,在不同配置下进行测量,包括原始设置、加密模式、ACAI保护模式以及优化模式等。
结果展示:结果表明ACAI在系统启动、realm创建、删除、SMMU操作等方面有一定的开销,但对正常世界执行影响较小,保持安全保证的同时具有可行性。与加密模式相比,ACAI显著减少了指令数,在GPU和FPGA上有一定的性能提升。
本账号发布内容均为原创,欢迎转载,转载请注明出处。更多资讯请移步【机密计算前沿技术】服务号,欢迎交流!
相关文章:
【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行
导读:本文介绍ACAI,其构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器,同时保持与现有应用程序的兼容性和安全性,能够实现对加速器的安全访问。 原文链接:ACAI: Protecting Accelerator Ex…...
【WRF模拟】WPS预处理设置生成文件地址
目录 WPS 运行 geogrid.exe在 namelist.wps 中指定 geogrid.exe 输出路径WPS 运行 ungrid.exe方法 1:在 namelist.wps 中指定输出路径方法 2:手动移动 FILE:* 文件方法 3:使用环境变量 WPS_UNGRIB_OUTPUT(不推荐)另:设置文件链接地址WPS 运行 metgrid.exe方法 1:在 name…...
Midjourney使用教程—2.作品修改
当您已生成第一张Midjourney图像的时候,接下来该做什么?了解我们用于修改图像的工具!使用 Midjourney 制作图像后,您的创意之旅就不会止步于此。您可以使用各种工具来修改和增强图像。 一、放大操作 Midjourney每次会根据提示词…...
基于 ABAP RESTful 应用程序编程模型开发 OData V4 服务
一、概念 以个人图书管理为例,创建一个ABAP RESTful 应用程序编程模型项目。最终要实现的效果: 用于管理书籍的程序。读取、修改和删除书籍。 二、Data Model-数据模型 2.1 创建项目基础数据库表 首先,创建一个图书相关的表,点…...
微信小程序登陆之反向代理
一.背景 在互联网架构中,反向代理是连接客户端与后端服务的核心组件。它的核心价值在于: 安全性:隐藏内部服务细节,防止直接暴露到公网。 负载均衡:分散请求到多个后端实例,提升吞吐量。 SSL终止&#x…...
[解决] PDF转图片,中文乱码或显示方框的解决方案
在Java开发中,将PDF文件转换为图片是一项常见的需求,但过程中可能会遇到中文乱码或显示方框的问题。本文将深入探讨这一问题,并提供详细的解决方案,帮助开发者顺利地完成PDF到图片的转换。 一、问题现象 在使用Java库(如Apache PDFBox)将PDF转换为图片时,如果PDF文件中…...
面试康复训练-SQL语句
一,数据库操作 1查看所有库 show databases; --查看所有库2使用数据库 use 数据库名; --使用数据库; 3查看当前使用数据库 select database(); --查看当前使用的数据库 4 创建数据库 create databse 数据库名 charsetutf8; --创建数据库 5删…...
经典面试题:C/C++中static关键字的三大核心作用与实战应用
一、修饰局部变量:改变生命周期,保留跨调用状态 核心作用: 延长生命周期:将局部变量从栈区移至静态存储区(数据段或BSS段),生命周期与程序一致保留状态:变量在函数多次调用间保…...
Linux固定IP方法(RedHat+Net模式)
1、查看当前网关 ip route | grep default 2、配置静态IP 双击重启 3、验证...
JVM 学习前置知识
JVM 学习前置知识 Java 开发环境层次结构解析 下图展示了 Java 开发环境的层级关系及其核心组件,从底层操作系统到上层开发工具,逐步构建完整的开发与运行环境: 1. 操作系统(Windows, MacOS, Linux, Solaris) 作用&…...
数据结构---图的深度优先遍历(DFS)
一、与树的深度优先遍历之间的联系 1.类似于树的先根遍历。 递归访问各个结点: 2.图的深度优先遍历 先设置一个数组,初始值全部设置为false,先访问一个结点,在用一个循环,依次检查和这个结点相邻的其他结点,…...
QPrintDialog弹出慢的问题
开发环境 操作系统: openkylin2qt版本 : 5.15.10排查过程 首先看下问题的现象, 问题现象 复现问题的demo很简单,只能是从跟踪qt代码方面入手 void MainWindow::on_pushButton_clicked(){QPrinter printer;QPrintDialog dialog(&printer,this);dialog.exec();} 现在需要找一…...
QT-LINUX-Bluetooth蓝牙开发
BlueToothAPI QT-BlueToothApi Qt Bluetooth 6.8.2 官方提供的蓝牙API不支持linux。 D-Bus的API实现蓝牙 确保系统中安装了 BlueZ(版本需≥5.56),并且 Qt 已正确安装并配置了 D-Bus 支持。 默默看了下自己的版本.....D-BUS的API也不支持。 在 D-Bus 中,org 目录是 D-Bus…...
kvm虚拟机的基本使用
[rootkvm ~]# virsh destroy 虚拟机名 #关闭虚拟机 [rootkvm ~]# virsh undefine 虚拟机名 #删除虚拟机 [rootkvm ~]# virsh start 虚拟机名 #开启虚拟机 [rootkvm ~]# virsh console 虚拟机名 #登录虚拟机 [rootkvm ~]# virsh list --all …...
K8S中若要挂载其他命名空间中的 Secret
在Kubernetes(k8s)里,若要挂载其他命名空间中的Secret,你可以通过创建一个 Secret 的 ServiceAccount 和 RoleBinding 来实现对其他命名空间 Secret 的访问,接着在 Pod 中挂载这个 Secret。下面是详细的步骤和示例代码…...
【Java SE】抽象类/方法、模板设计模式
目录 1.抽象类/方法 1.1 基本介绍 1.2 语法格式 1.3 使用细节 2. 模板设计模式(抽象类使用场景) 2.1 基本介绍 2.2 具体例子 1.抽象类/方法 1.1 基本介绍 ① 当父类的某些方法,需要声明,但是又不确定如何实现时ÿ…...
如何理解java中Stream流?
在Java中,Stream 是 Java 8 引入的一个强大API,用于处理集合(如 List、Set、Map 等)数据的流式操作。它提供了一种声明式、函数式的编程风格,可以高效地进行过滤、映射、排序、聚合等操作。 Stream 的核心概念 流&…...
QT编程之数据库开发
一、架构层次 用户接口层 QSqlQueryModel:管理SQL查询结果,提供表格数据模型用于展示QSqlTableModel:支持直接操作数据库表(增删改查)QSqlRelationalTableModel:支持带外键关联的复杂表…...
【10】高效存储MongoDB的用法
目录 一、什么是MongoDB 二、准备工作 (1)安装MongoDB (2)安装pymongo库 三、连接MongoDB 四、指定数据库 五、指定集合 六、插入数据 (1) insert 方法 (2)insert_one(…...
使用Qdrant等其他向量数据库时需要将将numpy 数组转换为列表 确保数据能被正确处理和序列化,避免类型不兼容的问题。
在使用Qdrant等其他向量数据库时需要 转换 numpy 数组为列表主要是为了确保数据能被正确处理和序列化,避免类型不兼容的问题。具体原因如下: 序列化兼容性: 很多数据库接口、API 或者 JSON 序列化工具只能处理 Python 的内置类型(…...
mayfly-go开源的一站式 Web 管理平台
mayfly-go 是一款开源的一站式 Web 管理平台,旨在通过统一的界面简化 Linux 服务器、数据库(如 MySQL、PostgreSQL、Redis、MongoDB 等)的运维管理。以下从多个维度对其核心特性、技术架构、应用场景及生态进行详细解析: 一、核心…...
Linux中的yum和vim工具使用总结
在Linux系统管理和文本编辑中,yum和vim是两个非常重要的工具。yum作为包管理器帮助我们轻松安装和管理软件,而vim则是一个功能强大的文本编辑器。下面我将对这两个工具进行详细介绍。 一、YUM包管理器 1. YUM简介 YUM (Yellowdog Updater Modified) 是…...
笔记:代码随想录算法训练营day58:101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
学习资料:代码随想录 文中含大模型生成内容 101. 孤岛的总面积 卡码网:101. 孤岛的总面积 所以找周边都是水的陆地的方法就是找边缘的陆地然后删除它连同它的连通的陆地 深搜 #include <iostream> #include <vector> using namespac…...
Rust语言介绍和猜数字游戏的实现
文章目录 Rust语言介绍和猜数字游戏的实现cargo是什么使用Rust编写猜数字 Rust语言介绍和猜数字游戏的实现 Rust语言是一种系统编程语言,核心强调安全性、并发性以及高性能,由类似于C/C的底层控制能力,性能也非常接近,Rust有一些…...
高并发库存系统是否适合使用 ORM(Hibernate / MyBatis)
在设计高并发的库存管理系统时,数据层的选择至关重要。许多企业开发中习惯使用 ORM(如 Hibernate、MyBatis)来简化数据库访问,但在高并发、高吞吐的场景下,ORM 的适用性往往成为争议焦点。本文将探讨高并发库存系统是否…...
Spring Boot中接口数据字段为 Long 类型时,前端number精度丢失问题解决方案
Spring Boot中接口数据字段为 Long 类型时,前端number精度丢失问题解决方案 在Spring Boot中,当接口数据字段为 Long 类型时,返回页面的JSON中该字段通常会被序列化为数字类型。 例如,一个Java对象中有一个 Long 类型的属性 id …...
Java-servlet(七)详细讲解Servlet注解
Java-servlet(七)详细讲解Servlet注解 前言一、注解的基本概念二、Override 注解2.1 作用与优势2.2 示例代码 三、Target 注解3.1 定义与用途3.2 示例代码 四、WebServlet 注解4.1 作用4.2 示例代码 五、反射与注解5.1 反射的概念5.2 注解与反射的结合使…...
OpenCV Imgproc 模块使用指南(Python 版)
一、模块概述 imgproc 模块是 OpenCV 的图像处理核心,提供从基础滤波到高级特征提取的全流程功能。核心功能包括: 图像滤波:降噪、平滑、锐化几何变换:缩放、旋转、透视校正颜色空间转换:BGR↔灰度 / HSV/Lab 等阈值…...
PostgreSQL:简介与安装部署
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
流畅如丝:利用requestAnimationFrame优化你的Web动画体验
requestAnimationFrame 是前端开发中用于优化动画性能的 API。它允许浏览器在下一次重绘之前执行指定的回调函数,通常用于实现平滑的动画效果。 1.作用 优化性能:requestAnimationFrame 会根据浏览器的刷新率(通常是 60Hz,即每秒…...
OpenCV 基础模块 Python 版
OpenCV 基础模块权威指南(Python 版) 一、模块全景图 plaintext OpenCV 架构 (v4.x) ├─ 核心层 │ ├─ core:基础数据结构与操作(Mat/Scalar/Point) │ └─ imgproc:图像处理流水线(滤…...
代码随想录算法训练营第十五天 | 数组 |长度最小的子数组和螺旋矩阵II
长度最小的子数组 【题目简介】 【自写数组解法】 class Solution:def minSubArrayLen(self, target: int, nums: List[int]) -> int:minLength float(inf)slow 0fast 0cur_sum nums[slow]# 终止条件:fast不能超过最大索引值while slow < fast and fas…...
C++ 入门第27天:异常处理详细讲解
往期回顾: C 入门第24天:C11 多线程基础-CSDN博客 C 入门第25天:线程池(Thread Pool)基础-CSDN博客 C 入门第26天:文件与流操作基础-CSDN博客 C 入门第27天:异常处理详细讲解 前言 在 C 开发中…...
Powershell WSL导出导入ubuntu22.04.5子系统
导出Linux子系统 导出位置在C盘下,根据自己的实际情况更改即可Write-Host "export ubuntu22.04.5" -ForegroundColor Green wsl --export Ubuntu-22.04 c:\Ubuntu-22.04.tar 导入Linux子系统 好处是目录可用在任意磁盘路径,便于迁移不同的设备之间Write-Host &quo…...
中文文献去哪里查找,个人下载知网、万方、维普文献途径
国内三大知识库知网、万方、维普是查找中文文献常用数据库,本文将以实例演示个人下载这三个数据库文献的途径及过程。 先说下途径: 获取知网、万方、维普数据库资源可去文献党下载器网站: 使用方法: 在文献党下载器官网下载安装…...
玩转C#函数:参数、返回值与游戏中的攻击逻辑封装
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
简易shell
自主实现shell done,故意写成,表示先赋值,再判断,分割之后,strtok会返回NULL,刚好让gArgv最后一个元素是NULL,并且while判断结束 Makefile 1 myshell:myshell.c …...
注意力机制,本质上是在做什么?
本文以自注意机制为例,输入一个4*4的矩阵 如下: input_datatorch.tensor([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ],dtypetorch.float) 得到Q和K的转置如下。 此时,计算QK^T ,得到如下结果 第一行第一个位置就是第一条样本和第…...
【机器学习-模型评估】
“评估”已建立的模型 在进行回归和分类时,为了进行预测,定义了预测函数fθ(x) 然后根据训练数据求出了预测函数的参数θ(即对目标函数进行微分,然后求出参数更新表达式的操作) 之前求出参数更新表达式之后就结束了。但是,其实我…...
19681 01背包
19681 01背包 ⭐️难度:中等 🌟考点:动态规划、01背包 📖 📚 import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {static int N 10001…...
Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测
Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测 目录 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预…...
基于CAMEL 的Workforce 实现多智能体协同工作系统
文章目录 一、workforce 简介1.架构设计2.通信机制 二、workforce 工作流程图示例1.用户角色2.工作流程 三、workforce 中重要函数说明1.__init__函数2.add_single_agent_worker 函数3.add_role_playing_worker 函数4.add_workforce 函数 四、基于workforce实现多智能体协调&am…...
炫酷的3D按钮效果实现 - CSS3高级特性应用
炫酷的3D按钮效果实现 - CSS3高级特性应用 这里写目录标题 炫酷的3D按钮效果实现 - CSS3高级特性应用项目介绍核心技术实现1. 基础结构设计2. 视觉效果实现2.1 背景渐变2.2 立体感营造 3. 交互动效设计3.1 悬停效果3.2 按压效果 技术要点分析1. 深度层次感2. 动画过渡3. 性能优…...
AI视频是否会影响原创价值
AI视频是否会影响原创价值 AI视频带来全民创意对原创内容的影响 随着AI技术的发展,AI视频技术在视频领域的影响也逐渐凸显,从自动剪辑、特效生成到基于文本或语音自动生成视频内容,这一系列的进步极大地降低了视频制作的技术门槛与成本。这种…...
代码随想录刷题day50|(回溯算法篇)131.分割回文串▲
目录 一、回溯算法基础知识 二、分割回文串思路 2.1 如何切割 2.2 判断回文 2.3 回溯三部曲 2.4 其他问题 三、相关算法题目 四、总结 一、回溯算法基础知识 详见:代码随想录刷题day46|(回溯算法篇)77.组合-CSDN博客 二、分割回文…...
SpringCloud 学习笔记3(OpenFeign)
OpenFeign 微服务之间的通信方式,通常有两种:RPC 和 HTTP。 简言之,RPC 就是像调用本地方法一样调用远程方法。 在 SpringCloud 中,默认是使用 HTTP 来进行微服务的通信,最常用的实现形式有两种: RestTem…...
Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全
Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全 在区块链世界里,透明性和不可篡改性是两大核心优势,但这也带来了一个悖论——如何在公开账本的同时保障用户隐私?如果你的交易记录对所有人可见,如何防止敏感信息泄露? Python 作为区块链开发中最受欢迎的…...
基于32单片机的无人机直流电机闭环调速系统设计
标题:基于32单片机的无人机直流电机闭环调速系统设计 内容:1.摘要 本文针对无人机直流电机调速需求,设计了基于32单片机的无人机直流电机闭环调速系统。背景在于无人机应用场景不断拓展,对电机调速精度和稳定性要求日益提高。目的是开发一套高精度、响应…...
QT 图表(拆线图,栏状图,饼状图 ,动态图表)
效果 折线图 // 创建折线数据系列// 创建折线系列QLineSeries *series new QLineSeries;// series->append(0, 6);// series->append(2, 4);// series->append(3, 8);// 创建图表并添加系列QChart *chart new QChart;chart->addSeries(series);chart->setTit…...
预测性维护:Ubuntu边缘计算机如何降低电梯故障率
在现代城市中,电梯作为垂直交通的重要工具,其运行状态直接关系到人们的出行安全和效率。传统的电梯监控系统往往依赖于中心化的数据处理,存在响应慢、数据量大、实时性差等问题。而边缘协议网关(Edge Protocol Gateway)…...