分布式哈希表:如何防止节点存储千兆字节的数据?

3
我正在研究分布式哈希表和Kademlia。但是我有一个非常重要的问题,我还没有找到答案。
节点可以通过对文件名进行哈希并将其发送到覆盖该哈希桶的节点来广播它们的文件。这是通过路由来完成的,但是这种方法并不是我问题的主要焦点。
谁能阻止一个节点只是发送PB级甚至EB级的数据,并将其存储在DHT中?这个问题似乎很难回答---在集中式系统中,中央机构可以在用户达到一定数据量时切断用户的连接。而且由于用户不必在本地机器上存储这么多数据,任何人都有可能向DHT发送大量的数据。
1个回答

1
好问题!
据我理解,仅使用DHT系统是无法抵御洪水攻击的,就像你上面描述的一样。当然,可以通过添加一些机制来遗忘未使用的条目。例如,根据LRU算法丢弃未使用的条目。然而,我认为,恶意行为者可以对最近的条目进行大量洪水攻击,并为它们提供机器人式的“客户请求”,以强制将它们保留在DHT中。结果,这些虚假记录将压制有效记录,并且DHT将丢弃它们。正如你所看到的,这种洪水攻击是一种拒绝服务(DoS)攻击,当洪水迫使删除有效记录时,服务也会停止。
我认为,保护DHT免受此类洪水攻击的唯一方法是创建经济壁垒,即将条目部署到DHT中需要支付一小笔费用。在这种情况下,洪水攻击者必须为其洪水付出大量金钱,这样的攻击对他来说将是代价高昂的。
为了实现这个目的,DHT系统可以使用类似于SpamBat的东西。系统SpamBat是一个“邮票”系统,最初用于电子邮件垃圾邮件过滤。在这个系统中,电子邮件发送者在电子邮件中申请一个“邮票” - 加密货币交易,当一定数量的硬币被销毁时,即“烧毁”。如果这封电子邮件是垃圾邮件,那么电子邮件接收者会烧毁硬币。
针对这个问题,可以开发类似的系统。例如,为了将某个哈希值发布到DHT中,发送者还必须“烧毁”一些硬币,并将哈希值插入到烧毁交易中,以便他希望发布的内容。作为结果,这样的交易将成为“烧毁收据的证明”。每个DHT服务器都可以根据自己的区块链副本验证这个“收据”,并且只有在票据有效时才能发布链接。
当然,还可以开发类似的东西,但是共同的想法是发送者必须支付一定数量的费用。对于“好的发送者”,支付的金额很少,而对于发送大量垃圾信息的人,支付的金额很大。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接