Эпизод 08 - Согласованные атаки по времени

05/02/2019

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

Стенограмма эпизода:

Джастин: Привет всем, с вами снова Breaking Monero, серия эпизодов, в которых нами критически рассматриваются ограничения, связанные с анонимностью и безопасностью Monero, чтобы люди узнали, что вообще такие ограничения из себя представляют. Меня зовут Джастин, и ко мне сегодня снова присоединился Саранг. Сегодня мы поговорим об атаках по времени. Атаки по времени являются очередной темой с кучей нюансов, так что нам хотелось бы немного прояснить ситуацию для всех остальных, чтобы люди лучше поняли, какой вид информации, касающийся их, может быть получен, а также мы расскажем о некоторых моментах, которые необходимо учитывать и использовать при проведении транзакций. Итак, Саранг, не мог бы ты начать с тех проблем, которые могут возникнуть, когда ты запускаешь узел, какие тут есть ограничения?

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

Джастин: Как ты думаешь, справедливо ли будет утверждать, что если злоумышленник захочет получить высокий уровень информации о сети, то сначала он проверит узлы, которые за недавний короткий период подсоединялись к ней и отсоединялись от неё?

Саранг: Трудно сказать, какие методы будет использовать злоумышленник. Но этот довольно сильный. В целом, если вы собираетесь использовать узел, то лучше, чтобы он работал на постоянной основе, и чтобы через него проходило и ретранслировалось много транзакций. Таким образом, ваши транзакции как бы «затеряются в толпе».

Джастин: Спасибо, Саранг, стоит отметить, что данная рекомендация касается не только Monero. В случае с другим программным обеспечением, предназначенным для обеспечения анонимности, таким как Tor или I2P, пользователям обычно рекомендуется использовать такое ПО постоянно, даже если в этом нет острой необходимости. I2P маршрутизатор следует использовать не только при подключении к I2P сети. Подобным образом узел следует запускать не только, если вы хотите синхронизироваться и транслировать транзакции. В идеале узлы должны работать постоянно. А что в том случае, когда синхронизируешься с удалённым узлом, Саранг?

Саранг: Ну, мы уже говорили об этом ранее, перед записью, о том, что структура немного отличается. Мы говорили об удалённых узлах, ограничениях и доверии, которого требует взаимодействие с удалённым узлом. Например, если вы подсоединяетесь с мобильного устройства, которое не позволяет создать свой собственный узел. Следует помнить об одной вещи, особенно в случае с мобильными устройствами, чей IP и данные геолокации будут изменяться со временем, когда вы подсоединяетесь к удалённому узлу и запрашиваете блоки, которых ещё не видели. Например, если я использую на своём телефоне кошелёк Monero, который соединяется с каким-то открытым удалённым узлом, узел видит, что я запрашиваю определённое количество блоков, а затем я уйду оффлайн, прерву соединение с узлом, поскольку закончу на какое-то время. А затем из другого места, с другого IP, я появлюсь как другая личность, возможно, я снова подсоединюсь к тому же удалённому узлу и запрошу следующий набор блоков, и узел, может быть, придёт к выводу, что я та же самая личность, что и в прошлый раз, несмотря на то, что я буду подсоединяться с другого IP.

