【论文分享精炼版】 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软件栈。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Home版本实现远程桌面——RDP Wrapper,及由于更新导致不可用的解决方法:以win11 22631.3593为例

一、RDP Wrapper工作机制 根据rdpwap.ini文件调用相应windows版本的termsrv.dll. 实用的命令&#xff1a; > net stat -au | findstr 3389 ; 查看端口是否启动 > net stop termservice ; 停止远程桌面 > net start termservice; > mstsc > 二、问题解决 注意查…

93. UE5 GAS RPG 应用负面效果表现

在上一篇文章里&#xff0c;我们实现了添加负面效果GE&#xff0c;并且在添加GE时&#xff0c;也会给角色应用一个负面效果标签作为标识。在这一篇里&#xff0c;我们将通过负面效果标签标识&#xff0c;应用角色身上展现对应的负面效果的表现。 我们将在这篇文章里添加一个自定…

leetcode:2710. 移除字符串中的尾随零(python3解法)

难度&#xff1a;简单 给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾…

vmware 17.6 pro for personal USE初体验

新学期开学了&#xff0c;暑假期间把台式机放在办公室远程&#xff0c;无赖期间经常断电&#xff0c;把我的老台给烧坏了&#xff0c;检测了下固态硬盘和机械硬盘&#xff0c;好歹能用。但是win11的系统奔溃了。就花了半天时间重装。*v* 悲剧的是&#xff0c;一些软件环境必须…

javaWeb【day04】--(MavenSpringBootWeb入门)

01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后&#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师&#xff0c;后端Web开发技术是我们学习的重点。 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目&#xff0c;是一款用于…

python进阶篇-day09-数据结构与算法(非线性结构与排序算法)

非线性结构(树状结构) 特点: 每个节点都可以有n个子节点(后继节点) 和 n个父节点(前驱节点) 代表: 树, 图...... 概述 属于数据结构之 非线性结构的一种, 父节点可以有多个子节点(后续节点) 特点 有且只有1个根节点 每个节点都可以有1个父节点及任意个子节点, 前提: 根节点除…

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)551: T456501 计算矩阵边缘元素之和

题目内容 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。 所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 输入格式 第 1 行包含两个整数&#xff0c;分别为行数 m 和列数 n&#xff0c;两个整数之间空格隔开。 第 2 …

文本字符分割算法尝试

一、基于opencv的分割算法 import cv2 import numpy as np from matplotlib import pyplot as pltimg cv2.imread(scratch.png, 0) # global thresholding ret1, th1 cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # Otsus thresholding th2 cv2.adaptiveThreshold(img…

Windows I/O系统

硬件存储体系 寄存器 处理器内部定义的存储体&#xff0c;它们除了存储功能&#xff0c;往往还兼有其他的能力&#xff0c;比如参与运算&#xff0c;地址解析&#xff0c;指示处理器的状态&#xff0c;等等。寄存器是由处理器内部专门的触发器电路实现的&#xff0c;处理器往…

Java代码审计篇 | ofcms系统审计思路讲解 - 篇3 | 文件上传漏洞审计

文章目录 0. 前言1. 文件上传代码审计【有1处】1.1 可疑点1【无漏洞】1.1.1 直接搜索upload关键字1.1.2 选择第一个&#xff0c;点进去分析一下1.1.3 分析this.getFile()方法1.1.4 分析new MultipartRequest(request, uploadPath)1.1.5 分析isSafeFile()方法1.1.6 分析request.…

关于支付宝小程序多规格选项的时候点击不起反应的原因分析及修改方法

解决方案&#xff1a; watch的时候&#xff0c;对于对象的赋值&#xff0c;最好用深拷贝&#xff0c;即如下图&#xff1a; watch:{ row: function (nv, ov) {var that this;that.indata.row JSON.parse(JSON.stringify(nv));//如果是对象&#xff0c;请用深入的for (va…

《OpenCV计算机视觉》—— 图像边缘检测

文章目录 一、图像边缘检测概述二、常见的图像边缘检测算法&#xff08;简单介绍&#xff09;1.sobel算子2.Scharr算子3.Laplacian算子4.Canny算子 三、代码实现 一、图像边缘检测概述 图像边缘检测是一种重要的图像处理技术&#xff0c;用于定位二维或三维图像中对象的边缘。…

一款企业网盘,支持多种文件存储方式如FTP,SFTP,MINIIO等以及跨平台管理(附源码)

前言 随着数字化转型的推进&#xff0c;企业越来越依赖于云端技术来存储、管理和共享重要的业务文件。传统的本地存储处理方案虽然可靠&#xff0c;但在灵活性、可访问性和协作方面显得力不从心。尤其在远程工作变得日益普遍的今天&#xff0c;如何高-效地管理分散团队之间的文…

Java学习Day40:大战亢金龙!(spring框架之AOP)

AOP&#xff08;面向切面变成&#xff09;&#xff1a;不改变原有代码的情况下&#xff0c;对代码进行功能添加 1.一些概念 抽取出的方法&#xff1a;通知 原始方法&#xff1a;成为连接点&#xff08;可以是程序执行中的任意位置&#xff09;&#xff0c;对应原始的一个个方…

NVDLA专题14:Runtime environment-用户模式驱动

运行时环境&#xff08;runtime environment&#xff09;包括在兼容的NVDLA硬件上运行编译神经网络的软件。 它由两部分组成: 用户模式驱动&#xff08;User Mode Driver, UMD&#xff09;: 这是应用程序的主接口&#xff0c;正如Compile library中所详述的&#xff0c;对神经…

网络药理学:1、文章基本思路、推荐参考文献、推荐视频

文章基本思路 选择一味中药或者中药复方&#xff08;常见的都是选择一味中药&#xff0c;如&#xff1a;大黄、银柴胡等&#xff09;&#xff0c;同时选择一个要研究的疾病&#xff08;如食管癌等&#xff09;获得中药的主要化学成分或者说活性成分&#xff08;有时候也以化合…

第146天:内网安全-Web权限维持各语言内存马Servlet-api类Spring类Agent类

目录 前置知识及资源 案例一&#xff1a; 权限维持-Web-内存马-PHP 案例二&#xff1a; 权限维持-Web-内存马-Python 案例三&#xff1a; 权限维持-Web-内存马-JAVA 案例四&#xff1a; 权限维持-Web-内存马-哥斯拉&冰蝎 哥斯拉 ​编辑 冰蝎 前置知识及资源 什么是…

程序员如何写笔记并整理资料?

整理笔记 word。没错&#xff0c;我也看了网上一大堆软件&#xff0c;还有git管理等等。个人认为如果笔记只是记录个人的经验积累&#xff0c;一个word就够了&#xff0c;那些notepad&#xff0c;laTex个人觉得不够简练。word。 1.word可以插入任何文件附件(目前最大的word 20…

C++笔记---list

1. list的介绍 list其实就是就是我们所熟知的链表&#xff08;双向循环带头结点&#xff09;&#xff0c;但其是作为STL中的一个类模板而存在。 也就是说&#xff0c;list是可以用来存储任意类型数据的顺序表&#xff0c;既可以是内置类型&#xff0c;也可以是自定义类型&…

六西格玛绿带培训多少钱

在探讨“六西格玛绿带培训多少钱”这一主题时&#xff0c;我们不得不深入了解六西格玛方法论在企业质量管理中的重要作用&#xff0c;以及绿带培训作为这一方法论推广和应用的关键环节。六西格玛&#xff0c;作为一种以数据驱动的管理哲学和方法论&#xff0c;旨在通过减少缺陷…