Что такое Dandelion Protocol: полный гид по анонимному протоколу для биткоина

376
Просмотры
Dandelion Protocol

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

Анонимные криптовалюты,такие как Monero и Zcash, содержат функции анонимизации на уровне блокчейна. Они используют Ring CT и zkSNARKs — алгоритмы, которые затрудняют отслеживание транзакции. Но P2P связь также играет важную роль в том, насколько анонимны будут взаимодействия в сети. И Monero, и Zcash используют функции конфиденциальности сетевого уровня, такие как Tor и I2P.

Протокол Dandelion — это решение для анонимизации на сетевом уровне. Протокол был предложен в 2017 году, чтобы улучшить защиту частной сети биткоина. Авторы предложения — Shaileshh Bojja, Giulia Fant, Pramod Viswanath из Иллинойского университета.

В первом варианте было несколько существенных недостатков. Улучшенная версия Dandelion Protocol появилась в мае 2018. Она получила название Dandelion ++.

Dandelion ++ решает проблемы оригинального протокола. Он реализован исследовательской группой и получил одобрение от разработчиков Bitcoin. Dandelion ++ может быть включен в новые релизы Bitcoin Core.

Что такое Dandelion++

Dandelion ++ — это изящное решение сетевого уровня с официально гарантированной анонимностью. Оно легко реализовывается на базе существующих криптовалют. Протокол существенно отличается от большинства других решений по анонимности на сетевом уровне.

Чтобы понять, как работает Dandelion ++, нужно вспомнить, как передаются транзакции в сети биктоина и как работает оригинальный протокол Dandelion.

Когда пользователь передают транзакцию с узла, она распространяется на связанные узлы. Эти узлы известны как ноды или пиры. Сообщение о транзакции распространяется в цепной реакции: каждый узел передает сообщение тем, к кому он подключен. Это имеет аналогию с сарафанным радио, поэтому протокол называется Bitcoin’s gossip protocol, или протокол сплетен. Таким способом информация о транзакции быстро распространяется по сети.

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

Как идет отслеживание

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

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

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

  • все узлы подчиняются протоколу,
  • каждый узел генерирует только одну транзакцию,
  • все узлы биткоина запускают Dandelion.

Эти предположения не сработали на практике, поэтому создан Dandelion ++. Оригинальный протокол работает в 2 этапа, названные по аналогии с частями цветка одуванчика:

  • фаза Stem, или фаза стебля,
  • фаза Fluff, или фаза пуха.

Фазы в протоколе Dandelion

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

Что такое Dandelion Protocol: полный гид по анонимному протоколу для биткоинаОтсюда начинается фаза пуха. Когда один узел передает сообщение с использованием метода диффузии, оно быстро распространяется на большинство узлов в сети. Тем не менее, становится намного сложнее отследить исходный узел: первое сообщение передавалось отдельными нодами конфиденциально. Наблюдатель может только сопоставить распространение транзакций с несколькими узлами, где сообщение передавалось в фазе стебля. Идентификация исходного отправителя запутывается. Похоже на то, как кольцевая подпись Monero защищает анонимность кошелька, подписавшего транзакцию.

dandellion-bitcoin-privacy

В блоге разработчиков Zcoin приводится пример, как работает протокол Dandelion. Они показывают это на школьных слухах

Корневая фаза:

  1. Кэти: «Пшш, я так запала на Ньюва. Только никому не говори».
  2. Джордж: «Боже, знаешь, что сказала мне Кэти? Она сильно запала на Ньюва. Я сказал только тебе, поэтому никому больше не говори».
  3. Алиса: «Бетти, ты не поверишь, что сказал мне лучший друг Кэти, Джордж. Он говорит, что она сильно запала на Ньюва! Ты моя лучшая подруга, поэтому никому не говори!»

Фаза пуха:

Болтушка Бетти: «Черт возьми, вот так новости… Мне сказали, что Кэти запала на Ньюва! Расскажите всем, это же так интересно!»

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

Dandelion ++ заметно отличается от Dandelion в фазе стебля. В ней информация передается по переплетенным мршрутам, кабелям. Они могут быть фрагментированы, но распространение ограничено локально. Это отличает протокол от других решений анонимности на уровне сети, таких как Tor. В протоколе маршрутизации onion клиенты используют глобальную сетевую информацию для определения путей транзакций.

И Dandelion, и Dandelion++ имеют асинхронные циклы. Каждый узел работает на передачу, когда его внутренние часы достигают установленного предела. В Dandelion ++ функционирует 4 основных компонента:

  • анонимный граф,
  • отправка транзакций (собственная),
  • отправка транзакций (передача),
  • механизм отказоустойчивости.

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

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

Dandelion ++ уже был продемонстрирован в сети Биткойна. Он не перегружает сеть, при этом дает необходимый функционал. Но несмотря на свои преимущества, протокол явно не защищает против злоумышленников на уровне интернет-провайдера, которые могут использовать атаки маршрутизации для деанонимизации пользователей.

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