首页 > 代码库 > 错误注入攻击总结(Fault Injection Attack)

错误注入攻击总结(Fault Injection Attack)

1.   什么叫错误注入攻击

错误注入攻击,指在密码芯片设备中通过在密码算法中引入错误,导致密码设备产生错误结果,对错误结果进行分析从而得到密钥。

它比差分能量攻击(DPA,DifferentialPower Analysis)、简单能量攻击(SPA,SimplePower Analysis)、电磁分析攻击(EMA,ElectromagneticAnalysis)都更强大。攻击没有防护的RSA-CRT只需要一个trace(能量迹),AES或者DES需要两个traces。DPA和EMA通常需要上千或者上万条traces,SPA需要少量traces,但不够强大。

 

2.   错误注入攻击的主要方式

a)    Glitch Attack

通过扰乱外部电压或者外部时钟使设备失灵对设备进行攻击,优点是易于实施,但无法对某一个特定的部分进行攻击。现在的大多数芯片都有glitch detector或者DC filter来抵抗攻击。 


b)    Temperature Attack

通过改变外部的温度来扰乱设备的正常运行,从而得到错误结果。


  c)    Light Attack

通过激光照射,利用光子扰乱密码设备的正常运行。它可以选择攻击的位置,是最强的攻击方式。由于芯片主要都是在正面进行保护,背面很少采用保护措施。Laser attack可以通过照射背部进行攻击。

 

d)    Magnetic Attack

电磁攻击,利用强大的磁场对设备进行干扰。优势在于廉价,但不如Laser attack强。

 

3.   错误的种类:包括永久性错误和暂时性错误

a)    永久性错误

强大,可用于攻击数据(EEPROM、RAM)或者代码(EEPROM),但是难于实现。

 

b)    暂时性错误

干扰代码的特定操作过程,包括:跳过子过程skip subroutine, 避免检测avoidtest, 错误执行代码executedifferently, 抓取错误数值fetch wrongvalue, 改变程序计数器modify programcounter等

 

4.   错误注入攻击模型的选择:步骤分两步,首先选择引入哪种错误,然后再选择实践的方式。

a)    Bit v.s. Byte

Bit: 攻击单bit,强大,几乎可以成功攻击所有的密码系统,但难于实现

Byte:攻击整个Byte,由于byte是设备数据的存储和传输的主要方式,所以它比较易于实现

 

b)    Specific v.s. Random Value

Specific:把数据设为全0或者全1,理论上比较容易想到的攻击方式

Random Value:利用随机数进行攻击,比较易于实现。

 

c)    Static v.s. Computational

Static:用于攻击DSA,攻击点是存储器memory,比较困难

Computational:用于攻击RSA-CRT,在攻击中引入错误操作计算,实现起来比较容易。

 

d)    Data v.s. Control

Data:攻击芯片操作中的数据

Control:攻击芯片的操作过程,这种方法比较难于实现,但更加强大。



Reference:

Kim, Chong Hee, and J-J. Quisquater. "Faults, injection methods, and fault attacks."Design & Test of Computers, IEEE 24.6 (2007): 544-545.

错误注入攻击总结(Fault Injection Attack)