针对TEE的攻击手段


2018-6-8 18:40

首先,从攻击方式上可以划分为硬件和软件两类攻击手段。

先来看下硬件攻击手段都有哪些?

1.硬件旁路攻击

旁路攻击的目标一是获取机密的加密数据,比如密钥;二是获取用于故障攻击的同步信息。

旁路攻击利用设备处理的数据和执行的操作与其物理信号(电源消耗、电磁辐射、光子辐射等)的相关性实施攻击。根据攻击方法是否需要建模,旁路攻击分为无需建模的攻击——简单功耗分析 (Simple Power Analysis, SPA),差分功耗分析 (Differential Power Analysis, DPA) 和相关功耗分析 (Correlation Power Analysis, CPA),和需要建模的攻击——模板攻击 (Template Attack, TA) 和随机攻击 (Stochastic Attack, SA)。

由于TEE的可信存储,固件防回滚,可信加密等特性均依赖于密码算法的安全实现,因此旁路攻击是一种非常有效的攻击手段。

2.硬件故障注入攻击

故障注入攻击的目标是改变被攻击设备的正常行为以获取泄露的信息或者绕过安全防护。

故障注入攻击可以通过改变时钟或电源信号,注入电磁脉冲或者激光以实施攻击。故障攻击可能导致的结果包括:改变条件分支的结果,跳过NVM存储器的写入操作,跳过密码运算,改变密码运算的结果,跳转到代码的随机位置,强制某条指令执行为NOP,跳过安全验证环节等。

差分故障攻击 (Differential Fault Attack, DFA)属于故障注入攻击的一种,通过分析密码算法的正确输出和受到故障攻击后的错误输出的差异来获取加密密钥。

故障注入攻击也是一种非常有效的攻击手段,但对于手机这种搭载TEE的产品,电磁和激光等故障注入攻击手段可能会造成手机设备的损坏,因此与旁路攻击相比,故障注入攻击的代价相当较高。

3.总线探测攻击

总线探测攻击的目标是在机密数据传输的过程中通过探测不同组件之间的数据总线以获取传输的数据。例如,SoC和片外的RAM芯片传输数据时,可以在其中放置探针,然后通过逻辑分析仪分析传输的数据。不过由于如今手机上使用的DDR芯片传输数据很高,这对于逻辑分析仪的能力也要求很高,因此总线探测攻击的代价也相对较高。

4.调试接口滥用攻击

如果设备的调试接口没有被关闭或者虽然关闭了但是关闭机制不安全,攻击者便可以通过调试接口直接访问设备,并读写其存储内容以发现漏洞或者无需认证便可执行某些特权操作。

对于大多数IoT设备,调试接口滥用攻击是一种非常有效的攻击手段。

5.物理存储导出攻击

物理存储导出攻击的目标是通过导出物理存储的数据至另一台设备中,以复制其中的数据。如果物理存储中的数据没有和设备绑定,那么这种攻击是简单有效的。

6.固件刷机攻击

固件刷机攻击的目标是绕过合法的固件升级流程,通过物理方式刷入恶意固件或低版本存在漏洞的固件以实施进一步的攻击。

7.DMA攻击

DMA (Direct Memory Access) 攻击的目标是利用某些具备DMA能力的设备(比如网卡或PCIe接口卡)能够直接访问内存的特性,绕过内存隔离的限制以读写数据。

聊完了硬件攻击手段,小Wa继续聊聊软件攻击手段。软件攻击手段包括以下几种。

1.软件旁路攻击

上文小Wa刚刚介绍过硬件旁路攻击,那软件旁路攻击顾名思义就是不借助硬件设备,通过软件形式实施旁路攻击。旁路攻击的本质上是利用设备在处理某些数据或执行某项操作时产生的一些特征实施攻击。这里,小Wa介绍两种软件旁路攻击手段——缓存攻击 (Cache attack) 和差分计算分析 (Differential Computation Analysis)。

缓存是CPU中一块高速存取区域,作为高速运行的CPU和相对低速率的RAM的一个中转站。对于经常访问的数据,CPU可以将其从RAM搬运至Cache,这样,在使用这些数据时,CPU便无需访问RAM,节省了等待时间。但如果CPU将要访问的数据不在Cache中,这时CPU会从RAM中将数据搬运至Cache中。那么问题来了,根据CPU访问的数据是否在Cache中,CPU最终访问相关数据的时间存在差别,如果通过统计学的方式分析上述时间差别,便可以获取一些机密信息,比如密码算法使用的加密密钥,这便是Cache攻击的原理。

