问题标签 [trust-zone]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
347 浏览

arm - i.MX53 QSB 和 ARM TrustZone

我正在探索 i.MX53 QSB 和 TrustZone 扩展。多亏了 U-Boot 引导加载程序,我在安全的世界中运行操作系统。现在我在安全的世界。我有三个问题:

  • 第一个问题是我什么时候应该在安全世界和正常世界之间共享内存和中断?
  • 第二个问题是我如何才能转移到正常世界以便在其上运行 Rich OS?
  • 第三个问题是关于监控模式的代码,我应该在哪里写呢?它是安全世界中的内核模块吗?
0 投票
0 回答
539 浏览

linux-kernel - 使用 U-Boot 加载两个内核映像

如何使用U-Boot在我的主板(i.MX 53 QSB)的 RAM 中加载两个内核映像?(第一个图像将在 Trustzone 的安全世界中运行,第二个在正常世界中运行。)

我在一篇论文中读到我们可以使用这种方法:使用至少应具有以下三个部分的图像:第一个内核映像、第二个 ATAGS blob 和第二个内核映像关于如何实现它的任何想法或是否存在还有其他方法吗?

0 投票
0 回答
152 浏览

arm - ARM Trustzone,Open Virtualization SDK Boot 卡住

我目前正在研究与 ARM Trustzone 相关的东西,所以我发现了这个 Open Virtualization ( http://openvirtualization.org/ ) 我按照Sierra TEE 构建和引导指南中的文档进行构建,它编译没有问题。

但是,当我尝试启动系统时,它似乎永远在“正常世界”中循环,并且日志显示以下内容:

尝试 127.0.0.1... 连接到本地主机。转义字符是'^['。

SW:进入 Secure Main

SW:UART驱动初始化成功挂载文件系统为32,值为0文件系统成功挂载在FAT32 nsk load:load addr = 80000000, startaddr = 90d00000, size = 3aedcc Done tzhyp_guest_context_init:SW: dispatch task id 0x111

它似乎永远在正常世界中循环,并且引导过程卡在这一点上。

如果有人碰巧在此工作,请提供帮助。

0 投票
1 回答
2065 浏览

assembly - 什么是实现 ARM SMC 的简单方法

我正在尝试编写一个发出一个 SMC 调用的程序。搜索了前面的问题,我的理解是Linux内核中没有真正的API来实现ARM SMC?我正在研究基于 msm8974 的原型,并且想知道最好的方法是什么。

我仍在学习部分魔术以及链接器如何映射程序集导出“标签”?宏?(不知道他们叫什么)到C程序。请告诉我是否真的需要通读 GNU 链接器文档以了解这是如何发生的。

@罗斯里奇-谢谢。SMC,Secure Monitor Call,是与 ARM Trust Zone 服务交互的指令。我的问题是如何实现这个调用。这里的大多数帖子和答案都暗示这样的接口在 Linux 内核树上还不可用。所以,我知道我必须在汇编中编写它。@Notlikethat - 嘿伙计。我正在使用不同的平台。为我的平台(Qualcomm Snapdragon)实施这些其他实施在高层次上涉及什么?

@Notlikethat - 这是我在 /arch/arm/kerel 下看到的内容:

也许我需要一个更新的内核?

@Notlikethat - 请您指出有关您提到 EXINOS 和 ... 的实现的文档吗?

@all-感谢您的帮助和解释。阿伦 - 这绝对有帮助。

0 投票
0 回答
902 浏览

arm - armv7 和 armv8 的安全启动顺序不同?

我将使用 arm trustzone 技术构建一个安全系统。但是据说armv7和armv8的安全启动顺序不同。我想知道有什么区别?而且只有安全启动不同或者armv7和armv8的启动顺序不同?

任何形式的帮助表示赞赏。

0 投票
1 回答
573 浏览

linux - 编译Uboot时如何配置?

我按照这个项目中的说明,卡在了Uboot的编译中。
我完全不知道如何进行以下配置
# add CONFIG_RSA, CONFIG_FIT_SIGNATURE, CONFIG_CMD_EXT2 # change the environment config to point to MMC # fix compiled-in config # maybe disable environment manipulation? # maybe change TEXT_BASE, or use mkimage to allow loading by "qemu -bios"?

如何“添加 CONFIG_RSA、CONFIG_FIT_SIGNATURE、CONFIG_CMD_EXT2”和“将环境配置更改为指向 MMC”?什么是环境配置?我在include/configs/vexpress_common.h中找不到任何内容,我应该自己添加吗?如果是这样,语法是什么。

任何帮助将不胜感激。
谢谢。

0 投票
1 回答
453 浏览

linux-kernel - 在普通世界中引导 Linux

我正在i.MX53快速入门板上探索TrustZone(ARM 安全扩展) 。我成功地制作了一个裸机系统:一个安全的世界图像和一个正常的世界图像。我用u-boot将这两个映像加载到我的 ram 中,然后启动初始化监视器系统并将手交给正常世界映像的安全世界。

我想使用相同的系统。但是这次我不想使用普通的世界基本图像,而是使用Linux Kernel Image。当我在安全的世界中时,我做了一些我在 i.MX53 参考手册和 i.MX53 安全参考手册中找到的配置。配置是:

  • 配置 CSU:CSL0-31 to 0x00FF_00FF

  • 配置 TZIC(中断)TZIC_INTSEC0-3 to 0xFFFF_FFFFTZIC_PRIORITY0-31 to 0x1F1F_1F1F以及TZIC_INTCTRL to 0x8001_0001

  • 配置安全配置寄存器:NS=0 IRQ=0 FIQ=0 EA=0 FW=1 AW=1 => 0x30

当我将手交给 linux 内核时,启动过程开始,这是输出的一部分:

调节器:核心版本 0.5

NET:已注册的协议族 16

i.MX IRAM 池:128 KB@0xec840000

未能释放 IRAM 分区

CPU 是 i.MX0 修订版 0.0

未处理的故障:在 0xec82c00c 的非线路取指 (0x1008) 上的外部中止

内部错误: : 1008 [#1] PREEMPT

最后一个 sysfs 文件:

链接的模块:

CPU:0 未污染 (2.6.35.3 #1)

PC 在 mxc_cpu_lp_set+0x1c/0x16c

LR 在 arch_idle+0x60/0x294

电脑:[<8003a958>] lr:[<8003ab08>] psr:60000093

sp:80835f78 ip:00000003 fp:8088fb68

……

正如您在输出中看到的那样,IRAM存在问题(因为通常它会显示 IRAM READY)并且数据中止。在显示与这些错误相关的信息后,Linux 内核启动过程停止。

关于如何解决这个问题的任何想法?我是否缺少任何配置?谢谢

0 投票
1 回答
597 浏览

linux-kernel - 我需要了解 ARM Trustzone 用例

我目前正在了解 ARM trustzone 技术。任何人都可以推荐一些用于在 Zynq 板上进行原型开发的 Trust Zone 基本用例。

0 投票
2 回答
2609 浏览

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

语境

我希望在Normal 世界中运行丰富的GNU/Linux操作系统,在Secure 世界中运行带有集成监视器的小型操作系统。

要求

我们必须绝对避开普通世界才能访问安全世界内存区域。

问题

我们需要使用/激活TrustZone的哪些功能来满足此要求?我只想使用必要的功能来最小化所需的工作。

细节

我已经阅读了很多ARM TrustZone文档,我知道带有安全扩展的TZPCTZASC、 MMU ,但我不知道如何避免以下威胁:

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

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

0 投票
1 回答
601 浏览

linux - TrustZone 内存分区

我正在此链接上阅读有关 ARM Trustzone 的信息。我知道使用 TrustZone,可以将内存划分为安全和非安全区域。供应商可以使用它来运行安全的操作系统。

我很好奇的是,这个分区的粒度支持是什么?仅仅是可以有一块内存标记为“安全”,而每个操作系统只能有一个这样的内存块吗?TrustZone 是否有能力为单个进程分配内存?

假设我有一个 Linux 应用程序的 .so 文件(假设示例)。进程 A 中的相同代码是否可以在虚拟地址 0x1000 到 0x2000 中标记为安全,而在进程 B 中可以在虚拟地址 0x5000 到 0x6000 中标记为安全?