SMMU软件指南之使用案例(Stage 2使用场景)

安全之安全(security²)博客目录导读

目录

一、第二阶段用例Stage 2 use cases

1、虚拟机设备分配

2、带客户操作系统 SMMU 功能的虚拟机设备分配

3、媒体保护

4、主机隔离


本博客描述以下使用场景:

  • 二级转换使用场景Stage 2 use cases

本节中的 Linux 描述基于版本 6.4。某些使用场景尚未在此版本中实现,可能在后续版本中实现或仍在开发中。相关信息在每个使用场景中注明。

一、第二阶段用例Stage 2 use cases

本节描述了第二阶段翻译的应用场景。

1、虚拟机设备分配

虚拟机管理程序可以将设备分配给不可信的虚拟机,并配置 SMMU 以保护系统其他部分免受该虚拟机控制设备的影响。

PE 的第二阶段转换将设备 MMIO 寄存器映射到 IPA 空间,就好像客户操作系统在物理机器上运行一样。SMMU 中的第二阶段转换将虚拟机的客户物理内存映射到设备用于 DMA。客户操作系统似乎在物理机器上运行,且设备是直接连接的。客户通过 IPA 编程设备,无需第一阶段转换。设备分配允许设备像物理机器上的直接连接设备一样访问任何客户内存。

PE 第二阶段转换表可以直接与 SMMU 共享,或者 SMMU 使用的单独转换表与 PE 表保持同步。SMMU 和 PE 使用相同的 IPA 地址空间。

有些设备可能不容忍 DMA 页面错误,包括被分配到虚拟机的设备。许多虚拟机管理程序通过在有设备分配给客户时将虚拟机的所有内存固定来避免 DMA 上的页面错误。

在 Linux 中,通过主机内核的 VFIO 子系统,用户空间虚拟机管理器 (VMM)(如 QEMU)可以独占管理设备。在有设备分配的虚拟机中,虚拟机应能够像在主机中一样看到完全相同的设备。将设备分配给客户,可以在客户中获得与主机中几乎相同的性能。

对于此用例,Linux 中的 SMMU 使用单独的翻译表。然而,IPA 到 PA 的映射与虚拟机的第二阶段翻译表相同。SMMU 默认使用第一阶段转换,尽管逻辑上是第二阶段转换。VMM(如 QEMU)可以选择使用第二阶段转换,但通常使用第一阶段转换,因为 IPA 到 PA 的映射相同。

2、带客户操作系统 SMMU 功能的虚拟机设备分配

如果虚拟机管理程序将设备分配给虚拟机,也可以为客户分配一个 SMMU 接口,以便虚拟机和被分配的设备也能享受第一阶段的功能。为此,将一个软件模拟的虚拟 SMMU(简称 vSMMU)分配给虚拟机。虚拟机管理程序将 vSMMU 的操作翻译为实际 SMMU 的操作。

客户操作系统可以使用任何第一阶段用例,配置和翻译表在其分配的 SMMU 接口中编程。虚拟机管理程序维护的第二阶段翻译表嵌套在虚拟机维护的第一阶段翻译表之下。例如,如果客户操作系统使用用户空间设备驱动程序,第一阶段翻译表保护客户用户空间进程的 IPA 空间,虚拟机管理程序的第二阶段翻译表则保护主机的物理地址空间免受客户控制的 DMA 的影响。

这种情况也可以通过仅一个实际的转换阶段和软件影子翻译表支持。虚拟机管理程序监控客户在 vSMMU 接口中编程的配置和翻译表指针,将客户的第一阶段翻译表与管理程序的第二阶段表合并为单一的影子翻译表。客户发送给 vSMMU 的失效命令会触发影子表的重新更新。

在 Linux 中,目前不支持嵌套的第一阶段和第二阶段转换。然而,与虚拟机设备分配相似,仍需要在虚拟机启动前将所有客户内存固定,以填充第二阶段表。当前支持影子翻译表,但在虚拟机中不使用 vSMMU,而是使用半虚拟化的 IOMMU 或 virtio-iommu。virtio-iommu 允许客户通过映射/解除映射(map/unmap)接口将 IOVA 到 IPA 的映射传递给主机,主机代表客户在 SMMU 中安装 IOVA 到 PA 的映射。Linux 和多个 VMM(如 QEMU、cloud-hypervisor 和 crosvm)实现了 virtio-iommu,其主要应用是客户中的用户空间设备驱动程序。

3、媒体保护

