本站已运行

攻城狮论坛

xinmeng

作者: IT邓邓爱踢
查看: 236|回复: 15

主题标签Tag

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
【超过几百G】EVE 国内和国外镜像 全有了 百度群分享【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器
最新2018/07/29录制 IT爱好者清风羽毛-Cisco IOS ZBF防火墙视频最新2018/07/29录制 IT爱好者清风羽毛-Cisco IOS ZBF防火墙视频
乾颐堂 教主技术进化论 2018年 最新1-30期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018年 最新1-30期合集视频(各种最新技术杂谈视频)
Cisco CCW售前销售报价系统使用方法Cisco commerce workspaceCisco CCW售前销售报价系统使用方法Cisco commerce workspace

[讨论] 云说鲲鹏 | Intel SGX和ARM TrustZone浅析

[复制链接]
查看: 236|回复: 15
开通VIP 免金币+免回帖+批量下载+无广告
本帖最后由 IT邓邓爱踢 于 2020-2-19 18:51 编辑
. N( @- e" Z* R( h, U% W: V
4 ^, n5 M7 V% ~" x. K' b/ L
我们先理解一下业界具有统一认识的一些概念:
) s! M' z4 ]+ ^3 h; \% Y5 s% b4 M6 P$ ]$ P* e' w' d% N* e# y- L% N. [
安全启动:启动过程中,前一个部件验证后一个部件的数字签名,验证通过后,运行后一个部件,否则就中止或复位系统。因此它是一个防恶意篡改的手段。# s$ B# ~, }$ h

