С самого своего создания Биткойн никогда не был по-настоящему конфиденциальным. Хотя из whitepaper Сатоши Накамото следует, что конфиденциальность является целью разработки протокола, у правительственных агентств, аналитических компаний и других заинтересованных сторон – назовём их «шпионами» – есть способы анализа публичного блокчейна и пиринговой сети, группировки адресов Биткойна и установления их связи с IP-адресами или другой информацией, позволяющей установить личность.

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

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

Вот обзор самых многообещающих проектов.

TumbleBit

TumbleBit, пребывавший в разработке почти два года, был в числе самых ожидаемых решений конфиденциальности для Биткойна.

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

TumbleBit требует от каждого участника двух транзакций в блокчейне (одна для открытия и одна для закрытия канала). Хотя это решение не требует доверия, у него из-за этого несколько более высокая комиссия, чем у альтернатив.

TumbleBit был предложен в 2016 г. академической исследовательской командой из Бостонского университета, Университета Джорджа Мейсона и Университета штата Северная Каролина во главе с Итаном Хейлменом и представлен осенью того же года на семинаре Scaling Bitcoin в Милане. Полноценная работа началась, когда разработчик NBitcoin Николас Дорье реализовал раннюю версию технологии, которую позже усовершенствовали фокусирующийся на конфиденциальности разработчик Адам Фичор и другие, и, наконец, она была реализована в кошельке Breeze от Stratis.

Этот кошелёк Breeze официально вышел чуть больше месяца назад, что означает, что TumbleBit теперь доступен всем, – хотя пользователей этого решения конфиденциальности пока не много.

Доступность: доступно

Чаумовский CoinJoin и ZeroLink

CoinJoin – старая идея по меркам Биткойна, предложенная разработчиком Bitcoin Core Грегори Максвеллом в 2013 г. По сути, всё сводится к объединению нескольких транзакций в одну большую транзакцию, запутывая перемещение биткойнов с исходных адресов («входов») на конечные («выходы»).

В качестве простого примера допустим, что Алиса, Боб и Кэрол хотят перемешать свои монеты. С помощью CoinJoin они могут создать транзакцию, отправляющую деньги им самим, используя новые адреса, не привязанные к их персональным данным. Если Алиса, Боб и Кэрол используют равное количество монет, шпионы не могут узнать, кому принадлежит каждый из новых адресов. (Если они используют разное количество монет, то тогда очевидно, куда переместились те или иные монеты).

Транзакции CoinJoin уже давно являются реальностью, но долгое время оставалась одна проблема: кто-то – Алиса, Боб или Кэрол – должен создать транзакцию. Этот человек должен знать, с каких старых адресов и на какие новые адреса пересылаются биткойны; иначе транзакцию создать невозможно. Если этот человек шпион – что часто невозможно знать наверняка, – всё лишается смысла: шпион может отследить владельцев монет.

Данную проблему можно решить с помощью приёма, упомянутого Грегори Максвеллом ещё в его предложении за 2013 г. и получившего название «чаумовский CoinJoin» (в честь схемы слепых подписей Дэвида Чаума).

Если вкратце, то теперь Алиса, Боб и Кэрол подсоединяются к центральному серверу чаумовского CoinJoin, например, поддерживаемому провайдером кошелька. Сначала они все предоставляют свои исходные адреса, а также «слепые» (зашифрованные) конечные адреса, которые сервер криптографически подписывает. После этого Алиса, Боб и Кэрол отсоединяются, чтобы вновь подсоединиться анонимно (например, через Tor) и предоставить свои адреса в незашифрованном виде. С помощью магии чаумовских слепых подписей сервер может проверить, что не зашифрованные адреса соответствуют слепым. Это позволяет убедиться, что адреса действительно принадлежат Алисе, Бобу и Кэрол – а не злоумышленнику, – при этом не зная, где чей адрес.

Предложение чаумовского CoinJoin четыре года оставалось нереализованным. Но год назад Адам Фичор – во время работы над реализацией TumbleBit в Breeze – вновь его открыл и решил реализовать.

Чаумовский CoinJoin, внедрённый в разработанный Фичором фреймворк ZeroLink, реализован теперь в новом конфиденциальном кошельке Фичора Wasabi, недавно вышедшем в бета-версии. А совсем недавно конфиденциальный кошелёк Samourai анонсировал выпуск мобильной реализации ZeroLink под названием Whirlpool. Над реализацией ZeroLink также работает новый кошелёк Bob Wallet.

Доступность: доступно (бета-версия)

Подписи Шнорра для CoinJoin и не только

Подписи ШнорраХотя CoinJoin – в том числе чаумовский – был возможен всегда и предложен несколько лет назад, он до недавних пор не пользовался особой популярностью. Долгое время данную опцию не предлагал ни один популярный кошелёк, возможно, потому что транзакции CoinJoin увеличивают сложность, предоставляя мало преимуществ тем, кого не сильно заботит конфиденциальность.

Подписи Шнорра, по которым недавно представил официальное предложение по улучшению Биткойна (BIP) разработчик Bitcoin Core и Blockstream Питер Вуйле, могут помочь предоставить такие преимущества.

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

Транзакции CoinJoin, конечно, также всегда включают несколько исходных адресов, как минимум по одному на каждого участника. Поэтому подписи Шнорра могут дать использованию CoinJoin новое преимущество: они позволяют всем участникам не только объединить свои транзакции в одну, но также объединить свои подписи этой транзакции в одну. Так размер транзакции CoinJoin будет меньше, чем общий размер отдельных транзакций, что, в свою очередь, означает, что майнеры должны брать меньшую комиссию за её обработку.

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

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

