Наверняка вы, как пользователь биткоина, эфира или любой другой криптовалюты, были обеспокоены тем, что любой желающий может видеть, сколько монет у вас в кошельке, кому вы их переводили и от кого получали. Вокруг анонимных криптовалют ходит много споров, но кое с чем нельзя не согласиться — как сказал управляющий проектом Monero Рикардо Спаньи (Riccardo Spagni) в своем Twitter-аккаунте: «Что если я просто не хочу, чтобы кассир в супермаркете знал, сколько денег у меня на балансе и на что я их трачу?»

image

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

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

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

Основанные на замешивании


CoinJoin


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

В ее основе лежит простая идея — что если пользователи будут скидываться и проводить свои платежи единой транзакцией? Получается, что если Арнольд Шварценеггер и Барак Обама скинулись и совершили два платежа Чарли Шину и Дональду Трампу в одной транзакции, то становится сложнее понять, кто профинансировал предвыборную кампанию Трампа — Арнольд или Барак.

Но из главного плюса CoinJoin вытекает его главный минус — слабая защищенность. На сегодняшний день уже есть способы выявить CoinJoin-транзакции в сети и сопоставить наборы входов наборам выходов путем сравнения сумм потраченных и сгенерированных монет. Пример инструмента для такого анализа — CoinJoin Sudoku.

Плюсы:

• Простота

Минусы:

• Продемонстрирована возможность взлома

Monero


Первая ассоциация, которая возникает при словах «анонимная криптовалюта», — Monero. Эта монета доказала свою устойчивость и приватность под микроскопом спецслужб:

image

В одной из своих недавних статей мы очень детально описали протокол Monero, и сегодня суммируем сказанное.

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

Для сокрытия получателей каждая вновь сгенерированная монета использует одноразовый адрес, что лишает наблюдателя возможности (настолько, насколько сложной является задача взлома ключей шифрования, разумеется) связать какой-либо выход с публичным адресом. А с сентября 2017 года Monero стала поддерживать протокол Confidential Transactions (CT) с некоторыми дополнениями, таким образом еще и скрывая суммы переводов. Чуть позже разработчики криптовалюты заменили кольцевые подписи Борромео (Borromean signatures) на Bulletproofs, тем самым значительно уменьшив размер транзакции.

Плюсы:

• Проверена временем
• Относительная простота

Минусы:

• Генерация и верификация доказательства медленнее, чем у ZK-SNARKs и ZK-STARKs
• Не устойчива ко взлому с использованием квантовых компьютеров

Mimblewimble


Mimblewimble (MW) был придуман как масштабируемая технология анонимизации переводов в сети Bitcoin, но нашел свою реализацию как самостоятельный блокчейн. Используется в криптовалютах Grin и BEAM.

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

Для сокрытия сумм входов и выходов используется довольно распространенный протокол, предложенный Грегом Максвеллом (Greg Maxwell) в 2015 году, — Confidential Transactions (CT). То есть суммы шифруются (а точнее, используется схема обязательств), и вместо них сеть оперирует так называемыми commitment-ами. Чтобы транзакция считалась валидной, необходимо равенство сумм потраченных монет и сгенерированных плюс комиссия. Так как цифрами напрямую сеть не оперирует, равенство обеспечивается при помощи уравнения этих самых commitment-ов, что называется commitment to zero.

В оригинале CT для гарантии неотрицательности значений (так называемый range proof) используют Borromean Signatures (кольцевые подписи Борромео), которые занимали очень много места в блокчейне (порядка 6 килобайт на один выход). В связи с этим к минусам анонимных валют, использующих данную технологию, относили большой размер транзакции, однако сейчас решили отказаться от этих подписей в пользу более компактной технологии — Bulletproofs.

В самом блоке MW нет понятия транзакции, есть только выходы, потраченные и сгенерированные в нем. Нет транзакции — нет проблемы!

