Ошибки в выборе приманки, влияющие на конфиденциальность пользователей Monero

24 сентября, 2021 / Технологии

монеро даркнет

Как утверждается, промежуточные версии Monero v0.14.1.0 и v0.17.2.2 содержали две ошибки в алгоритме выбора приманки (ловушки), которые влияли на конфиденциальность пользователей Monero.

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

Отметим, что в последней версии v0.17.2.3 ошибки были исправлены. В связи с этим настоятельно рекомендуется обновить ПО как можно скорее.

Пользователям необходимо знать, что последствия первой ошибки не так серьезны, как сообщалось ранее. Известно, что в результате первой ошибки последние использованные выходы гарантированно идентифицировались как реальные, потраченные в транзакции. Однако на самом деле это не так. Например, популярный кошелек MyMonero использует отдельный алгоритм выбора приманки, в котором ошибки не было. Следовательно, пользователи MyMonero могли реально конструировать транзакции, которые выбирали новые расходуемые выходы в качестве ловушек. Это означает, что новые потраченные выходы, не гарантированно идентифицировались как реальные выходы.

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

Техническая часть

Неправильное применение алгоритма (ошибка 1)

Алгоритм выбора приманки необходим для отбора выходных данных в блокчейне на основе наблюдаемых моделей расходов, как рекомендовано Möser et al. В анализе статьи используются модели расходов из более ранних версий Monero – где в некоторых случаях реальные результаты, используемые в транзакциях, могут быть определены с уверенностью, чтобы прийти к распределению шаблонов расходов пользователей Monero. В документе рекомендуется учитывать наблюдаемые модели расходов при выборе выходов в блокчейне для использования в качестве приманок, а не применять равную вероятность ко всему набору выходов. Таким образом, новые выходы с большей вероятностью будут выбраны в качестве ловушек, что позволит сильнее запутать пользователей.

Когда рекомендация была впервые реализована в Monero v0.13.0.0, наблюдаемая схема расходов была применена верно при выборе ловушек. Однако, когда алгоритм был обновлен до версии 0.14.1.0, алгоритм применял наблюдаемую схему расходов от 10 блоков до конца цепочки. Это было сделано потому, что выходы младше 10 старых блоков блокируются в связи с чем не могут быть потрачены. Поэтому казалось логичным применить распределение, начиная с 10 блоков до конца блокчейна, чтобы учитывать только расходуемые выходы. Тем не менее, это привело к тому, что алгоритм выбрал незначительно меньшее количество ложных выходов, возраст которых составляет примерно 10–20 блоков.

Эта ошибка была исправлена.

Разделить на 0 (ошибка 2)

При обновлении алгоритма выбора приманки в v0.14.1.0 учитывалась дисперсия размера блока, чтобы лучше соответствовать шаблонам расходов и уменьшить предвзятость к выбору выходных данных базы монет в качестве приманок. При выборе приманки алгоритм сначала определял возраст в секундах, в течение которого должна быть полученная приманка (используя распределение известных шаблонов расходов, как обсуждалось выше). Затем алгоритм делил ожидаемый возраст выходных данных в секундах на среднее количество секунд между каждым выходом, наблюдаемым за последний год, чтобы получить результат в цепочке, который следует использовать в качестве приманки. Если количество выходных данных в году эквивалентно количеству секунд в году, то среднее количество секунд между каждым выходом в течение года равно 1.

При вычислении среднего количества секунд на вывод была ошибка, из-за которой результат усекался. Если бы среднее количество секунд на вывод упало ниже 1, результат был бы усечен до 0. Когда алгоритм делит ожидаемый срок вывода в секундах на 0, в большинстве систем он выбирает ложных целей исключительно из самого последнего расходуемого блока. Таким образом, если объем выпуска существенно увеличится в течение длительного периода, так что секунды, интервалы между каждым выпуском за последний год, должны упасть ниже 1 (т. Е. Количество результатов за последний год превышает количество секунд в году) , то в подавляющем большинстве случаев алгоритм выбрал бы ловушки из самого последнего расходуемого блока. На момент публикации среднее количество секунд на вывод составляет около 1,7.

Эта ошибка деления на 0 была исправлена ​​в PR № 7845.

Заключение

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

Актуально