中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

无所不谈

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 无所不谈 → 浏览主题: TrustZone是如何保证硬件安全的?
发表新帖 回复该主题
回帖:4个,阅读:47 [上一页] [1] [下一页]
* 帖子主题:

TrustZone是如何保证硬件安全的?

分享到
1572
steelen
文章数:276
年度积分:217
历史总积分:1572
注册时间:2001/6/23
发站内信
发表于:2020/2/18 9:52:44
#0楼
从技术角度来说,一讲到TEE就会提到TrustZone,这是因为虽然TEE OS实现有多种多样,主芯片厂商也有好几种,但是大部分都是基于Arm的TrustZone架构。

通常说TEE的安全是基于硬件架构的软件保护,那么这个体现硬件安全的TrustZone到底是如何保证安全的呢?我们今天来捋一捋,首先从安全的角度上看,首先明确保护对象是什么?

1,防止系统root后,关键数据或者资源被窃取。

2,防止通过调试接口,获取内存或运行寄存器值。

3,安全启动,必须建立信任根。

4,具备一定的抗攻击功能。

按照Trustzone的划分,CPU被划分为安全世界和非安全世界。上图中,红色代表非安全和绿色代表安全,黑色的部分是总线。

对于一些从设备外设比如指纹来说,很简单的理解可以将SPI口设置为安全总线访问状态,那么设备就处于安全的世界中,就不接受非安全的访问,只要简单的拒绝,返回错误或者无意义数据即可。

对于内存来说,某些地址段处于安全世界,某些处于非安全世界,那么也可以插入一个内存保护模块(TZC400)来检测,判断某个地址是不是能被访问。当地址被送到这个检验模块,模块会去查表,看看本次访问是不是被允许,然后做相应措施。表本身和之前的动态配置一样,必须是在安全世界里面配置的。

对于一般主设备,不考虑自带的缓存时,类似地也分为安全和非安全,可以在安全世界动态配置完成后,这些主设备会按照自己所处的世界,根据配置和地址来访问从设备,得到相应返回。

对于设备访问处理器情况下,对于CPU处理器来说由于其缓存是可以被访问的,并且这个访问,不会经过总线送到内存,也不会经过内存保护模块。这时操纵一个非安全世界的模块,假装去读一个被安全世界保护的内存地址。这个地址本来存在于内存,被地址检测模块保护,但是由于总线的监听功能,读请求有可能被发往处理器缓存,从而绕过保护。

为了防止这种情况,处理器在所有的页表和缓存都做了特殊设计,增加一个标志位,标志本缓存行是否属于安全世界。如果别的非安全世界主设备来监听安全世界缓存行,由于安全位不同,处理器会认为这是两个不同地址,哪怕它们的地址一致,返回缓存未命中。这样,就不会把数据泄漏。这个页表位于安全世界中无法被修改或伪装!因为在非安全世界中的任何模拟伪装,它会忽略页表中的安全位,这个标志位都是无效的。

处理器本身处于非安全世界,有没有可能访问其他主设备的安全缓存?当然有。所以不要把其他主设备接到ACE端口(缓存一致性端口),以免被监听,一般主设备是不会做缓存上的安全与非安全区分的。

GPU也可以被监听缓存的,图形处理器被设成永远处于非安全世界,它使用另外一种机制来保护数据。

对处理器缓存熟悉的人可能会想到用跨缓存行的非安全变量来访问被保护的数据。没用的,处理器设计者早就想到这点,要不就是非对齐访问异常(包含exclusive access的时候),要不就不会给你数据,具体到每个处理器有所不同。

同样的,对于缓存维护,TLB和分支预测操作也有安全位和非安全位区分。总结起来就是防止关键资源被获取是通过,通过安全标志位保护,避免各种缓存操作漏洞。

杜绝了缓存漏洞后,还有别的隐患,比如仿真器。

调试模块可以被用来访问各个从设备,也可以访问和影响处理器内部资源。从设备侧的防护很容易,把调试模块当成一般的主设备处理就行。处理器内部的寄存器,缓存等资源,需要处理器从设计开始,就要为所有资源定义安全级别。被保护的资源对于来自调试模块的未授权访问会被禁止。只有通过安全启动链,安全世界的软件才能打开寄存器SDER,从而允许外部仿真器影响被保护的安全世界资源和处理器运行状态,访问被保护的资源。
立志做客户可信赖可依赖的工控核心产品供应商
www.tengcon.com
1572
steelen
文章数:276
年度积分:217
历史总积分:1572
注册时间:2001/6/23
发站内信
发表于:2020/2/18 9:56:16
#1楼
ARMv8的处理器被分成四个特权等级,通常EL0跑用户态程序,EL1内核,EL2虚拟机。EL0-1分为安全与非安全,EL3只有安全世界,EL2不区分,两个世界的切换必须经过EL3。我们谈到的处理器内部资源,包括寄存器,缓存,异常,MMU,很多都会分组,组之间看不到或者低级不可访问高级,从而保证安全。没有分组的,比如通用寄存器,就需要软件来维护,防止非安全世界的看到安全世界的数据。

引起安全切换的会有几种可能:中断和SMC指令。中断分为如下几种情况:

非安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统没必要切换安全状态,作为一般中断处理,切到EL1即可。

非安全世界下,在EL1或者EL0,当一个安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。

安全世界下,在EL1或者EL0,当一个安全中断来临,没必要做安全世界切换,作为一般中断处理,切到EL1即可。

安全世界下,在EL1或者EL0,当一个非安全中断来临,那么系统必须先切到EL3,不然就没法做安全世界切换。

当跳到EL3的Secure Monitor程序处理上下文切换时,IRQ/FIQ中断屏蔽位不起作用,哪怕打开了也不会触发,直到Secure Monitor处理完,向下跳到相应的安全世界EL1时,才会让原来的中断屏蔽恢复,从而触发中断。此时处理中断的是安全世界的中断程序,处于被保护的内存区域,杜绝非安全世界的程序篡改。

SMC指令和中断触发类似,只不过软件就可以触发,切换到Secure Monitor。这里,非安全软件可以提出触发请求,在通用寄存器填入参数,却无法控制安全世界的处理程序做什么,也依然看不到被保护内存数据。所以防止数据泄密的任务就靠安全操作系统TEEOS了。

至此,安全启动后的基本硬件防护已经完成!
立志做客户可信赖可依赖的工控核心产品供应商
www.tengcon.com
1572
steelen
文章数:276
年度积分:217
历史总积分:1572
注册时间:2001/6/23
发站内信
发表于:2020/2/18 10:37:02
#2楼
近日,清华大学计算机系发现了ARM和Intel等处理器的电压管理机制存在严重安全漏洞—“骑士”(VolJokey)。攻击者通过该漏洞可突破原有安全区限制,获取核心秘钥、直接运行非法程序。“骑士”可影响全球大量计算设备,且涉及到处理器芯片设计的核心架构,其潜在的影响程度和可能带来的损失巨大。
立志做客户可信赖可依赖的工控核心产品供应商
www.tengcon.com
4165
chengzheng
文章数:808
年度积分:314
历史总积分:4165
注册时间:2006/7/24
发站内信
发表于:2020/2/18 11:13:17
#3楼
大侠是腾控的人啊,
真是幸会幸会啊 !

你们公司产品的处理器是ARM的吗   ?
1572
steelen
文章数:276
年度积分:217
历史总积分:1572
注册时间:2001/6/23
发站内信
发表于:2020/2/20 9:56:29
#4楼
是啊
立志做客户可信赖可依赖的工控核心产品供应商
www.tengcon.com
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2020 Gkong.com, All Rights Reserved

109.2