Как хранить личные данные в Эфириуме

Мой вариант использования следующий: я хочу использовать Ethereum для отслеживания устройств и владельцев устройств. Это легко сделать с помощью эфириума и смарт-контракта. Но я хочу сохранить секрет, связанный с устройством. Есть ли способ сделать это, например, зашифровав эти секретные данные с помощью открытого ключа владельца?

По сути, если A = актив, O1 = первый владелец, O2 = следующий владелец, я хотел бы добиться этого:

  1. A принадлежит O1. Секрет зашифрован открытым ключом O1 и хранится в блокчейне.
  2. A передается O1 O2 (новому владельцу) с использованием смарт-контракта, выполненного O1. O1 расшифровывает секрет, используя свой закрытый ключ, зашифровывает его с помощью открытого ключа O2 и сохраняет его.
  3. A принадлежит O2. Секрет зашифрован открытым ключом O2 и хранится в блокчейне.

Это выглядит хорошо, за исключением того, что смарт-контракту нужен доступ к какому-то секретному ключу... Есть ли идея, как такой контракт может быть выполнен, или есть ли лучший вариант для этого?

Какова цель секрета? Кто определяет секрет для конкретного устройства? Одинаков ли секрет для одного устройства при смене владельца?
@bordalix: секрет определяется где-то еще (например, создателем разработчика) и не меняется при смене владельца устройства. Недостаток в том, что у предыдущего владельца все еще есть секрет, но это не решается этим, и это известная проблема ....
кто первым поставит устройство на блокчейн? создатель разработчика? если да, то почему он не может поместить туда секрет, зашифрованный своим открытым ключом? нужно ли владельцам знать секрет?

Ответы (1)

Вы не можете сделать это в смарт-контракте, потому что свойство псевдослучайности блокчейна не гарантирует вам, что зашифрованная информация полностью не зашифрована.

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

Но другой пользователь сделал что-то, чтобы решить эту проблему, создав код в среде nodejs/browser. Вот вам ссылка на пост.

Проверьте также https://github.com/pubkey/eth-crypto , которые могут быть вам полезны для решения этой проблемы.

Надеюсь, это поможет!

Что вы подразумеваете под «псевдослучайным свойством»? Я не знаю этого термина. Я также думаю, что что-то вроде того, о чем просит Оп, на самом деле можно сделать в смарт-контракте. Вам просто нужно избегать реальной расшифровки в блокчейне, но я думаю, что это можно сделать с помощью некоторых уловок RSA.
Библиотека хорошая, но было бы неплохо, если бы была функция метамаски, позволяющая легко это сделать... В любом случае, спасибо за отзыв.