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

arm trustzone

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ARM的trustzone并不涉及到具体的crypto算法,只是实现:5 N) q- R: ?0 S1 M
% P$ Y- t& l6 s2 R  z% F
  1) 敏感信息的安全存储;
+ j$ |+ Z" B; e9 L: O1 m) l- ]7 m4 F) B& R1 f
  2) 控制bus和debug的安全访问,保证信息不被泄露;
" ^+ e* o" t& E8 E! Q, f2 ~$ w  l: ^! e: k7 ~
trustzone是system_level的实现,涉及到软硬件,硬件方面包括:
7 b4 w$ X4 j1 L4 r, q
% k* |' ~: A8 C3 t. ^1 N! W  1) ARM processor;3 O8 |; ]1 `- t& r) d7 Y

$ r& C% x7 i* G5 @: z  2) Bus fabric;$ g* u3 L3 n4 v7 Z
4 J- l! }  X& Y$ v. Y' `
  3) system peripheral IP;( V/ o1 H; `" d, U+ B$ g

3 `( i8 E, O! R& `) `  s7 E+ ]硬件devices被attacked的几种方式:( l. \& m; y" P) S

9 K, U7 ^6 p8 f: Y2 |: k/ J7 K) y  1) Hack attack,通过植入病毒和木马,来执行一些非法的软件。4 s7 t) `7 t0 v' F. O# ]5 n$ R

4 F5 ^  @, v( Q# h. f# h  2) Shake attack,attackers可以物理访问到device,并且可以实现一些主动的动作,force pins,; x" b  z% O% s) ~( X
* e4 C- t% B/ s/ W! L/ w
    利用JTAG,BIST,IO boundary scan,reprogrammming memory device。
3 U/ n; w  y; S/ t& s, n/ g# V; W7 @( ]
  3) Lab attack,attackes可以通过实验室设备,实验device,在silicon的metal layer加探针等操作。/ A. E) i8 X  ?9 R9 ~4 K9 n

1 G* @- L! q( r: r    危险性极大。
' ?& h% S; e+ b2 S' V: ]6 K( }% o
$ c5 `; m4 n, q8 d$ Q7 R7 C目前硬件中常用的几种security 实现方式:
6 q0 V, |/ W2 c( Z8 `1 A, i( p7 l5 L* D! N) E
  1) 外加hardware security module,像SIM card这样。并不通用,而且成本高。8 E' b4 g$ S! `" A' X8 Z1 s' q
7 y& s  Y. h& f, ]- L
  2) 在内部加入自己的hardware security module,security与normal world之间的数据交换复杂,因为没有形成
. C" }. i, I' M) Q% b/ H- u& p$ k) u! [  ]" ]7 s! U/ f' W- B
      一个系统的解决方案。  s  b% \8 Y2 d# ^

$ F" K: M2 b: R3 @! w* y. v) ~) h  3) software virtualization,任何带mmu的processor都可以实现,security通过hypervisor来实现,
5 i4 g: x4 E9 r( P
( n& e) R9 N7 V7 I: j      但是对于DMA和GPU这样的master,没有解决方案。2 q4 N" I7 J; P! v

% {2 b! |9 W0 p5 S+ }# _& q 4 U$ A: Q# B2 {2 H) \
% r: e' E7 V+ P4 y: I8 i
trustzone的硬件architecture:主要分为system achitecture,processor architecture,debug architecture
, [- _5 a% e. h7 ~  f8 T" `9 ^& C! a( e$ t
  1) system achitecture:主要是指,bus中已经包含security signal,memory也可以通过增加一根security的信号,来物理上将
2 S, `. z0 Z* M+ c6 c2 n! a. u
, C& z3 A' O; S      硬件bus系统隔绝为两个world。# D; f9 N5 H$ ?3 A
( O: g3 @' a& z7 N, `* \
  2) Processor architecture:
" s$ m- e: L* A
  n3 b1 w# k& G4 t0 P      arm-a9之后的processor都直接支持secure,两个virtual processor,之间切换,只能通过) _: _& q  J3 S3 |4 v
1 R6 Z- F2 B7 d( F8 A
        指令SMC(Secure Monitor Call),或其他的一些exception,IRQ,FIQ,external Data Abort,external Prefetch Abort- ]4 m  g, x, |" i1 J9 E
