- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读过这样的文件TrustZone Security Whitepaper .
说明CPU、内存等所有资源都除以安全世界 和 正常世界 . Normal World 中的程序无法访问 Secure World 中的资源。您必须调用一个特殊的委托(delegate) SMC 从正常世界切换到安全世界(通过监控模式)。
据我所知,像 Linux 这样的现代操作系统提供了 内核模式和 用户模式 .用户进程不能访问位于内核空间的资源,但可以调用系统调用。
我也知道x86的响铃0/1/2/3 可以保护资源免受较低特权级进程的无效访问。
我的问题是 ARM TrustZone 的 有什么区别?安全/正常世界和 内核/用户模式 .或者 TrustZone 和 x86 的 ring0/1/2/3 有什么区别?
谢谢
编辑问题:将保护模式替换为 响铃0/1/2/3 在我的问题中。
谢谢你的帮助。我花了一些时间来理解和阅读更多的文件。总结,TZ 通过总线、外围设备和 CPU 上的 NS 位标志提供资源隔离。
最佳答案
你在这里混淆了 3 种完全不同的东西。
内核模式/用户模式大约是execution privilege :x86 使用“环”的术语,而 ARM 在其处理器模式中具有特权级别 - 您可以在环 3 和 USR 模式以及环 0 和 SVC 模式之间进行粗略的比较(显然,架构差异意味着它远没有那么简单真的)。
Memory protection是一个不同的概念,涉及将硬件固定到 CPU 以将其内存和 MMIO 访问限制在定义的映射内,否则会引发故障(然后可以进行进一步的开发,例如按需分页的虚拟内存)。在这方面,x86 上的“保护模式”与“实模式”几乎等同于打开或关闭 MMU/MPU。显然,将这个想法与第一个想法结合起来是很有意义的,以允许特权/非特权内存的概念,但是 x86 架构及其进化遗产使得这种耦合人为地强 - 在 ARM 上,当 MMU 时,您仍然拥有所有处理器模式已关闭。
另一方面,TrustZone 是关于完全不同级别的安全和身份验证 - 在系统供应商/运营商和用户之间。在 x86 系统上,您通常可能有一个硬件 TPM,用于安全 key 存储或启动验证等 - 主处理器可以访问的任何内容都不能被认为是安全的,因为用户可以替换在那里运行的任何软件(正常的执行权限机制没有帮助,因为用户可以简单地将整个内核切换为恶意内核)。 TrustZone 的重点是整个系统的硬件支持,它支持虚拟化,在“正常”系统之上保护处理器/内存/外围设备,而不是需要为其塞入大量额外的硬件。例如,您可以简单地将一 block RAM 分区,使其在物理上*无法从正常世界访问,并将“TPM”纯粹作为经过验证的安全世界软件,即使是最高特权的正常世界代码也无法干扰。
在 x86 世界中,您应该查看 Intel 的 Trusted Execution Technology作为最相关的东西,它解决了(给定外部 TPM 支持)在 ARM SoC 中使用 TrustZone 的一些用例。请注意,这不是直接比较——TXT 以 CPU 为中心的性质意味着它实际上只是一个安全启动解决方案。 TrustZone 是系统范围的,更像是一个基本构建 block - 您可以在其上构建安全启动解决方案和/或 TPM,但您也可以构建诸如端到端安全内容路径之类的东西,这是一种以 CPU 为中心的方法不能。
*请注意,从软件的角度来看,我的意思是“物理” - 即它在硬件中,如果正确实现,软件无法绕过它。 TrustZone 明确为 不是 一个实际的物理安全解决方案——它没有也无意提供任何保护,以防止有决心的人将封装从芯片上取下并直接探测硅。
关于security - ARM TrustZone 的安全/普通世界与操作系统的内核/用户模式还是 x86 的 Ring0/1/2/3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27360019/
对此感到疯狂,真的缺少一些东西。 我有webpack 4.6.0,webpack-cli ^ 2.1.2,所以是最新的。 在文档(https://webpack.js.org/concepts/mod
object Host "os.google.com" { import "windows" address = "linux.google.com" groups = ["linux"] } obj
每当我安装我的应用程序时,我都可以将数据库从 Assets 文件夹复制到 /data/data/packagename/databases/ .到此为止,应用程序工作得很好。 但 10 或 15 秒后
我在 cc 模式缓冲区中使用 hideshow.el 来折叠我不查看的文件部分。 如果能够在 XML 文档中做到这一点就好了。我使用 emacs 22.2.1 和内置的 sgml-mode 进行 xm
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
根据java: public Scanner useDelimiter(String pattern) Sets this scanner's delimiting pattern to a patt
我读过一些关于 PRG 模式以及它如何防止用户重新提交表单的文章。比如this post有一张不错的图: 我能理解为什么在收到 2xx 后用户刷新页面时不会发生表单提交。但我仍然想知道: (1) 如果
看看下面的图片,您可能会清楚地看到这一点。 那么如何在带有其他一些 View 的简单屏幕中实现没有任何弹出/对话框/模式的微调器日期选择器? 我在整个网络上进行了谷歌搜索,但没有找到与之相关的任何合适
我不知道该怎么做,我一直遇到问题。 以下是代码: rows = int(input()) for i in range(1,rows): for j in range(1,i+1):
我想为重写创建一个正则表达式。 将所有请求重写为 index.php(不需要匹配),它不是以/api 开头,或者不是以('.html',或'.js'或'.css'或'.png'结束) 我的例子还是这样
MVC模式代表 Model-View-Controller(模型-视图-控制器) 模式 MVC模式用于应用程序的分层开发 Model(模型) - 模型代表一个存取数据的对象或 JAVA PO
我想为组织模式创建一个 RDF 模式世界。您可能知道,组织模式文档基于层次结构大纲,其中标题是主要的分组实体。 * March auxiliary :PROPERTIES: :HLEVEL: 1 :E
我正在编写一个可以从文件中读取 JSON 数据的软件。该文件包含“person”——一个值为对象数组的对象。我打算使用 JSON 模式验证库来验证内容,而不是自己编写代码。符合代表以下数据的 JSON
假设我有 4 张 table 人 公司 团体 和 账单 现在bills/persons和bills/companys和bills/groups之间是多对多的关系。 我看到了 4 种可能的 sql 模式
假设您有这样的文档: doc1: id:1 text: ... references: Journal1, 2013, pag 123 references: Journal2, 2014,
我有这个架构。它检查评论,目前工作正常。 var schema = { id: '', type: 'object', additionalProperties: false, pro
这可能很简单,但有人可以解释为什么以下模式匹配不明智吗?它说其他规则,例如1, 0, _ 永远不会匹配。 let matchTest(n : int) = let ran = new Rand
我有以下选择序列作为 XML 模式的一部分。理想情况下,我想要一个序列: 来自 my:namespace 的元素必须严格解析。 来自任何其他命名空间的元素,不包括 ##targetNamespace和
我希望编写一个 json 模式来涵盖这个(简化的)示例 { "errorMessage": "", "nbRunningQueries": 0, "isError": Fals
首先,我是 f# 的新手,所以也许答案很明显,但我没有看到。所以我有一些带有 id 和值的元组。我知道我正在寻找的 id,我想从我传入的三个元组中选择正确的元组。我打算用两个 match 语句来做到这
我是一名优秀的程序员,十分优秀!