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

arm trustzone

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
ARM的trustzone并不涉及到具体的crypto算法,只是实现:
; d" J* {# T7 Y( c) I
+ W3 a9 N, r# {, {  1) 敏感信息的安全存储;
# ^! h# Q7 `$ n) Z: K7 b0 H$ S% G$ H8 H
  2) 控制bus和debug的安全访问,保证信息不被泄露;
# h6 X" V: P) x( @, [- T! f$ T# v2 r8 `% @( ^! q8 e) r$ G
trustzone是system_level的实现,涉及到软硬件,硬件方面包括:
3 s4 k) ~$ y% l5 S2 {  u6 X* J3 r! r+ b9 b  T1 d+ g
  1) ARM processor;
4 u. p! a( G; ]+ Y% r0 s4 Q' ]" s" q' ]$ o) [6 S9 \3 b
  2) Bus fabric;* Z0 |: D  k/ Y! R2 f" R6 _  n- ?

8 _8 g& E& F; j  3) system peripheral IP;- C% @% X% u2 D7 w) w/ [) n/ {
8 `% J! g! w: X, X3 E  h. p$ n  j! D
硬件devices被attacked的几种方式:0 k3 [% ?8 E1 V6 ?- Z# R
$ k) S, i. [$ S$ J. J4 m( K/ J
  1) Hack attack,通过植入病毒和木马,来执行一些非法的软件。$ W5 }3 K1 j& N& {# F! K4 w
7 ^& k- V3 a* ?. p. x; l  q
  2) Shake attack,attackers可以物理访问到device,并且可以实现一些主动的动作,force pins,7 d" D4 v% p/ Z+ b( a

" t! }- Z# q& b, v    利用JTAG,BIST,IO boundary scan,reprogrammming memory device。- O7 }5 i2 T9 i
9 j) S  T1 S4 U3 @4 ]2 e( ]0 G- D# \
  3) Lab attack,attackes可以通过实验室设备,实验device,在silicon的metal layer加探针等操作。( }; x/ b7 ?; {1 s

4 \/ J. y# `; W6 x. ~* v' G' o    危险性极大。
/ ]1 S, v5 i: K: [% G/ }
5 ?# `" t5 E) h目前硬件中常用的几种security 实现方式:7 T' G: u# ]1 K' S+ s

8 B' d( J: ^" n* x! `/ Q+ q  1) 外加hardware security module,像SIM card这样。并不通用,而且成本高。: ^/ ]0 Y. i% J' c* o9 s+ f
2 Q% n0 [! E# _8 n  V7 I8 K. J( e
  2) 在内部加入自己的hardware security module,security与normal world之间的数据交换复杂,因为没有形成
# T0 t5 k! n/ B$ z; \, j0 ]! ]7 |% O+ q( i, `
      一个系统的解决方案。
! z% l* x- U4 L& x5 B  E# O; U, ^1 m; W
  3) software virtualization,任何带mmu的processor都可以实现,security通过hypervisor来实现,8 o4 \! @- A# c

* h! S) r- h- n0 W6 N) Y      但是对于DMA和GPU这样的master,没有解决方案。- j. v# }. u' }5 ]+ ~3 d" J; W

