Можно ли безопасно хранить закрытые ключи в блокчейне?

Хорошо, я знаю, что блокчейн является общеизвестным. Но есть такие эксперименты, как Zcash, которые шифруют информацию об отправителе, получателе и сумме, и они все еще работают.

Я обдумываю, возможна ли служба арбитража блокчейна p2p. Например, вы хотите обменять ETH на BTC. Блокчейн генерирует 2 адреса, один из которых для BTC, а другой для ETH. Как только оба адреса финансируются, средства обоих пересылаются получателям. Чтобы сделать это с помощью блокчейна, должен быть безопасный способ хранения и использования закрытых ключей в блокчейне.

Это совершенно невозможно, или есть какие-то признаки того, что можно сделать что-то подобное?

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

Ответы (3)

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

Даже в случае с zcash шифрование не задействовано. Все, что делают кошельки, — это доказывают остальной части сети, что у них есть средства, которые они тратят. Единственная разница по сравнению с Биткойном заключается в том, что при этом он раскрывает меньше информации, и в результате доказательства намного сложнее.

блокчейны не генерируют приватные ключи — это не имеет смысла, поскольку цепочку могут видеть все.

У кошельков есть приватные ключи. Они никогда ни с кем не делятся. Они раздают соответствующие открытые ключи, чтобы получить оплату, и используют закрытый ключ, чтобы позже доказать другим, что они владеют определенными монетами.

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

Кто-то предложил что-то подобное, размещая зашифрованные файлы в сети IPFS (общедоступной, например, в блокчейне Ethereum), а затем отправляя ключи участникам для расшифровки.

Основатель Хуан Беннет выделил следующую цитату:

'Наивный пример: зашифровать файл каким-то секретом и поделиться секретом с людьми, у которых есть "разрешение на чтение"'

https://github.com/ipfs/ipfs/issues/86

Что вам действительно нужно, так это децентрализованная система возможностей.

https://github.com/autocontracts/permissioned-blocks/blob/master/whitepaper.md

(Отказ от ответственности, это официальный документ, который я написал)

Не рекомендуется отправлять закрытый асимметричный ключ в качестве транзакции блокчейна (которая является каналом связи) таким образом.

Здесь есть хорошая статья о ключевых биржах:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.216.6107&rep=rep1&type=pdf

В этой статье автор также дает понять, что отправка закрытого ключа по каналу не является хорошей схемой:

«Когда ключ отправляется в сообщении, используется только открытый ключ, чтобы быть явным… Ни один из протоколов, изученных в этой статье, никогда не отправляет секретный ключ по сети».

https://dominictarr.github.io/secret-handshake-paper/shs.pdf

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

Спасибо за участие, но этот ответ не содержит достаточно подробностей, чтобы быть полезным
Я обновил свой комментарий с некоторыми ссылками.
Этот ответ был бы лучше, если бы вы объяснили, что блокчейн используется как канал, и поэтому источники, которые вы цитируете, актуальны. Случайному наблюдателю это трудно заметить, и, вероятно, поэтому вас заминусовали.
Спасибо @Jestin. Да, за меня проголосовали, прежде чем я разместил ссылки, объясняющие, что я имел в виду. Первый комментарий был «Не рекомендуется отправлять зашифрованные закрытые ключи по каналу» — без причины. Проголосуйте, если считаете, что ответ лучше сейчас :-)
Связь, которую людям трудно установить, такова blockchain data == channel. Я думаю, вы предполагали, что это связь, которую делают люди, но я сомневаюсь, что они все так делают. Предложение, объясняющее это, могло бы помочь, тем более что термин "канал" на этом форуме чаще используется для обозначения "канал оплаты".
ХОРОШО. Хороший вопрос, я обновил. Пожалуйста, проголосуйте.