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

arm trustzone

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ARM的trustzone并不涉及到具体的crypto算法,只是实现:
- a/ r0 N. J: |
& k1 ]- v6 X5 t  1) 敏感信息的安全存储;
3 N& _4 S5 ?% ~5 C$ s6 o+ H, W. D! V& V3 f( p
  2) 控制bus和debug的安全访问,保证信息不被泄露;3 |' K% f: H! ^- F( M

, p% F/ w3 e& F3 K+ F8 ktrustzone是system_level的实现,涉及到软硬件,硬件方面包括:
( ?1 R0 d# M4 ?, o( ]5 Y. z- z0 u1 C* l
  1) ARM processor;
3 Q7 g' q/ G; |3 A- Z# {; J4 b
( l& b8 w; k' u: a  2) Bus fabric;
! O: O3 G1 E; d3 a& ]% v$ {
+ m& G. U, ~% B  3) system peripheral IP;8 X' g' T' L3 [- i. E

& O7 @5 S( w& j& E硬件devices被attacked的几种方式:, [3 g& N$ o9 d" V% V9 w, U

( {; @; K" s5 b  1) Hack attack,通过植入病毒和木马,来执行一些非法的软件。8 Q5 E* O$ e5 c( y& s) s3 J( l
' X& B8 R9 o' `/ O. W) F$ Q
  2) Shake attack,attackers可以物理访问到device,并且可以实现一些主动的动作,force pins,
% |2 ?. _0 A; @2 u: j
2 M/ [) ^$ R* }+ e. t    利用JTAG,BIST,IO boundary scan,reprogrammming memory device。
+ e) t3 V) Q4 q; ?" j' O: s8 A9 h( L) M- x
  3) Lab attack,attackes可以通过实验室设备,实验device,在silicon的metal layer加探针等操作。
- J' y" N5 ?1 h+ E' C1 m2 V; x( y% {% k$ a2 Y
    危险性极大。+ F' B! ^% I1 Y- g( `% y) |& w

$ R, p( H  n% r& ^" F- P目前硬件中常用的几种security 实现方式:# h5 F4 e' i% Y1 \' R) }4 f

+ {# X/ m: T/ p8 E, e) `1 d  1) 外加hardware security module,像SIM card这样。并不通用,而且成本高。
9 j# D0 V7 f. x, g
3 o5 ~& E- y4 Z  2) 在内部加入自己的hardware security module,security与normal world之间的数据交换复杂,因为没有形成$ G  i9 r: z9 p3 T

) ^/ v9 ?3 p; `1 z      一个系统的解决方案。
; C. A* p$ Q7 I3 O0 u! T) j' E- T6 H; {) o* m
  3) software virtualization,任何带mmu的processor都可以实现,security通过hypervisor来实现,
6 I" t& t7 p% i0 m& L( N, y6 w. g0 z2 {" u
      但是对于DMA和GPU这样的master,没有解决方案。
- T0 O# y* A  g4 _. Y+ \+ W" \0 S- u' O+ s2 m4 J2 Q

% N, {; l: w4 G( g: U4 `& n4 J
8 V, n% D( c+ Atrustzone的硬件architecture:主要分为system achitecture,processor architecture,debug architecture3 g" w3 H- f$ v0 z# G& L
$ s: A; d3 o& Q% W, g
  1) system achitecture:主要是指,bus中已经包含security signal,memory也可以通过增加一根security的信号,来物理上将1 ?: h$ T8 X! W* f# ]9 i1 J
6 @; Y: n) q# W$ V8 j
      硬件bus系统隔绝为两个world。
' {6 E, N$ O9 Q! j( e+ b- |
" T7 h( \. E7 j* F  2) Processor architecture:' [& f8 t* d; u) f, `# d

# c: T5 ~  v2 l% A6 ~      arm-a9之后的processor都直接支持secure,两个virtual processor,之间切换,只能通过! \6 j: x& `% O9 c2 g  k; t" g
9 W7 S0 M/ G( G  P
        指令SMC(Secure Monitor Call),或其他的一些exception,IRQ,FIQ,external Data Abort,external Prefetch Abort
9 r2 o  }* o' W: G1 Y1 Z; |9 r* z3 E5 f/ o2 K( d+ s, n
        当前的processor处在secure还是non-secure,通过coprocessor,CP15中的寄存器SCR(Secure Config Reg)来表示,+ f3 h( W( i2 L8 B

& g1 x6 i0 d( Q! g        其中有一个NSbit,当processor处在monitor状态时,该状态位无效。
, d" C* a& O* v
1 |$ L8 f" v/ `. g      mmu,支持secure扩展,可以看做是两个virtual mmu,其中的TLB(Translation Lookaside Buffers),可以同时包含secure和; V  F8 B0 g1 r4 O2 Z, K8 Q* @- a

4 t0 r* M9 V# Y        non-secure,在切换时,也不需要切换。$ O0 K1 n- U$ ~! c  n

. p; m3 L. {7 C# ~' A8 H* X/ }6 ]      cache,加入secure特性的扩展后,world switch时,不需要再进行cache flush,任何non-lockdown的cache line都可以被evict,
$ c$ J5 T$ A7 `3 o' T! y2 B+ P7 ]: |$ D0 K1 c- L2 h8 H
        与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载。
4 X' U; g  P/ d
6 q# {) k5 g4 Y: C+ K! ?      interrupt,secure的interrupt,的很多控制寄存器,如mask,enable,clear,必须是由security world来访问。' H$ D5 S9 H5 c, K' G
6 C6 T: U& g$ ^0 w5 k
        推荐实现,IRQ应用在normal world,FIQ应用在secure world,monitor状态下,所有的irq被mask掉。4 K* d/ P% J* L/ |% w( t& n8 Y9 G. y
( E' c9 z! t% _$ P
      exception vector,支持TZ的proceesor的有三组exception vector tables,分别是normal world,secure world,: S" q1 G7 M' X2 h7 t

8 L7 R" }) W: U$ r6 v        Monitor mode。各个基地址,可以通过CP15中的VBAR(Vector Base Address Register)+ _7 l3 \$ \* k& O* h

& |! Y8 w8 L) \% B) p9 }      Multiprocessor system,主要分为SMP(Symmetric Multi-processor),AMP(Asymmetric Multi-processor),主要影响
# K5 \% D' W. V# T" [4 |6 E) G6 `5 q; {
        在于软件,AMP结构中,软件调度更加复杂,4 b$ `3 q+ t$ x& F1 c7 s+ u0 c

. s4 t! [3 K$ S+ ~8 `6 P$ q: m* F5 A  f  3) Debug architecture:可以分为processor debug components和system debug components。' |' t2 s' O- q( X' W7 p+ K
) @+ Y7 ~+ P$ @8 I1 o8 D( `
      processor debug:针对secure和privilege加入了更多的enable控制信号,! l* S$ e0 T; @2 b# l& o
) ~* `; f1 c6 o0 ]
        Secure privilege invasive debug(JTAG),SPIDEN signal* D2 W5 A: C8 @2 n

% o0 K1 R; N1 H/ d3 L        Secure privilege non-invasive debug(trace),SPNIDEN signal9 {3 V  o% `# ?5 v  E

' E9 j& {8 I6 e% b' z. B* `! q( s        Secure user invasive debug,SUIDEN signal8 h. c- N: U1 F& L- T
/ V- G6 ]) k& C& y- p4 D
        Secure user non-invasive debug,SUNIDEN signal% |, _; ^3 t0 G6 k( ~% E) X
6 \! `" V: V( o
          secure debug只有在确认安全的环境下,才能打开
$ X. t8 c2 w4 d5 P7 d2 B7 g0 ^3 e1 ?( s$ o! R
        global的enable信号:9 T: n  i/ _2 K
$ Y- z" o2 e4 q5 h! O, h9 O4 g
        global invasive debug mode,DEGEN2 L. r# A) v3 k3 g6 J. U- E6 R

9 C1 x3 j7 {/ c/ x% T8 @: ?; q        global non-invasive debug mode,NIDEN; P. A# u8 x$ t, X8 Q! J6 t
, E$ E& s! Z+ E; ?
        对于multiprocessor debug control,每个cluster中的每个processor都有这些control signal。
6 Q+ T  T* e% A3 C& U
1 n6 n* J1 A  G! R, x# H* h        armv7之后,每个processor内部都有PMU(peRFormance Monitor Unit),内部counter记录processor执行
$ M( M4 o7 f  ~' D8 T% z. ]
- Q" V  v* o) T& N6 V          指令中的各个状态,如cache line evictions等,可以通过CP15的设置,来防止被non-secure非法看到8 R  Q9 H. a+ _% {" @

# T* b, W& w3 x' O- O! v& f0 Y      system debug:通过arm的coresight来保证,
# `( F" K4 t' c  X" R% w$ j- G# D& U/ L
& b2 O6 V  T8 w2 d; j. j
6 R$ v% k3 ~; ~5 j
arm提供的支持TrustZone的hardware的IP;( i! W* t1 j3 c
: W3 B: a' H/ h& u# H' I( ?5 Z' B
  1) TrustZone Protection Controller(TZPC),主要实现对各个peripheral的secure的动态权限设置。再通过bus发送过来的状态,来  P3 t* `/ x+ W4 D  z7 P8 `+ c- m. s5 I7 H

7 C9 M/ a7 u' Y5 n; Y/ e( l6 l      判断,该笔操作是否合法。
7 K: \; B- K3 W- S
0 F* ~6 V8 c' j0 `7 Y6 x      
8 {7 p* n5 K) i. v/ r1 e% k5 \; B; |7 ~  \+ f/ P4 W
  2) TZASC(TrustZone Address Space Controller),典型应用是将区分同一个AXI slave,比如chip外的DRAM,只挂载一个,
* T! q/ k& q: a3 R8 P" y; q3 A
3 G! t: R# |) e6 f, u    但是我们可以将其地址空间分为一半secure,一半non-secure
6 ~) G. d" S! {$ ~: ?* g
: v) ~8 y; T0 g1 {2 w9 r  3) 其他的常用组建,Cache Controller,DMA Controller,interconnect,GIC
/ L+ V4 k  \9 K4 n# u
- W7 R& P, m% o2 d1 e7 ] . g( ~8 g; j6 t5 V5 N; o3 [% }9 l

8 Q. b# I; n( E" b! R6 XTrustZone Software achitecture:软件的实现方式比较灵活,最复杂的是在Secure World单独运行自己的OS(AMP结构),$ S5 [( V4 Y0 \  ~; G# e

6 T& X# t, b3 H9 H- l* P    最简单的是在Secure World,中使用一个标准的lib(SMP结构)。
- B5 a/ I% t& D. ~( Q9 i6 ]- e" b% b! I3 x3 v" a

" i2 f+ `4 ~6 h$ \8 q: z$ Q) d: @, m6 g, E; e
  在一个secure system中,boot是信任链的最底层,是最重要的一部分,TrustZone要求,boot都是开始自Secure World。- N+ ^% n7 y) @$ `, t! r
7 x" u2 C# g; R! p/ Y" S4 D7 Z
    
5 y& k/ J, E/ F" ~6 b9 @
* q$ s& w0 `7 |2 P  secure boot之后,需要加cryptographic checks对bootload进行检查,算法一般选择RSA-PSS,公钥和golden签名也都保存在, h8 E7 d) M: U7 t. Q$ a( s, j

2 w- \0 m" P/ E    device中,boot的时候,进行验证。
( a+ Z" n, l5 [6 u2 o7 i5 t3 A( [9 p

- F# Q2 ]( X: r4 {4 s1 p
" A* \1 a3 U! l. @: G/ l在进行secure world的切换时,从secure到non-secure,可以直接修改CPSR寄存器,直接进行world的切换,. f( T1 e! k' h/ f  M8 L

; U2 }; r$ N6 y7 o  {0 V7 I如果processor中带有NEON,VFP这样的coprocessor reg,进行context-switching,可以选择Lazy context switch,
7 X6 T8 u+ B: Q- W2 n- r0 Y. n! Y6 I2 K) I, v+ _% P! F' I" f# k, R
, R" e% j2 s8 U5 {: o

4 |6 g, f+ S% {# zAARCH64架构中的secure结构:0 ?+ J2 L( O; s
" E% A! a7 J! {
    
) O5 t  u8 R5 T0 E) |; z! B  i6 \% V( s6 I
在软件应用中,secure和normal的interaction:
* }( L5 D7 a5 h+ M8 Z; `: b
' E# _& t& ~6 o; d    1 e) N, ?4 n' C/ \. ], n. [

$ \' j7 B  S$ \+ B9 b/ Y  在软件切换过程中,有一个问题时,secure world的执行,可能会打断normal world的interrupt,- h+ {2 s& H9 @/ l3 i4 V2 G! G0 J9 c

; ?/ a. u& A- b& ^    所以,一般要求secure world使用FIQ。
2 [8 F2 e+ f+ ?& F( b: n4 p7 p+ z
6 m" ~' Q5 ?# `9 @/ G在armv7的AARCH32架构中,secure model与AARCH64是不同的,secure os执行在EL3,所以为了AARCH3和AARCH64能够保持统一,/ L3 c& h" |5 q- t

$ M. I/ o9 }9 v3 O9 Q% G# k    需要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 10:46 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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