作为一种爱好,我正在编写简单而原始的分布式网络搜索引擎,我发现它目前无法防止恶意同行试图歪曲搜索结果。
该项目的当前架构是将反向索引和排名因素存储在 kad dht 中,同行在爬网时更新此反向索引。
我曾使用谷歌学者试图找到一些解决方案,但似乎大多数提出 p2p 网络搜索的作者都忽略了上述问题。
我认为我需要某种声誉系统或信任指标,但我在这个领域的知识非常缺乏,我非常感谢一些指点。
作为一种爱好,我正在编写简单而原始的分布式网络搜索引擎,我发现它目前无法防止恶意同行试图歪曲搜索结果。
该项目的当前架构是将反向索引和排名因素存储在 kad dht 中,同行在爬网时更新此反向索引。
我曾使用谷歌学者试图找到一些解决方案,但似乎大多数提出 p2p 网络搜索的作者都忽略了上述问题。
我认为我需要某种声誉系统或信任指标,但我在这个领域的知识非常缺乏,我非常感谢一些指点。
避免这种情况的一种方法是仅使用可靠节点来存储和检索值。节点的可靠性必须由已知良好节点计算,它可能类似于节点最后几个计算的排名因子与已知良好节点计算的相同排名因子的相似度(即比较节点的分数google.com 到 google.com 的已知良好分数)。使用这种方法,您需要避免“流氓可靠节点”问题(例如,通过使用随机检查或随机降低所有可靠性分数)。
您可以解决此问题的另一种方法是跨多个节点重复计算排名因子,在搜索时获取所有值,并在客户端对它们进行排名(例如,使用方差)。您还可以将搜索限制在仅计算出超过 10 个重复值的站点,以便在对新站点进行排名之前有一段时间。此外,客户端可以在后台报告任何值超出正常范围的节点,并且可以通过这种方式计算其可靠性分数。这种方法对最终用户来说非常耗时(除非您将已知良好的结果复制到已知良好的节点以加快查找速度)。
另外,请看一下这篇描述 sybil-proof 弱信任系统的论文(正如作者所解释的,它比不可能的 sybil-proof 强信任系统更健壮):http://www.eecs.harvard .edu/econcs/pubs/Seuken_aamas14.pdf
您描述的问题是拜占庭将军的问题或拜占庭容错。您可以在wikipedia上阅读更多关于它的信息,但必须有大量关于它的论文。
我不记得确切的算法,但基本上它已在数学上证明,对于t叛徒(恶意同行),您将需要3*t + 1总的同行,以检测叛徒。
我的一般想法是,这在索引方面的实现和资源浪费是一个巨大的开销,虽然在分布式索引和分布式搜索方面有足够的研究要做,但还没有多少人在解决它。拜占庭将军也基本上解决了这个问题,它“只是”需要在现有(和工作的)分布式搜索引擎之上实现。
如果您不介意索引更新有时间延迟,您可以选择类似于比特币用于保护资金的区块链算法。
对索引的更改(仅限增量!)可以以文本或二进制文件格式表示,并由接受给定增量块的对等方进行处理。恶意对等点必须在一段时间内超过网络其余部分的计算量,才能使索引偏向于他们。
我认为比特币散列算法(SHA-256)存在缺陷,因为定制硬件会使普通用户的硬件毫无用处。使用莱特币算法(scrypt)的区块链会运行良好,因为 cpus 和 gpus 是计算中的有效工具。
您将相应地权衡难度,以便按照相当有规律的时间表生成新闻块 - 可能是 2-5 分钟。搜索引擎的用户可能会选择使用至少 30 分钟前的索引,以保证网络中有足够的用户为其内容提供担保。
更多信息: https ://en.bitcoin.it/wiki/Block_chain https://en.bitcoin.it/wiki/Block_hashing_algorithm https://litecoin.info/block_hashing_algorithm https://www.coinpursuit.com/pages/比特币-altcoin-SHA-256-scrypt-mining-algorithms/