Джастин: Интересно, спасибо, Саранг. Пойдём немного дальше и кратко опишем, что людям следует делать, чтобы избежать дезинформации при проведении транзакций. Существуют некоторые базовые стратегии, и, к сожалению, у каждой из них есть свои недостатки. Мы можем сказать, что пользователям следует проводить транзакции в различное время, буквально в случайное время дня, но тогда, возможно, будет выбрано не пиковое время сети Monero, и, возможно, люди, проводящие транзакции в это время, окажутся единственными людьми, проводящими транзакции со случайным параметром. Или же, если вы будете проводить транзакции, когда большое количество людей пользуется сетью, это окажется более прогнозируемым поведением, которое будет отмечено. В конечном счёте трудно сказать, какая из стратегий будет лучше, поскольку эвристический анализ возможен в обоих этих случаях, и мы не знаем, в каком из них он будет более мощным. Просто следует помнить о том, что есть ограничения, связанные с обеими стратегиями, а также с тем, как люди могут их использовать. Мы можем рассмотреть механизм «турникета» ZCash, как они попытались ограничить некоторые метаданные, позволяющие проводить атаку по времени, когда люди переводят средства с одного защищённого Sprout-адреса на другой прозрачный адрес, Sapling-адрес. При помощи такого «турникета» они попытались сделать так, чтобы в рамках интерактивного процесса вы смешивались с остальной частью толпы, гарантируя, что множество людей будут делать это одновременно. И тут всё было направлено на то, чтобы предотвратить возможность атаки по времени, чтобы было неясно, что одно и то же лицо проводит транзакции в определённый период времени. Итак, Саранг, возникает один вопрос: есть множество людей, у которых есть кошелёк Monero, и не является ли это недочётом с точки зрения пользовательского опыта, что мы ограничиваем их необходимостью получения 10 подтверждений их транзакций перед тем, как они смогут провести следующую? Почему это необходимо Monero, и каковы здесь преимущества?

Саранг: За этим стоит одна идея, и мы обсуждали её, когда говорили о реализации форков в сети. Она состоит в том, что сеть и блокчейн имеют склонность к самостоятельному разветвлению на небольшие и ограниченные отрезки, и это происходит просто потому, что различные майнеры могут представить различные блоки примерно в одно и то же время, создавая тем самым вот эти небольшие второстепенные форки. В конечном счёте они сворачиваются в один большой блокчейн. Таким образом, с одной стороны, мы хотим гарантировать наличие у пользователей достаточного количества подтверждений, чтобы они могли показать, что выходы, отправляемые ими, принадлежат основному блокчейну. Сколько блоков это занимает? Статистически нам известно, что чем больше блоков приходится ожидать, тем вероятнее, что ты находишься в основном блокчейне. Самая длинная реорганизация блокчейнов из виденных мною составила 20 блоков, но такое случается крайне редко. Чаще это именно то число, которое было задано нами, 10 блоков, и этого достаточно, чтобы гарантировать, что вы, наиболее вероятно, находитесь в основном блокчейне, и это не слишком ухудшает пользовательский опыт. Мы также могли бы поговорить и о других преимуществах, обеспечиваемых такой схемой.

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

Саранг: Это должна быть информация, имеющая отношение к знанию узлами сети.

Джастин: Интересно, OK. Таким образом, ты не можешь отправить транзакцию, используя ложный выход, и чтобы она была включена в сеть.

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

Джастин: Чтобы подытожить, окно в 10 подтверждений необходимо, чтобы гарантировать, что транзакции попадают в правильный блокчейн, а также учесть задержку, связанную с выбором выходов, и не каждый сможет увидеть всё, кроме как в определённый промежуток времени. Это гарантирует, что вся сеть видит эту транзакцию вплоть до того момента, как ты попытаешься отправить следующую. Я правильно всё понял?

Саранг: Ну, если делать длинную историю ещё длиннее, безусловно.

Джастин: Отлично. Что насчёт связи между IP-адресами и временем? У нас будет отдельный эпизод, целиком посвящённый IP-адресам, и там об этом мы поговорим подробнее. Но что касательно части дополнительных преимуществ, которые время может дать злоумышленнику?

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

Джастин: Есть ли комментарии, которые тебе хотелось бы ещё добавить по теме метаданных времени перед тем, как мы перейдём к тому, что людям следует делать?