Чтобы предотвратить деанонимизацию участника перевода на этапе отправки транзакции в сеть используется протокол Dandelion, который использует цепочку proxy-нод сети произвольной длины, передающих транзакцию друг другу перед фактическим распространением ее по всем участникам, таким образом запутывая траекторию попадания транзакции в сеть.

Плюсы:

• Малый размер блокчейна
• Относительная простота

Минусы:

• Генерация и верификация доказательства медленнее, чем у ZK-SNARKs и ZK-STARKs
• Поддержку таких возможностей, как скрипты и мульти-подписи, сложно реализовать
• Не устойчива ко взлому с использованием квантовых компьютеров

Доказательства на полиномах


ZK-SNARKs


Замысловатое название этой технологии расшифровывается как «Zero-Knowledge Succinct Non-Interactive Argument of Knowledge», что можно перевести как «Сжатое неинтерактивное доказательство с нулевым разглашением». Она стала продолжением протокола zerocoin, который далее эволюционировал в zerocash и впервые был реализован в криптовалюте Zcash.

В общем случае zero-knowledge proof позволяет одной стороне доказать второй истинность некоторого математического утверждения, не раскрывая никаких сведений о нем. Относительно криптовалют такие методы используют для доказательства того, что, например, транзакция не производит монет больше, чем тратит, не раскрывая при этом сумм переводов.

ZK-SNARKs очень сложна для понимания, а для описания принципов ее работы потребуется не одна статья. На официальной странице Zcash, первой валюты, реализующей этот протокол, описанию его работы посвящено 7 статей. Поэтому в этой главе мы ограничимся лишь поверхностным описанием.

С помощью алгебраических полиномов ZK-SNARKs доказывает, что отправитель платежа владеет монетами, которые тратит, и что сумма потраченных монет не превосходит суммы сгенерированных.

Этот протокол создавался с целью уменьшения размера доказательства валидности утверждения и при этом быстрой его верификации. Так, согласно презентации Зуко Вилкокса (Zooko Wilcox), CEO Zcash, размер доказательства занимает всего 200 байт, а проверить его корректность можно за 10 миллисекунд. Причем в последней версии Zcash разработчикам удалось снизить и время генерации доказательства до примерно двух секунд.

Однако перед началом использования этой технологии требуется процедура сложной настройки доверенными лицами (trusted setup) «общественных параметров», которая называется «церемонией» (The Ceremony). Вся сложность заключается в том, чтобы в ходе установки этих параметров ни у одной из сторон не осталось приватных ключей от них, называемых «токсичными отходами», иначе она получит возможность генерировать новые монеты. О том, как происходит эта процедура, можно узнать из видео на YouTube.

Плюсы:

• Малый размер доказательства
• Быстрая верификация
• Относительно быстрая генерация доказательства

Минусы:

• Сложная процедура установки публичных параметров
• Токсичные отходы
• Относительная сложность технологии
• Не устойчива ко взлому с использованием квантовых компьютеров

ZK-STARKs


У авторов последних двух технологий хорошо получается играть с акронимами, и очередной акроним расшифровывается как «Прозрачное масштабируемое доказательство с нулевым разглашением» («Zero-Knowledge Scalable Transparent ARguments of Knowledge»). Этот метод был призван решить имеющиеся на тот момент недостатки ZK-SNARKs: необходимость в доверенной установке публичных параметров, наличие токсичных отходов, неустойчивость криптографии к взлому с помощью квантовых алгоритмов и недостаточно быструю генерацию доказательства. Однако с последним недостатком разработчики ZK-SNARK справились.

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

Сейчас ZK-STARK не имеют реализации в какой-либо из криптовалют, а существуют только в виде библиотеки libSTARK. Однако разработчики имеют на нее планы, далеко идущие за пределы блокчейнов (в своем White Paper авторы приводят пример с доказательством наличия ДНК в базе данных полиции). Для этой цели была создана StarkWare Industries, которая на конец 2018 года собрала 36 млн долларов инвестиций от крупнейших компаний отрасли.

