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

How to secure a key in a distributed-hash-table so that only people with the private-key can write it?

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

我想到的是如下界面

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

其中

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

即键值对由signature签名。

然后,其他人将能够检索 value,只要他们知道 public_keykey:

dht.secure_get(public_key, key)

DHT 中负责 key 的对等点仅在签名确实是 (key, value) 对的签名时才会接受对 (public_key, key) 对的更新。

这个签名方案安全吗?

我至少看到两个问题:

A) 让存储节点负责验证是不够的。可能是恶意节点,请读者自行验证

B) 如果有许多 (key, pubkey) 元组具有相同的密钥但不同的公钥,即一些密钥非常受欢迎,这会给就它们必须花费的 CPU 个周期(如果频繁写入)、它们必须服务的存储和流量而言,只有一小部分节点。
最好通过散列函数从 (key, pubkey) 派生出最终的查找键,这样这些元组就会分散在整个键空间中。这实际上是 bittorrent DHT 指定的 generic value signed storage