1 f' a, t/ ]7 p, w- j4 G! i0 m: [ 5 L( k5 ?2 X1 x# n5 a
) ~5 d  D+ J1 K; {4 \. _
trustzone的硬件architecture:主要分为system achitecture,processor architecture,debug architecture
+ M6 v. V) g4 U6 b3 J7 Z% A9 Q  k
" e! A' [1 t. g9 A9 O0 v  1) system achitecture:主要是指,bus中已经包含security signal,memory也可以通过增加一根security的信号,来物理上将$ r" L- U! v9 I1 g; Y
0 O( N& r" \; Y) N* f
      硬件bus系统隔绝为两个world。
$ O7 P& x( H/ P
/ P! b3 F, {5 S3 {% G8 J* @! @. i& M  2) Processor architecture:
* q) C2 b) b$ E+ i: q5 [. |9 s( G
5 q% M- o/ o% |$ D" @      arm-a9之后的processor都直接支持secure,两个virtual processor,之间切换,只能通过
: b  ?5 @2 v3 f
+ X. Q+ W! Q* U% B& W7 p2 e        指令SMC(Secure Monitor Call),或其他的一些exception,IRQ,FIQ,external Data Abort,external Prefetch Abort% D. p  C$ V- X% l/ ]- M% O0 k

! v( |, {. u$ {# G( F6 F- l        当前的processor处在secure还是non-secure,通过coprocessor,CP15中的寄存器SCR(Secure Config Reg)来表示,
4 o7 k% Z# I+ O+ H7 ?# ~: [' [7 \* j7 G( u9 @: o
        其中有一个NSbit,当processor处在monitor状态时,该状态位无效。
. X/ V& B/ j' i! F% z' F
2 m( J) h; w2 ^      mmu,支持secure扩展,可以看做是两个virtual mmu,其中的TLB(Translation Lookaside Buffers),可以同时包含secure和7 F) y6 _3 z& ?0 f; U% Q
3 `6 i7 u# S$ N, K( v, ?6 ?/ n
        non-secure,在切换时,也不需要切换。
4 y1 Q: r$ Q3 {3 [  S  i9 l
% Q/ `3 H( M0 X8 Y6 ?' ~' u/ _      cache,加入secure特性的扩展后,world switch时,不需要再进行cache flush,任何non-lockdown的cache line都可以被evict,9 b$ p+ P+ ?% t6 J
) \# d; j5 b3 R0 o; H
        与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载。- D. r  r9 b& N) \: {% j

- v& p. J& ~( L2 |+ c0 X      interrupt,secure的interrupt,的很多控制寄存器,如mask,enable,clear,必须是由security world来访问。% d  l' \* R9 T. T7 S7 q! c/ ?; f
0 b' O' w* Z3 g, I; f( p
        推荐实现,IRQ应用在normal world,FIQ应用在secure world,monitor状态下,所有的irq被mask掉。; D1 h. i0 Y; d

5 u% s' ]- `8 A, x* P" g      exception vector,支持TZ的proceesor的有三组exception vector tables,分别是normal world,secure world,
" M: s% D7 C$ v) A8 n1 [" _, q9 Z: G: |/ s0 }
        Monitor mode。各个基地址,可以通过CP15中的VBAR(Vector Base Address Register)
2 R% u! W, ?5 Z; `8 j2 G6 v2 M$ K  u: }! q. X' s" `
      Multiprocessor system,主要分为SMP(Symmetric Multi-processor),AMP(Asymmetric Multi-processor),主要影响, Y1 Y; ~' O8 M

, N& _, @# ?7 H        在于软件,AMP结构中,软件调度更加复杂,
8 i( Z* l# J; o7 x7 ~+ V# m2 l3 w+ {) X- E. G; t
  3) Debug architecture:可以分为processor debug components和system debug components。. w* V) ]" x  q9 Z/ T
: o3 Y8 K8 X) N
      processor debug:针对secure和privilege加入了更多的enable控制信号,7 o5 M. ~' W/ ?: I( O! |  ?

$ b4 ~$ N. k8 \1 C  c+ G1 W9 S- u        Secure privilege invasive debug(JTAG),SPIDEN signal
* R, R( Y. ~/ y: D' k  B: U0 v  r# N* b8 f6 @# n! s
        Secure privilege non-invasive debug(trace),SPNIDEN signal
3 i; p* c+ ^, I. p/ R8 G! O: n- A* i8 ~9 M
        Secure user invasive debug,SUIDEN signal
: |9 ?7 j1 h8 \: i& Z9 \( d( ]6 c9 {( r" @( c6 M% n
        Secure user non-invasive debug,SUNIDEN signal, p9 T! e% }9 H7 g: P! w
' O* q$ h/ N2 q7 a& C" B
          secure debug只有在确认安全的环境下,才能打开2 ?1 G8 n+ E; z2 L5 d  ]" W/ @. _6 Z
8 r0 f9 ]- w& k0 U
        global的enable信号:. w% V# V; R# o- a8 V
+ a, h) E: S  S5 E) Q
        global invasive debug mode,DEGEN
3 c/ Y# j& e% @$ N  O
- b& u9 j. f, t! b9 b1 w, ~/ V) v        global non-invasive debug mode,NIDEN3 }5 ^$ p1 ^0 B
# ~$ H, t" Y' B+ u1 f, f9 o' Y/ I3 r
        对于multiprocessor debug control,每个cluster中的每个processor都有这些control signal。