而差分计算分析则是一种针对白盒密码学的攻击手段,通过观察和控制密码运算的中间值以及内存的读写操作以获取对应的加密密钥。差分计算分析与差分功耗分析相比,不存在噪声的干扰,而且实际的数据可以从内存中直接获取,而不需要像差分功耗分析那样计算中间值的汉明重,因此差分计算分析的攻击效率较高。因此针对采用白盒密码实现的方案,小Wa建议定期更换白盒密钥,因为所有的白盒密钥最终都是可以被攻破的。

2.软件故障攻击

上文小Wa介绍了硬件故障攻击,当时提到主要通过改变时钟或电源信号,注入电磁脉冲或者激光以实施攻击。细心的你们一定注意到这些干扰源都是硬件相关的,那有没有可能通过软件施加故障呢?下面小Wa介绍两种软件故障攻击手段——Rowhammer攻击和CLKSCREW攻击。

Rowhammer攻击是利用Rowhammer bug实施的攻击。所谓Rowhammer bug是指在DRAM中相邻内存单元读写时,会造成临近内存单元的比特翻转现象,这主要是因为现代内存技术中内存单元密度过高。在硬件故障攻击中,可能通过外界施加电磁辐射或者激光导致内存中某些比特位翻转,而在Rowhammer攻击中仅凭软件控制,便可造成某些内存数据的改变,通过精心设计攻击程序,便可以借助故障攻击模型获取加密密钥等机密数据。

CLKSCREW是一种现代芯片中时钟管理机制。通过配置相关寄存器,可以改变芯片的运行频率,一般在正常范围配置内时,芯片的运行状态是可预期的。但是在某些临界条件下,芯片的运行频率可能和时钟配置的关系不在具有相关性,这样便实现了故障注入的效果。同样,通过精心设计攻击程序,也可以借助故障攻击模型获取加密密钥等机密数据。

3.命令异常攻击

命令异常攻击的目标是通过非预期的命令参数或命令序列是设备运行出现异常,以泄露机密信息或者发现潜在漏洞。模糊测试便是一种非常有效的命令异常攻击手段。

4.固件回滚攻击

固件回滚攻击和上文提到的固件刷机攻击的目标一致,但是实现方式不同,固件刷机攻击是通过物理手段取下存储芯片刷入固件,而固件回滚攻击是通过利用固件防回滚机制的漏洞,刷入低版本存在漏洞的固件。

5.软件内存导出攻击

软件内存导出攻击是指利用了某些软件在使用完敏感数据后没有及时清除的漏洞,通过软件方式获取相关敏感数据。

6.代码注入攻击

代码注入攻击是指攻击者注入和执行自己的代码以绕过TEE的隔离机制。当然,注入的前提肯定是TEE存在漏洞被利用。

7.拒绝服务攻击

拒绝服务攻击的目标是阻止某些可信应用正常处理请求。

8.软件调试滥用攻击

对于大多数开发者而言,他们拿到设备的时候,可能JTAG接口已经被禁用,那么为了方便调试,他们可能会通过软件打印log的方式辅助调试。如果打印的内容包含了敏感数据,比如相关的寄存器值和内存导出数据等,那便有可能被攻击者利用。

9.逆向工程攻击

逆向工程攻击的目标是通过反汇编或反编译的方式恢复软件代码以分析软件功能和数据。为了增加逆向工程的难度,可以采取混淆等手段保护关键的代码控制流程,变量名称等。

以上便是今天小Wa要介绍的针对TEE的攻击手段,攻防不分家,一个安全的TEE实现方案,必须要先了解可能的攻击手段,才能更好的加固TEE安全性。

点击查看:EMVCo眼中的TEE

本文转载目的在于知识分享,版权归原作者和原刊所有。如有侵权,请及时联系我们删除。
评论加载中
相关文章

月点击排行
关于本站    联系我们    版权声明    手机版
Copyright © 2011-2022 移动支付网    粤ICP备11061396号    粤公网安备 44030602000994号
深圳市宇通互联信息技术有限公司    地址:深圳市宝安区新安街道28区宝安新一代信息技术产业园C座606