找回密码
 注册
关于网站域名变更的通知
查看: 467|回复: 3
打印 上一主题 下一主题

arm trustzone

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-27 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
ARM的trustzone并不涉及到具体的crypto算法,只是实现:! E- I3 c9 L/ u: _6 [
- i, H& F7 _; k5 I  l, M
  1) 敏感信息的安全存储;
3 h2 t& H4 x( A% H- C. g8 a) p0 s+ o1 \
  2) 控制bus和debug的安全访问,保证信息不被泄露;  T  l* T; W& ]' t

$ r2 W. ]" [& n' Ktrustzone是system_level的实现,涉及到软硬件,硬件方面包括:
% Y1 c9 C: w! U" T9 F$ q% o
" i5 n. q  ^* v  Q1 b  1) ARM processor;9 ?1 u6 F/ M+ _
7 M4 b! Z" E9 t
  2) Bus fabric;# n9 g2 n' ~$ W! i: ]1 o
& T& I% g2 B% o
  3) system peripheral IP;9 O$ K! |% Z8 S9 v% L
, h" Z6 o* `  z; @
硬件devices被attacked的几种方式:
/ F& N$ c# [. P8 T) x7 B0 _6 C$ t2 j$ A# j' i; m
  1) Hack attack,通过植入病毒和木马,来执行一些非法的软件。% p: ~3 ]% [) K! r& o9 E+ v

) K  t# V; \9 V& s/ e3 W  2) Shake attack,attackers可以物理访问到device,并且可以实现一些主动的动作,force pins,: T6 t" B3 j* S0 K9 T( k' v
1 n; Z- X, N# b2 X8 \5 R/ p5 i
    利用JTAG,BIST,IO boundary scan,reprogrammming memory device。
1 B& h  U" v5 m5 b
/ X( j& G3 c# u! q* M  3) Lab attack,attackes可以通过实验室设备,实验device,在silicon的metal layer加探针等操作。- n1 H1 v7 U; c0 {, K/ j0 V. v+ D' [

2 E2 {" ^! h- M+ ~" A0 J8 W    危险性极大。
3 `" u. e1 g( q/ c" i8 y8 ~7 d+ n6 K7 V
目前硬件中常用的几种security 实现方式:# M1 n6 }; r& e! o/ U

% U7 d2 ^# L" _' y6 {2 }# ]  1) 外加hardware security module,像SIM card这样。并不通用,而且成本高。
: T2 j! }$ e: M$ C- p& Q" z( ?
) x% `7 K3 b$ a; w  2) 在内部加入自己的hardware security module,security与normal world之间的数据交换复杂,因为没有形成& g: I$ I' Q' V* V

) i. k$ Y8 z6 ^" Y- Q2 [- h      一个系统的解决方案。
/ p' }0 m; D3 y9 E% d. d  B& b
7 C( \  O9 p& V( k) r7 b' {' o  3) software virtualization,任何带mmu的processor都可以实现,security通过hypervisor来实现,
/ N( e. ]0 y4 L" Y8 O& @" P# U3 t4 `2 H
      但是对于DMA和GPU这样的master,没有解决方案。
) b* Q; Z0 `& Y: l: I# i+ M! o
5 N# z/ ~% R6 L/ N( T
# ^: ?6 K# Y/ ^2 g% N8 Y" Y8 a. O1 M& ^
trustzone的硬件architecture:主要分为system achitecture,processor architecture,debug architecture) x0 r$ R4 [! ?8 B& {
7 s: ?/ X+ K+ r; ^) `
  1) system achitecture:主要是指,bus中已经包含security signal,memory也可以通过增加一根security的信号,来物理上将
* J8 b: h; I8 r3 _. Y) w- p2 F& @9 L0 m/ H
      硬件bus系统隔绝为两个world。
+ A" K1 Q) t7 A1 L
$ S: h) }  h1 A; [, u) y- @$ B" l  2) Processor architecture:
8 I' c, e. m! w  A: x* a( y' N! G+ D, }& r, \
      arm-a9之后的processor都直接支持secure,两个virtual processor,之间切换,只能通过
* D$ W) B' S! \& ~- }) ], ^0 X7 m( K4 ~- c- ?
        指令SMC(Secure Monitor Call),或其他的一些exception,IRQ,FIQ,external Data Abort,external Prefetch Abort" u  Y& ]& }- A

* S8 x" {$ S3 N3 N( V  V6 _        当前的processor处在secure还是non-secure,通过coprocessor,CP15中的寄存器SCR(Secure Config Reg)来表示,
0 G- r0 w: W# {0 N
: w$ r! B, f2 f) q        其中有一个NSbit,当processor处在monitor状态时,该状态位无效。
- C8 Q4 E7 D+ N4 }9 S, V! h0 Q# n5 [5 [. T8 b
      mmu,支持secure扩展,可以看做是两个virtual mmu,其中的TLB(Translation Lookaside Buffers),可以同时包含secure和8 l/ ?1 r6 y6 h
