Перевод Dandelion++ для Monero

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 11 мар 2020.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    679
    Симпатии:
    218
    1.jpg
    «Dandelion++ не позволит злоумышленнику связать ваш IP-адрес с вашими транзакциями Monero».

    Monero опирается на свою одноранговую (P2P) сеть. Компьютеры, подключённые к этой сети и поддерживающие блокчейн, называются узлами и обмениваются информацией, обеспечивающей работу Monero, то есть своими адресами, историческими данными блокчейна, данными блоков по мере их вычисления, а также данными новых транзакций, добавляемых в блоки. Для идентификации узлов в сети используются их IP-адреса, но это связанно с определённым риском, так как наблюдатель может связать IP-адрес с конкретной транзакцией, в результате чего данные, содержащиеся в ней, будут деанонимизированы. Протокол Dandelion++, который планируется реализовать в новой версии программного обеспечения Monero, позволяет скрыть эту связь. В данной статье будут описаны принципы работы Dandelion++, а также, что протокол может дать пользователям Monero.

    P2P сеть Monero

    Monero, по сути, состоит из двух концептуальных частей: 1) P2P сети и 2) приложений, подключённых к этой сети. Приложения работают с адресами, ключами и транзакциями, в то время как сеть организует и контролирует поток информации. Чтобы понять суть Dandelion++, важно учитывать структуру P2P сети и то, как кошельки используют её для проведения транзакций.

    Структура сети включает в себя тысячи узлов, расположенных по всему земному шару (и даже десятки тысяч, если учитывать пассивные узлы), и каждый из этих узлов подсоединён через интернет к небольшой группе других узлов, называемых одноранговыми (peer) [1]. Узлы связываются со своими одноранговыми узлами, используя протокол TCP (Transmission Control Protocol), то есть тот же протокол, что используется сетевыми браузерами и серверами. Одноранговые узлы выбираются случайным образом и им совершенно необязательно находиться близко друг от друга в географическом смысле. Обычно группа состоит из восьми, но в некоторые группы могут входить сотни узлов. Каждый из них находит свой одноранговый узел, прежде всего запрашивая специальные ведущие узлы (master nodes) об их одноранговых узлах, а затем запрашивая уже такие одноранговые узлы о наличие новых, и так далее. В результате создаётся сеть, объединяющая множество компьютеров, каждый из которых передаёт данные посредством TCP соединения рассредоточенной и обычно ограниченной группе других компьютеров.

    Кошелёк Monero связывается с одним из этих узлов, используя его в качестве сетевого (P2P) шлюза. Некоторые кошельки, такие как официальный GUI-кошелёк, позволяют создать свой собственный узел, в то время как другие, такие как MyMonero, устанавливаемые на смартфон, всегда используют только удалённые узлы. Кошельки позволяют тратить Monero путём создания и трансляции транзакций через шлюзовой узел. Цель состоит в том, чтобы транзакция в конечном счёте попала к узлу майнера для включения в вычисляемый им блок. Каждая транзакция содержит ограниченное количество информации, а также некоторые значимые данные, включая данные о ряде возможных источников средств, которые тратятся.

    В настоящее время узел Monero, запускающий трансляцию новой транзакции, использует процесс, называемые лавинной маршрутизацией (flooding). Он передаёт транзакцию всем своим одноранговым узлам и далее по цепочке с некоторыми проверками во избежание избыточной передачи данных. Информация перемещается по сети во всех направлениях подобно лавине. Некоторые криптовалюты, подобные Bitcoin, используют случайное время трансляции, в то время как с Monero дела обстоят иначе.

    Проблема

    «Создание транзакции для ботнет-узлов подобно громкому шуму, а сами такие узлы, работают как уши».

    Ваш IP-адрес может сказать о вас многое (чтобы узнать, какую информацию можно получить, используя ваш IP-адрес, можете посетить сайт, например, whatismyipaddress.com). Информация, полученная от вашего поставщика интернет-услуг (ISP) или провайдера VPN, в зависимости от ситуации, может позволить даже идентифицировать вашу личность по имени. Любая связь между вашим IP-адресом и создаваемыми вами транзакциями создаёт утечку информации, возможно, вам бы хотелось скрыть от посторонних даже сам факт того, что вы проводите транзакции Monero. Проблема состоит в том, что именно лавинная маршрутизация транзакций по P2P сети Monero позволяет связать транзакцию с IP-адресом [2].

    Установление связи между IP-адресом и транзакцией — тоже дело непростое и предполагает определённые сложности. Для этого внешним наблюдателям приходится проделывать большой объём работы. Однако ботнет, подключённый, например, к P2P сети Monero, позволяет вычислить вероятный источник транзакции путём анализа временных данных и их сравнения с известной информацией об одноранговых узлах. Когда вы слышите громкий шум, то знаете, в какую сторону повернуться, так как ваш мозг определяет направление, исходя из временной информации и искажения звука, воспринятого обоими ушами. В случае с криптовалютами анализ лавинной маршрутизации пакетов, принимаемых в различных местах, позволяет злоумышленнику делать то же самое. Создание транзакции для ботнет-узлов подобно громкому шуму, а сами такие узлы, работают как уши.

    Dandelion

    Для решения этой проблемы уважаемыми исследователями из Университета штата Иллинойс был разработан набор методов, названный ими Dandelion [2]. Изначально решение было разработано для Bitcoin, но оно в равной степени применимо и к Monero. Идея, стоящая за Dandelion, прежде всего, заключается в маршрутизации транзакций к узлам особым, неотслеживаемым способом ещё до начала лавинной передачи.

    Авторы Dandelion углублённо изучили теорию и практику применения ботнетов с целью обнаружения источников криптовалютных транзакций. Среди прочего рассматривалось создание математических моделей анонимности (соответствующая подробная информация содержится в работе [2]), которые использовались для анализа трёх методов распространения: 1) базовой лавинной маршрутизации (метод Monero), 2) случайной лавинной маршрутизации, называемой диффузией (метод Bitcoin) и 3) диффузии посредством прокси-узлов. В случае с последним методом транзакция сначала направляется случайному узлу, который затем транслирует её при помощи диффузии. Все методы с использованием математических моделей авторов продемонстрировали свою несостоятельность.

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

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

    Dandelion++

    Тем не менее злоумышленник, пытающийся связать транзакции с IP-адресами, может и не быть пассивным, равно как может и не следовать правилам сети. Некоторые узлы могут не использовать Dandelion. Учитывая растущий рынок услуг, связанных с глобальным криптовалютным анализом, которым занимаются такие фирмы, как Chainalysis [4], авторами были пересмотрены допуски, связанные с их предшествующей работой, и в сотрудничестве с другими авторами через год ими был разработан Dandelion++ [3]. Dandelion++ содержит изменения, внесённые в протокол Dandelion, которые обеспечивают устойчивость к глобальным атакам с целью деанонимизации с нарушением всех правил.

    «Dandelion++ официально гарантирует устойчивость к атакам с целью деанонимизации».

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

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

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

    Существует и дополнительная, комплиментарная часть протокола Dandelion++, называемая механизмом защиты от сбоев. Каждый узел, ретранслирующий транзакцию в фазе стебля, запускает для каждой такой транзакции таймер. Если пороговое временное значение преодолено, а узел не получает той же транзакции обратно в фазе пуха, он начинает собственную фазу пуха. Это делается по двум причинам: таким образом узел срывает попытки произвести деанонимизацию по времени, а также предотвращает так называемые атаки методом «чёрной дыры», в ходе проведения которых вредоносные узлы отбрасывают транзакции в фазе стебля, а не ретранслируют их.

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

    Интеграция в Monero

    Несмотря на то, что протокол Dandelion++ изначально разрабатывался для Bitcoin, недавно разработчик по имени Ли Кладжет (vtnerd) применил его в Monero, а тестирование и анализ были выполнены разработчиком moneromooo. Как рассматривался этот вопрос, равно как и файлы, изменённые этими двумя выдающимися разработчиками Monero, можно найти в соответствующем пул-реквесте [5]. Сам пул-реквест является частью формального процесса, посредством которого новый код попадает в кодовую базу Monero. Несмотря на то, что пул-реквест по Dandelion++ был одобрен moneromooo, на момент написания этой статьи анализ кода ещё не был завершён, и код не был добавлен в базу.

    «Несмотря на то, что протокол Dandelion++ изначально разрабатывался для Bitcoin, недавно разработчик по имени Ли Кладжет (vtnerd) применил его в Monero, а тестирование и анализ были выполнены разработчиком moneromooo».

    После реализации Dandelion++ будет использоваться по умолчанию, даже несмотря на то, что его можно будет отключить, определив вероятность перехода к фазе пуха как 100% в файле cryptonote_config.h, код которого написан на C++, и перекомпилировав этот файл. Важен тот факт, что даже в случае такой намеренной перекомпиляции новая версия будет использовать метод диффузии с соответствующими случайными задержками, но не базовый процесс лавинной маршрутизации. Официальная дата реализации протокола пока не назначена, но известно, что она не потребует хардфорка.

    Тем не менее существуют некоторые минимальные компромиссы и ограничения. Dandelion++ предполагает некоторую задержку в прохождении транзакций. Такая задержка вызвана целым рядом причин, которые рассматриваются авторами протокола в работе [3]. Прежде всего, согласно тому, что говорят авторы, и экспериментальной оценке, причиной задержки, составляющей до нескольких секунд, является само наличие фазы стебля. Процесс диффузии также является причиной случайных задержек в фазе пуха, но эти задержки, как правило, составляют меньше секунды. А если сеть подвергнется атаке методом «чёрной дыры», ожидание подтверждения отправителем может составить минуты. Предполагается, что такие задержки не особо повлияют на работу сети. Также Dandelion++ не предполагает шифрования P2P пакетов и не защищает от отслеживания данных на уровне ISP/VPN. Для этого рекомендуется использовать Tor.

    Краткое заключение

    Скоро Monero начнёт использовать метод защиты от деанонимизации, Dandelion++. Этот метод, изначально разработанный для Bitcoin и применённый в контексте Monero разработчиком Ли Кладжетом, не позволяет злоумышленникам связывать IP-адреса с транзакциями Monero даже в случае проведения глобальных и сложных атак. В частности, метод ориентирован на защиту от ботнетов. Dandelion++ предполагает наличие двух фаз: фазы стебля и фазы пуха, при прохождении которых поток информации приобретает форму одуванчика, что объясняет название протокола. Наличие этих двух фаз затрудняет определение источника транзакции наблюдателем. Реализация этого метода повысит и без того превосходные свойства Monero, обеспечивающие анонимность пользователей, а также продвинет криптовалюту по пути непрерывного совершенствования.

    1. «Анализ одноранговой сети Monero» (Exploring the Monero Peer-to-Peer Network), Т. Као (T. Cao), Дж. Ю (J. Yu), Дж Декуше (J. Decouchant), К. Лу (X Luo) и П. Вериссимо (P. Verissimo), eprint.iacr.org/2019/411.pdf.

    2. «Dandelion: переработка сети Bitcoin в целях обеспечения анонимности» (Dandelion: Redesigning the Bitcoin Network for Anonymity), С. Б. Венкатакришан (S. B. Venkatakrishan), Дж. Фанти (G. Fanti) и П. Вишванат (P. Viswanath), SIGMETRICS ’17, 5-9 июня 2017, Urbana-Champaign, publish.illinois.edu/science-of-security-lablet/files/2016/07/Dandelion-Redesigning-BitCoin-Networking-for-Anonymity.pdf

    3. «Dandelion++: лёгкая криптовалютная сеть с официальными гарантиями анонимности» (Dandelion++: Lightweight Cryptocurrency Networking with Formal Anonymity Guarantees), Дж. Фанти (G. Fanti), С. Б. Венкатакришан (S. B. Venkatakrishan), С. Бакши (S. Bakshi), Б. Денби (B. Denby), С. Баргава (S. Bhargava), А. Миллер (A. Miller) и П. Вишванат (P. Viswanath), arXiv:1805.11060v1, 28 мая 2018, arxiv.org/pdf/1805.11060.pdf

    4. Chainalysis, chainalysis.com.

    5. «Реализация поддержки Dandelion++ в публичных сетях» (Adding Dandelion++ support to public networks) #6314, github.com/monero-project/monero/pull/6314.
    Источник: Dandelion++ for Monero

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.