尝试从硬件提取数据通常非常困难(尤其是在处理智能卡时)。故障注入攻击允许基于通过加密/解密算法的错误传播来猜测加密密钥。我知道一些可能的故障注入类型,但不是全部。


可能的故障注入类型有哪些?
不同类型的技术是否提供有什么特殊的优势吗?


评论

对我来说,这似乎更适合Wiki页面。毕竟,您要索要的东西清单。我认为,最好是陈述您使用FIRE曾经遇到或曾经遇到的特定问题,然后创建一个包含该信息的Wiki页面。
这不只是在一张纸上使用的术语吗?

不,这是定义它的常用术语。我将很快打开一个具有一些基本定义的Wiki。

好的,您绝对正确。我会作一个回答并改善问题。

另外,请看一下这似乎有一些误解,请参阅“封闭道路是否可以解决问题?”。在问题得到解决之前,关闭只是“保留”状态。您仍然可以对其进行编辑和改进,然后重新打开它。

#1 楼

故障注入攻击
基本上,这里我们假设有一个黑匣子,它使用已知算法但带有一些未知参数来产生输出。在密码学的情况下,黑匣子可以是智能卡上的芯片,已知算法可以是密码算法,未知参数将是隐藏在芯片中(永远不会消失)的算法的关键)。
在此特定设置中,我们可以执行所谓的“选择明文攻击”,这意味着我们可以选择黑匣子的输入并查看输出。但是,我们还假设这还不足以猜测未知参数(键)。因此,我们需要更多帮助。
我们的第二个假设是,我们能够在已知算法的特定选定阶段引入错误。通常,在谈到智能卡时,这意味着我们要进行物理设置,并具有一个与智能卡时钟链接的非常精确的计时器,以及一个针对芯片上物理寄存器的激光器。用激光束对寄存器,通常会重置寄存器(或可能引入一些随机值)。
因此,故障注入的目的是研究注入的故障对密码算法的影响并推论出一些信息有关密钥值的信息。
根据芯片中使用的密码算法,为了使收集到的有关密钥的信息最大化,要重置的最有趣的位可能会有很大差异,因为错误的传播不是取决于执行的计算。因此,需要首先研究每种密码算法,以了解提取密钥的最佳进行方式。
故障注入攻击的类型
不同类型的故障注入分析​​取决于主要取决于可以控制所引入错误的准确性(从最简单到最困难):


完全控制的错误:我们假设可以完全控制该错误。基本上,我们可以选择寄存器的内容以及何时在算法中引入错误。

已知错误:我们假设我们对错误有部分控制。这意味着我们知道它的引入位置,我们知道该寄存器中写入了什么,但我们无法提前选择它。

完全不受控制的错误:我们不知道所写的内容,也不知道何时将其引入寄存器中。算法。

反措施
反故障注入实际上很容易,但是代价很高。您只需要复制电路并检查完成后两个电路的输出是否相同。如果没有,那么您只需发出一个错误而不会泄漏任何信息。但是,通常,“完全控制错误”攻击是在实践中几乎从未达到过的理想情况。
更难解决的是,在“已知错误”攻击的情况下,您可以使用以下命令的输出芯片(output / error)来猜测您想要的任何寄存器的内容。您只需要始终对相同的输入执行攻击,直到获得正常的output,然后您就可以存储在寄存器中编写的内容。因此,重新构建密钥的值。
无论如何,芯片上电路冗余的成本(无论是金钱还是功耗)都很高。因此,并非所有芯片都可以配备此芯片。
其他相关攻击和结论
这些攻击必须与“边信道攻击”进行比较(或组合)。两种攻击都有不同的方法,并且对可能的情况使用不同的假设。结合使用它们可以进一步提取您所研究设备的信息。
现在谈论软件逆向工程,我现在不知道故障注入攻击的实际用途。但是,我非常有信心,您可以使用此技术来猜测已被混淆的已知算法的参数,而不必详细剖析它。以某种方式,任何调试器都可以在程序(断点)的精确时间重写寄存器,并完全控制寄存器中写入的内容(在这里是“完全控制错误”攻击的情况)。因此,这肯定可以用于常见的混淆程序。