Cryptography 如何保护分布式哈希表中的密钥,以便只有拥有私钥的人才能编写它?

Cryptography 如何保护分布式哈希表中的密钥,以便只有拥有私钥的人才能编写它?,cryptography,digital-signature,p2p,dht,Cryptography,Digital Signature,P2p,Dht,我试图将一个分布式哈希表(DHT)与一个名称系统结合起来,在这个系统中可以声明任何密钥的所有权 我想到的是以下界面 dht.secure_set(public_key, signature, key, value) 在哪里 signature == sign(private_key, public_key, key, value)` 也就是说,键值对由签名签名 然后,其他人将能够检索值,因为他们知道公钥和键: dht.secure_get(public_key, key) 仅当签名确实是(

我试图将一个分布式哈希表(DHT)与一个名称系统结合起来,在这个系统中可以声明任何密钥的所有权

我想到的是以下界面

dht.secure_set(public_key, signature, key, value)
在哪里

signature == sign(private_key, public_key, key, value)`
也就是说,键值对由
签名
签名

然后,其他人将能够检索
,因为他们知道
公钥

dht.secure_get(public_key, key)
仅当签名确实是
(密钥,值)
对的签名时,DHT中负责
密钥的对等方才会接受
(公钥,密钥)
对的更新


这个签名方案安全吗?

我发现至少有两个问题:

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

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