【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs
今天在COMPASS分享了之前写的一个博客,做了进一步的提炼总结,大家可以看看原文~
今天分享的论文《sNPU: Trusted Execution Environments on Integrated NPUs》来自2024年ISCA,共同一作为Erhu Feng以及Dahu Feng。并且, 这两位作者今年在加速器安全研究领域还有一篇来自ASPLOS的论文,即《sIOPMP: Scalable and Efficient I/O Protection for TEEs》。值得一提的是,这两篇论文均借助了基于RISC-V的Penglai Enclave,即2021年USENIX的《Scalable Memory Protection in the PENGLAI Enclave》,Erhu Feng为该工作的第一作者,大家感兴趣可以去了解原文。
目录
- Background & Motivation
- sNPU Overview
- Detailed Design
- NPU Guarder: Memory Access Guarder for NPU
- Challenges
- Solutions
- NPU Isolator: Inner Resource Isolation for NPU
- Challenges
- Solutions
- NPU Monitor: Trusted Software Module for NPU
- Challenges
- Solutions
- Evaluation
- Experimental Setup
- Protected Memory Access for sNPU
- ID-based Scratchpad Isolation
- NoC Isolation
- Hardware Cost Analysis
- TCB Size Analysis
Background & Motivation
由于移动设备上人工智能应用的高需求,当前的移动芯片在 SoC 中集成了 NPU 内核,以提高能效和性能。然而,NPU 在 SoC 中的集成引入了新的三个攻击面:
(1)利用受损的NPU攻击CPU侧资源。
(2)NPU的内部攻击。
(3)利用CPU攻击NPU。
为了解决以上安全问题,设计结合 CPU 和 NPU 的 TEE 变得至关重要。
目前针对 CPU-NPU 系统的TEE设计分两种:
(1)可信NPU。该方法暂时将整个 NPU 指定为安全设备,并将整个 NPU 驱动程序迁移到 TEE 中。然而,该解决方案导致 NPU 资源利用率严重不足,并且由于软件堆栈的复杂性导致 TCB 较大。
(2)加密保护。该方法旨在通过内存加密和完整性保护以抵御 DRAM 的物理攻击(例如冻结内存)。然而,这些方法缺乏对 NPU 内部结构的保护,因为 NPU 内部的数据仍然是明文。
此外,直接将 GPU 等其他加速器的 TEE 机制应用于集成 NPU 存在以下两个限制:
(1)GPU TEE 中采用的 IOMMU 等隔离机制对于集成 NPU 来说效率不高,因为 NPU 需要更大的内存带宽。
(2)NPU 具有 scratchpad 和 Networks-on-Chip(NoC) 等专门的硬件结构,这带来了新的攻击面。
因此,NPU TEE 应该防御上述三个攻击面,并满足两个基本要求:最小化运行时性能开销和实现更高的资源利用率。
sNPU Overview
为防御前面所提到的三个攻击面,以及兼顾性能开销的基本要求,sNPU 引入了以下新颖方法:
(1)NPU Guarder。为了防御利用 NPU 外部行为(例如内存访问)的攻击,sNPU 引入了基于 tile 的内存翻译和检查单元,专门为适应 NPU 内存访问模式的特征而设计。这种设计产生(几乎)零运行时开销,同时节省了检查能耗。
(2)NPU Isolator。为了解决利用 scratchpad 和片上网络等 NPU 内结构的新攻击面,sNPU 利用 scratchpad 与主存储器没有关联的观察结果,对其采用更细粒度和动态的隔离机制。同时,sNPU 还结合了 NoC 隔离机制和离线路由检查,保证了 NoC 网络的完整性。
(3)NPU Monitor。为了最大限度地减少 CPU 端恶意软件的潜在攻击,sNPU 减少了 NPU 堆栈的软件 TCB 。sNPU 在安全世界中引入了 NPU Monitor,仅用于必要的安全检查。与此同时,人工智能框架和 NPU 驱动程序等其他软件组件可能仍然不受信任。
Detailed Design
NPU Guarder: Memory Access Guarder for NPU
Challenges
sNPU 专注于在集成的 NPU 上构建 TEE,在设计访问控制机制时会面临以下挑战:
(1)集成的 NPU 具有不同的内存访问路径,这可能会使统一访问控制器的设计变得复杂。如图1所示,一些 NPU(Type-1 和 Type-2)利用单独的 IOMMU/MMU 来限制 NPU 访问,而其他 NPU(Type-3)则依赖 CPU 端的访问检查机制。
(2)NPU 需要更高的内存带宽,这就需要更高效的检查逻辑。
(3)IOMMU/MMU 机制为 NPU 引入了不可忽略的开销。
Solutions
图 2 展示了 NPU Guarder 设计,这是一种利用 NPU 中特定内存访问模式的轻量级内存访问控制器。与 MMU 或 IOMMU 相比,它有两个主要优点:
(1)它具有轻量级设计,无需检查开销。
(2)它可以集成在 NPU 内部。
首先,为了消除传统基于分页的内存访问控制的运行时开销,NPU Guarder 采用粗粒度内存检查和细粒度翻译机制。对于存储器检查,它利用记录连续存储器区域的访问权限的检查寄存器,因为移动系统中的敏感数据通常存储在预先分配的安全存储器区域(例如,TrustZone 安全存储器区域)中。至于地址转换,NPU Guarder 在 tile 级别(例如输入 tile 和输出 tile)提供细粒度的转换寄存器。每个转换寄存器将特定区域从虚拟地址映射到相应的物理地址。与很少修改的检查寄存器不同,转换寄存器可以在 NPU 计算之前更新(如果需要)。
其次,NPU Guarder 将这些检查和转换寄存器集成在 NPU 内核内部,位于 DMA 引擎之前。与独立模块(例如IOMMU)相比,集成设计降低了SoC的复杂性。此外,由于内存检查和转换是在 DMA 请求级别而不是内存数据包级别执行的,因此与 IOMMU 相比,NPU Guarder 可以节省额外的消耗。当接收到 DMA 请求时,DMA 引擎将其分为多个固定大小的内存数据包(例如 64 字节)。因此,NPU Guarder 仅检查一次(并且节省能源),而 IOMMU 需要在内存数据包级别检查 O(N) 次。
NPU Isolator: Inner Resource Isolation for NPU
Challenges
Scratchpad 和 NoC 是 NPU 中用于加速 AI 工作负载的专用结构,但它们也引入了新的威胁:
(1)Scratchpad威胁。例如,NPU驱动程序可以分配一个已被另一个任务使用的scratchpad条目,并且NPU编译器可以强制读取scratchpad中的内容而不需要之前写入。
(2)NoC威胁。例如,如果 NPU 调度程序受到损害,它可以将恶意任务调度到错误的 NPU 核心。因此,攻击者可以拦截从源核心传输的秘密中间结果,或者向受害核心发送恶意 NoC 数据包。通过篡改 NoC 网络的路由完整性,攻击者可以操纵整个 ML 任务(见图3)。
Solutions
为解决Scratchpad 和 NoC所面临的威胁,NPU Isolator分别提出了基于ID的隔离机制以及NoC身份验证机制。
(1)基于ID的隔离机制。如图4(b)所示。关键的见解是scratchpad条目和系统内存之间没有地址关联,允许sNPU在任何scratchpad条目中存储数据。因此,scratchpad可以采用比缓存和内存更细粒度、更动态的隔离机制。此外,由于每个scratchpad条目具有较大的有效负载(例如,≥128b),因此一位 ID 状态的资源开销可以忽略不计(<1%)。
(2)NoC身份验证机制,即peephole。如图5所示。peephole机制为NoC数据包生成身份(head flit)位于源核心,在NoC网络中传播。当目标核收到此 NoC 数据包时,目标核中的peephole根据其身份验证此 NoC 请求。NPU核心的ID状态可以作为peephole机制中的有效身份。为了确保全面的NoC保护,sNPU还需要考虑在多个NPU核上运行的ML任务的路由完整性。除了计算 ML 任务代码的哈希值并将其与预期测量值进行比较的代码完整性检查之外,路由完整性检查还确保实际的 NoC 路由与用户的期望一致。
NPU Monitor: Trusted Software Module for NPU
Challenges
NPU 包含一个由各种组件组成的大型软件堆栈,例如 AI 框架(例如 TensorFlow、PyTorch)、编译器(例如 TVM、CANN)和 NPU 驱动程序。将整个软件堆栈包含在 TCB 中可能会带来潜在的漏洞和安全风险。
Solutions
如图6所示,NPU Monitor由几个模块组成:上下文设置器、可信分配器、代码验证器和安全加载器。值得注意的是,NPU Monitor仅适用于安全的 ML 任务。而对于非安全任务,仅依靠硬件机制来保证安全任务和非安全任务之间的隔离。
(1)上下文设置器。其负责设置NPU安全上下文,其中包括NPU的ID状态、安全任务的检查和翻译寄存器。NPU上下文决定了NPU可以访问的硬件资源,例如系统内存和scratchpad。
(2)可信分配器。其负责在保留的安全内存中分配内存缓冲区,例如输入/输出数据和安全任务模型。它还检查scratchpad是否有重叠。
(3)代码验证器。首先,它将安全任务的代码和敏感模型加载到安全任务队列中。然后,它根据用户的期望计算并验证任务代码的测量结果。
(4)安全加载器。首先,它保证 ML 任务的路由完整性。与传统的 CPU TEE 不同,ML 任务可以利用与 NoC 网络连接的多个 NPU 核心。安全加载程序验证调度的 NPU 内核是否与预期 NoC 网络的拓扑匹配。验证路由完整性后,安全加载器将 ML 任务上传到相应的 NPU 内核中。
除了以上模块之外,NPU Monitor 还有两个辅助组件:trampoline 和安全任务队列。Trampoline 充当非安全 NPU 驱动程序和 NPU Monitor 之间的中介(用于数据传输),而安全任务队列则存储用于调度的安全 NPU 任务。
Evaluation
Experimental Setup
硬件原型:使用Chipyard在FPGA上实现了sNPU的硬件原型。
NPU设计:参考了Gemmini和AuRORA,基于systolic-array的DNN加速器。
CPU侧TEE:基于Penglai,一个RISC-V TEE系统。
模拟工具:使用FireSim进行端到端DNN工作负载的性能评估。
Protected Memory Access for sNPU
(1)性能比较。比较了使用IOMMU(如TrustZone NPU中采用的)和NPU Guarder(sNPU采用)对DNN推理吞吐量的影响。结果显示,IOMMU引入了显著的性能开销,而NPU Guarder则几乎没有性能损失。
(2)检查次数。分析了IOMMU和NPU Guarder在内存事务中的检查请求次数。NPU Guarder由于能够处理连续地址块,因此请求次数大大减少,从而降低了能耗。
ID-based Scratchpad Isolation
(1)性能评估。评估了在不同刷新粒度下,sNPU的基于ID的动态隔离机制与当前TrustZone NPU中采用的粗粒度刷新和静态分区方法的性能影响。结果显示,sNPU的方法提供了更高的灵活性和适应性,允许更高的Scratchpad利用率。
NoC Isolation
(1)微测试。通过微测试比较了使用软件NoC(使用共享内存)、未经授权的NoC和带有peephole机制的NoC的数据传输成本。结果显示,peephole机制在保持安全性的同时,显著减少了延迟并提高了带宽。
(2)应用测试。在真实世界场景下测试了peephole机制的性能。结果表明,与使用共享内存的软件NoC相比,peephole机制能够减少约20%的执行时间。
Hardware Cost Analysis
(1)资源开销。在FPGA上实现sNPU,并与基线NPU和TrustZone NPU进行硬件资源消耗的比较。sNPU的额外资源开销很小,特别是与采用复杂页表遍历的IOMMU相比。
TCB Size Analysis
(1)软件TCB。sNPU设计只引入了一个小的软件TCB,主要由NPU Monitor组成,其代码行数远小于整个NPU软件栈。
相关文章:

