Конфиденциальность  криптовалют: методы на основе микширования (часть 2)

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

Monero

Изначально Monero (XMR) была основана на протоколе Cryptonote, описанном в белой книге автором под псевдонимом Николас ван Саберхаген в октябре 2013 года, но с тех пор концепция усовершенствовалась, и теперь включает в себя идеи Грега Максвелла и Адама Бэка. Сначала, в 2014 году валюта была запущена под названием Bitmonero анонимной командой разработчиков, а затем в результате форка из-за разногласий по поводу направления проекта образовалась Monero. Ее протокол сочетает в себе две основные криптографические идеи:
  • Кольцевые подписи позволяют пользователям запутывать набор входов, участвующих в транзакции. В Monero используется расширение RingCT, которое дополнительно скрывает суммы транзакций способом, аналогичным Mimblewimble.
  • Одноразовые адреса позволяют пользователям получать каждый платеж на уникальный адрес, который используется только для этого платежа, без взаимодействия с отправителем платежа.
Теперь объясним, как эти идеи реализуются в Monero. Как и в Mimblewimble, коины в Monero представлены в виде гомоморфных обязательств (Педерсена) типа Commit(X, B) по количеству коинов X и коэффициенту маскировки B. Предположим, что у Элис есть выход на 10 XMR, и она хочет отправить 7 XMR Бобу. В Mimblewimble она бы использовала только свой выход, указав его в транзакции в качестве входа. Однако в Monero Элис должна указать входы-приманки, называемые миксинами (англ. “mixin”), чтобы наблюдатели не могли угадать, какие именно входы в действительности используются в транзакции. Для этого она создает для них кольцевые подписи. Кольцевая подпись – это криптографическая процедура, которая создает одну подпись из одной пары закрытого/открытого ключа и набора несвязанных открытых ключей. Кольцо – это набор открытых ключей в подписи, и кольцевые подписи обладают таким свойством: пользователь, проверяющий подпись, не может определить, какой именно из участников кольца создал кольцевую подпись. В Monero используются связанные кольцевые подписи, что означает, что можно определить, используется ли один и тот же закрытый ключ для подписи двух разных сообщений; это крайне важно для обнаружения попыток двойного расходования. Схема подписи, используемой в Monero, основана на подписи, изобретенной Адамом Бэком, и адаптирована к обязательствам Педерсена; здесь мы не будем подробно на этом останавливаться.
00012

Пример транзакции с 2 реальными входами и 6 миксинами в Monero

Чтобы Элис смогла отправить 7 из 10 своих XMR Бобу, она сначала должна выбрать как минимум 6 других выходов (не обязательно принадлежащих ей), известных как миксины. Затем она должна сгенерировать случайное число и объединить его с публичным адресом Боба и своим публичным адресом, чтобы сгенерировать два уникальных одноразовых адреса для отправки: один для оплаты 7 XMR Бобу и один для получения сдачи в 3 XMR. В результате этой процедуры мы получаем:
  • два одноразовых адреса, один для Элис и один для Боба, и
  • открытый ключ транзакции, выведенный из случайного числа.
Для любой транзакции Боб может объединить свой закрытый ключ и открытый ключ, чтобы проверить, является ли он получателем каких-либо выходов из этой транзакции. Если он является получателем, он также может увидеть сумму полученных XMR. После генерации одноразовых адресов, Элис создает выходные поручения Output_Bob и Output_Change, предназначенные для каждого одноразового адреса. Затем она создает кольцевую подпись с выходом, который хочет потратить, и миксинами по своему выбору. Особенностью RingCT является то, что эта подпись может также содержать доказательство того, что Сумма(Input_Alice) = Сумма(Output_Bob) + Сумма(Output_Change) без сообщения стороннему наблюдателю, какой вход в кольце является истинным Input_Alice, или какая-либо из сумм – Суммы (Input_Alice), Суммы (Output_Bob) или Суммы (Output_Change). Для того чтобы сформировать действительную транзакцию, Элис теперь должна сгенерировать доказательства диапазона (недавно в Monero был произведен хардфорк и введена поддержка Bulletproofs) для каждого выхода, чтобы показать, что количество коинов в каждом выходе является положительным, то есть Сумма (Output_Bob) > 0 и Сумма (Output_Change) > 0. Эти доказательства не дадут Элис подделать коины, создав поручения Output_Bob с -5 коинами и Output_Change с 15 коинами. Сводя все это воедино, Элис может отправить транзакцию, состоящую из:
  • списка входов, состоящего из входа Элис и миксинов;
  • списка выходов;
  • кольцевую подпись для входа Элис и миксинов (которая содержит доказательство того, что суммы входов и выходов равны);
  • список адресов выходов, состоящий из одноразового адреса Боба и одноразового адреса Элис для получения остатка;
  • список доказательств диапазона, по одному на каждый выход, доказывающий, что значение выхода является положительным;
  • комиссия за транзакцию в открытом тексте.