О том, как устроены ZK-STARK, подробнее можно прочитать в постах Виталика Бутерина (часть 1, часть 2, часть 3).

Плюсы:

• Устойчивость ко взлому квантовыми компьютерами
• Относительно быстрая генерация доказательства
• Относительно быстрая проверка доказательства
• Отсутствие токсичных отходов

Минусы:

• Сложность технологии
• Большой размер доказательства

Заключение


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

Таким образом, полет научной мысли сделал CoinJoin устаревшим, а MimbleWimble — перспективным новичком с довольно свежими идеями. Monero неизменно остается непоколебимым гигантом на страже нашей конфиденциальности. А SNARKs и STARKs, хоть и имеют недостатки, могут стать лидерами области. Возможно, в ближайшие годы указанные нами пункты в графе «Минусы» каждой из технологий станут неактуальными.

Комментарии (12)


  1. NeoCode
    05.02.2019 15:23

    Как я завидую людям, которые понимают все это на хорошем математическом уровне и способны сами придумывать такие алгоритмы:)


    1. DrunkBear
      05.02.2019 17:06

      А я сочувствую.
      Ты даёшь людям сильную криптографию и защиту от отслеживаний — а они надувают биржевой пузырь и разводят лохов…


      1. evnuh
        05.02.2019 21:48

        И почему это вызывает сочувствие? Они, вроде как, не горюют же. Или вы счастливы вместе с ними?


      1. OneType
        06.02.2019 09:23

        Лохов и без криптографии разводят, в гораздо больших масштабах, так что криптография здесь не причем.


  1. NIKOSV
    06.02.2019 02:57

    Разве открытость блокчейна это не одно из главных преимуществ криптовалют? Практически на брошюрах всех криптовалют оно идет чуть ли не первым пунктом, что теперь все открыто и прозрачно, ни один депутат, чиновник или государство не украдет и не скроет от народа деньги, любой желающий сможет проверить происхождение тех или иных средств.

    Как в том анекдоте:
    — чего вы хотите?
    — чтобы в стране не было коррупции и чтобы кум все порешал


    1. Umrug
      06.02.2019 10:59

      > ни один депутат, чиновник или государство не украдет и не скроет от народа деньги

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

      > любой желающий сможет проверить происхождение тех или иных средств

      Любой желающий может убедиться что деньги ему на счет действительно переведены, окончательно и безповоротно (не считая атаки 51%). Источник денег с конкретной организацией или человеком сам блокчейн не связывает никак (опустим частные случаи где часть эмиссии поступает на счёт разработчиков).


  1. TheYellingChives
    06.02.2019 11:27

    «Что если я просто не хочу, чтобы кассир в супермаркете знал, сколько денег у меня на балансе и на что я их трачу?»

    Я прям в ступоре. Это что действительно такая доступная для всех информация? Я такого не наблюдал в терминалах.


    1. Sau
      06.02.2019 14:13

      Думаю, это для случая оплаты криптовалютой.


    1. milo
      06.02.2019 16:06

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


      1. aleks_raiden
        07.02.2019 22:08

        Для этого давно есть HD-кошельки, так что под каждую транзакцию новенький чистый адрес )


        1. Sau
          08.02.2019 11:08

          Да, а также можно найти предыдущий адрес. Несложно догадаться какая часть транзакции потрачена (наверняка меньшая). Конечно, можно утверждать будто адрес со сдачей не ваш, пока на нём пусто, и кошелёк не использует utxo с нескольких старых адресов одновременно для следующей транзакции.


  1. plus79501445397
    07.02.2019 08:55

    В первую очередь настораживает

    Сложность технологии

    Очевидно чем сложнее и уникальнее схема, тем меньше тех, кто разберется во всех тонкостях, и тем вероятнее наличие в ней опасных уязвимостей, как например было с zk-SNARK.
    Данный баг вроде как пофиксили, но кто поручится, что багов в этой схеме (и др. сложных) не осталось?