一些受保护的媒体解决方案使用 SMMU 来保护特定的媒体缓冲区,这些缓冲区可以是固定内存或由不可信操作系统提供。通过让设备(如加密引擎和视频解码器)共享不可信操作系统的 IPA 内存视图,但使受保护的媒体缓冲区对不可信操作系统不可见或不可访问,从而实现媒体保护。这通过对不可信操作系统使用更严格的第二阶段权限,而对设备使用更宽松的权限实现。这种用例实际上不需要转换,即第二阶段可以是身份映射。缓冲区的配置在固件(受保护媒体管理器)和不可信操作系统的合作下完成。

固件负责创建不可信操作系统和设备的第二阶段翻译表,并确保系统配置始终符合预定义的策略。该策略指定了一组约束条件,包括系统中某个设备是否应被允许访问特定内存位置。不可信操作系统和设备使用不同的第二阶段翻译表。SMMU 的第二阶段翻译表映射预先安排的受保护媒体缓冲区页面,允许设备访问。然而,不可信操作系统的 IPA 空间可能不会映射这些页面,或者映射时权限较低,以限制不可信操作系统对这些缓冲区的访问。

4、主机隔离

pKVM 虚拟机管理程序在 KVM 的主机和虚拟机管理程序部分之间提供权限隔离,使虚拟机管理程序受客户信任,但主机不受信任。主机在启动时最初是可信的,但在 KVM 初始化后其权限减少,因此如果攻击者后来获得主机的大量攻击面,也无法访问客户数据。

在当前的 pKVM 中,主机仍然可以指示 GPU 等 DMA 能力的设备访问客户和虚拟机管理程序内存,这破坏了这种隔离。阻止 DMA 攻击需要由虚拟机管理程序拥有的 SMMU。

实现主机隔离的最简单方法是共享将 IPA 转换为 PA 的第二阶段页表。主机在 CPU 上可以访问的内容也可以通过 DMA 访问。主机无法访问的内存(因为交付给了虚拟机管理程序或客户)同样不能被 DMA 设备访问。

这种机制有一些限制。pKVM 通常以惰性方式填充主机的第二阶段页表,即在主机首次访问时才填充。这依赖于 CPU 的页面错误机制。然而,DMA 通常无法触发页面错误,因为 Linux 当前不支持第二阶段 SVA。因此必须在启动时填充所有第二阶段页表。由于 IPA 到 PA 的映射是平坦的,所以这是容易的。

当将一些页面交付给客户时,这会涉及从主机的第二阶段页表中移除这些页面。为了节省内存并有效利用 TLB,第二阶段转换使用块映射(如 1GB 或 2MB 块),而不是单独的 4KB 单元。在从该范围中捐赠页面时,虚拟机管理程序必须移除块映射,并将其替换为不包含捐赠页面的表。因为设备可能同时在该范围内的其他页面上执行 DMA,这种替换操作必须是原子的。否则,在映射无效的短时间内,DMA 可能会到达 SMMU 并导致致命中止。CPU/SMMU 架构仅在支持 FEAT_BBM 时支持块映射的原子替换。有关 FEAT_BBM 的详细信息,请参阅 Arm A-profile 架构参考手册。

一种灵活的替代方法是在 SMMU 中使用与 CPU 页表完全分离的私有页表。通过此方法,SMMU 可以实现一组精简的功能,甚至仅实现一个转换阶段。这还为主机提供了虚拟的 I/O 地址空间,能够更高效地分配大缓冲区内存,适用于地址能力有限的设备。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式linux中socket控制与实现

一、概述 1、首先网络,一看到这个词,我们就会想到IP地址和端口号,那IP地址和端口各有什么作用呢? (1)IP地址如身份证一样,是标识的电脑的,一台电脑只有一个IP地址。 (2)端口提供了一种访问通道,服务器一般都是通过知名端口号来识别某个服务。例如,对于每个TCP/IP实…

Nginx:动静分离

什么是动静分离? 动静分离 是指将网站中的静态资源(如图片、样式表、脚本等)和动态内容(如 PHP、Python、Node.js 等后端生成的内容)分开部署和处理。这样做的好处是可以利用不同的服务器或缓存策略来优化不同类型的资源。 动静分离的好处 提高性能:静态资源可以直接从…

PADS Layout 差分线设计规则及其设计规则约束的详细过程步骤

一般我们的电路板有很多的差分线,有90欧姆的差分线,也有100欧姆的差分线,90欧姆的差分线主要是针对USB的差分线,特别是对于USB HUB的板子,那么我们就要设置差分线。一般我们设置差分线,一般要切换到Router里面来设置,如下所示: 那么设置差分对,一般要对原理图和Router…

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2

概述(讲讲python基本语法和第三方库)

我是北子,这是我自己写的python教程,主要是记录自己的学习成果方便自己日后复习, 我先学了C/C,所以这套教程中可能会将很多概念和C/C去对比,所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…

