快速连接
👉👉👉【精选】ARMv8/ARMv9架构入门到精通-目录 👈👈👈
1、故障注入的高级视图
(1)、故障是改变电路正确预期行为的物理干扰
(2)、它可以是电压或温度的变化,也可以是激光或电磁脉冲… 都有不同的效果
(3)、影响可能是永久性的(损害),也可能是短暂的
(4)、物理访问并不总是需要,如rowhammer 或 clkscrew
(5)、与可靠性密切相关
- 可靠性与“随机”危险有关
- 故障注入与主动引入危害的相对
(6)、这是一个复杂的领域
- 故障没有被很好地理解
- 这是一个活跃的研究领域
(7)、所有的错误模型--——但每个模型都解决了一些观察到的故障的特定方面,因此很有用
(8)、归根结底就是使用不同的模型来探索和推理未知/复杂环境
下图来自“对安全嵌入式软件的故障攻击"模型:
2、Software countermeasures(软件对策)
(1)、目标是防止数据和控制流篡改
(2)、有专用的硬件组件可以提供一定程度的保护,但软件对策提供了额外的防御级别——纵深防御方法
(3)、虽然硬件和软件都无法保证防御这些攻击,但应对措施越多,攻击就越难。
(4)、有一些实用的技术可以应用于编码并显着降低成功攻击的可能性
3、Generic countermeasures(通用对策)
针对物理攻击的软件抵御技术
(1)、复杂(large hamming distance) 常量:需要翻转更多位才能将一个有效值更改为另一个有效值
(2)、双重检查,switch/case 双重检查:通过两次检查相同的条件,使攻击分支条件变得更加困难。 如果存在不一致,可以主动检测篡改企图
(3)、循环完整性检查:确保重要的循环被执行,循环后检查预期的索引值。
(4)、默认失败:跳过指令或攻击PC可以绕过重要代码。 检查和分支的默认值是失败的情况
(5)、Flow Monitor:跟踪程序的状态,检查其期望值以确保程序不处于意外状态。
一些参考:
https://www.cl.cam.ac.uk/~rja...
https://www.riscure.com/uploa...
4、Attack vs. Protection
(1)、How to perform an attack?
- 虽然物理攻击看似很难,但是仍然有很多很多的攻击方法
- 有商业工具可以破坏设备进行故障注入:Chip Whisperer
- 兼容商用设备的软件框架降低攻击门槛
- 攻击性设备成本也是比较低的
看起来attack比protect against容易得多
(2)、How to be protected?
- 通用解决方案不存在
- 许多研究论文,但没有多少实用信息。
- 没有经过测试的开源解决方案,没有编译器支持
- 认证产品通常包含专有和封闭源代码
- 编译后的代码取决于实际的编译器、优化级别、架构等。
- 编译后的代码必须经过验证。 在 C 级别上似乎安全,但二进制文件可能不...
关注"Arm精选"公众号,备注进ARM交流讨论区。