Биткоин мог похвастаться революционной защитой финансовой информации только на своей заре: например, в 2011−2013 годах оплату в биткоинах в целях анонимности принимала даркнет-площадка «Шелковый путь». Однако с тех пор биткоин скомпрометировал себя как неотслеживаемый способ расчетов. Более того, биткоин никогда не называл себя анонимным: его механизм «псевдо-анонимен». «Остальные могут видеть, что кто-то пересылает определенную сумму кому-то другому, но нет никакой информации, привязывающей транзакцию к определенному человеку», — гласит white paper биткоина. Публичный блокчейн позволяет отследить историю транзакций конкретного адреса, что может помочь в установлении личности. После того, как стало известно, что Агентство национальной безопасности (NSA) несколько лет отслеживало пользователей биткоина, Эмин Гюн Сирер, профессор Корнелльского университета, возглавляющий инициативную группу по изучению криптовалют IC3, сказал, что финансовая приватность «чрезвычайно важна» для биткоин-сообщества, и он ожидает, что после новостей из NSA «заинтересованные в конфиденциальности люди перейдут на приватные криптовалюты». Учитывая, что скандал с NSA разразился в марте, к сегодняшнему дню все желающие должны были успеть перевести свои активы в менее прозрачную крипту. DeCenter рассмотрел основных крипто-претендентов и их технологии повышения приватности.

Monero

Использующийся в Monero протокол CryptoNote был описан в октябре 2013 года Николасом ван Заберхагеном. Его личность до сих пор не раскрыта, и, вероятнее всего, работа была написана под псевдонимом. Первым этот протокол применила криптовалюта Bytecoin еще в 2012, но из-за недостаточной прозрачности и подозрений в мошенничестве через два года в сети Bytecoin произошел форк, результатом которого стало появление Monero (в переводе с эсперанто — «монета»). Команда до сих пор скрывается под псевдонимами: othe, smooth, binaryFate, luigi1111, NoodleDoodle, за исключением двух членов — Риккардо Спаньи и Франсиско Кабаньяса.

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

Что: сокрытие суммы перевода

Как: через протокол кольцевых конфиденциальных транзакций (RING CT)

Этот протокол стал обязательным для Monero в сентябре 2017 года. С этого момента все добываемые монеты сначала находятся в виде просматриваемых выходов (то есть их количество можно увидеть). Однако когда намайненные монеты пересылаются в ходе первой транзакции, сумма ее выходов оказывается «замаскирована». В результате транзакции не надо дробить по принципу миксинга.

Что: скрывает отправителя

Как: через кольцевые подписи

Технология кольцевых подписей была описана Роном Райвестом, Ади Шамиром и Яэлем Тауманом в 2001 году. Это вид цифровой подписи, при котором группа потенциальных подписантов образует собственную подпись для авторизации транзакций. Аналогия из мира традиционных финансов — совместный банковский счет, чеки по которому может подписывать любой из его владельцев. Однако в случае кольцевых подписей реальный итоговый подписант в каждом конкретном случае остается неизвестным.

Что: скрывает получателя

Как: через stealth-адреса

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

В стадии разработки находится еще один механизм — Kovri — который позволит скрывать IP-адреса отправителей. Он будет работать через общий с другими криптовалютами API, благодаря чему третьи стороны вообще не смогут увидеть, что вы используете именно Monero.

Monero прошел стресс-тест в прошлом году, доказав свою приватность: тогда правоохранительные органы не смогли выяснить, сколько монет Monero было у владельца даркнет-площадки AlphaBay (при этом вычислить его баланс в Zcash смогли).

Один из побочных эффектов высокой приватности Monero — большой размер транзакций, в 50 раз превышающий размер биткоин-транзакций.

Zcash

Криптовалюта Zcash была запущена Зуко Уилкоксом в октябре 2016 года. Первоначально известная как Zerocoin, Zcash стала форком биткоина. При этом приватность Zcash — опциональная функция: как и ее «родитель», платформа также может работать с открытыми транзакциями, записываемыми на публичный блокчейн.

В основе Zcash лежит протокол zero-knowledge proof (доказательство с нулевым разглашением), а точнее его версия — zk-SNARKs, разработанная в 2014 криптографами из Университета Джонса Хопкинса (Кристина Гарман, Мэттью Грин, Ян Мирс), Массачуссетского технологического (Алессандро Кьеза, Мадарс Вирца), Израильского технологического института Технион (Илай Бен-Сасон) и Университета Тель-Авива (Эран Тромер).

