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的更多相关文章

  1. An Exploration of ARM TrustZone Technology

    墙外通道:https://genode.org/documentation/articles/trustzone ARM TrustZone technology has been around fo ...

  2. ARM TrustZone白皮书部分阅读

    嵌入式系统安全的一些解决方法及缺陷 外部硬件安全模块:在主SoC之外包含一个专用的硬件安全模块或可信元件,e.g. 手机的SIM卡.隔离仅限于可以从非易失性存储器运行的相对静态程序 内部硬件安全模块: ...

  3. ARM的体系结构与编程系列博客——ARM处理器系列介绍

    ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...

  4. ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播

    ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播 Cortex-A9的多喝CPU可以接收和执行一致性广播操作,当其使能并处于SMP模式 ...

  5. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联

    ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...

  6. 如何在 arm 官网上找到合适的手册

    http://infocenter.arm.com/help/advanced/help.jsp 在这里输入合适的版号即可 这样就可以不用去 CSDN 了 100000_0000_00_EN - AR ...

  7. [转帖]Marvell第二代ARM处理器ThunderX2解析

    Marvell第二代ARM处理器ThunderX2解析 https://www.cnbeta.com/articles/tech/853137.htm 长久以来,服务器数据中心市场一直被x86 CPU ...

  8. Smart210学习记录-----中断

    1. OVERVIEW OF VECTORED INTERRUPT CONTROLLER(概述向量中断控制器) 主要有4个VIC,4个TZIC还有一个很特殊的ARM PrimeCell PL192.主 ...

  9. STM32、Cortex-A、Cortex-R、Cortex-M、SecurCore

    STM32是就是基于Cortex-M3这个核生产的CPU. arm7是arm公司推出的以V4指令集设计出来的arm核--其代表的芯片有s3c44b0 arm9是arm公司推出的以V5指令集设计出来的a ...

随机推荐

  1. [skill][http] http管道化连接

    已知http的请求响应是一对一的. 就是一个请求跟着接下来的响应便是与之配对了. 而另一种方式, 可以依靠顺序, 即发送多个http请求, 然后返回对个http响应. 严格按照顺序将他们对应起来, 称 ...

  2. 主备归档不一致导致的RMAN-08137无法清理归档解决方案

    值班夜里接到归档目录满的告警,执行删除脚本发现报错 RMAN-08137: WARNING: archived log not deleted, needed for standby or upstr ...

  3. elasticsearch 出现“java.lang.OutOfMemoryError: Java heap space”

    默认情况下,Elasticsearch JVM默认使用最小和最大大小为2 GB的堆.迁移到生产环境时,配置堆大小以确保Elasticsearch堆足够的大很重要的. Elasticsearch将通过X ...

  4. linux之无公网ip的自动登录

    场景 对于有公网ip的链接方式我们都比较清楚了,但是有些服务器不允许直接登录或者没有直接登录的公网ip,所以只能通过一个可以直接登录的堡垒机跳转.这时需要你手动去敲ssh远程链接命令(例如:ssh r ...

  5. 20165336 学习基础与C语言基础调查

    20165336 技能学习心得与c语言学习 一.心得体会 做教练 从老师的健身教练健身学员的学习关系中我懂得了学生应该有自主的学习意识,要有计划地去训练.去流汗,并且要以100分的要求严于律己,老师是 ...

  6. MUI框架a链接href跳转失效解决方法,解决MUI页面不会滚动的方法

    //解决 所有a标签 导航不能跳转页面 mui('body').on('tap','a',function(){document.location.href=this.href;}); //解决MUI ...

  7. Python开发【笔记】:接口压力测试

    接口压力测试脚本 1.单进程多线程模式 # #!/usr/bin/env python # # -*- coding:utf-8 -*- import time import logging impo ...

  8. Java 二进制数据转成文件

    SqlServer数据库中,存储文件的字段的类型是image,对应的Java类型是byte[],下面的函数将演示如何把读取出来数据放入指定目录.当然,首先需要从数据库读出,然后调用该方法. impor ...

  9. SQL查询优化:详解SQL Server非聚集索引(转载)

    本文是转载,原文地址 http://tech.it168.com/a2011/1228/1295/000001295176.shtml 在SQL SERVER中,非聚集索引其实可以看作是一个含有聚集索 ...

  10. python练习题-day6

    1.老男孩好声⾳选秀⼤赛评委在打分的时候呢, 可以进⾏输入. 假设, 老男孩有10个评委. 让10个评委进⾏打分, 要求, 分数必须⼤于5分, ⼩于10分. pingwei=["a" ...