使用 ARM TrustZone 防止从非安全世界访问内存区域

2024-01-16

Context

我想拥有一个有钱人GNU/Linux操作系统运行在正常的世界和一个带有集成的小型操作系统Monitor运行在安全世界.

要求

我们必须绝对避免 the 正常的世界访问安全世界内存区域。

Question

具有哪些特征信任区我们需要使用/激活来满足这个要求吗?我想只使用必要的功能来最大限度地减少所需的工作。

Details

我读过很多ARM 信任区文档,我知道TZPC, TZASC,带有安全扩展的MMU,但我不知道如何避免以下威胁:

一旦黑客获得了内核空间的访问权限,如何才能阻止他停用 MMU 并直接访问内核空间?physical的内存区域安全世界?

也许这根本无法想象或不可行?但如果是这样的话,我猜TZPC是为了防止这种情况而强制执行的,对吗?或者,“简单地”使用这两个信任区世界就够了吗?


一旦黑客获得了对内核空间的访问权限,什么才能阻止他停用 MMU 并直接访问安全世界的物理内存区域?

MMU 与 TrustZone 完全无关。因此禁用 MMU 没有任何作用。可能的攻击针对的是监控代码、安全操作系统 API(对于正常世界)、总线保护、启动代码或硬件。这具有安全扩展的 MMU是允许安全世界代码按照正常世界访问内存并相应地出错。

与禁用 MMU 的流氓正常世界内核类似,DMA攻击 https://en.wikipedia.org/wiki/DMA_attack也可以用在传统的管理程序。 TrustZone 的目的就是避免这些攻击。

The TZASC是安全启动代码锁定硬件的一种方法。您可以将其视为在之间划分硬件secure and normal具有读/写访问的可能性。

              | read  | write
 -------------+------------------
 normal super | Y/N   | Y/N
 normal user  | Y/N   | Y/N
 -------------+------------------
 secure super | Y/N   | Y/N
 secure user  | Y/N   | Y/N

前两行适用于所有 ARM 系统。最后两项具体针对信任区。从物理上讲,这些是总线上的信号。这些位是读/写、安全/正常(NS标记位)和超级/用户。每个总线主机将静态分配到一个世界,或者如果主机是 TrustZone 感知的,则它可能是动态的。 CPU 就是一个动态主站示例。对于从机来说,它们要么是存储器(类似 I/O 的大型阵列),要么是小型控制器寄存器组。为了memory,TZASC 允许对内存进行分区。对于较小的寄存器从机,通常会实现更简单的全有或全无总线访问(例如 TZPC)。 TrustZone 对于系统程序员来说非常模糊,因为它可以灵活地允许不同的 SOC 设计。

也许这根本无法想象或不可行?但如果是这样的话,我猜 TZPC 是强制性的,可以防止这种情况发生,对吗?或者,“简单地”使用两个 TrustZone 世界就足够了吗?

TZPC是简单从属安全/正常分区的示例。用于 AMBA APB(高级外设总线)上基于寄存器的 I/O。


[本节旨在作为 TrustZone 架构灵活性的具体示例,让 SOC 实施者创建可能对某些特定应用有用的新颖设备。]

