arm trustzone
arm的trustzone并不涉及到具体的crypto算法,只是实现:
1) 敏感信息的安全存储;
2) 控制bus和debug的安全访问,保证信息不被泄露;
trustzone是system_level的实现,涉及到软硬件,硬件方面包括:
1) ARM processor;
2) Bus fabric;
3) system peripheral IP;
硬件devices被attacked的几种方式:
1) Hack attack,通过植入病毒和木马,来执行一些非法的软件。
2) Shake attack,attackers可以物理访问到device,并且可以实现一些主动的动作,force pins,
利用JTAG,BIST,IO boundary scan,reprogrammming memory device。
3) Lab attack,attackes可以通过实验室设备,实验device,在silicon的metal layer加探针等操作。
危险性极大。
目前硬件中常用的几种security 实现方式:
1) 外加hardware security module,像SIM card这样。并不通用,而且成本高。
2) 在内部加入自己的hardware security module,security与normal world之间的数据交换复杂,因为没有形成
一个系统的解决方案。
3) software virtualization,任何带mmu的processor都可以实现,security通过hypervisor来实现,
但是对于DMA和GPU这样的master,没有解决方案。
trustzone的硬件architecture:主要分为system achitecture,processor architecture,debug architecture
1) system achitecture:主要是指,bus中已经包含security signal,memory也可以通过增加一根security的信号,来物理上将
硬件bus系统隔绝为两个world。
2) Processor architecture:
arm-a9之后的processor都直接支持secure,两个virtual processor,之间切换,只能通过
指令SMC(Secure Monitor Call),或其他的一些exception,IRQ,FIQ,external Data Abort,external Prefetch Abort
当前的processor处在secure还是non-secure,通过coprocessor,CP15中的寄存器SCR(Secure Config Reg)来表示,
其中有一个NSbit,当processor处在monitor状态时,该状态位无效。
mmu,支持secure扩展,可以看做是两个virtual mmu,其中的TLB(Translation Lookaside Buffers),可以同时包含secure和
non-secure,在切换时,也不需要切换。
cache,加入secure特性的扩展后,world switch时,不需要再进行cache flush,任何non-lockdown的cache line都可以被evict,
与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载。
interrupt,secure的interrupt,的很多控制寄存器,如mask,enable,clear,必须是由security world来访问。
推荐实现,IRQ应用在normal world,FIQ应用在secure world,monitor状态下,所有的irq被mask掉。
exception vector,支持TZ的proceesor的有三组exception vector tables,分别是normal world,secure world,
Monitor mode。各个基地址,可以通过CP15中的VBAR(Vector Base Address Register)
Multiprocessor system,主要分为SMP(Symmetric Multi-processor),AMP(Asymmetric Multi-processor),主要影响
在于软件,AMP结构中,软件调度更加复杂,
3) Debug architecture:可以分为processor debug components和system debug components。
processor debug:针对secure和privilege加入了更多的enable控制信号,
Secure privilege invasive debug(JTAG),SPIDEN signal
Secure privilege non-invasive debug(trace),SPNIDEN signal
Secure user invasive debug,SUIDEN signal
Secure user non-invasive debug,SUNIDEN signal
secure debug只有在确认安全的环境下,才能打开
global的enable信号:
global invasive debug mode,DEGEN
global non-invasive debug mode,NIDEN
对于multiprocessor debug control,每个cluster中的每个processor都有这些control signal。
armv7之后,每个processor内部都有PMU(performance Monitor Unit),内部counter记录processor执行
指令中的各个状态,如cache line evictions等,可以通过CP15的设置,来防止被non-secure非法看到
system debug:通过arm的coresight来保证,
arm提供的支持TrustZone的hardware的IP;
1) TrustZone Protection Controller(TZPC),主要实现对各个peripheral的secure的动态权限设置。再通过bus发送过来的状态,来
判断,该笔操作是否合法。
2) TZASC(TrustZone Address Space Controller),典型应用是将区分同一个AXI slave,比如chip外的DRAM,只挂载一个,
但是我们可以将其地址空间分为一半secure,一半non-secure
3) 其他的常用组建,Cache Controller,DMA Controller,interconnect,GIC
TrustZone Software achitecture:软件的实现方式比较灵活,最复杂的是在Secure World单独运行自己的OS(AMP结构),
最简单的是在Secure World,中使用一个标准的lib(SMP结构)。
在一个secure system中,boot是信任链的最底层,是最重要的一部分,TrustZone要求,boot都是开始自Secure World。
secure boot之后,需要加cryptographic checks对bootload进行检查,算法一般选择RSA-PSS,公钥和golden签名也都保存在
device中,boot的时候,进行验证。
在进行secure world的切换时,从secure到non-secure,可以直接修改CPSR寄存器,直接进行world的切换,
如果processor中带有NEON,VFP这样的coprocessor reg,进行context-switching,可以选择Lazy context switch,
AARCH64架构中的secure结构:
在软件应用中,secure和normal的interaction:
在软件切换过程中,有一个问题时,secure world的执行,可能会打断normal world的interrupt,
所以,一般要求secure world使用FIQ。
在armv7的AARCH32架构中,secure model与AARCH64是不同的,secure os执行在EL3,所以为了AARCH3和AARCH64能够保持统一,
需要secure os在secure状态下,和non-secure状态下的TTBR1_EL1不同,
arm trustzone的更多相关文章
- An Exploration of ARM TrustZone Technology
墙外通道:https://genode.org/documentation/articles/trustzone ARM TrustZone technology has been around fo ...
- ARM TrustZone白皮书部分阅读
嵌入式系统安全的一些解决方法及缺陷 外部硬件安全模块:在主SoC之外包含一个专用的硬件安全模块或可信元件,e.g. 手机的SIM卡.隔离仅限于可以从非易失性存储器运行的相对静态程序 内部硬件安全模块: ...
- ARM的体系结构与编程系列博客——ARM处理器系列介绍
ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...
- ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播
ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播 Cortex-A9的多喝CPU可以接收和执行一致性广播操作,当其使能并处于SMP模式 ...
- ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联
ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...
- 如何在 arm 官网上找到合适的手册
http://infocenter.arm.com/help/advanced/help.jsp 在这里输入合适的版号即可 这样就可以不用去 CSDN 了 100000_0000_00_EN - AR ...
- [转帖]Marvell第二代ARM处理器ThunderX2解析
Marvell第二代ARM处理器ThunderX2解析 https://www.cnbeta.com/articles/tech/853137.htm 长久以来,服务器数据中心市场一直被x86 CPU ...
- Smart210学习记录-----中断
1. OVERVIEW OF VECTORED INTERRUPT CONTROLLER(概述向量中断控制器) 主要有4个VIC,4个TZIC还有一个很特殊的ARM PrimeCell PL192.主 ...
- STM32、Cortex-A、Cortex-R、Cortex-M、SecurCore
STM32是就是基于Cortex-M3这个核生产的CPU. arm7是arm公司推出的以V4指令集设计出来的arm核--其代表的芯片有s3c44b0 arm9是arm公司推出的以V5指令集设计出来的a ...
随机推荐
- 分析SignalTap的仿真结果
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- [skill][debug][gdb] 使用core dump 进行GDB
core dump 扫盲:https://wiki.archlinux.org/index.php/Core_dump 1. 人为制作 core dump 1.1 实时在线生成core dump. ...
- day4_处理json
说明:#json是一种通用的数据类型,所有的语言都认识.#k - v {}#json串就是一个字符串,不能根据key-value取值#json可以转成字典#json串就是字符串,可放在三引号中校验js ...
- kubernetes的Controller Manager
1. Controller Manager简介 Controller Manager作为集群内部的管理控制中心,负责集群内的Node.Pod副本.服务端点(Endpoint).命名空间(Namespa ...
- 什么是url?
什么是URL? URL是统一资源定位器(Uniform Resource Locator)的缩写,也被称为网页地址,是因特网上标准的资源的地址. URL举例 http://www.sohu.com/s ...
- MySQL无损复制(转)
MySQL5.7新特性:lossless replication 无损复制 https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.h ...
- test TSS Work about
activity01 activity02 FamilyNew workTest
- java取得汉字拼音(pinyin4j)
jar包:pinyin4j.jar 基本用法: String[] pinyin = PinyinHelper.toHanyuPinyinStringArray('重'); 例如“重”字,该方法返回一个 ...
- JavaScript基础学习2
/* 1.把函数作为参数.匿名函数作为参数传递到函数 */ function dogEat(food) { console.log("dog eat " + food); } fu ...
- strlen函数细节
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值. 原型: ...