Саранг: Я бы хотел добавить только то, что некоторые вещи специфичны только для Monero, например, то, как мы выбираем ложные выходы, а следовательно, учитываем некоторые вещи, связанные со временем, но большинство этих других вещей по большей части связано в целом с настройками сети, с тем, как происходит маршрутизация, как происходит передача транзакций, что может быть не специфичным для Monero, но может относиться к таким активам, как Bitcoin и Litecoin, например. Просто в целом задача во многом состоит в том, чтобы спрятать вас в толпе, чтобы вы не выделялись тем, что делаете. Существует множество способов и решений, позволяющих избежать подобных атак, которые постоянно предлагаются, есть решения сетевого уровня, такие как Tor, I2P и другие вещи, о которых ты, возможно, слышал, вплоть до всевозможных видов маршрутизации. Существуют различные предложения по изменению способа подключения узла, а также маршрутизации транзакций, которые позволят гарантировать, что злоумышленник, следящий за всей сетью, с наименьшей вероятностью сможет выявить какую-либо информацию. Помимо многих вещей, многих других вещей в области теории сети, существует большое количество различных уровней, на которых мы можем действовать, и проект Monero всегда всеми силами старается применять итеративный многоуровневый подход к анонимности. Мы продолжаем реализовывать свой итеративный подход к маршрутизации на сетевых уровнях, правда, чуть медленнее, чем нам хотелось бы.

Джастин: Да, это действительно самодостаточная тема, потому что здесь мы можем отталкиваться не только от истории Monero, но и от любого периода истории сети. Теперь что касается практической информации, мы можем обозначить несколько базовых шагов, которыми могут последовать люди. Первый и наиболее очевидный, если можете, то создайте свой собственный узел и сделайте так, чтобы он работал у вас в режиме 247, убедитесь в том, что он всегда подключён, не используйте и не синхронизируйтесь с ним исключительно, если вам необходимо провести транзакцию. В идеале вы должны постоянно вносить свой вклад, передавая информацию туда и обратно, передача вами транзакций на узел, не созданных вами, в результате повысит уровень вашей собственной безопасности. Мне бы хотелось отметить одну интересную вещь: если вы запускаете открытый узел, вроде узла MoneroWorld, когда другие люди подсоединяются к нему, чтобы провести собственные транзакции, это повышает вашу анонимность, так как множество людей проводит транзакции именно через ваш узел, а не только вы один делаете это. В дополнение ко всем остальным данным, которые вы обычно отправляете с вашего узла, вы также получаете абсолютно новую информацию от других людей, которые пользуются вашим узлом впервые. Если злоумышленник увидит ваш узел, ему придётся напрячься, чтобы отделить транзакции, отправленные вами, от транзакций, отправленных другими пользователями. Что ты думаешь насчёт задержки транзакций?

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

Джастин: Итак, Саранг, мы только что обсудили атаки по времени. Этот вопрос действительно должен волновать пользователей?

Саранг: Как и в случае со многими другими вещами, я думаю, тут тоже всё зависит от модели угрозы и риска. Во многом это зависит от того, пользуетесь ли вы или нет VPN или другими видами анонимных сетей, волнует ли вас возможность наблюдения злоумышленником за вашей сетевой активностью, в частности, или глобальной сетевой активностью по всей сети Monero. Это может зависеть от того, насколько хорошо вы подсоединены к сети интернет и к другим одноранговым узлам сети. Это может зависеть от уровня вашего доверия к вашему провайдеру интернет-услуг или вообще вашему интернет-соединению как таковому. В случае с большинством пользователей мы пытаемся сделать так, чтобы программное обеспечение, которые мы разрабатываем, маршруты, соединения с другими узлами в сети, а также любые другие решения сетевого уровня, чтобы они были прозрачны для пользователя. Я бы сказал, что люди не часто задумываются над этим, и, откровенно говоря, большинство людей может позволить себе не беспокоиться об этом в их отдельно взятом случае. Но если это волнует конкретно вас, то некоторые из этих способов помогут избежать подобных атак, вероятно, будут учтены вами, когда вы будете пользоваться Monero или даже когда вы просто будете входить в сеть.

Джастин: Хорошо. Какие-нибудь заключительные комментарии по теме?

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

Джастин: OK, спасибо, Саранг. Спасибо всем, кто смотрел нас. Это был очередной эпизод Breaking Monero, встретимся с вами в следующий раз. Пока.

Перевод: Mr. Pickles
Редактирование: Agent LvM
Коррекция: Kukima