防故障注入攻击
概述
故障注入攻击为一种主动侧信道攻击方式。常见的故障注入手段包括电压或时钟毛刺,电磁辐射, 物理探测,使用激光束对设备进行故障注入等。通过故障注入,攻击者能够干扰内存中位翻转, 从而破坏程序执行,如跳过相关指令,更改判断结果等等。
BK7236 对核心安全组件提供了软/硬两方面的防范。
软件防故障注入攻击
BK7236 软件防故障注入攻击主要是通过在 BL1/BL2/TFM-S 中关注分支语句是增加随机时延, 使用复杂的 bool 变量,使用随机的 memcpy/memcmp 等机制来实现。
硬件防故障注入攻击
BK7236 硬件防注入攻击,主要是在 BL1 关键判断语句处使用硬件比较的方式来实现。例如, 将安全启动公钥 HASH 值的前 16bits 写入硬件比较寄存器 DST,在 BL1 的启动过程将实际 计算出的公钥 HASH 前 16bits 写入硬件比较寄存器 SRC,在 BL1 跳转到 BL2 前,硬件会 比较 SRC/DST,如果不一致就会中止启动。这样,如果攻击者通过故障注入方式将 ”公钥 HASH 验证结果为 false” 改成了 “true”,则在跳转到 BL2 前,硬件依然能够捕捉到这个错误,从而 中止安全启动。