arm trustzone

Posted _9_8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

ARM架构体系

关于ARM型号的问题

ARM体系结构与编程的作品目录

Android 逆向ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

Android 逆向ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

功能最弱的arm处理器