! D# [) M# W6 E* [, @4 _: ]
        当前的processor处在secure还是non-secure,通过coprocessor,CP15中的寄存器SCR(Secure Config Reg)来表示,, h/ M% m( s0 T
6 F# C7 i9 j9 j" d# z5 V8 ^
        其中有一个NSbit,当processor处在monitor状态时,该状态位无效。
' q5 q1 E6 k+ z: m
6 E3 g" J( v! h4 o* U5 q. U1 I      mmu,支持secure扩展,可以看做是两个virtual mmu,其中的TLB(Translation Lookaside Buffers),可以同时包含secure和
" |$ S) a  L2 n6 f' x
) ]2 m; m3 c; O/ G        non-secure,在切换时,也不需要切换。
6 f" b4 i9 q  U% F( ~# N7 A' p# [; M2 U1 g2 Y! f
      cache,加入secure特性的扩展后,world switch时,不需要再进行cache flush,任何non-lockdown的cache line都可以被evict,
- {) }% H8 v" U, n7 a2 B2 K" b# }/ ?& S4 i, e& ]) ~6 B/ G
        与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载。( t" u1 G' n  J; ^: {$ U; K

) U1 z0 u( ]6 q' p) b      interrupt,secure的interrupt,的很多控制寄存器,如mask,enable,clear,必须是由security world来访问。
9 h; n3 v+ `' l  p! f
6 P- z& @7 I7 c8 W        推荐实现,IRQ应用在normal world,FIQ应用在secure world,monitor状态下,所有的irq被mask掉。3 O: U/ [5 R+ s1 p, H' G

6 X: V" K( Y: ?% M- _5 m; K      exception vector,支持TZ的proceesor的有三组exception vector tables,分别是normal world,secure world,
- f* N; X0 M+ ^% y; z) A/ D" `2 R* q# R+ m: I/ {
        Monitor mode。各个基地址,可以通过CP15中的VBAR(Vector Base Address Register)
* u+ ]2 f- o$ K% S  z$ y
0 A* E: C. H8 E# n; X  ]: R      Multiprocessor system,主要分为SMP(Symmetric Multi-processor),AMP(Asymmetric Multi-processor),主要影响/ I4 S% \. Q, f1 i+ l' ?, w& S

8 a' v5 K" j) [. h: o; ~: }/ i        在于软件,AMP结构中,软件调度更加复杂,2 l0 l" D! S8 \2 T9 s. n

6 \- ~" E  h4 Z2 C  3) Debug architecture:可以分为processor debug components和system debug components。
; H. Z9 O9 C: s2 |; x/ j
* p# O/ w7 g# W. K      processor debug:针对secure和privilege加入了更多的enable控制信号,
# E* |# }; J1 {  }. P" K, R. o9 B( ?
1 Q9 A( I: X. w! Z( @        Secure privilege invasive debug(JTAG),SPIDEN signal& P3 Q7 f0 D! ?( M

' n5 h8 Z6 |' X4 I5 ^  g' A        Secure privilege non-invasive debug(trace),SPNIDEN signal
; j' Q. v* H* z# ], [: w: B
6 `' X$ `) x, o+ A% C        Secure user invasive debug,SUIDEN signal" \6 r/ i2 N0 [+ w+ g% [# Z

  B' K, |( r" y& z        Secure user non-invasive debug,SUNIDEN signal' A' q  y0 B! B. q$ H4 X0 P

) n4 p, B  B4 Z& g  }          secure debug只有在确认安全的环境下,才能打开
% V$ N/ n6 p' c1 S5 U* \
9 q" e4 Q; V) Y- z, Q! J! l, v. ?        global的enable信号:7 m% x" M. x$ Y3 d" u/ y1 b( l

6 v5 {+ N: Z. D9 I+ x# N8 y6 {" [        global invasive debug mode,DEGEN
7 S5 O, ^. m  N  f; o' ?; }4 t: N+ H( ]% M0 Z2 r8 L
        global non-invasive debug mode,NIDEN1 q  z) I0 y6 d( y- |

8 _; A. R/ G/ |$ J        对于multiprocessor debug control,每个cluster中的每个processor都有这些control signal。
, t) S- T% H7 l- z& |6 t1 f
" u) e8 B* I, s$ Q5 @0 U        armv7之后,每个processor内部都有PMU(peRFormance Monitor Unit),内部counter记录processor执行* Y6 N/ x% J( V; o
# M0 o9 |- Y' n' h4 L3 C( c
          指令中的各个状态,如cache line evictions等,可以通过CP15的设置,来防止被non-secure非法看到) Q& f. k7 ?. E* [: z  l
  G; x( U4 M  \1 _7 b, N
      system debug:通过arm的coresight来保证,
" U6 N) i, v5 v4 p% s& \
0 V% G5 A8 Z" s7 r
- y& _" @* C* U7 x  ^) U) n( D5 @
- Q8 Z9 B' j; P7 \" Y$ Zarm提供的支持TrustZone的hardware的IP;4 Q% o1 k$ r3 p' N9 G+ a

9 W2 R0 \& Z* e0 g. N/ k  1) TrustZone Protection Controller(TZPC),主要实现对各个peripheral的secure的动态权限设置。再通过bus发送过来的状态,来# J9 W& Q9 {* S1 |" p; l% Q% s' h

4 H7 f3 ]9 M8 N6 t; D      判断,该笔操作是否合法。  {2 ?) J3 a+ r2 ]' y/ H
7 [7 H: P* H' `2 {- D# g
      1 r$ l- L3 r2 ^% E  W: F% n
7 |# y3 C( V" T6 c( [4 P9 G3 u2 `0 ~
  2) TZASC(TrustZone Address Space Controller),典型应用是将区分同一个AXI slave,比如chip外的DRAM,只挂载一个,
