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

Я пытаюсь собрать распределенную хеш-таблицу (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).

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


person amirouche    schedule 01.04.2019    source источник


Ответы (1)


Я вижу здесь как минимум две проблемы:

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

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

person the8472    schedule 02.04.2019