- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试阅读 TrustZone 白皮书,但很难理解一些基本内容。我对此有一些疑问。它们可能是简单的问题,但我是该领域的初学者:
最佳答案
安全世界的想法是让在那里执行的代码尽可能小和简单 - 履行其职责的最低限度(通常控制对某些资源的访问,如加密 key 或硬件或促进一些安全功能,如加密/解密) .
由于安全世界中的代码量很少,因此可以轻松审核,并且减少了引入错误的表面积。然而,它不意味着安全世界自动“安全”。如果安全世界代码中存在漏洞,则它可以像任何其他安全漏洞一样被利用。
将此与在正常世界中执行的代码进行对比。例如,Linux 内核要复杂得多,也更难审计。有很多内核漏洞和漏洞利用的例子允许恶意代码接管内核。
为了说明这一点,假设您有一个系统,用户可以在其中通过一些质询-响应交易系统付款。当他们想要进行交易时,设备必须等待用户按下物理按钮,然后才能使用加密 key 签署交易并授权付款。
但是,如果某些恶意代码利用内核漏洞并能够在内核模式下运行任意代码呢?通常这意味着彻底失败。该恶意软件能够绕过所有控制机制并读出签名 key 。现在,恶意软件可以向任何它想要的人付款,甚至不需要用户按下按钮。
如果有一种方法允许在 Linux 内核不知道实际 key 的情况下签署交易会怎样?进入安全的世界系统。
我们可以拥有一个小型的安全世界操作系统,其唯一目的是签署交易并持有签名 key 。但是,除非用户按下特殊按钮,否则它将拒绝签署交易。这是一个非常小的操作系统(以千字节为单位),您已经聘请了人员对其进行审核。出于所有意图和目的,安全世界操作系统中没有错误或安全漏洞。
当正常世界操作系统(例如 Linux)需要签署交易时,它会调用 SMC 调用将控制权转移到安全世界(注意,正常世界根本不允许修改/读取安全世界)与它的交易想签。安全世界操作系统将等待用户按下按钮,签署交易,然后将控制权转移回正常世界。
现在,想象一下恶意软件接管 Linux 内核的相同情况。恶意软件现在无法读取签名 key ,因为它处于安全环境中。未经用户同意,恶意软件无法签署交易,因为安全世界操作系统将拒绝签署交易,除非用户按下按钮。
这种用例是安全世界的设计目标。整个想法是安全和正常世界之间的硬件强制分离。从正常世界来看,没有办法直接篡改安全世界,因为硬件保证了这一点。
我没有特别使用 TrustZone,但我想一旦安全世界操作系统启动,就无法直接修改它。我不认为应用程序开发人员应该能够向安全世界操作系统“添加”服务,因为这会破坏它的目的。我还没有看到任何供应商允许第三方向他们的安全世界操作系统添加代码。
为了回答你的最后一个问题,我已经在 answer here 中回答了它。 . SMC 异常(exception)是您从安全世界操作系统请求服务的方式 - 它们基本上是系统调用,但适用于安全世界操作系统。通过将控制权转移到安全世界,恶意代码会获得什么?
关于security - ARM TrustZone 安全操作系统的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40561144/
如主题所述,是否有可能没有 future 的问题?。基本上我发布此线程以供将来引用,以便人们可以观看该场景。mongodb 被限制为 2Gb 的原因是什么?能否请您指出引用资料,以便像我这样的菜鸟可以
我正在使用 Bootstrap 4 轮播。它适用于所有 Windows 和 Android 操作系统,但不适用于 Mac 和 iPhone 操作系统。有什么解决办法吗?这是我的代码github.com
目录 内存管理硬件结构 早期内存的使用方法 分段 分页 逻辑地址,线性地址(intel架构) 虚拟地址 物理地址
页表的一些术语 现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语: 全局目录项,PGD(Page Global Directory) 上级目录项,PUD(
1. 文件路径 绝对路径 绝对路径 (absolute path) : 以一个盘符开头的路径,就是绝对路径 例如这里的 D:\java\IntelliJ IDEA Community Edition
1. 进程介绍 1.1 进程的概念 程序是由指令和数据组成的,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,将数据加载至内存。在指令运行过程中还需要用到磁盘和网络等设备。进程就是用来加载指
1. 文件路径 绝对路径 绝对路径 (absolute path) : 以一个盘符开头的路径,就是绝对路径 例如这里的 D:\java\IntelliJ IDEA Community Edition
我有 REST APIManager 类 - 用于使用服务器 api 的单例。有返回用户Token实体的登录方法; 所有其他 API 方法都使用 token 来发出请求。登录后我应该在哪里存储该 to
当我在学习操作系统类(class)时,我不明白为什么下面代码的输出是这样的 代码: #include #include #include #include int main (int argc
我正在尝试在 C++ 中使用 fork() 和 wait() 系统调用。 我的代码非常简单。但是我收到以下错误: error C3861: 'fork': identifier not found 我
我需要播放不同格式的网络广播。我尝试使用 MPMoviePlayerController 播放广播,但它在 3-4 秒后停止。 var urlAddress = "http://streaming.r
多线程(进阶) 1. 常见的锁策略 1.1 乐观锁 悲观锁 乐观锁 : 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改数据,但是在对数据提交更新的时候,再去判断这个数据在这个期间是否有别人对
如何让内存用起来? 内存使用:将程序放到内存中,PC指向开始地址 那就让首先程序进入内存 让程序从磁盘加载到内存中来,首先需要考虑要将程序代码安放在内存的什么位置 如果把入口地址直接放在0地址处,然后
操作系统 内存 HBase一定需要RAM! 64位 使用64位平台(和64位JVM)。 交换 注意交换,将swappiness设为0。 CPU 确保已将Hadoop设置为使用本机的硬件
我想编写一个脚本,将当前打开的 Windows 移动到某个位置。 理想情况下,我的程序应该是这样的: var window = FindWindow("Winamp"); window.setPos(
以下问题是我对操作系统的测试评论,但我不知道如何回答。我会第一次尝试解决他们的问题,但我也不知道如何开始。 Given the following information for an assembl
在操作系统方面我见过几次这个词。匿名内存 ,但我真的不知道,那是什么。 如果有人问我一些关于它的事情,我真的无法非常确定地说出那是什么。 我也搜索了它的解释,但不幸的是我还没有找到任何令人满意的东西。
在 Abraham Silberschatz 等人的“操作系统概念”第 9 版中,作者说: "Some operating systems support only static linking, i
我知道可用端口有限制(2^16),但我不明白操作系统如何管理这些端口。内部是否有一个微 Controller 可以复用所有打开的端口?端口实际上是如何与操作系统建立连接的?端口是否连接到操作系统中的特
如何激活另一个已最小化的应用程序的窗口? 如果前面有其他窗口,它可以很好地使用 NSRunningApplication 类的 activateWithOptions 方法,但这不适用于最小化的窗口。
我是一名优秀的程序员,十分优秀!