Доступность: по оптимистичному прогнозу, будет доступно в 2019 г.

STONEWALL

Ещё одна мера по обеспечению конфиденциальности, связанная с CoinJoin, была внедрена в кошелёк Samourai в мае 2018 г. STONEWALL на самом деле не использует CoinJoin, но лишь создаёт видимость.

Транзакции STONEWALL – это, по сути, обычные транзакции: они пересылают биткойны от одного пользователя другому. Однако транзакции STONEWALL делают кое-что необычное: они включают необязательные исходные адреса (входы) и адреса для сдачи (выходы). Из-за этого транзакция напоминает транзакцию CoinJoin – где два человека объединяют свои транзакции в одну, – хотя на самом деле это не так. (Подробнее).

Идея STONEWALL в том, чтобы запутать допущения, делаемые шпионами при анализе блокчейна Биткойна. Если шпионы не могут точно сказать, имеют ли они дело с транзакциями CoinJoin, любые выводы, сделанные на основании данных этих транзакций, не имеют смысла.

Кошелёк Samourai скоро также реализует STONEWALL для двух кошельков, где будут происходить настоящие транзакции CoinJoin при участии двух пользователей, которые доверяют друг другу в плане конфиденциальности.

Доступность: доступно; версия STONEWALL для двух кошельков выйдет через месяц-два

Dandelion


Совершенно другой метод деанонимизации пользователей Биткойна – анализ пиринговой сети. В частности, шпионские узлы могут отслеживать сеть Биткойна в попытке выяснить происхождение транзакций: первый узел, передавший транзакцию, вероятно, является её создателем.

Dandelion – это решение, предложенное командой академических исследователей из Университета Карнеги – Меллона, Иллинойсского университета и Массачусетского технологического института. Недавно его представила на конференции Building on Bitcoin в Лиссабоне профессор Университета Карнеги – Меллона Джулия Фанти.

Решение противодействует сетевому анализу, меняя распределение транзакций в пиринговой сети. Вместо того чтобы сразу же транслировать новую транзакцию как можно большему числу узлов, протокол Dandelion сначала отправляет новую транзакцию только одному узлу. Этот узел случайным образом решает, пересылать ли её тоже только одному узлу или нет. В случае передачи только одному узлу следующий узел также случайным образом решает, что делать. (И так далее). В противном случае узел транслирует транзакцию как можно большему числу узлов, и все получившие её узлы делают то же самое. Так шпионам должно быть значительно сложнее установить происхождение транзакции.

Исследовательская команда уже реализовала версию Dandelion, и общее предложение встретило положительную реакцию в сообществе разработчиков Биткойна. Поэтому его могут включить в один из следующих релизов Bitcoin Core (но ближайший релиз, 0.17.0, выйдет слишком скоро).

Доступность: 2019 г.

Шифрование BIP 151

Ещё одно давнее предложение по ограничению сетевого анализа – BIP 151, автором которого стал мейнтейнер Bitcoin Core и разработчик Shift Джонас Шнелли. BIP 151 – достаточно прямолинейное решение: оно позволяет узлам Биткойна шифровать трафик между ними (а следовательно, данные транзакций и блоков).

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

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

Хотя BIP 151 на год или два после предложения исчез из поля зрения, Шнелли недавно вернулся к проекту и переписал «официальное» предложение для обсуждения и потенциального включения в Bitcoin Core.

Доступность: 2019 г.

Компактный клиентский фильтр блоков

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

Многие облегчённые клиенты, которые (фактически) обмениваются своими адресами со случайным узлом сети, используют приём, известный как упрощённая верификация платежей (Simplified Payment Verification (SPV)). Эти SPV-клиенты обычно используют «фильтры Блума» для запроса потенциально относящихся к ним транзакций – если такие есть. Хотя такой фильтр будет давать ложные положительные результаты, что означает, что SPV-клиент будет запрашивать больше транзакций, чем строго необходимо, их не так уж и много в сравнении со скачиванием всех транзакций.

К сожалению, SPV-кошельки фактически также раскрывают узлам, у которых они запрашивают эти данные, все свои адреса. Чтобы решить эту проблему, разработчики Lightning Labs Олаолува Осунтокун и Алекс Аксельрод совместно с разработчиком Coinbase Джимом Посеном предложили новое решение под названием «компактный клиентский фильтр блоков».

Компактный клиентский фильтр блоков изначально создавался для кошелька Neutrino от Lightning Labs, предназначенного для сети Lightning, но он может использоваться и в обычных кошельках Биткойна: кошелёк Wasabi уже реализовал бета-версию решения.

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

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

Доступность: доступно (бета-версия)

Liquid и Confidential Transactions

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

Одна из опций, реализованных в Liquid, – Confidential Transactions (CT). CT – это приём, скрывающий в транзакциях отправляемые и получаемые суммы. Это возможно благодаря тому, что хитроумная криптография позволяет выполнять математические операции со скрытыми суммами. Все пользователи Liquid могут удостовериться, что получаемые суммы не превышают отправляемые. Другими словами, они могут убедиться, что не появилось никаких новых биткойнов, – даже если они не знают, сколько точно денег пересылалось.

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

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

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

Доступность: в ближайшее время будет доступно для бирж и других компаний с большим объёмом транзакций Биткойна, позже – для обычных трейдеров и, возможно, когда-нибудь – для пользователей мейннета

Примечание автора: Настоящая статья фокусируется на новых и ожидаемых технологиях конфиденциальности. Есть также старые решения: невидимые адреса, использование в качестве кошелька полного узла Биткойна, Coin Control, JoinMarket и другие существующие решения CoinJoin, «рикошет», PayNym, Sphinx в сети Lightning, Monero-своп и др.

Источник