cryptography - 如何保护分布式哈希表中的密钥,以便只有拥有私钥的人才能编写它?
问题描述
我正在尝试将分布式哈希表 (DHT) 与一个名称系统放在一起,其中一个人将能够声明对任何密钥的所有权。
我想到的是以下界面
dht.secure_set(public_key, signature, key, value)
在哪里
signature == sign(private_key, public_key, key, value)`
即键值对由 签名signature
。
然后,其他人将能够在value
他们知道public_key
and的情况下进行检索key
:
dht.secure_get(public_key, key)
只有当签名确实是对的签名时, DHT 中负责的对等key
方才会接受对对的更新。(public_key, key)
(key, value)
这个签名方案安全吗?
解决方案
我至少看到两个问题:
A) 让存储对等方负责验证是不够的。它可能是一个恶意节点,因此读者也必须验证
B) 如果有许多(key, pubkey)元组具有相同的密钥但不同的 pubkey,即某个密钥非常流行,这可能会给一小部分节点带来不必要的负担,因为它们必须花费的 CPU 周期(如果有频繁的写入),他们必须服务的存储和流量。
最好通过散列函数从(key, pubkey)派生最终查找键,以便这些元组分散在整个键空间中。这实际上是 bittorrent DHT 为其通用值签名存储指定的内容
推荐阅读
- react-native - 在本机反应中在单个 onpress 上调用 lib 函数和另一个函数
- r - 如何自动化条形图标签
- amazon-web-services - 使用特定代码配置 Amazon EC2 用户数据以启动和重启实例
- c# - 我如何滥用空合并运算符?这是正确评估“空”吗?
- android - 具有复杂房间 LiveData 的嵌套 Recyclerviews
- reactjs - Cardlist 组件在更改状态时不会被调用
- javascript - Heroku - 部署 React/Express 应用程序并在请求 chunk.js 文件时在控制台中获取“加载资源失败”
- r - magrittr `.` 代词和 rlang `.data` 代词是相同的,但那怎么可能呢?
- python - 如何通过 Beautiful Soup 抓取此页面?
- apache - 基于分数和字段值的 Apache Solr 排序