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

【论文分享精炼版】 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 引入了不可忽略的开销。

图1. 不同类型的集成 NPU:Type-1 NPU 利用集成 DMA 引擎来检索数据。Type-2 NPU 依靠系统 DMA 引擎进行数据复制,然后使用 ld/st 指令。Type-3 NPU复用了CPU侧的内存访问能力。

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) 次。

图2. NPU 内核中的轻量级地址转换和检查。

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)。

图3. NoC攻击:篡改NoC路由,劫持受害者NPU任务的数据流

Solutions

为解决Scratchpad 和 NoC所面临的威胁,NPU Isolator分别提出了基于ID的隔离机制以及NoC身份验证机制。

(1)基于ID的隔离机制。如图4(b)所示。关键的见解是scratchpad条目和系统内存之间没有地址关联,允许sNPU在任何scratchpad条目中存储数据。因此,scratchpad可以采用比缓存和内存更细粒度、更动态的隔离机制。此外,由于每个scratchpad条目具有较大的有效负载(例如,≥128b),因此一位 ID 状态的资源开销可以忽略不计(<1%)。

图 4. Scratchpad的不同隔离机制:图 (a) 说明了静态Scratchpad分区。图 (b) 演示了基于 ID 的细粒度Scratchpad隔离。

(2)NoC身份验证机制,即peephole。如图5所示。peephole机制为NoC数据包生成身份(head flit)位于源核心,在NoC网络中传播。当目标核收到此 NoC 数据包时,目标核中的peephole根据其身份验证此 NoC 请求。NPU核心的ID状态可以作为peephole机制中的有效身份。为了确保全面的NoC保护,sNPU还需要考虑在多个NPU核上运行的ML任务的路由完整性。除了计算 ML 任务代码的哈希值并将其与预期测量值进行比较的代码完整性检查之外,路由完整性检查还确保实际的 NoC 路由与用户的期望一致。

图 5. NoC 保护:Peephole机制以及代码和路由完整性保证。

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 内核中。

图 6. NPU Monitor:一个轻量级可信软件模块,负责安全 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分享了之前写的一个博客&#xff0c;做了进一步的提炼总结&#xff0c;大家可以看看原文~ 今天分享的论文《sNPU: Trusted Execution Environments on Integrated NPUs》来自2024年ISCA&#xff0c;共同一作为Erhu Feng以及Dahu Feng。并且&#xff0c; 这两位作…...

MyBatis 入门之动态 SQL

文章目录 一、什么是动态 SQL二、MyBatis 中的动态 SQL 标签三、动态 SQL 的使用示例四、总结 在 Java 开发中&#xff0c;MyBatis 是一个非常流行的持久层框架&#xff0c;它提供了强大的 SQL 映射功能和动态 SQL 支持。动态 SQL 可以根据不同的条件动态地生成 SQL 语句&#…...

软工大二学生待办事项:

该文章会常年更新!坚持! 2024.9.10 学习打包部署 记录睡眠 开始刷一个算法 巩固Git版本控制工具的使用 巩固利用Idea使用版本管理工具,SQl编写 抓紧时间了解公司营业执照 坚持到周末再打瓦!...

MongoDB延迟查询

在 MongoDB 中&#xff0c;查看副本集成员之间的副本延迟可以通过以下步骤进行&#xff1a; 使用 rs.status() 命令&#xff1a; 这个命令提供了副本集的详细状态信息&#xff0c;包括每个成员的延迟情况。在 MongoDB shell 中&#xff0c;你可以执行以下命令&#xff1a; rs.s…...

python如何获取html中的所有链接

在Python中&#xff0c;获取HTML页面中的所有链接通常可以通过使用第三方库如BeautifulSoup或lxml来完成。这里&#xff0c;我将提供一个使用BeautifulSoup库的示例&#xff0c;因为它简单易用且功能强大。 首先&#xff0c;你需要安装BeautifulSoup和requests库&#xff08;如…...

79-java static修饰的类能不能被继承

Java中的类可以被final关键字修饰&#xff0c;表示这个类不能被继承。如果一个类被final修饰&#xff0c;那么这个类不能被继承&#xff0c;也就是说&#xff0c;final类不能被继承。 另一方面&#xff0c;static关键字可以用来修饰内部类&#xff0c;这样的内部类是静态内部类…...