redux用法总结

redux用法总结 目录 基本概念工作原理核心概念基本使用异步操作 Redux ThunkRedux Saga React 集成Redux Toolkit最佳实践 基本概念 什么是 Redux? Redux 是一个可预测的状态容器,用于管理 JavaScript 应用的状态。它遵循三个基本原则: …

Gitee上传项目代码教程(详细)

工具必备:Git Bash 上传步骤 1.在Gitee创建项目仓库 2.进入本地项目目录 右键打开Git Bash here 3.配置用户名和邮箱 如果之前给git配置过用户名和邮箱可跳过 查看Git是否配置成功:git config --list git config --global user.name "xxx"…

ARM CCA机密计算安全模型之安全生命周期管理

安全之安全(security)博客目录导读 目录 一、固件启用的调试 二、CCA系统安全生命周期 三、重新供应 四、可信子系统与CCA HES 启用 CCA(机密计算架构)的安全系统是指 CCA 平台的实现处于可信状态。 由于多种原因,CCA 启用系统可能处于不…

计算机视觉CV期末总复习

1.计算机视觉基础 数字图像表示 二值图像 仅包含黑白两种颜色的图像,只使用1个比特为(0黑或1白)表示 彩色图像:分不同的颜色空间 gray灰度图像 每个像素只有一个采样颜色,取值范围0--255,为8比特位&a…

web安全常用靶场

这里写自定义目录标题 phpstydy2018pikachuxss-labs phpstydy2018 网盘地址 提取码: nxnw ‌phpStudy是一款专为PHP开发者设计的集成环境工具,主要用于简化PHP开发环境的搭建过程。‌ 它集成了Apache、MySQL、PHP等核心组件,用户只需进行一次性安装&a…

每天40分玩转Django:Django实战 - 在线打印服务系统

Django实战 - 在线打印服务系统 一、系统功能概览表 模块主要功能技术要点文件上传PDF/Word文件上传、文件验证文件处理、MIME类型验证异步处理文件转换、打印队列Celery、Redis通知邮件打印状态通知、订单确认SMTP、邮件模板 二、系统架构设计 2.1 模型设计 # models.py …

WPS计算机二级•数据查找分析

听说这里是目录哦 通配符🌌问号(?)星号(*)波形符(~) 排序🌠数字按大小排序以当前选定区域排序以扩展选定区域排序 文字按首字母排序 快速筛选分类数据☄️文字筛选数字筛选颜色筛选…

基于海思soc的智能产品开发(camera sensor的两种接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 对于嵌入式开发设备来说,除了图像显示,图像输入也是很重要的一部分。说到图像输入,就不得不提到camera。目前ca…

网安入门之MySQL后端基础

数据库 (Database) 数据库是指长期存储在计算机中的,有组织、可共享的数据集合。它通过表、列、行等结构来组织数据,目的是使数据可以高效存储、检索和管理。数据库通常包括多个表,每个表存储与特定主题或对象相关的数据 数据库管理系统 (D…

概率基本概念 --- 离散型随机变量实例

条件概率&独立事件 随机变量 - 离散型随机变量 - 非离散型随机变量 连续型随机变量奇异性型随机变量 概率表示 概率分布函数概率密度函数概率质量函数全概率公式贝叶斯公式 概率计算 数学期望方差协方差 计算实例 假设有两个离散型随机变量X和Y,它们代…

w139华强北商城二手手机管理系统

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

LLM大语言模型中RAG切片阶段改进策略

切片方法的特点和示例: Token 切片 适合对 Token 数量有严格要求的场景,比如使用上下文长度较小的模型时。 示例文本: “LlamaIndex是一个强大的RAG框架。它提供了多种文档处理方式。用可以根据需选择合适的方法。” 使用Token切片(chunk…

Earth靶场

打开靶机后使用 arp-scan -l 查询靶机 ip 我们使用 nmap 进行 dns 解析 把这两条解析添加到hosts文件中去,这样我们才可以访问页面 这样网站就可以正常打开 扫描ip时候我们发现443是打开的,扫描第二个dns解析的443端口能扫描出来一个 txt 文件 dirsear…

Kafka 消费者专题

目录 消费者消费者组消费方式消费规则独立消费主题代码示例(极简)代码示例(独立消费分区) offset自动提交代码示例(自动提交)手动提交代码示例(同步)代码示例(异步&#…

重庆大学软件工程复试怎么准备?

重大软件复试相对来说不算刁钻,关键是对自己的竞赛和项目足够了解,能应对老师的提问。专业课范围广,英文文献看个人水平,难度不算大,整体只要表现得得体从容,以及充分的准备,老师不会为难你。 …