以前已经讨论过ETH2中的时间服务器攻击。但到目前为止,主流观点认为这种攻击只能导致验证器暂时离线。当节点操作员重新构造正确的时间同步措施时,节点可以重新联机。但是,如果能够诱使节点签署一条关于遥远未来某个时代的见证消息,其危险性远不止暂时离线:由于共识算法的包围投票惩罚规则,这些节点实际上在此之前到达了整个网络中错误见证消息的目标纪元,您将无法再签署任何证人信息(否则将触发没收)。在一致性规则的操作下,这种时间服务器攻击将导致被攻击的验证器几乎永远离线,相关利益相关者也将为不活动泄漏付出沉重的代价。
攻击接口
ETH2中的见证消息是由验证器签名的信息,包含识别的源检查点和目标检查点,源检查点和目标检查点都用历元号和块根来表示。Casper-FFG算法的安全保证之一是“无轮投票”规则:在由验证器签名的任何两条消息中,不能存在证明1。来源证明2。和证明2。目标认证1。来源于由验证者签名的任何两个消息;一个见证消息的范围正好在另一个见证消息的范围内。
我们可以创建一个时间服务器攻击:第一步是操纵时间服务器的时间,使它跳到将来的某个时间,这样被攻击的验证器的时间就会跳到将来(例如,15到20)这个时间必须比懒惰惩罚导致验证者的余额降为零的时间短,否则验证者将不再签署证人信息。
我们需要先把信息链与之同步,然后再把它和符号链联系起来。如果攻击者控制多个对等点,则始终可以通过在对等网络通道中从未来发送一些见证消息和块来实现这一点。控制多个节点也很容易实现,所以这不是一个不切实际的攻击者假设。
一旦目标验证者签署了针对未来纪元的见证消息,攻击者就可以保存该消息,然后确保在整个网络真正到达未来纪元之前,验证器不能签署任何见证消息(否则,攻击者可以发送该消息并将其没收)。目前,ETH2实现的所有验证器客户端都有防止验证器签署冲突见证消息的措施,因此验证器本质上是离线的。
结果
攻击者可以使用时间服务器(或类似的工具,如roughtime)来逐出TA可能影响的所有验证器。这种攻击将比先前认为的使用同一接口的攻击更严重[2],因为这种影响不是暂时的,而是持久得多。虽然可以在几分钟内检测到此类攻击,并且所有专业节点都可以在数小时内恢复正常时间,但这并没有帮助,因为损坏已经发生,并且可能会导致验证器的重大损失。例如,由于索引上升的懒惰惩罚,许多验证器可能被带到网络上。
缓解措施
添加验证器客户端无惩罚规则
我们可以向验证器客户端添加一个无惩罚规则:要求他们在签署所有消息之前评估当前时间,并且不要提前签署未来的消息。这种方法只在验证器客户端和信标链节点没有部署在同一台机器上并且没有被及时攻击的情况下才有用。然而,这对密钥分割验证器是一个明显的改进,因为该规则不允许***提出未来的见证消息,从而阻止验证器的动作。
为时间同步措施添加更多保护
本文提出的问题表明,时间服务器同步措施中包含的攻击接口比以前认为的严重得多,必须引起重视。
虽然小时间偏移很烦人,但它不会引起严重的问题。因此,在时间差的情况下,服务器似乎只能在一定的时间范围内更新,否则会被拒绝更新。
但这种模式在启动过程中仍然会留下攻击接口。由于此时大规模的电源中断,它可能成为一个严重的问题,并影响到许多验证器。在我看来,验证器客户端可以在启动前检查没收保护数据库,如果几个小时甚至几天内没有消息被签名,则拒绝启动。长时间不签署消息意味着可能发生了时间服务器攻击。您可以添加一个强制开始标记来处理异常。
谢谢您@alonmuroch我们发现了这种攻击。
[1] https://arxiv.org/abs/1710.09437;[2] 时间攻击和安全模
(结束)
文章标题:eth2中的时间服务器攻击及其缓解措施
文章链接:https://www.btchangqing.cn/118312.html
更新时间:2020年10月11日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。