首页 > 解决方案 > 如何保护分布式哈希表中的密钥,以便只有拥有私钥的人才能编写它?

问题描述

我正在尝试将分布式哈希表 (DHT) 与一个名称系统放在一起,其中一个人将能够声明对任何密钥的所有权。

我想到的是以下界面

dht.secure_set(public_key, signature, key, value)

在哪里

signature == sign(private_key, public_key, key, value)`

即键值对由 签名signature

然后,其他人将能够在value他们知道public_keyand的情况下进行检索key

dht.secure_get(public_key, key)

只有当签名确实是对的签名时, DHT 中负责的对等key方才会接受对对的更新。(public_key, key)(key, value)

这个签名方案安全吗?

标签: cryptographydigital-signaturep2pdht

解决方案


我至少看到两个问题:

A) 让存储对等方负责验证是不够的。它可能是一个恶意节点,因此读者也必须验证

B) 如果有许多(key, pubkey)元组具有相同的密钥但不同的 pubkey,即某个密钥非常流行,这可能会给一小部分节点带来不必要的负担,因为它们必须花费的 CPU 周期(如果有频繁的写入),他们必须服务的存储和流量。
最好通过散列函数从(key, pubkey)派生最终查找键,以便这些元组分散在整个键空间中。这实际上是 bittorrent DHT 为其通用值签名存储指定的内容


推荐阅读