7 p8 t% I( V, V) u" ?' g/ Z% L可信启动:启动过程中,前一个部件度量(计算HASH值)后一个部件(通常在后一个部件被签名校验过之后),然后把度量安全的保存下来,比如扩展到TPM的PCR中。后续接入平台后,部件的度量会上报到认证平台,认证平台会有配置一个可信白名单,如果某个部件的版本信息不在白名单里,则认为此设备是不受信任的,因为它可能使用了一个虽然有签名,但可能BUG的版本。因此它是一个可信版本的管理手段。5 w' C! K" m) k& N& f: Q) O
4 R  B6 q: ^( e. j/ p
安全启动/可信启动 是确保系统级别的安全手段,适用于有可信诉求的整机系统,终端设备如手机、STB、路由器等,当然也适用于通用服务器设备。( R! V- t- {" @* ^9 G. \- V; A

8 m6 r% X3 x6 i2 x7 M6 T; K以上安全启动和可信启动的概念,网上有许多专家在讨论,可以自行进一步理解。然而,如果仅从字面要求试图实施时,我们又会发现许多新的问题,举个例子:安全启动时,确实每一级都被签名校验了,但确定安全吗?某一级如操作系统1分钟前刚刚被校验过,1分钟后还是可信的吗?不见得,这个过程中,操作系统完全有可能已经被非法修改过了。. H8 j" T, W% J( [1 j) i# k6 T! f& ^
: D1 D& K9 @; L( q
要做到相对更安全,要么能够做到Runtime的实时校验,即每次使用那一刻都要校验。如果做不到Runtime校验,那就想办法将校验过的数据安全保存起来…相关实现方案和技术其实在有前提的情况下已具备,这是另一个课题。
# m$ a9 W; {4 i; g$ D! A' G" p# b, e$ O' a* E8 q
这个前提是指系统需要是不开放的嵌入式系统,因为不开放,可定制,提供特定的功能/服务,因此整机系统的保护是可行的,并且方案都是很成熟的。8 ?# d, B2 S- e

/ J( ]2 R3 x: _# U那对于通用计算设备比如服务器产品是个什么样的情况呢?基本上就是这么个事实:
& k7 C6 H* _- |) l$ M" b2 c
) m! H( [6 }, o5 i7 R, O" }$ ?( `: m1、系统“全局保护”越来越难以实现,且不切实际。原因是当前开源共享,并且是自由的大环境。操作系统开源,应用开源,用户自由地选择不同版本的操作系统和应用,一切都不在设备厂商的控制中。

. c% D& c' [8 e6 i8 o9 ?- l6 G  b
5 l! s9 O, F1 S* D# I
1 b6 ^; E# n5 h5 |6 b
2、“全局保护”不可行,那就将保护范围缩小到应用的部分片段--这就是Intel SGX或ARMTrustZone的由来。
' F. [1 z* e; Z% w5 [9 T0 ?5 {8 u6 k: M9 D
因此,Intel SGX或ARM TrustZone是传统的系统保护手段不可行,通用系统设备的保护方案无法借鉴嵌入式系统的方案后,安全技术工作者转变思路后的产物。2 e8 \; ?# q( H' |# E

6 o* H9 K1 T$ A' E接下来我们来理解一下基于这两种技术的应用的工作过程,但此文不讨论这两个安全方案的实现原理。

# p) p/ J% E2 T: I; s2 |
Intel SGX8 r! b  f, l" W

* y$ c6 M+ k9 }0 Q5 v
网上有相当多的材料,并且都有一个特点:短小精悍。于是我们就看到了非常经典的一个图,足以说明SGX应用的工作原理:9 Y+ i9 |1 j' |* [2 [9 r
6 b; N" U' ]' Q. |3 Y5 j3 c
1.应用在设计时,需要考虑所谓的trusted和untrusted两部分,trusted即为处理敏感数据的实现部分。
& p$ e3 A6 F& ]2.实现应用,对于trusted部分,需要使用Enclave定义语言(EDL)来实现需要的逻辑。通过EDL实现的内容,将被执行在安全区域(Enclave)9 H+ ?4 p( D2 q- t, X! @
3.Enclave中的实现可被untrusted的代码调用,当被调用时,命令会通过底层驱动传递Enclave中;/ `7 Y5 d- r" A* c3 Q8 w5 F, A
4. Enclave中的数据对外部不可见,也禁止外界的访问(包括系统高权限的代码也不可访问)
& _2 j" X2 X5 V( j$ I  j8 d- }5.处理完之后,返回结果,但过程数据仍然在Enclave中;+ a5 e9 X* w1 ~- R0 ]/ p
6.获得返回后,应用的untrusted部分按即定的过程继续执行。
, C$ r1 L4 V- S4 g, y( s. i+ O

云说鲲鹏 | Intel SGX和ARM TrustZone浅析

云说鲲鹏 | Intel SGX和ARM TrustZone浅析 - 攻城狮论坛 - 云说鲲鹏 | Intel SGX和ARM TrustZone浅析

- d7 w, I4 r1 t- Y6 @3 E, I( i" }$ M6 {我们可以再看一下EDL的使用示例,这样可以了解应用开发的难易程度:- o5 t) _; j, v7 V

云说鲲鹏 | Intel SGX和ARM TrustZone浅析

云说鲲鹏 | Intel SGX和ARM TrustZone浅析 - 攻城狮论坛 - 云说鲲鹏 | Intel SGX和ARM TrustZone浅析

$ d5 d* U3 Y, \( q# a# K

云说鲲鹏 | Intel SGX和ARM TrustZone浅析

云说鲲鹏 | Intel SGX和ARM TrustZone浅析 - 攻城狮论坛 - 云说鲲鹏 | Intel SGX和ARM TrustZone浅析
6 w: U3 F9 t2 x9 G4 b, O4 H# H
可以看到,EDL并不是要求用户掌握学习一门新的语言,它的代码仍然是类POSIXAPI,C/C++库构成的,它也可以快速的将已有的实现迁移到Enclave中。
. g9 ^* y" K3 j" s5 j( v+ s. u
) {- ?/ J- q" Z' j% U
小结:
2 f$ o( Y0 j0 B  F" B( _  ]! ~) G. X! M
1 M$ N; D% X7 l% g* j9 USGXEnclave完全使用了CPU的隔离能力,不可操作外设、中断等。EDL定义片段属于普通App的一部分,因此多核 、多线程都可以支持。EDL随时随地定义,部署非常灵活方便。但是EDL是定义在代码中的,通过版本的逆向工程,对于数据的处理逻辑,是有可能被窥探的。 3 d/ I+ V+ w2 l1 Z; Z
  D* ~4 O1 |! x$ v
ARM TrustZone
0 h0 H; E1 R( J% S( F
TrustZone是标准TEE实现的一种方案,GP的TEE架构和规范标准都是由ARM TrustZone 贡献。当我们讲TrustZone时,可以理解为是在讲GP TEE。则于标准规范,就导致了与SGX不一样的情况,TEE实现有大量的资料可以参考。以下是TEE应用实现的原理:8 f2 P2 ?( ~6 o" g$ u( k
0 q, q# |2 x. u
1.基础设施:与SGX不同的,TEE的功能,依赖于安全OS,首先要确保设备上已经部署了安全OS,并且要确保其是可信的;
% M5 L9 y/ v" `8 I2 F! S4 {2.设计应用,对于需要可信保护的处理过程,需要实现在单独的可应用中(TA);APP以及TA需要分别开发,物理上他们是两个程序;9 H- _$ v+ G# j
3.APP执行到安全处理部分时,它通过TEE标准接口向TA发消息;
5 }4 |$ q* g6 m6 l4 p4 M$ M4.调用需要进入内核态,通过驱动将消息送到TEE侧;
& P. b" b* ]3 X3 S8 d' M5.TA收到消息后,来执行即定的数据处理逻辑。
6 H0 E4 P7 N; g# E6.最后将结果返回到APP,但过程数据仍然在TEE侧, : a( Z7 z) l$ |

云说鲲鹏 | Intel SGX和ARM TrustZone浅析

云说鲲鹏 | Intel SGX和ARM TrustZone浅析 - 攻城狮论坛 - 云说鲲鹏 | Intel SGX和ARM TrustZone浅析
. \2 z4 X* \, y2 b/ W
TrustZone利用的是CPU时间片切换来模拟了安全世界,这两个世界可以将它理解成一个CPU上处理的两个进程,它们通过上下文切换来将CPU的时间片占满以利用CPU。从安全角度,仅仅分时复用或拟化,是不足以确保安全的,因此ARM另外定义了安全框架,从硬件级别两个世界,包括Timer、TRNG、TZPC、MMU、Cache等相关设备,不同的芯片厂商会有自己的考虑,这个设备可能是双份的,或者是动态切换以达到隔离目的(此处不方便贴上我司920的安全芯片框架)。同时,安全侧也需要有一个可信操作系统执行应用。从原理上,REE侧和TEE侧是对等的,因此并不会性能的差异。应用程序的开发,除了使用TEE定义的标准接口,依赖的都POSIXAPI,使用标准的开发语言。
5 w; V- K, q% o+ u
& p7 w( h  h! W+ X2 M在部署应用时,SGX只需要在代码中定义即可,在TrustZone中侧需要单独开发部署TA。一般设置厂商都会提供给应用开发者自行部署TA的方法,与SGX相比稍有一点不同,但并不是不可接受(个人观点),这也确实是SGX很明显的一个优势,于是乎,ARM后面有了Newmore这样一个概念。# ^& Y- g% Z1 Y4 q

2 L% x6 y+ u9 _0 h7 d但也正因为TA与APP是分离的,并且TEE侧是不可查看的,因此数据的处理过程很难以被窥探。
3 i, `  _, a" r$ X+ S. Z$ G9 I5 M: G" p9 e) A- v8 _) e1 H
最后,还有一点,网上还有一种声音,认为SGX和TrustZone“没有什么用”,观点的理由是:
! L# r0 a' B9 Y3 B) v6 r
# H9 k& ]' A$ a* o“且不说传统的攻击,如SQL注入、溢出攻击,使得攻击者可以直接控制非安全应用,进而通过定义的接口取得数据,即使没有这些漏洞,恶意软件通过其他途径入侵到了OS里面,它是不是可以远程注入一段代码到APP,然后调用接口获取数据?”% j4 l0 l7 [& c% P' [

2 Q# H+ h8 \# g4 Z3 n这里必须要反驳一下,之所有这个观点,是他没有理解SGX或TrustZone的真正的使用场景。正确的处理方式其实上面的过程描述中我们已经提到了:“处理完之后,返回结果,但过程数据仍然在Enclave中”“最后将结果返回到APP,但过程数据仍然在TEE侧”
, e# C1 T% x3 S* [3 c7 }. p9 o
* p1 G6 C$ Y% \( Y一个有价值的安全应用,并不会支持将敏感数据通过接口调用返回到非安全侧。& ~7 V3 l( ?, ~1 j
* P- P' d' o5 w0 a$ K9 d: A
应用的安全与否,无论是SGX还是TrustZone应用,确实很大程度上是依赖开发者的意识。SGX或者TrustZone,它们的价值在于是隐匿敏感数据本身,以及尽可能的隐藏处理敏感数据的处理过程。只有以这个导向,在应用开发时才能有意识地向这个方向去努力。; y. z+ \# ]8 {8 i4 z1 z) \+ l
* R3 ]2 D2 e  M" a0 n( }, d
我们拿媒体数据举例,一看就会明白应该如何正确使用SGX或TrustZone---
* z* K$ Y" O+ Y) m" g/ ^4 Z6 D, M6 Q2 o, v' _" L
高价值的媒体内容在网络传输时,它通常是被DRM加密保护的,只有凭证的订户才可以解密播放。盗版者本身可能就是个订户,在没有SGX、TrustZone等保护时,通过拷贝内存等手段就很容易实现盗版。但有这些技术后,加密的媒体流并不会在非安全侧解密,而是送往安全侧。注意,在SGX、TrustZone解完密之后的媒体,也并不会返回到安全侧,而是使用底层安全驱动,直接送往解码播放了,媒体数据直接在安全侧消费了。5 Y: w5 q) D5 ~/ @& G( l8 V# `

" Q# r0 M) D/ s4 v% ~# n以上是从应用开发者角度来比较SGX与TrustZone的差异。但事实上,两者完全不是一个层面的东西,SGX更适合拿AMD的SEV来比较,因为这两种技术类似,都是基于所谓的realm技术(局部保护)来实现。ARM有最新的newmore方案,但目前还在验证的概念阶段,预计在2023年以后才可能产品化,这个世界变化太快,两年的时间实在是太久,暂不讨论。
; ^2 @* I% u2 o/ E+ s# f" i. a
CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

monkeyman [Lv10 举世无双] 发表于 2020-2-21 00:09:50 | 显示全部楼层
非常感谢楼主分享资源呀
回复 支持 反对

使用道具 举报

fjq0215 [Lv10 举世无双] 发表于 2020-2-22 14:19:44 | 显示全部楼层
Intel SGX和ARM TrustZone浅析
回复 支持 反对

使用道具 举报

hugo_26 [Lv9 无所不能] 发表于 2020-2-22 16:18:15 | 显示全部楼层
ddddddddddddd
回复 支持 反对

使用道具 举报

monkeyman [Lv10 举世无双] 发表于 2020-2-22 21:38:40 | 显示全部楼层
非常感谢楼主分享资源呀
回复 支持 反对

使用道具 举报

monkeyman [Lv10 举世无双] 发表于 2020-2-23 15:53:18 | 显示全部楼层
非常感谢楼主分享资源呀
回复 支持 反对

使用道具 举报

monkeyman [Lv10 举世无双] 发表于 2020-2-24 00:26:35 | 显示全部楼层
非常感谢楼主分享资源呀
回复 支持 反对

使用道具 举报

monkeyman [Lv10 举世无双] 发表于 2020-2-25 00:38:39 | 显示全部楼层
非常感谢楼主分享资源呀
回复 支持 反对

使用道具 举报

fjq0215 [Lv10 举世无双] 发表于 2020-2-25 09:52:43 | 显示全部楼层
云说鲲鹏 | Intel SGX和ARM TrustZone浅析
回复 支持 反对

使用道具 举报

jsyzchen81 [Lv9 无所不能] 发表于 2020-2-25 14:35:38 | 显示全部楼层
路过,支持一下啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2020-5-29 05:02 , Processed in 0.306491 second(s), 22 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn