Анонимность — одна из базовых ценностей криптомира. Однако всегда ли мы правильно употребляем это слово? В рубрике Flashback сегодня вспоминаем основы теории и практики анонимности блокчейна. Спикер: Ник Байло, блокчейн-разработчик (ex-Satoshi.Fund).
Подлинная анонимность: три критерия
Что Сатоши Накамото подразумевал под анонимностью блокчейна и биткоина?
Одним из обязательных критериев криптомира, блокчейна и биткоина в частности, является анонимность. Анонимность — частный случай двух более глобальных понятий: приватность и конфиденциальность. В блокчейне и финансовом мире анонимность означает три базовые вещи:
1) невмешательство в данные;
2) возможность их изоляции от внешних действий;
3) право их не раскрывать.
В криптовалютах есть такое понятие, применимое к деньгам, как fungibility — способность к взаимозаменяемости. Анонимность в данном случае позволяет утверждать, что это право взаимозаменяемости обеспечено.
Действительно ли биткоин анонимен?
Допустим, у нас есть купюра в сто долларов. Мы не знаем, откуда она, каков был ее путь, за что ей платили, за какой товар (законный или нет) — купюра остается с тем же номиналом и значением.
В случае с биткоином все входы ссылаются на предыдущие выходы. Присутствуют компоненты связи и отслеживания, которые определяют псевдоанонимность. Связываемость в данном случае обеспечивается ссылками из входов на предыдущие выходы, отслеживаемость — точными суммами, которые один пользователь отправляет другому. С помощью этих данных возможна деанонимизация.
Одно из решений, позволяющих деанонимизировать адреса и цепочку всех транзакций — платформа Chainalysis. Приобретая пакет услуг, вы сможете выяснить, откуда пришел биткоин. Это нарушает fungibility. Взаимозаменяемость страдает, когда фирма не хочет принимать биткоин с темной историей и с историей вообще.
Анонимность может быть нарушена самим пользователем. Публичные адреса могут быть слинкованы в самом неожиданном месте.
Над вопросом анонимности на базе биткоина активно работают. Предпринимаются попытки достичь приватности высокого уровня. Отсутствие таких решений в самом протоколе привело к появлению надстроек.
Первые подобные предложения сделал в 2013 году кор-разработчик Грегори Максвелл. Ему принадлежит идея CoinJoin-транзакций, когда все входы и выходы группы пользователей собираются в одну транзакцию и принадлежность становится непонятной.
CoinJoin-подход в любом случае требует центрального оператора для смешивания. Существует эволюция этого метода под названием Coin Shuffle, где нет центрального оператора и пользователи сами смешивают транзакции.
Следующим шагом в этом направлении является метод Confidential Transactions, когда сумма скрывается (известна только отправителю и получателю). Достигается с помощью разных криптографических приемов.
Приведем пример: 8+2=10. Если каждое из этих слагаемых и результат умножить на одно и то же число, например на десять, получится 80+20=100. Равенство сохранится, а числа будут другими.
Таким образом происходит валидация либо инвалидация транзакции. Сумма входов, выходов и комиссии транзакции должна быть равна нулю. В таком случае нет допечатки монет и появления средств из воздуха.
Для совершения конфиденциальных или CoinJoin-транзакций в рамках сети биткоин необходима определенная инфраструктура. Офчейн-разработка не вшита в протокол биткоина и требует доработки, создания кошельков и написания софта. Это процесс довольно трудозатратный, но в перспективе реализуемый.
ZKProof: цели и виды
Что такое доказательство с нулевым разглашением (zero-knowledge proof)?
Есть некий криптографический секрет и мы должны криптографически доказать знание этого секрета, не разглашая его самого. Это и будет доказательство с нулевым разглашением. Оно делится на два типа — интерактивное и неинтерактивное.
Существует яркий пример, доступно объясняющий механику интерактивного доказательства. Человек, который не различает цвета, берет два шарика, разворачивается, меняет их местами. Потом поворачивается к человеку, различающему цвета, и спрашивает, изменилось ли положение шариков. Если ответ будет верным, то мы получаем подтверждение доказательства. Игра повторяется несколько раз и с большой долей вероятности мы сможем сказать, что шарики разных цветов, не зная точно, какого они цвета. Этот пример иллюстрирует интерактивное взаимодействие, когда устанавливается контакт между двумя пользователями — один доказывает, другой валидирует.
В случае неинтерактивного доказательства с нулевым разглашением, его еще называют публично верифицируемым, не нужно устанавливать контакты. Вместо этого заранее заготавливается необходимый пруф. Такой вид доказательства считается передним краем науки и находится в стадии разработки. Оно использует сгенерированные публичные ключи, которые создаются на основе приватных и вшиты в саму систему.
Какую роль играет неинтерактивный протокол с нулевым разглашением в приватности сети Zcash?
Обладание приватным ключом может скомпрометировать всю систему, поэтому у Zcash, криптовалюты, построенной на основе неинтерактивного доказательства, была целая церемония генерации приватных ключей. Шести людям дали задание купить компьютеры в определенном месте, удалить ненужный софт и следовать правилам генерации. Церемония, по замыслу организаторов, была направлена на то, чтобы ни один ключ не был скомпрометирован.
Zcash приватен не по умолчанию. Чтобы получить неотслеживаемость и неслинкованность, необходимо делать транзакции особого вида, используя скрытые адреса. Они стоят дороже и ресурсозатратнее стандартных транзакций, на их генерацию может уйти до минуты.
В работе Zcash есть два вызова:
1. Количество пользователей криптовалюты определено специфическим функционалом.
2. Возможное появление ошибок. К примеру — выпуск поддельных монет, не предназначенных для эмиссии.
Направления и перспективы
Можно ли считать монету Monero анонимной и чем она отличается от других?
Monero — это монета со своей инфраструктурой, в которую анонимность встроена по умолчанию. Один ее из разработчиков Рикардо Спаньи, публичная личность с адекватным видением, предупреждает о возможности ошибок или хакерских атак и не советует инвестировать в монету.
Monero включает в себя микс из решений. Это конфиденциальные транзакции и кольцевая подпись от группы пользователей. В случае Monero нельзя сказать точно, какой вход к какому выходу твой. Используется дополнительная группа выходов. Monero отличается от биткоина фактором сокрытия точного значения, и тем, что кольцевая подпись идет не от одного пользователя.
Эта монета объединила в себе все лучшее и недорогое для имплементации и тем самым получила продукт более защищенный, чем другие. Протокол Monero не идеален, в нем присутствуют такие вещи, как слинковка транзакций, над которой еще нужно работать.
Какие проекты решают проблему анонимности?
В список инфраструктурных проектов, которые имеют свой уровень конфиденциальности, кроме Monero, можно включить ZenCash. Они дают возможность отправлять анонимные сообщения, анонимно хранить файлы и доменные имена.
Создание инфраструктуры для анонимных монет начинается с фундаментальных вещей: разработки протокола и определения его применения. Затем уже он обрастает сервисами.
Если Zcash сконцентрирован на разработке протокола и криптографических победах, то ZenCash — реализация этого протокола, имплементация бизнес-кейсов в жизнь с помощью технологии.
Другим примером решения задач, связанных с анонимностью, выступает проект MimbleWimble — модифицированные конфиденциальные транзакции для сокрытия точной суммы и инвалидации. Протокол был создан анонимным пользователем с ником Tom Elvis Jedusor (отсылка к персонажу, в русскоязычном мире известному как Волан-де-Морт). Он опубликовал white-лист с описанием на базе биткоина и с учетом модификации, допускающей удаление скрипта. Скрипт — это язык транзакции в биткоине, который позволяет создавать инфраструктуру поверх блокчейна. MimbleWimble оптимизировал количество данных, хранящихся в этом блокчейне, и мигрировал в проект Green, который претендует как раз на анонимность.
Насколько актуальна на рынке разработка монет с повышенной анонимностью?*
Фокус на данном направлении определенно присутствует, но не самый первостепенный.
Разработчики Ethereum рассматривают в будущем* возможность имплементации протокола, на котором работает Zcash. Фундаментальные проекты мыслят в сторону внедрения анонимности, но только время может показать, что монету не сломали и криптографии можно доверять.
Людей, которые понимают и разбираются в технологиях повышенной анонимности, можно пересчитать по пальцам. Однако прослеживаются положительные тенденции, вовлекается все больше специалистов.
Разработчики Monero принимают вызовы, связанные с масштабируемостью, поскольку блокчейн очень тяжелый, имеет много неопознанных выходов и другие проблемы.
Биткоин также сталкивается с разного рода вызовами. Биткоин — это цифровое золото, это база, которая требует оптимальных, легких и проверенных решений, способных обеспечить полную конфиденциальность данных.
*Подкаст был записан в октябре 2018 года.