【论文分享精炼版】 sNPU: Trusted Execution Environments on Integrated NPUs
今天在COMPASS分享了之前写的一个博客,做了进一步的提炼总结,大家可以看看原文~ 今天分享的论文《sNPU: Trusted Execution Environments on Integrated NPUs》来自2024年ISCA,共同一作为Erhu Feng以及Dahu Feng。并且, 这两位作…...
MyBatis 入门之动态 SQL
文章目录 一、什么是动态 SQL二、MyBatis 中的动态 SQL 标签三、动态 SQL 的使用示例四、总结 在 Java 开发中,MyBatis 是一个非常流行的持久层框架,它提供了强大的 SQL 映射功能和动态 SQL 支持。动态 SQL 可以根据不同的条件动态地生成 SQL 语句&#…...
软工大二学生待办事项:
该文章会常年更新!坚持! 2024.9.10 学习打包部署 记录睡眠 开始刷一个算法 巩固Git版本控制工具的使用 巩固利用Idea使用版本管理工具,SQl编写 抓紧时间了解公司营业执照 坚持到周末再打瓦!...
MongoDB延迟查询
在 MongoDB 中,查看副本集成员之间的副本延迟可以通过以下步骤进行: 使用 rs.status() 命令: 这个命令提供了副本集的详细状态信息,包括每个成员的延迟情况。在 MongoDB shell 中,你可以执行以下命令: rs.s…...
python如何获取html中的所有链接
在Python中,获取HTML页面中的所有链接通常可以通过使用第三方库如BeautifulSoup或lxml来完成。这里,我将提供一个使用BeautifulSoup库的示例,因为它简单易用且功能强大。 首先,你需要安装BeautifulSoup和requests库(如…...
79-java static修饰的类能不能被继承
Java中的类可以被final关键字修饰,表示这个类不能被继承。如果一个类被final修饰,那么这个类不能被继承,也就是说,final类不能被继承。 另一方面,static关键字可以用来修饰内部类,这样的内部类是静态内部类…...

MacOS wine中文乱码问题
安装wine 1、brew update 执行失败,提示安装如下 2、git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow 3、git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow 3、brew update 4、brew in…...

基于Springboot的鲜花销售网站的设计与实现
项目描述 这是一款基于Springboot的鲜花销售网站的系统 模块描述 鲜花销售系统 1、用户 登录 在线注册 浏览商品 鲜花搜索 订购商品 查询商品详情 水果分类查看 水果加购物车 下单结算 填写收货地址 2、管理员 登录 用户管理 商品管理 订单管理 账户管理 截图...

安卓玩机工具-----适合安卓机型的“搞机工具箱” 功能齐全 玩机推荐
搞机工具箱最新版是一款相当出色的电脑端手机工具箱软件,搞机工具箱正式版功能强劲,可以帮助用户不需要root就能够直接对手机进行调节,方便对手机进行更加全面的掌控,搞机工具箱便捷好用,只需要根据文字提示及自己的需…...
数据分析-17-时间序列分析的平稳性检验
1 什么是时间序列 时间序列是一组按时间顺序排列的数据点的集合,通常以固定的时间间隔进行观测。这些数据点可以是按小时、天、月甚至年进行采样的。时间序列在许多领域中都有广泛应用,例如金融、经济学、气象学和工程等。 时间序列的分析可以帮助我们理解和预测未来的趋势和…...
Unity3D Android多渠道极速打包方案详解
在移动应用开发过程中,特别是在使用Unity3D进行Android游戏或应用开发时,多渠道打包是一个常见且重要的需求。不同的渠道(如Google Play、华为应用市场、小米应用商店等)可能需要不同的配置和包名,手动进行这些操作既耗…...
数据库中的主键和外键分别是什么意思?
让我们来聊聊数据库设计中非常重要的两个概念——主键(Primary Key)和外键(Foreign Key)。这两个概念对于保证数据的一致性和完整性至关重要。 主键(Primary Key) 主键是一个表中的一个或一组字段&#x…...
HTML5中`<ul>`标签深入全面解析
在HTML5的广阔天地里,<ul>标签作为无序列表的代言人,扮演着举足轻重的角色。它不仅能够整洁地罗列信息,还通过丰富的属性和样式选项,为网页设计师提供了无限的创意空间。本文将深入剖析<ul>标签的内核,详细…...

MongoDB日志级别
日志 查看当前的日志级别 根据你提供的 MongoDB 命令结果,命令 db.adminCommand({ getParameter: "logComponentVerbosity" }) 返回了 "ok" : 0,这意味着命令执行失败,没有成功获取到日志级别的配置信息。错误信息 &quo…...
Softmax回归--分类--有监督
输出和类别的维度一样。 一、当我们想将先线性层的输出直接视为概率,存在一些问题: 1.不能限制输出数字总和为1。 2.不能保证都是正数。 所以会使用softmax进行归一化。 二、交叉熵损失 交叉熵是一个衡量两个概率分布之间差异的很好的度量࿰…...

Jenkins生成html报告
下载插件 1.需要下载插件 html Publisher plugins 2.下载Groovy(设置css样式),默认没有css样式 在Job配置页面,增加构建步骤Execute system Groovy script,在Groovy Command中输入上面命令,即可: System.…...
牛客——查找字符串
B-你好,这里是牛客竞赛_牛客周赛 Round 59 (nowcoder.com) 返回值是子串或字符在 string 对象字符串中的位置 #include <bits/stdc.h> using namespace std; int T; string s; int main() { cin >> T; while(T --) { cin >>…...

感恩 各位老师们!和滋养你的人在一起,确实很重要——早读(逆天打工人爬取热门微信文章解读)
感恩 各位老师们 引言Python 代码第一篇 洞见 和滋养你的人在一起,确实很重要第二篇 一天 风云突变结尾 (不是 现在网上在呢么各种图都有 哈哈哈) 引言 今天是什么特殊的日子吗? 没错 教师节 说起这个教师节 我觉得大家更要记住…...

StorageSync数据缓存API
uni.setStorageSyncs参数:将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。 uni.setStorageSync函数里面写两个参数,分别是key和值,两个参数名称可以随便取,如果有同名的key,那么后面key的值会覆盖掉前面key的值…...

Guitar Pro 8.2.1 Build 32 永久中文破解解锁版
嗨,亲爱的吉他英雄们和音乐爱好者们! 今天,我要向你们安利一个让无数音乐人疯狂打Call的神奇软件——Guitar Pro 8.2!它不仅仅是个普通的乐谱编辑器,更是你音乐创作路上的超级助手。 软件介绍 Guitar Pro 8永久解锁版…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...