Невидимые транзакции и многоразовые платёжные коды: как можно скрывать Биткойн-адреса у всех на виду




Невидимые транзакции и многоразовые платёжные коды: как можно скрывать Биткойн-адреса у всех на видуСегодня Биткойн не является полностью анонимным. Тогда как Биткойн-адреса могут быть связаны с какой-либо реальной личностью, эту связь можно отследить. Наблюдение за нешифрованной пиринговой сетью, анализ общедоступного блокчейна и политика “Знай своего клиента”(KYC) или борьба с отмыванием денег(AML) раскрывают довольно много информации о том, кто и для чего использует Биткойн.

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

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

Одно из решений такой проблемы – невидимые транзакции – было представлено в 2014, и новый вариант на основе этой концепции – многоразовые платёжные коды – был предложен в прошлом году.

Проблема

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

Однако это означает, что получатель средств должен указывать новый Биткойн-адрес отправителю каждый раз при создании транзакции. Такая методика является слегка проблемной, а в некоторых случаях даже неприменимой (представьте адреса для пожертвований, опубликованные на веб сайтах). Да и в целом она не идеальна с точки зрения конфиденциальности: если новые адреса распространяются по небезопасным каналам, то это грозит полной потерей конфиденциальности.

Невидимые транзакции, впервые представленные в 2014 Peter Todd – разработчиком Bitcoin Core , как раз созданы для решения таких проблем. Они используют несколько криптографических приёмов, использующих в основном систему обмена ключами Diffie-Hellman, позволяющую пользователям принимать платежи на адреса, которые ещё не были созданы и которые никто не видел.

Заглянем “под капот” невидимых транзакций

[Замечание автора: ко времени выхода этой статьи моё внимание привлёк тот факт, что имеется несколько разных способов создания невидимых транзакций. Описанная здесь стратегия представляет собой лишь один вариант.]

Невидимые транзакции требуют чтобы и у отправителя и у получателя транзакции имелась пара криптографических ключей (даже не из Биткойн-системы), публичный и приватный. Назовём их “невидимые приватные ключи” и “невидимые публичные ключи”. Эти “невидимые ключи” используются несколькими способами в следующих приёмах.

Первый приём – использование в типичных криптографических задачах, например для шифрования писем электронной почты. Кратко говоря (более простым языком), отправитель может использовать невидимый публичный ключ получателя для шифрования сообщения. И тогда получатель, и только получатель, сможет расшифровать это сообщение своим невидимым приватным ключом.

(Это конечно же работает и наоборот: получатель может зашифровать сообщение для отправителя – но такой метод не используется в невидимых транзакциях).

Второй приём немного сложнее. Но опять, говоря в упрощённой форме, оба невидимых приватных ключа могут быть объединены математической формулой для создания приватного Биткойн-ключа. Этот приватный ключ, в свою очередь, может быть использован для создания соответствующего Биткойн-адреса. Таким образом, используя невидимые приватные ключи друг друга вместе с собственными, оба – отправитель и получатель – могут генерировать этот Биткойн-адрес и приватный ключ для него.

Есть ещё и третий приём. Опять в упрощенном виде: этот Биткойн-адрес (но не соответствующий ему приватный ключ) также может быть получен из одного невидимого приватного и невидимого публичного ключа. Получается, что либо отправитель, либо получатель могут генерировать Биткойн-адрес из сочетания собственного приватного ключа и чужого публичного ключа.

Применение на практике

Для создания невидимой транзакции все эти три приёма хитро объединяются.

Возможно даже до того, как будет сделан платеж, получатель генерирует невидимую пару ключей. Именно такой невидимый публичный ключ, к примеру, может быть указан на сайте как адрес для пожертвований (он и является по сути скрытым адресом). При этом получатель никому не показывает невидимый приватный ключ.

Когда отправитель хочет заплатить получателю, он генерирует для себя “одноразовый” невидимый приватный ключ, специально для этой транзакции (фактически это nonce – всего лишь строка случайных цифр для определённой цели). Потом он берёт невидимый публичный ключ (или просто невидимый адрес) получателя и соединяя его со своим одноразовым невидимым приватным ключом получает Биткойн-адрес и отправляет на него Биткойны (ну вот… почти всё… но давайте-ка на мгновение задумаемся).

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

И вот основа этого приёма: отправитель позволяет получателю потратить биткойны, поделившись с ним тем одноразовым невидимым приватным ключом. Теперь вместе с этим одноразовым ключом  у получателя есть оба невидимых приватных ключа, необходимых для генерирования приватного Биткойн-ключа.

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

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

Таким образом, получатель принимает безопасный платёж на адрес, который у него отсутствует, пока не произойдёт факт оплаты. Между прочим, все остальные могут и не знать, что это была невидимая транзакция, всё что они увидят – это обычная Биткойн-транзакция с зашифрованным сообщением OP_RETURN.

Многоразовые платёжные коды

Невидимые транзакции являются новомодным изобретением, но требование постоянного отслеживания в блокчейне признака OP_RETURN ограничивает их потенциал. К примеру, лёгкие кошельки не хранят полную версию блокчейна, и как следствие, неспособны принимать невидимые транзакции (DarkWallet – единственный кошелёк, обрабатывающий невидимые транзакции, но он оставляет эту работу на аутсорсинг серверу, что не идеально с точки зрения конфиденциальности).

Многоразовые платёжные коды, представленные Биткойн-разработчиком Justus Ranvier в конце 2015, нацелены на решение этой проблемы. Они используют другое нововведение в Биткойне, которое создал разработчик Bitcoin Core Dr. Pieter Wuille: иерархически детерминированное(HD) создание ключей и протокол передачи. Вкратце – этот протокол позволяет создавать последовательности кажущихся независимыми приватных Биткойн-ключей и адресов из единственного семечка (парольной фразы).

Через многоразовые платёжные коды отправитель посылает так называемый “расширенный публичный ключ” получателю внутри казалось бы обычной транзакции. Используя этот расширенный публичный ключ и “невидимый” публичный ключ, распространяемый получателем, отправитель способен сгенерировать последовательность Биткойн-адресов, на которые он может отправить биткойны. Между тем, получатель может использовать этот расширенный публичный ключ вместе со своим “невидимым” приватным ключом для генерирования соответствующего приватного Биткойн-ключа.

Таким образом, отправитель может выслать получателю почти неограниченное количество транзакций на адреса, связь между которыми известна только отправителю и получателю. Сторонние наблюдатели увидят только лишь обычные Биткойн-транзакции, не подозревая , что они все адресованы одному получателю, тогда как сам получатель нигде и никому о них не сообщал.

Однако, хотя лёгкие кошельки и не отслеживают весь блокчейн, изначальная “уведомляющая” транзакция, являющаяся носителем данных о семечке (парольной фразе) всё-таки видна внешнему миру. Это может раскрыть того, кто инициировал транзакцию а также указать на возможную связь между адресами и реальной личностью. Но даже этот факт раскроет лишь инициатора транзакции, а суммы и адреса получателей останутся скрытыми.

Источник



Источник

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*