|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
ARM的trustzone并不涉及到具体的crypto算法,只是实现:
# f. C- M/ I& v2 ^% ?6 s( n
0 m. j- Y* y9 I( y) B# ?( m 1) 敏感信息的安全存储;
% H. m3 K6 |9 o, R' G/ T4 a: I+ l9 W9 V$ K% K
2) 控制bus和debug的安全访问,保证信息不被泄露;
. k6 ?! Y& k; V3 s$ c" }# K2 T# l( s, f- I
trustzone是system_level的实现,涉及到软硬件,硬件方面包括:& [& y4 w4 `/ ~" v0 a) C
5 `# k( U- `6 U$ y& X9 W! ~1 H
1) ARM processor;; U ^0 P* E4 N+ c$ q" U
* c% v& r( O( L2 K 2) Bus fabric;
. a7 W0 u% y7 \( J& e2 ?
. S l/ [$ a D7 w W' m 3) system peripheral IP;1 V8 r& {" f1 N a& G; T6 x
: `7 o5 r6 Z3 t& R6 k9 _
硬件devices被attacked的几种方式:* J$ d; i8 R7 {# A- C; R5 A
& D" B" W& L- e 1) Hack attack,通过植入病毒和木马,来执行一些非法的软件。
6 H# f/ z1 F" a8 R# p* `
3 X1 z! @5 @3 j: [ 2) Shake attack,attackers可以物理访问到device,并且可以实现一些主动的动作,force pins,8 P7 H4 X2 S( B. }4 t# N4 R1 q
( j; e0 m% |: W. X) l E& r+ O
利用JTAG,BIST,IO boundary scan,reprogrammming memory device。
6 N" v' B2 u+ D; n. o6 {0 l% F1 f2 ?: E1 L1 I. G+ J4 Z) K
3) Lab attack,attackes可以通过实验室设备,实验device,在silicon的metal layer加探针等操作。
M3 `. u% q" O! G6 \4 x3 e& Q4 Z: [ _# I( W
危险性极大。( I Q% X7 F9 F- {3 x2 A
! V6 \+ I! s" S- `! U目前硬件中常用的几种security 实现方式:
! w; T" Y P! M8 N* D' d( K# @: D& U* f8 z
1) 外加hardware security module,像SIM card这样。并不通用,而且成本高。* Q6 ]8 C5 ]! `' F' I [ B
. |7 W( Q; F# s: _* ~ 2) 在内部加入自己的hardware security module,security与normal world之间的数据交换复杂,因为没有形成8 \# Z' `/ y0 Y _. }- V: d
. b6 O5 p: P9 D1 S/ O
一个系统的解决方案。
$ W* z/ M2 M1 r+ g. R+ k4 m( n' |
2 g6 H7 J; l+ c! ] L 3) software virtualization,任何带mmu的processor都可以实现,security通过hypervisor来实现,
- ~" `, q2 @9 A3 }9 u" k" @- q; E: E
但是对于DMA和GPU这样的master,没有解决方案。& v# W7 m% k; E5 s) C
; }3 ?/ S$ t% N6 k( P7 e1 U- [
; \( F- N$ `" U# @4 _" E* _. P
- }, S! @* G% M: etrustzone的硬件architecture:主要分为system achitecture,processor architecture,debug architecture
. |4 z4 M. _- }& i& J$ X, h- m: J2 s0 a# p2 l
1) system achitecture:主要是指,bus中已经包含security signal,memory也可以通过增加一根security的信号,来物理上将
L: [- j+ Y. H% `- b
6 H( o( y: @; }) ?; i# j! {) | 硬件bus系统隔绝为两个world。
- _3 k+ O; P- L4 J% @
( s8 n5 j! h2 u. ^ 2) Processor architecture:
" Q! A8 J" K' }9 Y) \0 i
7 q. G1 O+ t7 M arm-a9之后的processor都直接支持secure,两个virtual processor,之间切换,只能通过
% `% b, l3 w$ `6 y1 t# w
3 r M) Q+ K: T5 D+ q 指令SMC(Secure Monitor Call),或其他的一些exception,IRQ,FIQ,external Data Abort,external Prefetch Abort! c" |5 P6 @0 }" C
4 |+ [$ H1 f, t2 N2 Q/ E, E4 m) P
当前的processor处在secure还是non-secure,通过coprocessor,CP15中的寄存器SCR(Secure Config Reg)来表示,
: x: J6 o* b2 ?. X" o+ C* \& J8 N% s- l5 a$ E) ~' L
其中有一个NSbit,当processor处在monitor状态时,该状态位无效。+ k1 i( r6 u9 h+ Q
7 s9 A. e3 N2 @ A2 Z mmu,支持secure扩展,可以看做是两个virtual mmu,其中的TLB(Translation Lookaside Buffers),可以同时包含secure和
|. v0 Z% S! `, n) u0 `" B; k, }
5 ?; W/ L5 y' Y non-secure,在切换时,也不需要切换。+ C2 s% K# Y1 O0 s3 U+ Y% Y1 m' J
: B) @" o2 t% P t" O! j8 O
cache,加入secure特性的扩展后,world switch时,不需要再进行cache flush,任何non-lockdown的cache line都可以被evict,
8 C4 l* n+ n+ D1 E$ Z
5 {5 A( |& ~) ~9 C) k& C 与security属性无关,也就是说,secure的cache line可以被evict,为non-secure cache line加载。. k4 `! x/ h' s4 T: l% ]
. _$ x* m, r0 `2 X interrupt,secure的interrupt,的很多控制寄存器,如mask,enable,clear,必须是由security world来访问。
( ^7 B3 b1 B! \- \
: j0 p/ O5 ^8 T- b8 L6 p 推荐实现,IRQ应用在normal world,FIQ应用在secure world,monitor状态下,所有的irq被mask掉。
7 w( i6 p: i A9 F$ j4 l- E2 T: F0 V9 }. J2 d$ O3 m) H, c
exception vector,支持TZ的proceesor的有三组exception vector tables,分别是normal world,secure world,
i# n+ s0 ~% r( D% ?2 V7 c
. q4 Z7 N6 r: t7 A0 d0 w Monitor mode。各个基地址,可以通过CP15中的VBAR(Vector Base Address Register)
. n3 _4 |# R) V9 ? S& m% ^, }' A3 z: D6 x7 ^. r" T. Z3 F
Multiprocessor system,主要分为SMP(Symmetric Multi-processor),AMP(Asymmetric Multi-processor),主要影响
( i) o- }, c3 W5 H, c2 h1 D- m0 t+ u# Z; `$ B8 C3 T3 U4 U- U! l6 ^
在于软件,AMP结构中,软件调度更加复杂,
5 I! E3 R7 Q) d' X: c1 m+ [( Z) E: d$ Y
3) Debug architecture:可以分为processor debug components和system debug components。* E, p6 l E( x- J6 x$ D) @/ s
7 [ y9 `. i u5 } l+ E
processor debug:针对secure和privilege加入了更多的enable控制信号,
/ ?% {* ?# M: i7 o
0 X3 s5 w2 w' x# [$ _# `; ?3 K$ [ Secure privilege invasive debug(JTAG),SPIDEN signal- y! @( A' s9 J
5 V4 T. z3 b7 J3 I Secure privilege non-invasive debug(trace),SPNIDEN signal
+ o4 D7 T, e6 h. {1 ^
2 v+ o0 H2 E4 }4 [3 h Secure user invasive debug,SUIDEN signal
9 Q3 d/ O- b. r% d) M6 _$ b) N2 Y% O$ ?+ ^3 n* j
Secure user non-invasive debug,SUNIDEN signal1 v: O6 m! a/ g& C) R" w
; ^. y$ Z$ Y% d! E. W
secure debug只有在确认安全的环境下,才能打开4 z+ Q' J5 c9 Q4 ` p j }9 @# i
5 u k+ W3 b0 N
global的enable信号:: ^! r. U) p0 X( W' ^
2 t, N. i- A" `9 b- V) H9 Q global invasive debug mode,DEGEN
* W5 Q8 j# i9 T. u6 l! \/ |, G
% a4 G: s4 p: F0 Q global non-invasive debug mode,NIDEN
+ `5 f4 s' Y: v% `# A& o' m% g7 I# \6 k( c4 w! m. ]$ r$ u% M
对于multiprocessor debug control,每个cluster中的每个processor都有这些control signal。9 ?- `; R, g1 w/ @5 h; H1 H) I
' x! N( p: ?. f. n; P3 W" ^* T
armv7之后,每个processor内部都有PMU(peRFormance Monitor Unit),内部counter记录processor执行7 F1 t: }0 f# `
: h1 z0 v2 `! F 指令中的各个状态,如cache line evictions等,可以通过CP15的设置,来防止被non-secure非法看到5 m1 E4 U4 _# s7 N) N! B
k# d. m* |( Q& L3 m system debug:通过arm的coresight来保证,
3 Z+ E' p5 w" s
; F6 q! ]! x9 @' B7 G/ ` 5 }( {( |6 z9 h
( ~& Z* \& D O1 k
arm提供的支持TrustZone的hardware的IP;# F% u2 S& W# m# u$ J! |
8 _- {* F E2 i: |. S0 ^ 1) TrustZone Protection Controller(TZPC),主要实现对各个peripheral的secure的动态权限设置。再通过bus发送过来的状态,来
" C9 d" y$ K) q3 G
5 F ]) p6 n" y& G) p 判断,该笔操作是否合法。' f- O) ~" n" m' h; H
2 `( B0 p: Q* l5 X* p
* c5 R+ L' R" I. c) S5 L7 b
5 L/ E1 u0 t8 O z" b# E j- G+ B; T 2) TZASC(TrustZone Address Space Controller),典型应用是将区分同一个AXI slave,比如chip外的DRAM,只挂载一个,
6 i: ?) ?! U" P/ N3 @. E
7 a' ~8 p$ `" ?& F 但是我们可以将其地址空间分为一半secure,一半non-secure" I: f& W$ o; L& N
) y/ {: n# r; h8 G4 H7 @7 v 3) 其他的常用组建,Cache Controller,DMA Controller,interconnect,GIC
6 b* \ g3 I# I( }% i: i, b4 t1 ? @7 d7 E% O2 ], s' v
3 H( j- u0 D8 g9 \, @4 I7 @
+ v8 b; w1 d* C! Y3 A+ Y
TrustZone Software achitecture:软件的实现方式比较灵活,最复杂的是在Secure World单独运行自己的OS(AMP结构),
! W: Q" D! g: x6 Y& M4 k0 y* Z+ L; ?& o! g& m
最简单的是在Secure World,中使用一个标准的lib(SMP结构)。
: b: h# F' I. t& s9 h
* m$ s" J/ C( G& C E$ r/ Q q
9 ]* E# u$ S* w X) N
7 W( b, f& n2 l2 A 在一个secure system中,boot是信任链的最底层,是最重要的一部分,TrustZone要求,boot都是开始自Secure World。
6 u \+ j" ~$ i3 _# R- Z! [7 ^2 X% J" i+ s) c6 ~: t
% |4 u5 ]5 [. n; B! W
1 V' g% z g2 [- b5 E! P5 j
secure boot之后,需要加cryptographic checks对bootload进行检查,算法一般选择RSA-PSS,公钥和golden签名也都保存在- u) f/ n2 Z3 x, z" h9 u ^
! ^( A, o, `# J4 R3 o! q1 |$ ] device中,boot的时候,进行验证。& n3 e. l; Q4 ]9 ^- Q
; y+ p% G% r5 @/ z$ D
! c8 g2 h' F2 r/ {# @4 T
! O7 D. I# h, I% N& k
在进行secure world的切换时,从secure到non-secure,可以直接修改CPSR寄存器,直接进行world的切换,& z! k0 ~+ p! ~" B
% J! v% E+ a+ p" _: C4 f+ J. n. ~
如果processor中带有NEON,VFP这样的coprocessor reg,进行context-switching,可以选择Lazy context switch,% t5 O7 ]) E3 r7 r- R
" f( b3 V/ l9 J+ y( e* I6 C3 A% ] ) |( ^3 a2 A3 t1 T
V1 t- J, Z% ~$ R% U9 k8 f9 Z" x" j
AARCH64架构中的secure结构:
/ z+ k% n" X" ~ R3 R3 k( n+ Y4 o. j6 l/ f* W- [0 d' B( C
& J! H. a J: B! e; }2 M$ ~7 ~, x' ?0 T6 u! p
在软件应用中,secure和normal的interaction:/ c4 Q s0 `9 }8 b, X7 [3 L% N
! o$ I _$ D! H) `5 ^" [, u3 E6 Y
' [% m; }5 W5 b/ M3 g* \9 h
1 v$ F( `8 o0 F1 y 在软件切换过程中,有一个问题时,secure world的执行,可能会打断normal world的interrupt,0 G; a3 i; Z. `! T/ ~( v
. r5 `: F0 K2 n* D# Q( m 所以,一般要求secure world使用FIQ。
2 _5 t) c0 R* T1 w5 H6 ^7 Q+ m
4 a: C' q5 y/ p) |/ B在armv7的AARCH32架构中,secure model与AARCH64是不同的,secure os执行在EL3,所以为了AARCH3和AARCH64能够保持统一,
: Z' y- E" [* I6 i& n/ {& K' H' _$ j0 k) N4 X3 F0 Z
需要secure os在secure状态下,和non-secure状态下的TTBR1_EL1不同, |
|