攻击者需要执行哪些每次旁道攻击?
旁道攻击如何进行?被执行?
#1 楼
这是一个非常简单的定时侧通道攻击,您甚至可以在电影中看到。假设您正在尝试使用密码登录计算机,并且受害者逐字节比较您的密码,但是如果出现不匹配,则尽早停止:for (i = 0; i < n; i++)
if (password[i] != input[i])
return EFAIL;
如何您会攻击吗?
尝试使用类似
aaaaaaa
的密码,并使用秒表测量所需的时间;然后尝试baaaaaa
,caaaaaa
等,以最长的时间为准(例如haaaaaa
),告诉您第一个字母是什么。当然,定时中可能会有噪音,所以您可能不得不多次尝试每一次并收集统计数据以查看通过噪声的信号,或者仔细安排
input[i]
位于未映射或未缓存的虚拟页面中以放大比较例程是否已到达的信号。然后重复
hbaaaaa
,hcaaaaa
等,直到找到huaaaaa
;然后hunaaaa
;然后huntaaa
;直到获得密码。如何防御此类攻击?标准对策:以恒定的时间重写逻辑,以使所有输入花费的时间相同,和/或明智地将问题随机化,以便时间的任何变化都与输入的变化无关。
这只是众多类型的旁通道之一。以下是一些其他示例,以及大致需要使用的示例:
CRIME和BREACH漏洞利用压缩率作为秘密内容的辅助渠道
如果该软件愚蠢地通过压缩传递秘密并揭示结果长度,那么您需要的是一个JavaScript程序,该程序在用户浏览器中运行以触发对某些目标站点的HTTPS请求,并且
(由于这种攻击,大多数浏览器不再进行这种天真的压缩!)
诸如Serge Vaudenay的填充Oracle攻击利用不同类型的错误消息(填充错误与身份验证失败)作为消息秘密内容的辅助渠道。
如果协议设计不良(例如原始SSL协议) ),并且软件对于填充错误和身份验证失败的行为有所不同(例如早期的SSL实施),您需要的是网络上的MITM,该MITM可以拦截网络上的数据包并对其进行修改以查看对等方的行为。
(现代TLS不再使用像这样的容易出现填充错误的密码系统,并且较旧版本的TLS / SSL的现代实现为避免填充Oracle付出了额外的努力,但即使采取对策,有时也会允许其他边信道攻击,如Lucky Thirteen。)
Spectre类攻击利用了CPU中推测性执行时机所产生的副渠道。
如果CPU天真地执行推测性执行,就像基本上所有的mass-mark一样过去二十年来的台式机,笔记本电脑和服务器CPU等,如果该软件没有广泛的对策来阻止此类攻击,那么您需要的是在浏览器中运行的JavaScript程序,该程序可以访问相当高的分辨率计时器(可以用较低分辨率的计时器来模拟),以设置一个Spectre小工具并对其进行测量,即使所有加密算法都安全地实现了,而没有下面所述的定时攻击,它本身也没有旁通通道,因为它通过使用CPU的推测性执行来进入内存,所以它根本不应该访问。
(Spectre是baaaaaaaaaaaad新闻。)
对密码系统的定时攻击利用了与秘密有关的运行时间作为秘密的辅助渠道的计算。计算可能需要花费很多时间取决于秘密,这有很多原因,这是科赫(Kocher)的开创性论文中报道的一类副渠道:
在进行计算时,例如,RSA私钥操作$ x ^ d \ bmod n $作为秘密$ d $,使用标准平方乘运算来检查$(d \ mathbin \ gg i)\ mathbin是很诱人的\&1 $决定是否要在$ i ^ {\ mathit {th}} $步骤中乘以$ x $。 CPU首先不擅长将分支决策保密。跳过乘法运算会甚至更长时间地更改时间,这可能会显示设置了$ d $的哪些位。您需要利用的是一个能够响应(例如)加密查询和秒表的自动化系统。
在进行计算(例如AES)时,很容易使用依赖秘密的表查找。 CPU不能很好地保持内存地址的机密性-CPU缓存对于现代CPU性能至关重要,但也可以用作辅助通道。您需要利用的是Web浏览器中的JavaScript程序,该程序可以在目标密钥下触发AES操作,例如Tromer,Osvik和Shamir所展示的那样,它具有触发和测量磁盘加密时间的功能(免费)。 />在检查攻击者提供的消息身份验证代码是否与合法消息身份验证代码相匹配以验证消息或将其伪造时,幼稚的实现可能逐字节检查代码并在首次不匹配时提早停止:
for (i = 0; i < n; i++) if (p[i] != q[i]) return EFAIL;
。如果软件执行此操作,则您需要的是带有秒表的MITM来尝试进行伪造,并逐字节地猜测所需伪造品上的正确MAC,就像电影中的黑客找出每个字母的密码一样。<
EFAIL攻击利用OpenPGP和S / MIME中的加密漏洞来有选择地修改加密的电子邮件,以便收件人的邮件阅读器将对修改后的消息采取行动,只是将秘密直接泄露出去。您需要应用的是OpenPGP和S / MIME的实现生态系统的垃圾箱。
(也就是说,大多数OpenPGP实现现在已经修复了启用此功能的加密缺陷。)
计算机有时听起来不同,具体取决于它们执行的操作和处理的数据,从而导致声学密码分析(付费专区) -免费预印本)。这听起来有些牵强,因为您需要一个与对手物理接近的传感器……但是人们似乎莫名其妙地从Apple,Amazon和Google购买了远程监控麦克风并将其放在家里!另外,您是否可以向受害人提供一个JavaScript程序以打开他们的计算机麦克风?
这不是对辅助信道的全面研究。旁路通道还有其他整类,例如电磁辐射或功率分析或主动故障攻击。但是,这些作为远程利用媒介没有那么引人注目—功耗分析(无论是简单功耗分析还是差分功耗分析)和故障攻击与智能卡最相关,例如,对手可以物理访问设备以开始使用智能卡
这不是对利用侧通道所需要的内容的全面研究。可能存在一些使它们变得更难的对策。可能会有噪音使它们变得更难。您可能会耐心尝试起草概念验证。我起草了一个Meltdown漏洞利用程序,但对Spectre的耐心度不够,当它们首次发布时,反之亦然,我忘记了。这是一个有趣的下午玩具。但是您有耐心地实际利用的辅助渠道只是对手的一小部分,而对手(具有现有的开发工具市场)有可能利用这些优势。
评论
$ \ begingroup $
您不需要JavaScript,特别是对于Spectre而言,这只是最简单的基于Web的远程利用的示例。
$ \ endgroup $
–橙色狗
19-10-30在14:34
$ \ begingroup $
是的。我在举一个例子来说明这一点。显然,任何程序都可以工作; JavaScript提供了一个更具说服力的示例,因为虽然听起来可能很奇怪,很糟糕,并且如果您只是说“您需要在受害者的计算机上任意执行远程代码”,则肯定已经出了问题,这很容易导致受害者的计算机运行浏览器中的JavaScript程序。
$ \ endgroup $
–吱吱作响的s骨
19-10-30在14:42
$ \ begingroup $
的确如此。尽管Spectre / Meltdown如此糟糕的原因之一是您可以从与您在同一CPU上运行的其他VM(例如其他AWS客户)中提取信息。
$ \ endgroup $
–橙色狗
19-10-30在15:23
$ \ begingroup $
其他计时攻击也是如此,例如冲洗并重新加载。 Spectre级攻击的独特之处在于-为什么我将它们与其他定时攻击区别开来,即使它们本质上是一种定时攻击-为什么Spectre小工具可以进入内存,即使所有逻辑都不允许被允许进入存储器的那个,即加密逻辑,本身没有旁路。
$ \ endgroup $
–吱吱作响的s骨
19-10-30在16:19
$ \ begingroup $
+1表示密码是hunter2。错误,我的意思是*******。
$ \ endgroup $
–vsz
19-10-31在6:53
#2 楼
这是向我解释的尝试,就像我有五个风格的答案一样:假设您有一个带机械密码锁的银行保险库。在这种情况下,您的密码是“密码锁”。乍一看,攻击者可以看到并通过两个通道与输入拨盘上的旋转(输入通道)和保险库门的打开/关闭状态(输出通道)连接。
正确打开门的组合(密钥)被机械地存储在保险库锁内,攻击者无法从外部看到它。为了找出密钥,攻击者可以尝试猜测一个数字(候选密钥),然后查看门是否打开。当他尝试所有可能的求职者时,最终他将找到正确的组合。这将是对锁的“强力”攻击。
但是,攻击者注意到了一些东西:根据表盘上设置的数字,他听到微弱的“团”声。他找到了另一条信息渠道。这是一个意料之外的通道,因此将其称为副通道。如果它是输出侧通道,则有时也称为“泄漏”。
攻击者需要执行什么次侧通道攻击?
多方面的内容:
攻击者需要此通道的可靠接口。用听诊器更好地“读出”旧音旁通道并抑制其他噪音,例如
攻击者还需要知道如何解释信息,对于输出侧通道,这也称为泄漏模型。
攻击者听到嘶哑的声音是什么意思? cl声与声有何不同?他如何使用这些信息来改善自己的主要猜测?
最后,他从此附加边信道中获得的信息应仅取决于密钥的各个部分。如果它取决于整个密钥,那么对于攻击者而言,这不是胜利,因为他仍然必须尝试所有组合。
反例:如果“整齐”的声音仅在完成时发出组合是正确的,他只能将保险柜门的打开/关闭状态用作信息通道。
评论
如果答案中不清楚,则进行旁道攻击的关键在于它以防御者未计划的方式进行攻击,因此没有做好准备。这就像为您的房屋和复杂的密钥分配系统在高端安全门上花费大量资金,只是让对手通过您忘记负责的狗狗门溜进去。另请参阅此XKCD,了解我所说的相当残酷的旁道攻击,它源自于取决于人脑的算法。美国人设法通过听麦克风上的键盘来计算出俄罗斯的密码。甚至认为俄罗斯人足够聪明,不愿大声说出密码,而美国人却能够弄清楚每个键听起来像什么,然后从那里倒退。
仅供参考,尽管其中一些仍然非常理论化或具有繁琐的先决条件,但实际上在实践中已利用了一些旁渠道。例如,Web应用程序经常会遇到这样的问题:与不存在用户时相比,它们在存在用户时过早拒绝登录尝试。通常不容易针对此类定时辅助通道来保护数据库查找。