; F$ H* o( v7 x: \/ m" |' F3 I5 l9 q
        armv7之后,每个processor内部都有PMU(peRFormance Monitor Unit),内部counter记录processor执行0 f# F% G$ Q% c1 v3 \

9 o$ |8 T3 q2 D8 H          指令中的各个状态,如cache line evictions等,可以通过CP15的设置,来防止被non-secure非法看到
& }1 g3 j8 L4 Y; A+ Y" }; j
$ h: r/ H% [6 W! {, y( x8 k      system debug:通过arm的coresight来保证,
! J, t7 {& G" Z6 S8 w2 J* z* y" Q( H4 f
6 `8 {6 L( L( J: A5 Q + ]4 H- v- c) a% `

& x1 N0 j$ x; U0 Oarm提供的支持TrustZone的hardware的IP;
; m. G3 A# i. ?! E% x7 z5 S3 i3 u0 O9 R6 ]9 ~
  1) TrustZone Protection Controller(TZPC),主要实现对各个peripheral的secure的动态权限设置。再通过bus发送过来的状态,来
  i5 p6 |- j5 A9 `  g
* g: c7 d- g3 H# [" ]      判断,该笔操作是否合法。
1 |6 ^9 z; `0 j# P4 O- p) @0 L7 X3 v4 x0 s3 A
      
7 ~: L! {9 r& U( O" X2 P: d5 c* \8 i5 V. u
  2) TZASC(TrustZone Address Space Controller),典型应用是将区分同一个AXI slave,比如chip外的DRAM,只挂载一个,$ \' @+ I% [, s% ~( o
4 R' C" O2 W+ Q- `
    但是我们可以将其地址空间分为一半secure,一半non-secure: C0 S8 s& ]$ F. I

* p) {( ?& Z. _5 F  3) 其他的常用组建,Cache Controller,DMA Controller,interconnect,GIC3 u2 {9 C  Z$ w9 |. ^2 s

, E. A- F/ V) R0 a 7 E6 D- s! P$ j5 f8 G* \+ q" u

0 K# L5 Q6 D- q* T4 J" c1 z1 fTrustZone Software achitecture:软件的实现方式比较灵活,最复杂的是在Secure World单独运行自己的OS(AMP结构),
. Q) Y3 z" E) \7 l1 ]
5 s& K; A$ q% @2 W( X' ^    最简单的是在Secure World,中使用一个标准的lib(SMP结构)。8 s. n& X+ {- K& P5 Q6 H/ Q
. G1 X6 S! t  Y4 ^% r4 E

  F. j3 u2 x3 o" T) ^3 p5 f: U
5 P3 L- Q0 x. O1 c6 s  k6 I' g" t  在一个secure system中,boot是信任链的最底层,是最重要的一部分,TrustZone要求,boot都是开始自Secure World。
6 [: S! v( z, O0 v, J
! i- i4 u6 J, ?+ p; A3 v5 R* \    
8 o2 [  f( b% ~' S! Q
! b& Z/ x, A3 g1 [  secure boot之后,需要加cryptographic checks对bootload进行检查,算法一般选择RSA-PSS,公钥和golden签名也都保存在
4 l0 F$ s2 `+ y3 T5 D! m; G3 d" |* g
$ O( C% J4 G) z+ U& Y) z    device中,boot的时候,进行验证。4 S  r: w* g$ a/ P4 n

6 a; N* t$ V! v
4 E4 W: F9 H- U8 D4 J# `' d! f" C5 a: ]" W  e0 q: F
在进行secure world的切换时,从secure到non-secure,可以直接修改CPSR寄存器,直接进行world的切换,( |& K9 _& r# |; b. ]% P8 G6 o* w

* p; {; R0 _: `3 q/ y如果processor中带有NEON,VFP这样的coprocessor reg,进行context-switching,可以选择Lazy context switch,
4 Y6 k6 v2 S: T4 l
6 T) d5 S' [  o0 v' _0 G
3 G. l9 ?, }% B% D9 b+ Q- |/ z# K& ~1 R) _+ _
AARCH64架构中的secure结构:7 A' J9 i* h1 o
* a6 Z8 X& l5 i3 A" O
    
6 j0 A2 L9 _, I! }
+ a; `4 c: U! T7 n" S在软件应用中,secure和normal的interaction:
% a$ ]* O2 T! Y! i! b# v8 t
3 r5 F( T% D5 O9 a! h8 `    
; ]  d6 H: ~! }' q) \% t5 {5 h8 t* T$ X2 @4 Z& ]0 ?. Z2 u
  在软件切换过程中,有一个问题时,secure world的执行,可能会打断normal world的interrupt,
7 Z7 \1 r+ A, F$ |3 b/ \8 |/ ]5 q; b! X' _
    所以,一般要求secure world使用FIQ。
- j/ z  A7 U1 Y$ r0 U
' n, P* L6 r! ^) x" [" N* b$ s在armv7的AARCH32架构中,secure model与AARCH64是不同的,secure os执行在EL3,所以为了AARCH3和AARCH64能够保持统一,
/ I0 P$ y! ]4 H$ x  |
2 F, a4 b# [% }$ W/ v. X$ g5 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-6-24 12:44 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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