При использовании доказательств с нулевым разглашением система может проверить сам факт того, что «проверяемый» действительно владеет тем, чем заявляет (в данном случае — монетами и адресами), при этом не получая никакой информации о характере объекта «in question» (в данном случае — не зная точного адреса и количества монет).

Как работают приватные транзакции в Zcash

Приватные транзакции в Zcash — это транзакции между сокрытыми адресами (z-addrs). Чтобы понять этот механизм, нужно для начала вспомнить принцип работы биткоин-транзакций, а именно один из главных ее элементов — список UTXO, то есть неизрасходованных выходов транзакций. Предположим, что каждый UTXO содержит 1 BTC, а каждый адрес содержит только один UTXO. То есть нода содержит список таких UTXO, каждый из которых можно описать с помощью адреса его владельца, например: UTXO1=(PK1), UTXO2=(PK2), UTXO3=(PK3), где PK — public key (публичный ключ/адрес). Предположим, что PK1 — это адрес Алисы, и она хочет отправить свой UTXO, состоящий из 1 BTC, Бобу на адрес PK4. Она формирует соответствующую транзакцию и подписывает ее своим приватным ключом (это доказывает ноде, что Алиса действительно владеет средствами, хранящимися на этом адресе). Когда транзакция будет отправлена, нода обновит состояние: UTXO4=(PK4), UTXO2=(PK2), UTXO3=(PK3).

Теперь представим, что каждому UTXO также соответствует уникальный идентификатор «r» (это будет важно в дальнейшем при переходе к приватным транзакциям). В таком случае хранилище ноды уже будет выглядеть так: UTXO1=(PK1,r1), UTXO2=(PK1,r2), UTXO3=(PK2,r3).

Для приватных транзакций необходимо, чтобы:

 Каждая нода хранила только зашифрованные данные, то есть не сами UTXO, а их хэши (H): H1="HASH"(UTXO1), H2="HASH"(UTXO2), H3="HASH"(UTXO3);

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

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

Отправление приватной транзакции по шагам:

Предположим, что Алиса владеет UTXO1 и хочет отправить хранящийся там 1 BTC Бобу на адрес PK4. Для этого она:

 Рандомно выбирает новый идентификатор r4, после чего соответствующий неизрасходованный выход будет определяться в системе как UTXO4=(PK4,r4);

 Приватно отправляет UTXO4 Бобу;

 Отправляет обнуляющую изначальный UTXO1 запись (nullifier, или nf) на все ноды: nf2="HASH"(r1);

 Отправляет на все ноды хэш нового выхода: H4= HASH(Note4).

То есть она обнуляет свой UTXO и создает новую запись, которая контролируется Бобом.

Когда нода получает nf2 и H4, она проверяет, потрачен ли выход, соответствующий nf2. Для этого она смотрит, существует ли для nf2 обнуляющая запись. Если нет, нода добавляет nf2 в список записей для обнуления, а H4 — в список хэшей выходов. Таким образом она подтверждает транзакцию между Алисой и Бобом.

При чем тут доказательства с нулевым разглашением?

Мы проверили, что UTXO1 не был потрачен ранее, но не проверили, что он на самом деле принадлежит Алисе. Мы даже не проверили, существует ли реально такая запись в сети, то есть присутствовала ли она в списке хэшированных UTXO данной ноды. Алиса могла бы подтвердить ее существование, просто опубликовав сам UTXO, а не его хэш, однако это скомпрометировало бы приватность.

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

 хэш выхода UTXO1=(PK1, r1) существует в списке хэшей UTXO;

 sk1 — приватный ключ, соответствующий PK1 (таким образом, тот, кто им владеет, кем бы он ни был, также владеет UTXO1);

 хэшу r1 соответствует nf2, (и таким образом, если nf2 — обнуляющая запись для UTXO1 — еще не содержится в списке обнуления, значит соответствующий выход еще не был потрачен).

При этом доказательство не разгласит конкретных значений PK1, sk1 и r1.

Это упрощенный сценарий приватной транзакции: во-первых, хэшированные UTXO хранятся не просто списком, а в виде дерева Меркла; во-вторых, данный сценарий описывает транзакцию, отправляемую через приватный канал, но его использование для сохранения приватности не обязательно. К ограничениям этой криптовалюты относятся серьезные требования к объему памяти: чтобы пользоваться приватными транзакциями в Zcash, нужно иметь как минимум 4 ГБ оперативной памяти. Более подробно техническая сторона описана в спецификациях протокола на GitHub.

