Filecoin解决sealstack攻击

发布时间:2019年03月04日 价值:20000.00 / 共识:25

Filecoin解决sealstack攻击

SEALSTACK攻击:证明者提交将D复制到副本R中,然后提交将R复制到副本R’中。证明者倾向于第二次复制就地进行,为R’重用R空间。在时空证明过程中,当证明者在R中的几个节点被挑战到的时候,他们能有效地从R’的节点中进行解码。

现状:对称PoRep

本文档旨在通过使用对称PoRep来缓解SEALSTACK攻击。此文档中的规范更改应被传播。

Intuition

我们通过使密封和开封花费相同的时间来减轻SEALSTACK。通过这种方式,如果矿工堆叠了多个副本,则需要花费太长时间来解码层以回复时空证明挑战。

Construction

Replication:

  • 把replica_id作为输入,运行POS空间证明(ZigZag也能工作)。
  • 获取到POS的输出(POS输出一个扇区的大小)组成的Merkle树的根hash,我们称之为根hash CommPoS。
  • 将PoS的输出数据进行异或操作进行封装。
  • 获取结果的Merkle树根hash值,也就是CommR。

SEAL Proof:

  • 证明在CommR中的被挑战到的节点是在CommD和在CommPoS中的数据进行异或处理的结果。
  • 证明为在CommPoS中被挑战到的节点进行的PoS初始化是正确的。

建议1:具有阶段的非对称PoRep

本文档旨在缓解SEALSTACK攻击,同时保持PoRep不对称。该提议是协议变更。

矿工应该能够非常有效地从密封区域检索数据。要做到这一点,PoRep结构必须是非对称的:解码速度慢,编码速度快。为此,我们必须解决SEALSTACK。

Intuition

我们通过引入两个阶段来缓解SEALSTACK:承诺阶段,证明阶段。

  • 承诺阶段:在此阶段,每个矿工都会发布存储多个数据集的承诺。
  • 证明阶段:在阶段开始时,释放随机数(矿工无法更早地访问它),并且必须使用此编号对已提交的数据进行编码。在此期间,存储更多数据的承诺无效。

为什么这样做?这保证了矿工不能承诺存储副本(因此也不会存储SEALSTACK),因为他们在证明阶段之前不知道副本会是什么样子,但在那时,他们不能承诺存储它。

缺点?

  • 网络被迫分阶段运行

建议2:慢速解码PoRep以解决SEALSTACK

证明者在k步骤中生成对挑战的响应,并且必须在T时间步骤之前回复。

假设正在执行2层SEALSTACK攻击的证明者。如果证明者在第一层受到质疑,那么他们必须解码需要t时间的第二层。如果恶意矿工证明算法采取t+k*n > T措施,则PoRep对n-SEALSTACK是安全的。

为了使PoRep安全,我们可以增加t的时间,通过使得诚实的证明花费更长的时间(例如,在编码期间增加顺序步骤)或通过增加最小解码时间(例如,在解码期间增加连续步骤)来增加。

注意:ZigZag是一种有利的结构,因为为了解决单个挑战的图形相当于解码图形以应对多个挑战。这意味着证明者每次只能回复一层的挑战,否则证明者将使用比他们更多的存储空间(因此,不执行SEALSTACK)

要回答的问题

  • k具体是什么?
  • 计算kZigZag中的内容(假设有界并行化)
  • 分享 收藏
0 条评论
  • 这篇文章暂无评论,赶紧评论一下吧~