TrustZone初探 (二)

2024-06-03 15:38
文章标签 初探 trustzone

本文主要是介绍TrustZone初探 (二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5. trustzone和中断
中断也是隔离的,安全世界和普通世界有独立的VBAR寄存器,中断向量表。唯独monitor模式下有自己的中断向量表,寄存器是MVBAR,smc指令就是跳到这个向量表。GIC可以配置某个中断号属于安全世界还是普通世界的,有关GIC的安全的配置只有安全世界下才有权限配置。通常,IRQ会被配置成普通世界的中断源,而FIQ配成安全世界的,这是因为ARM上的操作系统比如Linux只用IRQ。当中断来的时候,如果该中断属于当前世界,那么中断就在当前世界处理了,如果不属于,那么会触发切换到monitor模式,monitor模式的代码需要考虑是不是切换到另外的世界来处理中断或是丢弃该中断。CPSR里面的F和A位是用来mask FIQ和external abort中断的,普通世界能不能修改两个bit也是安全世界说了算,SCR里面有禁止这两个bit被安全世界修改的位。
TrustZone初探 <wbr>(二)


6. trustzone的物理内存和外设保护
Trustzone需要物理内存和外设在两个世界之间的隔离,这是安全世界真正在意的东西 --- 因为你所要保护的信息和内容就在内存里或是经过某些外设。
物理内存和外设的隔离保护通过TZASC和TZPC的设置来达到目的。TZASC可以把物理内存分成多个区域,每个区域的访问权限可以灵活配置为安全区域或是非安全区域,甚至可以配置成只有普通世界可以访问。TZPC则是配置不同的外设属于哪个世界。当然了TZASC和TZPC的配置只能在安全世界下进行。
TrustZone初探 <wbr>(二)


7. trustzone和多核
比如四核的soc,每个核都可以配成两个虚拟核,那么总共会有8个世界。虽然cache一致性、中断处理等机制硬件层都尽量避免不同世界互相干扰。但是在系统软件设计上,cache的一致性,多核之间的普通世界和安全世界之间的状态管理和同步都需要精心设计。 如果使用的场景不复杂,最好就配置安全世界只在一个核上运行,所有其他核上的请求都经过这个核最终产生请求,这样简可以简化软件设计,增加系统的可靠性和稳定性。
TrustZone初探 <wbr>(二)

8. trustzone和ACP
ACP(Accelerator Coherence Port)作为AXI slave interface,也带有安全属性,比如某个PCIe是连到ACP端口的,如果PCIe是配置为属于普通世界的,那么ACP产生的事务也是non-secure的,这时候打个比方说ACP的作用region是DDR的区域0-128M,那么0-128M必须配置为属于普通世界 ,或者说可以把linux的DMA zone配置在128M以内,并把这个DMA区域配置为属于普通世界,否则ACP功能就没法用了。

总结,soc启动的时候就开始工作在secure世界,secure启动代码需要做所有的安全方面的初始化和资源配置,并load安全内核和普通世界代码(比如Linux),由于硬件单元的支持,理论上现有的普通世界操作系统代码不需要修改或者很少修改就能正常工作,唯一欠缺的是一个通过安全世界的驱动程序。TrustZone技术中,TEE系统代码开发才是大头,现有的开源项目如openvirtualization以及Op-Tee可以提供不少参考。
另外,TEE技术还需要比较重要的一环就是secure boot,这是整个系统的root of secure,从上电boot就保证要启动的image没被篡改,从而从根本上保证系统的安全性。那又是另外一个话题了。

这篇关于TrustZone初探 (二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027406

相关文章

Java注解初探

什么是注解 注解(Annotation)是从JDK5开始引入的一个概念,其实就是代码里的一种特殊标记。这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。有了注解,就可以减少配置文件,现在越来越多的框架已经大量使用注解,而减少了XML配置文件的使用,尤其是Spring,已经将注解玩到了极致。 注解与XML配置各有

IOS Core Data框架初探

在IOS系统中已经集成了关系型数据库SqLite3数据库,但是由于在OC中直接操作C语言风格的SqLite3相对繁琐,因此Apple贴心的提供了一个ORM(Object Relational Mapping对象关系映射)框架——Core Data让我们在程序中以面向对象的方式,操作数据库。Core Data框架提供的功能相当强大,属于入门容易精通难的东西,值得我们用心专研。现在,就先记录一下我对该

Scala界面Panel、Layout初探

示例代码: package com.dt.scala.guiimport scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scal

Java使用Redis初探

Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象。      服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需要下载相关服务器端程序  ,然后解压安装。因为能力和条件有限,我只简单介绍下windows上如何安装和使用,有兴趣的可以娱乐一下。       服务器端程序下载地址:htt

SQL查询优化器初探

项目中期,特意借了一本SQL优化的书,现将优化器的知识点总结如下: 查询优化器是关系型数据库管理系统的核心之一,决定对特定的查询使用哪些索引、哪些关联算法,从而使其高效运行。查询优化器是SQL Server针对用户的请求进行内部优化,生成执行计划并传输给存储引擎来操作数据,最终返回结果给用户的组件。 查询过程 T-SQL->语法分析->绑定->查询优化->执行查询->返回结果 (1)分析和

初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/30314359 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。

初探swift语言的学习笔记四(类对象,函数)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29606137 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! swift扩展了很多功能和属性,有些也比较奇P。只有慢慢学习,通过经验慢慢总结了。 下面将

初探swift语言的学习笔记三(闭包-匿名函数)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 很多高级语言都支持匿名函数操作,在OC中的block也为大家所熟悉,然面在swift里好像是被

初探swift语言的学习笔记二(可选类型?和隐式可选类型!)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28904115 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 可选类型、隐式可选类型 在swift中,可选类型其根源是一个枚举型,里面有None和Som

初探swift语言的学习笔记一(基本数据类型)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28258805 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 3号,端午刚过,回到公司第一个早上的两小时便贡献给了apple的ios 8 发布会,在看完后,感觉操作