MacOS wine中文乱码问题

安装wine 1、brew update 执行失败&#xff0c;提示安装如下 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、管理员 登录 用户管理 商品管理 订单管理 账户管理 截图...

安卓玩机工具-----适合安卓机型的“搞机工具箱” 功能齐全 玩机推荐

搞机工具箱最新版是一款相当出色的电脑端手机工具箱软件&#xff0c;搞机工具箱正式版功能强劲&#xff0c;可以帮助用户不需要root就能够直接对手机进行调节&#xff0c;方便对手机进行更加全面的掌控&#xff0c;搞机工具箱便捷好用&#xff0c;只需要根据文字提示及自己的需…...

数据分析-17-时间序列分析的平稳性检验

1 什么是时间序列 时间序列是一组按时间顺序排列的数据点的集合,通常以固定的时间间隔进行观测。这些数据点可以是按小时、天、月甚至年进行采样的。时间序列在许多领域中都有广泛应用,例如金融、经济学、气象学和工程等。 时间序列的分析可以帮助我们理解和预测未来的趋势和…...

Unity3D Android多渠道极速打包方案详解

在移动应用开发过程中&#xff0c;特别是在使用Unity3D进行Android游戏或应用开发时&#xff0c;多渠道打包是一个常见且重要的需求。不同的渠道&#xff08;如Google Play、华为应用市场、小米应用商店等&#xff09;可能需要不同的配置和包名&#xff0c;手动进行这些操作既耗…...

数据库中的主键和外键分别是什么意思?

让我们来聊聊数据库设计中非常重要的两个概念——主键&#xff08;Primary Key&#xff09;和外键&#xff08;Foreign Key&#xff09;。这两个概念对于保证数据的一致性和完整性至关重要。 主键&#xff08;Primary Key&#xff09; 主键是一个表中的一个或一组字段&#x…...

HTML5中`<ul>`标签深入全面解析

在HTML5的广阔天地里&#xff0c;<ul>标签作为无序列表的代言人&#xff0c;扮演着举足轻重的角色。它不仅能够整洁地罗列信息&#xff0c;还通过丰富的属性和样式选项&#xff0c;为网页设计师提供了无限的创意空间。本文将深入剖析<ul>标签的内核&#xff0c;详细…...

MongoDB日志级别

日志 查看当前的日志级别 根据你提供的 MongoDB 命令结果&#xff0c;命令 db.adminCommand({ getParameter: "logComponentVerbosity" }) 返回了 "ok" : 0&#xff0c;这意味着命令执行失败&#xff0c;没有成功获取到日志级别的配置信息。错误信息 &quo…...

Softmax回归--分类--有监督

输出和类别的维度一样。 一、当我们想将先线性层的输出直接视为概率&#xff0c;存在一些问题&#xff1a; 1.不能限制输出数字总和为1。 2.不能保证都是正数。 所以会使用softmax进行归一化。 二、交叉熵损失 交叉熵是一个衡量两个概率分布之间差异的很好的度量&#xff0…...

Jenkins生成html报告

下载插件 1.需要下载插件 html Publisher plugins 2.下载Groovy(设置css样式&#xff09;&#xff0c;默认没有css样式 在Job配置页面&#xff0c;增加构建步骤Execute system Groovy script&#xff0c;在Groovy Command中输入上面命令&#xff0c;即可&#xff1a; System.…...

牛客——查找字符串

B-你好&#xff0c;这里是牛客竞赛_牛客周赛 Round 59 (nowcoder.com) 返回值是子串或字符在 string 对象字符串中的位置 #include <bits/stdc.h> using namespace std; int T; string s; int main() { cin >> T; while(T --) { cin >>…...

感恩 各位老师们!和滋养你的人在一起,确实很重要——早读(逆天打工人爬取热门微信文章解读)

感恩 各位老师们 引言Python 代码第一篇 洞见 和滋养你的人在一起&#xff0c;确实很重要第二篇 一天 风云突变结尾 &#xff08;不是 现在网上在呢么各种图都有 哈哈哈&#xff09; 引言 今天是什么特殊的日子吗&#xff1f; 没错 教师节 说起这个教师节 我觉得大家更要记住…...

StorageSync数据缓存API

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

Guitar Pro 8.2.1 Build 32 永久中文破解解锁版

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

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表

设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...