摘要:Eth2 中的时间处事器进攻之前也有人接头过。但迄今为止,主流意见都认为这种进攻只能导致验证者临时离线,等节点运营者重建正确的时间同步法子,节点就能从头回到线上。可是,假如节点可以被拐骗去签署一条有关遥远将来某个 epoch 的见证动静(attestation),危险性就远不止临时离线这么简朴:因为共鸣算法的环抱投票罚没法则,这些节点在整个网络实际达到该错发的见证动静的方针 epoch 之前,将不能再签名任何见证动静(不然就会触发罚没)(译者注:有关环抱投票罚没条件的先容,见此处)。在共鸣法则的运作下,这种时间处事器进攻会导致受进攻的验证者险些永远离线,而相关的权益人也会因为懒惰处罚(inactivity leak)而支付凄惨价钱。
(感激 @alonmuroch 的接头,使我们发明白这种进攻)。
缓解法子
一名进攻者可以通过一个时间处事器(或雷同设施,譬喻 roughtime)来驱逐所有 TA 能影响到的验证者。这种进攻会比此前利用同样界面所设想的进攻 [2] 更为恶劣,因为影响不是临时的,而是耐久得多。固然我们有大概在几分钟之内就能发明这样的进攻,并且所有专业的节点都能在几个小时内规复正常时间,但这于事无补,因为损害已经产生了 —— 并且可以导致验证者的惨重损失,譬喻,大概有许多验证者会因为指数升高的懒惰处罚而被提出网络。
Eth2 中的见证动静就是验证者签过名的、包括所承认的来历查抄点和方针查抄点的信息;来历查抄点和方针查抄点都以时段号(epoch number)和区块根(block root)来暗示。Casper FFG 的算法的安详性担保之一即是 “无环抱投票” 法则:验证者签名过的任意两条动静中,,不能呈现有 attestation1.source < attestation2.source 且 attestation2.target < attestation1.source 的环境(一条见证动静所试图敲定的范畴刚亏得另一条见证动静试图敲定的范畴内)[1]。
然后我们需要拐骗相关的节点,使之认为它其实是跟链保持同步的,然后它才会签署见证动静。假如进攻者节制了多个对等节点,这一点老是有大概做到的,只需在点对点的网络频道中发送一些来自将来时间的见证动静和区块即可。节制多个节点也是容易实现的,所以这并不是一个不现实的进攻者假设。
插手验证者客户端不罚没法则
小幅度的时间偏移固然恼人,但不会导致严重的问题,所以,仅在时间处事器推送的更新与当地的 RTC 时间相差幅度在必然范畴内才利用更新、不然就拒绝更新,好像是更好的模式。
[1] https://arxiv.org/abs/1710.09437
一旦方针验证者签名了一条以将来 epoch 为方针 epoch 的见证动静,进攻者就可以把这条动静生存下来,然后确定这名验证者在整个网络实际达到谁人将来 epoch 之前,都不能再签名任何见证动静了(不然进攻者可以发出这条动静,使之被罚没)。当前所有 Eth2 实现的验证者客户端都有法子防备该验证者签署彼此斗嘴的见证动静,因此该验证者实质上就是离线了。
我们可以在验证者客户端中插手一条不罚没法则:要求他们在签署所有动静前都评估当前的时间,并且不要提前签署将来的动静。这个步伐其实只有在验证者客户端与信标链节点没有陈设在同一台呆板上且没有被进攻波实时才有用。不外,对付密钥支解型验证者来说是一个明晰的改造,因为这个法则将不答允率领哦啊这节点提议一条将来的见证动静,可以否决验证者的动作。
为时间同步法子插手更多的掩护
进攻界面
但这个模式仍会遗留一个进攻界面在启动历程中。因此时有产生的大局限电源间断大概会演酿成严重的问题、一次性影响浩瀚验证者。我认为,可以让验证者客户端在启动前先查抄罚没掩护数据库、假如在几个小时以致几天内都没有签名过任何动静,就拒绝启动。长时间不签名动静意味着大概产生了时间处事器进攻。可以添加一个强制启动的标签来应对破例环境。
我们可以按如下手法炮制一次时间处事器进攻:第一步是通过哄骗时间处事器的时间,使之跳转到将来的某个时间,使得被进攻验证者的时间也跳转到将来(好比说 15 到 20 天之后),这个时间必需短于懒惰处罚致使验证者余额低落至零的时间,不然验证者就不会再签名见证动静了。
功效
[2] Time attacks and security models
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。