私有安全的P2P网络

时间:2014-07-08 18:08:13

标签: security p2p privileges

我知道在没有任何服务器的情况下构建简单的P2P网络的概念。我的问题在于保护网络。网络应该有一些管理节点。所以有两种节点:

  1. 具有特权的节点
  2. 没有特权的节点
  3. 第一个问题是:我可以为某些节点分配比其他节点更多的权限,例如发送广播消息的权限吗?

    如何保护试图获取权限的已修改节点的网络?

    enter image description here

    我真的对答案和资源感兴趣,而不是帮助我。对我来说理解这一点非常重要,如果有任何不清楚的地方,我很乐意添加更多信息。

2 个答案:

答案 0 :(得分:3)

你好像迷路了,我曾经在这方面做过研究,所以我会开枪。我觉得这个问题是偏离主题的,但我倾向于将事情保持开放。

有关P2P网络和伪代码的示例,请参阅P2P网络ChordCANTapestryPastry。这些作品都是基于分布式哈希表(DHT),现在已经存在了10多年。他们中的许多人都有可以使用的开源实现。

至于“特权节点”,你的问题自相矛盾。您想要一个P2P网络,但您也希望节点拥有比其他节点更多的权限。根据定义,您的网络不再是P2P,因为对等方不再具有同等特权。

你的问题指向P2P网络中的信任 - 这是学术界自引入(DHT)以来一直关注的问题。我觉得还没有找到满意的答案,解决了所有情况下的所有问题。以下是一些可以帮助您的方法:

(1)比特币通过强制网络中的所有用户执行计算密集型工作来解决恶意用户问题。对于任何伪造比特币的成员来说,比起每个人都需要更多的计算能力来证明他们比其他人做了更多的工作。

(2)根据声誉给予特权。您可以通过多种方式计算声誉。一个简单的例子 - 对于系统中的每个事务(文件发送,数据库查找,完成的工作),请求者向发送者发送签名确认(使用私钥/公钥)。然后,每个对等体可以将其签名的确认的累积呈现给任何其他对等体。已累积N次确认的任何同行(您确定N)拥有更多权限。

(3)拥有一个发放权限的中央服务器。这是最简单的,你可以确定什么信任对你意味着什么。你把它递了出来。

这是一个瘦小的版本 - 祝你好运。

答案 1 :(得分:1)

我猜测管理节点与普通节点不同,因为它能告诉其他节点要做什么(常规节点应该遵守)。
您必须为管理员节点提供某种方式来证明自己可以被其他节点验证,但不能由伪造(如警察的ID) 。我能想到的最标准的方法是使用TLS证书 在(非常)简短中,您可以创建称为密钥和证书的文件对。密钥是秘密的,属于一个身份,证书是公开的 您创建CA证书,并将其分发到所有节点 使用该CA,您可以创建"管理节点"证书,每个管理节点一个 发出命令时,管理节点将其证书提供给"常规"节点。使用您事先提供的CA证书的常规节点可以确保管理节点是真实的(因为证书实际上是由CA签名的),并且可以按照要求进行操作。

优点:

  • 许多其他产品使用TLS / SSL来创建secure tunnel,阻止" 中间"攻击和 扮演
  • 几乎所有语言(从.net到C)都有TLS / SSL的现成库和示例项目。
  • 有撤销列表,取消"取消"被盗的证书(虽然你必须找到分发这些证书的方法)
  • 证书验证处于脱机状态 - 节点不需要外部资源(CA证书除外)进行验证

缺点:

  • 由于SSL / TLS是一个广泛使用的系统,因此有许多工具可以利用配置错误的/旧客户端/服务器
  • 在这些库中发现了一些漏洞(例如" heartbleed"),因此您可能需要对软件进行大量修补。

这个解决方案仍然需要一些严格的编码,但依靠现有的和经过验证的系统通常比发明自己的系统更好。