Eth2 中的时间服务器攻击及其缓解措施

2020-10-10 11:56 栏目:经验之谈 来源:网络整理 查看()

摘要:Eth2中的时间服务器攻击之前已经讨论过。但到目前为止,主流观点认为这种攻击只能导致验证者暂时离线,当节点运营商重新建立正确的时间同步措施后,节点才能重新上线。但是如果节点可以被诱骗签署一个关于遥远未来某个历元的见证消息,那么危险远不止是暂时离线:由于共识算法中轮投票的惩罚规则,在整个网络实际到达错误见证消息的目标历元之前,这些节点将无法签署任何见证消息(否则将触发惩罚)(译者注:轮投票的惩罚条件介绍见此处)。在共识规则的操作下,这种时间服务器攻击会导致被攻击的验证者几乎永远离线,相关利益主体会因为不活动泄露而付出惨痛的代价。

攻击界面

Eth2中的见证消息是由验证者签名的信息,包含批准的源检查点和目标检查点。源检查点和目标检查点都由一个时期号和一个块根表示。卡斯帕FFG算法的安全保证之一是“不投票”规则:在由验证者签名的任何两个消息中,都不能有attention 1 . source protection 2 . source和protection 2 . targettestation 1 . source(一个见证消息试图完成的范围正好在另一个见证消息试图完成的范围内)[1]。

我们可以炮制一个时间服务器攻击如下:第一步是操纵时间服务器的时间,使其在未来跳转到某个时间,这样被攻击的验证者的时间也跳转到未来(比如说15到20天后),这个时间一定要比验证者的余额因为懒罚而归零的时间短,否则验证者不会再次签署见证消息。

然后我们需要欺骗相关节点,让它认为它实际上与链同步,然后它会签署见证消息。如果攻击者控制多个对等节点,那么总是有可能做到这一点,只需在点对点网络通道中发送一些来自未来时间的见证消息和块。很容易控制多个节点,所以这不是一个不现实的攻击者假设。

一旦目标验证者签署了未来纪元的见证消息,攻击者就可以保存该消息,然后确保在整个网络实际到达未来纪元之前,验证者不能再签署任何见证消息(否则,攻击者可以发送该消息并被罚款)。目前Eth2实现的所有验证者客户端都有防止验证者签署冲突见证消息的措施,所以验证者本质上是离线的。

结果

攻击者可以使用时间服务器(或类似的设施,如roughtime)来驱逐TA可以影响的所有验证者。这种攻击会比之前使用相同界面的攻击[2]更糟糕,因为影响不是暂时的,而是持久得多。虽然有可能我们在几分钟内就能发现这样的攻击,所有专业节点都可以在几个小时内恢复到正常时间,但这并没有帮助,因为破坏已经发生了——,而且会给验证者带来重大损失。比如很多核查员可能因为指数上升的懒罚被带出网络。

缓解措施

加入验证者客户端无惩罚规则

我们可以给验证者客户端添加一个无惩罚规则:要求他们在签署所有消息之前评估当前时间,不要提前签署未来的消息。事实上,这种方法只有在验证者客户端和信标链节点没有部署在同一台机器上并且没有攻击波的情况下才有用。然而,对于密钥分裂验证器来说,这是一个明显的改进,因为这个规则不允许领导者提出未来的见证消息,这可能会阻止验证器的动作。

为时间同步措施增加更多保护

本文提出的问题表明,时间服务器同步措施中包含的攻击接口比我们之前想象的要严重得多,必须引起我们的重视。

虽然小时间偏移很烦人,但不会造成严重问题。因此,只有当时间服务器和本地RTC时间之差在一定范围内时,才使用更新,或者拒绝更新,似乎是一种更好的模式。

但是这种模式在启动过程中还是会留下攻击界面。因此,频繁的大规模断电可能会变成一个严重的问题,同时影响到许多验证者。在我看来,验证者客户端可以在启动前查看惩罚保护数据库,如果几个小时甚至几天没有签署任何消息就拒绝启动。长时间未签名的消息意味着可能发生了时间服务器攻击。您可以添加强制启动标签来处理异常。

(感谢@alonmuroch的讨论,我们发现了这种攻击。)。

[1]https://arxiv.org/abs/1710.09437

[2]时间攻击和安全模型

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发