Zerocoin

Zerocoin — криптографический протокол, разрывающий публичную связь между выпуском монеты и её последующим погашением. Ian Miers, Christina Garman, Matthew Green и Aviel D. Rubin из Университета Джонса Хопкинса представили его в 2013 как расширение Bitcoin. Основные средства — криптографические обязательства, аккумулятор и доказательства с нулевым разглашением.[1]
Название относится к протоколу и временным монетам в нём. Его следует отличать от Zcoin, позднее переименованной в Firo, и от Zerocash, более поздней исследовательской системы, связанной с Zcash. Несколько криптовалют реализовали схемы на основе Zerocoin; их выпуски, параметры и меры безопасности различались.[2][3][4][5]
Предпосылки и назначение
Bitcoin записывает транзакции в публичный реестр. Адреса — псевдонимы, а не гарантия анонимности: связи транзакций и внешние сведения могут связать активность с человеком. Смена адреса не устраняет информацию графа транзакций.[1]
Сервис смешивания с хранением средств скрывает граф, принимая и возвращая средства. Оператор может узнать связи или не вернуть депозит. Zerocoin предлагал контролировать погашение правилами консенсуса и доказательствами, без банка или оператора смешивания как эмитента приватных монет. Это устраняет одно доверие хранителю, но сохраняет криптографические и установочные допущения.[1][6]
Как работают выпуск и расходование
Выпуск и обязательство монеты
Для выпуска пользователь генерирует секретный серийный номер S и случайное r, затем создаёт обязательство C. В статье применено обязательство типа Педерсена: C = g^S h^r mod p. Публичное C скрывает S; знание r позволяет владельцу связать их позднее. Обязательство — не шифрование: расходование доказывает свойство значения, а не расшифровывает C для всех.[1][6]
Транзакция выпуска фиксирует стоимость в базовой валюте и комиссии. Исходный прототип использовал фиксированный номинал. Предложенная интеграция Bitcoin помещала стоимость вне обычного расходования, чтобы погашать её лишь по правилам Zerocoin; секретные данные пользователь хранил в кошельке.[6]
Аккумулятор и свидетельство принадлежности
Допустимые публичные обязательства объединяются в криптографический аккумулятор — компактное представление множества. Свидетельство принадлежности позволяет доказать включение конкретного обязательства. Расходующий подтверждает наличие свидетельства, не раскрывая обязательство. Компактность избавляет от списка всех выпусков в каждом доказательстве.[1][6]
Расходование и защита от двойного расходования
Расход публикует S и доказательство с нулевым разглашением, связывающее его с допустимой монетой из аккумулятора, раскрытие которой известно расходующему. Узлы проверяют доказательство и сверяют S с принятыми номерами. Повторный номер отклоняется как двойное расходование. Получатель и номинал видны; скрывается то, какой выпуск обеспечил стоимость.[6][3][5]
Несколько пользователей могут выпустить монеты одного номинала. Позднее расходование доказывает право погашения одной монеты, не называя исходное обязательство. Публичный серийный номер позволяет отклонить повторную заявку без раскрытия первоначального выпуска. Это описание протокола, а не инструкция отправлять такие транзакции в Bitcoin.[6][5]
Авторы создали прототип модифицированного bitcoind. Полное предложение требовало новых правил проверки транзакций, поэтому внедрение в существующую сеть означало изменение консенсуса и криптографическую реализацию. libzerocoin давала базовые процедуры; приложениям всё равно требовалось реализовать форматы транзакций, проверку выпусков, учёт потраченных номеров и погашение.[1][7][6]
Гарантии и ограничения приватности
Фиксированные номиналы делают монеты сопоставимыми, но ограничивают платежи. Предложение допускало разные номиналы в отдельных экземплярах протокола с общими публичными параметрами. Платёж несколькими монетами требует отдельных расходов и доказательств. Погашение могло создать новый выпуск, перемещая стоимость между экземплярами.[1][8]
Накопленное множество не гарантирует постоянного числа вероятных источников. Если все прежние выпуски погашены, новый может быть единственным источником следующего расхода. На вывод наблюдателя влияют число выпусков и расходов, номиналы и время. Полезная анонимность зависит также от действий других пользователей и корректности доказательств.[1][8]
Приватность реестра не скрывает сетевое происхождение транзакции. Статья отдельно рассматривает сетевую анонимность; взлом кошелька может раскрыть данные связи монет с выпусками. Сокрытие этой связи не скрывает все публичные адреса и суммы. Исходная конструкция не поддерживает полностью приватные переводы в защищённом реестре.[1][6][3]
Параметры RSA и доверенная настройка
Аккумулятор использует модуль RSA N с секретными простыми множителями. Их обладатель может подорвать защиту от поддельных доказательств и, возможно, создавать фальшивые монеты. Безопасная генерация параметров и уничтожение множителей — отдельные вопросы по отношению к отказу от кастодиального миксера.[1][8]
Исходная статья рассматривает доверенную настройку с уничтожением множителей и предложенную альтернативу без трапдора RSA UFOs. Реализации нужно оценивать по фактическому способу генерации параметров. Отсутствие доверенного эмитента для каждой транзакции не доказывает бездоверительную настройку всех реализаций.[1][8]
Издержки производительности и последующие исследования
Zerocoin усиливает разделение выпусков и расходов ценой крупных доказательств и вычислений. Rational Zero описывает исходную схему с 80 битами и доказательством около 25 KB, проверка которого занимала 0.5 секунд при этих параметрах. Это исторические измерения, не показатели современного Bitcoin или всех реализаций Zerocoin.[8]
В работе 2013 года авторы также проверяли блоки в модифицированном клиенте Bitcoin: 200, 400 и 800 транзакций при разной доле выпусков и расходов. Блок из 800 транзакций Zerocoin проверялся менее пяти минут в их среде. Результат зависел от оборудования, параметров и нагрузки и не задаёт стоимость современных блоков.[1]
Работа Rational Zero 2014 года исследовала долгосрочную анонимность, делимость и меньшие доказательства. Одна оптимизация снижала параметры надёжности, предполагая, что рациональный фальсификатор не потратит на атаку больше извлекаемой стоимости. Это конкретная модель угроз, ограниченная для иных мотивов; общей гарантии безопасности при сниженных параметрах она не давала.[8]
Исторические реализации и предложения
ZeroVert
В объявлении ZeroVert за ноябрь 2014 описана криптовалюта на основе протокола Zerocoin и дана ссылка на кошелёк. Позднее исследователи назвали ZeroVert заброшенным предшественником Zcoin, поэтому безоговорочно называть Zcoin первой реализацией неверно. Исторический выпуск не доказывает нынешнюю активность сети. Объявление указывало совмещённый майнинг Scrypt-N с Vertcoin и плановый объём 8.4 млн ZER. Это спецификации разработчика, не независимо проверенные современные данные.[9][5]
Moneta, Zcoin и Firo
Moneta — прежнее имя проекта, ставшего Zcoin. Выпуск декабря 2015 относился к testnet; ретроспектива говорит, что имя сменили до запуска реальной сети. Firo датирует запуск Zcoin числом 2016-09-28. Poramin Insom был основателем. Testnet и mainnet — разные этапы.[10][11][12][13]
Ретроспектива проекта 2019 говорит, что Zerocoin использовался с сентября 2016 по апрель 2019. Sigma без доверенной настройки заработала 2019-07-30. В октябре 2020 Zcoin объявил имя Firo на той же цепи. Позже появились иные протоколы; Lelantus Spark заработал в сети Firo 2024-01-18. Это история данного проекта, а не всеобщий переход реализаций Zerocoin.[14][15][2][16]
PIVX и zPIV
PIVX выпустил кошелёк 3.0.0 с Zerocoin zPIV 2017-10-16, назвав его первым развертыванием протокола в сети proof-of-stake. Позднее FAQ сообщает, что выпуск zPIV отключили 2019-03-07. Конвертация существующих zPIV в обычные PIV была отдельным вопросом; обновление ноября 2020 описало публичные расходы для конвертации и окончание поддержки в версии 5.0.[17][18][19]
Последующая SHIELD в PIVX использовала другую технологию и, согласно отчёту, заработала 2021-01-30. Последовательность включала запуск, отключение новых выпусков, период конвертации и замену, а не одну дату исчезновения всей функции zPIV.[20][19]
SmartCash, Zoin, Hexxcoin и Veil
Раскрытие FAU за апрель 2018 назвало Zcoin, PIVX, SmartCash, Zoin и Hexxcoin проектами Zerocoin и сообщило, что SmartCash отключил функцию. Veil позднее описал свою реализацию libzerocoin и экстренный ответ 2019. Это подтверждает историческое внедрение, но не нынешнюю доступность у всех.[5][21]
Anoncoin и связанные системы с нулевым разглашением
В репозитории Anoncoin есть явно помеченный старым и неотредактированным обзор: в нём Zerocoin назван разрабатываемым. Это план, не доказательство выпуска работающей реализации. Старое утверждение в настоящем времени требует исторической оговорки.[22]
CredaCash относится к истории систем приватности с нулевым разглашением, но не следует считать его реализацией аккумулятора Zerocoin. Репозиторий описывает отдельную систему транзакций для сокрытия входов, выходов и сумм. Общие методы не делают системы реализациями одного протокола. Старые прогнозы запуска и производительности требуют датированных источников.[23][3]
Выявленные проблемы безопасности и инциденты
В феврале 2017 в Zcoin произошла инфляция из-за ошибки реализации. Академическое исследование описывает ошибочный оператор C++ и создание дополнительных монет. Это сбой проверки ПО, отличный от последующих криптографических недостатков Zerocoin. Оценки потерь различаются, поэтому механизм подтверждён лучше одной безоговорочной суммы.[24]
В апреле 2018 исследователи FAU раскрыли атаку отказа в расходовании: при указанных условиях злоумышленник мог сделать монету честного пользователя непригодной для расходования. Отдельно описаны ошибки кода для несанкционированного создания или кражи монет. Отказ, инфляция и кража — разные последствия и требуют разных мер.[5]
Veil отделяет мартовский 2019 эксплойт реализации с обёрнутыми серийными номерами от иной уязвимости, выявленной после атаки, обнаруженной Zcoin в апреле. Апрельская ошибка допускала поддельные расходы и инфляцию. Временная мера Veil пожертвовала анонимностью выпуска, чтобы закрыть её, но, по отчёту, не раскрыла прошлые выпуски задним числом. Другие проекты применяли иные меры отключения, конвертации или замены.[21][14]
Исходный репозиторий libzerocoin теперь называет код заброшенным, неподдерживаемым и содержащим известные эксплойты. Это историческое свидетельство, не современный производственный эталон. Безопасность форка нельзя вывести из статьи, названия или исправления похожей ошибки другим проектом.[7][24]
Zerocoin, Zerocash и Zcash
Статья Zerocash 2014 представила отдельную систему приватных платежей с компактными доказательствами с нулевым разглашением. Приватность охватила получателя и сумму; стали возможны внутренние приватные переводы. Показатели относятся к этой конструкции, не к исходному Zerocoin. Zcash возник из этой линии исследований, но не является другим именем Zcoin или Zerocoin.[3][4]
Исследования и программные ресурсы
Статьи Zerocoin и Rational Zero объясняют конструкцию и компромиссы; Zerocash описывает отдельную последующую схему. Архив libzerocoin и заметки интеграции показывают возможности библиотеки и задачи приложения. Исторические объявления датируют запуски, поздние раскрытия уточняют прежние заявления.[1][8][3][7][6]
Источники
- ↑ 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 Miers, Garman, Green and Rubin, Zerocoin: Anonymous Distributed E-Cash from Bitcoin (2013)
- ↑ 2,0 2,1 Firo, Zcoin is becoming Firo, 2020-10-27
- ↑ 3,0 3,1 3,2 3,3 3,4 3,5 Ben-Sasson et al., Zerocash: Decentralized Anonymous Payments from Bitcoin (2014)
- ↑ 4,0 4,1 Zcash documentation, Project History
- ↑ 5,0 5,1 5,2 5,3 5,4 5,5 FAU researchers, A Cryptographic Flaw in Zerocoin (and Two Critical Coding Issues), 2018-04-12
- ↑ 6,0 6,1 6,2 6,3 6,4 6,5 6,6 6,7 6,8 Zerocoin authors, Integrating with Bitcoin clients
- ↑ 7,0 7,1 7,2 Zerocoin authors, archived libzerocoin repository and README
- ↑ 8,0 8,1 8,2 8,3 8,4 8,5 8,6 Garman et al., Rational Zero: Economic Security for Zerocoin with Everlasting Anonymity (2014)
- ↑ ZeroVert developer announcement, 2014
- ↑ Firo project, historical account of ZeroVert, Moneta and Zcoin
- ↑ Firo, sixth-anniversary retrospective, 2022-09-28
- ↑ Contemporaneous interview with Moneta founders, December 2015
- ↑ Firo project, founders and team
- ↑ 14,0 14,1 Firo, Zcoin: 2019 in Review, 2020-01-21
- ↑ Firo, Sigma is Live on Zcoin, 2019-07-30
- ↑ Firo, Lelantus Spark is live on Firo, 2024-01-18
- ↑ PIVX, zPIV launch announcement, 2017-10-16
- ↑ PIVX, FAQ on Zerocoin and PIVX, 2019
- ↑ 19,0 19,1 PIVX, development update, November 2020
- ↑ PIVX, development update Q1 2021
- ↑ 21,0 21,1 Veil, The libzerocoin exploit, security measure, and the future, 2019-05-15
- ↑ Anoncoin project repository, historical unedited overview
- ↑ CredaCash project source repository and protocol overview
- ↑ 24,0 24,1 Böhme et al., Responsible Vulnerability Disclosure in Cryptocurrencies