基于eth2的时间服务器攻击及缓解手段
本文摘要:摘要:以太币2中的时间服务器攻击之前也有人讨论过。

摘要:以太币2 中的时间服务器攻击之前也有人讨论过。但迄今为止,主流建议都觉得这种攻击只能致使验证者暂时离线,等节点运营者重建正确的时间同步手段,节点就能重新回到线上。但,假如节点可以被诱骗去签署一条有关遥远将来某个 epoch 的见证消息(attestation),危险性就远不止暂时离线这么容易:由于共识算法的环绕投票罚没规则,这部分节点在整个互联网实质到达该错发的见证消息的目的 epoch 之前,将不可以再签名任何见证消息(不然就会触发罚没)(译者注:有关环绕投票罚没条件的介绍,见此处)。在共识规则的运作下,这种时间服务器攻击会致使受攻击的验证者几乎永离得远远的线,而有关的权益人也会由于懒惰惩罚(inactivity leak)而付出惨痛代价。

以太币2 中的见证消息就是验证者签过名的、包含所认同的出处检查点和目的检查点的信息;出处检查点和目的检查点都以时段号(epoch number)和区块根(block root)来表示。Casper FFG 的算法的安全性保证之一便是 “无环绕投票” 规则:验证者签名过的任意两条消息中,不可以出现有 证明1.出处lt;证明2.出处 且 证明2.目的lt;证明1.出处 的状况(一条见证消息所试图敲定的范围恰好在另一条见证消息试图敲定的范围内)[1]。大家可以按如下手法炮制一次时间服务器攻击:第一步是通过操纵时间服务器的时间,使之跳转到将来的某个时间,使得被攻击验证者的时间也跳转到将来(譬如说 15 到 20 天之后),这个时间需要短于懒惰惩罚导致验证者余额减少至零的时间,不然验证者就不会再签名见证消息了。然后大家需要诱骗有关的节点,使之觉得它其实是跟链维持同步的,然后它才会签署见证消息。假如攻击者控制了多个对等节点,这一点一直大概做到的,仅需在P2P的互联网频道中发送一些来自将来时间的见证消息和区块即可。控制多个节点也是容易达成的,所以这并非一个不现实的攻击者假设。一旦目的验证者签名了一条以将来 epoch 为目的 epoch 的见证消息,攻击者就可以把这条消息保存下来,然后确定这名验证者在整个互联网实质到达那个将来 epoch 之前,都不可以再签名任何见证消息了(不然攻击者可以发出这条消息,使之被罚没)。目前所有 以太币2 达成的验证者推广客户端都有手段预防该验证者签署相互冲突的见证消息,因此该验证者实质上就是离线了。

一名攻击者可以通过一个时间服务器(或类似设施,比如 roughtime)来驱逐所有 TA 能影响到的验证者。这种攻击会比此前用同样界面所设想的攻击 [2] 更为恶劣,由于影响不是暂时的,而是持久得多。虽然大家大概在几分钟之内就能发现如此的攻击,而且所有专业的节点都能在几个小时内恢复正常时间,但这于事无补,由于损害已经发生了 —— 而且可以致使验证者的惨重损失,比如,可能有不少验证者会由于指数升高的懒惰惩罚而被提出互联网。

大家可以在验证者推广客户端中加入一条不罚没规则:需要他们在签署所有消息前都评估目前的时间,而且不要提前签署将来的消息。这个方法其实只有在验证者推广客户端与信标链节点没部署在同一台机器上且没被攻击波准时才有用。不过,对于密钥分割验证者来讲是一个明确的改进,由于这个规则将不允许领导哦啊这节点建议一条将来的见证消息,可以阻挡验证者的行动。

为时间同步手段添加更多保护