( N' \2 ^& \! g( m6 d& M1 f
        non-secure,在切换时,也不需要切换。
" p9 |( u/ N% O1 y, o
) }4 x  H( y! o# |      cache,加入secure特性的扩展后,world switch时,不需要再进行cache flush,任何non-lockdown的cache line都可以被evict,
( l: @! R, _  z, A: \5 f
- p0 A3 X5 i. P; e        与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载。
: u5 t8 m, R/ b1 ]$ z; O% Z2 n  _5 N) T
      interrupt,secure的interrupt,的很多控制寄存器,如mask,enable,clear,必须是由security world来访问。& F+ d6 L0 ?7 n( G4 j

9 ^8 n6 I4 x* K- h& c        推荐实现,IRQ应用在normal world,FIQ应用在secure world,monitor状态下,所有的irq被mask掉。
( I# z) H( G( y9 f2 m
& S0 p9 X' i/ e1 j) y      exception vector,支持TZ的proceesor的有三组exception vector tables,分别是normal world,secure world,; X1 {6 K" D$ [( ~' H/ `( [
+ [# ]& \( |6 u; h
        Monitor mode。各个基地址,可以通过CP15中的VBAR(Vector Base Address Register)
; V9 L8 [$ H0 e1 `- f) Z( Y
: T& W- ]5 |  J- [- E7 A& |& q      Multiprocessor system,主要分为SMP(Symmetric Multi-processor),AMP(Asymmetric Multi-processor),主要影响3 {4 _  C8 t# g: ?5 I; L2 N( _

! R' ]& {% l0 l        在于软件,AMP结构中,软件调度更加复杂,
% O4 a' C- ^& T$ N" S9 P: K3 y( r' T, t$ a. A: r# i, @* I
  3) Debug architecture:可以分为processor debug components和system debug components。2 \. B. R$ e0 G% C; o- {

1 g5 y; N& P0 v/ j: r% E      processor debug:针对secure和privilege加入了更多的enable控制信号,! o8 b0 L# p! i! t0 C9 {( E1 M  `' N2 Y

/ T% z8 P0 P' P) [7 s0 ?: i        Secure privilege invasive debug(JTAG),SPIDEN signal7 Z+ E$ `, O1 I4 f2 s, p2 F- y
: C1 X3 i, J% A* d# ]
        Secure privilege non-invasive debug(trace),SPNIDEN signal+ @  i, b+ v' [, I7 g

8 L( z0 R# T1 c( d# u6 N        Secure user invasive debug,SUIDEN signal
, O- T: e3 L2 W/ @5 ^* ]% q3 T; n  J8 s0 V9 X; U) C1 Y
        Secure user non-invasive debug,SUNIDEN signal
: @. v$ g7 B9 |2 y- Q# ?1 X8 h
8 N& d5 n7 _+ d+ X, Q# C          secure debug只有在确认安全的环境下,才能打开
3 P2 `: Y. _0 r3 [# _8 b
2 L- h1 Z" Y: O+ Q6 C# Y        global的enable信号:
2 g4 w0 ^% W" Q# o, v$ X0 y! v8 O! B$ _8 L( {$ r- u7 A5 ^
        global invasive debug mode,DEGEN
' Y; P: i& o6 ]9 M5 q6 p8 w( |: a( |9 r3 Z- B
        global non-invasive debug mode,NIDEN
# C* u5 o% G: }0 ]2 J1 J5 F$ W+ ~# b
        对于multiprocessor debug control,每个cluster中的每个processor都有这些control signal。
$ F3 V' _) y7 l( X& q1 m
+ i- C; Q9 d2 N1 A0 Z        armv7之后,每个processor内部都有PMU(peRFormance Monitor Unit),内部counter记录processor执行8 r7 B  |9 {8 p
. M3 U8 i9 j& ~
          指令中的各个状态,如cache line evictions等,可以通过CP15的设置,来防止被non-secure非法看到
, `( R/ Y7 v' S' k$ y8 R3 P( N
$ T9 Z( W2 H. B+ o8 z      system debug:通过arm的coresight来保证,
! `3 b7 j8 D* g& e; k% h& v& }. N% y/ G: ?9 o* Z8 y# L0 J

& T7 U& E5 d0 Z" Z3 g: `! v
& Y' K0 r2 _1 E, @: L) @arm提供的支持TrustZone的hardware的IP;
( f, ~9 |0 |* r% |/ Q% C
" q( r5 a0 @! X/ h  1) TrustZone Protection Controller(TZPC),主要实现对各个peripheral的secure的动态权限设置。再通过bus发送过来的状态,来- }! F: u; }* A
4 K6 L- p- B( n1 u
      判断,该笔操作是否合法。& i/ T$ w/ O% j, z' \. e; a( ^) T  L
* ?" q" j  r7 S5 F; S
      / a) T: s& O7 B" N& v
$ S' S8 A8 ^' k+ v. d- F
  2) TZASC(TrustZone Address Space Controller),典型应用是将区分同一个AXI slave,比如chip外的DRAM,只挂载一个,
" s. ]% p2 P- _6 S/ s$ o* Q: o) G
    但是我们可以将其地址空间分为一半secure,一半non-secure8 R& M& V  |0 o" K) |- F

3 V. p3 l) y; k/ k  3) 其他的常用组建,Cache Controller,DMA Controller,interconnect,GIC
6 ]' n4 m: U$ q$ `0 r/ {
/ Q4 }) `$ ], n4 p" Z
' r7 n" x$ J% v. v0 T1 ?& J" J# b# V6 A9 E* e- R8 g: K
TrustZone Software achitecture:软件的实现方式比较灵活,最复杂的是在Secure World单独运行自己的OS(AMP结构),
4 i- y/ Q: e4 f0 o
, f$ {: R$ L3 S+ M    最简单的是在Secure World,中使用一个标准的lib(SMP结构)。
2 X  `) q7 k/ ]+ G4 T
) l3 {% ~- V7 B0 |
! g' Q/ f4 K4 t6 u) q+ a
2 M" o0 m, k3 f& d+ F  在一个secure system中,boot是信任链的最底层,是最重要的一部分,TrustZone要求,boot都是开始自Secure World。
0 Y, j" c* r5 U2 p& }( G$ J' O/ H+ H: ~: w2 e
    - `/ ^/ {2 B! ^& ]5 Y0 K3 ?( o
6 w6 A/ B" U% @% v/ v: E. {* V9 J  Z
  secure boot之后,需要加cryptographic checks对bootload进行检查,算法一般选择RSA-PSS,公钥和golden签名也都保存在1 [2 h$ \# i6 h% X5 S# Z0 Q

3 I9 C; l  [* y" c8 u% j    device中,boot的时候,进行验证。4 k9 W& I* L* T( z  g
2 o" R# v& _$ Y6 k
9 T) `6 j0 H1 Y% X+ ?

  Q. L+ t9 J' x% `在进行secure world的切换时,从secure到non-secure,可以直接修改CPSR寄存器,直接进行world的切换,# j! e, H+ j2 r0 ]4 c% n& j# c
/ w. [3 O8 M: O& U
如果processor中带有NEON,VFP这样的coprocessor reg,进行context-switching,可以选择Lazy context switch,
1 P* d. X$ A0 H0 X3 k7 @' w9 u* N. W. a. G

4 _% ^& X9 ]/ U
" x1 p' j- ~9 u8 U( x# CAARCH64架构中的secure结构:
2 Z3 Y$ O0 u2 |7 i# _6 C6 ?9 i# ?$ a& |
    
' q1 {4 `9 f. L$ I' [3 ^
- A# p7 n, M, l" o在软件应用中,secure和normal的interaction:8 T& P5 ]+ c' C; C4 e4 r
, E9 X. k% r+ s5 x& X7 B! d+ t
    9 }) F+ c0 Q7 J" m, y
7 [* t) j6 y4 N8 X$ Q
  在软件切换过程中,有一个问题时,secure world的执行,可能会打断normal world的interrupt,
  \6 X- `) |* q/ I" ~- N: @" _7 J- S1 z( G( D- _3 j4 j7 l
    所以,一般要求secure world使用FIQ。# w0 T. q& Y: f7 z4 }" N! h

  T$ {+ M2 I: W4 D8 w% a( U! ]+ g7 r在armv7的AARCH32架构中,secure model与AARCH64是不同的,secure os执行在EL3,所以为了AARCH3和AARCH64能够保持统一,
& A% W- S1 D# s* P* X
' {1 c* B! w7 G( U1 E/ b    需要secure os在secure状态下,和non-secure状态下的TTBR1_EL1不同,

该用户从未签到

2#
发表于 2021-5-27 17:02 | 只看该作者
arm trustzone

该用户从未签到

3#
发表于 2021-5-27 17:07 | 只看该作者
与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载

该用户从未签到

4#
发表于 2021-5-27 17:10 | 只看该作者
arm trustzone
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 11:38 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表