考虑一个系统,其中我们有一个 NAND 芯片 (NFC),但希望允许安全和正常访问,而正常世界无法访问安全数据。如果我们创建一个 TrustZone 感知 NFC 控制器,我们可以拥有两组 I/O 寄存器和 DMA 数据到用户指定的缓冲区。一个寄存器组是安全的,另一个是正常的。 NFC 控制器将是安全主设备,而 NFC 芯片将是安全从设备。当有人访问 NFC 控制器正常寄存器组时,假设的芯片必须检查是否允许访问(即hardware在上面的攻击中)以及动态主控的另一个例子。当它代表正常世界读取时,它会使用 DMANS设置以便应用正常的世界访问权限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ARM TrustZone 防止从非安全世界访问内存区域 的相关文章

  • Amazon Web Services:设置 S3 策略以允许 putObject 和 getObject 但拒绝 listBucket

    我在 Amazon S3 上使用 getObject 和 putObject 请求 并在创建访问存储桶的策略时发现 如果我不允许 listBucket 则会收到 访问被拒绝 错误 这样做的问题是 listBucket 意味着用户可以列出存储
  • Symfony 5.4 Security Bundle,注册后无法登录

    我在 5 4 版本上构建空的新项目 我使用这些命令来构建项目 composer create project symfony skeleton 5 4 testapp54 cd testapp54 composer require weba
  • AES 在汇编中的实现 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 大家好 我正在尝试构建一个代码来演示
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • 非加密用途的最快哈希值?

    我本质上是在准备要放入数据库的短语 它们可能格式错误 所以我想存储它们的简短散列 我将简单地比较它们是否存在 所以散列是理想的 我假设 MD5 在处理 100 000 个请求时相当慢 所以我想知道散列短语的最佳方法是什么 也许推出我自己的散
  • 将 CCtray 与 Jenkins 结合使用,同时启用安全性(使用 HTTPS)

    我将 Jenkins 服务器配置为仅使用 HTTPS 并启用安全性 我也不喜欢任何未登录的人查看仪表板 即使它是空的 在这里 我禁用了 匿名 的 读取 访问权限 到目前为止 所有这些都完全符合我的喜好 但想要通过例如向远程客户端添加一些构建
  • 是否可以在 PHP 中使用 file_get_contents 来破坏 CSRF 令牌验证

    在每个会话的表单上使用令牌的 CSRF 预防方法是一种流行的方法 但是 我不明白这种令牌方式如何保护file get contentsPHP 可以获取跨域文件表单的内容 gt 它可以获取表单上的令牌并使用它 那么这种token方式是如何运作
  • 同步 I/O 是否会使线程繁忙?

    假设我正在同步 I O 套接字上执行 I O 该套接字已准备好read or write手术 这意味着调用线程不会在操作上被阻塞 无论非阻塞 SOCK NONBLOCK 套接字的阻塞性质 但以下事情我不清楚 实际转移何时发生 当套接字标记为
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private
  • 内存调试:如何获取 Linux 用户空间/内核空间中的锁定页面信息

    有什么方法可以获取Linux用户空间 内核空间中的锁定页面 虚拟内存页面 信息 我想了解详细信息 例如 谁锁定了页面 有多少页被锁定 进程名称 谁锁定了页面 还让我了解内核空间和用户空间的内存调试技术 对于内存中的每个页面 都会为其分配标志
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • Rails 安全:完全避免大规模分配

    我倾向于不需要批量分配 http guides rubyonrails org security html mass assignment我的生产代码中的功能 在我的测试代码中 我经常使用它 但在这些情况下我do想要设置任意列 因此 如果在
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 如何检查 NTAccount 对象代表组还是用户?

    使用返回的访问规则时 GetAccessRules True True GetType System Security Principal NTAccount 如何判断每个规则中引用的 NTAccount 对象是用户帐户还是组 Update
  • 保护 ASP.NET 网站中 Elmah RSS 源的安全

    我遵循了这个问题的答案在 ASP NET 网站中保护 Elmah 的安全 https stackoverflow com questions 1245364 securing elmah in asp net website限制对 elma
  • Linux内核container_of宏和C90中的通用容器

    是否有可能实施容器的 http lxr linux no linux tools perf util include linux kernel h L18纯C90中的宏 我不确定如何做到这一点 因为内核实现取决于海湾合作委员会黑客 http
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量