Начальные параметры для подтверждения доказательств задаются узким кругом участников в ходе секретной церемонии «Powers of Tau». В конце церемонии участники уничтожают компьютеры, на которых генерировались данные, причем способы генерации бывают самыми неожиданными. Так, в ходе одной из церемоний для генерации случайных чисел использовались ядерные отходы Чернобыльской АЭС.

В марте бывший агент ЦРУ Эдвард Сноуден сказал, что Zcash является самой интересной для него криптовалютой на данный момент, поскольку «ее характеристики приватности действительно уникальны». Он также отметил, что сейчас появляется все больше и больше проектов, которые пытаются достичь того же уровня, и это «позитивный тренд».

Dash

Dash была запущена в январе 2014 года Эваном Даффилдом под первоначальным названием Xcoin. Впоследствии был осуществлен ребрендинг, и монета стала называться… нет, не Dash, а Darkcoin. И только в начале 2015 разработчики пришли к названию «цифровые наличные», или «digital cash» — Dash.

Dash представляет собой форк лайткоина, что означает, что в нем «течет кровь» биткоина. PrivateSend — технология приватности, используемая в Dash — также уходит корнями в биткоин-разработку. PrivateSend, наряду с SharedCoins, Dark Wallet, CoinShuffle и JoinMarket, является реализацией миксинговой технологии CoinJoin, предложенной в 2013 году разработчиком Bitcoin Core Грегори Максвеллом для анонимизации биткоин-транзакций.

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

Фичу PrivateSend необходимо активировать в клиенте Dash Core или других Dash-кошельках. Ее минус в том, что она требует определенных пользовательских усилий: совместную транзакцию необходимо сформировать, тогда как для миксинга тоже необходимо дополнительное время и небольшая комиссия.

Миксером, который позволяет смешивать и дробить транзакции на мелкие части, в сети Dash выступает мастернода — нода, доля которой составляет не менее 1000 Dash. То есть пользователи подключаются к рандомной мастерноде, и уже она собирает монеты и сливает их в единую транзакцию. Здесь всплывает одна из уязвимостей механизма — пользователь обязан доверять мастерноде. По аналогии с VPN-серверами, она знает, откуда пришли монеты и куда они отправились. Она как фокусник, двигающий стаканы, под одним из которых лежит монетка: мастернода точно знает, где чьи деньги. Поэтому, если мастерноды скомпрометированы, они будут передавать вашу финансовую информацию «по месту требования».

Недоверчивое отношение к мастернодам имеет свою историю в сети Dash. Дело в том, что на начальном этапе развития криптовалюты произошел так называемый инстамайн (англ. instamine, или instant mining). По словам основателя Dash, он случился незапланировано. Два миллиона монет (при совокупной эмиссии в 22 миллиона Dash и текущей эмиссии в 8.3 миллиона Dash) были добыты в течение нескольких дней с момента запуска сети. Инстамайн может происходить из-за несовершенств в майнинговом алгоритме, который не успевает адекватно подстраивать уровень сложности в зависимости от спроса. Однако проект не стал менять правила протокола или перезапускать сеть. Учитывая, что четверть от находящихся сегодня в обращении монет была добыта всего несколькими майнерами в первую неделю существования сети, многие мастерноды сегодня контролируются теми несколькими «избранными» участниками. И потому, хотя многократное повторение миксинга монет теоретически должно пропорционально повышать приватность, по итогу монеты могут даже не выйти из-под контроля одного владельца мастернод.

Судхир Хатвани (Sudhir Khatwani), главный редактор Coinsutra, также отмечает, что используемый в Dash механизм приватности «позволяет анализировать метаданные для вычисления настоящего отправителя и получателя». Также серьезные вопросы вызвало объявленное в октябре 2016 партнерство между Dash и compliance-платформой Coinfirm, которое делает Dash «чистым» в глазах регулятора через процедуры KYC/AML, но весьма уязвимым для пользователей, рассчитывающих на приватность. Однако на данный момент, наряду с «мгновенными переводами» и «безопасностью», на сайте Dash по-прежнему фигурирует характеристика «приватности», которая обещает защиту финансовой информации, истории активности и балансов через PrivateSend.