我正在考虑设计一个p2p网络,该网络需要一定程度的工作证明来审查用户(类似于比特币)和垃圾邮件/ ddos的监管。由于p2p的性质,我见过的唯一可行的POW架构是解决方案验证模型。其他模型(挑战 - 响应)似乎很容易发生Sybil攻击,因此我不考虑它们。
散列逆转似乎是一种很好的方法,但GPU散列的问题使协议的公平性破坏了几个数量级。因此,我试图通过使用GPU来识别难以/不可能加速超出现代多核CPU功能的哈希算法。
想法?
答案 0 :(得分:5)
我的Cuckoo Cycle工作证明计划似乎符合要求,因为它是5% 计算和95%随机访问全局共享内存,需要很长时间 延迟。 GPU内存有限,延迟时间更长,而且还不够 计算以保持几十个gpu核心繁忙。
其他功能:它可能需要任何所需数量的RAM,并且可以立即验证。
有关白皮书和实施的信息,请参阅https://github.com/tromp/cuckoo。
答案 1 :(得分:2)
它的所有军备竞赛 - 虽然目前部署的散列函数很容易GPU加速,而新的/更大/更长的散列函数不是(由于当前的硬件限制),因为技术将在更新更好的硬件上出现。
我的第一个建议是让应用程序提供“哈希套件”,由正整数标识。随着时间的推移,您可以切换到更新,更昂贵的操作,并让新软件停止接受来自编号较低的哈希套件的证明。
另外,非传统。也许使用所有新SHA-3候选者的组合(所有这些都在一些级联系列中)。使用block-cipher-hash算法(AES可以变成即兴散列函数)。做大量的回合。也许需要使用非常大的RSA密钥进行签名(4096位以上,并且需要唯一的“丢弃”密钥)。
您正在购买时间,因此弃用机制比实际算法选择重要得多。
答案 2 :(得分:0)
我会推荐类似BCrypt的东西,其中散列函数的轮数可变,通常为数千。只要算法核心的散列函数保持安全,就可以通过简单地增加轮数来使其随着时间的推移更加抵抗强力。