作为一个业余爱好,我正在写一个简单而原始的分布式网络搜索引擎,我突然意识到,它目前没有任何保护,以防恶意的同行试图扭曲搜索结果。
该项目的当前架构是在kad dht中存储反向索引和排名因子,当对等节点爬网时更新该反向索引。
我用谷歌学者试图找到一些解决方案,但似乎大多数提出p2p网络搜索的作者忽略了上述问题。
我想我需要某种信誉体系或信任度指标,但我在这个领域的知识是不够的,我会非常感谢一些指针。

最佳答案

避免这种情况的一种方法是只使用可靠的节点来存储和检索值。一个节点的可靠性必须由已知的好节点计算,它可能类似于一个节点的最后几个计算的排名因子与已知的好节点计算的相同排名因子的相似性(即,将该节点的google.com得分与已知的google.com得分进行比较)。使用这种方法,您将需要避免“rogue reliable node”问题(例如,通过使用随机检查或随机减少所有可靠性得分)。
另一种方法是在多个节点上重复计算排名因子,在搜索时获取所有值,并在客户端对它们进行排名(例如,使用方差)。您还可以将搜索限制为只计算了10个以上重复值的站点,以便在对新站点进行排名之前还有一段时间。此外,客户机可以在后台报告任何值超出正常范围的节点,并以此计算其可靠性得分。对于最终用户来说,这种方法非常耗时(除非您将已知的好结果复制到已知的好节点以加快查找速度)。
另外,看看本文中描述的一个sybil-proof弱信任系统(正如作者所解释的,它比不可能的sybil-proof强信任系统更健壮):http://www.eecs.harvard.edu/econcs/pubs/Seuken_aamas14.pdf

10-07 18:24