随机推荐

  • HasActivityInjector 无法在 android dagger 2 中解决

    我试图实施有活动注入器在我的 Android 应用程序中 但它显示 HasActivityInjector 无法解析 下面是我在项目中使用的依赖项和插件 apply plugin kotlin kapt and implementation
  • Tomcat:查找目录时不附加尾随“/”

    我在 Tomcat 7 0 22 Java 1 6 MacOS Lion 中部署了 war 存档 战争称为 myapp war 因此 Tomcat 正在服务http localhost myapp http localhost myapp
  • 程序运行时间

    我如何 从程序 我的意思是在我这次要打印 最终返回 之前 找出我的程序运行的时间 提前致谢 edited 非常感谢您的所有回答 但我的程序很短 有没有其他方法可以找出微秒或纳秒的时间 因为使用下面的方法我收到 0 当程序启动时 你会这样做
  • 表单模型绑定 laravel 5.1 多个模型

    我想要 Laracollective 的 Form 包中的多个对象的 Form 模型绑定 如下所示 Form model user vendors array route gt array user update user gt id 我可
  • 为什么主键会自动创建聚集索引

    当我在oracle表中创建主键时 为什么它默认创建 聚集 索引 创建主键时自动创建聚集索引的原因是什么 难道Oracle设计者这样设计Oracle只是他的喜好吗 Oracle 将创建一个索引来管理没有预先存在的索引适用的唯一约束 如果没有索
  • Android - 以编程方式检查开发人员选项?

    我有一个使用意图用相机拍摄照片的应用程序 但最近我遇到了使用 后台进程限制 等开发人员选项的用户遇到的问题 他们关闭了所有后台应用程序 所以除了调用 onPause 和 onResume 之外 我的应用程序也被杀死了 我希望是否有可能检查此
  • SqlServer处于脚本升级模式

    Vista 刚刚完成了众多更新之一 重新启动计算机后 我尝试使用 Sql Server Management Studio 连接到 Sql Server 2008 实例 但收到此错误 连接到 MSSQLSERVER2008 时出错 附加信息
  • 使用 Jabber 发送网络消息

    也问过服务器故障 https serverfault com questions 19586 using jabber to send network messages 我也被建议将其发布在这里 我们需要在其他用户在线提交报告内容时通过网络
  • 如何在 TcxExtLookupComboBox 中使用 TcxCustomDataSource?

    我使用 Devexpress 的 TcxExtLookupComboBox 并尝试实现自定义数据源 我已经像这样设置了自定义数据源 procedure TMainForm FormCreate Sender TObject begin fD
  • 使用 R 将数据从 PDF 导入到 HTML

    有没有办法使用 R 将数据从 pdf 文件导入为 HTML 格式 我尝试使用以下代码 library tm filename file pdf doc lt readPDF control list text layout elem lis
  • Android NFC <技术列表> - 问题

    我想在 Android 上编写我的第一个 NFC 应用程序 为此 我使用 Android 开发人员链接 http developer android com guide topics nfc index html http develope
  • 如何将 FlowDocument 添加到 StackPanel?

    我创建了以下内容class为了有一个easy way显示格式化的WPF 文档中的文本 然而这个解决方案返回一个流程文件 我遇到了麻烦整合我当前应用程序中的这个 FlowDocument 只是添加文本块StackPanels WrapPane
  • 如何在 Python OpenCV 中读取 TIFF 图像的 Alpha 通道?

    我想使用 Python OpenCV 从 tiff 图像中读取 alpha 通道 我正在使用 Enthought Canopy 和 OpenCV 2 4 5 3 模块 我按照 OpenCV 网站的教程使用 cv2 imread 但它似乎不起
  • 通过函数链创建节点和边时,在命令末尾使用 Iterate() 步骤。这一步有什么用呢?

    在 Tinkerpop 3 3 Gremlin 中通过函数链创建节点和边时 在命令末尾使用 Iterate 步骤 这个 iterate 步骤的意义是什么 我在解释其功能的文档中找不到任何提及 iterate 步骤的内容 有人可以向我指出文档
  • 第二次在 foreach 时未在函数内定义变量

    考虑所有这些文件 vars php if local var var foo foo var1 var1 foo1 foo1 else var foo var1 foo1 remote vars remote php is the same
  • Facebook 与 API 版本 2.9 共享自定义参数

    我需要在 Facebook 上分享测验结果 其中包含自定义标题 图片和说明 效果完美4月18日更新至2 9版本之前 但它不适用于 2 9 版本 那我是不是错过了什么 或者 Facebook 不希望我们在 2017 年分享我们网站的自定义 F
  • 高尔夫代码:Mandelbrot 集

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 代码高尔夫的通常规则 下面以Python中的实现为例 from PIL import Imag
  • 如何对“process.platform”的程序撒谎?

    有一个在 Node 上运行的 CLI 可以通过以下方式执行command在命令行上 在其代码中 通过以下方式对 Windows 用户停用了某些功能if process platform win32 process exit 1 现在我想禁用
  • 如何匹配特定的 io::Error 类型?

    我试图一次读入一个文件直到最后 2 个字节 并且我想捕获 EOF 错误 use byteorder BigEndian ReadBytesExt 1 3 4 use std fs File fn main let filename etc
  • 使用 ARM TrustZone 防止从非安全世界访问内存区域

    Context 我想拥有一个有钱人GNU Linux操作系统运行在正常的世界和一个带有集成的小型操作系统Monitor运行在安全世界 要求 我们必须绝对避免 the 正常的世界访问安全世界内存区域 Question 具有哪些特征信任区我们需