2 c+ x: {  ]9 u2 g- @* G" ]9 E6 k# Z  }5 t" ~5 j4 p
    但是我们可以将其地址空间分为一半secure,一半non-secure
6 r8 h( ?. X' c" U
" Y) M3 ~* C' t' b; W* H  3) 其他的常用组建,Cache Controller,DMA Controller,interconnect,GIC
6 s& H" G; v  r8 S, l2 n9 X& q" F7 W1 Q+ Q& J+ p1 o) m+ K3 }
& L, L) Y; }/ L8 `
9 Y1 X# `) }* i7 e7 ?1 J
TrustZone Software achitecture:软件的实现方式比较灵活,最复杂的是在Secure World单独运行自己的OS(AMP结构),- O4 ]! Z! {" G: h7 b, g3 H

9 y9 @9 K1 `6 @0 h; m* r4 h    最简单的是在Secure World,中使用一个标准的lib(SMP结构)。
( y% C8 o, T9 R' h0 d. D, p0 R, q* D, f& E

5 F' ?8 j+ {$ a, c# u0 j
2 n; F6 \  j  A+ {  在一个secure system中,boot是信任链的最底层,是最重要的一部分,TrustZone要求,boot都是开始自Secure World。
3 c: j' D1 |0 y! _$ O: {
: l+ _6 H& t7 Y  @    ! \8 B* s/ e+ c4 T/ b
. S" N/ Z# _& B+ [# k
  secure boot之后,需要加cryptographic checks对bootload进行检查,算法一般选择RSA-PSS,公钥和golden签名也都保存在
! e4 p2 d  {/ Z: ]
) }- ~& y: ]( S    device中,boot的时候,进行验证。
# j  ^" o$ f. X6 M" i! h: Q* W/ q/ [) w4 j( h/ K% d

" H1 x6 M1 c* M6 O& R) C# F) K/ i" ?% Q  q6 B$ E
在进行secure world的切换时,从secure到non-secure,可以直接修改CPSR寄存器,直接进行world的切换,
2 s% U4 L" T0 y( V* b
! L7 y! q$ U5 n( q如果processor中带有NEON,VFP这样的coprocessor reg,进行context-switching,可以选择Lazy context switch,
) A# \  e  {3 W4 y. N
) a; u' }+ Y4 k5 C, m
  z5 Y$ B  l( N( v  Q: I
- `, @3 k& c* `  s, ~/ e' {5 C& YAARCH64架构中的secure结构:4 K0 [7 {  ^  i

3 {2 ?% N; @! t    4 E7 x1 e0 ~4 V' k) x. L
% Q4 |$ x# X$ {/ L# G
在软件应用中,secure和normal的interaction:
  M$ ?2 @2 Z' O/ r' _1 B/ G" L8 P8 t
    . b7 g6 Z# e( N1 e) u5 f
$ I5 T6 H* ?1 B$ p8 ?3 v- z2 S2 n
  在软件切换过程中,有一个问题时,secure world的执行,可能会打断normal world的interrupt,! k& g* h% Y7 v. k

, B+ Q; S* {9 V% I9 m    所以,一般要求secure world使用FIQ。
/ ?5 J/ e7 L0 {: F  E8 }1 {9 E4 v/ \$ k) Q1 ^7 P
在armv7的AARCH32架构中,secure model与AARCH64是不同的,secure os执行在EL3,所以为了AARCH3和AARCH64能够保持统一,
5 r. M" F' h: B/ ?9 i
* y3 l2 w- G3 f5 D' {# M    需要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 14:27 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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