Как защитить ключ в распределенной хэш-таблице, чтобы его могли писать только люди с закрытым ключом? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь собрать распределенную хеш-таблицу (DHT) с системой имен, в которой каждый сможет претендовать на владение любым ключом.

Я имею в виду следующий интерфейс

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

где

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

То есть пара ключ-значение подписана signature.

Тогда другие смогут получить value, если они знаютpublic_key и key:

dht.secure_get(public_key, key)

Узел, отвечающий за key в DHT, будет принимать обновления только для пары (public_key, key), только если подпись действительно является подписью (key, value)pair.

Безопасна ли эта схема подписи?

1 Ответ

1 голос
/ 03 апреля 2019

Я вижу по крайней мере две проблемы с этим:

A) наличие ответственного за проверку однорангового хранилища недостаточно. это может быть вредоносный узел, поэтому читатели должны будут проверить тоже

B) Если существует множество (ключ, pubkey) с одним и тем же ключом, но с разными открытыми ключами, то есть некоторые ключи действительно популярны, это может создать чрезмерную нагрузку для небольшой части узлов в сроки циклов ЦП, которые они должны потратить (при частых записях), хранилище и трафик, которые они должны обслуживать.
Может быть лучше получить окончательный ключ поиска из (ключ, pubkey) через хеш-функцию, чтобы эти кортежи были разбросаны по всему пространству клавиш. Фактически это то, что bittorrent DHT указывает для своего хранилища со знаком общего значения

...