3

我正在尝试阅读 TrustZone 白皮书,但很难理解一些基本内容。我对此有一些疑问。他们可能是简单的问题,但我是这个领域的初学者:

  1. 是什么让安全世界真正“安全”。我的意思是为什么正常世界可能会被篡改,而安全世界却不会?

  2. 谁可以更改安全操作系统?我的意思是添加“服务”?例如,移动支付应用程序的应用程序开发人员可以在安全操作系统中添加一项服务以使用他的应用程序吗?如果是,那么任何开发人员如何添加到安全操作系统并且它仍然是安全的?

  3. 什么可以防止恶意应用程序从正常操作系统引发 SMC 异常并转移到安全操作系统?,回答
4

2 回答 2

7

安全世界的理念是让执行的代码尽可能的小和简单——完成其职责的最低限度(通常控制对加密密钥或硬件等资源的访问,或促进加密/解密等安全功能) .

由于安全世界中的代码量很小,因此可以轻松对其进行审核,并且减少了引入错误的表面积。然而,这并不意味着安全的世界会自动“安全”。如果安全世界代码中存在漏洞,它可以像任何其他安全漏洞一样被利用。

将此与在正常世界中执行的代码进行对比。例如,Linux 内核要复杂得多,也更难审计。有很多内核漏洞和漏洞利用示例允许恶意代码接管内核。

为了说明这一点,让我们假设您有一个系统,用户可以通过一些质询-响应交易系统付款。当他们想要进行交易时,设备必须等待用户按下物理按钮,然后才能使用加密密钥签署交易并授权支付。

但是如果一些恶意代码利用了内核漏洞并且能够在内核模式下运行任意代码呢?通常这意味着彻底失败。该恶意软件能够绕过所有控制机制并读出签名密钥。现在,恶意软件可以向任何它想要的人付款,甚至不需要用户按下按钮。

如果有一种方法允许在 Linux 内核不知道实际密钥的情况下签署交易怎么办?进入安全世界系统。

我们可以拥有一个小型安全世界操作系统,其唯一目的是签署交易并持有签名密钥。但是,除非用户按下特殊按钮,否则它将拒绝签署交易。这是一个非常小的操作系统(以千字节为单位),并且您已聘请人员对其进行审核。出于所有意图和目的,安全世界操作系统中没有错误或安全漏洞。

当普通世界操作系统(例如 Linux)需要签署一个交易时,它会调用 SMC 将控制权转移到安全世界(注意,普通世界根本不允许修改/读取安全世界)与它的交易想签名。安全世界操作系统将等待用户按下按钮,签署交易,然后将控制权转移回正常世界。

现在,想象一下恶意软件接管 Linux 内核的情况。恶意软件现在无法读取签名密钥,因为它位于安全世界中。未经用户同意,恶意软件无法签署交易,因为除非用户按下按钮,否则安全世界操作系统将拒绝签署交易。

这种用例就是安全世界的设计目的。整个想法是安全世界和正常世界之间的硬件强制分离。在正常世界中,没有办法直接篡改安全世界,因为硬件可以保证这一点。

我没有特别与 TrustZone 合作过,但我想一旦安全世界操作系统启动,就无法直接修改它。我不认为应用程序开发人员应该能够向安全世界操作系统“添加”服务,因为这会违背它的目的。我还没有看到任何供应商允许第三方将代码添加到他们的安全世界操作系统中。

为了回答你的最后一个问题,我已经在这里回答了。SMC 例外是您从安全世界操作系统请求服务的方式——它们基本上是系统调用,但用于安全世界操作系统。恶意代码通过将控制权转移到安全世界会获得什么?

  • 您无法从正常世界修改/读取安全世界
  • 当您将控制权转移到安全世界时,您会在正常世界中失去控制权
于 2016-11-12T09:20:04.260 回答
4

是什么让安全世界真正“安全”。我的意思是为什么正常世界可能会被篡改,而安全世界却不会?

安全系统设计人员使其安全。TrustZone 是一个工具。它提供了一种划分物理内存的方法。这可以防止DMA 攻击。TrustZone 通常支持启动时锁定功能。因此,一旦物理映射完成(安全/正常世界权限),它们就无法更改。TrustZone 提供了对中断进行分区以及安全启动的工具。

需要注意的是,安全世界是一个技术术语。这只是与正常世界不同的状态。安全世界的名称并不使其安全!系统设计者必须。它高度依赖于安全资产是什么。TrustZone 仅提供工具来划分可能阻止正常世界访问的事物。

从概念上讲,有两种类型的 TrustZone 安全世界代码。

  1. 一个库 - 这里通常不会在安全世界中使用中断。安全 API 是一个神奇的八球。你可以问它一个问题,它会给你一个答案。例如,某些数字版权管理系统可能会使用这种方法。在正常世界中,密钥将被隐藏且无法访问。
  2. 一个安全的操作系统——这里的安全世界会有中断。这更复杂,因为中断意味着某种先发制人。安全操作系统可能使用也可能不使用 MMU。如果要使用系统缓存,通常需要 MMU。

这是最终 TrustZone 解决方案之间的两大区别。这取决于系统设计和最终应用程序是什么。TrustZone 只是尝试实现这一目标的工具的一部分。

谁可以更改安全操作系统?我的意思是添加“服务”?例如,移动支付应用程序的应用程序开发人员可以在安全操作系统中添加一项服务以使用他的应用程序吗?如果是,那么任何开发人员如何添加到安全操作系统并且它仍然是安全的?

这不是由 TrustZone 定义的。由 SOC 供应商(从 ARM 获得许可并构建 CPU 的人)提供安全启动技术。例如,安全操作系统可能位于 ROM 中且不可更改。其他方法是对安全代码进行数字签名。在这种情况下,可能存在验证数字签名的片上安全 ROM。SOC 供应商将为安全启动提供(通常是 NDA)信息和技术。这通常取决于他们的目标市场。例如,物理篡改保护和加密/解密硬件也可能包含在 SOC 中。

片上 ROM(仅由 SOC 供应商编程)通常具有从不同来源(如 NAND 闪存、串行 NOR 闪存、eMMC、ROM、以太网等)启动的机制。通常,它会有一些一次性可熔存储器 (EPROM),设备/解决方案供应商(为应用程序提供安全保障的人)可以对其进行编程以配置系统。

其他功能包括安全调试、安全 JTAG 等。显然,所有这些都是可能的攻击媒介。

于 2016-11-12T15:43:46.650 回答