第三十九个知识点:侧信道攻击和故障攻击有什么区别
第三十九个知识点:侧信道攻击和故障攻击有什么区别
侧信道攻击(Side-channel attacks, SCA)是一类攻击者尝试通过观察侧信道泄露来推测目标计算的信息。(例如,时间,功率消耗,电磁辐射,噪声等。)
故障攻击(Fault attacks, FA)是一类攻击,在这种攻击中,攻击者尝试利用错误计算的结果。错误可能导致程序或者设计错误(例如 Intel著名的FDIV错误),或者被攻击者诱导的错误(例如,能量故障,时钟故障,温度变化,离子束注入等)。"The Sorcerer's Apprentice Guide to Fault Attacks',https://eprint.iacr.org/2004/100.pdf"给了一个更实用的故障注入技术的全貌。
概括的说,SCA利用计算泄露和FA利用故障计算的结果就是两种方式的主要区别。这不是一个很有见解的答案,也许我们要讨论的问题是‘讨论一些在侧信道和故障攻击中的相似方法’。
我将会讨论在SCA和FA三种不同的子类:非入侵,半入侵,入侵。另外,在这种分类可能有一些争论。这些是我的问题,如果你不同意我的意见,你可以和我的出版商讨论一下。(233333)
非入侵攻击:
一个被分类成非入侵的攻击,是当攻击者没有对目标有物理上的接触。我在下面给出了例子,但是还有单独的例子。
SCA:时间攻击是有争议的,它既是最适用的也是最少入侵的SCA向量。这部分上是因为时间攻击可以远程攻击,因为它们能被很容易的引入。考虑一个例如OpenSSL支持海量平台和一个完整的密码学套件这样的库。确保每个敏感计算都被编程进常数时间会让各个平台十分繁琐。除此之外,代码编译器使得这件事更加的困难,代码优化变成了一个艰巨的战斗。
FA:非入侵故障攻击不太常见,因为它需要错误行为来触发故障。我们可以使用前面提到的Intel FDIV漏洞来构建一个攻击,它将在每90亿个随机输入中返回一个不正确的除法结果。我似乎找不到任何具体攻击的证据,所以我们相信这是可能的。
半入侵攻击
如果对手与目标的物理接触有限,则攻击被归为半侵入性攻击。我在下面给出了单独的例子,但是还有更多的例子。
SCA:在一个能量分析攻击中,攻击者监视目标机器在计算秘密数据的能量消耗。在这种攻击的理论就是动态功耗(在某种程度上)将与正在处理的数据相关。如果对手可以近似这种关系,那么他们也可以对正在处理的数据进行推断。这可以说是半侵入性的,因为对手需要对目标设备进行电源轻击,而这并不总是可用的,因此对手需要修改目标。
FA:时钟和电源故障攻击的目的是通过改变目标环境来诱导目标设备的错误行为。考虑芯片的时钟输入,该时钟控制目标设备的运行速度。器件的最大时钟速率受目标的“关键路径”的限制,这是组合电路达到稳定状态所需的最长时间。违反此界限将触发设备中的竞争条件,从而导致未定义的行为。这使得glitch攻击有些不可预测,有时很难复制,但非常有效!
http://www.eurasia.nu/wiki/index.php/Xbox_360_Reset_Glitch_Hack
入侵攻击
入侵攻击指的是攻击者又无限的资源同时能接触目标。
SCA:探测SCAs使用对目标设备的数据总线的直接轻击,允许对手(几乎直接)读出总线上的任何信息。为了精确地锁定秘密数据,必须对目标进行完全的封装和仔细检查。
FA:探测FAs允许对手完全改变目标设备的行为。再一次,目标必须被完全解码并被精确地绘制出来以影响行为,但是一旦这样做了,对手就有能力重新连接目标,从而改变其操作。
总结
SCA和FA都已在实际设备上进行了演示,效果非常好。当然,针对这些攻击,我们设计了几种应对措施,但这些措施将在我们的“52件事”系列文章的后面出现。