第4章 错误注入攻击
随着信息技术在人们日常生活中的广泛使用,信息安全所带来的挑战与日俱增。这些挑战以不同的形式出现,如第2章中讨论的硬件木马、第3章中讨论的侧信道攻击。本章将介绍另外一种被广泛研究的针对集成电路的攻击——错误注入攻击(fault injection attacks,FIA)。简而言之,错误注入就是通过修改电路中的一些参数或修改电路工作环境中的约束,使得电路运行在一个不确定状态,进而产生错误。错误注入一般通过修改电路局部电流或者特定逻辑的延时来进行。Boneh等人[1]早在1997年就开始研究硬件层面的错误注入对系统安全的影响。在那时,他们提出的错误注入方法几乎攻破了所有密码算法在硬件上的实现,产生了巨大的影响。错误注入攻击不仅局限为对密码硬件的攻击,而且几乎可以用于对任何集成电路的攻击。错误注入攻击是硬件安全的一个重要研究领域,也是本章讨论的重点。
错误注入一般是为了达到两个目的:信息泄露和非法权限提升。一个外部注入的错误可以帮助攻击者跳过特定的指令或特定的比较操作,使得电路内部处理敏感信息的运算不能正常工作。举例而言,错误注入运算可以影响电路内部随机数产生器的工作,使得生成的随机数不再“随机”。这些有问题的随机数会导致密码算法的安全性被削弱,攻击者就有机会实施攻击、入侵系统,获取系统的内部信息。错误注入攻击的另一个危害性在于能够破坏电路中防止侧信道攻击的机制,所以攻击者常常将错误注入攻击和侧信道攻击结合,发起混合攻击。比如,攻击者可以使用错误注入来控制电路内部的特定模块,降低基于侧信道泄露的差分分析或相关性分析的计算复杂度。
错误注入攻击并不仅限于对密钥的破解,也可以提升攻击者的使用权限。比如,密码的验证决定了使用者是不是合法用户(或者是不是具有管理员权限),针对密码验证的错误注入攻击可以使密码验证的结果总是为真,这样攻击者就可以侵入系统(或者提升权限),甚至可以跳过验证这个步骤[2]。表4.1总结了一些常见的错误注入攻击模式。本章后续部分将分别讨论这些攻击模式,重点讨论基于功率、基于时钟信号以及基于电磁信号的错误注入攻击模式。
表4.1 常见的错误注入攻击模式
对于集成电路的攻击可以分为三类:非破坏性、部分破坏性和破坏性。非破坏性攻击不会破坏电路的封装和内部结构。部分破坏性攻击可能会破坏电路封装,但是封装内部的芯片本身是完整的。破坏性攻击在攻击的过程中会破坏芯片的封装和内部的电路。举例而言,基于电磁信号的错误注入攻击就是一类典型的非破坏性攻击。在这类攻击中,攻击者通过一个电磁探头来改变目标电路局部的电磁场,在探头没有和芯片及其封装有物理接触的情况下,影响芯片内部的电流,从而注入错误[5]。基于激光或强光的错误注入属于部分破坏性攻击,因为攻击者需要破坏芯片封装,使得激光或强光的光源能对准芯片内部,修改晶体管运行状态[4]。与这两种方式不同,基于精细的物理探针的错误注入攻击是一类破坏性攻击[10],发起这种攻击需要首先破坏芯片封装,然后(破坏性地)打开芯片的顶层金属,使探针能够直接接触底层金属,从而可以精确地控制底层金属线的电压,注入错误信号。为了更好地理解各类错误注入攻击的形式,表4.2列举了各类错误注入攻击模式对目标电路的破坏性分类及攻击者对目标电路的理解程度。
表4.2 各类错误注入攻击模式对目标电路的破坏性分类及攻击者对目标电路的理解程度