论文部分内容阅读
随着集成电路IC行业和制造工业的发展,加密芯片已经广泛应用于各个领域。它具有保护密钥和信息的能力,它保证了只有合法的使用者才能通过加密芯片进行数据交互。目前,已经有多种恶意攻击方案来攻击加密芯片从而破解密钥,有些恶意攻击者并不需要合法的授权就能获得敏感信息。一般的,我们将这类旁路攻击大致分为两种,一种是被动式的攻击,另一种则是主动式的。在被动式的旁路攻击中,常见的有时间攻击法、功耗分析法、电磁攻击法等等。攻击者可以通过功耗统计图上区分出AES高级对称加密算法迭代的轮数,从而对加密芯片的密钥进行破解。被动式的旁路攻击一般都需要攻击者采集大量的信息,重复大量的实验操作,之后还需要对采集的数据进行分析与统计。重复并大量的数据的采集和分析使得攻击者望而却步。所以被动式的攻击方式逐渐被其他更有效的攻击方式所取代。而主动式的攻击方式摒弃论了繁杂的数据采集,能够实现对芯片进行恶意攻击来获取敏感信息。其中,故障注入攻击是最典型的攻击方法,它是指攻击者通过改变芯片工作的外界环境,在芯片工作中引入故障。之后,攻击者可以通过分析错误的引入故障的结果来破解密钥。故障注入攻击不仅使得攻击者具有主动攻击芯片的能力,之后在进行密钥分析时,与功率分析、时间分析、电磁分析相比大大缩小了密钥搜索的范围。从这个角度讲,故障注入攻击无疑给加密芯片带来了非常严重的威胁。现有的故障注入技术和解决方案,大多是在芯片的数据路径进行分析。攻击者一般是通过故障注入改变芯片的中间计算结果,再利用差分分析方法(DFA)进行密钥分析。例如,在AES加密过程中,攻击者可以采用紫外光线(UV)改变一个/多个比特在中间迭代计算结果中。但是,研究者发现在控制路径实则存在着更大的安全性漏洞,攻击者可以因此改变整个加密芯片的加密流程,从而获得想要的加密过程与结果。在加密芯片中,FSM有限状态机是整个芯片的控制单元,它具有控制芯片内部信号以及芯片的特定操作。以AES为例,FSM决定着芯片具体的加密流程,所以FSM的重要性不言而喻。目前已经被证实,FSM也会遭受到故障注入攻击。攻击者已经通过在蒙哥马利阶梯算法的FSM中引入故障,从而破解密钥。一般的,攻击者可以通过建立时间违规或者过早锁存在FSM的状态寄存器中引入故障,这些可能会导致状态的错误跳转,从而导致芯片的中间加密结果提前暴露。攻击者一般可以通过超频、低电压供应和加热芯片来实现这些时序上的故障。这些攻击方式与光攻击,紫外线攻击和聚焦离子术(FIB)等高精度的攻击数据路径的攻击方式相比不仅价格低廉而且高效。所以这些故障注入攻击方式对加密芯片的威胁更大,也是本文的重点研究对象。实际中,FSM是一种时序结构,由寄存器及寄存器之间的组合逻辑实现,其中寄存器一般是受是时钟信号触发。状态机中状态寄存器的值非常重要,它代表着芯片当前运算状态也决定了最终的运算结果。如果状态机在进行状态跳转时,出现状态跳转错误,可能会导致加密芯片加密结果错误或者中间迭代计算结果提前暴露。为了保证芯片的FSM中的状态能够正常跳转,有研究者提出对状态跳转进行检测和保护,他们提出保护FSM中重要状态,只有被授权的状态才能够访问这些重要状态。以及之后的研究者,提出对整个FSM的保护,将所有的状态跳转进行存储,从而禁止了不合法的状态跳转。但是这些防护手段只是从状态跳转的角度出发进行防护,对于有些合法性的攻击无法进行防护,并且没有在源头对状态错误跳转进行检测与纠正。在本文中,为了防止时序违规而导致状态寄存器值锁存错误的现象,我们提出一种新型的状态寄存器。这种状态寄存器可以检测是否出现时序违规现象,并且在建立时间违规情况下,也能够使得状态寄存器获得正确的值。当状态寄存器存在时序约束违规时,我们发现正确的值可能会在原始时钟信号之后才到达。所以我们提出加入并行的主锁存器,在原始时钟时钟信号来临后,还能够进行多次采样。并且值得注意的是,在低功耗或者加热的故障情况下,逻辑毛刺已经变得不可忽略。显然的,仅仅依靠两个并行的主锁存器,并不能保证纠正正确。所以针对这种情况,我们提出利用三个主锁存器来实现检测,三个主锁存器的值经过选择器进行三选二输出的值来代替原来的主锁存器的输出。这三个主锁存器分别由不同的延迟时钟信号控制并且是在低电平导通,原始寄存器是由原始时钟控制,其他两个锁存器由不同延时的时钟信号控制,分别是1/2时钟周期延时和3/4时钟周期延时。所以,无论故障发生在1/2时钟周期前还是后,都能够进行纠正。当出现时序错误时,尽管原始寄存器锁存到了错误的值,但是其他两个并行的主寄存器可能锁存到了正确的值。我们可以通过比较三个锁存器的值,来检测是否出现时序违规。为了防止混淆过早锁存和正常状态跳转,我们将分别对三个锁存器的值进行分析。在原始时钟上升沿来临之后,如果出现过早锁存现象,与正常跳转相比,下一状态会提前达到稳定,从而出现另外两个并行的锁存器的值与原始寄存器锁存的值不同。当状态寄存器执行T(0-1)状态转移时。三个锁存器可能会出现四种情况。它们分别是‘111’,‘110’,‘101’,‘011’。其中,‘011’被认为违反了时序约束。所以当前状态值应为‘1’而不是‘0’。同样,这种判断方式也适用到T(1-0)。之后为了实现自我纠正的能力,我们首先在三个主锁存器后和从锁存器中间加入选择结构。我们提出利用三个锁存器的值来产生错误信号,我们通过使用一个异或,一个同或门和一个与门来产生错误信号。值得注意的是,从锁存器则是由原始时钟信号进行控制并且是高电平导通。如果故障直到下一时钟的低电平才被发现,原始的从锁存器已经被截止,无法对此类故障进行纠正。这个问题可能导致在故障情况下,我们无法把所有的时序故障都进行纠正。那么,随后可能会导致我们仍然无法保证状态正常跳转。针对这个问题,我们提出加入一个并行的从锁存器结构。能够在原始从锁存器被截止的情况下,也能够在发现故障后,对其纠正。所以关于对两个从锁存器的输出的选择变得尤为关键。我们需要在两个从锁存器后加入选择器。当两个锁存器锁存到了相同的值,ERROR2信号被置‘0’,选择器选择原始的从锁存器S0锁存的值。如果两个锁存器锁到的值不同,ERROR2信号被置‘1’,选择器将选择并行锁存器S1的值来实现对时序错误的纠正。为了减少整个状态寄存器的面积开销以及更小的Tc2q,我们利用优化过的锁存器结构进行整个DFF的搭建。并且采用传输门来实现锁存功能和部分逻辑门包括异或门和选择器的搭建。我们使用ISE综合软件摘取出AES-128的FSM的电路图,使用Hspice模拟了低电压供应的故障攻击状况分析了在不同电压下组合逻辑的延时。我们采用了180 nm台积电工艺库进行结构的搭建,并通过Hspice分别模拟了正常模式,故障模式以及毛刺等情况验证了它的功能。我们提出的结构在时序性能上与传统的D触发器没有太大差异。我们使用传输门实现了MUX选择器、异或门的功能,在面积开销上虽然比传统的CMOS管的状态寄存器开销要增加,但与其他的FSM防护方法面积开销上相比,我们提出的面积开销更小,并且不需要额外的电路结构,状态寄存器本身就能在每次状态跳转时都会检查和纠正。FSM作为整个芯片的控制单元,状态寄存器的值具有重要意义,当FSM在进行状态跳转时,我们发现并行从锁存器的加入可能会导致毛刺。这是因为两个从锁存器在产生ERROR2信号时,由于控制信号的不同,两个从锁存器的输出结果有先后顺序,那么这样可能会导致ERROR2信号被短暂性的置‘0’后马上又被重新置‘1’。为了消除毛刺的产生。我们将对之前的结构进行优化。在提出的状态寄存器中,加入历史锁存器。历史锁存器主要是用来提前存储下一状态,当从锁存器对下一状态进行锁存之前,ERROR2信号已经稳定。从而消除了ERROR2信号在原始从锁存器导通的情况下,可能会改变的情况。在本文中,我们首先提出了新的状态寄存器结构来抵抗故障注入攻击,通过给状态寄存器的主从锁存器配上并行的锁存器,从而实现数据在不同延时下的获取,进而通过三个主锁存器的比较实现时序违规情况下的错误数据的纠正,并通过三取二的机制实现了逻辑毛刺出现的情况下的正确数据的获取。并行从锁存器的引入以及历史锁存器的引入实现了超过1/2时钟延期情况下时钟周期延时下的状态寄存器值的获取。当故障发生时,能够检查和纠正状态寄存器的值。时序上优于传统的状态寄存器设计,面积开销上优于其他针对FSM的防护方案。整个设计从寄存器的角度克服了时序违规导致的故障,而且是从源头上阻止了因时序约束违规的一系列的后续的安全漏洞。