Блокчейн Monero – это стандартный блокчейн на базе протокола proof-of-work, состоящий из таких транзакций. Размер кольца для каждой транзакции в Monero составляет не менее 7, а это значит, что размер анонимного множества для них как минимум равен 7. Если транзакции повторяются несколько раз, это может привести к значительному увеличению их анонимных множеств. Кроме того, в отличие от CoinJoin, такое анонимное множество можно обеспечить без взаимодействия, то есть отправителю средств не нужно координировать свои действия с кем-либо еще. Именно поэтому кольцевые подписи Monero часто называют формой децентрализованного микширования, хотя основной криптографический механизм в Monero совершенно другой. Возможности Monero позволяют создать блокчейн со скрытыми суммами транзакций и частично скрытыми адресами входов и выходов. Хотя это и затрудняет поиск связей между транзакциями по сравнению с Биткойном, провести анализ блокчейна Monero все же возможно. Злоумышленник Дэвид может узнать, какой из нескольких возможных адресов отправителя в кольцевой подписи является реальным, если:
  • он владеет ими сам;
  • угадает, какие входы являются миксинами, используя эвристические данные, такие ​​как время создания или участие в других транзакциях;
  • проведет анализ использования этих входов на хардфорках Monero (см. анализ здесь).
Используя эти методы, чтобы определить, были ли израсходованы конкретные выходы или нет, Дэвид может попытаться узнать больше о настоящих входах для различных транзакций и, таким образом, выяснить, что различными выходами владеет один и тот же пользователь. В этом документе описываются схожие методы, которые применялись к начальным версиям протокола Monero (успех при этом достигался главным образом благодаря минимальному размеру кольца для каждой транзакции). Как отмечается в ответе Monero на вышеупомянутый документ, в версии анализируемого протокола размер кольца был установлен на минимальное значение – 1 – но в нынешней версии Monero он был увеличен до 7, что значительно затрудняет такой анализ.

Заключение

Методы, основанные на микшировании, в сущности, используют взаимозаменяемость криптовалют для улучшения различных аспектов их конфиденциальности. С другой стороны, сама взаимозаменяемость основывается на том, что все коины криптовалюты равнозначны и равноценны. В частности, для этого требуется возможность отделить коин от его истории транзакций, поскольку в противном случае пользователи смогли бы различать их, анализируя предыдущих владельцев или типы транзакций. Это разделение является целью самой конфиденциальности, помогая создавать симбиотические отношения между взаимозаменяемостью и конфиденциальностью на основе микширования. На ранних этапах развития микширования, миксеры и CoinJoin использовали взаимозаменяемость, чтобы скрыть связь между отправителями и получателями транзакций. Эти методы позволяют пользователям скрывать связь между своей реальной личностью и адресом своих коинов в сети, хотя анонимное множество ограничено необходимостью доверять третьим сторонам – миксерам – и поиском участников группы в CoinJoin. Более продвинутые технологии – Mimblewimble и Monero – позволяют проводить микширование асинхронно – добавлять транзакции в блоки в случае с Mimblewimble и использовать кольцевые подписи для проведения микширования без взаимодействия в случае с Monero. В этих двух протоколах взаимозаменяемость также позволяет использовать гомоморфные обязательства (Педерсена), чтобы полностью скрыть суммы транзакций. В таблице ниже проанализировано влияние протоколов на разные аспекты конфиденциальности. 3 В конечном счете влияние этих протоколов на конфиденциальность будет зависеть от их способности обеспечить достаточно большие анонимные множества за счет своих криптографических свойств. Их внедрение и эволюция в реальных условиях находятся в начальной стадии, и мы рады наблюдать за тем, как они развиваются. В следующей статье этой серии мы обсудим несколько других семейств протоколов, основанных на ряде криптографических методов, известных как доказательства с нулевым разглашением, которые обеспечивают другие типы гарантий. Источник