首页 > 代码库 > 错误注入攻击总结(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:
错误注入攻击总结(Fault Injection Attack)